<?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>63351</bug_id>
          
          <creation_ts>2011-06-24 13:37:56 -0700</creation_ts>
          <short_desc>webkit-patch should be able to find users and add them to bugzilla groups</short_desc>
          <delta_ts>2022-02-27 23:45:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>34179</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>dbates</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>427078</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-24 13:37:56 -0700</bug_when>
    <thetext>webkit-patch should be able to find users and add them to bugzilla groups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427082</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-24 13:39:39 -0700</bug_when>
    <thetext>The name &quot;webkit-patch&quot; is getting less and less accurate. Should we be using separate scripts for things like this? Or renaming webkit-patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427083</commentid>
    <comment_count>2</comment_count>
      <attachid>98532</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-24 13:40:46 -0700</bug_when>
    <thetext>Created attachment 98532
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427084</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-24 13:41:18 -0700</bug_when>
    <thetext>webkit-patch has never been an accurate name.  Suggestions welcome.

We&apos;ve also wanted to be able to have separate collections of commands, but never quite finished the refactoring necessary to make that happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427086</commentid>
    <comment_count>4</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-06-24 13:42:07 -0700</bug_when>
    <thetext>Meh. I prefer having one tool. It means that &quot;webkit-patch --all-commands&quot; shows you each command with a description of what it does instead of just seeing the list of all the scripts without description of what they do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427092</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-24 13:44:49 -0700</bug_when>
    <thetext>Here is an example of using the new add-users-to-groups command:

webkit-patch add-users-to-groups sullivan@chromium.org
Add users matching &quot;sullivan@chromium.org&quot; which groups?
 1. canconfirm
 2. editbugs
Enter one or more numbers (comma-separated), or &quot;all&quot;: 
Logging in as eric@webkit.org...
Found 1 users matching sullivan@chromium.org:
sullivan@chromium.org (15086)
Are you sure you want add 1 users to groups [&apos;canconfirm&apos;, &apos;editbugs&apos;]?  (This action cannot be undone using webkit-patch.) [Y/n]: 
Adding sullivan@chromium.org to [&apos;canconfirm&apos;, &apos;editbugs&apos;]

With this we could grant editbugs/canconfirm to all of @chromium.org or @mozilla.org at once (or whatever policy decision we&apos;d like to make).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427101</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-24 13:47:26 -0700</bug_when>
    <thetext>Here is an example of running find-users:

webkit-patch find-users chromium.org
Logging in as eric@webkit.org...
Aaron Boodman &lt;aa@chromium.org&gt; (8238) (canconfirm, editbugs)
Andrey Adaikin &lt;aandrey@chromium.org&gt; (14805) (editbugs)
Alice Boxhall &lt;aboxhall@chromium.org&gt; (14625) (canconfirm, editbugs)
Aaron Colwell &lt;acolwell@chromium.org&gt; (13774) (none)
Adam Klein &lt;adamk@chromium.org&gt; (14354) (canconfirm, editbugs)
Mads Ager &lt;ager@chromium.org&gt; (8890) (canconfirm, editbugs)
Adam Langley &lt;agl@chromium.org&gt; (8744) (canconfirm, editbugs)
Albert J. Wong &lt;ajwong@chromium.org&gt; (9759) (canconfirm, editbugs)
 &lt;akalin@chromium.org&gt; (15464) (none)
Alok Priyadarshi &lt;alokp@chromium.org&gt; (11778) (editbugs)
Amanda Walker &lt;amanda@chromium.org&gt; (8123) (none)
Alexey Marinichev &lt;amarinichev@chromium.org&gt; (13251) (editbugs)
Amit Joshi &lt;amit@chromium.org&gt; (9485) (none)


The UI for both of these commands could be improved, but this works for a first-cut.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427105</commentid>
    <comment_count>7</comment_count>
      <attachid>98536</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-24 13:48:40 -0700</bug_when>
    <thetext>Created attachment 98536
Fix one exception</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427111</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-24 13:51:24 -0700</bug_when>
    <thetext>*** Bug 34179 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466687</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-13 16:52:19 -0700</bug_when>
    <thetext>can haz review?

This came up again when another @chromium.org person emailed me to be added to edit bugs.  I&apos;d like to automate this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466697</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-13 17:01:12 -0700</bug_when>
    <thetext>Clearly I need to troll pending-review more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466706</commentid>
    <comment_count>11</comment_count>
      <attachid>98536</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-13 17:07:29 -0700</bug_when>
    <thetext>Comment on attachment 98536
Fix one exception

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

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:54
&gt; +        self._group_name_to_group_string_cache = {}

Should this use a memoized function instead?

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:71
&gt; +        soup = BeautifulSoup(results_page, convertEntities=BeautifulStoneSoup.HTML_ENTITIES)

There&apos;s no XML version of this page?

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:268
&gt; +        self.edit_user_parser = EditUsersParser()

Do we want this to be persistent or instantiated each time?  Maybe it doen&apos;t matter since the process isn&apos;t long-lived.

&gt; Tools/Scripts/webkitpy/tool/commands/__init__.py:8
&gt; +from webkitpy.tool.commands.adduserstogroups import AddUsersToGroups
&gt;  from webkitpy.tool.commands.bugsearch import BugSearch
&gt;  from webkitpy.tool.commands.bugfortest import BugForTest
&gt;  from webkitpy.tool.commands.download import *
&gt;  from webkitpy.tool.commands.earlywarningsystem import *
&gt; +from webkitpy.tool.commands.findusers import *

Not really related to this patch, but we should clean up whether this file always uses *, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466713</commentid>
    <comment_count>12</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-09-13 17:15:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; webkit-patch has never been an accurate name.  Suggestions welcome.
&gt; 

webkit-swiss-army-knife?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468107</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-15 15:00:44 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 98536 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98536&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:54
&gt; &gt; +        self._group_name_to_group_string_cache = {}
&gt; 
&gt; Should this use a memoized function instead?

Possibly.  It gets awkward because we&apos;re passing in the edit page.

&gt; &gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:71
&gt; &gt; +        soup = BeautifulSoup(results_page, convertEntities=BeautifulStoneSoup.HTML_ENTITIES)
&gt; 
&gt; There&apos;s no XML version of this page?

Sadly no.

&gt; &gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:268
&gt; &gt; +        self.edit_user_parser = EditUsersParser()
&gt; 
&gt; Do we want this to be persistent or instantiated each time?  Maybe it doen&apos;t matter since the process isn&apos;t long-lived.

Doesn&apos;t really matter.  Since bugzilla is a singleton anyway, I&apos;m not going to worry.

&gt; &gt; Tools/Scripts/webkitpy/tool/commands/__init__.py:8
&gt; &gt; +from webkitpy.tool.commands.adduserstogroups import AddUsersToGroups
&gt; &gt;  from webkitpy.tool.commands.bugsearch import BugSearch
&gt; &gt;  from webkitpy.tool.commands.bugfortest import BugForTest
&gt; &gt;  from webkitpy.tool.commands.download import *
&gt; &gt;  from webkitpy.tool.commands.earlywarningsystem import *
&gt; &gt; +from webkitpy.tool.commands.findusers import *
&gt; 
&gt; Not really related to this patch, but we should clean up whether this file always uses *, etc.

Agreed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468112</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-15 15:09:51 -0700</bug_when>
    <thetext>Committed r95238: &lt;http://trac.webkit.org/changeset/95238&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98532</attachid>
            <date>2011-06-24 13:40:46 -0700</date>
            <delta_ts>2011-06-24 13:48:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63351-20110624134043.patch</filename>
            <type>text/plain</type>
            <size>20222</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk2ODAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiOGU0NTllMGU1OWMwMDEyZjQyZjkwMTdkMWRhY2VkNzNm
ZWQ0NGQ1Li41MDIwMjk1NTc3OWM3N2I1ZDVkN2MwMDQ0NjcwMzI5ZWNhNTczMDlmIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMDYtMjQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHdlYmtpdC1wYXRjaCBzaG91
bGQgYmUgYWJsZSB0byBmaW5kIHVzZXJzIGFuZCBhZGQgdGhlbSB0byBidWd6aWxsYSBncm91cHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMzUxCisK
KyAgICAgICAgVGhlc2UgYXJlIGJvdGggdmVyeSBiYXNpYyBjb21tYW5kcy4gIEJ1dCBpdCdzIG5v
dyBwb3NzaWJsZSB0byBmaW5kCisgICAgICAgIGFsbCB1c2VycyBtYXRjaGluZyBhIHJlZ2V4cCwg
YXMgd2VsbCBhcyBhZGQgYWxsIHVzZXJzIG1hdGNoaW5nIGEgcmVnZXhwCisgICAgICAgIHRvIGEg
c2V0IG9mIGdyb3Vwcy4KKworICAgICAgICBidWd6aWxsYS5weSBhbHJlYWR5IGtuZXcgaG93IHRv
IGZpbmQgdXNlcnMgKGZvciB2YWxpZGF0ZS1jb21taXR0ZXItbGlzdHMpCisgICAgICAgIGJ1dCBu
b3cgaXQgaGFzIHRoZSBhYmlsaXR5IHRvIG1vZGlmeSB0aGUgdXNlciByZWNvcmRzLgorCisgICAg
ICAgIEkgc3BsaXQgc29tZSBvZiB0aGUgbG9naWMgb3V0IGludG8gYSBuZXcgRWRpdFVzZXJzUGFy
c2VyIGNsYXNzCisgICAgICAgIHRvIHRyeSBhbmQgcmVkdWNlIHRoZSBhbW91bnQgb2YgY29kZSBp
biBCdWd6aWxsYS9CdWd6aWxsYVF1ZXJpZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvYWRkdXNlcnN0b2dyb3Vwcy5weTogQWRkZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2ZpbmR1c2Vycy5weTog
QWRkZWQuCisKIDIwMTEtMDYtMjQgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUuCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkKaW5kZXgg
ZjIwNDllMjZkMmYyYmFiYWIxMWRmZTk4NTkxZDExMDM2ZjdiZWI3Ni4uZjY2MDcyMzE4YWJlZjZi
OGY5YmI4ZWM0MjcwYmFkYTRlZDZkMjQyNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQpAQCAtNDksNiArNDksNzUg
QEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXIgaW1wb3J0IFVzZXIKIGZyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwLCBCZWF1
dGlmdWxTdG9uZVNvdXAsIFNvdXBTdHJhaW5lcgogCiAKK2NsYXNzIEVkaXRVc2Vyc1BhcnNlcihv
YmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fZ3JvdXBfbmFt
ZV90b19ncm91cF9zdHJpbmdfY2FjaGUgPSB7fQorCisgICAgZGVmIF9sb2dpbl9hbmRfdWlkX2Zy
b21fcm93KHNlbGYsIHJvdyk6CisgICAgICAgIGZpcnN0X2NlbGwgPSByb3cuZmluZCgidGQiKQor
ICAgICAgICAjIFRoZSBmaXJzdCByb3cgaXMganVzdCBoZWFkZXJzLCB3ZSBza2lwIGl0LgorICAg
ICAgICBpZiBub3QgZmlyc3RfY2VsbDoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAg
ICMgV2hlbiB0aGVyZSB3ZXJlIG5vIHJlc3VsdHMsIHdlIGhhdmUgYSBmYWtlICI8bm9uZT4iIGVu
dHJ5IGluIHRoZSB0YWJsZS4KKyAgICAgICAgaWYgZmlyc3RfY2VsbC5maW5kKHRleHQ9Ijxub25l
PiIpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgIyBPdGhlcndpc2UgdGhlIDx0
ZD4gY29udGFpbnMgYSBzaW5nbGUgPGE+IHdoaWNoIGNvbnRhaW5zIHRoZSBsb2dpbiBuYW1lIG9y
IGEgc2luZ2xlIDxpPiB3aXRoIHRoZSBzdHJpbmcgIjxub25lPiIuCisgICAgICAgIGFuY2hvcl90
YWcgPSBmaXJzdF9jZWxsLmZpbmQoImEiKQorICAgICAgICBsb2dpbiA9IHVuaWNvZGUoYW5jaG9y
X3RhZy5zdHJpbmcpLnN0cmlwKCkKKyAgICAgICAgdXNlcl9pZCA9IGludChyZS5zZWFyY2gociJ1
c2VyaWQ9KFxkKykiLCBzdHIoYW5jaG9yX3RhZ1snaHJlZiddKSkuZ3JvdXAoMSkpCisgICAgICAg
IHJldHVybiAobG9naW4sIHVzZXJfaWQpCisKKyAgICBkZWYgbG9naW5fdXNlcmlkX3BhaXJzX2Zy
b21fZWRpdF91c2VyX3Jlc3VsdHMoc2VsZiwgcmVzdWx0c19wYWdlKToKKyAgICAgICAgc291cCA9
IEJlYXV0aWZ1bFNvdXAocmVzdWx0c19wYWdlLCBjb252ZXJ0RW50aXRpZXM9QmVhdXRpZnVsU3Rv
bmVTb3VwLkhUTUxfRU5USVRJRVMpCisgICAgICAgIHJlc3VsdHNfdGFibGUgPSBzb3VwLmZpbmQo
aWQ9ImFkbWluX3RhYmxlIikKKyAgICAgICAgbG9naW5fdXNlcmlkX3BhaXJzID0gW3NlbGYuX2xv
Z2luX2FuZF91aWRfZnJvbV9yb3cocm93KSBmb3Igcm93IGluIHJlc3VsdHNfdGFibGUoJ3RyJyld
CisgICAgICAgICMgRmlsdGVyIG91dCBOb25lIGZyb20gdGhlIGxvZ2lucy4KKyAgICAgICAgcmV0
dXJuIGZpbHRlcihsYW1iZGEgcGFpcjogYm9vbChwYWlyKSwgbG9naW5fdXNlcmlkX3BhaXJzKQor
CisgICAgZGVmIF9ncm91cF9uYW1lX2FuZF9zdHJpbmdfZnJvbV9yb3coc2VsZiwgcm93KToKKyAg
ICAgICAgbGFiZWxfZWxlbWVudCA9IHJvdy5maW5kKCdsYWJlbCcpCisgICAgICAgIGdyb3VwX3N0
cmluZyA9IHVuaWNvZGUobGFiZWxfZWxlbWVudFsnZm9yJ10pCisgICAgICAgIGdyb3VwX25hbWUg
PSB1bmljb2RlKGxhYmVsX2VsZW1lbnQuZmluZCgnc3Ryb25nJykuc3RyaW5nKS5yc3RyaXAoJzon
KQorICAgICAgICByZXR1cm4gKGdyb3VwX25hbWUsIGdyb3VwX3N0cmluZykKKworICAgIGRlZiB1
c2VyX2RpY3RfZnJvbV9lZGl0X3VzZXJfcGFnZShzZWxmLCBwYWdlKToKKyAgICAgICAgc291cCA9
IEJlYXV0aWZ1bFNvdXAocGFnZSwgY29udmVydEVudGl0aWVzPUJlYXV0aWZ1bFN0b25lU291cC5I
VE1MX0VOVElUSUVTKQorICAgICAgICB1c2VyX3RhYmxlID0gc291cC5maW5kKCJ0YWJsZSIsIHsn
Y2xhc3MnOiAnbWFpbid9KQorICAgICAgICB1c2VyX2RpY3QgPSB7fQorICAgICAgICBmb3Igcm93
IGluIHVzZXJfdGFibGUoJ3RyJyk6CisgICAgICAgICAgICBsYWJlbF9lbGVtZW50ID0gcm93LmZp
bmQoJ2xhYmVsJykKKyAgICAgICAgICAgIGlmIG5vdCBsYWJlbF9lbGVtZW50OgorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlICAjIFRoaXMgbXVzdCBub3QgYmUgYSByb3cgd2Uga25vdyBob3cgdG8g
cGFyc2UuCisgICAgICAgICAgICBpZiByb3cuZmluZCgndGFibGUnKToKKyAgICAgICAgICAgICAg
ICBjb250aW51ZSAgIyBTa2lwIHRoZSA8dHI+IGhvbGRpbmcgdGhlIGdyb3VwcyB0YWJsZS4KKwor
ICAgICAgICAgICAga2V5ID0gbGFiZWxfZWxlbWVudFsnZm9yJ10KKyAgICAgICAgICAgIGlmICJn
cm91cCIgaW4ga2V5OgorICAgICAgICAgICAgICAgIGtleSA9ICJncm91cHMiCisgICAgICAgICAg
ICAgICAgdmFsdWUgPSB1c2VyX2RpY3QuZ2V0KCdncm91cHMnLCBzZXQoKSkKKyAgICAgICAgICAg
ICAgICAjIFdlIG11c3QgYmUgcGFyc2luZyBhICJ0ciIgaW5zaWRlIHRoZSBpbm5lciBncm91cCB0
YWJsZS4KKyAgICAgICAgICAgICAgICAoZ3JvdXBfbmFtZSwgXykgPSBzZWxmLl9ncm91cF9uYW1l
X2FuZF9zdHJpbmdfZnJvbV9yb3cocm93KQorICAgICAgICAgICAgICAgIGlmIHJvdy5maW5kKCdp
bnB1dCcsIHsndHlwZSc6ICdjaGVja2JveCcsICdjaGVja2VkJzogJ2NoZWNrZWQnfSk6CisgICAg
ICAgICAgICAgICAgICAgIHZhbHVlLmFkZChncm91cF9uYW1lKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IHVuaWNvZGUocm93LmZpbmQoJ3RkJykuc3RyaW5nKS5z
dHJpcCgpCisgICAgICAgICAgICB1c2VyX2RpY3Rba2V5XSA9IHZhbHVlCisgICAgICAgIHJldHVy
biB1c2VyX2RpY3QKKworICAgIGRlZiBfZ3JvdXBfcm93c19mcm9tX2VkaXRfdXNlcl9wYWdlKHNl
bGYsIGVkaXRfdXNlcl9wYWdlKToKKyAgICAgICAgc291cCA9IEJlYXV0aWZ1bFNvdXAoZWRpdF91
c2VyX3BhZ2UsIGNvbnZlcnRFbnRpdGllcz1CZWF1dGlmdWxTb3VwLkhUTUxfRU5USVRJRVMpCisg
ICAgICAgIHJldHVybiBzb3VwKCd0ZCcsIHsnY2xhc3MnOiAnZ3JvdXBuYW1lJ30pCisKKyAgICBk
ZWYgZ3JvdXBfc3RyaW5nX2Zyb21fbmFtZShzZWxmLCBlZGl0X3VzZXJfcGFnZSwgZ3JvdXBfbmFt
ZSk6CisgICAgICAgICMgQnVnemlsbGEgdXNlcyAiZ3JvdXBfTlVNQkVSIiBzdHJpbmdzLCB3aGlj
aCBtYXkgYmUgZGlmZmVyZW50IHBlciBpbnN0YWxsCisgICAgICAgICMgc28gd2UganVzdCBsb29r
IHRoZW0gdXAgb25jZSBhbmQgY2FjaGUgdGhlbS4KKyAgICAgICAgaWYgbm90IHNlbGYuX2dyb3Vw
X25hbWVfdG9fZ3JvdXBfc3RyaW5nX2NhY2hlOgorICAgICAgICAgICAgcm93cyA9IHNlbGYuX2dy
b3VwX3Jvd3NfZnJvbV9lZGl0X3VzZXJfcGFnZShlZGl0X3VzZXJfcGFnZSkKKyAgICAgICAgICAg
IG5hbWVfc3RyaW5nX3BhaXJzID0gbWFwKHNlbGYuX2dyb3VwX25hbWVfYW5kX3N0cmluZ19mcm9t
X3Jvdywgcm93cykKKyAgICAgICAgICAgIHNlbGYuX2dyb3VwX25hbWVfdG9fZ3JvdXBfc3RyaW5n
X2NhY2hlID0gZGljdChuYW1lX3N0cmluZ19wYWlycykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2dy
b3VwX25hbWVfdG9fZ3JvdXBfc3RyaW5nX2NhY2hlW2dyb3VwX25hbWVdCisKKwogZGVmIHRpbWVz
dGFtcCgpOgogICAgIHJldHVybiBkYXRldGltZS5ub3coKS5zdHJmdGltZSgiJVklbSVkJUglTSVT
IikKIApAQCAtMTc0LDUwICsyNDMsNTEgQEAgY2xhc3MgQnVnemlsbGFRdWVyaWVzKG9iamVjdCk6
CiAgICAgICAgIHJldmlld19xdWV1ZV91cmwgPSAicmVxdWVzdC5jZ2k/YWN0aW9uPXF1ZXVlJnR5
cGU9cmV2aWV3Jmdyb3VwPXR5cGUiCiAgICAgICAgIHJldHVybiBzZWxmLl9mZXRjaF9hdHRhY2ht
ZW50X2lkc19yZXF1ZXN0X3F1ZXJ5KHJldmlld19xdWV1ZV91cmwpCiAKLSAgICBkZWYgX2xvZ2lu
X2Zyb21fcm93KHNlbGYsIHJvdyk6Ci0gICAgICAgIGZpcnN0X2NlbGwgPSByb3cuZmluZCgidGQi
KQotICAgICAgICAjIFRoZSBmaXJzdCByb3cgaXMganVzdCBoZWFkZXJzLCB3ZSBza2lwIGl0Lgot
ICAgICAgICBpZiBub3QgZmlyc3RfY2VsbDoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAg
ICAgICMgV2hlbiB0aGVyZSB3ZXJlIG5vIHJlc3VsdHMsIHdlIGhhdmUgYSBmYWtlICI8bm9uZT4i
IGVudHJ5IGluIHRoZSB0YWJsZS4KLSAgICAgICAgaWYgZmlyc3RfY2VsbC5maW5kKHRleHQ9Ijxu
b25lPiIpOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgIyBPdGhlcndpc2UgdGhl
IDx0ZD4gY29udGFpbnMgYSBzaW5nbGUgPGE+IHdoaWNoIGNvbnRhaW5zIHRoZSBsb2dpbiBuYW1l
IG9yIGEgc2luZ2xlIDxpPiB3aXRoIHRoZSBzdHJpbmcgIjxub25lPiIuCi0gICAgICAgIHJldHVy
biBzdHIoZmlyc3RfY2VsbC5maW5kKCJhIikuc3RyaW5nKS5zdHJpcCgpCi0KLSAgICBkZWYgX3Bh
cnNlX2xvZ2luc19mcm9tX2VkaXR1c2Vyc19yZXN1bHRzKHNlbGYsIHJlc3VsdHNfcGFnZSk6Ci0g
ICAgICAgIHNvdXAgPSBCZWF1dGlmdWxTb3VwKHJlc3VsdHNfcGFnZSwgY29udmVydEVudGl0aWVz
PUJlYXV0aWZ1bFN0b25lU291cC5IVE1MX0VOVElUSUVTKQotICAgICAgICByZXN1bHRzX3RhYmxl
ID0gc291cC5maW5kKGlkPSJhZG1pbl90YWJsZSIpCi0gICAgICAgIGxvZ2lucyA9IFtzZWxmLl9s
b2dpbl9mcm9tX3Jvdyhyb3cpIGZvciByb3cgaW4gcmVzdWx0c190YWJsZSgndHInKV0KLSAgICAg
ICAgIyBGaWx0ZXIgb3V0IE5vbmUgZnJvbSB0aGUgbG9naW5zLgotICAgICAgICByZXR1cm4gZmls
dGVyKGxhbWJkYSBsb2dpbjogYm9vbChsb2dpbiksIGxvZ2lucykKLQogICAgICMgVGhpcyBvbmx5
IHdvcmtzIGlmIHlvdXIgYWNjb3VudCBoYXMgZWRpdHVzZXIgcHJpdmlsZWdlcy4KICAgICAjIFdl
IGNvdWxkIGVhc2lseSBwYXJzZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy91c2VycHJlZnMuY2dp
P3RhYj1wZXJtaXNzaW9ucyB0bwogICAgICMgY2hlY2sgcGVybWlzc2lvbnMsIGJ1dCBidWd6aWxs
YSB3aWxsIGp1c3QgcmV0dXJuIGFuIGVycm9yIGlmIHdlIGRvbid0IGhhdmUgdGhlbS4KLSAgICBk
ZWYgZmV0Y2hfbG9naW5zX21hdGNoaW5nX3N1YnN0cmluZyhzZWxmLCBzZWFyY2hfc3RyaW5nKToK
KyAgICBkZWYgZmV0Y2hfbG9naW5fdXNlcmlkX3BhaXJzX21hdGNoaW5nX3N1YnN0cmluZyhzZWxm
LCBzZWFyY2hfc3RyaW5nKToKICAgICAgICAgcmV2aWV3X3F1ZXVlX3VybCA9ICJlZGl0dXNlcnMu
Y2dpP2FjdGlvbj1saXN0Jm1hdGNodmFsdWU9bG9naW5fbmFtZSZtYXRjaHN0cj0lcyZtYXRjaHR5
cGU9c3Vic3RyIiAlIHVybGxpYi5xdW90ZShzZWFyY2hfc3RyaW5nKQogICAgICAgICByZXN1bHRz
X3BhZ2UgPSBzZWxmLl9sb2FkX3F1ZXJ5KHJldmlld19xdWV1ZV91cmwpCi0gICAgICAgIHJldHVy
biBzZWxmLl9wYXJzZV9sb2dpbnNfZnJvbV9lZGl0dXNlcnNfcmVzdWx0cyhyZXN1bHRzX3BhZ2Up
CisgICAgICAgICMgV2UgY291bGQgcHVsbCB0aGUgRWRpdFVzZXJzUGFyc2VyIG9mZiBCdWd6aWxs
YSBpZiBuZWVkZWQuCisgICAgICAgIHJldHVybiBFZGl0VXNlcnNQYXJzZXIoKS5sb2dpbl91c2Vy
aWRfcGFpcnNfZnJvbV9lZGl0X3VzZXJfcmVzdWx0cyhyZXN1bHRzX3BhZ2UpCiAKKyAgICAjIEZJ
WE1FOiBXZSBzaG91bGQgY29uc2lkZXIgYWRkaW5nIGEgQnVnemlsbGFVc2VyIGNsYXNzLgorICAg
IGRlZiBmZXRjaF9sb2dpbnNfbWF0Y2hpbmdfc3Vic3RyaW5nKHNlbGYsIHNlYXJjaF9zdHJpbmcp
OgorICAgICAgICBwYWlycyA9IHNlbGYuZmV0Y2hfbG9naW5fdXNlcmlkX3BhaXJzX21hdGNoaW5n
X3N1YnN0cmluZyhzZWFyY2hfc3RyaW5nKQorICAgICAgICByZXR1cm4gbWFwKGxhbWJkYSBwYWly
OiBwYWlyWzBdLCBwYWlycykKIAotY2xhc3MgQnVnemlsbGEob2JqZWN0KToKIAorY2xhc3MgQnVn
emlsbGEob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZHJ5cnVuPUZhbHNlLCBjb21t
aXR0ZXJzPWNvbW1pdHRlcnMuQ29tbWl0dGVyTGlzdCgpKToKICAgICAgICAgc2VsZi5kcnlydW4g
PSBkcnlydW4KICAgICAgICAgc2VsZi5hdXRoZW50aWNhdGVkID0gRmFsc2UKICAgICAgICAgc2Vs
Zi5xdWVyaWVzID0gQnVnemlsbGFRdWVyaWVzKHNlbGYpCiAgICAgICAgIHNlbGYuY29tbWl0dGVy
cyA9IGNvbW1pdHRlcnMKICAgICAgICAgc2VsZi5jYWNoZWRfcXVpcHMgPSBbXQorICAgICAgICBz
ZWxmLmVkaXRfdXNlcl9wYXJzZXIgPSBFZGl0VXNlcnNQYXJzZXIoKQogCiAgICAgICAgICMgRklY
TUU6IFdlIHNob3VsZCB1c2Ugc29tZSBzb3J0IG9mIEJyb3dzZXIgbW9jayBvYmplY3Qgd2hlbiBp
biBkcnlydW4KICAgICAgICAgIyBtb2RlICh0byBwcmV2ZW50IGFueSBtaXN0YWtlcykuCiAgICAg
ICAgIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZSBpbXBv
cnQgQnJvd3NlcgogICAgICAgICBzZWxmLmJyb3dzZXIgPSBCcm93c2VyKCkKLSAgICAgICAgIyBJ
Z25vcmUgYnVncy53ZWJraXQub3JnL3JvYm90cy50eHQgdW50aWwgd2UgZml4IGl0IHRvIGFsbG93
IHRoaXMKLSAgICAgICAgIyBzY3JpcHQuCisgICAgICAgICMgSWdub3JlIGJ1Z3Mud2Via2l0Lm9y
Zy9yb2JvdHMudHh0IHVudGlsIHdlIGZpeCBpdCB0byBhbGxvdyB0aGlzIHNjcmlwdC4KICAgICAg
ICAgc2VsZi5icm93c2VyLnNldF9oYW5kbGVfcm9ib3RzKEZhbHNlKQogCisgICAgZGVmIGZldGNo
X3VzZXIoc2VsZiwgdXNlcl9pZCk6CisgICAgICAgIHNlbGYuYXV0aGVudGljYXRlKCkKKyAgICAg
ICAgZWRpdF91c2VyX3BhZ2UgPSBzZWxmLmJyb3dzZXIub3BlbihzZWxmLmVkaXRfdXNlcl91cmxf
Zm9yX2lkKHVzZXJfaWQpKQorICAgICAgICByZXR1cm4gc2VsZi5ncm91cF9zdHJpbmdfZnJvbV9u
YW1lLnVzZXJfZGljdF9mcm9tX2VkaXRfdXNlcl9wYWdlKGVkaXRfdXNlcl9wYWdlKQorCisgICAg
ZGVmIGFkZF91c2VyX3RvX2dyb3VwcyhzZWxmLCB1c2VyX2lkLCBncm91cF9uYW1lcyk6CisgICAg
ICAgIHNlbGYuYXV0aGVudGljYXRlKCkKKyAgICAgICAgdXNlcl9lZGl0X3BhZ2UgPSBzZWxmLmJy
b3dzZXIub3BlbihzZWxmLmVkaXRfdXNlcl91cmxfZm9yX2lkKHVzZXJfaWQpKQorICAgICAgICBz
ZWxmLmJyb3dzZXIuc2VsZWN0X2Zvcm0obnI9MSkKKyAgICAgICAgZm9yIGdyb3VwX25hbWUgaW4g
Z3JvdXBfbmFtZXM6CisgICAgICAgICAgICBncm91cF9zdHJpbmcgPSBzZWxmLmVkaXRfdXNlcl9w
YXJzZXIuZ3JvdXBfc3RyaW5nX2Zyb21fbmFtZSh1c2VyX2VkaXRfcGFnZSwgZ3JvdXBfbmFtZSkK
KyAgICAgICAgICAgIHNlbGYuYnJvd3Nlci5maW5kX2NvbnRyb2woZ3JvdXBfc3RyaW5nKS5pdGVt
c1swXS5zZWxlY3RlZCA9IFRydWUKKyAgICAgICAgc2VsZi5icm93c2VyLnN1Ym1pdCgpCisKICAg
ICBkZWYgcXVpcHMoc2VsZik6CiAgICAgICAgICMgV2Ugb25seSBmZXRjaCBhbmQgcGFyc2UgdGhl
IGxpc3Qgb2YgcXVpcHMgb25jZSBwZXIgaW5zdGFudGlhdGlvbgogICAgICAgICAjIHNvIHRoYXQg
d2UgZG8gbm90IGJ1cmRlbiBidWdzLndlYmtpdC5vcmcuCkBAIC0yNDksNiArMzE5LDkgQEAgY2xh
c3MgQnVnemlsbGEob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF0dGFjaG1lbnRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhY3Rpb25fcGFyYW0pCiAKKyAgICBkZWYgZWRpdF91c2VyX3VybF9mb3Jf
aWQoc2VsZiwgdXNlcl9pZCk6CisgICAgICAgIHJldHVybiAiJXNlZGl0dXNlcnMuY2dpP2FjdGlv
bj1lZGl0JnVzZXJpZD0lcyIgJSAoY29uZmlnX3VybHMuYnVnX3NlcnZlcl91cmwsIHVzZXJfaWQp
CisKICAgICBkZWYgX3BhcnNlX2F0dGFjaG1lbnRfZmxhZyhzZWxmLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ19uYW1lLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5CmluZGV4IGIwMmUyMGQ3Y2Rl
MzM5MTMwOGY0ODljNTcyMWNhOWE2YmI4NTZlOGEuLjdiM2U2YmY2MTcxNWI1MTUzYzNiOGU3MTcy
NDhkZTgxMzY0NzdiZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkKQEAgLTQyMiw2
ICs0MjIsOCBAQCBjbGFzcyBCdWd6aWxsYVF1ZXJpZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICA8L3RhYmxlPgogIiIiCiAKKworY2xhc3MgRWRpdFVzZXJzUGFyc2VyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgX2V4YW1wbGVfZW1wdHlfdXNlcl9yZXN1bHRzID0gIiIiCiAgICAg
PGRpdiBpZD0iYnVnemlsbGEtYm9keSI+CiAgICAgPHA+MCB1c2VycyBmb3VuZC48L3A+CkBAIC00
MzgsMTEgKzQ0MCw3MiBAQCBjbGFzcyBCdWd6aWxsYVF1ZXJpZXNUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICA8L3RhYmxlPgogICAgICIiIgogCi0gICAgZGVmIF9hc3NlcnRfcGFyc2VkX2xv
Z2lucyhzZWxmLCByZXN1bHRzX3BhZ2UsIGV4cGVjdGVkX2xvZ2lucyk6Ci0gICAgICAgIHF1ZXJp
ZXMgPSBCdWd6aWxsYVF1ZXJpZXMoTm9uZSkKLSAgICAgICAgbG9naW5zID0gcXVlcmllcy5fcGFy
c2VfbG9naW5zX2Zyb21fZWRpdHVzZXJzX3Jlc3VsdHMocmVzdWx0c19wYWdlKQorICAgIGRlZiBf
YXNzZXJ0X2xvZ2luX3VzZXJpZF9wYWlycyhzZWxmLCByZXN1bHRzX3BhZ2UsIGV4cGVjdGVkX2xv
Z2lucyk6CisgICAgICAgIHBhcnNlciA9IEVkaXRVc2Vyc1BhcnNlcigpCisgICAgICAgIGxvZ2lu
cyA9IHBhcnNlci5sb2dpbl91c2VyaWRfcGFpcnNfZnJvbV9lZGl0X3VzZXJfcmVzdWx0cyhyZXN1
bHRzX3BhZ2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxvZ2lucywgZXhwZWN0ZWRfbG9n
aW5zKQogCi0gICAgZGVmIHRlc3RfcGFyc2VfbG9naW5zX2Zyb21fZWRpdHVzZXJzX3Jlc3VsdHMo
c2VsZik6Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9wYXJzZWRfbG9naW5zKHNlbGYuX2V4YW1wbGVf
dXNlcl9yZXN1bHRzLCBbImFiYXJ0aEB3ZWJraXQub3JnIl0pCi0gICAgICAgIHNlbGYuX2Fzc2Vy
dF9wYXJzZWRfbG9naW5zKHNlbGYuX2V4YW1wbGVfZW1wdHlfdXNlcl9yZXN1bHRzLCBbXSkKKyAg
ICBkZWYgdGVzdF9sb2dpbnNfZnJvbV9lZGl0dXNlcnNfcmVzdWx0cyhzZWxmKToKKyAgICAgICAg
c2VsZi5fYXNzZXJ0X2xvZ2luX3VzZXJpZF9wYWlycyhzZWxmLl9leGFtcGxlX3VzZXJfcmVzdWx0
cywgWygiYWJhcnRoQHdlYmtpdC5vcmciLCAxMjM0KV0pCisgICAgICAgIHNlbGYuX2Fzc2VydF9s
b2dpbl91c2VyaWRfcGFpcnMoc2VsZi5fZXhhbXBsZV9lbXB0eV91c2VyX3Jlc3VsdHMsIFtdKQor
CisgICAgX2V4YW1wbGVfdXNlcl9wYWdlID0gIiIiPHRhYmxlIGNsYXNzPSJtYWluIj48dHI+Cisg
IDx0aD48bGFiZWwgZm9yPSJsb2dpbiI+TG9naW4gbmFtZTo8L2xhYmVsPjwvdGg+CisgIDx0ZD5l
cmljJiM2NDt3ZWJraXQub3JnCisgIDwvdGQ+Cis8L3RyPgorPHRyPgorICA8dGg+PGxhYmVsIGZv
cj0ibmFtZSI+UmVhbCBuYW1lOjwvbGFiZWw+PC90aD4KKyAgPHRkPkVyaWMgU2VpZGVsCisgIDwv
dGQ+Cis8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0aD5Hcm91cCBhY2Nlc3M6PC90aD4KKyAgICAg
IDx0ZD4KKyAgICAgICAgPHRhYmxlIGNsYXNzPSJncm91cHMiPgorICAgICAgICAgIDx0cj4KKyAg
ICAgICAgICA8L3RyPgorICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgIDx0aCBjb2xzcGFuPSIy
Ij5Vc2VyIGlzIGEgbWVtYmVyIG9mIHRoZXNlIGdyb3VwczwvdGg+CisgICAgICAgICAgPC90cj4K
KyAgICAgICAgICAgIDx0ciBjbGFzcz0iZGlyZWN0Ij4KKyAgICAgICAgICAgICAgPHRkIGNsYXNz
PSJjaGVja2JveCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWQ9Imdyb3VwXzciCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJncm91
cF83IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9IjEiIGNoZWNrZWQ9ImNoZWNr
ZWQiIC8+PC90ZD4KKyAgICAgICAgICAgICAgPHRkIGNsYXNzPSJncm91cG5hbWUiPgorICAgICAg
ICAgICAgICAgIDxsYWJlbCBmb3I9Imdyb3VwXzciPgorICAgICAgICAgICAgICAgICAgPHN0cm9u
Zz5jYW5jb25maXJtOjwvc3Ryb25nPgorICAgICAgICAgICAgICAgICAgQ2FuIGNvbmZpcm0gYSBi
dWcuCisgICAgICAgICAgICAgICAgPC9sYWJlbD4KKyAgICAgICAgICAgICAgPC90ZD4KKyAgICAg
ICAgICAgIDwvdHI+CisgICAgICAgICAgICA8dHIgY2xhc3M9ImRpcmVjdCI+CisgICAgICAgICAg
ICAgIDx0ZCBjbGFzcz0iY2hlY2tib3giPjxpbnB1dCB0eXBlPSJjaGVja2JveCIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlkPSJncm91cF82IgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbmFtZT0iZ3JvdXBfNiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSIxIiAv
PjwvdGQ+CisgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZ3JvdXBuYW1lIj4KKyAgICAgICAgICAg
ICAgICA8bGFiZWwgZm9yPSJncm91cF82Ij4KKyAgICAgICAgICAgICAgICAgIDxzdHJvbmc+ZWRp
dGJ1Z3M6PC9zdHJvbmc+CisgICAgICAgICAgICAgICAgICBDYW4gZWRpdCBhbGwgYXNwZWN0cyBv
ZiBhbnkgYnVnLgorICAgICAgICAgICAgICAgIC9sYWJlbD4KKyAgICAgICAgICAgICAgPC90ZD4K
KyAgICAgICAgICAgIDwvdHI+CisgICAgICAgIDwvdGFibGU+CisgICAgICA8L3RkPgorICAgIDwv
dHI+CisKKyAgPHRyPgorICAgIDx0aD5Qcm9kdWN0IHJlc3BvbnNpYmlsaXRpZXM6PC90aD4KKyAg
ICA8dGQ+CisgICAgICAgIDxlbT5ub25lPC9lbT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJs
ZT4iIiIKKworICAgIGRlZiB0ZXN0X3BhcnNlX3VzZXJfZGljdF9mcm9tX2VkaXRfdXNlcl9wYWdl
KHNlbGYpOgorICAgICAgICBwYXJzZXIgPSBFZGl0VXNlcnNQYXJzZXIoKQorICAgICAgICB1c2Vy
X2RpY3QgPSBwYXJzZXIudXNlcl9kaWN0X2Zyb21fZWRpdF91c2VyX3BhZ2Uoc2VsZi5fZXhhbXBs
ZV91c2VyX3BhZ2UpCisgICAgICAgIGV4cGVjdGVkX3VzZXJfZGljdCA9IHt1J2xvZ2luJzogdSdl
cmljQHdlYmtpdC5vcmcnLCB1J2dyb3Vwcyc6IHNldChbJ2NhbmNvbmZpcm0nXSksIHUnbmFtZSc6
IHUnRXJpYyBTZWlkZWwnfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3VzZXJf
ZGljdCwgdXNlcl9kaWN0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL19faW5pdF9fLnB5CmluZGV4IDI2YmQxOTU2YTU1ZDg3OGE1MzYxMjE4OWY5YzU2MGY4OTFk
ZWQ3ZWMuLmRhYzBmMjQxNDQ0MDQ2YTA4MDU4OGYyNzMzMGZhMTYyZDJjM2M0MGUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19pbml0X18ucHkKQEAgLTEs
OSArMSwxMSBAQAogIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9y
eSBmb3IgbW9kdWxlIGZpbGVzCiAKK2Zyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5hZGR1c2Vy
c3RvZ3JvdXBzIGltcG9ydCBBZGRVc2Vyc1RvR3JvdXBzCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29t
bWFuZHMuYnVnc2VhcmNoIGltcG9ydCBCdWdTZWFyY2gKIGZyb20gd2Via2l0cHkudG9vbC5jb21t
YW5kcy5idWdmb3J0ZXN0IGltcG9ydCBCdWdGb3JUZXN0CiBmcm9tIHdlYmtpdHB5LnRvb2wuY29t
bWFuZHMuZG93bmxvYWQgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5lYXJs
eXdhcm5pbmdzeXN0ZW0gaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5maW5k
dXNlcnMgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5vcGVuYnVncyBpbXBv
cnQgT3BlbkJ1Z3MKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5wcmV0dHlkaWZmIGltcG9y
dCBQcmV0dHlEaWZmCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMucXVlcmllcyBpbXBvcnQg
KgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2FkZHVz
ZXJzdG9ncm91cHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvYWRk
dXNlcnN0b2dyb3Vwcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjg2OTU4NGRiZjkzNzhjZjhiM2EwNDNkMzMw
MGRkODQwY2JjNDJkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL2FkZHVzZXJzdG9ncm91cHMucHkKQEAgLTAsMCArMSw2NSBAQAorIyBDb3B5
cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK2Zyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9ydCBB
YnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZAorCisKK2NsYXNzIEFkZFVzZXJzVG9Hcm91cHMoQWJz
dHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgorICAgIG5hbWUgPSAiYWRkLXVzZXJzLXRvLWdyb3Vw
cyIKKyAgICBoZWxwX3RleHQgPSAiQWRkIHVzZXJzIG1hdGNoaW5nIHN1YnRyaW5nIHRvIHNwZWNp
ZmllZCBncm91cHMiCisKKyAgICAjIFRoaXMgcHJvYmFibHkgYmVsb25ncyBpbiBidWd6aWxsYS5w
eQorICAgIGtub3duX2dyb3VwcyA9IFsnY2FuY29uZmlybScsICdlZGl0YnVncyddCisKKyAgICBk
ZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKKyAgICAgICAgc2VhcmNoX3N0
cmluZyA9IGFyZ3NbMF0KKyAgICAgICAgIyBGSVhNRTogV2UgY291bGQgYWxsb3cgdXNlcnMgdG8g
c3BlY2lmeSBncm91cHMgb24gdGhlIGNvbW1hbmQgbGluZS4KKyAgICAgICAgbGlzdF90aXRsZSA9
ICdBZGQgdXNlcnMgbWF0Y2hpbmcgIiVzIiB3aGljaCBncm91cHM/JyAlIHNlYXJjaF9zdHJpbmcK
KyAgICAgICAgIyBGSVhNRTogTmVlZCBhIHdheSB0byBzcGVjaWZ5IHRoYXQgIm5vbmUiIGlzIG5v
dCBhbGxvd2VkLgorICAgICAgICAjIEZJWE1FOiBXZSBjb3VsZCBsb29rdXAgd2hhdCBncm91cHMg
dGhlIGN1cnJlbnQgdXNlciBpcyBhYmxlIHRvIGdyYW50IGZyb20gYnVnemlsbGEuCisgICAgICAg
IGdyb3VwcyA9IHRvb2wudXNlci5wcm9tcHRfd2l0aF9saXN0KGxpc3RfdGl0bGUsIHNlbGYua25v
d25fZ3JvdXBzLCBjYW5fY2hvb3NlX211bHRpcGxlPVRydWUpCisgICAgICAgIGlmIG5vdCBncm91
cHM6CisgICAgICAgICAgICBwcmludCAiTm8gZ3JvdXBzIHNwZWNpZmllZC4iCisgICAgICAgICAg
ICByZXR1cm4KKworICAgICAgICBsb2dpbl91c2VyaWRfcGFpcnMgPSB0b29sLmJ1Z3MucXVlcmll
cy5mZXRjaF9sb2dpbl91c2VyaWRfcGFpcnNfbWF0Y2hpbmdfc3Vic3RyaW5nKHNlYXJjaF9zdHJp
bmcpCisgICAgICAgIGlmIG5vdCBsb2dpbl91c2VyaWRfcGFpcnM6CisgICAgICAgICAgICBwcmlu
dCAiTm8gdXNlcnMgZm91bmQgbWF0Y2hpbmcgJyVzJyIgJSBzZWFyY2hfc3RyaW5nCisgICAgICAg
ICAgICByZXR1cm4KKworICAgICAgICBwcmludCAiRm91bmQgJXMgdXNlcnMgbWF0Y2hpbmcgJXM6
IiAlIChsZW4obG9naW5fdXNlcmlkX3BhaXJzKSwgc2VhcmNoX3N0cmluZykKKyAgICAgICAgZm9y
IChsb2dpbiwgdXNlcl9pZCkgaW4gbG9naW5fdXNlcmlkX3BhaXJzOgorICAgICAgICAgICAgcHJp
bnQgIiVzICglcykiICUgKGxvZ2luLCB1c2VyX2lkKQorCisgICAgICAgIGNvbmZpcm1fbWVzc2Fn
ZSA9ICJBcmUgeW91IHN1cmUgeW91IHdhbnQgYWRkICVzIHVzZXJzIHRvIGdyb3VwcyAlcz8gIChU
aGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lIHVzaW5nIHdlYmtpdC1wYXRjaC4pIiAlIChsZW4o
bG9naW5fdXNlcmlkX3BhaXJzKSwgZ3JvdXBzKQorICAgICAgICBpZiBub3QgdG9vbC51c2VyLmNv
bmZpcm0oY29uZmlybV9tZXNzYWdlKToKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGZv
ciAobG9naW4sIHVzZXJfaWQpIGluIGxvZ2luX3VzZXJpZF9wYWlyczoKKyAgICAgICAgICAgIHBy
aW50ICJBZGRpbmcgJXMgdG8gJXMiICUgKGxvZ2luLCBncm91cHMpCisgICAgICAgICAgICB0b29s
LmJ1Z3MuYWRkX3VzZXJfdG9fZ3JvdXBzKHVzZXJfaWQsIGdyb3VwcykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9maW5kdXNlcnMucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZmluZHVzZXJzLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNi
ZmViMzNhZGQyZGY0YzgwMmE1YzgzYmY1YmI3ODk3ODVlNDk3MWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZmluZHVzZXJzLnB5CkBAIC0w
LDAgKzEsNDQgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGlj
b21tYW5kdG9vbCBpbXBvcnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKKworCitjbGFzcyBG
aW5kVXNlcnMoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgorICAgIG5hbWUgPSAiZmluZC11
c2VycyIKKyAgICBoZWxwX3RleHQgPSAiRmluZCB1c2VycyBtYXRjaGluZyBzdWJzdHJpbmciCisK
KyAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKKyAgICAgICAgc2Vh
cmNoX3N0cmluZyA9IGFyZ3NbMF0KKyAgICAgICAgbG9naW5fdXNlcmlkX3BhaXJzID0gdG9vbC5i
dWdzLnF1ZXJpZXMuZmV0Y2hfbG9naW5fdXNlcmlkX3BhaXJzX21hdGNoaW5nX3N1YnN0cmluZyhz
ZWFyY2hfc3RyaW5nKQorICAgICAgICBmb3IgKGxvZ2luLCB1c2VyX2lkKSBpbiBsb2dpbl91c2Vy
aWRfcGFpcnM6CisgICAgICAgICAgICB1c2VyID0gdG9vbC5idWdzLnF1ZXJpZXMuZmV0Y2hfdXNl
cih1c2VyX2lkKQorICAgICAgICAgICAgZ3JvdXBzX3N0cmluZyA9ICIsICIuam9pbih1c2VyWydn
cm91cHMnXSkgaWYgdXNlclsnZ3JvdXBzJ10gZWxzZSAibm9uZSIKKyAgICAgICAgICAgIHByaW50
ICIlcyA8JXM+ICglcykgKCVzKSIgJSAodXNlclsnbmFtZSddLCB1c2VyWydsb2dpbiddLCB1c2Vy
X2lkLCBncm91cHNfc3RyaW5nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJpbnQgIk5v
IHVzZXJzIGZvdW5kIG1hdGNoaW5nICclcyciICUgc2VhcmNoX3N0cmluZwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98536</attachid>
            <date>2011-06-24 13:48:40 -0700</date>
            <delta_ts>2022-02-27 23:45:32 -0800</delta_ts>
            <desc>Fix one exception</desc>
            <filename>bug-63351-20110624134837.patch</filename>
            <type>text/plain</type>
            <size>20202</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk2ODAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiOGU0NTllMGU1OWMwMDEyZjQyZjkwMTdkMWRhY2VkNzNm
ZWQ0NGQ1Li41MDIwMjk1NTc3OWM3N2I1ZDVkN2MwMDQ0NjcwMzI5ZWNhNTczMDlmIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMDYtMjQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHdlYmtpdC1wYXRjaCBzaG91
bGQgYmUgYWJsZSB0byBmaW5kIHVzZXJzIGFuZCBhZGQgdGhlbSB0byBidWd6aWxsYSBncm91cHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMzUxCisK
KyAgICAgICAgVGhlc2UgYXJlIGJvdGggdmVyeSBiYXNpYyBjb21tYW5kcy4gIEJ1dCBpdCdzIG5v
dyBwb3NzaWJsZSB0byBmaW5kCisgICAgICAgIGFsbCB1c2VycyBtYXRjaGluZyBhIHJlZ2V4cCwg
YXMgd2VsbCBhcyBhZGQgYWxsIHVzZXJzIG1hdGNoaW5nIGEgcmVnZXhwCisgICAgICAgIHRvIGEg
c2V0IG9mIGdyb3Vwcy4KKworICAgICAgICBidWd6aWxsYS5weSBhbHJlYWR5IGtuZXcgaG93IHRv
IGZpbmQgdXNlcnMgKGZvciB2YWxpZGF0ZS1jb21taXR0ZXItbGlzdHMpCisgICAgICAgIGJ1dCBu
b3cgaXQgaGFzIHRoZSBhYmlsaXR5IHRvIG1vZGlmeSB0aGUgdXNlciByZWNvcmRzLgorCisgICAg
ICAgIEkgc3BsaXQgc29tZSBvZiB0aGUgbG9naWMgb3V0IGludG8gYSBuZXcgRWRpdFVzZXJzUGFy
c2VyIGNsYXNzCisgICAgICAgIHRvIHRyeSBhbmQgcmVkdWNlIHRoZSBhbW91bnQgb2YgY29kZSBp
biBCdWd6aWxsYS9CdWd6aWxsYVF1ZXJpZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvYWRkdXNlcnN0b2dyb3Vwcy5weTogQWRkZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2ZpbmR1c2Vycy5weTog
QWRkZWQuCisKIDIwMTEtMDYtMjQgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUuCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkKaW5kZXgg
ZjIwNDllMjZkMmYyYmFiYWIxMWRmZTk4NTkxZDExMDM2ZjdiZWI3Ni4uOTdiZGU2NTBjODdjMzMy
OGUwOWNjNTFkNjlkYTMxMGEzNmYxY2JlZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQpAQCAtNDksNiArNDksNzUg
QEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXIgaW1wb3J0IFVzZXIKIGZyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwLCBCZWF1
dGlmdWxTdG9uZVNvdXAsIFNvdXBTdHJhaW5lcgogCiAKK2NsYXNzIEVkaXRVc2Vyc1BhcnNlcihv
YmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fZ3JvdXBfbmFt
ZV90b19ncm91cF9zdHJpbmdfY2FjaGUgPSB7fQorCisgICAgZGVmIF9sb2dpbl9hbmRfdWlkX2Zy
b21fcm93KHNlbGYsIHJvdyk6CisgICAgICAgIGZpcnN0X2NlbGwgPSByb3cuZmluZCgidGQiKQor
ICAgICAgICAjIFRoZSBmaXJzdCByb3cgaXMganVzdCBoZWFkZXJzLCB3ZSBza2lwIGl0LgorICAg
ICAgICBpZiBub3QgZmlyc3RfY2VsbDoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAg
ICMgV2hlbiB0aGVyZSB3ZXJlIG5vIHJlc3VsdHMsIHdlIGhhdmUgYSBmYWtlICI8bm9uZT4iIGVu
dHJ5IGluIHRoZSB0YWJsZS4KKyAgICAgICAgaWYgZmlyc3RfY2VsbC5maW5kKHRleHQ9Ijxub25l
PiIpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgIyBPdGhlcndpc2UgdGhlIDx0
ZD4gY29udGFpbnMgYSBzaW5nbGUgPGE+IHdoaWNoIGNvbnRhaW5zIHRoZSBsb2dpbiBuYW1lIG9y
IGEgc2luZ2xlIDxpPiB3aXRoIHRoZSBzdHJpbmcgIjxub25lPiIuCisgICAgICAgIGFuY2hvcl90
YWcgPSBmaXJzdF9jZWxsLmZpbmQoImEiKQorICAgICAgICBsb2dpbiA9IHVuaWNvZGUoYW5jaG9y
X3RhZy5zdHJpbmcpLnN0cmlwKCkKKyAgICAgICAgdXNlcl9pZCA9IGludChyZS5zZWFyY2gociJ1
c2VyaWQ9KFxkKykiLCBzdHIoYW5jaG9yX3RhZ1snaHJlZiddKSkuZ3JvdXAoMSkpCisgICAgICAg
IHJldHVybiAobG9naW4sIHVzZXJfaWQpCisKKyAgICBkZWYgbG9naW5fdXNlcmlkX3BhaXJzX2Zy
b21fZWRpdF91c2VyX3Jlc3VsdHMoc2VsZiwgcmVzdWx0c19wYWdlKToKKyAgICAgICAgc291cCA9
IEJlYXV0aWZ1bFNvdXAocmVzdWx0c19wYWdlLCBjb252ZXJ0RW50aXRpZXM9QmVhdXRpZnVsU3Rv
bmVTb3VwLkhUTUxfRU5USVRJRVMpCisgICAgICAgIHJlc3VsdHNfdGFibGUgPSBzb3VwLmZpbmQo
aWQ9ImFkbWluX3RhYmxlIikKKyAgICAgICAgbG9naW5fdXNlcmlkX3BhaXJzID0gW3NlbGYuX2xv
Z2luX2FuZF91aWRfZnJvbV9yb3cocm93KSBmb3Igcm93IGluIHJlc3VsdHNfdGFibGUoJ3RyJyld
CisgICAgICAgICMgRmlsdGVyIG91dCBOb25lIGZyb20gdGhlIGxvZ2lucy4KKyAgICAgICAgcmV0
dXJuIGZpbHRlcihsYW1iZGEgcGFpcjogYm9vbChwYWlyKSwgbG9naW5fdXNlcmlkX3BhaXJzKQor
CisgICAgZGVmIF9ncm91cF9uYW1lX2FuZF9zdHJpbmdfZnJvbV9yb3coc2VsZiwgcm93KToKKyAg
ICAgICAgbGFiZWxfZWxlbWVudCA9IHJvdy5maW5kKCdsYWJlbCcpCisgICAgICAgIGdyb3VwX3N0
cmluZyA9IHVuaWNvZGUobGFiZWxfZWxlbWVudFsnZm9yJ10pCisgICAgICAgIGdyb3VwX25hbWUg
PSB1bmljb2RlKGxhYmVsX2VsZW1lbnQuZmluZCgnc3Ryb25nJykuc3RyaW5nKS5yc3RyaXAoJzon
KQorICAgICAgICByZXR1cm4gKGdyb3VwX25hbWUsIGdyb3VwX3N0cmluZykKKworICAgIGRlZiB1
c2VyX2RpY3RfZnJvbV9lZGl0X3VzZXJfcGFnZShzZWxmLCBwYWdlKToKKyAgICAgICAgc291cCA9
IEJlYXV0aWZ1bFNvdXAocGFnZSwgY29udmVydEVudGl0aWVzPUJlYXV0aWZ1bFN0b25lU291cC5I
VE1MX0VOVElUSUVTKQorICAgICAgICB1c2VyX3RhYmxlID0gc291cC5maW5kKCJ0YWJsZSIsIHsn
Y2xhc3MnOiAnbWFpbid9KQorICAgICAgICB1c2VyX2RpY3QgPSB7fQorICAgICAgICBmb3Igcm93
IGluIHVzZXJfdGFibGUoJ3RyJyk6CisgICAgICAgICAgICBsYWJlbF9lbGVtZW50ID0gcm93LmZp
bmQoJ2xhYmVsJykKKyAgICAgICAgICAgIGlmIG5vdCBsYWJlbF9lbGVtZW50OgorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlICAjIFRoaXMgbXVzdCBub3QgYmUgYSByb3cgd2Uga25vdyBob3cgdG8g
cGFyc2UuCisgICAgICAgICAgICBpZiByb3cuZmluZCgndGFibGUnKToKKyAgICAgICAgICAgICAg
ICBjb250aW51ZSAgIyBTa2lwIHRoZSA8dHI+IGhvbGRpbmcgdGhlIGdyb3VwcyB0YWJsZS4KKwor
ICAgICAgICAgICAga2V5ID0gbGFiZWxfZWxlbWVudFsnZm9yJ10KKyAgICAgICAgICAgIGlmICJn
cm91cCIgaW4ga2V5OgorICAgICAgICAgICAgICAgIGtleSA9ICJncm91cHMiCisgICAgICAgICAg
ICAgICAgdmFsdWUgPSB1c2VyX2RpY3QuZ2V0KCdncm91cHMnLCBzZXQoKSkKKyAgICAgICAgICAg
ICAgICAjIFdlIG11c3QgYmUgcGFyc2luZyBhICJ0ciIgaW5zaWRlIHRoZSBpbm5lciBncm91cCB0
YWJsZS4KKyAgICAgICAgICAgICAgICAoZ3JvdXBfbmFtZSwgXykgPSBzZWxmLl9ncm91cF9uYW1l
X2FuZF9zdHJpbmdfZnJvbV9yb3cocm93KQorICAgICAgICAgICAgICAgIGlmIHJvdy5maW5kKCdp
bnB1dCcsIHsndHlwZSc6ICdjaGVja2JveCcsICdjaGVja2VkJzogJ2NoZWNrZWQnfSk6CisgICAg
ICAgICAgICAgICAgICAgIHZhbHVlLmFkZChncm91cF9uYW1lKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IHVuaWNvZGUocm93LmZpbmQoJ3RkJykuc3RyaW5nKS5z
dHJpcCgpCisgICAgICAgICAgICB1c2VyX2RpY3Rba2V5XSA9IHZhbHVlCisgICAgICAgIHJldHVy
biB1c2VyX2RpY3QKKworICAgIGRlZiBfZ3JvdXBfcm93c19mcm9tX2VkaXRfdXNlcl9wYWdlKHNl
bGYsIGVkaXRfdXNlcl9wYWdlKToKKyAgICAgICAgc291cCA9IEJlYXV0aWZ1bFNvdXAoZWRpdF91
c2VyX3BhZ2UsIGNvbnZlcnRFbnRpdGllcz1CZWF1dGlmdWxTb3VwLkhUTUxfRU5USVRJRVMpCisg
ICAgICAgIHJldHVybiBzb3VwKCd0ZCcsIHsnY2xhc3MnOiAnZ3JvdXBuYW1lJ30pCisKKyAgICBk
ZWYgZ3JvdXBfc3RyaW5nX2Zyb21fbmFtZShzZWxmLCBlZGl0X3VzZXJfcGFnZSwgZ3JvdXBfbmFt
ZSk6CisgICAgICAgICMgQnVnemlsbGEgdXNlcyAiZ3JvdXBfTlVNQkVSIiBzdHJpbmdzLCB3aGlj
aCBtYXkgYmUgZGlmZmVyZW50IHBlciBpbnN0YWxsCisgICAgICAgICMgc28gd2UganVzdCBsb29r
IHRoZW0gdXAgb25jZSBhbmQgY2FjaGUgdGhlbS4KKyAgICAgICAgaWYgbm90IHNlbGYuX2dyb3Vw
X25hbWVfdG9fZ3JvdXBfc3RyaW5nX2NhY2hlOgorICAgICAgICAgICAgcm93cyA9IHNlbGYuX2dy
b3VwX3Jvd3NfZnJvbV9lZGl0X3VzZXJfcGFnZShlZGl0X3VzZXJfcGFnZSkKKyAgICAgICAgICAg
IG5hbWVfc3RyaW5nX3BhaXJzID0gbWFwKHNlbGYuX2dyb3VwX25hbWVfYW5kX3N0cmluZ19mcm9t
X3Jvdywgcm93cykKKyAgICAgICAgICAgIHNlbGYuX2dyb3VwX25hbWVfdG9fZ3JvdXBfc3RyaW5n
X2NhY2hlID0gZGljdChuYW1lX3N0cmluZ19wYWlycykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2dy
b3VwX25hbWVfdG9fZ3JvdXBfc3RyaW5nX2NhY2hlW2dyb3VwX25hbWVdCisKKwogZGVmIHRpbWVz
dGFtcCgpOgogICAgIHJldHVybiBkYXRldGltZS5ub3coKS5zdHJmdGltZSgiJVklbSVkJUglTSVT
IikKIApAQCAtMTc0LDUwICsyNDMsNTEgQEAgY2xhc3MgQnVnemlsbGFRdWVyaWVzKG9iamVjdCk6
CiAgICAgICAgIHJldmlld19xdWV1ZV91cmwgPSAicmVxdWVzdC5jZ2k/YWN0aW9uPXF1ZXVlJnR5
cGU9cmV2aWV3Jmdyb3VwPXR5cGUiCiAgICAgICAgIHJldHVybiBzZWxmLl9mZXRjaF9hdHRhY2ht
ZW50X2lkc19yZXF1ZXN0X3F1ZXJ5KHJldmlld19xdWV1ZV91cmwpCiAKLSAgICBkZWYgX2xvZ2lu
X2Zyb21fcm93KHNlbGYsIHJvdyk6Ci0gICAgICAgIGZpcnN0X2NlbGwgPSByb3cuZmluZCgidGQi
KQotICAgICAgICAjIFRoZSBmaXJzdCByb3cgaXMganVzdCBoZWFkZXJzLCB3ZSBza2lwIGl0Lgot
ICAgICAgICBpZiBub3QgZmlyc3RfY2VsbDoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAg
ICAgICMgV2hlbiB0aGVyZSB3ZXJlIG5vIHJlc3VsdHMsIHdlIGhhdmUgYSBmYWtlICI8bm9uZT4i
IGVudHJ5IGluIHRoZSB0YWJsZS4KLSAgICAgICAgaWYgZmlyc3RfY2VsbC5maW5kKHRleHQ9Ijxu
b25lPiIpOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgIyBPdGhlcndpc2UgdGhl
IDx0ZD4gY29udGFpbnMgYSBzaW5nbGUgPGE+IHdoaWNoIGNvbnRhaW5zIHRoZSBsb2dpbiBuYW1l
IG9yIGEgc2luZ2xlIDxpPiB3aXRoIHRoZSBzdHJpbmcgIjxub25lPiIuCi0gICAgICAgIHJldHVy
biBzdHIoZmlyc3RfY2VsbC5maW5kKCJhIikuc3RyaW5nKS5zdHJpcCgpCi0KLSAgICBkZWYgX3Bh
cnNlX2xvZ2luc19mcm9tX2VkaXR1c2Vyc19yZXN1bHRzKHNlbGYsIHJlc3VsdHNfcGFnZSk6Ci0g
ICAgICAgIHNvdXAgPSBCZWF1dGlmdWxTb3VwKHJlc3VsdHNfcGFnZSwgY29udmVydEVudGl0aWVz
PUJlYXV0aWZ1bFN0b25lU291cC5IVE1MX0VOVElUSUVTKQotICAgICAgICByZXN1bHRzX3RhYmxl
ID0gc291cC5maW5kKGlkPSJhZG1pbl90YWJsZSIpCi0gICAgICAgIGxvZ2lucyA9IFtzZWxmLl9s
b2dpbl9mcm9tX3Jvdyhyb3cpIGZvciByb3cgaW4gcmVzdWx0c190YWJsZSgndHInKV0KLSAgICAg
ICAgIyBGaWx0ZXIgb3V0IE5vbmUgZnJvbSB0aGUgbG9naW5zLgotICAgICAgICByZXR1cm4gZmls
dGVyKGxhbWJkYSBsb2dpbjogYm9vbChsb2dpbiksIGxvZ2lucykKLQogICAgICMgVGhpcyBvbmx5
IHdvcmtzIGlmIHlvdXIgYWNjb3VudCBoYXMgZWRpdHVzZXIgcHJpdmlsZWdlcy4KICAgICAjIFdl
IGNvdWxkIGVhc2lseSBwYXJzZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy91c2VycHJlZnMuY2dp
P3RhYj1wZXJtaXNzaW9ucyB0bwogICAgICMgY2hlY2sgcGVybWlzc2lvbnMsIGJ1dCBidWd6aWxs
YSB3aWxsIGp1c3QgcmV0dXJuIGFuIGVycm9yIGlmIHdlIGRvbid0IGhhdmUgdGhlbS4KLSAgICBk
ZWYgZmV0Y2hfbG9naW5zX21hdGNoaW5nX3N1YnN0cmluZyhzZWxmLCBzZWFyY2hfc3RyaW5nKToK
KyAgICBkZWYgZmV0Y2hfbG9naW5fdXNlcmlkX3BhaXJzX21hdGNoaW5nX3N1YnN0cmluZyhzZWxm
LCBzZWFyY2hfc3RyaW5nKToKICAgICAgICAgcmV2aWV3X3F1ZXVlX3VybCA9ICJlZGl0dXNlcnMu
Y2dpP2FjdGlvbj1saXN0Jm1hdGNodmFsdWU9bG9naW5fbmFtZSZtYXRjaHN0cj0lcyZtYXRjaHR5
cGU9c3Vic3RyIiAlIHVybGxpYi5xdW90ZShzZWFyY2hfc3RyaW5nKQogICAgICAgICByZXN1bHRz
X3BhZ2UgPSBzZWxmLl9sb2FkX3F1ZXJ5KHJldmlld19xdWV1ZV91cmwpCi0gICAgICAgIHJldHVy
biBzZWxmLl9wYXJzZV9sb2dpbnNfZnJvbV9lZGl0dXNlcnNfcmVzdWx0cyhyZXN1bHRzX3BhZ2Up
CisgICAgICAgICMgV2UgY291bGQgcHVsbCB0aGUgRWRpdFVzZXJzUGFyc2VyIG9mZiBCdWd6aWxs
YSBpZiBuZWVkZWQuCisgICAgICAgIHJldHVybiBFZGl0VXNlcnNQYXJzZXIoKS5sb2dpbl91c2Vy
aWRfcGFpcnNfZnJvbV9lZGl0X3VzZXJfcmVzdWx0cyhyZXN1bHRzX3BhZ2UpCiAKKyAgICAjIEZJ
WE1FOiBXZSBzaG91bGQgY29uc2lkZXIgYWRkaW5nIGEgQnVnemlsbGFVc2VyIGNsYXNzLgorICAg
IGRlZiBmZXRjaF9sb2dpbnNfbWF0Y2hpbmdfc3Vic3RyaW5nKHNlbGYsIHNlYXJjaF9zdHJpbmcp
OgorICAgICAgICBwYWlycyA9IHNlbGYuZmV0Y2hfbG9naW5fdXNlcmlkX3BhaXJzX21hdGNoaW5n
X3N1YnN0cmluZyhzZWFyY2hfc3RyaW5nKQorICAgICAgICByZXR1cm4gbWFwKGxhbWJkYSBwYWly
OiBwYWlyWzBdLCBwYWlycykKIAotY2xhc3MgQnVnemlsbGEob2JqZWN0KToKIAorY2xhc3MgQnVn
emlsbGEob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZHJ5cnVuPUZhbHNlLCBjb21t
aXR0ZXJzPWNvbW1pdHRlcnMuQ29tbWl0dGVyTGlzdCgpKToKICAgICAgICAgc2VsZi5kcnlydW4g
PSBkcnlydW4KICAgICAgICAgc2VsZi5hdXRoZW50aWNhdGVkID0gRmFsc2UKICAgICAgICAgc2Vs
Zi5xdWVyaWVzID0gQnVnemlsbGFRdWVyaWVzKHNlbGYpCiAgICAgICAgIHNlbGYuY29tbWl0dGVy
cyA9IGNvbW1pdHRlcnMKICAgICAgICAgc2VsZi5jYWNoZWRfcXVpcHMgPSBbXQorICAgICAgICBz
ZWxmLmVkaXRfdXNlcl9wYXJzZXIgPSBFZGl0VXNlcnNQYXJzZXIoKQogCiAgICAgICAgICMgRklY
TUU6IFdlIHNob3VsZCB1c2Ugc29tZSBzb3J0IG9mIEJyb3dzZXIgbW9jayBvYmplY3Qgd2hlbiBp
biBkcnlydW4KICAgICAgICAgIyBtb2RlICh0byBwcmV2ZW50IGFueSBtaXN0YWtlcykuCiAgICAg
ICAgIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZSBpbXBv
cnQgQnJvd3NlcgogICAgICAgICBzZWxmLmJyb3dzZXIgPSBCcm93c2VyKCkKLSAgICAgICAgIyBJ
Z25vcmUgYnVncy53ZWJraXQub3JnL3JvYm90cy50eHQgdW50aWwgd2UgZml4IGl0IHRvIGFsbG93
IHRoaXMKLSAgICAgICAgIyBzY3JpcHQuCisgICAgICAgICMgSWdub3JlIGJ1Z3Mud2Via2l0Lm9y
Zy9yb2JvdHMudHh0IHVudGlsIHdlIGZpeCBpdCB0byBhbGxvdyB0aGlzIHNjcmlwdC4KICAgICAg
ICAgc2VsZi5icm93c2VyLnNldF9oYW5kbGVfcm9ib3RzKEZhbHNlKQogCisgICAgZGVmIGZldGNo
X3VzZXIoc2VsZiwgdXNlcl9pZCk6CisgICAgICAgIHNlbGYuYXV0aGVudGljYXRlKCkKKyAgICAg
ICAgZWRpdF91c2VyX3BhZ2UgPSBzZWxmLmJyb3dzZXIub3BlbihzZWxmLmVkaXRfdXNlcl91cmxf
Zm9yX2lkKHVzZXJfaWQpKQorICAgICAgICByZXR1cm4gc2VsZi5lZGl0X3VzZXJfcGFyc2VyLnVz
ZXJfZGljdF9mcm9tX2VkaXRfdXNlcl9wYWdlKGVkaXRfdXNlcl9wYWdlKQorCisgICAgZGVmIGFk
ZF91c2VyX3RvX2dyb3VwcyhzZWxmLCB1c2VyX2lkLCBncm91cF9uYW1lcyk6CisgICAgICAgIHNl
bGYuYXV0aGVudGljYXRlKCkKKyAgICAgICAgdXNlcl9lZGl0X3BhZ2UgPSBzZWxmLmJyb3dzZXIu
b3BlbihzZWxmLmVkaXRfdXNlcl91cmxfZm9yX2lkKHVzZXJfaWQpKQorICAgICAgICBzZWxmLmJy
b3dzZXIuc2VsZWN0X2Zvcm0obnI9MSkKKyAgICAgICAgZm9yIGdyb3VwX25hbWUgaW4gZ3JvdXBf
bmFtZXM6CisgICAgICAgICAgICBncm91cF9zdHJpbmcgPSBzZWxmLmVkaXRfdXNlcl9wYXJzZXIu
Z3JvdXBfc3RyaW5nX2Zyb21fbmFtZSh1c2VyX2VkaXRfcGFnZSwgZ3JvdXBfbmFtZSkKKyAgICAg
ICAgICAgIHNlbGYuYnJvd3Nlci5maW5kX2NvbnRyb2woZ3JvdXBfc3RyaW5nKS5pdGVtc1swXS5z
ZWxlY3RlZCA9IFRydWUKKyAgICAgICAgc2VsZi5icm93c2VyLnN1Ym1pdCgpCisKICAgICBkZWYg
cXVpcHMoc2VsZik6CiAgICAgICAgICMgV2Ugb25seSBmZXRjaCBhbmQgcGFyc2UgdGhlIGxpc3Qg
b2YgcXVpcHMgb25jZSBwZXIgaW5zdGFudGlhdGlvbgogICAgICAgICAjIHNvIHRoYXQgd2UgZG8g
bm90IGJ1cmRlbiBidWdzLndlYmtpdC5vcmcuCkBAIC0yNDksNiArMzE5LDkgQEAgY2xhc3MgQnVn
emlsbGEob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGF0dGFjaG1lbnRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhY3Rpb25fcGFyYW0pCiAKKyAgICBkZWYgZWRpdF91c2VyX3VybF9mb3JfaWQoc2Vs
ZiwgdXNlcl9pZCk6CisgICAgICAgIHJldHVybiAiJXNlZGl0dXNlcnMuY2dpP2FjdGlvbj1lZGl0
JnVzZXJpZD0lcyIgJSAoY29uZmlnX3VybHMuYnVnX3NlcnZlcl91cmwsIHVzZXJfaWQpCisKICAg
ICBkZWYgX3BhcnNlX2F0dGFjaG1lbnRfZmxhZyhzZWxmLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ19u
YW1lLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3pp
bGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
bmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5CmluZGV4IGIwMmUyMGQ3Y2RlMzM5MTMw
OGY0ODljNTcyMWNhOWE2YmI4NTZlOGEuLjQ0YTc3N2Y1OTZiOGQ0ZmIzMTlkYWI5NDgxMmYwMjY5
ZjE3NGFlYzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9i
dWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkKQEAgLTQyMiw2ICs0MjIs
OCBAQCBjbGFzcyBCdWd6aWxsYVF1ZXJpZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICA8
L3RhYmxlPgogIiIiCiAKKworY2xhc3MgRWRpdFVzZXJzUGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgX2V4YW1wbGVfZW1wdHlfdXNlcl9yZXN1bHRzID0gIiIiCiAgICAgPGRpdiBp
ZD0iYnVnemlsbGEtYm9keSI+CiAgICAgPHA+MCB1c2VycyBmb3VuZC48L3A+CkBAIC00MzgsMTEg
KzQ0MCw3MiBAQCBjbGFzcyBCdWd6aWxsYVF1ZXJpZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICA8L3RhYmxlPgogICAgICIiIgogCi0gICAgZGVmIF9hc3NlcnRfcGFyc2VkX2xvZ2lucyhz
ZWxmLCByZXN1bHRzX3BhZ2UsIGV4cGVjdGVkX2xvZ2lucyk6Ci0gICAgICAgIHF1ZXJpZXMgPSBC
dWd6aWxsYVF1ZXJpZXMoTm9uZSkKLSAgICAgICAgbG9naW5zID0gcXVlcmllcy5fcGFyc2VfbG9n
aW5zX2Zyb21fZWRpdHVzZXJzX3Jlc3VsdHMocmVzdWx0c19wYWdlKQorICAgIGRlZiBfYXNzZXJ0
X2xvZ2luX3VzZXJpZF9wYWlycyhzZWxmLCByZXN1bHRzX3BhZ2UsIGV4cGVjdGVkX2xvZ2lucyk6
CisgICAgICAgIHBhcnNlciA9IEVkaXRVc2Vyc1BhcnNlcigpCisgICAgICAgIGxvZ2lucyA9IHBh
cnNlci5sb2dpbl91c2VyaWRfcGFpcnNfZnJvbV9lZGl0X3VzZXJfcmVzdWx0cyhyZXN1bHRzX3Bh
Z2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxvZ2lucywgZXhwZWN0ZWRfbG9naW5zKQog
Ci0gICAgZGVmIHRlc3RfcGFyc2VfbG9naW5zX2Zyb21fZWRpdHVzZXJzX3Jlc3VsdHMoc2VsZik6
Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9wYXJzZWRfbG9naW5zKHNlbGYuX2V4YW1wbGVfdXNlcl9y
ZXN1bHRzLCBbImFiYXJ0aEB3ZWJraXQub3JnIl0pCi0gICAgICAgIHNlbGYuX2Fzc2VydF9wYXJz
ZWRfbG9naW5zKHNlbGYuX2V4YW1wbGVfZW1wdHlfdXNlcl9yZXN1bHRzLCBbXSkKKyAgICBkZWYg
dGVzdF9sb2dpbnNfZnJvbV9lZGl0dXNlcnNfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgc2VsZi5f
YXNzZXJ0X2xvZ2luX3VzZXJpZF9wYWlycyhzZWxmLl9leGFtcGxlX3VzZXJfcmVzdWx0cywgWygi
YWJhcnRoQHdlYmtpdC5vcmciLCAxMjM0KV0pCisgICAgICAgIHNlbGYuX2Fzc2VydF9sb2dpbl91
c2VyaWRfcGFpcnMoc2VsZi5fZXhhbXBsZV9lbXB0eV91c2VyX3Jlc3VsdHMsIFtdKQorCisgICAg
X2V4YW1wbGVfdXNlcl9wYWdlID0gIiIiPHRhYmxlIGNsYXNzPSJtYWluIj48dHI+CisgIDx0aD48
bGFiZWwgZm9yPSJsb2dpbiI+TG9naW4gbmFtZTo8L2xhYmVsPjwvdGg+CisgIDx0ZD5lcmljJiM2
NDt3ZWJraXQub3JnCisgIDwvdGQ+Cis8L3RyPgorPHRyPgorICA8dGg+PGxhYmVsIGZvcj0ibmFt
ZSI+UmVhbCBuYW1lOjwvbGFiZWw+PC90aD4KKyAgPHRkPkVyaWMgU2VpZGVsCisgIDwvdGQ+Cis8
L3RyPgorICAgIDx0cj4KKyAgICAgIDx0aD5Hcm91cCBhY2Nlc3M6PC90aD4KKyAgICAgIDx0ZD4K
KyAgICAgICAgPHRhYmxlIGNsYXNzPSJncm91cHMiPgorICAgICAgICAgIDx0cj4KKyAgICAgICAg
ICA8L3RyPgorICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgIDx0aCBjb2xzcGFuPSIyIj5Vc2Vy
IGlzIGEgbWVtYmVyIG9mIHRoZXNlIGdyb3VwczwvdGg+CisgICAgICAgICAgPC90cj4KKyAgICAg
ICAgICAgIDx0ciBjbGFzcz0iZGlyZWN0Ij4KKyAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjaGVj
a2JveCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWQ9Imdyb3VwXzciCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJncm91cF83Igor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9IjEiIGNoZWNrZWQ9ImNoZWNrZWQiIC8+
PC90ZD4KKyAgICAgICAgICAgICAgPHRkIGNsYXNzPSJncm91cG5hbWUiPgorICAgICAgICAgICAg
ICAgIDxsYWJlbCBmb3I9Imdyb3VwXzciPgorICAgICAgICAgICAgICAgICAgPHN0cm9uZz5jYW5j
b25maXJtOjwvc3Ryb25nPgorICAgICAgICAgICAgICAgICAgQ2FuIGNvbmZpcm0gYSBidWcuCisg
ICAgICAgICAgICAgICAgPC9sYWJlbD4KKyAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAg
IDwvdHI+CisgICAgICAgICAgICA8dHIgY2xhc3M9ImRpcmVjdCI+CisgICAgICAgICAgICAgIDx0
ZCBjbGFzcz0iY2hlY2tib3giPjxpbnB1dCB0eXBlPSJjaGVja2JveCIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlkPSJncm91cF82IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFt
ZT0iZ3JvdXBfNiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSIxIiAvPjwvdGQ+
CisgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZ3JvdXBuYW1lIj4KKyAgICAgICAgICAgICAgICA8
bGFiZWwgZm9yPSJncm91cF82Ij4KKyAgICAgICAgICAgICAgICAgIDxzdHJvbmc+ZWRpdGJ1Z3M6
PC9zdHJvbmc+CisgICAgICAgICAgICAgICAgICBDYW4gZWRpdCBhbGwgYXNwZWN0cyBvZiBhbnkg
YnVnLgorICAgICAgICAgICAgICAgIC9sYWJlbD4KKyAgICAgICAgICAgICAgPC90ZD4KKyAgICAg
ICAgICAgIDwvdHI+CisgICAgICAgIDwvdGFibGU+CisgICAgICA8L3RkPgorICAgIDwvdHI+CisK
KyAgPHRyPgorICAgIDx0aD5Qcm9kdWN0IHJlc3BvbnNpYmlsaXRpZXM6PC90aD4KKyAgICA8dGQ+
CisgICAgICAgIDxlbT5ub25lPC9lbT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4iIiIK
KworICAgIGRlZiB0ZXN0X3VzZXJfZGljdF9mcm9tX2VkaXRfdXNlcl9wYWdlKHNlbGYpOgorICAg
ICAgICBwYXJzZXIgPSBFZGl0VXNlcnNQYXJzZXIoKQorICAgICAgICB1c2VyX2RpY3QgPSBwYXJz
ZXIudXNlcl9kaWN0X2Zyb21fZWRpdF91c2VyX3BhZ2Uoc2VsZi5fZXhhbXBsZV91c2VyX3BhZ2Up
CisgICAgICAgIGV4cGVjdGVkX3VzZXJfZGljdCA9IHt1J2xvZ2luJzogdSdlcmljQHdlYmtpdC5v
cmcnLCB1J2dyb3Vwcyc6IHNldChbJ2NhbmNvbmZpcm0nXSksIHUnbmFtZSc6IHUnRXJpYyBTZWlk
ZWwnfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3VzZXJfZGljdCwgdXNlcl9k
aWN0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL19f
aW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL19faW5pdF9f
LnB5CmluZGV4IDI2YmQxOTU2YTU1ZDg3OGE1MzYxMjE4OWY5YzU2MGY4OTFkZWQ3ZWMuLmRhYzBm
MjQxNDQ0MDQ2YTA4MDU4OGYyNzMzMGZhMTYyZDJjM2M0MGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19pbml0X18ucHkKQEAgLTEsOSArMSwxMSBAQAog
IyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxl
IGZpbGVzCiAKK2Zyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5hZGR1c2Vyc3RvZ3JvdXBzIGlt
cG9ydCBBZGRVc2Vyc1RvR3JvdXBzCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuYnVnc2Vh
cmNoIGltcG9ydCBCdWdTZWFyY2gKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5idWdmb3J0
ZXN0IGltcG9ydCBCdWdGb3JUZXN0CiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuZG93bmxv
YWQgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5lYXJseXdhcm5pbmdzeXN0
ZW0gaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5maW5kdXNlcnMgaW1wb3J0
ICoKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5vcGVuYnVncyBpbXBvcnQgT3BlbkJ1Z3MK
IGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5wcmV0dHlkaWZmIGltcG9ydCBQcmV0dHlEaWZm
CiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMucXVlcmllcyBpbXBvcnQgKgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2FkZHVzZXJzdG9ncm91cHMu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvYWRkdXNlcnN0b2dyb3Vw
cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMjg2OTU4NGRiZjkzNzhjZjhiM2EwNDNkMzMwMGRkODQwY2JjNDJk
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L2FkZHVzZXJzdG9ncm91cHMucHkKQEAgLTAsMCArMSw2NSBAQAorIyBDb3B5cmlnaHQgKGMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2Zyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9ydCBBYnN0cmFjdERlY2xh
cmF0aXZlQ29tbWFuZAorCisKK2NsYXNzIEFkZFVzZXJzVG9Hcm91cHMoQWJzdHJhY3REZWNsYXJh
dGl2ZUNvbW1hbmQpOgorICAgIG5hbWUgPSAiYWRkLXVzZXJzLXRvLWdyb3VwcyIKKyAgICBoZWxw
X3RleHQgPSAiQWRkIHVzZXJzIG1hdGNoaW5nIHN1YnRyaW5nIHRvIHNwZWNpZmllZCBncm91cHMi
CisKKyAgICAjIFRoaXMgcHJvYmFibHkgYmVsb25ncyBpbiBidWd6aWxsYS5weQorICAgIGtub3du
X2dyb3VwcyA9IFsnY2FuY29uZmlybScsICdlZGl0YnVncyddCisKKyAgICBkZWYgZXhlY3V0ZShz
ZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKKyAgICAgICAgc2VhcmNoX3N0cmluZyA9IGFyZ3Nb
MF0KKyAgICAgICAgIyBGSVhNRTogV2UgY291bGQgYWxsb3cgdXNlcnMgdG8gc3BlY2lmeSBncm91
cHMgb24gdGhlIGNvbW1hbmQgbGluZS4KKyAgICAgICAgbGlzdF90aXRsZSA9ICdBZGQgdXNlcnMg
bWF0Y2hpbmcgIiVzIiB3aGljaCBncm91cHM/JyAlIHNlYXJjaF9zdHJpbmcKKyAgICAgICAgIyBG
SVhNRTogTmVlZCBhIHdheSB0byBzcGVjaWZ5IHRoYXQgIm5vbmUiIGlzIG5vdCBhbGxvd2VkLgor
ICAgICAgICAjIEZJWE1FOiBXZSBjb3VsZCBsb29rdXAgd2hhdCBncm91cHMgdGhlIGN1cnJlbnQg
dXNlciBpcyBhYmxlIHRvIGdyYW50IGZyb20gYnVnemlsbGEuCisgICAgICAgIGdyb3VwcyA9IHRv
b2wudXNlci5wcm9tcHRfd2l0aF9saXN0KGxpc3RfdGl0bGUsIHNlbGYua25vd25fZ3JvdXBzLCBj
YW5fY2hvb3NlX211bHRpcGxlPVRydWUpCisgICAgICAgIGlmIG5vdCBncm91cHM6CisgICAgICAg
ICAgICBwcmludCAiTm8gZ3JvdXBzIHNwZWNpZmllZC4iCisgICAgICAgICAgICByZXR1cm4KKwor
ICAgICAgICBsb2dpbl91c2VyaWRfcGFpcnMgPSB0b29sLmJ1Z3MucXVlcmllcy5mZXRjaF9sb2dp
bl91c2VyaWRfcGFpcnNfbWF0Y2hpbmdfc3Vic3RyaW5nKHNlYXJjaF9zdHJpbmcpCisgICAgICAg
IGlmIG5vdCBsb2dpbl91c2VyaWRfcGFpcnM6CisgICAgICAgICAgICBwcmludCAiTm8gdXNlcnMg
Zm91bmQgbWF0Y2hpbmcgJyVzJyIgJSBzZWFyY2hfc3RyaW5nCisgICAgICAgICAgICByZXR1cm4K
KworICAgICAgICBwcmludCAiRm91bmQgJXMgdXNlcnMgbWF0Y2hpbmcgJXM6IiAlIChsZW4obG9n
aW5fdXNlcmlkX3BhaXJzKSwgc2VhcmNoX3N0cmluZykKKyAgICAgICAgZm9yIChsb2dpbiwgdXNl
cl9pZCkgaW4gbG9naW5fdXNlcmlkX3BhaXJzOgorICAgICAgICAgICAgcHJpbnQgIiVzICglcyki
ICUgKGxvZ2luLCB1c2VyX2lkKQorCisgICAgICAgIGNvbmZpcm1fbWVzc2FnZSA9ICJBcmUgeW91
IHN1cmUgeW91IHdhbnQgYWRkICVzIHVzZXJzIHRvIGdyb3VwcyAlcz8gIChUaGlzIGFjdGlvbiBj
YW5ub3QgYmUgdW5kb25lIHVzaW5nIHdlYmtpdC1wYXRjaC4pIiAlIChsZW4obG9naW5fdXNlcmlk
X3BhaXJzKSwgZ3JvdXBzKQorICAgICAgICBpZiBub3QgdG9vbC51c2VyLmNvbmZpcm0oY29uZmly
bV9tZXNzYWdlKToKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGZvciAobG9naW4sIHVz
ZXJfaWQpIGluIGxvZ2luX3VzZXJpZF9wYWlyczoKKyAgICAgICAgICAgIHByaW50ICJBZGRpbmcg
JXMgdG8gJXMiICUgKGxvZ2luLCBncm91cHMpCisgICAgICAgICAgICB0b29sLmJ1Z3MuYWRkX3Vz
ZXJfdG9fZ3JvdXBzKHVzZXJfaWQsIGdyb3VwcykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9maW5kdXNlcnMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvZmluZHVzZXJzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzNjNjOGNmMjQ3ZGZh
OWFkMmRhZTU3YjA3MWU2YmQ4MDhkYjdhNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZmluZHVzZXJzLnB5CkBAIC0wLDAgKzEsNDQgQEAK
KyMgQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24u
CisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBp
bXBvcnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKKworCitjbGFzcyBGaW5kVXNlcnMoQWJz
dHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgorICAgIG5hbWUgPSAiZmluZC11c2VycyIKKyAgICBo
ZWxwX3RleHQgPSAiRmluZCB1c2VycyBtYXRjaGluZyBzdWJzdHJpbmciCisKKyAgICBkZWYgZXhl
Y3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKKyAgICAgICAgc2VhcmNoX3N0cmluZyA9
IGFyZ3NbMF0KKyAgICAgICAgbG9naW5fdXNlcmlkX3BhaXJzID0gdG9vbC5idWdzLnF1ZXJpZXMu
ZmV0Y2hfbG9naW5fdXNlcmlkX3BhaXJzX21hdGNoaW5nX3N1YnN0cmluZyhzZWFyY2hfc3RyaW5n
KQorICAgICAgICBmb3IgKGxvZ2luLCB1c2VyX2lkKSBpbiBsb2dpbl91c2VyaWRfcGFpcnM6Cisg
ICAgICAgICAgICB1c2VyID0gdG9vbC5idWdzLmZldGNoX3VzZXIodXNlcl9pZCkKKyAgICAgICAg
ICAgIGdyb3Vwc19zdHJpbmcgPSAiLCAiLmpvaW4odXNlclsnZ3JvdXBzJ10pIGlmIHVzZXJbJ2dy
b3VwcyddIGVsc2UgIm5vbmUiCisgICAgICAgICAgICBwcmludCAiJXMgPCVzPiAoJXMpICglcyki
ICUgKHVzZXJbJ25hbWUnXSwgdXNlclsnbG9naW4nXSwgdXNlcl9pZCwgZ3JvdXBzX3N0cmluZykK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByaW50ICJObyB1c2VycyBmb3VuZCBtYXRjaGlu
ZyAnJXMnIiAlIHNlYXJjaF9zdHJpbmcK
</data>
<flag name="review"
          id="92784"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>