<?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>55723</bug_id>
          
          <creation_ts>2011-03-03 16:24:17 -0800</creation_ts>
          <short_desc>lazily autoinstall thirdparty python libraries</short_desc>
          <delta_ts>2011-04-27 13:44:33 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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="Tony Chang">tony</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>362057</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-03 16:24:17 -0800</bug_when>
    <thetext>lazily autoinstall thirdparty python libraries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362064</commentid>
    <comment_count>1</comment_count>
      <attachid>84652</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-03 16:26:43 -0800</bug_when>
    <thetext>Created attachment 84652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362067</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-03 16:29:00 -0800</bug_when>
    <thetext>I&apos;m not super excited about this, but I think it&apos;s better than what we have currently.  I don&apos;t like how we have to move the imports to where the object is actually used, but I can&apos;t think of another way to make this work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362075</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-03 16:40:04 -0800</bug_when>
    <thetext>I&apos;m not sure I understand what problem you&apos;re trying to solve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362076</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-03 16:42:16 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;m not sure I understand what problem you&apos;re trying to solve.

About a month ago, the chromium waterfall moved to a new datacenter and &gt; 100 bots were trying to autoinstall packages from sourceforge.net, effectively DOSing them.  By autoinstalling less, the bots will be more stable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362078</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-03 16:44:40 -0800</bug_when>
    <thetext>Here&apos;s the chromium-dev thread:
http://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/48ed0048e6749748/fcfb18a3a7dff1dc?lnk=gst</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362100</commentid>
    <comment_count>6</comment_count>
      <attachid>84652</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-03 17:11:34 -0800</bug_when>
    <thetext>Comment on attachment 84652
Patch

I&apos;m confused as to why the import hooks are needed if you&apos;re moving the import calls into the functions themselves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362107</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-03 17:16:14 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 84652 [details])
&gt; I&apos;m confused as to why the import hooks are needed if you&apos;re moving the import calls into the functions themselves.

If we don&apos;t use import hooks, importing anything in thirdparty triggers the downloads.  For example, importing thirdparty.BeautifulSoup or thirdparty.mock triggers downloads.

I could try pushing all those imports down as well, but that seems a bit more fragile since it&apos;s less obvious that importing thirdparty.BeautifulSoup is going to trigger a download (at least thirdparty.autoinstalled.foo has autoinstalled in it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362604</commentid>
    <comment_count>8</comment_count>
      <attachid>84776</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-04 10:19:34 -0800</bug_when>
    <thetext>Created attachment 84776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393629</commentid>
    <comment_count>9</comment_count>
      <attachid>91307</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-27 10:13:06 -0700</bug_when>
    <thetext>Created attachment 91307
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393765</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-27 13:44:24 -0700</bug_when>
    <thetext>Committed r85080: &lt;http://trac.webkit.org/changeset/85080&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84652</attachid>
            <date>2011-03-03 16:26:43 -0800</date>
            <delta_ts>2011-03-04 10:19:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55723-20110303162647.patch</filename>
            <type>text/plain</type>
            <size>18762</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAyNDcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxOTYwZjY5NzJiNDAxOGFlZDY3Zjc5ODQxY2Q3MmJhMWMw
NzE0ZmQ0Li5kYzhlOGU1OWM4NTZmZmM5YjNhMjRhOGVlY2I1ZGVhOGQ3ZGZkNmE4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTEtMDMtMDMgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsYXppbHkgYXV0b2luc3Rh
bGwgdGhpcmRwYXJ0eSBweXRob24gbGlicmFyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTcyMworCisgICAgICAgIFRoaXMgaGVscHMgYnkgb25s
eSBoYXZpbmcgcHl3ZWJzb2NrZXQgaW5zdGFsbGVkIHdoZW4gdGhlIGJvdHMgcnVuLiAgSXQKKyAg
ICAgICAgZG9lc24ndCBoZWxwIG11Y2ggZm9yIGRldnMgc2luY2Ugd2Via2l0LXBhdGNoIHB1bGxz
IGluIGFsbW9zdCBldmVyeXRoaW5nLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvbmV0d29ya3RyYW5zYWN0aW9uLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9uZXR3b3JrdHJhbnNhY3Rpb25fdW5pdHRlc3QucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZlci5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5OiBB
ZGQgYW4gaW1wb3J0IGhvb2sgc28gd2UgY2FuIGluc3RhbGwgYmFzZWQgb24KKyAgICAgICAgICAg
IHRoZSBpbXBvcnQgY29tbWFuZCByYXRoZXIgdGhhbiBqdXN0IGluc3RhbGxpbmcgZXZlcnl0aGlu
Zy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X19fdW5pdHRl
c3QucHk6IEFkZGVkLgorCiAyMDExLTAzLTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL25ldy1ydW4td2Via2l0LXdlYnNvY2tldHNlcnZlciBi
L1Rvb2xzL1NjcmlwdHMvbmV3LXJ1bi13ZWJraXQtd2Vic29ja2V0c2VydmVyCm9sZCBtb2RlIDEw
MDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQppbmRleCAxN2E4NTE1ZDI4YTVmY2RlNTU4
ODQ3ZmI0NTNhMmFlZjYzNjkwZTEzLi41NzgyZWU5YmNmMmMwMzFlZmY3ZGVlY2E3ODY3MDcyN2Vm
NTY2OWQ1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVn
emlsbGEvYnVnemlsbGEucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5CkBAIC00NSw3ICs0NSw2IEBAIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxvZwogZnJvbSB3ZWJraXRweS5j
b21tb24uY29uZmlnIGltcG9ydCBjb21taXR0ZXJzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQu
Y3JlZGVudGlhbHMgaW1wb3J0IENyZWRlbnRpYWxzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0udXNlciBpbXBvcnQgVXNlcgotZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxs
ZWQubWVjaGFuaXplIGltcG9ydCBCcm93c2VyCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVh
dXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cCwgU291cFN0cmFpbmVyCiAKIApAQCAtMjAx
LDYgKzIwMCw3IEBAIGNsYXNzIEJ1Z3ppbGxhKG9iamVjdCk6CiAKICAgICAgICAgIyBGSVhNRTog
V2Ugc2hvdWxkIHVzZSBzb21lIHNvcnQgb2YgQnJvd3NlciBtb2NrIG9iamVjdCB3aGVuIGluIGRy
eXJ1bgogICAgICAgICAjIG1vZGUgKHRvIHByZXZlbnQgYW55IG1pc3Rha2VzKS4KKyAgICAgICAg
ZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQubWVjaGFuaXplIGltcG9ydCBC
cm93c2VyCiAgICAgICAgIHNlbGYuYnJvd3NlciA9IEJyb3dzZXIoKQogICAgICAgICAjIElnbm9y
ZSBidWdzLndlYmtpdC5vcmcvcm9ib3RzLnR4dCB1bnRpbCB3ZSBmaXggaXQgdG8gYWxsb3cgdGhp
cwogICAgICAgICAjIHNjcmlwdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdC5weQppbmRleCBhYTVmYWJiMjU2MDYzZDJiOTYw
NmVkYTlkMmZiYmQ0NmMxZTY1MmI4Li42MmUzN2U3YmNmYmZiYzU2Y2NjNWRmNzY3NGQ5NjE1OTc4
ZWYyNWRkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVp
bGRib3QvYnVpbGRib3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2J1aWxkYm90L2J1aWxkYm90LnB5CkBAIC00Myw3ICs0Myw2IEBAIGZyb20gd2Via2l0cHkuY29t
bW9uLm5ldC5mYWlsdXJlbWFwIGltcG9ydCBGYWlsdXJlTWFwCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5uZXQubGF5b3V0dGVzdHJlc3VsdHMgaW1wb3J0IExheW91dFRlc3RSZXN1bHRzCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5uZXQucmVncmVzc2lvbndpbmRvdyBpbXBvcnQgUmVncmVzc2lvbldpbmRv
dwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmxvZ3V0aWxzIGltcG9ydCBnZXRfbG9nZ2Vy
Ci1mcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5tZWNoYW5pemUgaW1wb3J0
IEJyb3dzZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBC
ZWF1dGlmdWxTb3VwCiAKIF9sb2cgPSBnZXRfbG9nZ2VyKF9fZmlsZV9fKQpAQCAtNTUsNiArNTQs
NyBAQCBjbGFzcyBCdWlsZGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2J1aWxkYm90ID0gYnVp
bGRib3QKICAgICAgICAgc2VsZi5fYnVpbGRzX2NhY2hlID0ge30KICAgICAgICAgc2VsZi5fcmV2
aXNpb25fdG9fYnVpbGRfbnVtYmVyID0gTm9uZQorICAgICAgICBmcm9tIHdlYmtpdHB5LnRoaXJk
cGFydHkuYXV0b2luc3RhbGxlZC5tZWNoYW5pemUgaW1wb3J0IEJyb3dzZXIKICAgICAgICAgc2Vs
Zi5fYnJvd3NlciA9IEJyb3dzZXIoKQogICAgICAgICBzZWxmLl9icm93c2VyLnNldF9oYW5kbGVf
cm9ib3RzKEZhbHNlKSAjIFRoZSBidWlsZGVyIHBhZ2VzIGFyZSBleGNsdWRlZCBieSByb2JvdHMu
dHh0CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9uZXR3
b3JrdHJhbnNhY3Rpb24ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbmV0
d29ya3RyYW5zYWN0aW9uLnB5CmluZGV4IDIxY2M3MWZjNjhjYWE2MTNlNjRkNjQ5N2E1YjY5YTRk
MDMxYWM1MTIuLmQzNWE3ZTdhYmMyNmMxOGVkODU0ZTcxMDE0OTlhNGY0ZGFlMmZhMjIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9uZXR3b3JrdHJhbnNhY3Rp
b24ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L25ldHdvcmt0cmFu
c2FjdGlvbi5weQpAQCAtMjksNyArMjksNiBAQAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB0aW1l
CiAKLWZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkIGltcG9ydCBtZWNoYW5p
emUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0
IGxvZwogCiAKQEAgLTUwLDYgKzQ5LDcgQEAgY2xhc3MgTmV0d29ya1RyYW5zYWN0aW9uKG9iamVj
dCk6CiAgICAgZGVmIHJ1bihzZWxmLCByZXF1ZXN0KToKICAgICAgICAgc2VsZi5fdG90YWxfc2xl
ZXAgPSAwCiAgICAgICAgIHNlbGYuX2JhY2tvZmZfc2Vjb25kcyA9IHNlbGYuX2luaXRpYWxfYmFj
a29mZl9zZWNvbmRzCisgICAgICAgIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFs
bGVkIGltcG9ydCBtZWNoYW5pemUKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIHRy
eToKICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdCgpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbmV0d29ya3RyYW5zYWN0aW9uX3VuaXR0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L25ldHdvcmt0cmFuc2FjdGlvbl91
bml0dGVzdC5weQppbmRleCBjNGNkNGUwYjhjZmI5M2M2MjI2ZTE0YWRjNjYyNmJlYTdjMGZmNmUy
Li40MzVlMDM5NmRlN2VkMGNlOGY2MWQzYmUxMGE5NDMwNmZhZWVlNjc1IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbmV0d29ya3RyYW5zYWN0aW9uX3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9uZXR3b3JrdHJh
bnNhY3Rpb25fdW5pdHRlc3QucHkKQEAgLTU5LDEwICs1OSwxMiBAQCBjbGFzcyBOZXR3b3JrVHJh
bnNhY3Rpb25UZXN0KExvZ2dpbmdUZXN0Q2FzZSk6CiAgICAgZGVmIF9yYWlzZV81MDBfZXJyb3Io
c2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jb3VudCArPSAxCiAgICAgICAgIGlmIHNlbGYuX3J1
bl9jb3VudCA8IDM6CisgICAgICAgICAgICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2lu
c3RhbGxlZC5tZWNoYW5pemUgaW1wb3J0IEhUVFBFcnJvcgogICAgICAgICAgICAgcmFpc2UgSFRU
UEVycm9yKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgNTAwLCAiaW50ZXJuYWwgc2VydmVyIGVycm9y
IiwgTm9uZSwgTm9uZSkKICAgICAgICAgcmV0dXJuIDQyCiAKICAgICBkZWYgX3JhaXNlXzQwNF9l
cnJvcihzZWxmKToKKyAgICAgICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxs
ZWQubWVjaGFuaXplIGltcG9ydCBIVFRQRXJyb3IKICAgICAgICAgcmFpc2UgSFRUUEVycm9yKCJo
dHRwOi8vZm9vLmNvbS8iLCA0MDQsICJub3QgZm91bmQiLCBOb25lLCBOb25lKQogCiAgICAgZGVm
IHRlc3RfcmV0cnkoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvc3RhdHVzc2VydmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
bmV0L3N0YXR1c3NlcnZlci5weQppbmRleCBhYmQyOThhYzcwZTljZDc3MjA3NGZlMTBhMDU2NGRj
ZGE3NGMzMDcyLi45ZTMxNmQwN2VlM2M0MWZjNGQwM2U2NDQzNjBkOGRkNmI1ZDE2MmEyIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXIucHkK
QEAgLTI4LDcgKzI4LDYgQEAKIAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0Lm5ldHdvcmt0cmFu
c2FjdGlvbiBpbXBvcnQgTmV0d29ya1RyYW5zYWN0aW9uCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBsb2cKLWZyb20gd2Via2l0cHkudGhpcmRw
YXJ0eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZSBpbXBvcnQgQnJvd3NlcgogZnJvbSB3ZWJraXRw
eS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKIAogaW1wb3J0
IGxvZ2dpbmcKQEAgLTQzLDYgKzQyLDcgQEAgY2xhc3MgU3RhdHVzU2VydmVyOgogCiAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGhvc3Q9ZGVmYXVsdF9ob3N0LCBicm93c2VyPU5vbmUsIGJvdF9pZD1O
b25lKToKICAgICAgICAgc2VsZi5zZXRfaG9zdChob3N0KQorICAgICAgICBmcm9tIHdlYmtpdHB5
LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5tZWNoYW5pemUgaW1wb3J0IEJyb3dzZXIKICAgICAg
ICAgc2VsZi5fYnJvd3NlciA9IGJyb3dzZXIgb3IgQnJvd3NlcigpCiAgICAgICAgIHNlbGYuc2V0
X2JvdF9pZChib3RfaWQpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weQppbmRleCA3MTNhZDIxODZk
YmI4YmM5MmQ5MGUwMWUxYzRiZjEwOTc3ZDIwZTkxLi5hNTljYjFmYWRiOGM4Nzc2NzVkMDIxMTQz
MTMxYjY4MzYxOWUwZTJlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJzb2NrZXRfc2VydmVyLnB5CkBAIC00Niw3ICs0Niw2
IEBAIGltcG9ydCBmYWN0b3J5CiBpbXBvcnQgaHR0cF9zZXJ2ZXIKIAogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCi1mcm9tIHdlYmtpdHB5LnRo
aXJkcGFydHkuYXV0b2luc3RhbGxlZC5weXdlYnNvY2tldCBpbXBvcnQgbW9kX3B5d2Vic29ja2V0
CiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9y
dC53ZWJzb2NrZXRfc2VydmVyIikKQEAgLTE1Nyw2ICsxNTYsNyBAQCBjbGFzcyBQeVdlYlNvY2tl
dChodHRwX3NlcnZlci5MaWdodHRwZCk6CiAgICAgICAgIG91dHB1dF9sb2cgPSBvcy5wYXRoLmpv
aW4oc2VsZi5fb3V0cHV0X2RpciwgbG9nX2ZpbGVfbmFtZSArICItb3V0LnR4dCIpCiAgICAgICAg
IHNlbGYuX3dzb3V0ID0gY29kZWNzLm9wZW4ob3V0cHV0X2xvZywgInciLCAidXRmLTgiKQogCisg
ICAgICAgIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLnB5d2Vic29ja2V0
IGltcG9ydCBtb2RfcHl3ZWJzb2NrZXQKICAgICAgICAgcHl0aG9uX2ludGVycCA9IHN5cy5leGVj
dXRhYmxlCiAgICAgICAgIHB5d2Vic29ja2V0X2Jhc2UgPSBvcy5wYXRoLmpvaW4oCiAgICAgICAg
ICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZSgKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weQppbmRleCBjMjI0
OWMyZjZmYTFjZjJkZTQzNjUwMzg2M2ZiNGMzMzhlNTllNjViLi5kODYwMWE3NTMxZWQ4YzdiNmU0
YmQ4MzY4ZDM4ZGNlYzM1MmI0MTYxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvX19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGly
ZHBhcnR5L19faW5pdF9fLnB5CkBAIC0yOCw3MSArMjgsMTA3IEBAIGZyb20gX19mdXR1cmVfXyBp
bXBvcnQgd2l0aF9zdGF0ZW1lbnQKIAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IG9zCitpbXBvcnQg
c3lzCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5hdXRvaW5zdGFsbCBpbXBvcnQgQXV0
b0luc3RhbGxlcgorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0
IEZpbGVTeXN0ZW0KKworX1RISVJEUEFSVFlfRElSID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9f
KQorX0FVVE9JTlNUQUxMRURfRElSID0gb3MucGF0aC5qb2luKF9USElSRFBBUlRZX0RJUiwgImF1
dG9pbnN0YWxsZWQiKQogCiAjIFB1dHRpbmcgdGhlIGF1dG9pbnN0YWxsIGNvZGUgaW50byB3ZWJr
aXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5CiAjIGVuc3VyZXMgdGhhdCBubyBhdXRvaW5zdGFs
bGluZyBvY2N1cnMgdW50aWwgYSBjYWxsZXIgaW1wb3J0cyBmcm9tCiAjIHdlYmtpdHB5LnRoaXJk
cGFydHkuICBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgY2FsbGVyIHdhbnRzIHRvIGNvbmZpZ3VyZQog
IyBsb2dnaW5nIHByaW9yIHRvIGV4ZWN1dGluZyBhdXRvaW5zdGFsbCBjb2RlLgogCi0jIEZJWE1F
OiBJZGVhbGx5LCBhIHBhY2thZ2Ugc2hvdWxkIGJlIGF1dG9pbnN0YWxsZWQgb25seSBpZiB0aGUg
Y2FsbGVyCi0jICAgICAgICBhdHRlbXB0cyB0byBpbXBvcnQgZnJvbSB0aGF0IGluZGl2aWR1YWwg
cGFja2FnZS4gIFRoaXMgd291bGQKLSMgICAgICAgIG1ha2UgYXV0b2luc3RhbGxpbmcgbGF6aWVy
IHRoYW4gaXQgaXMgY3VycmVudGx5LiAgVGhpcyBjYW4KLSMgICAgICAgIHBlcmhhcHMgYmUgZG9u
ZSB1c2luZyBQeXRob24ncyBpbXBvcnQgaG9va3MgYXMgdGhlIG9yaWdpbmFsCi0jICAgICAgICBh
dXRvaW5zdGFsbCBpbXBsZW1lbnRhdGlvbiBkaWQuCi0KICMgRklYTUU6IElmIGFueSBvZiB0aGVz
ZSBzZXJ2ZXJzIGlzIG9mZmxpbmUsIHdlYmtpdC1wYXRjaCBicmVha3MgKGFuZCBtYXliZQogIyBv
dGhlciBzY3JpcHRzIGRvLCB0b28pLiBTZWUgPGh0dHA6Ly93ZWJraXQub3JnL2IvNDIwODA+Lgog
CiAjIFdlIHB1dCBhdXRvLWluc3RhbGxlZCB0aGlyZC1wYXJ0eSBtb2R1bGVzIGluIHRoaXMgZGly
ZWN0b3J5LS0KICMKICMgICAgIHdlYmtpdHB5L3RoaXJkcGFydHkvYXV0b2luc3RhbGxlZAotdGhp
cmRwYXJ0eV9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCi1hdXRvaW5zdGFsbGVkX2Rp
ciA9IG9zLnBhdGguam9pbih0aGlyZHBhcnR5X2RpciwgImF1dG9pbnN0YWxsZWQiKQorZnMgPSBG
aWxlU3lzdGVtKCkKK2ZzLm1heWJlX21ha2VfZGlyZWN0b3J5KF9BVVRPSU5TVEFMTEVEX0RJUikK
IAotIyBXZSBuZWVkIHRvIGRvd25sb2FkIENsaWVudEZvcm0gc2luY2UgdGhlIG1lY2hhbml6ZSBw
YWNrYWdlIHRoYXQgd2UgZG93bmxvYWQKLSMgYmVsb3cgcmVxdWlyZXMgaXQuICBUaGUgbWVjaGFu
aXplIHBhY2thZ2UgdXNlcyBDbGllbnRGb3JtLCBmb3IgZXhhbXBsZSwKLSMgaW4gX2h0bWwucHku
ICBTaW5jZSBtZWNoYW5pemUgaW1wb3J0cyBDbGllbnRGb3JtIGluIHRoZSBmb2xsb3dpbmcgd2F5
LAotIwotIyA+IGltcG9ydCBzZ21sbGliLCBDbGllbnRGb3JtCi0jCi0jIHRoZSBzZWFyY2ggcGF0
aCBuZWVkcyB0byBpbmNsdWRlIENsaWVudEZvcm0uICBXZSBwdXQgQ2xpZW50Rm9ybSBpbgotIyBp
dHMgb3duIGRpcmVjdG9yeSBzbyB0aGF0IHdlIGNhbiBpbmNsdWRlIGl0IGluIHRoZSBzZWFyY2gg
cGF0aCB3aXRob3V0Ci0jIGluY2x1ZGluZyBvdGhlciBtb2R1bGVzIGFzIGEgc2lkZSBlZmZlY3Qu
Ci1jbGllbnRmb3JtX2RpciA9IG9zLnBhdGguam9pbihhdXRvaW5zdGFsbGVkX2RpciwgImNsaWVu
dGZvcm0iKQotaW5zdGFsbGVyID0gQXV0b0luc3RhbGxlcihhcHBlbmRfdG9fc2VhcmNoX3BhdGg9
VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2Rpcj1jbGllbnRmb3JtX2Rp
cikKLWluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdl
cy9zb3VyY2UvQy9DbGllbnRGb3JtL0NsaWVudEZvcm0tMC4yLjEwLnppcCIsCi0gICAgICAgICAg
ICAgICAgICB1cmxfc3VicGF0aD0iQ2xpZW50Rm9ybS5weSIpCi0KLSMgVGhlIHJlbWFpbmluZyBw
YWNrYWdlcyBkbyBub3QgbmVlZCB0byBiZSBpbiB0aGUgc2VhcmNoIHBhdGgsIHNvIHdlIGNyZWF0
ZQotIyBhIG5ldyBBdXRvSW5zdGFsbGVyIGluc3RhbmNlIHRoYXQgZG9lcyBub3QgYXBwZW5kIHRv
IHRoZSBzZWFyY2ggcGF0aC4KLWluc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIodGFyZ2V0X2Rpcj1h
dXRvaW5zdGFsbGVkX2RpcikKLQotaW5zdGFsbGVyLmluc3RhbGwodXJsPSJodHRwOi8vcHlwaS5w
eXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9tL21lY2hhbml6ZS9tZWNoYW5pemUtMC4xLjExLnpp
cCIsCi0gICAgICAgICAgICAgICAgICB1cmxfc3VicGF0aD0ibWVjaGFuaXplIikKLWluc3RhbGxl
ci5pbnN0YWxsKHVybD0iaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvcC9w
ZXA4L3BlcDgtMC41LjAudGFyLmd6I21kNT01MTJhODE4YWY5OTc5MjkwY2Q2MTljY2U4ZTljMmUy
YiIsCi0gICAgICAgICAgICAgICAgICB1cmxfc3VicGF0aD0icGVwOC0wLjUuMC9wZXA4LnB5IikK
LWluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cDovL3d3dy5hZGFtYmFydGguY29tL3dlYmtpdC9l
bGl6YSIsCi0gICAgICAgICAgICAgICAgICB0YXJnZXRfbmFtZT0iZWxpemEucHkiKQotCi0jIFNp
bmNlIGlyY2xpYiBhbmQgaXJjYm90IGFyZSB0d28gdG9wLWxldmVsIHBhY2thZ2VzLCB3ZSBuZWVk
IHRvIGltcG9ydAotIyB0aGVtIHNlcGFyYXRlbHkuICBXZSBncm91cCB0aGVtIGludG8gYW4gaXJj
IHBhY2thZ2UgZm9yIGJldHRlcgotIyBvcmdhbml6YXRpb24gcHVycG9zZXMuCi1pcmNfZGlyID0g
b3MucGF0aC5qb2luKGF1dG9pbnN0YWxsZWRfZGlyLCAiaXJjIikKLWluc3RhbGxlciA9IEF1dG9J
bnN0YWxsZXIodGFyZ2V0X2Rpcj1pcmNfZGlyKQotaW5zdGFsbGVyLmluc3RhbGwodXJsPSJodHRw
Oi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3B5dGhvbi1pcmNsaWIvcHl0aG9u
LWlyY2xpYi8wLjQuOC9weXRob24taXJjbGliLTAuNC44LnppcCIsIHVybF9zdWJwYXRoPSJpcmNs
aWIucHkiKQotaW5zdGFsbGVyLmluc3RhbGwodXJsPSJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZv
cmdlLm5ldC9wcm9qZWN0L3B5dGhvbi1pcmNsaWIvcHl0aG9uLWlyY2xpYi8wLjQuOC9weXRob24t
aXJjbGliLTAuNC44LnppcCIsIHVybF9zdWJwYXRoPSJpcmNib3QucHkiKQotCi1weXdlYnNvY2tl
dF9kaXIgPSBvcy5wYXRoLmpvaW4oYXV0b2luc3RhbGxlZF9kaXIsICJweXdlYnNvY2tldCIpCi1p
bnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHRhcmdldF9kaXI9cHl3ZWJzb2NrZXRfZGlyKQotaW5z
dGFsbGVyLmluc3RhbGwodXJsPSJodHRwOi8vcHl3ZWJzb2NrZXQuZ29vZ2xlY29kZS5jb20vZmls
ZXMvbW9kX3B5d2Vic29ja2V0LTAuNS4yLnRhci5neiIsCi0gICAgICAgICAgICAgICAgICB1cmxf
c3VicGF0aD0icHl3ZWJzb2NrZXQtMC41LjIvc3JjL21vZF9weXdlYnNvY2tldCIpCi0KLXJlYWRt
ZV9wYXRoID0gb3MucGF0aC5qb2luKGF1dG9pbnN0YWxsZWRfZGlyLCAiUkVBRE1FIikKLWlmIG5v
dCBvcy5wYXRoLmV4aXN0cyhyZWFkbWVfcGF0aCk6Ci0gICAgd2l0aCBjb2RlY3Mub3BlbihyZWFk
bWVfcGF0aCwgInciLCAiYXNjaWkiKSBhcyBmaWxlOgotICAgICAgICBmaWxlLndyaXRlKCJUaGlz
IGRpcmVjdG9yeSBpcyBhdXRvLWdlbmVyYXRlZCBieSBXZWJLaXQgYW5kIGlzICIKLSAgICAgICAg
ICAgICAgICAgICAic2FmZSB0byBkZWxldGUuXG5JdCBjb250YWlucyBuZWVkZWQgdGhpcmQtcGFy
dHkgUHl0aG9uICIKLSAgICAgICAgICAgICAgICAgICAicGFja2FnZXMgYXV0b21hdGljYWxseSBk
b3dubG9hZGVkIGZyb20gdGhlIHdlYi4iKQoraW5pdF9wYXRoID0gZnMuam9pbihfQVVUT0lOU1RB
TExFRF9ESVIsICJfX2luaXRfXy5weSIpCitpZiBub3QgZnMuZXhpc3RzKGluaXRfcGF0aCk6Cisg
ICAgZnMud3JpdGVfdGV4dF9maWxlKGluaXRfcGF0aCwgIiIpCisKK3JlYWRtZV9wYXRoID0gZnMu
am9pbihfQVVUT0lOU1RBTExFRF9ESVIsICJSRUFETUUiKQoraWYgbm90IGZzLmV4aXN0cyhyZWFk
bWVfcGF0aCk6CisgICAgZnMud3JpdGVfdGV4dF9maWxlKHJlYWRtZV9wYXRoLAorICAgICAgICAi
VGhpcyBkaXJlY3RvcnkgaXMgYXV0by1nZW5lcmF0ZWQgYnkgV2ViS2l0IGFuZCBpcyAiCisgICAg
ICAgICJzYWZlIHRvIGRlbGV0ZS5cbkl0IGNvbnRhaW5zIG5lZWRlZCB0aGlyZC1wYXJ0eSBQeXRo
b24gIgorICAgICAgICAicGFja2FnZXMgYXV0b21hdGljYWxseSBkb3dubG9hZGVkIGZyb20gdGhl
IHdlYi4iKQorCisKK2NsYXNzIEF1dG9pbnN0YWxsSW1wb3J0SG9vayhvYmplY3QpOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBmaWxlc3lzdGVtPU5vbmUpOgorICAgICAgICBzZWxmLl9mcyA9IGZp
bGVzeXN0ZW0gb3IgRmlsZVN5c3RlbSgpCisKKyAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVs
bG5hbWUsIHBhdGgpOgorICAgICAgICAjIFRoaXMgbWV0aG9kIHdpbGwgcnVuIGJlZm9yZSBlYWNo
IGltcG9ydC4gU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDMwMi8KKyAg
ICAgICAgaWYgJy5hdXRvaW5zdGFsbGVkJyBub3QgaW4gZnVsbG5hbWU6CisgICAgICAgICAgICBy
ZXR1cm4KKworICAgICAgICBpZiAnLm1lY2hhbml6ZScgaW4gZnVsbG5hbWU6CisgICAgICAgICAg
ICBzZWxmLl9pbnN0YWxsX21lY2hhbml6ZSgpCisgICAgICAgIGVsaWYgJy5wZXA4JyBpbiBmdWxs
bmFtZToKKyAgICAgICAgICAgIHNlbGYuX2luc3RhbGxfcGVwOCgpCisgICAgICAgIGVsaWYgJy5l
bGl6YScgaW4gZnVsbG5hbWU6CisgICAgICAgICAgICBzZWxmLl9pbnN0YWxsX2VsaXphKCkKKyAg
ICAgICAgZWxpZiAnLmlyYycgaW4gZnVsbG5hbWU6CisgICAgICAgICAgICBzZWxmLl9pbnN0YWxs
X2lyYygpCisgICAgICAgIGVsaWYgJy5weXdlYnNvY2tldCcgaW4gZnVsbG5hbWU6CisgICAgICAg
ICAgICBzZWxmLl9pbnN0YWxsX3B5d2Vic29ja2V0KCkKKworICAgIGRlZiBfaW5zdGFsbF9tZWNo
YW5pemUoc2VsZik6CisgICAgICAgICMgVGhlIG1lY2hhbml6ZSBwYWNrYWdlIHVzZXMgQ2xpZW50
Rm9ybSwgZm9yIGV4YW1wbGUsIGluIF9odG1sLnB5LgorICAgICAgICAjIFNpbmNlIG1lY2hhbml6
ZSBpbXBvcnRzIENsaWVudEZvcm0gaW4gdGhlIGZvbGxvd2luZyB3YXksCisgICAgICAgICMKKyAg
ICAgICAgIyA+IGltcG9ydCBzZ21sbGliLCBDbGllbnRGb3JtCisgICAgICAgICMKKyAgICAgICAg
IyB0aGUgc2VhcmNoIHBhdGggbmVlZHMgdG8gaW5jbHVkZSBDbGllbnRGb3JtLiAgV2UgcHV0IENs
aWVudEZvcm0gaW4KKyAgICAgICAgIyBpdHMgb3duIGRpcmVjdG9yeSBzbyB0aGF0IHdlIGNhbiBp
bmNsdWRlIGl0IGluIHRoZSBzZWFyY2ggcGF0aAorICAgICAgICAjIHdpdGhvdXQgaW5jbHVkaW5n
IG90aGVyIG1vZHVsZXMgYXMgYSBzaWRlIGVmZmVjdC4KKyAgICAgICAgY2xpZW50Zm9ybV9kaXIg
PSBzZWxmLl9mcy5qb2luKF9BVVRPSU5TVEFMTEVEX0RJUiwgImNsaWVudGZvcm0iKQorICAgICAg
ICBpbnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKGFwcGVuZF90b19zZWFyY2hfcGF0aD1UcnVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9kaXI9Y2xpZW50Zm9ybV9k
aXIpCisgICAgICAgIGluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cDovL3B5cGkucHl0aG9uLm9y
Zy9wYWNrYWdlcy9zb3VyY2UvQy9DbGllbnRGb3JtL0NsaWVudEZvcm0tMC4yLjEwLnppcCIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVybF9zdWJwYXRoPSJDbGllbnRGb3JtLnB5IikKKwor
ICAgICAgICBzZWxmLl9pbnN0YWxsKCJodHRwOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3Nv
dXJjZS9tL21lY2hhbml6ZS9tZWNoYW5pemUtMC4xLjExLnppcCIsCisgICAgICAgICAgICAgICAg
ICAgICAgIm1lY2hhbml6ZSIpCisKKyAgICBkZWYgX2luc3RhbGxfcGVwOChzZWxmKToKKyAgICAg
ICAgc2VsZi5faW5zdGFsbCgiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2Uv
cC9wZXA4L3BlcDgtMC41LjAudGFyLmd6I21kNT01MTJhODE4YWY5OTc5MjkwY2Q2MTljY2U4ZTlj
MmUyYiIsCisgICAgICAgICAgICAgICAgICAgICAgInBlcDgtMC41LjAvcGVwOC5weSIpCisKKyAg
ICBkZWYgX2luc3RhbGxfZWxpemEoc2VsZik6CisgICAgICAgIGluc3RhbGxlciA9IEF1dG9JbnN0
YWxsZXIodGFyZ2V0X2Rpcj1fQVVUT0lOU1RBTExFRF9ESVIpCisgICAgICAgIGluc3RhbGxlci5p
bnN0YWxsKHVybD0iaHR0cDovL3d3dy5hZGFtYmFydGguY29tL3dlYmtpdC9lbGl6YSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9uYW1lPSJlbGl6YS5weSIpCisKKyAgICBkZWYg
X2luc3RhbGxfaXJjKHNlbGYpOgorICAgICAgICAjIFNpbmNlIGlyY2xpYiBhbmQgaXJjYm90IGFy
ZSB0d28gdG9wLWxldmVsIHBhY2thZ2VzLCB3ZSBuZWVkIHRvIGltcG9ydAorICAgICAgICAjIHRo
ZW0gc2VwYXJhdGVseS4gIFdlIGdyb3VwIHRoZW0gaW50byBhbiBpcmMgcGFja2FnZSBmb3IgYmV0
dGVyCisgICAgICAgICMgb3JnYW5pemF0aW9uIHB1cnBvc2VzLgorICAgICAgICBpcmNfZGlyID0g
c2VsZi5fZnMuam9pbihfQVVUT0lOU1RBTExFRF9ESVIsICJpcmMiKQorICAgICAgICBpbnN0YWxs
ZXIgPSBBdXRvSW5zdGFsbGVyKHRhcmdldF9kaXI9aXJjX2RpcikKKyAgICAgICAgaW5zdGFsbGVy
Lmluc3RhbGwodXJsPSJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3B5
dGhvbi1pcmNsaWIvcHl0aG9uLWlyY2xpYi8wLjQuOC9weXRob24taXJjbGliLTAuNC44LnppcCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHVybF9zdWJwYXRoPSJpcmNsaWIucHkiKQorICAg
ICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2Uu
bmV0L3Byb2plY3QvcHl0aG9uLWlyY2xpYi9weXRob24taXJjbGliLzAuNC44L3B5dGhvbi1pcmNs
aWItMC40LjguemlwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9Imly
Y2JvdC5weSIpCisKKyAgICBkZWYgX2luc3RhbGxfcHl3ZWJzb2NrZXQoc2VsZik6CisgICAgICAg
IHB5d2Vic29ja2V0X2RpciA9IHNlbGYuX2ZzLmpvaW4oX0FVVE9JTlNUQUxMRURfRElSLCAicHl3
ZWJzb2NrZXQiKQorICAgICAgICBpbnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHRhcmdldF9kaXI9
cHl3ZWJzb2NrZXRfZGlyKQorICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHA6Ly9w
eXdlYnNvY2tldC5nb29nbGVjb2RlLmNvbS9maWxlcy9tb2RfcHl3ZWJzb2NrZXQtMC41LjIudGFy
Lmd6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9InB5d2Vic29ja2V0
LTAuNS4yL3NyYy9tb2RfcHl3ZWJzb2NrZXQiKQorCisgICAgZGVmIF9pbnN0YWxsKHNlbGYsIHVy
bCwgdXJsX3N1YnBhdGgpOgorICAgICAgICBpbnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHRhcmdl
dF9kaXI9X0FVVE9JTlNUQUxMRURfRElSKQorICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9
dXJsLCB1cmxfc3VicGF0aD11cmxfc3VicGF0aCkKKworCitzeXMubWV0YV9wYXRoLmFwcGVuZChB
dXRvaW5zdGFsbEltcG9ydEhvb2soKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGhpcmRwYXJ0eS9fX2luaXRfX191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGhpcmRwYXJ0eS9fX2luaXRfX191bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTk2NGU5YmNi
MTcyZWNlNTdiZmQ1ZTI1ZDg2ZDczZjcwOTgxYzYwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fX3VuaXR0ZXN0LnB5CkBAIC0wLDAg
KzEsNjQgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5
cworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eSBpbXBvcnQgQXV0
b2luc3RhbGxJbXBvcnRIb29rCisKK2NsYXNzIFRoaXJkcGFydHlUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICBkZWYgdGVzdF9pbXBvcnRfaG9vayhzZWxmKToKKyAgICAgICAgIyBBZGQgYW5v
dGhlciBpbXBvcnQgaG9vayBhbmQgbWFrZSBzdXJlIHdlIGdldCBjYWxsZWQuCisgICAgICAgIGNs
YXNzIE1vY2tJbXBvcnRIb29rKEF1dG9pbnN0YWxsSW1wb3J0SG9vayk6CisgICAgICAgICAgICBk
ZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgQXV0b2luc3RhbGxJbXBvcnRIb29r
Ll9faW5pdF9fKHNlbGYpCisgICAgICAgICAgICAgICAgc2VsZi5fZWxpemFfaW5zdGFsbGVkID0g
RmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLl9weXdlYnNvY2tldF9pbnN0YWxsZWQgPSBGYWxz
ZQorCisgICAgICAgICAgICBkZWYgX2luc3RhbGxfZWxpemEoc2VsZik6CisgICAgICAgICAgICAg
ICAgc2VsZi5lbGl6YV9pbnN0YWxsZWQgPSBUcnVlCisKKyAgICAgICAgICAgIGRlZiBfaW5zdGFs
bF9weXdlYnNvY2tldChzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLnB5d2Vic29ja2V0X2lu
c3RhbGxlZCA9IFRydWUKKworICAgICAgICBtb2NrX2ltcG9ydF9ob29rID0gTW9ja0ltcG9ydEhv
b2soKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFRoZSBhY3R1YWwgQXV0b2luc3RhbGxJ
bXBvcnRIb29rIHNob3VsZCBiZSBpbnN0YWxsZWQgYmVmb3JlIHVzLAorICAgICAgICAgICAgIyBz
byB0aGVzZSBtb2R1bGVzIHdpbGwgZ2V0IGluc3RhbGxlZCBiZWZvcmUgTW9ja0ltcG9ydEhvb2sg
cnVucy4KKyAgICAgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKG1vY2tfaW1wb3J0X2hvb2sp
CisgICAgICAgICAgICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZCBpbXBv
cnQgZWxpemEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrX2ltcG9ydF9ob29rLmVs
aXphX2luc3RhbGxlZCkKKworICAgICAgICAgICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1
dG9pbnN0YWxsZWQucHl3ZWJzb2NrZXQgaW1wb3J0IG1vZF9weXdlYnNvY2tldAorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKG1vY2tfaW1wb3J0X2hvb2sucHl3ZWJzb2NrZXRfaW5zdGFsbGVk
KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLm1ldGFfcGF0aC5yZW1vdmUobW9j
a19pbXBvcnRfaG9vaykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVz
dC5tYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84776</attachid>
            <date>2011-03-04 10:19:34 -0800</date>
            <delta_ts>2011-04-27 10:13:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55723-20110304101941.patch</filename>
            <type>text/plain</type>
            <size>18625</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAyNDcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxOTYwZjY5NzJiNDAxOGFlZDY3Zjc5ODQxY2Q3MmJhMWMw
NzE0ZmQ0Li5kYzhlOGU1OWM4NTZmZmM5YjNhMjRhOGVlY2I1ZGVhOGQ3ZGZkNmE4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTEtMDMtMDMgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsYXppbHkgYXV0b2luc3Rh
bGwgdGhpcmRwYXJ0eSBweXRob24gbGlicmFyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTcyMworCisgICAgICAgIFRoaXMgaGVscHMgYnkgb25s
eSBoYXZpbmcgcHl3ZWJzb2NrZXQgaW5zdGFsbGVkIHdoZW4gdGhlIGJvdHMgcnVuLiAgSXQKKyAg
ICAgICAgZG9lc24ndCBoZWxwIG11Y2ggZm9yIGRldnMgc2luY2Ugd2Via2l0LXBhdGNoIHB1bGxz
IGluIGFsbW9zdCBldmVyeXRoaW5nLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvbmV0d29ya3RyYW5zYWN0aW9uLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9uZXR3b3JrdHJhbnNhY3Rpb25fdW5pdHRlc3QucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZlci5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5OiBB
ZGQgYW4gaW1wb3J0IGhvb2sgc28gd2UgY2FuIGluc3RhbGwgYmFzZWQgb24KKyAgICAgICAgICAg
IHRoZSBpbXBvcnQgY29tbWFuZCByYXRoZXIgdGhhbiBqdXN0IGluc3RhbGxpbmcgZXZlcnl0aGlu
Zy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X19fdW5pdHRl
c3QucHk6IEFkZGVkLgorCiAyMDExLTAzLTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVn
emlsbGEucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVn
emlsbGEucHkKaW5kZXggMTdhODUxNWQyOGE1ZmNkZTU1ODg0N2ZiNDUzYTJhZWY2MzY5MGUxMy4u
NTc4MmVlOWJjZjJjMDMxZWZmN2RlZWNhNzg2NzA3MjdlZjU2NjlkNSAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQpA
QCAtNDUsNyArNDUsNiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9s
b2dnaW5nIGltcG9ydCBsb2cKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZyBpbXBvcnQgY29t
bWl0dGVycwogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmNyZWRlbnRpYWxzIGltcG9ydCBDcmVk
ZW50aWFscwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXIgaW1wb3J0IFVzZXIKLWZy
b20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZSBpbXBvcnQgQnJv
d3NlcgogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0
aWZ1bFNvdXAsIFNvdXBTdHJhaW5lcgogCiAKQEAgLTIwMSw2ICsyMDAsNyBAQCBjbGFzcyBCdWd6
aWxsYShvYmplY3QpOgogCiAgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCB1c2Ugc29tZSBzb3J0
IG9mIEJyb3dzZXIgbW9jayBvYmplY3Qgd2hlbiBpbiBkcnlydW4KICAgICAgICAgIyBtb2RlICh0
byBwcmV2ZW50IGFueSBtaXN0YWtlcykuCisgICAgICAgIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0
eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZSBpbXBvcnQgQnJvd3NlcgogICAgICAgICBzZWxmLmJy
b3dzZXIgPSBCcm93c2VyKCkKICAgICAgICAgIyBJZ25vcmUgYnVncy53ZWJraXQub3JnL3JvYm90
cy50eHQgdW50aWwgd2UgZml4IGl0IHRvIGFsbG93IHRoaXMKICAgICAgICAgIyBzY3JpcHQuCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QvYnVp
bGRib3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QvYnVp
bGRib3QucHkKaW5kZXggYWE1ZmFiYjI1NjA2M2QyYjk2MDZlZGE5ZDJmYmJkNDZjMWU2NTJiOC4u
NjJlMzdlN2JjZmJmYmM1NmNjYzVkZjc2NzRkOTYxNTk3OGVmMjVkZCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdC5weQpA
QCAtNDMsNyArNDMsNiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuZmFpbHVyZW1hcCBpbXBv
cnQgRmFpbHVyZU1hcAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmxheW91dHRlc3RyZXN1bHRz
IGltcG9ydCBMYXlvdXRUZXN0UmVzdWx0cwogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LnJlZ3Jl
c3Npb253aW5kb3cgaW1wb3J0IFJlZ3Jlc3Npb25XaW5kb3cKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5sb2d1dGlscyBpbXBvcnQgZ2V0X2xvZ2dlcgotZnJvbSB3ZWJraXRweS50aGlyZHBh
cnR5LmF1dG9pbnN0YWxsZWQubWVjaGFuaXplIGltcG9ydCBCcm93c2VyCiBmcm9tIHdlYmtpdHB5
LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAogCiBfbG9nID0g
Z2V0X2xvZ2dlcihfX2ZpbGVfXykKQEAgLTU1LDYgKzU0LDcgQEAgY2xhc3MgQnVpbGRlcihvYmpl
Y3QpOgogICAgICAgICBzZWxmLl9idWlsZGJvdCA9IGJ1aWxkYm90CiAgICAgICAgIHNlbGYuX2J1
aWxkc19jYWNoZSA9IHt9CiAgICAgICAgIHNlbGYuX3JldmlzaW9uX3RvX2J1aWxkX251bWJlciA9
IE5vbmUKKyAgICAgICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQubWVj
aGFuaXplIGltcG9ydCBCcm93c2VyCiAgICAgICAgIHNlbGYuX2Jyb3dzZXIgPSBCcm93c2VyKCkK
ICAgICAgICAgc2VsZi5fYnJvd3Nlci5zZXRfaGFuZGxlX3JvYm90cyhGYWxzZSkgIyBUaGUgYnVp
bGRlciBwYWdlcyBhcmUgZXhjbHVkZWQgYnkgcm9ib3RzLnR4dAogCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbmV0d29ya3RyYW5zYWN0aW9uLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L25ldHdvcmt0cmFuc2FjdGlvbi5weQppbmRl
eCAyMWNjNzFmYzY4Y2FhNjEzZTY0ZDY0OTdhNWI2OWE0ZDAzMWFjNTEyLi5kMzVhN2U3YWJjMjZj
MThlZDg1NGU3MTAxNDk5YTRmNGRhZTJmYTIyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvbmV0d29ya3RyYW5zYWN0aW9uLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9uZXR3b3JrdHJhbnNhY3Rpb24ucHkKQEAgLTI5LDcgKzI5
LDYgQEAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdGltZQogCi1mcm9tIHdlYmtpdHB5LnRoaXJk
cGFydHkuYXV0b2luc3RhbGxlZCBpbXBvcnQgbWVjaGFuaXplCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBsb2cKIAogCkBAIC01MCw2ICs0OSw3
IEBAIGNsYXNzIE5ldHdvcmtUcmFuc2FjdGlvbihvYmplY3QpOgogICAgIGRlZiBydW4oc2VsZiwg
cmVxdWVzdCk6CiAgICAgICAgIHNlbGYuX3RvdGFsX3NsZWVwID0gMAogICAgICAgICBzZWxmLl9i
YWNrb2ZmX3NlY29uZHMgPSBzZWxmLl9pbml0aWFsX2JhY2tvZmZfc2Vjb25kcworICAgICAgICBm
cm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZCBpbXBvcnQgbWVjaGFuaXplCiAg
ICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlcXVlc3QoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
bmV0L25ldHdvcmt0cmFuc2FjdGlvbl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9uZXR3b3JrdHJhbnNhY3Rpb25fdW5pdHRlc3QucHkKaW5kZXggYzRjZDRl
MGI4Y2ZiOTNjNjIyNmUxNGFkYzY2MjZiZWE3YzBmZjZlMi4uNDM1ZTAzOTZkZTdlZDBjZThmNjFk
M2JlMTBhOTQzMDZmYWVlZTY3NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L25ldHdvcmt0cmFuc2FjdGlvbl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbmV0d29ya3RyYW5zYWN0aW9uX3VuaXR0ZXN0LnB5CkBA
IC01OSwxMCArNTksMTIgQEAgY2xhc3MgTmV0d29ya1RyYW5zYWN0aW9uVGVzdChMb2dnaW5nVGVz
dENhc2UpOgogICAgIGRlZiBfcmFpc2VfNTAwX2Vycm9yKHNlbGYpOgogICAgICAgICBzZWxmLl9y
dW5fY291bnQgKz0gMQogICAgICAgICBpZiBzZWxmLl9ydW5fY291bnQgPCAzOgorICAgICAgICAg
ICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQubWVjaGFuaXplIGltcG9y
dCBIVFRQRXJyb3IKICAgICAgICAgICAgIHJhaXNlIEhUVFBFcnJvcigiaHR0cDovL2V4YW1wbGUu
Y29tLyIsIDUwMCwgImludGVybmFsIHNlcnZlciBlcnJvciIsIE5vbmUsIE5vbmUpCiAgICAgICAg
IHJldHVybiA0MgogCiAgICAgZGVmIF9yYWlzZV80MDRfZXJyb3Ioc2VsZik6CisgICAgICAgIGZy
b20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZSBpbXBvcnQgSFRU
UEVycm9yCiAgICAgICAgIHJhaXNlIEhUVFBFcnJvcigiaHR0cDovL2Zvby5jb20vIiwgNDA0LCAi
bm90IGZvdW5kIiwgTm9uZSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X3JldHJ5KHNlbGYpOgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZlci5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXIucHkKaW5k
ZXggYWJkMjk4YWM3MGU5Y2Q3NzIwNzRmZTEwYTA1NjRkY2RhNzRjMzA3Mi4uOWUzMTZkMDdlZTNj
NDFmYzRkMDNlNjQ0MzYwZDhkZDZiNWQxNjJhMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyLnB5CkBAIC0yOCw3ICsyOCw2IEBACiAKIGZy
b20gd2Via2l0cHkuY29tbW9uLm5ldC5uZXR3b3JrdHJhbnNhY3Rpb24gaW1wb3J0IE5ldHdvcmtU
cmFuc2FjdGlvbgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2lu
ZyBpbXBvcnQgbG9nCi1mcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5tZWNo
YW5pemUgaW1wb3J0IEJyb3dzZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxT
b3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwCiAKIGltcG9ydCBsb2dnaW5nCkBAIC00Myw2ICs0Miw3
IEBAIGNsYXNzIFN0YXR1c1NlcnZlcjoKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PWRl
ZmF1bHRfaG9zdCwgYnJvd3Nlcj1Ob25lLCBib3RfaWQ9Tm9uZSk6CiAgICAgICAgIHNlbGYuc2V0
X2hvc3QoaG9zdCkKKyAgICAgICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxs
ZWQubWVjaGFuaXplIGltcG9ydCBCcm93c2VyCiAgICAgICAgIHNlbGYuX2Jyb3dzZXIgPSBicm93
c2VyIG9yIEJyb3dzZXIoKQogICAgICAgICBzZWxmLnNldF9ib3RfaWQoYm90X2lkKQogCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tl
dF9zZXJ2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dl
YnNvY2tldF9zZXJ2ZXIucHkKaW5kZXggNzEzYWQyMTg2ZGJiOGJjOTJkOTBlMDFlMWM0YmYxMDk3
N2QyMGU5MS4uYTU5Y2IxZmFkYjhjODc3Njc1ZDAyMTE0MzEzMWI2ODM2MTllMGUyZSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJzb2NrZXRf
c2VydmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
d2Vic29ja2V0X3NlcnZlci5weQpAQCAtNDYsNyArNDYsNiBAQCBpbXBvcnQgZmFjdG9yeQogaW1w
b3J0IGh0dHBfc2VydmVyCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUg
aW1wb3J0IEV4ZWN1dGl2ZQotZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQu
cHl3ZWJzb2NrZXQgaW1wb3J0IG1vZF9weXdlYnNvY2tldAogCiAKIF9sb2cgPSBsb2dnaW5nLmdl
dExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQud2Vic29ja2V0X3NlcnZlciIpCkBA
IC0xNTcsNiArMTU2LDcgQEAgY2xhc3MgUHlXZWJTb2NrZXQoaHR0cF9zZXJ2ZXIuTGlnaHR0cGQp
OgogICAgICAgICBvdXRwdXRfbG9nID0gb3MucGF0aC5qb2luKHNlbGYuX291dHB1dF9kaXIsIGxv
Z19maWxlX25hbWUgKyAiLW91dC50eHQiKQogICAgICAgICBzZWxmLl93c291dCA9IGNvZGVjcy5v
cGVuKG91dHB1dF9sb2csICJ3IiwgInV0Zi04IikKIAorICAgICAgICBmcm9tIHdlYmtpdHB5LnRo
aXJkcGFydHkuYXV0b2luc3RhbGxlZC5weXdlYnNvY2tldCBpbXBvcnQgbW9kX3B5d2Vic29ja2V0
CiAgICAgICAgIHB5dGhvbl9pbnRlcnAgPSBzeXMuZXhlY3V0YWJsZQogICAgICAgICBweXdlYnNv
Y2tldF9iYXNlID0gb3MucGF0aC5qb2luKAogICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKG9z
LnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvX19pbml0X18ucHkKaW5kZXggYzIyNDljMmY2ZmExY2YyZGU0MzY1MDM4NjNm
YjRjMzM4ZTU5ZTY1Yi4uZDg2MDFhNzUzMWVkOGM3YjZlNGJkODM2OGQzOGRjZWMzNTJiNDE2MSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weQpAQCAt
MjgsNzEgKzI4LDEwNyBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CiAK
IGltcG9ydCBjb2RlY3MKIGltcG9ydCBvcworaW1wb3J0IHN5cwogCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uYXV0b2luc3RhbGwgaW1wb3J0IEF1dG9JbnN0YWxsZXIKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCisKK19USElSRFBB
UlRZX0RJUiA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKK19BVVRPSU5TVEFMTEVEX0RJUiA9
IG9zLnBhdGguam9pbihfVEhJUkRQQVJUWV9ESVIsICJhdXRvaW5zdGFsbGVkIikKIAogIyBQdXR0
aW5nIHRoZSBhdXRvaW5zdGFsbCBjb2RlIGludG8gd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRf
Xy5weQogIyBlbnN1cmVzIHRoYXQgbm8gYXV0b2luc3RhbGxpbmcgb2NjdXJzIHVudGlsIGEgY2Fs
bGVyIGltcG9ydHMgZnJvbQogIyB3ZWJraXRweS50aGlyZHBhcnR5LiAgVGhpcyBpcyB1c2VmdWwg
aWYgdGhlIGNhbGxlciB3YW50cyB0byBjb25maWd1cmUKICMgbG9nZ2luZyBwcmlvciB0byBleGVj
dXRpbmcgYXV0b2luc3RhbGwgY29kZS4KIAotIyBGSVhNRTogSWRlYWxseSwgYSBwYWNrYWdlIHNo
b3VsZCBiZSBhdXRvaW5zdGFsbGVkIG9ubHkgaWYgdGhlIGNhbGxlcgotIyAgICAgICAgYXR0ZW1w
dHMgdG8gaW1wb3J0IGZyb20gdGhhdCBpbmRpdmlkdWFsIHBhY2thZ2UuICBUaGlzIHdvdWxkCi0j
ICAgICAgICBtYWtlIGF1dG9pbnN0YWxsaW5nIGxhemllciB0aGFuIGl0IGlzIGN1cnJlbnRseS4g
IFRoaXMgY2FuCi0jICAgICAgICBwZXJoYXBzIGJlIGRvbmUgdXNpbmcgUHl0aG9uJ3MgaW1wb3J0
IGhvb2tzIGFzIHRoZSBvcmlnaW5hbAotIyAgICAgICAgYXV0b2luc3RhbGwgaW1wbGVtZW50YXRp
b24gZGlkLgotCiAjIEZJWE1FOiBJZiBhbnkgb2YgdGhlc2Ugc2VydmVycyBpcyBvZmZsaW5lLCB3
ZWJraXQtcGF0Y2ggYnJlYWtzIChhbmQgbWF5YmUKICMgb3RoZXIgc2NyaXB0cyBkbywgdG9vKS4g
U2VlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzQyMDgwPi4KIAogIyBXZSBwdXQgYXV0by1pbnN0YWxs
ZWQgdGhpcmQtcGFydHkgbW9kdWxlcyBpbiB0aGlzIGRpcmVjdG9yeS0tCiAjCiAjICAgICB3ZWJr
aXRweS90aGlyZHBhcnR5L2F1dG9pbnN0YWxsZWQKLXRoaXJkcGFydHlfZGlyID0gb3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKQotYXV0b2luc3RhbGxlZF9kaXIgPSBvcy5wYXRoLmpvaW4odGhpcmRw
YXJ0eV9kaXIsICJhdXRvaW5zdGFsbGVkIikKK2ZzID0gRmlsZVN5c3RlbSgpCitmcy5tYXliZV9t
YWtlX2RpcmVjdG9yeShfQVVUT0lOU1RBTExFRF9ESVIpCiAKLSMgV2UgbmVlZCB0byBkb3dubG9h
ZCBDbGllbnRGb3JtIHNpbmNlIHRoZSBtZWNoYW5pemUgcGFja2FnZSB0aGF0IHdlIGRvd25sb2Fk
Ci0jIGJlbG93IHJlcXVpcmVzIGl0LiAgVGhlIG1lY2hhbml6ZSBwYWNrYWdlIHVzZXMgQ2xpZW50
Rm9ybSwgZm9yIGV4YW1wbGUsCi0jIGluIF9odG1sLnB5LiAgU2luY2UgbWVjaGFuaXplIGltcG9y
dHMgQ2xpZW50Rm9ybSBpbiB0aGUgZm9sbG93aW5nIHdheSwKLSMKLSMgPiBpbXBvcnQgc2dtbGxp
YiwgQ2xpZW50Rm9ybQotIwotIyB0aGUgc2VhcmNoIHBhdGggbmVlZHMgdG8gaW5jbHVkZSBDbGll
bnRGb3JtLiAgV2UgcHV0IENsaWVudEZvcm0gaW4KLSMgaXRzIG93biBkaXJlY3Rvcnkgc28gdGhh
dCB3ZSBjYW4gaW5jbHVkZSBpdCBpbiB0aGUgc2VhcmNoIHBhdGggd2l0aG91dAotIyBpbmNsdWRp
bmcgb3RoZXIgbW9kdWxlcyBhcyBhIHNpZGUgZWZmZWN0LgotY2xpZW50Zm9ybV9kaXIgPSBvcy5w
YXRoLmpvaW4oYXV0b2luc3RhbGxlZF9kaXIsICJjbGllbnRmb3JtIikKLWluc3RhbGxlciA9IEF1
dG9JbnN0YWxsZXIoYXBwZW5kX3RvX3NlYXJjaF9wYXRoPVRydWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHRhcmdldF9kaXI9Y2xpZW50Zm9ybV9kaXIpCi1pbnN0YWxsZXIuaW5zdGFsbCh1
cmw9Imh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL0MvQ2xpZW50Rm9ybS9D
bGllbnRGb3JtLTAuMi4xMC56aXAiLAotICAgICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9IkNs
aWVudEZvcm0ucHkiKQotCi0jIFRoZSByZW1haW5pbmcgcGFja2FnZXMgZG8gbm90IG5lZWQgdG8g
YmUgaW4gdGhlIHNlYXJjaCBwYXRoLCBzbyB3ZSBjcmVhdGUKLSMgYSBuZXcgQXV0b0luc3RhbGxl
ciBpbnN0YW5jZSB0aGF0IGRvZXMgbm90IGFwcGVuZCB0byB0aGUgc2VhcmNoIHBhdGguCi1pbnN0
YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHRhcmdldF9kaXI9YXV0b2luc3RhbGxlZF9kaXIpCi0KLWlu
c3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3Vy
Y2UvbS9tZWNoYW5pemUvbWVjaGFuaXplLTAuMS4xMS56aXAiLAotICAgICAgICAgICAgICAgICAg
dXJsX3N1YnBhdGg9Im1lY2hhbml6ZSIpCi1pbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHA6Ly9w
eXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL3AvcGVwOC9wZXA4LTAuNS4wLnRhci5neiNt
ZDU9NTEyYTgxOGFmOTk3OTI5MGNkNjE5Y2NlOGU5YzJlMmIiLAotICAgICAgICAgICAgICAgICAg
dXJsX3N1YnBhdGg9InBlcDgtMC41LjAvcGVwOC5weSIpCi1pbnN0YWxsZXIuaW5zdGFsbCh1cmw9
Imh0dHA6Ly93d3cuYWRhbWJhcnRoLmNvbS93ZWJraXQvZWxpemEiLAotICAgICAgICAgICAgICAg
ICAgdGFyZ2V0X25hbWU9ImVsaXphLnB5IikKLQotIyBTaW5jZSBpcmNsaWIgYW5kIGlyY2JvdCBh
cmUgdHdvIHRvcC1sZXZlbCBwYWNrYWdlcywgd2UgbmVlZCB0byBpbXBvcnQKLSMgdGhlbSBzZXBh
cmF0ZWx5LiAgV2UgZ3JvdXAgdGhlbSBpbnRvIGFuIGlyYyBwYWNrYWdlIGZvciBiZXR0ZXIKLSMg
b3JnYW5pemF0aW9uIHB1cnBvc2VzLgotaXJjX2RpciA9IG9zLnBhdGguam9pbihhdXRvaW5zdGFs
bGVkX2RpciwgImlyYyIpCi1pbnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHRhcmdldF9kaXI9aXJj
X2RpcikKLWluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3Jn
ZS5uZXQvcHJvamVjdC9weXRob24taXJjbGliL3B5dGhvbi1pcmNsaWIvMC40LjgvcHl0aG9uLWly
Y2xpYi0wLjQuOC56aXAiLCB1cmxfc3VicGF0aD0iaXJjbGliLnB5IikKLWluc3RhbGxlci5pbnN0
YWxsKHVybD0iaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9weXRob24t
aXJjbGliL3B5dGhvbi1pcmNsaWIvMC40LjgvcHl0aG9uLWlyY2xpYi0wLjQuOC56aXAiLCB1cmxf
c3VicGF0aD0iaXJjYm90LnB5IikKLQotcHl3ZWJzb2NrZXRfZGlyID0gb3MucGF0aC5qb2luKGF1
dG9pbnN0YWxsZWRfZGlyLCAicHl3ZWJzb2NrZXQiKQotaW5zdGFsbGVyID0gQXV0b0luc3RhbGxl
cih0YXJnZXRfZGlyPXB5d2Vic29ja2V0X2RpcikKLWluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0
cDovL3B5d2Vic29ja2V0Lmdvb2dsZWNvZGUuY29tL2ZpbGVzL21vZF9weXdlYnNvY2tldC0wLjUu
Mi50YXIuZ3oiLAotICAgICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9InB5d2Vic29ja2V0LTAu
NS4yL3NyYy9tb2RfcHl3ZWJzb2NrZXQiKQotCi1yZWFkbWVfcGF0aCA9IG9zLnBhdGguam9pbihh
dXRvaW5zdGFsbGVkX2RpciwgIlJFQURNRSIpCi1pZiBub3Qgb3MucGF0aC5leGlzdHMocmVhZG1l
X3BhdGgpOgotICAgIHdpdGggY29kZWNzLm9wZW4ocmVhZG1lX3BhdGgsICJ3IiwgImFzY2lpIikg
YXMgZmlsZToKLSAgICAgICAgZmlsZS53cml0ZSgiVGhpcyBkaXJlY3RvcnkgaXMgYXV0by1nZW5l
cmF0ZWQgYnkgV2ViS2l0IGFuZCBpcyAiCi0gICAgICAgICAgICAgICAgICAgInNhZmUgdG8gZGVs
ZXRlLlxuSXQgY29udGFpbnMgbmVlZGVkIHRoaXJkLXBhcnR5IFB5dGhvbiAiCi0gICAgICAgICAg
ICAgICAgICAgInBhY2thZ2VzIGF1dG9tYXRpY2FsbHkgZG93bmxvYWRlZCBmcm9tIHRoZSB3ZWIu
IikKK2luaXRfcGF0aCA9IGZzLmpvaW4oX0FVVE9JTlNUQUxMRURfRElSLCAiX19pbml0X18ucHki
KQoraWYgbm90IGZzLmV4aXN0cyhpbml0X3BhdGgpOgorICAgIGZzLndyaXRlX3RleHRfZmlsZShp
bml0X3BhdGgsICIiKQorCityZWFkbWVfcGF0aCA9IGZzLmpvaW4oX0FVVE9JTlNUQUxMRURfRElS
LCAiUkVBRE1FIikKK2lmIG5vdCBmcy5leGlzdHMocmVhZG1lX3BhdGgpOgorICAgIGZzLndyaXRl
X3RleHRfZmlsZShyZWFkbWVfcGF0aCwKKyAgICAgICAgIlRoaXMgZGlyZWN0b3J5IGlzIGF1dG8t
Z2VuZXJhdGVkIGJ5IFdlYktpdCBhbmQgaXMgIgorICAgICAgICAic2FmZSB0byBkZWxldGUuXG5J
dCBjb250YWlucyBuZWVkZWQgdGhpcmQtcGFydHkgUHl0aG9uICIKKyAgICAgICAgInBhY2thZ2Vz
IGF1dG9tYXRpY2FsbHkgZG93bmxvYWRlZCBmcm9tIHRoZSB3ZWIuIikKKworCitjbGFzcyBBdXRv
aW5zdGFsbEltcG9ydEhvb2sob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZXN5
c3RlbT1Ob25lKToKKyAgICAgICAgc2VsZi5fZnMgPSBmaWxlc3lzdGVtIG9yIEZpbGVTeXN0ZW0o
KQorCisgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoKToKKyAgICAgICAg
IyBUaGlzIG1ldGhvZCB3aWxsIHJ1biBiZWZvcmUgZWFjaCBpbXBvcnQuIFNlZSBodHRwOi8vd3d3
LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzMDIvCisgICAgICAgIGlmICcuYXV0b2luc3RhbGxl
ZCcgbm90IGluIGZ1bGxuYW1lOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgJy5t
ZWNoYW5pemUnIGluIGZ1bGxuYW1lOgorICAgICAgICAgICAgc2VsZi5faW5zdGFsbF9tZWNoYW5p
emUoKQorICAgICAgICBlbGlmICcucGVwOCcgaW4gZnVsbG5hbWU6CisgICAgICAgICAgICBzZWxm
Ll9pbnN0YWxsX3BlcDgoKQorICAgICAgICBlbGlmICcuZWxpemEnIGluIGZ1bGxuYW1lOgorICAg
ICAgICAgICAgc2VsZi5faW5zdGFsbF9lbGl6YSgpCisgICAgICAgIGVsaWYgJy5pcmMnIGluIGZ1
bGxuYW1lOgorICAgICAgICAgICAgc2VsZi5faW5zdGFsbF9pcmMoKQorICAgICAgICBlbGlmICcu
cHl3ZWJzb2NrZXQnIGluIGZ1bGxuYW1lOgorICAgICAgICAgICAgc2VsZi5faW5zdGFsbF9weXdl
YnNvY2tldCgpCisKKyAgICBkZWYgX2luc3RhbGxfbWVjaGFuaXplKHNlbGYpOgorICAgICAgICAj
IFRoZSBtZWNoYW5pemUgcGFja2FnZSB1c2VzIENsaWVudEZvcm0sIGZvciBleGFtcGxlLCBpbiBf
aHRtbC5weS4KKyAgICAgICAgIyBTaW5jZSBtZWNoYW5pemUgaW1wb3J0cyBDbGllbnRGb3JtIGlu
IHRoZSBmb2xsb3dpbmcgd2F5LAorICAgICAgICAjCisgICAgICAgICMgPiBpbXBvcnQgc2dtbGxp
YiwgQ2xpZW50Rm9ybQorICAgICAgICAjCisgICAgICAgICMgdGhlIHNlYXJjaCBwYXRoIG5lZWRz
IHRvIGluY2x1ZGUgQ2xpZW50Rm9ybS4gIFdlIHB1dCBDbGllbnRGb3JtIGluCisgICAgICAgICMg
aXRzIG93biBkaXJlY3Rvcnkgc28gdGhhdCB3ZSBjYW4gaW5jbHVkZSBpdCBpbiB0aGUgc2VhcmNo
IHBhdGgKKyAgICAgICAgIyB3aXRob3V0IGluY2x1ZGluZyBvdGhlciBtb2R1bGVzIGFzIGEgc2lk
ZSBlZmZlY3QuCisgICAgICAgIGNsaWVudGZvcm1fZGlyID0gc2VsZi5fZnMuam9pbihfQVVUT0lO
U1RBTExFRF9ESVIsICJjbGllbnRmb3JtIikKKyAgICAgICAgaW5zdGFsbGVyID0gQXV0b0luc3Rh
bGxlcihhcHBlbmRfdG9fc2VhcmNoX3BhdGg9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0YXJnZXRfZGlyPWNsaWVudGZvcm1fZGlyKQorICAgICAgICBpbnN0YWxsZXIu
aW5zdGFsbCh1cmw9Imh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL0MvQ2xp
ZW50Rm9ybS9DbGllbnRGb3JtLTAuMi4xMC56aXAiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICB1cmxfc3VicGF0aD0iQ2xpZW50Rm9ybS5weSIpCisKKyAgICAgICAgc2VsZi5faW5zdGFsbCgi
aHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvbS9tZWNoYW5pemUvbWVjaGFu
aXplLTAuMS4xMS56aXAiLAorICAgICAgICAgICAgICAgICAgICAgICJtZWNoYW5pemUiKQorCisg
ICAgZGVmIF9pbnN0YWxsX3BlcDgoc2VsZik6CisgICAgICAgIHNlbGYuX2luc3RhbGwoImh0dHA6
Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL3AvcGVwOC9wZXA4LTAuNS4wLnRhci5n
eiNtZDU9NTEyYTgxOGFmOTk3OTI5MGNkNjE5Y2NlOGU5YzJlMmIiLAorICAgICAgICAgICAgICAg
ICAgICAgICJwZXA4LTAuNS4wL3BlcDgucHkiKQorCisgICAgZGVmIF9pbnN0YWxsX2VsaXphKHNl
bGYpOgorICAgICAgICBpbnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHRhcmdldF9kaXI9X0FVVE9J
TlNUQUxMRURfRElSKQorICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHA6Ly93d3cu
YWRhbWJhcnRoLmNvbS93ZWJraXQvZWxpemEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0
YXJnZXRfbmFtZT0iZWxpemEucHkiKQorCisgICAgZGVmIF9pbnN0YWxsX2lyYyhzZWxmKToKKyAg
ICAgICAgIyBTaW5jZSBpcmNsaWIgYW5kIGlyY2JvdCBhcmUgdHdvIHRvcC1sZXZlbCBwYWNrYWdl
cywgd2UgbmVlZCB0byBpbXBvcnQKKyAgICAgICAgIyB0aGVtIHNlcGFyYXRlbHkuICBXZSBncm91
cCB0aGVtIGludG8gYW4gaXJjIHBhY2thZ2UgZm9yIGJldHRlcgorICAgICAgICAjIG9yZ2FuaXph
dGlvbiBwdXJwb3Nlcy4KKyAgICAgICAgaXJjX2RpciA9IHNlbGYuX2ZzLmpvaW4oX0FVVE9JTlNU
QUxMRURfRElSLCAiaXJjIikKKyAgICAgICAgaW5zdGFsbGVyID0gQXV0b0luc3RhbGxlcih0YXJn
ZXRfZGlyPWlyY19kaXIpCisgICAgICAgIGluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cDovL2Rv
d25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9weXRob24taXJjbGliL3B5dGhvbi1pcmNs
aWIvMC40LjgvcHl0aG9uLWlyY2xpYi0wLjQuOC56aXAiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICB1cmxfc3VicGF0aD0iaXJjbGliLnB5IikKKyAgICAgICAgaW5zdGFsbGVyLmluc3RhbGwo
dXJsPSJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3B5dGhvbi1pcmNs
aWIvcHl0aG9uLWlyY2xpYi8wLjQuOC9weXRob24taXJjbGliLTAuNC44LnppcCIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVybF9zdWJwYXRoPSJpcmNib3QucHkiKQorCisgICAgZGVmIF9p
bnN0YWxsX3B5d2Vic29ja2V0KHNlbGYpOgorICAgICAgICBweXdlYnNvY2tldF9kaXIgPSBzZWxm
Ll9mcy5qb2luKF9BVVRPSU5TVEFMTEVEX0RJUiwgInB5d2Vic29ja2V0IikKKyAgICAgICAgaW5z
dGFsbGVyID0gQXV0b0luc3RhbGxlcih0YXJnZXRfZGlyPXB5d2Vic29ja2V0X2RpcikKKyAgICAg
ICAgaW5zdGFsbGVyLmluc3RhbGwodXJsPSJodHRwOi8vcHl3ZWJzb2NrZXQuZ29vZ2xlY29kZS5j
b20vZmlsZXMvbW9kX3B5d2Vic29ja2V0LTAuNS4yLnRhci5neiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVybF9zdWJwYXRoPSJweXdlYnNvY2tldC0wLjUuMi9zcmMvbW9kX3B5d2Vic29j
a2V0IikKKworICAgIGRlZiBfaW5zdGFsbChzZWxmLCB1cmwsIHVybF9zdWJwYXRoKToKKyAgICAg
ICAgaW5zdGFsbGVyID0gQXV0b0luc3RhbGxlcih0YXJnZXRfZGlyPV9BVVRPSU5TVEFMTEVEX0RJ
UikKKyAgICAgICAgaW5zdGFsbGVyLmluc3RhbGwodXJsPXVybCwgdXJsX3N1YnBhdGg9dXJsX3N1
YnBhdGgpCisKKworc3lzLm1ldGFfcGF0aC5hcHBlbmQoQXV0b2luc3RhbGxJbXBvcnRIb29rKCkp
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X19f
dW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X19f
dW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE5NjRlOWJjYjE3MmVjZTU3YmZkNWUyNWQ4NmQ3M2Y3
MDk4MWM2MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRw
YXJ0eS9fX2luaXRfX191bml0dGVzdC5weQpAQCAtMCwwICsxLDY0IEBACisjIS91c3IvYmluL3B5
dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCitm
cm9tIHdlYmtpdHB5LnRoaXJkcGFydHkgaW1wb3J0IEF1dG9pbnN0YWxsSW1wb3J0SG9vaworCitj
bGFzcyBUaGlyZHBhcnR5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfaW1w
b3J0X2hvb2soc2VsZik6CisgICAgICAgICMgQWRkIGFub3RoZXIgaW1wb3J0IGhvb2sgYW5kIG1h
a2Ugc3VyZSB3ZSBnZXQgY2FsbGVkLgorICAgICAgICBjbGFzcyBNb2NrSW1wb3J0SG9vayhBdXRv
aW5zdGFsbEltcG9ydEhvb2spOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAg
ICAgICAgICAgICAgIEF1dG9pbnN0YWxsSW1wb3J0SG9vay5fX2luaXRfXyhzZWxmKQorICAgICAg
ICAgICAgICAgIHNlbGYuX2VsaXphX2luc3RhbGxlZCA9IEZhbHNlCisgICAgICAgICAgICAgICAg
c2VsZi5fcHl3ZWJzb2NrZXRfaW5zdGFsbGVkID0gRmFsc2UKKworICAgICAgICAgICAgZGVmIF9p
bnN0YWxsX2VsaXphKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuZWxpemFfaW5zdGFsbGVk
ID0gVHJ1ZQorCisgICAgICAgICAgICBkZWYgX2luc3RhbGxfcHl3ZWJzb2NrZXQoc2VsZik6Cisg
ICAgICAgICAgICAgICAgc2VsZi5weXdlYnNvY2tldF9pbnN0YWxsZWQgPSBUcnVlCisKKyAgICAg
ICAgbW9ja19pbXBvcnRfaG9vayA9IE1vY2tJbXBvcnRIb29rKCkKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgIyBUaGUgYWN0dWFsIEF1dG9pbnN0YWxsSW1wb3J0SG9vayBzaG91bGQgYmUgaW5z
dGFsbGVkIGJlZm9yZSB1cywKKyAgICAgICAgICAgICMgc28gdGhlc2UgbW9kdWxlcyB3aWxsIGdl
dCBpbnN0YWxsZWQgYmVmb3JlIE1vY2tJbXBvcnRIb29rIHJ1bnMuCisgICAgICAgICAgICBzeXMu
bWV0YV9wYXRoLmFwcGVuZChtb2NrX2ltcG9ydF9ob29rKQorICAgICAgICAgICAgZnJvbSB3ZWJr
aXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQgaW1wb3J0IGVsaXphCisgICAgICAgICAgICBz
ZWxmLmFzc2VydFRydWUobW9ja19pbXBvcnRfaG9vay5lbGl6YV9pbnN0YWxsZWQpCisKKyAgICAg
ICAgICAgIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLnB5d2Vic29ja2V0
IGltcG9ydCBtb2RfcHl3ZWJzb2NrZXQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2Nr
X2ltcG9ydF9ob29rLnB5d2Vic29ja2V0X2luc3RhbGxlZCkKKyAgICAgICAgZmluYWxseToKKyAg
ICAgICAgICAgIHN5cy5tZXRhX3BhdGgucmVtb3ZlKG1vY2tfaW1wb3J0X2hvb2spCisKK2lmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91307</attachid>
            <date>2011-04-27 10:13:06 -0700</date>
            <delta_ts>2011-04-27 13:44:33 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-55723-20110427101653.patch</filename>
            <type>text/plain</type>
            <size>18858</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUwNTgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2MmVkOGQ5YjI0YWZjM2Q3OTg1ZTRiZTc5OTgxYzI1NmMz
MTBjZGQzLi42ZDAwZjdhZWNhMjdmMjgwZWE2YTNhYjcwMjZiOWI1YWZlYWQwZDJkIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTEtMDQtMjcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgorCisgICAgICAgIGxhemlseSBhdXRvaW5zdGFsbCB0
aGlyZHBhcnR5IHB5dGhvbiBsaWJyYXJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU1NzIzCisKKyAgICAgICAgVGhpcyBoZWxwcyBieSBvbmx5IGhh
dmluZyBweXdlYnNvY2tldCBpbnN0YWxsZWQgd2hlbiB0aGUgYm90cyBydW4uICBJdAorICAgICAg
ICBkb2Vzbid0IGhlbHAgbXVjaCBmb3IgZGV2cyBzaW5jZSB3ZWJraXQtcGF0Y2ggcHVsbHMgaW4g
YWxtb3N0IGV2ZXJ5dGhpbmcuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvYnVnemlsbGEvYnVnemlsbGEucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1aWxkYm90L2J1aWxkYm90LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9uZXR3b3JrdHJhbnNhY3Rpb24ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L25ldHdvcmt0cmFuc2FjdGlvbl91bml0dGVzdC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHk6IEFkZCBh
biBpbXBvcnQgaG9vayBzbyB3ZSBjYW4gaW5zdGFsbCBiYXNlZCBvbgorICAgICAgICAgICAgdGhl
IGltcG9ydCBjb21tYW5kIHJhdGhlciB0aGFuIGp1c3QgaW5zdGFsbGluZyBldmVyeXRoaW5nLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfX191bml0dGVzdC5w
eTogQWRkZWQuCisKIDIwMTEtMDQtMjcgIEplZmYgTWlsbGVyICA8amVmZm1AYXBwbGUuY29tPgog
CiAgICAgICAgIENvcnJlY3QgbXkgSVJDIG5pY2tuYW1lLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5CmluZGV4IDIwZjg5
ZTNlODVhNjc1NGM1ODEzZjVmMGMxNjQ1Nzc5Yzk3NWNhZjcuLjNjYzlmNjVlODhmNWYxOGE2OTBj
YzhlYzI1NTU1NTdlZWE0OTlmMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkKQEAgLTQ1LDcgKzQ1LDYgQEAgZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcgaW1wb3J0IGNvbW1pdHRlcnMKIGZyb20gd2Via2l0
cHkuY29tbW9uLm5ldC5jcmVkZW50aWFscyBpbXBvcnQgQ3JlZGVudGlhbHMKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS51c2VyIGltcG9ydCBVc2VyCi1mcm9tIHdlYmtpdHB5LnRoaXJkcGFy
dHkuYXV0b2luc3RhbGxlZC5tZWNoYW5pemUgaW1wb3J0IEJyb3dzZXIKIGZyb20gd2Via2l0cHku
dGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwLCBCZWF1dGlmdWxT
dG9uZVNvdXAsIFNvdXBTdHJhaW5lcgogCiAKQEAgLTIxNSw2ICsyMTQsNyBAQCBjbGFzcyBCdWd6
aWxsYShvYmplY3QpOgogCiAgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCB1c2Ugc29tZSBzb3J0
IG9mIEJyb3dzZXIgbW9jayBvYmplY3Qgd2hlbiBpbiBkcnlydW4KICAgICAgICAgIyBtb2RlICh0
byBwcmV2ZW50IGFueSBtaXN0YWtlcykuCisgICAgICAgIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0
eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZSBpbXBvcnQgQnJvd3NlcgogICAgICAgICBzZWxmLmJy
b3dzZXIgPSBCcm93c2VyKCkKICAgICAgICAgIyBJZ25vcmUgYnVncy53ZWJraXQub3JnL3JvYm90
cy50eHQgdW50aWwgd2UgZml4IGl0IHRvIGFsbG93IHRoaXMKICAgICAgICAgIyBzY3JpcHQuCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QvYnVp
bGRib3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QvYnVp
bGRib3QucHkKaW5kZXggODkyNmM4OWZiYWI2NTI1ZmIzNDY4NGVlNjM0NGQ1MDQ5NmIyMzViYi4u
YTFlNjYyYThlNzA2OWZkZjYxZDNjMmVhYzlhNzgwZmNkYzcxNWExYiAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdC5weQpA
QCAtNDYsNyArNDYsNiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQudGVzdG91dHB1dHNldCBp
bXBvcnQgVGVzdE91dHB1dFNldAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmxvZ3V0aWxz
IGltcG9ydCBnZXRfbG9nZ2VyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uemlwZmlsZXNl
dCBpbXBvcnQgWmlwRmlsZVNldAogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNv
dXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKLWZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5z
dGFsbGVkLm1lY2hhbml6ZSBpbXBvcnQgQnJvd3NlcgogCiBfbG9nID0gZ2V0X2xvZ2dlcihfX2Zp
bGVfXykKIApAQCAtNTcsNiArNTYsNyBAQCBjbGFzcyBCdWlsZGVyKG9iamVjdCk6CiAgICAgICAg
IHNlbGYuX2J1aWxkYm90ID0gYnVpbGRib3QKICAgICAgICAgc2VsZi5fYnVpbGRzX2NhY2hlID0g
e30KICAgICAgICAgc2VsZi5fcmV2aXNpb25fdG9fYnVpbGRfbnVtYmVyID0gTm9uZQorICAgICAg
ICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5tZWNoYW5pemUgaW1wb3J0
IEJyb3dzZXIKICAgICAgICAgc2VsZi5fYnJvd3NlciA9IEJyb3dzZXIoKQogICAgICAgICBzZWxm
Ll9icm93c2VyLnNldF9oYW5kbGVfcm9ib3RzKEZhbHNlKSAjIFRoZSBidWlsZGVyIHBhZ2VzIGFy
ZSBleGNsdWRlZCBieSByb2JvdHMudHh0CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9uZXR3b3JrdHJhbnNhY3Rpb24ucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvbmV0d29ya3RyYW5zYWN0aW9uLnB5CmluZGV4IDIxY2M3MWZjNjhj
YWE2MTNlNjRkNjQ5N2E1YjY5YTRkMDMxYWM1MTIuLmQzNWE3ZTdhYmMyNmMxOGVkODU0ZTcxMDE0
OTlhNGY0ZGFlMmZhMjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9uZXR3b3JrdHJhbnNhY3Rpb24ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L25ldHdvcmt0cmFuc2FjdGlvbi5weQpAQCAtMjksNyArMjksNiBAQAogaW1wb3J0
IGxvZ2dpbmcKIGltcG9ydCB0aW1lCiAKLWZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5z
dGFsbGVkIGltcG9ydCBtZWNoYW5pemUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXBy
ZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxvZwogCiAKQEAgLTUwLDYgKzQ5LDcgQEAgY2xhc3MgTmV0
d29ya1RyYW5zYWN0aW9uKG9iamVjdCk6CiAgICAgZGVmIHJ1bihzZWxmLCByZXF1ZXN0KToKICAg
ICAgICAgc2VsZi5fdG90YWxfc2xlZXAgPSAwCiAgICAgICAgIHNlbGYuX2JhY2tvZmZfc2Vjb25k
cyA9IHNlbGYuX2luaXRpYWxfYmFja29mZl9zZWNvbmRzCisgICAgICAgIGZyb20gd2Via2l0cHku
dGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkIGltcG9ydCBtZWNoYW5pemUKICAgICAgICAgd2hpbGUg
VHJ1ZToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdCgp
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbmV0d29ya3Ry
YW5zYWN0aW9uX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L25ldHdvcmt0cmFuc2FjdGlvbl91bml0dGVzdC5weQppbmRleCBjNGNkNGUwYjhjZmI5M2M2MjI2
ZTE0YWRjNjYyNmJlYTdjMGZmNmUyLi4zMzAyZGVjODBlMzQ3NWQzMjljODU4MDJkOWNkOTRkZmVl
NDE3ZWI3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbmV0
d29ya3RyYW5zYWN0aW9uX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9uZXR3b3JrdHJhbnNhY3Rpb25fdW5pdHRlc3QucHkKQEAgLTMwLDcgKzMwLDYg
QEAgaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5uZXR3b3JrdHJh
bnNhY3Rpb24gaW1wb3J0IE5ldHdvcmtUcmFuc2FjdGlvbiwgTmV0d29ya1RpbWVvdXQKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5sb2d0ZXN0aW5nIGltcG9ydCBMb2dnaW5nVGVzdENhc2UK
LWZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZSBpbXBvcnQg
SFRUUEVycm9yCiAKIAogY2xhc3MgTmV0d29ya1RyYW5zYWN0aW9uVGVzdChMb2dnaW5nVGVzdENh
c2UpOgpAQCAtNTksMTAgKzU4LDEyIEBAIGNsYXNzIE5ldHdvcmtUcmFuc2FjdGlvblRlc3QoTG9n
Z2luZ1Rlc3RDYXNlKToKICAgICBkZWYgX3JhaXNlXzUwMF9lcnJvcihzZWxmKToKICAgICAgICAg
c2VsZi5fcnVuX2NvdW50ICs9IDEKICAgICAgICAgaWYgc2VsZi5fcnVuX2NvdW50IDwgMzoKKyAg
ICAgICAgICAgIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6
ZSBpbXBvcnQgSFRUUEVycm9yCiAgICAgICAgICAgICByYWlzZSBIVFRQRXJyb3IoImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCA1MDAsICJpbnRlcm5hbCBzZXJ2ZXIgZXJyb3IiLCBOb25lLCBOb25lKQog
ICAgICAgICByZXR1cm4gNDIKIAogICAgIGRlZiBfcmFpc2VfNDA0X2Vycm9yKHNlbGYpOgorICAg
ICAgICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5tZWNoYW5pemUgaW1w
b3J0IEhUVFBFcnJvcgogICAgICAgICByYWlzZSBIVFRQRXJyb3IoImh0dHA6Ly9mb28uY29tLyIs
IDQwNCwgIm5vdCBmb3VuZCIsIE5vbmUsIE5vbmUpCiAKICAgICBkZWYgdGVzdF9yZXRyeShzZWxm
KToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNz
ZXJ2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVy
LnB5CmluZGV4IDk2MjJjODliZDM1M2NmN2Q0YzA2YWEyNDQ4MDEwN2EzMGNhYTA2NWUuLjY3MzZk
ZTk0YjUxNzdkYzBlYmQ0MjBhNGQyMDgwN2QwOWY3MzAxODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZlci5weQpAQCAtMzAsNyArMzAsNiBA
QAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQubmV0d29ya3RyYW5zYWN0aW9uIGltcG9ydCBO
ZXR3b3JrVHJhbnNhY3Rpb24KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVk
X2xvZ2dpbmcgaW1wb3J0IGxvZwotZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxs
ZWQubWVjaGFuaXplIGltcG9ydCBCcm93c2VyCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVh
dXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAogCiBpbXBvcnQgbG9nZ2luZwpAQCAtNDYs
NiArNDUsNyBAQCBjbGFzcyBTdGF0dXNTZXJ2ZXI6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
aG9zdD1kZWZhdWx0X2hvc3QsIGJyb3dzZXI9Tm9uZSwgYm90X2lkPU5vbmUpOgogICAgICAgICBz
ZWxmLnNldF9ob3N0KGhvc3QpCisgICAgICAgIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRv
aW5zdGFsbGVkLm1lY2hhbml6ZSBpbXBvcnQgQnJvd3NlcgogICAgICAgICBzZWxmLl9icm93c2Vy
ID0gYnJvd3NlciBvciBCcm93c2VyKCkKICAgICAgICAgc2VsZi5zZXRfYm90X2lkKGJvdF9pZCkK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJzb2NrZXRfc2VydmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJzb2NrZXRfc2VydmVyLnB5CmluZGV4IDcxM2FkMjE4NmRiYjhiYzkyZDkwZTAxZTFj
NGJmMTA5NzdkMjBlOTEuLmE1OWNiMWZhZGI4Yzg3NzY3NWQwMjExNDMxMzFiNjgzNjE5ZTBlMmUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vi
c29ja2V0X3NlcnZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHkKQEAgLTQ2LDcgKzQ2LDYgQEAgaW1wb3J0IGZhY3Rv
cnkKIGltcG9ydCBodHRwX3NlcnZlcgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhl
Y3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKLWZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5z
dGFsbGVkLnB5d2Vic29ja2V0IGltcG9ydCBtb2RfcHl3ZWJzb2NrZXQKIAogCiBfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LndlYnNvY2tldF9zZXJ2
ZXIiKQpAQCAtMTU3LDYgKzE1Niw3IEBAIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2VydmVyLkxp
Z2h0dHBkKToKICAgICAgICAgb3V0cHV0X2xvZyA9IG9zLnBhdGguam9pbihzZWxmLl9vdXRwdXRf
ZGlyLCBsb2dfZmlsZV9uYW1lICsgIi1vdXQudHh0IikKICAgICAgICAgc2VsZi5fd3NvdXQgPSBj
b2RlY3Mub3BlbihvdXRwdXRfbG9nLCAidyIsICJ1dGYtOCIpCiAKKyAgICAgICAgZnJvbSB3ZWJr
aXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQucHl3ZWJzb2NrZXQgaW1wb3J0IG1vZF9weXdl
YnNvY2tldAogICAgICAgICBweXRob25faW50ZXJwID0gc3lzLmV4ZWN1dGFibGUKICAgICAgICAg
cHl3ZWJzb2NrZXRfYmFzZSA9IG9zLnBhdGguam9pbigKICAgICAgICAgICAgIG9zLnBhdGguZGly
bmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5CmluZGV4IDk3Mjg0OTI1MGI3YmY1ZTg0NjQ1
MzJiZDAwYjBkZWRmMzQ5ZTU2YzcuLjczNjNmNWYxMjQ1ZWE5NGJhODg3NjI5MmEwNjA5MzFmZDU4
ZjM2YmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2lu
aXRfXy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18u
cHkKQEAgLTI4LDcxICsyOCwxMDcgQEAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRl
bWVudAogCiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgb3MKK2ltcG9ydCBzeXMKIAogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmF1dG9pbnN0YWxsIGltcG9ydCBBdXRvSW5zdGFsbGVyCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQorCitf
VEhJUkRQQVJUWV9ESVIgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCitfQVVUT0lOU1RBTExF
RF9ESVIgPSBvcy5wYXRoLmpvaW4oX1RISVJEUEFSVFlfRElSLCAiYXV0b2luc3RhbGxlZCIpCiAK
ICMgUHV0dGluZyB0aGUgYXV0b2luc3RhbGwgY29kZSBpbnRvIHdlYmtpdHB5L3RoaXJkcGFydHkv
X19pbml0X18ucHkKICMgZW5zdXJlcyB0aGF0IG5vIGF1dG9pbnN0YWxsaW5nIG9jY3VycyB1bnRp
bCBhIGNhbGxlciBpbXBvcnRzIGZyb20KICMgd2Via2l0cHkudGhpcmRwYXJ0eS4gIFRoaXMgaXMg
dXNlZnVsIGlmIHRoZSBjYWxsZXIgd2FudHMgdG8gY29uZmlndXJlCiAjIGxvZ2dpbmcgcHJpb3Ig
dG8gZXhlY3V0aW5nIGF1dG9pbnN0YWxsIGNvZGUuCiAKLSMgRklYTUU6IElkZWFsbHksIGEgcGFj
a2FnZSBzaG91bGQgYmUgYXV0b2luc3RhbGxlZCBvbmx5IGlmIHRoZSBjYWxsZXIKLSMgICAgICAg
IGF0dGVtcHRzIHRvIGltcG9ydCBmcm9tIHRoYXQgaW5kaXZpZHVhbCBwYWNrYWdlLiAgVGhpcyB3
b3VsZAotIyAgICAgICAgbWFrZSBhdXRvaW5zdGFsbGluZyBsYXppZXIgdGhhbiBpdCBpcyBjdXJy
ZW50bHkuICBUaGlzIGNhbgotIyAgICAgICAgcGVyaGFwcyBiZSBkb25lIHVzaW5nIFB5dGhvbidz
IGltcG9ydCBob29rcyBhcyB0aGUgb3JpZ2luYWwKLSMgICAgICAgIGF1dG9pbnN0YWxsIGltcGxl
bWVudGF0aW9uIGRpZC4KLQogIyBGSVhNRTogSWYgYW55IG9mIHRoZXNlIHNlcnZlcnMgaXMgb2Zm
bGluZSwgd2Via2l0LXBhdGNoIGJyZWFrcyAoYW5kIG1heWJlCiAjIG90aGVyIHNjcmlwdHMgZG8s
IHRvbykuIFNlZSA8aHR0cDovL3dlYmtpdC5vcmcvYi80MjA4MD4uCiAKICMgV2UgcHV0IGF1dG8t
aW5zdGFsbGVkIHRoaXJkLXBhcnR5IG1vZHVsZXMgaW4gdGhpcyBkaXJlY3RvcnktLQogIwogIyAg
ICAgd2Via2l0cHkvdGhpcmRwYXJ0eS9hdXRvaW5zdGFsbGVkCi10aGlyZHBhcnR5X2RpciA9IG9z
LnBhdGguZGlybmFtZShfX2ZpbGVfXykKLWF1dG9pbnN0YWxsZWRfZGlyID0gb3MucGF0aC5qb2lu
KHRoaXJkcGFydHlfZGlyLCAiYXV0b2luc3RhbGxlZCIpCitmcyA9IEZpbGVTeXN0ZW0oKQorZnMu
bWF5YmVfbWFrZV9kaXJlY3RvcnkoX0FVVE9JTlNUQUxMRURfRElSKQogCi0jIFdlIG5lZWQgdG8g
ZG93bmxvYWQgQ2xpZW50Rm9ybSBzaW5jZSB0aGUgbWVjaGFuaXplIHBhY2thZ2UgdGhhdCB3ZSBk
b3dubG9hZAotIyBiZWxvdyByZXF1aXJlcyBpdC4gIFRoZSBtZWNoYW5pemUgcGFja2FnZSB1c2Vz
IENsaWVudEZvcm0sIGZvciBleGFtcGxlLAotIyBpbiBfaHRtbC5weS4gIFNpbmNlIG1lY2hhbml6
ZSBpbXBvcnRzIENsaWVudEZvcm0gaW4gdGhlIGZvbGxvd2luZyB3YXksCi0jCi0jID4gaW1wb3J0
IHNnbWxsaWIsIENsaWVudEZvcm0KLSMKLSMgdGhlIHNlYXJjaCBwYXRoIG5lZWRzIHRvIGluY2x1
ZGUgQ2xpZW50Rm9ybS4gIFdlIHB1dCBDbGllbnRGb3JtIGluCi0jIGl0cyBvd24gZGlyZWN0b3J5
IHNvIHRoYXQgd2UgY2FuIGluY2x1ZGUgaXQgaW4gdGhlIHNlYXJjaCBwYXRoIHdpdGhvdXQKLSMg
aW5jbHVkaW5nIG90aGVyIG1vZHVsZXMgYXMgYSBzaWRlIGVmZmVjdC4KLWNsaWVudGZvcm1fZGly
ID0gb3MucGF0aC5qb2luKGF1dG9pbnN0YWxsZWRfZGlyLCAiY2xpZW50Zm9ybSIpCi1pbnN0YWxs
ZXIgPSBBdXRvSW5zdGFsbGVyKGFwcGVuZF90b19zZWFyY2hfcGF0aD1UcnVlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICB0YXJnZXRfZGlyPWNsaWVudGZvcm1fZGlyKQotaW5zdGFsbGVyLmlu
c3RhbGwodXJsPSJodHRwOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9DL0NsaWVu
dEZvcm0vQ2xpZW50Rm9ybS0wLjIuMTAuemlwIiwKLSAgICAgICAgICAgICAgICAgIHVybF9zdWJw
YXRoPSJDbGllbnRGb3JtLnB5IikKLQotIyBUaGUgcmVtYWluaW5nIHBhY2thZ2VzIGRvIG5vdCBu
ZWVkIHRvIGJlIGluIHRoZSBzZWFyY2ggcGF0aCwgc28gd2UgY3JlYXRlCi0jIGEgbmV3IEF1dG9J
bnN0YWxsZXIgaW5zdGFuY2UgdGhhdCBkb2VzIG5vdCBhcHBlbmQgdG8gdGhlIHNlYXJjaCBwYXRo
LgotaW5zdGFsbGVyID0gQXV0b0luc3RhbGxlcih0YXJnZXRfZGlyPWF1dG9pbnN0YWxsZWRfZGly
KQotCi1pbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2Fn
ZXMvc291cmNlL20vbWVjaGFuaXplL21lY2hhbml6ZS0wLjIuNC56aXAiLAotICAgICAgICAgICAg
ICAgICAgdXJsX3N1YnBhdGg9Im1lY2hhbml6ZSIpCi1pbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0
dHA6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL3AvcGVwOC9wZXA4LTAuNS4wLnRh
ci5neiNtZDU9NTEyYTgxOGFmOTk3OTI5MGNkNjE5Y2NlOGU5YzJlMmIiLAotICAgICAgICAgICAg
ICAgICAgdXJsX3N1YnBhdGg9InBlcDgtMC41LjAvcGVwOC5weSIpCi1pbnN0YWxsZXIuaW5zdGFs
bCh1cmw9Imh0dHA6Ly93d3cuYWRhbWJhcnRoLmNvbS93ZWJraXQvZWxpemEiLAotICAgICAgICAg
ICAgICAgICAgdGFyZ2V0X25hbWU9ImVsaXphLnB5IikKLQotIyBTaW5jZSBpcmNsaWIgYW5kIGly
Y2JvdCBhcmUgdHdvIHRvcC1sZXZlbCBwYWNrYWdlcywgd2UgbmVlZCB0byBpbXBvcnQKLSMgdGhl
bSBzZXBhcmF0ZWx5LiAgV2UgZ3JvdXAgdGhlbSBpbnRvIGFuIGlyYyBwYWNrYWdlIGZvciBiZXR0
ZXIKLSMgb3JnYW5pemF0aW9uIHB1cnBvc2VzLgotaXJjX2RpciA9IG9zLnBhdGguam9pbihhdXRv
aW5zdGFsbGVkX2RpciwgImlyYyIpCi1pbnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHRhcmdldF9k
aXI9aXJjX2RpcikKLWluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cDovL2Rvd25sb2Fkcy5zb3Vy
Y2Vmb3JnZS5uZXQvcHJvamVjdC9weXRob24taXJjbGliL3B5dGhvbi1pcmNsaWIvMC40LjgvcHl0
aG9uLWlyY2xpYi0wLjQuOC56aXAiLCB1cmxfc3VicGF0aD0iaXJjbGliLnB5IikKLWluc3RhbGxl
ci5pbnN0YWxsKHVybD0iaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9w
eXRob24taXJjbGliL3B5dGhvbi1pcmNsaWIvMC40LjgvcHl0aG9uLWlyY2xpYi0wLjQuOC56aXAi
LCB1cmxfc3VicGF0aD0iaXJjYm90LnB5IikKLQotcHl3ZWJzb2NrZXRfZGlyID0gb3MucGF0aC5q
b2luKGF1dG9pbnN0YWxsZWRfZGlyLCAicHl3ZWJzb2NrZXQiKQotaW5zdGFsbGVyID0gQXV0b0lu
c3RhbGxlcih0YXJnZXRfZGlyPXB5d2Vic29ja2V0X2RpcikKLWluc3RhbGxlci5pbnN0YWxsKHVy
bD0iaHR0cDovL3B5d2Vic29ja2V0Lmdvb2dsZWNvZGUuY29tL2ZpbGVzL21vZF9weXdlYnNvY2tl
dC0wLjUuMi50YXIuZ3oiLAotICAgICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9InB5d2Vic29j
a2V0LTAuNS4yL3NyYy9tb2RfcHl3ZWJzb2NrZXQiKQotCi1yZWFkbWVfcGF0aCA9IG9zLnBhdGgu
am9pbihhdXRvaW5zdGFsbGVkX2RpciwgIlJFQURNRSIpCi1pZiBub3Qgb3MucGF0aC5leGlzdHMo
cmVhZG1lX3BhdGgpOgotICAgIHdpdGggY29kZWNzLm9wZW4ocmVhZG1lX3BhdGgsICJ3IiwgImFz
Y2lpIikgYXMgZmlsZToKLSAgICAgICAgZmlsZS53cml0ZSgiVGhpcyBkaXJlY3RvcnkgaXMgYXV0
by1nZW5lcmF0ZWQgYnkgV2ViS2l0IGFuZCBpcyAiCi0gICAgICAgICAgICAgICAgICAgInNhZmUg
dG8gZGVsZXRlLlxuSXQgY29udGFpbnMgbmVlZGVkIHRoaXJkLXBhcnR5IFB5dGhvbiAiCi0gICAg
ICAgICAgICAgICAgICAgInBhY2thZ2VzIGF1dG9tYXRpY2FsbHkgZG93bmxvYWRlZCBmcm9tIHRo
ZSB3ZWIuIikKK2luaXRfcGF0aCA9IGZzLmpvaW4oX0FVVE9JTlNUQUxMRURfRElSLCAiX19pbml0
X18ucHkiKQoraWYgbm90IGZzLmV4aXN0cyhpbml0X3BhdGgpOgorICAgIGZzLndyaXRlX3RleHRf
ZmlsZShpbml0X3BhdGgsICIiKQorCityZWFkbWVfcGF0aCA9IGZzLmpvaW4oX0FVVE9JTlNUQUxM
RURfRElSLCAiUkVBRE1FIikKK2lmIG5vdCBmcy5leGlzdHMocmVhZG1lX3BhdGgpOgorICAgIGZz
LndyaXRlX3RleHRfZmlsZShyZWFkbWVfcGF0aCwKKyAgICAgICAgIlRoaXMgZGlyZWN0b3J5IGlz
IGF1dG8tZ2VuZXJhdGVkIGJ5IFdlYktpdCBhbmQgaXMgIgorICAgICAgICAic2FmZSB0byBkZWxl
dGUuXG5JdCBjb250YWlucyBuZWVkZWQgdGhpcmQtcGFydHkgUHl0aG9uICIKKyAgICAgICAgInBh
Y2thZ2VzIGF1dG9tYXRpY2FsbHkgZG93bmxvYWRlZCBmcm9tIHRoZSB3ZWIuIikKKworCitjbGFz
cyBBdXRvaW5zdGFsbEltcG9ydEhvb2sob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
ZmlsZXN5c3RlbT1Ob25lKToKKyAgICAgICAgc2VsZi5fZnMgPSBmaWxlc3lzdGVtIG9yIEZpbGVT
eXN0ZW0oKQorCisgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoKToKKyAg
ICAgICAgIyBUaGlzIG1ldGhvZCB3aWxsIHJ1biBiZWZvcmUgZWFjaCBpbXBvcnQuIFNlZSBodHRw
Oi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzMDIvCisgICAgICAgIGlmICcuYXV0b2lu
c3RhbGxlZCcgbm90IGluIGZ1bGxuYW1lOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAg
aWYgJy5tZWNoYW5pemUnIGluIGZ1bGxuYW1lOgorICAgICAgICAgICAgc2VsZi5faW5zdGFsbF9t
ZWNoYW5pemUoKQorICAgICAgICBlbGlmICcucGVwOCcgaW4gZnVsbG5hbWU6CisgICAgICAgICAg
ICBzZWxmLl9pbnN0YWxsX3BlcDgoKQorICAgICAgICBlbGlmICcuZWxpemEnIGluIGZ1bGxuYW1l
OgorICAgICAgICAgICAgc2VsZi5faW5zdGFsbF9lbGl6YSgpCisgICAgICAgIGVsaWYgJy5pcmMn
IGluIGZ1bGxuYW1lOgorICAgICAgICAgICAgc2VsZi5faW5zdGFsbF9pcmMoKQorICAgICAgICBl
bGlmICcucHl3ZWJzb2NrZXQnIGluIGZ1bGxuYW1lOgorICAgICAgICAgICAgc2VsZi5faW5zdGFs
bF9weXdlYnNvY2tldCgpCisKKyAgICBkZWYgX2luc3RhbGxfbWVjaGFuaXplKHNlbGYpOgorICAg
ICAgICAjIFRoZSBtZWNoYW5pemUgcGFja2FnZSB1c2VzIENsaWVudEZvcm0sIGZvciBleGFtcGxl
LCBpbiBfaHRtbC5weS4KKyAgICAgICAgIyBTaW5jZSBtZWNoYW5pemUgaW1wb3J0cyBDbGllbnRG
b3JtIGluIHRoZSBmb2xsb3dpbmcgd2F5LAorICAgICAgICAjCisgICAgICAgICMgPiBpbXBvcnQg
c2dtbGxpYiwgQ2xpZW50Rm9ybQorICAgICAgICAjCisgICAgICAgICMgdGhlIHNlYXJjaCBwYXRo
IG5lZWRzIHRvIGluY2x1ZGUgQ2xpZW50Rm9ybS4gIFdlIHB1dCBDbGllbnRGb3JtIGluCisgICAg
ICAgICMgaXRzIG93biBkaXJlY3Rvcnkgc28gdGhhdCB3ZSBjYW4gaW5jbHVkZSBpdCBpbiB0aGUg
c2VhcmNoIHBhdGgKKyAgICAgICAgIyB3aXRob3V0IGluY2x1ZGluZyBvdGhlciBtb2R1bGVzIGFz
IGEgc2lkZSBlZmZlY3QuCisgICAgICAgIGNsaWVudGZvcm1fZGlyID0gc2VsZi5fZnMuam9pbihf
QVVUT0lOU1RBTExFRF9ESVIsICJjbGllbnRmb3JtIikKKyAgICAgICAgaW5zdGFsbGVyID0gQXV0
b0luc3RhbGxlcihhcHBlbmRfdG9fc2VhcmNoX3BhdGg9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0YXJnZXRfZGlyPWNsaWVudGZvcm1fZGlyKQorICAgICAgICBpbnN0
YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNl
L0MvQ2xpZW50Rm9ybS9DbGllbnRGb3JtLTAuMi4xMC56aXAiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICB1cmxfc3VicGF0aD0iQ2xpZW50Rm9ybS5weSIpCisKKyAgICAgICAgc2VsZi5faW5z
dGFsbCgiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvbS9tZWNoYW5pemUv
bWVjaGFuaXplLTAuMi40LnppcCIsCisgICAgICAgICAgICAgICAgICAgICAgIm1lY2hhbml6ZSIp
CisKKyAgICBkZWYgX2luc3RhbGxfcGVwOChzZWxmKToKKyAgICAgICAgc2VsZi5faW5zdGFsbCgi
aHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvcC9wZXA4L3BlcDgtMC41LjAu
dGFyLmd6I21kNT01MTJhODE4YWY5OTc5MjkwY2Q2MTljY2U4ZTljMmUyYiIsCisgICAgICAgICAg
ICAgICAgICAgICAgInBlcDgtMC41LjAvcGVwOC5weSIpCisKKyAgICBkZWYgX2luc3RhbGxfZWxp
emEoc2VsZik6CisgICAgICAgIGluc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIodGFyZ2V0X2Rpcj1f
QVVUT0lOU1RBTExFRF9ESVIpCisgICAgICAgIGluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cDov
L3d3dy5hZGFtYmFydGguY29tL3dlYmtpdC9lbGl6YSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRhcmdldF9uYW1lPSJlbGl6YS5weSIpCisKKyAgICBkZWYgX2luc3RhbGxfaXJjKHNlbGYp
OgorICAgICAgICAjIFNpbmNlIGlyY2xpYiBhbmQgaXJjYm90IGFyZSB0d28gdG9wLWxldmVsIHBh
Y2thZ2VzLCB3ZSBuZWVkIHRvIGltcG9ydAorICAgICAgICAjIHRoZW0gc2VwYXJhdGVseS4gIFdl
IGdyb3VwIHRoZW0gaW50byBhbiBpcmMgcGFja2FnZSBmb3IgYmV0dGVyCisgICAgICAgICMgb3Jn
YW5pemF0aW9uIHB1cnBvc2VzLgorICAgICAgICBpcmNfZGlyID0gc2VsZi5fZnMuam9pbihfQVVU
T0lOU1RBTExFRF9ESVIsICJpcmMiKQorICAgICAgICBpbnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVy
KHRhcmdldF9kaXI9aXJjX2RpcikKKyAgICAgICAgaW5zdGFsbGVyLmluc3RhbGwodXJsPSJodHRw
Oi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3B5dGhvbi1pcmNsaWIvcHl0aG9u
LWlyY2xpYi8wLjQuOC9weXRob24taXJjbGliLTAuNC44LnppcCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVybF9zdWJwYXRoPSJpcmNsaWIucHkiKQorICAgICAgICBpbnN0YWxsZXIuaW5z
dGFsbCh1cmw9Imh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvcHl0aG9u
LWlyY2xpYi9weXRob24taXJjbGliLzAuNC44L3B5dGhvbi1pcmNsaWItMC40LjguemlwIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9ImlyY2JvdC5weSIpCisKKyAgICBk
ZWYgX2luc3RhbGxfcHl3ZWJzb2NrZXQoc2VsZik6CisgICAgICAgIHB5d2Vic29ja2V0X2RpciA9
IHNlbGYuX2ZzLmpvaW4oX0FVVE9JTlNUQUxMRURfRElSLCAicHl3ZWJzb2NrZXQiKQorICAgICAg
ICBpbnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHRhcmdldF9kaXI9cHl3ZWJzb2NrZXRfZGlyKQor
ICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHA6Ly9weXdlYnNvY2tldC5nb29nbGVj
b2RlLmNvbS9maWxlcy9tb2RfcHl3ZWJzb2NrZXQtMC41LjIudGFyLmd6IiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9InB5d2Vic29ja2V0LTAuNS4yL3NyYy9tb2RfcHl3
ZWJzb2NrZXQiKQorCisgICAgZGVmIF9pbnN0YWxsKHNlbGYsIHVybCwgdXJsX3N1YnBhdGgpOgor
ICAgICAgICBpbnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHRhcmdldF9kaXI9X0FVVE9JTlNUQUxM
RURfRElSKQorICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9dXJsLCB1cmxfc3VicGF0aD11
cmxfc3VicGF0aCkKKworCitzeXMubWV0YV9wYXRoLmFwcGVuZChBdXRvaW5zdGFsbEltcG9ydEhv
b2soKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2lu
aXRfX191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2lu
aXRfX191bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTk2NGU5YmNiMTcyZWNlNTdiZmQ1ZTI1ZDg2
ZDczZjcwOTgxYzYwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L19faW5pdF9fX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNjQgQEAKKyMhL3Vzci9i
aW4vcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0
CisKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eSBpbXBvcnQgQXV0b2luc3RhbGxJbXBvcnRIb29r
CisKK2NsYXNzIFRoaXJkcGFydHlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVz
dF9pbXBvcnRfaG9vayhzZWxmKToKKyAgICAgICAgIyBBZGQgYW5vdGhlciBpbXBvcnQgaG9vayBh
bmQgbWFrZSBzdXJlIHdlIGdldCBjYWxsZWQuCisgICAgICAgIGNsYXNzIE1vY2tJbXBvcnRIb29r
KEF1dG9pbnN0YWxsSW1wb3J0SG9vayk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6
CisgICAgICAgICAgICAgICAgQXV0b2luc3RhbGxJbXBvcnRIb29rLl9faW5pdF9fKHNlbGYpCisg
ICAgICAgICAgICAgICAgc2VsZi5fZWxpemFfaW5zdGFsbGVkID0gRmFsc2UKKyAgICAgICAgICAg
ICAgICBzZWxmLl9weXdlYnNvY2tldF9pbnN0YWxsZWQgPSBGYWxzZQorCisgICAgICAgICAgICBk
ZWYgX2luc3RhbGxfZWxpemEoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5lbGl6YV9pbnN0
YWxsZWQgPSBUcnVlCisKKyAgICAgICAgICAgIGRlZiBfaW5zdGFsbF9weXdlYnNvY2tldChzZWxm
KToKKyAgICAgICAgICAgICAgICBzZWxmLnB5d2Vic29ja2V0X2luc3RhbGxlZCA9IFRydWUKKwor
ICAgICAgICBtb2NrX2ltcG9ydF9ob29rID0gTW9ja0ltcG9ydEhvb2soKQorICAgICAgICB0cnk6
CisgICAgICAgICAgICAjIFRoZSBhY3R1YWwgQXV0b2luc3RhbGxJbXBvcnRIb29rIHNob3VsZCBi
ZSBpbnN0YWxsZWQgYmVmb3JlIHVzLAorICAgICAgICAgICAgIyBzbyB0aGVzZSBtb2R1bGVzIHdp
bGwgZ2V0IGluc3RhbGxlZCBiZWZvcmUgTW9ja0ltcG9ydEhvb2sgcnVucy4KKyAgICAgICAgICAg
IHN5cy5tZXRhX3BhdGguYXBwZW5kKG1vY2tfaW1wb3J0X2hvb2spCisgICAgICAgICAgICBmcm9t
IHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZCBpbXBvcnQgZWxpemEKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrX2ltcG9ydF9ob29rLmVsaXphX2luc3RhbGxlZCkKKwor
ICAgICAgICAgICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQucHl3ZWJz
b2NrZXQgaW1wb3J0IG1vZF9weXdlYnNvY2tldAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG1vY2tfaW1wb3J0X2hvb2sucHl3ZWJzb2NrZXRfaW5zdGFsbGVkKQorICAgICAgICBmaW5hbGx5
OgorICAgICAgICAgICAgc3lzLm1ldGFfcGF0aC5yZW1vdmUobW9ja19pbXBvcnRfaG9vaykKKwor
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>