<?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>128417</bug_id>
          
          <creation_ts>2014-02-07 16:59:04 -0800</creation_ts>
          <short_desc>[GTK] generate-gtkdoc should not generate documentation for source files for unbuilt source files</short_desc>
          <delta_ts>2014-03-01 22:55:24 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>128418</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>rego</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>978164</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-02-07 16:59:04 -0800</bug_when>
    <thetext>This causes serious headaches for people who work on the API layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982098</commentid>
    <comment_count>1</comment_count>
      <attachid>224547</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-02-18 14:20:06 -0800</bug_when>
    <thetext>Created attachment 224547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982269</commentid>
    <comment_count>2</comment_count>
      <attachid>224547</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-02-19 00:24:00 -0800</bug_when>
    <thetext>Comment on attachment 224547
Patch

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

Thanks for working on this. I have a just a few comments and questions.

&gt; Source/WebCore/bindings/gobject/GNUmakefile.am:606
&gt; +gtkdoc-webkitdom.cfg: $(WebCore)/bindings/gobject/GNUmakefile.am $(srcdir)/Tools/gtk/GNUmakefile.am
&gt; +	$(AM_V_GEN)echo &quot;[webkitdomgtk]&quot; &gt; $@ &amp;&amp; \
&gt; +	echo &quot;pkgconfig_file=$(webkitdom_pkgconfig_file)&quot; &gt;&gt; $@ &amp;&amp; \
&gt; +	echo &quot;namespace=webkit_dom&quot; &gt;&gt; $@ &amp;&amp; \
&gt; +	echo &quot;doc_dir=DerivedSources/webkitdom/docs&quot; &gt;&gt; $@ &amp;&amp; \
&gt; +	echo -e &quot;cflags=-I$(srcdir)/Source $(webkitgtk_gdom_include_dirs)&quot; &gt;&gt; $@ &amp;&amp; \
&gt; +	echo &quot;source_dirs=$(top_builddir)/DerivedSources/webkitdom $(srcdir)/Source/WebCore/bindings/gobject&quot; &gt;&gt; $@ &amp;&amp; \
&gt; +	echo &quot;headers=$(webkitgtk_gdom_built_h_api) DerivedSources/webkitdom/WebKitDOMDeprecated.h&quot; &gt;&gt; $@
&gt; +BUILT_SOURCES += gtkdoc-webkitdom.cfg

Since we are generating different config files for wk1, wk2 and wkdom, I wonder if it would be easier to make these config files being python files that can be just imported. We don&apos;t really need to have sections, since the file is gtkdoc-webkitdom.cfg and the only section it has is webkitdom.

&gt; Tools/gtk/GNUmakefile.am:47
&gt; -docs-build.stamp: $(docs_build_stamp_list)
&gt; +docs-build.stamp: $(docs_build_stamp_list) gtkdoc-webkitdom.cfg gtkdoc-webkitgtk.cfg gtkdoc-webkit2gtk.cfg

I guess this is a problem if wk1 or wk2 is disabled in build.

&gt; Tools/gtk/generate-gtkdoc:-50
&gt; -def get_gtkdoc_module_paths(xref_dep_packages):
&gt; -    deps = []
&gt; -    html_dir = os.path.join(&apos;share&apos;, &apos;gtk-doc&apos;, &apos;html&apos;)
&gt; -
&gt; -    for package in xref_dep_packages:
&gt; -        prefix = common.prefix_of_pkg_config_file(package)
&gt; -        if prefix is None:
&gt; -            continue
&gt; -        for module in xref_dep_packages[package]:
&gt; -            deps.append(os.path.join(prefix, html_dir, module))
&gt; -
&gt; -    return deps

What is this change exactly? It&apos;s not easy to see why we need to change this looking at the diff.

&gt; Tools/gtk/generate-gtkdoc:86
&gt; +            if os.path.exists(file) and os.path.isfile(file):

os.path.isfile() returns False if the fiel doesn&apos;t exist, so you don&apos;t need to call os.path.exists() too.

&gt; Tools/gtk/generate-gtkdoc:89
&gt; +        add_file_if_exists(os.path.splitext(header)[0] + &quot;.cpp&quot;)
&gt; +        add_file_if_exists(os.path.splitext(header)[0] + &quot;.c&quot;)

You could avoid doing the splitext twice here

&gt; Tools/gtk/generate-gtkdoc:95
&gt; +        if not os.path.splitext(file)[1] in [&apos;.h&apos;, &apos;.c&apos;, &apos;.cpp&apos;, &apos;.cc&apos;]:
&gt; +            return False # These files are ignored anyway.

I think this is easier to read as if os.path.splitext(file)[1] not in [&apos;.h&apos;, &apos;.c&apos;, &apos;.cpp&apos;, &apos;.cc&apos;]:

You don&apos;t need the absolute path for this check, so you can probably move the previous line after this.

&gt; Tools/gtk/generate-gtkdoc:97
&gt; +        if not os.path.isfile(file):
&gt; +            return False

Not sure if you need the abs patch for this check either.

&gt; Tools/gtk/generate-gtkdoc:100
&gt; +        if file in implementation_files:
&gt; +            return False
&gt; +        return True

This could be 

return file not in implementation_files

&gt; Tools/gtk/generate-gtkdoc:108
&gt; +    config = SafeConfigParser()
&gt; +    config.read(config_file)
&gt; +    module_name = config.sections()[0]

What happen if generate-gtkdoc is called and the config files don&apos;t exist?

&gt; Tools/gtk/generate-gtkdoc:189
&gt; +    saw_webkit1_warnings = generate_documentation_for_config(common.build_path(&apos;gtkdoc-webkitgtk.cfg&apos;))
&gt; +    saw_webkit2_warnings = generate_documentation_for_config(common.build_path(&apos;gtkdoc-webkit2gtk.cfg&apos;))

I think we should check if the config files actually exist and exit with an error message if they don&apos;t

&gt; Tools/gtk/gtkdoc.py:42
&gt; +                          Required if source_files is not specified.

What is source_files? you mean headers? I think both options should always be required. Since the config files are now required and they always contain both, I guess there&apos;s no problem and it makes the whole thing easier and safer.

&gt; Tools/gtk/gtkdoc.py:122
&gt; -        def raise_error_if_not_specified(key):
&gt; -            if not getattr(self, key):
&gt; -                raise Exception(&apos;%s not specified.&apos; % key)
&gt; -
&gt; -        raise_error_if_not_specified(&apos;output_dir&apos;)
&gt; -        raise_error_if_not_specified(&apos;source_dirs&apos;)
&gt; -        raise_error_if_not_specified(&apos;module_name&apos;)
&gt; +        if not getattr(self, &apos;output_dir&apos;):
&gt; +            raise Exception(&apos;output_dir not specified.&apos;)
&gt; +        if not getattr(self, &apos;module_name&apos;):
&gt; +            raise Exception(&apos;module_name not specified.&apos;)

Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982363</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-02-19 09:10:46 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 224547 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=224547&amp;action=review
&gt; 
&gt; Thanks for working on this. I have a just a few comments and questions.

Thanks for the timely review! I&apos;ll post a new patch, but I&apos;ll answer a few of your questions first.


&gt; Since we are generating different config files for wk1, wk2 and wkdom, I wonder if it would be easier to make these config files being python files that can be just imported. We don&apos;t really need to have sections, since the file is gtkdoc-webkitdom.cfg and the only section it has is webkitdom.

The nice thing about the config file format is that we don&apos;t have to worry about quotes and commas as much, as the config file format syntax is much more flexible than Python syntax. This makes the makefiles much more readable. I think we can consider Python files, but we should do it once we&apos;ve switched fully to CMake, which has more expressive looping constructs and string operations, but right now, I think it would make everything a lot more complicated.

&gt; &gt; Tools/gtk/generate-gtkdoc:-50
&gt; &gt; -def get_gtkdoc_module_paths(xref_dep_packages):
&gt; &gt; -    deps = []
&gt; &gt; -    html_dir = os.path.join(&apos;share&apos;, &apos;gtk-doc&apos;, &apos;html&apos;)
&gt; &gt; -
&gt; &gt; -    for package in xref_dep_packages:
&gt; &gt; -        prefix = common.prefix_of_pkg_config_file(package)
&gt; &gt; -        if prefix is None:
&gt; &gt; -            continue
&gt; &gt; -        for module in xref_dep_packages[package]:
&gt; &gt; -            deps.append(os.path.join(prefix, html_dir, module))
&gt; &gt; -
&gt; &gt; -    return deps
&gt; 
&gt; What is this change exactly? It&apos;s not easy to see why we need to change this looking at the diff.

Before each module had it&apos;s own dictionary of cross-reference dependencies. Since they can be the same for all modules without harm, it was easier to just simplify this into a single method and not have to store anything in the configuration files.

&gt; 
&gt; &gt; Tools/gtk/generate-gtkdoc:86
&gt; &gt; +            if os.path.exists(file) and os.path.isfile(file):
&gt; 
&gt; os.path.isfile() returns False if the fiel doesn&apos;t exist, so you don&apos;t need to call os.path.exists() too.
&gt; 
&gt; &gt; Tools/gtk/generate-gtkdoc:89
&gt; &gt; +        add_file_if_exists(os.path.splitext(header)[0] + &quot;.cpp&quot;)
&gt; &gt; +        add_file_if_exists(os.path.splitext(header)[0] + &quot;.c&quot;)
&gt; 
&gt; You could avoid doing the splitext twice here
&gt; 
&gt; &gt; Tools/gtk/generate-gtkdoc:95
&gt; &gt; +        if not os.path.splitext(file)[1] in [&apos;.h&apos;, &apos;.c&apos;, &apos;.cpp&apos;, &apos;.cc&apos;]:
&gt; &gt; +            return False # These files are ignored anyway.
&gt; 
&gt; I think this is easier to read as if os.path.splitext(file)[1] not in [&apos;.h&apos;, &apos;.c&apos;, &apos;.cpp&apos;, &apos;.cc&apos;]:
&gt; 
&gt; You don&apos;t need the absolute path for this check, so you can probably move the previous line after this.
&gt; 
&gt; &gt; Tools/gtk/generate-gtkdoc:97
&gt; &gt; +        if not os.path.isfile(file):
&gt; &gt; +            return False
&gt; 
&gt; Not sure if you need the abs patch for this check either.
&gt; 
&gt; &gt; Tools/gtk/generate-gtkdoc:100
&gt; &gt; +        if file in implementation_files:
&gt; &gt; +            return False
&gt; &gt; +        return True
&gt; 
&gt; This could be 
&gt; 
&gt; return file not in implementation_files
&gt; 
&gt; &gt; Tools/gtk/generate-gtkdoc:108
&gt; &gt; +    config = SafeConfigParser()
&gt; &gt; +    config.read(config_file)
&gt; &gt; +    module_name = config.sections()[0]
&gt; 
&gt; What happen if generate-gtkdoc is called and the config files don&apos;t exist?
&gt; 
&gt; &gt; Tools/gtk/generate-gtkdoc:189
&gt; &gt; +    saw_webkit1_warnings = generate_documentation_for_config(common.build_path(&apos;gtkdoc-webkitgtk.cfg&apos;))
&gt; &gt; +    saw_webkit2_warnings = generate_documentation_for_config(common.build_path(&apos;gtkdoc-webkit2gtk.cfg&apos;))
&gt; 
&gt; I think we should check if the config files actually exist and exit with an error message if they don&apos;t
&gt; 
&gt; &gt; Tools/gtk/gtkdoc.py:42
&gt; &gt; +                          Required if source_files is not specified.
&gt; 
&gt; What is source_files? you mean headers? I think both options should always be required. Since the config files are now required and they always contain both, I guess there&apos;s no problem and it makes the whole thing easier and safer.

I think of gtkdoc.py as independent of the front-end, generate-gtkdoc. I&apos;m writing it in hopes that it could be useful to other projects. It may not turn out to be the case, but it isn&apos;t something I want to change in this patch. Only one is truly required.

&gt; &gt; Tools/gtk/gtkdoc.py:122
&gt; &gt; -        def raise_error_if_not_specified(key):
&gt; &gt; -            if not getattr(self, key):
&gt; &gt; -                raise Exception(&apos;%s not specified.&apos; % key)
&gt; &gt; -
&gt; &gt; -        raise_error_if_not_specified(&apos;output_dir&apos;)
&gt; &gt; -        raise_error_if_not_specified(&apos;source_dirs&apos;)
&gt; &gt; -        raise_error_if_not_specified(&apos;module_name&apos;)
&gt; &gt; +        if not getattr(self, &apos;output_dir&apos;):
&gt; &gt; +            raise Exception(&apos;output_dir not specified.&apos;)
&gt; &gt; +        if not getattr(self, &apos;module_name&apos;):
&gt; &gt; +            raise Exception(&apos;module_name not specified.&apos;)
&gt; 
&gt; Why?

Since it cannot be used for all three, the method is of limited use now. The third one now has to check two arguments. Both approaches have the number of lines of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983003</commentid>
    <comment_count>4</comment_count>
      <attachid>224801</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-02-20 15:08:18 -0800</bug_when>
    <thetext>Created attachment 224801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983810</commentid>
    <comment_count>5</comment_count>
      <attachid>224801</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-02-24 00:51:36 -0800</bug_when>
    <thetext>Comment on attachment 224801
Patch

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

&gt; Tools/gtk/GNUmakefile.am:13
&gt; -docs_build_stamp_list = \
&gt; +docs_build_dependencies = \

Why renaming this? looks unrelated

&gt; Tools/gtk/generate-gtkdoc:88
&gt; +        header_parts = os.path.splitext(header)
&gt; +        add_file_if_exists(header_parts[0] + &quot;.cpp&quot;)
&gt; +        add_file_if_exists(header_parts[0] + &quot;.c&quot;)

You could get the basename without the extension directly, and avoid using [0]. 

basename = os.path.splitext(header)[0]

&gt; Tools/gtk/generate-gtkdoc:123
&gt; +        &apos;cflags&apos;: &quot; &quot;.join(config.get(module_name, &apos;cflags&apos;).split()),

Why do you split and then join?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983897</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-02-24 07:11:02 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 224801 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=224801&amp;action=review
&gt; 
&gt; &gt; Tools/gtk/GNUmakefile.am:13
&gt; &gt; -docs_build_stamp_list = \
&gt; &gt; +docs_build_dependencies = \
&gt; 
&gt; Why renaming this? looks unrelated

The name doesn&apos;t really make sense any more since none of the files on the list are stamp files.

&gt; 
&gt; &gt; Tools/gtk/generate-gtkdoc:88
&gt; &gt; +        header_parts = os.path.splitext(header)
&gt; &gt; +        add_file_if_exists(header_parts[0] + &quot;.cpp&quot;)
&gt; &gt; +        add_file_if_exists(header_parts[0] + &quot;.c&quot;)
&gt; 
&gt; You could get the basename without the extension directly, and avoid using [0]. 
&gt; 
&gt; basename = os.path.splitext(header)[0]

Okay. Makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984194</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-02-24 23:24:55 -0800</bug_when>
    <thetext>Committed r164632: &lt;http://trac.webkit.org/changeset/164632&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984412</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-02-25 11:34:24 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984413</commentid>
    <comment_count>9</comment_count>
      <attachid>225166</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-02-25 11:34:27 -0800</bug_when>
    <thetext>Created attachment 225166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986059</commentid>
    <comment_count>10</comment_count>
      <attachid>225166</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-01 22:55:18 -0800</bug_when>
    <thetext>Comment on attachment 225166
Patch

Patch landed as a diff for the old patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224547</attachid>
            <date>2014-02-18 14:20:06 -0800</date>
            <delta_ts>2014-02-20 15:08:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128417-20140218142005.patch</filename>
            <type>text/plain</type>
            <size>35724</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RjZDA4MTg2NDIzNzky
MzAwZGIzMmRlZWUxYTFmYTBlYjZjOTRkOS4uNzU2ZmRhM2E3M2E3YWY1MjI2MzcwMDEwZmNkNjYy
ZmFhZGY4MWJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE0LTAyLTE3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBnZW5l
cmF0ZS1ndGtkb2Mgc2hvdWxkIG5vdCBnZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZvciBzb3VyY2Ug
ZmlsZXMgZm9yIHVuYnVpbHQgc291cmNlIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg0MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW06
IEdlbmVyYXRlIGEgY29uZmlnIGZpbGUgZm9yIHdlYmtpdGRvbSBkb2N1bWVudGF0aW9uIGdlbmVy
YXRpb24uCisKIDIwMTQtMDItMTggIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+
CiAKICAgICAgICAgW0NTU1JlZ2lvbnNdIENvbXB1dGUgcmVnaW9uIHJhbmdlcyBmb3IgaW5saW5l
IHJlcGxhY2VkIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA2Yzg0OWJjMjFlYWE4OGU1NmU2NjkyOGZi
MjBlM2I2YWNiMWE2YTguLjVjNDUzNDk4NjZhN2UwOWExNjJiMWU4M2I5MTYzZjA3NTUwY2Q1ZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMDItMTcgIE1hcnRpbiBSb2JpbnNvbiAg
PG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIGdlbmVyYXRlLWd0a2RvYyBz
aG91bGQgbm90IGdlbmVyYXRlIGRvY3VtZW50YXRpb24gZm9yIHNvdXJjZSBmaWxlcyBmb3IgdW5i
dWlsdCBzb3VyY2UgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyODQxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IENvcnJlY3QgdGhlIGRlZmluaXRpb24gb2Yg
V2ViS2l0R1RLX0VOVU1fR0VORVJBVElPTl9IRUFERVJTIGFuZCBnZW5lcmF0ZQorICAgICAgICBh
IGd0a2RvYy13ZWJraXRndGsuY2ZnIGZpbGUgdG8gYmUgdXNlZCBieSBnZW5lcmF0ZS1ndGtkb2Mu
CisKIDIwMTQtMDItMTcgIFNlcmdpbyBDb3JyZWlhICA8c2VyZ2lvLmNvcnJlaWFAb3BlbmJvc3Nh
Lm9yZz4KIAogICAgICAgICBSZXBsYWNlIHVzZXMgb2YgUGFzc093blB0ci9Pd25QdHIgd2l0aCBz
dGQ6OnVuaXF1ZV9wdHIgaW4gV2ViQ29yZS9pbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBh
ZmE1ZWNiZmMyZWNlNThmNGY1MGRmYWUyNGYzMDNmMjJkOWZjZjJjLi5hZDcxNmE4Nzk3NGYxYmVi
OWE2NmY1M2JjMzQ5NGVkODFhOWFiZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTQtMDItMTcgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIGdlbmVyYXRlLWd0a2RvYyBzaG91bGQgbm90IGdlbmVyYXRlIGRvY3Vt
ZW50YXRpb24gZm9yIHNvdXJjZSBmaWxlcyBmb3IgdW5idWlsdCBzb3VyY2UgZmlsZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODQxNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUu
YW06IEdlbmVyYXRlIGEgY29uZmlnIGZpbGUgZm9yIGdlbmVyYXRlLWd0a2RvYy4KKwogMjAxNC0w
Mi0xNyAgU2VyZ2lvIENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBvcGVuYm9zc2Eub3JnPgogCiAg
ICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQYXNzT3duUHRyL093blB0ciB3aXRoIHN0ZDo6dW5pcXVl
X3B0ciBpbiBXZWJDb3JlL2luc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDlmYzE1ZTJkZmZlMjZlYTAz
NTY4NDM1YzVjNjEwZDhjNjcyZmRiNWIuLjQ1MDAxNDg1NmJjM2RiOTVlNTI1NzA2MGQ1MTEwMGNm
ZTM2YmZkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0wMi0xNyAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gZ2VuZXJh
dGUtZ3RrZG9jIHNob3VsZCBub3QgZ2VuZXJhdGUgZG9jdW1lbnRhdGlvbiBmb3Igc291cmNlIGZp
bGVzIGZvciB1bmJ1aWx0IHNvdXJjZSBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogR2VuZXJhdGUgYSBjb25maWcg
ZmlsZSBmb3IgZ2VuZXJhdGUtZ3RrZG9jLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBE
aXR0by4KKwogMjAxNC0wMi0xNyAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rLm9oQGNvbGxhYm9y
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBndGsgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KaW5kZXggM2Q4YmI2ZTg2YzUy
MzkwMTEyNjY1ZjFjYmQ4NzY5ZGRjMTcyNzM0YS4uYTE3NDE2YWEzMmY4YzNmOWU4MjdjOGQ0NmJk
YTMxMGZmMDRmZjhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dO
VW1ha2VmaWxlLmFtCkBAIC01NzUsMTIgKzU3NSwxNSBAQCBsaWJHT2JqZWN0RE9NQmluZGluZ3Nf
bGFfQ0ZMQUdTID0gXAogCS1mdmlzaWJpbGl0eT1oaWRkZW4gXAogCSQoZ2xvYmFsX2NmbGFncykK
IAord2Via2l0Z3RrX2dkb21faW5jbHVkZV9kaXJzID0gXAorCS1JJChXZWJDb3JlKS9iaW5kaW5n
cyBcCisJLUkkKFdlYkNvcmUpL2JpbmRpbmdzL2dvYmplY3QgXAorCS1JJChHRU5TT1VSQ0VTX1dF
QktJVERPTSkKKwogbGliR09iamVjdERPTUJpbmRpbmdzX2xhX0NQUEZMQUdTID0gXAogCS1EQlVJ
TERJTkdfV2ViQ29yZSBcCiAJLURCVUlMRElOR19XRUJLSVQgXAotCS1JJChXZWJDb3JlKS9iaW5k
aW5ncyBcCi0JLUkkKFdlYkNvcmUpL2JpbmRpbmdzL2dvYmplY3QgXAotCS1JJChHRU5TT1VSQ0VT
X1dFQktJVERPTSkgXAorCSQod2Via2l0Z3RrX2dkb21faW5jbHVkZV9kaXJzKSBcCiAJJChnbG9i
YWxfY3BwZmxhZ3MpIFwKIAkkKHBsYXRmb3JtX2NwcGZsYWdzKSBcCiAJJChwbGF0Zm9ybWd0a19j
cHBmbGFncykgXApAQCAtNTkxLDMgKzU5NCwxMyBAQCBsaWJHT2JqZWN0RE9NQmluZGluZ3NfbGFf
Q1BQRkxBR1MgPSBcCiAJJChGUkVFVFlQRV9DRkxBR1MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCiAJ
JChMSUJTT1VQX0NGTEFHUykKKworZ3RrZG9jLXdlYmtpdGRvbS5jZmc6ICQoV2ViQ29yZSkvYmlu
ZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbSAkKHNyY2RpcikvVG9vbHMvZ3RrL0dOVW1ha2Vm
aWxlLmFtCisJJChBTV9WX0dFTillY2hvICJbd2Via2l0ZG9tZ3RrXSIgPiAkQCAmJiBcCisJZWNo
byAicGtnY29uZmlnX2ZpbGU9JCh3ZWJraXRkb21fcGtnY29uZmlnX2ZpbGUpIiA+PiAkQCAmJiBc
CisJZWNobyAibmFtZXNwYWNlPXdlYmtpdF9kb20iID4+ICRAICYmIFwKKwllY2hvICJkb2NfZGly
PURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9kb2NzIiA+PiAkQCAmJiBcCisJZWNobyAtZSAiY2Zs
YWdzPS1JJChzcmNkaXIpL1NvdXJjZSAkKHdlYmtpdGd0a19nZG9tX2luY2x1ZGVfZGlycykiID4+
ICRAICYmIFwKKwllY2hvICJzb3VyY2VfZGlycz0kKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0IiA+
PiAkQCAmJiBcCisJZWNobyAiaGVhZGVycz0kKHdlYmtpdGd0a19nZG9tX2J1aWx0X2hfYXBpKSBE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NRGVwcmVjYXRlZC5oIiA+PiAkQAorQlVJ
TFRfU09VUkNFUyArPSBndGtkb2Mtd2Via2l0ZG9tLmNmZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggMWNiMjE4NGVlYWUyMTE1NmFhMjY1NzFjMGIyMmFjNzIzMThjMDFhZC4uYTcxZGViOTlm
OThmMTU2OTZiZDM1MWRhNzRjYmIzMjkxZWRhMGRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtl
CkBAIC0xLDcgKzEsNyBAQAogZmlsZShNQUtFX0RJUkVDVE9SWSAke0RFUklWRURfU09VUkNFU19X
RUJLSVRHVEtfRElSfSkKIGZpbGUoTUFLRV9ESVJFQ1RPUlkgJHtERVJJVkVEX1NPVVJDRVNfV0VC
S0lUR1RLX0FQSV9ESVJ9KQogY29uZmlndXJlX2ZpbGUoZ3RrL3dlYmtpdC93ZWJraXR2ZXJzaW9u
LmguaW4gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUR1RLX0FQSV9ESVJ9L3dlYmtpdHZlcnNpb24u
aCkKLWNvbmZpZ3VyZV9maWxlKGd0ay93ZWJraXQucGMuaW4gJHtDTUFLRV9CSU5BUllfRElSfS9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXRndGstJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LnBjIEBP
TkxZKQorY29uZmlndXJlX2ZpbGUoZ3RrL3dlYmtpdC5wYy5pbiAke1dlYktpdF9QS0dDT05GSUdf
RklMRX0gQE9OTFkpCiAKIGFkZF9kZWZpbml0aW9ucygtRFBBQ0tBR0VfTE9DQUxFX0RJUj0iJHtD
TUFLRV9JTlNUQUxMX0ZVTExfTE9DQUxFRElSfSIpCiAKQEAgLTE1Niw3ICsxNTYsNyBAQCBhZGRf
Y3VzdG9tX2NvbW1hbmQoCiAKICMgVG8gZ2VuZXJhdGUgd2Via2l0ZW51bXR5cGVzLmggd2Ugd2Fu
dCB0byB1c2UgYWxsIGluc3RhbGxlZCBoZWFkZXJzLCBleGNlcHQgd2Via2l0ZW51bXR5cGVzLmgg
aXRzZWxmLgogc2V0KFdlYktpdEdUS19FTlVNX0dFTkVSQVRJT05fSEVBREVSUyAke1dlYktpdEdU
S19JTlNUQUxMRURfSEVBREVSU30pCi1saXN0KFJFTU9WRV9JVEVNIFdlYktpdEdUS19FTlVNX0dF
TkVSQVRJT05fSEVBREVSUyAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0FQSV9ESVJ9L3dl
YmtpdGVudW10eXBlcy5oKQorbGlzdChSRU1PVkVfSVRFTSBXZWJLaXRHVEtfRU5VTV9HRU5FUkFU
SU9OX0hFQURFUlMgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUR1RLX0FQSV9ESVJ9L3dlYmtpdGVu
dW10eXBlcy5oKQogYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09V
UkNFU19XRUJLSVRHVEtfQVBJX0RJUn0vd2Via2l0ZW51bXR5cGVzLmgKICAgICAgICAgICAgJHtE
RVJJVkVEX1NPVVJDRVNfV0VCS0lUR1RLX0FQSV9ESVJ9L3dlYmtpdGVudW10eXBlcy5jcHAKQEAg
LTIyOSwzICsyMjksMTcgQEAgaW5zdGFsbChGSUxFUyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktp
dC0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyCiBpbnN0YWxsKEZJTEVTICR7Q01BS0VfQklO
QVJZX0RJUn0vV2ViS2l0LSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS50eXBlbGliCiAgICAgICAg
IERFU1RJTkFUSU9OICR7SU5UUk9TUEVDVElPTl9JTlNUQUxMX1RZUEVMSUJESVJ9CiApCisKK2Zp
bGUoV1JJVEUgJHtDTUFLRV9CSU5BUllfRElSfS9ndGtkb2Mtd2Via2l0Z3RrLmNmZworICAgICJb
d2Via2l0Z3RrXVxuIgorICAgICJwa2djb25maWdfZmlsZT0ke1dlYktpdF9QS0dDT05GSUdfRklM
RX1cbiIKKyAgICAibmFtZXNwYWNlPXdlYmtpdFxuIgorICAgICJjZmxhZ3M9LUkke0RFUklWRURf
U09VUkNFU19ESVJ9XG4iCisgICAgIiAgICAgICAtSSR7Q01BS0VfU09VUkNFX0RJUn1cbiIKKyAg
ICAiICAgICAgIC1JJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2VcbiIKKyAgICAiICAgICAgIC1J
JHtDTUFLRV9TT1VSQ0VfRElSfS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVyc1xuIgor
ICAgICJkb2NfZGlyPSR7V0VCS0lUX0RJUn0vZ3RrL2RvY3NcbiIKKyAgICAic291cmNlX2RpcnM9
JHtXRUJLSVRfRElSfS9ndGsvd2Via2l0XG4iCisgICAgIiAgICAgICAgICAgICR7REVSSVZFRF9T
T1VSQ0VTX1dFQktJVEdUS19BUElfRElSfVxuIgorICAgICJoZWFkZXJzPSR7V2ViS2l0R1RLX0VO
VU1fR0VORVJBVElPTl9IRUFERVJTfVxuIgorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQppbmRl
eCA2NGVkNTNlMzk0ZGUyMTA0NmI5ZTFjN2EwZWYxNjc5MzM5YmExM2ZlLi45MDdmMGM1MjdmOGQ3
ZmUxYWNhMjhkZWJmMmIyYzUwMjU0M2I3MzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQpA
QCAtMzc3LDYgKzM3NywxNyBAQCAkKEdFTlNPVVJDRVNfV0VCS0lUKS93ZWJraXRlbnVtdHlwZXMu
Y3BwOiAkKHdlYmtpdGd0a19oX2FwaSkgJChXZWJLaXQpL0dOVW1ha2VmaQogCSYmIGNwIHhnZW4t
Z3RjICRAIFwKIAkmJiBybSAtZiB4Z2VuLWd0YwogCitndGtkb2Mtd2Via2l0Z3RrLmNmZzogJChX
ZWJLaXQpL0dOVW1ha2VmaWxlLmFtICQoc3JjZGlyKS9Ub29scy9ndGsvR05VbWFrZWZpbGUuYW0K
KwkkKEFNX1ZfR0VOKWVjaG8gIlt3ZWJraXRndGtdIiA+ICRAICYmIFwKKwllY2hvICJwa2djb25m
aWdfZmlsZT0kKHdlYmtpdDFfcGtnX2NvbmZpZ19maWxlKSIgPj4gJEAgJiYgXAorCWVjaG8gIm5h
bWVzcGFjZT13ZWJraXQiID4+ICRAICYmIFwKKwllY2hvIC1lICJjZmxhZ3M9JChsaWJ3ZWJraXRn
dGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVS
U0lPTkBfbGFfQ1BQRkxBR1MpIiA+PiAkQCAmJiBcCisJZWNobyAiZG9jX2Rpcj0kKHNyY2Rpcikv
U291cmNlL1dlYktpdC9ndGsvZG9jcyIgPj4gJEAgJiYgXAorCWVjaG8gLWUgInNvdXJjZV9kaXJz
PSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRcbiBcCisgICAgICAgICAgIFNvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdCIgPj4gJEAgJiYgXAorCWVjaG8gLWUgImhlYWRlcnM9JCh3ZWJr
aXRndGtfc3RhdGljX2hfYXBpKSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lv
bi5oIiA+PiAkQAorQlVJTFRfU09VUkNFUyArPSBndGtkb2Mtd2Via2l0Z3RrLmNmZworCiBFWFRS
QV9ESVNUICs9IFwKIAkkKFdlYktpdCkvQ2hhbmdlTG9nIFwKIAkkKFdlYktpdCkvTkVXUyBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGJmYWFmZmUwNWM2MjlhODQ5ZWU5YzQyMDU5YzQ1MmU5MmVj
YzUwYjcuLmEzYzI4MWU5Y2VkMTM1OWU4NjNmODIwNWMwNWYzOWIyYjI5ZWMzMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtCkBAIC04MDMsNiArODAzLDI1IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblBy
b2Nlc3NfQ1hYRkxBR1MgPSBcCiAJLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuIFwKIAkkKGds
b2JhbF9jeHhmbGFncykKIAorIyBJdCB3b3VsZCBiZSBuaWNlIHRvIHVzZSB0aGUgQ1BQRkxBR1Mg
ZnJvbSB0aGUgV2ViS2l0MiBsaWJyYXJ5IGhlcmUsIGJ1dCB0aGUgcHJlZml4CisjIGhlYWRlciBk
b2Vzbid0IHNlZW0gdG8gcGxheSBuaWNlbHkgd2l0aCB0aGUgZ3RrZG9jIHRvb2xzLgorZ3RrZG9j
LXdlYmtpdDJndGsuY2ZnOiAkKFdlYktpdDIpL0dOVW1ha2VmaWxlLmFtICQoV2ViS2l0MikvR05V
bWFrZWZpbGUubGlzdC5hbQorCSQoQU1fVl9HRU4pZWNobyAiW3dlYmtpdDJndGtdIiA+ICRAICYm
IFwKKwllY2hvICJwa2djb25maWdfZmlsZT0kKHdlYmtpdDJfcGtnX2NvbmZpZ19maWxlKSIgPj4g
JEAgJiYgXAorCWVjaG8gIm5hbWVzcGFjZT13ZWJraXQiID4+ICRAICYmIFwKKwllY2hvIC1lICJj
ZmxhZ3M9LUkkKHNyY2RpcikvU291cmNlXG4gXAorICAgICAgIC1JJChXZWJLaXQyKS9VSVByb2Nl
c3MvQVBJL2d0a1xuIFwKKyAgICAgICAtSURlcml2ZWRTb3VyY2VzL3dlYmtpdDJndGsvaW5jbHVk
ZVxuIFwKKyAgICAgICAtSURlcml2ZWRTb3VyY2VzL1dlYktpdDIvd2Via2l0Mmd0a1xuIiA+PiAk
QCAmJiBcCisJZWNobyAiZG9jX2Rpcj0kKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mi
ID4+ICRAICYmIFwKKwllY2hvIC1lICJzb3VyY2VfZGlycz0kKFdlYktpdDIpL1VJUHJvY2Vzcy9B
UEkvZ3RrXG4gXAorICAgICAgICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0a1xuIFwKKyAgICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi93ZWJraXQy
Z3RrL3dlYmtpdDJcbiIgPj4gJEAgJiYgXAorCWVjaG8gLWUgImhlYWRlcnM9JCh3ZWJraXQyZ3Rr
X3VpX2hfYXBpKVxuIFwKKyAgICAgICAgICQod2Via2l0Mmd0a193ZWJfZXh0ZW5zaW9uX2hfYXBp
KVxuIFwKKyAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYktpdDIvd2Via2l0Mmd0ay93ZWJraXQy
L1dlYktpdFZlcnNpb24uaCIgPj4gJEAKK0JVSUxUX1NPVVJDRVMgKz0gZ3RrZG9jLXdlYmtpdDJn
dGsuY2ZnCisKIEVYVFJBX0RJU1QgKz0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggODQ0MmRkNTkyZDQ2ZDhkZDE4ZmNlNDk2ZjA0MDQxMTljOTJiOWRkNi4uYzIzMWU4YWEz
NDQ5YWViODY3YzliODNkNzU2YjQ2NzA0MDliMTVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21h
a2UKQEAgLTQsNyArNCw3IEBAIGZpbGUoTUFLRV9ESVJFQ1RPUlkgJHtGT1JXQVJESU5HX0hFQURF
UlNfV0VCS0lUMkdUS19ESVJ9KQogZmlsZShNQUtFX0RJUkVDVE9SWSAke0ZPUldBUkRJTkdfSEVB
REVSU19XRUJLSVQyR1RLX0VYVEVOU0lPTl9ESVJ9KQogCiBjb25maWd1cmVfZmlsZShVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRWZXJzaW9uLmguaW4gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdU
S19BUElfRElSfS9XZWJLaXRWZXJzaW9uLmgpCi1jb25maWd1cmVfZmlsZSh3ZWJraXQyZ3RrLnBj
LmluICR7Q01BS0VfQklOQVJZX0RJUn0vU291cmNlL1dlYktpdDIvd2Via2l0Mmd0ay0ke1dFQktJ
VEdUS19BUElfVkVSU0lPTn0ucGMgQE9OTFkpCitjb25maWd1cmVfZmlsZSh3ZWJraXQyZ3RrLnBj
LmluICR7V2ViS2l0Ml9QS0dDT05GSUdfRklMRX0gQE9OTFkpCiAKIGFkZF9kZWZpbml0aW9ucygt
RFdFQktJVDJfQ09NUElMQVRJT04pCiBhZGRfZGVmaW5pdGlvbnMoLURMSUJFWEVDRElSPSIke0NN
QUtFX0lOU1RBTExfRlVMTF9MSUJFWEVDRElSfSIpCkBAIC03ODUsMyArNzg1LDE4IEBAIGluc3Rh
bGwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJT
SU9OfS50eXBlbGliCiAgICAgICAgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mldl
YkV4dGVuc2lvbi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0udHlwZWxpYgogICAgICAgICBERVNU
SU5BVElPTiAke0lOVFJPU1BFQ1RJT05fSU5TVEFMTF9UWVBFTElCRElSfQogKQorCitmaWxlKFdS
SVRFICR7Q01BS0VfQklOQVJZX0RJUn0vZ3RrZG9jLXdlYmtpdDJndGsuY2ZnCisgICAgIlt3ZWJr
aXQyZ3RrXVxuIgorICAgICJwa2djb25maWdfZmlsZT0ke1dlYktpdDJfUEtHQ09ORklHX0ZJTEV9
XG4iCisgICAgIm5hbWVzcGFjZT13ZWJraXRcbiIKKyAgICAiY2ZsYWdzPS1JJHtDTUFLRV9TT1VS
Q0VfRElSfS9Tb3VyY2VcbiIKKyAgICAiICAgICAgIC1JJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
L0FQSS9ndGtcbiIKKyAgICAiICAgICAgIC1JJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19E
SVJ9XG4iCisgICAgIiAgICAgICAtSSR7Rk9SV0FSRElOR19IRUFERVJTX1dFQktJVDJHVEtfRElS
fVxuIgorICAgICJkb2NfZGlyPSR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Nc
biIKKyAgICAic291cmNlX2RpcnM9JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGtcbiIK
KyAgICAiICAgICAgICAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrXG4iCisgICAgIiAgICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJH
VEtfQVBJX0RJUn1cbiIKKyAgICAiaGVhZGVycz0ke1dlYktpdDJHVEtfRU5VTV9HRU5FUkFUSU9O
X0hFQURFUlN9ICR7V2ViS2l0MldlYkV4dGVuc2lvbl9JTlNUQUxMRURfSEVBREVSU31cbiIKKykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtl
L09wdGlvbnNHVEsuY21ha2UKaW5kZXggMzBlZWFkNTFlOTAyYzJiY2NlZjQyYTY1MzI1NzMxN2E3
NDlkMjU1ZS4uNzk4NDJlOGNjNmVmNDNiZjBhNWYwYmVhNjlhOTU0OWEyZmQyOTJiOSAxMDA2NDQK
LS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09w
dGlvbnNHVEsuY21ha2UKQEAgLTI2Niw2ICsyNjYsMTAgQEAgc2V0KERFUklWRURfU09VUkNFU19X
RUJLSVQyR1RLX0FQSV9ESVIgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L3dlYmtp
dDIKIHNldChGT1JXQVJESU5HX0hFQURFUlNfRElSICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9y
d2FyZGluZ0hlYWRlcnMpCiBzZXQoRk9SV0FSRElOR19IRUFERVJTX1dFQktJVDJHVEtfRElSICR7
Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vd2Via2l0Mmd0aykKIHNldChGT1JXQVJESU5HX0hFQURF
UlNfV0VCS0lUMkdUS19FWFRFTlNJT05fRElSICR7Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vd2Vi
a2l0Mmd0ay13ZWJleHRlbnNpb24pCisKK3NldChXZWJLaXRfUEtHQ09ORklHX0ZJTEUgJHtDTUFL
RV9CSU5BUllfRElSfS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRndGstJHtXRUJLSVRHVEtfQVBJ
X1ZFUlNJT059LnBjKQorc2V0KFdlYktpdDJfUEtHQ09ORklHX0ZJTEUgJHtDTUFLRV9CSU5BUllf
RElSfS9Tb3VyY2UvV2ViS2l0Mi93ZWJraXQyZ3RrLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5w
YykKKwogc2V0KFNIT1VMRF9JTlNUQUxMX0pTX1NIRUxMIE9OKQogCiAjIFB1c2ggb2YgcmJwIGlz
IG5lZWRlZCBhZnRlciBKU0MgSklUIHVzZXMgQ1N0YWNrLiBTZWUgaHR0cDovL3drYnVnLmNvbS8x
Mjc3NzcuCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggY2VlMDI5ZmRlZDNhNmQwMDk0MWY3YzdjOTc5NTdhOWRmNTNkNWZkOC4uZmZmNTEzYzQyZDhj
ODNlZDY3OWEyNTU5ZDEyY2Q5ZTE5ZTRhY2JjYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTAyLTE3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBnZW5l
cmF0ZS1ndGtkb2Mgc2hvdWxkIG5vdCBnZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZvciBzb3VyY2Ug
ZmlsZXMgZm9yIHVuYnVpbHQgc291cmNlIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg0MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGd0ay9HTlVtYWtlZmlsZS5hbTogTWFrZSB0aGUgZG9j
dW1lbnRhdGlvbiBwcm9jZXNzIGRlcGVuZCBvbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4KKyAg
ICAgICAgKiBndGsvZ2VuZXJhdGUtZ3RrZG9jOiBTd2l0Y2ggZnJvbSB1c2luZyBoYXJkLWNvZGVk
IGNvbmZpZ3VyYXRpb25zIHRvIHJlYWRpbmcgdGhlbSBmcm9tCisgICAgICAgIGEgbWFrZWZpbGUu
IFRoaXMgYWxsb3dzIGFjY2VwdGluZyBhIGhlYWRlciBsaXN0IGZyb20gdGhlIGJ1aWxkIHN5c3Rl
bSwgd2hpY2ggY2FuIGJlIHVzZWQKKyAgICAgICAgdG8gZHluYW1pY2FsbHkgYnVpbGQgYSBsaXN0
IG9mIGlnbm9yZWQgZmlsZXMuIFdlIGNhbiBpZ25vcmUgYW55IHNvdXJjZSBmaWxlIHRoYXQgZG9l
c24ndAorICAgICAgICBoYXZlIGEgY29ycmVzcG9uZGluZyBoZWFkZXIgZmlsZSBvbiB0aGUgaGVh
ZGVyIGxpc3QuIAorICAgICAgICAqIGd0ay9ndGtkb2MucHk6IE5vdyBhY2NlcHQgYSBoZWFkZXJz
IHBhcmFtZXRlciwgd2hpY2ggY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBwYXNzaW5nIGp1c3QKKyAg
ICAgICAgc291cmNlIGRpcmVjdG9yaWVzIHRvIGd0a2RvYy1zY2FuLgorCiAyMDE0LTAyLTE0ICBN
YXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBn
ZW5lYXRlLWd0a2RvYyBzaG91bGQgdXNlIGFyZ3BhcnNlCmRpZmYgLS1naXQgYS9Ub29scy9ndGsv
R05VbWFrZWZpbGUuYW0gYi9Ub29scy9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXggNjAwYjAzNTAy
ZmJkNmVlNGZiZGNlNTFkODYyMWI2NjZiYTY1MmIyNC4uNWM5ZjM0MTQyMTUxN2Y5NzdmMmEwN2E3
ZTNkOGFiMmU5OWMyNjM2YiAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1Rvb2xzL2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtNDQsNyArNDQsNyBAQCBkb2NzX2J1aWxk
X3N0YW1wX2xpc3QgKz0gXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRk
b20vZG9jcy93ZWJraXRkb21ndGstZG9jcy5zZ21sIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZl
ZFNvdXJjZXMvd2Via2l0ZG9tL2RvY3Mvd2Via2l0ZG9tZ3RrLXNlY3Rpb25zLnR4dAogCi1kb2Nz
LWJ1aWxkLnN0YW1wOiAkKGRvY3NfYnVpbGRfc3RhbXBfbGlzdCkKK2RvY3MtYnVpbGQuc3RhbXA6
ICQoZG9jc19idWlsZF9zdGFtcF9saXN0KSBndGtkb2Mtd2Via2l0ZG9tLmNmZyBndGtkb2Mtd2Vi
a2l0Z3RrLmNmZyBndGtkb2Mtd2Via2l0Mmd0ay5jZmcKIAlDQz0kKENDKSAkKHNyY2RpcikvVG9v
bHMvZ3RrL2dlbmVyYXRlLWd0a2RvYwogCUB0b3VjaCBkb2NzLWJ1aWxkLnN0YW1wCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MgYi9Ub29scy9ndGsvZ2VuZXJhdGUtZ3Rr
ZG9jCmluZGV4IDFhM2JlOGJmNTNlMGJlZDZhY2IzYzNjZGQ2ZjI2ZDFmN2U2NzgzYWEuLjhhMzY4
ZTVhMWVhNmNhYzMyYjY2Zjk0MDMxZjYzZDlmZWE5OTY1MDUgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0
ay9nZW5lcmF0ZS1ndGtkb2MKKysrIGIvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYwpAQCAtMTUs
NiArMTUsOSBAQAogIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogCitmcm9t
IF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCitmcm9tIENvbmZpZ1BhcnNlciBpbXBv
cnQgU2FmZUNvbmZpZ1BhcnNlcgorCiBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBjb21tb24KIGlt
cG9ydCBnbG9iCkBAIC0zNiwxNTAgKzM5LDMxIEBAIGRlZiBjb25maWd1cmVfbG9nZ2luZyh2ZXJi
b3NlKToKICAgICAgICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoJyUo
bWVzc2FnZSlzJykpCiAKIAotZGVmIGdldF9ndGtkb2NfbW9kdWxlX3BhdGhzKHhyZWZfZGVwX3Bh
Y2thZ2VzKToKLSAgICBkZXBzID0gW10KLSAgICBodG1sX2RpciA9IG9zLnBhdGguam9pbignc2hh
cmUnLCAnZ3RrLWRvYycsICdodG1sJykKLQotICAgIGZvciBwYWNrYWdlIGluIHhyZWZfZGVwX3Bh
Y2thZ2VzOgotICAgICAgICBwcmVmaXggPSBjb21tb24ucHJlZml4X29mX3BrZ19jb25maWdfZmls
ZShwYWNrYWdlKQotICAgICAgICBpZiBwcmVmaXggaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRp
bnVlCi0gICAgICAgIGZvciBtb2R1bGUgaW4geHJlZl9kZXBfcGFja2FnZXNbcGFja2FnZV06Ci0g
ICAgICAgICAgICBkZXBzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCBodG1sX2RpciwgbW9k
dWxlKSkKLQotICAgIHJldHVybiBkZXBzCi0KLQotZGVmIGdldF9jb21tb25feHJlZl9kZXBzKCk6
Ci0gICAgcmV0dXJuIHsKK2RlZiBnZXRfZ3RrZG9jX21vZHVsZV9wYXRocyhndGtfdmVyc2lvbik6
CisgICAgZGVwZW5kZW50X3BhY2thZ2VzID0gewogICAgICAgICAnZ2xpYi0yLjAnIDogWydnbGli
JywgJ2dvYmplY3QnLCAnZ2lvJ10sCiAgICAgICAgICdsaWJzb3VwLTIuNCcgOiBbJ2xpYnNvdXAt
Mi40J10sCiAgICAgICAgICdnZGstcGl4YnVmLTIuMCc6IFsnZ2RrLXBpeGJ1ZiddCiAgICAgfQot
Ci1kZWYgd2Via2l0ZG9tX2RvY3NfaHRtbF9wYXRoKCk6Ci0gICAgcmV0dXJuIGNvbW1vbi5idWls
ZF9wYXRoKCdEb2N1bWVudGF0aW9uJywgJ3dlYmtpdGRvbWd0aycsICdodG1sJykKLQotZGVmIGdl
dF93ZWJraXQyX29wdGlvbnModmlydHVhbF9yb290KToKLSAgICBhcGlfcGF0aCA9IGNvbW1vbi50
b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ1dlYktpdDInLCAnVUlQcm9jZXNzJywgJ0FQSScsICdn
dGsnKQotICAgIGluamVjdGVkX2J1bmRsZV9hcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0
aCgnU291cmNlJywgJ1dlYktpdDInLCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdB
UEknLCAnZ3RrJykKLQotICAgIGlmIGNvbW1vbi5pc19jbWFrZV9idWlsZCgpOgotICAgICAgICBn
ZW5lcmF0ZWRfYXBpX3BhdGggPSBjb21tb24uYnVpbGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnLCAn
d2Via2l0Mmd0aycsICd3ZWJraXQyJykKLSAgICBlbHNlOgotICAgICAgICBnZW5lcmF0ZWRfYXBp
X3BhdGggPSBjb21tb24uYnVpbGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnLCAnV2ViS2l0MicsICd3
ZWJraXQyZ3RrJywgJ3dlYmtpdDInKQotCi0gICAgeHJlZl9kZXBzID0gZ2V0X2NvbW1vbl94cmVm
X2RlcHMoKS5jb3B5KCkKLSAgICB4cmVmX2RlcHMudXBkYXRlKHsKLSAgICAgICAgJ2d0aystMy4w
JyA6IFsnZ3RrMycsICdnZGszJ10KLSAgICB9KQotCi0gICAgZGVmIHNyY19wYXRoKCphcmdzKToK
LSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihhcGlfcGF0aCwgKmFyZ3MpCi0KLSAgICBvcHRp
b25zID0gewotICAgICAgICAnZGVjb3JhdG9yJzogJ1dFQktJVF9BUEl8V0VCS0lUX0RFUFJFQ0FU
RUR8V0VCS0lUX0RFUFJFQ0FURURfRk9SXCguK1wpJywKLSAgICAgICAgJ2RlcHJlY2F0aW9uX2d1
YXJkJzogJ1dFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQnLAotICAgICAgICAnbGlicmFyeV9wYXRo
JyA6IGNvbW1vbi5saWJyYXJ5X2J1aWxkX3BhdGgoKSwKLSAgICAgICAgJ3ZpcnR1YWxfcm9vdCcg
OiB2aXJ0dWFsX3Jvb3QsCi0gICAgICAgICdtb2R1bGVfbmFtZScgOiAnd2Via2l0Mmd0aycsCi0g
ICAgICAgICduYW1lc3BhY2UnIDogJ3dlYmtpdCcsCi0gICAgICAgICdkb2NfZGlyJyA6IHNyY19w
YXRoKCdkb2NzJyksCi0gICAgICAgICdvdXRwdXRfZGlyJyA6IGNvbW1vbi5idWlsZF9wYXRoKCdE
b2N1bWVudGF0aW9uJywgJ3dlYmtpdDJndGsnKSwKLSAgICAgICAgJ3NvdXJjZV9kaXJzJyA6IFtz
cmNfcGF0aCgpLCBnZW5lcmF0ZWRfYXBpX3BhdGgsIGluamVjdGVkX2J1bmRsZV9hcGlfcGF0aF0s
Ci0gICAgICAgICdjZmxhZ3MnIDoKLSAgICAgICAgICAgICMgQ29tbW9uIHBhdGhzCi0gICAgICAg
ICAgICAnIC1JJyArIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCi0gICAgICAg
ICAgICAnIC1JJyArIGFwaV9wYXRoICsgXAotICAgICAgICAgICAgIyBBdXRvdG9vbHMgcGF0aHMK
LSAgICAgICAgICAgICcgLUknICsgY29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywg
J3dlYmtpdDJndGsnLCAnaW5jbHVkZScpICsgXAotICAgICAgICAgICAgJyAtSScgKyBjb21tb24u
YnVpbGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnLCAnV2ViS2l0MicsICd3ZWJraXQyZ3RrJykgKyBc
Ci0gICAgICAgICAgICAjIENNYWtlIHBhdGhzCi0gICAgICAgICAgICAnIC1JJyArIGNvbW1vbi5i
dWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICdGb3J3YXJkaW5nSGVhZGVycycsICd3ZWJraXQy
Z3RrJykgKyBcCi0gICAgICAgICAgICAnIC1JJyArIGNvbW1vbi5idWlsZF9wYXRoKCdEZXJpdmVk
U291cmNlcycsICd3ZWJraXQyZ3RrJyksCi0gICAgICAgICdjcm9zc19yZWZlcmVuY2VfZGVwcycg
OiBnZXRfZ3RrZG9jX21vZHVsZV9wYXRocyh4cmVmX2RlcHMpICsgW3dlYmtpdGRvbV9kb2NzX2h0
bWxfcGF0aCgpXSwKLSAgICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9iLmdsb2Ioc3JjX3BhdGgo
JypQcml2YXRlLmgnKSkgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKG9z
LnBhdGguam9pbihpbmplY3RlZF9idW5kbGVfYXBpX3BhdGgsICcqUHJpdmF0ZS5oJykpICsgXAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihzcmNfcGF0aCgnKkNsaWVudConKSkg
KyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCdXZWJLaXRB
dXRoZW50aWNhdGlvbkRpYWxvZy4qJykpICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGds
b2IuZ2xvYihzcmNfcGF0aCgnV2ViS2l0QmF0dGVyeVByb3ZpZGVyLionKSkgKyBcCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCdXZWJLaXRHZW9sb2NhdGlvblBy
b3ZpZGVyLionKSkgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19w
YXRoKCdXZWJLaXRUZXh0Q2hlY2tlci4qJykpICsgXAotICAgICAgICAgICAgICAgICAgICAgICAg
IGdsb2IuZ2xvYihzcmNfcGF0aCgnV2ViS2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlLionKSkgKyBc
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCdXZWJWaWV3QmFz
ZUlucHV0TWV0aG9kRmlsdGVyLionKSkgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
Yi5nbG9iKG9zLnBhdGguam9pbihnZW5lcmF0ZWRfYXBpX3BhdGgsICdXZWJLaXRNYXJzaGFsLion
KSkgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKG9zLnBhdGguam9pbihn
ZW5lcmF0ZWRfYXBpX3BhdGgsICdXZWJLaXRFbnVtVHlwZXMuKicpKSArIFwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJ3Rlc3RzLyouaCcpKQotICAgIH0KLSAg
ICByZXR1cm4gb3B0aW9ucwotCi1kZWYgZ2V0X3dlYmtpdDFfb3B0aW9ucyhndGtfdmVyc2lvbiwg
dmlydHVhbF9yb290KToKLSAgICBkZWYgc3JjX3BhdGgoKmFyZ3MpOgotICAgICAgICByZXR1cm4g
Y29tbW9uLnRvcF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0aycpICsgYXJn
cykpCi0KLSAgICBkZWYgd2Via2l0dmVyc2lvbmhfcGF0aCgpOgotICAgICAgICBpZiBjb21tb24u
aXNfY21ha2VfYnVpbGQoKToKLSAgICAgICAgICAgIHJldHVybiBjb21tb24uYnVpbGRfcGF0aCgn
RGVyaXZlZFNvdXJjZXMnLCAnd2Via2l0Z3RrJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHJldHVybiBjb21tb24uYnVpbGRfcGF0aCgnU291cmNlJywgJ1dlYktpdCcsICdndGsnLCAnd2Vi
a2l0JykKLQotICAgIHhyZWZfZGVwcyA9IGdldF9jb21tb25feHJlZl9kZXBzKCkuY29weSgpCiAg
ICAgaWYgZ3RrX3ZlcnNpb24gPT0gMzoKLSAgICAgICAgeHJlZl9kZXBzLnVwZGF0ZSh7Ci0gICAg
ICAgICAgICAgICAgJ2d0aystMy4wJyA6IFsnZ3RrMycsICdnZGszJ10KLSAgICAgICAgfSkKKyAg
ICAgICAgZGVwZW5kZW50X3BhY2thZ2VzLnVwZGF0ZSh7J2d0aystMy4wJyA6IFsnZ3RrMycsICdn
ZGszJ119KQogICAgIGVsc2U6Ci0gICAgICAgIHhyZWZfZGVwcy51cGRhdGUoewotICAgICAgICAg
ICAgICAgICdndGsrLTIuMCcgOiBbJ2d0aycsICdnZGsnXQotICAgICAgICB9KQorICAgICAgICBk
ZXBlbmRlbnRfcGFja2FnZXMudXBkYXRlKHsnZ3RrKy0yLjAnIDogWydndGsnLCAnZ2RrJ119KQog
Ci0gICAgb3B0aW9ucyA9IHsKLSAgICAgICAgJ2RlY29yYXRvcic6ICdXRUJLSVRfQVBJfFdFQktJ
VF9ERVBSRUNBVEVEfFdFQktJVF9ERVBSRUNBVEVEX0ZPUlwoLitcKScsCi0gICAgICAgICdkZXBy
ZWNhdGlvbl9ndWFyZCc6ICdXRUJLSVRfRElTQUJMRV9ERVBSRUNBVEVEJywKLSAgICAgICAgJ2xp
YnJhcnlfcGF0aCcgOiBjb21tb24ubGlicmFyeV9idWlsZF9wYXRoKCksCi0gICAgICAgICd2aXJ0
dWFsX3Jvb3QnIDogdmlydHVhbF9yb290LAotICAgICAgICAnbW9kdWxlX25hbWUnIDogJ3dlYmtp
dGd0aycsCi0gICAgICAgICduYW1lc3BhY2UnIDogJ3dlYmtpdCcsCi0gICAgICAgICdkb2NfZGly
JyA6IHNyY19wYXRoKCdkb2NzJyksCi0gICAgICAgICdvdXRwdXRfZGlyJyA6IGNvbW1vbi5idWls
ZF9wYXRoKCdEb2N1bWVudGF0aW9uJywgJ3dlYmtpdGd0aycpLAotICAgICAgICAnc291cmNlX2Rp
cnMnIDogW3NyY19wYXRoKCd3ZWJraXQnKSwgd2Via2l0dmVyc2lvbmhfcGF0aCgpXSwKLSAgICAg
ICAgJ2NmbGFncycgOiAnIC1JJyArIGNvbW1vbi5idWlsZF9wYXRoKCdXZWJLaXQnLCAnZ3RrJykg
KyBcCi0gICAgICAgICAgICAgICAgICAgJyAtSScgKyBjb21tb24uYnVpbGRfcGF0aCgnRGVyaXZl
ZFNvdXJjZXMnKSArIFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIHNyY19wYXRoKCkgKyBc
Ci0gICAgICAgICAgICAgICAgICAgJyAtSScgKyBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJj
ZScpICsgXAotICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9uLnRvcF9sZXZlbF9wYXRo
KCdTb3VyY2UnLCAnSmF2YVNjcmlwdENvcmUnLCAnRm9yd2FyZGluZ0hlYWRlcnMnKSwKLSAgICAg
ICAgJ2Nyb3NzX3JlZmVyZW5jZV9kZXBzJyA6IGdldF9ndGtkb2NfbW9kdWxlX3BhdGhzKHhyZWZf
ZGVwcykgKyBbd2Via2l0ZG9tX2RvY3NfaHRtbF9wYXRoKCldLAotICAgICAgICAnaWdub3JlZF9m
aWxlcyc6IGdsb2IuZ2xvYihzcmNfcGF0aCgnd2Via2l0JywgJypwcml2YXRlLionKSkgKyBcCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCd3ZWJraXQnLCAnd2Vi
a2l0YXV0aGVudGljYXRpb25kaWFsb2cuKicpKSArIFwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBnbG9iLmdsb2Ioc3JjX3BhdGgoJ3dlYmtpdCcsICd3ZWJraXRzcGVsbGNoZWNrZXJlbmNoYW50
LionKSkKLSAgICB9Ci0gICAgcmV0dXJuIG9wdGlvbnMKLQotZGVmIGdldF93ZWJraXRkb21fb3B0
aW9ucyh2aXJ0dWFsX3Jvb3QpOgotICAgIGRlZiBkZXJpdmVkX3NvdXJjZXNfcGF0aCgqYXJncyk6
Ci0gICAgICAgIHJldHVybiBjb21tb24uYnVpbGRfcGF0aCgqKCgnRGVyaXZlZFNvdXJjZXMnLCAn
d2Via2l0ZG9tJykgKyBhcmdzKSkKLSAgICBkZWYgc3JjX3BhdGgoKmFyZ3MpOgotICAgICAgICBy
ZXR1cm4gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAnV2ViQ29yZScsICdiaW5k
aW5ncycsICdnb2JqZWN0JykgKyBhcmdzKSkKKyAgICBwYXRocyA9IFtdCisgICAgaHRtbF9kaXIg
PSBvcy5wYXRoLmpvaW4oJ3NoYXJlJywgJ2d0ay1kb2MnLCAnaHRtbCcpCisgICAgZm9yIHBhY2th
Z2UsIG1vZHVsZXMgaW4gZGVwZW5kZW50X3BhY2thZ2VzLml0ZXJpdGVtcygpOgorICAgICAgICBw
cmVmaXggPSBjb21tb24ucHJlZml4X29mX3BrZ19jb25maWdfZmlsZShwYWNrYWdlKQorICAgICAg
ICBpZiBwcmVmaXggaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGZvciBt
b2R1bGUgaW4gbW9kdWxlczoKKyAgICAgICAgICAgIHBhdGhzLmFwcGVuZChvcy5wYXRoLmpvaW4o
cHJlZml4LCBodG1sX2RpciwgbW9kdWxlKSkKIAotICAgIHhyZWZfZGVwcyA9IHsgJ2dsaWItMi4w
JyA6IFsnZ2xpYicsICdnb2JqZWN0JywgJ2dpbyddIH0KKyAgICAjIFRoaXMgdGVjaG5pY2FsbHkg
aXMgbm90IG5lZWRlZCBmb3IgdGhlIEdPYmplY3QgRE9NIGJpbmRpbmdzIGRvY3VtZW50YXRpb24g
aXRzZWxmLAorICAgICMgYnV0IGFkZGluZyBpdCBkb2Vzbid0IGh1cnQgYW5kIGFsbG93cyB1cyB0
byBhdm9pZCBhIGNoZWNrIGhlcmUuCisgICAgcGF0aHMuYXBwZW5kKGNvbW1vbi5idWlsZF9wYXRo
KCdEb2N1bWVudGF0aW9uJywgJ3dlYmtpdGRvbWd0aycsICdodG1sJykpCisgICAgcmV0dXJuIHBh
dGhzCiAKLSAgICBvcHRpb25zID0gewotICAgICAgICAnZGVjb3JhdG9yJzogJ1dFQktJVF9BUEl8
V0VCS0lUX0RFUFJFQ0FURUR8V0VCS0lUX0RFUFJFQ0FURURfRk9SXCguK1wpJywKLSAgICAgICAg
J2RlcHJlY2F0aW9uX2d1YXJkJzogJ1dFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQnLAotICAgICAg
ICAnbGlicmFyeV9wYXRoJyA6IGNvbW1vbi5saWJyYXJ5X2J1aWxkX3BhdGgoKSwKLSAgICAgICAg
J3ZpcnR1YWxfcm9vdCcgOiB2aXJ0dWFsX3Jvb3QsCi0gICAgICAgICdtb2R1bGVfbmFtZScgOiAn
d2Via2l0ZG9tZ3RrJywKLSAgICAgICAgJ25hbWVzcGFjZScgOiAnd2Via2l0X2RvbScsCi0gICAg
ICAgICdkb2NfZGlyJyA6IGRlcml2ZWRfc291cmNlc19wYXRoKCdkb2NzJyksCi0gICAgICAgICdv
dXRwdXRfZGlyJyA6IGNvbW1vbi5idWlsZF9wYXRoKCdEb2N1bWVudGF0aW9uJywgJ3dlYmtpdGRv
bWd0aycpLAotICAgICAgICAnc291cmNlX2RpcnMnIDogW2Rlcml2ZWRfc291cmNlc19wYXRoKCld
LAotICAgICAgICAnY2ZsYWdzJyA6ICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3BhdGgoKSArIFwK
LSAgICAgICAgICAgICAgICAgICAnIC1JJyArIHNyY19wYXRoKCkgKyBcCi0gICAgICAgICAgICAg
ICAgICAgJyAtSScgKyBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpLAotICAgICAgICAn
Y3Jvc3NfcmVmZXJlbmNlX2RlcHMnIDogZ2V0X2d0a2RvY19tb2R1bGVfcGF0aHMoeHJlZl9kZXBz
KSwKLSAgICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9iLmdsb2IoZGVyaXZlZF9zb3VyY2VzX3Bh
dGgoJypQcml2YXRlLmgnKSkKLSAgICB9Ci0gICAgcmV0dXJuIG9wdGlvbnMKIAogZGVmIHByaW50
X21pc3NpbmdfYXBpKGdlbmVyYXRvcik6CiAgICAgbWlzc2luZ19hcGkgPSBnZW5lcmF0b3IuYXBp
X21pc3NpbmdfZG9jdW1lbnRhdGlvbigpCkBAIC0xODcsMTQgKzcxLDg0IEBAIGRlZiBwcmludF9t
aXNzaW5nX2FwaShnZW5lcmF0b3IpOgogICAgICAgICByZXR1cm4KICAgICBwcmludCgiXG5UaGUg
Zm9sbG93aW5nIEFQSSBhcmUgbWlzc2luZyBkb2N1bWVudGF0aW9uOiIpCiAgICAgZm9yIGFwaSBp
biBtaXNzaW5nX2FwaToKLSAgICAgICAgcHJpbnQoIlx0JXMiICUgYXBpKQorICAgICAgICBwcmlu
dCgiXHR7MH0iLmZvcm1hdChhcGkpKQorCitkZWYgZmlsZXNfdG9faWdub3JlKHNvdXJjZV9kaXJz
LCBoZWFkZXJzX3dpdGhfZ3RrZG9jKToKKyAgICAiIiIKKyAgICBGaW5kIGZpbGVzIHRvIGlnbm9y
ZSBkdXJpbmcgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uLiBXZSBhc3N1bWUgdGhhdCBpZiBhbgor
ICAgIGltcGxlbWVudGF0aW9uIGZpbGUgZXhpc3RzIGZvciBhIGhlYWRlciB3aXRoIGd0a2RvYyAo
c2F5IHdlYmtpdGZvby5jcHAgZm9yCisgICAgd2Via2l0Zm9vLmgpIHdlIHNob3VsZG4ndCBpZ25v
cmUgdGhhdCBmaWxlLiBDdXJyZW50bHkgdGhpcyBob2xkcyB0cnVlIGZvciBhbGwKKyAgICBvZiB0
aGUgV2ViS2l0IHByb2plY3QuCisgICAgIiIiCisgICAgaW1wbGVtZW50YXRpb25fZmlsZXMgPSBs
aXN0KGhlYWRlcnNfd2l0aF9ndGtkb2MpCisgICAgZm9yIGhlYWRlciBpbiBoZWFkZXJzX3dpdGhf
Z3RrZG9jOgorICAgICAgICBkZWYgYWRkX2ZpbGVfaWZfZXhpc3RzKGZpbGUpOgorICAgICAgICAg
ICAgaWYgb3MucGF0aC5leGlzdHMoZmlsZSkgYW5kIG9zLnBhdGguaXNmaWxlKGZpbGUpOgorICAg
ICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uX2ZpbGVzLmFwcGVuZChvcy5wYXRoLmFic3BhdGgo
ZmlsZSkpCisgICAgICAgIGFkZF9maWxlX2lmX2V4aXN0cyhvcy5wYXRoLnNwbGl0ZXh0KGhlYWRl
cilbMF0gKyAiLmNwcCIpCisgICAgICAgIGFkZF9maWxlX2lmX2V4aXN0cyhvcy5wYXRoLnNwbGl0
ZXh0KGhlYWRlcilbMF0gKyAiLmMiKQorCisKKyAgICBkZWYgZmlsZV9zaG91bGRfYmVfaWdub3Jl
ZChmaWxlKToKKyAgICAgICAgZmlsZSA9IG9zLnBhdGguYWJzcGF0aChmaWxlKQorICAgICAgICBp
ZiBub3Qgb3MucGF0aC5zcGxpdGV4dChmaWxlKVsxXSBpbiBbJy5oJywgJy5jJywgJy5jcHAnLCAn
LmNjJ106CisgICAgICAgICAgICByZXR1cm4gRmFsc2UgIyBUaGVzZSBmaWxlcyBhcmUgaWdub3Jl
ZCBhbnl3YXkuCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShmaWxlKToKKyAgICAgICAg
ICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBmaWxlIGluIGltcGxlbWVudGF0aW9uX2ZpbGVz
OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBh
bGxfZmlsZXMgPSBzdW0oW1tvcy5wYXRoLmpvaW4oZGlyLCBmaWxlKSBmb3IgZmlsZSBpbiBvcy5s
aXN0ZGlyKGRpcildIGZvciBkaXIgaW4gc291cmNlX2RpcnNdLCBbXSkKKyAgICByZXR1cm4gZmls
dGVyKGZpbGVfc2hvdWxkX2JlX2lnbm9yZWQsIGFsbF9maWxlcykKKworZGVmIGdldF9nZW5lcmF0
b3JfZm9yX2NvbmZpZyhjb25maWdfZmlsZSwgdmlydHVhbF9yb290KToKKyAgICBjb25maWcgPSBT
YWZlQ29uZmlnUGFyc2VyKCkKKyAgICBjb25maWcucmVhZChjb25maWdfZmlsZSkKKyAgICBtb2R1
bGVfbmFtZSA9IGNvbmZpZy5zZWN0aW9ucygpWzBdCisgICAgcGtnY29uZmlnX2ZpbGUgPSBjb25m
aWcuZ2V0KG1vZHVsZV9uYW1lLCAncGtnY29uZmlnX2ZpbGUnKQorICAgIGd0a192ZXJzaW9uID0g
Y29tbW9uLmd0a192ZXJzaW9uX29mX3BrZ19jb25maWdfZmlsZShwa2djb25maWdfZmlsZSkKKwor
ICAgIHNvdXJjZV9kaXJzID0gY29uZmlnLmdldChtb2R1bGVfbmFtZSwgJ3NvdXJjZV9kaXJzJyku
cmVwbGFjZSgnOycsICcgJykuc3BsaXQoKQorICAgIGhlYWRlcnMgPSBbb3MucGF0aC5hYnNwYXRo
KGYpIGZvciBmIGluIGNvbmZpZy5nZXQobW9kdWxlX25hbWUsICdoZWFkZXJzJykucmVwbGFjZSgn
OycsICcgJykuc3BsaXQoKV0KKyAgICByZXR1cm4gZ3RrZG9jLlBrZ0NvbmZpZ0dUS0RvYyhwa2dj
b25maWdfZmlsZSwgeworICAgICAgICAnZGVjb3JhdG9yJzogJ1dFQktJVF9BUEl8V0VCS0lUX0RF
UFJFQ0FURUR8V0VCS0lUX0RFUFJFQ0FURURfRk9SXCguK1wpJywKKyAgICAgICAgJ2RlcHJlY2F0
aW9uX2d1YXJkJzogJ1dFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQnLAorICAgICAgICAnbGlicmFy
eV9wYXRoJzogY29tbW9uLmxpYnJhcnlfYnVpbGRfcGF0aCgpLAorICAgICAgICAndmlydHVhbF9y
b290JzogdmlydHVhbF9yb290LAorICAgICAgICAnbW9kdWxlX25hbWUnOiBtb2R1bGVfbmFtZSwK
KyAgICAgICAgJ25hbWVzcGFjZSc6IGNvbmZpZy5nZXQobW9kdWxlX25hbWUsICduYW1lc3BhY2Un
KSwKKyAgICAgICAgJ2RvY19kaXInOiBjb25maWcuZ2V0KG1vZHVsZV9uYW1lLCAnZG9jX2Rpcicp
LAorICAgICAgICAnb3V0cHV0X2Rpcic6IGNvbW1vbi5idWlsZF9wYXRoKCdEb2N1bWVudGF0aW9u
JywgbW9kdWxlX25hbWUpLAorICAgICAgICAnc291cmNlX2RpcnMnOiBzb3VyY2VfZGlycywKKyAg
ICAgICAgJ2hlYWRlcnMnOiBoZWFkZXJzLAorICAgICAgICAnY2ZsYWdzJzogIiAiLmpvaW4oY29u
ZmlnLmdldChtb2R1bGVfbmFtZSwgJ2NmbGFncycpLnNwbGl0KCkpLAorICAgICAgICAnY3Jvc3Nf
cmVmZXJlbmNlX2RlcHMnOiBnZXRfZ3RrZG9jX21vZHVsZV9wYXRocyhndGtfdmVyc2lvbiksCisg
ICAgICAgICdpZ25vcmVkX2ZpbGVzJzogZmlsZXNfdG9faWdub3JlKHNvdXJjZV9kaXJzLCBoZWFk
ZXJzKSwKKyAgICB9KQogCiBkZWYgZ2VuZXJhdGVfZG9jKGdlbmVyYXRvciwgc2tpcF9odG1sKToK
KyAgICBwcmludCgiXG5HZW5lcmF0aW5nIHswfSBkb2N1bWVudGF0aW9uLi4uIi5mb3JtYXQoZ2Vu
ZXJhdG9yLm1vZHVsZV9uYW1lKSkKICAgICBnZW5lcmF0b3IuZ2VuZXJhdGUobm90IHNraXBfaHRt
bCkKICAgICBpZiBnZW5lcmF0b3Iuc2F3X3dhcm5pbmdzOgogICAgICAgICBwcmludF9taXNzaW5n
X2FwaShnZW5lcmF0b3IpCiAgICAgcmV0dXJuIGdlbmVyYXRvci5zYXdfd2FybmluZ3MKIAorZGVm
IHJlYmFzZV9kb2MoZ2VuZXJhdG9yKToKKyAgICBwcmludCgiXG5SZWJhc2luZyB7MH0gZG9jdW1l
bnRhdGlvbi4uLiIuZm9ybWF0KGdlbmVyYXRvci5tb2R1bGVfbmFtZSkpCisgICAgdHJ5OgorICAg
ICAgICBnZW5lcmF0b3IucmViYXNlX2luc3RhbGxlZF9kb2NzKCkKKyAgICBleGNlcHQgRXhjZXB0
aW9uOgorICAgICAgICBwcmludCgiUmViYXNlIGRpZCBub3QgaGFwcGVuLCBsaWtlbHkgbm8gZG9j
dW1lbnRhdGlvbiBpcyBwcmVzZW50LiIpCisKK2RlZiBnZW5lcmF0ZV9kb2N1bWVudGF0aW9uX2Zv
cl9jb25maWcoY29uZmlnX2ZpbGUpOgorICAgIGdlbmVyYXRvciA9IGdldF9nZW5lcmF0b3JfZm9y
X2NvbmZpZyhjb25maWdfZmlsZSwgYXJndW1lbnRzLnZpcnR1YWxfcm9vdCkKKyAgICBpZiBub3Qg
YXJndW1lbnRzLnJlYmFzZToKKyAgICAgICAgZ2VuZXJhdGVfZG9jKGdlbmVyYXRvciwgYXJndW1l
bnRzLnNraXBfaHRtbCkKKyAgICBlbHNlOgorICAgICAgICByZWJhc2VfZG9jKGdlbmVyYXRvcikK
KyAgICByZXR1cm4gZ2VuZXJhdG9yLnNhd193YXJuaW5ncworCiBpZiBfX25hbWVfXyA9PSAiX19t
YWluX18iOgogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9u
PSdHZW5lcmF0ZSBndGtkb2MgZm9yIFdlYktpdC4nKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Jy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCkBAIC0yMzAsNTkgKzE4NCwx
MCBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGlmIG9zLmVudmlyb24uZ2V0KCdD
QycpID09ICJjbGFuZyI6CiAgICAgICAgIG9zLmVudmlyb25bJ0NGTEFHUyddICs9ICcgLVF1bnVz
ZWQtYXJndW1lbnRzJwogCi0gICAgc2F3X3dlYmtpdDFfd2FybmluZ3MgPSBzYXdfd2Via2l0Ml93
YXJuaW5ncyA9IEZhbHNlCi0gICAgd2syX3BrZ19jb25maWdfcGF0aCA9IGNvbW1vbi5idWlsZF9w
YXRoKCdTb3VyY2UnLCAnV2ViS2l0MicsICd3ZWJraXQyZ3RrLTMuMC5wYycpCi0gICAgd2sxX3Br
Z19jb25maWdfcGF0aCA9IGNvbW1vbi5idWlsZF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0
aycsICd3ZWJraXRndGstMy4wLnBjJykKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMod2sxX3Br
Z19jb25maWdfcGF0aCk6Ci0gICAgICAgIHdrMV9wa2dfY29uZmlnX3BhdGggPSBjb21tb24uYnVp
bGRfcGF0aCgnU291cmNlJywgJ1dlYktpdCcsICdndGsnLCAnd2Via2l0LTEuMC5wYycpCi0KLSAg
ICBpZiBvcy5wYXRoLmV4aXN0cyh3azJfcGtnX2NvbmZpZ19wYXRoKToKLSAgICAgICAgcGtnX2Nv
bmZpZ19wYXRoID0gd2syX3BrZ19jb25maWdfcGF0aAotICAgIGVsaWYgb3MucGF0aC5leGlzdHMo
d2sxX3BrZ19jb25maWdfcGF0aCk6Ci0gICAgICAgIHBrZ19jb25maWdfcGF0aCA9IHdrMV9wa2df
Y29uZmlnX3BhdGgKLQotICAgIHdlYmtpdGRvbV9kb2NzX3BhdGggPSBjb21tb24uYnVpbGRfcGF0
aCgnRGVyaXZlZFNvdXJjZXMnLCAnd2Via2l0ZG9tJywgJ2RvY3MnKQorICAgIG9zLmNoZGlyKGNv
bW1vbi5idWlsZF9wYXRoKCkpCisgICAgc2F3X3dlYmtpdDFfd2FybmluZ3MgPSBnZW5lcmF0ZV9k
b2N1bWVudGF0aW9uX2Zvcl9jb25maWcoY29tbW9uLmJ1aWxkX3BhdGgoJ2d0a2RvYy13ZWJraXRn
dGsuY2ZnJykpCisgICAgc2F3X3dlYmtpdDJfd2FybmluZ3MgPSBnZW5lcmF0ZV9kb2N1bWVudGF0
aW9uX2Zvcl9jb25maWcoY29tbW9uLmJ1aWxkX3BhdGgoJ2d0a2RvYy13ZWJraXQyZ3RrLmNmZycp
KQogICAgIGlmIG5vdCBjb21tb24uaXNfY21ha2VfYnVpbGQoKToKLSAgICAgICAgZ2VuZXJhdG9y
ID0gZ3RrZG9jLlBrZ0NvbmZpZ0dUS0RvYyhwa2dfY29uZmlnX3BhdGgsIGdldF93ZWJraXRkb21f
b3B0aW9ucyhhcmd1bWVudHMudmlydHVhbF9yb290KSkKLSAgICAgICAgaWYgbm90IGFyZ3VtZW50
cy5yZWJhc2U6Ci0gICAgICAgICAgICBwcmludCgiXG5HZW5lcmF0aW5nIFdlYktpdERPTSBkb2N1
bWVudGF0aW9uLi4uIikKLSAgICAgICAgICAgIHNhd193ZWJraXRkb21fd2FybmluZ3MgPSBnZW5l
cmF0ZV9kb2MoZ2VuZXJhdG9yLCBhcmd1bWVudHMuc2tpcF9odG1sKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgcHJpbnQoIlxuUmViYXNpbmcgV2ViS2l0RE9NIGRvY3VtZW50YXRpb24uLi4i
KQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5yZWJhc2VfaW5z
dGFsbGVkX2RvY3MoKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAg
ICAgICBwcmludCgiUmViYXNlIGRpZCBub3QgaGFwcGVuLCBsaWtlbHkgbm8gZG9jdW1lbnRhdGlv
biBpcyBwcmVzZW50LiIpCi0KLSAgICBwa2dfY29uZmlnX3BhdGggPSB3azFfcGtnX2NvbmZpZ19w
YXRoCi0gICAgaWYgb3MucGF0aC5leGlzdHMocGtnX2NvbmZpZ19wYXRoKToKLSAgICAgICAgb3B0
aW9ucyA9IGdldF93ZWJraXQxX29wdGlvbnMoY29tbW9uLmd0a192ZXJzaW9uX29mX3BrZ19jb25m
aWdfZmlsZShwa2dfY29uZmlnX3BhdGgpLCBhcmd1bWVudHMudmlydHVhbF9yb290KQotICAgICAg
ICBnZW5lcmF0b3IgPSBndGtkb2MuUGtnQ29uZmlnR1RLRG9jKHBrZ19jb25maWdfcGF0aCwgb3B0
aW9ucykKLSAgICAgICAgaWYgbm90IGFyZ3VtZW50cy5yZWJhc2U6Ci0gICAgICAgICAgICBwcmlu
dCgiR2VuZXJhdGluZyBXZWJLaXQxIGRvY3VtZW50YXRpb24uLi4iKQotICAgICAgICAgICAgc2F3
X3dlYmtpdDFfd2FybmluZ3MgPSBnZW5lcmF0ZV9kb2MoZ2VuZXJhdG9yLCBhcmd1bWVudHMuc2tp
cF9odG1sKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoIlJlYmFzaW5nIFdlYktp
dDEgZG9jdW1lbnRhdGlvbi4uLiIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLnJlYmFzZV9pbnN0YWxsZWRfZG9jcygpCi0gICAgICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uOgotICAgICAgICAgICAgICAgIHByaW50KCJSZWJhc2UgZGlkIG5vdCBoYXBwZW4sIGxp
a2VseSBubyBkb2N1bWVudGF0aW9uIGlzIHByZXNlbnQuIikKKyAgICAgICAgZ2VuZXJhdGVfZG9j
dW1lbnRhdGlvbl9mb3JfY29uZmlnKGNvbW1vbi5idWlsZF9wYXRoKCdndGtkb2Mtd2Via2l0ZG9t
LmNmZycpKQogCi0gICAgIyBXZWJLaXQyIG1pZ2h0IG5vdCBiZSBlbmFibGVkLCBzbyBjaGVjayBm
b3IgdGhlIHBrZy1jb25maWcgZmlsZSBiZWZvcmUgYnVpbGRpbmcgZG9jdW1lbnRhdGlvbi4KLSAg
ICBwa2dfY29uZmlnX3BhdGggPSB3azJfcGtnX2NvbmZpZ19wYXRoCi0gICAgaWYgb3MucGF0aC5l
eGlzdHMocGtnX2NvbmZpZ19wYXRoKToKLSAgICAgICAgZ2VuZXJhdG9yID0gZ3RrZG9jLlBrZ0Nv
bmZpZ0dUS0RvYyhwa2dfY29uZmlnX3BhdGgsIGdldF93ZWJraXQyX29wdGlvbnMoYXJndW1lbnRz
LnZpcnR1YWxfcm9vdCkpCi0gICAgICAgIGlmIG5vdCBhcmd1bWVudHMucmViYXNlOgotICAgICAg
ICAgICAgcHJpbnQoIlxuR2VuZXJhdGluZyBXZWJLaXQyIGRvY3VtZW50YXRpb24uLi4iKQotICAg
ICAgICAgICAgc2F3X3dlYmtpdDJfd2FybmluZ3MgPSBnZW5lcmF0ZV9kb2MoZ2VuZXJhdG9yLCBh
cmd1bWVudHMuc2tpcF9odG1sKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoIlxu
UmViYXNpbmcgV2ViS2l0MiBkb2N1bWVudGF0aW9uLi4uIikKLSAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IucmViYXNlX2luc3RhbGxlZF9kb2NzKCkKLSAgICAgICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgcHJpbnQoIlJlYmFzZSBkaWQg
bm90IGhhcHBlbiwgbGlrZWx5IG5vIGRvY3VtZW50YXRpb24gaXMgcHJlc2VudC4iKQotCi0gICAg
IyBGb3IgQ01ha2Ugd2UgYXJlIHN0aWxsIGdlbmVyYXRpbmcgd2FybmluZ3MgYmVjYXVzZSB3ZSBs
YWNrIERPTSBiaW5kaW5ncyBkb2NzLAotICAgICMgc28gZG8gbm90IGNhdXNlIHRoZSBidWlsZCB0
byBmYWlsIGZvciBub3cuCi0gICAgaWYgbm90IGNvbW1vbi5pc19jbWFrZV9idWlsZCgpOgotICAg
ICAgICBzeXMuZXhpdChzYXdfd2Via2l0MV93YXJuaW5ncyBvciBzYXdfd2Via2l0Ml93YXJuaW5n
cykKKyAgICBzeXMuZXhpdChzYXdfd2Via2l0MV93YXJuaW5ncyBvciBzYXdfd2Via2l0Ml93YXJu
aW5ncykKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9ndGtkb2MucHkgYi9Ub29scy9ndGsvZ3RrZG9j
LnB5CmluZGV4IGQxZWQ5ZDQ0ODk4YzgwODlhMjU0MDY0Mzk3MTRjMzM3NDVkZGE2MzYuLjM5MGMy
Njg5NDZkOWEwOWY4ZGNiMjRhNDA2NjEzMzM5MGNiMTY4ZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2d0
ay9ndGtkb2MucHkKKysrIGIvVG9vbHMvZ3RrL2d0a2RvYy5weQpAQCAtMzgsMTEgKzM4LDE0IEBA
IGNsYXNzIEdUS0RvYyhvYmplY3QpOgogICAgIG1vZHVsZV9uYW1lICAgICAgICAtLSBUaGUgbmFt
ZSBvZiB0aGUgZG9jdW1lbnRhdGlvbiBtb2R1bGUuIEZvciBsaWJyYXJpZXMgdGhpcwogICAgICAg
ICAgICAgICAgICAgICAgICAgICBpcyB0eXBpY2FsbHkgdGhlIGxpYnJhcnkgbmFtZS4gUmVxdWly
ZWQgaWYgbm90IGxpYnJhcnkgcGF0aAogICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBnaXZl
bi4KLSAgICBzb3VyY2VfZGlycyAgICAgICAgLS0gQSBsaXN0IG9mIHBhdGhzIHRvIHRoZSBzb3Vy
Y2UgY29kZSB0byBiZSBzY2FubmVkLiBSZXF1aXJlZC4KKyAgICBzb3VyY2VfZGlycyAgICAgICAg
LS0gQSBsaXN0IG9mIHBhdGhzIHRvIGRpcmVjdG9yaWVzIG9mIHNvdXJjZSBjb2RlIHRvIGJlIHNj
YW5uZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkIGlmIHNvdXJjZV9maWxl
cyBpcyBub3Qgc3BlY2lmaWVkLgogICAgIGlnbm9yZWRfZmlsZXMgICAgICAtLSBBIGxpc3Qgb2Yg
ZmlsZW5hbWVzIHRvIGlnbm9yZSBpbiB0aGUgc291cmNlIGRpcmVjdG9yeS4gSXQgaXMKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb25seSBuZWNlc3NhcnkgdG8gcHJvdmlkZSB0aGUgYmFzZW5h
bWVzIG9mIHRoZXNlIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHkg
aXQgaXMgaW1wb3J0YW50IHRvIHByb3ZpZGUgYW4gdXBkYXRlZCBsaXN0IG9mCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlnbm9yZWQgZmlsZXMgdG8gcHJldmVudCB3YXJuaW5ncyBhYm91dCB1
bmRvY3VtZW50ZWQgc3ltYm9scy4KKyAgICBoZWFkZXJzICAgICAgICAgICAgLS0gQSBsaXN0IG9m
IHBhdGhzIHRvIGhlYWRlcnMgdG8gYmUgc2Nhbm5lZC4gUmVxdWlyZWQgaWYgc291cmNlX2RpcnMK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbm90IHNwZWNpZmllZC4KICAgICBuYW1lc3Bh
Y2UgICAgICAgICAgLS0gVGhlIGxpYnJhcnkgbmFtZXNwYWNlLgogICAgIGRlY29yYXRvciAgICAg
ICAgICAtLSBJZiBhIGRlY29yYXRvciBpcyB1c2VkIHRvIHVuaGlkZSBjZXJ0YWluIHN5bWJvbHMg
aW4gaGVhZGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIHRoaXMgcGFyYW1ldGVy
IGlzIHJlcXVpcmVkIGZvciBzdWNjZXNzZnVsIHNjYW5uaW5nLgpAQCAtODcsNiArOTAsNyBAQCBj
bGFzcyBHVEtEb2Mob2JqZWN0KToKICAgICAgICAgIyBQYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHNj
YW5uaW5nLgogICAgICAgICBzZWxmLm1vZHVsZV9uYW1lID0gJycKICAgICAgICAgc2VsZi5zb3Vy
Y2VfZGlycyA9IFtdCisgICAgICAgIHNlbGYuaGVhZGVycyA9IFtdCiAgICAgICAgIHNlbGYuaWdu
b3JlZF9maWxlcyA9IFtdCiAgICAgICAgIHNlbGYubmFtZXNwYWNlID0gJycKICAgICAgICAgc2Vs
Zi5kZWNvcmF0b3IgPSAnJwpAQCAtMTEyLDE4ICsxMTYsMTggQEAgY2xhc3MgR1RLRG9jKG9iamVj
dCk6CiAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZXIoYXJncy5pdGVtcygpKToKICAgICAg
ICAgICAgIHNldGF0dHIoc2VsZiwga2V5LCB2YWx1ZSkKIAotICAgICAgICBkZWYgcmFpc2VfZXJy
b3JfaWZfbm90X3NwZWNpZmllZChrZXkpOgotICAgICAgICAgICAgaWYgbm90IGdldGF0dHIoc2Vs
Ziwga2V5KToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVzIG5vdCBzcGVjaWZp
ZWQuJyAlIGtleSkKLQotICAgICAgICByYWlzZV9lcnJvcl9pZl9ub3Rfc3BlY2lmaWVkKCdvdXRw
dXRfZGlyJykKLSAgICAgICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnc291cmNlX2Rp
cnMnKQotICAgICAgICByYWlzZV9lcnJvcl9pZl9ub3Rfc3BlY2lmaWVkKCdtb2R1bGVfbmFtZScp
CisgICAgICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYsICdvdXRwdXRfZGlyJyk6CisgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ291dHB1dF9kaXIgbm90IHNwZWNpZmllZC4nKQorICAgICAgICBp
ZiBub3QgZ2V0YXR0cihzZWxmLCAnbW9kdWxlX25hbWUnKToKKyAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignbW9kdWxlX25hbWUgbm90IHNwZWNpZmllZC4nKQorICAgICAgICBpZiBub3QgZ2V0
YXR0cihzZWxmLCAnc291cmNlX2RpcnMnKSBhbmQgbm90IGdldGF0dHIoc2VsZiwgJ2hlYWRlcnMn
KToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTmVpdGhlciBzb3VyY2VfZGlycyBub3Ig
aGVhZGVycyBzcGVjaWZpZWQuJyAlIGtleSkKIAogICAgICAgICAjIE1ha2UgYWxsIHBhdGhzIGFi
c29sdXRlIGluIGNhc2Ugd2Ugd2VyZSBwYXNzZWQgcmVsYXRpdmUgcGF0aHMsIHNpbmNlCiAgICAg
ICAgICMgd2UgY2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHdoZW4gZXhlY3V0
aW5nIHN1YmNvbW1hbmRzLgogICAgICAgICBzZWxmLm91dHB1dF9kaXIgPSBvcy5wYXRoLmFic3Bh
dGgoc2VsZi5vdXRwdXRfZGlyKQogICAgICAgICBzZWxmLnNvdXJjZV9kaXJzID0gW29zLnBhdGgu
YWJzcGF0aCh4KSBmb3IgeCBpbiBzZWxmLnNvdXJjZV9kaXJzXQorICAgICAgICBzZWxmLmhlYWRl
cnMgPSBbb3MucGF0aC5hYnNwYXRoKHgpIGZvciB4IGluIHNlbGYuaGVhZGVyc10KICAgICAgICAg
aWYgc2VsZi5saWJyYXJ5X3BhdGg6CiAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfcGF0aCA9IG9z
LnBhdGguYWJzcGF0aChzZWxmLmxpYnJhcnlfcGF0aCkKIApAQCAtMjc0LDggKzI3OCw5IEBAIGNs
YXNzIEdUS0RvYyhvYmplY3QpOgogICAgICAgICAgICAgICAgICctLW1vZHVsZT0lcycgJSBzZWxm
Lm1vZHVsZV9uYW1lLAogICAgICAgICAgICAgICAgICctLXJlYnVpbGQtdHlwZXMnXQogCi0gICAg
ICAgICMgRWFjaCBzb3VyY2UgZGlyZWN0b3J5IHNob3VsZCBiZSBoYXZlIGl0cyBvd24gIi0tc291
cmNlLWRpcj0iIHByZWZpeC4KLSAgICAgICAgYXJncy5leHRlbmQoWyctLXNvdXJjZS1kaXI9JXMn
ICUgcGF0aCBmb3IgcGF0aCBpbiBzZWxmLnNvdXJjZV9kaXJzXSkKKyAgICAgICAgaWYgbm90IHNl
bGYuaGVhZGVyczoKKyAgICAgICAgICAgICMgRWFjaCBzb3VyY2UgZGlyZWN0b3J5IHNob3VsZCBi
ZSBoYXZlIGl0cyBvd24gIi0tc291cmNlLWRpcj0iIHByZWZpeC4KKyAgICAgICAgICAgIGFyZ3Mu
ZXh0ZW5kKFsnLS1zb3VyY2UtZGlyPSVzJyAlIHBhdGggZm9yIHBhdGggaW4gc2VsZi5zb3VyY2Vf
ZGlyc10pCiAKICAgICAgICAgaWYgc2VsZi5kZWNvcmF0b3I6CiAgICAgICAgICAgICBhcmdzLmFw
cGVuZCgnLS1pZ25vcmUtZGVjb3JhdG9ycz0lcycgJSBzZWxmLmRlY29yYXRvcikKQEAgLTI4NCwx
MiArMjg5LDE3IEBAIGNsYXNzIEdUS0RvYyhvYmplY3QpOgogICAgICAgICBpZiBzZWxmLm91dHB1
dF9kaXI6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1vdXRwdXQtZGlyPSVzJyAlIHNlbGYu
b3V0cHV0X2RpcikKIAotICAgICAgICAjIGd0a2RvYy1zY2FuIHdhbnRzIHRoZSBiYXNlbmFtZXMg
b2YgaWdub3JlZCBoZWFkZXJzLCBzbyBzdHJpcCB0aGUKLSAgICAgICAgIyBkaXJuYW1lLiBEaWZm
ZXJlbnQgZnJvbSAiLS1zb3VyY2UtZGlyIiwgdGhlIGhlYWRlcnMgc2hvdWxkIGJlCi0gICAgICAg
ICMgc3BlY2lmaWVkIGFzIG9uZSBsb25nIHN0cmluZy4KLSAgICAgICAgaWdub3JlZF9maWxlc19i
YXNlbmFtZXMgPSBzZWxmLl9pZ25vcmVkX2ZpbGVzX2Jhc2VuYW1lcygpCi0gICAgICAgIGlmIGln
bm9yZWRfZmlsZXNfYmFzZW5hbWVzOgotICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0taWdub3Jl
LWhlYWRlcnM9JXMnICUgaWdub3JlZF9maWxlc19iYXNlbmFtZXMpCisgICAgICAgICMgV2Ugb25s
eSBuZWVkIHRvIHBhc3MgdGhlIGxpc3Qgb2YgaWdub3JlZCBmaWxlcyBpZiB0aGUgd2UgYXJlIG5v
dCB1c2luZyBhbiBleHBsaWNpdCBsaXN0IG9mIGhlYWRlcnMuCisgICAgICAgIGlmIG5vdCBzZWxm
LmhlYWRlcnM6CisgICAgICAgICAgICAjIGd0a2RvYy1zY2FuIHdhbnRzIHRoZSBiYXNlbmFtZXMg
b2YgaWdub3JlZCBoZWFkZXJzLCBzbyBzdHJpcCB0aGUKKyAgICAgICAgICAgICMgZGlybmFtZS4g
RGlmZmVyZW50IGZyb20gIi0tc291cmNlLWRpciIsIHRoZSBoZWFkZXJzIHNob3VsZCBiZQorICAg
ICAgICAgICAgIyBzcGVjaWZpZWQgYXMgb25lIGxvbmcgc3RyaW5nLgorICAgICAgICAgICAgaWdu
b3JlZF9maWxlc19iYXNlbmFtZXMgPSBzZWxmLl9pZ25vcmVkX2ZpbGVzX2Jhc2VuYW1lcygpCisg
ICAgICAgICAgICBpZiBpZ25vcmVkX2ZpbGVzX2Jhc2VuYW1lczoKKyAgICAgICAgICAgICAgICBh
cmdzLmFwcGVuZCgnLS1pZ25vcmUtaGVhZGVycz0lcycgJSBpZ25vcmVkX2ZpbGVzX2Jhc2VuYW1l
cykKKworICAgICAgICBpZiBzZWxmLmhlYWRlcnM6CisgICAgICAgICAgICBhcmdzLmV4dGVuZChz
ZWxmLmhlYWRlcnMpCiAKICAgICAgICAgc2VsZi5fcnVuX2NvbW1hbmQoYXJncykKIApkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGYzMGU0ZjlmOTgwMDkzZWRjNDFlMjUz
YjkwMjMyODYxZWVkNzg3N2QuLjY5ZTMxY2I0OTgzZDA2MWIyYWNjMWFmY2ZkY2RiMTM3N2IwMWQx
YzMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNC0wMi0xNyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0dUS10gZ2VuZXJhdGUtZ3RrZG9jIHNob3VsZCBub3QgZ2VuZXJhdGUgZG9jdW1l
bnRhdGlvbiBmb3Igc291cmNlIGZpbGVzIGZvciB1bmJ1aWx0IHNvdXJjZSBmaWxlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NDE3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZTogRGVmaW5lIHRoZSBwYXRocyB0byB0aGUgcGtnY29uZmlnIGZpbGVz
IGhlcmUsIHNvIHRoYXQgdGhleQorICAgICAgICBtYXkgb25lIGRheSBiZSB1c2VkIGluIHRoZSB3
ZWJraXRkb20gY29uZmlnIGZpbGUgZ2VuZXJhdGlvbi4KKwogMjAxNC0wMi0wNyAgTWFydGluIFJv
Ymluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gW0NNYWtlXSBK
YXZhU2NyaXB0Q29yZSBjcmFzaGVzIGluIEpTQzo6ZXZhbApkaWZmIC0tZ2l0IGEvR05VbWFrZWZp
bGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCAwOGM5MTE1NDI2MDUwMGRlM2ZmMDRiMDIwY2Uw
ZDYwZjk4ZThjZmU4Li5hYWYyNzk3NmFkZDRjZTQ3ZTZhMDdlYTVjMWRhNDlmYWM2ZTlhMWU5IDEw
MDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtMTMzLDYg
KzEzMywxNSBAQCBnaXJkaXIgOj0gJChkYXRhZGlyKS9naXItMS4wCiB0eXBlbGlic2RpciA6PSAk
KGxpYmRpcikvZ2lyZXBvc2l0b3J5LTEuMAogZW5kaWYKIAord2Via2l0MV9wa2dfY29uZmlnX2Zp
bGUgPSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVS
U0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAucGMKK3dlYmtpdDJfcGtnX2NvbmZp
Z19maWxlID0gU291cmNlL1dlYktpdDIvd2Via2l0Mmd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9W
RVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5wYworCitpZiBFTkFCTEVfV0VC
S0lUMgord2Via2l0ZG9tX3BrZ2NvbmZpZ19maWxlID0gJCh3ZWJraXQyX3BrZ19jb25maWdfZmls
ZSkKK2Vsc2UKK3dlYmtpdGRvbV9wa2djb25maWdfZmlsZSA9ICQod2Via2l0MV9wa2dfY29uZmln
X2ZpbGUpCitlbmRpZgorCiAjIFdlIGRvIG5vdCBjYXJlIGF0IGFsbCBhYm91dCB0aGlzIGltcGxp
Y2l0IGJ1aWx0LWluIG1ha2UgcnVsZXMsCiAjIGRpc2FibGUgdGhlbSB0byBzYXZlIHNvbWUgYnVp
bGQgdGltZQogJTogJS5jCkBAIC0yOTEsNCArMzAwLDQgQEAgZW5kaWYKIAlAbWtkaXIgLXAgJChk
aXN0ZGlyKS9Eb2N1bWVudGF0aW9uL3dlYmtpdGRvbWd0ay9odG1sCiAJQG1rZGlyIC1wICQoZGlz
dGRpcikvRG9jdW1lbnRhdGlvbi93ZWJraXRkb21ndGsvdG1wbAogCUAtY3AgLi9Eb2N1bWVudGF0
aW9uL3dlYmtpdGRvbWd0ay90bXBsLyouc2dtbCAkKGRpc3RkaXIpL0RvY3VtZW50YXRpb24vd2Vi
a2l0ZG9tZ3RrL3RtcGwKLQlAY3AgLi9Eb2N1bWVudGF0aW9uL3dlYmtpdGRvbWd0ay9odG1sLyog
JChkaXN0ZGlyKS9Eb2N1bWVudGF0aW9uL3dlYmtpdGRvbWd0ay9odG1sClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQorCUBjcCAuL0RvY3VtZW50YXRpb24vd2Via2l0ZG9tZ3RrL2h0bWwvKiAk
KGRpc3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0ZG9tZ3RrL2h0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224801</attachid>
            <date>2014-02-20 15:08:18 -0800</date>
            <delta_ts>2014-02-25 11:34:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128417-20140220150816.patch</filename>
            <type>text/plain</type>
            <size>39553</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQ3MzcyYTUxNzM5MjQy
MjI0YzQ3YzhiYWEwYjk3MzYxNGJiNWE5Ny4uMTVhODYyMjE2NzgxMDQxOTQ0NTI1MDYxZTdiNTA3
NzMxMTk1MDYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE0LTAyLTIwICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBnZW5l
cmF0ZS1ndGtkb2Mgc2hvdWxkIG5vdCBnZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZvciBzb3VyY2Ug
ZmlsZXMgZm9yIHVuYnVpbHQgc291cmNlIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg0MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW06
IEdlbmVyYXRlIGEgY29uZmlnIGZpbGUgZm9yIHdlYmtpdGRvbSBkb2N1bWVudGF0aW9uIGdlbmVy
YXRpb24uCisKIDIwMTQtMDItMjAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNjQ0MjIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDMxZTlmNjc1MzQzYjAxODFmYTQ3NDkyOWI1NjFlMjZjOWZhMDliZmQuLjZkZjUyNGExOGJi
N2ViYWRmZjMyZWEwNTc4YTljNmE5YzBhMTAwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTQtMDItMjAgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdIGdlbmVyYXRlLWd0a2RvYyBzaG91bGQgbm90IGdlbmVyYXRlIGRvY3VtZW50
YXRpb24gZm9yIHNvdXJjZSBmaWxlcyBmb3IgdW5idWlsdCBzb3VyY2UgZmlsZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODQxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21h
a2U6IENvcnJlY3QgdGhlIGRlZmluaXRpb24gb2YgV2ViS2l0R1RLX0VOVU1fR0VORVJBVElPTl9I
RUFERVJTIGFuZCBnZW5lcmF0ZQorICAgICAgICBhIGd0a2RvYy13ZWJraXRndGsuY2ZnIGZpbGUg
dG8gYmUgdXNlZCBieSBnZW5lcmF0ZS1ndGtkb2MuCisKIDIwMTQtMDItMTggIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2hhbmdpbmcgc2VsZWN0aW9uIHNob3Vs
ZG4ndCBzeW5jaHJvbm91c2x5IHVwZGF0ZSBlZGl0b3IgVUkgY29tcG9uZW50cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCmluZGV4IGFmYTVlY2JmYzJlY2U1OGY0ZjUwZGZhZTI0ZjMwM2YyMmQ5ZmNmMmMuLmRiNGFi
YWVmMDdhOGM4MWUyZjc0NjMwMzE3NTRkNGZiNTc5ZWE3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAxNC0wMi0yMCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gZ2VuZXJhdGUtZ3RrZG9jIHNob3VsZCBub3QgZ2Vu
ZXJhdGUgZG9jdW1lbnRhdGlvbiBmb3Igc291cmNlIGZpbGVzIGZvciB1bmJ1aWx0IHNvdXJjZSBm
aWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4
NDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbTogR2VuZXJhdGUgYSBjb25maWcgZmlsZSBmb3IgZ2VuZXJhdGUtZ3RrZG9j
LgorCiAyMDE0LTAyLTE3ICBTZXJnaW8gQ29ycmVpYSAgPHNlcmdpby5jb3JyZWlhQG9wZW5ib3Nz
YS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSB1c2VzIG9mIFBhc3NPd25QdHIvT3duUHRyIHdpdGgg
c3RkOjp1bmlxdWVfcHRyIGluIFdlYkNvcmUvaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjYyNTk4
ODU4Y2MxNzEzN2NjNDc5MWNhZjExZTdkN2Q0Y2UwN2JjZi4uZTkzMThiZjEyOWY0Zjk5OTVkMDIx
ODY4N2QxNzdhMjk4ZGY4ODYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE0LTAy
LTIwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBb
R1RLXSBnZW5lcmF0ZS1ndGtkb2Mgc2hvdWxkIG5vdCBnZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZv
ciBzb3VyY2UgZmlsZXMgZm9yIHVuYnVpbHQgc291cmNlIGZpbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg0MTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBHZW5lcmF0
ZSBhIGNvbmZpZyBmaWxlIGZvciBnZW5lcmF0ZS1ndGtkb2MuCisgICAgICAgICogUGxhdGZvcm1H
VEsuY21ha2U6IERpdHRvLgorCiAyMDE0LTAyLTIwICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgR2V0IHJpZCBvZiByZWR1bmRhbnQgUGxhdGZvcm0uaCBp
bmNsdWRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVt
YWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUu
YW0KaW5kZXggM2Q4YmI2ZTg2YzUyMzkwMTEyNjY1ZjFjYmQ4NzY5ZGRjMTcyNzM0YS4uYTE3NDE2
YWEzMmY4YzNmOWU4MjdjOGQ0NmJkYTMxMGZmMDRmZjhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCkBAIC01NzUsMTIgKzU3NSwxNSBAQCBs
aWJHT2JqZWN0RE9NQmluZGluZ3NfbGFfQ0ZMQUdTID0gXAogCS1mdmlzaWJpbGl0eT1oaWRkZW4g
XAogCSQoZ2xvYmFsX2NmbGFncykKIAord2Via2l0Z3RrX2dkb21faW5jbHVkZV9kaXJzID0gXAor
CS1JJChXZWJDb3JlKS9iaW5kaW5ncyBcCisJLUkkKFdlYkNvcmUpL2JpbmRpbmdzL2dvYmplY3Qg
XAorCS1JJChHRU5TT1VSQ0VTX1dFQktJVERPTSkKKwogbGliR09iamVjdERPTUJpbmRpbmdzX2xh
X0NQUEZMQUdTID0gXAogCS1EQlVJTERJTkdfV2ViQ29yZSBcCiAJLURCVUlMRElOR19XRUJLSVQg
XAotCS1JJChXZWJDb3JlKS9iaW5kaW5ncyBcCi0JLUkkKFdlYkNvcmUpL2JpbmRpbmdzL2dvYmpl
Y3QgXAotCS1JJChHRU5TT1VSQ0VTX1dFQktJVERPTSkgXAorCSQod2Via2l0Z3RrX2dkb21faW5j
bHVkZV9kaXJzKSBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKIAkkKHBsYXRmb3JtX2NwcGZsYWdz
KSBcCiAJJChwbGF0Zm9ybWd0a19jcHBmbGFncykgXApAQCAtNTkxLDMgKzU5NCwxMyBAQCBsaWJH
T2JqZWN0RE9NQmluZGluZ3NfbGFfQ1BQRkxBR1MgPSBcCiAJJChGUkVFVFlQRV9DRkxBR1MpIFwK
IAkkKEdMSUJfQ0ZMQUdTKSBcCiAJJChMSUJTT1VQX0NGTEFHUykKKworZ3RrZG9jLXdlYmtpdGRv
bS5jZmc6ICQoV2ViQ29yZSkvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbSAkKHNyY2Rp
cikvVG9vbHMvZ3RrL0dOVW1ha2VmaWxlLmFtCisJJChBTV9WX0dFTillY2hvICJbd2Via2l0ZG9t
Z3RrXSIgPiAkQCAmJiBcCisJZWNobyAicGtnY29uZmlnX2ZpbGU9JCh3ZWJraXRkb21fcGtnY29u
ZmlnX2ZpbGUpIiA+PiAkQCAmJiBcCisJZWNobyAibmFtZXNwYWNlPXdlYmtpdF9kb20iID4+ICRA
ICYmIFwKKwllY2hvICJkb2NfZGlyPURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9kb2NzIiA+PiAk
QCAmJiBcCisJZWNobyAtZSAiY2ZsYWdzPS1JJChzcmNkaXIpL1NvdXJjZSAkKHdlYmtpdGd0a19n
ZG9tX2luY2x1ZGVfZGlycykiID4+ICRAICYmIFwKKwllY2hvICJzb3VyY2VfZGlycz0kKHRvcF9i
dWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nb2JqZWN0IiA+PiAkQCAmJiBcCisJZWNobyAiaGVhZGVycz0kKHdlYmtpdGd0
a19nZG9tX2J1aWx0X2hfYXBpKSBEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NRGVw
cmVjYXRlZC5oIiA+PiAkQAorQlVJTFRfU09VUkNFUyArPSBndGtkb2Mtd2Via2l0ZG9tLmNmZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMWNiMjE4NGVlYWUyMTE1NmFhMjY1NzFjMGIyMmFj
NzIzMThjMDFhZC4uYTcxZGViOTlmOThmMTU2OTZiZDM1MWRhNzRjYmIzMjkxZWRhMGRlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xLDcgKzEsNyBAQAogZmlsZShNQUtFX0RJUkVDVE9S
WSAke0RFUklWRURfU09VUkNFU19XRUJLSVRHVEtfRElSfSkKIGZpbGUoTUFLRV9ESVJFQ1RPUlkg
JHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUR1RLX0FQSV9ESVJ9KQogY29uZmlndXJlX2ZpbGUoZ3Rr
L3dlYmtpdC93ZWJraXR2ZXJzaW9uLmguaW4gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUR1RLX0FQ
SV9ESVJ9L3dlYmtpdHZlcnNpb24uaCkKLWNvbmZpZ3VyZV9maWxlKGd0ay93ZWJraXQucGMuaW4g
JHtDTUFLRV9CSU5BUllfRElSfS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRndGstJHtXRUJLSVRH
VEtfQVBJX1ZFUlNJT059LnBjIEBPTkxZKQorY29uZmlndXJlX2ZpbGUoZ3RrL3dlYmtpdC5wYy5p
biAke1dlYktpdF9QS0dDT05GSUdfRklMRX0gQE9OTFkpCiAKIGFkZF9kZWZpbml0aW9ucygtRFBB
Q0tBR0VfTE9DQUxFX0RJUj0iJHtDTUFLRV9JTlNUQUxMX0ZVTExfTE9DQUxFRElSfSIpCiAKQEAg
LTE1Niw3ICsxNTYsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAKICMgVG8gZ2VuZXJhdGUgd2Vi
a2l0ZW51bXR5cGVzLmggd2Ugd2FudCB0byB1c2UgYWxsIGluc3RhbGxlZCBoZWFkZXJzLCBleGNl
cHQgd2Via2l0ZW51bXR5cGVzLmggaXRzZWxmLgogc2V0KFdlYktpdEdUS19FTlVNX0dFTkVSQVRJ
T05fSEVBREVSUyAke1dlYktpdEdUS19JTlNUQUxMRURfSEVBREVSU30pCi1saXN0KFJFTU9WRV9J
VEVNIFdlYktpdEdUS19FTlVNX0dFTkVSQVRJT05fSEVBREVSUyAke0RFUklWRURfU09VUkNFU19X
RUJLSVQyR1RLX0FQSV9ESVJ9L3dlYmtpdGVudW10eXBlcy5oKQorbGlzdChSRU1PVkVfSVRFTSBX
ZWJLaXRHVEtfRU5VTV9HRU5FUkFUSU9OX0hFQURFUlMgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lU
R1RLX0FQSV9ESVJ9L3dlYmtpdGVudW10eXBlcy5oKQogYWRkX2N1c3RvbV9jb21tYW5kKAogICAg
IE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJLSVRHVEtfQVBJX0RJUn0vd2Via2l0ZW51bXR5
cGVzLmgKICAgICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUR1RLX0FQSV9ESVJ9L3dl
YmtpdGVudW10eXBlcy5jcHAKQEAgLTIyOSwzICsyMjksMTcgQEAgaW5zdGFsbChGSUxFUyAke0NN
QUtFX0JJTkFSWV9ESVJ9L1dlYktpdC0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyCiBpbnN0
YWxsKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0LSR7V0VCS0lUR1RLX0FQSV9WRVJT
SU9OfS50eXBlbGliCiAgICAgICAgIERFU1RJTkFUSU9OICR7SU5UUk9TUEVDVElPTl9JTlNUQUxM
X1RZUEVMSUJESVJ9CiApCisKK2ZpbGUoV1JJVEUgJHtDTUFLRV9CSU5BUllfRElSfS9ndGtkb2Mt
d2Via2l0Z3RrLmNmZworICAgICJbd2Via2l0Z3RrXVxuIgorICAgICJwa2djb25maWdfZmlsZT0k
e1dlYktpdF9QS0dDT05GSUdfRklMRX1cbiIKKyAgICAibmFtZXNwYWNlPXdlYmtpdFxuIgorICAg
ICJjZmxhZ3M9LUkke0RFUklWRURfU09VUkNFU19ESVJ9XG4iCisgICAgIiAgICAgICAtSSR7Q01B
S0VfU09VUkNFX0RJUn1cbiIKKyAgICAiICAgICAgIC1JJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3Vy
Y2VcbiIKKyAgICAiICAgICAgIC1JJHtDTUFLRV9TT1VSQ0VfRElSfS9KYXZhU2NyaXB0Q29yZS9G
b3J3YXJkaW5nSGVhZGVyc1xuIgorICAgICJkb2NfZGlyPSR7V0VCS0lUX0RJUn0vZ3RrL2RvY3Nc
biIKKyAgICAic291cmNlX2RpcnM9JHtXRUJLSVRfRElSfS9ndGsvd2Via2l0XG4iCisgICAgIiAg
ICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVEdUS19BUElfRElSfVxuIgorICAgICJo
ZWFkZXJzPSR7V2ViS2l0R1RLX0VOVU1fR0VORVJBVElPTl9IRUFERVJTfVxuIgorKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0
ay9HTlVtYWtlZmlsZS5hbQppbmRleCA2NGVkNTNlMzk0ZGUyMTA0NmI5ZTFjN2EwZWYxNjc5MzM5
YmExM2ZlLi45MDdmMGM1MjdmOGQ3ZmUxYWNhMjhkZWJmMmIyYzUwMjU0M2I3MzgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtMzc3LDYgKzM3NywxNyBAQCAkKEdFTlNPVVJDRVNfV0VC
S0lUKS93ZWJraXRlbnVtdHlwZXMuY3BwOiAkKHdlYmtpdGd0a19oX2FwaSkgJChXZWJLaXQpL0dO
VW1ha2VmaQogCSYmIGNwIHhnZW4tZ3RjICRAIFwKIAkmJiBybSAtZiB4Z2VuLWd0YwogCitndGtk
b2Mtd2Via2l0Z3RrLmNmZzogJChXZWJLaXQpL0dOVW1ha2VmaWxlLmFtICQoc3JjZGlyKS9Ub29s
cy9ndGsvR05VbWFrZWZpbGUuYW0KKwkkKEFNX1ZfR0VOKWVjaG8gIlt3ZWJraXRndGtdIiA+ICRA
ICYmIFwKKwllY2hvICJwa2djb25maWdfZmlsZT0kKHdlYmtpdDFfcGtnX2NvbmZpZ19maWxlKSIg
Pj4gJEAgJiYgXAorCWVjaG8gIm5hbWVzcGFjZT13ZWJraXQiID4+ICRAICYmIFwKKwllY2hvIC1l
ICJjZmxhZ3M9JChsaWJ3ZWJraXRndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdF
QktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQRkxBR1MpIiA+PiAkQCAmJiBcCisJZWNo
byAiZG9jX2Rpcj0kKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvZG9jcyIgPj4gJEAgJiYgXAor
CWVjaG8gLWUgInNvdXJjZV9kaXJzPSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRc
biBcCisgICAgICAgICAgIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdCIgPj4gJEAgJiYgXAorCWVj
aG8gLWUgImhlYWRlcnM9JCh3ZWJraXRndGtfc3RhdGljX2hfYXBpKSBTb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oIiA+PiAkQAorQlVJTFRfU09VUkNFUyArPSBndGtkb2Mt
d2Via2l0Z3RrLmNmZworCiBFWFRSQV9ESVNUICs9IFwKIAkkKFdlYktpdCkvQ2hhbmdlTG9nIFwK
IAkkKFdlYktpdCkvTkVXUyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGJmYWFmZmUwNWM2Mjlh
ODQ5ZWU5YzQyMDU5YzQ1MmU5MmVjYzUwYjcuLmEzYzI4MWU5Y2VkMTM1OWU4NjNmODIwNWMwNWYz
OWIyYjI5ZWMzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC04MDMsNiArODAzLDI1IEBAIFBy
b2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3NfQ1hYRkxBR1MgPSBcCiAJLWZ2aXNpYmlsaXR5LWlu
bGluZXMtaGlkZGVuIFwKIAkkKGdsb2JhbF9jeHhmbGFncykKIAorIyBJdCB3b3VsZCBiZSBuaWNl
IHRvIHVzZSB0aGUgQ1BQRkxBR1MgZnJvbSB0aGUgV2ViS2l0MiBsaWJyYXJ5IGhlcmUsIGJ1dCB0
aGUgcHJlZml4CisjIGhlYWRlciBkb2Vzbid0IHNlZW0gdG8gcGxheSBuaWNlbHkgd2l0aCB0aGUg
Z3RrZG9jIHRvb2xzLgorZ3RrZG9jLXdlYmtpdDJndGsuY2ZnOiAkKFdlYktpdDIpL0dOVW1ha2Vm
aWxlLmFtICQoV2ViS2l0MikvR05VbWFrZWZpbGUubGlzdC5hbQorCSQoQU1fVl9HRU4pZWNobyAi
W3dlYmtpdDJndGtdIiA+ICRAICYmIFwKKwllY2hvICJwa2djb25maWdfZmlsZT0kKHdlYmtpdDJf
cGtnX2NvbmZpZ19maWxlKSIgPj4gJEAgJiYgXAorCWVjaG8gIm5hbWVzcGFjZT13ZWJraXQiID4+
ICRAICYmIFwKKwllY2hvIC1lICJjZmxhZ3M9LUkkKHNyY2RpcikvU291cmNlXG4gXAorICAgICAg
IC1JJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0a1xuIFwKKyAgICAgICAtSURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdDJndGsvaW5jbHVkZVxuIFwKKyAgICAgICAtSURlcml2ZWRTb3VyY2VzL1dlYktp
dDIvd2Via2l0Mmd0a1xuIiA+PiAkQCAmJiBcCisJZWNobyAiZG9jX2Rpcj0kKFdlYktpdDIpL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3MiID4+ICRAICYmIFwKKwllY2hvIC1lICJzb3VyY2VfZGlycz0k
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrXG4gXAorICAgICAgICAgICAkKFdlYktpdDIpL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0a1xuIFwKKyAgICAgICAgICAgRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi93ZWJraXQyZ3RrL3dlYmtpdDJcbiIgPj4gJEAgJiYgXAorCWVjaG8gLWUg
ImhlYWRlcnM9JCh3ZWJraXQyZ3RrX3VpX2hfYXBpKVxuIFwKKyAgICAgICAgICQod2Via2l0Mmd0
a193ZWJfZXh0ZW5zaW9uX2hfYXBpKVxuIFwKKyAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYktp
dDIvd2Via2l0Mmd0ay93ZWJraXQyL1dlYktpdFZlcnNpb24uaCIgPj4gJEAKK0JVSUxUX1NPVVJD
RVMgKz0gZ3RrZG9jLXdlYmtpdDJndGsuY2ZnCisKIEVYVFJBX0RJU1QgKz0gXAogCSQoV2ViS2l0
MikvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBcCiAJJChXZWJL
aXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggODQ0MmRkNTkyZDQ2ZDhkZDE4ZmNlNDk2ZjA0MDQx
MTljOTJiOWRkNi4uYzIzMWU4YWEzNDQ5YWViODY3YzliODNkNzU2YjQ2NzA0MDliMTVmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTQsNyArNCw3IEBAIGZpbGUoTUFLRV9ESVJFQ1RP
UlkgJHtGT1JXQVJESU5HX0hFQURFUlNfV0VCS0lUMkdUS19ESVJ9KQogZmlsZShNQUtFX0RJUkVD
VE9SWSAke0ZPUldBUkRJTkdfSEVBREVSU19XRUJLSVQyR1RLX0VYVEVOU0lPTl9ESVJ9KQogCiBj
b25maWd1cmVfZmlsZShVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRWZXJzaW9uLmguaW4gJHtERVJJ
VkVEX1NPVVJDRVNfV0VCS0lUMkdUS19BUElfRElSfS9XZWJLaXRWZXJzaW9uLmgpCi1jb25maWd1
cmVfZmlsZSh3ZWJraXQyZ3RrLnBjLmluICR7Q01BS0VfQklOQVJZX0RJUn0vU291cmNlL1dlYktp
dDIvd2Via2l0Mmd0ay0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0ucGMgQE9OTFkpCitjb25maWd1
cmVfZmlsZSh3ZWJraXQyZ3RrLnBjLmluICR7V2ViS2l0Ml9QS0dDT05GSUdfRklMRX0gQE9OTFkp
CiAKIGFkZF9kZWZpbml0aW9ucygtRFdFQktJVDJfQ09NUElMQVRJT04pCiBhZGRfZGVmaW5pdGlv
bnMoLURMSUJFWEVDRElSPSIke0NNQUtFX0lOU1RBTExfRlVMTF9MSUJFWEVDRElSfSIpCkBAIC03
ODUsMyArNzg1LDE4IEBAIGluc3RhbGwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQy
LSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS50eXBlbGliCiAgICAgICAgICAgICAgICR7Q01BS0Vf
QklOQVJZX0RJUn0vV2ViS2l0MldlYkV4dGVuc2lvbi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0u
dHlwZWxpYgogICAgICAgICBERVNUSU5BVElPTiAke0lOVFJPU1BFQ1RJT05fSU5TVEFMTF9UWVBF
TElCRElSfQogKQorCitmaWxlKFdSSVRFICR7Q01BS0VfQklOQVJZX0RJUn0vZ3RrZG9jLXdlYmtp
dDJndGsuY2ZnCisgICAgIlt3ZWJraXQyZ3RrXVxuIgorICAgICJwa2djb25maWdfZmlsZT0ke1dl
YktpdDJfUEtHQ09ORklHX0ZJTEV9XG4iCisgICAgIm5hbWVzcGFjZT13ZWJraXRcbiIKKyAgICAi
Y2ZsYWdzPS1JJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2VcbiIKKyAgICAiICAgICAgIC1JJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGtcbiIKKyAgICAiICAgICAgIC1JJHtERVJJVkVE
X1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9XG4iCisgICAgIiAgICAgICAtSSR7Rk9SV0FSRElOR19I
RUFERVJTX1dFQktJVDJHVEtfRElSfVxuIgorICAgICJkb2NfZGlyPSR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3NcbiIKKyAgICAic291cmNlX2RpcnM9JHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9ndGtcbiIKKyAgICAiICAgICAgICAgICAgJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrXG4iCisgICAgIiAgICAgICAgICAgICR7REVS
SVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfQVBJX0RJUn1cbiIKKyAgICAiaGVhZGVycz0ke1dlYktp
dDJHVEtfRU5VTV9HRU5FUkFUSU9OX0hFQURFUlN9ICR7V2ViS2l0MldlYkV4dGVuc2lvbl9JTlNU
QUxMRURfSEVBREVSU31cbiIKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RL
LmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggOGJjMTljNGRjNTY2
NDc2OTQ1ODNlMDIwODI2ODU1YjE1N2U5ZDBjZi4uYTVmZTVjOWM2N2RkMmQ0ZWI0ODk1MzA5MmI1
ZjkyNjc4YTZhNTk3MiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UK
KysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTI2NCw2ICsyNjQsMTAgQEAg
c2V0KERFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0FQSV9ESVIgJHtERVJJVkVEX1NPVVJDRVNf
V0VCS0lUMkdUS19ESVJ9L3dlYmtpdDIKIHNldChGT1JXQVJESU5HX0hFQURFUlNfRElSICR7REVS
SVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMpCiBzZXQoRk9SV0FSRElOR19IRUFE
RVJTX1dFQktJVDJHVEtfRElSICR7Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vd2Via2l0Mmd0aykK
IHNldChGT1JXQVJESU5HX0hFQURFUlNfV0VCS0lUMkdUS19FWFRFTlNJT05fRElSICR7Rk9SV0FS
RElOR19IRUFERVJTX0RJUn0vd2Via2l0Mmd0ay13ZWJleHRlbnNpb24pCisKK3NldChXZWJLaXRf
UEtHQ09ORklHX0ZJTEUgJHtDTUFLRV9CSU5BUllfRElSfS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXRndGstJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LnBjKQorc2V0KFdlYktpdDJfUEtHQ09ORklH
X0ZJTEUgJHtDTUFLRV9CSU5BUllfRElSfS9Tb3VyY2UvV2ViS2l0Mi93ZWJraXQyZ3RrLSR7V0VC
S0lUR1RLX0FQSV9WRVJTSU9OfS5wYykKKwogc2V0KFNIT1VMRF9JTlNUQUxMX0pTX1NIRUxMIE9O
KQogCiAjIFB1c2ggb2YgcmJwIGlzIG5lZWRlZCBhZnRlciBKU0MgSklUIHVzZXMgQ1N0YWNrLiBT
ZWUgaHR0cDovL3drYnVnLmNvbS8xMjc3NzcuCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGI4ZDQ0NTIxZTgxNWYyYTE0MTZiNjZjY2IyYzQ4NmZh
MzYyYzRkNS4uM2FjYTBmYTEwYjlmYjFlN2I4MzQzZGI0MjZmNjkwMWNiN2ZkOTVkMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIw
IEBACiAyMDE0LTAyLTIwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4K
IAorICAgICAgICBbR1RLXSBnZW5lcmF0ZS1ndGtkb2Mgc2hvdWxkIG5vdCBnZW5lcmF0ZSBkb2N1
bWVudGF0aW9uIGZvciBzb3VyY2UgZmlsZXMgZm9yIHVuYnVpbHQgc291cmNlIGZpbGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg0MTcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGd0ay9HTlVtYWtl
ZmlsZS5hbTogTWFrZSB0aGUgZG9jdW1lbnRhdGlvbiBwcm9jZXNzIGRlcGVuZCBvbiB0aGUgY29u
ZmlndXJhdGlvbiBmaWxlcy4KKyAgICAgICAgKiBndGsvZ2VuZXJhdGUtZ3RrZG9jOiBTd2l0Y2gg
ZnJvbSB1c2luZyBoYXJkLWNvZGVkIGNvbmZpZ3VyYXRpb25zIHRvIHJlYWRpbmcgdGhlbSBmcm9t
CisgICAgICAgIGEgbWFrZWZpbGUuIFRoaXMgYWxsb3dzIGFjY2VwdGluZyBhIGhlYWRlciBsaXN0
IGZyb20gdGhlIGJ1aWxkIHN5c3RlbSwgd2hpY2ggY2FuIGJlIHVzZWQKKyAgICAgICAgdG8gZHlu
YW1pY2FsbHkgYnVpbGQgYSBsaXN0IG9mIGlnbm9yZWQgZmlsZXMuIFdlIGNhbiBpZ25vcmUgYW55
IHNvdXJjZSBmaWxlIHRoYXQgZG9lc24ndAorICAgICAgICBoYXZlIGEgY29ycmVzcG9uZGluZyBo
ZWFkZXIgZmlsZSBvbiB0aGUgaGVhZGVyIGxpc3QuIAorICAgICAgICAqIGd0ay9ndGtkb2MucHk6
IE5vdyBhY2NlcHQgYSBoZWFkZXJzIHBhcmFtZXRlciwgd2hpY2ggY2FuIGJlIHVzZWQgaW5zdGVh
ZCBvZiBwYXNzaW5nIGp1c3QKKyAgICAgICAgc291cmNlIGRpcmVjdG9yaWVzIHRvIGd0a2RvYy1z
Y2FuLgorCisyMDE0LTAyLTIwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNv
bT4KKwogICAgICAgICBbR1RLXSBnZW5lYXRlLWd0a2RvYyBzaG91bGQgdXNlIGFyZ3BhcnNlCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg0MTgKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvZ3RrL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IDYwMGIwMzUwMmZiZDZlZTRmYmRjZTUxZDg2MjFiNjY2YmE2NTJiMjQuLmYy
NTA5MjlmMDMzNTA4OTEwMDkxZWVjNDZhOTE2YTIwOGYxODFhM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTEw
LDIxICsxMCwyMyBAQCBkb2NzOiBkb2NzLWJ1aWxkLnN0YW1wCiAuUEhPTlkgOiBkb2NzCiBESVNU
Q0xFQU5GSUxFUyArPSBkb2NzLWJ1aWxkLnN0YW1wCiAKLWRvY3NfYnVpbGRfc3RhbXBfbGlzdCA9
IFwKK2RvY3NfYnVpbGRfZGVwZW5kZW5jaWVzID0gXAogCVNvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mv
d2Via2l0ZW52aXJvbm1lbnQueG1sCiAKIGlmIEVOQUJMRV9XRUJLSVQxCi1kb2NzX2J1aWxkX3N0
YW1wX2xpc3QgKz0gXAorZG9jc19idWlsZF9kZXBlbmRlbmNpZXMgKz0gXAogCWxpYndlYmtpdGd0
ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJT
SU9OQC5sYSBcCiAJU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstZG9jcy5zZ21sIFwK
LQlTb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQKKwlTb3VyY2Uv
V2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQgXAorCWd0a2RvYy13ZWJraXRn
dGsuY2ZnCiBlbmRpZgogCiBpZiBFTkFCTEVfV0VCS0lUMgotZG9jc19idWlsZF9zdGFtcF9saXN0
ICs9IFwKK2RvY3NfYnVpbGRfZGVwZW5kZW5jaWVzICs9IFwKIAlsaWJ3ZWJraXQyZ3RrLUBXRUJL
SVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxh
IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9j
cy5zZ21sIFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstc2VjdGlvbnMudHh0CisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBcCisJZ3RrZG9jLXdlYmtpdDJndGsuY2ZnCiBlbmRpZgog
CiAkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL2RvY3Mvd2Via2l0ZG9t
Z3RrLWRvY3Muc2dtbDogJChnZG9tX3N5bWJvbF9maWxlcykgJChzcmNkaXIpL1Rvb2xzL2d0ay9n
ZW5lcmF0ZS13ZWJraXRkb20tZG9jLWZpbGVzCkBAIC0zOSwxMiArNDEsMTMgQEAgQlVJTFRfU09V
UkNFUyArPSBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9kb2Nz
L3dlYmtpdGRvbWd0ay1kb2NzLnNnbWwgXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNl
cy93ZWJraXRkb20vZG9jcy93ZWJraXRkb21ndGstc2VjdGlvbnMudHh0CiAKLWRvY3NfYnVpbGRf
c3RhbXBfbGlzdCArPSBcCitkb2NzX2J1aWxkX2RlcGVuZGVuY2llcyArPSBcCiAJbGliR09iamVj
dERPTUJpbmRpbmdzLmxhIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0
ZG9tL2RvY3Mvd2Via2l0ZG9tZ3RrLWRvY3Muc2dtbCBcCi0JJCh0b3BfYnVpbGRkaXIpL0Rlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9kb2NzL3dlYmtpdGRvbWd0ay1zZWN0aW9ucy50eHQKKwkkKHRv
cF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL2RvY3Mvd2Via2l0ZG9tZ3RrLXNl
Y3Rpb25zLnR4dCBcCisJZ3RrZG9jLXdlYmtpdGRvbS5jZmcKIAotZG9jcy1idWlsZC5zdGFtcDog
JChkb2NzX2J1aWxkX3N0YW1wX2xpc3QpCitkb2NzLWJ1aWxkLnN0YW1wOiAkKGRvY3NfYnVpbGRf
ZGVwZW5kZW5jaWVzKQogCUNDPSQoQ0MpICQoc3JjZGlyKS9Ub29scy9ndGsvZ2VuZXJhdGUtZ3Rr
ZG9jCiAJQHRvdWNoIGRvY3MtYnVpbGQuc3RhbXAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dl
bmVyYXRlLWd0a2RvYyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKaW5kZXggMWEzYmU4YmY1
M2UwYmVkNmFjYjNjM2NkZDZmMjZkMWY3ZTY3ODNhYS4uYmU0OTExZmU5MTU5NWIwYTU0N2NkN2Zh
M2EzZTM1ZDUxYThiY2JiZiAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYwor
KysgYi9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCkBAIC0xNSw2ICsxNSw5IEBACiAjIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKICMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQg
cHJpbnRfZnVuY3Rpb24KK2Zyb20gQ29uZmlnUGFyc2VyIGltcG9ydCBTYWZlQ29uZmlnUGFyc2Vy
CisKIGltcG9ydCBhcmdwYXJzZQogaW1wb3J0IGNvbW1vbgogaW1wb3J0IGdsb2IKQEAgLTM1LDE1
MSArMzgsMzAgQEAgZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKHZlcmJvc2UpOgogICAgIGVsc2U6CiAg
ICAgICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCclKG1lc3NhZ2Up
cycpKQogCi0KLWRlZiBnZXRfZ3RrZG9jX21vZHVsZV9wYXRocyh4cmVmX2RlcF9wYWNrYWdlcyk6
Ci0gICAgZGVwcyA9IFtdCi0gICAgaHRtbF9kaXIgPSBvcy5wYXRoLmpvaW4oJ3NoYXJlJywgJ2d0
ay1kb2MnLCAnaHRtbCcpCi0KLSAgICBmb3IgcGFja2FnZSBpbiB4cmVmX2RlcF9wYWNrYWdlczoK
LSAgICAgICAgcHJlZml4ID0gY29tbW9uLnByZWZpeF9vZl9wa2dfY29uZmlnX2ZpbGUocGFja2Fn
ZSkKLSAgICAgICAgaWYgcHJlZml4IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250aW51ZQotICAg
ICAgICBmb3IgbW9kdWxlIGluIHhyZWZfZGVwX3BhY2thZ2VzW3BhY2thZ2VdOgotICAgICAgICAg
ICAgZGVwcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgaHRtbF9kaXIsIG1vZHVsZSkpCi0K
LSAgICByZXR1cm4gZGVwcwotCi0KLWRlZiBnZXRfY29tbW9uX3hyZWZfZGVwcygpOgotICAgIHJl
dHVybiB7CitkZWYgZ2V0X2d0a2RvY19tb2R1bGVfcGF0aHMoZ3RrX3ZlcnNpb24pOgorICAgIGRl
cGVuZGVudF9wYWNrYWdlcyA9IHsKICAgICAgICAgJ2dsaWItMi4wJyA6IFsnZ2xpYicsICdnb2Jq
ZWN0JywgJ2dpbyddLAogICAgICAgICAnbGlic291cC0yLjQnIDogWydsaWJzb3VwLTIuNCddLAog
ICAgICAgICAnZ2RrLXBpeGJ1Zi0yLjAnOiBbJ2dkay1waXhidWYnXQogICAgIH0KLQotZGVmIHdl
YmtpdGRvbV9kb2NzX2h0bWxfcGF0aCgpOgotICAgIHJldHVybiBjb21tb24uYnVpbGRfcGF0aCgn
RG9jdW1lbnRhdGlvbicsICd3ZWJraXRkb21ndGsnLCAnaHRtbCcpCi0KLWRlZiBnZXRfd2Via2l0
Ml9vcHRpb25zKHZpcnR1YWxfcm9vdCk6Ci0gICAgYXBpX3BhdGggPSBjb21tb24udG9wX2xldmVs
X3BhdGgoJ1NvdXJjZScsICdXZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykKLSAg
ICBpbmplY3RlZF9idW5kbGVfYXBpX3BhdGggPSBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJj
ZScsICdXZWJLaXQyJywgJ1dlYlByb2Nlc3MnLCAnSW5qZWN0ZWRCdW5kbGUnLCAnQVBJJywgJ2d0
aycpCi0KLSAgICBpZiBjb21tb24uaXNfY21ha2VfYnVpbGQoKToKLSAgICAgICAgZ2VuZXJhdGVk
X2FwaV9wYXRoID0gY29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdDJn
dGsnLCAnd2Via2l0MicpCi0gICAgZWxzZToKLSAgICAgICAgZ2VuZXJhdGVkX2FwaV9wYXRoID0g
Y29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ1dlYktpdDInLCAnd2Via2l0Mmd0
aycsICd3ZWJraXQyJykKLQotICAgIHhyZWZfZGVwcyA9IGdldF9jb21tb25feHJlZl9kZXBzKCku
Y29weSgpCi0gICAgeHJlZl9kZXBzLnVwZGF0ZSh7Ci0gICAgICAgICdndGsrLTMuMCcgOiBbJ2d0
azMnLCAnZ2RrMyddCi0gICAgfSkKLQotICAgIGRlZiBzcmNfcGF0aCgqYXJncyk6Ci0gICAgICAg
IHJldHVybiBvcy5wYXRoLmpvaW4oYXBpX3BhdGgsICphcmdzKQotCi0gICAgb3B0aW9ucyA9IHsK
LSAgICAgICAgJ2RlY29yYXRvcic6ICdXRUJLSVRfQVBJfFdFQktJVF9ERVBSRUNBVEVEfFdFQktJ
VF9ERVBSRUNBVEVEX0ZPUlwoLitcKScsCi0gICAgICAgICdkZXByZWNhdGlvbl9ndWFyZCc6ICdX
RUJLSVRfRElTQUJMRV9ERVBSRUNBVEVEJywKLSAgICAgICAgJ2xpYnJhcnlfcGF0aCcgOiBjb21t
b24ubGlicmFyeV9idWlsZF9wYXRoKCksCi0gICAgICAgICd2aXJ0dWFsX3Jvb3QnIDogdmlydHVh
bF9yb290LAotICAgICAgICAnbW9kdWxlX25hbWUnIDogJ3dlYmtpdDJndGsnLAotICAgICAgICAn
bmFtZXNwYWNlJyA6ICd3ZWJraXQnLAotICAgICAgICAnZG9jX2RpcicgOiBzcmNfcGF0aCgnZG9j
cycpLAotICAgICAgICAnb3V0cHV0X2RpcicgOiBjb21tb24uYnVpbGRfcGF0aCgnRG9jdW1lbnRh
dGlvbicsICd3ZWJraXQyZ3RrJyksCi0gICAgICAgICdzb3VyY2VfZGlycycgOiBbc3JjX3BhdGgo
KSwgZ2VuZXJhdGVkX2FwaV9wYXRoLCBpbmplY3RlZF9idW5kbGVfYXBpX3BhdGhdLAotICAgICAg
ICAnY2ZsYWdzJyA6Ci0gICAgICAgICAgICAjIENvbW1vbiBwYXRocwotICAgICAgICAgICAgJyAt
SScgKyBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpICsgXAotICAgICAgICAgICAgJyAt
SScgKyBhcGlfcGF0aCArIFwKLSAgICAgICAgICAgICMgQXV0b3Rvb2xzIHBhdGhzCi0gICAgICAg
ICAgICAnIC1JJyArIGNvbW1vbi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICd3ZWJraXQy
Z3RrJywgJ2luY2x1ZGUnKSArIFwKLSAgICAgICAgICAgICcgLUknICsgY29tbW9uLmJ1aWxkX3Bh
dGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ1dlYktpdDInLCAnd2Via2l0Mmd0aycpICsgXAotICAgICAg
ICAgICAgIyBDTWFrZSBwYXRocwotICAgICAgICAgICAgJyAtSScgKyBjb21tb24uYnVpbGRfcGF0
aCgnRGVyaXZlZFNvdXJjZXMnLCAnRm9yd2FyZGluZ0hlYWRlcnMnLCAnd2Via2l0Mmd0aycpICsg
XAotICAgICAgICAgICAgJyAtSScgKyBjb21tb24uYnVpbGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMn
LCAnd2Via2l0Mmd0aycpLAotICAgICAgICAnY3Jvc3NfcmVmZXJlbmNlX2RlcHMnIDogZ2V0X2d0
a2RvY19tb2R1bGVfcGF0aHMoeHJlZl9kZXBzKSArIFt3ZWJraXRkb21fZG9jc19odG1sX3BhdGgo
KV0sCi0gICAgICAgICdpZ25vcmVkX2ZpbGVzJzogZ2xvYi5nbG9iKHNyY19wYXRoKCcqUHJpdmF0
ZS5oJykpICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihvcy5wYXRoLmpv
aW4oaW5qZWN0ZWRfYnVuZGxlX2FwaV9wYXRoLCAnKlByaXZhdGUuaCcpKSArIFwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJypDbGllbnQqJykpICsgXAotICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihzcmNfcGF0aCgnV2ViS2l0QXV0aGVudGlj
YXRpb25EaWFsb2cuKicpKSArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2Io
c3JjX3BhdGgoJ1dlYktpdEJhdHRlcnlQcm92aWRlci4qJykpICsgXAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsb2IuZ2xvYihzcmNfcGF0aCgnV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci4q
JykpICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihzcmNfcGF0aCgnV2Vi
S2l0VGV4dENoZWNrZXIuKicpKSArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmds
b2Ioc3JjX3BhdGgoJ1dlYktpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZS4qJykpICsgXAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihzcmNfcGF0aCgnV2ViVmlld0Jhc2VJbnB1dE1l
dGhvZEZpbHRlci4qJykpICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihv
cy5wYXRoLmpvaW4oZ2VuZXJhdGVkX2FwaV9wYXRoLCAnV2ViS2l0TWFyc2hhbC4qJykpICsgXAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oZ2VuZXJhdGVk
X2FwaV9wYXRoLCAnV2ViS2l0RW51bVR5cGVzLionKSkgKyBcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCd0ZXN0cy8qLmgnKSkKLSAgICB9Ci0gICAgcmV0dXJu
IG9wdGlvbnMKLQotZGVmIGdldF93ZWJraXQxX29wdGlvbnMoZ3RrX3ZlcnNpb24sIHZpcnR1YWxf
cm9vdCk6Ci0gICAgZGVmIHNyY19wYXRoKCphcmdzKToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi50
b3BfbGV2ZWxfcGF0aCgqKCgnU291cmNlJywgJ1dlYktpdCcsICdndGsnKSArIGFyZ3MpKQotCi0g
ICAgZGVmIHdlYmtpdHZlcnNpb25oX3BhdGgoKToKLSAgICAgICAgaWYgY29tbW9uLmlzX2NtYWtl
X2J1aWxkKCk6Ci0gICAgICAgICAgICByZXR1cm4gY29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRT
b3VyY2VzJywgJ3dlYmtpdGd0aycpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4g
Y29tbW9uLmJ1aWxkX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQnLCAnZ3RrJywgJ3dlYmtpdCcpCi0K
LSAgICB4cmVmX2RlcHMgPSBnZXRfY29tbW9uX3hyZWZfZGVwcygpLmNvcHkoKQogICAgIGlmIGd0
a192ZXJzaW9uID09IDM6Ci0gICAgICAgIHhyZWZfZGVwcy51cGRhdGUoewotICAgICAgICAgICAg
ICAgICdndGsrLTMuMCcgOiBbJ2d0azMnLCAnZ2RrMyddCi0gICAgICAgIH0pCisgICAgICAgIGRl
cGVuZGVudF9wYWNrYWdlcy51cGRhdGUoeydndGsrLTMuMCcgOiBbJ2d0azMnLCAnZ2RrMyddfSkK
ICAgICBlbHNlOgotICAgICAgICB4cmVmX2RlcHMudXBkYXRlKHsKLSAgICAgICAgICAgICAgICAn
Z3RrKy0yLjAnIDogWydndGsnLCAnZ2RrJ10KLSAgICAgICAgfSkKLQotICAgIG9wdGlvbnMgPSB7
Ci0gICAgICAgICdkZWNvcmF0b3InOiAnV0VCS0lUX0FQSXxXRUJLSVRfREVQUkVDQVRFRHxXRUJL
SVRfREVQUkVDQVRFRF9GT1JcKC4rXCknLAotICAgICAgICAnZGVwcmVjYXRpb25fZ3VhcmQnOiAn
V0VCS0lUX0RJU0FCTEVfREVQUkVDQVRFRCcsCi0gICAgICAgICdsaWJyYXJ5X3BhdGgnIDogY29t
bW9uLmxpYnJhcnlfYnVpbGRfcGF0aCgpLAotICAgICAgICAndmlydHVhbF9yb290JyA6IHZpcnR1
YWxfcm9vdCwKLSAgICAgICAgJ21vZHVsZV9uYW1lJyA6ICd3ZWJraXRndGsnLAotICAgICAgICAn
bmFtZXNwYWNlJyA6ICd3ZWJraXQnLAotICAgICAgICAnZG9jX2RpcicgOiBzcmNfcGF0aCgnZG9j
cycpLAotICAgICAgICAnb3V0cHV0X2RpcicgOiBjb21tb24uYnVpbGRfcGF0aCgnRG9jdW1lbnRh
dGlvbicsICd3ZWJraXRndGsnKSwKLSAgICAgICAgJ3NvdXJjZV9kaXJzJyA6IFtzcmNfcGF0aCgn
d2Via2l0JyksIHdlYmtpdHZlcnNpb25oX3BhdGgoKV0sCi0gICAgICAgICdjZmxhZ3MnIDogJyAt
SScgKyBjb21tb24uYnVpbGRfcGF0aCgnV2ViS2l0JywgJ2d0aycpICsgXAotICAgICAgICAgICAg
ICAgICAgICcgLUknICsgY29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJykgKyBcCi0g
ICAgICAgICAgICAgICAgICAgJyAtSScgKyBzcmNfcGF0aCgpICsgXAotICAgICAgICAgICAgICAg
ICAgICcgLUknICsgY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnKSArIFwKLSAgICAgICAg
ICAgICAgICAgICAnIC1JJyArIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ0phdmFT
Y3JpcHRDb3JlJywgJ0ZvcndhcmRpbmdIZWFkZXJzJyksCi0gICAgICAgICdjcm9zc19yZWZlcmVu
Y2VfZGVwcycgOiBnZXRfZ3RrZG9jX21vZHVsZV9wYXRocyh4cmVmX2RlcHMpICsgW3dlYmtpdGRv
bV9kb2NzX2h0bWxfcGF0aCgpXSwKLSAgICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9iLmdsb2Io
c3JjX3BhdGgoJ3dlYmtpdCcsICcqcHJpdmF0ZS4qJykpICsgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsb2IuZ2xvYihzcmNfcGF0aCgnd2Via2l0JywgJ3dlYmtpdGF1dGhlbnRpY2F0aW9u
ZGlhbG9nLionKSkgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19w
YXRoKCd3ZWJraXQnLCAnd2Via2l0c3BlbGxjaGVja2VyZW5jaGFudC4qJykpCi0gICAgfQotICAg
IHJldHVybiBvcHRpb25zCi0KLWRlZiBnZXRfd2Via2l0ZG9tX29wdGlvbnModmlydHVhbF9yb290
KToKLSAgICBkZWYgZGVyaXZlZF9zb3VyY2VzX3BhdGgoKmFyZ3MpOgotICAgICAgICByZXR1cm4g
Y29tbW9uLmJ1aWxkX3BhdGgoKigoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdGRvbScpICsgYXJn
cykpCi0gICAgZGVmIHNyY19wYXRoKCphcmdzKToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi50b3Bf
bGV2ZWxfcGF0aCgqKCgnU291cmNlJywgJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnZ29iamVjdCcp
ICsgYXJncykpCisgICAgICAgIGRlcGVuZGVudF9wYWNrYWdlcy51cGRhdGUoeydndGsrLTIuMCcg
OiBbJ2d0aycsICdnZGsnXX0pCiAKLSAgICB4cmVmX2RlcHMgPSB7ICdnbGliLTIuMCcgOiBbJ2ds
aWInLCAnZ29iamVjdCcsICdnaW8nXSB9CisgICAgcGF0aHMgPSBbXQorICAgIGh0bWxfZGlyID0g
b3MucGF0aC5qb2luKCdzaGFyZScsICdndGstZG9jJywgJ2h0bWwnKQorICAgIGZvciBwYWNrYWdl
LCBtb2R1bGVzIGluIGRlcGVuZGVudF9wYWNrYWdlcy5pdGVyaXRlbXMoKToKKyAgICAgICAgcHJl
Zml4ID0gY29tbW9uLnByZWZpeF9vZl9wa2dfY29uZmlnX2ZpbGUocGFja2FnZSkKKyAgICAgICAg
aWYgcHJlZml4IGlzIE5vbmU6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBmb3IgbW9k
dWxlIGluIG1vZHVsZXM6CisgICAgICAgICAgICBwYXRocy5hcHBlbmQob3MucGF0aC5qb2luKHBy
ZWZpeCwgaHRtbF9kaXIsIG1vZHVsZSkpCiAKLSAgICBvcHRpb25zID0gewotICAgICAgICAnZGVj
b3JhdG9yJzogJ1dFQktJVF9BUEl8V0VCS0lUX0RFUFJFQ0FURUR8V0VCS0lUX0RFUFJFQ0FURURf
Rk9SXCguK1wpJywKLSAgICAgICAgJ2RlcHJlY2F0aW9uX2d1YXJkJzogJ1dFQktJVF9ESVNBQkxF
X0RFUFJFQ0FURUQnLAotICAgICAgICAnbGlicmFyeV9wYXRoJyA6IGNvbW1vbi5saWJyYXJ5X2J1
aWxkX3BhdGgoKSwKLSAgICAgICAgJ3ZpcnR1YWxfcm9vdCcgOiB2aXJ0dWFsX3Jvb3QsCi0gICAg
ICAgICdtb2R1bGVfbmFtZScgOiAnd2Via2l0ZG9tZ3RrJywKLSAgICAgICAgJ25hbWVzcGFjZScg
OiAnd2Via2l0X2RvbScsCi0gICAgICAgICdkb2NfZGlyJyA6IGRlcml2ZWRfc291cmNlc19wYXRo
KCdkb2NzJyksCi0gICAgICAgICdvdXRwdXRfZGlyJyA6IGNvbW1vbi5idWlsZF9wYXRoKCdEb2N1
bWVudGF0aW9uJywgJ3dlYmtpdGRvbWd0aycpLAotICAgICAgICAnc291cmNlX2RpcnMnIDogW2Rl
cml2ZWRfc291cmNlc19wYXRoKCldLAotICAgICAgICAnY2ZsYWdzJyA6ICcgLUknICsgZGVyaXZl
ZF9zb3VyY2VzX3BhdGgoKSArIFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIHNyY19wYXRo
KCkgKyBcCi0gICAgICAgICAgICAgICAgICAgJyAtSScgKyBjb21tb24udG9wX2xldmVsX3BhdGgo
J1NvdXJjZScpLAotICAgICAgICAnY3Jvc3NfcmVmZXJlbmNlX2RlcHMnIDogZ2V0X2d0a2RvY19t
b2R1bGVfcGF0aHMoeHJlZl9kZXBzKSwKLSAgICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9iLmds
b2IoZGVyaXZlZF9zb3VyY2VzX3BhdGgoJypQcml2YXRlLmgnKSkKLSAgICB9Ci0gICAgcmV0dXJu
IG9wdGlvbnMKKyAgICAjIFRoaXMgdGVjaG5pY2FsbHkgaXMgbm90IG5lZWRlZCBmb3IgdGhlIEdP
YmplY3QgRE9NIGJpbmRpbmdzIGRvY3VtZW50YXRpb24gaXRzZWxmLAorICAgICMgYnV0IGFkZGlu
ZyBpdCBkb2Vzbid0IGh1cnQgYW5kIGFsbG93cyB1cyB0byBhdm9pZCBhIGNoZWNrIGhlcmUuCisg
ICAgcGF0aHMuYXBwZW5kKGNvbW1vbi5idWlsZF9wYXRoKCdEb2N1bWVudGF0aW9uJywgJ3dlYmtp
dGRvbWd0aycsICdodG1sJykpCisgICAgcmV0dXJuIHBhdGhzCiAKIGRlZiBwcmludF9taXNzaW5n
X2FwaShnZW5lcmF0b3IpOgogICAgIG1pc3NpbmdfYXBpID0gZ2VuZXJhdG9yLmFwaV9taXNzaW5n
X2RvY3VtZW50YXRpb24oKQpAQCAtMTg3LDMxICs2OSw4OSBAQCBkZWYgcHJpbnRfbWlzc2luZ19h
cGkoZ2VuZXJhdG9yKToKICAgICAgICAgcmV0dXJuCiAgICAgcHJpbnQoIlxuVGhlIGZvbGxvd2lu
ZyBBUEkgYXJlIG1pc3NpbmcgZG9jdW1lbnRhdGlvbjoiKQogICAgIGZvciBhcGkgaW4gbWlzc2lu
Z19hcGk6Ci0gICAgICAgIHByaW50KCJcdCVzIiAlIGFwaSkKKyAgICAgICAgcHJpbnQoIlx0ezB9
Ii5mb3JtYXQoYXBpKSkKKworZGVmIGZpbGVzX3RvX2lnbm9yZShzb3VyY2VfZGlycywgaGVhZGVy
c193aXRoX2d0a2RvYyk6CisgICAgIiIiCisgICAgRmluZCBmaWxlcyB0byBpZ25vcmUgZHVyaW5n
IGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvbi4gV2UgYXNzdW1lIHRoYXQgaWYgYW4KKyAgICBpbXBs
ZW1lbnRhdGlvbiBmaWxlIGV4aXN0cyBmb3IgYSBoZWFkZXIgd2l0aCBndGtkb2MgKHNheSB3ZWJr
aXRmb28uY3BwIGZvcgorICAgIHdlYmtpdGZvby5oKSB3ZSBzaG91bGRuJ3QgaWdub3JlIHRoYXQg
ZmlsZS4gQ3VycmVudGx5IHRoaXMgaG9sZHMgdHJ1ZSBmb3IgYWxsCisgICAgb2YgdGhlIFdlYktp
dCBwcm9qZWN0LgorICAgICIiIgorICAgIGltcGxlbWVudGF0aW9uX2ZpbGVzID0gbGlzdChoZWFk
ZXJzX3dpdGhfZ3RrZG9jKQorICAgIGZvciBoZWFkZXIgaW4gaGVhZGVyc193aXRoX2d0a2RvYzoK
KyAgICAgICAgZGVmIGFkZF9maWxlX2lmX2V4aXN0cyhmaWxlKToKKyAgICAgICAgICAgIGlmIG9z
LnBhdGguaXNmaWxlKGZpbGUpOgorICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uX2ZpbGVz
LmFwcGVuZChvcy5wYXRoLmFic3BhdGgoZmlsZSkpCisgICAgICAgIGhlYWRlcl9wYXJ0cyA9IG9z
LnBhdGguc3BsaXRleHQoaGVhZGVyKQorICAgICAgICBhZGRfZmlsZV9pZl9leGlzdHMoaGVhZGVy
X3BhcnRzWzBdICsgIi5jcHAiKQorICAgICAgICBhZGRfZmlsZV9pZl9leGlzdHMoaGVhZGVyX3Bh
cnRzWzBdICsgIi5jIikKKworICAgIGRlZiBmaWxlX3Nob3VsZF9iZV9pZ25vcmVkKGZpbGUpOgor
ICAgICAgICBpZiBvcy5wYXRoLnNwbGl0ZXh0KGZpbGUpWzFdIG5vdCBpbiBbJy5oJywgJy5jJywg
Jy5jcHAnLCAnLmNjJ106CisgICAgICAgICAgICByZXR1cm4gRmFsc2UgIyBUaGVzZSBmaWxlcyBh
cmUgaWdub3JlZCBhbnl3YXkuCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShmaWxlKToK
KyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRo
KGZpbGUpIG5vdCBpbiBpbXBsZW1lbnRhdGlvbl9maWxlcworCisgICAgYWxsX2ZpbGVzID0gc3Vt
KFtbb3MucGF0aC5qb2luKGRpciwgZmlsZSkgZm9yIGZpbGUgaW4gb3MubGlzdGRpcihkaXIpXSBm
b3IgZGlyIGluIHNvdXJjZV9kaXJzXSwgW10pCisgICAgcmV0dXJuIGZpbHRlcihmaWxlX3Nob3Vs
ZF9iZV9pZ25vcmVkLCBhbGxfZmlsZXMpCisKK2RlZiBnZXRfZ2VuZXJhdG9yX2Zvcl9jb25maWco
Y29uZmlnX2ZpbGUsIHZpcnR1YWxfcm9vdCk6CisgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGNv
bmZpZ19maWxlKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGNvbmZpZyA9IFNhZmVDb25m
aWdQYXJzZXIoKQorICAgIGNvbmZpZy5yZWFkKGNvbmZpZ19maWxlKQorICAgIG1vZHVsZV9uYW1l
ID0gY29uZmlnLnNlY3Rpb25zKClbMF0KKyAgICBwa2djb25maWdfZmlsZSA9IGNvbmZpZy5nZXQo
bW9kdWxlX25hbWUsICdwa2djb25maWdfZmlsZScpCisgICAgZ3RrX3ZlcnNpb24gPSBjb21tb24u
Z3RrX3ZlcnNpb25fb2ZfcGtnX2NvbmZpZ19maWxlKHBrZ2NvbmZpZ19maWxlKQorCisgICAgc291
cmNlX2RpcnMgPSBjb25maWcuZ2V0KG1vZHVsZV9uYW1lLCAnc291cmNlX2RpcnMnKS5yZXBsYWNl
KCc7JywgJyAnKS5zcGxpdCgpCisgICAgaGVhZGVycyA9IFtvcy5wYXRoLmFic3BhdGgoZikgZm9y
IGYgaW4gY29uZmlnLmdldChtb2R1bGVfbmFtZSwgJ2hlYWRlcnMnKS5yZXBsYWNlKCc7JywgJyAn
KS5zcGxpdCgpXQorICAgIHJldHVybiBndGtkb2MuUGtnQ29uZmlnR1RLRG9jKHBrZ2NvbmZpZ19m
aWxlLCB7CisgICAgICAgICdkZWNvcmF0b3InOiAnV0VCS0lUX0FQSXxXRUJLSVRfREVQUkVDQVRF
RHxXRUJLSVRfREVQUkVDQVRFRF9GT1JcKC4rXCknLAorICAgICAgICAnZGVwcmVjYXRpb25fZ3Vh
cmQnOiAnV0VCS0lUX0RJU0FCTEVfREVQUkVDQVRFRCcsCisgICAgICAgICdsaWJyYXJ5X3BhdGgn
OiBjb21tb24ubGlicmFyeV9idWlsZF9wYXRoKCksCisgICAgICAgICd2aXJ0dWFsX3Jvb3QnOiB2
aXJ0dWFsX3Jvb3QsCisgICAgICAgICdtb2R1bGVfbmFtZSc6IG1vZHVsZV9uYW1lLAorICAgICAg
ICAnbmFtZXNwYWNlJzogY29uZmlnLmdldChtb2R1bGVfbmFtZSwgJ25hbWVzcGFjZScpLAorICAg
ICAgICAnZG9jX2Rpcic6IGNvbmZpZy5nZXQobW9kdWxlX25hbWUsICdkb2NfZGlyJyksCisgICAg
ICAgICdvdXRwdXRfZGlyJzogY29tbW9uLmJ1aWxkX3BhdGgoJ0RvY3VtZW50YXRpb24nLCBtb2R1
bGVfbmFtZSksCisgICAgICAgICdzb3VyY2VfZGlycyc6IHNvdXJjZV9kaXJzLAorICAgICAgICAn
aGVhZGVycyc6IGhlYWRlcnMsCisgICAgICAgICdjZmxhZ3MnOiAiICIuam9pbihjb25maWcuZ2V0
KG1vZHVsZV9uYW1lLCAnY2ZsYWdzJykuc3BsaXQoKSksCisgICAgICAgICdjcm9zc19yZWZlcmVu
Y2VfZGVwcyc6IGdldF9ndGtkb2NfbW9kdWxlX3BhdGhzKGd0a192ZXJzaW9uKSwKKyAgICAgICAg
J2lnbm9yZWRfZmlsZXMnOiBmaWxlc190b19pZ25vcmUoc291cmNlX2RpcnMsIGhlYWRlcnMpLAor
ICAgIH0pCiAKIGRlZiBnZW5lcmF0ZV9kb2MoZ2VuZXJhdG9yLCBza2lwX2h0bWwpOgorICAgIHBy
aW50KCJcbkdlbmVyYXRpbmcgezB9IGRvY3VtZW50YXRpb24uLi4iLmZvcm1hdChnZW5lcmF0b3Iu
bW9kdWxlX25hbWUpKQogICAgIGdlbmVyYXRvci5nZW5lcmF0ZShub3Qgc2tpcF9odG1sKQogICAg
IGlmIGdlbmVyYXRvci5zYXdfd2FybmluZ3M6CiAgICAgICAgIHByaW50X21pc3NpbmdfYXBpKGdl
bmVyYXRvcikKICAgICByZXR1cm4gZ2VuZXJhdG9yLnNhd193YXJuaW5ncwogCi1pZiBfX25hbWVf
XyA9PSAiX19tYWluX18iOgotICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRl
c2NyaXB0aW9uPSdHZW5lcmF0ZSBndGtkb2MgZm9yIFdlYktpdC4nKQotICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBoZWxwPSdXaGV0aGVyIG9yIG5vdCB0byBydW4gaW4gdmVyYm9zZSBt
b2RlLicpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZWJhc2UnLCBhY3Rpb249J3N0b3Jl
X3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nV2hlbiBzcGVjaWZpZWQsIHJ1
biB0aGUgdG9vbCBpbiByZWJhc2UgbW9kZS4nKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0t
c2tpcC1odG1sJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J1doZXRoZXIgb3Igbm90IHRvIHNraXAgSFRNTCBnZW5lcmF0aW9uLCB3aGljaCBjYW4g
YmUgc2xvdy4nKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdmlydHVhbC1yb290JywgdHlw
ZT1zdHIsIGRlZmF1bHQ9JycsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdBIHRlbXBv
cmFyeSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IHdoaWNoIGlzIHVzZWQgYXMgdGhlIHJvb3QgJyAr
IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3doZXJlIHRoZSBhY3R1YWwgaW5zdGFs
bGF0aW9uIHByZWZpeCBsaXZlczsgdGhpcyBpcyBtb3N0bHkgJyArIFwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3VzZWZ1bCBmb3IgcGFja2FnZXJzLCBhbmQgc2hvdWxkIGJlIHNldCB0
byB3aGF0IGlzIGdpdmVuIHRvICcgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdt
YWtlIGluc3RhbGwgYXMgREVTVERJUi4nKQorZGVmIHJlYmFzZV9kb2MoZ2VuZXJhdG9yKToKKyAg
ICBwcmludCgiXG5SZWJhc2luZyB7MH0gZG9jdW1lbnRhdGlvbi4uLiIuZm9ybWF0KGdlbmVyYXRv
ci5tb2R1bGVfbmFtZSkpCisgICAgdHJ5OgorICAgICAgICBnZW5lcmF0b3IucmViYXNlX2luc3Rh
bGxlZF9kb2NzKCkKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICBwcmludCgiUmViYXNl
IGRpZCBub3QgaGFwcGVuLCBsaWtlbHkgbm8gZG9jdW1lbnRhdGlvbiBpcyBwcmVzZW50LiIpCisK
K2RlZiBnZW5lcmF0ZV9kb2N1bWVudGF0aW9uX2Zvcl9jb25maWcoY29uZmlnX2ZpbGUpOgorICAg
IGdlbmVyYXRvciA9IGdldF9nZW5lcmF0b3JfZm9yX2NvbmZpZyhjb25maWdfZmlsZSwgYXJndW1l
bnRzLnZpcnR1YWxfcm9vdCkKKyAgICBpZiBub3QgZ2VuZXJhdG9yOgorICAgICAgICBwcmludCgi
ezB9IGRvZXMgbm90IGV4aXN0ISBTa2lwcGluZyB0aGF0IGRvY3VtZW50YXRpb24uIi5mb3JtYXQo
b3MucGF0aC5iYXNlbmFtZShjb25maWdfZmlsZSkpKQorICAgICAgICByZXR1cm4KIAotICAgIGFy
Z3VtZW50cyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLSAgICBjb25maWd1cmVfbG9nZ2luZyhhcmd1
bWVudHMudmVyYm9zZSkKKyAgICBpZiBub3QgYXJndW1lbnRzLnJlYmFzZToKKyAgICAgICAgZ2Vu
ZXJhdGVfZG9jKGdlbmVyYXRvciwgYXJndW1lbnRzLnNraXBfaHRtbCkKKyAgICBlbHNlOgorICAg
ICAgICByZWJhc2VfZG9jKGdlbmVyYXRvcikKKyAgICByZXR1cm4gZ2VuZXJhdG9yLnNhd193YXJu
aW5ncwogCitkZWYgcHJlcGFyZV9lbnZpcm9ubWVudF9mb3JfZ3RrZG9jX2dlbmVyYXRpb24oKToK
ICAgICAjIFdlIG5lZWQgdG8gYWRkIHRoZSBKYXZhU2NyaXB0Q29yZSBidWlsZCBkaXJlY3Rvcnkg
dG8gdGhlIFBLR19DT05GSUdfUEFUSAogICAgICMgc28gdGhhdCBwa2djb25maWcgY2FuIHByb3Bl
cmx5IHJlc29sdmUgdGhlIGxpYmphdmFzY3JpcHRjb3JlIGRlcGVuZGVuY3kuCiAgICAgcGtnX2Nv
bmZpZ19wYXRoID0gb3MuZW52aXJvbi5nZXQoIlBLR19DT05GSUdfUEFUSCIpCkBAIC0yMzAsNTkg
KzE3MCwzMSBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGlmIG9zLmVudmlyb24u
Z2V0KCdDQycpID09ICJjbGFuZyI6CiAgICAgICAgIG9zLmVudmlyb25bJ0NGTEFHUyddICs9ICcg
LVF1bnVzZWQtYXJndW1lbnRzJwogCi0gICAgc2F3X3dlYmtpdDFfd2FybmluZ3MgPSBzYXdfd2Vi
a2l0Ml93YXJuaW5ncyA9IEZhbHNlCi0gICAgd2syX3BrZ19jb25maWdfcGF0aCA9IGNvbW1vbi5i
dWlsZF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0MicsICd3ZWJraXQyZ3RrLTMuMC5wYycpCi0gICAg
d2sxX3BrZ19jb25maWdfcGF0aCA9IGNvbW1vbi5idWlsZF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0
JywgJ2d0aycsICd3ZWJraXRndGstMy4wLnBjJykKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMo
d2sxX3BrZ19jb25maWdfcGF0aCk6Ci0gICAgICAgIHdrMV9wa2dfY29uZmlnX3BhdGggPSBjb21t
b24uYnVpbGRfcGF0aCgnU291cmNlJywgJ1dlYktpdCcsICdndGsnLCAnd2Via2l0LTEuMC5wYycp
CisgICAgIyBQYXRocyBmcm9tIHRoZSBHTlVtYWtlZmlsZSBnZW5lcmF0ZWQgY29uZmlndXJhdGlv
biBmaWxlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKyAgICBvcy5jaGRp
cihjb21tb24uYnVpbGRfcGF0aCgpKQogCi0gICAgaWYgb3MucGF0aC5leGlzdHMod2syX3BrZ19j
b25maWdfcGF0aCk6Ci0gICAgICAgIHBrZ19jb25maWdfcGF0aCA9IHdrMl9wa2dfY29uZmlnX3Bh
dGgKLSAgICBlbGlmIG9zLnBhdGguZXhpc3RzKHdrMV9wa2dfY29uZmlnX3BhdGgpOgotICAgICAg
ICBwa2dfY29uZmlnX3BhdGggPSB3azFfcGtnX2NvbmZpZ19wYXRoCi0KLSAgICB3ZWJraXRkb21f
ZG9jc19wYXRoID0gY29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdGRv
bScsICdkb2NzJykKLSAgICBpZiBub3QgY29tbW9uLmlzX2NtYWtlX2J1aWxkKCk6Ci0gICAgICAg
IGdlbmVyYXRvciA9IGd0a2RvYy5Qa2dDb25maWdHVEtEb2MocGtnX2NvbmZpZ19wYXRoLCBnZXRf
d2Via2l0ZG9tX29wdGlvbnMoYXJndW1lbnRzLnZpcnR1YWxfcm9vdCkpCi0gICAgICAgIGlmIG5v
dCBhcmd1bWVudHMucmViYXNlOgotICAgICAgICAgICAgcHJpbnQoIlxuR2VuZXJhdGluZyBXZWJL
aXRET00gZG9jdW1lbnRhdGlvbi4uLiIpCi0gICAgICAgICAgICBzYXdfd2Via2l0ZG9tX3dhcm5p
bmdzID0gZ2VuZXJhdGVfZG9jKGdlbmVyYXRvciwgYXJndW1lbnRzLnNraXBfaHRtbCkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJcblJlYmFzaW5nIFdlYktpdERPTSBkb2N1bWVu
dGF0aW9uLi4uIikKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
cmViYXNlX2luc3RhbGxlZF9kb2NzKCkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0g
ICAgICAgICAgICAgICAgcHJpbnQoIlJlYmFzZSBkaWQgbm90IGhhcHBlbiwgbGlrZWx5IG5vIGRv
Y3VtZW50YXRpb24gaXMgcHJlc2VudC4iKQoraWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAg
ICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nR2VuZXJhdGUg
Z3RrZG9jIGZvciBXZWJLaXQuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZl
cmJvc2UnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0nV2hldGhlciBvciBub3QgdG8gcnVuIGluIHZlcmJvc2UgbW9kZS4nKQorICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoJy0tcmViYXNlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9J1doZW4gc3BlY2lmaWVkLCBydW4gdGhlIHRvb2wgaW4gcmViYXNl
IG1vZGUuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXNraXAtaHRtbCcsIGFjdGlvbj0n
c3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdXaGV0aGVyIG9yIG5v
dCB0byBza2lwIEhUTUwgZ2VuZXJhdGlvbiwgd2hpY2ggY2FuIGJlIHNsb3cuJykKKyAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KCctLXZpcnR1YWwtcm9vdCcsIHR5cGU9c3RyLCBkZWZhdWx0PScnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQSB0ZW1wb3JhcnkgaW5zdGFsbGF0aW9uIGRp
cmVjdG9yeSB3aGljaCBpcyB1c2VkIGFzIHRoZSByb290ICcgKyBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd3aGVyZSB0aGUgYWN0dWFsIGluc3RhbGxhdGlvbiBwcmVmaXggbGl2ZXM7
IHRoaXMgaXMgbW9zdGx5ICcgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2Vm
dWwgZm9yIHBhY2thZ2VycywgYW5kIHNob3VsZCBiZSBzZXQgdG8gd2hhdCBpcyBnaXZlbiB0byAn
ICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFrZSBpbnN0YWxsIGFzIERFU1RE
SVIuJykKIAotICAgIHBrZ19jb25maWdfcGF0aCA9IHdrMV9wa2dfY29uZmlnX3BhdGgKLSAgICBp
ZiBvcy5wYXRoLmV4aXN0cyhwa2dfY29uZmlnX3BhdGgpOgotICAgICAgICBvcHRpb25zID0gZ2V0
X3dlYmtpdDFfb3B0aW9ucyhjb21tb24uZ3RrX3ZlcnNpb25fb2ZfcGtnX2NvbmZpZ19maWxlKHBr
Z19jb25maWdfcGF0aCksIGFyZ3VtZW50cy52aXJ0dWFsX3Jvb3QpCi0gICAgICAgIGdlbmVyYXRv
ciA9IGd0a2RvYy5Qa2dDb25maWdHVEtEb2MocGtnX2NvbmZpZ19wYXRoLCBvcHRpb25zKQotICAg
ICAgICBpZiBub3QgYXJndW1lbnRzLnJlYmFzZToKLSAgICAgICAgICAgIHByaW50KCJHZW5lcmF0
aW5nIFdlYktpdDEgZG9jdW1lbnRhdGlvbi4uLiIpCi0gICAgICAgICAgICBzYXdfd2Via2l0MV93
YXJuaW5ncyA9IGdlbmVyYXRlX2RvYyhnZW5lcmF0b3IsIGFyZ3VtZW50cy5za2lwX2h0bWwpCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiUmViYXNpbmcgV2ViS2l0MSBkb2N1bWVu
dGF0aW9uLi4uIikKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
cmViYXNlX2luc3RhbGxlZF9kb2NzKCkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0g
ICAgICAgICAgICAgICAgcHJpbnQoIlJlYmFzZSBkaWQgbm90IGhhcHBlbiwgbGlrZWx5IG5vIGRv
Y3VtZW50YXRpb24gaXMgcHJlc2VudC4iKQorICAgIGFyZ3VtZW50cyA9IHBhcnNlci5wYXJzZV9h
cmdzKCkKKyAgICBjb25maWd1cmVfbG9nZ2luZyhhcmd1bWVudHMudmVyYm9zZSkKIAotICAgICMg
V2ViS2l0MiBtaWdodCBub3QgYmUgZW5hYmxlZCwgc28gY2hlY2sgZm9yIHRoZSBwa2ctY29uZmln
IGZpbGUgYmVmb3JlIGJ1aWxkaW5nIGRvY3VtZW50YXRpb24uCi0gICAgcGtnX2NvbmZpZ19wYXRo
ID0gd2syX3BrZ19jb25maWdfcGF0aAotICAgIGlmIG9zLnBhdGguZXhpc3RzKHBrZ19jb25maWdf
cGF0aCk6Ci0gICAgICAgIGdlbmVyYXRvciA9IGd0a2RvYy5Qa2dDb25maWdHVEtEb2MocGtnX2Nv
bmZpZ19wYXRoLCBnZXRfd2Via2l0Ml9vcHRpb25zKGFyZ3VtZW50cy52aXJ0dWFsX3Jvb3QpKQot
ICAgICAgICBpZiBub3QgYXJndW1lbnRzLnJlYmFzZToKLSAgICAgICAgICAgIHByaW50KCJcbkdl
bmVyYXRpbmcgV2ViS2l0MiBkb2N1bWVudGF0aW9uLi4uIikKLSAgICAgICAgICAgIHNhd193ZWJr
aXQyX3dhcm5pbmdzID0gZ2VuZXJhdGVfZG9jKGdlbmVyYXRvciwgYXJndW1lbnRzLnNraXBfaHRt
bCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJcblJlYmFzaW5nIFdlYktpdDIg
ZG9jdW1lbnRhdGlvbi4uLiIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLnJlYmFzZV9pbnN0YWxsZWRfZG9jcygpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0
aW9uOgotICAgICAgICAgICAgICAgIHByaW50KCJSZWJhc2UgZGlkIG5vdCBoYXBwZW4sIGxpa2Vs
eSBubyBkb2N1bWVudGF0aW9uIGlzIHByZXNlbnQuIikKKyAgICBwcmVwYXJlX2Vudmlyb25tZW50
X2Zvcl9ndGtkb2NfZ2VuZXJhdGlvbigpCiAKLSAgICAjIEZvciBDTWFrZSB3ZSBhcmUgc3RpbGwg
Z2VuZXJhdGluZyB3YXJuaW5ncyBiZWNhdXNlIHdlIGxhY2sgRE9NIGJpbmRpbmdzIGRvY3MsCi0g
ICAgIyBzbyBkbyBub3QgY2F1c2UgdGhlIGJ1aWxkIHRvIGZhaWwgZm9yIG5vdy4KKyAgICBzYXdf
d2Via2l0MV93YXJuaW5ncyA9IGdlbmVyYXRlX2RvY3VtZW50YXRpb25fZm9yX2NvbmZpZyhjb21t
b24uYnVpbGRfcGF0aCgnZ3RrZG9jLXdlYmtpdGd0ay5jZmcnKSkKKyAgICBzYXdfd2Via2l0Ml93
YXJuaW5ncyA9IGdlbmVyYXRlX2RvY3VtZW50YXRpb25fZm9yX2NvbmZpZyhjb21tb24uYnVpbGRf
cGF0aCgnZ3RrZG9jLXdlYmtpdDJndGsuY2ZnJykpCiAgICAgaWYgbm90IGNvbW1vbi5pc19jbWFr
ZV9idWlsZCgpOgotICAgICAgICBzeXMuZXhpdChzYXdfd2Via2l0MV93YXJuaW5ncyBvciBzYXdf
d2Via2l0Ml93YXJuaW5ncykKKyAgICAgICAgZ2VuZXJhdGVfZG9jdW1lbnRhdGlvbl9mb3JfY29u
ZmlnKGNvbW1vbi5idWlsZF9wYXRoKCdndGtkb2Mtd2Via2l0ZG9tLmNmZycpKQorCisgICAgc3lz
LmV4aXQoc2F3X3dlYmtpdDFfd2FybmluZ3Mgb3Igc2F3X3dlYmtpdDJfd2FybmluZ3MpCmRpZmYg
LS1naXQgYS9Ub29scy9ndGsvZ3RrZG9jLnB5IGIvVG9vbHMvZ3RrL2d0a2RvYy5weQppbmRleCBk
MWVkOWQ0NDg5OGM4MDg5YTI1NDA2NDM5NzE0YzMzNzQ1ZGRhNjM2Li45NDdjMWU4YzcxZTllOGU4
OTA1MGQ0ODAyZmNjOTcxZjVhYmFmNGNjIDEwMDY0NAotLS0gYS9Ub29scy9ndGsvZ3RrZG9jLnB5
CisrKyBiL1Rvb2xzL2d0ay9ndGtkb2MucHkKQEAgLTM4LDExICszOCwxNCBAQCBjbGFzcyBHVEtE
b2Mob2JqZWN0KToKICAgICBtb2R1bGVfbmFtZSAgICAgICAgLS0gVGhlIG5hbWUgb2YgdGhlIGRv
Y3VtZW50YXRpb24gbW9kdWxlLiBGb3IgbGlicmFyaWVzIHRoaXMKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaXMgdHlwaWNhbGx5IHRoZSBsaWJyYXJ5IG5hbWUuIFJlcXVpcmVkIGlmIG5vdCBs
aWJyYXJ5IHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgZ2l2ZW4uCi0gICAgc291
cmNlX2RpcnMgICAgICAgIC0tIEEgbGlzdCBvZiBwYXRocyB0byB0aGUgc291cmNlIGNvZGUgdG8g
YmUgc2Nhbm5lZC4gUmVxdWlyZWQuCisgICAgc291cmNlX2RpcnMgICAgICAgIC0tIEEgbGlzdCBv
ZiBwYXRocyB0byBkaXJlY3RvcmllcyBvZiBzb3VyY2UgY29kZSB0byBiZSBzY2FubmVkLgorICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZCBpZiBoZWFkZXJzIGlzIG5vdCBzcGVjaWZp
ZWQuCiAgICAgaWdub3JlZF9maWxlcyAgICAgIC0tIEEgbGlzdCBvZiBmaWxlbmFtZXMgdG8gaWdu
b3JlIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5LiBJdCBpcwogICAgICAgICAgICAgICAgICAgICAg
ICAgICBvbmx5IG5lY2Vzc2FyeSB0byBwcm92aWRlIHRoZSBiYXNlbmFtZXMgb2YgdGhlc2UgZmls
ZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSBpdCBpcyBpbXBvcnRhbnQg
dG8gcHJvdmlkZSBhbiB1cGRhdGVkIGxpc3Qgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWdub3JlZCBmaWxlcyB0byBwcmV2ZW50IHdhcm5pbmdzIGFib3V0IHVuZG9jdW1lbnRlZCBzeW1i
b2xzLgorICAgIGhlYWRlcnMgICAgICAgICAgICAtLSBBIGxpc3Qgb2YgcGF0aHMgdG8gaGVhZGVy
cyB0byBiZSBzY2FubmVkLiBSZXF1aXJlZCBpZiBzb3VyY2VfZGlycworICAgICAgICAgICAgICAg
ICAgICAgICAgICBpcyBub3Qgc3BlY2lmaWVkLgogICAgIG5hbWVzcGFjZSAgICAgICAgICAtLSBU
aGUgbGlicmFyeSBuYW1lc3BhY2UuCiAgICAgZGVjb3JhdG9yICAgICAgICAgIC0tIElmIGEgZGVj
b3JhdG9yIGlzIHVzZWQgdG8gdW5oaWRlIGNlcnRhaW4gc3ltYm9scyBpbiBoZWFkZXIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmlsZXMgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgZm9y
IHN1Y2Nlc3NmdWwgc2Nhbm5pbmcuCkBAIC04Nyw2ICs5MCw3IEBAIGNsYXNzIEdUS0RvYyhvYmpl
Y3QpOgogICAgICAgICAjIFBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gc2Nhbm5pbmcuCiAgICAgICAg
IHNlbGYubW9kdWxlX25hbWUgPSAnJwogICAgICAgICBzZWxmLnNvdXJjZV9kaXJzID0gW10KKyAg
ICAgICAgc2VsZi5oZWFkZXJzID0gW10KICAgICAgICAgc2VsZi5pZ25vcmVkX2ZpbGVzID0gW10K
ICAgICAgICAgc2VsZi5uYW1lc3BhY2UgPSAnJwogICAgICAgICBzZWxmLmRlY29yYXRvciA9ICcn
CkBAIC0xMTIsMTggKzExNiwxOCBAQCBjbGFzcyBHVEtEb2Mob2JqZWN0KToKICAgICAgICAgZm9y
IGtleSwgdmFsdWUgaW4gaXRlcihhcmdzLml0ZW1zKCkpOgogICAgICAgICAgICAgc2V0YXR0cihz
ZWxmLCBrZXksIHZhbHVlKQogCi0gICAgICAgIGRlZiByYWlzZV9lcnJvcl9pZl9ub3Rfc3BlY2lm
aWVkKGtleSk6Ci0gICAgICAgICAgICBpZiBub3QgZ2V0YXR0cihzZWxmLCBrZXkpOgotICAgICAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgbm90IHNwZWNpZmllZC4nICUga2V5KQotCi0g
ICAgICAgIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ291dHB1dF9kaXInKQotICAgICAg
ICByYWlzZV9lcnJvcl9pZl9ub3Rfc3BlY2lmaWVkKCdzb3VyY2VfZGlycycpCi0gICAgICAgIHJh
aXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ21vZHVsZV9uYW1lJykKKyAgICAgICAgaWYgbm90
IGdldGF0dHIoc2VsZiwgJ291dHB1dF9kaXInKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignb3V0cHV0X2RpciBub3Qgc3BlY2lmaWVkLicpCisgICAgICAgIGlmIG5vdCBnZXRhdHRyKHNl
bGYsICdtb2R1bGVfbmFtZScpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdtb2R1bGVf
bmFtZSBub3Qgc3BlY2lmaWVkLicpCisgICAgICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYsICdzb3Vy
Y2VfZGlycycpIGFuZCBub3QgZ2V0YXR0cihzZWxmLCAnaGVhZGVycycpOgorICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdOZWl0aGVyIHNvdXJjZV9kaXJzIG5vciBoZWFkZXJzIHNwZWNpZmll
ZC4nICUga2V5KQogCiAgICAgICAgICMgTWFrZSBhbGwgcGF0aHMgYWJzb2x1dGUgaW4gY2FzZSB3
ZSB3ZXJlIHBhc3NlZCByZWxhdGl2ZSBwYXRocywgc2luY2UKICAgICAgICAgIyB3ZSBjaGFuZ2Ug
dGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgd2hlbiBleGVjdXRpbmcgc3ViY29tbWFuZHMu
CiAgICAgICAgIHNlbGYub3V0cHV0X2RpciA9IG9zLnBhdGguYWJzcGF0aChzZWxmLm91dHB1dF9k
aXIpCiAgICAgICAgIHNlbGYuc291cmNlX2RpcnMgPSBbb3MucGF0aC5hYnNwYXRoKHgpIGZvciB4
IGluIHNlbGYuc291cmNlX2RpcnNdCisgICAgICAgIHNlbGYuaGVhZGVycyA9IFtvcy5wYXRoLmFi
c3BhdGgoeCkgZm9yIHggaW4gc2VsZi5oZWFkZXJzXQogICAgICAgICBpZiBzZWxmLmxpYnJhcnlf
cGF0aDoKICAgICAgICAgICAgIHNlbGYubGlicmFyeV9wYXRoID0gb3MucGF0aC5hYnNwYXRoKHNl
bGYubGlicmFyeV9wYXRoKQogCkBAIC0yNzQsOCArMjc4LDkgQEAgY2xhc3MgR1RLRG9jKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgJy0tbW9kdWxlPSVzJyAlIHNlbGYubW9kdWxlX25hbWUsCiAg
ICAgICAgICAgICAgICAgJy0tcmVidWlsZC10eXBlcyddCiAKLSAgICAgICAgIyBFYWNoIHNvdXJj
ZSBkaXJlY3Rvcnkgc2hvdWxkIGJlIGhhdmUgaXRzIG93biAiLS1zb3VyY2UtZGlyPSIgcHJlZml4
LgotICAgICAgICBhcmdzLmV4dGVuZChbJy0tc291cmNlLWRpcj0lcycgJSBwYXRoIGZvciBwYXRo
IGluIHNlbGYuc291cmNlX2RpcnNdKQorICAgICAgICBpZiBub3Qgc2VsZi5oZWFkZXJzOgorICAg
ICAgICAgICAgIyBFYWNoIHNvdXJjZSBkaXJlY3Rvcnkgc2hvdWxkIGJlIGhhdmUgaXRzIG93biAi
LS1zb3VyY2UtZGlyPSIgcHJlZml4LgorICAgICAgICAgICAgYXJncy5leHRlbmQoWyctLXNvdXJj
ZS1kaXI9JXMnICUgcGF0aCBmb3IgcGF0aCBpbiBzZWxmLnNvdXJjZV9kaXJzXSkKIAogICAgICAg
ICBpZiBzZWxmLmRlY29yYXRvcjoKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWlnbm9yZS1k
ZWNvcmF0b3JzPSVzJyAlIHNlbGYuZGVjb3JhdG9yKQpAQCAtMjg0LDEyICsyODksMTcgQEAgY2xh
c3MgR1RLRG9jKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYub3V0cHV0X2RpcjoKICAgICAgICAg
ICAgIGFyZ3MuYXBwZW5kKCctLW91dHB1dC1kaXI9JXMnICUgc2VsZi5vdXRwdXRfZGlyKQogCi0g
ICAgICAgICMgZ3RrZG9jLXNjYW4gd2FudHMgdGhlIGJhc2VuYW1lcyBvZiBpZ25vcmVkIGhlYWRl
cnMsIHNvIHN0cmlwIHRoZQotICAgICAgICAjIGRpcm5hbWUuIERpZmZlcmVudCBmcm9tICItLXNv
dXJjZS1kaXIiLCB0aGUgaGVhZGVycyBzaG91bGQgYmUKLSAgICAgICAgIyBzcGVjaWZpZWQgYXMg
b25lIGxvbmcgc3RyaW5nLgotICAgICAgICBpZ25vcmVkX2ZpbGVzX2Jhc2VuYW1lcyA9IHNlbGYu
X2lnbm9yZWRfZmlsZXNfYmFzZW5hbWVzKCkKLSAgICAgICAgaWYgaWdub3JlZF9maWxlc19iYXNl
bmFtZXM6Ci0gICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1pZ25vcmUtaGVhZGVycz0lcycgJSBp
Z25vcmVkX2ZpbGVzX2Jhc2VuYW1lcykKKyAgICAgICAgIyBXZSBvbmx5IG5lZWQgdG8gcGFzcyB0
aGUgbGlzdCBvZiBpZ25vcmVkIGZpbGVzIGlmIHRoZSB3ZSBhcmUgbm90IHVzaW5nIGFuIGV4cGxp
Y2l0IGxpc3Qgb2YgaGVhZGVycy4KKyAgICAgICAgaWYgbm90IHNlbGYuaGVhZGVyczoKKyAgICAg
ICAgICAgICMgZ3RrZG9jLXNjYW4gd2FudHMgdGhlIGJhc2VuYW1lcyBvZiBpZ25vcmVkIGhlYWRl
cnMsIHNvIHN0cmlwIHRoZQorICAgICAgICAgICAgIyBkaXJuYW1lLiBEaWZmZXJlbnQgZnJvbSAi
LS1zb3VyY2UtZGlyIiwgdGhlIGhlYWRlcnMgc2hvdWxkIGJlCisgICAgICAgICAgICAjIHNwZWNp
ZmllZCBhcyBvbmUgbG9uZyBzdHJpbmcuCisgICAgICAgICAgICBpZ25vcmVkX2ZpbGVzX2Jhc2Vu
YW1lcyA9IHNlbGYuX2lnbm9yZWRfZmlsZXNfYmFzZW5hbWVzKCkKKyAgICAgICAgICAgIGlmIGln
bm9yZWRfZmlsZXNfYmFzZW5hbWVzOgorICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWln
bm9yZS1oZWFkZXJzPSVzJyAlIGlnbm9yZWRfZmlsZXNfYmFzZW5hbWVzKQorCisgICAgICAgIGlm
IHNlbGYuaGVhZGVyczoKKyAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKHNlbGYuaGVhZGVycykKIAog
ICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzKQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cg
Yi9DaGFuZ2VMb2cKaW5kZXggZWI2ZWQ5NGY5OTM5MTk0NzhhNzJhZTRhZGNmNDVmMjM0ZDE3MDVh
Yi4uYTRmZWNhYTUwYjIyYTczYjMwYWY1NjJmMGM2MWFlNGEyNmE3MDE1ZiAxMDA2NDQKLS0tIGEv
Q2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE0LTAyLTIwICBN
YXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBn
ZW5lcmF0ZS1ndGtkb2Mgc2hvdWxkIG5vdCBnZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZvciBzb3Vy
Y2UgZmlsZXMgZm9yIHVuYnVpbHQgc291cmNlIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg0MTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtl
OiBEZWZpbmUgdGhlIHBhdGhzIHRvIHRoZSBwa2djb25maWcgZmlsZXMgaGVyZSwgc28gdGhhdCB0
aGV5CisgICAgICAgIG1heSBvbmUgZGF5IGJlIHVzZWQgaW4gdGhlIHdlYmtpdGRvbSBjb25maWcg
ZmlsZSBnZW5lcmF0aW9uLgorCiAyMDE0LTAyLTE4ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5r
aW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bQ01ha2VdIEZpeCBqYXZhc2NyaXB0Y29y
ZSB0ZXN0IGZhaWxpbmdzIGJ5IHRoZSBqc0NTdGFjayBicmFuY2ggbWVyZ2UKZGlmZiAtLWdpdCBh
L0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggMDhjOTExNTQyNjA1MDBkZTNm
ZjA0YjAyMGNlMGQ2MGY5OGU4Y2ZlOC4uYWFmMjc5NzZhZGQ0Y2U0N2U2YTA3ZWE1YzFkYTQ5ZmFj
NmU5YTFlOSAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0K
QEAgLTEzMyw2ICsxMzMsMTUgQEAgZ2lyZGlyIDo9ICQoZGF0YWRpcikvZ2lyLTEuMAogdHlwZWxp
YnNkaXIgOj0gJChsaWJkaXIpL2dpcmVwb3NpdG9yeS0xLjAKIGVuZGlmCiAKK3dlYmtpdDFfcGtn
X2NvbmZpZ19maWxlID0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0Z3RrLUBXRUJLSVRHVEtfQVBJ
X01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALnBjCit3ZWJraXQy
X3BrZ19jb25maWdfZmlsZSA9IFNvdXJjZS9XZWJLaXQyL3dlYmtpdDJndGstQFdFQktJVEdUS19B
UElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAucGMKKworaWYg
RU5BQkxFX1dFQktJVDIKK3dlYmtpdGRvbV9wa2djb25maWdfZmlsZSA9ICQod2Via2l0Ml9wa2df
Y29uZmlnX2ZpbGUpCitlbHNlCit3ZWJraXRkb21fcGtnY29uZmlnX2ZpbGUgPSAkKHdlYmtpdDFf
cGtnX2NvbmZpZ19maWxlKQorZW5kaWYKKwogIyBXZSBkbyBub3QgY2FyZSBhdCBhbGwgYWJvdXQg
dGhpcyBpbXBsaWNpdCBidWlsdC1pbiBtYWtlIHJ1bGVzLAogIyBkaXNhYmxlIHRoZW0gdG8gc2F2
ZSBzb21lIGJ1aWxkIHRpbWUKICU6ICUuYwpAQCAtMjkxLDQgKzMwMCw0IEBAIGVuZGlmCiAJQG1r
ZGlyIC1wICQoZGlzdGRpcikvRG9jdW1lbnRhdGlvbi93ZWJraXRkb21ndGsvaHRtbAogCUBta2Rp
ciAtcCAkKGRpc3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0ZG9tZ3RrL3RtcGwKIAlALWNwIC4v
RG9jdW1lbnRhdGlvbi93ZWJraXRkb21ndGsvdG1wbC8qLnNnbWwgJChkaXN0ZGlyKS9Eb2N1bWVu
dGF0aW9uL3dlYmtpdGRvbWd0ay90bXBsCi0JQGNwIC4vRG9jdW1lbnRhdGlvbi93ZWJraXRkb21n
dGsvaHRtbC8qICQoZGlzdGRpcikvRG9jdW1lbnRhdGlvbi93ZWJraXRkb21ndGsvaHRtbApcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKwlAY3AgLi9Eb2N1bWVudGF0aW9uL3dlYmtpdGRvbWd0
ay9odG1sLyogJChkaXN0ZGlyKS9Eb2N1bWVudGF0aW9uL3dlYmtpdGRvbWd0ay9odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225166</attachid>
            <date>2014-02-25 11:34:27 -0800</date>
            <delta_ts>2014-03-01 22:55:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128417-20140225113425.patch</filename>
            <type>text/plain</type>
            <size>40055</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTA2YmY1NDY5YWUyMjBh
OGY1ZDIxN2U1NzZkZTY2ZDdhYTA1YzNlNi4uNjQ1YzMwMDE2YjI2MmJkYjUyMjQ0NGZjNzc3ZDU1
ZTZmOWJkMTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE0LTAyLTI0ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBnZW5l
cmF0ZS1ndGtkb2Mgc2hvdWxkIG5vdCBnZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZvciBzb3VyY2Ug
ZmlsZXMgZm9yIHVuYnVpbHQgc291cmNlIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg0MTcKKworICAgICAgICBSZXZpZXdlZCBieSBDYXJs
b3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZp
bGUuYW06IEdlbmVyYXRlIGEgY29uZmlnIGZpbGUgZm9yIHdlYmtpdGRvbSBkb2N1bWVudGF0aW9u
IGdlbmVyYXRpb24uCisKIDIwMTQtMDItMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIE5lZWQgdG8gaW5pdGlhbGl6ZSBWTSBzdGFjayBkYXRhIGV2ZW4gd2hlbiB0
aGUgVk0gaXMgb24gYW4gZXhjbHVzaXZlIHRocmVhZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjBkNjMxMTczNzQ5
YTJhOTU3MTA5ZDcwNDNlNjgyZGRiN2RmMTRhMy4uNjU4M2ZhODNjM2IwZDkwNTg0ZWVkMDUxM2Qy
M2FmYThkZWU3MDEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0wMi0yNCAgTWFy
dGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gZ2Vu
ZXJhdGUtZ3RrZG9jIHNob3VsZCBub3QgZ2VuZXJhdGUgZG9jdW1lbnRhdGlvbiBmb3Igc291cmNl
IGZpbGVzIGZvciB1bmJ1aWx0IHNvdXJjZSBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogQ29ycmVj
dCB0aGUgZGVmaW5pdGlvbiBvZiBXZWJLaXRHVEtfRU5VTV9HRU5FUkFUSU9OX0hFQURFUlMgYW5k
IGdlbmVyYXRlCisgICAgICAgIGEgZ3RrZG9jLXdlYmtpdGd0ay5jZmcgZmlsZSB0byBiZSB1c2Vk
IGJ5IGdlbmVyYXRlLWd0a2RvYy4KKwogMjAxNC0wMi0yNCAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBXZWJWaWV3R3JvdXAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCAwYzhkYmJmMjI0YTMxYjgyNGMwZTY2NGY5MzViMmUzY2M5NTJkMmY5Li4yMWI5MGEy
ZjliMmVmODEyZjI3MWY5NzNiY2ExODczZTY3ZDI2NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTQtMDItMjQgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdIGdlbmVyYXRlLWd0a2RvYyBzaG91bGQgbm90IGdlbmVy
YXRlIGRvY3VtZW50YXRpb24gZm9yIHNvdXJjZSBmaWxlcyBmb3IgdW5idWlsdCBzb3VyY2UgZmls
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODQx
NworCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgorCisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06IEdlbmVyYXRlIGEgY29uZmlnIGZpbGUgZm9yIGdlbmVyYXRlLWd0
a2RvYy4KKwogMjAxNC0wMi0yNCAgRW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE2NDQzOCk6IFtHVEtdIFRlc3RzIC9X
ZWJLaXRHdGsvdGVzdGNvbnRleHRtZW51LCAvV2ViS2l0R3RrL3Rlc3RtaW1laGFuZGxpbmcsIC9X
ZWJLaXRHdGsvdGVzdGxvYWRpbmcgYXNzZXJ0IGluIERlYnVnIGJ1aWxkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
YzBiMDMzMjMyMDIzMmVkMTU1YTU3NGZhNTJhMTRlMDIwNTcwNDQ2Mi4uNTAzMDkyNzVjM2Y1NzNk
ZTdlNGVhOTZkMzBlMmU0ZjE3YzQxMTJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDE0LTAyLTI0ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1RLXSBnZW5lcmF0ZS1ndGtkb2Mgc2hvdWxkIG5vdCBnZW5lcmF0ZSBkb2N1bWVudGF0
aW9uIGZvciBzb3VyY2UgZmlsZXMgZm9yIHVuYnVpbHQgc291cmNlIGZpbGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg0MTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOiBHZW5lcmF0ZSBhIGNvbmZpZyBmaWxlIGZvciBnZW5lcmF0ZS1ndGtkb2MuCisgICAgICAg
ICogUGxhdGZvcm1HVEsuY21ha2U6IERpdHRvLgorCiAyMDE0LTAyLTI0ICBEYW4gQmVybnN0ZWlu
ICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgMzItYml0IGJ1aWxkIGZpeC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCmluZGV4IDNkOGJiNmU4
NmM1MjM5MDExMjY2NWYxY2JkODc2OWRkYzE3MjczNGEuLmExNzQxNmFhMzJmOGMzZjllODI3Yzhk
NDZiZGEzMTBmZjA0ZmY4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9HTlVtYWtlZmlsZS5hbQpAQCAtNTc1LDEyICs1NzUsMTUgQEAgbGliR09iamVjdERPTUJpbmRp
bmdzX2xhX0NGTEFHUyA9IFwKIAktZnZpc2liaWxpdHk9aGlkZGVuIFwKIAkkKGdsb2JhbF9jZmxh
Z3MpCiAKK3dlYmtpdGd0a19nZG9tX2luY2x1ZGVfZGlycyA9IFwKKwktSSQoV2ViQ29yZSkvYmlu
ZGluZ3MgXAorCS1JJChXZWJDb3JlKS9iaW5kaW5ncy9nb2JqZWN0IFwKKwktSSQoR0VOU09VUkNF
U19XRUJLSVRET00pCisKIGxpYkdPYmplY3RET01CaW5kaW5nc19sYV9DUFBGTEFHUyA9IFwKIAkt
REJVSUxESU5HX1dlYkNvcmUgXAogCS1EQlVJTERJTkdfV0VCS0lUIFwKLQktSSQoV2ViQ29yZSkv
YmluZGluZ3MgXAotCS1JJChXZWJDb3JlKS9iaW5kaW5ncy9nb2JqZWN0IFwKLQktSSQoR0VOU09V
UkNFU19XRUJLSVRET00pIFwKKwkkKHdlYmtpdGd0a19nZG9tX2luY2x1ZGVfZGlycykgXAogCSQo
Z2xvYmFsX2NwcGZsYWdzKSBcCiAJJChwbGF0Zm9ybV9jcHBmbGFncykgXAogCSQocGxhdGZvcm1n
dGtfY3BwZmxhZ3MpIFwKQEAgLTU5MSwzICs1OTQsMTMgQEAgbGliR09iamVjdERPTUJpbmRpbmdz
X2xhX0NQUEZMQUdTID0gXAogCSQoRlJFRVRZUEVfQ0ZMQUdTKSBcCiAJJChHTElCX0NGTEFHUykg
XAogCSQoTElCU09VUF9DRkxBR1MpCisKK2d0a2RvYy13ZWJraXRkb20uY2ZnOiAkKFdlYkNvcmUp
L2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0gJChzcmNkaXIpL1Rvb2xzL2d0ay9HTlVt
YWtlZmlsZS5hbQorCSQoQU1fVl9HRU4pZWNobyAiW3dlYmtpdGRvbWd0a10iID4gJEAgJiYgXAor
CWVjaG8gInBrZ2NvbmZpZ19maWxlPSQod2Via2l0ZG9tX3BrZ2NvbmZpZ19maWxlKSIgPj4gJEAg
JiYgXAorCWVjaG8gIm5hbWVzcGFjZT13ZWJraXRfZG9tIiA+PiAkQCAmJiBcCisJZWNobyAiZG9j
X2Rpcj1EZXJpdmVkU291cmNlcy93ZWJraXRkb20vZG9jcyIgPj4gJEAgJiYgXAorCWVjaG8gLWUg
ImNmbGFncz0tSSQoc3JjZGlyKS9Tb3VyY2UgJCh3ZWJraXRndGtfZ2RvbV9pbmNsdWRlX2RpcnMp
IiA+PiAkQCAmJiBcCisJZWNobyAic291cmNlX2RpcnM9JCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRT
b3VyY2VzL3dlYmtpdGRvbSAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dCIgPj4gJEAgJiYgXAorCWVjaG8gImhlYWRlcnM9JCh3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2Fw
aSkgRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTURlcHJlY2F0ZWQuaCIgPj4gJEAK
K0JVSUxUX1NPVVJDRVMgKz0gZ3RrZG9jLXdlYmtpdGRvbS5jZmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNt
YWtlCmluZGV4IDYyODAxMjg1OGY0NDkzMGVjNDJiNGUwOWI2NTJlZDc5MzMwZjk4MTQuLmQyMGJk
ZGFmZjBkOWNhN2QxYmRhMTRkZDM1NmUyMTBmYmIwYzJhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5j
bWFrZQpAQCAtMSw3ICsxLDcgQEAKIGZpbGUoTUFLRV9ESVJFQ1RPUlkgJHtERVJJVkVEX1NPVVJD
RVNfV0VCS0lUR1RLX0RJUn0pCiBmaWxlKE1BS0VfRElSRUNUT1JZICR7REVSSVZFRF9TT1VSQ0VT
X1dFQktJVEdUS19BUElfRElSfSkKIGNvbmZpZ3VyZV9maWxlKGd0ay93ZWJraXQvd2Via2l0dmVy
c2lvbi5oLmluICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVEdUS19BUElfRElSfS93ZWJraXR2ZXJz
aW9uLmgpCi1jb25maWd1cmVfZmlsZShndGsvd2Via2l0LnBjLmluICR7Q01BS0VfQklOQVJZX0RJ
Un0vU291cmNlL1dlYktpdC9ndGsvd2Via2l0Z3RrLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5w
YyBAT05MWSkKK2NvbmZpZ3VyZV9maWxlKGd0ay93ZWJraXQucGMuaW4gJHtXZWJLaXRfUEtHQ09O
RklHX0ZJTEV9IEBPTkxZKQogCiBhZGRfZGVmaW5pdGlvbnMoLURQQUNLQUdFX0xPQ0FMRV9ESVI9
IiR7Q01BS0VfSU5TVEFMTF9GVUxMX0xPQ0FMRURJUn0iKQogCkBAIC0xNTUsNyArMTU1LDcgQEAg
YWRkX2N1c3RvbV9jb21tYW5kKAogCiAjIFRvIGdlbmVyYXRlIHdlYmtpdGVudW10eXBlcy5oIHdl
IHdhbnQgdG8gdXNlIGFsbCBpbnN0YWxsZWQgaGVhZGVycywgZXhjZXB0IHdlYmtpdGVudW10eXBl
cy5oIGl0c2VsZi4KIHNldChXZWJLaXRHVEtfRU5VTV9HRU5FUkFUSU9OX0hFQURFUlMgJHtXZWJL
aXRHVEtfSU5TVEFMTEVEX0hFQURFUlN9KQotbGlzdChSRU1PVkVfSVRFTSBXZWJLaXRHVEtfRU5V
TV9HRU5FUkFUSU9OX0hFQURFUlMgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19BUElfRElS
fS93ZWJraXRlbnVtdHlwZXMuaCkKK2xpc3QoUkVNT1ZFX0lURU0gV2ViS2l0R1RLX0VOVU1fR0VO
RVJBVElPTl9IRUFERVJTICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVEdUS19BUElfRElSfS93ZWJr
aXRlbnVtdHlwZXMuaCkKIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBPVVRQVVQgJHtERVJJVkVE
X1NPVVJDRVNfV0VCS0lUR1RLX0FQSV9ESVJ9L3dlYmtpdGVudW10eXBlcy5oCiAgICAgICAgICAg
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVEdUS19BUElfRElSfS93ZWJraXRlbnVtdHlwZXMuY3Bw
CkBAIC0yMjgsMyArMjI4LDE3IEBAIGluc3RhbGwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9X
ZWJLaXQtJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgogaW5zdGFsbChGSUxFUyAke0NNQUtF
X0JJTkFSWV9ESVJ9L1dlYktpdC0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0udHlwZWxpYgogICAg
ICAgICBERVNUSU5BVElPTiAke0lOVFJPU1BFQ1RJT05fSU5TVEFMTF9UWVBFTElCRElSfQogKQor
CitmaWxlKFdSSVRFICR7Q01BS0VfQklOQVJZX0RJUn0vZ3RrZG9jLXdlYmtpdGd0ay5jZmcKKyAg
ICAiW3dlYmtpdGd0a11cbiIKKyAgICAicGtnY29uZmlnX2ZpbGU9JHtXZWJLaXRfUEtHQ09ORklH
X0ZJTEV9XG4iCisgICAgIm5hbWVzcGFjZT13ZWJraXRcbiIKKyAgICAiY2ZsYWdzPS1JJHtERVJJ
VkVEX1NPVVJDRVNfRElSfVxuIgorICAgICIgICAgICAgLUkke0NNQUtFX1NPVVJDRV9ESVJ9XG4i
CisgICAgIiAgICAgICAtSSR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlXG4iCisgICAgIiAgICAg
ICAtSSR7Q01BS0VfU09VUkNFX0RJUn0vSmF2YVNjcmlwdENvcmUvRm9yd2FyZGluZ0hlYWRlcnNc
biIKKyAgICAiZG9jX2Rpcj0ke1dFQktJVF9ESVJ9L2d0ay9kb2NzXG4iCisgICAgInNvdXJjZV9k
aXJzPSR7V0VCS0lUX0RJUn0vZ3RrL3dlYmtpdFxuIgorICAgICIgICAgICAgICAgICAke0RFUklW
RURfU09VUkNFU19XRUJLSVRHVEtfQVBJX0RJUn1cbiIKKyAgICAiaGVhZGVycz0ke1dlYktpdEdU
S19FTlVNX0dFTkVSQVRJT05fSEVBREVSU31cbiIKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0K
aW5kZXggZDUzZjFiMGMwZjg1NDcyMTgwNmQ2NmJhMmEwZTE5YWMyYjM1ZjE2MS4uYTk5MDBiOGYy
MWZmOWI0ZjMzMmZhNGVmNzQ1MjgyOGEyZTNlY2Y1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUu
YW0KQEAgLTM3Niw2ICszNzYsMTkgQEAgJChHRU5TT1VSQ0VTX1dFQktJVCkvd2Via2l0ZW51bXR5
cGVzLmNwcDogJCh3ZWJraXRndGtfaF9hcGkpICQoV2ViS2l0KS9HTlVtYWtlZmkKIAkmJiBjcCB4
Z2VuLWd0YyAkQCBcCiAJJiYgcm0gLWYgeGdlbi1ndGMKIAoraWYgRU5BQkxFX1dFQktJVDEKK2d0
a2RvYy13ZWJraXRndGsuY2ZnOiAkKFdlYktpdCkvR05VbWFrZWZpbGUuYW0gJChzcmNkaXIpL1Rv
b2xzL2d0ay9HTlVtYWtlZmlsZS5hbQorCSQoQU1fVl9HRU4pZWNobyAiW3dlYmtpdGd0a10iID4g
JEAgJiYgXAorCWVjaG8gInBrZ2NvbmZpZ19maWxlPSQod2Via2l0MV9wa2dfY29uZmlnX2ZpbGUp
IiA+PiAkQCAmJiBcCisJZWNobyAibmFtZXNwYWNlPXdlYmtpdCIgPj4gJEAgJiYgXAorCWVjaG8g
LWUgImNmbGFncz0kKGxpYndlYmtpdGd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9A
V0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFBGTEFHUykiID4+ICRAICYmIFwKKwll
Y2hvICJkb2NfZGlyPSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzIiA+PiAkQCAmJiBc
CisJZWNobyAtZSAic291cmNlX2RpcnM9JChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dFxuIFwKKyAgICAgICAgICAgU291cmNlL1dlYktpdC9ndGsvd2Via2l0IiA+PiAkQCAmJiBcCisJ
ZWNobyAtZSAiaGVhZGVycz0kKHdlYmtpdGd0a19zdGF0aWNfaF9hcGkpIFNvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR2ZXJzaW9uLmgiID4+ICRACitCVUlMVF9TT1VSQ0VTICs9IGd0a2Rv
Yy13ZWJraXRndGsuY2ZnCitlbmRpZgorCiBFWFRSQV9ESVNUICs9IFwKIAkkKFdlYktpdCkvQ2hh
bmdlTG9nIFwKIAkkKFdlYktpdCkvTkVXUyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGJmYWFm
ZmUwNWM2MjlhODQ5ZWU5YzQyMDU5YzQ1MmU5MmVjYzUwYjcuLjY4ZjcxOTY5NDUwNjVhMzZkNGZj
YmFmZTUxNGU4YTczYjY4MzQ2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC04MDMsNiArODAz
LDI3IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3NfQ1hYRkxBR1MgPSBcCiAJLWZ2aXNp
YmlsaXR5LWlubGluZXMtaGlkZGVuIFwKIAkkKGdsb2JhbF9jeHhmbGFncykKIAoraWYgRU5BQkxF
X1dFQktJVDIKKyMgSXQgd291bGQgYmUgbmljZSB0byB1c2UgdGhlIENQUEZMQUdTIGZyb20gdGhl
IFdlYktpdDIgbGlicmFyeSBoZXJlLCBidXQgdGhlIHByZWZpeAorIyBoZWFkZXIgZG9lc24ndCBz
ZWVtIHRvIHBsYXkgbmljZWx5IHdpdGggdGhlIGd0a2RvYyB0b29scy4KK2d0a2RvYy13ZWJraXQy
Z3RrLmNmZzogJChXZWJLaXQyKS9HTlVtYWtlZmlsZS5hbSAkKFdlYktpdDIpL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKwkkKEFNX1ZfR0VOKWVjaG8gIlt3ZWJraXQyZ3RrXSIgPiAkQCAmJiBcCisJZWNo
byAicGtnY29uZmlnX2ZpbGU9JCh3ZWJraXQyX3BrZ19jb25maWdfZmlsZSkiID4+ICRAICYmIFwK
KwllY2hvICJuYW1lc3BhY2U9d2Via2l0IiA+PiAkQCAmJiBcCisJZWNobyAtZSAiY2ZsYWdzPS1J
JChzcmNkaXIpL1NvdXJjZVxuIFwKKyAgICAgICAtSSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9n
dGtcbiBcCisgICAgICAgLUlEZXJpdmVkU291cmNlcy93ZWJraXQyZ3RrL2luY2x1ZGVcbiBcCisg
ICAgICAgLUlEZXJpdmVkU291cmNlcy9XZWJLaXQyL3dlYmtpdDJndGtcbiIgPj4gJEAgJiYgXAor
CWVjaG8gImRvY19kaXI9JChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzIiA+PiAkQCAm
JiBcCisJZWNobyAtZSAic291cmNlX2RpcnM9JChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0a1xu
IFwKKyAgICAgICAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGtcbiBcCisgICAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYktpdDIvd2Via2l0Mmd0ay93ZWJr
aXQyXG4iID4+ICRAICYmIFwKKwllY2hvIC1lICJoZWFkZXJzPSQod2Via2l0Mmd0a191aV9oX2Fw
aSlcbiBcCisgICAgICAgICAkKHdlYmtpdDJndGtfd2ViX2V4dGVuc2lvbl9oX2FwaSlcbiBcCisg
ICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJLaXQyL3dlYmtpdDJndGsvd2Via2l0Mi9XZWJLaXRW
ZXJzaW9uLmgiID4+ICRACitCVUlMVF9TT1VSQ0VTICs9IGd0a2RvYy13ZWJraXQyZ3RrLmNmZwor
ZW5kaWYKKwogRVhUUkFfRElTVCArPSBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpp
bmRleCA5NjBiMzVmYTBiNjVjZTgxNjU1Njc3NjRjZTBmMjRiZmNkMmQzYWYyLi44YjE3MTE5YWNh
NTc5NGYzMGZjZDJlZTFlMzc1YmViN2E2NzYwYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtNCw3ICs0LDcgQEAgZmlsZShNQUtFX0RJUkVDVE9SWSAke0ZPUldBUkRJTkdfSEVBREVS
U19XRUJLSVQyR1RLX0RJUn0pCiBmaWxlKE1BS0VfRElSRUNUT1JZICR7Rk9SV0FSRElOR19IRUFE
RVJTX1dFQktJVDJHVEtfRVhURU5TSU9OX0RJUn0pCiAKIGNvbmZpZ3VyZV9maWxlKFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFZlcnNpb24uaC5pbiAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RL
X0FQSV9ESVJ9L1dlYktpdFZlcnNpb24uaCkKLWNvbmZpZ3VyZV9maWxlKHdlYmtpdDJndGsucGMu
aW4gJHtDTUFLRV9CSU5BUllfRElSfS9Tb3VyY2UvV2ViS2l0Mi93ZWJraXQyZ3RrLSR7V0VCS0lU
R1RLX0FQSV9WRVJTSU9OfS5wYyBAT05MWSkKK2NvbmZpZ3VyZV9maWxlKHdlYmtpdDJndGsucGMu
aW4gJHtXZWJLaXQyX1BLR0NPTkZJR19GSUxFfSBAT05MWSkKIAogYWRkX2RlZmluaXRpb25zKC1E
V0VCS0lUMl9DT01QSUxBVElPTikKIGFkZF9kZWZpbml0aW9ucygtRExJQkVYRUNESVI9IiR7Q01B
S0VfSU5TVEFMTF9GVUxMX0xJQkVYRUNESVJ9IikKQEAgLTc5MCwzICs3OTAsMTggQEAgaW5zdGFs
bChGSUxFUyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJ
T059LnR5cGVsaWIKICAgICAgICAgICAgICAgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyV2Vi
RXh0ZW5zaW9uLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS50eXBlbGliCiAgICAgICAgIERFU1RJ
TkFUSU9OICR7SU5UUk9TUEVDVElPTl9JTlNUQUxMX1RZUEVMSUJESVJ9CiApCisKK2ZpbGUoV1JJ
VEUgJHtDTUFLRV9CSU5BUllfRElSfS9ndGtkb2Mtd2Via2l0Mmd0ay5jZmcKKyAgICAiW3dlYmtp
dDJndGtdXG4iCisgICAgInBrZ2NvbmZpZ19maWxlPSR7V2ViS2l0Ml9QS0dDT05GSUdfRklMRX1c
biIKKyAgICAibmFtZXNwYWNlPXdlYmtpdFxuIgorICAgICJjZmxhZ3M9LUkke0NNQUtFX1NPVVJD
RV9ESVJ9L1NvdXJjZVxuIgorICAgICIgICAgICAgLUkke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0a1xuIgorICAgICIgICAgICAgLUkke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJ
Un1cbiIKKyAgICAiICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNfV0VCS0lUMkdUS19ESVJ9
XG4iCisgICAgImRvY19kaXI9JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvZG9jc1xu
IgorICAgICJzb3VyY2VfZGlycz0ke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0a1xuIgor
ICAgICIgICAgICAgICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGtcbiIKKyAgICAiICAgICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdU
S19BUElfRElSfVxuIgorICAgICJoZWFkZXJzPSR7V2ViS2l0MkdUS19FTlVNX0dFTkVSQVRJT05f
SEVBREVSU30gJHtXZWJLaXQyV2ViRXh0ZW5zaW9uX0lOU1RBTExFRF9IRUFERVJTfVxuIgorKQpk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZQppbmRleCA4YmMxOWM0ZGM1NjY0NzY5NDU4M2UwMjA4MjY4NTViMTU3
ZTlkMGNmLi5hNWZlNWM5YzY3ZGQyZDRlYjQ4OTUzMDkyYjVmOTI2NzhhNmE1OTcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc0dUSy5jbWFrZQpAQCAtMjY0LDYgKzI2NCwxMCBAQCBzZXQoREVSSVZFRF9TT1VSQ0VTX1dF
QktJVDJHVEtfQVBJX0RJUiAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0vd2Via2l0
Mgogc2V0KEZPUldBUkRJTkdfSEVBREVSU19ESVIgJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3
YXJkaW5nSGVhZGVycykKIHNldChGT1JXQVJESU5HX0hFQURFUlNfV0VCS0lUMkdUS19ESVIgJHtG
T1JXQVJESU5HX0hFQURFUlNfRElSfS93ZWJraXQyZ3RrKQogc2V0KEZPUldBUkRJTkdfSEVBREVS
U19XRUJLSVQyR1RLX0VYVEVOU0lPTl9ESVIgJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfS93ZWJr
aXQyZ3RrLXdlYmV4dGVuc2lvbikKKworc2V0KFdlYktpdF9QS0dDT05GSUdfRklMRSAke0NNQUtF
X0JJTkFSWV9ESVJ9L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdGd0ay0ke1dFQktJVEdUS19BUElf
VkVSU0lPTn0ucGMpCitzZXQoV2ViS2l0Ml9QS0dDT05GSUdfRklMRSAke0NNQUtFX0JJTkFSWV9E
SVJ9L1NvdXJjZS9XZWJLaXQyL3dlYmtpdDJndGstJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LnBj
KQorCiBzZXQoU0hPVUxEX0lOU1RBTExfSlNfU0hFTEwgT04pCiAKICMgUHVzaCBvZiByYnAgaXMg
bmVlZGVkIGFmdGVyIEpTQyBKSVQgdXNlcyBDU3RhY2suIFNlZSBodHRwOi8vd2tidWcuY29tLzEy
Nzc3Ny4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA2YjgwYmExYmI2MTk1YjUxOGJlMDdiOTkyMDEwZDRhNmQ0ZDY1MWJjLi5kYTE0ZDhkZTNmM2Y0
ZjM5OGMyYTUxNDQ3NWVmZTE2ZGNmZTBkMGFkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTQtMDItMjQgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIGdlbmVy
YXRlLWd0a2RvYyBzaG91bGQgbm90IGdlbmVyYXRlIGRvY3VtZW50YXRpb24gZm9yIHNvdXJjZSBm
aWxlcyBmb3IgdW5idWlsdCBzb3VyY2UgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODQxNworCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxv
cyBHYXJjaWEgQ2FtcG9zLgorCisgICAgICAgICogZ3RrL0dOVW1ha2VmaWxlLmFtOiBNYWtlIHRo
ZSBkb2N1bWVudGF0aW9uIHByb2Nlc3MgZGVwZW5kIG9uIHRoZSBjb25maWd1cmF0aW9uIGZpbGVz
LgorICAgICAgICAqIGd0ay9nZW5lcmF0ZS1ndGtkb2M6IFN3aXRjaCBmcm9tIHVzaW5nIGhhcmQt
Y29kZWQgY29uZmlndXJhdGlvbnMgdG8gcmVhZGluZyB0aGVtIGZyb20KKyAgICAgICAgYSBtYWtl
ZmlsZS4gVGhpcyBhbGxvd3MgYWNjZXB0aW5nIGEgaGVhZGVyIGxpc3QgZnJvbSB0aGUgYnVpbGQg
c3lzdGVtLCB3aGljaCBjYW4gYmUgdXNlZAorICAgICAgICB0byBkeW5hbWljYWxseSBidWlsZCBh
IGxpc3Qgb2YgaWdub3JlZCBmaWxlcy4gV2UgY2FuIGlnbm9yZSBhbnkgc291cmNlIGZpbGUgdGhh
dCBkb2Vzbid0CisgICAgICAgIGhhdmUgYSBjb3JyZXNwb25kaW5nIGhlYWRlciBmaWxlIG9uIHRo
ZSBoZWFkZXIgbGlzdC4gCisgICAgICAgICogZ3RrL2d0a2RvYy5weTogTm93IGFjY2VwdCBhIGhl
YWRlcnMgcGFyYW1ldGVyLCB3aGljaCBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIHBhc3NpbmcganVz
dAorICAgICAgICBzb3VyY2UgZGlyZWN0b3JpZXMgdG8gZ3RrZG9jLXNjYW4uCisKIDIwMTQtMDIt
MjQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
YSBEZWZhdWx0VmlzaXRlZExpbmtQcm92aWRlciBhbmQgcm91dGUgdmlzaXRlZCBsaW5rIGFjdGlv
bnMgdGhyb3VnaCBpdApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvVG9v
bHMvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDYwMGIwMzUwMmZiZDZlZTRmYmRjZTUxZDg2MjFi
NjY2YmE2NTJiMjQuLmYyNTA5MjlmMDMzNTA4OTEwMDkxZWVjNDZhOTE2YTIwOGYxODFhM2UgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9ndGsvR05VbWFr
ZWZpbGUuYW0KQEAgLTEwLDIxICsxMCwyMyBAQCBkb2NzOiBkb2NzLWJ1aWxkLnN0YW1wCiAuUEhP
TlkgOiBkb2NzCiBESVNUQ0xFQU5GSUxFUyArPSBkb2NzLWJ1aWxkLnN0YW1wCiAKLWRvY3NfYnVp
bGRfc3RhbXBfbGlzdCA9IFwKK2RvY3NfYnVpbGRfZGVwZW5kZW5jaWVzID0gXAogCVNvdXJjZS9X
ZWJLaXQvZ3RrL2RvY3Mvd2Via2l0ZW52aXJvbm1lbnQueG1sCiAKIGlmIEVOQUJMRV9XRUJLSVQx
Ci1kb2NzX2J1aWxkX3N0YW1wX2xpc3QgKz0gXAorZG9jc19idWlsZF9kZXBlbmRlbmNpZXMgKz0g
XAogCWxpYndlYmtpdGd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RL
X0FQSV9NSU5PUl9WRVJTSU9OQC5sYSBcCiAJU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRn
dGstZG9jcy5zZ21sIFwKLQlTb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1zZWN0aW9u
cy50eHQKKwlTb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQgXAor
CWd0a2RvYy13ZWJraXRndGsuY2ZnCiBlbmRpZgogCiBpZiBFTkFCTEVfV0VCS0lUMgotZG9jc19i
dWlsZF9zdGFtcF9saXN0ICs9IFwKK2RvY3NfYnVpbGRfZGVwZW5kZW5jaWVzICs9IFwKIAlsaWJ3
ZWJraXQyZ3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01J
Tk9SX1ZFUlNJT05ALmxhIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstZG9jcy5zZ21sIFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBcCisJZ3RrZG9jLXdlYmtpdDJn
dGsuY2ZnCiBlbmRpZgogCiAkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9t
L2RvY3Mvd2Via2l0ZG9tZ3RrLWRvY3Muc2dtbDogJChnZG9tX3N5bWJvbF9maWxlcykgJChzcmNk
aXIpL1Rvb2xzL2d0ay9nZW5lcmF0ZS13ZWJraXRkb20tZG9jLWZpbGVzCkBAIC0zOSwxMiArNDEs
MTMgQEAgQlVJTFRfU09VUkNFUyArPSBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2Vz
L3dlYmtpdGRvbS9kb2NzL3dlYmtpdGRvbWd0ay1kb2NzLnNnbWwgXAogCSQodG9wX2J1aWxkZGly
KS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vZG9jcy93ZWJraXRkb21ndGstc2VjdGlvbnMudHh0
CiAKLWRvY3NfYnVpbGRfc3RhbXBfbGlzdCArPSBcCitkb2NzX2J1aWxkX2RlcGVuZGVuY2llcyAr
PSBcCiAJbGliR09iamVjdERPTUJpbmRpbmdzLmxhIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZl
ZFNvdXJjZXMvd2Via2l0ZG9tL2RvY3Mvd2Via2l0ZG9tZ3RrLWRvY3Muc2dtbCBcCi0JJCh0b3Bf
YnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9kb2NzL3dlYmtpdGRvbWd0ay1zZWN0
aW9ucy50eHQKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL2RvY3Mv
d2Via2l0ZG9tZ3RrLXNlY3Rpb25zLnR4dCBcCisJZ3RrZG9jLXdlYmtpdGRvbS5jZmcKIAotZG9j
cy1idWlsZC5zdGFtcDogJChkb2NzX2J1aWxkX3N0YW1wX2xpc3QpCitkb2NzLWJ1aWxkLnN0YW1w
OiAkKGRvY3NfYnVpbGRfZGVwZW5kZW5jaWVzKQogCUNDPSQoQ0MpICQoc3JjZGlyKS9Ub29scy9n
dGsvZ2VuZXJhdGUtZ3RrZG9jCiAJQHRvdWNoIGRvY3MtYnVpbGQuc3RhbXAKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MK
aW5kZXggODNmMTIwMWFhMWIxNTYzZGVhNjNmZmE1ZjMzNDkwYjQ2YjI5MzAwNS4uNTE1OTQ5MjM4
MjYwY2I1ZjhjNTcwNTYwZmI4ZDcyZjYyMmFlOGZhMiAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2dl
bmVyYXRlLWd0a2RvYworKysgYi9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCkBAIC0xNSw2ICsx
NSw5IEBACiAjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKICMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAKK2Zyb20gX19m
dXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KK2Zyb20gQ29uZmlnUGFyc2VyIGltcG9ydCBT
YWZlQ29uZmlnUGFyc2VyCisKIGltcG9ydCBhcmdwYXJzZQogaW1wb3J0IGNvbW1vbgogaW1wb3J0
IGdsb2IKQEAgLTIzLDkgKzI2LDYgQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcy5wYXRoCiBp
bXBvcnQgc3lzCiAKLXN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJu
YW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKLWltcG9ydCBqaGJ1aWxkcmNfY29tbW9uCi0K
IGRlZiBjb25maWd1cmVfbG9nZ2luZyh2ZXJib3NlKToKICAgICBsZXZlbCA9IGxvZ2dpbmcuREVC
VUcgaWYgdmVyYm9zZSBlbHNlIGxvZ2dpbmcuSU5GTwogICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKCdndGtkb2MnKQpAQCAtMzgsMTUxICszOCwyOSBAQCBkZWYgY29uZmlndXJlX2xvZ2dp
bmcodmVyYm9zZSk6CiAgICAgZWxzZToKICAgICAgICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9n
Z2luZy5Gb3JtYXR0ZXIoJyUobWVzc2FnZSlzJykpCiAKLQotZGVmIGdldF9ndGtkb2NfbW9kdWxl
X3BhdGhzKHhyZWZfZGVwX3BhY2thZ2VzKToKLSAgICBkZXBzID0gW10KLSAgICBodG1sX2RpciA9
IG9zLnBhdGguam9pbignc2hhcmUnLCAnZ3RrLWRvYycsICdodG1sJykKLQotICAgIGZvciBwYWNr
YWdlIGluIHhyZWZfZGVwX3BhY2thZ2VzOgotICAgICAgICBwcmVmaXggPSBjb21tb24ucHJlZml4
X29mX3BrZ19jb25maWdfZmlsZShwYWNrYWdlKQotICAgICAgICBpZiBwcmVmaXggaXMgTm9uZToK
LSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGZvciBtb2R1bGUgaW4geHJlZl9kZXBfcGFj
a2FnZXNbcGFja2FnZV06Ci0gICAgICAgICAgICBkZXBzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJl
Zml4LCBodG1sX2RpciwgbW9kdWxlKSkKLQotICAgIHJldHVybiBkZXBzCi0KLQotZGVmIGdldF9j
b21tb25feHJlZl9kZXBzKCk6Ci0gICAgcmV0dXJuIHsKK2RlZiBnZXRfZ3RrZG9jX21vZHVsZV9w
YXRocyhndGtfdmVyc2lvbik6CisgICAgZGVwZW5kZW50X3BhY2thZ2VzID0gewogICAgICAgICAn
Z2xpYi0yLjAnIDogWydnbGliJywgJ2dvYmplY3QnLCAnZ2lvJ10sCiAgICAgICAgICdsaWJzb3Vw
LTIuNCcgOiBbJ2xpYnNvdXAtMi40J10sCiAgICAgICAgICdnZGstcGl4YnVmLTIuMCc6IFsnZ2Rr
LXBpeGJ1ZiddCiAgICAgfQotCi1kZWYgd2Via2l0ZG9tX2RvY3NfaHRtbF9wYXRoKCk6Ci0gICAg
cmV0dXJuIGNvbW1vbi5idWlsZF9wYXRoKCdEb2N1bWVudGF0aW9uJywgJ3dlYmtpdGRvbWd0aycs
ICdodG1sJykKLQotZGVmIGdldF93ZWJraXQyX29wdGlvbnModmlydHVhbF9yb290KToKLSAgICBh
cGlfcGF0aCA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJL
aXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykKLSAgICBpbmplY3RlZF9idW5kbGVfYXBp
X3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0
MicsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICdndGsnKQotCi0gICAg
aWYgY29tbW9uLmlzX2NtYWtlX2J1aWxkKCk6Ci0gICAgICAgIGdlbmVyYXRlZF9hcGlfcGF0aCA9
IGNvbW1vbi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICd3ZWJraXQyZ3RrJywgJ3dlYmtp
dDInKQotICAgIGVsc2U6Ci0gICAgICAgIGdlbmVyYXRlZF9hcGlfcGF0aCA9IGNvbW1vbi5idWls
ZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICdXZWJLaXQyJywgJ3dlYmtpdDJndGsnLCAnd2Via2l0
MicpCi0KLSAgICB4cmVmX2RlcHMgPSBnZXRfY29tbW9uX3hyZWZfZGVwcygpLmNvcHkoKQotICAg
IHhyZWZfZGVwcy51cGRhdGUoewotICAgICAgICAnZ3RrKy0zLjAnIDogWydndGszJywgJ2dkazMn
XQotICAgIH0pCi0KLSAgICBkZWYgc3JjX3BhdGgoKmFyZ3MpOgotICAgICAgICByZXR1cm4gb3Mu
cGF0aC5qb2luKGFwaV9wYXRoLCAqYXJncykKLQotICAgIG9wdGlvbnMgPSB7Ci0gICAgICAgICdk
ZWNvcmF0b3InOiAnV0VCS0lUX0FQSXxXRUJLSVRfREVQUkVDQVRFRHxXRUJLSVRfREVQUkVDQVRF
RF9GT1JcKC4rXCknLAotICAgICAgICAnZGVwcmVjYXRpb25fZ3VhcmQnOiAnV0VCS0lUX0RJU0FC
TEVfREVQUkVDQVRFRCcsCi0gICAgICAgICdsaWJyYXJ5X3BhdGgnIDogY29tbW9uLmxpYnJhcnlf
YnVpbGRfcGF0aCgpLAotICAgICAgICAndmlydHVhbF9yb290JyA6IHZpcnR1YWxfcm9vdCwKLSAg
ICAgICAgJ21vZHVsZV9uYW1lJyA6ICd3ZWJraXQyZ3RrJywKLSAgICAgICAgJ25hbWVzcGFjZScg
OiAnd2Via2l0JywKLSAgICAgICAgJ2RvY19kaXInIDogc3JjX3BhdGgoJ2RvY3MnKSwKLSAgICAg
ICAgJ291dHB1dF9kaXInIDogY29tbW9uLmJ1aWxkX3BhdGgoJ0RvY3VtZW50YXRpb24nLCAnd2Vi
a2l0Mmd0aycpLAotICAgICAgICAnc291cmNlX2RpcnMnIDogW3NyY19wYXRoKCksIGdlbmVyYXRl
ZF9hcGlfcGF0aCwgaW5qZWN0ZWRfYnVuZGxlX2FwaV9wYXRoXSwKLSAgICAgICAgJ2NmbGFncycg
OgotICAgICAgICAgICAgIyBDb21tb24gcGF0aHMKLSAgICAgICAgICAgICcgLUknICsgamhidWls
ZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCi0gICAgICAgICAgICAnIC1J
JyArIGFwaV9wYXRoICsgXAotICAgICAgICAgICAgIyBBdXRvdG9vbHMgcGF0aHMKLSAgICAgICAg
ICAgICcgLUknICsgY29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdDJn
dGsnLCAnaW5jbHVkZScpICsgXAotICAgICAgICAgICAgJyAtSScgKyBjb21tb24uYnVpbGRfcGF0
aCgnRGVyaXZlZFNvdXJjZXMnLCAnV2ViS2l0MicsICd3ZWJraXQyZ3RrJykgKyBcCi0gICAgICAg
ICAgICAjIENNYWtlIHBhdGhzCi0gICAgICAgICAgICAnIC1JJyArIGNvbW1vbi5idWlsZF9wYXRo
KCdEZXJpdmVkU291cmNlcycsICdGb3J3YXJkaW5nSGVhZGVycycsICd3ZWJraXQyZ3RrJykgKyBc
Ci0gICAgICAgICAgICAnIC1JJyArIGNvbW1vbi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycs
ICd3ZWJraXQyZ3RrJyksCi0gICAgICAgICdjcm9zc19yZWZlcmVuY2VfZGVwcycgOiBnZXRfZ3Rr
ZG9jX21vZHVsZV9wYXRocyh4cmVmX2RlcHMpICsgW3dlYmtpdGRvbV9kb2NzX2h0bWxfcGF0aCgp
XSwKLSAgICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9iLmdsb2Ioc3JjX3BhdGgoJypQcml2YXRl
LmgnKSkgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKG9zLnBhdGguam9p
bihpbmplY3RlZF9idW5kbGVfYXBpX3BhdGgsICcqUHJpdmF0ZS5oJykpICsgXAotICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihzcmNfcGF0aCgnKkNsaWVudConKSkgKyBcCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCdXZWJLaXRBdXRoZW50aWNh
dGlvbkRpYWxvZy4qJykpICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihz
cmNfcGF0aCgnV2ViS2l0QmF0dGVyeVByb3ZpZGVyLionKSkgKyBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCdXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLion
KSkgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCdXZWJL
aXRUZXh0Q2hlY2tlci4qJykpICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xv
YihzcmNfcGF0aCgnV2ViS2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlLionKSkgKyBcCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCdXZWJWaWV3QmFzZUlucHV0TWV0
aG9kRmlsdGVyLionKSkgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKG9z
LnBhdGguam9pbihnZW5lcmF0ZWRfYXBpX3BhdGgsICdXZWJLaXRNYXJzaGFsLionKSkgKyBcCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKG9zLnBhdGguam9pbihnZW5lcmF0ZWRf
YXBpX3BhdGgsICdXZWJLaXRFbnVtVHlwZXMuKicpKSArIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJ3Rlc3RzLyouaCcpKQotICAgIH0KLSAgICByZXR1cm4g
b3B0aW9ucwotCi1kZWYgZ2V0X3dlYmtpdDFfb3B0aW9ucyhndGtfdmVyc2lvbiwgdmlydHVhbF9y
b290KToKLSAgICBkZWYgc3JjX3BhdGgoKmFyZ3MpOgotICAgICAgICByZXR1cm4gamhidWlsZHJj
X2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgqKCgnU291cmNlJywgJ1dlYktpdCcsICdndGsnKSArIGFy
Z3MpKQotCi0gICAgZGVmIHdlYmtpdHZlcnNpb25oX3BhdGgoKToKLSAgICAgICAgaWYgY29tbW9u
LmlzX2NtYWtlX2J1aWxkKCk6Ci0gICAgICAgICAgICByZXR1cm4gY29tbW9uLmJ1aWxkX3BhdGgo
J0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdGd0aycpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICByZXR1cm4gY29tbW9uLmJ1aWxkX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQnLCAnZ3RrJywgJ3dl
YmtpdCcpCi0KLSAgICB4cmVmX2RlcHMgPSBnZXRfY29tbW9uX3hyZWZfZGVwcygpLmNvcHkoKQog
ICAgIGlmIGd0a192ZXJzaW9uID09IDM6Ci0gICAgICAgIHhyZWZfZGVwcy51cGRhdGUoewotICAg
ICAgICAgICAgICAgICdndGsrLTMuMCcgOiBbJ2d0azMnLCAnZ2RrMyddCi0gICAgICAgIH0pCisg
ICAgICAgIGRlcGVuZGVudF9wYWNrYWdlcy51cGRhdGUoeydndGsrLTMuMCcgOiBbJ2d0azMnLCAn
Z2RrMyddfSkKICAgICBlbHNlOgotICAgICAgICB4cmVmX2RlcHMudXBkYXRlKHsKLSAgICAgICAg
ICAgICAgICAnZ3RrKy0yLjAnIDogWydndGsnLCAnZ2RrJ10KLSAgICAgICAgfSkKLQotICAgIG9w
dGlvbnMgPSB7Ci0gICAgICAgICdkZWNvcmF0b3InOiAnV0VCS0lUX0FQSXxXRUJLSVRfREVQUkVD
QVRFRHxXRUJLSVRfREVQUkVDQVRFRF9GT1JcKC4rXCknLAotICAgICAgICAnZGVwcmVjYXRpb25f
Z3VhcmQnOiAnV0VCS0lUX0RJU0FCTEVfREVQUkVDQVRFRCcsCi0gICAgICAgICdsaWJyYXJ5X3Bh
dGgnIDogY29tbW9uLmxpYnJhcnlfYnVpbGRfcGF0aCgpLAotICAgICAgICAndmlydHVhbF9yb290
JyA6IHZpcnR1YWxfcm9vdCwKLSAgICAgICAgJ21vZHVsZV9uYW1lJyA6ICd3ZWJraXRndGsnLAot
ICAgICAgICAnbmFtZXNwYWNlJyA6ICd3ZWJraXQnLAotICAgICAgICAnZG9jX2RpcicgOiBzcmNf
cGF0aCgnZG9jcycpLAotICAgICAgICAnb3V0cHV0X2RpcicgOiBjb21tb24uYnVpbGRfcGF0aCgn
RG9jdW1lbnRhdGlvbicsICd3ZWJraXRndGsnKSwKLSAgICAgICAgJ3NvdXJjZV9kaXJzJyA6IFtz
cmNfcGF0aCgnd2Via2l0JyksIHdlYmtpdHZlcnNpb25oX3BhdGgoKV0sCi0gICAgICAgICdjZmxh
Z3MnIDogJyAtSScgKyBjb21tb24uYnVpbGRfcGF0aCgnV2ViS2l0JywgJ2d0aycpICsgXAotICAg
ICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2Vz
JykgKyBcCi0gICAgICAgICAgICAgICAgICAgJyAtSScgKyBzcmNfcGF0aCgpICsgXAotICAgICAg
ICAgICAgICAgICAgICcgLUknICsgamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291
cmNlJykgKyBcCi0gICAgICAgICAgICAgICAgICAgJyAtSScgKyBqaGJ1aWxkcmNfY29tbW9uLnRv
cF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnSmF2YVNjcmlwdENvcmUnLCAnRm9yd2FyZGluZ0hlYWRl
cnMnKSwKLSAgICAgICAgJ2Nyb3NzX3JlZmVyZW5jZV9kZXBzJyA6IGdldF9ndGtkb2NfbW9kdWxl
X3BhdGhzKHhyZWZfZGVwcykgKyBbd2Via2l0ZG9tX2RvY3NfaHRtbF9wYXRoKCldLAotICAgICAg
ICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNfcGF0aCgnd2Via2l0JywgJypwcml2YXRl
LionKSkgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCd3
ZWJraXQnLCAnd2Via2l0YXV0aGVudGljYXRpb25kaWFsb2cuKicpKSArIFwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJ3dlYmtpdCcsICd3ZWJraXRzcGVsbGNo
ZWNrZXJlbmNoYW50LionKSkKLSAgICB9Ci0gICAgcmV0dXJuIG9wdGlvbnMKLQotZGVmIGdldF93
ZWJraXRkb21fb3B0aW9ucyh2aXJ0dWFsX3Jvb3QpOgotICAgIGRlZiBkZXJpdmVkX3NvdXJjZXNf
cGF0aCgqYXJncyk6Ci0gICAgICAgIHJldHVybiBjb21tb24uYnVpbGRfcGF0aCgqKCgnRGVyaXZl
ZFNvdXJjZXMnLCAnd2Via2l0ZG9tJykgKyBhcmdzKSkKLSAgICBkZWYgc3JjX3BhdGgoKmFyZ3Mp
OgotICAgICAgICByZXR1cm4gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgqKCgnU291
cmNlJywgJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnZ29iamVjdCcpICsgYXJncykpCisgICAgICAg
IGRlcGVuZGVudF9wYWNrYWdlcy51cGRhdGUoeydndGsrLTIuMCcgOiBbJ2d0aycsICdnZGsnXX0p
CiAKLSAgICB4cmVmX2RlcHMgPSB7ICdnbGliLTIuMCcgOiBbJ2dsaWInLCAnZ29iamVjdCcsICdn
aW8nXSB9Ci0KLSAgICBvcHRpb25zID0gewotICAgICAgICAnZGVjb3JhdG9yJzogJ1dFQktJVF9B
UEl8V0VCS0lUX0RFUFJFQ0FURUR8V0VCS0lUX0RFUFJFQ0FURURfRk9SXCguK1wpJywKLSAgICAg
ICAgJ2RlcHJlY2F0aW9uX2d1YXJkJzogJ1dFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQnLAotICAg
ICAgICAnbGlicmFyeV9wYXRoJyA6IGNvbW1vbi5saWJyYXJ5X2J1aWxkX3BhdGgoKSwKLSAgICAg
ICAgJ3ZpcnR1YWxfcm9vdCcgOiB2aXJ0dWFsX3Jvb3QsCi0gICAgICAgICdtb2R1bGVfbmFtZScg
OiAnd2Via2l0ZG9tZ3RrJywKLSAgICAgICAgJ25hbWVzcGFjZScgOiAnd2Via2l0X2RvbScsCi0g
ICAgICAgICdkb2NfZGlyJyA6IGRlcml2ZWRfc291cmNlc19wYXRoKCdkb2NzJyksCi0gICAgICAg
ICdvdXRwdXRfZGlyJyA6IGNvbW1vbi5idWlsZF9wYXRoKCdEb2N1bWVudGF0aW9uJywgJ3dlYmtp
dGRvbWd0aycpLAotICAgICAgICAnc291cmNlX2RpcnMnIDogW2Rlcml2ZWRfc291cmNlc19wYXRo
KCldLAotICAgICAgICAnY2ZsYWdzJyA6ICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3BhdGgoKSAr
IFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIHNyY19wYXRoKCkgKyBcCi0gICAgICAgICAg
ICAgICAgICAgJyAtSScgKyBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2Un
KSwKLSAgICAgICAgJ2Nyb3NzX3JlZmVyZW5jZV9kZXBzJyA6IGdldF9ndGtkb2NfbW9kdWxlX3Bh
dGhzKHhyZWZfZGVwcyksCi0gICAgICAgICdpZ25vcmVkX2ZpbGVzJzogZ2xvYi5nbG9iKGRlcml2
ZWRfc291cmNlc19wYXRoKCcqUHJpdmF0ZS5oJykpCi0gICAgfQotICAgIHJldHVybiBvcHRpb25z
CisgICAgcGF0aHMgPSBbXQorICAgIGh0bWxfZGlyID0gb3MucGF0aC5qb2luKCdzaGFyZScsICdn
dGstZG9jJywgJ2h0bWwnKQorICAgIGZvciBwYWNrYWdlLCBtb2R1bGVzIGluIGRlcGVuZGVudF9w
YWNrYWdlcy5pdGVyaXRlbXMoKToKKyAgICAgICAgcHJlZml4ID0gY29tbW9uLnByZWZpeF9vZl9w
a2dfY29uZmlnX2ZpbGUocGFja2FnZSkKKyAgICAgICAgaWYgcHJlZml4IGlzIE5vbmU6CisgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICBmb3IgbW9kdWxlIGluIG1vZHVsZXM6CisgICAgICAg
ICAgICBwYXRocy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgaHRtbF9kaXIsIG1vZHVsZSkp
CisgICAgIyBUaGlzIHRlY2huaWNhbGx5IGlzIG5vdCBuZWVkZWQgZm9yIHRoZSBHT2JqZWN0IERP
TSBiaW5kaW5ncyBkb2N1bWVudGF0aW9uIGl0c2VsZiwKKyAgICAjIGJ1dCBhZGRpbmcgaXQgZG9l
c24ndCBodXJ0IGFuZCBhbGxvd3MgdXMgdG8gYXZvaWQgYSBjaGVjayBoZXJlLgorICAgIHBhdGhz
LmFwcGVuZChjb21tb24uYnVpbGRfcGF0aCgnRG9jdW1lbnRhdGlvbicsICd3ZWJraXRkb21ndGsn
LCAnaHRtbCcpKQorICAgIHJldHVybiBwYXRocwogCiBkZWYgcHJpbnRfbWlzc2luZ19hcGkoZ2Vu
ZXJhdG9yKToKICAgICBtaXNzaW5nX2FwaSA9IGdlbmVyYXRvci5hcGlfbWlzc2luZ19kb2N1bWVu
dGF0aW9uKCkKQEAgLTE5MCwzMSArNjgsODkgQEAgZGVmIHByaW50X21pc3NpbmdfYXBpKGdlbmVy
YXRvcik6CiAgICAgICAgIHJldHVybgogICAgIHByaW50KCJcblRoZSBmb2xsb3dpbmcgQVBJIGFy
ZSBtaXNzaW5nIGRvY3VtZW50YXRpb246IikKICAgICBmb3IgYXBpIGluIG1pc3NpbmdfYXBpOgot
ICAgICAgICBwcmludCgiXHQlcyIgJSBhcGkpCisgICAgICAgIHByaW50KCJcdHswfSIuZm9ybWF0
KGFwaSkpCisKK2RlZiBmaWxlc190b19pZ25vcmUoc291cmNlX2RpcnMsIGhlYWRlcnNfd2l0aF9n
dGtkb2MpOgorICAgICIiIgorICAgIEZpbmQgZmlsZXMgdG8gaWdub3JlIGR1cmluZyBkb2N1bWVu
dGF0aW9uIGdlbmVyYXRpb24uIFdlIGFzc3VtZSB0aGF0IGlmIGFuCisgICAgaW1wbGVtZW50YXRp
b24gZmlsZSBleGlzdHMgZm9yIGEgaGVhZGVyIHdpdGggZ3RrZG9jIChzYXkgd2Via2l0Zm9vLmNw
cCBmb3IKKyAgICB3ZWJraXRmb28uaCkgd2Ugc2hvdWxkbid0IGlnbm9yZSB0aGF0IGZpbGUuIEN1
cnJlbnRseSB0aGlzIGhvbGRzIHRydWUgZm9yIGFsbAorICAgIG9mIHRoZSBXZWJLaXQgcHJvamVj
dC4KKyAgICAiIiIKKyAgICBpbXBsZW1lbnRhdGlvbl9maWxlcyA9IGxpc3QoaGVhZGVyc193aXRo
X2d0a2RvYykKKyAgICBmb3IgaGVhZGVyIGluIGhlYWRlcnNfd2l0aF9ndGtkb2M6CisgICAgICAg
IGRlZiBhZGRfZmlsZV9pZl9leGlzdHMoZmlsZSk6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlz
ZmlsZShmaWxlKToKKyAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbl9maWxlcy5hcHBlbmQo
b3MucGF0aC5hYnNwYXRoKGZpbGUpKQorICAgICAgICBoZWFkZXJfbmFtZV93aXRob3V0X2V4dGVu
c2lvbiA9IG9zLnBhdGguc3BsaXRleHQoaGVhZGVyKVswXQorICAgICAgICBhZGRfZmlsZV9pZl9l
eGlzdHMoaGVhZGVyX25hbWVfd2l0aG91dF9leHRlbnNpb24gKyAiLmNwcCIpCisgICAgICAgIGFk
ZF9maWxlX2lmX2V4aXN0cyhoZWFkZXJfbmFtZV93aXRob3V0X2V4dGVuc2lvbiArICIuYyIpCisK
KyAgICBkZWYgZmlsZV9zaG91bGRfYmVfaWdub3JlZChmaWxlKToKKyAgICAgICAgaWYgb3MucGF0
aC5zcGxpdGV4dChmaWxlKVsxXSBub3QgaW4gWycuaCcsICcuYycsICcuY3BwJywgJy5jYyddOgor
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlICMgVGhlc2UgZmlsZXMgYXJlIGlnbm9yZWQgYW55d2F5
LgorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoZmlsZSk6CisgICAgICAgICAgICByZXR1
cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChmaWxlKSBub3QgaW4gaW1w
bGVtZW50YXRpb25fZmlsZXMKKworICAgIGFsbF9maWxlcyA9IHN1bShbW29zLnBhdGguam9pbihk
aXIsIGZpbGUpIGZvciBmaWxlIGluIG9zLmxpc3RkaXIoZGlyKV0gZm9yIGRpciBpbiBzb3VyY2Vf
ZGlyc10sIFtdKQorICAgIHJldHVybiBmaWx0ZXIoZmlsZV9zaG91bGRfYmVfaWdub3JlZCwgYWxs
X2ZpbGVzKQorCitkZWYgZ2V0X2dlbmVyYXRvcl9mb3JfY29uZmlnKGNvbmZpZ19maWxlLCB2aXJ0
dWFsX3Jvb3QpOgorICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShjb25maWdfZmlsZSk6CisgICAg
ICAgIHJldHVybiBOb25lCisKKyAgICBjb25maWcgPSBTYWZlQ29uZmlnUGFyc2VyKCkKKyAgICBj
b25maWcucmVhZChjb25maWdfZmlsZSkKKyAgICBtb2R1bGVfbmFtZSA9IGNvbmZpZy5zZWN0aW9u
cygpWzBdCisgICAgcGtnY29uZmlnX2ZpbGUgPSBjb25maWcuZ2V0KG1vZHVsZV9uYW1lLCAncGtn
Y29uZmlnX2ZpbGUnKQorICAgIGd0a192ZXJzaW9uID0gY29tbW9uLmd0a192ZXJzaW9uX29mX3Br
Z19jb25maWdfZmlsZShwa2djb25maWdfZmlsZSkKKworICAgIHNvdXJjZV9kaXJzID0gY29uZmln
LmdldChtb2R1bGVfbmFtZSwgJ3NvdXJjZV9kaXJzJykucmVwbGFjZSgnOycsICcgJykuc3BsaXQo
KQorICAgIGhlYWRlcnMgPSBbb3MucGF0aC5hYnNwYXRoKGYpIGZvciBmIGluIGNvbmZpZy5nZXQo
bW9kdWxlX25hbWUsICdoZWFkZXJzJykucmVwbGFjZSgnOycsICcgJykuc3BsaXQoKV0KKyAgICBy
ZXR1cm4gZ3RrZG9jLlBrZ0NvbmZpZ0dUS0RvYyhwa2djb25maWdfZmlsZSwgeworICAgICAgICAn
ZGVjb3JhdG9yJzogJ1dFQktJVF9BUEl8V0VCS0lUX0RFUFJFQ0FURUR8V0VCS0lUX0RFUFJFQ0FU
RURfRk9SXCguK1wpJywKKyAgICAgICAgJ2RlcHJlY2F0aW9uX2d1YXJkJzogJ1dFQktJVF9ESVNB
QkxFX0RFUFJFQ0FURUQnLAorICAgICAgICAnbGlicmFyeV9wYXRoJzogY29tbW9uLmxpYnJhcnlf
YnVpbGRfcGF0aCgpLAorICAgICAgICAndmlydHVhbF9yb290JzogdmlydHVhbF9yb290LAorICAg
ICAgICAnbW9kdWxlX25hbWUnOiBtb2R1bGVfbmFtZSwKKyAgICAgICAgJ25hbWVzcGFjZSc6IGNv
bmZpZy5nZXQobW9kdWxlX25hbWUsICduYW1lc3BhY2UnKSwKKyAgICAgICAgJ2RvY19kaXInOiBj
b25maWcuZ2V0KG1vZHVsZV9uYW1lLCAnZG9jX2RpcicpLAorICAgICAgICAnb3V0cHV0X2Rpcic6
IGNvbW1vbi5idWlsZF9wYXRoKCdEb2N1bWVudGF0aW9uJywgbW9kdWxlX25hbWUpLAorICAgICAg
ICAnc291cmNlX2RpcnMnOiBzb3VyY2VfZGlycywKKyAgICAgICAgJ2hlYWRlcnMnOiBoZWFkZXJz
LAorICAgICAgICAnY2ZsYWdzJzogIiAiLmpvaW4oY29uZmlnLmdldChtb2R1bGVfbmFtZSwgJ2Nm
bGFncycpLnNwbGl0KCkpLAorICAgICAgICAnY3Jvc3NfcmVmZXJlbmNlX2RlcHMnOiBnZXRfZ3Rr
ZG9jX21vZHVsZV9wYXRocyhndGtfdmVyc2lvbiksCisgICAgICAgICdpZ25vcmVkX2ZpbGVzJzog
ZmlsZXNfdG9faWdub3JlKHNvdXJjZV9kaXJzLCBoZWFkZXJzKSwKKyAgICB9KQogCiBkZWYgZ2Vu
ZXJhdGVfZG9jKGdlbmVyYXRvciwgc2tpcF9odG1sKToKKyAgICBwcmludCgiXG5HZW5lcmF0aW5n
IHswfSBkb2N1bWVudGF0aW9uLi4uIi5mb3JtYXQoZ2VuZXJhdG9yLm1vZHVsZV9uYW1lKSkKICAg
ICBnZW5lcmF0b3IuZ2VuZXJhdGUobm90IHNraXBfaHRtbCkKICAgICBpZiBnZW5lcmF0b3Iuc2F3
X3dhcm5pbmdzOgogICAgICAgICBwcmludF9taXNzaW5nX2FwaShnZW5lcmF0b3IpCiAgICAgcmV0
dXJuIGdlbmVyYXRvci5zYXdfd2FybmluZ3MKIAotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoK
LSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nR2VuZXJh
dGUgZ3RrZG9jIGZvciBXZWJLaXQuJykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICct
LXZlcmJvc2UnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICAg
aGVscD0nV2hldGhlciBvciBub3QgdG8gcnVuIGluIHZlcmJvc2UgbW9kZS4nKQotICAgIHBhcnNl
ci5hZGRfYXJndW1lbnQoJy0tcmViYXNlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9J1doZW4gc3BlY2lmaWVkLCBydW4gdGhlIHRvb2wgaW4gcmVi
YXNlIG1vZGUuJykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXNraXAtaHRtbCcsIGFjdGlv
bj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdXaGV0aGVyIG9y
IG5vdCB0byBza2lwIEhUTUwgZ2VuZXJhdGlvbiwgd2hpY2ggY2FuIGJlIHNsb3cuJykKLSAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KCctLXZpcnR1YWwtcm9vdCcsIHR5cGU9c3RyLCBkZWZhdWx0PScn
LAotICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQSB0ZW1wb3JhcnkgaW5zdGFsbGF0aW9u
IGRpcmVjdG9yeSB3aGljaCBpcyB1c2VkIGFzIHRoZSByb290ICcgKyBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd3aGVyZSB0aGUgYWN0dWFsIGluc3RhbGxhdGlvbiBwcmVmaXggbGl2
ZXM7IHRoaXMgaXMgbW9zdGx5ICcgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1
c2VmdWwgZm9yIHBhY2thZ2VycywgYW5kIHNob3VsZCBiZSBzZXQgdG8gd2hhdCBpcyBnaXZlbiB0
byAnICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFrZSBpbnN0YWxsIGFzIERF
U1RESVIuJykKK2RlZiByZWJhc2VfZG9jKGdlbmVyYXRvcik6CisgICAgcHJpbnQoIlxuUmViYXNp
bmcgezB9IGRvY3VtZW50YXRpb24uLi4iLmZvcm1hdChnZW5lcmF0b3IubW9kdWxlX25hbWUpKQor
ICAgIHRyeToKKyAgICAgICAgZ2VuZXJhdG9yLnJlYmFzZV9pbnN0YWxsZWRfZG9jcygpCisgICAg
ZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgcHJpbnQoIlJlYmFzZSBkaWQgbm90IGhhcHBlbiwg
bGlrZWx5IG5vIGRvY3VtZW50YXRpb24gaXMgcHJlc2VudC4iKQorCitkZWYgZ2VuZXJhdGVfZG9j
dW1lbnRhdGlvbl9mb3JfY29uZmlnKGNvbmZpZ19maWxlKToKKyAgICBnZW5lcmF0b3IgPSBnZXRf
Z2VuZXJhdG9yX2Zvcl9jb25maWcoY29uZmlnX2ZpbGUsIGFyZ3VtZW50cy52aXJ0dWFsX3Jvb3Qp
CisgICAgaWYgbm90IGdlbmVyYXRvcjoKKyAgICAgICAgcHJpbnQoInswfSBkb2VzIG5vdCBleGlz
dCEgU2tpcHBpbmcgdGhhdCBkb2N1bWVudGF0aW9uLiIuZm9ybWF0KG9zLnBhdGguYmFzZW5hbWUo
Y29uZmlnX2ZpbGUpKSkKKyAgICAgICAgcmV0dXJuCiAKLSAgICBhcmd1bWVudHMgPSBwYXJzZXIu
cGFyc2VfYXJncygpCi0gICAgY29uZmlndXJlX2xvZ2dpbmcoYXJndW1lbnRzLnZlcmJvc2UpCisg
ICAgaWYgbm90IGFyZ3VtZW50cy5yZWJhc2U6CisgICAgICAgIGdlbmVyYXRlX2RvYyhnZW5lcmF0
b3IsIGFyZ3VtZW50cy5za2lwX2h0bWwpCisgICAgZWxzZToKKyAgICAgICAgcmViYXNlX2RvYyhn
ZW5lcmF0b3IpCisgICAgcmV0dXJuIGdlbmVyYXRvci5zYXdfd2FybmluZ3MKIAorZGVmIHByZXBh
cmVfZW52aXJvbm1lbnRfZm9yX2d0a2RvY19nZW5lcmF0aW9uKCk6CiAgICAgIyBXZSBuZWVkIHRv
IGFkZCB0aGUgSmF2YVNjcmlwdENvcmUgYnVpbGQgZGlyZWN0b3J5IHRvIHRoZSBQS0dfQ09ORklH
X1BBVEgKICAgICAjIHNvIHRoYXQgcGtnY29uZmlnIGNhbiBwcm9wZXJseSByZXNvbHZlIHRoZSBs
aWJqYXZhc2NyaXB0Y29yZSBkZXBlbmRlbmN5LgogICAgIHBrZ19jb25maWdfcGF0aCA9IG9zLmVu
dmlyb24uZ2V0KCJQS0dfQ09ORklHX1BBVEgiKQpAQCAtMjMzLDU5ICsxNjksMzEgQEAgaWYgX19u
YW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBpZiBvcy5lbnZpcm9uLmdldCgnQ0MnKSA9PSAiY2xh
bmciOgogICAgICAgICBvcy5lbnZpcm9uWydDRkxBR1MnXSArPSAnIC1RdW51c2VkLWFyZ3VtZW50
cycKIAotICAgIHNhd193ZWJraXQxX3dhcm5pbmdzID0gc2F3X3dlYmtpdDJfd2FybmluZ3MgPSBG
YWxzZQotICAgIHdrMl9wa2dfY29uZmlnX3BhdGggPSBjb21tb24uYnVpbGRfcGF0aCgnU291cmNl
JywgJ1dlYktpdDInLCAnd2Via2l0Mmd0ay0zLjAucGMnKQotICAgIHdrMV9wa2dfY29uZmlnX3Bh
dGggPSBjb21tb24uYnVpbGRfcGF0aCgnU291cmNlJywgJ1dlYktpdCcsICdndGsnLCAnd2Via2l0
Z3RrLTMuMC5wYycpCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHdrMV9wa2dfY29uZmlnX3Bh
dGgpOgotICAgICAgICB3azFfcGtnX2NvbmZpZ19wYXRoID0gY29tbW9uLmJ1aWxkX3BhdGgoJ1Nv
dXJjZScsICdXZWJLaXQnLCAnZ3RrJywgJ3dlYmtpdC0xLjAucGMnKQotCi0gICAgaWYgb3MucGF0
aC5leGlzdHMod2syX3BrZ19jb25maWdfcGF0aCk6Ci0gICAgICAgIHBrZ19jb25maWdfcGF0aCA9
IHdrMl9wa2dfY29uZmlnX3BhdGgKLSAgICBlbGlmIG9zLnBhdGguZXhpc3RzKHdrMV9wa2dfY29u
ZmlnX3BhdGgpOgotICAgICAgICBwa2dfY29uZmlnX3BhdGggPSB3azFfcGtnX2NvbmZpZ19wYXRo
CisgICAgIyBQYXRocyBmcm9tIHRoZSBHTlVtYWtlZmlsZSBnZW5lcmF0ZWQgY29uZmlndXJhdGlv
biBmaWxlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKyAgICBvcy5jaGRp
cihjb21tb24uYnVpbGRfcGF0aCgpKQogCi0gICAgd2Via2l0ZG9tX2RvY3NfcGF0aCA9IGNvbW1v
bi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICd3ZWJraXRkb20nLCAnZG9jcycpCi0gICAg
aWYgbm90IGNvbW1vbi5pc19jbWFrZV9idWlsZCgpOgotICAgICAgICBnZW5lcmF0b3IgPSBndGtk
b2MuUGtnQ29uZmlnR1RLRG9jKHBrZ19jb25maWdfcGF0aCwgZ2V0X3dlYmtpdGRvbV9vcHRpb25z
KGFyZ3VtZW50cy52aXJ0dWFsX3Jvb3QpKQotICAgICAgICBpZiBub3QgYXJndW1lbnRzLnJlYmFz
ZToKLSAgICAgICAgICAgIHByaW50KCJcbkdlbmVyYXRpbmcgV2ViS2l0RE9NIGRvY3VtZW50YXRp
b24uLi4iKQotICAgICAgICAgICAgc2F3X3dlYmtpdGRvbV93YXJuaW5ncyA9IGdlbmVyYXRlX2Rv
YyhnZW5lcmF0b3IsIGFyZ3VtZW50cy5za2lwX2h0bWwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBwcmludCgiXG5SZWJhc2luZyBXZWJLaXRET00gZG9jdW1lbnRhdGlvbi4uLiIpCi0gICAg
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLnJlYmFzZV9pbnN0YWxsZWRf
ZG9jcygpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHBy
aW50KCJSZWJhc2UgZGlkIG5vdCBoYXBwZW4sIGxpa2VseSBubyBkb2N1bWVudGF0aW9uIGlzIHBy
ZXNlbnQuIikKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgcGFyc2VyID0gYXJncGFy
c2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0dlbmVyYXRlIGd0a2RvYyBmb3IgV2ViS2l0
LicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJib3NlJywgYWN0aW9uPSdz
dG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1doZXRoZXIgb3Igbm90
IHRvIHJ1biBpbiB2ZXJib3NlIG1vZGUuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJl
YmFzZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSdXaGVuIHNwZWNpZmllZCwgcnVuIHRoZSB0b29sIGluIHJlYmFzZSBtb2RlLicpCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgnLS1za2lwLWh0bWwnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0nV2hldGhlciBvciBub3QgdG8gc2tpcCBIVE1MIGdl
bmVyYXRpb24sIHdoaWNoIGNhbiBiZSBzbG93LicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgn
LS12aXJ0dWFsLXJvb3QnLCB0eXBlPXN0ciwgZGVmYXVsdD0nJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9J0EgdGVtcG9yYXJ5IGluc3RhbGxhdGlvbiBkaXJlY3Rvcnkgd2hpY2ggaXMg
dXNlZCBhcyB0aGUgcm9vdCAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2hl
cmUgdGhlIGFjdHVhbCBpbnN0YWxsYXRpb24gcHJlZml4IGxpdmVzOyB0aGlzIGlzIG1vc3RseSAn
ICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlZnVsIGZvciBwYWNrYWdlcnMs
IGFuZCBzaG91bGQgYmUgc2V0IHRvIHdoYXQgaXMgZ2l2ZW4gdG8gJyArIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ21ha2UgaW5zdGFsbCBhcyBERVNURElSLicpCiAKLSAgICBwa2df
Y29uZmlnX3BhdGggPSB3azFfcGtnX2NvbmZpZ19wYXRoCi0gICAgaWYgb3MucGF0aC5leGlzdHMo
cGtnX2NvbmZpZ19wYXRoKToKLSAgICAgICAgb3B0aW9ucyA9IGdldF93ZWJraXQxX29wdGlvbnMo
Y29tbW9uLmd0a192ZXJzaW9uX29mX3BrZ19jb25maWdfZmlsZShwa2dfY29uZmlnX3BhdGgpLCBh
cmd1bWVudHMudmlydHVhbF9yb290KQotICAgICAgICBnZW5lcmF0b3IgPSBndGtkb2MuUGtnQ29u
ZmlnR1RLRG9jKHBrZ19jb25maWdfcGF0aCwgb3B0aW9ucykKLSAgICAgICAgaWYgbm90IGFyZ3Vt
ZW50cy5yZWJhc2U6Ci0gICAgICAgICAgICBwcmludCgiR2VuZXJhdGluZyBXZWJLaXQxIGRvY3Vt
ZW50YXRpb24uLi4iKQotICAgICAgICAgICAgc2F3X3dlYmtpdDFfd2FybmluZ3MgPSBnZW5lcmF0
ZV9kb2MoZ2VuZXJhdG9yLCBhcmd1bWVudHMuc2tpcF9odG1sKQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgcHJpbnQoIlJlYmFzaW5nIFdlYktpdDEgZG9jdW1lbnRhdGlvbi4uLiIpCi0gICAg
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLnJlYmFzZV9pbnN0YWxsZWRf
ZG9jcygpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHBy
aW50KCJSZWJhc2UgZGlkIG5vdCBoYXBwZW4sIGxpa2VseSBubyBkb2N1bWVudGF0aW9uIGlzIHBy
ZXNlbnQuIikKKyAgICBhcmd1bWVudHMgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgY29uZmln
dXJlX2xvZ2dpbmcoYXJndW1lbnRzLnZlcmJvc2UpCiAKLSAgICAjIFdlYktpdDIgbWlnaHQgbm90
IGJlIGVuYWJsZWQsIHNvIGNoZWNrIGZvciB0aGUgcGtnLWNvbmZpZyBmaWxlIGJlZm9yZSBidWls
ZGluZyBkb2N1bWVudGF0aW9uLgotICAgIHBrZ19jb25maWdfcGF0aCA9IHdrMl9wa2dfY29uZmln
X3BhdGgKLSAgICBpZiBvcy5wYXRoLmV4aXN0cyhwa2dfY29uZmlnX3BhdGgpOgotICAgICAgICBn
ZW5lcmF0b3IgPSBndGtkb2MuUGtnQ29uZmlnR1RLRG9jKHBrZ19jb25maWdfcGF0aCwgZ2V0X3dl
YmtpdDJfb3B0aW9ucyhhcmd1bWVudHMudmlydHVhbF9yb290KSkKLSAgICAgICAgaWYgbm90IGFy
Z3VtZW50cy5yZWJhc2U6Ci0gICAgICAgICAgICBwcmludCgiXG5HZW5lcmF0aW5nIFdlYktpdDIg
ZG9jdW1lbnRhdGlvbi4uLiIpCi0gICAgICAgICAgICBzYXdfd2Via2l0Ml93YXJuaW5ncyA9IGdl
bmVyYXRlX2RvYyhnZW5lcmF0b3IsIGFyZ3VtZW50cy5za2lwX2h0bWwpCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBwcmludCgiXG5SZWJhc2luZyBXZWJLaXQyIGRvY3VtZW50YXRpb24uLi4i
KQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5yZWJhc2VfaW5z
dGFsbGVkX2RvY3MoKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAg
ICAgICBwcmludCgiUmViYXNlIGRpZCBub3QgaGFwcGVuLCBsaWtlbHkgbm8gZG9jdW1lbnRhdGlv
biBpcyBwcmVzZW50LiIpCisgICAgcHJlcGFyZV9lbnZpcm9ubWVudF9mb3JfZ3RrZG9jX2dlbmVy
YXRpb24oKQogCi0gICAgIyBGb3IgQ01ha2Ugd2UgYXJlIHN0aWxsIGdlbmVyYXRpbmcgd2Fybmlu
Z3MgYmVjYXVzZSB3ZSBsYWNrIERPTSBiaW5kaW5ncyBkb2NzLAotICAgICMgc28gZG8gbm90IGNh
dXNlIHRoZSBidWlsZCB0byBmYWlsIGZvciBub3cuCisgICAgc2F3X3dlYmtpdDFfd2FybmluZ3Mg
PSBnZW5lcmF0ZV9kb2N1bWVudGF0aW9uX2Zvcl9jb25maWcoY29tbW9uLmJ1aWxkX3BhdGgoJ2d0
a2RvYy13ZWJraXRndGsuY2ZnJykpCisgICAgc2F3X3dlYmtpdDJfd2FybmluZ3MgPSBnZW5lcmF0
ZV9kb2N1bWVudGF0aW9uX2Zvcl9jb25maWcoY29tbW9uLmJ1aWxkX3BhdGgoJ2d0a2RvYy13ZWJr
aXQyZ3RrLmNmZycpKQogICAgIGlmIG5vdCBjb21tb24uaXNfY21ha2VfYnVpbGQoKToKLSAgICAg
ICAgc3lzLmV4aXQoc2F3X3dlYmtpdDFfd2FybmluZ3Mgb3Igc2F3X3dlYmtpdDJfd2FybmluZ3Mp
CisgICAgICAgIGdlbmVyYXRlX2RvY3VtZW50YXRpb25fZm9yX2NvbmZpZyhjb21tb24uYnVpbGRf
cGF0aCgnZ3RrZG9jLXdlYmtpdGRvbS5jZmcnKSkKKworICAgIHN5cy5leGl0KHNhd193ZWJraXQx
X3dhcm5pbmdzIG9yIHNhd193ZWJraXQyX3dhcm5pbmdzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3Rr
L2d0a2RvYy5weSBiL1Rvb2xzL2d0ay9ndGtkb2MucHkKaW5kZXggZDFlZDlkNDQ4OThjODA4OWEy
NTQwNjQzOTcxNGMzMzc0NWRkYTYzNi4uOTQ3YzFlOGM3MWU5ZThlODkwNTBkNDgwMmZjYzk3MWY1
YWJhZjRjYyAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2d0a2RvYy5weQorKysgYi9Ub29scy9ndGsv
Z3RrZG9jLnB5CkBAIC0zOCwxMSArMzgsMTQgQEAgY2xhc3MgR1RLRG9jKG9iamVjdCk6CiAgICAg
bW9kdWxlX25hbWUgICAgICAgIC0tIFRoZSBuYW1lIG9mIHRoZSBkb2N1bWVudGF0aW9uIG1vZHVs
ZS4gRm9yIGxpYnJhcmllcyB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHR5cGlj
YWxseSB0aGUgbGlicmFyeSBuYW1lLiBSZXF1aXJlZCBpZiBub3QgbGlicmFyeSBwYXRoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzIGdpdmVuLgotICAgIHNvdXJjZV9kaXJzICAgICAgICAt
LSBBIGxpc3Qgb2YgcGF0aHMgdG8gdGhlIHNvdXJjZSBjb2RlIHRvIGJlIHNjYW5uZWQuIFJlcXVp
cmVkLgorICAgIHNvdXJjZV9kaXJzICAgICAgICAtLSBBIGxpc3Qgb2YgcGF0aHMgdG8gZGlyZWN0
b3JpZXMgb2Ygc291cmNlIGNvZGUgdG8gYmUgc2Nhbm5lZC4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVxdWlyZWQgaWYgaGVhZGVycyBpcyBub3Qgc3BlY2lmaWVkLgogICAgIGlnbm9yZWRf
ZmlsZXMgICAgICAtLSBBIGxpc3Qgb2YgZmlsZW5hbWVzIHRvIGlnbm9yZSBpbiB0aGUgc291cmNl
IGRpcmVjdG9yeS4gSXQgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seSBuZWNlc3Nh
cnkgdG8gcHJvdmlkZSB0aGUgYmFzZW5hbWVzIG9mIHRoZXNlIGZpbGVzLgogICAgICAgICAgICAg
ICAgICAgICAgICAgICBUeXBpY2FsbHkgaXQgaXMgaW1wb3J0YW50IHRvIHByb3ZpZGUgYW4gdXBk
YXRlZCBsaXN0IG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQgZmlsZXMgdG8g
cHJldmVudCB3YXJuaW5ncyBhYm91dCB1bmRvY3VtZW50ZWQgc3ltYm9scy4KKyAgICBoZWFkZXJz
ICAgICAgICAgICAgLS0gQSBsaXN0IG9mIHBhdGhzIHRvIGhlYWRlcnMgdG8gYmUgc2Nhbm5lZC4g
UmVxdWlyZWQgaWYgc291cmNlX2RpcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbm90
IHNwZWNpZmllZC4KICAgICBuYW1lc3BhY2UgICAgICAgICAgLS0gVGhlIGxpYnJhcnkgbmFtZXNw
YWNlLgogICAgIGRlY29yYXRvciAgICAgICAgICAtLSBJZiBhIGRlY29yYXRvciBpcyB1c2VkIHRv
IHVuaGlkZSBjZXJ0YWluIHN5bWJvbHMgaW4gaGVhZGVyCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbGVzIHRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIGZvciBzdWNjZXNzZnVsIHNjYW5u
aW5nLgpAQCAtODcsNiArOTAsNyBAQCBjbGFzcyBHVEtEb2Mob2JqZWN0KToKICAgICAgICAgIyBQ
YXJhbWV0ZXJzIHNwZWNpZmljIHRvIHNjYW5uaW5nLgogICAgICAgICBzZWxmLm1vZHVsZV9uYW1l
ID0gJycKICAgICAgICAgc2VsZi5zb3VyY2VfZGlycyA9IFtdCisgICAgICAgIHNlbGYuaGVhZGVy
cyA9IFtdCiAgICAgICAgIHNlbGYuaWdub3JlZF9maWxlcyA9IFtdCiAgICAgICAgIHNlbGYubmFt
ZXNwYWNlID0gJycKICAgICAgICAgc2VsZi5kZWNvcmF0b3IgPSAnJwpAQCAtMTEyLDE4ICsxMTYs
MTggQEAgY2xhc3MgR1RLRG9jKG9iamVjdCk6CiAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0
ZXIoYXJncy5pdGVtcygpKToKICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwga2V5LCB2YWx1ZSkK
IAotICAgICAgICBkZWYgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZChrZXkpOgotICAgICAg
ICAgICAgaWYgbm90IGdldGF0dHIoc2VsZiwga2V5KToKLSAgICAgICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJyVzIG5vdCBzcGVjaWZpZWQuJyAlIGtleSkKLQotICAgICAgICByYWlzZV9lcnJv
cl9pZl9ub3Rfc3BlY2lmaWVkKCdvdXRwdXRfZGlyJykKLSAgICAgICAgcmFpc2VfZXJyb3JfaWZf
bm90X3NwZWNpZmllZCgnc291cmNlX2RpcnMnKQotICAgICAgICByYWlzZV9lcnJvcl9pZl9ub3Rf
c3BlY2lmaWVkKCdtb2R1bGVfbmFtZScpCisgICAgICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYsICdv
dXRwdXRfZGlyJyk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ291dHB1dF9kaXIgbm90
IHNwZWNpZmllZC4nKQorICAgICAgICBpZiBub3QgZ2V0YXR0cihzZWxmLCAnbW9kdWxlX25hbWUn
KToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignbW9kdWxlX25hbWUgbm90IHNwZWNpZmll
ZC4nKQorICAgICAgICBpZiBub3QgZ2V0YXR0cihzZWxmLCAnc291cmNlX2RpcnMnKSBhbmQgbm90
IGdldGF0dHIoc2VsZiwgJ2hlYWRlcnMnKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbign
TmVpdGhlciBzb3VyY2VfZGlycyBub3IgaGVhZGVycyBzcGVjaWZpZWQuJyAlIGtleSkKIAogICAg
ICAgICAjIE1ha2UgYWxsIHBhdGhzIGFic29sdXRlIGluIGNhc2Ugd2Ugd2VyZSBwYXNzZWQgcmVs
YXRpdmUgcGF0aHMsIHNpbmNlCiAgICAgICAgICMgd2UgY2hhbmdlIHRoZSBjdXJyZW50IHdvcmtp
bmcgZGlyZWN0b3J5IHdoZW4gZXhlY3V0aW5nIHN1YmNvbW1hbmRzLgogICAgICAgICBzZWxmLm91
dHB1dF9kaXIgPSBvcy5wYXRoLmFic3BhdGgoc2VsZi5vdXRwdXRfZGlyKQogICAgICAgICBzZWxm
LnNvdXJjZV9kaXJzID0gW29zLnBhdGguYWJzcGF0aCh4KSBmb3IgeCBpbiBzZWxmLnNvdXJjZV9k
aXJzXQorICAgICAgICBzZWxmLmhlYWRlcnMgPSBbb3MucGF0aC5hYnNwYXRoKHgpIGZvciB4IGlu
IHNlbGYuaGVhZGVyc10KICAgICAgICAgaWYgc2VsZi5saWJyYXJ5X3BhdGg6CiAgICAgICAgICAg
ICBzZWxmLmxpYnJhcnlfcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzZWxmLmxpYnJhcnlfcGF0aCkK
IApAQCAtMjc0LDggKzI3OCw5IEBAIGNsYXNzIEdUS0RvYyhvYmplY3QpOgogICAgICAgICAgICAg
ICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAogICAgICAgICAgICAgICAgICct
LXJlYnVpbGQtdHlwZXMnXQogCi0gICAgICAgICMgRWFjaCBzb3VyY2UgZGlyZWN0b3J5IHNob3Vs
ZCBiZSBoYXZlIGl0cyBvd24gIi0tc291cmNlLWRpcj0iIHByZWZpeC4KLSAgICAgICAgYXJncy5l
eHRlbmQoWyctLXNvdXJjZS1kaXI9JXMnICUgcGF0aCBmb3IgcGF0aCBpbiBzZWxmLnNvdXJjZV9k
aXJzXSkKKyAgICAgICAgaWYgbm90IHNlbGYuaGVhZGVyczoKKyAgICAgICAgICAgICMgRWFjaCBz
b3VyY2UgZGlyZWN0b3J5IHNob3VsZCBiZSBoYXZlIGl0cyBvd24gIi0tc291cmNlLWRpcj0iIHBy
ZWZpeC4KKyAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1zb3VyY2UtZGlyPSVzJyAlIHBhdGgg
Zm9yIHBhdGggaW4gc2VsZi5zb3VyY2VfZGlyc10pCiAKICAgICAgICAgaWYgc2VsZi5kZWNvcmF0
b3I6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1pZ25vcmUtZGVjb3JhdG9ycz0lcycgJSBz
ZWxmLmRlY29yYXRvcikKQEAgLTI4NCwxMiArMjg5LDE3IEBAIGNsYXNzIEdUS0RvYyhvYmplY3Qp
OgogICAgICAgICBpZiBzZWxmLm91dHB1dF9kaXI6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgn
LS1vdXRwdXQtZGlyPSVzJyAlIHNlbGYub3V0cHV0X2RpcikKIAotICAgICAgICAjIGd0a2RvYy1z
Y2FuIHdhbnRzIHRoZSBiYXNlbmFtZXMgb2YgaWdub3JlZCBoZWFkZXJzLCBzbyBzdHJpcCB0aGUK
LSAgICAgICAgIyBkaXJuYW1lLiBEaWZmZXJlbnQgZnJvbSAiLS1zb3VyY2UtZGlyIiwgdGhlIGhl
YWRlcnMgc2hvdWxkIGJlCi0gICAgICAgICMgc3BlY2lmaWVkIGFzIG9uZSBsb25nIHN0cmluZy4K
LSAgICAgICAgaWdub3JlZF9maWxlc19iYXNlbmFtZXMgPSBzZWxmLl9pZ25vcmVkX2ZpbGVzX2Jh
c2VuYW1lcygpCi0gICAgICAgIGlmIGlnbm9yZWRfZmlsZXNfYmFzZW5hbWVzOgotICAgICAgICAg
ICAgYXJncy5hcHBlbmQoJy0taWdub3JlLWhlYWRlcnM9JXMnICUgaWdub3JlZF9maWxlc19iYXNl
bmFtZXMpCisgICAgICAgICMgV2Ugb25seSBuZWVkIHRvIHBhc3MgdGhlIGxpc3Qgb2YgaWdub3Jl
ZCBmaWxlcyBpZiB0aGUgd2UgYXJlIG5vdCB1c2luZyBhbiBleHBsaWNpdCBsaXN0IG9mIGhlYWRl
cnMuCisgICAgICAgIGlmIG5vdCBzZWxmLmhlYWRlcnM6CisgICAgICAgICAgICAjIGd0a2RvYy1z
Y2FuIHdhbnRzIHRoZSBiYXNlbmFtZXMgb2YgaWdub3JlZCBoZWFkZXJzLCBzbyBzdHJpcCB0aGUK
KyAgICAgICAgICAgICMgZGlybmFtZS4gRGlmZmVyZW50IGZyb20gIi0tc291cmNlLWRpciIsIHRo
ZSBoZWFkZXJzIHNob3VsZCBiZQorICAgICAgICAgICAgIyBzcGVjaWZpZWQgYXMgb25lIGxvbmcg
c3RyaW5nLgorICAgICAgICAgICAgaWdub3JlZF9maWxlc19iYXNlbmFtZXMgPSBzZWxmLl9pZ25v
cmVkX2ZpbGVzX2Jhc2VuYW1lcygpCisgICAgICAgICAgICBpZiBpZ25vcmVkX2ZpbGVzX2Jhc2Vu
YW1lczoKKyAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1pZ25vcmUtaGVhZGVycz0lcycg
JSBpZ25vcmVkX2ZpbGVzX2Jhc2VuYW1lcykKKworICAgICAgICBpZiBzZWxmLmhlYWRlcnM6Cisg
ICAgICAgICAgICBhcmdzLmV4dGVuZChzZWxmLmhlYWRlcnMpCiAKICAgICAgICAgc2VsZi5fcnVu
X2NvbW1hbmQoYXJncykKIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4
IGViNmVkOTRmOTkzOTE5NDc4YTcyYWU0YWRjZjQ1ZjIzNGQxNzA1YWIuLmY3MTZiMGU1MWQyMzdm
OWQ5OTcxNWQ2NzJkMTlkYzFkMGY2YmFhNjcgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0wMi0yNCAgTWFydGluIFJvYmluc29uICA8
bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gZ2VuZXJhdGUtZ3RrZG9jIHNo
b3VsZCBub3QgZ2VuZXJhdGUgZG9jdW1lbnRhdGlvbiBmb3Igc291cmNlIGZpbGVzIGZvciB1bmJ1
aWx0IHNvdXJjZSBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI4NDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1w
b3MuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZTogRGVmaW5lIHRo
ZSBwYXRocyB0byB0aGUgcGtnY29uZmlnIGZpbGVzIGhlcmUsIHNvIHRoYXQgdGhleQorICAgICAg
ICBtYXkgb25lIGRheSBiZSB1c2VkIGluIHRoZSB3ZWJraXRkb20gY29uZmlnIGZpbGUgZ2VuZXJh
dGlvbi4KKwogMjAxNC0wMi0xOCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtFRkxdW0NNYWtlXSBGaXggamF2YXNjcmlwdGNvcmUgdGVzdCBmYWls
aW5ncyBieSB0aGUganNDU3RhY2sgYnJhbmNoIG1lcmdlCmRpZmYgLS1naXQgYS9HTlVtYWtlZmls
ZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IDA4YzkxMTU0MjYwNTAwZGUzZmYwNGIwMjBjZTBk
NjBmOThlOGNmZTguLmFhZjI3OTc2YWRkNGNlNDdlNmEwN2VhNWMxZGE0OWZhYzZlOWExZTkgMTAw
NjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0xMzMsNiAr
MTMzLDE1IEBAIGdpcmRpciA6PSAkKGRhdGFkaXIpL2dpci0xLjAKIHR5cGVsaWJzZGlyIDo9ICQo
bGliZGlyKS9naXJlcG9zaXRvcnktMS4wCiBlbmRpZgogCit3ZWJraXQxX3BrZ19jb25maWdfZmls
ZSA9IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdGd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJT
SU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5wYword2Via2l0Ml9wa2dfY29uZmln
X2ZpbGUgPSBTb3VyY2UvV2ViS2l0Mi93ZWJraXQyZ3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZF
UlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALnBjCisKK2lmIEVOQUJMRV9XRUJL
SVQyCit3ZWJraXRkb21fcGtnY29uZmlnX2ZpbGUgPSAkKHdlYmtpdDJfcGtnX2NvbmZpZ19maWxl
KQorZWxzZQord2Via2l0ZG9tX3BrZ2NvbmZpZ19maWxlID0gJCh3ZWJraXQxX3BrZ19jb25maWdf
ZmlsZSkKK2VuZGlmCisKICMgV2UgZG8gbm90IGNhcmUgYXQgYWxsIGFib3V0IHRoaXMgaW1wbGlj
aXQgYnVpbHQtaW4gbWFrZSBydWxlcywKICMgZGlzYWJsZSB0aGVtIHRvIHNhdmUgc29tZSBidWls
ZCB0aW1lCiAlOiAlLmMKQEAgLTI5MSw0ICszMDAsNCBAQCBlbmRpZgogCUBta2RpciAtcCAkKGRp
c3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0ZG9tZ3RrL2h0bWwKIAlAbWtkaXIgLXAgJChkaXN0
ZGlyKS9Eb2N1bWVudGF0aW9uL3dlYmtpdGRvbWd0ay90bXBsCiAJQC1jcCAuL0RvY3VtZW50YXRp
b24vd2Via2l0ZG9tZ3RrL3RtcGwvKi5zZ21sICQoZGlzdGRpcikvRG9jdW1lbnRhdGlvbi93ZWJr
aXRkb21ndGsvdG1wbAotCUBjcCAuL0RvY3VtZW50YXRpb24vd2Via2l0ZG9tZ3RrL2h0bWwvKiAk
KGRpc3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0ZG9tZ3RrL2h0bWwKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCisJQGNwIC4vRG9jdW1lbnRhdGlvbi93ZWJraXRkb21ndGsvaHRtbC8qICQo
ZGlzdGRpcikvRG9jdW1lbnRhdGlvbi93ZWJraXRkb21ndGsvaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>