<?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>63339</bug_id>
          
          <creation_ts>2011-06-24 12:09:07 -0700</creation_ts>
          <short_desc>JSON errors should be informative</short_desc>
          <delta_ts>2011-07-26 10:54:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>65144</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Juan C. Montemayor">j.mont</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>j.mont</cc>
    
    <cc>oliver</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>427035</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-06-24 12:09:07 -0700</bug_when>
    <thetext>Currently the JSON parser just gives a generic &quot;invalid json&quot; style error for all errors, which isn&apos;t exactly helpful for debugging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440813</commentid>
    <comment_count>1</comment_count>
      <attachid>101695</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-07-21 20:14:18 -0700</bug_when>
    <thetext>Created attachment 101695
Work in progress

Some error messages don&apos;t make sense right now, but they will be improved on soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440994</commentid>
    <comment_count>2</comment_count>
      <attachid>101695</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-22 10:35:37 -0700</bug_when>
    <thetext>Comment on attachment 101695
Work in progress

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

r-, due to some code style issues and error message clarity.   Would be good to also store the value of m_ptr for error feedback, then we can give line and column information.

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:240
&gt; +                m_lexErrorMessage = &quot;JSON Lexer error: Single quotes are not allowed in JSON&quot;;

Call out the specific character as well just to make it clear

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:281
&gt; +                m_lexErrorMessage = &quot;JSON Lexer error: Unexpected end of string&quot;;

Unterminated string

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:325
&gt; +                            m_lexErrorMessage = &quot;JSON Lexer error: Escaped unicode is not a ASCII hexadecimal digit&quot;;

I would say &quot;\\u...&quot; is not a valid unicode escape

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:436
&gt; +            m_lexErrorMessage = &quot;JSON Lexer error: Exponent symbols should be followed by &apos;+&apos; or &apos;-&apos; and least one number&quot;;

+/- are optional

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:608
&gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse value expression&quot;;

At this point you either have a bogus token -- so the lexer should have an error message, or you should be able to say what token you got and why it is wrong.

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:638
&gt; +                m_parseErrorMessage = &quot;JSON Parse error: Expected end of JSON but file continued&quot;;

Unexpected content at end of JSON literal.

&gt; Source/JavaScriptCore/runtime/LiteralParser.h:97
&gt; +            UString m_lexErrorMessage;

make it private

&gt; Source/JavaScriptCore/runtime/LiteralParser.h:112
&gt; +                : m_lexErrorMessage()

UString has a default constructor so this isn&apos;t necessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440997</commentid>
    <comment_count>3</comment_count>
      <attachid>101695</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-22 10:39:20 -0700</bug_when>
    <thetext>Comment on attachment 101695
Work in progress

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

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:541
&gt; +                    m_parseErrorMessage = &quot;JSON Parse error: Expected string in object expression&quot;;

Property name must be a string literal

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:626
&gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse name in expression&quot;;

name?  JSON statement must begin with a [, number, string, or (

That said no one will ever see this error message as you only hit this path when we&apos;re trying speculative parsing, not with true JSON.

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:633
&gt; +                if (m_lexer.currentToken().type != TokRParen) {
&gt; +                    m_parseErrorMessage = &quot;JSON Parse error: Expected right parenthesis after name in expression&quot;;

name again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441002</commentid>
    <comment_count>4</comment_count>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-07-22 10:45:47 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 101695 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=101695&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:541
&gt; &gt; +                    m_parseErrorMessage = &quot;JSON Parse error: Expected string in object expression&quot;;
&gt; 
&gt; Property name must be a string literal
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:626
&gt; &gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse name in expression&quot;;
&gt; 
&gt; name?  JSON statement must begin with a [, number, string, or (
&gt; 
&gt; That said no one will ever see this error message as you only hit this path when we&apos;re trying speculative parsing, not with true JSON.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:633
&gt; &gt; +                if (m_lexer.currentToken().type != TokRParen) {
&gt; &gt; +                    m_parseErrorMessage = &quot;JSON Parse error: Expected right parenthesis after name in expression&quot;;
&gt; 
&gt; name again?

I&apos;ll fix these changes. I wrote down name since json.org said that &quot;an object is an unordered set of name/value pairs&quot; but I like property name much better!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441269</commentid>
    <comment_count>5</comment_count>
      <attachid>101791</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-07-22 16:45:15 -0700</bug_when>
    <thetext>Created attachment 101791
Proposed patch

Updated code with Oliver&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441281</commentid>
    <comment_count>6</comment_count>
      <attachid>101791</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-22 16:55:56 -0700</bug_when>
    <thetext>Comment on attachment 101791
Proposed patch

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

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:339
&gt; +                    m_lexErrorMessage = &quot;JSON Lexer error: Unable to read string&quot;;

Invalid escape character %c

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:346
&gt; +        m_lexErrorMessage = &quot;JSON Lexer error: Unterminated string&quot;;

No lexer, only parse errors.

&quot;JSON Parse error: &quot;  is repeated everywhere, i think you should just drop that prefix, and add it at the end when you&apos;re making the error message.

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:436
&gt; +            m_lexErrorMessage = &quot;JSON Lexer error: Exponent symbols should be followed by an optional &apos;+&apos; or &apos;-&apos; and then by at least one number&quot;;

Should just be JSON Parse error -- the lexer vs. parser difference isn&apos;t really relevant to develoeprs

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:634
&gt; +                    case TokRBracket:
&gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse right bracket&quot;;
&gt; +                        return JSValue();
&gt; +                    case TokRBrace:
&gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse right brace&quot;;
&gt; +                        return JSValue();
&gt; +                    case TokIdentifier:
&gt; +                        m_parseErrorMessage = String::format(&quot;JSON Parse error: Could not parse \&quot;%s\&quot;&quot;, UString(m_lexer.currentToken().stringToken).ascii().data()).impl();
&gt; +                        return JSValue();
&gt; +                    case TokColon:
&gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse colon&quot;;
&gt; +                        return JSValue();
&gt; +                    case TokLParen:
&gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse left parenthesis&quot;;
&gt; +                        return JSValue();
&gt; +                    case TokRParen:
&gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse right parenthesis&quot;;
&gt; +                        return JSValue();
&gt; +                    case TokComma:
&gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse comma&quot;;
&gt; +                        return JSValue();
&gt; +                    case TokDot:
&gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse dot&quot;;
&gt; +                        return JSValue();
&gt; +                    case TokAssign:
&gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse assignment&quot;;
&gt; +                        return JSValue();
&gt; +                    case TokSemi:
&gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse semicolon&quot;;
&gt; +                        return JSValue();

These error messages are icky, it should be something along the lines of &quot;Unexpected token &lt;blah&gt;&quot;

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:635
&gt; +                    case TokEnd:

This should be unexpected EOF or some such.

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:657
&gt; +                        m_parseErrorMessage = &quot;JSON statement must begin with a [, number, string, or (&quot;;

I&apos;d rather go with unexpected token &lt;blah&gt;

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:664
&gt; +                    m_parseErrorMessage = &quot;JSON Parse error: Expected right parenthesis after property name in expression&quot;;

This error is bogus.  It&apos;s testing to ensure that you have balanced the parenthesis.  However you can&apos;t actually test for it as this path is only taken when preparsing content in the hope it&apos;s json.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441291</commentid>
    <comment_count>7</comment_count>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-07-22 17:15:43 -0700</bug_when>
    <thetext>
&gt; &gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:634
&gt; &gt; +                    case TokRBracket:
&gt; &gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse right bracket&quot;;
&gt; &gt; +                        return JSValue();
&gt; &gt; +                    case TokRBrace:
&gt; &gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse right brace&quot;;
&gt; &gt; +                        return JSValue();
&gt; &gt; +                    case TokIdentifier:
&gt; &gt; +                        m_parseErrorMessage = String::format(&quot;JSON Parse error: Could not parse \&quot;%s\&quot;&quot;, UString(m_lexer.currentToken().stringToken).ascii().data()).impl();
&gt; &gt; +                        return JSValue();
&gt; &gt; +                    case TokColon:
&gt; &gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse colon&quot;;
&gt; &gt; +                        return JSValue();
&gt; &gt; +                    case TokLParen:
&gt; &gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse left parenthesis&quot;;
&gt; &gt; +                        return JSValue();
&gt; &gt; +                    case TokRParen:
&gt; &gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse right parenthesis&quot;;
&gt; &gt; +                        return JSValue();
&gt; &gt; +                    case TokComma:
&gt; &gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse comma&quot;;
&gt; &gt; +                        return JSValue();
&gt; &gt; +                    case TokDot:
&gt; &gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse dot&quot;;
&gt; &gt; +                        return JSValue();
&gt; &gt; +                    case TokAssign:
&gt; &gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse assignment&quot;;
&gt; &gt; +                        return JSValue();
&gt; &gt; +                    case TokSemi:
&gt; &gt; +                        m_parseErrorMessage = &quot;JSON Parse error: Could not parse semicolon&quot;;
&gt; &gt; +                        return JSValue();
&gt; 
&gt; These error messages are icky, it should be something along the lines of &quot;Unexpected token &lt;blah&gt;&quot;
&gt; 
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:657
&gt; &gt; +                        m_parseErrorMessage = &quot;JSON statement must begin with a [, number, string, or (&quot;;
&gt; 
&gt; I&apos;d rather go with unexpected token &lt;blah&gt;

the problem with doing this is that doing something like:

m_parseErrorMessage = String::format(&quot;Unexpected token \&apos;%s\&apos;&quot;, UString(m_lexer.currentToken().stringToken).ascii().data()).impl();

causes some regressiosn, since m_lexer.currentToken().stringToken may be null. Do you want me to write a special case for that? or write a const error message?

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:664
&gt; &gt; +                    m_parseErrorMessage = &quot;JSON Parse error: Expected right parenthesis after property name in expression&quot;;
&gt; 
&gt; This error is bogus.  It&apos;s testing to ensure that you have balanced the parenthesis.  However you can&apos;t actually test for it as this path is only taken when preparsing content in the hope it&apos;s json.

So I should just leave this one out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441296</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-22 17:21:38 -0700</bug_when>
    <thetext>
&gt; m_parseErrorMessage = String::format(&quot;Unexpected token \&apos;%s\&apos;&quot;, UString(m_lexer.currentToken().stringToken).ascii().data()).impl();
&gt; 
&gt; causes some regressiosn, since m_lexer.currentToken().stringToken may be null. Do you want me to write a special case for that? or write a const error message?

You&apos;ll want to special case it for each token type.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:664
&gt; &gt; &gt; +                    m_parseErrorMessage = &quot;JSON Parse error: Expected right parenthesis after property name in expression&quot;;
&gt; &gt; 
&gt; &gt; This error is bogus.  It&apos;s testing to ensure that you have balanced the parenthesis.  However you can&apos;t actually test for it as this path is only taken when preparsing content in the hope it&apos;s json.
&gt; 
&gt; So I should just leave this one out?

Yeah</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441301</commentid>
    <comment_count>9</comment_count>
      <attachid>101797</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-07-22 17:57:49 -0700</bug_when>
    <thetext>Created attachment 101797
proposed patch

patch, take two</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441302</commentid>
    <comment_count>10</comment_count>
      <attachid>101797</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-22 18:04:41 -0700</bug_when>
    <thetext>Comment on attachment 101797
proposed patch

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

Seems like one more round is necessary

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:499
&gt; +                    m_parseErrorMessage = &quot;Expected right bracket at end of array expression&quot;;

expected ]

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:519
&gt; +                        m_parseErrorMessage = &quot;Expected colon before value in object definition&quot;;

Expected &apos;:&apos; before value in object property definition

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:529
&gt; +                    m_parseErrorMessage = &quot;Expected right brace at the end of object definition&quot;;

&apos;}&apos;

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:548
&gt; +                    m_parseErrorMessage = &quot;Expected colon before value in object definition&quot;;

&apos;:&apos;

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:564
&gt; +                    m_parseErrorMessage = &quot;Expected right brace at end of object expression&quot;;

&apos;}&apos;

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:668
&gt; +                        m_parseErrorMessage = String::format(&quot;Could not parse \&quot;%s\&quot;&quot;, UString(m_lexer.currentToken().stringToken).ascii().data()).impl();

Unexpected identifier &quot;%s&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441345</commentid>
    <comment_count>11</comment_count>
      <attachid>101805</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-07-22 22:46:14 -0700</bug_when>
    <thetext>Created attachment 101805
proposed patch

patch, take three</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441347</commentid>
    <comment_count>12</comment_count>
      <attachid>101805</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-22 23:08:48 -0700</bug_when>
    <thetext>Comment on attachment 101805
proposed patch

Attachment 101805 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9232276

New failing tests:
fast/canvas/webgl/framebuffer-test.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441349</commentid>
    <comment_count>13</comment_count>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-07-22 23:15:29 -0700</bug_when>
    <thetext>Oliver, do you know why the chrome-bot failed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441742</commentid>
    <comment_count>14</comment_count>
      <attachid>101885</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-07-25 10:59:18 -0700</bug_when>
    <thetext>Created attachment 101885
updated patch for cr-bot

hopefully the bot will like this one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441756</commentid>
    <comment_count>15</comment_count>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-07-25 11:25:30 -0700</bug_when>
    <thetext>So, the cr-linux bot liked the last patch... but it failed 3 times before it passed. Is that significant?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441757</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-25 11:29:37 -0700</bug_when>
    <thetext>&gt; So, the cr-linux bot liked the last patch... but it failed 3 times before it passed. Is that significant?

Nope.  That just means there were some existing failures unrelated to your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441764</commentid>
    <comment_count>17</comment_count>
      <attachid>101885</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-25 11:41:53 -0700</bug_when>
    <thetext>Comment on attachment 101885
updated patch for cr-bot

Clearing flags on attachment: 101885

Committed r91686: &lt;http://trac.webkit.org/changeset/91686&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441765</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-25 11:41:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441960</commentid>
    <comment_count>19</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-25 16:12:37 -0700</bug_when>
    <thetext>rolled out patch as it introduced 1.5% regression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442095</commentid>
    <comment_count>20</comment_count>
      <attachid>101968</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-07-25 21:16:58 -0700</bug_when>
    <thetext>Created attachment 101968
patch (no speed regression this time)

This patch does not cause a speed regression in the sunspider tests. The cause for the regression in the previous patch was the line that created an error message for an unexpected identifier using String::format(). Removing the String::format from that line will still create an adequate error message (Unexpected identifier) and it will not cause a speed regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442357</commentid>
    <comment_count>21</comment_count>
      <attachid>101968</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 10:53:54 -0700</bug_when>
    <thetext>Comment on attachment 101968
patch (no speed regression this time)

Clearing flags on attachment: 101968

Committed r91765: &lt;http://trac.webkit.org/changeset/91765&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442358</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 10:54:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101695</attachid>
            <date>2011-07-21 20:14:18 -0700</date>
            <delta_ts>2011-07-22 16:45:12 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-63339-20110721201417.patch</filename>
            <type>text/plain</type>
            <size>31566</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE1NDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTEtMDctMjEgIEp1YW4gQy4gTW9udGVtYXlvciAgPGptb250QGFwcGxlLmNvbT4KKworICAg
ICAgICBKU09OIGVycm9ycyBzaG91bGQgYmUgaW5mb3JtYXRpdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMzM5CisgICAgICAgIAorICAgICAgICBB
ZGRlZCBlcnJvciBtZXNzYWdlcyB0byB0aGUgSlNPTiBQYXJzZXIuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU09OUHJvdG9GdW5jUGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUv
TGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OkxleGVyOjps
ZXgpOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyOjpMZXhlcjo6bGV4U3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjo6TGV4ZXI6OmxleE51bWJlcik6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjo6TGl0ZXJhbFBhcnNlcik6CisgICAg
ICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OmdldEVycm9yTWVzc2FnZSk6CisgICAgICAgIChKU0M6
OkxpdGVyYWxQYXJzZXI6OnRyeUxpdGVyYWxQYXJzZSk6CisgICAgICAgIChKU0M6OkxpdGVyYWxQ
YXJzZXI6OkxleGVyOjpMZXhlcik6CisKIDIwMTEtMDctMjEgIEdhdmluIEJhcnJhY2xvdWdoICA8
YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NDkwMApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5jcHAJKHJldmlzaW9uIDkxMzI5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxOSw3ICs4
MTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1CiAgICAgTGl0
ZXJhbFBhcnNlciBqc29uUGFyc2VyKGV4ZWMsIHNvdXJjZS5jaGFyYWN0ZXJzKCksIHNvdXJjZS5s
ZW5ndGgoKSwgTGl0ZXJhbFBhcnNlcjo6U3RyaWN0SlNPTik7CiAgICAgSlNWYWx1ZSB1bmZpbHRl
cmVkID0ganNvblBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsKICAgICBpZiAoIXVuZmlsdGVyZWQp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhl
YywgIlVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBqc29uUGFyc2VyLmdldEVycm9y
TWVzc2FnZSgpKSk7CiAgICAgCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodW5maWx0ZXJlZCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAkocmV2aXNpb24g
OTEzMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDExICsyMzYsMTQgQEAgdGVtcGxhdGUgPExpdGVyYWxQ
YXJzZXI6OlBhcnNlck1vZGUgbW9kZQogICAgICAgICAgICAgcmV0dXJuIFRva0lkZW50aWZpZXI7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX3B0ciA9PSAnXCcnKSB7Ci0gICAgICAgICAgICBp
ZiAobW9kZSA9PSBTdHJpY3RKU09OKQorICAgICAgICAgICAgaWYgKG1vZGUgPT0gU3RyaWN0SlNP
TikgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIkpTT04gTGV4ZXIgZXJy
b3I6IFNpbmdsZSBxdW90ZXMgYXJlIG5vdCBhbGxvd2VkIGluIEpTT04iOwogICAgICAgICAgICAg
ICAgIHJldHVybiBUb2tFcnJvcjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBs
ZXhTdHJpbmc8bW9kZSwgJ1wnJz4odG9rZW4pOwogICAgICAgICB9CiAgICAgfQorICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIkpTT04gTGV4ZXIgZXJyb3I6IFVucmVjb2du
aXplZCB0b2tlbiAnJWMnIiwgKm1fcHRyKS5pbXBsKCk7CiAgICAgcmV0dXJuIFRva0Vycm9yOwog
fQogCkBAIC0yNzQsOCArMjc3LDEwIEBAIHRlbXBsYXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJN
b2RlIG1vZGUKICAgICAgICAgICAgIGlmIChidWlsZGVyLmlzRW1wdHkoKSAmJiBydW5TdGFydCA8
IG1fcHRyKQogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJ1blN0YXJ0LCBtX3B0ciAt
IHJ1blN0YXJ0KTsKICAgICAgICAgICAgICsrbV9wdHI7Ci0gICAgICAgICAgICBpZiAobV9wdHIg
Pj0gbV9lbmQpCisgICAgICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQpIHsKKyAgICAgICAgICAg
ICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJKU09OIExleGVyIGVycm9yOiBVbmV4cGVjdGVkIGVu
ZCBvZiBzdHJpbmciOwogICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoKm1fcHRyKSB7CiAgICAgICAgICAgICAgICAgY2Fz
ZSAnIic6CiAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7CkBAIC0zMTEs
MTEgKzMxNiwxNSBAQCB0ZW1wbGF0ZSA8TGl0ZXJhbFBhcnNlcjo6UGFyc2VyTW9kZSBtb2RlCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSAndSc6Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICgobV9lbmQgLSBtX3B0cikgPCA1KSAvLyB1Tk5OTiA9PSA1
IGNoYXJhY3RlcnMKKyAgICAgICAgICAgICAgICAgICAgaWYgKChtX2VuZCAtIG1fcHRyKSA8IDUp
IHsgCisgICAgICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJKU09OIExl
eGVyIGVycm9yOiBcXHUgbXVzdCBiZSBmb2xsb3dlZCBieSA0IGhleCBkaWdpdHMiOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOworICAgICAgICAgICAgICAgICAgICB9
IC8vIHVOTk5OID09IDUgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBp
ID0gMTsgaSA8IDU7IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FTQ0lJ
SGV4RGlnaXQobV9wdHJbaV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FTQ0lJ
SGV4RGlnaXQobV9wdHJbaV0pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSAiSlNPTiBMZXhlciBlcnJvcjogRXNjYXBlZCB1bmljb2RlIGlzIG5vdCBh
IEFTQ0lJIGhleGFkZWNpbWFsIGRpZ2l0IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gVG9rRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoSlNDOjpMZXhlcjo6
Y29udmVydFVuaWNvZGUobV9wdHJbMV0sIG1fcHRyWzJdLCBtX3B0clszXSwgbV9wdHJbNF0pKTsK
ICAgICAgICAgICAgICAgICAgICAgbV9wdHIgKz0gNTsKQEAgLTMyNywxMyArMzM2LDE2IEBAIHRl
bXBsYXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJNb2RlIG1vZGUKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcHRyKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJK
U09OIExleGVyIGVycm9yOiBVbmFibGUgdG8gcmVhZCBzdHJpbmciOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IHdo
aWxlICgobW9kZSAhPSBOb25TdHJpY3RKU09OKSAmJiBtX3B0ciAhPSBydW5TdGFydCAmJiAobV9w
dHIgPCBtX2VuZCkgJiYgKm1fcHRyICE9IHRlcm1pbmF0b3IpOwogCi0gICAgaWYgKG1fcHRyID49
IG1fZW5kIHx8ICptX3B0ciAhPSB0ZXJtaW5hdG9yKQorICAgIGlmIChtX3B0ciA+PSBtX2VuZCB8
fCAqbV9wdHIgIT0gdGVybWluYXRvcikgeworICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJK
U09OIExleGVyIGVycm9yOiBVbnRlcm1pbmF0ZWQgc3RyaW5nIjsKICAgICAgICAgcmV0dXJuIFRv
a0Vycm9yOworICAgIH0KIAogICAgIGlmIChidWlsZGVyLmlzRW1wdHkoKSkgewogICAgICAgICB0
b2tlbi5zdHJpbmdCdWZmZXIgPSBVU3RyaW5nKCk7CkBAIC0zNzYsMTUgKzM4OCwxOSBAQCBMaXRl
cmFsUGFyc2VyOjpUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjo6CiAgICAgICAgIC8vIFswLTldKgog
ICAgICAgICB3aGlsZSAobV9wdHIgPCBtX2VuZCAmJiBpc0FTQ0lJRGlnaXQoKm1fcHRyKSkKICAg
ICAgICAgICAgICsrbV9wdHI7Ci0gICAgfSBlbHNlCisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9s
ZXhFcnJvck1lc3NhZ2UgPSAiSlNPTiBMZXhlciBlcnJvcjogSW52YWxpZCBudW1iZXIiOwogICAg
ICAgICByZXR1cm4gVG9rRXJyb3I7CisgICAgfQogCiAgICAgLy8gKCcuJyBbMC05XSspPwogICAg
IGlmIChtX3B0ciA8IG1fZW5kICYmICptX3B0ciA9PSAnLicpIHsKICAgICAgICAgKyttX3B0cjsK
ICAgICAgICAgLy8gWzAtOV0rCi0gICAgICAgIGlmIChtX3B0ciA+PSBtX2VuZCB8fCAhaXNBU0NJ
SURpZ2l0KCptX3B0cikpCisgICAgICAgIGlmIChtX3B0ciA+PSBtX2VuZCB8fCAhaXNBU0NJSURp
Z2l0KCptX3B0cikpIHsKKyAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIkpTT04gTGV4
ZXIgZXJyb3I6IEludmFsaWQgbnVtYmVyOiBJbnZhbGlkIGRpZ2l0cyBhZnRlciBkZWNpbWFsIHBv
aW50IjsKICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKKyAgICAgICAgfQogCiAgICAgICAg
ICsrbV9wdHI7CiAgICAgICAgIHdoaWxlIChtX3B0ciA8IG1fZW5kICYmIGlzQVNDSUlEaWdpdCgq
bV9wdHIpKQpAQCAtNDE2LDggKzQzMiwxMCBAQCBMaXRlcmFsUGFyc2VyOjpUb2tlblR5cGUgTGl0
ZXJhbFBhcnNlcjo6CiAgICAgICAgICAgICArK21fcHRyOwogCiAgICAgICAgIC8vIFswLTldKwot
ICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKQorICAg
ICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7CisgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJKU09OIExleGVyIGVycm9yOiBFeHBvbmVudCBz
eW1ib2xzIHNob3VsZCBiZSBmb2xsb3dlZCBieSAnKycgb3IgJy0nIGFuZCBsZWFzdCBvbmUgbnVt
YmVyIjsKICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKKyAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgKyttX3B0cjsKICAgICAgICAgd2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNBU0NJ
SURpZ2l0KCptX3B0cikpCkBAIC00NTgsOCArNDc2LDEwIEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNl
cjo6cGFyc2UoUGFyc2VyU3RhdGUKICAgICAgICAgICAgIGNhc2UgRG9QYXJzZUFycmF5U3RhcnRF
eHByZXNzaW9uOiB7CiAgICAgICAgICAgICAgICAgVG9rZW5UeXBlIGxhc3RUb2tlbiA9IG1fbGV4
ZXIuY3VycmVudFRva2VuKCkudHlwZTsKICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0
KCkgPT0gVG9rUkJyYWNrZXQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RUb2tlbiA9
PSBUb2tDb21tYSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RUb2tlbiA9PSBUb2tDb21t
YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJKU09O
IFBhcnNlIGVycm9yOiBVbmV4cGVjdGVkIGNvbW1hIGF0IHRoZSBlbmQgb2YgYXJyYXkgZXhwcmVz
c2lvbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXIubmV4dCgpOwogICAg
ICAgICAgICAgICAgICAgICBsYXN0VmFsdWUgPSBvYmplY3RTdGFjay5sYXN0KCk7CiAgICAgICAg
ICAgICAgICAgICAgIG9iamVjdFN0YWNrLnJlbW92ZUxhc3QoKTsKQEAgLTQ3NSw4ICs0OTUsMTAg
QEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAgICAgICAg
ICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgPT0gVG9rQ29tbWEpCiAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gZG9QYXJzZUFycmF5U3RhcnRFeHByZXNzaW9uOwogCi0gICAgICAg
ICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2VuKCkudHlwZSAhPSBUb2tSQnJhY2tldCkK
KyAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlICE9IFRva1JC
cmFja2V0KSB7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiSlNP
TiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgcmlnaHQgYnJhY2tldCBhdCBlbmQgb2YgYXJyYXkgZXhw
cmVzc2lvbiI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fbGV4ZXIubmV4
dCgpOwogICAgICAgICAgICAgICAgIGxhc3RWYWx1ZSA9IG9iamVjdFN0YWNrLmxhc3QoKTsKQEAg
LTQ5MywxNiArNTE1LDIwIEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjo6cGFyc2UoUGFyc2VyU3Rh
dGUKICAgICAgICAgICAgICAgICAgICAgTGV4ZXI6OkxpdGVyYWxQYXJzZXJUb2tlbiBpZGVudGlm
aWVyVG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpOwogCiAgICAgICAgICAgICAgICAgICAg
IC8vIENoZWNrIGZvciBjb2xvbgotICAgICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0
KCkgIT0gVG9rQ29sb24pCisgICAgICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSAh
PSBUb2tDb2xvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJKU09OIFBhcnNlIGVycm9yOiBFeHBlY3RlZCBjb2xvbiBiZWZvcmUgdmFsdWUgaW4gb2Jq
ZWN0IGRlZmluaXRpb24iOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZp
ZXJTdGFjay5hcHBlbmQobWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclRva2VuLnN0cmluZ1Rva2Vu
LCBpZGVudGlmaWVyVG9rZW4uc3RyaW5nTGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0
YXRlU3RhY2suYXBwZW5kKERvUGFyc2VPYmplY3RFbmRFeHByZXNzaW9uKTsKICAgICAgICAgICAg
ICAgICAgICAgZ290byBzdGFydFBhcnNlRXhwcmVzc2lvbjsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgaWYgKHR5cGUgIT0gVG9rUkJyYWNlKSAKKyAgICAgICAgICAgICAgICBp
ZiAodHlwZSAhPSBUb2tSQnJhY2UpICB7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSAiSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgcmlnaHQgYnJhY2UgYXQgdGhl
IGVuZCBvZiBvYmplY3QgZGVmaW5pdGlvbiI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fbGV4ZXIubmV4
dCgpOwogICAgICAgICAgICAgICAgIGxhc3RWYWx1ZSA9IG9iamVjdFN0YWNrLmxhc3QoKTsKICAg
ICAgICAgICAgICAgICBvYmplY3RTdGFjay5yZW1vdmVMYXN0KCk7CkBAIC01MTEsMTMgKzUzNywx
NyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRlCiAgICAgICAgICAg
ICBkb1BhcnNlT2JqZWN0U3RhcnRFeHByZXNzaW9uOgogICAgICAgICAgICAgY2FzZSBEb1BhcnNl
T2JqZWN0U3RhcnRFeHByZXNzaW9uOiB7CiAgICAgICAgICAgICAgICAgVG9rZW5UeXBlIHR5cGUg
PSBtX2xleGVyLm5leHQoKTsKLSAgICAgICAgICAgICAgICBpZiAodHlwZSAhPSBUb2tTdHJpbmcg
JiYgKG1fbW9kZSA9PSBTdHJpY3RKU09OIHx8IHR5cGUgIT0gVG9rSWRlbnRpZmllcikpCisgICAg
ICAgICAgICAgICAgaWYgKHR5cGUgIT0gVG9rU3RyaW5nICYmIChtX21vZGUgPT0gU3RyaWN0SlNP
TiB8fCB0eXBlICE9IFRva0lkZW50aWZpZXIpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgc3RyaW5nIGluIG9i
amVjdCBleHByZXNzaW9uIjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgTGV4ZXI6OkxpdGVyYWxQYXJzZXJU
b2tlbiBpZGVudGlmaWVyVG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpOwogCiAgICAgICAg
ICAgICAgICAgLy8gQ2hlY2sgZm9yIGNvbG9uCi0gICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIu
bmV4dCgpICE9IFRva0NvbG9uKQorICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSAh
PSBUb2tDb2xvbikgeworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
IkpTT04gUGFyc2UgZXJyb3I6IEV4cGVjdGVkIGNvbG9uIGJlZm9yZSB2YWx1ZSBpbiBvYmplY3Qg
ZGVmaW5pdGlvbiI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAg
ICAgICAgICAgaWRlbnRpZmllclN0YWNrLmFwcGVuZChtYWtlSWRlbnRpZmllcihpZGVudGlmaWVy
VG9rZW4uc3RyaW5nVG9rZW4sIGlkZW50aWZpZXJUb2tlbi5zdHJpbmdMZW5ndGgpKTsKQEAgLTUz
MCw4ICs1NjAsMTAgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQog
ICAgICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2VuKCkudHlwZSA9PSBUb2tDb21tYSkKICAgICAg
ICAgICAgICAgICAgICAgZ290byBkb1BhcnNlT2JqZWN0U3RhcnRFeHByZXNzaW9uOwotICAgICAg
ICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgIT0gVG9rUkJyYWNlKQor
ICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgIT0gVG9rUkJy
YWNlKSB7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiSlNPTiBQ
YXJzZSBlcnJvcjogRXhwZWN0ZWQgcmlnaHQgYnJhY2UgYXQgZW5kIG9mIG9iamVjdCBleHByZXNz
aW9uIjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAg
bGFzdFZhbHVlID0gb2JqZWN0U3RhY2subGFzdCgpOwogICAgICAgICAgICAgICAgIG9iamVjdFN0
YWNrLnJlbW92ZUxhc3QoKTsKQEAgLTU3Myw2ICs2MDUsNyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJz
ZXI6OnBhcnNlKFBhcnNlclN0YXRlCiAKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIkpTT04gUGFyc2UgZXJyb3I6IENvdWxkIG5vdCBwYXJzZSB2
YWx1ZSBleHByZXNzaW9uIjsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTkwLDE1
ICs2MjMsMTkgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAg
ICAgICAgICAgICAgICAgICAgICAgZ290byBzdGFydFBhcnNlRXhwcmVzc2lvbjsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJKU09OIFBhcnNlIGVycm9yOiBDb3Vs
ZCBub3QgcGFyc2UgbmFtZSBpbiBleHByZXNzaW9uIjsKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgY2FzZSBTdGFydFBhcnNlU3RhdGVtZW50RW5kU3RhdGVtZW50OiB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKHN0YXRlU3RhY2suaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICBp
ZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlICE9IFRva1JQYXJlbikKKyAgICAgICAgICAg
ICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlICE9IFRva1JQYXJlbikgeworICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkpTT04gUGFyc2UgZXJyb3I6
IEV4cGVjdGVkIHJpZ2h0IHBhcmVudGhlc2lzIGFmdGVyIG5hbWUgaW4gZXhwcmVzc2lvbiI7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSA9PSBUb2tFbmQpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsYXN0VmFsdWU7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9ICJKU09OIFBhcnNlIGVycm9yOiBFeHBlY3RlZCBlbmQgb2YgSlNPTiBidXQgZmls
ZSBjb250aW51ZWQiOwogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAkocmV2aXNpb24gOTEzMjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDE3ICs0MCwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIDogbV9leGVjKGV4
ZWMpCiAgICAgICAgICAgICAsIG1fbGV4ZXIoY2hhcmFjdGVycywgbGVuZ3RoLCBtb2RlKQogICAg
ICAgICAgICAgLCBtX21vZGUobW9kZSkKKyAgICAgICAgICAgICwgbV9wYXJzZUVycm9yTWVzc2Fn
ZSgpCiAgICAgICAgIHsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgVVN0cmluZyBnZXRF
cnJvck1lc3NhZ2UoKSAKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHJldHVybiAhbV9sZXhlci5t
X2xleEVycm9yTWVzc2FnZS5pc0VtcHR5KCkgPyAgbV9sZXhlci5tX2xleEVycm9yTWVzc2FnZSA6
IG1fcGFyc2VFcnJvck1lc3NhZ2U7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIEpTVmFs
dWUgdHJ5TGl0ZXJhbFBhcnNlKCkKICAgICAgICAgewogICAgICAgICAgICAgbV9sZXhlci5uZXh0
KCk7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHBhcnNlKG1fbW9kZSA9PSBTdHJpY3RK
U09OID8gU3RhcnRQYXJzZUV4cHJlc3Npb24gOiBTdGFydFBhcnNlU3RhdGVtZW50KTsKICAgICAg
ICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgPT0gVG9rU2VtaSkKICAgICAg
ICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKLSAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJl
bnRUb2tlbigpLnR5cGUgIT0gVG9rRW5kKQorICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVu
dFRva2VuKCkudHlwZSAhPSBUb2tFbmQpIHsKKyAgICAgICAgICAgICAgICBpZiAoZ2V0RXJyb3JN
ZXNzYWdlKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNz
YWdlID0gIkpTT04gUGFyc2UgZXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZyI7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC04NSw2ICs5NCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgY2xhc3MgTGV4ZXIgewogICAgICAg
ICBwdWJsaWM6CisgICAgICAgICAgICBVU3RyaW5nIG1fbGV4RXJyb3JNZXNzYWdlOwogICAgICAg
ICAgICAgc3RydWN0IExpdGVyYWxQYXJzZXJUb2tlbiB7CiAgICAgICAgICAgICAgICAgVG9rZW5U
eXBlIHR5cGU7CiAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0OwpAQCAtOTksNyAr
MTA5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAg
IH07CiAgICAgICAgICAgICBMZXhlcihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoLCBQYXJzZXJNb2RlIG1vZGUpCi0gICAgICAgICAgICAgICAgOiBtX21vZGUobW9kZSkK
KyAgICAgICAgICAgICAgICA6IG1fbGV4RXJyb3JNZXNzYWdlKCkKKyAgICAgICAgICAgICAgICAs
IG1fbW9kZShtb2RlKQogICAgICAgICAgICAgICAgICwgbV9wdHIoY2hhcmFjdGVycykKICAgICAg
ICAgICAgICAgICAsIG1fZW5kKGNoYXJhY3RlcnMgKyBsZW5ndGgpCiAgICAgICAgICAgICB7CkBA
IC0xMjksNiArMTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWNTdGF0ZSogbV9l
eGVjOwogICAgICAgICBMaXRlcmFsUGFyc2VyOjpMZXhlciBtX2xleGVyOwogICAgICAgICBQYXJz
ZXJNb2RlIG1fbW9kZTsKKyAgICAgICAgVVN0cmluZyBtX3BhcnNlRXJyb3JNZXNzYWdlOwogICAg
ICAgICBzdGF0aWMgdW5zaWduZWQgY29uc3QgTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyID0gMTI4
OwogICAgICAgICBGaXhlZEFycmF5PElkZW50aWZpZXIsIE1heGltdW1DYWNoYWJsZUNoYXJhY3Rl
cj4gbV9zaG9ydElkZW50aWZpZXJzOwogICAgICAgICBGaXhlZEFycmF5PElkZW50aWZpZXIsIE1h
eGltdW1DYWNoYWJsZUNoYXJhY3Rlcj4gbV9yZWNlbnRJZGVudGlmaWVyczsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDkxNTQ3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMjEgIEp1YW4gQy4gTW9udGVtYXlvciAgPGptb250QGFw
cGxlLmNvbT4KKworICAgICAgICBKU09OIGVycm9ycyBzaG91bGQgYmUgaW5mb3JtYXRpdmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMzM5CisgICAg
ICAgIAorICAgICAgICBVcGRhdGVkIGV4cGVjdGVkIHJlc3VsdHMgZm9yIG5ldyBKU09OIFBhcnNl
ciBlcnJvciBtZXNzYWdlcy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGZhc3QvanMvSlNPTi1wYXJzZS1leHBlY3RlZC50eHQ6CisKIDIwMTEtMDct
MjEgIFJvYmluIFFpdSAgPHJvYmluLnFpdS5kZXZAZ21haWwuY29tPgogCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDczNwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9KU09OLXBhcnNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2pzL0pTT04tcGFyc2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MTMyOSkKKysr
IExheW91dFRlc3RzL2Zhc3QvanMvSlNPTi1wYXJzZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTUsNyArNSw3IEBAIFBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0
aW8KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCcnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tp
XShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJy
b3I6IENvdWxkIG5vdCBwYXJzZSB2YWx1ZSBleHByZXNzaW9uLgogZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzEnKTsKICAgICB9CkBAIC0x
NywxMSArMTcsMTEgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQog
ZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2Uo
J0luZmluaXR5Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNl
IGVycm9yOiBDb3VsZCBub3QgcGFyc2UgdmFsdWUgZXhwcmVzc2lvbi4KIGZ1bmN0aW9uIChqc29u
T2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdOYU4nKTsKICAgICB9
Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
VW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IENvdWxkIG5vdCBw
YXJzZSB2YWx1ZSBleHByZXNzaW9uLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAg
cmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ251bGwnKTsKICAgICB9CkBAIC0yOSw3ICsyOSw3IEBA
IFBBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9uIChqc29u
T2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd1bmRlZmluZWQnKTsK
ICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IENvdWxk
IG5vdCBwYXJzZSB2YWx1ZSBleHByZXNzaW9uLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAg
ICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3t9Jyk7CiAgICAgfQpAQCAtMzcsMzEgKzM3
LDMxIEBAIFBBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9u
IChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcoe30pJyk7
CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBDb3Vs
ZCBub3QgcGFyc2UgdmFsdWUgZXhwcmVzc2lvbi4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7YX0nKTsKICAgICB9Ci1QQVNTIHRlc3Rz
W2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBh
cnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IEV4cGVjdGVkIHJpZ2h0IGJyYWNlIGF0
IHRoZSBlbmQgb2Ygb2JqZWN0IGRlZmluaXRpb24uCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewog
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgne2E6fScpOwogICAgIH0KLVBBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8g
cGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgcmlnaHQgYnJhY2Ug
YXQgdGhlIGVuZCBvZiBvYmplY3QgZGVmaW5pdGlvbi4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7YTo1fScpOwogICAgIH0KLVBBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgcmlnaHQgYnJh
Y2UgYXQgdGhlIGVuZCBvZiBvYmplY3QgZGVmaW5pdGlvbi4KIGZ1bmN0aW9uIChqc29uT2JqZWN0
KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7YTo1LH0nKTsKICAgICB9Ci1Q
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5h
YmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IEV4cGVjdGVkIHJpZ2h0
IGJyYWNlIGF0IHRoZSBlbmQgb2Ygb2JqZWN0IGRlZmluaXRpb24uCiBmdW5jdGlvbiAoanNvbk9i
amVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJhIn0nKTsKICAgICB9
Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
VW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IEV4cGVjdGVkIGNv
bG9uIGJlZm9yZSB2YWx1ZSBpbiBvYmplY3QgZGVmaW5pdGlvbi4KIGZ1bmN0aW9uIChqc29uT2Jq
ZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7ImEiOn0nKTsKICAgICB9
Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
VW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IENvdWxkIG5vdCBw
YXJzZSB2YWx1ZSBleHByZXNzaW9uLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAg
cmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6NX0nKTsKICAgICB9CkBAIC03MywyMCArNzMs
MjAgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6NSx9
Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0
aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBF
eHBlY3RlZCBzdHJpbmcgaW4gb2JqZWN0IGV4cHJlc3Npb24uCiBqc29uMi5qcyBkaWQgbm90IHRo
cm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgogZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6NSwsfScpOwogICAgIH0K
LVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBV
bmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgc3Ry
aW5nIGluIG9iamVjdCBleHByZXNzaW9uLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6NSwiYSIsfScpOwogICAgIH0KLVBBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgY29sb24gYmVm
b3JlIHZhbHVlIGluIG9iamVjdCBkZWZpbml0aW9uLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
ICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6KDUsImEiKSx9Jyk7CiAgICAg
fQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBDb3VsZCBub3Qg
cGFyc2UgdmFsdWUgZXhwcmVzc2lvbi4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAg
IHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbXScpOwogICAgIH0KQEAgLTk4LDcgKzk4LDcgQEAg
UEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25P
YmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ1sxLF0nKTsKICAgICB9
Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
VW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuZXhwZWN0ZWQg
Y29tbWEgYXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uLgoganNvbjIuanMgZGlkIG5vdCB0
aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0
KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbMSwyXScpOwpAQCAtMTA3LDEy
ICsxMDcsMTIgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVu
Y3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ1sx
LDIsLF0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tp
XShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJy
b3I6IENvdWxkIG5vdCBwYXJzZSB2YWx1ZSBleHByZXNzaW9uLgoganNvbjIuanMgZGlkIG5vdCB0
aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0
KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbMSwyLCw0XScpOwogICAgIH0K
LVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBV
bmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogQ291bGQgbm90IHBh
cnNlIHZhbHVlIGV4cHJlc3Npb24uCiBqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qg
d2UgZXhwZWN0IHRvIHRocm93LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0
dXJuIGpzb25PYmplY3QucGFyc2UoJyIiJyk7CkBAIC0xMjksMTUgKzEyOSwxNSBAQCBQQVNTIEpT
T04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkg
ewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXCInKTsKICAgICB9Ci1QQVNT
IHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxl
IHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gTGV4ZXIgZXJyb3I6IFVudGVybWluYXRlZCBzdHJp
bmcuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgnImFcXHoiJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIExl
eGVyIGVycm9yOiBVbmFibGUgdG8gcmVhZCBzdHJpbmcuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkg
ewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXFx6IicpOwogICAgIH0KLVBB
U1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFi
bGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBMZXhlciBlcnJvcjogVW5hYmxlIHRvIHJlYWQg
c3RyaW5nLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmpl
Y3QucGFyc2UoJyJhXFxcXHoiJyk7CiAgICAgfQpAQCAtMTUzLDcgKzE1Myw3IEBAIFBBU1MgSlNP
Ti5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxueiInKTsKICAgICB9Ci1QQVNT
IHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxl
IHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gTGV4ZXIgZXJyb3I6IFVudGVybWluYXRlZCBzdHJp
bmcuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgnImFcXG56IicpOwogICAgIH0KQEAgLTE2MSw3ICsxNjEsNyBAQCBQQVNTIEpTT04uc3Ry
aW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAg
ICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFccnoiJyk7CiAgICAgfQotUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBw
YXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBKU09OIExleGVyIGVycm9yOiBVbnRlcm1pbmF0ZWQgc3RyaW5nLgog
ZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2Uo
JyJhXFxyeiInKTsKICAgICB9CkBAIC0xNzcsNyArMTc3LDcgQEAgUEFTUyBKU09OLnN0cmluZ2lm
eSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAg
cmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXGJ6IicpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0o
bmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2Ug
SlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogSlNPTiBMZXhlciBlcnJvcjogVW50ZXJtaW5hdGVkIHN0cmluZy4KIGpzb24y
LmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cuCiBmdW5jdGlv
biAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXGJ6
IicpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIFBBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0
aXZlSlNPTikKIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCciYVxyeiInKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgor
UEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpT
T04gTGV4ZXIgZXJyb3I6IFVudGVybWluYXRlZCBzdHJpbmcuCiBmdW5jdGlvbiAoanNvbk9iamVj
dCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHJ6IicpOwogICAgIH0K
QEAgLTE5NCwxOSArMTk0LDE5IEBAIFBBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZl
SlNPTikKIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKCciYVxcdXoiICAgICAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5n
LgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IEpTT04gTGV4ZXIgZXJyb3I6IEVzY2FwZWQgdW5pY29kZSBpcyBub3QgYSBBU0NJSSBoZXhhZGVj
aW1hbCBkaWdpdC4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29u
T2JqZWN0LnBhcnNlKCciYVxcdTB6IiAgICAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2
ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04g
c3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IEpTT04gTGV4ZXIgZXJyb3I6IEVzY2FwZWQgdW5pY29kZSBpcyBub3QgYSBBU0NJSSBo
ZXhhZGVjaW1hbCBkaWdpdC4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVy
biBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAweiIgICAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNl
IEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IEpTT04gTGV4ZXIgZXJyb3I6IEVzY2FwZWQgdW5pY29kZSBpcyBub3QgYSBB
U0NJSSBoZXhhZGVjaW1hbCBkaWdpdC4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAg
IHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwMHoiICAnKTsKICAgICB9Ci1QQVNTIHRl
c3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRv
IHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IEpTT04gTGV4ZXIgZXJyb3I6IEVzY2FwZWQgdW5pY29kZSBpcyBu
b3QgYSBBU0NJSSBoZXhhZGVjaW1hbCBkaWdpdC4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwMDB6IiAnKTsKICAgICB9CkBA
IC0yMjIsMTEgKzIyMiwxMSBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpT
T04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgnImFcXHUwMDBHeiIgJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4K
K1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBK
U09OIExleGVyIGVycm9yOiBFc2NhcGVkIHVuaWNvZGUgaXMgbm90IGEgQVNDSUkgaGV4YWRlY2lt
YWwgZGlnaXQuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9i
amVjdC5wYXJzZSgnImFcXHUwMDBneiIgJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0
cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBKU09OIExleGVyIGVycm9yOiBFc2NhcGVkIHVuaWNvZGUgaXMgbm90IGEgQVNDSUkgaGV4
YWRlY2ltYWwgZGlnaXQuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgnImFcXHUwMEEweiIgJyk7CiAgICAgfQpAQCAtMjM4LDExICsyMzgs
MTEgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDBH
MHoiICcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBMZXhlciBlcnJv
cjogRXNjYXBlZCB1bmljb2RlIGlzIG5vdCBhIEFTQ0lJIGhleGFkZWNpbWFsIGRpZ2l0LgogZnVu
Y3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJh
XFx1MDBnMHoiICcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRl
c3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBMZXhl
ciBlcnJvcjogRXNjYXBlZCB1bmljb2RlIGlzIG5vdCBhIEFTQ0lJIGhleGFkZWNpbWFsIGRpZ2l0
LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJyJhXFx1MEEwMHoiICcpOwogICAgIH0KQEAgLTI1NCwxMSArMjU0LDExIEBAIFBBU1MgSlNP
Ti5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTBHMDB6IiAnKTsKICAgICB9
Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
VW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gTGV4ZXIgZXJyb3I6IEVzY2FwZWQgdW5p
Y29kZSBpcyBub3QgYSBBU0NJSSBoZXhhZGVjaW1hbCBkaWdpdC4KIGZ1bmN0aW9uIChqc29uT2Jq
ZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTBnMDB6IiAnKTsK
ICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gTGV4ZXIgZXJyb3I6IEVzY2Fw
ZWQgdW5pY29kZSBpcyBub3QgYSBBU0NJSSBoZXhhZGVjaW1hbCBkaWdpdC4KIGZ1bmN0aW9uIChq
c29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdUEwMDB6
IiAnKTsKICAgICB9CkBAIC0yNzAsNzEgKzI3MCw3MSBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRl
c3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1
cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHVHMDAweiIgJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tp
XShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJz
ZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBKU09OIExleGVyIGVycm9yOiBFc2NhcGVkIHVuaWNvZGUgaXMgbm90IGEg
QVNDSUkgaGV4YWRlY2ltYWwgZGlnaXQuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHVnMDAweiIgJyk7CiAgICAgfQotUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0
byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIExleGVyIGVycm9yOiBFc2NhcGVkIHVuaWNvZGUgaXMg
bm90IGEgQVNDSUkgaGV4YWRlY2ltYWwgZGlnaXQuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewog
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMDAnKTsKICAgICB9Ci1QQVNTIHRlc3Rz
W2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBh
cnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0
cmluZy4KIGpzb24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhy
b3cuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgnMDEnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2Ug
ZXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KIGpzb24yLmpzIGRpZCBub3QgdGhy
b3cgZm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkg
ewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMC5hJyk7CiAgICAgfQotUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0
byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIExleGVyIGVycm9yOiBJbnZhbGlkIG51bWJlcjogSW52
YWxpZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2ludC4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcweDAnKTsKICAgICB9Ci1QQVNTIHRl
c3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRv
IHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCcyZTEuMycpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQ
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNP
TiBQYXJzZSBlcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgogZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzJlLSsxMCcpOwog
ICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBMZXhlciBlcnJvcjogRXhwb25l
bnQgc3ltYm9scyBzaG91bGQgYmUgZm9sbG93ZWQgYnkgJysnIG9yICctJyBhbmQgbGVhc3Qgb25l
IG51bWJlci4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCcyZSstMTAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgor
UEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpT
T04gTGV4ZXIgZXJyb3I6IEV4cG9uZW50IHN5bWJvbHMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5ICcr
JyBvciAnLScgYW5kIGxlYXN0IG9uZSBudW1iZXIuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewog
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMmUzZTQnKTsKICAgICB9Ci1QQVNTIHRl
c3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRv
IHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCctMDEuMCcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQ
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNP
TiBQYXJzZSBlcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgogZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJy0wMScpOwogICAg
IH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5hYmxlIHRv
IHBhcnNlIEpTT04gc3RyaW5nLgoganNvbjIuanMgZGlkIG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdl
IGV4cGVjdCB0byB0aHJvdy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVy
biBqc29uT2JqZWN0LnBhcnNlKCctMDEuYScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogSlNPTiBMZXhlciBlcnJvcjogSW52YWxpZCBudW1iZXI6IEludmFsaWQgZGlnaXRzIGFm
dGVyIGRlY2ltYWwgcG9pbnQuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1
cm4ganNvbk9iamVjdC5wYXJzZSgnMS5lMScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogSlNPTiBMZXhlciBlcnJvcjogSW52YWxpZCBudW1iZXI6IEludmFsaWQgZGlnaXRzIGFm
dGVyIGRlY2ltYWwgcG9pbnQuCiBqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qgd2Ug
ZXhwZWN0IHRvIHRocm93LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJ3svKiBibG9jayBjb21tZW50cyBhcmUgbm90IGFsbG93ZWQgKi99
Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0
aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIExleGVyIGVycm9yOiBV
bnJlY29nbml6ZWQgdG9rZW4gJy8nLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAg
cmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3svLyBsaW5lIGNvbW1lbnRzIGFyZSBub3QgYWxsb3dl
ZCBcbn0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tp
XShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gTGV4ZXIgZXJy
b3I6IFVucmVjb2duaXplZCB0b2tlbiAnLycuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAg
ICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgndHJ1ZScpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101791</attachid>
            <date>2011-07-22 16:45:15 -0700</date>
            <delta_ts>2011-07-22 17:57:46 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-63339-20110722164514.patch</filename>
            <type>text/plain</type>
            <size>33350</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE2MjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTEtMDctMjIgIEp1YW4gQy4gTW9udGVtYXlvciAgPGptb250QGFwcGxlLmNvbT4KKworICAg
ICAgICBKU09OIGVycm9ycyBzaG91bGQgYmUgaW5mb3JtYXRpdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMzM5CisgICAgICAgIAorICAgICAgICBB
ZGRlZCBlcnJvciBtZXNzYWdlcyB0byB0aGUgSlNPTiBQYXJzZXIuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU09OUHJvdG9GdW5jUGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUv
TGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OkxleGVyOjps
ZXgpOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyOjpMZXhlcjo6bGV4U3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjo6TGV4ZXI6OmxleE51bWJlcik6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjo6Z2V0RXJyb3JNZXNzYWdlKToKKyAg
ICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjo6dHJ5TGl0ZXJhbFBhcnNlKToKKyAgICAgICAgKEpT
Qzo6TGl0ZXJhbFBhcnNlcjo6TGV4ZXI6OnNhd0Vycm9yKToKKyAgICAgICAgKEpTQzo6TGl0ZXJh
bFBhcnNlcjo6TGV4ZXI6OmdldEVycm9yTWVzc2FnZSk6CisKIDIwMTEtMDctMjIgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTA1MQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHJldmlzaW9uIDkxMzI5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgxOSw3ICs4MTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90
b0Z1CiAgICAgTGl0ZXJhbFBhcnNlciBqc29uUGFyc2VyKGV4ZWMsIHNvdXJjZS5jaGFyYWN0ZXJz
KCksIHNvdXJjZS5sZW5ndGgoKSwgTGl0ZXJhbFBhcnNlcjo6U3RyaWN0SlNPTik7CiAgICAgSlNW
YWx1ZSB1bmZpbHRlcmVkID0ganNvblBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsKICAgICBpZiAo
IXVuZmlsdGVyZWQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3lu
dGF4RXJyb3IoZXhlYywgIlVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZyIpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBqc29uUGFy
c2VyLmdldEVycm9yTWVzc2FnZSgpKSk7CiAgICAgCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodW5maWx0ZXJlZCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNw
cAkocmV2aXNpb24gOTEzMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRl
cmFsUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDExICsyMzYsMTQgQEAgdGVtcGxh
dGUgPExpdGVyYWxQYXJzZXI6OlBhcnNlck1vZGUgbW9kZQogICAgICAgICAgICAgcmV0dXJuIFRv
a0lkZW50aWZpZXI7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX3B0ciA9PSAnXCcnKSB7Ci0g
ICAgICAgICAgICBpZiAobW9kZSA9PSBTdHJpY3RKU09OKQorICAgICAgICAgICAgaWYgKG1vZGUg
PT0gU3RyaWN0SlNPTikgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIkpT
T04gTGV4ZXIgZXJyb3I6IFNpbmdsZSBxdW90ZXMgKFwnKSBhcmUgbm90IGFsbG93ZWQgaW4gSlNP
TiI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOworICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuIGxleFN0cmluZzxtb2RlLCAnXCcnPih0b2tlbik7CiAgICAgICAgIH0K
ICAgICB9CisgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiSlNPTiBMZXhl
ciBlcnJvcjogVW5yZWNvZ25pemVkIHRva2VuICclYyciLCAqbV9wdHIpLmltcGwoKTsKICAgICBy
ZXR1cm4gVG9rRXJyb3I7CiB9CiAKQEAgLTI3NCw4ICsyNzcsMTAgQEAgdGVtcGxhdGUgPExpdGVy
YWxQYXJzZXI6OlBhcnNlck1vZGUgbW9kZQogICAgICAgICAgICAgaWYgKGJ1aWxkZXIuaXNFbXB0
eSgpICYmIHJ1blN0YXJ0IDwgbV9wdHIpCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
cnVuU3RhcnQsIG1fcHRyIC0gcnVuU3RhcnQpOwogICAgICAgICAgICAgKyttX3B0cjsKLSAgICAg
ICAgICAgIGlmIChtX3B0ciA+PSBtX2VuZCkKKyAgICAgICAgICAgIGlmIChtX3B0ciA+PSBtX2Vu
ZCkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIkpTT04gTGV4ZXIgZXJy
b3I6IFVudGVybWluYXRlZCBzdHJpbmciOwogICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJv
cjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoKm1fcHRyKSB7CiAgICAgICAg
ICAgICAgICAgY2FzZSAnIic6CiAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCci
Jyk7CkBAIC0zMTEsMTEgKzMxNiwxNSBAQCB0ZW1wbGF0ZSA8TGl0ZXJhbFBhcnNlcjo6UGFyc2Vy
TW9kZSBtb2RlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAg
Y2FzZSAndSc6Ci0gICAgICAgICAgICAgICAgICAgIGlmICgobV9lbmQgLSBtX3B0cikgPCA1KSAv
LyB1Tk5OTiA9PSA1IGNoYXJhY3RlcnMKKyAgICAgICAgICAgICAgICAgICAgaWYgKChtX2VuZCAt
IG1fcHRyKSA8IDUpIHsgCisgICAgICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9ICJKU09OIExleGVyIGVycm9yOiBcXHUgbXVzdCBiZSBmb2xsb3dlZCBieSA0IGhleCBkaWdp
dHMiOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOworICAgICAgICAg
ICAgICAgICAgICB9IC8vIHVOTk5OID09IDUgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgICAg
ICBmb3IgKGludCBpID0gMTsgaSA8IDU7IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFpc0FTQ0lJSGV4RGlnaXQobV9wdHJbaV0pKQorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFpc0FTQ0lJSGV4RGlnaXQobV9wdHJbaV0pKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiSlNPTiBMZXhlciBlcnJv
cjogXCJcXCVzXCIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUiLCBVU3RyaW5nKG1fcHRy
LCA1KS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBUb2tFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChKU0M6OkxleGVy
Ojpjb252ZXJ0VW5pY29kZShtX3B0clsxXSwgbV9wdHJbMl0sIG1fcHRyWzNdLCBtX3B0cls0XSkp
OwogICAgICAgICAgICAgICAgICAgICBtX3B0ciArPSA1OwpAQCAtMzI3LDEzICszMzYsMTYgQEAg
dGVtcGxhdGUgPExpdGVyYWxQYXJzZXI6OlBhcnNlck1vZGUgbW9kZQogICAgICAgICAgICAgICAg
ICAgICAgICAgbV9wdHIrKzsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0g
IkpTT04gTGV4ZXIgZXJyb3I6IFVuYWJsZSB0byByZWFkIHN0cmluZyI7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBUb2tFcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0g
d2hpbGUgKChtb2RlICE9IE5vblN0cmljdEpTT04pICYmIG1fcHRyICE9IHJ1blN0YXJ0ICYmICht
X3B0ciA8IG1fZW5kKSAmJiAqbV9wdHIgIT0gdGVybWluYXRvcik7CiAKLSAgICBpZiAobV9wdHIg
Pj0gbV9lbmQgfHwgKm1fcHRyICE9IHRlcm1pbmF0b3IpCisgICAgaWYgKG1fcHRyID49IG1fZW5k
IHx8ICptX3B0ciAhPSB0ZXJtaW5hdG9yKSB7CisgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0g
IkpTT04gTGV4ZXIgZXJyb3I6IFVudGVybWluYXRlZCBzdHJpbmciOwogICAgICAgICByZXR1cm4g
VG9rRXJyb3I7CisgICAgfQogCiAgICAgaWYgKGJ1aWxkZXIuaXNFbXB0eSgpKSB7CiAgICAgICAg
IHRva2VuLnN0cmluZ0J1ZmZlciA9IFVTdHJpbmcoKTsKQEAgLTM3NiwxNSArMzg4LDE5IEBAIExp
dGVyYWxQYXJzZXI6OlRva2VuVHlwZSBMaXRlcmFsUGFyc2VyOjoKICAgICAgICAgLy8gWzAtOV0q
CiAgICAgICAgIHdoaWxlIChtX3B0ciA8IG1fZW5kICYmIGlzQVNDSUlEaWdpdCgqbV9wdHIpKQog
ICAgICAgICAgICAgKyttX3B0cjsKLSAgICB9IGVsc2UKKyAgICB9IGVsc2UgeworICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9ICJKU09OIExleGVyIGVycm9yOiBJbnZhbGlkIG51bWJlciI7CiAg
ICAgICAgIHJldHVybiBUb2tFcnJvcjsKKyAgICB9CiAKICAgICAvLyAoJy4nIFswLTldKyk/CiAg
ICAgaWYgKG1fcHRyIDwgbV9lbmQgJiYgKm1fcHRyID09ICcuJykgewogICAgICAgICArK21fcHRy
OwogICAgICAgICAvLyBbMC05XSsKLSAgICAgICAgaWYgKG1fcHRyID49IG1fZW5kIHx8ICFpc0FT
Q0lJRGlnaXQoKm1fcHRyKSkKKyAgICAgICAgaWYgKG1fcHRyID49IG1fZW5kIHx8ICFpc0FTQ0lJ
RGlnaXQoKm1fcHRyKSkgeworICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiSlNPTiBM
ZXhlciBlcnJvcjogSW52YWxpZCBudW1iZXI6IEludmFsaWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwg
cG9pbnQiOwogICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOworICAgICAgICB9CiAKICAgICAg
ICAgKyttX3B0cjsKICAgICAgICAgd2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNBU0NJSURpZ2l0
KCptX3B0cikpCkBAIC00MTYsOCArNDMyLDEwIEBAIExpdGVyYWxQYXJzZXI6OlRva2VuVHlwZSBM
aXRlcmFsUGFyc2VyOjoKICAgICAgICAgICAgICsrbV9wdHI7CiAKICAgICAgICAgLy8gWzAtOV0r
Ci0gICAgICAgIGlmIChtX3B0ciA+PSBtX2VuZCB8fCAhaXNBU0NJSURpZ2l0KCptX3B0cikpCisg
ICAgICAgIGlmIChtX3B0ciA+PSBtX2VuZCB8fCAhaXNBU0NJSURpZ2l0KCptX3B0cikpIHsKKyAg
ICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIkpTT04gTGV4ZXIgZXJyb3I6IEV4cG9uZW50
IHN5bWJvbHMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsICcrJyBvciAnLScgYW5k
IHRoZW4gYnkgYXQgbGVhc3Qgb25lIG51bWJlciI7CiAgICAgICAgICAgICByZXR1cm4gVG9rRXJy
b3I7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgICsrbV9wdHI7CiAgICAgICAgIHdoaWxl
IChtX3B0ciA8IG1fZW5kICYmIGlzQVNDSUlEaWdpdCgqbV9wdHIpKQpAQCAtNDU4LDggKzQ3Niwx
MCBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRlCiAgICAgICAgICAg
ICBjYXNlIERvUGFyc2VBcnJheVN0YXJ0RXhwcmVzc2lvbjogewogICAgICAgICAgICAgICAgIFRv
a2VuVHlwZSBsYXN0VG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGU7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpID09IFRva1JCcmFja2V0KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChsYXN0VG9rZW4gPT0gVG9rQ29tbWEpCisgICAgICAgICAgICAgICAgICAg
IGlmIChsYXN0VG9rZW4gPT0gVG9rQ29tbWEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiSlNPTiBQYXJzZSBlcnJvcjogVW5leHBlY3RlZCBjb21tYSBh
dCB0aGUgZW5kIG9mIGFycmF5IGV4cHJlc3Npb24iOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICBtX2xleGVyLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0gb2Jq
ZWN0U3RhY2subGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5yZW1vdmVM
YXN0KCk7CkBAIC00NzUsOCArNDk1LDEwIEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjo6cGFyc2Uo
UGFyc2VyU3RhdGUKICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50
eXBlID09IFRva0NvbW1hKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvUGFyc2VBcnJheVN0
YXJ0RXhwcmVzc2lvbjsKIAotICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tl
bigpLnR5cGUgIT0gVG9rUkJyYWNrZXQpCisgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3Vy
cmVudFRva2VuKCkudHlwZSAhPSBUb2tSQnJhY2tldCkgeworICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIkpTT04gUGFyc2UgZXJyb3I6IEV4cGVjdGVkIHJpZ2h0IGJy
YWNrZXQgYXQgZW5kIG9mIGFycmF5IGV4cHJlc3Npb24iOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKICAgICAgICAgICAgICAgICBsYXN0VmFsdWUg
PSBvYmplY3RTdGFjay5sYXN0KCk7CkBAIC00OTMsMTYgKzUxNSwyMCBAQCBKU1ZhbHVlIExpdGVy
YWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRlCiAgICAgICAgICAgICAgICAgICAgIExleGVyOjpM
aXRlcmFsUGFyc2VyVG9rZW4gaWRlbnRpZmllclRva2VuID0gbV9sZXhlci5jdXJyZW50VG9rZW4o
KTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgY29sb24KLSAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0NvbG9uKQorICAgICAgICAgICAgICAg
ICAgICBpZiAobV9sZXhlci5uZXh0KCkgIT0gVG9rQ29sb24pIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQg
Y29sb24gYmVmb3JlIHZhbHVlIGluIG9iamVjdCBkZWZpbml0aW9uIjsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXIubmV4dCgpOwogICAg
ICAgICAgICAgICAgICAgICBpZGVudGlmaWVyU3RhY2suYXBwZW5kKG1ha2VJZGVudGlmaWVyKGlk
ZW50aWZpZXJUb2tlbi5zdHJpbmdUb2tlbiwgaWRlbnRpZmllclRva2VuLnN0cmluZ0xlbmd0aCkp
OwogICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChEb1BhcnNlT2JqZWN0RW5k
RXhwcmVzc2lvbik7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Np
b247CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFRva1JC
cmFjZSkgCisgICAgICAgICAgICAgICAgaWYgKHR5cGUgIT0gVG9rUkJyYWNlKSAgeworICAgICAg
ICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkpTT04gUGFyc2UgZXJyb3I6IEV4
cGVjdGVkIHJpZ2h0IGJyYWNlIGF0IHRoZSBlbmQgb2Ygb2JqZWN0IGRlZmluaXRpb24iOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKICAgICAgICAgICAgICAgICBsYXN0VmFsdWUg
PSBvYmplY3RTdGFjay5sYXN0KCk7CiAgICAgICAgICAgICAgICAgb2JqZWN0U3RhY2sucmVtb3Zl
TGFzdCgpOwpAQCAtNTExLDEzICs1MzcsMTcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyOjpwYXJz
ZShQYXJzZXJTdGF0ZQogICAgICAgICAgICAgZG9QYXJzZU9iamVjdFN0YXJ0RXhwcmVzc2lvbjoK
ICAgICAgICAgICAgIGNhc2UgRG9QYXJzZU9iamVjdFN0YXJ0RXhwcmVzc2lvbjogewogICAgICAg
ICAgICAgICAgIFRva2VuVHlwZSB0eXBlID0gbV9sZXhlci5uZXh0KCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHR5cGUgIT0gVG9rU3RyaW5nICYmIChtX21vZGUgPT0gU3RyaWN0SlNPTiB8fCB0eXBl
ICE9IFRva0lkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFRva1N0cmlu
ZyAmJiAobV9tb2RlID09IFN0cmljdEpTT04gfHwgdHlwZSAhPSBUb2tJZGVudGlmaWVyKSkgewor
ICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkpTT04gUGFyc2UgZXJy
b3I6IFByb3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRlcmFsIjsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgTGV4ZXI6OkxpdGVyYWxQYXJzZXJUb2tlbiBpZGVudGlmaWVyVG9rZW4gPSBtX2xleGVy
LmN1cnJlbnRUb2tlbigpOwogCiAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGNvbG9uCi0g
ICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0NvbG9uKQorICAgICAgICAg
ICAgICAgIGlmIChtX2xleGVyLm5leHQoKSAhPSBUb2tDb2xvbikgeworICAgICAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkpTT04gUGFyc2UgZXJyb3I6IEV4cGVjdGVkIGNv
bG9uIGJlZm9yZSB2YWx1ZSBpbiBvYmplY3QgZGVmaW5pdGlvbiI7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAg
ICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgaWRlbnRpZmllclN0YWNrLmFwcGVu
ZChtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyVG9rZW4uc3RyaW5nVG9rZW4sIGlkZW50aWZpZXJU
b2tlbi5zdHJpbmdMZW5ndGgpKTsKQEAgLTUzMCw4ICs1NjAsMTAgQEAgSlNWYWx1ZSBMaXRlcmFs
UGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFj
ay5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2Vu
KCkudHlwZSA9PSBUb2tDb21tYSkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb1BhcnNlT2Jq
ZWN0U3RhcnRFeHByZXNzaW9uOwotICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRU
b2tlbigpLnR5cGUgIT0gVG9rUkJyYWNlKQorICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1
cnJlbnRUb2tlbigpLnR5cGUgIT0gVG9rUkJyYWNlKSB7CisgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgcmlnaHQgYnJh
Y2UgYXQgZW5kIG9mIG9iamVjdCBleHByZXNzaW9uIjsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9sZXhl
ci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0gb2JqZWN0U3RhY2subGFzdCgp
OwogICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLnJlbW92ZUxhc3QoKTsKQEAgLTU3MCw5ICs2
MDIsNDEgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAg
ICAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBsYXN0VmFsdWUgPSBqc0Jvb2xlYW4oZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2tldDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiSlNPTiBQYXJzZSBlcnJvcjog
Q291bGQgbm90IHBhcnNlIHJpZ2h0IGJyYWNrZXQiOworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2U6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkpTT04gUGFyc2Ug
ZXJyb3I6IENvdWxkIG5vdCBwYXJzZSByaWdodCBicmFjZSI7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0lkZW50
aWZpZXI6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gU3Ry
aW5nOjpmb3JtYXQoIkpTT04gUGFyc2UgZXJyb3I6IENvdWxkIG5vdCBwYXJzZSBcIiVzXCIiLCBV
U3RyaW5nKG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RyaW5nVG9rZW4pLmFzY2lpKCkuZGF0YSgp
KS5pbXBsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIFRva0NvbG9uOgorICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJKU09OIFBhcnNlIGVycm9yOiBDb3VsZCBub3QgcGFyc2Ug
Y29sb24iOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBUb2tMUGFyZW46CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIkpTT04gUGFyc2UgZXJyb3I6IENvdWxkIG5vdCBwYXJzZSBs
ZWZ0IHBhcmVudGhlc2lzIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rUlBhcmVuOgorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJKU09OIFBhcnNlIGVycm9yOiBDb3VsZCBu
b3QgcGFyc2UgcmlnaHQgcGFyZW50aGVzaXMiOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tDb21tYToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiSlNPTiBQYXJzZSBlcnJv
cjogQ291bGQgbm90IHBhcnNlIGNvbW1hIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRG90OgorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJKU09OIFBhcnNlIGVycm9yOiBD
b3VsZCBub3QgcGFyc2UgZG90IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQXNzaWduOgorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJKU09OIFBhcnNlIGVycm9yOiBDb3Vs
ZCBub3QgcGFyc2UgYXNzaWdubWVudCI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1NlbWk6CisgICAgICAgICAg
ICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkpTT04gUGFyc2UgZXJyb3I6IENv
dWxkIG5vdCBwYXJzZSBzZW1pY29sb24iOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tFbmQ6CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgVG9rRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBFcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJKU09OIFBhcnNlIGVycm9yOiBDb3VsZCBub3QgcGFyc2Ug
dmFsdWUgZXhwcmVzc2lvbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTU5MCwx
NSArNjU0LDE5IEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjo6cGFyc2UoUGFyc2VyU3RhdGUKICAg
ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiSlNPTiBzdGF0ZW1lbnQgbXVzdCBi
ZWdpbiB3aXRoIGEgWywgbnVtYmVyLCBzdHJpbmcsIG9yICgiOwogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIFN0YXJ0UGFyc2VTdGF0ZW1lbnRFbmRTdGF0ZW1lbnQ6IHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoc3RhdGVTdGFjay5pc0VtcHR5KCkpOwotICAgICAgICAgICAg
ICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgIT0gVG9rUlBhcmVuKQorICAgICAg
ICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgIT0gVG9rUlBhcmVuKSB7
CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiSlNPTiBQYXJzZSBl
cnJvcjogRXhwZWN0ZWQgcmlnaHQgcGFyZW50aGVzaXMgYWZ0ZXIgcHJvcGVydHkgbmFtZSBpbiBl
eHByZXNzaW9uIjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpID09IFRva0Vu
ZCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZTsKKyAgICAgICAgICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkpTT04gUGFyc2UgZXJyb3I6IFVuZXhwZWN0ZWQgY29u
dGVudCBhdCBlbmQgb2YgSlNPTiBsaXRlcmFsIjsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgJKHJldmlzaW9uIDkx
MzI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MywxNCArNDMsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgVVN0cmluZyBnZXRFcnJvck1lc3NhZ2Uo
KSB7IHJldHVybiBtX2xleGVyLnNhd0Vycm9yKCkgPyAgbV9sZXhlci5nZXRFcnJvck1lc3NhZ2Uo
KSA6IG1fcGFyc2VFcnJvck1lc3NhZ2U7fQorICAgICAgICAKICAgICAgICAgSlNWYWx1ZSB0cnlM
aXRlcmFsUGFyc2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKICAg
ICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gcGFyc2UobV9tb2RlID09IFN0cmljdEpTT04gPyBT
dGFydFBhcnNlRXhwcmVzc2lvbiA6IFN0YXJ0UGFyc2VTdGF0ZW1lbnQpOwogICAgICAgICAgICAg
aWYgKG1fbGV4ZXIuY3VycmVudFRva2VuKCkudHlwZSA9PSBUb2tTZW1pKQogICAgICAgICAgICAg
ICAgIG1fbGV4ZXIubmV4dCgpOwotICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2Vu
KCkudHlwZSAhPSBUb2tFbmQpCisgICAgICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9rZW4o
KS50eXBlICE9IFRva0VuZCkgeworICAgICAgICAgICAgICAgIGlmIChnZXRFcnJvck1lc3NhZ2Uo
KS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAi
SlNPTiBQYXJzZSBlcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nIjsKICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKQEAgLTExMiw3ICsxMTcsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fY3VycmVudFRva2VuOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgICAgICBib29sIHNhd0Vycm9yKCkgeyBy
ZXR1cm4gIW1fbGV4RXJyb3JNZXNzYWdlLmlzRW1wdHkoKTsgfQorICAgICAgICAgICAgVVN0cmlu
ZyBnZXRFcnJvck1lc3NhZ2UoKSB7IHJldHVybiBtX2xleEVycm9yTWVzc2FnZTsgfQorICAgICAg
ICAgICAgCiAgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBVU3RyaW5nIG1fbGV4RXJyb3JN
ZXNzYWdlOwogICAgICAgICAgICAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZT4gVG9rZW5UeXBl
IGxleChMaXRlcmFsUGFyc2VyVG9rZW4mKTsKICAgICAgICAgICAgIHRlbXBsYXRlIDxQYXJzZXJN
b2RlIG1vZGUsIFVDaGFyIHRlcm1pbmF0b3I+IEFMV0FZU19JTkxJTkUgVG9rZW5UeXBlIGxleFN0
cmluZyhMaXRlcmFsUGFyc2VyVG9rZW4mKTsKICAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgVG9r
ZW5UeXBlIGxleE51bWJlcihMaXRlcmFsUGFyc2VyVG9rZW4mKTsKQEAgLTEyOSw2ICsxMzgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY1N0YXRlKiBtX2V4ZWM7CiAgICAgICAgIExp
dGVyYWxQYXJzZXI6OkxleGVyIG1fbGV4ZXI7CiAgICAgICAgIFBhcnNlck1vZGUgbV9tb2RlOwor
ICAgICAgICBVU3RyaW5nIG1fcGFyc2VFcnJvck1lc3NhZ2U7CiAgICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBjb25zdCBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXIgPSAxMjg7CiAgICAgICAgIEZpeGVk
QXJyYXk8SWRlbnRpZmllciwgTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyPiBtX3Nob3J0SWRlbnRp
ZmllcnM7CiAgICAgICAgIEZpeGVkQXJyYXk8SWRlbnRpZmllciwgTWF4aW11bUNhY2hhYmxlQ2hh
cmFjdGVyPiBtX3JlY2VudElkZW50aWZpZXJzOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTE2MjApCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAxMS0wNy0yMiAgSnVhbiBDLiBNb250ZW1heW9yICA8am1vbnRAYXBwbGUuY29tPgorCisgICAg
ICAgIEpTT04gZXJyb3JzIHNob3VsZCBiZSBpbmZvcm1hdGl2ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMzMzkKKworICAgICAgICBVcGRhdGVkIGV4
cGVjdGVkIHRlc3QgcmVzdWx0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvanMvSlNPTi1wYXJzZS1leHBlY3RlZC50eHQ6CisKIDIwMTEt
MDctMjIgIFNlcmdleSBHbGF6dW5vdiAgPHNlcmcuZ2xhenVub3ZAZ21haWwuY29tPgogCiAgICAg
ICAgIFBlcmZvcm0gdGhlIEphdmFTY3JpcHQgbmF2aWdhdGlvbiBjaGVjayBvbiBhIGNvbXBsZXRl
IFVSTApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9KU09OLXBhcnNlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL0pTT04tcGFyc2UtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA5MTMyOSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvSlNPTi1wYXJzZS1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBAIFBBU1MgdGVzdHNbaV0obmF0
aXZlSlNPTikgdGhyZXcgZXhjZXB0aW8KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAg
IHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2
ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04g
c3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IENvdWxkIG5vdCBwYXJzZSB2YWx1ZSBleHByZXNzaW9u
LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJzEnKTsKICAgICB9CkBAIC0xNywxMSArMTcsMTEgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0
ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0
dXJuIGpzb25PYmplY3QucGFyc2UoJ0luZmluaXR5Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShu
YXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBK
U09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBDb3VsZCBub3QgcGFyc2UgIkluZmluaXR5PyIu
CiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJz
ZSgnTmFOJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNb
aV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVy
cm9yOiBDb3VsZCBub3QgcGFyc2UgIk5hTiIuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAg
ICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnbnVsbCcpOwogICAgIH0KQEAgLTI5LDcgKzI5
LDcgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3VuZGVmaW5l
ZCcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5h
dGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjog
Q291bGQgbm90IHBhcnNlICJ1bmRlZmluZWQiLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAg
ICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3t9Jyk7CiAgICAgfQpAQCAtMzcsMzEgKzM3
LDMxIEBAIFBBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9u
IChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcoe30pJyk7
CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBDb3Vs
ZCBub3QgcGFyc2UgbGVmdCBwYXJlbnRoZXNpcy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7YX0nKTsKICAgICB9Ci1QQVNTIHRlc3Rz
W2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBh
cnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IEV4cGVjdGVkIHJpZ2h0IGJyYWNlIGF0
IHRoZSBlbmQgb2Ygb2JqZWN0IGRlZmluaXRpb24uCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewog
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgne2E6fScpOwogICAgIH0KLVBBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8g
cGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgcmlnaHQgYnJhY2Ug
YXQgdGhlIGVuZCBvZiBvYmplY3QgZGVmaW5pdGlvbi4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7YTo1fScpOwogICAgIH0KLVBBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgcmlnaHQgYnJh
Y2UgYXQgdGhlIGVuZCBvZiBvYmplY3QgZGVmaW5pdGlvbi4KIGZ1bmN0aW9uIChqc29uT2JqZWN0
KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7YTo1LH0nKTsKICAgICB9Ci1Q
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5h
YmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IEV4cGVjdGVkIHJpZ2h0
IGJyYWNlIGF0IHRoZSBlbmQgb2Ygb2JqZWN0IGRlZmluaXRpb24uCiBmdW5jdGlvbiAoanNvbk9i
amVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJhIn0nKTsKICAgICB9
Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
VW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IEV4cGVjdGVkIGNv
bG9uIGJlZm9yZSB2YWx1ZSBpbiBvYmplY3QgZGVmaW5pdGlvbi4KIGZ1bmN0aW9uIChqc29uT2Jq
ZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7ImEiOn0nKTsKICAgICB9
Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
VW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IENvdWxkIG5vdCBw
YXJzZSByaWdodCBicmFjZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVy
biBqc29uT2JqZWN0LnBhcnNlKCd7ImEiOjV9Jyk7CiAgICAgfQpAQCAtNzMsMjAgKzczLDIwIEBA
IFBBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9uIChqc29u
T2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7ImEiOjUsfScpOwog
ICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogUHJvcGVy
dHkgbmFtZSBtdXN0IGJlIGEgc3RyaW5nIGxpdGVyYWwuCiBqc29uMi5qcyBkaWQgbm90IHRocm93
IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
ICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6NSwsfScpOwogICAgIH0KLVBB
U1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFi
bGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogUHJvcGVydHkgbmFtZSBt
dXN0IGJlIGEgc3RyaW5nIGxpdGVyYWwuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJhIjo1LCJhIix9Jyk7CiAgICAgfQotUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0
byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBFeHBlY3RlZCBjb2xvbiBiZWZv
cmUgdmFsdWUgaW4gb2JqZWN0IGRlZmluaXRpb24uCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewog
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJhIjooNSwiYSIpLH0nKTsKICAgICB9
Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
VW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IENvdWxkIG5vdCBw
YXJzZSBsZWZ0IHBhcmVudGhlc2lzLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAg
cmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ1tdJyk7CiAgICAgfQpAQCAtOTgsNyArOTgsNyBAQCBQ
QVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9i
amVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnWzEsXScpOwogICAgIH0K
LVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBV
bmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5leHBlY3RlZCBj
b21tYSBhdCB0aGUgZW5kIG9mIGFycmF5IGV4cHJlc3Npb24uCiBqc29uMi5qcyBkaWQgbm90IHRo
cm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgogZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ1sxLDJdJyk7CkBAIC0xMDcsMTIg
KzEwNywxMiBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5j
dGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnWzEs
MiwsXScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJv
cjogQ291bGQgbm90IHBhcnNlIGNvbW1hLgoganNvbjIuanMgZGlkIG5vdCB0aHJvdyBmb3IgYSB0
ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAg
IHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbMSwyLCw0XScpOwogICAgIH0KLVBBU1MgdGVzdHNb
aV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFy
c2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogQ291bGQgbm90IHBhcnNlIGNvbW1hLgog
anNvbjIuanMgZGlkIG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1
bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCci
IicpOwpAQCAtMTI5LDE1ICsxMjksMTUgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShu
YXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoJyJhXFwiJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4K
K1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBK
U09OIExleGVyIGVycm9yOiBVbnRlcm1pbmF0ZWQgc3RyaW5nLgogZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx6IicpOwogICAgIH0K
LVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBV
bmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBMZXhlciBlcnJvcjogVW5hYmxlIHRvIHJl
YWQgc3RyaW5nLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoJyJhXFxceiInKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5n
LgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IEpTT04gTGV4ZXIgZXJyb3I6IFVuYWJsZSB0byByZWFkIHN0cmluZy4KIGZ1bmN0aW9uIChqc29u
T2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcXFx6IicpOwog
ICAgIH0KQEAgLTE1Myw3ICsxNTMsNyBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5h
dGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9i
amVjdC5wYXJzZSgnImFcbnoiJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4K
K1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBK
U09OIExleGVyIGVycm9yOiBVbnRlcm1pbmF0ZWQgc3RyaW5nLgogZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFxueiInKTsKICAgICB9
CkBAIC0xNjEsNyArMTYxLDcgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVK
U09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJyJhXHJ6IicpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNT
IHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBM
ZXhlciBlcnJvcjogVW50ZXJtaW5hdGVkIHN0cmluZy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxccnoiJyk7CiAgICAgfQpAQCAt
MTc3LDcgKzE3Nyw3IEBAIFBBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikK
IGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KCciYVxieiInKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gTGV4ZXIg
ZXJyb3I6IFVudGVybWluYXRlZCBzdHJpbmcuCiBqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBh
IHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFxieiInKTsKQEAgLTE4Niw3ICsxODYsNyBA
QCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNv
bk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFccnoiJyk7CiAg
ICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIExleGVyIGVycm9yOiBVbnRlcm1p
bmF0ZWQgc3RyaW5nLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJyJhXFxyeiInKTsKICAgICB9CkBAIC0xOTQsMTkgKzE5NCwxOSBAQCBQ
QVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9i
amVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHV6IiAgICAgJyk7
CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIExleGVyIGVycm9yOiAiXHV6
IiAgIiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0
KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTB6IiAgICAnKTsKICAg
ICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09O
KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gTGV4ZXIgZXJyb3I6ICJcdTB6IiAi
IGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
ICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDB6IiAgICcpOwogICAgIH0K
LVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBV
bmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBMZXhlciBlcnJvcjogIlx1MDB6IiIgaXMg
bm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAg
ICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwMDB6IiAgJyk7CiAgICAgfQotUEFT
UyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJs
ZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIExleGVyIGVycm9yOiAiXHUwMDB6IiBpcyBub3Qg
YSB2YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAg
IHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwMDB6IiAnKTsKICAgICB9CkBAIC0yMjIs
MTEgKzIyMiwxMSBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBm
dW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgn
ImFcXHUwMDBHeiIgJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIExl
eGVyIGVycm9yOiAiXHUwMDBHIiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0
aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxc
dTAwMGd6IiAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gTGV4ZXIg
ZXJyb3I6ICJcdTAwMGciIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlLgogZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDBB
MHoiICcpOwogICAgIH0KQEAgLTIzOCwxMSArMjM4LDExIEBAIFBBU1MgSlNPTi5zdHJpbmdpZnko
dGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJl
dHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwRzB6IiAnKTsKICAgICB9Ci1QQVNTIHRlc3Rz
W2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBh
cnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IEpTT04gTGV4ZXIgZXJyb3I6ICJcdTAwRzAiIGlzIG5vdCBhIHZhbGlk
IHVuaWNvZGUgZXNjYXBlLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDBnMHoiICcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0o
bmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2Ug
SlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogSlNPTiBMZXhlciBlcnJvcjogIlx1MDBnMCIgaXMgbm90IGEgdmFsaWQgdW5p
Y29kZSBlc2NhcGUuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgnImFcXHUwQTAweiIgJyk7CiAgICAgfQpAQCAtMjU0LDExICsyNTQsMTEg
QEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MEcwMHoi
ICcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5h
dGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBMZXhlciBlcnJvcjog
Ilx1MEcwMCIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUuCiBmdW5jdGlvbiAoanNvbk9i
amVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwZzAweiIgJyk7
CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIExleGVyIGVycm9yOiAiXHUw
ZzAwIiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0
KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdUEwMDB6IiAnKTsKICAg
ICB9CkBAIC0yNzAsNzEgKzI3MCw3MSBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5h
dGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9i
amVjdC5wYXJzZSgnImFcXHVHMDAweiIgJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0
cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBKU09OIExleGVyIGVycm9yOiAiXHVHMDAwIiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVz
Y2FwZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKCciYVxcdWcwMDB6IiAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5n
LgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IEpTT04gTGV4ZXIgZXJyb3I6ICJcdWcwMDAiIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBl
LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJzAwJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNb
aV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVy
cm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCiBqc29uMi5qcyBkaWQgbm90IHRocm93
IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
ICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzAxJyk7CiAgICAgfQotUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBw
YXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmcuCiBqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRo
cm93LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJzAuYScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRl
c3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBMZXhl
ciBlcnJvcjogSW52YWxpZCBudW1iZXI6IEludmFsaWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwgcG9p
bnQuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgnMHgwJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNl
IGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCiBmdW5jdGlvbiAoanNvbk9iamVj
dCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMmUxLjMnKTsKICAgICB9Ci1Q
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5h
YmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuYWJsZSB0byBwYXJz
ZSBKU09OIHN0cmluZy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBq
c29uT2JqZWN0LnBhcnNlKCcyZS0rMTAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IEpTT04gTGV4ZXIgZXJyb3I6IEV4cG9uZW50IHN5bWJvbHMgc2hvdWxkIGJlIGZvbGxvd2Vk
IGJ5IGFuIG9wdGlvbmFsICcrJyBvciAnLScgYW5kIHRoZW4gYnkgYXQgbGVhc3Qgb25lIG51bWJl
ci4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCcyZSstMTAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gTGV4
ZXIgZXJyb3I6IEV4cG9uZW50IHN5bWJvbHMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGFuIG9wdGlv
bmFsICcrJyBvciAnLScgYW5kIHRoZW4gYnkgYXQgbGVhc3Qgb25lIG51bWJlci4KIGZ1bmN0aW9u
IChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcyZTNlNCcp
OwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2
ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5h
YmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJy0wMS4wJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tp
XShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJz
ZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJp
bmcuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgnLTAxJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNl
IGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCiBqc29uMi5qcyBkaWQgbm90IHRo
cm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgogZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJy0wMS5hJyk7CiAgICAgfQotUEFT
UyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJs
ZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIExleGVyIGVycm9yOiBJbnZhbGlkIG51bWJlcjog
SW52YWxpZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2ludC4KIGZ1bmN0aW9uIChqc29uT2JqZWN0
KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcxLmUxJyk7CiAgICAgfQotUEFT
UyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJs
ZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIExleGVyIGVycm9yOiBJbnZhbGlkIG51bWJlcjog
SW52YWxpZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2ludC4KIGpzb24yLmpzIGRpZCBub3QgdGhy
b3cgZm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkg
ewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgney8qIGJsb2NrIGNvbW1lbnRzIGFy
ZSBub3QgYWxsb3dlZCAqL30nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgor
UEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpT
T04gTGV4ZXIgZXJyb3I6IFVucmVjb2duaXplZCB0b2tlbiAnLycuCiBmdW5jdGlvbiAoanNvbk9i
amVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgney8vIGxpbmUgY29tbWVu
dHMgYXJlIG5vdCBhbGxvd2VkIFxufScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJp
bmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogSlNPTiBMZXhlciBlcnJvcjogVW5yZWNvZ25pemVkIHRva2VuICcvJy4KIGZ1bmN0aW9uIChq
c29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd0cnVlJyk7CiAg
ICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101797</attachid>
            <date>2011-07-22 17:57:49 -0700</date>
            <delta_ts>2011-07-22 22:46:09 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>bug-63339-20110722175748.patch</filename>
            <type>text/plain</type>
            <size>34404</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE2MjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTEtMDctMjIgIEp1YW4gQy4gTW9udGVtYXlvciAgPGptb250QGFwcGxlLmNvbT4KKworICAg
ICAgICBKU09OIGVycm9ycyBzaG91bGQgYmUgaW5mb3JtYXRpdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMzM5CisKKyAgICAgICAgQWRkZWQgZXJy
b3IgbWVzc2FnZXMgdG8gdGhlIEpTT04gUGFyc2VyLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNPTlByb3RvRnVuY1BhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyOjpMZXhlcjo6bGV4KToKKyAg
ICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjo6TGV4ZXI6OmxleFN0cmluZyk6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI6OkxleGVyOjpsZXhOdW1iZXIpOgorICAgICAgICAoSlNDOjpMaXRl
cmFsUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmg6Cisg
ICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OmdldEVycm9yTWVzc2FnZSk6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI6OkxleGVyOjpzYXdFcnJvcik6CisgICAgICAgIChKU0M6OkxpdGVy
YWxQYXJzZXI6OkxleGVyOjpnZXRFcnJvck1lc3NhZ2UpOgorCiAyMDExLTA3LTIyICBTb21tZXIg
UGFuYWdlICA8cGFuYWdlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIg
SHVudC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCShyZXZpc2lvbiA5MTMyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTksNyArODE5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdQogICAgIExpdGVyYWxQYXJzZXIganNvblBh
cnNlcihleGVjLCBzb3VyY2UuY2hhcmFjdGVycygpLCBzb3VyY2UubGVuZ3RoKCksIExpdGVyYWxQ
YXJzZXI6OlN0cmljdEpTT04pOwogICAgIEpTVmFsdWUgdW5maWx0ZXJlZCA9IGpzb25QYXJzZXIu
dHJ5TGl0ZXJhbFBhcnNlKCk7CiAgICAgaWYgKCF1bmZpbHRlcmVkKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJVbmFibGUgdG8gcGFy
c2UgSlNPTiBzdHJpbmciKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNlci5nZXRFcnJvck1lc3NhZ2UoKSkpOwogICAg
IAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHVuZmlsdGVyZWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHJldmlzaW9uIDkxMzI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzNiwxMSArMjM2LDE0IEBAIHRlbXBsYXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJNb2Rl
IG1vZGUKICAgICAgICAgICAgIHJldHVybiBUb2tJZGVudGlmaWVyOwogICAgICAgICB9CiAgICAg
ICAgIGlmICgqbV9wdHIgPT0gJ1wnJykgewotICAgICAgICAgICAgaWYgKG1vZGUgPT0gU3RyaWN0
SlNPTikKKyAgICAgICAgICAgIGlmIChtb2RlID09IFN0cmljdEpTT04pIHsKKyAgICAgICAgICAg
ICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJTaW5nbGUgcXVvdGVzIChcJykgYXJlIG5vdCBhbGxv
d2VkIGluIEpTT04iOwogICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJldHVybiBsZXhTdHJpbmc8bW9kZSwgJ1wnJz4odG9rZW4pOwog
ICAgICAgICB9CiAgICAgfQorICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQo
IlVucmVjb2duaXplZCB0b2tlbiAnJWMnIiwgKm1fcHRyKS5pbXBsKCk7CiAgICAgcmV0dXJuIFRv
a0Vycm9yOwogfQogCkBAIC0yNzQsOCArMjc3LDEwIEBAIHRlbXBsYXRlIDxMaXRlcmFsUGFyc2Vy
OjpQYXJzZXJNb2RlIG1vZGUKICAgICAgICAgICAgIGlmIChidWlsZGVyLmlzRW1wdHkoKSAmJiBy
dW5TdGFydCA8IG1fcHRyKQogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJ1blN0YXJ0
LCBtX3B0ciAtIHJ1blN0YXJ0KTsKICAgICAgICAgICAgICsrbV9wdHI7Ci0gICAgICAgICAgICBp
ZiAobV9wdHIgPj0gbV9lbmQpCisgICAgICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQpIHsKKyAg
ICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIjsK
ICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBzd2l0Y2ggKCptX3B0cikgewogICAgICAgICAgICAgICAgIGNhc2UgJyInOgogICAgICAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwpAQCAtMzExLDExICszMTYsMTUgQEAg
dGVtcGxhdGUgPExpdGVyYWxQYXJzZXI6OlBhcnNlck1vZGUgbW9kZQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgICAg
ICAgICBpZiAoKG1fZW5kIC0gbV9wdHIpIDwgNSkgLy8gdU5OTk4gPT0gNSBjaGFyYWN0ZXJzCisg
ICAgICAgICAgICAgICAgICAgIGlmICgobV9lbmQgLSBtX3B0cikgPCA1KSB7IAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiXFx1IG11c3QgYmUgZm9sbG93ZWQg
YnkgNCBoZXggZGlnaXRzIjsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJv
cjsKKyAgICAgICAgICAgICAgICAgICAgfSAvLyB1Tk5OTiA9PSA1IGNoYXJhY3RlcnMKICAgICAg
ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCA1OyBpKyspIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KG1fcHRyW2ldKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KG1fcHRyW2ldKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlwi
XFwlc1wiIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlIiwgVVN0cmluZyhtX3B0ciwgNSku
YXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gVG9rRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoSlNDOjpMZXhlcjo6Y29u
dmVydFVuaWNvZGUobV9wdHJbMV0sIG1fcHRyWzJdLCBtX3B0clszXSwgbV9wdHJbNF0pKTsKICAg
ICAgICAgICAgICAgICAgICAgbV9wdHIgKz0gNTsKQEAgLTMyNywxMyArMzM2LDE2IEBAIHRlbXBs
YXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJNb2RlIG1vZGUKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcHRyKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IFN0cmlu
Zzo6Zm9ybWF0KCJJbnZhbGlkIGVzY2FwZSBjaGFyYWN0ZXIgJWMiLCAqbV9wdHIpLmltcGwoKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfSB3aGlsZSAoKG1vZGUgIT0gTm9uU3RyaWN0SlNPTikgJiYgbV9wdHIgIT0g
cnVuU3RhcnQgJiYgKG1fcHRyIDwgbV9lbmQpICYmICptX3B0ciAhPSB0ZXJtaW5hdG9yKTsKIAot
ICAgIGlmIChtX3B0ciA+PSBtX2VuZCB8fCAqbV9wdHIgIT0gdGVybWluYXRvcikKKyAgICBpZiAo
bV9wdHIgPj0gbV9lbmQgfHwgKm1fcHRyICE9IHRlcm1pbmF0b3IpIHsKKyAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSAiVW50ZXJtaW5hdGVkIHN0cmluZyI7CiAgICAgICAgIHJldHVybiBUb2tF
cnJvcjsKKyAgICB9CiAKICAgICBpZiAoYnVpbGRlci5pc0VtcHR5KCkpIHsKICAgICAgICAgdG9r
ZW4uc3RyaW5nQnVmZmVyID0gVVN0cmluZygpOwpAQCAtMzc2LDE1ICszODgsMTkgQEAgTGl0ZXJh
bFBhcnNlcjo6VG9rZW5UeXBlIExpdGVyYWxQYXJzZXI6OgogICAgICAgICAvLyBbMC05XSoKICAg
ICAgICAgd2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNBU0NJSURpZ2l0KCptX3B0cikpCiAgICAg
ICAgICAgICArK21fcHRyOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CisgICAgICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gIkludmFsaWQgbnVtYmVyIjsKICAgICAgICAgcmV0dXJuIFRva0Vycm9y
OworICAgIH0KIAogICAgIC8vICgnLicgWzAtOV0rKT8KICAgICBpZiAobV9wdHIgPCBtX2VuZCAm
JiAqbV9wdHIgPT0gJy4nKSB7CiAgICAgICAgICsrbV9wdHI7CiAgICAgICAgIC8vIFswLTldKwot
ICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKQorICAg
ICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7CisgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJJbnZhbGlkIGRpZ2l0cyBhZnRlciBkZWNpbWFs
IHBvaW50IjsKICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKKyAgICAgICAgfQogCiAgICAg
ICAgICsrbV9wdHI7CiAgICAgICAgIHdoaWxlIChtX3B0ciA8IG1fZW5kICYmIGlzQVNDSUlEaWdp
dCgqbV9wdHIpKQpAQCAtNDE2LDggKzQzMiwxMCBAQCBMaXRlcmFsUGFyc2VyOjpUb2tlblR5cGUg
TGl0ZXJhbFBhcnNlcjo6CiAgICAgICAgICAgICArK21fcHRyOwogCiAgICAgICAgIC8vIFswLTld
KwotICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKQor
ICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7Cisg
ICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJFeHBvbmVudCBzeW1ib2xzIHNob3VsZCBi
ZSBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCAnKycgb3IgJy0nIGFuZCB0aGVuIGJ5IGF0IGxlYXN0
IG9uZSBudW1iZXIiOwogICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOworICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICArK21fcHRyOwogICAgICAgICB3aGlsZSAobV9wdHIgPCBtX2VuZCAm
JiBpc0FTQ0lJRGlnaXQoKm1fcHRyKSkKQEAgLTQ1OCw4ICs0NzYsMTAgQEAgSlNWYWx1ZSBMaXRl
cmFsUGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAgICAgICAgY2FzZSBEb1BhcnNlQXJy
YXlTdGFydEV4cHJlc3Npb246IHsKICAgICAgICAgICAgICAgICBUb2tlblR5cGUgbGFzdFRva2Vu
ID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlOwogICAgICAgICAgICAgICAgIGlmIChtX2xl
eGVyLm5leHQoKSA9PSBUb2tSQnJhY2tldCkgewotICAgICAgICAgICAgICAgICAgICBpZiAobGFz
dFRva2VuID09IFRva0NvbW1hKQorICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFRva2VuID09
IFRva0NvbW1hKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgY29tbWEgYXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uIjsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAg
ICAgICAgIGxhc3RWYWx1ZSA9IG9iamVjdFN0YWNrLmxhc3QoKTsKICAgICAgICAgICAgICAgICAg
ICAgb2JqZWN0U3RhY2sucmVtb3ZlTGFzdCgpOwpAQCAtNDc1LDggKzQ5NSwxMCBAQCBKU1ZhbHVl
IExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRlCiAgICAgICAgICAgICAgICAgaWYgKG1f
bGV4ZXIuY3VycmVudFRva2VuKCkudHlwZSA9PSBUb2tDb21tYSkKICAgICAgICAgICAgICAgICAg
ICAgZ290byBkb1BhcnNlQXJyYXlTdGFydEV4cHJlc3Npb247CiAKLSAgICAgICAgICAgICAgICBp
ZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlICE9IFRva1JCcmFja2V0KQorICAgICAgICAg
ICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgIT0gVG9rUkJyYWNrZXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCByaWdo
dCBicmFja2V0IGF0IGVuZCBvZiBhcnJheSBleHByZXNzaW9uIjsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgbGFzdFZh
bHVlID0gb2JqZWN0U3RhY2subGFzdCgpOwpAQCAtNDkzLDE2ICs1MTUsMjAgQEAgSlNWYWx1ZSBM
aXRlcmFsUGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAgICAgICAgICAgICAgICBMZXhl
cjo6TGl0ZXJhbFBhcnNlclRva2VuIGlkZW50aWZpZXJUb2tlbiA9IG1fbGV4ZXIuY3VycmVudFRv
a2VuKCk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGNvbG9uCi0gICAgICAg
ICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSAhPSBUb2tDb2xvbikKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0NvbG9uKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkIGNvbG9uIGJlZm9yZSB2
YWx1ZSBpbiBvYmplY3QgZGVmaW5pdGlvbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKICAgICAgICAgICAgICAgICAg
ICAgaWRlbnRpZmllclN0YWNrLmFwcGVuZChtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyVG9rZW4u
c3RyaW5nVG9rZW4sIGlkZW50aWZpZXJUb2tlbi5zdHJpbmdMZW5ndGgpKTsKICAgICAgICAgICAg
ICAgICAgICAgc3RhdGVTdGFjay5hcHBlbmQoRG9QYXJzZU9iamVjdEVuZEV4cHJlc3Npb24pOwog
ICAgICAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0UGFyc2VFeHByZXNzaW9uOwogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAodHlwZSAhPSBUb2tSQnJhY2UpIAorICAgICAg
ICAgICAgICAgIGlmICh0eXBlICE9IFRva1JCcmFjZSkgIHsKKyAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCByaWdodCBicmFjZSBhdCB0aGUgZW5kIG9m
IG9iamVjdCBkZWZpbml0aW9uIjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAg
ICAgICAgICAgICAgICAgbGFzdFZhbHVlID0gb2JqZWN0U3RhY2subGFzdCgpOwogICAgICAgICAg
ICAgICAgIG9iamVjdFN0YWNrLnJlbW92ZUxhc3QoKTsKQEAgLTUxMSwxMyArNTM3LDE3IEBAIEpT
VmFsdWUgTGl0ZXJhbFBhcnNlcjo6cGFyc2UoUGFyc2VyU3RhdGUKICAgICAgICAgICAgIGRvUGFy
c2VPYmplY3RTdGFydEV4cHJlc3Npb246CiAgICAgICAgICAgICBjYXNlIERvUGFyc2VPYmplY3RT
dGFydEV4cHJlc3Npb246IHsKICAgICAgICAgICAgICAgICBUb2tlblR5cGUgdHlwZSA9IG1fbGV4
ZXIubmV4dCgpOwotICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFRva1N0cmluZyAmJiAobV9t
b2RlID09IFN0cmljdEpTT04gfHwgdHlwZSAhPSBUb2tJZGVudGlmaWVyKSkKKyAgICAgICAgICAg
ICAgICBpZiAodHlwZSAhPSBUb2tTdHJpbmcgJiYgKG1fbW9kZSA9PSBTdHJpY3RKU09OIHx8IHR5
cGUgIT0gVG9rSWRlbnRpZmllcikpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9ICJQcm9wZXJ0eSBuYW1lIG11c3QgYmUgYSBzdHJpbmcgbGl0ZXJhbCI7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIExleGVyOjpMaXRlcmFsUGFyc2VyVG9rZW4gaWRlbnRpZmllclRva2VuID0g
bV9sZXhlci5jdXJyZW50VG9rZW4oKTsKIAogICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBj
b2xvbgotICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSAhPSBUb2tDb2xvbikKKyAg
ICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgIT0gVG9rQ29sb24pIHsKKyAgICAgICAg
ICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCBjb2xvbiBiZWZvcmUg
dmFsdWUgaW4gb2JqZWN0IGRlZmluaXRpb24iOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOworICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIG1fbGV4ZXIu
bmV4dCgpOwogICAgICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFjay5hcHBlbmQobWFrZUlkZW50
aWZpZXIoaWRlbnRpZmllclRva2VuLnN0cmluZ1Rva2VuLCBpZGVudGlmaWVyVG9rZW4uc3RyaW5n
TGVuZ3RoKSk7CkBAIC01MzAsOCArNTYwLDEwIEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjo6cGFy
c2UoUGFyc2VyU3RhdGUKICAgICAgICAgICAgICAgICBpZGVudGlmaWVyU3RhY2sucmVtb3ZlTGFz
dCgpOwogICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgPT0g
VG9rQ29tbWEpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9QYXJzZU9iamVjdFN0YXJ0RXhw
cmVzc2lvbjsKLSAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBl
ICE9IFRva1JCcmFjZSkKKyAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9rZW4o
KS50eXBlICE9IFRva1JCcmFjZSkgeworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JN
ZXNzYWdlID0gIkV4cGVjdGVkIHJpZ2h0IGJyYWNlIGF0IGVuZCBvZiBvYmplY3QgZXhwcmVzc2lv
biI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIG1fbGV4ZXIubmV4dCgpOwogICAgICAgICAgICAgICAgIGxh
c3RWYWx1ZSA9IG9iamVjdFN0YWNrLmxhc3QoKTsKICAgICAgICAgICAgICAgICBvYmplY3RTdGFj
ay5yZW1vdmVMYXN0KCk7CkBAIC01NzAsOSArNjAyLDQzIEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNl
cjo6cGFyc2UoUGFyc2VyU3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXIubmV4
dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0ganNCb29sZWFuKGZhbHNl
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCisgICAgICAgICAgICAgICAgICAg
IGNhc2UgVG9rUkJyYWNrZXQ6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JN
ZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ10nIjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rUkJyYWNlOgor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICd9JyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0lkZW50aWZpZXI6CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIkNvdWxkIG5vdCBw
YXJzZSBcIiVzXCIiLCBVU3RyaW5nKG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RyaW5nVG9rZW4p
LmFzY2lpKCkuZGF0YSgpKS5pbXBsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0NvbG9uOgorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6
JyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIFRva0xQYXJlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKCciOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tS
UGFyZW46CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVu
ZXhwZWN0ZWQgdG9rZW4gJyknIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQ29tbWE6CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJywnIjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgVG9rRG90OgorICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcuJyI7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0Fzc2lnbjoK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3Rl
ZCB0b2tlbiAnPSciOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tTZW1pOgorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc7JyI7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBj
YXNlIFRva0VuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCBFT0YiOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tFcnJvcjoKICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVycm9yCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkNvdWxkIG5vdCBwYXJzZSB2
YWx1ZSBleHByZXNzaW9uIjsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg5LDcg
KzY1NSw1MSBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRlCiAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChTdGFydFBhcnNlU3RhdGVtZW50
RW5kU3RhdGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4
cHJlc3Npb247CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBUb2tSQnJhY2tldDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3Nh
Z2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tMQnJhY2U6CisgICAg
ICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9r
ZW4gJ3snIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgVG9rUkJyYWNlOgorICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICd9JyI7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNl
IFRva0lkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNz
YWdlID0gU3RyaW5nOjpmb3JtYXQoIkNvdWxkIG5vdCBwYXJzZSBcIiVzXCIiLCBVU3RyaW5nKG1f
bGV4ZXIuY3VycmVudFRva2VuKCkuc3RyaW5nVG9rZW4pLmFzY2lpKCkuZGF0YSgpKS5pbXBsKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIFRva0NvbG9uOgorICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVy
cm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6JyI7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1JQYXJl
bjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBl
Y3RlZCB0b2tlbiAnKSciOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tDb21tYToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLCciOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBUb2tUcnVlOgorICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVz
c2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICd0cnVlJyI7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0ZhbHNlOgor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICdmYWxzZSciOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tOdWxsOgorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICdudWxsJyI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIFRva0VuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1l
c3NhZ2UgPSAiVW5leHBlY3RlZCBFT0YiOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tEb3Q6CisgICAgICAgICAg
ICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJy4n
IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgVG9rQXNzaWduOgorICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc9JyI7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1Nl
bWk6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhw
ZWN0ZWQgdG9rZW4gJzsnIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRXJyb3I6CiAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIkNvdWxkIG5vdCBwYXJzZSBzdGF0ZW1lbnQiOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC01
OTksNiArNzA5LDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgIGlm
IChtX2xleGVyLm5leHQoKSA9PSBUb2tFbmQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBs
YXN0VmFsdWU7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVj
dGVkIGNvbnRlbnQgYXQgZW5kIG9mIEpTT04gbGl0ZXJhbCI7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRlZmF1bHQ6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCShyZXZp
c2lvbiA5MTMyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJz
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgVVN0cmluZyBnZXRFcnJvck1l
c3NhZ2UoKSAKKyAgICAgICAgeyAKKyAgICAgICAgICAgIGlmIChtX3BhcnNlRXJyb3JNZXNzYWdl
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuYWJs
ZSB0byBwYXJzZSBKU09OIHN0cmluZyI7CisgICAgICAgICAgICBVU3RyaW5nIGVycm9yTWVzc2Fn
ZSA9IG1fbGV4ZXIuc2F3RXJyb3IoKSA/ICBtX2xleGVyLmdldEVycm9yTWVzc2FnZSgpIDogbV9w
YXJzZUVycm9yTWVzc2FnZTsKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiSlNP
TiBQYXJzZSBlcnJvcjogJXMiLCBlcnJvck1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpLmltcGwoKTsK
KyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgSlNWYWx1ZSB0cnlMaXRlcmFsUGFyc2UoKQog
ICAgICAgICB7CiAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKQEAgLTExMiw3ICsxMjAsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fY3VycmVudFRva2Vu
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgICAgICBib29sIHNhd0Vycm9y
KCkgeyByZXR1cm4gIW1fbGV4RXJyb3JNZXNzYWdlLmlzRW1wdHkoKTsgfQorICAgICAgICAgICAg
VVN0cmluZyBnZXRFcnJvck1lc3NhZ2UoKSB7IHJldHVybiBtX2xleEVycm9yTWVzc2FnZTsgfQor
ICAgICAgICAgICAgCiAgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBVU3RyaW5nIG1fbGV4
RXJyb3JNZXNzYWdlOwogICAgICAgICAgICAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZT4gVG9r
ZW5UeXBlIGxleChMaXRlcmFsUGFyc2VyVG9rZW4mKTsKICAgICAgICAgICAgIHRlbXBsYXRlIDxQ
YXJzZXJNb2RlIG1vZGUsIFVDaGFyIHRlcm1pbmF0b3I+IEFMV0FZU19JTkxJTkUgVG9rZW5UeXBl
IGxleFN0cmluZyhMaXRlcmFsUGFyc2VyVG9rZW4mKTsKICAgICAgICAgICAgIEFMV0FZU19JTkxJ
TkUgVG9rZW5UeXBlIGxleE51bWJlcihMaXRlcmFsUGFyc2VyVG9rZW4mKTsKQEAgLTEyOSw2ICsx
NDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY1N0YXRlKiBtX2V4ZWM7CiAgICAg
ICAgIExpdGVyYWxQYXJzZXI6OkxleGVyIG1fbGV4ZXI7CiAgICAgICAgIFBhcnNlck1vZGUgbV9t
b2RlOworICAgICAgICBVU3RyaW5nIG1fcGFyc2VFcnJvck1lc3NhZ2U7CiAgICAgICAgIHN0YXRp
YyB1bnNpZ25lZCBjb25zdCBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXIgPSAxMjg7CiAgICAgICAg
IEZpeGVkQXJyYXk8SWRlbnRpZmllciwgTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyPiBtX3Nob3J0
SWRlbnRpZmllcnM7CiAgICAgICAgIEZpeGVkQXJyYXk8SWRlbnRpZmllciwgTWF4aW11bUNhY2hh
YmxlQ2hhcmFjdGVyPiBtX3JlY2VudElkZW50aWZpZXJzOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTE2
MjgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NCBAQAorMjAxMS0wNy0yMiAgSnVhbiBDLiBNb250ZW1heW9yICA8am1vbnRAYXBwbGUuY29tPgor
CisgICAgICAgIEpTT04gZXJyb3JzIHNob3VsZCBiZSBpbmZvcm1hdGl2ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMzMzkKKworICAgICAgICBVcGRh
dGVkIGV4cGVjdGVkIHRlc3QgcmVzdWx0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvanMvSlNPTi1wYXJzZS1leHBlY3RlZC50eHQ6CisK
IDIwMTEtMDctMjIgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAg
IEhUTUxJbWFnZUVsZW1lbnQ6OmNyb3NzT3JpZ2luIGlzIGhhcmQgdG8gdXNlIGJlY2F1c2Ugb2Yg
Y2FjaGluZwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9KU09OLXBhcnNlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL0pTT04tcGFyc2UtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA5MTMyOSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvSlNPTi1wYXJzZS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBAIFBBU1MgdGVzdHNbaV0o
bmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW8KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAg
ICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5h
dGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpT
T04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuZXhwZWN0ZWQgRU9GLgogZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzEnKTsKICAgICB9
CkBAIC0xNywxMSArMTcsMTEgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVK
U09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJ0luZmluaXR5Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BB
U1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09O
IFBhcnNlIGVycm9yOiBDb3VsZCBub3QgcGFyc2UgIkluZmluaXR5PyIuCiBmdW5jdGlvbiAoanNv
bk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnTmFOJyk7CiAgICAg
fQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBDb3VsZCBub3Qg
cGFyc2UgIk5hTiIuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgnbnVsbCcpOwogICAgIH0KQEAgLTI5LDcgKzI5LDcgQEAgUEFTUyBKU09O
LnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
ICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3VuZGVmaW5lZCcpOwogICAgIH0KLVBB
U1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFi
bGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogQ291bGQgbm90IHBhcnNl
ICJ1bmRlZmluZWQiLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJ3t9Jyk7CiAgICAgfQpAQCAtMzcsMzEgKzM3LDMxIEBAIFBBU1MgSlNP
Ti5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcoe30pJyk7CiAgICAgfQotUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0
byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbmV4cGVjdGVkIHRva2VuICco
Jy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCd7YX0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2Ug
ZXJyb3I6IEV4cGVjdGVkIHJpZ2h0IGJyYWNlIGF0IHRoZSBlbmQgb2Ygb2JqZWN0IGRlZmluaXRp
b24uCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgne2E6fScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRl
c3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJz
ZSBlcnJvcjogRXhwZWN0ZWQgcmlnaHQgYnJhY2UgYXQgdGhlIGVuZCBvZiBvYmplY3QgZGVmaW5p
dGlvbi4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKCd7YTo1fScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNT
IHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQ
YXJzZSBlcnJvcjogRXhwZWN0ZWQgcmlnaHQgYnJhY2UgYXQgdGhlIGVuZCBvZiBvYmplY3QgZGVm
aW5pdGlvbi4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCd7YTo1LH0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgor
UEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpT
T04gUGFyc2UgZXJyb3I6IEV4cGVjdGVkIHJpZ2h0IGJyYWNlIGF0IHRoZSBlbmQgb2Ygb2JqZWN0
IGRlZmluaXRpb24uCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgneyJhIn0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5n
LgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IEpTT04gUGFyc2UgZXJyb3I6IEV4cGVjdGVkIGNvbG9uIGJlZm9yZSB2YWx1ZSBpbiBvYmplY3Qg
ZGVmaW5pdGlvbi4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29u
T2JqZWN0LnBhcnNlKCd7ImEiOn0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5n
LgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IEpTT04gUGFyc2UgZXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJ30nLgogZnVuY3Rpb24gKGpzb25P
YmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6NX0nKTsKICAg
ICB9CkBAIC03MywyMCArNzMsMjAgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRp
dmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmpl
Y3QucGFyc2UoJ3siYSI6NSx9Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4K
K1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBK
U09OIFBhcnNlIGVycm9yOiBQcm9wZXJ0eSBuYW1lIG11c3QgYmUgYSBzdHJpbmcgbGl0ZXJhbC4K
IGpzb24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cuCiBm
dW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgn
eyJhIjo1LCx9Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNl
IGVycm9yOiBQcm9wZXJ0eSBuYW1lIG11c3QgYmUgYSBzdHJpbmcgbGl0ZXJhbC4KIGZ1bmN0aW9u
IChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7ImEiOjUs
ImEiLH0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tp
XShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJy
b3I6IEV4cGVjdGVkIGNvbG9uIGJlZm9yZSB2YWx1ZSBpbiBvYmplY3QgZGVmaW5pdGlvbi4KIGZ1
bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7
ImEiOig1LCJhIiksfScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNT
IHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQ
YXJzZSBlcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnKCcuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkg
ewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnW10nKTsKICAgICB9CkBAIC05OCw3
ICs5OCw3IEBAIFBBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0
aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbMSxd
Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0
aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBV
bmV4cGVjdGVkIGNvbW1hIGF0IHRoZSBlbmQgb2YgYXJyYXkgZXhwcmVzc2lvbi4KIGpzb24yLmpz
IGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cuCiBmdW5jdGlvbiAo
anNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnWzEsMl0nKTsK
QEAgLTEwNywxMiArMTA3LDEyIEBAIFBBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZl
SlNPTikKIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKCdbMSwyLCxdJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BB
U1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09O
IFBhcnNlIGVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcsJy4KIGpzb24yLmpzIGRpZCBub3QgdGhy
b3cgZm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkg
ewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnWzEsMiwsNF0nKTsKICAgICB9Ci1Q
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5h
YmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuZXhwZWN0ZWQgdG9r
ZW4gJywnLgoganNvbjIuanMgZGlkIG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0
aHJvdy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKCciIicpOwpAQCAtMTI5LDE1ICsxMjksMTUgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0
ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0
dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFwiJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbnRlcm1pbmF0ZWQgc3RyaW5nLgogZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx6Iicp
OwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2
ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogSW52
YWxpZCBlc2NhcGUgY2hhcmFjdGVyIHouCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXFx6IicpOwogICAgIH0KLVBBU1MgdGVzdHNb
aV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFy
c2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogSW52YWxpZCBlc2NhcGUgY2hhcmFjdGVy
IHouCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgnImFcXFxceiInKTsKICAgICB9CkBAIC0xNTMsNyArMTUzLDcgQEAgUEFTUyBKU09OLnN0
cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAg
ICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXG56IicpOwogICAgIH0KLVBBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8g
cGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW50ZXJtaW5hdGVkIHN0cmluZy4K
IGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KCciYVxcbnoiJyk7CiAgICAgfQpAQCAtMTYxLDcgKzE2MSw3IEBAIFBBU1MgSlNPTi5zdHJpbmdp
ZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAg
IHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxyeiInKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNl
IEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVudGVybWluYXRlZCBzdHJpbmcuCiBmdW5j
dGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFc
XHJ6IicpOwogICAgIH0KQEAgLTE3Nyw3ICsxNzcsNyBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRl
c3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1
cm4ganNvbk9iamVjdC5wYXJzZSgnImFcYnoiJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbnRlcm1pbmF0ZWQgc3RyaW5nLgoganNvbjIuanMg
ZGlkIG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1bmN0aW9uIChq
c29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcYnoiJyk7
CkBAIC0xODYsNyArMTg2LDcgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVK
U09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJyJhXHJ6IicpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNT
IHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQ
YXJzZSBlcnJvcjogVW50ZXJtaW5hdGVkIHN0cmluZy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxccnoiJyk7CiAgICAgfQpAQCAt
MTk0LDE5ICsxOTQsMTkgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09O
KQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJyJhXFx1eiIgICAgICcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQ
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNP
TiBQYXJzZSBlcnJvcjogIlx1eiIgICIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUuCiBm
dW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgn
ImFcXHUweiIgICAgJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBh
cnNlIGVycm9yOiAiXHUweiIgIiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0
aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxc
dTAweiIgICAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2Ug
ZXJyb3I6ICJcdTAweiIiIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlLgogZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDAw
eiIgICcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJv
cjogIlx1MDAweiIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUuCiBmdW5jdGlvbiAoanNv
bk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwMDAweiIg
Jyk7CiAgICAgfQpAQCAtMjIyLDExICsyMjIsMTEgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0
c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDAwR3oiICcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0o
bmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2Ug
SlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogIlx1MDAwRyIgaXMgbm90IGEgdmFsaWQgdW5p
Y29kZSBlc2NhcGUuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgnImFcXHUwMDBneiIgJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiAiXHUwMDBnIiBpcyBub3QgYSB2YWxpZCB1bmljb2Rl
IGVzY2FwZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCciYVxcdTAwQTB6IiAnKTsKICAgICB9CkBAIC0yMzgsMTEgKzIzOCwxMSBAQCBQ
QVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9i
amVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwMEcweiIgJyk7
CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiAiXHUw
MEcwIiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0
KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwZzB6IiAnKTsKICAg
ICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09O
KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6ICJcdTAwZzAi
IGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
ICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MEEwMHoiICcpOwogICAgIH0K
QEAgLTI1NCwxMSArMjU0LDExIEBAIFBBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZl
SlNPTikKIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKCciYVxcdTBHMDB6IiAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5n
LgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IEpTT04gUGFyc2UgZXJyb3I6ICJcdTBHMDAiIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBl
LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJyJhXFx1MGcwMHoiICcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQ
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNP
TiBQYXJzZSBlcnJvcjogIlx1MGcwMCIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUuCiBm
dW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgn
ImFcXHVBMDAweiIgJyk7CiAgICAgfQpAQCAtMjcwLDcxICsyNzAsNzEgQEAgUEFTUyBKU09OLnN0
cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAg
ICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1RzAwMHoiICcpOwogICAgIH0KLVBB
U1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFi
bGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogIlx1RzAwMCIgaXMgbm90
IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHVnMDAweiIgJyk7CiAgICAgfQotUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0
byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiAiXHVnMDAwIiBpcyBub3QgYSB2
YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJl
dHVybiBqc29uT2JqZWN0LnBhcnNlKCcwMCcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgoganNv
bjIuanMgZGlkIG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1bmN0
aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcwMScp
OwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2
ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5h
YmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgoganNvbjIuanMgZGlkIG5vdCB0aHJvdyBmb3IgYSB0
ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAg
IHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcwLmEnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5h
dGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpT
T04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IEludmFsaWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwg
cG9pbnQuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVj
dC5wYXJzZSgnMHgwJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBh
cnNlIGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCiBmdW5jdGlvbiAoanNvbk9i
amVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMmUxLjMnKTsKICAgICB9
Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
VW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuYWJsZSB0byBw
YXJzZSBKU09OIHN0cmluZy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVy
biBqc29uT2JqZWN0LnBhcnNlKCcyZS0rMTAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2
ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04g
c3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IEV4cG9uZW50IHN5bWJvbHMgc2hvdWxkIGJlIGZvbGxv
d2VkIGJ5IGFuIG9wdGlvbmFsICcrJyBvciAnLScgYW5kIHRoZW4gYnkgYXQgbGVhc3Qgb25lIG51
bWJlci4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKCcyZSstMTAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFT
UyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04g
UGFyc2UgZXJyb3I6IEV4cG9uZW50IHN5bWJvbHMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGFuIG9w
dGlvbmFsICcrJyBvciAnLScgYW5kIHRoZW4gYnkgYXQgbGVhc3Qgb25lIG51bWJlci4KIGZ1bmN0
aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcyZTNl
NCcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5h
dGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjog
VW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAg
ICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJy0wMS4wJyk7CiAgICAgfQotUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBw
YXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmcuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVj
dC5wYXJzZSgnLTAxJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBh
cnNlIGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCiBqc29uMi5qcyBkaWQgbm90
IHRocm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgogZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJy0wMS5hJyk7CiAgICAgfQot
UEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVu
YWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBJbnZhbGlkIGRpZ2l0
cyBhZnRlciBkZWNpbWFsIHBvaW50LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAg
cmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzEuZTEnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5h
dGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpT
T04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IEludmFsaWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwg
cG9pbnQuCiBqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRo
cm93LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJ3svKiBibG9jayBjb21tZW50cyBhcmUgbm90IGFsbG93ZWQgKi99Jyk7CiAgICAgfQot
UEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVu
YWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbnJlY29nbml6ZWQg
dG9rZW4gJy8nLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoJ3svLyBsaW5lIGNvbW1lbnRzIGFyZSBub3QgYWxsb3dlZCBcbn0nKTsKICAg
ICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09O
KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVucmVjb2du
aXplZCB0b2tlbiAnLycuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgndHJ1ZScpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101805</attachid>
            <date>2011-07-22 22:46:14 -0700</date>
            <delta_ts>2011-07-25 10:59:14 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>bug-63339-20110722224613.patch</filename>
            <type>text/plain</type>
            <size>34115</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE2MzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTEtMDctMjIgIEp1YW4gQy4gTW9udGVtYXlvciAgPGptb250QGFwcGxlLmNvbT4KKworICAg
ICAgICBKU09OIGVycm9ycyBzaG91bGQgYmUgaW5mb3JtYXRpdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMzM5CisKKyAgICAgICAgQWRkZWQgZXJy
b3IgbWVzc2FnZXMgdG8gdGhlIEpTT04gUGFyc2VyLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNPTlByb3RvRnVuY1BhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyOjpMZXhlcjo6bGV4KToKKyAg
ICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjo6TGV4ZXI6OmxleFN0cmluZyk6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI6OkxleGVyOjpsZXhOdW1iZXIpOgorICAgICAgICAoSlNDOjpMaXRl
cmFsUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmg6Cisg
ICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OmdldEVycm9yTWVzc2FnZSk6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI6OkxleGVyOjpzYXdFcnJvcik6CisgICAgICAgIChKU0M6OkxpdGVy
YWxQYXJzZXI6OkxleGVyOjpnZXRFcnJvck1lc3NhZ2UpOgorCiAyMDExLTA3LTIyICBTb21tZXIg
UGFuYWdlICA8cGFuYWdlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIg
SHVudC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCShyZXZpc2lvbiA5MTMyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTksNyArODE5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdQogICAgIExpdGVyYWxQYXJzZXIganNvblBh
cnNlcihleGVjLCBzb3VyY2UuY2hhcmFjdGVycygpLCBzb3VyY2UubGVuZ3RoKCksIExpdGVyYWxQ
YXJzZXI6OlN0cmljdEpTT04pOwogICAgIEpTVmFsdWUgdW5maWx0ZXJlZCA9IGpzb25QYXJzZXIu
dHJ5TGl0ZXJhbFBhcnNlKCk7CiAgICAgaWYgKCF1bmZpbHRlcmVkKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJVbmFibGUgdG8gcGFy
c2UgSlNPTiBzdHJpbmciKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNlci5nZXRFcnJvck1lc3NhZ2UoKSkpOwogICAg
IAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHVuZmlsdGVyZWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHJldmlzaW9uIDkxMzI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzNiwxMSArMjM2LDE0IEBAIHRlbXBsYXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJNb2Rl
IG1vZGUKICAgICAgICAgICAgIHJldHVybiBUb2tJZGVudGlmaWVyOwogICAgICAgICB9CiAgICAg
ICAgIGlmICgqbV9wdHIgPT0gJ1wnJykgewotICAgICAgICAgICAgaWYgKG1vZGUgPT0gU3RyaWN0
SlNPTikKKyAgICAgICAgICAgIGlmIChtb2RlID09IFN0cmljdEpTT04pIHsKKyAgICAgICAgICAg
ICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJTaW5nbGUgcXVvdGVzIChcJykgYXJlIG5vdCBhbGxv
d2VkIGluIEpTT04iOwogICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJldHVybiBsZXhTdHJpbmc8bW9kZSwgJ1wnJz4odG9rZW4pOwog
ICAgICAgICB9CiAgICAgfQorICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQo
IlVucmVjb2duaXplZCB0b2tlbiAnJWMnIiwgKm1fcHRyKS5pbXBsKCk7CiAgICAgcmV0dXJuIFRv
a0Vycm9yOwogfQogCkBAIC0yNzQsOCArMjc3LDEwIEBAIHRlbXBsYXRlIDxMaXRlcmFsUGFyc2Vy
OjpQYXJzZXJNb2RlIG1vZGUKICAgICAgICAgICAgIGlmIChidWlsZGVyLmlzRW1wdHkoKSAmJiBy
dW5TdGFydCA8IG1fcHRyKQogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJ1blN0YXJ0
LCBtX3B0ciAtIHJ1blN0YXJ0KTsKICAgICAgICAgICAgICsrbV9wdHI7Ci0gICAgICAgICAgICBp
ZiAobV9wdHIgPj0gbV9lbmQpCisgICAgICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQpIHsKKyAg
ICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIjsK
ICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBzd2l0Y2ggKCptX3B0cikgewogICAgICAgICAgICAgICAgIGNhc2UgJyInOgogICAgICAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwpAQCAtMzExLDExICszMTYsMTUgQEAg
dGVtcGxhdGUgPExpdGVyYWxQYXJzZXI6OlBhcnNlck1vZGUgbW9kZQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgICAg
ICAgICBpZiAoKG1fZW5kIC0gbV9wdHIpIDwgNSkgLy8gdU5OTk4gPT0gNSBjaGFyYWN0ZXJzCisg
ICAgICAgICAgICAgICAgICAgIGlmICgobV9lbmQgLSBtX3B0cikgPCA1KSB7IAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiXFx1IG11c3QgYmUgZm9sbG93ZWQg
YnkgNCBoZXggZGlnaXRzIjsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJv
cjsKKyAgICAgICAgICAgICAgICAgICAgfSAvLyB1Tk5OTiA9PSA1IGNoYXJhY3RlcnMKICAgICAg
ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCA1OyBpKyspIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KG1fcHRyW2ldKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KG1fcHRyW2ldKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlwi
XFwlc1wiIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlIiwgVVN0cmluZyhtX3B0ciwgNSku
YXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gVG9rRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoSlNDOjpMZXhlcjo6Y29u
dmVydFVuaWNvZGUobV9wdHJbMV0sIG1fcHRyWzJdLCBtX3B0clszXSwgbV9wdHJbNF0pKTsKICAg
ICAgICAgICAgICAgICAgICAgbV9wdHIgKz0gNTsKQEAgLTMyNywxMyArMzM2LDE2IEBAIHRlbXBs
YXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJNb2RlIG1vZGUKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcHRyKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IFN0cmlu
Zzo6Zm9ybWF0KCJJbnZhbGlkIGVzY2FwZSBjaGFyYWN0ZXIgJWMiLCAqbV9wdHIpLmltcGwoKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfSB3aGlsZSAoKG1vZGUgIT0gTm9uU3RyaWN0SlNPTikgJiYgbV9wdHIgIT0g
cnVuU3RhcnQgJiYgKG1fcHRyIDwgbV9lbmQpICYmICptX3B0ciAhPSB0ZXJtaW5hdG9yKTsKIAot
ICAgIGlmIChtX3B0ciA+PSBtX2VuZCB8fCAqbV9wdHIgIT0gdGVybWluYXRvcikKKyAgICBpZiAo
bV9wdHIgPj0gbV9lbmQgfHwgKm1fcHRyICE9IHRlcm1pbmF0b3IpIHsKKyAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSAiVW50ZXJtaW5hdGVkIHN0cmluZyI7CiAgICAgICAgIHJldHVybiBUb2tF
cnJvcjsKKyAgICB9CiAKICAgICBpZiAoYnVpbGRlci5pc0VtcHR5KCkpIHsKICAgICAgICAgdG9r
ZW4uc3RyaW5nQnVmZmVyID0gVVN0cmluZygpOwpAQCAtMzc2LDE1ICszODgsMTkgQEAgTGl0ZXJh
bFBhcnNlcjo6VG9rZW5UeXBlIExpdGVyYWxQYXJzZXI6OgogICAgICAgICAvLyBbMC05XSoKICAg
ICAgICAgd2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNBU0NJSURpZ2l0KCptX3B0cikpCiAgICAg
ICAgICAgICArK21fcHRyOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CisgICAgICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gIkludmFsaWQgbnVtYmVyIjsKICAgICAgICAgcmV0dXJuIFRva0Vycm9y
OworICAgIH0KIAogICAgIC8vICgnLicgWzAtOV0rKT8KICAgICBpZiAobV9wdHIgPCBtX2VuZCAm
JiAqbV9wdHIgPT0gJy4nKSB7CiAgICAgICAgICsrbV9wdHI7CiAgICAgICAgIC8vIFswLTldKwot
ICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKQorICAg
ICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7CisgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJJbnZhbGlkIGRpZ2l0cyBhZnRlciBkZWNpbWFs
IHBvaW50IjsKICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKKyAgICAgICAgfQogCiAgICAg
ICAgICsrbV9wdHI7CiAgICAgICAgIHdoaWxlIChtX3B0ciA8IG1fZW5kICYmIGlzQVNDSUlEaWdp
dCgqbV9wdHIpKQpAQCAtNDE2LDggKzQzMiwxMCBAQCBMaXRlcmFsUGFyc2VyOjpUb2tlblR5cGUg
TGl0ZXJhbFBhcnNlcjo6CiAgICAgICAgICAgICArK21fcHRyOwogCiAgICAgICAgIC8vIFswLTld
KwotICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKQor
ICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7Cisg
ICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJFeHBvbmVudCBzeW1ib2xzIHNob3VsZCBi
ZSBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCAnKycgb3IgJy0nIGFuZCB0aGVuIGJ5IGF0IGxlYXN0
IG9uZSBudW1iZXIiOwogICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOworICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICArK21fcHRyOwogICAgICAgICB3aGlsZSAobV9wdHIgPCBtX2VuZCAm
JiBpc0FTQ0lJRGlnaXQoKm1fcHRyKSkKQEAgLTQ1OCw4ICs0NzYsMTAgQEAgSlNWYWx1ZSBMaXRl
cmFsUGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAgICAgICAgY2FzZSBEb1BhcnNlQXJy
YXlTdGFydEV4cHJlc3Npb246IHsKICAgICAgICAgICAgICAgICBUb2tlblR5cGUgbGFzdFRva2Vu
ID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlOwogICAgICAgICAgICAgICAgIGlmIChtX2xl
eGVyLm5leHQoKSA9PSBUb2tSQnJhY2tldCkgewotICAgICAgICAgICAgICAgICAgICBpZiAobGFz
dFRva2VuID09IFRva0NvbW1hKQorICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFRva2VuID09
IFRva0NvbW1hKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgY29tbWEgYXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uIjsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAg
ICAgICAgIGxhc3RWYWx1ZSA9IG9iamVjdFN0YWNrLmxhc3QoKTsKICAgICAgICAgICAgICAgICAg
ICAgb2JqZWN0U3RhY2sucmVtb3ZlTGFzdCgpOwpAQCAtNDc1LDggKzQ5NSwxMCBAQCBKU1ZhbHVl
IExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRlCiAgICAgICAgICAgICAgICAgaWYgKG1f
bGV4ZXIuY3VycmVudFRva2VuKCkudHlwZSA9PSBUb2tDb21tYSkKICAgICAgICAgICAgICAgICAg
ICAgZ290byBkb1BhcnNlQXJyYXlTdGFydEV4cHJlc3Npb247CiAKLSAgICAgICAgICAgICAgICBp
ZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlICE9IFRva1JCcmFja2V0KQorICAgICAgICAg
ICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgIT0gVG9rUkJyYWNrZXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCAnXSci
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKICAg
ICAgICAgICAgICAgICBsYXN0VmFsdWUgPSBvYmplY3RTdGFjay5sYXN0KCk7CkBAIC00OTMsMTYg
KzUxNSwyMCBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRlCiAgICAg
ICAgICAgICAgICAgICAgIExleGVyOjpMaXRlcmFsUGFyc2VyVG9rZW4gaWRlbnRpZmllclRva2Vu
ID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBDaGVj
ayBmb3IgY29sb24KLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRv
a0NvbG9uKQorICAgICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgIT0gVG9rQ29s
b24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhw
ZWN0ZWQgJzonIGJlZm9yZSB2YWx1ZSBpbiBvYmplY3QgcHJvcGVydHkgZGVmaW5pdGlvbiI7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBtX2xleGVy
Lm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllclN0YWNrLmFwcGVuZChtYWtl
SWRlbnRpZmllcihpZGVudGlmaWVyVG9rZW4uc3RyaW5nVG9rZW4sIGlkZW50aWZpZXJUb2tlbi5z
dHJpbmdMZW5ndGgpKTsKICAgICAgICAgICAgICAgICAgICAgc3RhdGVTdGFjay5hcHBlbmQoRG9Q
YXJzZU9iamVjdEVuZEV4cHJlc3Npb24pOwogICAgICAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0
UGFyc2VFeHByZXNzaW9uOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAo
dHlwZSAhPSBUb2tSQnJhY2UpIAorICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFRva1JCcmFj
ZSkgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3Rl
ZCAnfSciOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKICAgICAgICAgICAgICAg
ICBsYXN0VmFsdWUgPSBvYmplY3RTdGFjay5sYXN0KCk7CiAgICAgICAgICAgICAgICAgb2JqZWN0
U3RhY2sucmVtb3ZlTGFzdCgpOwpAQCAtNTExLDEzICs1MzcsMTcgQEAgSlNWYWx1ZSBMaXRlcmFs
UGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAgICAgICAgZG9QYXJzZU9iamVjdFN0YXJ0
RXhwcmVzc2lvbjoKICAgICAgICAgICAgIGNhc2UgRG9QYXJzZU9iamVjdFN0YXJ0RXhwcmVzc2lv
bjogewogICAgICAgICAgICAgICAgIFRva2VuVHlwZSB0eXBlID0gbV9sZXhlci5uZXh0KCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHR5cGUgIT0gVG9rU3RyaW5nICYmIChtX21vZGUgPT0gU3RyaWN0
SlNPTiB8fCB0eXBlICE9IFRva0lkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIGlmICh0eXBl
ICE9IFRva1N0cmluZyAmJiAobV9tb2RlID09IFN0cmljdEpTT04gfHwgdHlwZSAhPSBUb2tJZGVu
dGlmaWVyKSkgeworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlBy
b3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRlcmFsIjsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
TGV4ZXI6OkxpdGVyYWxQYXJzZXJUb2tlbiBpZGVudGlmaWVyVG9rZW4gPSBtX2xleGVyLmN1cnJl
bnRUb2tlbigpOwogCiAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGNvbG9uCi0gICAgICAg
ICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0NvbG9uKQorICAgICAgICAgICAgICAg
IGlmIChtX2xleGVyLm5leHQoKSAhPSBUb2tDb2xvbikgeworICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICc6JyI7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
bV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgaWRlbnRpZmllclN0YWNrLmFwcGVuZCht
YWtlSWRlbnRpZmllcihpZGVudGlmaWVyVG9rZW4uc3RyaW5nVG9rZW4sIGlkZW50aWZpZXJUb2tl
bi5zdHJpbmdMZW5ndGgpKTsKQEAgLTUzMCw4ICs1NjAsMTAgQEAgSlNWYWx1ZSBMaXRlcmFsUGFy
c2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFjay5y
ZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2VuKCku
dHlwZSA9PSBUb2tDb21tYSkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb1BhcnNlT2JqZWN0
U3RhcnRFeHByZXNzaW9uOwotICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tl
bigpLnR5cGUgIT0gVG9rUkJyYWNlKQorICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJl
bnRUb2tlbigpLnR5cGUgIT0gVG9rUkJyYWNlKSB7CisgICAgICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJ30nIjsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9sZXhl
ci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0gb2JqZWN0U3RhY2subGFzdCgp
OwogICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLnJlbW92ZUxhc3QoKTsKQEAgLTU3MCw5ICs2
MDIsNDMgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAg
ICAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBsYXN0VmFsdWUgPSBqc0Jvb2xlYW4oZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2tldDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAn
XSciOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2U6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ30nIjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9r
SWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSBTdHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCBpZGVudGlmaWVyIFwiJXNcIiIsIFVTdHJpbmco
bV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdHJpbmdUb2tlbikuYXNjaWkoKS5kYXRhKCkpLmltcGwo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgVG9rQ29sb246CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzonIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rTFBh
cmVuOgorICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIHRva2VuICcoJyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1JQYXJlbjoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKSciOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSBUb2tDb21tYToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLCciOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tEb3Q6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQg
dG9rZW4gJy4nIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQXNzaWduOgorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc9JyI7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBj
YXNlIFRva1NlbWk6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRW5kOgorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIEVPRiI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIFRva0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gRXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiQ291bGQgbm90IHBhcnNlIHZhbHVlIGV4cHJlc3Npb24iOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01ODksNyArNjU1LDUxIEBAIEpTVmFsdWUgTGl0
ZXJhbFBhcnNlcjo6cGFyc2UoUGFyc2VyU3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRlU3RhY2suYXBwZW5kKFN0YXJ0UGFyc2VTdGF0ZW1lbnRFbmRTdGF0ZW1lbnQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgZ290byBzdGFydFBhcnNlRXhwcmVzc2lvbjsKICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1JCcmFja2V0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICddJyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIFRva0xCcmFjZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAneyciOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBU
b2tSQnJhY2U6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
IlVuZXhwZWN0ZWQgdG9rZW4gJ30nIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rSWRlbnRpZmllcjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgi
VW5leHBlY3RlZCBpZGVudGlmaWVyIFwiJXNcIiIsIFVTdHJpbmcobV9sZXhlci5jdXJyZW50VG9r
ZW4oKS5zdHJpbmdUb2tlbikuYXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9r
Q29sb246CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVu
ZXhwZWN0ZWQgdG9rZW4gJzonIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rUlBhcmVuOgorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcpJyI7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIFRva0NvbW1hOgorICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVy
cm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcsJyI7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1RydWU6
CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0
ZWQgdG9rZW4gJ3RydWUnIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRmFsc2U6CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ2ZhbHNlJyI7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIFRva051bGw6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ251bGwnIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRW5k
OgorICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVj
dGVkIEVPRiI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIFRva0RvdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLiciOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBU
b2tBc3NpZ246CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
IlVuZXhwZWN0ZWQgdG9rZW4gJz0nIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rU2VtaToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnOyci
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUb2tFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiQ291bGQgbm90IHBh
cnNlIHN0YXRlbWVudCI7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTU5OSw2ICs3MDksNyBAQCBK
U1ZhbHVlIExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRlCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgp
ID09IFRva0VuZCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZTsKKyAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29udGVudCBhdCBl
bmQgb2YgSlNPTiBsaXRlcmFsIjsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgJKHJldmlzaW9uIDkxMzI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw2ICs0MywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAg
ICB9CiAgICAgICAgIAorICAgICAgICBVU3RyaW5nIGdldEVycm9yTWVzc2FnZSgpIAorICAgICAg
ICB7IAorICAgICAgICAgICAgaWYgKG1fcGFyc2VFcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5hYmxlIHRvIHBhcnNlIEpTT04g
c3RyaW5nIjsKKyAgICAgICAgICAgIFVTdHJpbmcgZXJyb3JNZXNzYWdlID0gbV9sZXhlci5zYXdF
cnJvcigpID8gIG1fbGV4ZXIuZ2V0RXJyb3JNZXNzYWdlKCkgOiBtX3BhcnNlRXJyb3JNZXNzYWdl
OworICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJKU09OIFBhcnNlIGVycm9yOiAl
cyIsIGVycm9yTWVzc2FnZS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOworICAgICAgICB9CisgICAg
ICAgIAogICAgICAgICBKU1ZhbHVlIHRyeUxpdGVyYWxQYXJzZSgpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIG1fbGV4ZXIubmV4dCgpOwpAQCAtMTEyLDcgKzEyMCwxMSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgICAgICByZXR1cm4gbV9jdXJyZW50VG9rZW47CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgc2F3RXJyb3IoKSB7IHJldHVybiAhbV9s
ZXhFcnJvck1lc3NhZ2UuaXNFbXB0eSgpOyB9CisgICAgICAgICAgICBVU3RyaW5nIGdldEVycm9y
TWVzc2FnZSgpIHsgcmV0dXJuIG1fbGV4RXJyb3JNZXNzYWdlOyB9CisgICAgICAgICAgICAKICAg
ICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIFVTdHJpbmcgbV9sZXhFcnJvck1lc3NhZ2U7CiAg
ICAgICAgICAgICB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2RlPiBUb2tlblR5cGUgbGV4KExpdGVy
YWxQYXJzZXJUb2tlbiYpOwogICAgICAgICAgICAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZSwg
VUNoYXIgdGVybWluYXRvcj4gQUxXQVlTX0lOTElORSBUb2tlblR5cGUgbGV4U3RyaW5nKExpdGVy
YWxQYXJzZXJUb2tlbiYpOwogICAgICAgICAgICAgQUxXQVlTX0lOTElORSBUb2tlblR5cGUgbGV4
TnVtYmVyKExpdGVyYWxQYXJzZXJUb2tlbiYpOwpAQCAtMTI5LDYgKzE0MSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBFeGVjU3RhdGUqIG1fZXhlYzsKICAgICAgICAgTGl0ZXJhbFBhcnNl
cjo6TGV4ZXIgbV9sZXhlcjsKICAgICAgICAgUGFyc2VyTW9kZSBtX21vZGU7CisgICAgICAgIFVT
dHJpbmcgbV9wYXJzZUVycm9yTWVzc2FnZTsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGNvbnN0
IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlciA9IDEyODsKICAgICAgICAgRml4ZWRBcnJheTxJZGVu
dGlmaWVyLCBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXI+IG1fc2hvcnRJZGVudGlmaWVyczsKICAg
ICAgICAgRml4ZWRBcnJheTxJZGVudGlmaWVyLCBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXI+IG1f
cmVjZW50SWRlbnRpZmllcnM7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MTYzMSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA3LTIy
ICBKdWFuIEMuIE1vbnRlbWF5b3IgIDxqbW9udEBhcHBsZS5jb20+CisKKyAgICAgICAgSlNPTiBl
cnJvcnMgc2hvdWxkIGJlIGluZm9ybWF0aXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MzMzOQorCisgICAgICAgIFVwZGF0ZWQgZXhwZWN0ZWQgdGVz
dCByZXN1bHRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9qcy9KU09OLXBhcnNlLWV4cGVjdGVkLnR4dDoKKwogMjAxMS0wNy0yMiAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgY3Jhc2hpbmcgYW5k
IGZhaWxpbmcgZXhwZWN0YXRpb25zIGZvciBjYW52YXMgYW5kIGNzcyB0ZXN0cyBhZnRlciByOTE2
MjguCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL0pTT04tcGFyc2UtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvSlNPTi1wYXJzZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDkxMzI5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9KU09OLXBhcnNlLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAgUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpbwogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAg
cmV0dXJuIGpzb25PYmplY3QucGFyc2UoJycpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5leHBlY3RlZCBFT0YuCiBmdW5jdGlvbiAoanNvbk9i
amVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMScpOwogICAgIH0KQEAg
LTE3LDExICsxNywxMSBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04p
CiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJz
ZSgnSW5maW5pdHknKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFy
c2UgZXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAiSW5maW5pdHk/Ii4KIGZ1bmN0aW9uIChq
c29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdOYU4nKTsKICAg
ICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09O
KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuZXhwZWN0
ZWQgaWRlbnRpZmllciAiTmFOIi4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJl
dHVybiBqc29uT2JqZWN0LnBhcnNlKCdudWxsJyk7CiAgICAgfQpAQCAtMjksNyArMjksNyBAQCBQ
QVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9i
amVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgndW5kZWZpbmVkJyk7CiAg
ICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbmV4cGVj
dGVkIGlkZW50aWZpZXIgInVuZGVmaW5lZCIuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAg
ICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgne30nKTsKICAgICB9CkBAIC0zNywzMSArMzcs
MzEgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyh7fSknKTsK
ICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuZXhw
ZWN0ZWQgdG9rZW4gJygnLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJ3thfScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJp
bmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgJ30nLgogZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3thOn0nKTsKICAgICB9Ci1QQVNT
IHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxl
IHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IEV4cGVjdGVkICd9Jy4KIGZ1
bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7
YTo1fScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJv
cjogRXhwZWN0ZWQgJ30nLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJ3thOjUsfScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgJ30nLgogZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSJ9Jyk7CiAgICAgfQot
UEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVu
YWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBFeHBlY3RlZCAnOicg
YmVmb3JlIHZhbHVlIGluIG9iamVjdCBwcm9wZXJ0eSBkZWZpbml0aW9uLgogZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6fScpOwog
ICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5leHBl
Y3RlZCB0b2tlbiAnfScuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgneyJhIjo1fScpOwogICAgIH0KQEAgLTczLDIwICs3MywyMCBAQCBQ
QVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9i
amVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJhIjo1LH0nKTsKICAg
ICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09O
KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFByb3BlcnR5
IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRlcmFsLgoganNvbjIuanMgZGlkIG5vdCB0aHJvdyBm
b3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7ImEiOjUsLH0nKTsKICAgICB9Ci1QQVNT
IHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxl
IHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFByb3BlcnR5IG5hbWUgbXVz
dCBiZSBhIHN0cmluZyBsaXRlcmFsLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAg
cmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6NSwiYSIsfScpOwogICAgIH0KLVBBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8g
cGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgJzonLgogZnVuY3Rp
b24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6
KDUsImEiKSx9Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNl
IGVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcoJy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbXScpOwogICAgIH0KQEAgLTk4LDcgKzk4
LDcgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ1sxLF0nKTsK
ICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuZXhw
ZWN0ZWQgY29tbWEgYXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uLgoganNvbjIuanMgZGlk
IG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1bmN0aW9uIChqc29u
T2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbMSwyXScpOwpAQCAt
MTA3LDEyICsxMDcsMTIgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09O
KQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJ1sxLDIsLF0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFy
c2UgZXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywnLgoganNvbjIuanMgZGlkIG5vdCB0aHJvdyBm
b3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbMSwyLCw0XScpOwogICAgIH0KLVBBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5leHBlY3RlZCB0b2tlbiAn
LCcuCiBqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93
LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJyIiJyk7CkBAIC0xMjksMTUgKzEyOSwxNSBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3Rz
W2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgnImFcXCInKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IEpTT04gUGFyc2UgZXJyb3I6IFVudGVybWluYXRlZCBzdHJpbmcuCiBmdW5jdGlvbiAoanNv
bk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHoiJyk7CiAg
ICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBJbnZhbGlk
IGVzY2FwZSBjaGFyYWN0ZXIgei4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJl
dHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcXHoiJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShu
YXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBK
U09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBJbnZhbGlkIGVzY2FwZSBjaGFyYWN0ZXIgei4K
IGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KCciYVxcXFx6IicpOwogICAgIH0KQEAgLTE1Myw3ICsxNTMsNyBAQCBQQVNTIEpTT04uc3RyaW5n
aWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcbnoiJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tp
XShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJz
ZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbnRlcm1pbmF0ZWQgc3RyaW5nLgogZnVu
Y3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJh
XFxueiInKTsKICAgICB9CkBAIC0xNjEsNyArMTYxLDcgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0
ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0
dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXHJ6IicpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0
aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNP
TiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW50ZXJtaW5hdGVkIHN0cmluZy4KIGZ1bmN0aW9u
IChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxccnoi
Jyk7CiAgICAgfQpAQCAtMTc3LDcgKzE3Nyw3IEBAIFBBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNb
aV0obmF0aXZlSlNPTikKIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBq
c29uT2JqZWN0LnBhcnNlKCciYVxieiInKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IEpTT04gUGFyc2UgZXJyb3I6IFVudGVybWluYXRlZCBzdHJpbmcuCiBqc29uMi5qcyBkaWQg
bm90IHRocm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgogZnVuY3Rpb24gKGpzb25P
YmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFxieiInKTsKQEAg
LTE4Niw3ICsxODYsNyBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04p
CiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJz
ZSgnImFccnoiJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNl
IGVycm9yOiBVbnRlcm1pbmF0ZWQgc3RyaW5nLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAg
ICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFxyeiInKTsKICAgICB9CkBAIC0xOTQs
MTkgKzE5NCwxOSBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBm
dW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgn
ImFcXHV6IiAgICAgJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBh
cnNlIGVycm9yOiAiXHV6IiAgIiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0
aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxc
dTB6IiAgICAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2Ug
ZXJyb3I6ICJcdTB6IiAiIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlLgogZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDB6
IiAgICcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJv
cjogIlx1MDB6IiIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUuCiBmdW5jdGlvbiAoanNv
bk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwMDB6IiAg
Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0
aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiAi
XHUwMDB6IiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0aW9uIChqc29uT2Jq
ZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwMDB6IiAnKTsK
ICAgICB9CkBAIC0yMjIsMTEgKzIyMiwxMSBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgnImFcXHUwMDBHeiIgJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiAiXHUwMDBHIiBpcyBub3QgYSB2YWxpZCB1bmljb2Rl
IGVzY2FwZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCciYVxcdTAwMGd6IiAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IEpTT04gUGFyc2UgZXJyb3I6ICJcdTAwMGciIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNj
YXBlLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJyJhXFx1MDBBMHoiICcpOwogICAgIH0KQEAgLTIzOCwxMSArMjM4LDExIEBAIFBBU1Mg
SlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9uIChqc29uT2JqZWN0
KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwRzB6IiAnKTsKICAg
ICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09O
KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6ICJcdTAwRzAi
IGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
ICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDBnMHoiICcpOwogICAgIH0K
LVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBV
bmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogIlx1MDBnMCIgaXMg
bm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAg
ICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwQTAweiIgJyk7CiAgICAgfQpAQCAt
MjU0LDExICsyNTQsMTEgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09O
KQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJyJhXFx1MEcwMHoiICcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQ
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNP
TiBQYXJzZSBlcnJvcjogIlx1MEcwMCIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUuCiBm
dW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgn
ImFcXHUwZzAweiIgJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBh
cnNlIGVycm9yOiAiXHUwZzAwIiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0
aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxc
dUEwMDB6IiAnKTsKICAgICB9CkBAIC0yNzAsNzEgKzI3MCw3MSBAQCBQQVNTIEpTT04uc3RyaW5n
aWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHVHMDAweiIgJyk7CiAgICAgfQotUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0
byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiAiXHVHMDAwIiBpcyBub3QgYSB2
YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJl
dHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdWcwMDB6IiAnKTsKICAgICB9Ci1QQVNTIHRlc3Rz
W2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBh
cnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6ICJcdWcwMDAiIGlzIG5vdCBhIHZhbGlk
IHVuaWNvZGUgZXNjYXBlLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJzAwJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09O
KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmlu
Zy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBKU09OIFBhcnNlIGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCiBqc29uMi5q
cyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgogZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzAxJyk7CiAg
ICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmcuCiBqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qg
d2UgZXhwZWN0IHRvIHRocm93LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0
dXJuIGpzb25PYmplY3QucGFyc2UoJzAuYScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogSlNPTiBQYXJzZSBlcnJvcjogSW52YWxpZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2lu
dC4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCcweDAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2Ug
ZXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0
KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcyZTEuMycpOwogICAgIH0KLVBB
U1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFi
bGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5hYmxlIHRvIHBhcnNl
IEpTT04gc3RyaW5nLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJzJlLSsxMCcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJp
bmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogSlNPTiBQYXJzZSBlcnJvcjogRXhwb25lbnQgc3ltYm9scyBzaG91bGQgYmUgZm9sbG93ZWQg
YnkgYW4gb3B0aW9uYWwgJysnIG9yICctJyBhbmQgdGhlbiBieSBhdCBsZWFzdCBvbmUgbnVtYmVy
LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJzJlKy0xMCcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRl
c3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJz
ZSBlcnJvcjogRXhwb25lbnQgc3ltYm9scyBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYW4gb3B0aW9u
YWwgJysnIG9yICctJyBhbmQgdGhlbiBieSBhdCBsZWFzdCBvbmUgbnVtYmVyLgogZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzJlM2U0Jyk7
CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbmFi
bGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnLTAxLjAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNl
IEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmlu
Zy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCctMDEnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2Ug
ZXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KIGpzb24yLmpzIGRpZCBub3QgdGhy
b3cgZm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkg
ewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnLTAxLmEnKTsKICAgICB9Ci1QQVNT
IHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxl
IHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IEludmFsaWQgZGlnaXRzIGFm
dGVyIGRlY2ltYWwgcG9pbnQuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1
cm4ganNvbk9iamVjdC5wYXJzZSgnMS5lMScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogSlNPTiBQYXJzZSBlcnJvcjogSW52YWxpZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2lu
dC4KIGpzb24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cu
CiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJz
ZSgney8qIGJsb2NrIGNvbW1lbnRzIGFyZSBub3QgYWxsb3dlZCAqL30nKTsKICAgICB9Ci1QQVNT
IHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxl
IHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVucmVjb2duaXplZCB0b2tl
biAnLycuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVj
dC5wYXJzZSgney8vIGxpbmUgY29tbWVudHMgYXJlIG5vdCBhbGxvd2VkIFxufScpOwogICAgIH0K
LVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBV
bmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5yZWNvZ25pemVk
IHRva2VuICcvJy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29u
T2JqZWN0LnBhcnNlKCd0cnVlJyk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101885</attachid>
            <date>2011-07-25 10:59:18 -0700</date>
            <delta_ts>2011-07-25 21:16:54 -0700</delta_ts>
            <desc>updated patch for cr-bot</desc>
            <filename>bug-63339-20110725105916.patch</filename>
            <type>text/plain</type>
            <size>58665</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE2MzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTEtMDctMjIgIEp1YW4gQy4gTW9udGVtYXlvciAgPGptb250QGFwcGxlLmNvbT4KKworICAg
ICAgICBKU09OIGVycm9ycyBzaG91bGQgYmUgaW5mb3JtYXRpdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMzM5CisKKyAgICAgICAgQWRkZWQgZXJy
b3IgbWVzc2FnZXMgdG8gdGhlIEpTT04gUGFyc2VyLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNPTlByb3RvRnVuY1BhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyOjpMZXhlcjo6bGV4KToKKyAg
ICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjo6TGV4ZXI6OmxleFN0cmluZyk6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI6OkxleGVyOjpsZXhOdW1iZXIpOgorICAgICAgICAoSlNDOjpMaXRl
cmFsUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmg6Cisg
ICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OmdldEVycm9yTWVzc2FnZSk6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI6OkxleGVyOjpzYXdFcnJvcik6CisgICAgICAgIChKU0M6OkxpdGVy
YWxQYXJzZXI6OkxleGVyOjpnZXRFcnJvck1lc3NhZ2UpOgorCiAyMDExLTA3LTIyICBTb21tZXIg
UGFuYWdlICA8cGFuYWdlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIg
SHVudC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCShyZXZpc2lvbiA5MTMyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTksNyArODE5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdQogICAgIExpdGVyYWxQYXJzZXIganNvblBh
cnNlcihleGVjLCBzb3VyY2UuY2hhcmFjdGVycygpLCBzb3VyY2UubGVuZ3RoKCksIExpdGVyYWxQ
YXJzZXI6OlN0cmljdEpTT04pOwogICAgIEpTVmFsdWUgdW5maWx0ZXJlZCA9IGpzb25QYXJzZXIu
dHJ5TGl0ZXJhbFBhcnNlKCk7CiAgICAgaWYgKCF1bmZpbHRlcmVkKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJVbmFibGUgdG8gcGFy
c2UgSlNPTiBzdHJpbmciKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNlci5nZXRFcnJvck1lc3NhZ2UoKSkpOwogICAg
IAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHVuZmlsdGVyZWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHJldmlzaW9uIDkxMzI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzNiwxMSArMjM2LDE0IEBAIHRlbXBsYXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJNb2Rl
IG1vZGUKICAgICAgICAgICAgIHJldHVybiBUb2tJZGVudGlmaWVyOwogICAgICAgICB9CiAgICAg
ICAgIGlmICgqbV9wdHIgPT0gJ1wnJykgewotICAgICAgICAgICAgaWYgKG1vZGUgPT0gU3RyaWN0
SlNPTikKKyAgICAgICAgICAgIGlmIChtb2RlID09IFN0cmljdEpTT04pIHsKKyAgICAgICAgICAg
ICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJTaW5nbGUgcXVvdGVzIChcJykgYXJlIG5vdCBhbGxv
d2VkIGluIEpTT04iOwogICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJldHVybiBsZXhTdHJpbmc8bW9kZSwgJ1wnJz4odG9rZW4pOwog
ICAgICAgICB9CiAgICAgfQorICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQo
IlVucmVjb2duaXplZCB0b2tlbiAnJWMnIiwgKm1fcHRyKS5pbXBsKCk7CiAgICAgcmV0dXJuIFRv
a0Vycm9yOwogfQogCkBAIC0yNzQsOCArMjc3LDEwIEBAIHRlbXBsYXRlIDxMaXRlcmFsUGFyc2Vy
OjpQYXJzZXJNb2RlIG1vZGUKICAgICAgICAgICAgIGlmIChidWlsZGVyLmlzRW1wdHkoKSAmJiBy
dW5TdGFydCA8IG1fcHRyKQogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJ1blN0YXJ0
LCBtX3B0ciAtIHJ1blN0YXJ0KTsKICAgICAgICAgICAgICsrbV9wdHI7Ci0gICAgICAgICAgICBp
ZiAobV9wdHIgPj0gbV9lbmQpCisgICAgICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQpIHsKKyAg
ICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIjsK
ICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBzd2l0Y2ggKCptX3B0cikgewogICAgICAgICAgICAgICAgIGNhc2UgJyInOgogICAgICAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwpAQCAtMzExLDExICszMTYsMTUgQEAg
dGVtcGxhdGUgPExpdGVyYWxQYXJzZXI6OlBhcnNlck1vZGUgbW9kZQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgICAg
ICAgICBpZiAoKG1fZW5kIC0gbV9wdHIpIDwgNSkgLy8gdU5OTk4gPT0gNSBjaGFyYWN0ZXJzCisg
ICAgICAgICAgICAgICAgICAgIGlmICgobV9lbmQgLSBtX3B0cikgPCA1KSB7IAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiXFx1IG11c3QgYmUgZm9sbG93ZWQg
YnkgNCBoZXggZGlnaXRzIjsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJv
cjsKKyAgICAgICAgICAgICAgICAgICAgfSAvLyB1Tk5OTiA9PSA1IGNoYXJhY3RlcnMKICAgICAg
ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCA1OyBpKyspIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KG1fcHRyW2ldKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KG1fcHRyW2ldKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlwi
XFwlc1wiIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlIiwgVVN0cmluZyhtX3B0ciwgNSku
YXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gVG9rRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoSlNDOjpMZXhlcjo6Y29u
dmVydFVuaWNvZGUobV9wdHJbMV0sIG1fcHRyWzJdLCBtX3B0clszXSwgbV9wdHJbNF0pKTsKICAg
ICAgICAgICAgICAgICAgICAgbV9wdHIgKz0gNTsKQEAgLTMyNywxMyArMzM2LDE2IEBAIHRlbXBs
YXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJNb2RlIG1vZGUKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcHRyKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IFN0cmlu
Zzo6Zm9ybWF0KCJJbnZhbGlkIGVzY2FwZSBjaGFyYWN0ZXIgJWMiLCAqbV9wdHIpLmltcGwoKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfSB3aGlsZSAoKG1vZGUgIT0gTm9uU3RyaWN0SlNPTikgJiYgbV9wdHIgIT0g
cnVuU3RhcnQgJiYgKG1fcHRyIDwgbV9lbmQpICYmICptX3B0ciAhPSB0ZXJtaW5hdG9yKTsKIAot
ICAgIGlmIChtX3B0ciA+PSBtX2VuZCB8fCAqbV9wdHIgIT0gdGVybWluYXRvcikKKyAgICBpZiAo
bV9wdHIgPj0gbV9lbmQgfHwgKm1fcHRyICE9IHRlcm1pbmF0b3IpIHsKKyAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSAiVW50ZXJtaW5hdGVkIHN0cmluZyI7CiAgICAgICAgIHJldHVybiBUb2tF
cnJvcjsKKyAgICB9CiAKICAgICBpZiAoYnVpbGRlci5pc0VtcHR5KCkpIHsKICAgICAgICAgdG9r
ZW4uc3RyaW5nQnVmZmVyID0gVVN0cmluZygpOwpAQCAtMzc2LDE1ICszODgsMTkgQEAgTGl0ZXJh
bFBhcnNlcjo6VG9rZW5UeXBlIExpdGVyYWxQYXJzZXI6OgogICAgICAgICAvLyBbMC05XSoKICAg
ICAgICAgd2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNBU0NJSURpZ2l0KCptX3B0cikpCiAgICAg
ICAgICAgICArK21fcHRyOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CisgICAgICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gIkludmFsaWQgbnVtYmVyIjsKICAgICAgICAgcmV0dXJuIFRva0Vycm9y
OworICAgIH0KIAogICAgIC8vICgnLicgWzAtOV0rKT8KICAgICBpZiAobV9wdHIgPCBtX2VuZCAm
JiAqbV9wdHIgPT0gJy4nKSB7CiAgICAgICAgICsrbV9wdHI7CiAgICAgICAgIC8vIFswLTldKwot
ICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKQorICAg
ICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7CisgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJJbnZhbGlkIGRpZ2l0cyBhZnRlciBkZWNpbWFs
IHBvaW50IjsKICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKKyAgICAgICAgfQogCiAgICAg
ICAgICsrbV9wdHI7CiAgICAgICAgIHdoaWxlIChtX3B0ciA8IG1fZW5kICYmIGlzQVNDSUlEaWdp
dCgqbV9wdHIpKQpAQCAtNDE2LDggKzQzMiwxMCBAQCBMaXRlcmFsUGFyc2VyOjpUb2tlblR5cGUg
TGl0ZXJhbFBhcnNlcjo6CiAgICAgICAgICAgICArK21fcHRyOwogCiAgICAgICAgIC8vIFswLTld
KwotICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKQor
ICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7Cisg
ICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJFeHBvbmVudCBzeW1ib2xzIHNob3VsZCBi
ZSBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCAnKycgb3IgJy0nIGFuZCB0aGVuIGJ5IGF0IGxlYXN0
IG9uZSBudW1iZXIiOwogICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOworICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICArK21fcHRyOwogICAgICAgICB3aGlsZSAobV9wdHIgPCBtX2VuZCAm
JiBpc0FTQ0lJRGlnaXQoKm1fcHRyKSkKQEAgLTQ1OCw4ICs0NzYsMTAgQEAgSlNWYWx1ZSBMaXRl
cmFsUGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAgICAgICAgY2FzZSBEb1BhcnNlQXJy
YXlTdGFydEV4cHJlc3Npb246IHsKICAgICAgICAgICAgICAgICBUb2tlblR5cGUgbGFzdFRva2Vu
ID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlOwogICAgICAgICAgICAgICAgIGlmIChtX2xl
eGVyLm5leHQoKSA9PSBUb2tSQnJhY2tldCkgewotICAgICAgICAgICAgICAgICAgICBpZiAobGFz
dFRva2VuID09IFRva0NvbW1hKQorICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFRva2VuID09
IFRva0NvbW1hKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgY29tbWEgYXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uIjsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAg
ICAgICAgIGxhc3RWYWx1ZSA9IG9iamVjdFN0YWNrLmxhc3QoKTsKICAgICAgICAgICAgICAgICAg
ICAgb2JqZWN0U3RhY2sucmVtb3ZlTGFzdCgpOwpAQCAtNDc1LDggKzQ5NSwxMCBAQCBKU1ZhbHVl
IExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRlCiAgICAgICAgICAgICAgICAgaWYgKG1f
bGV4ZXIuY3VycmVudFRva2VuKCkudHlwZSA9PSBUb2tDb21tYSkKICAgICAgICAgICAgICAgICAg
ICAgZ290byBkb1BhcnNlQXJyYXlTdGFydEV4cHJlc3Npb247CiAKLSAgICAgICAgICAgICAgICBp
ZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlICE9IFRva1JCcmFja2V0KQorICAgICAgICAg
ICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgIT0gVG9rUkJyYWNrZXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCAnXSci
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKICAg
ICAgICAgICAgICAgICBsYXN0VmFsdWUgPSBvYmplY3RTdGFjay5sYXN0KCk7CkBAIC00OTMsMTYg
KzUxNSwyMCBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRlCiAgICAg
ICAgICAgICAgICAgICAgIExleGVyOjpMaXRlcmFsUGFyc2VyVG9rZW4gaWRlbnRpZmllclRva2Vu
ID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBDaGVj
ayBmb3IgY29sb24KLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRv
a0NvbG9uKQorICAgICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgIT0gVG9rQ29s
b24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhw
ZWN0ZWQgJzonIGJlZm9yZSB2YWx1ZSBpbiBvYmplY3QgcHJvcGVydHkgZGVmaW5pdGlvbiI7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBtX2xleGVy
Lm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllclN0YWNrLmFwcGVuZChtYWtl
SWRlbnRpZmllcihpZGVudGlmaWVyVG9rZW4uc3RyaW5nVG9rZW4sIGlkZW50aWZpZXJUb2tlbi5z
dHJpbmdMZW5ndGgpKTsKICAgICAgICAgICAgICAgICAgICAgc3RhdGVTdGFjay5hcHBlbmQoRG9Q
YXJzZU9iamVjdEVuZEV4cHJlc3Npb24pOwogICAgICAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0
UGFyc2VFeHByZXNzaW9uOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAo
dHlwZSAhPSBUb2tSQnJhY2UpIAorICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFRva1JCcmFj
ZSkgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3Rl
ZCAnfSciOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKICAgICAgICAgICAgICAg
ICBsYXN0VmFsdWUgPSBvYmplY3RTdGFjay5sYXN0KCk7CiAgICAgICAgICAgICAgICAgb2JqZWN0
U3RhY2sucmVtb3ZlTGFzdCgpOwpAQCAtNTExLDEzICs1MzcsMTcgQEAgSlNWYWx1ZSBMaXRlcmFs
UGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAgICAgICAgZG9QYXJzZU9iamVjdFN0YXJ0
RXhwcmVzc2lvbjoKICAgICAgICAgICAgIGNhc2UgRG9QYXJzZU9iamVjdFN0YXJ0RXhwcmVzc2lv
bjogewogICAgICAgICAgICAgICAgIFRva2VuVHlwZSB0eXBlID0gbV9sZXhlci5uZXh0KCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHR5cGUgIT0gVG9rU3RyaW5nICYmIChtX21vZGUgPT0gU3RyaWN0
SlNPTiB8fCB0eXBlICE9IFRva0lkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIGlmICh0eXBl
ICE9IFRva1N0cmluZyAmJiAobV9tb2RlID09IFN0cmljdEpTT04gfHwgdHlwZSAhPSBUb2tJZGVu
dGlmaWVyKSkgeworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlBy
b3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRlcmFsIjsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
TGV4ZXI6OkxpdGVyYWxQYXJzZXJUb2tlbiBpZGVudGlmaWVyVG9rZW4gPSBtX2xleGVyLmN1cnJl
bnRUb2tlbigpOwogCiAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGNvbG9uCi0gICAgICAg
ICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0NvbG9uKQorICAgICAgICAgICAgICAg
IGlmIChtX2xleGVyLm5leHQoKSAhPSBUb2tDb2xvbikgeworICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICc6JyI7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
bV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgaWRlbnRpZmllclN0YWNrLmFwcGVuZCht
YWtlSWRlbnRpZmllcihpZGVudGlmaWVyVG9rZW4uc3RyaW5nVG9rZW4sIGlkZW50aWZpZXJUb2tl
bi5zdHJpbmdMZW5ndGgpKTsKQEAgLTUzMCw4ICs1NjAsMTAgQEAgSlNWYWx1ZSBMaXRlcmFsUGFy
c2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFjay5y
ZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2VuKCku
dHlwZSA9PSBUb2tDb21tYSkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb1BhcnNlT2JqZWN0
U3RhcnRFeHByZXNzaW9uOwotICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tl
bigpLnR5cGUgIT0gVG9rUkJyYWNlKQorICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJl
bnRUb2tlbigpLnR5cGUgIT0gVG9rUkJyYWNlKSB7CisgICAgICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJ30nIjsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9sZXhl
ci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0gb2JqZWN0U3RhY2subGFzdCgp
OwogICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLnJlbW92ZUxhc3QoKTsKQEAgLTU3MCw5ICs2
MDIsNDMgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAg
ICAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBsYXN0VmFsdWUgPSBqc0Jvb2xlYW4oZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2tldDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAn
XSciOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2U6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ30nIjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9r
SWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSBTdHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCBpZGVudGlmaWVyIFwiJXNcIiIsIFVTdHJpbmco
bV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdHJpbmdUb2tlbikuYXNjaWkoKS5kYXRhKCkpLmltcGwo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgVG9rQ29sb246CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzonIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rTFBh
cmVuOgorICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIHRva2VuICcoJyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1JQYXJlbjoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKSciOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSBUb2tDb21tYToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLCciOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tEb3Q6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQg
dG9rZW4gJy4nIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQXNzaWduOgorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc9JyI7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBj
YXNlIFRva1NlbWk6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRW5kOgorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIEVPRiI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIFRva0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gRXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiQ291bGQgbm90IHBhcnNlIHZhbHVlIGV4cHJlc3Npb24iOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01ODksNyArNjU1LDUxIEBAIEpTVmFsdWUgTGl0
ZXJhbFBhcnNlcjo6cGFyc2UoUGFyc2VyU3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRlU3RhY2suYXBwZW5kKFN0YXJ0UGFyc2VTdGF0ZW1lbnRFbmRTdGF0ZW1lbnQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgZ290byBzdGFydFBhcnNlRXhwcmVzc2lvbjsKICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1JCcmFja2V0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICddJyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIFRva0xCcmFjZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAneyciOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBU
b2tSQnJhY2U6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
IlVuZXhwZWN0ZWQgdG9rZW4gJ30nIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rSWRlbnRpZmllcjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgi
VW5leHBlY3RlZCBpZGVudGlmaWVyIFwiJXNcIiIsIFVTdHJpbmcobV9sZXhlci5jdXJyZW50VG9r
ZW4oKS5zdHJpbmdUb2tlbikuYXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9r
Q29sb246CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVu
ZXhwZWN0ZWQgdG9rZW4gJzonIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rUlBhcmVuOgorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcpJyI7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIFRva0NvbW1hOgorICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVy
cm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcsJyI7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1RydWU6
CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0
ZWQgdG9rZW4gJ3RydWUnIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRmFsc2U6CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ2ZhbHNlJyI7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIFRva051bGw6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ251bGwnIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRW5k
OgorICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVj
dGVkIEVPRiI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIFRva0RvdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLiciOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBU
b2tBc3NpZ246CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
IlVuZXhwZWN0ZWQgdG9rZW4gJz0nIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rU2VtaToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnOyci
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUb2tFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiQ291bGQgbm90IHBh
cnNlIHN0YXRlbWVudCI7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTU5OSw2ICs3MDksNyBAQCBK
U1ZhbHVlIExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRlCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgp
ID09IFRva0VuZCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZTsKKyAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29udGVudCBhdCBl
bmQgb2YgSlNPTiBsaXRlcmFsIjsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgJKHJldmlzaW9uIDkxMzI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw2ICs0MywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAg
ICB9CiAgICAgICAgIAorICAgICAgICBVU3RyaW5nIGdldEVycm9yTWVzc2FnZSgpIAorICAgICAg
ICB7IAorICAgICAgICAgICAgaWYgKG1fcGFyc2VFcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5hYmxlIHRvIHBhcnNlIEpTT04g
c3RyaW5nIjsKKyAgICAgICAgICAgIFVTdHJpbmcgZXJyb3JNZXNzYWdlID0gbV9sZXhlci5zYXdF
cnJvcigpID8gIG1fbGV4ZXIuZ2V0RXJyb3JNZXNzYWdlKCkgOiBtX3BhcnNlRXJyb3JNZXNzYWdl
OworICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJKU09OIFBhcnNlIGVycm9yOiAl
cyIsIGVycm9yTWVzc2FnZS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOworICAgICAgICB9CisgICAg
ICAgIAogICAgICAgICBKU1ZhbHVlIHRyeUxpdGVyYWxQYXJzZSgpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIG1fbGV4ZXIubmV4dCgpOwpAQCAtMTEyLDcgKzEyMCwxMSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgICAgICByZXR1cm4gbV9jdXJyZW50VG9rZW47CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgc2F3RXJyb3IoKSB7IHJldHVybiAhbV9s
ZXhFcnJvck1lc3NhZ2UuaXNFbXB0eSgpOyB9CisgICAgICAgICAgICBVU3RyaW5nIGdldEVycm9y
TWVzc2FnZSgpIHsgcmV0dXJuIG1fbGV4RXJyb3JNZXNzYWdlOyB9CisgICAgICAgICAgICAKICAg
ICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIFVTdHJpbmcgbV9sZXhFcnJvck1lc3NhZ2U7CiAg
ICAgICAgICAgICB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2RlPiBUb2tlblR5cGUgbGV4KExpdGVy
YWxQYXJzZXJUb2tlbiYpOwogICAgICAgICAgICAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZSwg
VUNoYXIgdGVybWluYXRvcj4gQUxXQVlTX0lOTElORSBUb2tlblR5cGUgbGV4U3RyaW5nKExpdGVy
YWxQYXJzZXJUb2tlbiYpOwogICAgICAgICAgICAgQUxXQVlTX0lOTElORSBUb2tlblR5cGUgbGV4
TnVtYmVyKExpdGVyYWxQYXJzZXJUb2tlbiYpOwpAQCAtMTI5LDYgKzE0MSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBFeGVjU3RhdGUqIG1fZXhlYzsKICAgICAgICAgTGl0ZXJhbFBhcnNl
cjo6TGV4ZXIgbV9sZXhlcjsKICAgICAgICAgUGFyc2VyTW9kZSBtX21vZGU7CisgICAgICAgIFVT
dHJpbmcgbV9wYXJzZUVycm9yTWVzc2FnZTsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGNvbnN0
IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlciA9IDEyODsKICAgICAgICAgRml4ZWRBcnJheTxJZGVu
dGlmaWVyLCBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXI+IG1fc2hvcnRJZGVudGlmaWVyczsKICAg
ICAgICAgRml4ZWRBcnJheTxJZGVudGlmaWVyLCBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXI+IG1f
cmVjZW50SWRlbnRpZmllcnM7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MTY3NykKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTA3LTI1
ICBKdWFuIEMuIE1vbnRlbWF5b3IgIDxqbW9udEBhcHBsZS5jb20+CisKKyAgICAgICAgSlNPTiBl
cnJvcnMgc2hvdWxkIGJlIGluZm9ybWF0aXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MzMzOQorCisgICAgICAgIFVwZGF0ZWQgZXhwZWN0ZWQgdGVz
dCByZXN1bHRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9qcy9KU09OLXBhcnNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2pzL0pTT04tcGFyc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAx
MS0wNy0yNSAgTWlrZSBSZWVkICA8cmVlZEBnb29nbGUuY29tPgogCiAgICAgICAgIGRpc2FibGUg
dGVzdHMgcGVuZGluZyByZWJhc2VsaW5lIHdpdGggcm90YXRlZCB0ZXh0IGZpeApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9KU09OLXBhcnNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL0pTT04tcGFyc2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MTMy
OSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvSlNPTi1wYXJzZS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTUsNyArNSw3IEBAIFBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcg
ZXhjZXB0aW8KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCcnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFy
c2UgZXJyb3I6IFVuZXhwZWN0ZWQgRU9GLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzEnKTsKICAgICB9CkBAIC0xNywxMSArMTcsMTEg
QEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ0luZmluaXR5Jyk7
CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbmV4
cGVjdGVkIGlkZW50aWZpZXIgIkluZmluaXR5PyIuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewog
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnTmFOJyk7CiAgICAgfQotUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBw
YXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbmV4cGVjdGVkIGlkZW50aWZpZXIg
Ik5hTiIuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVj
dC5wYXJzZSgnbnVsbCcpOwogICAgIH0KQEAgLTI5LDcgKzI5LDcgQEAgUEFTUyBKU09OLnN0cmlu
Z2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3VuZGVmaW5lZCcpOwogICAgIH0KLVBBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8g
cGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVy
ICJ1bmRlZmluZWQiLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJ3t9Jyk7CiAgICAgfQpAQCAtMzcsMzEgKzM3LDMxIEBAIFBBU1MgSlNP
Ti5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcoe30pJyk7CiAgICAgfQotUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0
byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbmV4cGVjdGVkIHRva2VuICco
Jy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCd7YX0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2Ug
ZXJyb3I6IEV4cGVjdGVkICd9Jy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJl
dHVybiBqc29uT2JqZWN0LnBhcnNlKCd7YTp9Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBFeHBlY3RlZCAnfScuCiBmdW5jdGlvbiAoanNvbk9i
amVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgne2E6NX0nKTsKICAgICB9
Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
VW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IEV4cGVjdGVkICd9
Jy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCd7YTo1LH0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFy
c2UgZXJyb3I6IEV4cGVjdGVkICd9Jy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAg
IHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7ImEifScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0o
bmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2Ug
SlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgJzonIGJlZm9yZSB2YWx1ZSBp
biBvYmplY3QgcHJvcGVydHkgZGVmaW5pdGlvbi4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7ImEiOn0nKTsKICAgICB9Ci1QQVNTIHRl
c3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRv
IHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJ30n
LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJ3siYSI6NX0nKTsKICAgICB9CkBAIC03MywyMCArNzMsMjAgQEAgUEFTUyBKU09OLnN0cmlu
Z2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6NSx9Jyk7CiAgICAgfQotUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBw
YXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBQcm9wZXJ0eSBuYW1lIG11c3QgYmUg
YSBzdHJpbmcgbGl0ZXJhbC4KIGpzb24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBl
eHBlY3QgdG8gdGhyb3cuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgneyJhIjo1LCx9Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBQcm9wZXJ0eSBuYW1lIG11c3QgYmUgYSBzdHJpbmcg
bGl0ZXJhbC4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCd7ImEiOjUsImEiLH0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IEpTT04gUGFyc2UgZXJyb3I6IEV4cGVjdGVkICc6Jy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0
KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7ImEiOig1LCJhIiksfScpOwog
ICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5leHBl
Y3RlZCB0b2tlbiAnKCcuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgnW10nKTsKICAgICB9CkBAIC05OCw3ICs5OCw3IEBAIFBBU1MgSlNP
Ti5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbMSxdJyk7CiAgICAgfQotUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0
byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbmV4cGVjdGVkIGNvbW1hIGF0
IHRoZSBlbmQgb2YgYXJyYXkgZXhwcmVzc2lvbi4KIGpzb24yLmpzIGRpZCBub3QgdGhyb3cgZm9y
IGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAg
ICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnWzEsMl0nKTsKQEAgLTEwNywxMiArMTA3LDEy
IEBAIFBBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9uIChq
c29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbMSwyLCxdJyk7
CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbmV4
cGVjdGVkIHRva2VuICcsJy4KIGpzb24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBl
eHBlY3QgdG8gdGhyb3cuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgnWzEsMiwsNF0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2
ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04g
c3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywnLgoganNvbjIuanMg
ZGlkIG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1bmN0aW9uIChq
c29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciIicpOwpAQCAt
MTI5LDE1ICsxMjksMTUgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09O
KQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJyJhXFwiJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNl
IGVycm9yOiBVbnRlcm1pbmF0ZWQgc3RyaW5nLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAg
ICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx6IicpOwogICAgIH0KLVBBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8g
cGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogSW52YWxpZCBlc2NhcGUgY2hhcmFj
dGVyIHouCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVj
dC5wYXJzZSgnImFcXFx6IicpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQ
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNP
TiBQYXJzZSBlcnJvcjogSW52YWxpZCBlc2NhcGUgY2hhcmFjdGVyIHouCiBmdW5jdGlvbiAoanNv
bk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXFxceiInKTsK
ICAgICB9CkBAIC0xNTMsNyArMTUzLDcgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShu
YXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoJyJhXG56IicpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcu
CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
SlNPTiBQYXJzZSBlcnJvcjogVW50ZXJtaW5hdGVkIHN0cmluZy4KIGZ1bmN0aW9uIChqc29uT2Jq
ZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcbnoiJyk7CiAgICAg
fQpAQCAtMTYxLDcgKzE2MSw3IEBAIFBBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZl
SlNPTikKIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKCciYVxyeiInKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFT
UyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04g
UGFyc2UgZXJyb3I6IFVudGVybWluYXRlZCBzdHJpbmcuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkg
ewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHJ6IicpOwogICAgIH0KQEAg
LTE3Nyw3ICsxNzcsNyBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04p
CiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJz
ZSgnImFcYnoiJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNl
IGVycm9yOiBVbnRlcm1pbmF0ZWQgc3RyaW5nLgoganNvbjIuanMgZGlkIG5vdCB0aHJvdyBmb3Ig
YSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAg
ICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcYnoiJyk7CkBAIC0xODYsNyArMTg2LDcg
QEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXHJ6IicpOwog
ICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW50ZXJt
aW5hdGVkIHN0cmluZy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBq
c29uT2JqZWN0LnBhcnNlKCciYVxccnoiJyk7CiAgICAgfQpAQCAtMTk0LDE5ICsxOTQsMTkgQEAg
UEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25P
YmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1eiIgICAgICcp
OwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2
ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogIlx1
eiIgICIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUuCiBmdW5jdGlvbiAoanNvbk9iamVj
dCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUweiIgICAgJyk7CiAg
ICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiAiXHUweiIg
IiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAweiIgICAnKTsKICAgICB9
Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
VW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6ICJcdTAweiIiIGlz
IG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAg
ICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDAweiIgICcpOwogICAgIH0KLVBB
U1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFi
bGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogIlx1MDAweiIgaXMgbm90
IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwMDAweiIgJyk7CiAgICAgfQpAQCAtMjIy
LDExICsyMjIsMTEgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQog
ZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2Uo
JyJhXFx1MDAwR3oiICcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNT
IHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQ
YXJzZSBlcnJvcjogIlx1MDAwRyIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUuCiBmdW5j
dGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFc
XHUwMDBneiIgJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNl
IGVycm9yOiAiXHUwMDBnIiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0aW9u
IChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAw
QTB6IiAnKTsKICAgICB9CkBAIC0yMzgsMTEgKzIzOCwxMSBAQCBQQVNTIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwMEcweiIgJyk7CiAgICAgfQotUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBw
YXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiAiXHUwMEcwIiBpcyBub3QgYSB2YWxp
ZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVy
biBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwZzB6IiAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNl
IEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6ICJcdTAwZzAiIGlzIG5vdCBhIHZhbGlkIHVu
aWNvZGUgZXNjYXBlLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJyJhXFx1MEEwMHoiICcpOwogICAgIH0KQEAgLTI1NCwxMSArMjU0LDEx
IEBAIFBBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9uIChq
c29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTBHMDB6
IiAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShu
YXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6
ICJcdTBHMDAiIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlLgogZnVuY3Rpb24gKGpzb25P
YmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MGcwMHoiICcp
OwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2
ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogIlx1
MGcwMCIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUuCiBmdW5jdGlvbiAoanNvbk9iamVj
dCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHVBMDAweiIgJyk7CiAg
ICAgfQpAQCAtMjcwLDcxICsyNzAsNzEgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShu
YXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoJyJhXFx1RzAwMHoiICcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogSlNPTiBQYXJzZSBlcnJvcjogIlx1RzAwMCIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBl
c2NhcGUuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVj
dC5wYXJzZSgnImFcXHVnMDAweiIgJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09O
KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmlu
Zy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBKU09OIFBhcnNlIGVycm9yOiAiXHVnMDAwIiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVzY2Fw
ZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCcwMCcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3Rz
W2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBl
cnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgoganNvbjIuanMgZGlkIG5vdCB0aHJv
dyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcwMScpOwogICAgIH0KLVBBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8g
cGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04g
c3RyaW5nLgoganNvbjIuanMgZGlkIG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0
aHJvdy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKCcwLmEnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFy
c2UgZXJyb3I6IEludmFsaWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwgcG9pbnQuCiBmdW5jdGlvbiAo
anNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMHgwJyk7CiAg
ICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmcuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMmUxLjMnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5h
dGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpT
T04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4K
IGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KCcyZS0rMTAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2Ug
ZXJyb3I6IEV4cG9uZW50IHN5bWJvbHMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFs
ICcrJyBvciAnLScgYW5kIHRoZW4gYnkgYXQgbGVhc3Qgb25lIG51bWJlci4KIGZ1bmN0aW9uIChq
c29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcyZSstMTAnKTsK
ICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IEV4cG9u
ZW50IHN5bWJvbHMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsICcrJyBvciAnLScg
YW5kIHRoZW4gYnkgYXQgbGVhc3Qgb25lIG51bWJlci4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcyZTNlNCcpOwogICAgIH0KLVBBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpT
T04gc3RyaW5nLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoJy0wMS4wJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4K
K1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBK
U09OIFBhcnNlIGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCiBmdW5jdGlvbiAo
anNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnLTAxJyk7CiAg
ICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmcuCiBqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qg
d2UgZXhwZWN0IHRvIHRocm93LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0
dXJuIGpzb25PYmplY3QucGFyc2UoJy0wMS5hJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBJbnZhbGlkIGRpZ2l0cyBhZnRlciBkZWNpbWFsIHBv
aW50LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJzEuZTEnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFy
c2UgZXJyb3I6IEludmFsaWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwgcG9pbnQuCiBqc29uMi5qcyBk
aWQgbm90IHRocm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgogZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3svKiBibG9jayBj
b21tZW50cyBhcmUgbm90IGFsbG93ZWQgKi99Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbnJlY29nbml6ZWQgdG9rZW4gJy8nLgogZnVuY3Rp
b24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3svLyBs
aW5lIGNvbW1lbnRzIGFyZSBub3QgYWxsb3dlZCBcbn0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNl
IEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVucmVjb2duaXplZCB0b2tlbiAnLycuCiBm
dW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgn
dHJ1ZScpOwogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
anMvSlNPTi1wYXJzZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9qcy9KU09OLXBhcnNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvanMvSlNPTi1wYXJzZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAyIEBACitmdW5jdGlvbiAoanNv
bk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgpOworICAgIH0KK1BB
U1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBKU09OLnBhcnNl
IHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIuCitmdW5jdGlvbiAoanNvbk9iamVjdCkg
eworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnJyk7CisgICAgfQorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBw
YXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVy
biBqc29uT2JqZWN0LnBhcnNlKCcxJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0
c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5j
dGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnLTEn
KTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7Cisg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdJbmZpbml0eScpOworICAgIH0KK1BBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnTmFOJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCdudWxsJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShu
YXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAo
anNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgndW5kZWZpbmVk
Jyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2Jq
ZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7fScpOworICAgIH0KK1BB
U1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJyh7fSknKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJ3thfScpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlv
biAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgne2E6fScp
OworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVj
dCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgne2E6NX0nKTsKKyAgICB9CitQ
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5h
YmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3thOjUsfScpOworICAgIH0KK1BBU1MgdGVzdHNb
aV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFy
c2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgneyJhIn0nKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJ3siYSI6fScpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5j
dGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJh
Ijo1fScpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikp
IGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siX19wcm90b19fIjo1fScpOwor
ICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04u
c3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6NSx9Jyk7CisgICAgfQorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBw
YXJzZSBKU09OIHN0cmluZy4KK2pzb24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBl
eHBlY3QgdG8gdGhyb3cuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgneyJhIjo1LCx9Jyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCd7ImEiOjUsImEiLH0nKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJ3siYSI6KDUsImEiKSx9Jyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09O
KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmlu
Zy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCdbXScpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNP
TikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ1sxXScpOworICAgIH0KK1BB
U1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJ1sxLF0nKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgoranNvbjIuanMgZGlkIG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJv
dy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCdbMSwyXScpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZl
SlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25P
YmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ1sxLDIsLF0nKTsKKyAg
ICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgoranNvbjIuanMgZGlkIG5vdCB0aHJvdyBm
b3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7Cisg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbMSwyLCw0XScpOworICAgIH0KK1BBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmcuCitqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qg
d2UgZXhwZWN0IHRvIHRocm93LgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0
dXJuIGpzb25PYmplY3QucGFyc2UoJyIiJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0
ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitm
dW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgn
IlwnIicpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikp
IGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXCInKTsKKyAgICB9CitQQVNT
IEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0
ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBq
c29uT2JqZWN0LnBhcnNlKCciYVxcIicpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJp
bmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgnImFcXHoiJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0
aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxc
XHoiJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29u
T2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcXFx6IicpOwor
ICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04u
c3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXHR6IicpOworICAgIH0KK1BBU1MgSlNPTi5z
dHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmpl
Y3QucGFyc2UoJyJhXFx0eiInKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9u
IChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxueiIn
KTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFxueiInKTsKKyAgICB9
CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmlu
Z2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJl
dHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxyeiInKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5h
dGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpT
T04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoJyJhXFxyeiInKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3Rz
W2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0
aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVwv
eiInKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBp
cyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7
CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcL3oiJyk7CisgICAgfQorUEFT
UyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnko
dGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgnImFcYnoiJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0
cmluZy4KK2pzb24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhy
b3cuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgnImFcXGJ6IicpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0
aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXHJ6IicpOwor
ICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkg
eworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHJ6IicpOworICAgIH0KK1BB
U1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJyJhXFx1eiIgICAgICcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0o
bmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2Ug
SlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgnImFcXHUweiIgICAgJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCciYVxcdTAweiIgICAnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJyJhXFx1MDAweiIgICcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcu
CitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJz
ZSgnImFcXHUwMDAweiIgJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShu
YXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAo
anNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwMDBB
eiIgJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkg
aXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkg
eworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwMDBheiIgJyk7CisgICAg
fQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJp
bmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwMDBHeiIgJyk7CisgICAgfQorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBw
YXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVy
biBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwMGd6IiAnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNl
IEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJyJhXFx1MDBBMHoiICcpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdp
ZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04p
KQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJyJhXFx1MDBhMHoiICcpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0o
bmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDBH
MHoiICcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNv
bk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwMGcweiIg
Jyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2Jq
ZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTBBMDB6IiAnKTsK
KyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09O
LnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAg
ICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTBhMDB6IiAnKTsKKyAgICB9CitQQVNT
IEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0
ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBq
c29uT2JqZWN0LnBhcnNlKCciYVxcdTBHMDB6IiAnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5h
dGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpT
T04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoJyJhXFx1MGcwMHoiICcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVj
dC5wYXJzZSgnImFcXHVBMDAweiIgJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0
c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5j
dGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFc
XHVhMDAweiIgJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVK
U09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9i
amVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHVHMDAweiIgJyk7
CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0
KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdWcwMDB6IiAnKTsKKyAg
ICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
KyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzAwJyk7CisgICAgfQorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBw
YXJzZSBKU09OIHN0cmluZy4KK2pzb24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBl
eHBlY3QgdG8gdGhyb3cuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgnMDEnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5n
LgoranNvbjIuanMgZGlkIG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4K
K2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KCcwLmEnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzB4MCcpOworICAg
IH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgewor
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMmUxLjMnKTsKKyAgICB9CitQQVNTIHRl
c3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRv
IHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0
dXJuIGpzb25PYmplY3QucGFyc2UoJzJlLSsxMCcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0
aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNP
TiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9i
amVjdC5wYXJzZSgnMmUrLTEwJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4K
K2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KCcyZTNlNCcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAo
anNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnLTAxLjAnKTsK
KyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJy0wMScpOworICAgIH0KK1BBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmcuCitqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qg
d2UgZXhwZWN0IHRvIHRocm93LgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0
dXJuIGpzb25PYmplY3QucGFyc2UoJy0wMS5hJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCcxLmUxJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2pz
b24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cuCitmdW5j
dGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgney8q
IGJsb2NrIGNvbW1lbnRzIGFyZSBub3QgYWxsb3dlZCAqL30nKTsKKyAgICB9CitQQVNTIHRlc3Rz
W2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBh
cnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJ3svLyBsaW5lIGNvbW1lbnRzIGFyZSBub3QgYWxsb3dlZCBcbn0n
KTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3RydWUnKTsKKyAgICB9CitQ
QVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lm
eSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVy
biBqc29uT2JqZWN0LnBhcnNlKCdmYWxzZScpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnko
dGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQor
ZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2Uo
SlNPTi5zdHJpbmdpZnkoc2ltcGxlT2JqZWN0KSk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lm
eSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgdGVzdHNbaV0uZXhwZWN0ZWQKK2Z1bmN0aW9uIChq
c29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5n
aWZ5KGNvbXBsZXhPYmplY3QpKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9u
IChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3Ry
aW5naWZ5KGNvbXBsZXhPYmplY3QpKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3Rz
W2ldKG5hdGl2ZUpTT04pKSBpcyB0ZXN0c1tpXS5leHBlY3RlZAorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoc2lt
cGxlT2JqZWN0LG51bGwsMTAwKSk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tp
XShuYXRpdmVKU09OKSkgaXMgdGVzdHNbaV0uZXhwZWN0ZWQKK2Z1bmN0aW9uIChqc29uT2JqZWN0
KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBs
ZXhPYmplY3QsbnVsbCwxMDApKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9u
IChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3Ry
aW5naWZ5KGNvbXBsZXhPYmplY3QsbnVsbCwxMDApKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5n
aWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyB0ZXN0c1tpXS5leHBlY3RlZAorZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJp
bmdpZnkoc2ltcGxlT2JqZWN0LG51bGwsIiAiKSk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lm
eSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgdGVzdHNbaV0uZXhwZWN0ZWQKK2Z1bmN0aW9uIChq
c29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5n
aWZ5KGNvbXBsZXhPYmplY3QsbnVsbCwiICIpKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkK
K2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmplY3QsbnVsbCwiICIpKTsKKyAgICB9CitQQVNTIEpT
T04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyB0ZXN0c1tpXS5leHBlY3RlZAor
ZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2Uo
SlNPTi5zdHJpbmdpZnkoc2ltcGxlT2JqZWN0LG51bGwsIlx0IikpOworICAgIH0KK1BBU1MgSlNP
Ti5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIHRlc3RzW2ldLmV4cGVjdGVkCitm
dW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShK
U09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0LG51bGwsIlx0IikpOworICAgIH0KK1BBU1MgSlNP
Ti5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3Rz
W2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGxleE9iamVjdCxudWxsLCJcdCIpKTsKKyAg
ICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyB0ZXN0c1tp
XS5leHBlY3RlZAorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoc2ltcGxlT2JqZWN0LG51bGwsIlxuIikpOworICAg
IH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIHRlc3RzW2ld
LmV4cGVjdGVkCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9i
amVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0LG51bGwsIlxuIikpOworICAg
IH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIHRlc3RzW2ld
LmV4cGVjdGVkCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9i
amVjdC5wYXJzZSgidHJ1ZSIsIGxvZyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0
c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5j
dGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgiZmFs
c2UiLCBsb2cpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNP
TikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoIm51bGwiLCBsb2cpOworICAg
IH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3Ry
aW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAg
cmV0dXJuIGpzb25PYmplY3QucGFyc2UoIjEiLCBsb2cpOworICAgIH0KK1BBU1MgSlNPTi5zdHJp
bmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpT
T04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoIjEuNSIsIGxvZyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShu
YXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAo
anNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImEgc3RyaW5n
IicsIGxvZyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09O
KSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVj
dCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShzaW1w
bGVBcnJheSksIGxvZyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRp
dmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNv
bk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lm
eShjb21wbGV4QXJyYXkpLCBsb2cpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNb
aV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rp
b24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5z
dHJpbmdpZnkoc2ltcGxlT2JqZWN0KSwgbG9nKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkK
K2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmplY3QpLCBsb2cpOworICAgIH0KK1BBU1MgSlNPTi5z
dHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmpl
Y3QucGFyc2UoJ3siX19wcm90b19fIjp7ImEiOjV9fScsIGxvZyk7CisgICAgfQorUEFTUyBKU09O
LnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNb
aV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRlclN0cmlu
ZyA9ICIiOworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgidHJ1ZSIsIGxvZ09yZGVy
KTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7Cisg
ICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCJmYWxzZSIsIGxvZ09yZGVyKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3Rz
W2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0
aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAg
IHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCJudWxsIiwgbG9nT3JkZXIpOworICAgIH0KK1BBU1Mg
SlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRl
c3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgbG9nT3JkZXJT
dHJpbmcgPSAiIjsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoIjEiLCBsb2dPcmRl
cik7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMg
SlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgewor
ICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgiMS41IiwgbG9nT3JkZXIpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNb
aV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rp
b24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAg
cmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhIHN0cmluZyInLCBsb2dPcmRlcik7CisgICAgfQor
UEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdp
ZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dP
cmRlclN0cmluZyA9ICIiOworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0
cmluZ2lmeShzaW1wbGVBcnJheSksIGxvZ09yZGVyKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5n
aWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09O
KSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7
CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhB
cnJheSksIGxvZ09yZGVyKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5h
dGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChq
c29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIHJldHVy
biBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KHNpbXBsZU9iamVjdCksIGxvZ09yZGVy
KTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7Cisg
ICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmplY3QpLCBsb2dPcmRlcik7CisgICAgfQorUEFT
UyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnko
dGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRl
clN0cmluZyA9ICIiOworICAgICAgICBqc29uT2JqZWN0LnBhcnNlKCJ0cnVlIiwgbG9nT3JkZXIp
OworICAgICAgICByZXR1cm4gbG9nT3JkZXJTdHJpbmc7CisgICAgfQorUEFTUyBKU09OLnN0cmlu
Z2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNP
TikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIi
OworICAgICAgICBqc29uT2JqZWN0LnBhcnNlKCJmYWxzZSIsIGxvZ09yZGVyKTsKKyAgICAgICAg
cmV0dXJuIGxvZ09yZGVyU3RyaW5nOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNb
aV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rp
b24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAg
anNvbk9iamVjdC5wYXJzZSgibnVsbCIsIGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJuIGxvZ09y
ZGVyU3RyaW5nOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNP
TikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAganNvbk9iamVjdC5w
YXJzZSgiMSIsIGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJuIGxvZ09yZGVyU3RyaW5nOworICAg
IH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3Ry
aW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAg
bG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAganNvbk9iamVjdC5wYXJzZSgiMS41IiwgbG9n
T3JkZXIpOworICAgICAgICByZXR1cm4gbG9nT3JkZXJTdHJpbmc7CisgICAgfQorUEFTUyBKU09O
LnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNb
aV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRlclN0cmlu
ZyA9ICIiOworICAgICAgICBqc29uT2JqZWN0LnBhcnNlKCciYSBzdHJpbmciJywgbG9nT3JkZXIp
OworICAgICAgICByZXR1cm4gbG9nT3JkZXJTdHJpbmc7CisgICAgfQorUEFTUyBKU09OLnN0cmlu
Z2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNP
TikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIi
OworICAgICAgICBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KHNpbXBsZUFycmF5KSwg
bG9nT3JkZXIpOworICAgICAgICByZXR1cm4gbG9nT3JkZXJTdHJpbmc7CisgICAgfQorUEFTUyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVz
dHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRlclN0
cmluZyA9ICIiOworICAgICAgICBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBs
ZXhBcnJheSksIGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJuIGxvZ09yZGVyU3RyaW5nOworICAg
IH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3Ry
aW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAg
bG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmlu
Z2lmeShzaW1wbGVPYmplY3QpLCBsb2dPcmRlcik7CisgICAgICAgIHJldHVybiBsb2dPcmRlclN0
cmluZzsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBp
cyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7
CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIGpzb25PYmplY3QucGFyc2Uo
SlNPTi5zdHJpbmdpZnkoY29tcGxleE9iamVjdCksIGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJu
IGxvZ09yZGVyU3RyaW5nOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0
aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKKyAgICAgICAgY2FsbENvdW50ID0gMDsKKyAgICAgICAgbG9nT3JkZXJTdHJp
bmcgPSAiIjsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnko
Y29tcGxleEFycmF5KSwgdGhyb3dBZnRlckZpZnRoQ2FsbCk7CisgICAgfQorUEFTUyB0ZXN0c1tp
XShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gZnJvbSByZXZpdmVyLgorZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKKyAgICAgICAgY2FsbENvdW50ID0gMDsKKyAgICAgICAgbG9nT3JkZXJTdHJp
bmcgPSAiIjsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnko
c2ltcGxlT2JqZWN0KSwgdGhyb3dBZnRlckZpZnRoQ2FsbCk7CisgICAgfQorUEFTUyBKU09OLnN0
cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0o
SlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBjYWxsQ291bnQgPSAwOwor
ICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0KSwgdGhyb3dBZnRlckZpZnRoQ2FsbCk7
CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gZnJvbSBy
ZXZpdmVyLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgY2FsbENvdW50ID0gMDsK
KyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAgdHJ5IHsganNvbk9iamVjdC5w
YXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4QXJyYXkpLCB0aHJvd0FmdGVyRmlmdGhDYWxsKTsg
fSBjYXRjaCAoZSkge30KKyAgICAgICAgcmV0dXJuIGxvZ09yZGVyU3RyaW5nOworICAgIH0KK1BB
U1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgY2FsbENv
dW50ID0gMDsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAgdHJ5IHsganNv
bk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShzaW1wbGVPYmplY3QpLCB0aHJvd0FmdGVyRmlm
dGhDYWxsKTsgfSBjYXRjaCAoZSkge30KKyAgICAgICAgcmV0dXJuIGxvZ09yZGVyU3RyaW5nOwor
ICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04u
c3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAg
ICAgY2FsbENvdW50ID0gMDsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAg
dHJ5IHsganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0KSwgdGhy
b3dBZnRlckZpZnRoQ2FsbCk7IH0gY2F0Y2ggKGUpIHt9CisgICAgICAgIHJldHVybiBsb2dPcmRl
clN0cmluZzsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04p
KSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0
KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KHVuaWNv
ZGUpKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIGlzIHRlc3RzW2ldLnVuc3Ry
aW5naWZpZWRFeHBlY3RlZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101968</attachid>
            <date>2011-07-25 21:16:58 -0700</date>
            <delta_ts>2011-07-26 10:53:54 -0700</delta_ts>
            <desc>patch (no speed regression this time)</desc>
            <filename>bug-63339-20110725211657.patch</filename>
            <type>text/plain</type>
            <size>106966</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE2MzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTEtMDctMjIgIEp1YW4gQy4gTW9udGVtYXlvciAgPGptb250QGFwcGxlLmNvbT4KKworICAg
ICAgICBKU09OIGVycm9ycyBzaG91bGQgYmUgaW5mb3JtYXRpdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMzM5CisKKyAgICAgICAgQWRkZWQgZXJy
b3IgbWVzc2FnZXMgdG8gdGhlIEpTT04gUGFyc2VyLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNPTlByb3RvRnVuY1BhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyOjpMZXhlcjo6bGV4KToKKyAg
ICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjo6TGV4ZXI6OmxleFN0cmluZyk6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI6OkxleGVyOjpsZXhOdW1iZXIpOgorICAgICAgICAoSlNDOjpMaXRl
cmFsUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmg6Cisg
ICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OmdldEVycm9yTWVzc2FnZSk6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI6OkxleGVyOjpzYXdFcnJvcik6CisgICAgICAgIChKU0M6OkxpdGVy
YWxQYXJzZXI6OkxleGVyOjpnZXRFcnJvck1lc3NhZ2UpOgorCiAyMDExLTA3LTIyICBTb21tZXIg
UGFuYWdlICA8cGFuYWdlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIg
SHVudC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCShyZXZpc2lvbiA5MTMyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTksNyArODE5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdQogICAgIExpdGVyYWxQYXJzZXIganNvblBh
cnNlcihleGVjLCBzb3VyY2UuY2hhcmFjdGVycygpLCBzb3VyY2UubGVuZ3RoKCksIExpdGVyYWxQ
YXJzZXI6OlN0cmljdEpTT04pOwogICAgIEpTVmFsdWUgdW5maWx0ZXJlZCA9IGpzb25QYXJzZXIu
dHJ5TGl0ZXJhbFBhcnNlKCk7CiAgICAgaWYgKCF1bmZpbHRlcmVkKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJVbmFibGUgdG8gcGFy
c2UgSlNPTiBzdHJpbmciKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNlci5nZXRFcnJvck1lc3NhZ2UoKSkpOwogICAg
IAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHVuZmlsdGVyZWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHJldmlzaW9uIDkxMzI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzNiwxMSArMjM2LDE0IEBAIHRlbXBsYXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJNb2Rl
IG1vZGUKICAgICAgICAgICAgIHJldHVybiBUb2tJZGVudGlmaWVyOwogICAgICAgICB9CiAgICAg
ICAgIGlmICgqbV9wdHIgPT0gJ1wnJykgewotICAgICAgICAgICAgaWYgKG1vZGUgPT0gU3RyaWN0
SlNPTikKKyAgICAgICAgICAgIGlmIChtb2RlID09IFN0cmljdEpTT04pIHsKKyAgICAgICAgICAg
ICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJTaW5nbGUgcXVvdGVzIChcJykgYXJlIG5vdCBhbGxv
d2VkIGluIEpTT04iOwogICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJldHVybiBsZXhTdHJpbmc8bW9kZSwgJ1wnJz4odG9rZW4pOwog
ICAgICAgICB9CiAgICAgfQorICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQo
IlVucmVjb2duaXplZCB0b2tlbiAnJWMnIiwgKm1fcHRyKS5pbXBsKCk7CiAgICAgcmV0dXJuIFRv
a0Vycm9yOwogfQogCkBAIC0yNzQsOCArMjc3LDEwIEBAIHRlbXBsYXRlIDxMaXRlcmFsUGFyc2Vy
OjpQYXJzZXJNb2RlIG1vZGUKICAgICAgICAgICAgIGlmIChidWlsZGVyLmlzRW1wdHkoKSAmJiBy
dW5TdGFydCA8IG1fcHRyKQogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJ1blN0YXJ0
LCBtX3B0ciAtIHJ1blN0YXJ0KTsKICAgICAgICAgICAgICsrbV9wdHI7Ci0gICAgICAgICAgICBp
ZiAobV9wdHIgPj0gbV9lbmQpCisgICAgICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQpIHsKKyAg
ICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIjsK
ICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBzd2l0Y2ggKCptX3B0cikgewogICAgICAgICAgICAgICAgIGNhc2UgJyInOgogICAgICAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwpAQCAtMzExLDExICszMTYsMTUgQEAg
dGVtcGxhdGUgPExpdGVyYWxQYXJzZXI6OlBhcnNlck1vZGUgbW9kZQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgICAg
ICAgICBpZiAoKG1fZW5kIC0gbV9wdHIpIDwgNSkgLy8gdU5OTk4gPT0gNSBjaGFyYWN0ZXJzCisg
ICAgICAgICAgICAgICAgICAgIGlmICgobV9lbmQgLSBtX3B0cikgPCA1KSB7IAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiXFx1IG11c3QgYmUgZm9sbG93ZWQg
YnkgNCBoZXggZGlnaXRzIjsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJv
cjsKKyAgICAgICAgICAgICAgICAgICAgfSAvLyB1Tk5OTiA9PSA1IGNoYXJhY3RlcnMKICAgICAg
ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCA1OyBpKyspIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KG1fcHRyW2ldKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KG1fcHRyW2ldKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlwi
XFwlc1wiIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlIiwgVVN0cmluZyhtX3B0ciwgNSku
YXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gVG9rRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoSlNDOjpMZXhlcjo6Y29u
dmVydFVuaWNvZGUobV9wdHJbMV0sIG1fcHRyWzJdLCBtX3B0clszXSwgbV9wdHJbNF0pKTsKICAg
ICAgICAgICAgICAgICAgICAgbV9wdHIgKz0gNTsKQEAgLTMyNywxMyArMzM2LDE2IEBAIHRlbXBs
YXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJNb2RlIG1vZGUKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcHRyKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IFN0cmlu
Zzo6Zm9ybWF0KCJJbnZhbGlkIGVzY2FwZSBjaGFyYWN0ZXIgJWMiLCAqbV9wdHIpLmltcGwoKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfSB3aGlsZSAoKG1vZGUgIT0gTm9uU3RyaWN0SlNPTikgJiYgbV9wdHIgIT0g
cnVuU3RhcnQgJiYgKG1fcHRyIDwgbV9lbmQpICYmICptX3B0ciAhPSB0ZXJtaW5hdG9yKTsKIAot
ICAgIGlmIChtX3B0ciA+PSBtX2VuZCB8fCAqbV9wdHIgIT0gdGVybWluYXRvcikKKyAgICBpZiAo
bV9wdHIgPj0gbV9lbmQgfHwgKm1fcHRyICE9IHRlcm1pbmF0b3IpIHsKKyAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSAiVW50ZXJtaW5hdGVkIHN0cmluZyI7CiAgICAgICAgIHJldHVybiBUb2tF
cnJvcjsKKyAgICB9CiAKICAgICBpZiAoYnVpbGRlci5pc0VtcHR5KCkpIHsKICAgICAgICAgdG9r
ZW4uc3RyaW5nQnVmZmVyID0gVVN0cmluZygpOwpAQCAtMzc2LDE1ICszODgsMTkgQEAgTGl0ZXJh
bFBhcnNlcjo6VG9rZW5UeXBlIExpdGVyYWxQYXJzZXI6OgogICAgICAgICAvLyBbMC05XSoKICAg
ICAgICAgd2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNBU0NJSURpZ2l0KCptX3B0cikpCiAgICAg
ICAgICAgICArK21fcHRyOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CisgICAgICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gIkludmFsaWQgbnVtYmVyIjsKICAgICAgICAgcmV0dXJuIFRva0Vycm9y
OworICAgIH0KIAogICAgIC8vICgnLicgWzAtOV0rKT8KICAgICBpZiAobV9wdHIgPCBtX2VuZCAm
JiAqbV9wdHIgPT0gJy4nKSB7CiAgICAgICAgICsrbV9wdHI7CiAgICAgICAgIC8vIFswLTldKwot
ICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKQorICAg
ICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7CisgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJJbnZhbGlkIGRpZ2l0cyBhZnRlciBkZWNpbWFs
IHBvaW50IjsKICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKKyAgICAgICAgfQogCiAgICAg
ICAgICsrbV9wdHI7CiAgICAgICAgIHdoaWxlIChtX3B0ciA8IG1fZW5kICYmIGlzQVNDSUlEaWdp
dCgqbV9wdHIpKQpAQCAtNDE2LDggKzQzMiwxMCBAQCBMaXRlcmFsUGFyc2VyOjpUb2tlblR5cGUg
TGl0ZXJhbFBhcnNlcjo6CiAgICAgICAgICAgICArK21fcHRyOwogCiAgICAgICAgIC8vIFswLTld
KwotICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKQor
ICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7Cisg
ICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJFeHBvbmVudCBzeW1ib2xzIHNob3VsZCBi
ZSBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCAnKycgb3IgJy0nIGFuZCB0aGVuIGJ5IGF0IGxlYXN0
IG9uZSBudW1iZXIiOwogICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOworICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICArK21fcHRyOwogICAgICAgICB3aGlsZSAobV9wdHIgPCBtX2VuZCAm
JiBpc0FTQ0lJRGlnaXQoKm1fcHRyKSkKQEAgLTQ1OCw4ICs0NzYsMTAgQEAgSlNWYWx1ZSBMaXRl
cmFsUGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAgICAgICAgY2FzZSBEb1BhcnNlQXJy
YXlTdGFydEV4cHJlc3Npb246IHsKICAgICAgICAgICAgICAgICBUb2tlblR5cGUgbGFzdFRva2Vu
ID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlOwogICAgICAgICAgICAgICAgIGlmIChtX2xl
eGVyLm5leHQoKSA9PSBUb2tSQnJhY2tldCkgewotICAgICAgICAgICAgICAgICAgICBpZiAobGFz
dFRva2VuID09IFRva0NvbW1hKQorICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFRva2VuID09
IFRva0NvbW1hKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgY29tbWEgYXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uIjsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAg
ICAgICAgIGxhc3RWYWx1ZSA9IG9iamVjdFN0YWNrLmxhc3QoKTsKICAgICAgICAgICAgICAgICAg
ICAgb2JqZWN0U3RhY2sucmVtb3ZlTGFzdCgpOwpAQCAtNDc1LDggKzQ5NSwxMCBAQCBKU1ZhbHVl
IExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRlCiAgICAgICAgICAgICAgICAgaWYgKG1f
bGV4ZXIuY3VycmVudFRva2VuKCkudHlwZSA9PSBUb2tDb21tYSkKICAgICAgICAgICAgICAgICAg
ICAgZ290byBkb1BhcnNlQXJyYXlTdGFydEV4cHJlc3Npb247CiAKLSAgICAgICAgICAgICAgICBp
ZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlICE9IFRva1JCcmFja2V0KQorICAgICAgICAg
ICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgIT0gVG9rUkJyYWNrZXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCAnXSci
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKICAg
ICAgICAgICAgICAgICBsYXN0VmFsdWUgPSBvYmplY3RTdGFjay5sYXN0KCk7CkBAIC00OTMsMTYg
KzUxNSwyMCBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRlCiAgICAg
ICAgICAgICAgICAgICAgIExleGVyOjpMaXRlcmFsUGFyc2VyVG9rZW4gaWRlbnRpZmllclRva2Vu
ID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBDaGVj
ayBmb3IgY29sb24KLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRv
a0NvbG9uKQorICAgICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgIT0gVG9rQ29s
b24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhw
ZWN0ZWQgJzonIGJlZm9yZSB2YWx1ZSBpbiBvYmplY3QgcHJvcGVydHkgZGVmaW5pdGlvbiI7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBtX2xleGVy
Lm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllclN0YWNrLmFwcGVuZChtYWtl
SWRlbnRpZmllcihpZGVudGlmaWVyVG9rZW4uc3RyaW5nVG9rZW4sIGlkZW50aWZpZXJUb2tlbi5z
dHJpbmdMZW5ndGgpKTsKICAgICAgICAgICAgICAgICAgICAgc3RhdGVTdGFjay5hcHBlbmQoRG9Q
YXJzZU9iamVjdEVuZEV4cHJlc3Npb24pOwogICAgICAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0
UGFyc2VFeHByZXNzaW9uOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAo
dHlwZSAhPSBUb2tSQnJhY2UpIAorICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFRva1JCcmFj
ZSkgIHsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3Rl
ZCAnfSciOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKICAgICAgICAgICAgICAg
ICBsYXN0VmFsdWUgPSBvYmplY3RTdGFjay5sYXN0KCk7CiAgICAgICAgICAgICAgICAgb2JqZWN0
U3RhY2sucmVtb3ZlTGFzdCgpOwpAQCAtNTExLDEzICs1MzcsMTcgQEAgSlNWYWx1ZSBMaXRlcmFs
UGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAgICAgICAgZG9QYXJzZU9iamVjdFN0YXJ0
RXhwcmVzc2lvbjoKICAgICAgICAgICAgIGNhc2UgRG9QYXJzZU9iamVjdFN0YXJ0RXhwcmVzc2lv
bjogewogICAgICAgICAgICAgICAgIFRva2VuVHlwZSB0eXBlID0gbV9sZXhlci5uZXh0KCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHR5cGUgIT0gVG9rU3RyaW5nICYmIChtX21vZGUgPT0gU3RyaWN0
SlNPTiB8fCB0eXBlICE9IFRva0lkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIGlmICh0eXBl
ICE9IFRva1N0cmluZyAmJiAobV9tb2RlID09IFN0cmljdEpTT04gfHwgdHlwZSAhPSBUb2tJZGVu
dGlmaWVyKSkgeworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlBy
b3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRlcmFsIjsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
TGV4ZXI6OkxpdGVyYWxQYXJzZXJUb2tlbiBpZGVudGlmaWVyVG9rZW4gPSBtX2xleGVyLmN1cnJl
bnRUb2tlbigpOwogCiAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGNvbG9uCi0gICAgICAg
ICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0NvbG9uKQorICAgICAgICAgICAgICAg
IGlmIChtX2xleGVyLm5leHQoKSAhPSBUb2tDb2xvbikgeworICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICc6JyI7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
bV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgaWRlbnRpZmllclN0YWNrLmFwcGVuZCht
YWtlSWRlbnRpZmllcihpZGVudGlmaWVyVG9rZW4uc3RyaW5nVG9rZW4sIGlkZW50aWZpZXJUb2tl
bi5zdHJpbmdMZW5ndGgpKTsKQEAgLTUzMCw4ICs1NjAsMTAgQEAgSlNWYWx1ZSBMaXRlcmFsUGFy
c2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFjay5y
ZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2VuKCku
dHlwZSA9PSBUb2tDb21tYSkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb1BhcnNlT2JqZWN0
U3RhcnRFeHByZXNzaW9uOwotICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tl
bigpLnR5cGUgIT0gVG9rUkJyYWNlKQorICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJl
bnRUb2tlbigpLnR5cGUgIT0gVG9rUkJyYWNlKSB7CisgICAgICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJ30nIjsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9sZXhl
ci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0gb2JqZWN0U3RhY2subGFzdCgp
OwogICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLnJlbW92ZUxhc3QoKTsKQEAgLTU3MCw5ICs2
MDIsNDMgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZQogICAgICAg
ICAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBsYXN0VmFsdWUgPSBqc0Jvb2xlYW4oZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2tldDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAn
XSciOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2U6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ30nIjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9r
SWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSBTdHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCBpZGVudGlmaWVyIFwiJXNcIiIsIFVTdHJpbmco
bV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdHJpbmdUb2tlbikuYXNjaWkoKS5kYXRhKCkpLmltcGwo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgVG9rQ29sb246CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzonIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rTFBh
cmVuOgorICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIHRva2VuICcoJyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1JQYXJlbjoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKSciOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSBUb2tDb21tYToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLCciOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tEb3Q6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQg
dG9rZW4gJy4nIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQXNzaWduOgorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc9JyI7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBj
YXNlIFRva1NlbWk6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRW5kOgorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIEVPRiI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIFRva0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gRXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiQ291bGQgbm90IHBhcnNlIHZhbHVlIGV4cHJlc3Npb24iOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01ODksNyArNjU1LDUxIEBAIEpTVmFsdWUgTGl0
ZXJhbFBhcnNlcjo6cGFyc2UoUGFyc2VyU3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRlU3RhY2suYXBwZW5kKFN0YXJ0UGFyc2VTdGF0ZW1lbnRFbmRTdGF0ZW1lbnQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgZ290byBzdGFydFBhcnNlRXhwcmVzc2lvbjsKICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1JCcmFja2V0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICddJyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIFRva0xCcmFjZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAneyciOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBU
b2tSQnJhY2U6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
IlVuZXhwZWN0ZWQgdG9rZW4gJ30nIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rSWRlbnRpZmllcjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBpZGVu
dGlmaWVyIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgVG9rQ29sb246CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzonIjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
VG9rUlBhcmVuOgorICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJVbmV4cGVjdGVkIHRva2VuICcpJyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0NvbW1hOgorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcs
JyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIFRva1RydWU6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ3RydWUnIjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9r
RmFsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVu
ZXhwZWN0ZWQgdG9rZW4gJ2ZhbHNlJyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRva051bGw6CisgICAgICAgICAg
ICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ251
bGwnIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgVG9rRW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIEVPRiI7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0RvdDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0
b2tlbiAnLiciOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBUb2tBc3NpZ246CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJz0nIjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgVG9rU2VtaToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCB0b2tlbiAnOyciOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tFcnJvcjoKICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSAiQ291bGQgbm90IHBhcnNlIHN0YXRlbWVudCI7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KQEAgLTU5OSw2ICs3MDksNyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNl
clN0YXRlCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpID09IFRva0VuZCkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGxhc3RWYWx1ZTsKKyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
IlVuZXhwZWN0ZWQgY29udGVudCBhdCBlbmQgb2YgSlNPTiBsaXRlcmFsIjsKICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZGVmYXVs
dDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2Vy
LmgJKHJldmlzaW9uIDkxMzI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0
ZXJhbFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0MywxNSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBVU3RyaW5nIGdl
dEVycm9yTWVzc2FnZSgpIAorICAgICAgICB7IAorICAgICAgICAgICAgaWYgKCFtX2xleGVyLmdl
dEVycm9yTWVzc2FnZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoIkpTT04gUGFyc2UgZXJyb3I6ICVzIiwgbV9sZXhlci5nZXRFcnJvck1lc3NhZ2Uo
KS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOworICAgICAgICAgICAgaWYgKCFtX3BhcnNlRXJyb3JN
ZXNzYWdlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQo
IkpTT04gUGFyc2UgZXJyb3I6ICVzIiwgbV9wYXJzZUVycm9yTWVzc2FnZS5hc2NpaSgpLmRhdGEo
KSkuaW1wbCgpOworICAgICAgICAgICAgcmV0dXJuICJKU09OIFBhcnNlIGVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmciOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBKU1Zh
bHVlIHRyeUxpdGVyYWxQYXJzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fbGV4ZXIubmV4
dCgpOwpAQCAtMTEyLDcgKzEyMSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbV9jdXJyZW50VG9rZW47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIFVTdHJpbmcgZ2V0RXJyb3JNZXNzYWdlKCkgeyByZXR1cm4gbV9sZXhFcnJvck1l
c3NhZ2U7IH0KKyAgICAgICAgICAgIAogICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgVVN0
cmluZyBtX2xleEVycm9yTWVzc2FnZTsKICAgICAgICAgICAgIHRlbXBsYXRlIDxQYXJzZXJNb2Rl
IG1vZGU+IFRva2VuVHlwZSBsZXgoTGl0ZXJhbFBhcnNlclRva2VuJik7CiAgICAgICAgICAgICB0
ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2RlLCBVQ2hhciB0ZXJtaW5hdG9yPiBBTFdBWVNfSU5MSU5F
IFRva2VuVHlwZSBsZXhTdHJpbmcoTGl0ZXJhbFBhcnNlclRva2VuJik7CiAgICAgICAgICAgICBB
TFdBWVNfSU5MSU5FIFRva2VuVHlwZSBsZXhOdW1iZXIoTGl0ZXJhbFBhcnNlclRva2VuJik7CkBA
IC0xMjksNiArMTQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWNTdGF0ZSogbV9l
eGVjOwogICAgICAgICBMaXRlcmFsUGFyc2VyOjpMZXhlciBtX2xleGVyOwogICAgICAgICBQYXJz
ZXJNb2RlIG1fbW9kZTsKKyAgICAgICAgVVN0cmluZyBtX3BhcnNlRXJyb3JNZXNzYWdlOwogICAg
ICAgICBzdGF0aWMgdW5zaWduZWQgY29uc3QgTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyID0gMTI4
OwogICAgICAgICBGaXhlZEFycmF5PElkZW50aWZpZXIsIE1heGltdW1DYWNoYWJsZUNoYXJhY3Rl
cj4gbV9zaG9ydElkZW50aWZpZXJzOwogICAgICAgICBGaXhlZEFycmF5PElkZW50aWZpZXIsIE1h
eGltdW1DYWNoYWJsZUNoYXJhY3Rlcj4gbV9yZWNlbnRJZGVudGlmaWVyczsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDkxNjc3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTEtMDctMjUgIEp1YW4gQy4gTW9udGVtYXlvciAgPGptb250QGFw
cGxlLmNvbT4KKworICAgICAgICBKU09OIGVycm9ycyBzaG91bGQgYmUgaW5mb3JtYXRpdmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMzM5CisKKyAg
ICAgICAgVXBkYXRlZCBleHBlY3RlZCB0ZXN0IHJlc3VsdHMuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2pzL0pTT04tcGFyc2UtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvanMvSlNPTi1wYXJzZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDExLTA3LTI1ICBNaWtlIFJlZWQgIDxyZWVkQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgZGlzYWJsZSB0ZXN0cyBwZW5kaW5nIHJlYmFzZWxpbmUgd2l0aCBy
b3RhdGVkIHRleHQgZml4CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL0pTT04tcGFyc2UtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvSlNPTi1wYXJzZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDkxMzI5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9KU09O
LXBhcnNlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAgUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpbwogZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJycpOwogICAgIH0KLVBBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8g
cGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5leHBlY3RlZCBFT0YuCiBmdW5j
dGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMScp
OwogICAgIH0KQEAgLTE3LDExICsxNywxMSBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgnSW5maW5pdHknKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAiSW5maW5pdHk/Ii4K
IGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KCdOYU4nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tp
XShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJy
b3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAiTmFOIi4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdudWxsJyk7CiAgICAgfQpAQCAtMjks
NyArMjksNyBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5j
dGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgndW5k
ZWZpbmVkJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNb
aV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVy
cm9yOiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgInVuZGVmaW5lZCIuCiBmdW5jdGlvbiAoanNvbk9i
amVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgne30nKTsKICAgICB9CkBA
IC0zNywzMSArMzcsMzEgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09O
KQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJyh7fSknKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2Ug
ZXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJygnLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAg
ICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3thfScpOwogICAgIH0KLVBBU1MgdGVzdHNb
aV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFy
c2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgJ30nLgogZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3thOn0nKTsK
ICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IEV4cGVj
dGVkICd9Jy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCd7YTo1fScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQ
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNP
TiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgJ30nLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAg
ICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3thOjUsfScpOwogICAgIH0KLVBBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8g
cGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQgJ30nLgogZnVuY3Rp
b24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSJ9
Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0
aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBF
eHBlY3RlZCAnOicgYmVmb3JlIHZhbHVlIGluIG9iamVjdCBwcm9wZXJ0eSBkZWZpbml0aW9uLgog
ZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2Uo
J3siYSI6fScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3Rz
W2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBl
cnJvcjogVW5leHBlY3RlZCB0b2tlbiAnfScuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAg
ICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJhIjo1fScpOwogICAgIH0KQEAgLTczLDIw
ICs3MywyMCBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5j
dGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJh
Ijo1LH0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tp
XShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJy
b3I6IFByb3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRlcmFsLgoganNvbjIuanMgZGlk
IG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1bmN0aW9uIChqc29u
T2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7ImEiOjUsLH0nKTsK
ICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFByb3Bl
cnR5IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRlcmFsLgogZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6NSwiYSIsfScpOwogICAg
IH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogRXhwZWN0ZWQg
JzonLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJ3siYSI6KDUsImEiKSx9Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09O
KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmlu
Zy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBKU09OIFBhcnNlIGVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcoJy4KIGZ1bmN0aW9uIChqc29u
T2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbXScpOwogICAgIH0K
QEAgLTk4LDcgKzk4LDcgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09O
KQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJ1sxLF0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2Ug
ZXJyb3I6IFVuZXhwZWN0ZWQgY29tbWEgYXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uLgog
anNvbjIuanMgZGlkIG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1
bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdb
MSwyXScpOwpAQCAtMTA3LDEyICsxMDcsMTIgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tp
XShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJ1sxLDIsLF0nKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywnLgoganNvbjIuanMgZGlk
IG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KIGZ1bmN0aW9uIChqc29u
T2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbMSwyLCw0XScpOwog
ICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5leHBl
Y3RlZCB0b2tlbiAnLCcuCiBqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qgd2UgZXhw
ZWN0IHRvIHRocm93LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJyIiJyk7CkBAIC0xMjksMTUgKzEyOSwxNSBAQCBQQVNTIEpTT04uc3Ry
aW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAg
ICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXCInKTsKICAgICB9Ci1QQVNTIHRlc3Rz
W2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBh
cnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVudGVybWluYXRlZCBzdHJpbmcuCiBm
dW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgn
ImFcXHoiJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNb
aV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVy
cm9yOiBJbnZhbGlkIGVzY2FwZSBjaGFyYWN0ZXIgei4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcXHoiJyk7CiAgICAgfQotUEFT
UyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJs
ZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBJbnZhbGlkIGVzY2FwZSBj
aGFyYWN0ZXIgei4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29u
T2JqZWN0LnBhcnNlKCciYVxcXFx6IicpOwogICAgIH0KQEAgLTE1Myw3ICsxNTMsNyBAQCBQQVNT
IEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVj
dCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcbnoiJyk7CiAgICAgfQot
UEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVu
YWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbnRlcm1pbmF0ZWQg
c3RyaW5nLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmpl
Y3QucGFyc2UoJyJhXFxueiInKTsKICAgICB9CkBAIC0xNjEsNyArMTYxLDcgQEAgUEFTUyBKU09O
LnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
ICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXHJ6IicpOwogICAgIH0KLVBBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW50ZXJtaW5hdGVkIHN0cmlu
Zy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCciYVxccnoiJyk7CiAgICAgfQpAQCAtMTc3LDcgKzE3Nyw3IEBAIFBBU1MgSlNPTi5zdHJp
bmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAg
ICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxieiInKTsKICAgICB9Ci1QQVNTIHRlc3Rz
W2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBh
cnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVudGVybWluYXRlZCBzdHJpbmcuCiBq
c29uMi5qcyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgogZnVu
Y3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJh
XFxieiInKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgnImFccnoiJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09O
KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmlu
Zy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBKU09OIFBhcnNlIGVycm9yOiBVbnRlcm1pbmF0ZWQgc3RyaW5nLgogZnVuY3Rpb24gKGpzb25P
YmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFxyeiInKTsKICAg
ICB9CkBAIC0xOTQsMTkgKzE5NCwxOSBAQCBQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5h
dGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9i
amVjdC5wYXJzZSgnImFcXHV6IiAgICAgJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0
cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBKU09OIFBhcnNlIGVycm9yOiAiXHV6IiAgIiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVz
Y2FwZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKCciYVxcdTB6IiAgICAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5n
LgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IEpTT04gUGFyc2UgZXJyb3I6ICJcdTB6IiAiIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBl
LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJyJhXFx1MDB6IiAgICcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQ
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNP
TiBQYXJzZSBlcnJvcjogIlx1MDB6IiIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUuCiBm
dW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgn
ImFcXHUwMDB6IiAgJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBh
cnNlIGVycm9yOiAiXHUwMDB6IiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0
aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxc
dTAwMDB6IiAnKTsKICAgICB9CkBAIC0yMjIsMTEgKzIyMiwxMSBAQCBQQVNTIEpTT04uc3RyaW5n
aWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwMDBHeiIgJyk7CiAgICAgfQotUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0
byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiAiXHUwMDBHIiBpcyBub3QgYSB2
YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJl
dHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwMGd6IiAnKTsKICAgICB9Ci1QQVNTIHRlc3Rz
W2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBh
cnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6ICJcdTAwMGciIGlzIG5vdCBhIHZhbGlk
IHVuaWNvZGUgZXNjYXBlLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDBBMHoiICcpOwogICAgIH0KQEAgLTIzOCwxMSArMjM4
LDExIEBAIFBBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikKIGZ1bmN0aW9u
IChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAw
RzB6IiAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tp
XShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJy
b3I6ICJcdTAwRzAiIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlLgogZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDBnMHoi
ICcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5h
dGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjog
Ilx1MDBnMCIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUuCiBmdW5jdGlvbiAoanNvbk9i
amVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwQTAweiIgJyk7
CiAgICAgfQpAQCAtMjU0LDExICsyNTQsMTEgQEAgUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tp
XShuYXRpdmVKU09OKQogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJyJhXFx1MEcwMHoiICcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0
aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNP
TiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogIlx1MEcwMCIgaXMgbm90IGEgdmFsaWQgdW5pY29k
ZSBlc2NhcGUuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9i
amVjdC5wYXJzZSgnImFcXHUwZzAweiIgJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0
cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBKU09OIFBhcnNlIGVycm9yOiAiXHUwZzAwIiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVz
Y2FwZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKCciYVxcdUEwMDB6IiAnKTsKICAgICB9CkBAIC0yNzAsNzEgKzI3MCw3MSBAQCBQQVNT
IEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pCiBmdW5jdGlvbiAoanNvbk9iamVj
dCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHVHMDAweiIgJyk7CiAg
ICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiAiXHVHMDAw
IiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVzY2FwZS4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7
CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdWcwMDB6IiAnKTsKICAgICB9
Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
VW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6ICJcdWcwMDAiIGlz
IG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAg
ICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzAwJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tp
XShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJz
ZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJp
bmcuCiBqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93
LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJzAxJyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVzdHNb
aV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVy
cm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCiBqc29uMi5qcyBkaWQgbm90IHRocm93
IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
ICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzAuYScpOwogICAgIH0KLVBBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8g
cGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogSW52YWxpZCBkaWdpdHMgYWZ0ZXIg
ZGVjaW1hbCBwb2ludC4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBq
c29uT2JqZWN0LnBhcnNlKCcweDAnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5n
LgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IEpTT04gUGFyc2UgZXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KIGZ1bmN0aW9u
IChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcyZTEuMycp
OwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2
ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogVW5h
YmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzJlLSsxMCcpOwogICAgIH0KLVBBU1MgdGVzdHNb
aV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFy
c2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogRXhwb25lbnQgc3ltYm9scyBzaG91bGQg
YmUgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgJysnIG9yICctJyBhbmQgdGhlbiBieSBhdCBsZWFz
dCBvbmUgbnVtYmVyLgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJzJlKy0xMCcpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJp
bmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogSlNPTiBQYXJzZSBlcnJvcjogRXhwb25lbnQgc3ltYm9scyBzaG91bGQgYmUgZm9sbG93ZWQg
YnkgYW4gb3B0aW9uYWwgJysnIG9yICctJyBhbmQgdGhlbiBieSBhdCBsZWFzdCBvbmUgbnVtYmVy
LgogZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJzJlM2U0Jyk7CiAgICAgfQotUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK1BBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNl
IGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCiBmdW5jdGlvbiAoanNvbk9iamVj
dCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnLTAxLjAnKTsKICAgICB9Ci1Q
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5h
YmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVuYWJsZSB0byBwYXJz
ZSBKU09OIHN0cmluZy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBq
c29uT2JqZWN0LnBhcnNlKCctMDEnKTsKICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5n
LgorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IEpTT04gUGFyc2UgZXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KIGpzb24yLmpz
IGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cuCiBmdW5jdGlvbiAo
anNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnLTAxLmEnKTsK
ICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IEludmFs
aWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwgcG9pbnQuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewog
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMS5lMScpOwogICAgIH0KLVBBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8g
cGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjogSW52YWxpZCBkaWdpdHMgYWZ0ZXIg
ZGVjaW1hbCBwb2ludC4KIGpzb24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBleHBl
Y3QgdG8gdGhyb3cuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgney8qIGJsb2NrIGNvbW1lbnRzIGFyZSBub3QgYWxsb3dlZCAqL30nKTsK
ICAgICB9Ci1QQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6IFVucmVj
b2duaXplZCB0b2tlbiAnLycuCiBmdW5jdGlvbiAoanNvbk9iamVjdCkgewogICAgICAgICByZXR1
cm4ganNvbk9iamVjdC5wYXJzZSgney8vIGxpbmUgY29tbWVudHMgYXJlIG5vdCBhbGxvd2VkIFxu
fScpOwogICAgIH0KLVBBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitQQVNTIHRlc3RzW2ldKG5h
dGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNPTiBQYXJzZSBlcnJvcjog
VW5yZWNvZ25pemVkIHRva2VuICcvJy4KIGZ1bmN0aW9uIChqc29uT2JqZWN0KSB7CiAgICAgICAg
IHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd0cnVlJyk7CiAgICAgfQpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9qcy9KU09OLXBhcnNlLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2pzL0pTT04tcGFy
c2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9qcy9KU09OLXBhcnNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxODA2IEBACitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBKU09OLnBhcnNlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBwYXJhbWV0
ZXIuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgnJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChq
c29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcxJyk7CisgICAg
fQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJp
bmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnLTEnKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkK
K2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KCdJbmZpbml0eScpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlv
biAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnTmFOJyk7
CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0
KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdudWxsJyk7CisgICAgfQorUEFT
UyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnko
dGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgndW5kZWZpbmVkJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCd7fScpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0
aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyh7fSknKTsKKyAg
ICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
KyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3thfScpOworICAgIH0KK1BBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8g
cGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1
cm4ganNvbk9iamVjdC5wYXJzZSgne2E6fScpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVj
dC5wYXJzZSgne2E6NX0nKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVu
Y3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3th
OjUsfScpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNv
bk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJhIn0nKTsKKyAg
ICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
KyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6fScpOworICAgIH0KK1BBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJhIjo1fScpOworICAgIH0KK1BBU1MgSlNPTi5zdHJp
bmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpT
T04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJ3siX19wcm90b19fIjo1fScpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVz
dHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVu
Y3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3si
YSI6NSx9Jyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2pzb24yLmpzIGRp
ZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cuCitmdW5jdGlvbiAoanNv
bk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJhIjo1LCx9Jyk7
CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0
KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7ImEiOjUsImEiLH0nKTsKKyAg
ICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
KyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6KDUsImEiKSx9Jyk7CisgICAg
fQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7Cisg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbXScpOworICAgIH0KK1BBU1MgSlNPTi5z
dHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmpl
Y3QucGFyc2UoJ1sxXScpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0
aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ1sxLF0nKTsKKyAg
ICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgoranNvbjIuanMgZGlkIG5vdCB0aHJvdyBm
b3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7Cisg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbMSwyXScpOworICAgIH0KK1BBU1MgSlNP
Ti5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3Rz
W2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoJ1sxLDIsLF0nKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5n
LgoranNvbjIuanMgZGlkIG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4K
K2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KCdbMSwyLCw0XScpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitqc29uMi5q
cyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgorZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyIiJyk7Cisg
ICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5z
dHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnIlwnIicpOworICAgIH0KK1BBU1MgSlNPTi5zdHJp
bmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpT
T04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJyJhXCInKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2
ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29u
T2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcIicpOworICAg
IH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgewor
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHoiJyk7CisgICAgfQorUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0
byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJl
dHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcXHoiJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShu
YXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBK
U09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29u
T2JqZWN0LnBhcnNlKCciYVxcXFx6IicpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVz
dHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVu
Y3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJh
XHR6IicpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikp
IGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx0eiInKTsKKyAgICB9CitQ
QVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lm
eSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVy
biBqc29uT2JqZWN0LnBhcnNlKCciYVxueiInKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2
ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04g
c3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmpl
Y3QucGFyc2UoJyJhXFxueiInKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9u
IChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxyeiIn
KTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFxyeiInKTsKKyAgICB9
CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmlu
Z2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJl
dHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVwveiInKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5n
aWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09O
KSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCciYVxcL3oiJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRp
dmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNv
bk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcYnoiJyk7Cisg
ICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2pzb24yLmpzIGRpZCBub3QgdGhyb3cg
Zm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgewor
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXGJ6IicpOworICAgIH0KK1BBU1Mg
SlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRl
c3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJyJhXHJ6IicpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJp
bmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgnImFcXHJ6IicpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0
aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1eiIgICAg
ICcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9i
amVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUweiIgICAgJyk7
CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0
KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAweiIgICAnKTsKKyAg
ICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
KyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDAweiIgICcpOworICAgIH0K
K1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBV
bmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAg
ICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwMDAweiIgJyk7CisgICAgfQorUEFT
UyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnko
dGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgnImFcXHUwMDBBeiIgJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmlu
Z2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNP
TikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgnImFcXHUwMDBheiIgJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tp
XShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlv
biAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUw
MDBHeiIgJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChq
c29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwMGd6
IiAnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25P
YmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDBBMHoiICcp
OworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpT
T04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAg
ICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDBhMHoiICcpOworICAgIH0KK1BB
U1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDBHMHoiICcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0o
bmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2Ug
SlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgnImFcXHUwMGcweiIgJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCciYVxcdTBBMDB6IiAnKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRl
c3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1
bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCci
YVxcdTBhMDB6IiAnKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2
ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29u
T2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTBHMDB6IiAn
KTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MGcwMHoiICcpOwor
ICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkg
eworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHVBMDAweiIgJyk7CisgICAg
fQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJp
bmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHVhMDAweiIgJyk7CisgICAgfQorUEFTUyBKU09O
LnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNb
aV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9i
amVjdC5wYXJzZSgnImFcXHVHMDAweiIgJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0
cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKCciYVxcdWcwMDB6IiAnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5n
LgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJzAwJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2pzb24yLmpzIGRp
ZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cuCitmdW5jdGlvbiAoanNv
bk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMDEnKTsKKyAgICB9
CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
VW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgoranNvbjIuanMgZGlkIG5vdCB0aHJvdyBmb3Ig
YSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAg
ICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcwLmEnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNl
IEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJzB4MCcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcu
CitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJz
ZSgnMmUxLjMnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzJlLSsxMCcp
OworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVj
dCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMmUrLTEwJyk7CisgICAgfQor
UEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVu
YWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAg
ICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcyZTNlNCcpOworICAgIH0KK1BBU1MgdGVzdHNb
aV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFy
c2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgnLTAxLjAnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJy0wMScpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitqc29uMi5q
cyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgorZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJy0wMS5hJyk7
CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0
KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcxLmUxJyk7CisgICAgfQorUEFT
UyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJs
ZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2pzb24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVz
dCB3ZSBleHBlY3QgdG8gdGhyb3cuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZSgney8qIGJsb2NrIGNvbW1lbnRzIGFyZSBub3QgYWxsb3dl
ZCAqL30nKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3svLyBsaW5lIGNv
bW1lbnRzIGFyZSBub3QgYWxsb3dlZCBcbn0nKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2
ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04g
c3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmpl
Y3QucGFyc2UoJ3RydWUnKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5h
dGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChq
c29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdmYWxzZScpOwor
ICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04u
c3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoc2ltcGxlT2JqZWN0KSk7
CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgdGVz
dHNbaV0uZXhwZWN0ZWQKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBq
c29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmplY3QpKTsKKyAgICB9CitQ
QVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lm
eSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVy
biBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmplY3QpKTsKKyAgICB9
CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyB0ZXN0c1tpXS5l
eHBlY3RlZAorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmpl
Y3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoc2ltcGxlT2JqZWN0LG51bGwsMTAwKSk7CisgICAgfQor
UEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgdGVzdHNbaV0uZXhw
ZWN0ZWQKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmplY3QsbnVsbCwxMDApKTsKKyAgICB9CitQ
QVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lm
eSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVy
biBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmplY3QsbnVsbCwxMDAp
KTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyB0
ZXN0c1tpXS5leHBlY3RlZAorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoc2ltcGxlT2JqZWN0LG51bGwsIiAiKSk7
CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgdGVz
dHNbaV0uZXhwZWN0ZWQKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBq
c29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmplY3QsbnVsbCwiICIpKTsK
KyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09O
LnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAg
ICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmplY3Qs
bnVsbCwiICIpKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpT
T04pKSBpcyB0ZXN0c1tpXS5leHBlY3RlZAorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoc2ltcGxlT2JqZWN0LG51
bGwsIlx0IikpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNP
TikpIGlzIHRlc3RzW2ldLmV4cGVjdGVkCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0LG51
bGwsIlx0IikpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNP
TikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29t
cGxleE9iamVjdCxudWxsLCJcdCIpKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3Rz
W2ldKG5hdGl2ZUpTT04pKSBpcyB0ZXN0c1tpXS5leHBlY3RlZAorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoc2lt
cGxlT2JqZWN0LG51bGwsIlxuIikpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNb
aV0obmF0aXZlSlNPTikpIGlzIHRlc3RzW2ldLmV4cGVjdGVkCitmdW5jdGlvbiAoanNvbk9iamVj
dCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21w
bGV4T2JqZWN0LG51bGwsIlxuIikpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNb
aV0obmF0aXZlSlNPTikpIGlzIHRlc3RzW2ldLmV4cGVjdGVkCitmdW5jdGlvbiAoanNvbk9iamVj
dCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgidHJ1ZSIsIGxvZyk7CisgICAg
fQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJp
bmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZSgiZmFsc2UiLCBsb2cpOworICAgIH0KK1BBU1MgSlNPTi5z
dHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmpl
Y3QucGFyc2UoIm51bGwiLCBsb2cpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNb
aV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rp
b24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoIjEiLCBs
b2cpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlz
IEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
KyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoIjEuNSIsIGxvZyk7CisgICAgfQorUEFT
UyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnko
dGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgnImEgc3RyaW5nIicsIGxvZyk7CisgICAgfQorUEFTUyBKU09OLnN0
cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0o
SlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVj
dC5wYXJzZShKU09OLnN0cmluZ2lmeShzaW1wbGVBcnJheSksIGxvZyk7CisgICAgfQorUEFTUyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVz
dHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4QXJyYXkpLCBsb2cpOworICAgIH0K
K1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5n
aWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0
dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoc2ltcGxlT2JqZWN0KSwgbG9nKTsK
KyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09O
LnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAg
ICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmplY3Qp
LCBsb2cpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikp
IGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siX19wcm90b19fIjp7ImEiOjV9
fScsIGxvZyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09O
KSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVj
dCkgeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICByZXR1cm4ganNvbk9i
amVjdC5wYXJzZSgidHJ1ZSIsIGxvZ09yZGVyKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkK
K2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7Cisg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCJmYWxzZSIsIGxvZ09yZGVyKTsKKyAgICB9
CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmlu
Z2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxv
Z09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCJudWxs
IiwgbG9nT3JkZXIpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZl
SlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25P
YmplY3QpIHsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoIjEiLCBsb2dPcmRlcik7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lm
eSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikp
CitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOwor
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgiMS41IiwgbG9nT3JkZXIpOworICAgIH0K
K1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5n
aWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgbG9n
T3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhIHN0
cmluZyInLCBsb2dPcmRlcik7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShu
YXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAo
anNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICByZXR1
cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShzaW1wbGVBcnJheSksIGxvZ09yZGVy
KTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7Cisg
ICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhBcnJheSksIGxvZ09yZGVyKTsKKyAgICB9CitQQVNT
IEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0
ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVy
U3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5n
aWZ5KHNpbXBsZU9iamVjdCksIGxvZ09yZGVyKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkK
K2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7Cisg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmpl
Y3QpLCBsb2dPcmRlcik7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRp
dmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNv
bk9iamVjdCkgeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICBqc29uT2Jq
ZWN0LnBhcnNlKCJ0cnVlIiwgbG9nT3JkZXIpOworICAgICAgICByZXR1cm4gbG9nT3JkZXJTdHJp
bmc7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMg
SlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgewor
ICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICBqc29uT2JqZWN0LnBhcnNlKCJm
YWxzZSIsIGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJuIGxvZ09yZGVyU3RyaW5nOworICAgIH0K
K1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5n
aWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgbG9n
T3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAganNvbk9iamVjdC5wYXJzZSgibnVsbCIsIGxvZ09y
ZGVyKTsKKyAgICAgICAgcmV0dXJuIGxvZ09yZGVyU3RyaW5nOworICAgIH0KK1BBU1MgSlNPTi5z
dHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcg
PSAiIjsKKyAgICAgICAganNvbk9iamVjdC5wYXJzZSgiMSIsIGxvZ09yZGVyKTsKKyAgICAgICAg
cmV0dXJuIGxvZ09yZGVyU3RyaW5nOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNb
aV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rp
b24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAg
anNvbk9iamVjdC5wYXJzZSgiMS41IiwgbG9nT3JkZXIpOworICAgICAgICByZXR1cm4gbG9nT3Jk
ZXJTdHJpbmc7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09O
KSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVj
dCkgeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICBqc29uT2JqZWN0LnBh
cnNlKCciYSBzdHJpbmciJywgbG9nT3JkZXIpOworICAgICAgICByZXR1cm4gbG9nT3JkZXJTdHJp
bmc7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMg
SlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgewor
ICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICBqc29uT2JqZWN0LnBhcnNlKEpT
T04uc3RyaW5naWZ5KHNpbXBsZUFycmF5KSwgbG9nT3JkZXIpOworICAgICAgICByZXR1cm4gbG9n
T3JkZXJTdHJpbmc7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVK
U09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9i
amVjdCkgeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICBqc29uT2JqZWN0
LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhBcnJheSksIGxvZ09yZGVyKTsKKyAgICAgICAg
cmV0dXJuIGxvZ09yZGVyU3RyaW5nOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNb
aV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rp
b24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAg
anNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShzaW1wbGVPYmplY3QpLCBsb2dPcmRlcik7
CisgICAgICAgIHJldHVybiBsb2dPcmRlclN0cmluZzsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5n
aWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09O
KSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7
CisgICAgICAgIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGxleE9iamVjdCks
IGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJuIGxvZ09yZGVyU3RyaW5nOworICAgIH0KK1BBU1Mg
SlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRl
c3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgY2FsbENvdW50
ID0gMDsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGxleEFycmF5KSwgdGhyb3dBZnRlckZpZnRo
Q2FsbCk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24g
ZnJvbSByZXZpdmVyLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgY2FsbENvdW50
ID0gMDsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoc2ltcGxlT2JqZWN0KSwgdGhyb3dBZnRlckZpZnRo
Q2FsbCk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkg
aXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkg
eworICAgICAgICBjYWxsQ291bnQgPSAwOworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOwor
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4T2Jq
ZWN0KSwgdGhyb3dBZnRlckZpZnRoQ2FsbCk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gZnJvbSByZXZpdmVyLgorZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKKyAgICAgICAgY2FsbENvdW50ID0gMDsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsK
KyAgICAgICAgdHJ5IHsganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4QXJy
YXkpLCB0aHJvd0FmdGVyRmlmdGhDYWxsKTsgfSBjYXRjaCAoZSkge30KKyAgICAgICAgcmV0dXJu
IGxvZ09yZGVyU3RyaW5nOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0
aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKKyAgICAgICAgY2FsbENvdW50ID0gMDsKKyAgICAgICAgbG9nT3JkZXJTdHJp
bmcgPSAiIjsKKyAgICAgICAgdHJ5IHsganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShz
aW1wbGVPYmplY3QpLCB0aHJvd0FmdGVyRmlmdGhDYWxsKTsgfSBjYXRjaCAoZSkge30KKyAgICAg
ICAgcmV0dXJuIGxvZ09yZGVyU3RyaW5nOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVz
dHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVu
Y3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgY2FsbENvdW50ID0gMDsKKyAgICAgICAgbG9n
T3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAgdHJ5IHsganNvbk9iamVjdC5wYXJzZShKU09OLnN0
cmluZ2lmeShjb21wbGV4T2JqZWN0KSwgdGhyb3dBZnRlckZpZnRoQ2FsbCk7IH0gY2F0Y2ggKGUp
IHt9CisgICAgICAgIHJldHVybiBsb2dPcmRlclN0cmluZzsKKyAgICB9CitQQVNTIEpTT04uc3Ry
aW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShK
U09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKEpTT04uc3RyaW5naWZ5KHVuaWNvZGUpKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5h
dGl2ZUpTT04pIGlzIHRlc3RzW2ldLnVuc3RyaW5naWZpZWRFeHBlY3RlZAorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKK2Z1bmN0aW9uIChqc29uT2Jq
ZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCk7CisgICAgfQorUEFTUyB0
ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEpTT04ucGFyc2UgcmVx
dWlyZXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlci4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7Cisg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNl
IEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJzEnKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9u
IChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCctMScpOwor
ICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04u
c3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ0luZmluaXR5Jyk7CisgICAgfQorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBw
YXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVy
biBqc29uT2JqZWN0LnBhcnNlKCdOYU4nKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJ251bGwnKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2
ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29u
T2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd1bmRlZmluZWQnKTsK
KyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3t9Jyk7CisgICAgfQorUEFTUyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVz
dHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgnKHt9KScpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcu
CitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJz
ZSgne2F9Jyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChq
c29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7YTp9Jyk7Cisg
ICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7
CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7YTo1fScpOworICAgIH0KK1BBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZSgne2E6NSx9Jyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShu
YXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBK
U09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29u
T2JqZWN0LnBhcnNlKCd7ImEifScpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcu
CitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJz
ZSgneyJhIjp9Jyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9u
IChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7ImEiOjV9
Jyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMg
SlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgewor
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJfX3Byb3RvX18iOjV9Jyk7CisgICAg
fQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJp
bmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJhIjo1LH0nKTsKKyAgICB9CitQQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNl
IEpTT04gc3RyaW5nLgoranNvbjIuanMgZGlkIG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVj
dCB0byB0aHJvdy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29u
T2JqZWN0LnBhcnNlKCd7ImEiOjUsLH0nKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJ3siYSI6NSwiYSIsfScpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcu
CitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJz
ZSgneyJhIjooNSwiYSIpLH0nKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgor
ZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2Uo
J1tdJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkg
aXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkg
eworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnWzFdJyk7CisgICAgfQorUEFTUyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVz
dHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgnWzEsXScpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcu
Citqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93Lgor
ZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2Uo
J1sxLDJdJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09O
KSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVj
dCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnWzEsMiwsXScpOworICAgIH0K
K1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBV
bmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBh
IHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ1sxLDIsLDRdJyk7CisgICAgfQorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBw
YXJzZSBKU09OIHN0cmluZy4KK2pzb24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBl
eHBlY3QgdG8gdGhyb3cuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgnIiInKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3Rz
W2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0
aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciXCci
Jyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMg
SlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgewor
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcIicpOworICAgIH0KK1BBU1MgSlNP
Ti5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3Rz
W2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoJyJhXFwiJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4K
K2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KCciYVxceiInKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFxceiIn
KTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFxcXHoiJyk7CisgICAg
fQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJp
bmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcdHoiJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmlu
Z2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNP
TikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgnImFcXHR6IicpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0
aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXG56IicpOwor
ICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkg
eworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXG56IicpOworICAgIH0KK1BB
U1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJyJhXHJ6IicpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVj
dC5wYXJzZSgnImFcXHJ6IicpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0o
bmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXC96Iicp
OworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpT
T04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAg
ICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFwveiInKTsKKyAgICB9CitQQVNTIEpT
T04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0
c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29u
T2JqZWN0LnBhcnNlKCciYVxieiInKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5n
LgoranNvbjIuanMgZGlkIG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4K
K2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KCciYVxcYnoiJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVK
U09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9i
amVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFccnoiJyk7CisgICAg
fQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7Cisg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxccnoiJyk7CisgICAgfQorUEFTUyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVz
dHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgnImFcXHV6IiAgICAgJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCciYVxcdTB6IiAgICAnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJyJhXFx1MDB6IiAgICcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcu
CitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJz
ZSgnImFcXHUwMDB6IiAgJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1
bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCci
YVxcdTAwMDB6IiAnKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2
ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29u
T2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwMEF6IiAn
KTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7Cisg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwMGF6IiAnKTsKKyAgICB9CitQ
QVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lm
eSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVy
biBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwMEd6IiAnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNl
IEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJyJhXFx1MDAwZ3oiICcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0
aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNP
TiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9i
amVjdC5wYXJzZSgnImFcXHUwMEEweiIgJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0
ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitm
dW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgn
ImFcXHUwMGEweiIgJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRp
dmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNv
bk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwMEcweiIg
Jyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2Jq
ZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwZzB6IiAnKTsK
KyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MEEwMHoiICcpOworICAg
IH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3Ry
aW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAg
cmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MGEwMHoiICcpOworICAgIH0KK1BBU1MgSlNP
Ti5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3Rz
W2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoJyJhXFx1MEcwMHoiICcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVj
dC5wYXJzZSgnImFcXHUwZzAweiIgJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09O
KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmlu
Zy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCciYVxcdUEwMDB6IiAnKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9u
IChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdWEw
MDB6IiAnKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04p
KSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0
KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdUcwMDB6IiAnKTsKKyAg
ICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
KyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1ZzAwMHoiICcpOworICAgIH0K
K1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBV
bmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAg
ICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMDAnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNl
IEpTT04gc3RyaW5nLgoranNvbjIuanMgZGlkIG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVj
dCB0byB0aHJvdy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29u
T2JqZWN0LnBhcnNlKCcwMScpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitq
c29uMi5qcyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgorZnVu
Y3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzAu
YScpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9i
amVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMHgwJyk7CisgICAgfQor
UEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVu
YWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAg
ICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcyZTEuMycpOworICAgIH0KK1BBU1MgdGVzdHNb
aV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFy
c2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgnMmUtKzEwJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0
cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKCcyZSstMTAnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVu
Y3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzJl
M2U0Jyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29u
T2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCctMDEuMCcpOworICAg
IH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgewor
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnLTAxJyk7CisgICAgfQorUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBw
YXJzZSBKU09OIHN0cmluZy4KK2pzb24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBl
eHBlY3QgdG8gdGhyb3cuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgnLTAxLmEnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpT
T04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3Ry
aW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJzEuZTEnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgoranNvbjIu
anMgZGlkIG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KK2Z1bmN0aW9u
IChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7LyogYmxv
Y2sgY29tbWVudHMgYXJlIG5vdCBhbGxvd2VkICovfScpOworICAgIH0KK1BBU1MgdGVzdHNbaV0o
bmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2Ug
SlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgney8vIGxpbmUgY29tbWVudHMgYXJlIG5vdCBhbGxvd2VkIFxufScpOwor
ICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkg
eworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgndHJ1ZScpOworICAgIH0KK1BBU1Mg
SlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRl
c3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJ2ZhbHNlJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0
c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5j
dGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09O
LnN0cmluZ2lmeShzaW1wbGVPYmplY3QpKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRl
c3RzW2ldKG5hdGl2ZUpTT04pKSBpcyB0ZXN0c1tpXS5leHBlY3RlZAorZnVuY3Rpb24gKGpzb25P
YmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnko
Y29tcGxleE9iamVjdCkpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0
aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdp
ZnkoY29tcGxleE9iamVjdCkpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0o
bmF0aXZlSlNPTikpIGlzIHRlc3RzW2ldLmV4cGVjdGVkCitmdW5jdGlvbiAoanNvbk9iamVjdCkg
eworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShzaW1wbGVP
YmplY3QsbnVsbCwxMDApKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5h
dGl2ZUpTT04pKSBpcyB0ZXN0c1tpXS5leHBlY3RlZAorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
KyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGxleE9i
amVjdCxudWxsLDEwMCkpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0
aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdp
ZnkoY29tcGxleE9iamVjdCxudWxsLDEwMCkpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnko
dGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIHRlc3RzW2ldLmV4cGVjdGVkCitmdW5jdGlvbiAoanNv
bk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lm
eShzaW1wbGVPYmplY3QsbnVsbCwiICIpKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRl
c3RzW2ldKG5hdGl2ZUpTT04pKSBpcyB0ZXN0c1tpXS5leHBlY3RlZAorZnVuY3Rpb24gKGpzb25P
YmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnko
Y29tcGxleE9iamVjdCxudWxsLCIgIikpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVz
dHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVu
Y3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNP
Ti5zdHJpbmdpZnkoY29tcGxleE9iamVjdCxudWxsLCIgIikpOworICAgIH0KK1BBU1MgSlNPTi5z
dHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIHRlc3RzW2ldLmV4cGVjdGVkCitmdW5j
dGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09O
LnN0cmluZ2lmeShzaW1wbGVPYmplY3QsbnVsbCwiXHQiKSk7CisgICAgfQorUEFTUyBKU09OLnN0
cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgdGVzdHNbaV0uZXhwZWN0ZWQKK2Z1bmN0
aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04u
c3RyaW5naWZ5KGNvbXBsZXhPYmplY3QsbnVsbCwiXHQiKSk7CisgICAgfQorUEFTUyBKU09OLnN0
cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0o
SlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVj
dC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0LG51bGwsIlx0IikpOworICAgIH0K
K1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIHRlc3RzW2ldLmV4
cGVjdGVkCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVj
dC5wYXJzZShKU09OLnN0cmluZ2lmeShzaW1wbGVPYmplY3QsbnVsbCwiXG4iKSk7CisgICAgfQor
UEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgdGVzdHNbaV0uZXhw
ZWN0ZWQKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmplY3QsbnVsbCwiXG4iKSk7CisgICAgfQor
UEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgdGVzdHNbaV0uZXhw
ZWN0ZWQKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKCJ0cnVlIiwgbG9nKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9u
IChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCJmYWxzZSIs
IGxvZyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkg
aXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkg
eworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgibnVsbCIsIGxvZyk7CisgICAgfQor
UEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdp
ZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1
cm4ganNvbk9iamVjdC5wYXJzZSgiMSIsIGxvZyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lm
eSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikp
CitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJz
ZSgiMS41IiwgbG9nKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2
ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29u
T2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYSBzdHJpbmciJywg
bG9nKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBp
cyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7
CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KHNpbXBsZUFy
cmF5KSwgbG9nKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpT
T04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2Jq
ZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNv
bXBsZXhBcnJheSksIGxvZyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShu
YXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAo
anNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmlu
Z2lmeShzaW1wbGVPYmplY3QpLCBsb2cpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVz
dHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVu
Y3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNP
Ti5zdHJpbmdpZnkoY29tcGxleE9iamVjdCksIGxvZyk7CisgICAgfQorUEFTUyBKU09OLnN0cmlu
Z2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNP
TikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgneyJfX3Byb3RvX18iOnsiYSI6NX19JywgbG9nKTsKKyAgICB9CitQQVNTIEpTT04uc3Ry
aW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShK
U09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0g
IiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCJ0cnVlIiwgbG9nT3JkZXIpOwor
ICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04u
c3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAg
ICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2Uo
ImZhbHNlIiwgbG9nT3JkZXIpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0o
bmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24g
KGpzb25PYmplY3QpIHsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAgcmV0
dXJuIGpzb25PYmplY3QucGFyc2UoIm51bGwiLCBsb2dPcmRlcik7CisgICAgfQorUEFTUyBKU09O
LnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNb
aV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRlclN0cmlu
ZyA9ICIiOworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgiMSIsIGxvZ09yZGVyKTsK
KyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09O
LnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAg
ICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KCIxLjUiLCBsb2dPcmRlcik7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShu
YXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAo
anNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICByZXR1
cm4ganNvbk9iamVjdC5wYXJzZSgnImEgc3RyaW5nIicsIGxvZ09yZGVyKTsKKyAgICB9CitQQVNT
IEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0
ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVy
U3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5n
aWZ5KHNpbXBsZUFycmF5KSwgbG9nT3JkZXIpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnko
dGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQor
ZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAg
ICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGxleEFycmF5
KSwgbG9nT3JkZXIpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZl
SlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25P
YmplY3QpIHsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoc2ltcGxlT2JqZWN0KSwgbG9nT3JkZXIpOwor
ICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04u
c3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAg
ICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2Uo
SlNPTi5zdHJpbmdpZnkoY29tcGxleE9iamVjdCksIGxvZ09yZGVyKTsKKyAgICB9CitQQVNTIEpT
T04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0
c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVyU3Ry
aW5nID0gIiI7CisgICAgICAgIGpzb25PYmplY3QucGFyc2UoInRydWUiLCBsb2dPcmRlcik7Cisg
ICAgICAgIHJldHVybiBsb2dPcmRlclN0cmluZzsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkK
K2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7Cisg
ICAgICAgIGpzb25PYmplY3QucGFyc2UoImZhbHNlIiwgbG9nT3JkZXIpOworICAgICAgICByZXR1
cm4gbG9nT3JkZXJTdHJpbmc7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShu
YXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAo
anNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICBqc29u
T2JqZWN0LnBhcnNlKCJudWxsIiwgbG9nT3JkZXIpOworICAgICAgICByZXR1cm4gbG9nT3JkZXJT
dHJpbmc7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkg
aXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkg
eworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICBqc29uT2JqZWN0LnBhcnNl
KCIxIiwgbG9nT3JkZXIpOworICAgICAgICByZXR1cm4gbG9nT3JkZXJTdHJpbmc7CisgICAgfQor
UEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdp
ZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dP
cmRlclN0cmluZyA9ICIiOworICAgICAgICBqc29uT2JqZWN0LnBhcnNlKCIxLjUiLCBsb2dPcmRl
cik7CisgICAgICAgIHJldHVybiBsb2dPcmRlclN0cmluZzsKKyAgICB9CitQQVNTIEpTT04uc3Ry
aW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShK
U09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0g
IiI7CisgICAgICAgIGpzb25PYmplY3QucGFyc2UoJyJhIHN0cmluZyInLCBsb2dPcmRlcik7Cisg
ICAgICAgIHJldHVybiBsb2dPcmRlclN0cmluZzsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkK
K2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7Cisg
ICAgICAgIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoc2ltcGxlQXJyYXkpLCBsb2dP
cmRlcik7CisgICAgICAgIHJldHVybiBsb2dPcmRlclN0cmluZzsKKyAgICB9CitQQVNTIEpTT04u
c3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tp
XShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVyU3RyaW5n
ID0gIiI7CisgICAgICAgIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGxleEFy
cmF5KSwgbG9nT3JkZXIpOworICAgICAgICByZXR1cm4gbG9nT3JkZXJTdHJpbmc7CisgICAgfQor
UEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdp
ZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dP
cmRlclN0cmluZyA9ICIiOworICAgICAgICBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5
KHNpbXBsZU9iamVjdCksIGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJuIGxvZ09yZGVyU3RyaW5n
OworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpT
T04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAg
ICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAganNvbk9iamVjdC5wYXJzZShKU09O
LnN0cmluZ2lmeShjb21wbGV4T2JqZWN0KSwgbG9nT3JkZXIpOworICAgICAgICByZXR1cm4gbG9n
T3JkZXJTdHJpbmc7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVK
U09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9i
amVjdCkgeworICAgICAgICBjYWxsQ291bnQgPSAwOworICAgICAgICBsb2dPcmRlclN0cmluZyA9
ICIiOworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21w
bGV4QXJyYXkpLCB0aHJvd0FmdGVyRmlmdGhDYWxsKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5h
dGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBmcm9tIHJldml2ZXIuCitmdW5jdGlvbiAoanNvbk9i
amVjdCkgeworICAgICAgICBjYWxsQ291bnQgPSAwOworICAgICAgICBsb2dPcmRlclN0cmluZyA9
ICIiOworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShzaW1w
bGVPYmplY3QpLCB0aHJvd0FmdGVyRmlmdGhDYWxsKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5n
aWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09O
KSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGNhbGxDb3VudCA9IDA7CisgICAg
ICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmplY3QpLCB0aHJvd0FmdGVyRmlmdGhDYWxsKTsKKyAg
ICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBmcm9tIHJldml2
ZXIuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBjYWxsQ291bnQgPSAwOworICAg
ICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICB0cnkgeyBqc29uT2JqZWN0LnBhcnNl
KEpTT04uc3RyaW5naWZ5KGNvbXBsZXhBcnJheSksIHRocm93QWZ0ZXJGaWZ0aENhbGwpOyB9IGNh
dGNoIChlKSB7fQorICAgICAgICByZXR1cm4gbG9nT3JkZXJTdHJpbmc7CisgICAgfQorUEFTUyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVz
dHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBjYWxsQ291bnQg
PSAwOworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICB0cnkgeyBqc29uT2Jq
ZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KHNpbXBsZU9iamVjdCksIHRocm93QWZ0ZXJGaWZ0aENh
bGwpOyB9IGNhdGNoIChlKSB7fQorICAgICAgICByZXR1cm4gbG9nT3JkZXJTdHJpbmc7CisgICAg
fQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJp
bmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBj
YWxsQ291bnQgPSAwOworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICB0cnkg
eyBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmplY3QpLCB0aHJvd0Fm
dGVyRmlmdGhDYWxsKTsgfSBjYXRjaCAoZSkge30KKyAgICAgICAgcmV0dXJuIGxvZ09yZGVyU3Ry
aW5nOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlz
IEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
KyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkodW5pY29kZSkp
OworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgaXMgdGVzdHNbaV0udW5zdHJpbmdp
ZmllZEV4cGVjdGVkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKworZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmpl
Y3QucGFyc2UoKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogSlNPTi5wYXJzZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyLgor
ZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2Uo
JycpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9i
amVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMScpOworICAgIH0KK1BB
U1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJy0xJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0
c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5j
dGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnSW5m
aW5pdHknKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ05hTicpOworICAg
IH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgewor
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnbnVsbCcpOworICAgIH0KK1BBU1MgSlNP
Ti5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3Rz
W2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoJ3VuZGVmaW5lZCcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJp
bmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgne30nKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpT
T04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2Jq
ZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcoe30pJyk7CisgICAgfQor
UEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVu
YWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAg
ICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7YX0nKTsKKyAgICB9CitQQVNTIHRlc3RzW2ld
KG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNl
IEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoJ3thOn0nKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5n
LgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoJ3thOjV9Jyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9u
IChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7YTo1LH0n
KTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSJ9Jyk7CisgICAgfQor
UEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVu
YWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAg
ICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7ImEiOn0nKTsKKyAgICB9CitQQVNTIHRlc3Rz
W2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBh
cnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJ3siYSI6NX0nKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkK
K2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KCd7Il9fcHJvdG9fXyI6NX0nKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9u
IChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7ImEiOjUs
fScpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitqc29uMi5qcyBkaWQgbm90
IHRocm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJ3siYSI6NSwsfScpOworICAg
IH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgewor
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJhIjo1LCJhIix9Jyk7CisgICAgfQor
UEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVu
YWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAg
ICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7ImEiOig1LCJhIiksfScpOworICAgIH0KK1BB
U1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFi
bGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnW10nKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5n
aWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09O
KSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCdbMV0nKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpT
T04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2Jq
ZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCdbMSxdJyk7CisgICAgfQor
UEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVu
YWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2pzb24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEg
dGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnWzEsMl0nKTsKKyAgICB9CitQQVNTIEpTT04uc3Ry
aW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShK
U09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKCdbMSwyLCxdJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2pz
b24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVzdCB3ZSBleHBlY3QgdG8gdGhyb3cuCitmdW5j
dGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnWzEs
MiwsNF0nKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgoranNvbjIuanMgZGlk
IG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KK2Z1bmN0aW9uIChqc29u
T2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciIicpOworICAgIH0K
K1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5n
aWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0
dXJuIGpzb25PYmplY3QucGFyc2UoJyJcJyInKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkK
K2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KCciYVwiJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09O
KSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVj
dCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXCInKTsKKyAgICB9CitQ
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5h
YmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx6IicpOworICAgIH0KK1BBU1MgdGVzdHNb
aV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFy
c2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgnImFcXFx6IicpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZl
SlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVj
dC5wYXJzZSgnImFcXFxceiInKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9u
IChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVx0eiIn
KTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7Cisg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdHoiJyk7CisgICAgfQorUEFTUyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVz
dHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZSgnImFcbnoiJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09O
KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmlu
Zy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCciYVxcbnoiJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRp
dmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNv
bk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFccnoiJyk7Cisg
ICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7
CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxccnoiJyk7CisgICAgfQorUEFT
UyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnko
dGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4g
anNvbk9iamVjdC5wYXJzZSgnImFcL3oiJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0
ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitm
dW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgn
ImFcXC96IicpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNP
TikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXGJ6IicpOworICAgIH0K
K1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBV
bmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBh
IHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFxieiInKTsKKyAgICB9CitQQVNTIEpTT04u
c3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tp
XShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCciYVxyeiInKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgor
ZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2Uo
JyJhXFxyeiInKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpT
T04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2Jq
ZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdXoiICAgICAnKTsK
KyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MHoiICAgICcpOworICAg
IH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgewor
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwMHoiICAgJyk7CisgICAgfQor
UEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVu
YWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAg
ICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwMHoiICAnKTsKKyAgICB9CitQQVNT
IHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxl
IHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAg
cmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDAwMHoiICcpOworICAgIH0KK1BBU1MgSlNP
Ti5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3Rz
W2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoJyJhXFx1MDAwQXoiICcpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnko
dGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQor
ZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2Uo
JyJhXFx1MDAwYXoiICcpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0
aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpz
b25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1MDAwR3oi
ICcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9i
amVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwMDBneiIgJyk7
CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0
KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwQTB6IiAnKTsKKyAg
ICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0
cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAg
IHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTAwYTB6IiAnKTsKKyAgICB9CitQQVNTIEpT
T04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0
c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29u
T2JqZWN0LnBhcnNlKCciYVxcdTAwRzB6IiAnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2
ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04g
c3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmpl
Y3QucGFyc2UoJyJhXFx1MDBnMHoiICcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNP
TikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJp
bmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5w
YXJzZSgnImFcXHUwQTAweiIgJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tp
XShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlv
biAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUw
YTAweiIgJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09O
KSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVj
dCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnImFcXHUwRzAweiIgJyk7Cisg
ICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7
CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYVxcdTBnMDB6IiAnKTsKKyAgICB9
CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
VW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAg
ICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJyJhXFx1QTAwMHoiICcpOworICAgIH0KK1BB
U1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJyJhXFx1YTAwMHoiICcpOworICAgIH0KK1BBU1MgSlNPTi5zdHJp
bmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpT
T04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoJyJhXFx1RzAwMHoiICcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcu
CitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJz
ZSgnImFcXHVnMDAweiIgJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1
bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcw
MCcpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitqc29uMi5qcyBkaWQgbm90
IHRocm93IGZvciBhIHRlc3Qgd2UgZXhwZWN0IHRvIHRocm93LgorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzAxJyk7CisgICAgfQorUEFT
UyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJs
ZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2pzb24yLmpzIGRpZCBub3QgdGhyb3cgZm9yIGEgdGVz
dCB3ZSBleHBlY3QgdG8gdGhyb3cuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMC5hJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRp
dmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09O
IHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCcweDAnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVu
Y3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzJl
MS4zJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29u
T2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCcyZS0rMTAnKTsKKyAg
ICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
KyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoJzJlKy0xMCcpOworICAgIH0KK1BBU1Mg
dGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUg
dG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMmUzZTQnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5h
dGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpT
T04gc3RyaW5nLgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoJy0wMS4wJyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4K
K2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNl
KCctMDEnKTsKKyAgICB9CitQQVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nLgoranNvbjIuanMgZGlk
IG5vdCB0aHJvdyBmb3IgYSB0ZXN0IHdlIGV4cGVjdCB0byB0aHJvdy4KK2Z1bmN0aW9uIChqc29u
T2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCctMDEuYScpOworICAg
IH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmcuCitmdW5jdGlvbiAoanNvbk9iamVjdCkgewor
ICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnMS5lMScpOworICAgIH0KK1BBU1MgdGVz
dHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmFibGUgdG8g
cGFyc2UgSlNPTiBzdHJpbmcuCitqc29uMi5qcyBkaWQgbm90IHRocm93IGZvciBhIHRlc3Qgd2Ug
ZXhwZWN0IHRvIHRocm93LgorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoJ3svKiBibG9jayBjb21tZW50cyBhcmUgbm90IGFsbG93ZWQgKi99
Jyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmluZy4KK2Z1bmN0aW9uIChqc29uT2Jq
ZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7Ly8gbGluZSBjb21tZW50
cyBhcmUgbm90IGFsbG93ZWQgXG59Jyk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVKU09O
KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmlu
Zy4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCd0cnVlJyk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVK
U09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9i
amVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgnZmFsc2UnKTsKKyAgICB9
CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmlu
Z2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJl
dHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KHNpbXBsZU9iamVjdCkpOworICAg
IH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIHRlc3RzW2ld
LmV4cGVjdGVkCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9i
amVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0KSk7CisgICAgfQorUEFTUyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVz
dHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0KSk7CisgICAgfQorUEFT
UyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgdGVzdHNbaV0uZXhwZWN0
ZWQKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKEpTT04uc3RyaW5naWZ5KHNpbXBsZU9iamVjdCxudWxsLDEwMCkpOworICAgIH0KK1BBU1Mg
SlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIHRlc3RzW2ldLmV4cGVjdGVk
CitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJz
ZShKU09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0LG51bGwsMTAwKSk7CisgICAgfQorUEFTUyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVz
dHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNv
bk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0LG51bGwsMTAwKSk7Cisg
ICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgdGVzdHNb
aV0uZXhwZWN0ZWQKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29u
T2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KHNpbXBsZU9iamVjdCxudWxsLCIgIikpOworICAg
IH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIHRlc3RzW2ld
LmV4cGVjdGVkCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9i
amVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0LG51bGwsIiAiKSk7CisgICAg
fQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJp
bmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0LG51bGws
IiAiKSk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkg
aXMgdGVzdHNbaV0uZXhwZWN0ZWQKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJl
dHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KHNpbXBsZU9iamVjdCxudWxsLCJc
dCIpKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBp
cyB0ZXN0c1tpXS5leHBlY3RlZAorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0
dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGxleE9iamVjdCxudWxsLCJc
dCIpKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBp
cyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7
CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhP
YmplY3QsbnVsbCwiXHQiKSk7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShu
YXRpdmVKU09OKSkgaXMgdGVzdHNbaV0uZXhwZWN0ZWQKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7
CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KHNpbXBsZU9i
amVjdCxudWxsLCJcbiIpKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5h
dGl2ZUpTT04pKSBpcyB0ZXN0c1tpXS5leHBlY3RlZAorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
KyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGxleE9i
amVjdCxudWxsLCJcbiIpKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5h
dGl2ZUpTT04pKSBpcyB0ZXN0c1tpXS5leHBlY3RlZAorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
KyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoInRydWUiLCBsb2cpOworICAgIH0KK1BB
U1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5
KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJu
IGpzb25PYmplY3QucGFyc2UoImZhbHNlIiwgbG9nKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5n
aWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09O
KSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBh
cnNlKCJudWxsIiwgbG9nKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5h
dGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChq
c29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCIxIiwgbG9nKTsK
KyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09O
LnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAg
ICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCIxLjUiLCBsb2cpOworICAgIH0KK1BBU1MgSlNP
Ti5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3Rz
W2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25P
YmplY3QucGFyc2UoJyJhIHN0cmluZyInLCBsb2cpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdp
ZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04p
KQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3QucGFy
c2UoSlNPTi5zdHJpbmdpZnkoc2ltcGxlQXJyYXkpLCBsb2cpOworICAgIH0KK1BBU1MgSlNPTi5z
dHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGpzb25PYmpl
Y3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGxleEFycmF5KSwgbG9nKTsKKyAgICB9CitQQVNT
IEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0
ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBq
c29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KHNpbXBsZU9iamVjdCksIGxvZyk7CisgICAg
fQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJp
bmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0KSwgbG9n
KTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBK
U09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7Cisg
ICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCd7Il9fcHJvdG9fXyI6eyJhIjo1fX0nLCBs
b2cpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlz
IEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
KyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAgcmV0dXJuIGpzb25PYmplY3Qu
cGFyc2UoInRydWUiLCBsb2dPcmRlcik7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0
c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5j
dGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgiZmFsc2UiLCBsb2dPcmRlcik7CisgICAgfQorUEFT
UyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnko
dGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRl
clN0cmluZyA9ICIiOworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgibnVsbCIsIGxv
Z09yZGVyKTsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04p
KSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0
KSB7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29uT2Jq
ZWN0LnBhcnNlKCIxIiwgbG9nT3JkZXIpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVz
dHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVu
Y3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoIjEuNSIsIGxvZ09yZGVyKTsKKyAgICB9CitQQVNT
IEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0
ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVy
U3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0LnBhcnNlKCciYSBzdHJpbmci
JywgbG9nT3JkZXIpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZl
SlNPTikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25P
YmplY3QpIHsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAgcmV0dXJuIGpz
b25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoc2ltcGxlQXJyYXkpLCBsb2dPcmRlcik7Cisg
ICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5z
dHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAg
ICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShK
U09OLnN0cmluZ2lmeShjb21wbGV4QXJyYXkpLCBsb2dPcmRlcik7CisgICAgfQorUEFTUyBKU09O
LnN0cmluZ2lmeSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNb
aV0oSlNPTikpCitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRlclN0cmlu
ZyA9ICIiOworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShz
aW1wbGVPYmplY3QpLCBsb2dPcmRlcik7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0ZXN0
c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitmdW5j
dGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAgICAg
ICByZXR1cm4ganNvbk9iamVjdC5wYXJzZShKU09OLnN0cmluZ2lmeShjb21wbGV4T2JqZWN0KSwg
bG9nT3JkZXIpOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNP
TikpIGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmpl
Y3QpIHsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAganNvbk9iamVjdC5w
YXJzZSgidHJ1ZSIsIGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJuIGxvZ09yZGVyU3RyaW5nOwor
ICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04u
c3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAg
ICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAganNvbk9iamVjdC5wYXJzZSgiZmFsc2Ui
LCBsb2dPcmRlcik7CisgICAgICAgIHJldHVybiBsb2dPcmRlclN0cmluZzsKKyAgICB9CitQQVNT
IEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0
ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVy
U3RyaW5nID0gIiI7CisgICAgICAgIGpzb25PYmplY3QucGFyc2UoIm51bGwiLCBsb2dPcmRlcik7
CisgICAgICAgIHJldHVybiBsb2dPcmRlclN0cmluZzsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5n
aWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09O
KSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7
CisgICAgICAgIGpzb25PYmplY3QucGFyc2UoIjEiLCBsb2dPcmRlcik7CisgICAgICAgIHJldHVy
biBsb2dPcmRlclN0cmluZzsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5h
dGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChq
c29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIGpzb25P
YmplY3QucGFyc2UoIjEuNSIsIGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJuIGxvZ09yZGVyU3Ry
aW5nOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlz
IEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsK
KyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAganNvbk9iamVjdC5wYXJzZSgn
ImEgc3RyaW5nIicsIGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJuIGxvZ09yZGVyU3RyaW5nOwor
ICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpTT04u
c3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAgICAg
ICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAganNvbk9iamVjdC5wYXJzZShKU09OLnN0
cmluZ2lmeShzaW1wbGVBcnJheSksIGxvZ09yZGVyKTsKKyAgICAgICAgcmV0dXJuIGxvZ09yZGVy
U3RyaW5nOworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikp
IGlzIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3Qp
IHsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAgICAganNvbk9iamVjdC5wYXJz
ZShKU09OLnN0cmluZ2lmeShjb21wbGV4QXJyYXkpLCBsb2dPcmRlcik7CisgICAgICAgIHJldHVy
biBsb2dPcmRlclN0cmluZzsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5h
dGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChq
c29uT2JqZWN0KSB7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIGpzb25P
YmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoc2ltcGxlT2JqZWN0KSwgbG9nT3JkZXIpOworICAg
ICAgICByZXR1cm4gbG9nT3JkZXJTdHJpbmc7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lmeSh0
ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikpCitm
dW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICBsb2dPcmRlclN0cmluZyA9ICIiOworICAg
ICAgICBqc29uT2JqZWN0LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhPYmplY3QpLCBsb2dP
cmRlcik7CisgICAgICAgIHJldHVybiBsb2dPcmRlclN0cmluZzsKKyAgICB9CitQQVNTIEpTT04u
c3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tp
XShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGNhbGxDb3VudCA9IDA7
CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbXBsZXhBcnJheSksIHRocm93QWZ0ZXJGaWZ0aENhbGwp
OworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhjZXB0aW9uIGZyb20g
cmV2aXZlci4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7CisgICAgICAgIGNhbGxDb3VudCA9IDA7
CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAgICAgIHJldHVybiBqc29uT2JqZWN0
LnBhcnNlKEpTT04uc3RyaW5naWZ5KHNpbXBsZU9iamVjdCksIHRocm93QWZ0ZXJGaWZ0aENhbGwp
OworICAgIH0KK1BBU1MgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0obmF0aXZlSlNPTikpIGlzIEpT
T04uc3RyaW5naWZ5KHRlc3RzW2ldKEpTT04pKQorZnVuY3Rpb24gKGpzb25PYmplY3QpIHsKKyAg
ICAgICAgY2FsbENvdW50ID0gMDsKKyAgICAgICAgbG9nT3JkZXJTdHJpbmcgPSAiIjsKKyAgICAg
ICAgcmV0dXJuIGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGxleE9iamVjdCks
IHRocm93QWZ0ZXJGaWZ0aENhbGwpOworICAgIH0KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikg
dGhyZXcgZXhjZXB0aW9uIGZyb20gcmV2aXZlci4KK2Z1bmN0aW9uIChqc29uT2JqZWN0KSB7Cisg
ICAgICAgIGNhbGxDb3VudCA9IDA7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0gIiI7CisgICAg
ICAgIHRyeSB7IGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGxleEFycmF5KSwg
dGhyb3dBZnRlckZpZnRoQ2FsbCk7IH0gY2F0Y2ggKGUpIHt9CisgICAgICAgIHJldHVybiBsb2dP
cmRlclN0cmluZzsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ldKG5hdGl2ZUpT
T04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9uIChqc29uT2Jq
ZWN0KSB7CisgICAgICAgIGNhbGxDb3VudCA9IDA7CisgICAgICAgIGxvZ09yZGVyU3RyaW5nID0g
IiI7CisgICAgICAgIHRyeSB7IGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdpZnkoc2ltcGxl
T2JqZWN0KSwgdGhyb3dBZnRlckZpZnRoQ2FsbCk7IH0gY2F0Y2ggKGUpIHt9CisgICAgICAgIHJl
dHVybiBsb2dPcmRlclN0cmluZzsKKyAgICB9CitQQVNTIEpTT04uc3RyaW5naWZ5KHRlc3RzW2ld
KG5hdGl2ZUpTT04pKSBpcyBKU09OLnN0cmluZ2lmeSh0ZXN0c1tpXShKU09OKSkKK2Z1bmN0aW9u
IChqc29uT2JqZWN0KSB7CisgICAgICAgIGNhbGxDb3VudCA9IDA7CisgICAgICAgIGxvZ09yZGVy
U3RyaW5nID0gIiI7CisgICAgICAgIHRyeSB7IGpzb25PYmplY3QucGFyc2UoSlNPTi5zdHJpbmdp
ZnkoY29tcGxleE9iamVjdCksIHRocm93QWZ0ZXJGaWZ0aENhbGwpOyB9IGNhdGNoIChlKSB7fQor
ICAgICAgICByZXR1cm4gbG9nT3JkZXJTdHJpbmc7CisgICAgfQorUEFTUyBKU09OLnN0cmluZ2lm
eSh0ZXN0c1tpXShuYXRpdmVKU09OKSkgaXMgSlNPTi5zdHJpbmdpZnkodGVzdHNbaV0oSlNPTikp
CitmdW5jdGlvbiAoanNvbk9iamVjdCkgeworICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJz
ZShKU09OLnN0cmluZ2lmeSh1bmljb2RlKSk7CisgICAgfQorUEFTUyB0ZXN0c1tpXShuYXRpdmVK
U09OKSBpcyB0ZXN0c1tpXS51bnN0cmluZ2lmaWVkRXhwZWN0ZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>