<?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>47510</bug_id>
          
          <creation_ts>2010-10-11 15:51:24 -0700</creation_ts>
          <short_desc>new-run-webkit-tests: clean up port option-parsing code</short_desc>
          <delta_ts>2010-10-18 18:02:48 -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>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>47709</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>292726</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-11 15:51:24 -0700</bug_when>
    <thetext>new-run-webkit-tests: clean up port option-parsing code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292734</commentid>
    <comment_count>1</comment_count>
      <attachid>70488</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-11 16:02:33 -0700</bug_when>
    <thetext>Created attachment 70488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293406</commentid>
    <comment_count>2</comment_count>
      <attachid>70488</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-13 06:57:28 -0700</bug_when>
    <thetext>Comment on attachment 70488
Patch

I&apos;m not sure I understand this patch.  Doesn&apos;t this just make typos easier?  Since now get_option(&quot;fooTYPO&quot;) will return None where as options.fooTYPO would have thrown?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294551</commentid>
    <comment_count>3</comment_count>
      <attachid>70825</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-14 20:01:17 -0700</bug_when>
    <thetext>Created attachment 70825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294555</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-14 20:09:01 -0700</bug_when>
    <thetext>Okay, I&apos;ve considerably revised this patch, and we now use the MockOptions() object in mocktool instead of a new type of dummy object.

This patch can&apos;t land before 47709 lands, as it requires that functionality (versions of MockOptions prior to that patch have the wrong default semantics and API).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294557</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-14 20:13:24 -0700</bug_when>
    <thetext>Regarding the &quot;making typos easier&quot; comment, the answer is yes and no.

Normally, optparse defines attributes for every argument that is passed in to make_option(), so if you called make_option(&apos;--foo&apos;), options.foo will be defined; if you didn&apos;t, then accessing options.foo will raise an error.

So, in that sense, options.foo is slightly safer than get_option(&apos;foo&apos;).

*However*, the port classes are currently written to not assume any particular set of options were passed to make_option(), so they need to be able to deal with the attribute not being defined. This was not being done everywhere, and this patch at least makes everything consistent.

This is still probably the wrong behavior. Ideally we should be able to pull the list of options needed from the ports and merge them together, and then pass that to optparse (or a mock object). I didn&apos;t want to do that in this CL in order to keep too many things from changing at once, but I will make the change in a subsequent CL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294919</commentid>
    <comment_count>6</comment_count>
      <attachid>70825</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-15 14:21:06 -0700</bug_when>
    <thetext>Comment on attachment 70825
Patch

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

Overall I really like what you&apos;re doing here.  I just have a couple concerns (listed below) and worry a bit about deploying get_option too widely (since it has the side effect of making typos easier).

&gt; WebKitTools/ChangeLog:26
&gt; +        Arguably this is the wrong semantics to have, and the Port
&gt; +        classes should be able to assume a default set of
&gt; +        attributes/arguments, but that change will need to wait for a
&gt; +        different CL where we can modify new-run-webkit-tests to pull a
&gt; +        list of arguments from the port factory routines.

Can you explain more what that would look like?  I&apos;m not sure I understand yet.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:76
&gt; +        if self._options is None:
&gt; +            self._options = mocktool.MockOptions()

Really?  This seems wrong to ever have a Mock implicit in the real code.  Seems the unit tests should have to explicitly pass a Mock, or?  Or if you want the MockOptions behavior here, maybe MockOptions should subclass from some other non-unittest class which this code would use here instead of MockOptions. Does that make sense?

As written this code could end up having unexpected behavior changes if someone changed MockOptions and expected only unit test behavior to change.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:455
&gt; +    def get_option(self, name, default_value=None):

If get_option is not the right long-term solution (as you seem to imply in your ChangeLog) seems we need a FIXME: here to explain why this (and all callers) should be replace with someething else and what that something else looks like.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:457
&gt; +            return self._options.__dict__[name]

I don&apos;t think this is the right call.  __dict__ seems like the wrong interface.  Maybe getattr(name)?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:461
&gt; +        self._options.__dict__.setdefault(name, default_value)

Seems strange we&apos;re grabbing at __dict__ here.  Are we sure this is the right method?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:527
&gt; +        if self.get_option(&apos;use_apache&apos;):

So why would these sites need to change?  I figured only sites which use an existing hasattr() check would want to move to get_option?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:30
&gt; +from webkitpy.tool import mocktool

Eventually we probably want to split mocktool out into a module of mocks and have the tool-specific stuff live under tool, and all the other mocks be shared somewhere.

I think (but am not 100% certain) the design with tool/ and layout_tests/ and style/  is to have all the code specific to those commands tucked under those directories, and slowly move more and more code to common.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:46
&gt; +        mock_options = mocktool.MockOptions(accelerated_compositing=None,

This is really slick, btw.  I love the use of kwargs here.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_unittest.py:108
&gt; +        port = ChromiumPortTest.TestLinuxPort(options=mock_options)

Remind me why the Port needs options in its constructor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295040</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-15 17:29:31 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 70825 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70825&amp;action=review
&gt; 
&gt; Overall I really like what you&apos;re doing here.  I just have a couple concerns (listed below) and worry a bit about deploying get_option too widely (since it has the side effect of making typos easier).
&gt; 
&gt; &gt; WebKitTools/ChangeLog:26
&gt; &gt; +        Arguably this is the wrong semantics to have, and the Port
&gt; &gt; +        classes should be able to assume a default set of
&gt; &gt; +        attributes/arguments, but that change will need to wait for a
&gt; &gt; +        different CL where we can modify new-run-webkit-tests to pull a
&gt; &gt; +        list of arguments from the port factory routines.
&gt; 
&gt; Can you explain more what that would look like?  I&apos;m not sure I understand yet.
&gt; 

Basically the idea is that the port/* package would have a way to fetch all of the supported arguments, much like the tool/step commands do. They&apos;d get merged together, and then instead of a MockOptions object there would some variant of a real optparse options argument that had all and only the arguments defined that should be defined.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:76
&gt; &gt; +        if self._options is None:
&gt; &gt; +            self._options = mocktool.MockOptions()
&gt; 
&gt; Really?  This seems wrong to ever have a Mock implicit in the real code.  Seems the unit tests should have to explicitly pass a Mock, or?  Or if you want the MockOptions behavior here, maybe MockOptions should subclass from some other non-unittest class which this code would use here instead of MockOptions. Does that make sense?
&gt; 
&gt; As written this code could end up having unexpected behavior changes if someone changed MockOptions and expected only unit test behavior to change.
&gt;

Yeah, it is a bit weird, which is why I originally had a PortOptions() class. Eventually I decided that since the only current application of this is for unittesting, I was okay with a Mock class.

On the other hand, MockOptions itself should have unittests that document the dependencies, so that the semantics don&apos;t change. I think my other patch might have these tests already, but if it doesn&apos;t, I&apos;ll add them.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:455
&gt; &gt; +    def get_option(self, name, default_value=None):
&gt; 
&gt; If get_option is not the right long-term solution (as you seem to imply in your ChangeLog) seems we need a FIXME: here to explain why this (and all callers) should be replace with someething else and what that something else looks like.
&gt;

Will add a FIXME
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:457
&gt; &gt; +            return self._options.__dict__[name]
&gt; 
&gt; I don&apos;t think this is the right call.  __dict__ seems like the wrong interface.  Maybe getattr(name)?
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:461
&gt; &gt; +        self._options.__dict__.setdefault(name, default_value)
&gt; 
&gt; Seems strange we&apos;re grabbing at __dict__ here.  Are we sure this is the right method?
&gt;

Good question. No, I&quot;m not sure, and I will double-check.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:527
&gt; &gt; +        if self.get_option(&apos;use_apache&apos;):
&gt; 
&gt; So why would these sites need to change?  I figured only sites which use an existing hasattr() check would want to move to get_option?
&gt;

The sites that don&apos;t have an existing hasattr() check are broken. This change makes everything consistent.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:30
&gt; &gt; +from webkitpy.tool import mocktool
&gt; 
&gt; Eventually we probably want to split mocktool out into a module of mocks and have the tool-specific stuff live under tool, and all the other mocks be shared somewhere.
&gt;
&gt; I think (but am not 100% certain) the design with tool/ and layout_tests/ and style/  is to have all the code specific to those commands tucked under those directories, and slowly move more and more code to common.
&gt; 

Sounds good.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:46
&gt; &gt; +        mock_options = mocktool.MockOptions(accelerated_compositing=None,
&gt; 
&gt; This is really slick, btw.  I love the use of kwargs here.
&gt;

Thanks :)
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_unittest.py:108
&gt; &gt; +        port = ChromiumPortTest.TestLinuxPort(options=mock_options)
&gt; 
&gt; Remind me why the Port needs options in its constructor?

I&apos;m not sure I understand what (or why) you&apos;re asking this, so I&apos;ll give the basic answer - the port implementations need to be know what options were passed on the command line, because they change their behavior based on it. Where else would they get the options from? A set_options() call? (that&apos;s certainly possible)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295077</commentid>
    <comment_count>8</comment_count>
      <attachid>70936</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-15 18:08:56 -0700</bug_when>
    <thetext>Created attachment 70936
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295092</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-15 18:52:40 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:457
&gt; &gt; &gt; +            return self._options.__dict__[name]
&gt; &gt; 
&gt; &gt; I don&apos;t think this is the right call.  __dict__ seems like the wrong interface.  Maybe getattr(name)?
&gt; &gt; 
&gt; &gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:461
&gt; &gt; &gt; +        self._options.__dict__.setdefault(name, default_value)
&gt; &gt; 
&gt; &gt; Seems strange we&apos;re grabbing at __dict__ here.  Are we sure this is the right method?
&gt; &gt;
&gt; 
&gt; Good question. No, I&quot;m not sure, and I will double-check.
&gt; 

So, normally, one would use __setattr__ and __getattribute__ instead of accessing __dict__ directly. Unfortunately, optparse.Values doesn&apos;t inherit from object (at least not in 2.6), and so those methods aren&apos;t defined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295093</commentid>
    <comment_count>10</comment_count>
      <attachid>70943</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-15 18:52:56 -0700</bug_when>
    <thetext>Created attachment 70943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295095</commentid>
    <comment_count>11</comment_count>
      <attachid>70944</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-15 19:03:48 -0700</bug_when>
    <thetext>Created attachment 70944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295096</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-15 19:04:12 -0700</bug_when>
    <thetext>added unittests for mocktool.MockOptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295832</commentid>
    <comment_count>13</comment_count>
      <attachid>70944</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-18 16:32:44 -0700</bug_when>
    <thetext>Comment on attachment 70944
Patch

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

In general looks good.  r- for the mock inclusion and the __dict__ access.  I&apos;d like to know about if all the get_option deploys are necessary or if the goal was consistency, or which. :)

Thanks!

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:50
&gt; +from webkitpy.tool import mocktool

I would rather just copy MockOptions into this file (under a new name) than introduce this dependency.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:464
&gt; +            return self._options.__dict__[name]

Don&apos;t you mean http://docs.python.org/library/functions.html#getattr ?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:468
&gt; +        self._options.__dict__.setdefault(name, default_value)

This is the same as doing if not hasattr(): setattr().  I don&apos;t think we want to grab at __dict__.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:534
&gt; -        if self._options.use_apache:
&gt; +        if self.get_option(&apos;use_apache&apos;):

If get_option is &quot;deprecated&quot; as soon as we add the Port option stuff you mentioned above, then why change these?  Do we hit them in a unit test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295838</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 16:47:12 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 70944 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70944&amp;action=review
&gt; 
&gt; In general looks good.  r- for the mock inclusion and the __dict__ access.  I&apos;d like to know about if all the get_option deploys are necessary or if the goal was consistency, or which. :)
&gt; 

I answered the get_option() question in comment #7 - it&apos;s for consistency and to fix bugs where we wouldn&apos;t otherwise do the right thing.

&gt; Thanks!
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:50
&gt; &gt; +from webkitpy.tool import mocktool
&gt; 
&gt; I would rather just copy MockOptions into this file (under a new name) than introduce this dependency.
&gt; 

I&apos;m not sure I understand why you think this. I think it makes the intent clearer (we&apos;re providing a mock implementation of a class since we didn&apos;t get a real argument), and it reduces code duplication and the chance of bugs. I could add  a comment to this effect. Why do you think duplicating the code is better?

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:464
&gt; &gt; +            return self._options.__dict__[name]
&gt; 
&gt; Don&apos;t you mean http://docs.python.org/library/functions.html#getattr ?
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:468
&gt; &gt; +        self._options.__dict__.setdefault(name, default_value)
&gt; 
&gt; This is the same as doing if not hasattr(): setattr().  I don&apos;t think we want to grab at __dict__.
&gt; 

Ah. I had tried _options.__getattr__ , which didn&apos;t work. I didn&apos;t know about the standalone functions.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:534
&gt; &gt; -        if self._options.use_apache:
&gt; &gt; +        if self.get_option(&apos;use_apache&apos;):
&gt; 
&gt; If get_option is &quot;deprecated&quot; as soon as we add the Port option stuff you mentioned above, then why change these?  Do we hit them in a unit test?

As answered above, for consistency and to fix what would otherwise be bugs in the current code. I don&apos;t want code accessing option values in two different ways without being clear which behavior is intended. The code as written will raise a confusing exception, rather than erroring out cleanly, and it&apos;s unlikely that that&apos;s the intended behavior (at least, I don&apos;t want that behavior).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295847</commentid>
    <comment_count>15</comment_count>
      <attachid>71103</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 17:04:50 -0700</bug_when>
    <thetext>Created attachment 71103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295863</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 17:39:22 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=71103) [details]
&gt; Patch

Note that this does include the cloned MockOptions (renamed, with a comment).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295867</commentid>
    <comment_count>17</comment_count>
      <attachid>71103</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-18 17:44:34 -0700</bug_when>
    <thetext>Comment on attachment 71103
Patch

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

Works for me.  Thanks for the patch.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:61
&gt; +    &quot;&quot;&quot;Fake implementation of optparse.Values. Cloned from
&gt; +    webkitpy.tool.mocktool.MockOptions.
&gt; +

It makes me feel warmer and fuzzier inside to know that the main stuff is not depending on the unit tests or mocks. :)  Thank you.

We could make MockOptions inherit from DummyOptions if you liked.  But I think this is also just fine as-is.

To restate my previous concerns with new-words:
- My trouble with the previous design was that non-unittest code was using a class with &quot;Mock&quot; in its name (which we haven&apos;t done before).
- It was also bad that non-unittest code was importing from a module named mock, which could end up getting changed, or causing other mock-classes to bleed into the real code.

It would have also been possible to rename MockOptions to some other name, rip it out of the mocks, and use it from both places.

I hope that my added words have made my &quot;design inclinations&quot; clearer for the future. :)

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:91
&gt; +            # FIXME: ideally we&apos;d have a package-wide way to get a

Ideally

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:474
&gt; +        # FIXME: eventually we should not have to do a test for

Eventually</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295870</commentid>
    <comment_count>18</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 17:50:07 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 71103 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=71103&amp;action=review
&gt; 
&gt; Works for me.  Thanks for the patch.
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:61
&gt; &gt; +    &quot;&quot;&quot;Fake implementation of optparse.Values. Cloned from
&gt; &gt; +    webkitpy.tool.mocktool.MockOptions.
&gt; &gt; +
&gt; 
&gt; It makes me feel warmer and fuzzier inside to know that the main stuff is not depending on the unit tests or mocks. :)  Thank you.
&gt; 
&gt; We could make MockOptions inherit from DummyOptions if you liked.  But I think this is also just fine as-is.
&gt; 
&gt; To restate my previous concerns with new-words:
&gt; - My trouble with the previous design was that non-unittest code was using a class with &quot;Mock&quot; in its name (which we haven&apos;t done before).
&gt; - It was also bad that non-unittest code was importing from a module named mock, which could end up getting changed, or causing other mock-classes to bleed into the real code.
&gt; 
&gt; It would have also been possible to rename MockOptions to some other name, rip it out of the mocks, and use it from both places.
&gt; 

Yes, I understand your concerns about having real code depend on mock code, but I&apos;m not sure that I think the options are better. I think we would both agree that having a way to get a real options argument would be better yet, so hopefully I&apos;ll have a patch for that soon.

Thanks for the feedback and the review!

-- Dirk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295874</commentid>
    <comment_count>19</comment_count>
      <attachid>71108</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 17:59:29 -0700</bug_when>
    <thetext>Created attachment 71108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295877</commentid>
    <comment_count>20</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 18:00:18 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Created an attachment (id=71108) [details]
&gt; Patch

This patch is just a merge to current tip-of-tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295878</commentid>
    <comment_count>21</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 18:02:48 -0700</bug_when>
    <thetext>Committed r70013: &lt;http://trac.webkit.org/changeset/70013&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70488</attachid>
            <date>2010-10-11 16:02:33 -0700</date>
            <delta_ts>2010-10-14 20:01:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47510-20101011160231.patch</filename>
            <type>text/plain</type>
            <size>41387</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0MmE1YjUxM2RlZDM2Mjc4YmI4ZGY5ZTM4ZDU2YTcxNDk0NTkwMmI2Li4xZGY1MDVi
NTk1ZmU1YWI0YTk4MDZlYTdmMjQ4MDU1NTc5Njc1MGZjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTAtMTAtMTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGNsZWFuIHVwIHRoZSBvcHRpb25zLXBhcnNpbmcgY29kZSBpbiB0aGUgcG9ydAorICAg
ICAgICBjbGFzc2VzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBh
IFBvcnRPcHRpb25zIGNsYXNzIHRoYXQgaW1wbGVtZW50cyB0aGUgc2FtZQorICAgICAgICBpbnRl
cmZhY2UgdGhhdCB0aGUgb3B0cGFyc2UuVmFsdWVzIGNsYXNzIGltcGxlbWVudHM7IHRoaXMgYWxs
b3dzCisgICAgICAgIHRoZSBjb2RlIGFuZCB1bml0IHRlc3RzIHRvIGFzc3VtZSB0aGF0IGFuIG9i
amVjdCB0aGF0IGxvb2tzIGxpa2UKKyAgICAgICAgdGhlIG9wdHBhcnNlIG9iamVjdCBoYXMgYWx3
YXlzIGJlZW4gcGFzc2VkIHRvIHRoZSBQb3J0LCBidXQgZG9lcworICAgICAgICBub3QgYWN0dWFs
bHkgcmVxdWlyZSBvcHRwYXJzZS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIGFkZHMgdGhl
IGdldF9vcHRpb24oKSBhbmQgc2V0X29wdGlvbl9kZWZhdWx0KCkKKyAgICAgICAgbWV0aG9kcyB0
byB0aGUgUG9ydCBpbnRlcmZhY2UgYW5kIGJhc2UgY2xhc3MuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NTEwCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGlu
dXgucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV9tYWMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9vcHRpb25zLnB5OiBBZGRlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L29wdGlvbnNfdW5pdHRl
c3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvcG9ydF90ZXN0Y2FzZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisKIDIwMTAt
MTAtMTEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9fX2luaXRfXy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvX19pbml0X18ucHkKaW5kZXggZTNhZDZmNDRjMWQyZjI4MGRjOTcxNTU4YWJj
MWZjZDY0MmE0N2MzNi4uODRlYjUzZWVlMDU1MzdhYzJiOThjNDY1M2QyMjE2MDZiNWQ5OTVmNCAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9fX2luaXRfXy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L19faW5pdF9fLnB5CkBAIC0zMCwzICszMCw0IEBACiAiIiJQb3J0LXNwZWNpZmlj
IGVudHJ5cG9pbnRzIGZvciB0aGUgbGF5b3V0IHRlc3RzIHRlc3QgaW5mcmFzdHJ1Y3R1cmUuIiIi
CiAKIGZyb20gZmFjdG9yeSBpbXBvcnQgZ2V0Citmcm9tIG9wdGlvbnMgaW1wb3J0IFBvcnRPcHRp
b25zCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2UucHkKaW5kZXggNTZjYTBjYWM5N2UyNjU3ZjcxZDk1MGM2YjFjYjk5YzVjYTNk
MmZhYS4uYjFlMTExM2JkN2RiZTJjNmU4ZmYwNzliMWEyODliNTI1NDZhYjZhZSAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFz
ZS5weQpAQCAtNDQsNiArNDQsNyBAQCBpbXBvcnQgdGltZQogaW1wb3J0IGFwYWNoZV9odHRwX3Nl
cnZlcgogaW1wb3J0IHRlc3RfZmlsZXMKIGltcG9ydCBodHRwX3NlcnZlcgoraW1wb3J0IG9wdGlv
bnMKIGltcG9ydCB3ZWJzb2NrZXRfc2VydmVyCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bSBpbXBvcnQgbG9ndXRpbHMKQEAgLTg1LDEzICs4NiwxOCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6
CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLl9uYW1l
ID0ga3dhcmdzLmdldCgncG9ydF9uYW1lJywgTm9uZSkKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9
IGt3YXJncy5nZXQoJ29wdGlvbnMnLCBOb25lKQorICAgICAgICBzZWxmLl9vcHRpb25zID0ga3dh
cmdzLmdldCgnb3B0aW9ucycpCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMgaXMgTm9uZToKKyAg
ICAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zLlBvcnRPcHRpb25zKCkKICAgICAgICAg
c2VsZi5fZXhlY3V0aXZlID0ga3dhcmdzLmdldCgnZXhlY3V0aXZlJywgRXhlY3V0aXZlKCkpCiAg
ICAgICAgIHNlbGYuX3VzZXIgPSBrd2FyZ3MuZ2V0KCd1c2VyJywgVXNlcigpKQogICAgICAgICBz
ZWxmLl9oZWxwZXIgPSBOb25lCiAgICAgICAgIHNlbGYuX2h0dHBfc2VydmVyID0gTm9uZQogICAg
ICAgICBzZWxmLl93ZWJraXRfYmFzZV9kaXIgPSBOb25lCiAgICAgICAgIHNlbGYuX3dlYnNvY2tl
dF9zZXJ2ZXIgPSBOb25lCisgICAgICAgIHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0KCdjb25maWd1
cmF0aW9uJywgTm9uZSkKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uIGlz
IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24gPSBzZWxmLmRl
ZmF1bHRfY29uZmlndXJhdGlvbigpCiAKICAgICBkZWYgZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMo
c2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIER1bXBSZW5kZXJUcmVlIGlu
c3RhbmNlcyB0byB1c2UgZm9yIHRoaXMKQEAgLTQyMCw2ICs0MjYsMTQgQEAgY2xhc3MgUG9ydChv
YmplY3QpOgogICAgICAgICBtYXkgYmUgZGlmZmVyZW50IChlLmcuLCAnd2luLXhwJyBpbnN0ZWFk
IG9mICdjaHJvbWl1bS13aW4teHAnLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQogCisg
ICAgZGVmIGdldF9vcHRpb24oc2VsZiwgbmFtZSwgZGVmYXVsdF92YWx1ZT1Ob25lKToKKyAgICAg
ICAgaWYgaGFzYXR0cihzZWxmLl9vcHRpb25zLCBuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBz
ZWxmLl9vcHRpb25zLl9fZGljdF9fW25hbWVdCisgICAgICAgIHJldHVybiBkZWZhdWx0X3ZhbHVl
CisKKyAgICBkZWYgc2V0X29wdGlvbl9kZWZhdWx0KHNlbGYsIG5hbWUsIGRlZmF1bHRfdmFsdWUp
OgorICAgICAgICBzZWxmLl9vcHRpb25zLl9fZGljdF9fLnNldGRlZmF1bHQobmFtZSwgZGVmYXVs
dF92YWx1ZSkKKwogICAgICMgRklYTUU6IFRoaXMgY291bGQgYmUgcmVwbGFjZWQgYnkgZnVuY3Rp
b25zIGluIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uCiAgICAgZGVmIHBhdGhfZnJvbV93
ZWJraXRfYmFzZShzZWxmLCAqY29tcHMpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBmdWxsIHBh
dGggdG8gcGF0aCBtYWRlIGJ5IGpvaW5pbmcgdGhlIHRvcCBvZiB0aGUKQEAgLTQ4NCwxMiArNDk4
LDEyIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgIiIiU3RhcnQgYSB3ZWIgc2VydmVy
IGlmIGl0IGlzIGF2YWlsYWJsZS4gRG8gbm90aGluZyBpZgogICAgICAgICBpdCBpc24ndC4gVGhp
cyByb3V0aW5lIGlzIGFsbG93ZWQgdG8gKGFuZCBtYXkpIGZhaWwgaWYgYSBzZXJ2ZXIKICAgICAg
ICAgaXMgYWxyZWFkeSBydW5uaW5nLiIiIgotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9h
cGFjaGU6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2FwYWNoZScpOgogICAgICAg
ICAgICAgc2VsZi5faHR0cF9zZXJ2ZXIgPSBhcGFjaGVfaHR0cF9zZXJ2ZXIuTGF5b3V0VGVzdEFw
YWNoZUh0dHBkKHNlbGYsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2Rp
cmVjdG9yeSkKKyAgICAgICAgICAgICAgICBzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0
b3J5JykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlciA9IGh0
dHBfc2VydmVyLkxpZ2h0dHBkKHNlbGYsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5y
ZXN1bHRzX2RpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICBzZWxmLmdldF9vcHRpb24oJ3Jlc3Vs
dHNfZGlyZWN0b3J5JykpCiAgICAgICAgIHNlbGYuX2h0dHBfc2VydmVyLnN0YXJ0KCkKIAogICAg
IGRlZiBzdGFydF93ZWJzb2NrZXRfc2VydmVyKHNlbGYpOgpAQCAtNDk3LDcgKzUxMSw3IEBAIGNs
YXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgaXQgaXNuJ3QuIFRoaXMgcm91dGluZSBpcyBhbGxv
d2VkIHRvIChhbmQgbWF5KSBmYWlsIGlmIGEgc2VydmVyCiAgICAgICAgIGlzIGFscmVhZHkgcnVu
bmluZy4iIiIKICAgICAgICAgc2VsZi5fd2Vic29ja2V0X3NlcnZlciA9IHdlYnNvY2tldF9zZXJ2
ZXIuUHlXZWJTb2NrZXQoc2VsZiwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMucmVzdWx0c19k
aXJlY3RvcnkpCisgICAgICAgICAgICBzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5
JykpCiAgICAgICAgIHNlbGYuX3dlYnNvY2tldF9zZXJ2ZXIuc3RhcnQoKQogCiAgICAgZGVmIHN0
b3BfaGVscGVyKHNlbGYpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggMzAxZDRiMTg5YjA5Yzgz
ZDI3MDZlMzYwYTczZTg4MjNmYzFiMDgwOC4uMDg3YmI0ZjBlM2VlZGE0YjM2MzgxMTRhOGRjODg1
NzQ3ZDVhZDRjOCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC04NCwxMSArODQsNiBAQCBjbGFz
cyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3
YXJncyk6CiAgICAgICAgIGJhc2UuUG9ydC5fX2luaXRfXyhzZWxmLCAqKmt3YXJncykKLSAgICAg
ICAgaWYgJ29wdGlvbnMnIGluIGt3YXJnczoKLSAgICAgICAgICAgIG9wdGlvbnMgPSBrd2FyZ3Nb
J29wdGlvbnMnXQotICAgICAgICAgICAgaWYgKG9wdGlvbnMgYW5kIChub3QgaGFzYXR0cihvcHRp
b25zLCAnY29uZmlndXJhdGlvbicpIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbnMuY29uZmlndXJhdGlvbiBpcyBOb25lKSk6Ci0gICAgICAgICAgICAgICAgb3B0aW9ucy5j
b25maWd1cmF0aW9uID0gc2VsZi5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKQogICAgICAgICBzZWxm
Ll9jaHJvbWl1bV9iYXNlX2RpciA9IE5vbmUKIAogICAgIGRlZiBiYXNlbGluZV9wYXRoKHNlbGYp
OgpAQCAtMTAwLDkgKzk1LDkgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAg
ICAgIGR1bXBfcmVuZGVyX3RyZWVfYmluYXJ5X3BhdGggPSBzZWxmLl9wYXRoX3RvX2RyaXZlcigp
CiAgICAgICAgIHJlc3VsdCA9IGNoZWNrX2ZpbGVfZXhpc3RzKGR1bXBfcmVuZGVyX3RyZWVfYmlu
YXJ5X3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBkcml2
ZXInKSBhbmQgcmVzdWx0Ci0gICAgICAgIGlmIHJlc3VsdCBhbmQgc2VsZi5fb3B0aW9ucy5idWls
ZDoKKyAgICAgICAgaWYgcmVzdWx0IGFuZCBzZWxmLmdldF9vcHRpb24oJ2J1aWxkJyk6CiAgICAg
ICAgICAgICByZXN1bHQgPSBzZWxmLl9jaGVja19kcml2ZXJfYnVpbGRfdXBfdG9fZGF0ZSgKLSAg
ICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24pCisgICAgICAgICAgICAg
ICAgc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykpCiAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICBfbG9nLmVycm9yKCcnKQogCkBAIC0xMTEsNyArMTA2LDcgQEAgY2xhc3MgQ2hyb21p
dW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICByZXN1bHQgPSBjaGVja19maWxlX2V4aXN0
cyhoZWxwZXJfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICds
YXlvdXQgdGVzdCBoZWxwZXInKSBhbmQgcmVzdWx0CiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy5waXhlbF90ZXN0czoKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCdwaXhlbF90ZXN0cycp
OgogICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5jaGVja19pbWFnZV9kaWZmKAogICAgICAgICAg
ICAgICAgICdUbyBvdmVycmlkZSwgaW52b2tlIHdpdGggLS1uby1waXhlbC10ZXN0cycpIGFuZCBy
ZXN1bHQKIApAQCAtMTk3LDEwICsxOTIsMTEgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9y
dCk6CiAgICAgZGVmIHJlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICB0cnk6CiAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0JywKLSAg
ICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24sIHNlbGYuX29wdGlvbnMu
cmVzdWx0c19kaXJlY3RvcnkpCisgICAgICAgICAgICAgICAgc2VsZi5nZXRfb3B0aW9uKCdjb25m
aWd1cmF0aW9uJyksCisgICAgICAgICAgICAgICAgc2VsZi5nZXRfb3B0aW9uKCdyZXN1bHRzX2Rp
cmVjdG9yeScpKQogICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6Ci0gICAgICAgICAgICBy
ZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGly
ZWN0b3J5KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0
aW9uKCdjb25maWd1cmF0aW9uJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5JykpCiAKICAgICBkZWYgc2V0dXBf
dGVzdF9ydW4oc2VsZik6CiAgICAgICAgICMgRGVsZXRlIHRoZSBkaXNrIGNhY2hlIGlmIGFueSB0
byBlbnN1cmUgYSBjbGVhbiB0ZXN0IHJ1bi4KQEAgLTI1NCw3ICsyNTAsNyBAQCBjbGFzcyBDaHJv
bWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgIyBGSVhNRTogVGhpcyBkcnRfb3ZlcnJpZGVz
IGhhbmRsaW5nIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gd2Ugc3dpdGNoCiAgICAgICAgICMgZnJv
bSB0ZXNfc2hlbGwgdG8gRFJULgogICAgICAgICBkcnRfb3ZlcnJpZGVzID0gJycKLSAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucyBhbmQgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBz
ZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGRydF9vdmVycmlkZXNfcGF0
aCA9IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0cycsCiAgICAgICAgICAg
ICAgICAgJ3BsYXRmb3JtJywgJ2Nocm9taXVtJywgJ2RydF9leHBlY3RhdGlvbnMudHh0JykKICAg
ICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRydF9vdmVycmlkZXNfcGF0aCk6CkBAIC0zNDIs
OSArMzM4LDkgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAKICAgICBkZWYgX3Bh
dGhfdG9faW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUgPSAnaW1hZ2VfZGlm
ZicKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBzZWxmLmdl
dF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGJpbmFyeV9uYW1lID0gJ0ltYWdlRGlm
ZicKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5fb3B0aW9ucy5jb25maWd1
cmF0aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2Vs
Zi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIGJpbmFyeV9uYW1lKQogCiAKIGNsYXNzIENo
cm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKQEAgLTM2MSwyNyArMzU3LDI3IEBAIGNsYXNzIENo
cm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgaWYgc2VsZi5faW1hZ2VfcGF0aDoK
ICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgiLS1waXhlbC10ZXN0cz0iICsgc2VsZi5f
aW1hZ2VfcGF0aCkKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAg
IGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgZHJpdmVy
X2FyZ3MuYXBwZW5kKCctLXRlc3Qtc2hlbGwnKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAg
ZHJpdmVyX2FyZ3MuYXBwZW5kKCctLWxheW91dC10ZXN0cycpCiAKLSAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5zdGFydHVwX2RpYWxvZzoKKyAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9u
KCdzdGFydHVwX2RpYWxvZycpOgogICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLXRl
c3RzaGVsbC1zdGFydHVwLWRpYWxvZycpCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5ncF9m
YXVsdF9lcnJvcl9ib3g6CisgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbignZ3BfZmF1
bHRfZXJyb3JfYm94Jyk6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tZ3AtZmF1
bHQtZXJyb3ItYm94JykKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmFjY2VsZXJhdGVkX2Nv
bXBvc2l0aW5nOgorICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ2FjY2VsZXJhdGVk
X2NvbXBvc2l0aW5nJyk6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tZW5hYmxl
LWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nJykKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmFj
Y2VsZXJhdGVkXzJkX2NhbnZhczoKKyAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdh
Y2NlbGVyYXRlZF8yZF9jYW52YXMnKToKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgn
LS1lbmFibGUtYWNjZWxlcmF0ZWQtMmQtY2FudmFzJykKICAgICAgICAgcmV0dXJuIGRyaXZlcl9h
cmdzCiAKICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgICMgRklYTUU6IFNob3VsZCBiZSBh
biBlcnJvciB0byBjYWxsIHRoaXMgbWV0aG9kIHR3aWNlLgotICAgICAgICBjbWQgPSBzZWxmLl9j
b21tYW5kX3dyYXBwZXIoc2VsZi5fb3B0aW9ucy53cmFwcGVyKQorICAgICAgICBjbWQgPSBzZWxm
Ll9jb21tYW5kX3dyYXBwZXIoc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCd3cmFwcGVyJykpCiAgICAg
ICAgIGNtZC5hcHBlbmQoc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKSkKICAgICAgICAgY21k
ICs9IHNlbGYuX2RyaXZlcl9hcmdzKCkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dw
dV91bml0dGVzdC5weQppbmRleCAxZGQzZWFlZDhjYTQyMDlkNjcyMDA4MTQzNzQxMGU1NzJmNjZm
Njk2Li5jY2FmMjA0MDJjYjg5MTQ5OTViYWZlMjA2MjE1YTkxYmYwYmZlOGUxIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2dwdV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91bml0dGVzdC5weQpAQCAtMjYsMTMgKzI2LDkgQEAK
IAogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBjaHJvbWl1bV9ncHUKLQogCi1j
bGFzcyBNb2NrT3B0aW9ucyhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAg
ICAgc2VsZi5hY2NlbGVyYXRlZF9jb21wb3NpdGluZyA9IE5vbmUKLSAgICAgICAgc2VsZi5hY2Nl
bGVyYXRlZF8yZF9jYW52YXMgPSBOb25lCitpbXBvcnQgb3B0aW9ucworaW1wb3J0IGNocm9taXVt
X2dwdQogCiAKIGNsYXNzIENocm9taXVtR3B1VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00
Nyw3ICs0Myw5IEBAIGNsYXNzIENocm9taXVtR3B1VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAK
ICAgICBkZWYgYXNzZXJ0T3ZlcnJpZGVzV29ya2VkKHNlbGYsIHBvcnRfbmFtZSk6CiAgICAgICAg
ICMgdGVzdCB0aGF0IHdlIGdvdCB0aGUgcmlnaHQgcG9ydAotICAgICAgICBwb3J0ID0gY2hyb21p
dW1fZ3B1LmdldChwb3J0X25hbWU9cG9ydF9uYW1lLCBvcHRpb25zPU1vY2tPcHRpb25zKCkpCisg
ICAgICAgIG1vY2tfb3B0aW9ucyA9IG9wdGlvbnMuUG9ydE9wdGlvbnMoYWNjZWxlcmF0ZWRfY29t
cG9zaXRpbmc9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhY2NlbGVyYXRlZF8yZF9jYW52YXM9Tm9uZSkKKyAgICAgICAgcG9ydCA9IGNocm9taXVtX2dw
dS5nZXQocG9ydF9uYW1lPXBvcnRfbmFtZSwgb3B0aW9ucz1tb2NrX29wdGlvbnMpCiAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Ll9vcHRpb25zLmFjY2VsZXJhdGVkX2NvbXBvc2l0aW5nKQog
ICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5fb3B0aW9ucy5hY2NlbGVyYXRlZF8yZF9jYW52
YXMpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5CmluZGV4IDE3Njk5MWI3ZjZhNjhk
Zjc3OWY3MWQ1MTEwNDQxMzI4NjllMWUxODkuLmIyNmE2YjU3NDE1NzNmMmI3ZTQzNjkyYjhkMWIz
YTY5MWQ4ZGVkMDcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weQpAQCAtNTIsNyAr
NTIsNyBAQCBjbGFzcyBDaHJvbWl1bUxpbnV4UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgog
ICAgIGRlZiBjaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKToKICAgICAgICAgcmVzdWx0ID0g
Y2hyb21pdW0uQ2hyb21pdW1Qb3J0LmNoZWNrX2J1aWxkKHNlbGYsIG5lZWRzX2h0dHApCiAgICAg
ICAgIGlmIG5lZWRzX2h0dHA6Ci0gICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9hcGFj
aGU6CisgICAgICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9hcGFjaGUnKToKICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9jaGVja19hcGFjaGVfaW5zdGFsbCgpIGFuZCByZXN1
bHQKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fY2hl
Y2tfbGlnaHR0cGRfaW5zdGFsbCgpIGFuZCByZXN1bHQKQEAgLTgxLDcgKzgxLDcgQEAgY2xhc3Mg
Q2hyb21pdW1MaW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgYmFzZSA9
IHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoKQogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0
cyhvcy5wYXRoLmpvaW4oYmFzZSwgJ3Njb25zYnVpbGQnKSk6CiAgICAgICAgICAgICByZXR1cm4g
b3MucGF0aC5qb2luKGJhc2UsICdzY29uc2J1aWxkJywgKmNvbXBzKQotICAgICAgICBpZiBvcy5w
YXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oYmFzZSwgJ291dCcsICpjb21wcykpIG9yIG5vdCBzZWxm
Ll9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9p
bihiYXNlLCAnb3V0JywgKmNvbXBzKSkgb3Igbm90IHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcp
OgogICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihiYXNlLCAnb3V0JywgKmNvbXBzKQog
ICAgICAgICBiYXNlID0gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoKQogICAgICAgICBpZiBv
cy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oYmFzZSwgJ3Njb25zYnVpbGQnKSk6CkBAIC0xNDcs
OSArMTQ3LDkgQEAgY2xhc3MgQ2hyb21pdW1MaW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0
KToKIAogICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lKToK
ICAgICAgICAgaWYgbm90IGNvbmZpZ3VyYXRpb246Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9u
ID0gc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uCisgICAgICAgICAgICBjb25maWd1cmF0aW9u
ID0gc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykKICAgICAgICAgYmluYXJ5X25hbWUg
PSAndGVzdF9zaGVsbCcKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAg
ICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGJpbmFyeV9uYW1l
ID0gJ0R1bXBSZW5kZXJUcmVlJwogICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChjb25m
aWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weQppbmRl
eCA2NDAxNmFiMDQyY2FlOGE4ZTI3YmRjYWFiNDYxY2Y1Y2FlM2EyZjgxLi5kMWMzODNjMTNlYzJm
MTNhZjVmYjFmMTU0MDU3OWM0Yzg4OWZkZDYzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5w
eQpAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBDaHJvbWl1bU1hY1BvcnQoY2hyb21pdW0uQ2hyb21p
dW1Qb3J0KToKIAogICAgIGRlZiBkcml2ZXJfbmFtZShzZWxmKToKICAgICAgICAgIiIibmFtZSBm
b3IgdGhpcyBwb3J0J3MgZXF1aXZhbGVudCBvZiBEdW1wUmVuZGVyVHJlZS4iIiIKLSAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3Vz
ZV9kcnQnKToKICAgICAgICAgICAgIHJldHVybiAiRHVtcFJlbmRlclRyZWUiCiAgICAgICAgIHJl
dHVybiAiVGVzdFNoZWxsIgogCkBAIC0xMDAsNyArMTAwLDcgQEAgY2xhc3MgQ2hyb21pdW1NYWNQ
b3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAKICAgICBkZWYgX2J1aWxkX3BhdGgoc2VsZiwg
KmNvbXBzKToKICAgICAgICAgcGF0aCA9IHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3hj
b2RlYnVpbGQnLCAqY29tcHMpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpIG9yIG5v
dCBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgp
IG9yIG5vdCBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIHJldHVybiBw
YXRoCiAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnV2ViS2l0Jywg
J2Nocm9taXVtJywgJ3hjb2RlYnVpbGQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKmNvbXBzKQpAQCAtMTM4LDE1ICsxMzgsMTUgQEAgY2xhc3MgQ2hyb21pdW1N
YWNQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgICMgRklYTUU6IG1ha2UgfGNv
bmZpZ3VyYXRpb258IGhhcHB5IHdpdGggY2FzZS1zZW5zaXRpdmUgZmlsZQogICAgICAgICAjIHN5
c3RlbXMuCiAgICAgICAgIGlmIG5vdCBjb25maWd1cmF0aW9uOgotICAgICAgICAgICAgY29uZmln
dXJhdGlvbiA9IHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbgorICAgICAgICAgICAgY29uZmln
dXJhdGlvbiA9IHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpCiAgICAgICAgIHJldHVy
biBzZWxmLl9idWlsZF9wYXRoKGNvbmZpZ3VyYXRpb24sIHNlbGYuZHJpdmVyX25hbWUoKSArICcu
YXBwJywKICAgICAgICAgICAgICdDb250ZW50cycsICdNYWNPUycsIHNlbGYuZHJpdmVyX25hbWUo
KSkKIAogICAgIGRlZiBfcGF0aF90b19oZWxwZXIoc2VsZik6CiAgICAgICAgIGJpbmFyeV9uYW1l
ID0gJ2xheW91dF90ZXN0X2hlbHBlcicKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0
OgorICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGJp
bmFyeV9uYW1lID0gJ0xheW91dFRlc3RIZWxwZXInCi0gICAgICAgIHJldHVybiBzZWxmLl9idWls
ZF9wYXRoKHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiwgYmluYXJ5X25hbWUpCisgICAgICAg
IHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicp
LCBiaW5hcnlfbmFtZSkKIAogICAgIGRlZiBfcGF0aF90b193ZGlmZihzZWxmKToKICAgICAgICAg
cmV0dXJuICd3ZGlmZicKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CmluZGV4
IGUzODU4ZjBjNGZjNjcyYjM4OWJjOTE4OGY5YWQ2MDY4ZTExY2VlNjYuLmQwYmI0Mjc5YWE5NTRh
ODA4MjYzYWYwZjM5ODQ2NmVmOTMzZTM5ZjEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91
bml0dGVzdC5weQpAQCAtMjYsMjQgKzI2LDIyIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCi1pbXBvcnQgY2hyb21pdW0KLWltcG9ydCBjaHJvbWl1bV9saW51eAotaW1wb3J0IGNo
cm9taXVtX21hYwotaW1wb3J0IGNocm9taXVtX3dpbgoraW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRl
c3QKIGltcG9ydCBTdHJpbmdJTwotaW1wb3J0IG9zCiAKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0
eS5tb2NrIGltcG9ydCBNb2NrCiAKK2ltcG9ydCBjaHJvbWl1bQoraW1wb3J0IGNocm9taXVtX2xp
bnV4CitpbXBvcnQgY2hyb21pdW1fbWFjCitpbXBvcnQgY2hyb21pdW1fd2luCitpbXBvcnQgb3B0
aW9ucwogCiBjbGFzcyBDaHJvbWl1bURyaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAg
ICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBtb2NrX3BvcnQgPSBNb2NrKCkKLSAgICAgICAg
IyBGSVhNRTogVGhlIERyaXZlciBzaG91bGQgbm90IGJlIGdyYWJiaW5nIGF0IHBvcnQuX29wdGlv
bnMhCi0gICAgICAgIG1vY2tfcG9ydC5fb3B0aW9ucyA9IE1vY2soKQotICAgICAgICBtb2NrX3Bv
cnQuX29wdGlvbnMud3JhcHBlciA9ICIiCiAgICAgICAgIHNlbGYuZHJpdmVyID0gY2hyb21pdW0u
Q2hyb21pdW1Ecml2ZXIobW9ja19wb3J0LCBpbWFnZV9wYXRoPU5vbmUsIG9wdGlvbnM9Tm9uZSkK
IAogICAgIGRlZiB0ZXN0X3Rlc3Rfc2hlbGxfY29tbWFuZChzZWxmKToKQEAgLTEwNiwyNSArMTA0
LDE5IEBAIGNsYXNzIENocm9taXVtUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICAgICAgcmV0dXJuICdkZWZhdWx0JwogCiAgICAgZGVmIHRlc3RfcGF0aF90b19pbWFnZV9kaWZm
KHNlbGYpOgotICAgICAgICBjbGFzcyBNb2NrT3B0aW9uczoKLSAgICAgICAgICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKLSAgICAgICAgICAgICAgICBzZWxmLnVzZV9kcnQgPSBUcnVlCi0KLSAgICAg
ICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChvcHRpb25zPU1vY2tPcHRp
b25zKCkpCisgICAgICAgIG1vY2tfb3B0aW9ucyA9IG9wdGlvbnMuUG9ydE9wdGlvbnModXNlX2Ry
dD1UcnVlKQorICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0KG9w
dGlvbnM9bW9ja19vcHRpb25zKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5fcGF0aF90
b19pbWFnZV9kaWZmKCkuZW5kc3dpdGgoCiAgICAgICAgICAgICAnL291dC9kZWZhdWx0L0ltYWdl
RGlmZicpLCBtc2c9cG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKCkpCi0gICAgICAgIHBvcnQgPSBD
aHJvbWl1bVBvcnRUZXN0LlRlc3RNYWNQb3J0KG9wdGlvbnM9TW9ja09wdGlvbnMoKSkKKyAgICAg
ICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdE1hY1BvcnQob3B0aW9ucz1tb2NrX29wdGlv
bnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Ll9wYXRoX3RvX2ltYWdlX2RpZmYoKS5l
bmRzd2l0aCgKICAgICAgICAgICAgICcveGNvZGVidWlsZC9kZWZhdWx0L0ltYWdlRGlmZicpKQog
ICAgICAgICAjIEZJWE1FOiBGaWd1cmUgb3V0IGhvdyB0aGlzIGlzIGdvaW5nIHRvIHdvcmsgb24g
V2luZG93cy4KICAgICAgICAgI3BvcnQgPSBjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0KCd0
ZXN0LXBvcnQnLCBvcHRpb25zPU1vY2tPcHRpb25zKCkpCiAKICAgICBkZWYgdGVzdF9za2lwcGVk
X2xheW91dF90ZXN0cyhzZWxmKToKLSAgICAgICAgY2xhc3MgTW9ja09wdGlvbnM6Ci0gICAgICAg
ICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICAgICAgc2VsZi51c2VfZHJ0ID0g
VHJ1ZQotCi0gICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQob3B0
aW9ucz1Nb2NrT3B0aW9ucygpKQorICAgICAgICBtb2NrX29wdGlvbnMgPSBvcHRpb25zLlBvcnRP
cHRpb25zKHVzZV9kcnQ9VHJ1ZSkKKyAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVz
dExpbnV4UG9ydChvcHRpb25zPW1vY2tfb3B0aW9ucykKIAogICAgICAgICBmYWtlX3Rlc3QgPSBv
cy5wYXRoLmpvaW4ocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksICJmYXN0L2pzL25vdC1nb29kLmpz
IikKIApAQCAtMTM4LDIyICsxMzAsMTQgQEAgREVGRVIgTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5
LWdvb2QuanMgPSBUSU1FT1VUIFBBU1MiIiIKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJmYXN0
L2pzL25vdC1nb29kLmpzIiBpbiBza2lwcGVkX3Rlc3RzKQogCiAgICAgZGVmIHRlc3RfZGVmYXVs
dF9jb25maWd1cmF0aW9uKHNlbGYpOgotICAgICAgICBjbGFzcyBFbXB0eU9wdGlvbnM6Ci0gICAg
ICAgICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAg
ICAgIG9wdGlvbnMgPSBFbXB0eU9wdGlvbnMoKQotICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0
VGVzdC5UZXN0TGludXhQb3J0KG9wdGlvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9w
dGlvbnMuY29uZmlndXJhdGlvbiwgJ2RlZmF1bHQnKQorICAgICAgICBtb2NrX29wdGlvbnMgPSBv
cHRpb25zLlBvcnRPcHRpb25zKCkKKyAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVz
dExpbnV4UG9ydChvcHRpb25zPW1vY2tfb3B0aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMobW9ja19vcHRpb25zLmNvbmZpZ3VyYXRpb24sICdkZWZhdWx0JykKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHBvcnQuZGVmYXVsdF9jb25maWd1cmF0aW9uX2NhbGxlZCkKIAotICAgICAgICBj
bGFzcyBPcHRpb25zV2l0aFVuc2V0Q29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKLSAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24gPSBOb25lCi0K
LSAgICAgICAgb3B0aW9ucyA9IE9wdGlvbnNXaXRoVW5zZXRDb25maWd1cmF0aW9uKCkKLSAgICAg
ICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChvcHRpb25zKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmNvbmZpZ3VyYXRpb24sICdkZWZhdWx0JykKKyAg
ICAgICAgbW9ja19vcHRpb25zID0gb3B0aW9ucy5Qb3J0T3B0aW9ucyhjb25maWd1cmF0aW9uPU5v
bmUpCisgICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQobW9ja19v
cHRpb25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtb2NrX29wdGlvbnMuY29uZmlndXJh
dGlvbiwgJ2RlZmF1bHQnKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5kZWZhdWx0X2Nv
bmZpZ3VyYXRpb25fY2FsbGVkKQogCiAgICAgZGVmIHRlc3RfZGlmZl9pbWFnZShzZWxmKToKQEAg
LTE2MSw5ICsxNDUsNiBAQCBERUZFUiBMSU5VWCBXSU4gOiBmYXN0L2pzL3ZlcnktZ29vZC5qcyA9
IFRJTUVPVVQgUEFTUyIiIgogICAgICAgICAgICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2Vs
Zik6CiAgICAgICAgICAgICAgICAgcmV0dXJuICIvcGF0aC90by9pbWFnZV9kaWZmIgogCi0gICAg
ICAgIGNsYXNzIEVtcHR5T3B0aW9uczoKLSAgICAgICAgICAgIHVzZV9kcnQgPSBGYWxzZQotCiAg
ICAgICAgIGNsYXNzIE1vY2tFeGVjdXRlOgogICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHJlc3VsdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fcmVzdWx0ID0gcmVzdWx0CkBAIC0xNzgs
OCArMTU5LDggQEAgREVGRVIgTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5LWdvb2QuanMgPSBUSU1F
T1VUIFBBU1MiIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfb3V0cHV0PUZh
bHNlKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVzdWx0CiAKLSAgICAgICAgb3B0
aW9ucyA9IEVtcHR5T3B0aW9ucygpCi0gICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRl
c3RMaW51eFBvcnQob3B0aW9ucykKKyAgICAgICAgbW9ja19vcHRpb25zID0gb3B0aW9ucy5Qb3J0
T3B0aW9ucyh1c2VfZHJ0PUZhbHNlKQorICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5U
ZXN0TGludXhQb3J0KG1vY2tfb3B0aW9ucykKIAogICAgICAgICAjIEltYWdlcyBhcmUgZGlmZmVy
ZW50LgogICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0ZSgwKQpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV93aW4ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX3dpbi5weQppbmRleCA2N2QyYWIyZjFkYzkwNzRmZGFhNjI3ZWMyYTRkMDlmMzNi
OGNiNTYwLi42OWI1MjlhZTFiNDNhYjRlZDY2M2UwZjZlYjQxNjU3ZWE2ZmI3NDU4IDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX3dpbi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX3dpbi5weQpAQCAtNTUsOSArNTUsNyBAQCBjbGFzcyBDaHJvbWl1bVdp
blBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgIyBweXRob24gZXhlY3V0YWJs
ZSB0byBydW4gY2dpIHByb2dyYW0uCiAgICAgICAgIGVudlsiQ1lHV0lOX1BBVEgiXSA9IHNlbGYu
cGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoCiAgICAgICAgICAgICAidGhpcmRfcGFydHkiLCAiY3ln
d2luIiwgImJpbiIpCi0gICAgICAgIGlmIChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiBhbmQgc2Vs
Zi5fb3B0aW9ucyBhbmQKLSAgICAgICAgICAgIGhhc2F0dHIoc2VsZi5fb3B0aW9ucywgInJlZ2lz
dGVyX2N5Z3dpbiIpIGFuZAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5yZWdpc3Rlcl9jeWd3
aW4pOgorICAgICAgICBpZiAoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgYW5kIHNlbGYuZ2V0X29w
dGlvbigncmVnaXN0ZXJfY3lnd2luJykpOgogICAgICAgICAgICAgc2V0dXBfbW91bnQgPSBzZWxm
LnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCJ0aGlyZF9wYXJ0eSIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN5Z3dpbiIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNldHVwX21v
dW50LmJhdCIpCkBAIC0xMTMsNyArMTExLDcgQEAgY2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9t
aXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHApOgogICAgICAg
ICAgICAgcmV0dXJuIHAKICAgICAgICAgcCA9IHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2Uo
J2Nocm9tZScsICpjb21wcykKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocCkgb3Igbm90IHNl
bGYuX29wdGlvbnMudXNlX2RydDoKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocCkgb3Igbm90
IHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgcmV0dXJuIHAKICAgICAg
ICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgpLCAnV2Vi
S2l0JywgJ2Nocm9taXVtJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY29tcHMpCkBA
IC0xNDEsMjMgKzEzOSwyMyBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hyb21p
dW1Qb3J0KToKIAogICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1O
b25lKToKICAgICAgICAgaWYgbm90IGNvbmZpZ3VyYXRpb246Ci0gICAgICAgICAgICBjb25maWd1
cmF0aW9uID0gc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uCisgICAgICAgICAgICBjb25maWd1
cmF0aW9uID0gc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykKICAgICAgICAgYmluYXJ5
X25hbWUgPSAndGVzdF9zaGVsbC5leGUnCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2Ry
dDoKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICBi
aW5hcnlfbmFtZSA9ICdEdW1wUmVuZGVyVHJlZS5leGUnCiAgICAgICAgIHJldHVybiBzZWxmLl9i
dWlsZF9wYXRoKGNvbmZpZ3VyYXRpb24sIGJpbmFyeV9uYW1lKQogCiAgICAgZGVmIF9wYXRoX3Rv
X2hlbHBlcihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUgPSAnbGF5b3V0X3Rlc3RfaGVscGVy
LmV4ZScKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBzZWxm
LmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGJpbmFyeV9uYW1lID0gJ0xheW91
dFRlc3RIZWxwZXIuZXhlJwotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLl9v
cHRpb25zLmNvbmZpZ3VyYXRpb24sIGJpbmFyeV9uYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5f
YnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgYmluYXJ5X25hbWUp
CiAKICAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgYmluYXJ5X25h
bWUgPSAnaW1hZ2VfZGlmZi5leGUnCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoK
KyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICBiaW5h
cnlfbmFtZSA9ICdJbWFnZURpZmYuZXhlJwotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0
aChzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24sIGJpbmFyeV9uYW1lKQorICAgICAgICByZXR1
cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgYmlu
YXJ5X25hbWUpCiAKICAgICBkZWYgX3BhdGhfdG9fd2RpZmYoc2VsZik6CiAgICAgICAgIHJldHVy
biBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd0aGlyZF9wYXJ0eScsICdjeWd3aW4nLCAn
YmluJywKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZHJ5cnVuLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9kcnlydW4ucHkKaW5kZXggNjQ4Y2NhZGFhZTZmNDVmN2QwNmIyYjVlYjZjYjFl
ZGQyZmY1OGIxMC4uOGE2YWY1NmM4NDIwZTQ1MGM0MTg5N2FmZTU0M2U2NjcwNmY5YWU3NiAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9k
cnlydW4ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9kcnlydW4ucHkKQEAgLTEwMSw3ICsxMDEsNiBAQCBjbGFzcyBEcnlydW5Ecml2ZXIoYmFz
ZS5Ecml2ZXIpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGltYWdlX3BhdGgsIG9w
dGlvbnMsIGV4ZWN1dGl2ZSk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0Ci0gICAgICAgIHNl
bGYuX29wdGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNlbGYuX2ltYWdlX3BhdGggPSBpbWFnZV9w
YXRoCiAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQogICAgICAgICBzZWxmLl9s
YXlvdXRfdGVzdHNfZGlyID0gTm9uZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5
CmluZGV4IDgxYzM3MzI3YTIwOTkyZWUwYzRjM2NkOWU4NGQzMTFkNmVhNDU5OGIuLjFjY2QzNmIz
ZmZmMzQ0ZmFmNzI3OGZiMWEzMmNiZGYxMDgwOGEzZTggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3Rv
cnlfdW5pdHRlc3QucHkKQEAgLTM4LDYgKzM4LDcgQEAgaW1wb3J0IGZhY3RvcnkKIGltcG9ydCBn
b29nbGVfY2hyb21lCiBpbXBvcnQgZ3RrCiBpbXBvcnQgbWFjCitpbXBvcnQgb3B0aW9ucwogaW1w
b3J0IHF0CiBpbXBvcnQgdGVzdAogaW1wb3J0IHdpbgpAQCAtNTIsMjEgKzUzLDExIEBAIGNsYXNz
IEZhY3RvcnlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIEZJWE1FOiBUaGUgcG9ydHMg
dGhlbXNlbHZlcyBzaG91bGQgZXhwb3NlIHdoYXQgb3B0aW9ucyB0aGV5IHJlcXVpcmUsCiAgICAg
IyBpbnN0ZWFkIG9mIHBhc3NpbmcgZ2VuZXJpYyAib3B0aW9ucyIuCiAKLSAgICBjbGFzcyBXZWJL
aXRPcHRpb25zKG9iamVjdCk6Ci0gICAgICAgICIiIlJlcHJlc2VudHMgdGhlIG1pbmltdW0gb3B0
aW9ucyBmb3IgV2ViS2l0IHBvcnQuIiIiCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAg
ICAgICAgICAgIHNlbGYucGl4ZWxfdGVzdHMgPSBGYWxzZQotCi0gICAgY2xhc3MgQ2hyb21pdW1P
cHRpb25zKFdlYktpdE9wdGlvbnMpOgotICAgICAgICAiIiJSZXByZXNlbnRzIG1pbmltdW0gb3B0
aW9ucyBmb3IgQ2hyb21pdW0gcG9ydC4iIiIKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgot
ICAgICAgICAgICAgRmFjdG9yeVRlc3QuV2ViS2l0T3B0aW9ucy5fX2luaXRfXyhzZWxmKQotICAg
ICAgICAgICAgc2VsZi5jaHJvbWl1bSA9IFRydWUKLQogICAgIGRlZiBzZXRVcChzZWxmKToKICAg
ICAgICAgc2VsZi5yZWFsX3N5c19wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQotICAgICAgICBzZWxm
LndlYmtpdF9vcHRpb25zID0gRmFjdG9yeVRlc3QuV2ViS2l0T3B0aW9ucygpCi0gICAgICAgIHNl
bGYuY2hyb21pdW1fb3B0aW9ucyA9IEZhY3RvcnlUZXN0LkNocm9taXVtT3B0aW9ucygpCisgICAg
ICAgIHNlbGYud2Via2l0X29wdGlvbnMgPSBvcHRpb25zLlBvcnRPcHRpb25zKHBpeGVsX3Rlc3Rz
PUZhbHNlKQorICAgICAgICBzZWxmLmNocm9taXVtX29wdGlvbnMgPSBvcHRpb25zLlBvcnRPcHRp
b25zKHBpeGVsX3Rlc3RzPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNocm9taXVtPVRydWUpCiAKICAgICBkZWYgdGVhckRvd24oc2Vs
Zik6CiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9IHNlbGYucmVhbF9zeXNfcGxhdGZvcm0KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFj
X3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9tYWNfdW5pdHRlc3QucHkKaW5kZXggMzI3YjE5ZWU1ZmE1NDUwM2I0YWZjMjliNzFlMDBl
NzliZGE1NmYxYi4uZDM4M2E0Y2Q4ODM3ZTU5Y2E1NGNkYWU5Nzk2MWE0YTU1YjFmNDAwNCAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9t
YWNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKQEAgLTM1LDcgKzM1LDcgQEAgaW1wb3J0IHBvcnRf
dGVzdGNhc2UKIAogCiBjbGFzcyBNYWNUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToK
LSAgICBkZWYgbWFrZV9wb3J0KHNlbGYsIG9wdGlvbnM9cG9ydF90ZXN0Y2FzZS5Nb2NrT3B0aW9u
cygpKToKKyAgICBkZWYgbWFrZV9wb3J0KHNlbGYsIG9wdGlvbnM9cG9ydF90ZXN0Y2FzZS5tb2Nr
X29wdGlvbnMpOgogICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2Rhcndpbic6CiAgICAgICAg
ICAgICByZXR1cm4gTm9uZQogICAgICAgICBwb3J0X29iaiA9IG1hYy5NYWNQb3J0KG9wdGlvbnM9
b3B0aW9ucykKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvb3B0aW9ucy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvb3B0aW9ucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2E1ZDU3M2ZhZDQxNDgzYmRj
ZjJjZmIwYjc0ZGM0ZDY2YWZjMTliCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9vcHRpb25zLnB5CkBAIC0wLDAgKzEsNjYg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgR29vZ2xlIG5h
bWUgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2NsYXNzIFBvcnRPcHRpb25z
KG9iamVjdCk6CisgICAgIiIiQSBzdWJzZXQgb2YgdGhlIG9wdGlvbnMgY2xhc3MgcmV0dXJuZWQg
ZnJvbSBvcHRwYXJzZS4KKworICAgIEl0IGNhbiBiZSB1c2VkIHRvIE1vY2sgb3V0IHBhc3Npbmcg
b3B0aW9ucyB0byB0aGUgUG9ydHMuCisKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCAqKmt3YXJncyk6CisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGt3YXJncy5pdGVtcygpOgor
ICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1trZXldID0gdmFsdWUKKworICAgIGRlZiBfX2VxX18o
c2VsZiwgbzIpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfXyA9PSBvMi5fX2RpY3RfXwor
CisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfXy5f
X2l0ZXJfXygpCisKKyAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisgICAgICAgIHJldHVybiBU
cnVlCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZikK
KworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBhcmdzID0gW10KKyAgICAgICAga2V5
cyA9IHNlbGYuX19kaWN0X18ua2V5cygpCisgICAgICAgIGtleXMuc29ydCgpCisgICAgICAgIGZv
ciBrZXkgaW4ga2V5czoKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCIlcz0lcyIgJSAoa2V5LCBy
ZXByKHNlbGYuX19kaWN0X19ba2V5XSkpKQorICAgICAgICByZXR1cm4gIlBvcnRPcHRpb25zKCIg
KyAnLCAnLmpvaW4oYXJncykgKyAiKSIKKworICAgIGRlZiBrZXlzKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5fX2RpY3RfXy5rZXlzKCkKKworICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAg
ICAgICByZXR1cm4gbGVuKHNlbGYuX19kaWN0X18pCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L29wdGlvbnNfdW5pdHRlc3QucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L29wdGlvbnNfdW5p
dHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU2Zjg2OWM5MjhjNzk2YzhjZGRhODFjZTQ4MjU4OGY1ODdk
NzhhNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvb3B0aW9uc191bml0dGVzdC5weQpAQCAtMCwwICsxLDg2IEBACisjIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIG9wdGlvbnMgaW1wb3J0IFBvcnRPcHRp
b25zCisKKworY2xhc3MgUG9ydE9wdGlvbnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBk
ZWYgdGVzdF9nZXQoc2VsZik6CisgICAgICAgIG8gPSBQb3J0T3B0aW9ucyhmb289J2JhcicpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoby5mb28sICdiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0
X2tleV9taXNzaW5nKHNlbGYpOgorICAgICAgICBvID0gUG9ydE9wdGlvbnMoKQorICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhIHg6IHguZm9vLCBvKQorCisg
ICAgZGVmIHRlc3Rfbm9uemVybyhzZWxmKToKKyAgICAgICAgbyA9IFBvcnRPcHRpb25zKCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKG8pCisKKyAgICBkZWYgdGVzdF9zZXQoc2VsZik6CisgICAg
ICAgIG8gPSBQb3J0T3B0aW9ucygpCisgICAgICAgIG8uZm9vID0gJ2JhcicKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChvLmZvbywgJ2JhcicpCisKKyAgICBkZWYgdGVzdF9zdHIoc2VsZik6Cisg
ICAgICAgIG8gPSBQb3J0T3B0aW9ucygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG8p
LCAiUG9ydE9wdGlvbnMoKSIpCisgICAgICAgIG8uZm9vID0gJ2JhcicKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdHIobyksICJQb3J0T3B0aW9ucyhmb289J2JhcicpIikKKyAgICAgICAgby5i
YXIgPSAnYmF6IiInCisgICAgICAgIG8uYmF6ID0gImJhcicnIgorICAgICAgICBzMSA9ICJQb3J0
T3B0aW9ucyhiYXI9J2JhelwiXCInLCBiYXo9XCJiYXInJ1wiLCBmb289J2JhcicpIgorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cihvKSwgczEpCisgICAgICAgIG8xID0gZXZhbChyZXByKG8p
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG8sIG8xKQorCisgICAgZGVmIHRlc3RfbGVuKHNl
bGYpOgorICAgICAgICBvID0gUG9ydE9wdGlvbnMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihvKSwgMCkKKworICAgICAgICBvLmZvbyA9ICdiYXInCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKG8pLCAxKQorCisgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZik6CisgICAgICAg
IG8gPSBQb3J0T3B0aW9ucygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2ZvbycgaW4gbykK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG8sICdmb28nKSkKKworICAgICAgICBv
LmZvbyA9ICdiYXInCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZm9vJyBpbiBvKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihvLCAnZm9vJykpCisKKyAgICBkZWYgdGVzdF9rZXlz
KHNlbGYpOgorICAgICAgICBvID0gUG9ydE9wdGlvbnMoKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG8ua2V5cygpLCBbXSkKKyAgICAgICAgby5mb28gPSAnYmFyJworICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG8ua2V5cygpLCBbJ2ZvbyddKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CmluZGV4
IDQ3NTk3ZDY3Y2MyNWE2MzhhOWY2NDVhN2I1ZTBiZTI5ZDY1NjE1NWYuLjM0MzIxMWYzMTUwZjBl
MzNhMjM1ZTNmNzFhYTFiZDdhZWI2MjAxYWQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2Uu
cHkKQEAgLTI4LDI0ICsyOCwxOSBAQAogCiAiIiJVbml0IHRlc3RpbmcgYmFzZSBjbGFzcyBmb3Ig
UG9ydCBpbXBsZW1lbnRhdGlvbnMuIiIiCiAKK2ltcG9ydCBvcHRpb25zCiBpbXBvcnQgb3MKIGlt
cG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiAKLQotY2xhc3MgTW9ja09wdGlvbnMob2Jq
ZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwKLSAgICAgICAgICAgICAgICAgcmVzdWx0c19k
aXJlY3Rvcnk9J2xheW91dC10ZXN0LXJlc3VsdHMnLAotICAgICAgICAgICAgICAgICB1c2VfYXBh
Y2hlPVRydWUsCi0gICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnKToKLSAg
ICAgICAgc2VsZi5yZXN1bHRzX2RpcmVjdG9yeSA9IHJlc3VsdHNfZGlyZWN0b3J5Ci0gICAgICAg
IHNlbGYudXNlX2FwYWNoZSA9IHVzZV9hcGFjaGUKLSAgICAgICAgc2VsZi5jb25maWd1cmF0aW9u
ID0gY29uZmlndXJhdGlvbgorbW9ja19vcHRpb25zID0gb3B0aW9ucy5Qb3J0T3B0aW9ucyhyZXN1
bHRzX2RpcmVjdG9yeT0nbGF5b3V0LXRlc3QtcmVzdWx0cycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVzZV9hcGFjaGU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uZmlndXJhdGlvbj0nUmVsZWFzZScpCiAKIAogY2xhc3MgUG9ydFRlc3RD
YXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0cyB0aGUgV2ViS2l0IHBvcnQgaW1w
bGVtZW50YXRpb24uIiIiCi0gICAgZGVmIG1ha2VfcG9ydChzZWxmLCBvcHRpb25zPU1vY2tPcHRp
b25zKCkpOgorICAgIGRlZiBtYWtlX3BvcnQoc2VsZiwgb3B0aW9ucz1tb2NrX29wdGlvbnMpOgog
ICAgICAgICAiIiJPdmVycmlkZSBpbiBzdWJjbGFzcy4iIiIKICAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvcigpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQppbmRleCAzYjgxMTY3OTlhZjNjZDRlZWE2ZWIx
ZGZkYjhkYTkwNGNkNWY5ODAwLi4zNjkxYzVhYWU5ZmMzMjFjOTUxNzg2MzZjZGNkMDNiNjliZGRk
NzNmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC90ZXN0LnB5CkBAIC0yMTUsMTQgKzIxNSwxMSBAQCBjbGFzcyBUZXN0UG9ydChi
YXNlLlBvcnQpOgogICAgIGRlZiBuYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbmFt
ZQogCi0gICAgZGVmIG9wdGlvbnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9vcHRpb25z
Ci0KICAgICBkZWYgX3BhdGhfdG9fd2RpZmYoc2VsZik6CiAgICAgICAgIHJldHVybiBOb25lCiAK
ICAgICBkZWYgcmVzdWx0c19kaXJlY3Rvcnkoc2VsZik6Ci0gICAgICAgIHJldHVybiAnL3RtcC8n
ICsgc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeQorICAgICAgICByZXR1cm4gJy90bXAv
JyArIHNlbGYuZ2V0X29wdGlvbigncmVzdWx0c19kaXJlY3RvcnknKQogCiAgICAgZGVmIHNldHVw
X3Rlc3RfcnVuKHNlbGYpOgogICAgICAgICBwYXNzCkBAIC0yODUsNyArMjgyLDYgQEAgY2xhc3Mg
VGVzdERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGlt
YWdlX3BhdGgsIG9wdGlvbnMsIGV4ZWN1dGl2ZSk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0
CiAgICAgICAgIHNlbGYuX2ltYWdlX3BhdGggPSBpbWFnZV9wYXRoCi0gICAgICAgIHNlbGYuX29w
dGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQogICAg
ICAgICBzZWxmLl9pbWFnZV93cml0dGVuID0gRmFsc2UKIApAQCAtMzAyLDcgKzI5OCw3IEBAIGNs
YXNzIFRlc3REcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICBpZiB0ZXN0Lmhhbmc6CiAgICAg
ICAgICAgICB0aW1lLnNsZWVwKChmbG9hdCh0aW1lb3V0bXMpICogNCkgLyAxMDAwLjApCiAKLSAg
ICAgICAgaWYgc2VsZi5fcG9ydC5vcHRpb25zKCkucGl4ZWxfdGVzdHMgYW5kIHRlc3QuYWN0dWFs
X2ltYWdlOgorICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3BpeGVsX3Rlc3RzJykg
YW5kIHRlc3QuYWN0dWFsX2ltYWdlOgogICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuX2ltYWdl
X3BhdGgsICd3JykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHRlc3QuYWN0
dWFsX2ltYWdlKQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4IGVkMTljMDljNjJkYWNiZWU3YTNhNjk4
ZDc2YWFhM2Q4MmNhZWJiN2MuLmM5NDBmMWU3YTA3MGE2MDc0MGU0OWJlOWRhNmVmYmJhYTljZDZh
OTAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvd2Via2l0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC02NSw5ICs2NSw3IEBAIGNsYXNzIFdlYktpdFBvcnQo
YmFzZS5Qb3J0KToKIAogICAgICAgICAjIEZJWE1FOiBkaXNhYmxlIHBpeGVsIHRlc3RzIHVudGls
IHRoZXkgYXJlIHJ1biBieSBkZWZhdWx0IG9uIHRoZQogICAgICAgICAjIGJ1aWxkIG1hY2hpbmVz
LgotICAgICAgICBpZiBzZWxmLl9vcHRpb25zIGFuZCAobm90IGhhc2F0dHIoc2VsZi5fb3B0aW9u
cywgInBpeGVsX3Rlc3RzIikgb3IKLSAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0
cyBpcyBOb25lKToKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgPSBGYWxz
ZQorICAgICAgICBzZWxmLnNldF9vcHRpb25fZGVmYXVsdCgncGl4ZWxfdGVzdHMnLCBGYWxzZSkK
IAogICAgIGRlZiBiYXNlbGluZV9wYXRoKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fd2Vi
a2l0X2Jhc2VsaW5lX3BhdGgoc2VsZi5fbmFtZSkKQEAgLTg2LDcgKzg0LDcgQEAgY2xhc3MgV2Vi
S2l0UG9ydChiYXNlLlBvcnQpOgogICAgIGRlZiBfYnVpbGRfZHJpdmVyKHNlbGYpOgogICAgICAg
ICBleGl0X2NvZGUgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWwogICAgICAgICAgICAg
c2VsZi5zY3JpcHRfcGF0aCgiYnVpbGQtZHVtcHJlbmRlcnRyZWUiKSwKLSAgICAgICAgICAgIHNl
bGYuZmxhZ19mcm9tX2NvbmZpZ3VyYXRpb24oc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uKSwK
KyAgICAgICAgICAgIHNlbGYuZmxhZ19mcm9tX2NvbmZpZ3VyYXRpb24oc2VsZi5nZXRfb3B0aW9u
KCdjb25maWd1cmF0aW9uJykpLAogICAgICAgICBdLCByZXR1cm5fZXhpdF9jb2RlPVRydWUpCiAg
ICAgICAgIGlmIGV4aXRfY29kZSAhPSAwOgogICAgICAgICAgICAgX2xvZy5lcnJvcigiRmFpbGVk
IHRvIGJ1aWxkIER1bXBSZW5kZXJUcmVlIikKQEAgLTEwMSwxMSArOTksMTEgQEAgY2xhc3MgV2Vi
S2l0UG9ydChiYXNlLlBvcnQpOgogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIGNoZWNr
X2J1aWxkKHNlbGYsIG5lZWRzX2h0dHApOgotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmJ1aWxk
IGFuZCBub3Qgc2VsZi5fYnVpbGRfZHJpdmVyKCk6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlv
bignYnVpbGQnKSBhbmQgbm90IHNlbGYuX2J1aWxkX2RyaXZlcigpOgogICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCiAgICAgICAgIGlmIG5vdCBzZWxmLl9jaGVja19kcml2ZXIoKToKICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzOgor
ICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3BpeGVsX3Rlc3RzJyk6CiAgICAgICAgICAgICBp
ZiBub3Qgc2VsZi5jaGVja19pbWFnZV9kaWZmKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCiAgICAgICAgIGlmIG5vdCBzZWxmLl9jaGVja19wb3J0X2J1aWxkKCk6CkBAIC0xODQsNyAr
MTgyLDcgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgogICAgIGRlZiByZXN1bHRzX2Rp
cmVjdG9yeShzZWxmKToKICAgICAgICAgIyBSZXN1bHRzIGFyZSBzdG9yZSByZWxhdGl2ZSB0byB0
aGUgYnVpbHQgcHJvZHVjdHMgdG8gbWFrZSBpdCBlYXN5CiAgICAgICAgICMgdG8gaGF2ZSBtdWx0
aXBsZSBjb3BpZXMgb2Ygd2Via2l0IGNoZWNrZWQgb3V0IGFuZCBidWlsdC4KLSAgICAgICAgcmV0
dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSkKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdyZXN1bHRzX2Rp
cmVjdG9yeScpKQogCiAgICAgZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYpOgogICAgICAgICAjIFRo
aXMgcG9ydCBkb2Vzbid0IHJlcXVpcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uCkBAIC0z
NjAsNyArMzU4LDcgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgogICAgICAgICBpZiBu
b3Qgc2VsZi5fY2FjaGVkX2J1aWxkX3Jvb3Q6CiAgICAgICAgICAgICBzZWxmLl9jYWNoZWRfYnVp
bGRfcm9vdCA9IHNlbGYuX3dlYmtpdF9idWlsZF9kaXJlY3RvcnkoWwogICAgICAgICAgICAgICAg
ICItLWNvbmZpZ3VyYXRpb24iLAotICAgICAgICAgICAgICAgIHNlbGYuZmxhZ19mcm9tX2NvbmZp
Z3VyYXRpb24oc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uKSwKKyAgICAgICAgICAgICAgICBz
ZWxmLmZsYWdfZnJvbV9jb25maWd1cmF0aW9uKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlv
bicpKSwKICAgICAgICAgICAgIF0pCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5f
Y2FjaGVkX2J1aWxkX3Jvb3QsICpjb21wcykKIApAQCAtNDAxLDcgKzM5OSw2IEBAIGNsYXNzIFdl
YktpdERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGlt
YWdlX3BhdGgsIG9wdGlvbnMsIGV4ZWN1dGl2ZT1FeGVjdXRpdmUoKSk6CiAgICAgICAgIHNlbGYu
X3BvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX2ltYWdlX3BhdGggPSBpbWFnZV9wYXRoCi0gICAg
ICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGV4
ZWN1dGl2ZQogICAgICAgICBzZWxmLl9kcml2ZXJfdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAo
cHJlZml4PSdEdW1wUmVuZGVyVHJlZS0nKQogCkBAIC00MTQsMTcgKzQxMSwxNyBAQCBjbGFzcyBX
ZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICBpZiBzZWxmLl9pbWFnZV9wYXRoOgog
ICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLXBpeGVsLXRlc3RzJykKIAotICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6Ci0gICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25z
LmFjY2VsZXJhdGVkX2NvbXBvc2l0aW5nOgorICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRp
b24oJ3VzZV9kcnQnKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbignYWNj
ZWxlcmF0ZWRfY29tcG9zaXRpbmcnKToKICAgICAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBl
bmQoJy0tZW5hYmxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nJykKIAotICAgICAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy5hY2NlbGVyYXRlZF8yZF9jYW52YXM6CisgICAgICAgICAgICBpZiBzZWxm
Ll9wb3J0LmdldF9vcHRpb24oJ2FjY2VsZXJhdGVkXzJkX2NhbnZhcycpOgogICAgICAgICAgICAg
ICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgnLS1lbmFibGUtYWNjZWxlcmF0ZWQtMmQtY2FudmFzJykK
IAogICAgICAgICByZXR1cm4gZHJpdmVyX2FyZ3MKIAogICAgIGRlZiBzdGFydChzZWxmKToKLSAg
ICAgICAgY29tbWFuZCA9IHNlbGYuX2NvbW1hbmRfd3JhcHBlcihzZWxmLl9vcHRpb25zLndyYXBw
ZXIpCisgICAgICAgIGNvbW1hbmQgPSBzZWxmLl9jb21tYW5kX3dyYXBwZXIoc2VsZi5fcG9ydC5n
ZXRfb3B0aW9uKCd3cmFwcGVyJykpCiAgICAgICAgIGNvbW1hbmQgKz0gW3NlbGYuX3BvcnQuX3Bh
dGhfdG9fZHJpdmVyKCksICctJ10KICAgICAgICAgY29tbWFuZCArPSBzZWxmLl9kcml2ZXJfYXJn
cygpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93
ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKaW5kZXggZmNlNmU4MmNhZWY4MzVhNzMzOTgwODRiNjkx
NDgwMDhkYjI2YWU2OC4uNWEyZDJhZDM5NjZmYTg4YTA3NDZkN2VlZTJhZTkyMDY3MWZhZWE0MyAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmVi
YXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJr
aXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTQ2LDEyICs0Niw2IEBAIGNsYXNzIE1vY2tQb3J0KG9i
amVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLmltYWdlX2RpZmZfZXhpc3RzCiAKIAotY2xhc3Mg
TW9ja09wdGlvbnMob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlndXJhdGlv
bj1Ob25lLCBodG1sX2RpcmVjdG9yeT1Ob25lKToKLSAgICAgICAgc2VsZi5jb25maWd1cmF0aW9u
ID0gY29uZmlndXJhdGlvbgotICAgICAgICBzZWxmLmh0bWxfZGlyZWN0b3J5ID0gaHRtbF9kaXJl
Y3RvcnkKLQotCiBkZWYgZ2V0X21vY2tfZ2V0KGNvbmZpZ19leHBlY3RhdGlvbnMpOgogICAgIGRl
ZiBtb2NrX2dldChwb3J0X25hbWUsIG9wdGlvbnMpOgogICAgICAgICByZXR1cm4gTW9ja1BvcnQo
Y29uZmlnX2V4cGVjdGF0aW9uc1tvcHRpb25zLmNvbmZpZ3VyYXRpb25dKQpAQCAtNjQsNyArNTgs
OCBAQCBjbGFzcyBUZXN0R2V0SG9zdFBvcnRPYmplY3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICAjIHRoYXQgSW1hZ2UgZGlmZiBpcyAob3IgaXNuJ3QpIHByZXNlbnQgaW4gdGhlIHR3byBj
b25maWdzLgogICAgICAgICBwb3J0LmdldCA9IGdldF9tb2NrX2dldCh7J1JlbGVhc2UnOiByZWxl
YXNlX3ByZXNlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGVidWcnOiBk
ZWJ1Z19wcmVzZW50fSkKLSAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKCkKKyAgICAgICAg
b3B0aW9ucyA9IHBvcnQuUG9ydE9wdGlvbnMoY29uZmlndXJhdGlvbj1Ob25lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sX2RpcmVjdG9yeT1Ob25lKQogICAgICAgICBw
b3J0X29iaiA9IHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLmdldF9ob3N0X3BvcnRf
b2JqZWN0KAogICAgICAgICAgICAgb3B0aW9ucykKICAgICAgICAgaWYgdmFsaWRfcG9ydF9vYmo6
CkBAIC05MCw3ICs4NSw4IEBAIGNsYXNzIFRlc3RHZXRIb3N0UG9ydE9iamVjdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAKIGNsYXNzIFRlc3RSZWJhc2VsaW5lcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgZGVmIG1ha2VfcmViYXNlbGluZXIoc2VsZik6Ci0gICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0
aW9ucygpCisgICAgICAgIG9wdGlvbnMgPSBwb3J0LlBvcnRPcHRpb25zKGNvbmZpZ3VyYXRpb249
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbF9kaXJlY3Rvcnk9
Tm9uZSkKICAgICAgICAgaG9zdF9wb3J0X29iaiA9IHBvcnQuZ2V0KCd0ZXN0Jywgb3B0aW9ucykK
ICAgICAgICAgdGFyZ2V0X29wdGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHRhcmdldF9wb3J0X29i
aiA9IHBvcnQuZ2V0KCd0ZXN0JywgdGFyZ2V0X29wdGlvbnMpCkBAIC0xMjYsNyArMTIyLDggQEAg
Y2xhc3MgVGVzdEh0bWxHZW5lcmF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBtYWtl
X2dlbmVyYXRvcihzZWxmLCB0ZXN0cyk6CiAgICAgICAgIHJldHVybiByZWJhc2VsaW5lX2Nocm9t
aXVtX3dlYmtpdF90ZXN0cy5IdG1sR2VuZXJhdG9yKAogICAgICAgICAgICAgdGFyZ2V0X3BvcnQ9
Tm9uZSwKLSAgICAgICAgICAgIG9wdGlvbnM9TW9ja09wdGlvbnMoaHRtbF9kaXJlY3Rvcnk9Ii90
bXAiKSwKKyAgICAgICAgICAgIG9wdGlvbnM9cG9ydC5Qb3J0T3B0aW9ucyhjb25maWd1cmF0aW9u
PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbF9kaXJlY3Rv
cnk9Jy90bXAnKSwKICAgICAgICAgICAgIHBsYXRmb3Jtcz1bJ21hYyddLAogICAgICAgICAgICAg
cmViYXNlbGluaW5nX3Rlc3RzPXRlc3RzLAogICAgICAgICAgICAgZXhlY3V0aXZlPUV4ZWN1dGl2
ZSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70825</attachid>
            <date>2010-10-14 20:01:17 -0700</date>
            <delta_ts>2010-10-15 18:08:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47510-20101014200116.patch</filename>
            <type>text/plain</type>
            <size>35844</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwM2I4ZTZhMWUxNjFmMWU3NjI2M2RkOTAzYzIxMDJiNmZjMjA2MmRmLi41OGJhZWE4
NmIxYmFmMzYyMWQ2ZjEwNDAyMmRjYjcwYjZkNGMxOWRhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAK
KzIwMTAtMTAtMTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGNsZWFuIHVwIHRoZSBvcHRpb25zLXBhcnNpbmcgY29kZSBpbiB0aGUgcG9ydAorICAg
ICAgICBjbGFzc2VzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgbW9kaWZpZXMgdGhl
IFBvcnQgaW50ZXJmYWNlIHRvIGhhdmUgYSBnZXRfb3B0aW9uKCkgYW5kCisgICAgICAgIHNldF9v
cHRpb25fZGVmYXVsdCgpIG1ldGhvZCBmb3IgYWNjZXNzaW5nIHRoZSBvcHRpb25zIGFyZ3VtZW50
CisgICAgICAgIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuIElmIHRoZSBjb25zdHJ1Y3RvciBp
cyBub3QgcGFzc2VkIGFuCisgICAgICAgIG9wdGlvbnMgYXJndW1lbnQsIHdlIGRlZmF1bHQgdG8g
YSBNb2NrT3B0aW9ucygpIGFyZ3VtZW50IGZyb20KKyAgICAgICAgbW9ja3Rvb2wsIHdoaWNoIGhh
cyB0aGUgc2FtZSBzZW1hbnRpY3Mgd2Ugd2FudC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlcmUg
aXMgYSBkaXNhZHZhbnRhZ2UgdG8gcG9ydC5nZXRfb3B0aW9uKCdmb28nKSBvdmVyCisgICAgICAg
IHBvcnQuX29wdGlvbnMuZm9vLCB3aGljaCBpcyB0aGF0IHlvdSBsb3NlIHNvbWUgb2YgdGhlIGNo
ZWNraW5nCisgICAgICAgIGZvciB3aGV0aGVyICdmb28nIGlzIHNldCAodHlwb3MgcmVzdWx0IGlu
IHRoZSBkZWZhdWx0IHZhbHVlLCBub3QKKyAgICAgICAgYW4gZXhjZXB0aW9uIGJlaW5nIHJhaXNl
ZC4gVGhpcyBpcyBkZXNpcmVkIGluIHRoaXMgY2FzZSwgc2luY2UgdGhlCisgICAgICAgIFBvcnQg
Y2xhc3MgaXMgbm90IGFsbG93ZWQgdG8gYXNzdW1lIHRoYXQgb3B0aW9ucyBkb2VzIGhhdmUgYW55
CisgICAgICAgIHBhcnRpY3VsYXIgdmFsdWVzIHNldCwgYW5kIHNvIHRoaXMgY2hhbmdlIGVuc3Vy
ZXMgdGhhdCBhbGwgb2YKKyAgICAgICAgdGhlIHN1YmNsYXNzZXMgYXJlIGZvbGxvd2luZyB0aGUg
c2FtZSwgaW50ZW5kZWQsIGxvZ2ljLgorCisgICAgICAgIEFyZ3VhYmx5IHRoaXMgaXMgdGhlIHdy
b25nIHNlbWFudGljcyB0byBoYXZlLCBhbmQgdGhlIFBvcnQKKyAgICAgICAgY2xhc3NlcyBzaG91
bGQgYmUgYWJsZSB0byBhc3N1bWUgYSBkZWZhdWx0IHNldCBvZgorICAgICAgICBhdHRyaWJ1dGVz
L2FyZ3VtZW50cywgYnV0IHRoYXQgY2hhbmdlIHdpbGwgbmVlZCB0byB3YWl0IGZvciBhCisgICAg
ICAgIGRpZmZlcmVudCBDTCB3aGVyZSB3ZSBjYW4gbW9kaWZ5IG5ldy1ydW4td2Via2l0LXRlc3Rz
IHRvIHB1bGwgYQorICAgICAgICBsaXN0IG9mIGFyZ3VtZW50cyBmcm9tIHRoZSBwb3J0IGZhY3Rv
cnkgcm91dGluZXMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ3NTEwCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dp
bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1
bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3Rv
cnlfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9tYWNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9vcHRpb25zLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L29wdGlvbnNfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93
ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisKIDIwMTAtMTAtMTQgIERpcmsgUHJhbmtlICA8ZHBy
YW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkKaW5kZXggYjE1ZWRiMjQ2NDY4YmY4MmRjOTU1MjBlNDNkNDlkYjg4MWJiZThhZS4u
NDE5YjE5NjZmZDJlNzA4NjE0OGEwMWRjYzk5NWUwNTlkZThkMTkxOCAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpA
QCAtNDcsNiArNDcsNyBAQCBpbXBvcnQgaHR0cF9zZXJ2ZXIKIGltcG9ydCB0ZXN0X2ZpbGVzCiBp
bXBvcnQgd2Vic29ja2V0X3NlcnZlcgogCitmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0
b29sCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3V0aWxzCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVy
cm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlciBpbXBvcnQgVXNlcgpAQCAtNzAs
NyArNzEsOSBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
Kiprd2FyZ3MpOgogICAgICAgICBzZWxmLl9uYW1lID0ga3dhcmdzLmdldCgncG9ydF9uYW1lJywg
Tm9uZSkKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IGt3YXJncy5nZXQoJ29wdGlvbnMnLCBOb25l
KQorICAgICAgICBzZWxmLl9vcHRpb25zID0ga3dhcmdzLmdldCgnb3B0aW9ucycpCisgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBt
b2NrdG9vbC5Nb2NrT3B0aW9ucygpCiAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGt3YXJncy5n
ZXQoJ2V4ZWN1dGl2ZScsIEV4ZWN1dGl2ZSgpKQogICAgICAgICBzZWxmLl91c2VyID0ga3dhcmdz
LmdldCgndXNlcicsIFVzZXIoKSkKICAgICAgICAgc2VsZi5faGVscGVyID0gTm9uZQpAQCAtOTcs
NiArMTAwLDkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBzZWxmLl9wcmV0dHlfcGF0
Y2hfcGF0aCA9IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCJCdWdzU2l0ZSIsCiAgICAgICAg
ICAgICAgICJQcmV0dHlQYXRjaCIsICJwcmV0dGlmeS5yYiIpCiAgICAgICAgIHNlbGYuX3ByZXR0
eV9wYXRjaF9hdmFpbGFibGUgPSBUcnVlCisgICAgICAgIHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0
KCdjb25maWd1cmF0aW9uJywgTm9uZSkKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb25maWd1
cmF0aW9uIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24g
PSBzZWxmLmRlZmF1bHRfY29uZmlndXJhdGlvbigpCiAKICAgICBkZWYgZGVmYXVsdF9jaGlsZF9w
cm9jZXNzZXMoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIER1bXBSZW5k
ZXJUcmVlIGluc3RhbmNlcyB0byB1c2UgZm9yIHRoaXMKQEAgLTQ0Niw2ICs0NTIsMTQgQEAgY2xh
c3MgUG9ydChvYmplY3QpOgogICAgICAgICBtYXkgYmUgZGlmZmVyZW50IChlLmcuLCAnd2luLXhw
JyBpbnN0ZWFkIG9mICdjaHJvbWl1bS13aW4teHAnLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5f
bmFtZQogCisgICAgZGVmIGdldF9vcHRpb24oc2VsZiwgbmFtZSwgZGVmYXVsdF92YWx1ZT1Ob25l
KToKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLl9vcHRpb25zLCBuYW1lKToKKyAgICAgICAgICAg
IHJldHVybiBzZWxmLl9vcHRpb25zLl9fZGljdF9fW25hbWVdCisgICAgICAgIHJldHVybiBkZWZh
dWx0X3ZhbHVlCisKKyAgICBkZWYgc2V0X29wdGlvbl9kZWZhdWx0KHNlbGYsIG5hbWUsIGRlZmF1
bHRfdmFsdWUpOgorICAgICAgICBzZWxmLl9vcHRpb25zLl9fZGljdF9fLnNldGRlZmF1bHQobmFt
ZSwgZGVmYXVsdF92YWx1ZSkKKwogICAgICMgRklYTUU6IFRoaXMgY291bGQgYmUgcmVwbGFjZWQg
YnkgZnVuY3Rpb25zIGluIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uCiAgICAgZGVmIHBh
dGhfZnJvbV93ZWJraXRfYmFzZShzZWxmLCAqY29tcHMpOgogICAgICAgICAiIiJSZXR1cm5zIHRo
ZSBmdWxsIHBhdGggdG8gcGF0aCBtYWRlIGJ5IGpvaW5pbmcgdGhlIHRvcCBvZiB0aGUKQEAgLTUx
MCwxMiArNTI0LDEyIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgIiIiU3RhcnQgYSB3
ZWIgc2VydmVyIGlmIGl0IGlzIGF2YWlsYWJsZS4gRG8gbm90aGluZyBpZgogICAgICAgICBpdCBp
c24ndC4gVGhpcyByb3V0aW5lIGlzIGFsbG93ZWQgdG8gKGFuZCBtYXkpIGZhaWwgaWYgYSBzZXJ2
ZXIKICAgICAgICAgaXMgYWxyZWFkeSBydW5uaW5nLiIiIgotICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLnVzZV9hcGFjaGU6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2FwYWNoZScp
OgogICAgICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXIgPSBhcGFjaGVfaHR0cF9zZXJ2ZXIuTGF5
b3V0VGVzdEFwYWNoZUh0dHBkKHNlbGYsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5y
ZXN1bHRzX2RpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICBzZWxmLmdldF9vcHRpb24oJ3Jlc3Vs
dHNfZGlyZWN0b3J5JykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9odHRwX3Nl
cnZlciA9IGh0dHBfc2VydmVyLkxpZ2h0dHBkKHNlbGYsCi0gICAgICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICBzZWxmLmdldF9vcHRp
b24oJ3Jlc3VsdHNfZGlyZWN0b3J5JykpCiAgICAgICAgIHNlbGYuX2h0dHBfc2VydmVyLnN0YXJ0
KCkKIAogICAgIGRlZiBzdGFydF93ZWJzb2NrZXRfc2VydmVyKHNlbGYpOgpAQCAtNTIzLDcgKzUz
Nyw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgaXQgaXNuJ3QuIFRoaXMgcm91dGlu
ZSBpcyBhbGxvd2VkIHRvIChhbmQgbWF5KSBmYWlsIGlmIGEgc2VydmVyCiAgICAgICAgIGlzIGFs
cmVhZHkgcnVubmluZy4iIiIKICAgICAgICAgc2VsZi5fd2Vic29ja2V0X3NlcnZlciA9IHdlYnNv
Y2tldF9zZXJ2ZXIuUHlXZWJTb2NrZXQoc2VsZiwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
cmVzdWx0c19kaXJlY3RvcnkpCisgICAgICAgICAgICBzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNf
ZGlyZWN0b3J5JykpCiAgICAgICAgIHNlbGYuX3dlYnNvY2tldF9zZXJ2ZXIuc3RhcnQoKQogCiAg
ICAgZGVmIGFjcXVpcmVfaHR0cF9sb2NrKHNlbGYpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXgg
MGZhZTYyZjNhMjMxZTYwZGQ2NjQ5OTJlNzVkMGQxOGQzNWEzYWMyNi4uYTNmZmViNzNiZTI4ZGNl
ZjA1NTI5NzQ4MzBkNDI5YTE5NGNlZGQ3ZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC04NCwx
MSArODQsNiBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKIAogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCAqKmt3YXJncyk6CiAgICAgICAgIGJhc2UuUG9ydC5fX2luaXRfXyhzZWxmLCAq
Kmt3YXJncykKLSAgICAgICAgaWYgJ29wdGlvbnMnIGluIGt3YXJnczoKLSAgICAgICAgICAgIG9w
dGlvbnMgPSBrd2FyZ3NbJ29wdGlvbnMnXQotICAgICAgICAgICAgaWYgKG9wdGlvbnMgYW5kIChu
b3QgaGFzYXR0cihvcHRpb25zLCAnY29uZmlndXJhdGlvbicpIG9yCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wdGlvbnMuY29uZmlndXJhdGlvbiBpcyBOb25lKSk6Ci0gICAgICAgICAg
ICAgICAgb3B0aW9ucy5jb25maWd1cmF0aW9uID0gc2VsZi5kZWZhdWx0X2NvbmZpZ3VyYXRpb24o
KQogICAgICAgICBzZWxmLl9jaHJvbWl1bV9iYXNlX2RpciA9IE5vbmUKIAogICAgIGRlZiBiYXNl
bGluZV9wYXRoKHNlbGYpOgpAQCAtMTAwLDkgKzk1LDkgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJh
c2UuUG9ydCk6CiAgICAgICAgIGR1bXBfcmVuZGVyX3RyZWVfYmluYXJ5X3BhdGggPSBzZWxmLl9w
YXRoX3RvX2RyaXZlcigpCiAgICAgICAgIHJlc3VsdCA9IGNoZWNrX2ZpbGVfZXhpc3RzKGR1bXBf
cmVuZGVyX3RyZWVfYmluYXJ5X3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndGVzdCBkcml2ZXInKSBhbmQgcmVzdWx0Ci0gICAgICAgIGlmIHJlc3VsdCBhbmQgc2Vs
Zi5fb3B0aW9ucy5idWlsZDoKKyAgICAgICAgaWYgcmVzdWx0IGFuZCBzZWxmLmdldF9vcHRpb24o
J2J1aWxkJyk6CiAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9jaGVja19kcml2ZXJfYnVpbGRf
dXBfdG9fZGF0ZSgKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24p
CisgICAgICAgICAgICAgICAgc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykpCiAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQogCkBAIC0xMTEsNyArMTA2LDcg
QEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICByZXN1bHQgPSBj
aGVja19maWxlX2V4aXN0cyhoZWxwZXJfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdsYXlvdXQgdGVzdCBoZWxwZXInKSBhbmQgcmVzdWx0CiAKLSAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0czoKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9u
KCdwaXhlbF90ZXN0cycpOgogICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5jaGVja19pbWFnZV9k
aWZmKAogICAgICAgICAgICAgICAgICdUbyBvdmVycmlkZSwgaW52b2tlIHdpdGggLS1uby1waXhl
bC10ZXN0cycpIGFuZCByZXN1bHQKIApAQCAtMjAxLDEwICsxOTYsMTEgQEAgY2xhc3MgQ2hyb21p
dW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgZGVmIHJlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgogICAg
ICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFz
ZSgnd2Via2l0JywKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24s
IHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkpCisgICAgICAgICAgICAgICAgc2VsZi5n
ZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksCisgICAgICAgICAgICAgICAgc2VsZi5nZXRfb3B0
aW9uKCdyZXN1bHRzX2RpcmVjdG9yeScpKQogICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6
Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLl9vcHRpb25zLmNvbmZp
Z3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRp
b25zLnJlc3VsdHNfZGlyZWN0b3J5KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3Bh
dGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5JykpCiAK
ICAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZik6CiAgICAgICAgICMgRGVsZXRlIHRoZSBkaXNr
IGNhY2hlIGlmIGFueSB0byBlbnN1cmUgYSBjbGVhbiB0ZXN0IHJ1bi4KQEAgLTI1OCw3ICsyNTQs
NyBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgIyBGSVhNRTogVGhp
cyBkcnRfb3ZlcnJpZGVzIGhhbmRsaW5nIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gd2Ugc3dpdGNo
CiAgICAgICAgICMgZnJvbSB0ZXNfc2hlbGwgdG8gRFJULgogICAgICAgICBkcnRfb3ZlcnJpZGVz
ID0gJycKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucyBhbmQgc2VsZi5fb3B0aW9ucy51c2VfZHJ0
OgorICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGRy
dF9vdmVycmlkZXNfcGF0aCA9IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0
cycsCiAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtJywgJ2Nocm9taXVtJywgJ2RydF9leHBlY3Rh
dGlvbnMudHh0JykKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRydF9vdmVycmlkZXNf
cGF0aCk6CkBAIC0zNDYsOSArMzQyLDkgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6
CiAKICAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgYmluYXJ5X25h
bWUgPSAnaW1hZ2VfZGlmZicKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAg
ICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGJpbmFyeV9u
YW1lID0gJ0ltYWdlRGlmZicKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5f
b3B0aW9ucy5jb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIGJpbmFyeV9uYW1l
KQogCiAKIGNsYXNzIENocm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKQEAgLTM2NSwyNyArMzYx
LDI3IEBAIGNsYXNzIENocm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgaWYgc2Vs
Zi5faW1hZ2VfcGF0aDoKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgiLS1waXhlbC10
ZXN0cz0iICsgc2VsZi5faW1hZ2VfcGF0aCkKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVz
ZV9kcnQ6CisgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAg
ICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLXRlc3Qtc2hlbGwnKQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLWxheW91dC10ZXN0cycpCiAKLSAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy5zdGFydHVwX2RpYWxvZzoKKyAgICAgICAgaWYgc2VsZi5f
cG9ydC5nZXRfb3B0aW9uKCdzdGFydHVwX2RpYWxvZycpOgogICAgICAgICAgICAgZHJpdmVyX2Fy
Z3MuYXBwZW5kKCctLXRlc3RzaGVsbC1zdGFydHVwLWRpYWxvZycpCiAKLSAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy5ncF9mYXVsdF9lcnJvcl9ib3g6CisgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0
X29wdGlvbignZ3BfZmF1bHRfZXJyb3JfYm94Jyk6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5h
cHBlbmQoJy0tZ3AtZmF1bHQtZXJyb3ItYm94JykKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25z
LmFjY2VsZXJhdGVkX2NvbXBvc2l0aW5nOgorICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRp
b24oJ2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nJyk6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5h
cHBlbmQoJy0tZW5hYmxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nJykKIAotICAgICAgICBpZiBz
ZWxmLl9vcHRpb25zLmFjY2VsZXJhdGVkXzJkX2NhbnZhczoKKyAgICAgICAgaWYgc2VsZi5fcG9y
dC5nZXRfb3B0aW9uKCdhY2NlbGVyYXRlZF8yZF9jYW52YXMnKToKICAgICAgICAgICAgIGRyaXZl
cl9hcmdzLmFwcGVuZCgnLS1lbmFibGUtYWNjZWxlcmF0ZWQtMmQtY2FudmFzJykKICAgICAgICAg
cmV0dXJuIGRyaXZlcl9hcmdzCiAKICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgICMgRklY
TUU6IFNob3VsZCBiZSBhbiBlcnJvciB0byBjYWxsIHRoaXMgbWV0aG9kIHR3aWNlLgotICAgICAg
ICBjbWQgPSBzZWxmLl9jb21tYW5kX3dyYXBwZXIoc2VsZi5fb3B0aW9ucy53cmFwcGVyKQorICAg
ICAgICBjbWQgPSBzZWxmLl9jb21tYW5kX3dyYXBwZXIoc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCd3
cmFwcGVyJykpCiAgICAgICAgIGNtZC5hcHBlbmQoc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIo
KSkKICAgICAgICAgY21kICs9IHNlbGYuX2RyaXZlcl9hcmdzKCkKIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVf
dW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX2dwdV91bml0dGVzdC5weQppbmRleCAxZGQzZWFlZDhjYTQyMDlkNjcyMDA4
MTQzNzQxMGU1NzJmNjZmNjk2Li4zZjEzYjkzZjgwNWFiMDgyZTdiZGQ3ZWZlNjg1NzlhODU0NTVl
ODNjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX2dwdV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91bml0dGVzdC5weQpAQCAt
MjYsMTMgKzI2LDkgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBjaHJv
bWl1bV9ncHUKLQogCi1jbGFzcyBNb2NrT3B0aW9ucyhvYmplY3QpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmKToKLSAgICAgICAgc2VsZi5hY2NlbGVyYXRlZF9jb21wb3NpdGluZyA9IE5vbmUKLSAg
ICAgICAgc2VsZi5hY2NlbGVyYXRlZF8yZF9jYW52YXMgPSBOb25lCitmcm9tIHdlYmtpdHB5LnRv
b2wgaW1wb3J0IG1vY2t0b29sCitpbXBvcnQgY2hyb21pdW1fZ3B1CiAKIAogY2xhc3MgQ2hyb21p
dW1HcHVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ3LDcgKzQzLDkgQEAgY2xhc3MgQ2hy
b21pdW1HcHVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBhc3NlcnRPdmVycmlk
ZXNXb3JrZWQoc2VsZiwgcG9ydF9uYW1lKToKICAgICAgICAgIyB0ZXN0IHRoYXQgd2UgZ290IHRo
ZSByaWdodCBwb3J0Ci0gICAgICAgIHBvcnQgPSBjaHJvbWl1bV9ncHUuZ2V0KHBvcnRfbmFtZT1w
b3J0X25hbWUsIG9wdGlvbnM9TW9ja09wdGlvbnMoKSkKKyAgICAgICAgbW9ja19vcHRpb25zID0g
bW9ja3Rvb2wuTW9ja09wdGlvbnMoYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmc9Tm9uZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZWxlcmF0ZWRfMmRfY2Fu
dmFzPU5vbmUpCisgICAgICAgIHBvcnQgPSBjaHJvbWl1bV9ncHUuZ2V0KHBvcnRfbmFtZT1wb3J0
X25hbWUsIG9wdGlvbnM9bW9ja19vcHRpb25zKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9y
dC5fb3B0aW9ucy5hY2NlbGVyYXRlZF9jb21wb3NpdGluZykKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHBvcnQuX29wdGlvbnMuYWNjZWxlcmF0ZWRfMmRfY2FudmFzKQogCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xp
bnV4LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV9saW51eC5weQppbmRleCAxNzY5OTFiN2Y2YTY4ZGY3NzlmNzFkNTExMDQ0MTMyODY5
ZTFlMTg5Li5iMjZhNmI1NzQxNTczZjJiN2U0MzY5MmI4ZDFiM2E2OTFkOGRlZDA3IDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX2xpbnV4LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ2hyb21p
dW1MaW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICBkZWYgY2hlY2tfYnVpbGQo
c2VsZiwgbmVlZHNfaHR0cCk6CiAgICAgICAgIHJlc3VsdCA9IGNocm9taXVtLkNocm9taXVtUG9y
dC5jaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKQogICAgICAgICBpZiBuZWVkc19odHRwOgot
ICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfYXBhY2hlOgorICAgICAgICAgICAgaWYg
c2VsZi5nZXRfb3B0aW9uKCd1c2VfYXBhY2hlJyk6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
c2VsZi5fY2hlY2tfYXBhY2hlX2luc3RhbGwoKSBhbmQgcmVzdWx0CiAgICAgICAgICAgICBlbHNl
OgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2NoZWNrX2xpZ2h0dHBkX2luc3RhbGwo
KSBhbmQgcmVzdWx0CkBAIC04MSw3ICs4MSw3IEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0KGNo
cm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIGJhc2UgPSBzZWxmLnBhdGhfZnJvbV9jaHJv
bWl1bV9iYXNlKCkKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGJhc2Us
ICdzY29uc2J1aWxkJykpOgogICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihiYXNlLCAn
c2NvbnNidWlsZCcsICpjb21wcykKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5q
b2luKGJhc2UsICdvdXQnLCAqY29tcHMpKSBvciBub3Qgc2VsZi5fb3B0aW9ucy51c2VfZHJ0Ogor
ICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oYmFzZSwgJ291dCcsICpjb21w
cykpIG9yIG5vdCBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIHJldHVy
biBvcy5wYXRoLmpvaW4oYmFzZSwgJ291dCcsICpjb21wcykKICAgICAgICAgYmFzZSA9IHNlbGYu
cGF0aF9mcm9tX3dlYmtpdF9iYXNlKCkKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0
aC5qb2luKGJhc2UsICdzY29uc2J1aWxkJykpOgpAQCAtMTQ3LDkgKzE0Nyw5IEBAIGNsYXNzIENo
cm9taXVtTGludXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAKICAgICBkZWYgX3BhdGhf
dG9fZHJpdmVyKHNlbGYsIGNvbmZpZ3VyYXRpb249Tm9uZSk6CiAgICAgICAgIGlmIG5vdCBjb25m
aWd1cmF0aW9uOgotICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYuX29wdGlvbnMuY29u
ZmlndXJhdGlvbgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYuZ2V0X29wdGlvbign
Y29uZmlndXJhdGlvbicpCiAgICAgICAgIGJpbmFyeV9uYW1lID0gJ3Rlc3Rfc2hlbGwnCi0gICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9u
KCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICBiaW5hcnlfbmFtZSA9ICdEdW1wUmVuZGVyVHJlZScK
ICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoY29uZmlndXJhdGlvbiwgYmluYXJ5X25h
bWUpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKaW5kZXggNjQwMTZhYjA0MmNhZThhOGUy
N2JkY2FhYjQ2MWNmNWNhZTNhMmY4MS4uZDFjMzgzYzEzZWMyZjEzYWY1ZmIxZjE1NDA1NzljNGM4
ODlmZGQ2MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKQEAgLTczLDcgKzczLDcgQEAg
Y2xhc3MgQ2hyb21pdW1NYWNQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAKICAgICBkZWYg
ZHJpdmVyX25hbWUoc2VsZik6CiAgICAgICAgICIiIm5hbWUgZm9yIHRoaXMgcG9ydCdzIGVxdWl2
YWxlbnQgb2YgRHVtcFJlbmRlclRyZWUuIiIiCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNl
X2RydDoKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAg
ICByZXR1cm4gIkR1bXBSZW5kZXJUcmVlIgogICAgICAgICByZXR1cm4gIlRlc3RTaGVsbCIKIApA
QCAtMTAwLDcgKzEwMCw3IEBAIGNsYXNzIENocm9taXVtTWFjUG9ydChjaHJvbWl1bS5DaHJvbWl1
bVBvcnQpOgogCiAgICAgZGVmIF9idWlsZF9wYXRoKHNlbGYsICpjb21wcyk6CiAgICAgICAgIHBh
dGggPSBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd4Y29kZWJ1aWxkJywgKmNvbXBzKQot
ICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKSBvciBub3Qgc2VsZi5fb3B0aW9ucy51c2Vf
ZHJ0OgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKSBvciBub3Qgc2VsZi5nZXRfb3B0
aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAgICByZXR1cm4g
c2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ1dlYktpdCcsICdjaHJvbWl1bScsICd4Y29kZWJ1
aWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjb21wcykK
QEAgLTEzOCwxNSArMTM4LDE1IEBAIGNsYXNzIENocm9taXVtTWFjUG9ydChjaHJvbWl1bS5DaHJv
bWl1bVBvcnQpOgogICAgICAgICAjIEZJWE1FOiBtYWtlIHxjb25maWd1cmF0aW9ufCBoYXBweSB3
aXRoIGNhc2Utc2Vuc2l0aXZlIGZpbGUKICAgICAgICAgIyBzeXN0ZW1zLgogICAgICAgICBpZiBu
b3QgY29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLl9vcHRp
b25zLmNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLmdldF9v
cHRpb24oJ2NvbmZpZ3VyYXRpb24nKQogICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChj
b25maWd1cmF0aW9uLCBzZWxmLmRyaXZlcl9uYW1lKCkgKyAnLmFwcCcsCiAgICAgICAgICAgICAn
Q29udGVudHMnLCAnTWFjT1MnLCBzZWxmLmRyaXZlcl9uYW1lKCkpCiAKICAgICBkZWYgX3BhdGhf
dG9faGVscGVyKHNlbGYpOgogICAgICAgICBiaW5hcnlfbmFtZSA9ICdsYXlvdXRfdGVzdF9oZWxw
ZXInCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoKKyAgICAgICAgaWYgc2VsZi5n
ZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICBiaW5hcnlfbmFtZSA9ICdMYXlvdXRU
ZXN0SGVscGVyJwotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLl9vcHRpb25z
LmNvbmZpZ3VyYXRpb24sIGJpbmFyeV9uYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRf
cGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgYmluYXJ5X25hbWUpCiAKICAg
ICBkZWYgX3BhdGhfdG9fd2RpZmYoc2VsZik6CiAgICAgICAgIHJldHVybiAnd2RpZmYnCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQppbmRleCBlMzg1OGYwYzRmYzY3MmIzODli
YzkxODhmOWFkNjA2OGUxMWNlZTY2Li41ZDg3OWIzNTA0OGRlMWI1NjRlMTcxMjg5MTIxY2QyMzc2
YmZiMDIyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKQEAgLTI2LDI0
ICsyNiwyMiBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGNocm9t
aXVtCi1pbXBvcnQgY2hyb21pdW1fbGludXgKLWltcG9ydCBjaHJvbWl1bV9tYWMKLWltcG9ydCBj
aHJvbWl1bV93aW4KK2ltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgU3RyaW5nSU8K
LWltcG9ydCBvcwogCitmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCiBmcm9tIHdl
YmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogCitpbXBvcnQgY2hyb21pdW0KK2lt
cG9ydCBjaHJvbWl1bV9saW51eAoraW1wb3J0IGNocm9taXVtX21hYworaW1wb3J0IGNocm9taXVt
X3dpbgogCiBjbGFzcyBDaHJvbWl1bURyaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAg
ICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBtb2NrX3BvcnQgPSBNb2NrKCkKLSAgICAgICAg
IyBGSVhNRTogVGhlIERyaXZlciBzaG91bGQgbm90IGJlIGdyYWJiaW5nIGF0IHBvcnQuX29wdGlv
bnMhCi0gICAgICAgIG1vY2tfcG9ydC5fb3B0aW9ucyA9IE1vY2soKQotICAgICAgICBtb2NrX3Bv
cnQuX29wdGlvbnMud3JhcHBlciA9ICIiCiAgICAgICAgIHNlbGYuZHJpdmVyID0gY2hyb21pdW0u
Q2hyb21pdW1Ecml2ZXIobW9ja19wb3J0LCBpbWFnZV9wYXRoPU5vbmUsIG9wdGlvbnM9Tm9uZSkK
IAogICAgIGRlZiB0ZXN0X3Rlc3Rfc2hlbGxfY29tbWFuZChzZWxmKToKQEAgLTEwNiwyNSArMTA0
LDE5IEBAIGNsYXNzIENocm9taXVtUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICAgICAgcmV0dXJuICdkZWZhdWx0JwogCiAgICAgZGVmIHRlc3RfcGF0aF90b19pbWFnZV9kaWZm
KHNlbGYpOgotICAgICAgICBjbGFzcyBNb2NrT3B0aW9uczoKLSAgICAgICAgICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKLSAgICAgICAgICAgICAgICBzZWxmLnVzZV9kcnQgPSBUcnVlCi0KLSAgICAg
ICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChvcHRpb25zPU1vY2tPcHRp
b25zKCkpCisgICAgICAgIG1vY2tfb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKHVzZV9k
cnQ9VHJ1ZSkKKyAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChv
cHRpb25zPW1vY2tfb3B0aW9ucykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuX3BhdGhf
dG9faW1hZ2VfZGlmZigpLmVuZHN3aXRoKAogICAgICAgICAgICAgJy9vdXQvZGVmYXVsdC9JbWFn
ZURpZmYnKSwgbXNnPXBvcnQuX3BhdGhfdG9faW1hZ2VfZGlmZigpKQotICAgICAgICBwb3J0ID0g
Q2hyb21pdW1Qb3J0VGVzdC5UZXN0TWFjUG9ydChvcHRpb25zPU1vY2tPcHRpb25zKCkpCisgICAg
ICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RNYWNQb3J0KG9wdGlvbnM9bW9ja19vcHRp
b25zKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKCku
ZW5kc3dpdGgoCiAgICAgICAgICAgICAnL3hjb2RlYnVpbGQvZGVmYXVsdC9JbWFnZURpZmYnKSkK
ICAgICAgICAgIyBGSVhNRTogRmlndXJlIG91dCBob3cgdGhpcyBpcyBnb2luZyB0byB3b3JrIG9u
IFdpbmRvd3MuCiAgICAgICAgICNwb3J0ID0gY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydCgn
dGVzdC1wb3J0Jywgb3B0aW9ucz1Nb2NrT3B0aW9ucygpKQogCiAgICAgZGVmIHRlc3Rfc2tpcHBl
ZF9sYXlvdXRfdGVzdHMoc2VsZik6Ci0gICAgICAgIGNsYXNzIE1vY2tPcHRpb25zOgotICAgICAg
ICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHNlbGYudXNlX2RydCA9
IFRydWUKLQotICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0KG9w
dGlvbnM9TW9ja09wdGlvbnMoKSkKKyAgICAgICAgbW9ja19vcHRpb25zID0gbW9ja3Rvb2wuTW9j
a09wdGlvbnModXNlX2RydD1UcnVlKQorICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5U
ZXN0TGludXhQb3J0KG9wdGlvbnM9bW9ja19vcHRpb25zKQogCiAgICAgICAgIGZha2VfdGVzdCA9
IG9zLnBhdGguam9pbihwb3J0LmxheW91dF90ZXN0c19kaXIoKSwgImZhc3QvanMvbm90LWdvb2Qu
anMiKQogCkBAIC0xMzgsMjIgKzEzMCwxNCBAQCBERUZFUiBMSU5VWCBXSU4gOiBmYXN0L2pzL3Zl
cnktZ29vZC5qcyA9IFRJTUVPVVQgUEFTUyIiIgogICAgICAgICBzZWxmLmFzc2VydFRydWUoImZh
c3QvanMvbm90LWdvb2QuanMiIGluIHNraXBwZWRfdGVzdHMpCiAKICAgICBkZWYgdGVzdF9kZWZh
dWx0X2NvbmZpZ3VyYXRpb24oc2VsZik6Ci0gICAgICAgIGNsYXNzIEVtcHR5T3B0aW9uczoKLSAg
ICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAg
ICAgICAgb3B0aW9ucyA9IEVtcHR5T3B0aW9ucygpCi0gICAgICAgIHBvcnQgPSBDaHJvbWl1bVBv
cnRUZXN0LlRlc3RMaW51eFBvcnQob3B0aW9ucykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
b3B0aW9ucy5jb25maWd1cmF0aW9uLCAnZGVmYXVsdCcpCisgICAgICAgIG1vY2tfb3B0aW9ucyA9
IG1vY2t0b29sLk1vY2tPcHRpb25zKCkKKyAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3Qu
VGVzdExpbnV4UG9ydChvcHRpb25zPW1vY2tfb3B0aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobW9ja19vcHRpb25zLmNvbmZpZ3VyYXRpb24sICdkZWZhdWx0JykKICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHBvcnQuZGVmYXVsdF9jb25maWd1cmF0aW9uX2NhbGxlZCkKIAotICAgICAg
ICBjbGFzcyBPcHRpb25zV2l0aFVuc2V0Q29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgIGRlZiBf
X2luaXRfXyhzZWxmKToKLSAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24gPSBOb25l
Ci0KLSAgICAgICAgb3B0aW9ucyA9IE9wdGlvbnNXaXRoVW5zZXRDb25maWd1cmF0aW9uKCkKLSAg
ICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChvcHRpb25zKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmNvbmZpZ3VyYXRpb24sICdkZWZhdWx0JykK
KyAgICAgICAgbW9ja19vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnMoY29uZmlndXJhdGlv
bj1Ob25lKQorICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0KG1v
Y2tfb3B0aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobW9ja19vcHRpb25zLmNvbmZp
Z3VyYXRpb24sICdkZWZhdWx0JykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuZGVmYXVs
dF9jb25maWd1cmF0aW9uX2NhbGxlZCkKIAogICAgIGRlZiB0ZXN0X2RpZmZfaW1hZ2Uoc2VsZik6
CkBAIC0xNjEsOSArMTQ1LDYgQEAgREVGRVIgTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5LWdvb2Qu
anMgPSBUSU1FT1VUIFBBU1MiIiIKICAgICAgICAgICAgIGRlZiBfcGF0aF90b19pbWFnZV9kaWZm
KHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiAiL3BhdGgvdG8vaW1hZ2VfZGlmZiIKIAot
ICAgICAgICBjbGFzcyBFbXB0eU9wdGlvbnM6Ci0gICAgICAgICAgICB1c2VfZHJ0ID0gRmFsc2UK
LQogICAgICAgICBjbGFzcyBNb2NrRXhlY3V0ZToKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCByZXN1bHQpOgogICAgICAgICAgICAgICAgIHNlbGYuX3Jlc3VsdCA9IHJlc3VsdApAQCAt
MTc4LDggKzE1OSw4IEBAIERFRkVSIExJTlVYIFdJTiA6IGZhc3QvanMvdmVyeS1nb29kLmpzID0g
VElNRU9VVCBQQVNTIiIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX291dHB1
dD1GYWxzZSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jlc3VsdAogCi0gICAgICAg
IG9wdGlvbnMgPSBFbXB0eU9wdGlvbnMoKQotICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVz
dC5UZXN0TGludXhQb3J0KG9wdGlvbnMpCisgICAgICAgIG1vY2tfb3B0aW9ucyA9IG1vY2t0b29s
Lk1vY2tPcHRpb25zKHVzZV9kcnQ9RmFsc2UpCisgICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRU
ZXN0LlRlc3RMaW51eFBvcnQobW9ja19vcHRpb25zKQogCiAgICAgICAgICMgSW1hZ2VzIGFyZSBk
aWZmZXJlbnQuCiAgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRlKDApCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX3dpbi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fd2luLnB5CmluZGV4IDY3ZDJhYjJmMWRjOTA3NGZkYWE2MjdlYzJhNGQw
OWYzM2I4Y2I1NjAuLjY5YjUyOWFlMWI0M2FiNGVkNjYzZTBmNmViNDE2NTdlYTZmYjc0NTggMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fd2luLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CkBAIC01NSw5ICs1NSw3IEBAIGNsYXNzIENocm9t
aXVtV2luUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICAjIHB5dGhvbiBleGVj
dXRhYmxlIHRvIHJ1biBjZ2kgcHJvZ3JhbS4KICAgICAgICAgZW52WyJDWUdXSU5fUEFUSCJdID0g
c2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgKICAgICAgICAgICAgICJ0aGlyZF9wYXJ0eSIs
ICJjeWd3aW4iLCAiYmluIikKLSAgICAgICAgaWYgKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiIGFu
ZCBzZWxmLl9vcHRpb25zIGFuZAotICAgICAgICAgICAgaGFzYXR0cihzZWxmLl9vcHRpb25zLCAi
cmVnaXN0ZXJfY3lnd2luIikgYW5kCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnJlZ2lzdGVy
X2N5Z3dpbik6CisgICAgICAgIGlmIChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiBhbmQgc2VsZi5n
ZXRfb3B0aW9uKCdyZWdpc3Rlcl9jeWd3aW4nKSk6CiAgICAgICAgICAgICBzZXR1cF9tb3VudCA9
IHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoInRoaXJkX3BhcnR5IiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3lnd2luIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2V0
dXBfbW91bnQuYmF0IikKQEAgLTExMyw3ICsxMTEsNyBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQo
Y2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocCk6CiAg
ICAgICAgICAgICByZXR1cm4gcAogICAgICAgICBwID0gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1f
YmFzZSgnY2hyb21lJywgKmNvbXBzKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwKSBvciBu
b3Qgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwKSBv
ciBub3Qgc2VsZi5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICByZXR1cm4gcAog
ICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCks
ICdXZWJLaXQnLCAnY2hyb21pdW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjb21w
cykKQEAgLTE0MSwyMyArMTM5LDIzIEBAIGNsYXNzIENocm9taXVtV2luUG9ydChjaHJvbWl1bS5D
aHJvbWl1bVBvcnQpOgogCiAgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmLCBjb25maWd1cmF0
aW9uPU5vbmUpOgogICAgICAgICBpZiBub3QgY29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb24gPSBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb24gPSBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKQogICAgICAgICBi
aW5hcnlfbmFtZSA9ICd0ZXN0X3NoZWxsLmV4ZScKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51
c2VfZHJ0OgorICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAg
ICAgIGJpbmFyeV9uYW1lID0gJ0R1bXBSZW5kZXJUcmVlLmV4ZScKICAgICAgICAgcmV0dXJuIHNl
bGYuX2J1aWxkX3BhdGgoY29uZmlndXJhdGlvbiwgYmluYXJ5X25hbWUpCiAKICAgICBkZWYgX3Bh
dGhfdG9faGVscGVyKHNlbGYpOgogICAgICAgICBiaW5hcnlfbmFtZSA9ICdsYXlvdXRfdGVzdF9o
ZWxwZXIuZXhlJwotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAgIGlm
IHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgYmluYXJ5X25hbWUgPSAn
TGF5b3V0VGVzdEhlbHBlci5leGUnCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNl
bGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiwgYmluYXJ5X25hbWUpCisgICAgICAgIHJldHVybiBz
ZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCBiaW5hcnlf
bmFtZSkKIAogICAgIGRlZiBfcGF0aF90b19pbWFnZV9kaWZmKHNlbGYpOgogICAgICAgICBiaW5h
cnlfbmFtZSA9ICdpbWFnZV9kaWZmLmV4ZScKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2Vf
ZHJ0OgorICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAg
IGJpbmFyeV9uYW1lID0gJ0ltYWdlRGlmZi5leGUnCi0gICAgICAgIHJldHVybiBzZWxmLl9idWls
ZF9wYXRoKHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiwgYmluYXJ5X25hbWUpCisgICAgICAg
IHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicp
LCBiaW5hcnlfbmFtZSkKIAogICAgIGRlZiBfcGF0aF90b193ZGlmZihzZWxmKToKICAgICAgICAg
cmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dp
bicsICdiaW4nLApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9kcnlydW4ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weQppbmRleCA2NDhjY2FkYWFlNmY0NWY3ZDA2YjJiNWVi
NmNiMWVkZDJmZjU4YjEwLi44YTZhZjU2Yzg0MjBlNDUwYzQxODk3YWZlNTQzZTY2NzA2ZjlhZTc2
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2RyeXJ1bi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2RyeXJ1bi5weQpAQCAtMTAxLDcgKzEwMSw2IEBAIGNsYXNzIERyeXJ1bkRyaXZl
cihiYXNlLkRyaXZlcik6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgaW1hZ2VfcGF0
aCwgb3B0aW9ucywgZXhlY3V0aXZlKToKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKLSAgICAg
ICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5faW1hZ2VfcGF0aCA9IGlt
YWdlX3BhdGgKICAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlCiAgICAgICAgIHNl
bGYuX2xheW91dF90ZXN0c19kaXIgPSBOb25lCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRl
c3QucHkKaW5kZXggODFjMzczMjdhMjA5OTJlZTBjNGMzY2Q5ZTg0ZDMxMWQ2ZWE0NTk4Yi4uOTc4
YTU1N2E1N2IyMGEzYjhiNDBlOTk5OThlMzVhODVlZWUyOTY2ZSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
ZmFjdG9yeV91bml0dGVzdC5weQpAQCAtMjksNiArMjksOCBAQAogaW1wb3J0IHN5cwogaW1wb3J0
IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKKwogaW1wb3J0
IGNocm9taXVtX2dwdQogaW1wb3J0IGNocm9taXVtX2xpbnV4CiBpbXBvcnQgY2hyb21pdW1fbWFj
CkBAIC01MiwyMSArNTQsMTEgQEAgY2xhc3MgRmFjdG9yeVRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICMgRklYTUU6IFRoZSBwb3J0cyB0aGVtc2VsdmVzIHNob3VsZCBleHBvc2Ugd2hhdCBv
cHRpb25zIHRoZXkgcmVxdWlyZSwKICAgICAjIGluc3RlYWQgb2YgcGFzc2luZyBnZW5lcmljICJv
cHRpb25zIi4KIAotICAgIGNsYXNzIFdlYktpdE9wdGlvbnMob2JqZWN0KToKLSAgICAgICAgIiIi
UmVwcmVzZW50cyB0aGUgbWluaW11bSBvcHRpb25zIGZvciBXZWJLaXQgcG9ydC4iIiIKLSAgICAg
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5waXhlbF90ZXN0cyA9IEZh
bHNlCi0KLSAgICBjbGFzcyBDaHJvbWl1bU9wdGlvbnMoV2ViS2l0T3B0aW9ucyk6Ci0gICAgICAg
ICIiIlJlcHJlc2VudHMgbWluaW11bSBvcHRpb25zIGZvciBDaHJvbWl1bSBwb3J0LiIiIgotICAg
ICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICBGYWN0b3J5VGVzdC5XZWJLaXRP
cHRpb25zLl9faW5pdF9fKHNlbGYpCi0gICAgICAgICAgICBzZWxmLmNocm9taXVtID0gVHJ1ZQot
CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnJlYWxfc3lzX3BsYXRmb3JtID0g
c3lzLnBsYXRmb3JtCi0gICAgICAgIHNlbGYud2Via2l0X29wdGlvbnMgPSBGYWN0b3J5VGVzdC5X
ZWJLaXRPcHRpb25zKCkKLSAgICAgICAgc2VsZi5jaHJvbWl1bV9vcHRpb25zID0gRmFjdG9yeVRl
c3QuQ2hyb21pdW1PcHRpb25zKCkKKyAgICAgICAgc2VsZi53ZWJraXRfb3B0aW9ucyA9IG1vY2t0
b29sLk1vY2tPcHRpb25zKHBpeGVsX3Rlc3RzPUZhbHNlKQorICAgICAgICBzZWxmLmNocm9taXVt
X29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucyhwaXhlbF90ZXN0cz1GYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHJvbWl1bT1U
cnVlKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzeXMucGxhdGZvcm0gPSBz
ZWxmLnJlYWxfc3lzX3BsYXRmb3JtCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hY191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CmluZGV4IDMy
N2IxOWVlNWZhNTQ1MDNiNGFmYzI5YjcxZTAwZTc5YmRhNTZmMWIuLmQzODNhNGNkODgzN2U1OWNh
NTRjZGFlOTc5NjFhNGE1NWIxZjQwMDQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CkBA
IC0zNSw3ICszNSw3IEBAIGltcG9ydCBwb3J0X3Rlc3RjYXNlCiAKIAogY2xhc3MgTWFjVGVzdChw
b3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6Ci0gICAgZGVmIG1ha2VfcG9ydChzZWxmLCBvcHRp
b25zPXBvcnRfdGVzdGNhc2UuTW9ja09wdGlvbnMoKSk6CisgICAgZGVmIG1ha2VfcG9ydChzZWxm
LCBvcHRpb25zPXBvcnRfdGVzdGNhc2UubW9ja19vcHRpb25zKToKICAgICAgICAgaWYgc3lzLnBs
YXRmb3JtICE9ICdkYXJ3aW4nOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgcG9y
dF9vYmogPSBtYWMuTWFjUG9ydChvcHRpb25zPW9wdGlvbnMpCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVz
dGNhc2UucHkKaW5kZXggNDc1OTdkNjdjYzI1YTYzOGE5ZjY0NWE3YjVlMGJlMjlkNjU2MTU1Zi4u
MDRhZGE1MDAwZTNiMzUzODJjM2M5NjA5MjJlMjhjNTUzYzNmNDA0ZSAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNl
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
cG9ydF90ZXN0Y2FzZS5weQpAQCAtMzIsMjAgKzMyLDE1IEBAIGltcG9ydCBvcwogaW1wb3J0IHRl
bXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIAotCi1jbGFzcyBNb2NrT3B0aW9ucyhvYmplY3QpOgot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLAotICAgICAgICAgICAgICAgICByZXN1bHRzX2RpcmVjdG9y
eT0nbGF5b3V0LXRlc3QtcmVzdWx0cycsCi0gICAgICAgICAgICAgICAgIHVzZV9hcGFjaGU9VHJ1
ZSwKLSAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj0nUmVsZWFzZScpOgotICAgICAgICBz
ZWxmLnJlc3VsdHNfZGlyZWN0b3J5ID0gcmVzdWx0c19kaXJlY3RvcnkKLSAgICAgICAgc2VsZi51
c2VfYXBhY2hlID0gdXNlX2FwYWNoZQotICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24gPSBjb25m
aWd1cmF0aW9uCitmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCittb2NrX29wdGlv
bnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucyhyZXN1bHRzX2RpcmVjdG9yeT0nbGF5b3V0LXRlc3Qt
cmVzdWx0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfYXBhY2hl
PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9u
PSdSZWxlYXNlJykKIAogCiBjbGFzcyBQb3J0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICIiIlRlc3RzIHRoZSBXZWJLaXQgcG9ydCBpbXBsZW1lbnRhdGlvbi4iIiIKLSAgICBkZWYg
bWFrZV9wb3J0KHNlbGYsIG9wdGlvbnM9TW9ja09wdGlvbnMoKSk6CisgICAgZGVmIG1ha2VfcG9y
dChzZWxmLCBvcHRpb25zPW1vY2tfb3B0aW9ucyk6CiAgICAgICAgICIiIk92ZXJyaWRlIGluIHN1
YmNsYXNzLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKIApkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0
LnB5CmluZGV4IDNiODExNjc5OWFmM2NkNGVlYTZlYjFkZmRiOGRhOTA0Y2Q1Zjk4MDAuLjM2OTFj
NWFhZTlmYzMyMWM5NTE3ODYzNmNkY2QwM2I2OWJkZGQ3M2YgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTIx
NSwxNCArMjE1LDExIEBAIGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAgZGVmIG5hbWUo
c2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCiAKLSAgICBkZWYgb3B0aW9ucyhzZWxm
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX29wdGlvbnMKLQogICAgIGRlZiBfcGF0aF90b193ZGlm
ZihzZWxmKToKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiByZXN1bHRzX2RpcmVjdG9y
eShzZWxmKToKLSAgICAgICAgcmV0dXJuICcvdG1wLycgKyBzZWxmLl9vcHRpb25zLnJlc3VsdHNf
ZGlyZWN0b3J5CisgICAgICAgIHJldHVybiAnL3RtcC8nICsgc2VsZi5nZXRfb3B0aW9uKCdyZXN1
bHRzX2RpcmVjdG9yeScpCiAKICAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZik6CiAgICAgICAg
IHBhc3MKQEAgLTI4NSw3ICsyODIsNiBAQCBjbGFzcyBUZXN0RHJpdmVyKGJhc2UuRHJpdmVyKToK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgaW1hZ2VfcGF0aCwgb3B0aW9ucywgZXhlY3V0
aXZlKToKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi5faW1hZ2VfcGF0
aCA9IGltYWdlX3BhdGgKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAg
c2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlCiAgICAgICAgIHNlbGYuX2ltYWdlX3dyaXR0ZW4g
PSBGYWxzZQogCkBAIC0zMDIsNyArMjk4LDcgQEAgY2xhc3MgVGVzdERyaXZlcihiYXNlLkRyaXZl
cik6CiAgICAgICAgIGlmIHRlc3QuaGFuZzoKICAgICAgICAgICAgIHRpbWUuc2xlZXAoKGZsb2F0
KHRpbWVvdXRtcykgKiA0KSAvIDEwMDAuMCkKIAotICAgICAgICBpZiBzZWxmLl9wb3J0Lm9wdGlv
bnMoKS5waXhlbF90ZXN0cyBhbmQgdGVzdC5hY3R1YWxfaW1hZ2U6CisgICAgICAgIGlmIHNlbGYu
X3BvcnQuZ2V0X29wdGlvbigncGl4ZWxfdGVzdHMnKSBhbmQgdGVzdC5hY3R1YWxfaW1hZ2U6CiAg
ICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5faW1hZ2VfcGF0aCwgJ3cnKSBhcyBmaWxlOgogICAg
ICAgICAgICAgICAgIGZpbGUud3JpdGUodGVzdC5hY3R1YWxfaW1hZ2UpCiAKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQu
cHkKaW5kZXggZWQxOWMwOWM2MmRhY2JlZTdhM2E2OThkNzZhYWEzZDgyY2FlYmI3Yy4uYzk0MGYx
ZTdhMDcwYTYwNzQwZTQ5YmU5ZGE2ZWZiYmFhOWNkNmE5MCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKQEAg
LTY1LDkgKzY1LDcgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgogCiAgICAgICAgICMg
RklYTUU6IGRpc2FibGUgcGl4ZWwgdGVzdHMgdW50aWwgdGhleSBhcmUgcnVuIGJ5IGRlZmF1bHQg
b24gdGhlCiAgICAgICAgICMgYnVpbGQgbWFjaGluZXMuCi0gICAgICAgIGlmIHNlbGYuX29wdGlv
bnMgYW5kIChub3QgaGFzYXR0cihzZWxmLl9vcHRpb25zLCAicGl4ZWxfdGVzdHMiKSBvcgotICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzIGlzIE5vbmUpOgotICAgICAgICAgICAg
c2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cyA9IEZhbHNlCisgICAgICAgIHNlbGYuc2V0X29wdGlv
bl9kZWZhdWx0KCdwaXhlbF90ZXN0cycsIEZhbHNlKQogCiAgICAgZGVmIGJhc2VsaW5lX3BhdGgo
c2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aChzZWxmLl9u
YW1lKQpAQCAtODYsNyArODQsNyBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAgICAg
ZGVmIF9idWlsZF9kcml2ZXIoc2VsZik6CiAgICAgICAgIGV4aXRfY29kZSA9IHNlbGYuX2V4ZWN1
dGl2ZS5ydW5fY29tbWFuZChbCiAgICAgICAgICAgICBzZWxmLnNjcmlwdF9wYXRoKCJidWlsZC1k
dW1wcmVuZGVydHJlZSIpLAotICAgICAgICAgICAgc2VsZi5mbGFnX2Zyb21fY29uZmlndXJhdGlv
bihzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24pLAorICAgICAgICAgICAgc2VsZi5mbGFnX2Zy
b21fY29uZmlndXJhdGlvbihzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSksCiAgICAg
ICAgIF0sIHJldHVybl9leGl0X2NvZGU9VHJ1ZSkKICAgICAgICAgaWYgZXhpdF9jb2RlICE9IDA6
CiAgICAgICAgICAgICBfbG9nLmVycm9yKCJGYWlsZWQgdG8gYnVpbGQgRHVtcFJlbmRlclRyZWUi
KQpAQCAtMTAxLDExICs5OSwxMSBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAgICAg
ICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCk6
Ci0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuYnVpbGQgYW5kIG5vdCBzZWxmLl9idWlsZF9kcml2
ZXIoKToKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCdidWlsZCcpIGFuZCBub3Qgc2VsZi5f
YnVpbGRfZHJpdmVyKCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgbm90
IHNlbGYuX2NoZWNrX2RyaXZlcigpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAg
IGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHM6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlv
bigncGl4ZWxfdGVzdHMnKToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNoZWNrX2ltYWdlX2Rp
ZmYoKToKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgbm90IHNlbGYu
X2NoZWNrX3BvcnRfYnVpbGQoKToKQEAgLTE4NCw3ICsxODIsNyBAQCBjbGFzcyBXZWJLaXRQb3J0
KGJhc2UuUG9ydCk6CiAgICAgZGVmIHJlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICAj
IFJlc3VsdHMgYXJlIHN0b3JlIHJlbGF0aXZlIHRvIHRoZSBidWlsdCBwcm9kdWN0cyB0byBtYWtl
IGl0IGVhc3kKICAgICAgICAgIyB0byBoYXZlIG11bHRpcGxlIGNvcGllcyBvZiB3ZWJraXQgY2hl
Y2tlZCBvdXQgYW5kIGJ1aWx0LgotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxm
Ll9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5KQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRf
cGF0aChzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5JykpCiAKICAgICBkZWYgc2V0
dXBfdGVzdF9ydW4oc2VsZik6CiAgICAgICAgICMgVGhpcyBwb3J0IGRvZXNuJ3QgcmVxdWlyZSBh
bnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4KQEAgLTM2MCw3ICszNTgsNyBAQCBjbGFzcyBXZWJL
aXRQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9jYWNoZWRfYnVpbGRfcm9v
dDoKICAgICAgICAgICAgIHNlbGYuX2NhY2hlZF9idWlsZF9yb290ID0gc2VsZi5fd2Via2l0X2J1
aWxkX2RpcmVjdG9yeShbCiAgICAgICAgICAgICAgICAgIi0tY29uZmlndXJhdGlvbiIsCi0gICAg
ICAgICAgICAgICAgc2VsZi5mbGFnX2Zyb21fY29uZmlndXJhdGlvbihzZWxmLl9vcHRpb25zLmNv
bmZpZ3VyYXRpb24pLAorICAgICAgICAgICAgICAgIHNlbGYuZmxhZ19mcm9tX2NvbmZpZ3VyYXRp
b24oc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykpLAogICAgICAgICAgICAgXSkKICAg
ICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLl9jYWNoZWRfYnVpbGRfcm9vdCwgKmNvbXBz
KQogCkBAIC00MDEsNyArMzk5LDYgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVyKToK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgaW1hZ2VfcGF0aCwgb3B0aW9ucywgZXhlY3V0
aXZlPUV4ZWN1dGl2ZSgpKToKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAgICAgICAgc2Vs
Zi5faW1hZ2VfcGF0aCA9IGltYWdlX3BhdGgKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlv
bnMKICAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlCiAgICAgICAgIHNlbGYuX2Ry
aXZlcl90ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J0R1bXBSZW5kZXJUcmVlLScp
CiAKQEAgLTQxNCwxNyArNDExLDE3IEBAIGNsYXNzIFdlYktpdERyaXZlcihiYXNlLkRyaXZlcik6
CiAgICAgICAgIGlmIHNlbGYuX2ltYWdlX3BhdGg6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5h
cHBlbmQoJy0tcGl4ZWwtdGVzdHMnKQogCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2Ry
dDoKLSAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmc6
CisgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbigndXNlX2RydCcpOgorICAgICAgICAg
ICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdhY2NlbGVyYXRlZF9jb21wb3NpdGluZycpOgog
ICAgICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgnLS1lbmFibGUtYWNjZWxlcmF0ZWQt
Y29tcG9zaXRpbmcnKQogCi0gICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmFjY2VsZXJhdGVk
XzJkX2NhbnZhczoKKyAgICAgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbignYWNjZWxl
cmF0ZWRfMmRfY2FudmFzJyk6CiAgICAgICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCct
LWVuYWJsZS1hY2NlbGVyYXRlZC0yZC1jYW52YXMnKQogCiAgICAgICAgIHJldHVybiBkcml2ZXJf
YXJncwogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBjb21tYW5kID0gc2VsZi5fY29t
bWFuZF93cmFwcGVyKHNlbGYuX29wdGlvbnMud3JhcHBlcikKKyAgICAgICAgY29tbWFuZCA9IHNl
bGYuX2NvbW1hbmRfd3JhcHBlcihzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3dyYXBwZXInKSkKICAg
ICAgICAgY29tbWFuZCArPSBbc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKSwgJy0nXQogICAg
ICAgICBjb21tYW5kICs9IHNlbGYuX2RyaXZlcl9hcmdzKCkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93
ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpp
bmRleCBmY2U2ZTgyY2FlZjgzNWE3MzM5ODA4NGI2OTE0ODAwOGRiMjZhZTY4Li5lZjMzYTQ3NDgx
ZmRlZmQ0NzIyNDZlNmVmMjA5M2YzNTk1MjQ1MzkyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90
ZXN0c191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpAQCAt
MzMsNiArMzMsNyBAQCBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCitm
cm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cyBpbXBvcnQgcG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJlYmFz
ZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCkBAIC00NiwxMiArNDcsNiBA
QCBjbGFzcyBNb2NrUG9ydChvYmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5pbWFnZV9kaWZm
X2V4aXN0cwogCiAKLWNsYXNzIE1vY2tPcHRpb25zKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGNvbmZpZ3VyYXRpb249Tm9uZSwgaHRtbF9kaXJlY3Rvcnk9Tm9uZSk6Ci0gICAgICAg
IHNlbGYuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24KLSAgICAgICAgc2VsZi5odG1sX2Rp
cmVjdG9yeSA9IGh0bWxfZGlyZWN0b3J5Ci0KLQogZGVmIGdldF9tb2NrX2dldChjb25maWdfZXhw
ZWN0YXRpb25zKToKICAgICBkZWYgbW9ja19nZXQocG9ydF9uYW1lLCBvcHRpb25zKToKICAgICAg
ICAgcmV0dXJuIE1vY2tQb3J0KGNvbmZpZ19leHBlY3RhdGlvbnNbb3B0aW9ucy5jb25maWd1cmF0
aW9uXSkKQEAgLTY0LDcgKzU5LDggQEAgY2xhc3MgVGVzdEdldEhvc3RQb3J0T2JqZWN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIyB0aGF0IEltYWdlIGRpZmYgaXMgKG9yIGlzbid0KSBw
cmVzZW50IGluIHRoZSB0d28gY29uZmlncy4KICAgICAgICAgcG9ydC5nZXQgPSBnZXRfbW9ja19n
ZXQoeydSZWxlYXNlJzogcmVsZWFzZV9wcmVzZW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0RlYnVnJzogZGVidWdfcHJlc2VudH0pCi0gICAgICAgIG9wdGlvbnMgPSBNb2Nr
T3B0aW9ucygpCisgICAgICAgIG9wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucyhjb25maWd1
cmF0aW9uPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1s
X2RpcmVjdG9yeT1Ob25lKQogICAgICAgICBwb3J0X29iaiA9IHJlYmFzZWxpbmVfY2hyb21pdW1f
d2Via2l0X3Rlc3RzLmdldF9ob3N0X3BvcnRfb2JqZWN0KAogICAgICAgICAgICAgb3B0aW9ucykK
ICAgICAgICAgaWYgdmFsaWRfcG9ydF9vYmo6CkBAIC05MCw3ICs4Niw4IEBAIGNsYXNzIFRlc3RH
ZXRIb3N0UG9ydE9iamVjdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKIGNsYXNzIFRlc3RSZWJhc2Vs
aW5lcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIG1ha2VfcmViYXNlbGluZXIoc2VsZik6
Ci0gICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucygpCisgICAgICAgIG9wdGlvbnMgPSBtb2Nr
dG9vbC5Nb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPU5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBodG1sX2RpcmVjdG9yeT1Ob25lKQogICAgICAgICBob3N0X3Bv
cnRfb2JqID0gcG9ydC5nZXQoJ3Rlc3QnLCBvcHRpb25zKQogICAgICAgICB0YXJnZXRfb3B0aW9u
cyA9IG9wdGlvbnMKICAgICAgICAgdGFyZ2V0X3BvcnRfb2JqID0gcG9ydC5nZXQoJ3Rlc3QnLCB0
YXJnZXRfb3B0aW9ucykKQEAgLTEyNiw3ICsxMjMsOCBAQCBjbGFzcyBUZXN0SHRtbEdlbmVyYXRv
cih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIG1ha2VfZ2VuZXJhdG9yKHNlbGYsIHRlc3Rz
KToKICAgICAgICAgcmV0dXJuIHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLkh0bWxH
ZW5lcmF0b3IoCiAgICAgICAgICAgICB0YXJnZXRfcG9ydD1Ob25lLAotICAgICAgICAgICAgb3B0
aW9ucz1Nb2NrT3B0aW9ucyhodG1sX2RpcmVjdG9yeT0iL3RtcCIpLAorICAgICAgICAgICAgb3B0
aW9ucz1tb2NrdG9vbC5Nb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPU5vbmUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxfZGlyZWN0b3J5PScvdG1wJyksCiAg
ICAgICAgICAgICBwbGF0Zm9ybXM9WydtYWMnXSwKICAgICAgICAgICAgIHJlYmFzZWxpbmluZ190
ZXN0cz10ZXN0cywKICAgICAgICAgICAgIGV4ZWN1dGl2ZT1FeGVjdXRpdmUoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70936</attachid>
            <date>2010-10-15 18:08:56 -0700</date>
            <delta_ts>2010-10-15 18:52:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47510-20101015180854.patch</filename>
            <type>text/plain</type>
            <size>38231</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwM2I4ZTZhMWUxNjFmMWU3NjI2M2RkOTAzYzIxMDJiNmZjMjA2MmRmLi41OGJhZWE4
NmIxYmFmMzYyMWQ2ZjEwNDAyMmRjYjcwYjZkNGMxOWRhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAK
KzIwMTAtMTAtMTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGNsZWFuIHVwIHRoZSBvcHRpb25zLXBhcnNpbmcgY29kZSBpbiB0aGUgcG9ydAorICAg
ICAgICBjbGFzc2VzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgbW9kaWZpZXMgdGhl
IFBvcnQgaW50ZXJmYWNlIHRvIGhhdmUgYSBnZXRfb3B0aW9uKCkgYW5kCisgICAgICAgIHNldF9v
cHRpb25fZGVmYXVsdCgpIG1ldGhvZCBmb3IgYWNjZXNzaW5nIHRoZSBvcHRpb25zIGFyZ3VtZW50
CisgICAgICAgIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuIElmIHRoZSBjb25zdHJ1Y3RvciBp
cyBub3QgcGFzc2VkIGFuCisgICAgICAgIG9wdGlvbnMgYXJndW1lbnQsIHdlIGRlZmF1bHQgdG8g
YSBNb2NrT3B0aW9ucygpIGFyZ3VtZW50IGZyb20KKyAgICAgICAgbW9ja3Rvb2wsIHdoaWNoIGhh
cyB0aGUgc2FtZSBzZW1hbnRpY3Mgd2Ugd2FudC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlcmUg
aXMgYSBkaXNhZHZhbnRhZ2UgdG8gcG9ydC5nZXRfb3B0aW9uKCdmb28nKSBvdmVyCisgICAgICAg
IHBvcnQuX29wdGlvbnMuZm9vLCB3aGljaCBpcyB0aGF0IHlvdSBsb3NlIHNvbWUgb2YgdGhlIGNo
ZWNraW5nCisgICAgICAgIGZvciB3aGV0aGVyICdmb28nIGlzIHNldCAodHlwb3MgcmVzdWx0IGlu
IHRoZSBkZWZhdWx0IHZhbHVlLCBub3QKKyAgICAgICAgYW4gZXhjZXB0aW9uIGJlaW5nIHJhaXNl
ZC4gVGhpcyBpcyBkZXNpcmVkIGluIHRoaXMgY2FzZSwgc2luY2UgdGhlCisgICAgICAgIFBvcnQg
Y2xhc3MgaXMgbm90IGFsbG93ZWQgdG8gYXNzdW1lIHRoYXQgb3B0aW9ucyBkb2VzIGhhdmUgYW55
CisgICAgICAgIHBhcnRpY3VsYXIgdmFsdWVzIHNldCwgYW5kIHNvIHRoaXMgY2hhbmdlIGVuc3Vy
ZXMgdGhhdCBhbGwgb2YKKyAgICAgICAgdGhlIHN1YmNsYXNzZXMgYXJlIGZvbGxvd2luZyB0aGUg
c2FtZSwgaW50ZW5kZWQsIGxvZ2ljLgorCisgICAgICAgIEFyZ3VhYmx5IHRoaXMgaXMgdGhlIHdy
b25nIHNlbWFudGljcyB0byBoYXZlLCBhbmQgdGhlIFBvcnQKKyAgICAgICAgY2xhc3NlcyBzaG91
bGQgYmUgYWJsZSB0byBhc3N1bWUgYSBkZWZhdWx0IHNldCBvZgorICAgICAgICBhdHRyaWJ1dGVz
L2FyZ3VtZW50cywgYnV0IHRoYXQgY2hhbmdlIHdpbGwgbmVlZCB0byB3YWl0IGZvciBhCisgICAg
ICAgIGRpZmZlcmVudCBDTCB3aGVyZSB3ZSBjYW4gbW9kaWZ5IG5ldy1ydW4td2Via2l0LXRlc3Rz
IHRvIHB1bGwgYQorICAgICAgICBsaXN0IG9mIGFyZ3VtZW50cyBmcm9tIHRoZSBwb3J0IGZhY3Rv
cnkgcm91dGluZXMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ3NTEwCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dp
bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1
bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3Rv
cnlfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9tYWNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9vcHRpb25zLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L29wdGlvbnNfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93
ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisKIDIwMTAtMTAtMTQgIERpcmsgUHJhbmtlICA8ZHBy
YW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkKaW5kZXggYjE1ZWRiMjQ2NDY4YmY4MmRjOTU1MjBlNDNkNDlkYjg4MWJiZThhZS4u
NTY4Y2VkMzA4OGM2ZmZiYTNhYWJjMjZmNTYyMjBlOTNhNTEzNjZkYiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpA
QCAtNDcsNiArNDcsNyBAQCBpbXBvcnQgaHR0cF9zZXJ2ZXIKIGltcG9ydCB0ZXN0X2ZpbGVzCiBp
bXBvcnQgd2Vic29ja2V0X3NlcnZlcgogCitmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0
b29sCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3V0aWxzCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVy
cm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlciBpbXBvcnQgVXNlcgpAQCAtNzAs
NyArNzEsMTMgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
ICoqa3dhcmdzKToKICAgICAgICAgc2VsZi5fbmFtZSA9IGt3YXJncy5nZXQoJ3BvcnRfbmFtZScs
IE5vbmUpCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBrd2FyZ3MuZ2V0KCdvcHRpb25zJywgTm9u
ZSkKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IGt3YXJncy5nZXQoJ29wdGlvbnMnKQorICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zIGlzIE5vbmU6CisgICAgICAgICAgICAjIEZJWE1FOiAxKSBpdCdz
IHdlaXJkIHRoYXQgd2UncmUgdXNpbmcgYSBNb2NrIG9iamVjdCBmb3IKKyAgICAgICAgICAgICMg
dGhpcy4gMikgaWRlYWxseSB3ZSdkIGhhdmUgYSBwYWNrYWdlLXdpZGUgd2F5IHRvIGdldCBhCisg
ICAgICAgICAgICAjIHdlbGwtZm9ybWVkIG9wdGlvbnMgb2JqZWN0IHRoYXQgaGFkIGFsbCBvZiB0
aGUgbmVjZXNzYXJ5CisgICAgICAgICAgICAjIG9wdGlvbnMgZGVmaW5lZCBvbiBpdC4KKyAgICAg
ICAgICAgIHNlbGYuX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucygpCiAgICAgICAgIHNl
bGYuX2V4ZWN1dGl2ZSA9IGt3YXJncy5nZXQoJ2V4ZWN1dGl2ZScsIEV4ZWN1dGl2ZSgpKQogICAg
ICAgICBzZWxmLl91c2VyID0ga3dhcmdzLmdldCgndXNlcicsIFVzZXIoKSkKICAgICAgICAgc2Vs
Zi5faGVscGVyID0gTm9uZQpAQCAtOTcsNiArMTA0LDkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgog
ICAgICAgICBzZWxmLl9wcmV0dHlfcGF0Y2hfcGF0aCA9IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9i
YXNlKCJCdWdzU2l0ZSIsCiAgICAgICAgICAgICAgICJQcmV0dHlQYXRjaCIsICJwcmV0dGlmeS5y
YiIpCiAgICAgICAgIHNlbGYuX3ByZXR0eV9wYXRjaF9hdmFpbGFibGUgPSBUcnVlCisgICAgICAg
IHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0KCdjb25maWd1cmF0aW9uJywgTm9uZSkKKyAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxm
Ll9vcHRpb25zLmNvbmZpZ3VyYXRpb24gPSBzZWxmLmRlZmF1bHRfY29uZmlndXJhdGlvbigpCiAK
ICAgICBkZWYgZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoc2VsZik6CiAgICAgICAgICIiIlJldHVy
biB0aGUgbnVtYmVyIG9mIER1bXBSZW5kZXJUcmVlIGluc3RhbmNlcyB0byB1c2UgZm9yIHRoaXMK
QEAgLTQ0Niw2ICs0NTYsMTggQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBtYXkgYmUg
ZGlmZmVyZW50IChlLmcuLCAnd2luLXhwJyBpbnN0ZWFkIG9mICdjaHJvbWl1bS13aW4teHAnLiIi
IgogICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQogCisgICAgZGVmIGdldF9vcHRpb24oc2VsZiwg
bmFtZSwgZGVmYXVsdF92YWx1ZT1Ob25lKToKKyAgICAgICAgIyBGSVhNRTogZXZlbnR1YWxseSB3
ZSBzaG91bGQgbm90IGhhdmUgdG8gZG8gYSB0ZXN0IGZvcgorICAgICAgICAjIGhhc2F0dHIoKSwg
YW5kIHdlIHNob3VsZCBiZSBhYmxlIHRvIGp1c3QgZG8KKyAgICAgICAgIyBzZWxmLm9wdGlvbnMu
dmFsdWUuIFNlZSBhZGRpdGlvbmFsIEZJWE1FIGluIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAg
aWYgaGFzYXR0cihzZWxmLl9vcHRpb25zLCBuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBzZWxm
Ll9vcHRpb25zLl9fZ2V0YXR0cmlidXRlX18obmFtZSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRf
dmFsdWUKKworICAgIGRlZiBzZXRfb3B0aW9uX2RlZmF1bHQoc2VsZiwgbmFtZSwgZGVmYXVsdF92
YWx1ZSk6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYuX29wdGlvbnMsIG5hbWUpOgorICAg
ICAgICAgICAgc2VsZi5fb3B0aW9ucy5fX3NldGF0dHJfXyhuYW1lLCBkZWZhdWx0X3ZhbHVlKQor
CiAgICAgIyBGSVhNRTogVGhpcyBjb3VsZCBiZSByZXBsYWNlZCBieSBmdW5jdGlvbnMgaW4gd2Vi
a2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS4KICAgICBkZWYgcGF0aF9mcm9tX3dlYmtpdF9iYXNl
KHNlbGYsICpjb21wcyk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byBwYXRo
IG1hZGUgYnkgam9pbmluZyB0aGUgdG9wIG9mIHRoZQpAQCAtNTEwLDEyICs1MzIsMTIgQEAgY2xh
c3MgUG9ydChvYmplY3QpOgogICAgICAgICAiIiJTdGFydCBhIHdlYiBzZXJ2ZXIgaWYgaXQgaXMg
YXZhaWxhYmxlLiBEbyBub3RoaW5nIGlmCiAgICAgICAgIGl0IGlzbid0LiBUaGlzIHJvdXRpbmUg
aXMgYWxsb3dlZCB0byAoYW5kIG1heSkgZmFpbCBpZiBhIHNlcnZlcgogICAgICAgICBpcyBhbHJl
YWR5IHJ1bm5pbmcuIiIiCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2FwYWNoZToKKyAg
ICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd1c2VfYXBhY2hlJyk6CiAgICAgICAgICAgICBzZWxm
Ll9odHRwX3NlcnZlciA9IGFwYWNoZV9odHRwX3NlcnZlci5MYXlvdXRUZXN0QXBhY2hlSHR0cGQo
c2VsZiwKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5KQor
ICAgICAgICAgICAgICAgIHNlbGYuZ2V0X29wdGlvbigncmVzdWx0c19kaXJlY3RvcnknKSkKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX2h0dHBfc2VydmVyID0gaHR0cF9zZXJ2ZXIu
TGlnaHR0cGQoc2VsZiwKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGly
ZWN0b3J5KQorICAgICAgICAgICAgICAgIHNlbGYuZ2V0X29wdGlvbigncmVzdWx0c19kaXJlY3Rv
cnknKSkKICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXIuc3RhcnQoKQogCiAgICAgZGVmIHN0YXJ0
X3dlYnNvY2tldF9zZXJ2ZXIoc2VsZik6CkBAIC01MjMsNyArNTQ1LDcgQEAgY2xhc3MgUG9ydChv
YmplY3QpOgogICAgICAgICBpdCBpc24ndC4gVGhpcyByb3V0aW5lIGlzIGFsbG93ZWQgdG8gKGFu
ZCBtYXkpIGZhaWwgaWYgYSBzZXJ2ZXIKICAgICAgICAgaXMgYWxyZWFkeSBydW5uaW5nLiIiIgog
ICAgICAgICBzZWxmLl93ZWJzb2NrZXRfc2VydmVyID0gd2Vic29ja2V0X3NlcnZlci5QeVdlYlNv
Y2tldChzZWxmLAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSkK
KyAgICAgICAgICAgIHNlbGYuZ2V0X29wdGlvbigncmVzdWx0c19kaXJlY3RvcnknKSkKICAgICAg
ICAgc2VsZi5fd2Vic29ja2V0X3NlcnZlci5zdGFydCgpCiAKICAgICBkZWYgYWNxdWlyZV9odHRw
X2xvY2soc2VsZik6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKaW5kZXggNDBlYjk4NGNi
OTE0YTU5NTA5Njk5MDIwODA5YTNiMGQ2MDIyYTEwYy4uMzhlN2ZlY2NmYjgyZTIwNWZmNWYzNWJh
ZjE1OTA0YTg0MmEyYmM1YSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQpAQCAtMzMs
NiArMzMsNyBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAog
Citmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIHdl
YmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogCkBAIC0yNDYsNiArMjQ3LDM2IEBA
IGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwb3J0LmZpbGVuYW1lX3RvX3VyaSh0ZXN0X2ZpbGUpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIHByZWZpeCArIHBhdGgpCiAKKyAgICBkZWYgdGVzdF9nZXRfb3B0aW9uX19zZXQoc2Vs
Zik6CisgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQob3B0aW9ucz1tb2NrdG9vbC5Nb2NrT3B0aW9u
cyhmb289J2JhcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZ2V0X29wdGlvbign
Zm9vJyksICdiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X29wdGlvbl9fdW5zZXQoc2VsZik6Cisg
ICAgICAgIHBvcnQgPSBiYXNlLlBvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQu
Z2V0X29wdGlvbignZm9vJyksIE5vbmUpCisKKyAgICBkZWYgdGVzdF9nZXRfb3B0aW9uX19kZWZh
dWx0KHNlbGYpOgorICAgICAgICBwb3J0ID0gYmFzZS5Qb3J0KCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwb3J0LmdldF9vcHRpb24oJ2ZvbycsICdiYXInKSwgJ2JhcicpCisKKyAgICBkZWYg
dGVzdF9zZXRfb3B0aW9uX2RlZmF1bHRfX3Vuc2V0KHNlbGYpOgorICAgICAgICBwb3J0ID0gYmFz
ZS5Qb3J0KCkKKyAgICAgICAgcG9ydC5zZXRfb3B0aW9uX2RlZmF1bHQoJ2ZvbycsICdiYXInKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZ2V0X29wdGlvbignZm9vJyksICdiYXInKQor
CisgICAgZGVmIHRlc3Rfc2V0X29wdGlvbl9kZWZhdWx0X19zZXQoc2VsZik6CisgICAgICAgIHBv
cnQgPSBiYXNlLlBvcnQob3B0aW9ucz1tb2NrdG9vbC5Nb2NrT3B0aW9ucyhmb289J2JhcicpKQor
ICAgICAgICAjIFRoaXMgY2FsbCBzaG91bGQgaGF2ZSBubyBlZmZlY3QuCisgICAgICAgIHBvcnQu
c2V0X29wdGlvbl9kZWZhdWx0KCdmb28nLCAnbmV3X2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocG9ydC5nZXRfb3B0aW9uKCdmb28nKSwgJ2JhcicpCisKKyAgICBkZWYgdGVzdF9uYW1l
X191bnNldChzZWxmKToKKyAgICAgICAgcG9ydCA9IGJhc2UuUG9ydCgpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocG9ydC5uYW1lKCksIE5vbmUpCisKKyAgICBkZWYgdGVzdF9uYW1lX19zZXQo
c2VsZik6CisgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQocG9ydF9uYW1lPSdmb28nKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBvcnQubmFtZSgpLCAnZm9vJykKIAogCiBjbGFzcyBWaXJ0dWFs
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQppbmRleCAwZmFlNjJm
M2EyMzFlNjBkZDY2NDk5MmU3NWQwZDE4ZDM1YTNhYzI2Li5hM2ZmZWI3M2JlMjhkY2VmMDU1Mjk3
NDgzMGQ0MjlhMTk0Y2VkZDdlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKQEAgLTg0LDExICs4NCw2
IEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogCiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsICoqa3dhcmdzKToKICAgICAgICAgYmFzZS5Qb3J0Ll9faW5pdF9fKHNlbGYsICoqa3dhcmdz
KQotICAgICAgICBpZiAnb3B0aW9ucycgaW4ga3dhcmdzOgotICAgICAgICAgICAgb3B0aW9ucyA9
IGt3YXJnc1snb3B0aW9ucyddCi0gICAgICAgICAgICBpZiAob3B0aW9ucyBhbmQgKG5vdCBoYXNh
dHRyKG9wdGlvbnMsICdjb25maWd1cmF0aW9uJykgb3IKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9ucy5jb25maWd1cmF0aW9uIGlzIE5vbmUpKToKLSAgICAgICAgICAgICAgICBv
cHRpb25zLmNvbmZpZ3VyYXRpb24gPSBzZWxmLmRlZmF1bHRfY29uZmlndXJhdGlvbigpCiAgICAg
ICAgIHNlbGYuX2Nocm9taXVtX2Jhc2VfZGlyID0gTm9uZQogCiAgICAgZGVmIGJhc2VsaW5lX3Bh
dGgoc2VsZik6CkBAIC0xMDAsOSArOTUsOSBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0
KToKICAgICAgICAgZHVtcF9yZW5kZXJfdHJlZV9iaW5hcnlfcGF0aCA9IHNlbGYuX3BhdGhfdG9f
ZHJpdmVyKCkKICAgICAgICAgcmVzdWx0ID0gY2hlY2tfZmlsZV9leGlzdHMoZHVtcF9yZW5kZXJf
dHJlZV9iaW5hcnlfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0
ZXN0IGRyaXZlcicpIGFuZCByZXN1bHQKLSAgICAgICAgaWYgcmVzdWx0IGFuZCBzZWxmLl9vcHRp
b25zLmJ1aWxkOgorICAgICAgICBpZiByZXN1bHQgYW5kIHNlbGYuZ2V0X29wdGlvbignYnVpbGQn
KToKICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2NoZWNrX2RyaXZlcl9idWlsZF91cF90b19k
YXRlKAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbikKKyAgICAg
ICAgICAgICAgICBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSkKICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCiAKQEAgLTExMSw3ICsxMDYsNyBAQCBjbGFz
cyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgIHJlc3VsdCA9IGNoZWNrX2Zp
bGVfZXhpc3RzKGhlbHBlcl9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2xheW91dCB0ZXN0IGhlbHBlcicpIGFuZCByZXN1bHQKIAotICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLnBpeGVsX3Rlc3RzOgorICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3BpeGVs
X3Rlc3RzJyk6CiAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmNoZWNrX2ltYWdlX2RpZmYoCiAg
ICAgICAgICAgICAgICAgJ1RvIG92ZXJyaWRlLCBpbnZva2Ugd2l0aCAtLW5vLXBpeGVsLXRlc3Rz
JykgYW5kIHJlc3VsdAogCkBAIC0yMDEsMTAgKzE5NiwxMSBAQCBjbGFzcyBDaHJvbWl1bVBvcnQo
YmFzZS5Qb3J0KToKICAgICBkZWYgcmVzdWx0c19kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIHRy
eToKICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd3ZWJr
aXQnLAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiwgc2VsZi5f
b3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICBzZWxmLmdldF9vcHRp
b24oJ2NvbmZpZ3VyYXRpb24nKSwKKyAgICAgICAgICAgICAgICBzZWxmLmdldF9vcHRpb24oJ3Jl
c3VsdHNfZGlyZWN0b3J5JykpCiAgICAgICAgIGV4Y2VwdCBBc3NlcnRpb25FcnJvcjoKLSAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMucmVz
dWx0c19kaXJlY3RvcnkpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxm
LmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuZ2V0X29wdGlvbigncmVzdWx0c19kaXJlY3RvcnknKSkKIAogICAgIGRl
ZiBzZXR1cF90ZXN0X3J1bihzZWxmKToKICAgICAgICAgIyBEZWxldGUgdGhlIGRpc2sgY2FjaGUg
aWYgYW55IHRvIGVuc3VyZSBhIGNsZWFuIHRlc3QgcnVuLgpAQCAtMjU4LDcgKzI1NCw3IEBAIGNs
YXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICAgICAjIEZJWE1FOiBUaGlzIGRydF9v
dmVycmlkZXMgaGFuZGxpbmcgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiB3ZSBzd2l0Y2gKICAgICAg
ICAgIyBmcm9tIHRlc19zaGVsbCB0byBEUlQuCiAgICAgICAgIGRydF9vdmVycmlkZXMgPSAnJwot
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zIGFuZCBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAg
ICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgZHJ0X292ZXJy
aWRlc19wYXRoID0gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ0xheW91dFRlc3RzJywKICAg
ICAgICAgICAgICAgICAncGxhdGZvcm0nLCAnY2hyb21pdW0nLCAnZHJ0X2V4cGVjdGF0aW9ucy50
eHQnKQogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZHJ0X292ZXJyaWRlc19wYXRoKToK
QEAgLTM0Niw5ICszNDIsOSBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKIAogICAg
IGRlZiBfcGF0aF90b19pbWFnZV9kaWZmKHNlbGYpOgogICAgICAgICBiaW5hcnlfbmFtZSA9ICdp
bWFnZV9kaWZmJwotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAgIGlm
IHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgYmluYXJ5X25hbWUgPSAn
SW1hZ2VEaWZmJwotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLl9vcHRpb25z
LmNvbmZpZ3VyYXRpb24sIGJpbmFyeV9uYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRf
cGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgYmluYXJ5X25hbWUpCiAKIAog
Y2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgpAQCAtMzY1LDI3ICszNjEsMjcgQEAg
Y2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICBpZiBzZWxmLl9pbWFn
ZV9wYXRoOgogICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCItLXBpeGVsLXRlc3RzPSIg
KyBzZWxmLl9pbWFnZV9wYXRoKQogCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoK
KyAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAg
ICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tdGVzdC1zaGVsbCcpCiAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tbGF5b3V0LXRlc3RzJykKIAotICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLnN0YXJ0dXBfZGlhbG9nOgorICAgICAgICBpZiBzZWxmLl9wb3J0Lmdl
dF9vcHRpb24oJ3N0YXJ0dXBfZGlhbG9nJyk6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBl
bmQoJy0tdGVzdHNoZWxsLXN0YXJ0dXAtZGlhbG9nJykKIAotICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLmdwX2ZhdWx0X2Vycm9yX2JveDoKKyAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9u
KCdncF9mYXVsdF9lcnJvcl9ib3gnKToKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgn
LS1ncC1mYXVsdC1lcnJvci1ib3gnKQogCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuYWNjZWxl
cmF0ZWRfY29tcG9zaXRpbmc6CisgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbignYWNj
ZWxlcmF0ZWRfY29tcG9zaXRpbmcnKToKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgn
LS1lbmFibGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmcnKQogCi0gICAgICAgIGlmIHNlbGYuX29w
dGlvbnMuYWNjZWxlcmF0ZWRfMmRfY2FudmFzOgorICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9v
cHRpb24oJ2FjY2VsZXJhdGVkXzJkX2NhbnZhcycpOgogICAgICAgICAgICAgZHJpdmVyX2FyZ3Mu
YXBwZW5kKCctLWVuYWJsZS1hY2NlbGVyYXRlZC0yZC1jYW52YXMnKQogICAgICAgICByZXR1cm4g
ZHJpdmVyX2FyZ3MKIAogICAgIGRlZiBzdGFydChzZWxmKToKICAgICAgICAgIyBGSVhNRTogU2hv
dWxkIGJlIGFuIGVycm9yIHRvIGNhbGwgdGhpcyBtZXRob2QgdHdpY2UuCi0gICAgICAgIGNtZCA9
IHNlbGYuX2NvbW1hbmRfd3JhcHBlcihzZWxmLl9vcHRpb25zLndyYXBwZXIpCisgICAgICAgIGNt
ZCA9IHNlbGYuX2NvbW1hbmRfd3JhcHBlcihzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3dyYXBwZXIn
KSkKICAgICAgICAgY21kLmFwcGVuZChzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigpKQogICAg
ICAgICBjbWQgKz0gc2VsZi5fZHJpdmVyX2FyZ3MoKQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91bml0dGVz
dC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fZ3B1X3VuaXR0ZXN0LnB5CmluZGV4IDFkZDNlYWVkOGNhNDIwOWQ2NzIwMDgxNDM3NDEw
ZTU3MmY2NmY2OTYuLjNmMTNiOTNmODA1YWIwODJlN2JkZDdlZmU2ODU3OWE4NTQ1NWU4M2MgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5CkBAIC0yNiwxMyAr
MjYsOSBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGNocm9taXVtX2dw
dQotCiAKLWNsYXNzIE1vY2tPcHRpb25zKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYp
OgotICAgICAgICBzZWxmLmFjY2VsZXJhdGVkX2NvbXBvc2l0aW5nID0gTm9uZQotICAgICAgICBz
ZWxmLmFjY2VsZXJhdGVkXzJkX2NhbnZhcyA9IE5vbmUKK2Zyb20gd2Via2l0cHkudG9vbCBpbXBv
cnQgbW9ja3Rvb2wKK2ltcG9ydCBjaHJvbWl1bV9ncHUKIAogCiBjbGFzcyBDaHJvbWl1bUdwdVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDcsNyArNDMsOSBAQCBjbGFzcyBDaHJvbWl1bUdw
dVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIGFzc2VydE92ZXJyaWRlc1dvcmtl
ZChzZWxmLCBwb3J0X25hbWUpOgogICAgICAgICAjIHRlc3QgdGhhdCB3ZSBnb3QgdGhlIHJpZ2h0
IHBvcnQKLSAgICAgICAgcG9ydCA9IGNocm9taXVtX2dwdS5nZXQocG9ydF9uYW1lPXBvcnRfbmFt
ZSwgb3B0aW9ucz1Nb2NrT3B0aW9ucygpKQorICAgICAgICBtb2NrX29wdGlvbnMgPSBtb2NrdG9v
bC5Nb2NrT3B0aW9ucyhhY2NlbGVyYXRlZF9jb21wb3NpdGluZz1Ob25lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlbGVyYXRlZF8yZF9jYW52YXM9Tm9u
ZSkKKyAgICAgICAgcG9ydCA9IGNocm9taXVtX2dwdS5nZXQocG9ydF9uYW1lPXBvcnRfbmFtZSwg
b3B0aW9ucz1tb2NrX29wdGlvbnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Ll9vcHRp
b25zLmFjY2VsZXJhdGVkX2NvbXBvc2l0aW5nKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9y
dC5fb3B0aW9ucy5hY2NlbGVyYXRlZF8yZF9jYW52YXMpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2xpbnV4LnB5CmluZGV4IDE3Njk5MWI3ZjZhNjhkZjc3OWY3MWQ1MTEwNDQxMzI4NjllMWUxODku
LmIyNmE2YjU3NDE1NzNmMmI3ZTQzNjkyYjhkMWIzYTY5MWQ4ZGVkMDcgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGlu
dXgucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV9saW51eC5weQpAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBDaHJvbWl1bUxpbnV4
UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgIGRlZiBjaGVja19idWlsZChzZWxmLCBu
ZWVkc19odHRwKToKICAgICAgICAgcmVzdWx0ID0gY2hyb21pdW0uQ2hyb21pdW1Qb3J0LmNoZWNr
X2J1aWxkKHNlbGYsIG5lZWRzX2h0dHApCiAgICAgICAgIGlmIG5lZWRzX2h0dHA6Ci0gICAgICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9hcGFjaGU6CisgICAgICAgICAgICBpZiBzZWxmLmdl
dF9vcHRpb24oJ3VzZV9hcGFjaGUnKToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9j
aGVja19hcGFjaGVfaW5zdGFsbCgpIGFuZCByZXN1bHQKICAgICAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fY2hlY2tfbGlnaHR0cGRfaW5zdGFsbCgpIGFuZCBy
ZXN1bHQKQEAgLTgxLDcgKzgxLDcgQEAgY2xhc3MgQ2hyb21pdW1MaW51eFBvcnQoY2hyb21pdW0u
Q2hyb21pdW1Qb3J0KToKICAgICAgICAgYmFzZSA9IHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jh
c2UoKQogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oYmFzZSwgJ3Njb25z
YnVpbGQnKSk6CiAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKGJhc2UsICdzY29uc2J1
aWxkJywgKmNvbXBzKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oYmFz
ZSwgJ291dCcsICpjb21wcykpIG9yIG5vdCBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAg
IGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihiYXNlLCAnb3V0JywgKmNvbXBzKSkgb3Ig
bm90IHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgcmV0dXJuIG9zLnBh
dGguam9pbihiYXNlLCAnb3V0JywgKmNvbXBzKQogICAgICAgICBiYXNlID0gc2VsZi5wYXRoX2Zy
b21fd2Via2l0X2Jhc2UoKQogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4o
YmFzZSwgJ3Njb25zYnVpbGQnKSk6CkBAIC0xNDcsOSArMTQ3LDkgQEAgY2xhc3MgQ2hyb21pdW1M
aW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKIAogICAgIGRlZiBfcGF0aF90b19kcml2
ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lKToKICAgICAgICAgaWYgbm90IGNvbmZpZ3VyYXRp
b246Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0
aW9uCisgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1
cmF0aW9uJykKICAgICAgICAgYmluYXJ5X25hbWUgPSAndGVzdF9zaGVsbCcKLSAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9k
cnQnKToKICAgICAgICAgICAgIGJpbmFyeV9uYW1lID0gJ0R1bXBSZW5kZXJUcmVlJwogICAgICAg
ICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChjb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKIApk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV9tYWMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weQppbmRleCA2NDAxNmFiMDQyY2FlOGE4ZTI3YmRjYWFi
NDYxY2Y1Y2FlM2EyZjgxLi5kMWMzODNjMTNlYzJmMTNhZjVmYjFmMTU0MDU3OWM0Yzg4OWZkZDYz
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX21hYy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weQpAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBD
aHJvbWl1bU1hY1BvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKIAogICAgIGRlZiBkcml2ZXJf
bmFtZShzZWxmKToKICAgICAgICAgIiIibmFtZSBmb3IgdGhpcyBwb3J0J3MgZXF1aXZhbGVudCBv
ZiBEdW1wUmVuZGVyVHJlZS4iIiIKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0Ogor
ICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIHJldHVy
biAiRHVtcFJlbmRlclRyZWUiCiAgICAgICAgIHJldHVybiAiVGVzdFNoZWxsIgogCkBAIC0xMDAs
NyArMTAwLDcgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6
CiAKICAgICBkZWYgX2J1aWxkX3BhdGgoc2VsZiwgKmNvbXBzKToKICAgICAgICAgcGF0aCA9IHNl
bGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3hjb2RlYnVpbGQnLCAqY29tcHMpCi0gICAgICAg
IGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpIG9yIG5vdCBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6Cisg
ICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpIG9yIG5vdCBzZWxmLmdldF9vcHRpb24oJ3Vz
ZV9kcnQnKToKICAgICAgICAgICAgIHJldHVybiBwYXRoCiAgICAgICAgIHJldHVybiBzZWxmLnBh
dGhfZnJvbV93ZWJraXRfYmFzZSgnV2ViS2l0JywgJ2Nocm9taXVtJywgJ3hjb2RlYnVpbGQnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNvbXBzKQpAQCAtMTM4
LDE1ICsxMzgsMTUgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0KGNocm9taXVtLkNocm9taXVtUG9y
dCk6CiAgICAgICAgICMgRklYTUU6IG1ha2UgfGNvbmZpZ3VyYXRpb258IGhhcHB5IHdpdGggY2Fz
ZS1zZW5zaXRpdmUgZmlsZQogICAgICAgICAjIHN5c3RlbXMuCiAgICAgICAgIGlmIG5vdCBjb25m
aWd1cmF0aW9uOgotICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYuX29wdGlvbnMuY29u
ZmlndXJhdGlvbgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYuZ2V0X29wdGlvbign
Y29uZmlndXJhdGlvbicpCiAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKGNvbmZpZ3Vy
YXRpb24sIHNlbGYuZHJpdmVyX25hbWUoKSArICcuYXBwJywKICAgICAgICAgICAgICdDb250ZW50
cycsICdNYWNPUycsIHNlbGYuZHJpdmVyX25hbWUoKSkKIAogICAgIGRlZiBfcGF0aF90b19oZWxw
ZXIoc2VsZik6CiAgICAgICAgIGJpbmFyeV9uYW1lID0gJ2xheW91dF90ZXN0X2hlbHBlcicKLSAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBzZWxmLmdldF9vcHRp
b24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGJpbmFyeV9uYW1lID0gJ0xheW91dFRlc3RIZWxw
ZXInCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuX29wdGlvbnMuY29uZmln
dXJhdGlvbiwgYmluYXJ5X25hbWUpCisgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNl
bGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCBiaW5hcnlfbmFtZSkKIAogICAgIGRlZiBf
cGF0aF90b193ZGlmZihzZWxmKToKICAgICAgICAgcmV0dXJuICd3ZGlmZicKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
dW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CmluZGV4IGUzODU4ZjBjNGZjNjcyYjM4OWJjOTE4OGY5
YWQ2MDY4ZTExY2VlNjYuLjVkODc5YjM1MDQ4ZGUxYjU2NGUxNzEyODkxMjFjZDIzNzZiZmIwMjIg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQpAQCAtMjYsMjQgKzI2LDIy
IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgY2hyb21pdW0KLWlt
cG9ydCBjaHJvbWl1bV9saW51eAotaW1wb3J0IGNocm9taXVtX21hYwotaW1wb3J0IGNocm9taXVt
X3dpbgoraW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBTdHJpbmdJTwotaW1wb3J0
IG9zCiAKK2Zyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKIGZyb20gd2Via2l0cHku
dGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiAKK2ltcG9ydCBjaHJvbWl1bQoraW1wb3J0IGNo
cm9taXVtX2xpbnV4CitpbXBvcnQgY2hyb21pdW1fbWFjCitpbXBvcnQgY2hyb21pdW1fd2luCiAK
IGNsYXNzIENocm9taXVtRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYg
c2V0VXAoc2VsZik6CiAgICAgICAgIG1vY2tfcG9ydCA9IE1vY2soKQotICAgICAgICAjIEZJWE1F
OiBUaGUgRHJpdmVyIHNob3VsZCBub3QgYmUgZ3JhYmJpbmcgYXQgcG9ydC5fb3B0aW9ucyEKLSAg
ICAgICAgbW9ja19wb3J0Ll9vcHRpb25zID0gTW9jaygpCi0gICAgICAgIG1vY2tfcG9ydC5fb3B0
aW9ucy53cmFwcGVyID0gIiIKICAgICAgICAgc2VsZi5kcml2ZXIgPSBjaHJvbWl1bS5DaHJvbWl1
bURyaXZlcihtb2NrX3BvcnQsIGltYWdlX3BhdGg9Tm9uZSwgb3B0aW9ucz1Ob25lKQogCiAgICAg
ZGVmIHRlc3RfdGVzdF9zaGVsbF9jb21tYW5kKHNlbGYpOgpAQCAtMTA2LDI1ICsxMDQsMTkgQEAg
Y2xhc3MgQ2hyb21pdW1Qb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBy
ZXR1cm4gJ2RlZmF1bHQnCiAKICAgICBkZWYgdGVzdF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6
Ci0gICAgICAgIGNsYXNzIE1vY2tPcHRpb25zOgotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNl
bGYpOgotICAgICAgICAgICAgICAgIHNlbGYudXNlX2RydCA9IFRydWUKLQotICAgICAgICBwb3J0
ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0KG9wdGlvbnM9TW9ja09wdGlvbnMoKSkK
KyAgICAgICAgbW9ja19vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnModXNlX2RydD1UcnVl
KQorICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0KG9wdGlvbnM9
bW9ja19vcHRpb25zKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5fcGF0aF90b19pbWFn
ZV9kaWZmKCkuZW5kc3dpdGgoCiAgICAgICAgICAgICAnL291dC9kZWZhdWx0L0ltYWdlRGlmZicp
LCBtc2c9cG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKCkpCi0gICAgICAgIHBvcnQgPSBDaHJvbWl1
bVBvcnRUZXN0LlRlc3RNYWNQb3J0KG9wdGlvbnM9TW9ja09wdGlvbnMoKSkKKyAgICAgICAgcG9y
dCA9IENocm9taXVtUG9ydFRlc3QuVGVzdE1hY1BvcnQob3B0aW9ucz1tb2NrX29wdGlvbnMpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Ll9wYXRoX3RvX2ltYWdlX2RpZmYoKS5lbmRzd2l0
aCgKICAgICAgICAgICAgICcveGNvZGVidWlsZC9kZWZhdWx0L0ltYWdlRGlmZicpKQogICAgICAg
ICAjIEZJWE1FOiBGaWd1cmUgb3V0IGhvdyB0aGlzIGlzIGdvaW5nIHRvIHdvcmsgb24gV2luZG93
cy4KICAgICAgICAgI3BvcnQgPSBjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0KCd0ZXN0LXBv
cnQnLCBvcHRpb25zPU1vY2tPcHRpb25zKCkpCiAKICAgICBkZWYgdGVzdF9za2lwcGVkX2xheW91
dF90ZXN0cyhzZWxmKToKLSAgICAgICAgY2xhc3MgTW9ja09wdGlvbnM6Ci0gICAgICAgICAgICBk
ZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICAgICAgc2VsZi51c2VfZHJ0ID0gVHJ1ZQot
Ci0gICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQob3B0aW9ucz1N
b2NrT3B0aW9ucygpKQorICAgICAgICBtb2NrX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9u
cyh1c2VfZHJ0PVRydWUpCisgICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51
eFBvcnQob3B0aW9ucz1tb2NrX29wdGlvbnMpCiAKICAgICAgICAgZmFrZV90ZXN0ID0gb3MucGF0
aC5qb2luKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCAiZmFzdC9qcy9ub3QtZ29vZC5qcyIpCiAK
QEAgLTEzOCwyMiArMTMwLDE0IEBAIERFRkVSIExJTlVYIFdJTiA6IGZhc3QvanMvdmVyeS1nb29k
LmpzID0gVElNRU9VVCBQQVNTIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiZmFzdC9qcy9u
b3QtZ29vZC5qcyIgaW4gc2tpcHBlZF90ZXN0cykKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRfY29u
ZmlndXJhdGlvbihzZWxmKToKLSAgICAgICAgY2xhc3MgRW1wdHlPcHRpb25zOgotICAgICAgICAg
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBv
cHRpb25zID0gRW1wdHlPcHRpb25zKCkKLSAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3Qu
VGVzdExpbnV4UG9ydChvcHRpb25zKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25z
LmNvbmZpZ3VyYXRpb24sICdkZWZhdWx0JykKKyAgICAgICAgbW9ja19vcHRpb25zID0gbW9ja3Rv
b2wuTW9ja09wdGlvbnMoKQorICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGlu
dXhQb3J0KG9wdGlvbnM9bW9ja19vcHRpb25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyht
b2NrX29wdGlvbnMuY29uZmlndXJhdGlvbiwgJ2RlZmF1bHQnKQogICAgICAgICBzZWxmLmFzc2Vy
dFRydWUocG9ydC5kZWZhdWx0X2NvbmZpZ3VyYXRpb25fY2FsbGVkKQogCi0gICAgICAgIGNsYXNz
IE9wdGlvbnNXaXRoVW5zZXRDb25maWd1cmF0aW9uOgotICAgICAgICAgICAgZGVmIF9faW5pdF9f
KHNlbGYpOgotICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbiA9IE5vbmUKLQotICAg
ICAgICBvcHRpb25zID0gT3B0aW9uc1dpdGhVbnNldENvbmZpZ3VyYXRpb24oKQotICAgICAgICBw
b3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0KG9wdGlvbnMpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuY29uZmlndXJhdGlvbiwgJ2RlZmF1bHQnKQorICAgICAg
ICBtb2NrX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPU5vbmUp
CisgICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQobW9ja19vcHRp
b25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtb2NrX29wdGlvbnMuY29uZmlndXJhdGlv
biwgJ2RlZmF1bHQnKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5kZWZhdWx0X2NvbmZp
Z3VyYXRpb25fY2FsbGVkKQogCiAgICAgZGVmIHRlc3RfZGlmZl9pbWFnZShzZWxmKToKQEAgLTE2
MSw5ICsxNDUsNiBAQCBERUZFUiBMSU5VWCBXSU4gOiBmYXN0L2pzL3ZlcnktZ29vZC5qcyA9IFRJ
TUVPVVQgUEFTUyIiIgogICAgICAgICAgICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6
CiAgICAgICAgICAgICAgICAgcmV0dXJuICIvcGF0aC90by9pbWFnZV9kaWZmIgogCi0gICAgICAg
IGNsYXNzIEVtcHR5T3B0aW9uczoKLSAgICAgICAgICAgIHVzZV9kcnQgPSBGYWxzZQotCiAgICAg
ICAgIGNsYXNzIE1vY2tFeGVjdXRlOgogICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJl
c3VsdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fcmVzdWx0ID0gcmVzdWx0CkBAIC0xNzgsOCAr
MTU5LDggQEAgREVGRVIgTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5LWdvb2QuanMgPSBUSU1FT1VU
IFBBU1MiIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfb3V0cHV0PUZhbHNl
KToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVzdWx0CiAKLSAgICAgICAgb3B0aW9u
cyA9IEVtcHR5T3B0aW9ucygpCi0gICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RM
aW51eFBvcnQob3B0aW9ucykKKyAgICAgICAgbW9ja19vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09w
dGlvbnModXNlX2RydD1GYWxzZSkKKyAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVz
dExpbnV4UG9ydChtb2NrX29wdGlvbnMpCiAKICAgICAgICAgIyBJbWFnZXMgYXJlIGRpZmZlcmVu
dC4KICAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGUoMCkKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
d2luLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV93aW4ucHkKaW5kZXggNjdkMmFiMmYxZGM5MDc0ZmRhYTYyN2VjMmE0ZDA5ZjMzYjhj
YjU2MC4uNjliNTI5YWUxYjQzYWI0ZWQ2NjNlMGY2ZWI0MTY1N2VhNmZiNzQ1OCAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV93aW4ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV93aW4ucHkKQEAgLTU1LDkgKzU1LDcgQEAgY2xhc3MgQ2hyb21pdW1XaW5Q
b3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgICMgcHl0aG9uIGV4ZWN1dGFibGUg
dG8gcnVuIGNnaSBwcm9ncmFtLgogICAgICAgICBlbnZbIkNZR1dJTl9QQVRIIl0gPSBzZWxmLnBh
dGhfZnJvbV9jaHJvbWl1bV9iYXNlKAogICAgICAgICAgICAgInRoaXJkX3BhcnR5IiwgImN5Z3dp
biIsICJiaW4iKQotICAgICAgICBpZiAoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgYW5kIHNlbGYu
X29wdGlvbnMgYW5kCi0gICAgICAgICAgICBoYXNhdHRyKHNlbGYuX29wdGlvbnMsICJyZWdpc3Rl
cl9jeWd3aW4iKSBhbmQKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMucmVnaXN0ZXJfY3lnd2lu
KToKKyAgICAgICAgaWYgKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiIGFuZCBzZWxmLmdldF9vcHRp
b24oJ3JlZ2lzdGVyX2N5Z3dpbicpKToKICAgICAgICAgICAgIHNldHVwX21vdW50ID0gc2VsZi5w
YXRoX2Zyb21fY2hyb21pdW1fYmFzZSgidGhpcmRfcGFydHkiLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjeWd3aW4iLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXR1cF9tb3Vu
dC5iYXQiKQpAQCAtMTEzLDcgKzExMSw3IEBAIGNsYXNzIENocm9taXVtV2luUG9ydChjaHJvbWl1
bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwKToKICAgICAgICAg
ICAgIHJldHVybiBwCiAgICAgICAgIHAgPSBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCdj
aHJvbWUnLCAqY29tcHMpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHApIG9yIG5vdCBzZWxm
Ll9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHApIG9yIG5vdCBz
ZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIHJldHVybiBwCiAgICAgICAg
IHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoKSwgJ1dlYktp
dCcsICdjaHJvbWl1bScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNvbXBzKQpAQCAt
MTQxLDIzICsxMzksMjMgQEAgY2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9taXVtLkNocm9taXVt
UG9ydCk6CiAKICAgICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYsIGNvbmZpZ3VyYXRpb249Tm9u
ZSk6CiAgICAgICAgIGlmIG5vdCBjb25maWd1cmF0aW9uOgotICAgICAgICAgICAgY29uZmlndXJh
dGlvbiA9IHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbgorICAgICAgICAgICAgY29uZmlndXJh
dGlvbiA9IHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpCiAgICAgICAgIGJpbmFyeV9u
YW1lID0gJ3Rlc3Rfc2hlbGwuZXhlJwotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6
CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgYmlu
YXJ5X25hbWUgPSAnRHVtcFJlbmRlclRyZWUuZXhlJwogICAgICAgICByZXR1cm4gc2VsZi5fYnVp
bGRfcGF0aChjb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKIAogICAgIGRlZiBfcGF0aF90b19o
ZWxwZXIoc2VsZik6CiAgICAgICAgIGJpbmFyeV9uYW1lID0gJ2xheW91dF90ZXN0X2hlbHBlci5l
eGUnCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoKKyAgICAgICAgaWYgc2VsZi5n
ZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICBiaW5hcnlfbmFtZSA9ICdMYXlvdXRU
ZXN0SGVscGVyLmV4ZScKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5fb3B0
aW9ucy5jb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1
aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIGJpbmFyeV9uYW1lKQog
CiAgICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6CiAgICAgICAgIGJpbmFyeV9uYW1l
ID0gJ2ltYWdlX2RpZmYuZXhlJwotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6Cisg
ICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgYmluYXJ5
X25hbWUgPSAnSW1hZ2VEaWZmLmV4ZScKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgo
c2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIGJpbmFy
eV9uYW1lKQogCiAgICAgZGVmIF9wYXRoX3RvX3dkaWZmKHNlbGYpOgogICAgICAgICByZXR1cm4g
c2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgndGhpcmRfcGFydHknLCAnY3lnd2luJywgJ2Jp
bicsCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2RyeXJ1bi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZHJ5cnVuLnB5CmluZGV4IDY0OGNjYWRhYWU2ZjQ1ZjdkMDZiMmI1ZWI2Y2IxZWRk
MmZmNThiMTAuLjhhNmFmNTZjODQyMGU0NTBjNDE4OTdhZmU1NDNlNjY3MDZmOWFlNzYgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5
cnVuLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZHJ5cnVuLnB5CkBAIC0xMDEsNyArMTAxLDYgQEAgY2xhc3MgRHJ5cnVuRHJpdmVyKGJhc2Uu
RHJpdmVyKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBpbWFnZV9wYXRoLCBvcHRp
b25zLCBleGVjdXRpdmUpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAotICAgICAgICBzZWxm
Ll9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLl9pbWFnZV9wYXRoID0gaW1hZ2VfcGF0
aAogICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBleGVjdXRpdmUKICAgICAgICAgc2VsZi5fbGF5
b3V0X3Rlc3RzX2RpciA9IE5vbmUKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQpp
bmRleCA4MWMzNzMyN2EyMDk5MmVlMGM0YzNjZDllODRkMzExZDZlYTQ1OThiLi45NzhhNTU3YTU3
YjIwYTNiOGI0MGU5OTk5OGUzNWE4NWVlZTI5NjZlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5
X3VuaXR0ZXN0LnB5CkBAIC0yOSw2ICsyOSw4IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRl
c3QKIAorZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBtb2NrdG9vbAorCiBpbXBvcnQgY2hyb21p
dW1fZ3B1CiBpbXBvcnQgY2hyb21pdW1fbGludXgKIGltcG9ydCBjaHJvbWl1bV9tYWMKQEAgLTUy
LDIxICs1NCwxMSBAQCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
IyBGSVhNRTogVGhlIHBvcnRzIHRoZW1zZWx2ZXMgc2hvdWxkIGV4cG9zZSB3aGF0IG9wdGlvbnMg
dGhleSByZXF1aXJlLAogICAgICMgaW5zdGVhZCBvZiBwYXNzaW5nIGdlbmVyaWMgIm9wdGlvbnMi
LgogCi0gICAgY2xhc3MgV2ViS2l0T3B0aW9ucyhvYmplY3QpOgotICAgICAgICAiIiJSZXByZXNl
bnRzIHRoZSBtaW5pbXVtIG9wdGlvbnMgZm9yIFdlYktpdCBwb3J0LiIiIgotICAgICAgICBkZWYg
X19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnBpeGVsX3Rlc3RzID0gRmFsc2UKLQot
ICAgIGNsYXNzIENocm9taXVtT3B0aW9ucyhXZWJLaXRPcHRpb25zKToKLSAgICAgICAgIiIiUmVw
cmVzZW50cyBtaW5pbXVtIG9wdGlvbnMgZm9yIENocm9taXVtIHBvcnQuIiIiCi0gICAgICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgICAgIEZhY3RvcnlUZXN0LldlYktpdE9wdGlvbnMu
X19pbml0X18oc2VsZikKLSAgICAgICAgICAgIHNlbGYuY2hyb21pdW0gPSBUcnVlCi0KICAgICBk
ZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYucmVhbF9zeXNfcGxhdGZvcm0gPSBzeXMucGxh
dGZvcm0KLSAgICAgICAgc2VsZi53ZWJraXRfb3B0aW9ucyA9IEZhY3RvcnlUZXN0LldlYktpdE9w
dGlvbnMoKQotICAgICAgICBzZWxmLmNocm9taXVtX29wdGlvbnMgPSBGYWN0b3J5VGVzdC5DaHJv
bWl1bU9wdGlvbnMoKQorICAgICAgICBzZWxmLndlYmtpdF9vcHRpb25zID0gbW9ja3Rvb2wuTW9j
a09wdGlvbnMocGl4ZWxfdGVzdHM9RmFsc2UpCisgICAgICAgIHNlbGYuY2hyb21pdW1fb3B0aW9u
cyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKHBpeGVsX3Rlc3RzPUZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNocm9taXVtPVRydWUpCiAK
ICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9IHNlbGYucmVh
bF9zeXNfcGxhdGZvcm0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKaW5kZXggMzI3YjE5ZWU1
ZmE1NDUwM2I0YWZjMjliNzFlMDBlNzliZGE1NmYxYi4uZDM4M2E0Y2Q4ODM3ZTU5Y2E1NGNkYWU5
Nzk2MWE0YTU1YjFmNDAwNCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKQEAgLTM1LDcg
KzM1LDcgQEAgaW1wb3J0IHBvcnRfdGVzdGNhc2UKIAogCiBjbGFzcyBNYWNUZXN0KHBvcnRfdGVz
dGNhc2UuUG9ydFRlc3RDYXNlKToKLSAgICBkZWYgbWFrZV9wb3J0KHNlbGYsIG9wdGlvbnM9cG9y
dF90ZXN0Y2FzZS5Nb2NrT3B0aW9ucygpKToKKyAgICBkZWYgbWFrZV9wb3J0KHNlbGYsIG9wdGlv
bnM9cG9ydF90ZXN0Y2FzZS5tb2NrX29wdGlvbnMpOgogICAgICAgICBpZiBzeXMucGxhdGZvcm0g
IT0gJ2Rhcndpbic6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBwb3J0X29iaiA9
IG1hYy5NYWNQb3J0KG9wdGlvbnM9b3B0aW9ucykKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5w
eQppbmRleCA0NzU5N2Q2N2NjMjVhNjM4YTlmNjQ1YTdiNWUwYmUyOWQ2NTYxNTVmLi4wNGFkYTUw
MDBlM2IzNTM4MmMzYzk2MDkyMmUyOGM1NTNjM2Y0MDRlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rl
c3RjYXNlLnB5CkBAIC0zMiwyMCArMzIsMTUgQEAgaW1wb3J0IG9zCiBpbXBvcnQgdGVtcGZpbGUK
IGltcG9ydCB1bml0dGVzdAogCi0KLWNsYXNzIE1vY2tPcHRpb25zKG9iamVjdCk6Ci0gICAgZGVm
IF9faW5pdF9fKHNlbGYsCi0gICAgICAgICAgICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5PSdsYXlv
dXQtdGVzdC1yZXN1bHRzJywKLSAgICAgICAgICAgICAgICAgdXNlX2FwYWNoZT1UcnVlLAotICAg
ICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPSdSZWxlYXNlJyk6Ci0gICAgICAgIHNlbGYucmVz
dWx0c19kaXJlY3RvcnkgPSByZXN1bHRzX2RpcmVjdG9yeQotICAgICAgICBzZWxmLnVzZV9hcGFj
aGUgPSB1c2VfYXBhY2hlCi0gICAgICAgIHNlbGYuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRp
b24KK2Zyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKK21vY2tfb3B0aW9ucyA9IG1v
Y2t0b29sLk1vY2tPcHRpb25zKHJlc3VsdHNfZGlyZWN0b3J5PSdsYXlvdXQtdGVzdC1yZXN1bHRz
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9hcGFjaGU9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249J1JlbGVh
c2UnKQogCiAKIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIi
VGVzdHMgdGhlIFdlYktpdCBwb3J0IGltcGxlbWVudGF0aW9uLiIiIgotICAgIGRlZiBtYWtlX3Bv
cnQoc2VsZiwgb3B0aW9ucz1Nb2NrT3B0aW9ucygpKToKKyAgICBkZWYgbWFrZV9wb3J0KHNlbGYs
IG9wdGlvbnM9bW9ja19vcHRpb25zKToKICAgICAgICAgIiIiT3ZlcnJpZGUgaW4gc3ViY2xhc3Mu
IiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5k
ZXggM2I4MTE2Nzk5YWYzY2Q0ZWVhNmViMWRmZGI4ZGE5MDRjZDVmOTgwMC4uMzY5MWM1YWFlOWZj
MzIxYzk1MTc4NjM2Y2RjZDAzYjY5YmRkZDczZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtMjE1LDE0ICsy
MTUsMTEgQEAgY2xhc3MgVGVzdFBvcnQoYmFzZS5Qb3J0KToKICAgICBkZWYgbmFtZShzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKIAotICAgIGRlZiBvcHRpb25zKHNlbGYpOgotICAg
ICAgICByZXR1cm4gc2VsZi5fb3B0aW9ucwotCiAgICAgZGVmIF9wYXRoX3RvX3dkaWZmKHNlbGYp
OgogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIHJlc3VsdHNfZGlyZWN0b3J5KHNlbGYp
OgotICAgICAgICByZXR1cm4gJy90bXAvJyArIHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3Rv
cnkKKyAgICAgICAgcmV0dXJuICcvdG1wLycgKyBzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGly
ZWN0b3J5JykKIAogICAgIGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmKToKICAgICAgICAgcGFzcwpA
QCAtMjg1LDcgKzI4Miw2IEBAIGNsYXNzIFRlc3REcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBpbWFnZV9wYXRoLCBvcHRpb25zLCBleGVjdXRpdmUpOgog
ICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAogICAgICAgICBzZWxmLl9pbWFnZV9wYXRoID0gaW1h
Z2VfcGF0aAotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLl9l
eGVjdXRpdmUgPSBleGVjdXRpdmUKICAgICAgICAgc2VsZi5faW1hZ2Vfd3JpdHRlbiA9IEZhbHNl
CiAKQEAgLTMwMiw3ICsyOTgsNyBAQCBjbGFzcyBUZXN0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAg
ICAgICAgaWYgdGVzdC5oYW5nOgogICAgICAgICAgICAgdGltZS5zbGVlcCgoZmxvYXQodGltZW91
dG1zKSAqIDQpIC8gMTAwMC4wKQogCi0gICAgICAgIGlmIHNlbGYuX3BvcnQub3B0aW9ucygpLnBp
eGVsX3Rlc3RzIGFuZCB0ZXN0LmFjdHVhbF9pbWFnZToKKyAgICAgICAgaWYgc2VsZi5fcG9ydC5n
ZXRfb3B0aW9uKCdwaXhlbF90ZXN0cycpIGFuZCB0ZXN0LmFjdHVhbF9pbWFnZToKICAgICAgICAg
ICAgIHdpdGggb3BlbihzZWxmLl9pbWFnZV9wYXRoLCAndycpIGFzIGZpbGU6CiAgICAgICAgICAg
ICAgICAgZmlsZS53cml0ZSh0ZXN0LmFjdHVhbF9pbWFnZSkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRl
eCBlZDE5YzA5YzYyZGFjYmVlN2EzYTY5OGQ3NmFhYTNkODJjYWViYjdjLi5jOTQwZjFlN2EwNzBh
NjA3NDBlNDliZTlkYTZlZmJiYWE5Y2Q2YTkwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtNjUsOSAr
NjUsNyBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAKICAgICAgICAgIyBGSVhNRTog
ZGlzYWJsZSBwaXhlbCB0ZXN0cyB1bnRpbCB0aGV5IGFyZSBydW4gYnkgZGVmYXVsdCBvbiB0aGUK
ICAgICAgICAgIyBidWlsZCBtYWNoaW5lcy4KLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucyBhbmQg
KG5vdCBoYXNhdHRyKHNlbGYuX29wdGlvbnMsICJwaXhlbF90ZXN0cyIpIG9yCi0gICAgICAgICAg
IHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgaXMgTm9uZSk6Ci0gICAgICAgICAgICBzZWxmLl9v
cHRpb25zLnBpeGVsX3Rlc3RzID0gRmFsc2UKKyAgICAgICAgc2VsZi5zZXRfb3B0aW9uX2RlZmF1
bHQoJ3BpeGVsX3Rlc3RzJywgRmFsc2UpCiAKICAgICBkZWYgYmFzZWxpbmVfcGF0aChzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHNlbGYuX25hbWUpCkBA
IC04Niw3ICs4NCw3IEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKICAgICBkZWYgX2J1
aWxkX2RyaXZlcihzZWxmKToKICAgICAgICAgZXhpdF9jb2RlID0gc2VsZi5fZXhlY3V0aXZlLnJ1
bl9jb21tYW5kKFsKICAgICAgICAgICAgIHNlbGYuc2NyaXB0X3BhdGgoImJ1aWxkLWR1bXByZW5k
ZXJ0cmVlIiksCi0gICAgICAgICAgICBzZWxmLmZsYWdfZnJvbV9jb25maWd1cmF0aW9uKHNlbGYu
X29wdGlvbnMuY29uZmlndXJhdGlvbiksCisgICAgICAgICAgICBzZWxmLmZsYWdfZnJvbV9jb25m
aWd1cmF0aW9uKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpKSwKICAgICAgICAgXSwg
cmV0dXJuX2V4aXRfY29kZT1UcnVlKQogICAgICAgICBpZiBleGl0X2NvZGUgIT0gMDoKICAgICAg
ICAgICAgIF9sb2cuZXJyb3IoIkZhaWxlZCB0byBidWlsZCBEdW1wUmVuZGVyVHJlZSIpCkBAIC0x
MDEsMTEgKzk5LDExIEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgcmV0
dXJuIFRydWUKIAogICAgIGRlZiBjaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKToKLSAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy5idWlsZCBhbmQgbm90IHNlbGYuX2J1aWxkX2RyaXZlcigpOgor
ICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ2J1aWxkJykgYW5kIG5vdCBzZWxmLl9idWlsZF9k
cml2ZXIoKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBub3Qgc2VsZi5f
Y2hlY2tfZHJpdmVyKCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy5waXhlbF90ZXN0czoKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCdwaXhl
bF90ZXN0cycpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuY2hlY2tfaW1hZ2VfZGlmZigpOgog
ICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBub3Qgc2VsZi5fY2hlY2tf
cG9ydF9idWlsZCgpOgpAQCAtMTg0LDcgKzE4Miw3IEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Q
b3J0KToKICAgICBkZWYgcmVzdWx0c19kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgICMgUmVzdWx0
cyBhcmUgc3RvcmUgcmVsYXRpdmUgdG8gdGhlIGJ1aWx0IHByb2R1Y3RzIHRvIG1ha2UgaXQgZWFz
eQogICAgICAgICAjIHRvIGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIHdlYmtpdCBjaGVja2VkIG91
dCBhbmQgYnVpbHQuCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuX29wdGlv
bnMucmVzdWx0c19kaXJlY3RvcnkpCisgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNl
bGYuZ2V0X29wdGlvbigncmVzdWx0c19kaXJlY3RvcnknKSkKIAogICAgIGRlZiBzZXR1cF90ZXN0
X3J1bihzZWxmKToKICAgICAgICAgIyBUaGlzIHBvcnQgZG9lc24ndCByZXF1aXJlIGFueSBzcGVj
aWZpYyBjb25maWd1cmF0aW9uLgpAQCAtMzYwLDcgKzM1OCw3IEBAIGNsYXNzIFdlYktpdFBvcnQo
YmFzZS5Qb3J0KToKICAgICAgICAgaWYgbm90IHNlbGYuX2NhY2hlZF9idWlsZF9yb290OgogICAg
ICAgICAgICAgc2VsZi5fY2FjaGVkX2J1aWxkX3Jvb3QgPSBzZWxmLl93ZWJraXRfYnVpbGRfZGly
ZWN0b3J5KFsKICAgICAgICAgICAgICAgICAiLS1jb25maWd1cmF0aW9uIiwKLSAgICAgICAgICAg
ICAgICBzZWxmLmZsYWdfZnJvbV9jb25maWd1cmF0aW9uKHNlbGYuX29wdGlvbnMuY29uZmlndXJh
dGlvbiksCisgICAgICAgICAgICAgICAgc2VsZi5mbGFnX2Zyb21fY29uZmlndXJhdGlvbihzZWxm
LmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSksCiAgICAgICAgICAgICBdKQogICAgICAgICBy
ZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuX2NhY2hlZF9idWlsZF9yb290LCAqY29tcHMpCiAKQEAg
LTQwMSw3ICszOTksNiBAQCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBpbWFnZV9wYXRoLCBvcHRpb25zLCBleGVjdXRpdmU9RXhl
Y3V0aXZlKCkpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAogICAgICAgICBzZWxmLl9pbWFn
ZV9wYXRoID0gaW1hZ2VfcGF0aAotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAg
ICAgICBzZWxmLl9leGVjdXRpdmUgPSBleGVjdXRpdmUKICAgICAgICAgc2VsZi5fZHJpdmVyX3Rl
bXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nRHVtcFJlbmRlclRyZWUtJykKIApAQCAt
NDE0LDE3ICs0MTEsMTcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAg
ICAgaWYgc2VsZi5faW1hZ2VfcGF0aDoKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgn
LS1waXhlbC10ZXN0cycpCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgotICAg
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5hY2NlbGVyYXRlZF9jb21wb3NpdGluZzoKKyAgICAg
ICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CisgICAgICAgICAgICBpZiBz
ZWxmLl9wb3J0LmdldF9vcHRpb24oJ2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nJyk6CiAgICAgICAg
ICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLWVuYWJsZS1hY2NlbGVyYXRlZC1jb21wb3Np
dGluZycpCiAKLSAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuYWNjZWxlcmF0ZWRfMmRfY2Fu
dmFzOgorICAgICAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdhY2NlbGVyYXRlZF8y
ZF9jYW52YXMnKToKICAgICAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tZW5hYmxl
LWFjY2VsZXJhdGVkLTJkLWNhbnZhcycpCiAKICAgICAgICAgcmV0dXJuIGRyaXZlcl9hcmdzCiAK
ICAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIGNvbW1hbmQgPSBzZWxmLl9jb21tYW5kX3dy
YXBwZXIoc2VsZi5fb3B0aW9ucy53cmFwcGVyKQorICAgICAgICBjb21tYW5kID0gc2VsZi5fY29t
bWFuZF93cmFwcGVyKHNlbGYuX3BvcnQuZ2V0X29wdGlvbignd3JhcHBlcicpKQogICAgICAgICBj
b21tYW5kICs9IFtzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigpLCAnLSddCiAgICAgICAgIGNv
bW1hbmQgKz0gc2VsZi5fZHJpdmVyX2FyZ3MoKQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90
ZXN0c191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IGZj
ZTZlODJjYWVmODM1YTczMzk4MDg0YjY5MTQ4MDA4ZGIyNmFlNjguLmVmMzNhNDc0ODFmZGVmZDQ3
MjI0NmU2ZWYyMDkzZjM1OTUyNDUzOTIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3Vu
aXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0zMyw2ICsz
Myw3IEBAIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Vi
a2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGlt
cG9ydCBwb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcmViYXNlbGluZV9j
aHJvbWl1bV93ZWJraXRfdGVzdHMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRp
dmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKQEAgLTQ2LDEyICs0Nyw2IEBAIGNsYXNz
IE1vY2tQb3J0KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLmltYWdlX2RpZmZfZXhpc3Rz
CiAKIAotY2xhc3MgTW9ja09wdGlvbnMob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
Y29uZmlndXJhdGlvbj1Ob25lLCBodG1sX2RpcmVjdG9yeT1Ob25lKToKLSAgICAgICAgc2VsZi5j
b25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbgotICAgICAgICBzZWxmLmh0bWxfZGlyZWN0b3J5
ID0gaHRtbF9kaXJlY3RvcnkKLQotCiBkZWYgZ2V0X21vY2tfZ2V0KGNvbmZpZ19leHBlY3RhdGlv
bnMpOgogICAgIGRlZiBtb2NrX2dldChwb3J0X25hbWUsIG9wdGlvbnMpOgogICAgICAgICByZXR1
cm4gTW9ja1BvcnQoY29uZmlnX2V4cGVjdGF0aW9uc1tvcHRpb25zLmNvbmZpZ3VyYXRpb25dKQpA
QCAtNjQsNyArNTksOCBAQCBjbGFzcyBUZXN0R2V0SG9zdFBvcnRPYmplY3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICAjIHRoYXQgSW1hZ2UgZGlmZiBpcyAob3IgaXNuJ3QpIHByZXNlbnQg
aW4gdGhlIHR3byBjb25maWdzLgogICAgICAgICBwb3J0LmdldCA9IGdldF9tb2NrX2dldCh7J1Jl
bGVhc2UnOiByZWxlYXNlX3ByZXNlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnRGVidWcnOiBkZWJ1Z19wcmVzZW50fSkKLSAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25z
KCkKKyAgICAgICAgb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxfZGlyZWN0
b3J5PU5vbmUpCiAgICAgICAgIHBvcnRfb2JqID0gcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRf
dGVzdHMuZ2V0X2hvc3RfcG9ydF9vYmplY3QoCiAgICAgICAgICAgICBvcHRpb25zKQogICAgICAg
ICBpZiB2YWxpZF9wb3J0X29iajoKQEAgLTkwLDcgKzg2LDggQEAgY2xhc3MgVGVzdEdldEhvc3RQ
b3J0T2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogY2xhc3MgVGVzdFJlYmFzZWxpbmVyKHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgbWFrZV9yZWJhc2VsaW5lcihzZWxmKToKLSAgICAg
ICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKCkKKyAgICAgICAgb3B0aW9ucyA9IG1vY2t0b29sLk1v
Y2tPcHRpb25zKGNvbmZpZ3VyYXRpb249Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGh0bWxfZGlyZWN0b3J5PU5vbmUpCiAgICAgICAgIGhvc3RfcG9ydF9vYmog
PSBwb3J0LmdldCgndGVzdCcsIG9wdGlvbnMpCiAgICAgICAgIHRhcmdldF9vcHRpb25zID0gb3B0
aW9ucwogICAgICAgICB0YXJnZXRfcG9ydF9vYmogPSBwb3J0LmdldCgndGVzdCcsIHRhcmdldF9v
cHRpb25zKQpAQCAtMTI2LDcgKzEyMyw4IEBAIGNsYXNzIFRlc3RIdG1sR2VuZXJhdG9yKHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgbWFrZV9nZW5lcmF0b3Ioc2VsZiwgdGVzdHMpOgogICAg
ICAgICByZXR1cm4gcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMuSHRtbEdlbmVyYXRv
cigKICAgICAgICAgICAgIHRhcmdldF9wb3J0PU5vbmUsCi0gICAgICAgICAgICBvcHRpb25zPU1v
Y2tPcHRpb25zKGh0bWxfZGlyZWN0b3J5PSIvdG1wIiksCisgICAgICAgICAgICBvcHRpb25zPW1v
Y2t0b29sLk1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249Tm9uZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaHRtbF9kaXJlY3Rvcnk9Jy90bXAnKSwKICAgICAgICAg
ICAgIHBsYXRmb3Jtcz1bJ21hYyddLAogICAgICAgICAgICAgcmViYXNlbGluaW5nX3Rlc3RzPXRl
c3RzLAogICAgICAgICAgICAgZXhlY3V0aXZlPUV4ZWN1dGl2ZSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70943</attachid>
            <date>2010-10-15 18:52:56 -0700</date>
            <delta_ts>2010-10-15 19:03:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47510-20101015185255.patch</filename>
            <type>text/plain</type>
            <size>38628</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBmNDQ4NmJkYzkyMDUyNjBiYjIzNDJhYjk5NTBlMGE1OWVkM2UwNDMzLi5jNjA4ZWFh
YjljY2JlNDBjNDkwZWJhNjFjZWNlYjNkOTE1NWQ0Yzg4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAK
KzIwMTAtMTAtMTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGNsZWFuIHVwIHRoZSBvcHRpb25zLXBhcnNpbmcgY29kZSBpbiB0aGUgcG9ydAorICAg
ICAgICBjbGFzc2VzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgbW9kaWZpZXMgdGhl
IFBvcnQgaW50ZXJmYWNlIHRvIGhhdmUgYSBnZXRfb3B0aW9uKCkgYW5kCisgICAgICAgIHNldF9v
cHRpb25fZGVmYXVsdCgpIG1ldGhvZCBmb3IgYWNjZXNzaW5nIHRoZSBvcHRpb25zIGFyZ3VtZW50
CisgICAgICAgIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuIElmIHRoZSBjb25zdHJ1Y3RvciBp
cyBub3QgcGFzc2VkIGFuCisgICAgICAgIG9wdGlvbnMgYXJndW1lbnQsIHdlIGRlZmF1bHQgdG8g
YSBNb2NrT3B0aW9ucygpIGFyZ3VtZW50IGZyb20KKyAgICAgICAgbW9ja3Rvb2wsIHdoaWNoIGhh
cyB0aGUgc2FtZSBzZW1hbnRpY3Mgd2Ugd2FudC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlcmUg
aXMgYSBkaXNhZHZhbnRhZ2UgdG8gcG9ydC5nZXRfb3B0aW9uKCdmb28nKSBvdmVyCisgICAgICAg
IHBvcnQuX29wdGlvbnMuZm9vLCB3aGljaCBpcyB0aGF0IHlvdSBsb3NlIHNvbWUgb2YgdGhlIGNo
ZWNraW5nCisgICAgICAgIGZvciB3aGV0aGVyICdmb28nIGlzIHNldCAodHlwb3MgcmVzdWx0IGlu
IHRoZSBkZWZhdWx0IHZhbHVlLCBub3QKKyAgICAgICAgYW4gZXhjZXB0aW9uIGJlaW5nIHJhaXNl
ZC4gVGhpcyBpcyBkZXNpcmVkIGluIHRoaXMgY2FzZSwgc2luY2UgdGhlCisgICAgICAgIFBvcnQg
Y2xhc3MgaXMgbm90IGFsbG93ZWQgdG8gYXNzdW1lIHRoYXQgb3B0aW9ucyBkb2VzIGhhdmUgYW55
CisgICAgICAgIHBhcnRpY3VsYXIgdmFsdWVzIHNldCwgYW5kIHNvIHRoaXMgY2hhbmdlIGVuc3Vy
ZXMgdGhhdCBhbGwgb2YKKyAgICAgICAgdGhlIHN1YmNsYXNzZXMgYXJlIGZvbGxvd2luZyB0aGUg
c2FtZSwgaW50ZW5kZWQsIGxvZ2ljLgorCisgICAgICAgIEFyZ3VhYmx5IHRoaXMgaXMgdGhlIHdy
b25nIHNlbWFudGljcyB0byBoYXZlLCBhbmQgdGhlIFBvcnQKKyAgICAgICAgY2xhc3NlcyBzaG91
bGQgYmUgYWJsZSB0byBhc3N1bWUgYSBkZWZhdWx0IHNldCBvZgorICAgICAgICBhdHRyaWJ1dGVz
L2FyZ3VtZW50cywgYnV0IHRoYXQgY2hhbmdlIHdpbGwgbmVlZCB0byB3YWl0IGZvciBhCisgICAg
ICAgIGRpZmZlcmVudCBDTCB3aGVyZSB3ZSBjYW4gbW9kaWZ5IG5ldy1ydW4td2Via2l0LXRlc3Rz
IHRvIHB1bGwgYQorICAgICAgICBsaXN0IG9mIGFyZ3VtZW50cyBmcm9tIHRoZSBwb3J0IGZhY3Rv
cnkgcm91dGluZXMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ3NTEwCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dp
bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1
bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3Rv
cnlfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9tYWNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9vcHRpb25zLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L29wdGlvbnNfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93
ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisKIDIwMTAtMTAtMTUgIERpcmsgUHJhbmtlICA8ZHBy
YW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTaWVkZWwuCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkKaW5kZXggYjE1ZWRiMjQ2NDY4YmY4MmRjOTU1MjBlNDNkNDlkYjg4MWJiZThhZS4u
NjVmMjA3NGZjYmRlYWZkMmUyOWRlNGNlZWQ1NDhhZGQ0MmIyYzA2ZSAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpA
QCAtNDcsNiArNDcsNyBAQCBpbXBvcnQgaHR0cF9zZXJ2ZXIKIGltcG9ydCB0ZXN0X2ZpbGVzCiBp
bXBvcnQgd2Vic29ja2V0X3NlcnZlcgogCitmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0
b29sCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3V0aWxzCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVy
cm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlciBpbXBvcnQgVXNlcgpAQCAtNzAs
NyArNzEsMTMgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
ICoqa3dhcmdzKToKICAgICAgICAgc2VsZi5fbmFtZSA9IGt3YXJncy5nZXQoJ3BvcnRfbmFtZScs
IE5vbmUpCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBrd2FyZ3MuZ2V0KCdvcHRpb25zJywgTm9u
ZSkKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IGt3YXJncy5nZXQoJ29wdGlvbnMnKQorICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zIGlzIE5vbmU6CisgICAgICAgICAgICAjIEZJWE1FOiAxKSBpdCdz
IHdlaXJkIHRoYXQgd2UncmUgdXNpbmcgYSBNb2NrIG9iamVjdCBmb3IKKyAgICAgICAgICAgICMg
dGhpcy4gMikgaWRlYWxseSB3ZSdkIGhhdmUgYSBwYWNrYWdlLXdpZGUgd2F5IHRvIGdldCBhCisg
ICAgICAgICAgICAjIHdlbGwtZm9ybWVkIG9wdGlvbnMgb2JqZWN0IHRoYXQgaGFkIGFsbCBvZiB0
aGUgbmVjZXNzYXJ5CisgICAgICAgICAgICAjIG9wdGlvbnMgZGVmaW5lZCBvbiBpdC4KKyAgICAg
ICAgICAgIHNlbGYuX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucygpCiAgICAgICAgIHNl
bGYuX2V4ZWN1dGl2ZSA9IGt3YXJncy5nZXQoJ2V4ZWN1dGl2ZScsIEV4ZWN1dGl2ZSgpKQogICAg
ICAgICBzZWxmLl91c2VyID0ga3dhcmdzLmdldCgndXNlcicsIFVzZXIoKSkKICAgICAgICAgc2Vs
Zi5faGVscGVyID0gTm9uZQpAQCAtOTcsNiArMTA0LDkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgog
ICAgICAgICBzZWxmLl9wcmV0dHlfcGF0Y2hfcGF0aCA9IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9i
YXNlKCJCdWdzU2l0ZSIsCiAgICAgICAgICAgICAgICJQcmV0dHlQYXRjaCIsICJwcmV0dGlmeS5y
YiIpCiAgICAgICAgIHNlbGYuX3ByZXR0eV9wYXRjaF9hdmFpbGFibGUgPSBUcnVlCisgICAgICAg
IHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0KCdjb25maWd1cmF0aW9uJywgTm9uZSkKKyAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxm
Ll9vcHRpb25zLmNvbmZpZ3VyYXRpb24gPSBzZWxmLmRlZmF1bHRfY29uZmlndXJhdGlvbigpCiAK
ICAgICBkZWYgZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoc2VsZik6CiAgICAgICAgICIiIlJldHVy
biB0aGUgbnVtYmVyIG9mIER1bXBSZW5kZXJUcmVlIGluc3RhbmNlcyB0byB1c2UgZm9yIHRoaXMK
QEAgLTQ0Niw2ICs0NTYsMTcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBtYXkgYmUg
ZGlmZmVyZW50IChlLmcuLCAnd2luLXhwJyBpbnN0ZWFkIG9mICdjaHJvbWl1bS13aW4teHAnLiIi
IgogICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQogCisgICAgZGVmIGdldF9vcHRpb24oc2VsZiwg
bmFtZSwgZGVmYXVsdF92YWx1ZT1Ob25lKToKKyAgICAgICAgIyBGSVhNRTogZXZlbnR1YWxseSB3
ZSBzaG91bGQgbm90IGhhdmUgdG8gZG8gYSB0ZXN0IGZvcgorICAgICAgICAjIGhhc2F0dHIoKSwg
YW5kIHdlIHNob3VsZCBiZSBhYmxlIHRvIGp1c3QgZG8KKyAgICAgICAgIyBzZWxmLm9wdGlvbnMu
dmFsdWUuIFNlZSBhZGRpdGlvbmFsIEZJWE1FIGluIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAg
aWYgaGFzYXR0cihzZWxmLl9vcHRpb25zLCBuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBzZWxm
Ll9vcHRpb25zLl9fZGljdF9fW25hbWVdCisgICAgICAgIHJldHVybiBkZWZhdWx0X3ZhbHVlCisK
KyAgICBkZWYgc2V0X29wdGlvbl9kZWZhdWx0KHNlbGYsIG5hbWUsIGRlZmF1bHRfdmFsdWUpOgor
ICAgICAgICBzZWxmLl9vcHRpb25zLl9fZGljdF9fLnNldGRlZmF1bHQobmFtZSwgZGVmYXVsdF92
YWx1ZSkKKwogICAgICMgRklYTUU6IFRoaXMgY291bGQgYmUgcmVwbGFjZWQgYnkgZnVuY3Rpb25z
IGluIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uCiAgICAgZGVmIHBhdGhfZnJvbV93ZWJr
aXRfYmFzZShzZWxmLCAqY29tcHMpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBmdWxsIHBhdGgg
dG8gcGF0aCBtYWRlIGJ5IGpvaW5pbmcgdGhlIHRvcCBvZiB0aGUKQEAgLTUxMCwxMiArNTMxLDEy
IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgIiIiU3RhcnQgYSB3ZWIgc2VydmVyIGlm
IGl0IGlzIGF2YWlsYWJsZS4gRG8gbm90aGluZyBpZgogICAgICAgICBpdCBpc24ndC4gVGhpcyBy
b3V0aW5lIGlzIGFsbG93ZWQgdG8gKGFuZCBtYXkpIGZhaWwgaWYgYSBzZXJ2ZXIKICAgICAgICAg
aXMgYWxyZWFkeSBydW5uaW5nLiIiIgotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9hcGFj
aGU6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2FwYWNoZScpOgogICAgICAgICAg
ICAgc2VsZi5faHR0cF9zZXJ2ZXIgPSBhcGFjaGVfaHR0cF9zZXJ2ZXIuTGF5b3V0VGVzdEFwYWNo
ZUh0dHBkKHNlbGYsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVj
dG9yeSkKKyAgICAgICAgICAgICAgICBzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5
JykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlciA9IGh0dHBf
c2VydmVyLkxpZ2h0dHBkKHNlbGYsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXN1
bHRzX2RpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICBzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNf
ZGlyZWN0b3J5JykpCiAgICAgICAgIHNlbGYuX2h0dHBfc2VydmVyLnN0YXJ0KCkKIAogICAgIGRl
ZiBzdGFydF93ZWJzb2NrZXRfc2VydmVyKHNlbGYpOgpAQCAtNTIzLDcgKzU0NCw3IEBAIGNsYXNz
IFBvcnQob2JqZWN0KToKICAgICAgICAgaXQgaXNuJ3QuIFRoaXMgcm91dGluZSBpcyBhbGxvd2Vk
IHRvIChhbmQgbWF5KSBmYWlsIGlmIGEgc2VydmVyCiAgICAgICAgIGlzIGFscmVhZHkgcnVubmlu
Zy4iIiIKICAgICAgICAgc2VsZi5fd2Vic29ja2V0X3NlcnZlciA9IHdlYnNvY2tldF9zZXJ2ZXIu
UHlXZWJTb2NrZXQoc2VsZiwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJl
Y3RvcnkpCisgICAgICAgICAgICBzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5Jykp
CiAgICAgICAgIHNlbGYuX3dlYnNvY2tldF9zZXJ2ZXIuc3RhcnQoKQogCiAgICAgZGVmIGFjcXVp
cmVfaHR0cF9sb2NrKHNlbGYpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CmluZGV4IDQw
ZWI5ODRjYjkxNGE1OTUwOTY5OTAyMDgwOWEzYjBkNjAyMmExMGMuLmEzN2I0ZDEwMjI1NDBjYmIw
MjBhN2EzNTBlZGNiOWFkMjMwNjE0YjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkK
QEAgLTI2LDE2ICsyNiwxOCBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1w
b3J0IGJhc2UKK2ltcG9ydCBvcHRwYXJzZQogaW1wb3J0IG9zCiBpbXBvcnQgU3RyaW5nSU8KIGlt
cG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0
cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVj
dXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkudGhpcmRw
YXJ0eS5tb2NrIGltcG9ydCBNb2NrCiAKK2ltcG9ydCBiYXNlCiAKICMgRklYTUU6IFRoaXMgbWFr
ZXMgU3RyaW5nSU8gb2JqZWN0cyB3b3JrIHdpdGggIndpdGgiLiBSZW1vdmUKICMgd2hlbiB3ZSB1
cGdyYWRlIHRvIDIuNi4KQEAgLTI0Niw2ICsyNDgsNDAgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZmlsZW5hbWVfdG9f
dXJpKHRlc3RfZmlsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgcGF0aCkK
IAorICAgIGRlZiB0ZXN0X2dldF9vcHRpb25fX3NldChzZWxmKToKKyAgICAgICAgb3B0aW9ucywg
YXJncyA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpLnBhcnNlX2FyZ3MoKQorICAgICAgICBvcHRp
b25zLmZvbyA9ICdiYXInCisgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQob3B0aW9ucz1vcHRpb25z
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZ2V0X29wdGlvbignZm9vJyksICdiYXIn
KQorCisgICAgZGVmIHRlc3RfZ2V0X29wdGlvbl9fdW5zZXQoc2VsZik6CisgICAgICAgIHBvcnQg
PSBiYXNlLlBvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZ2V0X29wdGlvbign
Zm9vJyksIE5vbmUpCisKKyAgICBkZWYgdGVzdF9nZXRfb3B0aW9uX19kZWZhdWx0KHNlbGYpOgor
ICAgICAgICBwb3J0ID0gYmFzZS5Qb3J0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0
LmdldF9vcHRpb24oJ2ZvbycsICdiYXInKSwgJ2JhcicpCisKKyAgICBkZWYgdGVzdF9zZXRfb3B0
aW9uX2RlZmF1bHRfX3Vuc2V0KHNlbGYpOgorICAgICAgICBwb3J0ID0gYmFzZS5Qb3J0KCkKKyAg
ICAgICAgcG9ydC5zZXRfb3B0aW9uX2RlZmF1bHQoJ2ZvbycsICdiYXInKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBvcnQuZ2V0X29wdGlvbignZm9vJyksICdiYXInKQorCisgICAgZGVmIHRl
c3Rfc2V0X29wdGlvbl9kZWZhdWx0X19zZXQoc2VsZik6CisgICAgICAgIG9wdGlvbnMsIGFyZ3Mg
PSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKS5wYXJzZV9hcmdzKCkKKyAgICAgICAgb3B0aW9ucy5m
b28gPSAnYmFyJworICAgICAgICBwb3J0ID0gYmFzZS5Qb3J0KG9wdGlvbnM9b3B0aW9ucykKKyAg
ICAgICAgIyBUaGlzIGNhbGwgc2hvdWxkIGhhdmUgbm8gZWZmZWN0LgorICAgICAgICBwb3J0LnNl
dF9vcHRpb25fZGVmYXVsdCgnZm9vJywgJ25ld19iYXInKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBvcnQuZ2V0X29wdGlvbignZm9vJyksICdiYXInKQorCisgICAgZGVmIHRlc3RfbmFtZV9f
dW5zZXQoc2VsZik6CisgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQoKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBvcnQubmFtZSgpLCBOb25lKQorCisgICAgZGVmIHRlc3RfbmFtZV9fc2V0KHNl
bGYpOgorICAgICAgICBwb3J0ID0gYmFzZS5Qb3J0KHBvcnRfbmFtZT0nZm9vJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChwb3J0Lm5hbWUoKSwgJ2ZvbycpCiAKIAogY2xhc3MgVmlydHVhbFRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggMGZhZTYyZjNh
MjMxZTYwZGQ2NjQ5OTJlNzVkMGQxOGQzNWEzYWMyNi4uYTNmZmViNzNiZTI4ZGNlZjA1NTI5NzQ4
MzBkNDI5YTE5NGNlZGQ3ZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC04NCwxMSArODQsNiBA
QCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxm
LCAqKmt3YXJncyk6CiAgICAgICAgIGJhc2UuUG9ydC5fX2luaXRfXyhzZWxmLCAqKmt3YXJncykK
LSAgICAgICAgaWYgJ29wdGlvbnMnIGluIGt3YXJnczoKLSAgICAgICAgICAgIG9wdGlvbnMgPSBr
d2FyZ3NbJ29wdGlvbnMnXQotICAgICAgICAgICAgaWYgKG9wdGlvbnMgYW5kIChub3QgaGFzYXR0
cihvcHRpb25zLCAnY29uZmlndXJhdGlvbicpIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbnMuY29uZmlndXJhdGlvbiBpcyBOb25lKSk6Ci0gICAgICAgICAgICAgICAgb3B0
aW9ucy5jb25maWd1cmF0aW9uID0gc2VsZi5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKQogICAgICAg
ICBzZWxmLl9jaHJvbWl1bV9iYXNlX2RpciA9IE5vbmUKIAogICAgIGRlZiBiYXNlbGluZV9wYXRo
KHNlbGYpOgpAQCAtMTAwLDkgKzk1LDkgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6
CiAgICAgICAgIGR1bXBfcmVuZGVyX3RyZWVfYmluYXJ5X3BhdGggPSBzZWxmLl9wYXRoX3RvX2Ry
aXZlcigpCiAgICAgICAgIHJlc3VsdCA9IGNoZWNrX2ZpbGVfZXhpc3RzKGR1bXBfcmVuZGVyX3Ry
ZWVfYmluYXJ5X3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVz
dCBkcml2ZXInKSBhbmQgcmVzdWx0Ci0gICAgICAgIGlmIHJlc3VsdCBhbmQgc2VsZi5fb3B0aW9u
cy5idWlsZDoKKyAgICAgICAgaWYgcmVzdWx0IGFuZCBzZWxmLmdldF9vcHRpb24oJ2J1aWxkJyk6
CiAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9jaGVja19kcml2ZXJfYnVpbGRfdXBfdG9fZGF0
ZSgKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24pCisgICAgICAg
ICAgICAgICAgc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykpCiAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQogCkBAIC0xMTEsNyArMTA2LDcgQEAgY2xhc3Mg
Q2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICByZXN1bHQgPSBjaGVja19maWxl
X2V4aXN0cyhoZWxwZXJfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdsYXlvdXQgdGVzdCBoZWxwZXInKSBhbmQgcmVzdWx0CiAKLSAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5waXhlbF90ZXN0czoKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCdwaXhlbF90
ZXN0cycpOgogICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5jaGVja19pbWFnZV9kaWZmKAogICAg
ICAgICAgICAgICAgICdUbyBvdmVycmlkZSwgaW52b2tlIHdpdGggLS1uby1waXhlbC10ZXN0cycp
IGFuZCByZXN1bHQKIApAQCAtMjAxLDEwICsxOTYsMTEgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJh
c2UuUG9ydCk6CiAgICAgZGVmIHJlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICB0cnk6
CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0
JywKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24sIHNlbGYuX29w
dGlvbnMucmVzdWx0c19kaXJlY3RvcnkpCisgICAgICAgICAgICAgICAgc2VsZi5nZXRfb3B0aW9u
KCdjb25maWd1cmF0aW9uJyksCisgICAgICAgICAgICAgICAgc2VsZi5nZXRfb3B0aW9uKCdyZXN1
bHRzX2RpcmVjdG9yeScpKQogICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6Ci0gICAgICAg
ICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnJlc3Vs
dHNfZGlyZWN0b3J5KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5n
ZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5JykpCiAKICAgICBkZWYg
c2V0dXBfdGVzdF9ydW4oc2VsZik6CiAgICAgICAgICMgRGVsZXRlIHRoZSBkaXNrIGNhY2hlIGlm
IGFueSB0byBlbnN1cmUgYSBjbGVhbiB0ZXN0IHJ1bi4KQEAgLTI1OCw3ICsyNTQsNyBAQCBjbGFz
cyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgIyBGSVhNRTogVGhpcyBkcnRfb3Zl
cnJpZGVzIGhhbmRsaW5nIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gd2Ugc3dpdGNoCiAgICAgICAg
ICMgZnJvbSB0ZXNfc2hlbGwgdG8gRFJULgogICAgICAgICBkcnRfb3ZlcnJpZGVzID0gJycKLSAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucyBhbmQgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAg
ICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGRydF9vdmVycmlk
ZXNfcGF0aCA9IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0cycsCiAgICAg
ICAgICAgICAgICAgJ3BsYXRmb3JtJywgJ2Nocm9taXVtJywgJ2RydF9leHBlY3RhdGlvbnMudHh0
JykKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRydF9vdmVycmlkZXNfcGF0aCk6CkBA
IC0zNDYsOSArMzQyLDkgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAKICAgICBk
ZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUgPSAnaW1h
Z2VfZGlmZicKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBz
ZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGJpbmFyeV9uYW1lID0gJ0lt
YWdlRGlmZicKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5fb3B0aW9ucy5j
b25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3Bh
dGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIGJpbmFyeV9uYW1lKQogCiAKIGNs
YXNzIENocm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKQEAgLTM2NSwyNyArMzYxLDI3IEBAIGNs
YXNzIENocm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgaWYgc2VsZi5faW1hZ2Vf
cGF0aDoKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgiLS1waXhlbC10ZXN0cz0iICsg
c2VsZi5faW1hZ2VfcGF0aCkKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6Cisg
ICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAg
ZHJpdmVyX2FyZ3MuYXBwZW5kKCctLXRlc3Qtc2hlbGwnKQogICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLWxheW91dC10ZXN0cycpCiAKLSAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy5zdGFydHVwX2RpYWxvZzoKKyAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRf
b3B0aW9uKCdzdGFydHVwX2RpYWxvZycpOgogICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5k
KCctLXRlc3RzaGVsbC1zdGFydHVwLWRpYWxvZycpCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy5ncF9mYXVsdF9lcnJvcl9ib3g6CisgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbign
Z3BfZmF1bHRfZXJyb3JfYm94Jyk6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0t
Z3AtZmF1bHQtZXJyb3ItYm94JykKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmFjY2VsZXJh
dGVkX2NvbXBvc2l0aW5nOgorICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ2FjY2Vs
ZXJhdGVkX2NvbXBvc2l0aW5nJyk6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0t
ZW5hYmxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nJykKIAotICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLmFjY2VsZXJhdGVkXzJkX2NhbnZhczoKKyAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0
aW9uKCdhY2NlbGVyYXRlZF8yZF9jYW52YXMnKToKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFw
cGVuZCgnLS1lbmFibGUtYWNjZWxlcmF0ZWQtMmQtY2FudmFzJykKICAgICAgICAgcmV0dXJuIGRy
aXZlcl9hcmdzCiAKICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgICMgRklYTUU6IFNob3Vs
ZCBiZSBhbiBlcnJvciB0byBjYWxsIHRoaXMgbWV0aG9kIHR3aWNlLgotICAgICAgICBjbWQgPSBz
ZWxmLl9jb21tYW5kX3dyYXBwZXIoc2VsZi5fb3B0aW9ucy53cmFwcGVyKQorICAgICAgICBjbWQg
PSBzZWxmLl9jb21tYW5kX3dyYXBwZXIoc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCd3cmFwcGVyJykp
CiAgICAgICAgIGNtZC5hcHBlbmQoc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKSkKICAgICAg
ICAgY21kICs9IHNlbGYuX2RyaXZlcl9hcmdzKCkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3Qu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX2dwdV91bml0dGVzdC5weQppbmRleCAxZGQzZWFlZDhjYTQyMDlkNjcyMDA4MTQzNzQxMGU1
NzJmNjZmNjk2Li4zZjEzYjkzZjgwNWFiMDgyZTdiZGQ3ZWZlNjg1NzlhODU0NTVlODNjIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX2dwdV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91bml0dGVzdC5weQpAQCAtMjYsMTMgKzI2
LDkgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBjaHJvbWl1bV9ncHUK
LQogCi1jbGFzcyBNb2NrT3B0aW9ucyhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
LSAgICAgICAgc2VsZi5hY2NlbGVyYXRlZF9jb21wb3NpdGluZyA9IE5vbmUKLSAgICAgICAgc2Vs
Zi5hY2NlbGVyYXRlZF8yZF9jYW52YXMgPSBOb25lCitmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0
IG1vY2t0b29sCitpbXBvcnQgY2hyb21pdW1fZ3B1CiAKIAogY2xhc3MgQ2hyb21pdW1HcHVUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ3LDcgKzQzLDkgQEAgY2xhc3MgQ2hyb21pdW1HcHVU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBhc3NlcnRPdmVycmlkZXNXb3JrZWQo
c2VsZiwgcG9ydF9uYW1lKToKICAgICAgICAgIyB0ZXN0IHRoYXQgd2UgZ290IHRoZSByaWdodCBw
b3J0Ci0gICAgICAgIHBvcnQgPSBjaHJvbWl1bV9ncHUuZ2V0KHBvcnRfbmFtZT1wb3J0X25hbWUs
IG9wdGlvbnM9TW9ja09wdGlvbnMoKSkKKyAgICAgICAgbW9ja19vcHRpb25zID0gbW9ja3Rvb2wu
TW9ja09wdGlvbnMoYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmc9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZWxlcmF0ZWRfMmRfY2FudmFzPU5vbmUp
CisgICAgICAgIHBvcnQgPSBjaHJvbWl1bV9ncHUuZ2V0KHBvcnRfbmFtZT1wb3J0X25hbWUsIG9w
dGlvbnM9bW9ja19vcHRpb25zKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5fb3B0aW9u
cy5hY2NlbGVyYXRlZF9jb21wb3NpdGluZykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQu
X29wdGlvbnMuYWNjZWxlcmF0ZWRfMmRfY2FudmFzKQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9s
aW51eC5weQppbmRleCAxNzY5OTFiN2Y2YTY4ZGY3NzlmNzFkNTExMDQ0MTMyODY5ZTFlMTg5Li5i
MjZhNmI1NzQxNTczZjJiN2U0MzY5MmI4ZDFiM2E2OTFkOGRlZDA3IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fbGludXgucHkKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ2hyb21pdW1MaW51eFBv
cnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVl
ZHNfaHR0cCk6CiAgICAgICAgIHJlc3VsdCA9IGNocm9taXVtLkNocm9taXVtUG9ydC5jaGVja19i
dWlsZChzZWxmLCBuZWVkc19odHRwKQogICAgICAgICBpZiBuZWVkc19odHRwOgotICAgICAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfYXBhY2hlOgorICAgICAgICAgICAgaWYgc2VsZi5nZXRf
b3B0aW9uKCd1c2VfYXBhY2hlJyk6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fY2hl
Y2tfYXBhY2hlX2luc3RhbGwoKSBhbmQgcmVzdWx0CiAgICAgICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2NoZWNrX2xpZ2h0dHBkX2luc3RhbGwoKSBhbmQgcmVz
dWx0CkBAIC04MSw3ICs4MSw3IEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0KGNocm9taXVtLkNo
cm9taXVtUG9ydCk6CiAgICAgICAgIGJhc2UgPSBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNl
KCkKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGJhc2UsICdzY29uc2J1
aWxkJykpOgogICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihiYXNlLCAnc2NvbnNidWls
ZCcsICpjb21wcykKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGJhc2Us
ICdvdXQnLCAqY29tcHMpKSBvciBub3Qgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBp
ZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oYmFzZSwgJ291dCcsICpjb21wcykpIG9yIG5v
dCBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIHJldHVybiBvcy5wYXRo
LmpvaW4oYmFzZSwgJ291dCcsICpjb21wcykKICAgICAgICAgYmFzZSA9IHNlbGYucGF0aF9mcm9t
X3dlYmtpdF9iYXNlKCkKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGJh
c2UsICdzY29uc2J1aWxkJykpOgpAQCAtMTQ3LDkgKzE0Nyw5IEBAIGNsYXNzIENocm9taXVtTGlu
dXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAKICAgICBkZWYgX3BhdGhfdG9fZHJpdmVy
KHNlbGYsIGNvbmZpZ3VyYXRpb249Tm9uZSk6CiAgICAgICAgIGlmIG5vdCBjb25maWd1cmF0aW9u
OgotICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlv
bgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJh
dGlvbicpCiAgICAgICAgIGJpbmFyeV9uYW1lID0gJ3Rlc3Rfc2hlbGwnCi0gICAgICAgIGlmIHNl
bGYuX29wdGlvbnMudXNlX2RydDoKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd1c2VfZHJ0
Jyk6CiAgICAgICAgICAgICBiaW5hcnlfbmFtZSA9ICdEdW1wUmVuZGVyVHJlZScKICAgICAgICAg
cmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoY29uZmlndXJhdGlvbiwgYmluYXJ5X25hbWUpCiAKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fbWFjLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKaW5kZXggNjQwMTZhYjA0MmNhZThhOGUyN2JkY2FhYjQ2
MWNmNWNhZTNhMmY4MS4uZDFjMzgzYzEzZWMyZjEzYWY1ZmIxZjE1NDA1NzljNGM4ODlmZGQ2MyAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV9tYWMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgQ2hy
b21pdW1NYWNQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAKICAgICBkZWYgZHJpdmVyX25h
bWUoc2VsZik6CiAgICAgICAgICIiIm5hbWUgZm9yIHRoaXMgcG9ydCdzIGVxdWl2YWxlbnQgb2Yg
RHVtcFJlbmRlclRyZWUuIiIiCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoKKyAg
ICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICByZXR1cm4g
IkR1bXBSZW5kZXJUcmVlIgogICAgICAgICByZXR1cm4gIlRlc3RTaGVsbCIKIApAQCAtMTAwLDcg
KzEwMCw3IEBAIGNsYXNzIENocm9taXVtTWFjUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgog
CiAgICAgZGVmIF9idWlsZF9wYXRoKHNlbGYsICpjb21wcyk6CiAgICAgICAgIHBhdGggPSBzZWxm
LnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd4Y29kZWJ1aWxkJywgKmNvbXBzKQotICAgICAgICBp
ZiBvcy5wYXRoLmV4aXN0cyhwYXRoKSBvciBub3Qgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAg
ICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKSBvciBub3Qgc2VsZi5nZXRfb3B0aW9uKCd1c2Vf
ZHJ0Jyk6CiAgICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAgICByZXR1cm4gc2VsZi5wYXRo
X2Zyb21fd2Via2l0X2Jhc2UoJ1dlYktpdCcsICdjaHJvbWl1bScsICd4Y29kZWJ1aWxkJywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjb21wcykKQEAgLTEzOCwx
NSArMTM4LDE1IEBAIGNsYXNzIENocm9taXVtTWFjUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQp
OgogICAgICAgICAjIEZJWE1FOiBtYWtlIHxjb25maWd1cmF0aW9ufCBoYXBweSB3aXRoIGNhc2Ut
c2Vuc2l0aXZlIGZpbGUKICAgICAgICAgIyBzeXN0ZW1zLgogICAgICAgICBpZiBub3QgY29uZmln
dXJhdGlvbjoKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLl9vcHRpb25zLmNvbmZp
Z3VyYXRpb24KKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLmdldF9vcHRpb24oJ2Nv
bmZpZ3VyYXRpb24nKQogICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChjb25maWd1cmF0
aW9uLCBzZWxmLmRyaXZlcl9uYW1lKCkgKyAnLmFwcCcsCiAgICAgICAgICAgICAnQ29udGVudHMn
LCAnTWFjT1MnLCBzZWxmLmRyaXZlcl9uYW1lKCkpCiAKICAgICBkZWYgX3BhdGhfdG9faGVscGVy
KHNlbGYpOgogICAgICAgICBiaW5hcnlfbmFtZSA9ICdsYXlvdXRfdGVzdF9oZWxwZXInCi0gICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9u
KCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICBiaW5hcnlfbmFtZSA9ICdMYXlvdXRUZXN0SGVscGVy
JwotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLl9vcHRpb25zLmNvbmZpZ3Vy
YXRpb24sIGJpbmFyeV9uYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxm
LmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgYmluYXJ5X25hbWUpCiAKICAgICBkZWYgX3Bh
dGhfdG9fd2RpZmYoc2VsZik6CiAgICAgICAgIHJldHVybiAnd2RpZmYnCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3Vu
aXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV91bml0dGVzdC5weQppbmRleCBlMzg1OGYwYzRmYzY3MmIzODliYzkxODhmOWFk
NjA2OGUxMWNlZTY2Li41ZDg3OWIzNTA0OGRlMWI1NjRlMTcxMjg5MTIxY2QyMzc2YmZiMDIyIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKQEAgLTI2LDI0ICsyNiwyMiBA
QAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGNocm9taXVtCi1pbXBv
cnQgY2hyb21pdW1fbGludXgKLWltcG9ydCBjaHJvbWl1bV9tYWMKLWltcG9ydCBjaHJvbWl1bV93
aW4KK2ltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgU3RyaW5nSU8KLWltcG9ydCBv
cwogCitmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCiBmcm9tIHdlYmtpdHB5LnRo
aXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogCitpbXBvcnQgY2hyb21pdW0KK2ltcG9ydCBjaHJv
bWl1bV9saW51eAoraW1wb3J0IGNocm9taXVtX21hYworaW1wb3J0IGNocm9taXVtX3dpbgogCiBj
bGFzcyBDaHJvbWl1bURyaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNl
dFVwKHNlbGYpOgogICAgICAgICBtb2NrX3BvcnQgPSBNb2NrKCkKLSAgICAgICAgIyBGSVhNRTog
VGhlIERyaXZlciBzaG91bGQgbm90IGJlIGdyYWJiaW5nIGF0IHBvcnQuX29wdGlvbnMhCi0gICAg
ICAgIG1vY2tfcG9ydC5fb3B0aW9ucyA9IE1vY2soKQotICAgICAgICBtb2NrX3BvcnQuX29wdGlv
bnMud3JhcHBlciA9ICIiCiAgICAgICAgIHNlbGYuZHJpdmVyID0gY2hyb21pdW0uQ2hyb21pdW1E
cml2ZXIobW9ja19wb3J0LCBpbWFnZV9wYXRoPU5vbmUsIG9wdGlvbnM9Tm9uZSkKIAogICAgIGRl
ZiB0ZXN0X3Rlc3Rfc2hlbGxfY29tbWFuZChzZWxmKToKQEAgLTEwNiwyNSArMTA0LDE5IEBAIGNs
YXNzIENocm9taXVtUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgcmV0
dXJuICdkZWZhdWx0JwogCiAgICAgZGVmIHRlc3RfcGF0aF90b19pbWFnZV9kaWZmKHNlbGYpOgot
ICAgICAgICBjbGFzcyBNb2NrT3B0aW9uczoKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm
KToKLSAgICAgICAgICAgICAgICBzZWxmLnVzZV9kcnQgPSBUcnVlCi0KLSAgICAgICAgcG9ydCA9
IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChvcHRpb25zPU1vY2tPcHRpb25zKCkpCisg
ICAgICAgIG1vY2tfb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKHVzZV9kcnQ9VHJ1ZSkK
KyAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChvcHRpb25zPW1v
Y2tfb3B0aW9ucykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuX3BhdGhfdG9faW1hZ2Vf
ZGlmZigpLmVuZHN3aXRoKAogICAgICAgICAgICAgJy9vdXQvZGVmYXVsdC9JbWFnZURpZmYnKSwg
bXNnPXBvcnQuX3BhdGhfdG9faW1hZ2VfZGlmZigpKQotICAgICAgICBwb3J0ID0gQ2hyb21pdW1Q
b3J0VGVzdC5UZXN0TWFjUG9ydChvcHRpb25zPU1vY2tPcHRpb25zKCkpCisgICAgICAgIHBvcnQg
PSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RNYWNQb3J0KG9wdGlvbnM9bW9ja19vcHRpb25zKQogICAg
ICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKCkuZW5kc3dpdGgo
CiAgICAgICAgICAgICAnL3hjb2RlYnVpbGQvZGVmYXVsdC9JbWFnZURpZmYnKSkKICAgICAgICAg
IyBGSVhNRTogRmlndXJlIG91dCBob3cgdGhpcyBpcyBnb2luZyB0byB3b3JrIG9uIFdpbmRvd3Mu
CiAgICAgICAgICNwb3J0ID0gY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydCgndGVzdC1wb3J0
Jywgb3B0aW9ucz1Nb2NrT3B0aW9ucygpKQogCiAgICAgZGVmIHRlc3Rfc2tpcHBlZF9sYXlvdXRf
dGVzdHMoc2VsZik6Ci0gICAgICAgIGNsYXNzIE1vY2tPcHRpb25zOgotICAgICAgICAgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHNlbGYudXNlX2RydCA9IFRydWUKLQot
ICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0KG9wdGlvbnM9TW9j
a09wdGlvbnMoKSkKKyAgICAgICAgbW9ja19vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnMo
dXNlX2RydD1UcnVlKQorICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGludXhQ
b3J0KG9wdGlvbnM9bW9ja19vcHRpb25zKQogCiAgICAgICAgIGZha2VfdGVzdCA9IG9zLnBhdGgu
am9pbihwb3J0LmxheW91dF90ZXN0c19kaXIoKSwgImZhc3QvanMvbm90LWdvb2QuanMiKQogCkBA
IC0xMzgsMjIgKzEzMCwxNCBAQCBERUZFUiBMSU5VWCBXSU4gOiBmYXN0L2pzL3ZlcnktZ29vZC5q
cyA9IFRJTUVPVVQgUEFTUyIiIgogICAgICAgICBzZWxmLmFzc2VydFRydWUoImZhc3QvanMvbm90
LWdvb2QuanMiIGluIHNraXBwZWRfdGVzdHMpCiAKICAgICBkZWYgdGVzdF9kZWZhdWx0X2NvbmZp
Z3VyYXRpb24oc2VsZik6Ci0gICAgICAgIGNsYXNzIEVtcHR5T3B0aW9uczoKLSAgICAgICAgICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgb3B0
aW9ucyA9IEVtcHR5T3B0aW9ucygpCi0gICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRl
c3RMaW51eFBvcnQob3B0aW9ucykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5j
b25maWd1cmF0aW9uLCAnZGVmYXVsdCcpCisgICAgICAgIG1vY2tfb3B0aW9ucyA9IG1vY2t0b29s
Lk1vY2tPcHRpb25zKCkKKyAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4
UG9ydChvcHRpb25zPW1vY2tfb3B0aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobW9j
a19vcHRpb25zLmNvbmZpZ3VyYXRpb24sICdkZWZhdWx0JykKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHBvcnQuZGVmYXVsdF9jb25maWd1cmF0aW9uX2NhbGxlZCkKIAotICAgICAgICBjbGFzcyBP
cHRpb25zV2l0aFVuc2V0Q29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhz
ZWxmKToKLSAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24gPSBOb25lCi0KLSAgICAg
ICAgb3B0aW9ucyA9IE9wdGlvbnNXaXRoVW5zZXRDb25maWd1cmF0aW9uKCkKLSAgICAgICAgcG9y
dCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChvcHRpb25zKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhvcHRpb25zLmNvbmZpZ3VyYXRpb24sICdkZWZhdWx0JykKKyAgICAgICAg
bW9ja19vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj1Ob25lKQor
ICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0KG1vY2tfb3B0aW9u
cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobW9ja19vcHRpb25zLmNvbmZpZ3VyYXRpb24s
ICdkZWZhdWx0JykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuZGVmYXVsdF9jb25maWd1
cmF0aW9uX2NhbGxlZCkKIAogICAgIGRlZiB0ZXN0X2RpZmZfaW1hZ2Uoc2VsZik6CkBAIC0xNjEs
OSArMTQ1LDYgQEAgREVGRVIgTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5LWdvb2QuanMgPSBUSU1F
T1VUIFBBU1MiIiIKICAgICAgICAgICAgIGRlZiBfcGF0aF90b19pbWFnZV9kaWZmKHNlbGYpOgog
ICAgICAgICAgICAgICAgIHJldHVybiAiL3BhdGgvdG8vaW1hZ2VfZGlmZiIKIAotICAgICAgICBj
bGFzcyBFbXB0eU9wdGlvbnM6Ci0gICAgICAgICAgICB1c2VfZHJ0ID0gRmFsc2UKLQogICAgICAg
ICBjbGFzcyBNb2NrRXhlY3V0ZToKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXN1
bHQpOgogICAgICAgICAgICAgICAgIHNlbGYuX3Jlc3VsdCA9IHJlc3VsdApAQCAtMTc4LDggKzE1
OSw4IEBAIERFRkVSIExJTlVYIFdJTiA6IGZhc3QvanMvdmVyeS1nb29kLmpzID0gVElNRU9VVCBQ
QVNTIiIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX291dHB1dD1GYWxzZSk6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jlc3VsdAogCi0gICAgICAgIG9wdGlvbnMg
PSBFbXB0eU9wdGlvbnMoKQotICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGlu
dXhQb3J0KG9wdGlvbnMpCisgICAgICAgIG1vY2tfb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRp
b25zKHVzZV9kcnQ9RmFsc2UpCisgICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RM
aW51eFBvcnQobW9ja19vcHRpb25zKQogCiAgICAgICAgICMgSW1hZ2VzIGFyZSBkaWZmZXJlbnQu
CiAgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRlKDApCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dp
bi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fd2luLnB5CmluZGV4IDY3ZDJhYjJmMWRjOTA3NGZkYWE2MjdlYzJhNGQwOWYzM2I4Y2I1
NjAuLjY5YjUyOWFlMWI0M2FiNGVkNjYzZTBmNmViNDE2NTdlYTZmYjc0NTggMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
d2luLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fd2luLnB5CkBAIC01NSw5ICs1NSw3IEBAIGNsYXNzIENocm9taXVtV2luUG9y
dChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICAjIHB5dGhvbiBleGVjdXRhYmxlIHRv
IHJ1biBjZ2kgcHJvZ3JhbS4KICAgICAgICAgZW52WyJDWUdXSU5fUEFUSCJdID0gc2VsZi5wYXRo
X2Zyb21fY2hyb21pdW1fYmFzZSgKICAgICAgICAgICAgICJ0aGlyZF9wYXJ0eSIsICJjeWd3aW4i
LCAiYmluIikKLSAgICAgICAgaWYgKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiIGFuZCBzZWxmLl9v
cHRpb25zIGFuZAotICAgICAgICAgICAgaGFzYXR0cihzZWxmLl9vcHRpb25zLCAicmVnaXN0ZXJf
Y3lnd2luIikgYW5kCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnJlZ2lzdGVyX2N5Z3dpbik6
CisgICAgICAgIGlmIChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiBhbmQgc2VsZi5nZXRfb3B0aW9u
KCdyZWdpc3Rlcl9jeWd3aW4nKSk6CiAgICAgICAgICAgICBzZXR1cF9tb3VudCA9IHNlbGYucGF0
aF9mcm9tX2Nocm9taXVtX2Jhc2UoInRoaXJkX3BhcnR5IiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3lnd2luIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2V0dXBfbW91bnQu
YmF0IikKQEAgLTExMyw3ICsxMTEsNyBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0u
Q2hyb21pdW1Qb3J0KToKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocCk6CiAgICAgICAgICAg
ICByZXR1cm4gcAogICAgICAgICBwID0gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnY2hy
b21lJywgKmNvbXBzKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwKSBvciBub3Qgc2VsZi5f
b3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwKSBvciBub3Qgc2Vs
Zi5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICByZXR1cm4gcAogICAgICAgICBy
ZXR1cm4gb3MucGF0aC5qb2luKHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCksICdXZWJLaXQn
LCAnY2hyb21pdW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjb21wcykKQEAgLTE0
MSwyMyArMTM5LDIzIEBAIGNsYXNzIENocm9taXVtV2luUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBv
cnQpOgogCiAgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmLCBjb25maWd1cmF0aW9uPU5vbmUp
OgogICAgICAgICBpZiBub3QgY29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRp
b24gPSBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIGNvbmZpZ3VyYXRp
b24gPSBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKQogICAgICAgICBiaW5hcnlfbmFt
ZSA9ICd0ZXN0X3NoZWxsLmV4ZScKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0Ogor
ICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGJpbmFy
eV9uYW1lID0gJ0R1bXBSZW5kZXJUcmVlLmV4ZScKICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxk
X3BhdGgoY29uZmlndXJhdGlvbiwgYmluYXJ5X25hbWUpCiAKICAgICBkZWYgX3BhdGhfdG9faGVs
cGVyKHNlbGYpOgogICAgICAgICBiaW5hcnlfbmFtZSA9ICdsYXlvdXRfdGVzdF9oZWxwZXIuZXhl
JwotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAgIGlmIHNlbGYuZ2V0
X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgYmluYXJ5X25hbWUgPSAnTGF5b3V0VGVz
dEhlbHBlci5leGUnCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuX29wdGlv
bnMuY29uZmlndXJhdGlvbiwgYmluYXJ5X25hbWUpCisgICAgICAgIHJldHVybiBzZWxmLl9idWls
ZF9wYXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCBiaW5hcnlfbmFtZSkKIAog
ICAgIGRlZiBfcGF0aF90b19pbWFnZV9kaWZmKHNlbGYpOgogICAgICAgICBiaW5hcnlfbmFtZSA9
ICdpbWFnZV9kaWZmLmV4ZScKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAg
ICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGJpbmFyeV9u
YW1lID0gJ0ltYWdlRGlmZi5leGUnCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNl
bGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiwgYmluYXJ5X25hbWUpCisgICAgICAgIHJldHVybiBz
ZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCBiaW5hcnlf
bmFtZSkKIAogICAgIGRlZiBfcGF0aF90b193ZGlmZihzZWxmKToKICAgICAgICAgcmV0dXJuIHNl
bGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICdiaW4n
LApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9kcnlydW4ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2RyeXJ1bi5weQppbmRleCA2NDhjY2FkYWFlNmY0NWY3ZDA2YjJiNWViNmNiMWVkZDJm
ZjU4YjEwLi44YTZhZjU2Yzg0MjBlNDUwYzQxODk3YWZlNTQzZTY2NzA2ZjlhZTc2IDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1
bi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2RyeXJ1bi5weQpAQCAtMTAxLDcgKzEwMSw2IEBAIGNsYXNzIERyeXJ1bkRyaXZlcihiYXNlLkRy
aXZlcik6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgaW1hZ2VfcGF0aCwgb3B0aW9u
cywgZXhlY3V0aXZlKToKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKLSAgICAgICAgc2VsZi5f
b3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5faW1hZ2VfcGF0aCA9IGltYWdlX3BhdGgK
ICAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlCiAgICAgICAgIHNlbGYuX2xheW91
dF90ZXN0c19kaXIgPSBOb25lCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKaW5k
ZXggODFjMzczMjdhMjA5OTJlZTBjNGMzY2Q5ZTg0ZDMxMWQ2ZWE0NTk4Yi4uOTc4YTU1N2E1N2Iy
MGEzYjhiNDBlOTk5OThlMzVhODVlZWUyOTY2ZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91
bml0dGVzdC5weQpAQCAtMjksNiArMjksOCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0
CiAKK2Zyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKKwogaW1wb3J0IGNocm9taXVt
X2dwdQogaW1wb3J0IGNocm9taXVtX2xpbnV4CiBpbXBvcnQgY2hyb21pdW1fbWFjCkBAIC01Miwy
MSArNTQsMTEgQEAgY2xhc3MgRmFjdG9yeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMg
RklYTUU6IFRoZSBwb3J0cyB0aGVtc2VsdmVzIHNob3VsZCBleHBvc2Ugd2hhdCBvcHRpb25zIHRo
ZXkgcmVxdWlyZSwKICAgICAjIGluc3RlYWQgb2YgcGFzc2luZyBnZW5lcmljICJvcHRpb25zIi4K
IAotICAgIGNsYXNzIFdlYktpdE9wdGlvbnMob2JqZWN0KToKLSAgICAgICAgIiIiUmVwcmVzZW50
cyB0aGUgbWluaW11bSBvcHRpb25zIGZvciBXZWJLaXQgcG9ydC4iIiIKLSAgICAgICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5waXhlbF90ZXN0cyA9IEZhbHNlCi0KLSAg
ICBjbGFzcyBDaHJvbWl1bU9wdGlvbnMoV2ViS2l0T3B0aW9ucyk6Ci0gICAgICAgICIiIlJlcHJl
c2VudHMgbWluaW11bSBvcHRpb25zIGZvciBDaHJvbWl1bSBwb3J0LiIiIgotICAgICAgICBkZWYg
X19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICBGYWN0b3J5VGVzdC5XZWJLaXRPcHRpb25zLl9f
aW5pdF9fKHNlbGYpCi0gICAgICAgICAgICBzZWxmLmNocm9taXVtID0gVHJ1ZQotCiAgICAgZGVm
IHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnJlYWxfc3lzX3BsYXRmb3JtID0gc3lzLnBsYXRm
b3JtCi0gICAgICAgIHNlbGYud2Via2l0X29wdGlvbnMgPSBGYWN0b3J5VGVzdC5XZWJLaXRPcHRp
b25zKCkKLSAgICAgICAgc2VsZi5jaHJvbWl1bV9vcHRpb25zID0gRmFjdG9yeVRlc3QuQ2hyb21p
dW1PcHRpb25zKCkKKyAgICAgICAgc2VsZi53ZWJraXRfb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tP
cHRpb25zKHBpeGVsX3Rlc3RzPUZhbHNlKQorICAgICAgICBzZWxmLmNocm9taXVtX29wdGlvbnMg
PSBtb2NrdG9vbC5Nb2NrT3B0aW9ucyhwaXhlbF90ZXN0cz1GYWxzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHJvbWl1bT1UcnVlKQogCiAg
ICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzeXMucGxhdGZvcm0gPSBzZWxmLnJlYWxf
c3lzX3BsYXRmb3JtCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L21hY191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CmluZGV4IDMyN2IxOWVlNWZh
NTQ1MDNiNGFmYzI5YjcxZTAwZTc5YmRhNTZmMWIuLmQzODNhNGNkODgzN2U1OWNhNTRjZGFlOTc5
NjFhNGE1NWIxZjQwMDQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CkBAIC0zNSw3ICsz
NSw3IEBAIGltcG9ydCBwb3J0X3Rlc3RjYXNlCiAKIAogY2xhc3MgTWFjVGVzdChwb3J0X3Rlc3Rj
YXNlLlBvcnRUZXN0Q2FzZSk6Ci0gICAgZGVmIG1ha2VfcG9ydChzZWxmLCBvcHRpb25zPXBvcnRf
dGVzdGNhc2UuTW9ja09wdGlvbnMoKSk6CisgICAgZGVmIG1ha2VfcG9ydChzZWxmLCBvcHRpb25z
PXBvcnRfdGVzdGNhc2UubW9ja19vcHRpb25zKToKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9
ICdkYXJ3aW4nOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgcG9ydF9vYmogPSBt
YWMuTWFjUG9ydChvcHRpb25zPW9wdGlvbnMpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkK
aW5kZXggNDc1OTdkNjdjYzI1YTYzOGE5ZjY0NWE3YjVlMGJlMjlkNjU2MTU1Zi4uMDRhZGE1MDAw
ZTNiMzUzODJjM2M5NjA5MjJlMjhjNTUzYzNmNDA0ZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0
Y2FzZS5weQpAQCAtMzIsMjAgKzMyLDE1IEBAIGltcG9ydCBvcwogaW1wb3J0IHRlbXBmaWxlCiBp
bXBvcnQgdW5pdHRlc3QKIAotCi1jbGFzcyBNb2NrT3B0aW9ucyhvYmplY3QpOgotICAgIGRlZiBf
X2luaXRfXyhzZWxmLAotICAgICAgICAgICAgICAgICByZXN1bHRzX2RpcmVjdG9yeT0nbGF5b3V0
LXRlc3QtcmVzdWx0cycsCi0gICAgICAgICAgICAgICAgIHVzZV9hcGFjaGU9VHJ1ZSwKLSAgICAg
ICAgICAgICAgICAgY29uZmlndXJhdGlvbj0nUmVsZWFzZScpOgotICAgICAgICBzZWxmLnJlc3Vs
dHNfZGlyZWN0b3J5ID0gcmVzdWx0c19kaXJlY3RvcnkKLSAgICAgICAgc2VsZi51c2VfYXBhY2hl
ID0gdXNlX2FwYWNoZQotICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9u
Citmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCittb2NrX29wdGlvbnMgPSBtb2Nr
dG9vbC5Nb2NrT3B0aW9ucyhyZXN1bHRzX2RpcmVjdG9yeT0nbGF5b3V0LXRlc3QtcmVzdWx0cycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfYXBhY2hlPVRydWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPSdSZWxlYXNl
JykKIAogCiBjbGFzcyBQb3J0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRl
c3RzIHRoZSBXZWJLaXQgcG9ydCBpbXBsZW1lbnRhdGlvbi4iIiIKLSAgICBkZWYgbWFrZV9wb3J0
KHNlbGYsIG9wdGlvbnM9TW9ja09wdGlvbnMoKSk6CisgICAgZGVmIG1ha2VfcG9ydChzZWxmLCBv
cHRpb25zPW1vY2tfb3B0aW9ucyk6CiAgICAgICAgICIiIk92ZXJyaWRlIGluIHN1YmNsYXNzLiIi
IgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CmluZGV4
IDNiODExNjc5OWFmM2NkNGVlYTZlYjFkZmRiOGRhOTA0Y2Q1Zjk4MDAuLjM2OTFjNWFhZTlmYzMy
MWM5NTE3ODYzNmNkY2QwM2I2OWJkZGQ3M2YgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTIxNSwxNCArMjE1
LDExIEBAIGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAgZGVmIG5hbWUoc2VsZik6CiAg
ICAgICAgIHJldHVybiBzZWxmLl9uYW1lCiAKLSAgICBkZWYgb3B0aW9ucyhzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX29wdGlvbnMKLQogICAgIGRlZiBfcGF0aF90b193ZGlmZihzZWxmKToK
ICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiByZXN1bHRzX2RpcmVjdG9yeShzZWxmKToK
LSAgICAgICAgcmV0dXJuICcvdG1wLycgKyBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5
CisgICAgICAgIHJldHVybiAnL3RtcC8nICsgc2VsZi5nZXRfb3B0aW9uKCdyZXN1bHRzX2RpcmVj
dG9yeScpCiAKICAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZik6CiAgICAgICAgIHBhc3MKQEAg
LTI4NSw3ICsyODIsNiBAQCBjbGFzcyBUZXN0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICBkZWYg
X19pbml0X18oc2VsZiwgcG9ydCwgaW1hZ2VfcGF0aCwgb3B0aW9ucywgZXhlY3V0aXZlKToKICAg
ICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi5faW1hZ2VfcGF0aCA9IGltYWdl
X3BhdGgKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5fZXhl
Y3V0aXZlID0gZXhlY3V0aXZlCiAgICAgICAgIHNlbGYuX2ltYWdlX3dyaXR0ZW4gPSBGYWxzZQog
CkBAIC0zMDIsNyArMjk4LDcgQEAgY2xhc3MgVGVzdERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAg
ICAgIGlmIHRlc3QuaGFuZzoKICAgICAgICAgICAgIHRpbWUuc2xlZXAoKGZsb2F0KHRpbWVvdXRt
cykgKiA0KSAvIDEwMDAuMCkKIAotICAgICAgICBpZiBzZWxmLl9wb3J0Lm9wdGlvbnMoKS5waXhl
bF90ZXN0cyBhbmQgdGVzdC5hY3R1YWxfaW1hZ2U6CisgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0
X29wdGlvbigncGl4ZWxfdGVzdHMnKSBhbmQgdGVzdC5hY3R1YWxfaW1hZ2U6CiAgICAgICAgICAg
ICB3aXRoIG9wZW4oc2VsZi5faW1hZ2VfcGF0aCwgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAg
ICAgIGZpbGUud3JpdGUodGVzdC5hY3R1YWxfaW1hZ2UpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXgg
ZWQxOWMwOWM2MmRhY2JlZTdhM2E2OThkNzZhYWEzZDgyY2FlYmI3Yy4uYzk0MGYxZTdhMDcwYTYw
NzQwZTQ5YmU5ZGE2ZWZiYmFhOWNkNmE5MCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKQEAgLTY1LDkgKzY1
LDcgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgogCiAgICAgICAgICMgRklYTUU6IGRp
c2FibGUgcGl4ZWwgdGVzdHMgdW50aWwgdGhleSBhcmUgcnVuIGJ5IGRlZmF1bHQgb24gdGhlCiAg
ICAgICAgICMgYnVpbGQgbWFjaGluZXMuCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMgYW5kIChu
b3QgaGFzYXR0cihzZWxmLl9vcHRpb25zLCAicGl4ZWxfdGVzdHMiKSBvcgotICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzIGlzIE5vbmUpOgotICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5waXhlbF90ZXN0cyA9IEZhbHNlCisgICAgICAgIHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0
KCdwaXhlbF90ZXN0cycsIEZhbHNlKQogCiAgICAgZGVmIGJhc2VsaW5lX3BhdGgoc2VsZik6CiAg
ICAgICAgIHJldHVybiBzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aChzZWxmLl9uYW1lKQpAQCAt
ODYsNyArODQsNyBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAgICAgZGVmIF9idWls
ZF9kcml2ZXIoc2VsZik6CiAgICAgICAgIGV4aXRfY29kZSA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5f
Y29tbWFuZChbCiAgICAgICAgICAgICBzZWxmLnNjcmlwdF9wYXRoKCJidWlsZC1kdW1wcmVuZGVy
dHJlZSIpLAotICAgICAgICAgICAgc2VsZi5mbGFnX2Zyb21fY29uZmlndXJhdGlvbihzZWxmLl9v
cHRpb25zLmNvbmZpZ3VyYXRpb24pLAorICAgICAgICAgICAgc2VsZi5mbGFnX2Zyb21fY29uZmln
dXJhdGlvbihzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSksCiAgICAgICAgIF0sIHJl
dHVybl9leGl0X2NvZGU9VHJ1ZSkKICAgICAgICAgaWYgZXhpdF9jb2RlICE9IDA6CiAgICAgICAg
ICAgICBfbG9nLmVycm9yKCJGYWlsZWQgdG8gYnVpbGQgRHVtcFJlbmRlclRyZWUiKQpAQCAtMTAx
LDExICs5OSwxMSBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIHJldHVy
biBUcnVlCiAKICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCk6Ci0gICAgICAg
IGlmIHNlbGYuX29wdGlvbnMuYnVpbGQgYW5kIG5vdCBzZWxmLl9idWlsZF9kcml2ZXIoKToKKyAg
ICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCdidWlsZCcpIGFuZCBub3Qgc2VsZi5fYnVpbGRfZHJp
dmVyKCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgbm90IHNlbGYuX2No
ZWNrX2RyaXZlcigpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIHNlbGYu
X29wdGlvbnMucGl4ZWxfdGVzdHM6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigncGl4ZWxf
dGVzdHMnKToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNoZWNrX2ltYWdlX2RpZmYoKToKICAg
ICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgbm90IHNlbGYuX2NoZWNrX3Bv
cnRfYnVpbGQoKToKQEAgLTE4NCw3ICsxODIsNyBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9y
dCk6CiAgICAgZGVmIHJlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICAjIFJlc3VsdHMg
YXJlIHN0b3JlIHJlbGF0aXZlIHRvIHRoZSBidWlsdCBwcm9kdWN0cyB0byBtYWtlIGl0IGVhc3kK
ICAgICAgICAgIyB0byBoYXZlIG11bHRpcGxlIGNvcGllcyBvZiB3ZWJraXQgY2hlY2tlZCBvdXQg
YW5kIGJ1aWx0LgotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLl9vcHRpb25z
LnJlc3VsdHNfZGlyZWN0b3J5KQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxm
LmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5JykpCiAKICAgICBkZWYgc2V0dXBfdGVzdF9y
dW4oc2VsZik6CiAgICAgICAgICMgVGhpcyBwb3J0IGRvZXNuJ3QgcmVxdWlyZSBhbnkgc3BlY2lm
aWMgY29uZmlndXJhdGlvbi4KQEAgLTM2MCw3ICszNTgsNyBAQCBjbGFzcyBXZWJLaXRQb3J0KGJh
c2UuUG9ydCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9jYWNoZWRfYnVpbGRfcm9vdDoKICAgICAg
ICAgICAgIHNlbGYuX2NhY2hlZF9idWlsZF9yb290ID0gc2VsZi5fd2Via2l0X2J1aWxkX2RpcmVj
dG9yeShbCiAgICAgICAgICAgICAgICAgIi0tY29uZmlndXJhdGlvbiIsCi0gICAgICAgICAgICAg
ICAgc2VsZi5mbGFnX2Zyb21fY29uZmlndXJhdGlvbihzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRp
b24pLAorICAgICAgICAgICAgICAgIHNlbGYuZmxhZ19mcm9tX2NvbmZpZ3VyYXRpb24oc2VsZi5n
ZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykpLAogICAgICAgICAgICAgXSkKICAgICAgICAgcmV0
dXJuIG9zLnBhdGguam9pbihzZWxmLl9jYWNoZWRfYnVpbGRfcm9vdCwgKmNvbXBzKQogCkBAIC00
MDEsNyArMzk5LDYgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICBkZWYg
X19pbml0X18oc2VsZiwgcG9ydCwgaW1hZ2VfcGF0aCwgb3B0aW9ucywgZXhlY3V0aXZlPUV4ZWN1
dGl2ZSgpKToKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi5faW1hZ2Vf
cGF0aCA9IGltYWdlX3BhdGgKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAg
ICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlCiAgICAgICAgIHNlbGYuX2RyaXZlcl90ZW1w
ZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J0R1bXBSZW5kZXJUcmVlLScpCiAKQEAgLTQx
NCwxNyArNDExLDE3IEBAIGNsYXNzIFdlYktpdERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAg
IGlmIHNlbGYuX2ltYWdlX3BhdGg6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0t
cGl4ZWwtdGVzdHMnKQogCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoKLSAgICAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMuYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmc6CisgICAgICAg
IGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbigndXNlX2RydCcpOgorICAgICAgICAgICAgaWYgc2Vs
Zi5fcG9ydC5nZXRfb3B0aW9uKCdhY2NlbGVyYXRlZF9jb21wb3NpdGluZycpOgogICAgICAgICAg
ICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgnLS1lbmFibGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRp
bmcnKQogCi0gICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmFjY2VsZXJhdGVkXzJkX2NhbnZh
czoKKyAgICAgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbignYWNjZWxlcmF0ZWRfMmRf
Y2FudmFzJyk6CiAgICAgICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLWVuYWJsZS1h
Y2NlbGVyYXRlZC0yZC1jYW52YXMnKQogCiAgICAgICAgIHJldHVybiBkcml2ZXJfYXJncwogCiAg
ICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBjb21tYW5kID0gc2VsZi5fY29tbWFuZF93cmFw
cGVyKHNlbGYuX29wdGlvbnMud3JhcHBlcikKKyAgICAgICAgY29tbWFuZCA9IHNlbGYuX2NvbW1h
bmRfd3JhcHBlcihzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3dyYXBwZXInKSkKICAgICAgICAgY29t
bWFuZCArPSBbc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKSwgJy0nXQogICAgICAgICBjb21t
YW5kICs9IHNlbGYuX2RyaXZlcl9hcmdzKCkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVz
dHNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQppbmRleCBmY2U2
ZTgyY2FlZjgzNWE3MzM5ODA4NGI2OTE0ODAwOGRiMjZhZTY4Li5lZjMzYTQ3NDgxZmRlZmQ0NzIy
NDZlNmVmMjA5M2YzNTk1MjQ1MzkyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0
dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
ZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpAQCAtMzMsNiArMzMs
NyBAQCBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtp
dHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBv
cnQgcG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJlYmFzZWxpbmVfY2hy
b21pdW1fd2Via2l0X3Rlc3RzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZl
IGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCkBAIC00NiwxMiArNDcsNiBAQCBjbGFzcyBN
b2NrUG9ydChvYmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5pbWFnZV9kaWZmX2V4aXN0cwog
CiAKLWNsYXNzIE1vY2tPcHRpb25zKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNv
bmZpZ3VyYXRpb249Tm9uZSwgaHRtbF9kaXJlY3Rvcnk9Tm9uZSk6Ci0gICAgICAgIHNlbGYuY29u
ZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24KLSAgICAgICAgc2VsZi5odG1sX2RpcmVjdG9yeSA9
IGh0bWxfZGlyZWN0b3J5Ci0KLQogZGVmIGdldF9tb2NrX2dldChjb25maWdfZXhwZWN0YXRpb25z
KToKICAgICBkZWYgbW9ja19nZXQocG9ydF9uYW1lLCBvcHRpb25zKToKICAgICAgICAgcmV0dXJu
IE1vY2tQb3J0KGNvbmZpZ19leHBlY3RhdGlvbnNbb3B0aW9ucy5jb25maWd1cmF0aW9uXSkKQEAg
LTY0LDcgKzU5LDggQEAgY2xhc3MgVGVzdEdldEhvc3RQb3J0T2JqZWN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgIyB0aGF0IEltYWdlIGRpZmYgaXMgKG9yIGlzbid0KSBwcmVzZW50IGlu
IHRoZSB0d28gY29uZmlncy4KICAgICAgICAgcG9ydC5nZXQgPSBnZXRfbW9ja19nZXQoeydSZWxl
YXNlJzogcmVsZWFzZV9wcmVzZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J0RlYnVnJzogZGVidWdfcHJlc2VudH0pCi0gICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucygp
CisgICAgICAgIG9wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPU5v
bmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sX2RpcmVjdG9y
eT1Ob25lKQogICAgICAgICBwb3J0X29iaiA9IHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rl
c3RzLmdldF9ob3N0X3BvcnRfb2JqZWN0KAogICAgICAgICAgICAgb3B0aW9ucykKICAgICAgICAg
aWYgdmFsaWRfcG9ydF9vYmo6CkBAIC05MCw3ICs4Niw4IEBAIGNsYXNzIFRlc3RHZXRIb3N0UG9y
dE9iamVjdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKIGNsYXNzIFRlc3RSZWJhc2VsaW5lcih1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIG1ha2VfcmViYXNlbGluZXIoc2VsZik6Ci0gICAgICAg
IG9wdGlvbnMgPSBNb2NrT3B0aW9ucygpCisgICAgICAgIG9wdGlvbnMgPSBtb2NrdG9vbC5Nb2Nr
T3B0aW9ucyhjb25maWd1cmF0aW9uPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBodG1sX2RpcmVjdG9yeT1Ob25lKQogICAgICAgICBob3N0X3BvcnRfb2JqID0g
cG9ydC5nZXQoJ3Rlc3QnLCBvcHRpb25zKQogICAgICAgICB0YXJnZXRfb3B0aW9ucyA9IG9wdGlv
bnMKICAgICAgICAgdGFyZ2V0X3BvcnRfb2JqID0gcG9ydC5nZXQoJ3Rlc3QnLCB0YXJnZXRfb3B0
aW9ucykKQEAgLTEyNiw3ICsxMjMsOCBAQCBjbGFzcyBUZXN0SHRtbEdlbmVyYXRvcih1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgZGVmIG1ha2VfZ2VuZXJhdG9yKHNlbGYsIHRlc3RzKToKICAgICAg
ICAgcmV0dXJuIHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLkh0bWxHZW5lcmF0b3Io
CiAgICAgICAgICAgICB0YXJnZXRfcG9ydD1Ob25lLAotICAgICAgICAgICAgb3B0aW9ucz1Nb2Nr
T3B0aW9ucyhodG1sX2RpcmVjdG9yeT0iL3RtcCIpLAorICAgICAgICAgICAgb3B0aW9ucz1tb2Nr
dG9vbC5Nb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPU5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGh0bWxfZGlyZWN0b3J5PScvdG1wJyksCiAgICAgICAgICAg
ICBwbGF0Zm9ybXM9WydtYWMnXSwKICAgICAgICAgICAgIHJlYmFzZWxpbmluZ190ZXN0cz10ZXN0
cywKICAgICAgICAgICAgIGV4ZWN1dGl2ZT1FeGVjdXRpdmUoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70944</attachid>
            <date>2010-10-15 19:03:48 -0700</date>
            <delta_ts>2010-10-18 17:04:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47510-20101015190347.patch</filename>
            <type>text/plain</type>
            <size>41464</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBmNDQ4NmJkYzkyMDUyNjBiYjIzNDJhYjk5NTBlMGE1OWVkM2UwNDMzLi45YTM2ZjYx
YTMyYWQ3N2I5NTZjYWM0NTU3MzE4ZDE0NzliNzcyOGNjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAK
KzIwMTAtMTAtMTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGNsZWFuIHVwIHRoZSBvcHRpb25zLXBhcnNpbmcgY29kZSBpbiB0aGUgcG9ydAorICAg
ICAgICBjbGFzc2VzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgbW9kaWZpZXMgdGhl
IFBvcnQgaW50ZXJmYWNlIHRvIGhhdmUgYSBnZXRfb3B0aW9uKCkgYW5kCisgICAgICAgIHNldF9v
cHRpb25fZGVmYXVsdCgpIG1ldGhvZCBmb3IgYWNjZXNzaW5nIHRoZSBvcHRpb25zIGFyZ3VtZW50
CisgICAgICAgIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuIElmIHRoZSBjb25zdHJ1Y3RvciBp
cyBub3QgcGFzc2VkIGFuCisgICAgICAgIG9wdGlvbnMgYXJndW1lbnQsIHdlIGRlZmF1bHQgdG8g
YSBNb2NrT3B0aW9ucygpIGFyZ3VtZW50IGZyb20KKyAgICAgICAgbW9ja3Rvb2wsIHdoaWNoIGhh
cyB0aGUgc2FtZSBzZW1hbnRpY3Mgd2Ugd2FudC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlcmUg
aXMgYSBkaXNhZHZhbnRhZ2UgdG8gcG9ydC5nZXRfb3B0aW9uKCdmb28nKSBvdmVyCisgICAgICAg
IHBvcnQuX29wdGlvbnMuZm9vLCB3aGljaCBpcyB0aGF0IHlvdSBsb3NlIHNvbWUgb2YgdGhlIGNo
ZWNraW5nCisgICAgICAgIGZvciB3aGV0aGVyICdmb28nIGlzIHNldCAodHlwb3MgcmVzdWx0IGlu
IHRoZSBkZWZhdWx0IHZhbHVlLCBub3QKKyAgICAgICAgYW4gZXhjZXB0aW9uIGJlaW5nIHJhaXNl
ZC4gVGhpcyBpcyBkZXNpcmVkIGluIHRoaXMgY2FzZSwgc2luY2UgdGhlCisgICAgICAgIFBvcnQg
Y2xhc3MgaXMgbm90IGFsbG93ZWQgdG8gYXNzdW1lIHRoYXQgb3B0aW9ucyBkb2VzIGhhdmUgYW55
CisgICAgICAgIHBhcnRpY3VsYXIgdmFsdWVzIHNldCwgYW5kIHNvIHRoaXMgY2hhbmdlIGVuc3Vy
ZXMgdGhhdCBhbGwgb2YKKyAgICAgICAgdGhlIHN1YmNsYXNzZXMgYXJlIGZvbGxvd2luZyB0aGUg
c2FtZSwgaW50ZW5kZWQsIGxvZ2ljLgorCisgICAgICAgIEFyZ3VhYmx5IHRoaXMgaXMgdGhlIHdy
b25nIHNlbWFudGljcyB0byBoYXZlLCBhbmQgdGhlIFBvcnQKKyAgICAgICAgY2xhc3NlcyBzaG91
bGQgYmUgYWJsZSB0byBhc3N1bWUgYSBkZWZhdWx0IHNldCBvZgorICAgICAgICBhdHRyaWJ1dGVz
L2FyZ3VtZW50cywgYnV0IHRoYXQgY2hhbmdlIHdpbGwgbmVlZCB0byB3YWl0IGZvciBhCisgICAg
ICAgIGRpZmZlcmVudCBDTCB3aGVyZSB3ZSBjYW4gbW9kaWZ5IG5ldy1ydW4td2Via2l0LXRlc3Rz
IHRvIHB1bGwgYQorICAgICAgICBsaXN0IG9mIGFyZ3VtZW50cyBmcm9tIHRoZSBwb3J0IGZhY3Rv
cnkgcm91dGluZXMuCisKKyAgICAgICAgQWxzbywgYWRkIHVuaXQgdGVzdHMgZm9yIHdlYmtpdHB5
LnRvb2wubW9ja3Rvb2wuTW9ja09wdGlvbnMgLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUxMAorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV9tYWMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtp
dF90ZXN0c191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9j
a3Rvb2xfdW5pdHRlc3QucHk6IEFkZGVkLgorCiAyMDEwLTEwLTE1ICBEaXJrIFByYW5rZSAgPGRw
cmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2llZGVsLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9iYXNlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9iYXNlLnB5CmluZGV4IGIxNWVkYjI0NjQ2OGJmODJkYzk1NTIwZTQzZDQ5ZGI4ODFiYmU4YWUu
LjY1ZjIwNzRmY2JkZWFmZDJlMjlkZTRjZWVkNTQ4YWRkNDJiMmMwNmUgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkK
QEAgLTQ3LDYgKzQ3LDcgQEAgaW1wb3J0IGh0dHBfc2VydmVyCiBpbXBvcnQgdGVzdF9maWxlcwog
aW1wb3J0IHdlYnNvY2tldF9zZXJ2ZXIKIAorZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBtb2Nr
dG9vbAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBsb2d1dGlscwogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRF
cnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXIgaW1wb3J0IFVzZXIKQEAgLTcw
LDcgKzcxLDEzIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxm
LCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYuX25hbWUgPSBrd2FyZ3MuZ2V0KCdwb3J0X25hbWUn
LCBOb25lKQotICAgICAgICBzZWxmLl9vcHRpb25zID0ga3dhcmdzLmdldCgnb3B0aW9ucycsIE5v
bmUpCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBrd2FyZ3MuZ2V0KCdvcHRpb25zJykKKyAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucyBpcyBOb25lOgorICAgICAgICAgICAgIyBGSVhNRTogMSkgaXQn
cyB3ZWlyZCB0aGF0IHdlJ3JlIHVzaW5nIGEgTW9jayBvYmplY3QgZm9yCisgICAgICAgICAgICAj
IHRoaXMuIDIpIGlkZWFsbHkgd2UnZCBoYXZlIGEgcGFja2FnZS13aWRlIHdheSB0byBnZXQgYQor
ICAgICAgICAgICAgIyB3ZWxsLWZvcm1lZCBvcHRpb25zIG9iamVjdCB0aGF0IGhhZCBhbGwgb2Yg
dGhlIG5lY2Vzc2FyeQorICAgICAgICAgICAgIyBvcHRpb25zIGRlZmluZWQgb24gaXQuCisgICAg
ICAgICAgICBzZWxmLl9vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnMoKQogICAgICAgICBz
ZWxmLl9leGVjdXRpdmUgPSBrd2FyZ3MuZ2V0KCdleGVjdXRpdmUnLCBFeGVjdXRpdmUoKSkKICAg
ICAgICAgc2VsZi5fdXNlciA9IGt3YXJncy5nZXQoJ3VzZXInLCBVc2VyKCkpCiAgICAgICAgIHNl
bGYuX2hlbHBlciA9IE5vbmUKQEAgLTk3LDYgKzEwNCw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToK
ICAgICAgICAgc2VsZi5fcHJldHR5X3BhdGNoX3BhdGggPSBzZWxmLnBhdGhfZnJvbV93ZWJraXRf
YmFzZSgiQnVnc1NpdGUiLAogICAgICAgICAgICAgICAiUHJldHR5UGF0Y2giLCAicHJldHRpZnku
cmIiKQogICAgICAgICBzZWxmLl9wcmV0dHlfcGF0Y2hfYXZhaWxhYmxlID0gVHJ1ZQorICAgICAg
ICBzZWxmLnNldF9vcHRpb25fZGVmYXVsdCgnY29uZmlndXJhdGlvbicsIE5vbmUpCisgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiBpcyBOb25lOgorICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5jb25maWd1cmF0aW9uID0gc2VsZi5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKQog
CiAgICAgZGVmIGRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKHNlbGYpOgogICAgICAgICAiIiJSZXR1
cm4gdGhlIG51bWJlciBvZiBEdW1wUmVuZGVyVHJlZSBpbnN0YW5jZXMgdG8gdXNlIGZvciB0aGlz
CkBAIC00NDYsNiArNDU2LDE3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgbWF5IGJl
IGRpZmZlcmVudCAoZS5nLiwgJ3dpbi14cCcgaW5zdGVhZCBvZiAnY2hyb21pdW0td2luLXhwJy4i
IiIKICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKIAorICAgIGRlZiBnZXRfb3B0aW9uKHNlbGYs
IG5hbWUsIGRlZmF1bHRfdmFsdWU9Tm9uZSk6CisgICAgICAgICMgRklYTUU6IGV2ZW50dWFsbHkg
d2Ugc2hvdWxkIG5vdCBoYXZlIHRvIGRvIGEgdGVzdCBmb3IKKyAgICAgICAgIyBoYXNhdHRyKCks
IGFuZCB3ZSBzaG91bGQgYmUgYWJsZSB0byBqdXN0IGRvCisgICAgICAgICMgc2VsZi5vcHRpb25z
LnZhbHVlLiBTZWUgYWRkaXRpb25hbCBGSVhNRSBpbiB0aGUgY29uc3RydWN0b3IuCisgICAgICAg
IGlmIGhhc2F0dHIoc2VsZi5fb3B0aW9ucywgbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fb3B0aW9ucy5fX2RpY3RfX1tuYW1lXQorICAgICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZQor
CisgICAgZGVmIHNldF9vcHRpb25fZGVmYXVsdChzZWxmLCBuYW1lLCBkZWZhdWx0X3ZhbHVlKToK
KyAgICAgICAgc2VsZi5fb3B0aW9ucy5fX2RpY3RfXy5zZXRkZWZhdWx0KG5hbWUsIGRlZmF1bHRf
dmFsdWUpCisKICAgICAjIEZJWE1FOiBUaGlzIGNvdWxkIGJlIHJlcGxhY2VkIGJ5IGZ1bmN0aW9u
cyBpbiB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLgogICAgIGRlZiBwYXRoX2Zyb21fd2Vi
a2l0X2Jhc2Uoc2VsZiwgKmNvbXBzKToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgZnVsbCBwYXRo
IHRvIHBhdGggbWFkZSBieSBqb2luaW5nIHRoZSB0b3Agb2YgdGhlCkBAIC01MTAsMTIgKzUzMSwx
MiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICIiIlN0YXJ0IGEgd2ViIHNlcnZlciBp
ZiBpdCBpcyBhdmFpbGFibGUuIERvIG5vdGhpbmcgaWYKICAgICAgICAgaXQgaXNuJ3QuIFRoaXMg
cm91dGluZSBpcyBhbGxvd2VkIHRvIChhbmQgbWF5KSBmYWlsIGlmIGEgc2VydmVyCiAgICAgICAg
IGlzIGFscmVhZHkgcnVubmluZy4iIiIKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfYXBh
Y2hlOgorICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9hcGFjaGUnKToKICAgICAgICAg
ICAgIHNlbGYuX2h0dHBfc2VydmVyID0gYXBhY2hlX2h0dHBfc2VydmVyLkxheW91dFRlc3RBcGFj
aGVIdHRwZChzZWxmLAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJl
Y3RvcnkpCisgICAgICAgICAgICAgICAgc2VsZi5nZXRfb3B0aW9uKCdyZXN1bHRzX2RpcmVjdG9y
eScpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXIgPSBodHRw
X3NlcnZlci5MaWdodHRwZChzZWxmLAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMucmVz
dWx0c19kaXJlY3RvcnkpCisgICAgICAgICAgICAgICAgc2VsZi5nZXRfb3B0aW9uKCdyZXN1bHRz
X2RpcmVjdG9yeScpKQogICAgICAgICBzZWxmLl9odHRwX3NlcnZlci5zdGFydCgpCiAKICAgICBk
ZWYgc3RhcnRfd2Vic29ja2V0X3NlcnZlcihzZWxmKToKQEAgLTUyMyw3ICs1NDQsNyBAQCBjbGFz
cyBQb3J0KG9iamVjdCk6CiAgICAgICAgIGl0IGlzbid0LiBUaGlzIHJvdXRpbmUgaXMgYWxsb3dl
ZCB0byAoYW5kIG1heSkgZmFpbCBpZiBhIHNlcnZlcgogICAgICAgICBpcyBhbHJlYWR5IHJ1bm5p
bmcuIiIiCiAgICAgICAgIHNlbGYuX3dlYnNvY2tldF9zZXJ2ZXIgPSB3ZWJzb2NrZXRfc2VydmVy
LlB5V2ViU29ja2V0KHNlbGYsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGly
ZWN0b3J5KQorICAgICAgICAgICAgc2VsZi5nZXRfb3B0aW9uKCdyZXN1bHRzX2RpcmVjdG9yeScp
KQogICAgICAgICBzZWxmLl93ZWJzb2NrZXRfc2VydmVyLnN0YXJ0KCkKIAogICAgIGRlZiBhY3F1
aXJlX2h0dHBfbG9jayhzZWxmKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQppbmRleCA0
MGViOTg0Y2I5MTRhNTk1MDk2OTkwMjA4MDlhM2IwZDYwMjJhMTBjLi5hMzdiNGQxMDIyNTQwY2Ji
MDIwYTdhMzUwZWRjYjlhZDIzMDYxNGIzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5
CkBAIC0yNiwxNiArMjYsMTggQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWlt
cG9ydCBiYXNlCitpbXBvcnQgb3B0cGFyc2UKIGltcG9ydCBvcwogaW1wb3J0IFN0cmluZ0lPCiBp
bXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtp
dHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhl
Y3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LnRoaXJk
cGFydHkubW9jayBpbXBvcnQgTW9jawogCitpbXBvcnQgYmFzZQogCiAjIEZJWE1FOiBUaGlzIG1h
a2VzIFN0cmluZ0lPIG9iamVjdHMgd29yayB3aXRoICJ3aXRoIi4gUmVtb3ZlCiAjIHdoZW4gd2Ug
dXBncmFkZSB0byAyLjYuCkBAIC0yNDYsNiArMjQ4LDQwIEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmZpbGVuYW1lX3Rv
X3VyaSh0ZXN0X2ZpbGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCArIHBhdGgp
CiAKKyAgICBkZWYgdGVzdF9nZXRfb3B0aW9uX19zZXQoc2VsZik6CisgICAgICAgIG9wdGlvbnMs
IGFyZ3MgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKS5wYXJzZV9hcmdzKCkKKyAgICAgICAgb3B0
aW9ucy5mb28gPSAnYmFyJworICAgICAgICBwb3J0ID0gYmFzZS5Qb3J0KG9wdGlvbnM9b3B0aW9u
cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmdldF9vcHRpb24oJ2ZvbycpLCAnYmFy
JykKKworICAgIGRlZiB0ZXN0X2dldF9vcHRpb25fX3Vuc2V0KHNlbGYpOgorICAgICAgICBwb3J0
ID0gYmFzZS5Qb3J0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmdldF9vcHRpb24o
J2ZvbycpLCBOb25lKQorCisgICAgZGVmIHRlc3RfZ2V0X29wdGlvbl9fZGVmYXVsdChzZWxmKToK
KyAgICAgICAgcG9ydCA9IGJhc2UuUG9ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9y
dC5nZXRfb3B0aW9uKCdmb28nLCAnYmFyJyksICdiYXInKQorCisgICAgZGVmIHRlc3Rfc2V0X29w
dGlvbl9kZWZhdWx0X191bnNldChzZWxmKToKKyAgICAgICAgcG9ydCA9IGJhc2UuUG9ydCgpCisg
ICAgICAgIHBvcnQuc2V0X29wdGlvbl9kZWZhdWx0KCdmb28nLCAnYmFyJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwb3J0LmdldF9vcHRpb24oJ2ZvbycpLCAnYmFyJykKKworICAgIGRlZiB0
ZXN0X3NldF9vcHRpb25fZGVmYXVsdF9fc2V0KHNlbGYpOgorICAgICAgICBvcHRpb25zLCBhcmdz
ID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkucGFyc2VfYXJncygpCisgICAgICAgIG9wdGlvbnMu
Zm9vID0gJ2JhcicKKyAgICAgICAgcG9ydCA9IGJhc2UuUG9ydChvcHRpb25zPW9wdGlvbnMpCisg
ICAgICAgICMgVGhpcyBjYWxsIHNob3VsZCBoYXZlIG5vIGVmZmVjdC4KKyAgICAgICAgcG9ydC5z
ZXRfb3B0aW9uX2RlZmF1bHQoJ2ZvbycsICduZXdfYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwb3J0LmdldF9vcHRpb24oJ2ZvbycpLCAnYmFyJykKKworICAgIGRlZiB0ZXN0X25hbWVf
X3Vuc2V0KHNlbGYpOgorICAgICAgICBwb3J0ID0gYmFzZS5Qb3J0KCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwb3J0Lm5hbWUoKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X25hbWVfX3NldChz
ZWxmKToKKyAgICAgICAgcG9ydCA9IGJhc2UuUG9ydChwb3J0X25hbWU9J2ZvbycpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5uYW1lKCksICdmb28nKQogCiAKIGNsYXNzIFZpcnR1YWxU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IDBmYWU2MmYz
YTIzMWU2MGRkNjY0OTkyZTc1ZDBkMThkMzVhM2FjMjYuLmEzZmZlYjczYmUyOGRjZWYwNTUyOTc0
ODMwZDQyOWExOTRjZWRkN2UgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtODQsMTEgKzg0LDYg
QEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgKiprd2FyZ3MpOgogICAgICAgICBiYXNlLlBvcnQuX19pbml0X18oc2VsZiwgKiprd2FyZ3Mp
Ci0gICAgICAgIGlmICdvcHRpb25zJyBpbiBrd2FyZ3M6Ci0gICAgICAgICAgICBvcHRpb25zID0g
a3dhcmdzWydvcHRpb25zJ10KLSAgICAgICAgICAgIGlmIChvcHRpb25zIGFuZCAobm90IGhhc2F0
dHIob3B0aW9ucywgJ2NvbmZpZ3VyYXRpb24nKSBvcgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcHRpb25zLmNvbmZpZ3VyYXRpb24gaXMgTm9uZSkpOgotICAgICAgICAgICAgICAgIG9w
dGlvbnMuY29uZmlndXJhdGlvbiA9IHNlbGYuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkKICAgICAg
ICAgc2VsZi5fY2hyb21pdW1fYmFzZV9kaXIgPSBOb25lCiAKICAgICBkZWYgYmFzZWxpbmVfcGF0
aChzZWxmKToKQEAgLTEwMCw5ICs5NSw5IEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQp
OgogICAgICAgICBkdW1wX3JlbmRlcl90cmVlX2JpbmFyeV9wYXRoID0gc2VsZi5fcGF0aF90b19k
cml2ZXIoKQogICAgICAgICByZXN1bHQgPSBjaGVja19maWxlX2V4aXN0cyhkdW1wX3JlbmRlcl90
cmVlX2JpbmFyeV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rl
c3QgZHJpdmVyJykgYW5kIHJlc3VsdAotICAgICAgICBpZiByZXN1bHQgYW5kIHNlbGYuX29wdGlv
bnMuYnVpbGQ6CisgICAgICAgIGlmIHJlc3VsdCBhbmQgc2VsZi5nZXRfb3B0aW9uKCdidWlsZCcp
OgogICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fY2hlY2tfZHJpdmVyX2J1aWxkX3VwX3RvX2Rh
dGUoCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uKQorICAgICAg
ICAgICAgICAgIHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpKQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgX2xvZy5lcnJvcignJykKIApAQCAtMTExLDcgKzEwNiw3IEBAIGNsYXNz
IENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICAgICAgICAgcmVzdWx0ID0gY2hlY2tfZmls
ZV9leGlzdHMoaGVscGVyX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnbGF5b3V0IHRlc3QgaGVscGVyJykgYW5kIHJlc3VsdAogCi0gICAgICAgIGlmIHNlbGYu
X29wdGlvbnMucGl4ZWxfdGVzdHM6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigncGl4ZWxf
dGVzdHMnKToKICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuY2hlY2tfaW1hZ2VfZGlmZigKICAg
ICAgICAgICAgICAgICAnVG8gb3ZlcnJpZGUsIGludm9rZSB3aXRoIC0tbm8tcGl4ZWwtdGVzdHMn
KSBhbmQgcmVzdWx0CiAKQEAgLTIwMSwxMCArMTk2LDExIEBAIGNsYXNzIENocm9taXVtUG9ydChi
YXNlLlBvcnQpOgogICAgIGRlZiByZXN1bHRzX2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgdHJ5
OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3dlYmtp
dCcsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uLCBzZWxmLl9v
cHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5KQorICAgICAgICAgICAgICAgIHNlbGYuZ2V0X29wdGlv
bignY29uZmlndXJhdGlvbicpLAorICAgICAgICAgICAgICAgIHNlbGYuZ2V0X29wdGlvbigncmVz
dWx0c19kaXJlY3RvcnknKSkKICAgICAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yOgotICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXN1
bHRzX2RpcmVjdG9yeSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYu
Z2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5nZXRfb3B0aW9uKCdyZXN1bHRzX2RpcmVjdG9yeScpKQogCiAgICAgZGVm
IHNldHVwX3Rlc3RfcnVuKHNlbGYpOgogICAgICAgICAjIERlbGV0ZSB0aGUgZGlzayBjYWNoZSBp
ZiBhbnkgdG8gZW5zdXJlIGEgY2xlYW4gdGVzdCBydW4uCkBAIC0yNTgsNyArMjU0LDcgQEAgY2xh
c3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICMgRklYTUU6IFRoaXMgZHJ0X292
ZXJyaWRlcyBoYW5kbGluZyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHdlIHN3aXRjaAogICAgICAg
ICAjIGZyb20gdGVzX3NoZWxsIHRvIERSVC4KICAgICAgICAgZHJ0X292ZXJyaWRlcyA9ICcnCi0g
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMgYW5kIHNlbGYuX29wdGlvbnMudXNlX2RydDoKKyAgICAg
ICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICBkcnRfb3ZlcnJp
ZGVzX3BhdGggPSBzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnTGF5b3V0VGVzdHMnLAogICAg
ICAgICAgICAgICAgICdwbGF0Zm9ybScsICdjaHJvbWl1bScsICdkcnRfZXhwZWN0YXRpb25zLnR4
dCcpCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkcnRfb3ZlcnJpZGVzX3BhdGgpOgpA
QCAtMzQ2LDkgKzM0Miw5IEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogCiAgICAg
ZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6CiAgICAgICAgIGJpbmFyeV9uYW1lID0gJ2lt
YWdlX2RpZmYnCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoKKyAgICAgICAgaWYg
c2VsZi5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICBiaW5hcnlfbmFtZSA9ICdJ
bWFnZURpZmYnCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuX29wdGlvbnMu
Y29uZmlndXJhdGlvbiwgYmluYXJ5X25hbWUpCisgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9w
YXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCBiaW5hcnlfbmFtZSkKIAogCiBj
bGFzcyBDaHJvbWl1bURyaXZlcihiYXNlLkRyaXZlcik6CkBAIC0zNjUsMjcgKzM2MSwyNyBAQCBj
bGFzcyBDaHJvbWl1bURyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAgIGlmIHNlbGYuX2ltYWdl
X3BhdGg6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoIi0tcGl4ZWwtdGVzdHM9IiAr
IHNlbGYuX2ltYWdlX3BhdGgpCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0Ogor
ICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAg
IGRyaXZlcl9hcmdzLmFwcGVuZCgnLS10ZXN0LXNoZWxsJykKICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgnLS1sYXlvdXQtdGVzdHMnKQogCi0gICAgICAgIGlm
IHNlbGYuX29wdGlvbnMuc3RhcnR1cF9kaWFsb2c6CisgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0
X29wdGlvbignc3RhcnR1cF9kaWFsb2cnKToKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVu
ZCgnLS10ZXN0c2hlbGwtc3RhcnR1cC1kaWFsb2cnKQogCi0gICAgICAgIGlmIHNlbGYuX29wdGlv
bnMuZ3BfZmF1bHRfZXJyb3JfYm94OgorICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24o
J2dwX2ZhdWx0X2Vycm9yX2JveCcpOgogICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCct
LWdwLWZhdWx0LWVycm9yLWJveCcpCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5hY2NlbGVy
YXRlZF9jb21wb3NpdGluZzoKKyAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdhY2Nl
bGVyYXRlZF9jb21wb3NpdGluZycpOgogICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCct
LWVuYWJsZS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZycpCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5hY2NlbGVyYXRlZF8yZF9jYW52YXM6CisgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29w
dGlvbignYWNjZWxlcmF0ZWRfMmRfY2FudmFzJyk6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5h
cHBlbmQoJy0tZW5hYmxlLWFjY2VsZXJhdGVkLTJkLWNhbnZhcycpCiAgICAgICAgIHJldHVybiBk
cml2ZXJfYXJncwogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgogICAgICAgICAjIEZJWE1FOiBTaG91
bGQgYmUgYW4gZXJyb3IgdG8gY2FsbCB0aGlzIG1ldGhvZCB0d2ljZS4KLSAgICAgICAgY21kID0g
c2VsZi5fY29tbWFuZF93cmFwcGVyKHNlbGYuX29wdGlvbnMud3JhcHBlcikKKyAgICAgICAgY21k
ID0gc2VsZi5fY29tbWFuZF93cmFwcGVyKHNlbGYuX3BvcnQuZ2V0X29wdGlvbignd3JhcHBlcicp
KQogICAgICAgICBjbWQuYXBwZW5kKHNlbGYuX3BvcnQuX3BhdGhfdG9fZHJpdmVyKCkpCiAgICAg
ICAgIGNtZCArPSBzZWxmLl9kcml2ZXJfYXJncygpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV9ncHVfdW5pdHRlc3QucHkKaW5kZXggMWRkM2VhZWQ4Y2E0MjA5ZDY3MjAwODE0Mzc0MTBl
NTcyZjY2ZjY5Ni4uM2YxM2I5M2Y4MDVhYjA4MmU3YmRkN2VmZTY4NTc5YTg1NDU1ZTgzYyAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV9ncHVfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkKQEAgLTI2LDEzICsy
Niw5IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgY2hyb21pdW1fZ3B1
Ci0KIAotY2xhc3MgTW9ja09wdGlvbnMob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZik6
Ci0gICAgICAgIHNlbGYuYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmcgPSBOb25lCi0gICAgICAgIHNl
bGYuYWNjZWxlcmF0ZWRfMmRfY2FudmFzID0gTm9uZQorZnJvbSB3ZWJraXRweS50b29sIGltcG9y
dCBtb2NrdG9vbAoraW1wb3J0IGNocm9taXVtX2dwdQogCiAKIGNsYXNzIENocm9taXVtR3B1VGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00Nyw3ICs0Myw5IEBAIGNsYXNzIENocm9taXVtR3B1
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgYXNzZXJ0T3ZlcnJpZGVzV29ya2Vk
KHNlbGYsIHBvcnRfbmFtZSk6CiAgICAgICAgICMgdGVzdCB0aGF0IHdlIGdvdCB0aGUgcmlnaHQg
cG9ydAotICAgICAgICBwb3J0ID0gY2hyb21pdW1fZ3B1LmdldChwb3J0X25hbWU9cG9ydF9uYW1l
LCBvcHRpb25zPU1vY2tPcHRpb25zKCkpCisgICAgICAgIG1vY2tfb3B0aW9ucyA9IG1vY2t0b29s
Lk1vY2tPcHRpb25zKGFjY2VsZXJhdGVkX2NvbXBvc2l0aW5nPU5vbmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VsZXJhdGVkXzJkX2NhbnZhcz1Ob25l
KQorICAgICAgICBwb3J0ID0gY2hyb21pdW1fZ3B1LmdldChwb3J0X25hbWU9cG9ydF9uYW1lLCBv
cHRpb25zPW1vY2tfb3B0aW9ucykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuX29wdGlv
bnMuYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0
Ll9vcHRpb25zLmFjY2VsZXJhdGVkXzJkX2NhbnZhcykKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
bGludXgucHkKaW5kZXggMTc2OTkxYjdmNmE2OGRmNzc5ZjcxZDUxMTA0NDEzMjg2OWUxZTE4OS4u
YjI2YTZiNTc0MTU3M2YyYjdlNDM2OTJiOGQxYjNhNjkxZDhkZWQwNyAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51
eC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX2xpbnV4LnB5CkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIENocm9taXVtTGludXhQ
b3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgZGVmIGNoZWNrX2J1aWxkKHNlbGYsIG5l
ZWRzX2h0dHApOgogICAgICAgICByZXN1bHQgPSBjaHJvbWl1bS5DaHJvbWl1bVBvcnQuY2hlY2tf
YnVpbGQoc2VsZiwgbmVlZHNfaHR0cCkKICAgICAgICAgaWYgbmVlZHNfaHR0cDoKLSAgICAgICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2FwYWNoZToKKyAgICAgICAgICAgIGlmIHNlbGYuZ2V0
X29wdGlvbigndXNlX2FwYWNoZScpOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2No
ZWNrX2FwYWNoZV9pbnN0YWxsKCkgYW5kIHJlc3VsdAogICAgICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9jaGVja19saWdodHRwZF9pbnN0YWxsKCkgYW5kIHJl
c3VsdApAQCAtODEsNyArODEsNyBAQCBjbGFzcyBDaHJvbWl1bUxpbnV4UG9ydChjaHJvbWl1bS5D
aHJvbWl1bVBvcnQpOgogICAgICAgICBiYXNlID0gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFz
ZSgpCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihiYXNlLCAnc2NvbnNi
dWlsZCcpKToKICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oYmFzZSwgJ3Njb25zYnVp
bGQnLCAqY29tcHMpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihiYXNl
LCAnb3V0JywgKmNvbXBzKSkgb3Igbm90IHNlbGYuX29wdGlvbnMudXNlX2RydDoKKyAgICAgICAg
aWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGJhc2UsICdvdXQnLCAqY29tcHMpKSBvciBu
b3Qgc2VsZi5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICByZXR1cm4gb3MucGF0
aC5qb2luKGJhc2UsICdvdXQnLCAqY29tcHMpCiAgICAgICAgIGJhc2UgPSBzZWxmLnBhdGhfZnJv
bV93ZWJraXRfYmFzZSgpCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihi
YXNlLCAnc2NvbnNidWlsZCcpKToKQEAgLTE0Nyw5ICsxNDcsOSBAQCBjbGFzcyBDaHJvbWl1bUxp
bnV4UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogCiAgICAgZGVmIF9wYXRoX3RvX2RyaXZl
cihzZWxmLCBjb25maWd1cmF0aW9uPU5vbmUpOgogICAgICAgICBpZiBub3QgY29uZmlndXJhdGlv
bjoKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRp
b24KKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3Vy
YXRpb24nKQogICAgICAgICBiaW5hcnlfbmFtZSA9ICd0ZXN0X3NoZWxsJwotICAgICAgICBpZiBz
ZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2Ry
dCcpOgogICAgICAgICAgICAgYmluYXJ5X25hbWUgPSAnRHVtcFJlbmRlclRyZWUnCiAgICAgICAg
IHJldHVybiBzZWxmLl9idWlsZF9wYXRoKGNvbmZpZ3VyYXRpb24sIGJpbmFyeV9uYW1lKQogCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX21hYy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CmluZGV4IDY0MDE2YWIwNDJjYWU4YThlMjdiZGNhYWI0
NjFjZjVjYWUzYTJmODEuLmQxYzM4M2MxM2VjMmYxM2FmNWZiMWYxNTQwNTc5YzRjODg5ZmRkNjMg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fbWFjLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIENo
cm9taXVtTWFjUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogCiAgICAgZGVmIGRyaXZlcl9u
YW1lKHNlbGYpOgogICAgICAgICAiIiJuYW1lIGZvciB0aGlzIHBvcnQncyBlcXVpdmFsZW50IG9m
IER1bXBSZW5kZXJUcmVlLiIiIgotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6Cisg
ICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgcmV0dXJu
ICJEdW1wUmVuZGVyVHJlZSIKICAgICAgICAgcmV0dXJuICJUZXN0U2hlbGwiCiAKQEAgLTEwMCw3
ICsxMDAsNyBAQCBjbGFzcyBDaHJvbWl1bU1hY1BvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToK
IAogICAgIGRlZiBfYnVpbGRfcGF0aChzZWxmLCAqY29tcHMpOgogICAgICAgICBwYXRoID0gc2Vs
Zi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgneGNvZGVidWlsZCcsICpjb21wcykKLSAgICAgICAg
aWYgb3MucGF0aC5leGlzdHMocGF0aCkgb3Igbm90IHNlbGYuX29wdGlvbnMudXNlX2RydDoKKyAg
ICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCkgb3Igbm90IHNlbGYuZ2V0X29wdGlvbigndXNl
X2RydCcpOgogICAgICAgICAgICAgcmV0dXJuIHBhdGgKICAgICAgICAgcmV0dXJuIHNlbGYucGF0
aF9mcm9tX3dlYmtpdF9iYXNlKCdXZWJLaXQnLCAnY2hyb21pdW0nLCAneGNvZGVidWlsZCcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY29tcHMpCkBAIC0xMzgs
MTUgKzEzOCwxNSBAQCBjbGFzcyBDaHJvbWl1bU1hY1BvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0
KToKICAgICAgICAgIyBGSVhNRTogbWFrZSB8Y29uZmlndXJhdGlvbnwgaGFwcHkgd2l0aCBjYXNl
LXNlbnNpdGl2ZSBmaWxlCiAgICAgICAgICMgc3lzdGVtcy4KICAgICAgICAgaWYgbm90IGNvbmZp
Z3VyYXRpb246Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5fb3B0aW9ucy5jb25m
aWd1cmF0aW9uCisgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5nZXRfb3B0aW9uKCdj
b25maWd1cmF0aW9uJykKICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoY29uZmlndXJh
dGlvbiwgc2VsZi5kcml2ZXJfbmFtZSgpICsgJy5hcHAnLAogICAgICAgICAgICAgJ0NvbnRlbnRz
JywgJ01hY09TJywgc2VsZi5kcml2ZXJfbmFtZSgpKQogCiAgICAgZGVmIF9wYXRoX3RvX2hlbHBl
cihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUgPSAnbGF5b3V0X3Rlc3RfaGVscGVyJwotICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlv
bigndXNlX2RydCcpOgogICAgICAgICAgICAgYmluYXJ5X25hbWUgPSAnTGF5b3V0VGVzdEhlbHBl
cicKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5fb3B0aW9ucy5jb25maWd1
cmF0aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2Vs
Zi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIGJpbmFyeV9uYW1lKQogCiAgICAgZGVmIF9w
YXRoX3RvX3dkaWZmKHNlbGYpOgogICAgICAgICByZXR1cm4gJ3dkaWZmJwpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91
bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fdW5pdHRlc3QucHkKaW5kZXggZTM4NThmMGM0ZmM2NzJiMzg5YmM5MTg4Zjlh
ZDYwNjhlMTFjZWU2Ni4uNWQ4NzliMzUwNDhkZTFiNTY0ZTE3MTI4OTEyMWNkMjM3NmJmYjAyMiAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CkBAIC0yNiwyNCArMjYsMjIg
QEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBjaHJvbWl1bQotaW1w
b3J0IGNocm9taXVtX2xpbnV4Ci1pbXBvcnQgY2hyb21pdW1fbWFjCi1pbXBvcnQgY2hyb21pdW1f
d2luCitpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IFN0cmluZ0lPCi1pbXBvcnQg
b3MKIAorZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBtb2NrdG9vbAogZnJvbSB3ZWJraXRweS50
aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIAoraW1wb3J0IGNocm9taXVtCitpbXBvcnQgY2hy
b21pdW1fbGludXgKK2ltcG9ydCBjaHJvbWl1bV9tYWMKK2ltcG9ydCBjaHJvbWl1bV93aW4KIAog
Y2xhc3MgQ2hyb21pdW1Ecml2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBz
ZXRVcChzZWxmKToKICAgICAgICAgbW9ja19wb3J0ID0gTW9jaygpCi0gICAgICAgICMgRklYTUU6
IFRoZSBEcml2ZXIgc2hvdWxkIG5vdCBiZSBncmFiYmluZyBhdCBwb3J0Ll9vcHRpb25zIQotICAg
ICAgICBtb2NrX3BvcnQuX29wdGlvbnMgPSBNb2NrKCkKLSAgICAgICAgbW9ja19wb3J0Ll9vcHRp
b25zLndyYXBwZXIgPSAiIgogICAgICAgICBzZWxmLmRyaXZlciA9IGNocm9taXVtLkNocm9taXVt
RHJpdmVyKG1vY2tfcG9ydCwgaW1hZ2VfcGF0aD1Ob25lLCBvcHRpb25zPU5vbmUpCiAKICAgICBk
ZWYgdGVzdF90ZXN0X3NoZWxsX2NvbW1hbmQoc2VsZik6CkBAIC0xMDYsMjUgKzEwNCwxOSBAQCBj
bGFzcyBDaHJvbWl1bVBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIHJl
dHVybiAnZGVmYXVsdCcKIAogICAgIGRlZiB0ZXN0X3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToK
LSAgICAgICAgY2xhc3MgTW9ja09wdGlvbnM6Ci0gICAgICAgICAgICBkZWYgX19pbml0X18oc2Vs
Zik6Ci0gICAgICAgICAgICAgICAgc2VsZi51c2VfZHJ0ID0gVHJ1ZQotCi0gICAgICAgIHBvcnQg
PSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQob3B0aW9ucz1Nb2NrT3B0aW9ucygpKQor
ICAgICAgICBtb2NrX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucyh1c2VfZHJ0PVRydWUp
CisgICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQob3B0aW9ucz1t
b2NrX29wdGlvbnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Ll9wYXRoX3RvX2ltYWdl
X2RpZmYoKS5lbmRzd2l0aCgKICAgICAgICAgICAgICcvb3V0L2RlZmF1bHQvSW1hZ2VEaWZmJyks
IG1zZz1wb3J0Ll9wYXRoX3RvX2ltYWdlX2RpZmYoKSkKLSAgICAgICAgcG9ydCA9IENocm9taXVt
UG9ydFRlc3QuVGVzdE1hY1BvcnQob3B0aW9ucz1Nb2NrT3B0aW9ucygpKQorICAgICAgICBwb3J0
ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TWFjUG9ydChvcHRpb25zPW1vY2tfb3B0aW9ucykKICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuX3BhdGhfdG9faW1hZ2VfZGlmZigpLmVuZHN3aXRo
KAogICAgICAgICAgICAgJy94Y29kZWJ1aWxkL2RlZmF1bHQvSW1hZ2VEaWZmJykpCiAgICAgICAg
ICMgRklYTUU6IEZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgZ29pbmcgdG8gd29yayBvbiBXaW5kb3dz
LgogICAgICAgICAjcG9ydCA9IGNocm9taXVtX3dpbi5DaHJvbWl1bVdpblBvcnQoJ3Rlc3QtcG9y
dCcsIG9wdGlvbnM9TW9ja09wdGlvbnMoKSkKIAogICAgIGRlZiB0ZXN0X3NraXBwZWRfbGF5b3V0
X3Rlc3RzKHNlbGYpOgotICAgICAgICBjbGFzcyBNb2NrT3B0aW9uczoKLSAgICAgICAgICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgICAgICAgICBzZWxmLnVzZV9kcnQgPSBUcnVlCi0K
LSAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChvcHRpb25zPU1v
Y2tPcHRpb25zKCkpCisgICAgICAgIG1vY2tfb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRpb25z
KHVzZV9kcnQ9VHJ1ZSkKKyAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4
UG9ydChvcHRpb25zPW1vY2tfb3B0aW9ucykKIAogICAgICAgICBmYWtlX3Rlc3QgPSBvcy5wYXRo
LmpvaW4ocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksICJmYXN0L2pzL25vdC1nb29kLmpzIikKIApA
QCAtMTM4LDIyICsxMzAsMTQgQEAgREVGRVIgTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5LWdvb2Qu
anMgPSBUSU1FT1VUIFBBU1MiIiIKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJmYXN0L2pzL25v
dC1nb29kLmpzIiBpbiBza2lwcGVkX3Rlc3RzKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF9jb25m
aWd1cmF0aW9uKHNlbGYpOgotICAgICAgICBjbGFzcyBFbXB0eU9wdGlvbnM6Ci0gICAgICAgICAg
ICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIG9w
dGlvbnMgPSBFbXB0eU9wdGlvbnMoKQotICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5U
ZXN0TGludXhQb3J0KG9wdGlvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMu
Y29uZmlndXJhdGlvbiwgJ2RlZmF1bHQnKQorICAgICAgICBtb2NrX29wdGlvbnMgPSBtb2NrdG9v
bC5Nb2NrT3B0aW9ucygpCisgICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51
eFBvcnQob3B0aW9ucz1tb2NrX29wdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1v
Y2tfb3B0aW9ucy5jb25maWd1cmF0aW9uLCAnZGVmYXVsdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShwb3J0LmRlZmF1bHRfY29uZmlndXJhdGlvbl9jYWxsZWQpCiAKLSAgICAgICAgY2xhc3Mg
T3B0aW9uc1dpdGhVbnNldENvbmZpZ3VyYXRpb246Ci0gICAgICAgICAgICBkZWYgX19pbml0X18o
c2VsZik6Ci0gICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uID0gTm9uZQotCi0gICAg
ICAgIG9wdGlvbnMgPSBPcHRpb25zV2l0aFVuc2V0Q29uZmlndXJhdGlvbigpCi0gICAgICAgIHBv
cnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQob3B0aW9ucykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMob3B0aW9ucy5jb25maWd1cmF0aW9uLCAnZGVmYXVsdCcpCisgICAgICAg
IG1vY2tfb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249Tm9uZSkK
KyAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChtb2NrX29wdGlv
bnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1vY2tfb3B0aW9ucy5jb25maWd1cmF0aW9u
LCAnZGVmYXVsdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRlZmF1bHRfY29uZmln
dXJhdGlvbl9jYWxsZWQpCiAKICAgICBkZWYgdGVzdF9kaWZmX2ltYWdlKHNlbGYpOgpAQCAtMTYx
LDkgKzE0NSw2IEBAIERFRkVSIExJTlVYIFdJTiA6IGZhc3QvanMvdmVyeS1nb29kLmpzID0gVElN
RU9VVCBQQVNTIiIiCiAgICAgICAgICAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToK
ICAgICAgICAgICAgICAgICByZXR1cm4gIi9wYXRoL3RvL2ltYWdlX2RpZmYiCiAKLSAgICAgICAg
Y2xhc3MgRW1wdHlPcHRpb25zOgotICAgICAgICAgICAgdXNlX2RydCA9IEZhbHNlCi0KICAgICAg
ICAgY2xhc3MgTW9ja0V4ZWN1dGU6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcmVz
dWx0KToKICAgICAgICAgICAgICAgICBzZWxmLl9yZXN1bHQgPSByZXN1bHQKQEAgLTE3OCw4ICsx
NTksOCBAQCBERUZFUiBMSU5VWCBXSU4gOiBmYXN0L2pzL3ZlcnktZ29vZC5qcyA9IFRJTUVPVVQg
UEFTUyIiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9vdXRwdXQ9RmFsc2Up
OgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZXN1bHQKIAotICAgICAgICBvcHRpb25z
ID0gRW1wdHlPcHRpb25zKCkKLSAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExp
bnV4UG9ydChvcHRpb25zKQorICAgICAgICBtb2NrX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0
aW9ucyh1c2VfZHJ0PUZhbHNlKQorICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0
TGludXhQb3J0KG1vY2tfb3B0aW9ucykKIAogICAgICAgICAjIEltYWdlcyBhcmUgZGlmZmVyZW50
LgogICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0ZSgwKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93
aW4ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX3dpbi5weQppbmRleCA2N2QyYWIyZjFkYzkwNzRmZGFhNjI3ZWMyYTRkMDlmMzNiOGNi
NTYwLi42OWI1MjlhZTFiNDNhYjRlZDY2M2UwZjZlYjQxNjU3ZWE2ZmI3NDU4IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X3dpbi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX3dpbi5weQpAQCAtNTUsOSArNTUsNyBAQCBjbGFzcyBDaHJvbWl1bVdpblBv
cnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgIyBweXRob24gZXhlY3V0YWJsZSB0
byBydW4gY2dpIHByb2dyYW0uCiAgICAgICAgIGVudlsiQ1lHV0lOX1BBVEgiXSA9IHNlbGYucGF0
aF9mcm9tX2Nocm9taXVtX2Jhc2UoCiAgICAgICAgICAgICAidGhpcmRfcGFydHkiLCAiY3lnd2lu
IiwgImJpbiIpCi0gICAgICAgIGlmIChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiBhbmQgc2VsZi5f
b3B0aW9ucyBhbmQKLSAgICAgICAgICAgIGhhc2F0dHIoc2VsZi5fb3B0aW9ucywgInJlZ2lzdGVy
X2N5Z3dpbiIpIGFuZAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5yZWdpc3Rlcl9jeWd3aW4p
OgorICAgICAgICBpZiAoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgYW5kIHNlbGYuZ2V0X29wdGlv
bigncmVnaXN0ZXJfY3lnd2luJykpOgogICAgICAgICAgICAgc2V0dXBfbW91bnQgPSBzZWxmLnBh
dGhfZnJvbV9jaHJvbWl1bV9iYXNlKCJ0aGlyZF9wYXJ0eSIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN5Z3dpbiIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNldHVwX21vdW50
LmJhdCIpCkBAIC0xMTMsNyArMTExLDcgQEAgY2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9taXVt
LkNocm9taXVtUG9ydCk6CiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHApOgogICAgICAgICAg
ICAgcmV0dXJuIHAKICAgICAgICAgcCA9IHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ2No
cm9tZScsICpjb21wcykKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocCkgb3Igbm90IHNlbGYu
X29wdGlvbnMudXNlX2RydDoKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocCkgb3Igbm90IHNl
bGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgcmV0dXJuIHAKICAgICAgICAg
cmV0dXJuIG9zLnBhdGguam9pbihzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgpLCAnV2ViS2l0
JywgJ2Nocm9taXVtJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY29tcHMpCkBAIC0x
NDEsMjMgKzEzOSwyMyBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hyb21pdW1Q
b3J0KToKIAogICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25l
KToKICAgICAgICAgaWYgbm90IGNvbmZpZ3VyYXRpb246Ci0gICAgICAgICAgICBjb25maWd1cmF0
aW9uID0gc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uCisgICAgICAgICAgICBjb25maWd1cmF0
aW9uID0gc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykKICAgICAgICAgYmluYXJ5X25h
bWUgPSAndGVzdF9zaGVsbC5leGUnCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoK
KyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICBiaW5h
cnlfbmFtZSA9ICdEdW1wUmVuZGVyVHJlZS5leGUnCiAgICAgICAgIHJldHVybiBzZWxmLl9idWls
ZF9wYXRoKGNvbmZpZ3VyYXRpb24sIGJpbmFyeV9uYW1lKQogCiAgICAgZGVmIF9wYXRoX3RvX2hl
bHBlcihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUgPSAnbGF5b3V0X3Rlc3RfaGVscGVyLmV4
ZScKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBzZWxmLmdl
dF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGJpbmFyeV9uYW1lID0gJ0xheW91dFRl
c3RIZWxwZXIuZXhlJwotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLl9vcHRp
b25zLmNvbmZpZ3VyYXRpb24sIGJpbmFyeV9uYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVp
bGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgYmluYXJ5X25hbWUpCiAK
ICAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUg
PSAnaW1hZ2VfZGlmZi5leGUnCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoKKyAg
ICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICBiaW5hcnlf
bmFtZSA9ICdJbWFnZURpZmYuZXhlJwotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChz
ZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24sIGJpbmFyeV9uYW1lKQorICAgICAgICByZXR1cm4g
c2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgYmluYXJ5
X25hbWUpCiAKICAgICBkZWYgX3BhdGhfdG9fd2RpZmYoc2VsZik6CiAgICAgICAgIHJldHVybiBz
ZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd0aGlyZF9wYXJ0eScsICdjeWd3aW4nLCAnYmlu
JywKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZHJ5cnVuLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9kcnlydW4ucHkKaW5kZXggNjQ4Y2NhZGFhZTZmNDVmN2QwNmIyYjVlYjZjYjFlZGQy
ZmY1OGIxMC4uOGE2YWY1NmM4NDIwZTQ1MGM0MTg5N2FmZTU0M2U2NjcwNmY5YWU3NiAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnly
dW4ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9kcnlydW4ucHkKQEAgLTEwMSw3ICsxMDEsNiBAQCBjbGFzcyBEcnlydW5Ecml2ZXIoYmFzZS5E
cml2ZXIpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGltYWdlX3BhdGgsIG9wdGlv
bnMsIGV4ZWN1dGl2ZSk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0Ci0gICAgICAgIHNlbGYu
X29wdGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNlbGYuX2ltYWdlX3BhdGggPSBpbWFnZV9wYXRo
CiAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQogICAgICAgICBzZWxmLl9sYXlv
dXRfdGVzdHNfZGlyID0gTm9uZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5Cmlu
ZGV4IDgxYzM3MzI3YTIwOTkyZWUwYzRjM2NkOWU4NGQzMTFkNmVhNDU5OGIuLjk3OGE1NTdhNTdi
MjBhM2I4YjQwZTk5OTk4ZTM1YTg1ZWVlMjk2NmUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3Rvcnlf
dW5pdHRlc3QucHkKQEAgLTI5LDYgKzI5LDggQEAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVz
dAogCitmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCisKIGltcG9ydCBjaHJvbWl1
bV9ncHUKIGltcG9ydCBjaHJvbWl1bV9saW51eAogaW1wb3J0IGNocm9taXVtX21hYwpAQCAtNTIs
MjEgKzU0LDExIEBAIGNsYXNzIEZhY3RvcnlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAj
IEZJWE1FOiBUaGUgcG9ydHMgdGhlbXNlbHZlcyBzaG91bGQgZXhwb3NlIHdoYXQgb3B0aW9ucyB0
aGV5IHJlcXVpcmUsCiAgICAgIyBpbnN0ZWFkIG9mIHBhc3NpbmcgZ2VuZXJpYyAib3B0aW9ucyIu
CiAKLSAgICBjbGFzcyBXZWJLaXRPcHRpb25zKG9iamVjdCk6Ci0gICAgICAgICIiIlJlcHJlc2Vu
dHMgdGhlIG1pbmltdW0gb3B0aW9ucyBmb3IgV2ViS2l0IHBvcnQuIiIiCi0gICAgICAgIGRlZiBf
X2luaXRfXyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYucGl4ZWxfdGVzdHMgPSBGYWxzZQotCi0g
ICAgY2xhc3MgQ2hyb21pdW1PcHRpb25zKFdlYktpdE9wdGlvbnMpOgotICAgICAgICAiIiJSZXBy
ZXNlbnRzIG1pbmltdW0gb3B0aW9ucyBmb3IgQ2hyb21pdW0gcG9ydC4iIiIKLSAgICAgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgRmFjdG9yeVRlc3QuV2ViS2l0T3B0aW9ucy5f
X2luaXRfXyhzZWxmKQotICAgICAgICAgICAgc2VsZi5jaHJvbWl1bSA9IFRydWUKLQogICAgIGRl
ZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5yZWFsX3N5c19wbGF0Zm9ybSA9IHN5cy5wbGF0
Zm9ybQotICAgICAgICBzZWxmLndlYmtpdF9vcHRpb25zID0gRmFjdG9yeVRlc3QuV2ViS2l0T3B0
aW9ucygpCi0gICAgICAgIHNlbGYuY2hyb21pdW1fb3B0aW9ucyA9IEZhY3RvcnlUZXN0LkNocm9t
aXVtT3B0aW9ucygpCisgICAgICAgIHNlbGYud2Via2l0X29wdGlvbnMgPSBtb2NrdG9vbC5Nb2Nr
T3B0aW9ucyhwaXhlbF90ZXN0cz1GYWxzZSkKKyAgICAgICAgc2VsZi5jaHJvbWl1bV9vcHRpb25z
ID0gbW9ja3Rvb2wuTW9ja09wdGlvbnMocGl4ZWxfdGVzdHM9RmFsc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hyb21pdW09VHJ1ZSkKIAog
ICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc3lzLnBsYXRmb3JtID0gc2VsZi5yZWFs
X3N5c19wbGF0Zm9ybQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hY191bml0dGVzdC5weQppbmRleCAzMjdiMTllZTVm
YTU0NTAzYjRhZmMyOWI3MWUwMGU3OWJkYTU2ZjFiLi5kMzgzYTRjZDg4MzdlNTljYTU0Y2RhZTk3
OTYxYTRhNTViMWY0MDA0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L21hY191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hY191bml0dGVzdC5weQpAQCAtMzUsNyAr
MzUsNyBAQCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQogCiAKIGNsYXNzIE1hY1Rlc3QocG9ydF90ZXN0
Y2FzZS5Qb3J0VGVzdENhc2UpOgotICAgIGRlZiBtYWtlX3BvcnQoc2VsZiwgb3B0aW9ucz1wb3J0
X3Rlc3RjYXNlLk1vY2tPcHRpb25zKCkpOgorICAgIGRlZiBtYWtlX3BvcnQoc2VsZiwgb3B0aW9u
cz1wb3J0X3Rlc3RjYXNlLm1vY2tfb3B0aW9ucyk6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAh
PSAnZGFyd2luJzoKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHBvcnRfb2JqID0g
bWFjLk1hY1BvcnQob3B0aW9ucz1vcHRpb25zKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5
CmluZGV4IDQ3NTk3ZDY3Y2MyNWE2MzhhOWY2NDVhN2I1ZTBiZTI5ZDY1NjE1NWYuLjA0YWRhNTAw
MGUzYjM1MzgyYzNjOTYwOTIyZTI4YzU1M2MzZjQwNGUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVz
dGNhc2UucHkKQEAgLTMyLDIwICszMiwxNSBAQCBpbXBvcnQgb3MKIGltcG9ydCB0ZW1wZmlsZQog
aW1wb3J0IHVuaXR0ZXN0CiAKLQotY2xhc3MgTW9ja09wdGlvbnMob2JqZWN0KToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwKLSAgICAgICAgICAgICAgICAgcmVzdWx0c19kaXJlY3Rvcnk9J2xheW91
dC10ZXN0LXJlc3VsdHMnLAotICAgICAgICAgICAgICAgICB1c2VfYXBhY2hlPVRydWUsCi0gICAg
ICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnKToKLSAgICAgICAgc2VsZi5yZXN1
bHRzX2RpcmVjdG9yeSA9IHJlc3VsdHNfZGlyZWN0b3J5Ci0gICAgICAgIHNlbGYudXNlX2FwYWNo
ZSA9IHVzZV9hcGFjaGUKLSAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlv
bgorZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBtb2NrdG9vbAorbW9ja19vcHRpb25zID0gbW9j
a3Rvb2wuTW9ja09wdGlvbnMocmVzdWx0c19kaXJlY3Rvcnk9J2xheW91dC10ZXN0LXJlc3VsdHMn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2FwYWNoZT1UcnVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj0nUmVsZWFz
ZScpCiAKIAogY2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJU
ZXN0cyB0aGUgV2ViS2l0IHBvcnQgaW1wbGVtZW50YXRpb24uIiIiCi0gICAgZGVmIG1ha2VfcG9y
dChzZWxmLCBvcHRpb25zPU1vY2tPcHRpb25zKCkpOgorICAgIGRlZiBtYWtlX3BvcnQoc2VsZiwg
b3B0aW9ucz1tb2NrX29wdGlvbnMpOgogICAgICAgICAiIiJPdmVycmlkZSBpbiBzdWJjbGFzcy4i
IiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQppbmRl
eCAzYjgxMTY3OTlhZjNjZDRlZWE2ZWIxZGZkYjhkYTkwNGNkNWY5ODAwLi4zNjkxYzVhYWU5ZmMz
MjFjOTUxNzg2MzZjZGNkMDNiNjliZGRkNzNmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CkBAIC0yMTUsMTQgKzIx
NSwxMSBAQCBjbGFzcyBUZXN0UG9ydChiYXNlLlBvcnQpOgogICAgIGRlZiBuYW1lKHNlbGYpOgog
ICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQogCi0gICAgZGVmIG9wdGlvbnMoc2VsZik6Ci0gICAg
ICAgIHJldHVybiBzZWxmLl9vcHRpb25zCi0KICAgICBkZWYgX3BhdGhfdG9fd2RpZmYoc2VsZik6
CiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgcmVzdWx0c19kaXJlY3Rvcnkoc2VsZik6
Ci0gICAgICAgIHJldHVybiAnL3RtcC8nICsgc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9y
eQorICAgICAgICByZXR1cm4gJy90bXAvJyArIHNlbGYuZ2V0X29wdGlvbigncmVzdWx0c19kaXJl
Y3RvcnknKQogCiAgICAgZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYpOgogICAgICAgICBwYXNzCkBA
IC0yODUsNyArMjgyLDYgQEAgY2xhc3MgVGVzdERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHBvcnQsIGltYWdlX3BhdGgsIG9wdGlvbnMsIGV4ZWN1dGl2ZSk6CiAg
ICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX2ltYWdlX3BhdGggPSBpbWFn
ZV9wYXRoCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNlbGYuX2V4
ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQogICAgICAgICBzZWxmLl9pbWFnZV93cml0dGVuID0gRmFsc2UK
IApAQCAtMzAyLDcgKzI5OCw3IEBAIGNsYXNzIFRlc3REcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAg
ICAgICBpZiB0ZXN0Lmhhbmc6CiAgICAgICAgICAgICB0aW1lLnNsZWVwKChmbG9hdCh0aW1lb3V0
bXMpICogNCkgLyAxMDAwLjApCiAKLSAgICAgICAgaWYgc2VsZi5fcG9ydC5vcHRpb25zKCkucGl4
ZWxfdGVzdHMgYW5kIHRlc3QuYWN0dWFsX2ltYWdlOgorICAgICAgICBpZiBzZWxmLl9wb3J0Lmdl
dF9vcHRpb24oJ3BpeGVsX3Rlc3RzJykgYW5kIHRlc3QuYWN0dWFsX2ltYWdlOgogICAgICAgICAg
ICAgd2l0aCBvcGVuKHNlbGYuX2ltYWdlX3BhdGgsICd3JykgYXMgZmlsZToKICAgICAgICAgICAg
ICAgICBmaWxlLndyaXRlKHRlc3QuYWN0dWFsX2ltYWdlKQogCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4
IGVkMTljMDljNjJkYWNiZWU3YTNhNjk4ZDc2YWFhM2Q4MmNhZWJiN2MuLmM5NDBmMWU3YTA3MGE2
MDc0MGU0OWJlOWRhNmVmYmJhYTljZDZhOTAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC02NSw5ICs2
NSw3IEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKIAogICAgICAgICAjIEZJWE1FOiBk
aXNhYmxlIHBpeGVsIHRlc3RzIHVudGlsIHRoZXkgYXJlIHJ1biBieSBkZWZhdWx0IG9uIHRoZQog
ICAgICAgICAjIGJ1aWxkIG1hY2hpbmVzLgotICAgICAgICBpZiBzZWxmLl9vcHRpb25zIGFuZCAo
bm90IGhhc2F0dHIoc2VsZi5fb3B0aW9ucywgInBpeGVsX3Rlc3RzIikgb3IKLSAgICAgICAgICAg
c2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cyBpcyBOb25lKToKLSAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMucGl4ZWxfdGVzdHMgPSBGYWxzZQorICAgICAgICBzZWxmLnNldF9vcHRpb25fZGVmYXVs
dCgncGl4ZWxfdGVzdHMnLCBGYWxzZSkKIAogICAgIGRlZiBiYXNlbGluZV9wYXRoKHNlbGYpOgog
ICAgICAgICByZXR1cm4gc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoc2VsZi5fbmFtZSkKQEAg
LTg2LDcgKzg0LDcgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgogICAgIGRlZiBfYnVp
bGRfZHJpdmVyKHNlbGYpOgogICAgICAgICBleGl0X2NvZGUgPSBzZWxmLl9leGVjdXRpdmUucnVu
X2NvbW1hbmQoWwogICAgICAgICAgICAgc2VsZi5zY3JpcHRfcGF0aCgiYnVpbGQtZHVtcHJlbmRl
cnRyZWUiKSwKLSAgICAgICAgICAgIHNlbGYuZmxhZ19mcm9tX2NvbmZpZ3VyYXRpb24oc2VsZi5f
b3B0aW9ucy5jb25maWd1cmF0aW9uKSwKKyAgICAgICAgICAgIHNlbGYuZmxhZ19mcm9tX2NvbmZp
Z3VyYXRpb24oc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykpLAogICAgICAgICBdLCBy
ZXR1cm5fZXhpdF9jb2RlPVRydWUpCiAgICAgICAgIGlmIGV4aXRfY29kZSAhPSAwOgogICAgICAg
ICAgICAgX2xvZy5lcnJvcigiRmFpbGVkIHRvIGJ1aWxkIER1bXBSZW5kZXJUcmVlIikKQEAgLTEw
MSwxMSArOTksMTEgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgogICAgICAgICByZXR1
cm4gVHJ1ZQogCiAgICAgZGVmIGNoZWNrX2J1aWxkKHNlbGYsIG5lZWRzX2h0dHApOgotICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLmJ1aWxkIGFuZCBub3Qgc2VsZi5fYnVpbGRfZHJpdmVyKCk6Cisg
ICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbignYnVpbGQnKSBhbmQgbm90IHNlbGYuX2J1aWxkX2Ry
aXZlcigpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIG5vdCBzZWxmLl9j
aGVja19kcml2ZXIoKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLnBpeGVsX3Rlc3RzOgorICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3BpeGVs
X3Rlc3RzJyk6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5jaGVja19pbWFnZV9kaWZmKCk6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIG5vdCBzZWxmLl9jaGVja19w
b3J0X2J1aWxkKCk6CkBAIC0xODQsNyArMTgyLDcgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBv
cnQpOgogICAgIGRlZiByZXN1bHRzX2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgIyBSZXN1bHRz
IGFyZSBzdG9yZSByZWxhdGl2ZSB0byB0aGUgYnVpbHQgcHJvZHVjdHMgdG8gbWFrZSBpdCBlYXN5
CiAgICAgICAgICMgdG8gaGF2ZSBtdWx0aXBsZSBjb3BpZXMgb2Ygd2Via2l0IGNoZWNrZWQgb3V0
IGFuZCBidWlsdC4KLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5fb3B0aW9u
cy5yZXN1bHRzX2RpcmVjdG9yeSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2Vs
Zi5nZXRfb3B0aW9uKCdyZXN1bHRzX2RpcmVjdG9yeScpKQogCiAgICAgZGVmIHNldHVwX3Rlc3Rf
cnVuKHNlbGYpOgogICAgICAgICAjIFRoaXMgcG9ydCBkb2Vzbid0IHJlcXVpcmUgYW55IHNwZWNp
ZmljIGNvbmZpZ3VyYXRpb24uCkBAIC0zNjAsNyArMzU4LDcgQEAgY2xhc3MgV2ViS2l0UG9ydChi
YXNlLlBvcnQpOgogICAgICAgICBpZiBub3Qgc2VsZi5fY2FjaGVkX2J1aWxkX3Jvb3Q6CiAgICAg
ICAgICAgICBzZWxmLl9jYWNoZWRfYnVpbGRfcm9vdCA9IHNlbGYuX3dlYmtpdF9idWlsZF9kaXJl
Y3RvcnkoWwogICAgICAgICAgICAgICAgICItLWNvbmZpZ3VyYXRpb24iLAotICAgICAgICAgICAg
ICAgIHNlbGYuZmxhZ19mcm9tX2NvbmZpZ3VyYXRpb24oc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0
aW9uKSwKKyAgICAgICAgICAgICAgICBzZWxmLmZsYWdfZnJvbV9jb25maWd1cmF0aW9uKHNlbGYu
Z2V0X29wdGlvbignY29uZmlndXJhdGlvbicpKSwKICAgICAgICAgICAgIF0pCiAgICAgICAgIHJl
dHVybiBvcy5wYXRoLmpvaW4oc2VsZi5fY2FjaGVkX2J1aWxkX3Jvb3QsICpjb21wcykKIApAQCAt
NDAxLDcgKzM5OSw2IEBAIGNsYXNzIFdlYktpdERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHBvcnQsIGltYWdlX3BhdGgsIG9wdGlvbnMsIGV4ZWN1dGl2ZT1FeGVj
dXRpdmUoKSk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX2ltYWdl
X3BhdGggPSBpbWFnZV9wYXRoCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAgICAg
ICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQogICAgICAgICBzZWxmLl9kcml2ZXJfdGVt
cGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdEdW1wUmVuZGVyVHJlZS0nKQogCkBAIC00
MTQsMTcgKzQxMSwxNyBAQCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAg
ICBpZiBzZWxmLl9pbWFnZV9wYXRoOgogICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCct
LXBpeGVsLXRlc3RzJykKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6Ci0gICAg
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmFjY2VsZXJhdGVkX2NvbXBvc2l0aW5nOgorICAgICAg
ICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3VzZV9kcnQnKToKKyAgICAgICAgICAgIGlmIHNl
bGYuX3BvcnQuZ2V0X29wdGlvbignYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmcnKToKICAgICAgICAg
ICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tZW5hYmxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0
aW5nJykKIAotICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5hY2NlbGVyYXRlZF8yZF9jYW52
YXM6CisgICAgICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ2FjY2VsZXJhdGVkXzJk
X2NhbnZhcycpOgogICAgICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgnLS1lbmFibGUt
YWNjZWxlcmF0ZWQtMmQtY2FudmFzJykKIAogICAgICAgICByZXR1cm4gZHJpdmVyX2FyZ3MKIAog
ICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgY29tbWFuZCA9IHNlbGYuX2NvbW1hbmRfd3Jh
cHBlcihzZWxmLl9vcHRpb25zLndyYXBwZXIpCisgICAgICAgIGNvbW1hbmQgPSBzZWxmLl9jb21t
YW5kX3dyYXBwZXIoc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCd3cmFwcGVyJykpCiAgICAgICAgIGNv
bW1hbmQgKz0gW3NlbGYuX3BvcnQuX3BhdGhfdG9fZHJpdmVyKCksICctJ10KICAgICAgICAgY29t
bWFuZCArPSBzZWxmLl9kcml2ZXJfYXJncygpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rl
c3RzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKaW5kZXggZmNl
NmU4MmNhZWY4MzVhNzMzOTgwODRiNjkxNDgwMDhkYjI2YWU2OC4uZWYzM2E0NzQ4MWZkZWZkNDcy
MjQ2ZTZlZjIwOTNmMzU5NTI0NTM5MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5p
dHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTMzLDYgKzMz
LDcgQEAgaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJr
aXRweS50b29sIGltcG9ydCBtb2NrdG9vbAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1w
b3J0IHBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCByZWJhc2VsaW5lX2No
cm9taXVtX3dlYmtpdF90ZXN0cwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2
ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgpAQCAtNDYsMTIgKzQ3LDYgQEAgY2xhc3Mg
TW9ja1BvcnQob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuaW1hZ2VfZGlmZl9leGlzdHMK
IAogCi1jbGFzcyBNb2NrT3B0aW9ucyhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBj
b25maWd1cmF0aW9uPU5vbmUsIGh0bWxfZGlyZWN0b3J5PU5vbmUpOgotICAgICAgICBzZWxmLmNv
bmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uCi0gICAgICAgIHNlbGYuaHRtbF9kaXJlY3Rvcnkg
PSBodG1sX2RpcmVjdG9yeQotCi0KIGRlZiBnZXRfbW9ja19nZXQoY29uZmlnX2V4cGVjdGF0aW9u
cyk6CiAgICAgZGVmIG1vY2tfZ2V0KHBvcnRfbmFtZSwgb3B0aW9ucyk6CiAgICAgICAgIHJldHVy
biBNb2NrUG9ydChjb25maWdfZXhwZWN0YXRpb25zW29wdGlvbnMuY29uZmlndXJhdGlvbl0pCkBA
IC02NCw3ICs1OSw4IEBAIGNsYXNzIFRlc3RHZXRIb3N0UG9ydE9iamVjdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgICMgdGhhdCBJbWFnZSBkaWZmIGlzIChvciBpc24ndCkgcHJlc2VudCBp
biB0aGUgdHdvIGNvbmZpZ3MuCiAgICAgICAgIHBvcnQuZ2V0ID0gZ2V0X21vY2tfZ2V0KHsnUmVs
ZWFzZSc6IHJlbGVhc2VfcHJlc2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdEZWJ1Zyc6IGRlYnVnX3ByZXNlbnR9KQotICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMo
KQorICAgICAgICBvcHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj1O
b25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbF9kaXJlY3Rv
cnk9Tm9uZSkKICAgICAgICAgcG9ydF9vYmogPSByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90
ZXN0cy5nZXRfaG9zdF9wb3J0X29iamVjdCgKICAgICAgICAgICAgIG9wdGlvbnMpCiAgICAgICAg
IGlmIHZhbGlkX3BvcnRfb2JqOgpAQCAtOTAsNyArODYsOCBAQCBjbGFzcyBUZXN0R2V0SG9zdFBv
cnRPYmplY3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiBjbGFzcyBUZXN0UmViYXNlbGluZXIodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBtYWtlX3JlYmFzZWxpbmVyKHNlbGYpOgotICAgICAg
ICBvcHRpb25zID0gTW9ja09wdGlvbnMoKQorICAgICAgICBvcHRpb25zID0gbW9ja3Rvb2wuTW9j
a09wdGlvbnMoY29uZmlndXJhdGlvbj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaHRtbF9kaXJlY3Rvcnk9Tm9uZSkKICAgICAgICAgaG9zdF9wb3J0X29iaiA9
IHBvcnQuZ2V0KCd0ZXN0Jywgb3B0aW9ucykKICAgICAgICAgdGFyZ2V0X29wdGlvbnMgPSBvcHRp
b25zCiAgICAgICAgIHRhcmdldF9wb3J0X29iaiA9IHBvcnQuZ2V0KCd0ZXN0JywgdGFyZ2V0X29w
dGlvbnMpCkBAIC0xMjYsNyArMTIzLDggQEAgY2xhc3MgVGVzdEh0bWxHZW5lcmF0b3IodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgIGRlZiBtYWtlX2dlbmVyYXRvcihzZWxmLCB0ZXN0cyk6CiAgICAg
ICAgIHJldHVybiByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5IdG1sR2VuZXJhdG9y
KAogICAgICAgICAgICAgdGFyZ2V0X3BvcnQ9Tm9uZSwKLSAgICAgICAgICAgIG9wdGlvbnM9TW9j
a09wdGlvbnMoaHRtbF9kaXJlY3Rvcnk9Ii90bXAiKSwKKyAgICAgICAgICAgIG9wdGlvbnM9bW9j
a3Rvb2wuTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj1Ob25lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBodG1sX2RpcmVjdG9yeT0nL3RtcCcpLAogICAgICAgICAg
ICAgcGxhdGZvcm1zPVsnbWFjJ10sCiAgICAgICAgICAgICByZWJhc2VsaW5pbmdfdGVzdHM9dGVz
dHMsCiAgICAgICAgICAgICBleGVjdXRpdmU9RXhlY3V0aXZlKCkpCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2xfdW5pdHRlc3QucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2xfdW5pdHRlc3QucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2NlYWEyZTBhYTA4YmE2ZTFmMmFiN2FkMTNkMTA3OWM0ZWUyNzJjMgotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbF91bml0
dGVzdC5weQpAQCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
IyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0
CisKK2Zyb20gbW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCisKKworY2xhc3MgTW9ja09wdGlv
bnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIE1vY2tPcHRpb25zKCkgc2hvdWxkIGlt
cGxlbWVudCB0aGUgc2FtZSBzZW1hbnRpY3MgdGhhdAorICAgICMgb3B0cGFyc2UuVmFsdWVzIGRv
ZXMuCisKKyAgICBkZWYgdGVzdF9nZXRfX3NldChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQg
d2UgY2FuIHN0aWxsIHNldCBvcHRpb25zIGFmdGVyIHdlIGNvbnN0cnVjdCB0aGUKKyAgICAgICAg
IyBvYmplY3QuCisgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucygpCisgICAgICAgIG9wdGlv
bnMuZm9vID0gJ2JhcicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLmZvbywgJ2Jh
cicpCisKKyAgICBkZWYgdGVzdF9nZXRfX3Vuc2V0KHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhh
dCB1bnNldCBvcHRpb25zIHJhaXNlIGFuIGV4Y2VwdGlvbiAocmVndWxhciBNb2NrCisgICAgICAg
ICMgb2JqZWN0cyByZXR1cm4gYW4gb2JqZWN0IGFuZCBoZW5jZSBhcmUgZGlmZmVyZW50IGZyb20K
KyAgICAgICAgIyBvcHRwYXJzZS5WYWx1ZXMoKSkuCisgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0
aW9ucygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6
IG9wdGlvbnMuZm9vKQorCisgICAgZGVmIHRlc3Rfa3dhcmdfX3NldChzZWxmKToKKyAgICAgICAg
IyBUZXN0IHRoYXQga2V5d29yZCBhcmd1bWVudHMgd29yayBpbiB0aGUgY29uc3RydWN0b3IuCisg
ICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhmb289J2JhcicpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwob3B0aW9ucy5mb28sICdiYXInKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6CisgICAgdW5pdHRlc3QubWFpbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71103</attachid>
            <date>2010-10-18 17:04:50 -0700</date>
            <delta_ts>2010-10-18 17:59:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47510-20101018170448.patch</filename>
            <type>text/plain</type>
            <size>41996</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA5ZjY4ZTNlZDExNzVhNTI0Y2MyOTI3MzJlZjlmNThjMTJiNzNmZjkyLi4wNWIyOTQ0
ZDZlYjA0Y2E1YjY0ZDJhNDk3MzhmMjY3MWU3NDI1NjRiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAK
KzIwMTAtMTAtMTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGNsZWFuIHVwIHRoZSBvcHRpb25zLXBhcnNpbmcgY29kZSBpbiB0aGUgcG9ydAorICAg
ICAgICBjbGFzc2VzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgbW9kaWZpZXMgdGhl
IFBvcnQgaW50ZXJmYWNlIHRvIGhhdmUgYSBnZXRfb3B0aW9uKCkgYW5kCisgICAgICAgIHNldF9v
cHRpb25fZGVmYXVsdCgpIG1ldGhvZCBmb3IgYWNjZXNzaW5nIHRoZSBvcHRpb25zIGFyZ3VtZW50
CisgICAgICAgIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuIElmIHRoZSBjb25zdHJ1Y3RvciBp
cyBub3QgcGFzc2VkIGFuCisgICAgICAgIG9wdGlvbnMgYXJndW1lbnQsIHdlIGRlZmF1bHQgdG8g
YSBNb2NrT3B0aW9ucygpIGFyZ3VtZW50IGZyb20KKyAgICAgICAgbW9ja3Rvb2wsIHdoaWNoIGhh
cyB0aGUgc2FtZSBzZW1hbnRpY3Mgd2Ugd2FudC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlcmUg
aXMgYSBkaXNhZHZhbnRhZ2UgdG8gcG9ydC5nZXRfb3B0aW9uKCdmb28nKSBvdmVyCisgICAgICAg
IHBvcnQuX29wdGlvbnMuZm9vLCB3aGljaCBpcyB0aGF0IHlvdSBsb3NlIHNvbWUgb2YgdGhlIGNo
ZWNraW5nCisgICAgICAgIGZvciB3aGV0aGVyICdmb28nIGlzIHNldCAodHlwb3MgcmVzdWx0IGlu
IHRoZSBkZWZhdWx0IHZhbHVlLCBub3QKKyAgICAgICAgYW4gZXhjZXB0aW9uIGJlaW5nIHJhaXNl
ZC4gVGhpcyBpcyBkZXNpcmVkIGluIHRoaXMgY2FzZSwgc2luY2UgdGhlCisgICAgICAgIFBvcnQg
Y2xhc3MgaXMgbm90IGFsbG93ZWQgdG8gYXNzdW1lIHRoYXQgb3B0aW9ucyBkb2VzIGhhdmUgYW55
CisgICAgICAgIHBhcnRpY3VsYXIgdmFsdWVzIHNldCwgYW5kIHNvIHRoaXMgY2hhbmdlIGVuc3Vy
ZXMgdGhhdCBhbGwgb2YKKyAgICAgICAgdGhlIHN1YmNsYXNzZXMgYXJlIGZvbGxvd2luZyB0aGUg
c2FtZSwgaW50ZW5kZWQsIGxvZ2ljLgorCisgICAgICAgIEFyZ3VhYmx5IHRoaXMgaXMgdGhlIHdy
b25nIHNlbWFudGljcyB0byBoYXZlLCBhbmQgdGhlIFBvcnQKKyAgICAgICAgY2xhc3NlcyBzaG91
bGQgYmUgYWJsZSB0byBhc3N1bWUgYSBkZWZhdWx0IHNldCBvZgorICAgICAgICBhdHRyaWJ1dGVz
L2FyZ3VtZW50cywgYnV0IHRoYXQgY2hhbmdlIHdpbGwgbmVlZCB0byB3YWl0IGZvciBhCisgICAg
ICAgIGRpZmZlcmVudCBDTCB3aGVyZSB3ZSBjYW4gbW9kaWZ5IG5ldy1ydW4td2Via2l0LXRlc3Rz
IHRvIHB1bGwgYQorICAgICAgICBsaXN0IG9mIGFyZ3VtZW50cyBmcm9tIHRoZSBwb3J0IGZhY3Rv
cnkgcm91dGluZXMuCisKKyAgICAgICAgQWxzbywgYWRkIHVuaXQgdGVzdHMgZm9yIHdlYmtpdHB5
LnRvb2wubW9ja3Rvb2wuTW9ja09wdGlvbnMgLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUxMAorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV9tYWMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtp
dF90ZXN0c191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9j
a3Rvb2xfdW5pdHRlc3QucHk6IEFkZGVkLgorCiAyMDEwLTEwLTE4ICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5Cmlu
ZGV4IGIxNWVkYjI0NjQ2OGJmODJkYzk1NTIwZTQzZDQ5ZGI4ODFiYmU4YWUuLjYyNWMxZjFiZTM0
OThmYjgwNzgzMDQzMzlmZmI2MWFkYWQ3YWZlZWMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTU1LDYgKzU1
LDIyIEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2VyIGltcG9ydCBVc2VyCiBfbG9n
ID0gbG9ndXRpbHMuZ2V0X2xvZ2dlcihfX2ZpbGVfXykKIAogCitjbGFzcyBEdW1teU9wdGlvbnMo
b2JqZWN0KToKKyAgICAiIiJGYWtlIGltcGxlbWVudGF0aW9uIG9mIG9wdHBhcnNlLlZhbHVlcy4g
Q2xvbmVkIGZyb20KKyAgICB3ZWJraXRweS50b29sLm1vY2t0b29sLk1vY2tPcHRpb25zLgorCisg
ICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAjIFRo
ZSBjYWxsZXIgY2FuIHNldCBvcHRpb24gdmFsdWVzIHVzaW5nIGtleXdvcmQgYXJndW1lbnRzLiBX
ZSBkb24ndAorICAgICAgICAjIHNldCBhbnkgdmFsdWVzIGJ5IGRlZmF1bHQgYmVjYXVzZSB3ZSBk
b24ndCBrbm93IGhvdyB0aGlzCisgICAgICAgICMgb2JqZWN0IHdpbGwgYmUgdXNlZC4gR2VuZXJh
bGx5IHNwZWFraW5nIHVuaXQgdGVzdHMgc2hvdWxkCisgICAgICAgICMgc3ViY2xhc3MgdGhpcyBv
ciBwcm92aWRlciB3cmFwcGVyIGZ1bmN0aW9ucyB0aGF0IHNldCBhIGNvbW1vbgorICAgICAgICAj
IHNldCBvZiBvcHRpb25zLgorICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBrd2FyZ3MuaXRlbXMo
KToKKyAgICAgICAgICAgIHNlbGYuX19kaWN0X19ba2V5XSA9IHZhbHVlCisKKwogIyBGSVhNRTog
VGhpcyBjbGFzcyBzaG91bGQgbWVyZ2Ugd2l0aCB3ZWJraXRweS53ZWJraXRfcG9ydCBhdCBzb21l
IHBvaW50LgogY2xhc3MgUG9ydChvYmplY3QpOgogICAgICIiIkFic3RyYWN0IGNsYXNzIGZvciBQ
b3J0LXNwZWNpZmljIGhvb2tzIGZvciB0aGUgbGF5b3V0X3Rlc3QgcGFja2FnZS4KQEAgLTcwLDcg
Kzg2LDEyIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAq
Kmt3YXJncyk6CiAgICAgICAgIHNlbGYuX25hbWUgPSBrd2FyZ3MuZ2V0KCdwb3J0X25hbWUnLCBO
b25lKQotICAgICAgICBzZWxmLl9vcHRpb25zID0ga3dhcmdzLmdldCgnb3B0aW9ucycsIE5vbmUp
CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBrd2FyZ3MuZ2V0KCdvcHRpb25zJykKKyAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucyBpcyBOb25lOgorICAgICAgICAgICAgIyBGSVhNRTogaWRlYWxseSB3
ZSdkIGhhdmUgYSBwYWNrYWdlLXdpZGUgd2F5IHRvIGdldCBhCisgICAgICAgICAgICAjIHdlbGwt
Zm9ybWVkIG9wdGlvbnMgb2JqZWN0IHRoYXQgaGFkIGFsbCBvZiB0aGUgbmVjZXNzYXJ5CisgICAg
ICAgICAgICAjIG9wdGlvbnMgZGVmaW5lZCBvbiBpdC4KKyAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMgPSBEdW1teU9wdGlvbnMoKQogICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBrd2FyZ3MuZ2V0
KCdleGVjdXRpdmUnLCBFeGVjdXRpdmUoKSkKICAgICAgICAgc2VsZi5fdXNlciA9IGt3YXJncy5n
ZXQoJ3VzZXInLCBVc2VyKCkpCiAgICAgICAgIHNlbGYuX2hlbHBlciA9IE5vbmUKQEAgLTk3LDYg
KzExOCw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgc2VsZi5fcHJldHR5X3BhdGNo
X3BhdGggPSBzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgiQnVnc1NpdGUiLAogICAgICAgICAg
ICAgICAiUHJldHR5UGF0Y2giLCAicHJldHRpZnkucmIiKQogICAgICAgICBzZWxmLl9wcmV0dHlf
cGF0Y2hfYXZhaWxhYmxlID0gVHJ1ZQorICAgICAgICBzZWxmLnNldF9vcHRpb25fZGVmYXVsdCgn
Y29uZmlndXJhdGlvbicsIE5vbmUpCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuY29uZmlndXJh
dGlvbiBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uID0g
c2VsZi5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKQogCiAgICAgZGVmIGRlZmF1bHRfY2hpbGRfcHJv
Y2Vzc2VzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBEdW1wUmVuZGVy
VHJlZSBpbnN0YW5jZXMgdG8gdXNlIGZvciB0aGlzCkBAIC00NDYsNiArNDcwLDE4IEBAIGNsYXNz
IFBvcnQob2JqZWN0KToKICAgICAgICAgbWF5IGJlIGRpZmZlcmVudCAoZS5nLiwgJ3dpbi14cCcg
aW5zdGVhZCBvZiAnY2hyb21pdW0td2luLXhwJy4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX25h
bWUKIAorICAgIGRlZiBnZXRfb3B0aW9uKHNlbGYsIG5hbWUsIGRlZmF1bHRfdmFsdWU9Tm9uZSk6
CisgICAgICAgICMgRklYTUU6IGV2ZW50dWFsbHkgd2Ugc2hvdWxkIG5vdCBoYXZlIHRvIGRvIGEg
dGVzdCBmb3IKKyAgICAgICAgIyBoYXNhdHRyKCksIGFuZCB3ZSBzaG91bGQgYmUgYWJsZSB0byBq
dXN0IGRvCisgICAgICAgICMgc2VsZi5vcHRpb25zLnZhbHVlLiBTZWUgYWRkaXRpb25hbCBGSVhN
RSBpbiB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fb3B0aW9ucywg
bmFtZSk6CisgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLl9vcHRpb25zLCBuYW1lKQor
ICAgICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZQorCisgICAgZGVmIHNldF9vcHRpb25fZGVmYXVs
dChzZWxmLCBuYW1lLCBkZWZhdWx0X3ZhbHVlKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoc2Vs
Zi5fb3B0aW9ucywgbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gc2V0YXR0cihzZWxmLl9vcHRp
b25zLCBuYW1lLCBkZWZhdWx0X3ZhbHVlKQorCiAgICAgIyBGSVhNRTogVGhpcyBjb3VsZCBiZSBy
ZXBsYWNlZCBieSBmdW5jdGlvbnMgaW4gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS4KICAg
ICBkZWYgcGF0aF9mcm9tX3dlYmtpdF9iYXNlKHNlbGYsICpjb21wcyk6CiAgICAgICAgICIiIlJl
dHVybnMgdGhlIGZ1bGwgcGF0aCB0byBwYXRoIG1hZGUgYnkgam9pbmluZyB0aGUgdG9wIG9mIHRo
ZQpAQCAtNTEwLDEyICs1NDYsMTIgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAiIiJT
dGFydCBhIHdlYiBzZXJ2ZXIgaWYgaXQgaXMgYXZhaWxhYmxlLiBEbyBub3RoaW5nIGlmCiAgICAg
ICAgIGl0IGlzbid0LiBUaGlzIHJvdXRpbmUgaXMgYWxsb3dlZCB0byAoYW5kIG1heSkgZmFpbCBp
ZiBhIHNlcnZlcgogICAgICAgICBpcyBhbHJlYWR5IHJ1bm5pbmcuIiIiCi0gICAgICAgIGlmIHNl
bGYuX29wdGlvbnMudXNlX2FwYWNoZToKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd1c2Vf
YXBhY2hlJyk6CiAgICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlciA9IGFwYWNoZV9odHRwX3Nl
cnZlci5MYXlvdXRUZXN0QXBhY2hlSHR0cGQoc2VsZiwKLSAgICAgICAgICAgICAgICBzZWxmLl9v
cHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5KQorICAgICAgICAgICAgICAgIHNlbGYuZ2V0X29wdGlv
bigncmVzdWx0c19kaXJlY3RvcnknKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYu
X2h0dHBfc2VydmVyID0gaHR0cF9zZXJ2ZXIuTGlnaHR0cGQoc2VsZiwKLSAgICAgICAgICAgICAg
ICBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5KQorICAgICAgICAgICAgICAgIHNlbGYu
Z2V0X29wdGlvbigncmVzdWx0c19kaXJlY3RvcnknKSkKICAgICAgICAgc2VsZi5faHR0cF9zZXJ2
ZXIuc3RhcnQoKQogCiAgICAgZGVmIHN0YXJ0X3dlYnNvY2tldF9zZXJ2ZXIoc2VsZik6CkBAIC01
MjMsNyArNTU5LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBpdCBpc24ndC4gVGhp
cyByb3V0aW5lIGlzIGFsbG93ZWQgdG8gKGFuZCBtYXkpIGZhaWwgaWYgYSBzZXJ2ZXIKICAgICAg
ICAgaXMgYWxyZWFkeSBydW5uaW5nLiIiIgogICAgICAgICBzZWxmLl93ZWJzb2NrZXRfc2VydmVy
ID0gd2Vic29ja2V0X3NlcnZlci5QeVdlYlNvY2tldChzZWxmLAotICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSkKKyAgICAgICAgICAgIHNlbGYuZ2V0X29wdGlvbign
cmVzdWx0c19kaXJlY3RvcnknKSkKICAgICAgICAgc2VsZi5fd2Vic29ja2V0X3NlcnZlci5zdGFy
dCgpCiAKICAgICBkZWYgYWNxdWlyZV9odHRwX2xvY2soc2VsZik6CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3Qu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Vf
dW5pdHRlc3QucHkKaW5kZXggNDBlYjk4NGNiOTE0YTU5NTA5Njk5MDIwODA5YTNiMGQ2MDIyYTEw
Yy4uYTM3YjRkMTAyMjU0MGNiYjAyMGE3YTM1MGVkY2I5YWQyMzA2MTRiMyAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0
ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvYmFzZV91bml0dGVzdC5weQpAQCAtMjYsMTYgKzI2LDE4IEBACiAjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgYmFzZQoraW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgb3MK
IGltcG9ydCBTdHJpbmdJTwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5p
dHRlc3QKIAorZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBtb2NrdG9vbAogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgog
ZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIAoraW1wb3J0IGJhc2UK
IAogIyBGSVhNRTogVGhpcyBtYWtlcyBTdHJpbmdJTyBvYmplY3RzIHdvcmsgd2l0aCAid2l0aCIu
IFJlbW92ZQogIyB3aGVuIHdlIHVwZ3JhZGUgdG8gMi42LgpAQCAtMjQ2LDYgKzI0OCw0MCBAQCBj
bGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocG9ydC5maWxlbmFtZV90b191cmkodGVzdF9maWxlKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmVmaXggKyBwYXRoKQogCisgICAgZGVmIHRlc3RfZ2V0X29wdGlvbl9fc2V0KHNlbGYp
OgorICAgICAgICBvcHRpb25zLCBhcmdzID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkucGFyc2Vf
YXJncygpCisgICAgICAgIG9wdGlvbnMuZm9vID0gJ2JhcicKKyAgICAgICAgcG9ydCA9IGJhc2Uu
UG9ydChvcHRpb25zPW9wdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5nZXRf
b3B0aW9uKCdmb28nKSwgJ2JhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfb3B0aW9uX191bnNldChz
ZWxmKToKKyAgICAgICAgcG9ydCA9IGJhc2UuUG9ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocG9ydC5nZXRfb3B0aW9uKCdmb28nKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2dldF9vcHRp
b25fX2RlZmF1bHQoc2VsZik6CisgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQoKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBvcnQuZ2V0X29wdGlvbignZm9vJywgJ2JhcicpLCAnYmFyJykKKwor
ICAgIGRlZiB0ZXN0X3NldF9vcHRpb25fZGVmYXVsdF9fdW5zZXQoc2VsZik6CisgICAgICAgIHBv
cnQgPSBiYXNlLlBvcnQoKQorICAgICAgICBwb3J0LnNldF9vcHRpb25fZGVmYXVsdCgnZm9vJywg
J2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5nZXRfb3B0aW9uKCdmb28nKSwg
J2JhcicpCisKKyAgICBkZWYgdGVzdF9zZXRfb3B0aW9uX2RlZmF1bHRfX3NldChzZWxmKToKKyAg
ICAgICAgb3B0aW9ucywgYXJncyA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpLnBhcnNlX2FyZ3Mo
KQorICAgICAgICBvcHRpb25zLmZvbyA9ICdiYXInCisgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQo
b3B0aW9ucz1vcHRpb25zKQorICAgICAgICAjIFRoaXMgY2FsbCBzaG91bGQgaGF2ZSBubyBlZmZl
Y3QuCisgICAgICAgIHBvcnQuc2V0X29wdGlvbl9kZWZhdWx0KCdmb28nLCAnbmV3X2JhcicpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5nZXRfb3B0aW9uKCdmb28nKSwgJ2JhcicpCisK
KyAgICBkZWYgdGVzdF9uYW1lX191bnNldChzZWxmKToKKyAgICAgICAgcG9ydCA9IGJhc2UuUG9y
dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5uYW1lKCksIE5vbmUpCisKKyAgICBk
ZWYgdGVzdF9uYW1lX19zZXQoc2VsZik6CisgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQocG9ydF9u
YW1lPSdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQubmFtZSgpLCAnZm9vJykK
IAogCiBjbGFzcyBWaXJ0dWFsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bS5weQppbmRleCAwZmFlNjJmM2EyMzFlNjBkZDY2NDk5MmU3NWQwZDE4ZDM1YTNhYzI2Li5hM2Zm
ZWI3M2JlMjhkY2VmMDU1Mjk3NDgzMGQ0MjlhMTk0Y2VkZDdlIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0u
cHkKQEAgLTg0LDExICs4NCw2IEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogCiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKICAgICAgICAgYmFzZS5Qb3J0Ll9faW5p
dF9fKHNlbGYsICoqa3dhcmdzKQotICAgICAgICBpZiAnb3B0aW9ucycgaW4ga3dhcmdzOgotICAg
ICAgICAgICAgb3B0aW9ucyA9IGt3YXJnc1snb3B0aW9ucyddCi0gICAgICAgICAgICBpZiAob3B0
aW9ucyBhbmQgKG5vdCBoYXNhdHRyKG9wdGlvbnMsICdjb25maWd1cmF0aW9uJykgb3IKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5jb25maWd1cmF0aW9uIGlzIE5vbmUpKToK
LSAgICAgICAgICAgICAgICBvcHRpb25zLmNvbmZpZ3VyYXRpb24gPSBzZWxmLmRlZmF1bHRfY29u
ZmlndXJhdGlvbigpCiAgICAgICAgIHNlbGYuX2Nocm9taXVtX2Jhc2VfZGlyID0gTm9uZQogCiAg
ICAgZGVmIGJhc2VsaW5lX3BhdGgoc2VsZik6CkBAIC0xMDAsOSArOTUsOSBAQCBjbGFzcyBDaHJv
bWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgZHVtcF9yZW5kZXJfdHJlZV9iaW5hcnlfcGF0
aCA9IHNlbGYuX3BhdGhfdG9fZHJpdmVyKCkKICAgICAgICAgcmVzdWx0ID0gY2hlY2tfZmlsZV9l
eGlzdHMoZHVtcF9yZW5kZXJfdHJlZV9iaW5hcnlfcGF0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd0ZXN0IGRyaXZlcicpIGFuZCByZXN1bHQKLSAgICAgICAgaWYgcmVz
dWx0IGFuZCBzZWxmLl9vcHRpb25zLmJ1aWxkOgorICAgICAgICBpZiByZXN1bHQgYW5kIHNlbGYu
Z2V0X29wdGlvbignYnVpbGQnKToKICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2NoZWNrX2Ry
aXZlcl9idWlsZF91cF90b19kYXRlKAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuY29u
ZmlndXJhdGlvbikKKyAgICAgICAgICAgICAgICBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRp
b24nKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCiAKQEAgLTEx
MSw3ICsxMDYsNyBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAg
IHJlc3VsdCA9IGNoZWNrX2ZpbGVfZXhpc3RzKGhlbHBlcl9wYXRoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2xheW91dCB0ZXN0IGhlbHBlcicpIGFuZCByZXN1bHQK
IAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzOgorICAgICAgICBpZiBzZWxm
LmdldF9vcHRpb24oJ3BpeGVsX3Rlc3RzJyk6CiAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmNo
ZWNrX2ltYWdlX2RpZmYoCiAgICAgICAgICAgICAgICAgJ1RvIG92ZXJyaWRlLCBpbnZva2Ugd2l0
aCAtLW5vLXBpeGVsLXRlc3RzJykgYW5kIHJlc3VsdAogCkBAIC0yMDEsMTAgKzE5NiwxMSBAQCBj
bGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICBkZWYgcmVzdWx0c19kaXJlY3Rvcnko
c2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9j
aHJvbWl1bV9iYXNlKCd3ZWJraXQnLAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuY29u
ZmlndXJhdGlvbiwgc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSkKKyAgICAgICAgICAg
ICAgICBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwKKyAgICAgICAgICAgICAgICBz
ZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5JykpCiAgICAgICAgIGV4Y2VwdCBBc3Nl
cnRpb25FcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuX29w
dGlvbnMuY29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkpCisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X29wdGlvbigncmVzdWx0c19kaXJl
Y3RvcnknKSkKIAogICAgIGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmKToKICAgICAgICAgIyBEZWxl
dGUgdGhlIGRpc2sgY2FjaGUgaWYgYW55IHRvIGVuc3VyZSBhIGNsZWFuIHRlc3QgcnVuLgpAQCAt
MjU4LDcgKzI1NCw3IEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICAgICAj
IEZJWE1FOiBUaGlzIGRydF9vdmVycmlkZXMgaGFuZGxpbmcgc2hvdWxkIGJlIHJlbW92ZWQgd2hl
biB3ZSBzd2l0Y2gKICAgICAgICAgIyBmcm9tIHRlc19zaGVsbCB0byBEUlQuCiAgICAgICAgIGRy
dF9vdmVycmlkZXMgPSAnJwotICAgICAgICBpZiBzZWxmLl9vcHRpb25zIGFuZCBzZWxmLl9vcHRp
b25zLnVzZV9kcnQ6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAg
ICAgICAgICAgZHJ0X292ZXJyaWRlc19wYXRoID0gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2Uo
J0xheW91dFRlc3RzJywKICAgICAgICAgICAgICAgICAncGxhdGZvcm0nLCAnY2hyb21pdW0nLCAn
ZHJ0X2V4cGVjdGF0aW9ucy50eHQnKQogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZHJ0
X292ZXJyaWRlc19wYXRoKToKQEAgLTM0Niw5ICszNDIsOSBAQCBjbGFzcyBDaHJvbWl1bVBvcnQo
YmFzZS5Qb3J0KToKIAogICAgIGRlZiBfcGF0aF90b19pbWFnZV9kaWZmKHNlbGYpOgogICAgICAg
ICBiaW5hcnlfbmFtZSA9ICdpbWFnZV9kaWZmJwotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVz
ZV9kcnQ6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAg
ICAgYmluYXJ5X25hbWUgPSAnSW1hZ2VEaWZmJwotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRf
cGF0aChzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24sIGJpbmFyeV9uYW1lKQorICAgICAgICBy
ZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwg
YmluYXJ5X25hbWUpCiAKIAogY2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgpAQCAt
MzY1LDI3ICszNjEsMjcgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAg
ICAgICBpZiBzZWxmLl9pbWFnZV9wYXRoOgogICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5k
KCItLXBpeGVsLXRlc3RzPSIgKyBzZWxmLl9pbWFnZV9wYXRoKQogCi0gICAgICAgIGlmIHNlbGYu
X29wdGlvbnMudXNlX2RydDoKKyAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCd1c2Vf
ZHJ0Jyk6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tdGVzdC1zaGVsbCcpCiAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tbGF5b3V0LXRl
c3RzJykKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnN0YXJ0dXBfZGlhbG9nOgorICAgICAg
ICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3N0YXJ0dXBfZGlhbG9nJyk6CiAgICAgICAgICAg
ICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tdGVzdHNoZWxsLXN0YXJ0dXAtZGlhbG9nJykKIAotICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLmdwX2ZhdWx0X2Vycm9yX2JveDoKKyAgICAgICAgaWYgc2Vs
Zi5fcG9ydC5nZXRfb3B0aW9uKCdncF9mYXVsdF9lcnJvcl9ib3gnKToKICAgICAgICAgICAgIGRy
aXZlcl9hcmdzLmFwcGVuZCgnLS1ncC1mYXVsdC1lcnJvci1ib3gnKQogCi0gICAgICAgIGlmIHNl
bGYuX29wdGlvbnMuYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmc6CisgICAgICAgIGlmIHNlbGYuX3Bv
cnQuZ2V0X29wdGlvbignYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmcnKToKICAgICAgICAgICAgIGRy
aXZlcl9hcmdzLmFwcGVuZCgnLS1lbmFibGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmcnKQogCi0g
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMuYWNjZWxlcmF0ZWRfMmRfY2FudmFzOgorICAgICAgICBp
ZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ2FjY2VsZXJhdGVkXzJkX2NhbnZhcycpOgogICAgICAg
ICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLWVuYWJsZS1hY2NlbGVyYXRlZC0yZC1jYW52YXMn
KQogICAgICAgICByZXR1cm4gZHJpdmVyX2FyZ3MKIAogICAgIGRlZiBzdGFydChzZWxmKToKICAg
ICAgICAgIyBGSVhNRTogU2hvdWxkIGJlIGFuIGVycm9yIHRvIGNhbGwgdGhpcyBtZXRob2QgdHdp
Y2UuCi0gICAgICAgIGNtZCA9IHNlbGYuX2NvbW1hbmRfd3JhcHBlcihzZWxmLl9vcHRpb25zLndy
YXBwZXIpCisgICAgICAgIGNtZCA9IHNlbGYuX2NvbW1hbmRfd3JhcHBlcihzZWxmLl9wb3J0Lmdl
dF9vcHRpb24oJ3dyYXBwZXInKSkKICAgICAgICAgY21kLmFwcGVuZChzZWxmLl9wb3J0Ll9wYXRo
X3RvX2RyaXZlcigpKQogICAgICAgICBjbWQgKz0gc2VsZi5fZHJpdmVyX2FyZ3MoKQogCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX2dwdV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5CmluZGV4IDFkZDNlYWVkOGNh
NDIwOWQ2NzIwMDgxNDM3NDEwZTU3MmY2NmY2OTYuLjNmMTNiOTNmODA1YWIwODJlN2JkZDdlZmU2
ODU3OWE4NTQ1NWU4M2MgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0
ZXN0LnB5CkBAIC0yNiwxMyArMjYsOSBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAot
aW1wb3J0IGNocm9taXVtX2dwdQotCiAKLWNsYXNzIE1vY2tPcHRpb25zKG9iamVjdCk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLmFjY2VsZXJhdGVkX2NvbXBvc2l0aW5n
ID0gTm9uZQotICAgICAgICBzZWxmLmFjY2VsZXJhdGVkXzJkX2NhbnZhcyA9IE5vbmUKK2Zyb20g
d2Via2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKK2ltcG9ydCBjaHJvbWl1bV9ncHUKIAogCiBj
bGFzcyBDaHJvbWl1bUdwdVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDcsNyArNDMsOSBA
QCBjbGFzcyBDaHJvbWl1bUdwdVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIGFz
c2VydE92ZXJyaWRlc1dvcmtlZChzZWxmLCBwb3J0X25hbWUpOgogICAgICAgICAjIHRlc3QgdGhh
dCB3ZSBnb3QgdGhlIHJpZ2h0IHBvcnQKLSAgICAgICAgcG9ydCA9IGNocm9taXVtX2dwdS5nZXQo
cG9ydF9uYW1lPXBvcnRfbmFtZSwgb3B0aW9ucz1Nb2NrT3B0aW9ucygpKQorICAgICAgICBtb2Nr
X29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucyhhY2NlbGVyYXRlZF9jb21wb3NpdGluZz1O
b25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlbGVy
YXRlZF8yZF9jYW52YXM9Tm9uZSkKKyAgICAgICAgcG9ydCA9IGNocm9taXVtX2dwdS5nZXQocG9y
dF9uYW1lPXBvcnRfbmFtZSwgb3B0aW9ucz1tb2NrX29wdGlvbnMpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShwb3J0Ll9vcHRpb25zLmFjY2VsZXJhdGVkX2NvbXBvc2l0aW5nKQogICAgICAgICBz
ZWxmLmFzc2VydFRydWUocG9ydC5fb3B0aW9ucy5hY2NlbGVyYXRlZF8yZF9jYW52YXMpCiAKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fbGludXgucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5CmluZGV4IDE3Njk5MWI3ZjZhNjhkZjc3OWY3MWQ1
MTEwNDQxMzI4NjllMWUxODkuLmIyNmE2YjU3NDE1NzNmMmI3ZTQzNjkyYjhkMWIzYTY5MWQ4ZGVk
MDcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fbGludXgucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weQpAQCAtNTIsNyArNTIsNyBAQCBj
bGFzcyBDaHJvbWl1bUxpbnV4UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgIGRlZiBj
aGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKToKICAgICAgICAgcmVzdWx0ID0gY2hyb21pdW0u
Q2hyb21pdW1Qb3J0LmNoZWNrX2J1aWxkKHNlbGYsIG5lZWRzX2h0dHApCiAgICAgICAgIGlmIG5l
ZWRzX2h0dHA6Ci0gICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9hcGFjaGU6CisgICAg
ICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9hcGFjaGUnKToKICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBzZWxmLl9jaGVja19hcGFjaGVfaW5zdGFsbCgpIGFuZCByZXN1bHQKICAgICAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fY2hlY2tfbGlnaHR0
cGRfaW5zdGFsbCgpIGFuZCByZXN1bHQKQEAgLTgxLDcgKzgxLDcgQEAgY2xhc3MgQ2hyb21pdW1M
aW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgYmFzZSA9IHNlbGYucGF0
aF9mcm9tX2Nocm9taXVtX2Jhc2UoKQogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRo
LmpvaW4oYmFzZSwgJ3Njb25zYnVpbGQnKSk6CiAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5q
b2luKGJhc2UsICdzY29uc2J1aWxkJywgKmNvbXBzKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0
cyhvcy5wYXRoLmpvaW4oYmFzZSwgJ291dCcsICpjb21wcykpIG9yIG5vdCBzZWxmLl9vcHRpb25z
LnVzZV9kcnQ6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihiYXNlLCAn
b3V0JywgKmNvbXBzKSkgb3Igbm90IHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAg
ICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihiYXNlLCAnb3V0JywgKmNvbXBzKQogICAgICAgICBi
YXNlID0gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoKQogICAgICAgICBpZiBvcy5wYXRoLmV4
aXN0cyhvcy5wYXRoLmpvaW4oYmFzZSwgJ3Njb25zYnVpbGQnKSk6CkBAIC0xNDcsOSArMTQ3LDkg
QEAgY2xhc3MgQ2hyb21pdW1MaW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKIAogICAg
IGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lKToKICAgICAgICAg
aWYgbm90IGNvbmZpZ3VyYXRpb246Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5f
b3B0aW9ucy5jb25maWd1cmF0aW9uCisgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5n
ZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykKICAgICAgICAgYmluYXJ5X25hbWUgPSAndGVzdF9z
aGVsbCcKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBzZWxm
LmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGJpbmFyeV9uYW1lID0gJ0R1bXBS
ZW5kZXJUcmVlJwogICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChjb25maWd1cmF0aW9u
LCBiaW5hcnlfbmFtZSkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weQppbmRleCA2NDAxNmFi
MDQyY2FlOGE4ZTI3YmRjYWFiNDYxY2Y1Y2FlM2EyZjgxLi5kMWMzODNjMTNlYzJmMTNhZjVmYjFm
MTU0MDU3OWM0Yzg4OWZkZDYzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weQpAQCAtNzMs
NyArNzMsNyBAQCBjbGFzcyBDaHJvbWl1bU1hY1BvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToK
IAogICAgIGRlZiBkcml2ZXJfbmFtZShzZWxmKToKICAgICAgICAgIiIibmFtZSBmb3IgdGhpcyBw
b3J0J3MgZXF1aXZhbGVudCBvZiBEdW1wUmVuZGVyVHJlZS4iIiIKLSAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToK
ICAgICAgICAgICAgIHJldHVybiAiRHVtcFJlbmRlclRyZWUiCiAgICAgICAgIHJldHVybiAiVGVz
dFNoZWxsIgogCkBAIC0xMDAsNyArMTAwLDcgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0KGNocm9t
aXVtLkNocm9taXVtUG9ydCk6CiAKICAgICBkZWYgX2J1aWxkX3BhdGgoc2VsZiwgKmNvbXBzKToK
ICAgICAgICAgcGF0aCA9IHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3hjb2RlYnVpbGQn
LCAqY29tcHMpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpIG9yIG5vdCBzZWxmLl9v
cHRpb25zLnVzZV9kcnQ6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpIG9yIG5vdCBz
ZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIHJldHVybiBwYXRoCiAgICAg
ICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnV2ViS2l0JywgJ2Nocm9taXVt
JywgJ3hjb2RlYnVpbGQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKmNvbXBzKQpAQCAtMTM4LDE1ICsxMzgsMTUgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0KGNo
cm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgICMgRklYTUU6IG1ha2UgfGNvbmZpZ3VyYXRp
b258IGhhcHB5IHdpdGggY2FzZS1zZW5zaXRpdmUgZmlsZQogICAgICAgICAjIHN5c3RlbXMuCiAg
ICAgICAgIGlmIG5vdCBjb25maWd1cmF0aW9uOgotICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9
IHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9
IHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpCiAgICAgICAgIHJldHVybiBzZWxmLl9i
dWlsZF9wYXRoKGNvbmZpZ3VyYXRpb24sIHNlbGYuZHJpdmVyX25hbWUoKSArICcuYXBwJywKICAg
ICAgICAgICAgICdDb250ZW50cycsICdNYWNPUycsIHNlbGYuZHJpdmVyX25hbWUoKSkKIAogICAg
IGRlZiBfcGF0aF90b19oZWxwZXIoc2VsZik6CiAgICAgICAgIGJpbmFyeV9uYW1lID0gJ2xheW91
dF90ZXN0X2hlbHBlcicKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAg
ICBpZiBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGJpbmFyeV9uYW1l
ID0gJ0xheW91dFRlc3RIZWxwZXInCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNl
bGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiwgYmluYXJ5X25hbWUpCisgICAgICAgIHJldHVybiBz
ZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCBiaW5hcnlf
bmFtZSkKIAogICAgIGRlZiBfcGF0aF90b193ZGlmZihzZWxmKToKICAgICAgICAgcmV0dXJuICd3
ZGlmZicKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CmluZGV4IGUzODU4ZjBj
NGZjNjcyYjM4OWJjOTE4OGY5YWQ2MDY4ZTExY2VlNjYuLjVkODc5YjM1MDQ4ZGUxYjU2NGUxNzEy
ODkxMjFjZDIzNzZiZmIwMjIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5w
eQpAQCAtMjYsMjQgKzI2LDIyIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1p
bXBvcnQgY2hyb21pdW0KLWltcG9ydCBjaHJvbWl1bV9saW51eAotaW1wb3J0IGNocm9taXVtX21h
YwotaW1wb3J0IGNocm9taXVtX3dpbgoraW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9y
dCBTdHJpbmdJTwotaW1wb3J0IG9zCiAKK2Zyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rv
b2wKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiAKK2ltcG9ydCBj
aHJvbWl1bQoraW1wb3J0IGNocm9taXVtX2xpbnV4CitpbXBvcnQgY2hyb21pdW1fbWFjCitpbXBv
cnQgY2hyb21pdW1fd2luCiAKIGNsYXNzIENocm9taXVtRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIG1vY2tfcG9ydCA9IE1vY2so
KQotICAgICAgICAjIEZJWE1FOiBUaGUgRHJpdmVyIHNob3VsZCBub3QgYmUgZ3JhYmJpbmcgYXQg
cG9ydC5fb3B0aW9ucyEKLSAgICAgICAgbW9ja19wb3J0Ll9vcHRpb25zID0gTW9jaygpCi0gICAg
ICAgIG1vY2tfcG9ydC5fb3B0aW9ucy53cmFwcGVyID0gIiIKICAgICAgICAgc2VsZi5kcml2ZXIg
PSBjaHJvbWl1bS5DaHJvbWl1bURyaXZlcihtb2NrX3BvcnQsIGltYWdlX3BhdGg9Tm9uZSwgb3B0
aW9ucz1Ob25lKQogCiAgICAgZGVmIHRlc3RfdGVzdF9zaGVsbF9jb21tYW5kKHNlbGYpOgpAQCAt
MTA2LDI1ICsxMDQsMTkgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgICAgICByZXR1cm4gJ2RlZmF1bHQnCiAKICAgICBkZWYgdGVzdF9wYXRoX3Rv
X2ltYWdlX2RpZmYoc2VsZik6Ci0gICAgICAgIGNsYXNzIE1vY2tPcHRpb25zOgotICAgICAgICAg
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHNlbGYudXNlX2RydCA9IFRy
dWUKLQotICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0KG9wdGlv
bnM9TW9ja09wdGlvbnMoKSkKKyAgICAgICAgbW9ja19vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09w
dGlvbnModXNlX2RydD1UcnVlKQorICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0
TGludXhQb3J0KG9wdGlvbnM9bW9ja19vcHRpb25zKQogICAgICAgICBzZWxmLmFzc2VydFRydWUo
cG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKCkuZW5kc3dpdGgoCiAgICAgICAgICAgICAnL291dC9k
ZWZhdWx0L0ltYWdlRGlmZicpLCBtc2c9cG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKCkpCi0gICAg
ICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RNYWNQb3J0KG9wdGlvbnM9TW9ja09wdGlv
bnMoKSkKKyAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdE1hY1BvcnQob3B0aW9u
cz1tb2NrX29wdGlvbnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Ll9wYXRoX3RvX2lt
YWdlX2RpZmYoKS5lbmRzd2l0aCgKICAgICAgICAgICAgICcveGNvZGVidWlsZC9kZWZhdWx0L0lt
YWdlRGlmZicpKQogICAgICAgICAjIEZJWE1FOiBGaWd1cmUgb3V0IGhvdyB0aGlzIGlzIGdvaW5n
IHRvIHdvcmsgb24gV2luZG93cy4KICAgICAgICAgI3BvcnQgPSBjaHJvbWl1bV93aW4uQ2hyb21p
dW1XaW5Qb3J0KCd0ZXN0LXBvcnQnLCBvcHRpb25zPU1vY2tPcHRpb25zKCkpCiAKICAgICBkZWYg
dGVzdF9za2lwcGVkX2xheW91dF90ZXN0cyhzZWxmKToKLSAgICAgICAgY2xhc3MgTW9ja09wdGlv
bnM6Ci0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi51c2VfZHJ0ID0gVHJ1ZQotCi0gICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RM
aW51eFBvcnQob3B0aW9ucz1Nb2NrT3B0aW9ucygpKQorICAgICAgICBtb2NrX29wdGlvbnMgPSBt
b2NrdG9vbC5Nb2NrT3B0aW9ucyh1c2VfZHJ0PVRydWUpCisgICAgICAgIHBvcnQgPSBDaHJvbWl1
bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQob3B0aW9ucz1tb2NrX29wdGlvbnMpCiAKICAgICAgICAg
ZmFrZV90ZXN0ID0gb3MucGF0aC5qb2luKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCAiZmFzdC9q
cy9ub3QtZ29vZC5qcyIpCiAKQEAgLTEzOCwyMiArMTMwLDE0IEBAIERFRkVSIExJTlVYIFdJTiA6
IGZhc3QvanMvdmVyeS1nb29kLmpzID0gVElNRU9VVCBQQVNTIiIiCiAgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSgiZmFzdC9qcy9ub3QtZ29vZC5qcyIgaW4gc2tpcHBlZF90ZXN0cykKIAogICAgIGRl
ZiB0ZXN0X2RlZmF1bHRfY29uZmlndXJhdGlvbihzZWxmKToKLSAgICAgICAgY2xhc3MgRW1wdHlP
cHRpb25zOgotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgICAg
IHBhc3MKLQotICAgICAgICBvcHRpb25zID0gRW1wdHlPcHRpb25zKCkKLSAgICAgICAgcG9ydCA9
IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChvcHRpb25zKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhvcHRpb25zLmNvbmZpZ3VyYXRpb24sICdkZWZhdWx0JykKKyAgICAgICAgbW9j
a19vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnMoKQorICAgICAgICBwb3J0ID0gQ2hyb21p
dW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0KG9wdGlvbnM9bW9ja19vcHRpb25zKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhtb2NrX29wdGlvbnMuY29uZmlndXJhdGlvbiwgJ2RlZmF1bHQnKQog
ICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5kZWZhdWx0X2NvbmZpZ3VyYXRpb25fY2FsbGVk
KQogCi0gICAgICAgIGNsYXNzIE9wdGlvbnNXaXRoVW5zZXRDb25maWd1cmF0aW9uOgotICAgICAg
ICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJh
dGlvbiA9IE5vbmUKLQotICAgICAgICBvcHRpb25zID0gT3B0aW9uc1dpdGhVbnNldENvbmZpZ3Vy
YXRpb24oKQotICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0KG9w
dGlvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuY29uZmlndXJhdGlvbiwg
J2RlZmF1bHQnKQorICAgICAgICBtb2NrX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucyhj
b25maWd1cmF0aW9uPU5vbmUpCisgICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RM
aW51eFBvcnQobW9ja19vcHRpb25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtb2NrX29w
dGlvbnMuY29uZmlndXJhdGlvbiwgJ2RlZmF1bHQnKQogICAgICAgICBzZWxmLmFzc2VydFRydWUo
cG9ydC5kZWZhdWx0X2NvbmZpZ3VyYXRpb25fY2FsbGVkKQogCiAgICAgZGVmIHRlc3RfZGlmZl9p
bWFnZShzZWxmKToKQEAgLTE2MSw5ICsxNDUsNiBAQCBERUZFUiBMSU5VWCBXSU4gOiBmYXN0L2pz
L3ZlcnktZ29vZC5qcyA9IFRJTUVPVVQgUEFTUyIiIgogICAgICAgICAgICAgZGVmIF9wYXRoX3Rv
X2ltYWdlX2RpZmYoc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuICIvcGF0aC90by9pbWFn
ZV9kaWZmIgogCi0gICAgICAgIGNsYXNzIEVtcHR5T3B0aW9uczoKLSAgICAgICAgICAgIHVzZV9k
cnQgPSBGYWxzZQotCiAgICAgICAgIGNsYXNzIE1vY2tFeGVjdXRlOgogICAgICAgICAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHJlc3VsdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fcmVzdWx0ID0g
cmVzdWx0CkBAIC0xNzgsOCArMTU5LDggQEAgREVGRVIgTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5
LWdvb2QuanMgPSBUSU1FT1VUIFBBU1MiIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWNvZGVfb3V0cHV0PUZhbHNlKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVzdWx0
CiAKLSAgICAgICAgb3B0aW9ucyA9IEVtcHR5T3B0aW9ucygpCi0gICAgICAgIHBvcnQgPSBDaHJv
bWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQob3B0aW9ucykKKyAgICAgICAgbW9ja19vcHRpb25z
ID0gbW9ja3Rvb2wuTW9ja09wdGlvbnModXNlX2RydD1GYWxzZSkKKyAgICAgICAgcG9ydCA9IENo
cm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChtb2NrX29wdGlvbnMpCiAKICAgICAgICAgIyBJ
bWFnZXMgYXJlIGRpZmZlcmVudC4KICAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1
dGUoMCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fd2luLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkKaW5kZXggNjdkMmFiMmYxZGM5MDc0ZmRh
YTYyN2VjMmE0ZDA5ZjMzYjhjYjU2MC4uNjliNTI5YWUxYjQzYWI0ZWQ2NjNlMGY2ZWI0MTY1N2Vh
NmZiNzQ1OCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkKQEAgLTU1LDkgKzU1LDcgQEAg
Y2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgICMg
cHl0aG9uIGV4ZWN1dGFibGUgdG8gcnVuIGNnaSBwcm9ncmFtLgogICAgICAgICBlbnZbIkNZR1dJ
Tl9QQVRIIl0gPSBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKAogICAgICAgICAgICAgInRo
aXJkX3BhcnR5IiwgImN5Z3dpbiIsICJiaW4iKQotICAgICAgICBpZiAoc3lzLnBsYXRmb3JtID09
ICJ3aW4zMiIgYW5kIHNlbGYuX29wdGlvbnMgYW5kCi0gICAgICAgICAgICBoYXNhdHRyKHNlbGYu
X29wdGlvbnMsICJyZWdpc3Rlcl9jeWd3aW4iKSBhbmQKLSAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMucmVnaXN0ZXJfY3lnd2luKToKKyAgICAgICAgaWYgKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIi
IGFuZCBzZWxmLmdldF9vcHRpb24oJ3JlZ2lzdGVyX2N5Z3dpbicpKToKICAgICAgICAgICAgIHNl
dHVwX21vdW50ID0gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgidGhpcmRfcGFydHkiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJj
eWd3aW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJzZXR1cF9tb3VudC5iYXQiKQpAQCAtMTEzLDcgKzExMSw3IEBAIGNsYXNzIENocm9t
aXVtV2luUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICBpZiBvcy5wYXRoLmV4
aXN0cyhwKToKICAgICAgICAgICAgIHJldHVybiBwCiAgICAgICAgIHAgPSBzZWxmLnBhdGhfZnJv
bV9jaHJvbWl1bV9iYXNlKCdjaHJvbWUnLCAqY29tcHMpCi0gICAgICAgIGlmIG9zLnBhdGguZXhp
c3RzKHApIG9yIG5vdCBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAgIGlmIG9zLnBhdGgu
ZXhpc3RzKHApIG9yIG5vdCBzZWxmLmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAg
IHJldHVybiBwCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoX2Zyb21fd2Vi
a2l0X2Jhc2UoKSwgJ1dlYktpdCcsICdjaHJvbWl1bScsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKmNvbXBzKQpAQCAtMTQxLDIzICsxMzksMjMgQEAgY2xhc3MgQ2hyb21pdW1XaW5Qb3J0
KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAKICAgICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYs
IGNvbmZpZ3VyYXRpb249Tm9uZSk6CiAgICAgICAgIGlmIG5vdCBjb25maWd1cmF0aW9uOgotICAg
ICAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbgorICAg
ICAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicp
CiAgICAgICAgIGJpbmFyeV9uYW1lID0gJ3Rlc3Rfc2hlbGwuZXhlJwotICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcp
OgogICAgICAgICAgICAgYmluYXJ5X25hbWUgPSAnRHVtcFJlbmRlclRyZWUuZXhlJwogICAgICAg
ICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChjb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKIAog
ICAgIGRlZiBfcGF0aF90b19oZWxwZXIoc2VsZik6CiAgICAgICAgIGJpbmFyeV9uYW1lID0gJ2xh
eW91dF90ZXN0X2hlbHBlci5leGUnCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoK
KyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICBiaW5h
cnlfbmFtZSA9ICdMYXlvdXRUZXN0SGVscGVyLmV4ZScKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1
aWxkX3BhdGgoc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9u
JyksIGJpbmFyeV9uYW1lKQogCiAgICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6CiAg
ICAgICAgIGJpbmFyeV9uYW1lID0gJ2ltYWdlX2RpZmYuZXhlJwotICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLnVzZV9kcnQ6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgog
ICAgICAgICAgICAgYmluYXJ5X25hbWUgPSAnSW1hZ2VEaWZmLmV4ZScKLSAgICAgICAgcmV0dXJu
IHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uLCBiaW5hcnlfbmFt
ZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25m
aWd1cmF0aW9uJyksIGJpbmFyeV9uYW1lKQogCiAgICAgZGVmIF9wYXRoX3RvX3dkaWZmKHNlbGYp
OgogICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgndGhpcmRfcGFy
dHknLCAnY3lnd2luJywgJ2JpbicsCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CmluZGV4IDY0OGNjYWRhYWU2ZjQ1
ZjdkMDZiMmI1ZWI2Y2IxZWRkMmZmNThiMTAuLjhhNmFmNTZjODQyMGU0NTBjNDE4OTdhZmU1NDNl
NjY3MDZmOWFlNzYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CkBAIC0xMDEsNyArMTAxLDYgQEAgY2xhc3Mg
RHJ5cnVuRHJpdmVyKGJhc2UuRHJpdmVyKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0
LCBpbWFnZV9wYXRoLCBvcHRpb25zLCBleGVjdXRpdmUpOgogICAgICAgICBzZWxmLl9wb3J0ID0g
cG9ydAotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLl9pbWFn
ZV9wYXRoID0gaW1hZ2VfcGF0aAogICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBleGVjdXRpdmUK
ICAgICAgICAgc2VsZi5fbGF5b3V0X3Rlc3RzX2RpciA9IE5vbmUKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVz
dC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFj
dG9yeV91bml0dGVzdC5weQppbmRleCA4MWMzNzMyN2EyMDk5MmVlMGM0YzNjZDllODRkMzExZDZl
YTQ1OThiLi45NzhhNTU3YTU3YjIwYTNiOGI0MGU5OTk5OGUzNWE4NWVlZTI5NjZlIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3Rv
cnlfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CkBAIC0yOSw2ICsyOSw4IEBACiBpbXBvcnQg
c3lzCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBtb2NrdG9v
bAorCiBpbXBvcnQgY2hyb21pdW1fZ3B1CiBpbXBvcnQgY2hyb21pdW1fbGludXgKIGltcG9ydCBj
aHJvbWl1bV9tYWMKQEAgLTUyLDIxICs1NCwxMSBAQCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgIyBGSVhNRTogVGhlIHBvcnRzIHRoZW1zZWx2ZXMgc2hvdWxkIGV4
cG9zZSB3aGF0IG9wdGlvbnMgdGhleSByZXF1aXJlLAogICAgICMgaW5zdGVhZCBvZiBwYXNzaW5n
IGdlbmVyaWMgIm9wdGlvbnMiLgogCi0gICAgY2xhc3MgV2ViS2l0T3B0aW9ucyhvYmplY3QpOgot
ICAgICAgICAiIiJSZXByZXNlbnRzIHRoZSBtaW5pbXVtIG9wdGlvbnMgZm9yIFdlYktpdCBwb3J0
LiIiIgotICAgICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnBpeGVs
X3Rlc3RzID0gRmFsc2UKLQotICAgIGNsYXNzIENocm9taXVtT3B0aW9ucyhXZWJLaXRPcHRpb25z
KToKLSAgICAgICAgIiIiUmVwcmVzZW50cyBtaW5pbXVtIG9wdGlvbnMgZm9yIENocm9taXVtIHBv
cnQuIiIiCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgICAgIEZhY3RvcnlU
ZXN0LldlYktpdE9wdGlvbnMuX19pbml0X18oc2VsZikKLSAgICAgICAgICAgIHNlbGYuY2hyb21p
dW0gPSBUcnVlCi0KICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYucmVhbF9zeXNf
cGxhdGZvcm0gPSBzeXMucGxhdGZvcm0KLSAgICAgICAgc2VsZi53ZWJraXRfb3B0aW9ucyA9IEZh
Y3RvcnlUZXN0LldlYktpdE9wdGlvbnMoKQotICAgICAgICBzZWxmLmNocm9taXVtX29wdGlvbnMg
PSBGYWN0b3J5VGVzdC5DaHJvbWl1bU9wdGlvbnMoKQorICAgICAgICBzZWxmLndlYmtpdF9vcHRp
b25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnMocGl4ZWxfdGVzdHM9RmFsc2UpCisgICAgICAgIHNl
bGYuY2hyb21pdW1fb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKHBpeGVsX3Rlc3RzPUZh
bHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNocm9taXVtPVRydWUpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN5cy5w
bGF0Zm9ybSA9IHNlbGYucmVhbF9zeXNfcGxhdGZvcm0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3Qu
cHkKaW5kZXggMzI3YjE5ZWU1ZmE1NDUwM2I0YWZjMjliNzFlMDBlNzliZGE1NmYxYi4uZDM4M2E0
Y2Q4ODM3ZTU5Y2E1NGNkYWU5Nzk2MWE0YTU1YjFmNDAwNCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5p
dHRlc3QucHkKQEAgLTM1LDcgKzM1LDcgQEAgaW1wb3J0IHBvcnRfdGVzdGNhc2UKIAogCiBjbGFz
cyBNYWNUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKLSAgICBkZWYgbWFrZV9wb3J0
KHNlbGYsIG9wdGlvbnM9cG9ydF90ZXN0Y2FzZS5Nb2NrT3B0aW9ucygpKToKKyAgICBkZWYgbWFr
ZV9wb3J0KHNlbGYsIG9wdGlvbnM9cG9ydF90ZXN0Y2FzZS5tb2NrX29wdGlvbnMpOgogICAgICAg
ICBpZiBzeXMucGxhdGZvcm0gIT0gJ2Rhcndpbic6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQog
ICAgICAgICBwb3J0X29iaiA9IG1hYy5NYWNQb3J0KG9wdGlvbnM9b3B0aW9ucykKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90
ZXN0Y2FzZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvcG9ydF90ZXN0Y2FzZS5weQppbmRleCA0NzU5N2Q2N2NjMjVhNjM4YTlmNjQ1YTdiNWUwYmUy
OWQ2NTYxNTVmLi4wNGFkYTUwMDBlM2IzNTM4MmMzYzk2MDkyMmUyOGM1NTNjM2Y0MDRlIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Bv
cnRfdGVzdGNhc2UucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CkBAIC0zMiwyMCArMzIsMTUgQEAgaW1wb3J0IG9z
CiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogCi0KLWNsYXNzIE1vY2tPcHRpb25z
KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsCi0gICAgICAgICAgICAgICAgIHJlc3Vs
dHNfZGlyZWN0b3J5PSdsYXlvdXQtdGVzdC1yZXN1bHRzJywKLSAgICAgICAgICAgICAgICAgdXNl
X2FwYWNoZT1UcnVlLAotICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPSdSZWxlYXNlJyk6
Ci0gICAgICAgIHNlbGYucmVzdWx0c19kaXJlY3RvcnkgPSByZXN1bHRzX2RpcmVjdG9yeQotICAg
ICAgICBzZWxmLnVzZV9hcGFjaGUgPSB1c2VfYXBhY2hlCi0gICAgICAgIHNlbGYuY29uZmlndXJh
dGlvbiA9IGNvbmZpZ3VyYXRpb24KK2Zyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wK
K21vY2tfb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKHJlc3VsdHNfZGlyZWN0b3J5PSds
YXlvdXQtdGVzdC1yZXN1bHRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVzZV9hcGFjaGU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb249J1JlbGVhc2UnKQogCiAKIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgIiIiVGVzdHMgdGhlIFdlYktpdCBwb3J0IGltcGxlbWVudGF0aW9uLiIi
IgotICAgIGRlZiBtYWtlX3BvcnQoc2VsZiwgb3B0aW9ucz1Nb2NrT3B0aW9ucygpKToKKyAgICBk
ZWYgbWFrZV9wb3J0KHNlbGYsIG9wdGlvbnM9bW9ja19vcHRpb25zKToKICAgICAgICAgIiIiT3Zl
cnJpZGUgaW4gc3ViY2xhc3MuIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3Io
KQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3QucHkKaW5kZXggM2I4MTE2Nzk5YWYzY2Q0ZWVhNmViMWRmZGI4ZGE5MDRjZDVm
OTgwMC4uMzY5MWM1YWFlOWZjMzIxYzk1MTc4NjM2Y2RjZDAzYjY5YmRkZDczZiAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVz
dC5weQpAQCAtMjE1LDE0ICsyMTUsMTEgQEAgY2xhc3MgVGVzdFBvcnQoYmFzZS5Qb3J0KToKICAg
ICBkZWYgbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKIAotICAgIGRlZiBv
cHRpb25zKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fb3B0aW9ucwotCiAgICAgZGVmIF9w
YXRoX3RvX3dkaWZmKHNlbGYpOgogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIHJlc3Vs
dHNfZGlyZWN0b3J5KHNlbGYpOgotICAgICAgICByZXR1cm4gJy90bXAvJyArIHNlbGYuX29wdGlv
bnMucmVzdWx0c19kaXJlY3RvcnkKKyAgICAgICAgcmV0dXJuICcvdG1wLycgKyBzZWxmLmdldF9v
cHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5JykKIAogICAgIGRlZiBzZXR1cF90ZXN0X3J1bihzZWxm
KToKICAgICAgICAgcGFzcwpAQCAtMjg1LDcgKzI4Miw2IEBAIGNsYXNzIFRlc3REcml2ZXIoYmFz
ZS5Ecml2ZXIpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBpbWFnZV9wYXRoLCBvcHRp
b25zLCBleGVjdXRpdmUpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAogICAgICAgICBzZWxm
Ll9pbWFnZV9wYXRoID0gaW1hZ2VfcGF0aAotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9u
cwogICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBleGVjdXRpdmUKICAgICAgICAgc2VsZi5faW1h
Z2Vfd3JpdHRlbiA9IEZhbHNlCiAKQEAgLTMwMiw3ICsyOTgsNyBAQCBjbGFzcyBUZXN0RHJpdmVy
KGJhc2UuRHJpdmVyKToKICAgICAgICAgaWYgdGVzdC5oYW5nOgogICAgICAgICAgICAgdGltZS5z
bGVlcCgoZmxvYXQodGltZW91dG1zKSAqIDQpIC8gMTAwMC4wKQogCi0gICAgICAgIGlmIHNlbGYu
X3BvcnQub3B0aW9ucygpLnBpeGVsX3Rlc3RzIGFuZCB0ZXN0LmFjdHVhbF9pbWFnZToKKyAgICAg
ICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdwaXhlbF90ZXN0cycpIGFuZCB0ZXN0LmFjdHVh
bF9pbWFnZToKICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLl9pbWFnZV9wYXRoLCAndycpIGFz
IGZpbGU6CiAgICAgICAgICAgICAgICAgZmlsZS53cml0ZSh0ZXN0LmFjdHVhbF9pbWFnZSkKIApk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC93ZWJraXQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3dlYmtpdC5weQppbmRleCBlZDE5YzA5YzYyZGFjYmVlN2EzYTY5OGQ3NmFhYTNkODJjYWVi
YjdjLi5jOTQwZjFlN2EwNzBhNjA3NDBlNDliZTlkYTZlZmJiYWE5Y2Q2YTkwIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dl
YmtpdC5weQpAQCAtNjUsOSArNjUsNyBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAK
ICAgICAgICAgIyBGSVhNRTogZGlzYWJsZSBwaXhlbCB0ZXN0cyB1bnRpbCB0aGV5IGFyZSBydW4g
YnkgZGVmYXVsdCBvbiB0aGUKICAgICAgICAgIyBidWlsZCBtYWNoaW5lcy4KLSAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucyBhbmQgKG5vdCBoYXNhdHRyKHNlbGYuX29wdGlvbnMsICJwaXhlbF90ZXN0
cyIpIG9yCi0gICAgICAgICAgIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgaXMgTm9uZSk6Ci0g
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzID0gRmFsc2UKKyAgICAgICAgc2Vs
Zi5zZXRfb3B0aW9uX2RlZmF1bHQoJ3BpeGVsX3Rlc3RzJywgRmFsc2UpCiAKICAgICBkZWYgYmFz
ZWxpbmVfcGF0aChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3dlYmtpdF9iYXNlbGluZV9w
YXRoKHNlbGYuX25hbWUpCkBAIC04Niw3ICs4NCw3IEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Q
b3J0KToKICAgICBkZWYgX2J1aWxkX2RyaXZlcihzZWxmKToKICAgICAgICAgZXhpdF9jb2RlID0g
c2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsKICAgICAgICAgICAgIHNlbGYuc2NyaXB0X3Bh
dGgoImJ1aWxkLWR1bXByZW5kZXJ0cmVlIiksCi0gICAgICAgICAgICBzZWxmLmZsYWdfZnJvbV9j
b25maWd1cmF0aW9uKHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiksCisgICAgICAgICAgICBz
ZWxmLmZsYWdfZnJvbV9jb25maWd1cmF0aW9uKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlv
bicpKSwKICAgICAgICAgXSwgcmV0dXJuX2V4aXRfY29kZT1UcnVlKQogICAgICAgICBpZiBleGl0
X2NvZGUgIT0gMDoKICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkZhaWxlZCB0byBidWlsZCBEdW1w
UmVuZGVyVHJlZSIpCkBAIC0xMDEsMTEgKzk5LDExIEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Q
b3J0KToKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBjaGVja19idWlsZChzZWxmLCBu
ZWVkc19odHRwKToKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5idWlsZCBhbmQgbm90IHNlbGYu
X2J1aWxkX2RyaXZlcigpOgorICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ2J1aWxkJykgYW5k
IG5vdCBzZWxmLl9idWlsZF9kcml2ZXIoKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAg
ICAgICBpZiBub3Qgc2VsZi5fY2hlY2tfZHJpdmVyKCk6CiAgICAgICAgICAgICByZXR1cm4gRmFs
c2UKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0czoKKyAgICAgICAgaWYgc2Vs
Zi5nZXRfb3B0aW9uKCdwaXhlbF90ZXN0cycpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuY2hl
Y2tfaW1hZ2VfZGlmZigpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBp
ZiBub3Qgc2VsZi5fY2hlY2tfcG9ydF9idWlsZCgpOgpAQCAtMTg0LDcgKzE4Miw3IEBAIGNsYXNz
IFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKICAgICBkZWYgcmVzdWx0c19kaXJlY3Rvcnkoc2VsZik6
CiAgICAgICAgICMgUmVzdWx0cyBhcmUgc3RvcmUgcmVsYXRpdmUgdG8gdGhlIGJ1aWx0IHByb2R1
Y3RzIHRvIG1ha2UgaXQgZWFzeQogICAgICAgICAjIHRvIGhhdmUgbXVsdGlwbGUgY29waWVzIG9m
IHdlYmtpdCBjaGVja2VkIG91dCBhbmQgYnVpbHQuCi0gICAgICAgIHJldHVybiBzZWxmLl9idWls
ZF9wYXRoKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkpCisgICAgICAgIHJldHVybiBz
ZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlvbigncmVzdWx0c19kaXJlY3RvcnknKSkKIAog
ICAgIGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmKToKICAgICAgICAgIyBUaGlzIHBvcnQgZG9lc24n
dCByZXF1aXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uLgpAQCAtMzYwLDcgKzM1OCw3IEBA
IGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgaWYgbm90IHNlbGYuX2NhY2hl
ZF9idWlsZF9yb290OgogICAgICAgICAgICAgc2VsZi5fY2FjaGVkX2J1aWxkX3Jvb3QgPSBzZWxm
Ll93ZWJraXRfYnVpbGRfZGlyZWN0b3J5KFsKICAgICAgICAgICAgICAgICAiLS1jb25maWd1cmF0
aW9uIiwKLSAgICAgICAgICAgICAgICBzZWxmLmZsYWdfZnJvbV9jb25maWd1cmF0aW9uKHNlbGYu
X29wdGlvbnMuY29uZmlndXJhdGlvbiksCisgICAgICAgICAgICAgICAgc2VsZi5mbGFnX2Zyb21f
Y29uZmlndXJhdGlvbihzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSksCiAgICAgICAg
ICAgICBdKQogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuX2NhY2hlZF9idWlsZF9y
b290LCAqY29tcHMpCiAKQEAgLTQwMSw3ICszOTksNiBAQCBjbGFzcyBXZWJLaXREcml2ZXIoYmFz
ZS5Ecml2ZXIpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBpbWFnZV9wYXRoLCBvcHRp
b25zLCBleGVjdXRpdmU9RXhlY3V0aXZlKCkpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAog
ICAgICAgICBzZWxmLl9pbWFnZV9wYXRoID0gaW1hZ2VfcGF0aAotICAgICAgICBzZWxmLl9vcHRp
b25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBleGVjdXRpdmUKICAgICAg
ICAgc2VsZi5fZHJpdmVyX3RlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nRHVtcFJl
bmRlclRyZWUtJykKIApAQCAtNDE0LDE3ICs0MTEsMTcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJh
c2UuRHJpdmVyKToKICAgICAgICAgaWYgc2VsZi5faW1hZ2VfcGF0aDoKICAgICAgICAgICAgIGRy
aXZlcl9hcmdzLmFwcGVuZCgnLS1waXhlbC10ZXN0cycpCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy51c2VfZHJ0OgotICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5hY2NlbGVyYXRlZF9j
b21wb3NpdGluZzoKKyAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6
CisgICAgICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ2FjY2VsZXJhdGVkX2NvbXBv
c2l0aW5nJyk6CiAgICAgICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLWVuYWJsZS1h
Y2NlbGVyYXRlZC1jb21wb3NpdGluZycpCiAKLSAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMu
YWNjZWxlcmF0ZWRfMmRfY2FudmFzOgorICAgICAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0
aW9uKCdhY2NlbGVyYXRlZF8yZF9jYW52YXMnKToKICAgICAgICAgICAgICAgICBkcml2ZXJfYXJn
cy5hcHBlbmQoJy0tZW5hYmxlLWFjY2VsZXJhdGVkLTJkLWNhbnZhcycpCiAKICAgICAgICAgcmV0
dXJuIGRyaXZlcl9hcmdzCiAKICAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIGNvbW1hbmQg
PSBzZWxmLl9jb21tYW5kX3dyYXBwZXIoc2VsZi5fb3B0aW9ucy53cmFwcGVyKQorICAgICAgICBj
b21tYW5kID0gc2VsZi5fY29tbWFuZF93cmFwcGVyKHNlbGYuX3BvcnQuZ2V0X29wdGlvbignd3Jh
cHBlcicpKQogICAgICAgICBjb21tYW5kICs9IFtzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigp
LCAnLSddCiAgICAgICAgIGNvbW1hbmQgKz0gc2VsZi5fZHJpdmVyX2FyZ3MoKQogCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5l
X2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3Vu
aXR0ZXN0LnB5CmluZGV4IGZjZTZlODJjYWVmODM1YTczMzk4MDg0YjY5MTQ4MDA4ZGIyNmFlNjgu
LmVmMzNhNDc0ODFmZGVmZDQ3MjI0NmU2ZWYyMDkzZjM1OTUyNDUzOTIgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21p
dW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0
ZXN0LnB5CkBAIC0zMyw2ICszMyw3IEBAIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVu
aXR0ZXN0CiAKK2Zyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKIGZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBp
bXBvcnQgcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKQEAgLTQ2
LDEyICs0Nyw2IEBAIGNsYXNzIE1vY2tQb3J0KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxm
LmltYWdlX2RpZmZfZXhpc3RzCiAKIAotY2xhc3MgTW9ja09wdGlvbnMob2JqZWN0KToKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lLCBodG1sX2RpcmVjdG9yeT1Ob25l
KToKLSAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbgotICAgICAgICBz
ZWxmLmh0bWxfZGlyZWN0b3J5ID0gaHRtbF9kaXJlY3RvcnkKLQotCiBkZWYgZ2V0X21vY2tfZ2V0
KGNvbmZpZ19leHBlY3RhdGlvbnMpOgogICAgIGRlZiBtb2NrX2dldChwb3J0X25hbWUsIG9wdGlv
bnMpOgogICAgICAgICByZXR1cm4gTW9ja1BvcnQoY29uZmlnX2V4cGVjdGF0aW9uc1tvcHRpb25z
LmNvbmZpZ3VyYXRpb25dKQpAQCAtNjQsNyArNTksOCBAQCBjbGFzcyBUZXN0R2V0SG9zdFBvcnRP
YmplY3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAjIHRoYXQgSW1hZ2UgZGlmZiBpcyAo
b3IgaXNuJ3QpIHByZXNlbnQgaW4gdGhlIHR3byBjb25maWdzLgogICAgICAgICBwb3J0LmdldCA9
IGdldF9tb2NrX2dldCh7J1JlbGVhc2UnOiByZWxlYXNlX3ByZXNlbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnRGVidWcnOiBkZWJ1Z19wcmVzZW50fSkKLSAgICAgICAgb3B0
aW9ucyA9IE1vY2tPcHRpb25zKCkKKyAgICAgICAgb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRp
b25zKGNvbmZpZ3VyYXRpb249Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGh0bWxfZGlyZWN0b3J5PU5vbmUpCiAgICAgICAgIHBvcnRfb2JqID0gcmViYXNlbGlu
ZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMuZ2V0X2hvc3RfcG9ydF9vYmplY3QoCiAgICAgICAgICAg
ICBvcHRpb25zKQogICAgICAgICBpZiB2YWxpZF9wb3J0X29iajoKQEAgLTkwLDcgKzg2LDggQEAg
Y2xhc3MgVGVzdEdldEhvc3RQb3J0T2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogY2xhc3Mg
VGVzdFJlYmFzZWxpbmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgbWFrZV9yZWJhc2Vs
aW5lcihzZWxmKToKLSAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKCkKKyAgICAgICAgb3B0
aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249Tm9uZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxfZGlyZWN0b3J5PU5vbmUpCiAgICAg
ICAgIGhvc3RfcG9ydF9vYmogPSBwb3J0LmdldCgndGVzdCcsIG9wdGlvbnMpCiAgICAgICAgIHRh
cmdldF9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICB0YXJnZXRfcG9ydF9vYmogPSBwb3J0Lmdl
dCgndGVzdCcsIHRhcmdldF9vcHRpb25zKQpAQCAtMTI2LDcgKzEyMyw4IEBAIGNsYXNzIFRlc3RI
dG1sR2VuZXJhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgbWFrZV9nZW5lcmF0b3Io
c2VsZiwgdGVzdHMpOgogICAgICAgICByZXR1cm4gcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRf
dGVzdHMuSHRtbEdlbmVyYXRvcigKICAgICAgICAgICAgIHRhcmdldF9wb3J0PU5vbmUsCi0gICAg
ICAgICAgICBvcHRpb25zPU1vY2tPcHRpb25zKGh0bWxfZGlyZWN0b3J5PSIvdG1wIiksCisgICAg
ICAgICAgICBvcHRpb25zPW1vY2t0b29sLk1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249Tm9uZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbF9kaXJlY3Rvcnk9
Jy90bXAnKSwKICAgICAgICAgICAgIHBsYXRmb3Jtcz1bJ21hYyddLAogICAgICAgICAgICAgcmVi
YXNlbGluaW5nX3Rlc3RzPXRlc3RzLAogICAgICAgICAgICAgZXhlY3V0aXZlPUV4ZWN1dGl2ZSgp
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29s
X3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29s
X3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjZWFhMmUwYWEwOGJhNmUxZjJhYjdhZDEzZDEwNzlj
NGVlMjcyYzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvbW9ja3Rvb2xfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw1OSBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIG1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwor
CisKK2NsYXNzIE1vY2tPcHRpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBNb2Nr
T3B0aW9ucygpIHNob3VsZCBpbXBsZW1lbnQgdGhlIHNhbWUgc2VtYW50aWNzIHRoYXQKKyAgICAj
IG9wdHBhcnNlLlZhbHVlcyBkb2VzLgorCisgICAgZGVmIHRlc3RfZ2V0X19zZXQoc2VsZik6Cisg
ICAgICAgICMgVGVzdCB0aGF0IHdlIGNhbiBzdGlsbCBzZXQgb3B0aW9ucyBhZnRlciB3ZSBjb25z
dHJ1Y3QgdGhlCisgICAgICAgICMgb2JqZWN0LgorICAgICAgICBvcHRpb25zID0gTW9ja09wdGlv
bnMoKQorICAgICAgICBvcHRpb25zLmZvbyA9ICdiYXInCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwob3B0aW9ucy5mb28sICdiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X191bnNldChzZWxmKToK
KyAgICAgICAgIyBUZXN0IHRoYXQgdW5zZXQgb3B0aW9ucyByYWlzZSBhbiBleGNlcHRpb24gKHJl
Z3VsYXIgTW9jaworICAgICAgICAjIG9iamVjdHMgcmV0dXJuIGFuIG9iamVjdCBhbmQgaGVuY2Ug
YXJlIGRpZmZlcmVudCBmcm9tCisgICAgICAgICMgb3B0cGFyc2UuVmFsdWVzKCkpLgorICAgICAg
ICBvcHRpb25zID0gTW9ja09wdGlvbnMoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRy
aWJ1dGVFcnJvciwgbGFtYmRhOiBvcHRpb25zLmZvbykKKworICAgIGRlZiB0ZXN0X2t3YXJnX19z
ZXQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGtleXdvcmQgYXJndW1lbnRzIHdvcmsgaW4g
dGhlIGNvbnN0cnVjdG9yLgorICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoZm9vPSdiYXIn
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMuZm9vLCAnYmFyJykKKworCitpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71108</attachid>
            <date>2010-10-18 17:59:29 -0700</date>
            <delta_ts>2010-10-18 18:00:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47510-20101018175928.patch</filename>
            <type>text/plain</type>
            <size>42146</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAyYTlhM2Y3NmJjMDU4MWZmODUyNDVkZjFlMmRjNDEzYjJjZDQyZDQ4Li5iOTM3NGFk
MGE5NjkxMjU4MTQ1YWU1OGQxMDVlYzlhYTg3YmNhODg2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAK
KzIwMTAtMTAtMTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGNsZWFuIHVwIHRoZSBvcHRpb25zLXBhcnNpbmcgY29kZSBpbiB0aGUgcG9ydAorICAg
ICAgICBjbGFzc2VzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgbW9kaWZpZXMgdGhl
IFBvcnQgaW50ZXJmYWNlIHRvIGhhdmUgYSBnZXRfb3B0aW9uKCkgYW5kCisgICAgICAgIHNldF9v
cHRpb25fZGVmYXVsdCgpIG1ldGhvZCBmb3IgYWNjZXNzaW5nIHRoZSBvcHRpb25zIGFyZ3VtZW50
CisgICAgICAgIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuIElmIHRoZSBjb25zdHJ1Y3RvciBp
cyBub3QgcGFzc2VkIGFuCisgICAgICAgIG9wdGlvbnMgYXJndW1lbnQsIHdlIGRlZmF1bHQgdG8g
YSBNb2NrT3B0aW9ucygpIGFyZ3VtZW50IGZyb20KKyAgICAgICAgbW9ja3Rvb2wsIHdoaWNoIGhh
cyB0aGUgc2FtZSBzZW1hbnRpY3Mgd2Ugd2FudC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlcmUg
aXMgYSBkaXNhZHZhbnRhZ2UgdG8gcG9ydC5nZXRfb3B0aW9uKCdmb28nKSBvdmVyCisgICAgICAg
IHBvcnQuX29wdGlvbnMuZm9vLCB3aGljaCBpcyB0aGF0IHlvdSBsb3NlIHNvbWUgb2YgdGhlIGNo
ZWNraW5nCisgICAgICAgIGZvciB3aGV0aGVyICdmb28nIGlzIHNldCAodHlwb3MgcmVzdWx0IGlu
IHRoZSBkZWZhdWx0IHZhbHVlLCBub3QKKyAgICAgICAgYW4gZXhjZXB0aW9uIGJlaW5nIHJhaXNl
ZC4gVGhpcyBpcyBkZXNpcmVkIGluIHRoaXMgY2FzZSwgc2luY2UgdGhlCisgICAgICAgIFBvcnQg
Y2xhc3MgaXMgbm90IGFsbG93ZWQgdG8gYXNzdW1lIHRoYXQgb3B0aW9ucyBkb2VzIGhhdmUgYW55
CisgICAgICAgIHBhcnRpY3VsYXIgdmFsdWVzIHNldCwgYW5kIHNvIHRoaXMgY2hhbmdlIGVuc3Vy
ZXMgdGhhdCBhbGwgb2YKKyAgICAgICAgdGhlIHN1YmNsYXNzZXMgYXJlIGZvbGxvd2luZyB0aGUg
c2FtZSwgaW50ZW5kZWQsIGxvZ2ljLgorCisgICAgICAgIEFyZ3VhYmx5IHRoaXMgaXMgdGhlIHdy
b25nIHNlbWFudGljcyB0byBoYXZlLCBhbmQgdGhlIFBvcnQKKyAgICAgICAgY2xhc3NlcyBzaG91
bGQgYmUgYWJsZSB0byBhc3N1bWUgYSBkZWZhdWx0IHNldCBvZgorICAgICAgICBhdHRyaWJ1dGVz
L2FyZ3VtZW50cywgYnV0IHRoYXQgY2hhbmdlIHdpbGwgbmVlZCB0byB3YWl0IGZvciBhCisgICAg
ICAgIGRpZmZlcmVudCBDTCB3aGVyZSB3ZSBjYW4gbW9kaWZ5IG5ldy1ydW4td2Via2l0LXRlc3Rz
IHRvIHB1bGwgYQorICAgICAgICBsaXN0IG9mIGFyZ3VtZW50cyBmcm9tIHRoZSBwb3J0IGZhY3Rv
cnkgcm91dGluZXMuCisKKyAgICAgICAgQWxzbywgYWRkIHVuaXQgdGVzdHMgZm9yIHdlYmtpdHB5
LnRvb2wubW9ja3Rvb2wuTW9ja09wdGlvbnMgLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUxMAorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV9tYWMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtp
dF90ZXN0c191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9j
a3Rvb2xfdW5pdHRlc3QucHk6IEFkZGVkLgorCiAyMDEwLTEwLTE4ICBEaXJrIFByYW5rZSAgPGRw
cmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9iYXNlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9iYXNlLnB5CmluZGV4IGNiOTY5MTM1ODJkNmYxNzdjZjJhYmJkZGE4NzVlZTdjZTZiNjE3NGUu
LjQ2ZmZmNGVjOWE4ZDQxYmVmY2I3ZTkyOTk3MTk2Yzc4NmFkNzc2MTYgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkK
QEAgLTU2LDYgKzU2LDIyIEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2VyIGltcG9y
dCBVc2VyCiBfbG9nID0gbG9ndXRpbHMuZ2V0X2xvZ2dlcihfX2ZpbGVfXykKIAogCitjbGFzcyBE
dW1teU9wdGlvbnMob2JqZWN0KToKKyAgICAiIiJGYWtlIGltcGxlbWVudGF0aW9uIG9mIG9wdHBh
cnNlLlZhbHVlcy4gQ2xvbmVkIGZyb20KKyAgICB3ZWJraXRweS50b29sLm1vY2t0b29sLk1vY2tP
cHRpb25zLgorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgor
ICAgICAgICAjIFRoZSBjYWxsZXIgY2FuIHNldCBvcHRpb24gdmFsdWVzIHVzaW5nIGtleXdvcmQg
YXJndW1lbnRzLiBXZSBkb24ndAorICAgICAgICAjIHNldCBhbnkgdmFsdWVzIGJ5IGRlZmF1bHQg
YmVjYXVzZSB3ZSBkb24ndCBrbm93IGhvdyB0aGlzCisgICAgICAgICMgb2JqZWN0IHdpbGwgYmUg
dXNlZC4gR2VuZXJhbGx5IHNwZWFraW5nIHVuaXQgdGVzdHMgc2hvdWxkCisgICAgICAgICMgc3Vi
Y2xhc3MgdGhpcyBvciBwcm92aWRlciB3cmFwcGVyIGZ1bmN0aW9ucyB0aGF0IHNldCBhIGNvbW1v
bgorICAgICAgICAjIHNldCBvZiBvcHRpb25zLgorICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBr
d2FyZ3MuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuX19kaWN0X19ba2V5XSA9IHZhbHVlCisK
KwogIyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgbWVyZ2Ugd2l0aCB3ZWJraXRweS53ZWJraXRf
cG9ydCBhdCBzb21lIHBvaW50LgogY2xhc3MgUG9ydChvYmplY3QpOgogICAgICIiIkFic3RyYWN0
IGNsYXNzIGZvciBQb3J0LXNwZWNpZmljIGhvb2tzIGZvciB0aGUgbGF5b3V0X3Rlc3QgcGFja2Fn
ZS4KQEAgLTcxLDcgKzg3LDEyIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKIAogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYuX25hbWUgPSBrd2FyZ3MuZ2V0KCdw
b3J0X25hbWUnLCBOb25lKQotICAgICAgICBzZWxmLl9vcHRpb25zID0ga3dhcmdzLmdldCgnb3B0
aW9ucycsIE5vbmUpCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBrd2FyZ3MuZ2V0KCdvcHRpb25z
JykKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucyBpcyBOb25lOgorICAgICAgICAgICAgIyBGSVhN
RTogaWRlYWxseSB3ZSdkIGhhdmUgYSBwYWNrYWdlLXdpZGUgd2F5IHRvIGdldCBhCisgICAgICAg
ICAgICAjIHdlbGwtZm9ybWVkIG9wdGlvbnMgb2JqZWN0IHRoYXQgaGFkIGFsbCBvZiB0aGUgbmVj
ZXNzYXJ5CisgICAgICAgICAgICAjIG9wdGlvbnMgZGVmaW5lZCBvbiBpdC4KKyAgICAgICAgICAg
IHNlbGYuX29wdGlvbnMgPSBEdW1teU9wdGlvbnMoKQogICAgICAgICBzZWxmLl9leGVjdXRpdmUg
PSBrd2FyZ3MuZ2V0KCdleGVjdXRpdmUnLCBFeGVjdXRpdmUoKSkKICAgICAgICAgc2VsZi5fdXNl
ciA9IGt3YXJncy5nZXQoJ3VzZXInLCBVc2VyKCkpCiAgICAgICAgIHNlbGYuX2hlbHBlciA9IE5v
bmUKQEAgLTk4LDYgKzExOSw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgc2VsZi5f
cHJldHR5X3BhdGNoX3BhdGggPSBzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgiQnVnc1NpdGUi
LAogICAgICAgICAgICAgICAiUHJldHR5UGF0Y2giLCAicHJldHRpZnkucmIiKQogICAgICAgICBz
ZWxmLl9wcmV0dHlfcGF0Y2hfYXZhaWxhYmxlID0gVHJ1ZQorICAgICAgICBzZWxmLnNldF9vcHRp
b25fZGVmYXVsdCgnY29uZmlndXJhdGlvbicsIE5vbmUpCisgICAgICAgIGlmIHNlbGYuX29wdGlv
bnMuY29uZmlndXJhdGlvbiBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5jb25m
aWd1cmF0aW9uID0gc2VsZi5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKQogCiAgICAgZGVmIGRlZmF1
bHRfY2hpbGRfcHJvY2Vzc2VzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBv
ZiBEdW1wUmVuZGVyVHJlZSBpbnN0YW5jZXMgdG8gdXNlIGZvciB0aGlzCkBAIC00MzMsNiArNDU3
LDE4IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgbWF5IGJlIGRpZmZlcmVudCAoZS5n
LiwgJ3dpbi14cCcgaW5zdGVhZCBvZiAnY2hyb21pdW0td2luLXhwJy4iIiIKICAgICAgICAgcmV0
dXJuIHNlbGYuX25hbWUKIAorICAgIGRlZiBnZXRfb3B0aW9uKHNlbGYsIG5hbWUsIGRlZmF1bHRf
dmFsdWU9Tm9uZSk6CisgICAgICAgICMgRklYTUU6IGV2ZW50dWFsbHkgd2Ugc2hvdWxkIG5vdCBo
YXZlIHRvIGRvIGEgdGVzdCBmb3IKKyAgICAgICAgIyBoYXNhdHRyKCksIGFuZCB3ZSBzaG91bGQg
YmUgYWJsZSB0byBqdXN0IGRvCisgICAgICAgICMgc2VsZi5vcHRpb25zLnZhbHVlLiBTZWUgYWRk
aXRpb25hbCBGSVhNRSBpbiB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIGlmIGhhc2F0dHIoc2Vs
Zi5fb3B0aW9ucywgbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLl9vcHRp
b25zLCBuYW1lKQorICAgICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZQorCisgICAgZGVmIHNldF9v
cHRpb25fZGVmYXVsdChzZWxmLCBuYW1lLCBkZWZhdWx0X3ZhbHVlKToKKyAgICAgICAgaWYgbm90
IGhhc2F0dHIoc2VsZi5fb3B0aW9ucywgbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gc2V0YXR0
cihzZWxmLl9vcHRpb25zLCBuYW1lLCBkZWZhdWx0X3ZhbHVlKQorCiAgICAgIyBGSVhNRTogVGhp
cyBjb3VsZCBiZSByZXBsYWNlZCBieSBmdW5jdGlvbnMgaW4gd2Via2l0cHkuY29tbW9uLmNoZWNr
b3V0LnNjbS4KICAgICBkZWYgcGF0aF9mcm9tX3dlYmtpdF9iYXNlKHNlbGYsICpjb21wcyk6CiAg
ICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byBwYXRoIG1hZGUgYnkgam9pbmluZyB0
aGUgdG9wIG9mIHRoZQpAQCAtNDk3LDEyICs1MzMsMTIgQEAgY2xhc3MgUG9ydChvYmplY3QpOgog
ICAgICAgICAiIiJTdGFydCBhIHdlYiBzZXJ2ZXIgaWYgaXQgaXMgYXZhaWxhYmxlLiBEbyBub3Ro
aW5nIGlmCiAgICAgICAgIGl0IGlzbid0LiBUaGlzIHJvdXRpbmUgaXMgYWxsb3dlZCB0byAoYW5k
IG1heSkgZmFpbCBpZiBhIHNlcnZlcgogICAgICAgICBpcyBhbHJlYWR5IHJ1bm5pbmcuIiIiCi0g
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2FwYWNoZToKKyAgICAgICAgaWYgc2VsZi5nZXRf
b3B0aW9uKCd1c2VfYXBhY2hlJyk6CiAgICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlciA9IGFw
YWNoZV9odHRwX3NlcnZlci5MYXlvdXRUZXN0QXBhY2hlSHR0cGQoc2VsZiwKLSAgICAgICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5KQorICAgICAgICAgICAgICAgIHNl
bGYuZ2V0X29wdGlvbigncmVzdWx0c19kaXJlY3RvcnknKSkKICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgIHNlbGYuX2h0dHBfc2VydmVyID0gaHR0cF9zZXJ2ZXIuTGlnaHR0cGQoc2VsZiwKLSAg
ICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5KQorICAgICAgICAg
ICAgICAgIHNlbGYuZ2V0X29wdGlvbigncmVzdWx0c19kaXJlY3RvcnknKSkKICAgICAgICAgc2Vs
Zi5faHR0cF9zZXJ2ZXIuc3RhcnQoKQogCiAgICAgZGVmIHN0YXJ0X3dlYnNvY2tldF9zZXJ2ZXIo
c2VsZik6CkBAIC01MTAsNyArNTQ2LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBp
dCBpc24ndC4gVGhpcyByb3V0aW5lIGlzIGFsbG93ZWQgdG8gKGFuZCBtYXkpIGZhaWwgaWYgYSBz
ZXJ2ZXIKICAgICAgICAgaXMgYWxyZWFkeSBydW5uaW5nLiIiIgogICAgICAgICBzZWxmLl93ZWJz
b2NrZXRfc2VydmVyID0gd2Vic29ja2V0X3NlcnZlci5QeVdlYlNvY2tldChzZWxmLAotICAgICAg
ICAgICAgc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSkKKyAgICAgICAgICAgIHNlbGYu
Z2V0X29wdGlvbigncmVzdWx0c19kaXJlY3RvcnknKSkKICAgICAgICAgc2VsZi5fd2Vic29ja2V0
X3NlcnZlci5zdGFydCgpCiAKICAgICBkZWYgYWNxdWlyZV9odHRwX2xvY2soc2VsZik6CmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2VfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKaW5kZXggYmFlY2FkOWQ0YWIyNTcxZTg3NmYyMWUzNjM2
ZDU0YzZkNWIxMDEyYy4uOTNmODgwODJhYjM4YTZmZTkyZGNkM2Y5YTNiM2MyNDNhNGU5MDVmYSAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9iYXNlX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQpAQCAtMjYsNyArMjYsNyBAQAogIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGJhc2UKK2ltcG9ydCBvcHRwYXJzZQog
aW1wb3J0IG9zCiBpbXBvcnQgU3RyaW5nSU8KIGltcG9ydCBzeXMKQEAgLTM2LDcgKzM2LDkgQEAg
aW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGF0aCBpbXBvcnQg
YWJzcGF0aF90b191cmkKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1w
b3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2Nr
IGltcG9ydCBNb2NrCitmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCiAKK2ltcG9y
dCBiYXNlCiAKICMgRklYTUU6IFRoaXMgbWFrZXMgU3RyaW5nSU8gb2JqZWN0cyB3b3JrIHdpdGgg
IndpdGgiLiBSZW1vdmUKICMgd2hlbiB3ZSB1cGdyYWRlIHRvIDIuNi4KQEAgLTI0Nyw2ICsyNDks
NDEgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBvcnQuZmlsZW5hbWVfdG9fdXJpKHRlc3RfZmlsZSksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWJzcGF0aF90b191cmkodGVzdF9maWxlKSkKIAorICAgIGRlZiB0ZXN0X2dl
dF9vcHRpb25fX3NldChzZWxmKToKKyAgICAgICAgb3B0aW9ucywgYXJncyA9IG9wdHBhcnNlLk9w
dGlvblBhcnNlcigpLnBhcnNlX2FyZ3MoKQorICAgICAgICBvcHRpb25zLmZvbyA9ICdiYXInCisg
ICAgICAgIHBvcnQgPSBiYXNlLlBvcnQob3B0aW9ucz1vcHRpb25zKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBvcnQuZ2V0X29wdGlvbignZm9vJyksICdiYXInKQorCisgICAgZGVmIHRlc3Rf
Z2V0X29wdGlvbl9fdW5zZXQoc2VsZik6CisgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQoKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZ2V0X29wdGlvbignZm9vJyksIE5vbmUpCisKKyAg
ICBkZWYgdGVzdF9nZXRfb3B0aW9uX19kZWZhdWx0KHNlbGYpOgorICAgICAgICBwb3J0ID0gYmFz
ZS5Qb3J0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmdldF9vcHRpb24oJ2Zvbycs
ICdiYXInKSwgJ2JhcicpCisKKyAgICBkZWYgdGVzdF9zZXRfb3B0aW9uX2RlZmF1bHRfX3Vuc2V0
KHNlbGYpOgorICAgICAgICBwb3J0ID0gYmFzZS5Qb3J0KCkKKyAgICAgICAgcG9ydC5zZXRfb3B0
aW9uX2RlZmF1bHQoJ2ZvbycsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQu
Z2V0X29wdGlvbignZm9vJyksICdiYXInKQorCisgICAgZGVmIHRlc3Rfc2V0X29wdGlvbl9kZWZh
dWx0X19zZXQoc2VsZik6CisgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBvcHRwYXJzZS5PcHRpb25Q
YXJzZXIoKS5wYXJzZV9hcmdzKCkKKyAgICAgICAgb3B0aW9ucy5mb28gPSAnYmFyJworICAgICAg
ICBwb3J0ID0gYmFzZS5Qb3J0KG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgIyBUaGlzIGNhbGwg
c2hvdWxkIGhhdmUgbm8gZWZmZWN0LgorICAgICAgICBwb3J0LnNldF9vcHRpb25fZGVmYXVsdCgn
Zm9vJywgJ25ld19iYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZ2V0X29wdGlv
bignZm9vJyksICdiYXInKQorCisgICAgZGVmIHRlc3RfbmFtZV9fdW5zZXQoc2VsZik6CisgICAg
ICAgIHBvcnQgPSBiYXNlLlBvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQubmFt
ZSgpLCBOb25lKQorCisgICAgZGVmIHRlc3RfbmFtZV9fc2V0KHNlbGYpOgorICAgICAgICBwb3J0
ID0gYmFzZS5Qb3J0KHBvcnRfbmFtZT0nZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
b3J0Lm5hbWUoKSwgJ2ZvbycpCisKIAogY2xhc3MgVmlydHVhbFRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICIiIlRlc3RzIHRoYXQgdmFyaW91cyBtZXRob2RzIGV4cGVjdGVkIHRvIGJlIHZp
cnR1YWwgYXJlLiIiIgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggODM1NmJkOTBkZmIwNjY1ODNk
NjM3MTNjZmJjMzA3NzFiNzY3NjFiNC4uNGQxN2I1MWM4MjhhNzJlMzNiZDlhYzIzZTE5NDY0NjZl
NTAzMmJlYiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC04OCwxMSArODgsNiBAQCBjbGFzcyBD
aHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJn
cyk6CiAgICAgICAgIGJhc2UuUG9ydC5fX2luaXRfXyhzZWxmLCAqKmt3YXJncykKLSAgICAgICAg
aWYgJ29wdGlvbnMnIGluIGt3YXJnczoKLSAgICAgICAgICAgIG9wdGlvbnMgPSBrd2FyZ3NbJ29w
dGlvbnMnXQotICAgICAgICAgICAgaWYgKG9wdGlvbnMgYW5kIChub3QgaGFzYXR0cihvcHRpb25z
LCAnY29uZmlndXJhdGlvbicpIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlv
bnMuY29uZmlndXJhdGlvbiBpcyBOb25lKSk6Ci0gICAgICAgICAgICAgICAgb3B0aW9ucy5jb25m
aWd1cmF0aW9uID0gc2VsZi5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKQogICAgICAgICBzZWxmLl9j
aHJvbWl1bV9iYXNlX2RpciA9IE5vbmUKIAogICAgIGRlZiBiYXNlbGluZV9wYXRoKHNlbGYpOgpA
QCAtMTA0LDkgKzk5LDkgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAg
IGR1bXBfcmVuZGVyX3RyZWVfYmluYXJ5X3BhdGggPSBzZWxmLl9wYXRoX3RvX2RyaXZlcigpCiAg
ICAgICAgIHJlc3VsdCA9IGNoZWNrX2ZpbGVfZXhpc3RzKGR1bXBfcmVuZGVyX3RyZWVfYmluYXJ5
X3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBkcml2ZXIn
KSBhbmQgcmVzdWx0Ci0gICAgICAgIGlmIHJlc3VsdCBhbmQgc2VsZi5fb3B0aW9ucy5idWlsZDoK
KyAgICAgICAgaWYgcmVzdWx0IGFuZCBzZWxmLmdldF9vcHRpb24oJ2J1aWxkJyk6CiAgICAgICAg
ICAgICByZXN1bHQgPSBzZWxmLl9jaGVja19kcml2ZXJfYnVpbGRfdXBfdG9fZGF0ZSgKLSAgICAg
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24pCisgICAgICAgICAgICAgICAg
c2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykpCiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICBfbG9nLmVycm9yKCcnKQogCkBAIC0xMTUsNyArMTEwLDcgQEAgY2xhc3MgQ2hyb21pdW1Q
b3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICByZXN1bHQgPSBjaGVja19maWxlX2V4aXN0cyho
ZWxwZXJfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsYXlv
dXQgdGVzdCBoZWxwZXInKSBhbmQgcmVzdWx0CiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5w
aXhlbF90ZXN0czoKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCdwaXhlbF90ZXN0cycpOgog
ICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5jaGVja19pbWFnZV9kaWZmKAogICAgICAgICAgICAg
ICAgICdUbyBvdmVycmlkZSwgaW52b2tlIHdpdGggLS1uby1waXhlbC10ZXN0cycpIGFuZCByZXN1
bHQKIApAQCAtMjA1LDEwICsyMDAsMTEgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6
CiAgICAgZGVmIHJlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0JywKLSAgICAg
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24sIHNlbGYuX29wdGlvbnMucmVz
dWx0c19kaXJlY3RvcnkpCisgICAgICAgICAgICAgICAgc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1
cmF0aW9uJyksCisgICAgICAgICAgICAgICAgc2VsZi5nZXRfb3B0aW9uKCdyZXN1bHRzX2RpcmVj
dG9yeScpKQogICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6Ci0gICAgICAgICAgICByZXR1
cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0
b3J5KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9u
KCdjb25maWd1cmF0aW9uJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5JykpCiAKICAgICBkZWYgc2V0dXBfdGVz
dF9ydW4oc2VsZik6CiAgICAgICAgICMgRGVsZXRlIHRoZSBkaXNrIGNhY2hlIGlmIGFueSB0byBl
bnN1cmUgYSBjbGVhbiB0ZXN0IHJ1bi4KQEAgLTI2Miw3ICsyNTgsNyBAQCBjbGFzcyBDaHJvbWl1
bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgIyBGSVhNRTogVGhpcyBkcnRfb3ZlcnJpZGVzIGhh
bmRsaW5nIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gd2Ugc3dpdGNoCiAgICAgICAgICMgZnJvbSB0
ZXNfc2hlbGwgdG8gRFJULgogICAgICAgICBkcnRfb3ZlcnJpZGVzID0gJycKLSAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucyBhbmQgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBzZWxm
LmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGRydF9vdmVycmlkZXNfcGF0aCA9
IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0cycsCiAgICAgICAgICAgICAg
ICAgJ3BsYXRmb3JtJywgJ2Nocm9taXVtJywgJ2RydF9leHBlY3RhdGlvbnMudHh0JykKICAgICAg
ICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRydF9vdmVycmlkZXNfcGF0aCk6CkBAIC0zNTcsOSAr
MzUzLDkgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAKICAgICBkZWYgX3BhdGhf
dG9faW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUgPSAnaW1hZ2VfZGlmZicK
LSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBzZWxmLmdldF9v
cHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIGJpbmFyeV9uYW1lID0gJ0ltYWdlRGlmZicK
LSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0
aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5n
ZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIGJpbmFyeV9uYW1lKQogCiAKIGNsYXNzIENocm9t
aXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKQEAgLTM3OCwyNyArMzc0LDI3IEBAIGNsYXNzIENocm9t
aXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgi
LS1waXhlbC10ZXN0cz0iICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9w
b3J0Ll9jb252ZXJ0X3BhdGgoc2VsZi5faW1hZ2VfcGF0aCkpCiAKLSAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3VzZV9k
cnQnKToKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgnLS10ZXN0LXNoZWxsJykKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgnLS1sYXlvdXQtdGVz
dHMnKQogCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuc3RhcnR1cF9kaWFsb2c6CisgICAgICAg
IGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbignc3RhcnR1cF9kaWFsb2cnKToKICAgICAgICAgICAg
IGRyaXZlcl9hcmdzLmFwcGVuZCgnLS10ZXN0c2hlbGwtc3RhcnR1cC1kaWFsb2cnKQogCi0gICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMuZ3BfZmF1bHRfZXJyb3JfYm94OgorICAgICAgICBpZiBzZWxm
Ll9wb3J0LmdldF9vcHRpb24oJ2dwX2ZhdWx0X2Vycm9yX2JveCcpOgogICAgICAgICAgICAgZHJp
dmVyX2FyZ3MuYXBwZW5kKCctLWdwLWZhdWx0LWVycm9yLWJveCcpCiAKLSAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy5hY2NlbGVyYXRlZF9jb21wb3NpdGluZzoKKyAgICAgICAgaWYgc2VsZi5fcG9y
dC5nZXRfb3B0aW9uKCdhY2NlbGVyYXRlZF9jb21wb3NpdGluZycpOgogICAgICAgICAgICAgZHJp
dmVyX2FyZ3MuYXBwZW5kKCctLWVuYWJsZS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZycpCiAKLSAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy5hY2NlbGVyYXRlZF8yZF9jYW52YXM6CisgICAgICAgIGlm
IHNlbGYuX3BvcnQuZ2V0X29wdGlvbignYWNjZWxlcmF0ZWRfMmRfY2FudmFzJyk6CiAgICAgICAg
ICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tZW5hYmxlLWFjY2VsZXJhdGVkLTJkLWNhbnZhcycp
CiAgICAgICAgIHJldHVybiBkcml2ZXJfYXJncwogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgogICAg
ICAgICAjIEZJWE1FOiBTaG91bGQgYmUgYW4gZXJyb3IgdG8gY2FsbCB0aGlzIG1ldGhvZCB0d2lj
ZS4KLSAgICAgICAgY21kID0gc2VsZi5fY29tbWFuZF93cmFwcGVyKHNlbGYuX29wdGlvbnMud3Jh
cHBlcikKKyAgICAgICAgY21kID0gc2VsZi5fY29tbWFuZF93cmFwcGVyKHNlbGYuX3BvcnQuZ2V0
X29wdGlvbignd3JhcHBlcicpKQogICAgICAgICBjbWQuYXBwZW5kKHNlbGYuX3BvcnQuX3BhdGhf
dG9fZHJpdmVyKCkpCiAgICAgICAgIGNtZCArPSBzZWxmLl9kcml2ZXJfYXJncygpCiAKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fZ3B1X3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkKaW5kZXggMWRkM2VhZWQ4Y2E0
MjA5ZDY3MjAwODE0Mzc0MTBlNTcyZjY2ZjY5Ni4uM2YxM2I5M2Y4MDVhYjA4MmU3YmRkN2VmZTY4
NTc5YTg1NDU1ZTgzYyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRl
c3QucHkKQEAgLTI2LDEzICsyNiw5IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0Ci1p
bXBvcnQgY2hyb21pdW1fZ3B1Ci0KIAotY2xhc3MgTW9ja09wdGlvbnMob2JqZWN0KToKLSAgICBk
ZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmcg
PSBOb25lCi0gICAgICAgIHNlbGYuYWNjZWxlcmF0ZWRfMmRfY2FudmFzID0gTm9uZQorZnJvbSB3
ZWJraXRweS50b29sIGltcG9ydCBtb2NrdG9vbAoraW1wb3J0IGNocm9taXVtX2dwdQogCiAKIGNs
YXNzIENocm9taXVtR3B1VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00Nyw3ICs0Myw5IEBA
IGNsYXNzIENocm9taXVtR3B1VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgYXNz
ZXJ0T3ZlcnJpZGVzV29ya2VkKHNlbGYsIHBvcnRfbmFtZSk6CiAgICAgICAgICMgdGVzdCB0aGF0
IHdlIGdvdCB0aGUgcmlnaHQgcG9ydAotICAgICAgICBwb3J0ID0gY2hyb21pdW1fZ3B1LmdldChw
b3J0X25hbWU9cG9ydF9uYW1lLCBvcHRpb25zPU1vY2tPcHRpb25zKCkpCisgICAgICAgIG1vY2tf
b3B0aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKGFjY2VsZXJhdGVkX2NvbXBvc2l0aW5nPU5v
bmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VsZXJh
dGVkXzJkX2NhbnZhcz1Ob25lKQorICAgICAgICBwb3J0ID0gY2hyb21pdW1fZ3B1LmdldChwb3J0
X25hbWU9cG9ydF9uYW1lLCBvcHRpb25zPW1vY2tfb3B0aW9ucykKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHBvcnQuX29wdGlvbnMuYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmcpCiAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShwb3J0Ll9vcHRpb25zLmFjY2VsZXJhdGVkXzJkX2NhbnZhcykKIApkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV9saW51eC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkKaW5kZXggMTc2OTkxYjdmNmE2OGRmNzc5ZjcxZDUx
MTA0NDEzMjg2OWUxZTE4OS4uYjI2YTZiNTc0MTU3M2YyYjdlNDM2OTJiOGQxYjNhNjkxZDhkZWQw
NyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9saW51eC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5CkBAIC01Miw3ICs1Miw3IEBAIGNs
YXNzIENocm9taXVtTGludXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgZGVmIGNo
ZWNrX2J1aWxkKHNlbGYsIG5lZWRzX2h0dHApOgogICAgICAgICByZXN1bHQgPSBjaHJvbWl1bS5D
aHJvbWl1bVBvcnQuY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCkKICAgICAgICAgaWYgbmVl
ZHNfaHR0cDoKLSAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2FwYWNoZToKKyAgICAg
ICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2FwYWNoZScpOgogICAgICAgICAgICAgICAg
IHJlc3VsdCA9IHNlbGYuX2NoZWNrX2FwYWNoZV9pbnN0YWxsKCkgYW5kIHJlc3VsdAogICAgICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9jaGVja19saWdodHRw
ZF9pbnN0YWxsKCkgYW5kIHJlc3VsdApAQCAtODEsNyArODEsNyBAQCBjbGFzcyBDaHJvbWl1bUxp
bnV4UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICBiYXNlID0gc2VsZi5wYXRo
X2Zyb21fY2hyb21pdW1fYmFzZSgpCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGgu
am9pbihiYXNlLCAnc2NvbnNidWlsZCcpKToKICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmpv
aW4oYmFzZSwgJ3Njb25zYnVpbGQnLCAqY29tcHMpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3Rz
KG9zLnBhdGguam9pbihiYXNlLCAnb3V0JywgKmNvbXBzKSkgb3Igbm90IHNlbGYuX29wdGlvbnMu
dXNlX2RydDoKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGJhc2UsICdv
dXQnLCAqY29tcHMpKSBvciBub3Qgc2VsZi5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAg
ICAgICByZXR1cm4gb3MucGF0aC5qb2luKGJhc2UsICdvdXQnLCAqY29tcHMpCiAgICAgICAgIGJh
c2UgPSBzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgpCiAgICAgICAgIGlmIG9zLnBhdGguZXhp
c3RzKG9zLnBhdGguam9pbihiYXNlLCAnc2NvbnNidWlsZCcpKToKQEAgLTE0Nyw5ICsxNDcsOSBA
QCBjbGFzcyBDaHJvbWl1bUxpbnV4UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogCiAgICAg
ZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmLCBjb25maWd1cmF0aW9uPU5vbmUpOgogICAgICAgICBp
ZiBub3QgY29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLl9v
cHRpb25zLmNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLmdl
dF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKQogICAgICAgICBiaW5hcnlfbmFtZSA9ICd0ZXN0X3No
ZWxsJwotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAgIGlmIHNlbGYu
Z2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgYmluYXJ5X25hbWUgPSAnRHVtcFJl
bmRlclRyZWUnCiAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKGNvbmZpZ3VyYXRpb24s
IGJpbmFyeV9uYW1lKQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CmluZGV4IDY0MDE2YWIw
NDJjYWU4YThlMjdiZGNhYWI0NjFjZjVjYWUzYTJmODEuLmQxYzM4M2MxM2VjMmYxM2FmNWZiMWYx
NTQwNTc5YzRjODg5ZmRkNjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CkBAIC03Myw3
ICs3Myw3IEBAIGNsYXNzIENocm9taXVtTWFjUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgog
CiAgICAgZGVmIGRyaXZlcl9uYW1lKHNlbGYpOgogICAgICAgICAiIiJuYW1lIGZvciB0aGlzIHBv
cnQncyBlcXVpdmFsZW50IG9mIER1bXBSZW5kZXJUcmVlLiIiIgotICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLnVzZV9kcnQ6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgog
ICAgICAgICAgICAgcmV0dXJuICJEdW1wUmVuZGVyVHJlZSIKICAgICAgICAgcmV0dXJuICJUZXN0
U2hlbGwiCiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBjbGFzcyBDaHJvbWl1bU1hY1BvcnQoY2hyb21p
dW0uQ2hyb21pdW1Qb3J0KToKIAogICAgIGRlZiBfYnVpbGRfcGF0aChzZWxmLCAqY29tcHMpOgog
ICAgICAgICBwYXRoID0gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgneGNvZGVidWlsZCcs
ICpjb21wcykKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCkgb3Igbm90IHNlbGYuX29w
dGlvbnMudXNlX2RydDoKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCkgb3Igbm90IHNl
bGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgcmV0dXJuIHBhdGgKICAgICAg
ICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdXZWJLaXQnLCAnY2hyb21pdW0n
LCAneGNvZGVidWlsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqY29tcHMpCkBAIC0xMzgsMTUgKzEzOCwxNSBAQCBjbGFzcyBDaHJvbWl1bU1hY1BvcnQoY2hy
b21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgIyBGSVhNRTogbWFrZSB8Y29uZmlndXJhdGlv
bnwgaGFwcHkgd2l0aCBjYXNlLXNlbnNpdGl2ZSBmaWxlCiAgICAgICAgICMgc3lzdGVtcy4KICAg
ICAgICAgaWYgbm90IGNvbmZpZ3VyYXRpb246Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uID0g
c2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uCisgICAgICAgICAgICBjb25maWd1cmF0aW9uID0g
c2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykKICAgICAgICAgcmV0dXJuIHNlbGYuX2J1
aWxkX3BhdGgoY29uZmlndXJhdGlvbiwgc2VsZi5kcml2ZXJfbmFtZSgpICsgJy5hcHAnLAogICAg
ICAgICAgICAgJ0NvbnRlbnRzJywgJ01hY09TJywgc2VsZi5kcml2ZXJfbmFtZSgpKQogCiAgICAg
ZGVmIF9wYXRoX3RvX2hlbHBlcihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUgPSAnbGF5b3V0
X3Rlc3RfaGVscGVyJwotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAg
IGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgYmluYXJ5X25hbWUg
PSAnTGF5b3V0VGVzdEhlbHBlcicKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2Vs
Zi5fb3B0aW9ucy5jb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIGJpbmFyeV9u
YW1lKQogCiAgICAgZGVmIF9wYXRoX3RvX3dkaWZmKHNlbGYpOgogICAgICAgICByZXR1cm4gJ3dk
aWZmJwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKaW5kZXggMmU5NDYxYTNm
NDcwYWIxYTI4ZGY4ZWU4YTUyMzk3MmZjM2Y4ZjUyOS4uY2I0NTQzMDQzZTQyNmIzMWI5Mzk4ZGUz
MzM1OTAzZDhlZmNmZDUxMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5
CkBAIC0yNiwyNCArMjYsMjIgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWlt
cG9ydCBjaHJvbWl1bQotaW1wb3J0IGNocm9taXVtX2xpbnV4Ci1pbXBvcnQgY2hyb21pdW1fbWFj
Ci1pbXBvcnQgY2hyb21pdW1fd2luCitpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0
IFN0cmluZ0lPCi1pbXBvcnQgb3MKIAorZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBtb2NrdG9v
bAogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIAoraW1wb3J0IGNo
cm9taXVtCitpbXBvcnQgY2hyb21pdW1fbGludXgKK2ltcG9ydCBjaHJvbWl1bV9tYWMKK2ltcG9y
dCBjaHJvbWl1bV93aW4KIAogY2xhc3MgQ2hyb21pdW1Ecml2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgbW9ja19wb3J0ID0gTW9jaygp
Ci0gICAgICAgICMgRklYTUU6IFRoZSBEcml2ZXIgc2hvdWxkIG5vdCBiZSBncmFiYmluZyBhdCBw
b3J0Ll9vcHRpb25zIQotICAgICAgICBtb2NrX3BvcnQuX29wdGlvbnMgPSBNb2NrKCkKLSAgICAg
ICAgbW9ja19wb3J0Ll9vcHRpb25zLndyYXBwZXIgPSAiIgogICAgICAgICBzZWxmLmRyaXZlciA9
IGNocm9taXVtLkNocm9taXVtRHJpdmVyKG1vY2tfcG9ydCwgaW1hZ2VfcGF0aD1Ob25lLCBvcHRp
b25zPU5vbmUpCiAKICAgICBkZWYgdGVzdF90ZXN0X3NoZWxsX2NvbW1hbmQoc2VsZik6CkBAIC0x
MDYsMjUgKzEwNCwxOSBAQCBjbGFzcyBDaHJvbWl1bVBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgICAgIHJldHVybiAnZGVmYXVsdCcKIAogICAgIGRlZiB0ZXN0X3BhdGhfdG9f
aW1hZ2VfZGlmZihzZWxmKToKLSAgICAgICAgY2xhc3MgTW9ja09wdGlvbnM6Ci0gICAgICAgICAg
ICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICAgICAgc2VsZi51c2VfZHJ0ID0gVHJ1
ZQotCi0gICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQob3B0aW9u
cz1Nb2NrT3B0aW9ucygpKQorICAgICAgICBtb2NrX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0
aW9ucyh1c2VfZHJ0PVRydWUpCisgICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RM
aW51eFBvcnQob3B0aW9ucz1tb2NrX29wdGlvbnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShw
b3J0Ll9wYXRoX3RvX2ltYWdlX2RpZmYoKS5lbmRzd2l0aCgKICAgICAgICAgICAgICcvb3V0L2Rl
ZmF1bHQvSW1hZ2VEaWZmJyksIG1zZz1wb3J0Ll9wYXRoX3RvX2ltYWdlX2RpZmYoKSkKLSAgICAg
ICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdE1hY1BvcnQob3B0aW9ucz1Nb2NrT3B0aW9u
cygpKQorICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TWFjUG9ydChvcHRpb25z
PW1vY2tfb3B0aW9ucykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuX3BhdGhfdG9faW1h
Z2VfZGlmZigpLmVuZHN3aXRoKAogICAgICAgICAgICAgJy94Y29kZWJ1aWxkL2RlZmF1bHQvSW1h
Z2VEaWZmJykpCiAgICAgICAgICMgRklYTUU6IEZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgZ29pbmcg
dG8gd29yayBvbiBXaW5kb3dzLgogICAgICAgICAjcG9ydCA9IGNocm9taXVtX3dpbi5DaHJvbWl1
bVdpblBvcnQoJ3Rlc3QtcG9ydCcsIG9wdGlvbnM9TW9ja09wdGlvbnMoKSkKIAogICAgIGRlZiB0
ZXN0X3NraXBwZWRfbGF5b3V0X3Rlc3RzKHNlbGYpOgotICAgICAgICBjbGFzcyBNb2NrT3B0aW9u
czoKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgICAgICAgICBzZWxm
LnVzZV9kcnQgPSBUcnVlCi0KLSAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExp
bnV4UG9ydChvcHRpb25zPU1vY2tPcHRpb25zKCkpCisgICAgICAgIG1vY2tfb3B0aW9ucyA9IG1v
Y2t0b29sLk1vY2tPcHRpb25zKHVzZV9kcnQ9VHJ1ZSkKKyAgICAgICAgcG9ydCA9IENocm9taXVt
UG9ydFRlc3QuVGVzdExpbnV4UG9ydChvcHRpb25zPW1vY2tfb3B0aW9ucykKIAogICAgICAgICBm
YWtlX3Rlc3QgPSBvcy5wYXRoLmpvaW4ocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksICJmYXN0L2pz
L25vdC1nb29kLmpzIikKIApAQCAtMTM4LDIyICsxMzAsMTQgQEAgREVGRVIgTElOVVggV0lOIDog
ZmFzdC9qcy92ZXJ5LWdvb2QuanMgPSBUSU1FT1VUIFBBU1MiIiIKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCJmYXN0L2pzL25vdC1nb29kLmpzIiBpbiBza2lwcGVkX3Rlc3RzKQogCiAgICAgZGVm
IHRlc3RfZGVmYXVsdF9jb25maWd1cmF0aW9uKHNlbGYpOgotICAgICAgICBjbGFzcyBFbXB0eU9w
dGlvbnM6Ci0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICAgICAg
cGFzcwotCi0gICAgICAgIG9wdGlvbnMgPSBFbXB0eU9wdGlvbnMoKQotICAgICAgICBwb3J0ID0g
Q2hyb21pdW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0KG9wdGlvbnMpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKG9wdGlvbnMuY29uZmlndXJhdGlvbiwgJ2RlZmF1bHQnKQorICAgICAgICBtb2Nr
X29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucygpCisgICAgICAgIHBvcnQgPSBDaHJvbWl1
bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQob3B0aW9ucz1tb2NrX29wdGlvbnMpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKG1vY2tfb3B0aW9ucy5jb25maWd1cmF0aW9uLCAnZGVmYXVsdCcpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRlZmF1bHRfY29uZmlndXJhdGlvbl9jYWxsZWQp
CiAKLSAgICAgICAgY2xhc3MgT3B0aW9uc1dpdGhVbnNldENvbmZpZ3VyYXRpb246Ci0gICAgICAg
ICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0
aW9uID0gTm9uZQotCi0gICAgICAgIG9wdGlvbnMgPSBPcHRpb25zV2l0aFVuc2V0Q29uZmlndXJh
dGlvbigpCi0gICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQob3B0
aW9ucykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5jb25maWd1cmF0aW9uLCAn
ZGVmYXVsdCcpCisgICAgICAgIG1vY2tfb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKGNv
bmZpZ3VyYXRpb249Tm9uZSkKKyAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExp
bnV4UG9ydChtb2NrX29wdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1vY2tfb3B0
aW9ucy5jb25maWd1cmF0aW9uLCAnZGVmYXVsdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShw
b3J0LmRlZmF1bHRfY29uZmlndXJhdGlvbl9jYWxsZWQpCiAKICAgICBkZWYgdGVzdF9kaWZmX2lt
YWdlKHNlbGYpOgpAQCAtMTYxLDkgKzE0NSw2IEBAIERFRkVSIExJTlVYIFdJTiA6IGZhc3QvanMv
dmVyeS1nb29kLmpzID0gVElNRU9VVCBQQVNTIiIiCiAgICAgICAgICAgICBkZWYgX3BhdGhfdG9f
aW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gIi9wYXRoL3RvL2ltYWdl
X2RpZmYiCiAKLSAgICAgICAgY2xhc3MgRW1wdHlPcHRpb25zOgotICAgICAgICAgICAgdXNlX2Ry
dCA9IEZhbHNlCi0KICAgICAgICAgY2xhc3MgTW9ja0V4ZWN1dGU6CiAgICAgICAgICAgICBkZWYg
X19pbml0X18oc2VsZiwgcmVzdWx0KToKICAgICAgICAgICAgICAgICBzZWxmLl9yZXN1bHQgPSBy
ZXN1bHQKQEAgLTE4MCw4ICsxNjEsOCBAQCBERUZFUiBMSU5VWCBXSU4gOiBmYXN0L2pzL3Zlcnkt
Z29vZC5qcyA9IFRJTUVPVVQgUEFTUyIiIgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fcmVzdWx0CiAgICAgICAgICAgICAgICAgcmV0dXJuICcnCiAKLSAgICAgICAgb3B0aW9ucyA9
IEVtcHR5T3B0aW9ucygpCi0gICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51
eFBvcnQob3B0aW9ucykKKyAgICAgICAgbW9ja19vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlv
bnModXNlX2RydD1GYWxzZSkKKyAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExp
bnV4UG9ydChtb2NrX29wdGlvbnMpCiAKICAgICAgICAgIyBJbWFnZXMgYXJlIGRpZmZlcmVudC4K
ICAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGUoMCkKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2lu
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV93aW4ucHkKaW5kZXggNjdkMmFiMmYxZGM5MDc0ZmRhYTYyN2VjMmE0ZDA5ZjMzYjhjYjU2
MC4uNjliNTI5YWUxYjQzYWI0ZWQ2NjNlMGY2ZWI0MTY1N2VhNmZiNzQ1OCAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93
aW4ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV93aW4ucHkKQEAgLTU1LDkgKzU1LDcgQEAgY2xhc3MgQ2hyb21pdW1XaW5Qb3J0
KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgICMgcHl0aG9uIGV4ZWN1dGFibGUgdG8g
cnVuIGNnaSBwcm9ncmFtLgogICAgICAgICBlbnZbIkNZR1dJTl9QQVRIIl0gPSBzZWxmLnBhdGhf
ZnJvbV9jaHJvbWl1bV9iYXNlKAogICAgICAgICAgICAgInRoaXJkX3BhcnR5IiwgImN5Z3dpbiIs
ICJiaW4iKQotICAgICAgICBpZiAoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgYW5kIHNlbGYuX29w
dGlvbnMgYW5kCi0gICAgICAgICAgICBoYXNhdHRyKHNlbGYuX29wdGlvbnMsICJyZWdpc3Rlcl9j
eWd3aW4iKSBhbmQKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMucmVnaXN0ZXJfY3lnd2luKToK
KyAgICAgICAgaWYgKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiIGFuZCBzZWxmLmdldF9vcHRpb24o
J3JlZ2lzdGVyX2N5Z3dpbicpKToKICAgICAgICAgICAgIHNldHVwX21vdW50ID0gc2VsZi5wYXRo
X2Zyb21fY2hyb21pdW1fYmFzZSgidGhpcmRfcGFydHkiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjeWd3aW4iLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXR1cF9tb3VudC5i
YXQiKQpAQCAtMTEzLDcgKzExMSw3IEBAIGNsYXNzIENocm9taXVtV2luUG9ydChjaHJvbWl1bS5D
aHJvbWl1bVBvcnQpOgogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwKToKICAgICAgICAgICAg
IHJldHVybiBwCiAgICAgICAgIHAgPSBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCdjaHJv
bWUnLCAqY29tcHMpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHApIG9yIG5vdCBzZWxmLl9v
cHRpb25zLnVzZV9kcnQ6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHApIG9yIG5vdCBzZWxm
LmdldF9vcHRpb24oJ3VzZV9kcnQnKToKICAgICAgICAgICAgIHJldHVybiBwCiAgICAgICAgIHJl
dHVybiBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoKSwgJ1dlYktpdCcs
ICdjaHJvbWl1bScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNvbXBzKQpAQCAtMTQx
LDIzICsxMzksMjMgQEAgY2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9taXVtLkNocm9taXVtUG9y
dCk6CiAKICAgICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYsIGNvbmZpZ3VyYXRpb249Tm9uZSk6
CiAgICAgICAgIGlmIG5vdCBjb25maWd1cmF0aW9uOgotICAgICAgICAgICAgY29uZmlndXJhdGlv
biA9IHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbgorICAgICAgICAgICAgY29uZmlndXJhdGlv
biA9IHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpCiAgICAgICAgIGJpbmFyeV9uYW1l
ID0gJ3Rlc3Rfc2hlbGwuZXhlJwotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6Cisg
ICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgYmluYXJ5
X25hbWUgPSAnRHVtcFJlbmRlclRyZWUuZXhlJwogICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRf
cGF0aChjb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKIAogICAgIGRlZiBfcGF0aF90b19oZWxw
ZXIoc2VsZik6CiAgICAgICAgIGJpbmFyeV9uYW1lID0gJ2xheW91dF90ZXN0X2hlbHBlci5leGUn
Ci0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoKKyAgICAgICAgaWYgc2VsZi5nZXRf
b3B0aW9uKCd1c2VfZHJ0Jyk6CiAgICAgICAgICAgICBiaW5hcnlfbmFtZSA9ICdMYXlvdXRUZXN0
SGVscGVyLmV4ZScKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5fb3B0aW9u
cy5jb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxk
X3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIGJpbmFyeV9uYW1lKQogCiAg
ICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6CiAgICAgICAgIGJpbmFyeV9uYW1lID0g
J2ltYWdlX2RpZmYuZXhlJwotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAg
ICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndXNlX2RydCcpOgogICAgICAgICAgICAgYmluYXJ5X25h
bWUgPSAnSW1hZ2VEaWZmLmV4ZScKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2Vs
Zi5fb3B0aW9ucy5jb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIGJpbmFyeV9u
YW1lKQogCiAgICAgZGVmIF9wYXRoX3RvX3dkaWZmKHNlbGYpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgndGhpcmRfcGFydHknLCAnY3lnd2luJywgJ2Jpbics
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2RyeXJ1bi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZHJ5cnVuLnB5CmluZGV4IDY0OGNjYWRhYWU2ZjQ1ZjdkMDZiMmI1ZWI2Y2IxZWRkMmZm
NThiMTAuLjhhNmFmNTZjODQyMGU0NTBjNDE4OTdhZmU1NDNlNjY3MDZmOWFlNzYgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVu
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
ZHJ5cnVuLnB5CkBAIC0xMDEsNyArMTAxLDYgQEAgY2xhc3MgRHJ5cnVuRHJpdmVyKGJhc2UuRHJp
dmVyKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBpbWFnZV9wYXRoLCBvcHRpb25z
LCBleGVjdXRpdmUpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAotICAgICAgICBzZWxmLl9v
cHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLl9pbWFnZV9wYXRoID0gaW1hZ2VfcGF0aAog
ICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBleGVjdXRpdmUKICAgICAgICAgc2VsZi5fbGF5b3V0
X3Rlc3RzX2RpciA9IE5vbmUKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQppbmRl
eCA4MWMzNzMyN2EyMDk5MmVlMGM0YzNjZDllODRkMzExZDZlYTQ1OThiLi45NzhhNTU3YTU3YjIw
YTNiOGI0MGU5OTk5OGUzNWE4NWVlZTI5NjZlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3Vu
aXR0ZXN0LnB5CkBAIC0yOSw2ICsyOSw4IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QK
IAorZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBtb2NrdG9vbAorCiBpbXBvcnQgY2hyb21pdW1f
Z3B1CiBpbXBvcnQgY2hyb21pdW1fbGludXgKIGltcG9ydCBjaHJvbWl1bV9tYWMKQEAgLTUyLDIx
ICs1NCwxMSBAQCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBG
SVhNRTogVGhlIHBvcnRzIHRoZW1zZWx2ZXMgc2hvdWxkIGV4cG9zZSB3aGF0IG9wdGlvbnMgdGhl
eSByZXF1aXJlLAogICAgICMgaW5zdGVhZCBvZiBwYXNzaW5nIGdlbmVyaWMgIm9wdGlvbnMiLgog
Ci0gICAgY2xhc3MgV2ViS2l0T3B0aW9ucyhvYmplY3QpOgotICAgICAgICAiIiJSZXByZXNlbnRz
IHRoZSBtaW5pbXVtIG9wdGlvbnMgZm9yIFdlYktpdCBwb3J0LiIiIgotICAgICAgICBkZWYgX19p
bml0X18oc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnBpeGVsX3Rlc3RzID0gRmFsc2UKLQotICAg
IGNsYXNzIENocm9taXVtT3B0aW9ucyhXZWJLaXRPcHRpb25zKToKLSAgICAgICAgIiIiUmVwcmVz
ZW50cyBtaW5pbXVtIG9wdGlvbnMgZm9yIENocm9taXVtIHBvcnQuIiIiCi0gICAgICAgIGRlZiBf
X2luaXRfXyhzZWxmKToKLSAgICAgICAgICAgIEZhY3RvcnlUZXN0LldlYktpdE9wdGlvbnMuX19p
bml0X18oc2VsZikKLSAgICAgICAgICAgIHNlbGYuY2hyb21pdW0gPSBUcnVlCi0KICAgICBkZWYg
c2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYucmVhbF9zeXNfcGxhdGZvcm0gPSBzeXMucGxhdGZv
cm0KLSAgICAgICAgc2VsZi53ZWJraXRfb3B0aW9ucyA9IEZhY3RvcnlUZXN0LldlYktpdE9wdGlv
bnMoKQotICAgICAgICBzZWxmLmNocm9taXVtX29wdGlvbnMgPSBGYWN0b3J5VGVzdC5DaHJvbWl1
bU9wdGlvbnMoKQorICAgICAgICBzZWxmLndlYmtpdF9vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09w
dGlvbnMocGl4ZWxfdGVzdHM9RmFsc2UpCisgICAgICAgIHNlbGYuY2hyb21pdW1fb3B0aW9ucyA9
IG1vY2t0b29sLk1vY2tPcHRpb25zKHBpeGVsX3Rlc3RzPUZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNocm9taXVtPVRydWUpCiAKICAg
ICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9IHNlbGYucmVhbF9z
eXNfcGxhdGZvcm0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKaW5kZXggMzI3YjE5ZWU1ZmE1
NDUwM2I0YWZjMjliNzFlMDBlNzliZGE1NmYxYi4uZDM4M2E0Y2Q4ODM3ZTU5Y2E1NGNkYWU5Nzk2
MWE0YTU1YjFmNDAwNCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKQEAgLTM1LDcgKzM1
LDcgQEAgaW1wb3J0IHBvcnRfdGVzdGNhc2UKIAogCiBjbGFzcyBNYWNUZXN0KHBvcnRfdGVzdGNh
c2UuUG9ydFRlc3RDYXNlKToKLSAgICBkZWYgbWFrZV9wb3J0KHNlbGYsIG9wdGlvbnM9cG9ydF90
ZXN0Y2FzZS5Nb2NrT3B0aW9ucygpKToKKyAgICBkZWYgbWFrZV9wb3J0KHNlbGYsIG9wdGlvbnM9
cG9ydF90ZXN0Y2FzZS5tb2NrX29wdGlvbnMpOgogICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0g
J2Rhcndpbic6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBwb3J0X29iaiA9IG1h
Yy5NYWNQb3J0KG9wdGlvbnM9b3B0aW9ucykKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQpp
bmRleCA0NzU5N2Q2N2NjMjVhNjM4YTlmNjQ1YTdiNWUwYmUyOWQ2NTYxNTVmLi4wNGFkYTUwMDBl
M2IzNTM4MmMzYzk2MDkyMmUyOGM1NTNjM2Y0MDRlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3Rj
YXNlLnB5CkBAIC0zMiwyMCArMzIsMTUgQEAgaW1wb3J0IG9zCiBpbXBvcnQgdGVtcGZpbGUKIGlt
cG9ydCB1bml0dGVzdAogCi0KLWNsYXNzIE1vY2tPcHRpb25zKG9iamVjdCk6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsCi0gICAgICAgICAgICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5PSdsYXlvdXQt
dGVzdC1yZXN1bHRzJywKLSAgICAgICAgICAgICAgICAgdXNlX2FwYWNoZT1UcnVlLAotICAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uPSdSZWxlYXNlJyk6Ci0gICAgICAgIHNlbGYucmVzdWx0
c19kaXJlY3RvcnkgPSByZXN1bHRzX2RpcmVjdG9yeQotICAgICAgICBzZWxmLnVzZV9hcGFjaGUg
PSB1c2VfYXBhY2hlCi0gICAgICAgIHNlbGYuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24K
K2Zyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKK21vY2tfb3B0aW9ucyA9IG1vY2t0
b29sLk1vY2tPcHRpb25zKHJlc3VsdHNfZGlyZWN0b3J5PSdsYXlvdXQtdGVzdC1yZXN1bHRzJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9hcGFjaGU9VHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249J1JlbGVhc2Un
KQogCiAKIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVz
dHMgdGhlIFdlYktpdCBwb3J0IGltcGxlbWVudGF0aW9uLiIiIgotICAgIGRlZiBtYWtlX3BvcnQo
c2VsZiwgb3B0aW9ucz1Nb2NrT3B0aW9ucygpKToKKyAgICBkZWYgbWFrZV9wb3J0KHNlbGYsIG9w
dGlvbnM9bW9ja19vcHRpb25zKToKICAgICAgICAgIiIiT3ZlcnJpZGUgaW4gc3ViY2xhc3MuIiIi
CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXgg
M2I4MTE2Nzk5YWYzY2Q0ZWVhNmViMWRmZGI4ZGE5MDRjZDVmOTgwMC4uMzY5MWM1YWFlOWZjMzIx
Yzk1MTc4NjM2Y2RjZDAzYjY5YmRkZDczZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtMjE1LDE0ICsyMTUs
MTEgQEAgY2xhc3MgVGVzdFBvcnQoYmFzZS5Qb3J0KToKICAgICBkZWYgbmFtZShzZWxmKToKICAg
ICAgICAgcmV0dXJuIHNlbGYuX25hbWUKIAotICAgIGRlZiBvcHRpb25zKHNlbGYpOgotICAgICAg
ICByZXR1cm4gc2VsZi5fb3B0aW9ucwotCiAgICAgZGVmIF9wYXRoX3RvX3dkaWZmKHNlbGYpOgog
ICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIHJlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgot
ICAgICAgICByZXR1cm4gJy90bXAvJyArIHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkK
KyAgICAgICAgcmV0dXJuICcvdG1wLycgKyBzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0
b3J5JykKIAogICAgIGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmKToKICAgICAgICAgcGFzcwpAQCAt
Mjg1LDcgKzI4Miw2IEBAIGNsYXNzIFRlc3REcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBwb3J0LCBpbWFnZV9wYXRoLCBvcHRpb25zLCBleGVjdXRpdmUpOgogICAg
ICAgICBzZWxmLl9wb3J0ID0gcG9ydAogICAgICAgICBzZWxmLl9pbWFnZV9wYXRoID0gaW1hZ2Vf
cGF0aAotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLl9leGVj
dXRpdmUgPSBleGVjdXRpdmUKICAgICAgICAgc2VsZi5faW1hZ2Vfd3JpdHRlbiA9IEZhbHNlCiAK
QEAgLTMwMiw3ICsyOTgsNyBAQCBjbGFzcyBUZXN0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAg
ICAgaWYgdGVzdC5oYW5nOgogICAgICAgICAgICAgdGltZS5zbGVlcCgoZmxvYXQodGltZW91dG1z
KSAqIDQpIC8gMTAwMC4wKQogCi0gICAgICAgIGlmIHNlbGYuX3BvcnQub3B0aW9ucygpLnBpeGVs
X3Rlc3RzIGFuZCB0ZXN0LmFjdHVhbF9pbWFnZToKKyAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRf
b3B0aW9uKCdwaXhlbF90ZXN0cycpIGFuZCB0ZXN0LmFjdHVhbF9pbWFnZToKICAgICAgICAgICAg
IHdpdGggb3BlbihzZWxmLl9pbWFnZV9wYXRoLCAndycpIGFzIGZpbGU6CiAgICAgICAgICAgICAg
ICAgZmlsZS53cml0ZSh0ZXN0LmFjdHVhbF9pbWFnZSkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCBl
ZDE5YzA5YzYyZGFjYmVlN2EzYTY5OGQ3NmFhYTNkODJjYWViYjdjLi5jOTQwZjFlN2EwNzBhNjA3
NDBlNDliZTlkYTZlZmJiYWE5Y2Q2YTkwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtNjUsOSArNjUs
NyBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAKICAgICAgICAgIyBGSVhNRTogZGlz
YWJsZSBwaXhlbCB0ZXN0cyB1bnRpbCB0aGV5IGFyZSBydW4gYnkgZGVmYXVsdCBvbiB0aGUKICAg
ICAgICAgIyBidWlsZCBtYWNoaW5lcy4KLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucyBhbmQgKG5v
dCBoYXNhdHRyKHNlbGYuX29wdGlvbnMsICJwaXhlbF90ZXN0cyIpIG9yCi0gICAgICAgICAgIHNl
bGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgaXMgTm9uZSk6Ci0gICAgICAgICAgICBzZWxmLl9vcHRp
b25zLnBpeGVsX3Rlc3RzID0gRmFsc2UKKyAgICAgICAgc2VsZi5zZXRfb3B0aW9uX2RlZmF1bHQo
J3BpeGVsX3Rlc3RzJywgRmFsc2UpCiAKICAgICBkZWYgYmFzZWxpbmVfcGF0aChzZWxmKToKICAg
ICAgICAgcmV0dXJuIHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHNlbGYuX25hbWUpCkBAIC04
Niw3ICs4NCw3IEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKICAgICBkZWYgX2J1aWxk
X2RyaXZlcihzZWxmKToKICAgICAgICAgZXhpdF9jb2RlID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKFsKICAgICAgICAgICAgIHNlbGYuc2NyaXB0X3BhdGgoImJ1aWxkLWR1bXByZW5kZXJ0
cmVlIiksCi0gICAgICAgICAgICBzZWxmLmZsYWdfZnJvbV9jb25maWd1cmF0aW9uKHNlbGYuX29w
dGlvbnMuY29uZmlndXJhdGlvbiksCisgICAgICAgICAgICBzZWxmLmZsYWdfZnJvbV9jb25maWd1
cmF0aW9uKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpKSwKICAgICAgICAgXSwgcmV0
dXJuX2V4aXRfY29kZT1UcnVlKQogICAgICAgICBpZiBleGl0X2NvZGUgIT0gMDoKICAgICAgICAg
ICAgIF9sb2cuZXJyb3IoIkZhaWxlZCB0byBidWlsZCBEdW1wUmVuZGVyVHJlZSIpCkBAIC0xMDEs
MTEgKzk5LDExIEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgcmV0dXJu
IFRydWUKIAogICAgIGRlZiBjaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKToKLSAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5idWlsZCBhbmQgbm90IHNlbGYuX2J1aWxkX2RyaXZlcigpOgorICAg
ICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ2J1aWxkJykgYW5kIG5vdCBzZWxmLl9idWlsZF9kcml2
ZXIoKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBub3Qgc2VsZi5fY2hl
Y2tfZHJpdmVyKCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5waXhlbF90ZXN0czoKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCdwaXhlbF90
ZXN0cycpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuY2hlY2tfaW1hZ2VfZGlmZigpOgogICAg
ICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBub3Qgc2VsZi5fY2hlY2tfcG9y
dF9idWlsZCgpOgpAQCAtMTg0LDcgKzE4Miw3IEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0
KToKICAgICBkZWYgcmVzdWx0c19kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgICMgUmVzdWx0cyBh
cmUgc3RvcmUgcmVsYXRpdmUgdG8gdGhlIGJ1aWx0IHByb2R1Y3RzIHRvIG1ha2UgaXQgZWFzeQog
ICAgICAgICAjIHRvIGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIHdlYmtpdCBjaGVja2VkIG91dCBh
bmQgYnVpbHQuCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuX29wdGlvbnMu
cmVzdWx0c19kaXJlY3RvcnkpCisgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYu
Z2V0X29wdGlvbigncmVzdWx0c19kaXJlY3RvcnknKSkKIAogICAgIGRlZiBzZXR1cF90ZXN0X3J1
bihzZWxmKToKICAgICAgICAgIyBUaGlzIHBvcnQgZG9lc24ndCByZXF1aXJlIGFueSBzcGVjaWZp
YyBjb25maWd1cmF0aW9uLgpAQCAtMzYwLDcgKzM1OCw3IEBAIGNsYXNzIFdlYktpdFBvcnQoYmFz
ZS5Qb3J0KToKICAgICAgICAgaWYgbm90IHNlbGYuX2NhY2hlZF9idWlsZF9yb290OgogICAgICAg
ICAgICAgc2VsZi5fY2FjaGVkX2J1aWxkX3Jvb3QgPSBzZWxmLl93ZWJraXRfYnVpbGRfZGlyZWN0
b3J5KFsKICAgICAgICAgICAgICAgICAiLS1jb25maWd1cmF0aW9uIiwKLSAgICAgICAgICAgICAg
ICBzZWxmLmZsYWdfZnJvbV9jb25maWd1cmF0aW9uKHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlv
biksCisgICAgICAgICAgICAgICAgc2VsZi5mbGFnX2Zyb21fY29uZmlndXJhdGlvbihzZWxmLmdl
dF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSksCiAgICAgICAgICAgICBdKQogICAgICAgICByZXR1
cm4gb3MucGF0aC5qb2luKHNlbGYuX2NhY2hlZF9idWlsZF9yb290LCAqY29tcHMpCiAKQEAgLTQw
MSw3ICszOTksNiBAQCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBwb3J0LCBpbWFnZV9wYXRoLCBvcHRpb25zLCBleGVjdXRpdmU9RXhlY3V0
aXZlKCkpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAogICAgICAgICBzZWxmLl9pbWFnZV9w
YXRoID0gaW1hZ2VfcGF0aAotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAg
ICBzZWxmLl9leGVjdXRpdmUgPSBleGVjdXRpdmUKICAgICAgICAgc2VsZi5fZHJpdmVyX3RlbXBk
aXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nRHVtcFJlbmRlclRyZWUtJykKIApAQCAtNDE0
LDE3ICs0MTEsMTcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAg
aWYgc2VsZi5faW1hZ2VfcGF0aDoKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgnLS1w
aXhlbC10ZXN0cycpCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgotICAgICAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy5hY2NlbGVyYXRlZF9jb21wb3NpdGluZzoKKyAgICAgICAg
aWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCd1c2VfZHJ0Jyk6CisgICAgICAgICAgICBpZiBzZWxm
Ll9wb3J0LmdldF9vcHRpb24oJ2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nJyk6CiAgICAgICAgICAg
ICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLWVuYWJsZS1hY2NlbGVyYXRlZC1jb21wb3NpdGlu
ZycpCiAKLSAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuYWNjZWxlcmF0ZWRfMmRfY2FudmFz
OgorICAgICAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdhY2NlbGVyYXRlZF8yZF9j
YW52YXMnKToKICAgICAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tZW5hYmxlLWFj
Y2VsZXJhdGVkLTJkLWNhbnZhcycpCiAKICAgICAgICAgcmV0dXJuIGRyaXZlcl9hcmdzCiAKICAg
ICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIGNvbW1hbmQgPSBzZWxmLl9jb21tYW5kX3dyYXBw
ZXIoc2VsZi5fb3B0aW9ucy53cmFwcGVyKQorICAgICAgICBjb21tYW5kID0gc2VsZi5fY29tbWFu
ZF93cmFwcGVyKHNlbGYuX3BvcnQuZ2V0X29wdGlvbignd3JhcHBlcicpKQogICAgICAgICBjb21t
YW5kICs9IFtzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigpLCAnLSddCiAgICAgICAgIGNvbW1h
bmQgKz0gc2VsZi5fZHJpdmVyX2FyZ3MoKQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0
c191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IGZjZTZl
ODJjYWVmODM1YTczMzk4MDg0YjY5MTQ4MDA4ZGIyNmFlNjguLmVmMzNhNDc0ODFmZGVmZDQ3MjI0
NmU2ZWYyMDkzZjM1OTUyNDUzOTIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0
ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Jl
YmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0zMyw2ICszMyw3
IEBAIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0
cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9y
dCBwb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcmViYXNlbGluZV9jaHJv
bWl1bV93ZWJraXRfdGVzdHMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUg
aW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKQEAgLTQ2LDEyICs0Nyw2IEBAIGNsYXNzIE1v
Y2tQb3J0KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLmltYWdlX2RpZmZfZXhpc3RzCiAK
IAotY2xhc3MgTW9ja09wdGlvbnMob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29u
ZmlndXJhdGlvbj1Ob25lLCBodG1sX2RpcmVjdG9yeT1Ob25lKToKLSAgICAgICAgc2VsZi5jb25m
aWd1cmF0aW9uID0gY29uZmlndXJhdGlvbgotICAgICAgICBzZWxmLmh0bWxfZGlyZWN0b3J5ID0g
aHRtbF9kaXJlY3RvcnkKLQotCiBkZWYgZ2V0X21vY2tfZ2V0KGNvbmZpZ19leHBlY3RhdGlvbnMp
OgogICAgIGRlZiBtb2NrX2dldChwb3J0X25hbWUsIG9wdGlvbnMpOgogICAgICAgICByZXR1cm4g
TW9ja1BvcnQoY29uZmlnX2V4cGVjdGF0aW9uc1tvcHRpb25zLmNvbmZpZ3VyYXRpb25dKQpAQCAt
NjQsNyArNTksOCBAQCBjbGFzcyBUZXN0R2V0SG9zdFBvcnRPYmplY3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICAjIHRoYXQgSW1hZ2UgZGlmZiBpcyAob3IgaXNuJ3QpIHByZXNlbnQgaW4g
dGhlIHR3byBjb25maWdzLgogICAgICAgICBwb3J0LmdldCA9IGdldF9tb2NrX2dldCh7J1JlbGVh
c2UnOiByZWxlYXNlX3ByZXNlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
RGVidWcnOiBkZWJ1Z19wcmVzZW50fSkKLSAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKCkK
KyAgICAgICAgb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249Tm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxfZGlyZWN0b3J5
PU5vbmUpCiAgICAgICAgIHBvcnRfb2JqID0gcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVz
dHMuZ2V0X2hvc3RfcG9ydF9vYmplY3QoCiAgICAgICAgICAgICBvcHRpb25zKQogICAgICAgICBp
ZiB2YWxpZF9wb3J0X29iajoKQEAgLTkwLDcgKzg2LDggQEAgY2xhc3MgVGVzdEdldEhvc3RQb3J0
T2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogY2xhc3MgVGVzdFJlYmFzZWxpbmVyKHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgbWFrZV9yZWJhc2VsaW5lcihzZWxmKToKLSAgICAgICAg
b3B0aW9ucyA9IE1vY2tPcHRpb25zKCkKKyAgICAgICAgb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tP
cHRpb25zKGNvbmZpZ3VyYXRpb249Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGh0bWxfZGlyZWN0b3J5PU5vbmUpCiAgICAgICAgIGhvc3RfcG9ydF9vYmogPSBw
b3J0LmdldCgndGVzdCcsIG9wdGlvbnMpCiAgICAgICAgIHRhcmdldF9vcHRpb25zID0gb3B0aW9u
cwogICAgICAgICB0YXJnZXRfcG9ydF9vYmogPSBwb3J0LmdldCgndGVzdCcsIHRhcmdldF9vcHRp
b25zKQpAQCAtMTI2LDcgKzEyMyw4IEBAIGNsYXNzIFRlc3RIdG1sR2VuZXJhdG9yKHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICBkZWYgbWFrZV9nZW5lcmF0b3Ioc2VsZiwgdGVzdHMpOgogICAgICAg
ICByZXR1cm4gcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMuSHRtbEdlbmVyYXRvcigK
ICAgICAgICAgICAgIHRhcmdldF9wb3J0PU5vbmUsCi0gICAgICAgICAgICBvcHRpb25zPU1vY2tP
cHRpb25zKGh0bWxfZGlyZWN0b3J5PSIvdG1wIiksCisgICAgICAgICAgICBvcHRpb25zPW1vY2t0
b29sLk1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaHRtbF9kaXJlY3Rvcnk9Jy90bXAnKSwKICAgICAgICAgICAg
IHBsYXRmb3Jtcz1bJ21hYyddLAogICAgICAgICAgICAgcmViYXNlbGluaW5nX3Rlc3RzPXRlc3Rz
LAogICAgICAgICAgICAgZXhlY3V0aXZlPUV4ZWN1dGl2ZSgpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sX3VuaXR0ZXN0LnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sX3VuaXR0ZXN0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNjZWFhMmUwYWEwOGJhNmUxZjJhYjdhZDEzZDEwNzljNGVlMjcyYzIKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2xfdW5pdHRl
c3QucHkKQEAgLTAsMCArMSw1OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMg
bWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdAor
Citmcm9tIG1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucworCisKK2NsYXNzIE1vY2tPcHRpb25z
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBNb2NrT3B0aW9ucygpIHNob3VsZCBpbXBs
ZW1lbnQgdGhlIHNhbWUgc2VtYW50aWNzIHRoYXQKKyAgICAjIG9wdHBhcnNlLlZhbHVlcyBkb2Vz
LgorCisgICAgZGVmIHRlc3RfZ2V0X19zZXQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdl
IGNhbiBzdGlsbCBzZXQgb3B0aW9ucyBhZnRlciB3ZSBjb25zdHJ1Y3QgdGhlCisgICAgICAgICMg
b2JqZWN0LgorICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoKQorICAgICAgICBvcHRpb25z
LmZvbyA9ICdiYXInCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5mb28sICdiYXIn
KQorCisgICAgZGVmIHRlc3RfZ2V0X191bnNldChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQg
dW5zZXQgb3B0aW9ucyByYWlzZSBhbiBleGNlcHRpb24gKHJlZ3VsYXIgTW9jaworICAgICAgICAj
IG9iamVjdHMgcmV0dXJuIGFuIG9iamVjdCBhbmQgaGVuY2UgYXJlIGRpZmZlcmVudCBmcm9tCisg
ICAgICAgICMgb3B0cGFyc2UuVmFsdWVzKCkpLgorICAgICAgICBvcHRpb25zID0gTW9ja09wdGlv
bnMoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBv
cHRpb25zLmZvbykKKworICAgIGRlZiB0ZXN0X2t3YXJnX19zZXQoc2VsZik6CisgICAgICAgICMg
VGVzdCB0aGF0IGtleXdvcmQgYXJndW1lbnRzIHdvcmsgaW4gdGhlIGNvbnN0cnVjdG9yLgorICAg
ICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoZm9vPSdiYXInKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG9wdGlvbnMuZm9vLCAnYmFyJykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgorICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>