<?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>53024</bug_id>
          
          <creation_ts>2011-01-24 10:53:39 -0800</creation_ts>
          <short_desc>It is needlessly expensive to find the generating node from an anonymous renderer of a pseudoelement.</short_desc>
          <delta_ts>2011-01-31 18:36:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>52126</blocked>
    
    <blocked>53037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carol Szabo">carol</reporter>
          <assigned_to name="Carol Szabo">carol</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>339093</commentid>
    <comment_count>0</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2011-01-24 10:53:39 -0800</bug_when>
    <thetext>In order to correctly implement CSS2.1 counters, one needs to efficiently walk the element tree in order to find the appropriate value for a counter. Counters are currently attached to the renderer tree because only visible elements should affect counter values and because some of them belong to pseudo elements not present in the DOM tree such as those introduced by the :before and :after selector qualifiers.
As counters are attached often to anonymous renderers (those of pseudo elements) and other anonymous renderers (and who knows, maybe even non-anonymous absolutely positioned renderers) may intervene between these renderers and the renderer of their generating node, it is hard to find the start point where to walk the DOM tree from to find the enclosing scope of these counters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339102</commentid>
    <comment_count>1</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2011-01-24 11:07:35 -0800</bug_when>
    <thetext>Proposed fix: This is a limited fix that only addresses the link between the renderers of :before and :after pseudo elements and their generating element.
Currently when renderers are created there is a convention that an anonymous renderer is designated by passing the document as the associated node.
At construction time this property (anonymity) is preserved in a bit field and the m_node member stores a pointer to the document node. This stored pointer is redundant from this point on so the idea of this fix is to reuse the location of this pointer (m_node) to store a pointer to the generating node.
the m_node is private to RenderObject and is never retrieved directly. The node() accessor used to retrieve this value returns 0 for anonymous renderers, thus the behavior will not be affected by the change.
There is already a setNode() accessor to change the value of m_node used by RenderWidget to reset m_node when the RenderWidget is destroyed but its refcount did not reach 0, thus it can&apos;t be freed.
I propose introducing a new accessor generatingNode() that would return m_node unconditionally, making it possible to obtain thois information for anonymous nodes.
Also, I propose introducing after() and before() accessors to retrieve the after and before pseudo elements that may be attached to a renderer, as the algorithm to get these is now private to RenderObjectChildren, and is also needed elsewhere such as DumpRenderTree::LayoutController::getCounterValueForId() and the counter evaluation code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339157</commentid>
    <comment_count>2</comment_count>
      <attachid>79952</attachid>
    <who name="Carol Szabo">carol</who>
    <bug_when>2011-01-24 11:58:20 -0800</bug_when>
    <thetext>Created attachment 79952
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339168</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-24 12:13:07 -0800</bug_when>
    <thetext>Attachment 79952 did not build on chromium:
Build output: http://queues.webkit.org/results/7493327</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339195</commentid>
    <comment_count>4</comment_count>
      <attachid>79956</attachid>
    <who name="Carol Szabo">carol</who>
    <bug_when>2011-01-24 12:23:31 -0800</bug_when>
    <thetext>Created attachment 79956
Proposed Patch. Fixed chromium build issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340654</commentid>
    <comment_count>5</comment_count>
      <attachid>79956</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-01-26 17:45:40 -0800</bug_when>
    <thetext>Comment on attachment 79956
Proposed Patch. Fixed chromium build issue

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

&gt; Source/WebCore/rendering/RenderObject.h:157
&gt; +    RenderObject* before() const
&gt; +    {
&gt; +        if (const RenderObjectChildList* children = virtualChildren())
&gt; +            return children-&gt;before(this);
&gt; +        return 0;
&gt; +    }
&gt; +    RenderObject* after() const
&gt; +    {
&gt; +        if (const RenderObjectChildList* children = virtualChildren())
&gt; +            return children-&gt;after(this);
&gt; +        return 0;
&gt; +    }

These names are just too generic.  They sound like you&apos;re getting the previous and next siblings.  I think you need to rename them to beforePseudoElementContainer() and afterPseudoElementContainer().

&gt; Source/WebCore/rendering/RenderObject.h:463
&gt; +    Node* generatingNode() const { return m_node == document() ? 0 : m_node; }

Ultimately this should be set correctly for all pseudo-elements.  I think it&apos;s ok to limit it to before/after as a first cut, but we should have a follow-up bug for correcting this for the other pseudo-elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340658</commentid>
    <comment_count>6</comment_count>
      <attachid>79956</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-01-26 17:48:33 -0800</bug_when>
    <thetext>Comment on attachment 79956
Proposed Patch. Fixed chromium build issue

Looking at this further, I don&apos;t really think you need to touch RenderObject.h.  You&apos;re just slowing the code down by making RenderObjectChildList::beforeAfterContainer go back through the RenderObject to fetch virtualChildren(), which is the same list you&apos;re already dealing with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340697</commentid>
    <comment_count>7</comment_count>
      <attachid>80288</attachid>
    <who name="Carol Szabo">carol</who>
    <bug_when>2011-01-26 19:22:25 -0800</bug_when>
    <thetext>Created attachment 80288
Proposed Patch

Refactored beforeAfterContainer (which was not a member of RenderObjectChildren, that is why it needed to go back to RenderObject to find the RenderObjectChildrenList).
Renamed `before` and `after` methods to beforePseudoElementRenderer and afterPseudoElementRenderer respectively. Did not like `Container`, because the returned renderer does not contain the PseudoElement it is either the pseudoelement or its renderer depending on interpretation of what a pseudoelement is. I was always confused by the prior nomenclature thinking that the returned Renderer contains the before and the after pseudoelements&apos; renderers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342615</commentid>
    <comment_count>8</comment_count>
      <attachid>80288</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-01-31 09:33:14 -0800</bug_when>
    <thetext>Comment on attachment 80288
Proposed Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342957</commentid>
    <comment_count>9</comment_count>
      <attachid>80288</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-31 18:36:25 -0800</bug_when>
    <thetext>Comment on attachment 80288
Proposed Patch

Clearing flags on attachment: 80288

Committed r77191: &lt;http://trac.webkit.org/changeset/77191&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342958</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-31 18:36:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79952</attachid>
            <date>2011-01-24 11:58:20 -0800</date>
            <delta_ts>2011-01-24 12:23:31 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>patchFor53024.patch</filename>
            <type>text/plain</type>
            <size>10776</size>
            <attacher name="Carol Szabo">carol</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NzQ4ZjgzLi45NDhhNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTEtMDEtMjQgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvZGUgQ2hhbmdl
cyBvbmx5LgorCisgICAgICAgIEl0IGlzIG5lZWRsZXNzbHkgZXhwZW5zaXZlIHRvIGZpbmQgdGhl
IGdlbmVyYXRpbmcgbm9kZSBmcm9tIGFuIGFub255bW91cyByZW5kZXJlciBvZiBhIHBzZXVkb2Vs
ZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MzAyNAorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkK
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6YmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
YWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpnZW5lcmF0aW5nTm9kZSk6
CisgICAgICAgIEFkZGVkIG5ldyBhY2Nlc3NvcnMgZm9yIHRoZSB1c2Ugb2YgdGhlIENTUyAyLjEg
Y291bnRlcnMgY29kZQorICAgICAgICAobWFpbmx5bHkpCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdENoaWxkTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZWZvcmVBZnRlckNv
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmludmFs
aWRhdGVDb3VudGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6
OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmFmdGVy
KToKKyAgICAgICAgUmVmYWN0b3JlZCB0aGUgY29kZSB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUg
bmV3IGFjY2Vzc29ycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdENoaWxkTGlzdDo6
dXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KToKKyAgICAgICAgQ2hhbmdlZCB0byBzdG9yZSB0aGUg
Z2VuZXJhdGluZyBub2RlIGluIHRoZSA6YmVmb3JlIGFuZCA6YWZ0ZXIKKyAgICAgICAgcmVuZGVy
ZXJzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaDoKKwogMjAx
MS0wMS0xOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MgYW5kIFRvciBBcm5lIFZlc3Riw7guCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggY2YwOGEwZC4uOTgzYjU1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtMTQzLDYgKzE0MywxOCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4tPmxhc3RDaGlsZCgpOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CisgICAgUmVuZGVyT2JqZWN0KiBiZWZvcmUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4g
PSB2aXJ0dWFsQ2hpbGRyZW4oKSkKKyAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbi0+YmVmb3Jl
KHRoaXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgUmVuZGVyT2JqZWN0KiBhZnRl
cigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0
KiBjaGlsZHJlbiA9IHZpcnR1YWxDaGlsZHJlbigpKQorICAgICAgICAgICAgcmV0dXJuIGNoaWxk
cmVuLT5hZnRlcih0aGlzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSB7IHJldHVybiAwOyB9CiAg
ICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KIApAQCAtNDQ0LDYgKzQ1NiwxMSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1Jvb3RlZChSZW5kZXJWaWV3KiogPSAwKTsKIAogICAgIE5vZGUqIG5vZGUoKSBjb25z
dCB7IHJldHVybiBtX2lzQW5vbnltb3VzID8gMCA6IG1fbm9kZTsgfQorCisgICAgLy8gUmV0dXJu
cyB0aGUgc3R5bGVkIG5vZGUgdGhhdCBjYXVzZWQgdGhlIGdlbmVyYXRpb24gb2YgdGhpcyByZW5k
ZXJlci4KKyAgICAvLyBUaGlzIGlzIHRoZSBzYW1lIGFzIG5vZGUoKSBleGNlcHQgZm9yIHJlbmRl
cmVycyBvZiA6YmVmb3JlIGFuZCA6YWZ0ZXIKKyAgICAvLyBwc2V1ZG8gZWxlbWVudHMgZm9yIHdo
aWNoIHRoZWlyIHBhcmVudCBub2RlIGlzIHJldHVybmVkLgorICAgIE5vZGUqIGdlbmVyYXRpbmdO
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlID09IGRvY3VtZW50KCkgPyAwIDogbV9ub2RlOyB9
CiAgICAgdm9pZCBzZXROb2RlKE5vZGUqIG5vZGUpIHsgbV9ub2RlID0gbm9kZTsgfQogCiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5kb2N1bWVudCgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRM
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3Qu
Y3BwCmluZGV4IGZhNGY5MDIuLjkyMmZiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCkBAIC0yNDIsNTUgKzI0MiwxNCBAQCB2
b2lkIFJlbmRlck9iamVjdENoaWxkTGlzdDo6aW5zZXJ0Q2hpbGROb2RlKFJlbmRlck9iamVjdCog
b3duZXIsIFJlbmRlck9iamVjdCogYwogICAgICAgICBvd25lci0+ZG9jdW1lbnQoKS0+YXhPYmpl
Y3RDYWNoZSgpLT5jaGlsZHJlbkNoYW5nZWQob3duZXIpOwogfQogCi1zdGF0aWMgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVBZnRlckNvbnRhaW5lcihSZW5kZXJPYmplY3QqIGNvbnRhaW5lciwgUHNldWRv
SWQgdHlwZSkKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGJlZm9yZUFmdGVyQ29udGFpbmVyKGNvbnN0
IFJlbmRlck9iamVjdCogY29udGFpbmVyLCBQc2V1ZG9JZCB0eXBlKQogewotICAgIGlmICh0eXBl
ID09IEJFRk9SRSkgewotICAgICAgICAvLyBBbiBhbm9ueW1vdXMgKGdlbmVyYXRlZCkgaW5saW5l
IHJ1bi1pbiB0aGF0IGhhcyBQc2V1ZG9JZCBCRUZPUkUgbXVzdCBjb21lIGZyb20gYSBncmFuZHBh
cmVudC4KLSAgICAgICAgLy8gVGhlcmVmb3JlIHdlIHNob3VsZCBza2lwIHRoZXNlIGdlbmVyYXRl
ZCBydW4taW5zIHdoZW4gY2hlY2tpbmcgb3VyIGltbWVkaWF0ZSBjaGlsZHJlbi4KLSAgICAgICAg
Ly8gSWYgd2UgZG9uJ3QgZmluZCBvdXIgOmJlZm9yZSBjaGlsZCBpbW1lZGlhdGVseSwgdGhlbiB3
ZSBzaG91bGQgY2hlY2sgaWYgd2Ugb3duIGEKLSAgICAgICAgLy8gZ2VuZXJhdGVkIGlubGluZSBy
dW4taW4gaW4gdGhlIG5leHQgbGV2ZWwgb2YgY2hpbGRyZW4uCi0gICAgICAgIFJlbmRlck9iamVj
dCogZmlyc3QgPSBjb250YWluZXI7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIC8vIFNraXAg
bGlzdCBtYXJrZXJzIGFuZCBnZW5lcmF0ZWQgcnVuLWlucwotICAgICAgICAgICAgZmlyc3QgPSBm
aXJzdC0+Zmlyc3RDaGlsZCgpOwotICAgICAgICAgICAgd2hpbGUgKGZpcnN0ICYmIChmaXJzdC0+
aXNMaXN0TWFya2VyKCkgfHwgKGZpcnN0LT5pc1JlbmRlcklubGluZSgpICYmIGZpcnN0LT5pc1J1
bkluKCkgJiYgZmlyc3QtPmlzQW5vbnltb3VzKCkpKSkKLSAgICAgICAgICAgICAgICBmaXJzdCA9
IGZpcnN0LT5uZXh0U2libGluZygpOwotICAgICAgICB9IHdoaWxlIChmaXJzdCAmJiBmaXJzdC0+
aXNBbm9ueW1vdXMoKSAmJiBmaXJzdC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8p
OwotCi0gICAgICAgIGlmICghZmlyc3QpCi0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAg
ICBpZiAoZmlyc3QtPnN0eWxlKCktPnN0eWxlVHlwZSgpID09IHR5cGUpCi0gICAgICAgICAgICBy
ZXR1cm4gZmlyc3Q7Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIGEgcG9zc2libGUgZ2VuZXJhdGVk
IHJ1bi1pbiwgdXNpbmcgcnVuLWluIHBvc2l0aW9uaW5nIHJ1bGVzLgotICAgICAgICAvLyBTa2lw
IGlubGluZXMgYW5kIGZsb2F0aW5nIC8gcG9zaXRpb25lZCBibG9ja3MsIGFuZCBwbGFjZSBhcyB0
aGUgZmlyc3QgY2hpbGQuCi0gICAgICAgIGZpcnN0ID0gY29udGFpbmVyLT5maXJzdENoaWxkKCk7
Ci0gICAgICAgIGlmICghZmlyc3QtPmlzUmVuZGVyQmxvY2soKSkKLSAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICB3aGlsZSAoZmlyc3QgJiYgZmlyc3QtPmlzRmxvYXRpbmdPclBvc2l0aW9u
ZWQoKSkKLSAgICAgICAgICAgIGZpcnN0ID0gZmlyc3QtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAg
IGlmIChmaXJzdCkgewotICAgICAgICAgICAgZmlyc3QgPSBmaXJzdC0+Zmlyc3RDaGlsZCgpOwot
ICAgICAgICAgICAgLy8gV2Ugc3RpbGwgbmVlZCB0byBza2lwIGFueSBsaXN0IG1hcmtlcnMgdGhh
dCBjb3VsZCBleGlzdCBiZWZvcmUgdGhlIHJ1bi1pbi4KLSAgICAgICAgICAgIHdoaWxlIChmaXJz
dCAmJiBmaXJzdC0+aXNMaXN0TWFya2VyKCkpCi0gICAgICAgICAgICAgICAgZmlyc3QgPSBmaXJz
dC0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIGlmIChmaXJzdCAmJiBmaXJzdC0+c3R5bGUo
KS0+c3R5bGVUeXBlKCkgPT0gdHlwZSAmJiBmaXJzdC0+aXNSZW5kZXJJbmxpbmUoKSAmJiBmaXJz
dC0+aXNSdW5JbigpICYmIGZpcnN0LT5pc0Fub255bW91cygpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBmaXJzdDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBp
ZiAodHlwZSA9PSBBRlRFUikgewotICAgICAgICBSZW5kZXJPYmplY3QqIGxhc3QgPSBjb250YWlu
ZXI7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGxhc3QgPSBsYXN0LT5sYXN0Q2hpbGQoKTsK
LSAgICAgICAgfSB3aGlsZSAobGFzdCAmJiBsYXN0LT5pc0Fub255bW91cygpICYmIGxhc3QtPnN0
eWxlKCktPnN0eWxlVHlwZSgpID09IE5PUFNFVURPICYmICFsYXN0LT5pc0xpc3RNYXJrZXIoKSk7
Ci0gICAgICAgIGlmIChsYXN0ICYmIGxhc3QtPnN0eWxlKCktPnN0eWxlVHlwZSgpICE9IHR5cGUp
Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIGxhc3Q7CisgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgY2FzZSBCRUZPUkU6CisgICAgICAgIHJldHVybiBjb250YWluZXItPmJl
Zm9yZSgpOworICAgIGNhc2UgQUZURVI6CisgICAgICAgIHJldHVybiBjb250YWluZXItPmFmdGVy
KCk7CiAgICAgfQotCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CiB9
CkBAIC0zMjUsMTQgKzI4NCw2MyBAQCBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQ291bnRlcnNJbkNv
bnRhaW5lcihSZW5kZXJPYmplY3QqIGNvbnRhaW5lciwgY29uc3QgQXRvbWljUwogICAgIH0KIH0K
IAotdm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmludmFsaWRhdGVDb3VudGVycyhSZW5kZXJP
YmplY3QqIG93bmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIpCit2b2lkIFJlbmRl
ck9iamVjdENoaWxkTGlzdDo6aW52YWxpZGF0ZUNvdW50ZXJzKGNvbnN0IFJlbmRlck9iamVjdCog
b3duZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIW93
bmVyLT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpOwotICAgIGludmFsaWRhdGVDb3VudGVyc0lu
Q29udGFpbmVyKGJlZm9yZUFmdGVyQ29udGFpbmVyKG93bmVyLCBCRUZPUkUpLCBpZGVudGlmaWVy
KTsKLSAgICBpbnZhbGlkYXRlQ291bnRlcnNJbkNvbnRhaW5lcihiZWZvcmVBZnRlckNvbnRhaW5l
cihvd25lciwgQUZURVIpLCBpZGVudGlmaWVyKTsKKyAgICBpbnZhbGlkYXRlQ291bnRlcnNJbkNv
bnRhaW5lcihiZWZvcmUob3duZXIpLCBpZGVudGlmaWVyKTsKKyAgICBpbnZhbGlkYXRlQ291bnRl
cnNJbkNvbnRhaW5lcihhZnRlcihvd25lciksIGlkZW50aWZpZXIpOworfQorCitSZW5kZXJPYmpl
Y3QqIFJlbmRlck9iamVjdENoaWxkTGlzdDo6YmVmb3JlKGNvbnN0IFJlbmRlck9iamVjdCogb3du
ZXIpIGNvbnN0Cit7CisgICAgLy8gQW4gYW5vbnltb3VzIChnZW5lcmF0ZWQpIGlubGluZSBydW4t
aW4gdGhhdCBoYXMgUHNldWRvSWQgQkVGT1JFIG11c3QgY29tZSBmcm9tIGEgZ3JhbmRwYXJlbnQu
CisgICAgLy8gVGhlcmVmb3JlIHdlIHNob3VsZCBza2lwIHRoZXNlIGdlbmVyYXRlZCBydW4taW5z
IHdoZW4gY2hlY2tpbmcgb3VyIGltbWVkaWF0ZSBjaGlsZHJlbi4KKyAgICAvLyBJZiB3ZSBkb24n
dCBmaW5kIG91ciA6YmVmb3JlIGNoaWxkIGltbWVkaWF0ZWx5LCB0aGVuIHdlIHNob3VsZCBjaGVj
ayBpZiB3ZSBvd24gYQorICAgIC8vIGdlbmVyYXRlZCBpbmxpbmUgcnVuLWluIGluIHRoZSBuZXh0
IGxldmVsIG9mIGNoaWxkcmVuLgorICAgIFJlbmRlck9iamVjdCogZmlyc3QgPSBjb25zdF9jYXN0
PFJlbmRlck9iamVjdCo+KG93bmVyKTsKKyAgICBkbyB7CisgICAgICAgIC8vIFNraXAgbGlzdCBt
YXJrZXJzIGFuZCBnZW5lcmF0ZWQgcnVuLWlucworICAgICAgICBmaXJzdCA9IGZpcnN0LT5maXJz
dENoaWxkKCk7CisgICAgICAgIHdoaWxlIChmaXJzdCAmJiAoZmlyc3QtPmlzTGlzdE1hcmtlcigp
IHx8IChmaXJzdC0+aXNSZW5kZXJJbmxpbmUoKSAmJiBmaXJzdC0+aXNSdW5JbigpICYmIGZpcnN0
LT5pc0Fub255bW91cygpKSkpCisgICAgICAgICAgICBmaXJzdCA9IGZpcnN0LT5uZXh0U2libGlu
ZygpOworICAgIH0gd2hpbGUgKGZpcnN0ICYmIGZpcnN0LT5pc0Fub255bW91cygpICYmIGZpcnN0
LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBOT1BTRVVETyk7CisKKyAgICBpZiAoIWZpcnN0KQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChmaXJzdC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkg
PT0gQkVGT1JFKQorICAgICAgICByZXR1cm4gZmlyc3Q7CisKKyAgICAvLyBDaGVjayBmb3IgYSBw
b3NzaWJsZSBnZW5lcmF0ZWQgcnVuLWluLCB1c2luZyBydW4taW4gcG9zaXRpb25pbmcgcnVsZXMu
CisgICAgLy8gU2tpcCBpbmxpbmVzIGFuZCBmbG9hdGluZyAvIHBvc2l0aW9uZWQgYmxvY2tzLCBh
bmQgcGxhY2UgYXMgdGhlIGZpcnN0IGNoaWxkLgorICAgIGZpcnN0ID0gb3duZXItPmZpcnN0Q2hp
bGQoKTsKKyAgICBpZiAoIWZpcnN0LT5pc1JlbmRlckJsb2NrKCkpCisgICAgICAgIHJldHVybiAw
OworICAgIHdoaWxlIChmaXJzdCAmJiBmaXJzdC0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKQor
ICAgICAgICBmaXJzdCA9IGZpcnN0LT5uZXh0U2libGluZygpOworICAgIGlmIChmaXJzdCkgewor
ICAgICAgICBmaXJzdCA9IGZpcnN0LT5maXJzdENoaWxkKCk7CisgICAgICAgIC8vIFdlIHN0aWxs
IG5lZWQgdG8gc2tpcCBhbnkgbGlzdCBtYXJrZXJzIHRoYXQgY291bGQgZXhpc3QgYmVmb3JlIHRo
ZSBydW4taW4uCisgICAgICAgIHdoaWxlIChmaXJzdCAmJiBmaXJzdC0+aXNMaXN0TWFya2VyKCkp
CisgICAgICAgICAgICBmaXJzdCA9IGZpcnN0LT5uZXh0U2libGluZygpOworICAgICAgICBpZiAo
Zmlyc3QgJiYgZmlyc3QtPnN0eWxlKCktPnN0eWxlVHlwZSgpID09IEJFRk9SRSAmJiBmaXJzdC0+
aXNSZW5kZXJJbmxpbmUoKSAmJiBmaXJzdC0+aXNSdW5JbigpICYmIGZpcnN0LT5pc0Fub255bW91
cygpKQorICAgICAgICAgICAgcmV0dXJuIGZpcnN0OworICAgIH0KKyAgICByZXR1cm4gMDsKK30K
KworUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmFmdGVyKGNvbnN0IFJlbmRl
ck9iamVjdCogb3duZXIpIGNvbnN0Cit7CisgICAgUmVuZGVyT2JqZWN0KiBsYXN0ID0gY29uc3Rf
Y2FzdDxSZW5kZXJPYmplY3QqPihvd25lcik7CisgICAgZG8geworICAgICAgICBsYXN0ID0gbGFz
dC0+bGFzdENoaWxkKCk7CisgICAgfSB3aGlsZSAobGFzdCAmJiBsYXN0LT5pc0Fub255bW91cygp
ICYmIGxhc3QtPnN0eWxlKCktPnN0eWxlVHlwZSgpID09IE5PUFNFVURPICYmICFsYXN0LT5pc0xp
c3RNYXJrZXIoKSk7CisgICAgaWYgKGxhc3QgJiYgbGFzdC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkg
IT0gQUZURVIpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBsYXN0OwogfQogCi12b2lk
IFJlbmRlck9iamVjdENoaWxkTGlzdDo6dXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KFJlbmRlck9i
amVjdCogb3duZXIsIFBzZXVkb0lkIHR5cGUsIFJlbmRlck9iamVjdCogc3R5bGVkT2JqZWN0KQor
dm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChSZW5k
ZXJPYmplY3QqIG93bmVyLCBQc2V1ZG9JZCB0eXBlLCBjb25zdCBSZW5kZXJPYmplY3QqIHN0eWxl
ZE9iamVjdCkKIHsKICAgICAvLyBEb3VibGUgY2hlY2sgdGhhdCB0aGUgZG9jdW1lbnQgZGlkIGlu
IGZhY3QgdXNlIGdlbmVyYXRlZCBjb250ZW50IHJ1bGVzLiAgT3RoZXJ3aXNlIHdlIHNob3VsZCBu
b3QgaGF2ZSBiZWVuIGNhbGxlZC4KICAgICBBU1NFUlQob3duZXItPmRvY3VtZW50KCktPnVzZXNC
ZWZvcmVBZnRlclJ1bGVzKCkpOwpAQCAtNDU5LDYgKzQ2Nyw4IEBAIHZvaWQgUmVuZGVyT2JqZWN0
Q2hpbGRMaXN0Ojp1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQoUmVuZGVyT2JqZWN0KiBvd25lciwg
UHNldWRvCiAgICAgICAgICAgICAgICAgLy8gTWFrZSBhIGdlbmVyYXRlZCBib3ggdGhhdCBtaWdo
dCBiZSBhbnkgZGlzcGxheSB0eXBlIG5vdyB0aGF0IHdlIGFyZSBhYmxlIHRvIGRyaWxsIGRvd24g
aW50byBjaGlsZHJlbgogICAgICAgICAgICAgICAgIC8vIHRvIGZpbmQgdGhlIG9yaWdpbmFsIGNv
bnRlbnQgcHJvcGVybHkuCiAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ29udGVudENvbnRhaW5l
ciA9IFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KG93bmVyLT5kb2N1bWVudCgpLCBwc2V1ZG9F
bGVtZW50U3R5bGUpOworICAgICAgICAgICAgICAgIEFTU0VSVChzdHlsZWRPYmplY3QtPm5vZGUo
KSk7IC8vIFRoZSBzdHlsZWQgb2JqZWN0IGNhbm5vdCBiZSBhbm9ueW1vdXMgb3IgZWxzZSBpdCBj
b3VsZCBub3QgaGF2ZSAnOmJlZm9yZScgb3IgJzphZnRlcicgcHNldWRvIGVsZW1lbnRzLgorICAg
ICAgICAgICAgICAgIGdlbmVyYXRlZENvbnRlbnRDb250YWluZXItPnNldE5vZGUoc3R5bGVkT2Jq
ZWN0LT5ub2RlKCkpOyAvLyBUaGlzIGFsbG93cyBhY2Nlc3MgdG8gdGhlIGdlbmVyYXRpbmdOb2Rl
LgogICAgICAgICAgICAgICAgIGdlbmVyYXRlZENvbnRlbnRDb250YWluZXItPnNldFN0eWxlKHBz
ZXVkb0VsZW1lbnRTdHlsZSk7CiAgICAgICAgICAgICAgICAgb3duZXItPmFkZENoaWxkKGdlbmVy
YXRlZENvbnRlbnRDb250YWluZXIsIGluc2VydEJlZm9yZSk7CiAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmgKaW5kZXgg
OGI4MGYzNy4uNGUyOTAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdENoaWxkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3RDaGlsZExpc3QuaApAQCAtNTUsOCArNTUsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
YXBwZW5kQ2hpbGROb2RlKFJlbmRlck9iamVjdCogb3duZXIsIFJlbmRlck9iamVjdCosIGJvb2wg
ZnVsbEFwcGVuZCA9IHRydWUpOwogICAgIHZvaWQgaW5zZXJ0Q2hpbGROb2RlKFJlbmRlck9iamVj
dCogb3duZXIsIFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlLCBib29s
IGZ1bGxJbnNlcnQgPSB0cnVlKTsKIAotICAgIHZvaWQgdXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50
KFJlbmRlck9iamVjdCogb3duZXIsIFBzZXVkb0lkIHR5cGUsIFJlbmRlck9iamVjdCogc3R5bGVk
T2JqZWN0ID0gMCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlQ291bnRlcnMoUmVuZGVyT2JqZWN0KiBv
d25lciwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICB2b2lkIHVwZGF0ZUJl
Zm9yZUFmdGVyQ29udGVudChSZW5kZXJPYmplY3QqIG93bmVyLCBQc2V1ZG9JZCB0eXBlLCBjb25z
dCBSZW5kZXJPYmplY3QqIHN0eWxlZE9iamVjdCA9IDApOworICAgIFJlbmRlck9iamVjdCogYmVm
b3JlKGNvbnN0IFJlbmRlck9iamVjdCogb3duZXIpIGNvbnN0OworICAgIFJlbmRlck9iamVjdCog
YWZ0ZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvd25lcikgY29uc3Q7CisgICAgdm9pZCBpbnZhbGlk
YXRlQ291bnRlcnMoY29uc3QgUmVuZGVyT2JqZWN0KiBvd25lciwgY29uc3QgQXRvbWljU3RyaW5n
JiBpZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKICAgICBSZW5kZXJPYmplY3QqIG1fZmlyc3RDaGls
ZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79956</attachid>
            <date>2011-01-24 12:23:31 -0800</date>
            <delta_ts>2011-01-26 19:22:25 -0800</delta_ts>
            <desc>Proposed Patch. Fixed chromium build issue</desc>
            <filename>patchFor53024-2.patch</filename>
            <type>text/plain</type>
            <size>10889</size>
            <attacher name="Carol Szabo">carol</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NzQ4ZjgzLi45NDhhNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTEtMDEtMjQgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvZGUgQ2hhbmdl
cyBvbmx5LgorCisgICAgICAgIEl0IGlzIG5lZWRsZXNzbHkgZXhwZW5zaXZlIHRvIGZpbmQgdGhl
IGdlbmVyYXRpbmcgbm9kZSBmcm9tIGFuIGFub255bW91cyByZW5kZXJlciBvZiBhIHBzZXVkb2Vs
ZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MzAyNAorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkK
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6YmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
YWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpnZW5lcmF0aW5nTm9kZSk6
CisgICAgICAgIEFkZGVkIG5ldyBhY2Nlc3NvcnMgZm9yIHRoZSB1c2Ugb2YgdGhlIENTUyAyLjEg
Y291bnRlcnMgY29kZQorICAgICAgICAobWFpbmx5bHkpCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdENoaWxkTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZWZvcmVBZnRlckNv
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmludmFs
aWRhdGVDb3VudGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6
OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmFmdGVy
KToKKyAgICAgICAgUmVmYWN0b3JlZCB0aGUgY29kZSB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUg
bmV3IGFjY2Vzc29ycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdENoaWxkTGlzdDo6
dXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KToKKyAgICAgICAgQ2hhbmdlZCB0byBzdG9yZSB0aGUg
Z2VuZXJhdGluZyBub2RlIGluIHRoZSA6YmVmb3JlIGFuZCA6YWZ0ZXIKKyAgICAgICAgcmVuZGVy
ZXJzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaDoKKwogMjAx
MS0wMS0xOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MgYW5kIFRvciBBcm5lIFZlc3Riw7guCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggY2YwOGEwZC4uOTgzYjU1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtMTQzLDYgKzE0MywxOCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4tPmxhc3RDaGlsZCgpOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CisgICAgUmVuZGVyT2JqZWN0KiBiZWZvcmUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4g
PSB2aXJ0dWFsQ2hpbGRyZW4oKSkKKyAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbi0+YmVmb3Jl
KHRoaXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgUmVuZGVyT2JqZWN0KiBhZnRl
cigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0
KiBjaGlsZHJlbiA9IHZpcnR1YWxDaGlsZHJlbigpKQorICAgICAgICAgICAgcmV0dXJuIGNoaWxk
cmVuLT5hZnRlcih0aGlzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSB7IHJldHVybiAwOyB9CiAg
ICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KIApAQCAtNDQ0LDYgKzQ1NiwxMSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1Jvb3RlZChSZW5kZXJWaWV3KiogPSAwKTsKIAogICAgIE5vZGUqIG5vZGUoKSBjb25z
dCB7IHJldHVybiBtX2lzQW5vbnltb3VzID8gMCA6IG1fbm9kZTsgfQorCisgICAgLy8gUmV0dXJu
cyB0aGUgc3R5bGVkIG5vZGUgdGhhdCBjYXVzZWQgdGhlIGdlbmVyYXRpb24gb2YgdGhpcyByZW5k
ZXJlci4KKyAgICAvLyBUaGlzIGlzIHRoZSBzYW1lIGFzIG5vZGUoKSBleGNlcHQgZm9yIHJlbmRl
cmVycyBvZiA6YmVmb3JlIGFuZCA6YWZ0ZXIKKyAgICAvLyBwc2V1ZG8gZWxlbWVudHMgZm9yIHdo
aWNoIHRoZWlyIHBhcmVudCBub2RlIGlzIHJldHVybmVkLgorICAgIE5vZGUqIGdlbmVyYXRpbmdO
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlID09IGRvY3VtZW50KCkgPyAwIDogbV9ub2RlOyB9
CiAgICAgdm9pZCBzZXROb2RlKE5vZGUqIG5vZGUpIHsgbV9ub2RlID0gbm9kZTsgfQogCiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5kb2N1bWVudCgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRM
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3Qu
Y3BwCmluZGV4IGZhNGY5MDIuLmIwYzdiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCkBAIC0yNDIsNTcgKzI0MiwxNyBAQCB2
b2lkIFJlbmRlck9iamVjdENoaWxkTGlzdDo6aW5zZXJ0Q2hpbGROb2RlKFJlbmRlck9iamVjdCog
b3duZXIsIFJlbmRlck9iamVjdCogYwogICAgICAgICBvd25lci0+ZG9jdW1lbnQoKS0+YXhPYmpl
Y3RDYWNoZSgpLT5jaGlsZHJlbkNoYW5nZWQob3duZXIpOwogfQogCi1zdGF0aWMgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVBZnRlckNvbnRhaW5lcihSZW5kZXJPYmplY3QqIGNvbnRhaW5lciwgUHNldWRv
SWQgdHlwZSkKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGJlZm9yZUFmdGVyQ29udGFpbmVyKGNvbnN0
IFJlbmRlck9iamVjdCogY29udGFpbmVyLCBQc2V1ZG9JZCB0eXBlKQogewotICAgIGlmICh0eXBl
ID09IEJFRk9SRSkgewotICAgICAgICAvLyBBbiBhbm9ueW1vdXMgKGdlbmVyYXRlZCkgaW5saW5l
IHJ1bi1pbiB0aGF0IGhhcyBQc2V1ZG9JZCBCRUZPUkUgbXVzdCBjb21lIGZyb20gYSBncmFuZHBh
cmVudC4KLSAgICAgICAgLy8gVGhlcmVmb3JlIHdlIHNob3VsZCBza2lwIHRoZXNlIGdlbmVyYXRl
ZCBydW4taW5zIHdoZW4gY2hlY2tpbmcgb3VyIGltbWVkaWF0ZSBjaGlsZHJlbi4KLSAgICAgICAg
Ly8gSWYgd2UgZG9uJ3QgZmluZCBvdXIgOmJlZm9yZSBjaGlsZCBpbW1lZGlhdGVseSwgdGhlbiB3
ZSBzaG91bGQgY2hlY2sgaWYgd2Ugb3duIGEKLSAgICAgICAgLy8gZ2VuZXJhdGVkIGlubGluZSBy
dW4taW4gaW4gdGhlIG5leHQgbGV2ZWwgb2YgY2hpbGRyZW4uCi0gICAgICAgIFJlbmRlck9iamVj
dCogZmlyc3QgPSBjb250YWluZXI7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIC8vIFNraXAg
bGlzdCBtYXJrZXJzIGFuZCBnZW5lcmF0ZWQgcnVuLWlucwotICAgICAgICAgICAgZmlyc3QgPSBm
aXJzdC0+Zmlyc3RDaGlsZCgpOwotICAgICAgICAgICAgd2hpbGUgKGZpcnN0ICYmIChmaXJzdC0+
aXNMaXN0TWFya2VyKCkgfHwgKGZpcnN0LT5pc1JlbmRlcklubGluZSgpICYmIGZpcnN0LT5pc1J1
bkluKCkgJiYgZmlyc3QtPmlzQW5vbnltb3VzKCkpKSkKLSAgICAgICAgICAgICAgICBmaXJzdCA9
IGZpcnN0LT5uZXh0U2libGluZygpOwotICAgICAgICB9IHdoaWxlIChmaXJzdCAmJiBmaXJzdC0+
aXNBbm9ueW1vdXMoKSAmJiBmaXJzdC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8p
OwotCi0gICAgICAgIGlmICghZmlyc3QpCi0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAg
ICBpZiAoZmlyc3QtPnN0eWxlKCktPnN0eWxlVHlwZSgpID09IHR5cGUpCi0gICAgICAgICAgICBy
ZXR1cm4gZmlyc3Q7Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIGEgcG9zc2libGUgZ2VuZXJhdGVk
IHJ1bi1pbiwgdXNpbmcgcnVuLWluIHBvc2l0aW9uaW5nIHJ1bGVzLgotICAgICAgICAvLyBTa2lw
IGlubGluZXMgYW5kIGZsb2F0aW5nIC8gcG9zaXRpb25lZCBibG9ja3MsIGFuZCBwbGFjZSBhcyB0
aGUgZmlyc3QgY2hpbGQuCi0gICAgICAgIGZpcnN0ID0gY29udGFpbmVyLT5maXJzdENoaWxkKCk7
Ci0gICAgICAgIGlmICghZmlyc3QtPmlzUmVuZGVyQmxvY2soKSkKLSAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICB3aGlsZSAoZmlyc3QgJiYgZmlyc3QtPmlzRmxvYXRpbmdPclBvc2l0aW9u
ZWQoKSkKLSAgICAgICAgICAgIGZpcnN0ID0gZmlyc3QtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAg
IGlmIChmaXJzdCkgewotICAgICAgICAgICAgZmlyc3QgPSBmaXJzdC0+Zmlyc3RDaGlsZCgpOwot
ICAgICAgICAgICAgLy8gV2Ugc3RpbGwgbmVlZCB0byBza2lwIGFueSBsaXN0IG1hcmtlcnMgdGhh
dCBjb3VsZCBleGlzdCBiZWZvcmUgdGhlIHJ1bi1pbi4KLSAgICAgICAgICAgIHdoaWxlIChmaXJz
dCAmJiBmaXJzdC0+aXNMaXN0TWFya2VyKCkpCi0gICAgICAgICAgICAgICAgZmlyc3QgPSBmaXJz
dC0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIGlmIChmaXJzdCAmJiBmaXJzdC0+c3R5bGUo
KS0+c3R5bGVUeXBlKCkgPT0gdHlwZSAmJiBmaXJzdC0+aXNSZW5kZXJJbmxpbmUoKSAmJiBmaXJz
dC0+aXNSdW5JbigpICYmIGZpcnN0LT5pc0Fub255bW91cygpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBmaXJzdDsKLSAgICAgICAgfQorICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgQkVG
T1JFOgorICAgICAgICByZXR1cm4gY29udGFpbmVyLT5iZWZvcmUoKTsKKyAgICBjYXNlIEFGVEVS
OgorICAgICAgICByZXR1cm4gY29udGFpbmVyLT5hZnRlcigpOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0KLSAg
ICBpZiAodHlwZSA9PSBBRlRFUikgewotICAgICAgICBSZW5kZXJPYmplY3QqIGxhc3QgPSBjb250
YWluZXI7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGxhc3QgPSBsYXN0LT5sYXN0Q2hpbGQo
KTsKLSAgICAgICAgfSB3aGlsZSAobGFzdCAmJiBsYXN0LT5pc0Fub255bW91cygpICYmIGxhc3Qt
PnN0eWxlKCktPnN0eWxlVHlwZSgpID09IE5PUFNFVURPICYmICFsYXN0LT5pc0xpc3RNYXJrZXIo
KSk7Ci0gICAgICAgIGlmIChsYXN0ICYmIGxhc3QtPnN0eWxlKCktPnN0eWxlVHlwZSgpICE9IHR5
cGUpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIGxhc3Q7Ci0gICAgfQot
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBS
ZW5kZXJPYmplY3QqIGZpbmRCZWZvcmVBZnRlclBhcmVudChSZW5kZXJPYmplY3QqIG9iamVjdCkK
QEAgLTMyNSwxNCArMjg1LDYzIEBAIHN0YXRpYyB2b2lkIGludmFsaWRhdGVDb3VudGVyc0luQ29u
dGFpbmVyKFJlbmRlck9iamVjdCogY29udGFpbmVyLCBjb25zdCBBdG9taWNTCiAgICAgfQogfQog
Ci12b2lkIFJlbmRlck9iamVjdENoaWxkTGlzdDo6aW52YWxpZGF0ZUNvdW50ZXJzKFJlbmRlck9i
amVjdCogb3duZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllcikKK3ZvaWQgUmVuZGVy
T2JqZWN0Q2hpbGRMaXN0OjppbnZhbGlkYXRlQ291bnRlcnMoY29uc3QgUmVuZGVyT2JqZWN0KiBv
d25lciwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghb3du
ZXItPmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSk7Ci0gICAgaW52YWxpZGF0ZUNvdW50ZXJzSW5D
b250YWluZXIoYmVmb3JlQWZ0ZXJDb250YWluZXIob3duZXIsIEJFRk9SRSksIGlkZW50aWZpZXIp
OwotICAgIGludmFsaWRhdGVDb3VudGVyc0luQ29udGFpbmVyKGJlZm9yZUFmdGVyQ29udGFpbmVy
KG93bmVyLCBBRlRFUiksIGlkZW50aWZpZXIpOworICAgIGludmFsaWRhdGVDb3VudGVyc0luQ29u
dGFpbmVyKGJlZm9yZShvd25lciksIGlkZW50aWZpZXIpOworICAgIGludmFsaWRhdGVDb3VudGVy
c0luQ29udGFpbmVyKGFmdGVyKG93bmVyKSwgaWRlbnRpZmllcik7Cit9CisKK1JlbmRlck9iamVj
dCogUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjpiZWZvcmUoY29uc3QgUmVuZGVyT2JqZWN0KiBvd25l
cikgY29uc3QKK3sKKyAgICAvLyBBbiBhbm9ueW1vdXMgKGdlbmVyYXRlZCkgaW5saW5lIHJ1bi1p
biB0aGF0IGhhcyBQc2V1ZG9JZCBCRUZPUkUgbXVzdCBjb21lIGZyb20gYSBncmFuZHBhcmVudC4K
KyAgICAvLyBUaGVyZWZvcmUgd2Ugc2hvdWxkIHNraXAgdGhlc2UgZ2VuZXJhdGVkIHJ1bi1pbnMg
d2hlbiBjaGVja2luZyBvdXIgaW1tZWRpYXRlIGNoaWxkcmVuLgorICAgIC8vIElmIHdlIGRvbid0
IGZpbmQgb3VyIDpiZWZvcmUgY2hpbGQgaW1tZWRpYXRlbHksIHRoZW4gd2Ugc2hvdWxkIGNoZWNr
IGlmIHdlIG93biBhCisgICAgLy8gZ2VuZXJhdGVkIGlubGluZSBydW4taW4gaW4gdGhlIG5leHQg
bGV2ZWwgb2YgY2hpbGRyZW4uCisgICAgUmVuZGVyT2JqZWN0KiBmaXJzdCA9IGNvbnN0X2Nhc3Q8
UmVuZGVyT2JqZWN0Kj4ob3duZXIpOworICAgIGRvIHsKKyAgICAgICAgLy8gU2tpcCBsaXN0IG1h
cmtlcnMgYW5kIGdlbmVyYXRlZCBydW4taW5zCisgICAgICAgIGZpcnN0ID0gZmlyc3QtPmZpcnN0
Q2hpbGQoKTsKKyAgICAgICAgd2hpbGUgKGZpcnN0ICYmIChmaXJzdC0+aXNMaXN0TWFya2VyKCkg
fHwgKGZpcnN0LT5pc1JlbmRlcklubGluZSgpICYmIGZpcnN0LT5pc1J1bkluKCkgJiYgZmlyc3Qt
PmlzQW5vbnltb3VzKCkpKSkKKyAgICAgICAgICAgIGZpcnN0ID0gZmlyc3QtPm5leHRTaWJsaW5n
KCk7CisgICAgfSB3aGlsZSAoZmlyc3QgJiYgZmlyc3QtPmlzQW5vbnltb3VzKCkgJiYgZmlyc3Qt
PnN0eWxlKCktPnN0eWxlVHlwZSgpID09IE5PUFNFVURPKTsKKworICAgIGlmICghZmlyc3QpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGZpcnN0LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9
PSBCRUZPUkUpCisgICAgICAgIHJldHVybiBmaXJzdDsKKworICAgIC8vIENoZWNrIGZvciBhIHBv
c3NpYmxlIGdlbmVyYXRlZCBydW4taW4sIHVzaW5nIHJ1bi1pbiBwb3NpdGlvbmluZyBydWxlcy4K
KyAgICAvLyBTa2lwIGlubGluZXMgYW5kIGZsb2F0aW5nIC8gcG9zaXRpb25lZCBibG9ja3MsIGFu
ZCBwbGFjZSBhcyB0aGUgZmlyc3QgY2hpbGQuCisgICAgZmlyc3QgPSBvd25lci0+Zmlyc3RDaGls
ZCgpOworICAgIGlmICghZmlyc3QtPmlzUmVuZGVyQmxvY2soKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgd2hpbGUgKGZpcnN0ICYmIGZpcnN0LT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpCisg
ICAgICAgIGZpcnN0ID0gZmlyc3QtPm5leHRTaWJsaW5nKCk7CisgICAgaWYgKGZpcnN0KSB7Cisg
ICAgICAgIGZpcnN0ID0gZmlyc3QtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgLy8gV2Ugc3RpbGwg
bmVlZCB0byBza2lwIGFueSBsaXN0IG1hcmtlcnMgdGhhdCBjb3VsZCBleGlzdCBiZWZvcmUgdGhl
IHJ1bi1pbi4KKyAgICAgICAgd2hpbGUgKGZpcnN0ICYmIGZpcnN0LT5pc0xpc3RNYXJrZXIoKSkK
KyAgICAgICAgICAgIGZpcnN0ID0gZmlyc3QtPm5leHRTaWJsaW5nKCk7CisgICAgICAgIGlmIChm
aXJzdCAmJiBmaXJzdC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gQkVGT1JFICYmIGZpcnN0LT5p
c1JlbmRlcklubGluZSgpICYmIGZpcnN0LT5pc1J1bkluKCkgJiYgZmlyc3QtPmlzQW5vbnltb3Vz
KCkpCisgICAgICAgICAgICByZXR1cm4gZmlyc3Q7CisgICAgfQorICAgIHJldHVybiAwOworfQor
CitSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdENoaWxkTGlzdDo6YWZ0ZXIoY29uc3QgUmVuZGVy
T2JqZWN0KiBvd25lcikgY29uc3QKK3sKKyAgICBSZW5kZXJPYmplY3QqIGxhc3QgPSBjb25zdF9j
YXN0PFJlbmRlck9iamVjdCo+KG93bmVyKTsKKyAgICBkbyB7CisgICAgICAgIGxhc3QgPSBsYXN0
LT5sYXN0Q2hpbGQoKTsKKyAgICB9IHdoaWxlIChsYXN0ICYmIGxhc3QtPmlzQW5vbnltb3VzKCkg
JiYgbGFzdC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8gJiYgIWxhc3QtPmlzTGlz
dE1hcmtlcigpKTsKKyAgICBpZiAobGFzdCAmJiBsYXN0LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSAh
PSBBRlRFUikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGxhc3Q7CiB9CiAKLXZvaWQg
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0Ojp1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQoUmVuZGVyT2Jq
ZWN0KiBvd25lciwgUHNldWRvSWQgdHlwZSwgUmVuZGVyT2JqZWN0KiBzdHlsZWRPYmplY3QpCit2
b2lkIFJlbmRlck9iamVjdENoaWxkTGlzdDo6dXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KFJlbmRl
ck9iamVjdCogb3duZXIsIFBzZXVkb0lkIHR5cGUsIGNvbnN0IFJlbmRlck9iamVjdCogc3R5bGVk
T2JqZWN0KQogewogICAgIC8vIERvdWJsZSBjaGVjayB0aGF0IHRoZSBkb2N1bWVudCBkaWQgaW4g
ZmFjdCB1c2UgZ2VuZXJhdGVkIGNvbnRlbnQgcnVsZXMuICBPdGhlcndpc2Ugd2Ugc2hvdWxkIG5v
dCBoYXZlIGJlZW4gY2FsbGVkLgogICAgIEFTU0VSVChvd25lci0+ZG9jdW1lbnQoKS0+dXNlc0Jl
Zm9yZUFmdGVyUnVsZXMoKSk7CkBAIC00NTksNiArNDY4LDggQEAgdm9pZCBSZW5kZXJPYmplY3RD
aGlsZExpc3Q6OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChSZW5kZXJPYmplY3QqIG93bmVyLCBQ
c2V1ZG8KICAgICAgICAgICAgICAgICAvLyBNYWtlIGEgZ2VuZXJhdGVkIGJveCB0aGF0IG1pZ2h0
IGJlIGFueSBkaXNwbGF5IHR5cGUgbm93IHRoYXQgd2UgYXJlIGFibGUgdG8gZHJpbGwgZG93biBp
bnRvIGNoaWxkcmVuCiAgICAgICAgICAgICAgICAgLy8gdG8gZmluZCB0aGUgb3JpZ2luYWwgY29u
dGVudCBwcm9wZXJseS4KICAgICAgICAgICAgICAgICBnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVy
ID0gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3Qob3duZXItPmRvY3VtZW50KCksIHBzZXVkb0Vs
ZW1lbnRTdHlsZSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHN0eWxlZE9iamVjdC0+bm9kZSgp
KTsgLy8gVGhlIHN0eWxlZCBvYmplY3QgY2Fubm90IGJlIGFub255bW91cyBvciBlbHNlIGl0IGNv
dWxkIG5vdCBoYXZlICc6YmVmb3JlJyBvciAnOmFmdGVyJyBwc2V1ZG8gZWxlbWVudHMuCisgICAg
ICAgICAgICAgICAgZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lci0+c2V0Tm9kZShzdHlsZWRPYmpl
Y3QtPm5vZGUoKSk7IC8vIFRoaXMgYWxsb3dzIGFjY2VzcyB0byB0aGUgZ2VuZXJhdGluZ05vZGUu
CiAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lci0+c2V0U3R5bGUocHNl
dWRvRWxlbWVudFN0eWxlKTsKICAgICAgICAgICAgICAgICBvd25lci0+YWRkQ2hpbGQoZ2VuZXJh
dGVkQ29udGVudENvbnRhaW5lciwgaW5zZXJ0QmVmb3JlKTsKICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaAppbmRleCA4
YjgwZjM3Li40ZTI5MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0Q2hpbGRMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdENoaWxkTGlzdC5oCkBAIC01NSw4ICs1NSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
cHBlbmRDaGlsZE5vZGUoUmVuZGVyT2JqZWN0KiBvd25lciwgUmVuZGVyT2JqZWN0KiwgYm9vbCBm
dWxsQXBwZW5kID0gdHJ1ZSk7CiAgICAgdm9pZCBpbnNlcnRDaGlsZE5vZGUoUmVuZGVyT2JqZWN0
KiBvd25lciwgUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmUsIGJvb2wg
ZnVsbEluc2VydCA9IHRydWUpOwogCi0gICAgdm9pZCB1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQo
UmVuZGVyT2JqZWN0KiBvd25lciwgUHNldWRvSWQgdHlwZSwgUmVuZGVyT2JqZWN0KiBzdHlsZWRP
YmplY3QgPSAwKTsKLSAgICB2b2lkIGludmFsaWRhdGVDb3VudGVycyhSZW5kZXJPYmplY3QqIG93
bmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIpOworICAgIHZvaWQgdXBkYXRlQmVm
b3JlQWZ0ZXJDb250ZW50KFJlbmRlck9iamVjdCogb3duZXIsIFBzZXVkb0lkIHR5cGUsIGNvbnN0
IFJlbmRlck9iamVjdCogc3R5bGVkT2JqZWN0ID0gMCk7CisgICAgUmVuZGVyT2JqZWN0KiBiZWZv
cmUoY29uc3QgUmVuZGVyT2JqZWN0KiBvd25lcikgY29uc3Q7CisgICAgUmVuZGVyT2JqZWN0KiBh
ZnRlcihjb25zdCBSZW5kZXJPYmplY3QqIG93bmVyKSBjb25zdDsKKyAgICB2b2lkIGludmFsaWRh
dGVDb3VudGVycyhjb25zdCBSZW5kZXJPYmplY3QqIG93bmVyLCBjb25zdCBBdG9taWNTdHJpbmcm
IGlkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIFJlbmRlck9iamVjdCogbV9maXJzdENoaWxk
Owo=
</data>
<flag name="review"
          id="71419"
          type_id="1"
          status="-"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="71420"
          type_id="3"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80288</attachid>
            <date>2011-01-26 19:22:25 -0800</date>
            <delta_ts>2011-01-31 18:36:25 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>patchFor53024-3.patch</filename>
            <type>text/plain</type>
            <size>11585</size>
            <attacher name="Carol Szabo">carol</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NzQ4ZjgzLi45NDhhNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTEtMDEtMjQgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvZGUgQ2hhbmdl
cyBvbmx5LgorCisgICAgICAgIEl0IGlzIG5lZWRsZXNzbHkgZXhwZW5zaXZlIHRvIGZpbmQgdGhl
IGdlbmVyYXRpbmcgbm9kZSBmcm9tIGFuIGFub255bW91cyByZW5kZXJlciBvZiBhIHBzZXVkb2Vs
ZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MzAyNAorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkK
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6YmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
YWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpnZW5lcmF0aW5nTm9kZSk6
CisgICAgICAgIEFkZGVkIG5ldyBhY2Nlc3NvcnMgZm9yIHRoZSB1c2Ugb2YgdGhlIENTUyAyLjEg
Y291bnRlcnMgY29kZQorICAgICAgICAobWFpbmx5bHkpCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdENoaWxkTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZWZvcmVBZnRlckNv
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmludmFs
aWRhdGVDb3VudGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6
OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmFmdGVy
KToKKyAgICAgICAgUmVmYWN0b3JlZCB0aGUgY29kZSB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUg
bmV3IGFjY2Vzc29ycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdENoaWxkTGlzdDo6
dXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KToKKyAgICAgICAgQ2hhbmdlZCB0byBzdG9yZSB0aGUg
Z2VuZXJhdGluZyBub2RlIGluIHRoZSA6YmVmb3JlIGFuZCA6YWZ0ZXIKKyAgICAgICAgcmVuZGVy
ZXJzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaDoKKwogMjAx
MS0wMS0xOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MgYW5kIFRvciBBcm5lIFZlc3Riw7guCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggY2YwOGEwZC4uOTYxYjk1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtMTQzLDYgKzE0MywxOCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4tPmxhc3RDaGlsZCgpOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CisgICAgUmVuZGVyT2JqZWN0KiBiZWZvcmVQc2V1ZG9FbGVt
ZW50UmVuZGVyZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGNvbnN0IFJlbmRlck9iamVj
dENoaWxkTGlzdCogY2hpbGRyZW4gPSB2aXJ0dWFsQ2hpbGRyZW4oKSkKKyAgICAgICAgICAgIHJl
dHVybiBjaGlsZHJlbi0+YmVmb3JlUHNldWRvRWxlbWVudFJlbmRlcmVyKHRoaXMpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisgICAgUmVuZGVyT2JqZWN0KiBhZnRlclBzZXVkb0VsZW1lbnRS
ZW5kZXJlcigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoY29uc3QgUmVuZGVyT2JqZWN0Q2hp
bGRMaXN0KiBjaGlsZHJlbiA9IHZpcnR1YWxDaGlsZHJlbigpKQorICAgICAgICAgICAgcmV0dXJu
IGNoaWxkcmVuLT5hZnRlclBzZXVkb0VsZW1lbnRSZW5kZXJlcih0aGlzKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFs
Q2hpbGRyZW4oKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RD
aGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIApAQCAtNDQ0
LDYgKzQ1NiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Jvb3RlZChSZW5kZXJWaWV3KiogPSAw
KTsKIAogICAgIE5vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzQW5vbnltb3VzID8gMCA6
IG1fbm9kZTsgfQorCisgICAgLy8gUmV0dXJucyB0aGUgc3R5bGVkIG5vZGUgdGhhdCBjYXVzZWQg
dGhlIGdlbmVyYXRpb24gb2YgdGhpcyByZW5kZXJlci4KKyAgICAvLyBUaGlzIGlzIHRoZSBzYW1l
IGFzIG5vZGUoKSBleGNlcHQgZm9yIHJlbmRlcmVycyBvZiA6YmVmb3JlIGFuZCA6YWZ0ZXIKKyAg
ICAvLyBwc2V1ZG8gZWxlbWVudHMgZm9yIHdoaWNoIHRoZWlyIHBhcmVudCBub2RlIGlzIHJldHVy
bmVkLgorICAgIE5vZGUqIGdlbmVyYXRpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlID09
IGRvY3VtZW50KCkgPyAwIDogbV9ub2RlOyB9CiAgICAgdm9pZCBzZXROb2RlKE5vZGUqIG5vZGUp
IHsgbV9ub2RlID0gbm9kZTsgfQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9ub2RlLT5kb2N1bWVudCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCmluZGV4IGZhNGY5MDIuLjMwMDM3YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3Qu
Y3BwCkBAIC0yNDIsNTkgKzI0Miw2IEBAIHZvaWQgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjppbnNl
cnRDaGlsZE5vZGUoUmVuZGVyT2JqZWN0KiBvd25lciwgUmVuZGVyT2JqZWN0KiBjCiAgICAgICAg
IG93bmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZChvd25l
cik7CiB9CiAKLXN0YXRpYyBSZW5kZXJPYmplY3QqIGJlZm9yZUFmdGVyQ29udGFpbmVyKFJlbmRl
ck9iamVjdCogY29udGFpbmVyLCBQc2V1ZG9JZCB0eXBlKQotewotICAgIGlmICh0eXBlID09IEJF
Rk9SRSkgewotICAgICAgICAvLyBBbiBhbm9ueW1vdXMgKGdlbmVyYXRlZCkgaW5saW5lIHJ1bi1p
biB0aGF0IGhhcyBQc2V1ZG9JZCBCRUZPUkUgbXVzdCBjb21lIGZyb20gYSBncmFuZHBhcmVudC4K
LSAgICAgICAgLy8gVGhlcmVmb3JlIHdlIHNob3VsZCBza2lwIHRoZXNlIGdlbmVyYXRlZCBydW4t
aW5zIHdoZW4gY2hlY2tpbmcgb3VyIGltbWVkaWF0ZSBjaGlsZHJlbi4KLSAgICAgICAgLy8gSWYg
d2UgZG9uJ3QgZmluZCBvdXIgOmJlZm9yZSBjaGlsZCBpbW1lZGlhdGVseSwgdGhlbiB3ZSBzaG91
bGQgY2hlY2sgaWYgd2Ugb3duIGEKLSAgICAgICAgLy8gZ2VuZXJhdGVkIGlubGluZSBydW4taW4g
aW4gdGhlIG5leHQgbGV2ZWwgb2YgY2hpbGRyZW4uCi0gICAgICAgIFJlbmRlck9iamVjdCogZmly
c3QgPSBjb250YWluZXI7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIC8vIFNraXAgbGlzdCBt
YXJrZXJzIGFuZCBnZW5lcmF0ZWQgcnVuLWlucwotICAgICAgICAgICAgZmlyc3QgPSBmaXJzdC0+
Zmlyc3RDaGlsZCgpOwotICAgICAgICAgICAgd2hpbGUgKGZpcnN0ICYmIChmaXJzdC0+aXNMaXN0
TWFya2VyKCkgfHwgKGZpcnN0LT5pc1JlbmRlcklubGluZSgpICYmIGZpcnN0LT5pc1J1bkluKCkg
JiYgZmlyc3QtPmlzQW5vbnltb3VzKCkpKSkKLSAgICAgICAgICAgICAgICBmaXJzdCA9IGZpcnN0
LT5uZXh0U2libGluZygpOwotICAgICAgICB9IHdoaWxlIChmaXJzdCAmJiBmaXJzdC0+aXNBbm9u
eW1vdXMoKSAmJiBmaXJzdC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8pOwotCi0g
ICAgICAgIGlmICghZmlyc3QpCi0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICBpZiAo
Zmlyc3QtPnN0eWxlKCktPnN0eWxlVHlwZSgpID09IHR5cGUpCi0gICAgICAgICAgICByZXR1cm4g
Zmlyc3Q7Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIGEgcG9zc2libGUgZ2VuZXJhdGVkIHJ1bi1p
biwgdXNpbmcgcnVuLWluIHBvc2l0aW9uaW5nIHJ1bGVzLgotICAgICAgICAvLyBTa2lwIGlubGlu
ZXMgYW5kIGZsb2F0aW5nIC8gcG9zaXRpb25lZCBibG9ja3MsIGFuZCBwbGFjZSBhcyB0aGUgZmly
c3QgY2hpbGQuCi0gICAgICAgIGZpcnN0ID0gY29udGFpbmVyLT5maXJzdENoaWxkKCk7Ci0gICAg
ICAgIGlmICghZmlyc3QtPmlzUmVuZGVyQmxvY2soKSkKLSAgICAgICAgICAgIHJldHVybiAwOwot
ICAgICAgICB3aGlsZSAoZmlyc3QgJiYgZmlyc3QtPmlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSkK
LSAgICAgICAgICAgIGZpcnN0ID0gZmlyc3QtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIGlmIChm
aXJzdCkgewotICAgICAgICAgICAgZmlyc3QgPSBmaXJzdC0+Zmlyc3RDaGlsZCgpOwotICAgICAg
ICAgICAgLy8gV2Ugc3RpbGwgbmVlZCB0byBza2lwIGFueSBsaXN0IG1hcmtlcnMgdGhhdCBjb3Vs
ZCBleGlzdCBiZWZvcmUgdGhlIHJ1bi1pbi4KLSAgICAgICAgICAgIHdoaWxlIChmaXJzdCAmJiBm
aXJzdC0+aXNMaXN0TWFya2VyKCkpCi0gICAgICAgICAgICAgICAgZmlyc3QgPSBmaXJzdC0+bmV4
dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIGlmIChmaXJzdCAmJiBmaXJzdC0+c3R5bGUoKS0+c3R5
bGVUeXBlKCkgPT0gdHlwZSAmJiBmaXJzdC0+aXNSZW5kZXJJbmxpbmUoKSAmJiBmaXJzdC0+aXNS
dW5JbigpICYmIGZpcnN0LT5pc0Fub255bW91cygpKQotICAgICAgICAgICAgICAgIHJldHVybiBm
aXJzdDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAodHlw
ZSA9PSBBRlRFUikgewotICAgICAgICBSZW5kZXJPYmplY3QqIGxhc3QgPSBjb250YWluZXI7Ci0g
ICAgICAgIGRvIHsKLSAgICAgICAgICAgIGxhc3QgPSBsYXN0LT5sYXN0Q2hpbGQoKTsKLSAgICAg
ICAgfSB3aGlsZSAobGFzdCAmJiBsYXN0LT5pc0Fub255bW91cygpICYmIGxhc3QtPnN0eWxlKCkt
PnN0eWxlVHlwZSgpID09IE5PUFNFVURPICYmICFsYXN0LT5pc0xpc3RNYXJrZXIoKSk7Ci0gICAg
ICAgIGlmIChsYXN0ICYmIGxhc3QtPnN0eWxlKCktPnN0eWxlVHlwZSgpICE9IHR5cGUpCi0gICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIGxhc3Q7Ci0gICAgfQotCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBSZW5kZXJPYmpl
Y3QqIGZpbmRCZWZvcmVBZnRlclBhcmVudChSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKICAgICAv
LyBPbmx5IHRhYmxlIHBhcnRzIG5lZWQgdG8gc2VhcmNoIGZvciB0aGUgOmJlZm9yZSBvciA6YWZ0
ZXIgcGFyZW50CkBAIC0zMjUsMTQgKzI3Miw2MyBAQCBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQ291
bnRlcnNJbkNvbnRhaW5lcihSZW5kZXJPYmplY3QqIGNvbnRhaW5lciwgY29uc3QgQXRvbWljUwog
ICAgIH0KIH0KIAotdm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmludmFsaWRhdGVDb3VudGVy
cyhSZW5kZXJPYmplY3QqIG93bmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIpCit2
b2lkIFJlbmRlck9iamVjdENoaWxkTGlzdDo6aW52YWxpZGF0ZUNvdW50ZXJzKGNvbnN0IFJlbmRl
ck9iamVjdCogb3duZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllcikKIHsKICAgICBB
U1NFUlQoIW93bmVyLT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpOwotICAgIGludmFsaWRhdGVD
b3VudGVyc0luQ29udGFpbmVyKGJlZm9yZUFmdGVyQ29udGFpbmVyKG93bmVyLCBCRUZPUkUpLCBp
ZGVudGlmaWVyKTsKLSAgICBpbnZhbGlkYXRlQ291bnRlcnNJbkNvbnRhaW5lcihiZWZvcmVBZnRl
ckNvbnRhaW5lcihvd25lciwgQUZURVIpLCBpZGVudGlmaWVyKTsKKyAgICBpbnZhbGlkYXRlQ291
bnRlcnNJbkNvbnRhaW5lcihiZWZvcmVQc2V1ZG9FbGVtZW50UmVuZGVyZXIob3duZXIpLCBpZGVu
dGlmaWVyKTsKKyAgICBpbnZhbGlkYXRlQ291bnRlcnNJbkNvbnRhaW5lcihhZnRlclBzZXVkb0Vs
ZW1lbnRSZW5kZXJlcihvd25lciksIGlkZW50aWZpZXIpOworfQorCitSZW5kZXJPYmplY3QqIFJl
bmRlck9iamVjdENoaWxkTGlzdDo6YmVmb3JlUHNldWRvRWxlbWVudFJlbmRlcmVyKGNvbnN0IFJl
bmRlck9iamVjdCogb3duZXIpIGNvbnN0Cit7CisgICAgLy8gQW4gYW5vbnltb3VzIChnZW5lcmF0
ZWQpIGlubGluZSBydW4taW4gdGhhdCBoYXMgUHNldWRvSWQgQkVGT1JFIG11c3QgY29tZSBmcm9t
IGEgZ3JhbmRwYXJlbnQuCisgICAgLy8gVGhlcmVmb3JlIHdlIHNob3VsZCBza2lwIHRoZXNlIGdl
bmVyYXRlZCBydW4taW5zIHdoZW4gY2hlY2tpbmcgb3VyIGltbWVkaWF0ZSBjaGlsZHJlbi4KKyAg
ICAvLyBJZiB3ZSBkb24ndCBmaW5kIG91ciA6YmVmb3JlIGNoaWxkIGltbWVkaWF0ZWx5LCB0aGVu
IHdlIHNob3VsZCBjaGVjayBpZiB3ZSBvd24gYQorICAgIC8vIGdlbmVyYXRlZCBpbmxpbmUgcnVu
LWluIGluIHRoZSBuZXh0IGxldmVsIG9mIGNoaWxkcmVuLgorICAgIFJlbmRlck9iamVjdCogZmly
c3QgPSBjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+KG93bmVyKTsKKyAgICBkbyB7CisgICAgICAg
IC8vIFNraXAgbGlzdCBtYXJrZXJzIGFuZCBnZW5lcmF0ZWQgcnVuLWlucworICAgICAgICBmaXJz
dCA9IGZpcnN0LT5maXJzdENoaWxkKCk7CisgICAgICAgIHdoaWxlIChmaXJzdCAmJiAoZmlyc3Qt
PmlzTGlzdE1hcmtlcigpIHx8IChmaXJzdC0+aXNSZW5kZXJJbmxpbmUoKSAmJiBmaXJzdC0+aXNS
dW5JbigpICYmIGZpcnN0LT5pc0Fub255bW91cygpKSkpCisgICAgICAgICAgICBmaXJzdCA9IGZp
cnN0LT5uZXh0U2libGluZygpOworICAgIH0gd2hpbGUgKGZpcnN0ICYmIGZpcnN0LT5pc0Fub255
bW91cygpICYmIGZpcnN0LT5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBOT1BTRVVETyk7CisKKyAg
ICBpZiAoIWZpcnN0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChmaXJzdC0+c3R5bGUo
KS0+c3R5bGVUeXBlKCkgPT0gQkVGT1JFKQorICAgICAgICByZXR1cm4gZmlyc3Q7CisKKyAgICAv
LyBDaGVjayBmb3IgYSBwb3NzaWJsZSBnZW5lcmF0ZWQgcnVuLWluLCB1c2luZyBydW4taW4gcG9z
aXRpb25pbmcgcnVsZXMuCisgICAgLy8gU2tpcCBpbmxpbmVzIGFuZCBmbG9hdGluZyAvIHBvc2l0
aW9uZWQgYmxvY2tzLCBhbmQgcGxhY2UgYXMgdGhlIGZpcnN0IGNoaWxkLgorICAgIGZpcnN0ID0g
b3duZXItPmZpcnN0Q2hpbGQoKTsKKyAgICBpZiAoIWZpcnN0LT5pc1JlbmRlckJsb2NrKCkpCisg
ICAgICAgIHJldHVybiAwOworICAgIHdoaWxlIChmaXJzdCAmJiBmaXJzdC0+aXNGbG9hdGluZ09y
UG9zaXRpb25lZCgpKQorICAgICAgICBmaXJzdCA9IGZpcnN0LT5uZXh0U2libGluZygpOworICAg
IGlmIChmaXJzdCkgeworICAgICAgICBmaXJzdCA9IGZpcnN0LT5maXJzdENoaWxkKCk7CisgICAg
ICAgIC8vIFdlIHN0aWxsIG5lZWQgdG8gc2tpcCBhbnkgbGlzdCBtYXJrZXJzIHRoYXQgY291bGQg
ZXhpc3QgYmVmb3JlIHRoZSBydW4taW4uCisgICAgICAgIHdoaWxlIChmaXJzdCAmJiBmaXJzdC0+
aXNMaXN0TWFya2VyKCkpCisgICAgICAgICAgICBmaXJzdCA9IGZpcnN0LT5uZXh0U2libGluZygp
OworICAgICAgICBpZiAoZmlyc3QgJiYgZmlyc3QtPnN0eWxlKCktPnN0eWxlVHlwZSgpID09IEJF
Rk9SRSAmJiBmaXJzdC0+aXNSZW5kZXJJbmxpbmUoKSAmJiBmaXJzdC0+aXNSdW5JbigpICYmIGZp
cnN0LT5pc0Fub255bW91cygpKQorICAgICAgICAgICAgcmV0dXJuIGZpcnN0OworICAgIH0KKyAg
ICByZXR1cm4gMDsKK30KKworUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmFm
dGVyUHNldWRvRWxlbWVudFJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogb3duZXIpIGNvbnN0
Cit7CisgICAgUmVuZGVyT2JqZWN0KiBsYXN0ID0gY29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPihv
d25lcik7CisgICAgZG8geworICAgICAgICBsYXN0ID0gbGFzdC0+bGFzdENoaWxkKCk7CisgICAg
fSB3aGlsZSAobGFzdCAmJiBsYXN0LT5pc0Fub255bW91cygpICYmIGxhc3QtPnN0eWxlKCktPnN0
eWxlVHlwZSgpID09IE5PUFNFVURPICYmICFsYXN0LT5pc0xpc3RNYXJrZXIoKSk7CisgICAgaWYg
KGxhc3QgJiYgbGFzdC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgIT0gQUZURVIpCisgICAgICAgIHJl
dHVybiAwOworICAgIHJldHVybiBsYXN0OwogfQogCi12b2lkIFJlbmRlck9iamVjdENoaWxkTGlz
dDo6dXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KFJlbmRlck9iamVjdCogb3duZXIsIFBzZXVkb0lk
IHR5cGUsIFJlbmRlck9iamVjdCogc3R5bGVkT2JqZWN0KQordm9pZCBSZW5kZXJPYmplY3RDaGls
ZExpc3Q6OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChSZW5kZXJPYmplY3QqIG93bmVyLCBQc2V1
ZG9JZCB0eXBlLCBjb25zdCBSZW5kZXJPYmplY3QqIHN0eWxlZE9iamVjdCkKIHsKICAgICAvLyBE
b3VibGUgY2hlY2sgdGhhdCB0aGUgZG9jdW1lbnQgZGlkIGluIGZhY3QgdXNlIGdlbmVyYXRlZCBj
b250ZW50IHJ1bGVzLiAgT3RoZXJ3aXNlIHdlIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZC4K
ICAgICBBU1NFUlQob3duZXItPmRvY3VtZW50KCktPnVzZXNCZWZvcmVBZnRlclJ1bGVzKCkpOwpA
QCAtMzQ1LDcgKzM0MSwxOCBAQCB2b2lkIFJlbmRlck9iamVjdENoaWxkTGlzdDo6dXBkYXRlQmVm
b3JlQWZ0ZXJDb250ZW50KFJlbmRlck9iamVjdCogb3duZXIsIFBzZXVkbwogICAgICAgICBzdHls
ZWRPYmplY3QgPSBvd25lcjsKIAogICAgIFJlbmRlclN0eWxlKiBwc2V1ZG9FbGVtZW50U3R5bGUg
PSBzdHlsZWRPYmplY3QtPmdldENhY2hlZFBzZXVkb1N0eWxlKHR5cGUpOwotICAgIFJlbmRlck9i
amVjdCogY2hpbGQgPSBiZWZvcmVBZnRlckNvbnRhaW5lcihvd25lciwgdHlwZSk7CisgICAgUmVu
ZGVyT2JqZWN0KiBjaGlsZDsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEJFRk9SRToK
KyAgICAgICAgY2hpbGQgPSBiZWZvcmVQc2V1ZG9FbGVtZW50UmVuZGVyZXIob3duZXIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFGVEVSOgorICAgICAgICBjaGlsZCA9IGFmdGVyUHNldWRv
RWxlbWVudFJlbmRlcmVyKG93bmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBjdXJyZW50bHkgaGF2ZSBnZW5lcmF0ZWQgY29udGVudCBh
dHRhY2hlZC4KICAgICBib29sIG9sZENvbnRlbnRQcmVzZW50ID0gY2hpbGQ7CkBAIC00NTksNiAr
NDY2LDggQEAgdm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnVwZGF0ZUJlZm9yZUFmdGVyQ29u
dGVudChSZW5kZXJPYmplY3QqIG93bmVyLCBQc2V1ZG8KICAgICAgICAgICAgICAgICAvLyBNYWtl
IGEgZ2VuZXJhdGVkIGJveCB0aGF0IG1pZ2h0IGJlIGFueSBkaXNwbGF5IHR5cGUgbm93IHRoYXQg
d2UgYXJlIGFibGUgdG8gZHJpbGwgZG93biBpbnRvIGNoaWxkcmVuCiAgICAgICAgICAgICAgICAg
Ly8gdG8gZmluZCB0aGUgb3JpZ2luYWwgY29udGVudCBwcm9wZXJseS4KICAgICAgICAgICAgICAg
ICBnZW5lcmF0ZWRDb250ZW50Q29udGFpbmVyID0gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3Qo
b3duZXItPmRvY3VtZW50KCksIHBzZXVkb0VsZW1lbnRTdHlsZSk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKHN0eWxlZE9iamVjdC0+bm9kZSgpKTsgLy8gVGhlIHN0eWxlZCBvYmplY3QgY2Fubm90
IGJlIGFub255bW91cyBvciBlbHNlIGl0IGNvdWxkIG5vdCBoYXZlICc6YmVmb3JlJyBvciAnOmFm
dGVyJyBwc2V1ZG8gZWxlbWVudHMuCisgICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ29udGVudENv
bnRhaW5lci0+c2V0Tm9kZShzdHlsZWRPYmplY3QtPm5vZGUoKSk7IC8vIFRoaXMgYWxsb3dzIGFj
Y2VzcyB0byB0aGUgZ2VuZXJhdGluZ05vZGUuCiAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ29u
dGVudENvbnRhaW5lci0+c2V0U3R5bGUocHNldWRvRWxlbWVudFN0eWxlKTsKICAgICAgICAgICAg
ICAgICBvd25lci0+YWRkQ2hpbGQoZ2VuZXJhdGVkQ29udGVudENvbnRhaW5lciwgaW5zZXJ0QmVm
b3JlKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3RDaGlsZExpc3QuaAppbmRleCA4YjgwZjM3Li4wODdhZGZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5oCkBAIC01NSw4ICs1
NSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRDaGlsZE5vZGUoUmVuZGVyT2JqZWN0KiBv
d25lciwgUmVuZGVyT2JqZWN0KiwgYm9vbCBmdWxsQXBwZW5kID0gdHJ1ZSk7CiAgICAgdm9pZCBp
bnNlcnRDaGlsZE5vZGUoUmVuZGVyT2JqZWN0KiBvd25lciwgUmVuZGVyT2JqZWN0KiBjaGlsZCwg
UmVuZGVyT2JqZWN0KiBiZWZvcmUsIGJvb2wgZnVsbEluc2VydCA9IHRydWUpOwogCi0gICAgdm9p
ZCB1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQoUmVuZGVyT2JqZWN0KiBvd25lciwgUHNldWRvSWQg
dHlwZSwgUmVuZGVyT2JqZWN0KiBzdHlsZWRPYmplY3QgPSAwKTsKLSAgICB2b2lkIGludmFsaWRh
dGVDb3VudGVycyhSZW5kZXJPYmplY3QqIG93bmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50
aWZpZXIpOworICAgIHZvaWQgdXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KFJlbmRlck9iamVjdCog
b3duZXIsIFBzZXVkb0lkIHR5cGUsIGNvbnN0IFJlbmRlck9iamVjdCogc3R5bGVkT2JqZWN0ID0g
MCk7CisgICAgUmVuZGVyT2JqZWN0KiBiZWZvcmVQc2V1ZG9FbGVtZW50UmVuZGVyZXIoY29uc3Qg
UmVuZGVyT2JqZWN0KiBvd25lcikgY29uc3Q7CisgICAgUmVuZGVyT2JqZWN0KiBhZnRlclBzZXVk
b0VsZW1lbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG93bmVyKSBjb25zdDsKKyAgICB2
b2lkIGludmFsaWRhdGVDb3VudGVycyhjb25zdCBSZW5kZXJPYmplY3QqIG93bmVyLCBjb25zdCBB
dG9taWNTdHJpbmcmIGlkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIFJlbmRlck9iamVjdCog
bV9maXJzdENoaWxkOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>