<?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>25215</bug_id>
          
          <creation_ts>2009-04-15 11:34:50 -0700</creation_ts>
          <short_desc>Support loading script for nested workers.</short_desc>
          <delta_ts>2022-09-17 19:41:46 -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 Misc.</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>22723</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jian Li">jianli</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>jwbecher</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>117632</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-04-15 11:34:50 -0700</bug_when>
    <thetext>Support loading script for nested workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117638</commentid>
    <comment_count>1</comment_count>
      <attachid>29509</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-04-15 11:48:28 -0700</bug_when>
    <thetext>Created attachment 29509
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117731</commentid>
    <comment_count>2</comment_count>
      <attachid>29509</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-04-16 04:01:32 -0700</bug_when>
    <thetext>Comment on attachment 29509
Proposed Patch

This means that workers will no longer use CachedResource machinery. I&apos;m not sure how bad it is, you may need to consult with someone familiar with its design.

Why is m_loadingAborted necessary (given that we have WorkerMessagingProxy::m_askedToTerminate)? Does checking it affect visible behavior of the worker? Does this change need a test?

This patch doesn&apos;t have sufficient information in ChangeLog - it doesn&apos;t even say that it is not a full implementation of the feature, but just a first step. Ideally, each modified function should have a comment of its own.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117758</commentid>
    <comment_count>3</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-04-16 11:24:27 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 29509 [review])
&gt; This means that workers will no longer use CachedResource machinery. I&apos;m not
&gt; sure how bad it is, you may need to consult with someone familiar with its
&gt; design.
Who can I ping to consult with this design? Sending an email to webkit-dev?
&gt; 
&gt; Why is m_loadingAborted necessary (given that we have
&gt; WorkerMessagingProxy::m_askedToTerminate)? Does checking it affect visible
&gt; behavior of the worker? Does this change need a test?
I think it will be better to abort the script loading as early as possible when Worker::terminate() triggers. This should not cause any visible change to worker behavior because we will not call WorkerContextProxy::startWorkerContext when worker is asked to be terminated and then the script loading is finished. This is same as the check in WorkerMessagingProxy::startWorkerContext.

WorkerMessagingProxy::m_askedToTerminate is not exposed to WorkerContextProxy interface that can be accessed from Worker. I would prefer use a direct flag here since all the logic is in Worker scope.
&gt; 
&gt; This patch doesn&apos;t have sufficient information in ChangeLog - it doesn&apos;t even
&gt; say that it is not a full implementation of the feature, but just a first step.
&gt; Ideally, each modified function should have a comment of its own.
This is the full implementation of script loading for both workers and nested workers, though it is one of steps to support nested workers. Do you want me to say something like this in ChangeLog.

I just ran prepareChangeLog to create the change log. Do you want me to add comments to modified functions in ChangeLog like the following:
   (WebCore::Worker::didFail): Called when the loading fails.
&gt; 

(In reply to comment #2)
&gt; (From update of attachment 29509 [review])
&gt; This means that workers will no longer use CachedResource machinery. I&apos;m not
&gt; sure how bad it is, you may need to consult with someone familiar with its
&gt; design.
&gt; 
&gt; Why is m_loadingAborted necessary (given that we have
&gt; WorkerMessagingProxy::m_askedToTerminate)? Does checking it affect visible
&gt; behavior of the worker? Does this change need a test?
&gt; 
&gt; This patch doesn&apos;t have sufficient information in ChangeLog - it doesn&apos;t even
&gt; say that it is not a full implementation of the feature, but just a first step.
&gt; Ideally, each modified function should have a comment of its own.
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117914</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-04-17 08:44:31 -0700</bug_when>
    <thetext>&gt; Who can I ping to consult with this design? Sending an email to webkit-dev?

Yes, an e-mail to webkit-dev sounds fine.

&gt; This is the full implementation of script loading for both workers and nested
&gt; workers, though it is one of steps to support nested workers.

How does it fix a FIXME in WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader? The current implementation of ThreadableLoader doesn&apos;t work in nested workers.

&gt; I just ran prepareChangeLog to create the change log. Do you want me to add
&gt; comments to modified functions in ChangeLog like the following:
&gt;    (WebCore::Worker::didFail): Called when the loading fails.

As you imply, this comment would not be helpful.

The purpose of comments is two-fold. First, they let people not directly involved with implementation of a feature to follow the progress easily, and learn new concepts. Second, they help when investigating bugs introduced by a patch - if a particular change has bad side effects, the person fixing the code needs to know its primary purpose in order to not defeat it when fixing side effects.

This patch is not trivial, and it definitely needs a detailed ChangeLog. You should mention at least the following:
- Worker loading now uses ThreadableLoader instead of CachedScript, because the latter is not thread safe. Thus, it implements a different set of callbacks;
- terminate() now has a different effect on loading;
- there may be little to say about didFail(), but a comment for didFailRedirectCheck() can explain how worker loading is supposed to handle redirects;
- a comment for abortLoading() should explain when it is supposed to be called - e.g. it&apos;s very surprising that it is called from didFail() in your patch;
- anything else that required your special attention, or that could confuse others reading your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117965</commentid>
    <comment_count>5</comment_count>
      <attachid>29588</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-04-17 13:20:10 -0700</bug_when>
    <thetext>Created attachment 29588
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117966</commentid>
    <comment_count>6</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-04-17 13:25:55 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Who can I ping to consult with this design? Sending an email to webkit-dev?
&gt; 
&gt; Yes, an e-mail to webkit-dev sounds fine.

I&apos;ve sent an email to webkit-dev.
&gt; 
&gt; &gt; This is the full implementation of script loading for both workers and nested
&gt; &gt; workers, though it is one of steps to support nested workers.
&gt; 
&gt; How does it fix a FIXME in
&gt; WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader? The current
&gt; implementation of ThreadableLoader doesn&apos;t work in nested workers.
&gt; 
It seems that the inappropriate asserts prevent WorkerThreadableLoader from working in nested workers. I changed the asserts and update the FIXME. As pointed out in FIXME, the current implementation of WorkerThreadableLoader is not the final elegant solution, but it just works for script loading in nested workers. I think levin is working on improving it.

&gt; &gt; I just ran prepareChangeLog to create the change log. Do you want me to add
&gt; &gt; comments to modified functions in ChangeLog like the following:
&gt; &gt;    (WebCore::Worker::didFail): Called when the loading fails.
&gt; 
&gt; As you imply, this comment would not be helpful.
&gt; 
&gt; The purpose of comments is two-fold. First, they let people not directly
&gt; involved with implementation of a feature to follow the progress easily, and
&gt; learn new concepts. Second, they help when investigating bugs introduced by a
&gt; patch - if a particular change has bad side effects, the person fixing the code
&gt; needs to know its primary purpose in order to not defeat it when fixing side
&gt; effects.
&gt; 
&gt; This patch is not trivial, and it definitely needs a detailed ChangeLog. You
&gt; should mention at least the following:
&gt; - Worker loading now uses ThreadableLoader instead of CachedScript, because the
&gt; latter is not thread safe. Thus, it implements a different set of callbacks;
&gt; - terminate() now has a different effect on loading;
&gt; - there may be little to say about didFail(), but a comment for
&gt; didFailRedirectCheck() can explain how worker loading is supposed to handle
&gt; redirects;
&gt; - a comment for abortLoading() should explain when it is supposed to be called
&gt; - e.g. it&apos;s very surprising that it is called from didFail() in your patch;
&gt; - anything else that required your special attention, or that could confuse
&gt; others reading your patch.
&gt; 
I updated the ChangeLog. Thank you very much for helping me on this.

The reason for didFail() calling abortLoading() is to cleanup the loading resource since I use abortLoading to server dual purposes: abort loading and/or cleanup resources.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899281</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-09-17 19:39:39 -0700</bug_when>
    <thetext>https://commits.webkit.org/254597@main</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899288</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-09-17 19:41:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/100079583&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29509</attachid>
            <date>2009-04-15 11:48:28 -0700</date>
            <delta_ts>2009-04-17 13:20:10 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>25215</filename>
            <type>text/plain</type>
            <size>7450</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjdkMTJjYy4uMTA2NTIxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wNC0xNSAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1MjE1
CisgICAgICAgIFN1cHBvcnQgbG9hZGluZyBzY3JpcHQgZm9yIG5lc3RlZCB3b3JrZXJzLgorCisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpX
b3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjp0ZXJtaW5hdGUpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyOjphYm9ydExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlcjo6ZGlkRmFpbFJlZGlyZWN0Q2hlY2spOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6
CisKIDIwMDktMDQtMTQgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVc2VkIHN2biBtZXJnZSAtcjQyNTI5OjQyNTI4IHRvIHJvbGwgb3V0IG15IGxhc3QgcGF0
Y2ggYmVjYXVzZSBpdCBicm9rZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5j
cHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAppbmRleCA4NWJhNjkwLi5hODIzY2Q0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiV29ya2VyLmgiCiAK
LSNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNs
dWRlICJEb2NMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtNDIsOCArNDEsMTIg
QEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKKyNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dFByb3h5
LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KQEAgLTUyLDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXb3JrZXI6Oldvcmtl
cihjb25zdCBTdHJpbmcmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAg
ICAsIG1fbG9hZGluZ0Fib3J0ZWQoZmFsc2UpCiAgICAgLCBtX2NvbnRleHRQcm94eShXb3JrZXJD
b250ZXh0UHJveHk6OmNyZWF0ZSh0aGlzKSkKIHsKICAgICBtX3NjcmlwdFVSTCA9IGNvbnRleHQt
PmNvbXBsZXRlVVJMKHVybCk7CkBAIC02NSwxOCArNjksMTEgQEAgV29ya2VyOjpXb3JrZXIoY29u
c3QgU3RyaW5nJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlv
bkNvZGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBOZXN0ZWQgd29y
a2VycyBuZWVkIGxvYWRpbmcgc3VwcG9ydC4gQ29uc2lkZXIgYWRvcHRpbmcgVGhyZWFkYWJsZUxv
YWRlciBoZXJlLgotICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1l
bnQoKSk7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotCi0gICAgbV9jYWNoZWRTY3JpcHQgPSBkb2N1bWVu
dC0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQobV9zY3JpcHRVUkwsICJVVEYtOCIpOwotICAg
IGlmICghbV9jYWNoZWRTY3JpcHQpIHsKLSAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobV9zY3Jp
cHRVUkwpOworICAgIENvbnRlbnRTbmlmZiBjb250ZW50U25pZmYgPSBtX3NjcmlwdFVSTC5pc0xv
Y2FsRmlsZSgpID8gU25pZmZDb250ZW50IDogRG9Ob3RTbmlmZkNvbnRlbnQ7CisgICAgbV9sb2Fk
ZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0
aGlzLCByZXF1ZXN0LCBTZW5kTG9hZENhbGxiYWNrcywgY29udGVudFNuaWZmLCBBbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzKTsKIAogICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsgIC8vIFRoZSB3
b3JrZXIgY29udGV4dCBkb2VzIG5vdCBleGlzdCB3aGlsZSBsb2FkaW5nLCBzbyB3ZSBtdXN0IGVu
c3VyZSB0aGF0IHRoZSB3b3JrZXIgb2JqZWN0IGlzIG5vdCBjb2xsZWN0ZWQsIGFzIHdlbGwgYXMg
aXRzIGV2ZW50IGxpc3RlbmVycy4KLSAgICBtX2NhY2hlZFNjcmlwdC0+YWRkQ2xpZW50KHRoaXMp
OwogfQogCiBXb3JrZXI6On5Xb3JrZXIoKQpAQCAtOTQsNiArOTEsNyBAQCB2b2lkIFdvcmtlcjo6
cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogdm9pZCBXb3JrZXI6OnRlcm1pbmF0
ZSgpCiB7CiAgICAgbV9jb250ZXh0UHJveHktPnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKKyAg
ICBhYm9ydExvYWRpbmcoKTsKIH0KIAogYm9vbCBXb3JrZXI6OmNhblN1c3BlbmQoKSBjb25zdApA
QCAtMTExLDE5ICsxMDksNzcgQEAgYm9vbCBXb3JrZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fY29udGV4dFByb3h5LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSB8
fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQorICAgIAordm9pZCBX
b3JrZXI6OmFib3J0TG9hZGluZygpCit7CisgICAgbV9sb2FkaW5nQWJvcnRlZCA9IHRydWU7Cisg
ICAgaWYgKG1fbG9hZGVyKSB7CisgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKKyAgICAgICAg
bV9sb2FkZXIgPSAwOworICAgIH0KKyAgICBtX2RlY29kZXIgPSAwOworfQorICAgIAordm9pZCBX
b3JrZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK3sKKyAgICBpZiAobV9sb2FkaW5nQWJvcnRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9yZXNwb25zZUVuY29kaW5nID0gcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOworICAgIGlm
IChtX3Jlc3BvbnNlRW5jb2RpbmcuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc3BvbnNlRW5jb2Rp
bmcgPSAiVVRGLTgiOworfQogCi12b2lkIFdvcmtlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqIHVudXNlZFJlc291cmNlKQordm9pZCBXb3JrZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIGludCBsZW4pCiB7Ci0gICAgQVNTRVJUX1VOVVNFRCh1bnVzZWRSZXNvdXJj
ZSwgdW51c2VkUmVzb3VyY2UgPT0gbV9jYWNoZWRTY3JpcHQpOworICAgIGlmIChtX2xvYWRpbmdB
Ym9ydGVkKQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9jYWNoZWRTY3JpcHQtPmVycm9y
T2NjdXJyZWQoKSkKLSAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7Ci0gICAgZWxzZQotICAg
ICAgICBtX2NvbnRleHRQcm94eS0+c3RhcnRXb3JrZXJDb250ZXh0KG1fc2NyaXB0VVJMLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnVzZXJBZ2VudChtX3NjcmlwdFVSTCksIG1fY2FjaGVkU2Ny
aXB0LT5zY3JpcHQoKSk7CisgICAgaWYgKCFtX2RlY29kZXIpCisgICAgICAgIG1fZGVjb2RlciA9
IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsIG1fcmVzcG9uc2VFbmNv
ZGluZyk7CisgICAgCisgICAgaWYgKCFsZW4pCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBp
ZiAobGVuID09IC0xKQorICAgICAgICBsZW4gPSBzdHJsZW4oZGF0YSk7CisgICAgCisgICAgbV9y
ZXNwb25zZVRleHQgKz0gbV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKTsKK30KKyAgICAKK3Zv
aWQgV29ya2VyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcpCit7CisgICAgaWYgKG1f
bG9hZGluZ0Fib3J0ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2RlY29kZXIpCisg
ICAgICAgIG1fcmVzcG9uc2VUZXh0ICs9IG1fZGVjb2Rlci0+Zmx1c2goKTsKKworICAgIG1fY29u
dGV4dFByb3h5LT5zdGFydFdvcmtlckNvbnRleHQobV9zY3JpcHRVUkwsIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+dXNlckFnZW50KG1fc2NyaXB0VVJMKSwgbV9yZXNwb25zZVRleHQpOwogCi0g
ICAgbV9jYWNoZWRTY3JpcHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICBtX2NhY2hlZFNjcmlw
dCA9IDA7CisgICAgbV9sb2FkZXIgPSAwOworICAgIG1fZGVjb2RlciA9IDA7CisgICAgCisgICAg
dW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Cit9CisgICAgCit2b2lkIFdvcmtlcjo6ZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJikKK3sKKyAgICBpZiAobV9sb2FkaW5nQWJvcnRlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYWJvcnRMb2FkaW5nKCk7CisgICAgZGlzcGF0Y2hFcnJvckV2
ZW50KCk7CisgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Cit9CisgICAgCit2b2lkIFdv
cmtlcjo6ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKQoreworICAgIGlmIChtX2xvYWRpbmdBYm9ydGVk
KQorICAgICAgICByZXR1cm47CiAKKyAgICBhYm9ydExvYWRpbmcoKTsKKyAgICBkaXNwYXRjaEVy
cm9yRXZlbnQoKTsKICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5o
CmluZGV4IGQwNWY5ZDUuLjk5MTI4ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXIuaAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKQEAgLTMxLDI1ICszMSwyNyBAQAog
CiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCi0jaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotICAgIGNsYXNzIENhY2hlZFJlc291cmNlOwotICAgIGNsYXNzIENhY2hlZFNjcmlw
dDsKKyAgICBjbGFzcyBSZXNvdXJjZUVycm9yOworICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTdHJpbmc7Cisg
ICAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKKyAgICBjbGFzcyBUaHJlYWRhYmxlTG9hZGVy
OwogICAgIGNsYXNzIFdvcmtlckNvbnRleHRQcm94eTsKIAogICAgIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CiAKLSAgICBjbGFzcyBXb3JrZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrZXI+
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwcml2YXRlIENhY2hlZFJlc291cmNlQ2xpZW50LCBw
dWJsaWMgRXZlbnRUYXJnZXQgeworICAgIGNsYXNzIFdvcmtlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFdvcmtlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHByaXZhdGUgVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCwgcHVibGljIEV2ZW50VGFyZ2V0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdvcmtlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFdvcmtlcih1cmwsIGNvbnRleHQsIGVjKSk7IH0KICAgICAgICAgfldvcmtlcigpOwpA
QCAtODksMTMgKzkxLDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAg
ICAgICBXb3JrZXIoY29uc3QgU3RyaW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2Vw
dGlvbkNvZGUmKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRU
YXJnZXQoKSB7IHJlZigpOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0
KCkgeyBkZXJlZigpOyB9CiAKKyAgICAgICAgdm9pZCBhYm9ydExvYWRpbmcoKTsKKwogICAgICAg
ICBLVVJMIG1fc2NyaXB0VVJMOwotICAgICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRT
Y3JpcHQ+IG1fY2FjaGVkU2NyaXB0OworICAgICAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4g
bV9sb2FkZXI7CisgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7
CisgICAgICAgIFN0cmluZyBtX3Jlc3BvbnNlRW5jb2Rpbmc7CisgICAgICAgIFN0cmluZyBtX3Jl
c3BvbnNlVGV4dDsKKyAgICAgICAgYm9vbCBtX2xvYWRpbmdBYm9ydGVkOwogCiAgICAgICAgIFdv
cmtlckNvbnRleHRQcm94eSogbV9jb250ZXh0UHJveHk7IC8vIFRoZSBwcm94eSBvdXRsaXZlcyB0
aGUgd29ya2VyIHRvIHBlcmZvcm0gdGhyZWFkIHNodXRkb3duLgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29588</attachid>
            <date>2009-04-17 13:20:10 -0700</date>
            <delta_ts>2010-06-10 17:16:18 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>25215_2</filename>
            <type>text/plain</type>
            <size>7859</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjdkMTJjYy4uYWNiZTIxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wNC0xNSAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1MjE1
CisgICAgICAgIFN1cHBvcnQgbG9hZGluZyBzY3JpcHQgZm9yIG5lc3RlZCB3b3JrZXJzLiBUaGlz
IGlzIGRvbmUgYnkgY2hhbmdpbmcgdG8gdXNlIFRocmVhZGFibGVMb2FkZXIsIGluc3RlYWQgb2Yg
Q2FjaGVkU2NyaXB0LCBiZWNhdXNlIHRoZSBsYXR0ZXIgaXMgbm90IHRocmVhZC1zYWZlLiBUaHVz
IGl0IGltcGxlbWVudHMgYSBkaWZmZXJlbnQgc2V0IG9mIGNhbGxiYWNrcy4KKworICAgICAgICAq
IHdvcmtlcnMvV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6V29ya2VyKToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6dGVybWluYXRlKTogbm93IGFsc28gYWJvcnRzIHRo
ZSBzY3JpcHQgbG9hZGluZyBpZiBpdCBpcyBub3QgZG9uZSB5ZXQuCisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXI6OmFib3J0TG9hZGluZyk6IHNob3VsZCBiZSBjYWxsZWQgdG8gYWJvcnQgdGhlIGxv
YWRpbmcgYW5kL29yIGNsZWFudXAgdGhlIGxvYWRpbmcgcmVzb3VyY2VzIHdoZW4gdGhlIHdvcmtl
ciBpcyBzdG9wcGVkIG9yIGFuIGVycm9yIGhhcHBlbnMgZHVyaW5nIHRoZSBsb2FkaW5nLgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6
OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpkaWRGYWlsKToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6ZGlkRmFpbFJlZGlyZWN0Q2hlY2spOiBhYm9ydCB0
aGUgbG9hZGluZyBpZiB0aGUgcmVkaXJlYyBjaGVjayBmYWlscy4KKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlci5oOgorCiAyMDA5LTA0LTE0ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5j
b20+CiAKICAgICAgICAgVXNlZCBzdm4gbWVyZ2UgLXI0MjUyOTo0MjUyOCB0byByb2xsIG91dCBt
eSBsYXN0IHBhdGNoIGJlY2F1c2UgaXQgYnJva2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggODViYTY5MC4u
YTgyM2NkNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIldv
cmtlci5oIgogCi0jaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93
LmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTQy
LDggKzQxLDEyIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIK
KyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIldvcmtlckNv
bnRleHRQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CkBAIC01Miw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV29y
a2VyOjpXb3JrZXIoY29uc3QgU3RyaW5nJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQs
IHRoaXMpCisgICAgLCBtX2xvYWRpbmdBYm9ydGVkKGZhbHNlKQogICAgICwgbV9jb250ZXh0UHJv
eHkoV29ya2VyQ29udGV4dFByb3h5OjpjcmVhdGUodGhpcykpCiB7CiAgICAgbV9zY3JpcHRVUkwg
PSBjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwpOwpAQCAtNjUsMTggKzY5LDExIEBAIFdvcmtlcjo6
V29ya2VyKGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBFeGNlcHRpb25Db2RlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTog
TmVzdGVkIHdvcmtlcnMgbmVlZCBsb2FkaW5nIHN1cHBvcnQuIENvbnNpZGVyIGFkb3B0aW5nIFRo
cmVhZGFibGVMb2FkZXIgaGVyZS4KLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc0RvY3VtZW50KCkpOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLQotICAgIG1fY2FjaGVkU2NyaXB0
ID0gZG9jdW1lbnQtPmRvY0xvYWRlcigpLT5yZXF1ZXN0U2NyaXB0KG1fc2NyaXB0VVJMLCAiVVRG
LTgiKTsKLSAgICBpZiAoIW1fY2FjaGVkU2NyaXB0KSB7Ci0gICAgICAgIGRpc3BhdGNoRXJyb3JF
dmVudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KG1fc2NyaXB0VVJMKTsKKyAgICBDb250ZW50U25pZmYgY29udGVudFNuaWZmID0gbV9zY3Jp
cHRVUkwuaXNMb2NhbEZpbGUoKSA/IFNuaWZmQ29udGVudCA6IERvTm90U25pZmZDb250ZW50Owor
ICAgIG1fbG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgdGhpcywgcmVxdWVzdCwgU2VuZExvYWRDYWxsYmFja3MsIGNvbnRlbnRTbmlmZiwg
QWxsb3dTdG9yZWRDcmVkZW50aWFscyk7CiAKICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7
ICAvLyBUaGUgd29ya2VyIGNvbnRleHQgZG9lcyBub3QgZXhpc3Qgd2hpbGUgbG9hZGluZywgc28g
d2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgd29ya2VyIG9iamVjdCBpcyBub3QgY29sbGVjdGVkLCBh
cyB3ZWxsIGFzIGl0cyBldmVudCBsaXN0ZW5lcnMuCi0gICAgbV9jYWNoZWRTY3JpcHQtPmFkZENs
aWVudCh0aGlzKTsKIH0KIAogV29ya2VyOjp+V29ya2VyKCkKQEAgLTk0LDYgKzkxLDcgQEAgdm9p
ZCBXb3JrZXI6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHZvaWQgV29ya2Vy
Ojp0ZXJtaW5hdGUoKQogewogICAgIG1fY29udGV4dFByb3h5LT50ZXJtaW5hdGVXb3JrZXJDb250
ZXh0KCk7CisgICAgYWJvcnRMb2FkaW5nKCk7CiB9CiAKIGJvb2wgV29ya2VyOjpjYW5TdXNwZW5k
KCkgY29uc3QKQEAgLTExMSwxOSArMTA5LDc3IEBAIGJvb2wgV29ya2VyOjpoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRleHRQcm94eS0+aGFzUGVuZGluZ0Fj
dGl2aXR5KCkgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0KKyAg
ICAKK3ZvaWQgV29ya2VyOjphYm9ydExvYWRpbmcoKQoreworICAgIG1fbG9hZGluZ0Fib3J0ZWQg
PSB0cnVlOworICAgIGlmIChtX2xvYWRlcikgeworICAgICAgICBtX2xvYWRlci0+Y2FuY2VsKCk7
CisgICAgICAgIG1fbG9hZGVyID0gMDsKKyAgICB9CisgICAgbV9kZWNvZGVyID0gMDsKK30KKyAg
ICAKK3ZvaWQgV29ya2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCit7CisgICAgaWYgKG1fbG9hZGluZ0Fib3J0ZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUo
KTsKKyAgICBpZiAobV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNw
b25zZUVuY29kaW5nID0gIlVURi04IjsKK30KIAotdm9pZCBXb3JrZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlKiB1bnVzZWRSZXNvdXJjZSkKK3ZvaWQgV29ya2VyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogewotICAgIEFTU0VSVF9VTlVTRUQodW51
c2VkUmVzb3VyY2UsIHVudXNlZFJlc291cmNlID09IG1fY2FjaGVkU2NyaXB0KTsKKyAgICBpZiAo
bV9sb2FkaW5nQWJvcnRlZCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fY2FjaGVkU2Ny
aXB0LT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOwotICAg
IGVsc2UKLSAgICAgICAgbV9jb250ZXh0UHJveHktPnN0YXJ0V29ya2VyQ29udGV4dChtX3Njcmlw
dFVSTCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51c2VyQWdlbnQobV9zY3JpcHRVUkwpLCBt
X2NhY2hlZFNjcmlwdC0+c2NyaXB0KCkpOworICAgIGlmICghbV9kZWNvZGVyKQorICAgICAgICBt
X2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCBtX3Jl
c3BvbnNlRW5jb2RpbmcpOworICAgIAorICAgIGlmICghbGVuKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgaWYgKGxlbiA9PSAtMSkKKyAgICAgICAgbGVuID0gc3RybGVuKGRhdGEpOworICAg
IAorICAgIG1fcmVzcG9uc2VUZXh0ICs9IG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbik7Cit9
CisgICAgCit2b2lkIFdvcmtlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nKQorewor
ICAgIGlmIChtX2xvYWRpbmdBYm9ydGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9k
ZWNvZGVyKQorICAgICAgICBtX3Jlc3BvbnNlVGV4dCArPSBtX2RlY29kZXItPmZsdXNoKCk7CisK
KyAgICBtX2NvbnRleHRQcm94eS0+c3RhcnRXb3JrZXJDb250ZXh0KG1fc2NyaXB0VVJMLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnVzZXJBZ2VudChtX3NjcmlwdFVSTCksIG1fcmVzcG9uc2VU
ZXh0KTsKIAotICAgIG1fY2FjaGVkU2NyaXB0LT5yZW1vdmVDbGllbnQodGhpcyk7Ci0gICAgbV9j
YWNoZWRTY3JpcHQgPSAwOworICAgIG1fbG9hZGVyID0gMDsKKyAgICBtX2RlY29kZXIgPSAwOwor
ICAgIAorICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworfQorICAgIAordm9pZCBXb3Jr
ZXI6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpCit7CisgICAgaWYgKG1fbG9hZGluZ0Fi
b3J0ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGFib3J0TG9hZGluZygpOworICAgIGRpc3Bh
dGNoRXJyb3JFdmVudCgpOworICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworfQorICAg
IAordm9pZCBXb3JrZXI6OmRpZEZhaWxSZWRpcmVjdENoZWNrKCkKK3sKKyAgICBpZiAobV9sb2Fk
aW5nQWJvcnRlZCkKKyAgICAgICAgcmV0dXJuOwogCisgICAgYWJvcnRMb2FkaW5nKCk7CisgICAg
ZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuaAppbmRleCBkMDVmOWQ1Li45OTEyOGUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCkBAIC0zMSwyNSAr
MzEsMjcgQEAKIAogI2luY2x1ZGUgIkF0b21pY1N0cmluZ0hhc2guaCIKICNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgotI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlRo
cmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKLSAgICBjbGFzcyBD
YWNoZWRTY3JpcHQ7CisgICAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKKyAgICBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3Mg
U3RyaW5nOworICAgIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CisgICAgY2xhc3MgVGhyZWFk
YWJsZUxvYWRlcjsKICAgICBjbGFzcyBXb3JrZXJDb250ZXh0UHJveHk7CiAKICAgICB0eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOwogCi0gICAgY2xhc3MgV29ya2VyIDogcHVibGljIFJlZkNvdW50
ZWQ8V29ya2VyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJj
ZUNsaWVudCwgcHVibGljIEV2ZW50VGFyZ2V0IHsKKyAgICBjbGFzcyBXb3JrZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxXb3JrZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwcml2YXRlIFRocmVh
ZGFibGVMb2FkZXJDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdldCB7CiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXb3JrZXIodXJsLCBjb250ZXh0LCBlYykpOyB9CiAgICAgICAgIH5X
b3JrZXIoKTsKQEAgLTg5LDEzICs5MSwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJp
dmF0ZToKICAgICAgICAgV29ya2VyKGNvbnN0IFN0cmluZyYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQogCisgICAgICAgIHZvaWQgYWJvcnRMb2FkaW5nKCk7
CisKICAgICAgICAgS1VSTCBtX3NjcmlwdFVSTDsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkU2NyaXB0PiBtX2NhY2hlZFNjcmlwdDsKKyAgICAgICAgUmVmUHRyPFRocmVhZGFi
bGVMb2FkZXI+IG1fbG9hZGVyOworICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4g
bV9kZWNvZGVyOworICAgICAgICBTdHJpbmcgbV9yZXNwb25zZUVuY29kaW5nOworICAgICAgICBT
dHJpbmcgbV9yZXNwb25zZVRleHQ7CisgICAgICAgIGJvb2wgbV9sb2FkaW5nQWJvcnRlZDsKIAog
ICAgICAgICBXb3JrZXJDb250ZXh0UHJveHkqIG1fY29udGV4dFByb3h5OyAvLyBUaGUgcHJveHkg
b3V0bGl2ZXMgdGhlIHdvcmtlciB0byBwZXJmb3JtIHRocmVhZCBzaHV0ZG93bi4KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>