<?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>28222</bug_id>
          
          <creation_ts>2009-08-12 11:36:46 -0700</creation_ts>
          <short_desc>bugzilla-tool needs a way to ask build.webkit.org if the bots are passing</short_desc>
          <delta_ts>2009-08-19 17:13:10 -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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>139452</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-12 11:36:46 -0700</bug_when>
    <thetext>bugzilla-tool needs a way to ask build.webkit.org if the bots are passing

If they&apos;re not passing we should not run the --commit-queue, etc.

I&apos;d rather not scrape the buildbot page, but we could.  I don&apos;t want to put too much extra load on the buildbot master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140859</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 16:13:01 -0700</bug_when>
    <thetext>I have a patch which I&apos;m testing now.  Will attach for others to see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140860</commentid>
    <comment_count>2</comment_count>
      <attachid>34999</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 16:13:19 -0700</bug_when>
    <thetext>Created attachment 34999
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140861</commentid>
    <comment_count>3</comment_count>
      <attachid>35000</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 16:18:12 -0700</bug_when>
    <thetext>Created attachment 35000
Updated patch which actually passed the unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140862</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 16:21:31 -0700</bug_when>
    <thetext>I don&apos;t know much about buildbot&apos;s xmlrpc (or xmlrpc in general).  It might be possible to do all this and more via a few xmlrpc calls:
http://buildbot.net/apidocs/buildbot.status.web.xmlrpc.XMLRPCServer-class.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140910</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-17 17:25:12 -0700</bug_when>
    <thetext>This patch doesn&apos;t seem to call ensure_builders_are_green.  Did you mean to call that during land-diff and land-patches?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140912</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 17:26:23 -0700</bug_when>
    <thetext>Yes. :)  Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141007</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 22:48:28 -0700</bug_when>
    <thetext>Yay!  It&apos;s working!

Sleeping.... Mon Aug 17 22:33:06 PDT 2009
Fetching http://build.webkit.org/one_box_per_builder
ERROR: Builders at build.webkit.org are red, please do not commit.  Pass --ignore-builders to bypass this check.
Fetching http://build.webkit.org/one_box_per_builder
ERROR: Builders at build.webkit.org are red, please do not commit.  Pass --ignore-builders to bypass this check.
Sleeping.... Mon Aug 17 22:43:09 PDT 2009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141008</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 22:49:09 -0700</bug_when>
    <thetext>(The windows buildbots are currently red, thus the commit-queue is correctly pausing itself until they roll green again.  It wakes up every 10 minutes to check.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141009</commentid>
    <comment_count>9</comment_count>
      <attachid>35000</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-08-17 22:53:44 -0700</bug_when>
    <thetext>Comment on attachment 35000
Updated patch which actually passed the unit tests

 47         # Other builders should be added to this list once they&apos;re known to be stable.
 48         self.core_builder_names_regexps = [ &apos;Leopard&apos;, &quot;Windows.*Build&quot; ]

Why is Tiger being left off?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141011</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 22:57:03 -0700</bug_when>
    <thetext>I just picked the bots which seemed the most consistent. If you&apos;d like, I can add Tiger there too.  It seems that tiger breaks rather often, and we don&apos;t bother to &quot;close&quot; the tree when it does.  When Leopard or the Windows build breaks we seem to have fire-drills.  I wasn&apos;t really trying to make policy with this change, so much as teach the commit-queue about our existing policy.  I&apos;m also happy to make the commit-queue block on all bots being green, but that&apos;s probably extreme.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141634</commentid>
    <comment_count>11</comment_count>
      <attachid>35159</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-19 16:41:41 -0700</bug_when>
    <thetext>Created attachment 35159
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141636</commentid>
    <comment_count>12</comment_count>
      <attachid>35159</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-19 16:50:23 -0700</bug_when>
    <thetext>Comment on attachment 35159
Patch v1

Great!  Mark, we can iterate on the list of builders if this list isn&apos;t sufficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141649</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-19 17:13:10 -0700</bug_when>
    <thetext>Committed r47532: &lt;http://trac.webkit.org/changeset/47532&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34999</attachid>
            <date>2009-08-17 16:13:19 -0700</date>
            <delta_ts>2009-08-17 16:18:08 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-28222-20090817161319.patch</filename>
            <type>text/plain</type>
            <size>14007</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbCBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbAppbmRleCAyZTY2Y2VhLi5mZDc5ZGE4IDEwMDc1NQot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9idWd6aWxsYS10b29sCkBAIC00Myw2ICs0Myw3IEBAIGZyb20gb3B0cGFyc2UgaW1w
b3J0IE9wdGlvblBhcnNlciwgSW5kZW50ZWRIZWxwRm9ybWF0dGVyLCBTVVBQUkVTU19VU0FHRSwg
bWFrZV9vCiBmcm9tIG1vZHVsZXMuYnVnemlsbGEgaW1wb3J0IEJ1Z3ppbGxhCiBmcm9tIG1vZHVs
ZXMubG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxvZwogZnJvbSBtb2R1bGVzLnNjbSBpbXBvcnQgQ29t
bWl0TWVzc2FnZSwgZGV0ZWN0X3NjbV9zeXN0ZW0sIFNjcmlwdEVycm9yCitmcm9tIG1vZHVsZXMu
YnVpbGRib3QgaW1wb3J0IEJ1aWxkQm90CiAKIGRlZiBwbHVyYWwobm91bik6CiAgICAgIyBUaGlz
IGlzIGEgZHVtYiBwbHVyYWwoKSBpbXBsZW1lbnRhdGlvbiB3aGljaCB3YXMganVzdCBlbm91Z2gg
Zm9yIG91ciB1c2VzLgpAQCAtMjMzLDYgKzIzNCw3IEBAIGNsYXNzIFdlYktpdExhbmRpbmdTY3Jp
cHRzOgogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgbGFuZF9vcHRpb25zKCk6CiAgICAgICAg
IHJldHVybiBbCisgICAgICAgICAgICBtYWtlX29wdGlvbigiLS1pZ25vcmUtYnVpbGRlcnMiLCBh
Y3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0iY2hlY2tfYnVpbGRlcnMiLCBkZWZhdWx0PVRydWUs
IGhlbHA9IkRvbid0IGNoZWNrIHRvIHNlZSBpZiB0aGUgYnVpbGQud2Via2l0Lm9yZyBidWlsZGVy
cyBhcmUgZ3JlZW4gYmVmb3JlIGxhbmRpbmcuIiksCiAgICAgICAgICAgICBtYWtlX29wdGlvbigi
LS1uby1jbG9zZSIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJjbG9zZV9idWciLCBkZWZh
dWx0PVRydWUsIGhlbHA9IkxlYXZlIGJ1ZyBvcGVuIGFmdGVyIGxhbmRpbmcuIiksCiAgICAgICAg
ICAgICBtYWtlX29wdGlvbigiLS1uby1idWlsZCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0
PSJidWlsZCIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0IHdpdGhvdXQgYnVpbGRpbmcgZmly
c3QsIGltcGxpZXMgLS1uby10ZXN0LiIpLAogICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8t
dGVzdCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJ0ZXN0IiwgZGVmYXVsdD1UcnVlLCBo
ZWxwPSJDb21taXQgd2l0aG91dCBydW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMuIiksCkBAIC0yNjgs
NiArMjcwLDEyIEBAIGNsYXNzIFdlYktpdExhbmRpbmdTY3JpcHRzOgogICAgIGRlZiBidWlsZF93
ZWJraXQoY2xzLCBxdWlldD1GYWxzZSk6CiAgICAgICAgIGNscy5ydW5fd2Via2l0X3NjcmlwdCgi
YnVpbGQtd2Via2l0IiwgcXVpZXQpCiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGVuc3Vy
ZV9idWlsZGVyc19hcmVfZ3JlZW4oYnVpbGRib3QsIG9wdGlvbnMpOgorICAgICAgICBpZiBub3Qg
b3B0aW9ucy5jaGVja19idWlsZGVycyBvciBidWlsZGJvdC5jb3JlX2J1aWxkZXJzX2FyZV9ncmVl
bigpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVycm9yKCJCdWlsZGVycyBhdCAlcyBh
cmUgcmVkLCBwbGVhc2UgZG8gbm90IGNvbW1pdC4gIFBhc3MgLS1pZ25vcmUtYnVpbGRlcnMgdG8g
YnlwYXNzIHRoaXMgY2hlY2suIiAlIChidWlsZGJvdC5idWlsZGJvdF9ob3N0KSkKKwogICAgIEBj
bGFzc21ldGhvZAogICAgIGRlZiBydW5fd2Via2l0X3Rlc3RzKGNscywgbGF1bmNoX3NhZmFyaSwg
cXVpZXQ9RmFsc2UpOgogICAgICAgICBhcmdzID0gW2Nscy53ZWJraXRfc2NyaXB0X3BhdGgoInJ1
bi13ZWJraXQtdGVzdHMiKV0KQEAgLTU3OCw2ICs1ODYsMTYgQEAgY2xhc3MgQ3JlYXRlQnVnKENv
bW1hbmQpOgogICAgICAgICAgICAgc2VsZi5jcmVhdGVfYnVnX2Zyb21fcGF0Y2gob3B0aW9ucywg
YXJncywgdG9vbCkKIAogCitjbGFzcyBDaGVja1RyZWVTdGF0dXMoQ29tbWFuZCk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgorICAgICAgICBDb21tYW5kLl9faW5pdF9fKHNlbGYsICdQcmludCBv
dXQgdGhlIHN0YXR1cyBvZiB0aGUgd2Via2l0IGJ1aWxkZXJzLicpCisKKyAgICBkZWYgZXhlY3V0
ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKKyAgICAgICAgZm9yIGJ1aWxkZXIgaW4gdG9v
bC5idWlsZGJvdC5idWlsZGVyX3N0YXR1c2VzKCk6CisgICAgICAgICAgICBzdGF0dXNfc3RyaW5n
ID0gIm9rIiBpZiBidWlsZGVyWydpc19ncmVlbiddIGVsc2UgJ0ZBSUwnCisgICAgICAgICAgICBw
cmludCAiJXMgOiAlcyIgJSAoc3RhdHVzX3N0cmluZy5sanVzdCg0KSwgYnVpbGRlclsnbmFtZSdd
KQorCisKIGNsYXNzIE5vbldyYXBwaW5nRXBpbG9nSW5kZW50ZWRIZWxwRm9ybWF0dGVyKEluZGVu
dGVkSGVscEZvcm1hdHRlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBJbmRl
bnRlZEhlbHBGb3JtYXR0ZXIuX19pbml0X18oc2VsZikKQEAgLTYwMSw2ICs2MTksNyBAQCBjbGFz
cyBCdWd6aWxsYVRvb2w6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLmNh
Y2hlZF9zY20gPSBOb25lCiAgICAgICAgIHNlbGYuYnVncyA9IEJ1Z3ppbGxhKCkKKyAgICAgICAg
c2VsZi5idWlsZGJvdCA9IEJ1aWxkQm90KCkKICAgICAgICAgc2VsZi5jb21tYW5kcyA9IFsKICAg
ICAgICAgICAgIHsgJ25hbWUnIDogJ2J1Z3MtdG8tY29tbWl0JywgJ29iamVjdCcgOiBCdWdzSW5D
b21taXRRdWV1ZSgpIH0sCiAgICAgICAgICAgICB7ICduYW1lJyA6ICdwYXRjaGVzLXRvLWNvbW1p
dCcsICdvYmplY3QnIDogUGF0Y2hlc0luQ29tbWl0UXVldWUoKSB9LApAQCAtNjEzLDYgKzYzMiw3
IEBAIGNsYXNzIEJ1Z3ppbGxhVG9vbDoKICAgICAgICAgICAgIHsgJ25hbWUnIDogJ29ic29sZXRl
LWF0dGFjaG1lbnRzJywgJ29iamVjdCcgOiBPYnNvbGV0ZUF0dGFjaG1lbnRzT25CdWcoKSB9LAog
ICAgICAgICAgICAgeyAnbmFtZScgOiAncG9zdC1kaWZmJywgJ29iamVjdCcgOiBQb3N0RGlmZkFz
UGF0Y2hUb0J1ZygpIH0sCiAgICAgICAgICAgICB7ICduYW1lJyA6ICdwb3N0LWNvbW1pdHMnLCAn
b2JqZWN0JyA6IFBvc3RDb21taXRzQXNQYXRjaGVzVG9CdWcoKSB9LAorICAgICAgICAgICAgeyAn
bmFtZScgOiAndHJlZS1zdGF0dXMnLCAnb2JqZWN0JyA6IENoZWNrVHJlZVN0YXR1cygpIH0sCiAg
ICAgICAgIF0KIAogICAgICAgICBzZWxmLmdsb2JhbF9vcHRpb25fcGFyc2VyID0gSGVscFByaW50
aW5nT3B0aW9uUGFyc2VyKHVzYWdlPXNlbGYudXNhZ2VfbGluZSgpLCBmb3JtYXR0ZXI9Tm9uV3Jh
cHBpbmdFcGlsb2dJbmRlbnRlZEhlbHBGb3JtYXR0ZXIoKSwgZXBpbG9nPXNlbGYuY29tbWFuZHNf
dXNhZ2UoKSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWlsZGJv
dC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWlsZGJvdC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDhkZmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkYm90LnB5CkBAIC0wLDAgKzEsMTAxIEBACisj
IENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChjKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisjCisjIFdlYktpdCdzIFB5dGhvbiBtb2R1bGUgZm9yIGludGVyYWN0
aW5nIHdpdGggQnVnemlsbGEKKworaW1wb3J0IGdldHBhc3MKK2ltcG9ydCBwbGF0Zm9ybQoraW1w
b3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHVybGxpYjIKKworIyBJbXBvcnQgV2Vi
S2l0LXNwZWNpZmljIG1vZHVsZXMuCitmcm9tIG1vZHVsZXMubG9nZ2luZyBpbXBvcnQgbG9nCisK
KyMgV2ViS2l0IGluY2x1ZGVzIGEgYnVpbHQgY29weSBvZiBCZWF1dGlmdWxTb3VwIGluIFNjcmlw
dHMvbW9kdWxlcworIyBzbyB0aGlzIGltcG9ydCBzaG91bGQgYWx3YXlzIHN1Y2NlZWQuCitmcm9t
IC5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwCisKK2NsYXNzIEJ1aWxkQm90Ogor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PSJidWlsZC53ZWJraXQub3JnIik6CisgICAgICAg
IHNlbGYuYnVpbGRib3RfaG9zdCA9IGhvc3QKKyAgICAgICAgc2VsZi5idWlsZGJvdF9zZXJ2ZXJf
dXJsID0gImh0dHA6Ly8lcy8iICUgc2VsZi5idWlsZGJvdF9ob3N0CisgICAgICAgIAorICAgICAg
ICAjIElmIGFueSBvZiB0aGUgTGVvcGFyZCBidWlsZC90ZXN0IGJvdHMgb3IgdGhlIFdpbmRvd3Mg
YnVpbGRlcnMgYXJlIHJlZCB3ZSBzaG91bGQgbm90IGJlIGxhbmRpbmcgcGF0Y2hlcy4KKyAgICAg
ICAgIyBPdGhlciBidWlsZGVycyBzaG91bGQgYmUgYWRkZWQgdG8gdGhpcyBsaXN0IG9uY2UgdGhl
eSdyZSBrbm93biB0byBiZSBzdGFibGUuCisgICAgICAgIHNlbGYuY29yZV9idWlsZGVyX25hbWVz
X3JlZ2V4cHMgPSBbICdMZW9wYXJkJywgIldpbmRvd3MuKkJ1aWxkIiBdCisKKyAgICAjIElmIFdl
YktpdCdzIGJ1aWxkYm90IGhhcyBhbiBYTUxSUEMgaW50ZXJmYWNlIHdlIGNvdWxkIHVzZSwgd2Ug
Y291bGQgZG8gc29tZXRoaW5nIG1vcmUgc29waGlzdGljYXRlZCBoZXJlLgorICAgICMgRm9yIG5v
dyB3ZSBqdXN0IHBhcnNlIG91dCB0aGUgYmFzaWNzLCBlbm91Z2ggdG8gc3VwcG9ydCBiYXNpYyBx
dWVzdGlvbnMgbGlrZSAiaXMgdGhlIHRyZWUgZ3JlZW4/IgorICAgIGRlZiBfcGFyc2VfYnVpbGRl
cl9zdGF0dXNfZnJvbV9yb3coc2VsZiwgc3RhdHVzX3Jvdyk6CisgICAgICAgIHN0YXR1c19jZWxs
cyA9IHN0YXR1c19yb3cuZmluZEFsbCgndGQnKQorICAgICAgICBidWlsZGVyID0ge30KKworICAg
ICAgICBuYW1lX2xpbmsgPSBzdGF0dXNfY2VsbHNbMF0uZmluZCgnYScpCisgICAgICAgIGJ1aWxk
ZXJbJ25hbWUnXSA9IG5hbWVfbGluay5zdHJpbmcKKyAgICAgICAgIyBXZSBjb3VsZCBnZW5lcmF0
ZSB0aGUgYnVpbGRlcl91cmwgZnJvbSB0aGUgbmFtZSBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIHRo
aXMgY29kZS4KKyAgICAgICAgYnVpbGRlclsnYnVpbGRlcl91cmwnXSA9IHNlbGYuYnVpbGRib3Rf
c2VydmVyX3VybCArIG5hbWVfbGlua1snaHJlZiddCisKKyAgICAgICAgc3RhdHVzX2xpbmsgPSBz
dGF0dXNfY2VsbHNbMV0uZmluZCgnYScpCisgICAgICAgIGJ1aWxkZXJbJ2J1aWx0X3JldmlzaW9u
J10gPSBpbnQoc3RhdHVzX2xpbmsuc3RyaW5nKQorICAgICAgICBidWlsZGVyWydpc19ncmVlbidd
ID0gbm90IHJlLnNlYXJjaCgnZmFpbCcsIHN0YXR1c19jZWxsc1sxXS5yZW5kZXJDb250ZW50cygp
KQorICAgICAgICAjIFdlIGNvdWxkIHBhcnNlIG91dCB0aGUgYnVpbGQgbnVtYmVyIGluc3RlYWQs
IGJ1dCBmb3Igbm93IGp1c3Qgc3RvcmUgdGhlIFVSTC4KKyAgICAgICAgYnVpbGRlclsnYnVpbGRf
dXJsJ10gPSBzZWxmLmJ1aWxkYm90X3NlcnZlcl91cmwgKyBzdGF0dXNfbGlua1snaHJlZiddCisK
KyAgICAgICAgIyBXZSBjb3VsZCBwYXJzZSBvdXQgdGhlIGN1cnJlbnQgYWN0aXZpdHkgdG9vLgor
CisgICAgICAgIHJldHVybiBidWlsZGVyCisKKyAgICBkZWYgX2J1aWxkZXJfc3RhdHVzZXNfd2l0
aF9uYW1lc19tYXRjaGluZ19yZWdleHBzKHNlbGYsIGJ1aWxkZXJfc3RhdHVzZXMsIG5hbWVfcmVn
ZXhwcyk6CisgICAgICAgIGJ1aWxkZXJzID0gW10KKyAgICAgICAgZm9yIGJ1aWxkZXIgaW4gYnVp
bGRlcl9zdGF0dXNlczoKKyAgICAgICAgICAgIGZvciBuYW1lX3JlZ2V4cCBpbiBuYW1lX3JlZ2V4
cHM6CisgICAgICAgICAgICAgICAgaWYgcmUubWF0Y2gobmFtZV9yZWdleHAsIGJ1aWxkZXJbJ25h
bWUnXSk6CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXJzLmFwcGVuZChidWlsZGVycykKKyAg
ICAgICAgcmV0dXJuIGJ1aWxkZXJzCisKKyAgICBkZWYgY29yZV9idWlsZGVyc19hcmVfZ3JlZW4o
c2VsZik6CisgICAgICAgIGZvciBidWlsZGVyIGluIHNlbGYuX2J1aWxkZXJfc3RhdHVzZXNfd2l0
aF9uYW1lc19tYXRjaGluZ19yZWdleHBzKHNlbGYuYnVpbGRlcl9zdGF0dXNlcygpLCBzZWxmLmNv
cmVfYnVpbGRlcl9uYW1lc19yZWdleHBzKToKKyAgICAgICAgICAgIGlmIG5vdCBidWlsZGVyWydp
c19ncmVlbiddOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4g
VHJ1ZQorCisgICAgZGVmIGJ1aWxkZXJfc3RhdHVzZXMoc2VsZik6CisgICAgICAgIGJ1aWxkX3N0
YXR1c191cmwgPSBzZWxmLmJ1aWxkYm90X3NlcnZlcl91cmwgKyAnb25lX2JveF9wZXJfYnVpbGRl
cicKKyAgICAgICAgbG9nKCJGZXRjaGluZyAlcyIgJSBidWlsZF9zdGF0dXNfdXJsKQorCisgICAg
ICAgIHBhZ2UgPSB1cmxsaWIyLnVybG9wZW4oYnVpbGRfc3RhdHVzX3VybCkKKyAgICAgICAgc291
cCA9IEJlYXV0aWZ1bFNvdXAocGFnZSkKKworICAgICAgICBidWlsZGVycyA9IFtdCisgICAgICAg
IHN0YXR1c190YWJsZSA9IHNvdXAuZmluZCgndGFibGUnKQorICAgICAgICBmb3Igc3RhdHVzX3Jv
dyBpbiBzdGF0dXNfdGFibGUuZmluZEFsbCgndHInKToKKyAgICAgICAgICAgIGJ1aWxkZXIgPSBz
ZWxmLl9wYXJzZV9idWlsZGVyX3N0YXR1c19mcm9tX3JvdyhzdGF0dXNfcm93KQorICAgICAgICAg
ICAgYnVpbGRlcnMuYXBwZW5kKGJ1aWxkZXIpCisgICAgICAgIHJldHVybiBidWlsZGVycwpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkYm90X3VuaXR0ZXN0LnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkYm90X3VuaXR0ZXN0LnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlM2M4MWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVpbGRib3RfdW5pdHRlc3QucHkKQEAgLTAs
MCArMSwxMDkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSBtb2R1
bGVzLmJ1aWxkYm90IGltcG9ydCBCdWlsZEJvdAorCitmcm9tIG1vZHVsZXMuQmVhdXRpZnVsU291
cCBpbXBvcnQgQmVhdXRpZnVsU291cAorCitjbGFzcyBCdWlsZEJvdFRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgorCisgICAgX2V4YW1wbGVfb25lX2JveF9zdGF0dXMgPSAnJycKKyAgICA8dGFibGU+
CisgICAgPHRyPgorICAgIDx0ZCBjbGFzcz0iYm94Ij48YSBocmVmPSJidWlsZGVycy9XaW5kb3dz
JTIwRGVidWclMjAlMjhUZXN0cyUyOSI+V2luZG93cyBEZWJ1ZyAoVGVzdHMpPC9hPjwvdGQ+Cisg
ICAgICA8dGQgYWxpZ249ImNlbnRlciIgY2xhc3M9Ikxhc3RCdWlsZCBib3ggc3VjY2VzcyI+PGEg
aHJlZj0iYnVpbGRlcnMvV2luZG93cyUyMERlYnVnJTIwJTI4VGVzdHMlMjkvYnVpbGRzLzM2OTMi
PjQ3MzgwPC9hPjxiciAvPmJ1aWxkPGJyIC8+c3VjY2Vzc2Z1bDwvdGQ+CisgICAgICA8dGQgYWxp
Z249ImNlbnRlciIgY2xhc3M9IkFjdGl2aXR5IGJ1aWxkaW5nIj5idWlsZGluZzxiciAvPkVUQSBp
bjxiciAvPn4gMTQgbWluczxiciAvPmF0IDEzOjQwPC90ZD4KKyAgICA8dHI+CisgICAgPHRkIGNs
YXNzPSJib3giPjxhIGhyZWY9ImJ1aWxkZXJzL1F0JTIwTGludXglMjBSZWxlYXNlIj5RdCBMaW51
eCBSZWxlYXNlPC9hPjwvdGQ+CisgICAgICA8dGQgYWxpZ249ImNlbnRlciIgY2xhc3M9Ikxhc3RC
dWlsZCBib3ggZmFpbHVyZSI+PGEgaHJlZj0iYnVpbGRlcnMvUXQlMjBMaW51eCUyMFJlbGVhc2Uv
YnVpbGRzLzY1NCI+NDczODM8L2E+PGJyIC8+ZmFpbGVkPGJyIC8+Y29tcGlsZS13ZWJraXQ8L3Rk
PgorICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJBY3Rpdml0eSBpZGxlIj5pZGxlPC90
ZD4KKyAgICA8L3RhYmxlPgorJycnCisgICAgX2V4cGVjdGVkX2V4YW1wbGVfb25lX2JveF9wYXJz
aW5ncyA9IFsKKyAgICAgICAgeworICAgICAgICAgICAgJ2J1aWxkZXJfdXJsJzogdSdodHRwOi8v
YnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9XaW5kb3dzJTIwRGVidWclMjAlMjhUZXN0cyUyOScs
CisgICAgICAgICAgICAnYnVpbGRfdXJsJzogdSdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWls
ZGVycy9XaW5kb3dzJTIwRGVidWclMjAlMjhUZXN0cyUyOS9idWlsZHMvMzY5MycsCisgICAgICAg
ICAgICAnaXNfZ3JlZW4nOiBUcnVlLAorICAgICAgICAgICAgJ25hbWUnOiB1J1dpbmRvd3MgRGVi
dWcgKFRlc3RzKScsCisgICAgICAgICAgICAnYnVpbHRfcmV2aXNpb24nOiA0NzM4MAorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICAnYnVpbGRlcl91cmwnOiB1J2h0dHA6Ly9idWls
ZC53ZWJraXQub3JnL2J1aWxkZXJzL1F0JTIwTGludXglMjBSZWxlYXNlJywKKyAgICAgICAgICAg
ICdidWlsZF91cmwnOiB1J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL1F0JTIwTGlu
dXglMjBSZWxlYXNlL2J1aWxkcy82NTQnLAorICAgICAgICAgICAgJ2lzX2dyZWVuJzogRmFsc2Us
CisgICAgICAgICAgICAnbmFtZSc6IHUnUXQgTGludXggUmVsZWFzZScsCisgICAgICAgICAgICAn
YnVpbHRfcmV2aXNpb24nOiA0NzM4MworICAgICAgICB9LAorICAgIF0KKworICAgIGRlZiB0ZXN0
X3N0YXR1c19wYXJzaW5nKHNlbGYpOgorICAgICAgICBidWlsZGJvdCA9IEJ1aWxkQm90KCkKKwor
ICAgICAgICBzb3VwID0gQmVhdXRpZnVsU291cChzZWxmLl9leGFtcGxlX29uZV9ib3hfc3RhdHVz
KQorICAgICAgICBzdGF0dXNfdGFibGUgPSBzb3VwLmZpbmQoInRhYmxlIikKKyAgICAgICAgaW5w
dXRfcm93cyA9IHN0YXR1c190YWJsZS5maW5kQWxsKCd0cicpCisKKyAgICAgICAgZm9yIHggaW4g
cmFuZ2UobGVuKGlucHV0X3Jvd3MpKToKKyAgICAgICAgICAgIHN0YXR1c19yb3cgPSBpbnB1dF9y
b3dzW3hdCisgICAgICAgICAgICBleHBlY3RlZF9wYXJzaW5nID0gc2VsZi5fZXhwZWN0ZWRfZXhh
bXBsZV9vbmVfYm94X3BhcnNpbmdzW3hdCisKKyAgICAgICAgICAgIGJ1aWxkZXIgPSBidWlsZGJv
dC5fcGFyc2VfYnVpbGRlcl9zdGF0dXNfZnJvbV9yb3coc3RhdHVzX3JvdykKKworICAgICAgICAg
ICAgIyBNYWtlIHN1cmUgd2UgYXJlbid0IHBhcnNpbmcgbW9yZSBvciBsZXNzIHRoYW4gd2UgZXhw
ZWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhidWlsZGVyLmtleXMoKSwgZXhwZWN0
ZWRfcGFyc2luZy5rZXlzKCkpCisKKyAgICAgICAgICAgIGZvciBrZXksIGV4cGVjdGVkX3ZhbHVl
IGluIGV4cGVjdGVkX3BhcnNpbmcuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhidWlsZGVyW2tleV0sIGV4cGVjdGVkX3ZhbHVlLCAoIkJ1aWxkZXIgJWQgcGFyc2Ug
ZmFpbHVyZSBmb3Iga2V5OiAlczogQWN0dWFsPSclcycgRXhwZWN0ZWQ9JyVzJyIgJSAoeCwga2V5
LCBidWlsZGVyW2tleV0sIGV4cGVjdGVkX3ZhbHVlKSkpCisKKyAgICBkZWYgdGVzdF9idWlsZGVy
X25hbWVfcmVnZXhwcyhzZWxmKToKKyAgICAgICAgYnVpbGRib3QgPSBCdWlsZEJvdCgpCisgICAg
ICAgIAorICAgICAgICBleGFtcGxlX2J1aWxkZXJzID0gWworICAgICAgICAgICAgeyAnbmFtZSc6
IHUnTGVvcGFyZCBEZWJ1ZyAoQnVpbGQpJywgfSwKKyAgICAgICAgICAgIHsgJ25hbWUnOiB1J0xl
b3BhcmQgRGVidWcgKFRlc3RzKScsIH0sCisgICAgICAgICAgICB7ICduYW1lJzogdSdXaW5kb3dz
IFJlbGVhc2UgKEJ1aWxkKScsIH0sCisgICAgICAgICAgICB7ICduYW1lJzogdSdXaW5kb3dzIERl
YnVnIChUZXN0cyknLCB9LAorICAgICAgICAgICAgeyAnbmFtZSc6IHUnUXQgTGludXggUmVsZWFz
ZScsIH0sCisgICAgICAgIF0KKyAgICAgICAgbmFtZV9yZWdleHBzID0gWyAnTGVvcGFyZCcsICJX
aW5kb3dzLipCdWlsZCIgXQorICAgICAgICBleHBlY3RlZF9idWlsZGVycyA9IFsKKyAgICAgICAg
ICAgIHsgJ25hbWUnOiB1J0xlb3BhcmQgRGVidWcgKEJ1aWxkKScsIH0sCisgICAgICAgICAgICB7
ICduYW1lJzogdSdMZW9wYXJkIERlYnVnIChUZXN0cyknLCB9LAorICAgICAgICAgICAgeyAnbmFt
ZSc6IHUnV2luZG93cyBSZWxlYXNlIChCdWlsZCknLCB9LAorICAgICAgICBdCisKKyAgICAgICAg
IyBUaGlzIHRlc3Qgc2hvdWxkIHByb2JhYmx5IGJlIHVwZGF0ZWQgaWYgdGhlIGRlZmF1bHQgcmVn
ZXhwIGNoYW5nZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYnVpbGRib3QuY29yZV9idWls
ZGVyX25hbWVzX3JlZ2V4cHMsIG5hbWVfcmVnZXhwcykKKyAgICAgICAgCisgICAgICAgIGJ1aWxk
ZXJzID0gYnVpbGRib3QuX2J1aWxkZXJzX3N0YXR1c2VzX3dpdGhfbmFtZXNfbWF0Y2hpbmdfcmVn
ZXhwcyhleGFtcGxlX2J1aWxkZXJzLCBuYW1lX3JlZ2V4cHMpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGJ1aWxkZXJzLCBleHBlY3RlZF9idWlsZGVycykKKworaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvcnVuLXdlYmtpdC11bml0dGVzdHMgYi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJr
aXQtdW5pdHRlc3RzCmluZGV4IGU4MTVmNWYuLjJhN2Y2NmQgMTAwNzU1Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvcnVuLXdlYmtpdC11bml0dGVzdHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy9ydW4td2Via2l0LXVuaXR0ZXN0cwpAQCAtMzAsNiArMzAsNyBAQAogaW1wb3J0IHVuaXR0ZXN0
CiAKIGZyb20gbW9kdWxlcy5idWd6aWxsYV91bml0dGVzdCBpbXBvcnQgKgorZnJvbSBtb2R1bGVz
LmJ1aWxkYm90X3VuaXR0ZXN0IGltcG9ydCAqCiBmcm9tIG1vZHVsZXMuY29tbWl0dGVyc191bml0
dGVzdCBpbXBvcnQgKgogZnJvbSBtb2R1bGVzLmNwcF9zdHlsZV91bml0dGVzdCBpbXBvcnQgKgog
ZnJvbSBtb2R1bGVzLmRpZmZfcGFyc2VyX3VuaXR0ZXN0IGltcG9ydCAq
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35000</attachid>
            <date>2009-08-17 16:18:12 -0700</date>
            <delta_ts>2009-08-19 16:41:36 -0700</delta_ts>
            <desc>Updated patch which actually passed the unit tests</desc>
            <filename>bug-28222-20090817161812.patch</filename>
            <type>text/plain</type>
            <size>13891</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbCBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbAppbmRleCAyZTY2Y2VhLi5mZDc5ZGE4IDEwMDc1NQot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9idWd6aWxsYS10b29sCkBAIC00Myw2ICs0Myw3IEBAIGZyb20gb3B0cGFyc2UgaW1w
b3J0IE9wdGlvblBhcnNlciwgSW5kZW50ZWRIZWxwRm9ybWF0dGVyLCBTVVBQUkVTU19VU0FHRSwg
bWFrZV9vCiBmcm9tIG1vZHVsZXMuYnVnemlsbGEgaW1wb3J0IEJ1Z3ppbGxhCiBmcm9tIG1vZHVs
ZXMubG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxvZwogZnJvbSBtb2R1bGVzLnNjbSBpbXBvcnQgQ29t
bWl0TWVzc2FnZSwgZGV0ZWN0X3NjbV9zeXN0ZW0sIFNjcmlwdEVycm9yCitmcm9tIG1vZHVsZXMu
YnVpbGRib3QgaW1wb3J0IEJ1aWxkQm90CiAKIGRlZiBwbHVyYWwobm91bik6CiAgICAgIyBUaGlz
IGlzIGEgZHVtYiBwbHVyYWwoKSBpbXBsZW1lbnRhdGlvbiB3aGljaCB3YXMganVzdCBlbm91Z2gg
Zm9yIG91ciB1c2VzLgpAQCAtMjMzLDYgKzIzNCw3IEBAIGNsYXNzIFdlYktpdExhbmRpbmdTY3Jp
cHRzOgogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgbGFuZF9vcHRpb25zKCk6CiAgICAgICAg
IHJldHVybiBbCisgICAgICAgICAgICBtYWtlX29wdGlvbigiLS1pZ25vcmUtYnVpbGRlcnMiLCBh
Y3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0iY2hlY2tfYnVpbGRlcnMiLCBkZWZhdWx0PVRydWUs
IGhlbHA9IkRvbid0IGNoZWNrIHRvIHNlZSBpZiB0aGUgYnVpbGQud2Via2l0Lm9yZyBidWlsZGVy
cyBhcmUgZ3JlZW4gYmVmb3JlIGxhbmRpbmcuIiksCiAgICAgICAgICAgICBtYWtlX29wdGlvbigi
LS1uby1jbG9zZSIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJjbG9zZV9idWciLCBkZWZh
dWx0PVRydWUsIGhlbHA9IkxlYXZlIGJ1ZyBvcGVuIGFmdGVyIGxhbmRpbmcuIiksCiAgICAgICAg
ICAgICBtYWtlX29wdGlvbigiLS1uby1idWlsZCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0
PSJidWlsZCIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0IHdpdGhvdXQgYnVpbGRpbmcgZmly
c3QsIGltcGxpZXMgLS1uby10ZXN0LiIpLAogICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8t
dGVzdCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJ0ZXN0IiwgZGVmYXVsdD1UcnVlLCBo
ZWxwPSJDb21taXQgd2l0aG91dCBydW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMuIiksCkBAIC0yNjgs
NiArMjcwLDEyIEBAIGNsYXNzIFdlYktpdExhbmRpbmdTY3JpcHRzOgogICAgIGRlZiBidWlsZF93
ZWJraXQoY2xzLCBxdWlldD1GYWxzZSk6CiAgICAgICAgIGNscy5ydW5fd2Via2l0X3NjcmlwdCgi
YnVpbGQtd2Via2l0IiwgcXVpZXQpCiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGVuc3Vy
ZV9idWlsZGVyc19hcmVfZ3JlZW4oYnVpbGRib3QsIG9wdGlvbnMpOgorICAgICAgICBpZiBub3Qg
b3B0aW9ucy5jaGVja19idWlsZGVycyBvciBidWlsZGJvdC5jb3JlX2J1aWxkZXJzX2FyZV9ncmVl
bigpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVycm9yKCJCdWlsZGVycyBhdCAlcyBh
cmUgcmVkLCBwbGVhc2UgZG8gbm90IGNvbW1pdC4gIFBhc3MgLS1pZ25vcmUtYnVpbGRlcnMgdG8g
YnlwYXNzIHRoaXMgY2hlY2suIiAlIChidWlsZGJvdC5idWlsZGJvdF9ob3N0KSkKKwogICAgIEBj
bGFzc21ldGhvZAogICAgIGRlZiBydW5fd2Via2l0X3Rlc3RzKGNscywgbGF1bmNoX3NhZmFyaSwg
cXVpZXQ9RmFsc2UpOgogICAgICAgICBhcmdzID0gW2Nscy53ZWJraXRfc2NyaXB0X3BhdGgoInJ1
bi13ZWJraXQtdGVzdHMiKV0KQEAgLTU3OCw2ICs1ODYsMTYgQEAgY2xhc3MgQ3JlYXRlQnVnKENv
bW1hbmQpOgogICAgICAgICAgICAgc2VsZi5jcmVhdGVfYnVnX2Zyb21fcGF0Y2gob3B0aW9ucywg
YXJncywgdG9vbCkKIAogCitjbGFzcyBDaGVja1RyZWVTdGF0dXMoQ29tbWFuZCk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgorICAgICAgICBDb21tYW5kLl9faW5pdF9fKHNlbGYsICdQcmludCBv
dXQgdGhlIHN0YXR1cyBvZiB0aGUgd2Via2l0IGJ1aWxkZXJzLicpCisKKyAgICBkZWYgZXhlY3V0
ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKKyAgICAgICAgZm9yIGJ1aWxkZXIgaW4gdG9v
bC5idWlsZGJvdC5idWlsZGVyX3N0YXR1c2VzKCk6CisgICAgICAgICAgICBzdGF0dXNfc3RyaW5n
ID0gIm9rIiBpZiBidWlsZGVyWydpc19ncmVlbiddIGVsc2UgJ0ZBSUwnCisgICAgICAgICAgICBw
cmludCAiJXMgOiAlcyIgJSAoc3RhdHVzX3N0cmluZy5sanVzdCg0KSwgYnVpbGRlclsnbmFtZSdd
KQorCisKIGNsYXNzIE5vbldyYXBwaW5nRXBpbG9nSW5kZW50ZWRIZWxwRm9ybWF0dGVyKEluZGVu
dGVkSGVscEZvcm1hdHRlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBJbmRl
bnRlZEhlbHBGb3JtYXR0ZXIuX19pbml0X18oc2VsZikKQEAgLTYwMSw2ICs2MTksNyBAQCBjbGFz
cyBCdWd6aWxsYVRvb2w6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLmNh
Y2hlZF9zY20gPSBOb25lCiAgICAgICAgIHNlbGYuYnVncyA9IEJ1Z3ppbGxhKCkKKyAgICAgICAg
c2VsZi5idWlsZGJvdCA9IEJ1aWxkQm90KCkKICAgICAgICAgc2VsZi5jb21tYW5kcyA9IFsKICAg
ICAgICAgICAgIHsgJ25hbWUnIDogJ2J1Z3MtdG8tY29tbWl0JywgJ29iamVjdCcgOiBCdWdzSW5D
b21taXRRdWV1ZSgpIH0sCiAgICAgICAgICAgICB7ICduYW1lJyA6ICdwYXRjaGVzLXRvLWNvbW1p
dCcsICdvYmplY3QnIDogUGF0Y2hlc0luQ29tbWl0UXVldWUoKSB9LApAQCAtNjEzLDYgKzYzMiw3
IEBAIGNsYXNzIEJ1Z3ppbGxhVG9vbDoKICAgICAgICAgICAgIHsgJ25hbWUnIDogJ29ic29sZXRl
LWF0dGFjaG1lbnRzJywgJ29iamVjdCcgOiBPYnNvbGV0ZUF0dGFjaG1lbnRzT25CdWcoKSB9LAog
ICAgICAgICAgICAgeyAnbmFtZScgOiAncG9zdC1kaWZmJywgJ29iamVjdCcgOiBQb3N0RGlmZkFz
UGF0Y2hUb0J1ZygpIH0sCiAgICAgICAgICAgICB7ICduYW1lJyA6ICdwb3N0LWNvbW1pdHMnLCAn
b2JqZWN0JyA6IFBvc3RDb21taXRzQXNQYXRjaGVzVG9CdWcoKSB9LAorICAgICAgICAgICAgeyAn
bmFtZScgOiAndHJlZS1zdGF0dXMnLCAnb2JqZWN0JyA6IENoZWNrVHJlZVN0YXR1cygpIH0sCiAg
ICAgICAgIF0KIAogICAgICAgICBzZWxmLmdsb2JhbF9vcHRpb25fcGFyc2VyID0gSGVscFByaW50
aW5nT3B0aW9uUGFyc2VyKHVzYWdlPXNlbGYudXNhZ2VfbGluZSgpLCBmb3JtYXR0ZXI9Tm9uV3Jh
cHBpbmdFcGlsb2dJbmRlbnRlZEhlbHBGb3JtYXR0ZXIoKSwgZXBpbG9nPXNlbGYuY29tbWFuZHNf
dXNhZ2UoKSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWlsZGJv
dC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWlsZGJvdC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzZiMWRkCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkYm90LnB5CkBAIC0wLDAgKzEsOTcgQEAKKyMg
Q29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyAK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24u
CisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgV2ViS2l0J3MgUHl0aG9uIG1vZHVsZSBmb3IgaW50ZXJh
Y3Rpbmcgd2l0aCBXZWJLaXQncyBidWlsZGJvdAorCitpbXBvcnQgcmUKK2ltcG9ydCB1cmxsaWIy
CisKKyMgSW1wb3J0IFdlYktpdC1zcGVjaWZpYyBtb2R1bGVzLgorZnJvbSBtb2R1bGVzLmxvZ2dp
bmcgaW1wb3J0IGxvZworCisjIFdlYktpdCBpbmNsdWRlcyBhIGJ1aWx0IGNvcHkgb2YgQmVhdXRp
ZnVsU291cCBpbiBTY3JpcHRzL21vZHVsZXMKKyMgc28gdGhpcyBpbXBvcnQgc2hvdWxkIGFsd2F5
cyBzdWNjZWVkLgorZnJvbSAuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAorCitj
bGFzcyBCdWlsZEJvdDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0iYnVpbGQud2Via2l0
Lm9yZyIpOgorICAgICAgICBzZWxmLmJ1aWxkYm90X2hvc3QgPSBob3N0CisgICAgICAgIHNlbGYu
YnVpbGRib3Rfc2VydmVyX3VybCA9ICJodHRwOi8vJXMvIiAlIHNlbGYuYnVpbGRib3RfaG9zdAor
ICAgICAgICAKKyAgICAgICAgIyBJZiBhbnkgb2YgdGhlIExlb3BhcmQgYnVpbGQvdGVzdCBib3Rz
IG9yIHRoZSBXaW5kb3dzIGJ1aWxkZXJzIGFyZSByZWQgd2Ugc2hvdWxkIG5vdCBiZSBsYW5kaW5n
IHBhdGNoZXMuCisgICAgICAgICMgT3RoZXIgYnVpbGRlcnMgc2hvdWxkIGJlIGFkZGVkIHRvIHRo
aXMgbGlzdCBvbmNlIHRoZXkncmUga25vd24gdG8gYmUgc3RhYmxlLgorICAgICAgICBzZWxmLmNv
cmVfYnVpbGRlcl9uYW1lc19yZWdleHBzID0gWyAnTGVvcGFyZCcsICJXaW5kb3dzLipCdWlsZCIg
XQorCisgICAgIyBJZiBXZWJLaXQncyBidWlsZGJvdCBoYXMgYW4gWE1MUlBDIGludGVyZmFjZSB3
ZSBjb3VsZCB1c2UsIHdlIGNvdWxkIGRvIHNvbWV0aGluZyBtb3JlIHNvcGhpc3RpY2F0ZWQgaGVy
ZS4KKyAgICAjIEZvciBub3cgd2UganVzdCBwYXJzZSBvdXQgdGhlIGJhc2ljcywgZW5vdWdoIHRv
IHN1cHBvcnQgYmFzaWMgcXVlc3Rpb25zIGxpa2UgImlzIHRoZSB0cmVlIGdyZWVuPyIKKyAgICBk
ZWYgX3BhcnNlX2J1aWxkZXJfc3RhdHVzX2Zyb21fcm93KHNlbGYsIHN0YXR1c19yb3cpOgorICAg
ICAgICBzdGF0dXNfY2VsbHMgPSBzdGF0dXNfcm93LmZpbmRBbGwoJ3RkJykKKyAgICAgICAgYnVp
bGRlciA9IHt9CisKKyAgICAgICAgbmFtZV9saW5rID0gc3RhdHVzX2NlbGxzWzBdLmZpbmQoJ2En
KQorICAgICAgICBidWlsZGVyWyduYW1lJ10gPSBuYW1lX2xpbmsuc3RyaW5nCisgICAgICAgICMg
V2UgY291bGQgZ2VuZXJhdGUgdGhlIGJ1aWxkZXJfdXJsIGZyb20gdGhlIG5hbWUgaW4gYSBmdXR1
cmUgdmVyc2lvbiBvZiB0aGlzIGNvZGUuCisgICAgICAgIGJ1aWxkZXJbJ2J1aWxkZXJfdXJsJ10g
PSBzZWxmLmJ1aWxkYm90X3NlcnZlcl91cmwgKyBuYW1lX2xpbmtbJ2hyZWYnXQorCisgICAgICAg
IHN0YXR1c19saW5rID0gc3RhdHVzX2NlbGxzWzFdLmZpbmQoJ2EnKQorICAgICAgICBidWlsZGVy
WydidWlsdF9yZXZpc2lvbiddID0gaW50KHN0YXR1c19saW5rLnN0cmluZykKKyAgICAgICAgYnVp
bGRlclsnaXNfZ3JlZW4nXSA9IG5vdCByZS5zZWFyY2goJ2ZhaWwnLCBzdGF0dXNfY2VsbHNbMV0u
cmVuZGVyQ29udGVudHMoKSkKKyAgICAgICAgIyBXZSBjb3VsZCBwYXJzZSBvdXQgdGhlIGJ1aWxk
IG51bWJlciBpbnN0ZWFkLCBidXQgZm9yIG5vdyBqdXN0IHN0b3JlIHRoZSBVUkwuCisgICAgICAg
IGJ1aWxkZXJbJ2J1aWxkX3VybCddID0gc2VsZi5idWlsZGJvdF9zZXJ2ZXJfdXJsICsgc3RhdHVz
X2xpbmtbJ2hyZWYnXQorCisgICAgICAgICMgV2UgY291bGQgcGFyc2Ugb3V0IHRoZSBjdXJyZW50
IGFjdGl2aXR5IHRvby4KKworICAgICAgICByZXR1cm4gYnVpbGRlcgorCisgICAgZGVmIF9idWls
ZGVyX3N0YXR1c2VzX3dpdGhfbmFtZXNfbWF0Y2hpbmdfcmVnZXhwcyhzZWxmLCBidWlsZGVyX3N0
YXR1c2VzLCBuYW1lX3JlZ2V4cHMpOgorICAgICAgICBidWlsZGVycyA9IFtdCisgICAgICAgIGZv
ciBidWlsZGVyIGluIGJ1aWxkZXJfc3RhdHVzZXM6CisgICAgICAgICAgICBmb3IgbmFtZV9yZWdl
eHAgaW4gbmFtZV9yZWdleHBzOgorICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKG5hbWVfcmVn
ZXhwLCBidWlsZGVyWyduYW1lJ10pOgorICAgICAgICAgICAgICAgICAgICBidWlsZGVycy5hcHBl
bmQoYnVpbGRlcikKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXJzCisKKyAgICBkZWYgY29yZV9idWls
ZGVyc19hcmVfZ3JlZW4oc2VsZik6CisgICAgICAgIGZvciBidWlsZGVyIGluIHNlbGYuX2J1aWxk
ZXJfc3RhdHVzZXNfd2l0aF9uYW1lc19tYXRjaGluZ19yZWdleHBzKHNlbGYuYnVpbGRlcl9zdGF0
dXNlcygpLCBzZWxmLmNvcmVfYnVpbGRlcl9uYW1lc19yZWdleHBzKToKKyAgICAgICAgICAgIGlm
IG5vdCBidWlsZGVyWydpc19ncmVlbiddOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQor
ICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGJ1aWxkZXJfc3RhdHVzZXMoc2VsZik6Cisg
ICAgICAgIGJ1aWxkX3N0YXR1c191cmwgPSBzZWxmLmJ1aWxkYm90X3NlcnZlcl91cmwgKyAnb25l
X2JveF9wZXJfYnVpbGRlcicKKyAgICAgICAgbG9nKCJGZXRjaGluZyAlcyIgJSBidWlsZF9zdGF0
dXNfdXJsKQorCisgICAgICAgIHBhZ2UgPSB1cmxsaWIyLnVybG9wZW4oYnVpbGRfc3RhdHVzX3Vy
bCkKKyAgICAgICAgc291cCA9IEJlYXV0aWZ1bFNvdXAocGFnZSkKKworICAgICAgICBidWlsZGVy
cyA9IFtdCisgICAgICAgIHN0YXR1c190YWJsZSA9IHNvdXAuZmluZCgndGFibGUnKQorICAgICAg
ICBmb3Igc3RhdHVzX3JvdyBpbiBzdGF0dXNfdGFibGUuZmluZEFsbCgndHInKToKKyAgICAgICAg
ICAgIGJ1aWxkZXIgPSBzZWxmLl9wYXJzZV9idWlsZGVyX3N0YXR1c19mcm9tX3JvdyhzdGF0dXNf
cm93KQorICAgICAgICAgICAgYnVpbGRlcnMuYXBwZW5kKGJ1aWxkZXIpCisgICAgICAgIHJldHVy
biBidWlsZGVycwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxk
Ym90X3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkYm90X3Vu
aXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNzVhYzQKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVpbGRib3RfdW5p
dHRlc3QucHkKQEAgLTAsMCArMSwxMDkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRl
c3QKKworZnJvbSBtb2R1bGVzLmJ1aWxkYm90IGltcG9ydCBCdWlsZEJvdAorCitmcm9tIG1vZHVs
ZXMuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAorCitjbGFzcyBCdWlsZEJvdFRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgX2V4YW1wbGVfb25lX2JveF9zdGF0dXMgPSAn
JycKKyAgICA8dGFibGU+CisgICAgPHRyPgorICAgIDx0ZCBjbGFzcz0iYm94Ij48YSBocmVmPSJi
dWlsZGVycy9XaW5kb3dzJTIwRGVidWclMjAlMjhUZXN0cyUyOSI+V2luZG93cyBEZWJ1ZyAoVGVz
dHMpPC9hPjwvdGQ+CisgICAgICA8dGQgYWxpZ249ImNlbnRlciIgY2xhc3M9Ikxhc3RCdWlsZCBi
b3ggc3VjY2VzcyI+PGEgaHJlZj0iYnVpbGRlcnMvV2luZG93cyUyMERlYnVnJTIwJTI4VGVzdHMl
MjkvYnVpbGRzLzM2OTMiPjQ3MzgwPC9hPjxiciAvPmJ1aWxkPGJyIC8+c3VjY2Vzc2Z1bDwvdGQ+
CisgICAgICA8dGQgYWxpZ249ImNlbnRlciIgY2xhc3M9IkFjdGl2aXR5IGJ1aWxkaW5nIj5idWls
ZGluZzxiciAvPkVUQSBpbjxiciAvPn4gMTQgbWluczxiciAvPmF0IDEzOjQwPC90ZD4KKyAgICA8
dHI+CisgICAgPHRkIGNsYXNzPSJib3giPjxhIGhyZWY9ImJ1aWxkZXJzL1F0JTIwTGludXglMjBS
ZWxlYXNlIj5RdCBMaW51eCBSZWxlYXNlPC9hPjwvdGQ+CisgICAgICA8dGQgYWxpZ249ImNlbnRl
ciIgY2xhc3M9Ikxhc3RCdWlsZCBib3ggZmFpbHVyZSI+PGEgaHJlZj0iYnVpbGRlcnMvUXQlMjBM
aW51eCUyMFJlbGVhc2UvYnVpbGRzLzY1NCI+NDczODM8L2E+PGJyIC8+ZmFpbGVkPGJyIC8+Y29t
cGlsZS13ZWJraXQ8L3RkPgorICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJBY3Rpdml0
eSBpZGxlIj5pZGxlPC90ZD4KKyAgICA8L3RhYmxlPgorJycnCisgICAgX2V4cGVjdGVkX2V4YW1w
bGVfb25lX2JveF9wYXJzaW5ncyA9IFsKKyAgICAgICAgeworICAgICAgICAgICAgJ2J1aWxkZXJf
dXJsJzogdSdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9XaW5kb3dzJTIwRGVidWcl
MjAlMjhUZXN0cyUyOScsCisgICAgICAgICAgICAnYnVpbGRfdXJsJzogdSdodHRwOi8vYnVpbGQu
d2Via2l0Lm9yZy9idWlsZGVycy9XaW5kb3dzJTIwRGVidWclMjAlMjhUZXN0cyUyOS9idWlsZHMv
MzY5MycsCisgICAgICAgICAgICAnaXNfZ3JlZW4nOiBUcnVlLAorICAgICAgICAgICAgJ25hbWUn
OiB1J1dpbmRvd3MgRGVidWcgKFRlc3RzKScsCisgICAgICAgICAgICAnYnVpbHRfcmV2aXNpb24n
OiA0NzM4MAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAnYnVpbGRlcl91cmwn
OiB1J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL1F0JTIwTGludXglMjBSZWxlYXNl
JywKKyAgICAgICAgICAgICdidWlsZF91cmwnOiB1J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1
aWxkZXJzL1F0JTIwTGludXglMjBSZWxlYXNlL2J1aWxkcy82NTQnLAorICAgICAgICAgICAgJ2lz
X2dyZWVuJzogRmFsc2UsCisgICAgICAgICAgICAnbmFtZSc6IHUnUXQgTGludXggUmVsZWFzZScs
CisgICAgICAgICAgICAnYnVpbHRfcmV2aXNpb24nOiA0NzM4MworICAgICAgICB9LAorICAgIF0K
KworICAgIGRlZiB0ZXN0X3N0YXR1c19wYXJzaW5nKHNlbGYpOgorICAgICAgICBidWlsZGJvdCA9
IEJ1aWxkQm90KCkKKworICAgICAgICBzb3VwID0gQmVhdXRpZnVsU291cChzZWxmLl9leGFtcGxl
X29uZV9ib3hfc3RhdHVzKQorICAgICAgICBzdGF0dXNfdGFibGUgPSBzb3VwLmZpbmQoInRhYmxl
IikKKyAgICAgICAgaW5wdXRfcm93cyA9IHN0YXR1c190YWJsZS5maW5kQWxsKCd0cicpCisKKyAg
ICAgICAgZm9yIHggaW4gcmFuZ2UobGVuKGlucHV0X3Jvd3MpKToKKyAgICAgICAgICAgIHN0YXR1
c19yb3cgPSBpbnB1dF9yb3dzW3hdCisgICAgICAgICAgICBleHBlY3RlZF9wYXJzaW5nID0gc2Vs
Zi5fZXhwZWN0ZWRfZXhhbXBsZV9vbmVfYm94X3BhcnNpbmdzW3hdCisKKyAgICAgICAgICAgIGJ1
aWxkZXIgPSBidWlsZGJvdC5fcGFyc2VfYnVpbGRlcl9zdGF0dXNfZnJvbV9yb3coc3RhdHVzX3Jv
dykKKworICAgICAgICAgICAgIyBNYWtlIHN1cmUgd2UgYXJlbid0IHBhcnNpbmcgbW9yZSBvciBs
ZXNzIHRoYW4gd2UgZXhwZWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhidWlsZGVy
LmtleXMoKSwgZXhwZWN0ZWRfcGFyc2luZy5rZXlzKCkpCisKKyAgICAgICAgICAgIGZvciBrZXks
IGV4cGVjdGVkX3ZhbHVlIGluIGV4cGVjdGVkX3BhcnNpbmcuaXRlbXMoKToKKyAgICAgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhidWlsZGVyW2tleV0sIGV4cGVjdGVkX3ZhbHVlLCAoIkJ1
aWxkZXIgJWQgcGFyc2UgZmFpbHVyZSBmb3Iga2V5OiAlczogQWN0dWFsPSclcycgRXhwZWN0ZWQ9
JyVzJyIgJSAoeCwga2V5LCBidWlsZGVyW2tleV0sIGV4cGVjdGVkX3ZhbHVlKSkpCisKKyAgICBk
ZWYgdGVzdF9idWlsZGVyX25hbWVfcmVnZXhwcyhzZWxmKToKKyAgICAgICAgYnVpbGRib3QgPSBC
dWlsZEJvdCgpCisKKyAgICAgICAgZXhhbXBsZV9idWlsZGVycyA9IFsKKyAgICAgICAgICAgIHsg
J25hbWUnOiB1J0xlb3BhcmQgRGVidWcgKEJ1aWxkKScsIH0sCisgICAgICAgICAgICB7ICduYW1l
JzogdSdMZW9wYXJkIERlYnVnIChUZXN0cyknLCB9LAorICAgICAgICAgICAgeyAnbmFtZSc6IHUn
V2luZG93cyBSZWxlYXNlIChCdWlsZCknLCB9LAorICAgICAgICAgICAgeyAnbmFtZSc6IHUnV2lu
ZG93cyBEZWJ1ZyAoVGVzdHMpJywgfSwKKyAgICAgICAgICAgIHsgJ25hbWUnOiB1J1F0IExpbnV4
IFJlbGVhc2UnLCB9LAorICAgICAgICBdCisgICAgICAgIG5hbWVfcmVnZXhwcyA9IFsgJ0xlb3Bh
cmQnLCAiV2luZG93cy4qQnVpbGQiIF0KKyAgICAgICAgZXhwZWN0ZWRfYnVpbGRlcnMgPSBbCisg
ICAgICAgICAgICB7ICduYW1lJzogdSdMZW9wYXJkIERlYnVnIChCdWlsZCknLCB9LAorICAgICAg
ICAgICAgeyAnbmFtZSc6IHUnTGVvcGFyZCBEZWJ1ZyAoVGVzdHMpJywgfSwKKyAgICAgICAgICAg
IHsgJ25hbWUnOiB1J1dpbmRvd3MgUmVsZWFzZSAoQnVpbGQpJywgfSwKKyAgICAgICAgXQorCisg
ICAgICAgICMgVGhpcyB0ZXN0IHNob3VsZCBwcm9iYWJseSBiZSB1cGRhdGVkIGlmIHRoZSBkZWZh
dWx0IHJlZ2V4cCBjaGFuZ2VzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGJ1aWxkYm90LmNv
cmVfYnVpbGRlcl9uYW1lc19yZWdleHBzLCBuYW1lX3JlZ2V4cHMpCisKKyAgICAgICAgYnVpbGRl
cnMgPSBidWlsZGJvdC5fYnVpbGRlcl9zdGF0dXNlc193aXRoX25hbWVzX21hdGNoaW5nX3JlZ2V4
cHMoZXhhbXBsZV9idWlsZGVycywgbmFtZV9yZWdleHBzKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhidWlsZGVycywgZXhwZWN0ZWRfYnVpbGRlcnMpCisKK2lmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3J1bi13ZWJraXQtdW5pdHRlc3RzIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0
LXVuaXR0ZXN0cwppbmRleCBlODE1ZjVmLi4yYTdmNjZkIDEwMDc1NQotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3J1bi13ZWJraXQtdW5pdHRlc3RzCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
cnVuLXdlYmtpdC11bml0dGVzdHMKQEAgLTMwLDYgKzMwLDcgQEAKIGltcG9ydCB1bml0dGVzdAog
CiBmcm9tIG1vZHVsZXMuYnVnemlsbGFfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gbW9kdWxlcy5i
dWlsZGJvdF91bml0dGVzdCBpbXBvcnQgKgogZnJvbSBtb2R1bGVzLmNvbW1pdHRlcnNfdW5pdHRl
c3QgaW1wb3J0ICoKIGZyb20gbW9kdWxlcy5jcHBfc3R5bGVfdW5pdHRlc3QgaW1wb3J0ICoKIGZy
b20gbW9kdWxlcy5kaWZmX3BhcnNlcl91bml0dGVzdCBpbXBvcnQgKg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35159</attachid>
            <date>2009-08-19 16:41:41 -0700</date>
            <delta_ts>2009-08-19 16:50:23 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-28222-20090819164140.patch</filename>
            <type>text/plain</type>
            <size>17115</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwZWUyNDgzLi5mMjc3MmY5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMDgt
MTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGJ1Z3ppbGxhLXRvb2wgbmVlZHMgYSB3YXkgdG8g
YXNrIGJ1aWxkLndlYmtpdC5vcmcgaWYgdGhlIGJvdHMgYXJlIHBhc3NpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjIyCisKKyAgICAgICAgQmFz
aWMgc3VwcG9ydCBmb3Igbm93LiAgVGhpcyBoYXMgYmVlbiBpbiB0ZXN0aW5nIGZvciAyNCBob3Vy
cyBub3cgYW5kIHdvcmtlZCBncmVhdCEKKworICAgICAgICAqIFNjcmlwdHMvYnVnemlsbGEtdG9v
bDoKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvYnVpbGRib3QucHk6IEFkZGVkLgorICAgICAg
ICAqIFNjcmlwdHMvbW9kdWxlcy9idWlsZGJvdF91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAg
ICogU2NyaXB0cy9ydW4td2Via2l0LXVuaXR0ZXN0czoKKwogMjAwOS0wOC0xOSAgSmFuIE1pY2hh
ZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBH
dXN0YXZvIE5vcm9uaGEuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxh
LXRvb2wgYi9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKaW5kZXggZjYwOWZhMS4u
YTMxZmFjNSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWd6aWxsYS10b29sCisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbApAQCAtNDMsNiArNDMsNyBAQCBm
cm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIsIEluZGVudGVkSGVscEZvcm1hdHRlciwg
U1VQUFJFU1NfVVNBR0UsIG1ha2VfbwogZnJvbSBtb2R1bGVzLmJ1Z3ppbGxhIGltcG9ydCBCdWd6
aWxsYQogZnJvbSBtb2R1bGVzLmxvZ2dpbmcgaW1wb3J0IGVycm9yLCBsb2cKIGZyb20gbW9kdWxl
cy5zY20gaW1wb3J0IENvbW1pdE1lc3NhZ2UsIGRldGVjdF9zY21fc3lzdGVtLCBTY3JpcHRFcnJv
cgorZnJvbSBtb2R1bGVzLmJ1aWxkYm90IGltcG9ydCBCdWlsZEJvdAogCiBkZWYgcGx1cmFsKG5v
dW4pOgogICAgICMgVGhpcyBpcyBhIGR1bWIgcGx1cmFsKCkgaW1wbGVtZW50YXRpb24gd2hpY2gg
d2FzIGp1c3QgZW5vdWdoIGZvciBvdXIgdXNlcy4KQEAgLTIzMiw2ICsyMzMsNyBAQCBjbGFzcyBX
ZWJLaXRMYW5kaW5nU2NyaXB0czoKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGxhbmRfb3B0
aW9ucygpOgogICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0taWdu
b3JlLWJ1aWxkZXJzIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNoZWNrX2J1aWxkZXJz
IiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEb24ndCBjaGVjayB0byBzZWUgaWYgdGhlIGJ1aWxkLndl
YmtpdC5vcmcgYnVpbGRlcnMgYXJlIGdyZWVuIGJlZm9yZSBsYW5kaW5nLiIpLAogICAgICAgICAg
ICAgbWFrZV9vcHRpb24oIi0tbm8tY2xvc2UiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0i
Y2xvc2VfYnVnIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJMZWF2ZSBidWcgb3BlbiBhZnRlciBsYW5k
aW5nLiIpLAogICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tYnVpbGQiLCBhY3Rpb249InN0
b3JlX2ZhbHNlIiwgZGVzdD0iYnVpbGQiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkNvbW1pdCB3aXRo
b3V0IGJ1aWxkaW5nIGZpcnN0LCBpbXBsaWVzIC0tbm8tdGVzdC4iKSwKICAgICAgICAgICAgIG1h
a2Vfb3B0aW9uKCItLW5vLXRlc3QiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0idGVzdCIs
IGRlZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0IHdpdGhvdXQgcnVubmluZyBydW4td2Via2l0LXRl
c3RzLiIpLApAQCAtMjY3LDYgKzI2OSwxMiBAQCBjbGFzcyBXZWJLaXRMYW5kaW5nU2NyaXB0czoK
ICAgICBkZWYgYnVpbGRfd2Via2l0KGNscywgcXVpZXQ9RmFsc2UpOgogICAgICAgICBjbHMucnVu
X3dlYmtpdF9zY3JpcHQoImJ1aWxkLXdlYmtpdCIsIHF1aWV0KQogCisgICAgQHN0YXRpY21ldGhv
ZAorICAgIGRlZiBlbnN1cmVfYnVpbGRlcnNfYXJlX2dyZWVuKGJ1aWxkYm90LCBvcHRpb25zKToK
KyAgICAgICAgaWYgbm90IG9wdGlvbnMuY2hlY2tfYnVpbGRlcnMgb3IgYnVpbGRib3QuY29yZV9i
dWlsZGVyc19hcmVfZ3JlZW4oKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBlcnJvcigi
QnVpbGRlcnMgYXQgJXMgYXJlIHJlZCwgcGxlYXNlIGRvIG5vdCBjb21taXQuICBQYXNzIC0taWdu
b3JlLWJ1aWxkZXJzIHRvIGJ5cGFzcyB0aGlzIGNoZWNrLiIgJSAoYnVpbGRib3QuYnVpbGRib3Rf
aG9zdCkpCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgcnVuX3dlYmtpdF90ZXN0cyhjbHMs
IGxhdW5jaF9zYWZhcmksIHF1aWV0PUZhbHNlKToKICAgICAgICAgYXJncyA9IFtjbHMud2Via2l0
X3NjcmlwdF9wYXRoKCJydW4td2Via2l0LXRlc3RzIildCkBAIC0zMzMsNiArMzQxLDggQEAgY2xh
c3MgTGFuZEFuZFVwZGF0ZUJ1ZyhDb21tYW5kKToKICAgICAgICAgYnVnX2lkID0gYXJnc1swXSBp
ZiBsZW4oYXJncykgZWxzZSBOb25lCiAgICAgICAgIG9zLmNoZGlyKHRvb2wuc2NtKCkuY2hlY2tv
dXRfcm9vdCkKIAorICAgICAgICBXZWJLaXRMYW5kaW5nU2NyaXB0cy5lbnN1cmVfYnVpbGRlcnNf
YXJlX2dyZWVuKHRvb2wuYnVpbGRib3QsIG9wdGlvbnMpCisKICAgICAgICAgc2VsZi51cGRhdGVf
Y2hhbmdlbG9nc193aXRoX3Jldmlld2VyKG9wdGlvbnMucmV2aWV3ZXIsIGJ1Z19pZCwgdG9vbCkK
IAogICAgICAgICBjb21tZW50X3RleHQgPSBXZWJLaXRMYW5kaW5nU2NyaXB0cy5idWlsZF9hbmRf
Y29tbWl0KHRvb2wuc2NtKCksIG9wdGlvbnMpCkBAIC0zNjMsNiArMzczLDkgQEAgY2xhc3MgTGFu
ZFBhdGNoZXNGcm9tQnVncyhDb21tYW5kKToKICAgICAgICAgICAgICAgICB0b29sLnNjbSgpLnVw
ZGF0ZV93ZWJraXQoKSAjIFVwZGF0ZSBiZWZvcmUgZXZlcnkgcGF0Y2ggaW4gY2FzZSB0aGUgdHJl
ZSBoYXMgY2hhbmdlZAogICAgICAgICAgICAgICAgIGxvZygiQXBwbHlpbmcgJXMgZnJvbSBidWcg
JXMuIiAlIChwYXRjaFsnaWQnXSwgYnVnX2lkKSkKICAgICAgICAgICAgICAgICB0b29sLnNjbSgp
LmFwcGx5X3BhdGNoKHBhdGNoLCBmb3JjZT1vcHRpb25zLmNvbW1pdF9xdWV1ZSkKKyAgICAgICAg
ICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgdHJlZSBpcyBzdGlsbCBncmVlbiBhZnRlciB1cGRhdGlu
ZywgYmVmb3JlIGJ1aWxkaW5nIHRoaXMgcGF0Y2guCisgICAgICAgICAgICAgICAgIyBUaGUgZmly
c3QgcGF0Y2ggZW5kcyB1cCBjaGVja2luZyB0cmVlIHN0YXR1cyB0d2ljZSwgYnV0IHRoYXQncyBP
Sy4KKyAgICAgICAgICAgICAgICBXZWJLaXRMYW5kaW5nU2NyaXB0cy5lbnN1cmVfYnVpbGRlcnNf
YXJlX2dyZWVuKHRvb2wuYnVpbGRib3QsIG9wdGlvbnMpCiAgICAgICAgICAgICAgICAgY29tbWVu
dF90ZXh0ID0gV2ViS2l0TGFuZGluZ1NjcmlwdHMuYnVpbGRfYW5kX2NvbW1pdCh0b29sLnNjbSgp
LCBvcHRpb25zKQogICAgICAgICAgICAgICAgIHRvb2wuYnVncy5jbGVhcl9hdHRhY2htZW50X2Zs
YWdzKHBhdGNoWydpZCddLCBjb21tZW50X3RleHQpCiAKQEAgLTM3MywxMCArMzg2LDggQEAgY2xh
c3MgTGFuZFBhdGNoZXNGcm9tQnVncyhDb21tYW5kKToKICAgICAgICAgICAgICMgV2Ugc2hvdWxk
IGFkZCBhIGNvbW1lbnQgdG8gdGhlIGJ1ZywgYW5kIHItIHRoZSBwYXRjaCBvbiBmYWlsdXJlCiAg
ICAgICAgICAgICBlcnJvcihlKQogCi0gICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJn
cywgdG9vbCk6Ci0gICAgICAgIGlmIG5vdCBsZW4oYXJncyk6Ci0gICAgICAgICAgICBlcnJvcigi
YnVnLWlkKHMpIHJlcXVpcmVkIikKLQorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2ZldGNo
X2xpc3Rfb2ZfcGF0Y2hlc190b19sYW5kKG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAgICBi
dWdzX3RvX3BhdGNoZXMgPSB7fQogICAgICAgICBwYXRjaF9jb3VudCA9IDAKICAgICAgICAgZm9y
IGJ1Z19pZCBpbiBhcmdzOgpAQCAtMzk0LDYgKzQwNSwxNiBAQCBjbGFzcyBMYW5kUGF0Y2hlc0Zy
b21CdWdzKENvbW1hbmQpOgogICAgICAgICAgICAgICAgIGJ1Z3NfdG9fcGF0Y2hlc1tidWdfaWRd
ID0gcGF0Y2hlcwogCiAgICAgICAgIGxvZygiTGFuZGluZyAlcyBmcm9tICVzLiIgJSAocGx1cmFs
aXplKCJwYXRjaCIsIHBhdGNoX2NvdW50KSwgcGx1cmFsaXplKCJidWciLCBsZW4oYXJncykpKSkK
KyAgICAgICAgcmV0dXJuIGJ1Z3NfdG9fcGF0Y2hlcworCisgICAgZGVmIGV4ZWN1dGUoc2VsZiwg
b3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgICAgIGlmIG5vdCBsZW4oYXJncyk6CisgICAgICAg
ICAgICBlcnJvcigiYnVnLWlkKHMpIHJlcXVpcmVkIikKKworICAgICAgICAjIENoZWNrIHRoZSB0
cmVlIHN0YXR1cyBoZXJlIHNvIHdlIGNhbiBmYWlsIGVhcmx5CisgICAgICAgIFdlYktpdExhbmRp
bmdTY3JpcHRzLmVuc3VyZV9idWlsZGVyc19hcmVfZ3JlZW4odG9vbC5idWlsZGJvdCwgb3B0aW9u
cykKKworICAgICAgICBidWdzX3RvX3BhdGNoZXMgPSBzZWxmLl9mZXRjaF9saXN0X29mX3BhdGNo
ZXNfdG9fbGFuZChvcHRpb25zLCBhcmdzLCB0b29sKQogCiAgICAgICAgIFdlYktpdExhbmRpbmdT
Y3JpcHRzLnNldHVwX2Zvcl9sYW5kaW5nKHRvb2wuc2NtKCksIG9wdGlvbnMpCiAKQEAgLTU3Nyw2
ICs1OTgsMTYgQEAgY2xhc3MgQ3JlYXRlQnVnKENvbW1hbmQpOgogICAgICAgICAgICAgc2VsZi5j
cmVhdGVfYnVnX2Zyb21fcGF0Y2gob3B0aW9ucywgYXJncywgdG9vbCkKIAogCitjbGFzcyBDaGVj
a1RyZWVTdGF0dXMoQ29tbWFuZCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBD
b21tYW5kLl9faW5pdF9fKHNlbGYsICdQcmludCBvdXQgdGhlIHN0YXR1cyBvZiB0aGUgd2Via2l0
IGJ1aWxkZXJzLicpCisKKyAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29s
KToKKyAgICAgICAgZm9yIGJ1aWxkZXIgaW4gdG9vbC5idWlsZGJvdC5idWlsZGVyX3N0YXR1c2Vz
KCk6CisgICAgICAgICAgICBzdGF0dXNfc3RyaW5nID0gIm9rIiBpZiBidWlsZGVyWydpc19ncmVl
biddIGVsc2UgJ0ZBSUwnCisgICAgICAgICAgICBwcmludCAiJXMgOiAlcyIgJSAoc3RhdHVzX3N0
cmluZy5sanVzdCg0KSwgYnVpbGRlclsnbmFtZSddKQorCisKIGNsYXNzIE5vbldyYXBwaW5nRXBp
bG9nSW5kZW50ZWRIZWxwRm9ybWF0dGVyKEluZGVudGVkSGVscEZvcm1hdHRlcik6CiAgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgogICAgICAgICBJbmRlbnRlZEhlbHBGb3JtYXR0ZXIuX19pbml0X18o
c2VsZikKQEAgLTYwMCw2ICs2MzEsNyBAQCBjbGFzcyBCdWd6aWxsYVRvb2w6CiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLmNhY2hlZF9zY20gPSBOb25lCiAgICAgICAgIHNl
bGYuYnVncyA9IEJ1Z3ppbGxhKCkKKyAgICAgICAgc2VsZi5idWlsZGJvdCA9IEJ1aWxkQm90KCkK
ICAgICAgICAgc2VsZi5jb21tYW5kcyA9IFsKICAgICAgICAgICAgIHsgJ25hbWUnIDogJ2J1Z3Mt
dG8tY29tbWl0JywgJ29iamVjdCcgOiBCdWdzSW5Db21taXRRdWV1ZSgpIH0sCiAgICAgICAgICAg
ICB7ICduYW1lJyA6ICdwYXRjaGVzLXRvLWNvbW1pdCcsICdvYmplY3QnIDogUGF0Y2hlc0luQ29t
bWl0UXVldWUoKSB9LApAQCAtNjEyLDYgKzY0NCw3IEBAIGNsYXNzIEJ1Z3ppbGxhVG9vbDoKICAg
ICAgICAgICAgIHsgJ25hbWUnIDogJ29ic29sZXRlLWF0dGFjaG1lbnRzJywgJ29iamVjdCcgOiBP
YnNvbGV0ZUF0dGFjaG1lbnRzT25CdWcoKSB9LAogICAgICAgICAgICAgeyAnbmFtZScgOiAncG9z
dC1kaWZmJywgJ29iamVjdCcgOiBQb3N0RGlmZkFzUGF0Y2hUb0J1ZygpIH0sCiAgICAgICAgICAg
ICB7ICduYW1lJyA6ICdwb3N0LWNvbW1pdHMnLCAnb2JqZWN0JyA6IFBvc3RDb21taXRzQXNQYXRj
aGVzVG9CdWcoKSB9LAorICAgICAgICAgICAgeyAnbmFtZScgOiAndHJlZS1zdGF0dXMnLCAnb2Jq
ZWN0JyA6IENoZWNrVHJlZVN0YXR1cygpIH0sCiAgICAgICAgIF0KIAogICAgICAgICBzZWxmLmds
b2JhbF9vcHRpb25fcGFyc2VyID0gSGVscFByaW50aW5nT3B0aW9uUGFyc2VyKHVzYWdlPXNlbGYu
dXNhZ2VfbGluZSgpLCBmb3JtYXR0ZXI9Tm9uV3JhcHBpbmdFcGlsb2dJbmRlbnRlZEhlbHBGb3Jt
YXR0ZXIoKSwgZXBpbG9nPXNlbGYuY29tbWFuZHNfdXNhZ2UoKSkKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWlsZGJvdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
bW9kdWxlcy9idWlsZGJvdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j
ZDI5MDU5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1
aWxkYm90LnB5CkBAIC0wLDAgKzEsOTkgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyAKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMg
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgV2Vi
S2l0J3MgUHl0aG9uIG1vZHVsZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBXZWJLaXQncyBidWlsZGJv
dAorCitpbXBvcnQgcmUKK2ltcG9ydCB1cmxsaWIyCisKKyMgSW1wb3J0IFdlYktpdC1zcGVjaWZp
YyBtb2R1bGVzLgorZnJvbSBtb2R1bGVzLmxvZ2dpbmcgaW1wb3J0IGxvZworCisjIFdlYktpdCBp
bmNsdWRlcyBhIGJ1aWx0IGNvcHkgb2YgQmVhdXRpZnVsU291cCBpbiBTY3JpcHRzL21vZHVsZXMK
KyMgc28gdGhpcyBpbXBvcnQgc2hvdWxkIGFsd2F5cyBzdWNjZWVkLgorZnJvbSAuQmVhdXRpZnVs
U291cCBpbXBvcnQgQmVhdXRpZnVsU291cAorCitjbGFzcyBCdWlsZEJvdDoKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgaG9zdD0iYnVpbGQud2Via2l0Lm9yZyIpOgorICAgICAgICBzZWxmLmJ1aWxk
Ym90X2hvc3QgPSBob3N0CisgICAgICAgIHNlbGYuYnVpbGRib3Rfc2VydmVyX3VybCA9ICJodHRw
Oi8vJXMvIiAlIHNlbGYuYnVpbGRib3RfaG9zdAorICAgICAgICAKKyAgICAgICAgIyBJZiBhbnkg
b2YgdGhlIExlb3BhcmQgYnVpbGQvdGVzdCBib3RzIG9yIHRoZSBXaW5kb3dzIGJ1aWxkZXJzIGFy
ZSByZWQgd2Ugc2hvdWxkIG5vdCBiZSBsYW5kaW5nIHBhdGNoZXMuCisgICAgICAgICMgT3RoZXIg
YnVpbGRlcnMgc2hvdWxkIGJlIGFkZGVkIHRvIHRoaXMgbGlzdCBvbmNlIHRoZXkncmUga25vd24g
dG8gYmUgc3RhYmxlLgorICAgICAgICBzZWxmLmNvcmVfYnVpbGRlcl9uYW1lc19yZWdleHBzID0g
WyAnTGVvcGFyZCcsICJXaW5kb3dzLipCdWlsZCIgXQorCisgICAgIyBJZiBXZWJLaXQncyBidWls
ZGJvdCBoYXMgYW4gWE1MUlBDIGludGVyZmFjZSB3ZSBjb3VsZCB1c2UsIHdlIGNvdWxkIGRvIHNv
bWV0aGluZyBtb3JlIHNvcGhpc3RpY2F0ZWQgaGVyZS4KKyAgICAjIEZvciBub3cgd2UganVzdCBw
YXJzZSBvdXQgdGhlIGJhc2ljcywgZW5vdWdoIHRvIHN1cHBvcnQgYmFzaWMgcXVlc3Rpb25zIGxp
a2UgImlzIHRoZSB0cmVlIGdyZWVuPyIKKyAgICBkZWYgX3BhcnNlX2J1aWxkZXJfc3RhdHVzX2Zy
b21fcm93KHNlbGYsIHN0YXR1c19yb3cpOgorICAgICAgICBzdGF0dXNfY2VsbHMgPSBzdGF0dXNf
cm93LmZpbmRBbGwoJ3RkJykKKyAgICAgICAgYnVpbGRlciA9IHt9CisKKyAgICAgICAgbmFtZV9s
aW5rID0gc3RhdHVzX2NlbGxzWzBdLmZpbmQoJ2EnKQorICAgICAgICBidWlsZGVyWyduYW1lJ10g
PSBuYW1lX2xpbmsuc3RyaW5nCisgICAgICAgICMgV2UgY291bGQgZ2VuZXJhdGUgdGhlIGJ1aWxk
ZXJfdXJsIGZyb20gdGhlIG5hbWUgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiB0aGlzIGNvZGUuCisg
ICAgICAgIGJ1aWxkZXJbJ2J1aWxkZXJfdXJsJ10gPSBzZWxmLmJ1aWxkYm90X3NlcnZlcl91cmwg
KyBuYW1lX2xpbmtbJ2hyZWYnXQorCisgICAgICAgIHN0YXR1c19saW5rID0gc3RhdHVzX2NlbGxz
WzFdLmZpbmQoJ2EnKQorICAgICAgICByZXZpc2lvbl9zdHJpbmcgPSBzdGF0dXNfbGluay5zdHJp
bmcgIyBXaWxsIGJlIGVpdGhlciBhIHJldmlzaW9uIG51bWJlciBvciBhIGJ1aWxkIG51bWJlcgor
ICAgICAgICAjIElmIHJldmlzaW9uX3N0cmluZyBoYXMgbm9uLWRpZ2l0cyBhc3N1bWUgaXQncyBu
b3QgYSByZXZpc2lvbiBudW1iZXIuCisgICAgICAgIGJ1aWxkZXJbJ2J1aWx0X3JldmlzaW9uJ10g
PSBpbnQocmV2aXNpb25fc3RyaW5nKSBpZiBub3QgcmUubWF0Y2goJ1xEJywgcmV2aXNpb25fc3Ry
aW5nKSBlbHNlIE5vbmUKKyAgICAgICAgYnVpbGRlclsnaXNfZ3JlZW4nXSA9IG5vdCByZS5zZWFy
Y2goJ2ZhaWwnLCBzdGF0dXNfY2VsbHNbMV0ucmVuZGVyQ29udGVudHMoKSkKKyAgICAgICAgIyBX
ZSBjb3VsZCBwYXJzZSBvdXQgdGhlIGJ1aWxkIG51bWJlciBpbnN0ZWFkLCBidXQgZm9yIG5vdyBq
dXN0IHN0b3JlIHRoZSBVUkwuCisgICAgICAgIGJ1aWxkZXJbJ2J1aWxkX3VybCddID0gc2VsZi5i
dWlsZGJvdF9zZXJ2ZXJfdXJsICsgc3RhdHVzX2xpbmtbJ2hyZWYnXQorCisgICAgICAgICMgV2Ug
Y291bGQgcGFyc2Ugb3V0IHRoZSBjdXJyZW50IGFjdGl2aXR5IHRvby4KKworICAgICAgICByZXR1
cm4gYnVpbGRlcgorCisgICAgZGVmIF9idWlsZGVyX3N0YXR1c2VzX3dpdGhfbmFtZXNfbWF0Y2hp
bmdfcmVnZXhwcyhzZWxmLCBidWlsZGVyX3N0YXR1c2VzLCBuYW1lX3JlZ2V4cHMpOgorICAgICAg
ICBidWlsZGVycyA9IFtdCisgICAgICAgIGZvciBidWlsZGVyIGluIGJ1aWxkZXJfc3RhdHVzZXM6
CisgICAgICAgICAgICBmb3IgbmFtZV9yZWdleHAgaW4gbmFtZV9yZWdleHBzOgorICAgICAgICAg
ICAgICAgIGlmIHJlLm1hdGNoKG5hbWVfcmVnZXhwLCBidWlsZGVyWyduYW1lJ10pOgorICAgICAg
ICAgICAgICAgICAgICBidWlsZGVycy5hcHBlbmQoYnVpbGRlcikKKyAgICAgICAgcmV0dXJuIGJ1
aWxkZXJzCisKKyAgICBkZWYgY29yZV9idWlsZGVyc19hcmVfZ3JlZW4oc2VsZik6CisgICAgICAg
IGZvciBidWlsZGVyIGluIHNlbGYuX2J1aWxkZXJfc3RhdHVzZXNfd2l0aF9uYW1lc19tYXRjaGlu
Z19yZWdleHBzKHNlbGYuYnVpbGRlcl9zdGF0dXNlcygpLCBzZWxmLmNvcmVfYnVpbGRlcl9uYW1l
c19yZWdleHBzKToKKyAgICAgICAgICAgIGlmIG5vdCBidWlsZGVyWydpc19ncmVlbiddOgorICAg
ICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVm
IGJ1aWxkZXJfc3RhdHVzZXMoc2VsZik6CisgICAgICAgIGJ1aWxkX3N0YXR1c191cmwgPSBzZWxm
LmJ1aWxkYm90X3NlcnZlcl91cmwgKyAnb25lX2JveF9wZXJfYnVpbGRlcicKKyAgICAgICAgbG9n
KCJGZXRjaGluZyAlcyIgJSBidWlsZF9zdGF0dXNfdXJsKQorCisgICAgICAgIHBhZ2UgPSB1cmxs
aWIyLnVybG9wZW4oYnVpbGRfc3RhdHVzX3VybCkKKyAgICAgICAgc291cCA9IEJlYXV0aWZ1bFNv
dXAocGFnZSkKKworICAgICAgICBidWlsZGVycyA9IFtdCisgICAgICAgIHN0YXR1c190YWJsZSA9
IHNvdXAuZmluZCgndGFibGUnKQorICAgICAgICBmb3Igc3RhdHVzX3JvdyBpbiBzdGF0dXNfdGFi
bGUuZmluZEFsbCgndHInKToKKyAgICAgICAgICAgIGJ1aWxkZXIgPSBzZWxmLl9wYXJzZV9idWls
ZGVyX3N0YXR1c19mcm9tX3JvdyhzdGF0dXNfcm93KQorICAgICAgICAgICAgYnVpbGRlcnMuYXBw
ZW5kKGJ1aWxkZXIpCisgICAgICAgIHJldHVybiBidWlsZGVycwpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkYm90X3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL2J1aWxkYm90X3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjcwNTRiZWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvYnVpbGRib3RfdW5pdHRlc3QucHkKQEAgLTAsMCArMSwxMDkgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSBtb2R1bGVzLmJ1aWxkYm90IGlt
cG9ydCBCdWlsZEJvdAorCitmcm9tIG1vZHVsZXMuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRp
ZnVsU291cAorCitjbGFzcyBCdWlsZEJvdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAg
X2V4YW1wbGVfb25lX2JveF9zdGF0dXMgPSAnJycKKyAgICA8dGFibGU+CisgICAgPHRyPgorICAg
IDx0ZCBjbGFzcz0iYm94Ij48YSBocmVmPSJidWlsZGVycy9XaW5kb3dzJTIwRGVidWclMjAlMjhU
ZXN0cyUyOSI+V2luZG93cyBEZWJ1ZyAoVGVzdHMpPC9hPjwvdGQ+CisgICAgICA8dGQgYWxpZ249
ImNlbnRlciIgY2xhc3M9Ikxhc3RCdWlsZCBib3ggc3VjY2VzcyI+PGEgaHJlZj0iYnVpbGRlcnMv
V2luZG93cyUyMERlYnVnJTIwJTI4VGVzdHMlMjkvYnVpbGRzLzM2OTMiPjQ3MzgwPC9hPjxiciAv
PmJ1aWxkPGJyIC8+c3VjY2Vzc2Z1bDwvdGQ+CisgICAgICA8dGQgYWxpZ249ImNlbnRlciIgY2xh
c3M9IkFjdGl2aXR5IGJ1aWxkaW5nIj5idWlsZGluZzxiciAvPkVUQSBpbjxiciAvPn4gMTQgbWlu
czxiciAvPmF0IDEzOjQwPC90ZD4KKyAgICA8dHI+CisgICAgPHRkIGNsYXNzPSJib3giPjxhIGhy
ZWY9ImJ1aWxkZXJzL1F0JTIwTGludXglMjBSZWxlYXNlIj5RdCBMaW51eCBSZWxlYXNlPC9hPjwv
dGQ+CisgICAgICA8dGQgYWxpZ249ImNlbnRlciIgY2xhc3M9Ikxhc3RCdWlsZCBib3ggZmFpbHVy
ZSI+PGEgaHJlZj0iYnVpbGRlcnMvUXQlMjBMaW51eCUyMFJlbGVhc2UvYnVpbGRzLzY1NCI+NDcz
ODM8L2E+PGJyIC8+ZmFpbGVkPGJyIC8+Y29tcGlsZS13ZWJraXQ8L3RkPgorICAgICAgPHRkIGFs
aWduPSJjZW50ZXIiIGNsYXNzPSJBY3Rpdml0eSBpZGxlIj5pZGxlPC90ZD4KKyAgICA8L3RhYmxl
PgorJycnCisgICAgX2V4cGVjdGVkX2V4YW1wbGVfb25lX2JveF9wYXJzaW5ncyA9IFsKKyAgICAg
ICAgeworICAgICAgICAgICAgJ2J1aWxkZXJfdXJsJzogdSdodHRwOi8vYnVpbGQud2Via2l0Lm9y
Zy9idWlsZGVycy9XaW5kb3dzJTIwRGVidWclMjAlMjhUZXN0cyUyOScsCisgICAgICAgICAgICAn
YnVpbGRfdXJsJzogdSdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9XaW5kb3dzJTIw
RGVidWclMjAlMjhUZXN0cyUyOS9idWlsZHMvMzY5MycsCisgICAgICAgICAgICAnaXNfZ3JlZW4n
OiBUcnVlLAorICAgICAgICAgICAgJ25hbWUnOiB1J1dpbmRvd3MgRGVidWcgKFRlc3RzKScsCisg
ICAgICAgICAgICAnYnVpbHRfcmV2aXNpb24nOiA0NzM4MAorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICAnYnVpbGRlcl91cmwnOiB1J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1
aWxkZXJzL1F0JTIwTGludXglMjBSZWxlYXNlJywKKyAgICAgICAgICAgICdidWlsZF91cmwnOiB1
J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL1F0JTIwTGludXglMjBSZWxlYXNlL2J1
aWxkcy82NTQnLAorICAgICAgICAgICAgJ2lzX2dyZWVuJzogRmFsc2UsCisgICAgICAgICAgICAn
bmFtZSc6IHUnUXQgTGludXggUmVsZWFzZScsCisgICAgICAgICAgICAnYnVpbHRfcmV2aXNpb24n
OiA0NzM4MworICAgICAgICB9LAorICAgIF0KKworICAgIGRlZiB0ZXN0X3N0YXR1c19wYXJzaW5n
KHNlbGYpOgorICAgICAgICBidWlsZGJvdCA9IEJ1aWxkQm90KCkKKworICAgICAgICBzb3VwID0g
QmVhdXRpZnVsU291cChzZWxmLl9leGFtcGxlX29uZV9ib3hfc3RhdHVzKQorICAgICAgICBzdGF0
dXNfdGFibGUgPSBzb3VwLmZpbmQoInRhYmxlIikKKyAgICAgICAgaW5wdXRfcm93cyA9IHN0YXR1
c190YWJsZS5maW5kQWxsKCd0cicpCisKKyAgICAgICAgZm9yIHggaW4gcmFuZ2UobGVuKGlucHV0
X3Jvd3MpKToKKyAgICAgICAgICAgIHN0YXR1c19yb3cgPSBpbnB1dF9yb3dzW3hdCisgICAgICAg
ICAgICBleHBlY3RlZF9wYXJzaW5nID0gc2VsZi5fZXhwZWN0ZWRfZXhhbXBsZV9vbmVfYm94X3Bh
cnNpbmdzW3hdCisKKyAgICAgICAgICAgIGJ1aWxkZXIgPSBidWlsZGJvdC5fcGFyc2VfYnVpbGRl
cl9zdGF0dXNfZnJvbV9yb3coc3RhdHVzX3JvdykKKworICAgICAgICAgICAgIyBNYWtlIHN1cmUg
d2UgYXJlbid0IHBhcnNpbmcgbW9yZSBvciBsZXNzIHRoYW4gd2UgZXhwZWN0CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhidWlsZGVyLmtleXMoKSwgZXhwZWN0ZWRfcGFyc2luZy5rZXlz
KCkpCisKKyAgICAgICAgICAgIGZvciBrZXksIGV4cGVjdGVkX3ZhbHVlIGluIGV4cGVjdGVkX3Bh
cnNpbmcuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhidWlsZGVy
W2tleV0sIGV4cGVjdGVkX3ZhbHVlLCAoIkJ1aWxkZXIgJWQgcGFyc2UgZmFpbHVyZSBmb3Iga2V5
OiAlczogQWN0dWFsPSclcycgRXhwZWN0ZWQ9JyVzJyIgJSAoeCwga2V5LCBidWlsZGVyW2tleV0s
IGV4cGVjdGVkX3ZhbHVlKSkpCisKKyAgICBkZWYgdGVzdF9idWlsZGVyX25hbWVfcmVnZXhwcyhz
ZWxmKToKKyAgICAgICAgYnVpbGRib3QgPSBCdWlsZEJvdCgpCisKKyAgICAgICAgZXhhbXBsZV9i
dWlsZGVycyA9IFsKKyAgICAgICAgICAgIHsgJ25hbWUnOiB1J0xlb3BhcmQgRGVidWcgKEJ1aWxk
KScsIH0sCisgICAgICAgICAgICB7ICduYW1lJzogdSdMZW9wYXJkIERlYnVnIChUZXN0cyknLCB9
LAorICAgICAgICAgICAgeyAnbmFtZSc6IHUnV2luZG93cyBSZWxlYXNlIChCdWlsZCknLCB9LAor
ICAgICAgICAgICAgeyAnbmFtZSc6IHUnV2luZG93cyBEZWJ1ZyAoVGVzdHMpJywgfSwKKyAgICAg
ICAgICAgIHsgJ25hbWUnOiB1J1F0IExpbnV4IFJlbGVhc2UnLCB9LAorICAgICAgICBdCisgICAg
ICAgIG5hbWVfcmVnZXhwcyA9IFsgJ0xlb3BhcmQnLCAiV2luZG93cy4qQnVpbGQiIF0KKyAgICAg
ICAgZXhwZWN0ZWRfYnVpbGRlcnMgPSBbCisgICAgICAgICAgICB7ICduYW1lJzogdSdMZW9wYXJk
IERlYnVnIChCdWlsZCknLCB9LAorICAgICAgICAgICAgeyAnbmFtZSc6IHUnTGVvcGFyZCBEZWJ1
ZyAoVGVzdHMpJywgfSwKKyAgICAgICAgICAgIHsgJ25hbWUnOiB1J1dpbmRvd3MgUmVsZWFzZSAo
QnVpbGQpJywgfSwKKyAgICAgICAgXQorCisgICAgICAgICMgVGhpcyB0ZXN0IHNob3VsZCBwcm9i
YWJseSBiZSB1cGRhdGVkIGlmIHRoZSBkZWZhdWx0IHJlZ2V4cCBsaXN0IGNoYW5nZXMKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoYnVpbGRib3QuY29yZV9idWlsZGVyX25hbWVzX3JlZ2V4cHMs
IG5hbWVfcmVnZXhwcykKKworICAgICAgICBidWlsZGVycyA9IGJ1aWxkYm90Ll9idWlsZGVyX3N0
YXR1c2VzX3dpdGhfbmFtZXNfbWF0Y2hpbmdfcmVnZXhwcyhleGFtcGxlX2J1aWxkZXJzLCBuYW1l
X3JlZ2V4cHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGJ1aWxkZXJzLCBleHBlY3RlZF9i
dWlsZGVycykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWlu
KCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC11bml0dGVzdHMg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdW5pdHRlc3RzCmluZGV4IGU4MTVmNWYu
LjJhN2Y2NmQgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC11bml0
dGVzdHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXVuaXR0ZXN0cwpAQCAt
MzAsNiArMzAsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gbW9kdWxlcy5idWd6aWxsYV91
bml0dGVzdCBpbXBvcnQgKgorZnJvbSBtb2R1bGVzLmJ1aWxkYm90X3VuaXR0ZXN0IGltcG9ydCAq
CiBmcm9tIG1vZHVsZXMuY29tbWl0dGVyc191bml0dGVzdCBpbXBvcnQgKgogZnJvbSBtb2R1bGVz
LmNwcF9zdHlsZV91bml0dGVzdCBpbXBvcnQgKgogZnJvbSBtb2R1bGVzLmRpZmZfcGFyc2VyX3Vu
aXR0ZXN0IGltcG9ydCAq
</data>
<flag name="review"
          id="19350"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="19351"
          type_id="3"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>