<?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>96569</bug_id>
          
          <creation_ts>2012-09-12 15:23:21 -0700</creation_ts>
          <short_desc>implement first part of support for the new TestExpectations syntax</short_desc>
          <delta_ts>2012-09-19 15:29:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>89161</blocked>
    
    <blocked>96588</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>718800</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-09-12 15:23:21 -0700</bug_when>
    <thetext>implement first part of support for the new TestExpectations syntax</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718925</commentid>
    <comment_count>1</comment_count>
      <attachid>163745</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-09-12 17:41:52 -0700</bug_when>
    <thetext>Created attachment 163745
clean up for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718926</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-09-12 17:43:34 -0700</bug_when>
    <thetext>This patch adds tests for tokenizing the new syntax and converting it into the old style so that the change is minimal to the rest of the code. This new parsing routine isn&apos;t actually used anywhere yet, so the new syntax isn&apos;t yet legal and hence there should be no functional changes.

The next patch will allow for the new syntax to coexist alongside the old, and will write out all entries into the new format.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719073</commentid>
    <comment_count>3</comment_count>
      <attachid>163745</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-12 23:01:58 -0700</bug_when>
    <thetext>Comment on attachment 163745
clean up for review

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

R- just for the Failure issue.

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:270
&gt; +        &apos;Failure&apos;: &apos;TEXT&apos;,

Doesn&apos;t this need to be something like [&apos;TEXT&apos;, &apos;IMAGE+TEXT&apos;, &apos;AUDIO&apos;]? So that any of those happening won&apos;t be an unexpected failure?

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:342
&gt; +                else:

Maybe make this elif state == &apos;name_found&apos; so you can log an error if the state is something else?

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:350
&gt; +                else:

Ditto: elif state == &apos;expectations&apos;  and log an error otherwise?

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:378
&gt; +        if not expectations:
&gt; +            if &apos;SKIP&apos; not in modifiers and &apos;REBASELINE&apos; not in modifiers and &apos;SLOW&apos; not in modifiers:
&gt; +                modifiers.append(&apos;SKIP&apos;)
&gt; +            expectations = [&apos;PASS&apos;]

Should this have a FIXME to be removed when we stop supporting Skipped files?

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:380
&gt; +        expectation_line.modifiers = bugs + modifiers

Maybe have a FIXME to store bugs separately on the expectation_line?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719746</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-09-13 11:57:25 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 163745 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163745&amp;action=review
&gt; 
&gt; R- just for the Failure issue.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:270
&gt; &gt; +        &apos;Failure&apos;: &apos;TEXT&apos;,
&gt; 
&gt; Doesn&apos;t this need to be something like [&apos;TEXT&apos;, &apos;IMAGE+TEXT&apos;, &apos;AUDIO&apos;]? So that any of those happening won&apos;t be an unexpected failure?
&gt; 

The mapping is definitely an issue. I had been planning to post a separate patch that would remap failures onto the keywords in order to address this, but the idea of treating these things as &quot;flaky&quot; failures hadn&apos;t occurred to me, and that might be simpler.

Another possibility is to replace TEXT, IMAGE+TEXT and AUDIO with FAIL before turning on the new syntax so that the mapping is 1:1. I haven&apos;t yet decided if that&apos;s better or worse than your suggestion.

I think I&apos;ll code up both options and see.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:342
&gt; &gt; +                else:
&gt; 
&gt; Maybe make this elif state == &apos;name_found&apos; so you can log an error if the state is something else?
&gt; 

Ok.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:350
&gt; &gt; +                else:
&gt; 
&gt; Ditto: elif state == &apos;expectations&apos;  and log an error otherwise?
&gt; 

Ok.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:378
&gt; &gt; +        if not expectations:
&gt; &gt; +            if &apos;SKIP&apos; not in modifiers and &apos;REBASELINE&apos; not in modifiers and &apos;SLOW&apos; not in modifiers:
&gt; &gt; +                modifiers.append(&apos;SKIP&apos;)
&gt; &gt; +            expectations = [&apos;PASS&apos;]
&gt; 
&gt; Should this have a FIXME to be removed when we stop supporting Skipped files?
&gt; 

I&apos;m not sure I follow your thinking. You&apos;re suggesting that we should always require [ Skip ] or [ WontFix ] ?


&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:380
&gt; &gt; +        expectation_line.modifiers = bugs + modifiers
&gt; 
&gt; Maybe have a FIXME to store bugs separately on the expectation_line?

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719762</commentid>
    <comment_count>5</comment_count>
      <attachid>163745</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-13 12:09:08 -0700</bug_when>
    <thetext>Comment on attachment 163745
clean up for review

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:270
&gt;&gt;&gt; +        &apos;Failure&apos;: &apos;TEXT&apos;,
&gt;&gt; 
&gt;&gt; Doesn&apos;t this need to be something like [&apos;TEXT&apos;, &apos;IMAGE+TEXT&apos;, &apos;AUDIO&apos;]? So that any of those happening won&apos;t be an unexpected failure?
&gt; 
&gt; The mapping is definitely an issue. I had been planning to post a separate patch that would remap failures onto the keywords in order to address this, but the idea of treating these things as &quot;flaky&quot; failures hadn&apos;t occurred to me, and that might be simpler.
&gt; 
&gt; Another possibility is to replace TEXT, IMAGE+TEXT and AUDIO with FAIL before turning on the new syntax so that the mapping is 1:1. I haven&apos;t yet decided if that&apos;s better or worse than your suggestion.
&gt; 
&gt; I think I&apos;ll code up both options and see.

Yup. Whichever one is easier is fine I think.

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:378
&gt;&gt;&gt; +            expectations = [&apos;PASS&apos;]
&gt;&gt; 
&gt;&gt; Should this have a FIXME to be removed when we stop supporting Skipped files?
&gt; 
&gt; I&apos;m not sure I follow your thinking. You&apos;re suggesting that we should always require [ Skip ] or [ WontFix ] ?

Oh, right. I forgot that we were making the expectations part completely optional. nm. Although, maybe the FIXME should be to have the other code understand what it means for expectations to be an empty list instead of putting in the dummy PASS expectations. Not sure it matters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719764</commentid>
    <comment_count>6</comment_count>
      <attachid>163745</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 12:11:03 -0700</bug_when>
    <thetext>Comment on attachment 163745
clean up for review

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

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:316
&gt; +            if (token.startswith(&apos;webkit.org/b/&apos;) or

Given that we&apos;re implementing a finite automata here, I&apos;d prefer us always checking the state first (effective switch statement on state).

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:318
&gt; +                token.startswith(&apos;bug(&apos;)):

We should capitalize &quot;Bug&quot; as in &quot;Bug(rniwa)&quot;.

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:324
&gt; +                if token.startswith(&apos;webkit.org/b/&apos;):
&gt; +                    bugs.append(token.replace(&apos;webkit.org/b/&apos;, &apos;BUGWK&apos;))
&gt; +                elif token.startswith(&apos;crbug.com/&apos;):

It&apos;s not great that the list of URLs is hard-coded like this. It should be declared elsewhere so that people can easily add new URLs e.g. rdar, etc...

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:327
&gt; +                    match = re.match(&apos;bug\((\w+)\)$&apos;, token)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719783</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-09-13 12:22:20 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 163745 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163745&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:316
&gt; &gt; +            if (token.startswith(&apos;webkit.org/b/&apos;) or
&gt; 
&gt; Given that we&apos;re implementing a finite automata here, I&apos;d prefer us always checking the state first (effective switch statement on state).
&gt; 

I suppose it depends on how you look at it. Right now the outer loop is an iteration over the list of tokens, not a proper FSA (which would require while state != done plus explicitly pulling the next token). That feels like it would be harder to follow to me. WDYT?

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:318
&gt; &gt; +                token.startswith(&apos;bug(&apos;)):
&gt; 
&gt; We should capitalize &quot;Bug&quot; as in &quot;Bug(rniwa)&quot;.
&gt; 

Ok. I&apos;m not a fan of this, but I&apos;m not a fan of mixed case generally, and I can see the argument for consistency, so will change it :).

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:324
&gt; &gt; +                if token.startswith(&apos;webkit.org/b/&apos;):
&gt; &gt; +                    bugs.append(token.replace(&apos;webkit.org/b/&apos;, &apos;BUGWK&apos;))
&gt; &gt; +                elif token.startswith(&apos;crbug.com/&apos;):
&gt; 
&gt; It&apos;s not great that the list of URLs is hard-coded like this. It should be declared elsewhere so that people can easily add new URLs e.g. rdar, etc...
&gt; 

I think we&apos;ve had this debate before. I don&apos;t particularly want people to be able to add new URLs (really, we should just be using webkit.org and even allowing crbug is lame in my book), I don&apos;t think we see much churn in the list, and it&apos;s not particularly harder to modify this code rather than reading in a list from a whole separate file somewhere, so I&apos;m inclined to leave things as they are.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719797</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 12:33:24 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:324
&gt; &gt; &gt; +                if token.startswith(&apos;webkit.org/b/&apos;):
&gt; &gt; &gt; +                    bugs.append(token.replace(&apos;webkit.org/b/&apos;, &apos;BUGWK&apos;))
&gt; &gt; &gt; +                elif token.startswith(&apos;crbug.com/&apos;):
&gt; &gt; 
&gt; &gt; It&apos;s not great that the list of URLs is hard-coded like this. It should be declared elsewhere so that people can easily add new URLs e.g. rdar, etc...
&gt; &gt; 
&gt; 
&gt; I think we&apos;ve had this debate before. I don&apos;t particularly want people to be able to add new URLs (really, we should just be using webkit.org and even allowing crbug is lame in my book), I don&apos;t think we see much churn in the list, and it&apos;s not particularly harder to modify this code rather than reading in a list from a whole separate file somewhere, so I&apos;m inclined to leave things as they are.

Okay. I&apos;ve started a new webkit-dev thread about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719800</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-09-13 12:38:32 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:324
&gt; &gt; &gt; &gt; +                if token.startswith(&apos;webkit.org/b/&apos;):
&gt; &gt; &gt; &gt; +                    bugs.append(token.replace(&apos;webkit.org/b/&apos;, &apos;BUGWK&apos;))
&gt; &gt; &gt; &gt; +                elif token.startswith(&apos;crbug.com/&apos;):
&gt; &gt; &gt; 
&gt; &gt; &gt; It&apos;s not great that the list of URLs is hard-coded like this. It should be declared elsewhere so that people can easily add new URLs e.g. rdar, etc...
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; I think we&apos;ve had this debate before. I don&apos;t particularly want people to be able to add new URLs (really, we should just be using webkit.org and even allowing crbug is lame in my book), I don&apos;t think we see much churn in the list, and it&apos;s not particularly harder to modify this code rather than reading in a list from a whole separate file somewhere, so I&apos;m inclined to leave things as they are.
&gt; 
&gt; Okay. I&apos;ve started a new webkit-dev thread about this.

Great. I&apos;m happy to implement whatever the consensus is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719843</commentid>
    <comment_count>10</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-13 13:12:16 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:324
&gt; &gt; &gt; &gt; &gt; +                if token.startswith(&apos;webkit.org/b/&apos;):
&gt; &gt; &gt; &gt; &gt; +                    bugs.append(token.replace(&apos;webkit.org/b/&apos;, &apos;BUGWK&apos;))
&gt; &gt; &gt; &gt; &gt; +                elif token.startswith(&apos;crbug.com/&apos;):
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; It&apos;s not great that the list of URLs is hard-coded like this. It should be declared elsewhere so that people can easily add new URLs e.g. rdar, etc...
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; I think we&apos;ve had this debate before. I don&apos;t particularly want people to be able to add new URLs (really, we should just be using webkit.org and even allowing crbug is lame in my book), I don&apos;t think we see much churn in the list, and it&apos;s not particularly harder to modify this code rather than reading in a list from a whole separate file somewhere, so I&apos;m inclined to leave things as they are.
&gt; &gt; 
&gt; &gt; Okay. I&apos;ve started a new webkit-dev thread about this.
&gt; 
&gt; Great. I&apos;m happy to implement whatever the consensus is.

This is easy to change later. So, no reason to block this review on the discussion resolving IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720271</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 20:38:43 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt;
&gt; This is easy to change later. So, no reason to block this review on the discussion resolving IMO.

Agreed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723864</commentid>
    <comment_count>12</comment_count>
      <attachid>164782</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-09-19 15:12:23 -0700</bug_when>
    <thetext>Created attachment 164782
merge to head, address review comments, patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723871</commentid>
    <comment_count>13</comment_count>
      <attachid>164782</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-19 15:18:18 -0700</bug_when>
    <thetext>Comment on attachment 164782
merge to head, address review comments, patch for landing

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

&gt; Tools/ChangeLog:34
&gt; +        - We use webkit.org/b/12345, crbug.com/12345, and bug(dpranke)

Nit: bug -&gt; Bug.

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:274
&gt; +        &apos;Failure&apos;: &apos;TEXT&apos;,

!? We&apos;ve got rid of TEXT, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723875</commentid>
    <comment_count>14</comment_count>
      <attachid>164782</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-19 15:20:04 -0700</bug_when>
    <thetext>Comment on attachment 164782
merge to head, address review comments, patch for landing

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

&gt; Tools/ChangeLog:26
&gt; +        - TEXT, AUDIO, IMAGE+TEXT -&gt; Failure

- FAIL -&gt; Failure

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:274
&gt; +        &apos;Failure&apos;: &apos;TEXT&apos;,

s/TEXT/FAIL ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723880</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-09-19 15:26:18 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 164782 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164782&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:34
&gt; &gt; +        - We use webkit.org/b/12345, crbug.com/12345, and bug(dpranke)
&gt; 
&gt; Nit: bug -&gt; Bug.

Fixed.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:274
&gt; &gt; +        &apos;Failure&apos;: &apos;TEXT&apos;,
&gt; 
&gt; !? We&apos;ve got rid of TEXT, no?

Yup, bad merge. Fixed.

(In reply to comment #14)
&gt; (From update of attachment 164782 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164782&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:26
&gt; &gt; +        - TEXT, AUDIO, IMAGE+TEXT -&gt; Failure
&gt; 
&gt; - FAIL -&gt; Failure
&gt;

Fixed.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:274
&gt; &gt; +        &apos;Failure&apos;: &apos;TEXT&apos;,
&gt; 
&gt; s/TEXT/FAIL ?

:).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723882</commentid>
    <comment_count>16</comment_count>
      <attachid>164787</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-09-19 15:26:58 -0700</bug_when>
    <thetext>Created attachment 164787
more review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723885</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-09-19 15:29:24 -0700</bug_when>
    <thetext>Committed r129051: &lt;http://trac.webkit.org/changeset/129051&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163745</attachid>
            <date>2012-09-12 17:41:52 -0700</date>
            <delta_ts>2012-09-19 15:12:21 -0700</delta_ts>
            <desc>clean up for review</desc>
            <filename>bug-96569-20120912174126.patch</filename>
            <type>text/plain</type>
            <size>12971</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4Mzg2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTRhMTI2ODQ4MGM0ODRhMzkwOTg5MTJmYzg5YjFiOTc5
NWMxMGUzMy4uMzY0NjdhZjYwMjBlOTlmYTdmYjdhMjY2ZWVkNGYxNWIwMWZjZjEwYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU5
IEBACiAyMDEyLTA5LTEyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIGltcGxlbWVudCBmaXJzdCBwYXJ0IG9mIHN1cHBvcnQgZm9yIHRoZSBuZXcgVGVzdEV4
cGVjdGF0aW9ucyBzeW50YXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk2NTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHBhcnNpbmcgYSBsaW5l
IG9mIHRoZSBuZXcKKyAgICAgICAgZm9ybWF0IGZvciB0aGUgVGVzdEV4cGVjdGF0aW9ucyBmaWxl
IGFuZCBjb252ZXJ0aW5nIGl0IGJhY2sgaW50bworICAgICAgICB0aGUgb2xkIGZvcm1hdCBmb3Ig
Y29tcGF0aWJpbGl0eS4gVGhpcyByb3V0aW5lIGlzIG5vdCB5ZXQgdXNlZAorICAgICAgICBieSBh
bnl0aGluZy4KKworICAgICAgICBUaGUgbmV3IGZvcm1hdCBpcyBkb2N1bWVudGVkIGF0OgorICAg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvd2lraS9UZXN0RXhwZWN0YXRpb25zCisKKyAg
ICAgICAgYnV0LCBpbiBzaG9ydDoKKworICAgICAgICAgIFtidWdzXSBbICJbIiBtb2RpZmllcnMg
Il0iIF0gdGVzdF9uYW1lIFsgIlsiIGV4cGVjdGF0aW9ucyAiXSIgXQorCisgICAgICAgIC0gQ29t
bWVudHMgYXJlIGluZGljYXRlZCB3aXRoICIjIiBpbnN0ZWFkIG9mICIvLyIKKyAgICAgICAgLSBJ
ZiBubyBleHBlY3RhdGlvbnMgYXJlIHNwZWNpZmllZCB3ZSBkZWZhdWx0IHRvIFNraXAgZm9yCisg
ICAgICAgICAgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBTa2lwcGVkIGZpbGVzICh0aGVzZSB0d28g
Y2hhbmdlcyBtYWtlCisgICAgICAgICAgU2tpcHBlZCBmaWxlcyBhIHN1YnNldCBvZiBUZXN0RXhw
ZWN0YXRpb25zIGZpbGVzKQorCisgICAgICAgIC0gQWxsIG9mIHRoZSB0b2tlbnMgYXJlIG5vdyBD
YW1lbENhc2UgaW5zdGVhZCBvZiBBTExDQVBTLgorICAgICAgICAtIFRFWFQsIEFVRElPLCBJTUFH
RStURVhUIC0+IEZhaWx1cmUKKyAgICAgICAgLSBJTUFHRSAtPiBJbWFnZU9ubHlGYWlsdXJlCisg
ICAgICAgIC0gV09OVEZJWCAtPiBXb250Rml4CisgICAgICAgIC0gbW9kaWZpZXJzIHJlZmVyIHRv
IGp1c3QgdGhlIHBsYXRmb3JtcyBhbmQgY29uZmlndXJhdGlvbnMKKyAgICAgICAgICAocmVsZWFz
ZS9kZWJ1ZykgdGhhdCB0aGUgbGluZSBhcHBsaWVzIHRvLgorICAgICAgICAtIFdvbnRGaXgsIFJl
YmFzZWxpbmUsIFNsb3csIGFuZCBTa2lwIG1vdmUgdG8gdGhlIHJpZ2h0LWhhbmQgc2lkZSBhcwor
ICAgICAgICAgIGV4cGVjdGF0aW9ucworICAgICAgICAtIGV4cGVjdGF0aW9ucyB3aWxsIHR5cGlj
YWxseSBiZSB3cml0dGVuIG91dCBpbiBsZXhpY29ncmFwaGljIG9yZGVyCisgICAgICAgIC0gV2Ug
dXNlIHdlYmtpdC5vcmcvYi8xMjM0NSwgY3JidWcuY29tLzEyMzQ1LCBhbmQgYnVnKGRwcmFua2Up
CisgICAgICAgICAgaW5zdGVhZCBvZiBCVUdXSzEyMzQ1LCBCVUdDUjEyMzQ1LCBhbmQgQlVHRFBS
QU5LRS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90
ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblBhcnNlcik6Cisg
ICAgICAgIChUZXN0RXhwZWN0YXRpb25QYXJzZXIuX3Rva2VuaXplX2xpbmVfdXNpbmdfbmV3X2Zv
cm1hdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rl
c3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5OgorICAgICAgICAoTmV3RXhwZWN0YXRpb25TeW50
YXhUZXN0cyk6CisgICAgICAgIChOZXdFeHBlY3RhdGlvblN5bnRheFRlc3RzLmFzc2VydF9leHAp
OgorICAgICAgICAoTmV3RXhwZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X2JhcmVfbmFtZSk6Cisg
ICAgICAgIChOZXdFeHBlY3RhdGlvblN5bnRheFRlc3RzLnRlc3RfYmFyZV9uYW1lX2FuZF9idWdz
KToKKyAgICAgICAgKE5ld0V4cGVjdGF0aW9uU3ludGF4VGVzdHMudGVzdF9jb21tZW50cyk6Cisg
ICAgICAgIChOZXdFeHBlY3RhdGlvblN5bnRheFRlc3RzLnRlc3RfY29uZmlnX21vZGlmaWVycyk6
CisgICAgICAgIChOZXdFeHBlY3RhdGlvblN5bnRheFRlc3RzLnRlc3RfdW5rbm93bl9jb25maWcp
OgorICAgICAgICAoTmV3RXhwZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X3Vua25vd25fZXhwZWN0
YXRpb24pOgorICAgICAgICAoTmV3RXhwZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X3NraXApOgor
ICAgICAgICAoTmV3RXhwZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X3Nsb3cpOgorICAgICAgICAo
TmV3RXhwZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X3dvbnRmaXgpOgorICAgICAgICAoTmV3RXhw
ZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X2JsYW5rX2xpbmUpOgorICAgICAgICAoTmV3RXhwZWN0
YXRpb25TeW50YXhUZXN0cy50ZXN0X3dhcm5pbmdzKToKKworMjAxMi0wOS0xMiAgRGlyayBQcmFu
a2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAgICByZWZhY3RvciBUZXN0RXhwZWN0
YXRpb25zIHRva2VuaXphdGlvbiBzbGlnaHRseSBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIG5ldyBz
eW50YXgKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2
NTY0CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21v
ZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRleCAxNTZjNjhkOTRiMTIwNmMy
ZmRlMjljMTI4MjZmY2E3ZmZjMDJlY2I2Li4xMjU5MzNkYzMzNDE3N2ZkNzFiZmNhYjVmOTRlYjU0
ODZkMTVhNjU2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBAIC0yNTAsMTAgKzI1
MCwxMzggQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uUGFyc2VyKG9iamVjdCk6CiAKICAgICAgICAg
cmV0dXJuIGV4cGVjdGF0aW9uX2xpbmUKIAorICAgICMgRklYTUU6IFVwZGF0ZSB0aGUgb3JpZ2lu
YWwgbW9kaWZpZXJzIGFuZCByZW1vdmUgdGhpcyBvbmNlIHRoZSBvbGQgc3ludGF4IGlzIGdvbmUu
CisgICAgX2NvbmZpZ3VyYXRpb25fdG9rZW5zX2xpc3QgPSBbCisgICAgICAgICdNYWMnLCAnU25v
d0xlb3BhcmQnLCAnTGlvbicsICdNb3VudGFpbkxpb24nLAorICAgICAgICAnV2luJywgJ1hQJywg
J1Zpc3RhJywgJ1dpbjcnLAorICAgICAgICAnTGludXgnLAorICAgICAgICAnQW5kcm9pZCcsCisg
ICAgICAgICdSZWxlYXNlJywKKyAgICAgICAgJ0RlYnVnJywKKyAgICBdCisKKyAgICBfY29uZmln
dXJhdGlvbl90b2tlbnMgPSBkaWN0KCh0b2tlbiwgdG9rZW4udXBwZXIoKSkgZm9yIHRva2VuIGlu
IF9jb25maWd1cmF0aW9uX3Rva2Vuc19saXN0KQorCisgICAgIyBOb3RlOiB3ZSBjYW4ndCBkaXN0
aW5ndWlzaCBhdWRpbyBmYWlsdXJlcyBvciBpbWFnZSt0ZXh0IGZhaWx1cmVzIGZyb20gdGV4dC1v
bmx5IGZhaWx1cmVzLgorICAgICMgRklYTUU6IFVwZGF0ZSB0aGUgb3JpZ2luYWwgbW9kaWZpZXJz
IGxpc3QgYW5kIHJlbW92ZSB0aGlzIG9uY2UgdGhlIG9sZCBzeW50YXggaXMgZ29uZS4KKyAgICBf
ZXhwZWN0YXRpb25fdG9rZW5zID0geworICAgICAgICAnV29udEZpeCc6ICdXT05URklYJywKKyAg
ICAgICAgJ1Bhc3MnOiAnUEFTUycsCisgICAgICAgICdGYWlsdXJlJzogJ1RFWFQnLAorICAgICAg
ICAnSW1hZ2VPbmx5RmFpbHVyZSc6ICdJTUFHRScsCisgICAgICAgICdDcmFzaCc6ICdDUkFTSCcs
CisgICAgICAgICdUaW1lb3V0JzogJ1RJTUVPVVQnLAorICAgICAgICAnU2xvdyc6ICdTTE9XJywK
KyAgICB9CisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX3Rva2VuaXplX2xpbmVfdXNpbmdf
bmV3X2Zvcm1hdChjbHMsIGZpbGVuYW1lLCBleHBlY3RhdGlvbl9zdHJpbmcsIGxpbmVfbnVtYmVy
KToKLSAgICAgICAgIyBGSVhNRTogaW1wbGVtZW50IDopLgotICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yCisgICAgICAgICIiIlRva2VuaXplcyBhIGxpbmUgZnJvbSBUZXN0RXhwZWN0
YXRpb25zIGFuZCByZXR1cm5zIGFuIHVucGFyc2VkIFRlc3RFeHBlY3RhdGlvbkxpbmUgaW5zdGFu
Y2UgdXNpbmcgdGhlIG9sZCBmb3JtYXQuCisKKyAgICAgICAgVGhlIG5ldyBmb3JtYXQgZm9yIGEg
dGVzdCBleHBlY3RhdGlvbiBsaW5lIGlzOgorCisgICAgICAgIFtbYnVnc10gWyAiWyIgPGNvbmZp
Z3VyYXRpb24gbW9kaWZpZXJzPiAiXSIgPG5hbWU+IFsgIlsiIDxleHBlY3RhdGlvbnM+ICJdIiBb
IiMiIDxjb21tZW50Pl0KKworICAgICAgICBBbnkgZXJyYW50IHdoaXRlc3BhY2UgaXMgbm90IHBy
ZXNlcnZlZC4KKworICAgICAgICAiIiIKKyAgICAgICAgZXhwZWN0YXRpb25fbGluZSA9IFRlc3RF
eHBlY3RhdGlvbkxpbmUoKQorICAgICAgICBleHBlY3RhdGlvbl9saW5lLmZpbGVuYW1lID0gZmls
ZW5hbWUKKyAgICAgICAgZXhwZWN0YXRpb25fbGluZS5saW5lX251bWJlciA9IGxpbmVfbnVtYmVy
CisKKyAgICAgICAgY29tbWVudF9pbmRleCA9IGV4cGVjdGF0aW9uX3N0cmluZy5maW5kKCIjIikK
KyAgICAgICAgaWYgY29tbWVudF9pbmRleCA9PSAtMToKKyAgICAgICAgICAgIGNvbW1lbnRfaW5k
ZXggPSBsZW4oZXhwZWN0YXRpb25fc3RyaW5nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ZXhwZWN0YXRpb25fbGluZS5jb21tZW50ID0gZXhwZWN0YXRpb25fc3RyaW5nW2NvbW1lbnRfaW5k
ZXggKyAxOl0KKworICAgICAgICByZW1haW5pbmdfc3RyaW5nID0gcmUuc3ViKHIiXHMrIiwgIiAi
LCBleHBlY3RhdGlvbl9zdHJpbmdbOmNvbW1lbnRfaW5kZXhdLnN0cmlwKCkpCisgICAgICAgIGlm
IGxlbihyZW1haW5pbmdfc3RyaW5nKSA9PSAwOgorICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGF0
aW9uX2xpbmUKKworICAgICAgICAjIHNwZWNpYWwtY2FzZSBwYXJzaW5nIHRoaXMgc28gdGhhdCB3
ZSBmYWlsIGltbWVkaWF0ZWx5IGluc3RlYWQgb2YgdHJlYXRpbmcgdGhpcyBhcyBhIHRlc3QgbmFt
ZQorICAgICAgICBpZiByZW1haW5pbmdfc3RyaW5nLnN0YXJ0c3dpdGgoJy8vJyk6CisgICAgICAg
ICAgICBleHBlY3RhdGlvbl9saW5lLndhcm5pbmdzID0gWyd1c2UgIiMiIGluc3RlYWQgb2YgIi8v
IiBmb3IgY29tbWVudHMnXQorICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGF0aW9uX2xpbmUKKwor
ICAgICAgICBidWdzID0gW10KKyAgICAgICAgbW9kaWZpZXJzID0gW10KKyAgICAgICAgbmFtZSA9
IE5vbmUKKyAgICAgICAgZXhwZWN0YXRpb25zID0gW10KKyAgICAgICAgd2FybmluZ3MgPSBbXQor
CisgICAgICAgIHRva2VucyA9IHJlbWFpbmluZ19zdHJpbmcuc3BsaXQoKQorICAgICAgICBzdGF0
ZSA9ICdzdGFydCcKKyAgICAgICAgZm9yIHRva2VuIGluIHRva2VuczoKKyAgICAgICAgICAgIGlm
ICh0b2tlbi5zdGFydHN3aXRoKCd3ZWJraXQub3JnL2IvJykgb3IKKyAgICAgICAgICAgICAgICB0
b2tlbi5zdGFydHN3aXRoKCdjcmJ1Zy5jb20vJykgb3IKKyAgICAgICAgICAgICAgICB0b2tlbi5z
dGFydHN3aXRoKCdidWcoJykpOgorICAgICAgICAgICAgICAgIGlmIHN0YXRlICE9ICdzdGFydCc6
CisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLmFwcGVuZCgnIiVzIiBpcyBub3QgYXQgdGhl
IHN0YXJ0IG9mIHRoZSBsaW5lLicgJSB0b2tlbikKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsK
KyAgICAgICAgICAgICAgICBpZiB0b2tlbi5zdGFydHN3aXRoKCd3ZWJraXQub3JnL2IvJyk6Cisg
ICAgICAgICAgICAgICAgICAgIGJ1Z3MuYXBwZW5kKHRva2VuLnJlcGxhY2UoJ3dlYmtpdC5vcmcv
Yi8nLCAnQlVHV0snKSkKKyAgICAgICAgICAgICAgICBlbGlmIHRva2VuLnN0YXJ0c3dpdGgoJ2Ny
YnVnLmNvbS8nKToKKyAgICAgICAgICAgICAgICAgICAgYnVncy5hcHBlbmQodG9rZW4ucmVwbGFj
ZSgnY3JidWcuY29tLycsICdCVUdDUicpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2goJ2J1Z1woKFx3KylcKSQnLCB0b2tlbikKKyAg
ICAgICAgICAgICAgICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAgICAgICAgICAgICAg
d2FybmluZ3MuYXBwZW5kKCd1bnJlY29nbml6ZWQgYnVnIGlkZW50aWZpZXIgIiVzIicgJSB0b2tl
bikKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgICAgICBidWdzLmFwcGVuZCgnQlVHJyArIG1hdGNoLmdy
b3VwKDEpLnVwcGVyKCkpCisgICAgICAgICAgICBlbGlmIHRva2VuLnN0YXJ0c3dpdGgoJ0JVRycp
OgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLmFwcGVuZCgndW5yZWNvZ25pemVkIG9sZC1zdHls
ZSBidWcgaWRlbnRpZmllciAiJXMiJyAlIHRva2VuKQorICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICBlbGlmIHRva2VuID09ICdbJzoKKyAgICAgICAgICAgICAgICBpZiBzdGF0ZSBu
b3QgaW4gKCdzdGFydCcsICduYW1lX2ZvdW5kJyk6CisgICAgICAgICAgICAgICAgICAgIHdhcm5p
bmdzLmFwcGVuZCgndW5leHBlY3RlZCAiWyInKQorICAgICAgICAgICAgICAgICAgICBicmVhawor
ICAgICAgICAgICAgICAgIGlmIHN0YXRlID09ICdzdGFydCc6CisgICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gJ2NvbmZpZ3VyYXRpb24nCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSAnZXhwZWN0YXRpb25zJworICAgICAgICAgICAgZWxpZiB0b2tl
biA9PSAnXSc6CisgICAgICAgICAgICAgICAgaWYgc3RhdGUgbm90IGluICgnY29uZmlndXJhdGlv
bicsICdleHBlY3RhdGlvbnMnKToKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MuYXBwZW5k
KCd1bmV4cGVjdGVkICJdIicpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAg
ICAgICAgaWYgc3RhdGUgPT0gJ2NvbmZpZ3VyYXRpb24nOgorICAgICAgICAgICAgICAgICAgICBz
dGF0ZSA9ICduYW1lJworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gJ2RvbmUnCisgICAgICAgICAgICBlbGlmIHRva2VuIGluICgnLy8nLCAnOicsICc9
Jyk6CisgICAgICAgICAgICAgICAgd2FybmluZ3MuYXBwZW5kKCciJXMiIGlzIG5vdCBsZWdhbCBp
biB0aGUgbmV3IFRlc3RFeHBlY3RhdGlvbnMgc3ludGF4LicgJSB0b2tlbikKKyAgICAgICAgICAg
ICAgICBicmVhaworICAgICAgICAgICAgZWxpZiBzdGF0ZSA9PSAnY29uZmlndXJhdGlvbic6Cisg
ICAgICAgICAgICAgICAgbW9kaWZpZXJzLmFwcGVuZChjbHMuX2NvbmZpZ3VyYXRpb25fdG9rZW5z
LmdldCh0b2tlbiwgdG9rZW4pKQorICAgICAgICAgICAgZWxpZiBzdGF0ZSA9PSAnZXhwZWN0YXRp
b25zJzoKKyAgICAgICAgICAgICAgICBpZiB0b2tlbiBpbiAoJ1JlYmFzZWxpbmUnLCAnU2tpcCcs
ICdTbG93JywgJ1dvbnRGaXgnKToKKyAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLmFwcGVu
ZCh0b2tlbi51cHBlcigpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGF0aW9ucy5hcHBlbmQoY2xzLl9leHBlY3RhdGlvbl90b2tlbnMuZ2V0KHRva2Vu
LCB0b2tlbikpCisgICAgICAgICAgICBlbGlmIHN0YXRlID09ICduYW1lX2ZvdW5kJzoKKyAgICAg
ICAgICAgICAgICB3YXJuaW5ncy5hcHBlbmQoJ2V4cGVjdGluZyAiWyIsICIjIiwgb3IgZW5kIG9m
IGxpbmUgaW5zdGVhZCBvZiAiJXMiJyAlIHRva2VuKQorICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5hbWUgPSB0b2tlbgorICAgICAgICAg
ICAgICAgIHN0YXRlID0gJ25hbWVfZm91bmQnCisKKyAgICAgICAgaWYgbm90IHdhcm5pbmdzOgor
ICAgICAgICAgICAgaWYgbm90IG5hbWU6CisgICAgICAgICAgICAgICAgd2FybmluZ3MuYXBwZW5k
KCdEaWQgbm90IGZpbmQgYSB0ZXN0IG5hbWUuJykKKyAgICAgICAgICAgIGVsaWYgc3RhdGUgbm90
IGluICgnbmFtZV9mb3VuZCcsICdkb25lJyk6CisgICAgICAgICAgICAgICAgd2FybmluZ3MuYXBw
ZW5kKCdNaXNzaW5nIGEgIl0iJykKKworICAgICAgICBpZiBub3QgZXhwZWN0YXRpb25zOgorICAg
ICAgICAgICAgaWYgJ1NLSVAnIG5vdCBpbiBtb2RpZmllcnMgYW5kICdSRUJBU0VMSU5FJyBub3Qg
aW4gbW9kaWZpZXJzIGFuZCAnU0xPVycgbm90IGluIG1vZGlmaWVyczoKKyAgICAgICAgICAgICAg
ICBtb2RpZmllcnMuYXBwZW5kKCdTS0lQJykKKyAgICAgICAgICAgIGV4cGVjdGF0aW9ucyA9IFsn
UEFTUyddCisKKyAgICAgICAgZXhwZWN0YXRpb25fbGluZS5tb2RpZmllcnMgPSBidWdzICsgbW9k
aWZpZXJzCisgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUuZXhwZWN0YXRpb25zID0gZXhwZWN0YXRp
b25zCisgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUubmFtZSA9IG5hbWUKKyAgICAgICAgZXhwZWN0
YXRpb25fbGluZS53YXJuaW5ncyA9IHdhcm5pbmdzCisgICAgICAgIHJldHVybiBleHBlY3RhdGlv
bl9saW5lCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX3NwbGl0X3NwYWNlX3NlcGFyYXRl
ZChjbHMsIHNwYWNlX3NlcGFyYXRlZF9zdHJpbmcpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhw
ZWN0YXRpb25zX3VuaXR0ZXN0LnB5CmluZGV4IDIxMGRhZmYwNjAyZDVhM2RkMWY1NjliMmQwZmJi
MGY3MjU1ZDk0ZTYuLmEzZTUxOWUxY2IyYzZhYmI3OTA4NTgxNjQ5Zjc0NGRjMDBlMzExOTggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0
X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKQEAgLTM0Miw2
ICszNDIsNjggQEAgQlVHX1RFU1QgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0g
VEVYVAogICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRt
bCcsIFRFWFQpCiAKIAorY2xhc3MgTmV3RXhwZWN0YXRpb25TeW50YXhUZXN0cyh1bml0dGVzdC5U
ZXN0Q2FzZSk6CisgICAgZGVmIGFzc2VydF9leHAoc2VsZiwgbGluZSwgYnVncz1Ob25lLCBtb2Rp
ZmllcnM9Tm9uZSwgZXhwZWN0YXRpb25zPU5vbmUsIHdhcm5pbmdzPU5vbmUsIGNvbW1lbnQ9Tm9u
ZSwgbmFtZT0nZm9vLmh0bWwnKToKKyAgICAgICAgYnVncyA9IGJ1Z3Mgb3IgW10KKyAgICAgICAg
bW9kaWZpZXJzID0gbW9kaWZpZXJzIG9yIFtdCisgICAgICAgIGV4cGVjdGF0aW9ucyA9IGV4cGVj
dGF0aW9ucyBvciBbXQorICAgICAgICB3YXJuaW5ncyA9IHdhcm5pbmdzIG9yIFtdCisgICAgICAg
IGZpbGVuYW1lID0gJ1Rlc3RFeHBlY3RhdGlvbnMnCisgICAgICAgIGxpbmVfbnVtYmVyID0gMQor
ICAgICAgICBleHBlY3RhdGlvbl9saW5lID0gVGVzdEV4cGVjdGF0aW9uUGFyc2VyLl90b2tlbml6
ZV9saW5lX3VzaW5nX25ld19mb3JtYXQoZmlsZW5hbWUsIGxpbmUsIGxpbmVfbnVtYmVyKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RhdGlvbl9saW5lLndhcm5pbmdzLCB3YXJuaW5n
cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0YXRpb25fbGluZS5uYW1lLCBuYW1l
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RhdGlvbl9saW5lLmZpbGVuYW1lLCBm
aWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0YXRpb25fbGluZS5saW5l
X251bWJlciwgbGluZV9udW1iZXIpCisgICAgICAgIGlmIG5vdCB3YXJuaW5nczoKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGF0aW9uX2xpbmUubW9kaWZpZXJzLCBtb2RpZmll
cnMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RhdGlvbl9saW5lLmV4cGVj
dGF0aW9ucywgZXhwZWN0YXRpb25zKQorCisgICAgZGVmIHRlc3RfYmFyZV9uYW1lKHNlbGYpOgor
ICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2Zvby5odG1sJywgbW9kaWZpZXJzPVsnU0tJUCddLCBl
eHBlY3RhdGlvbnM9WydQQVNTJ10pCisKKyAgICBkZWYgdGVzdF9iYXJlX25hbWVfYW5kX2J1Z3Mo
c2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnd2Via2l0Lm9yZy9iLzEyMzQ1IGZvby5o
dG1sJywgbW9kaWZpZXJzPVsnQlVHV0sxMjM0NScsICdTS0lQJ10sIGV4cGVjdGF0aW9ucz1bJ1BB
U1MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdjcmJ1Zy5jb20vMTIzNDUgZm9vLmh0bWwn
LCBtb2RpZmllcnM9WydCVUdDUjEyMzQ1JywgJ1NLSVAnXSwgZXhwZWN0YXRpb25zPVsnUEFTUydd
KQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2J1ZyhkcHJhbmtlKSBmb28uaHRtbCcsIG1vZGlm
aWVycz1bJ0JVR0RQUkFOS0UnLCAnU0tJUCddLCBleHBlY3RhdGlvbnM9WydQQVNTJ10pCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2V4cCgnY3JidWcuY29tLzEyMzQ1IGNyYnVnLmNvbS8zNDU2NyBmb28u
aHRtbCcsIG1vZGlmaWVycz1bJ0JVR0NSMTIzNDUnLCAnQlVHQ1IzNDU2NycsICdTS0lQJ10sIGV4
cGVjdGF0aW9ucz1bJ1BBU1MnXSkKKworICAgIGRlZiB0ZXN0X2NvbW1lbnRzKHNlbGYpOgorICAg
ICAgICBzZWxmLmFzc2VydF9leHAoIiMgY29tbWVudCIsIG5hbWU9Tm9uZSwgY29tbWVudD0iIyBj
b21tZW50IikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCJmb28uaHRtbCAjIGNvbW1lbnQiLCBj
b21tZW50PSIjIGNvbW1lbnQiLCBleHBlY3RhdGlvbnM9WydQQVNTJ10sIG1vZGlmaWVycz1bJ1NL
SVAnXSkKKworICAgIGRlZiB0ZXN0X2NvbmZpZ19tb2RpZmllcnMoc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0X2V4cCgnWyBNYWMgXSBmb28uaHRtbCcsIG1vZGlmaWVycz1bJ01BQycsICdTS0lQ
J10sIGV4cGVjdGF0aW9ucz1bJ1BBU1MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdbIE1h
YyBWaXN0YSBdIGZvby5odG1sJywgbW9kaWZpZXJzPVsnTUFDJywgJ1ZJU1RBJywgJ1NLSVAnXSwg
ZXhwZWN0YXRpb25zPVsnUEFTUyddKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ1sgTWFjIF0g
Zm9vLmh0bWwgWyBGYWlsdXJlIF0gJywgbW9kaWZpZXJzPVsnTUFDJ10sIGV4cGVjdGF0aW9ucz1b
J1RFWFQnXSkKKworICAgIGRlZiB0ZXN0X3Vua25vd25fY29uZmlnKHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydF9leHAoJ1sgRm9vIF0gZm9vLmh0bWwgJywgbW9kaWZpZXJzPVsnRm9vJywgJ1NL
SVAnXSwgZXhwZWN0YXRpb25zPVsnUEFTUyddKQorCisgICAgZGVmIHRlc3RfdW5rbm93bl9leHBl
Y3RhdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmb28uaHRtbCBbIEF1ZGlv
IF0nLCBleHBlY3RhdGlvbnM9WydBdWRpbyddKQorCisgICAgZGVmIHRlc3Rfc2tpcChzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmb28uaHRtbCBbIFNraXAgXScsIG1vZGlmaWVycz1b
J1NLSVAnXSwgZXhwZWN0YXRpb25zPVsnUEFTUyddKQorCisgICAgZGVmIHRlc3Rfc2xvdyhzZWxm
KToKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmb28uaHRtbCBbIFNsb3cgXScsIG1vZGlmaWVy
cz1bJ1NMT1cnXSwgZXhwZWN0YXRpb25zPVsnUEFTUyddKQorCisgICAgZGVmIHRlc3Rfd29udGZp
eChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmb28uaHRtbCBbIFdvbnRGaXggXScs
IG1vZGlmaWVycz1bJ1dPTlRGSVgnLCAnU0tJUCddLCBleHBlY3RhdGlvbnM9WydQQVNTJ10pCisK
KyAgICBkZWYgdGVzdF9ibGFua19saW5lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9leHAo
JycsIG5hbWU9Tm9uZSkKKworICAgIGRlZiB0ZXN0X3dhcm5pbmdzKHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydF9leHAoJ1sgTWFjIF0nLCB3YXJuaW5ncz1bJ0RpZCBub3QgZmluZCBhIHRlc3Qg
bmFtZS4nXSwgbmFtZT1Ob25lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnWyBbJywgd2Fy
bmluZ3M9Wyd1bmV4cGVjdGVkICJbIiddLCBuYW1lPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2V4cCgnY3JidWcuY29tLzEyMzQ1IF0nLCB3YXJuaW5ncz1bJ3VuZXhwZWN0ZWQgIl0iJ10sIG5h
bWU9Tm9uZSkKKworICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2Zvby5odG1sIGNyYnVnLmNvbS8x
MjM0NSBdJywgd2FybmluZ3M9WyciY3JidWcuY29tLzEyMzQ1IiBpcyBub3QgYXQgdGhlIHN0YXJ0
IG9mIHRoZSBsaW5lLiddKQorCisKIGNsYXNzIFNlbWFudGljVGVzdHMoQmFzZSk6CiAgICAgZGVm
IHRlc3RfYnVnX2Zvcm1hdChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VF
cnJvciwgc2VsZi5wYXJzZV9leHAsICdCVUcxMjM0IDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sID0gVEVYVCcsIGlzX2xpbnRfbW9kZT1UcnVlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164782</attachid>
            <date>2012-09-19 15:12:23 -0700</date>
            <delta_ts>2012-09-19 15:26:55 -0700</delta_ts>
            <desc>merge to head, address review comments, patch for landing</desc>
            <filename>bug-96569-20120919151149.patch</filename>
            <type>text/plain</type>
            <size>13355</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MDQ3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGEwNTI0NTVkN2QxNzViMDViYTE1YmQ2NDRiZmQwOGJi
ZjdhOWU1NC4uMGM5Yzc5YWEwNGZlZmZmZWUyMTE3MjBkZDFlMjc4NWI4ZTg4ZTA2YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU5
IEBACiAyMDEyLTA5LTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIGltcGxlbWVudCBmaXJzdCBwYXJ0IG9mIHN1cHBvcnQgZm9yIHRoZSBuZXcgVGVzdEV4
cGVjdGF0aW9ucyBzeW50YXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk2NTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHBhcnNpbmcgYSBsaW5l
IG9mIHRoZSBuZXcKKyAgICAgICAgZm9ybWF0IGZvciB0aGUgVGVzdEV4cGVjdGF0aW9ucyBmaWxl
IGFuZCBjb252ZXJ0aW5nIGl0IGJhY2sgaW50bworICAgICAgICB0aGUgb2xkIGZvcm1hdCBmb3Ig
Y29tcGF0aWJpbGl0eS4gVGhpcyByb3V0aW5lIGlzIG5vdCB5ZXQgdXNlZAorICAgICAgICBieSBh
bnl0aGluZy4KKworICAgICAgICBUaGUgbmV3IGZvcm1hdCBpcyBkb2N1bWVudGVkIGF0OgorICAg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvd2lraS9UZXN0RXhwZWN0YXRpb25zCisKKyAg
ICAgICAgYnV0LCBpbiBzaG9ydDoKKworICAgICAgICAgIFtidWdzXSBbICJbIiBtb2RpZmllcnMg
Il0iIF0gdGVzdF9uYW1lIFsgIlsiIGV4cGVjdGF0aW9ucyAiXSIgXQorCisgICAgICAgIC0gQ29t
bWVudHMgYXJlIGluZGljYXRlZCB3aXRoICIjIiBpbnN0ZWFkIG9mICIvLyIKKyAgICAgICAgLSBJ
ZiBubyBleHBlY3RhdGlvbnMgYXJlIHNwZWNpZmllZCB3ZSBkZWZhdWx0IHRvIFNraXAgZm9yCisg
ICAgICAgICAgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBTa2lwcGVkIGZpbGVzICh0aGVzZSB0d28g
Y2hhbmdlcyBtYWtlCisgICAgICAgICAgU2tpcHBlZCBmaWxlcyBhIHN1YnNldCBvZiBUZXN0RXhw
ZWN0YXRpb25zIGZpbGVzKQorCisgICAgICAgIC0gQWxsIG9mIHRoZSB0b2tlbnMgYXJlIG5vdyBD
YW1lbENhc2UgaW5zdGVhZCBvZiBBTExDQVBTLgorICAgICAgICAtIFRFWFQsIEFVRElPLCBJTUFH
RStURVhUIC0+IEZhaWx1cmUKKyAgICAgICAgLSBJTUFHRSAtPiBJbWFnZU9ubHlGYWlsdXJlCisg
ICAgICAgIC0gV09OVEZJWCAtPiBXb250Rml4CisgICAgICAgIC0gbW9kaWZpZXJzIHJlZmVyIHRv
IGp1c3QgdGhlIHBsYXRmb3JtcyBhbmQgY29uZmlndXJhdGlvbnMKKyAgICAgICAgICAocmVsZWFz
ZS9kZWJ1ZykgdGhhdCB0aGUgbGluZSBhcHBsaWVzIHRvLgorICAgICAgICAtIFdvbnRGaXgsIFJl
YmFzZWxpbmUsIFNsb3csIGFuZCBTa2lwIG1vdmUgdG8gdGhlIHJpZ2h0LWhhbmQgc2lkZSBhcwor
ICAgICAgICAgIGV4cGVjdGF0aW9ucworICAgICAgICAtIGV4cGVjdGF0aW9ucyB3aWxsIHR5cGlj
YWxseSBiZSB3cml0dGVuIG91dCBpbiBsZXhpY29ncmFwaGljIG9yZGVyCisgICAgICAgIC0gV2Ug
dXNlIHdlYmtpdC5vcmcvYi8xMjM0NSwgY3JidWcuY29tLzEyMzQ1LCBhbmQgYnVnKGRwcmFua2Up
CisgICAgICAgICAgaW5zdGVhZCBvZiBCVUdXSzEyMzQ1LCBCVUdDUjEyMzQ1LCBhbmQgQlVHRFBS
QU5LRS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90
ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblBhcnNlcik6Cisg
ICAgICAgIChUZXN0RXhwZWN0YXRpb25QYXJzZXIuX3Rva2VuaXplX2xpbmVfdXNpbmdfbmV3X2Zv
cm1hdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rl
c3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5OgorICAgICAgICAoTmV3RXhwZWN0YXRpb25TeW50
YXhUZXN0cyk6CisgICAgICAgIChOZXdFeHBlY3RhdGlvblN5bnRheFRlc3RzLmFzc2VydF9leHAp
OgorICAgICAgICAoTmV3RXhwZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X2JhcmVfbmFtZSk6Cisg
ICAgICAgIChOZXdFeHBlY3RhdGlvblN5bnRheFRlc3RzLnRlc3RfYmFyZV9uYW1lX2FuZF9idWdz
KToKKyAgICAgICAgKE5ld0V4cGVjdGF0aW9uU3ludGF4VGVzdHMudGVzdF9jb21tZW50cyk6Cisg
ICAgICAgIChOZXdFeHBlY3RhdGlvblN5bnRheFRlc3RzLnRlc3RfY29uZmlnX21vZGlmaWVycyk6
CisgICAgICAgIChOZXdFeHBlY3RhdGlvblN5bnRheFRlc3RzLnRlc3RfdW5rbm93bl9jb25maWcp
OgorICAgICAgICAoTmV3RXhwZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X3Vua25vd25fZXhwZWN0
YXRpb24pOgorICAgICAgICAoTmV3RXhwZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X3NraXApOgor
ICAgICAgICAoTmV3RXhwZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X3Nsb3cpOgorICAgICAgICAo
TmV3RXhwZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X3dvbnRmaXgpOgorICAgICAgICAoTmV3RXhw
ZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X2JsYW5rX2xpbmUpOgorICAgICAgICAoTmV3RXhwZWN0
YXRpb25TeW50YXhUZXN0cy50ZXN0X3dhcm5pbmdzKToKKworMjAxMi0wOS0xOSAgRGlyayBQcmFu
a2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAgICBucnd0OiByZXBsYWNlIFRFWFQs
IEFVRElPLCBhbmQgSU1BR0UrVEVYVCB3aXRoIEZBSUwKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2ODQ1CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9u
cy5weQppbmRleCAxMDQxNTYwM2NmMzFhNDA2ZTFhOGE1NTVkY2I1MThiZDNjNDEzYmIzLi41YTli
NzhlNDE1MDhiNzQ2N2RmNmI1ZjhlYWIxZWU3MGViYmEzNjhiIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhw
ZWN0YXRpb25zLnB5CkBAIC0yNTQsMTAgKzI1NCwxNDYgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9u
UGFyc2VyKG9iamVjdCk6CiAKICAgICAgICAgcmV0dXJuIGV4cGVjdGF0aW9uX2xpbmUKIAorICAg
ICMgRklYTUU6IFVwZGF0ZSB0aGUgb3JpZ2luYWwgbW9kaWZpZXJzIGFuZCByZW1vdmUgdGhpcyBv
bmNlIHRoZSBvbGQgc3ludGF4IGlzIGdvbmUuCisgICAgX2NvbmZpZ3VyYXRpb25fdG9rZW5zX2xp
c3QgPSBbCisgICAgICAgICdNYWMnLCAnU25vd0xlb3BhcmQnLCAnTGlvbicsICdNb3VudGFpbkxp
b24nLAorICAgICAgICAnV2luJywgJ1hQJywgJ1Zpc3RhJywgJ1dpbjcnLAorICAgICAgICAnTGlu
dXgnLAorICAgICAgICAnQW5kcm9pZCcsCisgICAgICAgICdSZWxlYXNlJywKKyAgICAgICAgJ0Rl
YnVnJywKKyAgICBdCisKKyAgICBfY29uZmlndXJhdGlvbl90b2tlbnMgPSBkaWN0KCh0b2tlbiwg
dG9rZW4udXBwZXIoKSkgZm9yIHRva2VuIGluIF9jb25maWd1cmF0aW9uX3Rva2Vuc19saXN0KQor
CisgICAgIyBOb3RlOiB3ZSBjYW4ndCBkaXN0aW5ndWlzaCBhdWRpbyBmYWlsdXJlcyBvciBpbWFn
ZSt0ZXh0IGZhaWx1cmVzIGZyb20gdGV4dC1vbmx5IGZhaWx1cmVzLgorICAgICMgRklYTUU6IFVw
ZGF0ZSB0aGUgb3JpZ2luYWwgbW9kaWZpZXJzIGxpc3QgYW5kIHJlbW92ZSB0aGlzIG9uY2UgdGhl
IG9sZCBzeW50YXggaXMgZ29uZS4KKyAgICBfZXhwZWN0YXRpb25fdG9rZW5zID0geworICAgICAg
ICAnV29udEZpeCc6ICdXT05URklYJywKKyAgICAgICAgJ1Bhc3MnOiAnUEFTUycsCisgICAgICAg
ICdGYWlsdXJlJzogJ1RFWFQnLAorICAgICAgICAnSW1hZ2VPbmx5RmFpbHVyZSc6ICdJTUFHRScs
CisgICAgICAgICdDcmFzaCc6ICdDUkFTSCcsCisgICAgICAgICdUaW1lb3V0JzogJ1RJTUVPVVQn
LAorICAgICAgICAnU2xvdyc6ICdTTE9XJywKKyAgICB9CisKICAgICBAY2xhc3NtZXRob2QKICAg
ICBkZWYgX3Rva2VuaXplX2xpbmVfdXNpbmdfbmV3X2Zvcm1hdChjbHMsIGZpbGVuYW1lLCBleHBl
Y3RhdGlvbl9zdHJpbmcsIGxpbmVfbnVtYmVyKToKLSAgICAgICAgIyBGSVhNRTogaW1wbGVtZW50
IDopLgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgICAgICIiIlRva2Vu
aXplcyBhIGxpbmUgZnJvbSBUZXN0RXhwZWN0YXRpb25zIGFuZCByZXR1cm5zIGFuIHVucGFyc2Vk
IFRlc3RFeHBlY3RhdGlvbkxpbmUgaW5zdGFuY2UgdXNpbmcgdGhlIG9sZCBmb3JtYXQuCisKKyAg
ICAgICAgVGhlIG5ldyBmb3JtYXQgZm9yIGEgdGVzdCBleHBlY3RhdGlvbiBsaW5lIGlzOgorCisg
ICAgICAgIFtbYnVnc10gWyAiWyIgPGNvbmZpZ3VyYXRpb24gbW9kaWZpZXJzPiAiXSIgPG5hbWU+
IFsgIlsiIDxleHBlY3RhdGlvbnM+ICJdIiBbIiMiIDxjb21tZW50Pl0KKworICAgICAgICBBbnkg
ZXJyYW50IHdoaXRlc3BhY2UgaXMgbm90IHByZXNlcnZlZC4KKworICAgICAgICAiIiIKKyAgICAg
ICAgZXhwZWN0YXRpb25fbGluZSA9IFRlc3RFeHBlY3RhdGlvbkxpbmUoKQorICAgICAgICBleHBl
Y3RhdGlvbl9saW5lLmZpbGVuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgZXhwZWN0YXRpb25fbGlu
ZS5saW5lX251bWJlciA9IGxpbmVfbnVtYmVyCisKKyAgICAgICAgY29tbWVudF9pbmRleCA9IGV4
cGVjdGF0aW9uX3N0cmluZy5maW5kKCIjIikKKyAgICAgICAgaWYgY29tbWVudF9pbmRleCA9PSAt
MToKKyAgICAgICAgICAgIGNvbW1lbnRfaW5kZXggPSBsZW4oZXhwZWN0YXRpb25fc3RyaW5nKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXhwZWN0YXRpb25fbGluZS5jb21tZW50ID0gZXhw
ZWN0YXRpb25fc3RyaW5nW2NvbW1lbnRfaW5kZXggKyAxOl0KKworICAgICAgICByZW1haW5pbmdf
c3RyaW5nID0gcmUuc3ViKHIiXHMrIiwgIiAiLCBleHBlY3RhdGlvbl9zdHJpbmdbOmNvbW1lbnRf
aW5kZXhdLnN0cmlwKCkpCisgICAgICAgIGlmIGxlbihyZW1haW5pbmdfc3RyaW5nKSA9PSAwOgor
ICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGF0aW9uX2xpbmUKKworICAgICAgICAjIHNwZWNpYWwt
Y2FzZSBwYXJzaW5nIHRoaXMgc28gdGhhdCB3ZSBmYWlsIGltbWVkaWF0ZWx5IGluc3RlYWQgb2Yg
dHJlYXRpbmcgdGhpcyBhcyBhIHRlc3QgbmFtZQorICAgICAgICBpZiByZW1haW5pbmdfc3RyaW5n
LnN0YXJ0c3dpdGgoJy8vJyk6CisgICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLndhcm5pbmdz
ID0gWyd1c2UgIiMiIGluc3RlYWQgb2YgIi8vIiBmb3IgY29tbWVudHMnXQorICAgICAgICAgICAg
cmV0dXJuIGV4cGVjdGF0aW9uX2xpbmUKKworICAgICAgICBidWdzID0gW10KKyAgICAgICAgbW9k
aWZpZXJzID0gW10KKyAgICAgICAgbmFtZSA9IE5vbmUKKyAgICAgICAgZXhwZWN0YXRpb25zID0g
W10KKyAgICAgICAgd2FybmluZ3MgPSBbXQorCisgICAgICAgIFdFQktJVF9CVUdfUFJFRklYID0g
J3dlYmtpdC5vcmcvYi8nCisgICAgICAgIENIUk9NSVVNX0JVR19QUkVGSVggPSAnY3JidWcuY29t
LycKKyAgICAgICAgVjhfQlVHX1BSRUZJWCA9ICdjb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMv
ZGV0YWlsP2lkPScKKworICAgICAgICB0b2tlbnMgPSByZW1haW5pbmdfc3RyaW5nLnNwbGl0KCkK
KyAgICAgICAgc3RhdGUgPSAnc3RhcnQnCisgICAgICAgIGZvciB0b2tlbiBpbiB0b2tlbnM6Cisg
ICAgICAgICAgICBpZiAodG9rZW4uc3RhcnRzd2l0aChXRUJLSVRfQlVHX1BSRUZJWCkgb3IKKyAg
ICAgICAgICAgICAgICB0b2tlbi5zdGFydHN3aXRoKENIUk9NSVVNX0JVR19QUkVGSVgpIG9yCisg
ICAgICAgICAgICAgICAgdG9rZW4uc3RhcnRzd2l0aChWOF9CVUdfUFJFRklYKSBvcgorICAgICAg
ICAgICAgICAgIHRva2VuLnN0YXJ0c3dpdGgoJ0J1ZygnKSk6CisgICAgICAgICAgICAgICAgaWYg
c3RhdGUgIT0gJ3N0YXJ0JzoKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MuYXBwZW5kKCci
JXMiIGlzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUuJyAlIHRva2VuKQorICAgICAgICAg
ICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIHRva2VuLnN0YXJ0c3dpdGgoV0VC
S0lUX0JVR19QUkVGSVgpOgorICAgICAgICAgICAgICAgICAgICBidWdzLmFwcGVuZCh0b2tlbi5y
ZXBsYWNlKFdFQktJVF9CVUdfUFJFRklYLCAnQlVHV0snKSkKKyAgICAgICAgICAgICAgICBlbGlm
IHRva2VuLnN0YXJ0c3dpdGgoQ0hST01JVU1fQlVHX1BSRUZJWCk6CisgICAgICAgICAgICAgICAg
ICAgIGJ1Z3MuYXBwZW5kKHRva2VuLnJlcGxhY2UoQ0hST01JVU1fQlVHX1BSRUZJWCwgJ0JVR0NS
JykpCisgICAgICAgICAgICAgICAgZWxpZiB0b2tlbi5zdGFydHN3aXRoKFY4X0JVR19QUkVGSVgp
OgorICAgICAgICAgICAgICAgICAgICBidWdzLmFwcGVuZCh0b2tlbi5yZXBsYWNlKFY4X0JVR19Q
UkVGSVgsICdCVUdWOF8nKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICBtYXRjaCA9IHJlLm1hdGNoKCdCdWdcKChcdyspXCkkJywgdG9rZW4pCisgICAgICAgICAg
ICAgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdz
LmFwcGVuZCgndW5yZWNvZ25pemVkIGJ1ZyBpZGVudGlmaWVyICIlcyInICUgdG9rZW4pCisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICAgICAgYnVncy5hcHBlbmQoJ0JVRycgKyBtYXRjaC5ncm91cCgxKS51
cHBlcigpKQorICAgICAgICAgICAgZWxpZiB0b2tlbi5zdGFydHN3aXRoKCdCVUcnKToKKyAgICAg
ICAgICAgICAgICB3YXJuaW5ncy5hcHBlbmQoJ3VucmVjb2duaXplZCBvbGQtc3R5bGUgYnVnIGlk
ZW50aWZpZXIgIiVzIicgJSB0b2tlbikKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAg
ICAgZWxpZiB0b2tlbiA9PSAnWyc6CisgICAgICAgICAgICAgICAgaWYgc3RhdGUgPT0gJ3N0YXJ0
JzoKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAnY29uZmlndXJhdGlvbicKKyAgICAgICAg
ICAgICAgICBlbGlmIHN0YXRlID09ICduYW1lX2ZvdW5kJzoKKyAgICAgICAgICAgICAgICAgICAg
c3RhdGUgPSAnZXhwZWN0YXRpb25zJworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgICAgIHdhcm5pbmdzLmFwcGVuZCgndW5leHBlY3RlZCAiWyInKQorICAgICAgICAgICAg
ICAgICAgICBicmVhaworICAgICAgICAgICAgZWxpZiB0b2tlbiA9PSAnXSc6CisgICAgICAgICAg
ICAgICAgaWYgc3RhdGUgPT0gJ2NvbmZpZ3VyYXRpb24nOgorICAgICAgICAgICAgICAgICAgICBz
dGF0ZSA9ICduYW1lJworICAgICAgICAgICAgICAgIGVsaWYgc3RhdGUgPT0gJ2V4cGVjdGF0aW9u
cyc6CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gJ2RvbmUnCisgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MuYXBwZW5kKCd1bmV4cGVjdGVkICJd
IicpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbGlmIHRva2VuIGlu
ICgnLy8nLCAnOicsICc9Jyk6CisgICAgICAgICAgICAgICAgd2FybmluZ3MuYXBwZW5kKCciJXMi
IGlzIG5vdCBsZWdhbCBpbiB0aGUgbmV3IFRlc3RFeHBlY3RhdGlvbnMgc3ludGF4LicgJSB0b2tl
bikKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxpZiBzdGF0ZSA9PSAnY29u
ZmlndXJhdGlvbic6CisgICAgICAgICAgICAgICAgbW9kaWZpZXJzLmFwcGVuZChjbHMuX2NvbmZp
Z3VyYXRpb25fdG9rZW5zLmdldCh0b2tlbiwgdG9rZW4pKQorICAgICAgICAgICAgZWxpZiBzdGF0
ZSA9PSAnZXhwZWN0YXRpb25zJzoKKyAgICAgICAgICAgICAgICBpZiB0b2tlbiBpbiAoJ1JlYmFz
ZWxpbmUnLCAnU2tpcCcsICdTbG93JywgJ1dvbnRGaXgnKToKKyAgICAgICAgICAgICAgICAgICAg
bW9kaWZpZXJzLmFwcGVuZCh0b2tlbi51cHBlcigpKQorICAgICAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9ucy5hcHBlbmQoY2xzLl9leHBlY3RhdGlvbl90
b2tlbnMuZ2V0KHRva2VuLCB0b2tlbikpCisgICAgICAgICAgICBlbGlmIHN0YXRlID09ICduYW1l
X2ZvdW5kJzoKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5hcHBlbmQoJ2V4cGVjdGluZyAiWyIs
ICIjIiwgb3IgZW5kIG9mIGxpbmUgaW5zdGVhZCBvZiAiJXMiJyAlIHRva2VuKQorICAgICAgICAg
ICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5hbWUgPSB0
b2tlbgorICAgICAgICAgICAgICAgIHN0YXRlID0gJ25hbWVfZm91bmQnCisKKyAgICAgICAgaWYg
bm90IHdhcm5pbmdzOgorICAgICAgICAgICAgaWYgbm90IG5hbWU6CisgICAgICAgICAgICAgICAg
d2FybmluZ3MuYXBwZW5kKCdEaWQgbm90IGZpbmQgYSB0ZXN0IG5hbWUuJykKKyAgICAgICAgICAg
IGVsaWYgc3RhdGUgbm90IGluICgnbmFtZV9mb3VuZCcsICdkb25lJyk6CisgICAgICAgICAgICAg
ICAgd2FybmluZ3MuYXBwZW5kKCdNaXNzaW5nIGEgIl0iJykKKworICAgICAgICBpZiBub3QgZXhw
ZWN0YXRpb25zOgorICAgICAgICAgICAgaWYgJ1NLSVAnIG5vdCBpbiBtb2RpZmllcnMgYW5kICdS
RUJBU0VMSU5FJyBub3QgaW4gbW9kaWZpZXJzIGFuZCAnU0xPVycgbm90IGluIG1vZGlmaWVyczoK
KyAgICAgICAgICAgICAgICBtb2RpZmllcnMuYXBwZW5kKCdTS0lQJykKKyAgICAgICAgICAgIGV4
cGVjdGF0aW9ucyA9IFsnUEFTUyddCisKKyAgICAgICAgIyBGSVhNRTogZXhwZWN0YXRpb24gbGlu
ZSBzaG91bGQganVzdCBzdG9yZSBidWdzIGFuZCBtb2RpZmllcnMgc2VwYXJhdGVseS4KKyAgICAg
ICAgZXhwZWN0YXRpb25fbGluZS5tb2RpZmllcnMgPSBidWdzICsgbW9kaWZpZXJzCisgICAgICAg
IGV4cGVjdGF0aW9uX2xpbmUuZXhwZWN0YXRpb25zID0gZXhwZWN0YXRpb25zCisgICAgICAgIGV4
cGVjdGF0aW9uX2xpbmUubmFtZSA9IG5hbWUKKyAgICAgICAgZXhwZWN0YXRpb25fbGluZS53YXJu
aW5ncyA9IHdhcm5pbmdzCisgICAgICAgIHJldHVybiBleHBlY3RhdGlvbl9saW5lCiAKICAgICBA
Y2xhc3NtZXRob2QKICAgICBkZWYgX3NwbGl0X3NwYWNlX3NlcGFyYXRlZChjbHMsIHNwYWNlX3Nl
cGFyYXRlZF9zdHJpbmcpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0
ZXN0LnB5CmluZGV4IDI3MzQ5YmE4ZDVjYWVjZGZkOGZkNTY5NmU1ZDkxN2RiOGI5M2VmZDkuLjcw
N2QwMWQzYTlkZDg3OGRjOWNmYmYyODZlMGM4ZDE2ZTg3NTc3ZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9uc191
bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2Rl
bHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKQEAgLTM0MCw2ICszNDAsNjggQEAgQlVH
X1RFU1QgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gRkFJTAogICAgICAgICBz
ZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIEZBSUwpCiAKIAor
Y2xhc3MgTmV3RXhwZWN0YXRpb25TeW50YXhUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg
ZGVmIGFzc2VydF9leHAoc2VsZiwgbGluZSwgYnVncz1Ob25lLCBtb2RpZmllcnM9Tm9uZSwgZXhw
ZWN0YXRpb25zPU5vbmUsIHdhcm5pbmdzPU5vbmUsIGNvbW1lbnQ9Tm9uZSwgbmFtZT0nZm9vLmh0
bWwnKToKKyAgICAgICAgYnVncyA9IGJ1Z3Mgb3IgW10KKyAgICAgICAgbW9kaWZpZXJzID0gbW9k
aWZpZXJzIG9yIFtdCisgICAgICAgIGV4cGVjdGF0aW9ucyA9IGV4cGVjdGF0aW9ucyBvciBbXQor
ICAgICAgICB3YXJuaW5ncyA9IHdhcm5pbmdzIG9yIFtdCisgICAgICAgIGZpbGVuYW1lID0gJ1Rl
c3RFeHBlY3RhdGlvbnMnCisgICAgICAgIGxpbmVfbnVtYmVyID0gMQorICAgICAgICBleHBlY3Rh
dGlvbl9saW5lID0gVGVzdEV4cGVjdGF0aW9uUGFyc2VyLl90b2tlbml6ZV9saW5lX3VzaW5nX25l
d19mb3JtYXQoZmlsZW5hbWUsIGxpbmUsIGxpbmVfbnVtYmVyKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhleHBlY3RhdGlvbl9saW5lLndhcm5pbmdzLCB3YXJuaW5ncykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoZXhwZWN0YXRpb25fbGluZS5uYW1lLCBuYW1lKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhleHBlY3RhdGlvbl9saW5lLmZpbGVuYW1lLCBmaWxlbmFtZSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0YXRpb25fbGluZS5saW5lX251bWJlciwgbGluZV9u
dW1iZXIpCisgICAgICAgIGlmIG5vdCB3YXJuaW5nczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGV4cGVjdGF0aW9uX2xpbmUubW9kaWZpZXJzLCBtb2RpZmllcnMpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RhdGlvbl9saW5lLmV4cGVjdGF0aW9ucywgZXhwZWN0
YXRpb25zKQorCisgICAgZGVmIHRlc3RfYmFyZV9uYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFz
c2VydF9leHAoJ2Zvby5odG1sJywgbW9kaWZpZXJzPVsnU0tJUCddLCBleHBlY3RhdGlvbnM9WydQ
QVNTJ10pCisKKyAgICBkZWYgdGVzdF9iYXJlX25hbWVfYW5kX2J1Z3Moc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0X2V4cCgnd2Via2l0Lm9yZy9iLzEyMzQ1IGZvby5odG1sJywgbW9kaWZpZXJz
PVsnQlVHV0sxMjM0NScsICdTS0lQJ10sIGV4cGVjdGF0aW9ucz1bJ1BBU1MnXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRfZXhwKCdjcmJ1Zy5jb20vMTIzNDUgZm9vLmh0bWwnLCBtb2RpZmllcnM9WydC
VUdDUjEyMzQ1JywgJ1NLSVAnXSwgZXhwZWN0YXRpb25zPVsnUEFTUyddKQorICAgICAgICBzZWxm
LmFzc2VydF9leHAoJ0J1ZyhkcHJhbmtlKSBmb28uaHRtbCcsIG1vZGlmaWVycz1bJ0JVR0RQUkFO
S0UnLCAnU0tJUCddLCBleHBlY3RhdGlvbnM9WydQQVNTJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0
X2V4cCgnY3JidWcuY29tLzEyMzQ1IGNyYnVnLmNvbS8zNDU2NyBmb28uaHRtbCcsIG1vZGlmaWVy
cz1bJ0JVR0NSMTIzNDUnLCAnQlVHQ1IzNDU2NycsICdTS0lQJ10sIGV4cGVjdGF0aW9ucz1bJ1BB
U1MnXSkKKworICAgIGRlZiB0ZXN0X2NvbW1lbnRzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2Vy
dF9leHAoIiMgY29tbWVudCIsIG5hbWU9Tm9uZSwgY29tbWVudD0iIyBjb21tZW50IikKKyAgICAg
ICAgc2VsZi5hc3NlcnRfZXhwKCJmb28uaHRtbCAjIGNvbW1lbnQiLCBjb21tZW50PSIjIGNvbW1l
bnQiLCBleHBlY3RhdGlvbnM9WydQQVNTJ10sIG1vZGlmaWVycz1bJ1NLSVAnXSkKKworICAgIGRl
ZiB0ZXN0X2NvbmZpZ19tb2RpZmllcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgn
WyBNYWMgXSBmb28uaHRtbCcsIG1vZGlmaWVycz1bJ01BQycsICdTS0lQJ10sIGV4cGVjdGF0aW9u
cz1bJ1BBU1MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdbIE1hYyBWaXN0YSBdIGZvby5o
dG1sJywgbW9kaWZpZXJzPVsnTUFDJywgJ1ZJU1RBJywgJ1NLSVAnXSwgZXhwZWN0YXRpb25zPVsn
UEFTUyddKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ1sgTWFjIF0gZm9vLmh0bWwgWyBGYWls
dXJlIF0gJywgbW9kaWZpZXJzPVsnTUFDJ10sIGV4cGVjdGF0aW9ucz1bJ1RFWFQnXSkKKworICAg
IGRlZiB0ZXN0X3Vua25vd25fY29uZmlnKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9leHAo
J1sgRm9vIF0gZm9vLmh0bWwgJywgbW9kaWZpZXJzPVsnRm9vJywgJ1NLSVAnXSwgZXhwZWN0YXRp
b25zPVsnUEFTUyddKQorCisgICAgZGVmIHRlc3RfdW5rbm93bl9leHBlY3RhdGlvbihzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmb28uaHRtbCBbIEF1ZGlvIF0nLCBleHBlY3RhdGlv
bnM9WydBdWRpbyddKQorCisgICAgZGVmIHRlc3Rfc2tpcChzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRfZXhwKCdmb28uaHRtbCBbIFNraXAgXScsIG1vZGlmaWVycz1bJ1NLSVAnXSwgZXhwZWN0
YXRpb25zPVsnUEFTUyddKQorCisgICAgZGVmIHRlc3Rfc2xvdyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfZXhwKCdmb28uaHRtbCBbIFNsb3cgXScsIG1vZGlmaWVycz1bJ1NMT1cnXSwgZXhw
ZWN0YXRpb25zPVsnUEFTUyddKQorCisgICAgZGVmIHRlc3Rfd29udGZpeChzZWxmKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRfZXhwKCdmb28uaHRtbCBbIFdvbnRGaXggXScsIG1vZGlmaWVycz1bJ1dP
TlRGSVgnLCAnU0tJUCddLCBleHBlY3RhdGlvbnM9WydQQVNTJ10pCisKKyAgICBkZWYgdGVzdF9i
bGFua19saW5lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9leHAoJycsIG5hbWU9Tm9uZSkK
KworICAgIGRlZiB0ZXN0X3dhcm5pbmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9leHAo
J1sgTWFjIF0nLCB3YXJuaW5ncz1bJ0RpZCBub3QgZmluZCBhIHRlc3QgbmFtZS4nXSwgbmFtZT1O
b25lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnWyBbJywgd2FybmluZ3M9Wyd1bmV4cGVj
dGVkICJbIiddLCBuYW1lPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnY3JidWcuY29t
LzEyMzQ1IF0nLCB3YXJuaW5ncz1bJ3VuZXhwZWN0ZWQgIl0iJ10sIG5hbWU9Tm9uZSkKKworICAg
ICAgICBzZWxmLmFzc2VydF9leHAoJ2Zvby5odG1sIGNyYnVnLmNvbS8xMjM0NSBdJywgd2Fybmlu
Z3M9WyciY3JidWcuY29tLzEyMzQ1IiBpcyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLidd
KQorCisKIGNsYXNzIFNlbWFudGljVGVzdHMoQmFzZSk6CiAgICAgZGVmIHRlc3RfYnVnX2Zvcm1h
dChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJz
ZV9leHAsICdCVUcxMjM0IDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gRkFJTCcsIGlz
X2xpbnRfbW9kZT1UcnVlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164787</attachid>
            <date>2012-09-19 15:26:58 -0700</date>
            <delta_ts>2012-09-19 15:27:12 -0700</delta_ts>
            <desc>more review feedback</desc>
            <filename>bug-96569-20120919152623.patch</filename>
            <type>text/plain</type>
            <size>13336</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MDQ3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGEwNTI0NTVkN2QxNzViMDViYTE1YmQ2NDRiZmQwOGJi
ZjdhOWU1NC4uNjE2NTRlYTI2NzlmZjRiODhiMjVkYmY1MGQ1ZjZiZWNkNGYyNzIwOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU5
IEBACiAyMDEyLTA5LTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIGltcGxlbWVudCBmaXJzdCBwYXJ0IG9mIHN1cHBvcnQgZm9yIHRoZSBuZXcgVGVzdEV4
cGVjdGF0aW9ucyBzeW50YXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk2NTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHBhcnNpbmcgYSBsaW5l
IG9mIHRoZSBuZXcKKyAgICAgICAgZm9ybWF0IGZvciB0aGUgVGVzdEV4cGVjdGF0aW9ucyBmaWxl
IGFuZCBjb252ZXJ0aW5nIGl0IGJhY2sgaW50bworICAgICAgICB0aGUgb2xkIGZvcm1hdCBmb3Ig
Y29tcGF0aWJpbGl0eS4gVGhpcyByb3V0aW5lIGlzIG5vdCB5ZXQgdXNlZAorICAgICAgICBieSBh
bnl0aGluZy4KKworICAgICAgICBUaGUgbmV3IGZvcm1hdCBpcyBkb2N1bWVudGVkIGF0OgorICAg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvd2lraS9UZXN0RXhwZWN0YXRpb25zCisKKyAg
ICAgICAgYnV0LCBpbiBzaG9ydDoKKworICAgICAgICAgIFtidWdzXSBbICJbIiBtb2RpZmllcnMg
Il0iIF0gdGVzdF9uYW1lIFsgIlsiIGV4cGVjdGF0aW9ucyAiXSIgXQorCisgICAgICAgIC0gQ29t
bWVudHMgYXJlIGluZGljYXRlZCB3aXRoICIjIiBpbnN0ZWFkIG9mICIvLyIKKyAgICAgICAgLSBJ
ZiBubyBleHBlY3RhdGlvbnMgYXJlIHNwZWNpZmllZCB3ZSBkZWZhdWx0IHRvIFNraXAgZm9yCisg
ICAgICAgICAgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBTa2lwcGVkIGZpbGVzICh0aGVzZSB0d28g
Y2hhbmdlcyBtYWtlCisgICAgICAgICAgU2tpcHBlZCBmaWxlcyBhIHN1YnNldCBvZiBUZXN0RXhw
ZWN0YXRpb25zIGZpbGVzKQorCisgICAgICAgIC0gQWxsIG9mIHRoZSB0b2tlbnMgYXJlIG5vdyBD
YW1lbENhc2UgaW5zdGVhZCBvZiBBTExDQVBTLgorICAgICAgICAtIEZBSUwgLT4gRmFpbHVyZQor
ICAgICAgICAtIElNQUdFIC0+IEltYWdlT25seUZhaWx1cmUKKyAgICAgICAgLSBXT05URklYIC0+
IFdvbnRGaXgKKyAgICAgICAgLSBtb2RpZmllcnMgcmVmZXIgdG8ganVzdCB0aGUgcGxhdGZvcm1z
IGFuZCBjb25maWd1cmF0aW9ucworICAgICAgICAgIChyZWxlYXNlL2RlYnVnKSB0aGF0IHRoZSBs
aW5lIGFwcGxpZXMgdG8uCisgICAgICAgIC0gV29udEZpeCwgUmViYXNlbGluZSwgU2xvdywgYW5k
IFNraXAgbW92ZSB0byB0aGUgcmlnaHQtaGFuZCBzaWRlIGFzCisgICAgICAgICAgZXhwZWN0YXRp
b25zCisgICAgICAgIC0gZXhwZWN0YXRpb25zIHdpbGwgdHlwaWNhbGx5IGJlIHdyaXR0ZW4gb3V0
IGluIGxleGljb2dyYXBoaWMgb3JkZXIKKyAgICAgICAgLSBXZSB1c2Ugd2Via2l0Lm9yZy9iLzEy
MzQ1LCBjcmJ1Zy5jb20vMTIzNDUsIGFuZCBCdWcoZHByYW5rZSkKKyAgICAgICAgICBpbnN0ZWFk
IG9mIEJVR1dLMTIzNDUsIEJVR0NSMTIzNDUsIGFuZCBCVUdEUFJBTktFLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5
OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyKToKKyAgICAgICAgKFRlc3RFeHBlY3Rh
dGlvblBhcnNlci5fdG9rZW5pemVfbGluZV91c2luZ19uZXdfZm9ybWF0KToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5p
dHRlc3QucHk6CisgICAgICAgIChOZXdFeHBlY3RhdGlvblN5bnRheFRlc3RzKToKKyAgICAgICAg
KE5ld0V4cGVjdGF0aW9uU3ludGF4VGVzdHMuYXNzZXJ0X2V4cCk6CisgICAgICAgIChOZXdFeHBl
Y3RhdGlvblN5bnRheFRlc3RzLnRlc3RfYmFyZV9uYW1lKToKKyAgICAgICAgKE5ld0V4cGVjdGF0
aW9uU3ludGF4VGVzdHMudGVzdF9iYXJlX25hbWVfYW5kX2J1Z3MpOgorICAgICAgICAoTmV3RXhw
ZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X2NvbW1lbnRzKToKKyAgICAgICAgKE5ld0V4cGVjdGF0
aW9uU3ludGF4VGVzdHMudGVzdF9jb25maWdfbW9kaWZpZXJzKToKKyAgICAgICAgKE5ld0V4cGVj
dGF0aW9uU3ludGF4VGVzdHMudGVzdF91bmtub3duX2NvbmZpZyk6CisgICAgICAgIChOZXdFeHBl
Y3RhdGlvblN5bnRheFRlc3RzLnRlc3RfdW5rbm93bl9leHBlY3RhdGlvbik6CisgICAgICAgIChO
ZXdFeHBlY3RhdGlvblN5bnRheFRlc3RzLnRlc3Rfc2tpcCk6CisgICAgICAgIChOZXdFeHBlY3Rh
dGlvblN5bnRheFRlc3RzLnRlc3Rfc2xvdyk6CisgICAgICAgIChOZXdFeHBlY3RhdGlvblN5bnRh
eFRlc3RzLnRlc3Rfd29udGZpeCk6CisgICAgICAgIChOZXdFeHBlY3RhdGlvblN5bnRheFRlc3Rz
LnRlc3RfYmxhbmtfbGluZSk6CisgICAgICAgIChOZXdFeHBlY3RhdGlvblN5bnRheFRlc3RzLnRl
c3Rfd2FybmluZ3MpOgorCisyMDEyLTA5LTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21p
dW0ub3JnPgorCiAgICAgICAgIG5yd3Q6IHJlcGxhY2UgVEVYVCwgQVVESU8sIGFuZCBJTUFHRStU
RVhUIHdpdGggRkFJTAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTY4NDUKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CmluZGV4IDEwNDE1NjAz
Y2YzMWE0MDZlMWE4YTU1NWRjYjUxOGJkM2M0MTNiYjMuLmNlNGJlM2RhNDQ4NTFmOTU1MTgzZGQ3
ZDU3MDlmOWZlNTVkZDNkODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkKQEAgLTI1
NCwxMCArMjU0LDE0NiBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25QYXJzZXIob2JqZWN0KToKIAog
ICAgICAgICByZXR1cm4gZXhwZWN0YXRpb25fbGluZQogCisgICAgIyBGSVhNRTogVXBkYXRlIHRo
ZSBvcmlnaW5hbCBtb2RpZmllcnMgYW5kIHJlbW92ZSB0aGlzIG9uY2UgdGhlIG9sZCBzeW50YXgg
aXMgZ29uZS4KKyAgICBfY29uZmlndXJhdGlvbl90b2tlbnNfbGlzdCA9IFsKKyAgICAgICAgJ01h
YycsICdTbm93TGVvcGFyZCcsICdMaW9uJywgJ01vdW50YWluTGlvbicsCisgICAgICAgICdXaW4n
LCAnWFAnLCAnVmlzdGEnLCAnV2luNycsCisgICAgICAgICdMaW51eCcsCisgICAgICAgICdBbmRy
b2lkJywKKyAgICAgICAgJ1JlbGVhc2UnLAorICAgICAgICAnRGVidWcnLAorICAgIF0KKworICAg
IF9jb25maWd1cmF0aW9uX3Rva2VucyA9IGRpY3QoKHRva2VuLCB0b2tlbi51cHBlcigpKSBmb3Ig
dG9rZW4gaW4gX2NvbmZpZ3VyYXRpb25fdG9rZW5zX2xpc3QpCisKKyAgICAjIE5vdGU6IHdlIGNh
bid0IGRpc3Rpbmd1aXNoIGF1ZGlvIGZhaWx1cmVzIG9yIGltYWdlK3RleHQgZmFpbHVyZXMgZnJv
bSB0ZXh0LW9ubHkgZmFpbHVyZXMuCisgICAgIyBGSVhNRTogVXBkYXRlIHRoZSBvcmlnaW5hbCBt
b2RpZmllcnMgbGlzdCBhbmQgcmVtb3ZlIHRoaXMgb25jZSB0aGUgb2xkIHN5bnRheCBpcyBnb25l
LgorICAgIF9leHBlY3RhdGlvbl90b2tlbnMgPSB7CisgICAgICAgICdXb250Rml4JzogJ1dPTlRG
SVgnLAorICAgICAgICAnUGFzcyc6ICdQQVNTJywKKyAgICAgICAgJ0ZhaWx1cmUnOiAnRkFJTCcs
CisgICAgICAgICdJbWFnZU9ubHlGYWlsdXJlJzogJ0lNQUdFJywKKyAgICAgICAgJ0NyYXNoJzog
J0NSQVNIJywKKyAgICAgICAgJ1RpbWVvdXQnOiAnVElNRU9VVCcsCisgICAgICAgICdTbG93Jzog
J1NMT1cnLAorICAgIH0KKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfdG9rZW5pemVfbGlu
ZV91c2luZ19uZXdfZm9ybWF0KGNscywgZmlsZW5hbWUsIGV4cGVjdGF0aW9uX3N0cmluZywgbGlu
ZV9udW1iZXIpOgotICAgICAgICAjIEZJWE1FOiBpbXBsZW1lbnQgOikuCi0gICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgIiIiVG9rZW5pemVzIGEgbGluZSBmcm9tIFRl
c3RFeHBlY3RhdGlvbnMgYW5kIHJldHVybnMgYW4gdW5wYXJzZWQgVGVzdEV4cGVjdGF0aW9uTGlu
ZSBpbnN0YW5jZSB1c2luZyB0aGUgb2xkIGZvcm1hdC4KKworICAgICAgICBUaGUgbmV3IGZvcm1h
dCBmb3IgYSB0ZXN0IGV4cGVjdGF0aW9uIGxpbmUgaXM6CisKKyAgICAgICAgW1tidWdzXSBbICJb
IiA8Y29uZmlndXJhdGlvbiBtb2RpZmllcnM+ICJdIiA8bmFtZT4gWyAiWyIgPGV4cGVjdGF0aW9u
cz4gIl0iIFsiIyIgPGNvbW1lbnQ+XQorCisgICAgICAgIEFueSBlcnJhbnQgd2hpdGVzcGFjZSBp
cyBub3QgcHJlc2VydmVkLgorCisgICAgICAgICIiIgorICAgICAgICBleHBlY3RhdGlvbl9saW5l
ID0gVGVzdEV4cGVjdGF0aW9uTGluZSgpCisgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUuZmlsZW5h
bWUgPSBmaWxlbmFtZQorICAgICAgICBleHBlY3RhdGlvbl9saW5lLmxpbmVfbnVtYmVyID0gbGlu
ZV9udW1iZXIKKworICAgICAgICBjb21tZW50X2luZGV4ID0gZXhwZWN0YXRpb25fc3RyaW5nLmZp
bmQoIiMiKQorICAgICAgICBpZiBjb21tZW50X2luZGV4ID09IC0xOgorICAgICAgICAgICAgY29t
bWVudF9pbmRleCA9IGxlbihleHBlY3RhdGlvbl9zdHJpbmcpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBleHBlY3RhdGlvbl9saW5lLmNvbW1lbnQgPSBleHBlY3RhdGlvbl9zdHJpbmdbY29t
bWVudF9pbmRleCArIDE6XQorCisgICAgICAgIHJlbWFpbmluZ19zdHJpbmcgPSByZS5zdWIociJc
cysiLCAiICIsIGV4cGVjdGF0aW9uX3N0cmluZ1s6Y29tbWVudF9pbmRleF0uc3RyaXAoKSkKKyAg
ICAgICAgaWYgbGVuKHJlbWFpbmluZ19zdHJpbmcpID09IDA6CisgICAgICAgICAgICByZXR1cm4g
ZXhwZWN0YXRpb25fbGluZQorCisgICAgICAgICMgc3BlY2lhbC1jYXNlIHBhcnNpbmcgdGhpcyBz
byB0aGF0IHdlIGZhaWwgaW1tZWRpYXRlbHkgaW5zdGVhZCBvZiB0cmVhdGluZyB0aGlzIGFzIGEg
dGVzdCBuYW1lCisgICAgICAgIGlmIHJlbWFpbmluZ19zdHJpbmcuc3RhcnRzd2l0aCgnLy8nKToK
KyAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUud2FybmluZ3MgPSBbJ3VzZSAiIyIgaW5zdGVh
ZCBvZiAiLy8iIGZvciBjb21tZW50cyddCisgICAgICAgICAgICByZXR1cm4gZXhwZWN0YXRpb25f
bGluZQorCisgICAgICAgIGJ1Z3MgPSBbXQorICAgICAgICBtb2RpZmllcnMgPSBbXQorICAgICAg
ICBuYW1lID0gTm9uZQorICAgICAgICBleHBlY3RhdGlvbnMgPSBbXQorICAgICAgICB3YXJuaW5n
cyA9IFtdCisKKyAgICAgICAgV0VCS0lUX0JVR19QUkVGSVggPSAnd2Via2l0Lm9yZy9iLycKKyAg
ICAgICAgQ0hST01JVU1fQlVHX1BSRUZJWCA9ICdjcmJ1Zy5jb20vJworICAgICAgICBWOF9CVUdf
UFJFRklYID0gJ2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9JworCisgICAg
ICAgIHRva2VucyA9IHJlbWFpbmluZ19zdHJpbmcuc3BsaXQoKQorICAgICAgICBzdGF0ZSA9ICdz
dGFydCcKKyAgICAgICAgZm9yIHRva2VuIGluIHRva2VuczoKKyAgICAgICAgICAgIGlmICh0b2tl
bi5zdGFydHN3aXRoKFdFQktJVF9CVUdfUFJFRklYKSBvcgorICAgICAgICAgICAgICAgIHRva2Vu
LnN0YXJ0c3dpdGgoQ0hST01JVU1fQlVHX1BSRUZJWCkgb3IKKyAgICAgICAgICAgICAgICB0b2tl
bi5zdGFydHN3aXRoKFY4X0JVR19QUkVGSVgpIG9yCisgICAgICAgICAgICAgICAgdG9rZW4uc3Rh
cnRzd2l0aCgnQnVnKCcpKToKKyAgICAgICAgICAgICAgICBpZiBzdGF0ZSAhPSAnc3RhcnQnOgor
ICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5hcHBlbmQoJyIlcyIgaXMgbm90IGF0IHRoZSBz
dGFydCBvZiB0aGUgbGluZS4nICUgdG9rZW4pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICAgICAgaWYgdG9rZW4uc3RhcnRzd2l0aChXRUJLSVRfQlVHX1BSRUZJWCk6Cisg
ICAgICAgICAgICAgICAgICAgIGJ1Z3MuYXBwZW5kKHRva2VuLnJlcGxhY2UoV0VCS0lUX0JVR19Q
UkVGSVgsICdCVUdXSycpKQorICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4uc3RhcnRzd2l0aChD
SFJPTUlVTV9CVUdfUFJFRklYKToKKyAgICAgICAgICAgICAgICAgICAgYnVncy5hcHBlbmQodG9r
ZW4ucmVwbGFjZShDSFJPTUlVTV9CVUdfUFJFRklYLCAnQlVHQ1InKSkKKyAgICAgICAgICAgICAg
ICBlbGlmIHRva2VuLnN0YXJ0c3dpdGgoVjhfQlVHX1BSRUZJWCk6CisgICAgICAgICAgICAgICAg
ICAgIGJ1Z3MuYXBwZW5kKHRva2VuLnJlcGxhY2UoVjhfQlVHX1BSRUZJWCwgJ0JVR1Y4XycpKQor
ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gcmUubWF0
Y2goJ0J1Z1woKFx3KylcKSQnLCB0b2tlbikKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IG1h
dGNoOgorICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MuYXBwZW5kKCd1bnJlY29nbml6
ZWQgYnVnIGlkZW50aWZpZXIgIiVzIicgJSB0b2tlbikKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAg
ICBidWdzLmFwcGVuZCgnQlVHJyArIG1hdGNoLmdyb3VwKDEpLnVwcGVyKCkpCisgICAgICAgICAg
ICBlbGlmIHRva2VuLnN0YXJ0c3dpdGgoJ0JVRycpOgorICAgICAgICAgICAgICAgIHdhcm5pbmdz
LmFwcGVuZCgndW5yZWNvZ25pemVkIG9sZC1zdHlsZSBidWcgaWRlbnRpZmllciAiJXMiJyAlIHRv
a2VuKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbGlmIHRva2VuID09ICdb
JzoKKyAgICAgICAgICAgICAgICBpZiBzdGF0ZSA9PSAnc3RhcnQnOgorICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9ICdjb25maWd1cmF0aW9uJworICAgICAgICAgICAgICAgIGVsaWYgc3RhdGUg
PT0gJ25hbWVfZm91bmQnOgorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9ICdleHBlY3RhdGlv
bnMnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mu
YXBwZW5kKCd1bmV4cGVjdGVkICJbIicpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAg
ICAgICAgICBlbGlmIHRva2VuID09ICddJzoKKyAgICAgICAgICAgICAgICBpZiBzdGF0ZSA9PSAn
Y29uZmlndXJhdGlvbic6CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gJ25hbWUnCisgICAg
ICAgICAgICAgICAgZWxpZiBzdGF0ZSA9PSAnZXhwZWN0YXRpb25zJzoKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgPSAnZG9uZScKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgICAgICB3YXJuaW5ncy5hcHBlbmQoJ3VuZXhwZWN0ZWQgIl0iJykKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gKCcvLycsICc6JywgJz0nKToK
KyAgICAgICAgICAgICAgICB3YXJuaW5ncy5hcHBlbmQoJyIlcyIgaXMgbm90IGxlZ2FsIGluIHRo
ZSBuZXcgVGVzdEV4cGVjdGF0aW9ucyBzeW50YXguJyAlIHRva2VuKQorICAgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICBlbGlmIHN0YXRlID09ICdjb25maWd1cmF0aW9uJzoKKyAgICAg
ICAgICAgICAgICBtb2RpZmllcnMuYXBwZW5kKGNscy5fY29uZmlndXJhdGlvbl90b2tlbnMuZ2V0
KHRva2VuLCB0b2tlbikpCisgICAgICAgICAgICBlbGlmIHN0YXRlID09ICdleHBlY3RhdGlvbnMn
OgorICAgICAgICAgICAgICAgIGlmIHRva2VuIGluICgnUmViYXNlbGluZScsICdTa2lwJywgJ1Ns
b3cnLCAnV29udEZpeCcpOgorICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMuYXBwZW5kKHRv
a2VuLnVwcGVyKCkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0YXRpb25zLmFwcGVuZChjbHMuX2V4cGVjdGF0aW9uX3Rva2Vucy5nZXQodG9rZW4sIHRv
a2VuKSkKKyAgICAgICAgICAgIGVsaWYgc3RhdGUgPT0gJ25hbWVfZm91bmQnOgorICAgICAgICAg
ICAgICAgIHdhcm5pbmdzLmFwcGVuZCgnZXhwZWN0aW5nICJbIiwgIiMiLCBvciBlbmQgb2YgbGlu
ZSBpbnN0ZWFkIG9mICIlcyInICUgdG9rZW4pCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSA9IHRva2VuCisgICAgICAgICAgICAg
ICAgc3RhdGUgPSAnbmFtZV9mb3VuZCcKKworICAgICAgICBpZiBub3Qgd2FybmluZ3M6CisgICAg
ICAgICAgICBpZiBub3QgbmFtZToKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5hcHBlbmQoJ0Rp
ZCBub3QgZmluZCBhIHRlc3QgbmFtZS4nKQorICAgICAgICAgICAgZWxpZiBzdGF0ZSBub3QgaW4g
KCduYW1lX2ZvdW5kJywgJ2RvbmUnKToKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5hcHBlbmQo
J01pc3NpbmcgYSAiXSInKQorCisgICAgICAgIGlmIG5vdCBleHBlY3RhdGlvbnM6CisgICAgICAg
ICAgICBpZiAnU0tJUCcgbm90IGluIG1vZGlmaWVycyBhbmQgJ1JFQkFTRUxJTkUnIG5vdCBpbiBt
b2RpZmllcnMgYW5kICdTTE9XJyBub3QgaW4gbW9kaWZpZXJzOgorICAgICAgICAgICAgICAgIG1v
ZGlmaWVycy5hcHBlbmQoJ1NLSVAnKQorICAgICAgICAgICAgZXhwZWN0YXRpb25zID0gWydQQVNT
J10KKworICAgICAgICAjIEZJWE1FOiBleHBlY3RhdGlvbiBsaW5lIHNob3VsZCBqdXN0IHN0b3Jl
IGJ1Z3MgYW5kIG1vZGlmaWVycyBzZXBhcmF0ZWx5LgorICAgICAgICBleHBlY3RhdGlvbl9saW5l
Lm1vZGlmaWVycyA9IGJ1Z3MgKyBtb2RpZmllcnMKKyAgICAgICAgZXhwZWN0YXRpb25fbGluZS5l
eHBlY3RhdGlvbnMgPSBleHBlY3RhdGlvbnMKKyAgICAgICAgZXhwZWN0YXRpb25fbGluZS5uYW1l
ID0gbmFtZQorICAgICAgICBleHBlY3RhdGlvbl9saW5lLndhcm5pbmdzID0gd2FybmluZ3MKKyAg
ICAgICAgcmV0dXJuIGV4cGVjdGF0aW9uX2xpbmUKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRl
ZiBfc3BsaXRfc3BhY2Vfc2VwYXJhdGVkKGNscywgc3BhY2Vfc2VwYXJhdGVkX3N0cmluZyk6CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVz
dF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKaW5kZXggMjczNDli
YThkNWNhZWNkZmQ4ZmQ1Njk2ZTVkOTE3ZGI4YjkzZWZkOS4uNzA3ZDAxZDNhOWRkODc4ZGM5Y2Zi
ZjI4NmUwYzhkMTZlODc1NzdmYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9u
c191bml0dGVzdC5weQpAQCAtMzQwLDYgKzM0MCw2OCBAQCBCVUdfVEVTVCBXSU4gOiBmYWlsdXJl
cy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBGQUlMCiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgRkFJTCkKIAogCitjbGFzcyBOZXdFeHBlY3RhdGlv
blN5bnRheFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgYXNzZXJ0X2V4cChzZWxm
LCBsaW5lLCBidWdzPU5vbmUsIG1vZGlmaWVycz1Ob25lLCBleHBlY3RhdGlvbnM9Tm9uZSwgd2Fy
bmluZ3M9Tm9uZSwgY29tbWVudD1Ob25lLCBuYW1lPSdmb28uaHRtbCcpOgorICAgICAgICBidWdz
ID0gYnVncyBvciBbXQorICAgICAgICBtb2RpZmllcnMgPSBtb2RpZmllcnMgb3IgW10KKyAgICAg
ICAgZXhwZWN0YXRpb25zID0gZXhwZWN0YXRpb25zIG9yIFtdCisgICAgICAgIHdhcm5pbmdzID0g
d2FybmluZ3Mgb3IgW10KKyAgICAgICAgZmlsZW5hbWUgPSAnVGVzdEV4cGVjdGF0aW9ucycKKyAg
ICAgICAgbGluZV9udW1iZXIgPSAxCisgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUgPSBUZXN0RXhw
ZWN0YXRpb25QYXJzZXIuX3Rva2VuaXplX2xpbmVfdXNpbmdfbmV3X2Zvcm1hdChmaWxlbmFtZSwg
bGluZSwgbGluZV9udW1iZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGF0aW9u
X2xpbmUud2FybmluZ3MsIHdhcm5pbmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBl
Y3RhdGlvbl9saW5lLm5hbWUsIG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVj
dGF0aW9uX2xpbmUuZmlsZW5hbWUsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhleHBlY3RhdGlvbl9saW5lLmxpbmVfbnVtYmVyLCBsaW5lX251bWJlcikKKyAgICAgICAgaWYg
bm90IHdhcm5pbmdzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0YXRpb25f
bGluZS5tb2RpZmllcnMsIG1vZGlmaWVycykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KGV4cGVjdGF0aW9uX2xpbmUuZXhwZWN0YXRpb25zLCBleHBlY3RhdGlvbnMpCisKKyAgICBkZWYg
dGVzdF9iYXJlX25hbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZm9vLmh0bWwn
LCBtb2RpZmllcnM9WydTS0lQJ10sIGV4cGVjdGF0aW9ucz1bJ1BBU1MnXSkKKworICAgIGRlZiB0
ZXN0X2JhcmVfbmFtZV9hbmRfYnVncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCd3
ZWJraXQub3JnL2IvMTIzNDUgZm9vLmh0bWwnLCBtb2RpZmllcnM9WydCVUdXSzEyMzQ1JywgJ1NL
SVAnXSwgZXhwZWN0YXRpb25zPVsnUEFTUyddKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2Ny
YnVnLmNvbS8xMjM0NSBmb28uaHRtbCcsIG1vZGlmaWVycz1bJ0JVR0NSMTIzNDUnLCAnU0tJUCdd
LCBleHBlY3RhdGlvbnM9WydQQVNTJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnQnVnKGRw
cmFua2UpIGZvby5odG1sJywgbW9kaWZpZXJzPVsnQlVHRFBSQU5LRScsICdTS0lQJ10sIGV4cGVj
dGF0aW9ucz1bJ1BBU1MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdjcmJ1Zy5jb20vMTIz
NDUgY3JidWcuY29tLzM0NTY3IGZvby5odG1sJywgbW9kaWZpZXJzPVsnQlVHQ1IxMjM0NScsICdC
VUdDUjM0NTY3JywgJ1NLSVAnXSwgZXhwZWN0YXRpb25zPVsnUEFTUyddKQorCisgICAgZGVmIHRl
c3RfY29tbWVudHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgiIyBjb21tZW50Iiwg
bmFtZT1Ob25lLCBjb21tZW50PSIjIGNvbW1lbnQiKQorICAgICAgICBzZWxmLmFzc2VydF9leHAo
ImZvby5odG1sICMgY29tbWVudCIsIGNvbW1lbnQ9IiMgY29tbWVudCIsIGV4cGVjdGF0aW9ucz1b
J1BBU1MnXSwgbW9kaWZpZXJzPVsnU0tJUCddKQorCisgICAgZGVmIHRlc3RfY29uZmlnX21vZGlm
aWVycyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdbIE1hYyBdIGZvby5odG1sJywg
bW9kaWZpZXJzPVsnTUFDJywgJ1NLSVAnXSwgZXhwZWN0YXRpb25zPVsnUEFTUyddKQorICAgICAg
ICBzZWxmLmFzc2VydF9leHAoJ1sgTWFjIFZpc3RhIF0gZm9vLmh0bWwnLCBtb2RpZmllcnM9WydN
QUMnLCAnVklTVEEnLCAnU0tJUCddLCBleHBlY3RhdGlvbnM9WydQQVNTJ10pCisgICAgICAgIHNl
bGYuYXNzZXJ0X2V4cCgnWyBNYWMgXSBmb28uaHRtbCBbIEZhaWx1cmUgXSAnLCBtb2RpZmllcnM9
WydNQUMnXSwgZXhwZWN0YXRpb25zPVsnVEVYVCddKQorCisgICAgZGVmIHRlc3RfdW5rbm93bl9j
b25maWcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnWyBGb28gXSBmb28uaHRtbCAn
LCBtb2RpZmllcnM9WydGb28nLCAnU0tJUCddLCBleHBlY3RhdGlvbnM9WydQQVNTJ10pCisKKyAg
ICBkZWYgdGVzdF91bmtub3duX2V4cGVjdGF0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2Vy
dF9leHAoJ2Zvby5odG1sIFsgQXVkaW8gXScsIGV4cGVjdGF0aW9ucz1bJ0F1ZGlvJ10pCisKKyAg
ICBkZWYgdGVzdF9za2lwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2Zvby5odG1s
IFsgU2tpcCBdJywgbW9kaWZpZXJzPVsnU0tJUCddLCBleHBlY3RhdGlvbnM9WydQQVNTJ10pCisK
KyAgICBkZWYgdGVzdF9zbG93KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2Zvby5o
dG1sIFsgU2xvdyBdJywgbW9kaWZpZXJzPVsnU0xPVyddLCBleHBlY3RhdGlvbnM9WydQQVNTJ10p
CisKKyAgICBkZWYgdGVzdF93b250Zml4KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9leHAo
J2Zvby5odG1sIFsgV29udEZpeCBdJywgbW9kaWZpZXJzPVsnV09OVEZJWCcsICdTS0lQJ10sIGV4
cGVjdGF0aW9ucz1bJ1BBU1MnXSkKKworICAgIGRlZiB0ZXN0X2JsYW5rX2xpbmUoc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnJywgbmFtZT1Ob25lKQorCisgICAgZGVmIHRlc3Rfd2Fy
bmluZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnWyBNYWMgXScsIHdhcm5pbmdz
PVsnRGlkIG5vdCBmaW5kIGEgdGVzdCBuYW1lLiddLCBuYW1lPU5vbmUpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfZXhwKCdbIFsnLCB3YXJuaW5ncz1bJ3VuZXhwZWN0ZWQgIlsiJ10sIG5hbWU9Tm9u
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdjcmJ1Zy5jb20vMTIzNDUgXScsIHdhcm5pbmdz
PVsndW5leHBlY3RlZCAiXSInXSwgbmFtZT1Ob25lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4
cCgnZm9vLmh0bWwgY3JidWcuY29tLzEyMzQ1IF0nLCB3YXJuaW5ncz1bJyJjcmJ1Zy5jb20vMTIz
NDUiIGlzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUuJ10pCisKKwogY2xhc3MgU2VtYW50
aWNUZXN0cyhCYXNlKToKICAgICBkZWYgdGVzdF9idWdfZm9ybWF0KHNlbGYpOgogICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgJ0JVRzEyMzQgOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBGQUlMJywgaXNfbGludF9tb2RlPVRydWUpCg==
</data>
<flag name="review"
          id="176678"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>