<?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>29816</bug_id>
          
          <creation_ts>2009-09-28 11:19:03 -0700</creation_ts>
          <short_desc>Web Inspector: Encapsulate JS listeners specifics into ScriptObject.</short_desc>
          <delta_ts>2009-09-30 20:46: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>Web Inspector (Deprecated)</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>joepeck</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>150566</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-28 11:19:03 -0700</bug_when>
    <thetext>We should not use ifdef(JSC) in dom agent logic...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150576</commentid>
    <comment_count>1</comment_count>
      <attachid>40247</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-28 11:35:16 -0700</bug_when>
    <thetext>Created attachment 40247
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150604</commentid>
    <comment_count>2</comment_count>
      <attachid>40247</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-09-28 12:38:26 -0700</bug_when>
    <thetext>Comment on attachment 40247
patch


&gt; -#if USE(JSC)
&gt; -    JSC::JSObject* functionObject = eventListener-&gt;jsFunction();
&gt; -    if (functionObject)
&gt; -        value.set(&quot;listener&quot;, ScriptObject(m_frontend-&gt;scriptState(), functionObject));
&gt; -#endif
&gt; +    value.set(&quot;listener&quot;, ScriptObject::getHandlerFunctionBody(m_frontend-&gt;scriptState(), eventListener.get()));

The original code got the function object, the new code gets the function body as a string. How do we pass over other functions to the Inspector now (like in the Console or properties pane)? We should be consistent, either way.

While it is nice to avoid #ifdefs where possible, I don&apos;t think a static function on ScriptObject that is specific to event listeners is better.

I would argue for just putting the V8 code into InspectorDOMAgent.cpp or have a way to get a ScriptObject from a EventListener*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150621</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-28 13:22:27 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; The original code got the function object, the new code gets the function body
&gt; as a string. How do we pass over other functions to the Inspector now (like in
&gt; the Console or properties pane)? We should be consistent, either way.
&gt; 

Detailed answer for the sake of documentation.

When we need to pass a function or an object to the frontend, we wrap it with ObjectProxy containing the original object&apos;s id. We use this id to resolve the original object later, for example when frontend requests object properties.

There are different types of ids and we use them in order to resolve inspected page objects differently. When some natural ids are available, we use them (like node id from DOMAgent mapping or call frame number from stack). Otherwise we call InspectorController.wrapObject and cache original object by the generated id key.

We use generated ids for console evaluation and for watch expressions so that evaluation results are not collected immediately and could be explored later. This wrapObject cache is cleared upon console cleanup. I have a pending action item to implement explicit &apos;release&apos; for object proxies so that watch expressions could release evaluation results upon refresh. Currently they leak.

Back to our case. In order to pass event handler consistently, we need to come up with yet another type of the id. So that when frontend queries for event listener properties we can resolve the listener. But there is no natural key for this case: combined key (node id) x (event type) does not work. This leaves an option of using artificial id by means of InspectorController.wrapObject and then release it when node is deselected. This option is not bad, it is just that release is not implemented yet. I will actually do it right now.

So the reason I was sending the body only is that I was basically avoiding complexity. As I understood, the plan was not to use ObjectPropertiesSection for event listeners&apos; rendering (Joe?) and I thought that in the new UI, body would be sufficient. Who wants to implement another renderer of the object proxies...

&gt; While it is nice to avoid #ifdefs where possible, I don&apos;t think a static
&gt; function on ScriptObject that is specific to event listeners is better.
&gt; 
&gt; I would argue for just putting the V8 code into InspectorDOMAgent.cpp or have a
&gt; way to get a ScriptObject from a EventListener*.

But if we&apos;d like to explore function properties as a tree (consistently with object properties) and reuse ObjectPropertiesSection, I agree that wrapping this function and passing it into frontend as a ScriptObject (as we do in other places) makes perfect sense. Let me implement InspectorController.releaseObject() and come up with the better implementation for this one!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150635</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-09-28 13:39:57 -0700</bug_when>
    <thetext>Lets either land a change with #ifdefs or make real ScriptObjects like you mention. But the ScriptObject::getHandlerFunctionBody function does not sit well with me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150646</commentid>
    <comment_count>5</comment_count>
      <attachid>40257</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-28 14:09:29 -0700</bug_when>
    <thetext>Created attachment 40257
patch

As agreed on IRC, adding getEventListenerHandlerBody into ScriptEventListener.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150649</commentid>
    <comment_count>6</comment_count>
      <attachid>40258</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-28 14:12:42 -0700</bug_when>
    <thetext>Created attachment 40258
(same with null change in ScriptObject.h reverted)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150837</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-29 02:53:47 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/bindings/js/ScriptEventListener.cpp
	M	WebCore/bindings/js/ScriptEventListener.h
	M	WebCore/bindings/v8/ScriptEventListener.cpp
	M	WebCore/bindings/v8/ScriptEventListener.h
	M	WebCore/inspector/InspectorDOMAgent.cpp
Committed r48866</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151437</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-09-30 20:46:55 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Detailed answer for the sake of documentation.

I&apos;m just catching up on this weeks emails. Thanks for this comment!  It helps in understanding the big picture. 

(In reply to comment #5)
&gt; As agreed on IRC, adding getEventListenerHandlerBody into
&gt; ScriptEventListener.h.

I was interested in the front-end getting the raw function so that JavaScript in the front-end could make use of that function even if it it was inaccessible via the DOM.  A use cases would have been applying that same listener to another element.  However, since interaction between the front-end and inspected page is serialized I guess it wouldn&apos;t be that useful to provide the raw function to the inspector code.  Just providing the function&apos;s body was probably a good decision.

Also, if there were any UI suggestions in your IRC discussion please throw a comment on bug 29789.

Cheers.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40247</attachid>
            <date>2009-09-28 11:35:16 -0700</date>
            <delta_ts>2009-09-28 14:09:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>event_listeners</filename>
            <type>text/plain</type>
            <size>5281</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTA3NzFiYy4uMDJiZGJkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0wOS0yOCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRW5jYXBzdWxhdGUgSlMgbGlzdGVu
ZXJzIHNwZWNpZmljcyBpbnRvIFNjcmlwdE9iamVjdC4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk4MTYKKworICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRPYmplY3Q6OmdldEhh
bmRsZXJGdW5jdGlvbkJvZHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5o
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRPYmplY3Q6OmdldEhhbmRsZXJGdW5jdGlvbkJvZHkpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRP
YmplY3RGb3JFdmVudExpc3RlbmVyKToKKwogMjAwOS0wOS0yOCAgRGltaXRyaSBHbGF6a292ICA8
ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmlu
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCmluZGV4IGI1MjdhOTYuLmQxOGNmZWMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2lu
Y2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCkBAIC0x
MTcsNiArMTE4LDE0IEBAIFNjcmlwdE9iamVjdCBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUpCiAgICAgcmV0dXJuIFNjcmlwdE9iamVjdChzY3JpcHRTdGF0
ZSwgY29uc3RydWN0RW1wdHlPYmplY3Qoc2NyaXB0U3RhdGUpKTsKIH0KIAorU3RyaW5nIFNjcmlw
dE9iamVjdDo6Z2V0SGFuZGxlckZ1bmN0aW9uQm9keShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUs
IEV2ZW50TGlzdGVuZXIqIGV2ZW50TGlzdGVuZXIpCit7CisgICAgSlNDOjpKU09iamVjdCogZnVu
Y3Rpb25PYmplY3QgPSBldmVudExpc3RlbmVyLT5qc0Z1bmN0aW9uKCk7CisgICAgaWYgKCFmdW5j
dGlvbk9iamVjdCkKKyAgICAgICAgcmV0dXJuICIiOworICAgIHJldHVybiBmdW5jdGlvbk9iamVj
dC0+dG9TdHJpbmcoc2NyaXB0U3RhdGUpOworfQorCiBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6
c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgU2Ny
aXB0T2JqZWN0JiB2YWx1ZSkKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09u
bHkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmgKaW5kZXggYThiMTFlMC4uZTA5ZjI5MCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVk
ZSA8cnVudGltZS9Qcm90ZWN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBF
dmVudExpc3RlbmVyOwogICAgIGNsYXNzIEluc3BlY3RvckJhY2tlbmQ7CiAKICAgICBjbGFzcyBT
Y3JpcHRPYmplY3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgewpAQCAtNTUsNyArNTYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wp
OwogCiAgICAgICAgIHN0YXRpYyBTY3JpcHRPYmplY3QgY3JlYXRlTmV3KFNjcmlwdFN0YXRlKik7
Ci0gICAgCisgICAgICAgIHN0YXRpYyBTdHJpbmcgZ2V0SGFuZGxlckZ1bmN0aW9uQm9keShTY3Jp
cHRTdGF0ZSosIEV2ZW50TGlzdGVuZXIqKTsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFNjcmlw
dFN0YXRlKiBtX3NjcmlwdFN0YXRlOwogICAgIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdE9iamVjdC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVj
dC5jcHAKaW5kZXggY2I2MThkZi4uODYzMjA2NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2Jq
ZWN0LmNwcApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlY4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCkBAIC0xMTAsNiArMTEx
LDIwIEBAIFNjcmlwdE9iamVjdCBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhTY3JpcHRTdGF0ZSog
c2NyaXB0U3RhdGUpCiAgICAgcmV0dXJuIFNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgdjg6Ok9i
amVjdDo6TmV3KCkpOwogfQogCitTdHJpbmcgU2NyaXB0T2JqZWN0OjpnZXRIYW5kbGVyRnVuY3Rp
b25Cb2R5KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIp
Cit7CisgICAgaWYgKGxpc3RlbmVyLT50eXBlKCkgIT0gRXZlbnRMaXN0ZW5lcjo6SlNFdmVudExp
c3RlbmVyVHlwZSkKKyAgICAgICAgcmV0dXJuICIiOworCisgICAgU2NyaXB0U2NvcGUgc2NvcGUo
c2NyaXB0U3RhdGUpOworICAgIFY4QWJzdHJhY3RFdmVudExpc3RlbmVyKiB2OExpc3RlbmVyID0g
c3RhdGljX2Nhc3Q8VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIqPihsaXN0ZW5lcik7CisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBmdW5jdGlvbiA9IHY4TGlzdGVuZXItPmdldExpc3RlbmVyT2Jq
ZWN0KCk7CisgICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuICIiOwor
CisgICAgcmV0dXJuIHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2soZnVuY3Rpb24pOworfQor
CiBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwg
Y29uc3QgY2hhciogbmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB2YWx1ZSkKIHsKICAgICBTY3Jp
cHRTY29wZSBzY29wZShzY3JpcHRTdGF0ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdE9iamVjdC5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuaApp
bmRleCBkY2VlM2E1Li41ODA2N2Y0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdE9iamVjdC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx2OC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cisg
ICAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kOwogICAg
IGNsYXNzIFNjcmlwdFN0YXRlOwogCkBAIC01Niw2ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgYm9vbCk7CiAKICAgICAgICAg
c3RhdGljIFNjcmlwdE9iamVjdCBjcmVhdGVOZXcoU2NyaXB0U3RhdGUqKTsKKyAgICAgICAgc3Rh
dGljIFN0cmluZyBnZXRIYW5kbGVyRnVuY3Rpb25Cb2R5KFNjcmlwdFN0YXRlKiwgRXZlbnRMaXN0
ZW5lciopOwogICAgIHByb3RlY3RlZDoKICAgICAgICAgU2NyaXB0U3RhdGUqIG1fc2NyaXB0U3Rh
dGU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBk
Yjk4M2ExLi5lYjI2Mzg1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CkBAIC01NiwxMSArNTYsNiBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKLSNpZiBVU0UoSlNDKQotI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCi0j
aW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KEluc3BlY3RvckZyb250
ZW5kKiBmcm9udGVuZCkKQEAgLTU0OSwxMSArNTQ0LDcgQEAgU2NyaXB0T2JqZWN0IEluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2
ZW4KICAgICB2YWx1ZS5zZXQoInVzZUNhcHR1cmUiLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci51
c2VDYXB0dXJlKTsKICAgICB2YWx1ZS5zZXQoImlzQXR0cmlidXRlIiwgZXZlbnRMaXN0ZW5lci0+
aXNBdHRyaWJ1dGUoKSk7CiAgICAgdmFsdWUuc2V0KCJub2RlSWQiLCBzdGF0aWNfY2FzdDxsb25n
IGxvbmc+KHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZSkpKTsKLSNpZiBVU0UoSlNDKQotICAg
IEpTQzo6SlNPYmplY3QqIGZ1bmN0aW9uT2JqZWN0ID0gZXZlbnRMaXN0ZW5lci0+anNGdW5jdGlv
bigpOwotICAgIGlmIChmdW5jdGlvbk9iamVjdCkKLSAgICAgICAgdmFsdWUuc2V0KCJsaXN0ZW5l
ciIsIFNjcmlwdE9iamVjdChtX2Zyb250ZW5kLT5zY3JpcHRTdGF0ZSgpLCBmdW5jdGlvbk9iamVj
dCkpOwotI2VuZGlmCisgICAgdmFsdWUuc2V0KCJsaXN0ZW5lciIsIFNjcmlwdE9iamVjdDo6Z2V0
SGFuZGxlckZ1bmN0aW9uQm9keShtX2Zyb250ZW5kLT5zY3JpcHRTdGF0ZSgpLCBldmVudExpc3Rl
bmVyLmdldCgpKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40257</attachid>
            <date>2009-09-28 14:09:29 -0700</date>
            <delta_ts>2009-09-28 14:12:42 -0700</delta_ts>
            <desc>patch</desc>
            <filename>event_listeners_2</filename>
            <type>text/plain</type>
            <size>6017</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTA3NzFiYy4uMjVjYzkzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0wOS0yOCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRW5jYXBzdWxhdGUgSlMgbGlzdGVu
ZXJzIHNwZWNpZmljcyBpbnRvIFNjcmlwdEV2ZW50TGlzdGVuZXIuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5ODE2CisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEV2
ZW50TGlzdGVuZXJIYW5kbGVyQm9keSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RXZl
bnRMaXN0ZW5lci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RXZlbnRMaXN0ZW5lckhhbmRsZXJCb2R5KToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOgorCiAyMDA5LTA5LTI4ICBE
aW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dEV2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3Rl
bmVyLmNwcAppbmRleCA4NzhjNTM1Li5mZTlmZmRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkF0
dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
WFNTQXVkaXRvci5oIgpAQCAtOTksNCArMTAwLDEyIEBAIFBhc3NSZWZQdHI8SlNMYXp5RXZlbnRM
aXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSogZnJhbWUsIEF0dHJp
CiAgICAgcmV0dXJuIEpTTGF6eUV2ZW50TGlzdGVuZXI6OmNyZWF0ZShhdHRyLT5sb2NhbE5hbWUo
KS5zdHJpbmcoKSwgZXZlbnRQYXJhbWV0ZXJOYW1lKGZyYW1lLT5kb2N1bWVudCgpLT5pc1NWR0Rv
Y3VtZW50KCkpLCBhdHRyLT52YWx1ZSgpLCBnbG9iYWxPYmplY3QsIDAsIHNjcmlwdENvbnRyb2xs
ZXItPmV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKSk7CiB9CiAKK1N0cmluZyBnZXRFdmVudExpc3Rl
bmVySGFuZGxlckJvZHkoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBFdmVudExpc3RlbmVyKiBl
dmVudExpc3RlbmVyKQoreworICAgIEpTQzo6SlNPYmplY3QqIGZ1bmN0aW9uT2JqZWN0ID0gZXZl
bnRMaXN0ZW5lci0+anNGdW5jdGlvbigpOworICAgIGlmICghZnVuY3Rpb25PYmplY3QpCisgICAg
ICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZnVuY3Rpb25PYmplY3QtPnRvU3RyaW5nKHNjcmlw
dFN0YXRlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEV2ZW50TGlzdGVuZXIuaAppbmRleCA4Mjk5ZDI5Li4wMzliZDI4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuaAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuaApAQCAtMzgsMTEgKzM4LDE0IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBBdHRyaWJ1dGU7CisgICAgY2xhc3MgRXZl
bnRMaXN0ZW5lcjsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBOb2RlOworICAgIGNsYXNz
IFNjcmlwdFN0YXRlOwogCiAgICAgUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVh
dGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKE5vZGUqLCBBdHRyaWJ1dGUqKTsKICAgICBQYXNzUmVm
UHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoRnJh
bWUqLCBBdHRyaWJ1dGUqKTsKKyAgICBTdHJpbmcgZ2V0RXZlbnRMaXN0ZW5lckhhbmRsZXJCb2R5
KFNjcmlwdFN0YXRlKiwgRXZlbnRMaXN0ZW5lciopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmggYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCmluZGV4IGE4YjExZTAuLjVhNmQ3ZDQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmgKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaApAQCAtNTUsNyArNTUsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wpOwogCiAg
ICAgICAgIHN0YXRpYyBTY3JpcHRPYmplY3QgY3JlYXRlTmV3KFNjcmlwdFN0YXRlKik7Ci0gICAg
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBTY3JpcHRTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKICAg
ICB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVy
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXgg
N2E4YWE2NC4uMjE0MGU5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRF
dmVudExpc3RlbmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlz
dGVuZXIuY3BwCkBAIC0zMyw3ICszMywxMCBAQAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJTY3JpcHRTY29wZS5oIgorI2luY2x1ZGUgIlY4QWJzdHJh
Y3RFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC02OCw0ICs3MSwxOCBAQCBQYXNzUmVmUHRyPFY4TGF6eUV2ZW50TGlzdGVu
ZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoRnJhbWUqIGZyYW1lLCBBdHRyaQogICAg
IHJldHVybiBWOExhenlFdmVudExpc3RlbmVyOjpjcmVhdGUoZnJhbWUsIGF0dHItPnZhbHVlKCks
IGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1
bWVudCgpKTsKIH0KIAorU3RyaW5nIGdldEV2ZW50TGlzdGVuZXJIYW5kbGVyQm9keShTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQoreworICAgIGlmIChs
aXN0ZW5lci0+dHlwZSgpICE9IEV2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lclR5cGUpCisg
ICAgICAgIHJldHVybiAiIjsKKworICAgIFNjcmlwdFNjb3BlIHNjb3BlKHNjcmlwdFN0YXRlKTsK
KyAgICBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lciogdjhMaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4
QWJzdHJhY3RFdmVudExpc3RlbmVyKj4obGlzdGVuZXIpOworICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gZnVuY3Rpb24gPSB2OExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgIGlm
IChmdW5jdGlvbi5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAiIjsKKworICAgIHJldHVybiB0
b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKGZ1bmN0aW9uKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExp
c3RlbmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuaAppbmRl
eCAwMTcxMTIwLi5jOTlhYjllIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dEV2ZW50TGlzdGVuZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlz
dGVuZXIuaApAQCAtMzgsMTEgKzM4LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBBdHRyaWJ1dGU7CisgICAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBGcmFt
ZTsKICAgICBjbGFzcyBOb2RlOworICAgIGNsYXNzIFNjcmlwdFN0YXRlOwogCiAgICAgUGFzc1Jl
ZlB0cjxWOExhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKE5v
ZGUqLCBBdHRyaWJ1dGUqKTsKICAgICBQYXNzUmVmUHRyPFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNy
ZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoRnJhbWUqLCBBdHRyaWJ1dGUqKTsKKyAgICBTdHJp
bmcgZ2V0RXZlbnRMaXN0ZW5lckhhbmRsZXJCb2R5KFNjcmlwdFN0YXRlKiwgRXZlbnRMaXN0ZW5l
ciopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAppbmRleCBkYjk4M2ExLi5hMDY0ODUyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01MCwxNyArNTAsMTMgQEAKICNpbmNsdWRlICJOb2Rl
LmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3Qu
aCIKICNpbmNsdWRlICJUZXh0LmgiCiAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgVVNFKEpTQykKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5o
IgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIEluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnNwZWN0b3JG
cm9udGVuZCogZnJvbnRlbmQpCkBAIC01NDksMTEgKzU0NSw3IEBAIFNjcmlwdE9iamVjdCBJbnNw
ZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVy
ZWRFdmVuCiAgICAgdmFsdWUuc2V0KCJ1c2VDYXB0dXJlIiwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIudXNlQ2FwdHVyZSk7CiAgICAgdmFsdWUuc2V0KCJpc0F0dHJpYnV0ZSIsIGV2ZW50TGlzdGVu
ZXItPmlzQXR0cmlidXRlKCkpOwogICAgIHZhbHVlLnNldCgibm9kZUlkIiwgc3RhdGljX2Nhc3Q8
bG9uZyBsb25nPihwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5vZGUpKSk7Ci0jaWYgVVNFKEpTQykK
LSAgICBKU0M6OkpTT2JqZWN0KiBmdW5jdGlvbk9iamVjdCA9IGV2ZW50TGlzdGVuZXItPmpzRnVu
Y3Rpb24oKTsKLSAgICBpZiAoZnVuY3Rpb25PYmplY3QpCi0gICAgICAgIHZhbHVlLnNldCgibGlz
dGVuZXIiLCBTY3JpcHRPYmplY3QobV9mcm9udGVuZC0+c2NyaXB0U3RhdGUoKSwgZnVuY3Rpb25P
YmplY3QpKTsKLSNlbmRpZgorICAgIHZhbHVlLnNldCgibGlzdGVuZXIiLCBnZXRFdmVudExpc3Rl
bmVySGFuZGxlckJvZHkobV9mcm9udGVuZC0+c2NyaXB0U3RhdGUoKSwgZXZlbnRMaXN0ZW5lci5n
ZXQoKSkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40258</attachid>
            <date>2009-09-28 14:12:42 -0700</date>
            <delta_ts>2009-09-28 14:14:39 -0700</delta_ts>
            <desc>(same with null change in ScriptObject.h reverted)</desc>
            <filename>event_listeners_2</filename>
            <type>text/plain</type>
            <size>5616</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTA3NzFiYy4uMjVjYzkzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0wOS0yOCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRW5jYXBzdWxhdGUgSlMgbGlzdGVu
ZXJzIHNwZWNpZmljcyBpbnRvIFNjcmlwdEV2ZW50TGlzdGVuZXIuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5ODE2CisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEV2
ZW50TGlzdGVuZXJIYW5kbGVyQm9keSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RXZl
bnRMaXN0ZW5lci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RXZlbnRMaXN0ZW5lckhhbmRsZXJCb2R5KToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOgorCiAyMDA5LTA5LTI4ICBE
aW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dEV2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3Rl
bmVyLmNwcAppbmRleCA4NzhjNTM1Li5mZTlmZmRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkF0
dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
WFNTQXVkaXRvci5oIgpAQCAtOTksNCArMTAwLDEyIEBAIFBhc3NSZWZQdHI8SlNMYXp5RXZlbnRM
aXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSogZnJhbWUsIEF0dHJp
CiAgICAgcmV0dXJuIEpTTGF6eUV2ZW50TGlzdGVuZXI6OmNyZWF0ZShhdHRyLT5sb2NhbE5hbWUo
KS5zdHJpbmcoKSwgZXZlbnRQYXJhbWV0ZXJOYW1lKGZyYW1lLT5kb2N1bWVudCgpLT5pc1NWR0Rv
Y3VtZW50KCkpLCBhdHRyLT52YWx1ZSgpLCBnbG9iYWxPYmplY3QsIDAsIHNjcmlwdENvbnRyb2xs
ZXItPmV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKSk7CiB9CiAKK1N0cmluZyBnZXRFdmVudExpc3Rl
bmVySGFuZGxlckJvZHkoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBFdmVudExpc3RlbmVyKiBl
dmVudExpc3RlbmVyKQoreworICAgIEpTQzo6SlNPYmplY3QqIGZ1bmN0aW9uT2JqZWN0ID0gZXZl
bnRMaXN0ZW5lci0+anNGdW5jdGlvbigpOworICAgIGlmICghZnVuY3Rpb25PYmplY3QpCisgICAg
ICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZnVuY3Rpb25PYmplY3QtPnRvU3RyaW5nKHNjcmlw
dFN0YXRlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEV2ZW50TGlzdGVuZXIuaAppbmRleCA4Mjk5ZDI5Li4wMzliZDI4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuaAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuaApAQCAtMzgsMTEgKzM4LDE0IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBBdHRyaWJ1dGU7CisgICAgY2xhc3MgRXZl
bnRMaXN0ZW5lcjsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBOb2RlOworICAgIGNsYXNz
IFNjcmlwdFN0YXRlOwogCiAgICAgUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVh
dGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKE5vZGUqLCBBdHRyaWJ1dGUqKTsKICAgICBQYXNzUmVm
UHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoRnJh
bWUqLCBBdHRyaWJ1dGUqKTsKKyAgICBTdHJpbmcgZ2V0RXZlbnRMaXN0ZW5lckhhbmRsZXJCb2R5
KFNjcmlwdFN0YXRlKiwgRXZlbnRMaXN0ZW5lciopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDdh
OGFhNjQuLjIxNDBlOWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZl
bnRMaXN0ZW5lci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3Rl
bmVyLmNwcApAQCAtMzMsNyArMzMsMTAgQEAKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiU2NyaXB0U2NvcGUuaCIKKyNpbmNsdWRlICJWOEFic3RyYWN0
RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNjgsNCArNzEsMTggQEAgUGFzc1JlZlB0cjxWOExhenlFdmVudExpc3RlbmVy
PiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKEZyYW1lKiBmcmFtZSwgQXR0cmkKICAgICBy
ZXR1cm4gVjhMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGZyYW1lLCBhdHRyLT52YWx1ZSgpLCBh
dHRyLT5sb2NhbE5hbWUoKS5zdHJpbmcoKSwgZnJhbWUtPmRvY3VtZW50KCktPmlzU1ZHRG9jdW1l
bnQoKSk7CiB9CiAKK1N0cmluZyBnZXRFdmVudExpc3RlbmVySGFuZGxlckJvZHkoU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lcikKK3sKKyAgICBpZiAobGlz
dGVuZXItPnR5cGUoKSAhPSBFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXJUeXBlKQorICAg
ICAgICByZXR1cm4gIiI7CisKKyAgICBTY3JpcHRTY29wZSBzY29wZShzY3JpcHRTdGF0ZSk7Cisg
ICAgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIqIHY4TGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOEFi
c3RyYWN0RXZlbnRMaXN0ZW5lcio+KGxpc3RlbmVyKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGZ1bmN0aW9uID0gdjhMaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAgICBpZiAo
ZnVuY3Rpb24uSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gIiI7CisKKyAgICByZXR1cm4gdG9X
ZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayhmdW5jdGlvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0
ZW5lci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmgKaW5kZXgg
MDE3MTEyMC4uYzk5YWI5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRF
dmVudExpc3RlbmVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3Rl
bmVyLmgKQEAgLTM4LDExICszOCwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xh
c3MgQXR0cmlidXRlOworICAgIGNsYXNzIEV2ZW50TGlzdGVuZXI7CiAgICAgY2xhc3MgRnJhbWU7
CiAgICAgY2xhc3MgTm9kZTsKKyAgICBjbGFzcyBTY3JpcHRTdGF0ZTsKIAogICAgIFBhc3NSZWZQ
dHI8VjhMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2Rl
KiwgQXR0cmlidXRlKik7CiAgICAgUGFzc1JlZlB0cjxWOExhenlFdmVudExpc3RlbmVyPiBjcmVh
dGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKEZyYW1lKiwgQXR0cmlidXRlKik7CisgICAgU3RyaW5n
IGdldEV2ZW50TGlzdGVuZXJIYW5kbGVyQm9keShTY3JpcHRTdGF0ZSosIEV2ZW50TGlzdGVuZXIq
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKaW5kZXggZGI5ODNhMS4uYTA2NDg1MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcApAQCAtNTAsMTcgKzUwLDEzIEBACiAjaW5jbHVkZSAiTm9kZS5o
IgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNp
bmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0Lmgi
CiAjaW5jbHVkZSAiVGV4dC5oIgogCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAotI2lmIFVTRShKU0MpCi0jaW5jbHVkZSAiSlNET01XaW5kb3cuaCIK
LSNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQoSW5zcGVjdG9yRnJv
bnRlbmQqIGZyb250ZW5kKQpAQCAtNTQ5LDExICs1NDUsNyBAQCBTY3JpcHRPYmplY3QgSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVk
RXZlbgogICAgIHZhbHVlLnNldCgidXNlQ2FwdHVyZSIsIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
LnVzZUNhcHR1cmUpOwogICAgIHZhbHVlLnNldCgiaXNBdHRyaWJ1dGUiLCBldmVudExpc3RlbmVy
LT5pc0F0dHJpYnV0ZSgpKTsKICAgICB2YWx1ZS5zZXQoIm5vZGVJZCIsIHN0YXRpY19jYXN0PGxv
bmcgbG9uZz4ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZChub2RlKSkpOwotI2lmIFVTRShKU0MpCi0g
ICAgSlNDOjpKU09iamVjdCogZnVuY3Rpb25PYmplY3QgPSBldmVudExpc3RlbmVyLT5qc0Z1bmN0
aW9uKCk7Ci0gICAgaWYgKGZ1bmN0aW9uT2JqZWN0KQotICAgICAgICB2YWx1ZS5zZXQoImxpc3Rl
bmVyIiwgU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQtPnNjcmlwdFN0YXRlKCksIGZ1bmN0aW9uT2Jq
ZWN0KSk7Ci0jZW5kaWYKKyAgICB2YWx1ZS5zZXQoImxpc3RlbmVyIiwgZ2V0RXZlbnRMaXN0ZW5l
ckhhbmRsZXJCb2R5KG1fZnJvbnRlbmQtPnNjcmlwdFN0YXRlKCksIGV2ZW50TGlzdGVuZXIuZ2V0
KCkpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAK
</data>
<flag name="review"
          id="21452"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>