<?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>115285</bug_id>
          
          <creation_ts>2013-04-26 16:12:53 -0700</creation_ts>
          <short_desc>[webkitpy] suggest-nominations doesn&apos;t count all qualified patches</short_desc>
          <delta_ts>2013-05-21 11:59:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>115391</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Glenn Adams">glenn</reporter>
          <assigned_to name="Glenn Adams">glenn</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dpranke</cc>
    
    <cc>mjs</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>882068</commentid>
    <comment_count>0</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-26 16:12:53 -0700</bug_when>
    <thetext>The suggest-nominations command does not count reviewed patches for contributors after they become a contributor. In particular, the current code only counts those patches which contain a &quot;Patch by&quot; line, which doesn&apos;t hold for contributors after they become committers. As a result of this, the patch count for committers are undercounted for the purpose of nominating them as reviewer.

In addition, the command nominates reviewers that have not yet been confirmed as committers.

The proposed patch resolves these problems by:

(1) counting all qualified reviewed patches for nominations;
(2) nominating reviewers only if they are existing committers;

In addition, the proposed patch adds a number of useful options to obtain more information about analyzed commits:

--show-skipped-commits

show skipped commits except those that are explicitly marked as unreviewed

--show-skipped-unreviewed-commits

show skipped commits including those explicitly marked as unreviewed

--show-unreviewed-commits

show unmarked, unreviewed, non-gardening commits by committer/reviewer, including counts; when using this option, no nominations are output

--show-unreviewed-commits-for

used instead of --show-unreviewed-commits to show results for specific contributors

--show-unreviewed-commits-revisions

used with --show-unreviewed-commits or --show-unreviewed-commits-for in order to add list of revisions

--record-marked-unreviewed-commits

used with --show-unreviewed-commits or --show-unreviewed-commits-for in order to count marked, unreviewed, non-gardening commits which are normally not counted; a commit is marked as unreviewed by including &apos;Unreviewed&apos; in the change log;

--record-gardening-unreviewed-commits

used with --record-marked-unreviewed-commits in order to additionally counted marked, unreviewed commits that include &quot;Gardening&quot; or &quot;gardening&quot;;

Following is an example of using --show-unreviewed-commits (with post facto sorting of results):

webkit-patch suggest-nominations --show-unreviewed-commits
UNREVIEWED COMMITS: [R] (277) Ryosuke Niwa
UNREVIEWED COMMITS: [R] (100) Simon Fraser
UNREVIEWED COMMITS: [R] ( 95) Kent Tamura
UNREVIEWED COMMITS: [R] ( 64) Dimitri Glazkov
UNREVIEWED COMMITS: [R] ( 63) Ojan Vafai
UNREVIEWED COMMITS: [R] ( 58) Jessie Berlin
UNREVIEWED COMMITS: [R] ( 53) Geoffrey Garen
UNREVIEWED COMMITS: [R] ( 47) Anders Carlsson
UNREVIEWED COMMITS: [R] ( 45) Pavel Feldman
UNREVIEWED COMMITS: [R] ( 44) David Kilzer
UNREVIEWED COMMITS: [R] ( 43) Alexey Proskuryakov
UNREVIEWED COMMITS: [R] ( 40) Sam Weinig
UNREVIEWED COMMITS: [R] ( 36) Adam Barth
UNREVIEWED COMMITS: [R] ( 35) James Robinson
UNREVIEWED COMMITS: [R] ( 31) Oliver Hunt
UNREVIEWED COMMITS: [R] ( 25) Dan Bernstein
UNREVIEWED COMMITS: [R] ( 23) Csaba Osztrogonác
UNREVIEWED COMMITS: [R] ( 21) Martin Robinson
UNREVIEWED COMMITS: [R] ( 20) Mark Rowe
UNREVIEWED COMMITS: [R] ( 19) Beth Dakin
UNREVIEWED COMMITS: [R] ( 16) Dean Jackson
UNREVIEWED COMMITS: [R] ( 14) Andreas Kling
UNREVIEWED COMMITS: [R] ( 12) Andy Estes
UNREVIEWED COMMITS: [R] ( 10) Benjamin Poulain
UNREVIEWED COMMITS: [R] (  9) Levi Weintraub
UNREVIEWED COMMITS: [R] (  9) Daniel Bates
UNREVIEWED COMMITS: [R] (  9) Brady Eidson
UNREVIEWED COMMITS: [R] (  8) Filip Pizlo
UNREVIEWED COMMITS: [R] (  7) Simon Hausmann
UNREVIEWED COMMITS: [R] (  7) Julien Chaffraix
UNREVIEWED COMMITS: [R] (  6) Nate Chapin
UNREVIEWED COMMITS: [R] (  6) Gavin Barraclough
UNREVIEWED COMMITS: [R] (  6) Brent Fulgham
UNREVIEWED COMMITS: [R] (  5) Timothy Hatcher
UNREVIEWED COMMITS: [R] (  4) Michael Saboff
UNREVIEWED COMMITS: [R] (  4) Mark Hahnenberg
UNREVIEWED COMMITS: [R] (  4) Jer Noble
UNREVIEWED COMMITS: [R] (  4) Dirk Pranke
UNREVIEWED COMMITS: [R] (  4) Darin Adler
UNREVIEWED COMMITS: [R] (  3) Chris Fleizach
UNREVIEWED COMMITS: [R] (  2) Yury Semikhatsky
UNREVIEWED COMMITS: [R] (  2) Xan Lopez
UNREVIEWED COMMITS: [R] (  2) Tim Horton
UNREVIEWED COMMITS: [R] (  2) Kentaro Hara
UNREVIEWED COMMITS: [R] (  2) Dmitry Titov
UNREVIEWED COMMITS: [R] (  2) David Hyatt
UNREVIEWED COMMITS: [R] (  2) Antti Koivisto
UNREVIEWED COMMITS: [R] (  1) Zoltan Herczeg
UNREVIEWED COMMITS: [R] (  1) Philip Rogers
UNREVIEWED COMMITS: [R] (  1) Gustavo Noronha Silva
UNREVIEWED COMMITS: [R] (  1) Eric Seidel
UNREVIEWED COMMITS: [R] (  1) Brian Weinstein
UNREVIEWED COMMITS: [R] (  1) Antonio Gomes
UNREVIEWED COMMITS: [C] (102) Raphael Kubo da Costa
UNREVIEWED COMMITS: [C] ( 47) Patrick Gansterer
UNREVIEWED COMMITS: [C] ( 44) Roger Fong
UNREVIEWED COMMITS: [C] ( 35) Lucas Forschler
UNREVIEWED COMMITS: [C] ( 22) Jon Lee
UNREVIEWED COMMITS: [C] ( 15) Mark Lam
UNREVIEWED COMMITS: [C] ( 10) Hin-Chung Lam
UNREVIEWED COMMITS: [C] (  6) Yoshifumi Inoue
UNREVIEWED COMMITS: [C] (  6) Fady Samuel
UNREVIEWED COMMITS: [C] (  6) Adam Kallai
UNREVIEWED COMMITS: [C] (  5) Žan Doberšek
UNREVIEWED COMMITS: [C] (  5) Pavel Podivilov
UNREVIEWED COMMITS: [C] (  4) Balazs Kelemen
UNREVIEWED COMMITS: [C] (  3) Peter Kasting
UNREVIEWED COMMITS: [C] (  3) Ilya Tikhonovsky
UNREVIEWED COMMITS: [C] (  3) Chris Evans
UNREVIEWED COMMITS: [C] (  2) Takashi Sakamoto
UNREVIEWED COMMITS: [C] (  2) Pierre Rossi
UNREVIEWED COMMITS: [C] (  2) Kenichi Ishibashi
UNREVIEWED COMMITS: [C] (  2) Karen Grunberg
UNREVIEWED COMMITS: [C] (  2) Antoine Quint
UNREVIEWED COMMITS: [C] (  2) Andrey Adaykin
UNREVIEWED COMMITS: [C] (  2) Adam Klein
UNREVIEWED COMMITS: [C] (  1) Xiaohai Wei
UNREVIEWED COMMITS: [C] (  1) Xianzhu Wang
UNREVIEWED COMMITS: [C] (  1) W. James MacLean
UNREVIEWED COMMITS: [C] (  1) Vincent Scheib
UNREVIEWED COMMITS: [C] (  1) Terry Anderson
UNREVIEWED COMMITS: [C] (  1) Silvia Pfeiffer
UNREVIEWED COMMITS: [C] (  1) Sadrul Habib Chowdhury
UNREVIEWED COMMITS: [C] (  1) Raymond Toy
UNREVIEWED COMMITS: [C] (  1) Rafael Weinstein
UNREVIEWED COMMITS: [C] (  1) Mikhail Pozdnyakov
UNREVIEWED COMMITS: [C] (  1) Mike Lawther
UNREVIEWED COMMITS: [C] (  1) Michael Nordman
UNREVIEWED COMMITS: [C] (  1) Mark Pilgrim
UNREVIEWED COMMITS: [C] (  1) Luciano Wolf
UNREVIEWED COMMITS: [C] (  1) Leo Yang
UNREVIEWED COMMITS: [C] (  1) Lauro Neto
UNREVIEWED COMMITS: [C] (  1) Jesus Sanchez-Palencia
UNREVIEWED COMMITS: [C] (  1) Jeffrey Pfau
UNREVIEWED COMMITS: [C] (  1) Hayato Ito
UNREVIEWED COMMITS: [C] (  1) Dominic Mazzoni
UNREVIEWED COMMITS: [C] (  1) Dmitry Gorbik
UNREVIEWED COMMITS: [C] (  1) Dave Barton
UNREVIEWED COMMITS: [C] (  1) Dana Jansens
UNREVIEWED COMMITS: [C] (  1) Andras Becsi
UNREVIEWED COMMITS: Total 1660</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882071</commentid>
    <comment_count>1</comment_count>
      <attachid>199870</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-26 16:20:58 -0700</bug_when>
    <thetext>Created attachment 199870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882141</commentid>
    <comment_count>2</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-26 23:20:00 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=199870) [details]
&gt; Patch

I should also mention that this patch divides the prior functionality of SuggestNominations into AbstractSuggestCommand and SuggestNominations. This was done in order to prepare for the addition of a SuggestEmeriti class in order to add a suggest-emeriti command in a separate, upcoming patch, where both of these commands reuse the functionality in the base AbstractSuggestCommand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882247</commentid>
    <comment_count>3</comment_count>
      <attachid>199918</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-27 15:34:51 -0700</bug_when>
    <thetext>Created attachment 199918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882248</commentid>
    <comment_count>4</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-27 15:38:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=199918) [details]
&gt; Patch

Defer addition of support for additional commit analysis output, which is better targeted to a new command &apos;analyze-commits&apos;. Once the present patch is landed (mutatis mutants) I will open a new bug with a separate patch to add such a command.

This allows the current patch to be smaller and focus on abstracting base functionality into the new AbstractCommitLogCommand class and make the bug fixes noted in this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882365</commentid>
    <comment_count>5</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-27 23:24:57 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; The suggest-nominations command does not count reviewed patches for contributors after they become a contributor.

s/after they become a contributor/after they become a committer/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882367</commentid>
    <comment_count>6</comment_count>
      <attachid>199960</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-27 23:29:49 -0700</bug_when>
    <thetext>Created attachment 199960
Remove duplication changelog entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882464</commentid>
    <comment_count>7</comment_count>
      <attachid>199960</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-28 21:55:34 -0700</bug_when>
    <thetext>Comment on attachment 199960
Remove duplication changelog entry.

Too many changes at once. Please don&apos;t include the changes to add AbstractCommitLogCommand in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882718</commentid>
    <comment_count>8</comment_count>
      <attachid>200036</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-29 12:10:56 -0700</bug_when>
    <thetext>Created attachment 200036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882719</commentid>
    <comment_count>9</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-29 12:12:42 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=200036) [details]
&gt; Patch

Removed AbstractCommitLogCommand and simplified changes as requested by rniwa.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882774</commentid>
    <comment_count>10</comment_count>
      <attachid>200036</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-29 14:50:13 -0700</bug_when>
    <thetext>Comment on attachment 200036
Patch

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

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:48
&gt; +    _match_leading_indent = re.compile(r&quot;^[ ]{4}&quot;, re.MULTILINE)
&gt; +    _match_reviewed_by = re.compile(r&apos;^\s*((\w+\s+)+and\s+)?(Review|Rubber(\s*|-)stamp)(s|ed)?\s+([a-z]+\s+)*?by\s+(?P&lt;reviewers&gt;.*?)[\.,]?\s*$&apos;, re.MULTILINE)
&gt; +    _match_patch_by = re.compile(r&apos;^Patch by (?P&lt;name&gt;.+?)\s+&lt;(?P&lt;email&gt;[^&lt;&gt;]+)&gt; on (?P&lt;date&gt;\d{4}-\d{2}-\d{2})$&apos;, re.MULTILINE)
&gt; +    _match_committer = re.compile(r&apos;^Author: (?P&lt;email&gt;\S+)\s+&lt;[^&gt;]+&gt;$&apos;, re.MULTILINE)
&gt; +    _match_date = re.compile(r&apos;^Date:   \S{3} (?P&lt;month&gt;\S{3}) (?P&lt;day&gt;\d{1,2}) (?P&lt;time&gt;\d{2}:\d{2}:\d{2}) (?P&lt;year&gt;\d{4}) [\+\-]\d{4}$&apos;, re.MULTILINE)
&gt; +    _match_revision = re.compile(r&apos;^git-svn-id: http://svn.webkit.org/repository/webkit/trunk@(?P&lt;svnid&gt;\d+) (?P&lt;gitid&gt;[0-9a-f\-]{36})$&apos;, re.MULTILINE)

Our naming convection is to postfix these names with _regex instead of prefixing them with match since they&apos;re not match objects.
Looks like there&apos;s a lot of code duplication with ChangeLogEntry at http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/checkout/changelog.py#L60

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:96
&gt; +    def _recent_commits(self):

Looks like much of code in this function can be substituted by some combinations of method calls in ChangeLogEntry if we generalize the class well enough.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:175
&gt; +        for commit in self._recent_commits():

Looks like it&apos;s completely unnecessary for _recent_commits to yield. This function can iterate over self._recent_commit_messages()
and call a function that analyzes the commit and returns None when it needs to be skipped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882813</commentid>
    <comment_count>11</comment_count>
      <attachid>200055</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-29 16:31:14 -0700</bug_when>
    <thetext>Created attachment 200055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882822</commentid>
    <comment_count>12</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-29 16:44:29 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 200036 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200036&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:48
&gt; &gt; +    _match_leading_indent = re.compile(r&quot;^[ ]{4}&quot;, re.MULTILINE)
&gt; &gt; +    _match_reviewed_by = re.compile(r&apos;^\s*((\w+\s+)+and\s+)?(Review|Rubber(\s*|-)stamp)(s|ed)?\s+([a-z]+\s+)*?by\s+(?P&lt;reviewers&gt;.*?)[\.,]?\s*$&apos;, re.MULTILINE)
&gt; &gt; +    _match_patch_by = re.compile(r&apos;^Patch by (?P&lt;name&gt;.+?)\s+&lt;(?P&lt;email&gt;[^&lt;&gt;]+)&gt; on (?P&lt;date&gt;\d{4}-\d{2}-\d{2})$&apos;, re.MULTILINE)
&gt; &gt; +    _match_committer = re.compile(r&apos;^Author: (?P&lt;email&gt;\S+)\s+&lt;[^&gt;]+&gt;$&apos;, re.MULTILINE)
&gt; &gt; +    _match_date = re.compile(r&apos;^Date:   \S{3} (?P&lt;month&gt;\S{3}) (?P&lt;day&gt;\d{1,2}) (?P&lt;time&gt;\d{2}:\d{2}:\d{2}) (?P&lt;year&gt;\d{4}) [\+\-]\d{4}$&apos;, re.MULTILINE)
&gt; &gt; +    _match_revision = re.compile(r&apos;^git-svn-id: http://svn.webkit.org/repository/webkit/trunk@(?P&lt;svnid&gt;\d+) (?P&lt;gitid&gt;[0-9a-f\-]{36})$&apos;, re.MULTILINE)
&gt; 
&gt; Our naming convection is to postfix these names with _regex instead of prefixing them with match since they&apos;re not match objects.

Change to _regexp suffix, such as used in changelogentry.py.

&gt; Looks like there&apos;s a lot of code duplication with ChangeLogEntry at http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/checkout/changelog.py#L60

Turns out to be very little overlap. In particular, only reuse is ChangeLogEntry.reviewed_by_regexp, which I&apos;ve reused. The reason there is little overlap is because:

(1) commit log doesn&apos;t contain change log date line, but uses git log&apos;s &apos;Date: &apos; line;
(2) determination of author uses different algorithm, i.e., uses &apos;Patch by&apos; line (from change log body) first then uses &apos;Author: &apos; git log line second

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:96
&gt; &gt; +    def _recent_commits(self):
&gt; 
&gt; Looks like much of code in this function can be substituted by some combinations of method calls in ChangeLogEntry if we generalize the class well enough.

Not much. See above. Change log and commit log analysis use different algorithms and information to determine committer, author, and date.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:175
&gt; &gt; +        for commit in self._recent_commits():
&gt; 
&gt; Looks like it&apos;s completely unnecessary for _recent_commits to yield. This function can iterate over self._recent_commit_messages()
&gt; and call a function that analyzes the commit and returns None when it needs to be skipped.

I swapped this out with iteration over messages invoking an analyzer callback that filters entries and extracts state as needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882826</commentid>
    <comment_count>13</comment_count>
      <attachid>200055</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-29 16:49:26 -0700</bug_when>
    <thetext>Comment on attachment 200055
Patch

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

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:99
&gt; +        # Determine committer if possible, otherwise skip commit.

We should share code with ChangeLogEntry as I mentioned earlier. r-.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:160
&gt; +        on_analysis(analysis, committer, commit_date, revision, author_email, author_name, contributor, reviewers)

Why do we need a callback function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882840</commentid>
    <comment_count>14</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-29 17:01:42 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 200055 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200055&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:99
&gt; &gt; +        # Determine committer if possible, otherwise skip commit.
&gt; 
&gt; We should share code with ChangeLogEntry as I mentioned earlier. r-.

I explained in comment #12 below why I have shared all that can be reasonably shared. Change log and commit log entries use different data sets, and different semantics for what constitutes author.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:160
&gt; &gt; +        on_analysis(analysis, committer, commit_date, revision, author_email, author_name, contributor, reviewers)
&gt; 
&gt; Why do we need a callback function?

How would your propose to write this logic then? It worked fine as a generator,  and you asked it to be change to &quot;call a function that analyzes the commit&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882841</commentid>
    <comment_count>15</comment_count>
      <attachid>200055</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-29 17:04:43 -0700</bug_when>
    <thetext>Comment on attachment 200055
Patch

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

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:166
&gt; +    def _analyze_commits(self, on_analysis, analysis, analyze=None):
&gt; +        if not analyze:
&gt; +            analyze = self._analyze_commit
&gt; +        for commit_message in self._recent_commit_messages():
&gt; +            analyze(commit_message, on_analysis, analysis)

This should be merged into the caller of _analyze_commits. This function doesn&apos;t do anything useful and only adds undesirable indirections.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:213
&gt; +        self._analyze_commits(_on_analysis, analysis)

This is the sole caller of _analyze_commits. We shouldn&apos;t need to make it take two callbacks.
We don&apos;t any more premature/over generalization in webkitpy. It&apos;s bad as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882868</commentid>
    <comment_count>16</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-29 17:36:12 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 200055 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200055&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:166
&gt; &gt; +    def _analyze_commits(self, on_analysis, analysis, analyze=None):
&gt; &gt; +        if not analyze:
&gt; &gt; +            analyze = self._analyze_commit
&gt; &gt; +        for commit_message in self._recent_commit_messages():
&gt; &gt; +            analyze(commit_message, on_analysis, analysis)
&gt; 
&gt; This should be merged into the caller of _analyze_commits. This function doesn&apos;t do anything useful and only adds undesirable indirections.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:213
&gt; &gt; +        self._analyze_commits(_on_analysis, analysis)
&gt; 
&gt; This is the sole caller of _analyze_commits. We shouldn&apos;t need to make it take two callbacks.
&gt; We don&apos;t any more premature/over generalization in webkitpy. It&apos;s bad as is.

I disagree. There is a perfectly good reason to do this. At your request, I have already (temporarily) backed out the addition of an abstract commit log command base class, but there is good cause to begin to generalize the analysis process to support [1][2][3]:

[1] https://bugs.webkit.org/show_bug.cgi?id=115387
[2] https://bugs.webkit.org/show_bug.cgi?id=115388
[3] https://bugs.webkit.org/show_bug.cgi?id=115391</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882872</commentid>
    <comment_count>17</comment_count>
      <attachid>200065</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-29 17:46:34 -0700</bug_when>
    <thetext>Created attachment 200065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882881</commentid>
    <comment_count>18</comment_count>
      <attachid>200065</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-29 18:13:40 -0700</bug_when>
    <thetext>Comment on attachment 200065
Patch

I agree with Ryosuke here, I don&apos;t get _analyze_commits. Especially the last, never used, argument.

If you need the function for future change, just add it with those changes.

I would also modify contributors.json separately from this patch.

&gt; &gt; This is the sole caller of _analyze_commits. We shouldn&apos;t need to make it take two callbacks.
&gt; &gt; We don&apos;t any more premature/over generalization in webkitpy. It&apos;s bad as is.
&gt; 
&gt; I disagree. There is a perfectly good reason to do this.

What is the good reason?
This is the kind of information best detailed in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882884</commentid>
    <comment_count>19</comment_count>
      <attachid>200068</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-29 18:26:12 -0700</bug_when>
    <thetext>Created attachment 200068
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882885</commentid>
    <comment_count>20</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-29 18:28:06 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 200065 [details])
&gt; I agree with Ryosuke here, I don&apos;t get _analyze_commits. Especially the last, never used, argument.
&gt; 
&gt; If you need the function for future change, just add it with those changes.
&gt; 
&gt; I would also modify contributors.json separately from this patch.

Done.

&gt; 
&gt; &gt; &gt; This is the sole caller of _analyze_commits. We shouldn&apos;t need to make it take two callbacks.
&gt; &gt; &gt; We don&apos;t any more premature/over generalization in webkitpy. It&apos;s bad as is.
&gt; &gt; 
&gt; &gt; I disagree. There is a perfectly good reason to do this.
&gt; 
&gt; What is the good reason?
&gt; This is the kind of information best detailed in the ChangeLog.

Removed _analyze_commits, recoding inline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882905</commentid>
    <comment_count>21</comment_count>
      <attachid>200068</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-29 20:02:19 -0700</bug_when>
    <thetext>Comment on attachment 200068
Patch

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

Comments bellow.

Personally I think it is okay to parse commit messages differently than ChangeLog. But realistically Ryosuke is the maintainer of webkitpy so better get his input too.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:91
&gt; +    def _commit_date_from_match(self, match):
&gt; +        year = match.group(&apos;year&apos;)
&gt; +        month_abbr = match.group(&apos;month&apos;)
&gt; +        month = 0
&gt; +        for i in range(len(calendar.month_abbr)):
&gt; +            if calendar.month_abbr[i] == month_abbr:
&gt; +                month = i + 1
&gt; +                break
&gt; +        day = match.group(&apos;day&apos;)
&gt; +        return &apos;%04d-%02d-%02d&apos; % (int(year), month, int(day))

Instead, I could just have git give the nicely formatted date.
Look for --pretty in the documentation.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:97
&gt; +    def _analyze_commit(self, commit_message, on_analysis, analysis):

The code of this function is made extremely fragile by all the
   if not match
       return

Maybe it should instead raise an exception when it fails parsing?
The caller code can then catch the exceptions and notify the user of how many commits were skipped. It would not prevent the code from breaking, but at least the user of the command would know it is broken.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:98
&gt; +

Empty line.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:107
&gt; +        # Determine committer if possible, otherwise skip commit.
&gt; +        committer_match = self._committer_regexp.search(commit_message)
&gt; +        if not committer_match:
&gt; +            return
&gt; +
&gt; +        # Determine committer email if possible, otherwise skip commit.
&gt; +        committer_email = committer_match.group(&apos;email&apos;)
&gt; +        if not committer_email:
&gt; +            return

This looks like the common pattern. Maybe make a function out of it so that each of those 4 lines group become just one line.

The comments are not adding information here.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:109
&gt; +        # Determine if committer is a known contributor, i.e., registered in committers.py, otherwise skip commit.

This sounds like a valid case for failing, no?

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:154
&gt; +        # Determine reviewers if possible, otherwise optionally skip commit.

optionally?

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:209
&gt; +        for commit_message in self._recent_commit_messages():
&gt; +            self._analyze_commit(commit_message, _on_analysis, analysis)

Why does this with the callback _on_analysis?

What about renaming _analyze_commit to parse_commit. It returns a simple object that you pass to a _add_to_contribution_histogram or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882923</commentid>
    <comment_count>22</comment_count>
      <attachid>200079</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-29 21:14:12 -0700</bug_when>
    <thetext>Created attachment 200079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882926</commentid>
    <comment_count>23</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-29 21:52:29 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 200068 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200068&amp;action=review
&gt; 
&gt; Comments bellow.
&gt; 
&gt; Personally I think it is okay to parse commit messages differently than ChangeLog. But realistically Ryosuke is the maintainer of webkitpy so better get his input too.

I already discussed with Ryosuke. If he has any specific suggested changes, I&apos;d be happy to apply them. I&apos;m not really changing anything in this patch with respect to how the commit log data is parsed. It was already different than the change log parser before this patch, and nothing is being changed here in that respect.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:91
&gt; &gt; +    def _commit_date_from_match(self, match):
&gt; &gt; +        year = match.group(&apos;year&apos;)
&gt; &gt; +        month_abbr = match.group(&apos;month&apos;)
&gt; &gt; +        month = 0
&gt; &gt; +        for i in range(len(calendar.month_abbr)):
&gt; &gt; +            if calendar.month_abbr[i] == month_abbr:
&gt; &gt; +                month = i + 1
&gt; &gt; +                break
&gt; &gt; +        day = match.group(&apos;day&apos;)
&gt; &gt; +        return &apos;%04d-%02d-%02d&apos; % (int(year), month, int(day))
&gt; 
&gt; Instead, I could just have git give the nicely formatted date.
&gt; Look for --pretty in the documentation.

Fixed. Use --date=iso option on git log, replace regex.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:97
&gt; &gt; +    def _analyze_commit(self, commit_message, on_analysis, analysis):
&gt; 
&gt; The code of this function is made extremely fragile by all the
&gt;    if not match
&gt;        return

Well, no more fragile than the existing code, which used if not match continue. In any case, I&apos;ve fixed by adding exceptions as you suggest below.

&gt; 
&gt; Maybe it should instead raise an exception when it fails parsing?
&gt; The caller code can then catch the exceptions and notify the user of how many commits were skipped. It would not prevent the code from breaking, but at least the user of the command would know it is broken.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:98
&gt; &gt; +
&gt; 
&gt; Empty line.

Fixed.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:107
&gt; &gt; +        # Determine committer if possible, otherwise skip commit.
&gt; &gt; +        committer_match = self._committer_regexp.search(commit_message)
&gt; &gt; +        if not committer_match:
&gt; &gt; +            return
&gt; &gt; +
&gt; &gt; +        # Determine committer email if possible, otherwise skip commit.
&gt; &gt; +        committer_email = committer_match.group(&apos;email&apos;)
&gt; &gt; +        if not committer_email:
&gt; &gt; +            return
&gt; 
&gt; This looks like the common pattern. Maybe make a function out of it so that each of those 4 lines group become just one line.

Doing this makes the code harder to read by my estimation and doesn&apos;t really buy much. I&apos;d prefer not to do this unless you insist.

&gt; 
&gt; The comments are not adding information here.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:109
&gt; &gt; +        # Determine if committer is a known contributor, i.e., registered in committers.py, otherwise skip commit.
&gt; 
&gt; This sounds like a valid case for failing, no?

Reordered the code a bit, but contributor == None isn&apos;t an error condition, it merely means the author (as previously determined) does not yet have an entry in the contributors list.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:154
&gt; &gt; +        # Determine reviewers if possible, otherwise optionally skip commit.
&gt; 
&gt; optionally?

Now throws CommitLogMissingReviewer.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:209
&gt; &gt; +        for commit_message in self._recent_commit_messages():
&gt; &gt; +            self._analyze_commit(commit_message, _on_analysis, analysis)
&gt; 
&gt; Why does this with the callback _on_analysis?
&gt; 
&gt; What about renaming _analyze_commit to parse_commit. It returns a simple object that you pass to a _add_to_contribution_histogram or something?

You guys are killing me. That&apos;s what I did to start with, via a generator and yield, but Ryosuke asked to change to a callback. Can we keep it as is? I&apos;m going to be tweaking this very soon anyway in order to address [1].

[1] https://bugs.webkit.org/show_bug.cgi?id=115391</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883349</commentid>
    <comment_count>24</comment_count>
      <attachid>200079</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-30 16:59:57 -0700</bug_when>
    <thetext>Comment on attachment 200079
Patch

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

I would really prefer the callback approach to be cleaned but I am too tired to fight.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:40
&gt; +

Blank line.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:46
&gt; +

Blank line.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:53
&gt; -    help_text = &quot;Suggest contributors for committer/reviewer nominations&quot;
&gt; +    help_text = &quot;Suggest nominations for committer/reviewer role&quot;

I think the previous text is better.

The patch count is only a lower limit. You can have thousands of patches and not be nominated.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:126
&gt; +        if not author_match:
&gt; +            raise CommitLogError

How could this happen?
We could not get here if committer_match is None.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:132
&gt; +        if not author_email:
&gt; +            raise CommitLogError

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883361</commentid>
    <comment_count>25</comment_count>
      <attachid>200196</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-30 18:46:59 -0700</bug_when>
    <thetext>Created attachment 200196
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883364</commentid>
    <comment_count>26</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-30 18:49:10 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 200079 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200079&amp;action=review
&gt; 
&gt; I would really prefer the callback approach to be cleaned but I am too tired to fight.

I went ahead and recoded this as you suggested. See _parse_commit_message and _count_commit.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:40
&gt; &gt; +
&gt; 
&gt; Blank line.

Fixed.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:46
&gt; &gt; +
&gt; 
&gt; Blank line.

Fixed.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:53
&gt; &gt; -    help_text = &quot;Suggest contributors for committer/reviewer nominations&quot;
&gt; &gt; +    help_text = &quot;Suggest nominations for committer/reviewer role&quot;
&gt; 
&gt; I think the previous text is better.

Fixed.

&gt; 
&gt; The patch count is only a lower limit. You can have thousands of patches and not be nominated.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:126
&gt; &gt; +        if not author_match:
&gt; &gt; +            raise CommitLogError
&gt; 
&gt; How could this happen?
&gt; We could not get here if committer_match is None.

Fixed.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:132
&gt; &gt; +        if not author_email:
&gt; &gt; +            raise CommitLogError
&gt; 
&gt; ditto

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883370</commentid>
    <comment_count>27</comment_count>
      <attachid>200196</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-30 19:28:35 -0700</bug_when>
    <thetext>Comment on attachment 200196
Patch for landing

Clearing flags on attachment: 200196

Committed r149419: &lt;http://trac.webkit.org/changeset/149419&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883371</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-30 19:28:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891927</commentid>
    <comment_count>29</comment_count>
      <attachid>200196</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-05-21 11:59:26 -0700</bug_when>
    <thetext>Comment on attachment 200196
Patch for landing

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

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:81
&gt; +        messages = re.split(r&quot;^commit \w{40}$&quot;, git_log, flags=re.MULTILINE)[1:]  # Ignore the first message which will be empty.

Can&apos;t use this. Only Python 2.7 supports flags argument, and we still need to support Python 2.6 on Windows.
Fixed it in http://trac.webkit.org/changeset/150461.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199870</attachid>
            <date>2013-04-26 16:20:58 -0700</date>
            <delta_ts>2013-04-27 15:34:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115285-20130426162019.patch</filename>
            <type>text/plain</type>
            <size>43032</size>
            <attacher name="Glenn Adams">glenn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MjEwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGIzZWRjMTQ0MWQxZDE4ZjI4YmFkNWM4YTFhMDBiYmQw
ZTYwOThmMi4uZjVhMWE0NWViNWJiMDk5NTY3ZDgzY2QyYmQ0MWQ5NDA0OTFmOWZjNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3
IEBACisyMDEzLTA0LTI2ICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CisKKyAgICAg
ICAgW3dlYmtpdHB5XSBzdWdnZXN0LW5vbWluYXRpb25zIGRvZXNuJ3QgY291bnQgYWxsIHF1YWxp
ZmllZCBwYXRjaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTUyODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbjog
QWRkIG1pc3NpbmcgZW1haWwgYWRkcmVzc2VzIHRoYXQgYXBwZWFyIGluIGxvZyBlbnRyaWVzLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlv
bnMucHk6CisgICAgICAgIChBYnN0cmFjdFN1Z2dlc3RDb21tYW5kKTogQ3JlYXRlIGJhc2UgY2xh
c3MgdGhhdCBwZXJmb3JtcyBjb21tb24gZnVuY3Rpb25zLCB1c2VkIGluaXRpYWxseSBieSBTdWdn
ZXN0Tm9taW5hdGlvbnMsCisgICAgICAgIGFuZCBhbnRpY2lwYXRlZCBmb3IgdXNlIGluIGEgbmV3
IFN1Z2dlc3RFbWVyaXRpIGNsYXNzIHRoYXQgd2lsbCBhbHNvIHVzZSB0aGVzZSBmdW5jdGlvbnMu
CisgICAgICAgIChBYnN0cmFjdFN1Z2dlc3RDb21tYW5kLl9faW5pdF9fKToKKyAgICAgICAgKEFi
c3RyYWN0U3VnZ2VzdENvbW1hbmQuX2NvbW1pdF9vcHRpb25zKToKKyAgICAgICAgKEFic3RyYWN0
U3VnZ2VzdENvbW1hbmQuX2luaXRfb3B0aW9ucyk6CisgICAgICAgIChBYnN0cmFjdFN1Z2dlc3RD
b21tYW5kLl9zdWJzdGl0dXRlX291dHB1dCk6CisgICAgICAgIChBYnN0cmFjdFN1Z2dlc3RDb21t
YW5kLl9wcmludF9zdWJzdGl0dXRlX291dHB1dCk6CisgICAgICAgIChBYnN0cmFjdFN1Z2dlc3RD
b21tYW5kLl9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKToKKyAgICAgICAgKEFic3RyYWN0U3VnZ2Vz
dENvbW1hbmQuX21heWJlX3Nob3dfc2tpcHBlZF9jb21taXQpOgorICAgICAgICAoQWJzdHJhY3RT
dWdnZXN0Q29tbWFuZC5fYXV0aG9yX25hbWVfZnJvbV9lbWFpbCk6CisgICAgICAgIChBYnN0cmFj
dFN1Z2dlc3RDb21tYW5kLl9jb21taXRfZGF0ZV9mcm9tX21hdGNoKToKKyAgICAgICAgKEFic3Ry
YWN0U3VnZ2VzdENvbW1hbmQuX2NvbnRyaWJ1dG9yX2Zyb21fZW1haWwpOgorICAgICAgICAoQWJz
dHJhY3RTdWdnZXN0Q29tbWFuZC5fcmVjb3JkX3VucmV2aWV3ZWRfY29tbWl0KToKKyAgICAgICAg
KEFic3RyYWN0U3VnZ2VzdENvbW1hbmQuX3VucmV2aWV3ZWRfY29tbWl0c19jb3VudCk6CisgICAg
ICAgIChBYnN0cmFjdFN1Z2dlc3RDb21tYW5kLl9zaG93X3VucmV2aWV3ZWRfY29tbWl0c19yZXZp
c2lvbnMpOgorICAgICAgICAoQWJzdHJhY3RTdWdnZXN0Q29tbWFuZC5fY29udHJpYnV0b3JfbmFt
ZXNfZnJvbV9uYW1lX29yX2VtYWlsX2xpc3QpOgorICAgICAgICAoQWJzdHJhY3RTdWdnZXN0Q29t
bWFuZC5fc2hvd191bnJldmlld2VkX2NvbW1pdHMpOgorICAgICAgICAoQWJzdHJhY3RTdWdnZXN0
Q29tbWFuZC5fcmV2aWV3ZXJzX2Zyb21fbmFtZV9vcl9lbWFpbF9saXN0KToKKyAgICAgICAgKEFi
c3RyYWN0U3VnZ2VzdENvbW1hbmQuX3JlY29yZF9yZXZpZXdlZF9jb21taXQpOgorICAgICAgICAo
QWJzdHJhY3RTdWdnZXN0Q29tbWFuZC5fcmVjZW50X2NvbW1pdHMpOiBSZWltcGxlbWVudCBhcyBh
IGdlbmVyYXRvciB3aXRoIGltcHJvdmVkIHJlcG9ydGluZyBhbmQgY29tbWl0IGxvZyBwYXJzaW5n
LgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zKTogTW92ZSBjb21tb24gZnVuY3Rpb25zIGlu
dG8gQWJzdHJhY3RTdWdnZXN0Q29tbWFuZCBiYXNlIGNsYXNzLgorICAgICAgICAoU3VnZ2VzdE5v
bWluYXRpb25zLl9faW5pdF9fKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5fbm9taW5h
dGlvbl9vcHRpb25zKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5fb3V0cHV0X29wdGlv
bnMpOgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9pbml0X29wdGlvbnMpOgorICAgICAg
ICAoU3VnZ2VzdE5vbWluYXRpb25zLl9jb3VudF9yZWNlbnRfcGF0Y2hlcyk6CisgICAgICAgIChT
dWdnZXN0Tm9taW5hdGlvbnMuX2NvbGxlY3Rfbm9taW5hdGlvbnMpOgorICAgICAgICAoU3VnZ2Vz
dE5vbWluYXRpb25zLl9wcmludF9ub21pbmF0aW9ucyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5h
dGlvbnMuX3ByaW50X2NvdW50cyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMuZXhlY3V0
ZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21p
bmF0aW9uc191bml0dGVzdC5weTogRW5zdXJlIG5vIHRlc3QgcmVncmVzc2lvbnMuCisgICAgICAg
IChfbWFrZV9vcHRpb25zKToKKyAgICAgICAgKHRlc3RfcmVjZW50X2NvbW1pdF9tZXNzYWdlcyk6
CisgICAgICAgICh0ZXN0X2Jhc2ljKToKKwogMjAxMy0wNC0yNiAgWmFuIERvYmVyc2VrICA8emRv
YmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQ2xlYW4gdXAgdGhlIFRlc3RXZWJL
aXRBUEkgR05VbWFrZWZpbGUuYW0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbiBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbgppbmRleCAyODhjYmZkNzgwMmI2NTkxNWRm
MDUwNWIyZTZiZjcwNDJjMDM5NThjLi4wMDM0YzZjY2M5MzZkZWQ2MTMwYzEzMGNhOTk4OGQ2YWEx
OGM2ZmQzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcv
Y29udHJpYnV0b3JzLmpzb24KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29u
ZmlnL2NvbnRyaWJ1dG9ycy5qc29uCkBAIC00NCw2ICs0NCw3IEBACiAgICAgICAgICJLdWxhbnRo
YWl2ZWwgUGFsYW5pY2hhbXkiOiB7ImVtYWlscyI6IFsia3VsYW50aGFpdmVsQGNvZGVhdXJvcmEu
b3JnIl0sICJuaWNrcyI6IFsia3ZlbCJdfSwKICAgICAgICAgIktvamkgSGFyYSI6IHsiZW1haWxz
IjogWyJrb2ppaEBjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJrb2ppaCJdfSwKICAgICAgICAg
IktvamkgSXNoaWkiOiB7ImVtYWlscyI6IFsia29qaWlzaGlAZ21haWwuY29tIl19LAorICAgICAg
ICAiTGlhIENoZW4iOiB7ImVtYWlscyI6IFsibGlhY2hlbkByaW0uY29tIl19LAogICAgICAgICAi
TWljaGFlbCBQcnVldHQiOiB7ImVtYWlscyI6IFsibWljaGFlbEA2OGsub3JnIl0sICJuaWNrcyI6
IFsibXBydWV0dCJdfSwKICAgICAgICAgIk1paGFpIEJhbGFuIjogeyJlbWFpbHMiOiBbIm1pYmFs
YW5AYWRvYmUuY29tIl0sICJuaWNrcyI6IFsibWlDaG91Il19LAogICAgICAgICAiTWloYWkgTWFl
cmVhbiI6IHsiZW1haWxzIjogWyJtbWFlcmVhbkBhZG9iZS5jb20iXSwgIm5pY2tzIjogWyJtbWFl
cmVhbiJdfSwKQEAgLTEyMSw3ICsxMjIsNyBAQAogICAgICAgICAiQ2hyaXMgR3VpbGxvcnkiOiB7
ImVtYWlscyI6IFsiY3RndWlsQGNocm9taXVtLm9yZyIsICJjaHJpcy5ndWlsbG9yeUBnb29nbGUu
Y29tIl0sICJuaWNrcyI6IFsiY3RndWlsIl19LAogICAgICAgICAiQ2hyaXMgUGV0ZXJzZW4iOiB7
ImVtYWlscyI6IFsiY3BldGVyc2VuQGFwcGxlLmNvbSJdLCAibmlja3MiOiBbImNwZXRlcnNlbiJd
fSwKICAgICAgICAgIkNocmlzdGlhbiBEeXdhbiI6IHsiZW1haWxzIjogWyJjaHJpc3RpYW5AdHdv
dG9hc3RzLmRlIiwgImNocmlzdGlhbkB3ZWJraXQub3JnIiwgImNocmlzdGlhbkBsYW5lZG8uY29t
Il19LAotICAgICAgICAiQ2hyaXN0b3BoZSBEdW1leiI6IHsiZW1haWxzIjogWyJkY2hyaXNAZ21h
aWwuY29tIiwgImNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20iXSwgIm5pY2tzIjogWyJjZHVtZXoi
XX0sCisgICAgICAgICJDaHJpc3RvcGhlIER1bWV6IjogeyJlbWFpbHMiOiBbImRjaHJpc0BnbWFp
bC5jb20iLCAiY2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbSIsICJjaHJpc3RvcGhlLmR1bWV6QGlu
dGVsLmNvbSJdLCAibmlja3MiOiBbImNkdW1leiJdfSwKICAgICAgICAgIkNsYXVkaW8gU2FhdmVk
cmEiOiB7ImVtYWlscyI6IFsiY3NhYXZlZHJhQGlnYWxpYS5jb20iXSwgIm5pY2tzIjogWyJjbGF1
ZGlvX19fIl19LAogICAgICAgICAiQ29sbGluIEphY2tzb24iOiB7ImVtYWlscyI6IFsiY29sbGlu
akB3ZWJraXQub3JnIl0sICJuaWNrcyI6IFsiY29sbGluamFja3NvbiJdfSwKICAgICAgICAgIkNy
aXMgTmVja2FyIjogeyJlbWFpbHMiOiBbImNkbkBjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJj
bmVja2FyIl19LApAQCAtMTYzLDcgKzE2NCw3IEBACiAgICAgICAgICJHcmVnIEJvbHNpbmdhIjog
eyJlbWFpbHMiOiBbImJvbHNpbmdhQGFwcGxlLmNvbSJdfSwKICAgICAgICAgIkdyZWdnIFRhdmFy
ZXMiOiB7ImVtYWlscyI6IFsiZ21hbkBjaHJvbWl1bS5vcmciLCAiZ21hbkBnb29nbGUuY29tIl0s
ICJuaWNrcyI6IFsiZ21hbiJdfSwKICAgICAgICAgIkdyemVnb3J6IEN6YWprb3dza2kiOiB7ImVt
YWlscyI6IFsiZy5jemFqa293c2tpQHNhbXN1bmcuY29tIl0sICJuaWNrcyI6IFsiZ3J6ZWdvcnoi
XX0sCi0gICAgICAgICJIYW5zIE11bGxlciI6IHsiZW1haWxzIjogWyJnaWxlc19qb3BsaW5AeWFo
b28uY29tIl0sICJuaWNrcyI6IFsiaGFuc211bGxlciJdfSwKKyAgICAgICAgIkhhbnMgTXVsbGVy
IjogeyJlbWFpbHMiOiBbImdpbGVzX2pvcGxpbkB5YWhvby5jb20iLCAiaG11bGxlckBhZG9iZS5j
b20iXSwgIm5pY2tzIjogWyJoYW5zbXVsbGVyIl19LAogICAgICAgICAiSGFucyBXZW5uYm9yZyI6
IHsiZW1haWxzIjogWyJoYW5zQGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBbImh3ZW5uYm9yZyJd
fSwKICAgICAgICAgIkhheWF0byBJdG8iOiB7ImVtYWlscyI6IFsiaGF5YXRvQGNocm9taXVtLm9y
ZyJdLCAibmlja3MiOiBbImhheWF0byJdfSwKICAgICAgICAgIkhpcm9ub3JpIEJvbm8iOiB7ImVt
YWlscyI6IFsiaGJvbm9AY2hyb21pdW0ub3JnIl0sICJuaWNrcyI6IFsiaGJvbm8iXX0sCkBAIC0x
OTksNyArMjAwLDcgQEAKICAgICAgICAgIkpvaG4gS25vdHRlbmJlbHQiOiB7ImVtYWlscyI6IFsi
amtub3R0ZW5AY2hyb21pdW0ub3JnIl0sICJuaWNrcyI6IFsiamtub3R0ZW4iXX0sCiAgICAgICAg
ICJKb2hubnkgRGluZyI6IHsiZW1haWxzIjogWyJqbmRAY2hyb21pdW0ub3JnIiwgImpvaG5ueWRp
bmcud2Via2l0QGdtYWlsLmNvbSJdLCAibmlja3MiOiBbImpvaG5ueWRpbmciXX0sCiAgICAgICAg
ICJKb24gTGVlIjogeyJlbWFpbHMiOiBbImpvbmxlZUBhcHBsZS5jb20iXSwgIm5pY2tzIjogWyJq
b25sZWUiXX0sCi0gICAgICAgICJKb25hdGhhbiBEb25nIjogeyJlbWFpbHMiOiBbImpvbmF0aGFu
LmRvbmcud2Via2l0QGdtYWlsLmNvbSJdLCAibmlja3MiOiBbImpvbmRvbmciXX0sCisgICAgICAg
ICJKb25hdGhhbiBEb25nIjogeyJlbWFpbHMiOiBbImpvbmF0aGFuLmRvbmcud2Via2l0QGdtYWls
LmNvbSIsICJqb25hdGhhbi5kb25nQHRvcmNobW9iaWxlLmNvbS5jbiJdLCAibmlja3MiOiBbImpv
bmRvbmciXX0sCiAgICAgICAgICJKb29uZSBIdXIiOiB7ImVtYWlscyI6IFsiam9vbmVAd2Via2l0
Lm9yZyIsICJqb29uZS5odXJAaW50ZWwuY29tIl0sICJuaWNrcyI6IFsiam9vbmUiXX0sCiAgICAg
ICAgICJKb29zdCBkZSBWYWxrIjogeyJlbWFpbHMiOiBbImpvb3N0QHdlYmtpdC5vcmciLCAid2Vi
a2l0LWRldkBqb29zdGRldmFsay5ubCJdLCAibmlja3MiOiBbIkFsdGhhIl19LAogICAgICAgICAi
Sm9zaHVhIEJlbGwiOiB7ImVtYWlscyI6IFsianNiZWxsQGNocm9taXVtLm9yZyIsICJqc2JlbGxA
Z29vZ2xlLmNvbSJdLCAibmlja3MiOiBbImpzYmVsbCJdfSwKQEAgLTMxNSw3ICszMTYsNyBAQAog
ICAgICAgICAiVHJleSBNYXR0ZXNvbiI6IHsiZW1haWxzIjogWyJ0cmV5QHVzYS5uZXQiXSwgIm5p
Y2tzIjogWyJ0cmV5Il19LAogICAgICAgICAiVHJpc3RhbiBPJ1RpZXJuZXkiOiB7ImVtYWlscyI6
IFsidHJpc3RhbkBvdGllcm5leS5uZXQiLCAidHJpc3RhbkBhcHBsZS5jb20iXX0sCiAgICAgICAg
ICJWYW5nZWxpcyBLb2trZXZpcyI6IHsiZW1haWxzIjogWyJ2YW5nZWxpc0BjaHJvbWl1bS5vcmci
XSwgIm5pY2tzIjogWyJ2YW5nZWxpcyJdfSwKLSAgICAgICAgIlZpYXRjaGVzbGF2IE9zdGFwZW5r
byI6IHsiZW1haWxzIjogWyJvc3RhcDczQGdtYWlsLmNvbSIsICJ2Lm9zdGFwZW5rb0BzYW1zdW5n
LmNvbSIsICJ2Lm9zdGFwZW5rb0BzaXNhLnNhbXN1bmcuY29tIl0sICJuaWNrcyI6IFsib3N0YXAi
XX0sCisgICAgICAgICJWaWF0Y2hlc2xhdiBPc3RhcGVua28iOiB7ImVtYWlscyI6IFsib3N0YXA3
M0BnbWFpbC5jb20iLCAib3N0YXBlbmtvLnZpYXRjaGVzbGF2QG5va2lhLmNvbSIsICJ2Lm9zdGFw
ZW5rb0BzYW1zdW5nLmNvbSIsICJ2Lm9zdGFwZW5rb0BzaXNhLnNhbXN1bmcuY29tIl0sICJuaWNr
cyI6IFsib3N0YXAiXX0sCiAgICAgICAgICJWaWN0b3IgQ2FyYnVuZSI6IHsiZW1haWxzIjogWyJ2
Y2FyYnVuZUBjaHJvbWl1bS5vcmciLCAidmljdG9yQHJvc2VkdS5vcmciXSwgIm5pY2tzIjogWyJ2
Y2FyYnVuZSJdfSwKICAgICAgICAgIlZpY3RvciBXYW5nIjogeyJlbWFpbHMiOiBbInZpY3RvcndA
Y2hyb21pdW0ub3JnIl0sICJuaWNrcyI6IFsidmljdG9ydyJdfSwKICAgICAgICAgIlZpY3Rvcmlh
IEtpcnN0IjogeyJlbWFpbHMiOiBbInZya0BjaHJvbWl1bS5vcmciLCAidnJrQGdvb2dsZS5jb20i
XSwgIm5pY2tzIjogWyJ2cmsiXX0sCkBAIC0zMzcsMTEgKzMzOCwxMSBAQAogICAgICAgICAiWXVx
aWFuZyBYaWFuIjogeyJlbWFpbHMiOiBbInl1cWlhbmcueGlhbkBpbnRlbC5jb20iXX0sCiAgICAg
ICAgICJZdXpvIEZ1amlzaGltYSI6IHsiZW1haWxzIjogWyJ5dXpvQGdvb2dsZS5jb20iXSwgIm5p
Y2tzIjogWyJ5dXpvIl19LAogICAgICAgICAiWmFsYW4gQnVqdGFzIjogeyJlbWFpbHMiOiBbInph
bGFuQGFwcGxlLmNvbSIsICJ6YnVqdGFzQGdtYWlsLmNvbSIsICJ6YWxhbi5idWp0YXNAbm9raWEu
Y29tIl0sICJuaWNrcyI6IFsiemFsYW4iXX0sCi0gICAgICAgICJaZW5vIEFsYmlzc2VyIjogeyJl
bWFpbHMiOiBbInplbm9Ad2Via2l0Lm9yZyIsICJ6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbSJdLCAi
bmlja3MiOiBbInphbGJpc3NlciJdfSwKKyAgICAgICAgIlplbm8gQWxiaXNzZXIiOiB7ImVtYWls
cyI6IFsiemVub0B3ZWJraXQub3JnIiwgInplbm8uYWxiaXNzZXJAbm9raWEuY29tIiwgInplbm8u
YWxiaXNzZXJAZGlnaWEuY29tIl0sICJuaWNrcyI6IFsiemFsYmlzc2VyIl19LAogICAgICAgICAi
WmhlbnlhbyBNbyI6IHsiZW1haWxzIjogWyJ6bW9AZ29vZ2xlLmNvbSJdLCAibmlja3MiOiBbInpo
ZW55YW8iXX0sCiAgICAgICAgICJab2x0YW4gQXJ2YWkiOiB7ImVtYWlscyI6IFsiemFydmFpQGlu
Zi51LXN6ZWdlZC5odSJdLCAibmlja3MiOiBbImF6YmVzdF9odSJdfSwKICAgICAgICAgIlpvbHRh
biBIb3J2YXRoIjogeyJlbWFpbHMiOiBbInpvbHRhbkB3ZWJraXQub3JnIiwgImh6b2x0YW5AaW5m
LnUtc3plZ2VkLmh1IiwgImhvcnZhdGguem9sdGFuLjZAc3R1ZC51LXN6ZWdlZC5odSJdLCAibmlj
a3MiOiBbInpvbHRhbiJdfSwKLSAgICAgICAgIlx1MDE3ZGFuIERvYmVyXHUwMTYxZWsiOiB7ImVt
YWlscyI6IFsiemFuZG9iZXJzZWtAZ21haWwuY29tIl0sICJuaWNrcyI6IFsiemRvYmVyc2VrIl19
CisgICAgICAgICJcdTAxN2RhbiBEb2Jlclx1MDE2MWVrIjogeyJlbWFpbHMiOiBbInphbmRvYmVy
c2VrQGdtYWlsLmNvbSIsICJ6YW5kb2JlcnNla0BpZ2FsaWEuY29tIl0sICJuaWNrcyI6IFsiemRv
YmVyc2VrIl19CiAgICAgfSwKICAgICAiUmV2aWV3ZXJzIjogewogICAgICAgICAiQWJoaXNoZWsg
QXJ5YSI6IHsiZW1haWxzIjogWyJpbmZlcm5vQGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBbImlu
ZmVybm8tc2VjIl19LApAQCAtMzU1LDcgKzM1Niw3IEBACiAgICAgICAgICJBbGV4YW5kZXIgUGF2
bG92IjogeyJlbWFpbHMiOiBbImFwYXZsb3ZAY2hyb21pdW0ub3JnIiwgInBhdmxvdjgxQGdtYWls
LmNvbSJdLCAibmlja3MiOiBbImFwYXZsb3YiXX0sCiAgICAgICAgICJBbGV4YW5kcnUgQ2hpY3Vs
aXRhIjogeyJlbWFpbHMiOiBbImFjaGljdUBhZG9iZS5jb20iXSwgIm5pY2tzIjogWyJhY2hpY3Ui
XX0sCiAgICAgICAgICJBbGV4ZXkgUHJvc2t1cnlha292IjogeyJlbWFpbHMiOiBbImFwQHdlYmtp
dC5vcmciLCAiYXBAYXBwbGUuY29tIl0sICJuaWNrcyI6IFsiYXAiXX0sCi0gICAgICAgICJBbGV4
aXMgTWVuYXJkIjogeyJlbWFpbHMiOiBbImFsZXhpc0B3ZWJraXQub3JnIiwgIm1lbmFyZEBrZGUu
b3JnIl0sICJuaWNrcyI6IFsiZGFya3RlYXJzIl19LAorICAgICAgICAiQWxleGlzIE1lbmFyZCI6
IHsiZW1haWxzIjogWyJhbGV4aXNAd2Via2l0Lm9yZyIsICJtZW5hcmRAa2RlLm9yZyIsICJhbGV4
aXMubWVuYXJkQG9wZW5ib3NzYS5vcmciXSwgIm5pY2tzIjogWyJkYXJrdGVhcnMiXX0sCiAgICAg
ICAgICJBbGljZSBMaXUiOiB7ImVtYWlscyI6IFsiYWxpY2UubGl1QGFwcGxlLmNvbSJdLCAibmlj
a3MiOiBbImFsaXUiXX0sCiAgICAgICAgICJBbGxhbiBTYW5kZmVsZCBKZW5zZW4iOiB7ImVtYWls
cyI6IFsiYWxsYW4uamVuc2VuQGRpZ2lhLmNvbSIsICJrZGVAY2FyZXdvbGYuY29tIiwgInNhbmRm
ZWxkQGtkZS5vcmciLCAiYWxsYW4uamVuc2VuQG5va2lhLmNvbSJdLCAibmlja3MiOiBbImNhcmV3
b2xmIl19LAogICAgICAgICAiQWxwIFRva2VyIjogeyJlbWFpbHMiOiBbImFscEBudWFudGkuY29t
IiwgImFscEBhdG9rZXIuY29tIiwgImFscEB3ZWJraXQub3JnIl0sICJuaWNrcyI6IFsiYWxwIl19
LApAQCAtNDE1LDcgKzQxNiw3IEBACiAgICAgICAgICJKZXNzaWUgQmVybGluIjogeyJlbWFpbHMi
OiBbImpiZXJsaW5Ad2Via2l0Lm9yZyIsICJqYmVybGluQGFwcGxlLmNvbSJdLCAibmlja3MiOiBb
Implc3NpZWJlcmxpbiJdfSwKICAgICAgICAgIkppYW4gTGkiOiB7ImVtYWlscyI6IFsiamlhbmxp
QGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBbImppYW5saSJdfSwKICAgICAgICAgIkpvY2VseW4g
VHVyY290dGUiOiB7ImVtYWlscyI6IFsiam9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20iLCAiam9j
ZWx5bi50dXJjb3R0ZUBub2tpYS5jb20iXSwgIm5pY2tzIjogWyJqdHVyY290dGUiXX0sCi0gICAg
ICAgICJKb2NoZW4gRWlzaW5nZXIiOiB7ImVtYWlscyI6IFsiam9jaGVuQGNocm9taXVtLm9yZyJd
LCAibmlja3MiOiBbImpvY2hlbl9fIl19LAorICAgICAgICAiSm9jaGVuIEVpc2luZ2VyIjogeyJl
bWFpbHMiOiBbImpvY2hlbkBjaHJvbWl1bS5vcmciLCAiam9jaGVuQGNocm9taXVtLm9yIl0sICJu
aWNrcyI6IFsiam9jaGVuX18iXX0sCiAgICAgICAgICJKb2huIFN1bGxpdmFuIjogeyJlbWFpbHMi
OiBbInN1bGxpdmFuQGFwcGxlLmNvbSJdLCAibmlja3MiOiBbInN1bGxpdmFuIl19LAogICAgICAg
ICAiSm9uIEhvbmV5Y3V0dCI6IHsiZW1haWxzIjogWyJqaG9uZXljdXR0QGFwcGxlLmNvbSJdLCAi
bmlja3MiOiBbImpob25leWN1dHQiXX0sCiAgICAgICAgICJKb3NlcGggUGVjb3Jhcm8iOiB7ImVt
YWlscyI6IFsiam9lcGVja0B3ZWJraXQub3JnIiwgInBlY29yYXJvQGFwcGxlLmNvbSJdLCAibmlj
a3MiOiBbIkpvZVBlY2siXX0sCkBAIC00NjksNyArNDcwLDcgQEAKICAgICAgICAgIlZpY2tpIE11
cmxleSI6IHsiZW1haWxzIjogWyJ2aWNraUBhcHBsZS5jb20iXX0sCiAgICAgICAgICJWc2V2b2xv
ZCBWbGFzb3YiOiB7ImVtYWlscyI6IFsidnNldmlrQGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBb
InZzZXZpayJdfSwKICAgICAgICAgIlhhbiBMb3BleiI6IHsiZW1haWxzIjogWyJ4YW4ubG9wZXpA
Z21haWwuY29tIiwgInhhbkBnbm9tZS5vcmciLCAieGFuQHdlYmtpdC5vcmciLCAieGxvcGV6QGln
YWxpYS5jb20iXSwgIm5pY2tzIjogWyJ4YW4iXX0sCi0gICAgICAgICJZb25nIExpIjogeyJlbWFp
bHMiOiBbInlvbmcubGkud2Via2l0QG91dGxvb2suY29tIl0sICJuaWNrcyI6IFsieW9saSJdfSwK
KyAgICAgICAgIllvbmcgTGkiOiB7ImVtYWlscyI6IFsieW9uZy5saS53ZWJraXRAb3V0bG9vay5j
b20iLCAieW9saUByaW0uY29tIl0sICJuaWNrcyI6IFsieW9saSJdfSwKICAgICAgICAgIll1cnkg
U2VtaWtoYXRza3kiOiB7ImVtYWlscyI6IFsieXVyeXNAY2hyb21pdW0ub3JnIl0sICJuaWNrcyI6
IFsieXVyeXMiXX0sCiAgICAgICAgICJZdXRhIEtpdGFtdXJhIjogeyJlbWFpbHMiOiBbInl1dGFr
QGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBbInl1dGFrIl19LAogICAgICAgICAiWmFjayBSdXNp
biI6IHsiZW1haWxzIjogWyJ6YWNrQGtkZS5vcmciXSwgIm5pY2tzIjogWyJ6YWNrciJdfSwKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9t
aW5hdGlvbnMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2Vz
dG5vbWluYXRpb25zLnB5CmluZGV4IDg0NWI3ODI3MDk2NTIyZDVlMTJmNTBjOWY2MjdiMWVlMzVj
ZTlkNzAuLjVlMWRiNDcxZTQzOGZkOTQ0YWNiNjIwOTEzNDRjN2IwMGI4OWZjMTggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlv
bnMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Ru
b21pbmF0aW9ucy5weQpAQCAtMjcsMTAxICsyNywzNjYgQEAKICMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKLWZyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCitpbXBvcnQgY2Fs
ZW5kYXIKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3B0cGFyc2UKIGltcG9ydCByZQogCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5jaGFuZ2Vsb2cgaW1wb3J0IENoYW5nZUxvZ0VudHJ5
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVy
TGlzdAotZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBzdGVwcwogZnJvbSB3ZWJraXRweS50b29s
LmdyYW1tYXIgaW1wb3J0IGpvaW5fd2l0aF9zZXBhcmF0b3JzCiBmcm9tIHdlYmtpdHB5LnRvb2wu
bXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQ29tbWFuZAogCitfbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCiAKLWNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKLSAgICBu
YW1lID0gInN1Z2dlc3Qtbm9taW5hdGlvbnMiCi0gICAgaGVscF90ZXh0ID0gIlN1Z2dlc3QgY29u
dHJpYnV0b3JzIGZvciBjb21taXR0ZXIvcmV2aWV3ZXIgbm9taW5hdGlvbnMiCiAKLSAgICBkZWYg
X19pbml0X18oc2VsZik6Ci0gICAgICAgIG9wdGlvbnMgPSBbCi0gICAgICAgICAgICBtYWtlX29w
dGlvbigiLS1jb21taXR0ZXItbWluaW11bSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJjb21taXR0
ZXJfbWluaW11bSIsIHR5cGU9ImludCIsIGRlZmF1bHQ9MTAsIGhlbHA9IlNwZWNpZnkgbWluaW11
bSBwYXRjaCBjb3VudCBmb3IgQ29tbWl0dGVyIG5vbWluYXRpb25zLiIpLAotICAgICAgICAgICAg
bWFrZV9vcHRpb24oIi0tcmV2aWV3ZXItbWluaW11bSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJy
ZXZpZXdlcl9taW5pbXVtIiwgdHlwZT0iaW50IiwgZGVmYXVsdD04MCwgaGVscD0iU3BlY2lmeSBt
aW5pbXVtIHBhdGNoIGNvdW50IGZvciBSZXZpZXdlciBub21pbmF0aW9ucy4iKSwKLSAgICAgICAg
ICAgIG1ha2Vfb3B0aW9uKCItLW1heC1jb21taXQtYWdlIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9
Im1heF9jb21taXRfYWdlIiwgdHlwZT0iaW50IiwgZGVmYXVsdD05LCBoZWxwPSJTcGVjaWZ5IG1h
eCBjb21taXQgYWdlIHRvIGNvbnNpZGVyIGZvciBub21pbmF0aW9ucyAoaW4gbW9udGhzKS4iKSwK
LSAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLXNob3ctY29tbWl0cyIsIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIsIGRlc3Q9InNob3dfY29tbWl0cyIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IlNob3cgY29t
bWl0IGhpc3Rvcnkgd2l0aCBub21pbmF0aW9uIHN1Z2dlc3Rpb25zLiIpLAotICAgICAgICBdCitj
bGFzcyBBYnN0cmFjdFN1Z2dlc3RDb21tYW5kKENvbW1hbmQpOgorCisgICAgX2NvbW1pdF9jb3Vu
dCA9IDAKKyAgICBfY29tbWl0X3NraXBwZWRfY291bnQgPSAwCisgICAgX2NvbW1pdF91bnJldmll
d2VkID0ge30KKyAgICBfY29tbWl0X3Jldmlld2VkID0ge30KKyAgICBfY29tbWl0X3Jldmlld2Vy
cyA9IHt9CiAKLSAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBvcHRpb25zPW9wdGlvbnMp
CisgICAgX21hdGNoX2xlYWRpbmdfaW5kZW50ID0gcmUuY29tcGlsZShyIl5bIF17NH0iLCByZS5N
VUxUSUxJTkUpCisgICAgX21hdGNoX3Jldmlld2VkX2J5ID0gcmUuY29tcGlsZShyJ15ccyooKFx3
K1xzKykrYW5kXHMrKT8oUmV2aWV3fFJ1YmJlcihccyp8LSlzdGFtcCkoc3xlZCk/XHMrKFthLXpd
K1xzKykqP2J5XHMrKD9QPHJldmlld2Vycz4uKj8pW1wuLF0/XHMqJCcsIHJlLk1VTFRJTElORSkK
KyAgICBfbWF0Y2hfdW5yZXZpZXdlZCA9IHJlLmNvbXBpbGUocideXHMqKChcUytccyspKyk/VW5y
ZXZpZXdlZC4qJCcsIHJlLk1VTFRJTElORSkKKyAgICBfbWF0Y2hfZ2FyZGVuaW5nID0gcmUuY29t
cGlsZShyJ1tHZ11hcmRlbmluZycpCisgICAgX21hdGNoX3BhdGNoX2J5ID0gcmUuY29tcGlsZShy
J15QYXRjaCBieSAoP1A8bmFtZT4uKz8pXHMrPCg/UDxlbWFpbD5bXjw+XSspPiBvbiAoP1A8ZGF0
ZT5cZHs0fS1cZHsyfS1cZHsyfSkkJywgcmUuTVVMVElMSU5FKQorICAgIF9tYXRjaF9jb21taXR0
ZXIgPSByZS5jb21waWxlKHInXkF1dGhvcjogKD9QPGVtYWlsPlxTKylccys8W14+XSs+JCcsIHJl
Lk1VTFRJTElORSkKKyAgICBfbWF0Y2hfZGF0ZSA9IHJlLmNvbXBpbGUocideRGF0ZTogICBcU3sz
fSAoP1A8bW9udGg+XFN7M30pICg/UDxkYXk+XGR7MSwyfSkgKD9QPHRpbWU+XGR7Mn06XGR7Mn06
XGR7Mn0pICg/UDx5ZWFyPlxkezR9KSBbXCtcLV1cZHs0fSQnLCByZS5NVUxUSUxJTkUpCisgICAg
X21hdGNoX3JldmlzaW9uID0gcmUuY29tcGlsZShyJ15naXQtc3ZuLWlkOiBodHRwOi8vc3ZuLndl
YmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmtAKD9QPHN2bmlkPlxkKykgKD9QPGdpdGlk
PlswLTlhLWZcLV17MzZ9KSQnLCByZS5NVUxUSUxJTkUpCisKKyAgICBkZWYgX19pbml0X18oc2Vs
Ziwgb3B0aW9ucz1Ob25lKToKKyAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgb3IgW10KKyAgICAg
ICAgb3B0aW9ucyArPSBzZWxmLl9jb21taXRfb3B0aW9ucygpCisgICAgICAgIG9wdGlvbnMgPSBz
b3J0ZWQob3B0aW9ucywgbGFtYmRhIGEsIGI6IGNtcChhLl9sb25nX29wdHMsIGIuX2xvbmdfb3B0
cykpCisgICAgICAgIHN1cGVyKEFic3RyYWN0U3VnZ2VzdENvbW1hbmQsIHNlbGYpLl9faW5pdF9f
KG9wdGlvbnM9b3B0aW9ucykKICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkg
YmUgb24gdGhlIHRvb2wgc29tZXdoZXJlLgogICAgICAgICBzZWxmLl9jb21taXR0ZXJfbGlzdCA9
IENvbW1pdHRlckxpc3QoKQogCi0gICAgX2NvdW50ZXJzX2J5X25hbWUgPSB7fQotICAgIF9jb3Vu
dGVyc19ieV9lbWFpbCA9IHt9CisgICAgZGVmIF9jb21taXRfb3B0aW9ucyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIFsKKyAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLW1heC1jb21t
aXQtYWdlIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9Im1heF9jb21taXRfYWdlIiwgdHlwZT0iaW50
IiwgZGVmYXVsdD05LCBoZWxwPSJTcGVjaWZ5IG1heGltdW0gY29tbWl0IGFnZSB0byBjb25zaWRl
ciAoaW4gbW9udGhzKS4iKSwKKyAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXJl
Y29yZC1nYXJkZW5pbmctdW5yZXZpZXdlZC1jb21taXRzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwg
ZGVzdD0icmVjb3JkX2dhcmRlbmluZ191bnJldmlld2VkX2NvbW1pdHMiLCBkZWZhdWx0PUZhbHNl
LCBoZWxwPSJSZWNvcmQgZ2FyZGVuaW5nIHVucmV2aWV3ZWQgY29tbWl0cyAobm90IHJlY29yZGVk
IGJ5IGRlZmF1bHQpLiIpLAorICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tcmVj
b3JkLW1hcmtlZC11bnJldmlld2VkLWNvbW1pdHMiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0
PSJyZWNvcmRfbWFya2VkX3VucmV2aWV3ZWRfY29tbWl0cyIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9
IlJlY29yZCBtYXJrZWQgdW5yZXZpZXdlZCBjb21taXRzIChub3QgcmVjb3JkZWQgYnkgZGVmYXVs
dCkuIiksCisgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1zaG93LXNraXBwZWQt
Y29tbWl0cyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InNob3dfc2tpcHBlZF9jb21taXRz
IiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iU2hvdyBhbGwgY29tbWl0cyB0aGF0IGFyZSBza2lwcGVk
LiIpLAorICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tc2hvdy1za2lwcGVkLXVu
cmV2aWV3ZWQtY29tbWl0cyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InNob3dfc2tpcHBl
ZF91bnJldmlld2VkX2NvbW1pdHMiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJTaG93IHVucmV2aWV3
ZWQgY29tbWl0cyB0aGF0IGFyZSBza2lwcGVkLCB3aGV0aGVyIG1hcmtlZCBvciBub3QuIiksCisg
ICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1zaG93LXVucmV2aWV3ZWQtY29tbWl0
cyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InNob3dfdW5yZXZpZXdlZF9jb21taXRzIiwg
ZGVmYXVsdD1GYWxzZSwgaGVscD0iU2hvdyB1bnJldmlld2VkIGNvbW1pdHMuIiksCisgICAgICAg
ICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1zaG93LXVucmV2aWV3ZWQtY29tbWl0cy1mb3Ii
LCBhY3Rpb249InN0b3JlIiwgZGVzdD0ic2hvd191bnJldmlld2VkX2NvbW1pdHNfZm9yIiwgZGVm
YXVsdD1Ob25lLCBoZWxwPSJTaG93IHVucmV2aWV3ZWQgY29tbWl0cyBmb3Igc3BlY2lmaWMgY29u
dHJpYnV0b3JzLCBhY2NvcmRpbmcgdG8gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBjb250cmli
dXRvciAoZnVsbCkgbmFtZXMgb3IgZW1haWwgYWRkcmVzc2VzLiIpLAorICAgICAgICAgICAgb3B0
cGFyc2UubWFrZV9vcHRpb24oIi0tc2hvdy11bnJldmlld2VkLWNvbW1pdHMtcmV2aXNpb25zIiwg
YWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ic2hvd191bnJldmlld2VkX2NvbW1pdHNfcmV2aXNp
b25zIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iU2hvdyByZXZpc2lvbnMgd2hlbiBzaG93aW5nIHVu
cmV2aWV3ZWQgY29tbWl0cy4iKSwKKyAgICAgICAgXQogCiAgICAgZGVmIF9pbml0X29wdGlvbnMo
c2VsZiwgb3B0aW9ucyk6Ci0gICAgICAgIHNlbGYuY29tbWl0dGVyX21pbmltdW0gPSBvcHRpb25z
LmNvbW1pdHRlcl9taW5pbXVtCi0gICAgICAgIHNlbGYucmV2aWV3ZXJfbWluaW11bSA9IG9wdGlv
bnMucmV2aWV3ZXJfbWluaW11bQotICAgICAgICBzZWxmLm1heF9jb21taXRfYWdlID0gb3B0aW9u
cy5tYXhfY29tbWl0X2FnZQotICAgICAgICBzZWxmLnNob3dfY29tbWl0cyA9IG9wdGlvbnMuc2hv
d19jb21taXRzCi0gICAgICAgIHNlbGYudmVyYm9zZSA9IG9wdGlvbnMudmVyYm9zZQorICAgICAg
ICBzZWxmLnJlY29yZF9nYXJkZW5pbmdfdW5yZXZpZXdlZF9jb21taXRzID0gb3B0aW9ucy5yZWNv
cmRfZ2FyZGVuaW5nX3VucmV2aWV3ZWRfY29tbWl0cworICAgICAgICBzZWxmLnJlY29yZF9tYXJr
ZWRfdW5yZXZpZXdlZF9jb21taXRzID0gb3B0aW9ucy5yZWNvcmRfbWFya2VkX3VucmV2aWV3ZWRf
Y29tbWl0cworICAgICAgICBzZWxmLnNob3dfc2tpcHBlZF9jb21taXRzID0gb3B0aW9ucy5zaG93
X3NraXBwZWRfY29tbWl0cworICAgICAgICBzZWxmLnNob3dfc2tpcHBlZF91bnJldmlld2VkX2Nv
bW1pdHMgPSBvcHRpb25zLnNob3dfc2tpcHBlZF91bnJldmlld2VkX2NvbW1pdHMKKyAgICAgICAg
c2VsZi5zaG93X3VucmV2aWV3ZWRfY29tbWl0cyA9IG9wdGlvbnMuc2hvd191bnJldmlld2VkX2Nv
bW1pdHMKKyAgICAgICAgc2VsZi5zaG93X3VucmV2aWV3ZWRfY29tbWl0c19mb3IgPSBvcHRpb25z
LnNob3dfdW5yZXZpZXdlZF9jb21taXRzX2ZvcgorICAgICAgICBzZWxmLnNob3dfdW5yZXZpZXdl
ZF9jb21taXRzX3JldmlzaW9ucyA9IG9wdGlvbnMuc2hvd191bnJldmlld2VkX2NvbW1pdHNfcmV2
aXNpb25zCisgICAgICAgIGlmIHNlbGYuc2hvd19za2lwcGVkX3VucmV2aWV3ZWRfY29tbWl0czoK
KyAgICAgICAgICAgIHNlbGYuc2hvd19za2lwcGVkX2NvbW1pdHMgPSBUcnVlCisgICAgICAgIGlm
IHNlbGYuc2hvd191bnJldmlld2VkX2NvbW1pdHNfZm9yOgorICAgICAgICAgICAgc2VsZi5zaG93
X3VucmV2aWV3ZWRfY29tbWl0cyA9IFRydWUKKyAgICAgICAgaWYgc2VsZi5zaG93X3VucmV2aWV3
ZWRfY29tbWl0c19yZXZpc2lvbnM6CisgICAgICAgICAgICBzZWxmLnNob3dfdW5yZXZpZXdlZF9j
b21taXRzID0gVHJ1ZQorCisgICAgZGVmIF9zdWJzdGl0dXRlX291dHB1dChzZWxmKToKKyAgICAg
ICAgaWYgc2VsZi5zaG93X3VucmV2aWV3ZWRfY29tbWl0czoKKyAgICAgICAgICAgIHJldHVybiBU
cnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9wcmludF9zdWJzdGl0dXRlX291
dHB1dChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5zaG93X3VucmV2aWV3ZWRfY29tbWl0czoKKyAg
ICAgICAgICAgIHNlbGYuX3Nob3dfdW5yZXZpZXdlZF9jb21taXRzKCkKIAogICAgICMgRklYTUU6
IFRoaXMgc2hvdWxkIG1vdmUgdG8gc2NtLnB5CiAgICAgZGVmIF9yZWNlbnRfY29tbWl0X21lc3Nh
Z2VzKHNlbGYpOgogICAgICAgICBnaXRfbG9nID0gc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2Nv
bW1hbmQoWydnaXQnLCAnbG9nJywgJy0tc2luY2U9IiVzIG1vbnRocyBhZ28iJyAlIHNlbGYubWF4
X2NvbW1pdF9hZ2VdKQotICAgICAgICBtYXRjaF9naXRfc3ZuX2lkID0gcmUuY29tcGlsZShyIlxu
XG4gICAgZ2l0LXN2bi1pZDouKlxuIiwgcmUuTVVMVElMSU5FKQotICAgICAgICBtYXRjaF9nZXRf
bG9nX2xpbmVzID0gcmUuY29tcGlsZShyIl5cUy4qXG4iLCByZS5NVUxUSUxJTkUpCi0gICAgICAg
IG1hdGNoX2xlYWRpbmdfaW5kZW50ID0gcmUuY29tcGlsZShyIl5bIF17NH0iLCByZS5NVUxUSUxJ
TkUpCi0KLSAgICAgICAgbWVzc2FnZXMgPSByZS5zcGxpdChyImNvbW1pdCBcd3s0MH0iLCBnaXRf
bG9nKVsxOl0gICMgSWdub3JlIHRoZSBmaXJzdCBtZXNzYWdlIHdoaWNoIHdpbGwgYmUgZW1wdHku
CisgICAgICAgIG1lc3NhZ2VzID0gcmUuc3BsaXQociJeY29tbWl0IFx3ezQwfSQiLCBnaXRfbG9n
LCBmbGFncz1yZS5NVUxUSUxJTkUpWzE6XSAgIyBJZ25vcmUgdGhlIGZpcnN0IG1lc3NhZ2Ugd2hp
Y2ggd2lsbCBiZSBlbXB0eS4KICAgICAgICAgZm9yIG1lc3NhZ2UgaW4gbWVzc2FnZXM6Ci0gICAg
ICAgICAgICAjIFJlbW92ZSBhbnkgbGluZXMgZnJvbSBnaXQgYW5kIHVuaW5kZW50IGFsbCB0aGUg
bGluZXMKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNoX2dpdF9zdm5faWQuc3Vibigi
IiwgbWVzc2FnZSkKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNoX2dldF9sb2dfbGlu
ZXMuc3VibigiIiwgbWVzc2FnZSkKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNoX2xl
YWRpbmdfaW5kZW50LnN1Ym4oIiIsIG1lc3NhZ2UpCisgICAgICAgICAgICAjIFVuaW5kZW50IGFs
bCB0aGUgbGluZXMKKyAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IHNlbGYuX21hdGNoX2xlYWRp
bmdfaW5kZW50LnN1Ym4oIiIsIG1lc3NhZ2UpCiAgICAgICAgICAgICB5aWVsZCBtZXNzYWdlLmxz
dHJpcCgpICAjIFJlbW92ZSBhbnkgbGVhZGluZyBuZXdsaW5lcyBmcm9tIHRoZSBsb2cgbWVzc2Fn
ZS4KIAotICAgICMgZS5nLiBQYXRjaCBieSBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPiBv
biAyMDExLTA5LTE1Ci0gICAgcGF0Y2hfYnlfcmVnZXhwID0gcideUGF0Y2ggYnkgKD9QPG5hbWU+
Lis/KVxzKzwoP1A8ZW1haWw+W148Pl0rKT4gb24gKD9QPGRhdGU+XGR7NH0tXGR7Mn0tXGR7Mn0p
JCcKKyAgICBkZWYgX21heWJlX3Nob3dfc2tpcHBlZF9jb21taXQoc2VsZiwgbWVzc2FnZSwgcmVh
c29uKToKKyAgICAgICAgc2VsZi5fY29tbWl0X3NraXBwZWRfY291bnQgPSBzZWxmLl9jb21taXRf
c2tpcHBlZF9jb3VudCArIDEKKyAgICAgICAgaWYgbm90IHNlbGYuc2hvd19za2lwcGVkX2NvbW1p
dHM6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcmV2aXNpb25fbWF0Y2ggPSBzZWxmLl9t
YXRjaF9yZXZpc2lvbi5zZWFyY2gobWVzc2FnZSkKKyAgICAgICAgaWYgcmV2aXNpb25fbWF0Y2gg
YW5kIHJlYXNvbiAhPSAndW5yZXZpZXdlZCcgb3Igc2VsZi5zaG93X3NraXBwZWRfdW5yZXZpZXdl
ZF9jb21taXRzOgorICAgICAgICAgICAgcHJpbnQgJ1NLSVBQRUQ6IHIlczogJXMnICUgKHJldmlz
aW9uX21hdGNoLmdyb3VwKCdzdm5pZCcpLCByZWFzb24pCisKKyAgICBkZWYgX2F1dGhvcl9uYW1l
X2Zyb21fZW1haWwoc2VsZiwgZW1haWwpOgorICAgICAgICBjb250cmlidXRvciA9IHNlbGYuX2Nv
bW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9yX2J5X2VtYWlsKGVtYWlsKQorICAgICAgICByZXR1cm4g
Y29udHJpYnV0b3IuZnVsbF9uYW1lIGlmIGNvbnRyaWJ1dG9yIGVsc2UgTm9uZQorCisgICAgZGVm
IF9jb21taXRfZGF0ZV9mcm9tX21hdGNoKHNlbGYsIG1hdGNoKToKKyAgICAgICAgeWVhciA9IG1h
dGNoLmdyb3VwKCd5ZWFyJykKKyAgICAgICAgbW9udGhfYWJiciA9IG1hdGNoLmdyb3VwKCdtb250
aCcpCisgICAgICAgIG1vbnRoID0gMAorICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY2FsZW5k
YXIubW9udGhfYWJicikpOgorICAgICAgICAgICAgaWYgY2FsZW5kYXIubW9udGhfYWJicltpXSA9
PSBtb250aF9hYmJyOgorICAgICAgICAgICAgICAgIG1vbnRoID0gaSArIDEKKyAgICAgICAgICAg
ICAgICBicmVhaworICAgICAgICBkYXkgPSBtYXRjaC5ncm91cCgnZGF5JykKKyAgICAgICAgcmV0
dXJuICclMDRkLSUwMmQtJTAyZCcgJSAoaW50KHllYXIpLCBtb250aCwgaW50KGRheSkpCisKKyAg
ICBkZWYgX2NvbnRyaWJ1dG9yX2Zyb21fZW1haWwoc2VsZiwgZW1haWwpOgorICAgICAgICBjb250
cmlidXRvciA9IHNlbGYuX2NvbW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9yX2J5X2VtYWlsKGVtYWls
KQorICAgICAgICByZXR1cm4gY29udHJpYnV0b3IgaWYgY29udHJpYnV0b3IgZWxzZSBOb25lCisK
KyAgICBkZWYgX3JlY29yZF91bnJldmlld2VkX2NvbW1pdChzZWxmLCBjb21taXR0ZXIsIHJldmlz
aW9uLCByZWFzb24pOgorICAgICAgICBpZiByZWFzb24gPT0gJ3VucmV2aWV3ZWQnIGFuZCBub3Qg
c2VsZi5yZWNvcmRfbWFya2VkX3VucmV2aWV3ZWRfY29tbWl0czoKKyAgICAgICAgICAgIHJldHVy
bgorICAgICAgICB1bnJldmlld2VkX2NvbW1pdHMgPSBzZWxmLl9jb21taXRfdW5yZXZpZXdlZC5n
ZXQoY29tbWl0dGVyLmZ1bGxfbmFtZSkKKyAgICAgICAgaWYgbm90IHVucmV2aWV3ZWRfY29tbWl0
czoKKyAgICAgICAgICAgIHVucmV2aWV3ZWRfY29tbWl0cyA9IHt9CisgICAgICAgIHJldmlzaW9u
cyA9IHVucmV2aWV3ZWRfY29tbWl0cy5nZXQocmVhc29uKQorICAgICAgICBpZiBub3QgcmV2aXNp
b25zOgorICAgICAgICAgICAgcmV2aXNpb25zID0gc2V0KCkKKyAgICAgICAgcmV2aXNpb25zLmFk
ZChyZXZpc2lvbikKKyAgICAgICAgdW5yZXZpZXdlZF9jb21taXRzW3JlYXNvbl0gPSByZXZpc2lv
bnMKKyAgICAgICAgc2VsZi5fY29tbWl0X3VucmV2aWV3ZWRbY29tbWl0dGVyLmZ1bGxfbmFtZV0g
PSB1bnJldmlld2VkX2NvbW1pdHMKKworICAgIGRlZiBfdW5yZXZpZXdlZF9jb21taXRzX2NvdW50
KHNlbGYsIGNvbW1pdHMpOgorICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgZm9yIHJlYXNvbiBp
biBjb21taXRzLmtleXMoKToKKyAgICAgICAgICAgIGNvdW50ICs9IGxlbihjb21taXRzW3JlYXNv
bl0pCisgICAgICAgIHJldHVybiBjb3VudAorCisgICAgZGVmIF9zaG93X3VucmV2aWV3ZWRfY29t
bWl0c19yZXZpc2lvbnMoc2VsZiwgY29tbWl0cyk6CisgICAgICAgIHJldmlzaW9ucyA9IHNldCgp
CisgICAgICAgIGZvciByZWFzb24gaW4gY29tbWl0cy5rZXlzKCk6CisgICAgICAgICAgICByZXZp
c2lvbnMgfD0gY29tbWl0c1tyZWFzb25dCisgICAgICAgIGZpcnN0ID0gVHJ1ZQorICAgICAgICBs
aW5lID0gc3RyKCkKKyAgICAgICAgZm9yIHJldmlzaW9uIGluIHNvcnRlZChyZXZpc2lvbnMsIHJl
dmVyc2U9VHJ1ZSk6CisgICAgICAgICAgICBsaW5lICs9ICclc3IlcycgJSAoJyAgICAnIGlmIGZp
cnN0IGVsc2UgJywgJywgcmV2aXNpb24pCisgICAgICAgICAgICBmaXJzdCA9IEZhbHNlCisgICAg
ICAgIHByaW50IGxpbmUKKworICAgIGRlZiBfY29udHJpYnV0b3JfbmFtZXNfZnJvbV9uYW1lX29y
X2VtYWlsX2xpc3Qoc2VsZiwgbmFtZV9vcl9lbWFpbF9saXN0KToKKyAgICAgICAgY29udHJpYnV0
b3JfbmFtZXMgPSBzZXQoKQorICAgICAgICBmb3IgbmFtZV9vcl9lbWFpbCBpbiByZS5zcGxpdChy
J1xzKig/OmFuZHwsKVxzKicsIG5hbWVfb3JfZW1haWxfbGlzdCk6CisgICAgICAgICAgICBpZiAn
QCcgaW4gbmFtZV9vcl9lbWFpbDoKKyAgICAgICAgICAgICAgICBjb250cmlidXRvciA9IHNlbGYu
X2NvbW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9yX2J5X2VtYWlsKG5hbWVfb3JfZW1haWwpCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRyaWJ1dG9yID0gc2VsZi5fY29tbWl0
dGVyX2xpc3QuY29udHJpYnV0b3JfYnlfbmFtZShuYW1lX29yX2VtYWlsKQorICAgICAgICAgICAg
aWYgY29udHJpYnV0b3I6CisgICAgICAgICAgICAgICAgY29udHJpYnV0b3JfbmFtZXMuYWRkKGNv
bnRyaWJ1dG9yLmZ1bGxfbmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
cHJpbnQgJ05vIHN1Y2ggY29udHJpYnV0b3I6ICVzJyAlIG5hbWVfb3JfZW1haWwKKyAgICAgICAg
cmV0dXJuIGNvbnRyaWJ1dG9yX25hbWVzCisKKyAgICBkZWYgX3Nob3dfdW5yZXZpZXdlZF9jb21t
aXRzKHNlbGYpOgorICAgICAgICBjb3VudF9tYXggPSAwCisgICAgICAgIGNvdW50X3RvdGFsID0g
MAorICAgICAgICBpZiBzZWxmLnNob3dfdW5yZXZpZXdlZF9jb21taXRzX2ZvcjoKKyAgICAgICAg
ICAgIG5hbWVzID0gc2VsZi5fY29udHJpYnV0b3JfbmFtZXNfZnJvbV9uYW1lX29yX2VtYWlsX2xp
c3Qoc2VsZi5zaG93X3VucmV2aWV3ZWRfY29tbWl0c19mb3IpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBuYW1lcyA9IHNlbGYuX2NvbW1pdF91bnJldmlld2VkLmtleXMoKQorICAgICAgICBm
b3IgbmFtZSBpbiBzb3J0ZWQobmFtZXMpOgorICAgICAgICAgICAgY29tbWl0cyA9IHNlbGYuX2Nv
bW1pdF91bnJldmlld2VkLmdldChuYW1lKQorICAgICAgICAgICAgY291bnQgPSBzZWxmLl91bnJl
dmlld2VkX2NvbW1pdHNfY291bnQoY29tbWl0cykgaWYgY29tbWl0cyBlbHNlIDAKKyAgICAgICAg
ICAgIGNvdW50X21heCA9IG1heChjb3VudF9tYXgsIGNvdW50KQorICAgICAgICAgICAgY291bnRf
dG90YWwgKz0gY291bnQKKyAgICAgICAgZm9yIG5hbWUgaW4gc29ydGVkKG5hbWVzKToKKyAgICAg
ICAgICAgIGNvbnRyaWJ1dG9yID0gc2VsZi5fY29tbWl0dGVyX2xpc3QuY29udHJpYnV0b3JfYnlf
bmFtZShuYW1lKQorICAgICAgICAgICAgY29tbWl0cyA9IHNlbGYuX2NvbW1pdF91bnJldmlld2Vk
LmdldChuYW1lKQorICAgICAgICAgICAgY291bnQgPSBzZWxmLl91bnJldmlld2VkX2NvbW1pdHNf
Y291bnQoY29tbWl0cykgaWYgY29tbWl0cyBlbHNlIDAKKyAgICAgICAgICAgIGlmIG5vdCBjb250
cmlidXRvcjoKKyAgICAgICAgICAgICAgICByb2xlID0gJz8nCisgICAgICAgICAgICBlbGlmIGNv
bnRyaWJ1dG9yLmNhbl9yZXZpZXc6CisgICAgICAgICAgICAgICAgcm9sZSA9ICdSJworICAgICAg
ICAgICAgZWxpZiBjb250cmlidXRvci5jYW5fY29tbWl0OgorICAgICAgICAgICAgICAgIHJvbGUg
PSAnQycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcm9sZSA9ICctJworICAg
ICAgICAgICAgcHJpbnQgJ1VOUkVWSUVXRUQgQ09NTUlUUzogWyVzXSAoJSpkKSAlcycgJSAocm9s
ZSwgbGVuKHN0cihjb3VudF9tYXgpKSwgY291bnQsIG5hbWUpCisgICAgICAgICAgICBpZiBzZWxm
LnNob3dfdW5yZXZpZXdlZF9jb21taXRzX3JldmlzaW9uczoKKyAgICAgICAgICAgICAgICBzZWxm
Ll9zaG93X3VucmV2aWV3ZWRfY29tbWl0c19yZXZpc2lvbnMoY29tbWl0cykKKyAgICAgICAgcHJp
bnQgJ1VOUkVWSUVXRUQgQ09NTUlUUzogVG90YWwgJWQnICUgY291bnRfdG90YWwKKworICAgIGRl
ZiBfcmV2aWV3ZXJzX2Zyb21fbmFtZV9vcl9lbWFpbF9saXN0KHNlbGYsIG5hbWVfb3JfZW1haWxf
bGlzdCk6CisgICAgICAgIHJldmlld2VycyA9IHNldCgpCisgICAgICAgIG5hbWVfb3JfZW1haWxf
bGlzdCwgXyA9IHJlLnN1Ym4ocidccytcKFteKV0uKlwpJywgJycsIG5hbWVfb3JfZW1haWxfbGlz
dCkKKyAgICAgICAgZm9yIG5hbWVfb3JfZW1haWwgaW4gcmUuc3BsaXQocicoPzpccythbmR8XHMq
LClccyonLCBuYW1lX29yX2VtYWlsX2xpc3QpOgorICAgICAgICAgICAgaWYgJ0AnIGluIG5hbWVf
b3JfZW1haWw6CisgICAgICAgICAgICAgICAgcmV2aWV3ZXIgPSBzZWxmLl9jb21taXR0ZXJfbGlz
dC5jb250cmlidXRvcl9ieV9lbWFpbChuYW1lX29yX2VtYWlsKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICByZXZpZXdlciA9IHNlbGYuX2NvbW1pdHRlcl9saXN0LmNvbnRyaWJ1
dG9yX2J5X25hbWUobmFtZV9vcl9lbWFpbCkKKyAgICAgICAgICAgIGlmIG5vdCByZXZpZXdlcjoK
KyAgICAgICAgICAgICAgICBtYXRjaGVzLCBfID0gc2VsZi5fY29tbWl0dGVyX2xpc3QuY29udHJp
YnV0b3JzX2J5X2Z1enp5X21hdGNoKG5hbWVfb3JfZW1haWwpCisgICAgICAgICAgICAgICAgaWYg
bWF0Y2hlczoKKyAgICAgICAgICAgICAgICAgICAgcmV2aWV3ZXIgPSBtYXRjaGVzWzBdCisgICAg
ICAgICAgICBpZiByZXZpZXdlcjoKKyAgICAgICAgICAgICAgICByZXZpZXdlcnMuYWRkKHJldmll
d2VyKQorICAgICAgICByZXR1cm4gcmV2aWV3ZXJzCisKKyAgICBkZWYgX3JlY29yZF9yZXZpZXdl
ZF9jb21taXQoc2VsZiwgY29tbWl0dGVyLCByZXZpc2lvbiwgZGF0ZSwgcmV2aWV3ZXJzKToKKyAg
ICAgICAgIyBSZWNvcmQgY29tbWl0IGluIGNvbW1pdGVyIG5hbWUgdG8gcmV2aXNpb25zIG1hcC4K
KyAgICAgICAgcmV2aXNpb25zID0gc2VsZi5fY29tbWl0X3Jldmlld2VkLmdldChjb21taXR0ZXIu
ZnVsbF9uYW1lKQorICAgICAgICBpZiBub3QgcmV2aXNpb25zOgorICAgICAgICAgICAgcmV2aXNp
b25zID0gc2V0KCkKKyAgICAgICAgcmV2aXNpb25zLmFkZChyZXZpc2lvbikKKyAgICAgICAgc2Vs
Zi5fY29tbWl0X3Jldmlld2VkW2NvbW1pdHRlci5mdWxsX25hbWVdID0gcmV2aXNpb25zCisgICAg
ICAgICMgUmVjb3JkIHJldmlld2VycyBpbiByZXZpZXdlciBuYW1lIHRvIHJldmlzaW9ucyBtYXAu
CisgICAgICAgIGZvciByZXZpZXdlciBpbiByZXZpZXdlcnM6CisgICAgICAgICAgICByZXZpZXdl
cl9uYW1lID0gcmV2aWV3ZXIuZnVsbF9uYW1lCisgICAgICAgICAgICByZXZpc2lvbnMgPSBzZWxm
Ll9jb21taXRfcmV2aWV3ZXJzLmdldChyZXZpZXdlcl9uYW1lKQorICAgICAgICAgICAgaWYgbm90
IHJldmlzaW9uczoKKyAgICAgICAgICAgICAgICByZXZpc2lvbnMgPSBzZXQoKQorICAgICAgICAg
ICAgcmV2aXNpb25zLmFkZChyZXZpc2lvbikKKyAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9yZXZp
ZXdlcnNbcmV2aWV3ZXJfbmFtZV0gPSByZXZpc2lvbnMKKworICAgIGRlZiBfcmVjZW50X2NvbW1p
dHMoc2VsZik6CiAKLSAgICBkZWYgX2NvdW50X3JlY2VudF9wYXRjaGVzKHNlbGYpOgotICAgICAg
ICAjIFRoaXMgZW50aXJlIGJsb2NrIGNvdWxkIGJlIHdyaXR0ZW4gYXMgYSBtYXAvcmVkdWNlIG92
ZXIgdGhlIG1lc3NhZ2VzLgogICAgICAgICBmb3IgbWVzc2FnZSBpbiBzZWxmLl9yZWNlbnRfY29t
bWl0X21lc3NhZ2VzKCk6Ci0gICAgICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgQ2hh
bmdlTG9nRW50cnkgdG8gZG8gdGhlIGVudGlyZSBwYXJzZSBpbnN0ZWFkCi0gICAgICAgICAgICAj
IG9mIGdyYWJiaW5nIGF0IGl0cyByZWdleHBzLgotICAgICAgICAgICAgZGF0ZWxpbmVfbWF0Y2gg
PSByZS5tYXRjaChDaGFuZ2VMb2dFbnRyeS5kYXRlX2xpbmVfcmVnZXhwLCBtZXNzYWdlLCByZS5N
VUxUSUxJTkUpCi0gICAgICAgICAgICBpZiBub3QgZGF0ZWxpbmVfbWF0Y2g6Ci0gICAgICAgICAg
ICAgICAgIyBNb2Rlcm4gY29tbWl0IG1lc3NhZ2VzIGRvbid0IGp1c3QgZHVtcCB0aGUgQ2hhbmdl
TG9nIGVudHJ5LCBidXQgcmF0aGVyCi0gICAgICAgICAgICAgICAgIyBoYXZlIGEgc3BlY2lhbCBQ
YXRjaCBieSBsaW5lIGZvciBub24tY29tbWl0dGVycy4KLSAgICAgICAgICAgICAgICBkYXRlbGlu
ZV9tYXRjaCA9IHJlLnNlYXJjaChzZWxmLnBhdGNoX2J5X3JlZ2V4cCwgbWVzc2FnZSwgcmUuTVVM
VElMSU5FKQotICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRlbGluZV9tYXRjaDoKLSAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgYXV0aG9yX2VtYWlsID0gZGF0ZWxp
bmVfbWF0Y2guZ3JvdXAoImVtYWlsIikKLSAgICAgICAgICAgIGlmIG5vdCBhdXRob3JfZW1haWw6
CisKKyAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9jb3VudCA9IHNlbGYuX2NvbW1pdF9jb3VudCAr
IDEKKworICAgICAgICAgICAgIyBEZXRlcm1pbmUgY29tbWl0dGVyIGlmIHBvc3NpYmxlLCBvdGhl
cndpc2Ugc2tpcCBjb21taXQuCisgICAgICAgICAgICBjb21taXR0ZXJfbWF0Y2ggPSBzZWxmLl9t
YXRjaF9jb21taXR0ZXIuc2VhcmNoKG1lc3NhZ2UpCisgICAgICAgICAgICBpZiBub3QgY29tbWl0
dGVyX21hdGNoOgorICAgICAgICAgICAgICAgIHNlbGYuX21heWJlX3Nob3dfc2tpcHBlZF9jb21t
aXQobWVzc2FnZSwgImNhbid0IGRldGVybWluZSBjb21taXR0ZXIiKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgRGV0ZXJtaW5lIGNvbW1pdHRlciBlbWFpbCBpZiBw
b3NzaWJsZSwgb3RoZXJ3aXNlIHNraXAgY29tbWl0LgorICAgICAgICAgICAgY29tbWl0dGVyX2Vt
YWlsID0gY29tbWl0dGVyX21hdGNoLmdyb3VwKCdlbWFpbCcpCisgICAgICAgICAgICBpZiBub3Qg
Y29tbWl0dGVyX2VtYWlsOgorICAgICAgICAgICAgICAgIHNlbGYuX21heWJlX3Nob3dfc2tpcHBl
ZF9jb21taXQobWVzc2FnZSwgImNhbid0IGRldGVybWluZSBjb21taXR0ZXIncyBlbWFpbCIpCisg
ICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyBEZXRlcm1pbmUgaWYgY29t
bWl0dGVyIGlzIGEga25vd24gY29udHJpYnV0b3IsIGkuZS4sIHJlZ2lzdGVyZWQgaW4gY29tbWl0
dGVycy5weSwgb3RoZXJ3aXNlIHNraXAgY29tbWl0LgorICAgICAgICAgICAgY29tbWl0dGVyID0g
c2VsZi5fY29udHJpYnV0b3JfZnJvbV9lbWFpbChjb21taXR0ZXJfZW1haWwpCisgICAgICAgICAg
ICBpZiBub3QgY29tbWl0dGVyOgorICAgICAgICAgICAgICAgIHNlbGYuX21heWJlX3Nob3dfc2tp
cHBlZF9jb21taXQobWVzc2FnZSwgImNhbid0IGZpbmQgY29tbWl0dGVyIGluIGNvbnRyaWJ1dG9y
cyBsaXN0IikKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIERldGVy
bWluZSBjb21taXQgZGF0ZSBpZiBwb3NzaWJsZSwgb3RoZXJ3aXNlIHNraXAgY29tbWl0LgorICAg
ICAgICAgICAgY29tbWl0X2RhdGVfbWF0Y2ggPSBzZWxmLl9tYXRjaF9kYXRlLnNlYXJjaChtZXNz
YWdlKQorICAgICAgICAgICAgaWYgbm90IGNvbW1pdF9kYXRlX21hdGNoOgorICAgICAgICAgICAg
ICAgIHNlbGYuX21heWJlX3Nob3dfc2tpcHBlZF9jb21taXQobWVzc2FnZSwgImNhbid0IGRldGVy
bWluZSBjb21taXQgZGF0ZSIpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
IGNvbW1pdF9kYXRlID0gc2VsZi5fY29tbWl0X2RhdGVfZnJvbV9tYXRjaChjb21taXRfZGF0ZV9t
YXRjaCkKKworICAgICAgICAgICAgIyBEZXRlcm1pbmUgcmV2aXNpb24gaWYgcG9zc2libGUsIG90
aGVyd2lzZSBza2lwIGNvbW1pdC4KKyAgICAgICAgICAgIHJldmlzaW9uX21hdGNoID0gc2VsZi5f
bWF0Y2hfcmV2aXNpb24uc2VhcmNoKG1lc3NhZ2UpCisgICAgICAgICAgICBpZiBub3QgcmV2aXNp
b25fbWF0Y2g6CisgICAgICAgICAgICAgICAgc2VsZi5fbWF5YmVfc2hvd19za2lwcGVkX2NvbW1p
dChtZXNzYWdlLCAiY2FuJ3QgZGV0ZXJtaW5lIHN2biBpZCIpCisgICAgICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgICAgIHJldmlzaW9uID0gcmV2aXNpb25fbWF0Y2guZ3JvdXAoJ3N2bmlk
JykKKworICAgICAgICAgICAgIyBEZXRlcm1pbmUgYXV0aG9yIGlmIHBvc3NpYmxlLCBvdGhlcndp
c2Ugc2tpcCBjb21taXQuIExvb2sgZm9yICJQYXRjaCBieSIgbGluZSBmaXJzdCwgd2hpY2gKKyAg
ICAgICAgICAgICMgaXMgdXNlZCBmb3Igbm9uLWNvbW1pdHRlciBjb250cmlidXRvcnM7IG90aGVy
d2lzZSwgdXNlIGNvbW1pdHRlciBpbmZvIGRldGVybWluZWQgYWJvdmUuCisgICAgICAgICAgICBh
dXRob3JfbWF0Y2ggPSBzZWxmLl9tYXRjaF9wYXRjaF9ieS5zZWFyY2gobWVzc2FnZSkKKyAgICAg
ICAgICAgIGlmIG5vdCBhdXRob3JfbWF0Y2g6CisgICAgICAgICAgICAgICAgYXV0aG9yX21hdGNo
ID0gY29tbWl0dGVyX21hdGNoCisgICAgICAgICAgICBpZiBub3QgYXV0aG9yX21hdGNoOgorICAg
ICAgICAgICAgICAgIHNlbGYuX21heWJlX3Nob3dfc2tpcHBlZF9jb21taXQobWVzc2FnZSwgImNh
bid0IGRldGVybWluZSBhdXRob3IiKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAg
ICAgICAgICMgV2Ugb25seSBjYXJlIGFib3V0IHJldmlld2VkIHBhdGNoZXMsIHNvIG1ha2Ugc3Vy
ZSBpdCBoYXMgYSB2YWxpZCByZXZpZXdlciBsaW5lLgotICAgICAgICAgICAgcmV2aWV3ZXJfbWF0
Y2ggPSByZS5zZWFyY2goQ2hhbmdlTG9nRW50cnkucmV2aWV3ZWRfYnlfcmVnZXhwLCBtZXNzYWdl
LCByZS5NVUxUSUxJTkUpCi0gICAgICAgICAgICAjIFdlIG1pZ2h0IGFsc28gd2FudCB0byB2YWxp
ZGF0ZSB0aGUgcmV2aWV3ZXIgbmFtZSBhZ2FpbnN0IHRoZSBjb21taXR0ZXIgbGlzdC4KLSAgICAg
ICAgICAgIGlmIG5vdCByZXZpZXdlcl9tYXRjaCBvciBub3QgcmV2aWV3ZXJfbWF0Y2guZ3JvdXAo
InJldmlld2VyIik6CisgICAgICAgICAgICAjIERldGVybWluZSBhdXRob3IgZW1haWwgaWYgcG9z
c2libGUsIG90aGVyd2lzZSBza2lwIGNvbW1pdC4KKyAgICAgICAgICAgIGF1dGhvcl9lbWFpbCA9
IGF1dGhvcl9tYXRjaC5ncm91cCgnZW1haWwnKQorICAgICAgICAgICAgaWYgbm90IGF1dGhvcl9l
bWFpbDoKKyAgICAgICAgICAgICAgICBhdXRob3JfZW1haWwgPSBjb21taXR0ZXJfZW1haWwKKyAg
ICAgICAgICAgICAgICBzZWxmLl9tYXliZV9zaG93X3NraXBwZWRfY29tbWl0KG1lc3NhZ2UsICJj
YW4ndCBkZXRlcm1pbmUgYXV0aG9yJ3MgZW1haWwiKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
CiAKLSAgICAgICAgICAgIGF1dGhvcl9uYW1lID0gZGF0ZWxpbmVfbWF0Y2guZ3JvdXAoIm5hbWUi
KQorICAgICAgICAgICAgIyBEZXRlcm1pbmUgaWYgYXV0aG9yIGlzIGEga25vd24gY29udHJpYnV0
b3IsIGkuZS4sIHJlZ2lzdGVyZWQgaW4gY29tbWl0dGVycy5weS4KKyAgICAgICAgICAgIGNvbnRy
aWJ1dG9yID0gc2VsZi5fY29udHJpYnV0b3JfZnJvbV9lbWFpbChhdXRob3JfZW1haWwpCisKKyAg
ICAgICAgICAgICMgRGV0ZXJtaW5lIGF1dGhvciBuYW1lIGlmIHBvc3NpYmxlLCBvdGhlcndpc2Ug
c2tpcCBjb21taXQuCisgICAgICAgICAgICBhdXRob3JfbmFtZSA9IGF1dGhvcl9tYXRjaC5ncm91
cCgnbmFtZScpIGlmICduYW1lJyBpbiBhdXRob3JfbWF0Y2guZ3JvdXBkaWN0KCkgZWxzZSBOb25l
CiAgICAgICAgICAgICBpZiBub3QgYXV0aG9yX25hbWU6CisgICAgICAgICAgICAgICAgYXV0aG9y
X25hbWUgPSBzZWxmLl9hdXRob3JfbmFtZV9mcm9tX2VtYWlsKGF1dGhvcl9lbWFpbCkKKyAgICAg
ICAgICAgIGlmIG5vdCBhdXRob3JfbmFtZToKKyAgICAgICAgICAgICAgICBzZWxmLl9tYXliZV9z
aG93X3NraXBwZWRfY29tbWl0KG1lc3NhZ2UsICJjYW4ndCBkZXRlcm1pbmUgYXV0aG9yJ3MgbmFt
ZSIpCiAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgaWYgcmUuc2VhcmNo
KCIoW15hLXpBLVpdYW5kW15hLXpBLVpdKXwoLCl8KEApIiwgYXV0aG9yX25hbWUpOgotICAgICAg
ICAgICAgICAgICMgVGhpcyBlbnRyeSBzZWVtcyB0byBoYXZlIG11bHRpcGxlIHJldmlld2Vycywg
b3IgaW52YWxpZCBjaGFyYWN0ZXJzLCBzbyByZWplY3QgaXQuCisgICAgICAgICAgICAjIFVzZSBj
YW5vbmljYWwgbmFtZSBpZiBrbm93biBjb250cmlidXRvci4KKyAgICAgICAgICAgIGlmIGNvbnRy
aWJ1dG9yIGFuZCBhdXRob3JfbmFtZSAhPSBjb250cmlidXRvci5mdWxsX25hbWU6CisgICAgICAg
ICAgICAgICAgYXV0aG9yX25hbWUgPSBjb250cmlidXRvci5mdWxsX25hbWUKKworICAgICAgICAg
ICAgIyBEZXRlcm1pbmUgcmV2aWV3ZXJzIGlmIHBvc3NpYmxlLCBvdGhlcndpc2Ugc2tpcCBjb21t
aXQuCisgICAgICAgICAgICByZXZpZXdlcl9tYXRjaCA9IHNlbGYuX21hdGNoX3Jldmlld2VkX2J5
LnNlYXJjaChtZXNzYWdlKQorICAgICAgICAgICAgaWYgbm90IHJldmlld2VyX21hdGNoOgorICAg
ICAgICAgICAgICAgIHVucmV2aWV3ZWRfbWF0Y2ggPSBzZWxmLl9tYXRjaF91bnJldmlld2VkLnNl
YXJjaChtZXNzYWdlKQorICAgICAgICAgICAgICAgIGlmIHVucmV2aWV3ZWRfbWF0Y2g6CisgICAg
ICAgICAgICAgICAgICAgIHJlYXNvbiA9ICJ1bnJldmlld2VkIgorICAgICAgICAgICAgICAgIGVs
aWYgY29udHJpYnV0b3I6CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnRyaWJ1dG9yLmNhbl9y
ZXZpZXc6CisgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24gPSAidW5yZXZpZXdlZCwgYnV0
IG5vdCBtYXJrZWQ7IGF1dGhvciBpcyBhIHJldmlld2VyIgorICAgICAgICAgICAgICAgICAgICBl
bGlmIGNvbnRyaWJ1dG9yLmNhbl9jb21taXQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZWFz
b24gPSAidW5yZXZpZXdlZCwgYnV0IG5vdCBtYXJrZWQ7IGF1dGhvciBpcyBhIGNvbW1pdHRlciIK
KyAgICAgICAgICAgICAgICAgICAgZWxpZiBjb250cmlidXRvci5mdWxsX25hbWUgIT0gJ0NvbW1p
dCBRdWV1ZSc6CisgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24gPSAidW5yZXZpZXdlZCwg
YnV0IG5vdCBtYXJrZWQ7IGF1dGhvciBpcyBub3QgYSBjb21taXR0ZXIgb3IgcmV2aWV3ZXIhIgor
ICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29u
ID0gInVucmV2aWV3ZWQsIGJ1dCBub3QgbWFya2VkOyBhdXRob3IgaXMgQ29tbWl0IFF1ZXVlISIK
KyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZWFzb24gPSAidW5y
ZXZpZXdlZCwgYnV0IG5vdCBtYXJrZWQ7IGF1dGhvciBpcyBub3QgYSBjb250cmlidXRvciIKKyAg
ICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fbWF0Y2hfZ2FyZGVuaW5nLnNlYXJjaChtZXNzYWdl
KSBvciBzZWxmLnJlY29yZF9nYXJkZW5pbmdfdW5yZXZpZXdlZF9jb21taXRzOgorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9yZWNvcmRfdW5yZXZpZXdlZF9jb21taXQoY29tbWl0dGVyLCByZXZp
c2lvbiwgcmVhc29uKQorICAgICAgICAgICAgICAgIHNlbGYuX21heWJlX3Nob3dfc2tpcHBlZF9j
b21taXQobWVzc2FnZSwgcmVhc29uKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg
ICAgICByZXZpZXdlcnMgPSByZXZpZXdlcl9tYXRjaC5ncm91cCgncmV2aWV3ZXJzJykKKworICAg
ICAgICAgICAgeWllbGQgeworICAgICAgICAgICAgICAgICdjb21taXR0ZXInOiBjb21taXR0ZXIs
CisgICAgICAgICAgICAgICAgJ2NvbW1pdF9kYXRlJzogY29tbWl0X2RhdGUsCisgICAgICAgICAg
ICAgICAgJ3JldmlzaW9uJzogcmV2aXNpb24sCisgICAgICAgICAgICAgICAgJ2F1dGhvcl9lbWFp
bCc6IGF1dGhvcl9lbWFpbCwKKyAgICAgICAgICAgICAgICAnYXV0aG9yX25hbWUnOiBhdXRob3Jf
bmFtZSwKKyAgICAgICAgICAgICAgICAnY29udHJpYnV0b3InOiBjb250cmlidXRvciwKKyAgICAg
ICAgICAgICAgICAncmV2aWV3ZXJzJzogcmV2aWV3ZXJzLAorICAgICAgICAgICAgfQorCisKK2Ns
YXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhBYnN0cmFjdFN1Z2dlc3RDb21tYW5kKToKKyAgICBuYW1l
ID0gInN1Z2dlc3Qtbm9taW5hdGlvbnMiCisgICAgaGVscF90ZXh0ID0gIlN1Z2dlc3Qgbm9taW5h
dGlvbnMgZm9yIGNvbW1pdHRlci9yZXZpZXdlciByb2xlIgorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYpOgorICAgICAgICBvcHRpb25zID0gW10KKyAgICAgICAgb3B0aW9ucyArPSBzZWxmLl9ub21p
bmF0aW9uX29wdGlvbnMoKQorICAgICAgICBvcHRpb25zICs9IHNlbGYuX291dHB1dF9vcHRpb25z
KCkKKyAgICAgICAgc3VwZXIoU3VnZ2VzdE5vbWluYXRpb25zLCBzZWxmKS5fX2luaXRfXyhvcHRp
b25zPW9wdGlvbnMpCisKKyAgICBkZWYgX25vbWluYXRpb25fb3B0aW9ucyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIFsKKyAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWNvbW1pdHRl
ci1taW5pbXVtIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImNvbW1pdHRlcl9taW5pbXVtIiwgdHlw
ZT0iaW50IiwgZGVmYXVsdD0xMCwgaGVscD0iU3BlY2lmeSBtaW5pbXVtIHBhdGNoIGNvdW50IGZv
ciBDb21taXR0ZXIgbm9taW5hdGlvbnMuIiksCisgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29w
dGlvbigiLS1yZXZpZXdlci1taW5pbXVtIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InJldmlld2Vy
X21pbmltdW0iLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTgwLCBoZWxwPSJTcGVjaWZ5IG1pbmltdW0g
cGF0Y2ggY291bnQgZm9yIFJldmlld2VyIG5vbWluYXRpb25zLiIpLAorICAgICAgICBdCiAKLSAg
ICAgICAgICAgIHN2bl9pZF9tYXRjaCA9IHJlLnNlYXJjaChDaGFuZ2VMb2dFbnRyeS5zdm5faWRf
cmVnZXhwLCBtZXNzYWdlLCByZS5NVUxUSUxJTkUpCi0gICAgICAgICAgICBpZiBzdm5faWRfbWF0
Y2g6Ci0gICAgICAgICAgICAgICAgc3ZuX2lkID0gc3ZuX2lkX21hdGNoLmdyb3VwKCJzdm5pZCIp
Ci0gICAgICAgICAgICBpZiBub3Qgc3ZuX2lkX21hdGNoIG9yIG5vdCBzdm5faWQ6Ci0gICAgICAg
ICAgICAgICAgc3ZuX2lkID0gInVua25vd24iCi0gICAgICAgICAgICBjb21taXRfZGF0ZSA9IGRh
dGVsaW5lX21hdGNoLmdyb3VwKCJkYXRlIikKKyAgICBkZWYgX291dHB1dF9vcHRpb25zKHNlbGYp
OgorICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0t
c2hvdy1jb21taXRzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ic2hvd19jb21taXRzIiwg
ZGVmYXVsdD1GYWxzZSwgaGVscD0iU2hvdyBjb21taXQgaGlzdG9yeSB3aXRoIG91dHB1dCBzdWdn
ZXN0aW9ucy4iKSwKKyAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXNob3ctcGF0
Y2gtY291bnRzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ic2hvd19wYXRjaF9jb3VudHMi
LCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJTaG93IHBhdGNoIGNvdW50cy4iKSwKKyAgICAgICAgXQor
CisgICAgZGVmIF9pbml0X29wdGlvbnMoc2VsZiwgb3B0aW9ucyk6CisgICAgICAgIHN1cGVyKFN1
Z2dlc3ROb21pbmF0aW9ucywgc2VsZikuX2luaXRfb3B0aW9ucyhvcHRpb25zKQorICAgICAgICBz
ZWxmLmNvbW1pdHRlcl9taW5pbXVtID0gb3B0aW9ucy5jb21taXR0ZXJfbWluaW11bQorICAgICAg
ICBzZWxmLm1heF9jb21taXRfYWdlID0gb3B0aW9ucy5tYXhfY29tbWl0X2FnZQorICAgICAgICBz
ZWxmLnJldmlld2VyX21pbmltdW0gPSBvcHRpb25zLnJldmlld2VyX21pbmltdW0KKyAgICAgICAg
c2VsZi5zaG93X2NvbW1pdHMgPSBvcHRpb25zLnNob3dfY29tbWl0cworICAgICAgICBzZWxmLnNo
b3dfcGF0Y2hfY291bnRzID0gb3B0aW9ucy5zaG93X3BhdGNoX2NvdW50cworCisgICAgZGVmIF9j
b3VudF9yZWNlbnRfcGF0Y2hlcyhzZWxmKToKKyAgICAgICAgY291bnRlcnNfYnlfbmFtZSA9IHt9
CisgICAgICAgIGNvdW50ZXJzX2J5X2VtYWlsID0ge30KKworICAgICAgICBmb3IgY29tbWl0IGlu
IHNlbGYuX3JlY2VudF9jb21taXRzKCk6CisKKyAgICAgICAgICAgIG5hbWUgPSBjb21taXRbJ2F1
dGhvcl9uYW1lJ10KKyAgICAgICAgICAgIGVtYWlsID0gY29tbWl0WydhdXRob3JfZW1haWwnXQor
ICAgICAgICAgICAgZGF0ZSA9IGNvbW1pdFsnY29tbWl0X2RhdGUnXQorICAgICAgICAgICAgcmV2
aXNpb24gPSBjb21taXRbJ3JldmlzaW9uJ10KIAogICAgICAgICAgICAgIyBTZWUgaWYgd2UgYWxy
ZWFkeSBoYXZlIGEgY29udHJpYnV0b3Igd2l0aCB0aGlzIG5hbWUgb3IgZW1haWwKLSAgICAgICAg
ICAgIGNvdW50ZXJfYnlfbmFtZSA9IHNlbGYuX2NvdW50ZXJzX2J5X25hbWUuZ2V0KGF1dGhvcl9u
YW1lKQotICAgICAgICAgICAgY291bnRlcl9ieV9lbWFpbCA9IHNlbGYuX2NvdW50ZXJzX2J5X2Vt
YWlsLmdldChhdXRob3JfZW1haWwpCisgICAgICAgICAgICBjb3VudGVyX2J5X25hbWUgPSBjb3Vu
dGVyc19ieV9uYW1lLmdldChuYW1lKQorICAgICAgICAgICAgY291bnRlcl9ieV9lbWFpbCA9IGNv
dW50ZXJzX2J5X2VtYWlsLmdldChlbWFpbCkKICAgICAgICAgICAgIGlmIGNvdW50ZXJfYnlfbmFt
ZToKICAgICAgICAgICAgICAgICBpZiBjb3VudGVyX2J5X2VtYWlsOgogICAgICAgICAgICAgICAg
ICAgICBpZiBjb3VudGVyX2J5X25hbWUgIT0gY291bnRlcl9ieV9lbWFpbDoKQEAgLTEzMiwzMSAr
Mzk3LDMxIEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFtZVsnbmFtZXMnXSB8PSBjb3VudGVyX2J5X2VtYWls
WyduYW1lcyddCiAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X25hbWVbJ2VtYWls
cyddIHw9IGNvdW50ZXJfYnlfZW1haWxbJ2VtYWlscyddCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb3VudGVyX2J5X25hbWVbJ2NvdW50J10gKz0gY291bnRlcl9ieV9lbWFpbC5nZXQoJ2NvdW50
JywgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvdW50ZXJzX2J5X2VtYWlsW2F1
dGhvcl9lbWFpbF0gPSBjb3VudGVyX2J5X25hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
dW50ZXJzX2J5X2VtYWlsW2VtYWlsXSA9IGNvdW50ZXJfYnlfbmFtZQogICAgICAgICAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICMgQWRkIGVtYWlsIHRvIHRoZSBleGlzdGluZyBj
b3VudGVyCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvdW50ZXJzX2J5X2VtYWlsW2F1dGhv
cl9lbWFpbF0gPSBjb3VudGVyX2J5X25hbWUKLSAgICAgICAgICAgICAgICAgICAgY291bnRlcl9i
eV9uYW1lWydlbWFpbHMnXSB8PSBzZXQoW2F1dGhvcl9lbWFpbF0pCisgICAgICAgICAgICAgICAg
ICAgIGNvdW50ZXJzX2J5X2VtYWlsW2VtYWlsXSA9IGNvdW50ZXJfYnlfbmFtZQorICAgICAgICAg
ICAgICAgICAgICBjb3VudGVyX2J5X25hbWVbJ2VtYWlscyddIHw9IHNldChbZW1haWxdKQogICAg
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpZiBjb3VudGVyX2J5X2VtYWlsOgogICAg
ICAgICAgICAgICAgICAgICAjIEFkZCBuYW1lIHRvIHRoZSBleGlzdGluZyBjb3VudGVyCi0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2NvdW50ZXJzX2J5X25hbWVbYXV0aG9yX25hbWVdID0gY291
bnRlcl9ieV9lbWFpbAotICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X2VtYWlsWyduYW1l
cyddIHw9IHNldChbYXV0aG9yX25hbWVdKQorICAgICAgICAgICAgICAgICAgICBjb3VudGVyc19i
eV9uYW1lW25hbWVdID0gY291bnRlcl9ieV9lbWFpbAorICAgICAgICAgICAgICAgICAgICBjb3Vu
dGVyX2J5X2VtYWlsWyduYW1lcyddIHw9IHNldChbbmFtZV0pCiAgICAgICAgICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgbmV3IGNvdW50ZXIKLSAgICAgICAgICAg
ICAgICAgICAgbmV3X2NvdW50ZXIgPSB7J25hbWVzJzogc2V0KFthdXRob3JfbmFtZV0pLCAnZW1h
aWxzJzogc2V0KFthdXRob3JfZW1haWxdKSwgJ2xhdGVzdF9uYW1lJzogYXV0aG9yX25hbWUsICds
YXRlc3RfZW1haWwnOiBhdXRob3JfZW1haWwsICdjb21taXRzJzogIiJ9Ci0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2NvdW50ZXJzX2J5X25hbWVbYXV0aG9yX25hbWVdID0gbmV3X2NvdW50ZXIK
LSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY291bnRlcnNfYnlfZW1haWxbYXV0aG9yX2VtYWls
XSA9IG5ld19jb3VudGVyCisgICAgICAgICAgICAgICAgICAgIG5ld19jb3VudGVyID0geyduYW1l
cyc6IHNldChbbmFtZV0pLCAnZW1haWxzJzogc2V0KFtlbWFpbF0pLCAnbGF0ZXN0X25hbWUnOiBu
YW1lLCAnbGF0ZXN0X2VtYWlsJzogZW1haWwsICdjb21taXRzJzogIiJ9CisgICAgICAgICAgICAg
ICAgICAgIGNvdW50ZXJzX2J5X25hbWVbbmFtZV0gPSBuZXdfY291bnRlcgorICAgICAgICAgICAg
ICAgICAgICBjb3VudGVyc19ieV9lbWFpbFtlbWFpbF0gPSBuZXdfY291bnRlcgogCi0gICAgICAg
ICAgICBhc3NlcnQoc2VsZi5fY291bnRlcnNfYnlfbmFtZVthdXRob3JfbmFtZV0gPT0gc2VsZi5f
Y291bnRlcnNfYnlfZW1haWxbYXV0aG9yX2VtYWlsXSkKLSAgICAgICAgICAgIGNvdW50ZXIgPSBz
ZWxmLl9jb3VudGVyc19ieV9uYW1lW2F1dGhvcl9uYW1lXQorICAgICAgICAgICAgYXNzZXJ0KGNv
dW50ZXJzX2J5X25hbWVbbmFtZV0gPT0gY291bnRlcnNfYnlfZW1haWxbZW1haWxdKQorICAgICAg
ICAgICAgY291bnRlciA9IGNvdW50ZXJzX2J5X25hbWVbbmFtZV0KICAgICAgICAgICAgIGNvdW50
ZXJbJ2NvdW50J10gPSBjb3VudGVyLmdldCgnY291bnQnLCAwKSArIDEKIAotICAgICAgICAgICAg
aWYgc3ZuX2lkLmlzZGlnaXQoKToKLSAgICAgICAgICAgICAgICBzdm5faWQgPSAiaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvIiArIHN2bl9pZAotICAgICAgICAgICAgY291bnRlclsn
Y29tbWl0cyddICs9ICIgIGNvbW1pdDogJXMgb24gJXMgYnkgJXMgKCVzKVxuIiAlIChzdm5faWQs
IGNvbW1pdF9kYXRlLCBhdXRob3JfbmFtZSwgYXV0aG9yX2VtYWlsKQorICAgICAgICAgICAgaWYg
cmV2aXNpb24uaXNkaWdpdCgpOgorICAgICAgICAgICAgICAgIHJldmlzaW9uID0gImh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LyIgKyByZXZpc2lvbgorICAgICAgICAgICAgY291bnRl
clsnY29tbWl0cyddICs9ICIgIGNvbW1pdDogJXMgb24gJXMgYnkgJXMgKCVzKVxuIiAlIChyZXZp
c2lvbiwgZGF0ZSwgbmFtZSwgZW1haWwpCiAKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NvdW50ZXJz
X2J5X2VtYWlsCisgICAgICAgIHJldHVybiBjb3VudGVyc19ieV9lbWFpbAogCiAgICAgZGVmIF9j
b2xsZWN0X25vbWluYXRpb25zKHNlbGYsIGNvdW50ZXJzX2J5X2VtYWlsKToKICAgICAgICAgbm9t
aW5hdGlvbnMgPSBbXQpAQCAtMTcyLDcgKzQzNyw3IEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9u
cyhDb21tYW5kKToKIAogICAgICAgICAgICAgaWYgcGF0Y2hfY291bnQgPj0gc2VsZi5jb21taXR0
ZXJfbWluaW11bSBhbmQgKG5vdCBjb250cmlidXRvciBvciBub3QgY29udHJpYnV0b3IuY2FuX2Nv
bW1pdCk6CiAgICAgICAgICAgICAgICAgcm9sZXMuYXBwZW5kKCJjb21taXR0ZXIiKQotICAgICAg
ICAgICAgaWYgcGF0Y2hfY291bnQgPj0gc2VsZi5yZXZpZXdlcl9taW5pbXVtICBhbmQgKG5vdCBj
b250cmlidXRvciBvciBub3QgY29udHJpYnV0b3IuY2FuX3Jldmlldyk6CisgICAgICAgICAgICBp
ZiBwYXRjaF9jb3VudCA+PSBzZWxmLnJldmlld2VyX21pbmltdW0gYW5kIGNvbnRyaWJ1dG9yIGFu
ZCBjb250cmlidXRvci5jYW5fY29tbWl0IGFuZCBub3QgY29udHJpYnV0b3IuY2FuX3JldmlldzoK
ICAgICAgICAgICAgICAgICByb2xlcy5hcHBlbmQoInJldmlld2VyIikKICAgICAgICAgICAgIGlm
IHJvbGVzOgogICAgICAgICAgICAgICAgIG5vbWluYXRpb25zLmFwcGVuZCh7CkBAIC0xODMsNyAr
NDQ4LDcgQEAgY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKENvbW1hbmQpOgogICAgICAgICAgICAg
ICAgIH0pCiAgICAgICAgIHJldHVybiBub21pbmF0aW9ucwogCi0gICAgZGVmIF9wcmludF9ub21p
bmF0aW9ucyhzZWxmLCBub21pbmF0aW9ucyk6CisgICAgZGVmIF9wcmludF9ub21pbmF0aW9ucyhz
ZWxmLCBub21pbmF0aW9ucywgY291bnRlcnNfYnlfZW1haWwpOgogICAgICAgICBkZWYgbm9taW5h
dGlvbl9jbXAoYV9ub21pbmF0aW9uLCBiX25vbWluYXRpb24pOgogICAgICAgICAgICAgcm9sZXNf
cmVzdWx0ID0gY21wKGFfbm9taW5hdGlvblsncm9sZXMnXSwgYl9ub21pbmF0aW9uWydyb2xlcydd
KQogICAgICAgICAgICAgaWYgcm9sZXNfcmVzdWx0OgpAQCAtMTk3LDcgKzQ2Miw3IEBAIGNsYXNz
IFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKICAgICAgICAgICAgICMgVGhpcyBpcyBhIGxp
dHRsZSBiaXQgb2YgYSBoYWNrLCBidXQgaXRzIGNvbnZpZW5lbnQgdG8ganVzdCBwYXNzIHRoZSBu
b21pbmF0aW9uIGRpY3Rpb25hcnkgdG8gdGhlIGZvcm1hdGluZyBvcGVyYXRvci4KICAgICAgICAg
ICAgIG5vbWluYXRpb25bJ3JvbGVzX3N0cmluZyddID0gam9pbl93aXRoX3NlcGFyYXRvcnMobm9t
aW5hdGlvblsncm9sZXMnXSkudXBwZXIoKQogICAgICAgICAgICAgcHJpbnQgIiUocm9sZXNfc3Ry
aW5nKXM6ICUoYXV0aG9yX25hbWUpcyAoJShhdXRob3JfZW1haWwpcykgaGFzICUocGF0Y2hfY291
bnQpcyByZXZpZXdlZCBwYXRjaGVzIiAlIG5vbWluYXRpb24KLSAgICAgICAgICAgIGNvdW50ZXIg
PSBzZWxmLl9jb3VudGVyc19ieV9lbWFpbFtub21pbmF0aW9uWydhdXRob3JfZW1haWwnXV0KKyAg
ICAgICAgICAgIGNvdW50ZXIgPSBjb3VudGVyc19ieV9lbWFpbFtub21pbmF0aW9uWydhdXRob3Jf
ZW1haWwnXV0KIAogICAgICAgICAgICAgaWYgc2VsZi5zaG93X2NvbW1pdHM6CiAgICAgICAgICAg
ICAgICAgcHJpbnQgY291bnRlclsnY29tbWl0cyddCkBAIC0yMzIsMTYgKzQ5NywxOSBAQCBjbGFz
cyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAgICAgICAgICAgICAgICAgcHJpbnQgIkNP
TlRSSUJVVE9SOiAlcyAoJXMpIGhhcyAlZCByZXZpZXdlZCBwYXRjaGVzICVzIiAlIChhdXRob3Jf
bmFtZSwgYXV0aG9yX2VtYWlsLCBwYXRjaF9jb3VudCwgIihhbGlhc2VzOiAiICsgIiwgIi5qb2lu
KGFsaWFzX2xpc3QpICsgIikiKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBw
cmludCAiQ09OVFJJQlVUT1I6ICVzICglcykgaGFzICVkIHJldmlld2VkIHBhdGNoZXMiICUgKGF1
dGhvcl9uYW1lLCBhdXRob3JfZW1haWwsIHBhdGNoX2NvdW50KQotICAgICAgICByZXR1cm4KKwor
ICAgICAgICBwcmludCAiQU5BTFlaRUQgJWQgY29tbWl0cywgU0tJUFBFRCAlZCBjb21taXRzIiAl
IChzZWxmLl9jb21taXRfY291bnQsIHNlbGYuX2NvbW1pdF9za2lwcGVkX2NvdW50KQogCiAgICAg
ZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CiAgICAgICAgIHNlbGYuX2lu
aXRfb3B0aW9ucyhvcHRpb25zKQotICAgICAgICBwYXRjaF9jb3VudHMgPSBzZWxmLl9jb3VudF9y
ZWNlbnRfcGF0Y2hlcygpCi0gICAgICAgIG5vbWluYXRpb25zID0gc2VsZi5fY29sbGVjdF9ub21p
bmF0aW9ucyhwYXRjaF9jb3VudHMpCi0gICAgICAgIHNlbGYuX3ByaW50X25vbWluYXRpb25zKG5v
bWluYXRpb25zKQotICAgICAgICBpZiBzZWxmLnZlcmJvc2U6CisgICAgICAgIGNvdW50ZXJzID0g
c2VsZi5fY291bnRfcmVjZW50X3BhdGNoZXMoKQorICAgICAgICBub21pbmF0aW9ucyA9IHNlbGYu
X2NvbGxlY3Rfbm9taW5hdGlvbnMoY291bnRlcnMpCisgICAgICAgIGlmIHNlbGYuX3N1YnN0aXR1
dGVfb3V0cHV0KCk6CisgICAgICAgICAgICBzZWxmLl9wcmludF9zdWJzdGl0dXRlX291dHB1dCgp
CisgICAgICAgIGVsaWYgc2VsZi5zaG93X3BhdGNoX2NvdW50czoKICAgICAgICAgICAgIHNlbGYu
X3ByaW50X2NvdW50cyhwYXRjaF9jb3VudHMpCi0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHNlbGYuX3ByaW50X25vbWluYXRpb25zKG5vbWluYXRpb25zLCBjb3VudGVycykKIAogaWYgX19u
YW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBTdWdnZXN0Tm9taW5hdGlvbnMoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9u
c191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdn
ZXN0bm9taW5hdGlvbnNfdW5pdHRlc3QucHkKaW5kZXggODhiZTI1MzAzOTU5MjNlYjY3ZTk2ZTQ4
NTA4M2M5MzhlNmMzMTcxYy4uMjYxYjQxZDk4ZjRlYzhmNTc2NDFkOTcxYTU1ZTE0OTdlZDZhOWEw
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dl
c3Rub21pbmF0aW9uc191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zX3VuaXR0ZXN0LnB5CkBAIC00NSwyMSArNDUs
NTEgQEAgRGF0ZTogICBUaHUgU2VwIDE1IDE5OjU2OjIxIDIwMTEgKzAwMDAKIAogICAgIGdpdC1z
dm4taWQ6IGh0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVua0A5NTIx
OSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKICIiIgotICAgIG1vY2tfc2Ft
ZV9hdXRob3JfY29tbWl0X21lc3NhZ2UgPSAiIiJWYWx1ZSBwcm9maWxlcyBjb2xsZWN0IG5vIGlu
Zm9ybWF0aW9uIGZvciBnbG9iYWwgdmFyaWFibGVzCisgICAgbW9ja19zYW1lX2F1dGhvcl9jb21t
aXRfbWVzc2FnZSA9ICIiIkF1dGhvcjogZnBpemxvQGFwcGxlLmNvbSA8ZnBpemxvQGFwcGxlLmNv
bUAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmM+CitEYXRlOiAgIFRodSBTZXAg
MTUgMTk6NTY6MjEgMjAxMSArMDAwMAorCitWYWx1ZSBwcm9maWxlcyBjb2xsZWN0IG5vIGluZm9y
bWF0aW9uIGZvciBnbG9iYWwgdmFyaWFibGVzCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjgxNDMKIAotUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uIiIiCitSZXZp
ZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworZ2l0LXN2bi1pZDogaHR0cDovL3N2bi53ZWJraXQu
b3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rQDk1MjE5IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNj
LWQ1MjY5MWI0ZGJmYworIiIiCisKKyAgICBkZWYgX21ha2Vfb3B0aW9ucyhzZWxmLCAqKmt3YXJn
cyk6CisgICAgICAgIGRlZmF1bHRzID0geworICAgICAgICAgICAgJ2NvbW1pdHRlcl9taW5pbXVt
JzogMTAsCisgICAgICAgICAgICAnbWF4X2NvbW1pdF9hZ2UnOiA5LAorICAgICAgICAgICAgJ3Jl
Y29yZF9nYXJkZW5pbmdfdW5yZXZpZXdlZF9jb21taXRzJzogRmFsc2UsCisgICAgICAgICAgICAn
cmVjb3JkX21hcmtlZF91bnJldmlld2VkX2NvbW1pdHMnOiBGYWxzZSwKKyAgICAgICAgICAgICdy
ZXZpZXdlcl9taW5pbXVtJzogODAsCisgICAgICAgICAgICAnc2hvd19jb21taXRzJzogRmFsc2Us
CisgICAgICAgICAgICAnc2hvd19wYXRjaF9jb3VudHMnOiBGYWxzZSwKKyAgICAgICAgICAgICdz
aG93X3NraXBwZWRfY29tbWl0cyc6IEZhbHNlLAorICAgICAgICAgICAgJ3Nob3dfc2tpcHBlZF91
bnJldmlld2VkX2NvbW1pdHMnOiBGYWxzZSwKKyAgICAgICAgICAgICdzaG93X3VucmV2aWV3ZWRf
Y29tbWl0cyc6IEZhbHNlLAorICAgICAgICAgICAgJ3Nob3dfdW5yZXZpZXdlZF9jb21taXRzX2Zv
cic6IEZhbHNlLAorICAgICAgICAgICAgJ3Nob3dfdW5yZXZpZXdlZF9jb21taXRzX3JldmlzaW9u
cyc6IEZhbHNlLAorICAgICAgICB9CisgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucygqKmRl
ZmF1bHRzKQorICAgICAgICBvcHRpb25zLnVwZGF0ZSgqKmt3YXJncykKKyAgICAgICAgcmV0dXJu
IG9wdGlvbnMKIAogICAgIGRlZiB0ZXN0X3JlY2VudF9jb21taXRfbWVzc2FnZXMoc2VsZik6Cisg
ICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKICAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKICAg
ICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucyA9IFN1Z2dlc3ROb21pbmF0aW9ucygpCi0gICAgICAg
IHN1Z2dlc3Rfbm9taW5hdGlvbnMuX2luaXRfb3B0aW9ucyhvcHRpb25zPU1vY2tPcHRpb25zKHJl
dmlld2VyX21pbmltdW09ODAsIGNvbW1pdHRlcl9taW5pbXVtPTEwLCBtYXhfY29tbWl0X2FnZT05
LCBzaG93X2NvbW1pdHM9RmFsc2UsIHZlcmJvc2U9RmFsc2UpKQorICAgICAgICBzdWdnZXN0X25v
bWluYXRpb25zLl9pbml0X29wdGlvbnMob3B0aW9ucz1zZWxmLl9tYWtlX29wdGlvbnMoKSkKICAg
ICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5iaW5kX3RvX3Rvb2wodG9vbCkKIAogICAgICAgICB0
b29sLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZCA9IGxhbWJkYSBjb21tYW5kOiBzZWxmLm1vY2tfZ2l0
X291dHB1dAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3VnZ2VzdF9ub21pbmF0aW9u
cy5fcmVjZW50X2NvbW1pdF9tZXNzYWdlcygpKSwgW3NlbGYubW9ja19zYW1lX2F1dGhvcl9jb21t
aXRfbWVzc2FnZV0pCiAKLSAgICBtb2NrX25vbl9jb21taXR0ZXJfY29tbWl0X21lc3NhZ2UgPSAi
IiJMZXQgVGVzdFdlYktpdEFQSSB3b3JrIGZvciBjaHJvbWl1bQorICAgIG1vY2tfbm9uX2NvbW1p
dHRlcl9jb21taXRfbWVzc2FnZSA9ICIiIgorQXV0aG9yOiBjb21taXQtcXVldWVAd2Via2l0Lm9y
ZyA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmdAMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkx
YjRkYmZjPgorRGF0ZTogICBUaHUgU2VwIDE1IDE0OjA4OjQyIDIwMTEgKzAwMDAKKworTGV0IFRl
c3RXZWJLaXRBUEkgd29yayBmb3IgY2hyb21pdW0KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02Nzc1NgogCiBQYXRjaCBieSBYaWFuemh1IFdhbmcgPHdhbmd4aWFuemh1
QGNocm9taXVtLm9yZz4gb24gMjAxMS0wOS0xNQpAQCAtNjcsMTEgKzk3LDE1IEBAIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcuCiAKIFNvdXJjZS9XZWJLaXQvY2hyb21pdW06CiAKLSogV2ViS2l0Lmd5
cDoiIiIKKyogV2ViS2l0Lmd5cDoKKworZ2l0LXN2bi1pZDogaHR0cDovL3N2bi53ZWJraXQub3Jn
L3JlcG9zaXRvcnkvd2Via2l0L3RydW5rQDk1MTg4IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1
MjY5MWI0ZGJmYworIiIiCiAKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKICAgICAgICAgZXhw
ZWN0ZWRfc3Rkb3V0ID0gIlJFVklFV0VSOiBYaWFuemh1IFdhbmcgKHdhbmd4aWFuemh1QGNocm9t
aXVtLm9yZykgaGFzIDg4IHJldmlld2VkIHBhdGNoZXNcbiIKKyAgICAgICAgb3B0aW9ucyA9IHNl
bGYuX21ha2Vfb3B0aW9ucygpCiAgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMgPSBTdWdnZXN0
Tm9taW5hdGlvbnMoKQotICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zLl9pbml0X29wdGlvbnMo
b3B0aW9ucz1Nb2NrT3B0aW9ucyhyZXZpZXdlcl9taW5pbXVtPTgwLCBjb21taXR0ZXJfbWluaW11
bT0xMCwgbWF4X2NvbW1pdF9hZ2U9OSwgc2hvd19jb21taXRzPUZhbHNlLCB2ZXJib3NlPUZhbHNl
KSkKKyAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5faW5pdF9vcHRpb25zKG9wdGlvbnM9b3B0
aW9ucykKICAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5fcmVjZW50X2NvbW1pdF9tZXNzYWdl
cyA9IGxhbWJkYTogW3NlbGYubW9ja19ub25fY29tbWl0dGVyX2NvbW1pdF9tZXNzYWdlIGZvciBf
IGluIHJhbmdlKDg4KV0KLSAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKHN1Z2dl
c3Rfbm9taW5hdGlvbnMsIFtdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBvcHRp
b25zPU1vY2tPcHRpb25zKHJldmlld2VyX21pbmltdW09ODAsIGNvbW1pdHRlcl9taW5pbXVtPTEw
LCBtYXhfY29tbWl0X2FnZT05LCBzaG93X2NvbW1pdHM9RmFsc2UsIHZlcmJvc2U9RmFsc2UpKQor
ICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoc3VnZ2VzdF9ub21pbmF0aW9ucywg
W10sIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQsIG9wdGlvbnM9b3B0aW9ucykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199918</attachid>
            <date>2013-04-27 15:34:51 -0700</date>
            <delta_ts>2013-04-27 23:29:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115285-20130427153409.patch</filename>
            <type>text/plain</type>
            <size>39565</size>
            <attacher name="Glenn Adams">glenn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MjM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2UxZTU5N2IyZGZlOGM3ZmY4MjMyODBhMmQ2ODY5ODcz
MTFhN2JlOC4uOTVlYzBhNWI2YzNmMjZhNWIzODY2YWE2YzkyMTgyYTlhMjQ0YzhiNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5
IEBACisyMDEzLTA0LTI3ICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CisKKyAgICAg
ICAgW3dlYmtpdHB5XSBzdWdnZXN0LW5vbWluYXRpb25zIGRvZXNuJ3QgY291bnQgYWxsIHF1YWxp
ZmllZCBwYXRjaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTUyODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXggY29tbWl0IGFuYWx5c2lzIHNvIHRoYXQgcGF0Y2hlcyBtYWRlIGJ5IGFuIGV4aXN0
aW5nIGNvbW1pdHRlciBhcmUgY291bnRlZCB0b3dhcmRzIHJldmlld2VyCisgICAgICAgIG5vbWlu
YXRpb24uIEltcHJvdmUgY29tbWl0IGxvZyBwYXJzaW5nIHRvIGFsbG93IHJlY29yZGluZyBvZiBz
a2lwcGVkIGNvbW1pdHMgYW5kIHVucmV2aWV3ZWQKKyAgICAgICAgY29tbWl0cyAob2YgdmFyaW91
cyB0eXBlcykuCisKKyAgICAgICAgQnJlYWsgb3V0IGNvbW1vbiBjb21taXQgbG9nIGFuYWx5c2lz
IGludG8gbmV3IEFic3RyYWN0Q29tbWl0TG9nQ29tbWFuZCBiYXNlIGNsYXNzLCB0byBiZSB1c2Vk
CisgICAgICAgIGJ5IG11bHRpcGxlIHVwY29taW5nIGNvbW1hbmQgYWRkaXRpb25zIChhbmFseXpl
LWNvbW1pdHMsIHN1Z2dlc3QtZW1lcml0aSkuCisKKyAgICAgICAgQWRkIG1pc3NpbmcgZW1haWwg
YWRkcmVzc2VzIGluIGNvbnRyaWJ1dG9ycyBsaXN0IHRvIGFjY291bnQgZm9yIGV4aXN0aW5nIGxv
ZyBlbnRyaWVzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2Nv
bnRyaWJ1dG9ycy5qc29uOiBBZGQgbWlzc2luZyBlbWFpbCBhZGRyZXNzZXMgdGhhdCBhcHBlYXIg
aW4gbG9nIGVudHJpZXMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L2Fic3RyYWN0Y29tbWl0bG9nY29tbWFuZC5weTogQWRkZWQuCisgICAgICAgIChBYnN0cmFjdENv
bW1pdExvZ0NvbW1hbmQpOiBNb3ZlIGdlbmVyaWMgY29tbWl0IGxvZyBhbmFseXNpcyBpbnRvIGJh
c2UgY2xhc3MgZm9yIHVzZSBieSBtdWx0aXBsZSBjb21tYW5kcy4KKyAgICAgICAgKEFic3RyYWN0
Q29tbWl0TG9nQ29tbWFuZC5fX2luaXRfXyk6CisgICAgICAgIChBYnN0cmFjdENvbW1pdExvZ0Nv
bW1hbmQuX2NvbW1pdF9vcHRpb25zKToKKyAgICAgICAgKEFic3RyYWN0Q29tbWl0TG9nQ29tbWFu
ZC5faW5pdF9vcHRpb25zKToKKyAgICAgICAgKEFic3RyYWN0Q29tbWl0TG9nQ29tbWFuZC5fcmVj
ZW50X2NvbW1pdF9tZXNzYWdlcyk6CisgICAgICAgIChBYnN0cmFjdENvbW1pdExvZ0NvbW1hbmQu
X2F1dGhvcl9uYW1lX2Zyb21fZW1haWwpOgorICAgICAgICAoQWJzdHJhY3RDb21taXRMb2dDb21t
YW5kLl9jb21taXRfZGF0ZV9mcm9tX21hdGNoKToKKyAgICAgICAgKEFic3RyYWN0Q29tbWl0TG9n
Q29tbWFuZC5fY29udHJpYnV0b3JfZnJvbV9lbWFpbCk6CisgICAgICAgIChBYnN0cmFjdENvbW1p
dExvZ0NvbW1hbmQuX3JlY2VudF9jb21taXRzKTogUmVpbXBsZW1lbnQgYXMgYSBnZW5lcmF0b3Ig
d2l0aCBpbXByb3ZlZCByZXBvcnRpbmcgYW5kIGNvbW1pdCBsb2cgcGFyc2luZy4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5Ogor
ICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zKTogTW92ZSBjb21tb24gZnVuY3Rpb25zIGludG8g
QWJzdHJhY3RDb21taXRMb2dDb21tYW5kIGJhc2UgY2xhc3MuCisgICAgICAgIChTdWdnZXN0Tm9t
aW5hdGlvbnMuX19pbml0X18pOgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9ub21pbmF0
aW9uX29wdGlvbnMpOgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9vdXRwdXRfb3B0aW9u
cyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMuX2luaXRfb3B0aW9ucyk6CisgICAgICAg
IChTdWdnZXN0Tm9taW5hdGlvbnMuX2NvdW50X3JlY2VudF9wYXRjaGVzKToKKyAgICAgICAgKFN1
Z2dlc3ROb21pbmF0aW9ucy5fY29sbGVjdF9ub21pbmF0aW9ucyk6CisgICAgICAgIChTdWdnZXN0
Tm9taW5hdGlvbnMuX3ByaW50X25vbWluYXRpb25zKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0
aW9ucy5leGVjdXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
c3VnZ2VzdG5vbWluYXRpb25zX3VuaXR0ZXN0LnB5OiBFbnN1cmUgbm8gdGVzdCByZWdyZXNzaW9u
cy4KKyAgICAgICAgKF9tYWtlX29wdGlvbnMpOgorICAgICAgICAodGVzdF9yZWNlbnRfY29tbWl0
X21lc3NhZ2VzKToKKyAgICAgICAgKHRlc3RfYmFzaWMpOgorCisyMDEzLTA0LTI3ICBHbGVubiBB
ZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CisKKyAgICAgICAgW3dlYmtpdHB5XSBzdWdnZXN0LW5v
bWluYXRpb25zIGRvZXNuJ3QgY291bnQgYWxsIHF1YWxpZmllZCBwYXRjaGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUyODUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbjogQWRkIG1pc3NpbmcgZW1haWwgYWRkcmVz
c2VzIHRoYXQgYXBwZWFyIGluIGxvZyBlbnRyaWVzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnMucHk6CisgICAgICAgIChBYnN0cmFj
dFN1Z2dlc3RDb21tYW5kKTogQ3JlYXRlIGJhc2UgY2xhc3MgdGhhdCBwZXJmb3JtcyBjb21tb24g
ZnVuY3Rpb25zLCB1c2VkIGluaXRpYWxseSBieSBTdWdnZXN0Tm9taW5hdGlvbnMsCisgICAgICAg
IGFuZCBhbnRpY2lwYXRlZCBmb3IgdXNlIGluIGEgbmV3IFN1Z2dlc3RFbWVyaXRpIGNsYXNzIHRo
YXQgd2lsbCBhbHNvIHVzZSB0aGVzZSBmdW5jdGlvbnMuCisgICAgICAgIChBYnN0cmFjdFN1Z2dl
c3RDb21tYW5kLl9faW5pdF9fKToKKyAgICAgICAgKEFic3RyYWN0U3VnZ2VzdENvbW1hbmQuX2Nv
bW1pdF9vcHRpb25zKToKKyAgICAgICAgKEFic3RyYWN0U3VnZ2VzdENvbW1hbmQuX2luaXRfb3B0
aW9ucyk6CisgICAgICAgIChBYnN0cmFjdFN1Z2dlc3RDb21tYW5kLl9zdWJzdGl0dXRlX291dHB1
dCk6CisgICAgICAgIChBYnN0cmFjdFN1Z2dlc3RDb21tYW5kLl9wcmludF9zdWJzdGl0dXRlX291
dHB1dCk6CisgICAgICAgIChBYnN0cmFjdFN1Z2dlc3RDb21tYW5kLl9yZWNlbnRfY29tbWl0X21l
c3NhZ2VzKToKKyAgICAgICAgKEFic3RyYWN0U3VnZ2VzdENvbW1hbmQuX21heWJlX3Nob3dfc2tp
cHBlZF9jb21taXQpOgorICAgICAgICAoQWJzdHJhY3RTdWdnZXN0Q29tbWFuZC5fYXV0aG9yX25h
bWVfZnJvbV9lbWFpbCk6CisgICAgICAgIChBYnN0cmFjdFN1Z2dlc3RDb21tYW5kLl9jb21taXRf
ZGF0ZV9mcm9tX21hdGNoKToKKyAgICAgICAgKEFic3RyYWN0U3VnZ2VzdENvbW1hbmQuX2NvbnRy
aWJ1dG9yX2Zyb21fZW1haWwpOgorICAgICAgICAoQWJzdHJhY3RTdWdnZXN0Q29tbWFuZC5fcmVj
b3JkX3VucmV2aWV3ZWRfY29tbWl0KToKKyAgICAgICAgKEFic3RyYWN0U3VnZ2VzdENvbW1hbmQu
X3VucmV2aWV3ZWRfY29tbWl0c19jb3VudCk6CisgICAgICAgIChBYnN0cmFjdFN1Z2dlc3RDb21t
YW5kLl9zaG93X3VucmV2aWV3ZWRfY29tbWl0c19yZXZpc2lvbnMpOgorICAgICAgICAoQWJzdHJh
Y3RTdWdnZXN0Q29tbWFuZC5fY29udHJpYnV0b3JfbmFtZXNfZnJvbV9uYW1lX29yX2VtYWlsX2xp
c3QpOgorICAgICAgICAoQWJzdHJhY3RTdWdnZXN0Q29tbWFuZC5fc2hvd191bnJldmlld2VkX2Nv
bW1pdHMpOgorICAgICAgICAoQWJzdHJhY3RTdWdnZXN0Q29tbWFuZC5fcmV2aWV3ZXJzX2Zyb21f
bmFtZV9vcl9lbWFpbF9saXN0KToKKyAgICAgICAgKEFic3RyYWN0U3VnZ2VzdENvbW1hbmQuX3Jl
Y29yZF9yZXZpZXdlZF9jb21taXQpOgorICAgICAgICAoQWJzdHJhY3RTdWdnZXN0Q29tbWFuZC5f
cmVjZW50X2NvbW1pdHMpOiBSZWltcGxlbWVudCBhcyBhIGdlbmVyYXRvciB3aXRoIGltcHJvdmVk
IHJlcG9ydGluZyBhbmQgY29tbWl0IGxvZyBwYXJzaW5nLgorICAgICAgICAoU3VnZ2VzdE5vbWlu
YXRpb25zKTogTW92ZSBjb21tb24gZnVuY3Rpb25zIGludG8gQWJzdHJhY3RTdWdnZXN0Q29tbWFu
ZCBiYXNlIGNsYXNzLgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9faW5pdF9fKToKKyAg
ICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5fbm9taW5hdGlvbl9vcHRpb25zKToKKyAgICAgICAg
KFN1Z2dlc3ROb21pbmF0aW9ucy5fb3V0cHV0X29wdGlvbnMpOgorICAgICAgICAoU3VnZ2VzdE5v
bWluYXRpb25zLl9pbml0X29wdGlvbnMpOgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9j
b3VudF9yZWNlbnRfcGF0Y2hlcyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMuX2NvbGxl
Y3Rfbm9taW5hdGlvbnMpOgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9wcmludF9ub21p
bmF0aW9ucyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMuX3ByaW50X2NvdW50cyk6Cisg
ICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMuZXhlY3V0ZSk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9uc191bml0dGVzdC5weTogRW5z
dXJlIG5vIHRlc3QgcmVncmVzc2lvbnMuCisgICAgICAgIChfbWFrZV9vcHRpb25zKToKKyAgICAg
ICAgKHRlc3RfcmVjZW50X2NvbW1pdF9tZXNzYWdlcyk6CisgICAgICAgICh0ZXN0X2Jhc2ljKToK
KwogMjAxMy0wNC0yNiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgW0VGTF0gQnVpbGQgYnJlYWsgdXNpbmcgamhidWlsZCBvbiB1YnVudHUgMTMuMDQKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRv
cnMuanNvbiBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRv
cnMuanNvbgppbmRleCAyODhjYmZkNzgwMmI2NTkxNWRmMDUwNWIyZTZiZjcwNDJjMDM5NThjLi4w
MDM0YzZjY2M5MzZkZWQ2MTMwYzEzMGNhOTk4OGQ2YWExOGM2ZmQzIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29udHJpYnV0b3JzLmpzb24KKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1dG9ycy5qc29uCkBA
IC00NCw2ICs0NCw3IEBACiAgICAgICAgICJLdWxhbnRoYWl2ZWwgUGFsYW5pY2hhbXkiOiB7ImVt
YWlscyI6IFsia3VsYW50aGFpdmVsQGNvZGVhdXJvcmEub3JnIl0sICJuaWNrcyI6IFsia3ZlbCJd
fSwKICAgICAgICAgIktvamkgSGFyYSI6IHsiZW1haWxzIjogWyJrb2ppaEBjaHJvbWl1bS5vcmci
XSwgIm5pY2tzIjogWyJrb2ppaCJdfSwKICAgICAgICAgIktvamkgSXNoaWkiOiB7ImVtYWlscyI6
IFsia29qaWlzaGlAZ21haWwuY29tIl19LAorICAgICAgICAiTGlhIENoZW4iOiB7ImVtYWlscyI6
IFsibGlhY2hlbkByaW0uY29tIl19LAogICAgICAgICAiTWljaGFlbCBQcnVldHQiOiB7ImVtYWls
cyI6IFsibWljaGFlbEA2OGsub3JnIl0sICJuaWNrcyI6IFsibXBydWV0dCJdfSwKICAgICAgICAg
Ik1paGFpIEJhbGFuIjogeyJlbWFpbHMiOiBbIm1pYmFsYW5AYWRvYmUuY29tIl0sICJuaWNrcyI6
IFsibWlDaG91Il19LAogICAgICAgICAiTWloYWkgTWFlcmVhbiI6IHsiZW1haWxzIjogWyJtbWFl
cmVhbkBhZG9iZS5jb20iXSwgIm5pY2tzIjogWyJtbWFlcmVhbiJdfSwKQEAgLTEyMSw3ICsxMjIs
NyBAQAogICAgICAgICAiQ2hyaXMgR3VpbGxvcnkiOiB7ImVtYWlscyI6IFsiY3RndWlsQGNocm9t
aXVtLm9yZyIsICJjaHJpcy5ndWlsbG9yeUBnb29nbGUuY29tIl0sICJuaWNrcyI6IFsiY3RndWls
Il19LAogICAgICAgICAiQ2hyaXMgUGV0ZXJzZW4iOiB7ImVtYWlscyI6IFsiY3BldGVyc2VuQGFw
cGxlLmNvbSJdLCAibmlja3MiOiBbImNwZXRlcnNlbiJdfSwKICAgICAgICAgIkNocmlzdGlhbiBE
eXdhbiI6IHsiZW1haWxzIjogWyJjaHJpc3RpYW5AdHdvdG9hc3RzLmRlIiwgImNocmlzdGlhbkB3
ZWJraXQub3JnIiwgImNocmlzdGlhbkBsYW5lZG8uY29tIl19LAotICAgICAgICAiQ2hyaXN0b3Bo
ZSBEdW1leiI6IHsiZW1haWxzIjogWyJkY2hyaXNAZ21haWwuY29tIiwgImNoLmR1bWV6QHNpc2Eu
c2Ftc3VuZy5jb20iXSwgIm5pY2tzIjogWyJjZHVtZXoiXX0sCisgICAgICAgICJDaHJpc3RvcGhl
IER1bWV6IjogeyJlbWFpbHMiOiBbImRjaHJpc0BnbWFpbC5jb20iLCAiY2guZHVtZXpAc2lzYS5z
YW1zdW5nLmNvbSIsICJjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbSJdLCAibmlja3MiOiBbImNk
dW1leiJdfSwKICAgICAgICAgIkNsYXVkaW8gU2FhdmVkcmEiOiB7ImVtYWlscyI6IFsiY3NhYXZl
ZHJhQGlnYWxpYS5jb20iXSwgIm5pY2tzIjogWyJjbGF1ZGlvX19fIl19LAogICAgICAgICAiQ29s
bGluIEphY2tzb24iOiB7ImVtYWlscyI6IFsiY29sbGluakB3ZWJraXQub3JnIl0sICJuaWNrcyI6
IFsiY29sbGluamFja3NvbiJdfSwKICAgICAgICAgIkNyaXMgTmVja2FyIjogeyJlbWFpbHMiOiBb
ImNkbkBjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJjbmVja2FyIl19LApAQCAtMTYzLDcgKzE2
NCw3IEBACiAgICAgICAgICJHcmVnIEJvbHNpbmdhIjogeyJlbWFpbHMiOiBbImJvbHNpbmdhQGFw
cGxlLmNvbSJdfSwKICAgICAgICAgIkdyZWdnIFRhdmFyZXMiOiB7ImVtYWlscyI6IFsiZ21hbkBj
aHJvbWl1bS5vcmciLCAiZ21hbkBnb29nbGUuY29tIl0sICJuaWNrcyI6IFsiZ21hbiJdfSwKICAg
ICAgICAgIkdyemVnb3J6IEN6YWprb3dza2kiOiB7ImVtYWlscyI6IFsiZy5jemFqa293c2tpQHNh
bXN1bmcuY29tIl0sICJuaWNrcyI6IFsiZ3J6ZWdvcnoiXX0sCi0gICAgICAgICJIYW5zIE11bGxl
ciI6IHsiZW1haWxzIjogWyJnaWxlc19qb3BsaW5AeWFob28uY29tIl0sICJuaWNrcyI6IFsiaGFu
c211bGxlciJdfSwKKyAgICAgICAgIkhhbnMgTXVsbGVyIjogeyJlbWFpbHMiOiBbImdpbGVzX2pv
cGxpbkB5YWhvby5jb20iLCAiaG11bGxlckBhZG9iZS5jb20iXSwgIm5pY2tzIjogWyJoYW5zbXVs
bGVyIl19LAogICAgICAgICAiSGFucyBXZW5uYm9yZyI6IHsiZW1haWxzIjogWyJoYW5zQGNocm9t
aXVtLm9yZyJdLCAibmlja3MiOiBbImh3ZW5uYm9yZyJdfSwKICAgICAgICAgIkhheWF0byBJdG8i
OiB7ImVtYWlscyI6IFsiaGF5YXRvQGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBbImhheWF0byJd
fSwKICAgICAgICAgIkhpcm9ub3JpIEJvbm8iOiB7ImVtYWlscyI6IFsiaGJvbm9AY2hyb21pdW0u
b3JnIl0sICJuaWNrcyI6IFsiaGJvbm8iXX0sCkBAIC0xOTksNyArMjAwLDcgQEAKICAgICAgICAg
IkpvaG4gS25vdHRlbmJlbHQiOiB7ImVtYWlscyI6IFsiamtub3R0ZW5AY2hyb21pdW0ub3JnIl0s
ICJuaWNrcyI6IFsiamtub3R0ZW4iXX0sCiAgICAgICAgICJKb2hubnkgRGluZyI6IHsiZW1haWxz
IjogWyJqbmRAY2hyb21pdW0ub3JnIiwgImpvaG5ueWRpbmcud2Via2l0QGdtYWlsLmNvbSJdLCAi
bmlja3MiOiBbImpvaG5ueWRpbmciXX0sCiAgICAgICAgICJKb24gTGVlIjogeyJlbWFpbHMiOiBb
ImpvbmxlZUBhcHBsZS5jb20iXSwgIm5pY2tzIjogWyJqb25sZWUiXX0sCi0gICAgICAgICJKb25h
dGhhbiBEb25nIjogeyJlbWFpbHMiOiBbImpvbmF0aGFuLmRvbmcud2Via2l0QGdtYWlsLmNvbSJd
LCAibmlja3MiOiBbImpvbmRvbmciXX0sCisgICAgICAgICJKb25hdGhhbiBEb25nIjogeyJlbWFp
bHMiOiBbImpvbmF0aGFuLmRvbmcud2Via2l0QGdtYWlsLmNvbSIsICJqb25hdGhhbi5kb25nQHRv
cmNobW9iaWxlLmNvbS5jbiJdLCAibmlja3MiOiBbImpvbmRvbmciXX0sCiAgICAgICAgICJKb29u
ZSBIdXIiOiB7ImVtYWlscyI6IFsiam9vbmVAd2Via2l0Lm9yZyIsICJqb29uZS5odXJAaW50ZWwu
Y29tIl0sICJuaWNrcyI6IFsiam9vbmUiXX0sCiAgICAgICAgICJKb29zdCBkZSBWYWxrIjogeyJl
bWFpbHMiOiBbImpvb3N0QHdlYmtpdC5vcmciLCAid2Via2l0LWRldkBqb29zdGRldmFsay5ubCJd
LCAibmlja3MiOiBbIkFsdGhhIl19LAogICAgICAgICAiSm9zaHVhIEJlbGwiOiB7ImVtYWlscyI6
IFsianNiZWxsQGNocm9taXVtLm9yZyIsICJqc2JlbGxAZ29vZ2xlLmNvbSJdLCAibmlja3MiOiBb
ImpzYmVsbCJdfSwKQEAgLTMxNSw3ICszMTYsNyBAQAogICAgICAgICAiVHJleSBNYXR0ZXNvbiI6
IHsiZW1haWxzIjogWyJ0cmV5QHVzYS5uZXQiXSwgIm5pY2tzIjogWyJ0cmV5Il19LAogICAgICAg
ICAiVHJpc3RhbiBPJ1RpZXJuZXkiOiB7ImVtYWlscyI6IFsidHJpc3RhbkBvdGllcm5leS5uZXQi
LCAidHJpc3RhbkBhcHBsZS5jb20iXX0sCiAgICAgICAgICJWYW5nZWxpcyBLb2trZXZpcyI6IHsi
ZW1haWxzIjogWyJ2YW5nZWxpc0BjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJ2YW5nZWxpcyJd
fSwKLSAgICAgICAgIlZpYXRjaGVzbGF2IE9zdGFwZW5rbyI6IHsiZW1haWxzIjogWyJvc3RhcDcz
QGdtYWlsLmNvbSIsICJ2Lm9zdGFwZW5rb0BzYW1zdW5nLmNvbSIsICJ2Lm9zdGFwZW5rb0BzaXNh
LnNhbXN1bmcuY29tIl0sICJuaWNrcyI6IFsib3N0YXAiXX0sCisgICAgICAgICJWaWF0Y2hlc2xh
diBPc3RhcGVua28iOiB7ImVtYWlscyI6IFsib3N0YXA3M0BnbWFpbC5jb20iLCAib3N0YXBlbmtv
LnZpYXRjaGVzbGF2QG5va2lhLmNvbSIsICJ2Lm9zdGFwZW5rb0BzYW1zdW5nLmNvbSIsICJ2Lm9z
dGFwZW5rb0BzaXNhLnNhbXN1bmcuY29tIl0sICJuaWNrcyI6IFsib3N0YXAiXX0sCiAgICAgICAg
ICJWaWN0b3IgQ2FyYnVuZSI6IHsiZW1haWxzIjogWyJ2Y2FyYnVuZUBjaHJvbWl1bS5vcmciLCAi
dmljdG9yQHJvc2VkdS5vcmciXSwgIm5pY2tzIjogWyJ2Y2FyYnVuZSJdfSwKICAgICAgICAgIlZp
Y3RvciBXYW5nIjogeyJlbWFpbHMiOiBbInZpY3RvcndAY2hyb21pdW0ub3JnIl0sICJuaWNrcyI6
IFsidmljdG9ydyJdfSwKICAgICAgICAgIlZpY3RvcmlhIEtpcnN0IjogeyJlbWFpbHMiOiBbInZy
a0BjaHJvbWl1bS5vcmciLCAidnJrQGdvb2dsZS5jb20iXSwgIm5pY2tzIjogWyJ2cmsiXX0sCkBA
IC0zMzcsMTEgKzMzOCwxMSBAQAogICAgICAgICAiWXVxaWFuZyBYaWFuIjogeyJlbWFpbHMiOiBb
Inl1cWlhbmcueGlhbkBpbnRlbC5jb20iXX0sCiAgICAgICAgICJZdXpvIEZ1amlzaGltYSI6IHsi
ZW1haWxzIjogWyJ5dXpvQGdvb2dsZS5jb20iXSwgIm5pY2tzIjogWyJ5dXpvIl19LAogICAgICAg
ICAiWmFsYW4gQnVqdGFzIjogeyJlbWFpbHMiOiBbInphbGFuQGFwcGxlLmNvbSIsICJ6YnVqdGFz
QGdtYWlsLmNvbSIsICJ6YWxhbi5idWp0YXNAbm9raWEuY29tIl0sICJuaWNrcyI6IFsiemFsYW4i
XX0sCi0gICAgICAgICJaZW5vIEFsYmlzc2VyIjogeyJlbWFpbHMiOiBbInplbm9Ad2Via2l0Lm9y
ZyIsICJ6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbSJdLCAibmlja3MiOiBbInphbGJpc3NlciJdfSwK
KyAgICAgICAgIlplbm8gQWxiaXNzZXIiOiB7ImVtYWlscyI6IFsiemVub0B3ZWJraXQub3JnIiwg
Inplbm8uYWxiaXNzZXJAbm9raWEuY29tIiwgInplbm8uYWxiaXNzZXJAZGlnaWEuY29tIl0sICJu
aWNrcyI6IFsiemFsYmlzc2VyIl19LAogICAgICAgICAiWmhlbnlhbyBNbyI6IHsiZW1haWxzIjog
WyJ6bW9AZ29vZ2xlLmNvbSJdLCAibmlja3MiOiBbInpoZW55YW8iXX0sCiAgICAgICAgICJab2x0
YW4gQXJ2YWkiOiB7ImVtYWlscyI6IFsiemFydmFpQGluZi51LXN6ZWdlZC5odSJdLCAibmlja3Mi
OiBbImF6YmVzdF9odSJdfSwKICAgICAgICAgIlpvbHRhbiBIb3J2YXRoIjogeyJlbWFpbHMiOiBb
InpvbHRhbkB3ZWJraXQub3JnIiwgImh6b2x0YW5AaW5mLnUtc3plZ2VkLmh1IiwgImhvcnZhdGgu
em9sdGFuLjZAc3R1ZC51LXN6ZWdlZC5odSJdLCAibmlja3MiOiBbInpvbHRhbiJdfSwKLSAgICAg
ICAgIlx1MDE3ZGFuIERvYmVyXHUwMTYxZWsiOiB7ImVtYWlscyI6IFsiemFuZG9iZXJzZWtAZ21h
aWwuY29tIl0sICJuaWNrcyI6IFsiemRvYmVyc2VrIl19CisgICAgICAgICJcdTAxN2RhbiBEb2Jl
clx1MDE2MWVrIjogeyJlbWFpbHMiOiBbInphbmRvYmVyc2VrQGdtYWlsLmNvbSIsICJ6YW5kb2Jl
cnNla0BpZ2FsaWEuY29tIl0sICJuaWNrcyI6IFsiemRvYmVyc2VrIl19CiAgICAgfSwKICAgICAi
UmV2aWV3ZXJzIjogewogICAgICAgICAiQWJoaXNoZWsgQXJ5YSI6IHsiZW1haWxzIjogWyJpbmZl
cm5vQGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBbImluZmVybm8tc2VjIl19LApAQCAtMzU1LDcg
KzM1Niw3IEBACiAgICAgICAgICJBbGV4YW5kZXIgUGF2bG92IjogeyJlbWFpbHMiOiBbImFwYXZs
b3ZAY2hyb21pdW0ub3JnIiwgInBhdmxvdjgxQGdtYWlsLmNvbSJdLCAibmlja3MiOiBbImFwYXZs
b3YiXX0sCiAgICAgICAgICJBbGV4YW5kcnUgQ2hpY3VsaXRhIjogeyJlbWFpbHMiOiBbImFjaGlj
dUBhZG9iZS5jb20iXSwgIm5pY2tzIjogWyJhY2hpY3UiXX0sCiAgICAgICAgICJBbGV4ZXkgUHJv
c2t1cnlha292IjogeyJlbWFpbHMiOiBbImFwQHdlYmtpdC5vcmciLCAiYXBAYXBwbGUuY29tIl0s
ICJuaWNrcyI6IFsiYXAiXX0sCi0gICAgICAgICJBbGV4aXMgTWVuYXJkIjogeyJlbWFpbHMiOiBb
ImFsZXhpc0B3ZWJraXQub3JnIiwgIm1lbmFyZEBrZGUub3JnIl0sICJuaWNrcyI6IFsiZGFya3Rl
YXJzIl19LAorICAgICAgICAiQWxleGlzIE1lbmFyZCI6IHsiZW1haWxzIjogWyJhbGV4aXNAd2Vi
a2l0Lm9yZyIsICJtZW5hcmRAa2RlLm9yZyIsICJhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmci
XSwgIm5pY2tzIjogWyJkYXJrdGVhcnMiXX0sCiAgICAgICAgICJBbGljZSBMaXUiOiB7ImVtYWls
cyI6IFsiYWxpY2UubGl1QGFwcGxlLmNvbSJdLCAibmlja3MiOiBbImFsaXUiXX0sCiAgICAgICAg
ICJBbGxhbiBTYW5kZmVsZCBKZW5zZW4iOiB7ImVtYWlscyI6IFsiYWxsYW4uamVuc2VuQGRpZ2lh
LmNvbSIsICJrZGVAY2FyZXdvbGYuY29tIiwgInNhbmRmZWxkQGtkZS5vcmciLCAiYWxsYW4uamVu
c2VuQG5va2lhLmNvbSJdLCAibmlja3MiOiBbImNhcmV3b2xmIl19LAogICAgICAgICAiQWxwIFRv
a2VyIjogeyJlbWFpbHMiOiBbImFscEBudWFudGkuY29tIiwgImFscEBhdG9rZXIuY29tIiwgImFs
cEB3ZWJraXQub3JnIl0sICJuaWNrcyI6IFsiYWxwIl19LApAQCAtNDE1LDcgKzQxNiw3IEBACiAg
ICAgICAgICJKZXNzaWUgQmVybGluIjogeyJlbWFpbHMiOiBbImpiZXJsaW5Ad2Via2l0Lm9yZyIs
ICJqYmVybGluQGFwcGxlLmNvbSJdLCAibmlja3MiOiBbImplc3NpZWJlcmxpbiJdfSwKICAgICAg
ICAgIkppYW4gTGkiOiB7ImVtYWlscyI6IFsiamlhbmxpQGNocm9taXVtLm9yZyJdLCAibmlja3Mi
OiBbImppYW5saSJdfSwKICAgICAgICAgIkpvY2VseW4gVHVyY290dGUiOiB7ImVtYWlscyI6IFsi
am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20iLCAiam9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20i
XSwgIm5pY2tzIjogWyJqdHVyY290dGUiXX0sCi0gICAgICAgICJKb2NoZW4gRWlzaW5nZXIiOiB7
ImVtYWlscyI6IFsiam9jaGVuQGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBbImpvY2hlbl9fIl19
LAorICAgICAgICAiSm9jaGVuIEVpc2luZ2VyIjogeyJlbWFpbHMiOiBbImpvY2hlbkBjaHJvbWl1
bS5vcmciLCAiam9jaGVuQGNocm9taXVtLm9yIl0sICJuaWNrcyI6IFsiam9jaGVuX18iXX0sCiAg
ICAgICAgICJKb2huIFN1bGxpdmFuIjogeyJlbWFpbHMiOiBbInN1bGxpdmFuQGFwcGxlLmNvbSJd
LCAibmlja3MiOiBbInN1bGxpdmFuIl19LAogICAgICAgICAiSm9uIEhvbmV5Y3V0dCI6IHsiZW1h
aWxzIjogWyJqaG9uZXljdXR0QGFwcGxlLmNvbSJdLCAibmlja3MiOiBbImpob25leWN1dHQiXX0s
CiAgICAgICAgICJKb3NlcGggUGVjb3Jhcm8iOiB7ImVtYWlscyI6IFsiam9lcGVja0B3ZWJraXQu
b3JnIiwgInBlY29yYXJvQGFwcGxlLmNvbSJdLCAibmlja3MiOiBbIkpvZVBlY2siXX0sCkBAIC00
NjksNyArNDcwLDcgQEAKICAgICAgICAgIlZpY2tpIE11cmxleSI6IHsiZW1haWxzIjogWyJ2aWNr
aUBhcHBsZS5jb20iXX0sCiAgICAgICAgICJWc2V2b2xvZCBWbGFzb3YiOiB7ImVtYWlscyI6IFsi
dnNldmlrQGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBbInZzZXZpayJdfSwKICAgICAgICAgIlhh
biBMb3BleiI6IHsiZW1haWxzIjogWyJ4YW4ubG9wZXpAZ21haWwuY29tIiwgInhhbkBnbm9tZS5v
cmciLCAieGFuQHdlYmtpdC5vcmciLCAieGxvcGV6QGlnYWxpYS5jb20iXSwgIm5pY2tzIjogWyJ4
YW4iXX0sCi0gICAgICAgICJZb25nIExpIjogeyJlbWFpbHMiOiBbInlvbmcubGkud2Via2l0QG91
dGxvb2suY29tIl0sICJuaWNrcyI6IFsieW9saSJdfSwKKyAgICAgICAgIllvbmcgTGkiOiB7ImVt
YWlscyI6IFsieW9uZy5saS53ZWJraXRAb3V0bG9vay5jb20iLCAieW9saUByaW0uY29tIl0sICJu
aWNrcyI6IFsieW9saSJdfSwKICAgICAgICAgIll1cnkgU2VtaWtoYXRza3kiOiB7ImVtYWlscyI6
IFsieXVyeXNAY2hyb21pdW0ub3JnIl0sICJuaWNrcyI6IFsieXVyeXMiXX0sCiAgICAgICAgICJZ
dXRhIEtpdGFtdXJhIjogeyJlbWFpbHMiOiBbInl1dGFrQGNocm9taXVtLm9yZyJdLCAibmlja3Mi
OiBbInl1dGFrIl19LAogICAgICAgICAiWmFjayBSdXNpbiI6IHsiZW1haWxzIjogWyJ6YWNrQGtk
ZS5vcmciXSwgIm5pY2tzIjogWyJ6YWNrciJdfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9hYnN0cmFjdGNvbW1pdGxvZ2NvbW1hbmQucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvYWJzdHJhY3Rjb21taXRsb2djb21tYW5k
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRhOTUxNDg0MzUzZjdmOTQ0NWQxZTg4ZmE5ZTMyMzU4MTkxZDBkMmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
YWJzdHJhY3Rjb21taXRsb2djb21tYW5kLnB5CkBAIC0wLDAgKzEsMjE0IEBACisjIENvcHlyaWdo
dCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQg
KGMpIDIwMTEgQ29kZSBBdXJvcmEgRm9ydW0uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitpbXBvcnQgY2FsZW5kYXIKK2ltcG9ydCBvcHRwYXJzZQoraW1wb3J0IHJl
CisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0
ZXJMaXN0Citmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQ29tbWFu
ZAorCisKK2NsYXNzIEFic3RyYWN0Q29tbWl0TG9nQ29tbWFuZChDb21tYW5kKToKKworICAgIENB
TlRfREVURVJNSU5FX0NPTU1JVFRFUiA9ICJjYW4ndCBkZXRlcm1pbmUgY29tbWl0dGVyIgorICAg
IENBTlRfREVURVJNSU5FX0NPTU1JVFRFUl9FTUFJTCA9ICJjYW4ndCBkZXRlcm1pbmUgY29tbWl0
dGVyJ3MgZW1haWwiCisgICAgQ0FOVF9GSU5EX0NPTU1JVFRFUiA9ICJjYW4ndCBmaW5kIGNvbW1p
dHRlciBpbiBjb250cmlidXRvcnMgbGlzdCIKKyAgICBDQU5UX0RFVEVSTUlORV9DT01NSVRfREFU
RSA9ICJjYW4ndCBkZXRlcm1pbmUgY29tbWl0IGRhdGUiCisgICAgQ0FOVF9ERVRFUk1JTkVfU1ZO
X0lEID0gImNhbid0IGRldGVybWluZSBzdm4gaWQiCisgICAgQ0FOVF9ERVRFUk1JTkVfQVVUSE9S
ID0gImNhbid0IGRldGVybWluZSBwYXRjaCdzIGF1dGhvciIKKyAgICBDQU5UX0RFVEVSTUlORV9B
VVRIT1JfRU1BSUwgPSAiY2FuJ3QgZGV0ZXJtaW5lIHBhdGNoIGF1dGhvcidzIGVtYWlsIgorICAg
IENBTlRfREVURVJNSU5FX0FVVEhPUl9OQU1FID0gImNhbid0IGRldGVybWluZSBwYXRjaCBhdXRo
b3IncyBuYW1lIgorICAgIFVOUkVWSUVXRURfTUFSS0VEID0gInVucmV2aWV3ZWQsIGFuZCBtYXJr
ZWQgYXMgc3VjaCIKKyAgICBVTlJFVklFV0VEX05PVF9NQVJLRURfUkVWSUVXRVIgPSAidW5yZXZp
ZXdlZCwgYnV0IG5vdCBtYXJrZWQ7IGF1dGhvciBpcyByZXZpZXdlciIKKyAgICBVTlJFVklFV0VE
X05PVF9NQVJLRURfQ09NTUlUVEVSID0gInVucmV2aWV3ZWQsIGJ1dCBub3QgbWFya2VkOyBhdXRo
b3IgaXMgY29tbWl0dGVyIgorICAgIFVOUkVWSUVXRURfTk9UX01BUktFRF9DT01NSVRfUVVFVUUg
PSAidW5yZXZpZXdlZCwgYnV0IG5vdCBtYXJrZWQ7IGF1dGhvciBpcyBjb21taXQgcXVldWUiCisg
ICAgVU5SRVZJRVdFRF9OT1RfTUFSS0VEX05PVF9DT01NSVRURVJfT1JfUkVWSUVXRVIgPSAidW5y
ZXZpZXdlZCwgYnV0IG5vdCBtYXJrZWQ7IGF1dGhvciBpcyBub3QgY29tbWl0dGVyIG9yIHJldmll
d2VyIgorICAgIFVOUkVWSUVXRURfTk9UX01BUktFRF9OT1RfQ09OVFJJQlVUT1IgPSAidW5yZXZp
ZXdlZCwgYnV0IG5vdCBtYXJrZWQ7IGF1dGhvciBpcyBub3QgYSBjb250cmlidXRvciIKKworICAg
IF9jb21taXRfY291bnQgPSAwCisKKyAgICBfbWF0Y2hfbGVhZGluZ19pbmRlbnQgPSByZS5jb21w
aWxlKHIiXlsgXXs0fSIsIHJlLk1VTFRJTElORSkKKyAgICBfbWF0Y2hfcmV2aWV3ZWRfYnkgPSBy
ZS5jb21waWxlKHInXlxzKigoXHcrXHMrKSthbmRccyspPyhSZXZpZXd8UnViYmVyKFxzKnwtKXN0
YW1wKShzfGVkKT9ccysoW2Etel0rXHMrKSo/YnlccysoP1A8cmV2aWV3ZXJzPi4qPylbXC4sXT9c
cyokJywgcmUuTVVMVElMSU5FKQorICAgIF9tYXRjaF91bnJldmlld2VkID0gcmUuY29tcGlsZShy
J15ccyooKFxTK1xzKykrKT9VbnJldmlld2VkLiokJywgcmUuTVVMVElMSU5FKQorICAgIF9tYXRj
aF9nYXJkZW5pbmcgPSByZS5jb21waWxlKHInW0dnXWFyZGVuaW5nJykKKyAgICBfbWF0Y2hfcGF0
Y2hfYnkgPSByZS5jb21waWxlKHInXlBhdGNoIGJ5ICg/UDxuYW1lPi4rPylccys8KD9QPGVtYWls
PltePD5dKyk+IG9uICg/UDxkYXRlPlxkezR9LVxkezJ9LVxkezJ9KSQnLCByZS5NVUxUSUxJTkUp
CisgICAgX21hdGNoX2NvbW1pdHRlciA9IHJlLmNvbXBpbGUocideQXV0aG9yOiAoP1A8ZW1haWw+
XFMrKVxzKzxbXj5dKz4kJywgcmUuTVVMVElMSU5FKQorICAgIF9tYXRjaF9kYXRlID0gcmUuY29t
cGlsZShyJ15EYXRlOiAgIFxTezN9ICg/UDxtb250aD5cU3szfSkgKD9QPGRheT5cZHsxLDJ9KSAo
P1A8dGltZT5cZHsyfTpcZHsyfTpcZHsyfSkgKD9QPHllYXI+XGR7NH0pIFtcK1wtXVxkezR9JCcs
IHJlLk1VTFRJTElORSkKKyAgICBfbWF0Y2hfcmV2aXNpb24gPSByZS5jb21waWxlKHInXmdpdC1z
dm4taWQ6IGh0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVua0AoP1A8
c3ZuaWQ+XGQrKSAoP1A8Z2l0aWQ+WzAtOWEtZlwtXXszNn0pJCcsIHJlLk1VTFRJTElORSkKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zPU5vbmUpOgorICAgICAgICBvcHRpb25zID0g
b3B0aW9ucyBvciBbXQorICAgICAgICBvcHRpb25zICs9IHNlbGYuX2NvbW1pdF9vcHRpb25zKCkK
KyAgICAgICAgb3B0aW9ucyA9IHNvcnRlZChvcHRpb25zLCBsYW1iZGEgYSwgYjogY21wKGEuX2xv
bmdfb3B0cywgYi5fbG9uZ19vcHRzKSkKKyAgICAgICAgc3VwZXIoQWJzdHJhY3RDb21taXRMb2dD
b21tYW5kLCBzZWxmKS5fX2luaXRfXyhvcHRpb25zPW9wdGlvbnMpCisgICAgICAgICMgRklYTUU6
IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIG9uIHRoZSB0b29sIHNvbWV3aGVyZS4KKyAgICAgICAg
c2VsZi5fY29tbWl0dGVyX2xpc3QgPSBDb21taXR0ZXJMaXN0KCkKKworICAgIGRlZiBfY29tbWl0
X29wdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiBbCisgICAgICAgICAgICBvcHRwYXJzZS5t
YWtlX29wdGlvbigiLS1tYXgtY29tbWl0LWFnZSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJtYXhf
Y29tbWl0X2FnZSIsIHR5cGU9ImludCIsIGRlZmF1bHQ9OSwgaGVscD0iU3BlY2lmeSBtYXhpbXVt
IGNvbW1pdCBhZ2UgdG8gY29uc2lkZXIgKGluIG1vbnRocykuIiksCisgICAgICAgIF0KKworICAg
IGRlZiBfaW5pdF9vcHRpb25zKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICBzZWxmLnZlcmJvc2Ug
PSBvcHRpb25zLnZlcmJvc2UKKyAgICAgICAgc2VsZi5tYXhfY29tbWl0X2FnZSA9IG9wdGlvbnMu
bWF4X2NvbW1pdF9hZ2UKKworICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIG1vdmUgdG8gc2NtLnB5
CisgICAgZGVmIF9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKHNlbGYpOgorICAgICAgICBnaXRfbG9n
ID0gc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2NvbW1hbmQoWydnaXQnLCAnbG9nJywgJy0tc2lu
Y2U9IiVzIG1vbnRocyBhZ28iJyAlIHNlbGYubWF4X2NvbW1pdF9hZ2VdKQorICAgICAgICBtZXNz
YWdlcyA9IHJlLnNwbGl0KHIiXmNvbW1pdCBcd3s0MH0kIiwgZ2l0X2xvZywgZmxhZ3M9cmUuTVVM
VElMSU5FKVsxOl0gICMgSWdub3JlIHRoZSBmaXJzdCBtZXNzYWdlIHdoaWNoIHdpbGwgYmUgZW1w
dHkuCisgICAgICAgIGZvciBtZXNzYWdlIGluIG1lc3NhZ2VzOgorICAgICAgICAgICAgIyBVbmlu
ZGVudCBhbGwgdGhlIGxpbmVzCisgICAgICAgICAgICAobWVzc2FnZSwgXykgPSBzZWxmLl9tYXRj
aF9sZWFkaW5nX2luZGVudC5zdWJuKCIiLCBtZXNzYWdlKQorICAgICAgICAgICAgeWllbGQgbWVz
c2FnZS5sc3RyaXAoKSAgIyBSZW1vdmUgYW55IGxlYWRpbmcgbmV3bGluZXMgZnJvbSB0aGUgbG9n
IG1lc3NhZ2UuCisKKyAgICBkZWYgX2F1dGhvcl9uYW1lX2Zyb21fZW1haWwoc2VsZiwgZW1haWwp
OgorICAgICAgICBjb250cmlidXRvciA9IHNlbGYuX2NvbW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9y
X2J5X2VtYWlsKGVtYWlsKQorICAgICAgICByZXR1cm4gY29udHJpYnV0b3IuZnVsbF9uYW1lIGlm
IGNvbnRyaWJ1dG9yIGVsc2UgTm9uZQorCisgICAgZGVmIF9jb21taXRfZGF0ZV9mcm9tX21hdGNo
KHNlbGYsIG1hdGNoKToKKyAgICAgICAgeWVhciA9IG1hdGNoLmdyb3VwKCd5ZWFyJykKKyAgICAg
ICAgbW9udGhfYWJiciA9IG1hdGNoLmdyb3VwKCdtb250aCcpCisgICAgICAgIG1vbnRoID0gMAor
ICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY2FsZW5kYXIubW9udGhfYWJicikpOgorICAgICAg
ICAgICAgaWYgY2FsZW5kYXIubW9udGhfYWJicltpXSA9PSBtb250aF9hYmJyOgorICAgICAgICAg
ICAgICAgIG1vbnRoID0gaSArIDEKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBkYXkg
PSBtYXRjaC5ncm91cCgnZGF5JykKKyAgICAgICAgcmV0dXJuICclMDRkLSUwMmQtJTAyZCcgJSAo
aW50KHllYXIpLCBtb250aCwgaW50KGRheSkpCisKKyAgICBkZWYgX2NvbnRyaWJ1dG9yX2Zyb21f
ZW1haWwoc2VsZiwgZW1haWwpOgorICAgICAgICBjb250cmlidXRvciA9IHNlbGYuX2NvbW1pdHRl
cl9saXN0LmNvbnRyaWJ1dG9yX2J5X2VtYWlsKGVtYWlsKQorICAgICAgICByZXR1cm4gY29udHJp
YnV0b3IgaWYgY29udHJpYnV0b3IgZWxzZSBOb25lCisKKyAgICBkZWYgX3JlY2VudF9jb21taXRz
KHNlbGYsIHNraXA9Tm9uZSwgdW5yZXZpZXdlZD1Ob25lKToKKworICAgICAgICBpZiBub3Qgc2tp
cDoKKyAgICAgICAgICAgIHNraXAgPSBsYW1iZGEgbSwgcjogTm9uZQorCisgICAgICAgIGZvciBt
ZXNzYWdlIGluIHNlbGYuX3JlY2VudF9jb21taXRfbWVzc2FnZXMoKToKKworICAgICAgICAgICAg
c2VsZi5fY29tbWl0X2NvdW50ID0gc2VsZi5fY29tbWl0X2NvdW50ICsgMQorCisgICAgICAgICAg
ICAjIERldGVybWluZSBjb21taXR0ZXIgaWYgcG9zc2libGUsIG90aGVyd2lzZSBza2lwIGNvbW1p
dC4KKyAgICAgICAgICAgIGNvbW1pdHRlcl9tYXRjaCA9IHNlbGYuX21hdGNoX2NvbW1pdHRlci5z
ZWFyY2gobWVzc2FnZSkKKyAgICAgICAgICAgIGlmIG5vdCBjb21taXR0ZXJfbWF0Y2g6CisgICAg
ICAgICAgICAgICAgc2tpcChtZXNzYWdlLCBzZWxmLkNBTlRfREVURVJNSU5FX0NPTU1JVFRFUikK
KyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIERldGVybWluZSBjb21t
aXR0ZXIgZW1haWwgaWYgcG9zc2libGUsIG90aGVyd2lzZSBza2lwIGNvbW1pdC4KKyAgICAgICAg
ICAgIGNvbW1pdHRlcl9lbWFpbCA9IGNvbW1pdHRlcl9tYXRjaC5ncm91cCgnZW1haWwnKQorICAg
ICAgICAgICAgaWYgbm90IGNvbW1pdHRlcl9lbWFpbDoKKyAgICAgICAgICAgICAgICBza2lwKG1l
c3NhZ2UsIHNlbGYuQ0FOVF9ERVRFUk1JTkVfQ09NTUlUVEVSX0VNQUlMKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgRGV0ZXJtaW5lIGlmIGNvbW1pdHRlciBpcyBh
IGtub3duIGNvbnRyaWJ1dG9yLCBpLmUuLCByZWdpc3RlcmVkIGluIGNvbW1pdHRlcnMucHksIG90
aGVyd2lzZSBza2lwIGNvbW1pdC4KKyAgICAgICAgICAgIGNvbW1pdHRlciA9IHNlbGYuX2NvbnRy
aWJ1dG9yX2Zyb21fZW1haWwoY29tbWl0dGVyX2VtYWlsKQorICAgICAgICAgICAgaWYgbm90IGNv
bW1pdHRlcjoKKyAgICAgICAgICAgICAgICBza2lwKG1lc3NhZ2UsIHNlbGYuQ0FOVF9GSU5EX0NP
TU1JVFRFUikKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIERldGVy
bWluZSBjb21taXQgZGF0ZSBpZiBwb3NzaWJsZSwgb3RoZXJ3aXNlIHNraXAgY29tbWl0LgorICAg
ICAgICAgICAgY29tbWl0X2RhdGVfbWF0Y2ggPSBzZWxmLl9tYXRjaF9kYXRlLnNlYXJjaChtZXNz
YWdlKQorICAgICAgICAgICAgaWYgbm90IGNvbW1pdF9kYXRlX21hdGNoOgorICAgICAgICAgICAg
ICAgIHNraXAobWVzc2FnZSwgc2VsZi5DQU5UX0RFVEVSTUlORV9DT01NSVRfREFURSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgY29tbWl0X2RhdGUgPSBzZWxmLl9jb21t
aXRfZGF0ZV9mcm9tX21hdGNoKGNvbW1pdF9kYXRlX21hdGNoKQorCisgICAgICAgICAgICAjIERl
dGVybWluZSByZXZpc2lvbiBpZiBwb3NzaWJsZSwgb3RoZXJ3aXNlIHNraXAgY29tbWl0LgorICAg
ICAgICAgICAgcmV2aXNpb25fbWF0Y2ggPSBzZWxmLl9tYXRjaF9yZXZpc2lvbi5zZWFyY2gobWVz
c2FnZSkKKyAgICAgICAgICAgIGlmIG5vdCByZXZpc2lvbl9tYXRjaDoKKyAgICAgICAgICAgICAg
ICBza2lwKG1lc3NhZ2UsIHNlbGYuQ0FOVF9ERVRFUk1JTkVfU1ZOX0lEKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZXZpc2lvbiA9IHJldmlzaW9uX21hdGNoLmdyb3Vw
KCdzdm5pZCcpCisKKyAgICAgICAgICAgICMgRGV0ZXJtaW5lIGF1dGhvciBpZiBwb3NzaWJsZSwg
b3RoZXJ3aXNlIHNraXAgY29tbWl0LiBMb29rIGZvciAiUGF0Y2ggYnkiIGxpbmUgZmlyc3QsIHdo
aWNoCisgICAgICAgICAgICAjIGlzIHVzZWQgZm9yIG5vbi1jb21taXR0ZXIgY29udHJpYnV0b3Jz
OyBvdGhlcndpc2UsIHVzZSBjb21taXR0ZXIgaW5mbyBkZXRlcm1pbmVkIGFib3ZlLgorICAgICAg
ICAgICAgYXV0aG9yX21hdGNoID0gc2VsZi5fbWF0Y2hfcGF0Y2hfYnkuc2VhcmNoKG1lc3NhZ2Up
CisgICAgICAgICAgICBpZiBub3QgYXV0aG9yX21hdGNoOgorICAgICAgICAgICAgICAgIGF1dGhv
cl9tYXRjaCA9IGNvbW1pdHRlcl9tYXRjaAorICAgICAgICAgICAgaWYgbm90IGF1dGhvcl9tYXRj
aDoKKyAgICAgICAgICAgICAgICBza2lwKG1lc3NhZ2UsIHNlbGYuQ0FOVF9ERVRFUk1JTkVfQVVU
SE9SKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgRGV0ZXJtaW5l
IGF1dGhvciBlbWFpbCBpZiBwb3NzaWJsZSwgb3RoZXJ3aXNlIHNraXAgY29tbWl0LgorICAgICAg
ICAgICAgYXV0aG9yX2VtYWlsID0gYXV0aG9yX21hdGNoLmdyb3VwKCdlbWFpbCcpCisgICAgICAg
ICAgICBpZiBub3QgYXV0aG9yX2VtYWlsOgorICAgICAgICAgICAgICAgIGF1dGhvcl9lbWFpbCA9
IGNvbW1pdHRlcl9lbWFpbAorICAgICAgICAgICAgICAgIHNraXAobWVzc2FnZSwgc2VsZi5DQU5U
X0RFVEVSTUlORV9BVVRIT1JfRU1BSUwpCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAg
ICAgICAgICAgIyBEZXRlcm1pbmUgaWYgYXV0aG9yIGlzIGEga25vd24gY29udHJpYnV0b3IsIGku
ZS4sIHJlZ2lzdGVyZWQgaW4gY29tbWl0dGVycy5weS4KKyAgICAgICAgICAgIGNvbnRyaWJ1dG9y
ID0gc2VsZi5fY29udHJpYnV0b3JfZnJvbV9lbWFpbChhdXRob3JfZW1haWwpCisKKyAgICAgICAg
ICAgICMgRGV0ZXJtaW5lIGF1dGhvciBuYW1lIGlmIHBvc3NpYmxlLCBvdGhlcndpc2Ugc2tpcCBj
b21taXQuCisgICAgICAgICAgICBhdXRob3JfbmFtZSA9IGF1dGhvcl9tYXRjaC5ncm91cCgnbmFt
ZScpIGlmICduYW1lJyBpbiBhdXRob3JfbWF0Y2guZ3JvdXBkaWN0KCkgZWxzZSBOb25lCisgICAg
ICAgICAgICBpZiBub3QgYXV0aG9yX25hbWU6CisgICAgICAgICAgICAgICAgYXV0aG9yX25hbWUg
PSBzZWxmLl9hdXRob3JfbmFtZV9mcm9tX2VtYWlsKGF1dGhvcl9lbWFpbCkKKyAgICAgICAgICAg
IGlmIG5vdCBhdXRob3JfbmFtZToKKyAgICAgICAgICAgICAgICBza2lwKG1lc3NhZ2UsIHNlbGYu
Q0FOVF9ERVRFUk1JTkVfQVVUSE9SX05BTUUpCisgICAgICAgICAgICAgICAgY29udGludWUKKwor
ICAgICAgICAgICAgIyBVc2UgY2Fub25pY2FsIG5hbWUgaWYga25vd24gY29udHJpYnV0b3IuCisg
ICAgICAgICAgICBpZiBjb250cmlidXRvciBhbmQgYXV0aG9yX25hbWUgIT0gY29udHJpYnV0b3Iu
ZnVsbF9uYW1lOgorICAgICAgICAgICAgICAgIGF1dGhvcl9uYW1lID0gY29udHJpYnV0b3IuZnVs
bF9uYW1lCisKKyAgICAgICAgICAgICMgRGV0ZXJtaW5lIHJldmlld2VycyBpZiBwb3NzaWJsZSwg
b3RoZXJ3aXNlIG9wdGlvbmFsbHkgc2tpcCBjb21taXQuCisgICAgICAgICAgICByZXZpZXdlcl9t
YXRjaCA9IHNlbGYuX21hdGNoX3Jldmlld2VkX2J5LnNlYXJjaChtZXNzYWdlKQorICAgICAgICAg
ICAgaWYgbm90IHJldmlld2VyX21hdGNoOgorICAgICAgICAgICAgICAgIHVucmV2aWV3ZWRfbWF0
Y2ggPSBzZWxmLl9tYXRjaF91bnJldmlld2VkLnNlYXJjaChtZXNzYWdlKQorICAgICAgICAgICAg
ICAgIGlmIHVucmV2aWV3ZWRfbWF0Y2g6CisgICAgICAgICAgICAgICAgICAgIHJlYXNvbiA9IHNl
bGYuVU5SRVZJRVdFRF9NQVJLRUQKKyAgICAgICAgICAgICAgICBlbGlmIGNvbnRyaWJ1dG9yOgor
ICAgICAgICAgICAgICAgICAgICBpZiBjb250cmlidXRvci5jYW5fcmV2aWV3OgorICAgICAgICAg
ICAgICAgICAgICAgICAgcmVhc29uID0gc2VsZi5VTlJFVklFV0VEX05PVF9NQVJLRURfUkVWSUVX
RVIKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBjb250cmlidXRvci5jYW5fY29tbWl0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgcmVhc29uID0gc2VsZi5VTlJFVklFV0VEX05PVF9NQVJLRURf
Q09NTUlUVEVSCisgICAgICAgICAgICAgICAgICAgIGVsaWYgY29udHJpYnV0b3IuZnVsbF9uYW1l
ID09ICdDb21taXQgUXVldWUnOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uID0gc2Vs
Zi5VTlJFVklFV0VEX05PVF9NQVJLRURfQ09NTUlUX1FVRVVFCisgICAgICAgICAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24gPSBzZWxmLlVOUkVWSUVXRURf
Tk9UX01BUktFRF9OT1RfQ09NTUlUVEVSX09SX1JFVklFV0VSCisgICAgICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uID0gc2VsZi5VTlJFVklFV0VEX05PVF9NQVJL
RURfTk9UX0NPTlRSSUJVVE9SCisgICAgICAgICAgICAgICAgaWYgdW5yZXZpZXdlZDoKKyAgICAg
ICAgICAgICAgICAgICAgdW5yZXZpZXdlZChtZXNzYWdlLCByZWFzb24sIGNvbW1pdHRlciwgcmV2
aXNpb24pCisgICAgICAgICAgICAgICAgc2tpcChtZXNzYWdlLCByZWFzb24pCisgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgICAgIHJldmlld2VycyA9IHJldmlld2VyX21hdGNoLmdy
b3VwKCdyZXZpZXdlcnMnKQorCisgICAgICAgICAgICB5aWVsZCB7CisgICAgICAgICAgICAgICAg
J2NvbW1pdHRlcic6IGNvbW1pdHRlciwKKyAgICAgICAgICAgICAgICAnY29tbWl0X2RhdGUnOiBj
b21taXRfZGF0ZSwKKyAgICAgICAgICAgICAgICAncmV2aXNpb24nOiByZXZpc2lvbiwKKyAgICAg
ICAgICAgICAgICAnYXV0aG9yX2VtYWlsJzogYXV0aG9yX2VtYWlsLAorICAgICAgICAgICAgICAg
ICdhdXRob3JfbmFtZSc6IGF1dGhvcl9uYW1lLAorICAgICAgICAgICAgICAgICdjb250cmlidXRv
cic6IGNvbnRyaWJ1dG9yLAorICAgICAgICAgICAgICAgICdyZXZpZXdlcnMnOiByZXZpZXdlcnMs
CisgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weQppbmRleCA4NDViNzgyNzA5NjUyMmQ1
ZTEyZjUwYzlmNjI3YjFlZTM1Y2U5ZDcwLi40NjZjOTEzYWFiMWE2YmZkNWI1OTc4OTExMjNlYjY3
OTQ4YTBhNDFlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnMucHkKQEAgLTI3LDEwMSArMjcsNTMgQEAKICMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWZyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vf
b3B0aW9uCi1pbXBvcnQgcmUKK2ltcG9ydCBvcHRwYXJzZQogCi1mcm9tIHdlYmtpdHB5LmNvbW1v
bi5jaGVja291dC5jaGFuZ2Vsb2cgaW1wb3J0IENoYW5nZUxvZ0VudHJ5Ci1mcm9tIHdlYmtpdHB5
LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdAotZnJvbSB3ZWJr
aXRweS50b29sIGltcG9ydCBzdGVwcwogZnJvbSB3ZWJraXRweS50b29sLmdyYW1tYXIgaW1wb3J0
IGpvaW5fd2l0aF9zZXBhcmF0b3JzCi1mcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9v
bCBpbXBvcnQgQ29tbWFuZAorZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmFic3RyYWN0Y29t
bWl0bG9nY29tbWFuZCBpbXBvcnQgQWJzdHJhY3RDb21taXRMb2dDb21tYW5kCiAKIAotY2xhc3Mg
U3VnZ2VzdE5vbWluYXRpb25zKENvbW1hbmQpOgorY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKEFi
c3RyYWN0Q29tbWl0TG9nQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJzdWdnZXN0LW5vbWluYXRpb25z
IgotICAgIGhlbHBfdGV4dCA9ICJTdWdnZXN0IGNvbnRyaWJ1dG9ycyBmb3IgY29tbWl0dGVyL3Jl
dmlld2VyIG5vbWluYXRpb25zIgorICAgIGhlbHBfdGV4dCA9ICJTdWdnZXN0IG5vbWluYXRpb25z
IGZvciBjb21taXR0ZXIvcmV2aWV3ZXIgcm9sZSIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
LSAgICAgICAgb3B0aW9ucyA9IFsKLSAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLWNvbW1pdHRl
ci1taW5pbXVtIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImNvbW1pdHRlcl9taW5pbXVtIiwgdHlw
ZT0iaW50IiwgZGVmYXVsdD0xMCwgaGVscD0iU3BlY2lmeSBtaW5pbXVtIHBhdGNoIGNvdW50IGZv
ciBDb21taXR0ZXIgbm9taW5hdGlvbnMuIiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1y
ZXZpZXdlci1taW5pbXVtIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InJldmlld2VyX21pbmltdW0i
LCB0eXBlPSJpbnQiLCBkZWZhdWx0PTgwLCBoZWxwPSJTcGVjaWZ5IG1pbmltdW0gcGF0Y2ggY291
bnQgZm9yIFJldmlld2VyIG5vbWluYXRpb25zLiIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24o
Ii0tbWF4LWNvbW1pdC1hZ2UiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0ibWF4X2NvbW1pdF9hZ2Ui
LCB0eXBlPSJpbnQiLCBkZWZhdWx0PTksIGhlbHA9IlNwZWNpZnkgbWF4IGNvbW1pdCBhZ2UgdG8g
Y29uc2lkZXIgZm9yIG5vbWluYXRpb25zIChpbiBtb250aHMpLiIpLAotICAgICAgICAgICAgbWFr
ZV9vcHRpb24oIi0tc2hvdy1jb21taXRzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ic2hv
d19jb21taXRzIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iU2hvdyBjb21taXQgaGlzdG9yeSB3aXRo
IG5vbWluYXRpb24gc3VnZ2VzdGlvbnMuIiksCisgICAgICAgIG9wdGlvbnMgPSBbXQorICAgICAg
ICBvcHRpb25zICs9IHNlbGYuX25vbWluYXRpb25fb3B0aW9ucygpCisgICAgICAgIG9wdGlvbnMg
Kz0gc2VsZi5fb3V0cHV0X29wdGlvbnMoKQorICAgICAgICBzdXBlcihTdWdnZXN0Tm9taW5hdGlv
bnMsIHNlbGYpLl9faW5pdF9fKG9wdGlvbnM9b3B0aW9ucykKKworICAgIGRlZiBfbm9taW5hdGlv
bl9vcHRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgb3B0cGFyc2Uu
bWFrZV9vcHRpb24oIi0tY29tbWl0dGVyLW1pbmltdW0iLCBhY3Rpb249InN0b3JlIiwgZGVzdD0i
Y29tbWl0dGVyX21pbmltdW0iLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTEwLCBoZWxwPSJTcGVjaWZ5
IG1pbmltdW0gcGF0Y2ggY291bnQgZm9yIENvbW1pdHRlciBub21pbmF0aW9ucy4iKSwKKyAgICAg
ICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXJldmlld2VyLW1pbmltdW0iLCBhY3Rpb249
InN0b3JlIiwgZGVzdD0icmV2aWV3ZXJfbWluaW11bSIsIHR5cGU9ImludCIsIGRlZmF1bHQ9ODAs
IGhlbHA9IlNwZWNpZnkgbWluaW11bSBwYXRjaCBjb3VudCBmb3IgUmV2aWV3ZXIgbm9taW5hdGlv
bnMuIiksCiAgICAgICAgIF0KIAotICAgICAgICBDb21tYW5kLl9faW5pdF9fKHNlbGYsIG9wdGlv
bnM9b3B0aW9ucykKLSAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgb24g
dGhlIHRvb2wgc29tZXdoZXJlLgotICAgICAgICBzZWxmLl9jb21taXR0ZXJfbGlzdCA9IENvbW1p
dHRlckxpc3QoKQotCi0gICAgX2NvdW50ZXJzX2J5X25hbWUgPSB7fQotICAgIF9jb3VudGVyc19i
eV9lbWFpbCA9IHt9CisgICAgZGVmIF9vdXRwdXRfb3B0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0
dXJuIFsKKyAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXNob3ctY29tbWl0cyIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InNob3dfY29tbWl0cyIsIGRlZmF1bHQ9RmFsc2Us
IGhlbHA9IlNob3cgY29tbWl0IGhpc3Rvcnkgd2l0aCBub21pbmF0aW9ucy4iKSwKKyAgICAgICAg
XQogCiAgICAgZGVmIF9pbml0X29wdGlvbnMoc2VsZiwgb3B0aW9ucyk6CisgICAgICAgIHN1cGVy
KFN1Z2dlc3ROb21pbmF0aW9ucywgc2VsZikuX2luaXRfb3B0aW9ucyhvcHRpb25zKQogICAgICAg
ICBzZWxmLmNvbW1pdHRlcl9taW5pbXVtID0gb3B0aW9ucy5jb21taXR0ZXJfbWluaW11bQogICAg
ICAgICBzZWxmLnJldmlld2VyX21pbmltdW0gPSBvcHRpb25zLnJldmlld2VyX21pbmltdW0KLSAg
ICAgICAgc2VsZi5tYXhfY29tbWl0X2FnZSA9IG9wdGlvbnMubWF4X2NvbW1pdF9hZ2UKICAgICAg
ICAgc2VsZi5zaG93X2NvbW1pdHMgPSBvcHRpb25zLnNob3dfY29tbWl0cwotICAgICAgICBzZWxm
LnZlcmJvc2UgPSBvcHRpb25zLnZlcmJvc2UKLQotICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIG1v
dmUgdG8gc2NtLnB5Ci0gICAgZGVmIF9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKHNlbGYpOgotICAg
ICAgICBnaXRfbG9nID0gc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2NvbW1hbmQoWydnaXQnLCAn
bG9nJywgJy0tc2luY2U9IiVzIG1vbnRocyBhZ28iJyAlIHNlbGYubWF4X2NvbW1pdF9hZ2VdKQot
ICAgICAgICBtYXRjaF9naXRfc3ZuX2lkID0gcmUuY29tcGlsZShyIlxuXG4gICAgZ2l0LXN2bi1p
ZDouKlxuIiwgcmUuTVVMVElMSU5FKQotICAgICAgICBtYXRjaF9nZXRfbG9nX2xpbmVzID0gcmUu
Y29tcGlsZShyIl5cUy4qXG4iLCByZS5NVUxUSUxJTkUpCi0gICAgICAgIG1hdGNoX2xlYWRpbmdf
aW5kZW50ID0gcmUuY29tcGlsZShyIl5bIF17NH0iLCByZS5NVUxUSUxJTkUpCi0KLSAgICAgICAg
bWVzc2FnZXMgPSByZS5zcGxpdChyImNvbW1pdCBcd3s0MH0iLCBnaXRfbG9nKVsxOl0gICMgSWdu
b3JlIHRoZSBmaXJzdCBtZXNzYWdlIHdoaWNoIHdpbGwgYmUgZW1wdHkuCi0gICAgICAgIGZvciBt
ZXNzYWdlIGluIG1lc3NhZ2VzOgotICAgICAgICAgICAgIyBSZW1vdmUgYW55IGxpbmVzIGZyb20g
Z2l0IGFuZCB1bmluZGVudCBhbGwgdGhlIGxpbmVzCi0gICAgICAgICAgICAobWVzc2FnZSwgXykg
PSBtYXRjaF9naXRfc3ZuX2lkLnN1Ym4oIiIsIG1lc3NhZ2UpCi0gICAgICAgICAgICAobWVzc2Fn
ZSwgXykgPSBtYXRjaF9nZXRfbG9nX2xpbmVzLnN1Ym4oIiIsIG1lc3NhZ2UpCi0gICAgICAgICAg
ICAobWVzc2FnZSwgXykgPSBtYXRjaF9sZWFkaW5nX2luZGVudC5zdWJuKCIiLCBtZXNzYWdlKQot
ICAgICAgICAgICAgeWllbGQgbWVzc2FnZS5sc3RyaXAoKSAgIyBSZW1vdmUgYW55IGxlYWRpbmcg
bmV3bGluZXMgZnJvbSB0aGUgbG9nIG1lc3NhZ2UuCi0KLSAgICAjIGUuZy4gUGF0Y2ggYnkgRXJp
YyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4gb24gMjAxMS0wOS0xNQotICAgIHBhdGNoX2J5X3Jl
Z2V4cCA9IHInXlBhdGNoIGJ5ICg/UDxuYW1lPi4rPylccys8KD9QPGVtYWlsPltePD5dKyk+IG9u
ICg/UDxkYXRlPlxkezR9LVxkezJ9LVxkezJ9KSQnCiAKICAgICBkZWYgX2NvdW50X3JlY2VudF9w
YXRjaGVzKHNlbGYpOgotICAgICAgICAjIFRoaXMgZW50aXJlIGJsb2NrIGNvdWxkIGJlIHdyaXR0
ZW4gYXMgYSBtYXAvcmVkdWNlIG92ZXIgdGhlIG1lc3NhZ2VzLgotICAgICAgICBmb3IgbWVzc2Fn
ZSBpbiBzZWxmLl9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKCk6Ci0gICAgICAgICAgICAjIEZJWE1F
OiBUaGlzIHNob3VsZCB1c2UgQ2hhbmdlTG9nRW50cnkgdG8gZG8gdGhlIGVudGlyZSBwYXJzZSBp
bnN0ZWFkCi0gICAgICAgICAgICAjIG9mIGdyYWJiaW5nIGF0IGl0cyByZWdleHBzLgotICAgICAg
ICAgICAgZGF0ZWxpbmVfbWF0Y2ggPSByZS5tYXRjaChDaGFuZ2VMb2dFbnRyeS5kYXRlX2xpbmVf
cmVnZXhwLCBtZXNzYWdlLCByZS5NVUxUSUxJTkUpCi0gICAgICAgICAgICBpZiBub3QgZGF0ZWxp
bmVfbWF0Y2g6Ci0gICAgICAgICAgICAgICAgIyBNb2Rlcm4gY29tbWl0IG1lc3NhZ2VzIGRvbid0
IGp1c3QgZHVtcCB0aGUgQ2hhbmdlTG9nIGVudHJ5LCBidXQgcmF0aGVyCi0gICAgICAgICAgICAg
ICAgIyBoYXZlIGEgc3BlY2lhbCBQYXRjaCBieSBsaW5lIGZvciBub24tY29tbWl0dGVycy4KLSAg
ICAgICAgICAgICAgICBkYXRlbGluZV9tYXRjaCA9IHJlLnNlYXJjaChzZWxmLnBhdGNoX2J5X3Jl
Z2V4cCwgbWVzc2FnZSwgcmUuTVVMVElMSU5FKQotICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRl
bGluZV9tYXRjaDoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAg
YXV0aG9yX2VtYWlsID0gZGF0ZWxpbmVfbWF0Y2guZ3JvdXAoImVtYWlsIikKLSAgICAgICAgICAg
IGlmIG5vdCBhdXRob3JfZW1haWw6Ci0gICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
Y291bnRlcnNfYnlfbmFtZSA9IHt9CisgICAgICAgIGNvdW50ZXJzX2J5X2VtYWlsID0ge30KIAot
ICAgICAgICAgICAgIyBXZSBvbmx5IGNhcmUgYWJvdXQgcmV2aWV3ZWQgcGF0Y2hlcywgc28gbWFr
ZSBzdXJlIGl0IGhhcyBhIHZhbGlkIHJldmlld2VyIGxpbmUuCi0gICAgICAgICAgICByZXZpZXdl
cl9tYXRjaCA9IHJlLnNlYXJjaChDaGFuZ2VMb2dFbnRyeS5yZXZpZXdlZF9ieV9yZWdleHAsIG1l
c3NhZ2UsIHJlLk1VTFRJTElORSkKLSAgICAgICAgICAgICMgV2UgbWlnaHQgYWxzbyB3YW50IHRv
IHZhbGlkYXRlIHRoZSByZXZpZXdlciBuYW1lIGFnYWluc3QgdGhlIGNvbW1pdHRlciBsaXN0Lgot
ICAgICAgICAgICAgaWYgbm90IHJldmlld2VyX21hdGNoIG9yIG5vdCByZXZpZXdlcl9tYXRjaC5n
cm91cCgicmV2aWV3ZXIiKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBmb3Ig
Y29tbWl0IGluIHNlbGYuX3JlY2VudF9jb21taXRzKCk6CiAKLSAgICAgICAgICAgIGF1dGhvcl9u
YW1lID0gZGF0ZWxpbmVfbWF0Y2guZ3JvdXAoIm5hbWUiKQotICAgICAgICAgICAgaWYgbm90IGF1
dGhvcl9uYW1lOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGlmIHJl
LnNlYXJjaCgiKFteYS16QS1aXWFuZFteYS16QS1aXSl8KCwpfChAKSIsIGF1dGhvcl9uYW1lKToK
LSAgICAgICAgICAgICAgICAjIFRoaXMgZW50cnkgc2VlbXMgdG8gaGF2ZSBtdWx0aXBsZSByZXZp
ZXdlcnMsIG9yIGludmFsaWQgY2hhcmFjdGVycywgc28gcmVqZWN0IGl0LgotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIHN2bl9pZF9tYXRjaCA9IHJlLnNlYXJjaChDaGFu
Z2VMb2dFbnRyeS5zdm5faWRfcmVnZXhwLCBtZXNzYWdlLCByZS5NVUxUSUxJTkUpCi0gICAgICAg
ICAgICBpZiBzdm5faWRfbWF0Y2g6Ci0gICAgICAgICAgICAgICAgc3ZuX2lkID0gc3ZuX2lkX21h
dGNoLmdyb3VwKCJzdm5pZCIpCi0gICAgICAgICAgICBpZiBub3Qgc3ZuX2lkX21hdGNoIG9yIG5v
dCBzdm5faWQ6Ci0gICAgICAgICAgICAgICAgc3ZuX2lkID0gInVua25vd24iCi0gICAgICAgICAg
ICBjb21taXRfZGF0ZSA9IGRhdGVsaW5lX21hdGNoLmdyb3VwKCJkYXRlIikKKyAgICAgICAgICAg
IG5hbWUgPSBjb21taXRbJ2F1dGhvcl9uYW1lJ10KKyAgICAgICAgICAgIGVtYWlsID0gY29tbWl0
WydhdXRob3JfZW1haWwnXQorICAgICAgICAgICAgZGF0ZSA9IGNvbW1pdFsnY29tbWl0X2RhdGUn
XQorICAgICAgICAgICAgcmV2aXNpb24gPSBjb21taXRbJ3JldmlzaW9uJ10KIAogICAgICAgICAg
ICAgIyBTZWUgaWYgd2UgYWxyZWFkeSBoYXZlIGEgY29udHJpYnV0b3Igd2l0aCB0aGlzIG5hbWUg
b3IgZW1haWwKLSAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFtZSA9IHNlbGYuX2NvdW50ZXJzX2J5
X25hbWUuZ2V0KGF1dGhvcl9uYW1lKQotICAgICAgICAgICAgY291bnRlcl9ieV9lbWFpbCA9IHNl
bGYuX2NvdW50ZXJzX2J5X2VtYWlsLmdldChhdXRob3JfZW1haWwpCisgICAgICAgICAgICBjb3Vu
dGVyX2J5X25hbWUgPSBjb3VudGVyc19ieV9uYW1lLmdldChuYW1lKQorICAgICAgICAgICAgY291
bnRlcl9ieV9lbWFpbCA9IGNvdW50ZXJzX2J5X2VtYWlsLmdldChlbWFpbCkKICAgICAgICAgICAg
IGlmIGNvdW50ZXJfYnlfbmFtZToKICAgICAgICAgICAgICAgICBpZiBjb3VudGVyX2J5X2VtYWls
OgogICAgICAgICAgICAgICAgICAgICBpZiBjb3VudGVyX2J5X25hbWUgIT0gY291bnRlcl9ieV9l
bWFpbDoKQEAgLTEzMiwzMSArODQsMzEgQEAgY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKENvbW1h
bmQpOgogICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9ieV9uYW1lWyduYW1lcyddIHw9
IGNvdW50ZXJfYnlfZW1haWxbJ25hbWVzJ10KICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50
ZXJfYnlfbmFtZVsnZW1haWxzJ10gfD0gY291bnRlcl9ieV9lbWFpbFsnZW1haWxzJ10KICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFtZVsnY291bnQnXSArPSBjb3VudGVyX2J5
X2VtYWlsLmdldCgnY291bnQnLCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY291
bnRlcnNfYnlfZW1haWxbYXV0aG9yX2VtYWlsXSA9IGNvdW50ZXJfYnlfbmFtZQorICAgICAgICAg
ICAgICAgICAgICAgICAgY291bnRlcnNfYnlfZW1haWxbZW1haWxdID0gY291bnRlcl9ieV9uYW1l
CiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgIyBBZGQgZW1haWwg
dG8gdGhlIGV4aXN0aW5nIGNvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY291bnRl
cnNfYnlfZW1haWxbYXV0aG9yX2VtYWlsXSA9IGNvdW50ZXJfYnlfbmFtZQotICAgICAgICAgICAg
ICAgICAgICBjb3VudGVyX2J5X25hbWVbJ2VtYWlscyddIHw9IHNldChbYXV0aG9yX2VtYWlsXSkK
KyAgICAgICAgICAgICAgICAgICAgY291bnRlcnNfYnlfZW1haWxbZW1haWxdID0gY291bnRlcl9i
eV9uYW1lCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFtZVsnZW1haWxzJ10gfD0g
c2V0KFtlbWFpbF0pCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlmIGNvdW50
ZXJfYnlfZW1haWw6CiAgICAgICAgICAgICAgICAgICAgICMgQWRkIG5hbWUgdG8gdGhlIGV4aXN0
aW5nIGNvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY291bnRlcnNfYnlfbmFtZVth
dXRob3JfbmFtZV0gPSBjb3VudGVyX2J5X2VtYWlsCi0gICAgICAgICAgICAgICAgICAgIGNvdW50
ZXJfYnlfZW1haWxbJ25hbWVzJ10gfD0gc2V0KFthdXRob3JfbmFtZV0pCisgICAgICAgICAgICAg
ICAgICAgIGNvdW50ZXJzX2J5X25hbWVbbmFtZV0gPSBjb3VudGVyX2J5X2VtYWlsCisgICAgICAg
ICAgICAgICAgICAgIGNvdW50ZXJfYnlfZW1haWxbJ25hbWVzJ10gfD0gc2V0KFtuYW1lXSkKICAg
ICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAjIENyZWF0ZSBuZXcgY291
bnRlcgotICAgICAgICAgICAgICAgICAgICBuZXdfY291bnRlciA9IHsnbmFtZXMnOiBzZXQoW2F1
dGhvcl9uYW1lXSksICdlbWFpbHMnOiBzZXQoW2F1dGhvcl9lbWFpbF0pLCAnbGF0ZXN0X25hbWUn
OiBhdXRob3JfbmFtZSwgJ2xhdGVzdF9lbWFpbCc6IGF1dGhvcl9lbWFpbCwgJ2NvbW1pdHMnOiAi
In0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY291bnRlcnNfYnlfbmFtZVthdXRob3JfbmFt
ZV0gPSBuZXdfY291bnRlcgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3VudGVyc19ieV9l
bWFpbFthdXRob3JfZW1haWxdID0gbmV3X2NvdW50ZXIKKyAgICAgICAgICAgICAgICAgICAgbmV3
X2NvdW50ZXIgPSB7J25hbWVzJzogc2V0KFtuYW1lXSksICdlbWFpbHMnOiBzZXQoW2VtYWlsXSks
ICdsYXRlc3RfbmFtZSc6IG5hbWUsICdsYXRlc3RfZW1haWwnOiBlbWFpbCwgJ2NvbW1pdHMnOiAi
In0KKyAgICAgICAgICAgICAgICAgICAgY291bnRlcnNfYnlfbmFtZVtuYW1lXSA9IG5ld19jb3Vu
dGVyCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzX2J5X2VtYWlsW2VtYWlsXSA9IG5ld19j
b3VudGVyCiAKLSAgICAgICAgICAgIGFzc2VydChzZWxmLl9jb3VudGVyc19ieV9uYW1lW2F1dGhv
cl9uYW1lXSA9PSBzZWxmLl9jb3VudGVyc19ieV9lbWFpbFthdXRob3JfZW1haWxdKQotICAgICAg
ICAgICAgY291bnRlciA9IHNlbGYuX2NvdW50ZXJzX2J5X25hbWVbYXV0aG9yX25hbWVdCisgICAg
ICAgICAgICBhc3NlcnQoY291bnRlcnNfYnlfbmFtZVtuYW1lXSA9PSBjb3VudGVyc19ieV9lbWFp
bFtlbWFpbF0pCisgICAgICAgICAgICBjb3VudGVyID0gY291bnRlcnNfYnlfbmFtZVtuYW1lXQog
ICAgICAgICAgICAgY291bnRlclsnY291bnQnXSA9IGNvdW50ZXIuZ2V0KCdjb3VudCcsIDApICsg
MQogCi0gICAgICAgICAgICBpZiBzdm5faWQuaXNkaWdpdCgpOgotICAgICAgICAgICAgICAgIHN2
bl9pZCA9ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8iICsgc3ZuX2lkCi0gICAg
ICAgICAgICBjb3VudGVyWydjb21taXRzJ10gKz0gIiAgY29tbWl0OiAlcyBvbiAlcyBieSAlcyAo
JXMpXG4iICUgKHN2bl9pZCwgY29tbWl0X2RhdGUsIGF1dGhvcl9uYW1lLCBhdXRob3JfZW1haWwp
CisgICAgICAgICAgICBpZiByZXZpc2lvbi5pc2RpZ2l0KCk6CisgICAgICAgICAgICAgICAgcmV2
aXNpb24gPSAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvIiArIHJldmlzaW9uCisg
ICAgICAgICAgICBjb3VudGVyWydjb21taXRzJ10gKz0gIiAgY29tbWl0OiAlcyBvbiAlcyBieSAl
cyAoJXMpXG4iICUgKHJldmlzaW9uLCBkYXRlLCBuYW1lLCBlbWFpbCkKIAotICAgICAgICByZXR1
cm4gc2VsZi5fY291bnRlcnNfYnlfZW1haWwKKyAgICAgICAgcmV0dXJuIGNvdW50ZXJzX2J5X2Vt
YWlsCiAKICAgICBkZWYgX2NvbGxlY3Rfbm9taW5hdGlvbnMoc2VsZiwgY291bnRlcnNfYnlfZW1h
aWwpOgogICAgICAgICBub21pbmF0aW9ucyA9IFtdCkBAIC0xNzIsNyArMTI0LDcgQEAgY2xhc3Mg
U3VnZ2VzdE5vbWluYXRpb25zKENvbW1hbmQpOgogCiAgICAgICAgICAgICBpZiBwYXRjaF9jb3Vu
dCA+PSBzZWxmLmNvbW1pdHRlcl9taW5pbXVtIGFuZCAobm90IGNvbnRyaWJ1dG9yIG9yIG5vdCBj
b250cmlidXRvci5jYW5fY29tbWl0KToKICAgICAgICAgICAgICAgICByb2xlcy5hcHBlbmQoImNv
bW1pdHRlciIpCi0gICAgICAgICAgICBpZiBwYXRjaF9jb3VudCA+PSBzZWxmLnJldmlld2VyX21p
bmltdW0gIGFuZCAobm90IGNvbnRyaWJ1dG9yIG9yIG5vdCBjb250cmlidXRvci5jYW5fcmV2aWV3
KToKKyAgICAgICAgICAgIGlmIHBhdGNoX2NvdW50ID49IHNlbGYucmV2aWV3ZXJfbWluaW11bSBh
bmQgY29udHJpYnV0b3IgYW5kIGNvbnRyaWJ1dG9yLmNhbl9jb21taXQgYW5kIG5vdCBjb250cmli
dXRvci5jYW5fcmV2aWV3OgogICAgICAgICAgICAgICAgIHJvbGVzLmFwcGVuZCgicmV2aWV3ZXIi
KQogICAgICAgICAgICAgaWYgcm9sZXM6CiAgICAgICAgICAgICAgICAgbm9taW5hdGlvbnMuYXBw
ZW5kKHsKQEAgLTE4Myw3ICsxMzUsNyBAQCBjbGFzcyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29tbWFu
ZCk6CiAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgcmV0dXJuIG5vbWluYXRpb25zCiAKLSAg
ICBkZWYgX3ByaW50X25vbWluYXRpb25zKHNlbGYsIG5vbWluYXRpb25zKToKKyAgICBkZWYgX3By
aW50X25vbWluYXRpb25zKHNlbGYsIG5vbWluYXRpb25zLCBjb3VudGVyc19ieV9lbWFpbCk6CiAg
ICAgICAgIGRlZiBub21pbmF0aW9uX2NtcChhX25vbWluYXRpb24sIGJfbm9taW5hdGlvbik6CiAg
ICAgICAgICAgICByb2xlc19yZXN1bHQgPSBjbXAoYV9ub21pbmF0aW9uWydyb2xlcyddLCBiX25v
bWluYXRpb25bJ3JvbGVzJ10pCiAgICAgICAgICAgICBpZiByb2xlc19yZXN1bHQ6CkBAIC0xOTcs
NyArMTQ5LDcgQEAgY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKENvbW1hbmQpOgogICAgICAgICAg
ICAgIyBUaGlzIGlzIGEgbGl0dGxlIGJpdCBvZiBhIGhhY2ssIGJ1dCBpdHMgY29udmllbmVudCB0
byBqdXN0IHBhc3MgdGhlIG5vbWluYXRpb24gZGljdGlvbmFyeSB0byB0aGUgZm9ybWF0aW5nIG9w
ZXJhdG9yLgogICAgICAgICAgICAgbm9taW5hdGlvblsncm9sZXNfc3RyaW5nJ10gPSBqb2luX3dp
dGhfc2VwYXJhdG9ycyhub21pbmF0aW9uWydyb2xlcyddKS51cHBlcigpCiAgICAgICAgICAgICBw
cmludCAiJShyb2xlc19zdHJpbmcpczogJShhdXRob3JfbmFtZSlzICglKGF1dGhvcl9lbWFpbClz
KSBoYXMgJShwYXRjaF9jb3VudClzIHJldmlld2VkIHBhdGNoZXMiICUgbm9taW5hdGlvbgotICAg
ICAgICAgICAgY291bnRlciA9IHNlbGYuX2NvdW50ZXJzX2J5X2VtYWlsW25vbWluYXRpb25bJ2F1
dGhvcl9lbWFpbCddXQorICAgICAgICAgICAgY291bnRlciA9IGNvdW50ZXJzX2J5X2VtYWlsW25v
bWluYXRpb25bJ2F1dGhvcl9lbWFpbCddXQogCiAgICAgICAgICAgICBpZiBzZWxmLnNob3dfY29t
bWl0czoKICAgICAgICAgICAgICAgICBwcmludCBjb3VudGVyWydjb21taXRzJ10KQEAgLTIzOCwx
MCArMTkwLDkgQEAgY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKENvbW1hbmQpOgogICAgICAgICBz
ZWxmLl9pbml0X29wdGlvbnMob3B0aW9ucykKICAgICAgICAgcGF0Y2hfY291bnRzID0gc2VsZi5f
Y291bnRfcmVjZW50X3BhdGNoZXMoKQogICAgICAgICBub21pbmF0aW9ucyA9IHNlbGYuX2NvbGxl
Y3Rfbm9taW5hdGlvbnMocGF0Y2hfY291bnRzKQotICAgICAgICBzZWxmLl9wcmludF9ub21pbmF0
aW9ucyhub21pbmF0aW9ucykKKyAgICAgICAgc2VsZi5fcHJpbnRfbm9taW5hdGlvbnMobm9taW5h
dGlvbnMsIHBhdGNoX2NvdW50cykKICAgICAgICAgaWYgc2VsZi52ZXJib3NlOgogICAgICAgICAg
ICAgc2VsZi5fcHJpbnRfY291bnRzKHBhdGNoX2NvdW50cykKIAotCiBpZiBfX25hbWVfXyA9PSAi
X19tYWluX18iOgogICAgIFN1Z2dlc3ROb21pbmF0aW9ucygpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0
aW9uc191bml0dGVzdC5weQppbmRleCA4OGJlMjUzMDM5NTkyM2ViNjdlOTZlNDg1MDgzYzkzOGU2
YzMxNzFjLi5iMjRkZWY2ZmEzZTk1YTkzM2E4Y2JjZGYxZjAzMjM4MDNiYmJkYWVlIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRp
b25zX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9zdWdnZXN0bm9taW5hdGlvbnNfdW5pdHRlc3QucHkKQEAgLTQ1LDIxICs0NSw0NCBAQCBEYXRl
OiAgIFRodSBTZXAgMTUgMTk6NTY6MjEgMjAxMSArMDAwMAogCiAgICAgZ2l0LXN2bi1pZDogaHR0
cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rQDk1MjE5IDI2OGY0NWNj
LWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYwogIiIiCi0gICAgbW9ja19zYW1lX2F1dGhvcl9j
b21taXRfbWVzc2FnZSA9ICIiIlZhbHVlIHByb2ZpbGVzIGNvbGxlY3Qgbm8gaW5mb3JtYXRpb24g
Zm9yIGdsb2JhbCB2YXJpYWJsZXMKKyAgICBtb2NrX3NhbWVfYXV0aG9yX2NvbW1pdF9tZXNzYWdl
ID0gIiIiQXV0aG9yOiBmcGl6bG9AYXBwbGUuY29tIDxmcGl6bG9AYXBwbGUuY29tQDI2OGY0NWNj
LWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYz4KK0RhdGU6ICAgVGh1IFNlcCAxNSAxOTo1Njoy
MSAyMDExICswMDAwCisKK1ZhbHVlIHByb2ZpbGVzIGNvbGxlY3Qgbm8gaW5mb3JtYXRpb24gZm9y
IGdsb2JhbCB2YXJpYWJsZXMKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODE0MwogCi1SZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4iIiIKK1Jldmlld2VkIGJ5IEdl
b2ZmcmV5IEdhcmVuLgorCitnaXQtc3ZuLWlkOiBodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3Np
dG9yeS93ZWJraXQvdHJ1bmtAOTUyMTkgMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRk
YmZjCisiIiIKKworICAgIGRlZiBfbWFrZV9vcHRpb25zKHNlbGYsICoqa3dhcmdzKToKKyAgICAg
ICAgZGVmYXVsdHMgPSB7CisgICAgICAgICAgICAnY29tbWl0dGVyX21pbmltdW0nOiAxMCwKKyAg
ICAgICAgICAgICdtYXhfY29tbWl0X2FnZSc6IDksCisgICAgICAgICAgICAncmV2aWV3ZXJfbWlu
aW11bSc6IDgwLAorICAgICAgICAgICAgJ3Nob3dfY29tbWl0cyc6IEZhbHNlLAorICAgICAgICAg
ICAgJ3ZlcmJvc2UnOiBGYWxzZSwKKyAgICAgICAgfQorICAgICAgICBvcHRpb25zID0gTW9ja09w
dGlvbnMoKipkZWZhdWx0cykKKyAgICAgICAgb3B0aW9ucy51cGRhdGUoKiprd2FyZ3MpCisgICAg
ICAgIHJldHVybiBvcHRpb25zCiAKICAgICBkZWYgdGVzdF9yZWNlbnRfY29tbWl0X21lc3NhZ2Vz
KHNlbGYpOgorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCiAgICAgICAgIHRvb2wgPSBNb2Nr
VG9vbCgpCiAgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMgPSBTdWdnZXN0Tm9taW5hdGlvbnMo
KQotICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zLl9pbml0X29wdGlvbnMob3B0aW9ucz1Nb2Nr
T3B0aW9ucyhyZXZpZXdlcl9taW5pbXVtPTgwLCBjb21taXR0ZXJfbWluaW11bT0xMCwgbWF4X2Nv
bW1pdF9hZ2U9OSwgc2hvd19jb21taXRzPUZhbHNlLCB2ZXJib3NlPUZhbHNlKSkKKyAgICAgICAg
c3VnZ2VzdF9ub21pbmF0aW9ucy5faW5pdF9vcHRpb25zKG9wdGlvbnM9c2VsZi5fbWFrZV9vcHRp
b25zKCkpCiAgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMuYmluZF90b190b29sKHRvb2wpCiAK
ICAgICAgICAgdG9vbC5leGVjdXRpdmUucnVuX2NvbW1hbmQgPSBsYW1iZGEgY29tbWFuZDogc2Vs
Zi5tb2NrX2dpdF9vdXRwdXQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN1Z2dlc3Rf
bm9taW5hdGlvbnMuX3JlY2VudF9jb21taXRfbWVzc2FnZXMoKSksIFtzZWxmLm1vY2tfc2FtZV9h
dXRob3JfY29tbWl0X21lc3NhZ2VdKQogCi0gICAgbW9ja19ub25fY29tbWl0dGVyX2NvbW1pdF9t
ZXNzYWdlID0gIiIiTGV0IFRlc3RXZWJLaXRBUEkgd29yayBmb3IgY2hyb21pdW0KKyAgICBtb2Nr
X25vbl9jb21taXR0ZXJfY29tbWl0X21lc3NhZ2UgPSAiIiIKK0F1dGhvcjogY29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmcgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnQDI2OGY0NWNjLWNkMDktMDQxMC1h
YjNjLWQ1MjY5MWI0ZGJmYz4KK0RhdGU6ICAgVGh1IFNlcCAxNSAxNDowODo0MiAyMDExICswMDAw
CisKK0xldCBUZXN0V2ViS2l0QVBJIHdvcmsgZm9yIGNocm9taXVtCiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc3NTYKIAogUGF0Y2ggYnkgWGlhbnpodSBXYW5nIDx3
YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+IG9uIDIwMTEtMDktMTUKQEAgLTY3LDExICs5MCwxNSBA
QCBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgogCiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtOgogCi0q
IFdlYktpdC5neXA6IiIiCisqIFdlYktpdC5neXA6CisKK2dpdC1zdm4taWQ6IGh0dHA6Ly9zdm4u
d2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVua0A5NTE4OCAyNjhmNDVjYy1jZDA5LTA0
MTAtYWIzYy1kNTI2OTFiNGRiZmMKKyIiIgogCiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CiAg
ICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJSRVZJRVdFUjogWGlhbnpodSBXYW5nICh3YW5neGlh
bnpodUBjaHJvbWl1bS5vcmcpIGhhcyA4OCByZXZpZXdlZCBwYXRjaGVzXG4iCisgICAgICAgIG9w
dGlvbnMgPSBzZWxmLl9tYWtlX29wdGlvbnMoKQogICAgICAgICBzdWdnZXN0X25vbWluYXRpb25z
ID0gU3VnZ2VzdE5vbWluYXRpb25zKCkKLSAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5faW5p
dF9vcHRpb25zKG9wdGlvbnM9TW9ja09wdGlvbnMocmV2aWV3ZXJfbWluaW11bT04MCwgY29tbWl0
dGVyX21pbmltdW09MTAsIG1heF9jb21taXRfYWdlPTksIHNob3dfY29tbWl0cz1GYWxzZSwgdmVy
Ym9zZT1GYWxzZSkpCisgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMuX2luaXRfb3B0aW9ucyhv
cHRpb25zPW9wdGlvbnMpCiAgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMuX3JlY2VudF9jb21t
aXRfbWVzc2FnZXMgPSBsYW1iZGE6IFtzZWxmLm1vY2tfbm9uX2NvbW1pdHRlcl9jb21taXRfbWVz
c2FnZSBmb3IgXyBpbiByYW5nZSg4OCldCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0
cHV0cyhzdWdnZXN0X25vbWluYXRpb25zLCBbXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0
ZG91dCwgb3B0aW9ucz1Nb2NrT3B0aW9ucyhyZXZpZXdlcl9taW5pbXVtPTgwLCBjb21taXR0ZXJf
bWluaW11bT0xMCwgbWF4X2NvbW1pdF9hZ2U9OSwgc2hvd19jb21taXRzPUZhbHNlLCB2ZXJib3Nl
PUZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKHN1Z2dlc3Rfbm9t
aW5hdGlvbnMsIFtdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBvcHRpb25zPW9w
dGlvbnMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199960</attachid>
            <date>2013-04-27 23:29:49 -0700</date>
            <delta_ts>2013-04-29 12:10:54 -0700</delta_ts>
            <desc>Remove duplication changelog entry.</desc>
            <filename>bug-115285-20130427232910.patch</filename>
            <type>text/plain</type>
            <size>37092</size>
            <attacher name="Glenn Adams">glenn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MjM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2UxZTU5N2IyZGZlOGM3ZmY4MjMyODBhMmQ2ODY5ODcz
MTFhN2JlOC4uM2YxODljYTA5NzEwNTIwNGM1MjRhMDZmNzRkMGNmZjhjNjRhZDcyOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1
IEBACisyMDEzLTA0LTI3ICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CisKKyAgICAg
ICAgW3dlYmtpdHB5XSBzdWdnZXN0LW5vbWluYXRpb25zIGRvZXNuJ3QgY291bnQgYWxsIHF1YWxp
ZmllZCBwYXRjaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTUyODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXggY29tbWl0IGFuYWx5c2lzIHNvIHRoYXQgcGF0Y2hlcyBtYWRlIGJ5IGFuIGV4aXN0
aW5nIGNvbW1pdHRlciBhcmUgY291bnRlZCB0b3dhcmRzIHJldmlld2VyCisgICAgICAgIG5vbWlu
YXRpb24uIEltcHJvdmUgY29tbWl0IGxvZyBwYXJzaW5nIHRvIGFsbG93IHJlY29yZGluZyBvZiBz
a2lwcGVkIGNvbW1pdHMgYW5kIHVucmV2aWV3ZWQKKyAgICAgICAgY29tbWl0cyAob2YgdmFyaW91
cyB0eXBlcykuCisKKyAgICAgICAgQnJlYWsgb3V0IGNvbW1vbiBjb21taXQgbG9nIGFuYWx5c2lz
IGludG8gbmV3IEFic3RyYWN0Q29tbWl0TG9nQ29tbWFuZCBiYXNlIGNsYXNzLCB0byBiZSB1c2Vk
CisgICAgICAgIGJ5IG11bHRpcGxlIHVwY29taW5nIGNvbW1hbmQgYWRkaXRpb25zIChhbmFseXpl
LWNvbW1pdHMsIHN1Z2dlc3QtZW1lcml0aSkuCisKKyAgICAgICAgQWRkIG1pc3NpbmcgZW1haWwg
YWRkcmVzc2VzIGluIGNvbnRyaWJ1dG9ycyBsaXN0IHRvIGFjY291bnQgZm9yIGV4aXN0aW5nIGxv
ZyBlbnRyaWVzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2Nv
bnRyaWJ1dG9ycy5qc29uOiBBZGQgbWlzc2luZyBlbWFpbCBhZGRyZXNzZXMgdGhhdCBhcHBlYXIg
aW4gbG9nIGVudHJpZXMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L2Fic3RyYWN0Y29tbWl0bG9nY29tbWFuZC5weTogQWRkZWQuCisgICAgICAgIChBYnN0cmFjdENv
bW1pdExvZ0NvbW1hbmQpOiBNb3ZlIGdlbmVyaWMgY29tbWl0IGxvZyBhbmFseXNpcyBpbnRvIGJh
c2UgY2xhc3MgZm9yIHVzZSBieSBtdWx0aXBsZSBjb21tYW5kcy4KKyAgICAgICAgKEFic3RyYWN0
Q29tbWl0TG9nQ29tbWFuZC5fX2luaXRfXyk6CisgICAgICAgIChBYnN0cmFjdENvbW1pdExvZ0Nv
bW1hbmQuX2NvbW1pdF9vcHRpb25zKToKKyAgICAgICAgKEFic3RyYWN0Q29tbWl0TG9nQ29tbWFu
ZC5faW5pdF9vcHRpb25zKToKKyAgICAgICAgKEFic3RyYWN0Q29tbWl0TG9nQ29tbWFuZC5fcmVj
ZW50X2NvbW1pdF9tZXNzYWdlcyk6CisgICAgICAgIChBYnN0cmFjdENvbW1pdExvZ0NvbW1hbmQu
X2F1dGhvcl9uYW1lX2Zyb21fZW1haWwpOgorICAgICAgICAoQWJzdHJhY3RDb21taXRMb2dDb21t
YW5kLl9jb21taXRfZGF0ZV9mcm9tX21hdGNoKToKKyAgICAgICAgKEFic3RyYWN0Q29tbWl0TG9n
Q29tbWFuZC5fY29udHJpYnV0b3JfZnJvbV9lbWFpbCk6CisgICAgICAgIChBYnN0cmFjdENvbW1p
dExvZ0NvbW1hbmQuX3JlY2VudF9jb21taXRzKTogUmVpbXBsZW1lbnQgYXMgYSBnZW5lcmF0b3Ig
d2l0aCBpbXByb3ZlZCByZXBvcnRpbmcgYW5kIGNvbW1pdCBsb2cgcGFyc2luZy4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5Ogor
ICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zKTogTW92ZSBjb21tb24gZnVuY3Rpb25zIGludG8g
QWJzdHJhY3RDb21taXRMb2dDb21tYW5kIGJhc2UgY2xhc3MuCisgICAgICAgIChTdWdnZXN0Tm9t
aW5hdGlvbnMuX19pbml0X18pOgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9ub21pbmF0
aW9uX29wdGlvbnMpOgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9vdXRwdXRfb3B0aW9u
cyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMuX2luaXRfb3B0aW9ucyk6CisgICAgICAg
IChTdWdnZXN0Tm9taW5hdGlvbnMuX2NvdW50X3JlY2VudF9wYXRjaGVzKToKKyAgICAgICAgKFN1
Z2dlc3ROb21pbmF0aW9ucy5fY29sbGVjdF9ub21pbmF0aW9ucyk6CisgICAgICAgIChTdWdnZXN0
Tm9taW5hdGlvbnMuX3ByaW50X25vbWluYXRpb25zKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0
aW9ucy5leGVjdXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
c3VnZ2VzdG5vbWluYXRpb25zX3VuaXR0ZXN0LnB5OiBFbnN1cmUgbm8gdGVzdCByZWdyZXNzaW9u
cy4KKyAgICAgICAgKF9tYWtlX29wdGlvbnMpOgorICAgICAgICAodGVzdF9yZWNlbnRfY29tbWl0
X21lc3NhZ2VzKToKKyAgICAgICAgKHRlc3RfYmFzaWMpOgorCiAyMDEzLTA0LTI2ICBSeXVhbiBD
aG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBCdWlsZCBicmVh
ayB1c2luZyBqaGJ1aWxkIG9uIHVidW50dSAxMy4wNApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1dG9ycy5qc29uIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1dG9ycy5qc29uCmluZGV4IDI4OGNiZmQ3
ODAyYjY1OTE1ZGYwNTA1YjJlNmJmNzA0MmMwMzk1OGMuLjAwMzRjNmNjYzkzNmRlZDYxMzBjMTMw
Y2E5OTg4ZDZhYTE4YzZmZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbgorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jb25maWcvY29udHJpYnV0b3JzLmpzb24KQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICAg
ICAgIkt1bGFudGhhaXZlbCBQYWxhbmljaGFteSI6IHsiZW1haWxzIjogWyJrdWxhbnRoYWl2ZWxA
Y29kZWF1cm9yYS5vcmciXSwgIm5pY2tzIjogWyJrdmVsIl19LAogICAgICAgICAiS29qaSBIYXJh
IjogeyJlbWFpbHMiOiBbImtvamloQGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBbImtvamloIl19
LAogICAgICAgICAiS29qaSBJc2hpaSI6IHsiZW1haWxzIjogWyJrb2ppaXNoaUBnbWFpbC5jb20i
XX0sCisgICAgICAgICJMaWEgQ2hlbiI6IHsiZW1haWxzIjogWyJsaWFjaGVuQHJpbS5jb20iXX0s
CiAgICAgICAgICJNaWNoYWVsIFBydWV0dCI6IHsiZW1haWxzIjogWyJtaWNoYWVsQDY4ay5vcmci
XSwgIm5pY2tzIjogWyJtcHJ1ZXR0Il19LAogICAgICAgICAiTWloYWkgQmFsYW4iOiB7ImVtYWls
cyI6IFsibWliYWxhbkBhZG9iZS5jb20iXSwgIm5pY2tzIjogWyJtaUNob3UiXX0sCiAgICAgICAg
ICJNaWhhaSBNYWVyZWFuIjogeyJlbWFpbHMiOiBbIm1tYWVyZWFuQGFkb2JlLmNvbSJdLCAibmlj
a3MiOiBbIm1tYWVyZWFuIl19LApAQCAtMTIxLDcgKzEyMiw3IEBACiAgICAgICAgICJDaHJpcyBH
dWlsbG9yeSI6IHsiZW1haWxzIjogWyJjdGd1aWxAY2hyb21pdW0ub3JnIiwgImNocmlzLmd1aWxs
b3J5QGdvb2dsZS5jb20iXSwgIm5pY2tzIjogWyJjdGd1aWwiXX0sCiAgICAgICAgICJDaHJpcyBQ
ZXRlcnNlbiI6IHsiZW1haWxzIjogWyJjcGV0ZXJzZW5AYXBwbGUuY29tIl0sICJuaWNrcyI6IFsi
Y3BldGVyc2VuIl19LAogICAgICAgICAiQ2hyaXN0aWFuIER5d2FuIjogeyJlbWFpbHMiOiBbImNo
cmlzdGlhbkB0d290b2FzdHMuZGUiLCAiY2hyaXN0aWFuQHdlYmtpdC5vcmciLCAiY2hyaXN0aWFu
QGxhbmVkby5jb20iXX0sCi0gICAgICAgICJDaHJpc3RvcGhlIER1bWV6IjogeyJlbWFpbHMiOiBb
ImRjaHJpc0BnbWFpbC5jb20iLCAiY2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbSJdLCAibmlja3Mi
OiBbImNkdW1leiJdfSwKKyAgICAgICAgIkNocmlzdG9waGUgRHVtZXoiOiB7ImVtYWlscyI6IFsi
ZGNocmlzQGdtYWlsLmNvbSIsICJjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tIiwgImNocmlzdG9w
aGUuZHVtZXpAaW50ZWwuY29tIl0sICJuaWNrcyI6IFsiY2R1bWV6Il19LAogICAgICAgICAiQ2xh
dWRpbyBTYWF2ZWRyYSI6IHsiZW1haWxzIjogWyJjc2FhdmVkcmFAaWdhbGlhLmNvbSJdLCAibmlj
a3MiOiBbImNsYXVkaW9fX18iXX0sCiAgICAgICAgICJDb2xsaW4gSmFja3NvbiI6IHsiZW1haWxz
IjogWyJjb2xsaW5qQHdlYmtpdC5vcmciXSwgIm5pY2tzIjogWyJjb2xsaW5qYWNrc29uIl19LAog
ICAgICAgICAiQ3JpcyBOZWNrYXIiOiB7ImVtYWlscyI6IFsiY2RuQGNocm9taXVtLm9yZyJdLCAi
bmlja3MiOiBbImNuZWNrYXIiXX0sCkBAIC0xNjMsNyArMTY0LDcgQEAKICAgICAgICAgIkdyZWcg
Qm9sc2luZ2EiOiB7ImVtYWlscyI6IFsiYm9sc2luZ2FAYXBwbGUuY29tIl19LAogICAgICAgICAi
R3JlZ2cgVGF2YXJlcyI6IHsiZW1haWxzIjogWyJnbWFuQGNocm9taXVtLm9yZyIsICJnbWFuQGdv
b2dsZS5jb20iXSwgIm5pY2tzIjogWyJnbWFuIl19LAogICAgICAgICAiR3J6ZWdvcnogQ3phamtv
d3NraSI6IHsiZW1haWxzIjogWyJnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20iXSwgIm5pY2tzIjog
WyJncnplZ29yeiJdfSwKLSAgICAgICAgIkhhbnMgTXVsbGVyIjogeyJlbWFpbHMiOiBbImdpbGVz
X2pvcGxpbkB5YWhvby5jb20iXSwgIm5pY2tzIjogWyJoYW5zbXVsbGVyIl19LAorICAgICAgICAi
SGFucyBNdWxsZXIiOiB7ImVtYWlscyI6IFsiZ2lsZXNfam9wbGluQHlhaG9vLmNvbSIsICJobXVs
bGVyQGFkb2JlLmNvbSJdLCAibmlja3MiOiBbImhhbnNtdWxsZXIiXX0sCiAgICAgICAgICJIYW5z
IFdlbm5ib3JnIjogeyJlbWFpbHMiOiBbImhhbnNAY2hyb21pdW0ub3JnIl0sICJuaWNrcyI6IFsi
aHdlbm5ib3JnIl19LAogICAgICAgICAiSGF5YXRvIEl0byI6IHsiZW1haWxzIjogWyJoYXlhdG9A
Y2hyb21pdW0ub3JnIl0sICJuaWNrcyI6IFsiaGF5YXRvIl19LAogICAgICAgICAiSGlyb25vcmkg
Qm9ubyI6IHsiZW1haWxzIjogWyJoYm9ub0BjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJoYm9u
byJdfSwKQEAgLTE5OSw3ICsyMDAsNyBAQAogICAgICAgICAiSm9obiBLbm90dGVuYmVsdCI6IHsi
ZW1haWxzIjogWyJqa25vdHRlbkBjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJqa25vdHRlbiJd
fSwKICAgICAgICAgIkpvaG5ueSBEaW5nIjogeyJlbWFpbHMiOiBbImpuZEBjaHJvbWl1bS5vcmci
LCAiam9obm55ZGluZy53ZWJraXRAZ21haWwuY29tIl0sICJuaWNrcyI6IFsiam9obm55ZGluZyJd
fSwKICAgICAgICAgIkpvbiBMZWUiOiB7ImVtYWlscyI6IFsiam9ubGVlQGFwcGxlLmNvbSJdLCAi
bmlja3MiOiBbImpvbmxlZSJdfSwKLSAgICAgICAgIkpvbmF0aGFuIERvbmciOiB7ImVtYWlscyI6
IFsiam9uYXRoYW4uZG9uZy53ZWJraXRAZ21haWwuY29tIl0sICJuaWNrcyI6IFsiam9uZG9uZyJd
fSwKKyAgICAgICAgIkpvbmF0aGFuIERvbmciOiB7ImVtYWlscyI6IFsiam9uYXRoYW4uZG9uZy53
ZWJraXRAZ21haWwuY29tIiwgImpvbmF0aGFuLmRvbmdAdG9yY2htb2JpbGUuY29tLmNuIl0sICJu
aWNrcyI6IFsiam9uZG9uZyJdfSwKICAgICAgICAgIkpvb25lIEh1ciI6IHsiZW1haWxzIjogWyJq
b29uZUB3ZWJraXQub3JnIiwgImpvb25lLmh1ckBpbnRlbC5jb20iXSwgIm5pY2tzIjogWyJqb29u
ZSJdfSwKICAgICAgICAgIkpvb3N0IGRlIFZhbGsiOiB7ImVtYWlscyI6IFsiam9vc3RAd2Via2l0
Lm9yZyIsICJ3ZWJraXQtZGV2QGpvb3N0ZGV2YWxrLm5sIl0sICJuaWNrcyI6IFsiQWx0aGEiXX0s
CiAgICAgICAgICJKb3NodWEgQmVsbCI6IHsiZW1haWxzIjogWyJqc2JlbGxAY2hyb21pdW0ub3Jn
IiwgImpzYmVsbEBnb29nbGUuY29tIl0sICJuaWNrcyI6IFsianNiZWxsIl19LApAQCAtMzE1LDcg
KzMxNiw3IEBACiAgICAgICAgICJUcmV5IE1hdHRlc29uIjogeyJlbWFpbHMiOiBbInRyZXlAdXNh
Lm5ldCJdLCAibmlja3MiOiBbInRyZXkiXX0sCiAgICAgICAgICJUcmlzdGFuIE8nVGllcm5leSI6
IHsiZW1haWxzIjogWyJ0cmlzdGFuQG90aWVybmV5Lm5ldCIsICJ0cmlzdGFuQGFwcGxlLmNvbSJd
fSwKICAgICAgICAgIlZhbmdlbGlzIEtva2tldmlzIjogeyJlbWFpbHMiOiBbInZhbmdlbGlzQGNo
cm9taXVtLm9yZyJdLCAibmlja3MiOiBbInZhbmdlbGlzIl19LAotICAgICAgICAiVmlhdGNoZXNs
YXYgT3N0YXBlbmtvIjogeyJlbWFpbHMiOiBbIm9zdGFwNzNAZ21haWwuY29tIiwgInYub3N0YXBl
bmtvQHNhbXN1bmcuY29tIiwgInYub3N0YXBlbmtvQHNpc2Euc2Ftc3VuZy5jb20iXSwgIm5pY2tz
IjogWyJvc3RhcCJdfSwKKyAgICAgICAgIlZpYXRjaGVzbGF2IE9zdGFwZW5rbyI6IHsiZW1haWxz
IjogWyJvc3RhcDczQGdtYWlsLmNvbSIsICJvc3RhcGVua28udmlhdGNoZXNsYXZAbm9raWEuY29t
IiwgInYub3N0YXBlbmtvQHNhbXN1bmcuY29tIiwgInYub3N0YXBlbmtvQHNpc2Euc2Ftc3VuZy5j
b20iXSwgIm5pY2tzIjogWyJvc3RhcCJdfSwKICAgICAgICAgIlZpY3RvciBDYXJidW5lIjogeyJl
bWFpbHMiOiBbInZjYXJidW5lQGNocm9taXVtLm9yZyIsICJ2aWN0b3JAcm9zZWR1Lm9yZyJdLCAi
bmlja3MiOiBbInZjYXJidW5lIl19LAogICAgICAgICAiVmljdG9yIFdhbmciOiB7ImVtYWlscyI6
IFsidmljdG9yd0BjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJ2aWN0b3J3Il19LAogICAgICAg
ICAiVmljdG9yaWEgS2lyc3QiOiB7ImVtYWlscyI6IFsidnJrQGNocm9taXVtLm9yZyIsICJ2cmtA
Z29vZ2xlLmNvbSJdLCAibmlja3MiOiBbInZyayJdfSwKQEAgLTMzNywxMSArMzM4LDExIEBACiAg
ICAgICAgICJZdXFpYW5nIFhpYW4iOiB7ImVtYWlscyI6IFsieXVxaWFuZy54aWFuQGludGVsLmNv
bSJdfSwKICAgICAgICAgIll1em8gRnVqaXNoaW1hIjogeyJlbWFpbHMiOiBbInl1em9AZ29vZ2xl
LmNvbSJdLCAibmlja3MiOiBbInl1em8iXX0sCiAgICAgICAgICJaYWxhbiBCdWp0YXMiOiB7ImVt
YWlscyI6IFsiemFsYW5AYXBwbGUuY29tIiwgInpidWp0YXNAZ21haWwuY29tIiwgInphbGFuLmJ1
anRhc0Bub2tpYS5jb20iXSwgIm5pY2tzIjogWyJ6YWxhbiJdfSwKLSAgICAgICAgIlplbm8gQWxi
aXNzZXIiOiB7ImVtYWlscyI6IFsiemVub0B3ZWJraXQub3JnIiwgInplbm8uYWxiaXNzZXJAbm9r
aWEuY29tIl0sICJuaWNrcyI6IFsiemFsYmlzc2VyIl19LAorICAgICAgICAiWmVubyBBbGJpc3Nl
ciI6IHsiZW1haWxzIjogWyJ6ZW5vQHdlYmtpdC5vcmciLCAiemVuby5hbGJpc3NlckBub2tpYS5j
b20iLCAiemVuby5hbGJpc3NlckBkaWdpYS5jb20iXSwgIm5pY2tzIjogWyJ6YWxiaXNzZXIiXX0s
CiAgICAgICAgICJaaGVueWFvIE1vIjogeyJlbWFpbHMiOiBbInptb0Bnb29nbGUuY29tIl0sICJu
aWNrcyI6IFsiemhlbnlhbyJdfSwKICAgICAgICAgIlpvbHRhbiBBcnZhaSI6IHsiZW1haWxzIjog
WyJ6YXJ2YWlAaW5mLnUtc3plZ2VkLmh1Il0sICJuaWNrcyI6IFsiYXpiZXN0X2h1Il19LAogICAg
ICAgICAiWm9sdGFuIEhvcnZhdGgiOiB7ImVtYWlscyI6IFsiem9sdGFuQHdlYmtpdC5vcmciLCAi
aHpvbHRhbkBpbmYudS1zemVnZWQuaHUiLCAiaG9ydmF0aC56b2x0YW4uNkBzdHVkLnUtc3plZ2Vk
Lmh1Il0sICJuaWNrcyI6IFsiem9sdGFuIl19LAotICAgICAgICAiXHUwMTdkYW4gRG9iZXJcdTAx
NjFlayI6IHsiZW1haWxzIjogWyJ6YW5kb2JlcnNla0BnbWFpbC5jb20iXSwgIm5pY2tzIjogWyJ6
ZG9iZXJzZWsiXX0KKyAgICAgICAgIlx1MDE3ZGFuIERvYmVyXHUwMTYxZWsiOiB7ImVtYWlscyI6
IFsiemFuZG9iZXJzZWtAZ21haWwuY29tIiwgInphbmRvYmVyc2VrQGlnYWxpYS5jb20iXSwgIm5p
Y2tzIjogWyJ6ZG9iZXJzZWsiXX0KICAgICB9LAogICAgICJSZXZpZXdlcnMiOiB7CiAgICAgICAg
ICJBYmhpc2hlayBBcnlhIjogeyJlbWFpbHMiOiBbImluZmVybm9AY2hyb21pdW0ub3JnIl0sICJu
aWNrcyI6IFsiaW5mZXJuby1zZWMiXX0sCkBAIC0zNTUsNyArMzU2LDcgQEAKICAgICAgICAgIkFs
ZXhhbmRlciBQYXZsb3YiOiB7ImVtYWlscyI6IFsiYXBhdmxvdkBjaHJvbWl1bS5vcmciLCAicGF2
bG92ODFAZ21haWwuY29tIl0sICJuaWNrcyI6IFsiYXBhdmxvdiJdfSwKICAgICAgICAgIkFsZXhh
bmRydSBDaGljdWxpdGEiOiB7ImVtYWlscyI6IFsiYWNoaWN1QGFkb2JlLmNvbSJdLCAibmlja3Mi
OiBbImFjaGljdSJdfSwKICAgICAgICAgIkFsZXhleSBQcm9za3VyeWFrb3YiOiB7ImVtYWlscyI6
IFsiYXBAd2Via2l0Lm9yZyIsICJhcEBhcHBsZS5jb20iXSwgIm5pY2tzIjogWyJhcCJdfSwKLSAg
ICAgICAgIkFsZXhpcyBNZW5hcmQiOiB7ImVtYWlscyI6IFsiYWxleGlzQHdlYmtpdC5vcmciLCAi
bWVuYXJkQGtkZS5vcmciXSwgIm5pY2tzIjogWyJkYXJrdGVhcnMiXX0sCisgICAgICAgICJBbGV4
aXMgTWVuYXJkIjogeyJlbWFpbHMiOiBbImFsZXhpc0B3ZWJraXQub3JnIiwgIm1lbmFyZEBrZGUu
b3JnIiwgImFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZyJdLCAibmlja3MiOiBbImRhcmt0ZWFy
cyJdfSwKICAgICAgICAgIkFsaWNlIExpdSI6IHsiZW1haWxzIjogWyJhbGljZS5saXVAYXBwbGUu
Y29tIl0sICJuaWNrcyI6IFsiYWxpdSJdfSwKICAgICAgICAgIkFsbGFuIFNhbmRmZWxkIEplbnNl
biI6IHsiZW1haWxzIjogWyJhbGxhbi5qZW5zZW5AZGlnaWEuY29tIiwgImtkZUBjYXJld29sZi5j
b20iLCAic2FuZGZlbGRAa2RlLm9yZyIsICJhbGxhbi5qZW5zZW5Abm9raWEuY29tIl0sICJuaWNr
cyI6IFsiY2FyZXdvbGYiXX0sCiAgICAgICAgICJBbHAgVG9rZXIiOiB7ImVtYWlscyI6IFsiYWxw
QG51YW50aS5jb20iLCAiYWxwQGF0b2tlci5jb20iLCAiYWxwQHdlYmtpdC5vcmciXSwgIm5pY2tz
IjogWyJhbHAiXX0sCkBAIC00MTUsNyArNDE2LDcgQEAKICAgICAgICAgIkplc3NpZSBCZXJsaW4i
OiB7ImVtYWlscyI6IFsiamJlcmxpbkB3ZWJraXQub3JnIiwgImpiZXJsaW5AYXBwbGUuY29tIl0s
ICJuaWNrcyI6IFsiamVzc2llYmVybGluIl19LAogICAgICAgICAiSmlhbiBMaSI6IHsiZW1haWxz
IjogWyJqaWFubGlAY2hyb21pdW0ub3JnIl0sICJuaWNrcyI6IFsiamlhbmxpIl19LAogICAgICAg
ICAiSm9jZWx5biBUdXJjb3R0ZSI6IHsiZW1haWxzIjogWyJqb2NlbHluLnR1cmNvdHRlQGRpZ2lh
LmNvbSIsICJqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbSJdLCAibmlja3MiOiBbImp0dXJjb3R0
ZSJdfSwKLSAgICAgICAgIkpvY2hlbiBFaXNpbmdlciI6IHsiZW1haWxzIjogWyJqb2NoZW5AY2hy
b21pdW0ub3JnIl0sICJuaWNrcyI6IFsiam9jaGVuX18iXX0sCisgICAgICAgICJKb2NoZW4gRWlz
aW5nZXIiOiB7ImVtYWlscyI6IFsiam9jaGVuQGNocm9taXVtLm9yZyIsICJqb2NoZW5AY2hyb21p
dW0ub3IiXSwgIm5pY2tzIjogWyJqb2NoZW5fXyJdfSwKICAgICAgICAgIkpvaG4gU3VsbGl2YW4i
OiB7ImVtYWlscyI6IFsic3VsbGl2YW5AYXBwbGUuY29tIl0sICJuaWNrcyI6IFsic3VsbGl2YW4i
XX0sCiAgICAgICAgICJKb24gSG9uZXljdXR0IjogeyJlbWFpbHMiOiBbImpob25leWN1dHRAYXBw
bGUuY29tIl0sICJuaWNrcyI6IFsiamhvbmV5Y3V0dCJdfSwKICAgICAgICAgIkpvc2VwaCBQZWNv
cmFybyI6IHsiZW1haWxzIjogWyJqb2VwZWNrQHdlYmtpdC5vcmciLCAicGVjb3Jhcm9AYXBwbGUu
Y29tIl0sICJuaWNrcyI6IFsiSm9lUGVjayJdfSwKQEAgLTQ2OSw3ICs0NzAsNyBAQAogICAgICAg
ICAiVmlja2kgTXVybGV5IjogeyJlbWFpbHMiOiBbInZpY2tpQGFwcGxlLmNvbSJdfSwKICAgICAg
ICAgIlZzZXZvbG9kIFZsYXNvdiI6IHsiZW1haWxzIjogWyJ2c2V2aWtAY2hyb21pdW0ub3JnIl0s
ICJuaWNrcyI6IFsidnNldmlrIl19LAogICAgICAgICAiWGFuIExvcGV6IjogeyJlbWFpbHMiOiBb
Inhhbi5sb3BlekBnbWFpbC5jb20iLCAieGFuQGdub21lLm9yZyIsICJ4YW5Ad2Via2l0Lm9yZyIs
ICJ4bG9wZXpAaWdhbGlhLmNvbSJdLCAibmlja3MiOiBbInhhbiJdfSwKLSAgICAgICAgIllvbmcg
TGkiOiB7ImVtYWlscyI6IFsieW9uZy5saS53ZWJraXRAb3V0bG9vay5jb20iXSwgIm5pY2tzIjog
WyJ5b2xpIl19LAorICAgICAgICAiWW9uZyBMaSI6IHsiZW1haWxzIjogWyJ5b25nLmxpLndlYmtp
dEBvdXRsb29rLmNvbSIsICJ5b2xpQHJpbS5jb20iXSwgIm5pY2tzIjogWyJ5b2xpIl19LAogICAg
ICAgICAiWXVyeSBTZW1pa2hhdHNreSI6IHsiZW1haWxzIjogWyJ5dXJ5c0BjaHJvbWl1bS5vcmci
XSwgIm5pY2tzIjogWyJ5dXJ5cyJdfSwKICAgICAgICAgIll1dGEgS2l0YW11cmEiOiB7ImVtYWls
cyI6IFsieXV0YWtAY2hyb21pdW0ub3JnIl0sICJuaWNrcyI6IFsieXV0YWsiXX0sCiAgICAgICAg
ICJaYWNrIFJ1c2luIjogeyJlbWFpbHMiOiBbInphY2tAa2RlLm9yZyJdLCAibmlja3MiOiBbInph
Y2tyIl19LApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L2Fic3RyYWN0Y29tbWl0bG9nY29tbWFuZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9hYnN0cmFjdGNvbW1pdGxvZ2NvbW1hbmQucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE5NTE0
ODQzNTNmN2Y5NDQ1ZDFlODhmYTllMzIzNTgxOTFkMGQyYgotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9hYnN0cmFjdGNvbW1pdGxvZ2NvbW1h
bmQucHkKQEAgLTAsMCArMSwyMTQgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxMSBDb2RlIEF1cm9yYSBG
b3J1bS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBj
YWxlbmRhcgoraW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgcmUKKworZnJvbSB3ZWJraXRweS5jb21t
b24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QKK2Zyb20gd2Via2l0cHku
dG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9ydCBDb21tYW5kCisKKworY2xhc3MgQWJzdHJhY3RD
b21taXRMb2dDb21tYW5kKENvbW1hbmQpOgorCisgICAgQ0FOVF9ERVRFUk1JTkVfQ09NTUlUVEVS
ID0gImNhbid0IGRldGVybWluZSBjb21taXR0ZXIiCisgICAgQ0FOVF9ERVRFUk1JTkVfQ09NTUlU
VEVSX0VNQUlMID0gImNhbid0IGRldGVybWluZSBjb21taXR0ZXIncyBlbWFpbCIKKyAgICBDQU5U
X0ZJTkRfQ09NTUlUVEVSID0gImNhbid0IGZpbmQgY29tbWl0dGVyIGluIGNvbnRyaWJ1dG9ycyBs
aXN0IgorICAgIENBTlRfREVURVJNSU5FX0NPTU1JVF9EQVRFID0gImNhbid0IGRldGVybWluZSBj
b21taXQgZGF0ZSIKKyAgICBDQU5UX0RFVEVSTUlORV9TVk5fSUQgPSAiY2FuJ3QgZGV0ZXJtaW5l
IHN2biBpZCIKKyAgICBDQU5UX0RFVEVSTUlORV9BVVRIT1IgPSAiY2FuJ3QgZGV0ZXJtaW5lIHBh
dGNoJ3MgYXV0aG9yIgorICAgIENBTlRfREVURVJNSU5FX0FVVEhPUl9FTUFJTCA9ICJjYW4ndCBk
ZXRlcm1pbmUgcGF0Y2ggYXV0aG9yJ3MgZW1haWwiCisgICAgQ0FOVF9ERVRFUk1JTkVfQVVUSE9S
X05BTUUgPSAiY2FuJ3QgZGV0ZXJtaW5lIHBhdGNoIGF1dGhvcidzIG5hbWUiCisgICAgVU5SRVZJ
RVdFRF9NQVJLRUQgPSAidW5yZXZpZXdlZCwgYW5kIG1hcmtlZCBhcyBzdWNoIgorICAgIFVOUkVW
SUVXRURfTk9UX01BUktFRF9SRVZJRVdFUiA9ICJ1bnJldmlld2VkLCBidXQgbm90IG1hcmtlZDsg
YXV0aG9yIGlzIHJldmlld2VyIgorICAgIFVOUkVWSUVXRURfTk9UX01BUktFRF9DT01NSVRURVIg
PSAidW5yZXZpZXdlZCwgYnV0IG5vdCBtYXJrZWQ7IGF1dGhvciBpcyBjb21taXR0ZXIiCisgICAg
VU5SRVZJRVdFRF9OT1RfTUFSS0VEX0NPTU1JVF9RVUVVRSA9ICJ1bnJldmlld2VkLCBidXQgbm90
IG1hcmtlZDsgYXV0aG9yIGlzIGNvbW1pdCBxdWV1ZSIKKyAgICBVTlJFVklFV0VEX05PVF9NQVJL
RURfTk9UX0NPTU1JVFRFUl9PUl9SRVZJRVdFUiA9ICJ1bnJldmlld2VkLCBidXQgbm90IG1hcmtl
ZDsgYXV0aG9yIGlzIG5vdCBjb21taXR0ZXIgb3IgcmV2aWV3ZXIiCisgICAgVU5SRVZJRVdFRF9O
T1RfTUFSS0VEX05PVF9DT05UUklCVVRPUiA9ICJ1bnJldmlld2VkLCBidXQgbm90IG1hcmtlZDsg
YXV0aG9yIGlzIG5vdCBhIGNvbnRyaWJ1dG9yIgorCisgICAgX2NvbW1pdF9jb3VudCA9IDAKKwor
ICAgIF9tYXRjaF9sZWFkaW5nX2luZGVudCA9IHJlLmNvbXBpbGUociJeWyBdezR9IiwgcmUuTVVM
VElMSU5FKQorICAgIF9tYXRjaF9yZXZpZXdlZF9ieSA9IHJlLmNvbXBpbGUocideXHMqKChcdytc
cyspK2FuZFxzKyk/KFJldmlld3xSdWJiZXIoXHMqfC0pc3RhbXApKHN8ZWQpP1xzKyhbYS16XStc
cyspKj9ieVxzKyg/UDxyZXZpZXdlcnM+Lio/KVtcLixdP1xzKiQnLCByZS5NVUxUSUxJTkUpCisg
ICAgX21hdGNoX3VucmV2aWV3ZWQgPSByZS5jb21waWxlKHInXlxzKigoXFMrXHMrKSspP1VucmV2
aWV3ZWQuKiQnLCByZS5NVUxUSUxJTkUpCisgICAgX21hdGNoX2dhcmRlbmluZyA9IHJlLmNvbXBp
bGUocidbR2ddYXJkZW5pbmcnKQorICAgIF9tYXRjaF9wYXRjaF9ieSA9IHJlLmNvbXBpbGUocide
UGF0Y2ggYnkgKD9QPG5hbWU+Lis/KVxzKzwoP1A8ZW1haWw+W148Pl0rKT4gb24gKD9QPGRhdGU+
XGR7NH0tXGR7Mn0tXGR7Mn0pJCcsIHJlLk1VTFRJTElORSkKKyAgICBfbWF0Y2hfY29tbWl0dGVy
ID0gcmUuY29tcGlsZShyJ15BdXRob3I6ICg/UDxlbWFpbD5cUyspXHMrPFtePl0rPiQnLCByZS5N
VUxUSUxJTkUpCisgICAgX21hdGNoX2RhdGUgPSByZS5jb21waWxlKHInXkRhdGU6ICAgXFN7M30g
KD9QPG1vbnRoPlxTezN9KSAoP1A8ZGF5PlxkezEsMn0pICg/UDx0aW1lPlxkezJ9OlxkezJ9Olxk
ezJ9KSAoP1A8eWVhcj5cZHs0fSkgW1wrXC1dXGR7NH0kJywgcmUuTVVMVElMSU5FKQorICAgIF9t
YXRjaF9yZXZpc2lvbiA9IHJlLmNvbXBpbGUocideZ2l0LXN2bi1pZDogaHR0cDovL3N2bi53ZWJr
aXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rQCg/UDxzdm5pZD5cZCspICg/UDxnaXRpZD5b
MC05YS1mXC1dezM2fSkkJywgcmUuTVVMVElMSU5FKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG9wdGlvbnM9Tm9uZSk6CisgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIG9yIFtdCisgICAgICAg
IG9wdGlvbnMgKz0gc2VsZi5fY29tbWl0X29wdGlvbnMoKQorICAgICAgICBvcHRpb25zID0gc29y
dGVkKG9wdGlvbnMsIGxhbWJkYSBhLCBiOiBjbXAoYS5fbG9uZ19vcHRzLCBiLl9sb25nX29wdHMp
KQorICAgICAgICBzdXBlcihBYnN0cmFjdENvbW1pdExvZ0NvbW1hbmQsIHNlbGYpLl9faW5pdF9f
KG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkg
YmUgb24gdGhlIHRvb2wgc29tZXdoZXJlLgorICAgICAgICBzZWxmLl9jb21taXR0ZXJfbGlzdCA9
IENvbW1pdHRlckxpc3QoKQorCisgICAgZGVmIF9jb21taXRfb3B0aW9ucyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIFsKKyAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLW1heC1jb21t
aXQtYWdlIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9Im1heF9jb21taXRfYWdlIiwgdHlwZT0iaW50
IiwgZGVmYXVsdD05LCBoZWxwPSJTcGVjaWZ5IG1heGltdW0gY29tbWl0IGFnZSB0byBjb25zaWRl
ciAoaW4gbW9udGhzKS4iKSwKKyAgICAgICAgXQorCisgICAgZGVmIF9pbml0X29wdGlvbnMoc2Vs
Ziwgb3B0aW9ucyk6CisgICAgICAgIHNlbGYudmVyYm9zZSA9IG9wdGlvbnMudmVyYm9zZQorICAg
ICAgICBzZWxmLm1heF9jb21taXRfYWdlID0gb3B0aW9ucy5tYXhfY29tbWl0X2FnZQorCisgICAg
IyBGSVhNRTogVGhpcyBzaG91bGQgbW92ZSB0byBzY20ucHkKKyAgICBkZWYgX3JlY2VudF9jb21t
aXRfbWVzc2FnZXMoc2VsZik6CisgICAgICAgIGdpdF9sb2cgPSBzZWxmLl90b29sLmV4ZWN1dGl2
ZS5ydW5fY29tbWFuZChbJ2dpdCcsICdsb2cnLCAnLS1zaW5jZT0iJXMgbW9udGhzIGFnbyInICUg
c2VsZi5tYXhfY29tbWl0X2FnZV0pCisgICAgICAgIG1lc3NhZ2VzID0gcmUuc3BsaXQociJeY29t
bWl0IFx3ezQwfSQiLCBnaXRfbG9nLCBmbGFncz1yZS5NVUxUSUxJTkUpWzE6XSAgIyBJZ25vcmUg
dGhlIGZpcnN0IG1lc3NhZ2Ugd2hpY2ggd2lsbCBiZSBlbXB0eS4KKyAgICAgICAgZm9yIG1lc3Nh
Z2UgaW4gbWVzc2FnZXM6CisgICAgICAgICAgICAjIFVuaW5kZW50IGFsbCB0aGUgbGluZXMKKyAg
ICAgICAgICAgIChtZXNzYWdlLCBfKSA9IHNlbGYuX21hdGNoX2xlYWRpbmdfaW5kZW50LnN1Ym4o
IiIsIG1lc3NhZ2UpCisgICAgICAgICAgICB5aWVsZCBtZXNzYWdlLmxzdHJpcCgpICAjIFJlbW92
ZSBhbnkgbGVhZGluZyBuZXdsaW5lcyBmcm9tIHRoZSBsb2cgbWVzc2FnZS4KKworICAgIGRlZiBf
YXV0aG9yX25hbWVfZnJvbV9lbWFpbChzZWxmLCBlbWFpbCk6CisgICAgICAgIGNvbnRyaWJ1dG9y
ID0gc2VsZi5fY29tbWl0dGVyX2xpc3QuY29udHJpYnV0b3JfYnlfZW1haWwoZW1haWwpCisgICAg
ICAgIHJldHVybiBjb250cmlidXRvci5mdWxsX25hbWUgaWYgY29udHJpYnV0b3IgZWxzZSBOb25l
CisKKyAgICBkZWYgX2NvbW1pdF9kYXRlX2Zyb21fbWF0Y2goc2VsZiwgbWF0Y2gpOgorICAgICAg
ICB5ZWFyID0gbWF0Y2guZ3JvdXAoJ3llYXInKQorICAgICAgICBtb250aF9hYmJyID0gbWF0Y2gu
Z3JvdXAoJ21vbnRoJykKKyAgICAgICAgbW9udGggPSAwCisgICAgICAgIGZvciBpIGluIHJhbmdl
KGxlbihjYWxlbmRhci5tb250aF9hYmJyKSk6CisgICAgICAgICAgICBpZiBjYWxlbmRhci5tb250
aF9hYmJyW2ldID09IG1vbnRoX2FiYnI6CisgICAgICAgICAgICAgICAgbW9udGggPSBpICsgMQor
ICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGRheSA9IG1hdGNoLmdyb3VwKCdkYXknKQor
ICAgICAgICByZXR1cm4gJyUwNGQtJTAyZC0lMDJkJyAlIChpbnQoeWVhciksIG1vbnRoLCBpbnQo
ZGF5KSkKKworICAgIGRlZiBfY29udHJpYnV0b3JfZnJvbV9lbWFpbChzZWxmLCBlbWFpbCk6Cisg
ICAgICAgIGNvbnRyaWJ1dG9yID0gc2VsZi5fY29tbWl0dGVyX2xpc3QuY29udHJpYnV0b3JfYnlf
ZW1haWwoZW1haWwpCisgICAgICAgIHJldHVybiBjb250cmlidXRvciBpZiBjb250cmlidXRvciBl
bHNlIE5vbmUKKworICAgIGRlZiBfcmVjZW50X2NvbW1pdHMoc2VsZiwgc2tpcD1Ob25lLCB1bnJl
dmlld2VkPU5vbmUpOgorCisgICAgICAgIGlmIG5vdCBza2lwOgorICAgICAgICAgICAgc2tpcCA9
IGxhbWJkYSBtLCByOiBOb25lCisKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gc2VsZi5fcmVjZW50
X2NvbW1pdF9tZXNzYWdlcygpOgorCisgICAgICAgICAgICBzZWxmLl9jb21taXRfY291bnQgPSBz
ZWxmLl9jb21taXRfY291bnQgKyAxCisKKyAgICAgICAgICAgICMgRGV0ZXJtaW5lIGNvbW1pdHRl
ciBpZiBwb3NzaWJsZSwgb3RoZXJ3aXNlIHNraXAgY29tbWl0LgorICAgICAgICAgICAgY29tbWl0
dGVyX21hdGNoID0gc2VsZi5fbWF0Y2hfY29tbWl0dGVyLnNlYXJjaChtZXNzYWdlKQorICAgICAg
ICAgICAgaWYgbm90IGNvbW1pdHRlcl9tYXRjaDoKKyAgICAgICAgICAgICAgICBza2lwKG1lc3Nh
Z2UsIHNlbGYuQ0FOVF9ERVRFUk1JTkVfQ09NTUlUVEVSKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisKKyAgICAgICAgICAgICMgRGV0ZXJtaW5lIGNvbW1pdHRlciBlbWFpbCBpZiBwb3NzaWJs
ZSwgb3RoZXJ3aXNlIHNraXAgY29tbWl0LgorICAgICAgICAgICAgY29tbWl0dGVyX2VtYWlsID0g
Y29tbWl0dGVyX21hdGNoLmdyb3VwKCdlbWFpbCcpCisgICAgICAgICAgICBpZiBub3QgY29tbWl0
dGVyX2VtYWlsOgorICAgICAgICAgICAgICAgIHNraXAobWVzc2FnZSwgc2VsZi5DQU5UX0RFVEVS
TUlORV9DT01NSVRURVJfRU1BSUwpCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICAgICAgIyBEZXRlcm1pbmUgaWYgY29tbWl0dGVyIGlzIGEga25vd24gY29udHJpYnV0b3IsIGku
ZS4sIHJlZ2lzdGVyZWQgaW4gY29tbWl0dGVycy5weSwgb3RoZXJ3aXNlIHNraXAgY29tbWl0Lgor
ICAgICAgICAgICAgY29tbWl0dGVyID0gc2VsZi5fY29udHJpYnV0b3JfZnJvbV9lbWFpbChjb21t
aXR0ZXJfZW1haWwpCisgICAgICAgICAgICBpZiBub3QgY29tbWl0dGVyOgorICAgICAgICAgICAg
ICAgIHNraXAobWVzc2FnZSwgc2VsZi5DQU5UX0ZJTkRfQ09NTUlUVEVSKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgRGV0ZXJtaW5lIGNvbW1pdCBkYXRlIGlmIHBv
c3NpYmxlLCBvdGhlcndpc2Ugc2tpcCBjb21taXQuCisgICAgICAgICAgICBjb21taXRfZGF0ZV9t
YXRjaCA9IHNlbGYuX21hdGNoX2RhdGUuc2VhcmNoKG1lc3NhZ2UpCisgICAgICAgICAgICBpZiBu
b3QgY29tbWl0X2RhdGVfbWF0Y2g6CisgICAgICAgICAgICAgICAgc2tpcChtZXNzYWdlLCBzZWxm
LkNBTlRfREVURVJNSU5FX0NPTU1JVF9EQVRFKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgICAgICBjb21taXRfZGF0ZSA9IHNlbGYuX2NvbW1pdF9kYXRlX2Zyb21fbWF0Y2goY29t
bWl0X2RhdGVfbWF0Y2gpCisKKyAgICAgICAgICAgICMgRGV0ZXJtaW5lIHJldmlzaW9uIGlmIHBv
c3NpYmxlLCBvdGhlcndpc2Ugc2tpcCBjb21taXQuCisgICAgICAgICAgICByZXZpc2lvbl9tYXRj
aCA9IHNlbGYuX21hdGNoX3JldmlzaW9uLnNlYXJjaChtZXNzYWdlKQorICAgICAgICAgICAgaWYg
bm90IHJldmlzaW9uX21hdGNoOgorICAgICAgICAgICAgICAgIHNraXAobWVzc2FnZSwgc2VsZi5D
QU5UX0RFVEVSTUlORV9TVk5fSUQpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
ICAgIHJldmlzaW9uID0gcmV2aXNpb25fbWF0Y2guZ3JvdXAoJ3N2bmlkJykKKworICAgICAgICAg
ICAgIyBEZXRlcm1pbmUgYXV0aG9yIGlmIHBvc3NpYmxlLCBvdGhlcndpc2Ugc2tpcCBjb21taXQu
IExvb2sgZm9yICJQYXRjaCBieSIgbGluZSBmaXJzdCwgd2hpY2gKKyAgICAgICAgICAgICMgaXMg
dXNlZCBmb3Igbm9uLWNvbW1pdHRlciBjb250cmlidXRvcnM7IG90aGVyd2lzZSwgdXNlIGNvbW1p
dHRlciBpbmZvIGRldGVybWluZWQgYWJvdmUuCisgICAgICAgICAgICBhdXRob3JfbWF0Y2ggPSBz
ZWxmLl9tYXRjaF9wYXRjaF9ieS5zZWFyY2gobWVzc2FnZSkKKyAgICAgICAgICAgIGlmIG5vdCBh
dXRob3JfbWF0Y2g6CisgICAgICAgICAgICAgICAgYXV0aG9yX21hdGNoID0gY29tbWl0dGVyX21h
dGNoCisgICAgICAgICAgICBpZiBub3QgYXV0aG9yX21hdGNoOgorICAgICAgICAgICAgICAgIHNr
aXAobWVzc2FnZSwgc2VsZi5DQU5UX0RFVEVSTUlORV9BVVRIT1IpCisgICAgICAgICAgICAgICAg
Y29udGludWUKKworICAgICAgICAgICAgIyBEZXRlcm1pbmUgYXV0aG9yIGVtYWlsIGlmIHBvc3Np
YmxlLCBvdGhlcndpc2Ugc2tpcCBjb21taXQuCisgICAgICAgICAgICBhdXRob3JfZW1haWwgPSBh
dXRob3JfbWF0Y2guZ3JvdXAoJ2VtYWlsJykKKyAgICAgICAgICAgIGlmIG5vdCBhdXRob3JfZW1h
aWw6CisgICAgICAgICAgICAgICAgYXV0aG9yX2VtYWlsID0gY29tbWl0dGVyX2VtYWlsCisgICAg
ICAgICAgICAgICAgc2tpcChtZXNzYWdlLCBzZWxmLkNBTlRfREVURVJNSU5FX0FVVEhPUl9FTUFJ
TCkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIERldGVybWluZSBp
ZiBhdXRob3IgaXMgYSBrbm93biBjb250cmlidXRvciwgaS5lLiwgcmVnaXN0ZXJlZCBpbiBjb21t
aXR0ZXJzLnB5LgorICAgICAgICAgICAgY29udHJpYnV0b3IgPSBzZWxmLl9jb250cmlidXRvcl9m
cm9tX2VtYWlsKGF1dGhvcl9lbWFpbCkKKworICAgICAgICAgICAgIyBEZXRlcm1pbmUgYXV0aG9y
IG5hbWUgaWYgcG9zc2libGUsIG90aGVyd2lzZSBza2lwIGNvbW1pdC4KKyAgICAgICAgICAgIGF1
dGhvcl9uYW1lID0gYXV0aG9yX21hdGNoLmdyb3VwKCduYW1lJykgaWYgJ25hbWUnIGluIGF1dGhv
cl9tYXRjaC5ncm91cGRpY3QoKSBlbHNlIE5vbmUKKyAgICAgICAgICAgIGlmIG5vdCBhdXRob3Jf
bmFtZToKKyAgICAgICAgICAgICAgICBhdXRob3JfbmFtZSA9IHNlbGYuX2F1dGhvcl9uYW1lX2Zy
b21fZW1haWwoYXV0aG9yX2VtYWlsKQorICAgICAgICAgICAgaWYgbm90IGF1dGhvcl9uYW1lOgor
ICAgICAgICAgICAgICAgIHNraXAobWVzc2FnZSwgc2VsZi5DQU5UX0RFVEVSTUlORV9BVVRIT1Jf
TkFNRSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIFVzZSBjYW5v
bmljYWwgbmFtZSBpZiBrbm93biBjb250cmlidXRvci4KKyAgICAgICAgICAgIGlmIGNvbnRyaWJ1
dG9yIGFuZCBhdXRob3JfbmFtZSAhPSBjb250cmlidXRvci5mdWxsX25hbWU6CisgICAgICAgICAg
ICAgICAgYXV0aG9yX25hbWUgPSBjb250cmlidXRvci5mdWxsX25hbWUKKworICAgICAgICAgICAg
IyBEZXRlcm1pbmUgcmV2aWV3ZXJzIGlmIHBvc3NpYmxlLCBvdGhlcndpc2Ugb3B0aW9uYWxseSBz
a2lwIGNvbW1pdC4KKyAgICAgICAgICAgIHJldmlld2VyX21hdGNoID0gc2VsZi5fbWF0Y2hfcmV2
aWV3ZWRfYnkuc2VhcmNoKG1lc3NhZ2UpCisgICAgICAgICAgICBpZiBub3QgcmV2aWV3ZXJfbWF0
Y2g6CisgICAgICAgICAgICAgICAgdW5yZXZpZXdlZF9tYXRjaCA9IHNlbGYuX21hdGNoX3VucmV2
aWV3ZWQuc2VhcmNoKG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgaWYgdW5yZXZpZXdlZF9tYXRj
aDoKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uID0gc2VsZi5VTlJFVklFV0VEX01BUktFRAor
ICAgICAgICAgICAgICAgIGVsaWYgY29udHJpYnV0b3I6CisgICAgICAgICAgICAgICAgICAgIGlm
IGNvbnRyaWJ1dG9yLmNhbl9yZXZpZXc6CisgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24g
PSBzZWxmLlVOUkVWSUVXRURfTk9UX01BUktFRF9SRVZJRVdFUgorICAgICAgICAgICAgICAgICAg
ICBlbGlmIGNvbnRyaWJ1dG9yLmNhbl9jb21taXQ6CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZWFzb24gPSBzZWxmLlVOUkVWSUVXRURfTk9UX01BUktFRF9DT01NSVRURVIKKyAgICAgICAgICAg
ICAgICAgICAgZWxpZiBjb250cmlidXRvci5mdWxsX25hbWUgPT0gJ0NvbW1pdCBRdWV1ZSc6Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZWFzb24gPSBzZWxmLlVOUkVWSUVXRURfTk9UX01BUktF
RF9DT01NSVRfUVVFVUUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJlYXNvbiA9IHNlbGYuVU5SRVZJRVdFRF9OT1RfTUFSS0VEX05PVF9DT01NSVRU
RVJfT1JfUkVWSUVXRVIKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg
ICByZWFzb24gPSBzZWxmLlVOUkVWSUVXRURfTk9UX01BUktFRF9OT1RfQ09OVFJJQlVUT1IKKyAg
ICAgICAgICAgICAgICBpZiB1bnJldmlld2VkOgorICAgICAgICAgICAgICAgICAgICB1bnJldmll
d2VkKG1lc3NhZ2UsIHJlYXNvbiwgY29tbWl0dGVyLCByZXZpc2lvbikKKyAgICAgICAgICAgICAg
ICBza2lwKG1lc3NhZ2UsIHJlYXNvbikKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgcmV2aWV3ZXJzID0gcmV2aWV3ZXJfbWF0Y2guZ3JvdXAoJ3Jldmlld2VycycpCisKKyAg
ICAgICAgICAgIHlpZWxkIHsKKyAgICAgICAgICAgICAgICAnY29tbWl0dGVyJzogY29tbWl0dGVy
LAorICAgICAgICAgICAgICAgICdjb21taXRfZGF0ZSc6IGNvbW1pdF9kYXRlLAorICAgICAgICAg
ICAgICAgICdyZXZpc2lvbic6IHJldmlzaW9uLAorICAgICAgICAgICAgICAgICdhdXRob3JfZW1h
aWwnOiBhdXRob3JfZW1haWwsCisgICAgICAgICAgICAgICAgJ2F1dGhvcl9uYW1lJzogYXV0aG9y
X25hbWUsCisgICAgICAgICAgICAgICAgJ2NvbnRyaWJ1dG9yJzogY29udHJpYnV0b3IsCisgICAg
ICAgICAgICAgICAgJ3Jldmlld2Vycyc6IHJldmlld2VycywKKyAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5h
dGlvbnMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5v
bWluYXRpb25zLnB5CmluZGV4IDg0NWI3ODI3MDk2NTIyZDVlMTJmNTBjOWY2MjdiMWVlMzVjZTlk
NzAuLjQ2NmM5MTNhYWIxYTZiZmQ1YjU5Nzg5MTEyM2ViNjc5NDhhMGE0MWUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnMu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21p
bmF0aW9ucy5weQpAQCAtMjcsMTAxICsyNyw1MyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAotZnJvbSBvcHRwYXJzZSBpbXBvcnQgbWFrZV9vcHRpb24KLWltcG9ydCByZQoraW1w
b3J0IG9wdHBhcnNlCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNoYW5nZWxvZyBp
bXBvcnQgQ2hhbmdlTG9nRW50cnkKLWZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0
ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0Ci1mcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IHN0ZXBz
CiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQgam9pbl93aXRoX3NlcGFyYXRvcnMK
LWZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9ydCBDb21tYW5kCitmcm9t
IHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuYWJzdHJhY3Rjb21taXRsb2djb21tYW5kIGltcG9ydCBB
YnN0cmFjdENvbW1pdExvZ0NvbW1hbmQKIAogCi1jbGFzcyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29t
bWFuZCk6CitjbGFzcyBTdWdnZXN0Tm9taW5hdGlvbnMoQWJzdHJhY3RDb21taXRMb2dDb21tYW5k
KToKICAgICBuYW1lID0gInN1Z2dlc3Qtbm9taW5hdGlvbnMiCi0gICAgaGVscF90ZXh0ID0gIlN1
Z2dlc3QgY29udHJpYnV0b3JzIGZvciBjb21taXR0ZXIvcmV2aWV3ZXIgbm9taW5hdGlvbnMiCisg
ICAgaGVscF90ZXh0ID0gIlN1Z2dlc3Qgbm9taW5hdGlvbnMgZm9yIGNvbW1pdHRlci9yZXZpZXdl
ciByb2xlIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBvcHRpb25zID0gWwot
ICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tY29tbWl0dGVyLW1pbmltdW0iLCBhY3Rpb249InN0
b3JlIiwgZGVzdD0iY29tbWl0dGVyX21pbmltdW0iLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTEwLCBo
ZWxwPSJTcGVjaWZ5IG1pbmltdW0gcGF0Y2ggY291bnQgZm9yIENvbW1pdHRlciBub21pbmF0aW9u
cy4iKSwKLSAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLXJldmlld2VyLW1pbmltdW0iLCBhY3Rp
b249InN0b3JlIiwgZGVzdD0icmV2aWV3ZXJfbWluaW11bSIsIHR5cGU9ImludCIsIGRlZmF1bHQ9
ODAsIGhlbHA9IlNwZWNpZnkgbWluaW11bSBwYXRjaCBjb3VudCBmb3IgUmV2aWV3ZXIgbm9taW5h
dGlvbnMuIiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1tYXgtY29tbWl0LWFnZSIsIGFj
dGlvbj0ic3RvcmUiLCBkZXN0PSJtYXhfY29tbWl0X2FnZSIsIHR5cGU9ImludCIsIGRlZmF1bHQ9
OSwgaGVscD0iU3BlY2lmeSBtYXggY29tbWl0IGFnZSB0byBjb25zaWRlciBmb3Igbm9taW5hdGlv
bnMgKGluIG1vbnRocykuIiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1zaG93LWNvbW1p
dHMiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJzaG93X2NvbW1pdHMiLCBkZWZhdWx0PUZh
bHNlLCBoZWxwPSJTaG93IGNvbW1pdCBoaXN0b3J5IHdpdGggbm9taW5hdGlvbiBzdWdnZXN0aW9u
cy4iKSwKKyAgICAgICAgb3B0aW9ucyA9IFtdCisgICAgICAgIG9wdGlvbnMgKz0gc2VsZi5fbm9t
aW5hdGlvbl9vcHRpb25zKCkKKyAgICAgICAgb3B0aW9ucyArPSBzZWxmLl9vdXRwdXRfb3B0aW9u
cygpCisgICAgICAgIHN1cGVyKFN1Z2dlc3ROb21pbmF0aW9ucywgc2VsZikuX19pbml0X18ob3B0
aW9ucz1vcHRpb25zKQorCisgICAgZGVmIF9ub21pbmF0aW9uX29wdGlvbnMoc2VsZik6CisgICAg
ICAgIHJldHVybiBbCisgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1jb21taXR0
ZXItbWluaW11bSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJjb21taXR0ZXJfbWluaW11bSIsIHR5
cGU9ImludCIsIGRlZmF1bHQ9MTAsIGhlbHA9IlNwZWNpZnkgbWluaW11bSBwYXRjaCBjb3VudCBm
b3IgQ29tbWl0dGVyIG5vbWluYXRpb25zLiIpLAorICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9v
cHRpb24oIi0tcmV2aWV3ZXItbWluaW11bSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJyZXZpZXdl
cl9taW5pbXVtIiwgdHlwZT0iaW50IiwgZGVmYXVsdD04MCwgaGVscD0iU3BlY2lmeSBtaW5pbXVt
IHBhdGNoIGNvdW50IGZvciBSZXZpZXdlciBub21pbmF0aW9ucy4iKSwKICAgICAgICAgXQogCi0g
ICAgICAgIENvbW1hbmQuX19pbml0X18oc2VsZiwgb3B0aW9ucz1vcHRpb25zKQotICAgICAgICAj
IEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBvbiB0aGUgdG9vbCBzb21ld2hlcmUuCi0g
ICAgICAgIHNlbGYuX2NvbW1pdHRlcl9saXN0ID0gQ29tbWl0dGVyTGlzdCgpCi0KLSAgICBfY291
bnRlcnNfYnlfbmFtZSA9IHt9Ci0gICAgX2NvdW50ZXJzX2J5X2VtYWlsID0ge30KKyAgICBkZWYg
X291dHB1dF9vcHRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgb3B0
cGFyc2UubWFrZV9vcHRpb24oIi0tc2hvdy1jb21taXRzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwg
ZGVzdD0ic2hvd19jb21taXRzIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iU2hvdyBjb21taXQgaGlz
dG9yeSB3aXRoIG5vbWluYXRpb25zLiIpLAorICAgICAgICBdCiAKICAgICBkZWYgX2luaXRfb3B0
aW9ucyhzZWxmLCBvcHRpb25zKToKKyAgICAgICAgc3VwZXIoU3VnZ2VzdE5vbWluYXRpb25zLCBz
ZWxmKS5faW5pdF9vcHRpb25zKG9wdGlvbnMpCiAgICAgICAgIHNlbGYuY29tbWl0dGVyX21pbmlt
dW0gPSBvcHRpb25zLmNvbW1pdHRlcl9taW5pbXVtCiAgICAgICAgIHNlbGYucmV2aWV3ZXJfbWlu
aW11bSA9IG9wdGlvbnMucmV2aWV3ZXJfbWluaW11bQotICAgICAgICBzZWxmLm1heF9jb21taXRf
YWdlID0gb3B0aW9ucy5tYXhfY29tbWl0X2FnZQogICAgICAgICBzZWxmLnNob3dfY29tbWl0cyA9
IG9wdGlvbnMuc2hvd19jb21taXRzCi0gICAgICAgIHNlbGYudmVyYm9zZSA9IG9wdGlvbnMudmVy
Ym9zZQotCi0gICAgIyBGSVhNRTogVGhpcyBzaG91bGQgbW92ZSB0byBzY20ucHkKLSAgICBkZWYg
X3JlY2VudF9jb21taXRfbWVzc2FnZXMoc2VsZik6Ci0gICAgICAgIGdpdF9sb2cgPSBzZWxmLl90
b29sLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ2dpdCcsICdsb2cnLCAnLS1zaW5jZT0iJXMgbW9u
dGhzIGFnbyInICUgc2VsZi5tYXhfY29tbWl0X2FnZV0pCi0gICAgICAgIG1hdGNoX2dpdF9zdm5f
aWQgPSByZS5jb21waWxlKHIiXG5cbiAgICBnaXQtc3ZuLWlkOi4qXG4iLCByZS5NVUxUSUxJTkUp
Ci0gICAgICAgIG1hdGNoX2dldF9sb2dfbGluZXMgPSByZS5jb21waWxlKHIiXlxTLipcbiIsIHJl
Lk1VTFRJTElORSkKLSAgICAgICAgbWF0Y2hfbGVhZGluZ19pbmRlbnQgPSByZS5jb21waWxlKHIi
XlsgXXs0fSIsIHJlLk1VTFRJTElORSkKLQotICAgICAgICBtZXNzYWdlcyA9IHJlLnNwbGl0KHIi
Y29tbWl0IFx3ezQwfSIsIGdpdF9sb2cpWzE6XSAgIyBJZ25vcmUgdGhlIGZpcnN0IG1lc3NhZ2Ug
d2hpY2ggd2lsbCBiZSBlbXB0eS4KLSAgICAgICAgZm9yIG1lc3NhZ2UgaW4gbWVzc2FnZXM6Ci0g
ICAgICAgICAgICAjIFJlbW92ZSBhbnkgbGluZXMgZnJvbSBnaXQgYW5kIHVuaW5kZW50IGFsbCB0
aGUgbGluZXMKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNoX2dpdF9zdm5faWQuc3Vi
bigiIiwgbWVzc2FnZSkKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNoX2dldF9sb2df
bGluZXMuc3VibigiIiwgbWVzc2FnZSkKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNo
X2xlYWRpbmdfaW5kZW50LnN1Ym4oIiIsIG1lc3NhZ2UpCi0gICAgICAgICAgICB5aWVsZCBtZXNz
YWdlLmxzdHJpcCgpICAjIFJlbW92ZSBhbnkgbGVhZGluZyBuZXdsaW5lcyBmcm9tIHRoZSBsb2cg
bWVzc2FnZS4KLQotICAgICMgZS5nLiBQYXRjaCBieSBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPiBvbiAyMDExLTA5LTE1Ci0gICAgcGF0Y2hfYnlfcmVnZXhwID0gcideUGF0Y2ggYnkgKD9Q
PG5hbWU+Lis/KVxzKzwoP1A8ZW1haWw+W148Pl0rKT4gb24gKD9QPGRhdGU+XGR7NH0tXGR7Mn0t
XGR7Mn0pJCcKIAogICAgIGRlZiBfY291bnRfcmVjZW50X3BhdGNoZXMoc2VsZik6Ci0gICAgICAg
ICMgVGhpcyBlbnRpcmUgYmxvY2sgY291bGQgYmUgd3JpdHRlbiBhcyBhIG1hcC9yZWR1Y2Ugb3Zl
ciB0aGUgbWVzc2FnZXMuCi0gICAgICAgIGZvciBtZXNzYWdlIGluIHNlbGYuX3JlY2VudF9jb21t
aXRfbWVzc2FnZXMoKToKLSAgICAgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBDaGFu
Z2VMb2dFbnRyeSB0byBkbyB0aGUgZW50aXJlIHBhcnNlIGluc3RlYWQKLSAgICAgICAgICAgICMg
b2YgZ3JhYmJpbmcgYXQgaXRzIHJlZ2V4cHMuCi0gICAgICAgICAgICBkYXRlbGluZV9tYXRjaCA9
IHJlLm1hdGNoKENoYW5nZUxvZ0VudHJ5LmRhdGVfbGluZV9yZWdleHAsIG1lc3NhZ2UsIHJlLk1V
TFRJTElORSkKLSAgICAgICAgICAgIGlmIG5vdCBkYXRlbGluZV9tYXRjaDoKLSAgICAgICAgICAg
ICAgICAjIE1vZGVybiBjb21taXQgbWVzc2FnZXMgZG9uJ3QganVzdCBkdW1wIHRoZSBDaGFuZ2VM
b2cgZW50cnksIGJ1dCByYXRoZXIKLSAgICAgICAgICAgICAgICAjIGhhdmUgYSBzcGVjaWFsIFBh
dGNoIGJ5IGxpbmUgZm9yIG5vbi1jb21taXR0ZXJzLgotICAgICAgICAgICAgICAgIGRhdGVsaW5l
X21hdGNoID0gcmUuc2VhcmNoKHNlbGYucGF0Y2hfYnlfcmVnZXhwLCBtZXNzYWdlLCByZS5NVUxU
SUxJTkUpCi0gICAgICAgICAgICAgICAgaWYgbm90IGRhdGVsaW5lX21hdGNoOgotICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBhdXRob3JfZW1haWwgPSBkYXRlbGlu
ZV9tYXRjaC5ncm91cCgiZW1haWwiKQotICAgICAgICAgICAgaWYgbm90IGF1dGhvcl9lbWFpbDoK
LSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBjb3VudGVyc19ieV9uYW1lID0ge30K
KyAgICAgICAgY291bnRlcnNfYnlfZW1haWwgPSB7fQogCi0gICAgICAgICAgICAjIFdlIG9ubHkg
Y2FyZSBhYm91dCByZXZpZXdlZCBwYXRjaGVzLCBzbyBtYWtlIHN1cmUgaXQgaGFzIGEgdmFsaWQg
cmV2aWV3ZXIgbGluZS4KLSAgICAgICAgICAgIHJldmlld2VyX21hdGNoID0gcmUuc2VhcmNoKENo
YW5nZUxvZ0VudHJ5LnJldmlld2VkX2J5X3JlZ2V4cCwgbWVzc2FnZSwgcmUuTVVMVElMSU5FKQot
ICAgICAgICAgICAgIyBXZSBtaWdodCBhbHNvIHdhbnQgdG8gdmFsaWRhdGUgdGhlIHJldmlld2Vy
IG5hbWUgYWdhaW5zdCB0aGUgY29tbWl0dGVyIGxpc3QuCi0gICAgICAgICAgICBpZiBub3QgcmV2
aWV3ZXJfbWF0Y2ggb3Igbm90IHJldmlld2VyX21hdGNoLmdyb3VwKCJyZXZpZXdlciIpOgotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGZvciBjb21taXQgaW4gc2VsZi5fcmVjZW50
X2NvbW1pdHMoKToKIAotICAgICAgICAgICAgYXV0aG9yX25hbWUgPSBkYXRlbGluZV9tYXRjaC5n
cm91cCgibmFtZSIpCi0gICAgICAgICAgICBpZiBub3QgYXV0aG9yX25hbWU6Ci0gICAgICAgICAg
ICAgICAgY29udGludWUKLQotICAgICAgICAgICAgaWYgcmUuc2VhcmNoKCIoW15hLXpBLVpdYW5k
W15hLXpBLVpdKXwoLCl8KEApIiwgYXV0aG9yX25hbWUpOgotICAgICAgICAgICAgICAgICMgVGhp
cyBlbnRyeSBzZWVtcyB0byBoYXZlIG11bHRpcGxlIHJldmlld2Vycywgb3IgaW52YWxpZCBjaGFy
YWN0ZXJzLCBzbyByZWplY3QgaXQuCi0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAg
ICAgICAgc3ZuX2lkX21hdGNoID0gcmUuc2VhcmNoKENoYW5nZUxvZ0VudHJ5LnN2bl9pZF9yZWdl
eHAsIG1lc3NhZ2UsIHJlLk1VTFRJTElORSkKLSAgICAgICAgICAgIGlmIHN2bl9pZF9tYXRjaDoK
LSAgICAgICAgICAgICAgICBzdm5faWQgPSBzdm5faWRfbWF0Y2guZ3JvdXAoInN2bmlkIikKLSAg
ICAgICAgICAgIGlmIG5vdCBzdm5faWRfbWF0Y2ggb3Igbm90IHN2bl9pZDoKLSAgICAgICAgICAg
ICAgICBzdm5faWQgPSAidW5rbm93biIKLSAgICAgICAgICAgIGNvbW1pdF9kYXRlID0gZGF0ZWxp
bmVfbWF0Y2guZ3JvdXAoImRhdGUiKQorICAgICAgICAgICAgbmFtZSA9IGNvbW1pdFsnYXV0aG9y
X25hbWUnXQorICAgICAgICAgICAgZW1haWwgPSBjb21taXRbJ2F1dGhvcl9lbWFpbCddCisgICAg
ICAgICAgICBkYXRlID0gY29tbWl0Wydjb21taXRfZGF0ZSddCisgICAgICAgICAgICByZXZpc2lv
biA9IGNvbW1pdFsncmV2aXNpb24nXQogCiAgICAgICAgICAgICAjIFNlZSBpZiB3ZSBhbHJlYWR5
IGhhdmUgYSBjb250cmlidXRvciB3aXRoIHRoaXMgbmFtZSBvciBlbWFpbAotICAgICAgICAgICAg
Y291bnRlcl9ieV9uYW1lID0gc2VsZi5fY291bnRlcnNfYnlfbmFtZS5nZXQoYXV0aG9yX25hbWUp
Ci0gICAgICAgICAgICBjb3VudGVyX2J5X2VtYWlsID0gc2VsZi5fY291bnRlcnNfYnlfZW1haWwu
Z2V0KGF1dGhvcl9lbWFpbCkKKyAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFtZSA9IGNvdW50ZXJz
X2J5X25hbWUuZ2V0KG5hbWUpCisgICAgICAgICAgICBjb3VudGVyX2J5X2VtYWlsID0gY291bnRl
cnNfYnlfZW1haWwuZ2V0KGVtYWlsKQogICAgICAgICAgICAgaWYgY291bnRlcl9ieV9uYW1lOgog
ICAgICAgICAgICAgICAgIGlmIGNvdW50ZXJfYnlfZW1haWw6CiAgICAgICAgICAgICAgICAgICAg
IGlmIGNvdW50ZXJfYnlfbmFtZSAhPSBjb3VudGVyX2J5X2VtYWlsOgpAQCAtMTMyLDMxICs4NCwz
MSBAQCBjbGFzcyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb3VudGVyX2J5X25hbWVbJ25hbWVzJ10gfD0gY291bnRlcl9ieV9lbWFpbFsnbmFt
ZXMnXQogICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9ieV9uYW1lWydlbWFpbHMnXSB8
PSBjb3VudGVyX2J5X2VtYWlsWydlbWFpbHMnXQogICAgICAgICAgICAgICAgICAgICAgICAgY291
bnRlcl9ieV9uYW1lWydjb3VudCddICs9IGNvdW50ZXJfYnlfZW1haWwuZ2V0KCdjb3VudCcsIDAp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3VudGVyc19ieV9lbWFpbFthdXRob3Jf
ZW1haWxdID0gY291bnRlcl9ieV9uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVy
c19ieV9lbWFpbFtlbWFpbF0gPSBjb3VudGVyX2J5X25hbWUKICAgICAgICAgICAgICAgICBlbHNl
OgogICAgICAgICAgICAgICAgICAgICAjIEFkZCBlbWFpbCB0byB0aGUgZXhpc3RpbmcgY291bnRl
cgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3VudGVyc19ieV9lbWFpbFthdXRob3JfZW1h
aWxdID0gY291bnRlcl9ieV9uYW1lCi0gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFt
ZVsnZW1haWxzJ10gfD0gc2V0KFthdXRob3JfZW1haWxdKQorICAgICAgICAgICAgICAgICAgICBj
b3VudGVyc19ieV9lbWFpbFtlbWFpbF0gPSBjb3VudGVyX2J5X25hbWUKKyAgICAgICAgICAgICAg
ICAgICAgY291bnRlcl9ieV9uYW1lWydlbWFpbHMnXSB8PSBzZXQoW2VtYWlsXSkKICAgICAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgaWYgY291bnRlcl9ieV9lbWFpbDoKICAgICAgICAg
ICAgICAgICAgICAgIyBBZGQgbmFtZSB0byB0aGUgZXhpc3RpbmcgY291bnRlcgotICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9jb3VudGVyc19ieV9uYW1lW2F1dGhvcl9uYW1lXSA9IGNvdW50ZXJf
YnlfZW1haWwKLSAgICAgICAgICAgICAgICAgICAgY291bnRlcl9ieV9lbWFpbFsnbmFtZXMnXSB8
PSBzZXQoW2F1dGhvcl9uYW1lXSkKKyAgICAgICAgICAgICAgICAgICAgY291bnRlcnNfYnlfbmFt
ZVtuYW1lXSA9IGNvdW50ZXJfYnlfZW1haWwKKyAgICAgICAgICAgICAgICAgICAgY291bnRlcl9i
eV9lbWFpbFsnbmFtZXMnXSB8PSBzZXQoW25hbWVdKQogICAgICAgICAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICAgICAgICAgICMgQ3JlYXRlIG5ldyBjb3VudGVyCi0gICAgICAgICAgICAgICAg
ICAgIG5ld19jb3VudGVyID0geyduYW1lcyc6IHNldChbYXV0aG9yX25hbWVdKSwgJ2VtYWlscyc6
IHNldChbYXV0aG9yX2VtYWlsXSksICdsYXRlc3RfbmFtZSc6IGF1dGhvcl9uYW1lLCAnbGF0ZXN0
X2VtYWlsJzogYXV0aG9yX2VtYWlsLCAnY29tbWl0cyc6ICIifQotICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9jb3VudGVyc19ieV9uYW1lW2F1dGhvcl9uYW1lXSA9IG5ld19jb3VudGVyCi0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2NvdW50ZXJzX2J5X2VtYWlsW2F1dGhvcl9lbWFpbF0gPSBu
ZXdfY291bnRlcgorICAgICAgICAgICAgICAgICAgICBuZXdfY291bnRlciA9IHsnbmFtZXMnOiBz
ZXQoW25hbWVdKSwgJ2VtYWlscyc6IHNldChbZW1haWxdKSwgJ2xhdGVzdF9uYW1lJzogbmFtZSwg
J2xhdGVzdF9lbWFpbCc6IGVtYWlsLCAnY29tbWl0cyc6ICIifQorICAgICAgICAgICAgICAgICAg
ICBjb3VudGVyc19ieV9uYW1lW25hbWVdID0gbmV3X2NvdW50ZXIKKyAgICAgICAgICAgICAgICAg
ICAgY291bnRlcnNfYnlfZW1haWxbZW1haWxdID0gbmV3X2NvdW50ZXIKIAotICAgICAgICAgICAg
YXNzZXJ0KHNlbGYuX2NvdW50ZXJzX2J5X25hbWVbYXV0aG9yX25hbWVdID09IHNlbGYuX2NvdW50
ZXJzX2J5X2VtYWlsW2F1dGhvcl9lbWFpbF0pCi0gICAgICAgICAgICBjb3VudGVyID0gc2VsZi5f
Y291bnRlcnNfYnlfbmFtZVthdXRob3JfbmFtZV0KKyAgICAgICAgICAgIGFzc2VydChjb3VudGVy
c19ieV9uYW1lW25hbWVdID09IGNvdW50ZXJzX2J5X2VtYWlsW2VtYWlsXSkKKyAgICAgICAgICAg
IGNvdW50ZXIgPSBjb3VudGVyc19ieV9uYW1lW25hbWVdCiAgICAgICAgICAgICBjb3VudGVyWydj
b3VudCddID0gY291bnRlci5nZXQoJ2NvdW50JywgMCkgKyAxCiAKLSAgICAgICAgICAgIGlmIHN2
bl9pZC5pc2RpZ2l0KCk6Ci0gICAgICAgICAgICAgICAgc3ZuX2lkID0gImh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LyIgKyBzdm5faWQKLSAgICAgICAgICAgIGNvdW50ZXJbJ2NvbW1p
dHMnXSArPSAiICBjb21taXQ6ICVzIG9uICVzIGJ5ICVzICglcylcbiIgJSAoc3ZuX2lkLCBjb21t
aXRfZGF0ZSwgYXV0aG9yX25hbWUsIGF1dGhvcl9lbWFpbCkKKyAgICAgICAgICAgIGlmIHJldmlz
aW9uLmlzZGlnaXQoKToKKyAgICAgICAgICAgICAgICByZXZpc2lvbiA9ICJodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8iICsgcmV2aXNpb24KKyAgICAgICAgICAgIGNvdW50ZXJbJ2Nv
bW1pdHMnXSArPSAiICBjb21taXQ6ICVzIG9uICVzIGJ5ICVzICglcylcbiIgJSAocmV2aXNpb24s
IGRhdGUsIG5hbWUsIGVtYWlsKQogCi0gICAgICAgIHJldHVybiBzZWxmLl9jb3VudGVyc19ieV9l
bWFpbAorICAgICAgICByZXR1cm4gY291bnRlcnNfYnlfZW1haWwKIAogICAgIGRlZiBfY29sbGVj
dF9ub21pbmF0aW9ucyhzZWxmLCBjb3VudGVyc19ieV9lbWFpbCk6CiAgICAgICAgIG5vbWluYXRp
b25zID0gW10KQEAgLTE3Miw3ICsxMjQsNyBAQCBjbGFzcyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29t
bWFuZCk6CiAKICAgICAgICAgICAgIGlmIHBhdGNoX2NvdW50ID49IHNlbGYuY29tbWl0dGVyX21p
bmltdW0gYW5kIChub3QgY29udHJpYnV0b3Igb3Igbm90IGNvbnRyaWJ1dG9yLmNhbl9jb21taXQp
OgogICAgICAgICAgICAgICAgIHJvbGVzLmFwcGVuZCgiY29tbWl0dGVyIikKLSAgICAgICAgICAg
IGlmIHBhdGNoX2NvdW50ID49IHNlbGYucmV2aWV3ZXJfbWluaW11bSAgYW5kIChub3QgY29udHJp
YnV0b3Igb3Igbm90IGNvbnRyaWJ1dG9yLmNhbl9yZXZpZXcpOgorICAgICAgICAgICAgaWYgcGF0
Y2hfY291bnQgPj0gc2VsZi5yZXZpZXdlcl9taW5pbXVtIGFuZCBjb250cmlidXRvciBhbmQgY29u
dHJpYnV0b3IuY2FuX2NvbW1pdCBhbmQgbm90IGNvbnRyaWJ1dG9yLmNhbl9yZXZpZXc6CiAgICAg
ICAgICAgICAgICAgcm9sZXMuYXBwZW5kKCJyZXZpZXdlciIpCiAgICAgICAgICAgICBpZiByb2xl
czoKICAgICAgICAgICAgICAgICBub21pbmF0aW9ucy5hcHBlbmQoewpAQCAtMTgzLDcgKzEzNSw3
IEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKICAgICAgICAgICAgICAgICB9
KQogICAgICAgICByZXR1cm4gbm9taW5hdGlvbnMKIAotICAgIGRlZiBfcHJpbnRfbm9taW5hdGlv
bnMoc2VsZiwgbm9taW5hdGlvbnMpOgorICAgIGRlZiBfcHJpbnRfbm9taW5hdGlvbnMoc2VsZiwg
bm9taW5hdGlvbnMsIGNvdW50ZXJzX2J5X2VtYWlsKToKICAgICAgICAgZGVmIG5vbWluYXRpb25f
Y21wKGFfbm9taW5hdGlvbiwgYl9ub21pbmF0aW9uKToKICAgICAgICAgICAgIHJvbGVzX3Jlc3Vs
dCA9IGNtcChhX25vbWluYXRpb25bJ3JvbGVzJ10sIGJfbm9taW5hdGlvblsncm9sZXMnXSkKICAg
ICAgICAgICAgIGlmIHJvbGVzX3Jlc3VsdDoKQEAgLTE5Nyw3ICsxNDksNyBAQCBjbGFzcyBTdWdn
ZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAgICAgICAgICAgICAjIFRoaXMgaXMgYSBsaXR0bGUg
Yml0IG9mIGEgaGFjaywgYnV0IGl0cyBjb252aWVuZW50IHRvIGp1c3QgcGFzcyB0aGUgbm9taW5h
dGlvbiBkaWN0aW9uYXJ5IHRvIHRoZSBmb3JtYXRpbmcgb3BlcmF0b3IuCiAgICAgICAgICAgICBu
b21pbmF0aW9uWydyb2xlc19zdHJpbmcnXSA9IGpvaW5fd2l0aF9zZXBhcmF0b3JzKG5vbWluYXRp
b25bJ3JvbGVzJ10pLnVwcGVyKCkKICAgICAgICAgICAgIHByaW50ICIlKHJvbGVzX3N0cmluZylz
OiAlKGF1dGhvcl9uYW1lKXMgKCUoYXV0aG9yX2VtYWlsKXMpIGhhcyAlKHBhdGNoX2NvdW50KXMg
cmV2aWV3ZWQgcGF0Y2hlcyIgJSBub21pbmF0aW9uCi0gICAgICAgICAgICBjb3VudGVyID0gc2Vs
Zi5fY291bnRlcnNfYnlfZW1haWxbbm9taW5hdGlvblsnYXV0aG9yX2VtYWlsJ11dCisgICAgICAg
ICAgICBjb3VudGVyID0gY291bnRlcnNfYnlfZW1haWxbbm9taW5hdGlvblsnYXV0aG9yX2VtYWls
J11dCiAKICAgICAgICAgICAgIGlmIHNlbGYuc2hvd19jb21taXRzOgogICAgICAgICAgICAgICAg
IHByaW50IGNvdW50ZXJbJ2NvbW1pdHMnXQpAQCAtMjM4LDEwICsxOTAsOSBAQCBjbGFzcyBTdWdn
ZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAgICAgICAgIHNlbGYuX2luaXRfb3B0aW9ucyhvcHRp
b25zKQogICAgICAgICBwYXRjaF9jb3VudHMgPSBzZWxmLl9jb3VudF9yZWNlbnRfcGF0Y2hlcygp
CiAgICAgICAgIG5vbWluYXRpb25zID0gc2VsZi5fY29sbGVjdF9ub21pbmF0aW9ucyhwYXRjaF9j
b3VudHMpCi0gICAgICAgIHNlbGYuX3ByaW50X25vbWluYXRpb25zKG5vbWluYXRpb25zKQorICAg
ICAgICBzZWxmLl9wcmludF9ub21pbmF0aW9ucyhub21pbmF0aW9ucywgcGF0Y2hfY291bnRzKQog
ICAgICAgICBpZiBzZWxmLnZlcmJvc2U6CiAgICAgICAgICAgICBzZWxmLl9wcmludF9jb3VudHMo
cGF0Y2hfY291bnRzKQogCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgU3VnZ2Vz
dE5vbWluYXRpb25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zX3VuaXR0ZXN0LnB5CmluZGV4
IDg4YmUyNTMwMzk1OTIzZWI2N2U5NmU0ODUwODNjOTM4ZTZjMzE3MWMuLmIyNGRlZjZmYTNlOTVh
OTMzYThjYmNkZjFmMDMyMzgwM2JiYmRhZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnNfdW5pdHRlc3QucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9uc191
bml0dGVzdC5weQpAQCAtNDUsMjEgKzQ1LDQ0IEBAIERhdGU6ICAgVGh1IFNlcCAxNSAxOTo1Njoy
MSAyMDExICswMDAwCiAKICAgICBnaXQtc3ZuLWlkOiBodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVw
b3NpdG9yeS93ZWJraXQvdHJ1bmtAOTUyMTkgMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkx
YjRkYmZjCiAiIiIKLSAgICBtb2NrX3NhbWVfYXV0aG9yX2NvbW1pdF9tZXNzYWdlID0gIiIiVmFs
dWUgcHJvZmlsZXMgY29sbGVjdCBubyBpbmZvcm1hdGlvbiBmb3IgZ2xvYmFsIHZhcmlhYmxlcwor
ICAgIG1vY2tfc2FtZV9hdXRob3JfY29tbWl0X21lc3NhZ2UgPSAiIiJBdXRob3I6IGZwaXpsb0Bh
cHBsZS5jb20gPGZwaXpsb0BhcHBsZS5jb21AMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkx
YjRkYmZjPgorRGF0ZTogICBUaHUgU2VwIDE1IDE5OjU2OjIxIDIwMTEgKzAwMDAKKworVmFsdWUg
cHJvZmlsZXMgY29sbGVjdCBubyBpbmZvcm1hdGlvbiBmb3IgZ2xvYmFsIHZhcmlhYmxlcwogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MTQzCiAKLVJldmlld2VkIGJ5
IEdlb2ZmcmV5IEdhcmVuLiIiIgorUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKK2dpdC1z
dm4taWQ6IGh0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVua0A5NTIx
OSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKKyIiIgorCisgICAgZGVmIF9t
YWtlX29wdGlvbnMoc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICBkZWZhdWx0cyA9IHsKKyAgICAg
ICAgICAgICdjb21taXR0ZXJfbWluaW11bSc6IDEwLAorICAgICAgICAgICAgJ21heF9jb21taXRf
YWdlJzogOSwKKyAgICAgICAgICAgICdyZXZpZXdlcl9taW5pbXVtJzogODAsCisgICAgICAgICAg
ICAnc2hvd19jb21taXRzJzogRmFsc2UsCisgICAgICAgICAgICAndmVyYm9zZSc6IEZhbHNlLAor
ICAgICAgICB9CisgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucygqKmRlZmF1bHRzKQorICAg
ICAgICBvcHRpb25zLnVwZGF0ZSgqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIG9wdGlvbnMKIAog
ICAgIGRlZiB0ZXN0X3JlY2VudF9jb21taXRfbWVzc2FnZXMoc2VsZik6CisgICAgICAgIHNlbGYu
bWF4RGlmZiA9IE5vbmUKICAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKICAgICAgICAgc3VnZ2Vz
dF9ub21pbmF0aW9ucyA9IFN1Z2dlc3ROb21pbmF0aW9ucygpCi0gICAgICAgIHN1Z2dlc3Rfbm9t
aW5hdGlvbnMuX2luaXRfb3B0aW9ucyhvcHRpb25zPU1vY2tPcHRpb25zKHJldmlld2VyX21pbmlt
dW09ODAsIGNvbW1pdHRlcl9taW5pbXVtPTEwLCBtYXhfY29tbWl0X2FnZT05LCBzaG93X2NvbW1p
dHM9RmFsc2UsIHZlcmJvc2U9RmFsc2UpKQorICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zLl9p
bml0X29wdGlvbnMob3B0aW9ucz1zZWxmLl9tYWtlX29wdGlvbnMoKSkKICAgICAgICAgc3VnZ2Vz
dF9ub21pbmF0aW9ucy5iaW5kX3RvX3Rvb2wodG9vbCkKIAogICAgICAgICB0b29sLmV4ZWN1dGl2
ZS5ydW5fY29tbWFuZCA9IGxhbWJkYSBjb21tYW5kOiBzZWxmLm1vY2tfZ2l0X291dHB1dAogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3VnZ2VzdF9ub21pbmF0aW9ucy5fcmVjZW50X2Nv
bW1pdF9tZXNzYWdlcygpKSwgW3NlbGYubW9ja19zYW1lX2F1dGhvcl9jb21taXRfbWVzc2FnZV0p
CiAKLSAgICBtb2NrX25vbl9jb21taXR0ZXJfY29tbWl0X21lc3NhZ2UgPSAiIiJMZXQgVGVzdFdl
YktpdEFQSSB3b3JrIGZvciBjaHJvbWl1bQorICAgIG1vY2tfbm9uX2NvbW1pdHRlcl9jb21taXRf
bWVzc2FnZSA9ICIiIgorQXV0aG9yOiBjb21taXQtcXVldWVAd2Via2l0Lm9yZyA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmdAMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjPgorRGF0
ZTogICBUaHUgU2VwIDE1IDE0OjA4OjQyIDIwMTEgKzAwMDAKKworTGV0IFRlc3RXZWJLaXRBUEkg
d29yayBmb3IgY2hyb21pdW0KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Nzc1NgogCiBQYXRjaCBieSBYaWFuemh1IFdhbmcgPHdhbmd4aWFuemh1QGNocm9taXVtLm9y
Zz4gb24gMjAxMS0wOS0xNQpAQCAtNjcsMTEgKzkwLDE1IEBAIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCiAKIFNvdXJjZS9XZWJLaXQvY2hyb21pdW06CiAKLSogV2ViS2l0Lmd5cDoiIiIKKyogV2Vi
S2l0Lmd5cDoKKworZ2l0LXN2bi1pZDogaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkv
d2Via2l0L3RydW5rQDk1MTg4IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYwor
IiIiCiAKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0
ID0gIlJFVklFV0VSOiBYaWFuemh1IFdhbmcgKHdhbmd4aWFuemh1QGNocm9taXVtLm9yZykgaGFz
IDg4IHJldmlld2VkIHBhdGNoZXNcbiIKKyAgICAgICAgb3B0aW9ucyA9IHNlbGYuX21ha2Vfb3B0
aW9ucygpCiAgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMgPSBTdWdnZXN0Tm9taW5hdGlvbnMo
KQotICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zLl9pbml0X29wdGlvbnMob3B0aW9ucz1Nb2Nr
T3B0aW9ucyhyZXZpZXdlcl9taW5pbXVtPTgwLCBjb21taXR0ZXJfbWluaW11bT0xMCwgbWF4X2Nv
bW1pdF9hZ2U9OSwgc2hvd19jb21taXRzPUZhbHNlLCB2ZXJib3NlPUZhbHNlKSkKKyAgICAgICAg
c3VnZ2VzdF9ub21pbmF0aW9ucy5faW5pdF9vcHRpb25zKG9wdGlvbnM9b3B0aW9ucykKICAgICAg
ICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5fcmVjZW50X2NvbW1pdF9tZXNzYWdlcyA9IGxhbWJkYTog
W3NlbGYubW9ja19ub25fY29tbWl0dGVyX2NvbW1pdF9tZXNzYWdlIGZvciBfIGluIHJhbmdlKDg4
KV0KLSAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKHN1Z2dlc3Rfbm9taW5hdGlv
bnMsIFtdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBvcHRpb25zPU1vY2tPcHRp
b25zKHJldmlld2VyX21pbmltdW09ODAsIGNvbW1pdHRlcl9taW5pbXVtPTEwLCBtYXhfY29tbWl0
X2FnZT05LCBzaG93X2NvbW1pdHM9RmFsc2UsIHZlcmJvc2U9RmFsc2UpKQorICAgICAgICBzZWxm
LmFzc2VydF9leGVjdXRlX291dHB1dHMoc3VnZ2VzdF9ub21pbmF0aW9ucywgW10sIGV4cGVjdGVk
X3N0ZG91dD1leHBlY3RlZF9zdGRvdXQsIG9wdGlvbnM9b3B0aW9ucykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200036</attachid>
            <date>2013-04-29 12:10:56 -0700</date>
            <delta_ts>2013-04-29 16:31:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115285-20130429121012.patch</filename>
            <type>text/plain</type>
            <size>28474</size>
            <attacher name="Glenn Adams">glenn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MjM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2UxZTU5N2IyZGZlOGM3ZmY4MjMyODBhMmQ2ODY5ODcz
MTFhN2JlOC4uMmU3ZmFmZGRiZWVlNDAwNDVmYmQ0MGE5N2E2MWY1MjExMTY5YWVhYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDEzLTA0LTI5ICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CisKKyAgICAg
ICAgW3dlYmtpdHB5XSBzdWdnZXN0LW5vbWluYXRpb25zIGRvZXNuJ3QgY291bnQgYWxsIHF1YWxp
ZmllZCBwYXRjaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTUyODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXggY29tbWl0IGFuYWx5c2lzIHNvIHRoYXQgcGF0Y2hlcyBtYWRlIGJ5IGFuIGV4aXN0
aW5nIGNvbW1pdHRlciBhcmUgY291bnRlZCB0b3dhcmRzIHJldmlld2VyCisgICAgICAgIG5vbWlu
YXRpb24uIEltcHJvdmUgY29tbWl0IGxvZyBwYXJzaW5nLgorCisgICAgICAgIEFkZCBtaXNzaW5n
IGVtYWlsIGFkZHJlc3NlcyBpbiBjb250cmlidXRvcnMgbGlzdCB0byBhY2NvdW50IGZvciBleGlz
dGluZyBsb2cgZW50cmllcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2Nv
bmZpZy9jb250cmlidXRvcnMuanNvbjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5OgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRp
b25zKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5fX2luaXRfXyk6CisgICAgICAgIChT
dWdnZXN0Tm9taW5hdGlvbnMuX3JlY2VudF9jb21taXRfbWVzc2FnZXMpOgorICAgICAgICAoU3Vn
Z2VzdE5vbWluYXRpb25zLl9hdXRob3JfbmFtZV9mcm9tX2VtYWlsKToKKyAgICAgICAgKFN1Z2dl
c3ROb21pbmF0aW9ucy5fY29tbWl0X2RhdGVfZnJvbV9tYXRjaCk6CisgICAgICAgIChTdWdnZXN0
Tm9taW5hdGlvbnMuX2NvbnRyaWJ1dG9yX2Zyb21fZW1haWwpOgorICAgICAgICAoU3VnZ2VzdE5v
bWluYXRpb25zLl9yZWNlbnRfY29tbWl0cyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMu
X2NvdW50X3JlY2VudF9wYXRjaGVzKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5fY29s
bGVjdF9ub21pbmF0aW9ucyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMuX3ByaW50X25v
bWluYXRpb25zKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5leGVjdXRlKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAoX21ha2Vfb3B0aW9ucyk6CisgICAgICAgICh0ZXN0X3JlY2Vu
dF9jb21taXRfbWVzc2FnZXMpOgorICAgICAgICAodGVzdF9iYXNpYyk6CisKIDIwMTMtMDQtMjYg
IFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEJ1
aWxkIGJyZWFrIHVzaW5nIGpoYnVpbGQgb24gdWJ1bnR1IDEzLjA0CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29udHJpYnV0b3JzLmpzb24gYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29udHJpYnV0b3JzLmpzb24KaW5kZXgg
Mjg4Y2JmZDc4MDJiNjU5MTVkZjA1MDViMmU2YmY3MDQyYzAzOTU4Yy4uMDAzNGM2Y2NjOTM2ZGVk
NjEzMGMxMzBjYTk5ODhkNmFhMThjNmZkMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1dG9ycy5qc29uCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbgpAQCAtNDQsNiArNDQsNyBA
QAogICAgICAgICAiS3VsYW50aGFpdmVsIFBhbGFuaWNoYW15IjogeyJlbWFpbHMiOiBbImt1bGFu
dGhhaXZlbEBjb2RlYXVyb3JhLm9yZyJdLCAibmlja3MiOiBbImt2ZWwiXX0sCiAgICAgICAgICJL
b2ppIEhhcmEiOiB7ImVtYWlscyI6IFsia29qaWhAY2hyb21pdW0ub3JnIl0sICJuaWNrcyI6IFsi
a29qaWgiXX0sCiAgICAgICAgICJLb2ppIElzaGlpIjogeyJlbWFpbHMiOiBbImtvamlpc2hpQGdt
YWlsLmNvbSJdfSwKKyAgICAgICAgIkxpYSBDaGVuIjogeyJlbWFpbHMiOiBbImxpYWNoZW5Acmlt
LmNvbSJdfSwKICAgICAgICAgIk1pY2hhZWwgUHJ1ZXR0IjogeyJlbWFpbHMiOiBbIm1pY2hhZWxA
NjhrLm9yZyJdLCAibmlja3MiOiBbIm1wcnVldHQiXX0sCiAgICAgICAgICJNaWhhaSBCYWxhbiI6
IHsiZW1haWxzIjogWyJtaWJhbGFuQGFkb2JlLmNvbSJdLCAibmlja3MiOiBbIm1pQ2hvdSJdfSwK
ICAgICAgICAgIk1paGFpIE1hZXJlYW4iOiB7ImVtYWlscyI6IFsibW1hZXJlYW5AYWRvYmUuY29t
Il0sICJuaWNrcyI6IFsibW1hZXJlYW4iXX0sCkBAIC0xMjEsNyArMTIyLDcgQEAKICAgICAgICAg
IkNocmlzIEd1aWxsb3J5IjogeyJlbWFpbHMiOiBbImN0Z3VpbEBjaHJvbWl1bS5vcmciLCAiY2hy
aXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbSJdLCAibmlja3MiOiBbImN0Z3VpbCJdfSwKICAgICAgICAg
IkNocmlzIFBldGVyc2VuIjogeyJlbWFpbHMiOiBbImNwZXRlcnNlbkBhcHBsZS5jb20iXSwgIm5p
Y2tzIjogWyJjcGV0ZXJzZW4iXX0sCiAgICAgICAgICJDaHJpc3RpYW4gRHl3YW4iOiB7ImVtYWls
cyI6IFsiY2hyaXN0aWFuQHR3b3RvYXN0cy5kZSIsICJjaHJpc3RpYW5Ad2Via2l0Lm9yZyIsICJj
aHJpc3RpYW5AbGFuZWRvLmNvbSJdfSwKLSAgICAgICAgIkNocmlzdG9waGUgRHVtZXoiOiB7ImVt
YWlscyI6IFsiZGNocmlzQGdtYWlsLmNvbSIsICJjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tIl0s
ICJuaWNrcyI6IFsiY2R1bWV6Il19LAorICAgICAgICAiQ2hyaXN0b3BoZSBEdW1leiI6IHsiZW1h
aWxzIjogWyJkY2hyaXNAZ21haWwuY29tIiwgImNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20iLCAi
Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20iXSwgIm5pY2tzIjogWyJjZHVtZXoiXX0sCiAgICAg
ICAgICJDbGF1ZGlvIFNhYXZlZHJhIjogeyJlbWFpbHMiOiBbImNzYWF2ZWRyYUBpZ2FsaWEuY29t
Il0sICJuaWNrcyI6IFsiY2xhdWRpb19fXyJdfSwKICAgICAgICAgIkNvbGxpbiBKYWNrc29uIjog
eyJlbWFpbHMiOiBbImNvbGxpbmpAd2Via2l0Lm9yZyJdLCAibmlja3MiOiBbImNvbGxpbmphY2tz
b24iXX0sCiAgICAgICAgICJDcmlzIE5lY2thciI6IHsiZW1haWxzIjogWyJjZG5AY2hyb21pdW0u
b3JnIl0sICJuaWNrcyI6IFsiY25lY2thciJdfSwKQEAgLTE2Myw3ICsxNjQsNyBAQAogICAgICAg
ICAiR3JlZyBCb2xzaW5nYSI6IHsiZW1haWxzIjogWyJib2xzaW5nYUBhcHBsZS5jb20iXX0sCiAg
ICAgICAgICJHcmVnZyBUYXZhcmVzIjogeyJlbWFpbHMiOiBbImdtYW5AY2hyb21pdW0ub3JnIiwg
ImdtYW5AZ29vZ2xlLmNvbSJdLCAibmlja3MiOiBbImdtYW4iXX0sCiAgICAgICAgICJHcnplZ29y
eiBDemFqa293c2tpIjogeyJlbWFpbHMiOiBbImcuY3phamtvd3NraUBzYW1zdW5nLmNvbSJdLCAi
bmlja3MiOiBbImdyemVnb3J6Il19LAotICAgICAgICAiSGFucyBNdWxsZXIiOiB7ImVtYWlscyI6
IFsiZ2lsZXNfam9wbGluQHlhaG9vLmNvbSJdLCAibmlja3MiOiBbImhhbnNtdWxsZXIiXX0sCisg
ICAgICAgICJIYW5zIE11bGxlciI6IHsiZW1haWxzIjogWyJnaWxlc19qb3BsaW5AeWFob28uY29t
IiwgImhtdWxsZXJAYWRvYmUuY29tIl0sICJuaWNrcyI6IFsiaGFuc211bGxlciJdfSwKICAgICAg
ICAgIkhhbnMgV2VubmJvcmciOiB7ImVtYWlscyI6IFsiaGFuc0BjaHJvbWl1bS5vcmciXSwgIm5p
Y2tzIjogWyJod2VubmJvcmciXX0sCiAgICAgICAgICJIYXlhdG8gSXRvIjogeyJlbWFpbHMiOiBb
ImhheWF0b0BjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJoYXlhdG8iXX0sCiAgICAgICAgICJI
aXJvbm9yaSBCb25vIjogeyJlbWFpbHMiOiBbImhib25vQGNocm9taXVtLm9yZyJdLCAibmlja3Mi
OiBbImhib25vIl19LApAQCAtMTk5LDcgKzIwMCw3IEBACiAgICAgICAgICJKb2huIEtub3R0ZW5i
ZWx0IjogeyJlbWFpbHMiOiBbImprbm90dGVuQGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBbImpr
bm90dGVuIl19LAogICAgICAgICAiSm9obm55IERpbmciOiB7ImVtYWlscyI6IFsiam5kQGNocm9t
aXVtLm9yZyIsICJqb2hubnlkaW5nLndlYmtpdEBnbWFpbC5jb20iXSwgIm5pY2tzIjogWyJqb2hu
bnlkaW5nIl19LAogICAgICAgICAiSm9uIExlZSI6IHsiZW1haWxzIjogWyJqb25sZWVAYXBwbGUu
Y29tIl0sICJuaWNrcyI6IFsiam9ubGVlIl19LAotICAgICAgICAiSm9uYXRoYW4gRG9uZyI6IHsi
ZW1haWxzIjogWyJqb25hdGhhbi5kb25nLndlYmtpdEBnbWFpbC5jb20iXSwgIm5pY2tzIjogWyJq
b25kb25nIl19LAorICAgICAgICAiSm9uYXRoYW4gRG9uZyI6IHsiZW1haWxzIjogWyJqb25hdGhh
bi5kb25nLndlYmtpdEBnbWFpbC5jb20iLCAiam9uYXRoYW4uZG9uZ0B0b3JjaG1vYmlsZS5jb20u
Y24iXSwgIm5pY2tzIjogWyJqb25kb25nIl19LAogICAgICAgICAiSm9vbmUgSHVyIjogeyJlbWFp
bHMiOiBbImpvb25lQHdlYmtpdC5vcmciLCAiam9vbmUuaHVyQGludGVsLmNvbSJdLCAibmlja3Mi
OiBbImpvb25lIl19LAogICAgICAgICAiSm9vc3QgZGUgVmFsayI6IHsiZW1haWxzIjogWyJqb29z
dEB3ZWJraXQub3JnIiwgIndlYmtpdC1kZXZAam9vc3RkZXZhbGsubmwiXSwgIm5pY2tzIjogWyJB
bHRoYSJdfSwKICAgICAgICAgIkpvc2h1YSBCZWxsIjogeyJlbWFpbHMiOiBbImpzYmVsbEBjaHJv
bWl1bS5vcmciLCAianNiZWxsQGdvb2dsZS5jb20iXSwgIm5pY2tzIjogWyJqc2JlbGwiXX0sCkBA
IC0zMTUsNyArMzE2LDcgQEAKICAgICAgICAgIlRyZXkgTWF0dGVzb24iOiB7ImVtYWlscyI6IFsi
dHJleUB1c2EubmV0Il0sICJuaWNrcyI6IFsidHJleSJdfSwKICAgICAgICAgIlRyaXN0YW4gTydU
aWVybmV5IjogeyJlbWFpbHMiOiBbInRyaXN0YW5Ab3RpZXJuZXkubmV0IiwgInRyaXN0YW5AYXBw
bGUuY29tIl19LAogICAgICAgICAiVmFuZ2VsaXMgS29ra2V2aXMiOiB7ImVtYWlscyI6IFsidmFu
Z2VsaXNAY2hyb21pdW0ub3JnIl0sICJuaWNrcyI6IFsidmFuZ2VsaXMiXX0sCi0gICAgICAgICJW
aWF0Y2hlc2xhdiBPc3RhcGVua28iOiB7ImVtYWlscyI6IFsib3N0YXA3M0BnbWFpbC5jb20iLCAi
di5vc3RhcGVua29Ac2Ftc3VuZy5jb20iLCAidi5vc3RhcGVua29Ac2lzYS5zYW1zdW5nLmNvbSJd
LCAibmlja3MiOiBbIm9zdGFwIl19LAorICAgICAgICAiVmlhdGNoZXNsYXYgT3N0YXBlbmtvIjog
eyJlbWFpbHMiOiBbIm9zdGFwNzNAZ21haWwuY29tIiwgIm9zdGFwZW5rby52aWF0Y2hlc2xhdkBu
b2tpYS5jb20iLCAidi5vc3RhcGVua29Ac2Ftc3VuZy5jb20iLCAidi5vc3RhcGVua29Ac2lzYS5z
YW1zdW5nLmNvbSJdLCAibmlja3MiOiBbIm9zdGFwIl19LAogICAgICAgICAiVmljdG9yIENhcmJ1
bmUiOiB7ImVtYWlscyI6IFsidmNhcmJ1bmVAY2hyb21pdW0ub3JnIiwgInZpY3RvckByb3NlZHUu
b3JnIl0sICJuaWNrcyI6IFsidmNhcmJ1bmUiXX0sCiAgICAgICAgICJWaWN0b3IgV2FuZyI6IHsi
ZW1haWxzIjogWyJ2aWN0b3J3QGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBbInZpY3RvcnciXX0s
CiAgICAgICAgICJWaWN0b3JpYSBLaXJzdCI6IHsiZW1haWxzIjogWyJ2cmtAY2hyb21pdW0ub3Jn
IiwgInZya0Bnb29nbGUuY29tIl0sICJuaWNrcyI6IFsidnJrIl19LApAQCAtMzM3LDExICszMzgs
MTEgQEAKICAgICAgICAgIll1cWlhbmcgWGlhbiI6IHsiZW1haWxzIjogWyJ5dXFpYW5nLnhpYW5A
aW50ZWwuY29tIl19LAogICAgICAgICAiWXV6byBGdWppc2hpbWEiOiB7ImVtYWlscyI6IFsieXV6
b0Bnb29nbGUuY29tIl0sICJuaWNrcyI6IFsieXV6byJdfSwKICAgICAgICAgIlphbGFuIEJ1anRh
cyI6IHsiZW1haWxzIjogWyJ6YWxhbkBhcHBsZS5jb20iLCAiemJ1anRhc0BnbWFpbC5jb20iLCAi
emFsYW4uYnVqdGFzQG5va2lhLmNvbSJdLCAibmlja3MiOiBbInphbGFuIl19LAotICAgICAgICAi
WmVubyBBbGJpc3NlciI6IHsiZW1haWxzIjogWyJ6ZW5vQHdlYmtpdC5vcmciLCAiemVuby5hbGJp
c3NlckBub2tpYS5jb20iXSwgIm5pY2tzIjogWyJ6YWxiaXNzZXIiXX0sCisgICAgICAgICJaZW5v
IEFsYmlzc2VyIjogeyJlbWFpbHMiOiBbInplbm9Ad2Via2l0Lm9yZyIsICJ6ZW5vLmFsYmlzc2Vy
QG5va2lhLmNvbSIsICJ6ZW5vLmFsYmlzc2VyQGRpZ2lhLmNvbSJdLCAibmlja3MiOiBbInphbGJp
c3NlciJdfSwKICAgICAgICAgIlpoZW55YW8gTW8iOiB7ImVtYWlscyI6IFsiem1vQGdvb2dsZS5j
b20iXSwgIm5pY2tzIjogWyJ6aGVueWFvIl19LAogICAgICAgICAiWm9sdGFuIEFydmFpIjogeyJl
bWFpbHMiOiBbInphcnZhaUBpbmYudS1zemVnZWQuaHUiXSwgIm5pY2tzIjogWyJhemJlc3RfaHUi
XX0sCiAgICAgICAgICJab2x0YW4gSG9ydmF0aCI6IHsiZW1haWxzIjogWyJ6b2x0YW5Ad2Via2l0
Lm9yZyIsICJoem9sdGFuQGluZi51LXN6ZWdlZC5odSIsICJob3J2YXRoLnpvbHRhbi42QHN0dWQu
dS1zemVnZWQuaHUiXSwgIm5pY2tzIjogWyJ6b2x0YW4iXX0sCi0gICAgICAgICJcdTAxN2RhbiBE
b2Jlclx1MDE2MWVrIjogeyJlbWFpbHMiOiBbInphbmRvYmVyc2VrQGdtYWlsLmNvbSJdLCAibmlj
a3MiOiBbInpkb2JlcnNlayJdfQorICAgICAgICAiXHUwMTdkYW4gRG9iZXJcdTAxNjFlayI6IHsi
ZW1haWxzIjogWyJ6YW5kb2JlcnNla0BnbWFpbC5jb20iLCAiemFuZG9iZXJzZWtAaWdhbGlhLmNv
bSJdLCAibmlja3MiOiBbInpkb2JlcnNlayJdfQogICAgIH0sCiAgICAgIlJldmlld2VycyI6IHsK
ICAgICAgICAgIkFiaGlzaGVrIEFyeWEiOiB7ImVtYWlscyI6IFsiaW5mZXJub0BjaHJvbWl1bS5v
cmciXSwgIm5pY2tzIjogWyJpbmZlcm5vLXNlYyJdfSwKQEAgLTM1NSw3ICszNTYsNyBAQAogICAg
ICAgICAiQWxleGFuZGVyIFBhdmxvdiI6IHsiZW1haWxzIjogWyJhcGF2bG92QGNocm9taXVtLm9y
ZyIsICJwYXZsb3Y4MUBnbWFpbC5jb20iXSwgIm5pY2tzIjogWyJhcGF2bG92Il19LAogICAgICAg
ICAiQWxleGFuZHJ1IENoaWN1bGl0YSI6IHsiZW1haWxzIjogWyJhY2hpY3VAYWRvYmUuY29tIl0s
ICJuaWNrcyI6IFsiYWNoaWN1Il19LAogICAgICAgICAiQWxleGV5IFByb3NrdXJ5YWtvdiI6IHsi
ZW1haWxzIjogWyJhcEB3ZWJraXQub3JnIiwgImFwQGFwcGxlLmNvbSJdLCAibmlja3MiOiBbImFw
Il19LAotICAgICAgICAiQWxleGlzIE1lbmFyZCI6IHsiZW1haWxzIjogWyJhbGV4aXNAd2Via2l0
Lm9yZyIsICJtZW5hcmRAa2RlLm9yZyJdLCAibmlja3MiOiBbImRhcmt0ZWFycyJdfSwKKyAgICAg
ICAgIkFsZXhpcyBNZW5hcmQiOiB7ImVtYWlscyI6IFsiYWxleGlzQHdlYmtpdC5vcmciLCAibWVu
YXJkQGtkZS5vcmciLCAiYWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnIl0sICJuaWNrcyI6IFsi
ZGFya3RlYXJzIl19LAogICAgICAgICAiQWxpY2UgTGl1IjogeyJlbWFpbHMiOiBbImFsaWNlLmxp
dUBhcHBsZS5jb20iXSwgIm5pY2tzIjogWyJhbGl1Il19LAogICAgICAgICAiQWxsYW4gU2FuZGZl
bGQgSmVuc2VuIjogeyJlbWFpbHMiOiBbImFsbGFuLmplbnNlbkBkaWdpYS5jb20iLCAia2RlQGNh
cmV3b2xmLmNvbSIsICJzYW5kZmVsZEBrZGUub3JnIiwgImFsbGFuLmplbnNlbkBub2tpYS5jb20i
XSwgIm5pY2tzIjogWyJjYXJld29sZiJdfSwKICAgICAgICAgIkFscCBUb2tlciI6IHsiZW1haWxz
IjogWyJhbHBAbnVhbnRpLmNvbSIsICJhbHBAYXRva2VyLmNvbSIsICJhbHBAd2Via2l0Lm9yZyJd
LCAibmlja3MiOiBbImFscCJdfSwKQEAgLTQxNSw3ICs0MTYsNyBAQAogICAgICAgICAiSmVzc2ll
IEJlcmxpbiI6IHsiZW1haWxzIjogWyJqYmVybGluQHdlYmtpdC5vcmciLCAiamJlcmxpbkBhcHBs
ZS5jb20iXSwgIm5pY2tzIjogWyJqZXNzaWViZXJsaW4iXX0sCiAgICAgICAgICJKaWFuIExpIjog
eyJlbWFpbHMiOiBbImppYW5saUBjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJqaWFubGkiXX0s
CiAgICAgICAgICJKb2NlbHluIFR1cmNvdHRlIjogeyJlbWFpbHMiOiBbImpvY2VseW4udHVyY290
dGVAZGlnaWEuY29tIiwgImpvY2VseW4udHVyY290dGVAbm9raWEuY29tIl0sICJuaWNrcyI6IFsi
anR1cmNvdHRlIl19LAotICAgICAgICAiSm9jaGVuIEVpc2luZ2VyIjogeyJlbWFpbHMiOiBbImpv
Y2hlbkBjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJqb2NoZW5fXyJdfSwKKyAgICAgICAgIkpv
Y2hlbiBFaXNpbmdlciI6IHsiZW1haWxzIjogWyJqb2NoZW5AY2hyb21pdW0ub3JnIiwgImpvY2hl
bkBjaHJvbWl1bS5vciJdLCAibmlja3MiOiBbImpvY2hlbl9fIl19LAogICAgICAgICAiSm9obiBT
dWxsaXZhbiI6IHsiZW1haWxzIjogWyJzdWxsaXZhbkBhcHBsZS5jb20iXSwgIm5pY2tzIjogWyJz
dWxsaXZhbiJdfSwKICAgICAgICAgIkpvbiBIb25leWN1dHQiOiB7ImVtYWlscyI6IFsiamhvbmV5
Y3V0dEBhcHBsZS5jb20iXSwgIm5pY2tzIjogWyJqaG9uZXljdXR0Il19LAogICAgICAgICAiSm9z
ZXBoIFBlY29yYXJvIjogeyJlbWFpbHMiOiBbImpvZXBlY2tAd2Via2l0Lm9yZyIsICJwZWNvcmFy
b0BhcHBsZS5jb20iXSwgIm5pY2tzIjogWyJKb2VQZWNrIl19LApAQCAtNDY5LDcgKzQ3MCw3IEBA
CiAgICAgICAgICJWaWNraSBNdXJsZXkiOiB7ImVtYWlscyI6IFsidmlja2lAYXBwbGUuY29tIl19
LAogICAgICAgICAiVnNldm9sb2QgVmxhc292IjogeyJlbWFpbHMiOiBbInZzZXZpa0BjaHJvbWl1
bS5vcmciXSwgIm5pY2tzIjogWyJ2c2V2aWsiXX0sCiAgICAgICAgICJYYW4gTG9wZXoiOiB7ImVt
YWlscyI6IFsieGFuLmxvcGV6QGdtYWlsLmNvbSIsICJ4YW5AZ25vbWUub3JnIiwgInhhbkB3ZWJr
aXQub3JnIiwgInhsb3BlekBpZ2FsaWEuY29tIl0sICJuaWNrcyI6IFsieGFuIl19LAotICAgICAg
ICAiWW9uZyBMaSI6IHsiZW1haWxzIjogWyJ5b25nLmxpLndlYmtpdEBvdXRsb29rLmNvbSJdLCAi
bmlja3MiOiBbInlvbGkiXX0sCisgICAgICAgICJZb25nIExpIjogeyJlbWFpbHMiOiBbInlvbmcu
bGkud2Via2l0QG91dGxvb2suY29tIiwgInlvbGlAcmltLmNvbSJdLCAibmlja3MiOiBbInlvbGki
XX0sCiAgICAgICAgICJZdXJ5IFNlbWlraGF0c2t5IjogeyJlbWFpbHMiOiBbInl1cnlzQGNocm9t
aXVtLm9yZyJdLCAibmlja3MiOiBbInl1cnlzIl19LAogICAgICAgICAiWXV0YSBLaXRhbXVyYSI6
IHsiZW1haWxzIjogWyJ5dXRha0BjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJ5dXRhayJdfSwK
ICAgICAgICAgIlphY2sgUnVzaW4iOiB7ImVtYWlscyI6IFsiemFja0BrZGUub3JnIl0sICJuaWNr
cyI6IFsiemFja3IiXX0sCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weQppbmRleCA4NDViNzgyNzA5NjUyMmQ1
ZTEyZjUwYzlmNjI3YjFlZTM1Y2U5ZDcwLi4zN2E1YWMyNGY4MGRhYmM4Yjk3MjUwZWUzNWZkMWZh
YmI2MmM4YWUzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnMucHkKQEAgLTI3LDE5ICsyNywyNSBAQAogIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGNhbGVuZGFyCiBmcm9tIG9wdHBh
cnNlIGltcG9ydCBtYWtlX29wdGlvbgogaW1wb3J0IHJlCiAKLWZyb20gd2Via2l0cHkuY29tbW9u
LmNoZWNrb3V0LmNoYW5nZWxvZyBpbXBvcnQgQ2hhbmdlTG9nRW50cnkKIGZyb20gd2Via2l0cHku
Y29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0Ci1mcm9tIHdlYmtp
dHB5LnRvb2wgaW1wb3J0IHN0ZXBzCiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQg
am9pbl93aXRoX3NlcGFyYXRvcnMKIGZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29s
IGltcG9ydCBDb21tYW5kCiAKIAogY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKENvbW1hbmQpOgog
ICAgIG5hbWUgPSAic3VnZ2VzdC1ub21pbmF0aW9ucyIKLSAgICBoZWxwX3RleHQgPSAiU3VnZ2Vz
dCBjb250cmlidXRvcnMgZm9yIGNvbW1pdHRlci9yZXZpZXdlciBub21pbmF0aW9ucyIKKyAgICBo
ZWxwX3RleHQgPSAiU3VnZ2VzdCBub21pbmF0aW9ucyBmb3IgY29tbWl0dGVyL3Jldmlld2VyIHJv
bGUiCisKKyAgICBfbWF0Y2hfbGVhZGluZ19pbmRlbnQgPSByZS5jb21waWxlKHIiXlsgXXs0fSIs
IHJlLk1VTFRJTElORSkKKyAgICBfbWF0Y2hfcmV2aWV3ZWRfYnkgPSByZS5jb21waWxlKHInXlxz
KigoXHcrXHMrKSthbmRccyspPyhSZXZpZXd8UnViYmVyKFxzKnwtKXN0YW1wKShzfGVkKT9ccyso
W2Etel0rXHMrKSo/YnlccysoP1A8cmV2aWV3ZXJzPi4qPylbXC4sXT9ccyokJywgcmUuTVVMVElM
SU5FKQorICAgIF9tYXRjaF9wYXRjaF9ieSA9IHJlLmNvbXBpbGUocideUGF0Y2ggYnkgKD9QPG5h
bWU+Lis/KVxzKzwoP1A8ZW1haWw+W148Pl0rKT4gb24gKD9QPGRhdGU+XGR7NH0tXGR7Mn0tXGR7
Mn0pJCcsIHJlLk1VTFRJTElORSkKKyAgICBfbWF0Y2hfY29tbWl0dGVyID0gcmUuY29tcGlsZShy
J15BdXRob3I6ICg/UDxlbWFpbD5cUyspXHMrPFtePl0rPiQnLCByZS5NVUxUSUxJTkUpCisgICAg
X21hdGNoX2RhdGUgPSByZS5jb21waWxlKHInXkRhdGU6ICAgXFN7M30gKD9QPG1vbnRoPlxTezN9
KSAoP1A8ZGF5PlxkezEsMn0pICg/UDx0aW1lPlxkezJ9OlxkezJ9OlxkezJ9KSAoP1A8eWVhcj5c
ZHs0fSkgW1wrXC1dXGR7NH0kJywgcmUuTVVMVElMSU5FKQorICAgIF9tYXRjaF9yZXZpc2lvbiA9
IHJlLmNvbXBpbGUocideZ2l0LXN2bi1pZDogaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRv
cnkvd2Via2l0L3RydW5rQCg/UDxzdm5pZD5cZCspICg/UDxnaXRpZD5bMC05YS1mXC1dezM2fSkk
JywgcmUuTVVMVElMSU5FKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBvcHRp
b25zID0gWwpAQCAtNDgsMTQgKzU0LDEwIEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21t
YW5kKToKICAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW1heC1jb21taXQtYWdlIiwgYWN0aW9u
PSJzdG9yZSIsIGRlc3Q9Im1heF9jb21taXRfYWdlIiwgdHlwZT0iaW50IiwgZGVmYXVsdD05LCBo
ZWxwPSJTcGVjaWZ5IG1heCBjb21taXQgYWdlIHRvIGNvbnNpZGVyIGZvciBub21pbmF0aW9ucyAo
aW4gbW9udGhzKS4iKSwKICAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLXNob3ctY29tbWl0cyIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InNob3dfY29tbWl0cyIsIGRlZmF1bHQ9RmFsc2Us
IGhlbHA9IlNob3cgY29tbWl0IGhpc3Rvcnkgd2l0aCBub21pbmF0aW9uIHN1Z2dlc3Rpb25zLiIp
LAogICAgICAgICBdCi0KLSAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBvcHRpb25zPW9w
dGlvbnMpCisgICAgICAgIHN1cGVyKFN1Z2dlc3ROb21pbmF0aW9ucywgc2VsZikuX19pbml0X18o
b3B0aW9ucz1vcHRpb25zKQogICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBi
ZSBvbiB0aGUgdG9vbCBzb21ld2hlcmUuCiAgICAgICAgIHNlbGYuX2NvbW1pdHRlcl9saXN0ID0g
Q29tbWl0dGVyTGlzdCgpCiAKLSAgICBfY291bnRlcnNfYnlfbmFtZSA9IHt9Ci0gICAgX2NvdW50
ZXJzX2J5X2VtYWlsID0ge30KLQogICAgIGRlZiBfaW5pdF9vcHRpb25zKHNlbGYsIG9wdGlvbnMp
OgogICAgICAgICBzZWxmLmNvbW1pdHRlcl9taW5pbXVtID0gb3B0aW9ucy5jb21taXR0ZXJfbWlu
aW11bQogICAgICAgICBzZWxmLnJldmlld2VyX21pbmltdW0gPSBvcHRpb25zLnJldmlld2VyX21p
bmltdW0KQEAgLTY2LDYyICs2OCwxMjAgQEAgY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKENvbW1h
bmQpOgogICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIG1vdmUgdG8gc2NtLnB5CiAgICAgZGVmIF9y
ZWNlbnRfY29tbWl0X21lc3NhZ2VzKHNlbGYpOgogICAgICAgICBnaXRfbG9nID0gc2VsZi5fdG9v
bC5leGVjdXRpdmUucnVuX2NvbW1hbmQoWydnaXQnLCAnbG9nJywgJy0tc2luY2U9IiVzIG1vbnRo
cyBhZ28iJyAlIHNlbGYubWF4X2NvbW1pdF9hZ2VdKQotICAgICAgICBtYXRjaF9naXRfc3ZuX2lk
ID0gcmUuY29tcGlsZShyIlxuXG4gICAgZ2l0LXN2bi1pZDouKlxuIiwgcmUuTVVMVElMSU5FKQot
ICAgICAgICBtYXRjaF9nZXRfbG9nX2xpbmVzID0gcmUuY29tcGlsZShyIl5cUy4qXG4iLCByZS5N
VUxUSUxJTkUpCi0gICAgICAgIG1hdGNoX2xlYWRpbmdfaW5kZW50ID0gcmUuY29tcGlsZShyIl5b
IF17NH0iLCByZS5NVUxUSUxJTkUpCi0KLSAgICAgICAgbWVzc2FnZXMgPSByZS5zcGxpdChyImNv
bW1pdCBcd3s0MH0iLCBnaXRfbG9nKVsxOl0gICMgSWdub3JlIHRoZSBmaXJzdCBtZXNzYWdlIHdo
aWNoIHdpbGwgYmUgZW1wdHkuCisgICAgICAgIG1lc3NhZ2VzID0gcmUuc3BsaXQociJeY29tbWl0
IFx3ezQwfSQiLCBnaXRfbG9nLCBmbGFncz1yZS5NVUxUSUxJTkUpWzE6XSAgIyBJZ25vcmUgdGhl
IGZpcnN0IG1lc3NhZ2Ugd2hpY2ggd2lsbCBiZSBlbXB0eS4KICAgICAgICAgZm9yIG1lc3NhZ2Ug
aW4gbWVzc2FnZXM6Ci0gICAgICAgICAgICAjIFJlbW92ZSBhbnkgbGluZXMgZnJvbSBnaXQgYW5k
IHVuaW5kZW50IGFsbCB0aGUgbGluZXMKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNo
X2dpdF9zdm5faWQuc3VibigiIiwgbWVzc2FnZSkKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9
IG1hdGNoX2dldF9sb2dfbGluZXMuc3VibigiIiwgbWVzc2FnZSkKLSAgICAgICAgICAgIChtZXNz
YWdlLCBfKSA9IG1hdGNoX2xlYWRpbmdfaW5kZW50LnN1Ym4oIiIsIG1lc3NhZ2UpCisgICAgICAg
ICAgICAjIFVuaW5kZW50IGFsbCB0aGUgbGluZXMKKyAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9
IHNlbGYuX21hdGNoX2xlYWRpbmdfaW5kZW50LnN1Ym4oIiIsIG1lc3NhZ2UpCiAgICAgICAgICAg
ICB5aWVsZCBtZXNzYWdlLmxzdHJpcCgpICAjIFJlbW92ZSBhbnkgbGVhZGluZyBuZXdsaW5lcyBm
cm9tIHRoZSBsb2cgbWVzc2FnZS4KIAotICAgICMgZS5nLiBQYXRjaCBieSBFcmljIFNlaWRlbCA8
ZXJpY0B3ZWJraXQub3JnPiBvbiAyMDExLTA5LTE1Ci0gICAgcGF0Y2hfYnlfcmVnZXhwID0gcide
UGF0Y2ggYnkgKD9QPG5hbWU+Lis/KVxzKzwoP1A8ZW1haWw+W148Pl0rKT4gb24gKD9QPGRhdGU+
XGR7NH0tXGR7Mn0tXGR7Mn0pJCcKKyAgICBkZWYgX2F1dGhvcl9uYW1lX2Zyb21fZW1haWwoc2Vs
ZiwgZW1haWwpOgorICAgICAgICBjb250cmlidXRvciA9IHNlbGYuX2NvbW1pdHRlcl9saXN0LmNv
bnRyaWJ1dG9yX2J5X2VtYWlsKGVtYWlsKQorICAgICAgICByZXR1cm4gY29udHJpYnV0b3IuZnVs
bF9uYW1lIGlmIGNvbnRyaWJ1dG9yIGVsc2UgTm9uZQorCisgICAgZGVmIF9jb21taXRfZGF0ZV9m
cm9tX21hdGNoKHNlbGYsIG1hdGNoKToKKyAgICAgICAgeWVhciA9IG1hdGNoLmdyb3VwKCd5ZWFy
JykKKyAgICAgICAgbW9udGhfYWJiciA9IG1hdGNoLmdyb3VwKCdtb250aCcpCisgICAgICAgIG1v
bnRoID0gMAorICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY2FsZW5kYXIubW9udGhfYWJicikp
OgorICAgICAgICAgICAgaWYgY2FsZW5kYXIubW9udGhfYWJicltpXSA9PSBtb250aF9hYmJyOgor
ICAgICAgICAgICAgICAgIG1vbnRoID0gaSArIDEKKyAgICAgICAgICAgICAgICBicmVhaworICAg
ICAgICBkYXkgPSBtYXRjaC5ncm91cCgnZGF5JykKKyAgICAgICAgcmV0dXJuICclMDRkLSUwMmQt
JTAyZCcgJSAoaW50KHllYXIpLCBtb250aCwgaW50KGRheSkpCisKKyAgICBkZWYgX2NvbnRyaWJ1
dG9yX2Zyb21fZW1haWwoc2VsZiwgZW1haWwpOgorICAgICAgICBjb250cmlidXRvciA9IHNlbGYu
X2NvbW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9yX2J5X2VtYWlsKGVtYWlsKQorICAgICAgICByZXR1
cm4gY29udHJpYnV0b3IgaWYgY29udHJpYnV0b3IgZWxzZSBOb25lCisKKyAgICBkZWYgX3JlY2Vu
dF9jb21taXRzKHNlbGYpOgogCi0gICAgZGVmIF9jb3VudF9yZWNlbnRfcGF0Y2hlcyhzZWxmKToK
LSAgICAgICAgIyBUaGlzIGVudGlyZSBibG9jayBjb3VsZCBiZSB3cml0dGVuIGFzIGEgbWFwL3Jl
ZHVjZSBvdmVyIHRoZSBtZXNzYWdlcy4KICAgICAgICAgZm9yIG1lc3NhZ2UgaW4gc2VsZi5fcmVj
ZW50X2NvbW1pdF9tZXNzYWdlcygpOgotICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQg
dXNlIENoYW5nZUxvZ0VudHJ5IHRvIGRvIHRoZSBlbnRpcmUgcGFyc2UgaW5zdGVhZAotICAgICAg
ICAgICAgIyBvZiBncmFiYmluZyBhdCBpdHMgcmVnZXhwcy4KLSAgICAgICAgICAgIGRhdGVsaW5l
X21hdGNoID0gcmUubWF0Y2goQ2hhbmdlTG9nRW50cnkuZGF0ZV9saW5lX3JlZ2V4cCwgbWVzc2Fn
ZSwgcmUuTVVMVElMSU5FKQotICAgICAgICAgICAgaWYgbm90IGRhdGVsaW5lX21hdGNoOgotICAg
ICAgICAgICAgICAgICMgTW9kZXJuIGNvbW1pdCBtZXNzYWdlcyBkb24ndCBqdXN0IGR1bXAgdGhl
IENoYW5nZUxvZyBlbnRyeSwgYnV0IHJhdGhlcgotICAgICAgICAgICAgICAgICMgaGF2ZSBhIHNw
ZWNpYWwgUGF0Y2ggYnkgbGluZSBmb3Igbm9uLWNvbW1pdHRlcnMuCi0gICAgICAgICAgICAgICAg
ZGF0ZWxpbmVfbWF0Y2ggPSByZS5zZWFyY2goc2VsZi5wYXRjaF9ieV9yZWdleHAsIG1lc3NhZ2Us
IHJlLk1VTFRJTElORSkKLSAgICAgICAgICAgICAgICBpZiBub3QgZGF0ZWxpbmVfbWF0Y2g6Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGF1dGhvcl9lbWFpbCA9
IGRhdGVsaW5lX21hdGNoLmdyb3VwKCJlbWFpbCIpCi0gICAgICAgICAgICBpZiBub3QgYXV0aG9y
X2VtYWlsOgorCisgICAgICAgICAgICAjIERldGVybWluZSBjb21taXR0ZXIgaWYgcG9zc2libGUs
IG90aGVyd2lzZSBza2lwIGNvbW1pdC4KKyAgICAgICAgICAgIGNvbW1pdHRlcl9tYXRjaCA9IHNl
bGYuX21hdGNoX2NvbW1pdHRlci5zZWFyY2gobWVzc2FnZSkKKyAgICAgICAgICAgIGlmIG5vdCBj
b21taXR0ZXJfbWF0Y2g6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAg
IyBEZXRlcm1pbmUgY29tbWl0dGVyIGVtYWlsIGlmIHBvc3NpYmxlLCBvdGhlcndpc2Ugc2tpcCBj
b21taXQuCisgICAgICAgICAgICBjb21taXR0ZXJfZW1haWwgPSBjb21taXR0ZXJfbWF0Y2guZ3Jv
dXAoJ2VtYWlsJykKKyAgICAgICAgICAgIGlmIG5vdCBjb21taXR0ZXJfZW1haWw6CisgICAgICAg
ICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyBEZXRlcm1pbmUgaWYgY29tbWl0dGVy
IGlzIGEga25vd24gY29udHJpYnV0b3IsIGkuZS4sIHJlZ2lzdGVyZWQgaW4gY29tbWl0dGVycy5w
eSwgb3RoZXJ3aXNlIHNraXAgY29tbWl0LgorICAgICAgICAgICAgY29tbWl0dGVyID0gc2VsZi5f
Y29udHJpYnV0b3JfZnJvbV9lbWFpbChjb21taXR0ZXJfZW1haWwpCisgICAgICAgICAgICBpZiBu
b3QgY29tbWl0dGVyOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgICMg
V2Ugb25seSBjYXJlIGFib3V0IHJldmlld2VkIHBhdGNoZXMsIHNvIG1ha2Ugc3VyZSBpdCBoYXMg
YSB2YWxpZCByZXZpZXdlciBsaW5lLgotICAgICAgICAgICAgcmV2aWV3ZXJfbWF0Y2ggPSByZS5z
ZWFyY2goQ2hhbmdlTG9nRW50cnkucmV2aWV3ZWRfYnlfcmVnZXhwLCBtZXNzYWdlLCByZS5NVUxU
SUxJTkUpCi0gICAgICAgICAgICAjIFdlIG1pZ2h0IGFsc28gd2FudCB0byB2YWxpZGF0ZSB0aGUg
cmV2aWV3ZXIgbmFtZSBhZ2FpbnN0IHRoZSBjb21taXR0ZXIgbGlzdC4KLSAgICAgICAgICAgIGlm
IG5vdCByZXZpZXdlcl9tYXRjaCBvciBub3QgcmV2aWV3ZXJfbWF0Y2guZ3JvdXAoInJldmlld2Vy
Iik6CisgICAgICAgICAgICAjIERldGVybWluZSBjb21taXQgZGF0ZSBpZiBwb3NzaWJsZSwgb3Ro
ZXJ3aXNlIHNraXAgY29tbWl0LgorICAgICAgICAgICAgY29tbWl0X2RhdGVfbWF0Y2ggPSBzZWxm
Ll9tYXRjaF9kYXRlLnNlYXJjaChtZXNzYWdlKQorICAgICAgICAgICAgaWYgbm90IGNvbW1pdF9k
YXRlX21hdGNoOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjb21taXRf
ZGF0ZSA9IHNlbGYuX2NvbW1pdF9kYXRlX2Zyb21fbWF0Y2goY29tbWl0X2RhdGVfbWF0Y2gpCiAK
LSAgICAgICAgICAgIGF1dGhvcl9uYW1lID0gZGF0ZWxpbmVfbWF0Y2guZ3JvdXAoIm5hbWUiKQor
ICAgICAgICAgICAgIyBEZXRlcm1pbmUgcmV2aXNpb24gaWYgcG9zc2libGUsIG90aGVyd2lzZSBz
a2lwIGNvbW1pdC4KKyAgICAgICAgICAgIHJldmlzaW9uX21hdGNoID0gc2VsZi5fbWF0Y2hfcmV2
aXNpb24uc2VhcmNoKG1lc3NhZ2UpCisgICAgICAgICAgICBpZiBub3QgcmV2aXNpb25fbWF0Y2g6
CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHJldmlzaW9uID0gcmV2aXNp
b25fbWF0Y2guZ3JvdXAoJ3N2bmlkJykKKworICAgICAgICAgICAgIyBEZXRlcm1pbmUgYXV0aG9y
IGlmIHBvc3NpYmxlLCBvdGhlcndpc2Ugc2tpcCBjb21taXQuIExvb2sgZm9yICJQYXRjaCBieSIg
bGluZSBmaXJzdCwgd2hpY2gKKyAgICAgICAgICAgICMgaXMgdXNlZCBmb3Igbm9uLWNvbW1pdHRl
ciBjb250cmlidXRvcnM7IG90aGVyd2lzZSwgdXNlIGNvbW1pdHRlciBpbmZvIGRldGVybWluZWQg
YWJvdmUuCisgICAgICAgICAgICBhdXRob3JfbWF0Y2ggPSBzZWxmLl9tYXRjaF9wYXRjaF9ieS5z
ZWFyY2gobWVzc2FnZSkKKyAgICAgICAgICAgIGlmIG5vdCBhdXRob3JfbWF0Y2g6CisgICAgICAg
ICAgICAgICAgYXV0aG9yX21hdGNoID0gY29tbWl0dGVyX21hdGNoCisgICAgICAgICAgICBpZiBu
b3QgYXV0aG9yX21hdGNoOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAg
ICMgRGV0ZXJtaW5lIGF1dGhvciBlbWFpbCBpZiBwb3NzaWJsZSwgb3RoZXJ3aXNlIHNraXAgY29t
bWl0LgorICAgICAgICAgICAgYXV0aG9yX2VtYWlsID0gYXV0aG9yX21hdGNoLmdyb3VwKCdlbWFp
bCcpCisgICAgICAgICAgICBpZiBub3QgYXV0aG9yX2VtYWlsOgorICAgICAgICAgICAgICAgIGF1
dGhvcl9lbWFpbCA9IGNvbW1pdHRlcl9lbWFpbAorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisK
KyAgICAgICAgICAgICMgRGV0ZXJtaW5lIGlmIGF1dGhvciBpcyBhIGtub3duIGNvbnRyaWJ1dG9y
LCBpLmUuLCByZWdpc3RlcmVkIGluIGNvbW1pdHRlcnMucHkuCisgICAgICAgICAgICBjb250cmli
dXRvciA9IHNlbGYuX2NvbnRyaWJ1dG9yX2Zyb21fZW1haWwoYXV0aG9yX2VtYWlsKQorCisgICAg
ICAgICAgICAjIERldGVybWluZSBhdXRob3IgbmFtZSBpZiBwb3NzaWJsZSwgb3RoZXJ3aXNlIHNr
aXAgY29tbWl0LgorICAgICAgICAgICAgYXV0aG9yX25hbWUgPSBhdXRob3JfbWF0Y2guZ3JvdXAo
J25hbWUnKSBpZiAnbmFtZScgaW4gYXV0aG9yX21hdGNoLmdyb3VwZGljdCgpIGVsc2UgTm9uZQor
ICAgICAgICAgICAgaWYgbm90IGF1dGhvcl9uYW1lOgorICAgICAgICAgICAgICAgIGF1dGhvcl9u
YW1lID0gc2VsZi5fYXV0aG9yX25hbWVfZnJvbV9lbWFpbChhdXRob3JfZW1haWwpCiAgICAgICAg
ICAgICBpZiBub3QgYXV0aG9yX25hbWU6CiAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAg
ICAgICAgICAgaWYgcmUuc2VhcmNoKCIoW15hLXpBLVpdYW5kW15hLXpBLVpdKXwoLCl8KEApIiwg
YXV0aG9yX25hbWUpOgotICAgICAgICAgICAgICAgICMgVGhpcyBlbnRyeSBzZWVtcyB0byBoYXZl
IG11bHRpcGxlIHJldmlld2Vycywgb3IgaW52YWxpZCBjaGFyYWN0ZXJzLCBzbyByZWplY3QgaXQu
CisgICAgICAgICAgICAjIFVzZSBjYW5vbmljYWwgbmFtZSBpZiBrbm93biBjb250cmlidXRvci4K
KyAgICAgICAgICAgIGlmIGNvbnRyaWJ1dG9yIGFuZCBhdXRob3JfbmFtZSAhPSBjb250cmlidXRv
ci5mdWxsX25hbWU6CisgICAgICAgICAgICAgICAgYXV0aG9yX25hbWUgPSBjb250cmlidXRvci5m
dWxsX25hbWUKKworICAgICAgICAgICAgIyBEZXRlcm1pbmUgcmV2aWV3ZXJzIGlmIHBvc3NpYmxl
LCBvdGhlcndpc2Ugb3B0aW9uYWxseSBza2lwIGNvbW1pdC4KKyAgICAgICAgICAgIHJldmlld2Vy
X21hdGNoID0gc2VsZi5fbWF0Y2hfcmV2aWV3ZWRfYnkuc2VhcmNoKG1lc3NhZ2UpCisgICAgICAg
ICAgICBpZiBub3QgcmV2aWV3ZXJfbWF0Y2g6CiAgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgIHJldmlld2VycyA9IHJldmlld2VyX21hdGNoLmdyb3VwKCdyZXZpZXdlcnMnKQor
CisgICAgICAgICAgICB5aWVsZCB7CisgICAgICAgICAgICAgICAgJ2NvbW1pdHRlcic6IGNvbW1p
dHRlciwKKyAgICAgICAgICAgICAgICAnY29tbWl0X2RhdGUnOiBjb21taXRfZGF0ZSwKKyAgICAg
ICAgICAgICAgICAncmV2aXNpb24nOiByZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAnYXV0aG9y
X2VtYWlsJzogYXV0aG9yX2VtYWlsLAorICAgICAgICAgICAgICAgICdhdXRob3JfbmFtZSc6IGF1
dGhvcl9uYW1lLAorICAgICAgICAgICAgICAgICdjb250cmlidXRvcic6IGNvbnRyaWJ1dG9yLAor
ICAgICAgICAgICAgICAgICdyZXZpZXdlcnMnOiByZXZpZXdlcnMsCisgICAgICAgICAgICB9CisK
KyAgICBkZWYgX2NvdW50X3JlY2VudF9wYXRjaGVzKHNlbGYpOgorICAgICAgICBjb3VudGVyc19i
eV9uYW1lID0ge30KKyAgICAgICAgY291bnRlcnNfYnlfZW1haWwgPSB7fQorCisgICAgICAgIGZv
ciBjb21taXQgaW4gc2VsZi5fcmVjZW50X2NvbW1pdHMoKToKIAotICAgICAgICAgICAgc3ZuX2lk
X21hdGNoID0gcmUuc2VhcmNoKENoYW5nZUxvZ0VudHJ5LnN2bl9pZF9yZWdleHAsIG1lc3NhZ2Us
IHJlLk1VTFRJTElORSkKLSAgICAgICAgICAgIGlmIHN2bl9pZF9tYXRjaDoKLSAgICAgICAgICAg
ICAgICBzdm5faWQgPSBzdm5faWRfbWF0Y2guZ3JvdXAoInN2bmlkIikKLSAgICAgICAgICAgIGlm
IG5vdCBzdm5faWRfbWF0Y2ggb3Igbm90IHN2bl9pZDoKLSAgICAgICAgICAgICAgICBzdm5faWQg
PSAidW5rbm93biIKLSAgICAgICAgICAgIGNvbW1pdF9kYXRlID0gZGF0ZWxpbmVfbWF0Y2guZ3Jv
dXAoImRhdGUiKQorICAgICAgICAgICAgbmFtZSA9IGNvbW1pdFsnYXV0aG9yX25hbWUnXQorICAg
ICAgICAgICAgZW1haWwgPSBjb21taXRbJ2F1dGhvcl9lbWFpbCddCisgICAgICAgICAgICBkYXRl
ID0gY29tbWl0Wydjb21taXRfZGF0ZSddCisgICAgICAgICAgICByZXZpc2lvbiA9IGNvbW1pdFsn
cmV2aXNpb24nXQogCiAgICAgICAgICAgICAjIFNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBjb250
cmlidXRvciB3aXRoIHRoaXMgbmFtZSBvciBlbWFpbAotICAgICAgICAgICAgY291bnRlcl9ieV9u
YW1lID0gc2VsZi5fY291bnRlcnNfYnlfbmFtZS5nZXQoYXV0aG9yX25hbWUpCi0gICAgICAgICAg
ICBjb3VudGVyX2J5X2VtYWlsID0gc2VsZi5fY291bnRlcnNfYnlfZW1haWwuZ2V0KGF1dGhvcl9l
bWFpbCkKKyAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFtZSA9IGNvdW50ZXJzX2J5X25hbWUuZ2V0
KG5hbWUpCisgICAgICAgICAgICBjb3VudGVyX2J5X2VtYWlsID0gY291bnRlcnNfYnlfZW1haWwu
Z2V0KGVtYWlsKQogICAgICAgICAgICAgaWYgY291bnRlcl9ieV9uYW1lOgogICAgICAgICAgICAg
ICAgIGlmIGNvdW50ZXJfYnlfZW1haWw6CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvdW50ZXJf
YnlfbmFtZSAhPSBjb3VudGVyX2J5X2VtYWlsOgpAQCAtMTMyLDMxICsxOTIsMzEgQEAgY2xhc3Mg
U3VnZ2VzdE5vbWluYXRpb25zKENvbW1hbmQpOgogICAgICAgICAgICAgICAgICAgICAgICAgY291
bnRlcl9ieV9uYW1lWyduYW1lcyddIHw9IGNvdW50ZXJfYnlfZW1haWxbJ25hbWVzJ10KICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFtZVsnZW1haWxzJ10gfD0gY291bnRlcl9i
eV9lbWFpbFsnZW1haWxzJ10KICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFt
ZVsnY291bnQnXSArPSBjb3VudGVyX2J5X2VtYWlsLmdldCgnY291bnQnLCAwKQotICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fY291bnRlcnNfYnlfZW1haWxbYXV0aG9yX2VtYWlsXSA9IGNv
dW50ZXJfYnlfbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcnNfYnlfZW1haWxb
ZW1haWxdID0gY291bnRlcl9ieV9uYW1lCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgICAgICAgICAgIyBBZGQgZW1haWwgdG8gdGhlIGV4aXN0aW5nIGNvdW50ZXIKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fY291bnRlcnNfYnlfZW1haWxbYXV0aG9yX2VtYWlsXSA9IGNvdW50
ZXJfYnlfbmFtZQotICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X25hbWVbJ2VtYWlscydd
IHw9IHNldChbYXV0aG9yX2VtYWlsXSkKKyAgICAgICAgICAgICAgICAgICAgY291bnRlcnNfYnlf
ZW1haWxbZW1haWxdID0gY291bnRlcl9ieV9uYW1lCisgICAgICAgICAgICAgICAgICAgIGNvdW50
ZXJfYnlfbmFtZVsnZW1haWxzJ10gfD0gc2V0KFtlbWFpbF0pCiAgICAgICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgICAgIGlmIGNvdW50ZXJfYnlfZW1haWw6CiAgICAgICAgICAgICAgICAgICAg
ICMgQWRkIG5hbWUgdG8gdGhlIGV4aXN0aW5nIGNvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5fY291bnRlcnNfYnlfbmFtZVthdXRob3JfbmFtZV0gPSBjb3VudGVyX2J5X2VtYWlsCi0g
ICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfYnlfZW1haWxbJ25hbWVzJ10gfD0gc2V0KFthdXRo
b3JfbmFtZV0pCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzX2J5X25hbWVbbmFtZV0gPSBj
b3VudGVyX2J5X2VtYWlsCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfYnlfZW1haWxbJ25h
bWVzJ10gfD0gc2V0KFtuYW1lXSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAg
ICAgICAgICAjIENyZWF0ZSBuZXcgY291bnRlcgotICAgICAgICAgICAgICAgICAgICBuZXdfY291
bnRlciA9IHsnbmFtZXMnOiBzZXQoW2F1dGhvcl9uYW1lXSksICdlbWFpbHMnOiBzZXQoW2F1dGhv
cl9lbWFpbF0pLCAnbGF0ZXN0X25hbWUnOiBhdXRob3JfbmFtZSwgJ2xhdGVzdF9lbWFpbCc6IGF1
dGhvcl9lbWFpbCwgJ2NvbW1pdHMnOiAiIn0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY291
bnRlcnNfYnlfbmFtZVthdXRob3JfbmFtZV0gPSBuZXdfY291bnRlcgotICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9jb3VudGVyc19ieV9lbWFpbFthdXRob3JfZW1haWxdID0gbmV3X2NvdW50ZXIK
KyAgICAgICAgICAgICAgICAgICAgbmV3X2NvdW50ZXIgPSB7J25hbWVzJzogc2V0KFtuYW1lXSks
ICdlbWFpbHMnOiBzZXQoW2VtYWlsXSksICdsYXRlc3RfbmFtZSc6IG5hbWUsICdsYXRlc3RfZW1h
aWwnOiBlbWFpbCwgJ2NvbW1pdHMnOiAiIn0KKyAgICAgICAgICAgICAgICAgICAgY291bnRlcnNf
YnlfbmFtZVtuYW1lXSA9IG5ld19jb3VudGVyCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJz
X2J5X2VtYWlsW2VtYWlsXSA9IG5ld19jb3VudGVyCiAKLSAgICAgICAgICAgIGFzc2VydChzZWxm
Ll9jb3VudGVyc19ieV9uYW1lW2F1dGhvcl9uYW1lXSA9PSBzZWxmLl9jb3VudGVyc19ieV9lbWFp
bFthdXRob3JfZW1haWxdKQotICAgICAgICAgICAgY291bnRlciA9IHNlbGYuX2NvdW50ZXJzX2J5
X25hbWVbYXV0aG9yX25hbWVdCisgICAgICAgICAgICBhc3NlcnQoY291bnRlcnNfYnlfbmFtZVtu
YW1lXSA9PSBjb3VudGVyc19ieV9lbWFpbFtlbWFpbF0pCisgICAgICAgICAgICBjb3VudGVyID0g
Y291bnRlcnNfYnlfbmFtZVtuYW1lXQogICAgICAgICAgICAgY291bnRlclsnY291bnQnXSA9IGNv
dW50ZXIuZ2V0KCdjb3VudCcsIDApICsgMQogCi0gICAgICAgICAgICBpZiBzdm5faWQuaXNkaWdp
dCgpOgotICAgICAgICAgICAgICAgIHN2bl9pZCA9ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8iICsgc3ZuX2lkCi0gICAgICAgICAgICBjb3VudGVyWydjb21taXRzJ10gKz0gIiAg
Y29tbWl0OiAlcyBvbiAlcyBieSAlcyAoJXMpXG4iICUgKHN2bl9pZCwgY29tbWl0X2RhdGUsIGF1
dGhvcl9uYW1lLCBhdXRob3JfZW1haWwpCisgICAgICAgICAgICBpZiByZXZpc2lvbi5pc2RpZ2l0
KCk6CisgICAgICAgICAgICAgICAgcmV2aXNpb24gPSAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvIiArIHJldmlzaW9uCisgICAgICAgICAgICBjb3VudGVyWydjb21taXRzJ10gKz0g
IiAgY29tbWl0OiAlcyBvbiAlcyBieSAlcyAoJXMpXG4iICUgKHJldmlzaW9uLCBkYXRlLCBuYW1l
LCBlbWFpbCkKIAotICAgICAgICByZXR1cm4gc2VsZi5fY291bnRlcnNfYnlfZW1haWwKKyAgICAg
ICAgcmV0dXJuIGNvdW50ZXJzX2J5X2VtYWlsCiAKICAgICBkZWYgX2NvbGxlY3Rfbm9taW5hdGlv
bnMoc2VsZiwgY291bnRlcnNfYnlfZW1haWwpOgogICAgICAgICBub21pbmF0aW9ucyA9IFtdCkBA
IC0xNzIsNyArMjMyLDcgQEAgY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKENvbW1hbmQpOgogCiAg
ICAgICAgICAgICBpZiBwYXRjaF9jb3VudCA+PSBzZWxmLmNvbW1pdHRlcl9taW5pbXVtIGFuZCAo
bm90IGNvbnRyaWJ1dG9yIG9yIG5vdCBjb250cmlidXRvci5jYW5fY29tbWl0KToKICAgICAgICAg
ICAgICAgICByb2xlcy5hcHBlbmQoImNvbW1pdHRlciIpCi0gICAgICAgICAgICBpZiBwYXRjaF9j
b3VudCA+PSBzZWxmLnJldmlld2VyX21pbmltdW0gIGFuZCAobm90IGNvbnRyaWJ1dG9yIG9yIG5v
dCBjb250cmlidXRvci5jYW5fcmV2aWV3KToKKyAgICAgICAgICAgIGlmIHBhdGNoX2NvdW50ID49
IHNlbGYucmV2aWV3ZXJfbWluaW11bSBhbmQgY29udHJpYnV0b3IgYW5kIGNvbnRyaWJ1dG9yLmNh
bl9jb21taXQgYW5kIG5vdCBjb250cmlidXRvci5jYW5fcmV2aWV3OgogICAgICAgICAgICAgICAg
IHJvbGVzLmFwcGVuZCgicmV2aWV3ZXIiKQogICAgICAgICAgICAgaWYgcm9sZXM6CiAgICAgICAg
ICAgICAgICAgbm9taW5hdGlvbnMuYXBwZW5kKHsKQEAgLTE4Myw3ICsyNDMsNyBAQCBjbGFzcyBT
dWdnZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAgICAgICAgICAgICAgICAgfSkKICAgICAgICAg
cmV0dXJuIG5vbWluYXRpb25zCiAKLSAgICBkZWYgX3ByaW50X25vbWluYXRpb25zKHNlbGYsIG5v
bWluYXRpb25zKToKKyAgICBkZWYgX3ByaW50X25vbWluYXRpb25zKHNlbGYsIG5vbWluYXRpb25z
LCBjb3VudGVyc19ieV9lbWFpbCk6CiAgICAgICAgIGRlZiBub21pbmF0aW9uX2NtcChhX25vbWlu
YXRpb24sIGJfbm9taW5hdGlvbik6CiAgICAgICAgICAgICByb2xlc19yZXN1bHQgPSBjbXAoYV9u
b21pbmF0aW9uWydyb2xlcyddLCBiX25vbWluYXRpb25bJ3JvbGVzJ10pCiAgICAgICAgICAgICBp
ZiByb2xlc19yZXN1bHQ6CkBAIC0xOTcsNyArMjU3LDcgQEAgY2xhc3MgU3VnZ2VzdE5vbWluYXRp
b25zKENvbW1hbmQpOgogICAgICAgICAgICAgIyBUaGlzIGlzIGEgbGl0dGxlIGJpdCBvZiBhIGhh
Y2ssIGJ1dCBpdHMgY29udmllbmVudCB0byBqdXN0IHBhc3MgdGhlIG5vbWluYXRpb24gZGljdGlv
bmFyeSB0byB0aGUgZm9ybWF0aW5nIG9wZXJhdG9yLgogICAgICAgICAgICAgbm9taW5hdGlvblsn
cm9sZXNfc3RyaW5nJ10gPSBqb2luX3dpdGhfc2VwYXJhdG9ycyhub21pbmF0aW9uWydyb2xlcydd
KS51cHBlcigpCiAgICAgICAgICAgICBwcmludCAiJShyb2xlc19zdHJpbmcpczogJShhdXRob3Jf
bmFtZSlzICglKGF1dGhvcl9lbWFpbClzKSBoYXMgJShwYXRjaF9jb3VudClzIHJldmlld2VkIHBh
dGNoZXMiICUgbm9taW5hdGlvbgotICAgICAgICAgICAgY291bnRlciA9IHNlbGYuX2NvdW50ZXJz
X2J5X2VtYWlsW25vbWluYXRpb25bJ2F1dGhvcl9lbWFpbCddXQorICAgICAgICAgICAgY291bnRl
ciA9IGNvdW50ZXJzX2J5X2VtYWlsW25vbWluYXRpb25bJ2F1dGhvcl9lbWFpbCddXQogCiAgICAg
ICAgICAgICBpZiBzZWxmLnNob3dfY29tbWl0czoKICAgICAgICAgICAgICAgICBwcmludCBjb3Vu
dGVyWydjb21taXRzJ10KQEAgLTIzOCwxMCArMjk4LDkgQEAgY2xhc3MgU3VnZ2VzdE5vbWluYXRp
b25zKENvbW1hbmQpOgogICAgICAgICBzZWxmLl9pbml0X29wdGlvbnMob3B0aW9ucykKICAgICAg
ICAgcGF0Y2hfY291bnRzID0gc2VsZi5fY291bnRfcmVjZW50X3BhdGNoZXMoKQogICAgICAgICBu
b21pbmF0aW9ucyA9IHNlbGYuX2NvbGxlY3Rfbm9taW5hdGlvbnMocGF0Y2hfY291bnRzKQotICAg
ICAgICBzZWxmLl9wcmludF9ub21pbmF0aW9ucyhub21pbmF0aW9ucykKKyAgICAgICAgc2VsZi5f
cHJpbnRfbm9taW5hdGlvbnMobm9taW5hdGlvbnMsIHBhdGNoX2NvdW50cykKICAgICAgICAgaWYg
c2VsZi52ZXJib3NlOgogICAgICAgICAgICAgc2VsZi5fcHJpbnRfY291bnRzKHBhdGNoX2NvdW50
cykKIAotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIFN1Z2dlc3ROb21pbmF0aW9u
cygpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3Vn
Z2VzdG5vbWluYXRpb25zX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9uc191bml0dGVzdC5weQppbmRleCA4OGJlMjUzMDM5
NTkyM2ViNjdlOTZlNDg1MDgzYzkzOGU2YzMxNzFjLi5iMjRkZWY2ZmEzZTk1YTkzM2E4Y2JjZGYx
ZjAzMjM4MDNiYmJkYWVlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnNfdW5pdHRlc3QucHkK
QEAgLTQ1LDIxICs0NSw0NCBAQCBEYXRlOiAgIFRodSBTZXAgMTUgMTk6NTY6MjEgMjAxMSArMDAw
MAogCiAgICAgZ2l0LXN2bi1pZDogaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Vi
a2l0L3RydW5rQDk1MjE5IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYwogIiIi
Ci0gICAgbW9ja19zYW1lX2F1dGhvcl9jb21taXRfbWVzc2FnZSA9ICIiIlZhbHVlIHByb2ZpbGVz
IGNvbGxlY3Qgbm8gaW5mb3JtYXRpb24gZm9yIGdsb2JhbCB2YXJpYWJsZXMKKyAgICBtb2NrX3Nh
bWVfYXV0aG9yX2NvbW1pdF9tZXNzYWdlID0gIiIiQXV0aG9yOiBmcGl6bG9AYXBwbGUuY29tIDxm
cGl6bG9AYXBwbGUuY29tQDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYz4KK0Rh
dGU6ICAgVGh1IFNlcCAxNSAxOTo1NjoyMSAyMDExICswMDAwCisKK1ZhbHVlIHByb2ZpbGVzIGNv
bGxlY3Qgbm8gaW5mb3JtYXRpb24gZm9yIGdsb2JhbCB2YXJpYWJsZXMKIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODE0MwogCi1SZXZpZXdlZCBieSBHZW9mZnJleSBH
YXJlbi4iIiIKK1Jldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCitnaXQtc3ZuLWlkOiBodHRw
Oi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmtAOTUyMTkgMjY4ZjQ1Y2Mt
Y2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCisiIiIKKworICAgIGRlZiBfbWFrZV9vcHRpb25z
KHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgZGVmYXVsdHMgPSB7CisgICAgICAgICAgICAnY29t
bWl0dGVyX21pbmltdW0nOiAxMCwKKyAgICAgICAgICAgICdtYXhfY29tbWl0X2FnZSc6IDksCisg
ICAgICAgICAgICAncmV2aWV3ZXJfbWluaW11bSc6IDgwLAorICAgICAgICAgICAgJ3Nob3dfY29t
bWl0cyc6IEZhbHNlLAorICAgICAgICAgICAgJ3ZlcmJvc2UnOiBGYWxzZSwKKyAgICAgICAgfQor
ICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoKipkZWZhdWx0cykKKyAgICAgICAgb3B0aW9u
cy51cGRhdGUoKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBvcHRpb25zCiAKICAgICBkZWYgdGVz
dF9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKHNlbGYpOgorICAgICAgICBzZWxmLm1heERpZmYgPSBO
b25lCiAgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCiAgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlv
bnMgPSBTdWdnZXN0Tm9taW5hdGlvbnMoKQotICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zLl9p
bml0X29wdGlvbnMob3B0aW9ucz1Nb2NrT3B0aW9ucyhyZXZpZXdlcl9taW5pbXVtPTgwLCBjb21t
aXR0ZXJfbWluaW11bT0xMCwgbWF4X2NvbW1pdF9hZ2U9OSwgc2hvd19jb21taXRzPUZhbHNlLCB2
ZXJib3NlPUZhbHNlKSkKKyAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5faW5pdF9vcHRpb25z
KG9wdGlvbnM9c2VsZi5fbWFrZV9vcHRpb25zKCkpCiAgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlv
bnMuYmluZF90b190b29sKHRvb2wpCiAKICAgICAgICAgdG9vbC5leGVjdXRpdmUucnVuX2NvbW1h
bmQgPSBsYW1iZGEgY29tbWFuZDogc2VsZi5tb2NrX2dpdF9vdXRwdXQKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsaXN0KHN1Z2dlc3Rfbm9taW5hdGlvbnMuX3JlY2VudF9jb21taXRfbWVzc2Fn
ZXMoKSksIFtzZWxmLm1vY2tfc2FtZV9hdXRob3JfY29tbWl0X21lc3NhZ2VdKQogCi0gICAgbW9j
a19ub25fY29tbWl0dGVyX2NvbW1pdF9tZXNzYWdlID0gIiIiTGV0IFRlc3RXZWJLaXRBUEkgd29y
ayBmb3IgY2hyb21pdW0KKyAgICBtb2NrX25vbl9jb21taXR0ZXJfY29tbWl0X21lc3NhZ2UgPSAi
IiIKK0F1dGhvcjogY29tbWl0LXF1ZXVlQHdlYmtpdC5vcmcgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnQDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYz4KK0RhdGU6ICAgVGh1IFNl
cCAxNSAxNDowODo0MiAyMDExICswMDAwCisKK0xldCBUZXN0V2ViS2l0QVBJIHdvcmsgZm9yIGNo
cm9taXVtCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc3NTYKIAog
UGF0Y2ggYnkgWGlhbnpodSBXYW5nIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+IG9uIDIwMTEt
MDktMTUKQEAgLTY3LDExICs5MCwxNSBAQCBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgogCiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtOgogCi0qIFdlYktpdC5neXA6IiIiCisqIFdlYktpdC5neXA6CisK
K2dpdC1zdm4taWQ6IGh0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVu
a0A5NTE4OCAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKKyIiIgogCiAgICAg
ZGVmIHRlc3RfYmFzaWMoc2VsZik6CiAgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJSRVZJRVdF
UjogWGlhbnpodSBXYW5nICh3YW5neGlhbnpodUBjaHJvbWl1bS5vcmcpIGhhcyA4OCByZXZpZXdl
ZCBwYXRjaGVzXG4iCisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9tYWtlX29wdGlvbnMoKQogICAg
ICAgICBzdWdnZXN0X25vbWluYXRpb25zID0gU3VnZ2VzdE5vbWluYXRpb25zKCkKLSAgICAgICAg
c3VnZ2VzdF9ub21pbmF0aW9ucy5faW5pdF9vcHRpb25zKG9wdGlvbnM9TW9ja09wdGlvbnMocmV2
aWV3ZXJfbWluaW11bT04MCwgY29tbWl0dGVyX21pbmltdW09MTAsIG1heF9jb21taXRfYWdlPTks
IHNob3dfY29tbWl0cz1GYWxzZSwgdmVyYm9zZT1GYWxzZSkpCisgICAgICAgIHN1Z2dlc3Rfbm9t
aW5hdGlvbnMuX2luaXRfb3B0aW9ucyhvcHRpb25zPW9wdGlvbnMpCiAgICAgICAgIHN1Z2dlc3Rf
bm9taW5hdGlvbnMuX3JlY2VudF9jb21taXRfbWVzc2FnZXMgPSBsYW1iZGE6IFtzZWxmLm1vY2tf
bm9uX2NvbW1pdHRlcl9jb21taXRfbWVzc2FnZSBmb3IgXyBpbiByYW5nZSg4OCldCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhzdWdnZXN0X25vbWluYXRpb25zLCBbXSwgZXhw
ZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCwgb3B0aW9ucz1Nb2NrT3B0aW9ucyhyZXZpZXdl
cl9taW5pbXVtPTgwLCBjb21taXR0ZXJfbWluaW11bT0xMCwgbWF4X2NvbW1pdF9hZ2U9OSwgc2hv
d19jb21taXRzPUZhbHNlLCB2ZXJib3NlPUZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhl
Y3V0ZV9vdXRwdXRzKHN1Z2dlc3Rfbm9taW5hdGlvbnMsIFtdLCBleHBlY3RlZF9zdGRvdXQ9ZXhw
ZWN0ZWRfc3Rkb3V0LCBvcHRpb25zPW9wdGlvbnMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200055</attachid>
            <date>2013-04-29 16:31:14 -0700</date>
            <delta_ts>2013-04-29 17:46:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115285-20130429163029.patch</filename>
            <type>text/plain</type>
            <size>28566</size>
            <attacher name="Glenn Adams">glenn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MjM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2UxZTU5N2IyZGZlOGM3ZmY4MjMyODBhMmQ2ODY5ODcz
MTFhN2JlOC4uMmMxNWZiYzc4ZmY5ZmIyZTE4ZWVkMTg0MDJiMzdiM2JkYjVjNGQwMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1
IEBACisyMDEzLTA0LTI5ICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CisKKyAgICAg
ICAgW3dlYmtpdHB5XSBzdWdnZXN0LW5vbWluYXRpb25zIGRvZXNuJ3QgY291bnQgYWxsIHF1YWxp
ZmllZCBwYXRjaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTUyODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXggY29tbWl0IGFuYWx5c2lzIHNvIHRoYXQgcGF0Y2hlcyBtYWRlIGJ5IGFuIGV4aXN0
aW5nIGNvbW1pdHRlciBhcmUgY291bnRlZCB0b3dhcmRzIHJldmlld2VyCisgICAgICAgIG5vbWlu
YXRpb24uIEltcHJvdmUgY29tbWl0IGxvZyBwYXJzaW5nLgorCisgICAgICAgIEFkZCBtaXNzaW5n
IGVtYWlsIGFkZHJlc3NlcyBpbiBjb250cmlidXRvcnMgbGlzdCB0byBhY2NvdW50IGZvciBleGlz
dGluZyBsb2cgZW50cmllcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2Nv
bmZpZy9jb250cmlidXRvcnMuanNvbjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5OgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRp
b25zKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5fX2luaXRfXyk6CisgICAgICAgIChT
dWdnZXN0Tm9taW5hdGlvbnMuX3JlY2VudF9jb21taXRfbWVzc2FnZXMpOgorICAgICAgICAoU3Vn
Z2VzdE5vbWluYXRpb25zLl9hdXRob3JfbmFtZV9mcm9tX2VtYWlsKToKKyAgICAgICAgKFN1Z2dl
c3ROb21pbmF0aW9ucy5fY29tbWl0X2RhdGVfZnJvbV9tYXRjaCk6CisgICAgICAgIChTdWdnZXN0
Tm9taW5hdGlvbnMuX2NvbnRyaWJ1dG9yX2Zyb21fZW1haWwpOgorICAgICAgICAoU3VnZ2VzdE5v
bWluYXRpb25zLl9hbmFseXplX2NvbW1pdCk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMu
X2FuYWx5emVfY29tbWl0cyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMuX2NvdW50X3Jl
Y2VudF9wYXRjaGVzLl9vbl9hbmFseXNpcyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMu
X2NvdW50X3JlY2VudF9wYXRjaGVzKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5fY29s
bGVjdF9ub21pbmF0aW9ucyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMuX3ByaW50X25v
bWluYXRpb25zKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5leGVjdXRlKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAoX21ha2Vfb3B0aW9ucyk6CisgICAgICAgICh0ZXN0X3JlY2Vu
dF9jb21taXRfbWVzc2FnZXMpOgorICAgICAgICAodGVzdF9iYXNpYyk6CisKIDIwMTMtMDQtMjYg
IFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEJ1
aWxkIGJyZWFrIHVzaW5nIGpoYnVpbGQgb24gdWJ1bnR1IDEzLjA0CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29udHJpYnV0b3JzLmpzb24gYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29udHJpYnV0b3JzLmpzb24KaW5kZXgg
Mjg4Y2JmZDc4MDJiNjU5MTVkZjA1MDViMmU2YmY3MDQyYzAzOTU4Yy4uMDAzNGM2Y2NjOTM2ZGVk
NjEzMGMxMzBjYTk5ODhkNmFhMThjNmZkMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1dG9ycy5qc29uCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbgpAQCAtNDQsNiArNDQsNyBA
QAogICAgICAgICAiS3VsYW50aGFpdmVsIFBhbGFuaWNoYW15IjogeyJlbWFpbHMiOiBbImt1bGFu
dGhhaXZlbEBjb2RlYXVyb3JhLm9yZyJdLCAibmlja3MiOiBbImt2ZWwiXX0sCiAgICAgICAgICJL
b2ppIEhhcmEiOiB7ImVtYWlscyI6IFsia29qaWhAY2hyb21pdW0ub3JnIl0sICJuaWNrcyI6IFsi
a29qaWgiXX0sCiAgICAgICAgICJLb2ppIElzaGlpIjogeyJlbWFpbHMiOiBbImtvamlpc2hpQGdt
YWlsLmNvbSJdfSwKKyAgICAgICAgIkxpYSBDaGVuIjogeyJlbWFpbHMiOiBbImxpYWNoZW5Acmlt
LmNvbSJdfSwKICAgICAgICAgIk1pY2hhZWwgUHJ1ZXR0IjogeyJlbWFpbHMiOiBbIm1pY2hhZWxA
NjhrLm9yZyJdLCAibmlja3MiOiBbIm1wcnVldHQiXX0sCiAgICAgICAgICJNaWhhaSBCYWxhbiI6
IHsiZW1haWxzIjogWyJtaWJhbGFuQGFkb2JlLmNvbSJdLCAibmlja3MiOiBbIm1pQ2hvdSJdfSwK
ICAgICAgICAgIk1paGFpIE1hZXJlYW4iOiB7ImVtYWlscyI6IFsibW1hZXJlYW5AYWRvYmUuY29t
Il0sICJuaWNrcyI6IFsibW1hZXJlYW4iXX0sCkBAIC0xMjEsNyArMTIyLDcgQEAKICAgICAgICAg
IkNocmlzIEd1aWxsb3J5IjogeyJlbWFpbHMiOiBbImN0Z3VpbEBjaHJvbWl1bS5vcmciLCAiY2hy
aXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbSJdLCAibmlja3MiOiBbImN0Z3VpbCJdfSwKICAgICAgICAg
IkNocmlzIFBldGVyc2VuIjogeyJlbWFpbHMiOiBbImNwZXRlcnNlbkBhcHBsZS5jb20iXSwgIm5p
Y2tzIjogWyJjcGV0ZXJzZW4iXX0sCiAgICAgICAgICJDaHJpc3RpYW4gRHl3YW4iOiB7ImVtYWls
cyI6IFsiY2hyaXN0aWFuQHR3b3RvYXN0cy5kZSIsICJjaHJpc3RpYW5Ad2Via2l0Lm9yZyIsICJj
aHJpc3RpYW5AbGFuZWRvLmNvbSJdfSwKLSAgICAgICAgIkNocmlzdG9waGUgRHVtZXoiOiB7ImVt
YWlscyI6IFsiZGNocmlzQGdtYWlsLmNvbSIsICJjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tIl0s
ICJuaWNrcyI6IFsiY2R1bWV6Il19LAorICAgICAgICAiQ2hyaXN0b3BoZSBEdW1leiI6IHsiZW1h
aWxzIjogWyJkY2hyaXNAZ21haWwuY29tIiwgImNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20iLCAi
Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20iXSwgIm5pY2tzIjogWyJjZHVtZXoiXX0sCiAgICAg
ICAgICJDbGF1ZGlvIFNhYXZlZHJhIjogeyJlbWFpbHMiOiBbImNzYWF2ZWRyYUBpZ2FsaWEuY29t
Il0sICJuaWNrcyI6IFsiY2xhdWRpb19fXyJdfSwKICAgICAgICAgIkNvbGxpbiBKYWNrc29uIjog
eyJlbWFpbHMiOiBbImNvbGxpbmpAd2Via2l0Lm9yZyJdLCAibmlja3MiOiBbImNvbGxpbmphY2tz
b24iXX0sCiAgICAgICAgICJDcmlzIE5lY2thciI6IHsiZW1haWxzIjogWyJjZG5AY2hyb21pdW0u
b3JnIl0sICJuaWNrcyI6IFsiY25lY2thciJdfSwKQEAgLTE2Myw3ICsxNjQsNyBAQAogICAgICAg
ICAiR3JlZyBCb2xzaW5nYSI6IHsiZW1haWxzIjogWyJib2xzaW5nYUBhcHBsZS5jb20iXX0sCiAg
ICAgICAgICJHcmVnZyBUYXZhcmVzIjogeyJlbWFpbHMiOiBbImdtYW5AY2hyb21pdW0ub3JnIiwg
ImdtYW5AZ29vZ2xlLmNvbSJdLCAibmlja3MiOiBbImdtYW4iXX0sCiAgICAgICAgICJHcnplZ29y
eiBDemFqa293c2tpIjogeyJlbWFpbHMiOiBbImcuY3phamtvd3NraUBzYW1zdW5nLmNvbSJdLCAi
bmlja3MiOiBbImdyemVnb3J6Il19LAotICAgICAgICAiSGFucyBNdWxsZXIiOiB7ImVtYWlscyI6
IFsiZ2lsZXNfam9wbGluQHlhaG9vLmNvbSJdLCAibmlja3MiOiBbImhhbnNtdWxsZXIiXX0sCisg
ICAgICAgICJIYW5zIE11bGxlciI6IHsiZW1haWxzIjogWyJnaWxlc19qb3BsaW5AeWFob28uY29t
IiwgImhtdWxsZXJAYWRvYmUuY29tIl0sICJuaWNrcyI6IFsiaGFuc211bGxlciJdfSwKICAgICAg
ICAgIkhhbnMgV2VubmJvcmciOiB7ImVtYWlscyI6IFsiaGFuc0BjaHJvbWl1bS5vcmciXSwgIm5p
Y2tzIjogWyJod2VubmJvcmciXX0sCiAgICAgICAgICJIYXlhdG8gSXRvIjogeyJlbWFpbHMiOiBb
ImhheWF0b0BjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJoYXlhdG8iXX0sCiAgICAgICAgICJI
aXJvbm9yaSBCb25vIjogeyJlbWFpbHMiOiBbImhib25vQGNocm9taXVtLm9yZyJdLCAibmlja3Mi
OiBbImhib25vIl19LApAQCAtMTk5LDcgKzIwMCw3IEBACiAgICAgICAgICJKb2huIEtub3R0ZW5i
ZWx0IjogeyJlbWFpbHMiOiBbImprbm90dGVuQGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBbImpr
bm90dGVuIl19LAogICAgICAgICAiSm9obm55IERpbmciOiB7ImVtYWlscyI6IFsiam5kQGNocm9t
aXVtLm9yZyIsICJqb2hubnlkaW5nLndlYmtpdEBnbWFpbC5jb20iXSwgIm5pY2tzIjogWyJqb2hu
bnlkaW5nIl19LAogICAgICAgICAiSm9uIExlZSI6IHsiZW1haWxzIjogWyJqb25sZWVAYXBwbGUu
Y29tIl0sICJuaWNrcyI6IFsiam9ubGVlIl19LAotICAgICAgICAiSm9uYXRoYW4gRG9uZyI6IHsi
ZW1haWxzIjogWyJqb25hdGhhbi5kb25nLndlYmtpdEBnbWFpbC5jb20iXSwgIm5pY2tzIjogWyJq
b25kb25nIl19LAorICAgICAgICAiSm9uYXRoYW4gRG9uZyI6IHsiZW1haWxzIjogWyJqb25hdGhh
bi5kb25nLndlYmtpdEBnbWFpbC5jb20iLCAiam9uYXRoYW4uZG9uZ0B0b3JjaG1vYmlsZS5jb20u
Y24iXSwgIm5pY2tzIjogWyJqb25kb25nIl19LAogICAgICAgICAiSm9vbmUgSHVyIjogeyJlbWFp
bHMiOiBbImpvb25lQHdlYmtpdC5vcmciLCAiam9vbmUuaHVyQGludGVsLmNvbSJdLCAibmlja3Mi
OiBbImpvb25lIl19LAogICAgICAgICAiSm9vc3QgZGUgVmFsayI6IHsiZW1haWxzIjogWyJqb29z
dEB3ZWJraXQub3JnIiwgIndlYmtpdC1kZXZAam9vc3RkZXZhbGsubmwiXSwgIm5pY2tzIjogWyJB
bHRoYSJdfSwKICAgICAgICAgIkpvc2h1YSBCZWxsIjogeyJlbWFpbHMiOiBbImpzYmVsbEBjaHJv
bWl1bS5vcmciLCAianNiZWxsQGdvb2dsZS5jb20iXSwgIm5pY2tzIjogWyJqc2JlbGwiXX0sCkBA
IC0zMTUsNyArMzE2LDcgQEAKICAgICAgICAgIlRyZXkgTWF0dGVzb24iOiB7ImVtYWlscyI6IFsi
dHJleUB1c2EubmV0Il0sICJuaWNrcyI6IFsidHJleSJdfSwKICAgICAgICAgIlRyaXN0YW4gTydU
aWVybmV5IjogeyJlbWFpbHMiOiBbInRyaXN0YW5Ab3RpZXJuZXkubmV0IiwgInRyaXN0YW5AYXBw
bGUuY29tIl19LAogICAgICAgICAiVmFuZ2VsaXMgS29ra2V2aXMiOiB7ImVtYWlscyI6IFsidmFu
Z2VsaXNAY2hyb21pdW0ub3JnIl0sICJuaWNrcyI6IFsidmFuZ2VsaXMiXX0sCi0gICAgICAgICJW
aWF0Y2hlc2xhdiBPc3RhcGVua28iOiB7ImVtYWlscyI6IFsib3N0YXA3M0BnbWFpbC5jb20iLCAi
di5vc3RhcGVua29Ac2Ftc3VuZy5jb20iLCAidi5vc3RhcGVua29Ac2lzYS5zYW1zdW5nLmNvbSJd
LCAibmlja3MiOiBbIm9zdGFwIl19LAorICAgICAgICAiVmlhdGNoZXNsYXYgT3N0YXBlbmtvIjog
eyJlbWFpbHMiOiBbIm9zdGFwNzNAZ21haWwuY29tIiwgIm9zdGFwZW5rby52aWF0Y2hlc2xhdkBu
b2tpYS5jb20iLCAidi5vc3RhcGVua29Ac2Ftc3VuZy5jb20iLCAidi5vc3RhcGVua29Ac2lzYS5z
YW1zdW5nLmNvbSJdLCAibmlja3MiOiBbIm9zdGFwIl19LAogICAgICAgICAiVmljdG9yIENhcmJ1
bmUiOiB7ImVtYWlscyI6IFsidmNhcmJ1bmVAY2hyb21pdW0ub3JnIiwgInZpY3RvckByb3NlZHUu
b3JnIl0sICJuaWNrcyI6IFsidmNhcmJ1bmUiXX0sCiAgICAgICAgICJWaWN0b3IgV2FuZyI6IHsi
ZW1haWxzIjogWyJ2aWN0b3J3QGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBbInZpY3RvcnciXX0s
CiAgICAgICAgICJWaWN0b3JpYSBLaXJzdCI6IHsiZW1haWxzIjogWyJ2cmtAY2hyb21pdW0ub3Jn
IiwgInZya0Bnb29nbGUuY29tIl0sICJuaWNrcyI6IFsidnJrIl19LApAQCAtMzM3LDExICszMzgs
MTEgQEAKICAgICAgICAgIll1cWlhbmcgWGlhbiI6IHsiZW1haWxzIjogWyJ5dXFpYW5nLnhpYW5A
aW50ZWwuY29tIl19LAogICAgICAgICAiWXV6byBGdWppc2hpbWEiOiB7ImVtYWlscyI6IFsieXV6
b0Bnb29nbGUuY29tIl0sICJuaWNrcyI6IFsieXV6byJdfSwKICAgICAgICAgIlphbGFuIEJ1anRh
cyI6IHsiZW1haWxzIjogWyJ6YWxhbkBhcHBsZS5jb20iLCAiemJ1anRhc0BnbWFpbC5jb20iLCAi
emFsYW4uYnVqdGFzQG5va2lhLmNvbSJdLCAibmlja3MiOiBbInphbGFuIl19LAotICAgICAgICAi
WmVubyBBbGJpc3NlciI6IHsiZW1haWxzIjogWyJ6ZW5vQHdlYmtpdC5vcmciLCAiemVuby5hbGJp
c3NlckBub2tpYS5jb20iXSwgIm5pY2tzIjogWyJ6YWxiaXNzZXIiXX0sCisgICAgICAgICJaZW5v
IEFsYmlzc2VyIjogeyJlbWFpbHMiOiBbInplbm9Ad2Via2l0Lm9yZyIsICJ6ZW5vLmFsYmlzc2Vy
QG5va2lhLmNvbSIsICJ6ZW5vLmFsYmlzc2VyQGRpZ2lhLmNvbSJdLCAibmlja3MiOiBbInphbGJp
c3NlciJdfSwKICAgICAgICAgIlpoZW55YW8gTW8iOiB7ImVtYWlscyI6IFsiem1vQGdvb2dsZS5j
b20iXSwgIm5pY2tzIjogWyJ6aGVueWFvIl19LAogICAgICAgICAiWm9sdGFuIEFydmFpIjogeyJl
bWFpbHMiOiBbInphcnZhaUBpbmYudS1zemVnZWQuaHUiXSwgIm5pY2tzIjogWyJhemJlc3RfaHUi
XX0sCiAgICAgICAgICJab2x0YW4gSG9ydmF0aCI6IHsiZW1haWxzIjogWyJ6b2x0YW5Ad2Via2l0
Lm9yZyIsICJoem9sdGFuQGluZi51LXN6ZWdlZC5odSIsICJob3J2YXRoLnpvbHRhbi42QHN0dWQu
dS1zemVnZWQuaHUiXSwgIm5pY2tzIjogWyJ6b2x0YW4iXX0sCi0gICAgICAgICJcdTAxN2RhbiBE
b2Jlclx1MDE2MWVrIjogeyJlbWFpbHMiOiBbInphbmRvYmVyc2VrQGdtYWlsLmNvbSJdLCAibmlj
a3MiOiBbInpkb2JlcnNlayJdfQorICAgICAgICAiXHUwMTdkYW4gRG9iZXJcdTAxNjFlayI6IHsi
ZW1haWxzIjogWyJ6YW5kb2JlcnNla0BnbWFpbC5jb20iLCAiemFuZG9iZXJzZWtAaWdhbGlhLmNv
bSJdLCAibmlja3MiOiBbInpkb2JlcnNlayJdfQogICAgIH0sCiAgICAgIlJldmlld2VycyI6IHsK
ICAgICAgICAgIkFiaGlzaGVrIEFyeWEiOiB7ImVtYWlscyI6IFsiaW5mZXJub0BjaHJvbWl1bS5v
cmciXSwgIm5pY2tzIjogWyJpbmZlcm5vLXNlYyJdfSwKQEAgLTM1NSw3ICszNTYsNyBAQAogICAg
ICAgICAiQWxleGFuZGVyIFBhdmxvdiI6IHsiZW1haWxzIjogWyJhcGF2bG92QGNocm9taXVtLm9y
ZyIsICJwYXZsb3Y4MUBnbWFpbC5jb20iXSwgIm5pY2tzIjogWyJhcGF2bG92Il19LAogICAgICAg
ICAiQWxleGFuZHJ1IENoaWN1bGl0YSI6IHsiZW1haWxzIjogWyJhY2hpY3VAYWRvYmUuY29tIl0s
ICJuaWNrcyI6IFsiYWNoaWN1Il19LAogICAgICAgICAiQWxleGV5IFByb3NrdXJ5YWtvdiI6IHsi
ZW1haWxzIjogWyJhcEB3ZWJraXQub3JnIiwgImFwQGFwcGxlLmNvbSJdLCAibmlja3MiOiBbImFw
Il19LAotICAgICAgICAiQWxleGlzIE1lbmFyZCI6IHsiZW1haWxzIjogWyJhbGV4aXNAd2Via2l0
Lm9yZyIsICJtZW5hcmRAa2RlLm9yZyJdLCAibmlja3MiOiBbImRhcmt0ZWFycyJdfSwKKyAgICAg
ICAgIkFsZXhpcyBNZW5hcmQiOiB7ImVtYWlscyI6IFsiYWxleGlzQHdlYmtpdC5vcmciLCAibWVu
YXJkQGtkZS5vcmciLCAiYWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnIl0sICJuaWNrcyI6IFsi
ZGFya3RlYXJzIl19LAogICAgICAgICAiQWxpY2UgTGl1IjogeyJlbWFpbHMiOiBbImFsaWNlLmxp
dUBhcHBsZS5jb20iXSwgIm5pY2tzIjogWyJhbGl1Il19LAogICAgICAgICAiQWxsYW4gU2FuZGZl
bGQgSmVuc2VuIjogeyJlbWFpbHMiOiBbImFsbGFuLmplbnNlbkBkaWdpYS5jb20iLCAia2RlQGNh
cmV3b2xmLmNvbSIsICJzYW5kZmVsZEBrZGUub3JnIiwgImFsbGFuLmplbnNlbkBub2tpYS5jb20i
XSwgIm5pY2tzIjogWyJjYXJld29sZiJdfSwKICAgICAgICAgIkFscCBUb2tlciI6IHsiZW1haWxz
IjogWyJhbHBAbnVhbnRpLmNvbSIsICJhbHBAYXRva2VyLmNvbSIsICJhbHBAd2Via2l0Lm9yZyJd
LCAibmlja3MiOiBbImFscCJdfSwKQEAgLTQxNSw3ICs0MTYsNyBAQAogICAgICAgICAiSmVzc2ll
IEJlcmxpbiI6IHsiZW1haWxzIjogWyJqYmVybGluQHdlYmtpdC5vcmciLCAiamJlcmxpbkBhcHBs
ZS5jb20iXSwgIm5pY2tzIjogWyJqZXNzaWViZXJsaW4iXX0sCiAgICAgICAgICJKaWFuIExpIjog
eyJlbWFpbHMiOiBbImppYW5saUBjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJqaWFubGkiXX0s
CiAgICAgICAgICJKb2NlbHluIFR1cmNvdHRlIjogeyJlbWFpbHMiOiBbImpvY2VseW4udHVyY290
dGVAZGlnaWEuY29tIiwgImpvY2VseW4udHVyY290dGVAbm9raWEuY29tIl0sICJuaWNrcyI6IFsi
anR1cmNvdHRlIl19LAotICAgICAgICAiSm9jaGVuIEVpc2luZ2VyIjogeyJlbWFpbHMiOiBbImpv
Y2hlbkBjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJqb2NoZW5fXyJdfSwKKyAgICAgICAgIkpv
Y2hlbiBFaXNpbmdlciI6IHsiZW1haWxzIjogWyJqb2NoZW5AY2hyb21pdW0ub3JnIiwgImpvY2hl
bkBjaHJvbWl1bS5vciJdLCAibmlja3MiOiBbImpvY2hlbl9fIl19LAogICAgICAgICAiSm9obiBT
dWxsaXZhbiI6IHsiZW1haWxzIjogWyJzdWxsaXZhbkBhcHBsZS5jb20iXSwgIm5pY2tzIjogWyJz
dWxsaXZhbiJdfSwKICAgICAgICAgIkpvbiBIb25leWN1dHQiOiB7ImVtYWlscyI6IFsiamhvbmV5
Y3V0dEBhcHBsZS5jb20iXSwgIm5pY2tzIjogWyJqaG9uZXljdXR0Il19LAogICAgICAgICAiSm9z
ZXBoIFBlY29yYXJvIjogeyJlbWFpbHMiOiBbImpvZXBlY2tAd2Via2l0Lm9yZyIsICJwZWNvcmFy
b0BhcHBsZS5jb20iXSwgIm5pY2tzIjogWyJKb2VQZWNrIl19LApAQCAtNDY5LDcgKzQ3MCw3IEBA
CiAgICAgICAgICJWaWNraSBNdXJsZXkiOiB7ImVtYWlscyI6IFsidmlja2lAYXBwbGUuY29tIl19
LAogICAgICAgICAiVnNldm9sb2QgVmxhc292IjogeyJlbWFpbHMiOiBbInZzZXZpa0BjaHJvbWl1
bS5vcmciXSwgIm5pY2tzIjogWyJ2c2V2aWsiXX0sCiAgICAgICAgICJYYW4gTG9wZXoiOiB7ImVt
YWlscyI6IFsieGFuLmxvcGV6QGdtYWlsLmNvbSIsICJ4YW5AZ25vbWUub3JnIiwgInhhbkB3ZWJr
aXQub3JnIiwgInhsb3BlekBpZ2FsaWEuY29tIl0sICJuaWNrcyI6IFsieGFuIl19LAotICAgICAg
ICAiWW9uZyBMaSI6IHsiZW1haWxzIjogWyJ5b25nLmxpLndlYmtpdEBvdXRsb29rLmNvbSJdLCAi
bmlja3MiOiBbInlvbGkiXX0sCisgICAgICAgICJZb25nIExpIjogeyJlbWFpbHMiOiBbInlvbmcu
bGkud2Via2l0QG91dGxvb2suY29tIiwgInlvbGlAcmltLmNvbSJdLCAibmlja3MiOiBbInlvbGki
XX0sCiAgICAgICAgICJZdXJ5IFNlbWlraGF0c2t5IjogeyJlbWFpbHMiOiBbInl1cnlzQGNocm9t
aXVtLm9yZyJdLCAibmlja3MiOiBbInl1cnlzIl19LAogICAgICAgICAiWXV0YSBLaXRhbXVyYSI6
IHsiZW1haWxzIjogWyJ5dXRha0BjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJ5dXRhayJdfSwK
ICAgICAgICAgIlphY2sgUnVzaW4iOiB7ImVtYWlscyI6IFsiemFja0BrZGUub3JnIl0sICJuaWNr
cyI6IFsiemFja3IiXX0sCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weQppbmRleCA4NDViNzgyNzA5NjUyMmQ1
ZTEyZjUwYzlmNjI3YjFlZTM1Y2U5ZDcwLi5iMWIxOGNiNzZjYjI2ODdjZjZiNjE0MmNkNTcxZDZi
YWQ0ZWEzMGE5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnMucHkKQEAgLTI3LDE5ICsyNywyNiBAQAogIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGNhbGVuZGFyCiBmcm9tIG9wdHBh
cnNlIGltcG9ydCBtYWtlX29wdGlvbgogaW1wb3J0IHJlCiAKIGZyb20gd2Via2l0cHkuY29tbW9u
LmNoZWNrb3V0LmNoYW5nZWxvZyBpbXBvcnQgQ2hhbmdlTG9nRW50cnkKIGZyb20gd2Via2l0cHku
Y29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0Ci1mcm9tIHdlYmtp
dHB5LnRvb2wgaW1wb3J0IHN0ZXBzCiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQg
am9pbl93aXRoX3NlcGFyYXRvcnMKIGZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29s
IGltcG9ydCBDb21tYW5kCiAKIAogY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKENvbW1hbmQpOgog
ICAgIG5hbWUgPSAic3VnZ2VzdC1ub21pbmF0aW9ucyIKLSAgICBoZWxwX3RleHQgPSAiU3VnZ2Vz
dCBjb250cmlidXRvcnMgZm9yIGNvbW1pdHRlci9yZXZpZXdlciBub21pbmF0aW9ucyIKKyAgICBo
ZWxwX3RleHQgPSAiU3VnZ2VzdCBub21pbmF0aW9ucyBmb3IgY29tbWl0dGVyL3Jldmlld2VyIHJv
bGUiCisKKyAgICBfbGVhZGluZ19pbmRlbnRfcmVnZXhwID0gcmUuY29tcGlsZShyIl5bIF17NH0i
LCByZS5NVUxUSUxJTkUpCisgICAgX3Jldmlld2VkX2J5X3JlZ2V4cCA9IHJlLmNvbXBpbGUoQ2hh
bmdlTG9nRW50cnkucmV2aWV3ZWRfYnlfcmVnZXhwLCByZS5NVUxUSUxJTkUpCisgICAgX3BhdGNo
X2J5X3JlZ2V4cCA9IHJlLmNvbXBpbGUocideUGF0Y2ggYnkgKD9QPG5hbWU+Lis/KVxzKzwoP1A8
ZW1haWw+W148Pl0rKT4gb24gKD9QPGRhdGU+XGR7NH0tXGR7Mn0tXGR7Mn0pJCcsIHJlLk1VTFRJ
TElORSkKKyAgICBfY29tbWl0dGVyX3JlZ2V4cCA9IHJlLmNvbXBpbGUocideQXV0aG9yOiAoP1A8
ZW1haWw+XFMrKVxzKzxbXj5dKz4kJywgcmUuTVVMVElMSU5FKQorICAgIF9kYXRlX3JlZ2V4cCA9
IHJlLmNvbXBpbGUocideRGF0ZTogICBcU3szfSAoP1A8bW9udGg+XFN7M30pICg/UDxkYXk+XGR7
MSwyfSkgKD9QPHRpbWU+XGR7Mn06XGR7Mn06XGR7Mn0pICg/UDx5ZWFyPlxkezR9KSBbXCtcLV1c
ZHs0fSQnLCByZS5NVUxUSUxJTkUpCisgICAgX3JldmlzaW9uX3JlZ2V4cCA9IHJlLmNvbXBpbGUo
cideZ2l0LXN2bi1pZDogaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3Ry
dW5rQCg/UDxzdm5pZD5cZCspICg/UDxnaXRpZD5bMC05YS1mXC1dezM2fSkkJywgcmUuTVVMVElM
SU5FKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBvcHRpb25zID0gWwpAQCAt
NDgsMTQgKzU1LDEwIEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKICAgICAg
ICAgICAgIG1ha2Vfb3B0aW9uKCItLW1heC1jb21taXQtYWdlIiwgYWN0aW9uPSJzdG9yZSIsIGRl
c3Q9Im1heF9jb21taXRfYWdlIiwgdHlwZT0iaW50IiwgZGVmYXVsdD05LCBoZWxwPSJTcGVjaWZ5
IG1heCBjb21taXQgYWdlIHRvIGNvbnNpZGVyIGZvciBub21pbmF0aW9ucyAoaW4gbW9udGhzKS4i
KSwKICAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLXNob3ctY29tbWl0cyIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsIGRlc3Q9InNob3dfY29tbWl0cyIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IlNob3cg
Y29tbWl0IGhpc3Rvcnkgd2l0aCBub21pbmF0aW9uIHN1Z2dlc3Rpb25zLiIpLAogICAgICAgICBd
Ci0KLSAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBvcHRpb25zPW9wdGlvbnMpCisgICAg
ICAgIHN1cGVyKFN1Z2dlc3ROb21pbmF0aW9ucywgc2VsZikuX19pbml0X18ob3B0aW9ucz1vcHRp
b25zKQogICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBvbiB0aGUgdG9v
bCBzb21ld2hlcmUuCiAgICAgICAgIHNlbGYuX2NvbW1pdHRlcl9saXN0ID0gQ29tbWl0dGVyTGlz
dCgpCiAKLSAgICBfY291bnRlcnNfYnlfbmFtZSA9IHt9Ci0gICAgX2NvdW50ZXJzX2J5X2VtYWls
ID0ge30KLQogICAgIGRlZiBfaW5pdF9vcHRpb25zKHNlbGYsIG9wdGlvbnMpOgogICAgICAgICBz
ZWxmLmNvbW1pdHRlcl9taW5pbXVtID0gb3B0aW9ucy5jb21taXR0ZXJfbWluaW11bQogICAgICAg
ICBzZWxmLnJldmlld2VyX21pbmltdW0gPSBvcHRpb25zLnJldmlld2VyX21pbmltdW0KQEAgLTY2
LDYyICs2OSwxMDkgQEAgY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKENvbW1hbmQpOgogICAgICMg
RklYTUU6IFRoaXMgc2hvdWxkIG1vdmUgdG8gc2NtLnB5CiAgICAgZGVmIF9yZWNlbnRfY29tbWl0
X21lc3NhZ2VzKHNlbGYpOgogICAgICAgICBnaXRfbG9nID0gc2VsZi5fdG9vbC5leGVjdXRpdmUu
cnVuX2NvbW1hbmQoWydnaXQnLCAnbG9nJywgJy0tc2luY2U9IiVzIG1vbnRocyBhZ28iJyAlIHNl
bGYubWF4X2NvbW1pdF9hZ2VdKQotICAgICAgICBtYXRjaF9naXRfc3ZuX2lkID0gcmUuY29tcGls
ZShyIlxuXG4gICAgZ2l0LXN2bi1pZDouKlxuIiwgcmUuTVVMVElMSU5FKQotICAgICAgICBtYXRj
aF9nZXRfbG9nX2xpbmVzID0gcmUuY29tcGlsZShyIl5cUy4qXG4iLCByZS5NVUxUSUxJTkUpCi0g
ICAgICAgIG1hdGNoX2xlYWRpbmdfaW5kZW50ID0gcmUuY29tcGlsZShyIl5bIF17NH0iLCByZS5N
VUxUSUxJTkUpCi0KLSAgICAgICAgbWVzc2FnZXMgPSByZS5zcGxpdChyImNvbW1pdCBcd3s0MH0i
LCBnaXRfbG9nKVsxOl0gICMgSWdub3JlIHRoZSBmaXJzdCBtZXNzYWdlIHdoaWNoIHdpbGwgYmUg
ZW1wdHkuCisgICAgICAgIG1lc3NhZ2VzID0gcmUuc3BsaXQociJeY29tbWl0IFx3ezQwfSQiLCBn
aXRfbG9nLCBmbGFncz1yZS5NVUxUSUxJTkUpWzE6XSAgIyBJZ25vcmUgdGhlIGZpcnN0IG1lc3Nh
Z2Ugd2hpY2ggd2lsbCBiZSBlbXB0eS4KICAgICAgICAgZm9yIG1lc3NhZ2UgaW4gbWVzc2FnZXM6
Ci0gICAgICAgICAgICAjIFJlbW92ZSBhbnkgbGluZXMgZnJvbSBnaXQgYW5kIHVuaW5kZW50IGFs
bCB0aGUgbGluZXMKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNoX2dpdF9zdm5faWQu
c3VibigiIiwgbWVzc2FnZSkKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNoX2dldF9s
b2dfbGluZXMuc3VibigiIiwgbWVzc2FnZSkKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1h
dGNoX2xlYWRpbmdfaW5kZW50LnN1Ym4oIiIsIG1lc3NhZ2UpCisgICAgICAgICAgICAjIFVuaW5k
ZW50IGFsbCB0aGUgbGluZXMKKyAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IHNlbGYuX2xlYWRp
bmdfaW5kZW50X3JlZ2V4cC5zdWJuKCIiLCBtZXNzYWdlKQogICAgICAgICAgICAgeWllbGQgbWVz
c2FnZS5sc3RyaXAoKSAgIyBSZW1vdmUgYW55IGxlYWRpbmcgbmV3bGluZXMgZnJvbSB0aGUgbG9n
IG1lc3NhZ2UuCiAKLSAgICAjIGUuZy4gUGF0Y2ggYnkgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0
Lm9yZz4gb24gMjAxMS0wOS0xNQotICAgIHBhdGNoX2J5X3JlZ2V4cCA9IHInXlBhdGNoIGJ5ICg/
UDxuYW1lPi4rPylccys8KD9QPGVtYWlsPltePD5dKyk+IG9uICg/UDxkYXRlPlxkezR9LVxkezJ9
LVxkezJ9KSQnCisgICAgZGVmIF9hdXRob3JfbmFtZV9mcm9tX2VtYWlsKHNlbGYsIGVtYWlsKToK
KyAgICAgICAgY29udHJpYnV0b3IgPSBzZWxmLl9jb21taXR0ZXJfbGlzdC5jb250cmlidXRvcl9i
eV9lbWFpbChlbWFpbCkKKyAgICAgICAgcmV0dXJuIGNvbnRyaWJ1dG9yLmZ1bGxfbmFtZSBpZiBj
b250cmlidXRvciBlbHNlIE5vbmUKKworICAgIGRlZiBfY29tbWl0X2RhdGVfZnJvbV9tYXRjaChz
ZWxmLCBtYXRjaCk6CisgICAgICAgIHllYXIgPSBtYXRjaC5ncm91cCgneWVhcicpCisgICAgICAg
IG1vbnRoX2FiYnIgPSBtYXRjaC5ncm91cCgnbW9udGgnKQorICAgICAgICBtb250aCA9IDAKKyAg
ICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGNhbGVuZGFyLm1vbnRoX2FiYnIpKToKKyAgICAgICAg
ICAgIGlmIGNhbGVuZGFyLm1vbnRoX2FiYnJbaV0gPT0gbW9udGhfYWJicjoKKyAgICAgICAgICAg
ICAgICBtb250aCA9IGkgKyAxCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZGF5ID0g
bWF0Y2guZ3JvdXAoJ2RheScpCisgICAgICAgIHJldHVybiAnJTA0ZC0lMDJkLSUwMmQnICUgKGlu
dCh5ZWFyKSwgbW9udGgsIGludChkYXkpKQorCisgICAgZGVmIF9jb250cmlidXRvcl9mcm9tX2Vt
YWlsKHNlbGYsIGVtYWlsKToKKyAgICAgICAgY29udHJpYnV0b3IgPSBzZWxmLl9jb21taXR0ZXJf
bGlzdC5jb250cmlidXRvcl9ieV9lbWFpbChlbWFpbCkKKyAgICAgICAgcmV0dXJuIGNvbnRyaWJ1
dG9yIGlmIGNvbnRyaWJ1dG9yIGVsc2UgTm9uZQorCisgICAgZGVmIF9hbmFseXplX2NvbW1pdChz
ZWxmLCBjb21taXRfbWVzc2FnZSwgb25fYW5hbHlzaXMsIGFuYWx5c2lzKToKKworICAgICAgICAj
IERldGVybWluZSBjb21taXR0ZXIgaWYgcG9zc2libGUsIG90aGVyd2lzZSBza2lwIGNvbW1pdC4K
KyAgICAgICAgY29tbWl0dGVyX21hdGNoID0gc2VsZi5fY29tbWl0dGVyX3JlZ2V4cC5zZWFyY2go
Y29tbWl0X21lc3NhZ2UpCisgICAgICAgIGlmIG5vdCBjb21taXR0ZXJfbWF0Y2g6CisgICAgICAg
ICAgICByZXR1cm4KKworICAgICAgICAjIERldGVybWluZSBjb21taXR0ZXIgZW1haWwgaWYgcG9z
c2libGUsIG90aGVyd2lzZSBza2lwIGNvbW1pdC4KKyAgICAgICAgY29tbWl0dGVyX2VtYWlsID0g
Y29tbWl0dGVyX21hdGNoLmdyb3VwKCdlbWFpbCcpCisgICAgICAgIGlmIG5vdCBjb21taXR0ZXJf
ZW1haWw6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIERldGVybWluZSBpZiBjb21t
aXR0ZXIgaXMgYSBrbm93biBjb250cmlidXRvciwgaS5lLiwgcmVnaXN0ZXJlZCBpbiBjb21taXR0
ZXJzLnB5LCBvdGhlcndpc2Ugc2tpcCBjb21taXQuCisgICAgICAgIGNvbW1pdHRlciA9IHNlbGYu
X2NvbnRyaWJ1dG9yX2Zyb21fZW1haWwoY29tbWl0dGVyX2VtYWlsKQorICAgICAgICBpZiBub3Qg
Y29tbWl0dGVyOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBEZXRlcm1pbmUgY29t
bWl0IGRhdGUgaWYgcG9zc2libGUsIG90aGVyd2lzZSBza2lwIGNvbW1pdC4KKyAgICAgICAgY29t
bWl0X2RhdGVfbWF0Y2ggPSBzZWxmLl9kYXRlX3JlZ2V4cC5zZWFyY2goY29tbWl0X21lc3NhZ2Up
CisgICAgICAgIGlmIG5vdCBjb21taXRfZGF0ZV9tYXRjaDoKKyAgICAgICAgICAgIHJldHVybgor
ICAgICAgICBjb21taXRfZGF0ZSA9IHNlbGYuX2NvbW1pdF9kYXRlX2Zyb21fbWF0Y2goY29tbWl0
X2RhdGVfbWF0Y2gpCisKKyAgICAgICAgIyBEZXRlcm1pbmUgcmV2aXNpb24gaWYgcG9zc2libGUs
IG90aGVyd2lzZSBza2lwIGNvbW1pdC4KKyAgICAgICAgcmV2aXNpb25fbWF0Y2ggPSBzZWxmLl9y
ZXZpc2lvbl9yZWdleHAuc2VhcmNoKGNvbW1pdF9tZXNzYWdlKQorICAgICAgICBpZiBub3QgcmV2
aXNpb25fbWF0Y2g6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcmV2aXNpb24gPSByZXZp
c2lvbl9tYXRjaC5ncm91cCgnc3ZuaWQnKQorCisgICAgICAgICMgRGV0ZXJtaW5lIGF1dGhvciBp
ZiBwb3NzaWJsZSwgb3RoZXJ3aXNlIHNraXAgY29tbWl0LiBMb29rIGZvciAiUGF0Y2ggYnkiIGxp
bmUgZmlyc3QsIHdoaWNoCisgICAgICAgICMgaXMgdXNlZCBmb3Igbm9uLWNvbW1pdHRlciBjb250
cmlidXRvcnM7IG90aGVyd2lzZSwgdXNlIGNvbW1pdHRlciBpbmZvIGRldGVybWluZWQgYWJvdmUu
CisgICAgICAgIGF1dGhvcl9tYXRjaCA9IHNlbGYuX3BhdGNoX2J5X3JlZ2V4cC5zZWFyY2goY29t
bWl0X21lc3NhZ2UpCisgICAgICAgIGlmIG5vdCBhdXRob3JfbWF0Y2g6CisgICAgICAgICAgICBh
dXRob3JfbWF0Y2ggPSBjb21taXR0ZXJfbWF0Y2gKKyAgICAgICAgaWYgbm90IGF1dGhvcl9tYXRj
aDoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgRGV0ZXJtaW5lIGF1dGhvciBlbWFp
bCBpZiBwb3NzaWJsZSwgb3RoZXJ3aXNlIHNraXAgY29tbWl0LgorICAgICAgICBhdXRob3JfZW1h
aWwgPSBhdXRob3JfbWF0Y2guZ3JvdXAoJ2VtYWlsJykKKyAgICAgICAgaWYgbm90IGF1dGhvcl9l
bWFpbDoKKyAgICAgICAgICAgIGF1dGhvcl9lbWFpbCA9IGNvbW1pdHRlcl9lbWFpbAorICAgICAg
ICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBEZXRlcm1pbmUgaWYgYXV0aG9yIGlzIGEga25vd24g
Y29udHJpYnV0b3IsIGkuZS4sIHJlZ2lzdGVyZWQgaW4gY29tbWl0dGVycy5weS4KKyAgICAgICAg
Y29udHJpYnV0b3IgPSBzZWxmLl9jb250cmlidXRvcl9mcm9tX2VtYWlsKGF1dGhvcl9lbWFpbCkK
KworICAgICAgICAjIERldGVybWluZSBhdXRob3IgbmFtZSBpZiBwb3NzaWJsZSwgb3RoZXJ3aXNl
IHNraXAgY29tbWl0LgorICAgICAgICBhdXRob3JfbmFtZSA9IGF1dGhvcl9tYXRjaC5ncm91cCgn
bmFtZScpIGlmICduYW1lJyBpbiBhdXRob3JfbWF0Y2guZ3JvdXBkaWN0KCkgZWxzZSBOb25lCisg
ICAgICAgIGlmIG5vdCBhdXRob3JfbmFtZToKKyAgICAgICAgICAgIGF1dGhvcl9uYW1lID0gc2Vs
Zi5fYXV0aG9yX25hbWVfZnJvbV9lbWFpbChhdXRob3JfZW1haWwpCisgICAgICAgIGlmIG5vdCBh
dXRob3JfbmFtZToKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgVXNlIGNhbm9uaWNh
bCBuYW1lIGlmIGtub3duIGNvbnRyaWJ1dG9yLgorICAgICAgICBpZiBjb250cmlidXRvciBhbmQg
YXV0aG9yX25hbWUgIT0gY29udHJpYnV0b3IuZnVsbF9uYW1lOgorICAgICAgICAgICAgYXV0aG9y
X25hbWUgPSBjb250cmlidXRvci5mdWxsX25hbWUKKworICAgICAgICAjIERldGVybWluZSByZXZp
ZXdlcnMgaWYgcG9zc2libGUsIG90aGVyd2lzZSBvcHRpb25hbGx5IHNraXAgY29tbWl0LgorICAg
ICAgICByZXZpZXdlcl9tYXRjaCA9IHNlbGYuX3Jldmlld2VkX2J5X3JlZ2V4cC5zZWFyY2goY29t
bWl0X21lc3NhZ2UpCisgICAgICAgIGlmIG5vdCByZXZpZXdlcl9tYXRjaDoKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICByZXZpZXdlcnMgPSByZXZpZXdlcl9tYXRjaC5ncm91cCgncmV2aWV3
ZXInKQorCisgICAgICAgIG9uX2FuYWx5c2lzKGFuYWx5c2lzLCBjb21taXR0ZXIsIGNvbW1pdF9k
YXRlLCByZXZpc2lvbiwgYXV0aG9yX2VtYWlsLCBhdXRob3JfbmFtZSwgY29udHJpYnV0b3IsIHJl
dmlld2VycykKKworICAgIGRlZiBfYW5hbHl6ZV9jb21taXRzKHNlbGYsIG9uX2FuYWx5c2lzLCBh
bmFseXNpcywgYW5hbHl6ZT1Ob25lKToKKyAgICAgICAgaWYgbm90IGFuYWx5emU6CisgICAgICAg
ICAgICBhbmFseXplID0gc2VsZi5fYW5hbHl6ZV9jb21taXQKKyAgICAgICAgZm9yIGNvbW1pdF9t
ZXNzYWdlIGluIHNlbGYuX3JlY2VudF9jb21taXRfbWVzc2FnZXMoKToKKyAgICAgICAgICAgIGFu
YWx5emUoY29tbWl0X21lc3NhZ2UsIG9uX2FuYWx5c2lzLCBhbmFseXNpcykKIAogICAgIGRlZiBf
Y291bnRfcmVjZW50X3BhdGNoZXMoc2VsZik6Ci0gICAgICAgICMgVGhpcyBlbnRpcmUgYmxvY2sg
Y291bGQgYmUgd3JpdHRlbiBhcyBhIG1hcC9yZWR1Y2Ugb3ZlciB0aGUgbWVzc2FnZXMuCi0gICAg
ICAgIGZvciBtZXNzYWdlIGluIHNlbGYuX3JlY2VudF9jb21taXRfbWVzc2FnZXMoKToKLSAgICAg
ICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBDaGFuZ2VMb2dFbnRyeSB0byBkbyB0aGUg
ZW50aXJlIHBhcnNlIGluc3RlYWQKLSAgICAgICAgICAgICMgb2YgZ3JhYmJpbmcgYXQgaXRzIHJl
Z2V4cHMuCi0gICAgICAgICAgICBkYXRlbGluZV9tYXRjaCA9IHJlLm1hdGNoKENoYW5nZUxvZ0Vu
dHJ5LmRhdGVfbGluZV9yZWdleHAsIG1lc3NhZ2UsIHJlLk1VTFRJTElORSkKLSAgICAgICAgICAg
IGlmIG5vdCBkYXRlbGluZV9tYXRjaDoKLSAgICAgICAgICAgICAgICAjIE1vZGVybiBjb21taXQg
bWVzc2FnZXMgZG9uJ3QganVzdCBkdW1wIHRoZSBDaGFuZ2VMb2cgZW50cnksIGJ1dCByYXRoZXIK
LSAgICAgICAgICAgICAgICAjIGhhdmUgYSBzcGVjaWFsIFBhdGNoIGJ5IGxpbmUgZm9yIG5vbi1j
b21taXR0ZXJzLgotICAgICAgICAgICAgICAgIGRhdGVsaW5lX21hdGNoID0gcmUuc2VhcmNoKHNl
bGYucGF0Y2hfYnlfcmVnZXhwLCBtZXNzYWdlLCByZS5NVUxUSUxJTkUpCi0gICAgICAgICAgICAg
ICAgaWYgbm90IGRhdGVsaW5lX21hdGNoOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQot
Ci0gICAgICAgICAgICBhdXRob3JfZW1haWwgPSBkYXRlbGluZV9tYXRjaC5ncm91cCgiZW1haWwi
KQotICAgICAgICAgICAgaWYgbm90IGF1dGhvcl9lbWFpbDoKLSAgICAgICAgICAgICAgICBjb250
aW51ZQotCi0gICAgICAgICAgICAjIFdlIG9ubHkgY2FyZSBhYm91dCByZXZpZXdlZCBwYXRjaGVz
LCBzbyBtYWtlIHN1cmUgaXQgaGFzIGEgdmFsaWQgcmV2aWV3ZXIgbGluZS4KLSAgICAgICAgICAg
IHJldmlld2VyX21hdGNoID0gcmUuc2VhcmNoKENoYW5nZUxvZ0VudHJ5LnJldmlld2VkX2J5X3Jl
Z2V4cCwgbWVzc2FnZSwgcmUuTVVMVElMSU5FKQotICAgICAgICAgICAgIyBXZSBtaWdodCBhbHNv
IHdhbnQgdG8gdmFsaWRhdGUgdGhlIHJldmlld2VyIG5hbWUgYWdhaW5zdCB0aGUgY29tbWl0dGVy
IGxpc3QuCi0gICAgICAgICAgICBpZiBub3QgcmV2aWV3ZXJfbWF0Y2ggb3Igbm90IHJldmlld2Vy
X21hdGNoLmdyb3VwKCJyZXZpZXdlciIpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAg
ICAgICAgICAgIGF1dGhvcl9uYW1lID0gZGF0ZWxpbmVfbWF0Y2guZ3JvdXAoIm5hbWUiKQotICAg
ICAgICAgICAgaWYgbm90IGF1dGhvcl9uYW1lOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAK
LSAgICAgICAgICAgIGlmIHJlLnNlYXJjaCgiKFteYS16QS1aXWFuZFteYS16QS1aXSl8KCwpfChA
KSIsIGF1dGhvcl9uYW1lKToKLSAgICAgICAgICAgICAgICAjIFRoaXMgZW50cnkgc2VlbXMgdG8g
aGF2ZSBtdWx0aXBsZSByZXZpZXdlcnMsIG9yIGludmFsaWQgY2hhcmFjdGVycywgc28gcmVqZWN0
IGl0LgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIHN2bl9pZF9tYXRj
aCA9IHJlLnNlYXJjaChDaGFuZ2VMb2dFbnRyeS5zdm5faWRfcmVnZXhwLCBtZXNzYWdlLCByZS5N
VUxUSUxJTkUpCi0gICAgICAgICAgICBpZiBzdm5faWRfbWF0Y2g6Ci0gICAgICAgICAgICAgICAg
c3ZuX2lkID0gc3ZuX2lkX21hdGNoLmdyb3VwKCJzdm5pZCIpCi0gICAgICAgICAgICBpZiBub3Qg
c3ZuX2lkX21hdGNoIG9yIG5vdCBzdm5faWQ6Ci0gICAgICAgICAgICAgICAgc3ZuX2lkID0gInVu
a25vd24iCi0gICAgICAgICAgICBjb21taXRfZGF0ZSA9IGRhdGVsaW5lX21hdGNoLmdyb3VwKCJk
YXRlIikKKyAgICAgICAgZGVmIF9vbl9hbmFseXNpcyhhbmFseXNpcywgY29tbWl0dGVyLCBjb21t
aXRfZGF0ZSwgcmV2aXNpb24sIGF1dGhvcl9lbWFpbCwgYXV0aG9yX25hbWUsIGNvbnRyaWJ1dG9y
LCByZXZpZXdlcnMpOgogCi0gICAgICAgICAgICAjIFNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBj
b250cmlidXRvciB3aXRoIHRoaXMgbmFtZSBvciBlbWFpbAotICAgICAgICAgICAgY291bnRlcl9i
eV9uYW1lID0gc2VsZi5fY291bnRlcnNfYnlfbmFtZS5nZXQoYXV0aG9yX25hbWUpCi0gICAgICAg
ICAgICBjb3VudGVyX2J5X2VtYWlsID0gc2VsZi5fY291bnRlcnNfYnlfZW1haWwuZ2V0KGF1dGhv
cl9lbWFpbCkKKyAgICAgICAgICAgICMgU2VlIGlmIHdlIGFscmVhZHkgaGF2ZSBhIGNvbnRyaWJ1
dG9yIHdpdGggdGhpcyBhdXRob3JfbmFtZSBvciBlbWFpbAorICAgICAgICAgICAgY291bnRlcl9i
eV9uYW1lID0gYW5hbHlzaXNbJ2NvdW50ZXJzX2J5X25hbWUnXS5nZXQoYXV0aG9yX25hbWUpCisg
ICAgICAgICAgICBjb3VudGVyX2J5X2VtYWlsID0gYW5hbHlzaXNbJ2NvdW50ZXJzX2J5X2VtYWls
J10uZ2V0KGF1dGhvcl9lbWFpbCkKICAgICAgICAgICAgIGlmIGNvdW50ZXJfYnlfbmFtZToKICAg
ICAgICAgICAgICAgICBpZiBjb3VudGVyX2J5X2VtYWlsOgogICAgICAgICAgICAgICAgICAgICBp
ZiBjb3VudGVyX2J5X25hbWUgIT0gY291bnRlcl9ieV9lbWFpbDoKQEAgLTEzMiwzMSArMTgyLDM2
IEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvdW50ZXJfYnlfbmFtZVsnbmFtZXMnXSB8PSBjb3VudGVyX2J5X2VtYWlsWyduYW1l
cyddCiAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X25hbWVbJ2VtYWlscyddIHw9
IGNvdW50ZXJfYnlfZW1haWxbJ2VtYWlscyddCiAgICAgICAgICAgICAgICAgICAgICAgICBjb3Vu
dGVyX2J5X25hbWVbJ2NvdW50J10gKz0gY291bnRlcl9ieV9lbWFpbC5nZXQoJ2NvdW50JywgMCkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvdW50ZXJzX2J5X2VtYWlsW2F1dGhvcl9l
bWFpbF0gPSBjb3VudGVyX2J5X25hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuYWx5c2lz
Wydjb3VudGVyc19ieV9lbWFpbCddW2F1dGhvcl9lbWFpbF0gPSBjb3VudGVyX2J5X25hbWUKICAg
ICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAjIEFkZCBlbWFpbCB0byB0
aGUgZXhpc3RpbmcgY291bnRlcgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3VudGVyc19i
eV9lbWFpbFthdXRob3JfZW1haWxdID0gY291bnRlcl9ieV9uYW1lCisgICAgICAgICAgICAgICAg
ICAgIGFuYWx5c2lzWydjb3VudGVyc19ieV9lbWFpbCddW2F1dGhvcl9lbWFpbF0gPSBjb3VudGVy
X2J5X25hbWUKICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9ieV9uYW1lWydlbWFpbHMnXSB8
PSBzZXQoW2F1dGhvcl9lbWFpbF0pCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAg
IGlmIGNvdW50ZXJfYnlfZW1haWw6CiAgICAgICAgICAgICAgICAgICAgICMgQWRkIG5hbWUgdG8g
dGhlIGV4aXN0aW5nIGNvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY291bnRlcnNf
YnlfbmFtZVthdXRob3JfbmFtZV0gPSBjb3VudGVyX2J5X2VtYWlsCisgICAgICAgICAgICAgICAg
ICAgIGFuYWx5c2lzWydjb3VudGVyc19ieV9uYW1lJ11bYXV0aG9yX25hbWVdID0gY291bnRlcl9i
eV9lbWFpbAogICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X2VtYWlsWyduYW1lcyddIHw9
IHNldChbYXV0aG9yX25hbWVdKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAg
ICAgICAgICMgQ3JlYXRlIG5ldyBjb3VudGVyCiAgICAgICAgICAgICAgICAgICAgIG5ld19jb3Vu
dGVyID0geyduYW1lcyc6IHNldChbYXV0aG9yX25hbWVdKSwgJ2VtYWlscyc6IHNldChbYXV0aG9y
X2VtYWlsXSksICdsYXRlc3RfbmFtZSc6IGF1dGhvcl9uYW1lLCAnbGF0ZXN0X2VtYWlsJzogYXV0
aG9yX2VtYWlsLCAnY29tbWl0cyc6ICIifQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3Vu
dGVyc19ieV9uYW1lW2F1dGhvcl9uYW1lXSA9IG5ld19jb3VudGVyCi0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2NvdW50ZXJzX2J5X2VtYWlsW2F1dGhvcl9lbWFpbF0gPSBuZXdfY291bnRlcgor
ICAgICAgICAgICAgICAgICAgICBhbmFseXNpc1snY291bnRlcnNfYnlfbmFtZSddW2F1dGhvcl9u
YW1lXSA9IG5ld19jb3VudGVyCisgICAgICAgICAgICAgICAgICAgIGFuYWx5c2lzWydjb3VudGVy
c19ieV9lbWFpbCddW2F1dGhvcl9lbWFpbF0gPSBuZXdfY291bnRlcgogCi0gICAgICAgICAgICBh
c3NlcnQoc2VsZi5fY291bnRlcnNfYnlfbmFtZVthdXRob3JfbmFtZV0gPT0gc2VsZi5fY291bnRl
cnNfYnlfZW1haWxbYXV0aG9yX2VtYWlsXSkKLSAgICAgICAgICAgIGNvdW50ZXIgPSBzZWxmLl9j
b3VudGVyc19ieV9uYW1lW2F1dGhvcl9uYW1lXQorICAgICAgICAgICAgYXNzZXJ0KGFuYWx5c2lz
Wydjb3VudGVyc19ieV9uYW1lJ11bYXV0aG9yX25hbWVdID09IGFuYWx5c2lzWydjb3VudGVyc19i
eV9lbWFpbCddW2F1dGhvcl9lbWFpbF0pCisgICAgICAgICAgICBjb3VudGVyID0gYW5hbHlzaXNb
J2NvdW50ZXJzX2J5X25hbWUnXVthdXRob3JfbmFtZV0KICAgICAgICAgICAgIGNvdW50ZXJbJ2Nv
dW50J10gPSBjb3VudGVyLmdldCgnY291bnQnLCAwKSArIDEKIAotICAgICAgICAgICAgaWYgc3Zu
X2lkLmlzZGlnaXQoKToKLSAgICAgICAgICAgICAgICBzdm5faWQgPSAiaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvIiArIHN2bl9pZAotICAgICAgICAgICAgY291bnRlclsnY29tbWl0
cyddICs9ICIgIGNvbW1pdDogJXMgb24gJXMgYnkgJXMgKCVzKVxuIiAlIChzdm5faWQsIGNvbW1p
dF9kYXRlLCBhdXRob3JfbmFtZSwgYXV0aG9yX2VtYWlsKQorICAgICAgICAgICAgaWYgcmV2aXNp
b24uaXNkaWdpdCgpOgorICAgICAgICAgICAgICAgIHJldmlzaW9uID0gImh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LyIgKyByZXZpc2lvbgorICAgICAgICAgICAgY291bnRlclsnY29t
bWl0cyddICs9ICIgIGNvbW1pdDogJXMgb24gJXMgYnkgJXMgKCVzKVxuIiAlIChyZXZpc2lvbiwg
Y29tbWl0X2RhdGUsIGF1dGhvcl9uYW1lLCBhdXRob3JfZW1haWwpCiAKLSAgICAgICAgcmV0dXJu
IHNlbGYuX2NvdW50ZXJzX2J5X2VtYWlsCisgICAgICAgIGFuYWx5c2lzID0geworICAgICAgICAg
ICAgJ2NvdW50ZXJzX2J5X25hbWUnOiB7fSwKKyAgICAgICAgICAgICdjb3VudGVyc19ieV9lbWFp
bCc6IHt9LAorICAgICAgICB9CisgICAgICAgIHNlbGYuX2FuYWx5emVfY29tbWl0cyhfb25fYW5h
bHlzaXMsIGFuYWx5c2lzKQorICAgICAgICByZXR1cm4gYW5hbHlzaXNbJ2NvdW50ZXJzX2J5X2Vt
YWlsJ10KIAogICAgIGRlZiBfY29sbGVjdF9ub21pbmF0aW9ucyhzZWxmLCBjb3VudGVyc19ieV9l
bWFpbCk6CiAgICAgICAgIG5vbWluYXRpb25zID0gW10KQEAgLTE3Miw3ICsyMjcsNyBAQCBjbGFz
cyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAKICAgICAgICAgICAgIGlmIHBhdGNoX2Nv
dW50ID49IHNlbGYuY29tbWl0dGVyX21pbmltdW0gYW5kIChub3QgY29udHJpYnV0b3Igb3Igbm90
IGNvbnRyaWJ1dG9yLmNhbl9jb21taXQpOgogICAgICAgICAgICAgICAgIHJvbGVzLmFwcGVuZCgi
Y29tbWl0dGVyIikKLSAgICAgICAgICAgIGlmIHBhdGNoX2NvdW50ID49IHNlbGYucmV2aWV3ZXJf
bWluaW11bSAgYW5kIChub3QgY29udHJpYnV0b3Igb3Igbm90IGNvbnRyaWJ1dG9yLmNhbl9yZXZp
ZXcpOgorICAgICAgICAgICAgaWYgcGF0Y2hfY291bnQgPj0gc2VsZi5yZXZpZXdlcl9taW5pbXVt
IGFuZCBjb250cmlidXRvciBhbmQgY29udHJpYnV0b3IuY2FuX2NvbW1pdCBhbmQgbm90IGNvbnRy
aWJ1dG9yLmNhbl9yZXZpZXc6CiAgICAgICAgICAgICAgICAgcm9sZXMuYXBwZW5kKCJyZXZpZXdl
ciIpCiAgICAgICAgICAgICBpZiByb2xlczoKICAgICAgICAgICAgICAgICBub21pbmF0aW9ucy5h
cHBlbmQoewpAQCAtMTgzLDcgKzIzOCw3IEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21t
YW5kKToKICAgICAgICAgICAgICAgICB9KQogICAgICAgICByZXR1cm4gbm9taW5hdGlvbnMKIAot
ICAgIGRlZiBfcHJpbnRfbm9taW5hdGlvbnMoc2VsZiwgbm9taW5hdGlvbnMpOgorICAgIGRlZiBf
cHJpbnRfbm9taW5hdGlvbnMoc2VsZiwgbm9taW5hdGlvbnMsIGNvdW50ZXJzX2J5X2VtYWlsKToK
ICAgICAgICAgZGVmIG5vbWluYXRpb25fY21wKGFfbm9taW5hdGlvbiwgYl9ub21pbmF0aW9uKToK
ICAgICAgICAgICAgIHJvbGVzX3Jlc3VsdCA9IGNtcChhX25vbWluYXRpb25bJ3JvbGVzJ10sIGJf
bm9taW5hdGlvblsncm9sZXMnXSkKICAgICAgICAgICAgIGlmIHJvbGVzX3Jlc3VsdDoKQEAgLTE5
Nyw3ICsyNTIsNyBAQCBjbGFzcyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAgICAgICAg
ICAgICAjIFRoaXMgaXMgYSBsaXR0bGUgYml0IG9mIGEgaGFjaywgYnV0IGl0cyBjb252aWVuZW50
IHRvIGp1c3QgcGFzcyB0aGUgbm9taW5hdGlvbiBkaWN0aW9uYXJ5IHRvIHRoZSBmb3JtYXRpbmcg
b3BlcmF0b3IuCiAgICAgICAgICAgICBub21pbmF0aW9uWydyb2xlc19zdHJpbmcnXSA9IGpvaW5f
d2l0aF9zZXBhcmF0b3JzKG5vbWluYXRpb25bJ3JvbGVzJ10pLnVwcGVyKCkKICAgICAgICAgICAg
IHByaW50ICIlKHJvbGVzX3N0cmluZylzOiAlKGF1dGhvcl9uYW1lKXMgKCUoYXV0aG9yX2VtYWls
KXMpIGhhcyAlKHBhdGNoX2NvdW50KXMgcmV2aWV3ZWQgcGF0Y2hlcyIgJSBub21pbmF0aW9uCi0g
ICAgICAgICAgICBjb3VudGVyID0gc2VsZi5fY291bnRlcnNfYnlfZW1haWxbbm9taW5hdGlvblsn
YXV0aG9yX2VtYWlsJ11dCisgICAgICAgICAgICBjb3VudGVyID0gY291bnRlcnNfYnlfZW1haWxb
bm9taW5hdGlvblsnYXV0aG9yX2VtYWlsJ11dCiAKICAgICAgICAgICAgIGlmIHNlbGYuc2hvd19j
b21taXRzOgogICAgICAgICAgICAgICAgIHByaW50IGNvdW50ZXJbJ2NvbW1pdHMnXQpAQCAtMjM4
LDEwICsyOTMsOSBAQCBjbGFzcyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAgICAgICAg
IHNlbGYuX2luaXRfb3B0aW9ucyhvcHRpb25zKQogICAgICAgICBwYXRjaF9jb3VudHMgPSBzZWxm
Ll9jb3VudF9yZWNlbnRfcGF0Y2hlcygpCiAgICAgICAgIG5vbWluYXRpb25zID0gc2VsZi5fY29s
bGVjdF9ub21pbmF0aW9ucyhwYXRjaF9jb3VudHMpCi0gICAgICAgIHNlbGYuX3ByaW50X25vbWlu
YXRpb25zKG5vbWluYXRpb25zKQorICAgICAgICBzZWxmLl9wcmludF9ub21pbmF0aW9ucyhub21p
bmF0aW9ucywgcGF0Y2hfY291bnRzKQogICAgICAgICBpZiBzZWxmLnZlcmJvc2U6CiAgICAgICAg
ICAgICBzZWxmLl9wcmludF9jb3VudHMocGF0Y2hfY291bnRzKQogCi0KIGlmIF9fbmFtZV9fID09
ICJfX21haW5fXyI6CiAgICAgU3VnZ2VzdE5vbWluYXRpb25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnNfdW5pdHRl
c3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWlu
YXRpb25zX3VuaXR0ZXN0LnB5CmluZGV4IDg4YmUyNTMwMzk1OTIzZWI2N2U5NmU0ODUwODNjOTM4
ZTZjMzE3MWMuLmIyNGRlZjZmYTNlOTVhOTMzYThjYmNkZjFmMDMyMzgwM2JiYmRhZWUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5h
dGlvbnNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL3N1Z2dlc3Rub21pbmF0aW9uc191bml0dGVzdC5weQpAQCAtNDUsMjEgKzQ1LDQ0IEBAIERh
dGU6ICAgVGh1IFNlcCAxNSAxOTo1NjoyMSAyMDExICswMDAwCiAKICAgICBnaXQtc3ZuLWlkOiBo
dHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmtAOTUyMTkgMjY4ZjQ1
Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCiAiIiIKLSAgICBtb2NrX3NhbWVfYXV0aG9y
X2NvbW1pdF9tZXNzYWdlID0gIiIiVmFsdWUgcHJvZmlsZXMgY29sbGVjdCBubyBpbmZvcm1hdGlv
biBmb3IgZ2xvYmFsIHZhcmlhYmxlcworICAgIG1vY2tfc2FtZV9hdXRob3JfY29tbWl0X21lc3Nh
Z2UgPSAiIiJBdXRob3I6IGZwaXpsb0BhcHBsZS5jb20gPGZwaXpsb0BhcHBsZS5jb21AMjY4ZjQ1
Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjPgorRGF0ZTogICBUaHUgU2VwIDE1IDE5OjU2
OjIxIDIwMTEgKzAwMDAKKworVmFsdWUgcHJvZmlsZXMgY29sbGVjdCBubyBpbmZvcm1hdGlvbiBm
b3IgZ2xvYmFsIHZhcmlhYmxlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY4MTQzCiAKLVJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLiIiIgorUmV2aWV3ZWQgYnkg
R2VvZmZyZXkgR2FyZW4uCisKK2dpdC1zdm4taWQ6IGh0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBv
c2l0b3J5L3dlYmtpdC90cnVua0A5NTIxOSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFi
NGRiZmMKKyIiIgorCisgICAgZGVmIF9tYWtlX29wdGlvbnMoc2VsZiwgKiprd2FyZ3MpOgorICAg
ICAgICBkZWZhdWx0cyA9IHsKKyAgICAgICAgICAgICdjb21taXR0ZXJfbWluaW11bSc6IDEwLAor
ICAgICAgICAgICAgJ21heF9jb21taXRfYWdlJzogOSwKKyAgICAgICAgICAgICdyZXZpZXdlcl9t
aW5pbXVtJzogODAsCisgICAgICAgICAgICAnc2hvd19jb21taXRzJzogRmFsc2UsCisgICAgICAg
ICAgICAndmVyYm9zZSc6IEZhbHNlLAorICAgICAgICB9CisgICAgICAgIG9wdGlvbnMgPSBNb2Nr
T3B0aW9ucygqKmRlZmF1bHRzKQorICAgICAgICBvcHRpb25zLnVwZGF0ZSgqKmt3YXJncykKKyAg
ICAgICAgcmV0dXJuIG9wdGlvbnMKIAogICAgIGRlZiB0ZXN0X3JlY2VudF9jb21taXRfbWVzc2Fn
ZXMoc2VsZik6CisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKICAgICAgICAgdG9vbCA9IE1v
Y2tUb29sKCkKICAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucyA9IFN1Z2dlc3ROb21pbmF0aW9u
cygpCi0gICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMuX2luaXRfb3B0aW9ucyhvcHRpb25zPU1v
Y2tPcHRpb25zKHJldmlld2VyX21pbmltdW09ODAsIGNvbW1pdHRlcl9taW5pbXVtPTEwLCBtYXhf
Y29tbWl0X2FnZT05LCBzaG93X2NvbW1pdHM9RmFsc2UsIHZlcmJvc2U9RmFsc2UpKQorICAgICAg
ICBzdWdnZXN0X25vbWluYXRpb25zLl9pbml0X29wdGlvbnMob3B0aW9ucz1zZWxmLl9tYWtlX29w
dGlvbnMoKSkKICAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5iaW5kX3RvX3Rvb2wodG9vbCkK
IAogICAgICAgICB0b29sLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZCA9IGxhbWJkYSBjb21tYW5kOiBz
ZWxmLm1vY2tfZ2l0X291dHB1dAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3VnZ2Vz
dF9ub21pbmF0aW9ucy5fcmVjZW50X2NvbW1pdF9tZXNzYWdlcygpKSwgW3NlbGYubW9ja19zYW1l
X2F1dGhvcl9jb21taXRfbWVzc2FnZV0pCiAKLSAgICBtb2NrX25vbl9jb21taXR0ZXJfY29tbWl0
X21lc3NhZ2UgPSAiIiJMZXQgVGVzdFdlYktpdEFQSSB3b3JrIGZvciBjaHJvbWl1bQorICAgIG1v
Y2tfbm9uX2NvbW1pdHRlcl9jb21taXRfbWVzc2FnZSA9ICIiIgorQXV0aG9yOiBjb21taXQtcXVl
dWVAd2Via2l0Lm9yZyA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmdAMjY4ZjQ1Y2MtY2QwOS0wNDEw
LWFiM2MtZDUyNjkxYjRkYmZjPgorRGF0ZTogICBUaHUgU2VwIDE1IDE0OjA4OjQyIDIwMTEgKzAw
MDAKKworTGV0IFRlc3RXZWJLaXRBUEkgd29yayBmb3IgY2hyb21pdW0KIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzc1NgogCiBQYXRjaCBieSBYaWFuemh1IFdhbmcg
PHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4gb24gMjAxMS0wOS0xNQpAQCAtNjcsMTEgKzkwLDE1
IEBAIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCiAKIFNvdXJjZS9XZWJLaXQvY2hyb21pdW06CiAK
LSogV2ViS2l0Lmd5cDoiIiIKKyogV2ViS2l0Lmd5cDoKKworZ2l0LXN2bi1pZDogaHR0cDovL3N2
bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rQDk1MTg4IDI2OGY0NWNjLWNkMDkt
MDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYworIiIiCiAKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToK
ICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIlJFVklFV0VSOiBYaWFuemh1IFdhbmcgKHdhbmd4
aWFuemh1QGNocm9taXVtLm9yZykgaGFzIDg4IHJldmlld2VkIHBhdGNoZXNcbiIKKyAgICAgICAg
b3B0aW9ucyA9IHNlbGYuX21ha2Vfb3B0aW9ucygpCiAgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlv
bnMgPSBTdWdnZXN0Tm9taW5hdGlvbnMoKQotICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zLl9p
bml0X29wdGlvbnMob3B0aW9ucz1Nb2NrT3B0aW9ucyhyZXZpZXdlcl9taW5pbXVtPTgwLCBjb21t
aXR0ZXJfbWluaW11bT0xMCwgbWF4X2NvbW1pdF9hZ2U9OSwgc2hvd19jb21taXRzPUZhbHNlLCB2
ZXJib3NlPUZhbHNlKSkKKyAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5faW5pdF9vcHRpb25z
KG9wdGlvbnM9b3B0aW9ucykKICAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5fcmVjZW50X2Nv
bW1pdF9tZXNzYWdlcyA9IGxhbWJkYTogW3NlbGYubW9ja19ub25fY29tbWl0dGVyX2NvbW1pdF9t
ZXNzYWdlIGZvciBfIGluIHJhbmdlKDg4KV0KLSAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9v
dXRwdXRzKHN1Z2dlc3Rfbm9taW5hdGlvbnMsIFtdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRf
c3Rkb3V0LCBvcHRpb25zPU1vY2tPcHRpb25zKHJldmlld2VyX21pbmltdW09ODAsIGNvbW1pdHRl
cl9taW5pbXVtPTEwLCBtYXhfY29tbWl0X2FnZT05LCBzaG93X2NvbW1pdHM9RmFsc2UsIHZlcmJv
c2U9RmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoc3VnZ2VzdF9u
b21pbmF0aW9ucywgW10sIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQsIG9wdGlvbnM9
b3B0aW9ucykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200065</attachid>
            <date>2013-04-29 17:46:34 -0700</date>
            <delta_ts>2013-04-29 18:26:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115285-20130429174549.patch</filename>
            <type>text/plain</type>
            <size>28566</size>
            <attacher name="Glenn Adams">glenn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MjM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2UxZTU5N2IyZGZlOGM3ZmY4MjMyODBhMmQ2ODY5ODcz
MTFhN2JlOC4uMmMxNWZiYzc4ZmY5ZmIyZTE4ZWVkMTg0MDJiMzdiM2JkYjVjNGQwMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1
IEBACisyMDEzLTA0LTI5ICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CisKKyAgICAg
ICAgW3dlYmtpdHB5XSBzdWdnZXN0LW5vbWluYXRpb25zIGRvZXNuJ3QgY291bnQgYWxsIHF1YWxp
ZmllZCBwYXRjaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTUyODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXggY29tbWl0IGFuYWx5c2lzIHNvIHRoYXQgcGF0Y2hlcyBtYWRlIGJ5IGFuIGV4aXN0
aW5nIGNvbW1pdHRlciBhcmUgY291bnRlZCB0b3dhcmRzIHJldmlld2VyCisgICAgICAgIG5vbWlu
YXRpb24uIEltcHJvdmUgY29tbWl0IGxvZyBwYXJzaW5nLgorCisgICAgICAgIEFkZCBtaXNzaW5n
IGVtYWlsIGFkZHJlc3NlcyBpbiBjb250cmlidXRvcnMgbGlzdCB0byBhY2NvdW50IGZvciBleGlz
dGluZyBsb2cgZW50cmllcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2Nv
bmZpZy9jb250cmlidXRvcnMuanNvbjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5OgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRp
b25zKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5fX2luaXRfXyk6CisgICAgICAgIChT
dWdnZXN0Tm9taW5hdGlvbnMuX3JlY2VudF9jb21taXRfbWVzc2FnZXMpOgorICAgICAgICAoU3Vn
Z2VzdE5vbWluYXRpb25zLl9hdXRob3JfbmFtZV9mcm9tX2VtYWlsKToKKyAgICAgICAgKFN1Z2dl
c3ROb21pbmF0aW9ucy5fY29tbWl0X2RhdGVfZnJvbV9tYXRjaCk6CisgICAgICAgIChTdWdnZXN0
Tm9taW5hdGlvbnMuX2NvbnRyaWJ1dG9yX2Zyb21fZW1haWwpOgorICAgICAgICAoU3VnZ2VzdE5v
bWluYXRpb25zLl9hbmFseXplX2NvbW1pdCk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMu
X2FuYWx5emVfY29tbWl0cyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMuX2NvdW50X3Jl
Y2VudF9wYXRjaGVzLl9vbl9hbmFseXNpcyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMu
X2NvdW50X3JlY2VudF9wYXRjaGVzKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5fY29s
bGVjdF9ub21pbmF0aW9ucyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMuX3ByaW50X25v
bWluYXRpb25zKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5leGVjdXRlKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAoX21ha2Vfb3B0aW9ucyk6CisgICAgICAgICh0ZXN0X3JlY2Vu
dF9jb21taXRfbWVzc2FnZXMpOgorICAgICAgICAodGVzdF9iYXNpYyk6CisKIDIwMTMtMDQtMjYg
IFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEJ1
aWxkIGJyZWFrIHVzaW5nIGpoYnVpbGQgb24gdWJ1bnR1IDEzLjA0CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29udHJpYnV0b3JzLmpzb24gYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29udHJpYnV0b3JzLmpzb24KaW5kZXgg
Mjg4Y2JmZDc4MDJiNjU5MTVkZjA1MDViMmU2YmY3MDQyYzAzOTU4Yy4uMDAzNGM2Y2NjOTM2ZGVk
NjEzMGMxMzBjYTk5ODhkNmFhMThjNmZkMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1dG9ycy5qc29uCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbgpAQCAtNDQsNiArNDQsNyBA
QAogICAgICAgICAiS3VsYW50aGFpdmVsIFBhbGFuaWNoYW15IjogeyJlbWFpbHMiOiBbImt1bGFu
dGhhaXZlbEBjb2RlYXVyb3JhLm9yZyJdLCAibmlja3MiOiBbImt2ZWwiXX0sCiAgICAgICAgICJL
b2ppIEhhcmEiOiB7ImVtYWlscyI6IFsia29qaWhAY2hyb21pdW0ub3JnIl0sICJuaWNrcyI6IFsi
a29qaWgiXX0sCiAgICAgICAgICJLb2ppIElzaGlpIjogeyJlbWFpbHMiOiBbImtvamlpc2hpQGdt
YWlsLmNvbSJdfSwKKyAgICAgICAgIkxpYSBDaGVuIjogeyJlbWFpbHMiOiBbImxpYWNoZW5Acmlt
LmNvbSJdfSwKICAgICAgICAgIk1pY2hhZWwgUHJ1ZXR0IjogeyJlbWFpbHMiOiBbIm1pY2hhZWxA
NjhrLm9yZyJdLCAibmlja3MiOiBbIm1wcnVldHQiXX0sCiAgICAgICAgICJNaWhhaSBCYWxhbiI6
IHsiZW1haWxzIjogWyJtaWJhbGFuQGFkb2JlLmNvbSJdLCAibmlja3MiOiBbIm1pQ2hvdSJdfSwK
ICAgICAgICAgIk1paGFpIE1hZXJlYW4iOiB7ImVtYWlscyI6IFsibW1hZXJlYW5AYWRvYmUuY29t
Il0sICJuaWNrcyI6IFsibW1hZXJlYW4iXX0sCkBAIC0xMjEsNyArMTIyLDcgQEAKICAgICAgICAg
IkNocmlzIEd1aWxsb3J5IjogeyJlbWFpbHMiOiBbImN0Z3VpbEBjaHJvbWl1bS5vcmciLCAiY2hy
aXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbSJdLCAibmlja3MiOiBbImN0Z3VpbCJdfSwKICAgICAgICAg
IkNocmlzIFBldGVyc2VuIjogeyJlbWFpbHMiOiBbImNwZXRlcnNlbkBhcHBsZS5jb20iXSwgIm5p
Y2tzIjogWyJjcGV0ZXJzZW4iXX0sCiAgICAgICAgICJDaHJpc3RpYW4gRHl3YW4iOiB7ImVtYWls
cyI6IFsiY2hyaXN0aWFuQHR3b3RvYXN0cy5kZSIsICJjaHJpc3RpYW5Ad2Via2l0Lm9yZyIsICJj
aHJpc3RpYW5AbGFuZWRvLmNvbSJdfSwKLSAgICAgICAgIkNocmlzdG9waGUgRHVtZXoiOiB7ImVt
YWlscyI6IFsiZGNocmlzQGdtYWlsLmNvbSIsICJjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tIl0s
ICJuaWNrcyI6IFsiY2R1bWV6Il19LAorICAgICAgICAiQ2hyaXN0b3BoZSBEdW1leiI6IHsiZW1h
aWxzIjogWyJkY2hyaXNAZ21haWwuY29tIiwgImNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20iLCAi
Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20iXSwgIm5pY2tzIjogWyJjZHVtZXoiXX0sCiAgICAg
ICAgICJDbGF1ZGlvIFNhYXZlZHJhIjogeyJlbWFpbHMiOiBbImNzYWF2ZWRyYUBpZ2FsaWEuY29t
Il0sICJuaWNrcyI6IFsiY2xhdWRpb19fXyJdfSwKICAgICAgICAgIkNvbGxpbiBKYWNrc29uIjog
eyJlbWFpbHMiOiBbImNvbGxpbmpAd2Via2l0Lm9yZyJdLCAibmlja3MiOiBbImNvbGxpbmphY2tz
b24iXX0sCiAgICAgICAgICJDcmlzIE5lY2thciI6IHsiZW1haWxzIjogWyJjZG5AY2hyb21pdW0u
b3JnIl0sICJuaWNrcyI6IFsiY25lY2thciJdfSwKQEAgLTE2Myw3ICsxNjQsNyBAQAogICAgICAg
ICAiR3JlZyBCb2xzaW5nYSI6IHsiZW1haWxzIjogWyJib2xzaW5nYUBhcHBsZS5jb20iXX0sCiAg
ICAgICAgICJHcmVnZyBUYXZhcmVzIjogeyJlbWFpbHMiOiBbImdtYW5AY2hyb21pdW0ub3JnIiwg
ImdtYW5AZ29vZ2xlLmNvbSJdLCAibmlja3MiOiBbImdtYW4iXX0sCiAgICAgICAgICJHcnplZ29y
eiBDemFqa293c2tpIjogeyJlbWFpbHMiOiBbImcuY3phamtvd3NraUBzYW1zdW5nLmNvbSJdLCAi
bmlja3MiOiBbImdyemVnb3J6Il19LAotICAgICAgICAiSGFucyBNdWxsZXIiOiB7ImVtYWlscyI6
IFsiZ2lsZXNfam9wbGluQHlhaG9vLmNvbSJdLCAibmlja3MiOiBbImhhbnNtdWxsZXIiXX0sCisg
ICAgICAgICJIYW5zIE11bGxlciI6IHsiZW1haWxzIjogWyJnaWxlc19qb3BsaW5AeWFob28uY29t
IiwgImhtdWxsZXJAYWRvYmUuY29tIl0sICJuaWNrcyI6IFsiaGFuc211bGxlciJdfSwKICAgICAg
ICAgIkhhbnMgV2VubmJvcmciOiB7ImVtYWlscyI6IFsiaGFuc0BjaHJvbWl1bS5vcmciXSwgIm5p
Y2tzIjogWyJod2VubmJvcmciXX0sCiAgICAgICAgICJIYXlhdG8gSXRvIjogeyJlbWFpbHMiOiBb
ImhheWF0b0BjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJoYXlhdG8iXX0sCiAgICAgICAgICJI
aXJvbm9yaSBCb25vIjogeyJlbWFpbHMiOiBbImhib25vQGNocm9taXVtLm9yZyJdLCAibmlja3Mi
OiBbImhib25vIl19LApAQCAtMTk5LDcgKzIwMCw3IEBACiAgICAgICAgICJKb2huIEtub3R0ZW5i
ZWx0IjogeyJlbWFpbHMiOiBbImprbm90dGVuQGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBbImpr
bm90dGVuIl19LAogICAgICAgICAiSm9obm55IERpbmciOiB7ImVtYWlscyI6IFsiam5kQGNocm9t
aXVtLm9yZyIsICJqb2hubnlkaW5nLndlYmtpdEBnbWFpbC5jb20iXSwgIm5pY2tzIjogWyJqb2hu
bnlkaW5nIl19LAogICAgICAgICAiSm9uIExlZSI6IHsiZW1haWxzIjogWyJqb25sZWVAYXBwbGUu
Y29tIl0sICJuaWNrcyI6IFsiam9ubGVlIl19LAotICAgICAgICAiSm9uYXRoYW4gRG9uZyI6IHsi
ZW1haWxzIjogWyJqb25hdGhhbi5kb25nLndlYmtpdEBnbWFpbC5jb20iXSwgIm5pY2tzIjogWyJq
b25kb25nIl19LAorICAgICAgICAiSm9uYXRoYW4gRG9uZyI6IHsiZW1haWxzIjogWyJqb25hdGhh
bi5kb25nLndlYmtpdEBnbWFpbC5jb20iLCAiam9uYXRoYW4uZG9uZ0B0b3JjaG1vYmlsZS5jb20u
Y24iXSwgIm5pY2tzIjogWyJqb25kb25nIl19LAogICAgICAgICAiSm9vbmUgSHVyIjogeyJlbWFp
bHMiOiBbImpvb25lQHdlYmtpdC5vcmciLCAiam9vbmUuaHVyQGludGVsLmNvbSJdLCAibmlja3Mi
OiBbImpvb25lIl19LAogICAgICAgICAiSm9vc3QgZGUgVmFsayI6IHsiZW1haWxzIjogWyJqb29z
dEB3ZWJraXQub3JnIiwgIndlYmtpdC1kZXZAam9vc3RkZXZhbGsubmwiXSwgIm5pY2tzIjogWyJB
bHRoYSJdfSwKICAgICAgICAgIkpvc2h1YSBCZWxsIjogeyJlbWFpbHMiOiBbImpzYmVsbEBjaHJv
bWl1bS5vcmciLCAianNiZWxsQGdvb2dsZS5jb20iXSwgIm5pY2tzIjogWyJqc2JlbGwiXX0sCkBA
IC0zMTUsNyArMzE2LDcgQEAKICAgICAgICAgIlRyZXkgTWF0dGVzb24iOiB7ImVtYWlscyI6IFsi
dHJleUB1c2EubmV0Il0sICJuaWNrcyI6IFsidHJleSJdfSwKICAgICAgICAgIlRyaXN0YW4gTydU
aWVybmV5IjogeyJlbWFpbHMiOiBbInRyaXN0YW5Ab3RpZXJuZXkubmV0IiwgInRyaXN0YW5AYXBw
bGUuY29tIl19LAogICAgICAgICAiVmFuZ2VsaXMgS29ra2V2aXMiOiB7ImVtYWlscyI6IFsidmFu
Z2VsaXNAY2hyb21pdW0ub3JnIl0sICJuaWNrcyI6IFsidmFuZ2VsaXMiXX0sCi0gICAgICAgICJW
aWF0Y2hlc2xhdiBPc3RhcGVua28iOiB7ImVtYWlscyI6IFsib3N0YXA3M0BnbWFpbC5jb20iLCAi
di5vc3RhcGVua29Ac2Ftc3VuZy5jb20iLCAidi5vc3RhcGVua29Ac2lzYS5zYW1zdW5nLmNvbSJd
LCAibmlja3MiOiBbIm9zdGFwIl19LAorICAgICAgICAiVmlhdGNoZXNsYXYgT3N0YXBlbmtvIjog
eyJlbWFpbHMiOiBbIm9zdGFwNzNAZ21haWwuY29tIiwgIm9zdGFwZW5rby52aWF0Y2hlc2xhdkBu
b2tpYS5jb20iLCAidi5vc3RhcGVua29Ac2Ftc3VuZy5jb20iLCAidi5vc3RhcGVua29Ac2lzYS5z
YW1zdW5nLmNvbSJdLCAibmlja3MiOiBbIm9zdGFwIl19LAogICAgICAgICAiVmljdG9yIENhcmJ1
bmUiOiB7ImVtYWlscyI6IFsidmNhcmJ1bmVAY2hyb21pdW0ub3JnIiwgInZpY3RvckByb3NlZHUu
b3JnIl0sICJuaWNrcyI6IFsidmNhcmJ1bmUiXX0sCiAgICAgICAgICJWaWN0b3IgV2FuZyI6IHsi
ZW1haWxzIjogWyJ2aWN0b3J3QGNocm9taXVtLm9yZyJdLCAibmlja3MiOiBbInZpY3RvcnciXX0s
CiAgICAgICAgICJWaWN0b3JpYSBLaXJzdCI6IHsiZW1haWxzIjogWyJ2cmtAY2hyb21pdW0ub3Jn
IiwgInZya0Bnb29nbGUuY29tIl0sICJuaWNrcyI6IFsidnJrIl19LApAQCAtMzM3LDExICszMzgs
MTEgQEAKICAgICAgICAgIll1cWlhbmcgWGlhbiI6IHsiZW1haWxzIjogWyJ5dXFpYW5nLnhpYW5A
aW50ZWwuY29tIl19LAogICAgICAgICAiWXV6byBGdWppc2hpbWEiOiB7ImVtYWlscyI6IFsieXV6
b0Bnb29nbGUuY29tIl0sICJuaWNrcyI6IFsieXV6byJdfSwKICAgICAgICAgIlphbGFuIEJ1anRh
cyI6IHsiZW1haWxzIjogWyJ6YWxhbkBhcHBsZS5jb20iLCAiemJ1anRhc0BnbWFpbC5jb20iLCAi
emFsYW4uYnVqdGFzQG5va2lhLmNvbSJdLCAibmlja3MiOiBbInphbGFuIl19LAotICAgICAgICAi
WmVubyBBbGJpc3NlciI6IHsiZW1haWxzIjogWyJ6ZW5vQHdlYmtpdC5vcmciLCAiemVuby5hbGJp
c3NlckBub2tpYS5jb20iXSwgIm5pY2tzIjogWyJ6YWxiaXNzZXIiXX0sCisgICAgICAgICJaZW5v
IEFsYmlzc2VyIjogeyJlbWFpbHMiOiBbInplbm9Ad2Via2l0Lm9yZyIsICJ6ZW5vLmFsYmlzc2Vy
QG5va2lhLmNvbSIsICJ6ZW5vLmFsYmlzc2VyQGRpZ2lhLmNvbSJdLCAibmlja3MiOiBbInphbGJp
c3NlciJdfSwKICAgICAgICAgIlpoZW55YW8gTW8iOiB7ImVtYWlscyI6IFsiem1vQGdvb2dsZS5j
b20iXSwgIm5pY2tzIjogWyJ6aGVueWFvIl19LAogICAgICAgICAiWm9sdGFuIEFydmFpIjogeyJl
bWFpbHMiOiBbInphcnZhaUBpbmYudS1zemVnZWQuaHUiXSwgIm5pY2tzIjogWyJhemJlc3RfaHUi
XX0sCiAgICAgICAgICJab2x0YW4gSG9ydmF0aCI6IHsiZW1haWxzIjogWyJ6b2x0YW5Ad2Via2l0
Lm9yZyIsICJoem9sdGFuQGluZi51LXN6ZWdlZC5odSIsICJob3J2YXRoLnpvbHRhbi42QHN0dWQu
dS1zemVnZWQuaHUiXSwgIm5pY2tzIjogWyJ6b2x0YW4iXX0sCi0gICAgICAgICJcdTAxN2RhbiBE
b2Jlclx1MDE2MWVrIjogeyJlbWFpbHMiOiBbInphbmRvYmVyc2VrQGdtYWlsLmNvbSJdLCAibmlj
a3MiOiBbInpkb2JlcnNlayJdfQorICAgICAgICAiXHUwMTdkYW4gRG9iZXJcdTAxNjFlayI6IHsi
ZW1haWxzIjogWyJ6YW5kb2JlcnNla0BnbWFpbC5jb20iLCAiemFuZG9iZXJzZWtAaWdhbGlhLmNv
bSJdLCAibmlja3MiOiBbInpkb2JlcnNlayJdfQogICAgIH0sCiAgICAgIlJldmlld2VycyI6IHsK
ICAgICAgICAgIkFiaGlzaGVrIEFyeWEiOiB7ImVtYWlscyI6IFsiaW5mZXJub0BjaHJvbWl1bS5v
cmciXSwgIm5pY2tzIjogWyJpbmZlcm5vLXNlYyJdfSwKQEAgLTM1NSw3ICszNTYsNyBAQAogICAg
ICAgICAiQWxleGFuZGVyIFBhdmxvdiI6IHsiZW1haWxzIjogWyJhcGF2bG92QGNocm9taXVtLm9y
ZyIsICJwYXZsb3Y4MUBnbWFpbC5jb20iXSwgIm5pY2tzIjogWyJhcGF2bG92Il19LAogICAgICAg
ICAiQWxleGFuZHJ1IENoaWN1bGl0YSI6IHsiZW1haWxzIjogWyJhY2hpY3VAYWRvYmUuY29tIl0s
ICJuaWNrcyI6IFsiYWNoaWN1Il19LAogICAgICAgICAiQWxleGV5IFByb3NrdXJ5YWtvdiI6IHsi
ZW1haWxzIjogWyJhcEB3ZWJraXQub3JnIiwgImFwQGFwcGxlLmNvbSJdLCAibmlja3MiOiBbImFw
Il19LAotICAgICAgICAiQWxleGlzIE1lbmFyZCI6IHsiZW1haWxzIjogWyJhbGV4aXNAd2Via2l0
Lm9yZyIsICJtZW5hcmRAa2RlLm9yZyJdLCAibmlja3MiOiBbImRhcmt0ZWFycyJdfSwKKyAgICAg
ICAgIkFsZXhpcyBNZW5hcmQiOiB7ImVtYWlscyI6IFsiYWxleGlzQHdlYmtpdC5vcmciLCAibWVu
YXJkQGtkZS5vcmciLCAiYWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnIl0sICJuaWNrcyI6IFsi
ZGFya3RlYXJzIl19LAogICAgICAgICAiQWxpY2UgTGl1IjogeyJlbWFpbHMiOiBbImFsaWNlLmxp
dUBhcHBsZS5jb20iXSwgIm5pY2tzIjogWyJhbGl1Il19LAogICAgICAgICAiQWxsYW4gU2FuZGZl
bGQgSmVuc2VuIjogeyJlbWFpbHMiOiBbImFsbGFuLmplbnNlbkBkaWdpYS5jb20iLCAia2RlQGNh
cmV3b2xmLmNvbSIsICJzYW5kZmVsZEBrZGUub3JnIiwgImFsbGFuLmplbnNlbkBub2tpYS5jb20i
XSwgIm5pY2tzIjogWyJjYXJld29sZiJdfSwKICAgICAgICAgIkFscCBUb2tlciI6IHsiZW1haWxz
IjogWyJhbHBAbnVhbnRpLmNvbSIsICJhbHBAYXRva2VyLmNvbSIsICJhbHBAd2Via2l0Lm9yZyJd
LCAibmlja3MiOiBbImFscCJdfSwKQEAgLTQxNSw3ICs0MTYsNyBAQAogICAgICAgICAiSmVzc2ll
IEJlcmxpbiI6IHsiZW1haWxzIjogWyJqYmVybGluQHdlYmtpdC5vcmciLCAiamJlcmxpbkBhcHBs
ZS5jb20iXSwgIm5pY2tzIjogWyJqZXNzaWViZXJsaW4iXX0sCiAgICAgICAgICJKaWFuIExpIjog
eyJlbWFpbHMiOiBbImppYW5saUBjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJqaWFubGkiXX0s
CiAgICAgICAgICJKb2NlbHluIFR1cmNvdHRlIjogeyJlbWFpbHMiOiBbImpvY2VseW4udHVyY290
dGVAZGlnaWEuY29tIiwgImpvY2VseW4udHVyY290dGVAbm9raWEuY29tIl0sICJuaWNrcyI6IFsi
anR1cmNvdHRlIl19LAotICAgICAgICAiSm9jaGVuIEVpc2luZ2VyIjogeyJlbWFpbHMiOiBbImpv
Y2hlbkBjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJqb2NoZW5fXyJdfSwKKyAgICAgICAgIkpv
Y2hlbiBFaXNpbmdlciI6IHsiZW1haWxzIjogWyJqb2NoZW5AY2hyb21pdW0ub3JnIiwgImpvY2hl
bkBjaHJvbWl1bS5vciJdLCAibmlja3MiOiBbImpvY2hlbl9fIl19LAogICAgICAgICAiSm9obiBT
dWxsaXZhbiI6IHsiZW1haWxzIjogWyJzdWxsaXZhbkBhcHBsZS5jb20iXSwgIm5pY2tzIjogWyJz
dWxsaXZhbiJdfSwKICAgICAgICAgIkpvbiBIb25leWN1dHQiOiB7ImVtYWlscyI6IFsiamhvbmV5
Y3V0dEBhcHBsZS5jb20iXSwgIm5pY2tzIjogWyJqaG9uZXljdXR0Il19LAogICAgICAgICAiSm9z
ZXBoIFBlY29yYXJvIjogeyJlbWFpbHMiOiBbImpvZXBlY2tAd2Via2l0Lm9yZyIsICJwZWNvcmFy
b0BhcHBsZS5jb20iXSwgIm5pY2tzIjogWyJKb2VQZWNrIl19LApAQCAtNDY5LDcgKzQ3MCw3IEBA
CiAgICAgICAgICJWaWNraSBNdXJsZXkiOiB7ImVtYWlscyI6IFsidmlja2lAYXBwbGUuY29tIl19
LAogICAgICAgICAiVnNldm9sb2QgVmxhc292IjogeyJlbWFpbHMiOiBbInZzZXZpa0BjaHJvbWl1
bS5vcmciXSwgIm5pY2tzIjogWyJ2c2V2aWsiXX0sCiAgICAgICAgICJYYW4gTG9wZXoiOiB7ImVt
YWlscyI6IFsieGFuLmxvcGV6QGdtYWlsLmNvbSIsICJ4YW5AZ25vbWUub3JnIiwgInhhbkB3ZWJr
aXQub3JnIiwgInhsb3BlekBpZ2FsaWEuY29tIl0sICJuaWNrcyI6IFsieGFuIl19LAotICAgICAg
ICAiWW9uZyBMaSI6IHsiZW1haWxzIjogWyJ5b25nLmxpLndlYmtpdEBvdXRsb29rLmNvbSJdLCAi
bmlja3MiOiBbInlvbGkiXX0sCisgICAgICAgICJZb25nIExpIjogeyJlbWFpbHMiOiBbInlvbmcu
bGkud2Via2l0QG91dGxvb2suY29tIiwgInlvbGlAcmltLmNvbSJdLCAibmlja3MiOiBbInlvbGki
XX0sCiAgICAgICAgICJZdXJ5IFNlbWlraGF0c2t5IjogeyJlbWFpbHMiOiBbInl1cnlzQGNocm9t
aXVtLm9yZyJdLCAibmlja3MiOiBbInl1cnlzIl19LAogICAgICAgICAiWXV0YSBLaXRhbXVyYSI6
IHsiZW1haWxzIjogWyJ5dXRha0BjaHJvbWl1bS5vcmciXSwgIm5pY2tzIjogWyJ5dXRhayJdfSwK
ICAgICAgICAgIlphY2sgUnVzaW4iOiB7ImVtYWlscyI6IFsiemFja0BrZGUub3JnIl0sICJuaWNr
cyI6IFsiemFja3IiXX0sCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weQppbmRleCA4NDViNzgyNzA5NjUyMmQ1
ZTEyZjUwYzlmNjI3YjFlZTM1Y2U5ZDcwLi5iMWIxOGNiNzZjYjI2ODdjZjZiNjE0MmNkNTcxZDZi
YWQ0ZWEzMGE5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnMucHkKQEAgLTI3LDE5ICsyNywyNiBAQAogIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGNhbGVuZGFyCiBmcm9tIG9wdHBh
cnNlIGltcG9ydCBtYWtlX29wdGlvbgogaW1wb3J0IHJlCiAKIGZyb20gd2Via2l0cHkuY29tbW9u
LmNoZWNrb3V0LmNoYW5nZWxvZyBpbXBvcnQgQ2hhbmdlTG9nRW50cnkKIGZyb20gd2Via2l0cHku
Y29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0Ci1mcm9tIHdlYmtp
dHB5LnRvb2wgaW1wb3J0IHN0ZXBzCiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQg
am9pbl93aXRoX3NlcGFyYXRvcnMKIGZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29s
IGltcG9ydCBDb21tYW5kCiAKIAogY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKENvbW1hbmQpOgog
ICAgIG5hbWUgPSAic3VnZ2VzdC1ub21pbmF0aW9ucyIKLSAgICBoZWxwX3RleHQgPSAiU3VnZ2Vz
dCBjb250cmlidXRvcnMgZm9yIGNvbW1pdHRlci9yZXZpZXdlciBub21pbmF0aW9ucyIKKyAgICBo
ZWxwX3RleHQgPSAiU3VnZ2VzdCBub21pbmF0aW9ucyBmb3IgY29tbWl0dGVyL3Jldmlld2VyIHJv
bGUiCisKKyAgICBfbGVhZGluZ19pbmRlbnRfcmVnZXhwID0gcmUuY29tcGlsZShyIl5bIF17NH0i
LCByZS5NVUxUSUxJTkUpCisgICAgX3Jldmlld2VkX2J5X3JlZ2V4cCA9IHJlLmNvbXBpbGUoQ2hh
bmdlTG9nRW50cnkucmV2aWV3ZWRfYnlfcmVnZXhwLCByZS5NVUxUSUxJTkUpCisgICAgX3BhdGNo
X2J5X3JlZ2V4cCA9IHJlLmNvbXBpbGUocideUGF0Y2ggYnkgKD9QPG5hbWU+Lis/KVxzKzwoP1A8
ZW1haWw+W148Pl0rKT4gb24gKD9QPGRhdGU+XGR7NH0tXGR7Mn0tXGR7Mn0pJCcsIHJlLk1VTFRJ
TElORSkKKyAgICBfY29tbWl0dGVyX3JlZ2V4cCA9IHJlLmNvbXBpbGUocideQXV0aG9yOiAoP1A8
ZW1haWw+XFMrKVxzKzxbXj5dKz4kJywgcmUuTVVMVElMSU5FKQorICAgIF9kYXRlX3JlZ2V4cCA9
IHJlLmNvbXBpbGUocideRGF0ZTogICBcU3szfSAoP1A8bW9udGg+XFN7M30pICg/UDxkYXk+XGR7
MSwyfSkgKD9QPHRpbWU+XGR7Mn06XGR7Mn06XGR7Mn0pICg/UDx5ZWFyPlxkezR9KSBbXCtcLV1c
ZHs0fSQnLCByZS5NVUxUSUxJTkUpCisgICAgX3JldmlzaW9uX3JlZ2V4cCA9IHJlLmNvbXBpbGUo
cideZ2l0LXN2bi1pZDogaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3Ry
dW5rQCg/UDxzdm5pZD5cZCspICg/UDxnaXRpZD5bMC05YS1mXC1dezM2fSkkJywgcmUuTVVMVElM
SU5FKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBvcHRpb25zID0gWwpAQCAt
NDgsMTQgKzU1LDEwIEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKICAgICAg
ICAgICAgIG1ha2Vfb3B0aW9uKCItLW1heC1jb21taXQtYWdlIiwgYWN0aW9uPSJzdG9yZSIsIGRl
c3Q9Im1heF9jb21taXRfYWdlIiwgdHlwZT0iaW50IiwgZGVmYXVsdD05LCBoZWxwPSJTcGVjaWZ5
IG1heCBjb21taXQgYWdlIHRvIGNvbnNpZGVyIGZvciBub21pbmF0aW9ucyAoaW4gbW9udGhzKS4i
KSwKICAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLXNob3ctY29tbWl0cyIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsIGRlc3Q9InNob3dfY29tbWl0cyIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IlNob3cg
Y29tbWl0IGhpc3Rvcnkgd2l0aCBub21pbmF0aW9uIHN1Z2dlc3Rpb25zLiIpLAogICAgICAgICBd
Ci0KLSAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBvcHRpb25zPW9wdGlvbnMpCisgICAg
ICAgIHN1cGVyKFN1Z2dlc3ROb21pbmF0aW9ucywgc2VsZikuX19pbml0X18ob3B0aW9ucz1vcHRp
b25zKQogICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBvbiB0aGUgdG9v
bCBzb21ld2hlcmUuCiAgICAgICAgIHNlbGYuX2NvbW1pdHRlcl9saXN0ID0gQ29tbWl0dGVyTGlz
dCgpCiAKLSAgICBfY291bnRlcnNfYnlfbmFtZSA9IHt9Ci0gICAgX2NvdW50ZXJzX2J5X2VtYWls
ID0ge30KLQogICAgIGRlZiBfaW5pdF9vcHRpb25zKHNlbGYsIG9wdGlvbnMpOgogICAgICAgICBz
ZWxmLmNvbW1pdHRlcl9taW5pbXVtID0gb3B0aW9ucy5jb21taXR0ZXJfbWluaW11bQogICAgICAg
ICBzZWxmLnJldmlld2VyX21pbmltdW0gPSBvcHRpb25zLnJldmlld2VyX21pbmltdW0KQEAgLTY2
LDYyICs2OSwxMDkgQEAgY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKENvbW1hbmQpOgogICAgICMg
RklYTUU6IFRoaXMgc2hvdWxkIG1vdmUgdG8gc2NtLnB5CiAgICAgZGVmIF9yZWNlbnRfY29tbWl0
X21lc3NhZ2VzKHNlbGYpOgogICAgICAgICBnaXRfbG9nID0gc2VsZi5fdG9vbC5leGVjdXRpdmUu
cnVuX2NvbW1hbmQoWydnaXQnLCAnbG9nJywgJy0tc2luY2U9IiVzIG1vbnRocyBhZ28iJyAlIHNl
bGYubWF4X2NvbW1pdF9hZ2VdKQotICAgICAgICBtYXRjaF9naXRfc3ZuX2lkID0gcmUuY29tcGls
ZShyIlxuXG4gICAgZ2l0LXN2bi1pZDouKlxuIiwgcmUuTVVMVElMSU5FKQotICAgICAgICBtYXRj
aF9nZXRfbG9nX2xpbmVzID0gcmUuY29tcGlsZShyIl5cUy4qXG4iLCByZS5NVUxUSUxJTkUpCi0g
ICAgICAgIG1hdGNoX2xlYWRpbmdfaW5kZW50ID0gcmUuY29tcGlsZShyIl5bIF17NH0iLCByZS5N
VUxUSUxJTkUpCi0KLSAgICAgICAgbWVzc2FnZXMgPSByZS5zcGxpdChyImNvbW1pdCBcd3s0MH0i
LCBnaXRfbG9nKVsxOl0gICMgSWdub3JlIHRoZSBmaXJzdCBtZXNzYWdlIHdoaWNoIHdpbGwgYmUg
ZW1wdHkuCisgICAgICAgIG1lc3NhZ2VzID0gcmUuc3BsaXQociJeY29tbWl0IFx3ezQwfSQiLCBn
aXRfbG9nLCBmbGFncz1yZS5NVUxUSUxJTkUpWzE6XSAgIyBJZ25vcmUgdGhlIGZpcnN0IG1lc3Nh
Z2Ugd2hpY2ggd2lsbCBiZSBlbXB0eS4KICAgICAgICAgZm9yIG1lc3NhZ2UgaW4gbWVzc2FnZXM6
Ci0gICAgICAgICAgICAjIFJlbW92ZSBhbnkgbGluZXMgZnJvbSBnaXQgYW5kIHVuaW5kZW50IGFs
bCB0aGUgbGluZXMKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNoX2dpdF9zdm5faWQu
c3VibigiIiwgbWVzc2FnZSkKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNoX2dldF9s
b2dfbGluZXMuc3VibigiIiwgbWVzc2FnZSkKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1h
dGNoX2xlYWRpbmdfaW5kZW50LnN1Ym4oIiIsIG1lc3NhZ2UpCisgICAgICAgICAgICAjIFVuaW5k
ZW50IGFsbCB0aGUgbGluZXMKKyAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IHNlbGYuX2xlYWRp
bmdfaW5kZW50X3JlZ2V4cC5zdWJuKCIiLCBtZXNzYWdlKQogICAgICAgICAgICAgeWllbGQgbWVz
c2FnZS5sc3RyaXAoKSAgIyBSZW1vdmUgYW55IGxlYWRpbmcgbmV3bGluZXMgZnJvbSB0aGUgbG9n
IG1lc3NhZ2UuCiAKLSAgICAjIGUuZy4gUGF0Y2ggYnkgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0
Lm9yZz4gb24gMjAxMS0wOS0xNQotICAgIHBhdGNoX2J5X3JlZ2V4cCA9IHInXlBhdGNoIGJ5ICg/
UDxuYW1lPi4rPylccys8KD9QPGVtYWlsPltePD5dKyk+IG9uICg/UDxkYXRlPlxkezR9LVxkezJ9
LVxkezJ9KSQnCisgICAgZGVmIF9hdXRob3JfbmFtZV9mcm9tX2VtYWlsKHNlbGYsIGVtYWlsKToK
KyAgICAgICAgY29udHJpYnV0b3IgPSBzZWxmLl9jb21taXR0ZXJfbGlzdC5jb250cmlidXRvcl9i
eV9lbWFpbChlbWFpbCkKKyAgICAgICAgcmV0dXJuIGNvbnRyaWJ1dG9yLmZ1bGxfbmFtZSBpZiBj
b250cmlidXRvciBlbHNlIE5vbmUKKworICAgIGRlZiBfY29tbWl0X2RhdGVfZnJvbV9tYXRjaChz
ZWxmLCBtYXRjaCk6CisgICAgICAgIHllYXIgPSBtYXRjaC5ncm91cCgneWVhcicpCisgICAgICAg
IG1vbnRoX2FiYnIgPSBtYXRjaC5ncm91cCgnbW9udGgnKQorICAgICAgICBtb250aCA9IDAKKyAg
ICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGNhbGVuZGFyLm1vbnRoX2FiYnIpKToKKyAgICAgICAg
ICAgIGlmIGNhbGVuZGFyLm1vbnRoX2FiYnJbaV0gPT0gbW9udGhfYWJicjoKKyAgICAgICAgICAg
ICAgICBtb250aCA9IGkgKyAxCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZGF5ID0g
bWF0Y2guZ3JvdXAoJ2RheScpCisgICAgICAgIHJldHVybiAnJTA0ZC0lMDJkLSUwMmQnICUgKGlu
dCh5ZWFyKSwgbW9udGgsIGludChkYXkpKQorCisgICAgZGVmIF9jb250cmlidXRvcl9mcm9tX2Vt
YWlsKHNlbGYsIGVtYWlsKToKKyAgICAgICAgY29udHJpYnV0b3IgPSBzZWxmLl9jb21taXR0ZXJf
bGlzdC5jb250cmlidXRvcl9ieV9lbWFpbChlbWFpbCkKKyAgICAgICAgcmV0dXJuIGNvbnRyaWJ1
dG9yIGlmIGNvbnRyaWJ1dG9yIGVsc2UgTm9uZQorCisgICAgZGVmIF9hbmFseXplX2NvbW1pdChz
ZWxmLCBjb21taXRfbWVzc2FnZSwgb25fYW5hbHlzaXMsIGFuYWx5c2lzKToKKworICAgICAgICAj
IERldGVybWluZSBjb21taXR0ZXIgaWYgcG9zc2libGUsIG90aGVyd2lzZSBza2lwIGNvbW1pdC4K
KyAgICAgICAgY29tbWl0dGVyX21hdGNoID0gc2VsZi5fY29tbWl0dGVyX3JlZ2V4cC5zZWFyY2go
Y29tbWl0X21lc3NhZ2UpCisgICAgICAgIGlmIG5vdCBjb21taXR0ZXJfbWF0Y2g6CisgICAgICAg
ICAgICByZXR1cm4KKworICAgICAgICAjIERldGVybWluZSBjb21taXR0ZXIgZW1haWwgaWYgcG9z
c2libGUsIG90aGVyd2lzZSBza2lwIGNvbW1pdC4KKyAgICAgICAgY29tbWl0dGVyX2VtYWlsID0g
Y29tbWl0dGVyX21hdGNoLmdyb3VwKCdlbWFpbCcpCisgICAgICAgIGlmIG5vdCBjb21taXR0ZXJf
ZW1haWw6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIERldGVybWluZSBpZiBjb21t
aXR0ZXIgaXMgYSBrbm93biBjb250cmlidXRvciwgaS5lLiwgcmVnaXN0ZXJlZCBpbiBjb21taXR0
ZXJzLnB5LCBvdGhlcndpc2Ugc2tpcCBjb21taXQuCisgICAgICAgIGNvbW1pdHRlciA9IHNlbGYu
X2NvbnRyaWJ1dG9yX2Zyb21fZW1haWwoY29tbWl0dGVyX2VtYWlsKQorICAgICAgICBpZiBub3Qg
Y29tbWl0dGVyOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBEZXRlcm1pbmUgY29t
bWl0IGRhdGUgaWYgcG9zc2libGUsIG90aGVyd2lzZSBza2lwIGNvbW1pdC4KKyAgICAgICAgY29t
bWl0X2RhdGVfbWF0Y2ggPSBzZWxmLl9kYXRlX3JlZ2V4cC5zZWFyY2goY29tbWl0X21lc3NhZ2Up
CisgICAgICAgIGlmIG5vdCBjb21taXRfZGF0ZV9tYXRjaDoKKyAgICAgICAgICAgIHJldHVybgor
ICAgICAgICBjb21taXRfZGF0ZSA9IHNlbGYuX2NvbW1pdF9kYXRlX2Zyb21fbWF0Y2goY29tbWl0
X2RhdGVfbWF0Y2gpCisKKyAgICAgICAgIyBEZXRlcm1pbmUgcmV2aXNpb24gaWYgcG9zc2libGUs
IG90aGVyd2lzZSBza2lwIGNvbW1pdC4KKyAgICAgICAgcmV2aXNpb25fbWF0Y2ggPSBzZWxmLl9y
ZXZpc2lvbl9yZWdleHAuc2VhcmNoKGNvbW1pdF9tZXNzYWdlKQorICAgICAgICBpZiBub3QgcmV2
aXNpb25fbWF0Y2g6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcmV2aXNpb24gPSByZXZp
c2lvbl9tYXRjaC5ncm91cCgnc3ZuaWQnKQorCisgICAgICAgICMgRGV0ZXJtaW5lIGF1dGhvciBp
ZiBwb3NzaWJsZSwgb3RoZXJ3aXNlIHNraXAgY29tbWl0LiBMb29rIGZvciAiUGF0Y2ggYnkiIGxp
bmUgZmlyc3QsIHdoaWNoCisgICAgICAgICMgaXMgdXNlZCBmb3Igbm9uLWNvbW1pdHRlciBjb250
cmlidXRvcnM7IG90aGVyd2lzZSwgdXNlIGNvbW1pdHRlciBpbmZvIGRldGVybWluZWQgYWJvdmUu
CisgICAgICAgIGF1dGhvcl9tYXRjaCA9IHNlbGYuX3BhdGNoX2J5X3JlZ2V4cC5zZWFyY2goY29t
bWl0X21lc3NhZ2UpCisgICAgICAgIGlmIG5vdCBhdXRob3JfbWF0Y2g6CisgICAgICAgICAgICBh
dXRob3JfbWF0Y2ggPSBjb21taXR0ZXJfbWF0Y2gKKyAgICAgICAgaWYgbm90IGF1dGhvcl9tYXRj
aDoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgRGV0ZXJtaW5lIGF1dGhvciBlbWFp
bCBpZiBwb3NzaWJsZSwgb3RoZXJ3aXNlIHNraXAgY29tbWl0LgorICAgICAgICBhdXRob3JfZW1h
aWwgPSBhdXRob3JfbWF0Y2guZ3JvdXAoJ2VtYWlsJykKKyAgICAgICAgaWYgbm90IGF1dGhvcl9l
bWFpbDoKKyAgICAgICAgICAgIGF1dGhvcl9lbWFpbCA9IGNvbW1pdHRlcl9lbWFpbAorICAgICAg
ICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBEZXRlcm1pbmUgaWYgYXV0aG9yIGlzIGEga25vd24g
Y29udHJpYnV0b3IsIGkuZS4sIHJlZ2lzdGVyZWQgaW4gY29tbWl0dGVycy5weS4KKyAgICAgICAg
Y29udHJpYnV0b3IgPSBzZWxmLl9jb250cmlidXRvcl9mcm9tX2VtYWlsKGF1dGhvcl9lbWFpbCkK
KworICAgICAgICAjIERldGVybWluZSBhdXRob3IgbmFtZSBpZiBwb3NzaWJsZSwgb3RoZXJ3aXNl
IHNraXAgY29tbWl0LgorICAgICAgICBhdXRob3JfbmFtZSA9IGF1dGhvcl9tYXRjaC5ncm91cCgn
bmFtZScpIGlmICduYW1lJyBpbiBhdXRob3JfbWF0Y2guZ3JvdXBkaWN0KCkgZWxzZSBOb25lCisg
ICAgICAgIGlmIG5vdCBhdXRob3JfbmFtZToKKyAgICAgICAgICAgIGF1dGhvcl9uYW1lID0gc2Vs
Zi5fYXV0aG9yX25hbWVfZnJvbV9lbWFpbChhdXRob3JfZW1haWwpCisgICAgICAgIGlmIG5vdCBh
dXRob3JfbmFtZToKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgVXNlIGNhbm9uaWNh
bCBuYW1lIGlmIGtub3duIGNvbnRyaWJ1dG9yLgorICAgICAgICBpZiBjb250cmlidXRvciBhbmQg
YXV0aG9yX25hbWUgIT0gY29udHJpYnV0b3IuZnVsbF9uYW1lOgorICAgICAgICAgICAgYXV0aG9y
X25hbWUgPSBjb250cmlidXRvci5mdWxsX25hbWUKKworICAgICAgICAjIERldGVybWluZSByZXZp
ZXdlcnMgaWYgcG9zc2libGUsIG90aGVyd2lzZSBvcHRpb25hbGx5IHNraXAgY29tbWl0LgorICAg
ICAgICByZXZpZXdlcl9tYXRjaCA9IHNlbGYuX3Jldmlld2VkX2J5X3JlZ2V4cC5zZWFyY2goY29t
bWl0X21lc3NhZ2UpCisgICAgICAgIGlmIG5vdCByZXZpZXdlcl9tYXRjaDoKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICByZXZpZXdlcnMgPSByZXZpZXdlcl9tYXRjaC5ncm91cCgncmV2aWV3
ZXInKQorCisgICAgICAgIG9uX2FuYWx5c2lzKGFuYWx5c2lzLCBjb21taXR0ZXIsIGNvbW1pdF9k
YXRlLCByZXZpc2lvbiwgYXV0aG9yX2VtYWlsLCBhdXRob3JfbmFtZSwgY29udHJpYnV0b3IsIHJl
dmlld2VycykKKworICAgIGRlZiBfYW5hbHl6ZV9jb21taXRzKHNlbGYsIG9uX2FuYWx5c2lzLCBh
bmFseXNpcywgYW5hbHl6ZT1Ob25lKToKKyAgICAgICAgaWYgbm90IGFuYWx5emU6CisgICAgICAg
ICAgICBhbmFseXplID0gc2VsZi5fYW5hbHl6ZV9jb21taXQKKyAgICAgICAgZm9yIGNvbW1pdF9t
ZXNzYWdlIGluIHNlbGYuX3JlY2VudF9jb21taXRfbWVzc2FnZXMoKToKKyAgICAgICAgICAgIGFu
YWx5emUoY29tbWl0X21lc3NhZ2UsIG9uX2FuYWx5c2lzLCBhbmFseXNpcykKIAogICAgIGRlZiBf
Y291bnRfcmVjZW50X3BhdGNoZXMoc2VsZik6Ci0gICAgICAgICMgVGhpcyBlbnRpcmUgYmxvY2sg
Y291bGQgYmUgd3JpdHRlbiBhcyBhIG1hcC9yZWR1Y2Ugb3ZlciB0aGUgbWVzc2FnZXMuCi0gICAg
ICAgIGZvciBtZXNzYWdlIGluIHNlbGYuX3JlY2VudF9jb21taXRfbWVzc2FnZXMoKToKLSAgICAg
ICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBDaGFuZ2VMb2dFbnRyeSB0byBkbyB0aGUg
ZW50aXJlIHBhcnNlIGluc3RlYWQKLSAgICAgICAgICAgICMgb2YgZ3JhYmJpbmcgYXQgaXRzIHJl
Z2V4cHMuCi0gICAgICAgICAgICBkYXRlbGluZV9tYXRjaCA9IHJlLm1hdGNoKENoYW5nZUxvZ0Vu
dHJ5LmRhdGVfbGluZV9yZWdleHAsIG1lc3NhZ2UsIHJlLk1VTFRJTElORSkKLSAgICAgICAgICAg
IGlmIG5vdCBkYXRlbGluZV9tYXRjaDoKLSAgICAgICAgICAgICAgICAjIE1vZGVybiBjb21taXQg
bWVzc2FnZXMgZG9uJ3QganVzdCBkdW1wIHRoZSBDaGFuZ2VMb2cgZW50cnksIGJ1dCByYXRoZXIK
LSAgICAgICAgICAgICAgICAjIGhhdmUgYSBzcGVjaWFsIFBhdGNoIGJ5IGxpbmUgZm9yIG5vbi1j
b21taXR0ZXJzLgotICAgICAgICAgICAgICAgIGRhdGVsaW5lX21hdGNoID0gcmUuc2VhcmNoKHNl
bGYucGF0Y2hfYnlfcmVnZXhwLCBtZXNzYWdlLCByZS5NVUxUSUxJTkUpCi0gICAgICAgICAgICAg
ICAgaWYgbm90IGRhdGVsaW5lX21hdGNoOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQot
Ci0gICAgICAgICAgICBhdXRob3JfZW1haWwgPSBkYXRlbGluZV9tYXRjaC5ncm91cCgiZW1haWwi
KQotICAgICAgICAgICAgaWYgbm90IGF1dGhvcl9lbWFpbDoKLSAgICAgICAgICAgICAgICBjb250
aW51ZQotCi0gICAgICAgICAgICAjIFdlIG9ubHkgY2FyZSBhYm91dCByZXZpZXdlZCBwYXRjaGVz
LCBzbyBtYWtlIHN1cmUgaXQgaGFzIGEgdmFsaWQgcmV2aWV3ZXIgbGluZS4KLSAgICAgICAgICAg
IHJldmlld2VyX21hdGNoID0gcmUuc2VhcmNoKENoYW5nZUxvZ0VudHJ5LnJldmlld2VkX2J5X3Jl
Z2V4cCwgbWVzc2FnZSwgcmUuTVVMVElMSU5FKQotICAgICAgICAgICAgIyBXZSBtaWdodCBhbHNv
IHdhbnQgdG8gdmFsaWRhdGUgdGhlIHJldmlld2VyIG5hbWUgYWdhaW5zdCB0aGUgY29tbWl0dGVy
IGxpc3QuCi0gICAgICAgICAgICBpZiBub3QgcmV2aWV3ZXJfbWF0Y2ggb3Igbm90IHJldmlld2Vy
X21hdGNoLmdyb3VwKCJyZXZpZXdlciIpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAg
ICAgICAgICAgIGF1dGhvcl9uYW1lID0gZGF0ZWxpbmVfbWF0Y2guZ3JvdXAoIm5hbWUiKQotICAg
ICAgICAgICAgaWYgbm90IGF1dGhvcl9uYW1lOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAK
LSAgICAgICAgICAgIGlmIHJlLnNlYXJjaCgiKFteYS16QS1aXWFuZFteYS16QS1aXSl8KCwpfChA
KSIsIGF1dGhvcl9uYW1lKToKLSAgICAgICAgICAgICAgICAjIFRoaXMgZW50cnkgc2VlbXMgdG8g
aGF2ZSBtdWx0aXBsZSByZXZpZXdlcnMsIG9yIGludmFsaWQgY2hhcmFjdGVycywgc28gcmVqZWN0
IGl0LgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIHN2bl9pZF9tYXRj
aCA9IHJlLnNlYXJjaChDaGFuZ2VMb2dFbnRyeS5zdm5faWRfcmVnZXhwLCBtZXNzYWdlLCByZS5N
VUxUSUxJTkUpCi0gICAgICAgICAgICBpZiBzdm5faWRfbWF0Y2g6Ci0gICAgICAgICAgICAgICAg
c3ZuX2lkID0gc3ZuX2lkX21hdGNoLmdyb3VwKCJzdm5pZCIpCi0gICAgICAgICAgICBpZiBub3Qg
c3ZuX2lkX21hdGNoIG9yIG5vdCBzdm5faWQ6Ci0gICAgICAgICAgICAgICAgc3ZuX2lkID0gInVu
a25vd24iCi0gICAgICAgICAgICBjb21taXRfZGF0ZSA9IGRhdGVsaW5lX21hdGNoLmdyb3VwKCJk
YXRlIikKKyAgICAgICAgZGVmIF9vbl9hbmFseXNpcyhhbmFseXNpcywgY29tbWl0dGVyLCBjb21t
aXRfZGF0ZSwgcmV2aXNpb24sIGF1dGhvcl9lbWFpbCwgYXV0aG9yX25hbWUsIGNvbnRyaWJ1dG9y
LCByZXZpZXdlcnMpOgogCi0gICAgICAgICAgICAjIFNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBj
b250cmlidXRvciB3aXRoIHRoaXMgbmFtZSBvciBlbWFpbAotICAgICAgICAgICAgY291bnRlcl9i
eV9uYW1lID0gc2VsZi5fY291bnRlcnNfYnlfbmFtZS5nZXQoYXV0aG9yX25hbWUpCi0gICAgICAg
ICAgICBjb3VudGVyX2J5X2VtYWlsID0gc2VsZi5fY291bnRlcnNfYnlfZW1haWwuZ2V0KGF1dGhv
cl9lbWFpbCkKKyAgICAgICAgICAgICMgU2VlIGlmIHdlIGFscmVhZHkgaGF2ZSBhIGNvbnRyaWJ1
dG9yIHdpdGggdGhpcyBhdXRob3JfbmFtZSBvciBlbWFpbAorICAgICAgICAgICAgY291bnRlcl9i
eV9uYW1lID0gYW5hbHlzaXNbJ2NvdW50ZXJzX2J5X25hbWUnXS5nZXQoYXV0aG9yX25hbWUpCisg
ICAgICAgICAgICBjb3VudGVyX2J5X2VtYWlsID0gYW5hbHlzaXNbJ2NvdW50ZXJzX2J5X2VtYWls
J10uZ2V0KGF1dGhvcl9lbWFpbCkKICAgICAgICAgICAgIGlmIGNvdW50ZXJfYnlfbmFtZToKICAg
ICAgICAgICAgICAgICBpZiBjb3VudGVyX2J5X2VtYWlsOgogICAgICAgICAgICAgICAgICAgICBp
ZiBjb3VudGVyX2J5X25hbWUgIT0gY291bnRlcl9ieV9lbWFpbDoKQEAgLTEzMiwzMSArMTgyLDM2
IEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvdW50ZXJfYnlfbmFtZVsnbmFtZXMnXSB8PSBjb3VudGVyX2J5X2VtYWlsWyduYW1l
cyddCiAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X25hbWVbJ2VtYWlscyddIHw9
IGNvdW50ZXJfYnlfZW1haWxbJ2VtYWlscyddCiAgICAgICAgICAgICAgICAgICAgICAgICBjb3Vu
dGVyX2J5X25hbWVbJ2NvdW50J10gKz0gY291bnRlcl9ieV9lbWFpbC5nZXQoJ2NvdW50JywgMCkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvdW50ZXJzX2J5X2VtYWlsW2F1dGhvcl9l
bWFpbF0gPSBjb3VudGVyX2J5X25hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuYWx5c2lz
Wydjb3VudGVyc19ieV9lbWFpbCddW2F1dGhvcl9lbWFpbF0gPSBjb3VudGVyX2J5X25hbWUKICAg
ICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAjIEFkZCBlbWFpbCB0byB0
aGUgZXhpc3RpbmcgY291bnRlcgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3VudGVyc19i
eV9lbWFpbFthdXRob3JfZW1haWxdID0gY291bnRlcl9ieV9uYW1lCisgICAgICAgICAgICAgICAg
ICAgIGFuYWx5c2lzWydjb3VudGVyc19ieV9lbWFpbCddW2F1dGhvcl9lbWFpbF0gPSBjb3VudGVy
X2J5X25hbWUKICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9ieV9uYW1lWydlbWFpbHMnXSB8
PSBzZXQoW2F1dGhvcl9lbWFpbF0pCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAg
IGlmIGNvdW50ZXJfYnlfZW1haWw6CiAgICAgICAgICAgICAgICAgICAgICMgQWRkIG5hbWUgdG8g
dGhlIGV4aXN0aW5nIGNvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY291bnRlcnNf
YnlfbmFtZVthdXRob3JfbmFtZV0gPSBjb3VudGVyX2J5X2VtYWlsCisgICAgICAgICAgICAgICAg
ICAgIGFuYWx5c2lzWydjb3VudGVyc19ieV9uYW1lJ11bYXV0aG9yX25hbWVdID0gY291bnRlcl9i
eV9lbWFpbAogICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X2VtYWlsWyduYW1lcyddIHw9
IHNldChbYXV0aG9yX25hbWVdKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAg
ICAgICAgICMgQ3JlYXRlIG5ldyBjb3VudGVyCiAgICAgICAgICAgICAgICAgICAgIG5ld19jb3Vu
dGVyID0geyduYW1lcyc6IHNldChbYXV0aG9yX25hbWVdKSwgJ2VtYWlscyc6IHNldChbYXV0aG9y
X2VtYWlsXSksICdsYXRlc3RfbmFtZSc6IGF1dGhvcl9uYW1lLCAnbGF0ZXN0X2VtYWlsJzogYXV0
aG9yX2VtYWlsLCAnY29tbWl0cyc6ICIifQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3Vu
dGVyc19ieV9uYW1lW2F1dGhvcl9uYW1lXSA9IG5ld19jb3VudGVyCi0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2NvdW50ZXJzX2J5X2VtYWlsW2F1dGhvcl9lbWFpbF0gPSBuZXdfY291bnRlcgor
ICAgICAgICAgICAgICAgICAgICBhbmFseXNpc1snY291bnRlcnNfYnlfbmFtZSddW2F1dGhvcl9u
YW1lXSA9IG5ld19jb3VudGVyCisgICAgICAgICAgICAgICAgICAgIGFuYWx5c2lzWydjb3VudGVy
c19ieV9lbWFpbCddW2F1dGhvcl9lbWFpbF0gPSBuZXdfY291bnRlcgogCi0gICAgICAgICAgICBh
c3NlcnQoc2VsZi5fY291bnRlcnNfYnlfbmFtZVthdXRob3JfbmFtZV0gPT0gc2VsZi5fY291bnRl
cnNfYnlfZW1haWxbYXV0aG9yX2VtYWlsXSkKLSAgICAgICAgICAgIGNvdW50ZXIgPSBzZWxmLl9j
b3VudGVyc19ieV9uYW1lW2F1dGhvcl9uYW1lXQorICAgICAgICAgICAgYXNzZXJ0KGFuYWx5c2lz
Wydjb3VudGVyc19ieV9uYW1lJ11bYXV0aG9yX25hbWVdID09IGFuYWx5c2lzWydjb3VudGVyc19i
eV9lbWFpbCddW2F1dGhvcl9lbWFpbF0pCisgICAgICAgICAgICBjb3VudGVyID0gYW5hbHlzaXNb
J2NvdW50ZXJzX2J5X25hbWUnXVthdXRob3JfbmFtZV0KICAgICAgICAgICAgIGNvdW50ZXJbJ2Nv
dW50J10gPSBjb3VudGVyLmdldCgnY291bnQnLCAwKSArIDEKIAotICAgICAgICAgICAgaWYgc3Zu
X2lkLmlzZGlnaXQoKToKLSAgICAgICAgICAgICAgICBzdm5faWQgPSAiaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvIiArIHN2bl9pZAotICAgICAgICAgICAgY291bnRlclsnY29tbWl0
cyddICs9ICIgIGNvbW1pdDogJXMgb24gJXMgYnkgJXMgKCVzKVxuIiAlIChzdm5faWQsIGNvbW1p
dF9kYXRlLCBhdXRob3JfbmFtZSwgYXV0aG9yX2VtYWlsKQorICAgICAgICAgICAgaWYgcmV2aXNp
b24uaXNkaWdpdCgpOgorICAgICAgICAgICAgICAgIHJldmlzaW9uID0gImh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LyIgKyByZXZpc2lvbgorICAgICAgICAgICAgY291bnRlclsnY29t
bWl0cyddICs9ICIgIGNvbW1pdDogJXMgb24gJXMgYnkgJXMgKCVzKVxuIiAlIChyZXZpc2lvbiwg
Y29tbWl0X2RhdGUsIGF1dGhvcl9uYW1lLCBhdXRob3JfZW1haWwpCiAKLSAgICAgICAgcmV0dXJu
IHNlbGYuX2NvdW50ZXJzX2J5X2VtYWlsCisgICAgICAgIGFuYWx5c2lzID0geworICAgICAgICAg
ICAgJ2NvdW50ZXJzX2J5X25hbWUnOiB7fSwKKyAgICAgICAgICAgICdjb3VudGVyc19ieV9lbWFp
bCc6IHt9LAorICAgICAgICB9CisgICAgICAgIHNlbGYuX2FuYWx5emVfY29tbWl0cyhfb25fYW5h
bHlzaXMsIGFuYWx5c2lzKQorICAgICAgICByZXR1cm4gYW5hbHlzaXNbJ2NvdW50ZXJzX2J5X2Vt
YWlsJ10KIAogICAgIGRlZiBfY29sbGVjdF9ub21pbmF0aW9ucyhzZWxmLCBjb3VudGVyc19ieV9l
bWFpbCk6CiAgICAgICAgIG5vbWluYXRpb25zID0gW10KQEAgLTE3Miw3ICsyMjcsNyBAQCBjbGFz
cyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAKICAgICAgICAgICAgIGlmIHBhdGNoX2Nv
dW50ID49IHNlbGYuY29tbWl0dGVyX21pbmltdW0gYW5kIChub3QgY29udHJpYnV0b3Igb3Igbm90
IGNvbnRyaWJ1dG9yLmNhbl9jb21taXQpOgogICAgICAgICAgICAgICAgIHJvbGVzLmFwcGVuZCgi
Y29tbWl0dGVyIikKLSAgICAgICAgICAgIGlmIHBhdGNoX2NvdW50ID49IHNlbGYucmV2aWV3ZXJf
bWluaW11bSAgYW5kIChub3QgY29udHJpYnV0b3Igb3Igbm90IGNvbnRyaWJ1dG9yLmNhbl9yZXZp
ZXcpOgorICAgICAgICAgICAgaWYgcGF0Y2hfY291bnQgPj0gc2VsZi5yZXZpZXdlcl9taW5pbXVt
IGFuZCBjb250cmlidXRvciBhbmQgY29udHJpYnV0b3IuY2FuX2NvbW1pdCBhbmQgbm90IGNvbnRy
aWJ1dG9yLmNhbl9yZXZpZXc6CiAgICAgICAgICAgICAgICAgcm9sZXMuYXBwZW5kKCJyZXZpZXdl
ciIpCiAgICAgICAgICAgICBpZiByb2xlczoKICAgICAgICAgICAgICAgICBub21pbmF0aW9ucy5h
cHBlbmQoewpAQCAtMTgzLDcgKzIzOCw3IEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21t
YW5kKToKICAgICAgICAgICAgICAgICB9KQogICAgICAgICByZXR1cm4gbm9taW5hdGlvbnMKIAot
ICAgIGRlZiBfcHJpbnRfbm9taW5hdGlvbnMoc2VsZiwgbm9taW5hdGlvbnMpOgorICAgIGRlZiBf
cHJpbnRfbm9taW5hdGlvbnMoc2VsZiwgbm9taW5hdGlvbnMsIGNvdW50ZXJzX2J5X2VtYWlsKToK
ICAgICAgICAgZGVmIG5vbWluYXRpb25fY21wKGFfbm9taW5hdGlvbiwgYl9ub21pbmF0aW9uKToK
ICAgICAgICAgICAgIHJvbGVzX3Jlc3VsdCA9IGNtcChhX25vbWluYXRpb25bJ3JvbGVzJ10sIGJf
bm9taW5hdGlvblsncm9sZXMnXSkKICAgICAgICAgICAgIGlmIHJvbGVzX3Jlc3VsdDoKQEAgLTE5
Nyw3ICsyNTIsNyBAQCBjbGFzcyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAgICAgICAg
ICAgICAjIFRoaXMgaXMgYSBsaXR0bGUgYml0IG9mIGEgaGFjaywgYnV0IGl0cyBjb252aWVuZW50
IHRvIGp1c3QgcGFzcyB0aGUgbm9taW5hdGlvbiBkaWN0aW9uYXJ5IHRvIHRoZSBmb3JtYXRpbmcg
b3BlcmF0b3IuCiAgICAgICAgICAgICBub21pbmF0aW9uWydyb2xlc19zdHJpbmcnXSA9IGpvaW5f
d2l0aF9zZXBhcmF0b3JzKG5vbWluYXRpb25bJ3JvbGVzJ10pLnVwcGVyKCkKICAgICAgICAgICAg
IHByaW50ICIlKHJvbGVzX3N0cmluZylzOiAlKGF1dGhvcl9uYW1lKXMgKCUoYXV0aG9yX2VtYWls
KXMpIGhhcyAlKHBhdGNoX2NvdW50KXMgcmV2aWV3ZWQgcGF0Y2hlcyIgJSBub21pbmF0aW9uCi0g
ICAgICAgICAgICBjb3VudGVyID0gc2VsZi5fY291bnRlcnNfYnlfZW1haWxbbm9taW5hdGlvblsn
YXV0aG9yX2VtYWlsJ11dCisgICAgICAgICAgICBjb3VudGVyID0gY291bnRlcnNfYnlfZW1haWxb
bm9taW5hdGlvblsnYXV0aG9yX2VtYWlsJ11dCiAKICAgICAgICAgICAgIGlmIHNlbGYuc2hvd19j
b21taXRzOgogICAgICAgICAgICAgICAgIHByaW50IGNvdW50ZXJbJ2NvbW1pdHMnXQpAQCAtMjM4
LDEwICsyOTMsOSBAQCBjbGFzcyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAgICAgICAg
IHNlbGYuX2luaXRfb3B0aW9ucyhvcHRpb25zKQogICAgICAgICBwYXRjaF9jb3VudHMgPSBzZWxm
Ll9jb3VudF9yZWNlbnRfcGF0Y2hlcygpCiAgICAgICAgIG5vbWluYXRpb25zID0gc2VsZi5fY29s
bGVjdF9ub21pbmF0aW9ucyhwYXRjaF9jb3VudHMpCi0gICAgICAgIHNlbGYuX3ByaW50X25vbWlu
YXRpb25zKG5vbWluYXRpb25zKQorICAgICAgICBzZWxmLl9wcmludF9ub21pbmF0aW9ucyhub21p
bmF0aW9ucywgcGF0Y2hfY291bnRzKQogICAgICAgICBpZiBzZWxmLnZlcmJvc2U6CiAgICAgICAg
ICAgICBzZWxmLl9wcmludF9jb3VudHMocGF0Y2hfY291bnRzKQogCi0KIGlmIF9fbmFtZV9fID09
ICJfX21haW5fXyI6CiAgICAgU3VnZ2VzdE5vbWluYXRpb25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnNfdW5pdHRl
c3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWlu
YXRpb25zX3VuaXR0ZXN0LnB5CmluZGV4IDg4YmUyNTMwMzk1OTIzZWI2N2U5NmU0ODUwODNjOTM4
ZTZjMzE3MWMuLmIyNGRlZjZmYTNlOTVhOTMzYThjYmNkZjFmMDMyMzgwM2JiYmRhZWUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5h
dGlvbnNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL3N1Z2dlc3Rub21pbmF0aW9uc191bml0dGVzdC5weQpAQCAtNDUsMjEgKzQ1LDQ0IEBAIERh
dGU6ICAgVGh1IFNlcCAxNSAxOTo1NjoyMSAyMDExICswMDAwCiAKICAgICBnaXQtc3ZuLWlkOiBo
dHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmtAOTUyMTkgMjY4ZjQ1
Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCiAiIiIKLSAgICBtb2NrX3NhbWVfYXV0aG9y
X2NvbW1pdF9tZXNzYWdlID0gIiIiVmFsdWUgcHJvZmlsZXMgY29sbGVjdCBubyBpbmZvcm1hdGlv
biBmb3IgZ2xvYmFsIHZhcmlhYmxlcworICAgIG1vY2tfc2FtZV9hdXRob3JfY29tbWl0X21lc3Nh
Z2UgPSAiIiJBdXRob3I6IGZwaXpsb0BhcHBsZS5jb20gPGZwaXpsb0BhcHBsZS5jb21AMjY4ZjQ1
Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjPgorRGF0ZTogICBUaHUgU2VwIDE1IDE5OjU2
OjIxIDIwMTEgKzAwMDAKKworVmFsdWUgcHJvZmlsZXMgY29sbGVjdCBubyBpbmZvcm1hdGlvbiBm
b3IgZ2xvYmFsIHZhcmlhYmxlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY4MTQzCiAKLVJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLiIiIgorUmV2aWV3ZWQgYnkg
R2VvZmZyZXkgR2FyZW4uCisKK2dpdC1zdm4taWQ6IGh0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBv
c2l0b3J5L3dlYmtpdC90cnVua0A5NTIxOSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFi
NGRiZmMKKyIiIgorCisgICAgZGVmIF9tYWtlX29wdGlvbnMoc2VsZiwgKiprd2FyZ3MpOgorICAg
ICAgICBkZWZhdWx0cyA9IHsKKyAgICAgICAgICAgICdjb21taXR0ZXJfbWluaW11bSc6IDEwLAor
ICAgICAgICAgICAgJ21heF9jb21taXRfYWdlJzogOSwKKyAgICAgICAgICAgICdyZXZpZXdlcl9t
aW5pbXVtJzogODAsCisgICAgICAgICAgICAnc2hvd19jb21taXRzJzogRmFsc2UsCisgICAgICAg
ICAgICAndmVyYm9zZSc6IEZhbHNlLAorICAgICAgICB9CisgICAgICAgIG9wdGlvbnMgPSBNb2Nr
T3B0aW9ucygqKmRlZmF1bHRzKQorICAgICAgICBvcHRpb25zLnVwZGF0ZSgqKmt3YXJncykKKyAg
ICAgICAgcmV0dXJuIG9wdGlvbnMKIAogICAgIGRlZiB0ZXN0X3JlY2VudF9jb21taXRfbWVzc2Fn
ZXMoc2VsZik6CisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKICAgICAgICAgdG9vbCA9IE1v
Y2tUb29sKCkKICAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucyA9IFN1Z2dlc3ROb21pbmF0aW9u
cygpCi0gICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMuX2luaXRfb3B0aW9ucyhvcHRpb25zPU1v
Y2tPcHRpb25zKHJldmlld2VyX21pbmltdW09ODAsIGNvbW1pdHRlcl9taW5pbXVtPTEwLCBtYXhf
Y29tbWl0X2FnZT05LCBzaG93X2NvbW1pdHM9RmFsc2UsIHZlcmJvc2U9RmFsc2UpKQorICAgICAg
ICBzdWdnZXN0X25vbWluYXRpb25zLl9pbml0X29wdGlvbnMob3B0aW9ucz1zZWxmLl9tYWtlX29w
dGlvbnMoKSkKICAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5iaW5kX3RvX3Rvb2wodG9vbCkK
IAogICAgICAgICB0b29sLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZCA9IGxhbWJkYSBjb21tYW5kOiBz
ZWxmLm1vY2tfZ2l0X291dHB1dAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3VnZ2Vz
dF9ub21pbmF0aW9ucy5fcmVjZW50X2NvbW1pdF9tZXNzYWdlcygpKSwgW3NlbGYubW9ja19zYW1l
X2F1dGhvcl9jb21taXRfbWVzc2FnZV0pCiAKLSAgICBtb2NrX25vbl9jb21taXR0ZXJfY29tbWl0
X21lc3NhZ2UgPSAiIiJMZXQgVGVzdFdlYktpdEFQSSB3b3JrIGZvciBjaHJvbWl1bQorICAgIG1v
Y2tfbm9uX2NvbW1pdHRlcl9jb21taXRfbWVzc2FnZSA9ICIiIgorQXV0aG9yOiBjb21taXQtcXVl
dWVAd2Via2l0Lm9yZyA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmdAMjY4ZjQ1Y2MtY2QwOS0wNDEw
LWFiM2MtZDUyNjkxYjRkYmZjPgorRGF0ZTogICBUaHUgU2VwIDE1IDE0OjA4OjQyIDIwMTEgKzAw
MDAKKworTGV0IFRlc3RXZWJLaXRBUEkgd29yayBmb3IgY2hyb21pdW0KIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzc1NgogCiBQYXRjaCBieSBYaWFuemh1IFdhbmcg
PHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4gb24gMjAxMS0wOS0xNQpAQCAtNjcsMTEgKzkwLDE1
IEBAIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCiAKIFNvdXJjZS9XZWJLaXQvY2hyb21pdW06CiAK
LSogV2ViS2l0Lmd5cDoiIiIKKyogV2ViS2l0Lmd5cDoKKworZ2l0LXN2bi1pZDogaHR0cDovL3N2
bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rQDk1MTg4IDI2OGY0NWNjLWNkMDkt
MDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYworIiIiCiAKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToK
ICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIlJFVklFV0VSOiBYaWFuemh1IFdhbmcgKHdhbmd4
aWFuemh1QGNocm9taXVtLm9yZykgaGFzIDg4IHJldmlld2VkIHBhdGNoZXNcbiIKKyAgICAgICAg
b3B0aW9ucyA9IHNlbGYuX21ha2Vfb3B0aW9ucygpCiAgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlv
bnMgPSBTdWdnZXN0Tm9taW5hdGlvbnMoKQotICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zLl9p
bml0X29wdGlvbnMob3B0aW9ucz1Nb2NrT3B0aW9ucyhyZXZpZXdlcl9taW5pbXVtPTgwLCBjb21t
aXR0ZXJfbWluaW11bT0xMCwgbWF4X2NvbW1pdF9hZ2U9OSwgc2hvd19jb21taXRzPUZhbHNlLCB2
ZXJib3NlPUZhbHNlKSkKKyAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5faW5pdF9vcHRpb25z
KG9wdGlvbnM9b3B0aW9ucykKICAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5fcmVjZW50X2Nv
bW1pdF9tZXNzYWdlcyA9IGxhbWJkYTogW3NlbGYubW9ja19ub25fY29tbWl0dGVyX2NvbW1pdF9t
ZXNzYWdlIGZvciBfIGluIHJhbmdlKDg4KV0KLSAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9v
dXRwdXRzKHN1Z2dlc3Rfbm9taW5hdGlvbnMsIFtdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRf
c3Rkb3V0LCBvcHRpb25zPU1vY2tPcHRpb25zKHJldmlld2VyX21pbmltdW09ODAsIGNvbW1pdHRl
cl9taW5pbXVtPTEwLCBtYXhfY29tbWl0X2FnZT05LCBzaG93X2NvbW1pdHM9RmFsc2UsIHZlcmJv
c2U9RmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoc3VnZ2VzdF9u
b21pbmF0aW9ucywgW10sIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQsIG9wdGlvbnM9
b3B0aW9ucykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200068</attachid>
            <date>2013-04-29 18:26:12 -0700</date>
            <delta_ts>2013-04-29 21:14:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115285-20130429182526.patch</filename>
            <type>text/plain</type>
            <size>20340</size>
            <attacher name="Glenn Adams">glenn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MjM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2UxZTU5N2IyZGZlOGM3ZmY4MjMyODBhMmQ2ODY5ODcz
MTFhN2JlOC4uODVkNTMzN2E5MzhmYWM0MGQwMzk4Yzg2ZTU5NTBlZTYwZGM2NGVhZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDEzLTA0LTI5ICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CisKKyAgICAg
ICAgW3dlYmtpdHB5XSBzdWdnZXN0LW5vbWluYXRpb25zIGRvZXNuJ3QgY291bnQgYWxsIHF1YWxp
ZmllZCBwYXRjaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTUyODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXggY29tbWl0IGFuYWx5c2lzIHNvIHRoYXQgcGF0Y2hlcyBtYWRlIGJ5IGFuIGV4aXN0
aW5nIGNvbW1pdHRlciBhcmUgY291bnRlZCB0b3dhcmRzIHJldmlld2VyCisgICAgICAgIG5vbWlu
YXRpb24uIEltcHJvdmUgY29tbWl0IGxvZyBwYXJzaW5nLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weToKKyAgICAgICAgKFN1
Z2dlc3ROb21pbmF0aW9ucyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMuX19pbml0X18p
OgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKToK
KyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5fYXV0aG9yX25hbWVfZnJvbV9lbWFpbCk6Cisg
ICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMuX2NvbW1pdF9kYXRlX2Zyb21fbWF0Y2gpOgorICAg
ICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9jb250cmlidXRvcl9mcm9tX2VtYWlsKToKKyAgICAg
ICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5fYW5hbHl6ZV9jb21taXQpOgorICAgICAgICAoU3VnZ2Vz
dE5vbWluYXRpb25zLl9jb3VudF9yZWNlbnRfcGF0Y2hlcy5fb25fYW5hbHlzaXMpOgorICAgICAg
ICAoU3VnZ2VzdE5vbWluYXRpb25zLl9jb3VudF9yZWNlbnRfcGF0Y2hlcyk6CisgICAgICAgIChT
dWdnZXN0Tm9taW5hdGlvbnMuX2NvbGxlY3Rfbm9taW5hdGlvbnMpOgorICAgICAgICAoU3VnZ2Vz
dE5vbWluYXRpb25zLl9wcmludF9ub21pbmF0aW9ucyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5h
dGlvbnMuZXhlY3V0ZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3N1Z2dlc3Rub21pbmF0aW9uc191bml0dGVzdC5weToKKyAgICAgICAgKF9tYWtlX29wdGlvbnMp
OgorICAgICAgICAodGVzdF9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKToKKyAgICAgICAgKHRlc3Rf
YmFzaWMpOgorCiAyMDEzLTA0LTI2ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNv
bT4KIAogICAgICAgICBbRUZMXSBCdWlsZCBicmVhayB1c2luZyBqaGJ1aWxkIG9uIHVidW50dSAx
My4wNApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1
Z2dlc3Rub21pbmF0aW9ucy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9zdWdnZXN0bm9taW5hdGlvbnMucHkKaW5kZXggODQ1Yjc4MjcwOTY1MjJkNWUxMmY1MGM5ZjYy
N2IxZWUzNWNlOWQ3MC4uNzU5ZjhmMTM3MjM5NzhhNTIzOThiZWE2OGM3NzZjNmRlMzllZWNjMiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Ru
b21pbmF0aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
c3VnZ2VzdG5vbWluYXRpb25zLnB5CkBAIC0yNywxOSArMjcsMjYgQEAKICMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBjYWxlbmRhcgogZnJvbSBvcHRwYXJzZSBpbXBvcnQg
bWFrZV9vcHRpb24KIGltcG9ydCByZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5j
aGFuZ2Vsb2cgaW1wb3J0IENoYW5nZUxvZ0VudHJ5CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25m
aWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdAotZnJvbSB3ZWJraXRweS50b29sIGlt
cG9ydCBzdGVwcwogZnJvbSB3ZWJraXRweS50b29sLmdyYW1tYXIgaW1wb3J0IGpvaW5fd2l0aF9z
ZXBhcmF0b3JzCiBmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQ29t
bWFuZAogCiAKIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKICAgICBuYW1lID0g
InN1Z2dlc3Qtbm9taW5hdGlvbnMiCi0gICAgaGVscF90ZXh0ID0gIlN1Z2dlc3QgY29udHJpYnV0
b3JzIGZvciBjb21taXR0ZXIvcmV2aWV3ZXIgbm9taW5hdGlvbnMiCisgICAgaGVscF90ZXh0ID0g
IlN1Z2dlc3Qgbm9taW5hdGlvbnMgZm9yIGNvbW1pdHRlci9yZXZpZXdlciByb2xlIgorCisgICAg
X2xlYWRpbmdfaW5kZW50X3JlZ2V4cCA9IHJlLmNvbXBpbGUociJeWyBdezR9IiwgcmUuTVVMVElM
SU5FKQorICAgIF9yZXZpZXdlZF9ieV9yZWdleHAgPSByZS5jb21waWxlKENoYW5nZUxvZ0VudHJ5
LnJldmlld2VkX2J5X3JlZ2V4cCwgcmUuTVVMVElMSU5FKQorICAgIF9wYXRjaF9ieV9yZWdleHAg
PSByZS5jb21waWxlKHInXlBhdGNoIGJ5ICg/UDxuYW1lPi4rPylccys8KD9QPGVtYWlsPltePD5d
Kyk+IG9uICg/UDxkYXRlPlxkezR9LVxkezJ9LVxkezJ9KSQnLCByZS5NVUxUSUxJTkUpCisgICAg
X2NvbW1pdHRlcl9yZWdleHAgPSByZS5jb21waWxlKHInXkF1dGhvcjogKD9QPGVtYWlsPlxTKylc
cys8W14+XSs+JCcsIHJlLk1VTFRJTElORSkKKyAgICBfZGF0ZV9yZWdleHAgPSByZS5jb21waWxl
KHInXkRhdGU6ICAgXFN7M30gKD9QPG1vbnRoPlxTezN9KSAoP1A8ZGF5PlxkezEsMn0pICg/UDx0
aW1lPlxkezJ9OlxkezJ9OlxkezJ9KSAoP1A8eWVhcj5cZHs0fSkgW1wrXC1dXGR7NH0kJywgcmUu
TVVMVElMSU5FKQorICAgIF9yZXZpc2lvbl9yZWdleHAgPSByZS5jb21waWxlKHInXmdpdC1zdm4t
aWQ6IGh0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVua0AoP1A8c3Zu
aWQ+XGQrKSAoP1A8Z2l0aWQ+WzAtOWEtZlwtXXszNn0pJCcsIHJlLk1VTFRJTElORSkKIAogICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgb3B0aW9ucyA9IFsKQEAgLTQ4LDE0ICs1NSwx
MCBAQCBjbGFzcyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAgICAgICAgICAgICBtYWtl
X29wdGlvbigiLS1tYXgtY29tbWl0LWFnZSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJtYXhfY29t
bWl0X2FnZSIsIHR5cGU9ImludCIsIGRlZmF1bHQ9OSwgaGVscD0iU3BlY2lmeSBtYXggY29tbWl0
IGFnZSB0byBjb25zaWRlciBmb3Igbm9taW5hdGlvbnMgKGluIG1vbnRocykuIiksCiAgICAgICAg
ICAgICBtYWtlX29wdGlvbigiLS1zaG93LWNvbW1pdHMiLCBhY3Rpb249InN0b3JlX3RydWUiLCBk
ZXN0PSJzaG93X2NvbW1pdHMiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJTaG93IGNvbW1pdCBoaXN0
b3J5IHdpdGggbm9taW5hdGlvbiBzdWdnZXN0aW9ucy4iKSwKICAgICAgICAgXQotCi0gICAgICAg
IENvbW1hbmQuX19pbml0X18oc2VsZiwgb3B0aW9ucz1vcHRpb25zKQorICAgICAgICBzdXBlcihT
dWdnZXN0Tm9taW5hdGlvbnMsIHNlbGYpLl9faW5pdF9fKG9wdGlvbnM9b3B0aW9ucykKICAgICAg
ICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgb24gdGhlIHRvb2wgc29tZXdoZXJl
LgogICAgICAgICBzZWxmLl9jb21taXR0ZXJfbGlzdCA9IENvbW1pdHRlckxpc3QoKQogCi0gICAg
X2NvdW50ZXJzX2J5X25hbWUgPSB7fQotICAgIF9jb3VudGVyc19ieV9lbWFpbCA9IHt9Ci0KICAg
ICBkZWYgX2luaXRfb3B0aW9ucyhzZWxmLCBvcHRpb25zKToKICAgICAgICAgc2VsZi5jb21taXR0
ZXJfbWluaW11bSA9IG9wdGlvbnMuY29tbWl0dGVyX21pbmltdW0KICAgICAgICAgc2VsZi5yZXZp
ZXdlcl9taW5pbXVtID0gb3B0aW9ucy5yZXZpZXdlcl9taW5pbXVtCkBAIC02Niw2MiArNjksMTAz
IEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKICAgICAjIEZJWE1FOiBUaGlz
IHNob3VsZCBtb3ZlIHRvIHNjbS5weQogICAgIGRlZiBfcmVjZW50X2NvbW1pdF9tZXNzYWdlcyhz
ZWxmKToKICAgICAgICAgZ2l0X2xvZyA9IHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9jb21tYW5k
KFsnZ2l0JywgJ2xvZycsICctLXNpbmNlPSIlcyBtb250aHMgYWdvIicgJSBzZWxmLm1heF9jb21t
aXRfYWdlXSkKLSAgICAgICAgbWF0Y2hfZ2l0X3N2bl9pZCA9IHJlLmNvbXBpbGUociJcblxuICAg
IGdpdC1zdm4taWQ6LipcbiIsIHJlLk1VTFRJTElORSkKLSAgICAgICAgbWF0Y2hfZ2V0X2xvZ19s
aW5lcyA9IHJlLmNvbXBpbGUociJeXFMuKlxuIiwgcmUuTVVMVElMSU5FKQotICAgICAgICBtYXRj
aF9sZWFkaW5nX2luZGVudCA9IHJlLmNvbXBpbGUociJeWyBdezR9IiwgcmUuTVVMVElMSU5FKQot
Ci0gICAgICAgIG1lc3NhZ2VzID0gcmUuc3BsaXQociJjb21taXQgXHd7NDB9IiwgZ2l0X2xvZylb
MTpdICAjIElnbm9yZSB0aGUgZmlyc3QgbWVzc2FnZSB3aGljaCB3aWxsIGJlIGVtcHR5LgorICAg
ICAgICBtZXNzYWdlcyA9IHJlLnNwbGl0KHIiXmNvbW1pdCBcd3s0MH0kIiwgZ2l0X2xvZywgZmxh
Z3M9cmUuTVVMVElMSU5FKVsxOl0gICMgSWdub3JlIHRoZSBmaXJzdCBtZXNzYWdlIHdoaWNoIHdp
bGwgYmUgZW1wdHkuCiAgICAgICAgIGZvciBtZXNzYWdlIGluIG1lc3NhZ2VzOgotICAgICAgICAg
ICAgIyBSZW1vdmUgYW55IGxpbmVzIGZyb20gZ2l0IGFuZCB1bmluZGVudCBhbGwgdGhlIGxpbmVz
Ci0gICAgICAgICAgICAobWVzc2FnZSwgXykgPSBtYXRjaF9naXRfc3ZuX2lkLnN1Ym4oIiIsIG1l
c3NhZ2UpCi0gICAgICAgICAgICAobWVzc2FnZSwgXykgPSBtYXRjaF9nZXRfbG9nX2xpbmVzLnN1
Ym4oIiIsIG1lc3NhZ2UpCi0gICAgICAgICAgICAobWVzc2FnZSwgXykgPSBtYXRjaF9sZWFkaW5n
X2luZGVudC5zdWJuKCIiLCBtZXNzYWdlKQorICAgICAgICAgICAgIyBVbmluZGVudCBhbGwgdGhl
IGxpbmVzCisgICAgICAgICAgICAobWVzc2FnZSwgXykgPSBzZWxmLl9sZWFkaW5nX2luZGVudF9y
ZWdleHAuc3VibigiIiwgbWVzc2FnZSkKICAgICAgICAgICAgIHlpZWxkIG1lc3NhZ2UubHN0cmlw
KCkgICMgUmVtb3ZlIGFueSBsZWFkaW5nIG5ld2xpbmVzIGZyb20gdGhlIGxvZyBtZXNzYWdlLgog
Ci0gICAgIyBlLmcuIFBhdGNoIGJ5IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+IG9uIDIw
MTEtMDktMTUKLSAgICBwYXRjaF9ieV9yZWdleHAgPSByJ15QYXRjaCBieSAoP1A8bmFtZT4uKz8p
XHMrPCg/UDxlbWFpbD5bXjw+XSspPiBvbiAoP1A8ZGF0ZT5cZHs0fS1cZHsyfS1cZHsyfSkkJwor
ICAgIGRlZiBfYXV0aG9yX25hbWVfZnJvbV9lbWFpbChzZWxmLCBlbWFpbCk6CisgICAgICAgIGNv
bnRyaWJ1dG9yID0gc2VsZi5fY29tbWl0dGVyX2xpc3QuY29udHJpYnV0b3JfYnlfZW1haWwoZW1h
aWwpCisgICAgICAgIHJldHVybiBjb250cmlidXRvci5mdWxsX25hbWUgaWYgY29udHJpYnV0b3Ig
ZWxzZSBOb25lCisKKyAgICBkZWYgX2NvbW1pdF9kYXRlX2Zyb21fbWF0Y2goc2VsZiwgbWF0Y2gp
OgorICAgICAgICB5ZWFyID0gbWF0Y2guZ3JvdXAoJ3llYXInKQorICAgICAgICBtb250aF9hYmJy
ID0gbWF0Y2guZ3JvdXAoJ21vbnRoJykKKyAgICAgICAgbW9udGggPSAwCisgICAgICAgIGZvciBp
IGluIHJhbmdlKGxlbihjYWxlbmRhci5tb250aF9hYmJyKSk6CisgICAgICAgICAgICBpZiBjYWxl
bmRhci5tb250aF9hYmJyW2ldID09IG1vbnRoX2FiYnI6CisgICAgICAgICAgICAgICAgbW9udGgg
PSBpICsgMQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGRheSA9IG1hdGNoLmdyb3Vw
KCdkYXknKQorICAgICAgICByZXR1cm4gJyUwNGQtJTAyZC0lMDJkJyAlIChpbnQoeWVhciksIG1v
bnRoLCBpbnQoZGF5KSkKKworICAgIGRlZiBfY29udHJpYnV0b3JfZnJvbV9lbWFpbChzZWxmLCBl
bWFpbCk6CisgICAgICAgIGNvbnRyaWJ1dG9yID0gc2VsZi5fY29tbWl0dGVyX2xpc3QuY29udHJp
YnV0b3JfYnlfZW1haWwoZW1haWwpCisgICAgICAgIHJldHVybiBjb250cmlidXRvciBpZiBjb250
cmlidXRvciBlbHNlIE5vbmUKKworICAgIGRlZiBfYW5hbHl6ZV9jb21taXQoc2VsZiwgY29tbWl0
X21lc3NhZ2UsIG9uX2FuYWx5c2lzLCBhbmFseXNpcyk6CisKKyAgICAgICAgIyBEZXRlcm1pbmUg
Y29tbWl0dGVyIGlmIHBvc3NpYmxlLCBvdGhlcndpc2Ugc2tpcCBjb21taXQuCisgICAgICAgIGNv
bW1pdHRlcl9tYXRjaCA9IHNlbGYuX2NvbW1pdHRlcl9yZWdleHAuc2VhcmNoKGNvbW1pdF9tZXNz
YWdlKQorICAgICAgICBpZiBub3QgY29tbWl0dGVyX21hdGNoOgorICAgICAgICAgICAgcmV0dXJu
CisKKyAgICAgICAgIyBEZXRlcm1pbmUgY29tbWl0dGVyIGVtYWlsIGlmIHBvc3NpYmxlLCBvdGhl
cndpc2Ugc2tpcCBjb21taXQuCisgICAgICAgIGNvbW1pdHRlcl9lbWFpbCA9IGNvbW1pdHRlcl9t
YXRjaC5ncm91cCgnZW1haWwnKQorICAgICAgICBpZiBub3QgY29tbWl0dGVyX2VtYWlsOgorICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBEZXRlcm1pbmUgaWYgY29tbWl0dGVyIGlzIGEg
a25vd24gY29udHJpYnV0b3IsIGkuZS4sIHJlZ2lzdGVyZWQgaW4gY29tbWl0dGVycy5weSwgb3Ro
ZXJ3aXNlIHNraXAgY29tbWl0LgorICAgICAgICBjb21taXR0ZXIgPSBzZWxmLl9jb250cmlidXRv
cl9mcm9tX2VtYWlsKGNvbW1pdHRlcl9lbWFpbCkKKyAgICAgICAgaWYgbm90IGNvbW1pdHRlcjoK
KyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgRGV0ZXJtaW5lIGNvbW1pdCBkYXRlIGlm
IHBvc3NpYmxlLCBvdGhlcndpc2Ugc2tpcCBjb21taXQuCisgICAgICAgIGNvbW1pdF9kYXRlX21h
dGNoID0gc2VsZi5fZGF0ZV9yZWdleHAuc2VhcmNoKGNvbW1pdF9tZXNzYWdlKQorICAgICAgICBp
ZiBub3QgY29tbWl0X2RhdGVfbWF0Y2g6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgY29t
bWl0X2RhdGUgPSBzZWxmLl9jb21taXRfZGF0ZV9mcm9tX21hdGNoKGNvbW1pdF9kYXRlX21hdGNo
KQorCisgICAgICAgICMgRGV0ZXJtaW5lIHJldmlzaW9uIGlmIHBvc3NpYmxlLCBvdGhlcndpc2Ug
c2tpcCBjb21taXQuCisgICAgICAgIHJldmlzaW9uX21hdGNoID0gc2VsZi5fcmV2aXNpb25fcmVn
ZXhwLnNlYXJjaChjb21taXRfbWVzc2FnZSkKKyAgICAgICAgaWYgbm90IHJldmlzaW9uX21hdGNo
OgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHJldmlzaW9uID0gcmV2aXNpb25fbWF0Y2gu
Z3JvdXAoJ3N2bmlkJykKKworICAgICAgICAjIERldGVybWluZSBhdXRob3IgaWYgcG9zc2libGUs
IG90aGVyd2lzZSBza2lwIGNvbW1pdC4gTG9vayBmb3IgIlBhdGNoIGJ5IiBsaW5lIGZpcnN0LCB3
aGljaAorICAgICAgICAjIGlzIHVzZWQgZm9yIG5vbi1jb21taXR0ZXIgY29udHJpYnV0b3JzOyBv
dGhlcndpc2UsIHVzZSBjb21taXR0ZXIgaW5mbyBkZXRlcm1pbmVkIGFib3ZlLgorICAgICAgICBh
dXRob3JfbWF0Y2ggPSBzZWxmLl9wYXRjaF9ieV9yZWdleHAuc2VhcmNoKGNvbW1pdF9tZXNzYWdl
KQorICAgICAgICBpZiBub3QgYXV0aG9yX21hdGNoOgorICAgICAgICAgICAgYXV0aG9yX21hdGNo
ID0gY29tbWl0dGVyX21hdGNoCisgICAgICAgIGlmIG5vdCBhdXRob3JfbWF0Y2g6CisgICAgICAg
ICAgICByZXR1cm4KKworICAgICAgICAjIERldGVybWluZSBhdXRob3IgZW1haWwgaWYgcG9zc2li
bGUsIG90aGVyd2lzZSBza2lwIGNvbW1pdC4KKyAgICAgICAgYXV0aG9yX2VtYWlsID0gYXV0aG9y
X21hdGNoLmdyb3VwKCdlbWFpbCcpCisgICAgICAgIGlmIG5vdCBhdXRob3JfZW1haWw6CisgICAg
ICAgICAgICBhdXRob3JfZW1haWwgPSBjb21taXR0ZXJfZW1haWwKKyAgICAgICAgICAgIHJldHVy
bgorCisgICAgICAgICMgRGV0ZXJtaW5lIGlmIGF1dGhvciBpcyBhIGtub3duIGNvbnRyaWJ1dG9y
LCBpLmUuLCByZWdpc3RlcmVkIGluIGNvbW1pdHRlcnMucHkuCisgICAgICAgIGNvbnRyaWJ1dG9y
ID0gc2VsZi5fY29udHJpYnV0b3JfZnJvbV9lbWFpbChhdXRob3JfZW1haWwpCisKKyAgICAgICAg
IyBEZXRlcm1pbmUgYXV0aG9yIG5hbWUgaWYgcG9zc2libGUsIG90aGVyd2lzZSBza2lwIGNvbW1p
dC4KKyAgICAgICAgYXV0aG9yX25hbWUgPSBhdXRob3JfbWF0Y2guZ3JvdXAoJ25hbWUnKSBpZiAn
bmFtZScgaW4gYXV0aG9yX21hdGNoLmdyb3VwZGljdCgpIGVsc2UgTm9uZQorICAgICAgICBpZiBu
b3QgYXV0aG9yX25hbWU6CisgICAgICAgICAgICBhdXRob3JfbmFtZSA9IHNlbGYuX2F1dGhvcl9u
YW1lX2Zyb21fZW1haWwoYXV0aG9yX2VtYWlsKQorICAgICAgICBpZiBub3QgYXV0aG9yX25hbWU6
CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIFVzZSBjYW5vbmljYWwgbmFtZSBpZiBr
bm93biBjb250cmlidXRvci4KKyAgICAgICAgaWYgY29udHJpYnV0b3IgYW5kIGF1dGhvcl9uYW1l
ICE9IGNvbnRyaWJ1dG9yLmZ1bGxfbmFtZToKKyAgICAgICAgICAgIGF1dGhvcl9uYW1lID0gY29u
dHJpYnV0b3IuZnVsbF9uYW1lCisKKyAgICAgICAgIyBEZXRlcm1pbmUgcmV2aWV3ZXJzIGlmIHBv
c3NpYmxlLCBvdGhlcndpc2Ugb3B0aW9uYWxseSBza2lwIGNvbW1pdC4KKyAgICAgICAgcmV2aWV3
ZXJfbWF0Y2ggPSBzZWxmLl9yZXZpZXdlZF9ieV9yZWdleHAuc2VhcmNoKGNvbW1pdF9tZXNzYWdl
KQorICAgICAgICBpZiBub3QgcmV2aWV3ZXJfbWF0Y2g6CisgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgcmV2aWV3ZXJzID0gcmV2aWV3ZXJfbWF0Y2guZ3JvdXAoJ3Jldmlld2VyJykKKworICAg
ICAgICBvbl9hbmFseXNpcyhhbmFseXNpcywgY29tbWl0dGVyLCBjb21taXRfZGF0ZSwgcmV2aXNp
b24sIGF1dGhvcl9lbWFpbCwgYXV0aG9yX25hbWUsIGNvbnRyaWJ1dG9yLCByZXZpZXdlcnMpCiAK
ICAgICBkZWYgX2NvdW50X3JlY2VudF9wYXRjaGVzKHNlbGYpOgotICAgICAgICAjIFRoaXMgZW50
aXJlIGJsb2NrIGNvdWxkIGJlIHdyaXR0ZW4gYXMgYSBtYXAvcmVkdWNlIG92ZXIgdGhlIG1lc3Nh
Z2VzLgotICAgICAgICBmb3IgbWVzc2FnZSBpbiBzZWxmLl9yZWNlbnRfY29tbWl0X21lc3NhZ2Vz
KCk6Ci0gICAgICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgQ2hhbmdlTG9nRW50cnkg
dG8gZG8gdGhlIGVudGlyZSBwYXJzZSBpbnN0ZWFkCi0gICAgICAgICAgICAjIG9mIGdyYWJiaW5n
IGF0IGl0cyByZWdleHBzLgotICAgICAgICAgICAgZGF0ZWxpbmVfbWF0Y2ggPSByZS5tYXRjaChD
aGFuZ2VMb2dFbnRyeS5kYXRlX2xpbmVfcmVnZXhwLCBtZXNzYWdlLCByZS5NVUxUSUxJTkUpCi0g
ICAgICAgICAgICBpZiBub3QgZGF0ZWxpbmVfbWF0Y2g6Ci0gICAgICAgICAgICAgICAgIyBNb2Rl
cm4gY29tbWl0IG1lc3NhZ2VzIGRvbid0IGp1c3QgZHVtcCB0aGUgQ2hhbmdlTG9nIGVudHJ5LCBi
dXQgcmF0aGVyCi0gICAgICAgICAgICAgICAgIyBoYXZlIGEgc3BlY2lhbCBQYXRjaCBieSBsaW5l
IGZvciBub24tY29tbWl0dGVycy4KLSAgICAgICAgICAgICAgICBkYXRlbGluZV9tYXRjaCA9IHJl
LnNlYXJjaChzZWxmLnBhdGNoX2J5X3JlZ2V4cCwgbWVzc2FnZSwgcmUuTVVMVElMSU5FKQotICAg
ICAgICAgICAgICAgIGlmIG5vdCBkYXRlbGluZV9tYXRjaDoKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKLQotICAgICAgICAgICAgYXV0aG9yX2VtYWlsID0gZGF0ZWxpbmVfbWF0Y2guZ3Jv
dXAoImVtYWlsIikKLSAgICAgICAgICAgIGlmIG5vdCBhdXRob3JfZW1haWw6Ci0gICAgICAgICAg
ICAgICAgY29udGludWUKLQotICAgICAgICAgICAgIyBXZSBvbmx5IGNhcmUgYWJvdXQgcmV2aWV3
ZWQgcGF0Y2hlcywgc28gbWFrZSBzdXJlIGl0IGhhcyBhIHZhbGlkIHJldmlld2VyIGxpbmUuCi0g
ICAgICAgICAgICByZXZpZXdlcl9tYXRjaCA9IHJlLnNlYXJjaChDaGFuZ2VMb2dFbnRyeS5yZXZp
ZXdlZF9ieV9yZWdleHAsIG1lc3NhZ2UsIHJlLk1VTFRJTElORSkKLSAgICAgICAgICAgICMgV2Ug
bWlnaHQgYWxzbyB3YW50IHRvIHZhbGlkYXRlIHRoZSByZXZpZXdlciBuYW1lIGFnYWluc3QgdGhl
IGNvbW1pdHRlciBsaXN0LgotICAgICAgICAgICAgaWYgbm90IHJldmlld2VyX21hdGNoIG9yIG5v
dCByZXZpZXdlcl9tYXRjaC5ncm91cCgicmV2aWV3ZXIiKToKLSAgICAgICAgICAgICAgICBjb250
aW51ZQogCi0gICAgICAgICAgICBhdXRob3JfbmFtZSA9IGRhdGVsaW5lX21hdGNoLmdyb3VwKCJu
YW1lIikKLSAgICAgICAgICAgIGlmIG5vdCBhdXRob3JfbmFtZToKLSAgICAgICAgICAgICAgICBj
b250aW51ZQotCi0gICAgICAgICAgICBpZiByZS5zZWFyY2goIihbXmEtekEtWl1hbmRbXmEtekEt
Wl0pfCgsKXwoQCkiLCBhdXRob3JfbmFtZSk6Ci0gICAgICAgICAgICAgICAgIyBUaGlzIGVudHJ5
IHNlZW1zIHRvIGhhdmUgbXVsdGlwbGUgcmV2aWV3ZXJzLCBvciBpbnZhbGlkIGNoYXJhY3RlcnMs
IHNvIHJlamVjdCBpdC4KLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBz
dm5faWRfbWF0Y2ggPSByZS5zZWFyY2goQ2hhbmdlTG9nRW50cnkuc3ZuX2lkX3JlZ2V4cCwgbWVz
c2FnZSwgcmUuTVVMVElMSU5FKQotICAgICAgICAgICAgaWYgc3ZuX2lkX21hdGNoOgotICAgICAg
ICAgICAgICAgIHN2bl9pZCA9IHN2bl9pZF9tYXRjaC5ncm91cCgic3ZuaWQiKQotICAgICAgICAg
ICAgaWYgbm90IHN2bl9pZF9tYXRjaCBvciBub3Qgc3ZuX2lkOgotICAgICAgICAgICAgICAgIHN2
bl9pZCA9ICJ1bmtub3duIgotICAgICAgICAgICAgY29tbWl0X2RhdGUgPSBkYXRlbGluZV9tYXRj
aC5ncm91cCgiZGF0ZSIpCisgICAgICAgIGRlZiBfb25fYW5hbHlzaXMoYW5hbHlzaXMsIGNvbW1p
dHRlciwgY29tbWl0X2RhdGUsIHJldmlzaW9uLCBhdXRob3JfZW1haWwsIGF1dGhvcl9uYW1lLCBj
b250cmlidXRvciwgcmV2aWV3ZXJzKToKIAotICAgICAgICAgICAgIyBTZWUgaWYgd2UgYWxyZWFk
eSBoYXZlIGEgY29udHJpYnV0b3Igd2l0aCB0aGlzIG5hbWUgb3IgZW1haWwKLSAgICAgICAgICAg
IGNvdW50ZXJfYnlfbmFtZSA9IHNlbGYuX2NvdW50ZXJzX2J5X25hbWUuZ2V0KGF1dGhvcl9uYW1l
KQotICAgICAgICAgICAgY291bnRlcl9ieV9lbWFpbCA9IHNlbGYuX2NvdW50ZXJzX2J5X2VtYWls
LmdldChhdXRob3JfZW1haWwpCisgICAgICAgICAgICAjIFNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUg
YSBjb250cmlidXRvciB3aXRoIHRoaXMgYXV0aG9yX25hbWUgb3IgZW1haWwKKyAgICAgICAgICAg
IGNvdW50ZXJfYnlfbmFtZSA9IGFuYWx5c2lzWydjb3VudGVyc19ieV9uYW1lJ10uZ2V0KGF1dGhv
cl9uYW1lKQorICAgICAgICAgICAgY291bnRlcl9ieV9lbWFpbCA9IGFuYWx5c2lzWydjb3VudGVy
c19ieV9lbWFpbCddLmdldChhdXRob3JfZW1haWwpCiAgICAgICAgICAgICBpZiBjb3VudGVyX2J5
X25hbWU6CiAgICAgICAgICAgICAgICAgaWYgY291bnRlcl9ieV9lbWFpbDoKICAgICAgICAgICAg
ICAgICAgICAgaWYgY291bnRlcl9ieV9uYW1lICE9IGNvdW50ZXJfYnlfZW1haWw6CkBAIC0xMzIs
MzEgKzE3NiwzOSBAQCBjbGFzcyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X25hbWVbJ25hbWVzJ10gfD0gY291bnRlcl9ieV9l
bWFpbFsnbmFtZXMnXQogICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9ieV9uYW1lWydl
bWFpbHMnXSB8PSBjb3VudGVyX2J5X2VtYWlsWydlbWFpbHMnXQogICAgICAgICAgICAgICAgICAg
ICAgICAgY291bnRlcl9ieV9uYW1lWydjb3VudCddICs9IGNvdW50ZXJfYnlfZW1haWwuZ2V0KCdj
b3VudCcsIDApCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3VudGVyc19ieV9lbWFp
bFthdXRob3JfZW1haWxdID0gY291bnRlcl9ieV9uYW1lCisgICAgICAgICAgICAgICAgICAgICAg
ICBhbmFseXNpc1snY291bnRlcnNfYnlfZW1haWwnXVthdXRob3JfZW1haWxdID0gY291bnRlcl9i
eV9uYW1lCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgIyBBZGQg
ZW1haWwgdG8gdGhlIGV4aXN0aW5nIGNvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5f
Y291bnRlcnNfYnlfZW1haWxbYXV0aG9yX2VtYWlsXSA9IGNvdW50ZXJfYnlfbmFtZQorICAgICAg
ICAgICAgICAgICAgICBhbmFseXNpc1snY291bnRlcnNfYnlfZW1haWwnXVthdXRob3JfZW1haWxd
ID0gY291bnRlcl9ieV9uYW1lCiAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFtZVsn
ZW1haWxzJ10gfD0gc2V0KFthdXRob3JfZW1haWxdKQogICAgICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgICAgICBpZiBjb3VudGVyX2J5X2VtYWlsOgogICAgICAgICAgICAgICAgICAgICAjIEFk
ZCBuYW1lIHRvIHRoZSBleGlzdGluZyBjb3VudGVyCi0gICAgICAgICAgICAgICAgICAgIHNlbGYu
X2NvdW50ZXJzX2J5X25hbWVbYXV0aG9yX25hbWVdID0gY291bnRlcl9ieV9lbWFpbAorICAgICAg
ICAgICAgICAgICAgICBhbmFseXNpc1snY291bnRlcnNfYnlfbmFtZSddW2F1dGhvcl9uYW1lXSA9
IGNvdW50ZXJfYnlfZW1haWwKICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9ieV9lbWFpbFsn
bmFtZXMnXSB8PSBzZXQoW2F1dGhvcl9uYW1lXSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgICAgICAgICAjIENyZWF0ZSBuZXcgY291bnRlcgogICAgICAgICAgICAgICAgICAg
ICBuZXdfY291bnRlciA9IHsnbmFtZXMnOiBzZXQoW2F1dGhvcl9uYW1lXSksICdlbWFpbHMnOiBz
ZXQoW2F1dGhvcl9lbWFpbF0pLCAnbGF0ZXN0X25hbWUnOiBhdXRob3JfbmFtZSwgJ2xhdGVzdF9l
bWFpbCc6IGF1dGhvcl9lbWFpbCwgJ2NvbW1pdHMnOiAiIn0KLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5fY291bnRlcnNfYnlfbmFtZVthdXRob3JfbmFtZV0gPSBuZXdfY291bnRlcgotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9jb3VudGVyc19ieV9lbWFpbFthdXRob3JfZW1haWxdID0gbmV3
X2NvdW50ZXIKKyAgICAgICAgICAgICAgICAgICAgYW5hbHlzaXNbJ2NvdW50ZXJzX2J5X25hbWUn
XVthdXRob3JfbmFtZV0gPSBuZXdfY291bnRlcgorICAgICAgICAgICAgICAgICAgICBhbmFseXNp
c1snY291bnRlcnNfYnlfZW1haWwnXVthdXRob3JfZW1haWxdID0gbmV3X2NvdW50ZXIKIAotICAg
ICAgICAgICAgYXNzZXJ0KHNlbGYuX2NvdW50ZXJzX2J5X25hbWVbYXV0aG9yX25hbWVdID09IHNl
bGYuX2NvdW50ZXJzX2J5X2VtYWlsW2F1dGhvcl9lbWFpbF0pCi0gICAgICAgICAgICBjb3VudGVy
ID0gc2VsZi5fY291bnRlcnNfYnlfbmFtZVthdXRob3JfbmFtZV0KKyAgICAgICAgICAgIGFzc2Vy
dChhbmFseXNpc1snY291bnRlcnNfYnlfbmFtZSddW2F1dGhvcl9uYW1lXSA9PSBhbmFseXNpc1sn
Y291bnRlcnNfYnlfZW1haWwnXVthdXRob3JfZW1haWxdKQorICAgICAgICAgICAgY291bnRlciA9
IGFuYWx5c2lzWydjb3VudGVyc19ieV9uYW1lJ11bYXV0aG9yX25hbWVdCiAgICAgICAgICAgICBj
b3VudGVyWydjb3VudCddID0gY291bnRlci5nZXQoJ2NvdW50JywgMCkgKyAxCiAKLSAgICAgICAg
ICAgIGlmIHN2bl9pZC5pc2RpZ2l0KCk6Ci0gICAgICAgICAgICAgICAgc3ZuX2lkID0gImh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LyIgKyBzdm5faWQKLSAgICAgICAgICAgIGNvdW50
ZXJbJ2NvbW1pdHMnXSArPSAiICBjb21taXQ6ICVzIG9uICVzIGJ5ICVzICglcylcbiIgJSAoc3Zu
X2lkLCBjb21taXRfZGF0ZSwgYXV0aG9yX25hbWUsIGF1dGhvcl9lbWFpbCkKKyAgICAgICAgICAg
IGlmIHJldmlzaW9uLmlzZGlnaXQoKToKKyAgICAgICAgICAgICAgICByZXZpc2lvbiA9ICJodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8iICsgcmV2aXNpb24KKyAgICAgICAgICAgIGNv
dW50ZXJbJ2NvbW1pdHMnXSArPSAiICBjb21taXQ6ICVzIG9uICVzIGJ5ICVzICglcylcbiIgJSAo
cmV2aXNpb24sIGNvbW1pdF9kYXRlLCBhdXRob3JfbmFtZSwgYXV0aG9yX2VtYWlsKQogCi0gICAg
ICAgIHJldHVybiBzZWxmLl9jb3VudGVyc19ieV9lbWFpbAorICAgICAgICBhbmFseXNpcyA9IHsK
KyAgICAgICAgICAgICdjb3VudGVyc19ieV9uYW1lJzoge30sCisgICAgICAgICAgICAnY291bnRl
cnNfYnlfZW1haWwnOiB7fSwKKyAgICAgICAgfQorCisgICAgICAgIGZvciBjb21taXRfbWVzc2Fn
ZSBpbiBzZWxmLl9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKCk6CisgICAgICAgICAgICBzZWxmLl9h
bmFseXplX2NvbW1pdChjb21taXRfbWVzc2FnZSwgX29uX2FuYWx5c2lzLCBhbmFseXNpcykKKwor
ICAgICAgICByZXR1cm4gYW5hbHlzaXNbJ2NvdW50ZXJzX2J5X2VtYWlsJ10KIAogICAgIGRlZiBf
Y29sbGVjdF9ub21pbmF0aW9ucyhzZWxmLCBjb3VudGVyc19ieV9lbWFpbCk6CiAgICAgICAgIG5v
bWluYXRpb25zID0gW10KQEAgLTE3Miw3ICsyMjQsNyBAQCBjbGFzcyBTdWdnZXN0Tm9taW5hdGlv
bnMoQ29tbWFuZCk6CiAKICAgICAgICAgICAgIGlmIHBhdGNoX2NvdW50ID49IHNlbGYuY29tbWl0
dGVyX21pbmltdW0gYW5kIChub3QgY29udHJpYnV0b3Igb3Igbm90IGNvbnRyaWJ1dG9yLmNhbl9j
b21taXQpOgogICAgICAgICAgICAgICAgIHJvbGVzLmFwcGVuZCgiY29tbWl0dGVyIikKLSAgICAg
ICAgICAgIGlmIHBhdGNoX2NvdW50ID49IHNlbGYucmV2aWV3ZXJfbWluaW11bSAgYW5kIChub3Qg
Y29udHJpYnV0b3Igb3Igbm90IGNvbnRyaWJ1dG9yLmNhbl9yZXZpZXcpOgorICAgICAgICAgICAg
aWYgcGF0Y2hfY291bnQgPj0gc2VsZi5yZXZpZXdlcl9taW5pbXVtIGFuZCBjb250cmlidXRvciBh
bmQgY29udHJpYnV0b3IuY2FuX2NvbW1pdCBhbmQgbm90IGNvbnRyaWJ1dG9yLmNhbl9yZXZpZXc6
CiAgICAgICAgICAgICAgICAgcm9sZXMuYXBwZW5kKCJyZXZpZXdlciIpCiAgICAgICAgICAgICBp
ZiByb2xlczoKICAgICAgICAgICAgICAgICBub21pbmF0aW9ucy5hcHBlbmQoewpAQCAtMTgzLDcg
KzIzNSw3IEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKICAgICAgICAgICAg
ICAgICB9KQogICAgICAgICByZXR1cm4gbm9taW5hdGlvbnMKIAotICAgIGRlZiBfcHJpbnRfbm9t
aW5hdGlvbnMoc2VsZiwgbm9taW5hdGlvbnMpOgorICAgIGRlZiBfcHJpbnRfbm9taW5hdGlvbnMo
c2VsZiwgbm9taW5hdGlvbnMsIGNvdW50ZXJzX2J5X2VtYWlsKToKICAgICAgICAgZGVmIG5vbWlu
YXRpb25fY21wKGFfbm9taW5hdGlvbiwgYl9ub21pbmF0aW9uKToKICAgICAgICAgICAgIHJvbGVz
X3Jlc3VsdCA9IGNtcChhX25vbWluYXRpb25bJ3JvbGVzJ10sIGJfbm9taW5hdGlvblsncm9sZXMn
XSkKICAgICAgICAgICAgIGlmIHJvbGVzX3Jlc3VsdDoKQEAgLTE5Nyw3ICsyNDksNyBAQCBjbGFz
cyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAgICAgICAgICAgICAjIFRoaXMgaXMgYSBs
aXR0bGUgYml0IG9mIGEgaGFjaywgYnV0IGl0cyBjb252aWVuZW50IHRvIGp1c3QgcGFzcyB0aGUg
bm9taW5hdGlvbiBkaWN0aW9uYXJ5IHRvIHRoZSBmb3JtYXRpbmcgb3BlcmF0b3IuCiAgICAgICAg
ICAgICBub21pbmF0aW9uWydyb2xlc19zdHJpbmcnXSA9IGpvaW5fd2l0aF9zZXBhcmF0b3JzKG5v
bWluYXRpb25bJ3JvbGVzJ10pLnVwcGVyKCkKICAgICAgICAgICAgIHByaW50ICIlKHJvbGVzX3N0
cmluZylzOiAlKGF1dGhvcl9uYW1lKXMgKCUoYXV0aG9yX2VtYWlsKXMpIGhhcyAlKHBhdGNoX2Nv
dW50KXMgcmV2aWV3ZWQgcGF0Y2hlcyIgJSBub21pbmF0aW9uCi0gICAgICAgICAgICBjb3VudGVy
ID0gc2VsZi5fY291bnRlcnNfYnlfZW1haWxbbm9taW5hdGlvblsnYXV0aG9yX2VtYWlsJ11dCisg
ICAgICAgICAgICBjb3VudGVyID0gY291bnRlcnNfYnlfZW1haWxbbm9taW5hdGlvblsnYXV0aG9y
X2VtYWlsJ11dCiAKICAgICAgICAgICAgIGlmIHNlbGYuc2hvd19jb21taXRzOgogICAgICAgICAg
ICAgICAgIHByaW50IGNvdW50ZXJbJ2NvbW1pdHMnXQpAQCAtMjM4LDEwICsyOTAsOSBAQCBjbGFz
cyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAgICAgICAgIHNlbGYuX2luaXRfb3B0aW9u
cyhvcHRpb25zKQogICAgICAgICBwYXRjaF9jb3VudHMgPSBzZWxmLl9jb3VudF9yZWNlbnRfcGF0
Y2hlcygpCiAgICAgICAgIG5vbWluYXRpb25zID0gc2VsZi5fY29sbGVjdF9ub21pbmF0aW9ucyhw
YXRjaF9jb3VudHMpCi0gICAgICAgIHNlbGYuX3ByaW50X25vbWluYXRpb25zKG5vbWluYXRpb25z
KQorICAgICAgICBzZWxmLl9wcmludF9ub21pbmF0aW9ucyhub21pbmF0aW9ucywgcGF0Y2hfY291
bnRzKQogICAgICAgICBpZiBzZWxmLnZlcmJvc2U6CiAgICAgICAgICAgICBzZWxmLl9wcmludF9j
b3VudHMocGF0Y2hfY291bnRzKQogCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAg
U3VnZ2VzdE5vbWluYXRpb25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zX3VuaXR0ZXN0LnB5
CmluZGV4IDg4YmUyNTMwMzk1OTIzZWI2N2U5NmU0ODUwODNjOTM4ZTZjMzE3MWMuLmIyNGRlZjZm
YTNlOTVhOTMzYThjYmNkZjFmMDMyMzgwM2JiYmRhZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnNfdW5pdHRlc3QucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0
aW9uc191bml0dGVzdC5weQpAQCAtNDUsMjEgKzQ1LDQ0IEBAIERhdGU6ICAgVGh1IFNlcCAxNSAx
OTo1NjoyMSAyMDExICswMDAwCiAKICAgICBnaXQtc3ZuLWlkOiBodHRwOi8vc3ZuLndlYmtpdC5v
cmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmtAOTUyMTkgMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2Mt
ZDUyNjkxYjRkYmZjCiAiIiIKLSAgICBtb2NrX3NhbWVfYXV0aG9yX2NvbW1pdF9tZXNzYWdlID0g
IiIiVmFsdWUgcHJvZmlsZXMgY29sbGVjdCBubyBpbmZvcm1hdGlvbiBmb3IgZ2xvYmFsIHZhcmlh
YmxlcworICAgIG1vY2tfc2FtZV9hdXRob3JfY29tbWl0X21lc3NhZ2UgPSAiIiJBdXRob3I6IGZw
aXpsb0BhcHBsZS5jb20gPGZwaXpsb0BhcHBsZS5jb21AMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2Mt
ZDUyNjkxYjRkYmZjPgorRGF0ZTogICBUaHUgU2VwIDE1IDE5OjU2OjIxIDIwMTEgKzAwMDAKKwor
VmFsdWUgcHJvZmlsZXMgY29sbGVjdCBubyBpbmZvcm1hdGlvbiBmb3IgZ2xvYmFsIHZhcmlhYmxl
cwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MTQzCiAKLVJldmll
d2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLiIiIgorUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisK
K2dpdC1zdm4taWQ6IGh0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVu
a0A5NTIxOSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKKyIiIgorCisgICAg
ZGVmIF9tYWtlX29wdGlvbnMoc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICBkZWZhdWx0cyA9IHsK
KyAgICAgICAgICAgICdjb21taXR0ZXJfbWluaW11bSc6IDEwLAorICAgICAgICAgICAgJ21heF9j
b21taXRfYWdlJzogOSwKKyAgICAgICAgICAgICdyZXZpZXdlcl9taW5pbXVtJzogODAsCisgICAg
ICAgICAgICAnc2hvd19jb21taXRzJzogRmFsc2UsCisgICAgICAgICAgICAndmVyYm9zZSc6IEZh
bHNlLAorICAgICAgICB9CisgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucygqKmRlZmF1bHRz
KQorICAgICAgICBvcHRpb25zLnVwZGF0ZSgqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIG9wdGlv
bnMKIAogICAgIGRlZiB0ZXN0X3JlY2VudF9jb21taXRfbWVzc2FnZXMoc2VsZik6CisgICAgICAg
IHNlbGYubWF4RGlmZiA9IE5vbmUKICAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKICAgICAgICAg
c3VnZ2VzdF9ub21pbmF0aW9ucyA9IFN1Z2dlc3ROb21pbmF0aW9ucygpCi0gICAgICAgIHN1Z2dl
c3Rfbm9taW5hdGlvbnMuX2luaXRfb3B0aW9ucyhvcHRpb25zPU1vY2tPcHRpb25zKHJldmlld2Vy
X21pbmltdW09ODAsIGNvbW1pdHRlcl9taW5pbXVtPTEwLCBtYXhfY29tbWl0X2FnZT05LCBzaG93
X2NvbW1pdHM9RmFsc2UsIHZlcmJvc2U9RmFsc2UpKQorICAgICAgICBzdWdnZXN0X25vbWluYXRp
b25zLl9pbml0X29wdGlvbnMob3B0aW9ucz1zZWxmLl9tYWtlX29wdGlvbnMoKSkKICAgICAgICAg
c3VnZ2VzdF9ub21pbmF0aW9ucy5iaW5kX3RvX3Rvb2wodG9vbCkKIAogICAgICAgICB0b29sLmV4
ZWN1dGl2ZS5ydW5fY29tbWFuZCA9IGxhbWJkYSBjb21tYW5kOiBzZWxmLm1vY2tfZ2l0X291dHB1
dAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3VnZ2VzdF9ub21pbmF0aW9ucy5fcmVj
ZW50X2NvbW1pdF9tZXNzYWdlcygpKSwgW3NlbGYubW9ja19zYW1lX2F1dGhvcl9jb21taXRfbWVz
c2FnZV0pCiAKLSAgICBtb2NrX25vbl9jb21taXR0ZXJfY29tbWl0X21lc3NhZ2UgPSAiIiJMZXQg
VGVzdFdlYktpdEFQSSB3b3JrIGZvciBjaHJvbWl1bQorICAgIG1vY2tfbm9uX2NvbW1pdHRlcl9j
b21taXRfbWVzc2FnZSA9ICIiIgorQXV0aG9yOiBjb21taXQtcXVldWVAd2Via2l0Lm9yZyA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmdAMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZj
PgorRGF0ZTogICBUaHUgU2VwIDE1IDE0OjA4OjQyIDIwMTEgKzAwMDAKKworTGV0IFRlc3RXZWJL
aXRBUEkgd29yayBmb3IgY2hyb21pdW0KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02Nzc1NgogCiBQYXRjaCBieSBYaWFuemh1IFdhbmcgPHdhbmd4aWFuemh1QGNocm9t
aXVtLm9yZz4gb24gMjAxMS0wOS0xNQpAQCAtNjcsMTEgKzkwLDE1IEBAIFJldmlld2VkIGJ5IFNh
bSBXZWluaWcuCiAKIFNvdXJjZS9XZWJLaXQvY2hyb21pdW06CiAKLSogV2ViS2l0Lmd5cDoiIiIK
KyogV2ViS2l0Lmd5cDoKKworZ2l0LXN2bi1pZDogaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9z
aXRvcnkvd2Via2l0L3RydW5rQDk1MTg4IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0
ZGJmYworIiIiCiAKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKICAgICAgICAgZXhwZWN0ZWRf
c3Rkb3V0ID0gIlJFVklFV0VSOiBYaWFuemh1IFdhbmcgKHdhbmd4aWFuemh1QGNocm9taXVtLm9y
ZykgaGFzIDg4IHJldmlld2VkIHBhdGNoZXNcbiIKKyAgICAgICAgb3B0aW9ucyA9IHNlbGYuX21h
a2Vfb3B0aW9ucygpCiAgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMgPSBTdWdnZXN0Tm9taW5h
dGlvbnMoKQotICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zLl9pbml0X29wdGlvbnMob3B0aW9u
cz1Nb2NrT3B0aW9ucyhyZXZpZXdlcl9taW5pbXVtPTgwLCBjb21taXR0ZXJfbWluaW11bT0xMCwg
bWF4X2NvbW1pdF9hZ2U9OSwgc2hvd19jb21taXRzPUZhbHNlLCB2ZXJib3NlPUZhbHNlKSkKKyAg
ICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5faW5pdF9vcHRpb25zKG9wdGlvbnM9b3B0aW9ucykK
ICAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5fcmVjZW50X2NvbW1pdF9tZXNzYWdlcyA9IGxh
bWJkYTogW3NlbGYubW9ja19ub25fY29tbWl0dGVyX2NvbW1pdF9tZXNzYWdlIGZvciBfIGluIHJh
bmdlKDg4KV0KLSAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKHN1Z2dlc3Rfbm9t
aW5hdGlvbnMsIFtdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBvcHRpb25zPU1v
Y2tPcHRpb25zKHJldmlld2VyX21pbmltdW09ODAsIGNvbW1pdHRlcl9taW5pbXVtPTEwLCBtYXhf
Y29tbWl0X2FnZT05LCBzaG93X2NvbW1pdHM9RmFsc2UsIHZlcmJvc2U9RmFsc2UpKQorICAgICAg
ICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoc3VnZ2VzdF9ub21pbmF0aW9ucywgW10sIGV4
cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQsIG9wdGlvbnM9b3B0aW9ucykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200079</attachid>
            <date>2013-04-29 21:14:12 -0700</date>
            <delta_ts>2013-04-30 18:46:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115285-20130429211327.patch</filename>
            <type>text/plain</type>
            <size>19670</size>
            <attacher name="Glenn Adams">glenn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MzUwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDU3MzdkODJkYTY0YzY1ZWYxMzY0M2Q0MWYyZmE4MGZk
NjU0Njg5ZC4uMmY4ZDE2ZmFlYmEzY2E5YzM1MzNkYmJiOTk5ODk2MTcxYzNmYWJlZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2
IEBACiAyMDEzLTA0LTI5ICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CiAKKyAgICAg
ICAgW3dlYmtpdHB5XSBzdWdnZXN0LW5vbWluYXRpb25zIGRvZXNuJ3QgY291bnQgYWxsIHF1YWxp
ZmllZCBwYXRjaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTUyODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXggY29tbWl0IGFuYWx5c2lzIHNvIHRoYXQgcGF0Y2hlcyBtYWRlIGJ5IGFuIGV4aXN0
aW5nIGNvbW1pdHRlciBhcmUgY291bnRlZCB0b3dhcmRzIHJldmlld2VyCisgICAgICAgIG5vbWlu
YXRpb24uIEltcHJvdmUgY29tbWl0IGxvZyBwYXJzaW5nLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weToKKyAgICAgICAgKENv
bW1pdExvZ0Vycm9yKToKKyAgICAgICAgKENvbW1pdExvZ0Vycm9yLl9faW5pdF9fKToKKyAgICAg
ICAgKENvbW1pdExvZ01pc3NpbmdSZXZpZXdlcik6CisgICAgICAgIChDb21taXRMb2dNaXNzaW5n
UmV2aWV3ZXIuX19pbml0X18pOgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zKToKKyAgICAg
ICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5fX2luaXRfXyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5h
dGlvbnMuX3JlY2VudF9jb21taXRfbWVzc2FnZXMpOgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRp
b25zLl9hdXRob3JfbmFtZV9mcm9tX2VtYWlsKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9u
cy5fY29udHJpYnV0b3JfZnJvbV9lbWFpbCk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMu
X2FuYWx5emVfY29tbWl0KToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5fY291bnRfcmVj
ZW50X3BhdGNoZXMuX29uX2FuYWx5c2lzKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5f
Y291bnRfcmVjZW50X3BhdGNoZXMpOgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9jb2xs
ZWN0X25vbWluYXRpb25zKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9ucy5fcHJpbnRfbm9t
aW5hdGlvbnMpOgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLmV4ZWN1dGUpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnNfdW5p
dHRlc3QucHk6CisgICAgICAgIChfbWFrZV9vcHRpb25zKToKKyAgICAgICAgKHRlc3RfcmVjZW50
X2NvbW1pdF9tZXNzYWdlcyk6CisgICAgICAgICh0ZXN0X2Jhc2ljKToKKworMjAxMy0wNC0yOSAg
R2xlbm4gQWRhbXMgIDxnbGVubkBza3luYXYuY29tPgorCiAgICAgICAgIFt3ZWJraXRweV0gQWRk
IG1pc3NpbmcgY29udHJpYnV0b3IgZW1haWwgYWRkcmVzc2VzCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUzOTQKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnMucHkK
aW5kZXggODQ1Yjc4MjcwOTY1MjJkNWUxMmY1MGM5ZjYyN2IxZWUzNWNlOWQ3MC4uZDlkMmVlOTA3
ZDQ5Nzc4NTZiMjY3MTA4NmFiMzU3MjE4MzljYzYzNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5CkBA
IC0zMiwxNCArMzIsMzIgQEAgaW1wb3J0IHJlCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNr
b3V0LmNoYW5nZWxvZyBpbXBvcnQgQ2hhbmdlTG9nRW50cnkKIGZyb20gd2Via2l0cHkuY29tbW9u
LmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0Ci1mcm9tIHdlYmtpdHB5LnRv
b2wgaW1wb3J0IHN0ZXBzCiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQgam9pbl93
aXRoX3NlcGFyYXRvcnMKIGZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9y
dCBDb21tYW5kCiAKIAorY2xhc3MgQ29tbWl0TG9nRXJyb3IoRXhjZXB0aW9uKToKKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYpCisKKwor
Y2xhc3MgQ29tbWl0TG9nTWlzc2luZ1Jldmlld2VyKENvbW1pdExvZ0Vycm9yKToKKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgQ29tbWl0TG9nRXJyb3IuX19pbml0X18oc2VsZikK
KworCiBjbGFzcyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJzdWdn
ZXN0LW5vbWluYXRpb25zIgotICAgIGhlbHBfdGV4dCA9ICJTdWdnZXN0IGNvbnRyaWJ1dG9ycyBm
b3IgY29tbWl0dGVyL3Jldmlld2VyIG5vbWluYXRpb25zIgorICAgIGhlbHBfdGV4dCA9ICJTdWdn
ZXN0IG5vbWluYXRpb25zIGZvciBjb21taXR0ZXIvcmV2aWV3ZXIgcm9sZSIKKworICAgIF9sZWFk
aW5nX2luZGVudF9yZWdleHAgPSByZS5jb21waWxlKHIiXlsgXXs0fSIsIHJlLk1VTFRJTElORSkK
KyAgICBfcmV2aWV3ZWRfYnlfcmVnZXhwID0gcmUuY29tcGlsZShDaGFuZ2VMb2dFbnRyeS5yZXZp
ZXdlZF9ieV9yZWdleHAsIHJlLk1VTFRJTElORSkKKyAgICBfcGF0Y2hfYnlfcmVnZXhwID0gcmUu
Y29tcGlsZShyJ15QYXRjaCBieSAoP1A8bmFtZT4uKz8pXHMrPCg/UDxlbWFpbD5bXjw+XSspPiBv
biAoP1A8ZGF0ZT5cZHs0fS1cZHsyfS1cZHsyfSkkJywgcmUuTVVMVElMSU5FKQorICAgIF9jb21t
aXR0ZXJfcmVnZXhwID0gcmUuY29tcGlsZShyJ15BdXRob3I6ICg/UDxlbWFpbD5cUyspXHMrPFte
Pl0rPiQnLCByZS5NVUxUSUxJTkUpCisgICAgX2RhdGVfcmVnZXhwID0gcmUuY29tcGlsZShyJ15E
YXRlOiAgICg/UDxkYXRlPlxkezR9LVxkezJ9LVxkezJ9KSAoP1A8dGltZT5cZHsyfTpcZHsyfTpc
ZHsyfSkgW1wrXC1dXGR7NH0kJywgcmUuTVVMVElMSU5FKQorICAgIF9yZXZpc2lvbl9yZWdleHAg
PSByZS5jb21waWxlKHInXmdpdC1zdm4taWQ6IGh0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0
b3J5L3dlYmtpdC90cnVua0AoP1A8c3ZuaWQ+XGQrKSAoP1A8Z2l0aWQ+WzAtOWEtZlwtXXszNn0p
JCcsIHJlLk1VTFRJTElORSkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgb3B0
aW9ucyA9IFsKQEAgLTQ4LDE0ICs2NiwxMCBAQCBjbGFzcyBTdWdnZXN0Tm9taW5hdGlvbnMoQ29t
bWFuZCk6CiAgICAgICAgICAgICBtYWtlX29wdGlvbigiLS1tYXgtY29tbWl0LWFnZSIsIGFjdGlv
bj0ic3RvcmUiLCBkZXN0PSJtYXhfY29tbWl0X2FnZSIsIHR5cGU9ImludCIsIGRlZmF1bHQ9OSwg
aGVscD0iU3BlY2lmeSBtYXggY29tbWl0IGFnZSB0byBjb25zaWRlciBmb3Igbm9taW5hdGlvbnMg
KGluIG1vbnRocykuIiksCiAgICAgICAgICAgICBtYWtlX29wdGlvbigiLS1zaG93LWNvbW1pdHMi
LCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJzaG93X2NvbW1pdHMiLCBkZWZhdWx0PUZhbHNl
LCBoZWxwPSJTaG93IGNvbW1pdCBoaXN0b3J5IHdpdGggbm9taW5hdGlvbiBzdWdnZXN0aW9ucy4i
KSwKICAgICAgICAgXQotCi0gICAgICAgIENvbW1hbmQuX19pbml0X18oc2VsZiwgb3B0aW9ucz1v
cHRpb25zKQorICAgICAgICBzdXBlcihTdWdnZXN0Tm9taW5hdGlvbnMsIHNlbGYpLl9faW5pdF9f
KG9wdGlvbnM9b3B0aW9ucykKICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkg
YmUgb24gdGhlIHRvb2wgc29tZXdoZXJlLgogICAgICAgICBzZWxmLl9jb21taXR0ZXJfbGlzdCA9
IENvbW1pdHRlckxpc3QoKQogCi0gICAgX2NvdW50ZXJzX2J5X25hbWUgPSB7fQotICAgIF9jb3Vu
dGVyc19ieV9lbWFpbCA9IHt9Ci0KICAgICBkZWYgX2luaXRfb3B0aW9ucyhzZWxmLCBvcHRpb25z
KToKICAgICAgICAgc2VsZi5jb21taXR0ZXJfbWluaW11bSA9IG9wdGlvbnMuY29tbWl0dGVyX21p
bmltdW0KICAgICAgICAgc2VsZi5yZXZpZXdlcl9taW5pbXVtID0gb3B0aW9ucy5yZXZpZXdlcl9t
aW5pbXVtCkBAIC02NSw2MyArNzksODIgQEAgY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKENvbW1h
bmQpOgogCiAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgbW92ZSB0byBzY20ucHkKICAgICBkZWYg
X3JlY2VudF9jb21taXRfbWVzc2FnZXMoc2VsZik6Ci0gICAgICAgIGdpdF9sb2cgPSBzZWxmLl90
b29sLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ2dpdCcsICdsb2cnLCAnLS1zaW5jZT0iJXMgbW9u
dGhzIGFnbyInICUgc2VsZi5tYXhfY29tbWl0X2FnZV0pCi0gICAgICAgIG1hdGNoX2dpdF9zdm5f
aWQgPSByZS5jb21waWxlKHIiXG5cbiAgICBnaXQtc3ZuLWlkOi4qXG4iLCByZS5NVUxUSUxJTkUp
Ci0gICAgICAgIG1hdGNoX2dldF9sb2dfbGluZXMgPSByZS5jb21waWxlKHIiXlxTLipcbiIsIHJl
Lk1VTFRJTElORSkKLSAgICAgICAgbWF0Y2hfbGVhZGluZ19pbmRlbnQgPSByZS5jb21waWxlKHIi
XlsgXXs0fSIsIHJlLk1VTFRJTElORSkKLQotICAgICAgICBtZXNzYWdlcyA9IHJlLnNwbGl0KHIi
Y29tbWl0IFx3ezQwfSIsIGdpdF9sb2cpWzE6XSAgIyBJZ25vcmUgdGhlIGZpcnN0IG1lc3NhZ2Ug
d2hpY2ggd2lsbCBiZSBlbXB0eS4KKyAgICAgICAgZ2l0X2xvZyA9IHNlbGYuX3Rvb2wuZXhlY3V0
aXZlLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ2xvZycsICctLWRhdGU9aXNvJywgJy0tc2luY2U9IiVz
IG1vbnRocyBhZ28iJyAlIHNlbGYubWF4X2NvbW1pdF9hZ2VdKQorICAgICAgICBtZXNzYWdlcyA9
IHJlLnNwbGl0KHIiXmNvbW1pdCBcd3s0MH0kIiwgZ2l0X2xvZywgZmxhZ3M9cmUuTVVMVElMSU5F
KVsxOl0gICMgSWdub3JlIHRoZSBmaXJzdCBtZXNzYWdlIHdoaWNoIHdpbGwgYmUgZW1wdHkuCiAg
ICAgICAgIGZvciBtZXNzYWdlIGluIG1lc3NhZ2VzOgotICAgICAgICAgICAgIyBSZW1vdmUgYW55
IGxpbmVzIGZyb20gZ2l0IGFuZCB1bmluZGVudCBhbGwgdGhlIGxpbmVzCi0gICAgICAgICAgICAo
bWVzc2FnZSwgXykgPSBtYXRjaF9naXRfc3ZuX2lkLnN1Ym4oIiIsIG1lc3NhZ2UpCi0gICAgICAg
ICAgICAobWVzc2FnZSwgXykgPSBtYXRjaF9nZXRfbG9nX2xpbmVzLnN1Ym4oIiIsIG1lc3NhZ2Up
Ci0gICAgICAgICAgICAobWVzc2FnZSwgXykgPSBtYXRjaF9sZWFkaW5nX2luZGVudC5zdWJuKCIi
LCBtZXNzYWdlKQorICAgICAgICAgICAgIyBVbmluZGVudCBhbGwgdGhlIGxpbmVzCisgICAgICAg
ICAgICAobWVzc2FnZSwgXykgPSBzZWxmLl9sZWFkaW5nX2luZGVudF9yZWdleHAuc3VibigiIiwg
bWVzc2FnZSkKICAgICAgICAgICAgIHlpZWxkIG1lc3NhZ2UubHN0cmlwKCkgICMgUmVtb3ZlIGFu
eSBsZWFkaW5nIG5ld2xpbmVzIGZyb20gdGhlIGxvZyBtZXNzYWdlLgogCi0gICAgIyBlLmcuIFBh
dGNoIGJ5IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+IG9uIDIwMTEtMDktMTUKLSAgICBw
YXRjaF9ieV9yZWdleHAgPSByJ15QYXRjaCBieSAoP1A8bmFtZT4uKz8pXHMrPCg/UDxlbWFpbD5b
Xjw+XSspPiBvbiAoP1A8ZGF0ZT5cZHs0fS1cZHsyfS1cZHsyfSkkJworICAgIGRlZiBfYXV0aG9y
X25hbWVfZnJvbV9lbWFpbChzZWxmLCBlbWFpbCk6CisgICAgICAgIGNvbnRyaWJ1dG9yID0gc2Vs
Zi5fY29tbWl0dGVyX2xpc3QuY29udHJpYnV0b3JfYnlfZW1haWwoZW1haWwpCisgICAgICAgIHJl
dHVybiBjb250cmlidXRvci5mdWxsX25hbWUgaWYgY29udHJpYnV0b3IgZWxzZSBOb25lCisKKyAg
ICBkZWYgX2NvbnRyaWJ1dG9yX2Zyb21fZW1haWwoc2VsZiwgZW1haWwpOgorICAgICAgICBjb250
cmlidXRvciA9IHNlbGYuX2NvbW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9yX2J5X2VtYWlsKGVtYWls
KQorICAgICAgICByZXR1cm4gY29udHJpYnV0b3IgaWYgY29udHJpYnV0b3IgZWxzZSBOb25lCisK
KyAgICBkZWYgX2FuYWx5emVfY29tbWl0KHNlbGYsIGNvbW1pdF9tZXNzYWdlLCBvbl9hbmFseXNp
cywgYW5hbHlzaXMpOgorICAgICAgICBjb21taXR0ZXJfbWF0Y2ggPSBzZWxmLl9jb21taXR0ZXJf
cmVnZXhwLnNlYXJjaChjb21taXRfbWVzc2FnZSkKKyAgICAgICAgaWYgbm90IGNvbW1pdHRlcl9t
YXRjaDoKKyAgICAgICAgICAgIHJhaXNlIENvbW1pdExvZ0Vycm9yCisKKyAgICAgICAgY29tbWl0
dGVyX2VtYWlsID0gY29tbWl0dGVyX21hdGNoLmdyb3VwKCdlbWFpbCcpCisgICAgICAgIGlmIG5v
dCBjb21taXR0ZXJfZW1haWw6CisgICAgICAgICAgICByYWlzZSBDb21taXRMb2dFcnJvcgorCisg
ICAgICAgIGNvbW1pdHRlciA9IHNlbGYuX2NvbnRyaWJ1dG9yX2Zyb21fZW1haWwoY29tbWl0dGVy
X2VtYWlsKQorICAgICAgICBpZiBub3QgY29tbWl0dGVyOgorICAgICAgICAgICAgcmFpc2UgQ29t
bWl0TG9nRXJyb3IKKworICAgICAgICBjb21taXRfZGF0ZV9tYXRjaCA9IHNlbGYuX2RhdGVfcmVn
ZXhwLnNlYXJjaChjb21taXRfbWVzc2FnZSkKKyAgICAgICAgaWYgbm90IGNvbW1pdF9kYXRlX21h
dGNoOgorICAgICAgICAgICAgcmFpc2UgQ29tbWl0TG9nRXJyb3IKKyAgICAgICAgY29tbWl0X2Rh
dGUgPSBjb21taXRfZGF0ZV9tYXRjaC5ncm91cCgnZGF0ZScpCisKKyAgICAgICAgcmV2aXNpb25f
bWF0Y2ggPSBzZWxmLl9yZXZpc2lvbl9yZWdleHAuc2VhcmNoKGNvbW1pdF9tZXNzYWdlKQorICAg
ICAgICBpZiBub3QgcmV2aXNpb25fbWF0Y2g6CisgICAgICAgICAgICByYWlzZSBDb21taXRMb2dF
cnJvcgorICAgICAgICByZXZpc2lvbiA9IHJldmlzaW9uX21hdGNoLmdyb3VwKCdzdm5pZCcpCisK
KyAgICAgICAgIyBMb29rIGZvciAiUGF0Y2ggYnkiIGxpbmUgZmlyc3QsIHdoaWNoIGlzIHVzZWQg
Zm9yIG5vbi1jb21taXR0ZXIgY29udHJpYnV0b3JzOworICAgICAgICAjIG90aGVyd2lzZSwgdXNl
IGNvbW1pdHRlciBpbmZvIGRldGVybWluZWQgYWJvdmUuCisgICAgICAgIGF1dGhvcl9tYXRjaCA9
IHNlbGYuX3BhdGNoX2J5X3JlZ2V4cC5zZWFyY2goY29tbWl0X21lc3NhZ2UpCisgICAgICAgIGlm
IG5vdCBhdXRob3JfbWF0Y2g6CisgICAgICAgICAgICBhdXRob3JfbWF0Y2ggPSBjb21taXR0ZXJf
bWF0Y2gKKyAgICAgICAgaWYgbm90IGF1dGhvcl9tYXRjaDoKKyAgICAgICAgICAgIHJhaXNlIENv
bW1pdExvZ0Vycm9yCisKKyAgICAgICAgYXV0aG9yX2VtYWlsID0gYXV0aG9yX21hdGNoLmdyb3Vw
KCdlbWFpbCcpCisgICAgICAgIGlmIG5vdCBhdXRob3JfZW1haWw6CisgICAgICAgICAgICBhdXRo
b3JfZW1haWwgPSBjb21taXR0ZXJfZW1haWwKKyAgICAgICAgaWYgbm90IGF1dGhvcl9lbWFpbDoK
KyAgICAgICAgICAgIHJhaXNlIENvbW1pdExvZ0Vycm9yCisKKyAgICAgICAgYXV0aG9yX25hbWUg
PSBhdXRob3JfbWF0Y2guZ3JvdXAoJ25hbWUnKSBpZiAnbmFtZScgaW4gYXV0aG9yX21hdGNoLmdy
b3VwZGljdCgpIGVsc2UgTm9uZQorICAgICAgICBpZiBub3QgYXV0aG9yX25hbWU6CisgICAgICAg
ICAgICBhdXRob3JfbmFtZSA9IHNlbGYuX2F1dGhvcl9uYW1lX2Zyb21fZW1haWwoYXV0aG9yX2Vt
YWlsKQorICAgICAgICBpZiBub3QgYXV0aG9yX25hbWU6CisgICAgICAgICAgICByYWlzZSBDb21t
aXRMb2dFcnJvcgorCisgICAgICAgIGNvbnRyaWJ1dG9yID0gc2VsZi5fY29udHJpYnV0b3JfZnJv
bV9lbWFpbChhdXRob3JfZW1haWwpCisgICAgICAgIGlmIGNvbnRyaWJ1dG9yIGFuZCBhdXRob3Jf
bmFtZSAhPSBjb250cmlidXRvci5mdWxsX25hbWUgYW5kIGNvbnRyaWJ1dG9yLmZ1bGxfbmFtZToK
KyAgICAgICAgICAgIGF1dGhvcl9uYW1lID0gY29udHJpYnV0b3IuZnVsbF9uYW1lCisKKyAgICAg
ICAgcmV2aWV3ZXJfbWF0Y2ggPSBzZWxmLl9yZXZpZXdlZF9ieV9yZWdleHAuc2VhcmNoKGNvbW1p
dF9tZXNzYWdlKQorICAgICAgICBpZiBub3QgcmV2aWV3ZXJfbWF0Y2g6CisgICAgICAgICAgICBy
YWlzZSBDb21taXRMb2dNaXNzaW5nUmV2aWV3ZXIKKyAgICAgICAgcmV2aWV3ZXJzID0gcmV2aWV3
ZXJfbWF0Y2guZ3JvdXAoJ3Jldmlld2VyJykKKworICAgICAgICBvbl9hbmFseXNpcyhhbmFseXNp
cywgY29tbWl0dGVyLCBjb21taXRfZGF0ZSwgcmV2aXNpb24sIGF1dGhvcl9lbWFpbCwgYXV0aG9y
X25hbWUsIGNvbnRyaWJ1dG9yLCByZXZpZXdlcnMpCiAKICAgICBkZWYgX2NvdW50X3JlY2VudF9w
YXRjaGVzKHNlbGYpOgotICAgICAgICAjIFRoaXMgZW50aXJlIGJsb2NrIGNvdWxkIGJlIHdyaXR0
ZW4gYXMgYSBtYXAvcmVkdWNlIG92ZXIgdGhlIG1lc3NhZ2VzLgotICAgICAgICBmb3IgbWVzc2Fn
ZSBpbiBzZWxmLl9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKCk6Ci0gICAgICAgICAgICAjIEZJWE1F
OiBUaGlzIHNob3VsZCB1c2UgQ2hhbmdlTG9nRW50cnkgdG8gZG8gdGhlIGVudGlyZSBwYXJzZSBp
bnN0ZWFkCi0gICAgICAgICAgICAjIG9mIGdyYWJiaW5nIGF0IGl0cyByZWdleHBzLgotICAgICAg
ICAgICAgZGF0ZWxpbmVfbWF0Y2ggPSByZS5tYXRjaChDaGFuZ2VMb2dFbnRyeS5kYXRlX2xpbmVf
cmVnZXhwLCBtZXNzYWdlLCByZS5NVUxUSUxJTkUpCi0gICAgICAgICAgICBpZiBub3QgZGF0ZWxp
bmVfbWF0Y2g6Ci0gICAgICAgICAgICAgICAgIyBNb2Rlcm4gY29tbWl0IG1lc3NhZ2VzIGRvbid0
IGp1c3QgZHVtcCB0aGUgQ2hhbmdlTG9nIGVudHJ5LCBidXQgcmF0aGVyCi0gICAgICAgICAgICAg
ICAgIyBoYXZlIGEgc3BlY2lhbCBQYXRjaCBieSBsaW5lIGZvciBub24tY29tbWl0dGVycy4KLSAg
ICAgICAgICAgICAgICBkYXRlbGluZV9tYXRjaCA9IHJlLnNlYXJjaChzZWxmLnBhdGNoX2J5X3Jl
Z2V4cCwgbWVzc2FnZSwgcmUuTVVMVElMSU5FKQotICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRl
bGluZV9tYXRjaDoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAg
YXV0aG9yX2VtYWlsID0gZGF0ZWxpbmVfbWF0Y2guZ3JvdXAoImVtYWlsIikKLSAgICAgICAgICAg
IGlmIG5vdCBhdXRob3JfZW1haWw6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAg
ICAgICAgIyBXZSBvbmx5IGNhcmUgYWJvdXQgcmV2aWV3ZWQgcGF0Y2hlcywgc28gbWFrZSBzdXJl
IGl0IGhhcyBhIHZhbGlkIHJldmlld2VyIGxpbmUuCi0gICAgICAgICAgICByZXZpZXdlcl9tYXRj
aCA9IHJlLnNlYXJjaChDaGFuZ2VMb2dFbnRyeS5yZXZpZXdlZF9ieV9yZWdleHAsIG1lc3NhZ2Us
IHJlLk1VTFRJTElORSkKLSAgICAgICAgICAgICMgV2UgbWlnaHQgYWxzbyB3YW50IHRvIHZhbGlk
YXRlIHRoZSByZXZpZXdlciBuYW1lIGFnYWluc3QgdGhlIGNvbW1pdHRlciBsaXN0LgotICAgICAg
ICAgICAgaWYgbm90IHJldmlld2VyX21hdGNoIG9yIG5vdCByZXZpZXdlcl9tYXRjaC5ncm91cCgi
cmV2aWV3ZXIiKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICBhdXRo
b3JfbmFtZSA9IGRhdGVsaW5lX21hdGNoLmdyb3VwKCJuYW1lIikKLSAgICAgICAgICAgIGlmIG5v
dCBhdXRob3JfbmFtZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBp
ZiByZS5zZWFyY2goIihbXmEtekEtWl1hbmRbXmEtekEtWl0pfCgsKXwoQCkiLCBhdXRob3JfbmFt
ZSk6Ci0gICAgICAgICAgICAgICAgIyBUaGlzIGVudHJ5IHNlZW1zIHRvIGhhdmUgbXVsdGlwbGUg
cmV2aWV3ZXJzLCBvciBpbnZhbGlkIGNoYXJhY3RlcnMsIHNvIHJlamVjdCBpdC4KLSAgICAgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICBkZWYgX29uX2FuYWx5c2lzKGFuYWx5c2lzLCBjb21t
aXR0ZXIsIGNvbW1pdF9kYXRlLCByZXZpc2lvbiwgYXV0aG9yX2VtYWlsLCBhdXRob3JfbmFtZSwg
Y29udHJpYnV0b3IsIHJldmlld2Vycyk6CiAKLSAgICAgICAgICAgIHN2bl9pZF9tYXRjaCA9IHJl
LnNlYXJjaChDaGFuZ2VMb2dFbnRyeS5zdm5faWRfcmVnZXhwLCBtZXNzYWdlLCByZS5NVUxUSUxJ
TkUpCi0gICAgICAgICAgICBpZiBzdm5faWRfbWF0Y2g6Ci0gICAgICAgICAgICAgICAgc3ZuX2lk
ID0gc3ZuX2lkX21hdGNoLmdyb3VwKCJzdm5pZCIpCi0gICAgICAgICAgICBpZiBub3Qgc3ZuX2lk
X21hdGNoIG9yIG5vdCBzdm5faWQ6Ci0gICAgICAgICAgICAgICAgc3ZuX2lkID0gInVua25vd24i
Ci0gICAgICAgICAgICBjb21taXRfZGF0ZSA9IGRhdGVsaW5lX21hdGNoLmdyb3VwKCJkYXRlIikK
LQotICAgICAgICAgICAgIyBTZWUgaWYgd2UgYWxyZWFkeSBoYXZlIGEgY29udHJpYnV0b3Igd2l0
aCB0aGlzIG5hbWUgb3IgZW1haWwKLSAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFtZSA9IHNlbGYu
X2NvdW50ZXJzX2J5X25hbWUuZ2V0KGF1dGhvcl9uYW1lKQotICAgICAgICAgICAgY291bnRlcl9i
eV9lbWFpbCA9IHNlbGYuX2NvdW50ZXJzX2J5X2VtYWlsLmdldChhdXRob3JfZW1haWwpCisgICAg
ICAgICAgICAjIFNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBjb250cmlidXRvciB3aXRoIHRoaXMg
YXV0aG9yX25hbWUgb3IgZW1haWwKKyAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFtZSA9IGFuYWx5
c2lzWydjb3VudGVyc19ieV9uYW1lJ10uZ2V0KGF1dGhvcl9uYW1lKQorICAgICAgICAgICAgY291
bnRlcl9ieV9lbWFpbCA9IGFuYWx5c2lzWydjb3VudGVyc19ieV9lbWFpbCddLmdldChhdXRob3Jf
ZW1haWwpCiAgICAgICAgICAgICBpZiBjb3VudGVyX2J5X25hbWU6CiAgICAgICAgICAgICAgICAg
aWYgY291bnRlcl9ieV9lbWFpbDoKICAgICAgICAgICAgICAgICAgICAgaWYgY291bnRlcl9ieV9u
YW1lICE9IGNvdW50ZXJfYnlfZW1haWw6CkBAIC0xMzIsMzEgKzE2NSw0MiBAQCBjbGFzcyBTdWdn
ZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVy
X2J5X25hbWVbJ25hbWVzJ10gfD0gY291bnRlcl9ieV9lbWFpbFsnbmFtZXMnXQogICAgICAgICAg
ICAgICAgICAgICAgICAgY291bnRlcl9ieV9uYW1lWydlbWFpbHMnXSB8PSBjb3VudGVyX2J5X2Vt
YWlsWydlbWFpbHMnXQogICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9ieV9uYW1lWydj
b3VudCddICs9IGNvdW50ZXJfYnlfZW1haWwuZ2V0KCdjb3VudCcsIDApCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9jb3VudGVyc19ieV9lbWFpbFthdXRob3JfZW1haWxdID0gY291bnRl
cl9ieV9uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBhbmFseXNpc1snY291bnRlcnNfYnlf
ZW1haWwnXVthdXRob3JfZW1haWxdID0gY291bnRlcl9ieV9uYW1lCiAgICAgICAgICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgICAgICAgICAgIyBBZGQgZW1haWwgdG8gdGhlIGV4aXN0aW5nIGNv
dW50ZXIKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY291bnRlcnNfYnlfZW1haWxbYXV0aG9y
X2VtYWlsXSA9IGNvdW50ZXJfYnlfbmFtZQorICAgICAgICAgICAgICAgICAgICBhbmFseXNpc1sn
Y291bnRlcnNfYnlfZW1haWwnXVthdXRob3JfZW1haWxdID0gY291bnRlcl9ieV9uYW1lCiAgICAg
ICAgICAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFtZVsnZW1haWxzJ10gfD0gc2V0KFthdXRob3Jf
ZW1haWxdKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpZiBjb3VudGVyX2J5
X2VtYWlsOgogICAgICAgICAgICAgICAgICAgICAjIEFkZCBuYW1lIHRvIHRoZSBleGlzdGluZyBj
b3VudGVyCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvdW50ZXJzX2J5X25hbWVbYXV0aG9y
X25hbWVdID0gY291bnRlcl9ieV9lbWFpbAorICAgICAgICAgICAgICAgICAgICBhbmFseXNpc1sn
Y291bnRlcnNfYnlfbmFtZSddW2F1dGhvcl9uYW1lXSA9IGNvdW50ZXJfYnlfZW1haWwKICAgICAg
ICAgICAgICAgICAgICAgY291bnRlcl9ieV9lbWFpbFsnbmFtZXMnXSB8PSBzZXQoW2F1dGhvcl9u
YW1lXSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAjIENyZWF0
ZSBuZXcgY291bnRlcgogICAgICAgICAgICAgICAgICAgICBuZXdfY291bnRlciA9IHsnbmFtZXMn
OiBzZXQoW2F1dGhvcl9uYW1lXSksICdlbWFpbHMnOiBzZXQoW2F1dGhvcl9lbWFpbF0pLCAnbGF0
ZXN0X25hbWUnOiBhdXRob3JfbmFtZSwgJ2xhdGVzdF9lbWFpbCc6IGF1dGhvcl9lbWFpbCwgJ2Nv
bW1pdHMnOiAiIn0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY291bnRlcnNfYnlfbmFtZVth
dXRob3JfbmFtZV0gPSBuZXdfY291bnRlcgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3Vu
dGVyc19ieV9lbWFpbFthdXRob3JfZW1haWxdID0gbmV3X2NvdW50ZXIKKyAgICAgICAgICAgICAg
ICAgICAgYW5hbHlzaXNbJ2NvdW50ZXJzX2J5X25hbWUnXVthdXRob3JfbmFtZV0gPSBuZXdfY291
bnRlcgorICAgICAgICAgICAgICAgICAgICBhbmFseXNpc1snY291bnRlcnNfYnlfZW1haWwnXVth
dXRob3JfZW1haWxdID0gbmV3X2NvdW50ZXIKIAotICAgICAgICAgICAgYXNzZXJ0KHNlbGYuX2Nv
dW50ZXJzX2J5X25hbWVbYXV0aG9yX25hbWVdID09IHNlbGYuX2NvdW50ZXJzX2J5X2VtYWlsW2F1
dGhvcl9lbWFpbF0pCi0gICAgICAgICAgICBjb3VudGVyID0gc2VsZi5fY291bnRlcnNfYnlfbmFt
ZVthdXRob3JfbmFtZV0KKyAgICAgICAgICAgIGFzc2VydChhbmFseXNpc1snY291bnRlcnNfYnlf
bmFtZSddW2F1dGhvcl9uYW1lXSA9PSBhbmFseXNpc1snY291bnRlcnNfYnlfZW1haWwnXVthdXRo
b3JfZW1haWxdKQorICAgICAgICAgICAgY291bnRlciA9IGFuYWx5c2lzWydjb3VudGVyc19ieV9u
YW1lJ11bYXV0aG9yX25hbWVdCiAgICAgICAgICAgICBjb3VudGVyWydjb3VudCddID0gY291bnRl
ci5nZXQoJ2NvdW50JywgMCkgKyAxCiAKLSAgICAgICAgICAgIGlmIHN2bl9pZC5pc2RpZ2l0KCk6
Ci0gICAgICAgICAgICAgICAgc3ZuX2lkID0gImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LyIgKyBzdm5faWQKLSAgICAgICAgICAgIGNvdW50ZXJbJ2NvbW1pdHMnXSArPSAiICBjb21t
aXQ6ICVzIG9uICVzIGJ5ICVzICglcylcbiIgJSAoc3ZuX2lkLCBjb21taXRfZGF0ZSwgYXV0aG9y
X25hbWUsIGF1dGhvcl9lbWFpbCkKKyAgICAgICAgICAgIGlmIHJldmlzaW9uLmlzZGlnaXQoKToK
KyAgICAgICAgICAgICAgICByZXZpc2lvbiA9ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8iICsgcmV2aXNpb24KKyAgICAgICAgICAgIGNvdW50ZXJbJ2NvbW1pdHMnXSArPSAiICBj
b21taXQ6ICVzIG9uICVzIGJ5ICVzICglcylcbiIgJSAocmV2aXNpb24sIGNvbW1pdF9kYXRlLCBh
dXRob3JfbmFtZSwgYXV0aG9yX2VtYWlsKQorCisgICAgICAgIGFuYWx5c2lzID0geworICAgICAg
ICAgICAgJ2NvdW50ZXJzX2J5X25hbWUnOiB7fSwKKyAgICAgICAgICAgICdjb3VudGVyc19ieV9l
bWFpbCc6IHt9LAorICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NvdW50ZXJzX2J5
X2VtYWlsCisgICAgICAgIGZvciBjb21taXRfbWVzc2FnZSBpbiBzZWxmLl9yZWNlbnRfY29tbWl0
X21lc3NhZ2VzKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5fYW5h
bHl6ZV9jb21taXQoY29tbWl0X21lc3NhZ2UsIF9vbl9hbmFseXNpcywgYW5hbHlzaXMpCisgICAg
ICAgICAgICBleGNlcHQgQ29tbWl0TG9nRXJyb3IsIGV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAg
ICBjb250aW51ZQorCisgICAgICAgIHJldHVybiBhbmFseXNpc1snY291bnRlcnNfYnlfZW1haWwn
XQogCiAgICAgZGVmIF9jb2xsZWN0X25vbWluYXRpb25zKHNlbGYsIGNvdW50ZXJzX2J5X2VtYWls
KToKICAgICAgICAgbm9taW5hdGlvbnMgPSBbXQpAQCAtMTcyLDcgKzIxNiw3IEBAIGNsYXNzIFN1
Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKIAogICAgICAgICAgICAgaWYgcGF0Y2hfY291bnQg
Pj0gc2VsZi5jb21taXR0ZXJfbWluaW11bSBhbmQgKG5vdCBjb250cmlidXRvciBvciBub3QgY29u
dHJpYnV0b3IuY2FuX2NvbW1pdCk6CiAgICAgICAgICAgICAgICAgcm9sZXMuYXBwZW5kKCJjb21t
aXR0ZXIiKQotICAgICAgICAgICAgaWYgcGF0Y2hfY291bnQgPj0gc2VsZi5yZXZpZXdlcl9taW5p
bXVtICBhbmQgKG5vdCBjb250cmlidXRvciBvciBub3QgY29udHJpYnV0b3IuY2FuX3Jldmlldyk6
CisgICAgICAgICAgICBpZiBwYXRjaF9jb3VudCA+PSBzZWxmLnJldmlld2VyX21pbmltdW0gYW5k
IGNvbnRyaWJ1dG9yIGFuZCBjb250cmlidXRvci5jYW5fY29tbWl0IGFuZCBub3QgY29udHJpYnV0
b3IuY2FuX3JldmlldzoKICAgICAgICAgICAgICAgICByb2xlcy5hcHBlbmQoInJldmlld2VyIikK
ICAgICAgICAgICAgIGlmIHJvbGVzOgogICAgICAgICAgICAgICAgIG5vbWluYXRpb25zLmFwcGVu
ZCh7CkBAIC0xODMsNyArMjI3LDcgQEAgY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKENvbW1hbmQp
OgogICAgICAgICAgICAgICAgIH0pCiAgICAgICAgIHJldHVybiBub21pbmF0aW9ucwogCi0gICAg
ZGVmIF9wcmludF9ub21pbmF0aW9ucyhzZWxmLCBub21pbmF0aW9ucyk6CisgICAgZGVmIF9wcmlu
dF9ub21pbmF0aW9ucyhzZWxmLCBub21pbmF0aW9ucywgY291bnRlcnNfYnlfZW1haWwpOgogICAg
ICAgICBkZWYgbm9taW5hdGlvbl9jbXAoYV9ub21pbmF0aW9uLCBiX25vbWluYXRpb24pOgogICAg
ICAgICAgICAgcm9sZXNfcmVzdWx0ID0gY21wKGFfbm9taW5hdGlvblsncm9sZXMnXSwgYl9ub21p
bmF0aW9uWydyb2xlcyddKQogICAgICAgICAgICAgaWYgcm9sZXNfcmVzdWx0OgpAQCAtMTk3LDcg
KzI0MSw3IEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKICAgICAgICAgICAg
ICMgVGhpcyBpcyBhIGxpdHRsZSBiaXQgb2YgYSBoYWNrLCBidXQgaXRzIGNvbnZpZW5lbnQgdG8g
anVzdCBwYXNzIHRoZSBub21pbmF0aW9uIGRpY3Rpb25hcnkgdG8gdGhlIGZvcm1hdGluZyBvcGVy
YXRvci4KICAgICAgICAgICAgIG5vbWluYXRpb25bJ3JvbGVzX3N0cmluZyddID0gam9pbl93aXRo
X3NlcGFyYXRvcnMobm9taW5hdGlvblsncm9sZXMnXSkudXBwZXIoKQogICAgICAgICAgICAgcHJp
bnQgIiUocm9sZXNfc3RyaW5nKXM6ICUoYXV0aG9yX25hbWUpcyAoJShhdXRob3JfZW1haWwpcykg
aGFzICUocGF0Y2hfY291bnQpcyByZXZpZXdlZCBwYXRjaGVzIiAlIG5vbWluYXRpb24KLSAgICAg
ICAgICAgIGNvdW50ZXIgPSBzZWxmLl9jb3VudGVyc19ieV9lbWFpbFtub21pbmF0aW9uWydhdXRo
b3JfZW1haWwnXV0KKyAgICAgICAgICAgIGNvdW50ZXIgPSBjb3VudGVyc19ieV9lbWFpbFtub21p
bmF0aW9uWydhdXRob3JfZW1haWwnXV0KIAogICAgICAgICAgICAgaWYgc2VsZi5zaG93X2NvbW1p
dHM6CiAgICAgICAgICAgICAgICAgcHJpbnQgY291bnRlclsnY29tbWl0cyddCkBAIC0yMzgsMTAg
KzI4Miw5IEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKICAgICAgICAgc2Vs
Zi5faW5pdF9vcHRpb25zKG9wdGlvbnMpCiAgICAgICAgIHBhdGNoX2NvdW50cyA9IHNlbGYuX2Nv
dW50X3JlY2VudF9wYXRjaGVzKCkKICAgICAgICAgbm9taW5hdGlvbnMgPSBzZWxmLl9jb2xsZWN0
X25vbWluYXRpb25zKHBhdGNoX2NvdW50cykKLSAgICAgICAgc2VsZi5fcHJpbnRfbm9taW5hdGlv
bnMobm9taW5hdGlvbnMpCisgICAgICAgIHNlbGYuX3ByaW50X25vbWluYXRpb25zKG5vbWluYXRp
b25zLCBwYXRjaF9jb3VudHMpCiAgICAgICAgIGlmIHNlbGYudmVyYm9zZToKICAgICAgICAgICAg
IHNlbGYuX3ByaW50X2NvdW50cyhwYXRjaF9jb3VudHMpCiAKLQogaWYgX19uYW1lX18gPT0gIl9f
bWFpbl9fIjoKICAgICBTdWdnZXN0Tm9taW5hdGlvbnMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9uc191bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlv
bnNfdW5pdHRlc3QucHkKaW5kZXggODhiZTI1MzAzOTU5MjNlYjY3ZTk2ZTQ4NTA4M2M5MzhlNmMz
MTcxYy4uYjI0ZGVmNmZhM2U5NWE5MzNhOGNiY2RmMWYwMzIzODAzYmJiZGFlZSAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9u
c191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
c3VnZ2VzdG5vbWluYXRpb25zX3VuaXR0ZXN0LnB5CkBAIC00NSwyMSArNDUsNDQgQEAgRGF0ZTog
ICBUaHUgU2VwIDE1IDE5OjU2OjIxIDIwMTEgKzAwMDAKIAogICAgIGdpdC1zdm4taWQ6IGh0dHA6
Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVua0A5NTIxOSAyNjhmNDVjYy1j
ZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKICIiIgotICAgIG1vY2tfc2FtZV9hdXRob3JfY29t
bWl0X21lc3NhZ2UgPSAiIiJWYWx1ZSBwcm9maWxlcyBjb2xsZWN0IG5vIGluZm9ybWF0aW9uIGZv
ciBnbG9iYWwgdmFyaWFibGVzCisgICAgbW9ja19zYW1lX2F1dGhvcl9jb21taXRfbWVzc2FnZSA9
ICIiIkF1dGhvcjogZnBpemxvQGFwcGxlLmNvbSA8ZnBpemxvQGFwcGxlLmNvbUAyNjhmNDVjYy1j
ZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmM+CitEYXRlOiAgIFRodSBTZXAgMTUgMTk6NTY6MjEg
MjAxMSArMDAwMAorCitWYWx1ZSBwcm9maWxlcyBjb2xsZWN0IG5vIGluZm9ybWF0aW9uIGZvciBn
bG9iYWwgdmFyaWFibGVzCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjgxNDMKIAotUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uIiIiCitSZXZpZXdlZCBieSBHZW9m
ZnJleSBHYXJlbi4KKworZ2l0LXN2bi1pZDogaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRv
cnkvd2Via2l0L3RydW5rQDk1MjE5IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJm
YworIiIiCisKKyAgICBkZWYgX21ha2Vfb3B0aW9ucyhzZWxmLCAqKmt3YXJncyk6CisgICAgICAg
IGRlZmF1bHRzID0geworICAgICAgICAgICAgJ2NvbW1pdHRlcl9taW5pbXVtJzogMTAsCisgICAg
ICAgICAgICAnbWF4X2NvbW1pdF9hZ2UnOiA5LAorICAgICAgICAgICAgJ3Jldmlld2VyX21pbmlt
dW0nOiA4MCwKKyAgICAgICAgICAgICdzaG93X2NvbW1pdHMnOiBGYWxzZSwKKyAgICAgICAgICAg
ICd2ZXJib3NlJzogRmFsc2UsCisgICAgICAgIH0KKyAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRp
b25zKCoqZGVmYXVsdHMpCisgICAgICAgIG9wdGlvbnMudXBkYXRlKCoqa3dhcmdzKQorICAgICAg
ICByZXR1cm4gb3B0aW9ucwogCiAgICAgZGVmIHRlc3RfcmVjZW50X2NvbW1pdF9tZXNzYWdlcyhz
ZWxmKToKKyAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQogICAgICAgICB0b29sID0gTW9ja1Rv
b2woKQogICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zID0gU3VnZ2VzdE5vbWluYXRpb25zKCkK
LSAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5faW5pdF9vcHRpb25zKG9wdGlvbnM9TW9ja09w
dGlvbnMocmV2aWV3ZXJfbWluaW11bT04MCwgY29tbWl0dGVyX21pbmltdW09MTAsIG1heF9jb21t
aXRfYWdlPTksIHNob3dfY29tbWl0cz1GYWxzZSwgdmVyYm9zZT1GYWxzZSkpCisgICAgICAgIHN1
Z2dlc3Rfbm9taW5hdGlvbnMuX2luaXRfb3B0aW9ucyhvcHRpb25zPXNlbGYuX21ha2Vfb3B0aW9u
cygpKQogICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zLmJpbmRfdG9fdG9vbCh0b29sKQogCiAg
ICAgICAgIHRvb2wuZXhlY3V0aXZlLnJ1bl9jb21tYW5kID0gbGFtYmRhIGNvbW1hbmQ6IHNlbGYu
bW9ja19naXRfb3V0cHV0CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdWdnZXN0X25v
bWluYXRpb25zLl9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKCkpLCBbc2VsZi5tb2NrX3NhbWVfYXV0
aG9yX2NvbW1pdF9tZXNzYWdlXSkKIAotICAgIG1vY2tfbm9uX2NvbW1pdHRlcl9jb21taXRfbWVz
c2FnZSA9ICIiIkxldCBUZXN0V2ViS2l0QVBJIHdvcmsgZm9yIGNocm9taXVtCisgICAgbW9ja19u
b25fY29tbWl0dGVyX2NvbW1pdF9tZXNzYWdlID0gIiIiCitBdXRob3I6IGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZ0AyNjhmNDVjYy1jZDA5LTA0MTAtYWIz
Yy1kNTI2OTFiNGRiZmM+CitEYXRlOiAgIFRodSBTZXAgMTUgMTQ6MDg6NDIgMjAxMSArMDAwMAor
CitMZXQgVGVzdFdlYktpdEFQSSB3b3JrIGZvciBjaHJvbWl1bQogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NzU2CiAKIFBhdGNoIGJ5IFhpYW56aHUgV2FuZyA8d2Fu
Z3hpYW56aHVAY2hyb21pdW0ub3JnPiBvbiAyMDExLTA5LTE1CkBAIC02NywxMSArOTAsMTUgQEAg
UmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KIAogU291cmNlL1dlYktpdC9jaHJvbWl1bToKIAotKiBX
ZWJLaXQuZ3lwOiIiIgorKiBXZWJLaXQuZ3lwOgorCitnaXQtc3ZuLWlkOiBodHRwOi8vc3ZuLndl
YmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmtAOTUxODggMjY4ZjQ1Y2MtY2QwOS0wNDEw
LWFiM2MtZDUyNjkxYjRkYmZjCisiIiIKIAogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgogICAg
ICAgICBleHBlY3RlZF9zdGRvdXQgPSAiUkVWSUVXRVI6IFhpYW56aHUgV2FuZyAod2FuZ3hpYW56
aHVAY2hyb21pdW0ub3JnKSBoYXMgODggcmV2aWV3ZWQgcGF0Y2hlc1xuIgorICAgICAgICBvcHRp
b25zID0gc2VsZi5fbWFrZV9vcHRpb25zKCkKICAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucyA9
IFN1Z2dlc3ROb21pbmF0aW9ucygpCi0gICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMuX2luaXRf
b3B0aW9ucyhvcHRpb25zPU1vY2tPcHRpb25zKHJldmlld2VyX21pbmltdW09ODAsIGNvbW1pdHRl
cl9taW5pbXVtPTEwLCBtYXhfY29tbWl0X2FnZT05LCBzaG93X2NvbW1pdHM9RmFsc2UsIHZlcmJv
c2U9RmFsc2UpKQorICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zLl9pbml0X29wdGlvbnMob3B0
aW9ucz1vcHRpb25zKQogICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zLl9yZWNlbnRfY29tbWl0
X21lc3NhZ2VzID0gbGFtYmRhOiBbc2VsZi5tb2NrX25vbl9jb21taXR0ZXJfY29tbWl0X21lc3Nh
Z2UgZm9yIF8gaW4gcmFuZ2UoODgpXQotICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1
dHMoc3VnZ2VzdF9ub21pbmF0aW9ucywgW10sIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRv
dXQsIG9wdGlvbnM9TW9ja09wdGlvbnMocmV2aWV3ZXJfbWluaW11bT04MCwgY29tbWl0dGVyX21p
bmltdW09MTAsIG1heF9jb21taXRfYWdlPTksIHNob3dfY29tbWl0cz1GYWxzZSwgdmVyYm9zZT1G
YWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhzdWdnZXN0X25vbWlu
YXRpb25zLCBbXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCwgb3B0aW9ucz1vcHRp
b25zKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200196</attachid>
            <date>2013-04-30 18:46:59 -0700</date>
            <delta_ts>2013-05-21 11:59:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-115285-20130430184613.patch</filename>
            <type>text/plain</type>
            <size>21705</size>
            <attacher name="Glenn Adams">glenn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NDE2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzUzMDI3OGZlNTY0ZGVlZGYwZWUyOTQ3NDM4ZDNmMGNj
YmFlNjEwYS4uNjgyYjI1YzI5YTZkOWY5MTZkNDQwNWY0Yjg1ZDE1MDJmMGViN2VmZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDEzLTA0LTMwICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CisKKyAgICAg
ICAgW3dlYmtpdHB5XSBzdWdnZXN0LW5vbWluYXRpb25zIGRvZXNuJ3QgY291bnQgYWxsIHF1YWxp
ZmllZCBwYXRjaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTUyODUKKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisg
ICAgICAgIEZpeCBjb21taXQgYW5hbHlzaXMgc28gdGhhdCBwYXRjaGVzIG1hZGUgYnkgYW4gZXhp
c3RpbmcgY29tbWl0dGVyIGFyZSBjb3VudGVkIHRvd2FyZHMgcmV2aWV3ZXIKKyAgICAgICAgbm9t
aW5hdGlvbi4gSW1wcm92ZSBjb21taXQgbG9nIHBhcnNpbmcuCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5OgorICAgICAgICAo
Q29tbWl0TG9nRXJyb3IpOgorICAgICAgICAoQ29tbWl0TG9nRXJyb3IuX19pbml0X18pOgorICAg
ICAgICAoQ29tbWl0TG9nTWlzc2luZ1Jldmlld2VyKToKKyAgICAgICAgKENvbW1pdExvZ01pc3Np
bmdSZXZpZXdlci5fX2luaXRfXyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMpOgorICAg
ICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9faW5pdF9fKToKKyAgICAgICAgKFN1Z2dlc3ROb21p
bmF0aW9ucy5fcmVjZW50X2NvbW1pdF9tZXNzYWdlcyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5h
dGlvbnMuX2F1dGhvcl9uYW1lX2Zyb21fZW1haWwpOgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRp
b25zLl9jb250cmlidXRvcl9mcm9tX2VtYWlsKToKKyAgICAgICAgKFN1Z2dlc3ROb21pbmF0aW9u
cy5fcGFyc2VfY29tbWl0X21lc3NhZ2UpOgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9j
b3VudF9jb21taXQpOgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9jb3VudF9yZWNlbnRf
cGF0Y2hlcyk6CisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMuX2NvbGxlY3Rfbm9taW5hdGlv
bnMpOgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9wcmludF9ub21pbmF0aW9ucyk6Cisg
ICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMuZXhlY3V0ZSk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9uc191bml0dGVzdC5weToKKyAg
ICAgICAgKF9tYWtlX29wdGlvbnMpOgorICAgICAgICAodGVzdF9yZWNlbnRfY29tbWl0X21lc3Nh
Z2VzKToKKyAgICAgICAgKHRlc3RfYmFzaWMpOgorCiAyMDEzLTA0LTMwICBDb21taXQgUXVldWUg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
NDkzMDkuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
c3VnZ2VzdG5vbWluYXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weQppbmRleCA4NDViNzgyNzA5NjUyMmQ1ZTEyZjUwYzlm
NjI3YjFlZTM1Y2U5ZDcwLi45MzU2NTQ5ZjU5ZTI1NTYxMGM1ZGM1MTgxMmQ5YzBlMmYzNWFkMmIz
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2Vz
dG5vbWluYXRpb25zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9zdWdnZXN0bm9taW5hdGlvbnMucHkKQEAgLTMyLDE1ICszMiwzMSBAQCBpbXBvcnQgcmUKIAog
ZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY2hhbmdlbG9nIGltcG9ydCBDaGFuZ2VMb2dF
bnRyeQogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1p
dHRlckxpc3QKLWZyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgc3RlcHMKIGZyb20gd2Via2l0cHku
dG9vbC5ncmFtbWFyIGltcG9ydCBqb2luX3dpdGhfc2VwYXJhdG9ycwogZnJvbSB3ZWJraXRweS50
b29sLm11bHRpY29tbWFuZHRvb2wgaW1wb3J0IENvbW1hbmQKIAogCitjbGFzcyBDb21taXRMb2dF
cnJvcihFeGNlcHRpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgRXhjZXB0
aW9uLl9faW5pdF9fKHNlbGYpCisKKworY2xhc3MgQ29tbWl0TG9nTWlzc2luZ1Jldmlld2VyKENv
bW1pdExvZ0Vycm9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIENvbW1pdExv
Z0Vycm9yLl9faW5pdF9fKHNlbGYpCisKKwogY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKENvbW1h
bmQpOgogICAgIG5hbWUgPSAic3VnZ2VzdC1ub21pbmF0aW9ucyIKICAgICBoZWxwX3RleHQgPSAi
U3VnZ2VzdCBjb250cmlidXRvcnMgZm9yIGNvbW1pdHRlci9yZXZpZXdlciBub21pbmF0aW9ucyIK
IAorICAgIF9sZWFkaW5nX2luZGVudF9yZWdleHAgPSByZS5jb21waWxlKHIiXlsgXXs0fSIsIHJl
Lk1VTFRJTElORSkKKyAgICBfcmV2aWV3ZWRfYnlfcmVnZXhwID0gcmUuY29tcGlsZShDaGFuZ2VM
b2dFbnRyeS5yZXZpZXdlZF9ieV9yZWdleHAsIHJlLk1VTFRJTElORSkKKyAgICBfcGF0Y2hfYnlf
cmVnZXhwID0gcmUuY29tcGlsZShyJ15QYXRjaCBieSAoP1A8bmFtZT4uKz8pXHMrPCg/UDxlbWFp
bD5bXjw+XSspPiBvbiAoP1A8ZGF0ZT5cZHs0fS1cZHsyfS1cZHsyfSkkJywgcmUuTVVMVElMSU5F
KQorICAgIF9jb21taXR0ZXJfcmVnZXhwID0gcmUuY29tcGlsZShyJ15BdXRob3I6ICg/UDxlbWFp
bD5cUyspXHMrPFtePl0rPiQnLCByZS5NVUxUSUxJTkUpCisgICAgX2RhdGVfcmVnZXhwID0gcmUu
Y29tcGlsZShyJ15EYXRlOiAgICg/UDxkYXRlPlxkezR9LVxkezJ9LVxkezJ9KSAoP1A8dGltZT5c
ZHsyfTpcZHsyfTpcZHsyfSkgW1wrXC1dXGR7NH0kJywgcmUuTVVMVElMSU5FKQorICAgIF9yZXZp
c2lvbl9yZWdleHAgPSByZS5jb21waWxlKHInXmdpdC1zdm4taWQ6IGh0dHA6Ly9zdm4ud2Via2l0
Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVua0AoP1A8c3ZuaWQ+XGQrKSAoP1A8Z2l0aWQ+WzAt
OWEtZlwtXXszNn0pJCcsIHJlLk1VTFRJTElORSkKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
ICAgICAgICAgb3B0aW9ucyA9IFsKICAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLWNvbW1pdHRl
ci1taW5pbXVtIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImNvbW1pdHRlcl9taW5pbXVtIiwgdHlw
ZT0iaW50IiwgZGVmYXVsdD0xMCwgaGVscD0iU3BlY2lmeSBtaW5pbXVtIHBhdGNoIGNvdW50IGZv
ciBDb21taXR0ZXIgbm9taW5hdGlvbnMuIiksCkBAIC00OCwxNCArNjQsMTAgQEAgY2xhc3MgU3Vn
Z2VzdE5vbWluYXRpb25zKENvbW1hbmQpOgogICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbWF4
LWNvbW1pdC1hZ2UiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0ibWF4X2NvbW1pdF9hZ2UiLCB0eXBl
PSJpbnQiLCBkZWZhdWx0PTksIGhlbHA9IlNwZWNpZnkgbWF4IGNvbW1pdCBhZ2UgdG8gY29uc2lk
ZXIgZm9yIG5vbWluYXRpb25zIChpbiBtb250aHMpLiIpLAogICAgICAgICAgICAgbWFrZV9vcHRp
b24oIi0tc2hvdy1jb21taXRzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ic2hvd19jb21t
aXRzIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iU2hvdyBjb21taXQgaGlzdG9yeSB3aXRoIG5vbWlu
YXRpb24gc3VnZ2VzdGlvbnMuIiksCiAgICAgICAgIF0KLQotICAgICAgICBDb21tYW5kLl9faW5p
dF9fKHNlbGYsIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgc3VwZXIoU3VnZ2VzdE5vbWluYXRp
b25zLCBzZWxmKS5fX2luaXRfXyhvcHRpb25zPW9wdGlvbnMpCiAgICAgICAgICMgRklYTUU6IFRo
aXMgc2hvdWxkIHByb2JhYmx5IGJlIG9uIHRoZSB0b29sIHNvbWV3aGVyZS4KICAgICAgICAgc2Vs
Zi5fY29tbWl0dGVyX2xpc3QgPSBDb21taXR0ZXJMaXN0KCkKIAotICAgIF9jb3VudGVyc19ieV9u
YW1lID0ge30KLSAgICBfY291bnRlcnNfYnlfZW1haWwgPSB7fQotCiAgICAgZGVmIF9pbml0X29w
dGlvbnMoc2VsZiwgb3B0aW9ucyk6CiAgICAgICAgIHNlbGYuY29tbWl0dGVyX21pbmltdW0gPSBv
cHRpb25zLmNvbW1pdHRlcl9taW5pbXVtCiAgICAgICAgIHNlbGYucmV2aWV3ZXJfbWluaW11bSA9
IG9wdGlvbnMucmV2aWV3ZXJfbWluaW11bQpAQCAtNjUsOTggKzc3LDEzMyBAQCBjbGFzcyBTdWdn
ZXN0Tm9taW5hdGlvbnMoQ29tbWFuZCk6CiAKICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBtb3Zl
IHRvIHNjbS5weQogICAgIGRlZiBfcmVjZW50X2NvbW1pdF9tZXNzYWdlcyhzZWxmKToKLSAgICAg
ICAgZ2l0X2xvZyA9IHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ2xv
ZycsICctLXNpbmNlPSIlcyBtb250aHMgYWdvIicgJSBzZWxmLm1heF9jb21taXRfYWdlXSkKLSAg
ICAgICAgbWF0Y2hfZ2l0X3N2bl9pZCA9IHJlLmNvbXBpbGUociJcblxuICAgIGdpdC1zdm4taWQ6
LipcbiIsIHJlLk1VTFRJTElORSkKLSAgICAgICAgbWF0Y2hfZ2V0X2xvZ19saW5lcyA9IHJlLmNv
bXBpbGUociJeXFMuKlxuIiwgcmUuTVVMVElMSU5FKQotICAgICAgICBtYXRjaF9sZWFkaW5nX2lu
ZGVudCA9IHJlLmNvbXBpbGUociJeWyBdezR9IiwgcmUuTVVMVElMSU5FKQotCi0gICAgICAgIG1l
c3NhZ2VzID0gcmUuc3BsaXQociJjb21taXQgXHd7NDB9IiwgZ2l0X2xvZylbMTpdICAjIElnbm9y
ZSB0aGUgZmlyc3QgbWVzc2FnZSB3aGljaCB3aWxsIGJlIGVtcHR5LgorICAgICAgICBnaXRfbG9n
ID0gc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2NvbW1hbmQoWydnaXQnLCAnbG9nJywgJy0tZGF0
ZT1pc28nLCAnLS1zaW5jZT0iJXMgbW9udGhzIGFnbyInICUgc2VsZi5tYXhfY29tbWl0X2FnZV0p
CisgICAgICAgIG1lc3NhZ2VzID0gcmUuc3BsaXQociJeY29tbWl0IFx3ezQwfSQiLCBnaXRfbG9n
LCBmbGFncz1yZS5NVUxUSUxJTkUpWzE6XSAgIyBJZ25vcmUgdGhlIGZpcnN0IG1lc3NhZ2Ugd2hp
Y2ggd2lsbCBiZSBlbXB0eS4KICAgICAgICAgZm9yIG1lc3NhZ2UgaW4gbWVzc2FnZXM6Ci0gICAg
ICAgICAgICAjIFJlbW92ZSBhbnkgbGluZXMgZnJvbSBnaXQgYW5kIHVuaW5kZW50IGFsbCB0aGUg
bGluZXMKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNoX2dpdF9zdm5faWQuc3Vibigi
IiwgbWVzc2FnZSkKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNoX2dldF9sb2dfbGlu
ZXMuc3VibigiIiwgbWVzc2FnZSkKLSAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNoX2xl
YWRpbmdfaW5kZW50LnN1Ym4oIiIsIG1lc3NhZ2UpCisgICAgICAgICAgICAjIFVuaW5kZW50IGFs
bCB0aGUgbGluZXMKKyAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IHNlbGYuX2xlYWRpbmdfaW5k
ZW50X3JlZ2V4cC5zdWJuKCIiLCBtZXNzYWdlKQogICAgICAgICAgICAgeWllbGQgbWVzc2FnZS5s
c3RyaXAoKSAgIyBSZW1vdmUgYW55IGxlYWRpbmcgbmV3bGluZXMgZnJvbSB0aGUgbG9nIG1lc3Nh
Z2UuCiAKLSAgICAjIGUuZy4gUGF0Y2ggYnkgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4g
b24gMjAxMS0wOS0xNQotICAgIHBhdGNoX2J5X3JlZ2V4cCA9IHInXlBhdGNoIGJ5ICg/UDxuYW1l
Pi4rPylccys8KD9QPGVtYWlsPltePD5dKyk+IG9uICg/UDxkYXRlPlxkezR9LVxkezJ9LVxkezJ9
KSQnCi0KLSAgICBkZWYgX2NvdW50X3JlY2VudF9wYXRjaGVzKHNlbGYpOgotICAgICAgICAjIFRo
aXMgZW50aXJlIGJsb2NrIGNvdWxkIGJlIHdyaXR0ZW4gYXMgYSBtYXAvcmVkdWNlIG92ZXIgdGhl
IG1lc3NhZ2VzLgotICAgICAgICBmb3IgbWVzc2FnZSBpbiBzZWxmLl9yZWNlbnRfY29tbWl0X21l
c3NhZ2VzKCk6Ci0gICAgICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgQ2hhbmdlTG9n
RW50cnkgdG8gZG8gdGhlIGVudGlyZSBwYXJzZSBpbnN0ZWFkCi0gICAgICAgICAgICAjIG9mIGdy
YWJiaW5nIGF0IGl0cyByZWdleHBzLgotICAgICAgICAgICAgZGF0ZWxpbmVfbWF0Y2ggPSByZS5t
YXRjaChDaGFuZ2VMb2dFbnRyeS5kYXRlX2xpbmVfcmVnZXhwLCBtZXNzYWdlLCByZS5NVUxUSUxJ
TkUpCi0gICAgICAgICAgICBpZiBub3QgZGF0ZWxpbmVfbWF0Y2g6Ci0gICAgICAgICAgICAgICAg
IyBNb2Rlcm4gY29tbWl0IG1lc3NhZ2VzIGRvbid0IGp1c3QgZHVtcCB0aGUgQ2hhbmdlTG9nIGVu
dHJ5LCBidXQgcmF0aGVyCi0gICAgICAgICAgICAgICAgIyBoYXZlIGEgc3BlY2lhbCBQYXRjaCBi
eSBsaW5lIGZvciBub24tY29tbWl0dGVycy4KLSAgICAgICAgICAgICAgICBkYXRlbGluZV9tYXRj
aCA9IHJlLnNlYXJjaChzZWxmLnBhdGNoX2J5X3JlZ2V4cCwgbWVzc2FnZSwgcmUuTVVMVElMSU5F
KQotICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRlbGluZV9tYXRjaDoKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKLQotICAgICAgICAgICAgYXV0aG9yX2VtYWlsID0gZGF0ZWxpbmVfbWF0
Y2guZ3JvdXAoImVtYWlsIikKLSAgICAgICAgICAgIGlmIG5vdCBhdXRob3JfZW1haWw6Ci0gICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICBkZWYgX2F1dGhvcl9uYW1lX2Zyb21fZW1haWwoc2Vs
ZiwgZW1haWwpOgorICAgICAgICBjb250cmlidXRvciA9IHNlbGYuX2NvbW1pdHRlcl9saXN0LmNv
bnRyaWJ1dG9yX2J5X2VtYWlsKGVtYWlsKQorICAgICAgICByZXR1cm4gY29udHJpYnV0b3IuZnVs
bF9uYW1lIGlmIGNvbnRyaWJ1dG9yIGVsc2UgTm9uZQorCisgICAgZGVmIF9jb250cmlidXRvcl9m
cm9tX2VtYWlsKHNlbGYsIGVtYWlsKToKKyAgICAgICAgY29udHJpYnV0b3IgPSBzZWxmLl9jb21t
aXR0ZXJfbGlzdC5jb250cmlidXRvcl9ieV9lbWFpbChlbWFpbCkKKyAgICAgICAgcmV0dXJuIGNv
bnRyaWJ1dG9yIGlmIGNvbnRyaWJ1dG9yIGVsc2UgTm9uZQorCisgICAgZGVmIF9wYXJzZV9jb21t
aXRfbWVzc2FnZShzZWxmLCBjb21taXRfbWVzc2FnZSk6CisgICAgICAgIGNvbW1pdHRlcl9tYXRj
aCA9IHNlbGYuX2NvbW1pdHRlcl9yZWdleHAuc2VhcmNoKGNvbW1pdF9tZXNzYWdlKQorICAgICAg
ICBpZiBub3QgY29tbWl0dGVyX21hdGNoOgorICAgICAgICAgICAgcmFpc2UgQ29tbWl0TG9nRXJy
b3IKKworICAgICAgICBjb21taXR0ZXJfZW1haWwgPSBjb21taXR0ZXJfbWF0Y2guZ3JvdXAoJ2Vt
YWlsJykKKyAgICAgICAgaWYgbm90IGNvbW1pdHRlcl9lbWFpbDoKKyAgICAgICAgICAgIHJhaXNl
IENvbW1pdExvZ0Vycm9yCisKKyAgICAgICAgY29tbWl0dGVyID0gc2VsZi5fY29udHJpYnV0b3Jf
ZnJvbV9lbWFpbChjb21taXR0ZXJfZW1haWwpCisgICAgICAgIGlmIG5vdCBjb21taXR0ZXI6Cisg
ICAgICAgICAgICByYWlzZSBDb21taXRMb2dFcnJvcgorCisgICAgICAgIGNvbW1pdF9kYXRlX21h
dGNoID0gc2VsZi5fZGF0ZV9yZWdleHAuc2VhcmNoKGNvbW1pdF9tZXNzYWdlKQorICAgICAgICBp
ZiBub3QgY29tbWl0X2RhdGVfbWF0Y2g6CisgICAgICAgICAgICByYWlzZSBDb21taXRMb2dFcnJv
cgorICAgICAgICBjb21taXRfZGF0ZSA9IGNvbW1pdF9kYXRlX21hdGNoLmdyb3VwKCdkYXRlJykK
KworICAgICAgICByZXZpc2lvbl9tYXRjaCA9IHNlbGYuX3JldmlzaW9uX3JlZ2V4cC5zZWFyY2go
Y29tbWl0X21lc3NhZ2UpCisgICAgICAgIGlmIG5vdCByZXZpc2lvbl9tYXRjaDoKKyAgICAgICAg
ICAgIHJhaXNlIENvbW1pdExvZ0Vycm9yCisgICAgICAgIHJldmlzaW9uID0gcmV2aXNpb25fbWF0
Y2guZ3JvdXAoJ3N2bmlkJykKKworICAgICAgICAjIExvb2sgZm9yICJQYXRjaCBieSIgbGluZSBm
aXJzdCwgd2hpY2ggaXMgdXNlZCBmb3Igbm9uLWNvbW1pdHRlciBjb250cmlidXRvcnM7CisgICAg
ICAgICMgb3RoZXJ3aXNlLCB1c2UgY29tbWl0dGVyIGluZm8gZGV0ZXJtaW5lZCBhYm92ZS4KKyAg
ICAgICAgYXV0aG9yX21hdGNoID0gc2VsZi5fcGF0Y2hfYnlfcmVnZXhwLnNlYXJjaChjb21taXRf
bWVzc2FnZSkKKyAgICAgICAgaWYgbm90IGF1dGhvcl9tYXRjaDoKKyAgICAgICAgICAgIGF1dGhv
cl9tYXRjaCA9IGNvbW1pdHRlcl9tYXRjaAorCisgICAgICAgIGF1dGhvcl9lbWFpbCA9IGF1dGhv
cl9tYXRjaC5ncm91cCgnZW1haWwnKQorICAgICAgICBpZiBub3QgYXV0aG9yX2VtYWlsOgorICAg
ICAgICAgICAgYXV0aG9yX2VtYWlsID0gY29tbWl0dGVyX2VtYWlsCisKKyAgICAgICAgYXV0aG9y
X25hbWUgPSBhdXRob3JfbWF0Y2guZ3JvdXAoJ25hbWUnKSBpZiAnbmFtZScgaW4gYXV0aG9yX21h
dGNoLmdyb3VwZGljdCgpIGVsc2UgTm9uZQorICAgICAgICBpZiBub3QgYXV0aG9yX25hbWU6Cisg
ICAgICAgICAgICBhdXRob3JfbmFtZSA9IHNlbGYuX2F1dGhvcl9uYW1lX2Zyb21fZW1haWwoYXV0
aG9yX2VtYWlsKQorICAgICAgICBpZiBub3QgYXV0aG9yX25hbWU6CisgICAgICAgICAgICByYWlz
ZSBDb21taXRMb2dFcnJvcgorCisgICAgICAgIGNvbnRyaWJ1dG9yID0gc2VsZi5fY29udHJpYnV0
b3JfZnJvbV9lbWFpbChhdXRob3JfZW1haWwpCisgICAgICAgIGlmIGNvbnRyaWJ1dG9yIGFuZCBh
dXRob3JfbmFtZSAhPSBjb250cmlidXRvci5mdWxsX25hbWUgYW5kIGNvbnRyaWJ1dG9yLmZ1bGxf
bmFtZToKKyAgICAgICAgICAgIGF1dGhvcl9uYW1lID0gY29udHJpYnV0b3IuZnVsbF9uYW1lCisK
KyAgICAgICAgcmV2aWV3ZXJfbWF0Y2ggPSBzZWxmLl9yZXZpZXdlZF9ieV9yZWdleHAuc2VhcmNo
KGNvbW1pdF9tZXNzYWdlKQorICAgICAgICBpZiBub3QgcmV2aWV3ZXJfbWF0Y2g6CisgICAgICAg
ICAgICByYWlzZSBDb21taXRMb2dNaXNzaW5nUmV2aWV3ZXIKKyAgICAgICAgcmV2aWV3ZXJzID0g
cmV2aWV3ZXJfbWF0Y2guZ3JvdXAoJ3Jldmlld2VyJykKKworICAgICAgICByZXR1cm4geworICAg
ICAgICAgICAgJ2NvbW1pdHRlcic6IGNvbW1pdHRlciwKKyAgICAgICAgICAgICdjb21taXRfZGF0
ZSc6IGNvbW1pdF9kYXRlLAorICAgICAgICAgICAgJ3JldmlzaW9uJzogcmV2aXNpb24sCisgICAg
ICAgICAgICAnYXV0aG9yX2VtYWlsJzogYXV0aG9yX2VtYWlsLAorICAgICAgICAgICAgJ2F1dGhv
cl9uYW1lJzogYXV0aG9yX25hbWUsCisgICAgICAgICAgICAnY29udHJpYnV0b3InOiBjb250cmli
dXRvciwKKyAgICAgICAgICAgICdyZXZpZXdlcnMnOiByZXZpZXdlcnMsCisgICAgICAgIH0KKwor
ICAgIGRlZiBfY291bnRfY29tbWl0KHNlbGYsIGNvbW1pdCwgYW5hbHlzaXMpOgorICAgICAgICBh
dXRob3JfbmFtZSA9IGNvbW1pdFsnYXV0aG9yX25hbWUnXQorICAgICAgICBhdXRob3JfZW1haWwg
PSBjb21taXRbJ2F1dGhvcl9lbWFpbCddCisgICAgICAgIHJldmlzaW9uID0gY29tbWl0WydyZXZp
c2lvbiddCisgICAgICAgIGNvbW1pdF9kYXRlID0gY29tbWl0Wydjb21taXRfZGF0ZSddCisKKyAg
ICAgICAgIyBTZWUgaWYgd2UgYWxyZWFkeSBoYXZlIGEgY29udHJpYnV0b3Igd2l0aCB0aGlzIGF1
dGhvcl9uYW1lIG9yIGVtYWlsCisgICAgICAgIGNvdW50ZXJfYnlfbmFtZSA9IGFuYWx5c2lzWydj
b3VudGVyc19ieV9uYW1lJ10uZ2V0KGF1dGhvcl9uYW1lKQorICAgICAgICBjb3VudGVyX2J5X2Vt
YWlsID0gYW5hbHlzaXNbJ2NvdW50ZXJzX2J5X2VtYWlsJ10uZ2V0KGF1dGhvcl9lbWFpbCkKKyAg
ICAgICAgaWYgY291bnRlcl9ieV9uYW1lOgorICAgICAgICAgICAgaWYgY291bnRlcl9ieV9lbWFp
bDoKKyAgICAgICAgICAgICAgICBpZiBjb3VudGVyX2J5X25hbWUgIT0gY291bnRlcl9ieV9lbWFp
bDoKKyAgICAgICAgICAgICAgICAgICAgIyBNZXJnZSB0aGVzZSB0d28gY291bnRlcnMgIFRoaXMg
aXMgZm9yIHRoZSBjYXNlIHdoZXJlIHdlIGhhZAorICAgICAgICAgICAgICAgICAgICAjIEpvaG4g
U21pdGggKGpzbWl0aEBnbWFpbC5jb20pIGFuZCBKb25hdGhhbiBTbWl0aCAoanNtaXRoQGFwcGxl
LmNvbSkKKyAgICAgICAgICAgICAgICAgICAgIyBhbmQganVzdCBmb3VuZCBhIEpvaG4gU21pdGgg
KGpzbWl0aEBhcHBsZS5jb20pLiAgTm93IHdlIGtub3cgdGhlCisgICAgICAgICAgICAgICAgICAg
ICMgdHdvIG5hbWVzIGFyZSB0aGUgc2FtZSBwZXJzb24KKyAgICAgICAgICAgICAgICAgICAgY291
bnRlcl9ieV9uYW1lWyduYW1lcyddIHw9IGNvdW50ZXJfYnlfZW1haWxbJ25hbWVzJ10KKyAgICAg
ICAgICAgICAgICAgICAgY291bnRlcl9ieV9uYW1lWydlbWFpbHMnXSB8PSBjb3VudGVyX2J5X2Vt
YWlsWydlbWFpbHMnXQorICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X25hbWVbJ2NvdW50
J10gKz0gY291bnRlcl9ieV9lbWFpbC5nZXQoJ2NvdW50JywgMCkKKyAgICAgICAgICAgICAgICAg
ICAgYW5hbHlzaXNbJ2NvdW50ZXJzX2J5X2VtYWlsJ11bYXV0aG9yX2VtYWlsXSA9IGNvdW50ZXJf
YnlfbmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIEFkZCBlbWFpbCB0
byB0aGUgZXhpc3RpbmcgY291bnRlcgorICAgICAgICAgICAgICAgIGFuYWx5c2lzWydjb3VudGVy
c19ieV9lbWFpbCddW2F1dGhvcl9lbWFpbF0gPSBjb3VudGVyX2J5X25hbWUKKyAgICAgICAgICAg
ICAgICBjb3VudGVyX2J5X25hbWVbJ2VtYWlscyddIHw9IHNldChbYXV0aG9yX2VtYWlsXSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGNvdW50ZXJfYnlfZW1haWw6CisgICAgICAgICAg
ICAgICAgIyBBZGQgbmFtZSB0byB0aGUgZXhpc3RpbmcgY291bnRlcgorICAgICAgICAgICAgICAg
IGFuYWx5c2lzWydjb3VudGVyc19ieV9uYW1lJ11bYXV0aG9yX25hbWVdID0gY291bnRlcl9ieV9l
bWFpbAorICAgICAgICAgICAgICAgIGNvdW50ZXJfYnlfZW1haWxbJ25hbWVzJ10gfD0gc2V0KFth
dXRob3JfbmFtZV0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgQ3JlYXRl
IG5ldyBjb3VudGVyCisgICAgICAgICAgICAgICAgbmV3X2NvdW50ZXIgPSB7J25hbWVzJzogc2V0
KFthdXRob3JfbmFtZV0pLCAnZW1haWxzJzogc2V0KFthdXRob3JfZW1haWxdKSwgJ2xhdGVzdF9u
YW1lJzogYXV0aG9yX25hbWUsICdsYXRlc3RfZW1haWwnOiBhdXRob3JfZW1haWwsICdjb21taXRz
JzogIiJ9CisgICAgICAgICAgICAgICAgYW5hbHlzaXNbJ2NvdW50ZXJzX2J5X25hbWUnXVthdXRo
b3JfbmFtZV0gPSBuZXdfY291bnRlcgorICAgICAgICAgICAgICAgIGFuYWx5c2lzWydjb3VudGVy
c19ieV9lbWFpbCddW2F1dGhvcl9lbWFpbF0gPSBuZXdfY291bnRlcgogCi0gICAgICAgICAgICAj
IFdlIG9ubHkgY2FyZSBhYm91dCByZXZpZXdlZCBwYXRjaGVzLCBzbyBtYWtlIHN1cmUgaXQgaGFz
IGEgdmFsaWQgcmV2aWV3ZXIgbGluZS4KLSAgICAgICAgICAgIHJldmlld2VyX21hdGNoID0gcmUu
c2VhcmNoKENoYW5nZUxvZ0VudHJ5LnJldmlld2VkX2J5X3JlZ2V4cCwgbWVzc2FnZSwgcmUuTVVM
VElMSU5FKQotICAgICAgICAgICAgIyBXZSBtaWdodCBhbHNvIHdhbnQgdG8gdmFsaWRhdGUgdGhl
IHJldmlld2VyIG5hbWUgYWdhaW5zdCB0aGUgY29tbWl0dGVyIGxpc3QuCi0gICAgICAgICAgICBp
ZiBub3QgcmV2aWV3ZXJfbWF0Y2ggb3Igbm90IHJldmlld2VyX21hdGNoLmdyb3VwKCJyZXZpZXdl
ciIpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGFzc2VydChhbmFseXNpc1sn
Y291bnRlcnNfYnlfbmFtZSddW2F1dGhvcl9uYW1lXSA9PSBhbmFseXNpc1snY291bnRlcnNfYnlf
ZW1haWwnXVthdXRob3JfZW1haWxdKQorICAgICAgICBjb3VudGVyID0gYW5hbHlzaXNbJ2NvdW50
ZXJzX2J5X25hbWUnXVthdXRob3JfbmFtZV0KKyAgICAgICAgY291bnRlclsnY291bnQnXSA9IGNv
dW50ZXIuZ2V0KCdjb3VudCcsIDApICsgMQogCi0gICAgICAgICAgICBhdXRob3JfbmFtZSA9IGRh
dGVsaW5lX21hdGNoLmdyb3VwKCJuYW1lIikKLSAgICAgICAgICAgIGlmIG5vdCBhdXRob3JfbmFt
ZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiByZXZpc2lvbi5pc2RpZ2l0
KCk6CisgICAgICAgICAgICByZXZpc2lvbiA9ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8iICsgcmV2aXNpb24KKyAgICAgICAgY291bnRlclsnY29tbWl0cyddICs9ICIgIGNvbW1p
dDogJXMgb24gJXMgYnkgJXMgKCVzKVxuIiAlIChyZXZpc2lvbiwgY29tbWl0X2RhdGUsIGF1dGhv
cl9uYW1lLCBhdXRob3JfZW1haWwpCiAKLSAgICAgICAgICAgIGlmIHJlLnNlYXJjaCgiKFteYS16
QS1aXWFuZFteYS16QS1aXSl8KCwpfChAKSIsIGF1dGhvcl9uYW1lKToKLSAgICAgICAgICAgICAg
ICAjIFRoaXMgZW50cnkgc2VlbXMgdG8gaGF2ZSBtdWx0aXBsZSByZXZpZXdlcnMsIG9yIGludmFs
aWQgY2hhcmFjdGVycywgc28gcmVqZWN0IGl0LgorICAgIGRlZiBfY291bnRfcmVjZW50X3BhdGNo
ZXMoc2VsZik6CisgICAgICAgIGFuYWx5c2lzID0geworICAgICAgICAgICAgJ2NvdW50ZXJzX2J5
X25hbWUnOiB7fSwKKyAgICAgICAgICAgICdjb3VudGVyc19ieV9lbWFpbCc6IHt9LAorICAgICAg
ICB9CisgICAgICAgIGZvciBjb21taXRfbWVzc2FnZSBpbiBzZWxmLl9yZWNlbnRfY29tbWl0X21l
c3NhZ2VzKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5fY291bnRf
Y29tbWl0KHNlbGYuX3BhcnNlX2NvbW1pdF9tZXNzYWdlKGNvbW1pdF9tZXNzYWdlKSwgYW5hbHlz
aXMpCisgICAgICAgICAgICBleGNlcHQgQ29tbWl0TG9nRXJyb3IsIGV4Y2VwdGlvbjoKICAgICAg
ICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBzdm5faWRfbWF0Y2ggPSByZS5zZWFy
Y2goQ2hhbmdlTG9nRW50cnkuc3ZuX2lkX3JlZ2V4cCwgbWVzc2FnZSwgcmUuTVVMVElMSU5FKQot
ICAgICAgICAgICAgaWYgc3ZuX2lkX21hdGNoOgotICAgICAgICAgICAgICAgIHN2bl9pZCA9IHN2
bl9pZF9tYXRjaC5ncm91cCgic3ZuaWQiKQotICAgICAgICAgICAgaWYgbm90IHN2bl9pZF9tYXRj
aCBvciBub3Qgc3ZuX2lkOgotICAgICAgICAgICAgICAgIHN2bl9pZCA9ICJ1bmtub3duIgotICAg
ICAgICAgICAgY29tbWl0X2RhdGUgPSBkYXRlbGluZV9tYXRjaC5ncm91cCgiZGF0ZSIpCi0KLSAg
ICAgICAgICAgICMgU2VlIGlmIHdlIGFscmVhZHkgaGF2ZSBhIGNvbnRyaWJ1dG9yIHdpdGggdGhp
cyBuYW1lIG9yIGVtYWlsCi0gICAgICAgICAgICBjb3VudGVyX2J5X25hbWUgPSBzZWxmLl9jb3Vu
dGVyc19ieV9uYW1lLmdldChhdXRob3JfbmFtZSkKLSAgICAgICAgICAgIGNvdW50ZXJfYnlfZW1h
aWwgPSBzZWxmLl9jb3VudGVyc19ieV9lbWFpbC5nZXQoYXV0aG9yX2VtYWlsKQotICAgICAgICAg
ICAgaWYgY291bnRlcl9ieV9uYW1lOgotICAgICAgICAgICAgICAgIGlmIGNvdW50ZXJfYnlfZW1h
aWw6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGNvdW50ZXJfYnlfbmFtZSAhPSBjb3VudGVyX2J5
X2VtYWlsOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBNZXJnZSB0aGVzZSB0d28gY291bnRl
cnMgIFRoaXMgaXMgZm9yIHRoZSBjYXNlIHdoZXJlIHdlIGhhZAotICAgICAgICAgICAgICAgICAg
ICAgICAgIyBKb2huIFNtaXRoIChqc21pdGhAZ21haWwuY29tKSBhbmQgSm9uYXRoYW4gU21pdGgg
KGpzbWl0aEBhcHBsZS5jb20pCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCBqdXN0IGZv
dW5kIGEgSm9obiBTbWl0aCAoanNtaXRoQGFwcGxlLmNvbSkuICBOb3cgd2Uga25vdyB0aGUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICMgdHdvIG5hbWVzIGFyZSB0aGUgc2FtZSBwZXJzb24KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFtZVsnbmFtZXMnXSB8PSBjb3VudGVy
X2J5X2VtYWlsWyduYW1lcyddCi0gICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X25h
bWVbJ2VtYWlscyddIHw9IGNvdW50ZXJfYnlfZW1haWxbJ2VtYWlscyddCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb3VudGVyX2J5X25hbWVbJ2NvdW50J10gKz0gY291bnRlcl9ieV9lbWFpbC5n
ZXQoJ2NvdW50JywgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvdW50ZXJzX2J5
X2VtYWlsW2F1dGhvcl9lbWFpbF0gPSBjb3VudGVyX2J5X25hbWUKLSAgICAgICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgICAgICAjIEFkZCBlbWFpbCB0byB0aGUgZXhpc3RpbmcgY291
bnRlcgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3VudGVyc19ieV9lbWFpbFthdXRob3Jf
ZW1haWxdID0gY291bnRlcl9ieV9uYW1lCi0gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfYnlf
bmFtZVsnZW1haWxzJ10gfD0gc2V0KFthdXRob3JfZW1haWxdKQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICBpZiBjb3VudGVyX2J5X2VtYWlsOgotICAgICAgICAgICAgICAgICAg
ICAjIEFkZCBuYW1lIHRvIHRoZSBleGlzdGluZyBjb3VudGVyCi0gICAgICAgICAgICAgICAgICAg
IHNlbGYuX2NvdW50ZXJzX2J5X25hbWVbYXV0aG9yX25hbWVdID0gY291bnRlcl9ieV9lbWFpbAot
ICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X2VtYWlsWyduYW1lcyddIHw9IHNldChbYXV0
aG9yX25hbWVdKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMg
Q3JlYXRlIG5ldyBjb3VudGVyCi0gICAgICAgICAgICAgICAgICAgIG5ld19jb3VudGVyID0geydu
YW1lcyc6IHNldChbYXV0aG9yX25hbWVdKSwgJ2VtYWlscyc6IHNldChbYXV0aG9yX2VtYWlsXSks
ICdsYXRlc3RfbmFtZSc6IGF1dGhvcl9uYW1lLCAnbGF0ZXN0X2VtYWlsJzogYXV0aG9yX2VtYWls
LCAnY29tbWl0cyc6ICIifQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3VudGVyc19ieV9u
YW1lW2F1dGhvcl9uYW1lXSA9IG5ld19jb3VudGVyCi0gICAgICAgICAgICAgICAgICAgIHNlbGYu
X2NvdW50ZXJzX2J5X2VtYWlsW2F1dGhvcl9lbWFpbF0gPSBuZXdfY291bnRlcgotCi0gICAgICAg
ICAgICBhc3NlcnQoc2VsZi5fY291bnRlcnNfYnlfbmFtZVthdXRob3JfbmFtZV0gPT0gc2VsZi5f
Y291bnRlcnNfYnlfZW1haWxbYXV0aG9yX2VtYWlsXSkKLSAgICAgICAgICAgIGNvdW50ZXIgPSBz
ZWxmLl9jb3VudGVyc19ieV9uYW1lW2F1dGhvcl9uYW1lXQotICAgICAgICAgICAgY291bnRlclsn
Y291bnQnXSA9IGNvdW50ZXIuZ2V0KCdjb3VudCcsIDApICsgMQotCi0gICAgICAgICAgICBpZiBz
dm5faWQuaXNkaWdpdCgpOgotICAgICAgICAgICAgICAgIHN2bl9pZCA9ICJodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8iICsgc3ZuX2lkCi0gICAgICAgICAgICBjb3VudGVyWydjb21t
aXRzJ10gKz0gIiAgY29tbWl0OiAlcyBvbiAlcyBieSAlcyAoJXMpXG4iICUgKHN2bl9pZCwgY29t
bWl0X2RhdGUsIGF1dGhvcl9uYW1lLCBhdXRob3JfZW1haWwpCi0KLSAgICAgICAgcmV0dXJuIHNl
bGYuX2NvdW50ZXJzX2J5X2VtYWlsCisgICAgICAgIHJldHVybiBhbmFseXNpc1snY291bnRlcnNf
YnlfZW1haWwnXQogCiAgICAgZGVmIF9jb2xsZWN0X25vbWluYXRpb25zKHNlbGYsIGNvdW50ZXJz
X2J5X2VtYWlsKToKICAgICAgICAgbm9taW5hdGlvbnMgPSBbXQpAQCAtMTcyLDcgKzIxOSw3IEBA
IGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKIAogICAgICAgICAgICAgaWYgcGF0
Y2hfY291bnQgPj0gc2VsZi5jb21taXR0ZXJfbWluaW11bSBhbmQgKG5vdCBjb250cmlidXRvciBv
ciBub3QgY29udHJpYnV0b3IuY2FuX2NvbW1pdCk6CiAgICAgICAgICAgICAgICAgcm9sZXMuYXBw
ZW5kKCJjb21taXR0ZXIiKQotICAgICAgICAgICAgaWYgcGF0Y2hfY291bnQgPj0gc2VsZi5yZXZp
ZXdlcl9taW5pbXVtICBhbmQgKG5vdCBjb250cmlidXRvciBvciBub3QgY29udHJpYnV0b3IuY2Fu
X3Jldmlldyk6CisgICAgICAgICAgICBpZiBwYXRjaF9jb3VudCA+PSBzZWxmLnJldmlld2VyX21p
bmltdW0gYW5kIGNvbnRyaWJ1dG9yIGFuZCBjb250cmlidXRvci5jYW5fY29tbWl0IGFuZCBub3Qg
Y29udHJpYnV0b3IuY2FuX3JldmlldzoKICAgICAgICAgICAgICAgICByb2xlcy5hcHBlbmQoInJl
dmlld2VyIikKICAgICAgICAgICAgIGlmIHJvbGVzOgogICAgICAgICAgICAgICAgIG5vbWluYXRp
b25zLmFwcGVuZCh7CkBAIC0xODMsNyArMjMwLDcgQEAgY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25z
KENvbW1hbmQpOgogICAgICAgICAgICAgICAgIH0pCiAgICAgICAgIHJldHVybiBub21pbmF0aW9u
cwogCi0gICAgZGVmIF9wcmludF9ub21pbmF0aW9ucyhzZWxmLCBub21pbmF0aW9ucyk6CisgICAg
ZGVmIF9wcmludF9ub21pbmF0aW9ucyhzZWxmLCBub21pbmF0aW9ucywgY291bnRlcnNfYnlfZW1h
aWwpOgogICAgICAgICBkZWYgbm9taW5hdGlvbl9jbXAoYV9ub21pbmF0aW9uLCBiX25vbWluYXRp
b24pOgogICAgICAgICAgICAgcm9sZXNfcmVzdWx0ID0gY21wKGFfbm9taW5hdGlvblsncm9sZXMn
XSwgYl9ub21pbmF0aW9uWydyb2xlcyddKQogICAgICAgICAgICAgaWYgcm9sZXNfcmVzdWx0OgpA
QCAtMTk3LDcgKzI0NCw3IEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKICAg
ICAgICAgICAgICMgVGhpcyBpcyBhIGxpdHRsZSBiaXQgb2YgYSBoYWNrLCBidXQgaXRzIGNvbnZp
ZW5lbnQgdG8ganVzdCBwYXNzIHRoZSBub21pbmF0aW9uIGRpY3Rpb25hcnkgdG8gdGhlIGZvcm1h
dGluZyBvcGVyYXRvci4KICAgICAgICAgICAgIG5vbWluYXRpb25bJ3JvbGVzX3N0cmluZyddID0g
am9pbl93aXRoX3NlcGFyYXRvcnMobm9taW5hdGlvblsncm9sZXMnXSkudXBwZXIoKQogICAgICAg
ICAgICAgcHJpbnQgIiUocm9sZXNfc3RyaW5nKXM6ICUoYXV0aG9yX25hbWUpcyAoJShhdXRob3Jf
ZW1haWwpcykgaGFzICUocGF0Y2hfY291bnQpcyByZXZpZXdlZCBwYXRjaGVzIiAlIG5vbWluYXRp
b24KLSAgICAgICAgICAgIGNvdW50ZXIgPSBzZWxmLl9jb3VudGVyc19ieV9lbWFpbFtub21pbmF0
aW9uWydhdXRob3JfZW1haWwnXV0KKyAgICAgICAgICAgIGNvdW50ZXIgPSBjb3VudGVyc19ieV9l
bWFpbFtub21pbmF0aW9uWydhdXRob3JfZW1haWwnXV0KIAogICAgICAgICAgICAgaWYgc2VsZi5z
aG93X2NvbW1pdHM6CiAgICAgICAgICAgICAgICAgcHJpbnQgY291bnRlclsnY29tbWl0cyddCkBA
IC0yMzgsMTAgKzI4NSw5IEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhDb21tYW5kKToKICAg
ICAgICAgc2VsZi5faW5pdF9vcHRpb25zKG9wdGlvbnMpCiAgICAgICAgIHBhdGNoX2NvdW50cyA9
IHNlbGYuX2NvdW50X3JlY2VudF9wYXRjaGVzKCkKICAgICAgICAgbm9taW5hdGlvbnMgPSBzZWxm
Ll9jb2xsZWN0X25vbWluYXRpb25zKHBhdGNoX2NvdW50cykKLSAgICAgICAgc2VsZi5fcHJpbnRf
bm9taW5hdGlvbnMobm9taW5hdGlvbnMpCisgICAgICAgIHNlbGYuX3ByaW50X25vbWluYXRpb25z
KG5vbWluYXRpb25zLCBwYXRjaF9jb3VudHMpCiAgICAgICAgIGlmIHNlbGYudmVyYm9zZToKICAg
ICAgICAgICAgIHNlbGYuX3ByaW50X2NvdW50cyhwYXRjaF9jb3VudHMpCiAKLQogaWYgX19uYW1l
X18gPT0gIl9fbWFpbl9fIjoKICAgICBTdWdnZXN0Tm9taW5hdGlvbnMoKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9uc191
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0
bm9taW5hdGlvbnNfdW5pdHRlc3QucHkKaW5kZXggODhiZTI1MzAzOTU5MjNlYjY3ZTk2ZTQ4NTA4
M2M5MzhlNmMzMTcxYy4uNjMwNTRjNTE2M2YzNjQ3YWE1OTdmYTM5MTZiNjAwZjc3OWI4NWU3MyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Ru
b21pbmF0aW9uc191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zX3VuaXR0ZXN0LnB5CkBAIC0zNiw3ICszNiw3IEBA
IGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9uc1Rlc3QoQ29tbWFuZHNUZXN0KToKIAogICAgIG1vY2tf
Z2l0X291dHB1dCA9ICIiImNvbW1pdCA2MDgzMWRkZTViZWIyMmYzNWFlZjMwNWE4N2ZjYTdiNWYy
ODRjNjk4CiBBdXRob3I6IGZwaXpsb0BhcHBsZS5jb20gPGZwaXpsb0BhcHBsZS5jb21AMjY4ZjQ1
Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjPgotRGF0ZTogICBUaHUgU2VwIDE1IDE5OjU2
OjIxIDIwMTEgKzAwMDAKK0RhdGU6ICAgMjAxMS0wOS0xNSAxOTo1NjoyMSArMDAwMAogCiAgICAg
VmFsdWUgcHJvZmlsZXMgY29sbGVjdCBubyBpbmZvcm1hdGlvbiBmb3IgZ2xvYmFsIHZhcmlhYmxl
cwogICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODE0MwpAQCAt
NDUsMjEgKzQ1LDQzIEBAIERhdGU6ICAgVGh1IFNlcCAxNSAxOTo1NjoyMSAyMDExICswMDAwCiAK
ICAgICBnaXQtc3ZuLWlkOiBodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQv
dHJ1bmtAOTUyMTkgMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCiAiIiIKLSAg
ICBtb2NrX3NhbWVfYXV0aG9yX2NvbW1pdF9tZXNzYWdlID0gIiIiVmFsdWUgcHJvZmlsZXMgY29s
bGVjdCBubyBpbmZvcm1hdGlvbiBmb3IgZ2xvYmFsIHZhcmlhYmxlcworICAgIG1vY2tfc2FtZV9h
dXRob3JfY29tbWl0X21lc3NhZ2UgPSAiIiJBdXRob3I6IGZwaXpsb0BhcHBsZS5jb20gPGZwaXps
b0BhcHBsZS5jb21AMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjPgorRGF0ZTog
ICAyMDExLTA5LTE1IDE5OjU2OjIxICswMDAwCisKK1ZhbHVlIHByb2ZpbGVzIGNvbGxlY3Qgbm8g
aW5mb3JtYXRpb24gZm9yIGdsb2JhbCB2YXJpYWJsZXMKIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02ODE0MwogCi1SZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4iIiIK
K1Jldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCitnaXQtc3ZuLWlkOiBodHRwOi8vc3ZuLndl
YmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmtAOTUyMTkgMjY4ZjQ1Y2MtY2QwOS0wNDEw
LWFiM2MtZDUyNjkxYjRkYmZjCisiIiIKKworICAgIGRlZiBfbWFrZV9vcHRpb25zKHNlbGYsICoq
a3dhcmdzKToKKyAgICAgICAgZGVmYXVsdHMgPSB7CisgICAgICAgICAgICAnY29tbWl0dGVyX21p
bmltdW0nOiAxMCwKKyAgICAgICAgICAgICdtYXhfY29tbWl0X2FnZSc6IDksCisgICAgICAgICAg
ICAncmV2aWV3ZXJfbWluaW11bSc6IDgwLAorICAgICAgICAgICAgJ3Nob3dfY29tbWl0cyc6IEZh
bHNlLAorICAgICAgICAgICAgJ3ZlcmJvc2UnOiBGYWxzZSwKKyAgICAgICAgfQorICAgICAgICBv
cHRpb25zID0gTW9ja09wdGlvbnMoKipkZWZhdWx0cykKKyAgICAgICAgb3B0aW9ucy51cGRhdGUo
Kiprd2FyZ3MpCisgICAgICAgIHJldHVybiBvcHRpb25zCiAKICAgICBkZWYgdGVzdF9yZWNlbnRf
Y29tbWl0X21lc3NhZ2VzKHNlbGYpOgogICAgICAgICB0b29sID0gTW9ja1Rvb2woKQogICAgICAg
ICBzdWdnZXN0X25vbWluYXRpb25zID0gU3VnZ2VzdE5vbWluYXRpb25zKCkKLSAgICAgICAgc3Vn
Z2VzdF9ub21pbmF0aW9ucy5faW5pdF9vcHRpb25zKG9wdGlvbnM9TW9ja09wdGlvbnMocmV2aWV3
ZXJfbWluaW11bT04MCwgY29tbWl0dGVyX21pbmltdW09MTAsIG1heF9jb21taXRfYWdlPTksIHNo
b3dfY29tbWl0cz1GYWxzZSwgdmVyYm9zZT1GYWxzZSkpCisgICAgICAgIHN1Z2dlc3Rfbm9taW5h
dGlvbnMuX2luaXRfb3B0aW9ucyhvcHRpb25zPXNlbGYuX21ha2Vfb3B0aW9ucygpKQogICAgICAg
ICBzdWdnZXN0X25vbWluYXRpb25zLmJpbmRfdG9fdG9vbCh0b29sKQogCiAgICAgICAgIHRvb2wu
ZXhlY3V0aXZlLnJ1bl9jb21tYW5kID0gbGFtYmRhIGNvbW1hbmQ6IHNlbGYubW9ja19naXRfb3V0
cHV0CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdWdnZXN0X25vbWluYXRpb25zLl9y
ZWNlbnRfY29tbWl0X21lc3NhZ2VzKCkpLCBbc2VsZi5tb2NrX3NhbWVfYXV0aG9yX2NvbW1pdF9t
ZXNzYWdlXSkKIAotICAgIG1vY2tfbm9uX2NvbW1pdHRlcl9jb21taXRfbWVzc2FnZSA9ICIiIkxl
dCBUZXN0V2ViS2l0QVBJIHdvcmsgZm9yIGNocm9taXVtCisgICAgbW9ja19ub25fY29tbWl0dGVy
X2NvbW1pdF9tZXNzYWdlID0gIiIiCitBdXRob3I6IGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZ0AyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRi
ZmM+CitEYXRlOiAgIDIwMDktMDktMTUgMTQ6MDg6NDIgKzAwMDAKKworTGV0IFRlc3RXZWJLaXRB
UEkgd29yayBmb3IgY2hyb21pdW0KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02Nzc1NgogCiBQYXRjaCBieSBYaWFuemh1IFdhbmcgPHdhbmd4aWFuemh1QGNocm9taXVt
Lm9yZz4gb24gMjAxMS0wOS0xNQpAQCAtNjcsMTEgKzg5LDE1IEBAIFJldmlld2VkIGJ5IFNhbSBX
ZWluaWcuCiAKIFNvdXJjZS9XZWJLaXQvY2hyb21pdW06CiAKLSogV2ViS2l0Lmd5cDoiIiIKKyog
V2ViS2l0Lmd5cDoKKworZ2l0LXN2bi1pZDogaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRv
cnkvd2Via2l0L3RydW5rQDk1MTg4IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJm
YworIiIiCiAKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKICAgICAgICAgZXhwZWN0ZWRfc3Rk
b3V0ID0gIlJFVklFV0VSOiBYaWFuemh1IFdhbmcgKHdhbmd4aWFuemh1QGNocm9taXVtLm9yZykg
aGFzIDg4IHJldmlld2VkIHBhdGNoZXNcbiIKKyAgICAgICAgb3B0aW9ucyA9IHNlbGYuX21ha2Vf
b3B0aW9ucygpCiAgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMgPSBTdWdnZXN0Tm9taW5hdGlv
bnMoKQotICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zLl9pbml0X29wdGlvbnMob3B0aW9ucz1N
b2NrT3B0aW9ucyhyZXZpZXdlcl9taW5pbXVtPTgwLCBjb21taXR0ZXJfbWluaW11bT0xMCwgbWF4
X2NvbW1pdF9hZ2U9OSwgc2hvd19jb21taXRzPUZhbHNlLCB2ZXJib3NlPUZhbHNlKSkKKyAgICAg
ICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5faW5pdF9vcHRpb25zKG9wdGlvbnM9b3B0aW9ucykKICAg
ICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5fcmVjZW50X2NvbW1pdF9tZXNzYWdlcyA9IGxhbWJk
YTogW3NlbGYubW9ja19ub25fY29tbWl0dGVyX2NvbW1pdF9tZXNzYWdlIGZvciBfIGluIHJhbmdl
KDg4KV0KLSAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKHN1Z2dlc3Rfbm9taW5h
dGlvbnMsIFtdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBvcHRpb25zPU1vY2tP
cHRpb25zKHJldmlld2VyX21pbmltdW09ODAsIGNvbW1pdHRlcl9taW5pbXVtPTEwLCBtYXhfY29t
bWl0X2FnZT05LCBzaG93X2NvbW1pdHM9RmFsc2UsIHZlcmJvc2U9RmFsc2UpKQorICAgICAgICBz
ZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoc3VnZ2VzdF9ub21pbmF0aW9ucywgW10sIGV4cGVj
dGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQsIG9wdGlvbnM9b3B0aW9ucykK
</data>

          </attachment>
      

    </bug>

</bugzilla>