<?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>94456</bug_id>
          
          <creation_ts>2012-08-20 02:00:18 -0700</creation_ts>
          <short_desc>[V8] Move instrumentedCallFunction() from V8Proxy to ScriptController</short_desc>
          <delta_ts>2012-08-20 18:06:31 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>85330</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>699331</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-20 02:00:18 -0700</bug_when>
    <thetext>To kill V8Proxy, we can move instrumentedCallFunction() from V8Proxy to ScriptController. Also we can rename instrumentedCallFunction() to callFunctionWithInstrumentation(), for consistency with callFunction().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699337</commentid>
    <comment_count>1</comment_count>
      <attachid>159372</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-20 02:16:21 -0700</bug_when>
    <thetext>Created attachment 159372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699729</commentid>
    <comment_count>2</comment_count>
      <attachid>159372</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-20 11:26:24 -0700</bug_when>
    <thetext>Comment on attachment 159372
Patch

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

&gt; Source/WebCore/bindings/v8/ScriptController.cpp:226
&gt; +#if PLATFORM(CHROMIUM)

Are these ifdefs needed?  I would have expected them to be inside TRACE_EVENT1, but I haven&apos;t actually checked.

&gt; Source/WebCore/bindings/v8/ScriptController.h:81
&gt; +    static v8::Local&lt;v8::Value&gt; callFunctionWithInstrumentation(Frame*, v8::Handle&lt;v8::Function&gt;, v8::Handle&lt;v8::Object&gt; receiver, int argc, v8::Handle&lt;v8::Value&gt; args[]);

Why make this a static function that takes a Frame* as an argument?  I guess so it can be null?  This function might make more sense as a member function.

&gt; Source/WebCore/bindings/v8/ScriptFunctionCall.cpp:205
&gt; -    v8::Handle&lt;v8::Value&gt; result = V8Proxy::instrumentedCallFunction(0 /* frame */, function, object, m_arguments.size(), args.get());
&gt; +    v8::Handle&lt;v8::Value&gt; result = ScriptController::callFunctionWithInstrumentation(0 /* frame */, function, object, m_arguments.size(), args.get());

I see.  Frame can be 0...

&gt; Source/WebCore/bindings/v8/V8Callback.cpp:63
&gt;      Frame* frame = scriptExecutionContext &amp;&amp; scriptExecutionContext-&gt;isDocument() ? static_cast&lt;Document*&gt;(scriptExecutionContext)-&gt;frame() : 0;
&gt; -    v8::Handle&lt;v8::Value&gt; result = V8Proxy::instrumentedCallFunction(frame, callbackFunction, thisObject, argc, argv);
&gt; +    v8::Handle&lt;v8::Value&gt; result = ScriptController::callFunctionWithInstrumentation(frame, callbackFunction, thisObject, argc, argv);

Maybe we should try passing a ScriptExecutionContext directly?  This code that goes from ScriptExecutionContext to Frame just so that callFunctionWithInstrumentation can go back to ScriptExecutionContext seems less than ideal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700265</commentid>
    <comment_count>3</comment_count>
      <attachid>159372</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-20 17:50:13 -0700</bug_when>
    <thetext>Comment on attachment 159372
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/ScriptController.cpp:226
&gt;&gt; +#if PLATFORM(CHROMIUM)
&gt; 
&gt; Are these ifdefs needed?  I would have expected them to be inside TRACE_EVENT1, but I haven&apos;t actually checked.

Right. Removed.

&gt;&gt; Source/WebCore/bindings/v8/V8Callback.cpp:63
&gt;&gt; +    v8::Handle&lt;v8::Value&gt; result = ScriptController::callFunctionWithInstrumentation(frame, callbackFunction, thisObject, argc, argv);
&gt; 
&gt; Maybe we should try passing a ScriptExecutionContext directly?  This code that goes from ScriptExecutionContext to Frame just so that callFunctionWithInstrumentation can go back to ScriptExecutionContext seems less than ideal.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700268</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-20 17:53:13 -0700</bug_when>
    <thetext>Committed r126109: &lt;http://trac.webkit.org/changeset/126109&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159372</attachid>
            <date>2012-08-20 02:16:21 -0700</date>
            <delta_ts>2012-08-20 18:06:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94456-20120820181541.patch</filename>
            <type>text/plain</type>
            <size>18648</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg3OTdiMWE5MjJkM2M3
M2ZhN2M0OGI2NGE0Mjg0MDU0OGQ5YzM2MC4uZTc3ZTFkMmM4NzQwMDgzYjkxOWU1OGM0OWUxZmFj
NjE3OThiNjZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA4LTIwICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIE1vdmUgaW5z
dHJ1bWVudGVkQ2FsbEZ1bmN0aW9uKCkgZnJvbSBWOFByb3h5IHRvIFNjcmlwdENvbnRyb2xsZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NDU2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8ga2lsbCBW
OFByb3h5LCB0aGlzIHBhdGNoIG1vdmVzIGluc3RydW1lbnRlZENhbGxGdW5jdGlvbigpIGZyb20g
VjhQcm94eQorICAgICAgICB0byBTY3JpcHRDb250cm9sbGVyLiBBbHNvIHRoaXMgcGF0Y2ggcmVu
YW1lcyBpbnN0cnVtZW50ZWRDYWxsRnVuY3Rpb24oKQorICAgICAgICB0byBjYWxsRnVuY3Rpb25X
aXRoSW5zdHJ1bWVudGF0aW9uKCksIGZvciBjb25zaXN0ZW5jeSB3aXRoIGNhbGxGdW5jdGlvbigp
LgorCisgICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdENvbnRyb2xsZXI6OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmhhbmRsZU1heFJlY3Vyc2lvbkRlcHRoRXhjZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6cmVzb3VyY2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc291cmNlU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxGdW5jdGlvbldpdGhJ
bnN0cnVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKFNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdEZ1bmN0aW9uQ2FsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsYmFjazo6
Y2FsbCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhDYWxsYmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppbnZva2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhOb2RlRmls
dGVyQ29uZGl0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Tm9kZUZpbHRlckNvbmRpdGlv
bjo6YWNjZXB0Tm9kZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5Lmg6CisgICAgICAg
IChWOFByb3h5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFdpbmRvd0Vycm9ySGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdpbmRvd0Vycm9ySGFuZGxlcjo6Y2FsbExpc3RlbmVy
RnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVhQYXRoTlNS
ZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEN1c3RvbVhQYXRoTlNSZXNvbHZlcjo6
bG9va3VwTmFtZXNwYWNlVVJJKToKKwogMjAxMi0wOC0xOSAgS2VudGFybyBIYXJhICA8aGFyYWtl
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBNb3ZlIGNvbnRleHREZWJ1Z0lkKCkgYW5k
IHNldENvbnRleHREZWJ1Z0lkKCkgZnJvbSBWOFByb3h5IHRvIFNjcmlwdENvbnRyb2xsZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggN2QzNmQ5ODRlMzZmZTljZDk5ZmU5Y2QxZGJkODU3
ZDYzN2ZkNTIzYi4uYzIzOTRhYThjYmY1OGI5NTcwN2NjM2RmZDFjZmYxOTBhYjY0M2E1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOC0yMCAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBNb3ZlIGlu
c3RydW1lbnRlZENhbGxGdW5jdGlvbigpIGZyb20gVjhQcm94eSB0byBTY3JpcHRDb250cm9sbGVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDQ1Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGtpbGwg
VjhQcm94eSwgdGhpcyBwYXRjaCBtb3ZlcyBpbnN0cnVtZW50ZWRDYWxsRnVuY3Rpb24oKSBmcm9t
IFY4UHJveHkKKyAgICAgICAgdG8gU2NyaXB0Q29udHJvbGxlci4gQWxzbyB0aGlzIHBhdGNoIHJl
bmFtZXMgaW5zdHJ1bWVudGVkQ2FsbEZ1bmN0aW9uKCkKKyAgICAgICAgdG8gY2FsbEZ1bmN0aW9u
V2l0aEluc3RydW1lbnRhdGlvbigpLCBmb3IgY29uc2lzdGVuY3kgd2l0aCBjYWxsRnVuY3Rpb24o
KS4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAg
ICogc3JjL1dlYkRldlRvb2xzRnJvbnRlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RGV2VG9vbHNGcm9udGVuZEltcGw6OmRpc3BhdGNoT25JbnNwZWN0b3JGcm9udGVuZCk6CisKIDIw
MTItMDgtMTkgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtWOF0gTW92ZSBjb250ZXh0RGVidWdJZCgpIGFuZCBzZXRDb250ZXh0RGVidWdJZCgpIGZyb20g
VjhQcm94eSB0byBTY3JpcHRDb250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDYwNmNkYzNhOTc0NzhlNjUwMDg5N2FlY2Fk
MWNhYTE0OTA1NDFiOTAuLjA5OWRkMjI1YjE2NzZlMzI0NjU2YzEyYWNiMmM3ZjkyZjc4NGEwZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3Bw
CkBAIC0zMywyNCArMzMsMjUgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAKICNp
bmNsdWRlICJCaW5kaW5nU3RhdGUuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgotI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIK
LSNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVk
ZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiTlBPYmplY3RXcmFwcGVyLmgiCisjaW5j
bHVkZSAiTlBWOE9iamVjdC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgotI2luY2x1ZGUgIk5QT2JqZWN0V3JhcHBlci5oIgogI2luY2x1ZGUgIm5wcnVu
dGltZV9pbXBsLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX3ByaXYuaCIKLSNpbmNsdWRlICJOUFY4
T2JqZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSAiU2NyaXB0
Q2FsbFN0YWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2luY2x1
ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTY3LDYgKzY4LDExIEBACiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgorCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisjaW5jbHVkZSAiVHJhY2VF
dmVudC5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTY0LDcgKzE3MCw2
OSBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBTY3JpcHRDb250cm9sbGVyOjpjYWxsRnVuY3Rpb24o
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bgogewogICAgIC8vIEtlZXAgRnJhbWUgKGFuZCB0
aGVyZWZvcmUgU2NyaXB0Q29udHJvbGxlciBhbmQgVjhQcm94eSkgYWxpdmUuCiAgICAgUmVmUHRy
PEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOwotICAgIHJldHVybiBWOFByb3h5OjppbnN0cnVtZW50
ZWRDYWxsRnVuY3Rpb24obV9mcmFtZSwgZnVuY3Rpb24sIHJlY2VpdmVyLCBhcmdjLCBhcmdzKTsK
KyAgICByZXR1cm4gU2NyaXB0Q29udHJvbGxlcjo6Y2FsbEZ1bmN0aW9uV2l0aEluc3RydW1lbnRh
dGlvbihtX2ZyYW1lLCBmdW5jdGlvbiwgcmVjZWl2ZXIsIGFyZ2MsIGFyZ3MpOworfQorCitzdGF0
aWMgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaGFuZGxlTWF4UmVjdXJzaW9uRGVwdGhFeGNlZWRlZCgp
Cit7CisgICAgdGhyb3dFcnJvcihSYW5nZUVycm9yLCAiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUg
ZXhjZWVkZWQuIik7CisgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7Cit9CisKK3N0
YXRpYyBpbmxpbmUgdm9pZCByZXNvdXJjZUluZm8oY29uc3Qgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+IGZ1bmN0aW9uLCBTdHJpbmcmIHJlc291cmNlTmFtZSwgaW50JiBsaW5lTnVtYmVyKQorewor
ICAgIHY4OjpTY3JpcHRPcmlnaW4gb3JpZ2luID0gZnVuY3Rpb24tPkdldFNjcmlwdE9yaWdpbigp
OworICAgIGlmIChvcmlnaW4uUmVzb3VyY2VOYW1lKCkuSXNFbXB0eSgpKSB7CisgICAgICAgIHJl
c291cmNlTmFtZSA9ICJ1bmRlZmluZWQiOworICAgICAgICBsaW5lTnVtYmVyID0gMTsKKyAgICB9
IGVsc2UgeworICAgICAgICByZXNvdXJjZU5hbWUgPSB0b1dlYkNvcmVTdHJpbmcob3JpZ2luLlJl
c291cmNlTmFtZSgpKTsKKyAgICAgICAgbGluZU51bWJlciA9IGZ1bmN0aW9uLT5HZXRTY3JpcHRM
aW5lTnVtYmVyKCkgKyAxOworICAgIH0KK30KKworc3RhdGljIGlubGluZSBTdHJpbmcgcmVzb3Vy
Y2VTdHJpbmcoY29uc3Qgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uKQoreworICAg
IFN0cmluZyByZXNvdXJjZU5hbWU7CisgICAgaW50IGxpbmVOdW1iZXI7CisgICAgcmVzb3VyY2VJ
bmZvKGZ1bmN0aW9uLCByZXNvdXJjZU5hbWUsIGxpbmVOdW1iZXIpOworCisgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKHJlc291cmNlTmFtZSk7CisgICAgYnVp
bGRlci5hcHBlbmQoJzonKTsKKyAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihsaW5l
TnVtYmVyKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKwordjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gU2NyaXB0Q29udHJvbGxlcjo6Y2FsbEZ1bmN0aW9uV2l0aEluc3RydW1lbnRh
dGlvbihGcmFtZSogZnJhbWUsIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiByZWNlaXZlciwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhcmdzW10pCit7CisgICAgVjhHQ0NvbnRyb2xsZXI6OmNoZWNrTWVtb3J5VXNhZ2UoKTsK
KworICAgIGlmIChWOFJlY3Vyc2lvblNjb3BlOjpyZWN1cnNpb25MZXZlbCgpID49IGtNYXhSZWN1
cnNpb25EZXB0aCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZU1heFJlY3Vyc2lvbkRlcHRoRXhjZWVk
ZWQoKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBmcmFtZSA/IGZy
YW1lLT5kb2N1bWVudCgpIDogMDsKKworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWU7CisgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRz
KCkgJiYgY29udGV4dCkgeworICAgICAgICBTdHJpbmcgcmVzb3VyY2VOYW1lOworICAgICAgICBp
bnQgbGluZU51bWJlcjsKKyAgICAgICAgcmVzb3VyY2VJbmZvKGZ1bmN0aW9uLCByZXNvdXJjZU5h
bWUsIGxpbmVOdW1iZXIpOworICAgICAgICBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxDYWxsRnVuY3Rpb24oY29udGV4dCwgcmVzb3VyY2VOYW1lLCBsaW5lTnVtYmVyKTsK
KyAgICB9CisKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1bHQ7CisgICAgeworI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQorICAgICAgICBUUkFDRV9FVkVOVDEoInY4IiwgInY4LmNhbGxGdW5j
dGlvbiIsICJjYWxsc2l0ZSIsIHJlc291cmNlU3RyaW5nKGZ1bmN0aW9uKS51dGY4KCkpOworI2Vu
ZGlmCisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGUgcmVjdXJzaW9uU2NvcGUoY29udGV4dCk7Cisg
ICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uLT5DYWxsKHJlY2VpdmVyLCBhcmdjLCBhcmdzKTsKKyAg
ICB9CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29r
aWUpOworICAgIGNyYXNoSWZWOElzRGVhZCgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFNj
cmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmNhbGxGdW5jdGlvbkV2ZW5JZlNjcmlwdERpc2Fi
bGVkKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiByZWNlaXZlciwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggZmU3
Yjc2MzFlZGE1ZTU4MmI2YTQ0MDNkZmNkNmQ3ZDZhNmUzMDlkNy4uY2U2Nzk2MWFkNjk3ZTI1Mzlm
MTVjYTczZDBiNjc0OWU3YTBhNDc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6CiAgICAgLy8gQ2Fs
bCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gcmVjZWl2ZXIgYW5kIGFyZ3VtZW50cy4KICAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiBjYWxsRnVuY3Rpb24odjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGFyZ3ZbXSk7CiAKKyAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBnaXZlbiBy
ZWNlaXZlciBhbmQgYXJndW1lbnRzIGFuZCByZXBvcnQgdGltZXMgdG8gRGV2VG9vbHMuCisgICAg
c3RhdGljIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNhbGxGdW5jdGlvbldpdGhJbnN0cnVtZW50YXRp
b24oRnJhbWUqLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4sIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gcmVjZWl2ZXIsIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJnc1tdKTsKKwog
ICAgIFNjcmlwdFZhbHVlIGNhbGxGdW5jdGlvbkV2ZW5JZlNjcmlwdERpc2FibGVkKHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgaW50IGFyZ2MsIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFyZ3Vt
ZW50IGlzIGEgSmF2YVNjcmlwdCBVUkwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAppbmRleCBlMmRiNjFlOTI3YWI0MjI0OTZiNjM2M2Jl
MmZmNmNiNDhiYjZjY2RiLi44YTA2ZTFkNDQzMGYzYWQ3ODQ5OGIzYTk1YmE0ZmEzM2NkZWNjYTY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNh
bGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHAKQEAgLTMxLDEyICszMSwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgogCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlNjcmlwdFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNs
dWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4
T2JqZWN0Q29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhS
ZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAKQEAgLTIwMiw3ICsy
MDIsNyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRDYWxsYmFjazo6Y2FsbChib29sJiBoYWRFeGNlcHRp
b24pCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy5zaXplKCk7ICsraSkK
ICAgICAgICAgYXJnc1tpXSA9IG1fYXJndW1lbnRzW2ldLnY4VmFsdWUoKTsKIAotICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBWOFByb3h5OjppbnN0cnVtZW50ZWRDYWxsRnVuY3Rp
b24oMCAvKiBmcmFtZSAqLywgZnVuY3Rpb24sIG9iamVjdCwgbV9hcmd1bWVudHMuc2l6ZSgpLCBh
cmdzLmdldCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gU2NyaXB0Q29u
dHJvbGxlcjo6Y2FsbEZ1bmN0aW9uV2l0aEluc3RydW1lbnRhdGlvbigwIC8qIGZyYW1lICovLCBm
dW5jdGlvbiwgb2JqZWN0LCBtX2FyZ3VtZW50cy5zaXplKCksIGFyZ3MuZ2V0KCkpOwogCiAgICAg
aWYgKGV4Y2VwdGlvbkNhdGNoZXIuSGFzQ2F1Z2h0KCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9u
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q2FsbGJh
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDYWxsYmFjay5jcHAKaW5kZXgg
Y2ZjN2VhZWUxMTdiYTg2YzRiNjBlYTdjZjcyZDdiNjExNGM0NjczMC4uZjRiNWIyYTMxZGJhZGY5
MzMyNTZjMzNlODJkZWRiZDIzYjkyYWUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhDYWxsYmFjay5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJWOENhbGxiYWNrLmgi
CiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjAsNyAr
NjAsNyBAQCBib29sIGludm9rZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGNh
bGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIEZyYW1lKiBmcmFtZSA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgJiYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpID8gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KS0+ZnJhbWUoKSA6IDA7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHJlc3VsdCA9IFY4UHJveHk6Omluc3RydW1lbnRlZENhbGxGdW5jdGlvbihmcmFtZSwgY2FsbGJh
Y2tGdW5jdGlvbiwgdGhpc09iamVjdCwgYXJnYywgYXJndik7CisgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHJlc3VsdCA9IFNjcmlwdENvbnRyb2xsZXI6OmNhbGxGdW5jdGlvbldpdGhJbnN0cnVt
ZW50YXRpb24oZnJhbWUsIGNhbGxiYWNrRnVuY3Rpb24sIHRoaXNPYmplY3QsIGFyZ2MsIGFyZ3Yp
OwogCiAgICAgY2FsbGJhY2tSZXR1cm5WYWx1ZSA9ICFyZXN1bHQuSXNFbXB0eSgpICYmIHJlc3Vs
dC0+Qm9vbGVhblZhbHVlKCk7CiAgICAgcmV0dXJuIGV4Y2VwdGlvbkNhdGNoZXIuSGFzQ2F1Z2h0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5vZGVGaWx0ZXJD
b25kaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOb2RlRmlsdGVyQ29u
ZGl0aW9uLmNwcAppbmRleCA5YzA3NzMxMThmZTMxMDA3NWFkYzdhMmEwNzFmZGFhYTVlNGY3MzEz
Li4yNGRhOGE4MjBhNjI1MDIwYjA2YTczNjgyYzVmOTFkZWRlNmQ4NTg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5vZGVGaWx0ZXJDb25kaXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Tm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKQEAg
LTMzLDkgKzMzLDkgQEAKIAogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2RlRmlsdGVy
LmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRl
LmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgogCiAjaW5jbHVk
ZSA8d3RmL093bkFycmF5UHRyLmg+CiAKQEAgLTgzLDcgKzgzLDcgQEAgc2hvcnQgVjhOb2RlRmls
dGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKFNjcmlwdFN0YXRlKiBzdGF0ZSwgTm9kZSogbm9kZSkg
Y29uc3QKICAgICBPd25BcnJheVB0cjx2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gPiBhcmdzID0gYWRv
cHRBcnJheVB0cihuZXcgdjg6OkhhbmRsZTx2ODo6VmFsdWU+WzFdKTsKICAgICBhcmdzWzBdID0g
dG9WOChub2RlKTsKIAotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBWOFByb3h5
OjppbnN0cnVtZW50ZWRDYWxsRnVuY3Rpb24oMCAvKiBmcmFtZSAqLywgY2FsbGJhY2ssIG9iamVj
dCwgMSwgYXJncy5nZXQoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IFNj
cmlwdENvbnRyb2xsZXI6OmNhbGxGdW5jdGlvbldpdGhJbnN0cnVtZW50YXRpb24oMCAvKiBmcmFt
ZSAqLywgY2FsbGJhY2ssIG9iamVjdCwgMSwgYXJncy5nZXQoKSk7CiAKICAgICBpZiAoZXhjZXB0
aW9uQ2F0Y2hlci5IYXNDYXVnaHQoKSkgewogICAgICAgICBzdGF0ZS0+c2V0RXhjZXB0aW9uKGV4
Y2VwdGlvbkNhdGNoZXIuRXhjZXB0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBy
b3h5LmNwcAppbmRleCAzOGM3YmI0MjY1NjdlNTdkNmRlNjVlNzA4NGZlMmUyYzgyNzQ0MmNiLi5l
NTAyZjI5MDNjN2QzOWE1MThmNDJjOTY1MTU0OTRmZDcxZjZiOWZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFByb3h5LmNwcApAQCAtNjksNyArNjksNiBAQAogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL1VudXNlZFBhcmFtLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0p
CkBAIC0xMDUsNiArMTA0LDcgQEAgdm9pZCBWOFByb3h5OjpyZXBvcnRVbnNhZmVBY2Nlc3NUbyhE
b2N1bWVudCogdGFyZ2V0RG9jdW1lbnQpCiAgICAgc291cmNlRG9jdW1lbnQtPmFkZENvbnNvbGVN
ZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVs
LCBzdHIsIHN0YWNrVHJhY2UucmVsZWFzZSgpKTsKIH0KIAorLy8gRklYTUU6IFRoaXMgd2lsbCBi
ZSBzb29uIHJlbW92ZWQgd2hlbiB3ZSBtb3ZlIHJ1blNjcmlwdCgpIHRvIFNjcmlwdENvbnRyb2xs
ZXIuCiBzdGF0aWMgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaGFuZGxlTWF4UmVjdXJzaW9uRGVwdGhF
eGNlZWRlZCgpCiB7CiAgICAgdGhyb3dFcnJvcihSYW5nZUVycm9yLCAiTWF4aW11bSBjYWxsIHN0
YWNrIHNpemUgZXhjZWVkZWQuIik7CkBAIC0yNTksNjIgKzI1OSw2IEBAIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IFY4UHJveHk6OnJ1blNjcmlwdCh2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IHNjcmlwdCkK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcmVzb3VyY2VJbmZv
KGNvbnN0IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiwgU3RyaW5nJiByZXNvdXJj
ZU5hbWUsIGludCYgbGluZU51bWJlcikKLXsKLSAgICB2ODo6U2NyaXB0T3JpZ2luIG9yaWdpbiA9
IGZ1bmN0aW9uLT5HZXRTY3JpcHRPcmlnaW4oKTsKLSAgICBpZiAob3JpZ2luLlJlc291cmNlTmFt
ZSgpLklzRW1wdHkoKSkgewotICAgICAgICByZXNvdXJjZU5hbWUgPSAidW5kZWZpbmVkIjsKLSAg
ICAgICAgbGluZU51bWJlciA9IDE7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmVzb3VyY2VOYW1l
ID0gdG9XZWJDb3JlU3RyaW5nKG9yaWdpbi5SZXNvdXJjZU5hbWUoKSk7Ci0gICAgICAgIGxpbmVO
dW1iZXIgPSBmdW5jdGlvbi0+R2V0U2NyaXB0TGluZU51bWJlcigpICsgMTsKLSAgICB9Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgU3RyaW5nIHJlc291cmNlU3RyaW5nKGNvbnN0IHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uPiBmdW5jdGlvbikKLXsKLSAgICBTdHJpbmcgcmVzb3VyY2VOYW1lOwotICAgIGlu
dCBsaW5lTnVtYmVyOwotICAgIHJlc291cmNlSW5mbyhmdW5jdGlvbiwgcmVzb3VyY2VOYW1lLCBs
aW5lTnVtYmVyKTsKLQotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFw
cGVuZChyZXNvdXJjZU5hbWUpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgYnVpbGRl
ci5hcHBlbmQoU3RyaW5nOjpudW1iZXIobGluZU51bWJlcikpOwotICAgIHJldHVybiBidWlsZGVy
LnRvU3RyaW5nKCk7Ci19Ci0KLXY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4UHJveHk6Omluc3RydW1l
bnRlZENhbGxGdW5jdGlvbihGcmFtZSogZnJhbWUsIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBm
dW5jdGlvbiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiByZWNlaXZlciwgaW50IGFyZ2MsIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmdzW10pCi17Ci0gICAgVjhHQ0NvbnRyb2xsZXI6OmNoZWNrTWVt
b3J5VXNhZ2UoKTsKLQotICAgIGlmIChWOFJlY3Vyc2lvblNjb3BlOjpyZWN1cnNpb25MZXZlbCgp
ID49IGtNYXhSZWN1cnNpb25EZXB0aCkKLSAgICAgICAgcmV0dXJuIGhhbmRsZU1heFJlY3Vyc2lv
bkRlcHRoRXhjZWVkZWQoKTsKLQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQg
PSBmcmFtZSA/IGZyYW1lLT5kb2N1bWVudCgpIDogMDsKLQotICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBjb29raWU7Ci0gICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
aGFzRnJvbnRlbmRzKCkgJiYgY29udGV4dCkgewotICAgICAgICBTdHJpbmcgcmVzb3VyY2VOYW1l
OwotICAgICAgICBpbnQgbGluZU51bWJlcjsKLSAgICAgICAgcmVzb3VyY2VJbmZvKGZ1bmN0aW9u
LCByZXNvdXJjZU5hbWUsIGxpbmVOdW1iZXIpOwotICAgICAgICBjb29raWUgPSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rpb24oY29udGV4dCwgcmVzb3VyY2VOYW1lLCBs
aW5lTnVtYmVyKTsKLSAgICB9Ci0KLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1bHQ7Ci0g
ICAgewotI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAgICAgICBUUkFDRV9FVkVOVDEoInY4Iiwg
InY4LmNhbGxGdW5jdGlvbiIsICJjYWxsc2l0ZSIsIHJlc291cmNlU3RyaW5nKGZ1bmN0aW9uKS51
dGY4KCkpOwotI2VuZGlmCi0gICAgICAgIFY4UmVjdXJzaW9uU2NvcGUgcmVjdXJzaW9uU2NvcGUo
Y29udGV4dCk7Ci0gICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uLT5DYWxsKHJlY2VpdmVyLCBhcmdj
LCBhcmdzKTsKLSAgICB9Ci0KLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxG
dW5jdGlvbihjb29raWUpOwotICAgIGNyYXNoSWZWOElzRGVhZCgpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KIFY4RE9NV2luZG93U2hlbGwqIFY4UHJveHk6OndpbmRvd1NoZWxsKCkgY29uc3QK
IHsKICAgICByZXR1cm4gZnJhbWUoKS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKaW5kZXggNDI1ODg4ZWQ3NDcwMmUwODNiZmQwMzFmMTUx
YTk3YjU5NDgxMzI5Zi4uMTVmZmNjNTVjZmFiMmNiYWE2NjI0NGQzMWE0YzEwOTY1ZDNkOTQ3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaApAQCAtMTAwLDkgKzEwMCw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUnVuIGFuIGFscmVhZHkgY29tcGlsZWQgc2Ny
aXB0LgogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBydW5TY3JpcHQodjg6OkhhbmRsZTx2
ODo6U2NyaXB0Pik7CiAKLSAgICAgICAgLy8gY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2
ZW4gcmVjZWl2ZXIgYW5kIGFyZ3VtZW50cyBhbmQgcmVwb3J0IHRpbWVzIHRvIERldlRvb2xzLgot
ICAgICAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaW5zdHJ1bWVudGVkQ2FsbEZ1bmN0
aW9uKEZyYW1lKiwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+LCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHJlY2VpdmVyLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3NbXSk7Ci0K
ICAgICAgICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gYXMgY29uc3RydWN0b3Igd2l0aCB0aGUgZ2l2
ZW4gYXJndW1lbnRzLgogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBuZXdJbnN0YW5jZSh2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4sIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
YXJndltdKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXaW5k
b3dFcnJvckhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXaW5kb3dF
cnJvckhhbmRsZXIuY3BwCmluZGV4IGFlZjdkMTIzNWVhZmU3OGQwZjgxZmVhZjJiYTM1MDVmYmU4
ZjZjZGIuLmNlZjRlZDk1NDQ1ZjU3NDQ2ODdkY2M3MGNhMDgwOGQxMWM5OGU0MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V2luZG93RXJyb3JIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdpbmRvd0Vycm9ySGFuZGxlci5jcHAK
QEAgLTM0LDggKzM0LDggQEAKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJF
cnJvckV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlY4
QmluZGluZy5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01OCw3ICs1OCw3IEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4V2luZG93RXJyb3JIYW5k
bGVyOjpjYWxsTGlzdGVuZXJGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25DCiAgICAgICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBwYXJhbWV0ZXJzWzNdID0geyB2OFN0cmluZyhlcnJvckV2ZW50LT5t
ZXNzYWdlKCkpLCB2OFN0cmluZyhlcnJvckV2ZW50LT5maWxlbmFtZSgpKSwgdjhJbnRlZ2VyKGVy
cm9yRXZlbnQtPmxpbmVubygpKSB9OwogICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CiAg
ICAgICAgIHRyeUNhdGNoLlNldFZlcmJvc2UodHJ1ZSk7Ci0gICAgICAgIHJldHVyblZhbHVlID0g
VjhQcm94eTo6aW5zdHJ1bWVudGVkQ2FsbEZ1bmN0aW9uKDAgLyogZnJhbWUgKi8sIGNhbGxGdW5j
dGlvbiwgdGhpc1ZhbHVlLCAzLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBT
Y3JpcHRDb250cm9sbGVyOjpjYWxsRnVuY3Rpb25XaXRoSW5zdHJ1bWVudGF0aW9uKDAgLyogZnJh
bWUgKi8sIGNhbGxGdW5jdGlvbiwgdGhpc1ZhbHVlLCAzLCBwYXJhbWV0ZXJzKTsKICAgICB9CiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKaW5kZXgg
MGI1ZGI5ODYyNDE5NjhhYWQ4ZDk5NzBhZjVhYjMwMmFiZWE3MzkwYi4uYzgyYzI2ZjVhNWIyMjRh
ZDFlMzY1NWJjNGI2NGEyZjg3YjMxNmU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCkBA
IC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCIKIAog
I2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc5LDcgKzc5LDcgQEAgU3RyaW5n
IFY4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5n
JiBwcmVmaXgpCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbYXJnY10gPSB7IHY4U3Ry
aW5nKHByZWZpeCkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBs
b29rdXBOYW1lc3BhY2VVUklGdW5jLklzRW1wdHkoKSA/IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
Pjo6Q2FzdChtX3Jlc29sdmVyKSA6IGxvb2t1cE5hbWVzcGFjZVVSSUZ1bmM7CiAKLSAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gcmV0dmFsID0gVjhQcm94eTo6aW5zdHJ1bWVudGVkQ2FsbEZ1bmN0
aW9uKDAgLyogZnJhbWUgKi8sIGZ1bmN0aW9uLCBtX3Jlc29sdmVyLCBhcmdjLCBhcmd2KTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmV0dmFsID0gU2NyaXB0Q29udHJvbGxlcjo6Y2FsbEZ1
bmN0aW9uV2l0aEluc3RydW1lbnRhdGlvbigwIC8qIGZyYW1lICovLCBmdW5jdGlvbiwgbV9yZXNv
bHZlciwgYXJnYywgYXJndik7CiAKICAgICAvLyBFYXQgZXhjZXB0aW9ucyBmcm9tIG5hbWVzcGFj
ZSByZXNvbHZlciBhbmQgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4gVGhpcyB3aWxsIG1vc3QgbGlr
ZWx5IGNhdXNlIE5BTUVTUEFDRV9FUlIuCiAgICAgaWYgKHRyeV9jYXRjaC5IYXNDYXVnaHQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzRnJvbnRl
bmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzRnJvbnRl
bmRJbXBsLmNwcAppbmRleCAwNTRlNWIyNDVkNjcyNjUxNDc2NjJmZWQxNjdjN2NmZDJhN2ExZmQz
Li45NjBhZWJiYWQzODFjZDAzZmQ3YjdiYWY5NmRjZTVjMDZhODM0NGI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuY3Bw
CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBXZWJEZXZUb29sc0Zyb250ZW5kSW1wbDo6ZGlzcGF0
Y2hPbkluc3BlY3RvckZyb250ZW5kKGNvbnN0IFdlYlN0cmluZyYgbWVzc2EKICAgICBhcmdzLmFw
cGVuZChUb1Y4U3RyaW5nKG1lc3NhZ2UpKTsKICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CiAg
ICAgdHJ5Q2F0Y2guU2V0VmVyYm9zZSh0cnVlKTsKLSAgICBWOFByb3h5OjppbnN0cnVtZW50ZWRD
YWxsRnVuY3Rpb24oZnJhbWUtPmZyYW1lKCksIGZ1bmN0aW9uLCBpbnNwZWN0b3JCYWNrZW5kLCBh
cmdzLnNpemUoKSwgYXJncy5kYXRhKCkpOworICAgIFNjcmlwdENvbnRyb2xsZXI6OmNhbGxGdW5j
dGlvbldpdGhJbnN0cnVtZW50YXRpb24oZnJhbWUtPmZyYW1lKCksIGZ1bmN0aW9uLCBpbnNwZWN0
b3JCYWNrZW5kLCBhcmdzLnNpemUoKSwgYXJncy5kYXRhKCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>