<?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>82046</bug_id>
          
          <creation_ts>2012-03-23 04:27:48 -0700</creation_ts>
          <short_desc>The JSC code generator doesn&apos;t generate correct code for Constructors</short_desc>
          <delta_ts>2012-03-23 06:28:20 -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>All</rep_platform>
          <op_sys>All</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>81657</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>586223</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-23 04:27:48 -0700</bug_when>
    <thetext>The main bulk of code uses the name jsConstructor for the created object, and then calls GenerateParametersCheck which generates code that uses the name castedThis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586230</commentid>
    <comment_count>1</comment_count>
      <attachid>133461</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-23 04:39:27 -0700</bug_when>
    <thetext>Created attachment 133461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586234</commentid>
    <comment_count>2</comment_count>
      <attachid>133461</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-23 04:54:09 -0700</bug_when>
    <thetext>Comment on attachment 133461
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        The JSC code generator doesn&apos;t generate correct code for Constructors

This patch looks OK, but it is just renaming a variable. &quot;[JSC] Rename jsConstructor to castedThis for naming consistency in CodeGeneratorJS.pm&quot; would be a better title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586241</commentid>
    <comment_count>3</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-23 05:12:28 -0700</bug_when>
    <thetext>It&apos;s more than just a rename, without this rename the generated code doesn&apos;t compile if the constructor takes parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586242</commentid>
    <comment_count>4</comment_count>
      <attachid>133461</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-23 05:14:05 -0700</bug_when>
    <thetext>Comment on attachment 133461
Patch

The change will affect exisiting run-bindings-tests. Would you update them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586243</commentid>
    <comment_count>5</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-23 05:14:53 -0700</bug_when>
    <thetext>Sure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586254</commentid>
    <comment_count>6</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-23 05:46:14 -0700</bug_when>
    <thetext>Just for documentation purposes this is the generated code before my patch:


EncodedJSValue JSC_HOST_CALL JSTestObjConstructor::constructJSTestObj(ExecState* exec)
{
    JSTestObjConstructor* jsConstructor = static_cast&lt;JSTestObjConstructor*&gt;(exec-&gt;callee());
    if (exec-&gt;argumentCount() &lt; 1)
        return throwVMError(exec, createTypeError(exec, &quot;Not enough arguments&quot;));
    if (exec-&gt;argumentCount() &lt;= 0 || !exec-&gt;argument(0).isFunction()) {
        setDOMException(exec, TYPE_MISMATCH_ERR);
        return JSValue::encode(jsUndefined());
    }
    RefPtr&lt;TestCallback&gt; testCallback = JSTestCallback::create(asObject(exec-&gt;argument(0)), castedThis-&gt;globalObject());
    RefPtr&lt;TestObj&gt; object = TestObj::create(testCallback);
    return JSValue::encode(asObject(toJS(exec, jsConstructor-&gt;globalObject(), object.get())));
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586255</commentid>
    <comment_count>7</comment_count>
      <attachid>133467</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-23 05:48:02 -0700</bug_when>
    <thetext>Created attachment 133467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586257</commentid>
    <comment_count>8</comment_count>
      <attachid>133467</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-23 05:50:22 -0700</bug_when>
    <thetext>Comment on attachment 133467
Patch

OK. Thanks for the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586278</commentid>
    <comment_count>9</comment_count>
      <attachid>133467</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-23 06:28:14 -0700</bug_when>
    <thetext>Comment on attachment 133467
Patch

Clearing flags on attachment: 133467

Committed r111856: &lt;http://trac.webkit.org/changeset/111856&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586280</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-23 06:28:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133461</attachid>
            <date>2012-03-23 04:39:27 -0700</date>
            <delta_ts>2012-03-23 05:47:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82046-20120323123925.patch</filename>
            <type>text/plain</type>
            <size>3153</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU4NTE3MTI5MGRkZmEx
ZGRlZTA3ZWE2MWEyYjMzMDY1MmJhNGIwZi4uMzVmOGI5YjE2MGU2NmY0MzRhYWY4YWU3MjQyYzUz
MWI3YmMzNDg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAzLTIzICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFRoZSBKU0MgY29k
ZSBnZW5lcmF0b3IgZG9lc24ndCBnZW5lcmF0ZSBjb3JyZWN0IGNvZGUgZm9yIENvbnN0cnVjdG9y
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIwNDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbWFp
biBidWxrIG9mIGdlbmVyYXRlZCBjb2RlIGZvciBjb25zdHJ1Y3RvcnMgdXNlcyB0aGUgbmFtZSBq
c0NvbnN0cnVjdG9yCisgICAgICAgIGZvciB0aGUgY3JlYXRlZCBvYmplY3QsIGFuZCB0aGVuIGNh
bGxzIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrIHdoaWNoIGdlbmVyYXRlcworICAgICAgICBjb2Rl
IHRoYXQgdXNlcyB0aGUgbmFtZSBjYXN0ZWRUaGlzLgorCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVm
aW5pdGlvbik6CisKIDIwMTItMDMtMjMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgY3NzVGV4dCBzaG91bGQgdXNlIFN0cmluZ0J1aWxkZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYjBi
ZjY3YWI2MGQ5YjI2Y2U4YWU2MTJjYmQwYTBkYzNmYjlkOWUzMy4uNWNjYjU3ZDgyNWM3NGYwZWJh
MDI4ZTAxM2FiNGFkODE5YzgzNDc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM1NjcsNyArMzU2Nyw3IEBAIEVORAog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0JHtjbGFzc05hbWV9KEV4ZWNT
dGF0ZSogZXhlYylcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7
CiAKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAke2NvbnN0cnVjdG9yQ2xh
c3NOYW1lfSoganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PCR7Y29uc3RydWN0b3JDbGFzc05h
bWV9Kj4oZXhlYy0+Y2FsbGVlKCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2Fz
dDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGV4ZWMtPmNhbGxlZSgpKTtcbiIpOwogCiAgICAg
ICAgICAgICBteSAkZnVuY3Rpb24gPSAkZGF0YU5vZGUtPmNvbnN0cnVjdG9yOwogICAgICAgICAg
ICAgbXkgQGNvbnN0cnVjdG9yQXJnTGlzdDsKQEAgLTM1ODksMTIgKzM1ODksMTIgQEAgRU5ECiAK
ICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlu
cygkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9LCAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCIpKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAY29uc3RydWN0b3JBcmdM
aXN0LCAiY29udGV4dCIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgaWYgKCFjb250ZXh0KVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsIFwiJHtpbnRlcmZhY2VOYW1lfSBjb25zdHJ1Y3RvciBhc3NvY2lh
dGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlXCIpKTtcbiIpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKCRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvcikgewotICAgICAgICAgICAg
ICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgImpzQ29uc3RydWN0b3ItPmRvY3VtZW50KCki
KTsKKyAgICAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3RvckFyZ0xpc3QsICJjYXN0ZWRUaGlz
LT5kb2N1bWVudCgpIik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG15ICRpbmRleCA9
IDA7CkBAIC0zNjIxLDcgKzM2MjEsNyBAQCBFTkQKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMo
ZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTtcbiIp
OworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2Jq
ZWN0LmdldCgpKSkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5c
biIpOwogICAgICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133467</attachid>
            <date>2012-03-23 05:48:02 -0700</date>
            <delta_ts>2012-03-23 06:28:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82046-20120323134800.patch</filename>
            <type>text/plain</type>
            <size>14020</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE0YzNjNzk2MzdhYmY4
NTk0NTYwY2U2OWFjOTM4YzdmMzA5Mjg1Ni4uNThiNTA4MTZiMmY2NTA0OTU3NmQ5Y2UzODVkMWQz
NDg0MzUxN2I5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTIzICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFRoZSBKU0MgY29k
ZSBnZW5lcmF0b3IgZG9lc24ndCBnZW5lcmF0ZSBjb3JyZWN0IGNvZGUgZm9yIENvbnN0cnVjdG9y
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIwNDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbWFp
biBidWxrIG9mIGdlbmVyYXRlZCBjb2RlIGZvciBjb25zdHJ1Y3RvcnMgdXNlcyB0aGUgbmFtZSBq
c0NvbnN0cnVjdG9yCisgICAgICAgIGZvciB0aGUgY3JlYXRlZCBvYmplY3QsIGFuZCB0aGVuIGNh
bGxzIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrIHdoaWNoIGdlbmVyYXRlcworICAgICAgICBjb2Rl
IHRoYXQgdXNlcyB0aGUgbmFtZSBjYXN0ZWRUaGlzLgorCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVm
aW5pdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0SlNUZXN0SW50ZXJmYWNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVj
dEpTVGVzdE9iaik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6OmNvbnN0cnVj
dG9yQ2FsbGJhY2spOgorCiAyMDEyLTAzLTIzICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZWJhc2VsaW5lZCBydW4tYmluZGluZ3Mt
dGVzdHMgcmVzdWx0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYjBiZjY3YWI2MGQ5YjI2Y2U4YWU2MTJjYmQwYTBkYzNm
YjlkOWUzMy4uNWNjYjU3ZDgyNWM3NGYwZWJhMDI4ZTAxM2FiNGFkODE5YzgzNDc2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
QEAgLTM1NjcsNyArMzU2Nyw3IEBAIEVORAogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6
Y29uc3RydWN0JHtjbGFzc05hbWV9KEV4ZWNTdGF0ZSogZXhlYylcbiIpOwogICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CiAKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSoganNDb25zdHJ1Y3RvciA9IHN0YXRp
Y19jYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oZXhlYy0+Y2FsbGVlKCkpO1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFt
ZX0qIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGV4
ZWMtPmNhbGxlZSgpKTtcbiIpOwogCiAgICAgICAgICAgICBteSAkZnVuY3Rpb24gPSAkZGF0YU5v
ZGUtPmNvbnN0cnVjdG9yOwogICAgICAgICAgICAgbXkgQGNvbnN0cnVjdG9yQXJnTGlzdDsKQEAg
LTM1ODksMTIgKzM1ODksMTIgQEAgRU5ECiAKICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRv
ci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDYWxsV2l0aCJ9LCAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpKSB7CiAgICAgICAgICAg
ICAgICAgcHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAiY29udGV4dCIpOwotICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpO1xuIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsK
ICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFjb250ZXh0KVxu
Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIFwiJHtpbnRlcmZh
Y2VOYW1lfSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlXCIp
KTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCRnZW5lcmF0aW5nTmFtZWRD
b25zdHJ1Y3RvcikgewotICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwg
ImpzQ29uc3RydWN0b3ItPmRvY3VtZW50KCkiKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBjb25z
dHJ1Y3RvckFyZ0xpc3QsICJjYXN0ZWRUaGlzLT5kb2N1bWVudCgpIik7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIG15ICRpbmRleCA9IDA7CkBAIC0zNjIxLDcgKzM2MjEsNyBAQCBFTkQK
ICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2Jq
ZWN0KCksIG9iamVjdC5nZXQoKSkpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpO1xuIik7CiAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHAKaW5kZXggYzM4ODhlOGU4ZjAyMGEyMWM5MzRiMTY4OTFkNjIzY2I4ZjRkZWRjNy4u
YzQ2NGQ0YTEyN2FlNWJjMmM2ZTdhYzU1ODkxNDY4YjVkMTdjZDZjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlYwogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpj
b25zdHJ1Y3RKU1Rlc3RJbnRlcmZhY2UoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CisgICAgSlNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2VDb25z
dHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIk5vdCBlbm91Z2ggYXJndW1lbnRzIikpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwpAQCAtMTMyLDcgKzEzMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdEludGVyZmFjCiAgICAgY29uc3Qg
U3RyaW5nJiBzdHIyKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVj
LCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGNhc3RlZFRoaXMt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRlc3RJ
bnRlcmZhY2UgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIp
KTsKICAgICBSZWZQdHI8VGVzdEludGVyZmFjZT4gb2JqZWN0ID0gVGVzdEludGVyZmFjZTo6Y3Jl
YXRlKGNvbnRleHQsIHN0cjEsIHN0cjIsIGVjKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpjb25zdHJ1
Y3RKU1Rlc3RJbnRlcmZhYwogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgfQotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9i
YWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0Lmdl
dCgpKSkpOwogfQogCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjI1MjA4ZGMyODY1ZWIzYTI3
ODVlZjMyMzQwYTc3MTAzMGVkNTViMy4uMjEyNTYwNGEwMzY3Njc1ZDBjY2UxNDc2NWQ5YzU1Yjhl
MjNiYmY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtODksNyAr
ODksNyBAQCB2b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0
PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkp
OworICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKiBjYXN0ZWRUaGlz
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IqPihl
eGVjLT5jYWxsZWUoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJOb3Qg
ZW5vdWdoIGFyZ3VtZW50cyIpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTEwMiwx
MiArMTAyLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTCiAgICAgY29uc3QgU3RyaW5nJiBz
dHIzKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAyLCBEZWZh
dWx0SXNOdWxsU3RyaW5nKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihleGVjLCAyLCBEZWZhdWx0SXNOdWxsU3RyaW5nKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgUmVmUHRyPFRlc3ROYW1lZENv
bnN0cnVjdG9yPiBvYmplY3QgPSBUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRm9ySlNDb25z
dHJ1Y3Rvcihqc0NvbnN0cnVjdG9yLT5kb2N1bWVudCgpLCBzdHIxLCBzdHIyLCBzdHIzLCBlYyk7
CisgICAgUmVmUHRyPFRlc3ROYW1lZENvbnN0cnVjdG9yPiBvYmplY3QgPSBUZXN0TmFtZWRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihjYXN0ZWRUaGlzLT5kb2N1bWVudCgpLCBz
dHIxLCBzdHIyLCBzdHIzLCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBlYyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgp
KTsKICAgICB9Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMs
IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwg
Q29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNTY5MzkyZDA1ZjNl
Y2ViOTJkZWYxODE3OTAzMDllNzNjYjk5NTkxMy4uYTVkMWZhYmYzMDliNTQ3NjkzMDU5MzIwYzA0
MjJkZDUyOTIxOGY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIEpTVGVz
dE9iakNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbAogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU1Rlc3RPYmpQ
cm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7
CiB9CiAKIGJvb2wgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0yMjAsOSArMjIwLDE2IEBAIGJvb2wgSlNUZXN0T2Jq
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T2JqQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdEpTVGVzdE9iaihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNUZXN0
T2JqQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmpDb25z
dHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKLSAgICBSZWZQdHI8VGVzdE9iaj4gb2JqZWN0ID0g
VGVzdE9iajo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0
b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7
CisgICAgSlNUZXN0T2JqQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rl
c3RPYmpDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIk5vdCBlbm91Z2ggYXJndW1lbnRzIikpOworICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPD0gMCB8fCAhZXhlYy0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKSB7
CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQorICAgIFJl
ZlB0cjxUZXN0Q2FsbGJhY2s+IHRlc3RDYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrOjpjcmVhdGUo
YXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7
CisgICAgUmVmUHRyPFRlc3RPYmo+IG9iamVjdCA9IFRlc3RPYmo6OmNyZWF0ZSh0ZXN0Q2FsbGJh
Y2spOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpOwogfQogCiBDb25zdHJ1Y3RU
eXBlIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDMyZTQ0ZDVmMGYzNjdkZjZkNTRh
N2M1MDAyMjk3ODYxZDIwM2Y4M2EuLjlkYjZlYTYxZTQ5ZDVjZmZlNGExNjc1ZWU4YzA4OTM1N2Rj
MDQyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwCkBAIC04NSw3ICs4NSw3IEBAIGJvb2wgSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2Fz
dDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcio+KGV4ZWMt
PmNhbGxlZSgpKTsKKyAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25z
dHJ1Y3RvciogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiTm90IGVub3VnaCBhcmd1bWVudHMiKSk7CiAgICAgY29u
c3QgU3RyaW5nJiBoZWxsbyh1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIo
ZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSkpOwpAQCAtOTgsNyArOTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVj
dG9yOjpjbwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBSZWZQdHI8VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZT4gb2JqZWN0ID0gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZTo6Y3JlYXRlKGhlbGxvLCBkYXRhLCB0cmFuc2Zlckxpc3QpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxP
YmplY3QoKSwgb2JqZWN0LmdldCgpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNP
YmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgp
KSkpOwogfQogCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEm
IGNvbnN0cnVjdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE9iai5pZGwKaW5kZXggYTQwM2I1YTljMGFjZDc4ZTFhY2E1Y2M4NzlkOTFiOWVjOWJj
YTBiNi4uNjI1ZmMxZGJlYTc3Yjc1YzE1MTU4YTRjODRmYjg5ZDhhMWFhZDEyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMzEs
NyArMzEsNyBAQAogLy8gY2hhbmdlcyBpbiBpdHMgb3VwdXQuCiBtb2R1bGUgdGVzdCB7CiAgICAg
aW50ZXJmYWNlIFsKLSAgICAgICAgQ29uc3RydWN0b3IsCisgICAgICAgIENvbnN0cnVjdG9yKGlu
IFtDYWxsYmFja10gVGVzdENhbGxiYWNrIHRlc3RDYWxsYmFjayksCiAgICAgICAgIEludGVyZmFj
ZU5hbWU9VGVzdE9iamVjdAogICAgIF0gVGVzdE9iaiB7CiAgICAgICAgIC8vIEF0dHJpYnV0ZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE9iai5jcHAKaW5kZXggMmE4MjgyODNkYjU4MzcwMTRjMGNhOTE2MWJjMjA5Zjc0NzZjZDM3ZS4u
OThjNmVlYmZhYjcyZmM5ODg3Y2NkYTY4YjdhYWYwMTkwNDEwOGYzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAg
LTE5OTEsOCArMTk5MSwxMyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T2JqOjpjb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKICAgICBpZiAoQ29u
c3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdP
YmplY3QpCiAgICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworICAgIGlmIChhcmdzLkxlbmd0
aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRz
IiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAwIHx8ICFh
cmdzWzBdLT5Jc0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlT
TUFUQ0hfRVJSKTsKKyAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiB0ZXN0Q2FsbGJhY2sgPSBWOFRl
c3RDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbMF0sIGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAKLSAgICBSZWZQdHI8VGVzdE9iaj4gaW1wbCA9IFRlc3RPYmo6OmNyZWF0ZSgpOworICAgIFJl
ZlB0cjxUZXN0T2JqPiBpbXBsID0gVGVzdE9iajo6Y3JlYXRlKHRlc3RDYWxsYmFjayk7CiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKIAogICAgIFY4
RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQoKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>