<?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>28752</bug_id>
          
          <creation_ts>2009-08-26 15:40:38 -0700</creation_ts>
          <short_desc>this in JSON.parse reviver is the global object</short_desc>
          <delta_ts>2009-08-27 16:01:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://lucassmith.name/pub/browser_bugs/wk/reviver_this.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Luke Smith">lsmith</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>142981</commentid>
    <comment_count>0</comment_count>
    <who name="Luke Smith">lsmith</who>
    <bug_when>2009-08-26 15:40:38 -0700</bug_when>
    <thetext>ES 5 spec states that the Walk abstract function calls the reviver function&apos;s [[Call]] &quot;passing holder as the this value&quot;

Currently WebKit&apos;s JSON.parse implementation passes the global object as this.

Aside from the spec violation, this also prevents the reviver from creating additional properties on the object or referencing other properties of the current object for value determination during parse.  Any new properties created are added to the global object.

I noted this while reviewing my YUI examples for the JSON Utility (which defers to native implementations if present).
http://developer.yahoo.com/yui/examples/json/json_convert_values.html

Note: The page behaves correctly because it is either (if viewed before 9/2/09) using version 2.7.0 which is not leveraging native behavior , or it is (if viewed after 9/2/09) using version 2.8.0 and is configured NOT to use native behavior specifically because of this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143068</commentid>
    <comment_count>1</comment_count>
      <attachid>38658</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-08-26 23:33:35 -0700</bug_when>
    <thetext>Created attachment 38658
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143073</commentid>
    <comment_count>2</comment_count>
      <attachid>38658</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-08-26 23:48:54 -0700</bug_when>
    <thetext>Comment on attachment 38658
Patch v1

Sam mentioned some issues, and i realised there&apos;s an entire class of bug i had failed to notice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143082</commentid>
    <comment_count>3</comment_count>
      <attachid>38661</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-08-27 00:59:24 -0700</bug_when>
    <thetext>Created attachment 38661
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143084</commentid>
    <comment_count>4</comment_count>
      <attachid>38661</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-08-27 01:37:00 -0700</bug_when>
    <thetext>Comment on attachment 38661
Patch v1

R+ with exception throw change from IRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143085</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-08-27 01:39:58 -0700</bug_when>
    <thetext>Committed r47812</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143219</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-08-27 15:54:49 -0700</bug_when>
    <thetext>Should this now be closed?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38658</attachid>
            <date>2009-08-26 23:33:35 -0700</date>
            <delta_ts>2009-08-27 00:59:14 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-28752-20090826233334.patch</filename>
            <type>text/plain</type>
            <size>18806</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiOTU5OGVjLi5jMmNkYzZhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMDktMDgtMjYgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAndGhpcycgaW4gSlNPTi5w
YXJzZSByZXZpdmVyIGlzIHRoZSBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODc1MgorCisgICAgICAgIFRoaXMgaXMgYSB0ZWNo
bmljYWxseSBzaW1wbGUgY2hhbmdlLCB3ZSBtZXJlbHkgdXBkYXRlIHRoZSBjb2RlIGZvciBjYWxs
aW5nCisgICAgICAgIHRoZSByZXZpdmVyIGZ1bmN0aW9uIHRvIHBhc3MgdGhlIGNvcnJlY3QgdGhp
cyBvYmplY3QuICBEb2luZyBzbyBob3dldmVyCisgICAgICAgIGV4cG9zZXMgdGhlIGhvbGRlciB0
byBhcmJpdHJhcnkgbXV0YXRpb24gYnkgdGhlIHJldml2ZXIgZnVuY3Rpb24gc28gaXQgaXMKKyAg
ICAgICAgbmVjZXNzYXJ5IGZvciB1cyB0byBub3cgZ3VhcmQgYWxsIHByb3BlcnR5IGFjY2Vzc2Vz
IGFnYWluc3QgdGhlIHBvc3NpYmlsaXR5CisgICAgICAgIG9mIGZhaWx1cmUuCisKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgICBKU09OIG5lZWRzIHRvIGRlbGV0ZSBhIHBy
b3BlcnR5IGZyb20gdGhlIGFycmF5LCBzbyB3ZSBmcmllbmQgaXRzIAorICAgICAgICAgIFdhbGtl
ciBjbGFzcyBzbyB0aGF0IHdlIGNhbiBtYWtlIGEgbm9uLXZpcnR1YWwgY2FsbCB0byB0aGUgYXJy
YXlzCisgICAgICAgICAgZGVsZXRlIGFuZCBnZXRPd25Qcm9wZXJ0eVNsb3QgbWV0aG9kcy4KKyAg
ICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpXYWxrZXI6OmNh
bGxSZXZpdmVyKToKKyAgICAgICAgICBXZSBuZWVkIHRvIHBhc3MgdGhlIGNvcnJlY3QgdGhpcyBv
YmplY3QKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgICBVcGRhdGUgY2Fs
bHMgdG8gY2FsbFJldml2ZXIsIGFuZCB1cGRhdGUgcHJvcGVydHkgbG9naWMgbG9naWMKKyAgICAg
ICAgICB0byBjb3JyZWN0bHkgaGFuZGxlIHRoZSBob2xkZXIgYmVpbmcgbXV0YXRlZCBieSB0aGUg
cmV2aXZlcgorICAgICAgICAgIGZ1bmN0aW9uLgorCiAyMDA5LTA4LTI2ICBBbGljZSBMaXUgIDxh
bGljZS5saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4OiBhZGRlZCBz
b21lIGV4cG9ydGVkIHN5bWJvbHMKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggYjA0MTBj
Yi4uNDdmYTM2MCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgK
KysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTM4LDYgKzM4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5IDogcHVibGljIEpTT2JqZWN0IHsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsK
IAogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSlNBcnJheShQYXNzUmVmUHRyPFN0cnVj
dHVyZT4pOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNw
cCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggYmFlOWY1OS4u
MmQ2ODk0YyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNw
cAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC02MDUsMTEg
KzYwNSwxMSBAQCBwdWJsaWM6CiAgICAgfQogICAgIEpTVmFsdWUgd2FsayhKU1ZhbHVlIHVuZmls
dGVyZWQpOwogcHJpdmF0ZToKLSAgICBKU1ZhbHVlIGNhbGxSZXZpdmVyKEpTVmFsdWUgcHJvcGVy
dHksIEpTVmFsdWUgdW5maWx0ZXJlZCkKKyAgICBKU1ZhbHVlIGNhbGxSZXZpdmVyKEpTT2JqZWN0
KiB0aGlzT2JqLCBKU1ZhbHVlIHByb3BlcnR5LCBKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgewog
ICAgICAgICBKU1ZhbHVlIGFyZ3NbXSA9IHsgcHJvcGVydHksIHVuZmlsdGVyZWQgfTsKICAgICAg
ICAgQXJnTGlzdCBhcmdMaXN0KGFyZ3MsIDIpOwotICAgICAgICByZXR1cm4gY2FsbChtX2V4ZWMs
IG1fZnVuY3Rpb24sIG1fY2FsbFR5cGUsIG1fY2FsbERhdGEsIGpzTnVsbCgpLCBhcmdMaXN0KTsK
KyAgICAgICAgcmV0dXJuIGNhbGwobV9leGVjLCBtX2Z1bmN0aW9uLCBtX2NhbGxUeXBlLCBtX2Nh
bGxEYXRhLCB0aGlzT2JqLCBhcmdMaXN0KTsKICAgICB9CiAKICAgICBmcmllbmQgY2xhc3MgSG9s
ZGVyOwpAQCAtNjU0LDcgKzY1NCwxNiBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6Ondh
bGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLnJl
bW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGluVmFsdWUgPSBhcnJheS0+Z2V0SW5kZXgoaW5kZXgpOworICAg
ICAgICAgICAgICAgIGlmIChhcnJheS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQorICAgICAgICAgICAg
ICAgICAgICBpblZhbHVlID0gYXJyYXktPmdldEluZGV4KGluZGV4KTsKKyAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChhcnJheS0+SlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KG1fZXhl
YywgaW5kZXgsIHNsb3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgaW5WYWx1ZSA9IHNsb3Qu
Z2V0VmFsdWUobV9leGVjLCBpbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGluVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGluVmFsdWUu
aXNPYmplY3QoKSkgewogICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChBcnJh
eUVuZFZpc2l0TWVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgZ290byBzdGF0ZVVua25vd247
CkBAIC02NjQsNyArNjczLDE1IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhK
U1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIEFycmF5
RW5kVmlzaXRNZW1iZXI6IHsKICAgICAgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFycmF5
U3RhY2subGFzdCgpOwotICAgICAgICAgICAgICAgIGFycmF5LT5zZXRJbmRleChpbmRleFN0YWNr
Lmxhc3QoKSwgY2FsbFJldml2ZXIoanNTdHJpbmcobV9leGVjLCBVU3RyaW5nOjpmcm9tKGluZGV4
U3RhY2subGFzdCgpKSksIG91dFZhbHVlKSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBmaWx0
ZXJlZFZhbHVlID0gY2FsbFJldml2ZXIoYXJyYXksIGpzU3RyaW5nKG1fZXhlYywgVVN0cmluZzo6
ZnJvbShpbmRleFN0YWNrLmxhc3QoKSkpLCBvdXRWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYg
KGZpbHRlcmVkVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgYXJyYXkt
PmRlbGV0ZVByb3BlcnR5KG1fZXhlYywgaW5kZXhTdGFjay5sYXN0KCkpOworICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXktPmNhblNldEluZGV4KGlu
ZGV4U3RhY2subGFzdCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LT5zZXRJbmRl
eChpbmRleFN0YWNrLmxhc3QoKSwgZmlsdGVyZWRWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LT5KU0FycmF5OjpwdXQobV9leGVj
LCBpbmRleFN0YWNrLmxhc3QoKSwgZmlsdGVyZWRWYWx1ZSk7CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5sYXN0
KCkrKzsKQEAgLTY5NCw5ICs3MTEsMTUgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3
YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwotICAgICAg
ICAgICAgICAgIG9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KG1fZXhlYywgcHJvcGVydGllc1tp
bmRleF0sIHNsb3QpOwotICAgICAgICAgICAgICAgIGluVmFsdWUgPSBzbG90LmdldFZhbHVlKG1f
ZXhlYywgcHJvcGVydGllc1tpbmRleF0pOwotICAgICAgICAgICAgICAgIEFTU0VSVCghbV9leGVj
LT5oYWRFeGNlcHRpb24oKSk7CisgICAgICAgICAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duUHJv
cGVydHlTbG90KG1fZXhlYywgcHJvcGVydGllc1tpbmRleF0sIHNsb3QpKQorICAgICAgICAgICAg
ICAgICAgICBpblZhbHVlID0gc2xvdC5nZXRWYWx1ZShtX2V4ZWMsIHByb3BlcnRpZXNbaW5kZXhd
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGluVmFsdWUgPSBq
c1VuZGVmaW5lZCgpOworCisgICAgICAgICAgICAgICAgLy8gVGhlIGhvbGRlciBtYXkgYmUgbW9k
aWZpZWQgYnkgdGhlIHJldml2ZXIgZnVuY3Rpb24gc28gYW55IGxvb2t1cCBtYXkgdGhyb3cKKyAg
ICAgICAgICAgICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGpzTnVsbCgpOworCiAgICAgICAgICAgICAgICAgaWYgKGluVmFsdWUuaXNP
YmplY3QoKSkgewogICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChPYmplY3RF
bmRWaXNpdE1lbWJlcik7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhdGVVbmtub3duOwpA
QCAtNzA4LDcgKzczMSwxMSBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNW
YWx1ZSB1bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBvYmpl
Y3RTdGFjay5sYXN0KCk7CiAgICAgICAgICAgICAgICAgSWRlbnRpZmllciBwcm9wID0gcHJvcGVy
dHlTdGFjay5sYXN0KClbaW5kZXhTdGFjay5sYXN0KCldOwogICAgICAgICAgICAgICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90OwotICAgICAgICAgICAgICAgIG9iamVjdC0+cHV0KG1fZXhlYywgcHJv
cCwgY2FsbFJldml2ZXIoanNTdHJpbmcobV9leGVjLCBwcm9wLnVzdHJpbmcoKSksIG91dFZhbHVl
KSwgc2xvdCk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBmaWx0ZXJlZFZhbHVlID0gY2FsbFJl
dml2ZXIob2JqZWN0LCBqc1N0cmluZyhtX2V4ZWMsIHByb3AudXN0cmluZygpKSwgb3V0VmFsdWUp
OworICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAg
ICAgICAgICAgICAgICAgIG9iamVjdC0+ZGVsZXRlUHJvcGVydHkobV9leGVjLCBwcm9wKTsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+cHV0KG1fZXhl
YywgcHJvcCwgZmlsdGVyZWRWYWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc051bGwoKTsK
ICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmxhc3QoKSsrOwpAQCAtNzI5LDcgKzc1NiwxMCBA
QCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQog
ICAgICAgICBzdGF0ZSA9IHN0YXRlU3RhY2subGFzdCgpOwogICAgICAgICBzdGF0ZVN0YWNrLnJl
bW92ZUxhc3QoKTsKICAgICB9Ci0gICAgcmV0dXJuIGNhbGxSZXZpdmVyKGpzRW1wdHlTdHJpbmco
bV9leGVjKSwgb3V0VmFsdWUpOworICAgIEpTT2JqZWN0KiBmaW5hbEhvbGRlciA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KG1fZXhlYyk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgZmlu
YWxIb2xkZXItPnB1dChtX2V4ZWMsIG1fZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMt
PmVtcHR5SWRlbnRpZmllciwgb3V0VmFsdWUsIHNsb3QpOworICAgIHJldHVybiBjYWxsUmV2aXZl
cihmaW5hbEhvbGRlciwganNFbXB0eVN0cmluZyhtX2V4ZWMpLCBvdXRWYWx1ZSk7CiB9CiAKIC8v
IEVDTUEtMjYyIHY1IDE1LjEyLjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxODgxYmZkLi44NTk4NDA3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMDktMDgtMjYgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB0aGlzIGlu
IEpTT04ucGFyc2UgcmV2aXZlciBpcyB0aGUgZ2xvYmFsIG9iamVjdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg3NTIKKworICAgICAgICBBZGQgdGVz
dHMgZm9yIEpTT04ucGFyc2Ugd2l0aCBhIHJldml2ZXIgZnVuY3Rpb24gdGhhdCBtb2RpZmllcwor
ICAgICAgICB0aGUgaG9sZGVyIG9iamVjdCBwcm92aWRlZCBkdXJpbmcgZmlsdGVyaW5nLgorCisg
ICAgICAgICogZmFzdC9qcy9KU09OLXBhcnNlLXJldml2ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2pzL0pTT04tcGFyc2UtcmV2aXZlci5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2pzL3Jlc291cmNlcy9KU09OLXBhcnNlLXJldml2ZXIuanM6IEFkZGVkLgorICAg
ICAgICAoZGVzY3JpcHRpb24uQXJyYXkuaXNBcnJheSk6CisgICAgICAgIChhcnJheVJldml2ZXIp
OgorICAgICAgICAob2JqZWN0UmV2aXZlcik6CisKIDIwMDktMDgtMjYgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChC
dWlsZCBmaXgpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9KU09OLXBhcnNlLXJl
dml2ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9KU09OLXBhcnNlLXJldml2
ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNGQw
MmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL0pTT04tcGFyc2UtcmV2
aXZlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMDQgQEAKK1Rlc3QgYmVoYXZpb3VyIG9mIEpT
T04gcmV2aXZlciBmdW5jdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKwor
RW5zdXJlIHRoZSBob2xkZXIgZm9yIG91ciBhcnJheSBpcyBpbmRlZWQgYW4gYXJyYXkKK1BBU1Mg
QXJyYXkuaXNBcnJheShjdXJyZW50SG9sZGVyKSBpcyB0cnVlCitQQVNTIGN1cnJlbnRIb2xkZXIu
bGVuZ3RoIGlzIDUKKworRW5zdXJlIHRoYXQgdGhlIGhvbGRlciBhbHJlYWR5IGhhcyBhbGwgdGhl
IHByb3BlcnRpZXMgcHJlc2VudCBhdCB0aGUgc3RhcnQgb2YgZmlsdGVyaW5nCitQQVNTIGN1cnJl
bnRIb2xkZXJbMF0gaXMgImEgdmFsdWUiCitQQVNTIGN1cnJlbnRIb2xkZXJbMV0gaXMgImFub3Ro
ZXIgdmFsdWUiCitQQVNTIGN1cnJlbnRIb2xkZXJbMl0gaXMgImFuZCBhbm90aGVyIHZhbHVlIgor
UEFTUyBjdXJyZW50SG9sZGVyWzNdIGlzICJ0byBkZWxldGUiCitQQVNTIGN1cnJlbnRIb2xkZXJb
NF0gaXMgImV4dHJhIHZhbHVlIgorCitFbnN1cmUgdGhlIGhvbGRlciBmb3Igb3VyIGFycmF5IGlz
IGluZGVlZCBhbiBhcnJheQorUEFTUyBBcnJheS5pc0FycmF5KGN1cnJlbnRIb2xkZXIpIGlzIHRy
dWUKK1BBU1MgY3VycmVudEhvbGRlci5sZW5ndGggaXMgNQorCitFbnN1cmUgdGhhdCB3ZSBhbHdh
eXMgZ2V0IHRoZSBzYW1lIGhvbGRlcgorUEFTUyBjdXJyZW50SG9sZGVyIGlzIGxhc3RIb2xkZXIK
KworRW5zdXJlIHRoYXQgcmV0dXJuaW5nIHVuZGVmaW5lZCBoYXMgcmVtb3ZlZCB0aGUgcHJvcGVy
dHkgMCBmcm9tIHRoZSBob2xkZXIgZHVyaW5nIGZpbHRlcmluZy4KK1BBU1MgY3VycmVudEhvbGRl
ci5oYXNPd25Qcm9wZXJ0eSgwKSBpcyBmYWxzZQorCitFbnN1cmUgdGhlIGhvbGRlciBmb3Igb3Vy
IGFycmF5IGlzIGluZGVlZCBhbiBhcnJheQorUEFTUyBBcnJheS5pc0FycmF5KGN1cnJlbnRIb2xk
ZXIpIGlzIHRydWUKK1BBU1MgY3VycmVudEhvbGRlci5sZW5ndGggaXMgNQorCitFbnN1cmUgdGhh
dCB3ZSBhbHdheXMgZ2V0IHRoZSBzYW1lIGhvbGRlcgorUEFTUyBjdXJyZW50SG9sZGVyIGlzIGxh
c3RIb2xkZXIKKworRW5zdXJlIHRoYXQgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIGEgcHJvcGVydHkg
aXMgcmVmbGVjdGVkIHdoaWxlIGZpbHRlcmluZy4KK1BBU1MgY3VycmVudEhvbGRlclsyXSBpcyAi
YSByZXBsYWNlZCB2YWx1ZSIKKworRW5zdXJlIHRoYXQgdGhlIGNoYW5nZWQgdmFsdWUgaXMgcmVm
bGVjdGVkIGluIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSByZXZpdmVyCitQQVNTIHZhbHVl
IGlzIGN1cnJlbnRIb2xkZXJbMl0KKworRW5zdXJlIHRoZSBob2xkZXIgZm9yIG91ciBhcnJheSBp
cyBpbmRlZWQgYW4gYXJyYXkKK1BBU1MgQXJyYXkuaXNBcnJheShjdXJyZW50SG9sZGVyKSBpcyB0
cnVlCitQQVNTIGN1cnJlbnRIb2xkZXIubGVuZ3RoIGlzIDUKKworRW5zdXJlIHRoYXQgd2UgYWx3
YXlzIGdldCB0aGUgc2FtZSBob2xkZXIKK1BBU1MgY3VycmVudEhvbGRlciBpcyBsYXN0SG9sZGVy
CisKK0Vuc3VyZSB0aGF0IHdlIHZpc2l0ZWQgYSB2YWx1ZSB0aGF0IHdlIGhhdmUgZGVsZXRlZCwg
YW5kIHRoYXQgZGVsZXRpb24gaXMgcmVmbGVjdGVkIHdoaWxlIGZpbHRlcmluZy4KK1BBU1MgY3Vy
cmVudEhvbGRlci5oYXNPd25Qcm9wZXJ0eSgzKSBpcyBmYWxzZQorCitFbnN1cmUgdGhhdCB3aGVu
IHZpc2l0aW5nIGEgZGVsZXRlZCBwcm9wZXJ0eSB2YWx1ZSBpcyB1bmRlZmluZWQKK1BBU1MgdmFs
dWUgaXMgdW5kZWZpbmVkLgorCitFbnN1cmUgdGhhdCB3ZSBjcmVhdGVkIHRoZSByb290IGhvbGRl
ciBhcyBzcGVjaWZpZWQgaW4gRVM1CitQQVNTICcnIGluIGxhc3RIb2xkZXIgaXMgdHJ1ZQorUEFT
UyByZXN1bHQgaXMgbGFzdEhvbGRlclsnJ10KKworRW5zdXJlIHRoYXQgYSBkZWxldGVkIHZhbHVl
IGlzIHJldml2ZWQgaWYgdGhlIHJldml2ZXIgZnVuY3Rpb24gcmV0dXJucyBhIHZhbHVlCitQQVNT
IHJlc3VsdC5oYXNPd25Qcm9wZXJ0eSgzKSBpcyB0cnVlCisKK1Rlc3QgYmVoYXZpb3VyIG9mIHJl
dml2b3IgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGFuIG9iamVjdAorUEFTUyBjdXJyZW50SG9s
ZGVyICE9IGdsb2JhbE9iamVjdCBpcyB0cnVlCisKK0Vuc3VyZSB0aGF0IHRoZSBob2xkZXIgYWxy
ZWFkeSBoYXMgYWxsIHRoZSBwcm9wZXJ0aWVzIHByZXNlbnQgYXQgdGhlIHN0YXJ0IG9mIGZpbHRl
cmluZworUEFTUyBjdXJyZW50SG9sZGVyWydhIHByb3BlcnR5J10gaXMgImEgdmFsdWUiCitQQVNT
IGN1cnJlbnRIb2xkZXJbJ2Fub3RoZXIgcHJvcGVydHknXSBpcyAiYW5vdGhlciB2YWx1ZSIKK1BB
U1MgY3VycmVudEhvbGRlclsnYW5kIGFub3RoZXIgcHJvcGVydHknXSBpcyAiYW5kIGFub3RoZXIg
dmFsdWUiCitQQVNTIGN1cnJlbnRIb2xkZXJbJ3RvIGRlbGV0ZSddIGlzICJ3aWxsIGJlIGRlbGV0
ZWQiCitQQVNTIGN1cnJlbnRIb2xkZXIgIT0gZ2xvYmFsT2JqZWN0IGlzIHRydWUKKworRW5zdXJl
IHRoYXQgd2UgZ2V0IHRoZSBzYW1lIGhvbGRlciBvYmplY3QgZm9yIGVhY2ggcHJvcGVydHkKK1BB
U1MgY3VycmVudEhvbGRlciBpcyBsYXN0SG9sZGVyCisKK0Vuc3VyZSB0aGF0IHJldHVybmluZyB1
bmRlZmluZWQgaGFzIGNvcnJlY3RseSByZW1vdmVkIHRoZSBwcm9wZXJ0eSAnYSBwcm9wZXJ0eScg
ZnJvbSB0aGUgaG9sZGVyIG9iamVjdAorUEFTUyBjdXJyZW50SG9sZGVyLmhhc093blByb3BlcnR5
KCdhIHByb3BlcnR5JykgaXMgZmFsc2UKK1BBU1MgY3VycmVudEhvbGRlciAhPSBnbG9iYWxPYmpl
Y3QgaXMgdHJ1ZQorCitFbnN1cmUgdGhhdCB3ZSBnZXQgdGhlIHNhbWUgaG9sZGVyIG9iamVjdCBm
b3IgZWFjaCBwcm9wZXJ0eQorUEFTUyBjdXJyZW50SG9sZGVyIGlzIGxhc3RIb2xkZXIKK0Vuc3Vy
ZSB0aGF0IGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5IGlzIHJlZmxlY3RlZCB3aGls
ZSBmaWx0ZXJpbmcuCitQQVNTIGN1cnJlbnRIb2xkZXJbJ2FuZCBhbm90aGVyIHByb3BlcnR5J10g
aXMgImEgcmVwbGFjZWQgdmFsdWUiCisKK0Vuc3VyZSB0aGF0IHRoZSBjaGFuZ2VkIHZhbHVlIGlz
IHJlZmxlY3RlZCBpbiB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgcmV2aXZlcgorUEFTUyB2
YWx1ZSBpcyAiYSByZXBsYWNlZCB2YWx1ZSIKK1BBU1MgY3VycmVudEhvbGRlciAhPSBnbG9iYWxP
YmplY3QgaXMgdHJ1ZQorCitFbnN1cmUgdGhhdCB3ZSBnZXQgdGhlIHNhbWUgaG9sZGVyIG9iamVj
dCBmb3IgZWFjaCBwcm9wZXJ0eQorUEFTUyBjdXJyZW50SG9sZGVyIGlzIGxhc3RIb2xkZXIKKwor
RW5zdXJlIHRoYXQgd2UgdmlzaXRlZCBhIHZhbHVlIHRoYXQgd2UgaGF2ZSBkZWxldGVkLCBhbmQg
dGhhdCBkZWxldGlvbiBpcyByZWZsZWN0ZWQgd2hpbGUgZmlsdGVyaW5nLgorUEFTUyBjdXJyZW50
SG9sZGVyLmhhc093blByb3BlcnR5KCd0byBkZWxldGUnKSBpcyBmYWxzZQorCitFbnN1cmUgdGhh
dCB3aGVuIHZpc2l0aW5nIGEgZGVsZXRlZCBwcm9wZXJ0eSB2YWx1ZSBpcyB1bmRlZmluZWQKK1BB
U1MgdmFsdWUgaXMgdW5kZWZpbmVkLgorCitFbnN1cmUgdGhhdCB3ZSBjcmVhdGVkIHRoZSByb290
IGhvbGRlciBhcyBzcGVjaWZpZWQgaW4gRVM1CitQQVNTIGxhc3RIb2xkZXIuaGFzT3duUHJvcGVy
dHkoJycpIGlzIHRydWUKK1BBU1MgcmVzdWx0Lmhhc093blByb3BlcnR5KCdhIHByb3BlcnR5Jykg
aXMgZmFsc2UKK1BBU1MgcmVzdWx0Lmhhc093blByb3BlcnR5KCd0byBkZWxldGUnKSBpcyB0cnVl
CitQQVNTIHJlc3VsdCBpcyBsYXN0SG9sZGVyWycnXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
anMvSlNPTi1wYXJzZS1yZXZpdmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL0pTT04tcGFy
c2UtcmV2aXZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3YTQ1
YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL0pTT04tcGFyc2UtcmV2
aXZlci5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9InJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvSlNPTi1wYXJzZS1yZXZpdmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL0pTT04tcGFyc2UtcmV2aXZl
ci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL0pTT04tcGFyc2UtcmV2aXZlci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGYwZWM5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvSlNPTi1wYXJzZS1yZXZpdmVy
LmpzCkBAIC0wLDAgKzEsMTU5IEBACitkZXNjcmlwdGlvbigiVGVzdCBiZWhhdmlvdXIgb2YgSlNP
TiByZXZpdmVyIGZ1bmN0aW9uLiIpCitpZiAoIUFycmF5LmlzQXJyYXkpCisgICAgQXJyYXkuaXNB
cnJheSA9IGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uY29uc3RydWN0b3IgPT09IEFycmF5OyB9CisK
K2Z1bmN0aW9uIGFycmF5UmV2aXZlcihpLHYpIHsKKyAgICBpZiAoaSAhPSAiIikgeworICAgICAg
ICBjdXJyZW50SG9sZGVyID0gdGhpczsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1
ZygiRW5zdXJlIHRoZSBob2xkZXIgZm9yIG91ciBhcnJheSBpcyBpbmRlZWQgYW4gYXJyYXkiKTsK
KyAgICAgICAgc2hvdWxkQmVUcnVlKCJBcnJheS5pc0FycmF5KGN1cnJlbnRIb2xkZXIpIik7Cisg
ICAgICAgIHNob3VsZEJlKCJjdXJyZW50SG9sZGVyLmxlbmd0aCIsICIiICsgZXhwZWN0ZWRMZW5n
dGgpOworICAgICAgICBpZiAoaSA+IDApIHsKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAg
ICAgICAgIGRlYnVnKCJFbnN1cmUgdGhhdCB3ZSBhbHdheXMgZ2V0IHRoZSBzYW1lIGhvbGRlciIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnJlbnRIb2xkZXIiLCAibGFzdEhvbGRlciIpOwor
ICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoTnVtYmVyKGkpKSB7CisgICAgICAgIGNhc2UgMDoK
KyAgICAgICAgICAgIHYgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAg
ICAgICAgICBkZWJ1ZygiRW5zdXJlIHRoYXQgdGhlIGhvbGRlciBhbHJlYWR5IGhhcyBhbGwgdGhl
IHByb3BlcnRpZXMgcHJlc2VudCBhdCB0aGUgc3RhcnQgb2YgZmlsdGVyaW5nIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY3VycmVudEhvbGRlclswXSIsICciYSB2YWx1ZSInKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJyZW50SG9sZGVyWzFdIiwgJyJhbm90aGVyIHZhbHVlIicpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnJlbnRIb2xkZXJbMl0iLCAnImFuZCBhbm90aGVyIHZhbHVl
IicpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnJlbnRIb2xkZXJbM10iLCAnInRvIGRlbGV0
ZSInKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJyZW50SG9sZGVyWzRdIiwgJyJleHRyYSB2
YWx1ZSInKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMToKKyAgICAgICAg
ICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGRlYnVnKCJFbnN1cmUgdGhhdCByZXR1cm5pbmcg
dW5kZWZpbmVkIGhhcyByZW1vdmVkIHRoZSBwcm9wZXJ0eSAwIGZyb20gdGhlIGhvbGRlciBkdXJp
bmcgZmlsdGVyaW5nLiIpOworICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgiY3VycmVudEhvbGRl
ci5oYXNPd25Qcm9wZXJ0eSgwKSIpOworICAgICAgICAgICAgY3VycmVudEhvbGRlclsyXSA9ICJh
IHJlcGxhY2VkIHZhbHVlIjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMjoK
KyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGRlYnVnKCJFbnN1cmUgdGhhdCBj
aGFuZ2luZyB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eSBpcyByZWZsZWN0ZWQgd2hpbGUgZmlsdGVy
aW5nLiIpCisgICAgICAgICAgICBzaG91bGRCZSgiY3VycmVudEhvbGRlclsyXSIsICciYSByZXBs
YWNlZCB2YWx1ZSInKTsKKyAgICAgICAgICAgIHZhbHVlID0gdjsKKyAgICAgICAgICAgIGRlYnVn
KCIiKTsKKyAgICAgICAgICAgIGRlYnVnKCJFbnN1cmUgdGhhdCB0aGUgY2hhbmdlZCB2YWx1ZSBp
cyByZWZsZWN0ZWQgaW4gdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHJldml2ZXIiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJ2YWx1ZSIsICJjdXJyZW50SG9sZGVyWzJdIik7CisgICAgICAg
ICAgICBkZWxldGUgdGhpc1szXTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
MzoKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGRlYnVnKCJFbnN1cmUgdGhh
dCB3ZSB2aXNpdGVkIGEgdmFsdWUgdGhhdCB3ZSBoYXZlIGRlbGV0ZWQsIGFuZCB0aGF0IGRlbGV0
aW9uIGlzIHJlZmxlY3RlZCB3aGlsZSBmaWx0ZXJpbmcuIik7CisgICAgICAgICAgICBzaG91bGRC
ZUZhbHNlKCJjdXJyZW50SG9sZGVyLmhhc093blByb3BlcnR5KDMpIik7CisgICAgICAgICAgICB2
YWx1ZSA9IHY7CisgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICBkZWJ1ZygiRW5z
dXJlIHRoYXQgd2hlbiB2aXNpdGluZyBhIGRlbGV0ZWQgcHJvcGVydHkgdmFsdWUgaXMgdW5kZWZp
bmVkIik7CisgICAgICAgICAgICBzaG91bGRCZVVuZGVmaW5lZCgidmFsdWUiKTsKKyAgICAgICAg
ICAgIHYgPSAidW5kZWxldGUgdGhlIHByb3BlcnR5IjsKKyAgICAgICAgICAgIGV4cGVjdGVkTGVu
Z3RoID0gdGhpcy5sZW5ndGggPSAzOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSA0OgorICAgICAgICAgICAgaWYgKHRoaXMubGVuZ3RoICE9IDMpIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJEaWQgbm90IGNhbGwgcmV2aXZlciBmb3IgZGVsZXRlZCBwcm9wZXJ0eSIp
OworICAgICAgICAgICAgICAgIGV4cGVjdGVkTGVuZ3RoID0gdGhpcy5sZW5ndGggPSAzOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgIGNhc2UgNToKKyAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIkVuc3VyZWQgdGhhdCBwcm9wZXJ0eSB3YXMgdmlzaXRlZCBk
ZXNwaXRlIEFycmF5IGxlbmd0aCBiZWluZyByZWR1Y2VkLiIpOworICAgICAgICAgICAgdmFsdWUg
PSB2OworICAgICAgICAgICAgc2hvdWxkQmVVbmRlZmluZWQoInZhbHVlIik7CisgICAgICAgICAg
ICB0aGlzWzEwXSA9ICJmYWlsIjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJWaXNpdGVkIHVuZXhwZWN0ZWQgcHJvcGVydHkg
IiArIGkgKyAiIHdpdGggdmFsdWUgIiArIHYpOworICAgICAgICB9CisgICAgfQorICAgIGxhc3RI
b2xkZXIgPSB0aGlzOworICAgIHJldHVybiB2OworfQorZXhwZWN0ZWRMZW5ndGggPSA1OwordmFy
IHJlc3VsdCA9IEpTT04ucGFyc2UoJ1siYSB2YWx1ZSIsICJhbm90aGVyIHZhbHVlIiwgImFuZCBh
bm90aGVyIHZhbHVlIiwgInRvIGRlbGV0ZSIsICJleHRyYSB2YWx1ZSJdJywgYXJyYXlSZXZpdmVy
KTsKK2RlYnVnKCIiKTsKK2RlYnVnKCJFbnN1cmUgdGhhdCB3ZSBjcmVhdGVkIHRoZSByb290IGhv
bGRlciBhcyBzcGVjaWZpZWQgaW4gRVM1Iik7CitzaG91bGRCZVRydWUoIicnIGluIGxhc3RIb2xk
ZXIiKTsKK3Nob3VsZEJlKCJyZXN1bHQiLCAibGFzdEhvbGRlclsnJ10iKTsKK2RlYnVnKCIiKTsK
K2RlYnVnKCJFbnN1cmUgdGhhdCBhIGRlbGV0ZWQgdmFsdWUgaXMgcmV2aXZlZCBpZiB0aGUgcmV2
aXZlciBmdW5jdGlvbiByZXR1cm5zIGEgdmFsdWUiKTsKK3Nob3VsZEJlVHJ1ZSgicmVzdWx0Lmhh
c093blByb3BlcnR5KDMpIik7CisKK2Z1bmN0aW9uIG9iamVjdFJldml2ZXIoaSx2KSB7CisgICAg
aWYgKGkgIT0gIiIpIHsKKyAgICAgICAgY3VycmVudEhvbGRlciA9IHRoaXM7CisgICAgICAgIHNo
b3VsZEJlVHJ1ZSgiY3VycmVudEhvbGRlciAhPSBnbG9iYWxPYmplY3QiKTsKKyAgICAgICAgaWYg
KHNlZW4pIHsKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGRlYnVnKCJFbnN1
cmUgdGhhdCB3ZSBnZXQgdGhlIHNhbWUgaG9sZGVyIG9iamVjdCBmb3IgZWFjaCBwcm9wZXJ0eSIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnJlbnRIb2xkZXIiLCAibGFzdEhvbGRlciIpOwor
ICAgICAgICB9CisgICAgICAgIHNlZW4gPSB0cnVlOworICAgICAgICBzd2l0Y2ggKGkpIHsKKyAg
ICAgICAgY2FzZSAiYSBwcm9wZXJ0eSI6CisgICAgICAgICAgICB2ID0gdW5kZWZpbmVkOworICAg
ICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgZGVidWcoIkVuc3VyZSB0aGF0IHRoZSBo
b2xkZXIgYWxyZWFkeSBoYXMgYWxsIHRoZSBwcm9wZXJ0aWVzIHByZXNlbnQgYXQgdGhlIHN0YXJ0
IG9mIGZpbHRlcmluZyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnJlbnRIb2xkZXJbJ2Eg
cHJvcGVydHknXSIsICciYSB2YWx1ZSInKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJyZW50
SG9sZGVyWydhbm90aGVyIHByb3BlcnR5J10iLCAnImFub3RoZXIgdmFsdWUiJyk7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY3VycmVudEhvbGRlclsnYW5kIGFub3RoZXIgcHJvcGVydHknXSIsICci
YW5kIGFub3RoZXIgdmFsdWUiJyk7CisgICAgICAgICAgICBzaG91bGRCZSgiY3VycmVudEhvbGRl
clsndG8gZGVsZXRlJ10iLCAnIndpbGwgYmUgZGVsZXRlZCInKTsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgImFub3RoZXIgcHJvcGVydHkiOgorICAgICAgICAgICAgZGVidWco
IiIpOworICAgICAgICAgICAgZGVidWcoIkVuc3VyZSB0aGF0IHJldHVybmluZyB1bmRlZmluZWQg
aGFzIGNvcnJlY3RseSByZW1vdmVkIHRoZSBwcm9wZXJ0eSAnYSBwcm9wZXJ0eScgZnJvbSB0aGUg
aG9sZGVyIG9iamVjdCIpOworICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgiY3VycmVudEhvbGRl
ci5oYXNPd25Qcm9wZXJ0eSgnYSBwcm9wZXJ0eScpIik7CisgICAgICAgICAgICBjdXJyZW50SG9s
ZGVyWydhbmQgYW5vdGhlciBwcm9wZXJ0eSddID0gImEgcmVwbGFjZWQgdmFsdWUiOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAiYW5kIGFub3RoZXIgcHJvcGVydHkiOgorICAg
ICAgICAgICAgZGVidWcoIkVuc3VyZSB0aGF0IGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBhIHByb3Bl
cnR5IGlzIHJlZmxlY3RlZCB3aGlsZSBmaWx0ZXJpbmcuIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3VycmVudEhvbGRlclsnYW5kIGFub3RoZXIgcHJvcGVydHknXSIsICciYSByZXBsYWNlZCB2
YWx1ZSInKTsKKyAgICAgICAgICAgIHZhbHVlID0gdjsKKyAgICAgICAgICAgIGRlYnVnKCIiKTsK
KyAgICAgICAgICAgIGRlYnVnKCJFbnN1cmUgdGhhdCB0aGUgY2hhbmdlZCB2YWx1ZSBpcyByZWZs
ZWN0ZWQgaW4gdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHJldml2ZXIiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJ2YWx1ZSIsICciYSByZXBsYWNlZCB2YWx1ZSInKTsKKyAgICAgICAgICAg
IGRlbGV0ZSB0aGlzWyJ0byBkZWxldGUiXTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgInRvIGRlbGV0ZSI6CisgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICBk
ZWJ1ZygiRW5zdXJlIHRoYXQgd2UgdmlzaXRlZCBhIHZhbHVlIHRoYXQgd2UgaGF2ZSBkZWxldGVk
LCBhbmQgdGhhdCBkZWxldGlvbiBpcyByZWZsZWN0ZWQgd2hpbGUgZmlsdGVyaW5nLiIpOworICAg
ICAgICAgICAgc2hvdWxkQmVGYWxzZSgiY3VycmVudEhvbGRlci5oYXNPd25Qcm9wZXJ0eSgndG8g
ZGVsZXRlJykiKTsKKyAgICAgICAgICAgIHZhbHVlID0gdjsKKyAgICAgICAgICAgIGRlYnVnKCIi
KTsKKyAgICAgICAgICAgIGRlYnVnKCJFbnN1cmUgdGhhdCB3aGVuIHZpc2l0aW5nIGEgZGVsZXRl
ZCBwcm9wZXJ0eSB2YWx1ZSBpcyB1bmRlZmluZWQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlVW5k
ZWZpbmVkKCJ2YWx1ZSIpOworICAgICAgICAgICAgdiA9ICJ1bmRlbGV0ZSB0aGUgcHJvcGVydHki
OworICAgICAgICAgICAgdGhpc1sibmV3IHByb3BlcnR5Il0gPSAiZmFpbCI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlZpc2l0
ZWQgdW5leHBlY3RlZCBwcm9wZXJ0eSAiICsgaSArICIgd2l0aCB2YWx1ZSAiICsgdik7CisgICAg
ICAgIH0KKyAgICB9CisgICAgbGFzdEhvbGRlciA9IHRoaXM7CisgICAgcmV0dXJuIHY7Cit9CisK
K2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGJlaGF2aW91ciBvZiByZXZpdm9yIHVzZWQgaW4gY29u
anVuY3Rpb24gd2l0aCBhbiBvYmplY3QiKTsKK3ZhciBzZWVuID0gZmFsc2U7Cit2YXIgZ2xvYmFs
T2JqZWN0ID0gdGhpczsKK3ZhciByZXN1bHQgPSBKU09OLnBhcnNlKCd7ImEgcHJvcGVydHkiIDog
ImEgdmFsdWUiLCAiYW5vdGhlciBwcm9wZXJ0eSIgOiAiYW5vdGhlciB2YWx1ZSIsICJhbmQgYW5v
dGhlciBwcm9wZXJ0eSIgOiAiYW5kIGFub3RoZXIgdmFsdWUiLCAidG8gZGVsZXRlIiA6ICJ3aWxs
IGJlIGRlbGV0ZWQifScsIG9iamVjdFJldml2ZXIpOworZGVidWcoIiIpOworZGVidWcoIkVuc3Vy
ZSB0aGF0IHdlIGNyZWF0ZWQgdGhlIHJvb3QgaG9sZGVyIGFzIHNwZWNpZmllZCBpbiBFUzUiKTsK
K3Nob3VsZEJlVHJ1ZSgibGFzdEhvbGRlci5oYXNPd25Qcm9wZXJ0eSgnJykiKTsKK3Nob3VsZEJl
RmFsc2UoInJlc3VsdC5oYXNPd25Qcm9wZXJ0eSgnYSBwcm9wZXJ0eScpIik7CitzaG91bGRCZVRy
dWUoInJlc3VsdC5oYXNPd25Qcm9wZXJ0eSgndG8gZGVsZXRlJykiKTsKK3Nob3VsZEJlKCJyZXN1
bHQiLCAibGFzdEhvbGRlclsnJ10iKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTs=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38661</attachid>
            <date>2009-08-27 00:59:24 -0700</date>
            <delta_ts>2009-08-27 01:37:00 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-28752-20090827005922.patch</filename>
            <type>text/plain</type>
            <size>24944</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiOTU5OGVjLi5jMmNkYzZhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMDktMDgtMjYgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAndGhpcycgaW4gSlNPTi5w
YXJzZSByZXZpdmVyIGlzIHRoZSBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODc1MgorCisgICAgICAgIFRoaXMgaXMgYSB0ZWNo
bmljYWxseSBzaW1wbGUgY2hhbmdlLCB3ZSBtZXJlbHkgdXBkYXRlIHRoZSBjb2RlIGZvciBjYWxs
aW5nCisgICAgICAgIHRoZSByZXZpdmVyIGZ1bmN0aW9uIHRvIHBhc3MgdGhlIGNvcnJlY3QgdGhp
cyBvYmplY3QuICBEb2luZyBzbyBob3dldmVyCisgICAgICAgIGV4cG9zZXMgdGhlIGhvbGRlciB0
byBhcmJpdHJhcnkgbXV0YXRpb24gYnkgdGhlIHJldml2ZXIgZnVuY3Rpb24gc28gaXQgaXMKKyAg
ICAgICAgbmVjZXNzYXJ5IGZvciB1cyB0byBub3cgZ3VhcmQgYWxsIHByb3BlcnR5IGFjY2Vzc2Vz
IGFnYWluc3QgdGhlIHBvc3NpYmlsaXR5CisgICAgICAgIG9mIGZhaWx1cmUuCisKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgICBKU09OIG5lZWRzIHRvIGRlbGV0ZSBhIHBy
b3BlcnR5IGZyb20gdGhlIGFycmF5LCBzbyB3ZSBmcmllbmQgaXRzIAorICAgICAgICAgIFdhbGtl
ciBjbGFzcyBzbyB0aGF0IHdlIGNhbiBtYWtlIGEgbm9uLXZpcnR1YWwgY2FsbCB0byB0aGUgYXJy
YXlzCisgICAgICAgICAgZGVsZXRlIGFuZCBnZXRPd25Qcm9wZXJ0eVNsb3QgbWV0aG9kcy4KKyAg
ICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpXYWxrZXI6OmNh
bGxSZXZpdmVyKToKKyAgICAgICAgICBXZSBuZWVkIHRvIHBhc3MgdGhlIGNvcnJlY3QgdGhpcyBv
YmplY3QKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgICBVcGRhdGUgY2Fs
bHMgdG8gY2FsbFJldml2ZXIsIGFuZCB1cGRhdGUgcHJvcGVydHkgbG9naWMgbG9naWMKKyAgICAg
ICAgICB0byBjb3JyZWN0bHkgaGFuZGxlIHRoZSBob2xkZXIgYmVpbmcgbXV0YXRlZCBieSB0aGUg
cmV2aXZlcgorICAgICAgICAgIGZ1bmN0aW9uLgorCiAyMDA5LTA4LTI2ICBBbGljZSBMaXUgIDxh
bGljZS5saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4OiBhZGRlZCBz
b21lIGV4cG9ydGVkIHN5bWJvbHMKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggYjA0MTBj
Yi4uZDZlOWJjNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgK
KysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTM4LDYgKzM4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5IDogcHVibGljIEpTT2JqZWN0IHsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsK
IAogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSlNBcnJheShQYXNzUmVmUHRyPFN0cnVj
dHVyZT4pOwpAQCAtMTI3LDYgKzEyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0KIAogICAg
IGlubGluZSBib29sIGlzSlNBcnJheShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTVmFsdWUg
dikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT52cHRyKCkgPT0gZ2xvYmFsRGF0
YS0+anNBcnJheVZQdHI7IH0KKyAgICBpbmxpbmUgYm9vbCBpc0pTQXJyYXkoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBKU0NlbGwqIGNlbGwpIHsgcmV0dXJuIGNlbGwtPnZwdHIoKSA9PSBnbG9i
YWxEYXRhLT5qc0FycmF5VlB0cjsgfQogCiAgICAgdm9pZCBKU0FycmF5OjptYXJrQ2hpbGRyZW5E
aXJlY3QoTWFya1N0YWNrJiBtYXJrU3RhY2spIHsKICAgICAgICAgSlNPYmplY3Q6Om1hcmtDaGls
ZHJlbkRpcmVjdChtYXJrU3RhY2spOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09OT2JqZWN0LmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAK
aW5kZXggYmFlOWY1OS4uYzZkOGU3OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09OT2JqZWN0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCkBAIC02MDUsMTEgKzYwNSwxMSBAQCBwdWJsaWM6CiAgICAgfQogICAgIEpTVmFsdWUgd2Fs
ayhKU1ZhbHVlIHVuZmlsdGVyZWQpOwogcHJpdmF0ZToKLSAgICBKU1ZhbHVlIGNhbGxSZXZpdmVy
KEpTVmFsdWUgcHJvcGVydHksIEpTVmFsdWUgdW5maWx0ZXJlZCkKKyAgICBKU1ZhbHVlIGNhbGxS
ZXZpdmVyKEpTT2JqZWN0KiB0aGlzT2JqLCBKU1ZhbHVlIHByb3BlcnR5LCBKU1ZhbHVlIHVuZmls
dGVyZWQpCiAgICAgewogICAgICAgICBKU1ZhbHVlIGFyZ3NbXSA9IHsgcHJvcGVydHksIHVuZmls
dGVyZWQgfTsKICAgICAgICAgQXJnTGlzdCBhcmdMaXN0KGFyZ3MsIDIpOwotICAgICAgICByZXR1
cm4gY2FsbChtX2V4ZWMsIG1fZnVuY3Rpb24sIG1fY2FsbFR5cGUsIG1fY2FsbERhdGEsIGpzTnVs
bCgpLCBhcmdMaXN0KTsKKyAgICAgICAgcmV0dXJuIGNhbGwobV9leGVjLCBtX2Z1bmN0aW9uLCBt
X2NhbGxUeXBlLCBtX2NhbGxEYXRhLCB0aGlzT2JqLCBhcmdMaXN0KTsKICAgICB9CiAKICAgICBm
cmllbmQgY2xhc3MgSG9sZGVyOwpAQCAtNjE5LDcgKzYxOSwxMCBAQCBwcml2YXRlOgogICAgIENh
bGxUeXBlIG1fY2FsbFR5cGU7CiAgICAgQ2FsbERhdGEgbV9jYWxsRGF0YTsKIH07Ci0gICAgCisK
Ky8vIFdlIGNsYW1wIHJlY3Vyc2lvbiB3ZWxsIGJleW9uZCBhbnl0aGluZyByZWFzb25hYmxlLCBi
dXQgd2UgYWxzbyBoYXZlIGEgdGltZW91dCBjaGVjaworLy8gdG8gZ3VhcmQgYWdhaW5zdCAiaW5m
aW5pdGUiIGV4ZWN1dGlvbiBieSBpbnNlcnRpbmcgYXJiaXRyYXJpbHkgbGFyZ2Ugb2JqZWN0cy4K
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uID0gNDAwMDA7CiBl
bnVtIFdhbGtlclN0YXRlIHsgU3RhdGVVbmtub3duLCBBcnJheVN0YXJ0U3RhdGUsIEFycmF5U3Rh
cnRWaXNpdE1lbWJlciwgQXJyYXlFbmRWaXNpdE1lbWJlciwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBPYmplY3RTdGFydFN0YXRlLCBPYmplY3RTdGFydFZpc2l0TWVtYmVyLCBP
YmplY3RFbmRWaXNpdE1lbWJlciB9OwogTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxr
KEpTVmFsdWUgdW5maWx0ZXJlZCkKQEAgLTYzMywxMiArNjM2LDE5IEBAIE5FVkVSX0lOTElORSBK
U1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgV2Fsa2VyU3RhdGUg
c3RhdGUgPSBTdGF0ZVVua25vd247CiAgICAgSlNWYWx1ZSBpblZhbHVlID0gdW5maWx0ZXJlZDsK
ICAgICBKU1ZhbHVlIG91dFZhbHVlID0ganNOdWxsKCk7CisgICAgCisgICAgVGltZW91dENoZWNr
ZXIgbG9jYWxUaW1lb3V0Q2hlY2tlcihtX2V4ZWMtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tl
cik7CisgICAgbG9jYWxUaW1lb3V0Q2hlY2tlci5yZXNldCgpOworICAgIHVuc2lnbmVkIHRpY2tD
b3VudCA9IGxvY2FsVGltZW91dENoZWNrZXIudGlja3NVbnRpbE5leHRDaGVjaygpOwogICAgIHdo
aWxlICgxKSB7CiAgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKICAgICAgICAgICAgIGFycmF5U3Rh
cnRTdGF0ZToKICAgICAgICAgICAgIGNhc2UgQXJyYXlTdGFydFN0YXRlOiB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKGluVmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJU
KGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KGluVmFsdWUpKSk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIGFz
T2JqZWN0KGluVmFsdWUpKSB8fCBhc09iamVjdChpblZhbHVlKS0+aW5oZXJpdHMoJkpTQXJyYXk6
OmluZm8pKTsKKyAgICAgICAgICAgICAgICBpZiAob2JqZWN0U3RhY2suc2l6ZSgpICsgYXJyYXlT
dGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihtX2V4ZWMsIFJhbmdlRXJyb3IsICJNYXhpbXVtIGNhbGwgc3Rh
Y2sgc2l6ZSBleGNlZWRlZC4iKTsKKwogICAgICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0g
YXNBcnJheShpblZhbHVlKTsKICAgICAgICAgICAgICAgICBhcnJheVN0YWNrLmFwcGVuZChhcnJh
eSk7CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CkBAIC02NDYsNiArNjU2
LDE0IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVy
ZWQpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhcnJheVN0YXJ0VmlzaXRNZW1iZXI6CiAg
ICAgICAgICAgICBjYXNlIEFycmF5U3RhcnRWaXNpdE1lbWJlcjogeworICAgICAgICAgICAgICAg
IGlmICghLS10aWNrQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsVGltZW91
dENoZWNrZXIuZGlkVGltZU91dChtX2V4ZWMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X2V4ZWMtPnNldEV4Y2VwdGlvbihjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigm
bV9leGVjLT5nbG9iYWxEYXRhKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IHRpY2tDb3VudCA9IGxvY2FsVGltZW91dENoZWNrZXIudGlja3NVbnRpbE5leHRDaGVjaygpOwor
ICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXJy
YXlTdGFjay5sYXN0KCk7CiAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5kZXggPSBpbmRleFN0
YWNrLmxhc3QoKTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gYXJyYXktPmxlbmd0aCgp
KSB7CkBAIC02NTQsNyArNjcyLDE2IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2Fs
ayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgICAgIGluZGV4U3RhY2sucmVt
b3ZlTGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgaW5WYWx1ZSA9IGFycmF5LT5nZXRJbmRleChpbmRleCk7CisgICAg
ICAgICAgICAgICAgaWYgKGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIGFycmF5KSAm
JiBhcnJheS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQorICAgICAgICAgICAgICAgICAgICBpblZhbHVl
ID0gYXJyYXktPmdldEluZGV4KGluZGV4KTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAgICAgICAgICAgIGlm
IChhcnJheS0+Z2V0T3duUHJvcGVydHlTbG90KG1fZXhlYywgaW5kZXgsIHNsb3QpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgaW5WYWx1ZSA9IHNsb3QuZ2V0VmFsdWUobV9leGVjLCBpbmRleCk7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGluVmFs
dWUgPSBqc1VuZGVmaW5lZCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgaWYgKGluVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAg
ICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChBcnJheUVuZFZpc2l0TWVtYmVyKTsKICAgICAg
ICAgICAgICAgICAgICAgZ290byBzdGF0ZVVua25vd247CkBAIC02NjQsNyArNjkxLDE1IEBAIE5F
VkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIEFycmF5RW5kVmlzaXRNZW1iZXI6IHsKICAgICAg
ICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFycmF5U3RhY2subGFzdCgpOwotICAgICAgICAg
ICAgICAgIGFycmF5LT5zZXRJbmRleChpbmRleFN0YWNrLmxhc3QoKSwgY2FsbFJldml2ZXIoanNT
dHJpbmcobV9leGVjLCBVU3RyaW5nOjpmcm9tKGluZGV4U3RhY2subGFzdCgpKSksIG91dFZhbHVl
KSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBmaWx0ZXJlZFZhbHVlID0gY2FsbFJldml2ZXIo
YXJyYXksIGpzU3RyaW5nKG1fZXhlYywgVVN0cmluZzo6ZnJvbShpbmRleFN0YWNrLmxhc3QoKSkp
LCBvdXRWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRlZmlu
ZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgYXJyYXktPmRlbGV0ZVByb3BlcnR5KG1fZXhlYywg
aW5kZXhTdGFjay5sYXN0KCkpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNKU0FycmF5KCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwgYXJyYXkpICYmIGFy
cmF5LT5jYW5TZXRJbmRleChpbmRleFN0YWNrLmxhc3QoKSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBhcnJheS0+c2V0SW5kZXgoaW5kZXhTdGFjay5sYXN0KCksIGZpbHRlcmVkVmFsdWUpOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS0+
cHV0KG1fZXhlYywgaW5kZXhTdGFjay5sYXN0KCksIGZpbHRlcmVkVmFsdWUpOworICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgICAgICAgICAgICAgIGluZGV4
U3RhY2subGFzdCgpKys7CkBAIC02NzMsNyArNzA4LDEwIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVl
IFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICBvYmplY3RTdGFy
dFN0YXRlOgogICAgICAgICAgICAgY2FzZSBPYmplY3RTdGFydFN0YXRlOiB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKGluVmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJU
KCFpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBhc09iamVjdChpblZhbHVlKSkpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVCghaXNKU0FycmF5KCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwg
YXNPYmplY3QoaW5WYWx1ZSkpICYmICFhc09iamVjdChpblZhbHVlKS0+aW5oZXJpdHMoJkpTQXJy
YXk6OmluZm8pKTsKKyAgICAgICAgICAgICAgICBpZiAob2JqZWN0U3RhY2suc2l6ZSgpICsgYXJy
YXlTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihtX2V4ZWMsIFJhbmdlRXJyb3IsICJNYXhpbXVtIGNhbGwg
c3RhY2sgc2l6ZSBleGNlZWRlZC4iKTsKKwogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBhc09iamVjdChpblZhbHVlKTsKICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5hcHBl
bmQob2JqZWN0KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKQEAgLTY4
Myw2ICs3MjEsMTQgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUg
dW5maWx0ZXJlZCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVjdFN0YXJ0VmlzaXRN
ZW1iZXI6CiAgICAgICAgICAgICBjYXNlIE9iamVjdFN0YXJ0VmlzaXRNZW1iZXI6IHsKKyAgICAg
ICAgICAgICAgICBpZiAoIS0tdGlja0NvdW50KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChs
b2NhbFRpbWVvdXRDaGVja2VyLmRpZFRpbWVPdXQobV9leGVjKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgbV9leGVjLT5zZXRFeGNlcHRpb24oY3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25F
eGNlcHRpb24oJm1fZXhlYy0+Z2xvYmFsRGF0YSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB0aWNrQ291bnQgPSBsb2NhbFRpbWVvdXRDaGVja2VyLnRpY2tzVW50aWxOZXh0
Q2hlY2soKTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBKU09iamVjdCog
b2JqZWN0ID0gb2JqZWN0U3RhY2subGFzdCgpOwogICAgICAgICAgICAgICAgIHVpbnQzMl90IGlu
ZGV4ID0gaW5kZXhTdGFjay5sYXN0KCk7CiAgICAgICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJy
YXkmIHByb3BlcnRpZXMgPSBwcm9wZXJ0eVN0YWNrLmxhc3QoKTsKQEAgLTY5NCw5ICs3NDAsMTUg
QEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICAgICAgICAgIG9iamVjdC0+Z2V0T3du
UHJvcGVydHlTbG90KG1fZXhlYywgcHJvcGVydGllc1tpbmRleF0sIHNsb3QpOwotICAgICAgICAg
ICAgICAgIGluVmFsdWUgPSBzbG90LmdldFZhbHVlKG1fZXhlYywgcHJvcGVydGllc1tpbmRleF0p
OwotICAgICAgICAgICAgICAgIEFTU0VSVCghbV9leGVjLT5oYWRFeGNlcHRpb24oKSk7CisgICAg
ICAgICAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KG1fZXhlYywgcHJvcGVy
dGllc1tpbmRleF0sIHNsb3QpKQorICAgICAgICAgICAgICAgICAgICBpblZhbHVlID0gc2xvdC5n
ZXRWYWx1ZShtX2V4ZWMsIHByb3BlcnRpZXNbaW5kZXhdKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIGluVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworCisgICAgICAg
ICAgICAgICAgLy8gVGhlIGhvbGRlciBtYXkgYmUgbW9kaWZpZWQgYnkgdGhlIHJldml2ZXIgZnVu
Y3Rpb24gc28gYW55IGxvb2t1cCBtYXkgdGhyb3cKKyAgICAgICAgICAgICAgICBpZiAobV9leGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwor
CiAgICAgICAgICAgICAgICAgaWYgKGluVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAg
ICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChPYmplY3RFbmRWaXNpdE1lbWJlcik7CiAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gc3RhdGVVbmtub3duOwpAQCAtNzA4LDcgKzc2MCwxMSBAQCBORVZF
Ul9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogICAgICAg
ICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBvYmplY3RTdGFjay5sYXN0KCk7CiAgICAgICAg
ICAgICAgICAgSWRlbnRpZmllciBwcm9wID0gcHJvcGVydHlTdGFjay5sYXN0KClbaW5kZXhTdGFj
ay5sYXN0KCldOwogICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwotICAgICAg
ICAgICAgICAgIG9iamVjdC0+cHV0KG1fZXhlYywgcHJvcCwgY2FsbFJldml2ZXIoanNTdHJpbmco
bV9leGVjLCBwcm9wLnVzdHJpbmcoKSksIG91dFZhbHVlKSwgc2xvdCk7CisgICAgICAgICAgICAg
ICAgSlNWYWx1ZSBmaWx0ZXJlZFZhbHVlID0gY2FsbFJldml2ZXIob2JqZWN0LCBqc1N0cmluZyht
X2V4ZWMsIHByb3AudXN0cmluZygpKSwgb3V0VmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChm
aWx0ZXJlZFZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+
ZGVsZXRlUHJvcGVydHkobV9leGVjLCBwcm9wKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIG9iamVjdC0+cHV0KG1fZXhlYywgcHJvcCwgZmlsdGVyZWRWYWx1ZSwg
c2xvdCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICAgICAgICAgICAgICBpbmRleFN0
YWNrLmxhc3QoKSsrOwpAQCAtNzIwLDE2ICs3NzYsMjkgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUg
V2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICAgICAgb3V0
VmFsdWUgPSBpblZhbHVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRh
KCksIGFzT2JqZWN0KGluVmFsdWUpKSkKKyAgICAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0
ID0gYXNPYmplY3QoaW5WYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGlzSlNBcnJheSgmbV9l
eGVjLT5nbG9iYWxEYXRhKCksIG9iamVjdCkgfHwgb2JqZWN0LT5pbmhlcml0cygmSlNBcnJheTo6
aW5mbykpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gYXJyYXlTdGFydFN0YXRlOwogICAgICAg
ICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRTdGF0ZTsKICAgICAgICAgfQogICAgICAgICBpZiAo
c3RhdGVTdGFjay5pc0VtcHR5KCkpCiAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBzdGF0
ZSA9IHN0YXRlU3RhY2subGFzdCgpOwogICAgICAgICBzdGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsK
KworICAgICAgICBpZiAoIS0tdGlja0NvdW50KSB7CisgICAgICAgICAgICBpZiAobG9jYWxUaW1l
b3V0Q2hlY2tlci5kaWRUaW1lT3V0KG1fZXhlYykpIHsKKyAgICAgICAgICAgICAgICBtX2V4ZWMt
PnNldEV4Y2VwdGlvbihjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmbV9leGVj
LT5nbG9iYWxEYXRhKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRpY2tDb3VudCA9IGxvY2FsVGltZW91dENoZWNr
ZXIudGlja3NVbnRpbE5leHRDaGVjaygpOworICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBj
YWxsUmV2aXZlcihqc0VtcHR5U3RyaW5nKG1fZXhlYyksIG91dFZhbHVlKTsKKyAgICBKU09iamVj
dCogZmluYWxIb2xkZXIgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChtX2V4ZWMpOworICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90OworICAgIGZpbmFsSG9sZGVyLT5wdXQobV9leGVjLCBtX2V4ZWMtPmds
b2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIsIG91dFZhbHVlLCBzbG90
KTsKKyAgICByZXR1cm4gY2FsbFJldml2ZXIoZmluYWxIb2xkZXIsIGpzRW1wdHlTdHJpbmcobV9l
eGVjKSwgb3V0VmFsdWUpOwogfQogCiAvLyBFQ01BLTI2MiB2NSAxNS4xMi4yCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTg4
MWJmZC4uNjFjNDY0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDA5LTA4LTI2ICBPbGl2ZXIg
SHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgdGhpcyBpbiBKU09OLnBhcnNlIHJldml2ZXIgaXMgdGhlIGdsb2Jh
bCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI4NzUyCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciBKU09OLnBhcnNlIHdpdGggYSByZXZpdmVy
IGZ1bmN0aW9uIHRoYXQgbW9kaWZpZXMKKyAgICAgICAgdGhlIGhvbGRlciBvYmplY3QgcHJvdmlk
ZWQgZHVyaW5nIGZpbHRlcmluZy4KKworICAgICAgICAqIGZhc3QvanMvSlNPTi1wYXJzZS1yZXZp
dmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9KU09OLXBhcnNlLXJl
dml2ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvSlNPTi1wYXJz
ZS1yZXZpdmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGRlc2NyaXB0aW9uLkFycmF5LmlzQXJyYXkp
OgorICAgICAgICAoYXJyYXlSZXZpdmVyKToKKyAgICAgICAgKG9iamVjdFJldml2ZXIpOgorICAg
ICAgICAocmV2aXZlQWRkc0N5Y2xlKToKKyAgICAgICAgKHJldml2ZUludHJvZHVjZXNOZXdBcnJh
eUxpa2VPYmplY3QpOgorCiAyMDA5LTA4LTI2ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoQnVpbGQgZml4KS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvSlNPTi1wYXJzZS1yZXZpdmVyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvanMvSlNPTi1wYXJzZS1yZXZpdmVyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzBlOWJjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9KU09OLXBhcnNlLXJldml2ZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTEwIEBACitUZXN0IGJlaGF2aW91ciBvZiBKU09OIHJldml2ZXIgZnVu
Y3Rpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK0Vuc3VyZSB0aGUgaG9s
ZGVyIGZvciBvdXIgYXJyYXkgaXMgaW5kZWVkIGFuIGFycmF5CitQQVNTIEFycmF5LmlzQXJyYXko
Y3VycmVudEhvbGRlcikgaXMgdHJ1ZQorUEFTUyBjdXJyZW50SG9sZGVyLmxlbmd0aCBpcyA1CisK
K0Vuc3VyZSB0aGF0IHRoZSBob2xkZXIgYWxyZWFkeSBoYXMgYWxsIHRoZSBwcm9wZXJ0aWVzIHBy
ZXNlbnQgYXQgdGhlIHN0YXJ0IG9mIGZpbHRlcmluZworUEFTUyBjdXJyZW50SG9sZGVyWzBdIGlz
ICJhIHZhbHVlIgorUEFTUyBjdXJyZW50SG9sZGVyWzFdIGlzICJhbm90aGVyIHZhbHVlIgorUEFT
UyBjdXJyZW50SG9sZGVyWzJdIGlzICJhbmQgYW5vdGhlciB2YWx1ZSIKK1BBU1MgY3VycmVudEhv
bGRlclszXSBpcyAidG8gZGVsZXRlIgorUEFTUyBjdXJyZW50SG9sZGVyWzRdIGlzICJleHRyYSB2
YWx1ZSIKKworRW5zdXJlIHRoZSBob2xkZXIgZm9yIG91ciBhcnJheSBpcyBpbmRlZWQgYW4gYXJy
YXkKK1BBU1MgQXJyYXkuaXNBcnJheShjdXJyZW50SG9sZGVyKSBpcyB0cnVlCitQQVNTIGN1cnJl
bnRIb2xkZXIubGVuZ3RoIGlzIDUKKworRW5zdXJlIHRoYXQgd2UgYWx3YXlzIGdldCB0aGUgc2Ft
ZSBob2xkZXIKK1BBU1MgY3VycmVudEhvbGRlciBpcyBsYXN0SG9sZGVyCisKK0Vuc3VyZSB0aGF0
IHJldHVybmluZyB1bmRlZmluZWQgaGFzIHJlbW92ZWQgdGhlIHByb3BlcnR5IDAgZnJvbSB0aGUg
aG9sZGVyIGR1cmluZyBmaWx0ZXJpbmcuCitQQVNTIGN1cnJlbnRIb2xkZXIuaGFzT3duUHJvcGVy
dHkoMCkgaXMgZmFsc2UKKworRW5zdXJlIHRoZSBob2xkZXIgZm9yIG91ciBhcnJheSBpcyBpbmRl
ZWQgYW4gYXJyYXkKK1BBU1MgQXJyYXkuaXNBcnJheShjdXJyZW50SG9sZGVyKSBpcyB0cnVlCitQ
QVNTIGN1cnJlbnRIb2xkZXIubGVuZ3RoIGlzIDUKKworRW5zdXJlIHRoYXQgd2UgYWx3YXlzIGdl
dCB0aGUgc2FtZSBob2xkZXIKK1BBU1MgY3VycmVudEhvbGRlciBpcyBsYXN0SG9sZGVyCisKK0Vu
c3VyZSB0aGF0IGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5IGlzIHJlZmxlY3RlZCB3
aGlsZSBmaWx0ZXJpbmcuCitQQVNTIGN1cnJlbnRIb2xkZXJbMl0gaXMgImEgcmVwbGFjZWQgdmFs
dWUiCisKK0Vuc3VyZSB0aGF0IHRoZSBjaGFuZ2VkIHZhbHVlIGlzIHJlZmxlY3RlZCBpbiB0aGUg
YXJndW1lbnRzIHBhc3NlZCB0byB0aGUgcmV2aXZlcgorUEFTUyB2YWx1ZSBpcyBjdXJyZW50SG9s
ZGVyWzJdCisKK0Vuc3VyZSB0aGUgaG9sZGVyIGZvciBvdXIgYXJyYXkgaXMgaW5kZWVkIGFuIGFy
cmF5CitQQVNTIEFycmF5LmlzQXJyYXkoY3VycmVudEhvbGRlcikgaXMgdHJ1ZQorUEFTUyBjdXJy
ZW50SG9sZGVyLmxlbmd0aCBpcyA1CisKK0Vuc3VyZSB0aGF0IHdlIGFsd2F5cyBnZXQgdGhlIHNh
bWUgaG9sZGVyCitQQVNTIGN1cnJlbnRIb2xkZXIgaXMgbGFzdEhvbGRlcgorCitFbnN1cmUgdGhh
dCB3ZSB2aXNpdGVkIGEgdmFsdWUgdGhhdCB3ZSBoYXZlIGRlbGV0ZWQsIGFuZCB0aGF0IGRlbGV0
aW9uIGlzIHJlZmxlY3RlZCB3aGlsZSBmaWx0ZXJpbmcuCitQQVNTIGN1cnJlbnRIb2xkZXIuaGFz
T3duUHJvcGVydHkoMykgaXMgZmFsc2UKKworRW5zdXJlIHRoYXQgd2hlbiB2aXNpdGluZyBhIGRl
bGV0ZWQgcHJvcGVydHkgdmFsdWUgaXMgdW5kZWZpbmVkCitQQVNTIHZhbHVlIGlzIHVuZGVmaW5l
ZC4KKworRW5zdXJlIHRoYXQgd2UgY3JlYXRlZCB0aGUgcm9vdCBob2xkZXIgYXMgc3BlY2lmaWVk
IGluIEVTNQorUEFTUyAnJyBpbiBsYXN0SG9sZGVyIGlzIHRydWUKK1BBU1MgcmVzdWx0IGlzIGxh
c3RIb2xkZXJbJyddCisKK0Vuc3VyZSB0aGF0IGEgZGVsZXRlZCB2YWx1ZSBpcyByZXZpdmVkIGlm
IHRoZSByZXZpdmVyIGZ1bmN0aW9uIHJldHVybnMgYSB2YWx1ZQorUEFTUyByZXN1bHQuaGFzT3du
UHJvcGVydHkoMykgaXMgdHJ1ZQorCitUZXN0IGJlaGF2aW91ciBvZiByZXZpdm9yIHVzZWQgaW4g
Y29uanVuY3Rpb24gd2l0aCBhbiBvYmplY3QKK1BBU1MgY3VycmVudEhvbGRlciAhPSBnbG9iYWxP
YmplY3QgaXMgdHJ1ZQorCitFbnN1cmUgdGhhdCB0aGUgaG9sZGVyIGFscmVhZHkgaGFzIGFsbCB0
aGUgcHJvcGVydGllcyBwcmVzZW50IGF0IHRoZSBzdGFydCBvZiBmaWx0ZXJpbmcKK1BBU1MgY3Vy
cmVudEhvbGRlclsnYSBwcm9wZXJ0eSddIGlzICJhIHZhbHVlIgorUEFTUyBjdXJyZW50SG9sZGVy
Wydhbm90aGVyIHByb3BlcnR5J10gaXMgImFub3RoZXIgdmFsdWUiCitQQVNTIGN1cnJlbnRIb2xk
ZXJbJ2FuZCBhbm90aGVyIHByb3BlcnR5J10gaXMgImFuZCBhbm90aGVyIHZhbHVlIgorUEFTUyBj
dXJyZW50SG9sZGVyWyd0byBkZWxldGUnXSBpcyAid2lsbCBiZSBkZWxldGVkIgorUEFTUyBjdXJy
ZW50SG9sZGVyICE9IGdsb2JhbE9iamVjdCBpcyB0cnVlCisKK0Vuc3VyZSB0aGF0IHdlIGdldCB0
aGUgc2FtZSBob2xkZXIgb2JqZWN0IGZvciBlYWNoIHByb3BlcnR5CitQQVNTIGN1cnJlbnRIb2xk
ZXIgaXMgbGFzdEhvbGRlcgorCitFbnN1cmUgdGhhdCByZXR1cm5pbmcgdW5kZWZpbmVkIGhhcyBj
b3JyZWN0bHkgcmVtb3ZlZCB0aGUgcHJvcGVydHkgJ2EgcHJvcGVydHknIGZyb20gdGhlIGhvbGRl
ciBvYmplY3QKK1BBU1MgY3VycmVudEhvbGRlci5oYXNPd25Qcm9wZXJ0eSgnYSBwcm9wZXJ0eScp
IGlzIGZhbHNlCitQQVNTIGN1cnJlbnRIb2xkZXIgIT0gZ2xvYmFsT2JqZWN0IGlzIHRydWUKKwor
RW5zdXJlIHRoYXQgd2UgZ2V0IHRoZSBzYW1lIGhvbGRlciBvYmplY3QgZm9yIGVhY2ggcHJvcGVy
dHkKK1BBU1MgY3VycmVudEhvbGRlciBpcyBsYXN0SG9sZGVyCitFbnN1cmUgdGhhdCBjaGFuZ2lu
ZyB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eSBpcyByZWZsZWN0ZWQgd2hpbGUgZmlsdGVyaW5nLgor
UEFTUyBjdXJyZW50SG9sZGVyWydhbmQgYW5vdGhlciBwcm9wZXJ0eSddIGlzICJhIHJlcGxhY2Vk
IHZhbHVlIgorCitFbnN1cmUgdGhhdCB0aGUgY2hhbmdlZCB2YWx1ZSBpcyByZWZsZWN0ZWQgaW4g
dGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHJldml2ZXIKK1BBU1MgdmFsdWUgaXMgImEgcmVw
bGFjZWQgdmFsdWUiCitQQVNTIGN1cnJlbnRIb2xkZXIgIT0gZ2xvYmFsT2JqZWN0IGlzIHRydWUK
KworRW5zdXJlIHRoYXQgd2UgZ2V0IHRoZSBzYW1lIGhvbGRlciBvYmplY3QgZm9yIGVhY2ggcHJv
cGVydHkKK1BBU1MgY3VycmVudEhvbGRlciBpcyBsYXN0SG9sZGVyCisKK0Vuc3VyZSB0aGF0IHdl
IHZpc2l0ZWQgYSB2YWx1ZSB0aGF0IHdlIGhhdmUgZGVsZXRlZCwgYW5kIHRoYXQgZGVsZXRpb24g
aXMgcmVmbGVjdGVkIHdoaWxlIGZpbHRlcmluZy4KK1BBU1MgY3VycmVudEhvbGRlci5oYXNPd25Q
cm9wZXJ0eSgndG8gZGVsZXRlJykgaXMgZmFsc2UKKworRW5zdXJlIHRoYXQgd2hlbiB2aXNpdGlu
ZyBhIGRlbGV0ZWQgcHJvcGVydHkgdmFsdWUgaXMgdW5kZWZpbmVkCitQQVNTIHZhbHVlIGlzIHVu
ZGVmaW5lZC4KKworRW5zdXJlIHRoYXQgd2UgY3JlYXRlZCB0aGUgcm9vdCBob2xkZXIgYXMgc3Bl
Y2lmaWVkIGluIEVTNQorUEFTUyBsYXN0SG9sZGVyLmhhc093blByb3BlcnR5KCcnKSBpcyB0cnVl
CitQQVNTIHJlc3VsdC5oYXNPd25Qcm9wZXJ0eSgnYSBwcm9wZXJ0eScpIGlzIGZhbHNlCitQQVNT
IHJlc3VsdC5oYXNPd25Qcm9wZXJ0eSgndG8gZGVsZXRlJykgaXMgdHJ1ZQorUEFTUyByZXN1bHQg
aXMgbGFzdEhvbGRlclsnJ10KKworVGVzdCBiZWhhdmlvdXIgb2YgcmV2aXZvciB0aGF0IGludHJv
ZHVjZXMgYSBjeWNsZQorUEFTUyBKU09OLnBhcnNlKCJbMCwxXSIsIHJldml2ZUFkZHNDeWNsZSkg
dGhyZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6IE1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2Vl
ZGVkLi4KKworVGVzdCBiZWhhdmlvdXIgb2YgcmV2aXZvciB0aGF0IGludHJvZHVjZXMgYSBuZXcg
YXJyYXkgY2xhc3NlZCBvYmplY3QgKHRoZSByZXN1bHQgb2YgYSByZWdleCkKK1BBU1MgSlNPTi5z
dHJpbmdpZnkoSlNPTi5wYXJzZSgiWzAsMV0iLCByZXZpdmVJbnRyb2R1Y2VzTmV3QXJyYXlMaWtl
T2JqZWN0KSkgaXMgJ1swLFsiYSIsImEiXV0nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9K
U09OLXBhcnNlLXJldml2ZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvSlNPTi1wYXJzZS1y
ZXZpdmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdhNDViZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvSlNPTi1wYXJzZS1yZXZpdmVy
Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0icmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9KU09OLXBhcnNlLXJldml2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvSlNPTi1wYXJzZS1yZXZpdmVyLmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvSlNPTi1wYXJzZS1yZXZpdmVyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNWNmMjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9KU09OLXBhcnNlLXJldml2ZXIuanMK
QEAgLTAsMCArMSwxODQgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IGJlaGF2aW91ciBvZiBKU09OIHJl
dml2ZXIgZnVuY3Rpb24uIikKK2lmICghQXJyYXkuaXNBcnJheSkKKyAgICBBcnJheS5pc0FycmF5
ID0gZnVuY3Rpb24obykgeyByZXR1cm4gby5jb25zdHJ1Y3RvciA9PT0gQXJyYXk7IH0KKworZnVu
Y3Rpb24gYXJyYXlSZXZpdmVyKGksdikgeworICAgIGlmIChpICE9ICIiKSB7CisgICAgICAgIGN1
cnJlbnRIb2xkZXIgPSB0aGlzOworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJF
bnN1cmUgdGhlIGhvbGRlciBmb3Igb3VyIGFycmF5IGlzIGluZGVlZCBhbiBhcnJheSIpOworICAg
ICAgICBzaG91bGRCZVRydWUoIkFycmF5LmlzQXJyYXkoY3VycmVudEhvbGRlcikiKTsKKyAgICAg
ICAgc2hvdWxkQmUoImN1cnJlbnRIb2xkZXIubGVuZ3RoIiwgIiIgKyBleHBlY3RlZExlbmd0aCk7
CisgICAgICAgIGlmIChpID4gMCkgeworICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAg
ICAgZGVidWcoIkVuc3VyZSB0aGF0IHdlIGFsd2F5cyBnZXQgdGhlIHNhbWUgaG9sZGVyIik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY3VycmVudEhvbGRlciIsICJsYXN0SG9sZGVyIik7CisgICAg
ICAgIH0KKyAgICAgICAgc3dpdGNoIChOdW1iZXIoaSkpIHsKKyAgICAgICAgY2FzZSAwOgorICAg
ICAgICAgICAgdiA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAg
ICAgIGRlYnVnKCJFbnN1cmUgdGhhdCB0aGUgaG9sZGVyIGFscmVhZHkgaGFzIGFsbCB0aGUgcHJv
cGVydGllcyBwcmVzZW50IGF0IHRoZSBzdGFydCBvZiBmaWx0ZXJpbmciKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJyZW50SG9sZGVyWzBdIiwgJyJhIHZhbHVlIicpOworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnJlbnRIb2xkZXJbMV0iLCAnImFub3RoZXIgdmFsdWUiJyk7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY3VycmVudEhvbGRlclsyXSIsICciYW5kIGFub3RoZXIgdmFsdWUiJyk7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3VycmVudEhvbGRlclszXSIsICcidG8gZGVsZXRlIicp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnJlbnRIb2xkZXJbNF0iLCAnImV4dHJhIHZhbHVl
IicpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAg
ZGVidWcoIiIpOworICAgICAgICAgICAgZGVidWcoIkVuc3VyZSB0aGF0IHJldHVybmluZyB1bmRl
ZmluZWQgaGFzIHJlbW92ZWQgdGhlIHByb3BlcnR5IDAgZnJvbSB0aGUgaG9sZGVyIGR1cmluZyBm
aWx0ZXJpbmcuIik7CisgICAgICAgICAgICBzaG91bGRCZUZhbHNlKCJjdXJyZW50SG9sZGVyLmhh
c093blByb3BlcnR5KDApIik7CisgICAgICAgICAgICBjdXJyZW50SG9sZGVyWzJdID0gImEgcmVw
bGFjZWQgdmFsdWUiOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAyOgorICAg
ICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgZGVidWcoIkVuc3VyZSB0aGF0IGNoYW5n
aW5nIHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5IGlzIHJlZmxlY3RlZCB3aGlsZSBmaWx0ZXJpbmcu
IikKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJyZW50SG9sZGVyWzJdIiwgJyJhIHJlcGxhY2Vk
IHZhbHVlIicpOworICAgICAgICAgICAgdmFsdWUgPSB2OworICAgICAgICAgICAgZGVidWcoIiIp
OworICAgICAgICAgICAgZGVidWcoIkVuc3VyZSB0aGF0IHRoZSBjaGFuZ2VkIHZhbHVlIGlzIHJl
ZmxlY3RlZCBpbiB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgcmV2aXZlciIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoInZhbHVlIiwgImN1cnJlbnRIb2xkZXJbMl0iKTsKKyAgICAgICAgICAg
IGRlbGV0ZSB0aGlzWzNdOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAzOgor
ICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgZGVidWcoIkVuc3VyZSB0aGF0IHdl
IHZpc2l0ZWQgYSB2YWx1ZSB0aGF0IHdlIGhhdmUgZGVsZXRlZCwgYW5kIHRoYXQgZGVsZXRpb24g
aXMgcmVmbGVjdGVkIHdoaWxlIGZpbHRlcmluZy4iKTsKKyAgICAgICAgICAgIHNob3VsZEJlRmFs
c2UoImN1cnJlbnRIb2xkZXIuaGFzT3duUHJvcGVydHkoMykiKTsKKyAgICAgICAgICAgIHZhbHVl
ID0gdjsKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGRlYnVnKCJFbnN1cmUg
dGhhdCB3aGVuIHZpc2l0aW5nIGEgZGVsZXRlZCBwcm9wZXJ0eSB2YWx1ZSBpcyB1bmRlZmluZWQi
KTsKKyAgICAgICAgICAgIHNob3VsZEJlVW5kZWZpbmVkKCJ2YWx1ZSIpOworICAgICAgICAgICAg
diA9ICJ1bmRlbGV0ZSB0aGUgcHJvcGVydHkiOworICAgICAgICAgICAgZXhwZWN0ZWRMZW5ndGgg
PSB0aGlzLmxlbmd0aCA9IDM7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDQ6
CisgICAgICAgICAgICBpZiAodGhpcy5sZW5ndGggIT0gMykgeworICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkRpZCBub3QgY2FsbCByZXZpdmVyIGZvciBkZWxldGVkIHByb3BlcnR5Iik7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRMZW5ndGggPSB0aGlzLmxlbmd0aCA9IDM7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgY2FzZSA1OgorICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiRW5zdXJlZCB0aGF0IHByb3BlcnR5IHdhcyB2aXNpdGVkIGRlc3Bp
dGUgQXJyYXkgbGVuZ3RoIGJlaW5nIHJlZHVjZWQuIik7CisgICAgICAgICAgICB2YWx1ZSA9IHY7
CisgICAgICAgICAgICBzaG91bGRCZVVuZGVmaW5lZCgidmFsdWUiKTsKKyAgICAgICAgICAgIHRo
aXNbMTBdID0gImZhaWwiOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlZpc2l0ZWQgdW5leHBlY3RlZCBwcm9wZXJ0eSAiICsg
aSArICIgd2l0aCB2YWx1ZSAiICsgdik7CisgICAgICAgIH0KKyAgICB9CisgICAgbGFzdEhvbGRl
ciA9IHRoaXM7CisgICAgcmV0dXJuIHY7Cit9CitleHBlY3RlZExlbmd0aCA9IDU7Cit2YXIgcmVz
dWx0ID0gSlNPTi5wYXJzZSgnWyJhIHZhbHVlIiwgImFub3RoZXIgdmFsdWUiLCAiYW5kIGFub3Ro
ZXIgdmFsdWUiLCAidG8gZGVsZXRlIiwgImV4dHJhIHZhbHVlIl0nLCBhcnJheVJldml2ZXIpOwor
ZGVidWcoIiIpOworZGVidWcoIkVuc3VyZSB0aGF0IHdlIGNyZWF0ZWQgdGhlIHJvb3QgaG9sZGVy
IGFzIHNwZWNpZmllZCBpbiBFUzUiKTsKK3Nob3VsZEJlVHJ1ZSgiJycgaW4gbGFzdEhvbGRlciIp
Oworc2hvdWxkQmUoInJlc3VsdCIsICJsYXN0SG9sZGVyWycnXSIpOworZGVidWcoIiIpOworZGVi
dWcoIkVuc3VyZSB0aGF0IGEgZGVsZXRlZCB2YWx1ZSBpcyByZXZpdmVkIGlmIHRoZSByZXZpdmVy
IGZ1bmN0aW9uIHJldHVybnMgYSB2YWx1ZSIpOworc2hvdWxkQmVUcnVlKCJyZXN1bHQuaGFzT3du
UHJvcGVydHkoMykiKTsKKworZnVuY3Rpb24gb2JqZWN0UmV2aXZlcihpLHYpIHsKKyAgICBpZiAo
aSAhPSAiIikgeworICAgICAgICBjdXJyZW50SG9sZGVyID0gdGhpczsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCJjdXJyZW50SG9sZGVyICE9IGdsb2JhbE9iamVjdCIpOworICAgICAgICBpZiAoc2Vl
bikgeworICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgZGVidWcoIkVuc3VyZSB0
aGF0IHdlIGdldCB0aGUgc2FtZSBob2xkZXIgb2JqZWN0IGZvciBlYWNoIHByb3BlcnR5Iik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY3VycmVudEhvbGRlciIsICJsYXN0SG9sZGVyIik7CisgICAg
ICAgIH0KKyAgICAgICAgc2VlbiA9IHRydWU7CisgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAg
ICBjYXNlICJhIHByb3BlcnR5IjoKKyAgICAgICAgICAgIHYgPSB1bmRlZmluZWQ7CisgICAgICAg
ICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICBkZWJ1ZygiRW5zdXJlIHRoYXQgdGhlIGhvbGRl
ciBhbHJlYWR5IGhhcyBhbGwgdGhlIHByb3BlcnRpZXMgcHJlc2VudCBhdCB0aGUgc3RhcnQgb2Yg
ZmlsdGVyaW5nIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3VycmVudEhvbGRlclsnYSBwcm9w
ZXJ0eSddIiwgJyJhIHZhbHVlIicpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnJlbnRIb2xk
ZXJbJ2Fub3RoZXIgcHJvcGVydHknXSIsICciYW5vdGhlciB2YWx1ZSInKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJyZW50SG9sZGVyWydhbmQgYW5vdGhlciBwcm9wZXJ0eSddIiwgJyJhbmQg
YW5vdGhlciB2YWx1ZSInKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJyZW50SG9sZGVyWyd0
byBkZWxldGUnXSIsICcid2lsbCBiZSBkZWxldGVkIicpOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSAiYW5vdGhlciBwcm9wZXJ0eSI6CisgICAgICAgICAgICBkZWJ1ZygiIik7
CisgICAgICAgICAgICBkZWJ1ZygiRW5zdXJlIHRoYXQgcmV0dXJuaW5nIHVuZGVmaW5lZCBoYXMg
Y29ycmVjdGx5IHJlbW92ZWQgdGhlIHByb3BlcnR5ICdhIHByb3BlcnR5JyBmcm9tIHRoZSBob2xk
ZXIgb2JqZWN0Iik7CisgICAgICAgICAgICBzaG91bGRCZUZhbHNlKCJjdXJyZW50SG9sZGVyLmhh
c093blByb3BlcnR5KCdhIHByb3BlcnR5JykiKTsKKyAgICAgICAgICAgIGN1cnJlbnRIb2xkZXJb
J2FuZCBhbm90aGVyIHByb3BlcnR5J10gPSAiYSByZXBsYWNlZCB2YWx1ZSI7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlICJhbmQgYW5vdGhlciBwcm9wZXJ0eSI6CisgICAgICAg
ICAgICBkZWJ1ZygiRW5zdXJlIHRoYXQgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIGEgcHJvcGVydHkg
aXMgcmVmbGVjdGVkIHdoaWxlIGZpbHRlcmluZy4iKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJyZW50SG9sZGVyWydhbmQgYW5vdGhlciBwcm9wZXJ0eSddIiwgJyJhIHJlcGxhY2VkIHZhbHVl
IicpOworICAgICAgICAgICAgdmFsdWUgPSB2OworICAgICAgICAgICAgZGVidWcoIiIpOworICAg
ICAgICAgICAgZGVidWcoIkVuc3VyZSB0aGF0IHRoZSBjaGFuZ2VkIHZhbHVlIGlzIHJlZmxlY3Rl
ZCBpbiB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgcmV2aXZlciIpOworICAgICAgICAgICAg
c2hvdWxkQmUoInZhbHVlIiwgJyJhIHJlcGxhY2VkIHZhbHVlIicpOworICAgICAgICAgICAgZGVs
ZXRlIHRoaXNbInRvIGRlbGV0ZSJdOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSAidG8gZGVsZXRlIjoKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGRlYnVn
KCJFbnN1cmUgdGhhdCB3ZSB2aXNpdGVkIGEgdmFsdWUgdGhhdCB3ZSBoYXZlIGRlbGV0ZWQsIGFu
ZCB0aGF0IGRlbGV0aW9uIGlzIHJlZmxlY3RlZCB3aGlsZSBmaWx0ZXJpbmcuIik7CisgICAgICAg
ICAgICBzaG91bGRCZUZhbHNlKCJjdXJyZW50SG9sZGVyLmhhc093blByb3BlcnR5KCd0byBkZWxl
dGUnKSIpOworICAgICAgICAgICAgdmFsdWUgPSB2OworICAgICAgICAgICAgZGVidWcoIiIpOwor
ICAgICAgICAgICAgZGVidWcoIkVuc3VyZSB0aGF0IHdoZW4gdmlzaXRpbmcgYSBkZWxldGVkIHBy
b3BlcnR5IHZhbHVlIGlzIHVuZGVmaW5lZCIpOworICAgICAgICAgICAgc2hvdWxkQmVVbmRlZmlu
ZWQoInZhbHVlIik7CisgICAgICAgICAgICB2ID0gInVuZGVsZXRlIHRoZSBwcm9wZXJ0eSI7Cisg
ICAgICAgICAgICB0aGlzWyJuZXcgcHJvcGVydHkiXSA9ICJmYWlsIjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGVzdEZhaWxlZCgiVmlzaXRlZCB1
bmV4cGVjdGVkIHByb3BlcnR5ICIgKyBpICsgIiB3aXRoIHZhbHVlICIgKyB2KTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBsYXN0SG9sZGVyID0gdGhpczsKKyAgICByZXR1cm4gdjsKK30KKworZGVi
dWcoIiIpOworZGVidWcoIlRlc3QgYmVoYXZpb3VyIG9mIHJldml2b3IgdXNlZCBpbiBjb25qdW5j
dGlvbiB3aXRoIGFuIG9iamVjdCIpOwordmFyIHNlZW4gPSBmYWxzZTsKK3ZhciBnbG9iYWxPYmpl
Y3QgPSB0aGlzOwordmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoJ3siYSBwcm9wZXJ0eSIgOiAiYSB2
YWx1ZSIsICJhbm90aGVyIHByb3BlcnR5IiA6ICJhbm90aGVyIHZhbHVlIiwgImFuZCBhbm90aGVy
IHByb3BlcnR5IiA6ICJhbmQgYW5vdGhlciB2YWx1ZSIsICJ0byBkZWxldGUiIDogIndpbGwgYmUg
ZGVsZXRlZCJ9Jywgb2JqZWN0UmV2aXZlcik7CitkZWJ1ZygiIik7CitkZWJ1ZygiRW5zdXJlIHRo
YXQgd2UgY3JlYXRlZCB0aGUgcm9vdCBob2xkZXIgYXMgc3BlY2lmaWVkIGluIEVTNSIpOworc2hv
dWxkQmVUcnVlKCJsYXN0SG9sZGVyLmhhc093blByb3BlcnR5KCcnKSIpOworc2hvdWxkQmVGYWxz
ZSgicmVzdWx0Lmhhc093blByb3BlcnR5KCdhIHByb3BlcnR5JykiKTsKK3Nob3VsZEJlVHJ1ZSgi
cmVzdWx0Lmhhc093blByb3BlcnR5KCd0byBkZWxldGUnKSIpOworc2hvdWxkQmUoInJlc3VsdCIs
ICJsYXN0SG9sZGVyWycnXSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBiZWhhdmlvdXIg
b2YgcmV2aXZvciB0aGF0IGludHJvZHVjZXMgYSBjeWNsZSIpOworZnVuY3Rpb24gcmV2aXZlQWRk
c0N5Y2xlKGksIHYpIHsKKyAgICBpZiAoaSA9PSAwKQorICAgICAgICB0aGlzWzFdID0gdGhpczsK
KyAgICByZXR1cm4gdjsKK30KKworc2hvdWxkVGhyb3coJ0pTT04ucGFyc2UoIlswLDFdIiwgcmV2
aXZlQWRkc0N5Y2xlKScpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBiZWhhdmlvdXIgb2Yg
cmV2aXZvciB0aGF0IGludHJvZHVjZXMgYSBuZXcgYXJyYXkgY2xhc3NlZCBvYmplY3QgKHRoZSBy
ZXN1bHQgb2YgYSByZWdleCkiKTsKK3ZhciBjcmVhdGVkQmFkbmVzcyA9IGZhbHNlOworZnVuY3Rp
b24gcmV2aXZlSW50cm9kdWNlc05ld0FycmF5TGlrZU9iamVjdChpLCB2KSB7CisgICAgaWYgKGkg
PT0gMCAmJiAhY3JlYXRlZEJhZG5lc3MpIHsKKyAgICAgICAgdGhpc1sxXSA9IC8oYSkrLy5leGVj
KCJhIik7CisgICAgICAgIGNyZWF0ZWRCYWRuZXNzID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IHY7Cit9CisKK3Nob3VsZEJlKCdKU09OLnN0cmluZ2lmeShKU09OLnBhcnNlKCJbMCwxXSIsIHJl
dml2ZUludHJvZHVjZXNOZXdBcnJheUxpa2VPYmplY3QpKScsICdcJ1swLFsiYSIsImEiXV1cJycp
OworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis=
</data>
<flag name="review"
          id="19661"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>