<?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>25494</bug_id>
          
          <creation_ts>2009-04-30 15:00:06 -0700</creation_ts>
          <short_desc>Add more Position constructor functions and make them all inline</short_desc>
          <delta_ts>2009-09-09 16:26:37 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>darin</cc>
    
    <cc>jparent</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>119525</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-30 15:00:06 -0700</bug_when>
    <thetext>add PositionConstructors.h in preparation for adding more position constructor functions

It seems no matter what I do, the Position constructors remain confusing.  So I think we&apos;ll likely move away from them in the future and move towards constructor functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119526</commentid>
    <comment_count>1</comment_count>
      <attachid>29923</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-30 15:00:29 -0700</bug_when>
    <thetext>Created attachment 29923
Add PositionConstructors.h

 26 files changed, 142 insertions(+), 51 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119527</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-30 15:01:24 -0700</bug_when>
    <thetext>My next step will be to rename positionBeforeNode to positionInParentBeforeNode and add a positionBeforeNode which returns a neighbor anchored position (which is more efficient to construct and sufficient in many cases... and better in some others!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119531</commentid>
    <comment_count>3</comment_count>
      <attachid>29924</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-30 15:37:29 -0700</bug_when>
    <thetext>Created attachment 29924
Add PositionConstructors.h

 26 files changed, 148 insertions(+), 51 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119532</commentid>
    <comment_count>4</comment_count>
      <attachid>29923</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-30 15:37:46 -0700</bug_when>
    <thetext>Comment on attachment 29923
Add PositionConstructors.h

Uploaded one with a slightly nicer changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119538</commentid>
    <comment_count>5</comment_count>
      <attachid>29926</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-30 16:15:12 -0700</bug_when>
    <thetext>Created attachment 29926
Rename positionBeforeNode to positionInParentBeforeNode

 15 files changed, 90 insertions(+), 39 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119539</commentid>
    <comment_count>6</comment_count>
      <attachid>29927</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-30 16:15:13 -0700</bug_when>
    <thetext>Created attachment 29927
Add more position constructors

 6 files changed, 64 insertions(+), 8 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122608</commentid>
    <comment_count>7</comment_count>
      <attachid>29924</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-22 01:35:40 -0700</bug_when>
    <thetext>Comment on attachment 29924
Add PositionConstructors.h

I don&apos;t think calling this header PositionConstructors.h is right. &quot;Constructor&quot; means a specific thing in C++, and these aren&apos;t it, so it&apos;s kind of confusing.

I actually think it&apos;s fine for these functions to be in Position.h, since they are effectively part of the interface to Position, but if you can think of a good alternate header name, that&apos;s ok too.

Also, while I&apos;m nitpicking, I don&apos;t think the names of functions that take nodes necessarily need Node in them.It could just be:

static inline Position positionBefore(const Node* node)
static inline Position positionAfter(const Node* node)
static inline Position firstDeepEditingPosition(Node* anchorNode)
static inline Position lastDeepEditingPosition(Node* anchorNode)

r- for the header name. Function renames are optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122609</commentid>
    <comment_count>8</comment_count>
      <attachid>29926</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-22 01:37:03 -0700</bug_when>
    <thetext>Comment on attachment 29926
Rename positionBeforeNode to positionInParentBeforeNode

I repeat my earlier comments about removing &quot;Node&quot; from the names of these functions. Otherwise looks ok, but this depends on the previous patch which I r-&apos;d, so r- for this too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122610</commentid>
    <comment_count>9</comment_count>
      <attachid>29927</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-22 01:38:36 -0700</bug_when>
    <thetext>Comment on attachment 29927
Add more position constructors

r- because this depends on the previous r-&apos;d patches. Also: I would request that you not add unused functions. Please add them with at least one real use that has test coverage, so we don&apos;t have untested dead code in the tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122612</commentid>
    <comment_count>10</comment_count>
      <attachid>29924</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-22 01:39:42 -0700</bug_when>
    <thetext>Comment on attachment 29924
Add PositionConstructors.h

I forgot to mention before. Functions in headers should just be &quot;inline&quot;, not &quot;static inline&quot;. This also applies to the other two patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123886</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-01 16:00:30 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 29924 [review])
&gt; I don&apos;t think calling this header PositionConstructors.h is right.
&gt; &quot;Constructor&quot; means a specific thing in C++, and these aren&apos;t it, so it&apos;s kind
&gt; of confusing.
&gt; 
&gt; I actually think it&apos;s fine for these functions to be in Position.h, since they
&gt; are effectively part of the interface to Position, but if you can think of a
&gt; good alternate header name, that&apos;s ok too.

I think a separate header is better for keeping more classes out of Position.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123896</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-01 17:16:54 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 29927 [review])
&gt; r- because this depends on the previous r-&apos;d patches. Also: I would request
&gt; that you not add unused functions. Please add them with at least one real use
&gt; that has test coverage, so we don&apos;t have untested dead code in the tree.

These get used in later patches in this series.  But I&apos;ve been trying to keep the patches small.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123897</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-01 17:18:07 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 29926 [review])
&gt; I repeat my earlier comments about removing &quot;Node&quot; from the names of these
&gt; functions. Otherwise looks ok, but this depends on the previous patch which I
&gt; r-&apos;d, so r- for this too.

These get renamed in the next patch to positionInParentBeforeNode.  I could rename that to positionBeforeInParent, but I think that&apos;s more confusion.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123898</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-01 17:19:13 -0700</bug_when>
    <thetext>Ok, uploading a new first patch only changing the header name from PositionContructors to PositionCreationFunctions.h

No other changes to the patches (except making them apply to TOT).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123899</commentid>
    <comment_count>15</comment_count>
      <attachid>30846</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-01 17:19:32 -0700</bug_when>
    <thetext>Created attachment 30846
Add PositionCreationFunctions.h

 26 files changed, 148 insertions(+), 51 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123900</commentid>
    <comment_count>16</comment_count>
      <attachid>30847</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-01 17:19:34 -0700</bug_when>
    <thetext>Created attachment 30847
Rename positionBeforeNode to positionInParentBeforeNode

 15 files changed, 90 insertions(+), 39 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123901</commentid>
    <comment_count>17</comment_count>
      <attachid>30848</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-01 17:19:36 -0700</bug_when>
    <thetext>Created attachment 30848
Add more position constructors

 6 files changed, 64 insertions(+), 8 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124037</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-02 13:16:37 -0700</bug_when>
    <thetext>Oh, I remember now why I split these out of Position.h... so that Position.h didn&apos;t have to include htmlediting.h for lastOffsetForEditing.  Eventually lastOffsetForEditing will probably move into some Position file.

Maybe I should just move first/lastDeepEditingPositionForNode into htmlediting.h and leave the rest in Position.h.

It sounds like both Justin and Maciej think these patches are just fine... I just need an r+ from someone. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127804</commentid>
    <comment_count>19</comment_count>
      <attachid>30846</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-06-23 20:39:52 -0700</bug_when>
    <thetext>Comment on attachment 30846
Add PositionCreationFunctions.h

r=me but please apply your recently suggested plan to keep most of this in Position.h itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127805</commentid>
    <comment_count>20</comment_count>
      <attachid>30847</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-06-23 20:41:53 -0700</bug_when>
    <thetext>Comment on attachment 30847
Rename positionBeforeNode to positionInParentBeforeNode

This still has &quot;static inline&quot; functions in headers, which I am pretty sure is wrong. I think you missed this comment before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127806</commentid>
    <comment_count>21</comment_count>
      <attachid>30848</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-06-23 20:42:36 -0700</bug_when>
    <thetext>Comment on attachment 30848
Add more position constructors

Once again I am pretty sure functions in headers should just be &quot;inline&quot;, not &quot;static inline&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135917</commentid>
    <comment_count>22</comment_count>
      <attachid>33799</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-30 12:07:38 -0700</bug_when>
    <thetext>Created attachment 33799
Add more position constructors


---
 6 files changed, 62 insertions(+), 8 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135918</commentid>
    <comment_count>23</comment_count>
      <attachid>33800</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-30 12:07:47 -0700</bug_when>
    <thetext>Created attachment 33800
Rename positionBeforeNode to positionInParentBeforeNode


---
 16 files changed, 96 insertions(+), 46 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135919</commentid>
    <comment_count>24</comment_count>
      <attachid>33801</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-30 12:07:54 -0700</bug_when>
    <thetext>Created attachment 33801
Move them back to Position.h per mjs&apos;s request


---
 7 files changed, 68 insertions(+), 45 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135922</commentid>
    <comment_count>25</comment_count>
      <attachid>33799</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-30 12:09:39 -0700</bug_when>
    <thetext>Comment on attachment 33799
Add more position constructors

A victim of bug 27849.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135923</commentid>
    <comment_count>26</comment_count>
      <attachid>33800</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-30 12:09:44 -0700</bug_when>
    <thetext>Comment on attachment 33800
Rename positionBeforeNode to positionInParentBeforeNode

A victim of bug 27849.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135928</commentid>
    <comment_count>27</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-30 12:16:02 -0700</bug_when>
    <thetext>The patches are posted here in reverse order.  Again due to some minor troubles with post-commits. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138925</commentid>
    <comment_count>28</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-08-11 02:15:43 -0700</bug_when>
    <thetext>Reviewed Notification.cpp. Event listener logic looks flawless now. Kudos!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138926</commentid>
    <comment_count>29</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-08-11 02:18:20 -0700</bug_when>
    <thetext>Oops, commented in wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143303</commentid>
    <comment_count>30</comment_count>
      <attachid>33799</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-27 23:10:49 -0700</bug_when>
    <thetext>Comment on attachment 33799
Add more position constructors

yay for removing duplicate code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143304</commentid>
    <comment_count>31</comment_count>
      <attachid>33800</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-27 23:13:03 -0700</bug_when>
    <thetext>Comment on attachment 33800
Rename positionBeforeNode to positionInParentBeforeNode

This patch appears to be a pure alpha-transformation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145998</commentid>
    <comment_count>32</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 16:26:37 -0700</bug_when>
    <thetext>Landed as r48233, r48234, r48235.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29923</attachid>
            <date>2009-04-30 15:00:29 -0700</date>
            <delta_ts>2009-04-30 15:37:46 -0700</delta_ts>
            <desc>Add PositionConstructors.h</desc>
            <filename>Add-PositionConstructors.h.patch</filename>
            <type>text/plain</type>
            <size>20312</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGJmMzFmZTBlM2VlMjljMTM2MTFlMmU5M2RlNjY5NWJhMDU2MDg2YQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NzdlM2MxLi45MmQ1YTc2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ2IEBACisyMDA5LTA0LTMwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
UG9zaXRpb25Db25zdHJ1Y3RvcnMuaAorCisgICAgICAgIE1vdmUgdGhlIHBvc2l0aW9uIGNyZWF0
aW9uIGZ1bmN0aW9ucyBpbnRvIHRoZWlyIG93biBoZWFkZXIKKyAgICAgICAgYW5kIG1ha2UgdGhl
bSBpbmxpbmUuICBJJ3ZlIG1hZGUgdGhlbSBpbmxpbmUgdG8gYXZvaWQgdGhlCisgICAgICAgIHJl
Zi1jaHVybiBjb25jZXJuLiAgSSd2ZSBtb3ZlZCB0aGVtIHRvIHRoZWlyIG93biBoZWFkZXIgaW4K
KyAgICAgICAgcHJlcGFyYXRpb24gZm9yIGFkZGluZyBtb3JlIChub3cgdGhhdCB3ZSBjYW4gc3Vw
cG9ydCBwb3NpdGlvbnMKKyAgICAgICAgd2l0aCBkaWZmZXJlbnQgYW5jaG9yIHR5cGVzKS4KKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBk
b20vUG9zaXRpb24uY3BwOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbi5oOgorICAgICAgICAqIGRv
bS9Qb3NpdGlvbkNvbnN0cnVjdG9ycy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0
aW9uQmVmb3JlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpwb3NpdGlvbkFmdGVyTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpmaXJzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6Omxhc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSk6CisgICAgICAgICog
ZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgor
ICAgICAgICAqIGVkaXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRp
bmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6CisgICAgICAgICogZWRpdGluZy9EZWxldGVT
ZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydExpbmVCcmVha0Nv
bW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwOgorICAg
ICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgICogZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHA6CisgICAgICAgICogZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25D
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om1v
dmVUbyk6CisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKiBl
ZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRp
bmcuY3BwOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuaDoKKyAgICAgICAgKiBlZGl0
aW5nL3Zpc2libGVfdW5pdHMuY3BwOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHA6CisgICAgICAgICogcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcDoKKwogMjAwOS0wNC0wMiAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY0YTRkNTIuLjUyZjFlNmQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTYyLDYgKzI5NjIsNyBA
QAogCQlBOEY1QzBCOTBGOTI4NUFDMDA5OEUwNkIgLyogUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThGNUMwQjcw
RjkyODVBQzAwOThFMDZCIC8qIFJlbmRlclNWR01vZGVsT2JqZWN0LmNwcCAqLzsgfTsKIAkJQThG
QTZFNUQwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0
ZXJuLmggKi87IH07CiAJCUE4RkE2RTVFMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RkE2RTVDMEU0
Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCAqLzsgfTsKKwkJQThGRTM3QzMwRkFBNTA0RDAw
Mjg2QjgxIC8qIFBvc2l0aW9uQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEZFMzdDMjBGQUE1MDREMDAyODZCODEgLyogUG9zaXRp
b25Db25zdHJ1Y3RvcnMuaCAqLzsgfTsKIAkJQTlDNkU0RTMwRDc0NUUwNTAwNjQ0MkU5IC8qIE1p
bWVUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE5QzZFNEUxMEQ3NDVFMDUwMDY0NDJFOSAvKiBNaW1lVHlwZS5jcHAgKi87IH07CiAJCUE5QzZF
NEU0MEQ3NDVFMDUwMDY0NDJFOSAvKiBNaW1lVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTlDNkU0RTIwRDc0NUUwNTAwNjQ0MkU5IC8qIE1pbWVU
eXBlLmggKi87IH07CiAJCUE5QzZFNEU3MEQ3NDVFMTgwMDY0NDJFOSAvKiBNaW1lVHlwZUFycmF5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE5QzZF
NEU1MEQ3NDVFMTgwMDY0NDJFOSAvKiBNaW1lVHlwZUFycmF5LmNwcCAqLzsgfTsKQEAgLTc1OTUs
NiArNzU5Niw3IEBACiAJCUE4RjVDMEI3MEY5Mjg1QUMwMDk4RTA2QiAvKiBSZW5kZXJTVkdNb2Rl
bE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJT
VkdNb2RlbE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RkE2RTVC
MEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThGQTZFNUMw
RTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4
RkUzN0MyMEZBQTUwNEQwMDI4NkI4MSAvKiBQb3NpdGlvbkNvbnN0cnVjdG9ycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkNvbnN0cnVjdG9ycy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBOUM2RTRFMTBENzQ1RTA1MDA2NDQyRTkgLyogTWltZVR5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1pbWVUeXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTlDNkU0RTIwRDc0NUUwNTAwNjQ0MkU5
IC8qIE1pbWVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNaW1lVHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOUM2RTRFNTBENzQ1RTE4MDA2NDQy
RTkgLyogTWltZVR5cGVBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWltZVR5cGVBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NDYwMSw2ICsxNDYwMyw3IEBACiAJCQkJNTRDNTBGN0EwRTgwMURGMzAwOTgzMkEwIC8qIFhNTFRv
a2VuaXplckxpYnhtbDIuY3BwICovLAogCQkJCTVEMTVFM0FBMEY5RTZBQzEwMDlFMEUzRiAvKiBY
TUxUb2tlbml6ZXJTY29wZS5oICovLAogCQkJCTVEMTVFM0E5MEY5RTZBQzEwMDlFMEUzRiAvKiBY
TUxUb2tlbml6ZXJTY29wZS5jcHAgKi8sCisJCQkJQThGRTM3QzIwRkFBNTA0RDAwMjg2QjgxIC8q
IFBvc2l0aW9uQ29uc3RydWN0b3JzLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRvbTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjg2NSw2ICsxNjg2OCw3IEBACiAJCQkJN0E2NzRC
REMwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUQxNUUzQUMwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTFRva2VuaXplclNjb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzNzc0QUJBNTBGQTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRl
c3RSZXF1ZXN0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBOEZFMzdDMzBGQUE1MDREMDAy
ODZCODEgLyogUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmlu
ZGV4IDBkZDQ4ZDQuLmMwN2E2NTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNw
cAorKysgYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyTmFtZXMuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJQ
b3NpdGlvbkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJU
ZXh0LmgiCkBAIC0xMTEzLDI4ICsxMTE0LDcgQEAgdm9pZCBQb3NpdGlvbjo6c2hvd1RyZWVGb3JU
aGlzKCkgY29uc3QKIAogI2VuZGlmCiAKLVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24oY29uc3QgUmFu
Z2UqIHIpCi17Ci0gICAgcmV0dXJuIHIgPyByLT5zdGFydFBvc2l0aW9uKCkgOiBQb3NpdGlvbigp
OwotfQotCi1Qb3NpdGlvbiBlbmRQb3NpdGlvbihjb25zdCBSYW5nZSogcikKLXsKLSAgICByZXR1
cm4gciA/IHItPmVuZFBvc2l0aW9uKCkgOiBQb3NpdGlvbigpOwotfQogCi0vLyBOT1RFOiBmaXJz
dC9sYXN0RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUgY2FuIHJldHVybiAiZWRpdGluZyBwb3Np
dGlvbnMiIChsaWtlIFtpbWcsIDBdKQotLy8gZm9yIGVsZW1lbnRzIHdoaWNoIGVkaXRpbmcgImln
bm9yZXMiLiAgdGhlIHJlc3Qgb2YgdGhlIGVkaXRpbmcgY29kZSB3aWxsIHRyZWF0IFtpbWcsIDBd
Ci0vLyBhcyAidGhlIGxhc3QgcG9zaXRpb24gYmVmb3JlIHRoZSBpbWciCi1Qb3NpdGlvbiBmaXJz
dERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgcmV0dXJuIFBv
c2l0aW9uKG5vZGUsIDApOwotfQotCi1Qb3NpdGlvbiBsYXN0RGVlcEVkaXRpbmdQb3NpdGlvbkZv
ck5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICByZXR1cm4gUG9zaXRpb24obm9kZSwgbGFzdE9mZnNl
dEZvckVkaXRpbmcobm9kZSkpOwotfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmlu
ZGV4IDU3ZjczZWMuLjY5MWE3ZmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgK
KysrIGIvV2ViQ29yZS9kb20vUG9zaXRpb24uaApAQCAtMTg4LDE1ICsxODgsNiBAQCBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikKICAg
ICByZXR1cm4gIShhID09IGIpOwogfQogCi1Qb3NpdGlvbiBzdGFydFBvc2l0aW9uKGNvbnN0IFJh
bmdlKik7Ci1Qb3NpdGlvbiBlbmRQb3NpdGlvbihjb25zdCBSYW5nZSopOwotCi0vLyBOT1RFOiBm
aXJzdC9sYXN0RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUgY2FuIHJldHVybiAiZWRpdGluZyBw
b3NpdGlvbnMiIChsaWtlIFtpbWcsIDBdKQotLy8gZm9yIGVsZW1lbnRzIHdoaWNoIGVkaXRpbmcg
Imlnbm9yZXMiLiAgdGhlIHJlc3Qgb2YgdGhlIGVkaXRpbmcgY29kZSB3aWxsIHRyZWF0IFtpbWcs
IDBdCi0vLyBhcyAidGhlIGxhc3QgcG9zaXRpb24gYmVmb3JlIHRoZSBpbWciCi1Qb3NpdGlvbiBm
aXJzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKE5vZGUqKTsKLVBvc2l0aW9uIGxhc3REZWVw
RWRpdGluZ1Bvc2l0aW9uRm9yTm9kZShOb2RlKik7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uQ29uc3Ry
dWN0b3JzLmggYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbkNvbnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MzM2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2RvbS9Qb3NpdGlvbkNvbnN0cnVjdG9ycy5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFBvc2l0aW9uQ29uc3RydWN0b3JzX2gKKyNkZWZpbmUgUG9zaXRpb25Db25zdHJ1
Y3RvcnNfaAorCisjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIgLy8gZm9yIGxhc3RPZmZzZXRGb3JF
ZGl0aW5nCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlBvc2l0aW9uLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworLy8gV2UgZGVmaW5lIHBvc2l0aW9uIGNyZWF0aW9uIGZ1bmN0aW9u
cyB0byBtYWtlIGNhbGxzaXRlcyBtb3JlIHJlYWRhYmxlLgorLy8gVGhlc2UgYXJlIGlubGluZSB0
byBwcmV2ZW50IHJlZi1jaHVybiB3aGVuIHJldHVybmluZyBhIFBvc2l0aW9uIG9iamVjdC4KKy8v
IElmIHdlIGV2ZXIgYWRkIGEgUGFzc1Bvc2l0aW9uIHdlIGNhbiBtYWtlIHRoZXNlIG5vbi1pbmxp
bmUuCisKK3N0YXRpYyBpbmxpbmUgUG9zaXRpb24gcG9zaXRpb25CZWZvcmVOb2RlKGNvbnN0IE5v
ZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSk7CisgICAgcmV0dXJu
IFBvc2l0aW9uKG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+bm9kZUluZGV4KCksIFBvc2l0aW9u
OjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOworfQorCitzdGF0aWMgaW5saW5lIFBvc2l0aW9u
IHBvc2l0aW9uQWZ0ZXJOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUt
PnBhcmVudE5vZGUoKSk7CisgICAgcmV0dXJuIFBvc2l0aW9uKG5vZGUtPnBhcmVudE5vZGUoKSwg
bm9kZS0+bm9kZUluZGV4KCkgKyAxLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9y
KTsKK30KKworLy8gTk9URTogZmlyc3QvbGFzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlIHJl
dHVybiAiZWRpdGluZyBwb3NpdGlvbnMiIChsaWtlIFtpbWcsIDBdKQorLy8gZm9yIGVsZW1lbnRz
IHdoaWNoIGVkaXRpbmcgaWdub3Jlcy4gIFRoZSByZXN0IG9mIHRoZSBlZGl0aW5nIGNvZGUgd2ls
bCB0cmVhdCBbaW1nLCAwXQorLy8gYXMgInRoZSBsYXN0IHBvc2l0aW9uIGJlZm9yZSB0aGUgaW1n
Ii4KK3N0YXRpYyBpbmxpbmUgUG9zaXRpb24gZmlyc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9k
ZShOb2RlKiBhbmNob3JOb2RlKQoreworICAgIEFTU0VSVChhbmNob3JOb2RlKTsKKyAgICByZXR1
cm4gUG9zaXRpb24oYW5jaG9yTm9kZSwgMCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUG9zaXRpb24g
bGFzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKE5vZGUqIGFuY2hvck5vZGUpCit7CisgICAg
QVNTRVJUKGFuY2hvck5vZGUpOworICAgIHJldHVybiBQb3NpdGlvbihhbmNob3JOb2RlLCBsYXN0
T2Zmc2V0Rm9yRWRpdGluZyhhbmNob3JOb2RlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFBvc2l0aW9uQ29uc3RydWN0b3JzX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwIGIvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRv
ci5jcHAKaW5kZXggNzgxZDM1Mi4uNjVmYWRmNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUG9z
aXRpb25JdGVyYXRvci5jcHAKKysrIGIvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQb3NpdGlvbkl0ZXJhdG9yLmgiCiAKICNpbmNs
dWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRl
ICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IGNlNTNjZGYuLmZhZTkzODkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkhU
TUxJbnRlcmNoYW5nZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk5vZGVM
aXN0LmgiCisjaW5jbHVkZSAiUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJSYW5n
ZS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlRleHQuaCIKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IGU3MTkxM2QuLmRmMzk4MzMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysr
IGIvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtNDYsNiArNDYs
NyBAQAogI2luY2x1ZGUgIkluc2VydFRleHRDb21tYW5kLmgiCiAjaW5jbHVkZSAiSm9pblRleHRO
b2Rlc0NvbW1hbmQuaCIKICNpbmNsdWRlICJNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5o
IgorI2luY2x1ZGUgIlBvc2l0aW9uQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIK
ICNpbmNsdWRlICJSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuaCIKICNpbmNsdWRlICJSZW1vdmVO
b2RlQ29tbWFuZC5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21t
YW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKaW5kZXggMjYz
ZmVhYi4uZWY1NWYyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21t
YW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwCkBAIC0y
NSwxMCArMjUsMTEgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNyZWF0ZUxp
bmtDb21tYW5kLmgiCi0jaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKLSNpbmNsdWRlICJUZXh0Lmgi
CiAKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgorI2luY2x1ZGUgImh0bWxlZGl0aW5n
LmgiCisjaW5jbHVkZSAiUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCIKKyNpbmNsdWRlICJUZXh0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0Rl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNv
bnRyb2xsZXIuY3BwCmluZGV4IDFkMmMzZTguLmY0NTg0NWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcv
RGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNs
dWRlICJQb3NpdGlvbkNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVk
ZSAiUmVtb3ZlTm9kZUNvbW1hbmQuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAxMmMwNzQzLi5jNDY5ZTZi
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
KysrIGIvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0zOCw2
ICszOCw3IEBACiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUgIlBvc2l0aW9uQ29uc3RydWN0
b3JzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuaCIKICNpbmNsdWRlICJUZXh0LmgiCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKaW5kZXggZjAyMDQ1OS4uOWI0OWZjNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCisrKyBiL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlICJQb3NpdGlvbkNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUg
IlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcCBiL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKaW5kZXggYWE0ODc2MS4uNzJmMDYwMSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlBvc2l0aW9uQ29uc3RydWN0b3JzLmgiCiAjaW5j
bHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5j
cHAgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAK
aW5kZXggNGQ1YzNkMS4uYWZmMzBkOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9JbnNl
cnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5z
ZXJ0TGluZUJyZWFrQ29tbWFuZC5oIgorI2luY2x1ZGUgIlBvc2l0aW9uQ29uc3RydWN0b3JzLmgi
CiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwIGIvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRleCBiZjZmZDE5Li41ZDE0MTcw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCisrKyBi
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiSFRNTEludGVyY2hhbmdlLmgiCiAjaW5j
bHVkZSAiaHRtbGVkaXRpbmcuaCIKKyNpbmNsdWRlICJQb3NpdGlvbkNvbnN0cnVjdG9ycy5oIgog
I2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKICNp
bmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmNwcAppbmRleCA2ZWQ2YTQ0Li5hMTdmMjFmIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRl
ICJIVE1MSW50ZXJjaGFuZ2UuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCIKICNp
bmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU21hcnRSZXBsYWNlLmgi
CiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcv
U2VsZWN0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJv
bGxlci5jcHAKaW5kZXggM2JhZmJlNy4uZTIwMTI5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rp
b25Db250cm9sbGVyLmNwcApAQCAtOTEsNyArOTEsOCBAQCB2b2lkIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6Om1vdmVUbyhjb25zdCBQb3NpdGlvbiAmcG9zLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wg
dQogCiB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vdmVUbyhjb25zdCBSYW5nZSAqciwgRUFm
ZmluaXR5IGFmZmluaXR5LCBib29sIHVzZXJUcmlnZ2VyZWQpCiB7Ci0gICAgc2V0U2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbihyKSwgZW5kUG9zaXRpb24ociksIGFmZmlu
aXR5KSwgdHJ1ZSwgdHJ1ZSwgdXNlclRyaWdnZXJlZCk7CisgICAgVmlzaWJsZVNlbGVjdGlvbiBz
ZWxlY3Rpb24gPSByID8gVmlzaWJsZVNlbGVjdGlvbihyLT5zdGFydFBvc2l0aW9uKCksIHItPmVu
ZFBvc2l0aW9uKCksIGFmZmluaXR5KSA6IFZpc2libGVTZWxlY3Rpb24oUG9zaXRpb24oKSwgUG9z
aXRpb24oKSwgYWZmaW5pdHkpOworICAgIHNldFNlbGVjdGlvbihzZWxlY3Rpb24sIHRydWUsIHRy
dWUsIHVzZXJUcmlnZ2VyZWQpOwogfQogCiB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vdmVU
byhjb25zdCBQb3NpdGlvbiAmYmFzZSwgY29uc3QgUG9zaXRpb24gJmV4dGVudCwgRUFmZmluaXR5
IGFmZmluaXR5LCBib29sIHVzZXJUcmlnZ2VyZWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRp
bmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAK
aW5kZXggYmYzN2YyMy4uNzIxYjU1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkluc2VydExpbmVCcmVha0NvbW1hbmQuaCIKICNpbmNs
dWRlICJJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmgiCiAjaW5jbHVkZSAiSW5zZXJ0
VGV4dENvbW1hbmQuaCIKKyNpbmNsdWRlICJQb3NpdGlvbkNvbnN0cnVjdG9ycy5oIgogI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlU2VsZWN0aW9uLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNw
cAppbmRleCA4ODNiY2RiLi4xZjU4NzY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVNlbGVjdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24u
Y3BwCkBAIC0yNiwxNSArMjYsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJW
aXNpYmxlU2VsZWN0aW9uLmgiCiAKLSNpbmNsdWRlICJDaGFyYWN0ZXJOYW1lcy5oIgogI2luY2x1
ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDaGFyYWN0ZXJOYW1lcy5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgi
CisjaW5jbHVkZSAiUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCIKKyNpbmNsdWRlICJSYW5nZS5oIgog
I2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgor
I2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgotI2lu
Y2x1ZGUgIlJhbmdlLmgiCiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUg
PHN0ZGlvLmg+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIv
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCBiNjExNTljLi40YmI2M2U5IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1dlYkNvcmUv
ZWRpdGluZy9odG1sZWRpdGluZy5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT0xpc3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFVM
aXN0RWxlbWVudC5oIgorI2luY2x1ZGUgIlBvc2l0aW9uQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVk
ZSAiUG9zaXRpb25JdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1
ZGUgIlJhbmdlLmgiCkBAIC01NTcsMTggKzU1OCw2IEBAIE5vZGUqIGlzTGFzdFBvc2l0aW9uQmVm
b3JlVGFibGUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCiAgICAgcmV0
dXJuIDA7CiB9CiAKLVBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTm9kZShjb25zdCBOb2RlKiBub2Rl
KQotewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBBU1NFUlQobm9kZS0+cGFyZW50Tm9kZSgp
KQotICAgIHJldHVybiBQb3NpdGlvbihub2RlLT5wYXJlbnROb2RlKCksIG5vZGUtPm5vZGVJbmRl
eCgpKTsKLX0KLQotUG9zaXRpb24gcG9zaXRpb25BZnRlck5vZGUoY29uc3QgTm9kZSogbm9kZSkK
LXsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSkK
LSAgICByZXR1cm4gUG9zaXRpb24obm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5ub2RlSW5kZXgo
KSArIDEpOwotfQotCiBib29sIGlzTGlzdEVsZW1lbnQoTm9kZSAqbikKIHsKICAgICByZXR1cm4g
KG4gJiYgKG4tPmhhc1RhZ05hbWUodWxUYWcpIHx8IG4tPmhhc1RhZ05hbWUob2xUYWcpIHx8IG4t
Pmhhc1RhZ05hbWUoZGxUYWcpKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVk
aXRpbmcuaCBiL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCmluZGV4IDc3NmJlNjguLmJj
ZGFkYTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCisrKyBiL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCkBAIC02OCw5ICs2OCw2IEBAIGNvbnN0IFN0cmlu
ZyYgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpOwogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi1Qb3NpdGlvbiBwb3NpdGlvbkJlZm9yZU5vZGUoY29uc3QgTm9kZSopOwot
UG9zaXRpb24gcG9zaXRpb25BZnRlck5vZGUoY29uc3QgTm9kZSopOwotCiBQYXNzUmVmUHRyPFJh
bmdlPiBhdm9pZEludGVyc2VjdGlvbldpdGhOb2RlKGNvbnN0IFJhbmdlKiwgTm9kZSopOwogVmlz
aWJsZVNlbGVjdGlvbiBhdm9pZEludGVyc2VjdGlvbldpdGhOb2RlKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mLCBOb2RlKik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3Vu
aXRzLmNwcCBiL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAppbmRleCBlOTU2ZDRm
Li5hNGQ5MGM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAK
KysrIGIvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRl
ICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiVGV4
dEJvdW5kYXJpZXMuaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcCBiL1dlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBkY2Nm
ZjgyLi43OTdjZTA0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk5vZGVM
aXN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQb3NpdGlvbkNv
bnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5o
IgogI2luY2x1ZGUgIlJlbmRlckxpc3RNYXJrZXIuaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcGFnZS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA0OTFkMWExLi5iYTM3YjdmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5j
bHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBvc2l0aW9uQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAi
UmVuZGVyRmllbGRzZXQuaCIKICNpbmNsdWRlICJSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oIgog
I2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA5YjY4
YjYyLi4wNGNhYjg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKKyNpbmNsdWRlICJQb3NpdGlvbkNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIlJlbmRl
ckFyZW5hLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxleGlibGVCb3guaCIKICNpbmNsdWRlICJSZW5k
ZXJJbmxpbmUuaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDAxMjNhMGUuLjNj
OWIxMzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNs
dWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRl
ICJSZW5kZXJBcmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlckNvdW50ZXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJGbGV4aWJsZUJveC5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29924</attachid>
            <date>2009-04-30 15:37:29 -0700</date>
            <delta_ts>2009-07-30 12:07:17 -0700</delta_ts>
            <desc>Add PositionConstructors.h</desc>
            <filename>Add-PositionConstructors.h.patch</filename>
            <type>text/plain</type>
            <size>20689</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YmE5OTFiODA2YmMyYzQxYmJiNjY2MDc2MzAwM2UzYmM0NTdjZTNjNApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NzdlM2MxLi5mMGFkYWEx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDUwIEBACisyMDA5LTA0LTMwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
UG9zaXRpb25Db25zdHJ1Y3RvcnMuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjU0OTQKKworICAgICAgICBNb3ZlIHRoZSBwb3NpdGlvbiBjcmVhdGlv
biBmdW5jdGlvbnMgaW50byB0aGVpciBvd24gaGVhZGVyCisgICAgICAgIGFuZCBtYWtlIHRoZW0g
aW5saW5lLiAgSSd2ZSBtYWRlIHRoZW0gaW5saW5lIHRvIGF2b2lkIHRoZQorICAgICAgICByZWYt
Y2h1cm4gY29uY2Vybi4gIEkndmUgbW92ZWQgdGhlbSB0byB0aGVpciBvd24gaGVhZGVyIGluCisg
ICAgICAgIHByZXBhcmF0aW9uIGZvciBhZGRpbmcgbW9yZSAobm93IHRoYXQgd2UgY2FuIHN1cHBv
cnQgcG9zaXRpb25zCisgICAgICAgIHdpdGggZGlmZmVyZW50IGFuY2hvciB0eXBlcykuCisKKyAg
ICAgICAgUmVtb3ZlIHN0YXJ0UG9zaXRpb24oUmFuZ2UqKSBhbmQgZW5kUG9zaXRpb24oUmFuZ2Uq
KSBhcyB0aGV5CisgICAgICAgIHdlcmUgb25seSB1c2VkIGluIG9uZSBwbGFjZS4KKworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vUG9z
aXRpb24uY3BwOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbi5oOgorICAgICAgICAqIGRvbS9Qb3Np
dGlvbkNvbnN0cnVjdG9ycy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uQmVm
b3JlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpwb3NpdGlvbkFmdGVyTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpmaXJzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Omxhc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSk6CisgICAgICAgICogZG9tL1Bv
c2l0aW9uSXRlcmF0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAg
ICAqIGVkaXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRGVs
ZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6CisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rp
b25Db21tYW5kLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQu
Y3BwOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwOgorICAgICAgICAq
IGVkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgICog
ZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHA6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vdmVUbyk6
CisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKiBlZGl0aW5n
L1Zpc2libGVTZWxlY3Rpb24uY3BwOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3Bw
OgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuaDoKKyAgICAgICAgKiBlZGl0aW5nL3Zp
c2libGVfdW5pdHMuY3BwOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6
CisgICAgICAgICogcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcDoKKwogMjAwOS0wNC0wMiAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY0YTRkNTIuLjUyZjFlNmQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTYyLDYgKzI5NjIsNyBAQAogCQlB
OEY1QzBCOTBGOTI4NUFDMDA5OEUwNkIgLyogUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThGNUMwQjcwRjkyODVB
QzAwOThFMDZCIC8qIFJlbmRlclNWR01vZGVsT2JqZWN0LmNwcCAqLzsgfTsKIAkJQThGQTZFNUQw
RTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmgg
Ki87IH07CiAJCUE4RkE2RTVFMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RkE2RTVDMEU0Q0ZERUQw
MEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCAqLzsgfTsKKwkJQThGRTM3QzMwRkFBNTA0RDAwMjg2Qjgx
IC8qIFBvc2l0aW9uQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEZFMzdDMjBGQUE1MDREMDAyODZCODEgLyogUG9zaXRpb25Db25z
dHJ1Y3RvcnMuaCAqLzsgfTsKIAkJQTlDNkU0RTMwRDc0NUUwNTAwNjQ0MkU5IC8qIE1pbWVUeXBl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE5QzZF
NEUxMEQ3NDVFMDUwMDY0NDJFOSAvKiBNaW1lVHlwZS5jcHAgKi87IH07CiAJCUE5QzZFNEU0MEQ3
NDVFMDUwMDY0NDJFOSAvKiBNaW1lVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTlDNkU0RTIwRDc0NUUwNTAwNjQ0MkU5IC8qIE1pbWVUeXBlLmgg
Ki87IH07CiAJCUE5QzZFNEU3MEQ3NDVFMTgwMDY0NDJFOSAvKiBNaW1lVHlwZUFycmF5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE5QzZFNEU1MEQ3
NDVFMTgwMDY0NDJFOSAvKiBNaW1lVHlwZUFycmF5LmNwcCAqLzsgfTsKQEAgLTc1OTUsNiArNzU5
Niw3IEBACiAJCUE4RjVDMEI3MEY5Mjg1QUMwMDk4RTA2QiAvKiBSZW5kZXJTVkdNb2RlbE9iamVj
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdNb2Rl
bE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RkE2RTVCMEU0Q0ZE
RUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThGQTZFNUMwRTRDRkRF
RDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4RkUzN0My
MEZBQTUwNEQwMDI4NkI4MSAvKiBQb3NpdGlvbkNvbnN0cnVjdG9ycy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkNvbnN0cnVjdG9ycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBOUM2RTRFMTBENzQ1RTA1MDA2NDQyRTkgLyogTWltZVR5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1pbWVUeXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTlDNkU0RTIwRDc0NUUwNTAwNjQ0MkU5IC8qIE1p
bWVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNaW1lVHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOUM2RTRFNTBENzQ1RTE4MDA2NDQyRTkgLyog
TWltZVR5cGVBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWltZVR5cGVBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDYwMSw2
ICsxNDYwMyw3IEBACiAJCQkJNTRDNTBGN0EwRTgwMURGMzAwOTgzMkEwIC8qIFhNTFRva2VuaXpl
ckxpYnhtbDIuY3BwICovLAogCQkJCTVEMTVFM0FBMEY5RTZBQzEwMDlFMEUzRiAvKiBYTUxUb2tl
bml6ZXJTY29wZS5oICovLAogCQkJCTVEMTVFM0E5MEY5RTZBQzEwMDlFMEUzRiAvKiBYTUxUb2tl
bml6ZXJTY29wZS5jcHAgKi8sCisJCQkJQThGRTM3QzIwRkFBNTA0RDAwMjg2QjgxIC8qIFBvc2l0
aW9uQ29uc3RydWN0b3JzLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRvbTsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjg2NSw2ICsxNjg2OCw3IEBACiAJCQkJN0E2NzRCREMwRjlF
QkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUQxNUUzQUMwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTFRva2VuaXplclNjb3BlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzNzc0QUJBNTBGQTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1
ZXN0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBOEZFMzdDMzBGQUE1MDREMDAyODZCODEg
LyogUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vUG9zaXRpb24uY3BwIGIvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IDBk
ZDQ4ZDQuLmMwN2E2NTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysg
Yi9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJD
U3RyaW5nLmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyTmFtZXMuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJQb3NpdGlv
bkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJUZXh0Lmgi
CkBAIC0xMTEzLDI4ICsxMTE0LDcgQEAgdm9pZCBQb3NpdGlvbjo6c2hvd1RyZWVGb3JUaGlzKCkg
Y29uc3QKIAogI2VuZGlmCiAKLVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24oY29uc3QgUmFuZ2UqIHIp
Ci17Ci0gICAgcmV0dXJuIHIgPyByLT5zdGFydFBvc2l0aW9uKCkgOiBQb3NpdGlvbigpOwotfQot
Ci1Qb3NpdGlvbiBlbmRQb3NpdGlvbihjb25zdCBSYW5nZSogcikKLXsKLSAgICByZXR1cm4gciA/
IHItPmVuZFBvc2l0aW9uKCkgOiBQb3NpdGlvbigpOwotfQogCi0vLyBOT1RFOiBmaXJzdC9sYXN0
RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUgY2FuIHJldHVybiAiZWRpdGluZyBwb3NpdGlvbnMi
IChsaWtlIFtpbWcsIDBdKQotLy8gZm9yIGVsZW1lbnRzIHdoaWNoIGVkaXRpbmcgImlnbm9yZXMi
LiAgdGhlIHJlc3Qgb2YgdGhlIGVkaXRpbmcgY29kZSB3aWxsIHRyZWF0IFtpbWcsIDBdCi0vLyBh
cyAidGhlIGxhc3QgcG9zaXRpb24gYmVmb3JlIHRoZSBpbWciCi1Qb3NpdGlvbiBmaXJzdERlZXBF
ZGl0aW5nUG9zaXRpb25Gb3JOb2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgcmV0dXJuIFBvc2l0aW9u
KG5vZGUsIDApOwotfQotCi1Qb3NpdGlvbiBsYXN0RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUo
Tm9kZSogbm9kZSkKLXsKLSAgICByZXR1cm4gUG9zaXRpb24obm9kZSwgbGFzdE9mZnNldEZvckVk
aXRpbmcobm9kZSkpOwotfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4IDU3
ZjczZWMuLjY5MWE3ZmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKKysrIGIv
V2ViQ29yZS9kb20vUG9zaXRpb24uaApAQCAtMTg4LDE1ICsxODgsNiBAQCBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikKICAgICByZXR1
cm4gIShhID09IGIpOwogfQogCi1Qb3NpdGlvbiBzdGFydFBvc2l0aW9uKGNvbnN0IFJhbmdlKik7
Ci1Qb3NpdGlvbiBlbmRQb3NpdGlvbihjb25zdCBSYW5nZSopOwotCi0vLyBOT1RFOiBmaXJzdC9s
YXN0RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUgY2FuIHJldHVybiAiZWRpdGluZyBwb3NpdGlv
bnMiIChsaWtlIFtpbWcsIDBdKQotLy8gZm9yIGVsZW1lbnRzIHdoaWNoIGVkaXRpbmcgImlnbm9y
ZXMiLiAgdGhlIHJlc3Qgb2YgdGhlIGVkaXRpbmcgY29kZSB3aWxsIHRyZWF0IFtpbWcsIDBdCi0v
LyBhcyAidGhlIGxhc3QgcG9zaXRpb24gYmVmb3JlIHRoZSBpbWciCi1Qb3NpdGlvbiBmaXJzdERl
ZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKE5vZGUqKTsKLVBvc2l0aW9uIGxhc3REZWVwRWRpdGlu
Z1Bvc2l0aW9uRm9yTm9kZShOb2RlKik7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2lm
bmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uQ29uc3RydWN0b3Jz
LmggYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbkNvbnN0cnVjdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmU3NTg3ODcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbkNvbnN0cnVjdG9ycy5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFBvc2l0aW9uQ29uc3RydWN0b3JzX2gKKyNkZWZpbmUgUG9zaXRpb25Db25zdHJ1Y3RvcnNf
aAorCisjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIgLy8gZm9yIGxhc3RPZmZzZXRGb3JFZGl0aW5n
CisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlBvc2l0aW9uLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworLy8gV2UgZGVmaW5lIHBvc2l0aW9uIGNyZWF0aW9uIGZ1bmN0aW9ucyB0byBt
YWtlIGNhbGxzaXRlcyBtb3JlIHJlYWRhYmxlLgorLy8gVGhlc2UgYXJlIGlubGluZSB0byBwcmV2
ZW50IHJlZi1jaHVybiB3aGVuIHJldHVybmluZyBhIFBvc2l0aW9uIG9iamVjdC4KKy8vIElmIHdl
IGV2ZXIgYWRkIGEgUGFzc1Bvc2l0aW9uIHdlIGNhbiBtYWtlIHRoZXNlIG5vbi1pbmxpbmUuCisK
K3N0YXRpYyBpbmxpbmUgUG9zaXRpb24gcG9zaXRpb25CZWZvcmVOb2RlKGNvbnN0IE5vZGUqIG5v
ZGUpCit7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIEFTU0VSVChub2RlLT5wYXJlbnROb2Rl
KCkpCisgICAgLy8gQXQgbGVhc3Qgb25lIGNhbGxlciBjdXJyZW50bHkgaGl0cyB0aGlzIEFTU0VS
VCB0aG91Z2gsIHdoaWNoIGluZGljYXRlcworICAgIC8vIHRoYXQgdGhlIGNhbGxlciBpcyB0cnlp
bmcgdG8gbWFrZSBhIHBvc2l0aW9uIHJlbGF0aXZlIHRvIGEgZGlzY29ubmVjdGVkIG5vZGUgKHdo
aWNoIGlzIGxpa2VseSBhbiBlcnJvcikKKyAgICByZXR1cm4gUG9zaXRpb24obm9kZS0+cGFyZW50
Tm9kZSgpLCBub2RlLT5ub2RlSW5kZXgoKSwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFu
Y2hvcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgUG9zaXRpb24gcG9zaXRpb25BZnRlck5vZGUoY29u
c3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZS0+cGFyZW50Tm9kZSgpKTsKKyAgICBy
ZXR1cm4gUG9zaXRpb24obm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5ub2RlSW5kZXgoKSArIDEs
IFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOworfQorCisvLyBOT1RFOiBmaXJz
dC9sYXN0RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUgcmV0dXJuICJlZGl0aW5nIHBvc2l0aW9u
cyIgKGxpa2UgW2ltZywgMF0pCisvLyBmb3IgZWxlbWVudHMgd2hpY2ggZWRpdGluZyBpZ25vcmVz
LiAgVGhlIHJlc3Qgb2YgdGhlIGVkaXRpbmcgY29kZSB3aWxsIHRyZWF0IFtpbWcsIDBdCisvLyBh
cyAidGhlIGxhc3QgcG9zaXRpb24gYmVmb3JlIHRoZSBpbWciLgorc3RhdGljIGlubGluZSBQb3Np
dGlvbiBmaXJzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKE5vZGUqIGFuY2hvck5vZGUpCit7
CisgICAgQVNTRVJUKGFuY2hvck5vZGUpOworICAgIHJldHVybiBQb3NpdGlvbihhbmNob3JOb2Rl
LCAwKTsKK30KKworc3RhdGljIGlubGluZSBQb3NpdGlvbiBsYXN0RGVlcEVkaXRpbmdQb3NpdGlv
bkZvck5vZGUoTm9kZSogYW5jaG9yTm9kZSkKK3sKKyAgICBBU1NFUlQoYW5jaG9yTm9kZSk7Cisg
ICAgcmV0dXJuIFBvc2l0aW9uKGFuY2hvck5vZGUsIGxhc3RPZmZzZXRGb3JFZGl0aW5nKGFuY2hv
ck5vZGUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUG9zaXRp
b25Db25zdHJ1Y3RvcnNfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRv
ci5jcHAgYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcAppbmRleCA3ODFkMzUyLi42
NWZhZGY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcAorKysg
Yi9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgIlBvc2l0aW9uSXRlcmF0b3IuaCIKIAogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRl
ICJQb3NpdGlvbkNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5j
bHVkZSAiaHRtbGVkaXRpbmcuaCIKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAK
aW5kZXggY2U1M2NkZi4uZmFlOTM4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSFRNTEludGVyY2hhbmdlLmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJQb3Np
dGlvbkNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
T2JqZWN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5jcHAKaW5kZXggZTcxOTEzZC4uZGYzOTgzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSW5zZXJ0
VGV4dENvbW1hbmQuaCIKICNpbmNsdWRlICJKb2luVGV4dE5vZGVzQ29tbWFuZC5oIgogI2luY2x1
ZGUgIk1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmgiCisjaW5jbHVkZSAiUG9zaXRpb25D
b25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbW92ZUNTU1By
b3BlcnR5Q29tbWFuZC5oIgogI2luY2x1ZGUgIlJlbW92ZU5vZGVDb21tYW5kLmgiCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2VkaXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0
aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcAppbmRleCAyNjNmZWFiLi5lZjU1ZjJiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2VkaXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUv
ZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKQEAgLTI1LDEwICsyNSwxMSBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3JlYXRlTGlua0NvbW1hbmQuaCIKLSNpbmNsdWRl
ICJodG1sZWRpdGluZy5oIgotI2luY2x1ZGUgIlRleHQuaCIKIAogI2luY2x1ZGUgIkhUTUxBbmNo
b3JFbGVtZW50LmgiCisjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKKyNpbmNsdWRlICJQb3NpdGlv
bkNvbnN0cnVjdG9ycy5oIgorI2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5j
cHAgYi9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKaW5kZXggMWQy
YzNlOC4uZjQ1ODQ1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNv
bnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVy
LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkltYWdlLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlBvc2l0aW9uQ29uc3RydWN0
b3JzLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW1vdmVOb2RlQ29tbWFuZC5o
IgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0Rl
bGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCmluZGV4IDEyYzA3NDMuLmM0NjllNmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcv
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJI
VE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAibWFy
a3VwLmgiCisjaW5jbHVkZSAiUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJSZW5k
ZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oIgogI2lu
Y2x1ZGUgIlRleHQuaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJl
YWtDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNw
cAppbmRleCBmMDIwNDU5Li45YjQ5ZmM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVC
cmVha0NvbW1hbmQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUg
IlBvc2l0aW9uQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RD
b21tYW5kLmNwcAppbmRleCBhYTQ4NzYxLi43MmYwNjAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRM
aXN0Q29tbWFuZC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJodG1sZWRpdGluZy5o
IgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5j
bHVkZSAiUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGlu
Zy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9J
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAppbmRleCA0ZDVjM2QxLi5hZmYzMGQ5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29t
bWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNv
bW1hbmQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnNlcnRMaW5lQnJlYWtDb21tYW5kLmgi
CisjaW5jbHVkZSAiUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4
dENvbW1hbmQuY3BwCmluZGV4IGJmNmZkMTkuLjVkMTQxNzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dFRleHRDb21tYW5kLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJIVE1MSW50ZXJjaGFuZ2UuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgor
I2luY2x1ZGUgIlBvc2l0aW9uQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMu
aCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAgYi9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDZl
ZDZhNDQuLmExN2YyMWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnRlcmNoYW5nZS5oIgog
I2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNp
bmNsdWRlICJQb3NpdGlvbkNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJTbWFydFJlcGxhY2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNw
cCBiL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAppbmRleCAzYmFmYmU3
Li5lMjAxMjllIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxl
ci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC05
MSw3ICs5MSw4IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW92ZVRvKGNvbnN0IFBvc2l0
aW9uICZwb3MsIEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCB1CiAKIHZvaWQgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6bW92ZVRvKGNvbnN0IFJhbmdlICpyLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wg
dXNlclRyaWdnZXJlZCkKIHsKLSAgICBzZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihzdGFy
dFBvc2l0aW9uKHIpLCBlbmRQb3NpdGlvbihyKSwgYWZmaW5pdHkpLCB0cnVlLCB0cnVlLCB1c2Vy
VHJpZ2dlcmVkKTsKKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IHIgPyBWaXNpYmxl
U2VsZWN0aW9uKHItPnN0YXJ0UG9zaXRpb24oKSwgci0+ZW5kUG9zaXRpb24oKSwgYWZmaW5pdHkp
IDogVmlzaWJsZVNlbGVjdGlvbihQb3NpdGlvbigpLCBQb3NpdGlvbigpLCBhZmZpbml0eSk7Cisg
ICAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgdHJ1ZSwgdHJ1ZSwgdXNlclRyaWdnZXJlZCk7CiB9
CiAKIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW92ZVRvKGNvbnN0IFBvc2l0aW9uICZiYXNl
LCBjb25zdCBQb3NpdGlvbiAmZXh0ZW50LCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgdXNlclRy
aWdnZXJlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBi
L1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCBiZjM3ZjIzLi43MjFiNTU0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvV2Vi
Q29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydFBhcmFncmFwaFNl
cGFyYXRvckNvbW1hbmQuaCIKICNpbmNsdWRlICJJbnNlcnRUZXh0Q29tbWFuZC5oIgorI2luY2x1
ZGUgIlBvc2l0aW9uQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAj
aW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlv
bi5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwIGIv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCmluZGV4IDg4M2JjZGIuLjFmNTg3
NjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAorKysg
Yi9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKQEAgLTI2LDE1ICsyNiwxNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKIAot
I2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVzLmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1
ZGUgIkNoYXJhY3Rlck5hbWVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
bGVtZW50LmgiCi0jaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKKyNpbmNsdWRlICJQb3NpdGlvbkNv
bnN0cnVjdG9ycy5oIgorI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCisjaW5jbHVkZSAiaHRtbGVkaXRpbmcu
aCIKICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCi0jaW5jbHVkZSAiUmFuZ2UuaCIKIAogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvaHRtbGVk
aXRpbmcuY3BwCmluZGV4IGI2MTE1OWMuLjRiYjYzZTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRp
dGluZy9odG1sZWRpdGluZy5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhU
TUxPTGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVUxpc3RFbGVtZW50LmgiCisjaW5jbHVk
ZSAiUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJQb3NpdGlvbkl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKQEAgLTU1Nywx
OCArNTU4LDYgQEAgTm9kZSogaXNMYXN0UG9zaXRpb25CZWZvcmVUYWJsZShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKICAgICByZXR1cm4gMDsKIH0KIAotUG9zaXRpb24g
cG9zaXRpb25CZWZvcmVOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCi17Ci0gICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIEFTU0VSVChub2RlLT5wYXJlbnROb2RlKCkpCi0gICAgcmV0dXJuIFBvc2l0aW9u
KG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+bm9kZUluZGV4KCkpOwotfQotCi1Qb3NpdGlvbiBw
b3NpdGlvbkFmdGVyTm9kZShjb25zdCBOb2RlKiBub2RlKQotewotICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBBU1NFUlQobm9kZS0+cGFyZW50Tm9kZSgpKQotICAgIHJldHVybiBQb3NpdGlvbihu
b2RlLT5wYXJlbnROb2RlKCksIG5vZGUtPm5vZGVJbmRleCgpICsgMSk7Ci19Ci0KIGJvb2wgaXNM
aXN0RWxlbWVudChOb2RlICpuKQogewogICAgIHJldHVybiAobiAmJiAobi0+aGFzVGFnTmFtZSh1
bFRhZykgfHwgbi0+aGFzVGFnTmFtZShvbFRhZykgfHwgbi0+aGFzVGFnTmFtZShkbFRhZykpKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oIGIvV2ViQ29yZS9lZGl0
aW5nL2h0bWxlZGl0aW5nLmgKaW5kZXggNzc2YmU2OC4uYmNkYWRhMSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0
aW5nLmgKQEAgLTY4LDkgKzY4LDYgQEAgY29uc3QgU3RyaW5nJiBub25CcmVha2luZ1NwYWNlU3Ry
aW5nKCk7CiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVBvc2l0aW9u
IHBvc2l0aW9uQmVmb3JlTm9kZShjb25zdCBOb2RlKik7Ci1Qb3NpdGlvbiBwb3NpdGlvbkFmdGVy
Tm9kZShjb25zdCBOb2RlKik7Ci0KIFBhc3NSZWZQdHI8UmFuZ2U+IGF2b2lkSW50ZXJzZWN0aW9u
V2l0aE5vZGUoY29uc3QgUmFuZ2UqLCBOb2RlKik7CiBWaXNpYmxlU2VsZWN0aW9uIGF2b2lkSW50
ZXJzZWN0aW9uV2l0aE5vZGUoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIE5vZGUqKTsKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwIGIvV2ViQ29yZS9lZGl0
aW5nL3Zpc2libGVfdW5pdHMuY3BwCmluZGV4IGU5NTZkNGYuLmE0ZDkwYzQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcv
dmlzaWJsZV91bml0cy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRl
ICJQb3NpdGlvbkNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJUZXh0Qm91bmRhcmllcy5oIgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvV2ViQ29yZS9wYWdl
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGRjY2ZmODIuLjc5N2NlMDQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJM
b2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBvc2l0aW9uQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlz
dE1hcmtlci5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwIGIvV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDQ5MWQxYTEuLmJhMzdiN2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdz
LmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAi
UG9zaXRpb25Db25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJSZW5kZXJGaWVsZHNldC5oIgogI2lu
Y2x1ZGUgIlJlbmRlckZpbGVVcGxvYWRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2Uu
aCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDliNjhiNjIuLjA0Y2FiODkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZsb2F0UXVhZC5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBvc2l0
aW9uQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKICNpbmNsdWRlICJS
ZW5kZXJGbGV4aWJsZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKaW5kZXggMDEyM2EwZS4uM2M5YjEzNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRl
ICJQb3NpdGlvbkNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCiAjaW5j
bHVkZSAiUmVuZGVyQ291bnRlci5oIgogI2luY2x1ZGUgIlJlbmRlckZsZXhpYmxlQm94LmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29926</attachid>
            <date>2009-04-30 16:15:12 -0700</date>
            <delta_ts>2009-07-30 12:07:21 -0700</delta_ts>
            <desc>Rename positionBeforeNode to positionInParentBeforeNode</desc>
            <filename>Rename-positionBeforeNode-to-positionInParentBeforeNode.patch</filename>
            <type>text/plain</type>
            <size>23995</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NmMyYmI2MWVkZDJhYThiM2UwN2E0YWIzMzI4ZTY4MWVmMmNhZGM1YwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMGFkYWExLi41Zjk0ZDNj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMiw2ICsyLDU3IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAK
KyAgICAgICAgUmVuYW1lIHBvc2l0aW9uQmVmb3JlTm9kZSB0byBwb3NpdGlvbkluUGFyZW50QmVm
b3JlTm9kZQorICAgICAgICBhbmQgcG9zaXRpb25BZnRlck5vZGUgdG8gcG9zaXRpb25JblBhcmVu
dEFmdGVyTm9kZQorICAgICAgICBpbiBwcmVwYXJhdGlvbiBmb3IgYWRkaW5nIGEgcG9zaXRpb25C
ZWZvcmVOb2RlCisgICAgICAgIHdoaWNoIHJldHVybnMgYSBuZWlnaGJvci1hbmNob3JlZCBwb3Np
dGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1
NDk0CisKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2VzLCB0aHVzIG5vIHRlc3RzLgorCisg
ICAgICAgICogZG9tL1Bvc2l0aW9uQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChXZWJDb3JlOjpw
b3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpwb3NpdGlvbklu
UGFyZW50QWZ0ZXJOb2RlKToKKyAgICAgICAgKiBkb20vUG9zaXRpb25JdGVyYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkl0ZXJhdG9yOjpvcGVyYXRvciBQb3NpdGlvbik6Cisg
ICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZSk6CisgICAgICAgICogZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6cG9zaXRpb25PdXRzaWRlVGFiU3Bhbik6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YnJlYWtPdXRPZkVtcHR5TWFpbEJsb2NrcXVvdGVkUGFyYWdy
YXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpwb3NpdGlvbkF2
b2lkaW5nU3BlY2lhbEVsZW1lbnRCb3VuZGFyeSk6CisgICAgICAgICogZWRpdGluZy9DcmVhdGVM
aW5rQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVMaW5rQ29tbWFuZDo6ZG9B
cHBseSk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmRlbGV0ZVRhcmdldCk6Cisg
ICAgICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmluaXRpYWxpemVTdGFydEVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjp1cGRhdGVQb3NpdGlvbkZvck5vZGVSZW1vdmFsKToKKyAgICAgICAgKiBl
ZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
ZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRM
aXN0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0Q29tbWFuZDo6ZG9B
cHBseSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6
OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zZXJ0VGV4dENvbW1hbmQ6OmlucHV0KToKKyAgICAgICAgKiBlZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpwb3NpdGlvbkF0U3RhcnRPZkluc2VydGVkQ29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAg
ICAgICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZp
c2libGVTZWxlY3Rpb246OmFkanVzdFNlbGVjdGlvblRvQXZvaWRDcm9zc2luZ0VkaXRpbmdCb3Vu
ZGFyaWVzKToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmZpcnN0RWRpdGFibGVQb3NpdGlvbkFmdGVyUG9zaXRpb25JblJvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6bGFzdEVkaXRhYmxlUG9zaXRpb25CZWZvcmVQb3NpdGlvbkluUm9vdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpyYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6cG9zaXRpb25CZWZvcmVDb250YWluaW5nU3BlY2lhbEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6cG9zaXRpb25BZnRlckNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpwb3NpdGlvbkJlZm9yZVRhYlNwYW4pOgorCisyMDA5LTA0LTMwICBFcmljIFNl
aWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKwogICAgICAgICBBZGQgUG9zaXRpb25Db25zdHJ1Y3RvcnMuaAogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0OTQKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vUG9zaXRpb25Db25zdHJ1Y3RvcnMuaCBiL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
Q29uc3RydWN0b3JzLmgKaW5kZXggZTc1ODc4Ny4uZjdmOGJjNiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vUG9zaXRpb25Db25zdHJ1Y3RvcnMuaAorKysgYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbkNv
bnN0cnVjdG9ycy5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRo
ZXNlIGFyZSBpbmxpbmUgdG8gcHJldmVudCByZWYtY2h1cm4gd2hlbiByZXR1cm5pbmcgYSBQb3Np
dGlvbiBvYmplY3QuCiAvLyBJZiB3ZSBldmVyIGFkZCBhIFBhc3NQb3NpdGlvbiB3ZSBjYW4gbWFr
ZSB0aGVzZSBub24taW5saW5lLgogCi1zdGF0aWMgaW5saW5lIFBvc2l0aW9uIHBvc2l0aW9uQmVm
b3JlTm9kZShjb25zdCBOb2RlKiBub2RlKQorc3RhdGljIGlubGluZSBQb3NpdGlvbiBwb3NpdGlv
bkluUGFyZW50QmVmb3JlTm9kZShjb25zdCBOb2RlKiBub2RlKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBBU1NFUlQobm9kZS0+cGFyZW50Tm9kZSgpKQogICAgIC8vIEF0IGxlYXN0IG9u
ZSBjYWxsZXIgY3VycmVudGx5IGhpdHMgdGhpcyBBU1NFUlQgdGhvdWdoLCB3aGljaCBpbmRpY2F0
ZXMKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RhdGljIGlubGluZSBQb3NpdGlvbiBwb3NpdGlvbkJlZm9y
ZU5vZGUoY29uc3QgTm9kZSogbm9kZSkKICAgICByZXR1cm4gUG9zaXRpb24obm9kZS0+cGFyZW50
Tm9kZSgpLCBub2RlLT5ub2RlSW5kZXgoKSwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFu
Y2hvcik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUG9zaXRpb24gcG9zaXRpb25BZnRlck5vZGUoY29u
c3QgTm9kZSogbm9kZSkKK3N0YXRpYyBpbmxpbmUgUG9zaXRpb24gcG9zaXRpb25JblBhcmVudEFm
dGVyTm9kZShjb25zdCBOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlLT5wYXJlbnROb2Rl
KCkpOwogICAgIHJldHVybiBQb3NpdGlvbihub2RlLT5wYXJlbnROb2RlKCksIG5vZGUtPm5vZGVJ
bmRleCgpICsgMSwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcCBiL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uSXRlcmF0b3IuY3BwCmluZGV4IDY1ZmFkZjYuLjZhOTJmZjMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRl
cmF0b3IuY3BwCkBAIC0zOSw3ICszOSw3IEBAIFBvc2l0aW9uSXRlcmF0b3I6Om9wZXJhdG9yIFBv
c2l0aW9uKCkgY29uc3QKIHsKICAgICBpZiAobV9jaGlsZCkgewogICAgICAgICBBU1NFUlQobV9j
aGlsZC0+cGFyZW50Tm9kZSgpID09IG1fcGFyZW50KTsKLSAgICAgICAgcmV0dXJuIHBvc2l0aW9u
QmVmb3JlTm9kZShtX2NoaWxkKTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRCZWZv
cmVOb2RlKG1fY2hpbGQpOwogICAgIH0KICAgICBpZiAobV9wYXJlbnQtPmhhc0NoaWxkTm9kZXMo
KSkKICAgICAgICAgcmV0dXJuIGxhc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZShtX3BhcmVu
dCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBmYWU5Mzg5Li43OTZl
MjBjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisr
KyBiL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTc2Nyw5ICs3Njcs
OSBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlKENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uICpzdHlsZSkKICAgICBpZiAodW5pY29kZUJpZGkpIHsKICAgICAgICAg
Ly8gQXZvaWQgcmVtb3ZpbmcgdGhlIGRpciBhdHRyaWJ1dGUgYW5kIHRoZSB1bmljb2RlLWJpZGkg
YW5kIGRpcmVjdGlvbiBwcm9wZXJ0aWVzIGZyb20gdGhlIHVuc3BsaXQgYW5jZXN0b3JzLgogICAg
ICAgICBpZiAoc3RhcnRVbnNwbGl0QW5jZXN0b3IgJiYgbm9kZUZ1bGx5U2VsZWN0ZWQoc3RhcnRV
bnNwbGl0QW5jZXN0b3IsIHJlbW92ZVN0YXJ0LCBlbmQpKQotICAgICAgICAgICAgZW1iZWRkaW5n
UmVtb3ZlU3RhcnQgPSBwb3NpdGlvbkFmdGVyTm9kZShzdGFydFVuc3BsaXRBbmNlc3Rvcik7Cisg
ICAgICAgICAgICBlbWJlZGRpbmdSZW1vdmVTdGFydCA9IHBvc2l0aW9uSW5QYXJlbnRBZnRlck5v
ZGUoc3RhcnRVbnNwbGl0QW5jZXN0b3IpOwogICAgICAgICBpZiAoZW5kVW5zcGxpdEFuY2VzdG9y
ICYmIG5vZGVGdWxseVNlbGVjdGVkKGVuZFVuc3BsaXRBbmNlc3RvciwgcmVtb3ZlU3RhcnQsIGVu
ZCkpCi0gICAgICAgICAgICBlbWJlZGRpbmdSZW1vdmVFbmQgPSBwb3NpdGlvbkJlZm9yZU5vZGUo
ZW5kVW5zcGxpdEFuY2VzdG9yKS5kb3duc3RyZWFtKCk7CisgICAgICAgICAgICBlbWJlZGRpbmdS
ZW1vdmVFbmQgPSBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShlbmRVbnNwbGl0QW5jZXN0b3Ip
LmRvd25zdHJlYW0oKTsKICAgICB9CiAKICAgICBpZiAoZW1iZWRkaW5nUmVtb3ZlU3RhcnQgIT0g
cmVtb3ZlU3RhcnQgfHwgZW1iZWRkaW5nUmVtb3ZlRW5kICE9IGVuZCkgewpAQCAtODE5LDcgKzgx
OSw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGUoQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24gKnN0eWxlKQogICAgICAgICAgICAgICAgIGlmIChhbmNlc3RvclVu
aWNvZGVCaWRpKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChhbmNlc3RvclVuaWNvZGVC
aWRpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihhbmNlc3RvclVuaWNvZGVCaWRpLmdldCgpKS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZUVtYmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbWJl
ZGRpbmdBcHBseVN0YXJ0ID0gcG9zaXRpb25BZnRlck5vZGUobik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbWJlZGRpbmdBcHBseVN0YXJ0ID0gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShu
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQpAQCAtODMzLDcgKzgzMyw3IEBAIHZvaWQgQXBwbHlTdHlsZUNv
bW1hbmQ6OmFwcGx5SW5saW5lU3R5bGUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24gKnN0eWxl
KQogICAgICAgICAgICAgICAgIGlmIChhbmNlc3RvclVuaWNvZGVCaWRpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChhbmNlc3RvclVuaWNvZGVCaWRpLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
PihhbmNlc3RvclVuaWNvZGVCaWRpLmdldCgpKS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUVtYmVk
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbWJlZGRpbmdBcHBseUVuZCA9IHBvc2l0aW9u
QmVmb3JlTm9kZShuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtYmVkZGluZ0FwcGx5RW5k
ID0gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IGRmMzk4MzMuLjlmMmY4ODUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysr
IGIvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMzI5LDEzICsz
MjksMTMgQEAgUG9zaXRpb24gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnBvc2l0aW9uT3V0c2lkZVRh
YlNwYW4oY29uc3QgUG9zaXRpb24mIHBvcykKICAgICBOb2RlKiB0YWJTcGFuID0gdGFiU3Bhbk5v
ZGUocG9zLm5vZGUoKSk7CiAgICAgCiAgICAgaWYgKHBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNl
dCgpIDw9IGNhcmV0TWluT2Zmc2V0KHBvcy5ub2RlKCkpKQotICAgICAgICByZXR1cm4gcG9zaXRp
b25CZWZvcmVOb2RlKHRhYlNwYW4pOworICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEJl
Zm9yZU5vZGUodGFiU3Bhbik7CiAgICAgICAgIAogICAgIGlmIChwb3MuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSA+PSBjYXJldE1heE9mZnNldChwb3Mubm9kZSgpKSkKLSAgICAgICAgcmV0dXJu
IHBvc2l0aW9uQWZ0ZXJOb2RlKHRhYlNwYW4pOworICAgICAgICByZXR1cm4gcG9zaXRpb25JblBh
cmVudEFmdGVyTm9kZSh0YWJTcGFuKTsKIAogICAgIHNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxl
bWVudChzdGF0aWNfY2FzdDxUZXh0ICo+KHBvcy5ub2RlKCkpLCBwb3MuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSk7Ci0gICAgcmV0dXJuIHBvc2l0aW9uQmVmb3JlTm9kZSh0YWJTcGFuKTsKKyAg
ICByZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUodGFiU3Bhbik7CiB9CiAKIHZvaWQg
Q29tcG9zaXRlRWRpdENvbW1hbmQ6Omluc2VydE5vZGVBdFRhYlNwYW5Qb3NpdGlvbihQYXNzUmVm
UHRyPE5vZGU+IG5vZGUsIGNvbnN0IFBvc2l0aW9uJiBwb3MpCkBAIC05NDYsNyArOTQ2LDcgQEAg
Ym9vbCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YnJlYWtPdXRPZkVtcHR5TWFpbEJsb2NrcXVvdGVk
UGFyYWdyYXBoKCkKICAgICBBU1NFUlQoY2FyZXRQb3Mubm9kZSgpLT5oYXNUYWdOYW1lKGJyVGFn
KSB8fCBjYXJldFBvcy5ub2RlKCktPmlzVGV4dE5vZGUoKSAmJiBjYXJldFBvcy5ub2RlKCktPnJl
bmRlcmVyKCktPnN0eWxlKCktPnByZXNlcnZlTmV3bGluZSgpKTsKICAgICAKICAgICBpZiAoY2Fy
ZXRQb3Mubm9kZSgpLT5oYXNUYWdOYW1lKGJyVGFnKSkgewotICAgICAgICBQb3NpdGlvbiBiZWZv
cmVCUihwb3NpdGlvbkJlZm9yZU5vZGUoY2FyZXRQb3Mubm9kZSgpKSk7CisgICAgICAgIFBvc2l0
aW9uIGJlZm9yZUJSKHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKGNhcmV0UG9zLm5vZGUoKSkp
OwogICAgICAgICByZW1vdmVOb2RlKGNhcmV0UG9zLm5vZGUoKSk7CiAgICAgICAgIHBydW5lKGJl
Zm9yZUJSLm5vZGUoKSk7CiAgICAgfSBlbHNlIHsKQEAgLTk5NSw3ICs5OTUsNyBAQCBQb3NpdGlv
biBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cG9zaXRpb25Bdm9pZGluZ1NwZWNpYWxFbGVtZW50Qm91
bmRhcnkoY29uc3QgUG9zaQogICAgICAgICAgICAgaWYgKGxpbmVCcmVha0V4aXN0c0F0VmlzaWJs
ZVBvc2l0aW9uKHZpc2libGVQb3MpICYmIGRvd25zdHJlYW0ubm9kZSgpLT5pc0Rlc2NlbmRhbnRP
ZihlbmNsb3NpbmdBbmNob3IpKQogICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbDsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgcmVzdWx0ID0gcG9zaXRpb25BZnRlck5vZGUoZW5jbG9z
aW5nQW5jaG9yKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHBvc2l0aW9uSW5QYXJlbnRBZnRlck5v
ZGUoZW5jbG9zaW5nQW5jaG9yKTsKICAgICAgICAgfQogICAgICAgICAvLyBJZiB2aXN1YWxseSBq
dXN0IGJlZm9yZSBhbiBhbmNob3IsIGluc2VydCAqb3V0c2lkZSogdGhlIGFuY2hvciB1bmxlc3Mg
aXQncyB0aGUgZmlyc3QKICAgICAgICAgLy8gVmlzaWJsZVBvc2l0aW9uIGluIGEgcGFyYWdyYXBo
LCB0byBtYXRjaCBOU1RleHRWaWV3LgpAQCAtMTAwNiw3ICsxMDA2LDcgQEAgUG9zaXRpb24gQ29t
cG9zaXRlRWRpdENvbW1hbmQ6OnBvc2l0aW9uQXZvaWRpbmdTcGVjaWFsRWxlbWVudEJvdW5kYXJ5
KGNvbnN0IFBvc2kKICAgICAgICAgICAgICAgICBwdXNoQW5jaG9yRWxlbWVudERvd24oZW5jbG9z
aW5nQW5jaG9yKTsKICAgICAgICAgICAgICAgICBlbmNsb3NpbmdBbmNob3IgPSBlbmNsb3NpbmdB
bmNob3JFbGVtZW50KG9yaWdpbmFsKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJlc3Vs
dCA9IHBvc2l0aW9uQmVmb3JlTm9kZShlbmNsb3NpbmdBbmNob3IpOworICAgICAgICAgICAgcmVz
dWx0ID0gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoZW5jbG9zaW5nQW5jaG9yKTsKICAgICAg
ICAgfQogICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQ3JlYXRl
TGlua0NvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcApp
bmRleCBlZjU1ZjJiLi4xYjc0NzEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvQ3JlYXRl
TGlua0NvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBDcmVhdGVMaW5rQ29tbWFuZDo6ZG9BcHBseSgpCiAg
ICAgICAgIGluc2VydE5vZGVBdChhbmNob3JFbGVtZW50LmdldCgpLCBlbmRpbmdTZWxlY3Rpb24o
KS5zdGFydCgpKTsKICAgICAgICAgUmVmUHRyPFRleHQ+IHRleHROb2RlID0gbmV3IFRleHQoZG9j
dW1lbnQoKSwgbV91cmwpOwogICAgICAgICBhcHBlbmROb2RlKHRleHROb2RlLmdldCgpLCBhbmNo
b3JFbGVtZW50LmdldCgpKTsKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24ocG9zaXRpb25CZWZvcmVOb2RlKGFuY2hvckVsZW1lbnQuZ2V0KCkpLCBwb3NpdGlvbkFm
dGVyTm9kZShhbmNob3JFbGVtZW50LmdldCgpKSwgRE9XTlNUUkVBTSkpOworICAgICAgICBzZXRF
bmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9k
ZShhbmNob3JFbGVtZW50LmdldCgpKSwgcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShhbmNob3JF
bGVtZW50LmdldCgpKSwgRE9XTlNUUkVBTSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGY0NTg0NWUuLmE3MGUwYzggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKQEAgLTM0NCw3ICszNDQs
NyBAQCB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmRlbGV0ZVRhcmdldCgpCiAgICAgLy8g
QmVjYXVzZSB0aGUgZGVsZXRpb24gVUkgb25seSBhcHBlYXJzIHdoZW4gdGhlIHNlbGVjdGlvbiBp
cyBlbnRpcmVseQogICAgIC8vIHdpdGhpbiB0aGUgdGFyZ2V0LCB3ZSB1bmNvbmRpdGlvbmFsbHkg
dXBkYXRlIHRoZSBzZWxlY3Rpb24gdG8gYmUKICAgICAvLyBhIGNhcmV0IHdoZXJlIHRoZSB0YXJn
ZXQgaGFkIGJlZW4uCi0gICAgUG9zaXRpb24gcG9zID0gcG9zaXRpb25CZWZvcmVOb2RlKGVsZW1l
bnQuZ2V0KCkpOworICAgIFBvc2l0aW9uIHBvcyA9IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2Rl
KGVsZW1lbnQuZ2V0KCkpOwogICAgIGFwcGx5Q29tbWFuZChSZW1vdmVOb2RlQ29tbWFuZDo6Y3Jl
YXRlKGVsZW1lbnQucmVsZWFzZSgpKSk7CiAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldFNl
bGVjdGlvbihWaXNpYmxlUG9zaXRpb24ocG9zKSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Vk
aXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggYzQ2OWU2Yi4uOTkyMzhjYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTM2LDExICsxMzYsMTEgQEAg
dm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjppbml0aWFsaXplU3RhcnRFbmQoUG9zaXRpb24m
IHN0YXJ0LCBQb3NpdGlvbiYgZW5kKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAg
ICAgICAvLyBJZiB3ZSdyZSBnb2luZyB0byBleHBhbmQgdG8gaW5jbHVkZSB0aGUgc3RhcnRTcGVj
aWFsQ29udGFpbmVyLCBpdCBtdXN0IGJlIGZ1bGx5IHNlbGVjdGVkLgotICAgICAgICBpZiAoc3Rh
cnRTcGVjaWFsQ29udGFpbmVyICYmICFlbmRTcGVjaWFsQ29udGFpbmVyICYmIFJhbmdlOjpjb21w
YXJlQm91bmRhcnlQb2ludHMocG9zaXRpb25BZnRlck5vZGUoc3RhcnRTcGVjaWFsQ29udGFpbmVy
KSwgZW5kKSA+IC0xKQorICAgICAgICBpZiAoc3RhcnRTcGVjaWFsQ29udGFpbmVyICYmICFlbmRT
cGVjaWFsQ29udGFpbmVyICYmIFJhbmdlOjpjb21wYXJlQm91bmRhcnlQb2ludHMocG9zaXRpb25J
blBhcmVudEFmdGVyTm9kZShzdGFydFNwZWNpYWxDb250YWluZXIpLCBlbmQpID4gLTEpCiAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICAvLyBJZiB3ZSdyZSBnb2luZyB0byBleHBhbmQgdG8g
aW5jbHVkZSB0aGUgZW5kU3BlY2lhbENvbnRhaW5lciwgaXQgbXVzdCBiZSBmdWxseSBzZWxlY3Rl
ZC4gICAgICAgICAKLSAgICAgICAgaWYgKGVuZFNwZWNpYWxDb250YWluZXIgJiYgIXN0YXJ0U3Bl
Y2lhbENvbnRhaW5lciAmJiBSYW5nZTo6Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKHN0YXJ0LCBwb3Np
dGlvbkJlZm9yZU5vZGUoZW5kU3BlY2lhbENvbnRhaW5lcikpID4gLTEpCisgICAgICAgIGlmIChl
bmRTcGVjaWFsQ29udGFpbmVyICYmICFzdGFydFNwZWNpYWxDb250YWluZXIgJiYgUmFuZ2U6OmNv
bXBhcmVCb3VuZGFyeVBvaW50cyhzdGFydCwgcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoZW5k
U3BlY2lhbENvbnRhaW5lcikpID4gLTEpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCiAg
ICAgICAgIGlmIChzdGFydFNwZWNpYWxDb250YWluZXIgJiYgc3RhcnRTcGVjaWFsQ29udGFpbmVy
LT5pc0Rlc2NlbmRhbnRPZihlbmRTcGVjaWFsQ29udGFpbmVyKSkKQEAgLTMxOCw3ICszMTgsNyBA
QCBzdGF0aWMgdm9pZCB1cGRhdGVQb3NpdGlvbkZvck5vZGVSZW1vdmFsKE5vZGUqIG5vZGUsIFBv
c2l0aW9uJiBwb3NpdGlvbikKICAgICBpZiAobm9kZS0+cGFyZW50KCkgPT0gcG9zaXRpb24ubm9k
ZSgpICYmIG5vZGUtPm5vZGVJbmRleCgpIDwgKHVuc2lnbmVkKXBvc2l0aW9uLmRlcHJlY2F0ZWRF
ZGl0aW5nT2Zmc2V0KCkpCiAgICAgICAgIHBvc2l0aW9uID0gUG9zaXRpb24ocG9zaXRpb24ubm9k
ZSgpLCBwb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIC0gMSk7CiAgICAgaWYgKHBv
c2l0aW9uLm5vZGUoKSA9PSBub2RlIHx8IHBvc2l0aW9uLm5vZGUoKS0+aXNEZXNjZW5kYW50T2Yo
bm9kZSkpCi0gICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25CZWZvcmVOb2RlKG5vZGUpOworICAg
ICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpOwogfQogCiB2
b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZU5vZGUoUGFzc1JlZlB0cjxOb2RlPiBu
b2RlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQu
Y3BwIGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCmluZGV4IDli
NDlmYzUuLmM1MmEyNDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJl
YWtDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFu
ZC5jcHAKQEAgLTEyNiwxMiArMTI2LDEyIEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6
ZG9BcHBseSgpCiAgICAgICAgIGlmICghaXNTdGFydE9mUGFyYWdyYXBoKFZpc2libGVQb3NpdGlv
bihQb3NpdGlvbihub2RlVG9JbnNlcnQuZ2V0KCksIDApKSkpCiAgICAgICAgICAgICBpbnNlcnRO
b2RlQmVmb3JlKG5vZGVUb0luc2VydC0+Y2xvbmVOb2RlKGZhbHNlKS5nZXQoKSwgbm9kZVRvSW5z
ZXJ0LmdldCgpKTsKICAgICAgICAgCi0gICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxl
U2VsZWN0aW9uKHBvc2l0aW9uQWZ0ZXJOb2RlKG5vZGVUb0luc2VydC5nZXQoKSksIERPV05TVFJF
QU0pKTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRp
b25JblBhcmVudEFmdGVyTm9kZShub2RlVG9JbnNlcnQuZ2V0KCkpLCBET1dOU1RSRUFNKSk7CiAg
ICAgLy8gSWYgd2UncmUgaW5zZXJ0aW5nIGFmdGVyIGFsbCBvZiB0aGUgcmVuZGVyZWQgdGV4dCBp
biBhIHRleHQgbm9kZSwgb3IgaW50byBhIG5vbi10ZXh0IG5vZGUsCiAgICAgLy8gYSBzaW1wbGUg
aW5zZXJ0aW9uIGlzIHN1ZmZpY2llbnQuCiAgICAgfSBlbHNlIGlmIChwb3MuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSA+PSBjYXJldE1heE9mZnNldChwb3Mubm9kZSgpKSB8fCAhcG9zLm5vZGUo
KS0+aXNUZXh0Tm9kZSgpKSB7CiAgICAgICAgIGluc2VydE5vZGVBdChub2RlVG9JbnNlcnQuZ2V0
KCksIHBvcyk7Ci0gICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBv
c2l0aW9uQWZ0ZXJOb2RlKG5vZGVUb0luc2VydC5nZXQoKSksIERPV05TVFJFQU0pKTsKKyAgICAg
ICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVudEFm
dGVyTm9kZShub2RlVG9JbnNlcnQuZ2V0KCkpLCBET1dOU1RSRUFNKSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgLy8gU3BsaXQgYSB0ZXh0IG5vZGUKICAgICAgICAgQVNTRVJUKHBvcy5ub2RlKCkt
PmlzVGV4dE5vZGUoKSk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtD
b21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgLy8gSGFuZGxlIHdoaXRlc3BhY2UgdGhhdCBvY2N1
cnMgYWZ0ZXIgdGhlIHNwbGl0CiAgICAgICAgIHVwZGF0ZUxheW91dCgpOwogICAgICAgICBpZiAo
IWVuZGluZ1Bvc2l0aW9uLmlzUmVuZGVyZWRDaGFyYWN0ZXIoKSkgewotICAgICAgICAgICAgUG9z
aXRpb24gcG9zaXRpb25CZWZvcmVUZXh0Tm9kZShwb3NpdGlvbkJlZm9yZU5vZGUodGV4dE5vZGUp
KTsKKyAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlVGV4dE5vZGUocG9zaXRpb25J
blBhcmVudEJlZm9yZU5vZGUodGV4dE5vZGUpKTsKICAgICAgICAgICAgIC8vIENsZWFyIG91dCBh
bGwgd2hpdGVzcGFjZSBhbmQgaW5zZXJ0IG9uZSBub24tYnJlYWtpbmcgc3BhY2UKICAgICAgICAg
ICAgIGRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0RG93bnN0cmVhbShlbmRpbmdQb3NpdGlvbik7CiAg
ICAgICAgICAgICBBU1NFUlQoIXRleHROb2RlLT5yZW5kZXJlcigpIHx8IHRleHROb2RlLT5yZW5k
ZXJlcigpLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dExpc3RDb21tYW5kLmNwcAppbmRleCA3MmYwNjAxLi41OGU1ZTI5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9J
bnNlcnRMaXN0Q29tbWFuZC5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIEluc2VydExpc3RD
b21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAgIC8vIEFsc28gYXZvaWQgdGhlIGNvbnRhaW5p
bmcgbGlzdCBpdGVtLgogICAgICAgICAgICAgTm9kZSogbGlzdENoaWxkID0gZW5jbG9zaW5nTGlz
dENoaWxkKGluc2VydGlvblBvcy5ub2RlKCkpOwogICAgICAgICAgICAgaWYgKGxpc3RDaGlsZCAm
JiBsaXN0Q2hpbGQtPmhhc1RhZ05hbWUobGlUYWcpKQotICAgICAgICAgICAgICAgIGluc2VydGlv
blBvcyA9IHBvc2l0aW9uQmVmb3JlTm9kZShsaXN0Q2hpbGQpOworICAgICAgICAgICAgICAgIGlu
c2VydGlvblBvcyA9IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKGxpc3RDaGlsZCk7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpbnNlcnROb2RlQXQobGlzdEVsZW1lbnQsIGluc2Vy
dGlvblBvcyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAppbmRleCBhZmYzMGQ5Li5jNTBmNzQxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAK
KysrIGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3Bw
CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5k
Ojpkb0FwcGx5KCkKICAgICBpZiAoaXNTdGFydE9mUGFyYWdyYXBoKHZpc2libGVQb3MpKSB7CiAg
ICAgICAgIFJlZlB0cjxFbGVtZW50PiBiciA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgp
KTsKICAgICAgICAgaW5zZXJ0Tm9kZUF0KGJyLmdldCgpLCBpbnNlcnRpb25Qb3NpdGlvbik7Ci0g
ICAgICAgIGluc2VydGlvblBvc2l0aW9uID0gcG9zaXRpb25BZnRlck5vZGUoYnIuZ2V0KCkpOwor
ICAgICAgICBpbnNlcnRpb25Qb3NpdGlvbiA9IHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoYnIu
Z2V0KCkpOwogICAgIH0KICAgICAKICAgICAvLyBNb3ZlIGRvd25zdHJlYW0uIFR5cGluZyBzdHls
ZSBjb2RlIHdpbGwgdGFrZSBjYXJlIG9mIGNhcnJ5aW5nIGFsb25nIHRoZSAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0VGV4dENvbW1hbmQuY3BwCmluZGV4IDVkMTQxNzAuLmFiNTUxNGIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0
aW5nL0luc2VydFRleHRDb21tYW5kLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgSW5zZXJ0
VGV4dENvbW1hbmQ6OmlucHV0KGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBib29sIHNlbGVj
dEluc2VydGVkVGV4CiAgICAgCiAgICAgLy8gSXQgaXMgcG9zc2libGUgZm9yIHRoZSBub2RlIHRo
YXQgY29udGFpbnMgc3RhcnRQb3NpdGlvbiB0byBjb250YWluIG9ubHkgdW5yZW5kZXJlZCB3aGl0
ZXNwYWNlLAogICAgIC8vIGFuZCBzbyBkZWxldGVJbnNpZ25pZmljYW50VGV4dCBjb3VsZCByZW1v
dmUgaXQuICBTYXZlIHRoZSBwb3NpdGlvbiBiZWZvcmUgdGhlIG5vZGUgaW4gY2FzZSB0aGF0IGhh
cHBlbnMuCi0gICAgUG9zaXRpb24gcG9zaXRpb25CZWZvcmVTdGFydE5vZGUocG9zaXRpb25CZWZv
cmVOb2RlKHN0YXJ0UG9zaXRpb24ubm9kZSgpKSk7CisgICAgUG9zaXRpb24gcG9zaXRpb25CZWZv
cmVTdGFydE5vZGUocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoc3RhcnRQb3NpdGlvbi5ub2Rl
KCkpKTsKICAgICBkZWxldGVJbnNpZ25pZmljYW50VGV4dChzdGFydFBvc2l0aW9uLnVwc3RyZWFt
KCksIHN0YXJ0UG9zaXRpb24uZG93bnN0cmVhbSgpKTsKICAgICBpZiAoIXN0YXJ0UG9zaXRpb24u
bm9kZSgpLT5pbkRvY3VtZW50KCkpCiAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBwb3NpdGlvbkJl
Zm9yZVN0YXJ0Tm9kZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCmluZGV4IGExN2YyMWYuLjg4ZDVhODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNTI4LDcgKzUyOCw3IEBAIFZpc2libGVQb3NpdGlvbiBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cG9zaXRpb25BdEVuZE9mSW5zZXJ0ZWRDb250ZW50KCkK
IFZpc2libGVQb3NpdGlvbiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cG9zaXRpb25BdFN0YXJ0
T2ZJbnNlcnRlZENvbnRlbnQoKQogewogICAgIC8vIFJldHVybiB0aGUgaW5zZXJ0ZWQgY29udGVu
dCdzIGZpcnN0IFZpc2libGVQb3NpdGlvbi4KLSAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG5l
eHRDYW5kaWRhdGUocG9zaXRpb25CZWZvcmVOb2RlKG1fZmlyc3ROb2RlSW5zZXJ0ZWQuZ2V0KCkp
KSk7CisgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihuZXh0Q2FuZGlkYXRlKHBvc2l0aW9uSW5Q
YXJlbnRCZWZvcmVOb2RlKG1fZmlyc3ROb2RlSW5zZXJ0ZWQuZ2V0KCkpKSk7CiB9CiAKIC8vIFJl
bW92ZSBzdHlsZSBzcGFucyBiZWZvcmUgaW5zZXJ0aW9uIGlmIHRoZXkgYXJlIHVubmVjZXNzYXJ5
LiAgSXQncyBmYXN0ZXIgYmVjYXVzZSB3ZSdsbCAKQEAgLTc5NCw3ICs3OTQsNyBAQCB2b2lkIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgTm9kZSogYnIgPSBlbmRp
bmdTZWxlY3Rpb24oKS5zdGFydCgpLm5vZGUoKTsgCiAgICAgICAgIEFTU0VSVChici0+aGFzVGFn
TmFtZShiclRhZykpOyAKICAgICAgICAgLy8gSW5zZXJ0IGNvbnRlbnQgYmV0d2VlbiB0aGUgdHdv
IGJsb2NrcXVvdGVzLCBidXQgcmVtb3ZlIHRoZSBiciAoc2luY2UgaXQgd2FzIGp1c3QgYSBwbGFj
ZWhvbGRlcikuIAotICAgICAgICBpbnNlcnRpb25Qb3MgPSBwb3NpdGlvbkJlZm9yZU5vZGUoYnIp
OyAKKyAgICAgICAgaW5zZXJ0aW9uUG9zID0gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoYnIp
OwogICAgICAgICByZW1vdmVOb2RlKGJyKTsKICAgICB9CiAgICAgCkBAIC04MTcsOSArODE3LDkg
QEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIEFTU0VS
VChzdGFydEJsb2NrICE9IGN1cnJlbnRSb290KTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZp
c2libGVJbnNlcnRpb25Qb3MoaW5zZXJ0aW9uUG9zKTsKICAgICAgICAgaWYgKGlzRW5kT2ZCbG9j
ayh2aXNpYmxlSW5zZXJ0aW9uUG9zKSAmJiAhKGlzU3RhcnRPZkJsb2NrKHZpc2libGVJbnNlcnRp
b25Qb3MpICYmIGZyYWdtZW50Lmhhc0ludGVyY2hhbmdlTmV3bGluZUF0RW5kKCkpKQotICAgICAg
ICAgICAgaW5zZXJ0aW9uUG9zID0gcG9zaXRpb25BZnRlck5vZGUoc3RhcnRCbG9jayk7CisgICAg
ICAgICAgICBpbnNlcnRpb25Qb3MgPSBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKHN0YXJ0Qmxv
Y2spOwogICAgICAgICBlbHNlIGlmIChpc1N0YXJ0T2ZCbG9jayh2aXNpYmxlSW5zZXJ0aW9uUG9z
KSkKLSAgICAgICAgICAgIGluc2VydGlvblBvcyA9IHBvc2l0aW9uQmVmb3JlTm9kZShzdGFydEJs
b2NrKTsKKyAgICAgICAgICAgIGluc2VydGlvblBvcyA9IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVO
b2RlKHN0YXJ0QmxvY2spOwogICAgIH0KIAogICAgIC8vIFBhc3RlIGludG8gcnVuIG9mIHRhYnMg
c3BsaXRzIHRoZSB0YWIgc3Bhbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
U2VsZWN0aW9uLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAppbmRl
eCAxZjU4NzY3Li4yMDRlYTgyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNl
bGVjdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCkBA
IC01MTIsNyArNTEyLDcgQEAgdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjphZGp1c3RTZWxlY3Rpb25U
b0F2b2lkQ3Jvc3NpbmdFZGl0aW5nQm91bmRhcmllcygpCiAgICAgICAgICAgICB3aGlsZSAocC5p
c05vdE51bGwoKSAmJiAhKGxvd2VzdEVkaXRhYmxlQW5jZXN0b3IocC5ub2RlKCkpID09IGJhc2VF
ZGl0YWJsZUFuY2VzdG9yICYmICFpc0VkaXRhYmxlUG9zaXRpb24ocCkpKSB7CiAgICAgICAgICAg
ICAgICAgTm9kZSogcm9vdCA9IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9uKHApOwogICAgICAgICAg
ICAgICAgIHNoYWRvd0FuY2VzdG9yID0gcm9vdCA/IHJvb3QtPnNoYWRvd0FuY2VzdG9yTm9kZSgp
IDogMDsKLSAgICAgICAgICAgICAgICBwID0gaXNBdG9taWNOb2RlKHAubm9kZSgpKSA/IHBvc2l0
aW9uQmVmb3JlTm9kZShwLm5vZGUoKSkgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRh
dGUocCk7CisgICAgICAgICAgICAgICAgcCA9IGlzQXRvbWljTm9kZShwLm5vZGUoKSkgPyBwb3Np
dGlvbkluUGFyZW50QmVmb3JlTm9kZShwLm5vZGUoKSkgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGlu
Y3RDYW5kaWRhdGUocCk7CiAgICAgICAgICAgICAgICAgaWYgKHAuaXNOdWxsKCkgJiYgKHNoYWRv
d0FuY2VzdG9yICE9IHJvb3QpKQogICAgICAgICAgICAgICAgICAgICBwID0gbGFzdERlZXBFZGl0
aW5nUG9zaXRpb25Gb3JOb2RlKHNoYWRvd0FuY2VzdG9yKTsKICAgICAgICAgICAgIH0KQEAgLTU0
MSw3ICs1NDEsNyBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OmFkanVzdFNlbGVjdGlvblRvQXZv
aWRDcm9zc2luZ0VkaXRpbmdCb3VuZGFyaWVzKCkKICAgICAgICAgICAgIHdoaWxlIChwLmlzTm90
TnVsbCgpICYmICEobG93ZXN0RWRpdGFibGVBbmNlc3RvcihwLm5vZGUoKSkgPT0gYmFzZUVkaXRh
YmxlQW5jZXN0b3IgJiYgIWlzRWRpdGFibGVQb3NpdGlvbihwKSkpIHsKICAgICAgICAgICAgICAg
ICBOb2RlKiByb290ID0gZWRpdGFibGVSb290Rm9yUG9zaXRpb24ocCk7CiAgICAgICAgICAgICAg
ICAgc2hhZG93QW5jZXN0b3IgPSByb290ID8gcm9vdC0+c2hhZG93QW5jZXN0b3JOb2RlKCkgOiAw
OwotICAgICAgICAgICAgICAgIHAgPSBpc0F0b21pY05vZGUocC5ub2RlKCkpID8gcG9zaXRpb25B
ZnRlck5vZGUocC5ub2RlKCkpIDogbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUocCk7Cisg
ICAgICAgICAgICAgICAgcCA9IGlzQXRvbWljTm9kZShwLm5vZGUoKSkgPyBwb3NpdGlvbkluUGFy
ZW50QWZ0ZXJOb2RlKHAubm9kZSgpKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKHAp
OwogICAgICAgICAgICAgICAgIGlmIChwLmlzTnVsbCgpICYmIChzaGFkb3dBbmNlc3RvciAhPSBy
b290KSkKICAgICAgICAgICAgICAgICAgICAgcCA9IFBvc2l0aW9uKHNoYWRvd0FuY2VzdG9yLCAw
KTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGlu
Zy5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IDRiYjYzZTkuLjMx
MzM4ZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKKysrIGIv
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtMjY2LDcgKzI2Niw3IEBAIFZpc2li
bGVQb3NpdGlvbiBmaXJzdEVkaXRhYmxlUG9zaXRpb25BZnRlclBvc2l0aW9uSW5Sb290KGNvbnN0
IFBvc2l0aW9uJiBwb3NpdGlvCiAgICAgICAgICAgICBwID0gbGFzdERlZXBFZGl0aW5nUG9zaXRp
b25Gb3JOb2RlKHNoYWRvd0FuY2VzdG9yKTsKICAgICAKICAgICB3aGlsZSAocC5ub2RlKCkgJiYg
IWlzRWRpdGFibGVQb3NpdGlvbihwKSAmJiBwLm5vZGUoKS0+aXNEZXNjZW5kYW50T2YoaGlnaGVz
dFJvb3QpKQotICAgICAgICBwID0gaXNBdG9taWNOb2RlKHAubm9kZSgpKSA/IHBvc2l0aW9uQWZ0
ZXJOb2RlKHAubm9kZSgpKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKHApOworICAg
ICAgICBwID0gaXNBdG9taWNOb2RlKHAubm9kZSgpKSA/IHBvc2l0aW9uSW5QYXJlbnRBZnRlck5v
ZGUocC5ub2RlKCkpIDogbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUocCk7CiAgICAgCiAg
ICAgaWYgKHAubm9kZSgpICYmICFwLm5vZGUoKS0+aXNEZXNjZW5kYW50T2YoaGlnaGVzdFJvb3Qp
KQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CkBAIC0yODcsNyArMjg3LDcgQEAg
VmlzaWJsZVBvc2l0aW9uIGxhc3RFZGl0YWJsZVBvc2l0aW9uQmVmb3JlUG9zaXRpb25JblJvb3Qo
Y29uc3QgUG9zaXRpb24mIHBvc2l0aW8KICAgICAgICAgICAgIHAgPSBmaXJzdERlZXBFZGl0aW5n
UG9zaXRpb25Gb3JOb2RlKHNoYWRvd0FuY2VzdG9yKTsKICAgICAKICAgICB3aGlsZSAocC5ub2Rl
KCkgJiYgIWlzRWRpdGFibGVQb3NpdGlvbihwKSAmJiBwLm5vZGUoKS0+aXNEZXNjZW5kYW50T2Yo
aGlnaGVzdFJvb3QpKQotICAgICAgICBwID0gaXNBdG9taWNOb2RlKHAubm9kZSgpKSA/IHBvc2l0
aW9uQmVmb3JlTm9kZShwLm5vZGUoKSkgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRh
dGUocCk7CisgICAgICAgIHAgPSBpc0F0b21pY05vZGUocC5ub2RlKCkpID8gcG9zaXRpb25JblBh
cmVudEJlZm9yZU5vZGUocC5ub2RlKCkpIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlk
YXRlKHApOwogICAgIAogICAgIGlmIChwLm5vZGUoKSAmJiAhcC5ub2RlKCktPmlzRGVzY2VuZGFu
dE9mKGhpZ2hlc3RSb290KSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwpAQCAt
MzI1LDcgKzMyNSw3IEBAIFBvc2l0aW9uIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChjb25zdCBQ
b3NpdGlvbiYgcG9zKQogCiAgICAgaWYgKHBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIDw9
IDApIHsKICAgICAgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKSAmJiAoZWRpdGluZ0lnbm9yZXND
b250ZW50KG5vZGUpIHx8IGlzVGFibGVFbGVtZW50KG5vZGUpKSkKLSAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbkJlZm9yZU5vZGUobm9kZSk7CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb25J
blBhcmVudEJlZm9yZU5vZGUobm9kZSk7CiAgICAgICAgIHJldHVybiBQb3NpdGlvbihub2RlLCAw
KTsKICAgICB9CiAKQEAgLTMzNSw3ICszMzUsNyBAQCBQb3NpdGlvbiByYW5nZUNvbXBsaWFudEVx
dWl2YWxlbnQoY29uc3QgUG9zaXRpb24mIHBvcykKICAgICBpbnQgbWF4Q29tcGxpYW50T2Zmc2V0
ID0gbm9kZS0+Y2hpbGROb2RlQ291bnQoKTsKICAgICBpZiAocG9zLmRlcHJlY2F0ZWRFZGl0aW5n
T2Zmc2V0KCkgPiBtYXhDb21wbGlhbnRPZmZzZXQpIHsKICAgICAgICAgaWYgKG5vZGUtPnBhcmVu
dE5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkFmdGVyTm9kZShub2RlKTsKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKG5vZGUpOwogCiAgICAg
ICAgIC8vIHRoZXJlIGlzIG5vIG90aGVyIG9wdGlvbiBhdCB0aGlzIHBvaW50IHRoYW4gdG8KICAg
ICAgICAgLy8gdXNlIHRoZSBoaWdoZXN0IGFsbG93ZWQgcG9zaXRpb24gaW4gdGhlIG5vZGUKQEAg
LTM0NSwxMSArMzQ1LDExIEBAIFBvc2l0aW9uIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChjb25z
dCBQb3NpdGlvbiYgcG9zKQogICAgIC8vIEVkaXRpbmcgc2hvdWxkIG5ldmVyIGdlbmVyYXRlIHBv
c2l0aW9ucyBsaWtlIHRoaXMuCiAgICAgaWYgKChwb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSA8IG1heENvbXBsaWFudE9mZnNldCkgJiYgZWRpdGluZ0lnbm9yZXNDb250ZW50KG5vZGUpKSB7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbm9kZS0+cGFy
ZW50Tm9kZSgpID8gcG9zaXRpb25CZWZvcmVOb2RlKG5vZGUpIDogUG9zaXRpb24obm9kZSwgMCk7
CisgICAgICAgIHJldHVybiBub2RlLT5wYXJlbnROb2RlKCkgPyBwb3NpdGlvbkluUGFyZW50QmVm
b3JlTm9kZShub2RlKSA6IFBvc2l0aW9uKG5vZGUsIDApOwogICAgIH0KICAgICAKICAgICBpZiAo
cG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPT0gbWF4Q29tcGxpYW50T2Zmc2V0ICYmIChl
ZGl0aW5nSWdub3Jlc0NvbnRlbnQobm9kZSkgfHwgaXNUYWJsZUVsZW1lbnQobm9kZSkpKQotICAg
ICAgICByZXR1cm4gcG9zaXRpb25BZnRlck5vZGUobm9kZSk7CisgICAgICAgIHJldHVybiBwb3Np
dGlvbkluUGFyZW50QWZ0ZXJOb2RlKG5vZGUpOwogICAgIAogICAgIHJldHVybiBQb3NpdGlvbihw
b3MpOwogfQpAQCAtNTA1LDcgKzUwNSw3IEBAIFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlQ29udGFp
bmluZ1NwZWNpYWxFbGVtZW50KGNvbnN0IFBvc2l0aW9uJiBwb3MsIE5vZGUqKiBjb250CiAgICAg
Tm9kZSogbiA9IGZpcnN0SW5TcGVjaWFsRWxlbWVudChwb3MpOwogICAgIGlmICghbikKICAgICAg
ICAgcmV0dXJuIHBvczsKLSAgICBQb3NpdGlvbiByZXN1bHQgPSBwb3NpdGlvbkJlZm9yZU5vZGUo
bik7CisgICAgUG9zaXRpb24gcmVzdWx0ID0gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobik7
CiAgICAgaWYgKHJlc3VsdC5pc051bGwoKSB8fCByZXN1bHQubm9kZSgpLT5yb290RWRpdGFibGVF
bGVtZW50KCkgIT0gcG9zLm5vZGUoKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpKQogICAgICAgICBy
ZXR1cm4gcG9zOwogICAgIGlmIChjb250YWluaW5nU3BlY2lhbEVsZW1lbnQpCkBAIC01MjMsNyAr
NTIzLDcgQEAgUG9zaXRpb24gcG9zaXRpb25BZnRlckNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudChj
b25zdCBQb3NpdGlvbiYgcG9zLCBOb2RlICoqY29udGEKICAgICBOb2RlKiBuID0gbGFzdEluU3Bl
Y2lhbEVsZW1lbnQocG9zKTsKICAgICBpZiAoIW4pCiAgICAgICAgIHJldHVybiBwb3M7Ci0gICAg
UG9zaXRpb24gcmVzdWx0ID0gcG9zaXRpb25BZnRlck5vZGUobik7CisgICAgUG9zaXRpb24gcmVz
dWx0ID0gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShuKTsKICAgICBpZiAocmVzdWx0LmlzTnVs
bCgpIHx8IHJlc3VsdC5ub2RlKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSAhPSBwb3Mubm9kZSgp
LT5yb290RWRpdGFibGVFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBwb3M7CiAgICAgaWYgKGNv
bnRhaW5pbmdTcGVjaWFsRWxlbWVudCkKQEAgLTgwNyw3ICs4MDcsNyBAQCBQb3NpdGlvbiBwb3Np
dGlvbkJlZm9yZVRhYlNwYW4oY29uc3QgUG9zaXRpb24mIHBvcykKICAgICBlbHNlIGlmICghaXNU
YWJTcGFuTm9kZShub2RlKSkKICAgICAgICAgcmV0dXJuIHBvczsKICAgICAKLSAgICByZXR1cm4g
cG9zaXRpb25CZWZvcmVOb2RlKG5vZGUpOworICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QmVm
b3JlTm9kZShub2RlKTsKIH0KIAogUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVUYWJTcGFuRWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQsIFBhc3NSZWZQdHI8Tm9kZT4gdGFiVGV4dE5vZGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29927</attachid>
            <date>2009-04-30 16:15:13 -0700</date>
            <delta_ts>2009-07-30 12:07:24 -0700</delta_ts>
            <desc>Add more position constructors</desc>
            <filename>Add-more-position-constructors.patch</filename>
            <type>text/plain</type>
            <size>6217</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NTg3MWRlOTU4YjI1MDljOTM0ZTM4YTQ5YWRiZGIzN2MwYzdkMGNiNQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1Zjk0ZDNjLi5mZTJkMjQ3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMiw2ICsyLDM0IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAK
KyAgICAgICAgQWRkIG1vcmUgcG9zaXRpb24gY29uc3RydWN0b3JzCisgICAgICAgIHBvc2l0aW9u
QmVmb3JlTm9kZSwgcG9zaXRpb25BZnRlck5vZGUKKyAgICAgICAgZmlyc3RQb3NpdGlvbkluTm9k
ZSwgbGFzdFBvc2l0aW9uSW5Ob2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNTQ5NAorCisgICAgICAgIEkgYWxzbyBhZGRlZCBhIGxhc3RPZmZzZXRJ
bk5vZGUgYW5kIGRlcGxveWVkIGl0IHRvIGEgY291cGxlIHBsYWNlcy4KKworICAgICAgICBUaGVy
ZSBhcmUgbm8gY2FsbGVycyB0byB0aGVzZSBuZXcgY29uc3RydWN0b3JzIHlldCwgYnV0IHRob3Nl
CisgICAgICAgIHdpbGwgYmUgY29taW5nIGluIGZ1dHVyZSBwYXRjaGVzLgorCisgICAgICAgICog
ZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpjb21wdXRlT2Zm
c2V0SW5Db250YWluZXJOb2RlKToKKyAgICAgICAgKiBkb20vUG9zaXRpb25Db25zdHJ1Y3RvcnMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uQmVmb3JlTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpwb3NpdGlvbkFmdGVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpsYXN0T2Zmc2V0SW5O
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0UG9zaXRpb25Jbk5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6bGFzdFBvc2l0aW9uSW5Ob2RlKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpTaW1wbGlmaWVk
QmFja3dhcmRzVGV4dEl0ZXJhdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Omxhc3RPZmZzZXRGb3JFZGl0aW5nKToKKworMjAwOS0wNC0z
MCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKICAgICAgICAgUmVuYW1lIHBvc2l0aW9uQmVmb3JlTm9kZSB0byBw
b3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZQogICAgICAgICBhbmQgcG9zaXRpb25BZnRlck5vZGUg
dG8gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZQogICAgICAgICBpbiBwcmVwYXJhdGlvbiBmb3Ig
YWRkaW5nIGEgcG9zaXRpb25CZWZvcmVOb2RlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5jcHAgYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggYzA3YTY1Ni4uYjJkNTJm
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcApAQCAtMTM5LDEwICsxMzksNyBAQCBpbnQgUG9zaXRpb246OmNvbXB1dGVP
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKSBjb25zdAogCiAgICAgc3dpdGNoIChhbmNob3JUeXBlKCkp
IHsKICAgICBjYXNlIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjoKLSAgICB7Ci0gICAgICAgIGlu
dCBtYXhpbXVtVmFsaWRPZmZzZXQgPSBtX2FuY2hvck5vZGUtPm9mZnNldEluQ2hhcmFjdGVycygp
ID8gbV9hbmNob3JOb2RlLT5tYXhDaGFyYWN0ZXJPZmZzZXQoKSA6IG1fYW5jaG9yTm9kZS0+Y2hp
bGROb2RlQ291bnQoKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKG1heGltdW1WYWxpZE9mZnNl
dCwgbV9vZmZzZXQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGxhc3RPZmZzZXRJ
bk5vZGUobV9hbmNob3JOb2RlLmdldCgpKSwgbV9vZmZzZXQpOwogICAgIGNhc2UgUG9zaXRpb25J
c0JlZm9yZUFuY2hvcjoKICAgICAgICAgcmV0dXJuIG1fYW5jaG9yTm9kZS0+bm9kZUluZGV4KCk7
CiAgICAgY2FzZSBQb3NpdGlvbklzQWZ0ZXJBbmNob3I6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbkNvbnN0cnVjdG9ycy5oIGIvV2ViQ29yZS9kb20vUG9zaXRpb25Db25zdHJ1Y3Rv
cnMuaAppbmRleCBmN2Y4YmM2Li5lN2Y0ZWM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbkNvbnN0cnVjdG9ycy5oCisrKyBiL1dlYkNvcmUvZG9tL1Bvc2l0aW9uQ29uc3RydWN0b3Jz
LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlc2UgYXJlIGlu
bGluZSB0byBwcmV2ZW50IHJlZi1jaHVybiB3aGVuIHJldHVybmluZyBhIFBvc2l0aW9uIG9iamVj
dC4KIC8vIElmIHdlIGV2ZXIgYWRkIGEgUGFzc1Bvc2l0aW9uIHdlIGNhbiBtYWtlIHRoZXNlIG5v
bi1pbmxpbmUuCiAKKy8vIHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlIGFuZCBwb3NpdGlvbklu
UGFyZW50QWZ0ZXJOb2RlIGFyZSBPKG4pIGR1ZSB0byBub2RlLT5ub2RlSW5kZXgoKQogc3RhdGlj
IGlubGluZSBQb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShjb25zdCBOb2RlKiBu
b2RlKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBBU1NFUlQobm9kZS0+cGFyZW50Tm9k
ZSgpKQpAQCAtNTAsNiArNTEsMzUgQEAgc3RhdGljIGlubGluZSBQb3NpdGlvbiBwb3NpdGlvbklu
UGFyZW50QWZ0ZXJOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIFBvc2l0aW9uKG5v
ZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+bm9kZUluZGV4KCkgKyAxLCBQb3NpdGlvbjo6UG9zaXRp
b25Jc09mZnNldEluQW5jaG9yKTsKIH0KIAorLy8gcG9zaXRpb25CZWZvcmVOb2RlIGFuZCBwb3Np
dGlvbkFmdGVyTm9kZSByZXR1cm4gbmVpZ2hib3ItYW5jaG9yZWQgcG9zaXRpb25zLCBjb25zdHJ1
Y3Rpb24gaXMgTygxKQorc3RhdGljIGlubGluZSBQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZU5vZGUo
Tm9kZSogYW5jaG9yTm9kZSkKK3sKKyAgICBBU1NFUlQoYW5jaG9yTm9kZSk7CisgICAgcmV0dXJu
IFBvc2l0aW9uKGFuY2hvck5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKTsK
K30KKworc3RhdGljIGlubGluZSBQb3NpdGlvbiBwb3NpdGlvbkFmdGVyTm9kZShOb2RlKiBhbmNo
b3JOb2RlKQoreworICAgIEFTU0VSVChhbmNob3JOb2RlKTsKKyAgICByZXR1cm4gUG9zaXRpb24o
YW5jaG9yTm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcik7Cit9CisKK3N0YXRp
YyBpbmxpbmUgaW50IGxhc3RPZmZzZXRJbk5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4g
bm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkgPyBub2RlLT5tYXhDaGFyYWN0ZXJPZmZzZXQoKSA6
IG5vZGUtPmNoaWxkTm9kZUNvdW50KCk7Cit9CisKKy8vIGZpcnN0UG9zaXRpb25Jbk5vZGUgYW5k
IGxhc3RQb3NpdGlvbkluTm9kZSByZXR1cm4gcGFyZW50LWFuY2hvcmVkIHBvc2l0aW9ucywgbGFz
dFBvc2l0aW9uSW5Ob2RlIGNvbnN0cnVjdGlvbiBpcyBPKG4pIGR1ZSB0byBjaGlsZE5vZGVDb3Vu
dCgpCitzdGF0aWMgaW5saW5lIFBvc2l0aW9uIGZpcnN0UG9zaXRpb25Jbk5vZGUoTm9kZSogYW5j
aG9yTm9kZSkKK3sKKyAgICByZXR1cm4gUG9zaXRpb24oYW5jaG9yTm9kZSwgMCwgUG9zaXRpb246
OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgUG9zaXRpb24g
bGFzdFBvc2l0aW9uSW5Ob2RlKE5vZGUqIGFuY2hvck5vZGUpCit7CisgICAgcmV0dXJuIFBvc2l0
aW9uKGFuY2hvck5vZGUsIGxhc3RPZmZzZXRJbk5vZGUoYW5jaG9yTm9kZSksIFBvc2l0aW9uOjpQ
b3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOworfQorCiAvLyBOT1RFOiBmaXJzdC9sYXN0RGVlcEVk
aXRpbmdQb3NpdGlvbkZvck5vZGUgcmV0dXJuICJlZGl0aW5nIHBvc2l0aW9ucyIgKGxpa2UgW2lt
ZywgMF0pCiAvLyBmb3IgZWxlbWVudHMgd2hpY2ggZWRpdGluZyBpZ25vcmVzLiAgVGhlIHJlc3Qg
b2YgdGhlIGVkaXRpbmcgY29kZSB3aWxsIHRyZWF0IFtpbWcsIDBdCiAvLyBhcyAidGhlIGxhc3Qg
cG9zaXRpb24gYmVmb3JlIHRoZSBpbWciLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5j
cHAKaW5kZXggNzk2ZTIwYy4uNzYyNjIzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwCkBAIC0xMTg3LDYgKzExODcsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNo
RG93blRleHREZWNvcmF0aW9uU3R5bGVBdEJvdW5kYXJpZXMoY29uc3QgUG9zaXRpb24gJgogICAg
IHB1c2hEb3duVGV4dERlY29yYXRpb25TdHlsZUFyb3VuZE5vZGUoZW5kLm5vZGUoKSwgdHJ1ZSk7
CiB9CiAKKy8vIEZJWE1FOiBXaHkgZG9lcyB0aGlzIGV4aXN0PyAgQ2FsbGVycyBzaG91bGQgZWl0
aGVyIHVzZSBsYXN0T2Zmc2V0Rm9yRWRpdGluZyBvciBsYXN0T2Zmc2V0SW5Ob2RlCiBzdGF0aWMg
aW50IG1heFJhbmdlT2Zmc2V0KE5vZGUgKm4pCiB7CiAgICAgaWYgKG4tPm9mZnNldEluQ2hhcmFj
dGVycygpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCAzNGZhNTRiLi43YzRmYWM2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4
dEJveC5oIgotI2luY2x1ZGUgIlBvc2l0aW9uLmgiCisjaW5jbHVkZSAiUG9zaXRpb25Db25zdHJ1
Y3RvcnMuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5o
IgogI2luY2x1ZGUgIlJlbmRlclRhYmxlUm93LmgiCkBAIC03OTksNyArNzk5LDcgQEAgU2ltcGxp
ZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRv
cihjb25zdCBSYW5nZSAqcikKICAgICBpZiAoIWVuZE5vZGUtPm9mZnNldEluQ2hhcmFjdGVycygp
KSB7CiAgICAgICAgIGlmIChlbmRPZmZzZXQgPiAwICYmIGVuZE9mZnNldCA8PSBzdGF0aWNfY2Fz
dDxpbnQ+KGVuZE5vZGUtPmNoaWxkTm9kZUNvdW50KCkpKSB7CiAgICAgICAgICAgICBlbmROb2Rl
ID0gZW5kTm9kZS0+Y2hpbGROb2RlKGVuZE9mZnNldCAtIDEpOwotICAgICAgICAgICAgZW5kT2Zm
c2V0ID0gZW5kTm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkgPyBlbmROb2RlLT5tYXhDaGFyYWN0
ZXJPZmZzZXQoKSA6IGVuZE5vZGUtPmNoaWxkTm9kZUNvdW50KCk7CisgICAgICAgICAgICBlbmRP
ZmZzZXQgPSBsYXN0T2Zmc2V0SW5Ob2RlKGVuZE5vZGUpOwogICAgICAgICB9CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIvV2ViQ29yZS9lZGl0
aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCAzMTMzOGQ1Li5kZDNhMGNkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5jcHAKQEAgLTM3MCwxMCArMzcwLDEwIEBAIGludCBsYXN0T2Zmc2V0Rm9yRWRpdGlu
Zyhjb25zdCBOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAobm9kZS0+b2Zm
c2V0SW5DaGFyYWN0ZXJzKCkpCiAgICAgICAgIHJldHVybiBub2RlLT5tYXhDaGFyYWN0ZXJPZmZz
ZXQoKTsKLSAgICAgICAgCisKICAgICBpZiAobm9kZS0+aGFzQ2hpbGROb2RlcygpKQogICAgICAg
ICByZXR1cm4gbm9kZS0+Y2hpbGROb2RlQ291bnQoKTsKLSAgICAKKwogICAgIC8vIE5PVEU6IFRo
aXMgc2hvdWxkIHByZWVtcHQgdGhlIGNoaWxkTm9kZUNvdW50IGZvciwgZS5nLiwgc2VsZWN0IG5v
ZGVzCiAgICAgaWYgKGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKSkKICAgICAgICAgcmV0dXJu
IDE7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30846</attachid>
            <date>2009-06-01 17:19:32 -0700</date>
            <delta_ts>2009-07-30 12:07:29 -0700</delta_ts>
            <desc>Add PositionCreationFunctions.h</desc>
            <filename>Add-PositionCreationFunctions.h.patch</filename>
            <type>text/plain</type>
            <size>20911</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MWVhMmM5MWU0MWJiMDFjNDBiNmNmOWFkYzhmNDdkYWNlNTkwOTBhOQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjOTRjN2M0Li5kMjMwNDQx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDUwIEBACisyMDA5LTA0LTMwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
UG9zaXRpb25DcmVhdGlvbkZ1bmN0aW9ucy5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNTQ5NAorCisgICAgICAgIE1vdmUgdGhlIHBvc2l0aW9uIGNy
ZWF0aW9uIGZ1bmN0aW9ucyBpbnRvIHRoZWlyIG93biBoZWFkZXIKKyAgICAgICAgYW5kIG1ha2Ug
dGhlbSBpbmxpbmUuICBJJ3ZlIG1hZGUgdGhlbSBpbmxpbmUgdG8gYXZvaWQgdGhlCisgICAgICAg
IHJlZi1jaHVybiBjb25jZXJuLiAgSSd2ZSBtb3ZlZCB0aGVtIHRvIHRoZWlyIG93biBoZWFkZXIg
aW4KKyAgICAgICAgcHJlcGFyYXRpb24gZm9yIGFkZGluZyBtb3JlIChub3cgdGhhdCB3ZSBjYW4g
c3VwcG9ydCBwb3NpdGlvbnMKKyAgICAgICAgd2l0aCBkaWZmZXJlbnQgYW5jaG9yIHR5cGVzKS4K
KworICAgICAgICBSZW1vdmUgc3RhcnRQb3NpdGlvbihSYW5nZSopIGFuZCBlbmRQb3NpdGlvbihS
YW5nZSopIGFzIHRoZXkKKyAgICAgICAgd2VyZSBvbmx5IHVzZWQgaW4gb25lIHBsYWNlLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRv
bS9Qb3NpdGlvbi5jcHA6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmg6CisgICAgICAgICogZG9t
L1Bvc2l0aW9uQ3JlYXRpb25GdW5jdGlvbnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpw
b3NpdGlvbkJlZm9yZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6cG9zaXRpb25BZnRlck5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpsYXN0RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUpOgorICAgICAg
ICAqIGRvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cDoKKyAgICAgICAgKiBlZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcDoKKyAgICAgICAgKiBl
ZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaW5lQnJl
YWtDb21tYW5kLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcDoK
KyAgICAgICAgKiBlZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwOgor
ICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0
aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVy
Ojptb3ZlVG8pOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6CisgICAgICAg
ICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxl
ZGl0aW5nLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmg6CisgICAgICAgICog
ZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcDoKKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHA6CisKIDIwMDktMDYtMDEgIE5pa29sYXMgWmltbWVybWFubiAgPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTI3NDJhYy4uNzhh
ODg4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5
ODIsNiArMjk4Miw3IEBACiAJCUE4RjVDMEI5MEY5Mjg1QUMwMDk4RTA2QiAvKiBSZW5kZXJTVkdN
b2RlbE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBOEY1QzBCNzBGOTI4NUFDMDA5OEUwNkIgLyogUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3Bw
ICovOyB9OwogCQlBOEZBNkU1RDBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThGQTZFNUIwRTRDRkRFRDAw
RDVDRjQ5IC8qIFBhdHRlcm4uaCAqLzsgfTsKIAkJQThGQTZFNUUwRTRDRkRFRDAwRDVDRjQ5IC8q
IFBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwICovOyB9OworCQlBOEZF
MzdDMzBGQUE1MDREMDAyODZCODEgLyogUG9zaXRpb25DcmVhdGlvbkZ1bmN0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThGRTM3QzIwRkFBNTA0
RDAwMjg2QjgxIC8qIFBvc2l0aW9uQ3JlYXRpb25GdW5jdGlvbnMuaCAqLzsgfTsKIAkJQTlDNkU0
RTMwRDc0NUUwNTAwNjQ0MkU5IC8qIE1pbWVUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE5QzZFNEUxMEQ3NDVFMDUwMDY0NDJFOSAvKiBNaW1l
VHlwZS5jcHAgKi87IH07CiAJCUE5QzZFNEU0MEQ3NDVFMDUwMDY0NDJFOSAvKiBNaW1lVHlwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTlDNkU0RTIw
RDc0NUUwNTAwNjQ0MkU5IC8qIE1pbWVUeXBlLmggKi87IH07CiAJCUE5QzZFNEU3MEQ3NDVFMTgw
MDY0NDJFOSAvKiBNaW1lVHlwZUFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE5QzZFNEU1MEQ3NDVFMTgwMDY0NDJFOSAvKiBNaW1lVHlwZUFy
cmF5LmNwcCAqLzsgfTsKQEAgLTc1OTUsNiArNzU5Niw3IEBACiAJCUE4RjVDMEI3MEY5Mjg1QUMw
MDk4RTA2QiAvKiBSZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF0dGVybi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4RkUzN0MyMEZBQTUwNEQwMDI4NkI4MSAvKiBQb3NpdGlv
bkNyZWF0aW9uRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBv
c2l0aW9uQ3JlYXRpb25GdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTlDNkU0RTEwRDc0NUUwNTAwNjQ0MkU5IC8qIE1pbWVUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNaW1lVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE5QzZFNEUyMEQ3NDVFMDUwMDY0NDJFOSAvKiBNaW1lVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWltZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTlDNkU0RTUwRDc0NUUxODAwNjQ0MkU5IC8qIE1pbWVUeXBlQXJyYXkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1pbWVUeXBlQXJyYXkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ1MzEsNiArMTQ1MzMsNyBAQAogCQkJ
CTU0QzUwRjdBMEU4MDFERjMwMDk4MzJBMCAvKiBYTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcCAqLywK
IAkJCQk1RDE1RTNBOTBGOUU2QUMxMDA5RTBFM0YgLyogWE1MVG9rZW5pemVyU2NvcGUuY3BwICov
LAogCQkJCTVEMTVFM0FBMEY5RTZBQzEwMDlFMEUzRiAvKiBYTUxUb2tlbml6ZXJTY29wZS5oICov
LAorCQkJCUE4RkUzN0MyMEZBQTUwNEQwMDI4NkI4MSAvKiBQb3NpdGlvbkNyZWF0aW9uRnVuY3Rp
b25zLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRvbTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0xNjc4OCw2ICsxNjc5MSw3IEBACiAJCQkJODQ1RTcyRjgwRkQyNjFFRTAwQTg3RDc5
IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ1RTcyRkMwRkQyNjIzOTAwQTg3RDc5
IC8qIFNWR0ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxRUJGM0IwRkQzNEY0MTAwREE3
NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE4RkUzN0MzMEZB
QTUwNEQwMDI4NkI4MSAvKiBQb3NpdGlvbkNyZWF0aW9uRnVuY3Rpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRl
eCBkY2NmZjgyLi5hZjQxNDg3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiTG9jYWxpemVkU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKKyNpbmNsdWRlICJQb3NpdGlvbkNyZWF0aW9uRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdE1hcmtl
ci5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCmluZGV4IDhjNTIyYTEuLjI2ZjIzOTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTU1LDYgKzU1LDcg
QEAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUG9zaXRpb25DcmVhdGlvbkZ1bmN0aW9ucy5o
IgogI2luY2x1ZGUgIlJlbmRlckZpZWxkc2V0LmgiCiAjaW5jbHVkZSAiUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2wuaCIKICNpbmNsdWRlICJSZW5kZXJIVE1MQ2FudmFzLmgiCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXgg
MGRkNDhkNC4uMzA3ZTg4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisr
KyBiL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkNTdHJpbmcuaCIKICNpbmNsdWRlICJDaGFyYWN0ZXJOYW1lcy5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJQb3NpdGlvbkNyZWF0aW9uRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAi
UG9zaXRpb25JdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAi
VGV4dC5oIgpAQCAtMTExMywyOCArMTExNCw3IEBAIHZvaWQgUG9zaXRpb246OnNob3dUcmVlRm9y
VGhpcygpIGNvbnN0CiAKICNlbmRpZgogCi1Qb3NpdGlvbiBzdGFydFBvc2l0aW9uKGNvbnN0IFJh
bmdlKiByKQotewotICAgIHJldHVybiByID8gci0+c3RhcnRQb3NpdGlvbigpIDogUG9zaXRpb24o
KTsKLX0KLQotUG9zaXRpb24gZW5kUG9zaXRpb24oY29uc3QgUmFuZ2UqIHIpCi17Ci0gICAgcmV0
dXJuIHIgPyByLT5lbmRQb3NpdGlvbigpIDogUG9zaXRpb24oKTsKLX0KIAotLy8gTk9URTogZmly
c3QvbGFzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlIGNhbiByZXR1cm4gImVkaXRpbmcgcG9z
aXRpb25zIiAobGlrZSBbaW1nLCAwXSkKLS8vIGZvciBlbGVtZW50cyB3aGljaCBlZGl0aW5nICJp
Z25vcmVzIi4gIHRoZSByZXN0IG9mIHRoZSBlZGl0aW5nIGNvZGUgd2lsbCB0cmVhdCBbaW1nLCAw
XQotLy8gYXMgInRoZSBsYXN0IHBvc2l0aW9uIGJlZm9yZSB0aGUgaW1nIgotUG9zaXRpb24gZmly
c3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZShOb2RlKiBub2RlKQotewotICAgIHJldHVybiBQ
b3NpdGlvbihub2RlLCAwKTsKLX0KLQotUG9zaXRpb24gbGFzdERlZXBFZGl0aW5nUG9zaXRpb25G
b3JOb2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgcmV0dXJuIFBvc2l0aW9uKG5vZGUsIGxhc3RPZmZz
ZXRGb3JFZGl0aW5nKG5vZGUpKTsKLX0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oIGIvV2ViQ29yZS9kb20vUG9zaXRpb24uaApp
bmRleCA1N2Y3M2VjLi42OTFhN2ZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5o
CisrKyBiL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTE4OCwxNSArMTg4LDYgQEAgaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9zaXRpb24mIGIpCiAg
ICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAotUG9zaXRpb24gc3RhcnRQb3NpdGlvbihjb25zdCBS
YW5nZSopOwotUG9zaXRpb24gZW5kUG9zaXRpb24oY29uc3QgUmFuZ2UqKTsKLQotLy8gTk9URTog
Zmlyc3QvbGFzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlIGNhbiByZXR1cm4gImVkaXRpbmcg
cG9zaXRpb25zIiAobGlrZSBbaW1nLCAwXSkKLS8vIGZvciBlbGVtZW50cyB3aGljaCBlZGl0aW5n
ICJpZ25vcmVzIi4gIHRoZSByZXN0IG9mIHRoZSBlZGl0aW5nIGNvZGUgd2lsbCB0cmVhdCBbaW1n
LCAwXQotLy8gYXMgInRoZSBsYXN0IHBvc2l0aW9uIGJlZm9yZSB0aGUgaW1nIgotUG9zaXRpb24g
Zmlyc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZShOb2RlKik7Ci1Qb3NpdGlvbiBsYXN0RGVl
cEVkaXRpbmdQb3NpdGlvbkZvck5vZGUoTm9kZSopOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkNyZWF0
aW9uRnVuY3Rpb25zLmggYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbkNyZWF0aW9uRnVuY3Rpb25zLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc1ODc4NwotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvZG9tL1Bvc2l0aW9uQ3JlYXRpb25GdW5jdGlvbnMuaApAQCAtMCwwICsx
LDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQb3NpdGlvbkNvbnN0cnVjdG9yc19oCisjZGVmaW5l
IFBvc2l0aW9uQ29uc3RydWN0b3JzX2gKKworI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiIC8vIGZv
ciBsYXN0T2Zmc2V0Rm9yRWRpdGluZworI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJQb3Np
dGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFdlIGRlZmluZSBwb3NpdGlvbiBj
cmVhdGlvbiBmdW5jdGlvbnMgdG8gbWFrZSBjYWxsc2l0ZXMgbW9yZSByZWFkYWJsZS4KKy8vIFRo
ZXNlIGFyZSBpbmxpbmUgdG8gcHJldmVudCByZWYtY2h1cm4gd2hlbiByZXR1cm5pbmcgYSBQb3Np
dGlvbiBvYmplY3QuCisvLyBJZiB3ZSBldmVyIGFkZCBhIFBhc3NQb3NpdGlvbiB3ZSBjYW4gbWFr
ZSB0aGVzZSBub24taW5saW5lLgorCitzdGF0aWMgaW5saW5lIFBvc2l0aW9uIHBvc2l0aW9uQmVm
b3JlTm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBB
U1NFUlQobm9kZS0+cGFyZW50Tm9kZSgpKQorICAgIC8vIEF0IGxlYXN0IG9uZSBjYWxsZXIgY3Vy
cmVudGx5IGhpdHMgdGhpcyBBU1NFUlQgdGhvdWdoLCB3aGljaCBpbmRpY2F0ZXMKKyAgICAvLyB0
aGF0IHRoZSBjYWxsZXIgaXMgdHJ5aW5nIHRvIG1ha2UgYSBwb3NpdGlvbiByZWxhdGl2ZSB0byBh
IGRpc2Nvbm5lY3RlZCBub2RlICh3aGljaCBpcyBsaWtlbHkgYW4gZXJyb3IpCisgICAgcmV0dXJu
IFBvc2l0aW9uKG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+bm9kZUluZGV4KCksIFBvc2l0aW9u
OjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOworfQorCitzdGF0aWMgaW5saW5lIFBvc2l0aW9u
IHBvc2l0aW9uQWZ0ZXJOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUt
PnBhcmVudE5vZGUoKSk7CisgICAgcmV0dXJuIFBvc2l0aW9uKG5vZGUtPnBhcmVudE5vZGUoKSwg
bm9kZS0+bm9kZUluZGV4KCkgKyAxLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9y
KTsKK30KKworLy8gTk9URTogZmlyc3QvbGFzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlIHJl
dHVybiAiZWRpdGluZyBwb3NpdGlvbnMiIChsaWtlIFtpbWcsIDBdKQorLy8gZm9yIGVsZW1lbnRz
IHdoaWNoIGVkaXRpbmcgaWdub3Jlcy4gIFRoZSByZXN0IG9mIHRoZSBlZGl0aW5nIGNvZGUgd2ls
bCB0cmVhdCBbaW1nLCAwXQorLy8gYXMgInRoZSBsYXN0IHBvc2l0aW9uIGJlZm9yZSB0aGUgaW1n
Ii4KK3N0YXRpYyBpbmxpbmUgUG9zaXRpb24gZmlyc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9k
ZShOb2RlKiBhbmNob3JOb2RlKQoreworICAgIEFTU0VSVChhbmNob3JOb2RlKTsKKyAgICByZXR1
cm4gUG9zaXRpb24oYW5jaG9yTm9kZSwgMCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUG9zaXRpb24g
bGFzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKE5vZGUqIGFuY2hvck5vZGUpCit7CisgICAg
QVNTRVJUKGFuY2hvck5vZGUpOworICAgIHJldHVybiBQb3NpdGlvbihhbmNob3JOb2RlLCBsYXN0
T2Zmc2V0Rm9yRWRpdGluZyhhbmNob3JOb2RlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFBvc2l0aW9uQ29uc3RydWN0b3JzX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwIGIvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRv
ci5jcHAKaW5kZXggNzgxZDM1Mi4uZTI1YzRmNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUG9z
aXRpb25JdGVyYXRvci5jcHAKKysrIGIvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQb3NpdGlvbkl0ZXJhdG9yLmgiCiAKICNpbmNs
dWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUG9zaXRpb25DcmVhdGlvbkZ1bmN0aW9ucy5oIgogI2lu
Y2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggOTk5NWYyZi4uNDI1NmI4MyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9XZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiSFRNTEludGVyY2hhbmdlLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
Tm9kZUxpc3QuaCIKKyNpbmNsdWRlICJQb3NpdGlvbkNyZWF0aW9uRnVuY3Rpb25zLmgiCiAjaW5j
bHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJUZXh0
LmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
IGIvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBiZjJiNTdj
Li5jODk0MGI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAg
LTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJJbnNlcnRUZXh0Q29tbWFuZC5oIgogI2luY2x1ZGUg
IkpvaW5UZXh0Tm9kZXNDb21tYW5kLmgiCiAjaW5jbHVkZSAiTWVyZ2VJZGVudGljYWxFbGVtZW50
c0NvbW1hbmQuaCIKKyNpbmNsdWRlICJQb3NpdGlvbkNyZWF0aW9uRnVuY3Rpb25zLmgiCiAjaW5j
bHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuaCIKICNp
bmNsdWRlICJSZW1vdmVOb2RlQ29tbWFuZC5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5n
L0NyZWF0ZUxpbmtDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFu
ZC5jcHAKaW5kZXggMjYzZmVhYi4uYmIzZjgzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5n
L0NyZWF0ZUxpbmtDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQ3JlYXRlTGlua0Nv
bW1hbmQuY3BwCkBAIC0yNSwxMCArMjUsMTEgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNyZWF0ZUxpbmtDb21tYW5kLmgiCi0jaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKLSNp
bmNsdWRlICJUZXh0LmgiCiAKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgorI2luY2x1
ZGUgImh0bWxlZGl0aW5nLmgiCisjaW5jbHVkZSAiUG9zaXRpb25DcmVhdGlvbkZ1bmN0aW9ucy5o
IgorI2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2Vk
aXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKaW5kZXggNzI1YzAxZC4uMzk3Mzc4YiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCisr
KyBiL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5j
bHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlBvc2l0aW9uQ3JlYXRpb25GdW5jdGlvbnMuaCIKICNp
bmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbW92ZU5vZGVDb21tYW5kLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQm94LmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKaW5kZXggMmMyODJiYi4uMzIxMjU5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0Rl
bGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxl
Y3Rpb25Db21tYW5kLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKKyNp
bmNsdWRlICJQb3NpdGlvbkNyZWF0aW9uRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFi
bGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbmNsdWRl
ICJUZXh0LmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29t
bWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKaW5k
ZXggZjAyMDQ1OS4uN2Q3N2E0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydExp
bmVCcmVha0NvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtD
b21tYW5kLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJQb3Np
dGlvbkNyZWF0aW9uRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RD
b21tYW5kLmNwcAppbmRleCBhYTQ4NzYxLi41MzQ1MzQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRM
aXN0Q29tbWFuZC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJodG1sZWRpdGluZy5o
IgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5j
bHVkZSAiUG9zaXRpb25DcmVhdGlvbkZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRv
ci5oIgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0
aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCmluZGV4IDczNGQ4ZmMuLmEy
NzU1MjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3JDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9yQ29tbWFuZC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJJbnNlcnRMaW5lQnJlYWtDb21tYW5kLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIlBvc2l0aW9uQ3JlYXRpb25GdW5jdGlvbnMuaCIKICNpbmNsdWRlICJSZW5k
ZXJPYmplY3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAgYi9XZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCmluZGV4IGJmNmZkMTkuLjgxNzAwYTkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKKysrIGIv
V2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcApAQCAtMzgsNiArMzgsNyBAQAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJIVE1MSW50ZXJjaGFuZ2UuaCIKICNpbmNs
dWRlICJodG1sZWRpdGluZy5oIgorI2luY2x1ZGUgIlBvc2l0aW9uQ3JlYXRpb25GdW5jdGlvbnMu
aCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgi
CiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggYzZkYTg2NC4uMGRkYTU5MCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnRlcmNoYW5nZS5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlBvc2l0aW9uQ3JlYXRpb25GdW5jdGlv
bnMuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU21hcnRS
ZXBsYWNlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0
aW9uQ29udHJvbGxlci5jcHAKaW5kZXggM2JhZmJlNy4uZTIwMTI5ZSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGlu
Zy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcApAQCAtOTEsNyArOTEsOCBAQCB2b2lkIFNlbGVjdGlv
bkNvbnRyb2xsZXI6Om1vdmVUbyhjb25zdCBQb3NpdGlvbiAmcG9zLCBFQWZmaW5pdHkgYWZmaW5p
dHksIGJvb2wgdQogCiB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vdmVUbyhjb25zdCBSYW5n
ZSAqciwgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIHVzZXJUcmlnZ2VyZWQpCiB7Ci0gICAgc2V0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbihyKSwgZW5kUG9zaXRpb24o
ciksIGFmZmluaXR5KSwgdHJ1ZSwgdHJ1ZSwgdXNlclRyaWdnZXJlZCk7CisgICAgVmlzaWJsZVNl
bGVjdGlvbiBzZWxlY3Rpb24gPSByID8gVmlzaWJsZVNlbGVjdGlvbihyLT5zdGFydFBvc2l0aW9u
KCksIHItPmVuZFBvc2l0aW9uKCksIGFmZmluaXR5KSA6IFZpc2libGVTZWxlY3Rpb24oUG9zaXRp
b24oKSwgUG9zaXRpb24oKSwgYWZmaW5pdHkpOworICAgIHNldFNlbGVjdGlvbihzZWxlY3Rpb24s
IHRydWUsIHRydWUsIHVzZXJUcmlnZ2VyZWQpOwogfQogCiB2b2lkIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6Om1vdmVUbyhjb25zdCBQb3NpdGlvbiAmYmFzZSwgY29uc3QgUG9zaXRpb24gJmV4dGVudCwg
RUFmZmluaXR5IGFmZmluaXR5LCBib29sIHVzZXJUcmlnZ2VyZWQpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29t
bWFuZC5jcHAKaW5kZXggNWNlNGU1Ni4uMzBiYTdiZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0
aW5nL1R5cGluZ0NvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5k
LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkluc2VydExpbmVCcmVha0NvbW1hbmQu
aCIKICNpbmNsdWRlICJJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmgiCiAjaW5jbHVk
ZSAiSW5zZXJ0VGV4dENvbW1hbmQuaCIKKyNpbmNsdWRlICJQb3NpdGlvbkNyZWF0aW9uRnVuY3Rp
b25zLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVTZWxlY3Rpb24uY3BwCmluZGV4IDg4M2JjZGIuLmUzZjhiMmQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVNlbGVjdGlvbi5jcHAKQEAgLTI2LDE1ICsyNiwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKIAotI2luY2x1ZGUgIkNoYXJhY3Rlck5h
bWVzLmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVzLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAi
aHRtbGVkaXRpbmcuaCIKKyNpbmNsdWRlICJQb3NpdGlvbkNyZWF0aW9uRnVuY3Rpb25zLmgiCisj
aW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJW
aXNpYmxlUG9zaXRpb24uaCIKKyNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgInZp
c2libGVfdW5pdHMuaCIKLSNpbmNsdWRlICJSYW5nZS5oIgogCiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5n
L2h0bWxlZGl0aW5nLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXgg
YjYxMTU5Yy4uM2FjNThmZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5n
LmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9MaXN0RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxVTGlzdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJQb3NpdGlvbkNyZWF0
aW9uRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiUG9zaXRpb25JdGVyYXRvci5oIgogI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC01NTcsMTggKzU1OCw2IEBA
IE5vZGUqIGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFibGUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2
aXNpYmxlUG9zaXRpb24pCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBvc2l0aW9uIHBvc2l0aW9uQmVm
b3JlTm9kZShjb25zdCBOb2RlKiBub2RlKQotewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBB
U1NFUlQobm9kZS0+cGFyZW50Tm9kZSgpKQotICAgIHJldHVybiBQb3NpdGlvbihub2RlLT5wYXJl
bnROb2RlKCksIG5vZGUtPm5vZGVJbmRleCgpKTsKLX0KLQotUG9zaXRpb24gcG9zaXRpb25BZnRl
ck5vZGUoY29uc3QgTm9kZSogbm9kZSkKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgQVNT
RVJUKG5vZGUtPnBhcmVudE5vZGUoKSkKLSAgICByZXR1cm4gUG9zaXRpb24obm9kZS0+cGFyZW50
Tm9kZSgpLCBub2RlLT5ub2RlSW5kZXgoKSArIDEpOwotfQotCiBib29sIGlzTGlzdEVsZW1lbnQo
Tm9kZSAqbikKIHsKICAgICByZXR1cm4gKG4gJiYgKG4tPmhhc1RhZ05hbWUodWxUYWcpIHx8IG4t
Pmhhc1RhZ05hbWUob2xUYWcpIHx8IG4tPmhhc1RhZ05hbWUoZGxUYWcpKSk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaCBiL1dlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5oCmluZGV4IDc3NmJlNjguLmJjZGFkYTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGlu
Zy9odG1sZWRpdGluZy5oCisrKyBiL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCkBAIC02
OCw5ICs2OCw2IEBAIGNvbnN0IFN0cmluZyYgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpOwogCiAv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Qb3NpdGlvbiBwb3NpdGlvbkJl
Zm9yZU5vZGUoY29uc3QgTm9kZSopOwotUG9zaXRpb24gcG9zaXRpb25BZnRlck5vZGUoY29uc3Qg
Tm9kZSopOwotCiBQYXNzUmVmUHRyPFJhbmdlPiBhdm9pZEludGVyc2VjdGlvbldpdGhOb2RlKGNv
bnN0IFJhbmdlKiwgTm9kZSopOwogVmlzaWJsZVNlbGVjdGlvbiBhdm9pZEludGVyc2VjdGlvbldp
dGhOb2RlKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBOb2RlKik7CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcCBiL1dlYkNvcmUvZWRpdGluZy92aXNpYmxl
X3VuaXRzLmNwcAppbmRleCAwMmU5ZmI4Li5lYzA2MjgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Vk
aXRpbmcvdmlzaWJsZV91bml0cy5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5p
dHMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUG9zaXRpb25D
cmVhdGlvbkZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAi
UmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJUZXh0Qm91bmRhcmllcy5oIgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKaW5kZXggZDZhNzMwOS4uMjJhM2EyNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUG9zaXRpb25DcmVhdGlvbkZ1bmN0
aW9ucy5oIgogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxleGli
bGVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IGY4MTAxOGQuLmM3ZTlkODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUG9zaXRpb25D
cmVhdGlvbkZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCiAjaW5jbHVkZSAi
UmVuZGVyQ291bnRlci5oIgogI2luY2x1ZGUgIlJlbmRlckZsZXhpYmxlQm94LmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30847</attachid>
            <date>2009-06-01 17:19:34 -0700</date>
            <delta_ts>2009-07-30 12:07:32 -0700</delta_ts>
            <desc>Rename positionBeforeNode to positionInParentBeforeNode</desc>
            <filename>Rename-positionBeforeNode-to-positionInParentBeforeNode.patch</filename>
            <type>text/plain</type>
            <size>24020</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">M2QwYjgzMTU5NzM4ZTFmMWU0ZDVmMTAzYWQzY2ZjYzkwZTRjZWQ0OQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkMjMwNDQxLi45NmMxMThl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMiw2ICsyLDU3IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAK
KyAgICAgICAgUmVuYW1lIHBvc2l0aW9uQmVmb3JlTm9kZSB0byBwb3NpdGlvbkluUGFyZW50QmVm
b3JlTm9kZQorICAgICAgICBhbmQgcG9zaXRpb25BZnRlck5vZGUgdG8gcG9zaXRpb25JblBhcmVu
dEFmdGVyTm9kZQorICAgICAgICBpbiBwcmVwYXJhdGlvbiBmb3IgYWRkaW5nIGEgcG9zaXRpb25C
ZWZvcmVOb2RlCisgICAgICAgIHdoaWNoIHJldHVybnMgYSBuZWlnaGJvci1hbmNob3JlZCBwb3Np
dGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1
NDk0CisKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2VzLCB0aHVzIG5vIHRlc3RzLgorCisg
ICAgICAgICogZG9tL1Bvc2l0aW9uQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChXZWJDb3JlOjpw
b3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpwb3NpdGlvbklu
UGFyZW50QWZ0ZXJOb2RlKToKKyAgICAgICAgKiBkb20vUG9zaXRpb25JdGVyYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkl0ZXJhdG9yOjpvcGVyYXRvciBQb3NpdGlvbik6Cisg
ICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZSk6CisgICAgICAgICogZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6cG9zaXRpb25PdXRzaWRlVGFiU3Bhbik6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YnJlYWtPdXRPZkVtcHR5TWFpbEJsb2NrcXVvdGVkUGFyYWdy
YXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpwb3NpdGlvbkF2
b2lkaW5nU3BlY2lhbEVsZW1lbnRCb3VuZGFyeSk6CisgICAgICAgICogZWRpdGluZy9DcmVhdGVM
aW5rQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVMaW5rQ29tbWFuZDo6ZG9B
cHBseSk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmRlbGV0ZVRhcmdldCk6Cisg
ICAgICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmluaXRpYWxpemVTdGFydEVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjp1cGRhdGVQb3NpdGlvbkZvck5vZGVSZW1vdmFsKToKKyAgICAgICAgKiBl
ZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
ZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRM
aXN0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0Q29tbWFuZDo6ZG9B
cHBseSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6
OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zZXJ0VGV4dENvbW1hbmQ6OmlucHV0KToKKyAgICAgICAgKiBlZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpwb3NpdGlvbkF0U3RhcnRPZkluc2VydGVkQ29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAg
ICAgICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZp
c2libGVTZWxlY3Rpb246OmFkanVzdFNlbGVjdGlvblRvQXZvaWRDcm9zc2luZ0VkaXRpbmdCb3Vu
ZGFyaWVzKToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmZpcnN0RWRpdGFibGVQb3NpdGlvbkFmdGVyUG9zaXRpb25JblJvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6bGFzdEVkaXRhYmxlUG9zaXRpb25CZWZvcmVQb3NpdGlvbkluUm9vdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpyYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6cG9zaXRpb25CZWZvcmVDb250YWluaW5nU3BlY2lhbEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6cG9zaXRpb25BZnRlckNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpwb3NpdGlvbkJlZm9yZVRhYlNwYW4pOgorCisyMDA5LTA0LTMwICBFcmljIFNl
aWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKwogICAgICAgICBBZGQgUG9zaXRpb25DcmVhdGlvbkZ1bmN0aW9ucy5oCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTQ5NAogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkNyZWF0aW9uRnVuY3Rpb25zLmggYi9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbkNyZWF0aW9uRnVuY3Rpb25zLmgKaW5kZXggZTc1ODc4Ny4uZjdmOGJjNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vUG9zaXRpb25DcmVhdGlvbkZ1bmN0aW9ucy5oCisrKyBiL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uQ3JlYXRpb25GdW5jdGlvbnMuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGVzZSBhcmUgaW5saW5lIHRvIHByZXZlbnQgcmVmLWNo
dXJuIHdoZW4gcmV0dXJuaW5nIGEgUG9zaXRpb24gb2JqZWN0LgogLy8gSWYgd2UgZXZlciBhZGQg
YSBQYXNzUG9zaXRpb24gd2UgY2FuIG1ha2UgdGhlc2Ugbm9uLWlubGluZS4KIAotc3RhdGljIGlu
bGluZSBQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZU5vZGUoY29uc3QgTm9kZSogbm9kZSkKK3N0YXRp
YyBpbmxpbmUgUG9zaXRpb24gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoY29uc3QgTm9kZSog
bm9kZSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgQVNTRVJUKG5vZGUtPnBhcmVudE5v
ZGUoKSkKICAgICAvLyBBdCBsZWFzdCBvbmUgY2FsbGVyIGN1cnJlbnRseSBoaXRzIHRoaXMgQVNT
RVJUIHRob3VnaCwgd2hpY2ggaW5kaWNhdGVzCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBpbmxp
bmUgUG9zaXRpb24gcG9zaXRpb25CZWZvcmVOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0
dXJuIFBvc2l0aW9uKG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+bm9kZUluZGV4KCksIFBvc2l0
aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwogfQogCi1zdGF0aWMgaW5saW5lIFBvc2l0
aW9uIHBvc2l0aW9uQWZ0ZXJOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCitzdGF0aWMgaW5saW5lIFBv
c2l0aW9uIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoY29uc3QgTm9kZSogbm9kZSkKIHsKICAg
ICBBU1NFUlQobm9kZS0+cGFyZW50Tm9kZSgpKTsKICAgICByZXR1cm4gUG9zaXRpb24obm9kZS0+
cGFyZW50Tm9kZSgpLCBub2RlLT5ub2RlSW5kZXgoKSArIDEsIFBvc2l0aW9uOjpQb3NpdGlvbklz
T2Zmc2V0SW5BbmNob3IpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRv
ci5jcHAgYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcAppbmRleCBlMjVjNGY1Li41
YjhkZDQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcAorKysg
Yi9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcApAQCAtMzksNyArMzksNyBAQCBQb3Np
dGlvbkl0ZXJhdG9yOjpvcGVyYXRvciBQb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKG1fY2hp
bGQpIHsKICAgICAgICAgQVNTRVJUKG1fY2hpbGQtPnBhcmVudE5vZGUoKSA9PSBtX3BhcmVudCk7
Ci0gICAgICAgIHJldHVybiBwb3NpdGlvbkJlZm9yZU5vZGUobV9jaGlsZCk7CisgICAgICAgIHJl
dHVybiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShtX2NoaWxkKTsKICAgICB9CiAgICAgaWYg
KG1fcGFyZW50LT5oYXNDaGlsZE5vZGVzKCkpCiAgICAgICAgIHJldHVybiBsYXN0RGVlcEVkaXRp
bmdQb3NpdGlvbkZvck5vZGUobV9wYXJlbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHAKaW5kZXggNDI1NmI4My4uN2VlNjM1NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCkBAIC03NzIsOSArNzcyLDkgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBw
bHlJbmxpbmVTdHlsZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiAqc3R5bGUpCiAgICAgaWYg
KHVuaWNvZGVCaWRpKSB7CiAgICAgICAgIC8vIEF2b2lkIHJlbW92aW5nIHRoZSBkaXIgYXR0cmli
dXRlIGFuZCB0aGUgdW5pY29kZS1iaWRpIGFuZCBkaXJlY3Rpb24gcHJvcGVydGllcyBmcm9tIHRo
ZSB1bnNwbGl0IGFuY2VzdG9ycy4KICAgICAgICAgaWYgKHN0YXJ0VW5zcGxpdEFuY2VzdG9yICYm
IG5vZGVGdWxseVNlbGVjdGVkKHN0YXJ0VW5zcGxpdEFuY2VzdG9yLCByZW1vdmVTdGFydCwgZW5k
KSkKLSAgICAgICAgICAgIGVtYmVkZGluZ1JlbW92ZVN0YXJ0ID0gcG9zaXRpb25BZnRlck5vZGUo
c3RhcnRVbnNwbGl0QW5jZXN0b3IpOworICAgICAgICAgICAgZW1iZWRkaW5nUmVtb3ZlU3RhcnQg
PSBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKHN0YXJ0VW5zcGxpdEFuY2VzdG9yKTsKICAgICAg
ICAgaWYgKGVuZFVuc3BsaXRBbmNlc3RvciAmJiBub2RlRnVsbHlTZWxlY3RlZChlbmRVbnNwbGl0
QW5jZXN0b3IsIHJlbW92ZVN0YXJ0LCBlbmQpKQotICAgICAgICAgICAgZW1iZWRkaW5nUmVtb3Zl
RW5kID0gcG9zaXRpb25CZWZvcmVOb2RlKGVuZFVuc3BsaXRBbmNlc3RvcikuZG93bnN0cmVhbSgp
OworICAgICAgICAgICAgZW1iZWRkaW5nUmVtb3ZlRW5kID0gcG9zaXRpb25JblBhcmVudEJlZm9y
ZU5vZGUoZW5kVW5zcGxpdEFuY2VzdG9yKS5kb3duc3RyZWFtKCk7CiAgICAgfQogCiAgICAgaWYg
KGVtYmVkZGluZ1JlbW92ZVN0YXJ0ICE9IHJlbW92ZVN0YXJ0IHx8IGVtYmVkZGluZ1JlbW92ZUVu
ZCAhPSBlbmQpIHsKQEAgLTgyNCw3ICs4MjQsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjph
cHBseUlubGluZVN0eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uICpzdHlsZSkKICAgICAg
ICAgICAgICAgICBpZiAoYW5jZXN0b3JVbmljb2RlQmlkaSkgewogICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoYW5jZXN0b3JVbmljb2RlQmlkaS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oYW5jZXN0
b3JVbmljb2RlQmlkaS5nZXQoKSktPmdldElkZW50KCkgPT0gQ1NTVmFsdWVFbWJlZCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZW1iZWRkaW5nQXBwbHlTdGFydCA9IHBvc2l0aW9uQWZ0ZXJO
b2RlKG4pOworICAgICAgICAgICAgICAgICAgICAgICAgZW1iZWRkaW5nQXBwbHlTdGFydCA9IHBv
c2l0aW9uSW5QYXJlbnRBZnRlck5vZGUobik7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTgzOCw3ICs4
MzgsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlKENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uICpzdHlsZSkKICAgICAgICAgICAgICAgICBpZiAoYW5jZXN0b3JV
bmljb2RlQmlkaSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYW5jZXN0b3JVbmljb2Rl
QmlkaS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oYW5jZXN0b3JVbmljb2RlQmlkaS5nZXQoKSktPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVFbWJlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZW1i
ZWRkaW5nQXBwbHlFbmQgPSBwb3NpdGlvbkJlZm9yZU5vZGUobik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbWJlZGRpbmdBcHBseUVuZCA9IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG4p
OwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cAppbmRleCBjODk0MGI0Li5mZjk4OTk3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5jcHAKQEAgLTMyOSwxMyArMzI5LDEzIEBAIFBvc2l0aW9uIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjpwb3NpdGlvbk91dHNpZGVUYWJTcGFuKGNvbnN0IFBvc2l0aW9uJiBwb3MpCiAgICAg
Tm9kZSogdGFiU3BhbiA9IHRhYlNwYW5Ob2RlKHBvcy5ub2RlKCkpOwogICAgIAogICAgIGlmIChw
b3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA8PSBjYXJldE1pbk9mZnNldChwb3Mubm9kZSgp
KSkKLSAgICAgICAgcmV0dXJuIHBvc2l0aW9uQmVmb3JlTm9kZSh0YWJTcGFuKTsKKyAgICAgICAg
cmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKHRhYlNwYW4pOwogICAgICAgICAKICAg
ICBpZiAocG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPj0gY2FyZXRNYXhPZmZzZXQocG9z
Lm5vZGUoKSkpCi0gICAgICAgIHJldHVybiBwb3NpdGlvbkFmdGVyTm9kZSh0YWJTcGFuKTsKKyAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUodGFiU3Bhbik7CiAKICAgICBz
cGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnQoc3RhdGljX2Nhc3Q8VGV4dCAqPihwb3Mubm9k
ZSgpKSwgcG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwotICAgIHJldHVybiBwb3NpdGlv
bkJlZm9yZU5vZGUodGFiU3Bhbik7CisgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVO
b2RlKHRhYlNwYW4pOwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnROb2Rl
QXRUYWJTcGFuUG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBjb25zdCBQb3NpdGlvbiYg
cG9zKQpAQCAtOTQ2LDcgKzk0Niw3IEBAIGJvb2wgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmJyZWFr
T3V0T2ZFbXB0eU1haWxCbG9ja3F1b3RlZFBhcmFncmFwaCgpCiAgICAgQVNTRVJUKGNhcmV0UG9z
Lm5vZGUoKS0+aGFzVGFnTmFtZShiclRhZykgfHwgY2FyZXRQb3Mubm9kZSgpLT5pc1RleHROb2Rl
KCkgJiYgY2FyZXRQb3Mubm9kZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xp
bmUoKSk7CiAgICAgCiAgICAgaWYgKGNhcmV0UG9zLm5vZGUoKS0+aGFzVGFnTmFtZShiclRhZykp
IHsKLSAgICAgICAgUG9zaXRpb24gYmVmb3JlQlIocG9zaXRpb25CZWZvcmVOb2RlKGNhcmV0UG9z
Lm5vZGUoKSkpOworICAgICAgICBQb3NpdGlvbiBiZWZvcmVCUihwb3NpdGlvbkluUGFyZW50QmVm
b3JlTm9kZShjYXJldFBvcy5ub2RlKCkpKTsKICAgICAgICAgcmVtb3ZlTm9kZShjYXJldFBvcy5u
b2RlKCkpOwogICAgICAgICBwcnVuZShiZWZvcmVCUi5ub2RlKCkpOwogICAgIH0gZWxzZSB7CkBA
IC05OTUsNyArOTk1LDcgQEAgUG9zaXRpb24gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnBvc2l0aW9u
QXZvaWRpbmdTcGVjaWFsRWxlbWVudEJvdW5kYXJ5KGNvbnN0IFBvc2kKICAgICAgICAgICAgIGlm
IChsaW5lQnJlYWtFeGlzdHNBdFZpc2libGVQb3NpdGlvbih2aXNpYmxlUG9zKSAmJiBkb3duc3Ry
ZWFtLm5vZGUoKS0+aXNEZXNjZW5kYW50T2YoZW5jbG9zaW5nQW5jaG9yKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gb3JpZ2luYWw7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHJlc3VsdCA9
IHBvc2l0aW9uQWZ0ZXJOb2RlKGVuY2xvc2luZ0FuY2hvcik7CisgICAgICAgICAgICByZXN1bHQg
PSBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKGVuY2xvc2luZ0FuY2hvcik7CiAgICAgICAgIH0K
ICAgICAgICAgLy8gSWYgdmlzdWFsbHkganVzdCBiZWZvcmUgYW4gYW5jaG9yLCBpbnNlcnQgKm91
dHNpZGUqIHRoZSBhbmNob3IgdW5sZXNzIGl0J3MgdGhlIGZpcnN0CiAgICAgICAgIC8vIFZpc2li
bGVQb3NpdGlvbiBpbiBhIHBhcmFncmFwaCwgdG8gbWF0Y2ggTlNUZXh0Vmlldy4KQEAgLTEwMDYs
NyArMTAwNiw3IEBAIFBvc2l0aW9uIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpwb3NpdGlvbkF2b2lk
aW5nU3BlY2lhbEVsZW1lbnRCb3VuZGFyeShjb25zdCBQb3NpCiAgICAgICAgICAgICAgICAgcHVz
aEFuY2hvckVsZW1lbnREb3duKGVuY2xvc2luZ0FuY2hvcik7CiAgICAgICAgICAgICAgICAgZW5j
bG9zaW5nQW5jaG9yID0gZW5jbG9zaW5nQW5jaG9yRWxlbWVudChvcmlnaW5hbCk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXN1bHQgPSBwb3NpdGlvbkJlZm9yZU5vZGUoZW5jbG9zaW5n
QW5jaG9yKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2Rl
KGVuY2xvc2luZ0FuY2hvcik7CiAgICAgICAgIH0KICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGlu
Zy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKaW5kZXggYmIzZjgzZC4uZmNhYTUxYiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2Vk
aXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgQ3JlYXRl
TGlua0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICBpbnNlcnROb2RlQXQoYW5jaG9yRWxlbWVu
dC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7CiAgICAgICAgIFJlZlB0cjxUZXh0
PiB0ZXh0Tm9kZSA9IG5ldyBUZXh0KGRvY3VtZW50KCksIG1fdXJsKTsKICAgICAgICAgYXBwZW5k
Tm9kZSh0ZXh0Tm9kZS5nZXQoKSwgYW5jaG9yRWxlbWVudC5nZXQoKSk7Ci0gICAgICAgIHNldEVu
ZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShhbmNob3JF
bGVtZW50LmdldCgpKSwgcG9zaXRpb25BZnRlck5vZGUoYW5jaG9yRWxlbWVudC5nZXQoKSksIERP
V05TVFJFQU0pKTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24o
cG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5nZXQoKSksIHBvc2l0aW9u
SW5QYXJlbnRBZnRlck5vZGUoYW5jaG9yRWxlbWVudC5nZXQoKSksIERPV05TVFJFQU0pKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9s
bGVyLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAppbmRl
eCAzOTczNzhiLi5lOGExZmI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0
dG9uQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRy
b2xsZXIuY3BwCkBAIC0zNTEsNyArMzUxLDcgQEAgdm9pZCBEZWxldGVCdXR0b25Db250cm9sbGVy
OjpkZWxldGVUYXJnZXQoKQogICAgIC8vIEJlY2F1c2UgdGhlIGRlbGV0aW9uIFVJIG9ubHkgYXBw
ZWFycyB3aGVuIHRoZSBzZWxlY3Rpb24gaXMgZW50aXJlbHkKICAgICAvLyB3aXRoaW4gdGhlIHRh
cmdldCwgd2UgdW5jb25kaXRpb25hbGx5IHVwZGF0ZSB0aGUgc2VsZWN0aW9uIHRvIGJlCiAgICAg
Ly8gYSBjYXJldCB3aGVyZSB0aGUgdGFyZ2V0IGhhZCBiZWVuLgotICAgIFBvc2l0aW9uIHBvcyA9
IHBvc2l0aW9uQmVmb3JlTm9kZShlbGVtZW50LmdldCgpKTsKKyAgICBQb3NpdGlvbiBwb3MgPSBw
b3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShlbGVtZW50LmdldCgpKTsKICAgICBhcHBseUNvbW1h
bmQoUmVtb3ZlTm9kZUNvbW1hbmQ6OmNyZWF0ZShlbGVtZW50LnJlbGVhc2UoKSkpOwogICAgIG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oVmlzaWJsZVBvc2l0aW9uKHBvcykpOwog
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
IGIvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDMyMTI1
OWIuLjdlYWM3MTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25D
b21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKQEAgLTEzOSwxMSArMTM5LDExIEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aW5p
dGlhbGl6ZVN0YXJ0RW5kKFBvc2l0aW9uJiBzdGFydCwgUG9zaXRpb24mIGVuZCkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAKICAgICAgICAgLy8gSWYgd2UncmUgZ29pbmcgdG8gZXhwYW5k
IHRvIGluY2x1ZGUgdGhlIHN0YXJ0U3BlY2lhbENvbnRhaW5lciwgaXQgbXVzdCBiZSBmdWxseSBz
ZWxlY3RlZC4KLSAgICAgICAgaWYgKHN0YXJ0U3BlY2lhbENvbnRhaW5lciAmJiAhZW5kU3BlY2lh
bENvbnRhaW5lciAmJiBSYW5nZTo6Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKHBvc2l0aW9uQWZ0ZXJO
b2RlKHN0YXJ0U3BlY2lhbENvbnRhaW5lciksIGVuZCkgPiAtMSkKKyAgICAgICAgaWYgKHN0YXJ0
U3BlY2lhbENvbnRhaW5lciAmJiAhZW5kU3BlY2lhbENvbnRhaW5lciAmJiBSYW5nZTo6Y29tcGFy
ZUJvdW5kYXJ5UG9pbnRzKHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoc3RhcnRTcGVjaWFsQ29u
dGFpbmVyKSwgZW5kKSA+IC0xKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLy8gSWYg
d2UncmUgZ29pbmcgdG8gZXhwYW5kIHRvIGluY2x1ZGUgdGhlIGVuZFNwZWNpYWxDb250YWluZXIs
IGl0IG11c3QgYmUgZnVsbHkgc2VsZWN0ZWQuICAgICAgICAgCi0gICAgICAgIGlmIChlbmRTcGVj
aWFsQ29udGFpbmVyICYmICFzdGFydFNwZWNpYWxDb250YWluZXIgJiYgUmFuZ2U6OmNvbXBhcmVC
b3VuZGFyeVBvaW50cyhzdGFydCwgcG9zaXRpb25CZWZvcmVOb2RlKGVuZFNwZWNpYWxDb250YWlu
ZXIpKSA+IC0xKQorICAgICAgICBpZiAoZW5kU3BlY2lhbENvbnRhaW5lciAmJiAhc3RhcnRTcGVj
aWFsQ29udGFpbmVyICYmIFJhbmdlOjpjb21wYXJlQm91bmRhcnlQb2ludHMoc3RhcnQsIHBvc2l0
aW9uSW5QYXJlbnRCZWZvcmVOb2RlKGVuZFNwZWNpYWxDb250YWluZXIpKSA+IC0xKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgICAgICBpZiAoc3RhcnRTcGVjaWFsQ29udGFpbmVy
ICYmIHN0YXJ0U3BlY2lhbENvbnRhaW5lci0+aXNEZXNjZW5kYW50T2YoZW5kU3BlY2lhbENvbnRh
aW5lcikpCkBAIC0zMjEsNyArMzIxLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUG9zaXRpb25Gb3JO
b2RlUmVtb3ZhbChOb2RlKiBub2RlLCBQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgaWYgKG5vZGUt
PnBhcmVudCgpID09IHBvc2l0aW9uLm5vZGUoKSAmJiBub2RlLT5ub2RlSW5kZXgoKSA8ICh1bnNp
Z25lZClwb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKQogICAgICAgICBwb3NpdGlv
biA9IFBvc2l0aW9uKHBvc2l0aW9uLm5vZGUoKSwgcG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKSAtIDEpOwogICAgIGlmIChwb3NpdGlvbi5ub2RlKCkgPT0gbm9kZSB8fCBwb3NpdGlv
bi5ub2RlKCktPmlzRGVzY2VuZGFudE9mKG5vZGUpKQotICAgICAgICBwb3NpdGlvbiA9IHBvc2l0
aW9uQmVmb3JlTm9kZShub2RlKTsKKyAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbkluUGFyZW50
QmVmb3JlTm9kZShub2RlKTsKIH0KIAogdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpyZW1v
dmVOb2RlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGlu
Zy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5l
QnJlYWtDb21tYW5kLmNwcAppbmRleCA3ZDc3YTRkLi5kZmIxMTIwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0
aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCkBAIC0xMjYsMTIgKzEyNiwxMiBAQCB2b2lk
IEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICBpZiAoIWlzU3RhcnRP
ZlBhcmFncmFwaChWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24obm9kZVRvSW5zZXJ0LmdldCgpLCAw
KSkpKQogICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShub2RlVG9JbnNlcnQtPmNsb25lTm9k
ZShmYWxzZSkuZ2V0KCksIG5vZGVUb0luc2VydC5nZXQoKSk7CiAgICAgICAgIAotICAgICAgICBz
ZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkFmdGVyTm9kZShub2Rl
VG9JbnNlcnQuZ2V0KCkpLCBET1dOU1RSRUFNKSk7CisgICAgICAgIHNldEVuZGluZ1NlbGVjdGlv
bihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUobm9kZVRvSW5zZXJ0
LmdldCgpKSwgRE9XTlNUUkVBTSkpOwogICAgIC8vIElmIHdlJ3JlIGluc2VydGluZyBhZnRlciBh
bGwgb2YgdGhlIHJlbmRlcmVkIHRleHQgaW4gYSB0ZXh0IG5vZGUsIG9yIGludG8gYSBub24tdGV4
dCBub2RlLAogICAgIC8vIGEgc2ltcGxlIGluc2VydGlvbiBpcyBzdWZmaWNpZW50LgogICAgIH0g
ZWxzZSBpZiAocG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPj0gY2FyZXRNYXhPZmZzZXQo
cG9zLm5vZGUoKSkgfHwgIXBvcy5ub2RlKCktPmlzVGV4dE5vZGUoKSkgewogICAgICAgICBpbnNl
cnROb2RlQXQobm9kZVRvSW5zZXJ0LmdldCgpLCBwb3MpOwotICAgICAgICBzZXRFbmRpbmdTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkFmdGVyTm9kZShub2RlVG9JbnNlcnQuZ2V0
KCkpLCBET1dOU1RSRUFNKSk7CisgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uKHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUobm9kZVRvSW5zZXJ0LmdldCgpKSwgRE9X
TlNUUkVBTSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFNwbGl0IGEgdGV4dCBub2RlCiAg
ICAgICAgIEFTU0VSVChwb3Mubm9kZSgpLT5pc1RleHROb2RlKCkpOwpAQCAtMTQ1LDcgKzE0NSw3
IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIC8vIEhh
bmRsZSB3aGl0ZXNwYWNlIHRoYXQgb2NjdXJzIGFmdGVyIHRoZSBzcGxpdAogICAgICAgICB1cGRh
dGVMYXlvdXQoKTsKICAgICAgICAgaWYgKCFlbmRpbmdQb3NpdGlvbi5pc1JlbmRlcmVkQ2hhcmFj
dGVyKCkpIHsKLSAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlVGV4dE5vZGUocG9z
aXRpb25CZWZvcmVOb2RlKHRleHROb2RlKSk7CisgICAgICAgICAgICBQb3NpdGlvbiBwb3NpdGlv
bkJlZm9yZVRleHROb2RlKHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKHRleHROb2RlKSk7CiAg
ICAgICAgICAgICAvLyBDbGVhciBvdXQgYWxsIHdoaXRlc3BhY2UgYW5kIGluc2VydCBvbmUgbm9u
LWJyZWFraW5nIHNwYWNlCiAgICAgICAgICAgICBkZWxldGVJbnNpZ25pZmljYW50VGV4dERvd25z
dHJlYW0oZW5kaW5nUG9zaXRpb24pOwogICAgICAgICAgICAgQVNTRVJUKCF0ZXh0Tm9kZS0+cmVu
ZGVyZXIoKSB8fCB0ZXh0Tm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNw
YWNlKCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNw
cCBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKaW5kZXggNTM0NTM0MC4u
OWM4MjhjYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNw
cAorKysgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCkBAIC0yNTEsNyAr
MjUxLDcgQEAgdm9pZCBJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgICAgICAv
LyBBbHNvIGF2b2lkIHRoZSBjb250YWluaW5nIGxpc3QgaXRlbS4KICAgICAgICAgICAgIE5vZGUq
IGxpc3RDaGlsZCA9IGVuY2xvc2luZ0xpc3RDaGlsZChpbnNlcnRpb25Qb3Mubm9kZSgpKTsKICAg
ICAgICAgICAgIGlmIChsaXN0Q2hpbGQgJiYgbGlzdENoaWxkLT5oYXNUYWdOYW1lKGxpVGFnKSkK
LSAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb3MgPSBwb3NpdGlvbkJlZm9yZU5vZGUobGlzdENo
aWxkKTsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb3MgPSBwb3NpdGlvbkluUGFyZW50QmVm
b3JlTm9kZShsaXN0Q2hpbGQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgaW5zZXJ0
Tm9kZUF0KGxpc3RFbGVtZW50LCBpbnNlcnRpb25Qb3MpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAgYi9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKaW5kZXgg
YTI3NTUyOS4uNWMwMWU1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFn
cmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgSW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgaWYgKGlzU3RhcnRPZlBh
cmFncmFwaCh2aXNpYmxlUG9zKSkgewogICAgICAgICBSZWZQdHI8RWxlbWVudD4gYnIgPSBjcmVh
dGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgICAgIGluc2VydE5vZGVBdChici5nZXQo
KSwgaW5zZXJ0aW9uUG9zaXRpb24pOwotICAgICAgICBpbnNlcnRpb25Qb3NpdGlvbiA9IHBvc2l0
aW9uQWZ0ZXJOb2RlKGJyLmdldCgpKTsKKyAgICAgICAgaW5zZXJ0aW9uUG9zaXRpb24gPSBwb3Np
dGlvbkluUGFyZW50QWZ0ZXJOb2RlKGJyLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAgLy8gTW92
ZSBkb3duc3RyZWFtLiBUeXBpbmcgc3R5bGUgY29kZSB3aWxsIHRha2UgY2FyZSBvZiBjYXJyeWlu
ZyBhbG9uZyB0aGUgCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1h
bmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRleCA4MTcw
MGE5Li5iY2RlOTVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1h
bmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKQEAgLTE1
NCw3ICsxNTQsNyBAQCB2b2lkIEluc2VydFRleHRDb21tYW5kOjppbnB1dChjb25zdCBTdHJpbmcm
IG9yaWdpbmFsVGV4dCwgYm9vbCBzZWxlY3RJbnNlcnRlZFRleAogICAgIAogICAgIC8vIEl0IGlz
IHBvc3NpYmxlIGZvciB0aGUgbm9kZSB0aGF0IGNvbnRhaW5zIHN0YXJ0UG9zaXRpb24gdG8gY29u
dGFpbiBvbmx5IHVucmVuZGVyZWQgd2hpdGVzcGFjZSwKICAgICAvLyBhbmQgc28gZGVsZXRlSW5z
aWduaWZpY2FudFRleHQgY291bGQgcmVtb3ZlIGl0LiAgU2F2ZSB0aGUgcG9zaXRpb24gYmVmb3Jl
IHRoZSBub2RlIGluIGNhc2UgdGhhdCBoYXBwZW5zLgotICAgIFBvc2l0aW9uIHBvc2l0aW9uQmVm
b3JlU3RhcnROb2RlKHBvc2l0aW9uQmVmb3JlTm9kZShzdGFydFBvc2l0aW9uLm5vZGUoKSkpOwor
ICAgIFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlU3RhcnROb2RlKHBvc2l0aW9uSW5QYXJlbnRCZWZv
cmVOb2RlKHN0YXJ0UG9zaXRpb24ubm9kZSgpKSk7CiAgICAgZGVsZXRlSW5zaWduaWZpY2FudFRl
eHQoc3RhcnRQb3NpdGlvbi51cHN0cmVhbSgpLCBzdGFydFBvc2l0aW9uLmRvd25zdHJlYW0oKSk7
CiAgICAgaWYgKCFzdGFydFBvc2l0aW9uLm5vZGUoKS0+aW5Eb2N1bWVudCgpKQogICAgICAgICBz
dGFydFBvc2l0aW9uID0gcG9zaXRpb25CZWZvcmVTdGFydE5vZGU7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAwZGRhNTkwLi5lODM5ODVjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBi
L1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTUyOSw3ICs1
MjksNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnBvc2l0aW9u
QXRFbmRPZkluc2VydGVkQ29udGVudCgpCiBWaXNpYmxlUG9zaXRpb24gUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OnBvc2l0aW9uQXRTdGFydE9mSW5zZXJ0ZWRDb250ZW50KCkKIHsKICAgICAvLyBS
ZXR1cm4gdGhlIGluc2VydGVkIGNvbnRlbnQncyBmaXJzdCBWaXNpYmxlUG9zaXRpb24uCi0gICAg
cmV0dXJuIFZpc2libGVQb3NpdGlvbihuZXh0Q2FuZGlkYXRlKHBvc2l0aW9uQmVmb3JlTm9kZSht
X2ZpcnN0Tm9kZUluc2VydGVkLmdldCgpKSkpOworICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
bmV4dENhbmRpZGF0ZShwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShtX2ZpcnN0Tm9kZUluc2Vy
dGVkLmdldCgpKSkpOwogfQogCiAvLyBSZW1vdmUgc3R5bGUgc3BhbnMgYmVmb3JlIGluc2VydGlv
biBpZiB0aGV5IGFyZSB1bm5lY2Vzc2FyeS4gIEl0J3MgZmFzdGVyIGJlY2F1c2Ugd2UnbGwgCkBA
IC03OTUsNyArNzk1LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgp
CiAgICAgICAgIE5vZGUqIGJyID0gZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKS5ub2RlKCk7IAog
ICAgICAgICBBU1NFUlQoYnItPmhhc1RhZ05hbWUoYnJUYWcpKTsgCiAgICAgICAgIC8vIEluc2Vy
dCBjb250ZW50IGJldHdlZW4gdGhlIHR3byBibG9ja3F1b3RlcywgYnV0IHJlbW92ZSB0aGUgYnIg
KHNpbmNlIGl0IHdhcyBqdXN0IGEgcGxhY2Vob2xkZXIpLiAKLSAgICAgICAgaW5zZXJ0aW9uUG9z
ID0gcG9zaXRpb25CZWZvcmVOb2RlKGJyKTsgCisgICAgICAgIGluc2VydGlvblBvcyA9IHBvc2l0
aW9uSW5QYXJlbnRCZWZvcmVOb2RlKGJyKTsKICAgICAgICAgcmVtb3ZlTm9kZShicik7CiAgICAg
fQogICAgIApAQCAtODE4LDkgKzgxOCw5IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkoKQogICAgICAgICBBU1NFUlQoc3RhcnRCbG9jayAhPSBjdXJyZW50Um9vdCk7CiAg
ICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlSW5zZXJ0aW9uUG9zKGluc2VydGlvblBvcyk7
CiAgICAgICAgIGlmIChpc0VuZE9mQmxvY2sodmlzaWJsZUluc2VydGlvblBvcykgJiYgIShpc1N0
YXJ0T2ZCbG9jayh2aXNpYmxlSW5zZXJ0aW9uUG9zKSAmJiBmcmFnbWVudC5oYXNJbnRlcmNoYW5n
ZU5ld2xpbmVBdEVuZCgpKSkKLSAgICAgICAgICAgIGluc2VydGlvblBvcyA9IHBvc2l0aW9uQWZ0
ZXJOb2RlKHN0YXJ0QmxvY2spOworICAgICAgICAgICAgaW5zZXJ0aW9uUG9zID0gcG9zaXRpb25J
blBhcmVudEFmdGVyTm9kZShzdGFydEJsb2NrKTsKICAgICAgICAgZWxzZSBpZiAoaXNTdGFydE9m
QmxvY2sodmlzaWJsZUluc2VydGlvblBvcykpCi0gICAgICAgICAgICBpbnNlcnRpb25Qb3MgPSBw
b3NpdGlvbkJlZm9yZU5vZGUoc3RhcnRCbG9jayk7CisgICAgICAgICAgICBpbnNlcnRpb25Qb3Mg
PSBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShzdGFydEJsb2NrKTsKICAgICB9CiAKICAgICAv
LyBQYXN0ZSBpbnRvIHJ1biBvZiB0YWJzIHNwbGl0cyB0aGUgdGFiIHNwYW4uCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAgYi9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVNlbGVjdGlvbi5jcHAKaW5kZXggZTNmOGIyZC4uOWVjZTNhMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCisrKyBiL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlU2VsZWN0aW9uLmNwcApAQCAtNTEyLDcgKzUxMiw3IEBAIHZvaWQgVmlzaWJsZVNl
bGVjdGlvbjo6YWRqdXN0U2VsZWN0aW9uVG9Bdm9pZENyb3NzaW5nRWRpdGluZ0JvdW5kYXJpZXMo
KQogICAgICAgICAgICAgd2hpbGUgKHAuaXNOb3ROdWxsKCkgJiYgIShsb3dlc3RFZGl0YWJsZUFu
Y2VzdG9yKHAubm9kZSgpKSA9PSBiYXNlRWRpdGFibGVBbmNlc3RvciAmJiAhaXNFZGl0YWJsZVBv
c2l0aW9uKHApKSkgewogICAgICAgICAgICAgICAgIE5vZGUqIHJvb3QgPSBlZGl0YWJsZVJvb3RG
b3JQb3NpdGlvbihwKTsKICAgICAgICAgICAgICAgICBzaGFkb3dBbmNlc3RvciA9IHJvb3QgPyBy
b290LT5zaGFkb3dBbmNlc3Rvck5vZGUoKSA6IDA7Ci0gICAgICAgICAgICAgICAgcCA9IGlzQXRv
bWljTm9kZShwLm5vZGUoKSkgPyBwb3NpdGlvbkJlZm9yZU5vZGUocC5ub2RlKCkpIDogcHJldmlv
dXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKHApOworICAgICAgICAgICAgICAgIHAgPSBpc0F0
b21pY05vZGUocC5ub2RlKCkpID8gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUocC5ub2RlKCkp
IDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKHApOwogICAgICAgICAgICAgICAg
IGlmIChwLmlzTnVsbCgpICYmIChzaGFkb3dBbmNlc3RvciAhPSByb290KSkKICAgICAgICAgICAg
ICAgICAgICAgcCA9IGxhc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZShzaGFkb3dBbmNlc3Rv
cik7CiAgICAgICAgICAgICB9CkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBWaXNpYmxlU2VsZWN0
aW9uOjphZGp1c3RTZWxlY3Rpb25Ub0F2b2lkQ3Jvc3NpbmdFZGl0aW5nQm91bmRhcmllcygpCiAg
ICAgICAgICAgICB3aGlsZSAocC5pc05vdE51bGwoKSAmJiAhKGxvd2VzdEVkaXRhYmxlQW5jZXN0
b3IocC5ub2RlKCkpID09IGJhc2VFZGl0YWJsZUFuY2VzdG9yICYmICFpc0VkaXRhYmxlUG9zaXRp
b24ocCkpKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogcm9vdCA9IGVkaXRhYmxlUm9vdEZvclBv
c2l0aW9uKHApOwogICAgICAgICAgICAgICAgIHNoYWRvd0FuY2VzdG9yID0gcm9vdCA/IHJvb3Qt
PnNoYWRvd0FuY2VzdG9yTm9kZSgpIDogMDsKLSAgICAgICAgICAgICAgICBwID0gaXNBdG9taWNO
b2RlKHAubm9kZSgpKSA/IHBvc2l0aW9uQWZ0ZXJOb2RlKHAubm9kZSgpKSA6IG5leHRWaXN1YWxs
eURpc3RpbmN0Q2FuZGlkYXRlKHApOworICAgICAgICAgICAgICAgIHAgPSBpc0F0b21pY05vZGUo
cC5ub2RlKCkpID8gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShwLm5vZGUoKSkgOiBuZXh0Vmlz
dWFsbHlEaXN0aW5jdENhbmRpZGF0ZShwKTsKICAgICAgICAgICAgICAgICBpZiAocC5pc051bGwo
KSAmJiAoc2hhZG93QW5jZXN0b3IgIT0gcm9vdCkpCiAgICAgICAgICAgICAgICAgICAgIHAgPSBQ
b3NpdGlvbihzaGFkb3dBbmNlc3RvciwgMCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0
aW5nLmNwcAppbmRleCAzYWM1OGZmLi4wZGRjYzRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRp
bmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAK
QEAgLTI2Niw3ICsyNjYsNyBAQCBWaXNpYmxlUG9zaXRpb24gZmlyc3RFZGl0YWJsZVBvc2l0aW9u
QWZ0ZXJQb3NpdGlvbkluUm9vdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpbwogICAgICAgICAgICAg
cCA9IGxhc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZShzaGFkb3dBbmNlc3Rvcik7CiAgICAg
CiAgICAgd2hpbGUgKHAubm9kZSgpICYmICFpc0VkaXRhYmxlUG9zaXRpb24ocCkgJiYgcC5ub2Rl
KCktPmlzRGVzY2VuZGFudE9mKGhpZ2hlc3RSb290KSkKLSAgICAgICAgcCA9IGlzQXRvbWljTm9k
ZShwLm5vZGUoKSkgPyBwb3NpdGlvbkFmdGVyTm9kZShwLm5vZGUoKSkgOiBuZXh0VmlzdWFsbHlE
aXN0aW5jdENhbmRpZGF0ZShwKTsKKyAgICAgICAgcCA9IGlzQXRvbWljTm9kZShwLm5vZGUoKSkg
PyBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKHAubm9kZSgpKSA6IG5leHRWaXN1YWxseURpc3Rp
bmN0Q2FuZGlkYXRlKHApOwogICAgIAogICAgIGlmIChwLm5vZGUoKSAmJiAhcC5ub2RlKCktPmlz
RGVzY2VuZGFudE9mKGhpZ2hlc3RSb290KSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bigpOwpAQCAtMjg3LDcgKzI4Nyw3IEBAIFZpc2libGVQb3NpdGlvbiBsYXN0RWRpdGFibGVQb3Np
dGlvbkJlZm9yZVBvc2l0aW9uSW5Sb290KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvCiAgICAgICAg
ICAgICBwID0gZmlyc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZShzaGFkb3dBbmNlc3Rvcik7
CiAgICAgCiAgICAgd2hpbGUgKHAubm9kZSgpICYmICFpc0VkaXRhYmxlUG9zaXRpb24ocCkgJiYg
cC5ub2RlKCktPmlzRGVzY2VuZGFudE9mKGhpZ2hlc3RSb290KSkKLSAgICAgICAgcCA9IGlzQXRv
bWljTm9kZShwLm5vZGUoKSkgPyBwb3NpdGlvbkJlZm9yZU5vZGUocC5ub2RlKCkpIDogcHJldmlv
dXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKHApOworICAgICAgICBwID0gaXNBdG9taWNOb2Rl
KHAubm9kZSgpKSA/IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKHAubm9kZSgpKSA6IHByZXZp
b3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShwKTsKICAgICAKICAgICBpZiAocC5ub2RlKCkg
JiYgIXAubm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihoaWdoZXN0Um9vdCkpCiAgICAgICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb24oKTsKQEAgLTMyNSw3ICszMjUsNyBAQCBQb3NpdGlvbiByYW5nZUNv
bXBsaWFudEVxdWl2YWxlbnQoY29uc3QgUG9zaXRpb24mIHBvcykKIAogICAgIGlmIChwb3MuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA8PSAwKSB7CiAgICAgICAgIGlmIChub2RlLT5wYXJlbnRO
b2RlKCkgJiYgKGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKSB8fCBpc1RhYmxlRWxlbWVudChu
b2RlKSkpCi0gICAgICAgICAgICByZXR1cm4gcG9zaXRpb25CZWZvcmVOb2RlKG5vZGUpOworICAg
ICAgICAgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpOwogICAgICAg
ICByZXR1cm4gUG9zaXRpb24obm9kZSwgMCk7CiAgICAgfQogCkBAIC0zMzUsNyArMzM1LDcgQEAg
UG9zaXRpb24gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGNvbnN0IFBvc2l0aW9uJiBwb3MpCiAg
ICAgaW50IG1heENvbXBsaWFudE9mZnNldCA9IG5vZGUtPmNoaWxkTm9kZUNvdW50KCk7CiAgICAg
aWYgKHBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4gbWF4Q29tcGxpYW50T2Zmc2V0KSB7
CiAgICAgICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gcG9z
aXRpb25BZnRlck5vZGUobm9kZSk7CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVu
dEFmdGVyTm9kZShub2RlKTsKIAogICAgICAgICAvLyB0aGVyZSBpcyBubyBvdGhlciBvcHRpb24g
YXQgdGhpcyBwb2ludCB0aGFuIHRvCiAgICAgICAgIC8vIHVzZSB0aGUgaGlnaGVzdCBhbGxvd2Vk
IHBvc2l0aW9uIGluIHRoZSBub2RlCkBAIC0zNDUsMTEgKzM0NSwxMSBAQCBQb3NpdGlvbiByYW5n
ZUNvbXBsaWFudEVxdWl2YWxlbnQoY29uc3QgUG9zaXRpb24mIHBvcykKICAgICAvLyBFZGl0aW5n
IHNob3VsZCBuZXZlciBnZW5lcmF0ZSBwb3NpdGlvbnMgbGlrZSB0aGlzLgogICAgIGlmICgocG9z
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPCBtYXhDb21wbGlhbnRPZmZzZXQpICYmIGVkaXRp
bmdJZ25vcmVzQ29udGVudChub2RlKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKSA/IHBvc2l0aW9uQmVmb3JlTm9kZShu
b2RlKSA6IFBvc2l0aW9uKG5vZGUsIDApOworICAgICAgICByZXR1cm4gbm9kZS0+cGFyZW50Tm9k
ZSgpID8gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobm9kZSkgOiBQb3NpdGlvbihub2RlLCAw
KTsKICAgICB9CiAgICAgCiAgICAgaWYgKHBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID09
IG1heENvbXBsaWFudE9mZnNldCAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG5vZGUpIHx8IGlz
VGFibGVFbGVtZW50KG5vZGUpKSkKLSAgICAgICAgcmV0dXJuIHBvc2l0aW9uQWZ0ZXJOb2RlKG5v
ZGUpOworICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShub2RlKTsKICAg
ICAKICAgICByZXR1cm4gUG9zaXRpb24ocG9zKTsKIH0KQEAgLTUwNSw3ICs1MDUsNyBAQCBQb3Np
dGlvbiBwb3NpdGlvbkJlZm9yZUNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudChjb25zdCBQb3NpdGlv
biYgcG9zLCBOb2RlKiogY29udAogICAgIE5vZGUqIG4gPSBmaXJzdEluU3BlY2lhbEVsZW1lbnQo
cG9zKTsKICAgICBpZiAoIW4pCiAgICAgICAgIHJldHVybiBwb3M7Ci0gICAgUG9zaXRpb24gcmVz
dWx0ID0gcG9zaXRpb25CZWZvcmVOb2RlKG4pOworICAgIFBvc2l0aW9uIHJlc3VsdCA9IHBvc2l0
aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG4pOwogICAgIGlmIChyZXN1bHQuaXNOdWxsKCkgfHwgcmVz
dWx0Lm5vZGUoKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpICE9IHBvcy5ub2RlKCktPnJvb3RFZGl0
YWJsZUVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIHBvczsKICAgICBpZiAoY29udGFpbmluZ1Nw
ZWNpYWxFbGVtZW50KQpAQCAtNTIzLDcgKzUyMyw3IEBAIFBvc2l0aW9uIHBvc2l0aW9uQWZ0ZXJD
b250YWluaW5nU3BlY2lhbEVsZW1lbnQoY29uc3QgUG9zaXRpb24mIHBvcywgTm9kZSAqKmNvbnRh
CiAgICAgTm9kZSogbiA9IGxhc3RJblNwZWNpYWxFbGVtZW50KHBvcyk7CiAgICAgaWYgKCFuKQog
ICAgICAgICByZXR1cm4gcG9zOwotICAgIFBvc2l0aW9uIHJlc3VsdCA9IHBvc2l0aW9uQWZ0ZXJO
b2RlKG4pOworICAgIFBvc2l0aW9uIHJlc3VsdCA9IHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUo
bik7CiAgICAgaWYgKHJlc3VsdC5pc051bGwoKSB8fCByZXN1bHQubm9kZSgpLT5yb290RWRpdGFi
bGVFbGVtZW50KCkgIT0gcG9zLm5vZGUoKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpKQogICAgICAg
ICByZXR1cm4gcG9zOwogICAgIGlmIChjb250YWluaW5nU3BlY2lhbEVsZW1lbnQpCkBAIC04MDcs
NyArODA3LDcgQEAgUG9zaXRpb24gcG9zaXRpb25CZWZvcmVUYWJTcGFuKGNvbnN0IFBvc2l0aW9u
JiBwb3MpCiAgICAgZWxzZSBpZiAoIWlzVGFiU3Bhbk5vZGUobm9kZSkpCiAgICAgICAgIHJldHVy
biBwb3M7CiAgICAgCi0gICAgcmV0dXJuIHBvc2l0aW9uQmVmb3JlTm9kZShub2RlKTsKKyAgICBy
ZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobm9kZSk7CiB9CiAKIFBhc3NSZWZQdHI8
RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBQYXNzUmVm
UHRyPE5vZGU+IHRhYlRleHROb2RlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30848</attachid>
            <date>2009-06-01 17:19:36 -0700</date>
            <delta_ts>2009-07-30 12:07:35 -0700</delta_ts>
            <desc>Add more position constructors</desc>
            <filename>Add-more-position-constructors.patch</filename>
            <type>text/plain</type>
            <size>6237</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NjgxMjQwNTJmMzhlMjg3ZjgxYjFmYjZjMTA1NzNhNTQwOTg2YzcwYgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NmMxMThlLi40NjFjNzQ5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMiw2ICsyLDM0IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAK
KyAgICAgICAgQWRkIG1vcmUgcG9zaXRpb24gY29uc3RydWN0b3JzCisgICAgICAgIHBvc2l0aW9u
QmVmb3JlTm9kZSwgcG9zaXRpb25BZnRlck5vZGUKKyAgICAgICAgZmlyc3RQb3NpdGlvbkluTm9k
ZSwgbGFzdFBvc2l0aW9uSW5Ob2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNTQ5NAorCisgICAgICAgIEkgYWxzbyBhZGRlZCBhIGxhc3RPZmZzZXRJ
bk5vZGUgYW5kIGRlcGxveWVkIGl0IHRvIGEgY291cGxlIHBsYWNlcy4KKworICAgICAgICBUaGVy
ZSBhcmUgbm8gY2FsbGVycyB0byB0aGVzZSBuZXcgY29uc3RydWN0b3JzIHlldCwgYnV0IHRob3Nl
CisgICAgICAgIHdpbGwgYmUgY29taW5nIGluIGZ1dHVyZSBwYXRjaGVzLgorCisgICAgICAgICog
ZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpjb21wdXRlT2Zm
c2V0SW5Db250YWluZXJOb2RlKToKKyAgICAgICAgKiBkb20vUG9zaXRpb25Db25zdHJ1Y3RvcnMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uQmVmb3JlTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpwb3NpdGlvbkFmdGVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpsYXN0T2Zmc2V0SW5O
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0UG9zaXRpb25Jbk5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6bGFzdFBvc2l0aW9uSW5Ob2RlKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpTaW1wbGlmaWVk
QmFja3dhcmRzVGV4dEl0ZXJhdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Omxhc3RPZmZzZXRGb3JFZGl0aW5nKToKKworMjAwOS0wNC0z
MCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKICAgICAgICAgUmVuYW1lIHBvc2l0aW9uQmVmb3JlTm9kZSB0byBw
b3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZQogICAgICAgICBhbmQgcG9zaXRpb25BZnRlck5vZGUg
dG8gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZQogICAgICAgICBpbiBwcmVwYXJhdGlvbiBmb3Ig
YWRkaW5nIGEgcG9zaXRpb25CZWZvcmVOb2RlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5jcHAgYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggMzA3ZTg4NC4uZGY1NTY0
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcApAQCAtMTM5LDEwICsxMzksNyBAQCBpbnQgUG9zaXRpb246OmNvbXB1dGVP
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKSBjb25zdAogCiAgICAgc3dpdGNoIChhbmNob3JUeXBlKCkp
IHsKICAgICBjYXNlIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjoKLSAgICB7Ci0gICAgICAgIGlu
dCBtYXhpbXVtVmFsaWRPZmZzZXQgPSBtX2FuY2hvck5vZGUtPm9mZnNldEluQ2hhcmFjdGVycygp
ID8gbV9hbmNob3JOb2RlLT5tYXhDaGFyYWN0ZXJPZmZzZXQoKSA6IG1fYW5jaG9yTm9kZS0+Y2hp
bGROb2RlQ291bnQoKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKG1heGltdW1WYWxpZE9mZnNl
dCwgbV9vZmZzZXQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGxhc3RPZmZzZXRJ
bk5vZGUobV9hbmNob3JOb2RlLmdldCgpKSwgbV9vZmZzZXQpOwogICAgIGNhc2UgUG9zaXRpb25J
c0JlZm9yZUFuY2hvcjoKICAgICAgICAgcmV0dXJuIG1fYW5jaG9yTm9kZS0+bm9kZUluZGV4KCk7
CiAgICAgY2FzZSBQb3NpdGlvbklzQWZ0ZXJBbmNob3I6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbkNyZWF0aW9uRnVuY3Rpb25zLmggYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbkNyZWF0
aW9uRnVuY3Rpb25zLmgKaW5kZXggZjdmOGJjNi4uZTdmNGVjNSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vUG9zaXRpb25DcmVhdGlvbkZ1bmN0aW9ucy5oCisrKyBiL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uQ3JlYXRpb25GdW5jdGlvbnMuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAvLyBUaGVzZSBhcmUgaW5saW5lIHRvIHByZXZlbnQgcmVmLWNodXJuIHdoZW4gcmV0dXJu
aW5nIGEgUG9zaXRpb24gb2JqZWN0LgogLy8gSWYgd2UgZXZlciBhZGQgYSBQYXNzUG9zaXRpb24g
d2UgY2FuIG1ha2UgdGhlc2Ugbm9uLWlubGluZS4KIAorLy8gcG9zaXRpb25JblBhcmVudEJlZm9y
ZU5vZGUgYW5kIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUgYXJlIE8obikgZHVlIHRvIG5vZGUt
Pm5vZGVJbmRleCgpCiBzdGF0aWMgaW5saW5lIFBvc2l0aW9uIHBvc2l0aW9uSW5QYXJlbnRCZWZv
cmVOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIEFT
U0VSVChub2RlLT5wYXJlbnROb2RlKCkpCkBAIC01MCw2ICs1MSwzNSBAQCBzdGF0aWMgaW5saW5l
IFBvc2l0aW9uIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoY29uc3QgTm9kZSogbm9kZSkKICAg
ICByZXR1cm4gUG9zaXRpb24obm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5ub2RlSW5kZXgoKSAr
IDEsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwogfQogCisvLyBwb3NpdGlv
bkJlZm9yZU5vZGUgYW5kIHBvc2l0aW9uQWZ0ZXJOb2RlIHJldHVybiBuZWlnaGJvci1hbmNob3Jl
ZCBwb3NpdGlvbnMsIGNvbnN0cnVjdGlvbiBpcyBPKDEpCitzdGF0aWMgaW5saW5lIFBvc2l0aW9u
IHBvc2l0aW9uQmVmb3JlTm9kZShOb2RlKiBhbmNob3JOb2RlKQoreworICAgIEFTU0VSVChhbmNo
b3JOb2RlKTsKKyAgICByZXR1cm4gUG9zaXRpb24oYW5jaG9yTm9kZSwgUG9zaXRpb246OlBvc2l0
aW9uSXNCZWZvcmVBbmNob3IpOworfQorCitzdGF0aWMgaW5saW5lIFBvc2l0aW9uIHBvc2l0aW9u
QWZ0ZXJOb2RlKE5vZGUqIGFuY2hvck5vZGUpCit7CisgICAgQVNTRVJUKGFuY2hvck5vZGUpOwor
ICAgIHJldHVybiBQb3NpdGlvbihhbmNob3JOb2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVy
QW5jaG9yKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgbGFzdE9mZnNldEluTm9kZShOb2RlKiBu
b2RlKQoreworICAgIHJldHVybiBub2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSA/IG5vZGUtPm1h
eENoYXJhY3Rlck9mZnNldCgpIDogbm9kZS0+Y2hpbGROb2RlQ291bnQoKTsKK30KKworLy8gZmly
c3RQb3NpdGlvbkluTm9kZSBhbmQgbGFzdFBvc2l0aW9uSW5Ob2RlIHJldHVybiBwYXJlbnQtYW5j
aG9yZWQgcG9zaXRpb25zLCBsYXN0UG9zaXRpb25Jbk5vZGUgY29uc3RydWN0aW9uIGlzIE8obikg
ZHVlIHRvIGNoaWxkTm9kZUNvdW50KCkKK3N0YXRpYyBpbmxpbmUgUG9zaXRpb24gZmlyc3RQb3Np
dGlvbkluTm9kZShOb2RlKiBhbmNob3JOb2RlKQoreworICAgIHJldHVybiBQb3NpdGlvbihhbmNo
b3JOb2RlLCAwLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKK30KKworc3Rh
dGljIGlubGluZSBQb3NpdGlvbiBsYXN0UG9zaXRpb25Jbk5vZGUoTm9kZSogYW5jaG9yTm9kZSkK
K3sKKyAgICByZXR1cm4gUG9zaXRpb24oYW5jaG9yTm9kZSwgbGFzdE9mZnNldEluTm9kZShhbmNo
b3JOb2RlKSwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7Cit9CisKIC8vIE5P
VEU6IGZpcnN0L2xhc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSByZXR1cm4gImVkaXRpbmcg
cG9zaXRpb25zIiAobGlrZSBbaW1nLCAwXSkKIC8vIGZvciBlbGVtZW50cyB3aGljaCBlZGl0aW5n
IGlnbm9yZXMuICBUaGUgcmVzdCBvZiB0aGUgZWRpdGluZyBjb2RlIHdpbGwgdHJlYXQgW2ltZywg
MF0KIC8vIGFzICJ0aGUgbGFzdCBwb3NpdGlvbiBiZWZvcmUgdGhlIGltZyIuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCA3ZWU2MzU1Li4wODRmNTg2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTExOTIsNiArMTE5Miw3IEBAIHZvaWQgQXBw
bHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duVGV4dERlY29yYXRpb25TdHlsZUF0Qm91bmRhcmllcyhj
b25zdCBQb3NpdGlvbiAmCiAgICAgcHVzaERvd25UZXh0RGVjb3JhdGlvblN0eWxlQXJvdW5kTm9k
ZShlbmQubm9kZSgpLCB0cnVlKTsKIH0KIAorLy8gRklYTUU6IFdoeSBkb2VzIHRoaXMgZXhpc3Q/
ICBDYWxsZXJzIHNob3VsZCBlaXRoZXIgdXNlIGxhc3RPZmZzZXRGb3JFZGl0aW5nIG9yIGxhc3RP
ZmZzZXRJbk5vZGUKIHN0YXRpYyBpbnQgbWF4UmFuZ2VPZmZzZXQoTm9kZSAqbikKIHsKICAgICBp
ZiAobi0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4
IGIzMTE4NTMuLjM3ZmY4Y2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0zMyw3ICsz
Myw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIK
ICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCi0jaW5jbHVkZSAiUG9zaXRpb24uaCIKKyNpbmNs
dWRlICJQb3NpdGlvbkNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVSb3cuaCIKQEAgLTgw
MSw3ICs4MDEsNyBAQCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpTaW1wbGlmaWVk
QmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlICpyKQogICAgIGlmICghZW5kTm9kZS0+
b2Zmc2V0SW5DaGFyYWN0ZXJzKCkpIHsKICAgICAgICAgaWYgKGVuZE9mZnNldCA+IDAgJiYgZW5k
T2Zmc2V0IDw9IHN0YXRpY19jYXN0PGludD4oZW5kTm9kZS0+Y2hpbGROb2RlQ291bnQoKSkpIHsK
ICAgICAgICAgICAgIGVuZE5vZGUgPSBlbmROb2RlLT5jaGlsZE5vZGUoZW5kT2Zmc2V0IC0gMSk7
Ci0gICAgICAgICAgICBlbmRPZmZzZXQgPSBlbmROb2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSA/
IGVuZE5vZGUtPm1heENoYXJhY3Rlck9mZnNldCgpIDogZW5kTm9kZS0+Y2hpbGROb2RlQ291bnQo
KTsKKyAgICAgICAgICAgIGVuZE9mZnNldCA9IGxhc3RPZmZzZXRJbk5vZGUoZW5kTm9kZSk7CiAg
ICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGlu
Zy5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IDBkZGNjNGEuLjY2
ODU4ZTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKKysrIGIv
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtMzcwLDEwICszNzAsMTAgQEAgaW50
IGxhc3RPZmZzZXRGb3JFZGl0aW5nKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybiAw
OwogICAgIGlmIChub2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSkKICAgICAgICAgcmV0dXJuIG5v
ZGUtPm1heENoYXJhY3Rlck9mZnNldCgpOwotICAgICAgICAKKwogICAgIGlmIChub2RlLT5oYXND
aGlsZE5vZGVzKCkpCiAgICAgICAgIHJldHVybiBub2RlLT5jaGlsZE5vZGVDb3VudCgpOwotICAg
IAorCiAgICAgLy8gTk9URTogVGhpcyBzaG91bGQgcHJlZW1wdCB0aGUgY2hpbGROb2RlQ291bnQg
Zm9yLCBlLmcuLCBzZWxlY3Qgbm9kZXMKICAgICBpZiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG5v
ZGUpKQogICAgICAgICByZXR1cm4gMTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33799</attachid>
            <date>2009-07-30 12:07:38 -0700</date>
            <delta_ts>2009-08-27 23:10:49 -0700</delta_ts>
            <desc>Add more position constructors</desc>
            <filename>bug-25494-20090730120738.patch</filename>
            <type>text/plain</type>
            <size>5458</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDA0NjE5OC4uZDFiN2IwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwzNCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIEFkZCBtb3JlIHBvc2l0aW9uIGNvbnN0cnVjdG9ycwor
ICAgICAgICBwb3NpdGlvbkJlZm9yZU5vZGUsIHBvc2l0aW9uQWZ0ZXJOb2RlCisgICAgICAgIGZp
cnN0UG9zaXRpb25Jbk5vZGUsIGxhc3RQb3NpdGlvbkluTm9kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0OTQKKworICAgICAgICBJIGFsc28gYWRk
ZWQgYSBsYXN0T2Zmc2V0SW5Ob2RlIGFuZCBkZXBsb3llZCBpdCB0byBhIGNvdXBsZSBwbGFjZXMu
CisKKyAgICAgICAgVGhlcmUgYXJlIG5vIGNhbGxlcnMgdG8gdGhlc2UgbmV3IGNvbnN0cnVjdG9y
cyB5ZXQsIGJ1dCB0aG9zZQorICAgICAgICB3aWxsIGJlIGNvbWluZyBpbiBmdXR1cmUgcGF0Y2hl
cy4KKworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3Np
dGlvbjo6Y29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSk6CisgICAgICAgICogZG9tL1Bvc2l0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpwb3NpdGlvbkJlZm9yZU5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6cG9zaXRpb25BZnRlck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6bGFzdE9mZnNl
dEluTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpmaXJzdFBvc2l0aW9uSW5Ob2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6Omxhc3RQb3NpdGlvbkluTm9kZSk6CisgICAgICAgICogZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6U2ltcGxp
ZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcik6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGlu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsYXN0T2Zmc2V0Rm9yRWRpdGluZyk6CisKKzIwMDkt
MDQtMzAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFJlbmFtZSBwb3NpdGlvbkJlZm9yZU5vZGUg
dG8gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUKICAgICAgICAgYW5kIHBvc2l0aW9uQWZ0ZXJO
b2RlIHRvIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUKICAgICAgICAgaW4gcHJlcGFyYXRpb24g
Zm9yIGFkZGluZyBhIHBvc2l0aW9uQmVmb3JlTm9kZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
UG9zaXRpb24uY3BwIGIvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IGMwMGFmMjkuLjA2
MGIyOGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTEzOCwxMCArMTM4LDcgQEAgaW50IFBvc2l0aW9uOjpjb21w
dXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkgY29uc3QKIAogICAgIHN3aXRjaCAoYW5jaG9yVHlw
ZSgpKSB7CiAgICAgY2FzZSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3I6Ci0gICAgewotICAgICAg
ICBpbnQgbWF4aW11bVZhbGlkT2Zmc2V0ID0gbV9hbmNob3JOb2RlLT5vZmZzZXRJbkNoYXJhY3Rl
cnMoKSA/IG1fYW5jaG9yTm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgOiBtX2FuY2hvck5vZGUt
PmNoaWxkTm9kZUNvdW50KCk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1pbihtYXhpbXVtVmFsaWRP
ZmZzZXQsIG1fb2Zmc2V0KTsKLSAgICB9CisgICAgICAgIHJldHVybiBzdGQ6Om1pbihsYXN0T2Zm
c2V0SW5Ob2RlKG1fYW5jaG9yTm9kZS5nZXQoKSksIG1fb2Zmc2V0KTsKICAgICBjYXNlIFBvc2l0
aW9uSXNCZWZvcmVBbmNob3I6CiAgICAgICAgIHJldHVybiBtX2FuY2hvck5vZGUtPm5vZGVJbmRl
eCgpOwogICAgIGNhc2UgUG9zaXRpb25Jc0FmdGVyQW5jaG9yOgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vUG9zaXRpb24uaCBiL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXggNDQ3OGY5Yi4u
YzA4ODcyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5oCkBAIC0yMDgsNiArMjA4LDM1IEBAIGlubGluZSBQb3NpdGlvbiBwb3Np
dGlvbkluUGFyZW50QWZ0ZXJOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIFBvc2l0
aW9uKG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+bm9kZUluZGV4KCkgKyAxLCBQb3NpdGlvbjo6
UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKIH0KIAorLy8gcG9zaXRpb25CZWZvcmVOb2RlIGFu
ZCBwb3NpdGlvbkFmdGVyTm9kZSByZXR1cm4gbmVpZ2hib3ItYW5jaG9yZWQgcG9zaXRpb25zLCBj
b25zdHJ1Y3Rpb24gaXMgTygxKQoraW5saW5lIFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTm9kZShO
b2RlKiBhbmNob3JOb2RlKQoreworICAgIEFTU0VSVChhbmNob3JOb2RlKTsKKyAgICByZXR1cm4g
UG9zaXRpb24oYW5jaG9yTm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpOwor
fQorCitpbmxpbmUgUG9zaXRpb24gcG9zaXRpb25BZnRlck5vZGUoTm9kZSogYW5jaG9yTm9kZSkK
K3sKKyAgICBBU1NFUlQoYW5jaG9yTm9kZSk7CisgICAgcmV0dXJuIFBvc2l0aW9uKGFuY2hvck5v
ZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpOworfQorCitpbmxpbmUgaW50IGxh
c3RPZmZzZXRJbk5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZS0+b2Zmc2V0SW5D
aGFyYWN0ZXJzKCkgPyBub2RlLT5tYXhDaGFyYWN0ZXJPZmZzZXQoKSA6IG5vZGUtPmNoaWxkTm9k
ZUNvdW50KCk7Cit9CisKKy8vIGZpcnN0UG9zaXRpb25Jbk5vZGUgYW5kIGxhc3RQb3NpdGlvbklu
Tm9kZSByZXR1cm4gcGFyZW50LWFuY2hvcmVkIHBvc2l0aW9ucywgbGFzdFBvc2l0aW9uSW5Ob2Rl
IGNvbnN0cnVjdGlvbiBpcyBPKG4pIGR1ZSB0byBjaGlsZE5vZGVDb3VudCgpCitpbmxpbmUgUG9z
aXRpb24gZmlyc3RQb3NpdGlvbkluTm9kZShOb2RlKiBhbmNob3JOb2RlKQoreworICAgIHJldHVy
biBQb3NpdGlvbihhbmNob3JOb2RlLCAwLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5j
aG9yKTsKK30KKworaW5saW5lIFBvc2l0aW9uIGxhc3RQb3NpdGlvbkluTm9kZShOb2RlKiBhbmNo
b3JOb2RlKQoreworICAgIHJldHVybiBQb3NpdGlvbihhbmNob3JOb2RlLCBsYXN0T2Zmc2V0SW5O
b2RlKGFuY2hvck5vZGUpLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9B
cHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggZTJmMTM3Yy4uZTQyY2U2YSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC0xMjM4LDYgKzEyMzgsNyBAQCB2b2lkIEFwcGx5
U3R5bGVDb21tYW5kOjpwdXNoRG93blRleHREZWNvcmF0aW9uU3R5bGVBdEJvdW5kYXJpZXMoY29u
c3QgUG9zaXRpb24gJgogICAgIHB1c2hEb3duVGV4dERlY29yYXRpb25TdHlsZUFyb3VuZE5vZGUo
ZW5kLm5vZGUoKSwgdHJ1ZSk7CiB9CiAKKy8vIEZJWE1FOiBXaHkgZG9lcyB0aGlzIGV4aXN0PyAg
Q2FsbGVycyBzaG91bGQgZWl0aGVyIHVzZSBsYXN0T2Zmc2V0Rm9yRWRpdGluZyBvciBsYXN0T2Zm
c2V0SW5Ob2RlCiBzdGF0aWMgaW50IG1heFJhbmdlT2Zmc2V0KE5vZGUgKm4pCiB7CiAgICAgaWYg
KG4tPm9mZnNldEluQ2hhcmFjdGVycygpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBm
ODJhOTcyLi5lODExZmM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMzMsNyArMzMs
NiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAj
aW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgotI2luY2x1ZGUgIlBvc2l0aW9uLmgiCiAjaW5jbHVk
ZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5k
ZXJUYWJsZVJvdy5oIgpAQCAtOTQxLDcgKzk0MCw3IEBAIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0
SXRlcmF0b3I6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIp
CiAgICAgaWYgKCFlbmROb2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSkgewogICAgICAgICBpZiAo
ZW5kT2Zmc2V0ID4gMCAmJiBlbmRPZmZzZXQgPD0gc3RhdGljX2Nhc3Q8aW50PihlbmROb2RlLT5j
aGlsZE5vZGVDb3VudCgpKSkgewogICAgICAgICAgICAgZW5kTm9kZSA9IGVuZE5vZGUtPmNoaWxk
Tm9kZShlbmRPZmZzZXQgLSAxKTsKLSAgICAgICAgICAgIGVuZE9mZnNldCA9IGVuZE5vZGUtPm9m
ZnNldEluQ2hhcmFjdGVycygpID8gZW5kTm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgOiBlbmRO
b2RlLT5jaGlsZE5vZGVDb3VudCgpOworICAgICAgICAgICAgZW5kT2Zmc2V0ID0gbGFzdE9mZnNl
dEluTm9kZShlbmROb2RlKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5j
cHAKaW5kZXggOGM1Yjc4NS4uY2MzY2UyMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC0z
ODksMTAgKzM4OSwxMCBAQCBpbnQgbGFzdE9mZnNldEZvckVkaXRpbmcoY29uc3QgTm9kZSogbm9k
ZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKG5vZGUtPm9mZnNldEluQ2hhcmFjdGVycygp
KQogICAgICAgICByZXR1cm4gbm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCk7Ci0gICAgICAgIAor
CiAgICAgaWYgKG5vZGUtPmhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgcmV0dXJuIG5vZGUtPmNo
aWxkTm9kZUNvdW50KCk7Ci0gICAgCisKICAgICAvLyBOT1RFOiBUaGlzIHNob3VsZCBwcmVlbXB0
IHRoZSBjaGlsZE5vZGVDb3VudCBmb3IsIGUuZy4sIHNlbGVjdCBub2RlcwogICAgIGlmIChlZGl0
aW5nSWdub3Jlc0NvbnRlbnQobm9kZSkpCiAgICAgICAgIHJldHVybiAxOw==
</data>
<flag name="review"
          id="18000"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33800</attachid>
            <date>2009-07-30 12:07:47 -0700</date>
            <delta_ts>2009-08-27 23:13:03 -0700</delta_ts>
            <desc>Rename positionBeforeNode to positionInParentBeforeNode</desc>
            <filename>bug-25494-20090730120746.patch</filename>
            <type>text/plain</type>
            <size>26597</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzAyYjdiYS4uMDA0NjE5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw1NyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIFJlbmFtZSBwb3NpdGlvbkJlZm9yZU5vZGUgdG8gcG9z
aXRpb25JblBhcmVudEJlZm9yZU5vZGUKKyAgICAgICAgYW5kIHBvc2l0aW9uQWZ0ZXJOb2RlIHRv
IHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUKKyAgICAgICAgaW4gcHJlcGFyYXRpb24gZm9yIGFk
ZGluZyBhIHBvc2l0aW9uQmVmb3JlTm9kZQorICAgICAgICB3aGljaCByZXR1cm5zIGEgbmVpZ2hi
b3ItYW5jaG9yZWQgcG9zaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNTQ5NAorCisgICAgICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcywgdGh1
cyBubyB0ZXN0cy4KKworICAgICAgICAqIGRvbS9Qb3NpdGlvbkNvbnN0cnVjdG9ycy5oOgorICAg
ICAgICAoV2ViQ29yZTo6cG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6cG9zaXRpb25JblBhcmVudEFmdGVyTm9kZSk6CisgICAgICAgICogZG9tL1Bvc2l0aW9u
SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25JdGVyYXRvcjo6b3BlcmF0
b3IgUG9zaXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGUpOgor
ICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnBvc2l0aW9uT3V0c2lkZVRhYlNwYW4pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmJyZWFrT3V0T2ZFbXB0eU1haWxC
bG9ja3F1b3RlZFBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29t
bWFuZDo6cG9zaXRpb25Bdm9pZGluZ1NwZWNpYWxFbGVtZW50Qm91bmRhcnkpOgorICAgICAgICAq
IGVkaXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRl
TGlua0NvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjpk
ZWxldGVUYXJnZXQpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjppbml0aWFsaXpl
U3RhcnRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUG9zaXRpb25Gb3JOb2RlUmVtb3Zh
bCk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAq
IGVkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0
TGlzdENvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3JhcGhT
ZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5kOjppbnB1dCk6
CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cG9zaXRpb25BdFN0YXJ0T2ZJbnNl
cnRlZENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjphZGp1c3RTZWxlY3Rpb25Ub0F2b2lkQ3Jv
c3NpbmdFZGl0aW5nQm91bmRhcmllcyk6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpmaXJzdEVkaXRhYmxlUG9zaXRpb25BZnRlclBvc2l0aW9u
SW5Sb290KToKKyAgICAgICAgKFdlYkNvcmU6Omxhc3RFZGl0YWJsZVBvc2l0aW9uQmVmb3JlUG9z
aXRpb25JblJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6cmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uQmVmb3JlQ29udGFpbmluZ1NwZWNpYWxFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uQWZ0ZXJDb250YWluaW5nU3BlY2lhbEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cG9zaXRpb25CZWZvcmVUYWJTcGFuKToKKworMjAw
OS0wNC0zMCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgUmUtb3JnYW5pemUgcG9zaXRpb24gY3Jl
YXRpb24gZnVuY3Rpb25zIGluIHByZXBhcmF0aW9uIGZvciBhZGRpbmcgbW9yZQogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0OTQKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXgg
ZWQ5MTJiOS4uNDQ3OGY5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysg
Yi9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCkBAIC0xOTMsNyArMTkzLDcgQEAgaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9zaXRpb24mIGIpCiAvLyBUaGVz
ZSBhcmUgaW5saW5lIHRvIHByZXZlbnQgcmVmLWNodXJuIHdoZW4gcmV0dXJuaW5nIGEgUG9zaXRp
b24gb2JqZWN0LgogLy8gSWYgd2UgZXZlciBhZGQgYSBQYXNzUG9zaXRpb24gd2UgY2FuIG1ha2Ug
dGhlc2Ugbm9uLWlubGluZS4KIAotaW5saW5lIFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTm9kZShj
b25zdCBOb2RlKiBub2RlKQoraW5saW5lIFBvc2l0aW9uIHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVO
b2RlKGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIEFTU0VS
VChub2RlLT5wYXJlbnROb2RlKCkpCiAgICAgLy8gQXQgbGVhc3Qgb25lIGNhbGxlciBjdXJyZW50
bHkgaGl0cyB0aGlzIEFTU0VSVCB0aG91Z2gsIHdoaWNoIGluZGljYXRlcwpAQCAtMjAyLDcgKzIw
Miw3IEBAIGlubGluZSBQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZU5vZGUoY29uc3QgTm9kZSogbm9k
ZSkKICAgICByZXR1cm4gUG9zaXRpb24obm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5ub2RlSW5k
ZXgoKSwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CiB9CiAKLWlubGluZSBQ
b3NpdGlvbiBwb3NpdGlvbkFmdGVyTm9kZShjb25zdCBOb2RlKiBub2RlKQoraW5saW5lIFBvc2l0
aW9uIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICBB
U1NFUlQobm9kZS0+cGFyZW50Tm9kZSgpKTsKICAgICByZXR1cm4gUG9zaXRpb24obm9kZS0+cGFy
ZW50Tm9kZSgpLCBub2RlLT5ub2RlSW5kZXgoKSArIDEsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zm
c2V0SW5BbmNob3IpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vUG9zaXRpb25DcmVhdGlvbkZ1
bmN0aW9ucy5oIGIvV2ViQ29yZS9kb20vUG9zaXRpb25DcmVhdGlvbkZ1bmN0aW9ucy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwIGIvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRv
ci5jcHAKaW5kZXggYTAyOWI1ZS4uOGQ4ODFiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUG9z
aXRpb25JdGVyYXRvci5jcHAKKysrIGIvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAgUG9zaXRpb25JdGVyYXRvcjo6b3BlcmF0b3IgUG9zaXRpb24oKSBj
b25zdAogewogICAgIGlmIChtX25vZGVBZnRlclBvc2l0aW9uSW5BbmNob3IpIHsKICAgICAgICAg
QVNTRVJUKG1fbm9kZUFmdGVyUG9zaXRpb25JbkFuY2hvci0+cGFyZW50Tm9kZSgpID09IG1fYW5j
aG9yTm9kZSk7Ci0gICAgICAgIHJldHVybiBwb3NpdGlvbkJlZm9yZU5vZGUobV9ub2RlQWZ0ZXJQ
b3NpdGlvbkluQW5jaG9yKTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVO
b2RlKG1fbm9kZUFmdGVyUG9zaXRpb25JbkFuY2hvcik7CiAgICAgfQogICAgIGlmIChtX2FuY2hv
ck5vZGUtPmhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgcmV0dXJuIGxhc3REZWVwRWRpdGluZ1Bv
c2l0aW9uRm9yTm9kZShtX2FuY2hvck5vZGUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHAKaW5kZXggNzM4YTVjMy4uZTJmMTM3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCkBAIC03NzMsOSArNzczLDkgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBw
bHlJbmxpbmVTdHlsZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiAqc3R5bGUpCiAgICAgaWYg
KHVuaWNvZGVCaWRpKSB7CiAgICAgICAgIC8vIEF2b2lkIHJlbW92aW5nIHRoZSBkaXIgYXR0cmli
dXRlIGFuZCB0aGUgdW5pY29kZS1iaWRpIGFuZCBkaXJlY3Rpb24gcHJvcGVydGllcyBmcm9tIHRo
ZSB1bnNwbGl0IGFuY2VzdG9ycy4KICAgICAgICAgaWYgKHN0YXJ0VW5zcGxpdEFuY2VzdG9yICYm
IG5vZGVGdWxseVNlbGVjdGVkKHN0YXJ0VW5zcGxpdEFuY2VzdG9yLCByZW1vdmVTdGFydCwgZW5k
KSkKLSAgICAgICAgICAgIGVtYmVkZGluZ1JlbW92ZVN0YXJ0ID0gcG9zaXRpb25BZnRlck5vZGUo
c3RhcnRVbnNwbGl0QW5jZXN0b3IpOworICAgICAgICAgICAgZW1iZWRkaW5nUmVtb3ZlU3RhcnQg
PSBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKHN0YXJ0VW5zcGxpdEFuY2VzdG9yKTsKICAgICAg
ICAgaWYgKGVuZFVuc3BsaXRBbmNlc3RvciAmJiBub2RlRnVsbHlTZWxlY3RlZChlbmRVbnNwbGl0
QW5jZXN0b3IsIHJlbW92ZVN0YXJ0LCBlbmQpKQotICAgICAgICAgICAgZW1iZWRkaW5nUmVtb3Zl
RW5kID0gcG9zaXRpb25CZWZvcmVOb2RlKGVuZFVuc3BsaXRBbmNlc3RvcikuZG93bnN0cmVhbSgp
OworICAgICAgICAgICAgZW1iZWRkaW5nUmVtb3ZlRW5kID0gcG9zaXRpb25JblBhcmVudEJlZm9y
ZU5vZGUoZW5kVW5zcGxpdEFuY2VzdG9yKS5kb3duc3RyZWFtKCk7CiAgICAgfQogCiAgICAgaWYg
KGVtYmVkZGluZ1JlbW92ZVN0YXJ0ICE9IHJlbW92ZVN0YXJ0IHx8IGVtYmVkZGluZ1JlbW92ZUVu
ZCAhPSBlbmQpIHsKQEAgLTgyNSw3ICs4MjUsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjph
cHBseUlubGluZVN0eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uICpzdHlsZSkKICAgICAg
ICAgICAgICAgICBpZiAoYW5jZXN0b3JVbmljb2RlQmlkaSkgewogICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoYW5jZXN0b3JVbmljb2RlQmlkaS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oYW5jZXN0
b3JVbmljb2RlQmlkaS5nZXQoKSktPmdldElkZW50KCkgPT0gQ1NTVmFsdWVFbWJlZCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZW1iZWRkaW5nQXBwbHlTdGFydCA9IHBvc2l0aW9uQWZ0ZXJO
b2RlKG4pOworICAgICAgICAgICAgICAgICAgICAgICAgZW1iZWRkaW5nQXBwbHlTdGFydCA9IHBv
c2l0aW9uSW5QYXJlbnRBZnRlck5vZGUobik7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTgzOSw3ICs4
MzksNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlKENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uICpzdHlsZSkKICAgICAgICAgICAgICAgICBpZiAoYW5jZXN0b3JV
bmljb2RlQmlkaSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYW5jZXN0b3JVbmljb2Rl
QmlkaS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oYW5jZXN0b3JVbmljb2RlQmlkaS5nZXQoKSktPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVFbWJlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZW1i
ZWRkaW5nQXBwbHlFbmQgPSBwb3NpdGlvbkJlZm9yZU5vZGUobik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbWJlZGRpbmdBcHBseUVuZCA9IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG4p
OwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cAppbmRleCA5NzM3ZTkyLi44Y2YwNjU3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5jcHAKQEAgLTM0MywxMyArMzQzLDEzIEBAIFBvc2l0aW9uIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjpwb3NpdGlvbk91dHNpZGVUYWJTcGFuKGNvbnN0IFBvc2l0aW9uJiBwb3MpCiAgICAg
Tm9kZSogdGFiU3BhbiA9IHRhYlNwYW5Ob2RlKHBvcy5ub2RlKCkpOwogICAgIAogICAgIGlmIChw
b3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA8PSBjYXJldE1pbk9mZnNldChwb3Mubm9kZSgp
KSkKLSAgICAgICAgcmV0dXJuIHBvc2l0aW9uQmVmb3JlTm9kZSh0YWJTcGFuKTsKKyAgICAgICAg
cmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKHRhYlNwYW4pOwogICAgICAgICAKICAg
ICBpZiAocG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPj0gY2FyZXRNYXhPZmZzZXQocG9z
Lm5vZGUoKSkpCi0gICAgICAgIHJldHVybiBwb3NpdGlvbkFmdGVyTm9kZSh0YWJTcGFuKTsKKyAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUodGFiU3Bhbik7CiAKICAgICBz
cGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnQoc3RhdGljX2Nhc3Q8VGV4dCAqPihwb3Mubm9k
ZSgpKSwgcG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwotICAgIHJldHVybiBwb3NpdGlv
bkJlZm9yZU5vZGUodGFiU3Bhbik7CisgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVO
b2RlKHRhYlNwYW4pOwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnROb2Rl
QXRUYWJTcGFuUG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBjb25zdCBQb3NpdGlvbiYg
cG9zKQpAQCAtOTYwLDcgKzk2MCw3IEBAIGJvb2wgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmJyZWFr
T3V0T2ZFbXB0eU1haWxCbG9ja3F1b3RlZFBhcmFncmFwaCgpCiAgICAgQVNTRVJUKGNhcmV0UG9z
Lm5vZGUoKS0+aGFzVGFnTmFtZShiclRhZykgfHwgY2FyZXRQb3Mubm9kZSgpLT5pc1RleHROb2Rl
KCkgJiYgY2FyZXRQb3Mubm9kZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xp
bmUoKSk7CiAgICAgCiAgICAgaWYgKGNhcmV0UG9zLm5vZGUoKS0+aGFzVGFnTmFtZShiclRhZykp
IHsKLSAgICAgICAgUG9zaXRpb24gYmVmb3JlQlIocG9zaXRpb25CZWZvcmVOb2RlKGNhcmV0UG9z
Lm5vZGUoKSkpOworICAgICAgICBQb3NpdGlvbiBiZWZvcmVCUihwb3NpdGlvbkluUGFyZW50QmVm
b3JlTm9kZShjYXJldFBvcy5ub2RlKCkpKTsKICAgICAgICAgcmVtb3ZlTm9kZShjYXJldFBvcy5u
b2RlKCkpOwogICAgICAgICBwcnVuZShiZWZvcmVCUi5ub2RlKCkpOwogICAgIH0gZWxzZSB7CkBA
IC0xMDEzLDcgKzEwMTMsNyBAQCBQb3NpdGlvbiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cG9zaXRp
b25Bdm9pZGluZ1NwZWNpYWxFbGVtZW50Qm91bmRhcnkoY29uc3QgUG9zaQogICAgICAgICAgICAg
aWYgKGxpbmVCcmVha0V4aXN0c0F0VmlzaWJsZVBvc2l0aW9uKHZpc2libGVQb3MpICYmIGRvd25z
dHJlYW0ubm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihlbmNsb3NpbmdBbmNob3IpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBvcmlnaW5hbDsKICAgICAgICAgICAgIAotICAgICAgICAgICAgcmVzdWx0
ID0gcG9zaXRpb25BZnRlck5vZGUoZW5jbG9zaW5nQW5jaG9yKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoZW5jbG9zaW5nQW5jaG9yKTsKICAgICAgICAg
fQogICAgICAgICAvLyBJZiB2aXN1YWxseSBqdXN0IGJlZm9yZSBhbiBhbmNob3IsIGluc2VydCAq
b3V0c2lkZSogdGhlIGFuY2hvciB1bmxlc3MgaXQncyB0aGUgZmlyc3QKICAgICAgICAgLy8gVmlz
aWJsZVBvc2l0aW9uIGluIGEgcGFyYWdyYXBoLCB0byBtYXRjaCBOU1RleHRWaWV3LgpAQCAtMTAy
Nyw3ICsxMDI3LDcgQEAgUG9zaXRpb24gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnBvc2l0aW9uQXZv
aWRpbmdTcGVjaWFsRWxlbWVudEJvdW5kYXJ5KGNvbnN0IFBvc2kKICAgICAgICAgICAgIGlmICgh
ZW5jbG9zaW5nQW5jaG9yKQogICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbDsKIAotICAg
ICAgICAgICAgcmVzdWx0ID0gcG9zaXRpb25CZWZvcmVOb2RlKGVuY2xvc2luZ0FuY2hvcik7Cisg
ICAgICAgICAgICByZXN1bHQgPSBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShlbmNsb3NpbmdB
bmNob3IpOwogICAgICAgICB9CiAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvQ3JlYXRlTGlu
a0NvbW1hbmQuY3BwCmluZGV4IDI2M2ZlYWIuLjg4MWNiNjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0NyZWF0
ZUxpbmtDb21tYW5kLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIENyZWF0ZUxpbmtDb21tYW5k
Ojpkb0FwcGx5KCkKICAgICAgICAgaW5zZXJ0Tm9kZUF0KGFuY2hvckVsZW1lbnQuZ2V0KCksIGVu
ZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpOwogICAgICAgICBSZWZQdHI8VGV4dD4gdGV4dE5vZGUg
PSBuZXcgVGV4dChkb2N1bWVudCgpLCBtX3VybCk7CiAgICAgICAgIGFwcGVuZE5vZGUodGV4dE5v
ZGUuZ2V0KCksIGFuY2hvckVsZW1lbnQuZ2V0KCkpOwotICAgICAgICBzZXRFbmRpbmdTZWxlY3Rp
b24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5nZXQo
KSksIHBvc2l0aW9uQWZ0ZXJOb2RlKGFuY2hvckVsZW1lbnQuZ2V0KCkpLCBET1dOU1RSRUFNKSk7
CisgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0aW9uSW5Q
YXJlbnRCZWZvcmVOb2RlKGFuY2hvckVsZW1lbnQuZ2V0KCkpLCBwb3NpdGlvbkluUGFyZW50QWZ0
ZXJOb2RlKGFuY2hvckVsZW1lbnQuZ2V0KCkpLCBET1dOU1RSRUFNKSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgYi9X
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKaW5kZXggNzI1YzAxZC4u
MjQ5OWZlYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApA
QCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6ZGVsZXRlVGFy
Z2V0KCkKICAgICAvLyBCZWNhdXNlIHRoZSBkZWxldGlvbiBVSSBvbmx5IGFwcGVhcnMgd2hlbiB0
aGUgc2VsZWN0aW9uIGlzIGVudGlyZWx5CiAgICAgLy8gd2l0aGluIHRoZSB0YXJnZXQsIHdlIHVu
Y29uZGl0aW9uYWxseSB1cGRhdGUgdGhlIHNlbGVjdGlvbiB0byBiZQogICAgIC8vIGEgY2FyZXQg
d2hlcmUgdGhlIHRhcmdldCBoYWQgYmVlbi4KLSAgICBQb3NpdGlvbiBwb3MgPSBwb3NpdGlvbkJl
Zm9yZU5vZGUoZWxlbWVudC5nZXQoKSk7CisgICAgUG9zaXRpb24gcG9zID0gcG9zaXRpb25JblBh
cmVudEJlZm9yZU5vZGUoZWxlbWVudC5nZXQoKSk7CiAgICAgYXBwbHlDb21tYW5kKFJlbW92ZU5v
ZGVDb21tYW5kOjpjcmVhdGUoZWxlbWVudC5yZWxlYXNlKCkpKTsKICAgICBtX2ZyYW1lLT5zZWxl
Y3Rpb24oKS0+c2V0U2VsZWN0aW9uKFZpc2libGVQb3NpdGlvbihwb3MpKTsKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBkM2FjMzQxLi42YTkwNzk4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
KysrIGIvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0xMzYs
MTYgKzEzNiwxNSBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmluaXRpYWxpemVTdGFy
dEVuZChQb3NpdGlvbiYgc3RhcnQsIFBvc2l0aW9uJiBlbmQpCiAgICAgICAgICAgICAKICAgICAg
ICAgaWYgKFZpc2libGVQb3NpdGlvbihzdGFydCkgIT0gbV9zZWxlY3Rpb25Ub0RlbGV0ZS52aXNp
YmxlU3RhcnQoKSB8fCBWaXNpYmxlUG9zaXRpb24oZW5kKSAhPSBtX3NlbGVjdGlvblRvRGVsZXRl
LnZpc2libGVFbmQoKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAgLy8g
SWYgd2UncmUgZ29pbmcgdG8gZXhwYW5kIHRvIGluY2x1ZGUgdGhlIHN0YXJ0U3BlY2lhbENvbnRh
aW5lciwgaXQgbXVzdCBiZSBmdWxseSBzZWxlY3RlZC4KIAotICAgICAgICBpZiAoc3RhcnRTcGVj
aWFsQ29udGFpbmVyICYmICFlbmRTcGVjaWFsQ29udGFpbmVyICYmIGNvbXBhcmVQb3NpdGlvbnMo
cG9zaXRpb25BZnRlck5vZGUoc3RhcnRTcGVjaWFsQ29udGFpbmVyKSwgZW5kKSA+IC0xKQorICAg
ICAgICAvLyBJZiB3ZSdyZSBnb2luZyB0byBleHBhbmQgdG8gaW5jbHVkZSB0aGUgc3RhcnRTcGVj
aWFsQ29udGFpbmVyLCBpdCBtdXN0IGJlIGZ1bGx5IHNlbGVjdGVkLgorICAgICAgICBpZiAoc3Rh
cnRTcGVjaWFsQ29udGFpbmVyICYmICFlbmRTcGVjaWFsQ29udGFpbmVyICYmIGNvbXBhcmVQb3Np
dGlvbnMocG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShzdGFydFNwZWNpYWxDb250YWluZXIpLCBl
bmQpID4gLTEpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvLyBJZiB3ZSdyZSBnb2lu
ZyB0byBleHBhbmQgdG8gaW5jbHVkZSB0aGUgZW5kU3BlY2lhbENvbnRhaW5lciwgaXQgbXVzdCBi
ZSBmdWxseSBzZWxlY3RlZC4KLSAgICAgICAgaWYgKGVuZFNwZWNpYWxDb250YWluZXIgJiYgIXN0
YXJ0U3BlY2lhbENvbnRhaW5lciAmJiBjb21wYXJlUG9zaXRpb25zKHN0YXJ0LCBwb3NpdGlvbkJl
Zm9yZU5vZGUoZW5kU3BlY2lhbENvbnRhaW5lcikpID4gLTEpCisgICAgICAgIGlmIChlbmRTcGVj
aWFsQ29udGFpbmVyICYmICFzdGFydFNwZWNpYWxDb250YWluZXIgJiYgY29tcGFyZVBvc2l0aW9u
cyhzdGFydCwgcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoZW5kU3BlY2lhbENvbnRhaW5lcikp
ID4gLTEpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgCisKICAgICAgICAgaWYgKHN0YXJ0
U3BlY2lhbENvbnRhaW5lciAmJiBzdGFydFNwZWNpYWxDb250YWluZXItPmlzRGVzY2VuZGFudE9m
KGVuZFNwZWNpYWxDb250YWluZXIpKQogICAgICAgICAgICAgLy8gRG9uJ3QgYWRqdXN0IHRoZSBl
bmQgeWV0LCBpdCBpcyB0aGUgZW5kIG9mIGEgc3BlY2lhbCBlbGVtZW50IHRoYXQgY29udGFpbnMg
dGhlIHN0YXJ0CiAgICAgICAgICAgICAvLyBzcGVjaWFsIGVsZW1lbnQgKHdoaWNoIG1heSBvciBt
YXkgbm90IGJlIGZ1bGx5IHNlbGVjdGVkKS4KQEAgLTMyMSw3ICszMjAsNyBAQCBzdGF0aWMgdm9p
ZCB1cGRhdGVQb3NpdGlvbkZvck5vZGVSZW1vdmFsKE5vZGUqIG5vZGUsIFBvc2l0aW9uJiBwb3Np
dGlvbikKICAgICBpZiAobm9kZS0+cGFyZW50KCkgPT0gcG9zaXRpb24ubm9kZSgpICYmIG5vZGUt
Pm5vZGVJbmRleCgpIDwgKHVuc2lnbmVkKXBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0
KCkpCiAgICAgICAgIHBvc2l0aW9uID0gUG9zaXRpb24ocG9zaXRpb24ubm9kZSgpLCBwb3NpdGlv
bi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIC0gMSk7CiAgICAgaWYgKHBvc2l0aW9uLm5vZGUo
KSA9PSBub2RlIHx8IHBvc2l0aW9uLm5vZGUoKS0+aXNEZXNjZW5kYW50T2Yobm9kZSkpCi0gICAg
ICAgIHBvc2l0aW9uID0gcG9zaXRpb25CZWZvcmVOb2RlKG5vZGUpOworICAgICAgICBwb3NpdGlv
biA9IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpOwogfQogCiB2b2lkIERlbGV0ZVNl
bGVjdGlvbkNvbW1hbmQ6OnJlbW92ZU5vZGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcCBiL1dlYkNvcmUv
ZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKaW5kZXggNDJkZDUxNS4uNWUzZjVkYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAorKysg
Yi9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCkBAIC0xNzMsNyArMTcz
LDcgQEAgdm9pZCBJbmRlbnRPdXRkZW50Q29tbWFuZDo6cmVtb3ZlVW5uZWNlc3NhcnlMaW5lQnJl
YWtBdChjb25zdCBQb3NpdGlvbiYgZW5kT2ZQYXIKICAgICBOb2RlKiBwYXJlbnROb2RlID0gYnIt
PnBhcmVudE5vZGUoKTsKIAogICAgIC8vIElmIHRoZSBub2RlIGlzbid0IGJyIG9yIHRoZSBwYXJl
bnQgbm9kZSBpcyBlbXB0eSwgdGhlbiBkb24ndCByZW1vdmUuCi0gICAgaWYgKCFici0+aGFzVGFn
TmFtZShiclRhZykgfHwgaXNWaXNpYmx5QWRqYWNlbnQocG9zaXRpb25CZWZvcmVOb2RlKHBhcmVu
dE5vZGUpLCBwb3NpdGlvbkFmdGVyTm9kZShwYXJlbnROb2RlKSkpCisgICAgaWYgKCFici0+aGFz
VGFnTmFtZShiclRhZykgfHwgaXNWaXNpYmx5QWRqYWNlbnQocG9zaXRpb25JblBhcmVudEJlZm9y
ZU5vZGUocGFyZW50Tm9kZSksIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUocGFyZW50Tm9kZSkp
KQogICAgICAgICByZXR1cm47CiAKICAgICByZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnMoYnIp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3Bw
IGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCmluZGV4IGYwMjA0
NTkuLmNhYWFlMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtD
b21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5j
cHAKQEAgLTEyNSwxMiArMTI1LDEyIEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9B
cHBseSgpCiAgICAgICAgIGlmICghaXNTdGFydE9mUGFyYWdyYXBoKFZpc2libGVQb3NpdGlvbihQ
b3NpdGlvbihub2RlVG9JbnNlcnQuZ2V0KCksIDApKSkpCiAgICAgICAgICAgICBpbnNlcnROb2Rl
QmVmb3JlKG5vZGVUb0luc2VydC0+Y2xvbmVOb2RlKGZhbHNlKS5nZXQoKSwgbm9kZVRvSW5zZXJ0
LmdldCgpKTsKICAgICAgICAgCi0gICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uKHBvc2l0aW9uQWZ0ZXJOb2RlKG5vZGVUb0luc2VydC5nZXQoKSksIERPV05TVFJFQU0p
KTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25J
blBhcmVudEFmdGVyTm9kZShub2RlVG9JbnNlcnQuZ2V0KCkpLCBET1dOU1RSRUFNKSk7CiAgICAg
Ly8gSWYgd2UncmUgaW5zZXJ0aW5nIGFmdGVyIGFsbCBvZiB0aGUgcmVuZGVyZWQgdGV4dCBpbiBh
IHRleHQgbm9kZSwgb3IgaW50byBhIG5vbi10ZXh0IG5vZGUsCiAgICAgLy8gYSBzaW1wbGUgaW5z
ZXJ0aW9uIGlzIHN1ZmZpY2llbnQuCiAgICAgfSBlbHNlIGlmIChwb3MuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSA+PSBjYXJldE1heE9mZnNldChwb3Mubm9kZSgpKSB8fCAhcG9zLm5vZGUoKS0+
aXNUZXh0Tm9kZSgpKSB7CiAgICAgICAgIGluc2VydE5vZGVBdChub2RlVG9JbnNlcnQuZ2V0KCks
IHBvcyk7Ci0gICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0
aW9uQWZ0ZXJOb2RlKG5vZGVUb0luc2VydC5nZXQoKSksIERPV05TVFJFQU0pKTsKKyAgICAgICAg
c2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVudEFmdGVy
Tm9kZShub2RlVG9JbnNlcnQuZ2V0KCkpLCBET1dOU1RSRUFNKSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gU3BsaXQgYSB0ZXh0IG5vZGUKICAgICAgICAgQVNTRVJUKHBvcy5ub2RlKCktPmlz
VGV4dE5vZGUoKSk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21t
YW5kOjpkb0FwcGx5KCkKICAgICAgICAgLy8gSGFuZGxlIHdoaXRlc3BhY2UgdGhhdCBvY2N1cnMg
YWZ0ZXIgdGhlIHNwbGl0CiAgICAgICAgIHVwZGF0ZUxheW91dCgpOwogICAgICAgICBpZiAoIWVu
ZGluZ1Bvc2l0aW9uLmlzUmVuZGVyZWRDaGFyYWN0ZXIoKSkgewotICAgICAgICAgICAgUG9zaXRp
b24gcG9zaXRpb25CZWZvcmVUZXh0Tm9kZShwb3NpdGlvbkJlZm9yZU5vZGUodGV4dE5vZGUpKTsK
KyAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlVGV4dE5vZGUocG9zaXRpb25JblBh
cmVudEJlZm9yZU5vZGUodGV4dE5vZGUpKTsKICAgICAgICAgICAgIC8vIENsZWFyIG91dCBhbGwg
d2hpdGVzcGFjZSBhbmQgaW5zZXJ0IG9uZSBub24tYnJlYWtpbmcgc3BhY2UKICAgICAgICAgICAg
IGRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0RG93bnN0cmVhbShlbmRpbmdQb3NpdGlvbik7CiAgICAg
ICAgICAgICBBU1NFUlQoIXRleHROb2RlLT5yZW5kZXJlcigpIHx8IHRleHROb2RlLT5yZW5kZXJl
cigpLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydExp
c3RDb21tYW5kLmNwcAppbmRleCBlYzcwN2QyLi5iZWI1ZDA4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9JbnNl
cnRMaXN0Q29tbWFuZC5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIEluc2VydExpc3RDb21t
YW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAgIC8vIEFsc28gYXZvaWQgdGhlIGNvbnRhaW5pbmcg
bGlzdCBpdGVtLgogICAgICAgICAgICAgTm9kZSogbGlzdENoaWxkID0gZW5jbG9zaW5nTGlzdENo
aWxkKGluc2VydGlvblBvcy5ub2RlKCkpOwogICAgICAgICAgICAgaWYgKGxpc3RDaGlsZCAmJiBs
aXN0Q2hpbGQtPmhhc1RhZ05hbWUobGlUYWcpKQotICAgICAgICAgICAgICAgIGluc2VydGlvblBv
cyA9IHBvc2l0aW9uQmVmb3JlTm9kZShsaXN0Q2hpbGQpOworICAgICAgICAgICAgICAgIGluc2Vy
dGlvblBvcyA9IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKGxpc3RDaGlsZCk7CiAKICAgICAg
ICAgICAgIGluc2VydE5vZGVBdChsaXN0RWxlbWVudCwgaW5zZXJ0aW9uUG9zKTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3Bw
IGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCmlu
ZGV4IDdkNmU1YzQuLmMwZTgxYWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIElu
c2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIGlmIChpc1N0YXJ0
T2ZQYXJhZ3JhcGgodmlzaWJsZVBvcykpIHsKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGJyID0g
Y3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpOwogICAgICAgICBpbnNlcnROb2RlQXQoYnIu
Z2V0KCksIGluc2VydGlvblBvc2l0aW9uKTsKLSAgICAgICAgaW5zZXJ0aW9uUG9zaXRpb24gPSBw
b3NpdGlvbkFmdGVyTm9kZShici5nZXQoKSk7CisgICAgICAgIGluc2VydGlvblBvc2l0aW9uID0g
cG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShici5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIC8v
IE1vdmUgZG93bnN0cmVhbS4gVHlwaW5nIHN0eWxlIGNvZGUgd2lsbCB0YWtlIGNhcmUgb2YgY2Fy
cnlpbmcgYWxvbmcgdGhlIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRD
b21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKaW5kZXgg
NmIwYWY5Yi4uZjEwZDcxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRD
b21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCkBA
IC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBJbnNlcnRUZXh0Q29tbWFuZDo6aW5wdXQoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkVGV4dCkKICAgICAKICAgICAvLyBJdCBpcyBw
b3NzaWJsZSBmb3IgdGhlIG5vZGUgdGhhdCBjb250YWlucyBzdGFydFBvc2l0aW9uIHRvIGNvbnRh
aW4gb25seSB1bnJlbmRlcmVkIHdoaXRlc3BhY2UsCiAgICAgLy8gYW5kIHNvIGRlbGV0ZUluc2ln
bmlmaWNhbnRUZXh0IGNvdWxkIHJlbW92ZSBpdC4gIFNhdmUgdGhlIHBvc2l0aW9uIGJlZm9yZSB0
aGUgbm9kZSBpbiBjYXNlIHRoYXQgaGFwcGVucy4KLSAgICBQb3NpdGlvbiBwb3NpdGlvbkJlZm9y
ZVN0YXJ0Tm9kZShwb3NpdGlvbkJlZm9yZU5vZGUoc3RhcnRQb3NpdGlvbi5ub2RlKCkpKTsKKyAg
ICBQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZVN0YXJ0Tm9kZShwb3NpdGlvbkluUGFyZW50QmVmb3Jl
Tm9kZShzdGFydFBvc2l0aW9uLm5vZGUoKSkpOwogICAgIGRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0
KHN0YXJ0UG9zaXRpb24udXBzdHJlYW0oKSwgc3RhcnRQb3NpdGlvbi5kb3duc3RyZWFtKCkpOwog
ICAgIGlmICghc3RhcnRQb3NpdGlvbi5ub2RlKCktPmluRG9jdW1lbnQoKSkKICAgICAgICAgc3Rh
cnRQb3NpdGlvbiA9IHBvc2l0aW9uQmVmb3JlU3RhcnROb2RlOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggZTBmNjJjZi4uODhmZTY1OSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC01MjgsNyArNTI4
LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpwb3NpdGlvbkF0
RW5kT2ZJbnNlcnRlZENvbnRlbnQoKQogVmlzaWJsZVBvc2l0aW9uIFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpwb3NpdGlvbkF0U3RhcnRPZkluc2VydGVkQ29udGVudCgpCiB7CiAgICAgLy8gUmV0
dXJuIHRoZSBpbnNlcnRlZCBjb250ZW50J3MgZmlyc3QgVmlzaWJsZVBvc2l0aW9uLgotICAgIHJl
dHVybiBWaXNpYmxlUG9zaXRpb24obmV4dENhbmRpZGF0ZShwb3NpdGlvbkJlZm9yZU5vZGUobV9m
aXJzdE5vZGVJbnNlcnRlZC5nZXQoKSkpKTsKKyAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG5l
eHRDYW5kaWRhdGUocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobV9maXJzdE5vZGVJbnNlcnRl
ZC5nZXQoKSkpKTsKIH0KIAogLy8gUmVtb3ZlIHN0eWxlIHNwYW5zIGJlZm9yZSBpbnNlcnRpb24g
aWYgdGhleSBhcmUgdW5uZWNlc3NhcnkuICBJdCdzIGZhc3RlciBiZWNhdXNlIHdlJ2xsIApAQCAt
Nzk0LDcgKzc5NCw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQog
ICAgICAgICBOb2RlKiBiciA9IGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkubm9kZSgpOyAKICAg
ICAgICAgQVNTRVJUKGJyLT5oYXNUYWdOYW1lKGJyVGFnKSk7IAogICAgICAgICAvLyBJbnNlcnQg
Y29udGVudCBiZXR3ZWVuIHRoZSB0d28gYmxvY2txdW90ZXMsIGJ1dCByZW1vdmUgdGhlIGJyIChz
aW5jZSBpdCB3YXMganVzdCBhIHBsYWNlaG9sZGVyKS4gCi0gICAgICAgIGluc2VydGlvblBvcyA9
IHBvc2l0aW9uQmVmb3JlTm9kZShicik7IAorICAgICAgICBpbnNlcnRpb25Qb3MgPSBwb3NpdGlv
bkluUGFyZW50QmVmb3JlTm9kZShicik7CiAgICAgICAgIHJlbW92ZU5vZGUoYnIpOwogICAgIH0K
ICAgICAKQEAgLTgxNyw5ICs4MTcsOSBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpk
b0FwcGx5KCkKICAgICAgICAgQVNTRVJUKHN0YXJ0QmxvY2sgIT0gY3VycmVudFJvb3QpOwogICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZUluc2VydGlvblBvcyhpbnNlcnRpb25Qb3MpOwog
ICAgICAgICBpZiAoaXNFbmRPZkJsb2NrKHZpc2libGVJbnNlcnRpb25Qb3MpICYmICEoaXNTdGFy
dE9mQmxvY2sodmlzaWJsZUluc2VydGlvblBvcykgJiYgZnJhZ21lbnQuaGFzSW50ZXJjaGFuZ2VO
ZXdsaW5lQXRFbmQoKSkpCi0gICAgICAgICAgICBpbnNlcnRpb25Qb3MgPSBwb3NpdGlvbkFmdGVy
Tm9kZShzdGFydEJsb2NrKTsKKyAgICAgICAgICAgIGluc2VydGlvblBvcyA9IHBvc2l0aW9uSW5Q
YXJlbnRBZnRlck5vZGUoc3RhcnRCbG9jayk7CiAgICAgICAgIGVsc2UgaWYgKGlzU3RhcnRPZkJs
b2NrKHZpc2libGVJbnNlcnRpb25Qb3MpKQotICAgICAgICAgICAgaW5zZXJ0aW9uUG9zID0gcG9z
aXRpb25CZWZvcmVOb2RlKHN0YXJ0QmxvY2spOworICAgICAgICAgICAgaW5zZXJ0aW9uUG9zID0g
cG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoc3RhcnRCbG9jayk7CiAgICAgfQogCiAgICAgLy8g
UGFzdGUgaW50byBydW4gb2YgdGFicyBzcGxpdHMgdGhlIHRhYiBzcGFuLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVTZWxlY3Rpb24uY3BwCmluZGV4IDU2YWQ2YjMuLjhhZGZkNzEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVNlbGVjdGlvbi5jcHAKQEAgLTUxMSw3ICs1MTEsNyBAQCB2b2lkIFZpc2libGVTZWxl
Y3Rpb246OmFkanVzdFNlbGVjdGlvblRvQXZvaWRDcm9zc2luZ0VkaXRpbmdCb3VuZGFyaWVzKCkK
ICAgICAgICAgICAgIHdoaWxlIChwLmlzTm90TnVsbCgpICYmICEobG93ZXN0RWRpdGFibGVBbmNl
c3RvcihwLm5vZGUoKSkgPT0gYmFzZUVkaXRhYmxlQW5jZXN0b3IgJiYgIWlzRWRpdGFibGVQb3Np
dGlvbihwKSkpIHsKICAgICAgICAgICAgICAgICBOb2RlKiByb290ID0gZWRpdGFibGVSb290Rm9y
UG9zaXRpb24ocCk7CiAgICAgICAgICAgICAgICAgc2hhZG93QW5jZXN0b3IgPSByb290ID8gcm9v
dC0+c2hhZG93QW5jZXN0b3JOb2RlKCkgOiAwOwotICAgICAgICAgICAgICAgIHAgPSBpc0F0b21p
Y05vZGUocC5ub2RlKCkpID8gcG9zaXRpb25CZWZvcmVOb2RlKHAubm9kZSgpKSA6IHByZXZpb3Vz
VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShwKTsKKyAgICAgICAgICAgICAgICBwID0gaXNBdG9t
aWNOb2RlKHAubm9kZSgpKSA/IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKHAubm9kZSgpKSA6
IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShwKTsKICAgICAgICAgICAgICAgICBp
ZiAocC5pc051bGwoKSAmJiAoc2hhZG93QW5jZXN0b3IgIT0gcm9vdCkpCiAgICAgICAgICAgICAg
ICAgICAgIHAgPSBsYXN0RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUoc2hhZG93QW5jZXN0b3Ip
OwogICAgICAgICAgICAgfQpAQCAtNTQwLDcgKzU0MCw3IEBAIHZvaWQgVmlzaWJsZVNlbGVjdGlv
bjo6YWRqdXN0U2VsZWN0aW9uVG9Bdm9pZENyb3NzaW5nRWRpdGluZ0JvdW5kYXJpZXMoKQogICAg
ICAgICAgICAgd2hpbGUgKHAuaXNOb3ROdWxsKCkgJiYgIShsb3dlc3RFZGl0YWJsZUFuY2VzdG9y
KHAubm9kZSgpKSA9PSBiYXNlRWRpdGFibGVBbmNlc3RvciAmJiAhaXNFZGl0YWJsZVBvc2l0aW9u
KHApKSkgewogICAgICAgICAgICAgICAgIE5vZGUqIHJvb3QgPSBlZGl0YWJsZVJvb3RGb3JQb3Np
dGlvbihwKTsKICAgICAgICAgICAgICAgICBzaGFkb3dBbmNlc3RvciA9IHJvb3QgPyByb290LT5z
aGFkb3dBbmNlc3Rvck5vZGUoKSA6IDA7Ci0gICAgICAgICAgICAgICAgcCA9IGlzQXRvbWljTm9k
ZShwLm5vZGUoKSkgPyBwb3NpdGlvbkFmdGVyTm9kZShwLm5vZGUoKSkgOiBuZXh0VmlzdWFsbHlE
aXN0aW5jdENhbmRpZGF0ZShwKTsKKyAgICAgICAgICAgICAgICBwID0gaXNBdG9taWNOb2RlKHAu
bm9kZSgpKSA/IHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUocC5ub2RlKCkpIDogbmV4dFZpc3Vh
bGx5RGlzdGluY3RDYW5kaWRhdGUocCk7CiAgICAgICAgICAgICAgICAgaWYgKHAuaXNOdWxsKCkg
JiYgKHNoYWRvd0FuY2VzdG9yICE9IHJvb3QpKQogICAgICAgICAgICAgICAgICAgICBwID0gUG9z
aXRpb24oc2hhZG93QW5jZXN0b3IsIDApOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGlu
Zy5jcHAKaW5kZXggYWJkNjU0ZC4uOGM1Yjc4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5n
L2h0bWxlZGl0aW5nLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBA
IC0yODUsNyArMjg1LDcgQEAgVmlzaWJsZVBvc2l0aW9uIGZpcnN0RWRpdGFibGVQb3NpdGlvbkFm
dGVyUG9zaXRpb25JblJvb3QoY29uc3QgUG9zaXRpb24mIHBvc2l0aW8KICAgICAgICAgICAgIHAg
PSBsYXN0RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUoc2hhZG93QW5jZXN0b3IpOwogICAgIAog
ICAgIHdoaWxlIChwLm5vZGUoKSAmJiAhaXNFZGl0YWJsZVBvc2l0aW9uKHApICYmIHAubm9kZSgp
LT5pc0Rlc2NlbmRhbnRPZihoaWdoZXN0Um9vdCkpCi0gICAgICAgIHAgPSBpc0F0b21pY05vZGUo
cC5ub2RlKCkpID8gcG9zaXRpb25BZnRlck5vZGUocC5ub2RlKCkpIDogbmV4dFZpc3VhbGx5RGlz
dGluY3RDYW5kaWRhdGUocCk7CisgICAgICAgIHAgPSBpc0F0b21pY05vZGUocC5ub2RlKCkpID8g
cG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShwLm5vZGUoKSkgOiBuZXh0VmlzdWFsbHlEaXN0aW5j
dENhbmRpZGF0ZShwKTsKICAgICAKICAgICBpZiAocC5ub2RlKCkgJiYgIXAubm9kZSgpLT5pc0Rl
c2NlbmRhbnRPZihoaWdoZXN0Um9vdCkpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
KTsKQEAgLTMwNiw3ICszMDYsNyBAQCBWaXNpYmxlUG9zaXRpb24gbGFzdEVkaXRhYmxlUG9zaXRp
b25CZWZvcmVQb3NpdGlvbkluUm9vdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpbwogICAgICAgICAg
ICAgcCA9IGZpcnN0RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUoc2hhZG93QW5jZXN0b3IpOwog
ICAgIAogICAgIHdoaWxlIChwLm5vZGUoKSAmJiAhaXNFZGl0YWJsZVBvc2l0aW9uKHApICYmIHAu
bm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihoaWdoZXN0Um9vdCkpCi0gICAgICAgIHAgPSBpc0F0b21p
Y05vZGUocC5ub2RlKCkpID8gcG9zaXRpb25CZWZvcmVOb2RlKHAubm9kZSgpKSA6IHByZXZpb3Vz
VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShwKTsKKyAgICAgICAgcCA9IGlzQXRvbWljTm9kZShw
Lm5vZGUoKSkgPyBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShwLm5vZGUoKSkgOiBwcmV2aW91
c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUocCk7CiAgICAgCiAgICAgaWYgKHAubm9kZSgpICYm
ICFwLm5vZGUoKS0+aXNEZXNjZW5kYW50T2YoaGlnaGVzdFJvb3QpKQogICAgICAgICByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uKCk7CkBAIC0zNDQsNyArMzQ0LDcgQEAgUG9zaXRpb24gcmFuZ2VDb21w
bGlhbnRFcXVpdmFsZW50KGNvbnN0IFBvc2l0aW9uJiBwb3MpCiAKICAgICBpZiAocG9zLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPD0gMCkgewogICAgICAgICBpZiAobm9kZS0+cGFyZW50Tm9k
ZSgpICYmIChlZGl0aW5nSWdub3Jlc0NvbnRlbnQobm9kZSkgfHwgaXNUYWJsZUVsZW1lbnQobm9k
ZSkpKQotICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uQmVmb3JlTm9kZShub2RlKTsKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShub2RlKTsKICAgICAgICAg
cmV0dXJuIFBvc2l0aW9uKG5vZGUsIDApOwogICAgIH0KIApAQCAtMzU0LDcgKzM1NCw3IEBAIFBv
c2l0aW9uIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChjb25zdCBQb3NpdGlvbiYgcG9zKQogICAg
IGludCBtYXhDb21wbGlhbnRPZmZzZXQgPSBub2RlLT5jaGlsZE5vZGVDb3VudCgpOwogICAgIGlm
IChwb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+IG1heENvbXBsaWFudE9mZnNldCkgewog
ICAgICAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uQWZ0ZXJOb2RlKG5vZGUpOworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRB
ZnRlck5vZGUobm9kZSk7CiAKICAgICAgICAgLy8gdGhlcmUgaXMgbm8gb3RoZXIgb3B0aW9uIGF0
IHRoaXMgcG9pbnQgdGhhbiB0bwogICAgICAgICAvLyB1c2UgdGhlIGhpZ2hlc3QgYWxsb3dlZCBw
b3NpdGlvbiBpbiB0aGUgbm9kZQpAQCAtMzY0LDExICszNjQsMTEgQEAgUG9zaXRpb24gcmFuZ2VD
b21wbGlhbnRFcXVpdmFsZW50KGNvbnN0IFBvc2l0aW9uJiBwb3MpCiAgICAgLy8gRWRpdGluZyBz
aG91bGQgbmV2ZXIgZ2VuZXJhdGUgcG9zaXRpb25zIGxpa2UgdGhpcy4KICAgICBpZiAoKHBvcy5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIDwgbWF4Q29tcGxpYW50T2Zmc2V0KSAmJiBlZGl0aW5n
SWdub3Jlc0NvbnRlbnQobm9kZSkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiBub2RlLT5wYXJlbnROb2RlKCkgPyBwb3NpdGlvbkJlZm9yZU5vZGUobm9k
ZSkgOiBQb3NpdGlvbihub2RlLCAwKTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPnBhcmVudE5vZGUo
KSA/IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpIDogUG9zaXRpb24obm9kZSwgMCk7
CiAgICAgfQogICAgIAogICAgIGlmIChwb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA9PSBt
YXhDb21wbGlhbnRPZmZzZXQgJiYgKGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKSB8fCBpc1Rh
YmxlRWxlbWVudChub2RlKSkpCi0gICAgICAgIHJldHVybiBwb3NpdGlvbkFmdGVyTm9kZShub2Rl
KTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUobm9kZSk7CiAgICAg
CiAgICAgcmV0dXJuIFBvc2l0aW9uKHBvcyk7CiB9CkBAIC01MjQsNyArNTI0LDcgQEAgUG9zaXRp
b24gcG9zaXRpb25CZWZvcmVDb250YWluaW5nU3BlY2lhbEVsZW1lbnQoY29uc3QgUG9zaXRpb24m
IHBvcywgTm9kZSoqIGNvbnQKICAgICBOb2RlKiBuID0gZmlyc3RJblNwZWNpYWxFbGVtZW50KHBv
cyk7CiAgICAgaWYgKCFuKQogICAgICAgICByZXR1cm4gcG9zOwotICAgIFBvc2l0aW9uIHJlc3Vs
dCA9IHBvc2l0aW9uQmVmb3JlTm9kZShuKTsKKyAgICBQb3NpdGlvbiByZXN1bHQgPSBwb3NpdGlv
bkluUGFyZW50QmVmb3JlTm9kZShuKTsKICAgICBpZiAocmVzdWx0LmlzTnVsbCgpIHx8IHJlc3Vs
dC5ub2RlKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSAhPSBwb3Mubm9kZSgpLT5yb290RWRpdGFi
bGVFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBwb3M7CiAgICAgaWYgKGNvbnRhaW5pbmdTcGVj
aWFsRWxlbWVudCkKQEAgLTU0Miw3ICs1NDIsNyBAQCBQb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ29u
dGFpbmluZ1NwZWNpYWxFbGVtZW50KGNvbnN0IFBvc2l0aW9uJiBwb3MsIE5vZGUgKipjb250YQog
ICAgIE5vZGUqIG4gPSBsYXN0SW5TcGVjaWFsRWxlbWVudChwb3MpOwogICAgIGlmICghbikKICAg
ICAgICAgcmV0dXJuIHBvczsKLSAgICBQb3NpdGlvbiByZXN1bHQgPSBwb3NpdGlvbkFmdGVyTm9k
ZShuKTsKKyAgICBQb3NpdGlvbiByZXN1bHQgPSBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKG4p
OwogICAgIGlmIChyZXN1bHQuaXNOdWxsKCkgfHwgcmVzdWx0Lm5vZGUoKS0+cm9vdEVkaXRhYmxl
RWxlbWVudCgpICE9IHBvcy5ub2RlKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIHBvczsKICAgICBpZiAoY29udGFpbmluZ1NwZWNpYWxFbGVtZW50KQpAQCAtNTg0LDcg
KzU4NCw3IEBAIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25CZWZvcmVOb2RlKE5vZGUq
IG5vZGUpCiAgICAgaWYgKG5vZGUtPmNoaWxkTm9kZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24obm9kZSwgMCwgRE9XTlNUUkVBTSk7CiAgICAgQVNTRVJUKG5vZGUtPnBh
cmVudE5vZGUoKSk7Ci0gICAgcmV0dXJuIHBvc2l0aW9uQmVmb3JlTm9kZShub2RlKTsKKyAgICBy
ZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobm9kZSk7CiB9CiAKIC8vIFJldHVybnMg
dGhlIHZpc2libGUgcG9zaXRpb24gYXQgdGhlIGVuZGluZyBvZiBhIG5vZGUKQEAgLTU5NCw3ICs1
OTQsNyBAQCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uQWZ0ZXJOb2RlKE5vZGUqIG5v
ZGUpCiAgICAgaWYgKG5vZGUtPmNoaWxkTm9kZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBWaXNp
YmxlUG9zaXRpb24obm9kZSwgbm9kZS0+Y2hpbGROb2RlQ291bnQoKSwgRE9XTlNUUkVBTSk7CiAg
ICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSk7Ci0gICAgcmV0dXJuIHBvc2l0aW9uQWZ0ZXJO
b2RlKG5vZGUpOworICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKG5vZGUpOwog
fQogCiAvLyBDcmVhdGUgYSByYW5nZSBvYmplY3Qgd2l0aCB0d28gdmlzaWJsZSBwb3NpdGlvbnMs
IHN0YXJ0IGFuZCBlbmQuCkBAIC04MDksNyArODA5LDcgQEAgYm9vbCBjYW5NZXJnZUxpc3RzKEVs
ZW1lbnQqIGZpcnN0TGlzdCwgRWxlbWVudCogc2Vjb25kTGlzdCkKICAgICByZXR1cm4gZmlyc3RM
aXN0LT5oYXNUYWdOYW1lKHNlY29uZExpc3QtPnRhZ1FOYW1lKCkpLy8gbWFrZSBzdXJlIHRoZSBs
aXN0IHR5cGVzIG1hdGNoIChvbCB2cy4gdWwpCiAgICAgJiYgaXNDb250ZW50RWRpdGFibGUoZmly
c3RMaXN0KSAmJiBpc0NvbnRlbnRFZGl0YWJsZShzZWNvbmRMaXN0KS8vIGJvdGggbGlzdHMgYXJl
IGVkaXRhYmxlCiAgICAgJiYgZmlyc3RMaXN0LT5yb290RWRpdGFibGVFbGVtZW50KCkgPT0gc2Vj
b25kTGlzdC0+cm9vdEVkaXRhYmxlRWxlbWVudCgpLy8gZG9uJ3QgY3Jvc3MgZWRpdGluZyBib3Vu
ZGFyaWVzCi0gICAgJiYgaXNWaXNpYmx5QWRqYWNlbnQocG9zaXRpb25BZnRlck5vZGUoZmlyc3RM
aXN0KSwgcG9zaXRpb25CZWZvcmVOb2RlKHNlY29uZExpc3QpKTsKKyAgICAmJiBpc1Zpc2libHlB
ZGphY2VudChwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKGZpcnN0TGlzdCksIHBvc2l0aW9uSW5Q
YXJlbnRCZWZvcmVOb2RlKHNlY29uZExpc3QpKTsKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUgaXMg
bm8gdmlzaWJsZSBjb250ZW50IGJldHdlZW4gdGhpcyBsaSBhbmQgdGhlIHByZXZpb3VzIGxpc3QK
IH0KIApAQCAtODk5LDcgKzg5OSw3IEBAIFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlVGFiU3Bhbihj
b25zdCBQb3NpdGlvbiYgcG9zKQogICAgIGVsc2UgaWYgKCFpc1RhYlNwYW5Ob2RlKG5vZGUpKQog
ICAgICAgICByZXR1cm4gcG9zOwogICAgIAotICAgIHJldHVybiBwb3NpdGlvbkJlZm9yZU5vZGUo
bm9kZSk7CisgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpOwogfQog
CiBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCwgUGFzc1JlZlB0cjxOb2RlPiB0YWJUZXh0Tm9kZSk=
</data>
<flag name="review"
          id="18001"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33801</attachid>
            <date>2009-07-30 12:07:54 -0700</date>
            <delta_ts>2009-08-27 23:16:44 -0700</delta_ts>
            <desc>Move them back to Position.h per mjs&apos;s request</desc>
            <filename>bug-25494-20090730120754.patch</filename>
            <type>text/plain</type>
            <size>7629</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzViMWFiOS4uYzAyYjdiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAwOS0wNy0zMCAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmUtb3JnYW5pemUgcG9zaXRpb24gY3JlYXRpb24gZnVuY3Rpb25zIGluIHBy
ZXBhcmF0aW9uIGZvciBhZGRpbmcgbW9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjU0OTQKKworICAgICAgICBNYWtlIHBvc2l0aW9uIGZ1bmN0aW9u
cyBpbmxpbmUgdG8gYXZvaWQgcmVmLWNodXJuLgorICAgICAgICBSZW1vdmUgc3RhcnRQb3NpdGlv
bi9lbmRQb3NpdGlvbiBhcyB0aGV5IHdlcmUgb25seSB1c2VkIGluIG9uZSBwbGFjZS4KKworICAg
ICAgICBObyBmdW5jdGlvbmFsIGNoYW5nZXMsIHRodXMgbm8gdGVzdHMuCisKKyAgICAgICAgKiBk
b20vUG9zaXRpb24uY3BwOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6cG9zaXRpb25CZWZvcmVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uQWZ0
ZXJOb2RlKToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW92ZVRvKToKKyAgICAgICAgKiBl
ZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcu
Y3BwOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmZpcnN0RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6bGFz
dERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcDoKKwogMjAwOS0wNy0zMCAgWW9uZyBMaSAgPHlvbmcubGlAdG9yY2htb2JpbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4
IDNiNGMzZTguLmMwMGFmMjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAor
KysgYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTExMTUsMjggKzExMTUsNyBAQCB2b2lk
IFBvc2l0aW9uOjpzaG93VHJlZUZvclRoaXMoKSBjb25zdAogCiAjZW5kaWYKIAotUG9zaXRpb24g
c3RhcnRQb3NpdGlvbihjb25zdCBSYW5nZSogcikKLXsKLSAgICByZXR1cm4gciA/IHItPnN0YXJ0
UG9zaXRpb24oKSA6IFBvc2l0aW9uKCk7Ci19Ci0KLVBvc2l0aW9uIGVuZFBvc2l0aW9uKGNvbnN0
IFJhbmdlKiByKQotewotICAgIHJldHVybiByID8gci0+ZW5kUG9zaXRpb24oKSA6IFBvc2l0aW9u
KCk7Ci19CiAKLS8vIE5PVEU6IGZpcnN0L2xhc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSBj
YW4gcmV0dXJuICJlZGl0aW5nIHBvc2l0aW9ucyIgKGxpa2UgW2ltZywgMF0pCi0vLyBmb3IgZWxl
bWVudHMgd2hpY2ggZWRpdGluZyAiaWdub3JlcyIuICB0aGUgcmVzdCBvZiB0aGUgZWRpdGluZyBj
b2RlIHdpbGwgdHJlYXQgW2ltZywgMF0KLS8vIGFzICJ0aGUgbGFzdCBwb3NpdGlvbiBiZWZvcmUg
dGhlIGltZyIKLVBvc2l0aW9uIGZpcnN0RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUoTm9kZSog
bm9kZSkKLXsKLSAgICByZXR1cm4gUG9zaXRpb24obm9kZSwgMCk7Ci19Ci0KLVBvc2l0aW9uIGxh
c3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZShOb2RlKiBub2RlKQotewotICAgIHJldHVybiBQ
b3NpdGlvbihub2RlLCBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhub2RlKSk7Ci19CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXggYjQzNGVjOS4uZWQ5MTJiOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRlICJUZXh0
RGlyZWN0aW9uLmgiCisjaW5jbHVkZSAiTm9kZS5oIiAvLyBmb3IgcG9zaXRpb24gY3JlYXRpb24g
ZnVuY3Rpb25zCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTE4OCwxNCArMTg5LDI0IEBA
IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUG9zaXRpb24mIGEsIGNvbnN0IFBvc2l0aW9u
JiBiKQogICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKLVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24o
Y29uc3QgUmFuZ2UqKTsKLVBvc2l0aW9uIGVuZFBvc2l0aW9uKGNvbnN0IFJhbmdlKik7CisvLyBX
ZSBkZWZpbmUgcG9zaXRpb24gY3JlYXRpb24gZnVuY3Rpb25zIHRvIG1ha2UgY2FsbHNpdGVzIG1v
cmUgcmVhZGFibGUuCisvLyBUaGVzZSBhcmUgaW5saW5lIHRvIHByZXZlbnQgcmVmLWNodXJuIHdo
ZW4gcmV0dXJuaW5nIGEgUG9zaXRpb24gb2JqZWN0LgorLy8gSWYgd2UgZXZlciBhZGQgYSBQYXNz
UG9zaXRpb24gd2UgY2FuIG1ha2UgdGhlc2Ugbm9uLWlubGluZS4KIAotLy8gTk9URTogZmlyc3Qv
bGFzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlIGNhbiByZXR1cm4gImVkaXRpbmcgcG9zaXRp
b25zIiAobGlrZSBbaW1nLCAwXSkKLS8vIGZvciBlbGVtZW50cyB3aGljaCBlZGl0aW5nICJpZ25v
cmVzIi4gIHRoZSByZXN0IG9mIHRoZSBlZGl0aW5nIGNvZGUgd2lsbCB0cmVhdCBbaW1nLCAwXQot
Ly8gYXMgInRoZSBsYXN0IHBvc2l0aW9uIGJlZm9yZSB0aGUgaW1nIgotUG9zaXRpb24gZmlyc3RE
ZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZShOb2RlKik7Ci1Qb3NpdGlvbiBsYXN0RGVlcEVkaXRp
bmdQb3NpdGlvbkZvck5vZGUoTm9kZSopOworaW5saW5lIFBvc2l0aW9uIHBvc2l0aW9uQmVmb3Jl
Tm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBBU1NF
UlQobm9kZS0+cGFyZW50Tm9kZSgpKQorICAgIC8vIEF0IGxlYXN0IG9uZSBjYWxsZXIgY3VycmVu
dGx5IGhpdHMgdGhpcyBBU1NFUlQgdGhvdWdoLCB3aGljaCBpbmRpY2F0ZXMKKyAgICAvLyB0aGF0
IHRoZSBjYWxsZXIgaXMgdHJ5aW5nIHRvIG1ha2UgYSBwb3NpdGlvbiByZWxhdGl2ZSB0byBhIGRp
c2Nvbm5lY3RlZCBub2RlICh3aGljaCBpcyBsaWtlbHkgYW4gZXJyb3IpCisgICAgLy8gU3BlY2lm
aWNhbGx5LCBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVyZS0wMDEuaHRtbCBjcmFzaGVz
IHdpdGggQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICByZXR1cm4gUG9zaXRpb24obm9k
ZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5ub2RlSW5kZXgoKSwgUG9zaXRpb246OlBvc2l0aW9uSXNP
ZmZzZXRJbkFuY2hvcik7Cit9CisKK2lubGluZSBQb3NpdGlvbiBwb3NpdGlvbkFmdGVyTm9kZShj
b25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlLT5wYXJlbnROb2RlKCkpOworICAg
IHJldHVybiBQb3NpdGlvbihub2RlLT5wYXJlbnROb2RlKCksIG5vZGUtPm5vZGVJbmRleCgpICsg
MSwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7Cit9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRy
b2xsZXIuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4
IGI2ODc0ZDYuLjdkOTk5MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25D
b250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5j
cHAKQEAgLTkwLDcgKzkwLDggQEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjptb3ZlVG8oY29u
c3QgUG9zaXRpb24gJnBvcywgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIHUKIAogdm9pZCBTZWxl
Y3Rpb25Db250cm9sbGVyOjptb3ZlVG8oY29uc3QgUmFuZ2UgKnIsIEVBZmZpbml0eSBhZmZpbml0
eSwgYm9vbCB1c2VyVHJpZ2dlcmVkKQogewotICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0
aW9uKHN0YXJ0UG9zaXRpb24ociksIGVuZFBvc2l0aW9uKHIpLCBhZmZpbml0eSksIHRydWUsIHRy
dWUsIHVzZXJUcmlnZ2VyZWQpOworICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gciA/
IFZpc2libGVTZWxlY3Rpb24oci0+c3RhcnRQb3NpdGlvbigpLCByLT5lbmRQb3NpdGlvbigpLCBh
ZmZpbml0eSkgOiBWaXNpYmxlU2VsZWN0aW9uKFBvc2l0aW9uKCksIFBvc2l0aW9uKCksIGFmZmlu
aXR5KTsKKyAgICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCB0cnVlLCB0cnVlLCB1c2VyVHJpZ2dl
cmVkKTsKIH0KIAogdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjptb3ZlVG8oY29uc3QgUG9zaXRp
b24gJmJhc2UsIGNvbnN0IFBvc2l0aW9uICZleHRlbnQsIEVBZmZpbml0eSBhZmZpbml0eSwgYm9v
bCB1c2VyVHJpZ2dlcmVkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5n
LmNwcCBiL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggYTA0ZDJiNy4uYWJk
NjU0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC01NzcsMjAgKzU3Nyw2IEBAIE5vZGUq
IGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFibGUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxl
UG9zaXRpb24pCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTm9k
ZShjb25zdCBOb2RlKiBub2RlKQotewotICAgIEFTU0VSVChub2RlKTsKLSAgICAvLyBGSVhNRTog
U2hvdWxkIEFTU0VSVChub2RlLT5wYXJlbnROb2RlKCkpIGJ1dCBkb2luZyBzbyByZXN1bHRzIGlu
IGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpZ2F0dXJlLTAwMS5odG1sIGNyYXNoaW5nCi0gICAg
cmV0dXJuIFBvc2l0aW9uKG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+bm9kZUluZGV4KCkpOwot
fQotCi1Qb3NpdGlvbiBwb3NpdGlvbkFmdGVyTm9kZShjb25zdCBOb2RlKiBub2RlKQotewotICAg
IEFTU0VSVChub2RlKTsKLSAgICAvLyBGSVhNRTogU2hvdWxkIEFTU0VSVChub2RlLT5wYXJlbnRO
b2RlKCkpIGJ1dCBkb2luZyBzbyByZXN1bHRzIGluIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxp
Z2F0dXJlLTAwMS5odG1sIGNyYXNoaW5nCi0gICAgcmV0dXJuIFBvc2l0aW9uKG5vZGUtPnBhcmVu
dE5vZGUoKSwgbm9kZS0+bm9kZUluZGV4KCkgKyAxKTsKLX0KLQogLy8gUmV0dXJucyB0aGUgdmlz
aWJsZSBwb3NpdGlvbiBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbm9kZQogVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVQb3NpdGlvbkJlZm9yZU5vZGUoTm9kZSogbm9kZSkKIHsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oIGIvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5n
LmgKaW5kZXggOGY1ZDVmZi4uYmI4YmQwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJQb3NpdGlvbi5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcxLDggKzcyLDI3IEBAIGNvbnN0IFN0cmluZyYgbm9u
QnJlYWtpbmdTcGFjZVN0cmluZygpOwogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1Qb3NpdGlvbiBwb3NpdGlvbkJlZm9yZU5vZGUoY29uc3QgTm9kZSopOwotUG9zaXRp
b24gcG9zaXRpb25BZnRlck5vZGUoY29uc3QgTm9kZSopOworCisvLyBQb3NpdGlvbiBjcmVhdGlv
biBmdW5jdGlvbnMgYXJlIGlubGluZSB0byBwcmV2ZW50IHJlZi1jaHVybi4KKy8vIE90aGVyIFBv
c2l0aW9uIGNyZWF0aW9uIGZ1bmN0aW9ucyBhcmUgaW4gUG9zaXRpb24uaAorLy8gYnV0IHRoZXNl
IGRlcGVuZCBvbiBsYXN0T2Zmc2V0Rm9yRWRpdGluZyB3aGljaCBpcyBkZWZpbmVkIGluIGh0bWxl
ZGl0aW5nLmguCisKKy8vIE5PVEU6IGZpcnN0L2xhc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9k
ZSByZXR1cm4gbGVnYWN5IGVkaXRpbmcgcG9zaXRpb25zIChsaWtlIFtpbWcsIDBdKQorLy8gZm9y
IGVsZW1lbnRzIHdoaWNoIGVkaXRpbmcgaWdub3Jlcy4gIFRoZSByZXN0IG9mIHRoZSBlZGl0aW5n
IGNvZGUgd2lsbCB0cmVhdCBbaW1nLCAwXQorLy8gYXMgInRoZSBsYXN0IHBvc2l0aW9uIGJlZm9y
ZSB0aGUgaW1nIi4KKy8vIE5ldyBjb2RlIHNob3VsZCB1c2UgdGhlIGNyZWF0aW9uIGZ1bmN0aW9u
cyBpbiBQb3NpdGlvbi5oIGluc3RlYWQuCitpbmxpbmUgUG9zaXRpb24gZmlyc3REZWVwRWRpdGlu
Z1Bvc2l0aW9uRm9yTm9kZShOb2RlKiBhbmNob3JOb2RlKQoreworICAgIEFTU0VSVChhbmNob3JO
b2RlKTsKKyAgICByZXR1cm4gUG9zaXRpb24oYW5jaG9yTm9kZSwgMCk7Cit9CisKK2lubGluZSBQ
b3NpdGlvbiBsYXN0RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUoTm9kZSogYW5jaG9yTm9kZSkK
K3sKKyAgICBBU1NFUlQoYW5jaG9yTm9kZSk7CisgICAgcmV0dXJuIFBvc2l0aW9uKGFuY2hvck5v
ZGUsIGxhc3RPZmZzZXRGb3JFZGl0aW5nKGFuY2hvck5vZGUpKTsKK30KKwogVmlzaWJsZVBvc2l0
aW9uIHZpc2libGVQb3NpdGlvbkJlZm9yZU5vZGUoTm9kZSopOwogVmlzaWJsZVBvc2l0aW9uIHZp
c2libGVQb3NpdGlvbkFmdGVyTm9kZShOb2RlKik7CiBQYXNzUmVmUHRyPFJhbmdlPiBjcmVhdGVS
YW5nZShQYXNzUmVmUHRyPERvY3VtZW50PiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydCwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlbmQsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCmluZGV4IDMzODAwODIuLjZlZDE5YjcgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCisj
aW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8
c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+
</data>
<flag name="review"
          id="17999"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>