<?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>32487</bug_id>
          
          <creation_ts>2009-12-13 03:29:34 -0800</creation_ts>
          <short_desc>[check-webkit-style] cpp_style.py contains code redundant with check-webkit-style</short_desc>
          <delta_ts>2009-12-16 17:44:34 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cjerdonek</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>171191</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-13 03:29:34 -0800</bug_when>
    <thetext>The file cpp_style.py contains some chunks of code that seem obsolete and superseded by what is now contained in check-webkit-style.

This is a place-holder report for this and some related code clean-up.  Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171193</commentid>
    <comment_count>1</comment_count>
      <attachid>44752</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-13 03:48:53 -0800</bug_when>
    <thetext>Created attachment 44752
Proposed patch

Some of the changes:

- Eliminated obsolete main() and _USAGE from cpp_style.py.
- Moved cpp_style.py&apos;s file documentation to check-webkit-style.
- Added default values to _USAGE string in check-webkit-style.
- Added the default filter values to the --filter= output.
- Made style categories a list rather than a string.
- Moved _WEBKIT_FILTER to be near the other global constants.
- Renamed _DEFAULT_FILTERS to be consistent with --filter and _WEBKIT_FILTER.
- Renamed two &quot;print_&quot; methods to &quot;exit_with_&quot; since they exit.
- Cleaned up other minor issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171220</commentid>
    <comment_count>2</comment_count>
      <attachid>44759</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-13 12:34:38 -0800</bug_when>
    <thetext>Created attachment 44759
Proposed patch 2

Tweaked previous patch:

- Changed double quotes to single quotes in _STYLE_CATEGORIES.
- Also changed global &quot;FILTER&quot; references to &quot;FILTER_RULES&quot;.
  This is because there was confusion in using &quot;filter&quot; to refer 
  both to an individual filter rule (e.g. &quot;+foo&quot;) as well as to
  the filter resulting from a list of such rules (a filter 
  being a list of filters).  Instead I chose to use &quot;filter&quot; for 
  the collective rule and &quot;filter rule&quot; for the individual 
  boolean rules making up a filter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171632</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-14 17:14:04 -0800</bug_when>
    <thetext>So this undoubtably comes from the fact that cpp_style.py is standalone in its original Chromium/Google form.  But I think we should continue to diverge and make improvements, so this is good.  Dave Levin is probably your best reviewer though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171726</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-12-14 22:45:36 -0800</bug_when>
    <thetext>Yeah, I glanced at it earlier, and I didn&apos;t see anything terrible :) but I needed to finish up https://bugs.webkit.org/show_bug.cgi?id=32214 which was involved. I&apos;ll look tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171728</commentid>
    <comment_count>5</comment_count>
      <attachid>44759</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-14 22:50:29 -0800</bug_when>
    <thetext>Comment on attachment 44759
Proposed patch 2

Though I&apos;m not a reviewer, I&apos;d like to put some comments.

&gt; +&quot;&quot;&quot;Does WebKit-lint on c++ files.

&quot;on C/C++ files&quot; would be better.

&gt; -        if file_extension in [&apos;.cpp&apos;, &apos;.c&apos;, &apos;.h&apos;]:
&gt; -            line_numbers = set()
&gt; +        if file_extension not in [&apos;.cpp&apos;, &apos;.c&apos;, &apos;.h&apos;]:
&gt; +            continue
&gt; +
&gt; +        line_numbers = set()

This refactoring is nice in general, but this will conflict with the patch in Bug 32538. Please avoid doing this.

&gt;  def main():
&gt; -    cpp_style.use_webkit_styles()
&gt; +    cpp_style._DEFAULT_FILTER_RULES = cpp_style._WEBKIT_FILTER_RULES
&gt;  
&gt; -    (files, flags) = cpp_style.parse_arguments(sys.argv[1:], [&quot;git-commit=&quot;])
&gt; +    (files, flags) = cpp_style.parse_arguments(sys.argv[1:], [&quot;git-commit=&quot;], True)

I prefer display_help=True to True as the meaning becomes clearer in this way.

&gt; -        sys.stderr.write(&quot;ERROR: It is not possible to check files &quot;
&gt; -                          &quot;and a specific commit at the same time.\n&quot; + cpp_style._USAGE)
&gt; -        sys.exit(1)
&gt; +        cpp_style.exit_with_usage(&apos;It is not possible to check files and a &apos;
&gt; +                                  &apos;specific commit at the same time.&apos;, True)

Same as above. Please consider using display_help=True.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171734</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-14 23:29:59 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 44759 [details])
&gt; Though I&apos;m not a reviewer, I&apos;d like to put some comments.
&gt; 
&gt; &gt; +&quot;&quot;&quot;Does WebKit-lint on c++ files.
&gt; 
&gt; &quot;on C/C++ files&quot; would be better.

Note that I simply moved the existing string that was in cpp_style.py to check-webkit-style.  I can change this though.

&gt; &gt;  def main():
&gt; &gt; -    cpp_style.use_webkit_styles()
&gt; &gt; +    cpp_style._DEFAULT_FILTER_RULES = cpp_style._WEBKIT_FILTER_RULES
&gt; &gt;  
&gt; &gt; -    (files, flags) = cpp_style.parse_arguments(sys.argv[1:], [&quot;git-commit=&quot;])
&gt; &gt; +    (files, flags) = cpp_style.parse_arguments(sys.argv[1:], [&quot;git-commit=&quot;], True)
&gt; 
&gt; I prefer display_help=True to True as the meaning becomes clearer in this way.

Note that this is only meant to be temporary.  I chose display_help=false for now because there are many calls to parse_arguments in the test_parse_arguments unit test that require the display to be suppressed.  I was planning to refactor parse_arguments and its unit tests in my next patch for other reasons.  That patch will eliminate the need for a display_help parameter entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172079</commentid>
    <comment_count>7</comment_count>
      <attachid>44759</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-12-15 15:57:05 -0800</bug_when>
    <thetext>Comment on attachment 44759
Proposed patch 2

Just a few things to consider addressing below. Thanks!

&gt; Index: ChangeLog
&gt; +2009-12-13  Chris Jerdonek  &lt;chris.jerdonek@gmail.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Removed obsolete code in cpp_style.py and other clean-up.
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=32487
&gt; +
&gt; +        Eliminated obsolete main() and _USAGE code from cpp_style.py.
&gt; +        Added default flag values to check-webkit-style&apos;s --help output.
&gt; +        Other minor, related code clean-ups.
&gt; +
&gt; +        * Scripts/check-webkit-style:
&gt; +        * Scripts/modules/cpp_style.py:
&gt; +        * Scripts/modules/cpp_style_unittest.py:

Just fyi, per file comments are more desirable than the overall summary comment.

&gt; Index: Scripts/check-webkit-style
&gt; +      The output format, which can be one of--

s/can/may/ and no --


&gt;  
&gt;  def process_patch(patch_string):
&gt; @@ -100,32 +125,34 @@ def process_patch(patch_string):
&gt;      for filename, diff in patch.files.iteritems():
&gt;          file_extension = os.path.splitext(filename)[1]
&gt;  
&gt; -        if file_extension in [&apos;.cpp&apos;, &apos;.c&apos;, &apos;.h&apos;]:
&gt; -            line_numbers = set()
&gt; +        if file_extension not in [&apos;.cpp&apos;, &apos;.c&apos;, &apos;.h&apos;]:
&gt; +            continue
&gt; +
&gt; +        line_numbers = set()
&gt;  
&gt; -            def error_for_patch(filename, line_number, category, confidence, message):
&gt; -                &quot;&quot;&quot;Wrapper function of cpp_style.error for patches.
&gt; +        def error_for_patch(filename, line_number, category, confidence, message):
&gt; +            &quot;&quot;&quot;Wrapper function of cpp_style.error for patches.
&gt;  
&gt; -                This function outputs errors only if the line number
&gt; -                corresponds to lines which are modified or added.
&gt; -                &quot;&quot;&quot;
&gt; -                if not line_numbers:
&gt; -                    for line in diff.lines:
&gt; -                        # When deleted line is not set, it means that
&gt; -                        # the line is newly added.
&gt; -                        if not line[0]:
&gt; -                            line_numbers.add(line[1])
&gt; +            This function outputs errors only if the line number
&gt; +            corresponds to lines which are modified or added.
&gt; +            &quot;&quot;&quot;
&gt; +            if not line_numbers:
&gt; +                for line in diff.lines:
&gt; +                    # When deleted line is not set, it means that
&gt; +                    # the line is newly added.
&gt; +                    if not line[0]:
&gt; +                        line_numbers.add(line[1])
&gt;  
&gt; -                if line_number in line_numbers:
&gt; -                    cpp_style.error(filename, line_number, category, confidence, message)
&gt; +            if line_number in line_numbers:
&gt; +                cpp_style.error(filename, line_number, category, confidence, message)
&gt;  
&gt; -            cpp_style.process_file(filename, error=error_for_patch)
&gt; +        cpp_style.process_file(filename, error=error_for_patch)

I don&apos;t see how this part of the change has to do with your bug &quot;cpp_style.py contains code redundant with check-webkit-style&quot;

Please do it separately (and then the changelog will indicate what you are trying to accomplish here .. at first glance, it looks like it changes the logic).



&gt; +    (files, flags) = cpp_style.parse_arguments(sys.argv[1:], [&quot;git-commit=&quot;], True)

It would be good to specify a parameter name for the True (even if this parameter will go away after a patch later).


&gt; +        cpp_style.exit_with_usage(&apos;It is not possible to check files and a &apos;
&gt; +                                  &apos;specific commit at the same time.&apos;, True)

It would be nice to specify the parameter name for the True here.


&gt; Index: Scripts/modules/cpp_style_unittest.py

&gt; -    # 
&gt; +    #
In general, please don&apos;t do end of line whitespace clean up. It isn&apos;t a webkit style thing and it makes big code reviews even bigger.


&gt; -    # 
&gt; +    #

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172126</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-15 17:51:33 -0800</bug_when>
    <thetext>(In reply to comment #6)

&gt; &gt; I prefer display_help=True to True as the meaning becomes clearer in this way.
&gt; 
&gt; Note that this is only meant to be temporary.  I chose display_help=false for

Shinichiro, I misunderstood your comment on this before so you can disregard my response to it.  I thought you meant that you preferred the default values for these functions to be display_help=True.  But now I see you meant the same as what Dave suggested -- to call with the keyword syntax.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172144</commentid>
    <comment_count>9</comment_count>
      <attachid>44935</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-15 19:13:18 -0800</bug_when>
    <thetext>Created attachment 44935
Proposed patch 3

- Incorporated all of Dave and Shinichiro&apos;s comments.  This includes
  removing the addition of the guard clause to process_patch.
- Also added a code comment explaining the decision to use the &quot;filter
  rule&quot; terminology rather than &quot;filter&quot; for an individual boolean 
  filter item.

Thanks, guys, for taking the time to review this larger patch so quickly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172161</commentid>
    <comment_count>10</comment_count>
      <attachid>44935</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-15 21:55:36 -0800</bug_when>
    <thetext>Comment on attachment 44935
Proposed patch 3

Rejecting patch 44935 from commit-queue.

Failed to run &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, &apos;--reviewer&apos;, &apos;David Levin&apos;, &apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
tch.
9 out of 9 hunks ignored
can&apos;t find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|Index: Scripts/modules/cpp_style_unittest.py
|===================================================================
|--- Scripts/modules/cpp_style_unittest.py	(revision 52066)
|+++ Scripts/modules/cpp_style_unittest.py	(working copy)
--------------------------
No file to patch.  Skipping patch.
7 out of 7 hunks ignored

Full output: http://webkit-commit-queue.appspot.com/results/128406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172167</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-15 22:34:19 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; 
&gt; Failed to run
&gt; &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;,
&gt; &apos;--reviewer&apos;, &apos;David Levin&apos;, &apos;--force&apos;]&quot; exit_code: 1
&gt; Last 500 characters of output:
&gt; tch.
&gt; 9 out of 9 hunks ignored
&gt; can&apos;t find file to patch at input line 5
&gt; Perhaps you used the wrong -p or --strip option?
&gt; The text leading up to this was:
&gt; --------------------------
&gt; |Index: Scripts/modules/cpp_style_unittest.py
&gt; |===================================================================
&gt; |--- Scripts/modules/cpp_style_unittest.py    (revision 52066)
&gt; |+++ Scripts/modules/cpp_style_unittest.py    (working copy)
&gt; --------------------------

It looks like this failed because the file paths are missing the WebKitTools prefix.  Did I do something wrong?

For this change I only checked out the WebKitTools folder, using a command like--

svn checkout http://svn.webkit.org/repository/webkit/trunk/WebKitTools Tools1

(I also renamed Tools1 to something else after that.)  I ran svn-create-patch from within that folder to create the patch.  Let me know the best way to correct this.  I assume there is a convenient way to land patches that doesn&apos;t require checking out the entire tree again?  (Generally, I would not mind receiving advice on how to best manage working on multiple, possibly overlapping changes at once.)  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172185</commentid>
    <comment_count>12</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-12-15 23:55:24 -0800</bug_when>
    <thetext>I landed this patch manually:
http://trac.webkit.org/changeset/52189</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172598</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-16 17:44:34 -0800</bug_when>
    <thetext>The commit-queue only works with patches which are made from the root directory.  Our tools all will do that automatically for you if you have a full checkout.  In general I would say that partial checkouts are not a supported development environment for webkit.org</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44752</attachid>
            <date>2009-12-13 03:48:53 -0800</date>
            <delta_ts>2009-12-13 12:34:38 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch1.txt</filename>
            <type>text/plain</type>
            <size>29690</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDUyMDY2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMTIt
MTMgIENocmlzIEplcmRvbmVrICA8Y2hyaXMuamVyZG9uZWtAZ21haWwuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgb2Jzb2xldGUg
Y29kZSBpbiBjcHBfc3R5bGUucHkgYW5kIG90aGVyIGNsZWFuLXVwLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjQ4NworCisgICAgICAgIEVsaW1p
bmF0ZWQgb2Jzb2xldGUgbWFpbigpIGFuZCBfVVNBR0UgY29kZSBmcm9tIGNwcF9zdHlsZS5weS4K
KyAgICAgICAgQWRkZWQgZGVmYXVsdCBmbGFnIHZhbHVlcyB0byBjaGVjay13ZWJraXQtc3R5bGUn
cyAtLWhlbHAgb3V0cHV0LgorICAgICAgICBPdGhlciBtaW5vciwgcmVsYXRlZCBjb2RlIGNsZWFu
LXVwcy4KKworICAgICAgICAqIFNjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlOgorICAgICAgICAq
IFNjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGUucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVz
L2NwcF9zdHlsZV91bml0dGVzdC5weToKKwogMjAwOS0xMi0xMiAgTWFjaWVqIFN0YWNob3dpYWsg
IDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRl
eDogU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU2NyaXB0cy9jaGVj
ay13ZWJraXQtc3R5bGUJKHJldmlzaW9uIDUyMDY2KQorKysgU2NyaXB0cy9jaGVjay13ZWJraXQt
c3R5bGUJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDE4IEBACiAjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCi0iIiJTY3JpcHQgdG8gcnVuIHRoZSBsaW50ZXIgZm9yIHNvdXJjZSBj
b2RlIG9mIFdlYktpdC4iIiIKKyIiIkRvZXMgV2ViS2l0LWxpbnQgb24gYysrIGZpbGVzLgorCitU
aGUgZ29hbCBvZiB0aGlzIHNjcmlwdCBpcyB0byBpZGVudGlmeSBwbGFjZXMgaW4gdGhlIGNvZGUg
dGhhdCAqbWF5KgorYmUgaW4gbm9uLWNvbXBsaWFuY2Ugd2l0aCBXZWJLaXQgc3R5bGUuICBJdCBk
b2VzIG5vdCBhdHRlbXB0IHRvIGZpeAordXAgdGhlc2UgcHJvYmxlbXMgLS0gdGhlIHBvaW50IGlz
IHRvIGVkdWNhdGUuICBJdCBkb2VzIGFsc28gbm90CithdHRlbXB0IHRvIGZpbmQgYWxsIHByb2Js
ZW1zLCBvciB0byBlbnN1cmUgdGhhdCBldmVyeXRoaW5nIGl0IGRvZXMKK2ZpbmQgaXMgbGVnaXRp
bWF0ZWx5IGEgcHJvYmxlbS4KKworSW4gcGFydGljdWxhciwgd2UgY2FuIGdldCB2ZXJ5IGNvbmZ1
c2VkIGJ5IC8qIGFuZCAvLyBpbnNpZGUgc3RyaW5ncyEKK1dlIGRvIGEgc21hbGwgaGFjaywgd2hp
Y2ggaXMgdG8gaWdub3JlIC8vJ3Mgd2l0aCAiJ3MgYWZ0ZXIgdGhlbSBvbiB0aGUKK3NhbWUgbGlu
ZSwgYnV0IGl0IGlzIGZhciBmcm9tIHBlcmZlY3QgKGluIGVpdGhlciBkaXJlY3Rpb24pLgorIiIi
CiAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBvcwpAQCAtNDAsMTIgKzUxLDExIEBAIGZyb20gbW9k
dWxlcy5kaWZmX3BhcnNlciBpbXBvcnQgRGlmZlBhcnMKIGZyb20gbW9kdWxlcy5zY20gaW1wb3J0
IGRldGVjdF9zY21fc3lzdGVtCiAKIAotIyBPdmVycmlkZSB0aGUgdXNhZ2Ugb2YgdGhlIGxpbnQg
dG9vbC4KIGNwcF9zdHlsZS5fVVNBR0UgPSAiIiIKIFN5bnRheDogJShwcm9ncmFtX25hbWUpcyBb
LS12ZXJib3NlPSNdIFstLWdpdC1jb21taXQ9PFNpbmdsZUNvbW1pdD5dIFstLW91dHB1dD12czdd
CiAgICAgICAgIFstLWZpbHRlcj0teCwreSwuLi5dIFtmaWxlXSAuLi4KIAotICBUaGUgc3R5bGUg
Z3VpZGVsaW5lcyB0aGlzIHRyaWVzIHRvIGZvbGxvdyBhcmUgdGhvc2UgaW4KKyAgVGhlIHN0eWxl
IGd1aWRlbGluZXMgdGhpcyB0cmllcyB0byBmb2xsb3cgYXJlIGhlcmU6CiAgICAgaHR0cDovL3dl
YmtpdC5vcmcvY29kaW5nL2NvZGluZy1zdHlsZS5odG1sCiAKICAgRXZlcnkgcHJvYmxlbSBpcyBn
aXZlbiBhIGNvbmZpZGVuY2Ugc2NvcmUgZnJvbSAxLTUsIHdpdGggNSBtZWFuaW5nIHdlIGFyZQpA
QCAtNTcsMzcgKzY3LDQ2IEBAIFN5bnRheDogJShwcm9ncmFtX25hbWUpcyBbLS12ZXJib3NlPSNd
IFsKIAogICBMaW50ZWQgZXh0ZW5zaW9ucyBhcmUgLmNwcCwgLmMgYW5kIC5oLiAgT3RoZXIgZmls
ZSB0eXBlcyB3aWxsIGJlIGlnbm9yZWQuCiAKLSAgVGhlIGZpbGUgcGFyYW1ldGVyIGlzIG9wdGlv
bmFsIGFuZCBtdWx0aXBsZSBmaWxlcyB0byBzY2FuIGJlIHBhc3NlZCBpbi4KLSAgTGVhdmluZyBv
dXQgdGhlIGZpbGUgcGFyYW1ldGVyIHdpbGwgYXBwbHkgdGhlIGNoZWNrIHRvIHRoZSBmaWxlcyBj
aGFuZ2VkCi0gIGFjY29yZGluZyB0byB0aGUgc2NtIHN5c3RlbS4KKyAgVGhlIGZpbGUgcGFyYW1l
dGVyIGlzIG9wdGlvbmFsIGFuZCBhY2NlcHRzIG11bHRpcGxlIGZpbGVzLiAgTGVhdmluZworICBv
dXQgdGhlIGZpbGUgcGFyYW1ldGVyIGFwcGxpZXMgdGhlIGNoZWNrIHRvIHRoZSBmaWxlcyBjaGFu
Z2VkIGFjY29yZGluZworICB0byB0aGUgc2NtIHN5c3RlbS4KIAogICBGbGFnczoKIAogICAgIHZl
cmJvc2U9IwotICAgICAgU3BlY2lmeSBhIG51bWJlciAwLTUgdG8gcmVzdHJpY3QgZXJyb3JzIHRv
IGNlcnRhaW4gdmVyYm9zaXR5IGxldmVscy4KKyAgICAgIEEgbnVtYmVyIDAtNSB0byByZXN0cmlj
dCBlcnJvcnMgdG8gY2VydGFpbiB2ZXJib3NpdHkgbGV2ZWxzLgorICAgICAgRGVmYXVsdHMgdG8g
JShkZWZhdWx0X3ZlcmJvc2l0eSlzLgogCiAgICAgZ2l0LWNvbW1pdD08U2luZ2xlQ29tbWl0Pgog
ICAgICAgQ2hlY2tzIHRoZSBzdHlsZSBvZiBldmVyeXRoaW5nIGZyb20gdGhlIGdpdmVuIGNvbW1p
dCB0byB0aGUgbG9jYWwgdHJlZS4KIAogICAgIG91dHB1dD12czcKLSAgICAgIEJ5IGRlZmF1bHQs
IHRoZSBvdXRwdXQgaXMgZm9ybWF0dGVkIHRvIGVhc2UgZW1hY3MgcGFyc2luZy4gIFZpc3VhbCBT
dHVkaW8KLSAgICAgIGNvbXBhdGlibGUgb3V0cHV0ICh2czcpIG1heSBhbHNvIGJlIHVzZWQuICBP
dGhlciBmb3JtYXRzIGFyZSB1bnN1cHBvcnRlZC4KKyAgICAgIFRoZSBvdXRwdXQgZm9ybWF0LCB3
aGljaCBjYW4gYmUgb25lIG9mLS0KKyAgICAgICAgZW1hY3MgOiB0byBlYXNlIGVtYWNzIHBhcnNp
bmcKKyAgICAgICAgdnM3ICAgOiBjb21wYXRpYmxlIHdpdGggVmlzdWFsIFN0dWRpbworICAgICAg
RGVmYXVsdHMgdG8gIiUoZGVmYXVsdF9vdXRwdXRfZm9ybWF0KXMiLiBPdGhlciBmb3JtYXRzIGFy
ZSB1bnN1cHBvcnRlZC4KIAogICAgIGZpbHRlcj0teCwreSwuLi4KLSAgICAgIFNwZWNpZnkgYSBj
b21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjYXRlZ29yeS1maWx0ZXJzIHRvIGFwcGx5OiBvbmx5Ci0g
ICAgICBlcnJvciBtZXNzYWdlcyB3aG9zZSBjYXRlZ29yeSBuYW1lcyBwYXNzIHRoZSBmaWx0ZXJz
IHdpbGwgYmUgcHJpbnRlZC4KLSAgICAgIChDYXRlZ29yeSBuYW1lcyBhcmUgcHJpbnRlZCB3aXRo
IHRoZSBtZXNzYWdlIGFuZCBsb29rIGxpa2UKLSAgICAgICJbd2hpdGVzcGFjZS9pbmRlbnRdIi4p
ICBGaWx0ZXJzIGFyZSBldmFsdWF0ZWQgbGVmdCB0byByaWdodC4KLSAgICAgICItRk9PIiBhbmQg
IkZPTyIgbWVhbnMgImRvIG5vdCBwcmludCBjYXRlZ29yaWVzIHRoYXQgc3RhcnQgd2l0aCBGT08i
LgorICAgICAgQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBmaWx0ZXIgaXRlbXMgdXNlZCB0byBm
aWx0ZXIgY2F0ZWdvcmllcy4KKyAgICAgIENhdGVnb3J5IG5hbWVzIGFwcGVhciBpbiBicmFja2V0
cywgZm9yIGV4YW1wbGUgW3doaXRlc3BhY2UvaW5kZW50XS4KKyAgICAgIE9ubHkgZXJyb3JzIHdo
b3NlIGNhdGVnb3J5IHBhc3NlcyB0aGUgZmlsdGVyIHdpbGwgYmUgcHJpbnRlZC4KKyAgICAgIEFs
bCBkZWZhdWx0IHdlYmtpdCBjYXRlZ29yaWVzIHN0YXJ0IG91dCBwYXNzaW5nLCBhbmQgdGhlbiBm
aWx0ZXIKKyAgICAgIGl0ZW1zIGFyZSBldmFsdWF0ZWQgbGVmdCB0byByaWdodC4gIExhdGVyIGl0
ZW1zIHRha2UgcHJlY2VkZW5jZS4KKyAgICAgICItRk9PIiBtZWFucyAiZG8gbm90IHByaW50IGNh
dGVnb3JpZXMgdGhhdCBzdGFydCB3aXRoIEZPTyIuCiAgICAgICAiK0ZPTyIgbWVhbnMgImRvIHBy
aW50IGNhdGVnb3JpZXMgdGhhdCBzdGFydCB3aXRoIEZPTyIuCiAKICAgICAgIEV4YW1wbGVzOiAt
LWZpbHRlcj0td2hpdGVzcGFjZSwrd2hpdGVzcGFjZS9icmFjZXMKLSAgICAgICAgICAgICAgICAt
LWZpbHRlcj13aGl0ZXNwYWNlLHJ1bnRpbWUvcHJpbnRmLCtydW50aW1lL3ByaW50Zl9mb3JtYXQK
KyAgICAgICAgICAgICAgICAtLWZpbHRlcj0td2hpdGVzcGFjZSwtcnVudGltZS9wcmludGYsK3J1
bnRpbWUvcHJpbnRmX2Zvcm1hdAogICAgICAgICAgICAgICAgIC0tZmlsdGVyPS0sK2J1aWxkL2lu
Y2x1ZGVfd2hhdF95b3VfdXNlCiAKLSAgICAgIFRvIHNlZSBhIGxpc3Qgb2YgYWxsIHRoZSBjYXRl
Z29yaWVzIHVzZWQgaW4gJShwcm9ncmFtX25hbWUpcywgcGFzcyBubyBhcmc6CisgICAgICBUbyBz
ZWUgYSBsaXN0IG9mIGFsbCBjYXRlZ29yaWVzIGF2YWlsYWJsZSB0byAlKHByb2dyYW1fbmFtZSlz
LCBhbG9uZworICAgICAgd2l0aCB3aGljaCBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCBwYXNzIGFu
IGVtcHR5IGZpbHRlciBhcyBmb2xsb3dzOgogICAgICAgICAgLS1maWx0ZXI9Ci0iIiIgJSB7J3By
b2dyYW1fbmFtZSc6IG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pfQorIiIiICUgeworICAg
ICdwcm9ncmFtX25hbWUnOiBvcy5wYXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKSwKKyAgICAnZGVm
YXVsdF92ZXJib3NpdHknOiBjcHBfc3R5bGUuX0RFRkFVTFRfVkVSQk9TSVRZLAorICAgICdkZWZh
dWx0X291dHB1dF9mb3JtYXQnOiBjcHBfc3R5bGUuX0RFRkFVTFRfT1VUUFVUX0ZPUk1BVAorICAg
IH0KIAogCiBkZWYgcHJvY2Vzc19wYXRjaChwYXRjaF9zdHJpbmcpOgpAQCAtMTAwLDMwICsxMTks
MzIgQEAgZGVmIHByb2Nlc3NfcGF0Y2gocGF0Y2hfc3RyaW5nKToKICAgICBmb3IgZmlsZW5hbWUs
IGRpZmYgaW4gcGF0Y2guZmlsZXMuaXRlcml0ZW1zKCk6CiAgICAgICAgIGZpbGVfZXh0ZW5zaW9u
ID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMV0KIAotICAgICAgICBpZiBmaWxlX2V4dGVu
c2lvbiBpbiBbJy5jcHAnLCAnLmMnLCAnLmgnXToKLSAgICAgICAgICAgIGxpbmVfbnVtYmVycyA9
IHNldCgpCisgICAgICAgIGlmIGZpbGVfZXh0ZW5zaW9uIG5vdCBpbiBbJy5jcHAnLCAnLmMnLCAn
LmgnXToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgbGluZV9udW1iZXJzID0gc2V0
KCkKIAotICAgICAgICAgICAgZGVmIGVycm9yX2Zvcl9wYXRjaChmaWxlbmFtZSwgbGluZV9udW1i
ZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKToKLSAgICAgICAgICAgICAgICAiIiJX
cmFwcGVyIGZ1bmN0aW9uIG9mIGNwcF9zdHlsZS5lcnJvciBmb3IgcGF0Y2hlcy4KKyAgICAgICAg
ZGVmIGVycm9yX2Zvcl9wYXRjaChmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25m
aWRlbmNlLCBtZXNzYWdlKToKKyAgICAgICAgICAgICIiIldyYXBwZXIgZnVuY3Rpb24gb2YgY3Bw
X3N0eWxlLmVycm9yIGZvciBwYXRjaGVzLgogCi0gICAgICAgICAgICAgICAgVGhpcyBmdW5jdGlv
biBvdXRwdXRzIGVycm9ycyBvbmx5IGlmIHRoZSBsaW5lIG51bWJlcgotICAgICAgICAgICAgICAg
IGNvcnJlc3BvbmRzIHRvIGxpbmVzIHdoaWNoIGFyZSBtb2RpZmllZCBvciBhZGRlZC4KLSAgICAg
ICAgICAgICAgICAiIiIKLSAgICAgICAgICAgICAgICBpZiBub3QgbGluZV9udW1iZXJzOgotICAg
ICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBkaWZmLmxpbmVzOgotICAgICAgICAgICAgICAg
ICAgICAgICAgIyBXaGVuIGRlbGV0ZWQgbGluZSBpcyBub3Qgc2V0LCBpdCBtZWFucyB0aGF0Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBsaW5lIGlzIG5ld2x5IGFkZGVkLgotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgbm90IGxpbmVbMF06Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGluZV9udW1iZXJzLmFkZChsaW5lWzFdKQorICAgICAgICAgICAgVGhpcyBmdW5jdGlv
biBvdXRwdXRzIGVycm9ycyBvbmx5IGlmIHRoZSBsaW5lIG51bWJlcgorICAgICAgICAgICAgY29y
cmVzcG9uZHMgdG8gbGluZXMgd2hpY2ggYXJlIG1vZGlmaWVkIG9yIGFkZGVkLgorICAgICAgICAg
ICAgIiIiCisgICAgICAgICAgICBpZiBub3QgbGluZV9udW1iZXJzOgorICAgICAgICAgICAgICAg
IGZvciBsaW5lIGluIGRpZmYubGluZXM6CisgICAgICAgICAgICAgICAgICAgICMgV2hlbiBkZWxl
dGVkIGxpbmUgaXMgbm90IHNldCwgaXQgbWVhbnMgdGhhdAorICAgICAgICAgICAgICAgICAgICAj
IHRoZSBsaW5lIGlzIG5ld2x5IGFkZGVkLgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgbGlu
ZVswXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVycy5hZGQobGluZVsxXSkK
IAotICAgICAgICAgICAgICAgIGlmIGxpbmVfbnVtYmVyIGluIGxpbmVfbnVtYmVyczoKLSAgICAg
ICAgICAgICAgICAgICAgY3BwX3N0eWxlLmVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgY2F0
ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpCisgICAgICAgICAgICBpZiBsaW5lX251bWJlciBp
biBsaW5lX251bWJlcnM6CisgICAgICAgICAgICAgICAgY3BwX3N0eWxlLmVycm9yKGZpbGVuYW1l
LCBsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpCiAKLSAgICAgICAg
ICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGUoZmlsZW5hbWUsIGVycm9yPWVycm9yX2Zvcl9wYXRj
aCkKKyAgICAgICAgY3BwX3N0eWxlLnByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3I9ZXJyb3Jf
Zm9yX3BhdGNoKQogCiAKIGRlZiBtYWluKCk6Ci0gICAgY3BwX3N0eWxlLnVzZV93ZWJraXRfc3R5
bGVzKCkKKyAgICBjcHBfc3R5bGUuX0RFRkFVTFRfRklMVEVSID0gY3BwX3N0eWxlLl9XRUJLSVRf
RklMVEVSCiAKICAgICAoZmlsZXMsIGZsYWdzKSA9IGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMo
c3lzLmFyZ3ZbMTpdLCBbImdpdC1jb21taXQ9Il0pCiAKQEAgLTEzNSw5ICsxNTYsOCBAQCBkZWYg
bWFpbigpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBs
YWNlJykKIAogICAgIGlmIGZpbGVzIGFuZCAiLS1naXQtY29tbWl0IiBpbiBmbGFnczoKLSAgICAg
ICAgc3lzLnN0ZGVyci53cml0ZSgiRVJST1I6IEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjaGVjayBm
aWxlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgYSBzcGVjaWZpYyBjb21taXQg
YXQgdGhlIHNhbWUgdGltZS5cbiIgKyBjcHBfc3R5bGUuX1VTQUdFKQotICAgICAgICBzeXMuZXhp
dCgxKQorICAgICAgICBjcHBfc3R5bGUuZXhpdF93aXRoX3VzYWdlKCdJdCBpcyBub3QgcG9zc2li
bGUgdG8gY2hlY2sgZmlsZXMgYW5kIGEgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdzcGVjaWZpYyBjb21taXQgYXQgdGhlIHNhbWUgdGltZS4nKQogCiAgICAgaWYgZmlsZXM6
CiAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKQEAgLTE1NCw5ICsxNzQsMTAgQEAgZGVm
IG1haW4oKToKICAgICAgICAgICAgICAgICAjIHN0YXJ0IHRoZXJlIChzZWUgZ2l0IGRpZmYgLS1o
ZWxwIGZvciBpbmZvcm1hdGlvbiBhYm91dCBob3cgLi4uIHVzdWFsbHkgd29ya3MpLgogICAgICAg
ICAgICAgICAgIGNvbW1pdCA9IGNvbW1pdFs6Y29tbWl0LmZpbmQoJy4uJyldCiAgICAgICAgICAg
ICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgIldhcm5pbmc6IFJhbmdlcyBhcmUgbm90IHN1cHBv
cnRlZCBmb3IgLS1naXQtY29tbWl0LiBDaGVja2luZyBhbGwgY2hhbmdlcyBzaW5jZSAlcy5cbiIg
JSBjb21taXQKLSAgICAgICAgICAgIHByb2Nlc3NfcGF0Y2goc2NtLmNyZWF0ZV9wYXRjaF9zaW5j
ZV9sb2NhbF9jb21taXQoY29tbWl0KSkKKyAgICAgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9w
YXRjaF9zaW5jZV9sb2NhbF9jb21taXQoY29tbWl0KQogICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgcHJvY2Vzc19wYXRjaChzY20uY3JlYXRlX3BhdGNoKCkpCisgICAgICAgICAgICBwYXRjaCA9
IHNjbS5jcmVhdGVfcGF0Y2goKQorICAgICAgICBwcm9jZXNzX3BhdGNoKHBhdGNoKQogCiAgICAg
c3lzLnN0ZGVyci53cml0ZSgnVG90YWwgZXJyb3JzIGZvdW5kOiAlZFxuJyAlIGNwcF9zdHlsZS5l
cnJvcl9jb3VudCgpKQogICAgIHN5cy5leGl0KGNwcF9zdHlsZS5lcnJvcl9jb3VudCgpID4gMCkK
SW5kZXg6IFNjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGUucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU2NyaXB0
cy9tb2R1bGVzL2NwcF9zdHlsZS5weQkocmV2aXNpb24gNTIwNjYpCisrKyBTY3JpcHRzL21vZHVs
ZXMvY3BwX3N0eWxlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxOCArMzQsNyBAQAogIyBUaGlz
IGlzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIG9mIEdvb2dsZSdzIGNwcGxpbnQuIFRoZSBvcmlnaW5h
bCBjb2RlIGlzCiAjIGh0dHA6Ly9nb29nbGUtc3R5bGVndWlkZS5nb29nbGVjb2RlLmNvbS9zdm4v
dHJ1bmsvY3BwbGludC9jcHBsaW50LnB5CiAKLSIiIkRvZXMgV2ViS2l0LWxpbnQgb24gYysrIGZp
bGVzLgotCi1UaGUgZ29hbCBvZiB0aGlzIHNjcmlwdCBpcyB0byBpZGVudGlmeSBwbGFjZXMgaW4g
dGhlIGNvZGUgdGhhdCAqbWF5KgotYmUgaW4gbm9uLWNvbXBsaWFuY2Ugd2l0aCBXZWJLaXQgc3R5
bGUuICBJdCBkb2VzIG5vdCBhdHRlbXB0IHRvIGZpeAotdXAgdGhlc2UgcHJvYmxlbXMgLS0gdGhl
IHBvaW50IGlzIHRvIGVkdWNhdGUuICBJdCBkb2VzIGFsc28gbm90Ci1hdHRlbXB0IHRvIGZpbmQg
YWxsIHByb2JsZW1zLCBvciB0byBlbnN1cmUgdGhhdCBldmVyeXRoaW5nIGl0IGRvZXMKLWZpbmQg
aXMgbGVnaXRpbWF0ZWx5IGEgcHJvYmxlbS4KLQotSW4gcGFydGljdWxhciwgd2UgY2FuIGdldCB2
ZXJ5IGNvbmZ1c2VkIGJ5IC8qIGFuZCAvLyBpbnNpZGUgc3RyaW5ncyEKLVdlIGRvIGEgc21hbGwg
aGFjaywgd2hpY2ggaXMgdG8gaWdub3JlIC8vJ3Mgd2l0aCAiJ3MgYWZ0ZXIgdGhlbSBvbiB0aGUK
LXNhbWUgbGluZSwgYnV0IGl0IGlzIGZhciBmcm9tIHBlcmZlY3QgKGluIGVpdGhlciBkaXJlY3Rp
b24pLgotIiIiCisiIiJTdXBwb3J0IGZvciBjaGVjay13ZWJraXQtc3R5bGUuIiIiCiAKIGltcG9y
dCBjb2RlY3MKIGltcG9ydCBnZXRvcHQKQEAgLTU5LDEyMSArNDgsMTE5IEBAIGltcG9ydCBzeXMK
IGltcG9ydCB1bmljb2RlZGF0YQogCiAKLV9VU0FHRSA9ICIiIgotU3ludGF4OiAlKHByb2dyYW1f
bmFtZSlzIFstLXZlcmJvc2U9I10gWy0tb3V0cHV0PXZzN10gWy0tZmlsdGVyPS14LCt5LC4uLl0K
LSAgICAgICAgPGZpbGU+IFtmaWxlXSAuLi4KLQotICBUaGUgc3R5bGUgZ3VpZGVsaW5lcyB0aGlz
IHRyaWVzIHRvIGZvbGxvdyBhcmUgdGhvc2UgaW4KLSAgICBodHRwOi8vd2Via2l0Lm9yZy9jb2Rp
bmcvY29kaW5nLXN0eWxlLmh0bWwKLQotICBFdmVyeSBwcm9ibGVtIGlzIGdpdmVuIGEgY29uZmlk
ZW5jZSBzY29yZSBmcm9tIDEtNSwgd2l0aCA1IG1lYW5pbmcgd2UgYXJlCi0gIGNlcnRhaW4gb2Yg
dGhlIHByb2JsZW0sIGFuZCAxIG1lYW5pbmcgaXQgY291bGQgYmUgYSBsZWdpdGltYXRlIGNvbnN0
cnVjdC4KLSAgVGhpcyB3aWxsIG1pc3Mgc29tZSBlcnJvcnMsIGFuZCBpcyBub3QgYSBzdWJzdGl0
dXRlIGZvciBhIGNvZGUgcmV2aWV3LgotCi0gIFRvIHByZXZlbnQgc3BlY2lmaWMgbGluZXMgZnJv
bSBiZWluZyBsaW50ZWQsIGFkZCBhICcvLyBOT0xJTlQnIGNvbW1lbnQgdG8gdGhlCi0gIGVuZCBv
ZiB0aGUgbGluZS4KLQotICBUaGUgZmlsZXMgcGFzc2VkIGluIHdpbGwgYmUgbGludGVkOyBhdCBs
ZWFzdCBvbmUgZmlsZSBtdXN0IGJlIHByb3ZpZGVkLgotICBMaW50ZWQgZXh0ZW5zaW9ucyBhcmUg
LmNwcCwgLmMgYW5kIC5oLiAgT3RoZXIgZmlsZSB0eXBlcyB3aWxsIGJlIGlnbm9yZWQuCi0KLSAg
RmxhZ3M6Ci0KLSAgICBvdXRwdXQ9dnM3Ci0gICAgICBCeSBkZWZhdWx0LCB0aGUgb3V0cHV0IGlz
IGZvcm1hdHRlZCB0byBlYXNlIGVtYWNzIHBhcnNpbmcuICBWaXN1YWwgU3R1ZGlvCi0gICAgICBj
b21wYXRpYmxlIG91dHB1dCAodnM3KSBtYXkgYWxzbyBiZSB1c2VkLiAgT3RoZXIgZm9ybWF0cyBh
cmUgdW5zdXBwb3J0ZWQuCisjIFRoaXMgaXMgc2V0IGJ5IGNoZWNrLXdlYmtpdC1zdHlsZS4KK19V
U0FHRSA9ICcnCiAKLSAgICB2ZXJib3NlPSMKLSAgICAgIFNwZWNpZnkgYSBudW1iZXIgMC01IHRv
IHJlc3RyaWN0IGVycm9ycyB0byBjZXJ0YWluIHZlcmJvc2l0eSBsZXZlbHMuCiAKLSAgICBmaWx0
ZXI9LXgsK3ksLi4uCi0gICAgICBTcGVjaWZ5IGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY2F0
ZWdvcnktZmlsdGVycyB0byBhcHBseTogb25seQotICAgICAgZXJyb3IgbWVzc2FnZXMgd2hvc2Ug
Y2F0ZWdvcnkgbmFtZXMgcGFzcyB0aGUgZmlsdGVycyB3aWxsIGJlIHByaW50ZWQuCi0gICAgICAo
Q2F0ZWdvcnkgbmFtZXMgYXJlIHByaW50ZWQgd2l0aCB0aGUgbWVzc2FnZSBhbmQgbG9vayBsaWtl
Ci0gICAgICAiW3doaXRlc3BhY2UvaW5kZW50XSIuKSAgRmlsdGVycyBhcmUgZXZhbHVhdGVkIGxl
ZnQgdG8gcmlnaHQuCi0gICAgICAiLUZPTyIgYW5kICJGT08iIG1lYW5zICJkbyBub3QgcHJpbnQg
Y2F0ZWdvcmllcyB0aGF0IHN0YXJ0IHdpdGggRk9PIi4KLSAgICAgICIrRk9PIiBtZWFucyAiZG8g
cHJpbnQgY2F0ZWdvcmllcyB0aGF0IHN0YXJ0IHdpdGggRk9PIi4KLQotICAgICAgRXhhbXBsZXM6
IC0tZmlsdGVyPS13aGl0ZXNwYWNlLCt3aGl0ZXNwYWNlL2JyYWNlcwotICAgICAgICAgICAgICAg
IC0tZmlsdGVyPXdoaXRlc3BhY2UscnVudGltZS9wcmludGYsK3J1bnRpbWUvcHJpbnRmX2Zvcm1h
dAotICAgICAgICAgICAgICAgIC0tZmlsdGVyPS0sK2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNl
CisjIERlZmF1bHQgb3B0aW9ucworX0RFRkFVTFRfVkVSQk9TSVRZID0gMQorX0RFRkFVTFRfT1VU
UFVUX0ZPUk1BVCA9ICdlbWFjcycKKworCisjIEZJWE1FOiBGb3IgZmlsdGVycyB3ZSB3aWxsIG5l
dmVyIHdhbnQgdG8gaGF2ZSwgcmVtb3ZlIHRoZW0uCisjICAgICAgICBGb3IgZmlsdGVycyB3ZSB3
YW50IHRvIGhhdmUgc2ltaWxhciBmdW5jdGlvbmFsaXRpZXMsCisjICAgICAgICBtb2RpZnkgdGhl
IGltcGxlbWVudGF0aW9uIGFuZCBlbmFibGUgdGhlbS4KKyMgRklYTUU6IEFkZCBhIHVuaXQgdGVz
dCB0byBlbnN1cmUgdGhlIGNvcnJlc3BvbmRpbmcgY2F0ZWdvcmllcworIyAgICAgICAgYXJlIGVs
ZW1lbnRzIG9mIF9TVFlMRV9DQVRFR09SSUVTLgorX1dFQktJVF9GSUxURVIgPSBbCisgICAgJy1i
dWlsZC9lbmRpZl9jb21tZW50JywKKyAgICAnLWJ1aWxkL2hlYWRlcl9ndWFyZCcsCisgICAgJy1i
dWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZScsICAjIDxzdHJpbmc+IGZvciBzdGQ6OnN0cmluZwor
ICAgICctYnVpbGQvc3RvcmFnZV9jbGFzcycsICAjIGNvbnN0IHN0YXRpYworICAgICctbGVnYWwv
Y29weXJpZ2h0JywKKyAgICAnLXJlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50JywKKyAgICAn
LXJlYWRhYmlsaXR5L2JyYWNlcycsICAjIGludCBmb28oKSB7fTsKKyAgICAnLXJlYWRhYmlsaXR5
L2ZuX3NpemUnLAorICAgICctcmVhZGFiaWxpdHkvY2FzdGluZycsCisgICAgJy1yZWFkYWJpbGl0
eS9mdW5jdGlvbicsCisgICAgJy1ydW50aW1lL2FycmF5cycsICAjIHZhcmlhYmxlIGxlbmd0aCBh
cnJheQorICAgICctcnVudGltZS9jYXN0aW5nJywKKyAgICAnLXJ1bnRpbWUvc2l6ZW9mJywKKyAg
ICAnLXJ1bnRpbWUvZXhwbGljaXQnLCAgIyBleHBsaWNpdAorICAgICctcnVudGltZS92aXJ0dWFs
JywgICMgdmlydHVhbCBkdG9yCisgICAgJy1ydW50aW1lL3ByaW50ZicsCisgICAgJy1ydW50aW1l
L3RocmVhZHNhZmVfZm4nLAorICAgICctcnVudGltZS9ydHRpJywKKyAgICAnLXdoaXRlc3BhY2Uv
YmxhbmtfbGluZScsCisgICAgJy13aGl0ZXNwYWNlL2NvbW1lbnRzJywKKyAgICAnLXdoaXRlc3Bh
Y2UvZW5kX29mX2xpbmUnLAorICAgICctd2hpdGVzcGFjZS9sYWJlbHMnLAorICAgIF0KIAotICAg
ICAgVG8gc2VlIGEgbGlzdCBvZiBhbGwgdGhlIGNhdGVnb3JpZXMgdXNlZCBpbiAlKHByb2dyYW1f
bmFtZSlzLCBwYXNzIG5vIGFyZzoKLSAgICAgICAgIC0tZmlsdGVyPQotIiIiICUgeydwcm9ncmFt
X25hbWUnOiBzeXMuYXJndlswXX0KIAotIyBXZSBjYXRlZ29yaXplIGVhY2ggZXJyb3IgbWVzc2Fn
ZSB3ZSBwcmludC4gIEhlcmUgYXJlIHRoZSBjYXRlZ29yaWVzLgorIyBXZSBjYXRlZ29yaXplIGVh
Y2ggc3R5bGUgcnVsZSB3ZSBwcmludC4gIEhlcmUgYXJlIHRoZSBjYXRlZ29yaWVzLgogIyBXZSB3
YW50IGFuIGV4cGxpY2l0IGxpc3Qgc28gd2UgY2FuIGxpc3QgdGhlbSBhbGwgaW4gY3BwX3N0eWxl
IC0tZmlsdGVyPS4KICMgSWYgeW91IGFkZCBhIG5ldyBlcnJvciBtZXNzYWdlIHdpdGggYSBuZXcg
Y2F0ZWdvcnksIGFkZCBpdCB0byB0aGUgbGlzdAogIyBoZXJlISAgY3BwX3N0eWxlX3VuaXR0ZXN0
LnB5IHNob3VsZCB0ZWxsIHlvdSBpZiB5b3UgZm9yZ2V0IHRvIGRvIHRoaXMuCi0jIFwgdXNlZCBm
b3IgY2xlYXJlciBsYXlvdXQgLS0gcHlsaW50OiBkaXNhYmxlLW1zZz1DNjAxMwotX0VSUk9SX0NB
VEVHT1JJRVMgPSAnJydcCi0gICAgYnVpbGQvY2xhc3MKLSAgICBidWlsZC9kZXByZWNhdGVkCi0g
ICAgYnVpbGQvZW5kaWZfY29tbWVudAotICAgIGJ1aWxkL2ZvcndhcmRfZGVjbAotICAgIGJ1aWxk
L2hlYWRlcl9ndWFyZAotICAgIGJ1aWxkL2luY2x1ZGUKLSAgICBidWlsZC9pbmNsdWRlX29yZGVy
Ci0gICAgYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2UKLSAgICBidWlsZC9uYW1lc3BhY2VzCi0g
ICAgYnVpbGQvcHJpbnRmX2Zvcm1hdAotICAgIGJ1aWxkL3N0b3JhZ2VfY2xhc3MKLSAgICBidWls
ZC91c2luZ19zdGQKLSAgICBsZWdhbC9jb3B5cmlnaHQKLSAgICByZWFkYWJpbGl0eS9icmFjZXMK
LSAgICByZWFkYWJpbGl0eS9jYXN0aW5nCi0gICAgcmVhZGFiaWxpdHkvY2hlY2sKLSAgICByZWFk
YWJpbGl0eS9jb21wYXJpc29uX3RvX3plcm8KLSAgICByZWFkYWJpbGl0eS9jb25zdHJ1Y3RvcnMK
LSAgICByZWFkYWJpbGl0eS9jb250cm9sX2Zsb3cKLSAgICByZWFkYWJpbGl0eS9mbl9zaXplCi0g
ICAgcmVhZGFiaWxpdHkvZnVuY3Rpb24KLSAgICByZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVu
dAotICAgIHJlYWRhYmlsaXR5L211bHRpbGluZV9zdHJpbmcKLSAgICByZWFkYWJpbGl0eS9uYW1p
bmcKLSAgICByZWFkYWJpbGl0eS9udWxsCi0gICAgcmVhZGFiaWxpdHkvc3RyZWFtcwotICAgIHJl
YWRhYmlsaXR5L3RvZG8KLSAgICByZWFkYWJpbGl0eS91dGY4Ci0gICAgcnVudGltZS9hcnJheXMK
LSAgICBydW50aW1lL2Nhc3RpbmcKLSAgICBydW50aW1lL2V4cGxpY2l0Ci0gICAgcnVudGltZS9p
bnQKLSAgICBydW50aW1lL2luaXQKLSAgICBydW50aW1lL2ludmFsaWRfaW5jcmVtZW50Ci0gICAg
cnVudGltZS9tYXhfbWluX21hY3JvcwotICAgIHJ1bnRpbWUvbWVtc2V0Ci0gICAgcnVudGltZS9w
cmludGYKLSAgICBydW50aW1lL3ByaW50Zl9mb3JtYXQKLSAgICBydW50aW1lL3JlZmVyZW5jZXMK
LSAgICBydW50aW1lL3J0dGkKLSAgICBydW50aW1lL3NpemVvZgotICAgIHJ1bnRpbWUvc3RyaW5n
Ci0gICAgcnVudGltZS90aHJlYWRzYWZlX2ZuCi0gICAgcnVudGltZS92aXJ0dWFsCi0gICAgd2hp
dGVzcGFjZS9ibGFua19saW5lCi0gICAgd2hpdGVzcGFjZS9icmFjZXMKLSAgICB3aGl0ZXNwYWNl
L2NvbW1hCi0gICAgd2hpdGVzcGFjZS9jb21tZW50cwotICAgIHdoaXRlc3BhY2UvZGVjbGFyYXRp
b24KLSAgICB3aGl0ZXNwYWNlL2VuZF9vZl9saW5lCi0gICAgd2hpdGVzcGFjZS9lbmRpbmdfbmV3
bGluZQotICAgIHdoaXRlc3BhY2UvaW5kZW50Ci0gICAgd2hpdGVzcGFjZS9sYWJlbHMKLSAgICB3
aGl0ZXNwYWNlL2xpbmVfbGVuZ3RoCi0gICAgd2hpdGVzcGFjZS9uZXdsaW5lCi0gICAgd2hpdGVz
cGFjZS9vcGVyYXRvcnMKLSAgICB3aGl0ZXNwYWNlL3BhcmVucwotICAgIHdoaXRlc3BhY2Uvc2Vt
aWNvbG9uCi0gICAgd2hpdGVzcGFjZS90YWIKLSAgICB3aGl0ZXNwYWNlL3RvZG8KLScnJworX1NU
WUxFX0NBVEVHT1JJRVMgPSBbCisgICAgImJ1aWxkL2NsYXNzIiwKKyAgICAiYnVpbGQvZGVwcmVj
YXRlZCIsCisgICAgImJ1aWxkL2VuZGlmX2NvbW1lbnQiLAorICAgICJidWlsZC9mb3J3YXJkX2Rl
Y2wiLAorICAgICJidWlsZC9oZWFkZXJfZ3VhcmQiLAorICAgICJidWlsZC9pbmNsdWRlIiwKKyAg
ICAiYnVpbGQvaW5jbHVkZV9vcmRlciIsCisgICAgImJ1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNl
IiwKKyAgICAiYnVpbGQvbmFtZXNwYWNlcyIsCisgICAgImJ1aWxkL3ByaW50Zl9mb3JtYXQiLAor
ICAgICJidWlsZC9zdG9yYWdlX2NsYXNzIiwKKyAgICAiYnVpbGQvdXNpbmdfc3RkIiwKKyAgICAi
bGVnYWwvY29weXJpZ2h0IiwKKyAgICAicmVhZGFiaWxpdHkvYnJhY2VzIiwKKyAgICAicmVhZGFi
aWxpdHkvY2FzdGluZyIsCisgICAgInJlYWRhYmlsaXR5L2NoZWNrIiwKKyAgICAicmVhZGFiaWxp
dHkvY29tcGFyaXNvbl90b196ZXJvIiwKKyAgICAicmVhZGFiaWxpdHkvY29uc3RydWN0b3JzIiwK
KyAgICAicmVhZGFiaWxpdHkvY29udHJvbF9mbG93IiwKKyAgICAicmVhZGFiaWxpdHkvZm5fc2l6
ZSIsCisgICAgInJlYWRhYmlsaXR5L2Z1bmN0aW9uIiwKKyAgICAicmVhZGFiaWxpdHkvbXVsdGls
aW5lX2NvbW1lbnQiLAorICAgICJyZWFkYWJpbGl0eS9tdWx0aWxpbmVfc3RyaW5nIiwKKyAgICAi
cmVhZGFiaWxpdHkvbmFtaW5nIiwKKyAgICAicmVhZGFiaWxpdHkvbnVsbCIsCisgICAgInJlYWRh
YmlsaXR5L3N0cmVhbXMiLAorICAgICJyZWFkYWJpbGl0eS90b2RvIiwKKyAgICAicmVhZGFiaWxp
dHkvdXRmOCIsCisgICAgInJ1bnRpbWUvYXJyYXlzIiwKKyAgICAicnVudGltZS9jYXN0aW5nIiwK
KyAgICAicnVudGltZS9leHBsaWNpdCIsCisgICAgInJ1bnRpbWUvaW5pdCIsCisgICAgInJ1bnRp
bWUvaW50IiwKKyAgICAicnVudGltZS9pbnZhbGlkX2luY3JlbWVudCIsCisgICAgInJ1bnRpbWUv
bWF4X21pbl9tYWNyb3MiLAorICAgICJydW50aW1lL21lbXNldCIsCisgICAgInJ1bnRpbWUvcHJp
bnRmIiwKKyAgICAicnVudGltZS9wcmludGZfZm9ybWF0IiwKKyAgICAicnVudGltZS9yZWZlcmVu
Y2VzIiwKKyAgICAicnVudGltZS9ydHRpIiwKKyAgICAicnVudGltZS9zaXplb2YiLAorICAgICJy
dW50aW1lL3N0cmluZyIsCisgICAgInJ1bnRpbWUvdGhyZWFkc2FmZV9mbiIsCisgICAgInJ1bnRp
bWUvdmlydHVhbCIsCisgICAgIndoaXRlc3BhY2UvYmxhbmtfbGluZSIsCisgICAgIndoaXRlc3Bh
Y2UvYnJhY2VzIiwKKyAgICAid2hpdGVzcGFjZS9jb21tYSIsCisgICAgIndoaXRlc3BhY2UvY29t
bWVudHMiLAorICAgICJ3aGl0ZXNwYWNlL2RlY2xhcmF0aW9uIiwKKyAgICAid2hpdGVzcGFjZS9l
bmRfb2ZfbGluZSIsCisgICAgIndoaXRlc3BhY2UvZW5kaW5nX25ld2xpbmUiLAorICAgICJ3aGl0
ZXNwYWNlL2luZGVudCIsCisgICAgIndoaXRlc3BhY2UvbGFiZWxzIiwKKyAgICAid2hpdGVzcGFj
ZS9saW5lX2xlbmd0aCIsCisgICAgIndoaXRlc3BhY2UvbmV3bGluZSIsCisgICAgIndoaXRlc3Bh
Y2Uvb3BlcmF0b3JzIiwKKyAgICAid2hpdGVzcGFjZS9wYXJlbnMiLAorICAgICJ3aGl0ZXNwYWNl
L3NlbWljb2xvbiIsCisgICAgIndoaXRlc3BhY2UvdGFiIiwKKyAgICAid2hpdGVzcGFjZS90b2Rv
IiwKKyAgICBdCisKIAogIyBUaGUgZGVmYXVsdCBzdGF0ZSBvZiB0aGUgY2F0ZWdvcnkgZmlsdGVy
LiBUaGlzIGlzIG92ZXJyaWRlZCBieSB0aGUgLS1maWx0ZXI9CiAjIGZsYWcuIEJ5IGRlZmF1bHQg
YWxsIGVycm9ycyBhcmUgb24sIHNvIG9ubHkgYWRkIGhlcmUgY2F0ZWdvcmllcyB0aGF0IHNob3Vs
ZCBiZQogIyBvZmYgYnkgZGVmYXVsdCAoaS5lLiwgY2F0ZWdvcmllcyB0aGF0IG11c3QgYmUgZW5h
YmxlZCBieSB0aGUgLS1maWx0ZXI9IGZsYWdzKS4KICMgQWxsIGVudHJpZXMgaGVyZSBzaG91bGQg
c3RhcnQgd2l0aCBhICctJyBvciAnKycsIGFzIGluIHRoZSAtLWZpbHRlcj0gZmxhZy4KLV9ERUZB
VUxUX0ZJTFRFUlMgPSBbXQorX0RFRkFVTFRfRklMVEVSID0gW10KIAogIyBIZWFkZXJzIHRoYXQg
d2UgY29uc2lkZXIgU1RMIGhlYWRlcnMuCiBfU1RMX0hFQURFUlMgPSBmcm96ZW5zZXQoWwpAQCAt
MzcwLDE1ICszNTcsMTUgQEAgY2xhc3MgX0NwcFN0eWxlU3RhdGUob2JqZWN0KToKICAgICAiIiJN
YWludGFpbnMgbW9kdWxlLXdpZGUgc3RhdGUuLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYp
OgotICAgICAgICBzZWxmLnZlcmJvc2VfbGV2ZWwgPSAxICAjIGdsb2JhbCBzZXR0aW5nLgorICAg
ICAgICBzZWxmLnZlcmJvc2VfbGV2ZWwgPSBfREVGQVVMVF9WRVJCT1NJVFkgICMgZ2xvYmFsIHNl
dHRpbmcuCiAgICAgICAgIHNlbGYuZXJyb3JfY291bnQgPSAwICAgICMgZ2xvYmFsIGNvdW50IG9m
IHJlcG9ydGVkIGVycm9ycwogICAgICAgICAjIGZpbHRlcnMgdG8gYXBwbHkgd2hlbiBlbWl0dGlu
ZyBlcnJvciBtZXNzYWdlcwotICAgICAgICBzZWxmLmZpbHRlcnMgPSBfREVGQVVMVF9GSUxURVJT
WzpdCisgICAgICAgIHNlbGYuZmlsdGVycyA9IF9ERUZBVUxUX0ZJTFRFUls6XQogCiAgICAgICAg
ICMgb3V0cHV0IGZvcm1hdDoKICAgICAgICAgIyAiZW1hY3MiIC0gZm9ybWF0IHRoYXQgZW1hY3Mg
Y2FuIHBhcnNlIChkZWZhdWx0KQogICAgICAgICAjICJ2czciIC0gZm9ybWF0IHRoYXQgTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW8gNyBjYW4gcGFyc2UKLSAgICAgICAgc2VsZi5vdXRwdXRfZm9ybWF0
ID0gJ2VtYWNzJworICAgICAgICBzZWxmLm91dHB1dF9mb3JtYXQgPSBfREVGQVVMVF9PVVRQVVRf
Rk9STUFUCiAKICAgICBkZWYgc2V0X291dHB1dF9mb3JtYXQoc2VsZiwgb3V0cHV0X2Zvcm1hdCk6
CiAgICAgICAgICIiIlNldHMgdGhlIG91dHB1dCBmb3JtYXQgZm9yIGVycm9ycy4iIiIKQEAgLTQw
NSw3ICszOTIsNyBAQCBjbGFzcyBfQ3BwU3R5bGVTdGF0ZShvYmplY3QpOgogICAgICAgICAgICAg
ICAgICAgICAgIEUuZy4gIi0sK3doaXRlc3BhY2UsLXdoaXRlc3BhY2UvaW5kZW50LHdoaXRlc3Bh
Y2UvYmFkZmlsdGVyIgogICAgICAgICAiIiIKICAgICAgICAgIyBEZWZhdWx0IGZpbHRlcnMgYWx3
YXlzIGhhdmUgbGVzcyBwcmlvcml0eSB0aGFuIHRoZSBmbGFnIG9uZXMuCi0gICAgICAgIHNlbGYu
ZmlsdGVycyA9IF9ERUZBVUxUX0ZJTFRFUlNbOl0KKyAgICAgICAgc2VsZi5maWx0ZXJzID0gX0RF
RkFVTFRfRklMVEVSWzpdCiAgICAgICAgIGZvciBmaWx0ZXIgaW4gZmlsdGVycy5zcGxpdCgnLCcp
OgogICAgICAgICAgICAgY2xlYW5fZmlsdGVyID0gZmlsdGVyLnN0cmlwKCkKICAgICAgICAgICAg
IGlmIGNsZWFuX2ZpbHRlcjoKQEAgLTMxNzksMjUgKzMxNjYsNDEgQEAgZGVmIHByb2Nlc3NfZmls
ZShmaWxlbmFtZSwgZXJyb3I9ZXJyb3IpOgogICAgICAgICAgICAgICAgICAgJ2JldHRlciB0byB1
c2Ugb25seSBhIFxcbicpCiAKIAotZGVmIHByaW50X3VzYWdlKG1lc3NhZ2UpOgotICAgICIiIlBy
aW50cyBhIGJyaWVmIHVzYWdlIHN0cmluZyBhbmQgZXhpdHMsIG9wdGlvbmFsbHkgd2l0aCBhbiBl
cnJvciBtZXNzYWdlLgorZGVmIGV4aXRfd2l0aF91c2FnZShlcnJvcl9tZXNzYWdlKToKKyAgICAi
IiJFeGl0IGFuZCBwcmludCBhIHVzYWdlIHN0cmluZyB3aXRoIGFuIG9wdGlvbmFsIGVycm9yIG1l
c3NhZ2UuCiAKICAgICBBcmdzOgotICAgICAgbWVzc2FnZTogVGhlIG9wdGlvbmFsIGVycm9yIG1l
c3NhZ2UuCisgICAgICBlcnJvcl9tZXNzYWdlOiBUaGUgb3B0aW9uYWwgZXJyb3IgbWVzc2FnZS4K
ICAgICAiIiIKICAgICBzeXMuc3RkZXJyLndyaXRlKF9VU0FHRSkKLSAgICBpZiBtZXNzYWdlOgot
ICAgICAgICBzeXMuZXhpdCgnXG5GQVRBTCBFUlJPUjogJyArIG1lc3NhZ2UpCisgICAgaWYgZXJy
b3JfbWVzc2FnZToKKyAgICAgICAgc3lzLmV4aXQoJ1xuRkFUQUwgRVJST1I6ICcgKyBlcnJvcl9t
ZXNzYWdlKQogICAgIGVsc2U6CiAgICAgICAgIHN5cy5leGl0KDEpCiAKIAotZGVmIHByaW50X2Nh
dGVnb3JpZXMoKToKLSAgICAiIiJQcmludHMgYSBsaXN0IG9mIGFsbCB0aGUgZXJyb3ItY2F0ZWdv
cmllcyB1c2VkIGJ5IGVycm9yIG1lc3NhZ2VzLgorZGVmIGV4aXRfd2l0aF9jYXRlZ29yaWVzKCk6
CisgICAgIiIiRXhpdCBhbmQgcHJpbnQgYWxsIHN0eWxlIGNhdGVnb3JpZXMsIGFsb25nIHdpdGgg
dGhlIGRlZmF1bHQgZmlsdGVyLgogCi0gICAgVGhlc2UgYXJlIHRoZSBjYXRlZ29yaWVzIHVzZWQg
dG8gZmlsdGVyIG1lc3NhZ2VzIHZpYSAtLWZpbHRlci4KKyAgICBUaGVzZSBjYXRlZ29yeSBuYW1l
cyBhcHBlYXIgaW4gZXJyb3IgbWVzc2FnZXMuICBUaGV5IGNhbiBiZSBmaWx0ZXJlZAorICAgIHVz
aW5nIHRoZSAtLWZpbHRlciBmbGFnLgogICAgICIiIgotICAgIHN5cy5zdGRlcnIud3JpdGUoX0VS
Uk9SX0NBVEVHT1JJRVMpCisgICAgIyBUaGVzZSB0d28gImlmIiBzdGF0ZW1lbnRzIGFyZSBuZWNl
c3NhcnkgdG8gcHJldmVudCB1bm5lY2Vzc2FyeQorICAgICMgb3V0cHV0IGR1cmluZyB1bml0IHRl
c3RzLgorICAgICMgRklYTUU6IFJlZmFjdG9yIHRoZSB1bml0IHRlc3RzIGFzIG5lY2Vzc2FyeSBh
bmQgdGhlbiByZW1vdmUKKyAgICAjICAgICAgICB0aGUgdHdvICJpZiIgc3RhdGVtZW50cy4KKyAg
ICBpZiBfU1RZTEVfQ0FURUdPUklFUzoKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnXG5BbGwg
YXZhaWxhYmxlIGNhdGVnb3JpZXM6XG4nKQorICAgICAgICBmb3IgY2F0ZWdvcnkgaW4gc29ydGVk
KF9TVFlMRV9DQVRFR09SSUVTKToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIiAgICAi
ICsgY2F0ZWdvcnkgKyAnXG4nKQorCisgICAgaWYgX1dFQktJVF9GSUxURVI6CisgICAgICAgIHN5
cy5zdGRlcnIud3JpdGUoJ1xuRGVmYXVsdCBmaWx0ZXIqKjpcbicpCisgICAgICAgIGZvciBmaWx0
ZXJfaXRlbSBpbiBzb3J0ZWQoX1dFQktJVF9GSUxURVIpOgorICAgICAgICAgICAgc3lzLnN0ZGVy
ci53cml0ZSgnICAgICcgKyBmaWx0ZXJfaXRlbSArICdcbicpCisgICAgICAgIHN5cy5zdGRlcnIu
d3JpdGUoJ1xuKipUaGUgZGVmYXVsdCBmaWx0ZXIgYWJvdmUgaXMgYWx3YXlzIGV2YWx1YXRlZCwg
JworICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgYmVmb3JlIGFueSAtLWZpbHRlciBmbGFn
LlxuXG4nKQorCiAgICAgc3lzLmV4aXQoMCkKIAogCkBAIC0zMjIxLDcgKzMyMjQsNyBAQCBkZWYg
cGFyc2VfYXJndW1lbnRzKGFyZ3MsIGFkZGl0aW9uYWxfZmxhCiAgICAgdHJ5OgogICAgICAgICAo
b3B0cywgZmlsZW5hbWVzKSA9IGdldG9wdC5nZXRvcHQoYXJncywgJycsIGZsYWdzKQogICAgIGV4
Y2VwdCBnZXRvcHQuR2V0b3B0RXJyb3I6Ci0gICAgICAgIHByaW50X3VzYWdlKCdJbnZhbGlkIGFy
Z3VtZW50cy4nKQorICAgICAgICBleGl0X3dpdGhfdXNhZ2UoJ0ludmFsaWQgYXJndW1lbnRzLicp
CiAKICAgICB2ZXJib3NpdHkgPSBfdmVyYm9zZV9sZXZlbCgpCiAgICAgb3V0cHV0X2Zvcm1hdCA9
IF9vdXRwdXRfZm9ybWF0KCkKQEAgLTMyMjksMTcgKzMyMzIsMTcgQEAgZGVmIHBhcnNlX2FyZ3Vt
ZW50cyhhcmdzLCBhZGRpdGlvbmFsX2ZsYQogCiAgICAgZm9yIChvcHQsIHZhbCkgaW4gb3B0czoK
ICAgICAgICAgaWYgb3B0ID09ICctLWhlbHAnOgotICAgICAgICAgICAgcHJpbnRfdXNhZ2UoTm9u
ZSkKKyAgICAgICAgICAgIGV4aXRfd2l0aF91c2FnZShOb25lKQogICAgICAgICBlbGlmIG9wdCA9
PSAnLS1vdXRwdXQnOgogICAgICAgICAgICAgaWYgbm90IHZhbCBpbiAoJ2VtYWNzJywgJ3ZzNycp
OgotICAgICAgICAgICAgICAgIHByaW50X3VzYWdlKCdUaGUgb25seSBhbGxvd2VkIG91dHB1dCBm
b3JtYXRzIGFyZSBlbWFjcyBhbmQgdnM3LicpCisgICAgICAgICAgICAgICAgZXhpdF93aXRoX3Vz
YWdlKCdUaGUgb25seSBhbGxvd2VkIG91dHB1dCBmb3JtYXRzIGFyZSBlbWFjcyBhbmQgdnM3Licp
CiAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0ID0gdmFsCiAgICAgICAgIGVsaWYgb3B0ID09ICct
LXZlcmJvc2UnOgogICAgICAgICAgICAgdmVyYm9zaXR5ID0gaW50KHZhbCkKICAgICAgICAgZWxp
ZiBvcHQgPT0gJy0tZmlsdGVyJzoKICAgICAgICAgICAgIGZpbHRlcnMgPSB2YWwKICAgICAgICAg
ICAgIGlmIG5vdCBmaWx0ZXJzOgotICAgICAgICAgICAgICAgIHByaW50X2NhdGVnb3JpZXMoKQor
ICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9jYXRlZ29yaWVzKCkKICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgIGFkZGl0aW9uYWxfZmxhZ192YWx1ZXNbb3B0XSA9IHZhbAogCkBAIC0zMjQ4LDcx
ICszMjUxLDMgQEAgZGVmIHBhcnNlX2FyZ3VtZW50cyhhcmdzLCBhZGRpdGlvbmFsX2ZsYQogICAg
IF9zZXRfZmlsdGVycyhmaWx0ZXJzKQogCiAgICAgcmV0dXJuIChmaWxlbmFtZXMsIGFkZGl0aW9u
YWxfZmxhZ192YWx1ZXMpCi0KLQotZGVmIHVzZV93ZWJraXRfc3R5bGVzKCk6Ci0gICAgIiIiRGlz
YWJsZXMgc29tZSBmZWF0dXJlcyB3aGljaCBhcmUgbm90IHN1aXRhYmxlIGZvciBXZWJLaXQuIiIi
Ci0gICAgIyBGSVhNRTogRm9yIGZpbHRlcnMgd2Ugd2lsbCBuZXZlciB3YW50IHRvIGhhdmUsIHJl
bW92ZSB0aGVtLgotICAgICMgICAgICAgIEZvciBmaWx0ZXJzIHdlIHdhbnQgdG8gaGF2ZSBzaW1p
bGFyIGZ1bmN0aW9uYWxpdGllcywKLSAgICAjICAgICAgICBtb2RpZnkgdGhlIGltcGxlbWVudGF0
aW9uIGFuZCBlbmFibGUgdGhlbS4KLSAgICBnbG9iYWwgX0RFRkFVTFRfRklMVEVSUwotICAgIF9E
RUZBVUxUX0ZJTFRFUlMgPSBbCi0gICAgICAgICctd2hpdGVzcGFjZS9lbmRfb2ZfbGluZScsCi0g
ICAgICAgICctd2hpdGVzcGFjZS9jb21tZW50cycsCi0gICAgICAgICctd2hpdGVzcGFjZS9ibGFu
a19saW5lJywKLSAgICAgICAgJy1ydW50aW1lL2V4cGxpY2l0JywgICMgZXhwbGljaXQKLSAgICAg
ICAgJy1ydW50aW1lL3ZpcnR1YWwnLCAgIyB2aXJ0dWFsIGR0b3IKLSAgICAgICAgJy1ydW50aW1l
L3ByaW50ZicsCi0gICAgICAgICctcnVudGltZS90aHJlYWRzYWZlX2ZuJywKLSAgICAgICAgJy1y
dW50aW1lL3J0dGknLAotICAgICAgICAnLWJ1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlJywgICMg
PHN0cmluZz4gZm9yIHN0ZDo6c3RyaW5nCi0gICAgICAgICctbGVnYWwvY29weXJpZ2h0JywKLSAg
ICAgICAgJy1yZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudCcsCi0gICAgICAgICctcmVhZGFi
aWxpdHkvYnJhY2VzJywgICMgaW50IGZvbygpIHt9OwotICAgICAgICAnLXJlYWRhYmlsaXR5L2Zu
X3NpemUnLAotICAgICAgICAnLWJ1aWxkL3N0b3JhZ2VfY2xhc3MnLCAgIyBjb25zdCBzdGF0aWMK
LSAgICAgICAgJy1idWlsZC9lbmRpZl9jb21tZW50JywKLSAgICAgICAgJy13aGl0ZXNwYWNlL2xh
YmVscycsCi0gICAgICAgICctcnVudGltZS9hcnJheXMnLCAgIyB2YXJpYWJsZSBsZW5ndGggYXJy
YXkKLSAgICAgICAgJy1idWlsZC9oZWFkZXJfZ3VhcmQnLAotICAgICAgICAnLXJlYWRhYmlsaXR5
L2Nhc3RpbmcnLAotICAgICAgICAnLXJlYWRhYmlsaXR5L2Z1bmN0aW9uJywKLSAgICAgICAgJy1y
dW50aW1lL2Nhc3RpbmcnLAotICAgICAgICAnLXJ1bnRpbWUvc2l6ZW9mJywKLSAgICBdCi0KLQot
ZGVmIG1haW4oKToKLSAgICBzeXMuc3RkZXJyLndyaXRlKAotICAgICAgICAnJycqKioqKioqKioq
KioqKioqKioqKiogV0FSTklORyBXQVJOSU5HIFdBUk5JTkcgKioqKioqKioqKioqKioqKioqKioq
Ci0KLVRoaXMgdG9vbCBpcyBpbiB0aGUgcHJvY2VzcyBvZiBkZXZlbG9wbWVudCBhbmQgbWF5IGdp
dmUgaW5hY2N1cmF0ZQotcmVzdWx0cyBhdCBwcmVzZW50LiAgUGxlYXNlIGZpbGUgYnVncyAoYW5k
L29yIHBhdGNoZXMpIGZvciB0aGluZ3MKLXRoYXQgeW91IG5vdGljZSB0aGF0IGl0IGZsYWdzIGlu
Y29ycmVjdGx5LgotCi0qKioqKioqKioqKioqKioqKioqKiogV0FSTklORyBXQVJOSU5HIFdBUk5J
TkcgKioqKioqKioqKioqKioqKioqKioqCi0KLScnJykKLQotICAgIHVzZV93ZWJraXRfc3R5bGVz
KCkKLQotICAgIChmaWxlbmFtZXMsIGZsYWdzKSA9IHBhcnNlX2FyZ3VtZW50cyhzeXMuYXJndlsx
Ol0pCi0gICAgaWYgbm90IGZpbGVuYW1lczoKLSAgICAgICAgcHJpbnRfdXNhZ2UoJ05vIGZpbGVz
IHdlcmUgc3BlY2lmaWVkLicpCi0KLSAgICAjIENoYW5nZSBzdGRlcnIgdG8gd3JpdGUgd2l0aCBy
ZXBsYWNlbWVudCBjaGFyYWN0ZXJzIHNvIHdlIGRvbid0IGRpZQotICAgICMgaWYgd2UgdHJ5IHRv
IHByaW50IHNvbWV0aGluZyBjb250YWluaW5nIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLgotICAgIHN5
cy5zdGRlcnIgPSBjb2RlY3MuU3RyZWFtUmVhZGVyV3JpdGVyKHN5cy5zdGRlcnIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHJlYWRlcigndXRm
OCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5n
ZXR3cml0ZXIoJ3V0ZjgnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAncmVwbGFjZScpCi0KLSAgICBfY3BwX3N0eWxlX3N0YXRlLnJlc2V0X2Vycm9yX2NvdW50
KCkKLSAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgotICAgICAgICBwcm9jZXNzX2ZpbGUo
ZmlsZW5hbWUpCi0gICAgc3lzLnN0ZGVyci53cml0ZSgnVG90YWwgZXJyb3JzIGZvdW5kOiAlZFxu
JyAlIF9jcHBfc3R5bGVfc3RhdGUuZXJyb3JfY291bnQpCi0gICAgc3lzLmV4aXQoX2NwcF9zdHls
ZV9zdGF0ZS5lcnJvcl9jb3VudCA+IDApCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
LSAgICBtYWluKCkKSW5kZXg6IFNjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGVfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZV91bml0dGVzdC5weQkocmV2
aXNpb24gNTIwNjYpCisrKyBTY3JpcHRzL21vZHVsZXMvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5CSh3
b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUsMTEgQEAgaW1wb3J0IGNwcF9zdHlsZQogCiAjIFRo
aXMgY2xhc3Mgd29ya3MgYXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCByZXBsYWNlcyBjcHBfc3R5
bGUuRXJyb3IKICMgZnVuY3Rpb24gZm9yIHRoZSB1bml0IHRlc3RzLiAgV2UgYWxzbyB2ZXJpZnkg
ZWFjaCBjYXRlZ29yeSB3ZSBzZWUKLSMgaXMgaW4gY3BwX3N0eWxlLl9FUlJPUl9DQVRFR09SSUVT
LCB0byBoZWxwIGtlZXAgdGhhdCBsaXN0IHVwIHRvIGRhdGUuCisjIGlzIGluIGNwcF9zdHlsZS5f
U1RZTEVfQ0FURUdPUklFUywgdG8gaGVscCBrZWVwIHRoYXQgbGlzdCB1cCB0byBkYXRlLgogY2xh
c3MgRXJyb3JDb2xsZWN0b3I6Ci0gICAgIyBUaGVzZSBhcmUgYSBnbG9iYWwgbGlzdCwgY292ZXJp
bmcgYWxsIGNhdGVnb3JpZXMgc2VlbiBldmVyLgotICAgIF9FUlJPUl9DQVRFR09SSUVTID0gW3gu
c3RyaXAoKSAgICAjIGdldCByaWQgb2YgbGVhZGluZyB3aGl0ZXNwYWNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yIHggaW4gY3BwX3N0eWxlLl9FUlJPUl9DQVRFR09SSUVTLnNwbGl0KCld
Ci0gICAgX1NFRU5fRVJST1JfQ0FURUdPUklFUyA9IHt9CisgICAgX2FsbF9zdHlsZV9jYXRlZ29y
aWVzID0gY3BwX3N0eWxlLl9TVFlMRV9DQVRFR09SSUVTCisgICAgIyBUaGlzIGEgbGlzdCBpbmNs
dWRpbmcgYWxsIGNhdGVnb3JpZXMgc2VlbiBpbiBhbnkgdW5pdCB0ZXN0LgorICAgIF9zZWVuX3N0
eWxlX2NhdGVnb3JpZXMgPSB7fQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFzc2VydF9mbik6
CiAgICAgICAgICIiImFzc2VydF9mbjogYSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gd2Ugbm90aWNl
IGEgcHJvYmxlbS4iIiIKQEAgLTU5LDEwICs1OCwxMCBAQCBjbGFzcyBFcnJvckNvbGxlY3RvcjoK
IAogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB1bnVzZWRfZmlsZW5hbWUsIHVudXNlZF9saW5lbnVt
LAogICAgICAgICAgICAgICAgICBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSk6Ci0gICAg
ICAgIHNlbGYuX2Fzc2VydF9mbihjYXRlZ29yeSBpbiBzZWxmLl9FUlJPUl9DQVRFR09SSUVTLAor
ICAgICAgICBzZWxmLl9hc3NlcnRfZm4oY2F0ZWdvcnkgaW4gc2VsZi5fYWxsX3N0eWxlX2NhdGVn
b3JpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAnTWVzc2FnZSAiJXMiIGhhcyBjYXRlZ29y
eSAiJXMiLCcKLSAgICAgICAgICAgICAgICAgICAgICAgICcgd2hpY2ggaXMgbm90IGluIF9FUlJP
Ul9DQVRFR09SSUVTJyAlIChtZXNzYWdlLCBjYXRlZ29yeSkpCi0gICAgICAgIHNlbGYuX1NFRU5f
RVJST1JfQ0FURUdPUklFU1tjYXRlZ29yeV0gPSAxCisgICAgICAgICAgICAgICAgICAgICAgICAn
IHdoaWNoIGlzIG5vdCBpbiBfU1RZTEVfQ0FURUdPUklFUycgJSAobWVzc2FnZSwgY2F0ZWdvcnkp
KQorICAgICAgICBzZWxmLl9zZWVuX3N0eWxlX2NhdGVnb3JpZXNbY2F0ZWdvcnldID0gMQogICAg
ICAgICBpZiBjcHBfc3R5bGUuX3Nob3VsZF9wcmludF9lcnJvcihjYXRlZ29yeSwgY29uZmlkZW5j
ZSk6CiAgICAgICAgICAgICBzZWxmLl9lcnJvcnMuYXBwZW5kKCclcyAgWyVzXSBbJWRdJyAlICht
ZXNzYWdlLCBjYXRlZ29yeSwgY29uZmlkZW5jZSkpCiAKQEAgLTc2LDE2ICs3NSwxNiBAQCBjbGFz
cyBFcnJvckNvbGxlY3RvcjoKICAgICAgICAgcmV0dXJuIHNlbGYuX2Vycm9ycwogCiAgICAgZGVm
IHZlcmlmeV9hbGxfY2F0ZWdvcmllc19hcmVfc2VlbihzZWxmKToKLSAgICAgICAgIiIiRmFpbHMg
aWYgdGhlcmUncyBhIGNhdGVnb3J5IGluIF9FUlJPUl9DQVRFR09SSUVTIC0gX1NFRU5fRVJST1Jf
Q0FURUdPUklFUy4KKyAgICAgICAgIiIiRmFpbHMgaWYgdGhlcmUncyBhIGNhdGVnb3J5IGluIF9h
bGxfc3R5bGVfY2F0ZWdvcmllcyAtIF9zZWVuX3N0eWxlX2NhdGVnb3JpZXMuCiAKICAgICAgICAg
VGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYWxsIHRlc3RzIGFyZSBydW4sIHNvCi0g
ICAgICAgIF9TRUVOX0VSUk9SX0NBVEVHT1JJRVMgaGFzIGhhZCBhIGNoYW5jZSB0byBmdWxseSBw
b3B1bGF0ZS4gIFNpbmNlCisgICAgICAgIF9zZWVuX3N0eWxlX2NhdGVnb3JpZXMgaGFzIGhhZCBh
IGNoYW5jZSB0byBmdWxseSBwb3B1bGF0ZS4gIFNpbmNlCiAgICAgICAgIHRoaXMgaXNuJ3QgY2Fs
bGVkIGZyb20gd2l0aGluIHRoZSBub3JtYWwgdW5pdHRlc3QgZnJhbWV3b3JrLCB3ZQogICAgICAg
ICBjYW4ndCB1c2UgdGhlIG5vcm1hbCB1bml0dGVzdCBhc3NlcnQgbWFjcm9zLiAgSW5zdGVhZCB3
ZSBqdXN0IGV4aXQKICAgICAgICAgd2hlbiB3ZSBzZWUgYW4gZXJyb3IuICBHb29kIHRoaW5nIHRo
aXMgdGVzdCBpcyBhbHdheXMgcnVuIGxhc3QhCiAgICAgICAgICIiIgotICAgICAgICBmb3IgY2F0
ZWdvcnkgaW4gc2VsZi5fRVJST1JfQ0FURUdPUklFUzoKLSAgICAgICAgICAgIGlmIGNhdGVnb3J5
IG5vdCBpbiBzZWxmLl9TRUVOX0VSUk9SX0NBVEVHT1JJRVM6CisgICAgICAgIGZvciBjYXRlZ29y
eSBpbiBzZWxmLl9hbGxfc3R5bGVfY2F0ZWdvcmllczoKKyAgICAgICAgICAgIGlmIGNhdGVnb3J5
IG5vdCBpbiBzZWxmLl9zZWVuX3N0eWxlX2NhdGVnb3JpZXM6CiAgICAgICAgICAgICAgICAgaW1w
b3J0IHN5cwogICAgICAgICAgICAgICAgIHN5cy5leGl0KCdGQVRBTCBFUlJPUjogVGhlcmUgYXJl
IG5vIHRlc3RzIGZvciBjYXRlZ29yeSAiJXMiJyAlIGNhdGVnb3J5KQogCkBAIC0zNzcsNyArMzc2
LDcgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICMgICBzZWxm
LmFzc2VydF9saW50KCd2b2lkIE1ldGhvZChjaGFyKiAvKngqLyk7JywgbWVzc2FnZSkKICAgICAj
ICAgc2VsZi5hc3NlcnRfbGludCgndHlwZWRlZiB2b2lkICgqTWV0aG9kKShpbnQzMik7JywgbWVz
c2FnZSkKICAgICAjICAgc2VsZi5hc3NlcnRfbGludCgnc3RhdGljIHZvaWQgb3BlcmF0b3IgZGVs
ZXRlW10odm9pZCopIHRocm93KCk7JywgbWVzc2FnZSkKLSAgICAjIAorICAgICMKICAgICAjICAg
c2VsZi5hc3NlcnRfbGludCgndmlydHVhbCB2b2lkIEQoaW50KiBwKTsnLCAnJykKICAgICAjICAg
c2VsZi5hc3NlcnRfbGludCgndm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogeCkgdGhyb3coKTsn
LCAnJykKICAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBNZXRob2QoY2hhciogeClcbnsn
LCAnJykKQEAgLTM4Niw3ICszODUsNyBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0
QmFzZSk6CiAgICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5cGVkZWYgdm9pZCAoKk1ldGhvZCko
aW50MzIgeCk7JywgJycpCiAgICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0YXRpYyB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHgpIHRocm93KCk7JywgJycpCiAgICAgIyAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ3N0YXRpYyB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIC8qeCovKSB0aHJv
dygpOycsICcnKQotICAgICMgCisgICAgIwogICAgICMgICAjIFRoaXMgb25lIHNob3VsZCB0ZWNo
bmljYWxseSB3YXJuLCBidXQgZG9lc24ndCBiZWNhdXNlIHRoZSBmdW5jdGlvbgogICAgICMgICAj
IHBvaW50ZXIgaXMgY29uZnVzaW5nLgogICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2aXJ0dWFs
IHZvaWQgRSh2b2lkICgqZm4pKGludCogcCkpOycsICcnKQpAQCAtMTU2NywxNCArMTU2NiwxNiBA
QCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAKICAgICBkZWYgdGVzdF9w
YXJzZV9hcmd1bWVudHMoc2VsZik6CiAgICAgICAgIG9sZF91c2FnZSA9IGNwcF9zdHlsZS5fVVNB
R0UKLSAgICAgICAgb2xkX2Vycm9yX2NhdGVnb3JpZXMgPSBjcHBfc3R5bGUuX0VSUk9SX0NBVEVH
T1JJRVMKKyAgICAgICAgb2xkX3N0eWxlX2NhdGVnb3JpZXMgPSBjcHBfc3R5bGUuX1NUWUxFX0NB
VEVHT1JJRVMKKyAgICAgICAgb2xkX3dlYmtpdF9maWx0ZXIgPSBjcHBfc3R5bGUuX1dFQktJVF9G
SUxURVIKICAgICAgICAgb2xkX291dHB1dF9mb3JtYXQgPSBjcHBfc3R5bGUuX2NwcF9zdHlsZV9z
dGF0ZS5vdXRwdXRfZm9ybWF0CiAgICAgICAgIG9sZF92ZXJib3NlX2xldmVsID0gY3BwX3N0eWxl
Ll9jcHBfc3R5bGVfc3RhdGUudmVyYm9zZV9sZXZlbAogICAgICAgICBvbGRfZmlsdGVycyA9IGNw
cF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMKICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgIyBEb24ndCBwcmludCB1c2FnZSBkdXJpbmcgdGhlIHRlc3RzLCBvciBmaWx0ZXIgY2F0ZWdv
cmllcwogICAgICAgICAgICAgY3BwX3N0eWxlLl9VU0FHRSA9ICcnCi0gICAgICAgICAgICBjcHBf
c3R5bGUuX0VSUk9SX0NBVEVHT1JJRVMgPSAnJworICAgICAgICAgICAgY3BwX3N0eWxlLl9TVFlM
RV9DQVRFR09SSUVTID0gW10KKyAgICAgICAgICAgIGNwcF9zdHlsZS5fV0VCS0lUX0ZJTFRFUiA9
IFtdCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIGNwcF9zdHls
ZS5wYXJzZV9hcmd1bWVudHMsIFsnLS1iYWRvcHQnXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFN5c3RlbUV4aXQsIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMsIFsnLS1oZWxwJ10p
CkBAIC0xNjMyLDcgKzE2MzMsOCBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFz
ZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJy0tZm9vdHlwbz1iYXInLCAnZm9v
LmNwcCddLCBbJ2Zvbz0nXSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGNwcF9zdHls
ZS5fVVNBR0UgPSBvbGRfdXNhZ2UKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fRVJST1JfQ0FURUdP
UklFUyA9IG9sZF9lcnJvcl9jYXRlZ29yaWVzCisgICAgICAgICAgICBjcHBfc3R5bGUuX1NUWUxF
X0NBVEVHT1JJRVMgPSBvbGRfc3R5bGVfY2F0ZWdvcmllcworICAgICAgICAgICAgY3BwX3N0eWxl
Ll9XRUJLSVRfRklMVEVSID0gb2xkX3dlYmtpdF9maWx0ZXIKICAgICAgICAgICAgIGNwcF9zdHls
ZS5fY3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQgPSBvbGRfb3V0cHV0X2Zvcm1hdAogICAg
ICAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUudmVyYm9zZV9sZXZlbCA9IG9sZF92
ZXJib3NlX2xldmVsCiAgICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0
ZXJzID0gb2xkX2ZpbHRlcnMKQEAgLTE2NTEsOSArMTY1Myw5IEBAIGNsYXNzIENwcFN0eWxlVGVz
dChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0
YXRlLmZpbHRlcnMgPSBvbGRfZmlsdGVycwogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF9maWx0ZXIo
c2VsZik6Ci0gICAgICAgIGRlZmF1bHRfZmlsdGVycyA9IGNwcF9zdHlsZS5fREVGQVVMVF9GSUxU
RVJTCisgICAgICAgIGRlZmF1bHRfZmlsdGVycyA9IGNwcF9zdHlsZS5fREVGQVVMVF9GSUxURVIK
ICAgICAgICAgb2xkX2ZpbHRlcnMgPSBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXJz
Ci0gICAgICAgIGNwcF9zdHlsZS5fREVGQVVMVF9GSUxURVJTID0gWyAnLXdoaXRlc3BhY2UnIF0K
KyAgICAgICAgY3BwX3N0eWxlLl9ERUZBVUxUX0ZJTFRFUiA9IFsgJy13aGl0ZXNwYWNlJyBdCiAg
ICAgICAgIHRyeToKICAgICAgICAgICAgICMgUmVzZXQgZmlsdGVycwogICAgICAgICAgICAgY3Bw
X3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuc2V0X2ZpbHRlcnMoJycpCkBAIC0xNjY2LDcgKzE2Njgs
NyBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCcgd2VpcmQgb3BlbmluZyBzcGFjZScsICcnKQogICAgICAgICBmaW5h
bGx5OgogICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuZmlsdGVycyA9IG9s
ZF9maWx0ZXJzCi0gICAgICAgICAgICBjcHBfc3R5bGUuX0RFRkFVTFRfRklMVEVSUyA9IGRlZmF1
bHRfZmlsdGVycworICAgICAgICAgICAgY3BwX3N0eWxlLl9ERUZBVUxUX0ZJTFRFUiA9IGRlZmF1
bHRfZmlsdGVycwogCiAgICAgZGVmIHRlc3RfdW5uYW1lZF9uYW1lc3BhY2VzX2luX2hlYWRlcnMo
c2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44759</attachid>
            <date>2009-12-13 12:34:38 -0800</date>
            <delta_ts>2009-12-15 19:13:18 -0800</delta_ts>
            <desc>Proposed patch 2</desc>
            <filename>patch2.txt</filename>
            <type>text/plain</type>
            <size>31647</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDUyMDY2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMTIt
MTMgIENocmlzIEplcmRvbmVrICA8Y2hyaXMuamVyZG9uZWtAZ21haWwuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgb2Jzb2xldGUg
Y29kZSBpbiBjcHBfc3R5bGUucHkgYW5kIG90aGVyIGNsZWFuLXVwLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjQ4NworCisgICAgICAgIEVsaW1p
bmF0ZWQgb2Jzb2xldGUgbWFpbigpIGFuZCBfVVNBR0UgY29kZSBmcm9tIGNwcF9zdHlsZS5weS4K
KyAgICAgICAgQWRkZWQgZGVmYXVsdCBmbGFnIHZhbHVlcyB0byBjaGVjay13ZWJraXQtc3R5bGUn
cyAtLWhlbHAgb3V0cHV0LgorICAgICAgICBPdGhlciBtaW5vciwgcmVsYXRlZCBjb2RlIGNsZWFu
LXVwcy4KKworICAgICAgICAqIFNjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlOgorICAgICAgICAq
IFNjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGUucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVz
L2NwcF9zdHlsZV91bml0dGVzdC5weToKKwogMjAwOS0xMi0xMiAgTWFjaWVqIFN0YWNob3dpYWsg
IDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRl
eDogU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU2NyaXB0cy9jaGVj
ay13ZWJraXQtc3R5bGUJKHJldmlzaW9uIDUyMDY2KQorKysgU2NyaXB0cy9jaGVjay13ZWJraXQt
c3R5bGUJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDE4IEBACiAjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCi0iIiJTY3JpcHQgdG8gcnVuIHRoZSBsaW50ZXIgZm9yIHNvdXJjZSBj
b2RlIG9mIFdlYktpdC4iIiIKKyIiIkRvZXMgV2ViS2l0LWxpbnQgb24gYysrIGZpbGVzLgorCitU
aGUgZ29hbCBvZiB0aGlzIHNjcmlwdCBpcyB0byBpZGVudGlmeSBwbGFjZXMgaW4gdGhlIGNvZGUg
dGhhdCAqbWF5KgorYmUgaW4gbm9uLWNvbXBsaWFuY2Ugd2l0aCBXZWJLaXQgc3R5bGUuICBJdCBk
b2VzIG5vdCBhdHRlbXB0IHRvIGZpeAordXAgdGhlc2UgcHJvYmxlbXMgLS0gdGhlIHBvaW50IGlz
IHRvIGVkdWNhdGUuICBJdCBkb2VzIGFsc28gbm90CithdHRlbXB0IHRvIGZpbmQgYWxsIHByb2Js
ZW1zLCBvciB0byBlbnN1cmUgdGhhdCBldmVyeXRoaW5nIGl0IGRvZXMKK2ZpbmQgaXMgbGVnaXRp
bWF0ZWx5IGEgcHJvYmxlbS4KKworSW4gcGFydGljdWxhciwgd2UgY2FuIGdldCB2ZXJ5IGNvbmZ1
c2VkIGJ5IC8qIGFuZCAvLyBpbnNpZGUgc3RyaW5ncyEKK1dlIGRvIGEgc21hbGwgaGFjaywgd2hp
Y2ggaXMgdG8gaWdub3JlIC8vJ3Mgd2l0aCAiJ3MgYWZ0ZXIgdGhlbSBvbiB0aGUKK3NhbWUgbGlu
ZSwgYnV0IGl0IGlzIGZhciBmcm9tIHBlcmZlY3QgKGluIGVpdGhlciBkaXJlY3Rpb24pLgorIiIi
CiAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBvcwpAQCAtNDAsNTQgKzUxLDY4IEBAIGZyb20gbW9k
dWxlcy5kaWZmX3BhcnNlciBpbXBvcnQgRGlmZlBhcnMKIGZyb20gbW9kdWxlcy5zY20gaW1wb3J0
IGRldGVjdF9zY21fc3lzdGVtCiAKIAotIyBPdmVycmlkZSB0aGUgdXNhZ2Ugb2YgdGhlIGxpbnQg
dG9vbC4KIGNwcF9zdHlsZS5fVVNBR0UgPSAiIiIKIFN5bnRheDogJShwcm9ncmFtX25hbWUpcyBb
LS12ZXJib3NlPSNdIFstLWdpdC1jb21taXQ9PFNpbmdsZUNvbW1pdD5dIFstLW91dHB1dD12czdd
CiAgICAgICAgIFstLWZpbHRlcj0teCwreSwuLi5dIFtmaWxlXSAuLi4KIAotICBUaGUgc3R5bGUg
Z3VpZGVsaW5lcyB0aGlzIHRyaWVzIHRvIGZvbGxvdyBhcmUgdGhvc2UgaW4KKyAgVGhlIHN0eWxl
IGd1aWRlbGluZXMgdGhpcyB0cmllcyB0byBmb2xsb3cgYXJlIGhlcmU6CiAgICAgaHR0cDovL3dl
YmtpdC5vcmcvY29kaW5nL2NvZGluZy1zdHlsZS5odG1sCiAKLSAgRXZlcnkgcHJvYmxlbSBpcyBn
aXZlbiBhIGNvbmZpZGVuY2Ugc2NvcmUgZnJvbSAxLTUsIHdpdGggNSBtZWFuaW5nIHdlIGFyZQot
ICBjZXJ0YWluIG9mIHRoZSBwcm9ibGVtLCBhbmQgMSBtZWFuaW5nIGl0IGNvdWxkIGJlIGEgbGVn
aXRpbWF0ZSBjb25zdHJ1Y3QuCi0gIFRoaXMgd2lsbCBtaXNzIHNvbWUgZXJyb3JzLCBhbmQgaXMg
bm90IGEgc3Vic3RpdHV0ZSBmb3IgYSBjb2RlIHJldmlldy4KKyAgRXZlcnkgc3R5bGUgZXJyb3Ig
aXMgZ2l2ZW4gYSBjb25maWRlbmNlIHNjb3JlIGZyb20gMS01LCB3aXRoIDUgbWVhbmluZworICB3
ZSBhcmUgY2VydGFpbiBvZiB0aGUgcHJvYmxlbSwgYW5kIDEgbWVhbmluZyBpdCBjb3VsZCBiZSBh
IGxlZ2l0aW1hdGUKKyAgY29uc3RydWN0LiAgVGhpcyBjYW4gbWlzcyBzb21lIGVycm9ycyBhbmQg
ZG9lcyBub3Qgc3Vic3RpdHV0ZSBmb3IKKyAgY29kZSByZXZpZXcuCiAKICAgVG8gcHJldmVudCBz
cGVjaWZpYyBsaW5lcyBmcm9tIGJlaW5nIGxpbnRlZCwgYWRkIGEgJy8vIE5PTElOVCcgY29tbWVu
dCB0byB0aGUKICAgZW5kIG9mIHRoZSBsaW5lLgogCi0gIExpbnRlZCBleHRlbnNpb25zIGFyZSAu
Y3BwLCAuYyBhbmQgLmguICBPdGhlciBmaWxlIHR5cGVzIHdpbGwgYmUgaWdub3JlZC4KKyAgTGlu
dGVkIGV4dGVuc2lvbnMgYXJlIC5jcHAsIC5jIGFuZCAuaC4gIE90aGVyIGZpbGUgdHlwZXMgYXJl
IGlnbm9yZWQuCiAKLSAgVGhlIGZpbGUgcGFyYW1ldGVyIGlzIG9wdGlvbmFsIGFuZCBtdWx0aXBs
ZSBmaWxlcyB0byBzY2FuIGJlIHBhc3NlZCBpbi4KLSAgTGVhdmluZyBvdXQgdGhlIGZpbGUgcGFy
YW1ldGVyIHdpbGwgYXBwbHkgdGhlIGNoZWNrIHRvIHRoZSBmaWxlcyBjaGFuZ2VkCi0gIGFjY29y
ZGluZyB0byB0aGUgc2NtIHN5c3RlbS4KKyAgVGhlIGZpbGUgcGFyYW1ldGVyIGlzIG9wdGlvbmFs
IGFuZCBhY2NlcHRzIG11bHRpcGxlIGZpbGVzLiAgTGVhdmluZworICBvdXQgdGhlIGZpbGUgcGFy
YW1ldGVyIGFwcGxpZXMgdGhlIGNoZWNrIHRvIGFsbCBmaWxlcyBjb25zaWRlcmVkIGNoYW5nZWQK
KyAgYnkgeW91ciBzb3VyY2UgY29udHJvbCBtYW5hZ2VtZW50IHN5c3RlbS4KIAogICBGbGFnczoK
IAogICAgIHZlcmJvc2U9IwotICAgICAgU3BlY2lmeSBhIG51bWJlciAwLTUgdG8gcmVzdHJpY3Qg
ZXJyb3JzIHRvIGNlcnRhaW4gdmVyYm9zaXR5IGxldmVscy4KKyAgICAgIEEgbnVtYmVyIDAtNSB0
byByZXN0cmljdCBlcnJvcnMgdG8gY2VydGFpbiB2ZXJib3NpdHkgbGV2ZWxzLgorICAgICAgRGVm
YXVsdHMgdG8gJShkZWZhdWx0X3ZlcmJvc2l0eSlzLgogCiAgICAgZ2l0LWNvbW1pdD08U2luZ2xl
Q29tbWl0PgogICAgICAgQ2hlY2tzIHRoZSBzdHlsZSBvZiBldmVyeXRoaW5nIGZyb20gdGhlIGdp
dmVuIGNvbW1pdCB0byB0aGUgbG9jYWwgdHJlZS4KIAogICAgIG91dHB1dD12czcKLSAgICAgIEJ5
IGRlZmF1bHQsIHRoZSBvdXRwdXQgaXMgZm9ybWF0dGVkIHRvIGVhc2UgZW1hY3MgcGFyc2luZy4g
IFZpc3VhbCBTdHVkaW8KLSAgICAgIGNvbXBhdGlibGUgb3V0cHV0ICh2czcpIG1heSBhbHNvIGJl
IHVzZWQuICBPdGhlciBmb3JtYXRzIGFyZSB1bnN1cHBvcnRlZC4KKyAgICAgIFRoZSBvdXRwdXQg
Zm9ybWF0LCB3aGljaCBjYW4gYmUgb25lIG9mLS0KKyAgICAgICAgZW1hY3MgOiB0byBlYXNlIGVt
YWNzIHBhcnNpbmcKKyAgICAgICAgdnM3ICAgOiBjb21wYXRpYmxlIHdpdGggVmlzdWFsIFN0dWRp
bworICAgICAgRGVmYXVsdHMgdG8gIiUoZGVmYXVsdF9vdXRwdXRfZm9ybWF0KXMiLiBPdGhlciBm
b3JtYXRzIGFyZSB1bnN1cHBvcnRlZC4KIAogICAgIGZpbHRlcj0teCwreSwuLi4KLSAgICAgIFNw
ZWNpZnkgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjYXRlZ29yeS1maWx0ZXJzIHRvIGFwcGx5
OiBvbmx5Ci0gICAgICBlcnJvciBtZXNzYWdlcyB3aG9zZSBjYXRlZ29yeSBuYW1lcyBwYXNzIHRo
ZSBmaWx0ZXJzIHdpbGwgYmUgcHJpbnRlZC4KLSAgICAgIChDYXRlZ29yeSBuYW1lcyBhcmUgcHJp
bnRlZCB3aXRoIHRoZSBtZXNzYWdlIGFuZCBsb29rIGxpa2UKLSAgICAgICJbd2hpdGVzcGFjZS9p
bmRlbnRdIi4pICBGaWx0ZXJzIGFyZSBldmFsdWF0ZWQgbGVmdCB0byByaWdodC4KLSAgICAgICIt
Rk9PIiBhbmQgIkZPTyIgbWVhbnMgImRvIG5vdCBwcmludCBjYXRlZ29yaWVzIHRoYXQgc3RhcnQg
d2l0aCBGT08iLgotICAgICAgIitGT08iIG1lYW5zICJkbyBwcmludCBjYXRlZ29yaWVzIHRoYXQg
c3RhcnQgd2l0aCBGT08iLgorICAgICAgQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBib29sZWFu
IGZpbHRlciBydWxlcyB1c2VkIHRvIGZpbHRlcgorICAgICAgd2hpY2ggY2F0ZWdvcmllcyBvZiBz
dHlsZSBndWlkZWxpbmVzIHRvIGNoZWNrLiAgVGhlIHNjcmlwdCBjaGVja3MKKyAgICAgIGEgY2F0
ZWdvcnkgaWYgdGhlIGNhdGVnb3J5IHBhc3NlcyB0aGUgZmlsdGVyIHJ1bGVzLCBhcyBmb2xsb3dz
LgorCisgICAgICBBbnkgd2Via2l0IGNhdGVnb3J5IHN0YXJ0cyBvdXQgcGFzc2luZy4gIEFsbCBm
aWx0ZXIgcnVsZXMgYXJlIHRoZW4KKyAgICAgIGV2YWx1YXRlZCBsZWZ0IHRvIHJpZ2h0LCB3aXRo
IGxhdGVyIHJ1bGVzIHRha2luZyBwcmVjZWRlbmNlLiAgRm9yCisgICAgICBleGFtcGxlLCB0aGUg
cnVsZSAiK2ZvbyIgcGFzc2VzIGFueSBjYXRlZ29yeSB0aGF0IHN0YXJ0cyB3aXRoICJmb28iLAor
ICAgICAgYW5kICItZm9vIiBmYWlscyBhbnkgc3VjaCBjYXRlZ29yeS4gIFRoZSBmaWx0ZXIgaW5w
dXQgIi13aGl0ZXNwYWNlLAorICAgICAgK3doaXRlc3BhY2UvYnJhY2VzIiBmYWlscyB0aGUgY2F0
ZWdvcnkgIndoaXRlc3BhY2UvdGFiIiBhbmQgcGFzc2VzCisgICAgICAid2hpdGVzcGFjZS9icmFj
ZXMiLgogCiAgICAgICBFeGFtcGxlczogLS1maWx0ZXI9LXdoaXRlc3BhY2UsK3doaXRlc3BhY2Uv
YnJhY2VzCi0gICAgICAgICAgICAgICAgLS1maWx0ZXI9d2hpdGVzcGFjZSxydW50aW1lL3ByaW50
ZiwrcnVudGltZS9wcmludGZfZm9ybWF0CisgICAgICAgICAgICAgICAgLS1maWx0ZXI9LXdoaXRl
c3BhY2UsLXJ1bnRpbWUvcHJpbnRmLCtydW50aW1lL3ByaW50Zl9mb3JtYXQKICAgICAgICAgICAg
ICAgICAtLWZpbHRlcj0tLCtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZQogCi0gICAgICBUbyBz
ZWUgYSBsaXN0IG9mIGFsbCB0aGUgY2F0ZWdvcmllcyB1c2VkIGluICUocHJvZ3JhbV9uYW1lKXMs
IHBhc3Mgbm8gYXJnOgorICAgICAgQ2F0ZWdvcnkgbmFtZXMgYXBwZWFyIGluIGVycm9yIG1lc3Nh
Z2VzIGluIGJyYWNrZXRzLCBmb3IgZXhhbXBsZQorICAgICAgW3doaXRlc3BhY2UvaW5kZW50XS4g
IFRvIHNlZSBhIGxpc3Qgb2YgYWxsIGNhdGVnb3JpZXMgYXZhaWxhYmxlIHRvCisgICAgICAlKHBy
b2dyYW1fbmFtZSlzLCBhbG9uZyB3aXRoIHdoaWNoIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQsIHBh
c3MKKyAgICAgIHRoZSBlbXB0eSBmaWx0ZXIgYXMgZm9sbG93czoKICAgICAgICAgIC0tZmlsdGVy
PQotIiIiICUgeydwcm9ncmFtX25hbWUnOiBvcy5wYXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKX0K
KyIiIiAlIHsKKyAgICAncHJvZ3JhbV9uYW1lJzogb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlsw
XSksCisgICAgJ2RlZmF1bHRfdmVyYm9zaXR5JzogY3BwX3N0eWxlLl9ERUZBVUxUX1ZFUkJPU0lU
WSwKKyAgICAnZGVmYXVsdF9vdXRwdXRfZm9ybWF0JzogY3BwX3N0eWxlLl9ERUZBVUxUX09VVFBV
VF9GT1JNQVQKKyAgICB9CiAKIAogZGVmIHByb2Nlc3NfcGF0Y2gocGF0Y2hfc3RyaW5nKToKQEAg
LTEwMCwzMiArMTI1LDM0IEBAIGRlZiBwcm9jZXNzX3BhdGNoKHBhdGNoX3N0cmluZyk6CiAgICAg
Zm9yIGZpbGVuYW1lLCBkaWZmIGluIHBhdGNoLmZpbGVzLml0ZXJpdGVtcygpOgogICAgICAgICBm
aWxlX2V4dGVuc2lvbiA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzFdCiAKLSAgICAgICAg
aWYgZmlsZV9leHRlbnNpb24gaW4gWycuY3BwJywgJy5jJywgJy5oJ106Ci0gICAgICAgICAgICBs
aW5lX251bWJlcnMgPSBzZXQoKQorICAgICAgICBpZiBmaWxlX2V4dGVuc2lvbiBub3QgaW4gWycu
Y3BwJywgJy5jJywgJy5oJ106CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGxpbmVf
bnVtYmVycyA9IHNldCgpCiAKLSAgICAgICAgICAgIGRlZiBlcnJvcl9mb3JfcGF0Y2goZmlsZW5h
bWUsIGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSk6Ci0gICAgICAg
ICAgICAgICAgIiIiV3JhcHBlciBmdW5jdGlvbiBvZiBjcHBfc3R5bGUuZXJyb3IgZm9yIHBhdGNo
ZXMuCisgICAgICAgIGRlZiBlcnJvcl9mb3JfcGF0Y2goZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBj
YXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSk6CisgICAgICAgICAgICAiIiJXcmFwcGVyIGZ1
bmN0aW9uIG9mIGNwcF9zdHlsZS5lcnJvciBmb3IgcGF0Y2hlcy4KIAotICAgICAgICAgICAgICAg
IFRoaXMgZnVuY3Rpb24gb3V0cHV0cyBlcnJvcnMgb25seSBpZiB0aGUgbGluZSBudW1iZXIKLSAg
ICAgICAgICAgICAgICBjb3JyZXNwb25kcyB0byBsaW5lcyB3aGljaCBhcmUgbW9kaWZpZWQgb3Ig
YWRkZWQuCi0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICAgICAgaWYgbm90IGxpbmVf
bnVtYmVyczoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZGlmZi5saW5lczoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICMgV2hlbiBkZWxldGVkIGxpbmUgaXMgbm90IHNldCwgaXQg
bWVhbnMgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgbGluZSBpcyBuZXdseSBh
ZGRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lWzBdOgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVycy5hZGQobGluZVsxXSkKKyAgICAgICAgICAg
IFRoaXMgZnVuY3Rpb24gb3V0cHV0cyBlcnJvcnMgb25seSBpZiB0aGUgbGluZSBudW1iZXIKKyAg
ICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIGxpbmVzIHdoaWNoIGFyZSBtb2RpZmllZCBvciBhZGRl
ZC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaWYgbm90IGxpbmVfbnVtYmVyczoKKyAg
ICAgICAgICAgICAgICBmb3IgbGluZSBpbiBkaWZmLmxpbmVzOgorICAgICAgICAgICAgICAgICAg
ICAjIFdoZW4gZGVsZXRlZCBsaW5lIGlzIG5vdCBzZXQsIGl0IG1lYW5zIHRoYXQKKyAgICAgICAg
ICAgICAgICAgICAgIyB0aGUgbGluZSBpcyBuZXdseSBhZGRlZC4KKyAgICAgICAgICAgICAgICAg
ICAgaWYgbm90IGxpbmVbMF06CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlcnMu
YWRkKGxpbmVbMV0pCiAKLSAgICAgICAgICAgICAgICBpZiBsaW5lX251bWJlciBpbiBsaW5lX251
bWJlcnM6Ci0gICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5lcnJvcihmaWxlbmFtZSwgbGlu
ZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKQorICAgICAgICAgICAgaWYg
bGluZV9udW1iZXIgaW4gbGluZV9udW1iZXJzOgorICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5l
cnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdl
KQogCi0gICAgICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19maWxlKGZpbGVuYW1lLCBlcnJvcj1l
cnJvcl9mb3JfcGF0Y2gpCisgICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGUoZmlsZW5hbWUs
IGVycm9yPWVycm9yX2Zvcl9wYXRjaCkKIAogCiBkZWYgbWFpbigpOgotICAgIGNwcF9zdHlsZS51
c2Vfd2Via2l0X3N0eWxlcygpCisgICAgY3BwX3N0eWxlLl9ERUZBVUxUX0ZJTFRFUl9SVUxFUyA9
IGNwcF9zdHlsZS5fV0VCS0lUX0ZJTFRFUl9SVUxFUwogCi0gICAgKGZpbGVzLCBmbGFncykgPSBj
cHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKHN5cy5hcmd2WzE6XSwgWyJnaXQtY29tbWl0PSJdKQor
ICAgIChmaWxlcywgZmxhZ3MpID0gY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhzeXMuYXJndlsx
Ol0sIFsiZ2l0LWNvbW1pdD0iXSwgVHJ1ZSkKIAogICAgICMgQ2hhbmdlIHN0ZGVyciB0byB3cml0
ZSB3aXRoIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgc28gd2UgZG9uJ3QgZGllCiAgICAgIyBpZiB3
ZSB0cnkgdG8gcHJpbnQgc29tZXRoaW5nIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnMu
CkBAIC0xMzUsOSArMTYyLDggQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAncmVwbGFjZScpCiAKICAgICBpZiBmaWxlcyBhbmQgIi0tZ2l0
LWNvbW1pdCIgaW4gZmxhZ3M6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkVSUk9SOiBJdCBp
cyBub3QgcG9zc2libGUgdG8gY2hlY2sgZmlsZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiYW5kIGEgc3BlY2lmaWMgY29tbWl0IGF0IHRoZSBzYW1lIHRpbWUuXG4iICsgY3BwX3N0eWxl
Ll9VU0FHRSkKLSAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgY3BwX3N0eWxlLmV4aXRfd2l0
aF91c2FnZSgnSXQgaXMgbm90IHBvc3NpYmxlIHRvIGNoZWNrIGZpbGVzIGFuZCBhICcKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmaWMgY29tbWl0IGF0IHRoZSBzYW1l
IHRpbWUuJywgVHJ1ZSkKIAogICAgIGlmIGZpbGVzOgogICAgICAgICBmb3IgZmlsZW5hbWUgaW4g
ZmlsZXM6CkBAIC0xNTQsOSArMTgwLDEwIEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAgICAg
IyBzdGFydCB0aGVyZSAoc2VlIGdpdCBkaWZmIC0taGVscCBmb3IgaW5mb3JtYXRpb24gYWJvdXQg
aG93IC4uLiB1c3VhbGx5IHdvcmtzKS4KICAgICAgICAgICAgICAgICBjb21taXQgPSBjb21taXRb
OmNvbW1pdC5maW5kKCcuLicpXQogICAgICAgICAgICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIs
ICJXYXJuaW5nOiBSYW5nZXMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIC0tZ2l0LWNvbW1pdC4gQ2hl
Y2tpbmcgYWxsIGNoYW5nZXMgc2luY2UgJXMuXG4iICUgY29tbWl0Ci0gICAgICAgICAgICBwcm9j
ZXNzX3BhdGNoKHNjbS5jcmVhdGVfcGF0Y2hfc2luY2VfbG9jYWxfY29tbWl0KGNvbW1pdCkpCisg
ICAgICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2hfc2luY2VfbG9jYWxfY29tbWl0KGNv
bW1pdCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByb2Nlc3NfcGF0Y2goc2NtLmNyZWF0
ZV9wYXRjaCgpKQorICAgICAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKKyAgICAg
ICAgcHJvY2Vzc19wYXRjaChwYXRjaCkKIAogICAgIHN5cy5zdGRlcnIud3JpdGUoJ1RvdGFsIGVy
cm9ycyBmb3VuZDogJWRcbicgJSBjcHBfc3R5bGUuZXJyb3JfY291bnQoKSkKICAgICBzeXMuZXhp
dChjcHBfc3R5bGUuZXJyb3JfY291bnQoKSA+IDApCkluZGV4OiBTY3JpcHRzL21vZHVsZXMvY3Bw
X3N0eWxlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGUucHkJKHJl
dmlzaW9uIDUyMDY2KQorKysgU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZS5weQkod29ya2luZyBj
b3B5KQpAQCAtMzQsMTggKzM0LDcgQEAKICMgVGhpcyBpcyB0aGUgbW9kaWZpZWQgdmVyc2lvbiBv
ZiBHb29nbGUncyBjcHBsaW50LiBUaGUgb3JpZ2luYWwgY29kZSBpcwogIyBodHRwOi8vZ29vZ2xl
LXN0eWxlZ3VpZGUuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGxpbnQvY3BwbGludC5weQog
Ci0iIiJEb2VzIFdlYktpdC1saW50IG9uIGMrKyBmaWxlcy4KLQotVGhlIGdvYWwgb2YgdGhpcyBz
Y3JpcHQgaXMgdG8gaWRlbnRpZnkgcGxhY2VzIGluIHRoZSBjb2RlIHRoYXQgKm1heSoKLWJlIGlu
IG5vbi1jb21wbGlhbmNlIHdpdGggV2ViS2l0IHN0eWxlLiAgSXQgZG9lcyBub3QgYXR0ZW1wdCB0
byBmaXgKLXVwIHRoZXNlIHByb2JsZW1zIC0tIHRoZSBwb2ludCBpcyB0byBlZHVjYXRlLiAgSXQg
ZG9lcyBhbHNvIG5vdAotYXR0ZW1wdCB0byBmaW5kIGFsbCBwcm9ibGVtcywgb3IgdG8gZW5zdXJl
IHRoYXQgZXZlcnl0aGluZyBpdCBkb2VzCi1maW5kIGlzIGxlZ2l0aW1hdGVseSBhIHByb2JsZW0u
Ci0KLUluIHBhcnRpY3VsYXIsIHdlIGNhbiBnZXQgdmVyeSBjb25mdXNlZCBieSAvKiBhbmQgLy8g
aW5zaWRlIHN0cmluZ3MhCi1XZSBkbyBhIHNtYWxsIGhhY2ssIHdoaWNoIGlzIHRvIGlnbm9yZSAv
LydzIHdpdGggIidzIGFmdGVyIHRoZW0gb24gdGhlCi1zYW1lIGxpbmUsIGJ1dCBpdCBpcyBmYXIg
ZnJvbSBwZXJmZWN0IChpbiBlaXRoZXIgZGlyZWN0aW9uKS4KLSIiIgorIiIiU3VwcG9ydCBmb3Ig
Y2hlY2std2Via2l0LXN0eWxlLiIiIgogCiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgZ2V0b3B0CkBA
IC01OSwxMjEgKzQ4LDExOSBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pY29kZWRhdGEKIAogCi1f
VVNBR0UgPSAiIiIKLVN5bnRheDogJShwcm9ncmFtX25hbWUpcyBbLS12ZXJib3NlPSNdIFstLW91
dHB1dD12czddIFstLWZpbHRlcj0teCwreSwuLi5dCi0gICAgICAgIDxmaWxlPiBbZmlsZV0gLi4u
Ci0KLSAgVGhlIHN0eWxlIGd1aWRlbGluZXMgdGhpcyB0cmllcyB0byBmb2xsb3cgYXJlIHRob3Nl
IGluCi0gICAgaHR0cDovL3dlYmtpdC5vcmcvY29kaW5nL2NvZGluZy1zdHlsZS5odG1sCi0KLSAg
RXZlcnkgcHJvYmxlbSBpcyBnaXZlbiBhIGNvbmZpZGVuY2Ugc2NvcmUgZnJvbSAxLTUsIHdpdGgg
NSBtZWFuaW5nIHdlIGFyZQotICBjZXJ0YWluIG9mIHRoZSBwcm9ibGVtLCBhbmQgMSBtZWFuaW5n
IGl0IGNvdWxkIGJlIGEgbGVnaXRpbWF0ZSBjb25zdHJ1Y3QuCi0gIFRoaXMgd2lsbCBtaXNzIHNv
bWUgZXJyb3JzLCBhbmQgaXMgbm90IGEgc3Vic3RpdHV0ZSBmb3IgYSBjb2RlIHJldmlldy4KLQot
ICBUbyBwcmV2ZW50IHNwZWNpZmljIGxpbmVzIGZyb20gYmVpbmcgbGludGVkLCBhZGQgYSAnLy8g
Tk9MSU5UJyBjb21tZW50IHRvIHRoZQotICBlbmQgb2YgdGhlIGxpbmUuCi0KLSAgVGhlIGZpbGVz
IHBhc3NlZCBpbiB3aWxsIGJlIGxpbnRlZDsgYXQgbGVhc3Qgb25lIGZpbGUgbXVzdCBiZSBwcm92
aWRlZC4KLSAgTGludGVkIGV4dGVuc2lvbnMgYXJlIC5jcHAsIC5jIGFuZCAuaC4gIE90aGVyIGZp
bGUgdHlwZXMgd2lsbCBiZSBpZ25vcmVkLgotCi0gIEZsYWdzOgotCi0gICAgb3V0cHV0PXZzNwot
ICAgICAgQnkgZGVmYXVsdCwgdGhlIG91dHB1dCBpcyBmb3JtYXR0ZWQgdG8gZWFzZSBlbWFjcyBw
YXJzaW5nLiAgVmlzdWFsIFN0dWRpbwotICAgICAgY29tcGF0aWJsZSBvdXRwdXQgKHZzNykgbWF5
IGFsc28gYmUgdXNlZC4gIE90aGVyIGZvcm1hdHMgYXJlIHVuc3VwcG9ydGVkLgotCi0gICAgdmVy
Ym9zZT0jCi0gICAgICBTcGVjaWZ5IGEgbnVtYmVyIDAtNSB0byByZXN0cmljdCBlcnJvcnMgdG8g
Y2VydGFpbiB2ZXJib3NpdHkgbGV2ZWxzLgorIyBUaGlzIGlzIHNldCBieSBjaGVjay13ZWJraXQt
c3R5bGUuCitfVVNBR0UgPSAnJwogCi0gICAgZmlsdGVyPS14LCt5LC4uLgotICAgICAgU3BlY2lm
eSBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNhdGVnb3J5LWZpbHRlcnMgdG8gYXBwbHk6IG9u
bHkKLSAgICAgIGVycm9yIG1lc3NhZ2VzIHdob3NlIGNhdGVnb3J5IG5hbWVzIHBhc3MgdGhlIGZp
bHRlcnMgd2lsbCBiZSBwcmludGVkLgotICAgICAgKENhdGVnb3J5IG5hbWVzIGFyZSBwcmludGVk
IHdpdGggdGhlIG1lc3NhZ2UgYW5kIGxvb2sgbGlrZQotICAgICAgIlt3aGl0ZXNwYWNlL2luZGVu
dF0iLikgIEZpbHRlcnMgYXJlIGV2YWx1YXRlZCBsZWZ0IHRvIHJpZ2h0LgotICAgICAgIi1GT08i
IGFuZCAiRk9PIiBtZWFucyAiZG8gbm90IHByaW50IGNhdGVnb3JpZXMgdGhhdCBzdGFydCB3aXRo
IEZPTyIuCi0gICAgICAiK0ZPTyIgbWVhbnMgImRvIHByaW50IGNhdGVnb3JpZXMgdGhhdCBzdGFy
dCB3aXRoIEZPTyIuCiAKLSAgICAgIEV4YW1wbGVzOiAtLWZpbHRlcj0td2hpdGVzcGFjZSwrd2hp
dGVzcGFjZS9icmFjZXMKLSAgICAgICAgICAgICAgICAtLWZpbHRlcj13aGl0ZXNwYWNlLHJ1bnRp
bWUvcHJpbnRmLCtydW50aW1lL3ByaW50Zl9mb3JtYXQKLSAgICAgICAgICAgICAgICAtLWZpbHRl
cj0tLCtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZQorIyBEZWZhdWx0IG9wdGlvbnMKK19ERUZB
VUxUX1ZFUkJPU0lUWSA9IDEKK19ERUZBVUxUX09VVFBVVF9GT1JNQVQgPSAnZW1hY3MnCisKKwor
IyBGSVhNRTogRm9yIGZpbHRlcnMgd2Ugd2lsbCBuZXZlciB3YW50IHRvIGhhdmUsIHJlbW92ZSB0
aGVtLgorIyAgICAgICAgRm9yIGZpbHRlcnMgd2Ugd2FudCB0byBoYXZlIHNpbWlsYXIgZnVuY3Rp
b25hbGl0aWVzLAorIyAgICAgICAgbW9kaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgZW5hYmxl
IHRoZW0uCisjIEZJWE1FOiBBZGQgYSB1bml0IHRlc3QgdG8gZW5zdXJlIHRoZSBjb3JyZXNwb25k
aW5nIGNhdGVnb3JpZXMKKyMgICAgICAgIGFyZSBlbGVtZW50cyBvZiBfU1RZTEVfQ0FURUdPUklF
Uy4KK19XRUJLSVRfRklMVEVSX1JVTEVTID0gWworICAgICctYnVpbGQvZW5kaWZfY29tbWVudCcs
CisgICAgJy1idWlsZC9oZWFkZXJfZ3VhcmQnLAorICAgICctYnVpbGQvaW5jbHVkZV93aGF0X3lv
dV91c2UnLCAgIyA8c3RyaW5nPiBmb3Igc3RkOjpzdHJpbmcKKyAgICAnLWJ1aWxkL3N0b3JhZ2Vf
Y2xhc3MnLCAgIyBjb25zdCBzdGF0aWMKKyAgICAnLWxlZ2FsL2NvcHlyaWdodCcsCisgICAgJy1y
ZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudCcsCisgICAgJy1yZWFkYWJpbGl0eS9icmFjZXMn
LCAgIyBpbnQgZm9vKCkge307CisgICAgJy1yZWFkYWJpbGl0eS9mbl9zaXplJywKKyAgICAnLXJl
YWRhYmlsaXR5L2Nhc3RpbmcnLAorICAgICctcmVhZGFiaWxpdHkvZnVuY3Rpb24nLAorICAgICct
cnVudGltZS9hcnJheXMnLCAgIyB2YXJpYWJsZSBsZW5ndGggYXJyYXkKKyAgICAnLXJ1bnRpbWUv
Y2FzdGluZycsCisgICAgJy1ydW50aW1lL3NpemVvZicsCisgICAgJy1ydW50aW1lL2V4cGxpY2l0
JywgICMgZXhwbGljaXQKKyAgICAnLXJ1bnRpbWUvdmlydHVhbCcsICAjIHZpcnR1YWwgZHRvcgor
ICAgICctcnVudGltZS9wcmludGYnLAorICAgICctcnVudGltZS90aHJlYWRzYWZlX2ZuJywKKyAg
ICAnLXJ1bnRpbWUvcnR0aScsCisgICAgJy13aGl0ZXNwYWNlL2JsYW5rX2xpbmUnLAorICAgICct
d2hpdGVzcGFjZS9jb21tZW50cycsCisgICAgJy13aGl0ZXNwYWNlL2VuZF9vZl9saW5lJywKKyAg
ICAnLXdoaXRlc3BhY2UvbGFiZWxzJywKKyAgICBdCiAKLSAgICAgIFRvIHNlZSBhIGxpc3Qgb2Yg
YWxsIHRoZSBjYXRlZ29yaWVzIHVzZWQgaW4gJShwcm9ncmFtX25hbWUpcywgcGFzcyBubyBhcmc6
Ci0gICAgICAgICAtLWZpbHRlcj0KLSIiIiAlIHsncHJvZ3JhbV9uYW1lJzogc3lzLmFyZ3ZbMF19
CiAKLSMgV2UgY2F0ZWdvcml6ZSBlYWNoIGVycm9yIG1lc3NhZ2Ugd2UgcHJpbnQuICBIZXJlIGFy
ZSB0aGUgY2F0ZWdvcmllcy4KKyMgV2UgY2F0ZWdvcml6ZSBlYWNoIHN0eWxlIHJ1bGUgd2UgcHJp
bnQuICBIZXJlIGFyZSB0aGUgY2F0ZWdvcmllcy4KICMgV2Ugd2FudCBhbiBleHBsaWNpdCBsaXN0
IHNvIHdlIGNhbiBsaXN0IHRoZW0gYWxsIGluIGNwcF9zdHlsZSAtLWZpbHRlcj0uCiAjIElmIHlv
dSBhZGQgYSBuZXcgZXJyb3IgbWVzc2FnZSB3aXRoIGEgbmV3IGNhdGVnb3J5LCBhZGQgaXQgdG8g
dGhlIGxpc3QKICMgaGVyZSEgIGNwcF9zdHlsZV91bml0dGVzdC5weSBzaG91bGQgdGVsbCB5b3Ug
aWYgeW91IGZvcmdldCB0byBkbyB0aGlzLgotIyBcIHVzZWQgZm9yIGNsZWFyZXIgbGF5b3V0IC0t
IHB5bGludDogZGlzYWJsZS1tc2c9QzYwMTMKLV9FUlJPUl9DQVRFR09SSUVTID0gJycnXAotICAg
IGJ1aWxkL2NsYXNzCi0gICAgYnVpbGQvZGVwcmVjYXRlZAotICAgIGJ1aWxkL2VuZGlmX2NvbW1l
bnQKLSAgICBidWlsZC9mb3J3YXJkX2RlY2wKLSAgICBidWlsZC9oZWFkZXJfZ3VhcmQKLSAgICBi
dWlsZC9pbmNsdWRlCi0gICAgYnVpbGQvaW5jbHVkZV9vcmRlcgotICAgIGJ1aWxkL2luY2x1ZGVf
d2hhdF95b3VfdXNlCi0gICAgYnVpbGQvbmFtZXNwYWNlcwotICAgIGJ1aWxkL3ByaW50Zl9mb3Jt
YXQKLSAgICBidWlsZC9zdG9yYWdlX2NsYXNzCi0gICAgYnVpbGQvdXNpbmdfc3RkCi0gICAgbGVn
YWwvY29weXJpZ2h0Ci0gICAgcmVhZGFiaWxpdHkvYnJhY2VzCi0gICAgcmVhZGFiaWxpdHkvY2Fz
dGluZwotICAgIHJlYWRhYmlsaXR5L2NoZWNrCi0gICAgcmVhZGFiaWxpdHkvY29tcGFyaXNvbl90
b196ZXJvCi0gICAgcmVhZGFiaWxpdHkvY29uc3RydWN0b3JzCi0gICAgcmVhZGFiaWxpdHkvY29u
dHJvbF9mbG93Ci0gICAgcmVhZGFiaWxpdHkvZm5fc2l6ZQotICAgIHJlYWRhYmlsaXR5L2Z1bmN0
aW9uCi0gICAgcmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1lbnQKLSAgICByZWFkYWJpbGl0eS9t
dWx0aWxpbmVfc3RyaW5nCi0gICAgcmVhZGFiaWxpdHkvbmFtaW5nCi0gICAgcmVhZGFiaWxpdHkv
bnVsbAotICAgIHJlYWRhYmlsaXR5L3N0cmVhbXMKLSAgICByZWFkYWJpbGl0eS90b2RvCi0gICAg
cmVhZGFiaWxpdHkvdXRmOAotICAgIHJ1bnRpbWUvYXJyYXlzCi0gICAgcnVudGltZS9jYXN0aW5n
Ci0gICAgcnVudGltZS9leHBsaWNpdAotICAgIHJ1bnRpbWUvaW50Ci0gICAgcnVudGltZS9pbml0
Ci0gICAgcnVudGltZS9pbnZhbGlkX2luY3JlbWVudAotICAgIHJ1bnRpbWUvbWF4X21pbl9tYWNy
b3MKLSAgICBydW50aW1lL21lbXNldAotICAgIHJ1bnRpbWUvcHJpbnRmCi0gICAgcnVudGltZS9w
cmludGZfZm9ybWF0Ci0gICAgcnVudGltZS9yZWZlcmVuY2VzCi0gICAgcnVudGltZS9ydHRpCi0g
ICAgcnVudGltZS9zaXplb2YKLSAgICBydW50aW1lL3N0cmluZwotICAgIHJ1bnRpbWUvdGhyZWFk
c2FmZV9mbgotICAgIHJ1bnRpbWUvdmlydHVhbAotICAgIHdoaXRlc3BhY2UvYmxhbmtfbGluZQot
ICAgIHdoaXRlc3BhY2UvYnJhY2VzCi0gICAgd2hpdGVzcGFjZS9jb21tYQotICAgIHdoaXRlc3Bh
Y2UvY29tbWVudHMKLSAgICB3aGl0ZXNwYWNlL2RlY2xhcmF0aW9uCi0gICAgd2hpdGVzcGFjZS9l
bmRfb2ZfbGluZQotICAgIHdoaXRlc3BhY2UvZW5kaW5nX25ld2xpbmUKLSAgICB3aGl0ZXNwYWNl
L2luZGVudAotICAgIHdoaXRlc3BhY2UvbGFiZWxzCi0gICAgd2hpdGVzcGFjZS9saW5lX2xlbmd0
aAotICAgIHdoaXRlc3BhY2UvbmV3bGluZQotICAgIHdoaXRlc3BhY2Uvb3BlcmF0b3JzCi0gICAg
d2hpdGVzcGFjZS9wYXJlbnMKLSAgICB3aGl0ZXNwYWNlL3NlbWljb2xvbgotICAgIHdoaXRlc3Bh
Y2UvdGFiCi0gICAgd2hpdGVzcGFjZS90b2RvCi0nJycKK19TVFlMRV9DQVRFR09SSUVTID0gWwor
ICAgICdidWlsZC9jbGFzcycsCisgICAgJ2J1aWxkL2RlcHJlY2F0ZWQnLAorICAgICdidWlsZC9l
bmRpZl9jb21tZW50JywKKyAgICAnYnVpbGQvZm9yd2FyZF9kZWNsJywKKyAgICAnYnVpbGQvaGVh
ZGVyX2d1YXJkJywKKyAgICAnYnVpbGQvaW5jbHVkZScsCisgICAgJ2J1aWxkL2luY2x1ZGVfb3Jk
ZXInLAorICAgICdidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZScsCisgICAgJ2J1aWxkL25hbWVz
cGFjZXMnLAorICAgICdidWlsZC9wcmludGZfZm9ybWF0JywKKyAgICAnYnVpbGQvc3RvcmFnZV9j
bGFzcycsCisgICAgJ2J1aWxkL3VzaW5nX3N0ZCcsCisgICAgJ2xlZ2FsL2NvcHlyaWdodCcsCisg
ICAgJ3JlYWRhYmlsaXR5L2JyYWNlcycsCisgICAgJ3JlYWRhYmlsaXR5L2Nhc3RpbmcnLAorICAg
ICdyZWFkYWJpbGl0eS9jaGVjaycsCisgICAgJ3JlYWRhYmlsaXR5L2NvbXBhcmlzb25fdG9femVy
bycsCisgICAgJ3JlYWRhYmlsaXR5L2NvbnN0cnVjdG9ycycsCisgICAgJ3JlYWRhYmlsaXR5L2Nv
bnRyb2xfZmxvdycsCisgICAgJ3JlYWRhYmlsaXR5L2ZuX3NpemUnLAorICAgICdyZWFkYWJpbGl0
eS9mdW5jdGlvbicsCisgICAgJ3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50JywKKyAgICAn
cmVhZGFiaWxpdHkvbXVsdGlsaW5lX3N0cmluZycsCisgICAgJ3JlYWRhYmlsaXR5L25hbWluZycs
CisgICAgJ3JlYWRhYmlsaXR5L251bGwnLAorICAgICdyZWFkYWJpbGl0eS9zdHJlYW1zJywKKyAg
ICAncmVhZGFiaWxpdHkvdG9kbycsCisgICAgJ3JlYWRhYmlsaXR5L3V0ZjgnLAorICAgICdydW50
aW1lL2FycmF5cycsCisgICAgJ3J1bnRpbWUvY2FzdGluZycsCisgICAgJ3J1bnRpbWUvZXhwbGlj
aXQnLAorICAgICdydW50aW1lL2luaXQnLAorICAgICdydW50aW1lL2ludCcsCisgICAgJ3J1bnRp
bWUvaW52YWxpZF9pbmNyZW1lbnQnLAorICAgICdydW50aW1lL21heF9taW5fbWFjcm9zJywKKyAg
ICAncnVudGltZS9tZW1zZXQnLAorICAgICdydW50aW1lL3ByaW50ZicsCisgICAgJ3J1bnRpbWUv
cHJpbnRmX2Zvcm1hdCcsCisgICAgJ3J1bnRpbWUvcmVmZXJlbmNlcycsCisgICAgJ3J1bnRpbWUv
cnR0aScsCisgICAgJ3J1bnRpbWUvc2l6ZW9mJywKKyAgICAncnVudGltZS9zdHJpbmcnLAorICAg
ICdydW50aW1lL3RocmVhZHNhZmVfZm4nLAorICAgICdydW50aW1lL3ZpcnR1YWwnLAorICAgICd3
aGl0ZXNwYWNlL2JsYW5rX2xpbmUnLAorICAgICd3aGl0ZXNwYWNlL2JyYWNlcycsCisgICAgJ3do
aXRlc3BhY2UvY29tbWEnLAorICAgICd3aGl0ZXNwYWNlL2NvbW1lbnRzJywKKyAgICAnd2hpdGVz
cGFjZS9kZWNsYXJhdGlvbicsCisgICAgJ3doaXRlc3BhY2UvZW5kX29mX2xpbmUnLAorICAgICd3
aGl0ZXNwYWNlL2VuZGluZ19uZXdsaW5lJywKKyAgICAnd2hpdGVzcGFjZS9pbmRlbnQnLAorICAg
ICd3aGl0ZXNwYWNlL2xhYmVscycsCisgICAgJ3doaXRlc3BhY2UvbGluZV9sZW5ndGgnLAorICAg
ICd3aGl0ZXNwYWNlL25ld2xpbmUnLAorICAgICd3aGl0ZXNwYWNlL29wZXJhdG9ycycsCisgICAg
J3doaXRlc3BhY2UvcGFyZW5zJywKKyAgICAnd2hpdGVzcGFjZS9zZW1pY29sb24nLAorICAgICd3
aGl0ZXNwYWNlL3RhYicsCisgICAgJ3doaXRlc3BhY2UvdG9kbycsCisgICAgXQorCiAKICMgVGhl
IGRlZmF1bHQgc3RhdGUgb2YgdGhlIGNhdGVnb3J5IGZpbHRlci4gVGhpcyBpcyBvdmVycmlkZWQg
YnkgdGhlIC0tZmlsdGVyPQogIyBmbGFnLiBCeSBkZWZhdWx0IGFsbCBlcnJvcnMgYXJlIG9uLCBz
byBvbmx5IGFkZCBoZXJlIGNhdGVnb3JpZXMgdGhhdCBzaG91bGQgYmUKICMgb2ZmIGJ5IGRlZmF1
bHQgKGkuZS4sIGNhdGVnb3JpZXMgdGhhdCBtdXN0IGJlIGVuYWJsZWQgYnkgdGhlIC0tZmlsdGVy
PSBmbGFncykuCiAjIEFsbCBlbnRyaWVzIGhlcmUgc2hvdWxkIHN0YXJ0IHdpdGggYSAnLScgb3Ig
JysnLCBhcyBpbiB0aGUgLS1maWx0ZXI9IGZsYWcuCi1fREVGQVVMVF9GSUxURVJTID0gW10KK19E
RUZBVUxUX0ZJTFRFUl9SVUxFUyA9IFtdCiAKICMgSGVhZGVycyB0aGF0IHdlIGNvbnNpZGVyIFNU
TCBoZWFkZXJzLgogX1NUTF9IRUFERVJTID0gZnJvemVuc2V0KFsKQEAgLTM3MCwxNSArMzU3LDE1
IEBAIGNsYXNzIF9DcHBTdHlsZVN0YXRlKG9iamVjdCk6CiAgICAgIiIiTWFpbnRhaW5zIG1vZHVs
ZS13aWRlIHN0YXRlLi4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2Vs
Zi52ZXJib3NlX2xldmVsID0gMSAgIyBnbG9iYWwgc2V0dGluZy4KKyAgICAgICAgc2VsZi52ZXJi
b3NlX2xldmVsID0gX0RFRkFVTFRfVkVSQk9TSVRZICAjIGdsb2JhbCBzZXR0aW5nLgogICAgICAg
ICBzZWxmLmVycm9yX2NvdW50ID0gMCAgICAjIGdsb2JhbCBjb3VudCBvZiByZXBvcnRlZCBlcnJv
cnMKICAgICAgICAgIyBmaWx0ZXJzIHRvIGFwcGx5IHdoZW4gZW1pdHRpbmcgZXJyb3IgbWVzc2Fn
ZXMKLSAgICAgICAgc2VsZi5maWx0ZXJzID0gX0RFRkFVTFRfRklMVEVSU1s6XQorICAgICAgICBz
ZWxmLmZpbHRlcnMgPSBfREVGQVVMVF9GSUxURVJfUlVMRVNbOl0KIAogICAgICAgICAjIG91dHB1
dCBmb3JtYXQ6CiAgICAgICAgICMgImVtYWNzIiAtIGZvcm1hdCB0aGF0IGVtYWNzIGNhbiBwYXJz
ZSAoZGVmYXVsdCkKICAgICAgICAgIyAidnM3IiAtIGZvcm1hdCB0aGF0IE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvIDcgY2FuIHBhcnNlCi0gICAgICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9ICdlbWFj
cycKKyAgICAgICAgc2VsZi5vdXRwdXRfZm9ybWF0ID0gX0RFRkFVTFRfT1VUUFVUX0ZPUk1BVAog
CiAgICAgZGVmIHNldF9vdXRwdXRfZm9ybWF0KHNlbGYsIG91dHB1dF9mb3JtYXQpOgogICAgICAg
ICAiIiJTZXRzIHRoZSBvdXRwdXQgZm9ybWF0IGZvciBlcnJvcnMuIiIiCkBAIC00MDUsNyArMzky
LDcgQEAgY2xhc3MgX0NwcFN0eWxlU3RhdGUob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAg
ICBFLmcuICItLCt3aGl0ZXNwYWNlLC13aGl0ZXNwYWNlL2luZGVudCx3aGl0ZXNwYWNlL2JhZGZp
bHRlciIKICAgICAgICAgIiIiCiAgICAgICAgICMgRGVmYXVsdCBmaWx0ZXJzIGFsd2F5cyBoYXZl
IGxlc3MgcHJpb3JpdHkgdGhhbiB0aGUgZmxhZyBvbmVzLgotICAgICAgICBzZWxmLmZpbHRlcnMg
PSBfREVGQVVMVF9GSUxURVJTWzpdCisgICAgICAgIHNlbGYuZmlsdGVycyA9IF9ERUZBVUxUX0ZJ
TFRFUl9SVUxFU1s6XQogICAgICAgICBmb3IgZmlsdGVyIGluIGZpbHRlcnMuc3BsaXQoJywnKToK
ICAgICAgICAgICAgIGNsZWFuX2ZpbHRlciA9IGZpbHRlci5zdHJpcCgpCiAgICAgICAgICAgICBp
ZiBjbGVhbl9maWx0ZXI6CkBAIC0zMTc5LDI5ICszMTY2LDQ3IEBAIGRlZiBwcm9jZXNzX2ZpbGUo
ZmlsZW5hbWUsIGVycm9yPWVycm9yKToKICAgICAgICAgICAgICAgICAgICdiZXR0ZXIgdG8gdXNl
IG9ubHkgYSBcXG4nKQogCiAKLWRlZiBwcmludF91c2FnZShtZXNzYWdlKToKLSAgICAiIiJQcmlu
dHMgYSBicmllZiB1c2FnZSBzdHJpbmcgYW5kIGV4aXRzLCBvcHRpb25hbGx5IHdpdGggYW4gZXJy
b3IgbWVzc2FnZS4KK2RlZiBleGl0X3dpdGhfdXNhZ2UoZXJyb3JfbWVzc2FnZSwgZGlzcGxheV9o
ZWxwPUZhbHNlKToKKyAgICAiIiJFeGl0IGFuZCBwcmludCBhIHVzYWdlIHN0cmluZyB3aXRoIGFu
IG9wdGlvbmFsIGVycm9yIG1lc3NhZ2UuCiAKICAgICBBcmdzOgotICAgICAgbWVzc2FnZTogVGhl
IG9wdGlvbmFsIGVycm9yIG1lc3NhZ2UuCisgICAgICBlcnJvcl9tZXNzYWdlOiBUaGUgb3B0aW9u
YWwgZXJyb3IgbWVzc2FnZS4KKyAgICAgIGRpc3BsYXlfaGVscDogV2hldGhlciB0byBkaXNwbGF5
IGhlbHAgb3V0cHV0LiBTdXBwcmVzc2luZyBoZWxwCisgICAgICAgICAgICAgICAgICAgIG91dHB1
dCBpcyB1c2VmdWwgZm9yIHVuaXQgdGVzdHMuCiAgICAgIiIiCi0gICAgc3lzLnN0ZGVyci53cml0
ZShfVVNBR0UpCi0gICAgaWYgbWVzc2FnZToKLSAgICAgICAgc3lzLmV4aXQoJ1xuRkFUQUwgRVJS
T1I6ICcgKyBtZXNzYWdlKQorICAgIGlmIGRpc3BsYXlfaGVscDoKKyAgICAgICAgc3lzLnN0ZGVy
ci53cml0ZShfVVNBR0UpCisgICAgaWYgZXJyb3JfbWVzc2FnZToKKyAgICAgICAgc3lzLmV4aXQo
J1xuRkFUQUwgRVJST1I6ICcgKyBlcnJvcl9tZXNzYWdlKQogICAgIGVsc2U6CiAgICAgICAgIHN5
cy5leGl0KDEpCiAKIAotZGVmIHByaW50X2NhdGVnb3JpZXMoKToKLSAgICAiIiJQcmludHMgYSBs
aXN0IG9mIGFsbCB0aGUgZXJyb3ItY2F0ZWdvcmllcyB1c2VkIGJ5IGVycm9yIG1lc3NhZ2VzLgor
ZGVmIGV4aXRfd2l0aF9jYXRlZ29yaWVzKGRpc3BsYXlfaGVscD1GYWxzZSk6CisgICAgIiIiRXhp
dCBhbmQgcHJpbnQgYWxsIHN0eWxlIGNhdGVnb3JpZXMsIGFsb25nIHdpdGggdGhlIGRlZmF1bHQg
ZmlsdGVyLgorCisgICAgVGhlc2UgY2F0ZWdvcnkgbmFtZXMgYXBwZWFyIGluIGVycm9yIG1lc3Nh
Z2VzLiAgVGhleSBjYW4gYmUgZmlsdGVyZWQKKyAgICB1c2luZyB0aGUgLS1maWx0ZXIgZmxhZy4K
KworICAgIEFyZ3M6CisgICAgICBkaXNwbGF5X2hlbHA6IFdoZXRoZXIgdG8gZGlzcGxheSBoZWxw
IG91dHB1dC4gU3VwcHJlc3NpbmcgaGVscAorICAgICAgICAgICAgICAgICAgICBvdXRwdXQgaXMg
dXNlZnVsIGZvciB1bml0IHRlc3RzLgorICAgICIiIgorICAgIGlmIGRpc3BsYXlfaGVscDoKKyAg
ICAgICAgc3lzLnN0ZGVyci53cml0ZSgnXG5BbGwgY2F0ZWdvcmllczpcbicpCisgICAgICAgIGZv
ciBjYXRlZ29yeSBpbiBzb3J0ZWQoX1NUWUxFX0NBVEVHT1JJRVMpOgorICAgICAgICAgICAgc3lz
LnN0ZGVyci53cml0ZSgnICAgICcgKyBjYXRlZ29yeSArICdcbicpCisKKyAgICAgICAgc3lzLnN0
ZGVyci53cml0ZSgnXG5EZWZhdWx0IGZpbHRlciBydWxlcyoqOlxuJykKKyAgICAgICAgZm9yIGZp
bHRlcl9ydWxlIGluIHNvcnRlZChfV0VCS0lUX0ZJTFRFUl9SVUxFUyk6CisgICAgICAgICAgICBz
eXMuc3RkZXJyLndyaXRlKCcgICAgJyArIGZpbHRlcl9ydWxlICsgJ1xuJykKKyAgICAgICAgc3lz
LnN0ZGVyci53cml0ZSgnXG4qKlRoZSBjb21tYW5kIGFsd2F5cyBldmFsdWF0ZXMgdGhlIGFib3Zl
ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAncnVsZXMsIGFuZCBiZWZvcmUgYW55IC0tZmls
dGVyIGZsYWcuXG5cbicpCiAKLSAgICBUaGVzZSBhcmUgdGhlIGNhdGVnb3JpZXMgdXNlZCB0byBm
aWx0ZXIgbWVzc2FnZXMgdmlhIC0tZmlsdGVyLgotICAgICIiIgotICAgIHN5cy5zdGRlcnIud3Jp
dGUoX0VSUk9SX0NBVEVHT1JJRVMpCiAgICAgc3lzLmV4aXQoMCkKIAogCi1kZWYgcGFyc2VfYXJn
dW1lbnRzKGFyZ3MsIGFkZGl0aW9uYWxfZmxhZ3M9W10pOgorZGVmIHBhcnNlX2FyZ3VtZW50cyhh
cmdzLCBhZGRpdGlvbmFsX2ZsYWdzPVtdLCBkaXNwbGF5X2hlbHA9RmFsc2UpOgogICAgICIiIlBh
cnNlcyB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KIAogICAgIFRoaXMgbWF5IHNldCB0aGUg
b3V0cHV0IGZvcm1hdCBhbmQgdmVyYm9zaXR5IGxldmVsIGFzIHNpZGUtZWZmZWN0cy4KQEAgLTMy
MDksNiArMzIxNCw4IEBAIGRlZiBwYXJzZV9hcmd1bWVudHMoYXJncywgYWRkaXRpb25hbF9mbGEK
ICAgICBBcmdzOgogICAgICAgYXJnczogVGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHM6CiAgICAg
ICBhZGRpdGlvbmFsX2ZsYWdzOiBBIGxpc3Qgb2Ygc3RyaW5ncyB3aGljaCBzcGVjaWZpZXMgZmxh
Z3Mgd2UgYWxsb3cuCisgICAgICBkaXNwbGF5X2hlbHA6IFdoZXRoZXIgdG8gZGlzcGxheSBoZWxw
IG91dHB1dC4gU3VwcHJlc3NpbmcgaGVscAorICAgICAgICAgICAgICAgICAgICBvdXRwdXQgaXMg
dXNlZnVsIGZvciB1bml0IHRlc3RzLgogCiAgICAgUmV0dXJuczoKICAgICAgIEEgdHVwbGUgb2Yg
KGZpbGVuYW1lcywgZmxhZ3MpCkBAIC0zMjIxLDcgKzMyMjgsNyBAQCBkZWYgcGFyc2VfYXJndW1l
bnRzKGFyZ3MsIGFkZGl0aW9uYWxfZmxhCiAgICAgdHJ5OgogICAgICAgICAob3B0cywgZmlsZW5h
bWVzKSA9IGdldG9wdC5nZXRvcHQoYXJncywgJycsIGZsYWdzKQogICAgIGV4Y2VwdCBnZXRvcHQu
R2V0b3B0RXJyb3I6Ci0gICAgICAgIHByaW50X3VzYWdlKCdJbnZhbGlkIGFyZ3VtZW50cy4nKQor
ICAgICAgICBleGl0X3dpdGhfdXNhZ2UoJ0ludmFsaWQgYXJndW1lbnRzLicsIGRpc3BsYXlfaGVs
cCkKIAogICAgIHZlcmJvc2l0eSA9IF92ZXJib3NlX2xldmVsKCkKICAgICBvdXRwdXRfZm9ybWF0
ID0gX291dHB1dF9mb3JtYXQoKQpAQCAtMzIyOSwxNyArMzIzNiwxOCBAQCBkZWYgcGFyc2VfYXJn
dW1lbnRzKGFyZ3MsIGFkZGl0aW9uYWxfZmxhCiAKICAgICBmb3IgKG9wdCwgdmFsKSBpbiBvcHRz
OgogICAgICAgICBpZiBvcHQgPT0gJy0taGVscCc6Ci0gICAgICAgICAgICBwcmludF91c2FnZShO
b25lKQorICAgICAgICAgICAgZXhpdF93aXRoX3VzYWdlKE5vbmUsIGRpc3BsYXlfaGVscCkKICAg
ICAgICAgZWxpZiBvcHQgPT0gJy0tb3V0cHV0JzoKICAgICAgICAgICAgIGlmIG5vdCB2YWwgaW4g
KCdlbWFjcycsICd2czcnKToKLSAgICAgICAgICAgICAgICBwcmludF91c2FnZSgnVGhlIG9ubHkg
YWxsb3dlZCBvdXRwdXQgZm9ybWF0cyBhcmUgZW1hY3MgYW5kIHZzNy4nKQorICAgICAgICAgICAg
ICAgIGV4aXRfd2l0aF91c2FnZSgnVGhlIG9ubHkgYWxsb3dlZCBvdXRwdXQgZm9ybWF0cyBhcmUg
ZW1hY3MgYW5kIHZzNy4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5
X2hlbHApCiAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0ID0gdmFsCiAgICAgICAgIGVsaWYgb3B0
ID09ICctLXZlcmJvc2UnOgogICAgICAgICAgICAgdmVyYm9zaXR5ID0gaW50KHZhbCkKICAgICAg
ICAgZWxpZiBvcHQgPT0gJy0tZmlsdGVyJzoKICAgICAgICAgICAgIGZpbHRlcnMgPSB2YWwKICAg
ICAgICAgICAgIGlmIG5vdCBmaWx0ZXJzOgotICAgICAgICAgICAgICAgIHByaW50X2NhdGVnb3Jp
ZXMoKQorICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9jYXRlZ29yaWVzKGRpc3BsYXlfaGVscCkK
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFkZGl0aW9uYWxfZmxhZ192YWx1ZXNbb3B0XSA9
IHZhbAogCkBAIC0zMjQ4LDcxICszMjU2LDMgQEAgZGVmIHBhcnNlX2FyZ3VtZW50cyhhcmdzLCBh
ZGRpdGlvbmFsX2ZsYQogICAgIF9zZXRfZmlsdGVycyhmaWx0ZXJzKQogCiAgICAgcmV0dXJuIChm
aWxlbmFtZXMsIGFkZGl0aW9uYWxfZmxhZ192YWx1ZXMpCi0KLQotZGVmIHVzZV93ZWJraXRfc3R5
bGVzKCk6Ci0gICAgIiIiRGlzYWJsZXMgc29tZSBmZWF0dXJlcyB3aGljaCBhcmUgbm90IHN1aXRh
YmxlIGZvciBXZWJLaXQuIiIiCi0gICAgIyBGSVhNRTogRm9yIGZpbHRlcnMgd2Ugd2lsbCBuZXZl
ciB3YW50IHRvIGhhdmUsIHJlbW92ZSB0aGVtLgotICAgICMgICAgICAgIEZvciBmaWx0ZXJzIHdl
IHdhbnQgdG8gaGF2ZSBzaW1pbGFyIGZ1bmN0aW9uYWxpdGllcywKLSAgICAjICAgICAgICBtb2Rp
ZnkgdGhlIGltcGxlbWVudGF0aW9uIGFuZCBlbmFibGUgdGhlbS4KLSAgICBnbG9iYWwgX0RFRkFV
TFRfRklMVEVSUwotICAgIF9ERUZBVUxUX0ZJTFRFUlMgPSBbCi0gICAgICAgICctd2hpdGVzcGFj
ZS9lbmRfb2ZfbGluZScsCi0gICAgICAgICctd2hpdGVzcGFjZS9jb21tZW50cycsCi0gICAgICAg
ICctd2hpdGVzcGFjZS9ibGFua19saW5lJywKLSAgICAgICAgJy1ydW50aW1lL2V4cGxpY2l0Jywg
ICMgZXhwbGljaXQKLSAgICAgICAgJy1ydW50aW1lL3ZpcnR1YWwnLCAgIyB2aXJ0dWFsIGR0b3IK
LSAgICAgICAgJy1ydW50aW1lL3ByaW50ZicsCi0gICAgICAgICctcnVudGltZS90aHJlYWRzYWZl
X2ZuJywKLSAgICAgICAgJy1ydW50aW1lL3J0dGknLAotICAgICAgICAnLWJ1aWxkL2luY2x1ZGVf
d2hhdF95b3VfdXNlJywgICMgPHN0cmluZz4gZm9yIHN0ZDo6c3RyaW5nCi0gICAgICAgICctbGVn
YWwvY29weXJpZ2h0JywKLSAgICAgICAgJy1yZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudCcs
Ci0gICAgICAgICctcmVhZGFiaWxpdHkvYnJhY2VzJywgICMgaW50IGZvbygpIHt9OwotICAgICAg
ICAnLXJlYWRhYmlsaXR5L2ZuX3NpemUnLAotICAgICAgICAnLWJ1aWxkL3N0b3JhZ2VfY2xhc3Mn
LCAgIyBjb25zdCBzdGF0aWMKLSAgICAgICAgJy1idWlsZC9lbmRpZl9jb21tZW50JywKLSAgICAg
ICAgJy13aGl0ZXNwYWNlL2xhYmVscycsCi0gICAgICAgICctcnVudGltZS9hcnJheXMnLCAgIyB2
YXJpYWJsZSBsZW5ndGggYXJyYXkKLSAgICAgICAgJy1idWlsZC9oZWFkZXJfZ3VhcmQnLAotICAg
ICAgICAnLXJlYWRhYmlsaXR5L2Nhc3RpbmcnLAotICAgICAgICAnLXJlYWRhYmlsaXR5L2Z1bmN0
aW9uJywKLSAgICAgICAgJy1ydW50aW1lL2Nhc3RpbmcnLAotICAgICAgICAnLXJ1bnRpbWUvc2l6
ZW9mJywKLSAgICBdCi0KLQotZGVmIG1haW4oKToKLSAgICBzeXMuc3RkZXJyLndyaXRlKAotICAg
ICAgICAnJycqKioqKioqKioqKioqKioqKioqKiogV0FSTklORyBXQVJOSU5HIFdBUk5JTkcgKioq
KioqKioqKioqKioqKioqKioqCi0KLVRoaXMgdG9vbCBpcyBpbiB0aGUgcHJvY2VzcyBvZiBkZXZl
bG9wbWVudCBhbmQgbWF5IGdpdmUgaW5hY2N1cmF0ZQotcmVzdWx0cyBhdCBwcmVzZW50LiAgUGxl
YXNlIGZpbGUgYnVncyAoYW5kL29yIHBhdGNoZXMpIGZvciB0aGluZ3MKLXRoYXQgeW91IG5vdGlj
ZSB0aGF0IGl0IGZsYWdzIGluY29ycmVjdGx5LgotCi0qKioqKioqKioqKioqKioqKioqKiogV0FS
TklORyBXQVJOSU5HIFdBUk5JTkcgKioqKioqKioqKioqKioqKioqKioqCi0KLScnJykKLQotICAg
IHVzZV93ZWJraXRfc3R5bGVzKCkKLQotICAgIChmaWxlbmFtZXMsIGZsYWdzKSA9IHBhcnNlX2Fy
Z3VtZW50cyhzeXMuYXJndlsxOl0pCi0gICAgaWYgbm90IGZpbGVuYW1lczoKLSAgICAgICAgcHJp
bnRfdXNhZ2UoJ05vIGZpbGVzIHdlcmUgc3BlY2lmaWVkLicpCi0KLSAgICAjIENoYW5nZSBzdGRl
cnIgdG8gd3JpdGUgd2l0aCByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIHNvIHdlIGRvbid0IGRpZQot
ICAgICMgaWYgd2UgdHJ5IHRvIHByaW50IHNvbWV0aGluZyBjb250YWluaW5nIG5vbi1BU0NJSSBj
aGFyYWN0ZXJzLgotICAgIHN5cy5zdGRlcnIgPSBjb2RlY3MuU3RyZWFtUmVhZGVyV3JpdGVyKHN5
cy5zdGRlcnIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29k
ZWNzLmdldHJlYWRlcigndXRmOCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvZGVjcy5nZXR3cml0ZXIoJ3V0ZjgnKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAncmVwbGFjZScpCi0KLSAgICBfY3BwX3N0eWxlX3N0YXRl
LnJlc2V0X2Vycm9yX2NvdW50KCkKLSAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgotICAg
ICAgICBwcm9jZXNzX2ZpbGUoZmlsZW5hbWUpCi0gICAgc3lzLnN0ZGVyci53cml0ZSgnVG90YWwg
ZXJyb3JzIGZvdW5kOiAlZFxuJyAlIF9jcHBfc3R5bGVfc3RhdGUuZXJyb3JfY291bnQpCi0gICAg
c3lzLmV4aXQoX2NwcF9zdHlsZV9zdGF0ZS5lcnJvcl9jb3VudCA+IDApCi0KLQotaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKLSAgICBtYWluKCkKSW5kZXg6IFNjcmlwdHMvbW9kdWxlcy9jcHBf
c3R5bGVfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHls
ZV91bml0dGVzdC5weQkocmV2aXNpb24gNTIwNjYpCisrKyBTY3JpcHRzL21vZHVsZXMvY3BwX3N0
eWxlX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUsMTEgQEAgaW1wb3J0
IGNwcF9zdHlsZQogCiAjIFRoaXMgY2xhc3Mgd29ya3MgYXMgYW4gZXJyb3IgY29sbGVjdG9yIGFu
ZCByZXBsYWNlcyBjcHBfc3R5bGUuRXJyb3IKICMgZnVuY3Rpb24gZm9yIHRoZSB1bml0IHRlc3Rz
LiAgV2UgYWxzbyB2ZXJpZnkgZWFjaCBjYXRlZ29yeSB3ZSBzZWUKLSMgaXMgaW4gY3BwX3N0eWxl
Ll9FUlJPUl9DQVRFR09SSUVTLCB0byBoZWxwIGtlZXAgdGhhdCBsaXN0IHVwIHRvIGRhdGUuCisj
IGlzIGluIGNwcF9zdHlsZS5fU1RZTEVfQ0FURUdPUklFUywgdG8gaGVscCBrZWVwIHRoYXQgbGlz
dCB1cCB0byBkYXRlLgogY2xhc3MgRXJyb3JDb2xsZWN0b3I6Ci0gICAgIyBUaGVzZSBhcmUgYSBn
bG9iYWwgbGlzdCwgY292ZXJpbmcgYWxsIGNhdGVnb3JpZXMgc2VlbiBldmVyLgotICAgIF9FUlJP
Ul9DQVRFR09SSUVTID0gW3guc3RyaXAoKSAgICAjIGdldCByaWQgb2YgbGVhZGluZyB3aGl0ZXNw
YWNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gY3BwX3N0eWxlLl9FUlJPUl9D
QVRFR09SSUVTLnNwbGl0KCldCi0gICAgX1NFRU5fRVJST1JfQ0FURUdPUklFUyA9IHt9CisgICAg
X2FsbF9zdHlsZV9jYXRlZ29yaWVzID0gY3BwX3N0eWxlLl9TVFlMRV9DQVRFR09SSUVTCisgICAg
IyBUaGlzIGEgbGlzdCBpbmNsdWRpbmcgYWxsIGNhdGVnb3JpZXMgc2VlbiBpbiBhbnkgdW5pdCB0
ZXN0LgorICAgIF9zZWVuX3N0eWxlX2NhdGVnb3JpZXMgPSB7fQogCiAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGFzc2VydF9mbik6CiAgICAgICAgICIiImFzc2VydF9mbjogYSBmdW5jdGlvbiB0byBj
YWxsIHdoZW4gd2Ugbm90aWNlIGEgcHJvYmxlbS4iIiIKQEAgLTU5LDEwICs1OCwxMCBAQCBjbGFz
cyBFcnJvckNvbGxlY3RvcjoKIAogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB1bnVzZWRfZmlsZW5h
bWUsIHVudXNlZF9saW5lbnVtLAogICAgICAgICAgICAgICAgICBjYXRlZ29yeSwgY29uZmlkZW5j
ZSwgbWVzc2FnZSk6Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9mbihjYXRlZ29yeSBpbiBzZWxmLl9F
UlJPUl9DQVRFR09SSUVTLAorICAgICAgICBzZWxmLl9hc3NlcnRfZm4oY2F0ZWdvcnkgaW4gc2Vs
Zi5fYWxsX3N0eWxlX2NhdGVnb3JpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAnTWVzc2Fn
ZSAiJXMiIGhhcyBjYXRlZ29yeSAiJXMiLCcKLSAgICAgICAgICAgICAgICAgICAgICAgICcgd2hp
Y2ggaXMgbm90IGluIF9FUlJPUl9DQVRFR09SSUVTJyAlIChtZXNzYWdlLCBjYXRlZ29yeSkpCi0g
ICAgICAgIHNlbGYuX1NFRU5fRVJST1JfQ0FURUdPUklFU1tjYXRlZ29yeV0gPSAxCisgICAgICAg
ICAgICAgICAgICAgICAgICAnIHdoaWNoIGlzIG5vdCBpbiBfU1RZTEVfQ0FURUdPUklFUycgJSAo
bWVzc2FnZSwgY2F0ZWdvcnkpKQorICAgICAgICBzZWxmLl9zZWVuX3N0eWxlX2NhdGVnb3JpZXNb
Y2F0ZWdvcnldID0gMQogICAgICAgICBpZiBjcHBfc3R5bGUuX3Nob3VsZF9wcmludF9lcnJvcihj
YXRlZ29yeSwgY29uZmlkZW5jZSk6CiAgICAgICAgICAgICBzZWxmLl9lcnJvcnMuYXBwZW5kKCcl
cyAgWyVzXSBbJWRdJyAlIChtZXNzYWdlLCBjYXRlZ29yeSwgY29uZmlkZW5jZSkpCiAKQEAgLTc2
LDE2ICs3NSwxNiBAQCBjbGFzcyBFcnJvckNvbGxlY3RvcjoKICAgICAgICAgcmV0dXJuIHNlbGYu
X2Vycm9ycwogCiAgICAgZGVmIHZlcmlmeV9hbGxfY2F0ZWdvcmllc19hcmVfc2VlbihzZWxmKToK
LSAgICAgICAgIiIiRmFpbHMgaWYgdGhlcmUncyBhIGNhdGVnb3J5IGluIF9FUlJPUl9DQVRFR09S
SUVTIC0gX1NFRU5fRVJST1JfQ0FURUdPUklFUy4KKyAgICAgICAgIiIiRmFpbHMgaWYgdGhlcmUn
cyBhIGNhdGVnb3J5IGluIF9hbGxfc3R5bGVfY2F0ZWdvcmllcyAtIF9zZWVuX3N0eWxlX2NhdGVn
b3JpZXMuCiAKICAgICAgICAgVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYWxsIHRl
c3RzIGFyZSBydW4sIHNvCi0gICAgICAgIF9TRUVOX0VSUk9SX0NBVEVHT1JJRVMgaGFzIGhhZCBh
IGNoYW5jZSB0byBmdWxseSBwb3B1bGF0ZS4gIFNpbmNlCisgICAgICAgIF9zZWVuX3N0eWxlX2Nh
dGVnb3JpZXMgaGFzIGhhZCBhIGNoYW5jZSB0byBmdWxseSBwb3B1bGF0ZS4gIFNpbmNlCiAgICAg
ICAgIHRoaXMgaXNuJ3QgY2FsbGVkIGZyb20gd2l0aGluIHRoZSBub3JtYWwgdW5pdHRlc3QgZnJh
bWV3b3JrLCB3ZQogICAgICAgICBjYW4ndCB1c2UgdGhlIG5vcm1hbCB1bml0dGVzdCBhc3NlcnQg
bWFjcm9zLiAgSW5zdGVhZCB3ZSBqdXN0IGV4aXQKICAgICAgICAgd2hlbiB3ZSBzZWUgYW4gZXJy
b3IuICBHb29kIHRoaW5nIHRoaXMgdGVzdCBpcyBhbHdheXMgcnVuIGxhc3QhCiAgICAgICAgICIi
IgotICAgICAgICBmb3IgY2F0ZWdvcnkgaW4gc2VsZi5fRVJST1JfQ0FURUdPUklFUzoKLSAgICAg
ICAgICAgIGlmIGNhdGVnb3J5IG5vdCBpbiBzZWxmLl9TRUVOX0VSUk9SX0NBVEVHT1JJRVM6Cisg
ICAgICAgIGZvciBjYXRlZ29yeSBpbiBzZWxmLl9hbGxfc3R5bGVfY2F0ZWdvcmllczoKKyAgICAg
ICAgICAgIGlmIGNhdGVnb3J5IG5vdCBpbiBzZWxmLl9zZWVuX3N0eWxlX2NhdGVnb3JpZXM6CiAg
ICAgICAgICAgICAgICAgaW1wb3J0IHN5cwogICAgICAgICAgICAgICAgIHN5cy5leGl0KCdGQVRB
TCBFUlJPUjogVGhlcmUgYXJlIG5vIHRlc3RzIGZvciBjYXRlZ29yeSAiJXMiJyAlIGNhdGVnb3J5
KQogCkBAIC0zNzcsNyArMzc2LDcgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJh
c2UpOgogICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIE1ldGhvZChjaGFyKiAvKngqLyk7
JywgbWVzc2FnZSkKICAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndHlwZWRlZiB2b2lkICgqTWV0
aG9kKShpbnQzMik7JywgbWVzc2FnZSkKICAgICAjICAgc2VsZi5hc3NlcnRfbGludCgnc3RhdGlj
IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCopIHRocm93KCk7JywgbWVzc2FnZSkKLSAgICAj
IAorICAgICMKICAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndmlydHVhbCB2b2lkIEQoaW50KiBw
KTsnLCAnJykKICAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBvcGVyYXRvciBkZWxldGUo
dm9pZCogeCkgdGhyb3coKTsnLCAnJykKICAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBN
ZXRob2QoY2hhciogeClcbnsnLCAnJykKQEAgLTM4Niw3ICszODUsNyBAQCBjbGFzcyBDcHBTdHls
ZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5cGVk
ZWYgdm9pZCAoKk1ldGhvZCkoaW50MzIgeCk7JywgJycpCiAgICAgIyAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3N0YXRpYyB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHgpIHRocm93KCk7JywgJycp
CiAgICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0YXRpYyB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtd
KHZvaWQqIC8qeCovKSB0aHJvdygpOycsICcnKQotICAgICMgCisgICAgIwogICAgICMgICAjIFRo
aXMgb25lIHNob3VsZCB0ZWNobmljYWxseSB3YXJuLCBidXQgZG9lc24ndCBiZWNhdXNlIHRoZSBm
dW5jdGlvbgogICAgICMgICAjIHBvaW50ZXIgaXMgY29uZnVzaW5nLgogICAgICMgICBzZWxmLmFz
c2VydF9saW50KCd2aXJ0dWFsIHZvaWQgRSh2b2lkICgqZm4pKGludCogcCkpOycsICcnKQpAQCAt
MTU2NywxNCArMTU2NiwxNiBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6
CiAKICAgICBkZWYgdGVzdF9wYXJzZV9hcmd1bWVudHMoc2VsZik6CiAgICAgICAgIG9sZF91c2Fn
ZSA9IGNwcF9zdHlsZS5fVVNBR0UKLSAgICAgICAgb2xkX2Vycm9yX2NhdGVnb3JpZXMgPSBjcHBf
c3R5bGUuX0VSUk9SX0NBVEVHT1JJRVMKKyAgICAgICAgb2xkX3N0eWxlX2NhdGVnb3JpZXMgPSBj
cHBfc3R5bGUuX1NUWUxFX0NBVEVHT1JJRVMKKyAgICAgICAgb2xkX3dlYmtpdF9maWx0ZXJfcnVs
ZXMgPSBjcHBfc3R5bGUuX1dFQktJVF9GSUxURVJfUlVMRVMKICAgICAgICAgb2xkX291dHB1dF9m
b3JtYXQgPSBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0CiAgICAgICAg
IG9sZF92ZXJib3NlX2xldmVsID0gY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUudmVyYm9zZV9s
ZXZlbAogICAgICAgICBvbGRfZmlsdGVycyA9IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZp
bHRlcnMKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBEb24ndCBwcmludCB1c2FnZSBkdXJp
bmcgdGhlIHRlc3RzLCBvciBmaWx0ZXIgY2F0ZWdvcmllcwogICAgICAgICAgICAgY3BwX3N0eWxl
Ll9VU0FHRSA9ICcnCi0gICAgICAgICAgICBjcHBfc3R5bGUuX0VSUk9SX0NBVEVHT1JJRVMgPSAn
JworICAgICAgICAgICAgY3BwX3N0eWxlLl9TVFlMRV9DQVRFR09SSUVTID0gW10KKyAgICAgICAg
ICAgIGNwcF9zdHlsZS5fV0VCS0lUX0ZJTFRFUl9SVUxFUyA9IFtdCiAKICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMsIFsn
LS1iYWRvcHQnXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIGNw
cF9zdHlsZS5wYXJzZV9hcmd1bWVudHMsIFsnLS1oZWxwJ10pCkBAIC0xNjMyLDcgKzE2MzMsOCBA
QCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbJy0tZm9vdHlwbz1iYXInLCAnZm9vLmNwcCddLCBbJ2Zvbz0nXSkKICAg
ICAgICAgZmluYWxseToKICAgICAgICAgICAgIGNwcF9zdHlsZS5fVVNBR0UgPSBvbGRfdXNhZ2UK
LSAgICAgICAgICAgIGNwcF9zdHlsZS5fRVJST1JfQ0FURUdPUklFUyA9IG9sZF9lcnJvcl9jYXRl
Z29yaWVzCisgICAgICAgICAgICBjcHBfc3R5bGUuX1NUWUxFX0NBVEVHT1JJRVMgPSBvbGRfc3R5
bGVfY2F0ZWdvcmllcworICAgICAgICAgICAgY3BwX3N0eWxlLl9XRUJLSVRfRklMVEVSX1JVTEVT
ID0gb2xkX3dlYmtpdF9maWx0ZXJfcnVsZXMKICAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0
eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQgPSBvbGRfb3V0cHV0X2Zvcm1hdAogICAgICAgICAgICAg
Y3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUudmVyYm9zZV9sZXZlbCA9IG9sZF92ZXJib3NlX2xl
dmVsCiAgICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXJzID0gb2xk
X2ZpbHRlcnMKQEAgLTE2NTEsOSArMTY1Myw5IEBAIGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHls
ZVRlc3RCYXNlKToKICAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRl
cnMgPSBvbGRfZmlsdGVycwogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF9maWx0ZXIoc2VsZik6Ci0g
ICAgICAgIGRlZmF1bHRfZmlsdGVycyA9IGNwcF9zdHlsZS5fREVGQVVMVF9GSUxURVJTCisgICAg
ICAgIGRlZmF1bHRfZmlsdGVyX3J1bGVzID0gY3BwX3N0eWxlLl9ERUZBVUxUX0ZJTFRFUl9SVUxF
UwogICAgICAgICBvbGRfZmlsdGVycyA9IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRl
cnMKLSAgICAgICAgY3BwX3N0eWxlLl9ERUZBVUxUX0ZJTFRFUlMgPSBbICctd2hpdGVzcGFjZScg
XQorICAgICAgICBjcHBfc3R5bGUuX0RFRkFVTFRfRklMVEVSX1JVTEVTID0gWyAnLXdoaXRlc3Bh
Y2UnIF0KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBSZXNldCBmaWx0ZXJzCiAgICAgICAg
ICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5zZXRfZmlsdGVycygnJykKQEAgLTE2NjYs
NyArMTY2OCw3IEBAIGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyB3ZWlyZCBvcGVuaW5nIHNwYWNlJywgJycpCiAgICAg
ICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0
ZXJzID0gb2xkX2ZpbHRlcnMKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fREVGQVVMVF9GSUxURVJT
ID0gZGVmYXVsdF9maWx0ZXJzCisgICAgICAgICAgICBjcHBfc3R5bGUuX0RFRkFVTFRfRklMVEVS
X1JVTEVTID0gZGVmYXVsdF9maWx0ZXJfcnVsZXMKIAogICAgIGRlZiB0ZXN0X3VubmFtZWRfbmFt
ZXNwYWNlc19pbl9oZWFkZXJzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9y
dWxlc19jaGVjaygK
</data>
<flag name="review"
          id="26663"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44935</attachid>
            <date>2009-12-15 19:13:18 -0800</date>
            <delta_ts>2009-12-15 21:55:36 -0800</delta_ts>
            <desc>Proposed patch 3</desc>
            <filename>patch-tools2-1.txt</filename>
            <type>text/plain</type>
            <size>30506</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDUyMDY2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMDktMTIt
MTMgIENocmlzIEplcmRvbmVrICA8Y2hyaXMuamVyZG9uZWtAZ21haWwuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvZGUgY2xlYW4tdXAgaW4g
Y2hlY2std2Via2l0LXN0eWxlIGFzIGRlc2NyaWJlZCBiZWxvdy4KKyAgICAgICAgVGhlIG9ubHkg
ZnVuY3Rpb25hbCBjaGFuZ2VzIGFyZSBtaW5vciBpbXByb3ZlbWVudHMgdG8gdGhlCisgICAgICAg
IHNjcmlwdCdzIGhlbHAgb3V0cHV0LgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNDg3CisKKyAgICAgICAgKiBTY3JpcHRzL2NoZWNr
LXdlYmtpdC1zdHlsZToKKyAgICAgICAgICAtIEFkZGVkIHRoZSBtb2R1bGUgZG9jc3RyaW5nIGZy
b20gY3BwX3N0eWxlLnB5LgorICAgICAgICAgIC0gSW1wcm92ZWQgd29yZGluZyBvZiB0aGUgLS1o
ZWxwIG91dHB1dCBhbmQgYWRkZWQgc29tZSBvZiB0aGUKKyAgICAgICAgICAgIGRlZmF1bHQgdmFs
dWVzIGFzIHN1YnN0aXR1dGlvbiBzdHJpbmdzLgorICAgICAgICAgIC0gQ2FsbGVkIGNwcF9zdHls
ZS5leGl0X3dpdGhfdXNhZ2UgaW5zdGVhZCBvZiBzeXMuc3RkZXJyLndyaXRlCisgICAgICAgICAg
ICBpbiBtYWluIGZ1bmN0aW9uLgorICAgICAgICAgIC0gTWFkZSBjaGFuZ2VzIGNhdXNlZCBieSBj
aGFuZ2VzIHRvIGNwcF9zdHlsZS5weS4KKworICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9jcHBf
c3R5bGUucHk6CisgICAgICAgICAgLSBSZW1vdmVkIG1vZHVsZSBkb2NzdHJpbmcsIGFzIHdlbGwg
YXMgcmVkdW5kYW50IF9VU0FHRSBzdHJpbmcKKyAgICAgICAgICAgIGFuZCBtYWluKCkgZnVuY3Rp
b24gb2Jzb2xldGVkIGJ5IGNoZWNrLXdlYmtpdC1zdHlsZS4KKyAgICAgICAgICAtIE1vdmVkIHNw
ZWNpZmljYXRpb24gb2YgZGVmYXVsdCBzY3JpcHQgdmFsdWVzIGZyb20gd2l0aGluIGEKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGRlZmluaXRpb24gdG8gZ2xvYmFsIHZhcmlhYmxlcy4KKyAgICAgICAg
ICAtIE1vdmVkIHRoZSBkZWZhdWx0IHdlYmtpdCBmaWx0ZXIgcnVsZXMgdG8gYmUgbmVhciB0aGUg
b3RoZXIKKyAgICAgICAgICAgIGdsb2JhbCB2YXJpYWJsZXMuCisgICAgICAgICAgLSBSZW5hbWVk
ICJGSUxURVIiIGdsb2JhbCB2YXJpYWJsZXMgdG8gIkZJTFRFUl9SVUxFUyIgdG8KKyAgICAgICAg
ICAgIGVzdGFibGlzaCB1bmFtYmlndW91cyB0ZXJtaW5vbG9neS4KKyAgICAgICAgICAtIFJlbmFt
ZWQgX0VSUk9SX0NBVEVHT1JJRVMgdG8gX1NUWUxFX0NBVEVHT1JJRVMuCisgICAgICAgICAgLSBD
aGFuZ2VkIF9TVFlMRV9DQVRFR09SSUVTIGZyb20gYSBzdHJpbmcgdG8gYSBsaXN0LgorICAgICAg
ICAgIC0gQWRkZWQgZGVmYXVsdCB3ZWJraXQgZmlsdGVyIHJ1bGVzIHRvIC0tZmlsdGVyPSBvdXRw
dXQuCisgICAgICAgICAgLSBSZW5hbWVkICJwcmludF8iIG1ldGhvZHMgdG8gImV4aXRfd2l0aF8i
IHNpbmNlIHRoZXkgZXhpc3QKKyAgICAgICAgICAgIGFuZCBhZGRlZCBhIHRlbXBvcmFyeSBkaXNw
bGF5X2hlbHAgcGFyYW1ldGVyLgorICAgICAgICAgIC0gQWRkZWQgYSB0ZW1wb3JhcnkgZGlzcGxh
eV9oZWxwIHBhcmFtZXRlciB0byBwYXJzZV9hcmd1bWVudHMuCisKKyAgICAgICAgKiBTY3JpcHRz
L21vZHVsZXMvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIC0gTWFkZSBjaGFuZ2Vz
IGNhdXNlZCBieSBjaGFuZ2VzIHRvIGNwcF9zdHlsZS5weS4KKyAgICAgICAgICAtIExvd2VyLWNh
c2VkIEVycm9yQ29sbGVjdG9yJ3MgRVJST1JfQ0FURUdPUklFUyBpbnN0YW5jZSAKKyAgICAgICAg
ICAgIHZhcmlhYmxlcyBzaW5jZSB0aGV5IGFyZSBub3QgZ2xvYmFsLgorCiAyMDA5LTEyLTEyICBN
YWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
T2xpdmVyIEh1bnQuCkluZGV4OiBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQkocmV2aXNpb24gNTIwNjYpCisrKyBTY3Jp
cHRzL2NoZWNrLXdlYmtpdC1zdHlsZQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsMTggQEAK
ICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiIlNjcmlwdCB0byBydW4gdGhlIGxp
bnRlciBmb3Igc291cmNlIGNvZGUgb2YgV2ViS2l0LiIiIgorIiIiRG9lcyBXZWJLaXQtbGludCBv
biBDL0MrKyBmaWxlcy4KKworVGhlIGdvYWwgb2YgdGhpcyBzY3JpcHQgaXMgdG8gaWRlbnRpZnkg
cGxhY2VzIGluIHRoZSBjb2RlIHRoYXQgKm1heSoKK2JlIGluIG5vbi1jb21wbGlhbmNlIHdpdGgg
V2ViS2l0IHN0eWxlLiAgSXQgZG9lcyBub3QgYXR0ZW1wdCB0byBmaXgKK3VwIHRoZXNlIHByb2Js
ZW1zIC0tIHRoZSBwb2ludCBpcyB0byBlZHVjYXRlLiAgSXQgZG9lcyBhbHNvIG5vdAorYXR0ZW1w
dCB0byBmaW5kIGFsbCBwcm9ibGVtcywgb3IgdG8gZW5zdXJlIHRoYXQgZXZlcnl0aGluZyBpdCBk
b2VzCitmaW5kIGlzIGxlZ2l0aW1hdGVseSBhIHByb2JsZW0uCisKK0luIHBhcnRpY3VsYXIsIHdl
IGNhbiBnZXQgdmVyeSBjb25mdXNlZCBieSAvKiBhbmQgLy8gaW5zaWRlIHN0cmluZ3MhCitXZSBk
byBhIHNtYWxsIGhhY2ssIHdoaWNoIGlzIHRvIGlnbm9yZSAvLydzIHdpdGggIidzIGFmdGVyIHRo
ZW0gb24gdGhlCitzYW1lIGxpbmUsIGJ1dCBpdCBpcyBmYXIgZnJvbSBwZXJmZWN0IChpbiBlaXRo
ZXIgZGlyZWN0aW9uKS4KKyIiIgogCiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgb3MKQEAgLTQwLDU0
ICs1MSw2OCBAQCBmcm9tIG1vZHVsZXMuZGlmZl9wYXJzZXIgaW1wb3J0IERpZmZQYXJzCiBmcm9t
IG1vZHVsZXMuc2NtIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbQogCiAKLSMgT3ZlcnJpZGUgdGhl
IHVzYWdlIG9mIHRoZSBsaW50IHRvb2wuCiBjcHBfc3R5bGUuX1VTQUdFID0gIiIiCiBTeW50YXg6
ICUocHJvZ3JhbV9uYW1lKXMgWy0tdmVyYm9zZT0jXSBbLS1naXQtY29tbWl0PTxTaW5nbGVDb21t
aXQ+XSBbLS1vdXRwdXQ9dnM3XQogICAgICAgICBbLS1maWx0ZXI9LXgsK3ksLi4uXSBbZmlsZV0g
Li4uCiAKLSAgVGhlIHN0eWxlIGd1aWRlbGluZXMgdGhpcyB0cmllcyB0byBmb2xsb3cgYXJlIHRo
b3NlIGluCisgIFRoZSBzdHlsZSBndWlkZWxpbmVzIHRoaXMgdHJpZXMgdG8gZm9sbG93IGFyZSBo
ZXJlOgogICAgIGh0dHA6Ly93ZWJraXQub3JnL2NvZGluZy9jb2Rpbmctc3R5bGUuaHRtbAogCi0g
IEV2ZXJ5IHByb2JsZW0gaXMgZ2l2ZW4gYSBjb25maWRlbmNlIHNjb3JlIGZyb20gMS01LCB3aXRo
IDUgbWVhbmluZyB3ZSBhcmUKLSAgY2VydGFpbiBvZiB0aGUgcHJvYmxlbSwgYW5kIDEgbWVhbmlu
ZyBpdCBjb3VsZCBiZSBhIGxlZ2l0aW1hdGUgY29uc3RydWN0LgotICBUaGlzIHdpbGwgbWlzcyBz
b21lIGVycm9ycywgYW5kIGlzIG5vdCBhIHN1YnN0aXR1dGUgZm9yIGEgY29kZSByZXZpZXcuCisg
IEV2ZXJ5IHN0eWxlIGVycm9yIGlzIGdpdmVuIGEgY29uZmlkZW5jZSBzY29yZSBmcm9tIDEtNSwg
d2l0aCA1IG1lYW5pbmcKKyAgd2UgYXJlIGNlcnRhaW4gb2YgdGhlIHByb2JsZW0sIGFuZCAxIG1l
YW5pbmcgaXQgY291bGQgYmUgYSBsZWdpdGltYXRlCisgIGNvbnN0cnVjdC4gIFRoaXMgY2FuIG1p
c3Mgc29tZSBlcnJvcnMgYW5kIGRvZXMgbm90IHN1YnN0aXR1dGUgZm9yCisgIGNvZGUgcmV2aWV3
LgogCiAgIFRvIHByZXZlbnQgc3BlY2lmaWMgbGluZXMgZnJvbSBiZWluZyBsaW50ZWQsIGFkZCBh
ICcvLyBOT0xJTlQnIGNvbW1lbnQgdG8gdGhlCiAgIGVuZCBvZiB0aGUgbGluZS4KIAotICBMaW50
ZWQgZXh0ZW5zaW9ucyBhcmUgLmNwcCwgLmMgYW5kIC5oLiAgT3RoZXIgZmlsZSB0eXBlcyB3aWxs
IGJlIGlnbm9yZWQuCisgIExpbnRlZCBleHRlbnNpb25zIGFyZSAuY3BwLCAuYyBhbmQgLmguICBP
dGhlciBmaWxlIHR5cGVzIGFyZSBpZ25vcmVkLgogCi0gIFRoZSBmaWxlIHBhcmFtZXRlciBpcyBv
cHRpb25hbCBhbmQgbXVsdGlwbGUgZmlsZXMgdG8gc2NhbiBiZSBwYXNzZWQgaW4uCi0gIExlYXZp
bmcgb3V0IHRoZSBmaWxlIHBhcmFtZXRlciB3aWxsIGFwcGx5IHRoZSBjaGVjayB0byB0aGUgZmls
ZXMgY2hhbmdlZAotICBhY2NvcmRpbmcgdG8gdGhlIHNjbSBzeXN0ZW0uCisgIFRoZSBmaWxlIHBh
cmFtZXRlciBpcyBvcHRpb25hbCBhbmQgYWNjZXB0cyBtdWx0aXBsZSBmaWxlcy4gIExlYXZpbmcK
KyAgb3V0IHRoZSBmaWxlIHBhcmFtZXRlciBhcHBsaWVzIHRoZSBjaGVjayB0byBhbGwgZmlsZXMg
Y29uc2lkZXJlZCBjaGFuZ2VkCisgIGJ5IHlvdXIgc291cmNlIGNvbnRyb2wgbWFuYWdlbWVudCBz
eXN0ZW0uCiAKICAgRmxhZ3M6CiAKICAgICB2ZXJib3NlPSMKLSAgICAgIFNwZWNpZnkgYSBudW1i
ZXIgMC01IHRvIHJlc3RyaWN0IGVycm9ycyB0byBjZXJ0YWluIHZlcmJvc2l0eSBsZXZlbHMuCisg
ICAgICBBIG51bWJlciAwLTUgdG8gcmVzdHJpY3QgZXJyb3JzIHRvIGNlcnRhaW4gdmVyYm9zaXR5
IGxldmVscy4KKyAgICAgIERlZmF1bHRzIHRvICUoZGVmYXVsdF92ZXJib3NpdHkpcy4KIAogICAg
IGdpdC1jb21taXQ9PFNpbmdsZUNvbW1pdD4KICAgICAgIENoZWNrcyB0aGUgc3R5bGUgb2YgZXZl
cnl0aGluZyBmcm9tIHRoZSBnaXZlbiBjb21taXQgdG8gdGhlIGxvY2FsIHRyZWUuCiAKICAgICBv
dXRwdXQ9dnM3Ci0gICAgICBCeSBkZWZhdWx0LCB0aGUgb3V0cHV0IGlzIGZvcm1hdHRlZCB0byBl
YXNlIGVtYWNzIHBhcnNpbmcuICBWaXN1YWwgU3R1ZGlvCi0gICAgICBjb21wYXRpYmxlIG91dHB1
dCAodnM3KSBtYXkgYWxzbyBiZSB1c2VkLiAgT3RoZXIgZm9ybWF0cyBhcmUgdW5zdXBwb3J0ZWQu
CisgICAgICBUaGUgb3V0cHV0IGZvcm1hdCwgd2hpY2ggbWF5IGJlIG9uZSBvZgorICAgICAgICBl
bWFjcyA6IHRvIGVhc2UgZW1hY3MgcGFyc2luZworICAgICAgICB2czcgICA6IGNvbXBhdGlibGUg
d2l0aCBWaXN1YWwgU3R1ZGlvCisgICAgICBEZWZhdWx0cyB0byAiJShkZWZhdWx0X291dHB1dF9m
b3JtYXQpcyIuIE90aGVyIGZvcm1hdHMgYXJlIHVuc3VwcG9ydGVkLgogCiAgICAgZmlsdGVyPS14
LCt5LC4uLgotICAgICAgU3BlY2lmeSBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNhdGVnb3J5
LWZpbHRlcnMgdG8gYXBwbHk6IG9ubHkKLSAgICAgIGVycm9yIG1lc3NhZ2VzIHdob3NlIGNhdGVn
b3J5IG5hbWVzIHBhc3MgdGhlIGZpbHRlcnMgd2lsbCBiZSBwcmludGVkLgotICAgICAgKENhdGVn
b3J5IG5hbWVzIGFyZSBwcmludGVkIHdpdGggdGhlIG1lc3NhZ2UgYW5kIGxvb2sgbGlrZQotICAg
ICAgIlt3aGl0ZXNwYWNlL2luZGVudF0iLikgIEZpbHRlcnMgYXJlIGV2YWx1YXRlZCBsZWZ0IHRv
IHJpZ2h0LgotICAgICAgIi1GT08iIGFuZCAiRk9PIiBtZWFucyAiZG8gbm90IHByaW50IGNhdGVn
b3JpZXMgdGhhdCBzdGFydCB3aXRoIEZPTyIuCi0gICAgICAiK0ZPTyIgbWVhbnMgImRvIHByaW50
IGNhdGVnb3JpZXMgdGhhdCBzdGFydCB3aXRoIEZPTyIuCisgICAgICBBIGNvbW1hLXNlcGFyYXRl
ZCBsaXN0IG9mIGJvb2xlYW4gZmlsdGVyIHJ1bGVzIHVzZWQgdG8gZmlsdGVyCisgICAgICB3aGlj
aCBjYXRlZ29yaWVzIG9mIHN0eWxlIGd1aWRlbGluZXMgdG8gY2hlY2suICBUaGUgc2NyaXB0IGNo
ZWNrcworICAgICAgYSBjYXRlZ29yeSBpZiB0aGUgY2F0ZWdvcnkgcGFzc2VzIHRoZSBmaWx0ZXIg
cnVsZXMsIGFzIGZvbGxvd3MuCisKKyAgICAgIEFueSB3ZWJraXQgY2F0ZWdvcnkgc3RhcnRzIG91
dCBwYXNzaW5nLiAgQWxsIGZpbHRlciBydWxlcyBhcmUgdGhlbgorICAgICAgZXZhbHVhdGVkIGxl
ZnQgdG8gcmlnaHQsIHdpdGggbGF0ZXIgcnVsZXMgdGFraW5nIHByZWNlZGVuY2UuICBGb3IKKyAg
ICAgIGV4YW1wbGUsIHRoZSBydWxlICIrZm9vIiBwYXNzZXMgYW55IGNhdGVnb3J5IHRoYXQgc3Rh
cnRzIHdpdGggImZvbyIsCisgICAgICBhbmQgIi1mb28iIGZhaWxzIGFueSBzdWNoIGNhdGVnb3J5
LiAgVGhlIGZpbHRlciBpbnB1dCAiLXdoaXRlc3BhY2UsCisgICAgICArd2hpdGVzcGFjZS9icmFj
ZXMiIGZhaWxzIHRoZSBjYXRlZ29yeSAid2hpdGVzcGFjZS90YWIiIGFuZCBwYXNzZXMKKyAgICAg
ICJ3aGl0ZXNwYWNlL2JyYWNlcyIuCiAKICAgICAgIEV4YW1wbGVzOiAtLWZpbHRlcj0td2hpdGVz
cGFjZSwrd2hpdGVzcGFjZS9icmFjZXMKLSAgICAgICAgICAgICAgICAtLWZpbHRlcj13aGl0ZXNw
YWNlLHJ1bnRpbWUvcHJpbnRmLCtydW50aW1lL3ByaW50Zl9mb3JtYXQKKyAgICAgICAgICAgICAg
ICAtLWZpbHRlcj0td2hpdGVzcGFjZSwtcnVudGltZS9wcmludGYsK3J1bnRpbWUvcHJpbnRmX2Zv
cm1hdAogICAgICAgICAgICAgICAgIC0tZmlsdGVyPS0sK2J1aWxkL2luY2x1ZGVfd2hhdF95b3Vf
dXNlCiAKLSAgICAgIFRvIHNlZSBhIGxpc3Qgb2YgYWxsIHRoZSBjYXRlZ29yaWVzIHVzZWQgaW4g
JShwcm9ncmFtX25hbWUpcywgcGFzcyBubyBhcmc6CisgICAgICBDYXRlZ29yeSBuYW1lcyBhcHBl
YXIgaW4gZXJyb3IgbWVzc2FnZXMgaW4gYnJhY2tldHMsIGZvciBleGFtcGxlCisgICAgICBbd2hp
dGVzcGFjZS9pbmRlbnRdLiAgVG8gc2VlIGEgbGlzdCBvZiBhbGwgY2F0ZWdvcmllcyBhdmFpbGFi
bGUgdG8KKyAgICAgICUocHJvZ3JhbV9uYW1lKXMsIGFsb25nIHdpdGggd2hpY2ggYXJlIGVuYWJs
ZWQgYnkgZGVmYXVsdCwgcGFzcworICAgICAgdGhlIGVtcHR5IGZpbHRlciBhcyBmb2xsb3dzOgog
ICAgICAgICAgLS1maWx0ZXI9Ci0iIiIgJSB7J3Byb2dyYW1fbmFtZSc6IG9zLnBhdGguYmFzZW5h
bWUoc3lzLmFyZ3ZbMF0pfQorIiIiICUgeworICAgICdwcm9ncmFtX25hbWUnOiBvcy5wYXRoLmJh
c2VuYW1lKHN5cy5hcmd2WzBdKSwKKyAgICAnZGVmYXVsdF92ZXJib3NpdHknOiBjcHBfc3R5bGUu
X0RFRkFVTFRfVkVSQk9TSVRZLAorICAgICdkZWZhdWx0X291dHB1dF9mb3JtYXQnOiBjcHBfc3R5
bGUuX0RFRkFVTFRfT1VUUFVUX0ZPUk1BVAorICAgIH0KIAogCiBkZWYgcHJvY2Vzc19wYXRjaChw
YXRjaF9zdHJpbmcpOgpAQCAtMTIzLDkgKzE0OCwxMCBAQCBkZWYgcHJvY2Vzc19wYXRjaChwYXRj
aF9zdHJpbmcpOgogCiAKIGRlZiBtYWluKCk6Ci0gICAgY3BwX3N0eWxlLnVzZV93ZWJraXRfc3R5
bGVzKCkKKyAgICBjcHBfc3R5bGUuX0RFRkFVTFRfRklMVEVSX1JVTEVTID0gY3BwX3N0eWxlLl9X
RUJLSVRfRklMVEVSX1JVTEVTCiAKLSAgICAoZmlsZXMsIGZsYWdzKSA9IGNwcF9zdHlsZS5wYXJz
ZV9hcmd1bWVudHMoc3lzLmFyZ3ZbMTpdLCBbImdpdC1jb21taXQ9Il0pCisgICAgKGZpbGVzLCBm
bGFncykgPSBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKHN5cy5hcmd2WzE6XSwgWyJnaXQtY29t
bWl0PSJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aXNwbGF5X2hlbHA9VHJ1ZSkKIAogICAgICMgQ2hhbmdlIHN0ZGVyciB0byB3cml0ZSB3aXRoIHJl
cGxhY2VtZW50IGNoYXJhY3RlcnMgc28gd2UgZG9uJ3QgZGllCiAgICAgIyBpZiB3ZSB0cnkgdG8g
cHJpbnQgc29tZXRoaW5nIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCkBAIC0xMzUs
OSArMTYxLDkgQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAncmVwbGFjZScpCiAKICAgICBpZiBmaWxlcyBhbmQgIi0tZ2l0LWNvbW1pdCIg
aW4gZmxhZ3M6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkVSUk9SOiBJdCBpcyBub3QgcG9z
c2libGUgdG8gY2hlY2sgZmlsZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIGEg
c3BlY2lmaWMgY29tbWl0IGF0IHRoZSBzYW1lIHRpbWUuXG4iICsgY3BwX3N0eWxlLl9VU0FHRSkK
LSAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgY3BwX3N0eWxlLmV4aXRfd2l0aF91c2FnZSgn
SXQgaXMgbm90IHBvc3NpYmxlIHRvIGNoZWNrIGZpbGVzIGFuZCBhICcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnc3BlY2lmaWMgY29tbWl0IGF0IHRoZSBzYW1lIHRpbWUuJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X2hlbHA9VHJ1ZSkKIAog
ICAgIGlmIGZpbGVzOgogICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZXM6CkBAIC0xNTQsOSAr
MTgwLDEwIEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAgICAgIyBzdGFydCB0aGVyZSAoc2Vl
IGdpdCBkaWZmIC0taGVscCBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IC4uLiB1c3VhbGx5IHdv
cmtzKS4KICAgICAgICAgICAgICAgICBjb21taXQgPSBjb21taXRbOmNvbW1pdC5maW5kKCcuLicp
XQogICAgICAgICAgICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICJXYXJuaW5nOiBSYW5nZXMg
YXJlIG5vdCBzdXBwb3J0ZWQgZm9yIC0tZ2l0LWNvbW1pdC4gQ2hlY2tpbmcgYWxsIGNoYW5nZXMg
c2luY2UgJXMuXG4iICUgY29tbWl0Ci0gICAgICAgICAgICBwcm9jZXNzX3BhdGNoKHNjbS5jcmVh
dGVfcGF0Y2hfc2luY2VfbG9jYWxfY29tbWl0KGNvbW1pdCkpCisgICAgICAgICAgICBwYXRjaCA9
IHNjbS5jcmVhdGVfcGF0Y2hfc2luY2VfbG9jYWxfY29tbWl0KGNvbW1pdCkKICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHByb2Nlc3NfcGF0Y2goc2NtLmNyZWF0ZV9wYXRjaCgpKQorICAgICAg
ICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKKyAgICAgICAgcHJvY2Vzc19wYXRjaChw
YXRjaCkKIAogICAgIHN5cy5zdGRlcnIud3JpdGUoJ1RvdGFsIGVycm9ycyBmb3VuZDogJWRcbicg
JSBjcHBfc3R5bGUuZXJyb3JfY291bnQoKSkKICAgICBzeXMuZXhpdChjcHBfc3R5bGUuZXJyb3Jf
Y291bnQoKSA+IDApCkluZGV4OiBTY3JpcHRzL21vZHVsZXMvY3BwX3N0eWxlLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGUucHkJKHJldmlzaW9uIDUyMDY2KQorKysg
U2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZS5weQkod29ya2luZyBjb3B5KQpAQCAtMzQsMTggKzM0
LDcgQEAKICMgVGhpcyBpcyB0aGUgbW9kaWZpZWQgdmVyc2lvbiBvZiBHb29nbGUncyBjcHBsaW50
LiBUaGUgb3JpZ2luYWwgY29kZSBpcwogIyBodHRwOi8vZ29vZ2xlLXN0eWxlZ3VpZGUuZ29vZ2xl
Y29kZS5jb20vc3ZuL3RydW5rL2NwcGxpbnQvY3BwbGludC5weQogCi0iIiJEb2VzIFdlYktpdC1s
aW50IG9uIGMrKyBmaWxlcy4KLQotVGhlIGdvYWwgb2YgdGhpcyBzY3JpcHQgaXMgdG8gaWRlbnRp
ZnkgcGxhY2VzIGluIHRoZSBjb2RlIHRoYXQgKm1heSoKLWJlIGluIG5vbi1jb21wbGlhbmNlIHdp
dGggV2ViS2l0IHN0eWxlLiAgSXQgZG9lcyBub3QgYXR0ZW1wdCB0byBmaXgKLXVwIHRoZXNlIHBy
b2JsZW1zIC0tIHRoZSBwb2ludCBpcyB0byBlZHVjYXRlLiAgSXQgZG9lcyBhbHNvIG5vdAotYXR0
ZW1wdCB0byBmaW5kIGFsbCBwcm9ibGVtcywgb3IgdG8gZW5zdXJlIHRoYXQgZXZlcnl0aGluZyBp
dCBkb2VzCi1maW5kIGlzIGxlZ2l0aW1hdGVseSBhIHByb2JsZW0uCi0KLUluIHBhcnRpY3VsYXIs
IHdlIGNhbiBnZXQgdmVyeSBjb25mdXNlZCBieSAvKiBhbmQgLy8gaW5zaWRlIHN0cmluZ3MhCi1X
ZSBkbyBhIHNtYWxsIGhhY2ssIHdoaWNoIGlzIHRvIGlnbm9yZSAvLydzIHdpdGggIidzIGFmdGVy
IHRoZW0gb24gdGhlCi1zYW1lIGxpbmUsIGJ1dCBpdCBpcyBmYXIgZnJvbSBwZXJmZWN0IChpbiBl
aXRoZXIgZGlyZWN0aW9uKS4KLSIiIgorIiIiU3VwcG9ydCBmb3IgY2hlY2std2Via2l0LXN0eWxl
LiIiIgogCiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgZ2V0b3B0CkBAIC01OSwxMjEgKzQ4LDEyNCBA
QCBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pY29kZWRhdGEKIAogCi1fVVNBR0UgPSAiIiIKLVN5bnRh
eDogJShwcm9ncmFtX25hbWUpcyBbLS12ZXJib3NlPSNdIFstLW91dHB1dD12czddIFstLWZpbHRl
cj0teCwreSwuLi5dCi0gICAgICAgIDxmaWxlPiBbZmlsZV0gLi4uCi0KLSAgVGhlIHN0eWxlIGd1
aWRlbGluZXMgdGhpcyB0cmllcyB0byBmb2xsb3cgYXJlIHRob3NlIGluCi0gICAgaHR0cDovL3dl
YmtpdC5vcmcvY29kaW5nL2NvZGluZy1zdHlsZS5odG1sCi0KLSAgRXZlcnkgcHJvYmxlbSBpcyBn
aXZlbiBhIGNvbmZpZGVuY2Ugc2NvcmUgZnJvbSAxLTUsIHdpdGggNSBtZWFuaW5nIHdlIGFyZQot
ICBjZXJ0YWluIG9mIHRoZSBwcm9ibGVtLCBhbmQgMSBtZWFuaW5nIGl0IGNvdWxkIGJlIGEgbGVn
aXRpbWF0ZSBjb25zdHJ1Y3QuCi0gIFRoaXMgd2lsbCBtaXNzIHNvbWUgZXJyb3JzLCBhbmQgaXMg
bm90IGEgc3Vic3RpdHV0ZSBmb3IgYSBjb2RlIHJldmlldy4KLQotICBUbyBwcmV2ZW50IHNwZWNp
ZmljIGxpbmVzIGZyb20gYmVpbmcgbGludGVkLCBhZGQgYSAnLy8gTk9MSU5UJyBjb21tZW50IHRv
IHRoZQotICBlbmQgb2YgdGhlIGxpbmUuCi0KLSAgVGhlIGZpbGVzIHBhc3NlZCBpbiB3aWxsIGJl
IGxpbnRlZDsgYXQgbGVhc3Qgb25lIGZpbGUgbXVzdCBiZSBwcm92aWRlZC4KLSAgTGludGVkIGV4
dGVuc2lvbnMgYXJlIC5jcHAsIC5jIGFuZCAuaC4gIE90aGVyIGZpbGUgdHlwZXMgd2lsbCBiZSBp
Z25vcmVkLgotCi0gIEZsYWdzOgotCi0gICAgb3V0cHV0PXZzNwotICAgICAgQnkgZGVmYXVsdCwg
dGhlIG91dHB1dCBpcyBmb3JtYXR0ZWQgdG8gZWFzZSBlbWFjcyBwYXJzaW5nLiAgVmlzdWFsIFN0
dWRpbwotICAgICAgY29tcGF0aWJsZSBvdXRwdXQgKHZzNykgbWF5IGFsc28gYmUgdXNlZC4gIE90
aGVyIGZvcm1hdHMgYXJlIHVuc3VwcG9ydGVkLgotCi0gICAgdmVyYm9zZT0jCi0gICAgICBTcGVj
aWZ5IGEgbnVtYmVyIDAtNSB0byByZXN0cmljdCBlcnJvcnMgdG8gY2VydGFpbiB2ZXJib3NpdHkg
bGV2ZWxzLgorIyBUaGlzIGlzIHNldCBieSBjaGVjay13ZWJraXQtc3R5bGUuCitfVVNBR0UgPSAn
JwogCi0gICAgZmlsdGVyPS14LCt5LC4uLgotICAgICAgU3BlY2lmeSBhIGNvbW1hLXNlcGFyYXRl
ZCBsaXN0IG9mIGNhdGVnb3J5LWZpbHRlcnMgdG8gYXBwbHk6IG9ubHkKLSAgICAgIGVycm9yIG1l
c3NhZ2VzIHdob3NlIGNhdGVnb3J5IG5hbWVzIHBhc3MgdGhlIGZpbHRlcnMgd2lsbCBiZSBwcmlu
dGVkLgotICAgICAgKENhdGVnb3J5IG5hbWVzIGFyZSBwcmludGVkIHdpdGggdGhlIG1lc3NhZ2Ug
YW5kIGxvb2sgbGlrZQotICAgICAgIlt3aGl0ZXNwYWNlL2luZGVudF0iLikgIEZpbHRlcnMgYXJl
IGV2YWx1YXRlZCBsZWZ0IHRvIHJpZ2h0LgotICAgICAgIi1GT08iIGFuZCAiRk9PIiBtZWFucyAi
ZG8gbm90IHByaW50IGNhdGVnb3JpZXMgdGhhdCBzdGFydCB3aXRoIEZPTyIuCi0gICAgICAiK0ZP
TyIgbWVhbnMgImRvIHByaW50IGNhdGVnb3JpZXMgdGhhdCBzdGFydCB3aXRoIEZPTyIuCiAKLSAg
ICAgIEV4YW1wbGVzOiAtLWZpbHRlcj0td2hpdGVzcGFjZSwrd2hpdGVzcGFjZS9icmFjZXMKLSAg
ICAgICAgICAgICAgICAtLWZpbHRlcj13aGl0ZXNwYWNlLHJ1bnRpbWUvcHJpbnRmLCtydW50aW1l
L3ByaW50Zl9mb3JtYXQKLSAgICAgICAgICAgICAgICAtLWZpbHRlcj0tLCtidWlsZC9pbmNsdWRl
X3doYXRfeW91X3VzZQorIyBEZWZhdWx0IG9wdGlvbnMKK19ERUZBVUxUX1ZFUkJPU0lUWSA9IDEK
K19ERUZBVUxUX09VVFBVVF9GT1JNQVQgPSAnZW1hY3MnCisKKworIyBGSVhNRTogRm9yIHN0eWxl
IGNhdGVnb3JpZXMgd2Ugd2lsbCBuZXZlciB3YW50IHRvIGhhdmUsIHJlbW92ZSB0aGVtLgorIyAg
ICAgICAgRm9yIGNhdGVnb3JpZXMgZm9yIHdoaWNoIHdlIHdhbnQgdG8gaGF2ZSBzaW1pbGFyIGZ1
bmN0aW9uYWxpdHksCisjICAgICAgICBtb2RpZnkgdGhlIGltcGxlbWVudGF0aW9uIGFuZCBlbmFi
bGUgdGhlbS4KKyMgRklYTUU6IEFkZCBhIHVuaXQgdGVzdCB0byBlbnN1cmUgdGhlIGNvcnJlc3Bv
bmRpbmcgY2F0ZWdvcmllcworIyAgICAgICAgYXJlIGVsZW1lbnRzIG9mIF9TVFlMRV9DQVRFR09S
SUVTLgorIworIyBGb3IgdW5hbWJpZ3VvdXMgdGVybWlub2xvZ3ksIHdlIHVzZSAiZmlsdGVyIHJ1
bGUiIHJhdGhlciB0aGFuICJmaWx0ZXIiCisjIGZvciBhbiBpbmRpdmlkdWFsIGJvb2xlYW4gZmls
dGVyIGZsYWcgbGlrZSAiK2ZvbyIuIFRoaXMgYWxsb3dzIHVzIHRvIAorIyByZXNlcnZlICJmaWx0
ZXIiIGZvciB3aGF0IG9uZSBnZXRzIGJ5IGNvbGxlY3RpdmVseSBhcHBseWluZyBhbGwgb2YgCisj
IHRoZSBmaWx0ZXIgcnVsZXMgYXMgc3BlY2lmaWVkIGJ5IGEgLS1maWx0ZXIgZmxhZy4KK19XRUJL
SVRfRklMVEVSX1JVTEVTID0gWworICAgICctYnVpbGQvZW5kaWZfY29tbWVudCcsCisgICAgJy1i
dWlsZC9oZWFkZXJfZ3VhcmQnLAorICAgICctYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2UnLCAg
IyA8c3RyaW5nPiBmb3Igc3RkOjpzdHJpbmcKKyAgICAnLWJ1aWxkL3N0b3JhZ2VfY2xhc3MnLCAg
IyBjb25zdCBzdGF0aWMKKyAgICAnLWxlZ2FsL2NvcHlyaWdodCcsCisgICAgJy1yZWFkYWJpbGl0
eS9tdWx0aWxpbmVfY29tbWVudCcsCisgICAgJy1yZWFkYWJpbGl0eS9icmFjZXMnLCAgIyBpbnQg
Zm9vKCkge307CisgICAgJy1yZWFkYWJpbGl0eS9mbl9zaXplJywKKyAgICAnLXJlYWRhYmlsaXR5
L2Nhc3RpbmcnLAorICAgICctcmVhZGFiaWxpdHkvZnVuY3Rpb24nLAorICAgICctcnVudGltZS9h
cnJheXMnLCAgIyB2YXJpYWJsZSBsZW5ndGggYXJyYXkKKyAgICAnLXJ1bnRpbWUvY2FzdGluZycs
CisgICAgJy1ydW50aW1lL3NpemVvZicsCisgICAgJy1ydW50aW1lL2V4cGxpY2l0JywgICMgZXhw
bGljaXQKKyAgICAnLXJ1bnRpbWUvdmlydHVhbCcsICAjIHZpcnR1YWwgZHRvcgorICAgICctcnVu
dGltZS9wcmludGYnLAorICAgICctcnVudGltZS90aHJlYWRzYWZlX2ZuJywKKyAgICAnLXJ1bnRp
bWUvcnR0aScsCisgICAgJy13aGl0ZXNwYWNlL2JsYW5rX2xpbmUnLAorICAgICctd2hpdGVzcGFj
ZS9jb21tZW50cycsCisgICAgJy13aGl0ZXNwYWNlL2VuZF9vZl9saW5lJywKKyAgICAnLXdoaXRl
c3BhY2UvbGFiZWxzJywKKyAgICBdCiAKLSAgICAgIFRvIHNlZSBhIGxpc3Qgb2YgYWxsIHRoZSBj
YXRlZ29yaWVzIHVzZWQgaW4gJShwcm9ncmFtX25hbWUpcywgcGFzcyBubyBhcmc6Ci0gICAgICAg
ICAtLWZpbHRlcj0KLSIiIiAlIHsncHJvZ3JhbV9uYW1lJzogc3lzLmFyZ3ZbMF19CiAKLSMgV2Ug
Y2F0ZWdvcml6ZSBlYWNoIGVycm9yIG1lc3NhZ2Ugd2UgcHJpbnQuICBIZXJlIGFyZSB0aGUgY2F0
ZWdvcmllcy4KKyMgV2UgY2F0ZWdvcml6ZSBlYWNoIHN0eWxlIHJ1bGUgd2UgcHJpbnQuICBIZXJl
IGFyZSB0aGUgY2F0ZWdvcmllcy4KICMgV2Ugd2FudCBhbiBleHBsaWNpdCBsaXN0IHNvIHdlIGNh
biBsaXN0IHRoZW0gYWxsIGluIGNwcF9zdHlsZSAtLWZpbHRlcj0uCiAjIElmIHlvdSBhZGQgYSBu
ZXcgZXJyb3IgbWVzc2FnZSB3aXRoIGEgbmV3IGNhdGVnb3J5LCBhZGQgaXQgdG8gdGhlIGxpc3QK
ICMgaGVyZSEgIGNwcF9zdHlsZV91bml0dGVzdC5weSBzaG91bGQgdGVsbCB5b3UgaWYgeW91IGZv
cmdldCB0byBkbyB0aGlzLgotIyBcIHVzZWQgZm9yIGNsZWFyZXIgbGF5b3V0IC0tIHB5bGludDog
ZGlzYWJsZS1tc2c9QzYwMTMKLV9FUlJPUl9DQVRFR09SSUVTID0gJycnXAotICAgIGJ1aWxkL2Ns
YXNzCi0gICAgYnVpbGQvZGVwcmVjYXRlZAotICAgIGJ1aWxkL2VuZGlmX2NvbW1lbnQKLSAgICBi
dWlsZC9mb3J3YXJkX2RlY2wKLSAgICBidWlsZC9oZWFkZXJfZ3VhcmQKLSAgICBidWlsZC9pbmNs
dWRlCi0gICAgYnVpbGQvaW5jbHVkZV9vcmRlcgotICAgIGJ1aWxkL2luY2x1ZGVfd2hhdF95b3Vf
dXNlCi0gICAgYnVpbGQvbmFtZXNwYWNlcwotICAgIGJ1aWxkL3ByaW50Zl9mb3JtYXQKLSAgICBi
dWlsZC9zdG9yYWdlX2NsYXNzCi0gICAgYnVpbGQvdXNpbmdfc3RkCi0gICAgbGVnYWwvY29weXJp
Z2h0Ci0gICAgcmVhZGFiaWxpdHkvYnJhY2VzCi0gICAgcmVhZGFiaWxpdHkvY2FzdGluZwotICAg
IHJlYWRhYmlsaXR5L2NoZWNrCi0gICAgcmVhZGFiaWxpdHkvY29tcGFyaXNvbl90b196ZXJvCi0g
ICAgcmVhZGFiaWxpdHkvY29uc3RydWN0b3JzCi0gICAgcmVhZGFiaWxpdHkvY29udHJvbF9mbG93
Ci0gICAgcmVhZGFiaWxpdHkvZm5fc2l6ZQotICAgIHJlYWRhYmlsaXR5L2Z1bmN0aW9uCi0gICAg
cmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1lbnQKLSAgICByZWFkYWJpbGl0eS9tdWx0aWxpbmVf
c3RyaW5nCi0gICAgcmVhZGFiaWxpdHkvbmFtaW5nCi0gICAgcmVhZGFiaWxpdHkvbnVsbAotICAg
IHJlYWRhYmlsaXR5L3N0cmVhbXMKLSAgICByZWFkYWJpbGl0eS90b2RvCi0gICAgcmVhZGFiaWxp
dHkvdXRmOAotICAgIHJ1bnRpbWUvYXJyYXlzCi0gICAgcnVudGltZS9jYXN0aW5nCi0gICAgcnVu
dGltZS9leHBsaWNpdAotICAgIHJ1bnRpbWUvaW50Ci0gICAgcnVudGltZS9pbml0Ci0gICAgcnVu
dGltZS9pbnZhbGlkX2luY3JlbWVudAotICAgIHJ1bnRpbWUvbWF4X21pbl9tYWNyb3MKLSAgICBy
dW50aW1lL21lbXNldAotICAgIHJ1bnRpbWUvcHJpbnRmCi0gICAgcnVudGltZS9wcmludGZfZm9y
bWF0Ci0gICAgcnVudGltZS9yZWZlcmVuY2VzCi0gICAgcnVudGltZS9ydHRpCi0gICAgcnVudGlt
ZS9zaXplb2YKLSAgICBydW50aW1lL3N0cmluZwotICAgIHJ1bnRpbWUvdGhyZWFkc2FmZV9mbgot
ICAgIHJ1bnRpbWUvdmlydHVhbAotICAgIHdoaXRlc3BhY2UvYmxhbmtfbGluZQotICAgIHdoaXRl
c3BhY2UvYnJhY2VzCi0gICAgd2hpdGVzcGFjZS9jb21tYQotICAgIHdoaXRlc3BhY2UvY29tbWVu
dHMKLSAgICB3aGl0ZXNwYWNlL2RlY2xhcmF0aW9uCi0gICAgd2hpdGVzcGFjZS9lbmRfb2ZfbGlu
ZQotICAgIHdoaXRlc3BhY2UvZW5kaW5nX25ld2xpbmUKLSAgICB3aGl0ZXNwYWNlL2luZGVudAot
ICAgIHdoaXRlc3BhY2UvbGFiZWxzCi0gICAgd2hpdGVzcGFjZS9saW5lX2xlbmd0aAotICAgIHdo
aXRlc3BhY2UvbmV3bGluZQotICAgIHdoaXRlc3BhY2Uvb3BlcmF0b3JzCi0gICAgd2hpdGVzcGFj
ZS9wYXJlbnMKLSAgICB3aGl0ZXNwYWNlL3NlbWljb2xvbgotICAgIHdoaXRlc3BhY2UvdGFiCi0g
ICAgd2hpdGVzcGFjZS90b2RvCi0nJycKK19TVFlMRV9DQVRFR09SSUVTID0gWworICAgICdidWls
ZC9jbGFzcycsCisgICAgJ2J1aWxkL2RlcHJlY2F0ZWQnLAorICAgICdidWlsZC9lbmRpZl9jb21t
ZW50JywKKyAgICAnYnVpbGQvZm9yd2FyZF9kZWNsJywKKyAgICAnYnVpbGQvaGVhZGVyX2d1YXJk
JywKKyAgICAnYnVpbGQvaW5jbHVkZScsCisgICAgJ2J1aWxkL2luY2x1ZGVfb3JkZXInLAorICAg
ICdidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZScsCisgICAgJ2J1aWxkL25hbWVzcGFjZXMnLAor
ICAgICdidWlsZC9wcmludGZfZm9ybWF0JywKKyAgICAnYnVpbGQvc3RvcmFnZV9jbGFzcycsCisg
ICAgJ2J1aWxkL3VzaW5nX3N0ZCcsCisgICAgJ2xlZ2FsL2NvcHlyaWdodCcsCisgICAgJ3JlYWRh
YmlsaXR5L2JyYWNlcycsCisgICAgJ3JlYWRhYmlsaXR5L2Nhc3RpbmcnLAorICAgICdyZWFkYWJp
bGl0eS9jaGVjaycsCisgICAgJ3JlYWRhYmlsaXR5L2NvbXBhcmlzb25fdG9femVybycsCisgICAg
J3JlYWRhYmlsaXR5L2NvbnN0cnVjdG9ycycsCisgICAgJ3JlYWRhYmlsaXR5L2NvbnRyb2xfZmxv
dycsCisgICAgJ3JlYWRhYmlsaXR5L2ZuX3NpemUnLAorICAgICdyZWFkYWJpbGl0eS9mdW5jdGlv
bicsCisgICAgJ3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50JywKKyAgICAncmVhZGFiaWxp
dHkvbXVsdGlsaW5lX3N0cmluZycsCisgICAgJ3JlYWRhYmlsaXR5L25hbWluZycsCisgICAgJ3Jl
YWRhYmlsaXR5L251bGwnLAorICAgICdyZWFkYWJpbGl0eS9zdHJlYW1zJywKKyAgICAncmVhZGFi
aWxpdHkvdG9kbycsCisgICAgJ3JlYWRhYmlsaXR5L3V0ZjgnLAorICAgICdydW50aW1lL2FycmF5
cycsCisgICAgJ3J1bnRpbWUvY2FzdGluZycsCisgICAgJ3J1bnRpbWUvZXhwbGljaXQnLAorICAg
ICdydW50aW1lL2luaXQnLAorICAgICdydW50aW1lL2ludCcsCisgICAgJ3J1bnRpbWUvaW52YWxp
ZF9pbmNyZW1lbnQnLAorICAgICdydW50aW1lL21heF9taW5fbWFjcm9zJywKKyAgICAncnVudGlt
ZS9tZW1zZXQnLAorICAgICdydW50aW1lL3ByaW50ZicsCisgICAgJ3J1bnRpbWUvcHJpbnRmX2Zv
cm1hdCcsCisgICAgJ3J1bnRpbWUvcmVmZXJlbmNlcycsCisgICAgJ3J1bnRpbWUvcnR0aScsCisg
ICAgJ3J1bnRpbWUvc2l6ZW9mJywKKyAgICAncnVudGltZS9zdHJpbmcnLAorICAgICdydW50aW1l
L3RocmVhZHNhZmVfZm4nLAorICAgICdydW50aW1lL3ZpcnR1YWwnLAorICAgICd3aGl0ZXNwYWNl
L2JsYW5rX2xpbmUnLAorICAgICd3aGl0ZXNwYWNlL2JyYWNlcycsCisgICAgJ3doaXRlc3BhY2Uv
Y29tbWEnLAorICAgICd3aGl0ZXNwYWNlL2NvbW1lbnRzJywKKyAgICAnd2hpdGVzcGFjZS9kZWNs
YXJhdGlvbicsCisgICAgJ3doaXRlc3BhY2UvZW5kX29mX2xpbmUnLAorICAgICd3aGl0ZXNwYWNl
L2VuZGluZ19uZXdsaW5lJywKKyAgICAnd2hpdGVzcGFjZS9pbmRlbnQnLAorICAgICd3aGl0ZXNw
YWNlL2xhYmVscycsCisgICAgJ3doaXRlc3BhY2UvbGluZV9sZW5ndGgnLAorICAgICd3aGl0ZXNw
YWNlL25ld2xpbmUnLAorICAgICd3aGl0ZXNwYWNlL29wZXJhdG9ycycsCisgICAgJ3doaXRlc3Bh
Y2UvcGFyZW5zJywKKyAgICAnd2hpdGVzcGFjZS9zZW1pY29sb24nLAorICAgICd3aGl0ZXNwYWNl
L3RhYicsCisgICAgJ3doaXRlc3BhY2UvdG9kbycsCisgICAgXQorCiAKICMgVGhlIGRlZmF1bHQg
c3RhdGUgb2YgdGhlIGNhdGVnb3J5IGZpbHRlci4gVGhpcyBpcyBvdmVycmlkZWQgYnkgdGhlIC0t
ZmlsdGVyPQogIyBmbGFnLiBCeSBkZWZhdWx0IGFsbCBlcnJvcnMgYXJlIG9uLCBzbyBvbmx5IGFk
ZCBoZXJlIGNhdGVnb3JpZXMgdGhhdCBzaG91bGQgYmUKICMgb2ZmIGJ5IGRlZmF1bHQgKGkuZS4s
IGNhdGVnb3JpZXMgdGhhdCBtdXN0IGJlIGVuYWJsZWQgYnkgdGhlIC0tZmlsdGVyPSBmbGFncyku
CiAjIEFsbCBlbnRyaWVzIGhlcmUgc2hvdWxkIHN0YXJ0IHdpdGggYSAnLScgb3IgJysnLCBhcyBp
biB0aGUgLS1maWx0ZXI9IGZsYWcuCi1fREVGQVVMVF9GSUxURVJTID0gW10KK19ERUZBVUxUX0ZJ
TFRFUl9SVUxFUyA9IFtdCiAKICMgSGVhZGVycyB0aGF0IHdlIGNvbnNpZGVyIFNUTCBoZWFkZXJz
LgogX1NUTF9IRUFERVJTID0gZnJvemVuc2V0KFsKQEAgLTM3MCwxNSArMzYyLDE1IEBAIGNsYXNz
IF9DcHBTdHlsZVN0YXRlKG9iamVjdCk6CiAgICAgIiIiTWFpbnRhaW5zIG1vZHVsZS13aWRlIHN0
YXRlLi4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi52ZXJib3Nl
X2xldmVsID0gMSAgIyBnbG9iYWwgc2V0dGluZy4KKyAgICAgICAgc2VsZi52ZXJib3NlX2xldmVs
ID0gX0RFRkFVTFRfVkVSQk9TSVRZICAjIGdsb2JhbCBzZXR0aW5nLgogICAgICAgICBzZWxmLmVy
cm9yX2NvdW50ID0gMCAgICAjIGdsb2JhbCBjb3VudCBvZiByZXBvcnRlZCBlcnJvcnMKICAgICAg
ICAgIyBmaWx0ZXJzIHRvIGFwcGx5IHdoZW4gZW1pdHRpbmcgZXJyb3IgbWVzc2FnZXMKLSAgICAg
ICAgc2VsZi5maWx0ZXJzID0gX0RFRkFVTFRfRklMVEVSU1s6XQorICAgICAgICBzZWxmLmZpbHRl
cnMgPSBfREVGQVVMVF9GSUxURVJfUlVMRVNbOl0KIAogICAgICAgICAjIG91dHB1dCBmb3JtYXQ6
CiAgICAgICAgICMgImVtYWNzIiAtIGZvcm1hdCB0aGF0IGVtYWNzIGNhbiBwYXJzZSAoZGVmYXVs
dCkKICAgICAgICAgIyAidnM3IiAtIGZvcm1hdCB0aGF0IE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
IDcgY2FuIHBhcnNlCi0gICAgICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9ICdlbWFjcycKKyAgICAg
ICAgc2VsZi5vdXRwdXRfZm9ybWF0ID0gX0RFRkFVTFRfT1VUUFVUX0ZPUk1BVAogCiAgICAgZGVm
IHNldF9vdXRwdXRfZm9ybWF0KHNlbGYsIG91dHB1dF9mb3JtYXQpOgogICAgICAgICAiIiJTZXRz
IHRoZSBvdXRwdXQgZm9ybWF0IGZvciBlcnJvcnMuIiIiCkBAIC00MDUsNyArMzk3LDcgQEAgY2xh
c3MgX0NwcFN0eWxlU3RhdGUob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICBFLmcuICIt
LCt3aGl0ZXNwYWNlLC13aGl0ZXNwYWNlL2luZGVudCx3aGl0ZXNwYWNlL2JhZGZpbHRlciIKICAg
ICAgICAgIiIiCiAgICAgICAgICMgRGVmYXVsdCBmaWx0ZXJzIGFsd2F5cyBoYXZlIGxlc3MgcHJp
b3JpdHkgdGhhbiB0aGUgZmxhZyBvbmVzLgotICAgICAgICBzZWxmLmZpbHRlcnMgPSBfREVGQVVM
VF9GSUxURVJTWzpdCisgICAgICAgIHNlbGYuZmlsdGVycyA9IF9ERUZBVUxUX0ZJTFRFUl9SVUxF
U1s6XQogICAgICAgICBmb3IgZmlsdGVyIGluIGZpbHRlcnMuc3BsaXQoJywnKToKICAgICAgICAg
ICAgIGNsZWFuX2ZpbHRlciA9IGZpbHRlci5zdHJpcCgpCiAgICAgICAgICAgICBpZiBjbGVhbl9m
aWx0ZXI6CkBAIC0zMTc5LDI5ICszMTcxLDQ3IEBAIGRlZiBwcm9jZXNzX2ZpbGUoZmlsZW5hbWUs
IGVycm9yPWVycm9yKToKICAgICAgICAgICAgICAgICAgICdiZXR0ZXIgdG8gdXNlIG9ubHkgYSBc
XG4nKQogCiAKLWRlZiBwcmludF91c2FnZShtZXNzYWdlKToKLSAgICAiIiJQcmludHMgYSBicmll
ZiB1c2FnZSBzdHJpbmcgYW5kIGV4aXRzLCBvcHRpb25hbGx5IHdpdGggYW4gZXJyb3IgbWVzc2Fn
ZS4KK2RlZiBleGl0X3dpdGhfdXNhZ2UoZXJyb3JfbWVzc2FnZSwgZGlzcGxheV9oZWxwPUZhbHNl
KToKKyAgICAiIiJFeGl0IGFuZCBwcmludCBhIHVzYWdlIHN0cmluZyB3aXRoIGFuIG9wdGlvbmFs
IGVycm9yIG1lc3NhZ2UuCiAKICAgICBBcmdzOgotICAgICAgbWVzc2FnZTogVGhlIG9wdGlvbmFs
IGVycm9yIG1lc3NhZ2UuCisgICAgICBlcnJvcl9tZXNzYWdlOiBUaGUgb3B0aW9uYWwgZXJyb3Ig
bWVzc2FnZS4KKyAgICAgIGRpc3BsYXlfaGVscDogV2hldGhlciB0byBkaXNwbGF5IGhlbHAgb3V0
cHV0LiBTdXBwcmVzc2luZyBoZWxwCisgICAgICAgICAgICAgICAgICAgIG91dHB1dCBpcyB1c2Vm
dWwgZm9yIHVuaXQgdGVzdHMuCiAgICAgIiIiCi0gICAgc3lzLnN0ZGVyci53cml0ZShfVVNBR0Up
Ci0gICAgaWYgbWVzc2FnZToKLSAgICAgICAgc3lzLmV4aXQoJ1xuRkFUQUwgRVJST1I6ICcgKyBt
ZXNzYWdlKQorICAgIGlmIGRpc3BsYXlfaGVscDoKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZShf
VVNBR0UpCisgICAgaWYgZXJyb3JfbWVzc2FnZToKKyAgICAgICAgc3lzLmV4aXQoJ1xuRkFUQUwg
RVJST1I6ICcgKyBlcnJvcl9tZXNzYWdlKQogICAgIGVsc2U6CiAgICAgICAgIHN5cy5leGl0KDEp
CiAKIAotZGVmIHByaW50X2NhdGVnb3JpZXMoKToKLSAgICAiIiJQcmludHMgYSBsaXN0IG9mIGFs
bCB0aGUgZXJyb3ItY2F0ZWdvcmllcyB1c2VkIGJ5IGVycm9yIG1lc3NhZ2VzLgorZGVmIGV4aXRf
d2l0aF9jYXRlZ29yaWVzKGRpc3BsYXlfaGVscD1GYWxzZSk6CisgICAgIiIiRXhpdCBhbmQgcHJp
bnQgYWxsIHN0eWxlIGNhdGVnb3JpZXMsIGFsb25nIHdpdGggdGhlIGRlZmF1bHQgZmlsdGVyLgor
CisgICAgVGhlc2UgY2F0ZWdvcnkgbmFtZXMgYXBwZWFyIGluIGVycm9yIG1lc3NhZ2VzLiAgVGhl
eSBjYW4gYmUgZmlsdGVyZWQKKyAgICB1c2luZyB0aGUgLS1maWx0ZXIgZmxhZy4KKworICAgIEFy
Z3M6CisgICAgICBkaXNwbGF5X2hlbHA6IFdoZXRoZXIgdG8gZGlzcGxheSBoZWxwIG91dHB1dC4g
U3VwcHJlc3NpbmcgaGVscAorICAgICAgICAgICAgICAgICAgICBvdXRwdXQgaXMgdXNlZnVsIGZv
ciB1bml0IHRlc3RzLgorICAgICIiIgorICAgIGlmIGRpc3BsYXlfaGVscDoKKyAgICAgICAgc3lz
LnN0ZGVyci53cml0ZSgnXG5BbGwgY2F0ZWdvcmllczpcbicpCisgICAgICAgIGZvciBjYXRlZ29y
eSBpbiBzb3J0ZWQoX1NUWUxFX0NBVEVHT1JJRVMpOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53
cml0ZSgnICAgICcgKyBjYXRlZ29yeSArICdcbicpCisKKyAgICAgICAgc3lzLnN0ZGVyci53cml0
ZSgnXG5EZWZhdWx0IGZpbHRlciBydWxlcyoqOlxuJykKKyAgICAgICAgZm9yIGZpbHRlcl9ydWxl
IGluIHNvcnRlZChfV0VCS0lUX0ZJTFRFUl9SVUxFUyk6CisgICAgICAgICAgICBzeXMuc3RkZXJy
LndyaXRlKCcgICAgJyArIGZpbHRlcl9ydWxlICsgJ1xuJykKKyAgICAgICAgc3lzLnN0ZGVyci53
cml0ZSgnXG4qKlRoZSBjb21tYW5kIGFsd2F5cyBldmFsdWF0ZXMgdGhlIGFib3ZlICcKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAncnVsZXMsIGFuZCBiZWZvcmUgYW55IC0tZmlsdGVyIGZsYWcu
XG5cbicpCiAKLSAgICBUaGVzZSBhcmUgdGhlIGNhdGVnb3JpZXMgdXNlZCB0byBmaWx0ZXIgbWVz
c2FnZXMgdmlhIC0tZmlsdGVyLgotICAgICIiIgotICAgIHN5cy5zdGRlcnIud3JpdGUoX0VSUk9S
X0NBVEVHT1JJRVMpCiAgICAgc3lzLmV4aXQoMCkKIAogCi1kZWYgcGFyc2VfYXJndW1lbnRzKGFy
Z3MsIGFkZGl0aW9uYWxfZmxhZ3M9W10pOgorZGVmIHBhcnNlX2FyZ3VtZW50cyhhcmdzLCBhZGRp
dGlvbmFsX2ZsYWdzPVtdLCBkaXNwbGF5X2hlbHA9RmFsc2UpOgogICAgICIiIlBhcnNlcyB0aGUg
Y29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KIAogICAgIFRoaXMgbWF5IHNldCB0aGUgb3V0cHV0IGZv
cm1hdCBhbmQgdmVyYm9zaXR5IGxldmVsIGFzIHNpZGUtZWZmZWN0cy4KQEAgLTMyMDksNiArMzIx
OSw4IEBAIGRlZiBwYXJzZV9hcmd1bWVudHMoYXJncywgYWRkaXRpb25hbF9mbGEKICAgICBBcmdz
OgogICAgICAgYXJnczogVGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHM6CiAgICAgICBhZGRpdGlv
bmFsX2ZsYWdzOiBBIGxpc3Qgb2Ygc3RyaW5ncyB3aGljaCBzcGVjaWZpZXMgZmxhZ3Mgd2UgYWxs
b3cuCisgICAgICBkaXNwbGF5X2hlbHA6IFdoZXRoZXIgdG8gZGlzcGxheSBoZWxwIG91dHB1dC4g
U3VwcHJlc3NpbmcgaGVscAorICAgICAgICAgICAgICAgICAgICBvdXRwdXQgaXMgdXNlZnVsIGZv
ciB1bml0IHRlc3RzLgogCiAgICAgUmV0dXJuczoKICAgICAgIEEgdHVwbGUgb2YgKGZpbGVuYW1l
cywgZmxhZ3MpCkBAIC0zMjIxLDcgKzMyMzMsNyBAQCBkZWYgcGFyc2VfYXJndW1lbnRzKGFyZ3Ms
IGFkZGl0aW9uYWxfZmxhCiAgICAgdHJ5OgogICAgICAgICAob3B0cywgZmlsZW5hbWVzKSA9IGdl
dG9wdC5nZXRvcHQoYXJncywgJycsIGZsYWdzKQogICAgIGV4Y2VwdCBnZXRvcHQuR2V0b3B0RXJy
b3I6Ci0gICAgICAgIHByaW50X3VzYWdlKCdJbnZhbGlkIGFyZ3VtZW50cy4nKQorICAgICAgICBl
eGl0X3dpdGhfdXNhZ2UoJ0ludmFsaWQgYXJndW1lbnRzLicsIGRpc3BsYXlfaGVscCkKIAogICAg
IHZlcmJvc2l0eSA9IF92ZXJib3NlX2xldmVsKCkKICAgICBvdXRwdXRfZm9ybWF0ID0gX291dHB1
dF9mb3JtYXQoKQpAQCAtMzIyOSwxNyArMzI0MSwxOCBAQCBkZWYgcGFyc2VfYXJndW1lbnRzKGFy
Z3MsIGFkZGl0aW9uYWxfZmxhCiAKICAgICBmb3IgKG9wdCwgdmFsKSBpbiBvcHRzOgogICAgICAg
ICBpZiBvcHQgPT0gJy0taGVscCc6Ci0gICAgICAgICAgICBwcmludF91c2FnZShOb25lKQorICAg
ICAgICAgICAgZXhpdF93aXRoX3VzYWdlKE5vbmUsIGRpc3BsYXlfaGVscCkKICAgICAgICAgZWxp
ZiBvcHQgPT0gJy0tb3V0cHV0JzoKICAgICAgICAgICAgIGlmIG5vdCB2YWwgaW4gKCdlbWFjcycs
ICd2czcnKToKLSAgICAgICAgICAgICAgICBwcmludF91c2FnZSgnVGhlIG9ubHkgYWxsb3dlZCBv
dXRwdXQgZm9ybWF0cyBhcmUgZW1hY3MgYW5kIHZzNy4nKQorICAgICAgICAgICAgICAgIGV4aXRf
d2l0aF91c2FnZSgnVGhlIG9ubHkgYWxsb3dlZCBvdXRwdXQgZm9ybWF0cyBhcmUgZW1hY3MgYW5k
IHZzNy4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X2hlbHApCiAg
ICAgICAgICAgICBvdXRwdXRfZm9ybWF0ID0gdmFsCiAgICAgICAgIGVsaWYgb3B0ID09ICctLXZl
cmJvc2UnOgogICAgICAgICAgICAgdmVyYm9zaXR5ID0gaW50KHZhbCkKICAgICAgICAgZWxpZiBv
cHQgPT0gJy0tZmlsdGVyJzoKICAgICAgICAgICAgIGZpbHRlcnMgPSB2YWwKICAgICAgICAgICAg
IGlmIG5vdCBmaWx0ZXJzOgotICAgICAgICAgICAgICAgIHByaW50X2NhdGVnb3JpZXMoKQorICAg
ICAgICAgICAgICAgIGV4aXRfd2l0aF9jYXRlZ29yaWVzKGRpc3BsYXlfaGVscCkKICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIGFkZGl0aW9uYWxfZmxhZ192YWx1ZXNbb3B0XSA9IHZhbAogCkBA
IC0zMjQ4LDcxICszMjYxLDMgQEAgZGVmIHBhcnNlX2FyZ3VtZW50cyhhcmdzLCBhZGRpdGlvbmFs
X2ZsYQogICAgIF9zZXRfZmlsdGVycyhmaWx0ZXJzKQogCiAgICAgcmV0dXJuIChmaWxlbmFtZXMs
IGFkZGl0aW9uYWxfZmxhZ192YWx1ZXMpCi0KLQotZGVmIHVzZV93ZWJraXRfc3R5bGVzKCk6Ci0g
ICAgIiIiRGlzYWJsZXMgc29tZSBmZWF0dXJlcyB3aGljaCBhcmUgbm90IHN1aXRhYmxlIGZvciBX
ZWJLaXQuIiIiCi0gICAgIyBGSVhNRTogRm9yIGZpbHRlcnMgd2Ugd2lsbCBuZXZlciB3YW50IHRv
IGhhdmUsIHJlbW92ZSB0aGVtLgotICAgICMgICAgICAgIEZvciBmaWx0ZXJzIHdlIHdhbnQgdG8g
aGF2ZSBzaW1pbGFyIGZ1bmN0aW9uYWxpdGllcywKLSAgICAjICAgICAgICBtb2RpZnkgdGhlIGlt
cGxlbWVudGF0aW9uIGFuZCBlbmFibGUgdGhlbS4KLSAgICBnbG9iYWwgX0RFRkFVTFRfRklMVEVS
UwotICAgIF9ERUZBVUxUX0ZJTFRFUlMgPSBbCi0gICAgICAgICctd2hpdGVzcGFjZS9lbmRfb2Zf
bGluZScsCi0gICAgICAgICctd2hpdGVzcGFjZS9jb21tZW50cycsCi0gICAgICAgICctd2hpdGVz
cGFjZS9ibGFua19saW5lJywKLSAgICAgICAgJy1ydW50aW1lL2V4cGxpY2l0JywgICMgZXhwbGlj
aXQKLSAgICAgICAgJy1ydW50aW1lL3ZpcnR1YWwnLCAgIyB2aXJ0dWFsIGR0b3IKLSAgICAgICAg
Jy1ydW50aW1lL3ByaW50ZicsCi0gICAgICAgICctcnVudGltZS90aHJlYWRzYWZlX2ZuJywKLSAg
ICAgICAgJy1ydW50aW1lL3J0dGknLAotICAgICAgICAnLWJ1aWxkL2luY2x1ZGVfd2hhdF95b3Vf
dXNlJywgICMgPHN0cmluZz4gZm9yIHN0ZDo6c3RyaW5nCi0gICAgICAgICctbGVnYWwvY29weXJp
Z2h0JywKLSAgICAgICAgJy1yZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudCcsCi0gICAgICAg
ICctcmVhZGFiaWxpdHkvYnJhY2VzJywgICMgaW50IGZvbygpIHt9OwotICAgICAgICAnLXJlYWRh
YmlsaXR5L2ZuX3NpemUnLAotICAgICAgICAnLWJ1aWxkL3N0b3JhZ2VfY2xhc3MnLCAgIyBjb25z
dCBzdGF0aWMKLSAgICAgICAgJy1idWlsZC9lbmRpZl9jb21tZW50JywKLSAgICAgICAgJy13aGl0
ZXNwYWNlL2xhYmVscycsCi0gICAgICAgICctcnVudGltZS9hcnJheXMnLCAgIyB2YXJpYWJsZSBs
ZW5ndGggYXJyYXkKLSAgICAgICAgJy1idWlsZC9oZWFkZXJfZ3VhcmQnLAotICAgICAgICAnLXJl
YWRhYmlsaXR5L2Nhc3RpbmcnLAotICAgICAgICAnLXJlYWRhYmlsaXR5L2Z1bmN0aW9uJywKLSAg
ICAgICAgJy1ydW50aW1lL2Nhc3RpbmcnLAotICAgICAgICAnLXJ1bnRpbWUvc2l6ZW9mJywKLSAg
ICBdCi0KLQotZGVmIG1haW4oKToKLSAgICBzeXMuc3RkZXJyLndyaXRlKAotICAgICAgICAnJycq
KioqKioqKioqKioqKioqKioqKiogV0FSTklORyBXQVJOSU5HIFdBUk5JTkcgKioqKioqKioqKioq
KioqKioqKioqCi0KLVRoaXMgdG9vbCBpcyBpbiB0aGUgcHJvY2VzcyBvZiBkZXZlbG9wbWVudCBh
bmQgbWF5IGdpdmUgaW5hY2N1cmF0ZQotcmVzdWx0cyBhdCBwcmVzZW50LiAgUGxlYXNlIGZpbGUg
YnVncyAoYW5kL29yIHBhdGNoZXMpIGZvciB0aGluZ3MKLXRoYXQgeW91IG5vdGljZSB0aGF0IGl0
IGZsYWdzIGluY29ycmVjdGx5LgotCi0qKioqKioqKioqKioqKioqKioqKiogV0FSTklORyBXQVJO
SU5HIFdBUk5JTkcgKioqKioqKioqKioqKioqKioqKioqCi0KLScnJykKLQotICAgIHVzZV93ZWJr
aXRfc3R5bGVzKCkKLQotICAgIChmaWxlbmFtZXMsIGZsYWdzKSA9IHBhcnNlX2FyZ3VtZW50cyhz
eXMuYXJndlsxOl0pCi0gICAgaWYgbm90IGZpbGVuYW1lczoKLSAgICAgICAgcHJpbnRfdXNhZ2Uo
J05vIGZpbGVzIHdlcmUgc3BlY2lmaWVkLicpCi0KLSAgICAjIENoYW5nZSBzdGRlcnIgdG8gd3Jp
dGUgd2l0aCByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIHNvIHdlIGRvbid0IGRpZQotICAgICMgaWYg
d2UgdHJ5IHRvIHByaW50IHNvbWV0aGluZyBjb250YWluaW5nIG5vbi1BU0NJSSBjaGFyYWN0ZXJz
LgotICAgIHN5cy5zdGRlcnIgPSBjb2RlY3MuU3RyZWFtUmVhZGVyV3JpdGVyKHN5cy5zdGRlcnIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHJl
YWRlcigndXRmOCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvZGVjcy5nZXR3cml0ZXIoJ3V0ZjgnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAncmVwbGFjZScpCi0KLSAgICBfY3BwX3N0eWxlX3N0YXRlLnJlc2V0X2Vy
cm9yX2NvdW50KCkKLSAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgotICAgICAgICBwcm9j
ZXNzX2ZpbGUoZmlsZW5hbWUpCi0gICAgc3lzLnN0ZGVyci53cml0ZSgnVG90YWwgZXJyb3JzIGZv
dW5kOiAlZFxuJyAlIF9jcHBfc3R5bGVfc3RhdGUuZXJyb3JfY291bnQpCi0gICAgc3lzLmV4aXQo
X2NwcF9zdHlsZV9zdGF0ZS5lcnJvcl9jb3VudCA+IDApCi0KLQotaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKLSAgICBtYWluKCkKSW5kZXg6IFNjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGVfdW5p
dHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZV91bml0dGVz
dC5weQkocmV2aXNpb24gNTIwNjYpCisrKyBTY3JpcHRzL21vZHVsZXMvY3BwX3N0eWxlX3VuaXR0
ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUsMTEgQEAgaW1wb3J0IGNwcF9zdHls
ZQogCiAjIFRoaXMgY2xhc3Mgd29ya3MgYXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCByZXBsYWNl
cyBjcHBfc3R5bGUuRXJyb3IKICMgZnVuY3Rpb24gZm9yIHRoZSB1bml0IHRlc3RzLiAgV2UgYWxz
byB2ZXJpZnkgZWFjaCBjYXRlZ29yeSB3ZSBzZWUKLSMgaXMgaW4gY3BwX3N0eWxlLl9FUlJPUl9D
QVRFR09SSUVTLCB0byBoZWxwIGtlZXAgdGhhdCBsaXN0IHVwIHRvIGRhdGUuCisjIGlzIGluIGNw
cF9zdHlsZS5fU1RZTEVfQ0FURUdPUklFUywgdG8gaGVscCBrZWVwIHRoYXQgbGlzdCB1cCB0byBk
YXRlLgogY2xhc3MgRXJyb3JDb2xsZWN0b3I6Ci0gICAgIyBUaGVzZSBhcmUgYSBnbG9iYWwgbGlz
dCwgY292ZXJpbmcgYWxsIGNhdGVnb3JpZXMgc2VlbiBldmVyLgotICAgIF9FUlJPUl9DQVRFR09S
SUVTID0gW3guc3RyaXAoKSAgICAjIGdldCByaWQgb2YgbGVhZGluZyB3aGl0ZXNwYWNlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gY3BwX3N0eWxlLl9FUlJPUl9DQVRFR09SSUVT
LnNwbGl0KCldCi0gICAgX1NFRU5fRVJST1JfQ0FURUdPUklFUyA9IHt9CisgICAgX2FsbF9zdHls
ZV9jYXRlZ29yaWVzID0gY3BwX3N0eWxlLl9TVFlMRV9DQVRFR09SSUVTCisgICAgIyBUaGlzIGEg
bGlzdCBpbmNsdWRpbmcgYWxsIGNhdGVnb3JpZXMgc2VlbiBpbiBhbnkgdW5pdCB0ZXN0LgorICAg
IF9zZWVuX3N0eWxlX2NhdGVnb3JpZXMgPSB7fQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFz
c2VydF9mbik6CiAgICAgICAgICIiImFzc2VydF9mbjogYSBmdW5jdGlvbiB0byBjYWxsIHdoZW4g
d2Ugbm90aWNlIGEgcHJvYmxlbS4iIiIKQEAgLTU5LDEwICs1OCwxMCBAQCBjbGFzcyBFcnJvckNv
bGxlY3RvcjoKIAogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB1bnVzZWRfZmlsZW5hbWUsIHVudXNl
ZF9saW5lbnVtLAogICAgICAgICAgICAgICAgICBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2Fn
ZSk6Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9mbihjYXRlZ29yeSBpbiBzZWxmLl9FUlJPUl9DQVRF
R09SSUVTLAorICAgICAgICBzZWxmLl9hc3NlcnRfZm4oY2F0ZWdvcnkgaW4gc2VsZi5fYWxsX3N0
eWxlX2NhdGVnb3JpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAnTWVzc2FnZSAiJXMiIGhh
cyBjYXRlZ29yeSAiJXMiLCcKLSAgICAgICAgICAgICAgICAgICAgICAgICcgd2hpY2ggaXMgbm90
IGluIF9FUlJPUl9DQVRFR09SSUVTJyAlIChtZXNzYWdlLCBjYXRlZ29yeSkpCi0gICAgICAgIHNl
bGYuX1NFRU5fRVJST1JfQ0FURUdPUklFU1tjYXRlZ29yeV0gPSAxCisgICAgICAgICAgICAgICAg
ICAgICAgICAnIHdoaWNoIGlzIG5vdCBpbiBfU1RZTEVfQ0FURUdPUklFUycgJSAobWVzc2FnZSwg
Y2F0ZWdvcnkpKQorICAgICAgICBzZWxmLl9zZWVuX3N0eWxlX2NhdGVnb3JpZXNbY2F0ZWdvcnld
ID0gMQogICAgICAgICBpZiBjcHBfc3R5bGUuX3Nob3VsZF9wcmludF9lcnJvcihjYXRlZ29yeSwg
Y29uZmlkZW5jZSk6CiAgICAgICAgICAgICBzZWxmLl9lcnJvcnMuYXBwZW5kKCclcyAgWyVzXSBb
JWRdJyAlIChtZXNzYWdlLCBjYXRlZ29yeSwgY29uZmlkZW5jZSkpCiAKQEAgLTc2LDE2ICs3NSwx
NiBAQCBjbGFzcyBFcnJvckNvbGxlY3RvcjoKICAgICAgICAgcmV0dXJuIHNlbGYuX2Vycm9ycwog
CiAgICAgZGVmIHZlcmlmeV9hbGxfY2F0ZWdvcmllc19hcmVfc2VlbihzZWxmKToKLSAgICAgICAg
IiIiRmFpbHMgaWYgdGhlcmUncyBhIGNhdGVnb3J5IGluIF9FUlJPUl9DQVRFR09SSUVTIC0gX1NF
RU5fRVJST1JfQ0FURUdPUklFUy4KKyAgICAgICAgIiIiRmFpbHMgaWYgdGhlcmUncyBhIGNhdGVn
b3J5IGluIF9hbGxfc3R5bGVfY2F0ZWdvcmllcyAtIF9zZWVuX3N0eWxlX2NhdGVnb3JpZXMuCiAK
ICAgICAgICAgVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYWxsIHRlc3RzIGFyZSBy
dW4sIHNvCi0gICAgICAgIF9TRUVOX0VSUk9SX0NBVEVHT1JJRVMgaGFzIGhhZCBhIGNoYW5jZSB0
byBmdWxseSBwb3B1bGF0ZS4gIFNpbmNlCisgICAgICAgIF9zZWVuX3N0eWxlX2NhdGVnb3JpZXMg
aGFzIGhhZCBhIGNoYW5jZSB0byBmdWxseSBwb3B1bGF0ZS4gIFNpbmNlCiAgICAgICAgIHRoaXMg
aXNuJ3QgY2FsbGVkIGZyb20gd2l0aGluIHRoZSBub3JtYWwgdW5pdHRlc3QgZnJhbWV3b3JrLCB3
ZQogICAgICAgICBjYW4ndCB1c2UgdGhlIG5vcm1hbCB1bml0dGVzdCBhc3NlcnQgbWFjcm9zLiAg
SW5zdGVhZCB3ZSBqdXN0IGV4aXQKICAgICAgICAgd2hlbiB3ZSBzZWUgYW4gZXJyb3IuICBHb29k
IHRoaW5nIHRoaXMgdGVzdCBpcyBhbHdheXMgcnVuIGxhc3QhCiAgICAgICAgICIiIgotICAgICAg
ICBmb3IgY2F0ZWdvcnkgaW4gc2VsZi5fRVJST1JfQ0FURUdPUklFUzoKLSAgICAgICAgICAgIGlm
IGNhdGVnb3J5IG5vdCBpbiBzZWxmLl9TRUVOX0VSUk9SX0NBVEVHT1JJRVM6CisgICAgICAgIGZv
ciBjYXRlZ29yeSBpbiBzZWxmLl9hbGxfc3R5bGVfY2F0ZWdvcmllczoKKyAgICAgICAgICAgIGlm
IGNhdGVnb3J5IG5vdCBpbiBzZWxmLl9zZWVuX3N0eWxlX2NhdGVnb3JpZXM6CiAgICAgICAgICAg
ICAgICAgaW1wb3J0IHN5cwogICAgICAgICAgICAgICAgIHN5cy5leGl0KCdGQVRBTCBFUlJPUjog
VGhlcmUgYXJlIG5vIHRlc3RzIGZvciBjYXRlZ29yeSAiJXMiJyAlIGNhdGVnb3J5KQogCkBAIC0x
NTY3LDE0ICsxNTY2LDE2IEBAIGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToK
IAogICAgIGRlZiB0ZXN0X3BhcnNlX2FyZ3VtZW50cyhzZWxmKToKICAgICAgICAgb2xkX3VzYWdl
ID0gY3BwX3N0eWxlLl9VU0FHRQotICAgICAgICBvbGRfZXJyb3JfY2F0ZWdvcmllcyA9IGNwcF9z
dHlsZS5fRVJST1JfQ0FURUdPUklFUworICAgICAgICBvbGRfc3R5bGVfY2F0ZWdvcmllcyA9IGNw
cF9zdHlsZS5fU1RZTEVfQ0FURUdPUklFUworICAgICAgICBvbGRfd2Via2l0X2ZpbHRlcl9ydWxl
cyA9IGNwcF9zdHlsZS5fV0VCS0lUX0ZJTFRFUl9SVUxFUwogICAgICAgICBvbGRfb3V0cHV0X2Zv
cm1hdCA9IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQKICAgICAgICAg
b2xkX3ZlcmJvc2VfbGV2ZWwgPSBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xl
dmVsCiAgICAgICAgIG9sZF9maWx0ZXJzID0gY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuZmls
dGVycwogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIERvbid0IHByaW50IHVzYWdlIGR1cmlu
ZyB0aGUgdGVzdHMsIG9yIGZpbHRlciBjYXRlZ29yaWVzCiAgICAgICAgICAgICBjcHBfc3R5bGUu
X1VTQUdFID0gJycKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fRVJST1JfQ0FURUdPUklFUyA9ICcn
CisgICAgICAgICAgICBjcHBfc3R5bGUuX1NUWUxFX0NBVEVHT1JJRVMgPSBbXQorICAgICAgICAg
ICAgY3BwX3N0eWxlLl9XRUJLSVRfRklMVEVSX1JVTEVTID0gW10KIAogICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cywgWyct
LWJhZG9wdCddKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgY3Bw
X3N0eWxlLnBhcnNlX2FyZ3VtZW50cywgWyctLWhlbHAnXSkKQEAgLTE2MzIsNyArMTYzMyw4IEBA
IGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsnLS1mb290eXBvPWJhcicsICdmb28uY3BwJ10sIFsnZm9vPSddKQogICAg
ICAgICBmaW5hbGx5OgogICAgICAgICAgICAgY3BwX3N0eWxlLl9VU0FHRSA9IG9sZF91c2FnZQot
ICAgICAgICAgICAgY3BwX3N0eWxlLl9FUlJPUl9DQVRFR09SSUVTID0gb2xkX2Vycm9yX2NhdGVn
b3JpZXMKKyAgICAgICAgICAgIGNwcF9zdHlsZS5fU1RZTEVfQ0FURUdPUklFUyA9IG9sZF9zdHls
ZV9jYXRlZ29yaWVzCisgICAgICAgICAgICBjcHBfc3R5bGUuX1dFQktJVF9GSUxURVJfUlVMRVMg
PSBvbGRfd2Via2l0X2ZpbHRlcl9ydWxlcwogICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5
bGVfc3RhdGUub3V0cHV0X2Zvcm1hdCA9IG9sZF9vdXRwdXRfZm9ybWF0CiAgICAgICAgICAgICBj
cHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVsID0gb2xkX3ZlcmJvc2VfbGV2
ZWwKICAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMgPSBvbGRf
ZmlsdGVycwpAQCAtMTY1MSw5ICsxNjUzLDkgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxl
VGVzdEJhc2UpOgogICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuZmlsdGVy
cyA9IG9sZF9maWx0ZXJzCiAKICAgICBkZWYgdGVzdF9kZWZhdWx0X2ZpbHRlcihzZWxmKToKLSAg
ICAgICAgZGVmYXVsdF9maWx0ZXJzID0gY3BwX3N0eWxlLl9ERUZBVUxUX0ZJTFRFUlMKKyAgICAg
ICAgZGVmYXVsdF9maWx0ZXJfcnVsZXMgPSBjcHBfc3R5bGUuX0RFRkFVTFRfRklMVEVSX1JVTEVT
CiAgICAgICAgIG9sZF9maWx0ZXJzID0gY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuZmlsdGVy
cwotICAgICAgICBjcHBfc3R5bGUuX0RFRkFVTFRfRklMVEVSUyA9IFsgJy13aGl0ZXNwYWNlJyBd
CisgICAgICAgIGNwcF9zdHlsZS5fREVGQVVMVF9GSUxURVJfUlVMRVMgPSBbICctd2hpdGVzcGFj
ZScgXQogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIFJlc2V0IGZpbHRlcnMKICAgICAgICAg
ICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLnNldF9maWx0ZXJzKCcnKQpAQCAtMTY2Niw3
ICsxNjY4LDcgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnIHdlaXJkIG9wZW5pbmcgc3BhY2UnLCAnJykKICAgICAg
ICAgZmluYWxseToKICAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRl
cnMgPSBvbGRfZmlsdGVycwotICAgICAgICAgICAgY3BwX3N0eWxlLl9ERUZBVUxUX0ZJTFRFUlMg
PSBkZWZhdWx0X2ZpbHRlcnMKKyAgICAgICAgICAgIGNwcF9zdHlsZS5fREVGQVVMVF9GSUxURVJf
UlVMRVMgPSBkZWZhdWx0X2ZpbHRlcl9ydWxlcwogCiAgICAgZGVmIHRlc3RfdW5uYW1lZF9uYW1l
c3BhY2VzX2luX2hlYWRlcnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1
bGVzX2NoZWNrKAo=
</data>
<flag name="review"
          id="26869"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="26873"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>