<?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>33336</bug_id>
          
          <creation_ts>2010-01-07 12:16:38 -0800</creation_ts>
          <short_desc>webkit-patch rollout should be able to do multi-revision rollouts</short_desc>
          <delta_ts>2010-12-13 12:41:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>ossy</cc>
    
    <cc>rgabor</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>178304</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-07 12:16:38 -0800</bug_when>
    <thetext>webkit-patch rollout should be able to do multi-revision rollouts

It should be able to accept more than one revision number on the command line. It should sort them into whatever order it needs, and then apply the series of inverse diffs, and generate the ChangeLog.

multi-revision rollouts aren&apos;t very common, but they&apos;re common enough that making the tools be able to do them would help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309706</commentid>
    <comment_count>1</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-11-16 06:28:55 -0800</bug_when>
    <thetext>Gábor, have you got a little time to investigate on this new feature?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312313</commentid>
    <comment_count>2</comment_count>
      <attachid>74544</attachid>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2010-11-22 06:14:52 -0800</bug_when>
    <thetext>Created attachment 74544
proposed patch

With this patch we can use the rollout commands with more than one revision. We have to pass multiple revisions between quotes (eg. &quot;12203 12204 12205&quot;).
It sorts the revisions and starts the rollout with the latest. For the bug information it uses the earliest revision from the list.
If it gets just one revision then it works as before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312554</commentid>
    <comment_count>3</comment_count>
      <attachid>74544</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-22 15:21:28 -0800</bug_when>
    <thetext>Comment on attachment 74544
proposed patch

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

We should have Eric look at this patch.  He&apos;s on vacation at the moment, so that might take a week.

&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:534
&gt; +    def apply_reverse_diff(self, revision_list):
&gt; +        for revision in revision_list:
&gt; +            # &apos;-c -revision&apos; applies the inverse diff of &apos;revision&apos;
&gt; +            svn_merge_args = [&apos;svn&apos;, &apos;merge&apos;, &apos;--non-interactive&apos;, &apos;-c&apos;, &apos;-%s&apos; % revision, self._repository_url()]
&gt; +            log(&quot;WARNING: svn merge has been known to take more than 10 minutes to complete.  It is recommended you use git for rollouts.&quot;)
&gt; +            log(&quot;Running &apos;%s&apos;&quot; % &quot; &quot;.join(svn_merge_args))
&gt; +            # FIXME: Should this use cwd=self.checkout_root?
&gt; +            self.run(svn_merge_args)

Have you tested this?  The tricky part here is ChangeLogs.  We might need to deal with the ChangeLog in each iteration of the loop.

&gt; WebKitTools/Scripts/webkitpy/tool/commands/download.py:291
&gt; -    argument_names = &quot;REVISION REASON&quot;
&gt; +    argument_names = &quot;REVISION(S) REASON&quot;

This isn&apos;t usually how we document multiple arguments.  Check out some of the other commands that take variable arguments for how we do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313246</commentid>
    <comment_count>4</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2010-11-24 05:20:18 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 74544 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74544&amp;action=review
&gt; 
&gt; We should have Eric look at this patch.  He&apos;s on vacation at the moment, so that might take a week.
&gt; 

Ok, than wait him :)

&gt; &gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:534
&gt; &gt; +    def apply_reverse_diff(self, revision_list):
&gt; &gt; +        for revision in revision_list:
&gt; &gt; +            # &apos;-c -revision&apos; applies the inverse diff of &apos;revision&apos;
&gt; &gt; +            svn_merge_args = [&apos;svn&apos;, &apos;merge&apos;, &apos;--non-interactive&apos;, &apos;-c&apos;, &apos;-%s&apos; % revision, self._repository_url()]
&gt; &gt; +            log(&quot;WARNING: svn merge has been known to take more than 10 minutes to complete.  It is recommended you use git for rollouts.&quot;)
&gt; &gt; +            log(&quot;Running &apos;%s&apos;&quot; % &quot; &quot;.join(svn_merge_args))
&gt; &gt; +            # FIXME: Should this use cwd=self.checkout_root?
&gt; &gt; +            self.run(svn_merge_args)
&gt; 
&gt; Have you tested this?  The tricky part here is ChangeLogs.  We might need to deal with the ChangeLog in each iteration of the loop.
&gt; 

Yes I have tested it. As I know we want one ChangeLog for the rolled-out patches and if the patches affect more ChangeLogs we want the same changes in all.

&gt; &gt; WebKitTools/Scripts/webkitpy/tool/commands/download.py:291
&gt; &gt; -    argument_names = &quot;REVISION REASON&quot;
&gt; &gt; +    argument_names = &quot;REVISION(S) REASON&quot;
&gt; 
&gt; This isn&apos;t usually how we document multiple arguments.  Check out some of the other commands that take variable arguments for how we do that.

Ok, I will correct this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315555</commentid>
    <comment_count>5</comment_count>
      <attachid>74544</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-30 23:44:41 -0800</bug_when>
    <thetext>Comment on attachment 74544
proposed patch

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

I think this needs another round and more new unit tests please.

&gt; WebKitTools/Scripts/webkitpy/common/checkout/changelog.py:155
&gt; +        message = &quot;Unreviewed, rolling out %s.\n&quot; % &apos;, &apos;.join([&apos;r&apos; + revision for revision in revision_list])

grammar.py&apos;s join_with_separators might be nicer.

&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:528
&gt; +        for revision in revision_list:

I guess I would have added a apply_reverse_diffs on SCM which did the for loop for you.  That shares more code.

&gt;&gt;&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:534
&gt;&gt;&gt; +            self.run(svn_merge_args)
&gt;&gt; 
&gt;&gt; Have you tested this?  The tricky part here is ChangeLogs.  We might need to deal with the ChangeLog in each iteration of the loop.
&gt; 
&gt; Yes I have tested it. As I know we want one ChangeLog for the rolled-out patches and if the patches affect more ChangeLogs we want the same changes in all.

The tricky part is reverting the ChangeLog parts of the diff, but there is a separt part of the code which does that iirc.

&gt; WebKitTools/Scripts/webkitpy/tool/commands/download.py:306
&gt; +        revision_list = sorted([revision for revision in args[0].split(&apos; &apos;) if revision.isdigit()], reverse=True)

Huh?  What&apos;s with the isdidit() stuff?  Can you test this please.

&gt; WebKitTools/Scripts/webkitpy/tool/commands/download.py:308
&gt; +        earliest_revision = revision_list[-1]

Why reverse sorted?  I would have reversed them in the SCM.apply_reverse_diffs function maybe?

&gt; WebKitTools/Scripts/webkitpy/tool/commands/download_unittest.py:184
&gt; +        self.assert_execute_outputs(CreateRollout(), [&quot;852&quot;, &quot;Reason&quot;], options=self._default_options(), expected_stderr=expected_stderr)

Why the quotes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315556</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-30 23:45:19 -0800</bug_when>
    <thetext>Overall I think this is a fine patch, I&apos;m just not confident it works right without more testing.  This is tricky code.  Breaking this would be bad as the sherriff bot is used for rollouts about once a day these days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319343</commentid>
    <comment_count>7</comment_count>
      <attachid>76028</attachid>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2010-12-09 02:19:35 -0800</bug_when>
    <thetext>Created attachment 76028
proposed_patch_v2

I corrected the mentioned issues and I made some unit tests for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319597</commentid>
    <comment_count>8</comment_count>
      <attachid>76028</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-09 11:01:21 -0800</bug_when>
    <thetext>Comment on attachment 76028
proposed_patch_v2

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

Have you run test-webkitpy?  Have you don a real rollout with this yet? (You can do that by having your changes in one webkit checkout and operating on a differnet one.  webkit-patch is smart enough to operate on the cwd while pulling its .py files from paths relative to it&apos;s __file__ location.

&gt; WebKitTools/Scripts/webkitpy/common/checkout/changelog.py:157
&gt; +        for revision in revision_list:

We have to be careful when passing lists as strings count as lists.  If there is any chance someone might pass a string for the revision_list it will do strange things.

&gt; WebKitTools/Scripts/webkitpy/tool/commands/download_unittest.py:65
&gt; +        state = command._prepare_state(None, [&quot;rev r122  125  123&quot;, &quot;Reason&quot;], None)

What&apos;s the &apos;rev&apos; here?

&gt; WebKitTools/Scripts/webkitpy/tool/commands/download.py:309
&gt; +        # We use the earliest revision for the bug info
&gt; +        earliest_revision = revision_list[0]
&gt; +        commit_info = self._commit_info(earliest_revision)

I&apos;m not sure we don&apos;t want to process each bug individually, but this might be ok for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319598</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-09 11:01:53 -0800</bug_when>
    <thetext>How does this affect the prepare-rollout and rollout commands?  Could you link to an example bug created with prepare-rollout after this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320107</commentid>
    <comment_count>10</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2010-12-10 05:45:35 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 76028 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76028&amp;action=review
&gt; 
&gt; Have you run test-webkitpy?  Have you don a real rollout with this yet? (You can do that by having your changes in one webkit checkout and operating on a differnet one.  webkit-patch is smart enough to operate on the cwd while pulling its .py files from paths relative to it&apos;s __file__ location.
&gt; 

Yes I tested it and all unit tests passed and also I created some rollout patches locally and it worked.

&gt; &gt; WebKitTools/Scripts/webkitpy/common/checkout/changelog.py:157
&gt; &gt; +        for revision in revision_list:
&gt; 
&gt; We have to be careful when passing lists as strings count as lists.  If there is any chance someone might pass a string for the revision_list it will do strange things.
&gt; 

The update_for_revert method will always get a revision_list from PrepareChangeLogForRevert so it can&apos;t happen.

&gt; &gt; WebKitTools/Scripts/webkitpy/tool/commands/download_unittest.py:65
&gt; &gt; +        state = command._prepare_state(None, [&quot;rev r122  125  123&quot;, &quot;Reason&quot;], None)
&gt; 
&gt; What&apos;s the &apos;rev&apos; here?

Here I just tested whether somebody tries to give wrong (not numerical) revision numbers. But the &apos;r122&apos; is maybe enough to test this and we can drop the &apos;rev&apos; string.

&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/tool/commands/download.py:309
&gt; &gt; +        # We use the earliest revision for the bug info
&gt; &gt; +        earliest_revision = revision_list[0]
&gt; &gt; +        commit_info = self._commit_info(earliest_revision)
&gt; 
&gt; I&apos;m not sure we don&apos;t want to process each bug individually, but this might be ok for now.

The base conception was that all of the patches belong to one bug. If the patches belong to more bugs then we should make more than one rollout patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320113</commentid>
    <comment_count>11</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2010-12-10 06:29:26 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; How does this affect the prepare-rollout and rollout commands?  Could you link to an example bug created with prepare-rollout after this change?

I just tried it locally. Here is an example:

Commad:
WebKitTools/Scripts/webkit-patch prepare-rollout &quot;73705 73703 73712&quot; &quot;Some reason ...&quot; --dry-run --force-clean

Output:
Preparing rollout for bug 49658.
Cleaning working directory
Updating working directory
Running prepare-ChangeLog
  Running status to find changed, added, or removed files.
  Reviewing diff to determine which lines changed.
  Extracting affected function names from source files.
  Change author: Gabor Rapcsanyi &lt;rgabor@inf.u-szeged.hu&gt;.
  Editing the JavaScriptCore/ChangeLog file.
  Editing the WebCore/ChangeLog file.
  Editing the WebKitTools/ChangeLog file.
-- Please remember to include a detailed description in your ChangeLog entry. --
-- See &lt;http://webkit.org/coding/contributing.html&gt; for more info --


Created rollout patch:
https://gist.github.com/736251</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320326</commentid>
    <comment_count>12</comment_count>
      <attachid>76028</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-10 12:27:54 -0800</bug_when>
    <thetext>Comment on attachment 76028
proposed_patch_v2

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

&gt;&gt;&gt; WebKitTools/Scripts/webkitpy/tool/commands/download_unittest.py:65
&gt;&gt;&gt; +        state = command._prepare_state(None, [&quot;rev r122  125  123&quot;, &quot;Reason&quot;], None)
&gt;&gt; 
&gt;&gt; What&apos;s the &apos;rev&apos; here?
&gt; 
&gt; Here I just tested whether somebody tries to give wrong (not numerical) revision numbers. But the &apos;r122&apos; is maybe enough to test this and we can drop the &apos;rev&apos; string.

Who is responsible for erroring out when &apos;rev&apos; is passed?  It seems that if we&apos;re *silently* ignoring bad args like &apos;r122&apos; that will make it easy to make mistakes.

Seems we should error out in that case, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320358</commentid>
    <comment_count>13</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2010-12-10 13:23:29 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 76028 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76028&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; WebKitTools/Scripts/webkitpy/tool/commands/download_unittest.py:65
&gt; &gt;&gt;&gt; +        state = command._prepare_state(None, [&quot;rev r122  125  123&quot;, &quot;Reason&quot;], None)
&gt; &gt;&gt; 
&gt; &gt;&gt; What&apos;s the &apos;rev&apos; here?
&gt; &gt; 
&gt; &gt; Here I just tested whether somebody tries to give wrong (not numerical) revision numbers. But the &apos;r122&apos; is maybe enough to test this and we can drop the &apos;rev&apos; string.
&gt; 
&gt; Who is responsible for erroring out when &apos;rev&apos; is passed?  It seems that if we&apos;re *silently* ignoring bad args like &apos;r122&apos; that will make it easy to make mistakes.
&gt; 
&gt; Seems we should error out in that case, no?

Yes maybe we should so I will correct this and change the unit test expectation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321286</commentid>
    <comment_count>14</comment_count>
      <attachid>76415</attachid>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2010-12-13 11:35:06 -0800</bug_when>
    <thetext>Created attachment 76415
proposed_patch_v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321292</commentid>
    <comment_count>15</comment_count>
      <attachid>76415</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-13 11:40:29 -0800</bug_when>
    <thetext>Comment on attachment 76415
proposed_patch_v3

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321340</commentid>
    <comment_count>16</comment_count>
      <attachid>76415</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-13 12:41:19 -0800</bug_when>
    <thetext>Comment on attachment 76415
proposed_patch_v3

Clearing flags on attachment: 76415

Committed r73951: &lt;http://trac.webkit.org/changeset/73951&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321341</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-13 12:41:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74544</attachid>
            <date>2010-11-22 06:14:52 -0800</date>
            <delta_ts>2010-12-09 02:19:35 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>webkit_patch01.patch</filename>
            <type>text/plain</type>
            <size>13959</size>
            <attacher name="Gabor Rapcsanyi">rgabor</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDcyNTE4KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMjIgIEdhYm9yIFJhcGNzYW55aSAg
PHJnYWJvckBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgd2Via2l0LXBhdGNoIHJvbGxvdXQgc2hvdWxkIGJlIGFibGUgdG8g
ZG8gbXVsdGktcmV2aXNpb24gcm9sbG91dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMzMzM2CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBw
YXNzIG1vcmUgdGhhbiBvbmUgcmV2aXNpb24gdG8gd2Via2l0LXBhdGNoLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZ2Zv
cnJldmVydC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcmV2ZXJ0
cmV2aXNpb24ucHk6CisKIDIwMTAtMTEtMjIgIEpvw6NvIFBhdWxvIFJlY2hpIFZpdGEgIDxqcHJ2
aXRhQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuLgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvY2hhbmdlbG9nLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQkocmV2aXNpb24gNzI1MTcpCisr
KyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw5ICsxNTEsMTAgQEAgY2xhc3MgQ2hhbmdlTG9nKG9i
amVjdCk6CiAgICAgICAgIHJldHVybiAiXG4iLmpvaW4obGluZXMpCiAKICAgICAjIFRoaXMgcHJv
YmFibHkgZG9lcyBub3QgYmVsb25nIGluIGNoYW5nZWxvZ3MucHkKLSAgICBkZWYgX21lc3NhZ2Vf
Zm9yX3JldmVydChzZWxmLCByZXZpc2lvbiwgcmVhc29uLCBidWdfdXJsKToKLSAgICAgICAgbWVz
c2FnZSA9ICJVbnJldmlld2VkLCByb2xsaW5nIG91dCByJXMuXG4iICUgcmV2aXNpb24KLSAgICAg
ICAgbWVzc2FnZSArPSAiJXNcbiIgJSB2aWV3X3NvdXJjZV91cmwocmV2aXNpb24pCisgICAgZGVm
IF9tZXNzYWdlX2Zvcl9yZXZlcnQoc2VsZiwgcmV2aXNpb25fbGlzdCwgcmVhc29uLCBidWdfdXJs
KToKKyAgICAgICAgbWVzc2FnZSA9ICJVbnJldmlld2VkLCByb2xsaW5nIG91dCAlcy5cbiIgJSAn
LCAnLmpvaW4oWydyJyArIHJldmlzaW9uIGZvciByZXZpc2lvbiBpbiByZXZpc2lvbl9saXN0XSkK
KyAgICAgICAgZm9yIHJldmlzaW9uIGluIHJldmlzaW9uX2xpc3Q6CisgICAgICAgICAgICBtZXNz
YWdlICs9ICIlc1xuIiAlIHZpZXdfc291cmNlX3VybChyZXZpc2lvbikKICAgICAgICAgaWYgYnVn
X3VybDoKICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiVzXG4iICUgYnVnX3VybAogICAgICAgICAj
IEFkZCBhbiBleHRyYSBuZXcgbGluZSBhZnRlciB0aGUgcm9sbG91dCBsaW5rcywgYmVmb3JlIGFu
eSByZWFzb24uCkBAIC0xNjIsMTQgKzE2MywxNCBAQCBjbGFzcyBDaGFuZ2VMb2cob2JqZWN0KToK
ICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiVzXG5cbiIgJSByZWFzb24KICAgICAgICAgcmV0dXJu
IHNlbGYuX3dyYXBfbGluZXMobWVzc2FnZSkKIAotICAgIGRlZiB1cGRhdGVfZm9yX3JldmVydChz
ZWxmLCByZXZpc2lvbiwgcmVhc29uLCBidWdfdXJsPU5vbmUpOgorICAgIGRlZiB1cGRhdGVfZm9y
X3JldmVydChzZWxmLCByZXZpc2lvbl9saXN0LCByZWFzb24sIGJ1Z191cmw9Tm9uZSk6CiAgICAg
ICAgIHJldmlld2VkX2J5X3JlZ2V4cCA9IHJlLmNvbXBpbGUoCiAgICAgICAgICAgICAgICAgIiVz
UmV2aWV3ZWQgYnkgTk9CT0RZIFwoT09QUyFcKVwuIiAlIHNlbGYuX2NoYW5nZWxvZ19pbmRlbnQp
CiAgICAgICAgIHJlbW92aW5nX2JvaWxlcnBsYXRlID0gRmFsc2UKICAgICAgICAgIyBpbnBsYWNl
PTEgY3JlYXRlcyBhIGJhY2t1cCBmaWxlIGFuZCByZS1kaXJlY3RzIHN0ZG91dCB0byB0aGUgZmls
ZQogICAgICAgICBmb3IgbGluZSBpbiBmaWxlaW5wdXQuRmlsZUlucHV0KHNlbGYucGF0aCwgaW5w
bGFjZT0xKToKICAgICAgICAgICAgIGlmIHJldmlld2VkX2J5X3JlZ2V4cC5zZWFyY2gobGluZSk6
Ci0gICAgICAgICAgICAgICAgbWVzc2FnZV9saW5lcyA9IHNlbGYuX21lc3NhZ2VfZm9yX3JldmVy
dChyZXZpc2lvbiwKKyAgICAgICAgICAgICAgICBtZXNzYWdlX2xpbmVzID0gc2VsZi5fbWVzc2Fn
ZV9mb3JfcmV2ZXJ0KHJldmlzaW9uX2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWdfdXJsKQogICAgICAgICAg
ICAgICAgIHByaW50IHJldmlld2VkX2J5X3JlZ2V4cC5zdWIobWVzc2FnZV9saW5lcywgbGluZSks
CkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFu
Z2Vsb2dfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA3MjUx
NykKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5n
ZWxvZ191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIGNsYXNz
IENoYW5nZUxvZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X21lc3NhZ2Vf
Zm9yX3JldmVydChzZWxmKToKICAgICAgICAgY2hhbmdlbG9nID0gQ2hhbmdlTG9nKCIvZmFrZS9w
YXRoIikKICAgICAgICAgbG9uZ19yZWFzb24gPSAiVGhpcyBpcyBhIHZlcnkgbG9uZyByZWFzb24g
d2hpY2ggc2hvdWxkIGJlIGxvbmcgZW5vdWdoIHNvIHRoYXQgX21lc3NhZ2VfZm9yX3JldmVydCB3
aWxsIG5lZWQgdG8gd3JhcCBpdC4gIFdlJ2xsIGFsc28gaW5jbHVkZSBhIGh0dHBzOi8vdmVyeXZl
cnl2ZXJ5dmVyeXZlcnlsb25nYnVndXJsLmNvbS9yZWFsbHlsb25nYnVndGhpbmd5LmNnaT9idWdf
aWQ9MTIzNTQgbGluayBzbyB0aGF0IHdlIGNhbiBtYWtlIHN1cmUgd2Ugd3JhcCB0aGF0IHJpZ2h0
IHRvby4iCi0gICAgICAgIG1lc3NhZ2UgPSBjaGFuZ2Vsb2cuX21lc3NhZ2VfZm9yX3JldmVydCgx
MjM0NSwgbG9uZ19yZWFzb24sICJodHRwOi8vZXhhbXBsZS5jb20vMTIzIikKKyAgICAgICAgbWVz
c2FnZSA9IGNoYW5nZWxvZy5fbWVzc2FnZV9mb3JfcmV2ZXJ0KFsnMTIzNDUnXSwgbG9uZ19yZWFz
b24sICJodHRwOi8vZXhhbXBsZS5jb20vMTIzIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
bWVzc2FnZSwgc2VsZi5fcmV2ZXJ0X21lc3NhZ2UpCiAKICAgICBfcmV2ZXJ0X2VudHJ5X3dpdGhf
YnVnX3VybCA9ICcnJzIwMDktMDgtMTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgpA
QCAtMTk1LDggKzE5NSw4IEBAIGNsYXNzIENoYW5nZUxvZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhY3R1YWxfZW50cnkuYXV0aG9yX2VtYWlsKCks
ICJlcmljQHdlYmtpdC5vcmciKQogCiAgICAgZGVmIHRlc3RfdXBkYXRlX2Zvcl9yZXZlcnQoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuX2Fzc2VydF91cGRhdGVfZm9yX3JldmVydF9vdXRwdXQoWzEyMzQ1
LCAiUmVhc29uIl0sIHNlbGYuX3JldmVydF9lbnRyeV93aXRob3V0X2J1Z191cmwpCi0gICAgICAg
IHNlbGYuX2Fzc2VydF91cGRhdGVfZm9yX3JldmVydF9vdXRwdXQoWzEyMzQ1LCAiUmVhc29uIiwg
Imh0dHA6Ly9leGFtcGxlLmNvbS8xMjMiXSwgc2VsZi5fcmV2ZXJ0X2VudHJ5X3dpdGhfYnVnX3Vy
bCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3VwZGF0ZV9mb3JfcmV2ZXJ0X291dHB1dChbWycxMjM0
NSddLCAiUmVhc29uIl0sIHNlbGYuX3JldmVydF9lbnRyeV93aXRob3V0X2J1Z191cmwpCisgICAg
ICAgIHNlbGYuX2Fzc2VydF91cGRhdGVfZm9yX3JldmVydF9vdXRwdXQoW1snMTIzNDUnXSwgIlJl
YXNvbiIsICJodHRwOi8vZXhhbXBsZS5jb20vMTIzIl0sIHNlbGYuX3JldmVydF9lbnRyeV93aXRo
X2J1Z191cmwpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKSW5kZXg6IFdlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkJKHJl
dmlzaW9uIDcyNTE3KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvc2NtLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01MjQsMTMgKzUyNCwxNCBAQCBjbGFzcyBT
Vk4oU0NNKToKICAgICBkZWYgX3JlcG9zaXRvcnlfdXJsKHNlbGYpOgogICAgICAgICByZXR1cm4g
c2VsZi52YWx1ZV9mcm9tX3N2bl9pbmZvKHNlbGYuY2hlY2tvdXRfcm9vdCwgJ1VSTCcpCiAKLSAg
ICBkZWYgYXBwbHlfcmV2ZXJzZV9kaWZmKHNlbGYsIHJldmlzaW9uKToKLSAgICAgICAgIyAnLWMg
LXJldmlzaW9uJyBhcHBsaWVzIHRoZSBpbnZlcnNlIGRpZmYgb2YgJ3JldmlzaW9uJwotICAgICAg
ICBzdm5fbWVyZ2VfYXJncyA9IFsnc3ZuJywgJ21lcmdlJywgJy0tbm9uLWludGVyYWN0aXZlJywg
Jy1jJywgJy0lcycgJSByZXZpc2lvbiwgc2VsZi5fcmVwb3NpdG9yeV91cmwoKV0KLSAgICAgICAg
bG9nKCJXQVJOSU5HOiBzdm4gbWVyZ2UgaGFzIGJlZW4ga25vd24gdG8gdGFrZSBtb3JlIHRoYW4g
MTAgbWludXRlcyB0byBjb21wbGV0ZS4gIEl0IGlzIHJlY29tbWVuZGVkIHlvdSB1c2UgZ2l0IGZv
ciByb2xsb3V0cy4iKQotICAgICAgICBsb2coIlJ1bm5pbmcgJyVzJyIgJSAiICIuam9pbihzdm5f
bWVyZ2VfYXJncykpCi0gICAgICAgICMgRklYTUU6IFNob3VsZCB0aGlzIHVzZSBjd2Q9c2VsZi5j
aGVja291dF9yb290PwotICAgICAgICBzZWxmLnJ1bihzdm5fbWVyZ2VfYXJncykKKyAgICBkZWYg
YXBwbHlfcmV2ZXJzZV9kaWZmKHNlbGYsIHJldmlzaW9uX2xpc3QpOgorICAgICAgICBmb3IgcmV2
aXNpb24gaW4gcmV2aXNpb25fbGlzdDoKKyAgICAgICAgICAgICMgJy1jIC1yZXZpc2lvbicgYXBw
bGllcyB0aGUgaW52ZXJzZSBkaWZmIG9mICdyZXZpc2lvbicKKyAgICAgICAgICAgIHN2bl9tZXJn
ZV9hcmdzID0gWydzdm4nLCAnbWVyZ2UnLCAnLS1ub24taW50ZXJhY3RpdmUnLCAnLWMnLCAnLSVz
JyAlIHJldmlzaW9uLCBzZWxmLl9yZXBvc2l0b3J5X3VybCgpXQorICAgICAgICAgICAgbG9nKCJX
QVJOSU5HOiBzdm4gbWVyZ2UgaGFzIGJlZW4ga25vd24gdG8gdGFrZSBtb3JlIHRoYW4gMTAgbWlu
dXRlcyB0byBjb21wbGV0ZS4gIEl0IGlzIHJlY29tbWVuZGVkIHlvdSB1c2UgZ2l0IGZvciByb2xs
b3V0cy4iKQorICAgICAgICAgICAgbG9nKCJSdW5uaW5nICclcyciICUgIiAiLmpvaW4oc3ZuX21l
cmdlX2FyZ3MpKQorICAgICAgICAgICAgIyBGSVhNRTogU2hvdWxkIHRoaXMgdXNlIGN3ZD1zZWxm
LmNoZWNrb3V0X3Jvb3Q/CisgICAgICAgICAgICBzZWxmLnJ1bihzdm5fbWVyZ2VfYXJncykKIAog
ICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6CiAgICAgICAgICMgRklYTUU6
IFRoaXMgc2hvdWxkIHByb2JhYmx5IHVzZSBjd2Q9c2VsZi5jaGVja291dF9yb290LgpAQCAtNzQ2
LDExICs3NDcsMTIgQEAgY2xhc3MgR2l0KFNDTSk6CiAgICAgICAgICMgR2l0IGFkZHMgYW4gZXh0
cmEgQHJlcG9zaXRvcnlfaGFzaCB0byB0aGUgZW5kIG9mIGV2ZXJ5IGNvbW1pdHRlciBlbWFpbCwg
cmVtb3ZlIGl0OgogICAgICAgICByZXR1cm4gY29tbWl0dGVyX2VtYWlsLnJzcGxpdCgiQCIsIDEp
WzBdCiAKLSAgICBkZWYgYXBwbHlfcmV2ZXJzZV9kaWZmKHNlbGYsIHJldmlzaW9uKToKLSAgICAg
ICAgIyBBc3N1bWUgdGhlIHJldmlzaW9uIGlzIGFuIHN2biByZXZpc2lvbi4KLSAgICAgICAgZ2l0
X2NvbW1pdCA9IHNlbGYuZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihyZXZpc2lvbikKLSAg
ICAgICAgIyBJIHRoaW5rIHRoaXMgd2lsbCBhbHdheXMgZmFpbCBkdWUgdG8gQ2hhbmdlTG9ncy4K
LSAgICAgICAgc2VsZi5ydW4oWydnaXQnLCAncmV2ZXJ0JywgJy0tbm8tY29tbWl0JywgZ2l0X2Nv
bW1pdF0sIGVycm9yX2hhbmRsZXI9RXhlY3V0aXZlLmlnbm9yZV9lcnJvcikKKyAgICBkZWYgYXBw
bHlfcmV2ZXJzZV9kaWZmKHNlbGYsIHJldmlzaW9uX2xpc3QpOgorICAgICAgICBmb3IgcmV2aXNp
b24gaW4gcmV2aXNpb25fbGlzdDoKKyAgICAgICAgICAgICMgQXNzdW1lIHRoZSByZXZpc2lvbiBp
cyBhbiBzdm4gcmV2aXNpb24uCisgICAgICAgICAgICBnaXRfY29tbWl0ID0gc2VsZi5naXRfY29t
bWl0X2Zyb21fc3ZuX3JldmlzaW9uKHJldmlzaW9uKQorICAgICAgICAgICAgIyBJIHRoaW5rIHRo
aXMgd2lsbCBhbHdheXMgZmFpbCBkdWUgdG8gQ2hhbmdlTG9ncy4KKyAgICAgICAgICAgIHNlbGYu
cnVuKFsnZ2l0JywgJ3JldmVydCcsICctLW5vLWNvbW1pdCcsIGdpdF9jb21taXRdLCBlcnJvcl9o
YW5kbGVyPUV4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpCiAKICAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNl
bGYsIGZpbGVfcGF0aHMpOgogICAgICAgICBzZWxmLnJ1bihbJ2dpdCcsICdjaGVja291dCcsICdI
RUFEJ10gKyBmaWxlX3BhdGhzKQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZC5weQkocmV2aXNpb24gNzI1MTcpCisr
KyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTI4OCw3ICsyODgsNyBAQCBjbGFzcyBMYW5kRnJvbUJ1ZyhBYnN0
cmFjdFBhdGNoTGFuZGluZ0NvCiAKIAogY2xhc3MgQWJzdHJhY3RSb2xsb3V0UHJlcENvbW1hbmQo
QWJzdHJhY3RTZXF1ZW5jZWRDb21tYW5kKToKLSAgICBhcmd1bWVudF9uYW1lcyA9ICJSRVZJU0lP
TiBSRUFTT04iCisgICAgYXJndW1lbnRfbmFtZXMgPSAiUkVWSVNJT04oUykgUkVBU09OIgogCiAg
ICAgZGVmIF9jb21taXRfaW5mbyhzZWxmLCByZXZpc2lvbik6CiAgICAgICAgIGNvbW1pdF9pbmZv
ID0gc2VsZi5fdG9vbC5jaGVja291dCgpLmNvbW1pdF9pbmZvX2Zvcl9yZXZpc2lvbihyZXZpc2lv
bikKQEAgLTMwMywxMyArMzAzLDE2IEBAIGNsYXNzIEFic3RyYWN0Um9sbG91dFByZXBDb21tYW5k
KEFic3RyYWMKICAgICAgICAgcmV0dXJuIGNvbW1pdF9pbmZvCiAKICAgICBkZWYgX3ByZXBhcmVf
c3RhdGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIHJldmlzaW9uID0gYXJn
c1swXQotICAgICAgICBjb21taXRfaW5mbyA9IHNlbGYuX2NvbW1pdF9pbmZvKHJldmlzaW9uKQor
ICAgICAgICByZXZpc2lvbl9saXN0ID0gc29ydGVkKFtyZXZpc2lvbiBmb3IgcmV2aXNpb24gaW4g
YXJnc1swXS5zcGxpdCgnICcpIGlmIHJldmlzaW9uLmlzZGlnaXQoKV0sIHJldmVyc2U9VHJ1ZSkK
KyAgICAgICAgIyBXZSB1c2UgdGhlIGVhcmxpZXN0IHJldmlzaW9uIGZvciB0aGUgYnVnIGluZm8K
KyAgICAgICAgZWFybGllc3RfcmV2aXNpb24gPSByZXZpc2lvbl9saXN0Wy0xXQorICAgICAgICBj
b21taXRfaW5mbyA9IHNlbGYuX2NvbW1pdF9pbmZvKGVhcmxpZXN0X3JldmlzaW9uKQogICAgICAg
ICBjY19saXN0ID0gc29ydGVkKFtwYXJ0eS5idWd6aWxsYV9lbWFpbCgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciBwYXJ0eSBpbiBjb21taXRfaW5mby5yZXNwb25zaWJsZV9wYXJ0aWVz
KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFydHkuYnVnemlsbGFfZW1haWwoKV0p
CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAicmV2aXNpb24iOiByZXZpc2lvbiwKKyAg
ICAgICAgICAgICJyZXZpc2lvbiI6IGVhcmxpZXN0X3JldmlzaW9uLAorICAgICAgICAgICAgInJl
dmlzaW9uX2xpc3QiOiByZXZpc2lvbl9saXN0LAogICAgICAgICAgICAgImJ1Z19pZCI6IGNvbW1p
dF9pbmZvLmJ1Z19pZCgpLAogICAgICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHVzZWQgdGhl
IGxpc3QgYXMgdGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbi4KICAgICAgICAgICAgICJidWdf
Y2MiOiAiLCIuam9pbihjY19saXN0KSwKQEAgLTMxOSw5ICszMjIsOSBAQCBjbGFzcyBBYnN0cmFj
dFJvbGxvdXRQcmVwQ29tbWFuZChBYnN0cmFjCiAKIGNsYXNzIFByZXBhcmVSb2xsb3V0KEFic3Ry
YWN0Um9sbG91dFByZXBDb21tYW5kKToKICAgICBuYW1lID0gInByZXBhcmUtcm9sbG91dCIKLSAg
ICBoZWxwX3RleHQgPSAiUmV2ZXJ0IHRoZSBnaXZlbiByZXZpc2lvbiBpbiB0aGUgd29ya2luZyBj
b3B5IGFuZCBwcmVwYXJlIENoYW5nZUxvZ3Mgd2l0aCByZXZlcnQgcmVhc29uIgorICAgIGhlbHBf
dGV4dCA9ICJSZXZlcnQgdGhlIGdpdmVuIHJldmlzaW9uKHMpIGluIHRoZSB3b3JraW5nIGNvcHkg
YW5kIHByZXBhcmUgQ2hhbmdlTG9ncyB3aXRoIHJldmVydCByZWFzb24iCiAgICAgbG9uZ19oZWxw
ID0gIiIiVXBkYXRlcyB0aGUgd29ya2luZyBjb3B5LgotQXBwbGllcyB0aGUgaW52ZXJzZSBkaWZm
IGZvciB0aGUgcHJvdmlkZWQgcmV2aXNpb24uCitBcHBsaWVzIHRoZSBpbnZlcnNlIGRpZmYgZm9y
IHRoZSBwcm92aWRlZCByZXZpc2lvbihzKS4KIENyZWF0ZXMgYW4gYXBwcm9wcmlhdGUgcm9sbG91
dCBDaGFuZ2VMb2csIGluY2x1ZGluZyBhIHRyYWMgbGluayBhbmQgYnVnIGxpbmsuCiAiIiIKICAg
ICBzdGVwcyA9IFsKQEAgLTMzNCw3ICszMzcsNyBAQCBDcmVhdGVzIGFuIGFwcHJvcHJpYXRlIHJv
bGxvdXQgQ2hhbmdlTG9nCiAKIGNsYXNzIENyZWF0ZVJvbGxvdXQoQWJzdHJhY3RSb2xsb3V0UHJl
cENvbW1hbmQpOgogICAgIG5hbWUgPSAiY3JlYXRlLXJvbGxvdXQiCi0gICAgaGVscF90ZXh0ID0g
IkNyZWF0ZXMgYSBidWcgdG8gdHJhY2sgYSBicm9rZW4gU1ZOIHJldmlzaW9uIGFuZCB1cGxvYWRz
IGEgcm9sbG91dCBwYXRjaC4iCisgICAgaGVscF90ZXh0ID0gIkNyZWF0ZXMgYSBidWcgdG8gdHJh
Y2sgdGhlIGJyb2tlbiBTVk4gcmV2aXNpb24ocykgYW5kIHVwbG9hZHMgYSByb2xsb3V0IHBhdGNo
LiIKICAgICBzdGVwcyA9IFsKICAgICAgICAgc3RlcHMuQ2xlYW5Xb3JraW5nRGlyZWN0b3J5LAog
ICAgICAgICBzdGVwcy5VcGRhdGUsCkBAIC0zNzQsNyArMzc3LDcgQEAgc28gdGhhdCB3ZSBjYW4g
dHJhY2sgaG93IG9mdGVuIHRoZXNlIGZsYQogY2xhc3MgUm9sbG91dChBYnN0cmFjdFJvbGxvdXRQ
cmVwQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJyb2xsb3V0IgogICAgIHNob3dfaW5fbWFpbl9oZWxw
ID0gVHJ1ZQotICAgIGhlbHBfdGV4dCA9ICJSZXZlcnQgdGhlIGdpdmVuIHJldmlzaW9uIGluIHRo
ZSB3b3JraW5nIGNvcHkgYW5kIG9wdGlvbmFsbHkgY29tbWl0IHRoZSByZXZlcnQgYW5kIHJlLW9w
ZW4gdGhlIG9yaWdpbmFsIGJ1ZyIKKyAgICBoZWxwX3RleHQgPSAiUmV2ZXJ0IHRoZSBnaXZlbiBy
ZXZpc2lvbihzKSBpbiB0aGUgd29ya2luZyBjb3B5IGFuZCBvcHRpb25hbGx5IGNvbW1pdCB0aGUg
cmV2ZXJ0IGFuZCByZS1vcGVuIHRoZSBvcmlnaW5hbCBidWciCiAgICAgbG9uZ19oZWxwID0gIiIi
VXBkYXRlcyB0aGUgd29ya2luZyBjb3B5LgogQXBwbGllcyB0aGUgaW52ZXJzZSBkaWZmIGZvciB0
aGUgcHJvdmlkZWQgcmV2aXNpb24uCiBDcmVhdGVzIGFuIGFwcHJvcHJpYXRlIHJvbGxvdXQgQ2hh
bmdlTG9nLCBpbmNsdWRpbmcgYSB0cmFjIGxpbmsgYW5kIGJ1ZyBsaW5rLgpJbmRleDogV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9kb3dubG9hZF91bml0dGVzdC5weQkocmV2aXNpb24gNzI1MTcpCisrKyBXZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWRfdW5pdHRlc3QucHkJKHdvcmtp
bmcgY29weSkKQEAgLTE2MCw3ICsxNjAsNyBAQCBOb3QgY2xvc2luZyBidWcgNDIgYXMgYXR0YWNo
bWVudCAxOTcgaGFzCiAKICAgICBkZWYgdGVzdF9wcmVwYXJlX3JvbGxvdXQoc2VsZik6CiAgICAg
ICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJQcmVwYXJpbmcgcm9sbG91dCBmb3IgYnVnIDQyLlxuVXBk
YXRpbmcgd29ya2luZyBkaXJlY3RvcnlcblJ1bm5pbmcgcHJlcGFyZS1DaGFuZ2VMb2dcbiIKLSAg
ICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKFByZXBhcmVSb2xsb3V0KCksIFs4NTIs
ICJSZWFzb24iXSwgb3B0aW9ucz1zZWxmLl9kZWZhdWx0X29wdGlvbnMoKSwgZXhwZWN0ZWRfc3Rk
ZXJyPWV4cGVjdGVkX3N0ZGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRz
KFByZXBhcmVSb2xsb3V0KCksIFsiODUyIiwgIlJlYXNvbiJdLCBvcHRpb25zPXNlbGYuX2RlZmF1
bHRfb3B0aW9ucygpLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQogCiAgICAgZGVm
IHRlc3RfY3JlYXRlX3JvbGxvdXQoc2VsZik6CiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIi
IlByZXBhcmluZyByb2xsb3V0IGZvciBidWcgNDIuCkBAIC0xODEsMTAgKzE4MSwxMCBAQCBJZiB5
b3Ugd291bGQgbGlrZSB0byBsYW5kIHRoZSByb2xsb3V0IGZhCiB3aGVyZSBBVFRBQ0hNRU5UX0lE
IGlzIHRoZSBJRCBvZiB0aGlzIGF0dGFjaG1lbnQuCiAtLSBFbmQgY29tbWVudCAtLQogIiIiCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhDcmVhdGVSb2xsb3V0KCksIFs4NTIs
ICJSZWFzb24iXSwgb3B0aW9ucz1zZWxmLl9kZWZhdWx0X29wdGlvbnMoKSwgZXhwZWN0ZWRfc3Rk
ZXJyPWV4cGVjdGVkX3N0ZGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRz
KENyZWF0ZVJvbGxvdXQoKSwgWyI4NTIiLCAiUmVhc29uIl0sIG9wdGlvbnM9c2VsZi5fZGVmYXVs
dF9vcHRpb25zKCksIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAKICAgICBkZWYg
dGVzdF9yb2xsb3V0KHNlbGYpOgogICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiUHJlcGFyaW5n
IHJvbGxvdXQgZm9yIGJ1ZyA0Mi5cblVwZGF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5XG5SdW5uaW5n
IHByZXBhcmUtQ2hhbmdlTG9nXG5NT0NLOiB1c2VyLm9wZW5fdXJsOiBmaWxlOi8vLi4uXG5CdWls
ZGluZyBXZWJLaXRcbkNvbW1pdHRlZCByNDk4MjQ6IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC80OTgyND5cbiIKICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIldhcyB0aGF0IGRp
ZmYgY29ycmVjdD9cbiIKLSAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKFJvbGxv
dXQoKSwgWzg1MiwgIlJlYXNvbiJdLCBvcHRpb25zPXNlbGYuX2RlZmF1bHRfb3B0aW9ucygpLCBl
eHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRf
c3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoUm9sbG91dCgpLCBb
Ijg1MiIsICJSZWFzb24iXSwgb3B0aW9ucz1zZWxmLl9kZWZhdWx0X29wdGlvbnMoKSwgZXhwZWN0
ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVy
cikKIApJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBh
cmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkJKHJldmlz
aW9uIDcyNTE3KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3By
ZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkJKHdvcmtpbmcgY29weSkKQEAgLTQxLDQgKzQxLDQg
QEAgY2xhc3MgUHJlcGFyZUNoYW5nZUxvZ0ZvclJldmVydChBYnN0cmFjdAogICAgICAgICBmb3Ig
Y2hhbmdlbG9nX3BhdGggaW4gY2hhbmdlbG9nX3BhdGhzOgogICAgICAgICAgICAgIyBGSVhNRTog
U2VlbXMgd2Ugc2hvdWxkIHByZXBhcmUgdGhlIG1lc3NhZ2Ugb3V0c2lkZSBvZiBjaGFuZ2Vsb2dz
LnB5IGFuZCB0aGVuIGp1c3QgcGFzcyBpbgogICAgICAgICAgICAgIyB0ZXh0IHRoYXQgd2Ugd2Fu
dCB0byB1c2UgdG8gcmVwbGFjZSB0aGUgcmV2aWV3ZWQgYnkgbGluZS4KLSAgICAgICAgICAgIENo
YW5nZUxvZyhjaGFuZ2Vsb2dfcGF0aCkudXBkYXRlX2Zvcl9yZXZlcnQoc3RhdGVbInJldmlzaW9u
Il0sIHN0YXRlWyJyZWFzb24iXSwgYnVnX3VybCkKKyAgICAgICAgICAgIENoYW5nZUxvZyhjaGFu
Z2Vsb2dfcGF0aCkudXBkYXRlX2Zvcl9yZXZlcnQoc3RhdGVbInJldmlzaW9uX2xpc3QiXSwgc3Rh
dGVbInJlYXNvbiJdLCBidWdfdXJsKQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL3JldmVydHJldmlzaW9uLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9yZXZlcnRyZXZpc2lvbi5weQkocmV2aXNpb24g
NzI1MTcpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcmV2ZXJ0
cmV2aXNpb24ucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDUgKzMxLDUgQEAgZnJvbSB3ZWJraXRw
eS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbQogCiBjbGFzcyBSZXZlcnRSZXZpc2lvbihBYnN0
cmFjdFN0ZXApOgogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgotICAgICAgICBzZWxmLl90b29s
LmNoZWNrb3V0KCkuYXBwbHlfcmV2ZXJzZV9kaWZmKHN0YXRlWyJyZXZpc2lvbiJdKQorICAgICAg
ICBzZWxmLl90b29sLmNoZWNrb3V0KCkuYXBwbHlfcmV2ZXJzZV9kaWZmKHN0YXRlWyJyZXZpc2lv
bl9saXN0Il0pCiAgICAgICAgIHNlbGYuZGlkX21vZGlmeV9jaGVja291dChzdGF0ZSkK
</data>
<flag name="review"
          id="65180"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76028</attachid>
            <date>2010-12-09 02:19:35 -0800</date>
            <delta_ts>2010-12-13 11:35:06 -0800</delta_ts>
            <desc>proposed_patch_v2</desc>
            <filename>webkit_patch02.patch</filename>
            <type>text/plain</type>
            <size>14043</size>
            <attacher name="Gabor Rapcsanyi">rgabor</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDczNTE0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMTItMDggIEdhYm9yIFJhcGNzYW55aSAg
PHJnYWJvckBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgd2Via2l0LXBhdGNoIHJvbGxvdXQgc2hvdWxkIGJlIGFibGUgdG8g
ZG8gbXVsdGktcmV2aXNpb24gcm9sbG91dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMzMzM2CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBw
YXNzIG1vcmUgdGhhbiBvbmUgcmV2aXNpb24gdG8gd2Via2l0LXBhdGNoLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3JldmVydHJldmlzaW9uLnB5
OgorCiAyMDEwLTEyLTA3ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGkucHkJKHJldmlzaW9uIDczNTE0KQor
KysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0xNTgsMyArMTU4LDcgQEAKICAgICAgICAgY29uZmxpY3RzID0gc2Vs
Zi5fc2NtLmNvbmZsaWN0ZWRfZmlsZXMoKQogICAgICAgICBpZiBsZW4oY29uZmxpY3RzKToKICAg
ICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IkZhaWxlZCB0byBhcHBseSByZXZl
cnNlIGRpZmYgZm9yIHJldmlzaW9uICVzIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBjb25mbGlj
dHM6XG4lcyIgJSAocmV2aXNpb24sICJcbiIuam9pbihjb25mbGljdHMpKSkKKworICAgIGRlZiBh
cHBseV9yZXZlcnNlX2RpZmZzKHNlbGYsIHJldmlzaW9uX2xpc3QpOgorICAgICAgICBmb3IgcmV2
aXNpb24gaW4gc29ydGVkKHJldmlzaW9uX2xpc3QsIHJldmVyc2U9VHJ1ZSk6CisgICAgICAgICAg
ICBzZWxmLmFwcGx5X3JldmVyc2VfZGlmZihyZXZpc2lvbikKSW5kZXg6IFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9j
aGFuZ2Vsb2dfdW5pdHRlc3QucHkJKHJldmlzaW9uIDczNTE0KQorKysgV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTcsNyArMTU3LDcgQEAKICAgICBkZWYgdGVzdF9tZXNzYWdlX2Zvcl9y
ZXZlcnQoc2VsZik6CiAgICAgICAgIGNoYW5nZWxvZyA9IENoYW5nZUxvZygiL2Zha2UvcGF0aCIp
CiAgICAgICAgIGxvbmdfcmVhc29uID0gIlRoaXMgaXMgYSB2ZXJ5IGxvbmcgcmVhc29uIHdoaWNo
IHNob3VsZCBiZSBsb25nIGVub3VnaCBzbyB0aGF0IF9tZXNzYWdlX2Zvcl9yZXZlcnQgd2lsbCBu
ZWVkIHRvIHdyYXAgaXQuICBXZSdsbCBhbHNvIGluY2x1ZGUgYSBodHRwczovL3Zlcnl2ZXJ5dmVy
eXZlcnl2ZXJ5bG9uZ2J1Z3VybC5jb20vcmVhbGx5bG9uZ2J1Z3RoaW5neS5jZ2k/YnVnX2lkPTEy
MzU0IGxpbmsgc28gdGhhdCB3ZSBjYW4gbWFrZSBzdXJlIHdlIHdyYXAgdGhhdCByaWdodCB0b28u
IgotICAgICAgICBtZXNzYWdlID0gY2hhbmdlbG9nLl9tZXNzYWdlX2Zvcl9yZXZlcnQoMTIzNDUs
IGxvbmdfcmVhc29uLCAiaHR0cDovL2V4YW1wbGUuY29tLzEyMyIpCisgICAgICAgIG1lc3NhZ2Ug
PSBjaGFuZ2Vsb2cuX21lc3NhZ2VfZm9yX3JldmVydChbMTIzNDVdLCBsb25nX3JlYXNvbiwgImh0
dHA6Ly9leGFtcGxlLmNvbS8xMjMiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtZXNzYWdl
LCBzZWxmLl9yZXZlcnRfbWVzc2FnZSkKIAogICAgIF9yZXZlcnRfZW50cnlfd2l0aF9idWdfdXJs
ID0gJycnMjAwOS0wOC0xOSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CkBAIC0xODEs
NiArMTgxLDMxIEBACiAgICAgICAgICogU2NyaXB0cy9idWd6aWxsYS10b29sOgogJycnCiAKKyAg
ICBfbXVsdGlwbGVfcmV2ZXJ0X2VudHJ5X3dpdGhfYnVnX3VybCA9ICcnJzIwMDktMDgtMTkgIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxMjM0NSwgcjEyMzQ2LCBhbmQgcjEyMzQ3LgorICAgICAgICBodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8xMjM0NQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMjM0NgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8xMjM0NworICAgICAgICBodHRwOi8vZXhhbXBsZS5jb20vMTIzCisKKyAgICAgICAgUmVhc29u
CisKKyAgICAgICAgKiBTY3JpcHRzL2J1Z3ppbGxhLXRvb2w6CisnJycKKworICAgIF9tdWx0aXBs
ZV9yZXZlcnRfZW50cnlfd2l0aG91dF9idWdfdXJsID0gJycnMjAwOS0wOC0xOSAgRXJpYyBTZWlk
ZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjEyMzQ1LCByMTIzNDYsIGFuZCByMTIzNDcuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzEyMzQ1CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzEyMzQ2CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyMzQ3
CisKKyAgICAgICAgUmVhc29uCisKKyAgICAgICAgKiBTY3JpcHRzL2J1Z3ppbGxhLXRvb2w6Cisn
JycKKwogICAgIGRlZiBfYXNzZXJ0X3VwZGF0ZV9mb3JfcmV2ZXJ0X291dHB1dChzZWxmLCBhcmdz
LCBleHBlY3RlZF9lbnRyeSk6CiAgICAgICAgIGNoYW5nZWxvZ19jb250ZW50cyA9IHUiJXNcbiVz
IiAlIChzZWxmLl9uZXdfZW50cnlfYm9pbGVycGxhdGUsIHNlbGYuX2V4YW1wbGVfY2hhbmdlbG9n
KQogICAgICAgICBjaGFuZ2Vsb2dfcGF0aCA9IHNlbGYuX3dyaXRlX3RtcF9maWxlX3dpdGhfY29u
dGVudHMoY2hhbmdlbG9nX2NvbnRlbnRzLmVuY29kZSgidXRmLTgiKSkKQEAgLTE5NSw4ICsyMjAs
MTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYWN0dWFsX2VudHJ5LmF1dGhvcl9lbWFp
bCgpLCAiZXJpY0B3ZWJraXQub3JnIikKIAogICAgIGRlZiB0ZXN0X3VwZGF0ZV9mb3JfcmV2ZXJ0
KHNlbGYpOgotICAgICAgICBzZWxmLl9hc3NlcnRfdXBkYXRlX2Zvcl9yZXZlcnRfb3V0cHV0KFsx
MjM0NSwgIlJlYXNvbiJdLCBzZWxmLl9yZXZlcnRfZW50cnlfd2l0aG91dF9idWdfdXJsKQotICAg
ICAgICBzZWxmLl9hc3NlcnRfdXBkYXRlX2Zvcl9yZXZlcnRfb3V0cHV0KFsxMjM0NSwgIlJlYXNv
biIsICJodHRwOi8vZXhhbXBsZS5jb20vMTIzIl0sIHNlbGYuX3JldmVydF9lbnRyeV93aXRoX2J1
Z191cmwpCisgICAgICAgIHNlbGYuX2Fzc2VydF91cGRhdGVfZm9yX3JldmVydF9vdXRwdXQoW1sx
MjM0NV0sICJSZWFzb24iXSwgc2VsZi5fcmV2ZXJ0X2VudHJ5X3dpdGhvdXRfYnVnX3VybCkKKyAg
ICAgICAgc2VsZi5fYXNzZXJ0X3VwZGF0ZV9mb3JfcmV2ZXJ0X291dHB1dChbWzEyMzQ1XSwgIlJl
YXNvbiIsICJodHRwOi8vZXhhbXBsZS5jb20vMTIzIl0sIHNlbGYuX3JldmVydF9lbnRyeV93aXRo
X2J1Z191cmwpCisgICAgICAgIHNlbGYuX2Fzc2VydF91cGRhdGVfZm9yX3JldmVydF9vdXRwdXQo
W1sxMjM0NSwgMTIzNDYsIDEyMzQ3XSwgIlJlYXNvbiJdLCBzZWxmLl9tdWx0aXBsZV9yZXZlcnRf
ZW50cnlfd2l0aG91dF9idWdfdXJsKQorICAgICAgICBzZWxmLl9hc3NlcnRfdXBkYXRlX2Zvcl9y
ZXZlcnRfb3V0cHV0KFtbMTIzNDUsIDEyMzQ2LCAxMjM0N10sICJSZWFzb24iLCAiaHR0cDovL2V4
YW1wbGUuY29tLzEyMyJdLCBzZWxmLl9tdWx0aXBsZV9yZXZlcnRfZW50cnlfd2l0aF9idWdfdXJs
KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CkluZGV4OiBXZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5
CShyZXZpc2lvbiA3MzUxNCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2NoYW5nZWxvZy5weQkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgbG9n
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVy
TGlzdAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBwYXJzZV9idWdf
aWQKK2Zyb20gd2Via2l0cHkudG9vbC5ncmFtbWFyIGltcG9ydCBqb2luX3dpdGhfc2VwYXJhdG9y
cwogCiAKIGRlZiB2aWV3X3NvdXJjZV91cmwocmV2aXNpb25fbnVtYmVyKToKQEAgLTE1MSw5ICsx
NTIsMTAgQEAKICAgICAgICAgcmV0dXJuICJcbiIuam9pbihsaW5lcykKIAogICAgICMgVGhpcyBw
cm9iYWJseSBkb2VzIG5vdCBiZWxvbmcgaW4gY2hhbmdlbG9ncy5weQotICAgIGRlZiBfbWVzc2Fn
ZV9mb3JfcmV2ZXJ0KHNlbGYsIHJldmlzaW9uLCByZWFzb24sIGJ1Z191cmwpOgotICAgICAgICBt
ZXNzYWdlID0gIlVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIlcy5cbiIgJSByZXZpc2lvbgotICAg
ICAgICBtZXNzYWdlICs9ICIlc1xuIiAlIHZpZXdfc291cmNlX3VybChyZXZpc2lvbikKKyAgICBk
ZWYgX21lc3NhZ2VfZm9yX3JldmVydChzZWxmLCByZXZpc2lvbl9saXN0LCByZWFzb24sIGJ1Z191
cmwpOgorICAgICAgICBtZXNzYWdlID0gIlVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0ICVzLlxuIiAl
IGpvaW5fd2l0aF9zZXBhcmF0b3JzKFsncicgKyBzdHIocmV2aXNpb24pIGZvciByZXZpc2lvbiBp
biByZXZpc2lvbl9saXN0XSkKKyAgICAgICAgZm9yIHJldmlzaW9uIGluIHJldmlzaW9uX2xpc3Q6
CisgICAgICAgICAgICBtZXNzYWdlICs9ICIlc1xuIiAlIHZpZXdfc291cmNlX3VybChyZXZpc2lv
bikKICAgICAgICAgaWYgYnVnX3VybDoKICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiVzXG4iICUg
YnVnX3VybAogICAgICAgICAjIEFkZCBhbiBleHRyYSBuZXcgbGluZSBhZnRlciB0aGUgcm9sbG91
dCBsaW5rcywgYmVmb3JlIGFueSByZWFzb24uCkBAIC0xNjIsMTQgKzE2NCwxNCBAQAogICAgICAg
ICAgICAgbWVzc2FnZSArPSAiJXNcblxuIiAlIHJlYXNvbgogICAgICAgICByZXR1cm4gc2VsZi5f
d3JhcF9saW5lcyhtZXNzYWdlKQogCi0gICAgZGVmIHVwZGF0ZV9mb3JfcmV2ZXJ0KHNlbGYsIHJl
dmlzaW9uLCByZWFzb24sIGJ1Z191cmw9Tm9uZSk6CisgICAgZGVmIHVwZGF0ZV9mb3JfcmV2ZXJ0
KHNlbGYsIHJldmlzaW9uX2xpc3QsIHJlYXNvbiwgYnVnX3VybD1Ob25lKToKICAgICAgICAgcmV2
aWV3ZWRfYnlfcmVnZXhwID0gcmUuY29tcGlsZSgKICAgICAgICAgICAgICAgICAiJXNSZXZpZXdl
ZCBieSBOT0JPRFkgXChPT1BTIVwpXC4iICUgc2VsZi5fY2hhbmdlbG9nX2luZGVudCkKICAgICAg
ICAgcmVtb3ZpbmdfYm9pbGVycGxhdGUgPSBGYWxzZQogICAgICAgICAjIGlucGxhY2U9MSBjcmVh
dGVzIGEgYmFja3VwIGZpbGUgYW5kIHJlLWRpcmVjdHMgc3Rkb3V0IHRvIHRoZSBmaWxlCiAgICAg
ICAgIGZvciBsaW5lIGluIGZpbGVpbnB1dC5GaWxlSW5wdXQoc2VsZi5wYXRoLCBpbnBsYWNlPTEp
OgogICAgICAgICAgICAgaWYgcmV2aWV3ZWRfYnlfcmVnZXhwLnNlYXJjaChsaW5lKToKLSAgICAg
ICAgICAgICAgICBtZXNzYWdlX2xpbmVzID0gc2VsZi5fbWVzc2FnZV9mb3JfcmV2ZXJ0KHJldmlz
aW9uLAorICAgICAgICAgICAgICAgIG1lc3NhZ2VfbGluZXMgPSBzZWxmLl9tZXNzYWdlX2Zvcl9y
ZXZlcnQocmV2aXNpb25fbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Z191cmwpCiAgICAgICAgICAgICAgICAg
cHJpbnQgcmV2aWV3ZWRfYnlfcmVnZXhwLnN1YihtZXNzYWdlX2xpbmVzLCBsaW5lKSwKSW5kZXg6
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZF91bml0
dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZG93bmxvYWRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDczNTE0KQorKysgV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFy
dHkubW9jayBpbXBvcnQgTW9jawogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmNvbW1hbmR0
ZXN0IGltcG9ydCBDb21tYW5kc1Rlc3QKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5kb3du
bG9hZCBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0
aW9ucywgTW9ja1Rvb2wKK2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja0No
ZWNrb3V0LCBNb2NrT3B0aW9ucywgTW9ja1Rvb2wKIAogCiBjbGFzcyBBYnN0cmFjdFJvbGxvdXRQ
cmVwQ29tbWFuZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNTMsNyArNTMsMjAgQEAKICAg
ICAgICAgY29tbWl0X2luZm8gPSBvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29tbWFuZC5f
Y29tbWl0X2luZm8sIFsxMjM0XSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXRfaW5mbywgbW9ja19jb21taXRfaW5mbykKIAor
ICAgIGRlZiB0ZXN0X3ByZXBhcmVfc3RhdGUoc2VsZik6CisgICAgICAgIGNvbW1hbmQgPSBBYnN0
cmFjdFJvbGxvdXRQcmVwQ29tbWFuZCgpCisgICAgICAgIG1vY2tfY29tbWl0X2luZm8gPSBNb2Nr
Q2hlY2tvdXQoKS5jb21taXRfaW5mb19mb3JfcmV2aXNpb24oMTIzKQorICAgICAgICBjb21tYW5k
Ll9jb21taXRfaW5mbyA9IGxhbWJkYSByZXZpc2lvbjogbW9ja19jb21taXRfaW5mbwogCisgICAg
ICAgIHN0YXRlID0gY29tbWFuZC5fcHJlcGFyZV9zdGF0ZShOb25lLCBbIjEyNCAxMjMgMTI1Iiwg
IlJlYXNvbiJdLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyMywgc3RhdGVbInJl
dmlzaW9uIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWzEyMywgMTI0LCAxMjVdLCBzdGF0
ZVsicmV2aXNpb25fbGlzdCJdKQorCisgICAgICAgIHN0YXRlID0gY29tbWFuZC5fcHJlcGFyZV9z
dGF0ZShOb25lLCBbInJldiByMTIyICAxMjUgIDEyMyIsICJSZWFzb24iXSwgTm9uZSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgxMjMsIHN0YXRlWyJyZXZpc2lvbiJdKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKFsxMjMsIDEyNV0sIHN0YXRlWyJyZXZpc2lvbl9saXN0Il0pCisKKwogY2xh
c3MgRG93bmxvYWRDb21tYW5kc1Rlc3QoQ29tbWFuZHNUZXN0KToKICAgICBkZWYgX2RlZmF1bHRf
b3B0aW9ucyhzZWxmKToKICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKCkKQEAgLTE4Miw2
ICsxOTUsNyBAQAogLS0gRW5kIGNvbW1lbnQgLS0KICIiIgogICAgICAgICBzZWxmLmFzc2VydF9l
eGVjdXRlX291dHB1dHMoQ3JlYXRlUm9sbG91dCgpLCBbODUyLCAiUmVhc29uIl0sIG9wdGlvbnM9
c2VsZi5fZGVmYXVsdF9vcHRpb25zKCksIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhDcmVhdGVSb2xsb3V0KCksIFsi
ODU1IDg1MiA4NTQiLCAiUmVhc29uIl0sIG9wdGlvbnM9c2VsZi5fZGVmYXVsdF9vcHRpb25zKCks
IGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAKICAgICBkZWYgdGVzdF9yb2xsb3V0
KHNlbGYpOgogICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiUHJlcGFyaW5nIHJvbGxvdXQgZm9y
IGJ1ZyA0Mi5cblVwZGF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5XG5SdW5uaW5nIHByZXBhcmUtQ2hh
bmdlTG9nXG5NT0NLOiB1c2VyLm9wZW5fdXJsOiBmaWxlOi8vLi4uXG5CdWlsZGluZyBXZWJLaXRc
bkNvbW1pdHRlZCByNDk4MjQ6IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC80OTgy
ND5cbiIKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9k
b3dubG9hZC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvZG93bmxvYWQucHkJKHJldmlzaW9uIDczNTE0KQorKysgV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yODgsNyArMjg4LDcgQEAKIAogCiBjbGFzcyBBYnN0cmFjdFJvbGxvdXRQcmVwQ29tbWFu
ZChBYnN0cmFjdFNlcXVlbmNlZENvbW1hbmQpOgotICAgIGFyZ3VtZW50X25hbWVzID0gIlJFVklT
SU9OIFJFQVNPTiIKKyAgICBhcmd1bWVudF9uYW1lcyA9ICJSRVZJU0lPTiBbUkVWSVNJT05TXSBS
RUFTT04iCiAKICAgICBkZWYgX2NvbW1pdF9pbmZvKHNlbGYsIHJldmlzaW9uKToKICAgICAgICAg
Y29tbWl0X2luZm8gPSBzZWxmLl90b29sLmNoZWNrb3V0KCkuY29tbWl0X2luZm9fZm9yX3Jldmlz
aW9uKHJldmlzaW9uKQpAQCAtMzAzLDEzICszMDMsMTYgQEAKICAgICAgICAgcmV0dXJuIGNvbW1p
dF9pbmZvCiAKICAgICBkZWYgX3ByZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9v
bCk6Ci0gICAgICAgIHJldmlzaW9uID0gYXJnc1swXQotICAgICAgICBjb21taXRfaW5mbyA9IHNl
bGYuX2NvbW1pdF9pbmZvKHJldmlzaW9uKQorICAgICAgICByZXZpc2lvbl9saXN0ID0gc29ydGVk
KFtpbnQocmV2aXNpb24pIGZvciByZXZpc2lvbiBpbiBzdHIoYXJnc1swXSkuc3BsaXQoJyAnKSBp
ZiByZXZpc2lvbi5pc2RpZ2l0KCldKQorICAgICAgICAjIFdlIHVzZSB0aGUgZWFybGllc3QgcmV2
aXNpb24gZm9yIHRoZSBidWcgaW5mbworICAgICAgICBlYXJsaWVzdF9yZXZpc2lvbiA9IHJldmlz
aW9uX2xpc3RbMF0KKyAgICAgICAgY29tbWl0X2luZm8gPSBzZWxmLl9jb21taXRfaW5mbyhlYXJs
aWVzdF9yZXZpc2lvbikKICAgICAgICAgY2NfbGlzdCA9IHNvcnRlZChbcGFydHkuYnVnemlsbGFf
ZW1haWwoKQogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGFydHkgaW4gY29tbWl0X2lu
Zm8ucmVzcG9uc2libGVfcGFydGllcygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBh
cnR5LmJ1Z3ppbGxhX2VtYWlsKCldKQogICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgInJl
dmlzaW9uIjogcmV2aXNpb24sCisgICAgICAgICAgICAicmV2aXNpb24iOiBlYXJsaWVzdF9yZXZp
c2lvbiwKKyAgICAgICAgICAgICJyZXZpc2lvbl9saXN0IjogcmV2aXNpb25fbGlzdCwKICAgICAg
ICAgICAgICJidWdfaWQiOiBjb21taXRfaW5mby5idWdfaWQoKSwKICAgICAgICAgICAgICMgRklY
TUU6IFdlIHNob3VsZCB1c2VkIHRoZSBsaXN0IGFzIHRoZSBjYW5vbmljYWwgcmVwcmVzZW50YXRp
b24uCiAgICAgICAgICAgICAiYnVnX2NjIjogIiwiLmpvaW4oY2NfbGlzdCksCkBAIC0zMTksOSAr
MzIyLDkgQEAKIAogY2xhc3MgUHJlcGFyZVJvbGxvdXQoQWJzdHJhY3RSb2xsb3V0UHJlcENvbW1h
bmQpOgogICAgIG5hbWUgPSAicHJlcGFyZS1yb2xsb3V0IgotICAgIGhlbHBfdGV4dCA9ICJSZXZl
cnQgdGhlIGdpdmVuIHJldmlzaW9uIGluIHRoZSB3b3JraW5nIGNvcHkgYW5kIHByZXBhcmUgQ2hh
bmdlTG9ncyB3aXRoIHJldmVydCByZWFzb24iCisgICAgaGVscF90ZXh0ID0gIlJldmVydCB0aGUg
Z2l2ZW4gcmV2aXNpb24ocykgaW4gdGhlIHdvcmtpbmcgY29weSBhbmQgcHJlcGFyZSBDaGFuZ2VM
b2dzIHdpdGggcmV2ZXJ0IHJlYXNvbiIKICAgICBsb25nX2hlbHAgPSAiIiJVcGRhdGVzIHRoZSB3
b3JraW5nIGNvcHkuCi1BcHBsaWVzIHRoZSBpbnZlcnNlIGRpZmYgZm9yIHRoZSBwcm92aWRlZCBy
ZXZpc2lvbi4KK0FwcGxpZXMgdGhlIGludmVyc2UgZGlmZiBmb3IgdGhlIHByb3ZpZGVkIHJldmlz
aW9uKHMpLgogQ3JlYXRlcyBhbiBhcHByb3ByaWF0ZSByb2xsb3V0IENoYW5nZUxvZywgaW5jbHVk
aW5nIGEgdHJhYyBsaW5rIGFuZCBidWcgbGluay4KICIiIgogICAgIHN0ZXBzID0gWwpAQCAtMzM0
LDcgKzMzNyw3IEBACiAKIGNsYXNzIENyZWF0ZVJvbGxvdXQoQWJzdHJhY3RSb2xsb3V0UHJlcENv
bW1hbmQpOgogICAgIG5hbWUgPSAiY3JlYXRlLXJvbGxvdXQiCi0gICAgaGVscF90ZXh0ID0gIkNy
ZWF0ZXMgYSBidWcgdG8gdHJhY2sgYSBicm9rZW4gU1ZOIHJldmlzaW9uIGFuZCB1cGxvYWRzIGEg
cm9sbG91dCBwYXRjaC4iCisgICAgaGVscF90ZXh0ID0gIkNyZWF0ZXMgYSBidWcgdG8gdHJhY2sg
dGhlIGJyb2tlbiBTVk4gcmV2aXNpb24ocykgYW5kIHVwbG9hZHMgYSByb2xsb3V0IHBhdGNoLiIK
ICAgICBzdGVwcyA9IFsKICAgICAgICAgc3RlcHMuQ2xlYW5Xb3JraW5nRGlyZWN0b3J5LAogICAg
ICAgICBzdGVwcy5VcGRhdGUsCkBAIC0zNzQsNyArMzc3LDcgQEAKIGNsYXNzIFJvbGxvdXQoQWJz
dHJhY3RSb2xsb3V0UHJlcENvbW1hbmQpOgogICAgIG5hbWUgPSAicm9sbG91dCIKICAgICBzaG93
X2luX21haW5faGVscCA9IFRydWUKLSAgICBoZWxwX3RleHQgPSAiUmV2ZXJ0IHRoZSBnaXZlbiBy
ZXZpc2lvbiBpbiB0aGUgd29ya2luZyBjb3B5IGFuZCBvcHRpb25hbGx5IGNvbW1pdCB0aGUgcmV2
ZXJ0IGFuZCByZS1vcGVuIHRoZSBvcmlnaW5hbCBidWciCisgICAgaGVscF90ZXh0ID0gIlJldmVy
dCB0aGUgZ2l2ZW4gcmV2aXNpb24ocykgaW4gdGhlIHdvcmtpbmcgY29weSBhbmQgb3B0aW9uYWxs
eSBjb21taXQgdGhlIHJldmVydCBhbmQgcmUtb3BlbiB0aGUgb3JpZ2luYWwgYnVnIgogICAgIGxv
bmdfaGVscCA9ICIiIlVwZGF0ZXMgdGhlIHdvcmtpbmcgY29weS4KIEFwcGxpZXMgdGhlIGludmVy
c2UgZGlmZiBmb3IgdGhlIHByb3ZpZGVkIHJldmlzaW9uLgogQ3JlYXRlcyBhbiBhcHByb3ByaWF0
ZSByb2xsb3V0IENoYW5nZUxvZywgaW5jbHVkaW5nIGEgdHJhYyBsaW5rIGFuZCBidWcgbGluay4K
SW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hh
bmdlbG9nZm9ycmV2ZXJ0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0LnB5CShyZXZpc2lvbiA3
MzUxNCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJl
Y2hhbmdlbG9nZm9ycmV2ZXJ0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MSw0ICs0MSw0IEBACiAg
ICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBjaGFuZ2Vsb2dfcGF0aHM6CiAgICAgICAgICAg
ICAjIEZJWE1FOiBTZWVtcyB3ZSBzaG91bGQgcHJlcGFyZSB0aGUgbWVzc2FnZSBvdXRzaWRlIG9m
IGNoYW5nZWxvZ3MucHkgYW5kIHRoZW4ganVzdCBwYXNzIGluCiAgICAgICAgICAgICAjIHRleHQg
dGhhdCB3ZSB3YW50IHRvIHVzZSB0byByZXBsYWNlIHRoZSByZXZpZXdlZCBieSBsaW5lLgotICAg
ICAgICAgICAgQ2hhbmdlTG9nKGNoYW5nZWxvZ19wYXRoKS51cGRhdGVfZm9yX3JldmVydChzdGF0
ZVsicmV2aXNpb24iXSwgc3RhdGVbInJlYXNvbiJdLCBidWdfdXJsKQorICAgICAgICAgICAgQ2hh
bmdlTG9nKGNoYW5nZWxvZ19wYXRoKS51cGRhdGVfZm9yX3JldmVydChzdGF0ZVsicmV2aXNpb25f
bGlzdCJdLCBzdGF0ZVsicmVhc29uIl0sIGJ1Z191cmwpCkluZGV4OiBXZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcmV2ZXJ0cmV2aXNpb24ucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3JldmVydHJldmlzaW9uLnB5
CShyZXZpc2lvbiA3MzUxNCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9yZXZlcnRyZXZpc2lvbi5weQkod29ya2luZyBjb3B5KQpAQCAtMzEsNSArMzEsNSBAQAog
CiBjbGFzcyBSZXZlcnRSZXZpc2lvbihBYnN0cmFjdFN0ZXApOgogICAgIGRlZiBydW4oc2VsZiwg
c3RhdGUpOgotICAgICAgICBzZWxmLl90b29sLmNoZWNrb3V0KCkuYXBwbHlfcmV2ZXJzZV9kaWZm
KHN0YXRlWyJyZXZpc2lvbiJdKQorICAgICAgICBzZWxmLl90b29sLmNoZWNrb3V0KCkuYXBwbHlf
cmV2ZXJzZV9kaWZmcyhzdGF0ZVsicmV2aXNpb25fbGlzdCJdKQogICAgICAgICBzZWxmLmRpZF9t
b2RpZnlfY2hlY2tvdXQoc3RhdGUpCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvbW9ja3Rvb2wucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL21vY2t0b29sLnB5CShyZXZpc2lvbiA3MzUxNCkKKysrIFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQkod29ya2luZyBjb3B5KQpAQCAtNDkwLDcg
KzQ5MCw3IEBACiAgICAgZGVmIGFwcGx5X3BhdGNoKHNlbGYsIHBhdGNoLCBmb3JjZT1GYWxzZSk6
CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBhcHBseV9yZXZlcnNlX2RpZmYoc2VsZiwgcmV2aXNp
b24pOgorICAgIGRlZiBhcHBseV9yZXZlcnNlX2RpZmZzKHNlbGYsIHJldmlzaW9uKToKICAgICAg
ICAgcGFzcwogCiAgICAgZGVmIHN1Z2dlc3RlZF9yZXZpZXdlcnMoc2VsZiwgZ2l0X2NvbW1pdCwg
Y2hhbmdlZF9maWxlcz1Ob25lKToK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76415</attachid>
            <date>2010-12-13 11:35:06 -0800</date>
            <delta_ts>2010-12-13 12:41:19 -0800</delta_ts>
            <desc>proposed_patch_v3</desc>
            <filename>webkit_patch03.patch</filename>
            <type>text/plain</type>
            <size>16220</size>
            <attacher name="Gabor Rapcsanyi">rgabor</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDczOTM0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMTItMTMgIEdhYm9yIFJhcGNzYW55aSAg
PHJnYWJvckBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgd2Via2l0LXBhdGNoIHJvbGxvdXQgc2hvdWxkIGJlIGFibGUgdG8g
ZG8gbXVsdGktcmV2aXNpb24gcm9sbG91dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMzMzM2CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBw
YXNzIG1vcmUgdGhhbiBvbmUgcmV2aXNpb24gdG8gd2Via2l0LXBhdGNoLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Fic3RyYWN0c2VxdWVuY2VkY29t
bWFuZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxv
YWQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2Fk
X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxv
Z2ZvcnJldmVydC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcmV2
ZXJ0cmV2aXNpb24ucHk6CisKIDIwMTAtMTItMTMgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgpJbmRleDog
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Fw
aS5weQkocmV2aXNpb24gNzM5MzMpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9hcGkucHkJKHdvcmtpbmcgY29weSkKQEAgLTE1OCwzICsxNTgsNyBAQCBj
bGFzcyBDaGVja291dChvYmplY3QpOgogICAgICAgICBjb25mbGljdHMgPSBzZWxmLl9zY20uY29u
ZmxpY3RlZF9maWxlcygpCiAgICAgICAgIGlmIGxlbihjb25mbGljdHMpOgogICAgICAgICAgICAg
cmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iRmFpbGVkIHRvIGFwcGx5IHJldmVyc2UgZGlmZiBm
b3IgcmV2aXNpb24gJXMgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIGNvbmZsaWN0czpcbiVzIiAl
IChyZXZpc2lvbiwgIlxuIi5qb2luKGNvbmZsaWN0cykpKQorCisgICAgZGVmIGFwcGx5X3JldmVy
c2VfZGlmZnMoc2VsZiwgcmV2aXNpb25fbGlzdCk6CisgICAgICAgIGZvciByZXZpc2lvbiBpbiBz
b3J0ZWQocmV2aXNpb25fbGlzdCwgcmV2ZXJzZT1UcnVlKToKKyAgICAgICAgICAgIHNlbGYuYXBw
bHlfcmV2ZXJzZV9kaWZmKHJldmlzaW9uKQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQkocmV2aXNp
b24gNzM5MzMpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9jaGFuZ2Vsb2cucHkJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbAogZnJvbSB3ZWJraXRweS5jb21tb24uY29u
ZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QKIGZyb20gd2Via2l0cHkuY29tbW9u
LmNvbmZpZyBpbXBvcnQgdXJscwogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGlt
cG9ydCBwYXJzZV9idWdfaWQKK2Zyb20gd2Via2l0cHkudG9vbC5ncmFtbWFyIGltcG9ydCBqb2lu
X3dpdGhfc2VwYXJhdG9ycwogCiAKIGNsYXNzIENoYW5nZUxvZ0VudHJ5KG9iamVjdCk6CkBAIC0x
NDUsOSArMTQ2LDEwIEBAIGNsYXNzIENoYW5nZUxvZyhvYmplY3QpOgogICAgICAgICByZXR1cm4g
IlxuIi5qb2luKGxpbmVzKQogCiAgICAgIyBUaGlzIHByb2JhYmx5IGRvZXMgbm90IGJlbG9uZyBp
biBjaGFuZ2Vsb2dzLnB5Ci0gICAgZGVmIF9tZXNzYWdlX2Zvcl9yZXZlcnQoc2VsZiwgcmV2aXNp
b24sIHJlYXNvbiwgYnVnX3VybCk6Ci0gICAgICAgIG1lc3NhZ2UgPSAiVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgciVzLlxuIiAlIHJldmlzaW9uCi0gICAgICAgIG1lc3NhZ2UgKz0gIiVzXG4iICUg
dXJscy52aWV3X3JldmlzaW9uX3VybChyZXZpc2lvbikKKyAgICBkZWYgX21lc3NhZ2VfZm9yX3Jl
dmVydChzZWxmLCByZXZpc2lvbl9saXN0LCByZWFzb24sIGJ1Z191cmwpOgorICAgICAgICBtZXNz
YWdlID0gIlVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0ICVzLlxuIiAlIGpvaW5fd2l0aF9zZXBhcmF0
b3JzKFsncicgKyBzdHIocmV2aXNpb24pIGZvciByZXZpc2lvbiBpbiByZXZpc2lvbl9saXN0XSkK
KyAgICAgICAgZm9yIHJldmlzaW9uIGluIHJldmlzaW9uX2xpc3Q6CisgICAgICAgICAgICBtZXNz
YWdlICs9ICIlc1xuIiAlIHVybHMudmlld19yZXZpc2lvbl91cmwocmV2aXNpb24pCiAgICAgICAg
IGlmIGJ1Z191cmw6CiAgICAgICAgICAgICBtZXNzYWdlICs9ICIlc1xuIiAlIGJ1Z191cmwKICAg
ICAgICAgIyBBZGQgYW4gZXh0cmEgbmV3IGxpbmUgYWZ0ZXIgdGhlIHJvbGxvdXQgbGlua3MsIGJl
Zm9yZSBhbnkgcmVhc29uLgpAQCAtMTU2LDE0ICsxNTgsMTQgQEAgY2xhc3MgQ2hhbmdlTG9nKG9i
amVjdCk6CiAgICAgICAgICAgICBtZXNzYWdlICs9ICIlc1xuXG4iICUgcmVhc29uCiAgICAgICAg
IHJldHVybiBzZWxmLl93cmFwX2xpbmVzKG1lc3NhZ2UpCiAKLSAgICBkZWYgdXBkYXRlX2Zvcl9y
ZXZlcnQoc2VsZiwgcmV2aXNpb24sIHJlYXNvbiwgYnVnX3VybD1Ob25lKToKKyAgICBkZWYgdXBk
YXRlX2Zvcl9yZXZlcnQoc2VsZiwgcmV2aXNpb25fbGlzdCwgcmVhc29uLCBidWdfdXJsPU5vbmUp
OgogICAgICAgICByZXZpZXdlZF9ieV9yZWdleHAgPSByZS5jb21waWxlKAogICAgICAgICAgICAg
ICAgICIlc1Jldmlld2VkIGJ5IE5PQk9EWSBcKE9PUFMhXClcLiIgJSBzZWxmLl9jaGFuZ2Vsb2df
aW5kZW50KQogICAgICAgICByZW1vdmluZ19ib2lsZXJwbGF0ZSA9IEZhbHNlCiAgICAgICAgICMg
aW5wbGFjZT0xIGNyZWF0ZXMgYSBiYWNrdXAgZmlsZSBhbmQgcmUtZGlyZWN0cyBzdGRvdXQgdG8g
dGhlIGZpbGUKICAgICAgICAgZm9yIGxpbmUgaW4gZmlsZWlucHV0LkZpbGVJbnB1dChzZWxmLnBh
dGgsIGlucGxhY2U9MSk6CiAgICAgICAgICAgICBpZiByZXZpZXdlZF9ieV9yZWdleHAuc2VhcmNo
KGxpbmUpOgotICAgICAgICAgICAgICAgIG1lc3NhZ2VfbGluZXMgPSBzZWxmLl9tZXNzYWdlX2Zv
cl9yZXZlcnQocmV2aXNpb24sCisgICAgICAgICAgICAgICAgbWVzc2FnZV9saW5lcyA9IHNlbGYu
X21lc3NhZ2VfZm9yX3JldmVydChyZXZpc2lvbl9saXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVnX3VybCkKICAg
ICAgICAgICAgICAgICBwcmludCByZXZpZXdlZF9ieV9yZWdleHAuc3ViKG1lc3NhZ2VfbGluZXMs
IGxpbmUpLApJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weQkocmV2aXNp
b24gNzM5MzMpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNyBA
QCBjbGFzcyBDaGFuZ2VMb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9t
ZXNzYWdlX2Zvcl9yZXZlcnQoc2VsZik6CiAgICAgICAgIGNoYW5nZWxvZyA9IENoYW5nZUxvZygi
L2Zha2UvcGF0aCIpCiAgICAgICAgIGxvbmdfcmVhc29uID0gIlRoaXMgaXMgYSB2ZXJ5IGxvbmcg
cmVhc29uIHdoaWNoIHNob3VsZCBiZSBsb25nIGVub3VnaCBzbyB0aGF0IF9tZXNzYWdlX2Zvcl9y
ZXZlcnQgd2lsbCBuZWVkIHRvIHdyYXAgaXQuICBXZSdsbCBhbHNvIGluY2x1ZGUgYSBodHRwczov
L3Zlcnl2ZXJ5dmVyeXZlcnl2ZXJ5bG9uZ2J1Z3VybC5jb20vcmVhbGx5bG9uZ2J1Z3RoaW5neS5j
Z2k/YnVnX2lkPTEyMzU0IGxpbmsgc28gdGhhdCB3ZSBjYW4gbWFrZSBzdXJlIHdlIHdyYXAgdGhh
dCByaWdodCB0b28uIgotICAgICAgICBtZXNzYWdlID0gY2hhbmdlbG9nLl9tZXNzYWdlX2Zvcl9y
ZXZlcnQoMTIzNDUsIGxvbmdfcmVhc29uLCAiaHR0cDovL2V4YW1wbGUuY29tLzEyMyIpCisgICAg
ICAgIG1lc3NhZ2UgPSBjaGFuZ2Vsb2cuX21lc3NhZ2VfZm9yX3JldmVydChbMTIzNDVdLCBsb25n
X3JlYXNvbiwgImh0dHA6Ly9leGFtcGxlLmNvbS8xMjMiKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhtZXNzYWdlLCBzZWxmLl9yZXZlcnRfbWVzc2FnZSkKIAogICAgIF9yZXZlcnRfZW50cnlf
d2l0aF9idWdfdXJsID0gJycnMjAwOS0wOC0xOSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5v
cmc+CkBAIC0xODEsNiArMTgxLDMxIEBAIGNsYXNzIENoYW5nZUxvZ1Rlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICAqIFNjcmlwdHMvYnVnemlsbGEtdG9vbDoKICcnJwogCisgICAgX211
bHRpcGxlX3JldmVydF9lbnRyeV93aXRoX2J1Z191cmwgPSAnJycyMDA5LTA4LTE5ICBFcmljIFNl
aWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTIzNDUsIHIxMjM0NiwgYW5kIHIxMjM0Ny4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvMTIzNDUKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTIzNDYKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIz
NDcKKyAgICAgICAgaHR0cDovL2V4YW1wbGUuY29tLzEyMworCisgICAgICAgIFJlYXNvbgorCisg
ICAgICAgICogU2NyaXB0cy9idWd6aWxsYS10b29sOgorJycnCisKKyAgICBfbXVsdGlwbGVfcmV2
ZXJ0X2VudHJ5X3dpdGhvdXRfYnVnX3VybCA9ICcnJzIwMDktMDgtMTkgIEVyaWMgU2VpZGVsICA8
ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjM0
NSwgcjEyMzQ2LCBhbmQgcjEyMzQ3LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8xMjM0NQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8x
MjM0NgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjM0NworCisg
ICAgICAgIFJlYXNvbgorCisgICAgICAgICogU2NyaXB0cy9idWd6aWxsYS10b29sOgorJycnCisK
ICAgICBkZWYgX2Fzc2VydF91cGRhdGVfZm9yX3JldmVydF9vdXRwdXQoc2VsZiwgYXJncywgZXhw
ZWN0ZWRfZW50cnkpOgogICAgICAgICBjaGFuZ2Vsb2dfY29udGVudHMgPSB1IiVzXG4lcyIgJSAo
c2VsZi5fbmV3X2VudHJ5X2JvaWxlcnBsYXRlLCBzZWxmLl9leGFtcGxlX2NoYW5nZWxvZykKICAg
ICAgICAgY2hhbmdlbG9nX3BhdGggPSBzZWxmLl93cml0ZV90bXBfZmlsZV93aXRoX2NvbnRlbnRz
KGNoYW5nZWxvZ19jb250ZW50cy5lbmNvZGUoInV0Zi04IikpCkBAIC0xOTUsOCArMjIwLDEwIEBA
IGNsYXNzIENoYW5nZUxvZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhhY3R1YWxfZW50cnkuYXV0aG9yX2VtYWlsKCksICJlcmljQHdlYmtpdC5vcmci
KQogCiAgICAgZGVmIHRlc3RfdXBkYXRlX2Zvcl9yZXZlcnQoc2VsZik6Ci0gICAgICAgIHNlbGYu
X2Fzc2VydF91cGRhdGVfZm9yX3JldmVydF9vdXRwdXQoWzEyMzQ1LCAiUmVhc29uIl0sIHNlbGYu
X3JldmVydF9lbnRyeV93aXRob3V0X2J1Z191cmwpCi0gICAgICAgIHNlbGYuX2Fzc2VydF91cGRh
dGVfZm9yX3JldmVydF9vdXRwdXQoWzEyMzQ1LCAiUmVhc29uIiwgImh0dHA6Ly9leGFtcGxlLmNv
bS8xMjMiXSwgc2VsZi5fcmV2ZXJ0X2VudHJ5X3dpdGhfYnVnX3VybCkKKyAgICAgICAgc2VsZi5f
YXNzZXJ0X3VwZGF0ZV9mb3JfcmV2ZXJ0X291dHB1dChbWzEyMzQ1XSwgIlJlYXNvbiJdLCBzZWxm
Ll9yZXZlcnRfZW50cnlfd2l0aG91dF9idWdfdXJsKQorICAgICAgICBzZWxmLl9hc3NlcnRfdXBk
YXRlX2Zvcl9yZXZlcnRfb3V0cHV0KFtbMTIzNDVdLCAiUmVhc29uIiwgImh0dHA6Ly9leGFtcGxl
LmNvbS8xMjMiXSwgc2VsZi5fcmV2ZXJ0X2VudHJ5X3dpdGhfYnVnX3VybCkKKyAgICAgICAgc2Vs
Zi5fYXNzZXJ0X3VwZGF0ZV9mb3JfcmV2ZXJ0X291dHB1dChbWzEyMzQ1LCAxMjM0NiwgMTIzNDdd
LCAiUmVhc29uIl0sIHNlbGYuX211bHRpcGxlX3JldmVydF9lbnRyeV93aXRob3V0X2J1Z191cmwp
CisgICAgICAgIHNlbGYuX2Fzc2VydF91cGRhdGVfZm9yX3JldmVydF9vdXRwdXQoW1sxMjM0NSwg
MTIzNDYsIDEyMzQ3XSwgIlJlYXNvbiIsICJodHRwOi8vZXhhbXBsZS5jb20vMTIzIl0sIHNlbGYu
X211bHRpcGxlX3JldmVydF9lbnRyeV93aXRoX2J1Z191cmwpCiAKIAogaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2Nr
dG9vbC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
bW9ja3Rvb2wucHkJKHJldmlzaW9uIDczOTMzKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL21vY2t0b29sLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01MDgsNyArNTA4LDcgQEAg
Y2xhc3MgTW9ja0NoZWNrb3V0KG9iamVjdCk6CiAgICAgZGVmIGFwcGx5X3BhdGNoKHNlbGYsIHBh
dGNoLCBmb3JjZT1GYWxzZSk6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBhcHBseV9yZXZlcnNl
X2RpZmYoc2VsZiwgcmV2aXNpb24pOgorICAgIGRlZiBhcHBseV9yZXZlcnNlX2RpZmZzKHNlbGYs
IHJldmlzaW9uKToKICAgICAgICAgcGFzcwogCiAgICAgZGVmIHN1Z2dlc3RlZF9yZXZpZXdlcnMo
c2VsZiwgZ2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1Ob25lKToKSW5kZXg6IFdlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9hYnN0cmFjdHNlcXVlbmNlZGNvbW1hbmQu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL2Fic3RyYWN0c2VxdWVuY2VkY29tbWFuZC5weQkocmV2aXNpb24gNzM5MzMpCisrKyBXZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvYWJzdHJhY3RzZXF1ZW5jZWRj
b21tYW5kLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZl
IGltcG9ydCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0
ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuc3RlcHNl
cXVlbmNlIGltcG9ydCBTdGVwU2VxdWVuY2UKIGZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1h
bmR0b29sIGltcG9ydCBBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZAogCkBAIC00MCw0ICs0Miwx
MCBAQCBjbGFzcyBBYnN0cmFjdFNlcXVlbmNlZENvbW1hbmQoQWJzdHJhY3RECiAgICAgICAgIHJl
dHVybiBOb25lCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToK
LSAgICAgICAgc2VsZi5fc2VxdWVuY2UucnVuX2FuZF9oYW5kbGVfZXJyb3JzKHRvb2wsIG9wdGlv
bnMsIHNlbGYuX3ByZXBhcmVfc3RhdGUob3B0aW9ucywgYXJncywgdG9vbCkpCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIHN0YXRlID0gc2VsZi5fcHJlcGFyZV9zdGF0ZShvcHRpb25zLCBhcmdz
LCB0b29sKQorICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CisgICAgICAgICAgICBsb2co
ZS5tZXNzYWdlX3dpdGhfb3V0cHV0KCkpCisgICAgICAgICAgICBleGl0KGUuZXhpdF9jb2RlIG9y
IDIpCisKKyAgICAgICAgc2VsZi5fc2VxdWVuY2UucnVuX2FuZF9oYW5kbGVfZXJyb3JzKHRvb2ws
IG9wdGlvbnMsIHN0YXRlKQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL2Rvd25sb2FkLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZC5weQkocmV2aXNpb24gNzM5MzMpCisrKyBX
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkJKHdv
cmtpbmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCBjbGFzcyBMYW5kRnJvbUJ1ZyhBYnN0cmFj
dFBhdGNoTGFuZGluZ0NvCiAKIAogY2xhc3MgQWJzdHJhY3RSb2xsb3V0UHJlcENvbW1hbmQoQWJz
dHJhY3RTZXF1ZW5jZWRDb21tYW5kKToKLSAgICBhcmd1bWVudF9uYW1lcyA9ICJSRVZJU0lPTiBS
RUFTT04iCisgICAgYXJndW1lbnRfbmFtZXMgPSAiUkVWSVNJT04gW1JFVklTSU9OU10gUkVBU09O
IgogCiAgICAgZGVmIF9jb21taXRfaW5mbyhzZWxmLCByZXZpc2lvbik6CiAgICAgICAgIGNvbW1p
dF9pbmZvID0gc2VsZi5fdG9vbC5jaGVja291dCgpLmNvbW1pdF9pbmZvX2Zvcl9yZXZpc2lvbihy
ZXZpc2lvbikKQEAgLTMwNCwxMyArMzA0LDIzIEBAIGNsYXNzIEFic3RyYWN0Um9sbG91dFByZXBD
b21tYW5kKEFic3RyYWMKICAgICAgICAgcmV0dXJuIGNvbW1pdF9pbmZvCiAKICAgICBkZWYgX3By
ZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIHJldmlzaW9u
ID0gYXJnc1swXQotICAgICAgICBjb21taXRfaW5mbyA9IHNlbGYuX2NvbW1pdF9pbmZvKHJldmlz
aW9uKQorICAgICAgICByZXZpc2lvbl9saXN0ID0gW10KKyAgICAgICAgZm9yIHJldmlzaW9uIGlu
IHN0cihhcmdzWzBdKS5zcGxpdCgpOgorICAgICAgICAgICAgaWYgcmV2aXNpb24uaXNkaWdpdCgp
OgorICAgICAgICAgICAgICAgIHJldmlzaW9uX2xpc3QuYXBwZW5kKGludChyZXZpc2lvbikpCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3Nh
Z2U9IkludmFsaWQgc3ZuIHJldmlzaW9uIG51bWJlcjogIiArIHJldmlzaW9uKQorICAgICAgICBy
ZXZpc2lvbl9saXN0LnNvcnQoKQorCisgICAgICAgICMgV2UgdXNlIHRoZSBlYXJsaWVzdCByZXZp
c2lvbiBmb3IgdGhlIGJ1ZyBpbmZvCisgICAgICAgIGVhcmxpZXN0X3JldmlzaW9uID0gcmV2aXNp
b25fbGlzdFswXQorICAgICAgICBjb21taXRfaW5mbyA9IHNlbGYuX2NvbW1pdF9pbmZvKGVhcmxp
ZXN0X3JldmlzaW9uKQogICAgICAgICBjY19saXN0ID0gc29ydGVkKFtwYXJ0eS5idWd6aWxsYV9l
bWFpbCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwYXJ0eSBpbiBjb21taXRfaW5m
by5yZXNwb25zaWJsZV9wYXJ0aWVzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFy
dHkuYnVnemlsbGFfZW1haWwoKV0pCiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAicmV2
aXNpb24iOiByZXZpc2lvbiwKKyAgICAgICAgICAgICJyZXZpc2lvbiI6IGVhcmxpZXN0X3Jldmlz
aW9uLAorICAgICAgICAgICAgInJldmlzaW9uX2xpc3QiOiByZXZpc2lvbl9saXN0LAogICAgICAg
ICAgICAgImJ1Z19pZCI6IGNvbW1pdF9pbmZvLmJ1Z19pZCgpLAogICAgICAgICAgICAgIyBGSVhN
RTogV2Ugc2hvdWxkIHVzZWQgdGhlIGxpc3QgYXMgdGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlv
bi4KICAgICAgICAgICAgICJidWdfY2MiOiAiLCIuam9pbihjY19saXN0KSwKQEAgLTMyMCw5ICsz
MzAsOSBAQCBjbGFzcyBBYnN0cmFjdFJvbGxvdXRQcmVwQ29tbWFuZChBYnN0cmFjCiAKIGNsYXNz
IFByZXBhcmVSb2xsb3V0KEFic3RyYWN0Um9sbG91dFByZXBDb21tYW5kKToKICAgICBuYW1lID0g
InByZXBhcmUtcm9sbG91dCIKLSAgICBoZWxwX3RleHQgPSAiUmV2ZXJ0IHRoZSBnaXZlbiByZXZp
c2lvbiBpbiB0aGUgd29ya2luZyBjb3B5IGFuZCBwcmVwYXJlIENoYW5nZUxvZ3Mgd2l0aCByZXZl
cnQgcmVhc29uIgorICAgIGhlbHBfdGV4dCA9ICJSZXZlcnQgdGhlIGdpdmVuIHJldmlzaW9uKHMp
IGluIHRoZSB3b3JraW5nIGNvcHkgYW5kIHByZXBhcmUgQ2hhbmdlTG9ncyB3aXRoIHJldmVydCBy
ZWFzb24iCiAgICAgbG9uZ19oZWxwID0gIiIiVXBkYXRlcyB0aGUgd29ya2luZyBjb3B5LgotQXBw
bGllcyB0aGUgaW52ZXJzZSBkaWZmIGZvciB0aGUgcHJvdmlkZWQgcmV2aXNpb24uCitBcHBsaWVz
IHRoZSBpbnZlcnNlIGRpZmYgZm9yIHRoZSBwcm92aWRlZCByZXZpc2lvbihzKS4KIENyZWF0ZXMg
YW4gYXBwcm9wcmlhdGUgcm9sbG91dCBDaGFuZ2VMb2csIGluY2x1ZGluZyBhIHRyYWMgbGluayBh
bmQgYnVnIGxpbmsuCiAiIiIKICAgICBzdGVwcyA9IFsKQEAgLTMzNSw3ICszNDUsNyBAQCBDcmVh
dGVzIGFuIGFwcHJvcHJpYXRlIHJvbGxvdXQgQ2hhbmdlTG9nCiAKIGNsYXNzIENyZWF0ZVJvbGxv
dXQoQWJzdHJhY3RSb2xsb3V0UHJlcENvbW1hbmQpOgogICAgIG5hbWUgPSAiY3JlYXRlLXJvbGxv
dXQiCi0gICAgaGVscF90ZXh0ID0gIkNyZWF0ZXMgYSBidWcgdG8gdHJhY2sgYSBicm9rZW4gU1ZO
IHJldmlzaW9uIGFuZCB1cGxvYWRzIGEgcm9sbG91dCBwYXRjaC4iCisgICAgaGVscF90ZXh0ID0g
IkNyZWF0ZXMgYSBidWcgdG8gdHJhY2sgdGhlIGJyb2tlbiBTVk4gcmV2aXNpb24ocykgYW5kIHVw
bG9hZHMgYSByb2xsb3V0IHBhdGNoLiIKICAgICBzdGVwcyA9IFsKICAgICAgICAgc3RlcHMuQ2xl
YW5Xb3JraW5nRGlyZWN0b3J5LAogICAgICAgICBzdGVwcy5VcGRhdGUsCkBAIC0zNzUsNyArMzg1
LDcgQEAgc28gdGhhdCB3ZSBjYW4gdHJhY2sgaG93IG9mdGVuIHRoZXNlIGZsYQogY2xhc3MgUm9s
bG91dChBYnN0cmFjdFJvbGxvdXRQcmVwQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJyb2xsb3V0Igog
ICAgIHNob3dfaW5fbWFpbl9oZWxwID0gVHJ1ZQotICAgIGhlbHBfdGV4dCA9ICJSZXZlcnQgdGhl
IGdpdmVuIHJldmlzaW9uIGluIHRoZSB3b3JraW5nIGNvcHkgYW5kIG9wdGlvbmFsbHkgY29tbWl0
IHRoZSByZXZlcnQgYW5kIHJlLW9wZW4gdGhlIG9yaWdpbmFsIGJ1ZyIKKyAgICBoZWxwX3RleHQg
PSAiUmV2ZXJ0IHRoZSBnaXZlbiByZXZpc2lvbihzKSBpbiB0aGUgd29ya2luZyBjb3B5IGFuZCBv
cHRpb25hbGx5IGNvbW1pdCB0aGUgcmV2ZXJ0IGFuZCByZS1vcGVuIHRoZSBvcmlnaW5hbCBidWci
CiAgICAgbG9uZ19oZWxwID0gIiIiVXBkYXRlcyB0aGUgd29ya2luZyBjb3B5LgogQXBwbGllcyB0
aGUgaW52ZXJzZSBkaWZmIGZvciB0aGUgcHJvdmlkZWQgcmV2aXNpb24uCiBDcmVhdGVzIGFuIGFw
cHJvcHJpYXRlIHJvbGxvdXQgQ2hhbmdlTG9nLCBpbmNsdWRpbmcgYSB0cmFjIGxpbmsgYW5kIGJ1
ZyBsaW5rLgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L2Rvd25sb2FkX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5weQkocmV2aXNpb24gNzM5
MzMpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxv
YWRfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cgogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5
Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5jb21tYW5kdGVz
dCBpbXBvcnQgQ29tbWFuZHNUZXN0CiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuZG93bmxv
YWQgaW1wb3J0ICoKLWZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlv
bnMsIE1vY2tUb29sCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tDaGVj
a291dCwgTW9ja09wdGlvbnMsIE1vY2tUb29sCiAKIAogY2xhc3MgQWJzdHJhY3RSb2xsb3V0UHJl
cENvbW1hbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTUzLDYgKzUzLDE4IEBAIGNsYXNz
IEFic3RyYWN0Um9sbG91dFByZXBDb21tYW5kVGVzdCh1bmkKICAgICAgICAgY29tbWl0X2luZm8g
PSBvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29tbWFuZC5fY29tbWl0X2luZm8sIFsxMjM0
XSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjb21taXRfaW5mbywgbW9ja19jb21taXRfaW5mbykKIAorICAgIGRlZiB0ZXN0X3ByZXBh
cmVfc3RhdGUoc2VsZik6CisgICAgICAgIGNvbW1hbmQgPSBBYnN0cmFjdFJvbGxvdXRQcmVwQ29t
bWFuZCgpCisgICAgICAgIG1vY2tfY29tbWl0X2luZm8gPSBNb2NrQ2hlY2tvdXQoKS5jb21taXRf
aW5mb19mb3JfcmV2aXNpb24oMTIzKQorICAgICAgICBjb21tYW5kLl9jb21taXRfaW5mbyA9IGxh
bWJkYSByZXZpc2lvbjogbW9ja19jb21taXRfaW5mbworCisgICAgICAgIHN0YXRlID0gY29tbWFu
ZC5fcHJlcGFyZV9zdGF0ZShOb25lLCBbIjEyNCAxMjMgMTI1IiwgIlJlYXNvbiJdLCBOb25lKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyMywgc3RhdGVbInJldmlzaW9uIl0pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoWzEyMywgMTI0LCAxMjVdLCBzdGF0ZVsicmV2aXNpb25fbGlzdCJd
KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBjb21tYW5kLl9wcmVw
YXJlX3N0YXRlLCBvcHRpb25zPU5vbmUsIGFyZ3M9WyIxMjUgcjEyMiAgMTIzIiwgIlJlYXNvbiJd
LCB0b29sPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBjb21t
YW5kLl9wcmVwYXJlX3N0YXRlLCBvcHRpb25zPU5vbmUsIGFyZ3M9WyIxMjUgZm9vIDEyMyIsICJS
ZWFzb24iXSwgdG9vbD1Ob25lKQorCiAKIGNsYXNzIERvd25sb2FkQ29tbWFuZHNUZXN0KENvbW1h
bmRzVGVzdCk6CiAgICAgZGVmIF9kZWZhdWx0X29wdGlvbnMoc2VsZik6CkBAIC0xODUsNiArMTk3
LDcgQEAgd2hlcmUgQVRUQUNITUVOVF9JRCBpcyB0aGUgSUQgb2YgdGhpcyBhdAogLS0gRW5kIGNv
bW1lbnQgLS0KICIiIgogICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoQ3JlYXRl
Um9sbG91dCgpLCBbODUyLCAiUmVhc29uIl0sIG9wdGlvbnM9c2VsZi5fZGVmYXVsdF9vcHRpb25z
KCksIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2V4ZWN1dGVfb3V0cHV0cyhDcmVhdGVSb2xsb3V0KCksIFsiODU1IDg1MiA4NTQiLCAiUmVhc29u
Il0sIG9wdGlvbnM9c2VsZi5fZGVmYXVsdF9vcHRpb25zKCksIGV4cGVjdGVkX3N0ZGVycj1leHBl
Y3RlZF9zdGRlcnIpCiAKICAgICBkZWYgdGVzdF9yb2xsb3V0KHNlbGYpOgogICAgICAgICBleHBl
Y3RlZF9zdGRlcnIgPSAiUHJlcGFyaW5nIHJvbGxvdXQgZm9yIGJ1ZyA0Mi5cblVwZGF0aW5nIHdv
cmtpbmcgZGlyZWN0b3J5XG5SdW5uaW5nIHByZXBhcmUtQ2hhbmdlTG9nXG5NT0NLOiB1c2VyLm9w
ZW5fdXJsOiBmaWxlOi8vLi4uXG5CdWlsZGluZyBXZWJLaXRcbkNvbW1pdHRlZCByNDk4MjQ6IDxo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC80OTgyND5cbiIKSW5kZXg6IFdlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0LnB5CShyZXZpc2lvbiA3MzkzMykKKysrIFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2
ZXJ0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MSw0ICs0MSw0IEBAIGNsYXNzIFByZXBhcmVDaGFu
Z2VMb2dGb3JSZXZlcnQoQWJzdHJhY3QKICAgICAgICAgZm9yIGNoYW5nZWxvZ19wYXRoIGluIGNo
YW5nZWxvZ19wYXRoczoKICAgICAgICAgICAgICMgRklYTUU6IFNlZW1zIHdlIHNob3VsZCBwcmVw
YXJlIHRoZSBtZXNzYWdlIG91dHNpZGUgb2YgY2hhbmdlbG9ncy5weSBhbmQgdGhlbiBqdXN0IHBh
c3MgaW4KICAgICAgICAgICAgICMgdGV4dCB0aGF0IHdlIHdhbnQgdG8gdXNlIHRvIHJlcGxhY2Ug
dGhlIHJldmlld2VkIGJ5IGxpbmUuCi0gICAgICAgICAgICBDaGFuZ2VMb2coY2hhbmdlbG9nX3Bh
dGgpLnVwZGF0ZV9mb3JfcmV2ZXJ0KHN0YXRlWyJyZXZpc2lvbiJdLCBzdGF0ZVsicmVhc29uIl0s
IGJ1Z191cmwpCisgICAgICAgICAgICBDaGFuZ2VMb2coY2hhbmdlbG9nX3BhdGgpLnVwZGF0ZV9m
b3JfcmV2ZXJ0KHN0YXRlWyJyZXZpc2lvbl9saXN0Il0sIHN0YXRlWyJyZWFzb24iXSwgYnVnX3Vy
bCkKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9yZXZlcnRy
ZXZpc2lvbi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvcmV2ZXJ0cmV2aXNpb24ucHkJKHJldmlzaW9uIDczOTMzKQorKysgV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3JldmVydHJldmlzaW9uLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw1ICszMSw1IEBAIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5hYnN0cmFj
dHN0ZXAgaW0KIAogY2xhc3MgUmV2ZXJ0UmV2aXNpb24oQWJzdHJhY3RTdGVwKToKICAgICBkZWYg
cnVuKHNlbGYsIHN0YXRlKToKLSAgICAgICAgc2VsZi5fdG9vbC5jaGVja291dCgpLmFwcGx5X3Jl
dmVyc2VfZGlmZihzdGF0ZVsicmV2aXNpb24iXSkKKyAgICAgICAgc2VsZi5fdG9vbC5jaGVja291
dCgpLmFwcGx5X3JldmVyc2VfZGlmZnMoc3RhdGVbInJldmlzaW9uX2xpc3QiXSkKICAgICAgICAg
c2VsZi5kaWRfbW9kaWZ5X2NoZWNrb3V0KHN0YXRlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>