<?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>93874</bug_id>
          
          <creation_ts>2012-08-13 11:36:38 -0700</creation_ts>
          <short_desc>Add a was-inserted-into-tree notification to RenderObject</short_desc>
          <delta_ts>2012-08-15 19:35:49 -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>Layout and Rendering</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="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn</cc>
    
    <cc>hyatt</cc>
    
    <cc>inferno</cc>
    
    <cc>leviw</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>693880</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-08-13 11:36:38 -0700</bug_when>
    <thetext>Currently we have a situation where post-insertion tasks can be done in 2 places: in addChild or in RenderObjectChild low-level insertion methods (insertChildNode or appendChildNode).

One downside of using addChild to do post-insertion work is that:
* addChild is not guaranteed to be called due to the complex tree patching it does (generating anonymous wrappers, splitting flows, ...).
* addChild is called on the parent, never on the actual inserted child.

The low-level insertion methods have thus become a dumping ground for post-insertion tasks that should be run most of the time, leading to code duplication between the 2 methods.

Looking at the code, we could remove a lot of the complexity by adding a was-inserted-into-tree signal similar to Node::insertedInto. This would enable us to consolidate our post-insertion code in the different renderers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693995</commentid>
    <comment_count>1</comment_count>
      <attachid>158084</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-08-13 13:09:26 -0700</bug_when>
    <thetext>Created attachment 158084
Proposed change 1: Request for comment on the naming, introduce insertedIntoTree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694254</commentid>
    <comment_count>2</comment_count>
      <attachid>158084</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-13 17:23:11 -0700</bug_when>
    <thetext>Comment on attachment 158084
Proposed change 1: Request for comment on the naming, introduce insertedIntoTree.

Attachment 158084 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13493345</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695109</commentid>
    <comment_count>3</comment_count>
      <attachid>158361</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-08-14 10:18:32 -0700</bug_when>
    <thetext>Created attachment 158361
Proposed change 2: Fixed the Windows build by exposing enclosingRenderNamedFlowThread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695241</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-14 12:23:37 -0700</bug_when>
    <thetext>My largest concern when reviewing this will be that there is some nod to the perf implications of this change.  Some microbenchmark which adds/removes a bunch of renderers would help show that this added virtual method is not a huge perf hit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695242</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-14 12:24:54 -0700</bug_when>
    <thetext>I suspect you don&apos;t necessarily need to write a new microbenchmark, one of the ones in PerformanceTests or dglazkov&apos;s performance-tests is likely to do a bunch of renderer addition/removal.  I expect one of them is to slow down with this, the question is how much, and how much we believe it to be representative of more common scenarios.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695644</commentid>
    <comment_count>6</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-08-14 18:50:02 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; My largest concern when reviewing this will be that there is some nod to the perf implications of this change.  Some microbenchmark which adds/removes a bunch of renderers would help show that this added virtual method is not a huge perf hit.

Unless I am missing something, this change removes one virtual function call from the common path as it replaces the calls to isListItem() and isRenderRegion() (both virtuals) with one call to insertedIntoTree. For RenderListItem and RenderRegion, my guess would be that it&apos;s also 1 virtual function call as the compiler knows the parent function to call.

Doing some archeology, we used to have one more call there due to RenderQuote. Also the patch adding the isRenderRegion call (bug 66142) didn&apos;t seem to raise any performance comment. This only gives circumstantial evidence that it&apos;s not hot or that we have no perf coverage though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695704</commentid>
    <comment_count>7</comment_count>
      <attachid>158361</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-08-14 20:36:09 -0700</bug_when>
    <thetext>Comment on attachment 158361
Proposed change 2: Fixed the Windows build by exposing enclosingRenderNamedFlowThread.

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

&gt; Source/WebCore/rendering/RenderObject.cpp:2367
&gt; +{

We should ASSERT(isRooted()) here and then fix all the bugs where we insert into detached subtrees (I know generated content is one of them).

&gt; Source/WebCore/rendering/RenderQuote.cpp:57
&gt; +    // renderers before going into the main render tree.

This issue is fixed once we can ASSERT(isRooted())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696462</commentid>
    <comment_count>8</comment_count>
      <attachid>158361</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-15 16:07:09 -0700</bug_when>
    <thetext>Comment on attachment 158361
Proposed change 2: Fixed the Windows build by exposing enclosingRenderNamedFlowThread.

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

LGTM.

&gt; Source/WebCore/rendering/RenderQuote.cpp:53
&gt; +void RenderQuote::insertedIntoTree()

It seems we can remove this, no?  This just needs to be a comment, not an implementation.

&gt; Source/WebCore/rendering/RenderQuote.h:47
&gt; +    virtual void insertedIntoTree() OVERRIDE;

Please remove. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696592</commentid>
    <comment_count>9</comment_count>
      <attachid>158679</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-08-15 18:30:12 -0700</bug_when>
    <thetext>Created attachment 158679
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696595</commentid>
    <comment_count>10</comment_count>
      <attachid>158361</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-08-15 18:31:54 -0700</bug_when>
    <thetext>Comment on attachment 158361
Proposed change 2: Fixed the Windows build by exposing enclosingRenderNamedFlowThread.

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

&gt;&gt; Source/WebCore/rendering/RenderObject.cpp:2367
&gt;&gt; +{
&gt; 
&gt; We should ASSERT(isRooted()) here and then fix all the bugs where we insert into detached subtrees (I know generated content is one of them).

Added a FIXME to track enabling this (super useful) ASSERT.

&gt;&gt; Source/WebCore/rendering/RenderQuote.h:47
&gt;&gt; +    virtual void insertedIntoTree() OVERRIDE;
&gt; 
&gt; Please remove. :)

Removed and put the comment here instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696656</commentid>
    <comment_count>11</comment_count>
      <attachid>158679</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-15 19:35:45 -0700</bug_when>
    <thetext>Comment on attachment 158679
Patch for landing

Clearing flags on attachment: 158679

Committed r125737: &lt;http://trac.webkit.org/changeset/125737&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696657</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-15 19:35:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158084</attachid>
            <date>2012-08-13 13:09:26 -0700</date>
            <delta_ts>2012-08-14 10:18:29 -0700</delta_ts>
            <desc>Proposed change 1: Request for comment on the naming, introduce insertedIntoTree.</desc>
            <filename>bug-93874-20120813130855.patch</filename>
            <type>text/plain</type>
            <size>12950</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y3MmY2MTIwNzU1ZWFj
Y2EyMzRlODczM2ZhMmJhZWVhMzVkNzM1Ni4uZjM5YWJlZTk4MGIxYWI5ZThlZTMyMjZhMWViMGI3
ZjhiNDFiZjI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA4LTEzICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhIHdh
cy1pbnNlcnRlZC1pbnRvLXRyZWUgc2lnbmFsIHRvIFJlbmRlck9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4NzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZXMgYWRkcyBpbnNl
cnRlZEludG9UcmVlIHRvIFJlbmRlck9iamVjdCBzbyB0aGF0IHJlbmRlcmVycworICAgICAgICBj
YW4gbm93IGRvIHRoZWlyIHBvc3QtaW5zZXJ0aW9uIHRhc2sgaW5zaWRlIHRoaXMgZnVuY3Rpb24u
CisKKyAgICAgICAgT3VyIGN1cnJlbnQgYXJjaGl0ZWN0dXJlIGhhcyAyIHdheXMgb2YgZG9pbmcg
cG9zdC1pbnNlcnRpb24gdGFza3M6CisgICAgICAgIC0gb3ZlcnJpZGluZyBSZW5kZXJPYmplY3Q6
OmFkZENoaWxkCisgICAgICAgIC0gUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjppbnNlcnRDaGlsZE5v
ZGUgLyBhcHBlbmRDaGlsZE5vZGUKKworICAgICAgICBCZWNhdXNlIHRoZSBmb3JtZXIgaXMgbm90
IGd1YXJhbnRlZWQgdG8gYmUgY2FsbGVkIGZvciBlYWNoIGluc2VydGlvbgorICAgICAgICAob24g
dG9wIG9mIGJlaW5nIGNhbGxlZCBvbiB0aGUgcGFyZW50IGFuZCBub3QgdGhlIGluc2VydGVkIGNo
aWxkKSwgdGhlCisgICAgICAgIDIgbGF0dGVyIGZ1bmN0aW9ucyBhcmUgdGhlIG9uZSB0aGF0IGhh
dmUgYmVlbiBtb3N0bHkgdXNlZCByZWNlbnRseS4gVGhpcworICAgICAgICBsZWQgdG8gY29kZSBk
dXBsaWNhdGlvbiBiZXR3ZWVuIHRoZSBmdW5jdGlvbnMgYnV0IGFsc28gZG9lc24ndCBzY2FsZSBh
cworICAgICAgICBvdGhlciByZW5kZXJlcnMgbmVlZCB0byBob3Agb24gdGhpcyBzaWduYWwgYW5k
IGN1cnJlbnRseSBkb24ndC4gVGhlCisgICAgICAgIG90aGVyIHJlbmRlcmVyJ3MgbWlncmF0aW9u
IHdpbGwgYmUgZG9uZSBpbiBmb2xsb3ctdXAgcGF0Y2hlcy4KKworICAgICAgICBSZWZhY3Rvcmlu
ZyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdENoaWxkTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGls
ZExpc3Q6OmFwcGVuZENoaWxkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RD
aGlsZExpc3Q6Omluc2VydENoaWxkTm9kZSk6CisgICAgICAgIE1vdmVkIHRoZSBjb2RlIGR1cGxp
Y2F0ZWQgZnJvbSB0aG9zZSAyIGZ1bmN0aW9ucyBpbnRvCisgICAgICAgIHRoZSBpbnN0YW5jZXMg
b2YgaW5zZXJ0ZWRJbnRvVHJlZSBiZWxvdy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyTmFtZWRGbG93VGhyZWFkQ29udGFp
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aW5zZXJ0ZWRJbnRvVHJlZSk6
CisgICAgICAgIEJhc2UgZnVuY3Rpb24gdGhhdCBuZWVkcyB0byBiZSBjYWxsZWQgZnJvbSBhbGwg
dGhlIG90aGVyCisgICAgICAgIHNwZWNpYWxpemVkIGZ1bmN0aW9ucyBiZWxvdy4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0SXRlbTo6aW5zZXJ0ZWRJbnRvVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxpc3RJdGVtLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJR
dW90ZTo6aW5zZXJ0ZWRJbnRvVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3Rl
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJSZWdpb246Omluc2VydGVkSW50b1RyZWUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJSZWdpb24uaDoKKyAgICAgICAgQWRkZWQgdGhlIG92ZXJyaWRlbiBpbnNlcnRlZElu
dG9UcmVlIGZ1bmN0aW9uLgorCiAyMDEyLTA4LTEzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBtZW1vcnkgaW5zdHJ1
bWVudGF0aW9uIGZvciBBdHRyaWJ1dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEl0ZW0uY3BwCmluZGV4IDJmN2ZmNmUzMjRlOWViMDRlMGQ0MWZhOWRlMGUzYTU3NDdkYzFh
NDQuLmY2OGQwODEyMjVjNjlhNGIyN2ZkM2ZjODZjM2M2NTU1YjEyNmVmYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcApAQCAtNzYsNiArNzYsMTMgQEAg
dm9pZCBSZW5kZXJMaXN0SXRlbTo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBSZW5kZXJCbG9jazo6
d2lsbEJlRGVzdHJveWVkKCk7CiB9CiAKK3ZvaWQgUmVuZGVyTGlzdEl0ZW06Omluc2VydGVkSW50
b1RyZWUoKQoreworICAgIFJlbmRlckJsb2NrOjppbnNlcnRlZEludG9UcmVlKCk7CisKKyAgICB1
cGRhdGVMaXN0TWFya2VyTnVtYmVycygpOworfQorCiBzdGF0aWMgYm9vbCBpc0xpc3QoTm9kZSog
bm9kZSkKIHsKICAgICByZXR1cm4gKG5vZGUtPmhhc1RhZ05hbWUodWxUYWcpIHx8IG5vZGUtPmhh
c1RhZ05hbWUob2xUYWcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVt
LmgKaW5kZXggM2MwYWYyZjY1ZmNlYjI0NzgzZDhkN2I3ZGQ4NGQ4NGIwM2ExMTUwMC4uYTFlZGEy
MTUzN2FmNWZjOTgyM2YyMzAyNmM3OWEyYzE1NTI0MTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKQEAgLTU4LDYgKzU4LDggQEAgcHJpdmF0ZToKICAgICAK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQg
aW5zZXJ0ZWRJbnRvVHJlZSgpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCBib29sIGlzRW1wdHko
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UG9pbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRl
eCBiNWY2OTU3NWFlM2E0NGM5YWFiNWE3NjFjZDBkNTcwZjZlYzE0MTg1Li5mN2JiZDY3YjJhZTRj
ZGY2NTJhYzliYmY1MDg0OTgzYWE5NGNjZGZiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcApAQCAtMjM1NCw2ICsyMzU0LDQzIEBAIHZvaWQgUmVuZGVyT2JqZWN0
Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAgIGNsZWFyTGF5b3V0Um9vdElmTmVlZGVkKCk7CiB9CiAK
Ky8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIGR1cGxpY2F0ZWQgZnJvbSBSZW5kZXJPYmplY3RD
aGlsZExpc3QuIEl0IHNob3VsZCBiZSByZW1vdmVkCisvLyBvbmNlIGEgd2lsbC1iZS1yZW1vdmVk
LWZyb20tdHJlZSBzaWduYWwgaXMgaW1wbGVtZW50ZWQuCitzdGF0aWMgUmVuZGVyTmFtZWRGbG93
VGhyZWFkKiByZW5kZXJOYW1lZEZsb3dUaHJlYWRDb250YWluZXIoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QpCit7CisgICAgd2hpbGUgKG9iamVjdCAmJiBvYmplY3QtPmlzQW5vbnltb3VzQmxvY2soKSAm
JiAhb2JqZWN0LT5pc1JlbmRlck5hbWVkRmxvd1RocmVhZCgpKQorICAgICAgICBvYmplY3QgPSBv
YmplY3QtPnBhcmVudCgpOworCisgICAgcmV0dXJuIG9iamVjdCAmJiBvYmplY3QtPmlzUmVuZGVy
TmFtZWRGbG93VGhyZWFkKCkgPyB0b1JlbmRlck5hbWVkRmxvd1RocmVhZChvYmplY3QpIDogMDsK
K30KKwordm9pZCBSZW5kZXJPYmplY3Q6Omluc2VydGVkSW50b1RyZWUoKQoreworICAgIC8vIEtl
ZXAgb3VyIGxheWVyIGhpZXJhcmNoeSB1cGRhdGVkLiBPcHRpbWl6ZSBmb3IgdGhlIGNvbW1vbiBj
YXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuCisgICAgLy8gYW5kIGRvbid0IGhh
dmUgYSBsYXllciBhdHRhY2hlZCB0byBvdXJzZWx2ZXMuCisgICAgUmVuZGVyTGF5ZXIqIGxheWVy
ID0gMDsKKyAgICBpZiAoZmlyc3RDaGlsZCgpIHx8IGhhc0xheWVyKCkpIHsKKyAgICAgICAgbGF5
ZXIgPSBwYXJlbnQoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKKyAgICAgICAgYWRkTGF5ZXJzKGxheWVy
KTsKKyAgICB9CisKKyAgICAvLyBJZiB8dGhpc3wgaXMgdmlzaWJsZSBidXQgdGhpcyBvYmplY3Qg
d2FzIG5vdCwgdGVsbCB0aGUgbGF5ZXIgaXQgaGFzIHNvbWUgdmlzaWJsZSBjb250ZW50CisgICAg
Ly8gdGhhdCBuZWVkcyB0byBiZSBkcmF3biBhbmQgbGF5ZXIgdmlzaWJpbGl0eSBvcHRpbWl6YXRp
b24gY2FuJ3QgYmUgdXNlZAorICAgIGlmIChwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUgJiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgIWhhc0xh
eWVyKCkpIHsKKyAgICAgICAgaWYgKCFsYXllcikKKyAgICAgICAgICAgIGxheWVyID0gcGFyZW50
KCktPmVuY2xvc2luZ0xheWVyKCk7CisgICAgICAgIGlmIChsYXllcikKKyAgICAgICAgICAgIGxh
eWVyLT5zZXRIYXNWaXNpYmxlQ29udGVudCgpOworICAgIH0KKworICAgIGlmICghaXNGbG9hdGlu
ZygpICYmIHBhcmVudCgpLT5jaGlsZHJlbklubGluZSgpKQorICAgICAgICBwYXJlbnQoKS0+ZGly
dHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQodGhpcyk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
bid0IHdhbGsgdGhlIHJlbmRlciB0cmVlIGlmIHdlIGRvbid0IGhhdmUgYW55IG5hbWVkIGZsb3cu
CisgICAgaWYgKFJlbmRlck5hbWVkRmxvd1RocmVhZCogY29udGFpbmVyRmxvd1RocmVhZCA9IHJl
bmRlck5hbWVkRmxvd1RocmVhZENvbnRhaW5lcihwYXJlbnQoKSkpCisgICAgICAgIGNvbnRhaW5l
ckZsb3dUaHJlYWQtPmFkZEZsb3dDaGlsZCh0aGlzKTsKK30KKwogdm9pZCBSZW5kZXJPYmplY3Q6
OmRlc3Ryb3lBbmRDbGVhbnVwQW5vbnltb3VzV3JhcHBlcnMoKQogewogICAgIFJlbmRlck9iamVj
dCogcGFyZW50ID0gdGhpcy0+cGFyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKaW5kZXggNWVmOTBmYzBlMTI1ODExMTE1Y2I1NDRlN2YwOTc4ODhjM2NiZWM5OS4u
YTEzNGE2MDI5YjU0MDlkZmJjODAzYWM2NTA2YjA2ODliNjgwZmJkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtOTM0LDYgKzkzNCw4IEBAIHByb3RlY3RlZDoK
IAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVJlcGxhY2VkV2l0aElubGluZVJ1bkluKCkgY29uc3Q7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZSgpOworCiBwcml2YXRlOgogICAg
IFJlbmRlclN0eWxlKiBmaXJzdExpbmVTdHlsZVNsb3dDYXNlKCkgY29uc3Q7CiAgICAgU3R5bGVE
aWZmZXJlbmNlIGFkanVzdFN0eWxlRGlmZmVyZW5jZShTdHlsZURpZmZlcmVuY2UsIHVuc2lnbmVk
IGNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAKaW5kZXggMzE1OGZiZmI2OTlk
ZGNiZmFjMGZmMjkyMmIzYzM4MjhlNzE5ZmZhYy4uMGRkMWRhNTY5OGIzMTczNDc1Nzg1YWIyZTU0
NDI0MmRmYjBhZWI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdENoaWxkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdENoaWxkTGlzdC5jcHAKQEAgLTE4NSw0MCArMTg1LDggQEAgdm9pZCBSZW5kZXJPYmpl
Y3RDaGlsZExpc3Q6OmFwcGVuZENoaWxkTm9kZShSZW5kZXJPYmplY3QqIG93bmVyLCBSZW5kZXJP
YmplY3QqIG4KIAogICAgIHNldExhc3RDaGlsZChuZXdDaGlsZCk7CiAgICAgCi0gICAgaWYgKGZ1
bGxBcHBlbmQpIHsKLSAgICAgICAgLy8gS2VlcCBvdXIgbGF5ZXIgaGllcmFyY2h5IHVwZGF0ZWQu
ICBPcHRpbWl6ZSBmb3IgdGhlIGNvbW1vbiBjYXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgYW55IGNo
aWxkcmVuCi0gICAgICAgIC8vIGFuZCBkb24ndCBoYXZlIGEgbGF5ZXIgYXR0YWNoZWQgdG8gb3Vy
c2VsdmVzLgotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSAwOwotICAgICAgICBpZiAobmV3
Q2hpbGQtPmZpcnN0Q2hpbGQoKSB8fCBuZXdDaGlsZC0+aGFzTGF5ZXIoKSkgewotICAgICAgICAg
ICAgbGF5ZXIgPSBvd25lci0+ZW5jbG9zaW5nTGF5ZXIoKTsKLSAgICAgICAgICAgIG5ld0NoaWxk
LT5hZGRMYXllcnMobGF5ZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gaWYgdGhlIG5ldyBj
aGlsZCBpcyB2aXNpYmxlIGJ1dCB0aGlzIG9iamVjdCB3YXMgbm90LCB0ZWxsIHRoZSBsYXllciBp
dCBoYXMgc29tZSB2aXNpYmxlIGNvbnRlbnQKLSAgICAgICAgLy8gdGhhdCBuZWVkcyB0byBiZSBk
cmF3biBhbmQgbGF5ZXIgdmlzaWJpbGl0eSBvcHRpbWl6YXRpb24gY2FuJ3QgYmUgdXNlZAotICAg
ICAgICBpZiAob3duZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmIG5ld0No
aWxkLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiAhbmV3Q2hpbGQtPmhhc0xh
eWVyKCkpIHsKLSAgICAgICAgICAgIGlmICghbGF5ZXIpCi0gICAgICAgICAgICAgICAgbGF5ZXIg
PSBvd25lci0+ZW5jbG9zaW5nTGF5ZXIoKTsKLSAgICAgICAgICAgIGlmIChsYXllcikKLSAgICAg
ICAgICAgICAgICBsYXllci0+c2V0SGFzVmlzaWJsZUNvbnRlbnQoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChuZXdDaGlsZC0+aXNMaXN0SXRlbSgpKQotICAgICAgICAgICAgdG9SZW5kZXJM
aXN0SXRlbShuZXdDaGlsZCktPnVwZGF0ZUxpc3RNYXJrZXJOdW1iZXJzKCk7Ci0KLSAgICAgICAg
aWYgKCFuZXdDaGlsZC0+aXNGbG9hdGluZygpICYmIG93bmVyLT5jaGlsZHJlbklubGluZSgpKQot
ICAgICAgICAgICAgb3duZXItPmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKG5ld0NoaWxkKTsK
LQotICAgICAgICBpZiAobmV3Q2hpbGQtPmlzUmVuZGVyUmVnaW9uKCkpCi0gICAgICAgICAgICB0
b1JlbmRlclJlZ2lvbihuZXdDaGlsZCktPmF0dGFjaFJlZ2lvbigpOwotCi0gICAgICAgIC8vIFlv
dSBjYW4ndCBhdHRhY2hRdW90ZSgpIG90aGVyd2lzZSB0aGUgcXVvdGUgd291bGQgYmUgYXR0YWNo
ZWQgdG9vIGVhcmx5Ci0gICAgICAgIC8vIGFuZCBnZXQgdGhlIHdyb25nIGRlcHRoIHNpbmNlIGdl
bmVyYXRlZCBjb250ZW50IGlzIGluc2VydGVkIGludG8gYW5vbnltb3VzCi0gICAgICAgIC8vIHJl
bmRlcmVycyBiZWZvcmUgZ29pbmcgaW50byB0aGUgbWFpbiByZW5kZXIgdHJlZS4KLQotICAgICAg
ICBpZiAoUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBjb250YWluZXJGbG93VGhyZWFkID0gcmVuZGVy
TmFtZWRGbG93VGhyZWFkQ29udGFpbmVyKG93bmVyKSkKLSAgICAgICAgICAgIGNvbnRhaW5lckZs
b3dUaHJlYWQtPmFkZEZsb3dDaGlsZChuZXdDaGlsZCk7Ci0gICAgfQorICAgIGlmIChmdWxsQXBw
ZW5kKQorICAgICAgICBuZXdDaGlsZC0+aW5zZXJ0ZWRJbnRvVHJlZSgpOwogCiAgICAgaWYgKCFv
d25lci0+ZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKSB7CiAgICAgICAgIFJlbmRlckNvdW50ZXI6
OnJlbmRlcmVyU3VidHJlZUF0dGFjaGVkKG5ld0NoaWxkKTsKQEAgLTI1NywzOSArMjI1LDggQEAg
dm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6Omluc2VydENoaWxkTm9kZShSZW5kZXJPYmplY3Qq
IG93bmVyLCBSZW5kZXJPYmplY3QqIGMKIAogICAgIGNoaWxkLT5zZXRQYXJlbnQob3duZXIpOwog
ICAgIAotICAgIGlmIChmdWxsSW5zZXJ0KSB7Ci0gICAgICAgIC8vIEtlZXAgb3VyIGxheWVyIGhp
ZXJhcmNoeSB1cGRhdGVkLiAgT3B0aW1pemUgZm9yIHRoZSBjb21tb24gY2FzZSB3aGVyZSB3ZSBk
b24ndCBoYXZlIGFueSBjaGlsZHJlbgotICAgICAgICAvLyBhbmQgZG9uJ3QgaGF2ZSBhIGxheWVy
IGF0dGFjaGVkIHRvIG91cnNlbHZlcy4KLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gMDsK
LSAgICAgICAgaWYgKGNoaWxkLT5maXJzdENoaWxkKCkgfHwgY2hpbGQtPmhhc0xheWVyKCkpIHsK
LSAgICAgICAgICAgIGxheWVyID0gb3duZXItPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgICAgICAg
ICBjaGlsZC0+YWRkTGF5ZXJzKGxheWVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGlmIHRo
ZSBuZXcgY2hpbGQgaXMgdmlzaWJsZSBidXQgdGhpcyBvYmplY3Qgd2FzIG5vdCwgdGVsbCB0aGUg
bGF5ZXIgaXQgaGFzIHNvbWUgdmlzaWJsZSBjb250ZW50Ci0gICAgICAgIC8vIHRoYXQgbmVlZHMg
dG8gYmUgZHJhd24gYW5kIGxheWVyIHZpc2liaWxpdHkgb3B0aW1pemF0aW9uIGNhbid0IGJlIHVz
ZWQKLSAgICAgICAgaWYgKG93bmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAm
JiBjaGlsZC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgIWNoaWxkLT5oYXNM
YXllcigpKSB7Ci0gICAgICAgICAgICBpZiAoIWxheWVyKQotICAgICAgICAgICAgICAgIGxheWVy
ID0gb3duZXItPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgICAgICAgICBpZiAobGF5ZXIpCi0gICAg
ICAgICAgICAgICAgbGF5ZXItPnNldEhhc1Zpc2libGVDb250ZW50KCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoY2hpbGQtPmlzTGlzdEl0ZW0oKSkKLSAgICAgICAgICAgIHRvUmVuZGVyTGlz
dEl0ZW0oY2hpbGQpLT51cGRhdGVMaXN0TWFya2VyTnVtYmVycygpOwotCi0gICAgICAgIGlmICgh
Y2hpbGQtPmlzRmxvYXRpbmcoKSAmJiBvd25lci0+Y2hpbGRyZW5JbmxpbmUoKSkKLSAgICAgICAg
ICAgIG93bmVyLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChjaGlsZCk7Ci0KLSAgICAgICAg
aWYgKGNoaWxkLT5pc1JlbmRlclJlZ2lvbigpKQotICAgICAgICAgICAgdG9SZW5kZXJSZWdpb24o
Y2hpbGQpLT5hdHRhY2hSZWdpb24oKTsKLQotICAgICAgICAvLyBDYWxsaW5nIGF0dGFjaFF1b3Rl
KCkgaGVyZSB3b3VsZCBiZSB0b28gZWFybHkgKGJlZm9yZSBhbm9ueW1vdXMgcmVuZGVyZXJzIGFy
ZSBpbnNlcnRlZCkKLSAgICAgICAgLy8gc2VlIGFwcGVuZENoaWxkKCkgZm9yIG1vcmUgZXhwbGFu
YXRpb24uCi0KLSAgICAgICAgaWYgKFJlbmRlck5hbWVkRmxvd1RocmVhZCogY29udGFpbmVyRmxv
d1RocmVhZCA9IHJlbmRlck5hbWVkRmxvd1RocmVhZENvbnRhaW5lcihvd25lcikpCi0gICAgICAg
ICAgICBjb250YWluZXJGbG93VGhyZWFkLT5hZGRGbG93Q2hpbGQoY2hpbGQsIGJlZm9yZUNoaWxk
KTsKLSAgICB9CisgICAgaWYgKGZ1bGxJbnNlcnQpCisgICAgICAgIGNoaWxkLT5pbnNlcnRlZElu
dG9UcmVlKCk7CiAKICAgICBpZiAoIW93bmVyLT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpIHsK
ICAgICAgICAgUmVuZGVyQ291bnRlcjo6cmVuZGVyZXJTdWJ0cmVlQXR0YWNoZWQoY2hpbGQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAKaW5kZXggZTE3YTA0NGE0NDk2
ZTNjMDZmYjliMDQ0OTJiMjI0NDE1M2ZiZGI1MC4uNDE1NTNmN2I5NTY2MTMyMGZiYjI2MzM0Mzcx
N2MyZWExMWYzOTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clF1b3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3Bw
CkBAIC00OSw2ICs0OSwxNSBAQCB2b2lkIFJlbmRlclF1b3RlOjp3aWxsQmVEZXN0cm95ZWQoKQog
ICAgIFJlbmRlclRleHQ6OndpbGxCZURlc3Ryb3llZCgpOwogfQogCit2b2lkIFJlbmRlclF1b3Rl
OjppbnNlcnRlZEludG9UcmVlKCkKK3sKKyAgICAvLyBZb3UgY2FuJ3QgY2FsbCBhdHRhY2hRdW90
ZSgpIG90aGVyd2lzZSB0aGUgcXVvdGUgd291bGQgYmUgYXR0YWNoZWQgdG9vIGVhcmx5CisgICAg
Ly8gYW5kIGdldCB0aGUgd3JvbmcgZGVwdGggc2luY2UgZ2VuZXJhdGVkIGNvbnRlbnQgaXMgaW5z
ZXJ0ZWQgaW50byBhbm9ueW1vdXMKKyAgICAvLyByZW5kZXJlcnMgYmVmb3JlIGdvaW5nIGludG8g
dGhlIG1haW4gcmVuZGVyIHRyZWUuCisKKyAgICBSZW5kZXJUZXh0OjppbnNlcnRlZEludG9UcmVl
KCk7Cit9CisKIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIGNvbnN0IFF1b3Rlc0RhdGEq
LCBDYXNlRm9sZGluZ0hhc2g+IFF1b3Rlc01hcDsKIAogc3RhdGljIGNvbnN0IFF1b3Rlc01hcCYg
cXVvdGVzRGF0YUxhbmd1YWdlTWFwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJRdW90ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3Rl
LmgKaW5kZXggY2Y3MDMyY2E3NDEzYjllNDNjMmYxZGUyYmI2MDRiMDRkMGM5ODk2Ni4uYjI1NGY3
YjM3ZTljN2JiMTQ0ODdmNWQ3MTljNGY2ODQ2ZTBmOTRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclF1b3RlLmgKQEAgLTQzLDYgKzQzLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gb3JpZ2luYWxUZXh0KCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRX
aWR0aCkgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZSgpIE9W
RVJSSURFOworCiAgICAgY29uc3QgUXVvdGVzRGF0YSogcXVvdGVzRGF0YSgpIGNvbnN0OwogICAg
IHZvaWQgdXBkYXRlRGVwdGgoKTsKICAgICBib29sIGlzQXR0YWNoZWQoKSB7IHJldHVybiBtX2F0
dGFjaGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCmluZGV4
IDA2ODJhYzkyMjQ3OTFhMTM2Yzk2NTU4MDQ0ZGU2MDAzMzcwMDQ5MmIuLmMyYjUwY2JkZDNmYTk2
ZWVjYzRhZDBiMTdhOGUwYzQ4ODBiMzY3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZWdpb24uY3BwCkBAIC0zNTcsNiArMzU3LDEzIEBAIHZvaWQgUmVuZGVyUmVnaW9uOjpy
ZXN0b3JlUmVnaW9uT2JqZWN0c09yaWdpbmFsU3R5bGUoKQogICAgIG1fcmVuZGVyT2JqZWN0UmVn
aW9uU3R5bGUuc3dhcCh0ZW1wKTsKIH0KIAordm9pZCBSZW5kZXJSZWdpb246Omluc2VydGVkSW50
b1RyZWUoKQoreworICAgIFJlbmRlclJlcGxhY2VkOjppbnNlcnRlZEludG9UcmVlKCk7CisKKyAg
ICBhdHRhY2hSZWdpb24oKTsKK30KKwogUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyUmVn
aW9uOjpjb21wdXRlU3R5bGVJblJlZ2lvbihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsK
ICAgICBBU1NFUlQob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
aAppbmRleCA2MDkzYTljMDMwZjNlZWNjMWRjZTQyZjQ4MGIxN2Q2ZTMyOTYwYjI1Li4wODE3ZDQ4
MmMwNWI0YmJkZTQ4MDBlNmFhMTIyYjUxOTVjMmVhNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlZ2lvbi5oCkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVu
ZGVyUmVnaW9uIjsgfQogCisgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b1RyZWUoKSBPVkVS
UklERTsKKwogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNvbXB1dGVTdHlsZUluUmVnaW9u
KGNvbnN0IFJlbmRlck9iamVjdCopOwogICAgIHZvaWQgY29tcHV0ZUNoaWxkcmVuU3R5bGVJblJl
Z2lvbihjb25zdCBSZW5kZXJPYmplY3QqKTsKICAgICB2b2lkIHNldFJlZ2lvbk9iamVjdHNSZWdp
b25TdHlsZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158361</attachid>
            <date>2012-08-14 10:18:32 -0700</date>
            <delta_ts>2012-08-15 18:31:54 -0700</delta_ts>
            <desc>Proposed change 2: Fixed the Windows build by exposing enclosingRenderNamedFlowThread.</desc>
            <filename>bug-93874-20120814101759.patch</filename>
            <type>text/plain</type>
            <size>17174</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2IwMWRiMTBlNTQ5NTY3
ZGQwYmQyY2M0MzdjMjZmNzQyNTA4Y2I2ZS4uODUyYTliZGVkOTVlZmE4MmE5ZGY0NmM1YjU2Y2Vh
MzQ3ZjJkYjk1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA4LTE0ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhIHdh
cy1pbnNlcnRlZC1pbnRvLXRyZWUgbm90aWZpY2F0aW9uIHRvIFJlbmRlck9iamVjdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4NzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRz
IGluc2VydGVkSW50b1RyZWUgdG8gUmVuZGVyT2JqZWN0IHNvIHRoYXQgcmVuZGVyZXJzCisgICAg
ICAgIGNhbiBub3cgZG8gdGhlaXIgcG9zdC1pbnNlcnRpb24gdGFzayBpbnNpZGUgdGhpcyBmdW5j
dGlvbi4KKworICAgICAgICBPdXIgY3VycmVudCBhcmNoaXRlY3R1cmUgaGFzIDIgd2F5cyBvZiBk
b2luZyBwb3N0LWluc2VydGlvbiB0YXNrczoKKyAgICAgICAgLSBvdmVycmlkaW5nIFJlbmRlck9i
amVjdDo6YWRkQ2hpbGQKKyAgICAgICAgLSBSZW5kZXJPYmplY3RDaGlsZExpc3Q6Omluc2VydENo
aWxkTm9kZSAvIGFwcGVuZENoaWxkTm9kZQorCisgICAgICAgIEJlY2F1c2UgdGhlIGZvcm1lciBp
cyBub3QgZ3VhcmFudGVlZCB0byBiZSBjYWxsZWQgZm9yIGVhY2ggaW5zZXJ0aW9uCisgICAgICAg
IChvbiB0b3Agb2YgYmVpbmcgY2FsbGVkIG9uIHRoZSBwYXJlbnQgYW5kIG5vdCB0aGUgaW5zZXJ0
ZWQgY2hpbGQpLCB0aGUKKyAgICAgICAgMiBsYXR0ZXIgZnVuY3Rpb25zIGFyZSB0aGUgb25lIHRo
YXQgaGF2ZSBiZWVuIG1vc3RseSB1c2VkIHJlY2VudGx5LiBUaGlzCisgICAgICAgIGxlZCB0byBj
b2RlIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlIGZ1bmN0aW9ucyBidXQgYWxzbyBkb2Vzbid0IHNj
YWxlIGFzCisgICAgICAgIG90aGVyIHJlbmRlcmVycyBuZWVkIHRvIGhvcCBvbiB0aGlzIG5vdGlm
aWNhdGlvbiBhbmQgY3VycmVudGx5IGRvbid0IChmb3IKKyAgICAgICAgZXhhbXBsZSwgdGFibGUg
cGFydHMpLiBUaGUgb3RoZXIgcmVuZGVyZXIncyBtaWdyYXRpb24gd2lsbCBiZSBkb25lIGluCisg
ICAgICAgIGZvbGxvdy11cCBwYXRjaGVzLgorCisgICAgICAgIFJlZmFjdG9yaW5nIGNvdmVyZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hp
bGRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdENoaWxkTGlzdDo6cmVt
b3ZlQ2hpbGROb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZW5jbG9zaW5nUmVuZGVyTmFtZWRGbG93VGhy
ZWFkKToKKyAgICAgICAgTW92ZWQgdGhlIGNvZGUgZnJvbSByZW5kZXJOYW1lZEZsb3dUaHJlYWRD
b250YWluZXIgdG8gUmVuZGVyT2JqZWN0OjplbmNsb3NpbmdSZW5kZXJOYW1lZEZsb3dUaHJlYWQu
CisgICAgICAgIFRoaXMgaXMgbmVlZGVkIGFzIG5vdyAyIGNsYXNzZXMgbmVlZCB0byBhY2Nlc3Mg
dGhlIGZ1bmN0aW9uLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmFwcGVuZENo
aWxkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6Omluc2Vy
dENoaWxkTm9kZSk6CisgICAgICAgIE1vdmVkIHRoZSBjb2RlIGR1cGxpY2F0ZWQgZnJvbSB0aG9z
ZSAyIGZ1bmN0aW9ucyBpbnRvCisgICAgICAgIHRoZSBpbnN0YW5jZXMgb2YgaW5zZXJ0ZWRJbnRv
VHJlZSBiZWxvdy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjppbnNlcnRlZEludG9UcmVlKToKKyAgICAgICAg
QmFzZSBmdW5jdGlvbiB0aGF0IG5lZWRzIHRvIGJlIGNhbGxlZCBmcm9tIGFsbCB0aGUgb3RoZXIK
KyAgICAgICAgc3BlY2lhbGl6ZWQgZnVuY3Rpb25zIGJlbG93LgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpc3RJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RJdGVt
OjppbnNlcnRlZEludG9UcmVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0u
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJR
dW90ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJRdW90ZTo6aW5zZXJ0ZWRJbnRvVHJl
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3RlLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246Omlu
c2VydGVkSW50b1RyZWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoKKyAg
ICAgICAgQWRkZWQgdGhlIG92ZXJyaWRlbiBpbnNlcnRlZEludG9UcmVlIGZ1bmN0aW9uLgorCiAy
MDEyLTA4LTE0ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAogICAgICAgICBb
QmxhY2tCZXJyeV0gR2V0IHJpZCBvZiBnbENvcHlUZXhJbWFnZTJEIGluIENhbnZhcyBhbmQgV2Vi
R0wgY29kZSBwYXRocwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5j
cHAKaW5kZXggMmY3ZmY2ZTMyNGU5ZWIwNGUwZDQxZmE5ZGUwZTNhNTc0N2RjMWE0NC4uZjY4ZDA4
MTIyNWM2OWE0YjI3ZmQzZmM4NmMzYzY1NTViMTI2ZWZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCkBAIC03Niw2ICs3NiwxMyBAQCB2b2lkIFJlbmRl
ckxpc3RJdGVtOjp3aWxsQmVEZXN0cm95ZWQoKQogICAgIFJlbmRlckJsb2NrOjp3aWxsQmVEZXN0
cm95ZWQoKTsKIH0KIAordm9pZCBSZW5kZXJMaXN0SXRlbTo6aW5zZXJ0ZWRJbnRvVHJlZSgpCit7
CisgICAgUmVuZGVyQmxvY2s6Omluc2VydGVkSW50b1RyZWUoKTsKKworICAgIHVwZGF0ZUxpc3RN
YXJrZXJOdW1iZXJzKCk7Cit9CisKIHN0YXRpYyBib29sIGlzTGlzdChOb2RlKiBub2RlKQogewog
ICAgIHJldHVybiAobm9kZS0+aGFzVGFnTmFtZSh1bFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShv
bFRhZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJ
dGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAppbmRleCAz
YzBhZjJmNjVmY2ViMjQ3ODNkOGQ3YjdkZDg0ZDg0YjAzYTExNTAwLi5hMWVkYTIxNTM3YWY1ZmM5
ODIzZjIzMDI2Yzc5YTJjMTU1MjQxNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEl0ZW0uaApAQCAtNTgsNiArNTgsOCBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1
YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZElu
dG9UcmVlKCkgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGI1ZjY5NTc1
YWUzYTQ0YzlhYWI1YTc2MWNkMGQ1NzBmNmVjMTQxODUuLjFlZDdjMDMzZGJlNDc2M2E3MmRkZjdi
YzNmZmU1NmQ2NmU3ZTY1NzkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCkBAIC01ODYsNiArNTg2LDE1IEBAIFJlbmRlckZsb3dUaHJlYWQqIFJlbmRlck9iamVj
dDo6ZW5jbG9zaW5nUmVuZGVyRmxvd1RocmVhZCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAK
K1JlbmRlck5hbWVkRmxvd1RocmVhZCogUmVuZGVyT2JqZWN0OjplbmNsb3NpbmdSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQoKSBjb25zdAoreworICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gY29uc3Rf
Y2FzdDxSZW5kZXJPYmplY3QqPih0aGlzKTsKKyAgICB3aGlsZSAob2JqZWN0ICYmIG9iamVjdC0+
aXNBbm9ueW1vdXNCbG9jaygpICYmICFvYmplY3QtPmlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkp
CisgICAgICAgIG9iamVjdCA9IG9iamVjdC0+cGFyZW50KCk7CisKKyAgICByZXR1cm4gb2JqZWN0
ICYmIG9iamVjdC0+aXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSA/IHRvUmVuZGVyTmFtZWRGbG93
VGhyZWFkKG9iamVjdCkgOiAwOworfQorCiBSZW5kZXJCbG9jayogUmVuZGVyT2JqZWN0OjpmaXJz
dExpbmVCbG9jaygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7CkBAIC0yMzU0LDYgKzIzNjMsMzIg
QEAgdm9pZCBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpCiAgICAgY2xlYXJMYXlvdXRS
b290SWZOZWVkZWQoKTsKIH0KIAordm9pZCBSZW5kZXJPYmplY3Q6Omluc2VydGVkSW50b1RyZWUo
KQoreworICAgIC8vIEtlZXAgb3VyIGxheWVyIGhpZXJhcmNoeSB1cGRhdGVkLiBPcHRpbWl6ZSBm
b3IgdGhlIGNvbW1vbiBjYXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuCisgICAg
Ly8gYW5kIGRvbid0IGhhdmUgYSBsYXllciBhdHRhY2hlZCB0byBvdXJzZWx2ZXMuCisgICAgUmVu
ZGVyTGF5ZXIqIGxheWVyID0gMDsKKyAgICBpZiAoZmlyc3RDaGlsZCgpIHx8IGhhc0xheWVyKCkp
IHsKKyAgICAgICAgbGF5ZXIgPSBwYXJlbnQoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKKyAgICAgICAg
YWRkTGF5ZXJzKGxheWVyKTsKKyAgICB9CisKKyAgICAvLyBJZiB8dGhpc3wgaXMgdmlzaWJsZSBi
dXQgdGhpcyBvYmplY3Qgd2FzIG5vdCwgdGVsbCB0aGUgbGF5ZXIgaXQgaGFzIHNvbWUgdmlzaWJs
ZSBjb250ZW50CisgICAgLy8gdGhhdCBuZWVkcyB0byBiZSBkcmF3biBhbmQgbGF5ZXIgdmlzaWJp
bGl0eSBvcHRpbWl6YXRpb24gY2FuJ3QgYmUgdXNlZAorICAgIGlmIChwYXJlbnQoKS0+c3R5bGUo
KS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJ
U0lCTEUgJiYgIWhhc0xheWVyKCkpIHsKKyAgICAgICAgaWYgKCFsYXllcikKKyAgICAgICAgICAg
IGxheWVyID0gcGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCk7CisgICAgICAgIGlmIChsYXllcikK
KyAgICAgICAgICAgIGxheWVyLT5zZXRIYXNWaXNpYmxlQ29udGVudCgpOworICAgIH0KKworICAg
IGlmICghaXNGbG9hdGluZygpICYmIHBhcmVudCgpLT5jaGlsZHJlbklubGluZSgpKQorICAgICAg
ICBwYXJlbnQoKS0+ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQodGhpcyk7CisKKyAgICBpZiAo
UmVuZGVyTmFtZWRGbG93VGhyZWFkKiBjb250YWluZXJGbG93VGhyZWFkID0gcGFyZW50KCktPmVu
Y2xvc2luZ1JlbmRlck5hbWVkRmxvd1RocmVhZCgpKQorICAgICAgICBjb250YWluZXJGbG93VGhy
ZWFkLT5hZGRGbG93Q2hpbGQodGhpcyk7Cit9CisKIHZvaWQgUmVuZGVyT2JqZWN0OjpkZXN0cm95
QW5kQ2xlYW51cEFub255bW91c1dyYXBwZXJzKCkKIHsKICAgICBSZW5kZXJPYmplY3QqIHBhcmVu
dCA9IHRoaXMtPnBhcmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CmluZGV4IDVlZjkwZmMwZTEyNTgxMTExNWNiNTQ0ZTdmMDk3ODg4YzNjYmVjOTkuLmNkYWRlY2Ji
MTEyMGQyZjczZjQ1MDZlMDM5MjIyOTk5MTEyYWI3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgUmVuZGVyQmxvY2s7CiBj
bGFzcyBSZW5kZXJGbG93VGhyZWFkOwogY2xhc3MgUmVuZGVyR2VvbWV0cnlNYXA7CiBjbGFzcyBS
ZW5kZXJMYXllcjsKK2NsYXNzIFJlbmRlck5hbWVkRmxvd1RocmVhZDsKIGNsYXNzIFJlbmRlclRh
YmxlOwogY2xhc3MgUmVuZGVyVGhlbWU7CiBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsKQEAgLTIyNiw2
ICsyMjcsOCBAQCBwdWJsaWM6CiAgICAgLy8gRnVuY3Rpb24gdG8gcmV0dXJuIG91ciBlbmNsb3Np
bmcgZmxvdyB0aHJlYWQgaWYgd2UgYXJlIGNvbnRhaW5lZCBpbnNpZGUgb25lLgogICAgIFJlbmRl
ckZsb3dUaHJlYWQqIGVuY2xvc2luZ1JlbmRlckZsb3dUaHJlYWQoKSBjb25zdDsKIAorICAgIFJl
bmRlck5hbWVkRmxvd1RocmVhZCogZW5jbG9zaW5nUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkgY29u
c3Q7CisKICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGZpcnN0Q2hp
bGQoKSA9PSAwOyB9CiAKICNpZm5kZWYgTkRFQlVHCkBAIC05MzQsNiArOTM3LDggQEAgcHJvdGVj
dGVkOgogCiAgICAgdmlydHVhbCBib29sIGNhbkJlUmVwbGFjZWRXaXRoSW5saW5lUnVuSW4oKSBj
b25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKCk7CisKIHByaXZhdGU6
CiAgICAgUmVuZGVyU3R5bGUqIGZpcnN0TGluZVN0eWxlU2xvd0Nhc2UoKSBjb25zdDsKICAgICBT
dHlsZURpZmZlcmVuY2UgYWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSwgdW5z
aWduZWQgY29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcAppbmRleCAzMTU4ZmJm
YjY5OWRkY2JmYWMwZmYyOTIyYjNjMzgyOGU3MTlmZmFjLi5jNDY2MmY5ODFhYmU1MTA5M2Y2N2Rk
ZDQ1YTI2YTA4MjAzYzg5MzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcApAQCAtNjMsMTQgKzYzLDYgQEAgdm9pZCBSZW5kZXJP
YmplY3RDaGlsZExpc3Q6OmRlc3Ryb3lMZWZ0b3ZlckNoaWxkcmVuKCkKICAgICB9CiB9CiAKLXN0
YXRpYyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIHJlbmRlck5hbWVkRmxvd1RocmVhZENvbnRhaW5l
cihSZW5kZXJPYmplY3QqIG9iamVjdCkKLXsKLSAgICB3aGlsZSAob2JqZWN0ICYmIG9iamVjdC0+
aXNBbm9ueW1vdXNCbG9jaygpICYmICFvYmplY3QtPmlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkp
Ci0gICAgICAgIG9iamVjdCA9IG9iamVjdC0+cGFyZW50KCk7Ci0KLSAgICByZXR1cm4gb2JqZWN0
ICYmIG9iamVjdC0+aXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSA/IHRvUmVuZGVyTmFtZWRGbG93
VGhyZWFkKG9iamVjdCkgOiAwOwotfQotCiBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdENoaWxk
TGlzdDo6cmVtb3ZlQ2hpbGROb2RlKFJlbmRlck9iamVjdCogb3duZXIsIFJlbmRlck9iamVjdCog
b2xkQ2hpbGQsIGJvb2wgZnVsbFJlbW92ZSkKIHsKICAgICBBU1NFUlQob2xkQ2hpbGQtPnBhcmVu
dCgpID09IG93bmVyKTsKQEAgLTEyNiw3ICsxMTgsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9i
amVjdENoaWxkTGlzdDo6cmVtb3ZlQ2hpbGROb2RlKFJlbmRlck9iamVjdCogb3duZXIsIFJlbmRl
cgogICAgICAgICAgICAgb2xkQ2hpbGQtPmVuY2xvc2luZ1JlbmRlckZsb3dUaHJlYWQoKS0+Y2xl
YXJSZW5kZXJPYmplY3RDdXN0b21TdHlsZShvbGRDaGlsZCk7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAoUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBjb250YWluZXJGbG93VGhyZWFkID0gcmVuZGVy
TmFtZWRGbG93VGhyZWFkQ29udGFpbmVyKG93bmVyKSkKKyAgICAgICAgaWYgKFJlbmRlck5hbWVk
Rmxvd1RocmVhZCogY29udGFpbmVyRmxvd1RocmVhZCA9IG93bmVyLT5lbmNsb3NpbmdSZW5kZXJO
YW1lZEZsb3dUaHJlYWQoKSkKICAgICAgICAgICAgIGNvbnRhaW5lckZsb3dUaHJlYWQtPnJlbW92
ZUZsb3dDaGlsZChvbGRDaGlsZCk7CiAKICNpZiBFTkFCTEUoU1ZHKQpAQCAtMTY5LDcgKzE2MSw3
IEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjpyZW1vdmVDaGlsZE5vZGUo
UmVuZGVyT2JqZWN0KiBvd25lciwgUmVuZGVyCiAgICAgcmV0dXJuIG9sZENoaWxkOwogfQogCi12
b2lkIFJlbmRlck9iamVjdENoaWxkTGlzdDo6YXBwZW5kQ2hpbGROb2RlKFJlbmRlck9iamVjdCog
b3duZXIsIFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIGJvb2wgZnVsbEFwcGVuZCkKK3ZvaWQgUmVu
ZGVyT2JqZWN0Q2hpbGRMaXN0OjphcHBlbmRDaGlsZE5vZGUoUmVuZGVyT2JqZWN0KiBvd25lciwg
UmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgYm9vbCBub3RpZnlSZW5kZXJlcikKIHsKICAgICBBU1NF
UlQobmV3Q2hpbGQtPnBhcmVudCgpID09IDApOwogICAgIEFTU0VSVCghb3duZXItPmlzQmxvY2tG
bG93KCkgfHwgKCFuZXdDaGlsZC0+aXNUYWJsZVNlY3Rpb24oKSAmJiAhbmV3Q2hpbGQtPmlzVGFi
bGVSb3coKSAmJiAhbmV3Q2hpbGQtPmlzVGFibGVDZWxsKCkpKTsKQEAgLTE4NSw0MCArMTc3LDgg
QEAgdm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmFwcGVuZENoaWxkTm9kZShSZW5kZXJPYmpl
Y3QqIG93bmVyLCBSZW5kZXJPYmplY3QqIG4KIAogICAgIHNldExhc3RDaGlsZChuZXdDaGlsZCk7
CiAgICAgCi0gICAgaWYgKGZ1bGxBcHBlbmQpIHsKLSAgICAgICAgLy8gS2VlcCBvdXIgbGF5ZXIg
aGllcmFyY2h5IHVwZGF0ZWQuICBPcHRpbWl6ZSBmb3IgdGhlIGNvbW1vbiBjYXNlIHdoZXJlIHdl
IGRvbid0IGhhdmUgYW55IGNoaWxkcmVuCi0gICAgICAgIC8vIGFuZCBkb24ndCBoYXZlIGEgbGF5
ZXIgYXR0YWNoZWQgdG8gb3Vyc2VsdmVzLgotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSAw
OwotICAgICAgICBpZiAobmV3Q2hpbGQtPmZpcnN0Q2hpbGQoKSB8fCBuZXdDaGlsZC0+aGFzTGF5
ZXIoKSkgewotICAgICAgICAgICAgbGF5ZXIgPSBvd25lci0+ZW5jbG9zaW5nTGF5ZXIoKTsKLSAg
ICAgICAgICAgIG5ld0NoaWxkLT5hZGRMYXllcnMobGF5ZXIpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gaWYgdGhlIG5ldyBjaGlsZCBpcyB2aXNpYmxlIGJ1dCB0aGlzIG9iamVjdCB3YXMgbm90
LCB0ZWxsIHRoZSBsYXllciBpdCBoYXMgc29tZSB2aXNpYmxlIGNvbnRlbnQKLSAgICAgICAgLy8g
dGhhdCBuZWVkcyB0byBiZSBkcmF3biBhbmQgbGF5ZXIgdmlzaWJpbGl0eSBvcHRpbWl6YXRpb24g
Y2FuJ3QgYmUgdXNlZAotICAgICAgICBpZiAob3duZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAh
PSBWSVNJQkxFICYmIG5ld0NoaWxkLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAm
JiAhbmV3Q2hpbGQtPmhhc0xheWVyKCkpIHsKLSAgICAgICAgICAgIGlmICghbGF5ZXIpCi0gICAg
ICAgICAgICAgICAgbGF5ZXIgPSBvd25lci0+ZW5jbG9zaW5nTGF5ZXIoKTsKLSAgICAgICAgICAg
IGlmIChsYXllcikKLSAgICAgICAgICAgICAgICBsYXllci0+c2V0SGFzVmlzaWJsZUNvbnRlbnQo
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChuZXdDaGlsZC0+aXNMaXN0SXRlbSgpKQotICAg
ICAgICAgICAgdG9SZW5kZXJMaXN0SXRlbShuZXdDaGlsZCktPnVwZGF0ZUxpc3RNYXJrZXJOdW1i
ZXJzKCk7Ci0KLSAgICAgICAgaWYgKCFuZXdDaGlsZC0+aXNGbG9hdGluZygpICYmIG93bmVyLT5j
aGlsZHJlbklubGluZSgpKQotICAgICAgICAgICAgb3duZXItPmRpcnR5TGluZXNGcm9tQ2hhbmdl
ZENoaWxkKG5ld0NoaWxkKTsKLQotICAgICAgICBpZiAobmV3Q2hpbGQtPmlzUmVuZGVyUmVnaW9u
KCkpCi0gICAgICAgICAgICB0b1JlbmRlclJlZ2lvbihuZXdDaGlsZCktPmF0dGFjaFJlZ2lvbigp
OwotCi0gICAgICAgIC8vIFlvdSBjYW4ndCBhdHRhY2hRdW90ZSgpIG90aGVyd2lzZSB0aGUgcXVv
dGUgd291bGQgYmUgYXR0YWNoZWQgdG9vIGVhcmx5Ci0gICAgICAgIC8vIGFuZCBnZXQgdGhlIHdy
b25nIGRlcHRoIHNpbmNlIGdlbmVyYXRlZCBjb250ZW50IGlzIGluc2VydGVkIGludG8gYW5vbnlt
b3VzCi0gICAgICAgIC8vIHJlbmRlcmVycyBiZWZvcmUgZ29pbmcgaW50byB0aGUgbWFpbiByZW5k
ZXIgdHJlZS4KLQotICAgICAgICBpZiAoUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBjb250YWluZXJG
bG93VGhyZWFkID0gcmVuZGVyTmFtZWRGbG93VGhyZWFkQ29udGFpbmVyKG93bmVyKSkKLSAgICAg
ICAgICAgIGNvbnRhaW5lckZsb3dUaHJlYWQtPmFkZEZsb3dDaGlsZChuZXdDaGlsZCk7Ci0gICAg
fQorICAgIGlmIChub3RpZnlSZW5kZXJlcikKKyAgICAgICAgbmV3Q2hpbGQtPmluc2VydGVkSW50
b1RyZWUoKTsKIAogICAgIGlmICghb3duZXItPmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkgewog
ICAgICAgICBSZW5kZXJDb3VudGVyOjpyZW5kZXJlclN1YnRyZWVBdHRhY2hlZChuZXdDaGlsZCk7
CkBAIC0yMzEsMTAgKzE5MSwxMCBAQCB2b2lkIFJlbmRlck9iamVjdENoaWxkTGlzdDo6YXBwZW5k
Q2hpbGROb2RlKFJlbmRlck9iamVjdCogb3duZXIsIFJlbmRlck9iamVjdCogbgogICAgICAgICBv
d25lci0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5jaGlsZHJlbkNoYW5nZWQob3duZXIp
OwogfQogCi12b2lkIFJlbmRlck9iamVjdENoaWxkTGlzdDo6aW5zZXJ0Q2hpbGROb2RlKFJlbmRl
ck9iamVjdCogb3duZXIsIFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3Jl
Q2hpbGQsIGJvb2wgZnVsbEluc2VydCkKK3ZvaWQgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjppbnNl
cnRDaGlsZE5vZGUoUmVuZGVyT2JqZWN0KiBvd25lciwgUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCwgYm9vbCBub3RpZnlSZW5kZXJlcikKIHsKICAgICBpZiAo
IWJlZm9yZUNoaWxkKSB7Ci0gICAgICAgIGFwcGVuZENoaWxkTm9kZShvd25lciwgY2hpbGQsIGZ1
bGxJbnNlcnQpOworICAgICAgICBhcHBlbmRDaGlsZE5vZGUob3duZXIsIGNoaWxkLCBub3RpZnlS
ZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI1NywzOSArMjE3LDggQEAg
dm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6Omluc2VydENoaWxkTm9kZShSZW5kZXJPYmplY3Qq
IG93bmVyLCBSZW5kZXJPYmplY3QqIGMKIAogICAgIGNoaWxkLT5zZXRQYXJlbnQob3duZXIpOwog
ICAgIAotICAgIGlmIChmdWxsSW5zZXJ0KSB7Ci0gICAgICAgIC8vIEtlZXAgb3VyIGxheWVyIGhp
ZXJhcmNoeSB1cGRhdGVkLiAgT3B0aW1pemUgZm9yIHRoZSBjb21tb24gY2FzZSB3aGVyZSB3ZSBk
b24ndCBoYXZlIGFueSBjaGlsZHJlbgotICAgICAgICAvLyBhbmQgZG9uJ3QgaGF2ZSBhIGxheWVy
IGF0dGFjaGVkIHRvIG91cnNlbHZlcy4KLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gMDsK
LSAgICAgICAgaWYgKGNoaWxkLT5maXJzdENoaWxkKCkgfHwgY2hpbGQtPmhhc0xheWVyKCkpIHsK
LSAgICAgICAgICAgIGxheWVyID0gb3duZXItPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgICAgICAg
ICBjaGlsZC0+YWRkTGF5ZXJzKGxheWVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGlmIHRo
ZSBuZXcgY2hpbGQgaXMgdmlzaWJsZSBidXQgdGhpcyBvYmplY3Qgd2FzIG5vdCwgdGVsbCB0aGUg
bGF5ZXIgaXQgaGFzIHNvbWUgdmlzaWJsZSBjb250ZW50Ci0gICAgICAgIC8vIHRoYXQgbmVlZHMg
dG8gYmUgZHJhd24gYW5kIGxheWVyIHZpc2liaWxpdHkgb3B0aW1pemF0aW9uIGNhbid0IGJlIHVz
ZWQKLSAgICAgICAgaWYgKG93bmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAm
JiBjaGlsZC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgIWNoaWxkLT5oYXNM
YXllcigpKSB7Ci0gICAgICAgICAgICBpZiAoIWxheWVyKQotICAgICAgICAgICAgICAgIGxheWVy
ID0gb3duZXItPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgICAgICAgICBpZiAobGF5ZXIpCi0gICAg
ICAgICAgICAgICAgbGF5ZXItPnNldEhhc1Zpc2libGVDb250ZW50KCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoY2hpbGQtPmlzTGlzdEl0ZW0oKSkKLSAgICAgICAgICAgIHRvUmVuZGVyTGlz
dEl0ZW0oY2hpbGQpLT51cGRhdGVMaXN0TWFya2VyTnVtYmVycygpOwotCi0gICAgICAgIGlmICgh
Y2hpbGQtPmlzRmxvYXRpbmcoKSAmJiBvd25lci0+Y2hpbGRyZW5JbmxpbmUoKSkKLSAgICAgICAg
ICAgIG93bmVyLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChjaGlsZCk7Ci0KLSAgICAgICAg
aWYgKGNoaWxkLT5pc1JlbmRlclJlZ2lvbigpKQotICAgICAgICAgICAgdG9SZW5kZXJSZWdpb24o
Y2hpbGQpLT5hdHRhY2hSZWdpb24oKTsKLQotICAgICAgICAvLyBDYWxsaW5nIGF0dGFjaFF1b3Rl
KCkgaGVyZSB3b3VsZCBiZSB0b28gZWFybHkgKGJlZm9yZSBhbm9ueW1vdXMgcmVuZGVyZXJzIGFy
ZSBpbnNlcnRlZCkKLSAgICAgICAgLy8gc2VlIGFwcGVuZENoaWxkKCkgZm9yIG1vcmUgZXhwbGFu
YXRpb24uCi0KLSAgICAgICAgaWYgKFJlbmRlck5hbWVkRmxvd1RocmVhZCogY29udGFpbmVyRmxv
d1RocmVhZCA9IHJlbmRlck5hbWVkRmxvd1RocmVhZENvbnRhaW5lcihvd25lcikpCi0gICAgICAg
ICAgICBjb250YWluZXJGbG93VGhyZWFkLT5hZGRGbG93Q2hpbGQoY2hpbGQsIGJlZm9yZUNoaWxk
KTsKLSAgICB9CisgICAgaWYgKG5vdGlmeVJlbmRlcmVyKQorICAgICAgICBjaGlsZC0+aW5zZXJ0
ZWRJbnRvVHJlZSgpOwogCiAgICAgaWYgKCFvd25lci0+ZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgp
KSB7CiAgICAgICAgIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyU3VidHJlZUF0dGFjaGVkKGNoaWxk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGls
ZExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3Qu
aAppbmRleCBjZmU5MDI2MTdlZTVlYzRkYWM5YzAyOGVhMjQ3NTNhOTgwYjM2ZTE2Li42NTgzZDUx
YjdjMGMxMzI3ZjQxM2E3NzhiYjE1NmEzNWU0YmIxNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5oCkBAIC01Myw4ICs1Myw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lMZWZ0b3ZlckNoaWxkcmVuKCk7CiAKICAgICBSZW5kZXJP
YmplY3QqIHJlbW92ZUNoaWxkTm9kZShSZW5kZXJPYmplY3QqIG93bmVyLCBSZW5kZXJPYmplY3Qq
LCBib29sIGZ1bGxSZW1vdmUgPSB0cnVlKTsKLSAgICB2b2lkIGFwcGVuZENoaWxkTm9kZShSZW5k
ZXJPYmplY3QqIG93bmVyLCBSZW5kZXJPYmplY3QqLCBib29sIGZ1bGxBcHBlbmQgPSB0cnVlKTsK
LSAgICB2b2lkIGluc2VydENoaWxkTm9kZShSZW5kZXJPYmplY3QqIG93bmVyLCBSZW5kZXJPYmpl
Y3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZSwgYm9vbCBmdWxsSW5zZXJ0ID0gdHJ1ZSk7
CisgICAgdm9pZCBhcHBlbmRDaGlsZE5vZGUoUmVuZGVyT2JqZWN0KiBvd25lciwgUmVuZGVyT2Jq
ZWN0KiwgYm9vbCBub3RpZnlSZW5kZXJlciA9IHRydWUpOworICAgIHZvaWQgaW5zZXJ0Q2hpbGRO
b2RlKFJlbmRlck9iamVjdCogb3duZXIsIFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVj
dCogYmVmb3JlLCBib29sIG5vdGlmeVJlbmRlcmVyID0gdHJ1ZSk7CiAKICAgICB2b2lkIHVwZGF0
ZUJlZm9yZUFmdGVyQ29udGVudChSZW5kZXJPYmplY3QqIG93bmVyLCBQc2V1ZG9JZCB0eXBlLCBj
b25zdCBSZW5kZXJPYmplY3QqIHN0eWxlZE9iamVjdCA9IDApOwogICAgIFJlbmRlck9iamVjdCog
YmVmb3JlUHNldWRvRWxlbWVudFJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogb3duZXIpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAKaW5kZXggODc1NTFl
ZDI1MTg5ZTBjMGY4NzQ0MWRiYjhmZjc0Yjg4ZTI0NDQ2Yi4uM2Q0NzRkOTExZGY3OWUzZjA5YmMz
ZWI0MzBjZDFlNGFiNWE0ODI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclF1b3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVv
dGUuY3BwCkBAIC01MCw2ICs1MCwxNSBAQCB2b2lkIFJlbmRlclF1b3RlOjp3aWxsQmVEZXN0cm95
ZWQoKQogICAgIFJlbmRlclRleHQ6OndpbGxCZURlc3Ryb3llZCgpOwogfQogCit2b2lkIFJlbmRl
clF1b3RlOjppbnNlcnRlZEludG9UcmVlKCkKK3sKKyAgICAvLyBZb3UgY2FuJ3QgY2FsbCBhdHRh
Y2hRdW90ZSgpIG90aGVyd2lzZSB0aGUgcXVvdGUgd291bGQgYmUgYXR0YWNoZWQgdG9vIGVhcmx5
CisgICAgLy8gYW5kIGdldCB0aGUgd3JvbmcgZGVwdGggc2luY2UgZ2VuZXJhdGVkIGNvbnRlbnQg
aXMgaW5zZXJ0ZWQgaW50byBhbm9ueW1vdXMKKyAgICAvLyByZW5kZXJlcnMgYmVmb3JlIGdvaW5n
IGludG8gdGhlIG1haW4gcmVuZGVyIHRyZWUuCisKKyAgICBSZW5kZXJUZXh0OjppbnNlcnRlZElu
dG9UcmVlKCk7Cit9CisKIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIGNvbnN0IFF1b3Rl
c0RhdGEqLCBDYXNlRm9sZGluZ0hhc2g+IFF1b3Rlc01hcDsKIAogc3RhdGljIGNvbnN0IFF1b3Rl
c01hcCYgcXVvdGVzRGF0YUxhbmd1YWdlTWFwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJRdW90ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clF1b3RlLmgKaW5kZXggMDA4YjUzNGQyN2I0NGYyOWUwODhjYWNmYjI0YzFiY2E2NzEzNmZhNC4u
NmFlZTIxZDdhYmE0YmEzNWVmMjZlNjFhYWQ0YTg2ZTJkNDViZWZjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gb3JpZ2luYWxUZXh0KCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0
IGxlYWRXaWR0aCkgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJl
ZSgpIE9WRVJSSURFOworCiAgICAgY29uc3QgUXVvdGVzRGF0YSogcXVvdGVzRGF0YSgpIGNvbnN0
OwogICAgIHZvaWQgdXBkYXRlRGVwdGgoKTsKICAgICBib29sIGlzQXR0YWNoZWQoKSB7IHJldHVy
biBtX2F0dGFjaGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3Bw
CmluZGV4IDA2ODJhYzkyMjQ3OTFhMTM2Yzk2NTU4MDQ0ZGU2MDAzMzcwMDQ5MmIuLmMyYjUwY2Jk
ZDNmYTk2ZWVjYzRhZDBiMTdhOGUwYzQ4ODBiMzY3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC0zNTcsNiArMzU3LDEzIEBAIHZvaWQgUmVuZGVyUmVn
aW9uOjpyZXN0b3JlUmVnaW9uT2JqZWN0c09yaWdpbmFsU3R5bGUoKQogICAgIG1fcmVuZGVyT2Jq
ZWN0UmVnaW9uU3R5bGUuc3dhcCh0ZW1wKTsKIH0KIAordm9pZCBSZW5kZXJSZWdpb246Omluc2Vy
dGVkSW50b1RyZWUoKQoreworICAgIFJlbmRlclJlcGxhY2VkOjppbnNlcnRlZEludG9UcmVlKCk7
CisKKyAgICBhdHRhY2hSZWdpb24oKTsKK30KKwogUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVu
ZGVyUmVnaW9uOjpjb21wdXRlU3R5bGVJblJlZ2lvbihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVj
dCkKIHsKICAgICBBU1NFUlQob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZWdpb24uaAppbmRleCA2MDkzYTljMDMwZjNlZWNjMWRjZTQyZjQ4MGIxN2Q2ZTMyOTYwYjI1Li4w
ODE3ZDQ4MmMwNWI0YmJkZTQ4MDBlNmFhMTIyYjUxOTVjMmVhNDlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVy
biAiUmVuZGVyUmVnaW9uIjsgfQogCisgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b1RyZWUo
KSBPVkVSUklERTsKKwogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNvbXB1dGVTdHlsZUlu
UmVnaW9uKGNvbnN0IFJlbmRlck9iamVjdCopOwogICAgIHZvaWQgY29tcHV0ZUNoaWxkcmVuU3R5
bGVJblJlZ2lvbihjb25zdCBSZW5kZXJPYmplY3QqKTsKICAgICB2b2lkIHNldFJlZ2lvbk9iamVj
dHNSZWdpb25TdHlsZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158679</attachid>
            <date>2012-08-15 18:30:12 -0700</date>
            <delta_ts>2012-08-15 19:35:45 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-93874-20120815182938.patch</filename>
            <type>text/plain</type>
            <size>16761</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZhYWZkMmUyODViYjI2
OWI3YmQ1ZGVjMTdkOGIyNDlmNDQxY2RlNC4uOTdkOWFlMDJhYjI3ODAwZjQ4ZDcwNTM3NTg0Yzll
NzIxZjc1YmI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA4LTE1ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhIHdh
cy1pbnNlcnRlZC1pbnRvLXRyZWUgbm90aWZpY2F0aW9uIHRvIFJlbmRlck9iamVjdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4NzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGlu
c2VydGVkSW50b1RyZWUgdG8gUmVuZGVyT2JqZWN0IHNvIHRoYXQgcmVuZGVyZXJzCisgICAgICAg
IGNhbiBub3cgZG8gdGhlaXIgcG9zdC1pbnNlcnRpb24gdGFzayBpbnNpZGUgdGhpcyBmdW5jdGlv
bi4KKworICAgICAgICBPdXIgY3VycmVudCBhcmNoaXRlY3R1cmUgaGFzIDIgd2F5cyBvZiBkb2lu
ZyBwb3N0LWluc2VydGlvbiB0YXNrczoKKyAgICAgICAgLSBvdmVycmlkaW5nIFJlbmRlck9iamVj
dDo6YWRkQ2hpbGQKKyAgICAgICAgLSBSZW5kZXJPYmplY3RDaGlsZExpc3Q6Omluc2VydENoaWxk
Tm9kZSAvIGFwcGVuZENoaWxkTm9kZQorCisgICAgICAgIEJlY2F1c2UgdGhlIGZvcm1lciBpcyBu
b3QgZ3VhcmFudGVlZCB0byBiZSBjYWxsZWQgZm9yIGVhY2ggaW5zZXJ0aW9uCisgICAgICAgIChv
biB0b3Agb2YgYmVpbmcgY2FsbGVkIG9uIHRoZSBwYXJlbnQgYW5kIG5vdCB0aGUgaW5zZXJ0ZWQg
Y2hpbGQpLCB0aGUKKyAgICAgICAgMiBsYXR0ZXIgZnVuY3Rpb25zIGFyZSB0aGUgb25lIHRoYXQg
aGF2ZSBiZWVuIG1vc3RseSB1c2VkIHJlY2VudGx5LiBUaGlzCisgICAgICAgIGxlZCB0byBjb2Rl
IGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlIGZ1bmN0aW9ucyBidXQgYWxzbyBkb2Vzbid0IHNjYWxl
IGFzCisgICAgICAgIG90aGVyIHJlbmRlcmVycyBuZWVkIHRvIGhvcCBvbiB0aGlzIG5vdGlmaWNh
dGlvbiBhbmQgY3VycmVudGx5IGRvbid0IChmb3IKKyAgICAgICAgZXhhbXBsZSwgdGFibGUgcGFy
dHMpLiBUaGUgb3RoZXIgcmVuZGVyZXIncyBtaWdyYXRpb24gd2lsbCBiZSBkb25lIGluCisgICAg
ICAgIGZvbGxvdy11cCBwYXRjaGVzLgorCisgICAgICAgIFJlZmFjdG9yaW5nIGNvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdENoaWxkTGlzdDo6cmVtb3Zl
Q2hpbGROb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZW5jbG9zaW5nUmVuZGVyTmFtZWRGbG93VGhyZWFk
KToKKyAgICAgICAgTW92ZWQgdGhlIGNvZGUgZnJvbSByZW5kZXJOYW1lZEZsb3dUaHJlYWRDb250
YWluZXIgdG8gUmVuZGVyT2JqZWN0OjplbmNsb3NpbmdSZW5kZXJOYW1lZEZsb3dUaHJlYWQuCisg
ICAgICAgIFRoaXMgaXMgbmVlZGVkIGFzIG5vdyAyIGNsYXNzZXMgbmVlZCB0byBhY2Nlc3MgdGhl
IGZ1bmN0aW9uLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmFwcGVuZENoaWxk
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6Omluc2VydENo
aWxkTm9kZSk6CisgICAgICAgIE1vdmVkIHRoZSBjb2RlIGR1cGxpY2F0ZWQgZnJvbSB0aG9zZSAy
IGZ1bmN0aW9ucyBpbnRvCisgICAgICAgIHRoZSBpbnN0YW5jZXMgb2YgaW5zZXJ0ZWRJbnRvVHJl
ZSBiZWxvdy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjppbnNlcnRlZEludG9UcmVlKToKKyAgICAgICAgQmFz
ZSBmdW5jdGlvbiB0aGF0IG5lZWRzIHRvIGJlIGNhbGxlZCBmcm9tIGFsbCB0aGUgb3RoZXIKKyAg
ICAgICAgc3BlY2lhbGl6ZWQgZnVuY3Rpb25zIGJlbG93LgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxpc3RJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RJdGVtOjpp
bnNlcnRlZEludG9UcmVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck9iamVjdENoaWxkTGlzdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjppbnNlcnRlZEludG9UcmVl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6CisgICAgICAgIEFkZGVkIHRo
ZSBvdmVycmlkZW4gaW5zZXJ0ZWRJbnRvVHJlZSBmdW5jdGlvbi4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJRdW90ZS5oOgorICAgICAgICBNb3ZlZCB0aGUgY29tbWVudCBmcm9tIFJlbmRl
ck9iamVjdENoaWxkTGlzdCBhYm91dCBSZW5kZXJRdW90ZSBoZXJlLgorCiAyMDEyLTA4LTE1ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEVGTCBidWlsZCBmaXgg
YXR0ZW1wdCBhZnRlciByMTI1NzExLiBUb3VjaCBhbiBJREwgZmlsZSB0byByZWdlbmVyYXRlIGRl
cml2ZWQgc291cmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0u
Y3BwCmluZGV4IDJmN2ZmNmUzMjRlOWViMDRlMGQ0MWZhOWRlMGUzYTU3NDdkYzFhNDQuLmY2OGQw
ODEyMjVjNjlhNGIyN2ZkM2ZjODZjM2M2NTU1YjEyNmVmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcApAQCAtNzYsNiArNzYsMTMgQEAgdm9pZCBSZW5k
ZXJMaXN0SXRlbTo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBSZW5kZXJCbG9jazo6d2lsbEJlRGVz
dHJveWVkKCk7CiB9CiAKK3ZvaWQgUmVuZGVyTGlzdEl0ZW06Omluc2VydGVkSW50b1RyZWUoKQor
eworICAgIFJlbmRlckJsb2NrOjppbnNlcnRlZEludG9UcmVlKCk7CisKKyAgICB1cGRhdGVMaXN0
TWFya2VyTnVtYmVycygpOworfQorCiBzdGF0aWMgYm9vbCBpc0xpc3QoTm9kZSogbm9kZSkKIHsK
ICAgICByZXR1cm4gKG5vZGUtPmhhc1RhZ05hbWUodWxUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUo
b2xUYWcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKaW5kZXgg
M2MwYWYyZjY1ZmNlYjI0NzgzZDhkN2I3ZGQ4NGQ4NGIwM2ExMTUwMC4uYTFlZGEyMTUzN2FmNWZj
OTgyM2YyMzAyNmM3OWEyYzE1NTI0MTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RJdGVtLmgKQEAgLTU4LDYgKzU4LDggQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJ
bnRvVHJlZSgpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBiNWY2OTU3
NWFlM2E0NGM5YWFiNWE3NjFjZDBkNTcwZjZlYzE0MTg1Li4yZTFlZjM4YjI3ZmRiZjI2NTUzYTAw
N2UxYmRkOTE5ODg4ODQ1YWQyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcApAQCAtNTg2LDYgKzU4NiwxNSBAQCBSZW5kZXJGbG93VGhyZWFkKiBSZW5kZXJPYmpl
Y3Q6OmVuY2xvc2luZ1JlbmRlckZsb3dUaHJlYWQoKSBjb25zdAogICAgIHJldHVybiAwOwogfQog
CitSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIFJlbmRlck9iamVjdDo6ZW5jbG9zaW5nUmVuZGVyTmFt
ZWRGbG93VGhyZWFkKCkgY29uc3QKK3sKKyAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IGNvbnN0
X2Nhc3Q8UmVuZGVyT2JqZWN0Kj4odGhpcyk7CisgICAgd2hpbGUgKG9iamVjdCAmJiBvYmplY3Qt
PmlzQW5vbnltb3VzQmxvY2soKSAmJiAhb2JqZWN0LT5pc1JlbmRlck5hbWVkRmxvd1RocmVhZCgp
KQorICAgICAgICBvYmplY3QgPSBvYmplY3QtPnBhcmVudCgpOworCisgICAgcmV0dXJuIG9iamVj
dCAmJiBvYmplY3QtPmlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkgPyB0b1JlbmRlck5hbWVkRmxv
d1RocmVhZChvYmplY3QpIDogMDsKK30KKwogUmVuZGVyQmxvY2sqIFJlbmRlck9iamVjdDo6Zmly
c3RMaW5lQmxvY2soKSBjb25zdAogewogICAgIHJldHVybiAwOwpAQCAtMjM1NCw2ICsyMzYzLDM0
IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAgIGNsZWFyTGF5b3V0
Um9vdElmTmVlZGVkKCk7CiB9CiAKK3ZvaWQgUmVuZGVyT2JqZWN0OjppbnNlcnRlZEludG9UcmVl
KCkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIEFTU0VSVChpc1Jvb3RlZCgpKSBoZXJlIGJ1
dCBnZW5lcmF0ZWQgY29udGVudCBtYWtlcyBzb21lIG91dC1vZi1vcmRlciBpbnNlcnRpb24uCisK
KyAgICAvLyBLZWVwIG91ciBsYXllciBoaWVyYXJjaHkgdXBkYXRlZC4gT3B0aW1pemUgZm9yIHRo
ZSBjb21tb24gY2FzZSB3aGVyZSB3ZSBkb24ndCBoYXZlIGFueSBjaGlsZHJlbgorICAgIC8vIGFu
ZCBkb24ndCBoYXZlIGEgbGF5ZXIgYXR0YWNoZWQgdG8gb3Vyc2VsdmVzLgorICAgIFJlbmRlckxh
eWVyKiBsYXllciA9IDA7CisgICAgaWYgKGZpcnN0Q2hpbGQoKSB8fCBoYXNMYXllcigpKSB7Cisg
ICAgICAgIGxheWVyID0gcGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCk7CisgICAgICAgIGFkZExh
eWVycyhsYXllcik7CisgICAgfQorCisgICAgLy8gSWYgfHRoaXN8IGlzIHZpc2libGUgYnV0IHRo
aXMgb2JqZWN0IHdhcyBub3QsIHRlbGwgdGhlIGxheWVyIGl0IGhhcyBzb21lIHZpc2libGUgY29u
dGVudAorICAgIC8vIHRoYXQgbmVlZHMgdG8gYmUgZHJhd24gYW5kIGxheWVyIHZpc2liaWxpdHkg
b3B0aW1pemF0aW9uIGNhbid0IGJlIHVzZWQKKyAgICBpZiAocGFyZW50KCktPnN0eWxlKCktPnZp
c2liaWxpdHkoKSAhPSBWSVNJQkxFICYmIHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
ICYmICFoYXNMYXllcigpKSB7CisgICAgICAgIGlmICghbGF5ZXIpCisgICAgICAgICAgICBsYXll
ciA9IHBhcmVudCgpLT5lbmNsb3NpbmdMYXllcigpOworICAgICAgICBpZiAobGF5ZXIpCisgICAg
ICAgICAgICBsYXllci0+c2V0SGFzVmlzaWJsZUNvbnRlbnQoKTsKKyAgICB9CisKKyAgICBpZiAo
IWlzRmxvYXRpbmcoKSAmJiBwYXJlbnQoKS0+Y2hpbGRyZW5JbmxpbmUoKSkKKyAgICAgICAgcGFy
ZW50KCktPmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKHRoaXMpOworCisgICAgaWYgKFJlbmRl
ck5hbWVkRmxvd1RocmVhZCogY29udGFpbmVyRmxvd1RocmVhZCA9IHBhcmVudCgpLT5lbmNsb3Np
bmdSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSkKKyAgICAgICAgY29udGFpbmVyRmxvd1RocmVhZC0+
YWRkRmxvd0NoaWxkKHRoaXMpOworfQorCiB2b2lkIFJlbmRlck9iamVjdDo6ZGVzdHJveUFuZENs
ZWFudXBBbm9ueW1vdXNXcmFwcGVycygpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnQgPSB0
aGlzLT5wYXJlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRl
eCA1ZWY5MGZjMGUxMjU4MTExMTVjYjU0NGU3ZjA5Nzg4OGMzY2JlYzk5Li5jZGFkZWNiYjExMjBk
MmY3M2Y0NTA2ZTAzOTIyMjk5OTExMmFiN2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIFJlbmRlckJsb2NrOwogY2xhc3Mg
UmVuZGVyRmxvd1RocmVhZDsKIGNsYXNzIFJlbmRlckdlb21ldHJ5TWFwOwogY2xhc3MgUmVuZGVy
TGF5ZXI7CitjbGFzcyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ7CiBjbGFzcyBSZW5kZXJUYWJsZTsK
IGNsYXNzIFJlbmRlclRoZW1lOwogY2xhc3MgVHJhbnNmb3JtU3RhdGU7CkBAIC0yMjYsNiArMjI3
LDggQEAgcHVibGljOgogICAgIC8vIEZ1bmN0aW9uIHRvIHJldHVybiBvdXIgZW5jbG9zaW5nIGZs
b3cgdGhyZWFkIGlmIHdlIGFyZSBjb250YWluZWQgaW5zaWRlIG9uZS4KICAgICBSZW5kZXJGbG93
VGhyZWFkKiBlbmNsb3NpbmdSZW5kZXJGbG93VGhyZWFkKCkgY29uc3Q7CiAKKyAgICBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQqIGVuY2xvc2luZ1JlbmRlck5hbWVkRmxvd1RocmVhZCgpIGNvbnN0Owor
CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBmaXJzdENoaWxkKCkg
PT0gMDsgfQogCiAjaWZuZGVmIE5ERUJVRwpAQCAtOTM0LDYgKzkzNyw4IEBAIHByb3RlY3RlZDoK
IAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVJlcGxhY2VkV2l0aElubGluZVJ1bkluKCkgY29uc3Q7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZSgpOworCiBwcml2YXRlOgogICAg
IFJlbmRlclN0eWxlKiBmaXJzdExpbmVTdHlsZVNsb3dDYXNlKCkgY29uc3Q7CiAgICAgU3R5bGVE
aWZmZXJlbmNlIGFkanVzdFN0eWxlRGlmZmVyZW5jZShTdHlsZURpZmZlcmVuY2UsIHVuc2lnbmVk
IGNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAKaW5kZXggMzE1OGZiZmI2OTlk
ZGNiZmFjMGZmMjkyMmIzYzM4MjhlNzE5ZmZhYy4uYzQ2NjJmOTgxYWJlNTEwOTNmNjdkZGQ0NWEy
NmEwODIwM2M4OTM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdENoaWxkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdENoaWxkTGlzdC5jcHAKQEAgLTYzLDE0ICs2Myw2IEBAIHZvaWQgUmVuZGVyT2JqZWN0
Q2hpbGRMaXN0OjpkZXN0cm95TGVmdG92ZXJDaGlsZHJlbigpCiAgICAgfQogfQogCi1zdGF0aWMg
UmVuZGVyTmFtZWRGbG93VGhyZWFkKiByZW5kZXJOYW1lZEZsb3dUaHJlYWRDb250YWluZXIoUmVu
ZGVyT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgd2hpbGUgKG9iamVjdCAmJiBvYmplY3QtPmlzQW5v
bnltb3VzQmxvY2soKSAmJiAhb2JqZWN0LT5pc1JlbmRlck5hbWVkRmxvd1RocmVhZCgpKQotICAg
ICAgICBvYmplY3QgPSBvYmplY3QtPnBhcmVudCgpOwotCi0gICAgcmV0dXJuIG9iamVjdCAmJiBv
YmplY3QtPmlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkgPyB0b1JlbmRlck5hbWVkRmxvd1RocmVh
ZChvYmplY3QpIDogMDsKLX0KLQogUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3RDaGlsZExpc3Q6
OnJlbW92ZUNoaWxkTm9kZShSZW5kZXJPYmplY3QqIG93bmVyLCBSZW5kZXJPYmplY3QqIG9sZENo
aWxkLCBib29sIGZ1bGxSZW1vdmUpCiB7CiAgICAgQVNTRVJUKG9sZENoaWxkLT5wYXJlbnQoKSA9
PSBvd25lcik7CkBAIC0xMjYsNyArMTE4LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3RD
aGlsZExpc3Q6OnJlbW92ZUNoaWxkTm9kZShSZW5kZXJPYmplY3QqIG93bmVyLCBSZW5kZXIKICAg
ICAgICAgICAgIG9sZENoaWxkLT5lbmNsb3NpbmdSZW5kZXJGbG93VGhyZWFkKCktPmNsZWFyUmVu
ZGVyT2JqZWN0Q3VzdG9tU3R5bGUob2xkQ2hpbGQpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KFJlbmRlck5hbWVkRmxvd1RocmVhZCogY29udGFpbmVyRmxvd1RocmVhZCA9IHJlbmRlck5hbWVk
Rmxvd1RocmVhZENvbnRhaW5lcihvd25lcikpCisgICAgICAgIGlmIChSZW5kZXJOYW1lZEZsb3dU
aHJlYWQqIGNvbnRhaW5lckZsb3dUaHJlYWQgPSBvd25lci0+ZW5jbG9zaW5nUmVuZGVyTmFtZWRG
bG93VGhyZWFkKCkpCiAgICAgICAgICAgICBjb250YWluZXJGbG93VGhyZWFkLT5yZW1vdmVGbG93
Q2hpbGQob2xkQ2hpbGQpOwogCiAjaWYgRU5BQkxFKFNWRykKQEAgLTE2OSw3ICsxNjEsNyBAQCBS
ZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdENoaWxkTGlzdDo6cmVtb3ZlQ2hpbGROb2RlKFJlbmRl
ck9iamVjdCogb3duZXIsIFJlbmRlcgogICAgIHJldHVybiBvbGRDaGlsZDsKIH0KIAotdm9pZCBS
ZW5kZXJPYmplY3RDaGlsZExpc3Q6OmFwcGVuZENoaWxkTm9kZShSZW5kZXJPYmplY3QqIG93bmVy
LCBSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBib29sIGZ1bGxBcHBlbmQpCit2b2lkIFJlbmRlck9i
amVjdENoaWxkTGlzdDo6YXBwZW5kQ2hpbGROb2RlKFJlbmRlck9iamVjdCogb3duZXIsIFJlbmRl
ck9iamVjdCogbmV3Q2hpbGQsIGJvb2wgbm90aWZ5UmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKG5l
d0NoaWxkLT5wYXJlbnQoKSA9PSAwKTsKICAgICBBU1NFUlQoIW93bmVyLT5pc0Jsb2NrRmxvdygp
IHx8ICghbmV3Q2hpbGQtPmlzVGFibGVTZWN0aW9uKCkgJiYgIW5ld0NoaWxkLT5pc1RhYmxlUm93
KCkgJiYgIW5ld0NoaWxkLT5pc1RhYmxlQ2VsbCgpKSk7CkBAIC0xODUsNDAgKzE3Nyw4IEBAIHZv
aWQgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjphcHBlbmRDaGlsZE5vZGUoUmVuZGVyT2JqZWN0KiBv
d25lciwgUmVuZGVyT2JqZWN0KiBuCiAKICAgICBzZXRMYXN0Q2hpbGQobmV3Q2hpbGQpOwogICAg
IAotICAgIGlmIChmdWxsQXBwZW5kKSB7Ci0gICAgICAgIC8vIEtlZXAgb3VyIGxheWVyIGhpZXJh
cmNoeSB1cGRhdGVkLiAgT3B0aW1pemUgZm9yIHRoZSBjb21tb24gY2FzZSB3aGVyZSB3ZSBkb24n
dCBoYXZlIGFueSBjaGlsZHJlbgotICAgICAgICAvLyBhbmQgZG9uJ3QgaGF2ZSBhIGxheWVyIGF0
dGFjaGVkIHRvIG91cnNlbHZlcy4KLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gMDsKLSAg
ICAgICAgaWYgKG5ld0NoaWxkLT5maXJzdENoaWxkKCkgfHwgbmV3Q2hpbGQtPmhhc0xheWVyKCkp
IHsKLSAgICAgICAgICAgIGxheWVyID0gb3duZXItPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgICAg
ICAgICBuZXdDaGlsZC0+YWRkTGF5ZXJzKGxheWVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IGlmIHRoZSBuZXcgY2hpbGQgaXMgdmlzaWJsZSBidXQgdGhpcyBvYmplY3Qgd2FzIG5vdCwgdGVs
bCB0aGUgbGF5ZXIgaXQgaGFzIHNvbWUgdmlzaWJsZSBjb250ZW50Ci0gICAgICAgIC8vIHRoYXQg
bmVlZHMgdG8gYmUgZHJhd24gYW5kIGxheWVyIHZpc2liaWxpdHkgb3B0aW1pemF0aW9uIGNhbid0
IGJlIHVzZWQKLSAgICAgICAgaWYgKG93bmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSAmJiBuZXdDaGlsZC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgIW5l
d0NoaWxkLT5oYXNMYXllcigpKSB7Ci0gICAgICAgICAgICBpZiAoIWxheWVyKQotICAgICAgICAg
ICAgICAgIGxheWVyID0gb3duZXItPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgICAgICAgICBpZiAo
bGF5ZXIpCi0gICAgICAgICAgICAgICAgbGF5ZXItPnNldEhhc1Zpc2libGVDb250ZW50KCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAobmV3Q2hpbGQtPmlzTGlzdEl0ZW0oKSkKLSAgICAgICAg
ICAgIHRvUmVuZGVyTGlzdEl0ZW0obmV3Q2hpbGQpLT51cGRhdGVMaXN0TWFya2VyTnVtYmVycygp
OwotCi0gICAgICAgIGlmICghbmV3Q2hpbGQtPmlzRmxvYXRpbmcoKSAmJiBvd25lci0+Y2hpbGRy
ZW5JbmxpbmUoKSkKLSAgICAgICAgICAgIG93bmVyLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGls
ZChuZXdDaGlsZCk7Ci0KLSAgICAgICAgaWYgKG5ld0NoaWxkLT5pc1JlbmRlclJlZ2lvbigpKQot
ICAgICAgICAgICAgdG9SZW5kZXJSZWdpb24obmV3Q2hpbGQpLT5hdHRhY2hSZWdpb24oKTsKLQot
ICAgICAgICAvLyBZb3UgY2FuJ3QgYXR0YWNoUXVvdGUoKSBvdGhlcndpc2UgdGhlIHF1b3RlIHdv
dWxkIGJlIGF0dGFjaGVkIHRvbyBlYXJseQotICAgICAgICAvLyBhbmQgZ2V0IHRoZSB3cm9uZyBk
ZXB0aCBzaW5jZSBnZW5lcmF0ZWQgY29udGVudCBpcyBpbnNlcnRlZCBpbnRvIGFub255bW91cwot
ICAgICAgICAvLyByZW5kZXJlcnMgYmVmb3JlIGdvaW5nIGludG8gdGhlIG1haW4gcmVuZGVyIHRy
ZWUuCi0KLSAgICAgICAgaWYgKFJlbmRlck5hbWVkRmxvd1RocmVhZCogY29udGFpbmVyRmxvd1Ro
cmVhZCA9IHJlbmRlck5hbWVkRmxvd1RocmVhZENvbnRhaW5lcihvd25lcikpCi0gICAgICAgICAg
ICBjb250YWluZXJGbG93VGhyZWFkLT5hZGRGbG93Q2hpbGQobmV3Q2hpbGQpOwotICAgIH0KKyAg
ICBpZiAobm90aWZ5UmVuZGVyZXIpCisgICAgICAgIG5ld0NoaWxkLT5pbnNlcnRlZEludG9UcmVl
KCk7CiAKICAgICBpZiAoIW93bmVyLT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpIHsKICAgICAg
ICAgUmVuZGVyQ291bnRlcjo6cmVuZGVyZXJTdWJ0cmVlQXR0YWNoZWQobmV3Q2hpbGQpOwpAQCAt
MjMxLDEwICsxOTEsMTAgQEAgdm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmFwcGVuZENoaWxk
Tm9kZShSZW5kZXJPYmplY3QqIG93bmVyLCBSZW5kZXJPYmplY3QqIG4KICAgICAgICAgb3duZXIt
PmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKG93bmVyKTsKIH0K
IAotdm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6Omluc2VydENoaWxkTm9kZShSZW5kZXJPYmpl
Y3QqIG93bmVyLCBSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxk
LCBib29sIGZ1bGxJbnNlcnQpCit2b2lkIFJlbmRlck9iamVjdENoaWxkTGlzdDo6aW5zZXJ0Q2hp
bGROb2RlKFJlbmRlck9iamVjdCogb3duZXIsIFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9i
amVjdCogYmVmb3JlQ2hpbGQsIGJvb2wgbm90aWZ5UmVuZGVyZXIpCiB7CiAgICAgaWYgKCFiZWZv
cmVDaGlsZCkgewotICAgICAgICBhcHBlbmRDaGlsZE5vZGUob3duZXIsIGNoaWxkLCBmdWxsSW5z
ZXJ0KTsKKyAgICAgICAgYXBwZW5kQ2hpbGROb2RlKG93bmVyLCBjaGlsZCwgbm90aWZ5UmVuZGVy
ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNTcsMzkgKzIxNyw4IEBAIHZvaWQg
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjppbnNlcnRDaGlsZE5vZGUoUmVuZGVyT2JqZWN0KiBvd25l
ciwgUmVuZGVyT2JqZWN0KiBjCiAKICAgICBjaGlsZC0+c2V0UGFyZW50KG93bmVyKTsKICAgICAK
LSAgICBpZiAoZnVsbEluc2VydCkgewotICAgICAgICAvLyBLZWVwIG91ciBsYXllciBoaWVyYXJj
aHkgdXBkYXRlZC4gIE9wdGltaXplIGZvciB0aGUgY29tbW9uIGNhc2Ugd2hlcmUgd2UgZG9uJ3Qg
aGF2ZSBhbnkgY2hpbGRyZW4KLSAgICAgICAgLy8gYW5kIGRvbid0IGhhdmUgYSBsYXllciBhdHRh
Y2hlZCB0byBvdXJzZWx2ZXMuCi0gICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IDA7Ci0gICAg
ICAgIGlmIChjaGlsZC0+Zmlyc3RDaGlsZCgpIHx8IGNoaWxkLT5oYXNMYXllcigpKSB7Ci0gICAg
ICAgICAgICBsYXllciA9IG93bmVyLT5lbmNsb3NpbmdMYXllcigpOwotICAgICAgICAgICAgY2hp
bGQtPmFkZExheWVycyhsYXllcik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBpZiB0aGUgbmV3
IGNoaWxkIGlzIHZpc2libGUgYnV0IHRoaXMgb2JqZWN0IHdhcyBub3QsIHRlbGwgdGhlIGxheWVy
IGl0IGhhcyBzb21lIHZpc2libGUgY29udGVudAotICAgICAgICAvLyB0aGF0IG5lZWRzIHRvIGJl
IGRyYXduIGFuZCBsYXllciB2aXNpYmlsaXR5IG9wdGltaXphdGlvbiBjYW4ndCBiZSB1c2VkCi0g
ICAgICAgIGlmIChvd25lci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgY2hp
bGQtPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmICFjaGlsZC0+aGFzTGF5ZXIo
KSkgewotICAgICAgICAgICAgaWYgKCFsYXllcikKLSAgICAgICAgICAgICAgICBsYXllciA9IG93
bmVyLT5lbmNsb3NpbmdMYXllcigpOwotICAgICAgICAgICAgaWYgKGxheWVyKQotICAgICAgICAg
ICAgICAgIGxheWVyLT5zZXRIYXNWaXNpYmxlQ29udGVudCgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKGNoaWxkLT5pc0xpc3RJdGVtKCkpCi0gICAgICAgICAgICB0b1JlbmRlckxpc3RJdGVt
KGNoaWxkKS0+dXBkYXRlTGlzdE1hcmtlck51bWJlcnMoKTsKLQotICAgICAgICBpZiAoIWNoaWxk
LT5pc0Zsb2F0aW5nKCkgJiYgb3duZXItPmNoaWxkcmVuSW5saW5lKCkpCi0gICAgICAgICAgICBv
d25lci0+ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoY2hpbGQpOwotCi0gICAgICAgIGlmIChj
aGlsZC0+aXNSZW5kZXJSZWdpb24oKSkKLSAgICAgICAgICAgIHRvUmVuZGVyUmVnaW9uKGNoaWxk
KS0+YXR0YWNoUmVnaW9uKCk7Ci0KLSAgICAgICAgLy8gQ2FsbGluZyBhdHRhY2hRdW90ZSgpIGhl
cmUgd291bGQgYmUgdG9vIGVhcmx5IChiZWZvcmUgYW5vbnltb3VzIHJlbmRlcmVycyBhcmUgaW5z
ZXJ0ZWQpCi0gICAgICAgIC8vIHNlZSBhcHBlbmRDaGlsZCgpIGZvciBtb3JlIGV4cGxhbmF0aW9u
LgotCi0gICAgICAgIGlmIChSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIGNvbnRhaW5lckZsb3dUaHJl
YWQgPSByZW5kZXJOYW1lZEZsb3dUaHJlYWRDb250YWluZXIob3duZXIpKQotICAgICAgICAgICAg
Y29udGFpbmVyRmxvd1RocmVhZC0+YWRkRmxvd0NoaWxkKGNoaWxkLCBiZWZvcmVDaGlsZCk7Ci0g
ICAgfQorICAgIGlmIChub3RpZnlSZW5kZXJlcikKKyAgICAgICAgY2hpbGQtPmluc2VydGVkSW50
b1RyZWUoKTsKIAogICAgIGlmICghb3duZXItPmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkgewog
ICAgICAgICBSZW5kZXJDb3VudGVyOjpyZW5kZXJlclN1YnRyZWVBdHRhY2hlZChjaGlsZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmgKaW5k
ZXggY2ZlOTAyNjE3ZWU1ZWM0ZGFjOWMwMjhlYTI0NzUzYTk4MGIzNmUxNi4uNjU4M2Q1MWI3YzBj
MTMyN2Y0MTNhNzc4YmIxNTZhMzVlNGJiMTc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaApAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkZXN0cm95TGVmdG92ZXJDaGlsZHJlbigpOwogCiAgICAgUmVuZGVyT2JqZWN0
KiByZW1vdmVDaGlsZE5vZGUoUmVuZGVyT2JqZWN0KiBvd25lciwgUmVuZGVyT2JqZWN0KiwgYm9v
bCBmdWxsUmVtb3ZlID0gdHJ1ZSk7Ci0gICAgdm9pZCBhcHBlbmRDaGlsZE5vZGUoUmVuZGVyT2Jq
ZWN0KiBvd25lciwgUmVuZGVyT2JqZWN0KiwgYm9vbCBmdWxsQXBwZW5kID0gdHJ1ZSk7Ci0gICAg
dm9pZCBpbnNlcnRDaGlsZE5vZGUoUmVuZGVyT2JqZWN0KiBvd25lciwgUmVuZGVyT2JqZWN0KiBj
aGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmUsIGJvb2wgZnVsbEluc2VydCA9IHRydWUpOworICAg
IHZvaWQgYXBwZW5kQ2hpbGROb2RlKFJlbmRlck9iamVjdCogb3duZXIsIFJlbmRlck9iamVjdCos
IGJvb2wgbm90aWZ5UmVuZGVyZXIgPSB0cnVlKTsKKyAgICB2b2lkIGluc2VydENoaWxkTm9kZShS
ZW5kZXJPYmplY3QqIG93bmVyLCBSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJl
Zm9yZSwgYm9vbCBub3RpZnlSZW5kZXJlciA9IHRydWUpOwogCiAgICAgdm9pZCB1cGRhdGVCZWZv
cmVBZnRlckNvbnRlbnQoUmVuZGVyT2JqZWN0KiBvd25lciwgUHNldWRvSWQgdHlwZSwgY29uc3Qg
UmVuZGVyT2JqZWN0KiBzdHlsZWRPYmplY3QgPSAwKTsKICAgICBSZW5kZXJPYmplY3QqIGJlZm9y
ZVBzZXVkb0VsZW1lbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG93bmVyKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKaW5kZXggMDA4YjUzNGQyN2I0NGYy
OWUwODhjYWNmYjI0YzFiY2E2NzEzNmZhNC4uNzg2ZjgzMTk4OTllY2IxNTljYTYxYzI0NGFlNmZh
NGI0NzMxOTUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1
b3RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKQEAgLTQ0
LDYgKzQ0LDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IG9yaWdpbmFsVGV4dCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgpIE9WRVJSSURFOwogCisgICAg
Ly8gV2UgZG9uJ3Qgb3ZlcnJpZGUgaW5zZXJ0ZWRJbnRvVHJlZSB0byBjYWxsIGF0dGFjaFF1b3Rl
KCkgYXMgaXQgd291bGQgYmUgYXR0YWNoZWQKKyAgICAvLyB0b28gZWFybHkgYW5kIGdldCB0aGUg
d3JvbmcgZGVwdGggc2luY2UgZ2VuZXJhdGVkIGNvbnRlbnQgaXMgaW5zZXJ0ZWQgaW50byBhbm9u
eW1vdXMKKyAgICAvLyByZW5kZXJlcnMgYmVmb3JlIGdvaW5nIGludG8gdGhlIG1haW4gcmVuZGVy
IHRyZWUuIE9uY2Ugd2UgY2FuIGVuc3VyZSB0aGF0IGluc2VydEludG9UcmVlLAorICAgIC8vIGlz
IGNhbGxlZCBvbiBhbiBhdHRhY2hlZCB0cmVlLCB3ZSBzaG91bGQgb3ZlcnJpZGUgaXQgaGVyZS4K
KwogICAgIGNvbnN0IFF1b3Rlc0RhdGEqIHF1b3Rlc0RhdGEoKSBjb25zdDsKICAgICB2b2lkIHVw
ZGF0ZURlcHRoKCk7CiAgICAgYm9vbCBpc0F0dGFjaGVkKCkgeyByZXR1cm4gbV9hdHRhY2hlZDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAppbmRleCAwNjgyYWM5
MjI0NzkxYTEzNmM5NjU1ODA0NGRlNjAwMzM3MDA0OTJiLi5jMmI1MGNiZGQzZmE5NmVlY2M0YWQw
YjE3YThlMGM0ODgwYjM2Nzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmNwcApAQCAtMzU3LDYgKzM1NywxMyBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6cmVzdG9yZVJl
Z2lvbk9iamVjdHNPcmlnaW5hbFN0eWxlKCkKICAgICBtX3JlbmRlck9iamVjdFJlZ2lvblN0eWxl
LnN3YXAodGVtcCk7CiB9CiAKK3ZvaWQgUmVuZGVyUmVnaW9uOjppbnNlcnRlZEludG9UcmVlKCkK
K3sKKyAgICBSZW5kZXJSZXBsYWNlZDo6aW5zZXJ0ZWRJbnRvVHJlZSgpOworCisgICAgYXR0YWNo
UmVnaW9uKCk7Cit9CisKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlclJlZ2lvbjo6Y29t
cHV0ZVN0eWxlSW5SZWdpb24oY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgQVNT
RVJUKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKaW5kZXgg
NjA5M2E5YzAzMGYzZWVjYzFkY2U0MmY0ODBiMTdkNmUzMjk2MGIyNS4uMDgxN2Q0ODJjMDViNGJi
ZGU0ODAwZTZhYTEyMmI1MTk1YzJlYTQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uaApAQCAtMTAwLDYgKzEwMCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclJlZ2lv
biI7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKCkgT1ZFUlJJREU7CisK
ICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjb21wdXRlU3R5bGVJblJlZ2lvbihjb25zdCBS
ZW5kZXJPYmplY3QqKTsKICAgICB2b2lkIGNvbXB1dGVDaGlsZHJlblN0eWxlSW5SZWdpb24oY29u
c3QgUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBzZXRSZWdpb25PYmplY3RzUmVnaW9uU3R5bGUo
KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>