<?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>52748</bug_id>
          
          <creation_ts>2011-01-19 14:40:18 -0800</creation_ts>
          <short_desc>nrwt: convert port/* modules to using the filesystem wrappers</short_desc>
          <delta_ts>2011-01-19 17:49:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          <blocked>52753</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>eric</cc>
    
    <cc>mihaip</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>336817</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 14:40:18 -0800</bug_when>
    <thetext>nrwt: convert port/* modules to using the filesystem wrappers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336818</commentid>
    <comment_count>1</comment_count>
      <attachid>79488</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 14:40:36 -0800</bug_when>
    <thetext>Created attachment 79488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336823</commentid>
    <comment_count>2</comment_count>
      <attachid>79489</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 14:42:02 -0800</bug_when>
    <thetext>Created attachment 79489
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336835</commentid>
    <comment_count>3</comment_count>
      <attachid>79492</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 14:51:59 -0800</bug_when>
    <thetext>Created attachment 79492
fix MockFileSystem.read_text_file() to raise KeyError if we don&apos;t know the file, fix isdir() to be thread-safe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336861</commentid>
    <comment_count>4</comment_count>
      <attachid>79499</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 15:14:25 -0800</bug_when>
    <thetext>Created attachment 79499
keep a copy of the file list; using a list comprehension didn&apos;t work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336992</commentid>
    <comment_count>5</comment_count>
      <attachid>79499</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 17:49:27 -0800</bug_when>
    <thetext>Comment on attachment 79499
keep a copy of the file list; using a list comprehension didn&apos;t work

Clearing flags on attachment: 79499

Committed r76184: &lt;http://trac.webkit.org/changeset/76184&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336993</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 17:49:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79488</attachid>
            <date>2011-01-19 14:40:36 -0800</date>
            <delta_ts>2011-01-19 14:42:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52748-20110119144034.patch</filename>
            <type>text/plain</type>
            <size>22896</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxOGMz
M2NmOWRiZTk1NDQ0YzUxMzFiNzM2ZDgyNjA5Njg1YjUyMTRkLi4yMTI1ZTMyOTEwYjM3NmE1MzM1
ZGU0NzJiNTA3NDI3OWRhOGVlZDIxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjkgQEAKIDIwMTEtMDEtMTkgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgYWRkIGEgLnNlcCBwcm9wZXJ0eSwgYWJzcGF0aCgpLCBpc2Ficygp
LCBtdGltZSgpLCBhbmQKKyAgICAgICAgb3Blbl90ZXh0X2ZpbGVfZm9yX3dyaXRpbmcoKSB0byBm
aWxlc3lzdGVtIG1vZHVsZXMuIFNvbWUgb2YKKyAgICAgICAgdGhlc2UgcHJvcGVydGllcyBhcmUg
bm90IG5lZWRlZCBpbiB0aGlzIHBhdGNoIGJ1dCB3aWxsIGJlIG5lZWRlZAorICAgICAgICBpbiBz
dWJzZXF1ZW50IHBhdGNoZXMgKEknbSBkb2luZyB0aGlzIHRvIGF2b2lkIGhhdmluZyB0byB0cmFj
aworICAgICAgICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBhIHNpbmdsZSBmaWxlKS4KKworICAgICAg
ICBBbHNvLCBjaGFuZ2UgbW9zdCBvZiB0aGUgcG9ydC8qIG1vZHVsZXMgdG8gdXNlIHRoZSBmaWxl
c3lzdGVtCisgICAgICAgIG9iamVjdHMgaW5zdGVhZCBvZiByZWZlcmVuY2luZyB0aGUgZmlsZXN5
c3RlbSBkaXJlY3RseS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9maWxlc3lzdGVtLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9maWxlc3lzdGVtX21vY2sucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5OgorCisy
MDExLTAxLTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAgICAg
IFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCiAKICAgICAgICAgQ2hhbmdlIHdlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3QucHkgdG8gdXNlIHRoZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQppbmRleCA2ZGNmMjA3MjAxNmNjMjdi
MjFiOGMzYjBkNDM1NTYxOWMxODFjNDhlLi5kNzUyNzZlYjNiMzVmYjhhYjllZWI3OTRlMzU5MjM2
M2ZlZjZkNDU5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbS5weQpAQCAtNDQsNiArNDQsMTEgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmpl
Y3QpOgogCiAgICAgVW5sZXNzIG90aGVyd2lzZSBub3RlZCwgYWxsIHBhdGhzIGFyZSBhbGxvd2Vk
IHRvIGJlIGVpdGhlciBhYnNvbHV0ZQogICAgIG9yIHJlbGF0aXZlLiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5zZXAgPSBvcy5zZXAKKworICAgIGRlZiBhYnNwYXRo
KHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKHBhdGgpCiAKICAg
ICBkZWYgYmFzZW5hbWUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIldyYXBzIG9zLnBhdGguYmFz
ZW5hbWUoKS4iIiIKQEAgLTEwMCw2ICsxMDUsMTAgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3Qp
OgogICAgICAgICAiIiJXcmFwcyBnbG9iLmdsb2IoKS4iIiIKICAgICAgICAgcmV0dXJuIGdsb2Iu
Z2xvYihwYXRoKQogCisgICAgZGVmIGlzYWJzKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1
cm4gd2hldGhlciB0aGUgcGF0aCBpcyBhbiBhYnNvbHV0ZSBwYXRoLiIiIgorICAgICAgICByZXR1
cm4gb3MucGF0aC5pc2FicyhwYXRoKQorCiAgICAgZGVmIGlzZmlsZShzZWxmLCBwYXRoKToKICAg
ICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIHBhdGggcmVmZXJzIHRvIGEgZmlsZS4iIiIKICAg
ICAgICAgcmV0dXJuIG9zLnBhdGguaXNmaWxlKHBhdGgpCkBAIC0xNTksNiArMTY4LDkgQEAgY2xh
c3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgIGRlZiBtb3ZlKHNlbGYsIHNyYywgZGVzdCk6CiAg
ICAgICAgIHNodXRpbC5tb3ZlKHNyYywgZGVzdCkKIAorICAgIGRlZiBtdGltZShzZWxmLCBwYXRo
KToKKyAgICAgICAgcmV0dXJuIG9zLnN0YXQocGF0aCkuc3RfbXRpbWUKKwogICAgIGRlZiBub3Jt
cGF0aChzZWxmLCBwYXRoKToKICAgICAgICAgIiIiV3JhcHMgb3MucGF0aC5ub3JtcGF0aCgpLiIi
IgogICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChwYXRoKQpAQCAtMTY5LDYgKzE4MSwx
MyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIGYgPSBvcy5mZG9wZW4odGVt
cF9mZCwgJ3diJykKICAgICAgICAgcmV0dXJuIGYsIHRlbXBfbmFtZQogCisgICAgZGVmIG9wZW5f
dGV4dF9maWxlX2Zvcl93cml0aW5nKHNlbGYsIHBhdGgsIGFwcGVuZD1GYWxzZSk6CisgICAgICAg
ICIiIlJldHVybnMgYSBmaWxlIGhhbmRsZSBzdWl0YWJsZSBmb3Igd3JpdGluZyB0by4iIiIKKyAg
ICAgICAgbW9kZSA9ICd3JworICAgICAgICBpZiBhcHBlbmQ6CisgICAgICAgICAgICBtb2RlID0g
J3dhJworICAgICAgICByZXR1cm4gY29kZWNzLm9wZW4ocGF0aCwgbW9kZSwgJ3V0ZjgnKQorCiAg
ICAgZGVmIHJlYWRfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiB0
aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIHBhdGggYXMgYSBieXRlIHN0cmlu
Zy4iIiIKICAgICAgICAgd2l0aCBmaWxlKHBhdGgsICdyYicpIGFzIGY6CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQpp
bmRleCA4OGMxOGU4Y2E1ODY0M2MxNGRlYzA5MGFmY2JlOGE3YWRmNjkzNmNhLi5iZjczNzkyZmNm
OTZjNmI1NzM4OTY5YWNkNjMyN2M0ZTZjZTJiY2E1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKQEAgLTQzLDcg
KzQzLDkgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgICAgICAgICBu
b3QgZXhpc3QuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmZpbGVzID0gZmlsZXMgb3Ige30K
LSAgICAgICAgc2VsZi5fY3VycmVudF90bXBubyA9IDAKKyAgICAgICAgc2VsZi53cml0dGVuX2Zp
bGVzID0ge30KKyAgICAgICAgc2VsZi5zZXAgPSAnLycKKyAgICAgICAgc2VsZi5jdXJyZW50X3Rt
cG5vID0gMAogCiAgICAgZGVmIF9yYWlzZV9ub3RfZm91bmQoc2VsZiwgcGF0aCk6CiAgICAgICAg
IHJhaXNlIElPRXJyb3IoZXJybm8uRU5PRU5ULCBwYXRoLCBvcy5zdHJlcnJvcihlcnJuby5FTk9F
TlQpKQpAQCAtNTIsNiArNTQsOSBAQCBjbGFzcyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgogICAg
ICAgICBpZHggPSBwYXRoLnJmaW5kKCcvJykKICAgICAgICAgcmV0dXJuIChwYXRoWzA6aWR4XSwg
cGF0aFtpZHggKyAxOl0pCiAKKyAgICBkZWYgYWJzcGF0aChzZWxmLCBwYXRoKToKKyAgICAgICAg
cmV0dXJuIHBhdGgKKwogICAgIGRlZiBiYXNlbmFtZShzZWxmLCBwYXRoKToKICAgICAgICAgcmV0
dXJuIHNlbGYuX3NwbGl0KHBhdGgpWzFdCiAKQEAgLTExMSw2ICsxMTYsOSBAQCBjbGFzcyBNb2Nr
RmlsZVN5c3RlbShvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIFtm
IGZvciBmIGluIHNlbGYuZmlsZXMgaWYgZiA9PSBwYXRoXQogCisgICAgZGVmIGlzYWJzKHNlbGYs
IHBhdGgpOgorICAgICAgICByZXR1cm4gcGF0aC5zdGFydHN3aXRoKCcvJykKKwogICAgIGRlZiBp
c2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBwYXRoIGluIHNlbGYuZmlsZXMgYW5k
IHNlbGYuZmlsZXNbcGF0aF0gaXMgbm90IE5vbmUKIApAQCAtMTE5LDcgKzEyNyw4IEBAIGNsYXNz
IE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAg
ICAgaWYgbm90IHBhdGguZW5kc3dpdGgoJy8nKToKICAgICAgICAgICAgIHBhdGggKz0gJy8nCi0g
ICAgICAgIHJldHVybiBhbnkoZi5zdGFydHN3aXRoKHBhdGgpIGZvciBmIGluIHNlbGYuZmlsZXMp
CisgICAgICAgIGZpbGVzID0gc2VsZi5maWxlcy5rZXlzKClbOl0KKyAgICAgICAgcmV0dXJuIGFu
eShmLnN0YXJ0c3dpdGgocGF0aCkgZm9yIGYgaW4gZmlsZXMpCiAKICAgICBkZWYgam9pbihzZWxm
LCAqY29tcHMpOgogICAgICAgICByZXR1cm4gcmUuc3ViKHJlLmVzY2FwZShvcy5wYXRoLnNlcCks
ICcvJywgb3MucGF0aC5qb2luKCpjb21wcykpCkBAIC0xNDQsNiArMTUzLDExIEBAIGNsYXNzIE1v
Y2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZChy
ZW1haW5pbmcpCiAgICAgICAgIHJldHVybiBkaXJzICsgZmlsZXMKIAorICAgIGRlZiBtdGltZShz
ZWxmLCBwYXRoKToKKyAgICAgICAgaWYgc2VsZi5leGlzdHMocGF0aCk6CisgICAgICAgICAgICBy
ZXR1cm4gMAorICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91bmQocGF0aCkKKwogICAgIGRlZiBf
bWt0ZW1wKHNlbGYsIHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSwgKiprd2FyZ3Mp
OgogICAgICAgICBpZiBkaXIgaXMgTm9uZToKICAgICAgICAgICAgIGRpciA9ICcvX19pbV90bXAn
CkBAIC0xNzAsNyArMTg0LDcgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKIAogICAg
ICAgICAgICAgICAgICMgRklYTUU6IFNob3VsZCB3ZSBkZWxldGUgbm9uLWVtcHR5IGRpcmVjdG9y
aWVzPwogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNlbGYuX2Rp
cmVjdG9yeV9wYXRoKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5ybWRp
cihzZWxmLl9kaXJlY3RvcnlfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5
c3RlbS5ybXRyZWUoc2VsZi5fZGlyZWN0b3J5X3BhdGgpCiAKICAgICAgICAgcmV0dXJuIFRlbXBv
cmFyeURpcmVjdG9yeShmcz1zZWxmLCAqKmt3YXJncykKIApAQCAtMTkxLDYgKzIwNSw5IEBAIGNs
YXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIHBhdGggPSBzZWxmLl9ta3RlbXAo
c3VmZml4KQogICAgICAgICByZXR1cm4gV3JpdGFibGVGaWxlT2JqZWN0KHNlbGYsIHBhdGgpLCBw
YXRoCiAKKyAgICBkZWYgb3Blbl90ZXh0X2ZpbGVfZm9yX3dyaXRpbmcoc2VsZiwgcGF0aCwgYXBw
ZW5kPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIFdyaXRhYmxlRmlsZU9iamVjdChzZWxmLCBwYXRo
LCBhcHBlbmQpCisKICAgICBkZWYgcmVhZF90ZXh0X2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAg
IHJldHVybiBzZWxmLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkKIApAQCAtMjI0LDEyICsyNDEsMTMg
QEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKIAogICAgIGRlZiB3cml0ZV9iaW5hcnlf
ZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CiAgICAgICAgIHNlbGYuZmlsZXNbcGF0aF0gPSBj
b250ZW50cworICAgICAgICBzZWxmLndyaXR0ZW5fZmlsZXNbcGF0aF0gPSBjb250ZW50cwogCiAK
IGNsYXNzIFdyaXRhYmxlRmlsZU9iamVjdChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBmcywgcGF0aCwgYXBwZW5kPUZhbHNlLCBlbmNvZGluZz1Ob25lKToKICAgICAgICAgc2VsZi5m
cyA9IGZzCi0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0
aAogICAgICAgICBzZWxmLmNsb3NlZCA9IEZhbHNlCiAgICAgICAgIGlmIHBhdGggbm90IGluIHNl
bGYuZnMuZmlsZXMgb3Igbm90IGFwcGVuZDoKICAgICAgICAgICAgIHNlbGYuZnMuZmlsZXNbcGF0
aF0gPSAiIgpAQCAtMjQ0LDUgKzI2Miw1IEBAIGNsYXNzIFdyaXRhYmxlRmlsZU9iamVjdChvYmpl
Y3QpOgogICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKIAogICAgIGRlZiB3cml0ZShzZWxmLCBz
dHIpOgotICAgICAgICBzZWxmLmZzLmZpbGVzW3NlbGYubmFtZV0gKz0gc3RyCi0gICAgICAgIHNl
bGYuZnMud3JpdHRlbl9maWxlc1tzZWxmLm5hbWVdID0gc2VsZi5mcy5maWxlc1tzZWxmLm5hbWVd
CisgICAgICAgIHNlbGYuZnMuZmlsZXNbc2VsZi5wYXRoXSArPSBzdHIKKyAgICAgICAgc2VsZi5m
cy53cml0dGVuX2ZpbGVzW3NlbGYucGF0aF0gPSBzZWxmLmZzLmZpbGVzW3NlbGYucGF0aF0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvX19pbml0
X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L19faW5pdF9f
LnB5CmluZGV4IGUzYWQ2ZjQ0YzFkMmYyODBkYzk3MTU1OGFiYzFmY2Q2NDJhNDdjMzYuLjU5YWIy
ZWYxMTEwOWJiYjMwMGYzZGRkNWRiOTFiMjIyYzgzNmM3ZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvX19pbml0X18ucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9fX2luaXRfXy5weQpAQCAtMzAsMyAr
MzAsNSBAQAogIiIiUG9ydC1zcGVjaWZpYyBlbnRyeXBvaW50cyBmb3IgdGhlIGxheW91dCB0ZXN0
cyB0ZXN0IGluZnJhc3RydWN0dXJlLiIiIgogCiBmcm9tIGZhY3RvcnkgaW1wb3J0IGdldAorCitm
cm9tIHRlc3QgaW1wb3J0IHVuaXRfdGVzdF9maWxlc3lzdGVtCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggOTdiNTRjOTdkODFmZmY5
Mzk5OTFlNmFlYjJhMzMzMTYwODg4ODE1Mi4uNzRjMTAxODRjOWQ3MjZlZjcxMzg1NmNiZTdhMGZi
NTFmMzM1OWEzNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weQpAQCAtMjQ0LDcgKzI0NCw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAg
ICAgICAgICAgICAgICB0cmVlKQogICAgICAgICAgICAgcmVzdWx0c19maWxlbmFtZSAtIHJlbGF0
aXZlIHBhdGggZnJvbSB0b3Agb2YgdHJlZSB0byB0aGUgcmVzdWx0cwogICAgICAgICAgICAgICAg
IGZpbGUKLSAgICAgICAgICAgIChvcy5wYXRoLmpvaW4gb2YgdGhlIHR3byBnaXZlcyB5b3UgdGhl
IGZ1bGwgcGF0aCB0byB0aGUgZmlsZSwKKyAgICAgICAgICAgIChwb3J0LmpvaW4oKSBvZiB0aGUg
dHdvIGdpdmVzIHlvdSB0aGUgZnVsbCBwYXRoIHRvIHRoZSBmaWxlLAogICAgICAgICAgICAgICAg
IHVubGVzcyBOb25lIHdhcyByZXR1cm5lZC4pCiAgICAgICAgIFJldHVybiB2YWx1ZXMgd2lsbCBi
ZSBpbiB0aGUgZm9ybWF0IGFwcHJvcHJpYXRlIGZvciB0aGUgY3VycmVudAogICAgICAgICBwbGF0
Zm9ybSAoZS5nLiwgIlxcIiBmb3IgcGF0aCBzZXBhcmF0b3JzIG9uIFdpbmRvd3MpLiBJZiB0aGUg
cmVzdWx0cwpAQCAtMjU1LDcgKzI1NSw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAg
Y29uanVuY3Rpb24gd2l0aCB0aGUgb3RoZXIgYmFzZWxpbmUgYW5kIGZpbGVuYW1lIHJvdXRpbmVz
IHRoYXQgYXJlCiAgICAgICAgIHBsYXRmb3JtIHNwZWNpZmljLgogICAgICAgICAiIiIKLSAgICAg
ICAgdGVzdG5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KHNlbGYucmVsYXRpdmVfdGVzdF9maWxlbmFt
ZShmaWxlbmFtZSkpWzBdCisgICAgICAgIHRlc3RuYW1lID0gc2VsZi5fZmlsZXN5c3RlbS5zcGxp
dGV4dChzZWxmLnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpKVswXQogCiAgICAgICAg
IGJhc2VsaW5lX2ZpbGVuYW1lID0gdGVzdG5hbWUgKyAnLWV4cGVjdGVkJyArIHN1ZmZpeAogCkBA
IC0zNjAsNyArMzYwLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAgICAgIHBy
b3RvY29sID0gImh0dHAiCiAgICAgICAgICAgICByZXR1cm4gIiVzOi8vMTI3LjAuMC4xOiV1LyVz
IiAlIChwcm90b2NvbCwgcG9ydCwgcmVsYXRpdmVfcGF0aCkKIAotICAgICAgICByZXR1cm4gcGF0
aC5hYnNwYXRoX3RvX3VyaShvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpKQorICAgICAgICByZXR1
cm4gcGF0aC5hYnNwYXRoX3RvX3VyaShzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgoZmlsZW5hbWUp
KQogCiAgICAgZGVmIHRlc3RzKHNlbGYsIHBhdGhzKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBs
aXN0IG9mIHRlc3RzIGZvdW5kIChyZWxhdGl2ZSB0byBsYXlvdXRfdGVzdHNfZGlyKCkuIiIiCkBA
IC03MDIsNyArNzAyLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgIGRlZiBwcmV0dHlfcGF0
Y2hfdGV4dChzZWxmLCBkaWZmX3BhdGgpOgogICAgICAgICBpZiBub3Qgc2VsZi5fcHJldHR5X3Bh
dGNoX2F2YWlsYWJsZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcmV0dHlfcGF0Y2hfZXJy
b3JfaHRtbAotICAgICAgICBjb21tYW5kID0gKCJydWJ5IiwgIi1JIiwgb3MucGF0aC5kaXJuYW1l
KHNlbGYuX3ByZXR0eV9wYXRjaF9wYXRoKSwKKyAgICAgICAgY29tbWFuZCA9ICgicnVieSIsICIt
SSIsIHNlbGYuX2ZpbGVzeXN0ZW0uZGlybmFtZShzZWxmLl9wcmV0dHlfcGF0Y2hfcGF0aCksCiAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcHJldHR5X3BhdGNoX3BhdGgsIGRpZmZfcGF0aCkKICAg
ICAgICAgdHJ5OgogICAgICAgICAgICAgIyBEaWZmcyBhcmUgdHJlYXRlZCBhcyBiaW5hcnkgKHdl
IHBhc3MgZGVjb2RlX291dHB1dD1GYWxzZSkgYXMgdGhleQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CmluZGV4
IDhkNTg2ZTM1NGU0MmYwMzkzYzZjOTZmYmJlMTA3NjBiZDM3MTg1ZWUuLjcyZjJkMDVhNDJhZGU5
Y2FjZmM5NzEwODhiMTkzOTcwNThhN2Q1MzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKQEAgLTI3LDcg
KzI3LDYgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKIGlt
cG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC0xOTQsNyArMTkz
LDcgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Zp
bGVuYW1lX3RvX3VyaShzZWxmKToKICAgICAgICAgcG9ydCA9IGJhc2UuUG9ydCgpCiAgICAgICAg
IGxheW91dF90ZXN0X2RpciA9IHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpCi0gICAgICAgIHRlc3Rf
ZmlsZSA9IG9zLnBhdGguam9pbihsYXlvdXRfdGVzdF9kaXIsICJmb28iLCAiYmFyLmh0bWwiKQor
ICAgICAgICB0ZXN0X2ZpbGUgPSBwb3J0Ll9maWxlc3lzdGVtLmpvaW4obGF5b3V0X3Rlc3RfZGly
LCAiZm9vIiwgImJhci5odG1sIikKIAogICAgICAgICAjIE9uIFdpbmRvd3MsIGFic29sdXRlIHBh
dGhzIGFyZSBvZiB0aGUgZm9ybSAiYzpcZm9vLnR4dCIuIEhvd2V2ZXIsCiAgICAgICAgICMgYWxs
IGN1cnJlbnQgYnJvd3NlcnMgKGV4Y2VwdCBmb3IgT3BlcmEpIG5vcm1hbGl6ZSBmaWxlIFVSTHMg
YnkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW0ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtLnB5CmluZGV4IDlhYTA5NDZmODliZWE2MTY1YjMzY2U1NTQzZjU0MjM1MzI0YmIyYjQu
LmVlYmY4NTMwY2UwOWViYjAwYTUyYTJmZTY5MzI3NzVkNjJhNzZlOTUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAt
MjksMTggKzI5LDEyIEBACiAKICIiIkNocm9taXVtIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgUG9y
dCBpbnRlcmZhY2UuIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQK
LQotaW1wb3J0IGNvZGVjcwogaW1wb3J0IGVycm5vCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9z
CiBpbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzaWduYWwKIGltcG9ydCBzdWJwcm9j
ZXNzCiBpbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCiBpbXBvcnQgd2Vi
YnJvd3NlcgogCkBAIC03MSw3ICs2NSw3IEBAIGRlZiBjaGVja19maWxlX2V4aXN0cyhwYXRoX3Rv
X2ZpbGUsIGZpbGVfZGVzY3JpcHRpb24sIG92ZXJyaWRlX3N0ZXA9Tm9uZSwKICAgICAgICAgICAg
IHlvdSdyZSBsb29raW5nIGZvciAoZS5nLiwgIkhUVFAgU2VydmVyIikuIFVzZWQgZm9yIGVycm9y
IGxvZ2dpbmcuCiAgICAgICAgIG92ZXJyaWRlX3N0ZXA6IEFuIG9wdGlvbmFsIHN0cmluZyB0byBi
ZSBsb2dnZWQgaWYgdGhlIGNoZWNrIGZhaWxzLgogICAgICAgICBsb2dnaW5nOiBXaGV0aGVyIG9y
IG5vdCBsb2cgdGhlIGVycm9yIG1lc3NhZ2VzLiIiIgotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0
cyhwYXRoX3RvX2ZpbGUpOgorICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhwYXRo
X3RvX2ZpbGUpOgogICAgICAgICBpZiBsb2dnaW5nOgogICAgICAgICAgICAgX2xvZy5lcnJvcign
VW5hYmxlIHRvIGZpbmQgJXMnICUgZmlsZV9kZXNjcmlwdGlvbikKICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoJyAgICBhdCAlcycgJSBwYXRoX3RvX2ZpbGUpCkBAIC0xNDUsMTMgKzEzOSwxMSBAQCBj
bGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgICAgICAgICBkaWZmX2Zp
bGVuYW1lPU5vbmUpOgogICAgICAgICBleGVjdXRhYmxlID0gc2VsZi5fcGF0aF90b19pbWFnZV9k
aWZmKCkKIAotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCi0gICAgICAgIGV4
cGVjdGVkX2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICJleHBlY3RlZC5wbmciKQot
ICAgICAgICB3aXRoIG9wZW4oZXhwZWN0ZWRfZmlsZW5hbWUsICd3K2InKSBhcyBmaWxlOgotICAg
ICAgICAgICAgZmlsZS53cml0ZShleHBlY3RlZF9jb250ZW50cykKLSAgICAgICAgYWN0dWFsX2Zp
bGVuYW1lID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICJhY3R1YWwucG5nIikKLSAgICAgICAgd2l0
aCBvcGVuKGFjdHVhbF9maWxlbmFtZSwgJ3crYicpIGFzIGZpbGU6Ci0gICAgICAgICAgICBmaWxl
LndyaXRlKGFjdHVhbF9jb250ZW50cykKKyAgICAgICAgdGVtcGRpciA9IHNlbGYuX2ZpbGVzeXN0
ZW0ubWtkdGVtcCgpCisgICAgICAgIGV4cGVjdGVkX2ZpbGVuYW1lID0gc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKHN0cih0ZW1wZGlyKSwgImV4cGVjdGVkLnBuZyIpCisgICAgICAgIHNlbGYuX2ZpbGVz
eXN0ZW0ud3JpdGVfYmluYXJ5X2ZpbGUoZXhwZWN0ZWRfZmlsZW5hbWUsIGV4cGVjdGVkX2NvbnRl
bnRzKQorICAgICAgICBhY3R1YWxfZmlsZW5hbWUgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc3Ry
KHRlbXBkaXIpLCAiYWN0dWFsLnBuZyIpCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVf
YmluYXJ5X2ZpbGUoYWN0dWFsX2ZpbGVuYW1lLCBhY3R1YWxfY29udGVudHMpCiAKICAgICAgICAg
aWYgZGlmZl9maWxlbmFtZToKICAgICAgICAgICAgIGNtZCA9IFtleGVjdXRhYmxlLCAnLS1kaWZm
JywgZXhwZWN0ZWRfZmlsZW5hbWUsCkBAIC0xODAsNyArMTcyLDcgQEAgY2xhc3MgQ2hyb21pdW1Q
b3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNl
IGUKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodGVtcGRpciwg
aWdub3JlX2Vycm9ycz1UcnVlKQorICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5ybXRyZWUo
c3RyKHRlbXBkaXIpKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgZHJpdmVyX25h
bWUoc2VsZik6CkBAIC0xOTIsMTUgKzE4NCwxNSBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Q
b3J0KToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgZnVsbCBwYXRoIHRvIHBhdGggbWFkZSBieSBq
b2luaW5nIHRoZSB0b3Agb2YgdGhlCiAgICAgICAgIENocm9taXVtIHNvdXJjZSB0cmVlIGFuZCB0
aGUgbGlzdCBvZiBwYXRoIGNvbXBvbmVudHMgaW4gfCpjb21wc3wuIiIiCiAgICAgICAgIGlmIG5v
dCBzZWxmLl9jaHJvbWl1bV9iYXNlX2RpcjoKLSAgICAgICAgICAgIGFic3BhdGggPSBvcy5wYXRo
LmFic3BhdGgoX19maWxlX18pCisgICAgICAgICAgICBhYnNwYXRoID0gc2VsZi5fZmlsZXN5c3Rl
bS5hYnNwYXRoKF9fZmlsZV9fKQogICAgICAgICAgICAgb2Zmc2V0ID0gYWJzcGF0aC5maW5kKCd0
aGlyZF9wYXJ0eScpCiAgICAgICAgICAgICBpZiBvZmZzZXQgPT0gLTE6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fY2hyb21pdW1fYmFzZV9kaXIgPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICAg
ICAgc2VsZi5fY2hyb21pdW1fYmFzZV9kaXIgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oCiAgICAg
ICAgICAgICAgICAgICAgIGFic3BhdGhbMDphYnNwYXRoLmZpbmQoJ1Rvb2xzJyldLAogICAgICAg
ICAgICAgICAgICAgICAnV2ViS2l0JywgJ2Nocm9taXVtJykKICAgICAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICAgICAgc2VsZi5fY2hyb21pdW1fYmFzZV9kaXIgPSBhYnNwYXRoWzA6b2Zmc2V0
XQotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuX2Nocm9taXVtX2Jhc2VfZGlyLCAq
Y29tcHMpCisgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fY2hyb21p
dW1fYmFzZV9kaXIsICpjb21wcykKIAogICAgIGRlZiBwYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25z
X2ZpbGUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgn
TGF5b3V0VGVzdHMnLCAncGxhdGZvcm0nLApAQCAtMjE4LDEwICsyMTAsMTAgQEAgY2xhc3MgQ2hy
b21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYpOgogICAg
ICAgICAjIERlbGV0ZSB0aGUgZGlzayBjYWNoZSBpZiBhbnkgdG8gZW5zdXJlIGEgY2xlYW4gdGVz
dCBydW4uCiAgICAgICAgIGR1bXBfcmVuZGVyX3RyZWVfYmluYXJ5X3BhdGggPSBzZWxmLl9wYXRo
X3RvX2RyaXZlcigpCi0gICAgICAgIGNhY2hlZGlyID0gb3MucGF0aC5zcGxpdChkdW1wX3JlbmRl
cl90cmVlX2JpbmFyeV9wYXRoKVswXQotICAgICAgICBjYWNoZWRpciA9IG9zLnBhdGguam9pbihj
YWNoZWRpciwgImNhY2hlIikKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY2FjaGVkaXIpOgot
ICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShjYWNoZWRpcikKKyAgICAgICAgY2FjaGVkaXIgPSBz
ZWxmLl9maWxlc3lzdGVtLmRpcm5hbWUoZHVtcF9yZW5kZXJfdHJlZV9iaW5hcnlfcGF0aCkKKyAg
ICAgICAgY2FjaGVkaXIgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oY2FjaGVkaXIsICJjYWNoZSIp
CisgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKGNhY2hlZGlyKToKKyAgICAgICAg
ICAgIHNlbGYuX2ZpbGVzeXN0ZW0ucm10cmVlKGNhY2hlZGlyKQogCiAgICAgZGVmIGNyZWF0ZV9k
cml2ZXIoc2VsZiwgd29ya2VyX251bWJlcik6CiAgICAgICAgICIiIlN0YXJ0cyBhIG5ldyBEcml2
ZXIgYW5kIHJldHVybnMgYSBoYW5kbGUgdG8gaXQuIiIiCkBAIC0yNTgsOCArMjUwLDcgQEAgY2xh
c3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIEJhc2ljYWxseSB0aGlzIHN0cmlu
ZyBzaG91bGQgY29udGFpbiB0aGUgZXF1aXZhbGVudCBvZiBhCiAgICAgICAgIHRlc3RfZXhwZWN0
YXRpb25zIGZpbGUuIFNlZSB0ZXN0X2V4cGVjdGF0aW9ucy5weSBmb3IgbW9yZSBkZXRhaWxzLiIi
IgogICAgICAgICBleHBlY3RhdGlvbnNfcGF0aCA9IHNlbGYucGF0aF90b190ZXN0X2V4cGVjdGF0
aW9uc19maWxlKCkKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihleHBlY3RhdGlvbnNfcGF0aCwg
InIiLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgcmV0dXJuIGZpbGUucmVhZCgpCisg
ICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKGV4cGVjdGF0aW9u
c19wYXRoKQogCiAgICAgZGVmIHRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcyhzZWxmKToKICAg
ICAgICAgdHJ5OgpAQCAtMjY3LDEwICsyNTgsOSBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Q
b3J0KToKICAgICAgICAgICAgICAgICAnbGF5b3V0X3Rlc3RzJywgJ3Rlc3RfZXhwZWN0YXRpb25z
LnR4dCcpCiAgICAgICAgIGV4Y2VwdCBBc3NlcnRpb25FcnJvcjoKICAgICAgICAgICAgIHJldHVy
biBOb25lCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvdmVycmlkZXNfcGF0aCk6Cisg
ICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhvdmVycmlkZXNfcGF0aCk6CiAg
ICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKG92ZXJyaWRl
c19wYXRoLCAiciIsICJ1dGYtOCIpIGFzIGZpbGU6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZS5y
ZWFkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUob3Zl
cnJpZGVzX3BhdGgpCiAKICAgICBkZWYgc2tpcHBlZF9sYXlvdXRfdGVzdHMoc2VsZiwgZXh0cmFf
dGVzdF9maWxlcz1Ob25lKToKICAgICAgICAgZXhwZWN0YXRpb25zX3N0ciA9IHNlbGYudGVzdF9l
eHBlY3RhdGlvbnMoKQpAQCAtMzE5LDggKzMwOSw4IEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNl
LlBvcnQpOgogICAgICAgICAgICAgICAgIGRlYnVnX3BhdGggPSBzZWxmLl9wYXRoX3RvX2RyaXZl
cignRGVidWcnKQogICAgICAgICAgICAgICAgIHJlbGVhc2VfcGF0aCA9IHNlbGYuX3BhdGhfdG9f
ZHJpdmVyKCdSZWxlYXNlJykKIAotICAgICAgICAgICAgICAgIGRlYnVnX210aW1lID0gb3Muc3Rh
dChkZWJ1Z19wYXRoKS5zdF9tdGltZQotICAgICAgICAgICAgICAgIHJlbGVhc2VfbXRpbWUgPSBv
cy5zdGF0KHJlbGVhc2VfcGF0aCkuc3RfbXRpbWUKKyAgICAgICAgICAgICAgICBkZWJ1Z19tdGlt
ZSA9IHNlbGYuX2ZpbGVzeXN0ZW0ubXRpbWUoZGVidWdfcGF0aCkKKyAgICAgICAgICAgICAgICBy
ZWxlYXNlX210aW1lID0gc2VsZi5fZmlsZXN5c3RlbS5tdGltZShyZWxlYXNlX3BhdGgpCiAKICAg
ICAgICAgICAgICAgICBpZiAoZGVidWdfbXRpbWUgPiByZWxlYXNlX210aW1lIGFuZCBjb25maWd1
cmF0aW9uID09ICdSZWxlYXNlJyBvcgogICAgICAgICAgICAgICAgICAgICByZWxlYXNlX210aW1l
ID4gZGVidWdfbXRpbWUgYW5kIGNvbmZpZ3VyYXRpb24gPT0gJ0RlYnVnJyk6CkBAIC0zNjMsNyAr
MzUzLDcgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICBzZWxm
Ll93b3JrZXJfbnVtYmVyID0gd29ya2VyX251bWJlcgogICAgICAgICBzZWxmLl9pbWFnZV9wYXRo
ID0gTm9uZQogICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3BpeGVsX3Rlc3RzJyk6
Ci0gICAgICAgICAgICBzZWxmLl9pbWFnZV9wYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAg
ICAgc2VsZi5faW1hZ2VfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbigKICAgICAgICAgICAg
ICAgICBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5JyksCiAgICAgICAg
ICAgICAgICAgJ3BuZ19yZXN1bHQlcy5wbmcnICUgc2VsZi5fd29ya2VyX251bWJlcikKIApAQCAt
NDU1LDkgKzQ0NSw4IEBAIGNsYXNzIENocm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICBk
ZWYgX291dHB1dF9pbWFnZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgaW1hZ2Ugb3V0
cHV0IHdoaWNoIGRyaXZlciBnZW5lcmF0ZWQuIiIiCiAgICAgICAgIHBuZ19wYXRoID0gc2VsZi5f
aW1hZ2VfcGF0aAotICAgICAgICBpZiBwbmdfcGF0aCBhbmQgb3MucGF0aC5pc2ZpbGUocG5nX3Bh
dGgpOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBuZ19wYXRoLCAncmInKSBhcyBpbWFnZV9maWxl
OgotICAgICAgICAgICAgICAgIHJldHVybiBpbWFnZV9maWxlLnJlYWQoKQorICAgICAgICBpZiBw
bmdfcGF0aCBhbmQgc2VsZi5fZmlsZXN5c3RlbS5pc2ZpbGUocG5nX3BhdGgpOgorICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShwbmdfcGF0aCkKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0
ZXN0LnB5CmluZGV4IDQzYmZiZDQ4ZTk0Y2VhYTJkMDI3Yzk1NWM0YmMxNTJjMWRkN2IxMzAuLjVh
MDJjYWU0Y2FiMmM1ZDMyZTYxYTdmODgxYmUzMmViZTNhYmQ1MjIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91
bml0dGVzdC5weQpAQCAtMzIsOSArMzIsMTEgQEAgaW1wb3J0IFN0cmluZ0lPCiAKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgbG9ndGVzdGluZwogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmVfbW9jaworZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtIGltcG9ydCBmaWxlc3lzdGVtX21vY2sKIGZyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9j
a3Rvb2wKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiAKKwogaW1w
b3J0IGNocm9taXVtCiBpbXBvcnQgY2hyb21pdW1fbGludXgKIGltcG9ydCBjaHJvbWl1bV9tYWMK
QEAgLTEwMCw3ICsxMDIsOCBAQCBjbGFzcyBDaHJvbWl1bVBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgogICAgICAgICAgICAg
Y2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQuX19pbml0X18oc2VsZiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZT0n
dGVzdC1wb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9b3B0aW9ucywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW09ZmlsZXN5
c3RlbV9tb2NrLk1vY2tGaWxlU3lzdGVtKCkpCiAKICAgICAgICAgZGVmIGRlZmF1bHRfY29uZmln
dXJhdGlvbihzZWxmKToKICAgICAgICAgICAgIHNlbGYuZGVmYXVsdF9jb25maWd1cmF0aW9uX2Nh
bGxlZCA9IFRydWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY29uZmlnLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jb25maWcucHkKaW5kZXggZTA4ZWQ5ZDljMzM3NjgxNmY2N2FkNWZjYjMwNTJlMjNkNTEx
N2U1ZC4uNjAxNjYzOTZhYWIwYTZlYWNmOWE4ZDQ2ZDU2NDE0M2U0MmE5Nzg4NiAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWcucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWcucHkKQEAg
LTMyLDggKzMyLDYgQEAKICMgRklYTUU6IFRoaXMgZmlsZSBuZWVkcyB0byBiZSB1bmlmaWVkIHdp
dGggY29tbW9uL2NoZWNrb3V0L3NjbS5weSBhbmQKICMgY29tbW9uL2NvbmZpZy9wb3J0cy5weSAu
CiAKLWltcG9ydCBvcwotCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3V0
aWxzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZQogCkBAIC0x
MzEsNyArMTI5LDcgQEAgY2xhc3MgQ29uZmlnKG9iamVjdCk6CiAgICAgICAgICMKICAgICAgICAg
IyBUaGlzIGNvZGUgd2lsbCBhbHNvIHdvcmsgaWYgdGhlcmUgaXMgbm8gU0NNIHN5c3RlbSBhdCBh
bGwuCiAgICAgICAgIGlmIG5vdCBzZWxmLl93ZWJraXRfYmFzZV9kaXI6Ci0gICAgICAgICAgICBh
YnNwYXRoID0gb3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKQorICAgICAgICAgICAgYWJzcGF0aCA9
IHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0aChfX2ZpbGVfXykKICAgICAgICAgICAgIHNlbGYuX3dl
YmtpdF9iYXNlX2RpciA9IGFic3BhdGhbMDphYnNwYXRoLmZpbmQoJ1Rvb2xzJykgLSAxXQogICAg
ICAgICByZXR1cm4gc2VsZi5fd2Via2l0X2Jhc2VfZGlyCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQppbmRleCAyYWRjZWMwNzA5OTM0YWUx
YzAxYzBkZjE4N2VlYTFlMDY4ZGYyOTA4Li41ZGY1YzJkOWQ2MjE5YmY5NDY5NDk2ZjI1NzRlNjNj
MTgxMTJhZGU0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC90ZXN0LnB5CkBAIC0xNDYsMTAgKzE0NiwxMCBAQCBMQVlPVVRfVEVTVF9ESVIgPSAnL3Rl
c3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMnCiAjIGluIG9yZGVyIHRvIGZ1bGx5IGNvbnRyb2wgdGhl
IHRlc3Qgb3V0cHV0IGFuZCB0byBkZW1vbnN0cmF0ZSB0aGF0CiAjIHdlIGRvbid0IG5lZWQgYSBy
ZWFsIGZpbGVzeXN0ZW0gdG8gcnVuIHRoZSB0ZXN0cy4KIAotZGVmIHVuaXRfdGVzdF9maWxlc3lz
dGVtKHRlc3RfbGlzdD1Ob25lKToKK2RlZiB1bml0X3Rlc3RfZmlsZXN5c3RlbShmaWxlcz1Ob25l
KToKICAgICAiIiJSZXR1cm4gdGhlIEZpbGVTeXN0ZW0gb2JqZWN0IHVzZWQgYnkgdGhlIHVuaXQg
dGVzdHMuIiIiCi0gICAgdGVzdF9saXN0ID0gdGVzdF9saXN0IG9yIHVuaXRfdGVzdF9saXN0KCkK
LSAgICBmaWxlcyA9IHt9CisgICAgdGVzdF9saXN0ID0gdW5pdF90ZXN0X2xpc3QoKQorICAgIGZp
bGVzID0gZmlsZXMgb3Ige30KIAogICAgIGRlZiBhZGRfZmlsZShmaWxlcywgdGVzdCwgc3VmZml4
LCBjb250ZW50cyk6CiAgICAgICAgIGRpcm5hbWUgPSB0ZXN0Lm5hbWVbMDp0ZXN0Lm5hbWUucmZp
bmQoJy8nKV0KQEAgLTE4NCwxNiArMTg0LDMyIEBAIFdPTlRGSVggU0tJUCA6IGZhaWx1cmVzL2V4
cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBDUkFTSAogV09OVEZJWCBTS0lQIDogZmFpbHVyZXMvZXhw
ZWN0ZWQvZXhjZXB0aW9uLmh0bWwgPSBDUkFTSAogIiIiCiAKLSAgICByZXR1cm4gZmlsZXN5c3Rl
bV9tb2NrLk1vY2tGaWxlU3lzdGVtKGZpbGVzKQorICAgIGZzID0gZmlsZXN5c3RlbV9tb2NrLk1v
Y2tGaWxlU3lzdGVtKGZpbGVzKQorICAgIGZzLl90ZXN0cyA9IHRlc3RfbGlzdAorICAgIHJldHVy
biBmcwogCiAKIGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAgIiIiVGVzdCBpbXBsZW1l
bnRhdGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCiAKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLl90ZXN0cyA9IHVuaXRfdGVzdF9saXN0KCkKLSAg
ICAgICAgaWYgJ2ZpbGVzeXN0ZW0nIG5vdCBpbiBrd2FyZ3M6Ci0gICAgICAgICAgICBrd2FyZ3Nb
J2ZpbGVzeXN0ZW0nXSA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKHNlbGYuX3Rlc3RzKQorICAgICAg
ICAjIEZJWE1FOiB3aGF0IGhhcHBlbnMgaWYgd2UncmUgbm90IHBhc3NlZCBpbiB0aGUgdGVzdCBm
aWxlc3lzdGVtCisgICAgICAgICMgYW5kIHRoZSB0ZXN0cyBkb24ndCBtYXRjaCB3aGF0J3MgaW4g
dGhlIGZpbGVzeXN0ZW0/CisgICAgICAgICMKKyAgICAgICAgIyBXZSdsbCBsZWF2ZSBhcyBpcyBm
b3Igbm93IHRvIGF2b2lkIHVubmVjZXNzYXJ5IGRlcGVuZGVuY2llcyB3aGlsZQorICAgICAgICAj
IGNvbnZlcnRpbmcgYWxsIG9mIHRoZSB1bml0IHRlc3RzIG92ZXIgdG8gdXNpbmcKKyAgICAgICAg
IyB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpLiBJZiB0aGluZ3MgZ2V0IG91dCBvZiBzeW5jIHRoZSB0
ZXN0cyBzaG91bGQKKyAgICAgICAgIyBmYWlsIGluIGZhaXJseSBvYnZpb3VzIHdheXMuIEV2ZW50
dWFsbHkgd2Ugd2FudCB0byBqdXN0IGRvOgorICAgICAgICAjCisgICAgICAgICMgYXNzZXJ0IGt3
YXJnc1snZmlsZXN5c3RlbSddLl90ZXN0cworICAgICAgICAjIHNlbGYuX3Rlc3RzID0ga3dhcmdz
WydmaWxlc3lzdGVtJ10uX3Rlc3RzCisKKyAgICAgICAgaWYgJ2ZpbGVzeXN0ZW0nIG5vdCBpbiBr
d2FyZ3Mgb3Iga3dhcmdzWydmaWxlc3lzdGVtJ10gaXMgTm9uZToKKyAgICAgICAgICAgIGt3YXJn
c1snZmlsZXN5c3RlbSddID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICAgICAgc2Vs
Zi5fdGVzdHMgPSBrd2FyZ3NbJ2ZpbGVzeXN0ZW0nXS5fdGVzdHMKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHNlbGYuX3Rlc3RzID0gdW5pdF90ZXN0X2xpc3QoKQorCiAgICAgICAgIGt3YXJn
cy5zZXRkZWZhdWx0KCdwb3J0X25hbWUnLCAndGVzdCcpCiAgICAgICAgIGJhc2UuUG9ydC5fX2lu
aXRfXyhzZWxmLCAqKmt3YXJncykKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5CmluZGV4
IGVhYmRmZDljMmIwYmUwMDhkZTRiOGJjNzY2MTJmN2Q3NWZmZTM1MDUuLmE2ODk1MGE5MWMzNWVi
NjlkMmJhYjUxZGJhMjA1NmMxOTMyYWJiMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3Qu
cHkKQEAgLTI2LDcgKzI2LDYgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWlt
cG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCBiYXNlCkBAIC0zNyw4ICszNiw4IEBA
IGNsYXNzIFRlc3RGaWxlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Zp
bmRfbm9fcGF0aHNfc3BlY2lmaWVkKHNlbGYpOgogICAgICAgICBwb3J0ID0gYmFzZS5Qb3J0KCkK
ICAgICAgICAgbGF5b3V0X3Rlc3RzX2RpciA9IHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpCi0gICAg
ICAgIHBvcnQubGF5b3V0X3Rlc3RzX2RpciA9IGxhbWJkYTogb3MucGF0aC5qb2luKGxheW91dF90
ZXN0c19kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdmYXN0JywgJ2h0bWwnKQorICAgICAgICBwb3J0LmxheW91dF90ZXN0c19kaXIgPSBs
YW1iZGE6IHBvcnQuX2ZpbGVzeXN0ZW0uam9pbihsYXlvdXRfdGVzdHNfZGlyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFz
dCcsICdodG1sJykKICAgICAgICAgdGVzdHMgPSB0ZXN0X2ZpbGVzLmZpbmQocG9ydCwgW10pCiAg
ICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodGVzdHMsIDApCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79489</attachid>
            <date>2011-01-19 14:42:02 -0800</date>
            <delta_ts>2011-01-19 14:51:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52748-20110119144201.patch</filename>
            <type>text/plain</type>
            <size>22953</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxOGMz
M2NmOWRiZTk1NDQ0YzUxMzFiNzM2ZDgyNjA5Njg1YjUyMTRkLi5lZmJiOWI1YTY4YTI3MjE2NTFk
Zjc4ZDNlZTY3NzNjOGQyZTExZTZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAKIDIwMTEtMDEtMTkgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgYWRkIGEgLnNlcCBwcm9wZXJ0eSwgYWJzcGF0aCgpLCBpc2Ficygp
LCBtdGltZSgpLCBhbmQKKyAgICAgICAgb3Blbl90ZXh0X2ZpbGVfZm9yX3dyaXRpbmcoKSB0byBm
aWxlc3lzdGVtIG1vZHVsZXMuIFNvbWUgb2YKKyAgICAgICAgdGhlc2UgcHJvcGVydGllcyBhcmUg
bm90IG5lZWRlZCBpbiB0aGlzIHBhdGNoIGJ1dCB3aWxsIGJlIG5lZWRlZAorICAgICAgICBpbiBz
dWJzZXF1ZW50IHBhdGNoZXMgKEknbSBkb2luZyB0aGlzIHRvIGF2b2lkIGhhdmluZyB0byB0cmFj
aworICAgICAgICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBhIHNpbmdsZSBmaWxlKS4KKworICAgICAg
ICBBbHNvLCBjaGFuZ2UgbW9zdCBvZiB0aGUgcG9ydC8qIG1vZHVsZXMgdG8gdXNlIHRoZSBmaWxl
c3lzdGVtCisgICAgICAgIG9iamVjdHMgaW5zdGVhZCBvZiByZWZlcmVuY2luZyB0aGUgZmlsZXN5
c3RlbSBkaXJlY3RseS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTI3NDgKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9maWxlc3lzdGVtLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9maWxlc3lzdGVtX21vY2sucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5OgorCisy
MDExLTAxLTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAgICAg
IFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCiAKICAgICAgICAgQ2hhbmdlIHdlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3QucHkgdG8gdXNlIHRoZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQppbmRleCA2ZGNmMjA3MjAxNmNjMjdi
MjFiOGMzYjBkNDM1NTYxOWMxODFjNDhlLi5kNzUyNzZlYjNiMzVmYjhhYjllZWI3OTRlMzU5MjM2
M2ZlZjZkNDU5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbS5weQpAQCAtNDQsNiArNDQsMTEgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmpl
Y3QpOgogCiAgICAgVW5sZXNzIG90aGVyd2lzZSBub3RlZCwgYWxsIHBhdGhzIGFyZSBhbGxvd2Vk
IHRvIGJlIGVpdGhlciBhYnNvbHV0ZQogICAgIG9yIHJlbGF0aXZlLiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5zZXAgPSBvcy5zZXAKKworICAgIGRlZiBhYnNwYXRo
KHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKHBhdGgpCiAKICAg
ICBkZWYgYmFzZW5hbWUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIldyYXBzIG9zLnBhdGguYmFz
ZW5hbWUoKS4iIiIKQEAgLTEwMCw2ICsxMDUsMTAgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3Qp
OgogICAgICAgICAiIiJXcmFwcyBnbG9iLmdsb2IoKS4iIiIKICAgICAgICAgcmV0dXJuIGdsb2Iu
Z2xvYihwYXRoKQogCisgICAgZGVmIGlzYWJzKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1
cm4gd2hldGhlciB0aGUgcGF0aCBpcyBhbiBhYnNvbHV0ZSBwYXRoLiIiIgorICAgICAgICByZXR1
cm4gb3MucGF0aC5pc2FicyhwYXRoKQorCiAgICAgZGVmIGlzZmlsZShzZWxmLCBwYXRoKToKICAg
ICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIHBhdGggcmVmZXJzIHRvIGEgZmlsZS4iIiIKICAg
ICAgICAgcmV0dXJuIG9zLnBhdGguaXNmaWxlKHBhdGgpCkBAIC0xNTksNiArMTY4LDkgQEAgY2xh
c3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgIGRlZiBtb3ZlKHNlbGYsIHNyYywgZGVzdCk6CiAg
ICAgICAgIHNodXRpbC5tb3ZlKHNyYywgZGVzdCkKIAorICAgIGRlZiBtdGltZShzZWxmLCBwYXRo
KToKKyAgICAgICAgcmV0dXJuIG9zLnN0YXQocGF0aCkuc3RfbXRpbWUKKwogICAgIGRlZiBub3Jt
cGF0aChzZWxmLCBwYXRoKToKICAgICAgICAgIiIiV3JhcHMgb3MucGF0aC5ub3JtcGF0aCgpLiIi
IgogICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChwYXRoKQpAQCAtMTY5LDYgKzE4MSwx
MyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIGYgPSBvcy5mZG9wZW4odGVt
cF9mZCwgJ3diJykKICAgICAgICAgcmV0dXJuIGYsIHRlbXBfbmFtZQogCisgICAgZGVmIG9wZW5f
dGV4dF9maWxlX2Zvcl93cml0aW5nKHNlbGYsIHBhdGgsIGFwcGVuZD1GYWxzZSk6CisgICAgICAg
ICIiIlJldHVybnMgYSBmaWxlIGhhbmRsZSBzdWl0YWJsZSBmb3Igd3JpdGluZyB0by4iIiIKKyAg
ICAgICAgbW9kZSA9ICd3JworICAgICAgICBpZiBhcHBlbmQ6CisgICAgICAgICAgICBtb2RlID0g
J3dhJworICAgICAgICByZXR1cm4gY29kZWNzLm9wZW4ocGF0aCwgbW9kZSwgJ3V0ZjgnKQorCiAg
ICAgZGVmIHJlYWRfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiB0
aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIHBhdGggYXMgYSBieXRlIHN0cmlu
Zy4iIiIKICAgICAgICAgd2l0aCBmaWxlKHBhdGgsICdyYicpIGFzIGY6CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQpp
bmRleCA4OGMxOGU4Y2E1ODY0M2MxNGRlYzA5MGFmY2JlOGE3YWRmNjkzNmNhLi5iZjczNzkyZmNm
OTZjNmI1NzM4OTY5YWNkNjMyN2M0ZTZjZTJiY2E1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKQEAgLTQzLDcg
KzQzLDkgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgICAgICAgICBu
b3QgZXhpc3QuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmZpbGVzID0gZmlsZXMgb3Ige30K
LSAgICAgICAgc2VsZi5fY3VycmVudF90bXBubyA9IDAKKyAgICAgICAgc2VsZi53cml0dGVuX2Zp
bGVzID0ge30KKyAgICAgICAgc2VsZi5zZXAgPSAnLycKKyAgICAgICAgc2VsZi5jdXJyZW50X3Rt
cG5vID0gMAogCiAgICAgZGVmIF9yYWlzZV9ub3RfZm91bmQoc2VsZiwgcGF0aCk6CiAgICAgICAg
IHJhaXNlIElPRXJyb3IoZXJybm8uRU5PRU5ULCBwYXRoLCBvcy5zdHJlcnJvcihlcnJuby5FTk9F
TlQpKQpAQCAtNTIsNiArNTQsOSBAQCBjbGFzcyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgogICAg
ICAgICBpZHggPSBwYXRoLnJmaW5kKCcvJykKICAgICAgICAgcmV0dXJuIChwYXRoWzA6aWR4XSwg
cGF0aFtpZHggKyAxOl0pCiAKKyAgICBkZWYgYWJzcGF0aChzZWxmLCBwYXRoKToKKyAgICAgICAg
cmV0dXJuIHBhdGgKKwogICAgIGRlZiBiYXNlbmFtZShzZWxmLCBwYXRoKToKICAgICAgICAgcmV0
dXJuIHNlbGYuX3NwbGl0KHBhdGgpWzFdCiAKQEAgLTExMSw2ICsxMTYsOSBAQCBjbGFzcyBNb2Nr
RmlsZVN5c3RlbShvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIFtm
IGZvciBmIGluIHNlbGYuZmlsZXMgaWYgZiA9PSBwYXRoXQogCisgICAgZGVmIGlzYWJzKHNlbGYs
IHBhdGgpOgorICAgICAgICByZXR1cm4gcGF0aC5zdGFydHN3aXRoKCcvJykKKwogICAgIGRlZiBp
c2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBwYXRoIGluIHNlbGYuZmlsZXMgYW5k
IHNlbGYuZmlsZXNbcGF0aF0gaXMgbm90IE5vbmUKIApAQCAtMTE5LDcgKzEyNyw4IEBAIGNsYXNz
IE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAg
ICAgaWYgbm90IHBhdGguZW5kc3dpdGgoJy8nKToKICAgICAgICAgICAgIHBhdGggKz0gJy8nCi0g
ICAgICAgIHJldHVybiBhbnkoZi5zdGFydHN3aXRoKHBhdGgpIGZvciBmIGluIHNlbGYuZmlsZXMp
CisgICAgICAgIGZpbGVzID0gc2VsZi5maWxlcy5rZXlzKClbOl0KKyAgICAgICAgcmV0dXJuIGFu
eShmLnN0YXJ0c3dpdGgocGF0aCkgZm9yIGYgaW4gZmlsZXMpCiAKICAgICBkZWYgam9pbihzZWxm
LCAqY29tcHMpOgogICAgICAgICByZXR1cm4gcmUuc3ViKHJlLmVzY2FwZShvcy5wYXRoLnNlcCks
ICcvJywgb3MucGF0aC5qb2luKCpjb21wcykpCkBAIC0xNDQsNiArMTUzLDExIEBAIGNsYXNzIE1v
Y2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZChy
ZW1haW5pbmcpCiAgICAgICAgIHJldHVybiBkaXJzICsgZmlsZXMKIAorICAgIGRlZiBtdGltZShz
ZWxmLCBwYXRoKToKKyAgICAgICAgaWYgc2VsZi5leGlzdHMocGF0aCk6CisgICAgICAgICAgICBy
ZXR1cm4gMAorICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91bmQocGF0aCkKKwogICAgIGRlZiBf
bWt0ZW1wKHNlbGYsIHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSwgKiprd2FyZ3Mp
OgogICAgICAgICBpZiBkaXIgaXMgTm9uZToKICAgICAgICAgICAgIGRpciA9ICcvX19pbV90bXAn
CkBAIC0xNzAsNyArMTg0LDcgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKIAogICAg
ICAgICAgICAgICAgICMgRklYTUU6IFNob3VsZCB3ZSBkZWxldGUgbm9uLWVtcHR5IGRpcmVjdG9y
aWVzPwogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNlbGYuX2Rp
cmVjdG9yeV9wYXRoKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5ybWRp
cihzZWxmLl9kaXJlY3RvcnlfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5
c3RlbS5ybXRyZWUoc2VsZi5fZGlyZWN0b3J5X3BhdGgpCiAKICAgICAgICAgcmV0dXJuIFRlbXBv
cmFyeURpcmVjdG9yeShmcz1zZWxmLCAqKmt3YXJncykKIApAQCAtMTkxLDYgKzIwNSw5IEBAIGNs
YXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIHBhdGggPSBzZWxmLl9ta3RlbXAo
c3VmZml4KQogICAgICAgICByZXR1cm4gV3JpdGFibGVGaWxlT2JqZWN0KHNlbGYsIHBhdGgpLCBw
YXRoCiAKKyAgICBkZWYgb3Blbl90ZXh0X2ZpbGVfZm9yX3dyaXRpbmcoc2VsZiwgcGF0aCwgYXBw
ZW5kPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIFdyaXRhYmxlRmlsZU9iamVjdChzZWxmLCBwYXRo
LCBhcHBlbmQpCisKICAgICBkZWYgcmVhZF90ZXh0X2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAg
IHJldHVybiBzZWxmLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkKIApAQCAtMjI0LDEyICsyNDEsMTMg
QEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKIAogICAgIGRlZiB3cml0ZV9iaW5hcnlf
ZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CiAgICAgICAgIHNlbGYuZmlsZXNbcGF0aF0gPSBj
b250ZW50cworICAgICAgICBzZWxmLndyaXR0ZW5fZmlsZXNbcGF0aF0gPSBjb250ZW50cwogCiAK
IGNsYXNzIFdyaXRhYmxlRmlsZU9iamVjdChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBmcywgcGF0aCwgYXBwZW5kPUZhbHNlLCBlbmNvZGluZz1Ob25lKToKICAgICAgICAgc2VsZi5m
cyA9IGZzCi0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0
aAogICAgICAgICBzZWxmLmNsb3NlZCA9IEZhbHNlCiAgICAgICAgIGlmIHBhdGggbm90IGluIHNl
bGYuZnMuZmlsZXMgb3Igbm90IGFwcGVuZDoKICAgICAgICAgICAgIHNlbGYuZnMuZmlsZXNbcGF0
aF0gPSAiIgpAQCAtMjQ0LDUgKzI2Miw1IEBAIGNsYXNzIFdyaXRhYmxlRmlsZU9iamVjdChvYmpl
Y3QpOgogICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKIAogICAgIGRlZiB3cml0ZShzZWxmLCBz
dHIpOgotICAgICAgICBzZWxmLmZzLmZpbGVzW3NlbGYubmFtZV0gKz0gc3RyCi0gICAgICAgIHNl
bGYuZnMud3JpdHRlbl9maWxlc1tzZWxmLm5hbWVdID0gc2VsZi5mcy5maWxlc1tzZWxmLm5hbWVd
CisgICAgICAgIHNlbGYuZnMuZmlsZXNbc2VsZi5wYXRoXSArPSBzdHIKKyAgICAgICAgc2VsZi5m
cy53cml0dGVuX2ZpbGVzW3NlbGYucGF0aF0gPSBzZWxmLmZzLmZpbGVzW3NlbGYucGF0aF0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvX19pbml0
X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L19faW5pdF9f
LnB5CmluZGV4IGUzYWQ2ZjQ0YzFkMmYyODBkYzk3MTU1OGFiYzFmY2Q2NDJhNDdjMzYuLjU5YWIy
ZWYxMTEwOWJiYjMwMGYzZGRkNWRiOTFiMjIyYzgzNmM3ZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvX19pbml0X18ucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9fX2luaXRfXy5weQpAQCAtMzAsMyAr
MzAsNSBAQAogIiIiUG9ydC1zcGVjaWZpYyBlbnRyeXBvaW50cyBmb3IgdGhlIGxheW91dCB0ZXN0
cyB0ZXN0IGluZnJhc3RydWN0dXJlLiIiIgogCiBmcm9tIGZhY3RvcnkgaW1wb3J0IGdldAorCitm
cm9tIHRlc3QgaW1wb3J0IHVuaXRfdGVzdF9maWxlc3lzdGVtCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggOTdiNTRjOTdkODFmZmY5
Mzk5OTFlNmFlYjJhMzMzMTYwODg4ODE1Mi4uNzRjMTAxODRjOWQ3MjZlZjcxMzg1NmNiZTdhMGZi
NTFmMzM1OWEzNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weQpAQCAtMjQ0LDcgKzI0NCw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAg
ICAgICAgICAgICAgICB0cmVlKQogICAgICAgICAgICAgcmVzdWx0c19maWxlbmFtZSAtIHJlbGF0
aXZlIHBhdGggZnJvbSB0b3Agb2YgdHJlZSB0byB0aGUgcmVzdWx0cwogICAgICAgICAgICAgICAg
IGZpbGUKLSAgICAgICAgICAgIChvcy5wYXRoLmpvaW4gb2YgdGhlIHR3byBnaXZlcyB5b3UgdGhl
IGZ1bGwgcGF0aCB0byB0aGUgZmlsZSwKKyAgICAgICAgICAgIChwb3J0LmpvaW4oKSBvZiB0aGUg
dHdvIGdpdmVzIHlvdSB0aGUgZnVsbCBwYXRoIHRvIHRoZSBmaWxlLAogICAgICAgICAgICAgICAg
IHVubGVzcyBOb25lIHdhcyByZXR1cm5lZC4pCiAgICAgICAgIFJldHVybiB2YWx1ZXMgd2lsbCBi
ZSBpbiB0aGUgZm9ybWF0IGFwcHJvcHJpYXRlIGZvciB0aGUgY3VycmVudAogICAgICAgICBwbGF0
Zm9ybSAoZS5nLiwgIlxcIiBmb3IgcGF0aCBzZXBhcmF0b3JzIG9uIFdpbmRvd3MpLiBJZiB0aGUg
cmVzdWx0cwpAQCAtMjU1LDcgKzI1NSw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAg
Y29uanVuY3Rpb24gd2l0aCB0aGUgb3RoZXIgYmFzZWxpbmUgYW5kIGZpbGVuYW1lIHJvdXRpbmVz
IHRoYXQgYXJlCiAgICAgICAgIHBsYXRmb3JtIHNwZWNpZmljLgogICAgICAgICAiIiIKLSAgICAg
ICAgdGVzdG5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KHNlbGYucmVsYXRpdmVfdGVzdF9maWxlbmFt
ZShmaWxlbmFtZSkpWzBdCisgICAgICAgIHRlc3RuYW1lID0gc2VsZi5fZmlsZXN5c3RlbS5zcGxp
dGV4dChzZWxmLnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpKVswXQogCiAgICAgICAg
IGJhc2VsaW5lX2ZpbGVuYW1lID0gdGVzdG5hbWUgKyAnLWV4cGVjdGVkJyArIHN1ZmZpeAogCkBA
IC0zNjAsNyArMzYwLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAgICAgIHBy
b3RvY29sID0gImh0dHAiCiAgICAgICAgICAgICByZXR1cm4gIiVzOi8vMTI3LjAuMC4xOiV1LyVz
IiAlIChwcm90b2NvbCwgcG9ydCwgcmVsYXRpdmVfcGF0aCkKIAotICAgICAgICByZXR1cm4gcGF0
aC5hYnNwYXRoX3RvX3VyaShvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpKQorICAgICAgICByZXR1
cm4gcGF0aC5hYnNwYXRoX3RvX3VyaShzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgoZmlsZW5hbWUp
KQogCiAgICAgZGVmIHRlc3RzKHNlbGYsIHBhdGhzKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBs
aXN0IG9mIHRlc3RzIGZvdW5kIChyZWxhdGl2ZSB0byBsYXlvdXRfdGVzdHNfZGlyKCkuIiIiCkBA
IC03MDIsNyArNzAyLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgIGRlZiBwcmV0dHlfcGF0
Y2hfdGV4dChzZWxmLCBkaWZmX3BhdGgpOgogICAgICAgICBpZiBub3Qgc2VsZi5fcHJldHR5X3Bh
dGNoX2F2YWlsYWJsZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcmV0dHlfcGF0Y2hfZXJy
b3JfaHRtbAotICAgICAgICBjb21tYW5kID0gKCJydWJ5IiwgIi1JIiwgb3MucGF0aC5kaXJuYW1l
KHNlbGYuX3ByZXR0eV9wYXRjaF9wYXRoKSwKKyAgICAgICAgY29tbWFuZCA9ICgicnVieSIsICIt
SSIsIHNlbGYuX2ZpbGVzeXN0ZW0uZGlybmFtZShzZWxmLl9wcmV0dHlfcGF0Y2hfcGF0aCksCiAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcHJldHR5X3BhdGNoX3BhdGgsIGRpZmZfcGF0aCkKICAg
ICAgICAgdHJ5OgogICAgICAgICAgICAgIyBEaWZmcyBhcmUgdHJlYXRlZCBhcyBiaW5hcnkgKHdl
IHBhc3MgZGVjb2RlX291dHB1dD1GYWxzZSkgYXMgdGhleQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CmluZGV4
IDhkNTg2ZTM1NGU0MmYwMzkzYzZjOTZmYmJlMTA3NjBiZDM3MTg1ZWUuLjcyZjJkMDVhNDJhZGU5
Y2FjZmM5NzEwODhiMTkzOTcwNThhN2Q1MzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKQEAgLTI3LDcg
KzI3LDYgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKIGlt
cG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC0xOTQsNyArMTkz
LDcgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Zp
bGVuYW1lX3RvX3VyaShzZWxmKToKICAgICAgICAgcG9ydCA9IGJhc2UuUG9ydCgpCiAgICAgICAg
IGxheW91dF90ZXN0X2RpciA9IHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpCi0gICAgICAgIHRlc3Rf
ZmlsZSA9IG9zLnBhdGguam9pbihsYXlvdXRfdGVzdF9kaXIsICJmb28iLCAiYmFyLmh0bWwiKQor
ICAgICAgICB0ZXN0X2ZpbGUgPSBwb3J0Ll9maWxlc3lzdGVtLmpvaW4obGF5b3V0X3Rlc3RfZGly
LCAiZm9vIiwgImJhci5odG1sIikKIAogICAgICAgICAjIE9uIFdpbmRvd3MsIGFic29sdXRlIHBh
dGhzIGFyZSBvZiB0aGUgZm9ybSAiYzpcZm9vLnR4dCIuIEhvd2V2ZXIsCiAgICAgICAgICMgYWxs
IGN1cnJlbnQgYnJvd3NlcnMgKGV4Y2VwdCBmb3IgT3BlcmEpIG5vcm1hbGl6ZSBmaWxlIFVSTHMg
YnkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW0ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtLnB5CmluZGV4IDlhYTA5NDZmODliZWE2MTY1YjMzY2U1NTQzZjU0MjM1MzI0YmIyYjQu
LmVlYmY4NTMwY2UwOWViYjAwYTUyYTJmZTY5MzI3NzVkNjJhNzZlOTUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAt
MjksMTggKzI5LDEyIEBACiAKICIiIkNocm9taXVtIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgUG9y
dCBpbnRlcmZhY2UuIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQK
LQotaW1wb3J0IGNvZGVjcwogaW1wb3J0IGVycm5vCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9z
CiBpbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzaWduYWwKIGltcG9ydCBzdWJwcm9j
ZXNzCiBpbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCiBpbXBvcnQgd2Vi
YnJvd3NlcgogCkBAIC03MSw3ICs2NSw3IEBAIGRlZiBjaGVja19maWxlX2V4aXN0cyhwYXRoX3Rv
X2ZpbGUsIGZpbGVfZGVzY3JpcHRpb24sIG92ZXJyaWRlX3N0ZXA9Tm9uZSwKICAgICAgICAgICAg
IHlvdSdyZSBsb29raW5nIGZvciAoZS5nLiwgIkhUVFAgU2VydmVyIikuIFVzZWQgZm9yIGVycm9y
IGxvZ2dpbmcuCiAgICAgICAgIG92ZXJyaWRlX3N0ZXA6IEFuIG9wdGlvbmFsIHN0cmluZyB0byBi
ZSBsb2dnZWQgaWYgdGhlIGNoZWNrIGZhaWxzLgogICAgICAgICBsb2dnaW5nOiBXaGV0aGVyIG9y
IG5vdCBsb2cgdGhlIGVycm9yIG1lc3NhZ2VzLiIiIgotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0
cyhwYXRoX3RvX2ZpbGUpOgorICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhwYXRo
X3RvX2ZpbGUpOgogICAgICAgICBpZiBsb2dnaW5nOgogICAgICAgICAgICAgX2xvZy5lcnJvcign
VW5hYmxlIHRvIGZpbmQgJXMnICUgZmlsZV9kZXNjcmlwdGlvbikKICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoJyAgICBhdCAlcycgJSBwYXRoX3RvX2ZpbGUpCkBAIC0xNDUsMTMgKzEzOSwxMSBAQCBj
bGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgICAgICAgICBkaWZmX2Zp
bGVuYW1lPU5vbmUpOgogICAgICAgICBleGVjdXRhYmxlID0gc2VsZi5fcGF0aF90b19pbWFnZV9k
aWZmKCkKIAotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCi0gICAgICAgIGV4
cGVjdGVkX2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICJleHBlY3RlZC5wbmciKQot
ICAgICAgICB3aXRoIG9wZW4oZXhwZWN0ZWRfZmlsZW5hbWUsICd3K2InKSBhcyBmaWxlOgotICAg
ICAgICAgICAgZmlsZS53cml0ZShleHBlY3RlZF9jb250ZW50cykKLSAgICAgICAgYWN0dWFsX2Zp
bGVuYW1lID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICJhY3R1YWwucG5nIikKLSAgICAgICAgd2l0
aCBvcGVuKGFjdHVhbF9maWxlbmFtZSwgJ3crYicpIGFzIGZpbGU6Ci0gICAgICAgICAgICBmaWxl
LndyaXRlKGFjdHVhbF9jb250ZW50cykKKyAgICAgICAgdGVtcGRpciA9IHNlbGYuX2ZpbGVzeXN0
ZW0ubWtkdGVtcCgpCisgICAgICAgIGV4cGVjdGVkX2ZpbGVuYW1lID0gc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKHN0cih0ZW1wZGlyKSwgImV4cGVjdGVkLnBuZyIpCisgICAgICAgIHNlbGYuX2ZpbGVz
eXN0ZW0ud3JpdGVfYmluYXJ5X2ZpbGUoZXhwZWN0ZWRfZmlsZW5hbWUsIGV4cGVjdGVkX2NvbnRl
bnRzKQorICAgICAgICBhY3R1YWxfZmlsZW5hbWUgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc3Ry
KHRlbXBkaXIpLCAiYWN0dWFsLnBuZyIpCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVf
YmluYXJ5X2ZpbGUoYWN0dWFsX2ZpbGVuYW1lLCBhY3R1YWxfY29udGVudHMpCiAKICAgICAgICAg
aWYgZGlmZl9maWxlbmFtZToKICAgICAgICAgICAgIGNtZCA9IFtleGVjdXRhYmxlLCAnLS1kaWZm
JywgZXhwZWN0ZWRfZmlsZW5hbWUsCkBAIC0xODAsNyArMTcyLDcgQEAgY2xhc3MgQ2hyb21pdW1Q
b3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNl
IGUKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodGVtcGRpciwg
aWdub3JlX2Vycm9ycz1UcnVlKQorICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5ybXRyZWUo
c3RyKHRlbXBkaXIpKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgZHJpdmVyX25h
bWUoc2VsZik6CkBAIC0xOTIsMTUgKzE4NCwxNSBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Q
b3J0KToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgZnVsbCBwYXRoIHRvIHBhdGggbWFkZSBieSBq
b2luaW5nIHRoZSB0b3Agb2YgdGhlCiAgICAgICAgIENocm9taXVtIHNvdXJjZSB0cmVlIGFuZCB0
aGUgbGlzdCBvZiBwYXRoIGNvbXBvbmVudHMgaW4gfCpjb21wc3wuIiIiCiAgICAgICAgIGlmIG5v
dCBzZWxmLl9jaHJvbWl1bV9iYXNlX2RpcjoKLSAgICAgICAgICAgIGFic3BhdGggPSBvcy5wYXRo
LmFic3BhdGgoX19maWxlX18pCisgICAgICAgICAgICBhYnNwYXRoID0gc2VsZi5fZmlsZXN5c3Rl
bS5hYnNwYXRoKF9fZmlsZV9fKQogICAgICAgICAgICAgb2Zmc2V0ID0gYWJzcGF0aC5maW5kKCd0
aGlyZF9wYXJ0eScpCiAgICAgICAgICAgICBpZiBvZmZzZXQgPT0gLTE6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fY2hyb21pdW1fYmFzZV9kaXIgPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICAg
ICAgc2VsZi5fY2hyb21pdW1fYmFzZV9kaXIgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oCiAgICAg
ICAgICAgICAgICAgICAgIGFic3BhdGhbMDphYnNwYXRoLmZpbmQoJ1Rvb2xzJyldLAogICAgICAg
ICAgICAgICAgICAgICAnV2ViS2l0JywgJ2Nocm9taXVtJykKICAgICAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICAgICAgc2VsZi5fY2hyb21pdW1fYmFzZV9kaXIgPSBhYnNwYXRoWzA6b2Zmc2V0
XQotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuX2Nocm9taXVtX2Jhc2VfZGlyLCAq
Y29tcHMpCisgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fY2hyb21p
dW1fYmFzZV9kaXIsICpjb21wcykKIAogICAgIGRlZiBwYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25z
X2ZpbGUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgn
TGF5b3V0VGVzdHMnLCAncGxhdGZvcm0nLApAQCAtMjE4LDEwICsyMTAsMTAgQEAgY2xhc3MgQ2hy
b21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYpOgogICAg
ICAgICAjIERlbGV0ZSB0aGUgZGlzayBjYWNoZSBpZiBhbnkgdG8gZW5zdXJlIGEgY2xlYW4gdGVz
dCBydW4uCiAgICAgICAgIGR1bXBfcmVuZGVyX3RyZWVfYmluYXJ5X3BhdGggPSBzZWxmLl9wYXRo
X3RvX2RyaXZlcigpCi0gICAgICAgIGNhY2hlZGlyID0gb3MucGF0aC5zcGxpdChkdW1wX3JlbmRl
cl90cmVlX2JpbmFyeV9wYXRoKVswXQotICAgICAgICBjYWNoZWRpciA9IG9zLnBhdGguam9pbihj
YWNoZWRpciwgImNhY2hlIikKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY2FjaGVkaXIpOgot
ICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShjYWNoZWRpcikKKyAgICAgICAgY2FjaGVkaXIgPSBz
ZWxmLl9maWxlc3lzdGVtLmRpcm5hbWUoZHVtcF9yZW5kZXJfdHJlZV9iaW5hcnlfcGF0aCkKKyAg
ICAgICAgY2FjaGVkaXIgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oY2FjaGVkaXIsICJjYWNoZSIp
CisgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKGNhY2hlZGlyKToKKyAgICAgICAg
ICAgIHNlbGYuX2ZpbGVzeXN0ZW0ucm10cmVlKGNhY2hlZGlyKQogCiAgICAgZGVmIGNyZWF0ZV9k
cml2ZXIoc2VsZiwgd29ya2VyX251bWJlcik6CiAgICAgICAgICIiIlN0YXJ0cyBhIG5ldyBEcml2
ZXIgYW5kIHJldHVybnMgYSBoYW5kbGUgdG8gaXQuIiIiCkBAIC0yNTgsOCArMjUwLDcgQEAgY2xh
c3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIEJhc2ljYWxseSB0aGlzIHN0cmlu
ZyBzaG91bGQgY29udGFpbiB0aGUgZXF1aXZhbGVudCBvZiBhCiAgICAgICAgIHRlc3RfZXhwZWN0
YXRpb25zIGZpbGUuIFNlZSB0ZXN0X2V4cGVjdGF0aW9ucy5weSBmb3IgbW9yZSBkZXRhaWxzLiIi
IgogICAgICAgICBleHBlY3RhdGlvbnNfcGF0aCA9IHNlbGYucGF0aF90b190ZXN0X2V4cGVjdGF0
aW9uc19maWxlKCkKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihleHBlY3RhdGlvbnNfcGF0aCwg
InIiLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgcmV0dXJuIGZpbGUucmVhZCgpCisg
ICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKGV4cGVjdGF0aW9u
c19wYXRoKQogCiAgICAgZGVmIHRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcyhzZWxmKToKICAg
ICAgICAgdHJ5OgpAQCAtMjY3LDEwICsyNTgsOSBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Q
b3J0KToKICAgICAgICAgICAgICAgICAnbGF5b3V0X3Rlc3RzJywgJ3Rlc3RfZXhwZWN0YXRpb25z
LnR4dCcpCiAgICAgICAgIGV4Y2VwdCBBc3NlcnRpb25FcnJvcjoKICAgICAgICAgICAgIHJldHVy
biBOb25lCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvdmVycmlkZXNfcGF0aCk6Cisg
ICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhvdmVycmlkZXNfcGF0aCk6CiAg
ICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKG92ZXJyaWRl
c19wYXRoLCAiciIsICJ1dGYtOCIpIGFzIGZpbGU6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZS5y
ZWFkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUob3Zl
cnJpZGVzX3BhdGgpCiAKICAgICBkZWYgc2tpcHBlZF9sYXlvdXRfdGVzdHMoc2VsZiwgZXh0cmFf
dGVzdF9maWxlcz1Ob25lKToKICAgICAgICAgZXhwZWN0YXRpb25zX3N0ciA9IHNlbGYudGVzdF9l
eHBlY3RhdGlvbnMoKQpAQCAtMzE5LDggKzMwOSw4IEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNl
LlBvcnQpOgogICAgICAgICAgICAgICAgIGRlYnVnX3BhdGggPSBzZWxmLl9wYXRoX3RvX2RyaXZl
cignRGVidWcnKQogICAgICAgICAgICAgICAgIHJlbGVhc2VfcGF0aCA9IHNlbGYuX3BhdGhfdG9f
ZHJpdmVyKCdSZWxlYXNlJykKIAotICAgICAgICAgICAgICAgIGRlYnVnX210aW1lID0gb3Muc3Rh
dChkZWJ1Z19wYXRoKS5zdF9tdGltZQotICAgICAgICAgICAgICAgIHJlbGVhc2VfbXRpbWUgPSBv
cy5zdGF0KHJlbGVhc2VfcGF0aCkuc3RfbXRpbWUKKyAgICAgICAgICAgICAgICBkZWJ1Z19tdGlt
ZSA9IHNlbGYuX2ZpbGVzeXN0ZW0ubXRpbWUoZGVidWdfcGF0aCkKKyAgICAgICAgICAgICAgICBy
ZWxlYXNlX210aW1lID0gc2VsZi5fZmlsZXN5c3RlbS5tdGltZShyZWxlYXNlX3BhdGgpCiAKICAg
ICAgICAgICAgICAgICBpZiAoZGVidWdfbXRpbWUgPiByZWxlYXNlX210aW1lIGFuZCBjb25maWd1
cmF0aW9uID09ICdSZWxlYXNlJyBvcgogICAgICAgICAgICAgICAgICAgICByZWxlYXNlX210aW1l
ID4gZGVidWdfbXRpbWUgYW5kIGNvbmZpZ3VyYXRpb24gPT0gJ0RlYnVnJyk6CkBAIC0zNjMsNyAr
MzUzLDcgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICBzZWxm
Ll93b3JrZXJfbnVtYmVyID0gd29ya2VyX251bWJlcgogICAgICAgICBzZWxmLl9pbWFnZV9wYXRo
ID0gTm9uZQogICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3BpeGVsX3Rlc3RzJyk6
Ci0gICAgICAgICAgICBzZWxmLl9pbWFnZV9wYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAg
ICAgc2VsZi5faW1hZ2VfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbigKICAgICAgICAgICAg
ICAgICBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5JyksCiAgICAgICAg
ICAgICAgICAgJ3BuZ19yZXN1bHQlcy5wbmcnICUgc2VsZi5fd29ya2VyX251bWJlcikKIApAQCAt
NDU1LDkgKzQ0NSw4IEBAIGNsYXNzIENocm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICBk
ZWYgX291dHB1dF9pbWFnZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgaW1hZ2Ugb3V0
cHV0IHdoaWNoIGRyaXZlciBnZW5lcmF0ZWQuIiIiCiAgICAgICAgIHBuZ19wYXRoID0gc2VsZi5f
aW1hZ2VfcGF0aAotICAgICAgICBpZiBwbmdfcGF0aCBhbmQgb3MucGF0aC5pc2ZpbGUocG5nX3Bh
dGgpOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBuZ19wYXRoLCAncmInKSBhcyBpbWFnZV9maWxl
OgotICAgICAgICAgICAgICAgIHJldHVybiBpbWFnZV9maWxlLnJlYWQoKQorICAgICAgICBpZiBw
bmdfcGF0aCBhbmQgc2VsZi5fZmlsZXN5c3RlbS5pc2ZpbGUocG5nX3BhdGgpOgorICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShwbmdfcGF0aCkKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0
ZXN0LnB5CmluZGV4IDQzYmZiZDQ4ZTk0Y2VhYTJkMDI3Yzk1NWM0YmMxNTJjMWRkN2IxMzAuLjVh
MDJjYWU0Y2FiMmM1ZDMyZTYxYTdmODgxYmUzMmViZTNhYmQ1MjIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91
bml0dGVzdC5weQpAQCAtMzIsOSArMzIsMTEgQEAgaW1wb3J0IFN0cmluZ0lPCiAKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgbG9ndGVzdGluZwogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmVfbW9jaworZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtIGltcG9ydCBmaWxlc3lzdGVtX21vY2sKIGZyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9j
a3Rvb2wKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiAKKwogaW1w
b3J0IGNocm9taXVtCiBpbXBvcnQgY2hyb21pdW1fbGludXgKIGltcG9ydCBjaHJvbWl1bV9tYWMK
QEAgLTEwMCw3ICsxMDIsOCBAQCBjbGFzcyBDaHJvbWl1bVBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgogICAgICAgICAgICAg
Y2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQuX19pbml0X18oc2VsZiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZT0n
dGVzdC1wb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9b3B0aW9ucywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW09ZmlsZXN5
c3RlbV9tb2NrLk1vY2tGaWxlU3lzdGVtKCkpCiAKICAgICAgICAgZGVmIGRlZmF1bHRfY29uZmln
dXJhdGlvbihzZWxmKToKICAgICAgICAgICAgIHNlbGYuZGVmYXVsdF9jb25maWd1cmF0aW9uX2Nh
bGxlZCA9IFRydWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY29uZmlnLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jb25maWcucHkKaW5kZXggZTA4ZWQ5ZDljMzM3NjgxNmY2N2FkNWZjYjMwNTJlMjNkNTEx
N2U1ZC4uNjAxNjYzOTZhYWIwYTZlYWNmOWE4ZDQ2ZDU2NDE0M2U0MmE5Nzg4NiAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWcucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWcucHkKQEAg
LTMyLDggKzMyLDYgQEAKICMgRklYTUU6IFRoaXMgZmlsZSBuZWVkcyB0byBiZSB1bmlmaWVkIHdp
dGggY29tbW9uL2NoZWNrb3V0L3NjbS5weSBhbmQKICMgY29tbW9uL2NvbmZpZy9wb3J0cy5weSAu
CiAKLWltcG9ydCBvcwotCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3V0
aWxzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZQogCkBAIC0x
MzEsNyArMTI5LDcgQEAgY2xhc3MgQ29uZmlnKG9iamVjdCk6CiAgICAgICAgICMKICAgICAgICAg
IyBUaGlzIGNvZGUgd2lsbCBhbHNvIHdvcmsgaWYgdGhlcmUgaXMgbm8gU0NNIHN5c3RlbSBhdCBh
bGwuCiAgICAgICAgIGlmIG5vdCBzZWxmLl93ZWJraXRfYmFzZV9kaXI6Ci0gICAgICAgICAgICBh
YnNwYXRoID0gb3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKQorICAgICAgICAgICAgYWJzcGF0aCA9
IHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0aChfX2ZpbGVfXykKICAgICAgICAgICAgIHNlbGYuX3dl
YmtpdF9iYXNlX2RpciA9IGFic3BhdGhbMDphYnNwYXRoLmZpbmQoJ1Rvb2xzJykgLSAxXQogICAg
ICAgICByZXR1cm4gc2VsZi5fd2Via2l0X2Jhc2VfZGlyCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQppbmRleCAyYWRjZWMwNzA5OTM0YWUx
YzAxYzBkZjE4N2VlYTFlMDY4ZGYyOTA4Li41ZGY1YzJkOWQ2MjE5YmY5NDY5NDk2ZjI1NzRlNjNj
MTgxMTJhZGU0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC90ZXN0LnB5CkBAIC0xNDYsMTAgKzE0NiwxMCBAQCBMQVlPVVRfVEVTVF9ESVIgPSAnL3Rl
c3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMnCiAjIGluIG9yZGVyIHRvIGZ1bGx5IGNvbnRyb2wgdGhl
IHRlc3Qgb3V0cHV0IGFuZCB0byBkZW1vbnN0cmF0ZSB0aGF0CiAjIHdlIGRvbid0IG5lZWQgYSBy
ZWFsIGZpbGVzeXN0ZW0gdG8gcnVuIHRoZSB0ZXN0cy4KIAotZGVmIHVuaXRfdGVzdF9maWxlc3lz
dGVtKHRlc3RfbGlzdD1Ob25lKToKK2RlZiB1bml0X3Rlc3RfZmlsZXN5c3RlbShmaWxlcz1Ob25l
KToKICAgICAiIiJSZXR1cm4gdGhlIEZpbGVTeXN0ZW0gb2JqZWN0IHVzZWQgYnkgdGhlIHVuaXQg
dGVzdHMuIiIiCi0gICAgdGVzdF9saXN0ID0gdGVzdF9saXN0IG9yIHVuaXRfdGVzdF9saXN0KCkK
LSAgICBmaWxlcyA9IHt9CisgICAgdGVzdF9saXN0ID0gdW5pdF90ZXN0X2xpc3QoKQorICAgIGZp
bGVzID0gZmlsZXMgb3Ige30KIAogICAgIGRlZiBhZGRfZmlsZShmaWxlcywgdGVzdCwgc3VmZml4
LCBjb250ZW50cyk6CiAgICAgICAgIGRpcm5hbWUgPSB0ZXN0Lm5hbWVbMDp0ZXN0Lm5hbWUucmZp
bmQoJy8nKV0KQEAgLTE4NCwxNiArMTg0LDMyIEBAIFdPTlRGSVggU0tJUCA6IGZhaWx1cmVzL2V4
cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBDUkFTSAogV09OVEZJWCBTS0lQIDogZmFpbHVyZXMvZXhw
ZWN0ZWQvZXhjZXB0aW9uLmh0bWwgPSBDUkFTSAogIiIiCiAKLSAgICByZXR1cm4gZmlsZXN5c3Rl
bV9tb2NrLk1vY2tGaWxlU3lzdGVtKGZpbGVzKQorICAgIGZzID0gZmlsZXN5c3RlbV9tb2NrLk1v
Y2tGaWxlU3lzdGVtKGZpbGVzKQorICAgIGZzLl90ZXN0cyA9IHRlc3RfbGlzdAorICAgIHJldHVy
biBmcwogCiAKIGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAgIiIiVGVzdCBpbXBsZW1l
bnRhdGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCiAKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLl90ZXN0cyA9IHVuaXRfdGVzdF9saXN0KCkKLSAg
ICAgICAgaWYgJ2ZpbGVzeXN0ZW0nIG5vdCBpbiBrd2FyZ3M6Ci0gICAgICAgICAgICBrd2FyZ3Nb
J2ZpbGVzeXN0ZW0nXSA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKHNlbGYuX3Rlc3RzKQorICAgICAg
ICAjIEZJWE1FOiB3aGF0IGhhcHBlbnMgaWYgd2UncmUgbm90IHBhc3NlZCBpbiB0aGUgdGVzdCBm
aWxlc3lzdGVtCisgICAgICAgICMgYW5kIHRoZSB0ZXN0cyBkb24ndCBtYXRjaCB3aGF0J3MgaW4g
dGhlIGZpbGVzeXN0ZW0/CisgICAgICAgICMKKyAgICAgICAgIyBXZSdsbCBsZWF2ZSBhcyBpcyBm
b3Igbm93IHRvIGF2b2lkIHVubmVjZXNzYXJ5IGRlcGVuZGVuY2llcyB3aGlsZQorICAgICAgICAj
IGNvbnZlcnRpbmcgYWxsIG9mIHRoZSB1bml0IHRlc3RzIG92ZXIgdG8gdXNpbmcKKyAgICAgICAg
IyB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpLiBJZiB0aGluZ3MgZ2V0IG91dCBvZiBzeW5jIHRoZSB0
ZXN0cyBzaG91bGQKKyAgICAgICAgIyBmYWlsIGluIGZhaXJseSBvYnZpb3VzIHdheXMuIEV2ZW50
dWFsbHkgd2Ugd2FudCB0byBqdXN0IGRvOgorICAgICAgICAjCisgICAgICAgICMgYXNzZXJ0IGt3
YXJnc1snZmlsZXN5c3RlbSddLl90ZXN0cworICAgICAgICAjIHNlbGYuX3Rlc3RzID0ga3dhcmdz
WydmaWxlc3lzdGVtJ10uX3Rlc3RzCisKKyAgICAgICAgaWYgJ2ZpbGVzeXN0ZW0nIG5vdCBpbiBr
d2FyZ3Mgb3Iga3dhcmdzWydmaWxlc3lzdGVtJ10gaXMgTm9uZToKKyAgICAgICAgICAgIGt3YXJn
c1snZmlsZXN5c3RlbSddID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICAgICAgc2Vs
Zi5fdGVzdHMgPSBrd2FyZ3NbJ2ZpbGVzeXN0ZW0nXS5fdGVzdHMKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHNlbGYuX3Rlc3RzID0gdW5pdF90ZXN0X2xpc3QoKQorCiAgICAgICAgIGt3YXJn
cy5zZXRkZWZhdWx0KCdwb3J0X25hbWUnLCAndGVzdCcpCiAgICAgICAgIGJhc2UuUG9ydC5fX2lu
aXRfXyhzZWxmLCAqKmt3YXJncykKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5CmluZGV4
IGVhYmRmZDljMmIwYmUwMDhkZTRiOGJjNzY2MTJmN2Q3NWZmZTM1MDUuLmE2ODk1MGE5MWMzNWVi
NjlkMmJhYjUxZGJhMjA1NmMxOTMyYWJiMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3Qu
cHkKQEAgLTI2LDcgKzI2LDYgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWlt
cG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCBiYXNlCkBAIC0zNyw4ICszNiw4IEBA
IGNsYXNzIFRlc3RGaWxlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Zp
bmRfbm9fcGF0aHNfc3BlY2lmaWVkKHNlbGYpOgogICAgICAgICBwb3J0ID0gYmFzZS5Qb3J0KCkK
ICAgICAgICAgbGF5b3V0X3Rlc3RzX2RpciA9IHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpCi0gICAg
ICAgIHBvcnQubGF5b3V0X3Rlc3RzX2RpciA9IGxhbWJkYTogb3MucGF0aC5qb2luKGxheW91dF90
ZXN0c19kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdmYXN0JywgJ2h0bWwnKQorICAgICAgICBwb3J0LmxheW91dF90ZXN0c19kaXIgPSBs
YW1iZGE6IHBvcnQuX2ZpbGVzeXN0ZW0uam9pbihsYXlvdXRfdGVzdHNfZGlyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFz
dCcsICdodG1sJykKICAgICAgICAgdGVzdHMgPSB0ZXN0X2ZpbGVzLmZpbmQocG9ydCwgW10pCiAg
ICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodGVzdHMsIDApCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79492</attachid>
            <date>2011-01-19 14:51:59 -0800</date>
            <delta_ts>2011-01-19 15:14:22 -0800</delta_ts>
            <desc>fix MockFileSystem.read_text_file() to raise KeyError if we don&apos;t know the file, fix isdir() to be thread-safe</desc>
            <filename>bug-52748-20110119145158.patch</filename>
            <type>text/plain</type>
            <size>23584</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxOGMz
M2NmOWRiZTk1NDQ0YzUxMzFiNzM2ZDgyNjA5Njg1YjUyMTRkLi5lZmJiOWI1YTY4YTI3MjE2NTFk
Zjc4ZDNlZTY3NzNjOGQyZTExZTZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAKIDIwMTEtMDEtMTkgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgYWRkIGEgLnNlcCBwcm9wZXJ0eSwgYWJzcGF0aCgpLCBpc2Ficygp
LCBtdGltZSgpLCBhbmQKKyAgICAgICAgb3Blbl90ZXh0X2ZpbGVfZm9yX3dyaXRpbmcoKSB0byBm
aWxlc3lzdGVtIG1vZHVsZXMuIFNvbWUgb2YKKyAgICAgICAgdGhlc2UgcHJvcGVydGllcyBhcmUg
bm90IG5lZWRlZCBpbiB0aGlzIHBhdGNoIGJ1dCB3aWxsIGJlIG5lZWRlZAorICAgICAgICBpbiBz
dWJzZXF1ZW50IHBhdGNoZXMgKEknbSBkb2luZyB0aGlzIHRvIGF2b2lkIGhhdmluZyB0byB0cmFj
aworICAgICAgICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBhIHNpbmdsZSBmaWxlKS4KKworICAgICAg
ICBBbHNvLCBjaGFuZ2UgbW9zdCBvZiB0aGUgcG9ydC8qIG1vZHVsZXMgdG8gdXNlIHRoZSBmaWxl
c3lzdGVtCisgICAgICAgIG9iamVjdHMgaW5zdGVhZCBvZiByZWZlcmVuY2luZyB0aGUgZmlsZXN5
c3RlbSBkaXJlY3RseS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTI3NDgKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9maWxlc3lzdGVtLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9maWxlc3lzdGVtX21vY2sucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5OgorCisy
MDExLTAxLTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAgICAg
IFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCiAKICAgICAgICAgQ2hhbmdlIHdlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3QucHkgdG8gdXNlIHRoZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQppbmRleCA2ZGNmMjA3MjAxNmNjMjdi
MjFiOGMzYjBkNDM1NTYxOWMxODFjNDhlLi5kNzUyNzZlYjNiMzVmYjhhYjllZWI3OTRlMzU5MjM2
M2ZlZjZkNDU5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbS5weQpAQCAtNDQsNiArNDQsMTEgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmpl
Y3QpOgogCiAgICAgVW5sZXNzIG90aGVyd2lzZSBub3RlZCwgYWxsIHBhdGhzIGFyZSBhbGxvd2Vk
IHRvIGJlIGVpdGhlciBhYnNvbHV0ZQogICAgIG9yIHJlbGF0aXZlLiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5zZXAgPSBvcy5zZXAKKworICAgIGRlZiBhYnNwYXRo
KHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKHBhdGgpCiAKICAg
ICBkZWYgYmFzZW5hbWUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIldyYXBzIG9zLnBhdGguYmFz
ZW5hbWUoKS4iIiIKQEAgLTEwMCw2ICsxMDUsMTAgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3Qp
OgogICAgICAgICAiIiJXcmFwcyBnbG9iLmdsb2IoKS4iIiIKICAgICAgICAgcmV0dXJuIGdsb2Iu
Z2xvYihwYXRoKQogCisgICAgZGVmIGlzYWJzKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1
cm4gd2hldGhlciB0aGUgcGF0aCBpcyBhbiBhYnNvbHV0ZSBwYXRoLiIiIgorICAgICAgICByZXR1
cm4gb3MucGF0aC5pc2FicyhwYXRoKQorCiAgICAgZGVmIGlzZmlsZShzZWxmLCBwYXRoKToKICAg
ICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIHBhdGggcmVmZXJzIHRvIGEgZmlsZS4iIiIKICAg
ICAgICAgcmV0dXJuIG9zLnBhdGguaXNmaWxlKHBhdGgpCkBAIC0xNTksNiArMTY4LDkgQEAgY2xh
c3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgIGRlZiBtb3ZlKHNlbGYsIHNyYywgZGVzdCk6CiAg
ICAgICAgIHNodXRpbC5tb3ZlKHNyYywgZGVzdCkKIAorICAgIGRlZiBtdGltZShzZWxmLCBwYXRo
KToKKyAgICAgICAgcmV0dXJuIG9zLnN0YXQocGF0aCkuc3RfbXRpbWUKKwogICAgIGRlZiBub3Jt
cGF0aChzZWxmLCBwYXRoKToKICAgICAgICAgIiIiV3JhcHMgb3MucGF0aC5ub3JtcGF0aCgpLiIi
IgogICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChwYXRoKQpAQCAtMTY5LDYgKzE4MSwx
MyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIGYgPSBvcy5mZG9wZW4odGVt
cF9mZCwgJ3diJykKICAgICAgICAgcmV0dXJuIGYsIHRlbXBfbmFtZQogCisgICAgZGVmIG9wZW5f
dGV4dF9maWxlX2Zvcl93cml0aW5nKHNlbGYsIHBhdGgsIGFwcGVuZD1GYWxzZSk6CisgICAgICAg
ICIiIlJldHVybnMgYSBmaWxlIGhhbmRsZSBzdWl0YWJsZSBmb3Igd3JpdGluZyB0by4iIiIKKyAg
ICAgICAgbW9kZSA9ICd3JworICAgICAgICBpZiBhcHBlbmQ6CisgICAgICAgICAgICBtb2RlID0g
J3dhJworICAgICAgICByZXR1cm4gY29kZWNzLm9wZW4ocGF0aCwgbW9kZSwgJ3V0ZjgnKQorCiAg
ICAgZGVmIHJlYWRfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiB0
aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIHBhdGggYXMgYSBieXRlIHN0cmlu
Zy4iIiIKICAgICAgICAgd2l0aCBmaWxlKHBhdGgsICdyYicpIGFzIGY6CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQpp
bmRleCA4OGMxOGU4Y2E1ODY0M2MxNGRlYzA5MGFmY2JlOGE3YWRmNjkzNmNhLi4wODkyNjFhMDZj
YmVmZDc3NTc2NWIxZDIwMjA3YmI1ZjI2MTRhM2JkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKQEAgLTQzLDcg
KzQzLDkgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgICAgICAgICBu
b3QgZXhpc3QuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmZpbGVzID0gZmlsZXMgb3Ige30K
LSAgICAgICAgc2VsZi5fY3VycmVudF90bXBubyA9IDAKKyAgICAgICAgc2VsZi53cml0dGVuX2Zp
bGVzID0ge30KKyAgICAgICAgc2VsZi5zZXAgPSAnLycKKyAgICAgICAgc2VsZi5jdXJyZW50X3Rt
cG5vID0gMAogCiAgICAgZGVmIF9yYWlzZV9ub3RfZm91bmQoc2VsZiwgcGF0aCk6CiAgICAgICAg
IHJhaXNlIElPRXJyb3IoZXJybm8uRU5PRU5ULCBwYXRoLCBvcy5zdHJlcnJvcihlcnJuby5FTk9F
TlQpKQpAQCAtNTIsNiArNTQsOSBAQCBjbGFzcyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgogICAg
ICAgICBpZHggPSBwYXRoLnJmaW5kKCcvJykKICAgICAgICAgcmV0dXJuIChwYXRoWzA6aWR4XSwg
cGF0aFtpZHggKyAxOl0pCiAKKyAgICBkZWYgYWJzcGF0aChzZWxmLCBwYXRoKToKKyAgICAgICAg
cmV0dXJuIHBhdGgKKwogICAgIGRlZiBiYXNlbmFtZShzZWxmLCBwYXRoKToKICAgICAgICAgcmV0
dXJuIHNlbGYuX3NwbGl0KHBhdGgpWzFdCiAKQEAgLTExMSw2ICsxMTYsOSBAQCBjbGFzcyBNb2Nr
RmlsZVN5c3RlbShvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIFtm
IGZvciBmIGluIHNlbGYuZmlsZXMgaWYgZiA9PSBwYXRoXQogCisgICAgZGVmIGlzYWJzKHNlbGYs
IHBhdGgpOgorICAgICAgICByZXR1cm4gcGF0aC5zdGFydHN3aXRoKCcvJykKKwogICAgIGRlZiBp
c2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBwYXRoIGluIHNlbGYuZmlsZXMgYW5k
IHNlbGYuZmlsZXNbcGF0aF0gaXMgbm90IE5vbmUKIApAQCAtMTE5LDcgKzEyNywxMSBAQCBjbGFz
cyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAg
ICAgIGlmIG5vdCBwYXRoLmVuZHN3aXRoKCcvJyk6CiAgICAgICAgICAgICBwYXRoICs9ICcvJwot
ICAgICAgICByZXR1cm4gYW55KGYuc3RhcnRzd2l0aChwYXRoKSBmb3IgZiBpbiBzZWxmLmZpbGVz
KQorCisgICAgICAgICMgV2UgbmVlZCB0byB1c2UgYSBsaXN0IGNvbXByZWhlbnNpb24gaGVyZSBp
bnN0ZWFkIG9mIGEgZ2VuZXJhdG9yCisgICAgICAgICMgZXhwcmVzc2lvbiwgaW4gb3JkZXIgdG8g
YXZvaWQgc3dpdGNoaW5nIHRvIGEgZGlmZmVyZW50IHRocmVhZAorICAgICAgICAjIHBvdGVudGlh
bGx5IG1vZGlmeWluZyB0aGUgZGljdCBpbiBtaWQtaXRlcmF0aW9uLgorICAgICAgICByZXR1cm4g
YW55KFtmLnN0YXJ0c3dpdGgocGF0aCkgZm9yIGYgaW4gc2VsZi5maWxlc10pCiAKICAgICBkZWYg
am9pbihzZWxmLCAqY29tcHMpOgogICAgICAgICByZXR1cm4gcmUuc3ViKHJlLmVzY2FwZShvcy5w
YXRoLnNlcCksICcvJywgb3MucGF0aC5qb2luKCpjb21wcykpCkBAIC0xNDQsNiArMTU2LDExIEBA
IGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGZpbGVz
LmFwcGVuZChyZW1haW5pbmcpCiAgICAgICAgIHJldHVybiBkaXJzICsgZmlsZXMKIAorICAgIGRl
ZiBtdGltZShzZWxmLCBwYXRoKToKKyAgICAgICAgaWYgc2VsZi5leGlzdHMocGF0aCk6CisgICAg
ICAgICAgICByZXR1cm4gMAorICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91bmQocGF0aCkKKwog
ICAgIGRlZiBfbWt0ZW1wKHNlbGYsIHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSwg
Kiprd2FyZ3MpOgogICAgICAgICBpZiBkaXIgaXMgTm9uZToKICAgICAgICAgICAgIGRpciA9ICcv
X19pbV90bXAnCkBAIC0xNzAsNyArMTg3LDcgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0
KToKIAogICAgICAgICAgICAgICAgICMgRklYTUU6IFNob3VsZCB3ZSBkZWxldGUgbm9uLWVtcHR5
IGRpcmVjdG9yaWVzPwogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3Rz
KHNlbGYuX2RpcmVjdG9yeV9wYXRoKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5
c3RlbS5ybWRpcihzZWxmLl9kaXJlY3RvcnlfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fZmlsZXN5c3RlbS5ybXRyZWUoc2VsZi5fZGlyZWN0b3J5X3BhdGgpCiAKICAgICAgICAgcmV0
dXJuIFRlbXBvcmFyeURpcmVjdG9yeShmcz1zZWxmLCAqKmt3YXJncykKIApAQCAtMTkxLDE0ICsy
MDgsMTcgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgcGF0aCA9IHNl
bGYuX21rdGVtcChzdWZmaXgpCiAgICAgICAgIHJldHVybiBXcml0YWJsZUZpbGVPYmplY3Qoc2Vs
ZiwgcGF0aCksIHBhdGgKIAorICAgIGRlZiBvcGVuX3RleHRfZmlsZV9mb3Jfd3JpdGluZyhzZWxm
LCBwYXRoLCBhcHBlbmQ9RmFsc2UpOgorICAgICAgICByZXR1cm4gV3JpdGFibGVGaWxlT2JqZWN0
KHNlbGYsIHBhdGgsIGFwcGVuZCkKKwogICAgIGRlZiByZWFkX3RleHRfZmlsZShzZWxmLCBwYXRo
KToKICAgICAgICAgcmV0dXJuIHNlbGYucmVhZF9iaW5hcnlfZmlsZShwYXRoKQogCiAgICAgZGVm
IHJlYWRfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCk6Ci0gICAgICAgIGlmIHBhdGggaW4gc2VsZi5m
aWxlczoKLSAgICAgICAgICAgIGlmIHNlbGYuZmlsZXNbcGF0aF0gaXMgTm9uZToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91bmQocGF0aCkKLSAgICAgICAgICAgIHJldHVybiBz
ZWxmLmZpbGVzW3BhdGhdCisgICAgICAgICMgSW50ZW50aW9uYWxseSByYWlzZXMgS2V5RXJyb3Ig
aWYgd2UgZG9uJ3QgcmVjb2duaXplIHRoZSBwYXRoLgorICAgICAgICBpZiBzZWxmLmZpbGVzW3Bh
dGhdIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91bmQocGF0aCkKKyAg
ICAgICAgcmV0dXJuIHNlbGYuZmlsZXNbcGF0aF0KIAogICAgIGRlZiByZW1vdmUoc2VsZiwgcGF0
aCk6CiAgICAgICAgIGlmIHNlbGYuZmlsZXNbcGF0aF0gaXMgTm9uZToKQEAgLTIyNCwxMiArMjQ0
LDEzIEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAKICAgICBkZWYgd3JpdGVfYmlu
YXJ5X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgogICAgICAgICBzZWxmLmZpbGVzW3BhdGhd
ID0gY29udGVudHMKKyAgICAgICAgc2VsZi53cml0dGVuX2ZpbGVzW3BhdGhdID0gY29udGVudHMK
IAogCiBjbGFzcyBXcml0YWJsZUZpbGVPYmplY3Qob2JqZWN0KToKICAgICBkZWYgX19pbml0X18o
c2VsZiwgZnMsIHBhdGgsIGFwcGVuZD1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSk6CiAgICAgICAgIHNl
bGYuZnMgPSBmcwotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucGF0aCA9
IHBhdGgKICAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQogICAgICAgICBpZiBwYXRoIG5vdCBp
biBzZWxmLmZzLmZpbGVzIG9yIG5vdCBhcHBlbmQ6CiAgICAgICAgICAgICBzZWxmLmZzLmZpbGVz
W3BhdGhdID0gIiIKQEAgLTI0NCw1ICsyNjUsNSBAQCBjbGFzcyBXcml0YWJsZUZpbGVPYmplY3Qo
b2JqZWN0KToKICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVlCiAKICAgICBkZWYgd3JpdGUoc2Vs
Ziwgc3RyKToKLSAgICAgICAgc2VsZi5mcy5maWxlc1tzZWxmLm5hbWVdICs9IHN0cgotICAgICAg
ICBzZWxmLmZzLndyaXR0ZW5fZmlsZXNbc2VsZi5uYW1lXSA9IHNlbGYuZnMuZmlsZXNbc2VsZi5u
YW1lXQorICAgICAgICBzZWxmLmZzLmZpbGVzW3NlbGYucGF0aF0gKz0gc3RyCisgICAgICAgIHNl
bGYuZnMud3JpdHRlbl9maWxlc1tzZWxmLnBhdGhdID0gc2VsZi5mcy5maWxlc1tzZWxmLnBhdGhd
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L19f
aW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9fX2lu
aXRfXy5weQppbmRleCBlM2FkNmY0NGMxZDJmMjgwZGM5NzE1NThhYmMxZmNkNjQyYTQ3YzM2Li41
OWFiMmVmMTExMDliYmIzMDBmM2RkZDVkYjkxYjIyMmM4MzZjN2Y1IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L19faW5pdF9fLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvX19pbml0X18ucHkKQEAgLTMw
LDMgKzMwLDUgQEAKICIiIlBvcnQtc3BlY2lmaWMgZW50cnlwb2ludHMgZm9yIHRoZSBsYXlvdXQg
dGVzdHMgdGVzdCBpbmZyYXN0cnVjdHVyZS4iIiIKIAogZnJvbSBmYWN0b3J5IGltcG9ydCBnZXQK
KworZnJvbSB0ZXN0IGltcG9ydCB1bml0X3Rlc3RfZmlsZXN5c3RlbQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IDk3YjU0Yzk3ZDgx
ZmZmOTM5OTkxZTZhZWIyYTMzMzE2MDg4ODgxNTIuLjc0YzEwMTg0YzlkNzI2ZWY3MTM4NTZjYmU3
YTBmYjUxZjMzNTlhMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTI0NCw3ICsyNDQsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgdHJlZSkKICAgICAgICAgICAgIHJlc3VsdHNfZmlsZW5hbWUgLSBy
ZWxhdGl2ZSBwYXRoIGZyb20gdG9wIG9mIHRyZWUgdG8gdGhlIHJlc3VsdHMKICAgICAgICAgICAg
ICAgICBmaWxlCi0gICAgICAgICAgICAob3MucGF0aC5qb2luIG9mIHRoZSB0d28gZ2l2ZXMgeW91
IHRoZSBmdWxsIHBhdGggdG8gdGhlIGZpbGUsCisgICAgICAgICAgICAocG9ydC5qb2luKCkgb2Yg
dGhlIHR3byBnaXZlcyB5b3UgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZmlsZSwKICAgICAgICAgICAg
ICAgICB1bmxlc3MgTm9uZSB3YXMgcmV0dXJuZWQuKQogICAgICAgICBSZXR1cm4gdmFsdWVzIHdp
bGwgYmUgaW4gdGhlIGZvcm1hdCBhcHByb3ByaWF0ZSBmb3IgdGhlIGN1cnJlbnQKICAgICAgICAg
cGxhdGZvcm0gKGUuZy4sICJcXCIgZm9yIHBhdGggc2VwYXJhdG9ycyBvbiBXaW5kb3dzKS4gSWYg
dGhlIHJlc3VsdHMKQEAgLTI1NSw3ICsyNTUsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAg
ICAgIGNvbmp1bmN0aW9uIHdpdGggdGhlIG90aGVyIGJhc2VsaW5lIGFuZCBmaWxlbmFtZSByb3V0
aW5lcyB0aGF0IGFyZQogICAgICAgICBwbGF0Zm9ybSBzcGVjaWZpYy4KICAgICAgICAgIiIiCi0g
ICAgICAgIHRlc3RuYW1lID0gb3MucGF0aC5zcGxpdGV4dChzZWxmLnJlbGF0aXZlX3Rlc3RfZmls
ZW5hbWUoZmlsZW5hbWUpKVswXQorICAgICAgICB0ZXN0bmFtZSA9IHNlbGYuX2ZpbGVzeXN0ZW0u
c3BsaXRleHQoc2VsZi5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKSlbMF0KIAogICAg
ICAgICBiYXNlbGluZV9maWxlbmFtZSA9IHRlc3RuYW1lICsgJy1leHBlY3RlZCcgKyBzdWZmaXgK
IApAQCAtMzYwLDcgKzM2MCw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgICAg
ICBwcm90b2NvbCA9ICJodHRwIgogICAgICAgICAgICAgcmV0dXJuICIlczovLzEyNy4wLjAuMTol
dS8lcyIgJSAocHJvdG9jb2wsIHBvcnQsIHJlbGF0aXZlX3BhdGgpCiAKLSAgICAgICAgcmV0dXJu
IHBhdGguYWJzcGF0aF90b191cmkob3MucGF0aC5hYnNwYXRoKGZpbGVuYW1lKSkKKyAgICAgICAg
cmV0dXJuIHBhdGguYWJzcGF0aF90b191cmkoc2VsZi5fZmlsZXN5c3RlbS5hYnNwYXRoKGZpbGVu
YW1lKSkKIAogICAgIGRlZiB0ZXN0cyhzZWxmLCBwYXRocyk6CiAgICAgICAgICIiIlJldHVybiB0
aGUgbGlzdCBvZiB0ZXN0cyBmb3VuZCAocmVsYXRpdmUgdG8gbGF5b3V0X3Rlc3RzX2RpcigpLiIi
IgpAQCAtNzAyLDcgKzcwMiw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICBkZWYgcHJldHR5
X3BhdGNoX3RleHQoc2VsZiwgZGlmZl9wYXRoKToKICAgICAgICAgaWYgbm90IHNlbGYuX3ByZXR0
eV9wYXRjaF9hdmFpbGFibGU6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJldHR5X3BhdGNo
X2Vycm9yX2h0bWwKLSAgICAgICAgY29tbWFuZCA9ICgicnVieSIsICItSSIsIG9zLnBhdGguZGly
bmFtZShzZWxmLl9wcmV0dHlfcGF0Y2hfcGF0aCksCisgICAgICAgIGNvbW1hbmQgPSAoInJ1Ynki
LCAiLUkiLCBzZWxmLl9maWxlc3lzdGVtLmRpcm5hbWUoc2VsZi5fcHJldHR5X3BhdGNoX3BhdGgp
LAogICAgICAgICAgICAgICAgICAgIHNlbGYuX3ByZXR0eV9wYXRjaF9wYXRoLCBkaWZmX3BhdGgp
CiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgRGlmZnMgYXJlIHRyZWF0ZWQgYXMgYmluYXJ5
ICh3ZSBwYXNzIGRlY29kZV9vdXRwdXQ9RmFsc2UpIGFzIHRoZXkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQpp
bmRleCA4ZDU4NmUzNTRlNDJmMDM5M2M2Yzk2ZmJiZTEwNzYwYmQzNzE4NWVlLi43MmYyZDA1YTQy
YWRlOWNhY2ZjOTcxMDg4YjE5Mzk3MDU4YTdkNTM4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CkBAIC0y
Nyw3ICsyNyw2IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBvcHRwYXJzZQotaW1wb3J0IG9z
CiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdApAQCAtMTk0LDcg
KzE5Myw3IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVz
dF9maWxlbmFtZV90b191cmkoc2VsZik6CiAgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQoKQogICAg
ICAgICBsYXlvdXRfdGVzdF9kaXIgPSBwb3J0LmxheW91dF90ZXN0c19kaXIoKQotICAgICAgICB0
ZXN0X2ZpbGUgPSBvcy5wYXRoLmpvaW4obGF5b3V0X3Rlc3RfZGlyLCAiZm9vIiwgImJhci5odG1s
IikKKyAgICAgICAgdGVzdF9maWxlID0gcG9ydC5fZmlsZXN5c3RlbS5qb2luKGxheW91dF90ZXN0
X2RpciwgImZvbyIsICJiYXIuaHRtbCIpCiAKICAgICAgICAgIyBPbiBXaW5kb3dzLCBhYnNvbHV0
ZSBwYXRocyBhcmUgb2YgdGhlIGZvcm0gImM6XGZvby50eHQiLiBIb3dldmVyLAogICAgICAgICAj
IGFsbCBjdXJyZW50IGJyb3dzZXJzIChleGNlcHQgZm9yIE9wZXJhKSBub3JtYWxpemUgZmlsZSBV
UkxzIGJ5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bS5weQppbmRleCA5YWEwOTQ2Zjg5YmVhNjE2NWIzM2NlNTU0M2Y1NDIzNTMyNGJi
MmI0Li5lZWJmODUzMGNlMDllYmIwMGE1MmEyZmU2OTMyNzc1ZDYyYTc2ZTk1IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkK
QEAgLTI5LDE4ICsyOSwxMiBAQAogCiAiIiJDaHJvbWl1bSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhl
IFBvcnQgaW50ZXJmYWNlLiIiIgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVt
ZW50Ci0KLWltcG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubwogaW1wb3J0IGxvZ2dpbmcKLWltcG9y
dCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3Vi
cHJvY2VzcwogaW1wb3J0IHN5cwotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQogaW1wb3J0
IHdlYmJyb3dzZXIKIApAQCAtNzEsNyArNjUsNyBAQCBkZWYgY2hlY2tfZmlsZV9leGlzdHMocGF0
aF90b19maWxlLCBmaWxlX2Rlc2NyaXB0aW9uLCBvdmVycmlkZV9zdGVwPU5vbmUsCiAgICAgICAg
ICAgICB5b3UncmUgbG9va2luZyBmb3IgKGUuZy4sICJIVFRQIFNlcnZlciIpLiBVc2VkIGZvciBl
cnJvciBsb2dnaW5nLgogICAgICAgICBvdmVycmlkZV9zdGVwOiBBbiBvcHRpb25hbCBzdHJpbmcg
dG8gYmUgbG9nZ2VkIGlmIHRoZSBjaGVjayBmYWlscy4KICAgICAgICAgbG9nZ2luZzogV2hldGhl
ciBvciBub3QgbG9nIHRoZSBlcnJvciBtZXNzYWdlcy4iIiIKLSAgICBpZiBub3Qgb3MucGF0aC5l
eGlzdHMocGF0aF90b19maWxlKToKKyAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMo
cGF0aF90b19maWxlKToKICAgICAgICAgaWYgbG9nZ2luZzoKICAgICAgICAgICAgIF9sb2cuZXJy
b3IoJ1VuYWJsZSB0byBmaW5kICVzJyAlIGZpbGVfZGVzY3JpcHRpb24pCiAgICAgICAgICAgICBf
bG9nLmVycm9yKCcgICAgYXQgJXMnICUgcGF0aF90b19maWxlKQpAQCAtMTQ1LDEzICsxMzksMTEg
QEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICAgICAgICAgZGlm
Zl9maWxlbmFtZT1Ob25lKToKICAgICAgICAgZXhlY3V0YWJsZSA9IHNlbGYuX3BhdGhfdG9faW1h
Z2VfZGlmZigpCiAKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQotICAgICAg
ICBleHBlY3RlZF9maWxlbmFtZSA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAiZXhwZWN0ZWQucG5n
IikKLSAgICAgICAgd2l0aCBvcGVuKGV4cGVjdGVkX2ZpbGVuYW1lLCAndytiJykgYXMgZmlsZToK
LSAgICAgICAgICAgIGZpbGUud3JpdGUoZXhwZWN0ZWRfY29udGVudHMpCi0gICAgICAgIGFjdHVh
bF9maWxlbmFtZSA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAiYWN0dWFsLnBuZyIpCi0gICAgICAg
IHdpdGggb3BlbihhY3R1YWxfZmlsZW5hbWUsICd3K2InKSBhcyBmaWxlOgotICAgICAgICAgICAg
ZmlsZS53cml0ZShhY3R1YWxfY29udGVudHMpCisgICAgICAgIHRlbXBkaXIgPSBzZWxmLl9maWxl
c3lzdGVtLm1rZHRlbXAoKQorICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHNlbGYuX2ZpbGVz
eXN0ZW0uam9pbihzdHIodGVtcGRpciksICJleHBlY3RlZC5wbmciKQorICAgICAgICBzZWxmLl9m
aWxlc3lzdGVtLndyaXRlX2JpbmFyeV9maWxlKGV4cGVjdGVkX2ZpbGVuYW1lLCBleHBlY3RlZF9j
b250ZW50cykKKyAgICAgICAgYWN0dWFsX2ZpbGVuYW1lID0gc2VsZi5fZmlsZXN5c3RlbS5qb2lu
KHN0cih0ZW1wZGlyKSwgImFjdHVhbC5wbmciKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndy
aXRlX2JpbmFyeV9maWxlKGFjdHVhbF9maWxlbmFtZSwgYWN0dWFsX2NvbnRlbnRzKQogCiAgICAg
ICAgIGlmIGRpZmZfZmlsZW5hbWU6CiAgICAgICAgICAgICBjbWQgPSBbZXhlY3V0YWJsZSwgJy0t
ZGlmZicsIGV4cGVjdGVkX2ZpbGVuYW1lLApAQCAtMTgwLDcgKzE3Miw3IEBAIGNsYXNzIENocm9t
aXVtUG9ydChiYXNlLlBvcnQpOgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBy
YWlzZSBlCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHRlbXBk
aXIsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ucm10
cmVlKHN0cih0ZW1wZGlyKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIGRyaXZl
cl9uYW1lKHNlbGYpOgpAQCAtMTkyLDE1ICsxODQsMTUgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJh
c2UuUG9ydCk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byBwYXRoIG1hZGUg
Ynkgam9pbmluZyB0aGUgdG9wIG9mIHRoZQogICAgICAgICBDaHJvbWl1bSBzb3VyY2UgdHJlZSBh
bmQgdGhlIGxpc3Qgb2YgcGF0aCBjb21wb25lbnRzIGluIHwqY29tcHN8LiIiIgogICAgICAgICBp
ZiBub3Qgc2VsZi5fY2hyb21pdW1fYmFzZV9kaXI6Ci0gICAgICAgICAgICBhYnNwYXRoID0gb3Mu
cGF0aC5hYnNwYXRoKF9fZmlsZV9fKQorICAgICAgICAgICAgYWJzcGF0aCA9IHNlbGYuX2ZpbGVz
eXN0ZW0uYWJzcGF0aChfX2ZpbGVfXykKICAgICAgICAgICAgIG9mZnNldCA9IGFic3BhdGguZmlu
ZCgndGhpcmRfcGFydHknKQogICAgICAgICAgICAgaWYgb2Zmc2V0ID09IC0xOgotICAgICAgICAg
ICAgICAgIHNlbGYuX2Nocm9taXVtX2Jhc2VfZGlyID0gb3MucGF0aC5qb2luKAorICAgICAgICAg
ICAgICAgIHNlbGYuX2Nocm9taXVtX2Jhc2VfZGlyID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKAog
ICAgICAgICAgICAgICAgICAgICBhYnNwYXRoWzA6YWJzcGF0aC5maW5kKCdUb29scycpXSwKICAg
ICAgICAgICAgICAgICAgICAgJ1dlYktpdCcsICdjaHJvbWl1bScpCiAgICAgICAgICAgICBlbHNl
OgogICAgICAgICAgICAgICAgIHNlbGYuX2Nocm9taXVtX2Jhc2VfZGlyID0gYWJzcGF0aFswOm9m
ZnNldF0KLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLl9jaHJvbWl1bV9iYXNlX2Rp
ciwgKmNvbXBzKQorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX2No
cm9taXVtX2Jhc2VfZGlyLCAqY29tcHMpCiAKICAgICBkZWYgcGF0aF90b190ZXN0X2V4cGVjdGF0
aW9uc19maWxlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jh
c2UoJ0xheW91dFRlc3RzJywgJ3BsYXRmb3JtJywKQEAgLTIxOCwxMCArMjEwLDEwIEBAIGNsYXNz
IENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgIGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmKToK
ICAgICAgICAgIyBEZWxldGUgdGhlIGRpc2sgY2FjaGUgaWYgYW55IHRvIGVuc3VyZSBhIGNsZWFu
IHRlc3QgcnVuLgogICAgICAgICBkdW1wX3JlbmRlcl90cmVlX2JpbmFyeV9wYXRoID0gc2VsZi5f
cGF0aF90b19kcml2ZXIoKQotICAgICAgICBjYWNoZWRpciA9IG9zLnBhdGguc3BsaXQoZHVtcF9y
ZW5kZXJfdHJlZV9iaW5hcnlfcGF0aClbMF0KLSAgICAgICAgY2FjaGVkaXIgPSBvcy5wYXRoLmpv
aW4oY2FjaGVkaXIsICJjYWNoZSIpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNhY2hlZGly
KToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoY2FjaGVkaXIpCisgICAgICAgIGNhY2hlZGly
ID0gc2VsZi5fZmlsZXN5c3RlbS5kaXJuYW1lKGR1bXBfcmVuZGVyX3RyZWVfYmluYXJ5X3BhdGgp
CisgICAgICAgIGNhY2hlZGlyID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKGNhY2hlZGlyLCAiY2Fj
aGUiKQorICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhjYWNoZWRpcik6CisgICAg
ICAgICAgICBzZWxmLl9maWxlc3lzdGVtLnJtdHJlZShjYWNoZWRpcikKIAogICAgIGRlZiBjcmVh
dGVfZHJpdmVyKHNlbGYsIHdvcmtlcl9udW1iZXIpOgogICAgICAgICAiIiJTdGFydHMgYSBuZXcg
RHJpdmVyIGFuZCByZXR1cm5zIGEgaGFuZGxlIHRvIGl0LiIiIgpAQCAtMjU4LDggKzI1MCw3IEBA
IGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICAgICBCYXNpY2FsbHkgdGhpcyBz
dHJpbmcgc2hvdWxkIGNvbnRhaW4gdGhlIGVxdWl2YWxlbnQgb2YgYQogICAgICAgICB0ZXN0X2V4
cGVjdGF0aW9ucyBmaWxlLiBTZWUgdGVzdF9leHBlY3RhdGlvbnMucHkgZm9yIG1vcmUgZGV0YWls
cy4iIiIKICAgICAgICAgZXhwZWN0YXRpb25zX3BhdGggPSBzZWxmLnBhdGhfdG9fdGVzdF9leHBl
Y3RhdGlvbnNfZmlsZSgpCi0gICAgICAgIHdpdGggY29kZWNzLm9wZW4oZXhwZWN0YXRpb25zX3Bh
dGgsICJyIiwgInV0Zi04IikgYXMgZmlsZToKLSAgICAgICAgICAgIHJldHVybiBmaWxlLnJlYWQo
KQorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShleHBlY3Rh
dGlvbnNfcGF0aCkKIAogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZik6
CiAgICAgICAgIHRyeToKQEAgLTI2NywxMCArMjU4LDkgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJh
c2UuUG9ydCk6CiAgICAgICAgICAgICAgICAgJ2xheW91dF90ZXN0cycsICd0ZXN0X2V4cGVjdGF0
aW9ucy50eHQnKQogICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6CiAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3ZlcnJpZGVzX3BhdGgp
OgorICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMob3ZlcnJpZGVzX3BhdGgp
OgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihvdmVy
cmlkZXNfcGF0aCwgInIiLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgcmV0dXJuIGZp
bGUucmVhZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxl
KG92ZXJyaWRlc19wYXRoKQogCiAgICAgZGVmIHNraXBwZWRfbGF5b3V0X3Rlc3RzKHNlbGYsIGV4
dHJhX3Rlc3RfZmlsZXM9Tm9uZSk6CiAgICAgICAgIGV4cGVjdGF0aW9uc19zdHIgPSBzZWxmLnRl
c3RfZXhwZWN0YXRpb25zKCkKQEAgLTMxOSw4ICszMDksOCBAQCBjbGFzcyBDaHJvbWl1bVBvcnQo
YmFzZS5Qb3J0KToKICAgICAgICAgICAgICAgICBkZWJ1Z19wYXRoID0gc2VsZi5fcGF0aF90b19k
cml2ZXIoJ0RlYnVnJykKICAgICAgICAgICAgICAgICByZWxlYXNlX3BhdGggPSBzZWxmLl9wYXRo
X3RvX2RyaXZlcignUmVsZWFzZScpCiAKLSAgICAgICAgICAgICAgICBkZWJ1Z19tdGltZSA9IG9z
LnN0YXQoZGVidWdfcGF0aCkuc3RfbXRpbWUKLSAgICAgICAgICAgICAgICByZWxlYXNlX210aW1l
ID0gb3Muc3RhdChyZWxlYXNlX3BhdGgpLnN0X210aW1lCisgICAgICAgICAgICAgICAgZGVidWdf
bXRpbWUgPSBzZWxmLl9maWxlc3lzdGVtLm10aW1lKGRlYnVnX3BhdGgpCisgICAgICAgICAgICAg
ICAgcmVsZWFzZV9tdGltZSA9IHNlbGYuX2ZpbGVzeXN0ZW0ubXRpbWUocmVsZWFzZV9wYXRoKQog
CiAgICAgICAgICAgICAgICAgaWYgKGRlYnVnX210aW1lID4gcmVsZWFzZV9tdGltZSBhbmQgY29u
ZmlndXJhdGlvbiA9PSAnUmVsZWFzZScgb3IKICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZV9t
dGltZSA+IGRlYnVnX210aW1lIGFuZCBjb25maWd1cmF0aW9uID09ICdEZWJ1ZycpOgpAQCAtMzYz
LDcgKzM1Myw3IEBAIGNsYXNzIENocm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAg
c2VsZi5fd29ya2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIKICAgICAgICAgc2VsZi5faW1hZ2Vf
cGF0aCA9IE5vbmUKICAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdwaXhlbF90ZXN0
cycpOgotICAgICAgICAgICAgc2VsZi5faW1hZ2VfcGF0aCA9IG9zLnBhdGguam9pbigKKyAgICAg
ICAgICAgIHNlbGYuX2ltYWdlX3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oCiAgICAgICAg
ICAgICAgICAgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdyZXN1bHRzX2RpcmVjdG9yeScpLAogICAg
ICAgICAgICAgICAgICdwbmdfcmVzdWx0JXMucG5nJyAlIHNlbGYuX3dvcmtlcl9udW1iZXIpCiAK
QEAgLTQ1NSw5ICs0NDUsOCBAQCBjbGFzcyBDaHJvbWl1bURyaXZlcihiYXNlLkRyaXZlcik6CiAg
ICAgZGVmIF9vdXRwdXRfaW1hZ2Uoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGltYWdl
IG91dHB1dCB3aGljaCBkcml2ZXIgZ2VuZXJhdGVkLiIiIgogICAgICAgICBwbmdfcGF0aCA9IHNl
bGYuX2ltYWdlX3BhdGgKLSAgICAgICAgaWYgcG5nX3BhdGggYW5kIG9zLnBhdGguaXNmaWxlKHBu
Z19wYXRoKToKLSAgICAgICAgICAgIHdpdGggb3BlbihwbmdfcGF0aCwgJ3JiJykgYXMgaW1hZ2Vf
ZmlsZToKLSAgICAgICAgICAgICAgICByZXR1cm4gaW1hZ2VfZmlsZS5yZWFkKCkKKyAgICAgICAg
aWYgcG5nX3BhdGggYW5kIHNlbGYuX2ZpbGVzeXN0ZW0uaXNmaWxlKHBuZ19wYXRoKToKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUocG5nX3BhdGgp
CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91
bml0dGVzdC5weQppbmRleCA0M2JmYmQ0OGU5NGNlYWEyZDAyN2M5NTVjNGJjMTUyYzFkZDdiMTMw
Li41YTAyY2FlNGNhYjJjNWQzMmU2MWE3Zjg4MWJlMzJlYmUzYWJkNTIyIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fdW5pdHRlc3QucHkKQEAgLTMyLDkgKzMyLDExIEBAIGltcG9ydCBTdHJpbmdJTwogCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3Rlc3RpbmcKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlX21vY2sKK2Zyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCiBmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0
IG1vY2t0b29sCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogCisK
IGltcG9ydCBjaHJvbWl1bQogaW1wb3J0IGNocm9taXVtX2xpbnV4CiBpbXBvcnQgY2hyb21pdW1f
bWFjCkBAIC0xMDAsNyArMTAyLDggQEAgY2xhc3MgQ2hyb21pdW1Qb3J0VGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKICAgICAgICAg
ICAgIGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0Ll9faW5pdF9fKHNlbGYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X25h
bWU9J3Rlc3QtcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcHRpb25zPW9wdGlvbnMpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPW9wdGlvbnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtPWZp
bGVzeXN0ZW1fbW9jay5Nb2NrRmlsZVN5c3RlbSgpKQogCiAgICAgICAgIGRlZiBkZWZhdWx0X2Nv
bmZpZ3VyYXRpb24oc2VsZik6CiAgICAgICAgICAgICBzZWxmLmRlZmF1bHRfY29uZmlndXJhdGlv
bl9jYWxsZWQgPSBUcnVlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2NvbmZpZy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY29uZmlnLnB5CmluZGV4IGUwOGVkOWQ5YzMzNzY4MTZmNjdhZDVmY2IzMDUyZTIz
ZDUxMTdlNWQuLjYwMTY2Mzk2YWFiMGE2ZWFjZjlhOGQ0NmQ1NjQxNDNlNDJhOTc4ODYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnLnB5
CkBAIC0zMiw4ICszMiw2IEBACiAjIEZJWE1FOiBUaGlzIGZpbGUgbmVlZHMgdG8gYmUgdW5pZmll
ZCB3aXRoIGNvbW1vbi9jaGVja291dC9zY20ucHkgYW5kCiAjIGNvbW1vbi9jb25maWcvcG9ydHMu
cHkgLgogCi1pbXBvcnQgb3MKLQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBs
b2d1dGlscwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmUKIApA
QCAtMTMxLDcgKzEyOSw3IEBAIGNsYXNzIENvbmZpZyhvYmplY3QpOgogICAgICAgICAjCiAgICAg
ICAgICMgVGhpcyBjb2RlIHdpbGwgYWxzbyB3b3JrIGlmIHRoZXJlIGlzIG5vIFNDTSBzeXN0ZW0g
YXQgYWxsLgogICAgICAgICBpZiBub3Qgc2VsZi5fd2Via2l0X2Jhc2VfZGlyOgotICAgICAgICAg
ICAgYWJzcGF0aCA9IG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykKKyAgICAgICAgICAgIGFic3Bh
dGggPSBzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgoX19maWxlX18pCiAgICAgICAgICAgICBzZWxm
Ll93ZWJraXRfYmFzZV9kaXIgPSBhYnNwYXRoWzA6YWJzcGF0aC5maW5kKCdUb29scycpIC0gMV0K
ICAgICAgICAgcmV0dXJuIHNlbGYuX3dlYmtpdF9iYXNlX2RpcgogCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggMmFkY2VjMDcwOTkz
NGFlMWMwMWMwZGYxODdlZWExZTA2OGRmMjkwOC4uNWRmNWMyZDlkNjIxOWJmOTQ2OTQ5NmYyNTc0
ZTYzYzE4MTEyYWRlNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvdGVzdC5weQpAQCAtMTQ2LDEwICsxNDYsMTAgQEAgTEFZT1VUX1RFU1RfRElSID0g
Jy90ZXN0LmNoZWNrb3V0L0xheW91dFRlc3RzJwogIyBpbiBvcmRlciB0byBmdWxseSBjb250cm9s
IHRoZSB0ZXN0IG91dHB1dCBhbmQgdG8gZGVtb25zdHJhdGUgdGhhdAogIyB3ZSBkb24ndCBuZWVk
IGEgcmVhbCBmaWxlc3lzdGVtIHRvIHJ1biB0aGUgdGVzdHMuCiAKLWRlZiB1bml0X3Rlc3RfZmls
ZXN5c3RlbSh0ZXN0X2xpc3Q9Tm9uZSk6CitkZWYgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oZmlsZXM9
Tm9uZSk6CiAgICAgIiIiUmV0dXJuIHRoZSBGaWxlU3lzdGVtIG9iamVjdCB1c2VkIGJ5IHRoZSB1
bml0IHRlc3RzLiIiIgotICAgIHRlc3RfbGlzdCA9IHRlc3RfbGlzdCBvciB1bml0X3Rlc3RfbGlz
dCgpCi0gICAgZmlsZXMgPSB7fQorICAgIHRlc3RfbGlzdCA9IHVuaXRfdGVzdF9saXN0KCkKKyAg
ICBmaWxlcyA9IGZpbGVzIG9yIHt9CiAKICAgICBkZWYgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsIHN1
ZmZpeCwgY29udGVudHMpOgogICAgICAgICBkaXJuYW1lID0gdGVzdC5uYW1lWzA6dGVzdC5uYW1l
LnJmaW5kKCcvJyldCkBAIC0xODQsMTYgKzE4NCwzMiBAQCBXT05URklYIFNLSVAgOiBmYWlsdXJl
cy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0gQ1JBU0gKIFdPTlRGSVggU0tJUCA6IGZhaWx1cmVz
L2V4cGVjdGVkL2V4Y2VwdGlvbi5odG1sID0gQ1JBU0gKICIiIgogCi0gICAgcmV0dXJuIGZpbGVz
eXN0ZW1fbW9jay5Nb2NrRmlsZVN5c3RlbShmaWxlcykKKyAgICBmcyA9IGZpbGVzeXN0ZW1fbW9j
ay5Nb2NrRmlsZVN5c3RlbShmaWxlcykKKyAgICBmcy5fdGVzdHMgPSB0ZXN0X2xpc3QKKyAgICBy
ZXR1cm4gZnMKIAogCiBjbGFzcyBUZXN0UG9ydChiYXNlLlBvcnQpOgogICAgICIiIlRlc3QgaW1w
bGVtZW50YXRpb24gb2YgdGhlIFBvcnQgaW50ZXJmYWNlLiIiIgogCiAgICAgZGVmIF9faW5pdF9f
KHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5fdGVzdHMgPSB1bml0X3Rlc3RfbGlzdCgp
Ci0gICAgICAgIGlmICdmaWxlc3lzdGVtJyBub3QgaW4ga3dhcmdzOgotICAgICAgICAgICAga3dh
cmdzWydmaWxlc3lzdGVtJ10gPSB1bml0X3Rlc3RfZmlsZXN5c3RlbShzZWxmLl90ZXN0cykKKyAg
ICAgICAgIyBGSVhNRTogd2hhdCBoYXBwZW5zIGlmIHdlJ3JlIG5vdCBwYXNzZWQgaW4gdGhlIHRl
c3QgZmlsZXN5c3RlbQorICAgICAgICAjIGFuZCB0aGUgdGVzdHMgZG9uJ3QgbWF0Y2ggd2hhdCdz
IGluIHRoZSBmaWxlc3lzdGVtPworICAgICAgICAjCisgICAgICAgICMgV2UnbGwgbGVhdmUgYXMg
aXMgZm9yIG5vdyB0byBhdm9pZCB1bm5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMgd2hpbGUKKyAgICAg
ICAgIyBjb252ZXJ0aW5nIGFsbCBvZiB0aGUgdW5pdCB0ZXN0cyBvdmVyIHRvIHVzaW5nCisgICAg
ICAgICMgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKS4gSWYgdGhpbmdzIGdldCBvdXQgb2Ygc3luYyB0
aGUgdGVzdHMgc2hvdWxkCisgICAgICAgICMgZmFpbCBpbiBmYWlybHkgb2J2aW91cyB3YXlzLiBF
dmVudHVhbGx5IHdlIHdhbnQgdG8ganVzdCBkbzoKKyAgICAgICAgIworICAgICAgICAjIGFzc2Vy
dCBrd2FyZ3NbJ2ZpbGVzeXN0ZW0nXS5fdGVzdHMKKyAgICAgICAgIyBzZWxmLl90ZXN0cyA9IGt3
YXJnc1snZmlsZXN5c3RlbSddLl90ZXN0cworCisgICAgICAgIGlmICdmaWxlc3lzdGVtJyBub3Qg
aW4ga3dhcmdzIG9yIGt3YXJnc1snZmlsZXN5c3RlbSddIGlzIE5vbmU6CisgICAgICAgICAgICBr
d2FyZ3NbJ2ZpbGVzeXN0ZW0nXSA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKKyAgICAgICAgICAg
IHNlbGYuX3Rlc3RzID0ga3dhcmdzWydmaWxlc3lzdGVtJ10uX3Rlc3RzCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBzZWxmLl90ZXN0cyA9IHVuaXRfdGVzdF9saXN0KCkKKwogICAgICAgICBr
d2FyZ3Muc2V0ZGVmYXVsdCgncG9ydF9uYW1lJywgJ3Rlc3QnKQogICAgICAgICBiYXNlLlBvcnQu
X19pbml0X18oc2VsZiwgKiprd2FyZ3MpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5weQpp
bmRleCBlYWJkZmQ5YzJiMGJlMDA4ZGU0YjhiYzc2NjEyZjdkNzVmZmUzNTA1Li5hNjg5NTBhOTFj
MzVlYjY5ZDJiYWI1MWRiYTIwNTZjMTkzMmFiYjEwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0
ZXN0LnB5CkBAIC0yNiw3ICsyNiw2IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
Ci1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogCiBpbXBvcnQgYmFzZQpAQCAtMzcsOCArMzYs
OCBAQCBjbGFzcyBUZXN0RmlsZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVz
dF9maW5kX25vX3BhdGhzX3NwZWNpZmllZChzZWxmKToKICAgICAgICAgcG9ydCA9IGJhc2UuUG9y
dCgpCiAgICAgICAgIGxheW91dF90ZXN0c19kaXIgPSBwb3J0LmxheW91dF90ZXN0c19kaXIoKQot
ICAgICAgICBwb3J0LmxheW91dF90ZXN0c19kaXIgPSBsYW1iZGE6IG9zLnBhdGguam9pbihsYXlv
dXRfdGVzdHNfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnZmFzdCcsICdodG1sJykKKyAgICAgICAgcG9ydC5sYXlvdXRfdGVzdHNfZGly
ID0gbGFtYmRhOiBwb3J0Ll9maWxlc3lzdGVtLmpvaW4obGF5b3V0X3Rlc3RzX2RpciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2Zhc3QnLCAnaHRtbCcpCiAgICAgICAgIHRlc3RzID0gdGVzdF9maWxlcy5maW5kKHBvcnQsIFtd
KQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RzLCAwKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79499</attachid>
            <date>2011-01-19 15:14:25 -0800</date>
            <delta_ts>2011-01-19 17:49:26 -0800</delta_ts>
            <desc>keep a copy of the file list; using a list comprehension didn&apos;t work</desc>
            <filename>bug-52748-20110119151424.patch</filename>
            <type>text/plain</type>
            <size>23582</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxOGMz
M2NmOWRiZTk1NDQ0YzUxMzFiNzM2ZDgyNjA5Njg1YjUyMTRkLi5lZmJiOWI1YTY4YTI3MjE2NTFk
Zjc4ZDNlZTY3NzNjOGQyZTExZTZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAKIDIwMTEtMDEtMTkgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgYWRkIGEgLnNlcCBwcm9wZXJ0eSwgYWJzcGF0aCgpLCBpc2Ficygp
LCBtdGltZSgpLCBhbmQKKyAgICAgICAgb3Blbl90ZXh0X2ZpbGVfZm9yX3dyaXRpbmcoKSB0byBm
aWxlc3lzdGVtIG1vZHVsZXMuIFNvbWUgb2YKKyAgICAgICAgdGhlc2UgcHJvcGVydGllcyBhcmUg
bm90IG5lZWRlZCBpbiB0aGlzIHBhdGNoIGJ1dCB3aWxsIGJlIG5lZWRlZAorICAgICAgICBpbiBz
dWJzZXF1ZW50IHBhdGNoZXMgKEknbSBkb2luZyB0aGlzIHRvIGF2b2lkIGhhdmluZyB0byB0cmFj
aworICAgICAgICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBhIHNpbmdsZSBmaWxlKS4KKworICAgICAg
ICBBbHNvLCBjaGFuZ2UgbW9zdCBvZiB0aGUgcG9ydC8qIG1vZHVsZXMgdG8gdXNlIHRoZSBmaWxl
c3lzdGVtCisgICAgICAgIG9iamVjdHMgaW5zdGVhZCBvZiByZWZlcmVuY2luZyB0aGUgZmlsZXN5
c3RlbSBkaXJlY3RseS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTI3NDgKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9maWxlc3lzdGVtLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9maWxlc3lzdGVtX21vY2sucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5OgorCisy
MDExLTAxLTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAgICAg
IFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCiAKICAgICAgICAgQ2hhbmdlIHdlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3QucHkgdG8gdXNlIHRoZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQppbmRleCA2ZGNmMjA3MjAxNmNjMjdi
MjFiOGMzYjBkNDM1NTYxOWMxODFjNDhlLi5kNzUyNzZlYjNiMzVmYjhhYjllZWI3OTRlMzU5MjM2
M2ZlZjZkNDU5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbS5weQpAQCAtNDQsNiArNDQsMTEgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmpl
Y3QpOgogCiAgICAgVW5sZXNzIG90aGVyd2lzZSBub3RlZCwgYWxsIHBhdGhzIGFyZSBhbGxvd2Vk
IHRvIGJlIGVpdGhlciBhYnNvbHV0ZQogICAgIG9yIHJlbGF0aXZlLiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5zZXAgPSBvcy5zZXAKKworICAgIGRlZiBhYnNwYXRo
KHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKHBhdGgpCiAKICAg
ICBkZWYgYmFzZW5hbWUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIldyYXBzIG9zLnBhdGguYmFz
ZW5hbWUoKS4iIiIKQEAgLTEwMCw2ICsxMDUsMTAgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3Qp
OgogICAgICAgICAiIiJXcmFwcyBnbG9iLmdsb2IoKS4iIiIKICAgICAgICAgcmV0dXJuIGdsb2Iu
Z2xvYihwYXRoKQogCisgICAgZGVmIGlzYWJzKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1
cm4gd2hldGhlciB0aGUgcGF0aCBpcyBhbiBhYnNvbHV0ZSBwYXRoLiIiIgorICAgICAgICByZXR1
cm4gb3MucGF0aC5pc2FicyhwYXRoKQorCiAgICAgZGVmIGlzZmlsZShzZWxmLCBwYXRoKToKICAg
ICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIHBhdGggcmVmZXJzIHRvIGEgZmlsZS4iIiIKICAg
ICAgICAgcmV0dXJuIG9zLnBhdGguaXNmaWxlKHBhdGgpCkBAIC0xNTksNiArMTY4LDkgQEAgY2xh
c3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgIGRlZiBtb3ZlKHNlbGYsIHNyYywgZGVzdCk6CiAg
ICAgICAgIHNodXRpbC5tb3ZlKHNyYywgZGVzdCkKIAorICAgIGRlZiBtdGltZShzZWxmLCBwYXRo
KToKKyAgICAgICAgcmV0dXJuIG9zLnN0YXQocGF0aCkuc3RfbXRpbWUKKwogICAgIGRlZiBub3Jt
cGF0aChzZWxmLCBwYXRoKToKICAgICAgICAgIiIiV3JhcHMgb3MucGF0aC5ub3JtcGF0aCgpLiIi
IgogICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChwYXRoKQpAQCAtMTY5LDYgKzE4MSwx
MyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIGYgPSBvcy5mZG9wZW4odGVt
cF9mZCwgJ3diJykKICAgICAgICAgcmV0dXJuIGYsIHRlbXBfbmFtZQogCisgICAgZGVmIG9wZW5f
dGV4dF9maWxlX2Zvcl93cml0aW5nKHNlbGYsIHBhdGgsIGFwcGVuZD1GYWxzZSk6CisgICAgICAg
ICIiIlJldHVybnMgYSBmaWxlIGhhbmRsZSBzdWl0YWJsZSBmb3Igd3JpdGluZyB0by4iIiIKKyAg
ICAgICAgbW9kZSA9ICd3JworICAgICAgICBpZiBhcHBlbmQ6CisgICAgICAgICAgICBtb2RlID0g
J3dhJworICAgICAgICByZXR1cm4gY29kZWNzLm9wZW4ocGF0aCwgbW9kZSwgJ3V0ZjgnKQorCiAg
ICAgZGVmIHJlYWRfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiB0
aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIHBhdGggYXMgYSBieXRlIHN0cmlu
Zy4iIiIKICAgICAgICAgd2l0aCBmaWxlKHBhdGgsICdyYicpIGFzIGY6CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQpp
bmRleCA4OGMxOGU4Y2E1ODY0M2MxNGRlYzA5MGFmY2JlOGE3YWRmNjkzNmNhLi4wMDA0OTQ0OTk0
ZjRiNzM1NDc3NDNlMGFkMTc4MDc1YWI5YzJlZDYwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKQEAgLTQzLDcg
KzQzLDkgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgICAgICAgICBu
b3QgZXhpc3QuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmZpbGVzID0gZmlsZXMgb3Ige30K
LSAgICAgICAgc2VsZi5fY3VycmVudF90bXBubyA9IDAKKyAgICAgICAgc2VsZi53cml0dGVuX2Zp
bGVzID0ge30KKyAgICAgICAgc2VsZi5zZXAgPSAnLycKKyAgICAgICAgc2VsZi5jdXJyZW50X3Rt
cG5vID0gMAogCiAgICAgZGVmIF9yYWlzZV9ub3RfZm91bmQoc2VsZiwgcGF0aCk6CiAgICAgICAg
IHJhaXNlIElPRXJyb3IoZXJybm8uRU5PRU5ULCBwYXRoLCBvcy5zdHJlcnJvcihlcnJuby5FTk9F
TlQpKQpAQCAtNTIsNiArNTQsOSBAQCBjbGFzcyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgogICAg
ICAgICBpZHggPSBwYXRoLnJmaW5kKCcvJykKICAgICAgICAgcmV0dXJuIChwYXRoWzA6aWR4XSwg
cGF0aFtpZHggKyAxOl0pCiAKKyAgICBkZWYgYWJzcGF0aChzZWxmLCBwYXRoKToKKyAgICAgICAg
cmV0dXJuIHBhdGgKKwogICAgIGRlZiBiYXNlbmFtZShzZWxmLCBwYXRoKToKICAgICAgICAgcmV0
dXJuIHNlbGYuX3NwbGl0KHBhdGgpWzFdCiAKQEAgLTExMSw2ICsxMTYsOSBAQCBjbGFzcyBNb2Nr
RmlsZVN5c3RlbShvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIFtm
IGZvciBmIGluIHNlbGYuZmlsZXMgaWYgZiA9PSBwYXRoXQogCisgICAgZGVmIGlzYWJzKHNlbGYs
IHBhdGgpOgorICAgICAgICByZXR1cm4gcGF0aC5zdGFydHN3aXRoKCcvJykKKwogICAgIGRlZiBp
c2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBwYXRoIGluIHNlbGYuZmlsZXMgYW5k
IHNlbGYuZmlsZXNbcGF0aF0gaXMgbm90IE5vbmUKIApAQCAtMTE5LDcgKzEyNywxMiBAQCBjbGFz
cyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAg
ICAgIGlmIG5vdCBwYXRoLmVuZHN3aXRoKCcvJyk6CiAgICAgICAgICAgICBwYXRoICs9ICcvJwot
ICAgICAgICByZXR1cm4gYW55KGYuc3RhcnRzd2l0aChwYXRoKSBmb3IgZiBpbiBzZWxmLmZpbGVz
KQorCisgICAgICAgICMgV2UgbmVlZCB0byB1c2UgYSBjb3B5IG9mIHRoZSBrZXlzIGhlcmUgaW4g
b3JkZXIgdG8gYXZvaWQgc3dpdGNoaW5nCisgICAgICAgICMgdG8gYSBkaWZmZXJlbnQgdGhyZWFk
IGFuZCBwb3RlbnRpYWxseSBtb2RpZnlpbmcgdGhlIGRpY3QgaW4KKyAgICAgICAgIyBtaWQtaXRl
cmF0aW9uLgorICAgICAgICBmaWxlcyA9IHNlbGYuZmlsZXMua2V5cygpWzpdCisgICAgICAgIHJl
dHVybiBhbnkoZi5zdGFydHN3aXRoKHBhdGgpIGZvciBmIGluIGZpbGVzKQogCiAgICAgZGVmIGpv
aW4oc2VsZiwgKmNvbXBzKToKICAgICAgICAgcmV0dXJuIHJlLnN1YihyZS5lc2NhcGUob3MucGF0
aC5zZXApLCAnLycsIG9zLnBhdGguam9pbigqY29tcHMpKQpAQCAtMTQ0LDYgKzE1NywxMSBAQCBj
bGFzcyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBmaWxlcy5h
cHBlbmQocmVtYWluaW5nKQogICAgICAgICByZXR1cm4gZGlycyArIGZpbGVzCiAKKyAgICBkZWYg
bXRpbWUoc2VsZiwgcGF0aCk6CisgICAgICAgIGlmIHNlbGYuZXhpc3RzKHBhdGgpOgorICAgICAg
ICAgICAgcmV0dXJuIDAKKyAgICAgICAgc2VsZi5fcmFpc2Vfbm90X2ZvdW5kKHBhdGgpCisKICAg
ICBkZWYgX21rdGVtcChzZWxmLCBzdWZmaXg9JycsIHByZWZpeD0ndG1wJywgZGlyPU5vbmUsICoq
a3dhcmdzKToKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBkaXIgPSAnL19f
aW1fdG1wJwpAQCAtMTcwLDcgKzE4OCw3IEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6
CiAKICAgICAgICAgICAgICAgICAjIEZJWE1FOiBTaG91bGQgd2UgZGVsZXRlIG5vbi1lbXB0eSBk
aXJlY3Rvcmllcz8KICAgICAgICAgICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhz
ZWxmLl9kaXJlY3RvcnlfcGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0
ZW0ucm1kaXIoc2VsZi5fZGlyZWN0b3J5X3BhdGgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X2ZpbGVzeXN0ZW0ucm10cmVlKHNlbGYuX2RpcmVjdG9yeV9wYXRoKQogCiAgICAgICAgIHJldHVy
biBUZW1wb3JhcnlEaXJlY3RvcnkoZnM9c2VsZiwgKiprd2FyZ3MpCiAKQEAgLTE5MSwxNCArMjA5
LDE3IEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIHBhdGggPSBzZWxm
Ll9ta3RlbXAoc3VmZml4KQogICAgICAgICByZXR1cm4gV3JpdGFibGVGaWxlT2JqZWN0KHNlbGYs
IHBhdGgpLCBwYXRoCiAKKyAgICBkZWYgb3Blbl90ZXh0X2ZpbGVfZm9yX3dyaXRpbmcoc2VsZiwg
cGF0aCwgYXBwZW5kPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIFdyaXRhYmxlRmlsZU9iamVjdChz
ZWxmLCBwYXRoLCBhcHBlbmQpCisKICAgICBkZWYgcmVhZF90ZXh0X2ZpbGUoc2VsZiwgcGF0aCk6
CiAgICAgICAgIHJldHVybiBzZWxmLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkKIAogICAgIGRlZiBy
ZWFkX2JpbmFyeV9maWxlKHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBwYXRoIGluIHNlbGYuZmls
ZXM6Ci0gICAgICAgICAgICBpZiBzZWxmLmZpbGVzW3BhdGhdIGlzIE5vbmU6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fcmFpc2Vfbm90X2ZvdW5kKHBhdGgpCi0gICAgICAgICAgICByZXR1cm4gc2Vs
Zi5maWxlc1twYXRoXQorICAgICAgICAjIEludGVudGlvbmFsbHkgcmFpc2VzIEtleUVycm9yIGlm
IHdlIGRvbid0IHJlY29nbml6ZSB0aGUgcGF0aC4KKyAgICAgICAgaWYgc2VsZi5maWxlc1twYXRo
XSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fcmFpc2Vfbm90X2ZvdW5kKHBhdGgpCisgICAg
ICAgIHJldHVybiBzZWxmLmZpbGVzW3BhdGhdCiAKICAgICBkZWYgcmVtb3ZlKHNlbGYsIHBhdGgp
OgogICAgICAgICBpZiBzZWxmLmZpbGVzW3BhdGhdIGlzIE5vbmU6CkBAIC0yMjQsMTIgKzI0NSwx
MyBAQCBjbGFzcyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgogCiAgICAgZGVmIHdyaXRlX2JpbmFy
eV9maWxlKHNlbGYsIHBhdGgsIGNvbnRlbnRzKToKICAgICAgICAgc2VsZi5maWxlc1twYXRoXSA9
IGNvbnRlbnRzCisgICAgICAgIHNlbGYud3JpdHRlbl9maWxlc1twYXRoXSA9IGNvbnRlbnRzCiAK
IAogY2xhc3MgV3JpdGFibGVGaWxlT2JqZWN0KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGZzLCBwYXRoLCBhcHBlbmQ9RmFsc2UsIGVuY29kaW5nPU5vbmUpOgogICAgICAgICBzZWxm
LmZzID0gZnMKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnBhdGggPSBw
YXRoCiAgICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKICAgICAgICAgaWYgcGF0aCBub3QgaW4g
c2VsZi5mcy5maWxlcyBvciBub3QgYXBwZW5kOgogICAgICAgICAgICAgc2VsZi5mcy5maWxlc1tw
YXRoXSA9ICIiCkBAIC0yNDQsNSArMjY2LDUgQEAgY2xhc3MgV3JpdGFibGVGaWxlT2JqZWN0KG9i
amVjdCk6CiAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQogCiAgICAgZGVmIHdyaXRlKHNlbGYs
IHN0cik6Ci0gICAgICAgIHNlbGYuZnMuZmlsZXNbc2VsZi5uYW1lXSArPSBzdHIKLSAgICAgICAg
c2VsZi5mcy53cml0dGVuX2ZpbGVzW3NlbGYubmFtZV0gPSBzZWxmLmZzLmZpbGVzW3NlbGYubmFt
ZV0KKyAgICAgICAgc2VsZi5mcy5maWxlc1tzZWxmLnBhdGhdICs9IHN0cgorICAgICAgICBzZWxm
LmZzLndyaXR0ZW5fZmlsZXNbc2VsZi5wYXRoXSA9IHNlbGYuZnMuZmlsZXNbc2VsZi5wYXRoXQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9fX2lu
aXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvX19pbml0
X18ucHkKaW5kZXggZTNhZDZmNDRjMWQyZjI4MGRjOTcxNTU4YWJjMWZjZDY0MmE0N2MzNi4uNTlh
YjJlZjExMTA5YmJiMzAwZjNkZGQ1ZGI5MWIyMjJjODM2YzdmNSAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9fX2luaXRfXy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L19faW5pdF9fLnB5CkBAIC0zMCwz
ICszMCw1IEBACiAiIiJQb3J0LXNwZWNpZmljIGVudHJ5cG9pbnRzIGZvciB0aGUgbGF5b3V0IHRl
c3RzIHRlc3QgaW5mcmFzdHJ1Y3R1cmUuIiIiCiAKIGZyb20gZmFjdG9yeSBpbXBvcnQgZ2V0CisK
K2Zyb20gdGVzdCBpbXBvcnQgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCA5N2I1NGM5N2Q4MWZm
ZjkzOTk5MWU2YWViMmEzMzMxNjA4ODg4MTUyLi43NGMxMDE4NGM5ZDcyNmVmNzEzODU2Y2JlN2Ew
ZmI1MWYzMzU5YTM0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5CkBAIC0yNDQsNyArMjQ0LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgog
ICAgICAgICAgICAgICAgIHRyZWUpCiAgICAgICAgICAgICByZXN1bHRzX2ZpbGVuYW1lIC0gcmVs
YXRpdmUgcGF0aCBmcm9tIHRvcCBvZiB0cmVlIHRvIHRoZSByZXN1bHRzCiAgICAgICAgICAgICAg
ICAgZmlsZQotICAgICAgICAgICAgKG9zLnBhdGguam9pbiBvZiB0aGUgdHdvIGdpdmVzIHlvdSB0
aGUgZnVsbCBwYXRoIHRvIHRoZSBmaWxlLAorICAgICAgICAgICAgKHBvcnQuam9pbigpIG9mIHRo
ZSB0d28gZ2l2ZXMgeW91IHRoZSBmdWxsIHBhdGggdG8gdGhlIGZpbGUsCiAgICAgICAgICAgICAg
ICAgdW5sZXNzIE5vbmUgd2FzIHJldHVybmVkLikKICAgICAgICAgUmV0dXJuIHZhbHVlcyB3aWxs
IGJlIGluIHRoZSBmb3JtYXQgYXBwcm9wcmlhdGUgZm9yIHRoZSBjdXJyZW50CiAgICAgICAgIHBs
YXRmb3JtIChlLmcuLCAiXFwiIGZvciBwYXRoIHNlcGFyYXRvcnMgb24gV2luZG93cykuIElmIHRo
ZSByZXN1bHRzCkBAIC0yNTUsNyArMjU1LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICBjb25qdW5jdGlvbiB3aXRoIHRoZSBvdGhlciBiYXNlbGluZSBhbmQgZmlsZW5hbWUgcm91dGlu
ZXMgdGhhdCBhcmUKICAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMuCiAgICAgICAgICIiIgotICAg
ICAgICB0ZXN0bmFtZSA9IG9zLnBhdGguc3BsaXRleHQoc2VsZi5yZWxhdGl2ZV90ZXN0X2ZpbGVu
YW1lKGZpbGVuYW1lKSlbMF0KKyAgICAgICAgdGVzdG5hbWUgPSBzZWxmLl9maWxlc3lzdGVtLnNw
bGl0ZXh0KHNlbGYucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxlbmFtZSkpWzBdCiAKICAgICAg
ICAgYmFzZWxpbmVfZmlsZW5hbWUgPSB0ZXN0bmFtZSArICctZXhwZWN0ZWQnICsgc3VmZml4CiAK
QEAgLTM2MCw3ICszNjAsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAg
cHJvdG9jb2wgPSAiaHR0cCIKICAgICAgICAgICAgIHJldHVybiAiJXM6Ly8xMjcuMC4wLjE6JXUv
JXMiICUgKHByb3RvY29sLCBwb3J0LCByZWxhdGl2ZV9wYXRoKQogCi0gICAgICAgIHJldHVybiBw
YXRoLmFic3BhdGhfdG9fdXJpKG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSkpCisgICAgICAgIHJl
dHVybiBwYXRoLmFic3BhdGhfdG9fdXJpKHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0aChmaWxlbmFt
ZSkpCiAKICAgICBkZWYgdGVzdHMoc2VsZiwgcGF0aHMpOgogICAgICAgICAiIiJSZXR1cm4gdGhl
IGxpc3Qgb2YgdGVzdHMgZm91bmQgKHJlbGF0aXZlIHRvIGxheW91dF90ZXN0c19kaXIoKS4iIiIK
QEAgLTcwMiw3ICs3MDIsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgZGVmIHByZXR0eV9w
YXRjaF90ZXh0KHNlbGYsIGRpZmZfcGF0aCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9wcmV0dHlf
cGF0Y2hfYXZhaWxhYmxlOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ByZXR0eV9wYXRjaF9l
cnJvcl9odG1sCi0gICAgICAgIGNvbW1hbmQgPSAoInJ1YnkiLCAiLUkiLCBvcy5wYXRoLmRpcm5h
bWUoc2VsZi5fcHJldHR5X3BhdGNoX3BhdGgpLAorICAgICAgICBjb21tYW5kID0gKCJydWJ5Iiwg
Ii1JIiwgc2VsZi5fZmlsZXN5c3RlbS5kaXJuYW1lKHNlbGYuX3ByZXR0eV9wYXRjaF9wYXRoKSwK
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9wcmV0dHlfcGF0Y2hfcGF0aCwgZGlmZl9wYXRoKQog
ICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIERpZmZzIGFyZSB0cmVhdGVkIGFzIGJpbmFyeSAo
d2UgcGFzcyBkZWNvZGVfb3V0cHV0PUZhbHNlKSBhcyB0aGV5CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKaW5k
ZXggOGQ1ODZlMzU0ZTQyZjAzOTNjNmM5NmZiYmUxMDc2MGJkMzcxODVlZS4uNzJmMmQwNWE0MmFk
ZTljYWNmYzk3MTA4OGIxOTM5NzA1OGE3ZDUzOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQpAQCAtMjcs
NyArMjcsNiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwog
aW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTE5NCw3ICsx
OTMsNyBAQCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rf
ZmlsZW5hbWVfdG9fdXJpKHNlbGYpOgogICAgICAgICBwb3J0ID0gYmFzZS5Qb3J0KCkKICAgICAg
ICAgbGF5b3V0X3Rlc3RfZGlyID0gcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkKLSAgICAgICAgdGVz
dF9maWxlID0gb3MucGF0aC5qb2luKGxheW91dF90ZXN0X2RpciwgImZvbyIsICJiYXIuaHRtbCIp
CisgICAgICAgIHRlc3RfZmlsZSA9IHBvcnQuX2ZpbGVzeXN0ZW0uam9pbihsYXlvdXRfdGVzdF9k
aXIsICJmb28iLCAiYmFyLmh0bWwiKQogCiAgICAgICAgICMgT24gV2luZG93cywgYWJzb2x1dGUg
cGF0aHMgYXJlIG9mIHRoZSBmb3JtICJjOlxmb28udHh0Ii4gSG93ZXZlciwKICAgICAgICAgIyBh
bGwgY3VycmVudCBicm93c2VycyAoZXhjZXB0IGZvciBPcGVyYSkgbm9ybWFsaXplIGZpbGUgVVJM
cyBieQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW0ucHkKaW5kZXggOWFhMDk0NmY4OWJlYTYxNjViMzNjZTU1NDNmNTQyMzUzMjRiYjJi
NC4uZWViZjg1MzBjZTA5ZWJiMDBhNTJhMmZlNjkzMjc3NWQ2MmE3NmU5NSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBA
IC0yOSwxOCArMjksMTIgQEAKIAogIiIiQ2hyb21pdW0gaW1wbGVtZW50YXRpb25zIG9mIHRoZSBQ
b3J0IGludGVyZmFjZS4iIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVu
dAotCi1pbXBvcnQgY29kZWNzCiBpbXBvcnQgZXJybm8KIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQg
b3MKIGltcG9ydCByZQotaW1wb3J0IHNodXRpbAogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN1YnBy
b2Nlc3MKIGltcG9ydCBzeXMKLWltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKIGltcG9ydCB3
ZWJicm93c2VyCiAKQEAgLTcxLDcgKzY1LDcgQEAgZGVmIGNoZWNrX2ZpbGVfZXhpc3RzKHBhdGhf
dG9fZmlsZSwgZmlsZV9kZXNjcmlwdGlvbiwgb3ZlcnJpZGVfc3RlcD1Ob25lLAogICAgICAgICAg
ICAgeW91J3JlIGxvb2tpbmcgZm9yIChlLmcuLCAiSFRUUCBTZXJ2ZXIiKS4gVXNlZCBmb3IgZXJy
b3IgbG9nZ2luZy4KICAgICAgICAgb3ZlcnJpZGVfc3RlcDogQW4gb3B0aW9uYWwgc3RyaW5nIHRv
IGJlIGxvZ2dlZCBpZiB0aGUgY2hlY2sgZmFpbHMuCiAgICAgICAgIGxvZ2dpbmc6IFdoZXRoZXIg
b3Igbm90IGxvZyB0aGUgZXJyb3IgbWVzc2FnZXMuIiIiCi0gICAgaWYgbm90IG9zLnBhdGguZXhp
c3RzKHBhdGhfdG9fZmlsZSk6CisgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHBh
dGhfdG9fZmlsZSk6CiAgICAgICAgIGlmIGxvZ2dpbmc6CiAgICAgICAgICAgICBfbG9nLmVycm9y
KCdVbmFibGUgdG8gZmluZCAlcycgJSBmaWxlX2Rlc2NyaXB0aW9uKQogICAgICAgICAgICAgX2xv
Zy5lcnJvcignICAgIGF0ICVzJyAlIHBhdGhfdG9fZmlsZSkKQEAgLTE0NSwxMyArMTM5LDExIEBA
IGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICAgICAgICAgICAgICAgIGRpZmZf
ZmlsZW5hbWU9Tm9uZSk6CiAgICAgICAgIGV4ZWN1dGFibGUgPSBzZWxmLl9wYXRoX3RvX2ltYWdl
X2RpZmYoKQogCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKLSAgICAgICAg
ZXhwZWN0ZWRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgImV4cGVjdGVkLnBuZyIp
Ci0gICAgICAgIHdpdGggb3BlbihleHBlY3RlZF9maWxlbmFtZSwgJ3crYicpIGFzIGZpbGU6Ci0g
ICAgICAgICAgICBmaWxlLndyaXRlKGV4cGVjdGVkX2NvbnRlbnRzKQotICAgICAgICBhY3R1YWxf
ZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgImFjdHVhbC5wbmciKQotICAgICAgICB3
aXRoIG9wZW4oYWN0dWFsX2ZpbGVuYW1lLCAndytiJykgYXMgZmlsZToKLSAgICAgICAgICAgIGZp
bGUud3JpdGUoYWN0dWFsX2NvbnRlbnRzKQorICAgICAgICB0ZW1wZGlyID0gc2VsZi5fZmlsZXN5
c3RlbS5ta2R0ZW1wKCkKKyAgICAgICAgZXhwZWN0ZWRfZmlsZW5hbWUgPSBzZWxmLl9maWxlc3lz
dGVtLmpvaW4oc3RyKHRlbXBkaXIpLCAiZXhwZWN0ZWQucG5nIikKKyAgICAgICAgc2VsZi5fZmls
ZXN5c3RlbS53cml0ZV9iaW5hcnlfZmlsZShleHBlY3RlZF9maWxlbmFtZSwgZXhwZWN0ZWRfY29u
dGVudHMpCisgICAgICAgIGFjdHVhbF9maWxlbmFtZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihz
dHIodGVtcGRpciksICJhY3R1YWwucG5nIikKKyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0
ZV9iaW5hcnlfZmlsZShhY3R1YWxfZmlsZW5hbWUsIGFjdHVhbF9jb250ZW50cykKIAogICAgICAg
ICBpZiBkaWZmX2ZpbGVuYW1lOgogICAgICAgICAgICAgY21kID0gW2V4ZWN1dGFibGUsICctLWRp
ZmYnLCBleHBlY3RlZF9maWxlbmFtZSwKQEAgLTE4MCw3ICsxNzIsNyBAQCBjbGFzcyBDaHJvbWl1
bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFp
c2UgZQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh0ZW1wZGly
LCBpZ25vcmVfZXJyb3JzPVRydWUpCisgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtLnJtdHJl
ZShzdHIodGVtcGRpcikpCiAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBkcml2ZXJf
bmFtZShzZWxmKToKQEAgLTE5MiwxNSArMTg0LDE1IEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNl
LlBvcnQpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBmdWxsIHBhdGggdG8gcGF0aCBtYWRlIGJ5
IGpvaW5pbmcgdGhlIHRvcCBvZiB0aGUKICAgICAgICAgQ2hyb21pdW0gc291cmNlIHRyZWUgYW5k
IHRoZSBsaXN0IG9mIHBhdGggY29tcG9uZW50cyBpbiB8KmNvbXBzfC4iIiIKICAgICAgICAgaWYg
bm90IHNlbGYuX2Nocm9taXVtX2Jhc2VfZGlyOgotICAgICAgICAgICAgYWJzcGF0aCA9IG9zLnBh
dGguYWJzcGF0aChfX2ZpbGVfXykKKyAgICAgICAgICAgIGFic3BhdGggPSBzZWxmLl9maWxlc3lz
dGVtLmFic3BhdGgoX19maWxlX18pCiAgICAgICAgICAgICBvZmZzZXQgPSBhYnNwYXRoLmZpbmQo
J3RoaXJkX3BhcnR5JykKICAgICAgICAgICAgIGlmIG9mZnNldCA9PSAtMToKLSAgICAgICAgICAg
ICAgICBzZWxmLl9jaHJvbWl1bV9iYXNlX2RpciA9IG9zLnBhdGguam9pbigKKyAgICAgICAgICAg
ICAgICBzZWxmLl9jaHJvbWl1bV9iYXNlX2RpciA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbigKICAg
ICAgICAgICAgICAgICAgICAgYWJzcGF0aFswOmFic3BhdGguZmluZCgnVG9vbHMnKV0sCiAgICAg
ICAgICAgICAgICAgICAgICdXZWJLaXQnLCAnY2hyb21pdW0nKQogICAgICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgICAgICBzZWxmLl9jaHJvbWl1bV9iYXNlX2RpciA9IGFic3BhdGhbMDpvZmZz
ZXRdCi0gICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5fY2hyb21pdW1fYmFzZV9kaXIs
ICpjb21wcykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9jaHJv
bWl1bV9iYXNlX2RpciwgKmNvbXBzKQogCiAgICAgZGVmIHBhdGhfdG9fdGVzdF9leHBlY3RhdGlv
bnNfZmlsZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNl
KCdMYXlvdXRUZXN0cycsICdwbGF0Zm9ybScsCkBAIC0yMTgsMTAgKzIxMCwxMCBAQCBjbGFzcyBD
aHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZik6CiAg
ICAgICAgICMgRGVsZXRlIHRoZSBkaXNrIGNhY2hlIGlmIGFueSB0byBlbnN1cmUgYSBjbGVhbiB0
ZXN0IHJ1bi4KICAgICAgICAgZHVtcF9yZW5kZXJfdHJlZV9iaW5hcnlfcGF0aCA9IHNlbGYuX3Bh
dGhfdG9fZHJpdmVyKCkKLSAgICAgICAgY2FjaGVkaXIgPSBvcy5wYXRoLnNwbGl0KGR1bXBfcmVu
ZGVyX3RyZWVfYmluYXJ5X3BhdGgpWzBdCi0gICAgICAgIGNhY2hlZGlyID0gb3MucGF0aC5qb2lu
KGNhY2hlZGlyLCAiY2FjaGUiKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjYWNoZWRpcik6
Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKGNhY2hlZGlyKQorICAgICAgICBjYWNoZWRpciA9
IHNlbGYuX2ZpbGVzeXN0ZW0uZGlybmFtZShkdW1wX3JlbmRlcl90cmVlX2JpbmFyeV9wYXRoKQor
ICAgICAgICBjYWNoZWRpciA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihjYWNoZWRpciwgImNhY2hl
IikKKyAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoY2FjaGVkaXIpOgorICAgICAg
ICAgICAgc2VsZi5fZmlsZXN5c3RlbS5ybXRyZWUoY2FjaGVkaXIpCiAKICAgICBkZWYgY3JlYXRl
X2RyaXZlcihzZWxmLCB3b3JrZXJfbnVtYmVyKToKICAgICAgICAgIiIiU3RhcnRzIGEgbmV3IERy
aXZlciBhbmQgcmV0dXJucyBhIGhhbmRsZSB0byBpdC4iIiIKQEAgLTI1OCw4ICsyNTAsNyBAQCBj
bGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgQmFzaWNhbGx5IHRoaXMgc3Ry
aW5nIHNob3VsZCBjb250YWluIHRoZSBlcXVpdmFsZW50IG9mIGEKICAgICAgICAgdGVzdF9leHBl
Y3RhdGlvbnMgZmlsZS4gU2VlIHRlc3RfZXhwZWN0YXRpb25zLnB5IGZvciBtb3JlIGRldGFpbHMu
IiIiCiAgICAgICAgIGV4cGVjdGF0aW9uc19wYXRoID0gc2VsZi5wYXRoX3RvX3Rlc3RfZXhwZWN0
YXRpb25zX2ZpbGUoKQotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGV4cGVjdGF0aW9uc19wYXRo
LCAiciIsICJ1dGYtOCIpIGFzIGZpbGU6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoZXhwZWN0YXRp
b25zX3BhdGgpCiAKICAgICBkZWYgdGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHNlbGYpOgog
ICAgICAgICB0cnk6CkBAIC0yNjcsMTAgKzI1OCw5IEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNl
LlBvcnQpOgogICAgICAgICAgICAgICAgICdsYXlvdXRfdGVzdHMnLCAndGVzdF9leHBlY3RhdGlv
bnMudHh0JykKICAgICAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yOgogICAgICAgICAgICAgcmV0
dXJuIE5vbmUKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG92ZXJyaWRlc19wYXRoKToK
KyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKG92ZXJyaWRlc19wYXRoKToK
ICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHdpdGggY29kZWNzLm9wZW4ob3ZlcnJp
ZGVzX3BhdGgsICJyIiwgInV0Zi04IikgYXMgZmlsZToKLSAgICAgICAgICAgIHJldHVybiBmaWxl
LnJlYWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShv
dmVycmlkZXNfcGF0aCkKIAogICAgIGRlZiBza2lwcGVkX2xheW91dF90ZXN0cyhzZWxmLCBleHRy
YV90ZXN0X2ZpbGVzPU5vbmUpOgogICAgICAgICBleHBlY3RhdGlvbnNfc3RyID0gc2VsZi50ZXN0
X2V4cGVjdGF0aW9ucygpCkBAIC0zMTksOCArMzA5LDggQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJh
c2UuUG9ydCk6CiAgICAgICAgICAgICAgICAgZGVidWdfcGF0aCA9IHNlbGYuX3BhdGhfdG9fZHJp
dmVyKCdEZWJ1ZycpCiAgICAgICAgICAgICAgICAgcmVsZWFzZV9wYXRoID0gc2VsZi5fcGF0aF90
b19kcml2ZXIoJ1JlbGVhc2UnKQogCi0gICAgICAgICAgICAgICAgZGVidWdfbXRpbWUgPSBvcy5z
dGF0KGRlYnVnX3BhdGgpLnN0X210aW1lCi0gICAgICAgICAgICAgICAgcmVsZWFzZV9tdGltZSA9
IG9zLnN0YXQocmVsZWFzZV9wYXRoKS5zdF9tdGltZQorICAgICAgICAgICAgICAgIGRlYnVnX210
aW1lID0gc2VsZi5fZmlsZXN5c3RlbS5tdGltZShkZWJ1Z19wYXRoKQorICAgICAgICAgICAgICAg
IHJlbGVhc2VfbXRpbWUgPSBzZWxmLl9maWxlc3lzdGVtLm10aW1lKHJlbGVhc2VfcGF0aCkKIAog
ICAgICAgICAgICAgICAgIGlmIChkZWJ1Z19tdGltZSA+IHJlbGVhc2VfbXRpbWUgYW5kIGNvbmZp
Z3VyYXRpb24gPT0gJ1JlbGVhc2UnIG9yCiAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfbXRp
bWUgPiBkZWJ1Z19tdGltZSBhbmQgY29uZmlndXJhdGlvbiA9PSAnRGVidWcnKToKQEAgLTM2Myw3
ICszNTMsNyBAQCBjbGFzcyBDaHJvbWl1bURyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAgIHNl
bGYuX3dvcmtlcl9udW1iZXIgPSB3b3JrZXJfbnVtYmVyCiAgICAgICAgIHNlbGYuX2ltYWdlX3Bh
dGggPSBOb25lCiAgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbigncGl4ZWxfdGVzdHMn
KToKLSAgICAgICAgICAgIHNlbGYuX2ltYWdlX3BhdGggPSBvcy5wYXRoLmpvaW4oCisgICAgICAg
ICAgICBzZWxmLl9pbWFnZV9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKAogICAgICAgICAg
ICAgICAgIHNlbGYuX3BvcnQuZ2V0X29wdGlvbigncmVzdWx0c19kaXJlY3RvcnknKSwKICAgICAg
ICAgICAgICAgICAncG5nX3Jlc3VsdCVzLnBuZycgJSBzZWxmLl93b3JrZXJfbnVtYmVyKQogCkBA
IC00NTUsOSArNDQ1LDggQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAg
IGRlZiBfb3V0cHV0X2ltYWdlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBpbWFnZSBv
dXRwdXQgd2hpY2ggZHJpdmVyIGdlbmVyYXRlZC4iIiIKICAgICAgICAgcG5nX3BhdGggPSBzZWxm
Ll9pbWFnZV9wYXRoCi0gICAgICAgIGlmIHBuZ19wYXRoIGFuZCBvcy5wYXRoLmlzZmlsZShwbmdf
cGF0aCk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocG5nX3BhdGgsICdyYicpIGFzIGltYWdlX2Zp
bGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGltYWdlX2ZpbGUucmVhZCgpCisgICAgICAgIGlm
IHBuZ19wYXRoIGFuZCBzZWxmLl9maWxlc3lzdGVtLmlzZmlsZShwbmdfcGF0aCk6CisgICAgICAg
ICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxlKHBuZ19wYXRoKQog
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5p
dHRlc3QucHkKaW5kZXggNDNiZmJkNDhlOTRjZWFhMmQwMjdjOTU1YzRiYzE1MmMxZGQ3YjEzMC4u
NWEwMmNhZTRjYWIyYzVkMzJlNjFhN2Y4ODFiZTMyZWJlM2FiZDUyMiAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X3VuaXR0ZXN0LnB5CkBAIC0zMiw5ICszMiwxMSBAQCBpbXBvcnQgU3RyaW5nSU8KIAogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBsb2d0ZXN0aW5nCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZV9tb2NrCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0gaW1wb3J0IGZpbGVzeXN0ZW1fbW9jawogZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBt
b2NrdG9vbAogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIAorCiBp
bXBvcnQgY2hyb21pdW0KIGltcG9ydCBjaHJvbWl1bV9saW51eAogaW1wb3J0IGNocm9taXVtX21h
YwpAQCAtMTAwLDcgKzEwMiw4IEBAIGNsYXNzIENocm9taXVtUG9ydFRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6CiAgICAgICAgICAg
ICBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydC5fX2luaXRfXyhzZWxmLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9uYW1l
PSd0ZXN0LXBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3B0aW9ucz1vcHRpb25zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1vcHRpb25zLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbT1maWxl
c3lzdGVtX21vY2suTW9ja0ZpbGVTeXN0ZW0oKSkKIAogICAgICAgICBkZWYgZGVmYXVsdF9jb25m
aWd1cmF0aW9uKHNlbGYpOgogICAgICAgICAgICAgc2VsZi5kZWZhdWx0X2NvbmZpZ3VyYXRpb25f
Y2FsbGVkID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jb25maWcucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2NvbmZpZy5weQppbmRleCBlMDhlZDlkOWMzMzc2ODE2ZjY3YWQ1ZmNiMzA1MmUyM2Q1
MTE3ZTVkLi42MDE2NjM5NmFhYjBhNmVhY2Y5YThkNDZkNTY0MTQzZTQyYTk3ODg2IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZy5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZy5weQpA
QCAtMzIsOCArMzIsNiBAQAogIyBGSVhNRTogVGhpcyBmaWxlIG5lZWRzIHRvIGJlIHVuaWZpZWQg
d2l0aCBjb21tb24vY2hlY2tvdXQvc2NtLnB5IGFuZAogIyBjb21tb24vY29uZmlnL3BvcnRzLnB5
IC4KIAotaW1wb3J0IG9zCi0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgbG9n
dXRpbHMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlCiAKQEAg
LTEzMSw3ICsxMjksNyBAQCBjbGFzcyBDb25maWcob2JqZWN0KToKICAgICAgICAgIwogICAgICAg
ICAjIFRoaXMgY29kZSB3aWxsIGFsc28gd29yayBpZiB0aGVyZSBpcyBubyBTQ00gc3lzdGVtIGF0
IGFsbC4KICAgICAgICAgaWYgbm90IHNlbGYuX3dlYmtpdF9iYXNlX2RpcjoKLSAgICAgICAgICAg
IGFic3BhdGggPSBvcy5wYXRoLmFic3BhdGgoX19maWxlX18pCisgICAgICAgICAgICBhYnNwYXRo
ID0gc2VsZi5fZmlsZXN5c3RlbS5hYnNwYXRoKF9fZmlsZV9fKQogICAgICAgICAgICAgc2VsZi5f
d2Via2l0X2Jhc2VfZGlyID0gYWJzcGF0aFswOmFic3BhdGguZmluZCgnVG9vbHMnKSAtIDFdCiAg
ICAgICAgIHJldHVybiBzZWxmLl93ZWJraXRfYmFzZV9kaXIKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CmluZGV4IDJhZGNlYzA3MDk5MzRh
ZTFjMDFjMGRmMTg3ZWVhMWUwNjhkZjI5MDguLjVkZjVjMmQ5ZDYyMTliZjk0Njk0OTZmMjU3NGU2
M2MxODExMmFkZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3QucHkKQEAgLTE0NiwxMCArMTQ2LDEwIEBAIExBWU9VVF9URVNUX0RJUiA9ICcv
dGVzdC5jaGVja291dC9MYXlvdXRUZXN0cycKICMgaW4gb3JkZXIgdG8gZnVsbHkgY29udHJvbCB0
aGUgdGVzdCBvdXRwdXQgYW5kIHRvIGRlbW9uc3RyYXRlIHRoYXQKICMgd2UgZG9uJ3QgbmVlZCBh
IHJlYWwgZmlsZXN5c3RlbSB0byBydW4gdGhlIHRlc3RzLgogCi1kZWYgdW5pdF90ZXN0X2ZpbGVz
eXN0ZW0odGVzdF9saXN0PU5vbmUpOgorZGVmIHVuaXRfdGVzdF9maWxlc3lzdGVtKGZpbGVzPU5v
bmUpOgogICAgICIiIlJldHVybiB0aGUgRmlsZVN5c3RlbSBvYmplY3QgdXNlZCBieSB0aGUgdW5p
dCB0ZXN0cy4iIiIKLSAgICB0ZXN0X2xpc3QgPSB0ZXN0X2xpc3Qgb3IgdW5pdF90ZXN0X2xpc3Qo
KQotICAgIGZpbGVzID0ge30KKyAgICB0ZXN0X2xpc3QgPSB1bml0X3Rlc3RfbGlzdCgpCisgICAg
ZmlsZXMgPSBmaWxlcyBvciB7fQogCiAgICAgZGVmIGFkZF9maWxlKGZpbGVzLCB0ZXN0LCBzdWZm
aXgsIGNvbnRlbnRzKToKICAgICAgICAgZGlybmFtZSA9IHRlc3QubmFtZVswOnRlc3QubmFtZS5y
ZmluZCgnLycpXQpAQCAtMTg0LDE2ICsxODQsMzIgQEAgV09OVEZJWCBTS0lQIDogZmFpbHVyZXMv
ZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IENSQVNICiBXT05URklYIFNLSVAgOiBmYWlsdXJlcy9l
eHBlY3RlZC9leGNlcHRpb24uaHRtbCA9IENSQVNICiAiIiIKIAotICAgIHJldHVybiBmaWxlc3lz
dGVtX21vY2suTW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCisgICAgZnMgPSBmaWxlc3lzdGVtX21vY2su
TW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCisgICAgZnMuX3Rlc3RzID0gdGVzdF9saXN0CisgICAgcmV0
dXJuIGZzCiAKIAogY2xhc3MgVGVzdFBvcnQoYmFzZS5Qb3J0KToKICAgICAiIiJUZXN0IGltcGxl
bWVudGF0aW9uIG9mIHRoZSBQb3J0IGludGVyZmFjZS4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYuX3Rlc3RzID0gdW5pdF90ZXN0X2xpc3QoKQot
ICAgICAgICBpZiAnZmlsZXN5c3RlbScgbm90IGluIGt3YXJnczoKLSAgICAgICAgICAgIGt3YXJn
c1snZmlsZXN5c3RlbSddID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oc2VsZi5fdGVzdHMpCisgICAg
ICAgICMgRklYTUU6IHdoYXQgaGFwcGVucyBpZiB3ZSdyZSBub3QgcGFzc2VkIGluIHRoZSB0ZXN0
IGZpbGVzeXN0ZW0KKyAgICAgICAgIyBhbmQgdGhlIHRlc3RzIGRvbid0IG1hdGNoIHdoYXQncyBp
biB0aGUgZmlsZXN5c3RlbT8KKyAgICAgICAgIworICAgICAgICAjIFdlJ2xsIGxlYXZlIGFzIGlz
IGZvciBub3cgdG8gYXZvaWQgdW5uZWNlc3NhcnkgZGVwZW5kZW5jaWVzIHdoaWxlCisgICAgICAg
ICMgY29udmVydGluZyBhbGwgb2YgdGhlIHVuaXQgdGVzdHMgb3ZlciB0byB1c2luZworICAgICAg
ICAjIHVuaXRfdGVzdF9maWxlc3lzdGVtKCkuIElmIHRoaW5ncyBnZXQgb3V0IG9mIHN5bmMgdGhl
IHRlc3RzIHNob3VsZAorICAgICAgICAjIGZhaWwgaW4gZmFpcmx5IG9idmlvdXMgd2F5cy4gRXZl
bnR1YWxseSB3ZSB3YW50IHRvIGp1c3QgZG86CisgICAgICAgICMKKyAgICAgICAgIyBhc3NlcnQg
a3dhcmdzWydmaWxlc3lzdGVtJ10uX3Rlc3RzCisgICAgICAgICMgc2VsZi5fdGVzdHMgPSBrd2Fy
Z3NbJ2ZpbGVzeXN0ZW0nXS5fdGVzdHMKKworICAgICAgICBpZiAnZmlsZXN5c3RlbScgbm90IGlu
IGt3YXJncyBvciBrd2FyZ3NbJ2ZpbGVzeXN0ZW0nXSBpcyBOb25lOgorICAgICAgICAgICAga3dh
cmdzWydmaWxlc3lzdGVtJ10gPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgICAgICAgICBz
ZWxmLl90ZXN0cyA9IGt3YXJnc1snZmlsZXN5c3RlbSddLl90ZXN0cworICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgc2VsZi5fdGVzdHMgPSB1bml0X3Rlc3RfbGlzdCgpCisKICAgICAgICAga3dh
cmdzLnNldGRlZmF1bHQoJ3BvcnRfbmFtZScsICd0ZXN0JykKICAgICAgICAgYmFzZS5Qb3J0Ll9f
aW5pdF9fKHNlbGYsICoqa3dhcmdzKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkKaW5k
ZXggZWFiZGZkOWMyYjBiZTAwOGRlNGI4YmM3NjYxMmY3ZDc1ZmZlMzUwNS4uYTY4OTUwYTkxYzM1
ZWI2OWQyYmFiNTFkYmEyMDU2YzE5MzJhYmIxMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVz
dC5weQpAQCAtMjYsNyArMjYsNiBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAot
aW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIAogaW1wb3J0IGJhc2UKQEAgLTM3LDggKzM2LDgg
QEAgY2xhc3MgVGVzdEZpbGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rf
ZmluZF9ub19wYXRoc19zcGVjaWZpZWQoc2VsZik6CiAgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQo
KQogICAgICAgICBsYXlvdXRfdGVzdHNfZGlyID0gcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkKLSAg
ICAgICAgcG9ydC5sYXlvdXRfdGVzdHNfZGlyID0gbGFtYmRhOiBvcy5wYXRoLmpvaW4obGF5b3V0
X3Rlc3RzX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2Zhc3QnLCAnaHRtbCcpCisgICAgICAgIHBvcnQubGF5b3V0X3Rlc3RzX2RpciA9
IGxhbWJkYTogcG9ydC5fZmlsZXN5c3RlbS5qb2luKGxheW91dF90ZXN0c19kaXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdm
YXN0JywgJ2h0bWwnKQogICAgICAgICB0ZXN0cyA9IHRlc3RfZmlsZXMuZmluZChwb3J0LCBbXSkK
ICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0cywgMCkKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>