<?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>115738</bug_id>
          
          <creation_ts>2013-05-07 10:49:21 -0700</creation_ts>
          <short_desc>Clean up KeyframeValueList and related classes</short_desc>
          <delta_ts>2013-05-07 15:03:21 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>luiz</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>philn</cc>
    
    <cc>rego+ews</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>885823</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-07 10:49:21 -0700</bug_when>
    <thetext>Clean up KeyframeValueList and related classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885827</commentid>
    <comment_count>1</comment_count>
      <attachid>200929</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-07 10:53:43 -0700</bug_when>
    <thetext>Created attachment 200929
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885836</commentid>
    <comment_count>2</comment_count>
      <attachid>200929</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 10:58:34 -0700</bug_when>
    <thetext>Comment on attachment 200929
Patch

Attachment 200929 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/347183</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885838</commentid>
    <comment_count>3</comment_count>
      <attachid>200929</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 11:00:13 -0700</bug_when>
    <thetext>Comment on attachment 200929
Patch

Attachment 200929 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/356096</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885839</commentid>
    <comment_count>4</comment_count>
      <attachid>200929</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-07 11:00:36 -0700</bug_when>
    <thetext>Comment on attachment 200929
Patch

Attachment 200929 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/356097</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885841</commentid>
    <comment_count>5</comment_count>
      <attachid>200935</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-07 11:02:09 -0700</bug_when>
    <thetext>Created attachment 200935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885848</commentid>
    <comment_count>6</comment_count>
      <attachid>200935</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 11:13:28 -0700</bug_when>
    <thetext>Comment on attachment 200935
Patch

Attachment 200935 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/323089</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885852</commentid>
    <comment_count>7</comment_count>
      <attachid>200939</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-07 11:17:13 -0700</bug_when>
    <thetext>Created attachment 200939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885860</commentid>
    <comment_count>8</comment_count>
      <attachid>200939</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-07 11:22:05 -0700</bug_when>
    <thetext>Comment on attachment 200939
Patch

Attachment 200939 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/356107</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885861</commentid>
    <comment_count>9</comment_count>
      <attachid>200939</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 11:23:32 -0700</bug_when>
    <thetext>Comment on attachment 200939
Patch

Attachment 200939 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/271127</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885863</commentid>
    <comment_count>10</comment_count>
      <attachid>200939</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 11:25:01 -0700</bug_when>
    <thetext>Comment on attachment 200939
Patch

Attachment 200939 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/355139</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885866</commentid>
    <comment_count>11</comment_count>
      <attachid>200945</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-07 11:26:47 -0700</bug_when>
    <thetext>Created attachment 200945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885884</commentid>
    <comment_count>12</comment_count>
      <attachid>200945</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 11:37:56 -0700</bug_when>
    <thetext>Comment on attachment 200945
Patch

Attachment 200945 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/338137</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885887</commentid>
    <comment_count>13</comment_count>
      <attachid>200945</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-07 11:41:10 -0700</bug_when>
    <thetext>Comment on attachment 200945
Patch

Attachment 200945 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/336168</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885893</commentid>
    <comment_count>14</comment_count>
      <attachid>200945</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 11:42:50 -0700</bug_when>
    <thetext>Comment on attachment 200945
Patch

Attachment 200945 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/359135</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885894</commentid>
    <comment_count>15</comment_count>
      <attachid>200945</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-07 11:49:19 -0700</bug_when>
    <thetext>Comment on attachment 200945
Patch

Attachment 200945 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/359139</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885905</commentid>
    <comment_count>16</comment_count>
      <attachid>200954</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-07 12:08:32 -0700</bug_when>
    <thetext>Created attachment 200954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885908</commentid>
    <comment_count>17</comment_count>
      <attachid>200954</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 12:13:14 -0700</bug_when>
    <thetext>Comment on attachment 200954
Patch

Attachment 200954 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/355154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885909</commentid>
    <comment_count>18</comment_count>
      <attachid>200954</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-07 12:13:24 -0700</bug_when>
    <thetext>Comment on attachment 200954
Patch

Attachment 200954 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/347213</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885910</commentid>
    <comment_count>19</comment_count>
      <attachid>200954</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 12:14:12 -0700</bug_when>
    <thetext>Comment on attachment 200954
Patch

Attachment 200954 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/347211</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885911</commentid>
    <comment_count>20</comment_count>
      <attachid>200956</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-07 12:18:24 -0700</bug_when>
    <thetext>Created attachment 200956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885914</commentid>
    <comment_count>21</comment_count>
      <attachid>200956</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 12:24:51 -0700</bug_when>
    <thetext>Comment on attachment 200956
Patch

Attachment 200956 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/271150</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885915</commentid>
    <comment_count>22</comment_count>
      <attachid>200956</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 12:25:36 -0700</bug_when>
    <thetext>Comment on attachment 200956
Patch

Attachment 200956 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/355159</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885916</commentid>
    <comment_count>23</comment_count>
      <attachid>200956</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-07 12:26:40 -0700</bug_when>
    <thetext>Comment on attachment 200956
Patch

Attachment 200956 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/442097</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885921</commentid>
    <comment_count>24</comment_count>
      <attachid>200958</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-07 12:36:33 -0700</bug_when>
    <thetext>Created attachment 200958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885926</commentid>
    <comment_count>25</comment_count>
      <attachid>200958</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-07 12:42:35 -0700</bug_when>
    <thetext>Comment on attachment 200958
Patch

Attachment 200958 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/336191</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885927</commentid>
    <comment_count>26</comment_count>
      <attachid>200960</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-07 12:44:39 -0700</bug_when>
    <thetext>Created attachment 200960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885934</commentid>
    <comment_count>27</comment_count>
      <attachid>200960</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 12:59:33 -0700</bug_when>
    <thetext>Comment on attachment 200960
Patch

Attachment 200960 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/323133</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885936</commentid>
    <comment_count>28</comment_count>
      <attachid>200960</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-05-07 13:04:48 -0700</bug_when>
    <thetext>Comment on attachment 200960
Patch

r=me for this and any future version of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885940</commentid>
    <comment_count>29</comment_count>
      <attachid>200964</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-07 13:33:38 -0700</bug_when>
    <thetext>Created attachment 200964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885942</commentid>
    <comment_count>30</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-05-07 13:36:26 -0700</bug_when>
    <thetext>Next time let me know and I&apos;ll do the coordinated graphics related part... takes me a minute when I can compile it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885944</commentid>
    <comment_count>31</comment_count>
      <attachid>200964</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 13:39:29 -0700</bug_when>
    <thetext>Comment on attachment 200964
Patch

Attachment 200964 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/266162</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885972</commentid>
    <comment_count>32</comment_count>
      <attachid>200977</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-05-07 14:24:26 -0700</bug_when>
    <thetext>Created attachment 200977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885980</commentid>
    <comment_count>33</comment_count>
      <attachid>200978</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-05-07 14:36:33 -0700</bug_when>
    <thetext>Created attachment 200978
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885994</commentid>
    <comment_count>34</comment_count>
      <attachid>200978</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 15:03:15 -0700</bug_when>
    <thetext>Comment on attachment 200978
Patch for landing

Clearing flags on attachment: 200978

Committed r149694: &lt;http://trac.webkit.org/changeset/149694&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885995</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 15:03:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200929</attachid>
            <date>2013-05-07 10:53:43 -0700</date>
            <delta_ts>2013-05-07 11:02:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115738-20130507105249.patch</filename>
            <type>text/plain</type>
            <size>38359</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmYzMGI4M2ExOTVhN2U4
NzNjZWRlNzE0NzE2ODkwMjRlMDdjZWZlYS4uNGY1NGQyMWI2NTUzOWMzNWM4NGY4YWVlMDQxNzMy
ZThiOTUzN2FlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTA1LTA3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgS2V5
ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN0YXRpYyBjcmVhdGUoKSBmdW5jdGlvbnMg
dG8gdGhlIEFuaW1hdGlvblZhbHVlIHN1YmNsYXNzZXMsIGFuZCBjaGFuZ2UgYSBidW5jaCBvZiBw
YXJhbWV0ZXJzCisgICAgICAgIGFuZCByZXR1cm4gdmFsdWVzIHRoYXQgY2FuIG5ldmVyIGJlIG51
bGwgZnJvbSBwb2ludGVyIHR5cGVzIHRvIHJlZmVyZW5jZSB0eXBlcyB0byBiZXR0ZXIgaW5kaWNh
dGUgdGhpcy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJPcGVyYXRpb25zQXQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dmFsaWRhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdGlvbnNBdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjp2YWxpZGF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKEFuaW1hdGlvblZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblZhbHVlOjpBbmltYXRpb25WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoRmxvYXRB
bmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpG
bG9hdEFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OnZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckFuaW1hdGlvblZhbHVlOjp2YWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6RmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoRmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVW
YWx1ZUxpc3Q6On5LZXlmcmFtZVZhbHVlTGlzdCk6CisgICAgICAgIChLZXlmcmFtZVZhbHVlTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6YXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVGaWx0ZXJBbmltYXRp
b25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRp
b25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0
ZXJBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAoR3JhcGhpY3NMYXllckNBKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorCiAyMDEzLTA1LTA2ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBhbiAnaXNSZWFkT25seScgbWVt
YmVyIHRvIElETCBwYXJzZSB0cmVlIHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUzNjgxNDU2NGY4
NmRjYjQ3NjViNzFmMzNiZDgwYzA1MTVjMTVlNTcuLjBhNjI4YzQ2NWRkNTY1YTI1NDk0MTNmMzY0
MDI3MTJlN2UyOTI2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wNS0wNyAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVw
IEtleWZyYW1lVmFsdWVMaXN0IGFuZCByZWxhdGVkIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTczOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBmb3IgV2ViQ29yZSBjaGFuZ2Vz
LgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKwog
MjAxMy0wNS0wNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHNvbWUgdW5uZWNlc3Nhcnkgc29mdCBsaW5raW5nIGluIE5ldHdvcmtQcm9jZXNzLiAo
VGFrZSAyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcAppbmRleCBjNzhiNWJlYjI2OGMxOGQyZmJlZTRmZjBlYWNmODA3MTQzYWNiZjA3
Li4wMWI2YTNmZDdhMmIwYTFmZmE0ZDZjZjU0NWFhZjBjNmU1MTdhODJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtNDA5
LDkgKzQwOSw5IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6ZGlzdHJpYnV0ZU9wYWNpdHkoZmxvYXQg
YWNjdW11bGF0ZWRPcGFjaXR5KQogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotc3RhdGlj
IGlubGluZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQorc3RhdGljIGlubGlu
ZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkp
LT52YWx1ZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSY+KHZhbHVlTGlzdC5hdChpbmRleCkpLnZhbHVlKCk7CiB9CiAKIGludCBHcmFwaGljc0xh
eWVyOjp2YWxpZGF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZh
bHVlTGlzdCkKQEAgLTQyNCwyMyArNDI0LDIzIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCkKICAg
ICAvLyBFbXB0eSBmaWx0ZXJzIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBub24t
ZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZQogICAgIHNpemVfdCBmaXJzdEluZGV4ID0gMDsK
ICAgICBmb3IgKCA7IGZpcnN0SW5kZXggPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2ZpcnN0SW5kZXgp
IHsKLSAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGZpcnN0SW5kZXgp
LT5vcGVyYXRpb25zKCkuc2l6ZSgpID4gMCkKKyAgICAgICAgaWYgKCFmaWx0ZXJPcGVyYXRpb25z
QXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS5vcGVyYXRpb25zKCkuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKGZpcnN0SW5kZXggPj0gdmFsdWVMaXN0LnNp
emUoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyog
Zmlyc3RWYWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KTsKKyAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaXJzdFZhbCA9IGZpbHRlck9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGZpcnN0SW5kZXgpOwogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdElu
ZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zKiB2YWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKKyAg
ICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdmFsID0gZmlsdGVyT3BlcmF0aW9uc0F0KHZh
bHVlTGlzdCwgaSk7CiAgICAgICAgIAogICAgICAgICAvLyBBbiBlbXRweSBmaWx0ZXIgbGlzdCBt
YXRjaGVzIGFueXRoaW5nLgotICAgICAgICBpZiAodmFsLT5vcGVyYXRpb25zKCkuaXNFbXB0eSgp
KQorICAgICAgICBpZiAodmFsLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRj
aCgqdmFsKSkKKyAgICAgICAgaWYgKCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAg
ICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgCkBAIC00NTIsOSArNDUyLDkgQEAgaW50
IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWVMaXN0KQogLy8gVGhlIGhhc0JpZ1JvdGF0aW9uIGZsYWcgd2lsbCBhbHdh
eXMgcmV0dXJuIGZhbHNlIGlmIGlzVmFsaWQgaXMgZmFsc2UuIE90aGVyd2lzZSBoYXNCaWdSb3Rh
dGlvbiBpcyAKIC8vIHRydWUgaWYgdGhlIHJvdGF0aW9uIGJldHdlZW4gYW55IHR3byBrZXlmcmFt
ZXMgaXMgPj0gMTgwIGRlZ3JlZXMuCiAKLXN0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9ucyogb3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3Qs
IHNpemVfdCBpbmRleCkKK3N0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYg
b3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIHNpemVfdCBp
bmRleCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUqPih2YWx1ZUxpc3QuYXQoaW5kZXgpKS0+dmFsdWUoKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoaW5kZXgp
KS52YWx1ZSgpOwogfQogCiBpbnQgR3JhcGhpY3NMYXllcjo6dmFsaWRhdGVUcmFuc2Zvcm1PcGVy
YXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGJvb2wmIGhhc0JpZ1Jv
dGF0aW9uKQpAQCAtNDY5LDI0ICs0NjksMjQgQEAgaW50IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRl
VHJhbnNmb3JtT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXMKICAg
ICAvLyBFbXB0eSB0cmFuc2Zvcm1zIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBu
b24tZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZS4KICAgICBzaXplX3QgZmlyc3RJbmRleCA9
IDA7CiAgICAgZm9yICggOyBmaXJzdEluZGV4IDwgdmFsdWVMaXN0LnNpemUoKTsgKytmaXJzdElu
ZGV4KSB7Ci0gICAgICAgIGlmIChvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS0+
b3BlcmF0aW9ucygpLnNpemUoKSA+IDApCisgICAgICAgIGlmICghb3BlcmF0aW9uc0F0KHZhbHVl
TGlzdCwgZmlyc3RJbmRleCkub3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAKICAgICBpZiAoZmlyc3RJbmRleCA+PSB2YWx1ZUxpc3Quc2l6ZSgp
KQogICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIAotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbnMqIGZpcnN0VmFsID0gb3BlcmF0aW9uc0F0KHZhbHVlTGlzdCwgZmlyc3RJbmRleCk7Cisg
ICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZmlyc3RWYWwgPSBvcGVyYXRpb25zQXQodmFs
dWVMaXN0LCBmaXJzdEluZGV4KTsKICAgICAKICAgICAvLyBTZWUgaWYgdGhlIGtleWZyYW1lcyBh
cmUgdmFsaWQuCiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0SW5kZXggKyAxOyBpIDwgdmFsdWVM
aXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZh
bCA9IG9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGkpOworICAgICAgICBjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKICAgICAgICAgCi0g
ICAgICAgIC8vIEFuIGVtdHB5IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCi0gICAg
ICAgIGlmICh2YWwtPm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCisgICAgICAgIC8vIEFuIGVtcHR5
IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCisgICAgICAgIGlmICh2YWwub3BlcmF0
aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0g
ICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRjaCgqdmFsKSkKKyAgICAgICAgaWYg
KCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAgICAgICAgICAgIHJldHVybiAtMTsK
ICAgICB9CiAKQEAgLTQ5NCwyMiArNDk0LDIyIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzCiAg
ICAgZG91YmxlIGxhc3RSb3RBbmdsZSA9IDAuMDsKICAgICBkb3VibGUgbWF4Um90QW5nbGUgPSAt
MS4wOwogICAgICAgICAKLSAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGZpcnN0VmFsLT5vcGVy
YXRpb25zKCkuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHR5cGUgPSBmaXJzdFZhbC0+b3BlcmF0aW9ucygpLmF0KGopLT5nZXRPcGVyYXRp
b25UeXBlKCk7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBmaXJzdFZhbC5vcGVyYXRpb25z
KCkuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHR5cGUgPSBmaXJzdFZhbC5vcGVyYXRpb25zKCkuYXQoaiktPmdldE9wZXJhdGlvblR5cGUo
KTsKICAgICAgICAgCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSByb3RhdGlvbiBlbnRyeSwgd2Ug
bmVlZCB0byBzZWUgaWYgYW55IGFuZ2xlIGRpZmZlcmVuY2VzIGFyZSA+PSAxODAgZGVnCiAgICAg
ICAgIGlmICh0eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1ggfHwKICAgICAgICAg
ICAgIHR5cGUgPT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWSB8fAogICAgICAgICAgICAg
dHlwZSA9PSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9aIHx8CiAgICAgICAgICAgICB0eXBl
ID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEKSB7Ci0gICAgICAgICAgICBsYXN0Um90
QW5nbGUgPSBzdGF0aWNfY2FzdDxSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihmaXJzdFZhbC0+
b3BlcmF0aW9ucygpLmF0KGopLmdldCgpKS0+YW5nbGUoKTsKKyAgICAgICAgICAgIGxhc3RSb3RB
bmdsZSA9IHN0YXRpY19jYXN0PFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KGZpcnN0VmFsLm9w
ZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChtYXhSb3RBbmdsZSA8IDApCiAgICAgICAgICAgICAgICAgbWF4Um90QW5nbGUgPSBm
YWJzKGxhc3RSb3RBbmdsZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBmaXJzdEluZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZhbCA9IG9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGkpOwotICAgICAgICAgICAgICAgIGRvdWJsZSByb3RBbmdsZSA9IHZhbC0+b3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLT5vcGVyYXRpb25zKCkuYXQoaikuZ2V0KCkpLT5hbmdsZSgpKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQo
dmFsdWVMaXN0LCBpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgcm90QW5nbGUgPSB2YWwub3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLm9wZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCkpOwogICAgICAg
ICAgICAgICAgIGRvdWJsZSBkaWZmQW5nbGUgPSBmYWJzKHJvdEFuZ2xlIC0gbGFzdFJvdEFuZ2xl
KTsKICAgICAgICAgICAgICAgICBpZiAoZGlmZkFuZ2xlID4gbWF4Um90QW5nbGUpCiAgICAgICAg
ICAgICAgICAgICAgIG1heFJvdEFuZ2xlID0gZGlmZkFuZ2xlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDEzMTFmYjZlYmM3ZDg0
ZTFhODIxMWQxYjc0ODk2YmUwYjQ0ZTU1MTUuLjE2ZGMwN2ZlYmI3YzhkODJlN2Q5MjdkNzYzYTdl
MDE1YmE4NzlmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTcyLDE4ICs3MiwxOSBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKIGNsYXNzIEFuaW1hdGlvblZhbHVlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBQ
YXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCi0gICAgICAgIDog
bV9rZXlUaW1lKGtleVRpbWUpCi0gICAgICAgICwgbV90aW1pbmdGdW5jdGlvbih0aW1pbmdGdW5j
dGlvbikKLSAgICB7Ci0gICAgfQotICAgIAogICAgIHZpcnR1YWwgfkFuaW1hdGlvblZhbHVlKCkg
eyB9CiAKICAgICBmbG9hdCBrZXlUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9rZXlUaW1lOyB9CiAg
ICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90aW1pbmdGdW5jdGlvbi5nZXQoKTsgfQogICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRp
b25WYWx1ZT4gY2xvbmUoKSBjb25zdCA9IDA7CiAKK3Byb3RlY3RlZDoKKyAgICBBbmltYXRpb25W
YWx1ZShmbG9hdCBrZXlUaW1lLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5j
dGlvbiA9IDApCisgICAgICAgIDogbV9rZXlUaW1lKGtleVRpbWUpCisgICAgICAgICwgbV90aW1p
bmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbikKKyAgICB7CisgICAgfQorCiBwcml2YXRlOgogICAg
IGZsb2F0IG1fa2V5VGltZTsKICAgICBSZWZQdHI8VGltaW5nRnVuY3Rpb24+IG1fdGltaW5nRnVu
Y3Rpb247CkBAIC05MywxNiArOTQsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUg
bW92ZWQgdG8gaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIEZsb2F0QW5pbWF0aW9uVmFsdWUg
OiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogcHVibGljOgotICAgIEZsb2F0QW5pbWF0aW9uVmFs
dWUoZmxvYXQga2V5VGltZSwgZmxvYXQgdmFsdWUsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+
IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0
aW1pbmdGdW5jdGlvbikKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHN0YXRpYyBQYXNz
T3duUHRyPEZsb2F0QW5pbWF0aW9uVmFsdWU+IGNyZWF0ZShmbG9hdCBrZXlUaW1lLCBmbG9hdCB2
YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24gPSAwKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093
blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKCp0aGlzKSk7CiAgICAg
fQotICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgqdGhpcykp
OyB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJp
dmF0ZToKKyAgICBGbG9hdEFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRpbWUsIGZsb2F0IHZhbHVl
LCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgOiBB
bmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgLCBtX3ZhbHVl
KHZhbHVlKQorICAgIHsKKyAgICB9CisKICAgICBmbG9hdCBtX3ZhbHVlOwogfTsKIApAQCAtMTEw
LDE3ICsxMjAsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRz
IG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGlj
IEFuaW1hdGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiB2YWx1ZSA9
IDAsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAg
ICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMg
UGFzc093blB0cjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUs
IGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlv
bikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xv
bmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKLSAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAg
ICAgbV92YWx1ZSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSgqdGhpcykpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICBj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7
IH0KIAogcHJpdmF0ZToKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1l
LCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5j
dGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFsdWUoa2V5VGltZSwg
dGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQor
CiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKIApAQCAtMTI5LDE3ICsxNDcs
MjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRzIG93biBoZWFk
ZXIgZmlsZS4KIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZh
bHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBGaWx0ZXJBbmltYXRpb25WYWx1ZShmbG9hdCBr
ZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWx1ZSA9IDAsIFBhc3NSZWZQdHI8VGlt
aW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1
ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMgUGFzc093blB0cjxGaWx0ZXJB
bmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUsIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDAp
CiAgICAgewotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICBtX3ZhbHVlID0gKnZhbHVl
OworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQ
dHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUoKnRo
aXMpKTsKKyAgICB9CisKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKKyAgICBGaWx0ZXJBbmltYXRpb25WYWx1
ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0
cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFs
dWUoa2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAg
ICB7CisgICAgfQorCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKICNlbmRpZgpA
QCAtMTYxLDYgKzE4NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQo
b3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOwogICAgIH0KIAorICAgIH5LZXlmcmFtZVZhbHVl
TGlzdCgpCisgICAgeworICAgIH0KKwogICAgIEtleWZyYW1lVmFsdWVMaXN0JiBvcGVyYXRvcj0o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKICAgICAgICAgS2V5ZnJhbWVW
YWx1ZUxpc3QgY29weShvdGhlcik7CkBAIC0xNzcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIEFu
aW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHk7IH0K
IAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOyB9Ci0g
ICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlcy5hdChpKS5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhdChzaXplX3Qg
aSkgY29uc3QgeyByZXR1cm4gKm1fdmFsdWVzLmF0KGkpOyB9CiAgICAgCiAgICAgLy8gSW5zZXJ0
LCBzb3J0ZWQgYnkga2V5VGltZS4KICAgICB2b2lkIGluc2VydChQYXNzT3duUHRyPGNvbnN0IEFu
aW1hdGlvblZhbHVlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCAyMTBiODFhYmQ3MjIxNDk0YWQ3ZGYy
NzUyNGZlMWMzOWU2ZDM3YTZjLi5mZmNhZDg3OTZlZjRmM2Y5YTkzYjdjY2E1Y2Q0MmM1ZTE3NmM3
NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTI0Miw5ICsyNDIsMTAgQEAgc3RhdGljIGJvb2wgYW5p
bWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFs
dWVMaXN0LAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRpbWluZ0Z1
bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHZhbHVlTGlzdC5hdChpKS0+dGltaW5nRnVuY3Rpb24o
KTsKLSAgICAgICAgaWYgKHRpbWluZ0Z1bmN0aW9uICYmIHRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBz
VGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAo
Y29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFsdWVMaXN0LmF0KGkpLnRp
bWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNTdGVw
c1RpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDkxLDcgKzIwOTIsNyBAQCBib29s
IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMo
Y29uc3QgS2V5ZnJhbWVWYWx1ZQogCiAgICAgYm9vbCBoYXNCaWdSb3RhdGlvbjsKICAgICBpbnQg
bGlzdEluZGV4ID0gdmFsaWRhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZhbHVlTGlzdCwgaGFzQmln
Um90YXRpb24pOwotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSAo
bGlzdEluZGV4ID49IDApID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFs
dWUqPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4KSktPnZhbHVlKCkgOiAwOworICAgIGNvbnN0IFRy
YW5zZm9ybU9wZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSAobGlzdEluZGV4ID49IDApID8gJnN0YXRp
Y19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KGxpc3RJ
bmRleCkpLnZhbHVlKCkgOiAwOwogCiAgICAgLy8gV2UgbmVlZCB0byBmYWxsIGJhY2sgdG8gc29m
dHdhcmUgYW5pbWF0aW9uIGlmIHdlIGRvbid0IGhhdmUgc2V0VmFsdWVGdW5jdGlvbjosIGFuZAog
ICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gYW5pbWF0ZSBlYWNoIGluY29taW5nIHRyYW5zZm9ybSBm
dW5jdGlvbiBzZXBhcmF0ZWx5LiBUaGlzIGlzIHRoZQpAQCAtMjE4MSwyMSArMjE4MiwyMSBAQCBi
b29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlRmlsdGVyQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMo
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpcwogICAgIGlmIChsaXN0SW5kZXggPCAwKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqIG9wZXJh
dGlvbnMgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlz
dC5hdChsaXN0SW5kZXgpKS0+dmFsdWUoKTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBv
cGVyYXRpb25zID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPih2YWx1
ZUxpc3QuYXQobGlzdEluZGV4KSkudmFsdWUoKTsKICAgICAvLyBNYWtlIHN1cmUgdGhlIHBsYXRm
b3JtIGxheWVyIGRpZG4ndCBmYWxsYmFjayB0byB1c2luZyBzb2Z0d2FyZSBmaWx0ZXIgY29tcG9z
aXRpbmcgaW5zdGVhZC4KLSAgICBpZiAoIVBsYXRmb3JtQ0FMYXllcjo6ZmlsdGVyc0NhbkJlQ29t
cG9zaXRlZCgqb3BlcmF0aW9ucykpCisgICAgaWYgKCFQbGF0Zm9ybUNBTGF5ZXI6OmZpbHRlcnND
YW5CZUNvbXBvc2l0ZWQob3BlcmF0aW9ucykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGludCBudW1BbmltYXRpb25zID0gb3BlcmF0aW9ucy0+c2l6ZSgpOworICAgIGludCBudW1Bbmlt
YXRpb25zID0gb3BlcmF0aW9ucy5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgY3Vy
cmVudGx5IGhhcmR3YXJlIGFuaW1hdGUgc2hhZG93cy4KICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICBpZiAob3BlcmF0aW9ucy0+YXQoaSktPmdl
dE9wZXJhdGlvblR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XKQorICAgICAg
ICBpZiAob3BlcmF0aW9ucy5hdChpKS0+Z2V0T3BlcmF0aW9uVHlwZSgpID09IEZpbHRlck9wZXJh
dGlvbjo6RFJPUF9TSEFET1cpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgZm9yIChpbnQgYW5pbWF0aW9uSW5kZXggPSAwOyBhbmltYXRpb25JbmRleCA8IG51bUFuaW1h
dGlvbnM7ICsrYW5pbWF0aW9uSW5kZXgpIHsKLSAgICAgICAgaWYgKCFhcHBlbmRUb1VuY29tbWl0
dGVkQW5pbWF0aW9ucyh2YWx1ZUxpc3QsIG9wZXJhdGlvbnMtPm9wZXJhdGlvbnMoKS5hdChhbmlt
YXRpb25JbmRleCkuZ2V0KCksIGFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgYW5pbWF0aW9uSW5k
ZXgsIHRpbWVPZmZzZXQpKQorICAgICAgICBpZiAoIWFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRp
b25zKHZhbHVlTGlzdCwgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXQoYW5pbWF0aW9uSW5kZXgp
LmdldCgpLCBhbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIGFuaW1hdGlvbkluZGV4LCB0aW1lT2Zm
c2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTIyNTMsMTIgKzIy
NTQsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FB
bmltYXRpb24qIHByb3BlcnR5QW5pbSwgY29uc3QgQW4KICAgICBwcm9wZXJ0eUFuaW0tPnNldEZp
bGxNb2RlKGZpbGxNb2RlKTsKIH0KIAotY29uc3QgVGltaW5nRnVuY3Rpb24qIEdyYXBoaWNzTGF5
ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1
ZSogYW5pbVZhbHVlLCBjb25zdCBBbmltYXRpb24qIGFuaW0pCitjb25zdCBUaW1pbmdGdW5jdGlv
biogR3JhcGhpY3NMYXllckNBOjp0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0
IEFuaW1hdGlvblZhbHVlJiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbSkKIHsKLSAg
ICBpZiAoYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gYW5pbVZh
bHVlLT50aW1pbmdGdW5jdGlvbigpOwotICAgIGlmIChhbmltLT5pc1RpbWluZ0Z1bmN0aW9uU2V0
KCkpCi0gICAgICAgIHJldHVybiBhbmltLT50aW1pbmdGdW5jdGlvbigpLmdldCgpOworICAgIGlm
IChhbmltVmFsdWUudGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGFuaW1WYWx1ZS50
aW1pbmdGdW5jdGlvbigpOworICAgIGlmIChhbmltLmlzVGltaW5nRnVuY3Rpb25TZXQoKSkKKyAg
ICAgICAgcmV0dXJuIGFuaW0udGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKICAgICAKICAgICByZXR1
cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6ZGVmYXVsdFRpbWluZ0Z1bmN0aW9uKCk7CiB9
CkBAIC0yMjcyLDggKzIyNzMsOCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9u
RW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsCiAgICAgCiAgICAg
c3dpdGNoICh2YWx1ZUxpc3QucHJvcGVydHkoKSkgewogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0
eU9wYWNpdHk6IHsKLSAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUoc3RhdGljX2Nhc3Q8
Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKS0+dmFs
dWUoKSk7Ci0gICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZShzdGF0aWNfY2FzdDxjb25zdCBG
bG9hdEFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKS0+dmFsdWUoKSk7Cisg
ICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5p
bWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSkudmFsdWUoKSk7CisgICAgICAg
IGJhc2ljQW5pbS0+c2V0VG9WYWx1ZShzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZh
bHVlJj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKS52YWx1ZSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGRlZmF1bHQ6CkBAIC0yMjgzLDcgKzIyODQsNyBAQCBib29sIEdyYXBoaWNzTGF5
ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZUxpc3QsCiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUgYW5p
bWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAogICAgIC8vIGZv
ciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5nIGFuaW1hdGlvbiBjYXNl
LCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBmdW5jdGlvbi4KLSAgICBj
b25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFu
aW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKTsKKyAgICBjb25zdCBUaW1p
bmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZh
bHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbik7CiAgICAgaWYgKHRpbWluZ0Z1bmN0aW9u
KQogICAgICAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uLCAh
Zm9yd2FyZHMpOwogCkBAIC0yMzAwLDEzICsyMzAxLDEzIEBAIGJvb2wgR3JhcGhpY3NMYXllckNB
OjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlz
dCwKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsg
KytpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gZm9yd2FyZHMgPyBpIDogKHZhbHVlTGlz
dC5zaXplKCkgLSBpIC0gMSk7Ci0gICAgICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlKiBjdXJWYWx1
ZSA9IHZhbHVlTGlzdC5hdChpbmRleCk7Ci0gICAgICAgIGtleVRpbWVzLmFwcGVuZChmb3J3YXJk
cyA/IGN1clZhbHVlLT5rZXlUaW1lKCkgOiAoMSAtIGN1clZhbHVlLT5rZXlUaW1lKCkpKTsKKyAg
ICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIGN1clZhbHVlID0gdmFsdWVMaXN0LmF0KGluZGV4
KTsKKyAgICAgICAga2V5VGltZXMuYXBwZW5kKGZvcndhcmRzID8gY3VyVmFsdWUua2V5VGltZSgp
IDogKDEgLSBjdXJWYWx1ZS5rZXlUaW1lKCkpKTsKIAogICAgICAgICBzd2l0Y2ggKHZhbHVlTGlz
dC5wcm9wZXJ0eSgpKSB7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsK
LSAgICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqIGZsb2F0VmFsdWUgPSBzdGF0
aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4oY3VyVmFsdWUpOwotICAgICAgICAg
ICAgdmFsdWVzLmFwcGVuZChmbG9hdFZhbHVlLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGNvbnN0
IEZsb2F0QW5pbWF0aW9uVmFsdWUmIGZsb2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGbG9h
dEFuaW1hdGlvblZhbHVlJj4oY3VyVmFsdWUpOworICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChm
bG9hdFZhbHVlLnZhbHVlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgZGVmYXVsdDoKQEAgLTIzMTUsNyArMjMxNiw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpz
ZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAg
ICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksIGFu
aW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5j
dGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQo
aW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwogICAgIH0KICAgICAKICAgICBrZXlmcmFtZUFuaW0t
PnNldEtleVRpbWVzKGtleVRpbWVzKTsKQEAgLTIzMzQsMTMgKzIzMzUsMTMgQEAgYm9vbCBHcmFw
aGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYgdmEKICAgICB1bnNpZ25lZCBmcm9tSW5kZXggPSAhZm9yd2FyZHM7CiAgICAg
dW5zaWduZWQgdG9JbmRleCA9IGZvcndhcmRzOwogICAgIAotICAgIGNvbnN0IFRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlKiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5p
bWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7Ci0gICAgY29uc3QgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUqIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOworICAgIGNvbnN0IFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlJiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7CisgICAgY29uc3Qg
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOwogICAgIAogICAg
IGlmIChpc01hdHJpeEFuaW1hdGlvbikgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBm
cm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsKLSAgICAgICAgc3RhcnRWYWx1ZS0+dmFsdWUoKS0+
YXBwbHkoYm94U2l6ZSwgZnJvbVRyYW5zZm9ybSk7Ci0gICAgICAgIGVuZFZhbHVlLT52YWx1ZSgp
LT5hcHBseShib3hTaXplLCB0b1RyYW5zZm9ybSk7CisgICAgICAgIHN0YXJ0VmFsdWUudmFsdWUo
KS5hcHBseShib3hTaXplLCBmcm9tVHJhbnNmb3JtKTsKKyAgICAgICAgZW5kVmFsdWUudmFsdWUo
KS5hcHBseShib3hTaXplLCB0b1RyYW5zZm9ybSk7CiAKICAgICAgICAgLy8gSWYgYW55IG1hdHJp
eCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwgYmFj
ayB0byBzb2Z0d2FyZSBhbmltYXRpb24KICAgICAgICAgaWYgKCFmcm9tVHJhbnNmb3JtLmlzSW52
ZXJ0aWJsZSgpIHx8ICF0b1RyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKQEAgLTIzNTEsMzQgKzIz
NTIsMzQgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBv
aW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICB9IGVsc2UgewogICAgICAgICBp
ZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9wVHlwZSkpIHsKICAgICAgICAgICAg
IGZsb2F0IGZyb21WYWx1ZTsKLSAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUo
c3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwg
Ym94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFs
dWUoc3RhcnRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUs
IGJveFNpemUsIGZyb21WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldEZyb21WYWx1
ZShmcm9tVmFsdWUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmbG9hdCB0b1ZhbHVlOwot
ICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRWYWx1ZS0+dmFsdWUoKS0+
YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdG9WYWx1ZSk7Cisg
ICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLnZhbHVlKCkuYXQo
ZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdG9WYWx1ZSk7CiAgICAg
ICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodG9WYWx1ZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoaXNUcmFuc2Zvcm1UeXBlRmxvYXRQb2ludDNEKHRyYW5zZm9ybU9wVHlwZSkpIHsKICAgICAg
ICAgICAgIEZsb2F0UG9pbnQzRCBmcm9tVmFsdWU7Ci0gICAgICAgICAgICBnZXRUcmFuc2Zvcm1G
dW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFu
c2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zv
cm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4KSwgdHJh
bnNmb3JtT3BUeXBlLCBib3hTaXplLCBmcm9tVmFsdWUpOwogICAgICAgICAgICAgYmFzaWNBbmlt
LT5zZXRGcm9tVmFsdWUoZnJvbVZhbHVlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgRmxv
YXRQb2ludDNEIHRvVmFsdWU7Ci0gICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVl
KGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBi
b3hTaXplLCB0b1ZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUo
ZW5kVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hT
aXplLCB0b1ZhbHVlKTsKICAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1ZhbHVl
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZy
b21WYWx1ZTsKLSAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1
ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwg
ZnJvbVZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRW
YWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUs
IGZyb21WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldEZyb21WYWx1ZShmcm9tVmFs
dWUpOwogCiAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0b1ZhbHVlOwotICAgICAg
ICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVu
Y3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdG9WYWx1ZSk7CisgICAgICAg
ICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rp
b25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdG9WYWx1ZSk7CiAgICAgICAgICAg
ICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodG9WYWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28g
d2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAogICAgIC8vIGZvciBhIHRpbWluZyBm
dW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5nIGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qg
a2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBmdW5jdGlvbi4KLSAgICBjb25zdCBUaW1pbmdG
dW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVl
KHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKTsKKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiog
dGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlz
dC5hdCgwKSwgKmFuaW1hdGlvbik7CiAgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0
aW1pbmdGdW5jdGlvbiwgIWZvcndhcmRzKTsKIAogICAgIFBsYXRmb3JtQ0FBbmltYXRpb246OlZh
bHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb24gPSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRy
YW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcFR5cGUpOwpAQCAtMjQwMCwxMiArMjQwMSwxMiBA
QCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGZvcndh
cmRzID8gaSA6ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gaSAtIDEpOwotICAgICAgICBjb25zdCBUcmFu
c2Zvcm1BbmltYXRpb25WYWx1ZSogY3VyVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkpOwotICAgICAgICBrZXlUaW1l
cy5hcHBlbmQoZm9yd2FyZHMgPyBjdXJWYWx1ZS0+a2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS0+
a2V5VGltZSgpKSk7CisgICAgICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBjdXJW
YWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFsdWVM
aXN0LmF0KGluZGV4KSk7CisgICAgICAgIGtleVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/IGN1clZh
bHVlLmtleVRpbWUoKSA6ICgxIC0gY3VyVmFsdWUua2V5VGltZSgpKSk7CiAKICAgICAgICAgaWYg
KGlzTWF0cml4QW5pbWF0aW9uKSB7CiAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
cmFuc2Zvcm07Ci0gICAgICAgICAgICBjdXJWYWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwg
dHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGN1clZhbHVlLnZhbHVlKCkuYXBwbHkoYm94U2l6ZSwg
dHJhbnNmb3JtKTsKIAogICAgICAgICAgICAgLy8gSWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwg
Q0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBh
bmltYXRpb24KICAgICAgICAgICAgIGlmICghdHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQpAQCAt
MjQxMyw3ICsyNDE0LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1h
dGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKIAogICAgICAgICAgICAg
dHJhbnNmb3JtYXRpb25NYXRyaXhWYWx1ZXMuYXBwZW5kKHRyYW5zZm9ybSk7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybU9w
ID0gY3VyVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpOworICAgICAgICAgICAgY29u
c3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCA9IGN1clZhbHVlLnZhbHVlKCkuYXQo
ZnVuY3Rpb25JbmRleCk7CiAgICAgICAgICAgICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRy
YW5zZm9ybU9wVHlwZSkpIHsKICAgICAgICAgICAgICAgICBmbG9hdCB2YWx1ZTsKICAgICAgICAg
ICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHRyYW5zZm9ybU9wLCB0cmFuc2Zvcm1P
cFR5cGUsIGJveFNpemUsIHZhbHVlKTsKQEAgLTI0MzAsNyArMjQzMSw3IEBAIGJvb2wgR3JhcGhp
Y3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVW
YWx1ZUxpc3QmIHZhCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaSA8ICh2YWx1ZUxpc3Quc2l6
ZSgpIC0gMSkpCi0gICAgICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChp
bmRleCAtIDEpLCBhbmltYXRpb24pKTsKKyAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBl
bmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDog
dmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKICAgICB9CiAgICAgCiAgICAg
a2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlUaW1lcyk7CkBAIC0yNDYxLDExICsyNDYyLDEx
IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRpb25FbmRwb2ludHMoY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlCiAgICAgdW5zaWduZWQgZnJvbUluZGV4ID0gIWZv
cndhcmRzOwogICAgIHVuc2lnbmVkIHRvSW5kZXggPSBmb3J3YXJkczsKIAotICAgIGNvbnN0IEZp
bHRlckFuaW1hdGlvblZhbHVlKiBmcm9tVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJB
bmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKTsKLSAgICBjb25zdCBGaWx0
ZXJBbmltYXRpb25WYWx1ZSogdG9WYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1h
dGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKTsKKyAgICBjb25zdCBGaWx0ZXJBbmlt
YXRpb25WYWx1ZSYgZnJvbVZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9u
VmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7CisgICAgY29uc3QgRmlsdGVyQW5pbWF0
aW9uVmFsdWUmIHRvVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1
ZSY+KHZhbHVlTGlzdC5hdCh0b0luZGV4KSk7CiAKLSAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24q
IGZyb21PcGVyYXRpb24gPSBmcm9tVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpOwot
ICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogdG9PcGVyYXRpb24gPSB0b1ZhbHVlLT52YWx1ZSgp
LT5hdChmdW5jdGlvbkluZGV4KTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb21PcGVy
YXRpb24gPSBmcm9tVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4KTsKKyAgICBjb25zdCBG
aWx0ZXJPcGVyYXRpb24qIHRvT3BlcmF0aW9uID0gdG9WYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9u
SW5kZXgpOwogCiAgICAgUmVmUHRyPERlZmF1bHRGaWx0ZXJPcGVyYXRpb24+IGRlZmF1bHRGcm9t
T3BlcmF0aW9uOwogICAgIFJlZlB0cjxEZWZhdWx0RmlsdGVyT3BlcmF0aW9uPiBkZWZhdWx0VG9P
cGVyYXRpb247CkBAIC0yNDg3LDcgKzI0ODgsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
RmlsdGVyQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZQog
CiAgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZvciAyLWtleWZyYW1lIGFuaW1hdGlvbnMs
IHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUgc3RhcnQKICAgICAvLyBmb3IgYSB0aW1p
bmcgZnVuY3Rpb24uIEV2ZW4gaW4gdGhlIHJldmVyc2luZyBhbmltYXRpb24gY2FzZSwgdGhlIGZp
cnN0IGtleWZyYW1lIHByb3ZpZGVzIHRoZSB0aW1pbmcgZnVuY3Rpb24uCi0gICAgYmFzaWNBbmlt
LT5zZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVl
TGlzdC5hdCgwKSwgYW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKKyAgICBiYXNpY0FuaW0tPnNldFRp
bWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0
KDApLCAqYW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
MjUwMywxMSArMjUwNCwxMSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0
aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZQogCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICB1bnNp
Z25lZCBpbmRleCA9IGZvcndhcmRzID8gaSA6ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gaSAtIDEpOwot
ICAgICAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSogY3VyVmFsdWUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkpOwotICAg
ICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2FyZHMgPyBjdXJWYWx1ZS0+a2V5VGltZSgpIDogKDEg
LSBjdXJWYWx1ZS0+a2V5VGltZSgpKSk7CisgICAgICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZh
bHVlJiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJj4o
dmFsdWVMaXN0LmF0KGluZGV4KSk7CisgICAgICAgIGtleVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/
IGN1clZhbHVlLmtleVRpbWUoKSA6ICgxIC0gY3VyVmFsdWUua2V5VGltZSgpKSk7CiAKLSAgICAg
ICAgaWYgKGN1clZhbHVlLT52YWx1ZSgpLT5vcGVyYXRpb25zKCkuc2l6ZSgpID4gc3RhdGljX2Nh
c3Q8c2l6ZV90PihmdW5jdGlvbkluZGV4KSkKLSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoY3Vy
VmFsdWUtPnZhbHVlKCktPm9wZXJhdGlvbnMoKVtmdW5jdGlvbkluZGV4XSk7CisgICAgICAgIGlm
IChjdXJWYWx1ZS52YWx1ZSgpLm9wZXJhdGlvbnMoKS5zaXplKCkgPiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGZ1bmN0aW9uSW5kZXgpKQorICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChjdXJWYWx1ZS52
YWx1ZSgpLm9wZXJhdGlvbnMoKVtmdW5jdGlvbkluZGV4XSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgaWYgKCFkZWZhdWx0T3BlcmF0aW9uKQogICAgICAgICAgICAgICAgIGRlZmF1bHRP
cGVyYXRpb24gPSBEZWZhdWx0RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoZmlsdGVyT3ApOwpAQCAt
MjUxNSw3ICsyNTE2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlv
bktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWlu
Z0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJk
cyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksIGFuaW1hdGlvbikpOworICAg
ICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlv
blZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFu
aW1hdGlvbikpOwogICAgIH0KICAgICAKICAgICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtl
eVRpbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgKaW5kZXggMDJjMDIyN2U5OGM2YzUyZTg5NDNhZGFiZGQ4ZTBjOTRh
NjE0YTUyMC4uMDljY2NlNDUxZjc2MTUyNzczNjMzY2FlYTA5MTQ2OTRlNjFkZWQ0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmgKQEAgLTIwNSw3ICsyMDUsNyBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7CiAgICAgdm9pZCBzZXR1cEFuaW1hdGlvbihQ
bGF0Zm9ybUNBQW5pbWF0aW9uKiwgY29uc3QgQW5pbWF0aW9uKiwgYm9vbCBhZGRpdGl2ZSk7CiAg
ICAgCi0gICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9u
VmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqLCBjb25zdCBBbmltYXRpb24qKTsKKyAgICBjb25z
dCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBB
bmltYXRpb25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwogICAgIAogICAgIGJvb2wgc2V0QW5p
bWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9u
KiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOwogICAgIGJvb2wgc2V0QW5pbWF0aW9uS2V5ZnJhbWVz
KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFu
aW1hdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAppbmRleCAxZGVmYjUyYjM0YWE4MzlhOTQzM2ZmYjQwMDNmMTE1NDFmOTAxZTg5Li42
NDE5ZTBjYmJmMWQ5ZmJlMDYwMjAwOGY3ZjY4NTE5NmNhOTgzOGNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMjEwNywxNCArMjEw
NywxNCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24oZG91YmxlIHRp
bWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiogYW5pbQogICAgICAgICAKICAgICAgICAgYm9vbCBp
c0ZpcnN0T3JMYXN0S2V5ZnJhbWUgPSBrZXkgPT0gMCB8fCBrZXkgPT0gMTsKICAgICAgICAgaWYg
KChoYXNUcmFuc2Zvcm0gJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJh
bWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSkpCi0gICAgICAg
ICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZShrZXksICYoa2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCkpLCB0ZikpKTsKLSAgICAg
ICAgCisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlOjpjcmVhdGUoa2V5LCBrZXlmcmFtZVN0eWxlLT50cmFuc2Zvcm0oKSwgdGYpKTsKKwog
ICAgICAgICBpZiAoKGhhc09wYWNpdHkgJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJy
ZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHkpKQotICAgICAg
ICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IEZsb2F0QW5pbWF0aW9uVmFs
dWUoa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSkpOworICAgICAgICAgICAgb3Bh
Y2l0eVZlY3Rvci5pbnNlcnQoRmxvYXRBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleSwga2V5ZnJh
bWVTdHlsZS0+b3BhY2l0eSgpLCB0ZikpOwogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAg
ICAgICBpZiAoKGhhc0ZpbHRlciAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRL
ZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0RmlsdGVyKSkKLSAgICAg
ICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZh
bHVlKGtleSwgJihrZXlmcmFtZVN0eWxlLT5maWx0ZXIoKSksIHRmKSkpOworICAgICAgICAgICAg
ZmlsdGVyVmVjdG9yLmluc2VydChGaWx0ZXJBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleSwga2V5
ZnJhbWVTdHlsZS0+ZmlsdGVyKCksIHRmKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTIxNTQsOCAr
MjE1NCw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91Ymxl
IHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlv
biogb3BhY2l0eUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVy
dHlPcGFjaXR5KTsKICAgICAgICAgaWYgKG9wYWNpdHlBbmltICYmICFvcGFjaXR5QW5pbS0+aXNF
bXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IG9w
YWNpdHlWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAgICAgICAgICAgb3BhY2l0
eVZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IEZsb2F0QW5pbWF0aW9uVmFsdWUoMCwgY29tcG9z
aXRpbmdPcGFjaXR5KGZyb21TdHlsZS0+b3BhY2l0eSgpKSkpKTsKLSAgICAgICAgICAgIG9wYWNp
dHlWZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKDEsIGNvbXBv
c2l0aW5nT3BhY2l0eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSkpOworICAgICAgICAgICAgb3BhY2l0
eVZlY3Rvci5pbnNlcnQoRmxvYXRBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKDAsIGNvbXBvc2l0aW5n
T3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0
b3IuaW5zZXJ0KEZsb2F0QW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgxLCBjb21wb3NpdGluZ09wYWNp
dHkodG9TdHlsZS0+b3BhY2l0eSgpKSkpOwogICAgICAgICAgICAgLy8gVGhlIGJveFNpemUgcGFy
YW0gaXMgb25seSB1c2VkIGZvciB0cmFuc2Zvcm0gYW5pbWF0aW9ucyAod2hpY2ggY2FuIG9ubHkg
cnVuIG9uIFJlbmRlckJveGVzKSwgc28gd2UgcGFzcyBhbiBlbXB0eSBzaXplIGhlcmUuCiAgICAg
ICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24ob3BhY2l0eVZlY3Rvciwg
SW50U2l6ZSgpLCBvcGFjaXR5QW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRy
YW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpLCB0aW1lT2Zmc2V0KSkgewogICAgICAg
ICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IG9wYWNpdHkgaXMgdmlzaWJs
ZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIG9wYWNpdHkuCkBA
IC0yMTY5LDggKzIxNjksOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0
aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25z
dCBBbmltYXRpb24qIHRyYW5zZm9ybUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVy
dHkoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwogICAgICAgICBpZiAodHJhbnNmb3JtQW5p
bSAmJiAhdHJhbnNmb3JtQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAg
ICAgIEtleWZyYW1lVmFsdWVMaXN0IHRyYW5zZm9ybVZlY3RvcihBbmltYXRlZFByb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoYWRvcHRQ
dHIobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDAsICZmcm9tU3R5bGUtPnRyYW5zZm9ybSgp
KSkpOwotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUoMSwgJnRvU3R5bGUtPnRyYW5zZm9ybSgpKSkpOworICAgICAg
ICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZTo6Y3Jl
YXRlKDAsIGZyb21TdHlsZS0+dHJhbnNmb3JtKCkpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZl
Y3Rvci5pbnNlcnQoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgxLCB0b1N0eWxlLT50
cmFuc2Zvcm0oKSkpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0
aW9uKHRyYW5zZm9ybVZlY3RvciwgdG9SZW5kZXJCb3gocmVuZGVyZXIoKSktPnBpeGVsU25hcHBl
ZEJvcmRlckJveFJlY3QoKS5zaXplKCksIHRyYW5zZm9ybUFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFu
aW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0p
LCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBj
b3JyZWN0IHRyYW5zZm9ybSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNv
IHNldCB0aGUgZmluYWwgdHJhbnNmb3JtLgogICAgICAgICAgICAgICAgIHVwZGF0ZVRyYW5zZm9y
bSh0b1N0eWxlKTsKQEAgLTIxODQsOCArMjE4NCw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5n
OjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVy
CiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogZmlsdGVyQW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRp
b25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEZpbHRlcik7CiAgICAgICAgIGlmIChmaWx0
ZXJBbmltICYmICFmaWx0ZXJBbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAg
ICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgZmlsdGVyVmVjdG9yKEFuaW1hdGVkUHJvcGVydHlXZWJr
aXRGaWx0ZXIpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcg
RmlsdGVyQW5pbWF0aW9uVmFsdWUoMCwgJmZyb21TdHlsZS0+ZmlsdGVyKCkpKSk7Ci0gICAgICAg
ICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGaWx0ZXJBbmltYXRpb25WYWx1
ZSgxLCAmdG9TdHlsZS0+ZmlsdGVyKCkpKSk7CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5z
ZXJ0KEZpbHRlckFuaW1hdGlvblZhbHVlOjpjcmVhdGUoMCwgZnJvbVN0eWxlLT5maWx0ZXIoKSkp
OworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChGaWx0ZXJBbmltYXRpb25WYWx1ZTo6
Y3JlYXRlKDEsIHRvU3R5bGUtPmZpbHRlcigpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGlj
c0xheWVyLT5hZGRBbmltYXRpb24oZmlsdGVyVmVjdG9yLCBJbnRTaXplKCksIGZpbHRlckFuaW0s
IEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVy
dHlXZWJraXRGaWx0ZXIpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVu
c3VyZSB0aGF0IHRoZSBjb3JyZWN0IGZpbHRlciBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlv
biBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgZmlsdGVyLgogICAgICAgICAgICAgICAgIHVwZGF0
ZUZpbHRlcnModG9TdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA0MTEwNzMwODljYzU1M2ZjNzkxNDgxOWE2MGVk
ZTE3OTY0Y2FhNzllLi4xYmFkYWJiOGMzMWNiZGUxZmZiNDQzZmI4NjAxMzRiOTRjNzExOTA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVy
cy5jcHAKQEAgLTczMywxNCArNzMzLDE0IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxHcmFwaGljc0xh
eWVyQW5pbWF0aW9uPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgR3JhCiAgICAg
ICAgICAgICBmbG9hdCB2YWx1ZTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFs
dWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGtleWZyYW1l
cy5pbnNlcnQoYWRvcHRQdHIobmV3IEZsb2F0QW5pbWF0aW9uVmFsdWUoa2V5VGltZSwgdmFsdWUs
IHRpbWluZ0Z1bmN0aW9uKSkpOworICAgICAgICAgICAga2V5ZnJhbWVzLmluc2VydChGbG9hdEFu
aW1hdGlvblZhbHVlOjpjcmVhdGUoa2V5VGltZSwgdmFsdWUsIHRpbWluZ0Z1bmN0aW9uKSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBbmltYXRlZFByb3Bl
cnR5V2Via2l0VHJhbnNmb3JtOiB7CiAgICAgICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIHRy
YW5zZm9ybTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHJhbnNmb3JtKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBrZXlmcmFtZXMuaW5zZXJ0
KGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShrZXlUaW1lLCAmdHJhbnNmb3Jt
LCB0aW1pbmdGdW5jdGlvbikpKTsKKyAgICAgICAgICAgIGtleWZyYW1lcy5pbnNlcnQoVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXlUaW1lLCB0cmFuc2Zvcm0sIHRpbWluZ0Z1bmN0
aW9uKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoQ1NTX0ZJ
TFRFUlMpCkBAIC03NDgsNyArNzQ4LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEdyYXBoaWNzTGF5
ZXJBbmltYXRpb24+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBHcmEKICAgICAg
ICAgICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShmaWx0ZXIpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIGtleWZyYW1lcy5pbnNlcnQoYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKGtl
eVRpbWUsICZmaWx0ZXIsIHRpbWluZ0Z1bmN0aW9uKSkpOworICAgICAgICAgICAga2V5ZnJhbWVz
Lmluc2VydChGaWx0ZXJBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleVRpbWUsIGZpbHRlciwgdGlt
aW5nRnVuY3Rpb24pKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200935</attachid>
            <date>2013-05-07 11:02:09 -0700</date>
            <delta_ts>2013-05-07 11:17:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115738-20130507110115.patch</filename>
            <type>text/plain</type>
            <size>42848</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmYzMGI4M2ExOTVhN2U4
NzNjZWRlNzE0NzE2ODkwMjRlMDdjZWZlYS4uNGY1NGQyMWI2NTUzOWMzNWM4NGY4YWVlMDQxNzMy
ZThiOTUzN2FlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTA1LTA3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgS2V5
ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN0YXRpYyBjcmVhdGUoKSBmdW5jdGlvbnMg
dG8gdGhlIEFuaW1hdGlvblZhbHVlIHN1YmNsYXNzZXMsIGFuZCBjaGFuZ2UgYSBidW5jaCBvZiBw
YXJhbWV0ZXJzCisgICAgICAgIGFuZCByZXR1cm4gdmFsdWVzIHRoYXQgY2FuIG5ldmVyIGJlIG51
bGwgZnJvbSBwb2ludGVyIHR5cGVzIHRvIHJlZmVyZW5jZSB0eXBlcyB0byBiZXR0ZXIgaW5kaWNh
dGUgdGhpcy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJPcGVyYXRpb25zQXQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dmFsaWRhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdGlvbnNBdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjp2YWxpZGF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKEFuaW1hdGlvblZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblZhbHVlOjpBbmltYXRpb25WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoRmxvYXRB
bmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpG
bG9hdEFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OnZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckFuaW1hdGlvblZhbHVlOjp2YWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6RmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoRmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVW
YWx1ZUxpc3Q6On5LZXlmcmFtZVZhbHVlTGlzdCk6CisgICAgICAgIChLZXlmcmFtZVZhbHVlTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6YXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVGaWx0ZXJBbmltYXRp
b25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRp
b25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0
ZXJBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAoR3JhcGhpY3NMYXllckNBKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorCiAyMDEzLTA1LTA2ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBhbiAnaXNSZWFkT25seScgbWVt
YmVyIHRvIElETCBwYXJzZSB0cmVlIHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUzNjgxNDU2NGY4
NmRjYjQ3NjViNzFmMzNiZDgwYzA1MTVjMTVlNTcuLjBhNjI4YzQ2NWRkNTY1YTI1NDk0MTNmMzY0
MDI3MTJlN2UyOTI2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wNS0wNyAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVw
IEtleWZyYW1lVmFsdWVMaXN0IGFuZCByZWxhdGVkIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTczOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBmb3IgV2ViQ29yZSBjaGFuZ2Vz
LgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKwog
MjAxMy0wNS0wNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHNvbWUgdW5uZWNlc3Nhcnkgc29mdCBsaW5raW5nIGluIE5ldHdvcmtQcm9jZXNzLiAo
VGFrZSAyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcAppbmRleCBjNzhiNWJlYjI2OGMxOGQyZmJlZTRmZjBlYWNmODA3MTQzYWNiZjA3
Li4wMWI2YTNmZDdhMmIwYTFmZmE0ZDZjZjU0NWFhZjBjNmU1MTdhODJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtNDA5
LDkgKzQwOSw5IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6ZGlzdHJpYnV0ZU9wYWNpdHkoZmxvYXQg
YWNjdW11bGF0ZWRPcGFjaXR5KQogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotc3RhdGlj
IGlubGluZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQorc3RhdGljIGlubGlu
ZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkp
LT52YWx1ZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSY+KHZhbHVlTGlzdC5hdChpbmRleCkpLnZhbHVlKCk7CiB9CiAKIGludCBHcmFwaGljc0xh
eWVyOjp2YWxpZGF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZh
bHVlTGlzdCkKQEAgLTQyNCwyMyArNDI0LDIzIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCkKICAg
ICAvLyBFbXB0eSBmaWx0ZXJzIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBub24t
ZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZQogICAgIHNpemVfdCBmaXJzdEluZGV4ID0gMDsK
ICAgICBmb3IgKCA7IGZpcnN0SW5kZXggPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2ZpcnN0SW5kZXgp
IHsKLSAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGZpcnN0SW5kZXgp
LT5vcGVyYXRpb25zKCkuc2l6ZSgpID4gMCkKKyAgICAgICAgaWYgKCFmaWx0ZXJPcGVyYXRpb25z
QXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS5vcGVyYXRpb25zKCkuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKGZpcnN0SW5kZXggPj0gdmFsdWVMaXN0LnNp
emUoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyog
Zmlyc3RWYWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KTsKKyAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaXJzdFZhbCA9IGZpbHRlck9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGZpcnN0SW5kZXgpOwogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdElu
ZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zKiB2YWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKKyAg
ICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdmFsID0gZmlsdGVyT3BlcmF0aW9uc0F0KHZh
bHVlTGlzdCwgaSk7CiAgICAgICAgIAogICAgICAgICAvLyBBbiBlbXRweSBmaWx0ZXIgbGlzdCBt
YXRjaGVzIGFueXRoaW5nLgotICAgICAgICBpZiAodmFsLT5vcGVyYXRpb25zKCkuaXNFbXB0eSgp
KQorICAgICAgICBpZiAodmFsLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRj
aCgqdmFsKSkKKyAgICAgICAgaWYgKCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAg
ICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgCkBAIC00NTIsOSArNDUyLDkgQEAgaW50
IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWVMaXN0KQogLy8gVGhlIGhhc0JpZ1JvdGF0aW9uIGZsYWcgd2lsbCBhbHdh
eXMgcmV0dXJuIGZhbHNlIGlmIGlzVmFsaWQgaXMgZmFsc2UuIE90aGVyd2lzZSBoYXNCaWdSb3Rh
dGlvbiBpcyAKIC8vIHRydWUgaWYgdGhlIHJvdGF0aW9uIGJldHdlZW4gYW55IHR3byBrZXlmcmFt
ZXMgaXMgPj0gMTgwIGRlZ3JlZXMuCiAKLXN0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9ucyogb3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3Qs
IHNpemVfdCBpbmRleCkKK3N0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYg
b3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIHNpemVfdCBp
bmRleCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUqPih2YWx1ZUxpc3QuYXQoaW5kZXgpKS0+dmFsdWUoKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoaW5kZXgp
KS52YWx1ZSgpOwogfQogCiBpbnQgR3JhcGhpY3NMYXllcjo6dmFsaWRhdGVUcmFuc2Zvcm1PcGVy
YXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGJvb2wmIGhhc0JpZ1Jv
dGF0aW9uKQpAQCAtNDY5LDI0ICs0NjksMjQgQEAgaW50IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRl
VHJhbnNmb3JtT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXMKICAg
ICAvLyBFbXB0eSB0cmFuc2Zvcm1zIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBu
b24tZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZS4KICAgICBzaXplX3QgZmlyc3RJbmRleCA9
IDA7CiAgICAgZm9yICggOyBmaXJzdEluZGV4IDwgdmFsdWVMaXN0LnNpemUoKTsgKytmaXJzdElu
ZGV4KSB7Ci0gICAgICAgIGlmIChvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS0+
b3BlcmF0aW9ucygpLnNpemUoKSA+IDApCisgICAgICAgIGlmICghb3BlcmF0aW9uc0F0KHZhbHVl
TGlzdCwgZmlyc3RJbmRleCkub3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAKICAgICBpZiAoZmlyc3RJbmRleCA+PSB2YWx1ZUxpc3Quc2l6ZSgp
KQogICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIAotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbnMqIGZpcnN0VmFsID0gb3BlcmF0aW9uc0F0KHZhbHVlTGlzdCwgZmlyc3RJbmRleCk7Cisg
ICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZmlyc3RWYWwgPSBvcGVyYXRpb25zQXQodmFs
dWVMaXN0LCBmaXJzdEluZGV4KTsKICAgICAKICAgICAvLyBTZWUgaWYgdGhlIGtleWZyYW1lcyBh
cmUgdmFsaWQuCiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0SW5kZXggKyAxOyBpIDwgdmFsdWVM
aXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZh
bCA9IG9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGkpOworICAgICAgICBjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKICAgICAgICAgCi0g
ICAgICAgIC8vIEFuIGVtdHB5IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCi0gICAg
ICAgIGlmICh2YWwtPm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCisgICAgICAgIC8vIEFuIGVtcHR5
IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCisgICAgICAgIGlmICh2YWwub3BlcmF0
aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0g
ICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRjaCgqdmFsKSkKKyAgICAgICAgaWYg
KCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAgICAgICAgICAgIHJldHVybiAtMTsK
ICAgICB9CiAKQEAgLTQ5NCwyMiArNDk0LDIyIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzCiAg
ICAgZG91YmxlIGxhc3RSb3RBbmdsZSA9IDAuMDsKICAgICBkb3VibGUgbWF4Um90QW5nbGUgPSAt
MS4wOwogICAgICAgICAKLSAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGZpcnN0VmFsLT5vcGVy
YXRpb25zKCkuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHR5cGUgPSBmaXJzdFZhbC0+b3BlcmF0aW9ucygpLmF0KGopLT5nZXRPcGVyYXRp
b25UeXBlKCk7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBmaXJzdFZhbC5vcGVyYXRpb25z
KCkuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHR5cGUgPSBmaXJzdFZhbC5vcGVyYXRpb25zKCkuYXQoaiktPmdldE9wZXJhdGlvblR5cGUo
KTsKICAgICAgICAgCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSByb3RhdGlvbiBlbnRyeSwgd2Ug
bmVlZCB0byBzZWUgaWYgYW55IGFuZ2xlIGRpZmZlcmVuY2VzIGFyZSA+PSAxODAgZGVnCiAgICAg
ICAgIGlmICh0eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1ggfHwKICAgICAgICAg
ICAgIHR5cGUgPT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWSB8fAogICAgICAgICAgICAg
dHlwZSA9PSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9aIHx8CiAgICAgICAgICAgICB0eXBl
ID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEKSB7Ci0gICAgICAgICAgICBsYXN0Um90
QW5nbGUgPSBzdGF0aWNfY2FzdDxSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihmaXJzdFZhbC0+
b3BlcmF0aW9ucygpLmF0KGopLmdldCgpKS0+YW5nbGUoKTsKKyAgICAgICAgICAgIGxhc3RSb3RB
bmdsZSA9IHN0YXRpY19jYXN0PFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KGZpcnN0VmFsLm9w
ZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChtYXhSb3RBbmdsZSA8IDApCiAgICAgICAgICAgICAgICAgbWF4Um90QW5nbGUgPSBm
YWJzKGxhc3RSb3RBbmdsZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBmaXJzdEluZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZhbCA9IG9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGkpOwotICAgICAgICAgICAgICAgIGRvdWJsZSByb3RBbmdsZSA9IHZhbC0+b3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLT5vcGVyYXRpb25zKCkuYXQoaikuZ2V0KCkpLT5hbmdsZSgpKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQo
dmFsdWVMaXN0LCBpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgcm90QW5nbGUgPSB2YWwub3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLm9wZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCkpOwogICAgICAg
ICAgICAgICAgIGRvdWJsZSBkaWZmQW5nbGUgPSBmYWJzKHJvdEFuZ2xlIC0gbGFzdFJvdEFuZ2xl
KTsKICAgICAgICAgICAgICAgICBpZiAoZGlmZkFuZ2xlID4gbWF4Um90QW5nbGUpCiAgICAgICAg
ICAgICAgICAgICAgIG1heFJvdEFuZ2xlID0gZGlmZkFuZ2xlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDEzMTFmYjZlYmM3ZDg0
ZTFhODIxMWQxYjc0ODk2YmUwYjQ0ZTU1MTUuLjE2ZGMwN2ZlYmI3YzhkODJlN2Q5MjdkNzYzYTdl
MDE1YmE4NzlmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTcyLDE4ICs3MiwxOSBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKIGNsYXNzIEFuaW1hdGlvblZhbHVlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBQ
YXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCi0gICAgICAgIDog
bV9rZXlUaW1lKGtleVRpbWUpCi0gICAgICAgICwgbV90aW1pbmdGdW5jdGlvbih0aW1pbmdGdW5j
dGlvbikKLSAgICB7Ci0gICAgfQotICAgIAogICAgIHZpcnR1YWwgfkFuaW1hdGlvblZhbHVlKCkg
eyB9CiAKICAgICBmbG9hdCBrZXlUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9rZXlUaW1lOyB9CiAg
ICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90aW1pbmdGdW5jdGlvbi5nZXQoKTsgfQogICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRp
b25WYWx1ZT4gY2xvbmUoKSBjb25zdCA9IDA7CiAKK3Byb3RlY3RlZDoKKyAgICBBbmltYXRpb25W
YWx1ZShmbG9hdCBrZXlUaW1lLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5j
dGlvbiA9IDApCisgICAgICAgIDogbV9rZXlUaW1lKGtleVRpbWUpCisgICAgICAgICwgbV90aW1p
bmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbikKKyAgICB7CisgICAgfQorCiBwcml2YXRlOgogICAg
IGZsb2F0IG1fa2V5VGltZTsKICAgICBSZWZQdHI8VGltaW5nRnVuY3Rpb24+IG1fdGltaW5nRnVu
Y3Rpb247CkBAIC05MywxNiArOTQsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUg
bW92ZWQgdG8gaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIEZsb2F0QW5pbWF0aW9uVmFsdWUg
OiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogcHVibGljOgotICAgIEZsb2F0QW5pbWF0aW9uVmFs
dWUoZmxvYXQga2V5VGltZSwgZmxvYXQgdmFsdWUsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+
IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0
aW1pbmdGdW5jdGlvbikKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHN0YXRpYyBQYXNz
T3duUHRyPEZsb2F0QW5pbWF0aW9uVmFsdWU+IGNyZWF0ZShmbG9hdCBrZXlUaW1lLCBmbG9hdCB2
YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24gPSAwKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093
blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKCp0aGlzKSk7CiAgICAg
fQotICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgqdGhpcykp
OyB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJp
dmF0ZToKKyAgICBGbG9hdEFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRpbWUsIGZsb2F0IHZhbHVl
LCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgOiBB
bmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgLCBtX3ZhbHVl
KHZhbHVlKQorICAgIHsKKyAgICB9CisKICAgICBmbG9hdCBtX3ZhbHVlOwogfTsKIApAQCAtMTEw
LDE3ICsxMjAsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRz
IG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGlj
IEFuaW1hdGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiB2YWx1ZSA9
IDAsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAg
ICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMg
UGFzc093blB0cjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUs
IGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlv
bikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xv
bmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKLSAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAg
ICAgbV92YWx1ZSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSgqdGhpcykpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICBj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7
IH0KIAogcHJpdmF0ZToKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1l
LCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5j
dGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFsdWUoa2V5VGltZSwg
dGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQor
CiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKIApAQCAtMTI5LDE3ICsxNDcs
MjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRzIG93biBoZWFk
ZXIgZmlsZS4KIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZh
bHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBGaWx0ZXJBbmltYXRpb25WYWx1ZShmbG9hdCBr
ZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWx1ZSA9IDAsIFBhc3NSZWZQdHI8VGlt
aW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1
ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMgUGFzc093blB0cjxGaWx0ZXJB
bmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUsIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDAp
CiAgICAgewotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICBtX3ZhbHVlID0gKnZhbHVl
OworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQ
dHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUoKnRo
aXMpKTsKKyAgICB9CisKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKKyAgICBGaWx0ZXJBbmltYXRpb25WYWx1
ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0
cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFs
dWUoa2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAg
ICB7CisgICAgfQorCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKICNlbmRpZgpA
QCAtMTYxLDYgKzE4NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQo
b3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOwogICAgIH0KIAorICAgIH5LZXlmcmFtZVZhbHVl
TGlzdCgpCisgICAgeworICAgIH0KKwogICAgIEtleWZyYW1lVmFsdWVMaXN0JiBvcGVyYXRvcj0o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKICAgICAgICAgS2V5ZnJhbWVW
YWx1ZUxpc3QgY29weShvdGhlcik7CkBAIC0xNzcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIEFu
aW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHk7IH0K
IAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOyB9Ci0g
ICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlcy5hdChpKS5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhdChzaXplX3Qg
aSkgY29uc3QgeyByZXR1cm4gKm1fdmFsdWVzLmF0KGkpOyB9CiAgICAgCiAgICAgLy8gSW5zZXJ0
LCBzb3J0ZWQgYnkga2V5VGltZS4KICAgICB2b2lkIGluc2VydChQYXNzT3duUHRyPGNvbnN0IEFu
aW1hdGlvblZhbHVlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCmluZGV4IGQwMjY1OThiMDI2ZmJk
MDA1NGNlYmM2MzcwZjFhZmVlMzQ0OWNjYjUuLjFiODRmYzI1YzMyMWIzMDIzY2FlYzI2MTQyYjFk
YWU0YzgyZDJhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCkBAIC0yMzEsMTQgKzIzMSwxNCBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJBbmltYXRpb246OmFwcGx5SW50ZXJuYWwoQ2xpZW50KiBjbGll
bnQsIGNvbnN0IEFuaW1hdGlvblZhbHVlKgogewogICAgIHN3aXRjaCAobV9rZXlmcmFtZXMucHJv
cGVydHkoKSkgewogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6Ci0gICAgICAgIGNs
aWVudC0+c2V0QW5pbWF0ZWRPcGFjaXR5KGFwcGx5T3BhY2l0eUFuaW1hdGlvbigoc3RhdGljX2Nh
c3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KGZyb20pLT52YWx1ZSgpKSwgKHN0YXRpY19j
YXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPih0byktPnZhbHVlKCkpLCBwcm9ncmVzcykp
OworICAgICAgICBjbGllbnQtPnNldEFuaW1hdGVkT3BhY2l0eShhcHBseU9wYWNpdHlBbmltYXRp
b24oKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmPigqZnJvbSkudmFsdWUo
KSksIChzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJj4oKnRvKS52YWx1ZSgp
KSwgcHJvZ3Jlc3MpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybToKLSAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZFRyYW5zZm9ybShh
cHBseVRyYW5zZm9ybUFuaW1hdGlvbihzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZSo+KGZyb20pLT52YWx1ZSgpLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1Bbmlt
YXRpb25WYWx1ZSo+KHRvKS0+dmFsdWUoKSwgcHJvZ3Jlc3MsIG1fYm94U2l6ZSwgbV9saXN0c01h
dGNoKSk7CisgICAgICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRUcmFuc2Zvcm0oYXBwbHlUcmFuc2Zv
cm1BbmltYXRpb24oc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPigq
ZnJvbSkudmFsdWUoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUm
PigqdG8pLnZhbHVlKCksIHByb2dyZXNzLCBtX2JveFNpemUsIG1fbGlzdHNNYXRjaCkpOwogICAg
ICAgICByZXR1cm47CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGNhc2UgQW5pbWF0ZWRQ
cm9wZXJ0eVdlYmtpdEZpbHRlcjoKLSAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZEZpbHRlcnMo
YXBwbHlGaWx0ZXJBbmltYXRpb24oc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFs
dWUqPihmcm9tKS0+dmFsdWUoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFs
dWUqPih0byktPnZhbHVlKCksIHByb2dyZXNzLCBtX2JveFNpemUpKTsKKyAgICAgICAgY2xpZW50
LT5zZXRBbmltYXRlZEZpbHRlcnMoYXBwbHlGaWx0ZXJBbmltYXRpb24oc3RhdGljX2Nhc3Q8Y29u
c3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPigqZnJvbSkudmFsdWUoKSwgc3RhdGljX2Nhc3Q8Y29u
c3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPigqdG8pLnZhbHVlKCksIHByb2dyZXNzLCBtX2JveFNp
emUpKTsKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgZGVmYXVsdDoKQEAgLTMwNCwxNSAr
MzA0LDE1IEBAIHZvaWQgR3JhcGhpY3NMYXllckFuaW1hdGlvbjo6YXBwbHkoQ2xpZW50KiBjbGll
bnQpCiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2tleWZyYW1lcy5zaXpl
KCkgLSAxOyArK2kpIHsKLSAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGZyb20gPSBtX2tl
eWZyYW1lcy5hdChpKTsKLSAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIHRvID0gbV9rZXlm
cmFtZXMuYXQoaSArIDEpOwotICAgICAgICBpZiAoZnJvbS0+a2V5VGltZSgpID4gbm9ybWFsaXpl
ZFZhbHVlIHx8IHRvLT5rZXlUaW1lKCkgPCBub3JtYWxpemVkVmFsdWUpCisgICAgICAgIGNvbnN0
IEFuaW1hdGlvblZhbHVlJiBmcm9tID0gbV9rZXlmcmFtZXMuYXQoaSk7CisgICAgICAgIGNvbnN0
IEFuaW1hdGlvblZhbHVlJiB0byA9IG1fa2V5ZnJhbWVzLmF0KGkgKyAxKTsKKyAgICAgICAgaWYg
KGZyb20ua2V5VGltZSgpID4gbm9ybWFsaXplZFZhbHVlIHx8IHRvLmtleVRpbWUoKSA8IG5vcm1h
bGl6ZWRWYWx1ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG5vcm1hbGl6ZWRW
YWx1ZSA9IChub3JtYWxpemVkVmFsdWUgLSBmcm9tLT5rZXlUaW1lKCkpIC8gKHRvLT5rZXlUaW1l
KCkgLSBmcm9tLT5rZXlUaW1lKCkpOwotICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGlt
aW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZyb20sIG1fYW5p
bWF0aW9uLmdldCgpKTsKKyAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gKG5vcm1hbGl6ZWRWYWx1
ZSAtIGZyb20ua2V5VGltZSgpKSAvICh0by5rZXlUaW1lKCkgLSBmcm9tLmtleVRpbWUoKSk7Cisg
ICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUoJmZyb20sIG1fYW5pbWF0aW9uLmdldCgpKTsKICAgICAgICAg
bm9ybWFsaXplZFZhbHVlID0gYXBwbHlUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgbm9y
bWFsaXplZFZhbHVlLCBtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSk7Ci0gICAgICAgIGFwcGx5SW50
ZXJuYWwoY2xpZW50LCBmcm9tLCB0bywgbm9ybWFsaXplZFZhbHVlKTsKKyAgICAgICAgYXBwbHlJ
bnRlcm5hbChjbGllbnQsICZmcm9tLCAmdG8sIG5vcm1hbGl6ZWRWYWx1ZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDIxMGI4MWFiZDcyMjE0OTRhZDdkZjI3
NTI0ZmUxYzM5ZTZkMzdhNmMuLmZmY2FkODc5NmVmNGYzZjlhOTNiN2NjYTVjZDQyYzVlMTc2Yzc2
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjQyLDkgKzI0MiwxMCBAQCBzdGF0aWMgYm9vbCBhbmlt
YXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZUxpc3QsCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgVGltaW5nRnVu
Y3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFsdWVMaXN0LmF0KGkpLT50aW1pbmdGdW5jdGlvbigp
OwotICAgICAgICBpZiAodGltaW5nRnVuY3Rpb24gJiYgdGltaW5nRnVuY3Rpb24tPmlzU3RlcHNU
aW1pbmdGdW5jdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChj
b25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB2YWx1ZUxpc3QuYXQoaSkudGlt
aW5nRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgaWYgKHRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBz
VGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTIwOTEsNyArMjA5Miw3IEBAIGJvb2wg
R3JhcGhpY3NMYXllckNBOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyhj
b25zdCBLZXlmcmFtZVZhbHVlCiAKICAgICBib29sIGhhc0JpZ1JvdGF0aW9uOwogICAgIGludCBs
aXN0SW5kZXggPSB2YWxpZGF0ZVRyYW5zZm9ybU9wZXJhdGlvbnModmFsdWVMaXN0LCBoYXNCaWdS
b3RhdGlvbik7Ci0gICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyogb3BlcmF0aW9ucyA9IChs
aXN0SW5kZXggPj0gMCkgPyBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSo+KHZhbHVlTGlzdC5hdChsaXN0SW5kZXgpKS0+dmFsdWUoKSA6IDA7CisgICAgY29uc3QgVHJh
bnNmb3JtT3BlcmF0aW9ucyogb3BlcmF0aW9ucyA9IChsaXN0SW5kZXggPj0gMCkgPyAmc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQobGlzdElu
ZGV4KSkudmFsdWUoKSA6IDA7CiAKICAgICAvLyBXZSBuZWVkIHRvIGZhbGwgYmFjayB0byBzb2Z0
d2FyZSBhbmltYXRpb24gaWYgd2UgZG9uJ3QgaGF2ZSBzZXRWYWx1ZUZ1bmN0aW9uOiwgYW5kCiAg
ICAgLy8gd2Ugd291bGQgbmVlZCB0byBhbmltYXRlIGVhY2ggaW5jb21pbmcgdHJhbnNmb3JtIGZ1
bmN0aW9uIHNlcGFyYXRlbHkuIFRoaXMgaXMgdGhlCkBAIC0yMTgxLDIxICsyMTgyLDIxIEBAIGJv
b2wgR3JhcGhpY3NMYXllckNBOjpjcmVhdGVGaWx0ZXJBbmltYXRpb25zRnJvbUtleWZyYW1lcyhj
b25zdCBLZXlmcmFtZVZhbHVlTGlzCiAgICAgaWYgKGxpc3RJbmRleCA8IDApCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyogb3BlcmF0
aW9ucyA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0
LmF0KGxpc3RJbmRleCkpLT52YWx1ZSgpOworICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9w
ZXJhdGlvbnMgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSY+KHZhbHVl
TGlzdC5hdChsaXN0SW5kZXgpKS52YWx1ZSgpOwogICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGxhdGZv
cm0gbGF5ZXIgZGlkbid0IGZhbGxiYWNrIHRvIHVzaW5nIHNvZnR3YXJlIGZpbHRlciBjb21wb3Np
dGluZyBpbnN0ZWFkLgotICAgIGlmICghUGxhdGZvcm1DQUxheWVyOjpmaWx0ZXJzQ2FuQmVDb21w
b3NpdGVkKCpvcGVyYXRpb25zKSkKKyAgICBpZiAoIVBsYXRmb3JtQ0FMYXllcjo6ZmlsdGVyc0Nh
bkJlQ29tcG9zaXRlZChvcGVyYXRpb25zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
aW50IG51bUFuaW1hdGlvbnMgPSBvcGVyYXRpb25zLT5zaXplKCk7CisgICAgaW50IG51bUFuaW1h
dGlvbnMgPSBvcGVyYXRpb25zLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBjYW4ndCBjdXJy
ZW50bHkgaGFyZHdhcmUgYW5pbWF0ZSBzaGFkb3dzLgogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtQW5pbWF0aW9uczsgKytpKSB7Ci0gICAgICAgIGlmIChvcGVyYXRpb25zLT5hdChpKS0+Z2V0
T3BlcmF0aW9uVHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpCisgICAgICAg
IGlmIChvcGVyYXRpb25zLmF0KGkpLT5nZXRPcGVyYXRpb25UeXBlKCkgPT0gRmlsdGVyT3BlcmF0
aW9uOjpEUk9QX1NIQURPVykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAg
ICBmb3IgKGludCBhbmltYXRpb25JbmRleCA9IDA7IGFuaW1hdGlvbkluZGV4IDwgbnVtQW5pbWF0
aW9uczsgKythbmltYXRpb25JbmRleCkgewotICAgICAgICBpZiAoIWFwcGVuZFRvVW5jb21taXR0
ZWRBbmltYXRpb25zKHZhbHVlTGlzdCwgb3BlcmF0aW9ucy0+b3BlcmF0aW9ucygpLmF0KGFuaW1h
dGlvbkluZGV4KS5nZXQoKSwgYW5pbWF0aW9uLCBhbmltYXRpb25OYW1lLCBhbmltYXRpb25JbmRl
eCwgdGltZU9mZnNldCkpCisgICAgICAgIGlmICghYXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlv
bnModmFsdWVMaXN0LCBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hdChhbmltYXRpb25JbmRleCku
Z2V0KCksIGFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZz
ZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjI1MywxMiArMjI1
NCwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBBbmltYXRpb24oUGxhdGZvcm1DQUFu
aW1hdGlvbiogcHJvcGVydHlBbmltLCBjb25zdCBBbgogICAgIHByb3BlcnR5QW5pbS0+c2V0Rmls
bE1vZGUoZmlsbE1vZGUpOwogfQogCi1jb25zdCBUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXll
ckNBOjp0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVl
KiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkKK2NvbnN0IFRpbWluZ0Z1bmN0aW9u
KiBHcmFwaGljc0xheWVyQ0E6OnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3Qg
QW5pbWF0aW9uVmFsdWUmIGFuaW1WYWx1ZSwgY29uc3QgQW5pbWF0aW9uJiBhbmltKQogewotICAg
IGlmIChhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiBhbmltVmFs
dWUtPnRpbWluZ0Z1bmN0aW9uKCk7Ci0gICAgaWYgKGFuaW0tPmlzVGltaW5nRnVuY3Rpb25TZXQo
KSkKLSAgICAgICAgcmV0dXJuIGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7CisgICAgaWYg
KGFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gYW5pbVZhbHVlLnRp
bWluZ0Z1bmN0aW9uKCk7CisgICAgaWYgKGFuaW0uaXNUaW1pbmdGdW5jdGlvblNldCgpKQorICAg
ICAgICByZXR1cm4gYW5pbS50aW1pbmdGdW5jdGlvbigpLmdldCgpOwogICAgIAogICAgIHJldHVy
biBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpkZWZhdWx0VGltaW5nRnVuY3Rpb24oKTsKIH0K
QEAgLTIyNzIsOCArMjI3Myw4IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25F
bmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAKICAgICBz
d2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7CiAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5
T3BhY2l0eTogewotICAgICAgICBiYXNpY0FuaW0tPnNldEZyb21WYWx1ZShzdGF0aWNfY2FzdDxj
b25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGZyb21JbmRleCkpLT52YWx1
ZSgpKTsKLSAgICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHN0YXRpY19jYXN0PGNvbnN0IEZs
b2F0QW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpLT52YWx1ZSgpKTsKKyAg
ICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmlt
YXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKS52YWx1ZSgpKTsKKyAgICAgICAg
YmFzaWNBbmltLT5zZXRUb1ZhbHVlKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFs
dWUmPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpLnZhbHVlKCkpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgZGVmYXVsdDoKQEAgLTIyODMsNyArMjI4NCw3IEBAIGJvb2wgR3JhcGhpY3NMYXll
ckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVl
TGlzdCwKIAogICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmlt
YXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CiAgICAgLy8gZm9y
IGEgdGltaW5nIGZ1bmN0aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcgYW5pbWF0aW9uIGNhc2Us
IHRoZSBmaXJzdCBrZXlmcmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0aW9uLgotICAgIGNv
bnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5p
bWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCBhbmltYXRpb24pOworICAgIGNvbnN0IFRpbWlu
Z0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKTsKICAgICBpZiAodGltaW5nRnVuY3Rpb24p
CiAgICAgICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24sICFm
b3J3YXJkcyk7CiAKQEAgLTIzMDAsMTMgKzIzMDEsMTMgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6
OnNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0
LAogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBmb3J3YXJkcyA/IGkgOiAodmFsdWVMaXN0
LnNpemUoKSAtIGkgLSAxKTsKLSAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGN1clZhbHVl
ID0gdmFsdWVMaXN0LmF0KGluZGV4KTsKLSAgICAgICAga2V5VGltZXMuYXBwZW5kKGZvcndhcmRz
ID8gY3VyVmFsdWUtPmtleVRpbWUoKSA6ICgxIC0gY3VyVmFsdWUtPmtleVRpbWUoKSkpOworICAg
ICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSYgY3VyVmFsdWUgPSB2YWx1ZUxpc3QuYXQoaW5kZXgp
OworICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2FyZHMgPyBjdXJWYWx1ZS5rZXlUaW1lKCkg
OiAoMSAtIGN1clZhbHVlLmtleVRpbWUoKSkpOwogCiAgICAgICAgIHN3aXRjaCAodmFsdWVMaXN0
LnByb3BlcnR5KCkpIHsKICAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eTogewot
ICAgICAgICAgICAgY29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSogZmxvYXRWYWx1ZSA9IHN0YXRp
Y19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPihjdXJWYWx1ZSk7Ci0gICAgICAgICAg
ICB2YWx1ZXMuYXBwZW5kKGZsb2F0VmFsdWUtPnZhbHVlKCkpOworICAgICAgICAgICAgY29uc3Qg
RmxvYXRBbmltYXRpb25WYWx1ZSYgZmxvYXRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0
QW5pbWF0aW9uVmFsdWUmPihjdXJWYWx1ZSk7CisgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGZs
b2F0VmFsdWUudmFsdWUoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBkZWZhdWx0OgpAQCAtMjMxNSw3ICsyMzE2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNl
dEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGkgPCAodmFsdWVMaXN0LnNpemUoKSAtIDEpKQotICAg
ICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlv
blZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgYW5p
bWF0aW9uKSk7CisgICAgICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChp
bmRleCAtIDEpLCAqYW5pbWF0aW9uKSk7CiAgICAgfQogICAgIAogICAgIGtleWZyYW1lQW5pbS0+
c2V0S2V5VGltZXMoa2V5VGltZXMpOwpAQCAtMjMzNCwxMyArMjMzNSwxMyBAQCBib29sIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YQogICAgIHVuc2lnbmVkIGZyb21JbmRleCA9ICFmb3J3YXJkczsKICAgICB1
bnNpZ25lZCB0b0luZGV4ID0gZm9yd2FyZHM7CiAgICAgCi0gICAgY29uc3QgVHJhbnNmb3JtQW5p
bWF0aW9uVmFsdWUqIHN0YXJ0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1Bbmlt
YXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKTsKLSAgICBjb25zdCBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSogZW5kVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCh0b0luZGV4KSk7CisgICAgY29uc3QgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUmIHN0YXJ0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKTsKKyAgICBjb25zdCBU
cmFuc2Zvcm1BbmltYXRpb25WYWx1ZSYgZW5kVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFu
c2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdCh0b0luZGV4KSk7CiAgICAgCiAgICAg
aWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZy
b21UcmFuc2Zvcm0sIHRvVHJhbnNmb3JtOwotICAgICAgICBzdGFydFZhbHVlLT52YWx1ZSgpLT5h
cHBseShib3hTaXplLCBmcm9tVHJhbnNmb3JtKTsKLSAgICAgICAgZW5kVmFsdWUtPnZhbHVlKCkt
PmFwcGx5KGJveFNpemUsIHRvVHJhbnNmb3JtKTsKKyAgICAgICAgc3RhcnRWYWx1ZS52YWx1ZSgp
LmFwcGx5KGJveFNpemUsIGZyb21UcmFuc2Zvcm0pOworICAgICAgICBlbmRWYWx1ZS52YWx1ZSgp
LmFwcGx5KGJveFNpemUsIHRvVHJhbnNmb3JtKTsKIAogICAgICAgICAvLyBJZiBhbnkgbWF0cml4
IGlzIHNpbmd1bGFyLCBDQSB3b24ndCBhbmltYXRlIGl0IGNvcnJlY3RseS4gU28gZmFsbCBiYWNr
IHRvIHNvZnR3YXJlIGFuaW1hdGlvbgogICAgICAgICBpZiAoIWZyb21UcmFuc2Zvcm0uaXNJbnZl
cnRpYmxlKCkgfHwgIXRvVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQpAQCAtMjM1MSwzNCArMjM1
MiwzNCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9p
bnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
IChpc1RyYW5zZm9ybVR5cGVOdW1iZXIodHJhbnNmb3JtT3BUeXBlKSkgewogICAgICAgICAgICAg
ZmxvYXQgZnJvbVZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShz
dGFydFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBi
b3hTaXplLCBmcm9tVmFsdWUpOworICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1
ZShzdGFydFZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwg
Ym94U2l6ZSwgZnJvbVZhbHVlKTsKICAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVl
KGZyb21WYWx1ZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZsb2F0IHRvVmFsdWU7Ci0g
ICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5h
dChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKKyAg
ICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUudmFsdWUoKS5hdChm
dW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKICAgICAg
ICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1ZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlm
IChpc1RyYW5zZm9ybVR5cGVGbG9hdFBvaW50M0QodHJhbnNmb3JtT3BUeXBlKSkgewogICAgICAg
ICAgICAgRmxvYXRQb2ludDNEIGZyb21WYWx1ZTsKLSAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1
bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5z
Zm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9y
bUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFu
c2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0t
PnNldEZyb21WYWx1ZShmcm9tVmFsdWUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBGbG9h
dFBvaW50M0QgdG9WYWx1ZTsKLSAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUo
ZW5kVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJv
eFNpemUsIHRvVmFsdWUpOworICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShl
bmRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNp
emUsIHRvVmFsdWUpOwogICAgICAgICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHRvVmFsdWUp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJv
bVZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVl
LT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCBm
cm9tVmFsdWUpOworICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFydFZh
bHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwg
ZnJvbVZhbHVlKTsKICAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKGZyb21WYWx1
ZSk7CiAKICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRvVmFsdWU7Ci0gICAgICAg
ICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5j
dGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKKyAgICAgICAg
ICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUudmFsdWUoKS5hdChmdW5jdGlv
bkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKICAgICAgICAgICAg
IGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1ZhbHVlKTsKICAgICAgICAgfQogICAgIH0KIAogICAg
IC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3
ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CiAgICAgLy8gZm9yIGEgdGltaW5nIGZ1
bmN0aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcgYW5pbWF0aW9uIGNhc2UsIHRoZSBmaXJzdCBr
ZXlmcmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0aW9uLgotICAgIGNvbnN0IFRpbWluZ0Z1
bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUo
dmFsdWVMaXN0LmF0KDApLCBhbmltYXRpb24pOworICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0
aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0
LmF0KDApLCAqYW5pbWF0aW9uKTsKICAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRp
bWluZ0Z1bmN0aW9uLCAhZm9yd2FyZHMpOwogCiAgICAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFs
dWVGdW5jdGlvblR5cGUgdmFsdWVGdW5jdGlvbiA9IGdldFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJh
bnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9ybU9wVHlwZSk7CkBAIC0yNDAwLDEyICsyNDAxLDEyIEBA
IGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMoY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
dmFsdWVMaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gZm9yd2Fy
ZHMgPyBpIDogKHZhbHVlTGlzdC5zaXplKCkgLSBpIC0gMSk7Ci0gICAgICAgIGNvbnN0IFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlKiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGluZGV4KSk7Ci0gICAgICAgIGtleVRpbWVz
LmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLT5rZXlUaW1lKCkgOiAoMSAtIGN1clZhbHVlLT5r
ZXlUaW1lKCkpKTsKKyAgICAgICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIGN1clZh
bHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxp
c3QuYXQoaW5kZXgpKTsKKyAgICAgICAga2V5VGltZXMuYXBwZW5kKGZvcndhcmRzID8gY3VyVmFs
dWUua2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS5rZXlUaW1lKCkpKTsKIAogICAgICAgICBpZiAo
aXNNYXRyaXhBbmltYXRpb24pIHsKICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRy
YW5zZm9ybTsKLSAgICAgICAgICAgIGN1clZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCB0
cmFuc2Zvcm0pOworICAgICAgICAgICAgY3VyVmFsdWUudmFsdWUoKS5hcHBseShib3hTaXplLCB0
cmFuc2Zvcm0pOwogCiAgICAgICAgICAgICAvLyBJZiBhbnkgbWF0cml4IGlzIHNpbmd1bGFyLCBD
QSB3b24ndCBhbmltYXRlIGl0IGNvcnJlY3RseS4gU28gZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGFu
aW1hdGlvbgogICAgICAgICAgICAgaWYgKCF0cmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCkBAIC0y
NDEzLDcgKzI0MTQsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0
aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogCiAgICAgICAgICAgICB0
cmFuc2Zvcm1hdGlvbk1hdHJpeFZhbHVlcy5hcHBlbmQodHJhbnNmb3JtKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNmb3JtT3Ag
PSBjdXJWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCk7CisgICAgICAgICAgICBjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybU9wID0gY3VyVmFsdWUudmFsdWUoKS5hdChm
dW5jdGlvbkluZGV4KTsKICAgICAgICAgICAgIGlmIChpc1RyYW5zZm9ybVR5cGVOdW1iZXIodHJh
bnNmb3JtT3BUeXBlKSkgewogICAgICAgICAgICAgICAgIGZsb2F0IHZhbHVlOwogICAgICAgICAg
ICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUodHJhbnNmb3JtT3AsIHRyYW5zZm9ybU9w
VHlwZSwgYm94U2l6ZSwgdmFsdWUpOwpAQCAtMjQzMCw3ICsyNDMxLDcgQEAgYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmEKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5zaXpl
KCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rp
b25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGlu
ZGV4IC0gMSksIGFuaW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVu
ZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2
YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwogICAgIH0KICAgICAKICAgICBr
ZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRpbWVzKTsKQEAgLTI0NjEsMTEgKzI0NjIsMTEg
QEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbkVuZHBvaW50cyhjb25z
dCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUKICAgICB1bnNpZ25lZCBmcm9tSW5kZXggPSAhZm9y
d2FyZHM7CiAgICAgdW5zaWduZWQgdG9JbmRleCA9IGZvcndhcmRzOwogCi0gICAgY29uc3QgRmls
dGVyQW5pbWF0aW9uVmFsdWUqIGZyb21WYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFu
aW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGZyb21JbmRleCkpOwotICAgIGNvbnN0IEZpbHRl
ckFuaW1hdGlvblZhbHVlKiB0b1ZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0
aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOworICAgIGNvbnN0IEZpbHRlckFuaW1h
dGlvblZhbHVlJiBmcm9tVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSY+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKTsKKyAgICBjb25zdCBGaWx0ZXJBbmltYXRp
b25WYWx1ZSYgdG9WYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVl
Jj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKTsKIAotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiog
ZnJvbU9wZXJhdGlvbiA9IGZyb21WYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCk7Ci0g
ICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiB0b09wZXJhdGlvbiA9IHRvVmFsdWUtPnZhbHVlKCkt
PmF0KGZ1bmN0aW9uSW5kZXgpOworICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbU9wZXJh
dGlvbiA9IGZyb21WYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpOworICAgIGNvbnN0IEZp
bHRlck9wZXJhdGlvbiogdG9PcGVyYXRpb24gPSB0b1ZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25J
bmRleCk7CiAKICAgICBSZWZQdHI8RGVmYXVsdEZpbHRlck9wZXJhdGlvbj4gZGVmYXVsdEZyb21P
cGVyYXRpb247CiAgICAgUmVmUHRyPERlZmF1bHRGaWx0ZXJPcGVyYXRpb24+IGRlZmF1bHRUb09w
ZXJhdGlvbjsKQEAgLTI0ODcsNyArMjQ4OCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRG
aWx0ZXJBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlCiAK
ICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9ucywg
c28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAogICAgIC8vIGZvciBhIHRpbWlu
ZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5nIGFuaW1hdGlvbiBjYXNlLCB0aGUgZmly
c3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBmdW5jdGlvbi4KLSAgICBiYXNpY0FuaW0t
PnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVM
aXN0LmF0KDApLCBhbmltYXRpb24pLCAhZm9yd2FyZHMpOworICAgIGJhc2ljQW5pbS0+c2V0VGlt
aW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQo
MCksICphbmltYXRpb24pLCAhZm9yd2FyZHMpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0y
NTAzLDExICsyNTA0LDExIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRp
b25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlCiAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIHVuc2ln
bmVkIGluZGV4ID0gZm9yd2FyZHMgPyBpIDogKHZhbHVlTGlzdC5zaXplKCkgLSBpIC0gMSk7Ci0g
ICAgICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0
PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGluZGV4KSk7Ci0gICAg
ICAgIGtleVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLT5rZXlUaW1lKCkgOiAoMSAt
IGN1clZhbHVlLT5rZXlUaW1lKCkpKTsKKyAgICAgICAgY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFs
dWUmIGN1clZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPih2
YWx1ZUxpc3QuYXQoaW5kZXgpKTsKKyAgICAgICAga2V5VGltZXMuYXBwZW5kKGZvcndhcmRzID8g
Y3VyVmFsdWUua2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS5rZXlUaW1lKCkpKTsKIAotICAgICAg
ICBpZiAoY3VyVmFsdWUtPnZhbHVlKCktPm9wZXJhdGlvbnMoKS5zaXplKCkgPiBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGZ1bmN0aW9uSW5kZXgpKQotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChjdXJW
YWx1ZS0+dmFsdWUoKS0+b3BlcmF0aW9ucygpW2Z1bmN0aW9uSW5kZXhdKTsKKyAgICAgICAgaWYg
KGN1clZhbHVlLnZhbHVlKCkub3BlcmF0aW9ucygpLnNpemUoKSA+IHN0YXRpY19jYXN0PHNpemVf
dD4oZnVuY3Rpb25JbmRleCkpCisgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGN1clZhbHVlLnZh
bHVlKCkub3BlcmF0aW9ucygpW2Z1bmN0aW9uSW5kZXhdKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBpZiAoIWRlZmF1bHRPcGVyYXRpb24pCiAgICAgICAgICAgICAgICAgZGVmYXVsdE9w
ZXJhdGlvbiA9IERlZmF1bHRGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShmaWx0ZXJPcCk7CkBAIC0y
NTE1LDcgKzI1MTYsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9u
S2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZQogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGkgPCAodmFsdWVMaXN0LnNpemUoKSAtIDEpKQotICAgICAgICAgICAgdGltaW5n
RnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRz
ID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgYW5pbWF0aW9uKSk7CisgICAg
ICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9u
VmFsdWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5p
bWF0aW9uKSk7CiAgICAgfQogICAgIAogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5
VGltZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuaAppbmRleCAwMmMwMjI3ZTk4YzZjNTJlODk0M2FkYWJkZDhlMGM5NGE2
MTRhNTIwLi4wOWNjY2U0NTFmNzYxNTI3NzM2MzNjYWVhMDkxNDY5NGU2MWRlZDRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuaApAQCAtMjA1LDcgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxQbGF0Zm9y
bUNBQW5pbWF0aW9uPiBjcmVhdGVLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBj
b25zdCBTdHJpbmcmLCBib29sIGFkZGl0aXZlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uKFBs
YXRmb3JtQ0FBbmltYXRpb24qLCBjb25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZlKTsKICAg
ICAKLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25W
YWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSosIGNvbnN0IEFuaW1hdGlvbiopOworICAgIGNvbnN0
IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFu
aW1hdGlvblZhbHVlJiwgY29uc3QgQW5pbWF0aW9uJik7CiAgICAgCiAgICAgYm9vbCBzZXRBbmlt
YXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24q
LCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CiAgICAgYm9vbCBzZXRBbmltYXRpb25LZXlmcmFtZXMo
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9ybUNBQW5p
bWF0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCmluZGV4IDFkZWZiNTJiMzRhYTgzOWE5NDMzZmZiNDAwM2YxMTU0MWY5MDFlODkuLjY0
MTllMGNiYmYxZDlmYmUwNjAyMDA4ZjdmNjg1MTk2Y2E5ODM4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0yMTA3LDE0ICsyMTA3
LDE0IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFuaW1hdGlvbihkb3VibGUgdGlt
ZU9mZnNldCwgY29uc3QgQW5pbWF0aW9uKiBhbmltCiAgICAgICAgIAogICAgICAgICBib29sIGlz
Rmlyc3RPckxhc3RLZXlmcmFtZSA9IGtleSA9PSAwIHx8IGtleSA9PSAxOwogICAgICAgICBpZiAo
KGhhc1RyYW5zZm9ybSAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFt
ZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtKSkKLSAgICAgICAg
ICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlKGtleSwgJihrZXlmcmFtZVN0eWxlLT50cmFuc2Zvcm0oKSksIHRmKSkpOwotICAgICAg
ICAKKyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWU6OmNyZWF0ZShrZXksIGtleWZyYW1lU3R5bGUtPnRyYW5zZm9ybSgpLCB0ZikpOworCiAg
ICAgICAgIGlmICgoaGFzT3BhY2l0eSAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJl
bnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSkpCi0gICAgICAg
ICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRpb25WYWx1
ZShrZXksIGtleWZyYW1lU3R5bGUtPm9wYWNpdHkoKSwgdGYpKSk7CisgICAgICAgICAgICBvcGFj
aXR5VmVjdG9yLmluc2VydChGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUoa2V5LCBrZXlmcmFt
ZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAg
ICAgIGlmICgoaGFzRmlsdGVyICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtl
eWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRGaWx0ZXIpKQotICAgICAg
ICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFs
dWUoa2V5LCAmKGtleWZyYW1lU3R5bGUtPmZpbHRlcigpKSwgdGYpKSk7CisgICAgICAgICAgICBm
aWx0ZXJWZWN0b3IuaW5zZXJ0KEZpbHRlckFuaW1hdGlvblZhbHVlOjpjcmVhdGUoa2V5LCBrZXlm
cmFtZVN0eWxlLT5maWx0ZXIoKSwgdGYpKTsKICNlbmRpZgogICAgIH0KIApAQCAtMjE1NCw4ICsy
MTU0LDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUg
dGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9u
KiBvcGFjaXR5QW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0
eU9wYWNpdHkpOwogICAgICAgICBpZiAob3BhY2l0eUFuaW0gJiYgIW9wYWNpdHlBbmltLT5pc0Vt
cHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3Qgb3Bh
Y2l0eVZlY3RvcihBbmltYXRlZFByb3BlcnR5T3BhY2l0eSk7Ci0gICAgICAgICAgICBvcGFjaXR5
VmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgwLCBjb21wb3Np
dGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSkpOwotICAgICAgICAgICAgb3BhY2l0
eVZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IEZsb2F0QW5pbWF0aW9uVmFsdWUoMSwgY29tcG9z
aXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkpKSk7CisgICAgICAgICAgICBvcGFjaXR5
VmVjdG9yLmluc2VydChGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUoMCwgY29tcG9zaXRpbmdP
cGFjaXR5KGZyb21TdHlsZS0+b3BhY2l0eSgpKSkpOworICAgICAgICAgICAgb3BhY2l0eVZlY3Rv
ci5pbnNlcnQoRmxvYXRBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKDEsIGNvbXBvc2l0aW5nT3BhY2l0
eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7CiAgICAgICAgICAgICAvLyBUaGUgYm94U2l6ZSBwYXJh
bSBpcyBvbmx5IHVzZWQgZm9yIHRyYW5zZm9ybSBhbmltYXRpb25zICh3aGljaCBjYW4gb25seSBy
dW4gb24gUmVuZGVyQm94ZXMpLCBzbyB3ZSBwYXNzIGFuIGVtcHR5IHNpemUgaGVyZS4KICAgICAg
ICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihvcGFjaXR5VmVjdG9yLCBJ
bnRTaXplKCksIG9wYWNpdHlBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJh
bnNpdGlvbihBbmltYXRlZFByb3BlcnR5T3BhY2l0eSksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3Qgb3BhY2l0eSBpcyB2aXNpYmxl
IHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgb3BhY2l0eS4KQEAg
LTIxNjksOCArMjE2OSw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRp
b24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0
IEFuaW1hdGlvbiogdHJhbnNmb3JtQW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CiAgICAgICAgIGlmICh0cmFuc2Zvcm1Bbmlt
ICYmICF0cmFuc2Zvcm1BbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAg
ICAgS2V5ZnJhbWVWYWx1ZUxpc3QgdHJhbnNmb3JtVmVjdG9yKEFuaW1hdGVkUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm0pOwotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChhZG9wdFB0
cihuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwgJmZyb21TdHlsZS0+dHJhbnNmb3JtKCkp
KSk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBUcmFu
c2Zvcm1BbmltYXRpb25WYWx1ZSgxLCAmdG9TdHlsZS0+dHJhbnNmb3JtKCkpKSk7CisgICAgICAg
ICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpjcmVh
dGUoMCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkpOworICAgICAgICAgICAgdHJhbnNmb3JtVmVj
dG9yLmluc2VydChUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZTo6Y3JlYXRlKDEsIHRvU3R5bGUtPnRy
YW5zZm9ybSgpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRp
b24odHJhbnNmb3JtVmVjdG9yLCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+cGl4ZWxTbmFwcGVk
Qm9yZGVyQm94UmVjdCgpLnNpemUoKSwgdHJhbnNmb3JtQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5p
bWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSks
IHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNv
cnJlY3QgdHJhbnNmb3JtIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28g
c2V0IHRoZSBmaW5hbCB0cmFuc2Zvcm0uCiAgICAgICAgICAgICAgICAgdXBkYXRlVHJhbnNmb3Jt
KHRvU3R5bGUpOwpAQCAtMjE4NCw4ICsyMTg0LDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6
OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIK
ICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiBmaWx0ZXJBbmltID0gdG9TdHlsZS0+dHJhbnNpdGlv
bkZvclByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0RmlsdGVyKTsKICAgICAgICAgaWYgKGZpbHRl
ckFuaW0gJiYgIWZpbHRlckFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAgICAg
ICAgICBLZXlmcmFtZVZhbHVlTGlzdCBmaWx0ZXJWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtp
dEZpbHRlcik7Ci0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBG
aWx0ZXJBbmltYXRpb25WYWx1ZSgwLCAmZnJvbVN0eWxlLT5maWx0ZXIoKSkpKTsKLSAgICAgICAg
ICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVl
KDEsICZ0b1N0eWxlLT5maWx0ZXIoKSkpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNl
cnQoRmlsdGVyQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgwLCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7
CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KEZpbHRlckFuaW1hdGlvblZhbHVlOjpj
cmVhdGUoMSwgdG9TdHlsZS0+ZmlsdGVyKCkpKTsKICAgICAgICAgICAgIGlmIChtX2dyYXBoaWNz
TGF5ZXItPmFkZEFuaW1hdGlvbihmaWx0ZXJWZWN0b3IsIEludFNpemUoKSwgZmlsdGVyQW5pbSwg
R3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0
eVdlYmtpdEZpbHRlciksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5z
dXJlIHRoYXQgdGhlIGNvcnJlY3QgZmlsdGVyIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9u
IGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBmaWx0ZXIuCiAgICAgICAgICAgICAgICAgdXBkYXRl
RmlsdGVycyh0b1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDQxMTA3MzA4OWNjNTUzZmM3OTE0ODE5YTYwZWRl
MTc5NjRjYWE3OWUuLjRhYzdkN2QxODhjOWE3ZWE4ZTcxOTcxNDc4Y2IyYjcxMGJjMTA5ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJz
LmNwcApAQCAtNjQ1LDE5ICs2NDUsMTkgQEAgdm9pZCBBcmd1bWVudENvZGVyPEdyYXBoaWNzTGF5
ZXJBbmltYXRpb24+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb24KICAgICBl
bmNvZGVyLmVuY29kZUVudW0oa2V5ZnJhbWVzLnByb3BlcnR5KCkpOwogICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtleWZyYW1lcy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwga2V5ZnJhbWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEFuaW1h
dGlvblZhbHVlKiB2YWx1ZSA9IGtleWZyYW1lcy5hdChpKTsKLSAgICAgICAgZW5jb2RlciA8PCB2
YWx1ZS0+a2V5VGltZSgpOwotICAgICAgICBlbmNvZGVUaW1pbmdGdW5jdGlvbihlbmNvZGVyLCB2
YWx1ZS0+dGltaW5nRnVuY3Rpb24oKSk7CisgICAgICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiB2
YWx1ZSA9IGtleWZyYW1lcy5hdChpKTsKKyAgICAgICAgZW5jb2RlciA8PCB2YWx1ZS5rZXlUaW1l
KCk7CisgICAgICAgIGVuY29kZVRpbWluZ0Z1bmN0aW9uKGVuY29kZXIsIHZhbHVlLnRpbWluZ0Z1
bmN0aW9uKCkpOwogICAgICAgICBzd2l0Y2ggKGtleWZyYW1lcy5wcm9wZXJ0eSgpKSB7CiAgICAg
ICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6Ci0gICAgICAgICAgICBlbmNvZGVyIDw8
IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPih2YWx1ZSktPnZhbHVlKCk7
CisgICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9u
VmFsdWUmPih2YWx1ZSkudmFsdWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06Ci0gICAgICAgICAgICBlbmNvZGVyIDw8
ICpzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlKS0+dmFs
dWUoKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgKnN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlJj4odmFsdWUpLnZhbHVlKCk7CiAgICAgICAgICAgICBicmVhazsKICNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtp
dEZpbHRlcjoKLSAgICAgICAgICAgIGVuY29kZXIgPDwgKnN0YXRpY19jYXN0PGNvbnN0IEZpbHRl
ckFuaW1hdGlvblZhbHVlKj4odmFsdWUpLT52YWx1ZSgpOworICAgICAgICAgICAgZW5jb2RlciA8
PCAqc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPih2YWx1ZSkudmFsdWUo
KTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6CkBAIC03MzMs
MTQgKzczMywxNCBAQCBib29sIEFyZ3VtZW50Q29kZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbj46
OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEdyYQogICAgICAgICAgICAgZmxvYXQg
dmFsdWU7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVlKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBrZXlmcmFtZXMuaW5zZXJ0KGFkb3B0
UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlv
bikpKTsKKyAgICAgICAgICAgIGtleWZyYW1lcy5pbnNlcnQoRmxvYXRBbmltYXRpb25WYWx1ZTo6
Y3JlYXRlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybTogewogICAgICAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyB0cmFuc2Zvcm07CiAgICAg
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAga2V5ZnJhbWVzLmluc2VydChhZG9wdFB0cihuZXcg
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoa2V5VGltZSwgJnRyYW5zZm9ybSwgdGltaW5nRnVuY3Rp
b24pKSk7CisgICAgICAgICAgICBrZXlmcmFtZXMuaW5zZXJ0KFRyYW5zZm9ybUFuaW1hdGlvblZh
bHVlOjpjcmVhdGUoa2V5VGltZSwgdHJhbnNmb3JtLCB0aW1pbmdGdW5jdGlvbikpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQpAQCAtNzQ4
LDcgKzc0OCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxHcmFwaGljc0xheWVyQW5pbWF0aW9uPjo6
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgR3JhCiAgICAgICAgICAgICBGaWx0ZXJP
cGVyYXRpb25zIGZpbHRlcjsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlsdGVy
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBrZXlmcmFtZXMu
aW5zZXJ0KGFkb3B0UHRyKG5ldyBGaWx0ZXJBbmltYXRpb25WYWx1ZShrZXlUaW1lLCAmZmlsdGVy
LCB0aW1pbmdGdW5jdGlvbikpKTsKKyAgICAgICAgICAgIGtleWZyYW1lcy5pbnNlcnQoRmlsdGVy
QW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXlUaW1lLCBmaWx0ZXIsIHRpbWluZ0Z1bmN0aW9uKSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200939</attachid>
            <date>2013-05-07 11:17:13 -0700</date>
            <delta_ts>2013-05-07 11:26:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115738-20130507111619.patch</filename>
            <type>text/plain</type>
            <size>45155</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmYzMGI4M2ExOTVhN2U4
NzNjZWRlNzE0NzE2ODkwMjRlMDdjZWZlYS4uNGY1NGQyMWI2NTUzOWMzNWM4NGY4YWVlMDQxNzMy
ZThiOTUzN2FlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTA1LTA3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgS2V5
ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN0YXRpYyBjcmVhdGUoKSBmdW5jdGlvbnMg
dG8gdGhlIEFuaW1hdGlvblZhbHVlIHN1YmNsYXNzZXMsIGFuZCBjaGFuZ2UgYSBidW5jaCBvZiBw
YXJhbWV0ZXJzCisgICAgICAgIGFuZCByZXR1cm4gdmFsdWVzIHRoYXQgY2FuIG5ldmVyIGJlIG51
bGwgZnJvbSBwb2ludGVyIHR5cGVzIHRvIHJlZmVyZW5jZSB0eXBlcyB0byBiZXR0ZXIgaW5kaWNh
dGUgdGhpcy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJPcGVyYXRpb25zQXQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dmFsaWRhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdGlvbnNBdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjp2YWxpZGF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKEFuaW1hdGlvblZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblZhbHVlOjpBbmltYXRpb25WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoRmxvYXRB
bmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpG
bG9hdEFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OnZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckFuaW1hdGlvblZhbHVlOjp2YWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6RmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoRmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVW
YWx1ZUxpc3Q6On5LZXlmcmFtZVZhbHVlTGlzdCk6CisgICAgICAgIChLZXlmcmFtZVZhbHVlTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6YXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVGaWx0ZXJBbmltYXRp
b25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRp
b25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0
ZXJBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAoR3JhcGhpY3NMYXllckNBKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorCiAyMDEzLTA1LTA2ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBhbiAnaXNSZWFkT25seScgbWVt
YmVyIHRvIElETCBwYXJzZSB0cmVlIHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUzNjgxNDU2NGY4
NmRjYjQ3NjViNzFmMzNiZDgwYzA1MTVjMTVlNTcuLjBhNjI4YzQ2NWRkNTY1YTI1NDk0MTNmMzY0
MDI3MTJlN2UyOTI2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wNS0wNyAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVw
IEtleWZyYW1lVmFsdWVMaXN0IGFuZCByZWxhdGVkIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTczOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBmb3IgV2ViQ29yZSBjaGFuZ2Vz
LgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKwog
MjAxMy0wNS0wNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHNvbWUgdW5uZWNlc3Nhcnkgc29mdCBsaW5raW5nIGluIE5ldHdvcmtQcm9jZXNzLiAo
VGFrZSAyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcAppbmRleCBjNzhiNWJlYjI2OGMxOGQyZmJlZTRmZjBlYWNmODA3MTQzYWNiZjA3
Li4wMWI2YTNmZDdhMmIwYTFmZmE0ZDZjZjU0NWFhZjBjNmU1MTdhODJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtNDA5
LDkgKzQwOSw5IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6ZGlzdHJpYnV0ZU9wYWNpdHkoZmxvYXQg
YWNjdW11bGF0ZWRPcGFjaXR5KQogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotc3RhdGlj
IGlubGluZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQorc3RhdGljIGlubGlu
ZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkp
LT52YWx1ZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSY+KHZhbHVlTGlzdC5hdChpbmRleCkpLnZhbHVlKCk7CiB9CiAKIGludCBHcmFwaGljc0xh
eWVyOjp2YWxpZGF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZh
bHVlTGlzdCkKQEAgLTQyNCwyMyArNDI0LDIzIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCkKICAg
ICAvLyBFbXB0eSBmaWx0ZXJzIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBub24t
ZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZQogICAgIHNpemVfdCBmaXJzdEluZGV4ID0gMDsK
ICAgICBmb3IgKCA7IGZpcnN0SW5kZXggPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2ZpcnN0SW5kZXgp
IHsKLSAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGZpcnN0SW5kZXgp
LT5vcGVyYXRpb25zKCkuc2l6ZSgpID4gMCkKKyAgICAgICAgaWYgKCFmaWx0ZXJPcGVyYXRpb25z
QXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS5vcGVyYXRpb25zKCkuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKGZpcnN0SW5kZXggPj0gdmFsdWVMaXN0LnNp
emUoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyog
Zmlyc3RWYWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KTsKKyAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaXJzdFZhbCA9IGZpbHRlck9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGZpcnN0SW5kZXgpOwogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdElu
ZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zKiB2YWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKKyAg
ICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdmFsID0gZmlsdGVyT3BlcmF0aW9uc0F0KHZh
bHVlTGlzdCwgaSk7CiAgICAgICAgIAogICAgICAgICAvLyBBbiBlbXRweSBmaWx0ZXIgbGlzdCBt
YXRjaGVzIGFueXRoaW5nLgotICAgICAgICBpZiAodmFsLT5vcGVyYXRpb25zKCkuaXNFbXB0eSgp
KQorICAgICAgICBpZiAodmFsLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRj
aCgqdmFsKSkKKyAgICAgICAgaWYgKCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAg
ICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgCkBAIC00NTIsOSArNDUyLDkgQEAgaW50
IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWVMaXN0KQogLy8gVGhlIGhhc0JpZ1JvdGF0aW9uIGZsYWcgd2lsbCBhbHdh
eXMgcmV0dXJuIGZhbHNlIGlmIGlzVmFsaWQgaXMgZmFsc2UuIE90aGVyd2lzZSBoYXNCaWdSb3Rh
dGlvbiBpcyAKIC8vIHRydWUgaWYgdGhlIHJvdGF0aW9uIGJldHdlZW4gYW55IHR3byBrZXlmcmFt
ZXMgaXMgPj0gMTgwIGRlZ3JlZXMuCiAKLXN0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9ucyogb3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3Qs
IHNpemVfdCBpbmRleCkKK3N0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYg
b3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIHNpemVfdCBp
bmRleCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUqPih2YWx1ZUxpc3QuYXQoaW5kZXgpKS0+dmFsdWUoKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoaW5kZXgp
KS52YWx1ZSgpOwogfQogCiBpbnQgR3JhcGhpY3NMYXllcjo6dmFsaWRhdGVUcmFuc2Zvcm1PcGVy
YXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGJvb2wmIGhhc0JpZ1Jv
dGF0aW9uKQpAQCAtNDY5LDI0ICs0NjksMjQgQEAgaW50IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRl
VHJhbnNmb3JtT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXMKICAg
ICAvLyBFbXB0eSB0cmFuc2Zvcm1zIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBu
b24tZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZS4KICAgICBzaXplX3QgZmlyc3RJbmRleCA9
IDA7CiAgICAgZm9yICggOyBmaXJzdEluZGV4IDwgdmFsdWVMaXN0LnNpemUoKTsgKytmaXJzdElu
ZGV4KSB7Ci0gICAgICAgIGlmIChvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS0+
b3BlcmF0aW9ucygpLnNpemUoKSA+IDApCisgICAgICAgIGlmICghb3BlcmF0aW9uc0F0KHZhbHVl
TGlzdCwgZmlyc3RJbmRleCkub3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAKICAgICBpZiAoZmlyc3RJbmRleCA+PSB2YWx1ZUxpc3Quc2l6ZSgp
KQogICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIAotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbnMqIGZpcnN0VmFsID0gb3BlcmF0aW9uc0F0KHZhbHVlTGlzdCwgZmlyc3RJbmRleCk7Cisg
ICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZmlyc3RWYWwgPSBvcGVyYXRpb25zQXQodmFs
dWVMaXN0LCBmaXJzdEluZGV4KTsKICAgICAKICAgICAvLyBTZWUgaWYgdGhlIGtleWZyYW1lcyBh
cmUgdmFsaWQuCiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0SW5kZXggKyAxOyBpIDwgdmFsdWVM
aXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZh
bCA9IG9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGkpOworICAgICAgICBjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKICAgICAgICAgCi0g
ICAgICAgIC8vIEFuIGVtdHB5IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCi0gICAg
ICAgIGlmICh2YWwtPm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCisgICAgICAgIC8vIEFuIGVtcHR5
IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCisgICAgICAgIGlmICh2YWwub3BlcmF0
aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0g
ICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRjaCgqdmFsKSkKKyAgICAgICAgaWYg
KCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAgICAgICAgICAgIHJldHVybiAtMTsK
ICAgICB9CiAKQEAgLTQ5NCwyMiArNDk0LDIyIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzCiAg
ICAgZG91YmxlIGxhc3RSb3RBbmdsZSA9IDAuMDsKICAgICBkb3VibGUgbWF4Um90QW5nbGUgPSAt
MS4wOwogICAgICAgICAKLSAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGZpcnN0VmFsLT5vcGVy
YXRpb25zKCkuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHR5cGUgPSBmaXJzdFZhbC0+b3BlcmF0aW9ucygpLmF0KGopLT5nZXRPcGVyYXRp
b25UeXBlKCk7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBmaXJzdFZhbC5vcGVyYXRpb25z
KCkuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHR5cGUgPSBmaXJzdFZhbC5vcGVyYXRpb25zKCkuYXQoaiktPmdldE9wZXJhdGlvblR5cGUo
KTsKICAgICAgICAgCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSByb3RhdGlvbiBlbnRyeSwgd2Ug
bmVlZCB0byBzZWUgaWYgYW55IGFuZ2xlIGRpZmZlcmVuY2VzIGFyZSA+PSAxODAgZGVnCiAgICAg
ICAgIGlmICh0eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1ggfHwKICAgICAgICAg
ICAgIHR5cGUgPT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWSB8fAogICAgICAgICAgICAg
dHlwZSA9PSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9aIHx8CiAgICAgICAgICAgICB0eXBl
ID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEKSB7Ci0gICAgICAgICAgICBsYXN0Um90
QW5nbGUgPSBzdGF0aWNfY2FzdDxSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihmaXJzdFZhbC0+
b3BlcmF0aW9ucygpLmF0KGopLmdldCgpKS0+YW5nbGUoKTsKKyAgICAgICAgICAgIGxhc3RSb3RB
bmdsZSA9IHN0YXRpY19jYXN0PFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KGZpcnN0VmFsLm9w
ZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChtYXhSb3RBbmdsZSA8IDApCiAgICAgICAgICAgICAgICAgbWF4Um90QW5nbGUgPSBm
YWJzKGxhc3RSb3RBbmdsZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBmaXJzdEluZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZhbCA9IG9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGkpOwotICAgICAgICAgICAgICAgIGRvdWJsZSByb3RBbmdsZSA9IHZhbC0+b3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLT5vcGVyYXRpb25zKCkuYXQoaikuZ2V0KCkpLT5hbmdsZSgpKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQo
dmFsdWVMaXN0LCBpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgcm90QW5nbGUgPSB2YWwub3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLm9wZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCkpOwogICAgICAg
ICAgICAgICAgIGRvdWJsZSBkaWZmQW5nbGUgPSBmYWJzKHJvdEFuZ2xlIC0gbGFzdFJvdEFuZ2xl
KTsKICAgICAgICAgICAgICAgICBpZiAoZGlmZkFuZ2xlID4gbWF4Um90QW5nbGUpCiAgICAgICAg
ICAgICAgICAgICAgIG1heFJvdEFuZ2xlID0gZGlmZkFuZ2xlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDEzMTFmYjZlYmM3ZDg0
ZTFhODIxMWQxYjc0ODk2YmUwYjQ0ZTU1MTUuLjE2ZGMwN2ZlYmI3YzhkODJlN2Q5MjdkNzYzYTdl
MDE1YmE4NzlmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTcyLDE4ICs3MiwxOSBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKIGNsYXNzIEFuaW1hdGlvblZhbHVlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBQ
YXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCi0gICAgICAgIDog
bV9rZXlUaW1lKGtleVRpbWUpCi0gICAgICAgICwgbV90aW1pbmdGdW5jdGlvbih0aW1pbmdGdW5j
dGlvbikKLSAgICB7Ci0gICAgfQotICAgIAogICAgIHZpcnR1YWwgfkFuaW1hdGlvblZhbHVlKCkg
eyB9CiAKICAgICBmbG9hdCBrZXlUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9rZXlUaW1lOyB9CiAg
ICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90aW1pbmdGdW5jdGlvbi5nZXQoKTsgfQogICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRp
b25WYWx1ZT4gY2xvbmUoKSBjb25zdCA9IDA7CiAKK3Byb3RlY3RlZDoKKyAgICBBbmltYXRpb25W
YWx1ZShmbG9hdCBrZXlUaW1lLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5j
dGlvbiA9IDApCisgICAgICAgIDogbV9rZXlUaW1lKGtleVRpbWUpCisgICAgICAgICwgbV90aW1p
bmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbikKKyAgICB7CisgICAgfQorCiBwcml2YXRlOgogICAg
IGZsb2F0IG1fa2V5VGltZTsKICAgICBSZWZQdHI8VGltaW5nRnVuY3Rpb24+IG1fdGltaW5nRnVu
Y3Rpb247CkBAIC05MywxNiArOTQsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUg
bW92ZWQgdG8gaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIEZsb2F0QW5pbWF0aW9uVmFsdWUg
OiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogcHVibGljOgotICAgIEZsb2F0QW5pbWF0aW9uVmFs
dWUoZmxvYXQga2V5VGltZSwgZmxvYXQgdmFsdWUsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+
IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0
aW1pbmdGdW5jdGlvbikKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHN0YXRpYyBQYXNz
T3duUHRyPEZsb2F0QW5pbWF0aW9uVmFsdWU+IGNyZWF0ZShmbG9hdCBrZXlUaW1lLCBmbG9hdCB2
YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24gPSAwKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093
blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKCp0aGlzKSk7CiAgICAg
fQotICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgqdGhpcykp
OyB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJp
dmF0ZToKKyAgICBGbG9hdEFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRpbWUsIGZsb2F0IHZhbHVl
LCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgOiBB
bmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgLCBtX3ZhbHVl
KHZhbHVlKQorICAgIHsKKyAgICB9CisKICAgICBmbG9hdCBtX3ZhbHVlOwogfTsKIApAQCAtMTEw
LDE3ICsxMjAsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRz
IG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGlj
IEFuaW1hdGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiB2YWx1ZSA9
IDAsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAg
ICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMg
UGFzc093blB0cjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUs
IGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlv
bikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xv
bmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKLSAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAg
ICAgbV92YWx1ZSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSgqdGhpcykpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICBj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7
IH0KIAogcHJpdmF0ZToKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1l
LCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5j
dGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFsdWUoa2V5VGltZSwg
dGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQor
CiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKIApAQCAtMTI5LDE3ICsxNDcs
MjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRzIG93biBoZWFk
ZXIgZmlsZS4KIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZh
bHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBGaWx0ZXJBbmltYXRpb25WYWx1ZShmbG9hdCBr
ZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWx1ZSA9IDAsIFBhc3NSZWZQdHI8VGlt
aW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1
ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMgUGFzc093blB0cjxGaWx0ZXJB
bmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUsIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDAp
CiAgICAgewotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICBtX3ZhbHVlID0gKnZhbHVl
OworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQ
dHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUoKnRo
aXMpKTsKKyAgICB9CisKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKKyAgICBGaWx0ZXJBbmltYXRpb25WYWx1
ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0
cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFs
dWUoa2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAg
ICB7CisgICAgfQorCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKICNlbmRpZgpA
QCAtMTYxLDYgKzE4NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQo
b3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOwogICAgIH0KIAorICAgIH5LZXlmcmFtZVZhbHVl
TGlzdCgpCisgICAgeworICAgIH0KKwogICAgIEtleWZyYW1lVmFsdWVMaXN0JiBvcGVyYXRvcj0o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKICAgICAgICAgS2V5ZnJhbWVW
YWx1ZUxpc3QgY29weShvdGhlcik7CkBAIC0xNzcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIEFu
aW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHk7IH0K
IAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOyB9Ci0g
ICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlcy5hdChpKS5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhdChzaXplX3Qg
aSkgY29uc3QgeyByZXR1cm4gKm1fdmFsdWVzLmF0KGkpOyB9CiAgICAgCiAgICAgLy8gSW5zZXJ0
LCBzb3J0ZWQgYnkga2V5VGltZS4KICAgICB2b2lkIGluc2VydChQYXNzT3duUHRyPGNvbnN0IEFu
aW1hdGlvblZhbHVlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCmluZGV4IGQwMjY1OThiMDI2ZmJk
MDA1NGNlYmM2MzcwZjFhZmVlMzQ0OWNjYjUuLmQ2ZTFhZTAxZGU2MDQ0Y2MyOWZhZTVhMzkxMGI2
ZDQxZTQyNDQ2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCkBAIC0xNTUsNDkgKzE1NSw0OSBA
QCBzdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVu
Y3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbAogICAgIHJldHVybiBwcm9ncmVzczsKIH0KIAotc3Rh
dGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKGNvbnN0IFRy
YW5zZm9ybU9wZXJhdGlvbnMqIGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHRvLCBk
b3VibGUgcHJvZ3Jlc3MsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGJvb2wgbGlzdHNNYXRjaCkK
K3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcHBseVRyYW5zZm9ybUFuaW1hdGlvbihjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0
bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBib29sIGxpc3RzTWF0
Y2gpCiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OwogCiAgICAgLy8gRmlyc3Qg
ZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmICghcHJvZ3Jlc3MpIHsKLSAgICAgICAgZnJv
bS0+YXBwbHkoYm94U2l6ZSwgbWF0cml4KTsKKyAgICAgICAgZnJvbS5hcHBseShib3hTaXplLCBt
YXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIExhc3QgZnJh
bWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmIChwcm9ncmVzcyA9PSAxKSB7Ci0gICAgICAgIHRv
LT5hcHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICB0by5hcHBseShib3hTaXplLCBtYXRy
aXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIElmIHdlIGhhdmUg
aW5jb21wYXRpYmxlIG9wZXJhdGlvbiBsaXN0cywgd2UgYmxlbmQgdGhlIHJlc3VsdGluZyBtYXRy
aWNlcy4KICAgICBpZiAoIWxpc3RzTWF0Y2gpIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggZnJvbU1hdHJpeDsKLSAgICAgICAgdG8tPmFwcGx5KGJveFNpemUsIG1hdHJpeCk7Ci0gICAg
ICAgIGZyb20tPmFwcGx5KGJveFNpemUsIGZyb21NYXRyaXgpOworICAgICAgICB0by5hcHBseShi
b3hTaXplLCBtYXRyaXgpOworICAgICAgICBmcm9tLmFwcGx5KGJveFNpemUsIGZyb21NYXRyaXgp
OwogICAgICAgICBtYXRyaXguYmxlbmQoZnJvbU1hdHJpeCwgcHJvZ3Jlc3MpOwogICAgICAgICBy
ZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIEFuaW1hdGlvbiB0byAiLXdlYmtpdC10cmFu
c2Zvcm06IG5vbmUiLgotICAgIGlmICghdG8tPnNpemUoKSkgewotICAgICAgICBUcmFuc2Zvcm1P
cGVyYXRpb25zIGJsZW5kZWQoKmZyb20pOworICAgIGlmICghdG8uc2l6ZSgpKSB7CisgICAgICAg
IFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRlZChmcm9tKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBibGVuZGVkLm9wZXJhdGlvbnMoKS5zaXplKCk7ICsraSkKICAgICAgICAgICAg
IGJsZW5kZWQub3BlcmF0aW9ucygpW2ldLT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSktPmFwcGx5
KG1hdHJpeCwgYm94U2l6ZSk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQogCiAgICAg
Ly8gQW5pbWF0aW9uIGZyb20gIi13ZWJraXQtdHJhbnNmb3JtOiBub25lIi4KLSAgICBpZiAoIWZy
b20tPnNpemUoKSkgewotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQoKnRvKTsK
KyAgICBpZiAoIWZyb20uc2l6ZSgpKSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxl
bmRlZCh0byk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxlbmRlZC5vcGVyYXRp
b25zKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+
YmxlbmQoMCwgMS4gLSBwcm9ncmVzcywgdHJ1ZSktPmFwcGx5KG1hdHJpeCwgYm94U2l6ZSk7CiAg
ICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQogCiAgICAgLy8gTm9ybWFsIGFuaW1hdGlvbiB3
aXRoIGEgbWF0Y2hpbmcgb3BlcmF0aW9uIGxpc3QuCi0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBi
bGVuZGVkKCp0byk7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZGVkKHRvKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGJsZW5kZWQub3BlcmF0aW9ucygpLnNpemUoKTsgKytpKQog
ICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS0+YXQoaSksIHByb2dy
ZXNzLCAhZnJvbS0+YXQoaSkpLT5hcHBseShtYXRyaXgsIGJveFNpemUpOwogICAgIHJldHVybiBt
YXRyaXg7CkBAIC0yMzEsMTQgKzIzMSwxNCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJBbmltYXRpb246
OmFwcGx5SW50ZXJuYWwoQ2xpZW50KiBjbGllbnQsIGNvbnN0IEFuaW1hdGlvblZhbHVlKgogewog
ICAgIHN3aXRjaCAobV9rZXlmcmFtZXMucHJvcGVydHkoKSkgewogICAgIGNhc2UgQW5pbWF0ZWRQ
cm9wZXJ0eU9wYWNpdHk6Ci0gICAgICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRPcGFjaXR5KGFwcGx5
T3BhY2l0eUFuaW1hdGlvbigoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+
KGZyb20pLT52YWx1ZSgpKSwgKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUq
Pih0byktPnZhbHVlKCkpLCBwcm9ncmVzcykpOworICAgICAgICBjbGllbnQtPnNldEFuaW1hdGVk
T3BhY2l0eShhcHBseU9wYWNpdHlBbmltYXRpb24oKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5p
bWF0aW9uVmFsdWUmPigqZnJvbSkudmFsdWUoKSksIChzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFu
aW1hdGlvblZhbHVlJj4oKnRvKS52YWx1ZSgpKSwgcHJvZ3Jlc3MpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKLSAgICAgICAgY2xp
ZW50LT5zZXRBbmltYXRlZFRyYW5zZm9ybShhcHBseVRyYW5zZm9ybUFuaW1hdGlvbihzdGF0aWNf
Y2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KGZyb20pLT52YWx1ZSgpLCBzdGF0
aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHRvKS0+dmFsdWUoKSwgcHJv
Z3Jlc3MsIG1fYm94U2l6ZSwgbV9saXN0c01hdGNoKSk7CisgICAgICAgIGNsaWVudC0+c2V0QW5p
bWF0ZWRUcmFuc2Zvcm0oYXBwbHlUcmFuc2Zvcm1BbmltYXRpb24oc3RhdGljX2Nhc3Q8Y29uc3Qg
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPigqZnJvbSkudmFsdWUoKSwgc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPigqdG8pLnZhbHVlKCksIHByb2dyZXNzLCBtX2Jv
eFNpemUsIG1fbGlzdHNNYXRjaCkpOwogICAgICAgICByZXR1cm47CiAjaWYgRU5BQkxFKENTU19G
SUxURVJTKQogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlcjoKLSAgICAgICAg
Y2xpZW50LT5zZXRBbmltYXRlZEZpbHRlcnMoYXBwbHlGaWx0ZXJBbmltYXRpb24oc3RhdGljX2Nh
c3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUqPihmcm9tKS0+dmFsdWUoKSwgc3RhdGljX2Nh
c3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUqPih0byktPnZhbHVlKCksIHByb2dyZXNzLCBt
X2JveFNpemUpKTsKKyAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZEZpbHRlcnMoYXBwbHlGaWx0
ZXJBbmltYXRpb24oc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPigqZnJv
bSkudmFsdWUoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPigqdG8p
LnZhbHVlKCksIHByb2dyZXNzLCBtX2JveFNpemUpKTsKICAgICAgICAgcmV0dXJuOwogI2VuZGlm
CiAgICAgZGVmYXVsdDoKQEAgLTMwNCwxNSArMzA0LDE1IEBAIHZvaWQgR3JhcGhpY3NMYXllckFu
aW1hdGlvbjo6YXBwbHkoQ2xpZW50KiBjbGllbnQpCiAgICAgfQogCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2tleWZyYW1lcy5zaXplKCkgLSAxOyArK2kpIHsKLSAgICAgICAgY29uc3Qg
QW5pbWF0aW9uVmFsdWUqIGZyb20gPSBtX2tleWZyYW1lcy5hdChpKTsKLSAgICAgICAgY29uc3Qg
QW5pbWF0aW9uVmFsdWUqIHRvID0gbV9rZXlmcmFtZXMuYXQoaSArIDEpOwotICAgICAgICBpZiAo
ZnJvbS0+a2V5VGltZSgpID4gbm9ybWFsaXplZFZhbHVlIHx8IHRvLT5rZXlUaW1lKCkgPCBub3Jt
YWxpemVkVmFsdWUpCisgICAgICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBmcm9tID0gbV9rZXlm
cmFtZXMuYXQoaSk7CisgICAgICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiB0byA9IG1fa2V5ZnJh
bWVzLmF0KGkgKyAxKTsKKyAgICAgICAgaWYgKGZyb20ua2V5VGltZSgpID4gbm9ybWFsaXplZFZh
bHVlIHx8IHRvLmtleVRpbWUoKSA8IG5vcm1hbGl6ZWRWYWx1ZSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IChub3JtYWxpemVkVmFsdWUgLSBmcm9t
LT5rZXlUaW1lKCkpIC8gKHRvLT5rZXlUaW1lKCkgLSBmcm9tLT5rZXlUaW1lKCkpOwotICAgICAg
ICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZv
ckFuaW1hdGlvblZhbHVlKGZyb20sIG1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICAgICAgbm9ybWFs
aXplZFZhbHVlID0gKG5vcm1hbGl6ZWRWYWx1ZSAtIGZyb20ua2V5VGltZSgpKSAvICh0by5rZXlU
aW1lKCkgLSBmcm9tLmtleVRpbWUoKSk7CisgICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0
aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoJmZyb20sIG1f
YW5pbWF0aW9uLmdldCgpKTsKICAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gYXBwbHlUaW1pbmdG
dW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgbm9ybWFsaXplZFZhbHVlLCBtX2FuaW1hdGlvbi0+ZHVy
YXRpb24oKSk7Ci0gICAgICAgIGFwcGx5SW50ZXJuYWwoY2xpZW50LCBmcm9tLCB0bywgbm9ybWFs
aXplZFZhbHVlKTsKKyAgICAgICAgYXBwbHlJbnRlcm5hbChjbGllbnQsICZmcm9tLCAmdG8sIG5v
cm1hbGl6ZWRWYWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmlu
ZGV4IDIxMGI4MWFiZDcyMjE0OTRhZDdkZjI3NTI0ZmUxYzM5ZTZkMzdhNmMuLmZmY2FkODc5NmVm
NGYzZjlhOTNiN2NjYTVjZDQyYzVlMTc2Yzc2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjQyLDkg
KzI0MiwxMCBAQCBzdGF0aWMgYm9vbCBhbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFsdWVM
aXN0LmF0KGkpLT50aW1pbmdGdW5jdGlvbigpOwotICAgICAgICBpZiAodGltaW5nRnVuY3Rpb24g
JiYgdGltaW5nRnVuY3Rpb24tPmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGlmIChjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVu
Y3Rpb24gPSB2YWx1ZUxpc3QuYXQoaSkudGltaW5nRnVuY3Rpb24oKSkgeworICAgICAgICAgICAg
aWYgKHRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsK
QEAgLTIwOTEsNyArMjA5Miw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpjcmVhdGVUcmFuc2Zv
cm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlCiAKICAgICBib29s
IGhhc0JpZ1JvdGF0aW9uOwogICAgIGludCBsaXN0SW5kZXggPSB2YWxpZGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbnModmFsdWVMaXN0LCBoYXNCaWdSb3RhdGlvbik7Ci0gICAgY29uc3QgVHJhbnNmb3Jt
T3BlcmF0aW9ucyogb3BlcmF0aW9ucyA9IChsaXN0SW5kZXggPj0gMCkgPyBzdGF0aWNfY2FzdDxj
b25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChsaXN0SW5kZXgpKS0+
dmFsdWUoKSA6IDA7CisgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyogb3BlcmF0aW9ucyA9
IChsaXN0SW5kZXggPj0gMCkgPyAmc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUmPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4KSkudmFsdWUoKSA6IDA7CiAKICAgICAvLyBX
ZSBuZWVkIHRvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24gaWYgd2UgZG9uJ3QgaGF2
ZSBzZXRWYWx1ZUZ1bmN0aW9uOiwgYW5kCiAgICAgLy8gd2Ugd291bGQgbmVlZCB0byBhbmltYXRl
IGVhY2ggaW5jb21pbmcgdHJhbnNmb3JtIGZ1bmN0aW9uIHNlcGFyYXRlbHkuIFRoaXMgaXMgdGhl
CkBAIC0yMTgxLDIxICsyMTgyLDIxIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpjcmVhdGVGaWx0
ZXJBbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzCiAgICAgaWYg
KGxpc3RJbmRleCA8IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyogb3BlcmF0aW9ucyA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRl
ckFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGxpc3RJbmRleCkpLT52YWx1ZSgpOworICAg
IGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMgPSBzdGF0aWNfY2FzdDxjb25zdCBG
aWx0ZXJBbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdChsaXN0SW5kZXgpKS52YWx1ZSgpOwog
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGxhdGZvcm0gbGF5ZXIgZGlkbid0IGZhbGxiYWNrIHRvIHVz
aW5nIHNvZnR3YXJlIGZpbHRlciBjb21wb3NpdGluZyBpbnN0ZWFkLgotICAgIGlmICghUGxhdGZv
cm1DQUxheWVyOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKCpvcGVyYXRpb25zKSkKKyAgICBpZiAo
IVBsYXRmb3JtQ0FMYXllcjo6ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZChvcGVyYXRpb25zKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50IG51bUFuaW1hdGlvbnMgPSBvcGVyYXRpb25z
LT5zaXplKCk7CisgICAgaW50IG51bUFuaW1hdGlvbnMgPSBvcGVyYXRpb25zLnNpemUoKTsKIAog
ICAgIC8vIEZJWE1FOiBXZSBjYW4ndCBjdXJyZW50bHkgaGFyZHdhcmUgYW5pbWF0ZSBzaGFkb3dz
LgogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQW5pbWF0aW9uczsgKytpKSB7Ci0gICAgICAg
IGlmIChvcGVyYXRpb25zLT5hdChpKS0+Z2V0T3BlcmF0aW9uVHlwZSgpID09IEZpbHRlck9wZXJh
dGlvbjo6RFJPUF9TSEFET1cpCisgICAgICAgIGlmIChvcGVyYXRpb25zLmF0KGkpLT5nZXRPcGVy
YXRpb25UeXBlKCkgPT0gRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBmb3IgKGludCBhbmltYXRpb25JbmRleCA9IDA7
IGFuaW1hdGlvbkluZGV4IDwgbnVtQW5pbWF0aW9uczsgKythbmltYXRpb25JbmRleCkgewotICAg
ICAgICBpZiAoIWFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKHZhbHVlTGlzdCwgb3BlcmF0
aW9ucy0+b3BlcmF0aW9ucygpLmF0KGFuaW1hdGlvbkluZGV4KS5nZXQoKSwgYW5pbWF0aW9uLCBh
bmltYXRpb25OYW1lLCBhbmltYXRpb25JbmRleCwgdGltZU9mZnNldCkpCisgICAgICAgIGlmICgh
YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnModmFsdWVMaXN0LCBvcGVyYXRpb25zLm9wZXJh
dGlvbnMoKS5hdChhbmltYXRpb25JbmRleCkuZ2V0KCksIGFuaW1hdGlvbiwgYW5pbWF0aW9uTmFt
ZSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMjI1MywxMiArMjI1NCwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0dXBBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbiogcHJvcGVydHlBbmltLCBjb25zdCBB
bgogICAgIHByb3BlcnR5QW5pbS0+c2V0RmlsbE1vZGUoZmlsbE1vZGUpOwogfQogCi1jb25zdCBU
aW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXllckNBOjp0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlv
blZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlKiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlvbiog
YW5pbSkKK2NvbnN0IFRpbWluZ0Z1bmN0aW9uKiBHcmFwaGljc0xheWVyQ0E6OnRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmIGFuaW1WYWx1ZSwgY29u
c3QgQW5pbWF0aW9uJiBhbmltKQogewotICAgIGlmIChhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9u
KCkpCi0gICAgICAgIHJldHVybiBhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCk7Ci0gICAgaWYg
KGFuaW0tPmlzVGltaW5nRnVuY3Rpb25TZXQoKSkKLSAgICAgICAgcmV0dXJuIGFuaW0tPnRpbWlu
Z0Z1bmN0aW9uKCkuZ2V0KCk7CisgICAgaWYgKGFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpKQor
ICAgICAgICByZXR1cm4gYW5pbVZhbHVlLnRpbWluZ0Z1bmN0aW9uKCk7CisgICAgaWYgKGFuaW0u
aXNUaW1pbmdGdW5jdGlvblNldCgpKQorICAgICAgICByZXR1cm4gYW5pbS50aW1pbmdGdW5jdGlv
bigpLmdldCgpOwogICAgIAogICAgIHJldHVybiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpk
ZWZhdWx0VGltaW5nRnVuY3Rpb24oKTsKIH0KQEAgLTIyNzIsOCArMjI3Myw4IEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwKICAgICAKICAgICBzd2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7
CiAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eTogewotICAgICAgICBiYXNpY0FuaW0t
PnNldEZyb21WYWx1ZShzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFs
dWVMaXN0LmF0KGZyb21JbmRleCkpLT52YWx1ZSgpKTsKLSAgICAgICAgYmFzaWNBbmltLT5zZXRU
b1ZhbHVlKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3Qu
YXQodG9JbmRleCkpLT52YWx1ZSgpKTsKKyAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUo
c3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdChmcm9t
SW5kZXgpKS52YWx1ZSgpKTsKKyAgICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHN0YXRpY19j
YXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpLnZh
bHVlKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKQEAgLTIyODMsNyAr
MjI4NCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwKIAogICAgIC8vIFRoaXMgY29kZXBhdGgg
aXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxv
b2sgaW4gdGhlIHN0YXJ0CiAgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLiBFdmVuIGluIHRo
ZSByZXZlcnNpbmcgYW5pbWF0aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlmcmFtZSBwcm92aWRlcyB0
aGUgdGltaW5nIGZ1bmN0aW9uLgotICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5j
dGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCBh
bmltYXRpb24pOworICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9u
KTsKICAgICBpZiAodGltaW5nRnVuY3Rpb24pCiAgICAgICAgIGJhc2ljQW5pbS0+c2V0VGltaW5n
RnVuY3Rpb24odGltaW5nRnVuY3Rpb24sICFmb3J3YXJkcyk7CiAKQEAgLTIzMDAsMTMgKzIzMDEs
MTMgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXgg
PSBmb3J3YXJkcyA/IGkgOiAodmFsdWVMaXN0LnNpemUoKSAtIGkgLSAxKTsKLSAgICAgICAgY29u
c3QgQW5pbWF0aW9uVmFsdWUqIGN1clZhbHVlID0gdmFsdWVMaXN0LmF0KGluZGV4KTsKLSAgICAg
ICAga2V5VGltZXMuYXBwZW5kKGZvcndhcmRzID8gY3VyVmFsdWUtPmtleVRpbWUoKSA6ICgxIC0g
Y3VyVmFsdWUtPmtleVRpbWUoKSkpOworICAgICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSYgY3Vy
VmFsdWUgPSB2YWx1ZUxpc3QuYXQoaW5kZXgpOworICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9y
d2FyZHMgPyBjdXJWYWx1ZS5rZXlUaW1lKCkgOiAoMSAtIGN1clZhbHVlLmtleVRpbWUoKSkpOwog
CiAgICAgICAgIHN3aXRjaCAodmFsdWVMaXN0LnByb3BlcnR5KCkpIHsKICAgICAgICAgY2FzZSBB
bmltYXRlZFByb3BlcnR5T3BhY2l0eTogewotICAgICAgICAgICAgY29uc3QgRmxvYXRBbmltYXRp
b25WYWx1ZSogZmxvYXRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFs
dWUqPihjdXJWYWx1ZSk7Ci0gICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGZsb2F0VmFsdWUtPnZh
bHVlKCkpOworICAgICAgICAgICAgY29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSYgZmxvYXRWYWx1
ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmPihjdXJWYWx1ZSk7Cisg
ICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGZsb2F0VmFsdWUudmFsdWUoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMjMxNSw3ICsyMzE2LDcg
QEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGkgPCAo
dmFsdWVMaXN0LnNpemUoKSAtIDEpKQotICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVu
ZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2
YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgYW5pbWF0aW9uKSk7CisgICAgICAgICAgICB0aW1pbmdG
dW5jdGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMg
PyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0aW9uKSk7CiAgICAg
fQogICAgIAogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGltZXMpOwpAQCAtMjMz
NCwxMyArMjMzNSwxMyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0
aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogICAgIHVuc2lnbmVkIGZy
b21JbmRleCA9ICFmb3J3YXJkczsKICAgICB1bnNpZ25lZCB0b0luZGV4ID0gZm9yd2FyZHM7CiAg
ICAgCi0gICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIHN0YXJ0VmFsdWUgPSBzdGF0
aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChmcm9t
SW5kZXgpKTsKLSAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogZW5kVmFsdWUgPSBz
dGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCh0
b0luZGV4KSk7CisgICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIHN0YXJ0VmFsdWUg
PSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5h
dChmcm9tSW5kZXgpKTsKKyAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSYgZW5kVmFs
dWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlz
dC5hdCh0b0luZGV4KSk7CiAgICAgCiAgICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7CiAgICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21UcmFuc2Zvcm0sIHRvVHJhbnNmb3JtOwotICAg
ICAgICBzdGFydFZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCBmcm9tVHJhbnNmb3JtKTsK
LSAgICAgICAgZW5kVmFsdWUtPnZhbHVlKCktPmFwcGx5KGJveFNpemUsIHRvVHJhbnNmb3JtKTsK
KyAgICAgICAgc3RhcnRWYWx1ZS52YWx1ZSgpLmFwcGx5KGJveFNpemUsIGZyb21UcmFuc2Zvcm0p
OworICAgICAgICBlbmRWYWx1ZS52YWx1ZSgpLmFwcGx5KGJveFNpemUsIHRvVHJhbnNmb3JtKTsK
IAogICAgICAgICAvLyBJZiBhbnkgbWF0cml4IGlzIHNpbmd1bGFyLCBDQSB3b24ndCBhbmltYXRl
IGl0IGNvcnJlY3RseS4gU28gZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGFuaW1hdGlvbgogICAgICAg
ICBpZiAoIWZyb21UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkgfHwgIXRvVHJhbnNmb3JtLmlzSW52
ZXJ0aWJsZSgpKQpAQCAtMjM1MSwzNCArMjM1MiwzNCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2
YQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChpc1RyYW5zZm9ybVR5cGVOdW1iZXIodHJhbnNm
b3JtT3BUeXBlKSkgewogICAgICAgICAgICAgZmxvYXQgZnJvbVZhbHVlOwotICAgICAgICAgICAg
Z2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlv
bkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCBmcm9tVmFsdWUpOworICAgICAgICAg
ICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rp
b25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKICAgICAgICAg
ICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKGZyb21WYWx1ZSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGZsb2F0IHRvVmFsdWU7Ci0gICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlv
blZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BU
eXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9u
VmFsdWUoZW5kVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBl
LCBib3hTaXplLCB0b1ZhbHVlKTsKICAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0
b1ZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc1RyYW5zZm9ybVR5cGVGbG9hdFBvaW50M0Qo
dHJhbnNmb3JtT3BUeXBlKSkgewogICAgICAgICAgICAgRmxvYXRQb2ludDNEIGZyb21WYWx1ZTsK
LSAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUo
KS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVl
KTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1
ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1
ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldEZyb21WYWx1ZShmcm9tVmFsdWUpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBGbG9hdFBvaW50M0QgdG9WYWx1ZTsKLSAgICAgICAgICAg
IGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9u
SW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHRvVmFsdWUpOworICAgICAgICAgICAg
Z2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5k
ZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHRvVmFsdWUpOwogICAgICAgICAgICAgYmFz
aWNBbmltLT5zZXRUb1ZhbHVlKHRvVmFsdWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNm
b3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwg
dHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCBmcm9tVmFsdWUpOworICAgICAgICAgICAgZ2V0VHJh
bnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCks
IHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKICAgICAgICAgICAgIGJhc2lj
QW5pbS0+c2V0RnJvbVZhbHVlKGZyb21WYWx1ZSk7CiAKICAgICAgICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IHRvVmFsdWU7Ci0gICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVl
KGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBi
b3hTaXplLCB0b1ZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUo
ZW5kVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hT
aXplLCB0b1ZhbHVlKTsKICAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1ZhbHVl
KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3Ig
Mi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0
YXJ0CiAgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcg
YW5pbWF0aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlmcmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1
bmN0aW9uLgotICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWlu
Z0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCBhbmltYXRpb24pOwor
ICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9u
Rm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKTsKICAgICBiYXNp
Y0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uLCAhZm9yd2FyZHMpOwogCiAg
ICAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgdmFsdWVGdW5jdGlvbiA9
IGdldFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJhbnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9ybU9wVHlw
ZSk7CkBAIC0yNDAwLDEyICsyNDAxLDEyIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFu
c2Zvcm1BbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhCiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIHVuc2lnbmVkIGluZGV4ID0gZm9yd2FyZHMgPyBpIDogKHZhbHVlTGlzdC5zaXplKCkgLSBp
IC0gMSk7Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBjdXJWYWx1ZSA9
IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0
KGluZGV4KSk7Ci0gICAgICAgIGtleVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLT5r
ZXlUaW1lKCkgOiAoMSAtIGN1clZhbHVlLT5rZXlUaW1lKCkpKTsKKyAgICAgICAgY29uc3QgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUmIGN1clZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoaW5kZXgpKTsKKyAgICAgICAga2V5VGlt
ZXMuYXBwZW5kKGZvcndhcmRzID8gY3VyVmFsdWUua2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS5r
ZXlUaW1lKCkpKTsKIAogICAgICAgICBpZiAoaXNNYXRyaXhBbmltYXRpb24pIHsKICAgICAgICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKLSAgICAgICAgICAgIGN1clZhbHVl
LT52YWx1ZSgpLT5hcHBseShib3hTaXplLCB0cmFuc2Zvcm0pOworICAgICAgICAgICAgY3VyVmFs
dWUudmFsdWUoKS5hcHBseShib3hTaXplLCB0cmFuc2Zvcm0pOwogCiAgICAgICAgICAgICAvLyBJ
ZiBhbnkgbWF0cml4IGlzIHNpbmd1bGFyLCBDQSB3b24ndCBhbmltYXRlIGl0IGNvcnJlY3RseS4g
U28gZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGFuaW1hdGlvbgogICAgICAgICAgICAgaWYgKCF0cmFu
c2Zvcm0uaXNJbnZlcnRpYmxlKCkpCkBAIC0yNDEzLDcgKzI0MTQsNyBAQCBib29sIEdyYXBoaWNz
TGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiB2YQogCiAgICAgICAgICAgICB0cmFuc2Zvcm1hdGlvbk1hdHJpeFZhbHVlcy5hcHBl
bmQodHJhbnNmb3JtKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbiogdHJhbnNmb3JtT3AgPSBjdXJWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rp
b25JbmRleCk7CisgICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9y
bU9wID0gY3VyVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4KTsKICAgICAgICAgICAgIGlm
IChpc1RyYW5zZm9ybVR5cGVOdW1iZXIodHJhbnNmb3JtT3BUeXBlKSkgewogICAgICAgICAgICAg
ICAgIGZsb2F0IHZhbHVlOwogICAgICAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFs
dWUodHJhbnNmb3JtT3AsIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdmFsdWUpOwpAQCAtMjQz
MCw3ICsyNDMxLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlv
bktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1
bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/
IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksIGFuaW1hdGlvbikpOworICAgICAg
ICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZh
bHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1h
dGlvbikpOwogICAgIH0KICAgICAKICAgICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRp
bWVzKTsKQEAgLTI0NjEsMTEgKzI0NjIsMTEgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEZp
bHRlckFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUKICAg
ICB1bnNpZ25lZCBmcm9tSW5kZXggPSAhZm9yd2FyZHM7CiAgICAgdW5zaWduZWQgdG9JbmRleCA9
IGZvcndhcmRzOwogCi0gICAgY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUqIGZyb21WYWx1ZSA9
IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGZy
b21JbmRleCkpOwotICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKiB0b1ZhbHVlID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQodG9JbmRl
eCkpOworICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJiBmcm9tVmFsdWUgPSBzdGF0aWNf
Y2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgp
KTsKKyAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSYgdG9WYWx1ZSA9IHN0YXRpY19jYXN0
PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKTsKIAot
ICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbU9wZXJhdGlvbiA9IGZyb21WYWx1ZS0+dmFs
dWUoKS0+YXQoZnVuY3Rpb25JbmRleCk7Ci0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiB0b09w
ZXJhdGlvbiA9IHRvVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpOworICAgIGNvbnN0
IEZpbHRlck9wZXJhdGlvbiogZnJvbU9wZXJhdGlvbiA9IGZyb21WYWx1ZS52YWx1ZSgpLmF0KGZ1
bmN0aW9uSW5kZXgpOworICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogdG9PcGVyYXRpb24gPSB0
b1ZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCk7CiAKICAgICBSZWZQdHI8RGVmYXVsdEZp
bHRlck9wZXJhdGlvbj4gZGVmYXVsdEZyb21PcGVyYXRpb247CiAgICAgUmVmUHRyPERlZmF1bHRG
aWx0ZXJPcGVyYXRpb24+IGRlZmF1bHRUb09wZXJhdGlvbjsKQEAgLTI0ODcsNyArMjQ4OCw3IEBA
IGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRpb25FbmRwb2ludHMoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlCiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQg
Zm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRo
ZSBzdGFydAogICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJz
aW5nIGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWlu
ZyBmdW5jdGlvbi4KLSAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCBhbmltYXRpb24pLCAhZm9yd2Fy
ZHMpOworICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb25Gb3JB
bmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24pLCAhZm9yd2FyZHMpOwog
CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNTAzLDExICsyNTA0LDExIEBAIGJvb2wgR3JhcGhp
Y3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmIHZhbHVlCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNp
emUoKTsgKytpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gZm9yd2FyZHMgPyBpIDogKHZh
bHVlTGlzdC5zaXplKCkgLSBpIC0gMSk7Ci0gICAgICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZh
bHVlKiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4o
dmFsdWVMaXN0LmF0KGluZGV4KSk7Ci0gICAgICAgIGtleVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/
IGN1clZhbHVlLT5rZXlUaW1lKCkgOiAoMSAtIGN1clZhbHVlLT5rZXlUaW1lKCkpKTsKKyAgICAg
ICAgY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIGN1clZhbHVlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoaW5kZXgpKTsKKyAgICAgICAg
a2V5VGltZXMuYXBwZW5kKGZvcndhcmRzID8gY3VyVmFsdWUua2V5VGltZSgpIDogKDEgLSBjdXJW
YWx1ZS5rZXlUaW1lKCkpKTsKIAotICAgICAgICBpZiAoY3VyVmFsdWUtPnZhbHVlKCktPm9wZXJh
dGlvbnMoKS5zaXplKCkgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KGZ1bmN0aW9uSW5kZXgpKQotICAg
ICAgICAgICAgdmFsdWVzLmFwcGVuZChjdXJWYWx1ZS0+dmFsdWUoKS0+b3BlcmF0aW9ucygpW2Z1
bmN0aW9uSW5kZXhdKTsKKyAgICAgICAgaWYgKGN1clZhbHVlLnZhbHVlKCkub3BlcmF0aW9ucygp
LnNpemUoKSA+IHN0YXRpY19jYXN0PHNpemVfdD4oZnVuY3Rpb25JbmRleCkpCisgICAgICAgICAg
ICB2YWx1ZXMuYXBwZW5kKGN1clZhbHVlLnZhbHVlKCkub3BlcmF0aW9ucygpW2Z1bmN0aW9uSW5k
ZXhdKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoIWRlZmF1bHRPcGVyYXRpb24p
CiAgICAgICAgICAgICAgICAgZGVmYXVsdE9wZXJhdGlvbiA9IERlZmF1bHRGaWx0ZXJPcGVyYXRp
b246OmNyZWF0ZShmaWx0ZXJPcCk7CkBAIC0yNTE1LDcgKzI1MTYsNyBAQCBib29sIEdyYXBoaWNz
TGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiB2YWx1ZQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGkgPCAodmFsdWVMaXN0LnNpemUo
KSAtIDEpKQotICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlv
bkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5k
ZXggLSAxKSwgYW5pbWF0aW9uKSk7CisgICAgICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5k
KHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZh
bHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0aW9uKSk7CiAgICAgfQogICAgIAogICAgIGtl
eWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGltZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCAwMmMwMjI3
ZTk4YzZjNTJlODk0M2FkYWJkZDhlMGM5NGE2MTRhNTIwLi4wOWNjY2U0NTFmNzYxNTI3NzM2MzNj
YWVhMDkxNDY5NGU2MWRlZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMjA1LDcgKzIwNSw3IEBAIHByaXZh
dGU6CiAgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVLZXlmcmFtZUFu
aW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29sIGFkZGl0aXZlKTsK
ICAgICB2b2lkIHNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qLCBjb25zdCBBbmlt
YXRpb24qLCBib29sIGFkZGl0aXZlKTsKICAgICAKLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiog
dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSosIGNv
bnN0IEFuaW1hdGlvbiopOworICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlv
bkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiwgY29uc3QgQW5pbWF0aW9u
Jik7CiAgICAgCiAgICAgYm9vbCBzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVW
YWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CiAgICAg
Ym9vbCBzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25z
dCBBbmltYXRpb24qLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDFkZWZiNTJiMzRhYTgzOWE5
NDMzZmZiNDAwM2YxMTU0MWY5MDFlODkuLjY0MTllMGNiYmYxZDlmYmUwNjAyMDA4ZjdmNjg1MTk2
Y2E5ODM4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCkBAIC0yMTA3LDE0ICsyMTA3LDE0IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5n
OjpzdGFydEFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCwgY29uc3QgQW5pbWF0aW9uKiBhbmlt
CiAgICAgICAgIAogICAgICAgICBib29sIGlzRmlyc3RPckxhc3RLZXlmcmFtZSA9IGtleSA9PSAw
IHx8IGtleSA9PSAxOwogICAgICAgICBpZiAoKGhhc1RyYW5zZm9ybSAmJiBpc0ZpcnN0T3JMYXN0
S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5
V2Via2l0VHJhbnNmb3JtKSkKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoYWRv
cHRQdHIobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleSwgJihrZXlmcmFtZVN0eWxlLT50
cmFuc2Zvcm0oKSksIHRmKSkpOwotICAgICAgICAKKyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rv
ci5pbnNlcnQoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXksIGtleWZyYW1lU3R5
bGUtPnRyYW5zZm9ybSgpLCB0ZikpOworCiAgICAgICAgIGlmICgoaGFzT3BhY2l0eSAmJiBpc0Zp
cnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENT
U1Byb3BlcnR5T3BhY2l0eSkpCi0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChhZG9w
dFB0cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZShrZXksIGtleWZyYW1lU3R5bGUtPm9wYWNpdHko
KSwgdGYpKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChGbG9hdEFuaW1hdGlv
blZhbHVlOjpjcmVhdGUoa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7CiAKICNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgICAgIGlmICgoaGFzRmlsdGVyICYmIGlzRmlyc3RP
ckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJv
cGVydHlXZWJraXRGaWx0ZXIpKQotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChhZG9w
dFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUoa2V5LCAmKGtleWZyYW1lU3R5bGUtPmZpbHRl
cigpKSwgdGYpKSk7CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KEZpbHRlckFuaW1h
dGlvblZhbHVlOjpjcmVhdGUoa2V5LCBrZXlmcmFtZVN0eWxlLT5maWx0ZXIoKSwgdGYpKTsKICNl
bmRpZgogICAgIH0KIApAQCAtMjE1NCw4ICsyMTU0LDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tp
bmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9w
ZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiBvcGFjaXR5QW5pbSA9IHRvU3R5bGUtPnRyYW5z
aXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHkpOwogICAgICAgICBpZiAob3BhY2l0
eUFuaW0gJiYgIW9wYWNpdHlBbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAg
ICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3Qgb3BhY2l0eVZlY3RvcihBbmltYXRlZFByb3BlcnR5T3Bh
Y2l0eSk7Ci0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcgRmxv
YXRBbmltYXRpb25WYWx1ZSgwLCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5
KCkpKSkpOwotICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IEZs
b2F0QW5pbWF0aW9uVmFsdWUoMSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHko
KSkpKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChGbG9hdEFuaW1hdGlvblZh
bHVlOjpjcmVhdGUoMCwgY29tcG9zaXRpbmdPcGFjaXR5KGZyb21TdHlsZS0+b3BhY2l0eSgpKSkp
OworICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoRmxvYXRBbmltYXRpb25WYWx1ZTo6
Y3JlYXRlKDEsIGNvbXBvc2l0aW5nT3BhY2l0eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7CiAgICAg
ICAgICAgICAvLyBUaGUgYm94U2l6ZSBwYXJhbSBpcyBvbmx5IHVzZWQgZm9yIHRyYW5zZm9ybSBh
bmltYXRpb25zICh3aGljaCBjYW4gb25seSBydW4gb24gUmVuZGVyQm94ZXMpLCBzbyB3ZSBwYXNz
IGFuIGVtcHR5IHNpemUgaGVyZS4KICAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFk
ZEFuaW1hdGlvbihvcGFjaXR5VmVjdG9yLCBJbnRTaXplKCksIG9wYWNpdHlBbmltLCBHcmFwaGlj
c0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5T3BhY2l0
eSksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhl
IGNvcnJlY3Qgb3BhY2l0eSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNv
IHNldCB0aGUgZmluYWwgb3BhY2l0eS4KQEAgLTIxNjksOCArMjE2OSw4IEBAIGJvb2wgUmVuZGVy
TGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3Bl
cnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogdHJhbnNmb3JtQW5pbSA9IHRv
U3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7
CiAgICAgICAgIGlmICh0cmFuc2Zvcm1BbmltICYmICF0cmFuc2Zvcm1BbmltLT5pc0VtcHR5T3Ja
ZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgdHJhbnNmb3Jt
VmVjdG9yKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwotICAgICAgICAgICAgdHJh
bnNmb3JtVmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUo
MCwgJmZyb21TdHlsZS0+dHJhbnNmb3JtKCkpKSk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0
b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgxLCAmdG9TdHls
ZS0+dHJhbnNmb3JtKCkpKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlOjpjcmVhdGUoMCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkp
OworICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChUcmFuc2Zvcm1BbmltYXRpb25W
YWx1ZTo6Y3JlYXRlKDEsIHRvU3R5bGUtPnRyYW5zZm9ybSgpKSk7CiAgICAgICAgICAgICBpZiAo
bV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odHJhbnNmb3JtVmVjdG9yLCB0b1JlbmRlckJv
eChyZW5kZXJlcigpKS0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpLnNpemUoKSwgdHJhbnNm
b3JtQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0
ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgdHJhbnNmb3JtIGlzIHZpc2libGUgd2hl
biB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCB0cmFuc2Zvcm0uCiAgICAg
ICAgICAgICAgICAgdXBkYXRlVHJhbnNmb3JtKHRvU3R5bGUpOwpAQCAtMjE4NCw4ICsyMTg0LDgg
QEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9m
ZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiBmaWx0
ZXJBbmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
RmlsdGVyKTsKICAgICAgICAgaWYgKGZpbHRlckFuaW0gJiYgIWZpbHRlckFuaW0tPmlzRW1wdHlP
clplcm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCBmaWx0ZXJW
ZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlcik7Ci0gICAgICAgICAgICBmaWx0ZXJW
ZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGaWx0ZXJBbmltYXRpb25WYWx1ZSgwLCAmZnJvbVN0
eWxlLT5maWx0ZXIoKSkpKTsKLSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoYWRvcHRQ
dHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKDEsICZ0b1N0eWxlLT5maWx0ZXIoKSkpKTsKKyAg
ICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoRmlsdGVyQW5pbWF0aW9uVmFsdWU6OmNyZWF0
ZSgwLCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5z
ZXJ0KEZpbHRlckFuaW1hdGlvblZhbHVlOjpjcmVhdGUoMSwgdG9TdHlsZS0+ZmlsdGVyKCkpKTsK
ICAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihmaWx0ZXJWZWN0
b3IsIEludFNpemUoKSwgZmlsdGVyQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZv
clRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlciksIHRpbWVPZmZzZXQpKSB7
CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgZmlsdGVyIGlz
IHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBmaWx0
ZXIuCiAgICAgICAgICAgICAgICAgdXBkYXRlRmlsdGVycyh0b1N0eWxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDQx
MTA3MzA4OWNjNTUzZmM3OTE0ODE5YTYwZWRlMTc5NjRjYWE3OWUuLjRhYzdkN2QxODhjOWE3ZWE4
ZTcxOTcxNDc4Y2IyYjcxMGJjMTA5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtNjQ1LDE5ICs2NDUsMTkgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPEdyYXBoaWNzTGF5ZXJBbmltYXRpb24+OjplbmNvZGUoQXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyLCBjb24KICAgICBlbmNvZGVyLmVuY29kZUVudW0oa2V5ZnJhbWVzLnBy
b3BlcnR5KCkpOwogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtleWZyYW1l
cy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5ZnJhbWVzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlKiB2YWx1ZSA9IGtleWZyYW1lcy5h
dChpKTsKLSAgICAgICAgZW5jb2RlciA8PCB2YWx1ZS0+a2V5VGltZSgpOwotICAgICAgICBlbmNv
ZGVUaW1pbmdGdW5jdGlvbihlbmNvZGVyLCB2YWx1ZS0+dGltaW5nRnVuY3Rpb24oKSk7CisgICAg
ICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiB2YWx1ZSA9IGtleWZyYW1lcy5hdChpKTsKKyAgICAg
ICAgZW5jb2RlciA8PCB2YWx1ZS5rZXlUaW1lKCk7CisgICAgICAgIGVuY29kZVRpbWluZ0Z1bmN0
aW9uKGVuY29kZXIsIHZhbHVlLnRpbWluZ0Z1bmN0aW9uKCkpOwogICAgICAgICBzd2l0Y2ggKGtl
eWZyYW1lcy5wcm9wZXJ0eSgpKSB7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNp
dHk6Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0
aW9uVmFsdWUqPih2YWx1ZSktPnZhbHVlKCk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRp
Y19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmPih2YWx1ZSkudmFsdWUoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm06Ci0gICAgICAgICAgICBlbmNvZGVyIDw8ICpzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZSo+KHZhbHVlKS0+dmFsdWUoKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwg
KnN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFsdWUpLnZhbHVl
KCk7CiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgICAg
IGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlcjoKLSAgICAgICAgICAgIGVuY29kZXIg
PDwgKnN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odmFsdWUpLT52YWx1
ZSgpOworICAgICAgICAgICAgZW5jb2RlciA8PCAqc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5p
bWF0aW9uVmFsdWUmPih2YWx1ZSkudmFsdWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlm
CiAgICAgICAgIGRlZmF1bHQ6CkBAIC03MzMsMTQgKzczMywxNCBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbj46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29k
ZXIsIEdyYQogICAgICAgICAgICAgZmxvYXQgdmFsdWU7CiAgICAgICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBrZXlmcmFtZXMuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtl
eVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpKTsKKyAgICAgICAgICAgIGtleWZyYW1lcy5p
bnNlcnQoRmxvYXRBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdG
dW5jdGlvbikpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
QW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybTogewogICAgICAgICAgICAgVHJhbnNmb3Jt
T3BlcmF0aW9ucyB0cmFuc2Zvcm07CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRy
YW5zZm9ybSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAga2V5
ZnJhbWVzLmluc2VydChhZG9wdFB0cihuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoa2V5VGlt
ZSwgJnRyYW5zZm9ybSwgdGltaW5nRnVuY3Rpb24pKSk7CisgICAgICAgICAgICBrZXlmcmFtZXMu
aW5zZXJ0KFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpjcmVhdGUoa2V5VGltZSwgdHJhbnNmb3Jt
LCB0aW1pbmdGdW5jdGlvbikpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAjaWYg
RU5BQkxFKENTU19GSUxURVJTKQpAQCAtNzQ4LDcgKzc0OCw3IEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxHcmFwaGljc0xheWVyQW5pbWF0aW9uPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgR3JhCiAgICAgICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcjsKICAgICAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZmlsdGVyKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICBrZXlmcmFtZXMuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGaWx0ZXJBbmlt
YXRpb25WYWx1ZShrZXlUaW1lLCAmZmlsdGVyLCB0aW1pbmdGdW5jdGlvbikpKTsKKyAgICAgICAg
ICAgIGtleWZyYW1lcy5pbnNlcnQoRmlsdGVyQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXlUaW1l
LCBmaWx0ZXIsIHRpbWluZ0Z1bmN0aW9uKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200945</attachid>
            <date>2013-05-07 11:26:47 -0700</date>
            <delta_ts>2013-05-07 12:08:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115738-20130507112553.patch</filename>
            <type>text/plain</type>
            <size>46974</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmYzMGI4M2ExOTVhN2U4
NzNjZWRlNzE0NzE2ODkwMjRlMDdjZWZlYS4uNGY1NGQyMWI2NTUzOWMzNWM4NGY4YWVlMDQxNzMy
ZThiOTUzN2FlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTA1LTA3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgS2V5
ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN0YXRpYyBjcmVhdGUoKSBmdW5jdGlvbnMg
dG8gdGhlIEFuaW1hdGlvblZhbHVlIHN1YmNsYXNzZXMsIGFuZCBjaGFuZ2UgYSBidW5jaCBvZiBw
YXJhbWV0ZXJzCisgICAgICAgIGFuZCByZXR1cm4gdmFsdWVzIHRoYXQgY2FuIG5ldmVyIGJlIG51
bGwgZnJvbSBwb2ludGVyIHR5cGVzIHRvIHJlZmVyZW5jZSB0eXBlcyB0byBiZXR0ZXIgaW5kaWNh
dGUgdGhpcy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJPcGVyYXRpb25zQXQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dmFsaWRhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdGlvbnNBdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjp2YWxpZGF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKEFuaW1hdGlvblZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblZhbHVlOjpBbmltYXRpb25WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoRmxvYXRB
bmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpG
bG9hdEFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OnZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckFuaW1hdGlvblZhbHVlOjp2YWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6RmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoRmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVW
YWx1ZUxpc3Q6On5LZXlmcmFtZVZhbHVlTGlzdCk6CisgICAgICAgIChLZXlmcmFtZVZhbHVlTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6YXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVGaWx0ZXJBbmltYXRp
b25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRp
b25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0
ZXJBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAoR3JhcGhpY3NMYXllckNBKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorCiAyMDEzLTA1LTA2ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBhbiAnaXNSZWFkT25seScgbWVt
YmVyIHRvIElETCBwYXJzZSB0cmVlIHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUzNjgxNDU2NGY4
NmRjYjQ3NjViNzFmMzNiZDgwYzA1MTVjMTVlNTcuLjBhNjI4YzQ2NWRkNTY1YTI1NDk0MTNmMzY0
MDI3MTJlN2UyOTI2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wNS0wNyAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVw
IEtleWZyYW1lVmFsdWVMaXN0IGFuZCByZWxhdGVkIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTczOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBmb3IgV2ViQ29yZSBjaGFuZ2Vz
LgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKwog
MjAxMy0wNS0wNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHNvbWUgdW5uZWNlc3Nhcnkgc29mdCBsaW5raW5nIGluIE5ldHdvcmtQcm9jZXNzLiAo
VGFrZSAyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcAppbmRleCBjNzhiNWJlYjI2OGMxOGQyZmJlZTRmZjBlYWNmODA3MTQzYWNiZjA3
Li4wMWI2YTNmZDdhMmIwYTFmZmE0ZDZjZjU0NWFhZjBjNmU1MTdhODJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtNDA5
LDkgKzQwOSw5IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6ZGlzdHJpYnV0ZU9wYWNpdHkoZmxvYXQg
YWNjdW11bGF0ZWRPcGFjaXR5KQogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotc3RhdGlj
IGlubGluZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQorc3RhdGljIGlubGlu
ZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkp
LT52YWx1ZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSY+KHZhbHVlTGlzdC5hdChpbmRleCkpLnZhbHVlKCk7CiB9CiAKIGludCBHcmFwaGljc0xh
eWVyOjp2YWxpZGF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZh
bHVlTGlzdCkKQEAgLTQyNCwyMyArNDI0LDIzIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCkKICAg
ICAvLyBFbXB0eSBmaWx0ZXJzIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBub24t
ZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZQogICAgIHNpemVfdCBmaXJzdEluZGV4ID0gMDsK
ICAgICBmb3IgKCA7IGZpcnN0SW5kZXggPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2ZpcnN0SW5kZXgp
IHsKLSAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGZpcnN0SW5kZXgp
LT5vcGVyYXRpb25zKCkuc2l6ZSgpID4gMCkKKyAgICAgICAgaWYgKCFmaWx0ZXJPcGVyYXRpb25z
QXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS5vcGVyYXRpb25zKCkuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKGZpcnN0SW5kZXggPj0gdmFsdWVMaXN0LnNp
emUoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyog
Zmlyc3RWYWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KTsKKyAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaXJzdFZhbCA9IGZpbHRlck9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGZpcnN0SW5kZXgpOwogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdElu
ZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zKiB2YWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKKyAg
ICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdmFsID0gZmlsdGVyT3BlcmF0aW9uc0F0KHZh
bHVlTGlzdCwgaSk7CiAgICAgICAgIAogICAgICAgICAvLyBBbiBlbXRweSBmaWx0ZXIgbGlzdCBt
YXRjaGVzIGFueXRoaW5nLgotICAgICAgICBpZiAodmFsLT5vcGVyYXRpb25zKCkuaXNFbXB0eSgp
KQorICAgICAgICBpZiAodmFsLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRj
aCgqdmFsKSkKKyAgICAgICAgaWYgKCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAg
ICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgCkBAIC00NTIsOSArNDUyLDkgQEAgaW50
IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWVMaXN0KQogLy8gVGhlIGhhc0JpZ1JvdGF0aW9uIGZsYWcgd2lsbCBhbHdh
eXMgcmV0dXJuIGZhbHNlIGlmIGlzVmFsaWQgaXMgZmFsc2UuIE90aGVyd2lzZSBoYXNCaWdSb3Rh
dGlvbiBpcyAKIC8vIHRydWUgaWYgdGhlIHJvdGF0aW9uIGJldHdlZW4gYW55IHR3byBrZXlmcmFt
ZXMgaXMgPj0gMTgwIGRlZ3JlZXMuCiAKLXN0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9ucyogb3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3Qs
IHNpemVfdCBpbmRleCkKK3N0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYg
b3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIHNpemVfdCBp
bmRleCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUqPih2YWx1ZUxpc3QuYXQoaW5kZXgpKS0+dmFsdWUoKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoaW5kZXgp
KS52YWx1ZSgpOwogfQogCiBpbnQgR3JhcGhpY3NMYXllcjo6dmFsaWRhdGVUcmFuc2Zvcm1PcGVy
YXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGJvb2wmIGhhc0JpZ1Jv
dGF0aW9uKQpAQCAtNDY5LDI0ICs0NjksMjQgQEAgaW50IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRl
VHJhbnNmb3JtT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXMKICAg
ICAvLyBFbXB0eSB0cmFuc2Zvcm1zIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBu
b24tZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZS4KICAgICBzaXplX3QgZmlyc3RJbmRleCA9
IDA7CiAgICAgZm9yICggOyBmaXJzdEluZGV4IDwgdmFsdWVMaXN0LnNpemUoKTsgKytmaXJzdElu
ZGV4KSB7Ci0gICAgICAgIGlmIChvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS0+
b3BlcmF0aW9ucygpLnNpemUoKSA+IDApCisgICAgICAgIGlmICghb3BlcmF0aW9uc0F0KHZhbHVl
TGlzdCwgZmlyc3RJbmRleCkub3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAKICAgICBpZiAoZmlyc3RJbmRleCA+PSB2YWx1ZUxpc3Quc2l6ZSgp
KQogICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIAotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbnMqIGZpcnN0VmFsID0gb3BlcmF0aW9uc0F0KHZhbHVlTGlzdCwgZmlyc3RJbmRleCk7Cisg
ICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZmlyc3RWYWwgPSBvcGVyYXRpb25zQXQodmFs
dWVMaXN0LCBmaXJzdEluZGV4KTsKICAgICAKICAgICAvLyBTZWUgaWYgdGhlIGtleWZyYW1lcyBh
cmUgdmFsaWQuCiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0SW5kZXggKyAxOyBpIDwgdmFsdWVM
aXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZh
bCA9IG9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGkpOworICAgICAgICBjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKICAgICAgICAgCi0g
ICAgICAgIC8vIEFuIGVtdHB5IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCi0gICAg
ICAgIGlmICh2YWwtPm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCisgICAgICAgIC8vIEFuIGVtcHR5
IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCisgICAgICAgIGlmICh2YWwub3BlcmF0
aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0g
ICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRjaCgqdmFsKSkKKyAgICAgICAgaWYg
KCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAgICAgICAgICAgIHJldHVybiAtMTsK
ICAgICB9CiAKQEAgLTQ5NCwyMiArNDk0LDIyIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzCiAg
ICAgZG91YmxlIGxhc3RSb3RBbmdsZSA9IDAuMDsKICAgICBkb3VibGUgbWF4Um90QW5nbGUgPSAt
MS4wOwogICAgICAgICAKLSAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGZpcnN0VmFsLT5vcGVy
YXRpb25zKCkuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHR5cGUgPSBmaXJzdFZhbC0+b3BlcmF0aW9ucygpLmF0KGopLT5nZXRPcGVyYXRp
b25UeXBlKCk7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBmaXJzdFZhbC5vcGVyYXRpb25z
KCkuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHR5cGUgPSBmaXJzdFZhbC5vcGVyYXRpb25zKCkuYXQoaiktPmdldE9wZXJhdGlvblR5cGUo
KTsKICAgICAgICAgCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSByb3RhdGlvbiBlbnRyeSwgd2Ug
bmVlZCB0byBzZWUgaWYgYW55IGFuZ2xlIGRpZmZlcmVuY2VzIGFyZSA+PSAxODAgZGVnCiAgICAg
ICAgIGlmICh0eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1ggfHwKICAgICAgICAg
ICAgIHR5cGUgPT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWSB8fAogICAgICAgICAgICAg
dHlwZSA9PSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9aIHx8CiAgICAgICAgICAgICB0eXBl
ID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEKSB7Ci0gICAgICAgICAgICBsYXN0Um90
QW5nbGUgPSBzdGF0aWNfY2FzdDxSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihmaXJzdFZhbC0+
b3BlcmF0aW9ucygpLmF0KGopLmdldCgpKS0+YW5nbGUoKTsKKyAgICAgICAgICAgIGxhc3RSb3RB
bmdsZSA9IHN0YXRpY19jYXN0PFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KGZpcnN0VmFsLm9w
ZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChtYXhSb3RBbmdsZSA8IDApCiAgICAgICAgICAgICAgICAgbWF4Um90QW5nbGUgPSBm
YWJzKGxhc3RSb3RBbmdsZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBmaXJzdEluZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZhbCA9IG9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGkpOwotICAgICAgICAgICAgICAgIGRvdWJsZSByb3RBbmdsZSA9IHZhbC0+b3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLT5vcGVyYXRpb25zKCkuYXQoaikuZ2V0KCkpLT5hbmdsZSgpKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQo
dmFsdWVMaXN0LCBpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgcm90QW5nbGUgPSB2YWwub3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLm9wZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCkpOwogICAgICAg
ICAgICAgICAgIGRvdWJsZSBkaWZmQW5nbGUgPSBmYWJzKHJvdEFuZ2xlIC0gbGFzdFJvdEFuZ2xl
KTsKICAgICAgICAgICAgICAgICBpZiAoZGlmZkFuZ2xlID4gbWF4Um90QW5nbGUpCiAgICAgICAg
ICAgICAgICAgICAgIG1heFJvdEFuZ2xlID0gZGlmZkFuZ2xlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDEzMTFmYjZlYmM3ZDg0
ZTFhODIxMWQxYjc0ODk2YmUwYjQ0ZTU1MTUuLjE2ZGMwN2ZlYmI3YzhkODJlN2Q5MjdkNzYzYTdl
MDE1YmE4NzlmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTcyLDE4ICs3MiwxOSBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKIGNsYXNzIEFuaW1hdGlvblZhbHVlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBQ
YXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCi0gICAgICAgIDog
bV9rZXlUaW1lKGtleVRpbWUpCi0gICAgICAgICwgbV90aW1pbmdGdW5jdGlvbih0aW1pbmdGdW5j
dGlvbikKLSAgICB7Ci0gICAgfQotICAgIAogICAgIHZpcnR1YWwgfkFuaW1hdGlvblZhbHVlKCkg
eyB9CiAKICAgICBmbG9hdCBrZXlUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9rZXlUaW1lOyB9CiAg
ICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90aW1pbmdGdW5jdGlvbi5nZXQoKTsgfQogICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRp
b25WYWx1ZT4gY2xvbmUoKSBjb25zdCA9IDA7CiAKK3Byb3RlY3RlZDoKKyAgICBBbmltYXRpb25W
YWx1ZShmbG9hdCBrZXlUaW1lLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5j
dGlvbiA9IDApCisgICAgICAgIDogbV9rZXlUaW1lKGtleVRpbWUpCisgICAgICAgICwgbV90aW1p
bmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbikKKyAgICB7CisgICAgfQorCiBwcml2YXRlOgogICAg
IGZsb2F0IG1fa2V5VGltZTsKICAgICBSZWZQdHI8VGltaW5nRnVuY3Rpb24+IG1fdGltaW5nRnVu
Y3Rpb247CkBAIC05MywxNiArOTQsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUg
bW92ZWQgdG8gaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIEZsb2F0QW5pbWF0aW9uVmFsdWUg
OiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogcHVibGljOgotICAgIEZsb2F0QW5pbWF0aW9uVmFs
dWUoZmxvYXQga2V5VGltZSwgZmxvYXQgdmFsdWUsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+
IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0
aW1pbmdGdW5jdGlvbikKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHN0YXRpYyBQYXNz
T3duUHRyPEZsb2F0QW5pbWF0aW9uVmFsdWU+IGNyZWF0ZShmbG9hdCBrZXlUaW1lLCBmbG9hdCB2
YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24gPSAwKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093
blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKCp0aGlzKSk7CiAgICAg
fQotICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgqdGhpcykp
OyB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJp
dmF0ZToKKyAgICBGbG9hdEFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRpbWUsIGZsb2F0IHZhbHVl
LCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgOiBB
bmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgLCBtX3ZhbHVl
KHZhbHVlKQorICAgIHsKKyAgICB9CisKICAgICBmbG9hdCBtX3ZhbHVlOwogfTsKIApAQCAtMTEw
LDE3ICsxMjAsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRz
IG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGlj
IEFuaW1hdGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiB2YWx1ZSA9
IDAsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAg
ICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMg
UGFzc093blB0cjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUs
IGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlv
bikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xv
bmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKLSAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAg
ICAgbV92YWx1ZSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSgqdGhpcykpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICBj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7
IH0KIAogcHJpdmF0ZToKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1l
LCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5j
dGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFsdWUoa2V5VGltZSwg
dGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQor
CiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKIApAQCAtMTI5LDE3ICsxNDcs
MjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRzIG93biBoZWFk
ZXIgZmlsZS4KIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZh
bHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBGaWx0ZXJBbmltYXRpb25WYWx1ZShmbG9hdCBr
ZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWx1ZSA9IDAsIFBhc3NSZWZQdHI8VGlt
aW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1
ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMgUGFzc093blB0cjxGaWx0ZXJB
bmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUsIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDAp
CiAgICAgewotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICBtX3ZhbHVlID0gKnZhbHVl
OworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQ
dHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUoKnRo
aXMpKTsKKyAgICB9CisKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKKyAgICBGaWx0ZXJBbmltYXRpb25WYWx1
ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0
cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFs
dWUoa2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAg
ICB7CisgICAgfQorCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKICNlbmRpZgpA
QCAtMTYxLDYgKzE4NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQo
b3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOwogICAgIH0KIAorICAgIH5LZXlmcmFtZVZhbHVl
TGlzdCgpCisgICAgeworICAgIH0KKwogICAgIEtleWZyYW1lVmFsdWVMaXN0JiBvcGVyYXRvcj0o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKICAgICAgICAgS2V5ZnJhbWVW
YWx1ZUxpc3QgY29weShvdGhlcik7CkBAIC0xNzcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIEFu
aW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHk7IH0K
IAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOyB9Ci0g
ICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlcy5hdChpKS5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhdChzaXplX3Qg
aSkgY29uc3QgeyByZXR1cm4gKm1fdmFsdWVzLmF0KGkpOyB9CiAgICAgCiAgICAgLy8gSW5zZXJ0
LCBzb3J0ZWQgYnkga2V5VGltZS4KICAgICB2b2lkIGluc2VydChQYXNzT3duUHRyPGNvbnN0IEFu
aW1hdGlvblZhbHVlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCmluZGV4IGQwMjY1OThiMDI2ZmJk
MDA1NGNlYmM2MzcwZjFhZmVlMzQ0OWNjYjUuLjk1ZDg2OWEwMWI0NzhhNmM2N2Y1ZjkwZTY0MmNl
OWVkZWIwMGI4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCkBAIC0zOSwyNyArMzksMjcgQEAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRGdW5jKEZpbHRl
ck9wZXJhdGlvbiogZnJvbU9wLCBGaWwKIH0KIAogCi1zdGF0aWMgRmlsdGVyT3BlcmF0aW9ucyBh
cHBseUZpbHRlckFuaW1hdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmcm9tLCBjb25zdCBG
aWx0ZXJPcGVyYXRpb25zKiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBib3hT
aXplKQorc3RhdGljIEZpbHRlck9wZXJhdGlvbnMgYXBwbHlGaWx0ZXJBbmltYXRpb24oY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZnJvbSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdG8sIGRvdWJs
ZSBwcm9ncmVzcywgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKIHsKICAgICAvLyBGaXJzdCBmcmFt
ZSBvZiBhbiBhbmltYXRpb24uCiAgICAgaWYgKCFwcm9ncmVzcykKLSAgICAgICAgcmV0dXJuICpm
cm9tOworICAgICAgICByZXR1cm4gZnJvbTsKIAogICAgIC8vIExhc3QgZnJhbWUgb2YgYW4gYW5p
bWF0aW9uLgogICAgIGlmIChwcm9ncmVzcyA9PSAxKQotICAgICAgICByZXR1cm4gKnRvOworICAg
ICAgICByZXR1cm4gdG87CiAKLSAgICBpZiAoIWZyb20tPmlzRW1wdHkoKSAmJiAhdG8tPmlzRW1w
dHkoKSAmJiAhZnJvbS0+b3BlcmF0aW9uc01hdGNoKCp0bykpCi0gICAgICAgIHJldHVybiAqdG87
CisgICAgaWYgKCFmcm9tLmlzRW1wdHkoKSAmJiAhdG8uaXNFbXB0eSgpICYmICFmcm9tLm9wZXJh
dGlvbnNNYXRjaCh0bykpCisgICAgICAgIHJldHVybiB0bzsKIAogICAgIEZpbHRlck9wZXJhdGlv
bnMgcmVzdWx0OwogCi0gICAgc2l6ZV90IGZyb21TaXplID0gZnJvbS0+b3BlcmF0aW9ucygpLnNp
emUoKTsKLSAgICBzaXplX3QgdG9TaXplID0gdG8tPm9wZXJhdGlvbnMoKS5zaXplKCk7CisgICAg
c2l6ZV90IGZyb21TaXplID0gZnJvbS5vcGVyYXRpb25zKCkuc2l6ZSgpOworICAgIHNpemVfdCB0
b1NpemUgPSB0by5vcGVyYXRpb25zKCkuc2l6ZSgpOwogICAgIHNpemVfdCBzaXplID0gc3RkOjpt
YXgoZnJvbVNpemUsIHRvU2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKLSAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZnJvbU9wID0gKGkgPCBmcm9t
U2l6ZSkgPyBmcm9tLT5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwotICAgICAgICBSZWZQdHI8
RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8tPm9wZXJhdGlvbnMoKVtp
XS5nZXQoKSA6IDA7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZyb21PcCA9IChp
IDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOworICAgICAgICBS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8ub3BlcmF0aW9u
cygpW2ldLmdldCgpIDogMDsKICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRl
ZE9wID0gdG9PcCA/IGJsZW5kRnVuYyhmcm9tT3AuZ2V0KCksIHRvT3AuZ2V0KCksIHByb2dyZXNz
LCBib3hTaXplKSA6IChmcm9tT3AgPyBibGVuZEZ1bmMoMCwgZnJvbU9wLmdldCgpLCBwcm9ncmVz
cywgYm94U2l6ZSwgdHJ1ZSkgOiAwKTsKICAgICAgICAgaWYgKGJsZW5kZWRPcCkKICAgICAgICAg
ICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7CkBAIC0xNTUsNTEgKzE1
NSw1MSBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVuY3Rpb24oY29uc3QgVGlt
aW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbAogICAgIHJldHVybiBwcm9ncmVzczsKIH0K
IAotc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMq
IHRvLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGJvb2wgbGlzdHNN
YXRjaCkKK3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcHBseVRyYW5zZm9ybUFuaW1hdGlv
bihjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b25zJiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBib29sIGxp
c3RzTWF0Y2gpCiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OwogCiAgICAgLy8g
Rmlyc3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmICghcHJvZ3Jlc3MpIHsKLSAgICAg
ICAgZnJvbS0+YXBwbHkoYm94U2l6ZSwgbWF0cml4KTsKKyAgICAgICAgZnJvbS5hcHBseShib3hT
aXplLCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIExh
c3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmIChwcm9ncmVzcyA9PSAxKSB7Ci0gICAg
ICAgIHRvLT5hcHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICB0by5hcHBseShib3hTaXpl
LCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIElmIHdl
IGhhdmUgaW5jb21wYXRpYmxlIG9wZXJhdGlvbiBsaXN0cywgd2UgYmxlbmQgdGhlIHJlc3VsdGlu
ZyBtYXRyaWNlcy4KICAgICBpZiAoIWxpc3RzTWF0Y2gpIHsKICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggZnJvbU1hdHJpeDsKLSAgICAgICAgdG8tPmFwcGx5KGJveFNpemUsIG1hdHJpeCk7
Ci0gICAgICAgIGZyb20tPmFwcGx5KGJveFNpemUsIGZyb21NYXRyaXgpOworICAgICAgICB0by5h
cHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICBmcm9tLmFwcGx5KGJveFNpemUsIGZyb21N
YXRyaXgpOwogICAgICAgICBtYXRyaXguYmxlbmQoZnJvbU1hdHJpeCwgcHJvZ3Jlc3MpOwogICAg
ICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIEFuaW1hdGlvbiB0byAiLXdlYmtp
dC10cmFuc2Zvcm06IG5vbmUiLgotICAgIGlmICghdG8tPnNpemUoKSkgewotICAgICAgICBUcmFu
c2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQoKmZyb20pOworICAgIGlmICghdG8uc2l6ZSgpKSB7Cisg
ICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRlZChmcm9tKTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBibGVuZGVkLm9wZXJhdGlvbnMoKS5zaXplKCk7ICsraSkKICAgICAg
ICAgICAgIGJsZW5kZWQub3BlcmF0aW9ucygpW2ldLT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkt
PmFwcGx5KG1hdHJpeCwgYm94U2l6ZSk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQog
CiAgICAgLy8gQW5pbWF0aW9uIGZyb20gIi13ZWJraXQtdHJhbnNmb3JtOiBub25lIi4KLSAgICBp
ZiAoIWZyb20tPnNpemUoKSkgewotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQo
KnRvKTsKKyAgICBpZiAoIWZyb20uc2l6ZSgpKSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlv
bnMgYmxlbmRlZCh0byk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxlbmRlZC5v
cGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMo
KVtpXS0+YmxlbmQoMCwgMS4gLSBwcm9ncmVzcywgdHJ1ZSktPmFwcGx5KG1hdHJpeCwgYm94U2l6
ZSk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQogCiAgICAgLy8gTm9ybWFsIGFuaW1h
dGlvbiB3aXRoIGEgbWF0Y2hpbmcgb3BlcmF0aW9uIGxpc3QuCi0gICAgVHJhbnNmb3JtT3BlcmF0
aW9ucyBibGVuZGVkKCp0byk7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZGVkKHRvKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsZW5kZWQub3BlcmF0aW9ucygpLnNpemUoKTsg
KytpKQotICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS0+YXQoaSks
IHByb2dyZXNzLCAhZnJvbS0+YXQoaSkpLT5hcHBseShtYXRyaXgsIGJveFNpemUpOworICAgICAg
ICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS5hdChpKSwgcHJvZ3Jlc3MsICFm
cm9tLmF0KGkpKS0+YXBwbHkobWF0cml4LCBib3hTaXplKTsKICAgICByZXR1cm4gbWF0cml4Owog
fQogCkBAIC0yMzEsMTQgKzIzMSwxNCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJBbmltYXRpb246OmFw
cGx5SW50ZXJuYWwoQ2xpZW50KiBjbGllbnQsIGNvbnN0IEFuaW1hdGlvblZhbHVlKgogewogICAg
IHN3aXRjaCAobV9rZXlmcmFtZXMucHJvcGVydHkoKSkgewogICAgIGNhc2UgQW5pbWF0ZWRQcm9w
ZXJ0eU9wYWNpdHk6Ci0gICAgICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRPcGFjaXR5KGFwcGx5T3Bh
Y2l0eUFuaW1hdGlvbigoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KGZy
b20pLT52YWx1ZSgpKSwgKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPih0
byktPnZhbHVlKCkpLCBwcm9ncmVzcykpOworICAgICAgICBjbGllbnQtPnNldEFuaW1hdGVkT3Bh
Y2l0eShhcHBseU9wYWNpdHlBbmltYXRpb24oKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0
aW9uVmFsdWUmPigqZnJvbSkudmFsdWUoKSksIChzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1h
dGlvblZhbHVlJj4oKnRvKS52YWx1ZSgpKSwgcHJvZ3Jlc3MpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKLSAgICAgICAgY2xpZW50
LT5zZXRBbmltYXRlZFRyYW5zZm9ybShhcHBseVRyYW5zZm9ybUFuaW1hdGlvbihzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KGZyb20pLT52YWx1ZSgpLCBzdGF0aWNf
Y2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHRvKS0+dmFsdWUoKSwgcHJvZ3Jl
c3MsIG1fYm94U2l6ZSwgbV9saXN0c01hdGNoKSk7CisgICAgICAgIGNsaWVudC0+c2V0QW5pbWF0
ZWRUcmFuc2Zvcm0oYXBwbHlUcmFuc2Zvcm1BbmltYXRpb24oc3RhdGljX2Nhc3Q8Y29uc3QgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUmPigqZnJvbSkudmFsdWUoKSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPigqdG8pLnZhbHVlKCksIHByb2dyZXNzLCBtX2JveFNp
emUsIG1fbGlzdHNNYXRjaCkpOwogICAgICAgICByZXR1cm47CiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlcjoKLSAgICAgICAgY2xp
ZW50LT5zZXRBbmltYXRlZEZpbHRlcnMoYXBwbHlGaWx0ZXJBbmltYXRpb24oc3RhdGljX2Nhc3Q8
Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUqPihmcm9tKS0+dmFsdWUoKSwgc3RhdGljX2Nhc3Q8
Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUqPih0byktPnZhbHVlKCksIHByb2dyZXNzLCBtX2Jv
eFNpemUpKTsKKyAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZEZpbHRlcnMoYXBwbHlGaWx0ZXJB
bmltYXRpb24oc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPigqZnJvbSku
dmFsdWUoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPigqdG8pLnZh
bHVlKCksIHByb2dyZXNzLCBtX2JveFNpemUpKTsKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAg
ICAgZGVmYXVsdDoKQEAgLTMwNCwxNSArMzA0LDE1IEBAIHZvaWQgR3JhcGhpY3NMYXllckFuaW1h
dGlvbjo6YXBwbHkoQ2xpZW50KiBjbGllbnQpCiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2tleWZyYW1lcy5zaXplKCkgLSAxOyArK2kpIHsKLSAgICAgICAgY29uc3QgQW5p
bWF0aW9uVmFsdWUqIGZyb20gPSBtX2tleWZyYW1lcy5hdChpKTsKLSAgICAgICAgY29uc3QgQW5p
bWF0aW9uVmFsdWUqIHRvID0gbV9rZXlmcmFtZXMuYXQoaSArIDEpOwotICAgICAgICBpZiAoZnJv
bS0+a2V5VGltZSgpID4gbm9ybWFsaXplZFZhbHVlIHx8IHRvLT5rZXlUaW1lKCkgPCBub3JtYWxp
emVkVmFsdWUpCisgICAgICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBmcm9tID0gbV9rZXlmcmFt
ZXMuYXQoaSk7CisgICAgICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiB0byA9IG1fa2V5ZnJhbWVz
LmF0KGkgKyAxKTsKKyAgICAgICAgaWYgKGZyb20ua2V5VGltZSgpID4gbm9ybWFsaXplZFZhbHVl
IHx8IHRvLmtleVRpbWUoKSA8IG5vcm1hbGl6ZWRWYWx1ZSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IChub3JtYWxpemVkVmFsdWUgLSBmcm9tLT5r
ZXlUaW1lKCkpIC8gKHRvLT5rZXlUaW1lKCkgLSBmcm9tLT5rZXlUaW1lKCkpOwotICAgICAgICBj
b25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFu
aW1hdGlvblZhbHVlKGZyb20sIG1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICAgICAgbm9ybWFsaXpl
ZFZhbHVlID0gKG5vcm1hbGl6ZWRWYWx1ZSAtIGZyb20ua2V5VGltZSgpKSAvICh0by5rZXlUaW1l
KCkgLSBmcm9tLmtleVRpbWUoKSk7CisgICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1p
bmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoJmZyb20sIG1fYW5p
bWF0aW9uLmdldCgpKTsKICAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gYXBwbHlUaW1pbmdGdW5j
dGlvbih0aW1pbmdGdW5jdGlvbiwgbm9ybWFsaXplZFZhbHVlLCBtX2FuaW1hdGlvbi0+ZHVyYXRp
b24oKSk7Ci0gICAgICAgIGFwcGx5SW50ZXJuYWwoY2xpZW50LCBmcm9tLCB0bywgbm9ybWFsaXpl
ZFZhbHVlKTsKKyAgICAgICAgYXBwbHlJbnRlcm5hbChjbGllbnQsICZmcm9tLCAmdG8sIG5vcm1h
bGl6ZWRWYWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4
IDIxMGI4MWFiZDcyMjE0OTRhZDdkZjI3NTI0ZmUxYzM5ZTZkMzdhNmMuLmZmY2FkODc5NmVmNGYz
ZjlhOTNiN2NjYTVjZDQyYzVlMTc2Yzc2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjQyLDkgKzI0
MiwxMCBAQCBzdGF0aWMgYm9vbCBhbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFsdWVMaXN0
LmF0KGkpLT50aW1pbmdGdW5jdGlvbigpOwotICAgICAgICBpZiAodGltaW5nRnVuY3Rpb24gJiYg
dGltaW5nRnVuY3Rpb24tPmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKQotICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGlmIChjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rp
b24gPSB2YWx1ZUxpc3QuYXQoaSkudGltaW5nRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgaWYg
KHRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAg
LTIwOTEsNyArMjA5Miw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpjcmVhdGVUcmFuc2Zvcm1B
bmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlCiAKICAgICBib29sIGhh
c0JpZ1JvdGF0aW9uOwogICAgIGludCBsaXN0SW5kZXggPSB2YWxpZGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbnModmFsdWVMaXN0LCBoYXNCaWdSb3RhdGlvbik7Ci0gICAgY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9ucyogb3BlcmF0aW9ucyA9IChsaXN0SW5kZXggPj0gMCkgPyBzdGF0aWNfY2FzdDxjb25z
dCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChsaXN0SW5kZXgpKS0+dmFs
dWUoKSA6IDA7CisgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyogb3BlcmF0aW9ucyA9IChs
aXN0SW5kZXggPj0gMCkgPyAmc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFs
dWUmPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4KSkudmFsdWUoKSA6IDA7CiAKICAgICAvLyBXZSBu
ZWVkIHRvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24gaWYgd2UgZG9uJ3QgaGF2ZSBz
ZXRWYWx1ZUZ1bmN0aW9uOiwgYW5kCiAgICAgLy8gd2Ugd291bGQgbmVlZCB0byBhbmltYXRlIGVh
Y2ggaW5jb21pbmcgdHJhbnNmb3JtIGZ1bmN0aW9uIHNlcGFyYXRlbHkuIFRoaXMgaXMgdGhlCkBA
IC0yMTgxLDIxICsyMTgyLDIxIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpjcmVhdGVGaWx0ZXJB
bmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzCiAgICAgaWYgKGxp
c3RJbmRleCA8IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyogb3BlcmF0aW9ucyA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFu
aW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGxpc3RJbmRleCkpLT52YWx1ZSgpOworICAgIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0
ZXJBbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdChsaXN0SW5kZXgpKS52YWx1ZSgpOwogICAg
IC8vIE1ha2Ugc3VyZSB0aGUgcGxhdGZvcm0gbGF5ZXIgZGlkbid0IGZhbGxiYWNrIHRvIHVzaW5n
IHNvZnR3YXJlIGZpbHRlciBjb21wb3NpdGluZyBpbnN0ZWFkLgotICAgIGlmICghUGxhdGZvcm1D
QUxheWVyOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKCpvcGVyYXRpb25zKSkKKyAgICBpZiAoIVBs
YXRmb3JtQ0FMYXllcjo6ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZChvcGVyYXRpb25zKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50IG51bUFuaW1hdGlvbnMgPSBvcGVyYXRpb25zLT5z
aXplKCk7CisgICAgaW50IG51bUFuaW1hdGlvbnMgPSBvcGVyYXRpb25zLnNpemUoKTsKIAogICAg
IC8vIEZJWE1FOiBXZSBjYW4ndCBjdXJyZW50bHkgaGFyZHdhcmUgYW5pbWF0ZSBzaGFkb3dzLgog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQW5pbWF0aW9uczsgKytpKSB7Ci0gICAgICAgIGlm
IChvcGVyYXRpb25zLT5hdChpKS0+Z2V0T3BlcmF0aW9uVHlwZSgpID09IEZpbHRlck9wZXJhdGlv
bjo6RFJPUF9TSEFET1cpCisgICAgICAgIGlmIChvcGVyYXRpb25zLmF0KGkpLT5nZXRPcGVyYXRp
b25UeXBlKCkgPT0gRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVykKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKICAgICBmb3IgKGludCBhbmltYXRpb25JbmRleCA9IDA7IGFu
aW1hdGlvbkluZGV4IDwgbnVtQW5pbWF0aW9uczsgKythbmltYXRpb25JbmRleCkgewotICAgICAg
ICBpZiAoIWFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKHZhbHVlTGlzdCwgb3BlcmF0aW9u
cy0+b3BlcmF0aW9ucygpLmF0KGFuaW1hdGlvbkluZGV4KS5nZXQoKSwgYW5pbWF0aW9uLCBhbmlt
YXRpb25OYW1lLCBhbmltYXRpb25JbmRleCwgdGltZU9mZnNldCkpCisgICAgICAgIGlmICghYXBw
ZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnModmFsdWVMaXN0LCBvcGVyYXRpb25zLm9wZXJhdGlv
bnMoKS5hdChhbmltYXRpb25JbmRleCkuZ2V0KCksIGFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwg
YW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtMjI1MywxMiArMjI1NCwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
dXBBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbiogcHJvcGVydHlBbmltLCBjb25zdCBBbgog
ICAgIHByb3BlcnR5QW5pbS0+c2V0RmlsbE1vZGUoZmlsbE1vZGUpOwogfQogCi1jb25zdCBUaW1p
bmdGdW5jdGlvbiogR3JhcGhpY3NMYXllckNBOjp0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZh
bHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlKiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlvbiogYW5p
bSkKK2NvbnN0IFRpbWluZ0Z1bmN0aW9uKiBHcmFwaGljc0xheWVyQ0E6OnRpbWluZ0Z1bmN0aW9u
Rm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmIGFuaW1WYWx1ZSwgY29uc3Qg
QW5pbWF0aW9uJiBhbmltKQogewotICAgIGlmIChhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCkp
Ci0gICAgICAgIHJldHVybiBhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCk7Ci0gICAgaWYgKGFu
aW0tPmlzVGltaW5nRnVuY3Rpb25TZXQoKSkKLSAgICAgICAgcmV0dXJuIGFuaW0tPnRpbWluZ0Z1
bmN0aW9uKCkuZ2V0KCk7CisgICAgaWYgKGFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpKQorICAg
ICAgICByZXR1cm4gYW5pbVZhbHVlLnRpbWluZ0Z1bmN0aW9uKCk7CisgICAgaWYgKGFuaW0uaXNU
aW1pbmdGdW5jdGlvblNldCgpKQorICAgICAgICByZXR1cm4gYW5pbS50aW1pbmdGdW5jdGlvbigp
LmdldCgpOwogICAgIAogICAgIHJldHVybiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpkZWZh
dWx0VGltaW5nRnVuY3Rpb24oKTsKIH0KQEAgLTIyNzIsOCArMjI3Myw4IEBAIGJvb2wgR3JhcGhp
Y3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlTGlzdCwKICAgICAKICAgICBzd2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7CiAg
ICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eTogewotICAgICAgICBiYXNpY0FuaW0tPnNl
dEZyb21WYWx1ZShzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFsdWVM
aXN0LmF0KGZyb21JbmRleCkpLT52YWx1ZSgpKTsKLSAgICAgICAgYmFzaWNBbmltLT5zZXRUb1Zh
bHVlKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQo
dG9JbmRleCkpLT52YWx1ZSgpKTsKKyAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUoc3Rh
dGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdChmcm9tSW5k
ZXgpKS52YWx1ZSgpKTsKKyAgICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHN0YXRpY19jYXN0
PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpLnZhbHVl
KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKQEAgLTIyODMsNyArMjI4
NCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwKIAogICAgIC8vIFRoaXMgY29kZXBhdGggaXMg
dXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sg
aW4gdGhlIHN0YXJ0CiAgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLiBFdmVuIGluIHRoZSBy
ZXZlcnNpbmcgYW5pbWF0aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlmcmFtZSBwcm92aWRlcyB0aGUg
dGltaW5nIGZ1bmN0aW9uLgotICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlv
biA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCBhbmlt
YXRpb24pOworICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWlu
Z0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKTsK
ICAgICBpZiAodGltaW5nRnVuY3Rpb24pCiAgICAgICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVu
Y3Rpb24odGltaW5nRnVuY3Rpb24sICFmb3J3YXJkcyk7CiAKQEAgLTIzMDAsMTMgKzIzMDEsMTMg
QEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBm
b3J3YXJkcyA/IGkgOiAodmFsdWVMaXN0LnNpemUoKSAtIGkgLSAxKTsKLSAgICAgICAgY29uc3Qg
QW5pbWF0aW9uVmFsdWUqIGN1clZhbHVlID0gdmFsdWVMaXN0LmF0KGluZGV4KTsKLSAgICAgICAg
a2V5VGltZXMuYXBwZW5kKGZvcndhcmRzID8gY3VyVmFsdWUtPmtleVRpbWUoKSA6ICgxIC0gY3Vy
VmFsdWUtPmtleVRpbWUoKSkpOworICAgICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSYgY3VyVmFs
dWUgPSB2YWx1ZUxpc3QuYXQoaW5kZXgpOworICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2Fy
ZHMgPyBjdXJWYWx1ZS5rZXlUaW1lKCkgOiAoMSAtIGN1clZhbHVlLmtleVRpbWUoKSkpOwogCiAg
ICAgICAgIHN3aXRjaCAodmFsdWVMaXN0LnByb3BlcnR5KCkpIHsKICAgICAgICAgY2FzZSBBbmlt
YXRlZFByb3BlcnR5T3BhY2l0eTogewotICAgICAgICAgICAgY29uc3QgRmxvYXRBbmltYXRpb25W
YWx1ZSogZmxvYXRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUq
PihjdXJWYWx1ZSk7Ci0gICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGZsb2F0VmFsdWUtPnZhbHVl
KCkpOworICAgICAgICAgICAgY29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSYgZmxvYXRWYWx1ZSA9
IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmPihjdXJWYWx1ZSk7CisgICAg
ICAgICAgICB2YWx1ZXMuYXBwZW5kKGZsb2F0VmFsdWUudmFsdWUoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMjMxNSw3ICsyMzE2LDcgQEAg
Ym9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGkgPCAodmFs
dWVMaXN0LnNpemUoKSAtIDEpKQotICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0
aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1
ZUxpc3QuYXQoaW5kZXggLSAxKSwgYW5pbWF0aW9uKSk7CisgICAgICAgICAgICB0aW1pbmdGdW5j
dGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBj
dXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0aW9uKSk7CiAgICAgfQog
ICAgIAogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGltZXMpOwpAQCAtMjMzNCwx
MyArMjMzNSwxMyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9u
RW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogICAgIHVuc2lnbmVkIGZyb21J
bmRleCA9ICFmb3J3YXJkczsKICAgICB1bnNpZ25lZCB0b0luZGV4ID0gZm9yd2FyZHM7CiAgICAg
Ci0gICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIHN0YXJ0VmFsdWUgPSBzdGF0aWNf
Y2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChmcm9tSW5k
ZXgpKTsKLSAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogZW5kVmFsdWUgPSBzdGF0
aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCh0b0lu
ZGV4KSk7CisgICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIHN0YXJ0VmFsdWUgPSBz
dGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdChm
cm9tSW5kZXgpKTsKKyAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSYgZW5kVmFsdWUg
PSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5h
dCh0b0luZGV4KSk7CiAgICAgCiAgICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7CiAgICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21UcmFuc2Zvcm0sIHRvVHJhbnNmb3JtOwotICAgICAg
ICBzdGFydFZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCBmcm9tVHJhbnNmb3JtKTsKLSAg
ICAgICAgZW5kVmFsdWUtPnZhbHVlKCktPmFwcGx5KGJveFNpemUsIHRvVHJhbnNmb3JtKTsKKyAg
ICAgICAgc3RhcnRWYWx1ZS52YWx1ZSgpLmFwcGx5KGJveFNpemUsIGZyb21UcmFuc2Zvcm0pOwor
ICAgICAgICBlbmRWYWx1ZS52YWx1ZSgpLmFwcGx5KGJveFNpemUsIHRvVHJhbnNmb3JtKTsKIAog
ICAgICAgICAvLyBJZiBhbnkgbWF0cml4IGlzIHNpbmd1bGFyLCBDQSB3b24ndCBhbmltYXRlIGl0
IGNvcnJlY3RseS4gU28gZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGFuaW1hdGlvbgogICAgICAgICBp
ZiAoIWZyb21UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkgfHwgIXRvVHJhbnNmb3JtLmlzSW52ZXJ0
aWJsZSgpKQpAQCAtMjM1MSwzNCArMjM1MiwzNCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChpc1RyYW5zZm9ybVR5cGVOdW1iZXIodHJhbnNmb3Jt
T3BUeXBlKSkgewogICAgICAgICAgICAgZmxvYXQgZnJvbVZhbHVlOwotICAgICAgICAgICAgZ2V0
VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbklu
ZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCBmcm9tVmFsdWUpOworICAgICAgICAgICAg
Z2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25J
bmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKICAgICAgICAgICAg
IGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKGZyb21WYWx1ZSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGZsb2F0IHRvVmFsdWU7Ci0gICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZh
bHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBl
LCBib3hTaXplLCB0b1ZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFs
dWUoZW5kVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBi
b3hTaXplLCB0b1ZhbHVlKTsKICAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1Zh
bHVlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc1RyYW5zZm9ybVR5cGVGbG9hdFBvaW50M0QodHJh
bnNmb3JtT3BUeXBlKSkgewogICAgICAgICAgICAgRmxvYXRQb2ludDNEIGZyb21WYWx1ZTsKLSAg
ICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+
YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsK
KyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSgp
LmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7
CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldEZyb21WYWx1ZShmcm9tVmFsdWUpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBGbG9hdFBvaW50M0QgdG9WYWx1ZTsKLSAgICAgICAgICAgIGdl
dFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5k
ZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHRvVmFsdWUpOworICAgICAgICAgICAgZ2V0
VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgp
LCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHRvVmFsdWUpOwogICAgICAgICAgICAgYmFzaWNB
bmltLT5zZXRUb1ZhbHVlKHRvVmFsdWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3Jt
RnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJh
bnNmb3JtT3BUeXBlLCBib3hTaXplLCBmcm9tVmFsdWUpOworICAgICAgICAgICAgZ2V0VHJhbnNm
b3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRy
YW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKICAgICAgICAgICAgIGJhc2ljQW5p
bS0+c2V0RnJvbVZhbHVlKGZyb21WYWx1ZSk7CiAKICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IHRvVmFsdWU7Ci0gICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVu
ZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hT
aXplLCB0b1ZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5k
VmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXpl
LCB0b1ZhbHVlKTsKICAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1ZhbHVlKTsK
ICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1r
ZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0
CiAgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcgYW5p
bWF0aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlmcmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0
aW9uLgotICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1
bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCBhbmltYXRpb24pOworICAg
IGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9y
QW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKTsKICAgICBiYXNpY0Fu
aW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uLCAhZm9yd2FyZHMpOwogCiAgICAg
UGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgdmFsdWVGdW5jdGlvbiA9IGdl
dFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJhbnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9ybU9wVHlwZSk7
CkBAIC0yNDAwLDEyICsyNDAxLDEyIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zv
cm1BbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhCiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAg
IHVuc2lnbmVkIGluZGV4ID0gZm9yd2FyZHMgPyBpIDogKHZhbHVlTGlzdC5zaXplKCkgLSBpIC0g
MSk7Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBjdXJWYWx1ZSA9IHN0
YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGlu
ZGV4KSk7Ci0gICAgICAgIGtleVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLT5rZXlU
aW1lKCkgOiAoMSAtIGN1clZhbHVlLT5rZXlUaW1lKCkpKTsKKyAgICAgICAgY29uc3QgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUmIGN1clZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoaW5kZXgpKTsKKyAgICAgICAga2V5VGltZXMu
YXBwZW5kKGZvcndhcmRzID8gY3VyVmFsdWUua2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS5rZXlU
aW1lKCkpKTsKIAogICAgICAgICBpZiAoaXNNYXRyaXhBbmltYXRpb24pIHsKICAgICAgICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKLSAgICAgICAgICAgIGN1clZhbHVlLT52
YWx1ZSgpLT5hcHBseShib3hTaXplLCB0cmFuc2Zvcm0pOworICAgICAgICAgICAgY3VyVmFsdWUu
dmFsdWUoKS5hcHBseShib3hTaXplLCB0cmFuc2Zvcm0pOwogCiAgICAgICAgICAgICAvLyBJZiBh
bnkgbWF0cml4IGlzIHNpbmd1bGFyLCBDQSB3b24ndCBhbmltYXRlIGl0IGNvcnJlY3RseS4gU28g
ZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGFuaW1hdGlvbgogICAgICAgICAgICAgaWYgKCF0cmFuc2Zv
cm0uaXNJbnZlcnRpYmxlKCkpCkBAIC0yNDEzLDcgKzI0MTQsNyBAQCBib29sIEdyYXBoaWNzTGF5
ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiB2YQogCiAgICAgICAgICAgICB0cmFuc2Zvcm1hdGlvbk1hdHJpeFZhbHVlcy5hcHBlbmQo
dHJhbnNmb3JtKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbiogdHJhbnNmb3JtT3AgPSBjdXJWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25J
bmRleCk7CisgICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybU9w
ID0gY3VyVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4KTsKICAgICAgICAgICAgIGlmIChp
c1RyYW5zZm9ybVR5cGVOdW1iZXIodHJhbnNmb3JtT3BUeXBlKSkgewogICAgICAgICAgICAgICAg
IGZsb2F0IHZhbHVlOwogICAgICAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUo
dHJhbnNmb3JtT3AsIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdmFsdWUpOwpAQCAtMjQzMCw3
ICsyNDMxLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktl
eWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0
aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1
clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksIGFuaW1hdGlvbikpOworICAgICAgICAg
ICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVl
KGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlv
bikpOwogICAgIH0KICAgICAKICAgICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRpbWVz
KTsKQEAgLTI0NjEsMTEgKzI0NjIsMTEgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRl
ckFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUKICAgICB1
bnNpZ25lZCBmcm9tSW5kZXggPSAhZm9yd2FyZHM7CiAgICAgdW5zaWduZWQgdG9JbmRleCA9IGZv
cndhcmRzOwogCi0gICAgY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUqIGZyb21WYWx1ZSA9IHN0
YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGZyb21J
bmRleCkpOwotICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKiB0b1ZhbHVlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQodG9JbmRleCkp
OworICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJiBmcm9tVmFsdWUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKTsK
KyAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSYgdG9WYWx1ZSA9IHN0YXRpY19jYXN0PGNv
bnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKTsKIAotICAg
IGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbU9wZXJhdGlvbiA9IGZyb21WYWx1ZS0+dmFsdWUo
KS0+YXQoZnVuY3Rpb25JbmRleCk7Ci0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiB0b09wZXJh
dGlvbiA9IHRvVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpOworICAgIGNvbnN0IEZp
bHRlck9wZXJhdGlvbiogZnJvbU9wZXJhdGlvbiA9IGZyb21WYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0
aW9uSW5kZXgpOworICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogdG9PcGVyYXRpb24gPSB0b1Zh
bHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCk7CiAKICAgICBSZWZQdHI8RGVmYXVsdEZpbHRl
ck9wZXJhdGlvbj4gZGVmYXVsdEZyb21PcGVyYXRpb247CiAgICAgUmVmUHRyPERlZmF1bHRGaWx0
ZXJPcGVyYXRpb24+IGRlZmF1bHRUb09wZXJhdGlvbjsKQEAgLTI0ODcsNyArMjQ4OCw3IEBAIGJv
b2wgR3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlCiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9y
IDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBz
dGFydAogICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5n
IGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBm
dW5jdGlvbi4KLSAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9u
Rm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCBhbmltYXRpb24pLCAhZm9yd2FyZHMp
OworICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb25Gb3JBbmlt
YXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksICphbmltYXRpb24pLCAhZm9yd2FyZHMpOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNTAzLDExICsyNTA0LDExIEBAIGJvb2wgR3JhcGhpY3NM
YXllckNBOjpzZXRGaWx0ZXJBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUo
KTsgKytpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gZm9yd2FyZHMgPyBpIDogKHZhbHVl
TGlzdC5zaXplKCkgLSBpIC0gMSk7Ci0gICAgICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVl
KiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odmFs
dWVMaXN0LmF0KGluZGV4KSk7Ci0gICAgICAgIGtleVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/IGN1
clZhbHVlLT5rZXlUaW1lKCkgOiAoMSAtIGN1clZhbHVlLT5rZXlUaW1lKCkpKTsKKyAgICAgICAg
Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIGN1clZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
RmlsdGVyQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoaW5kZXgpKTsKKyAgICAgICAga2V5
VGltZXMuYXBwZW5kKGZvcndhcmRzID8gY3VyVmFsdWUua2V5VGltZSgpIDogKDEgLSBjdXJWYWx1
ZS5rZXlUaW1lKCkpKTsKIAotICAgICAgICBpZiAoY3VyVmFsdWUtPnZhbHVlKCktPm9wZXJhdGlv
bnMoKS5zaXplKCkgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KGZ1bmN0aW9uSW5kZXgpKQotICAgICAg
ICAgICAgdmFsdWVzLmFwcGVuZChjdXJWYWx1ZS0+dmFsdWUoKS0+b3BlcmF0aW9ucygpW2Z1bmN0
aW9uSW5kZXhdKTsKKyAgICAgICAgaWYgKGN1clZhbHVlLnZhbHVlKCkub3BlcmF0aW9ucygpLnNp
emUoKSA+IHN0YXRpY19jYXN0PHNpemVfdD4oZnVuY3Rpb25JbmRleCkpCisgICAgICAgICAgICB2
YWx1ZXMuYXBwZW5kKGN1clZhbHVlLnZhbHVlKCkub3BlcmF0aW9ucygpW2Z1bmN0aW9uSW5kZXhd
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoIWRlZmF1bHRPcGVyYXRpb24pCiAg
ICAgICAgICAgICAgICAgZGVmYXVsdE9wZXJhdGlvbiA9IERlZmF1bHRGaWx0ZXJPcGVyYXRpb246
OmNyZWF0ZShmaWx0ZXJPcCk7CkBAIC0yNTE1LDcgKzI1MTYsNyBAQCBib29sIEdyYXBoaWNzTGF5
ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0
JiB2YWx1ZQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGkgPCAodmFsdWVMaXN0LnNpemUoKSAt
IDEpKQotICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZv
ckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXgg
LSAxKSwgYW5pbWF0aW9uKSk7CisgICAgICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5kKHRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVl
TGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0aW9uKSk7CiAgICAgfQogICAgIAogICAgIGtleWZy
YW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGltZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCAwMmMwMjI3ZTk4
YzZjNTJlODk0M2FkYWJkZDhlMGM5NGE2MTRhNTIwLi4wOWNjY2U0NTFmNzYxNTI3NzM2MzNjYWVh
MDkxNDY5NGU2MWRlZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMjA1LDcgKzIwNSw3IEBAIHByaXZhdGU6
CiAgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVLZXlmcmFtZUFuaW1h
dGlvbihjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29sIGFkZGl0aXZlKTsKICAg
ICB2b2lkIHNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qLCBjb25zdCBBbmltYXRp
b24qLCBib29sIGFkZGl0aXZlKTsKICAgICAKLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGlt
aW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSosIGNvbnN0
IEFuaW1hdGlvbiopOworICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbkZv
ckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiwgY29uc3QgQW5pbWF0aW9uJik7
CiAgICAgCiAgICAgYm9vbCBzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CiAgICAgYm9v
bCBzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBB
bmltYXRpb24qLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDFkZWZiNTJiMzRhYTgzOWE5NDMz
ZmZiNDAwM2YxMTU0MWY5MDFlODkuLjY0MTllMGNiYmYxZDlmYmUwNjAyMDA4ZjdmNjg1MTk2Y2E5
ODM4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCkBAIC0yMTA3LDE0ICsyMTA3LDE0IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpz
dGFydEFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCwgY29uc3QgQW5pbWF0aW9uKiBhbmltCiAg
ICAgICAgIAogICAgICAgICBib29sIGlzRmlyc3RPckxhc3RLZXlmcmFtZSA9IGtleSA9PSAwIHx8
IGtleSA9PSAxOwogICAgICAgICBpZiAoKGhhc1RyYW5zZm9ybSAmJiBpc0ZpcnN0T3JMYXN0S2V5
ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtKSkKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoYWRvcHRQ
dHIobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleSwgJihrZXlmcmFtZVN0eWxlLT50cmFu
c2Zvcm0oKSksIHRmKSkpOwotICAgICAgICAKKyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5p
bnNlcnQoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXksIGtleWZyYW1lU3R5bGUt
PnRyYW5zZm9ybSgpLCB0ZikpOworCiAgICAgICAgIGlmICgoaGFzT3BhY2l0eSAmJiBpc0ZpcnN0
T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1By
b3BlcnR5T3BhY2l0eSkpCi0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChhZG9wdFB0
cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZShrZXksIGtleWZyYW1lU3R5bGUtPm9wYWNpdHkoKSwg
dGYpKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChGbG9hdEFuaW1hdGlvblZh
bHVlOjpjcmVhdGUoa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7CiAKICNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgICAgIGlmICgoaGFzRmlsdGVyICYmIGlzRmlyc3RPckxh
c3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVy
dHlXZWJraXRGaWx0ZXIpKQotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChhZG9wdFB0
cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUoa2V5LCAmKGtleWZyYW1lU3R5bGUtPmZpbHRlcigp
KSwgdGYpKSk7CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KEZpbHRlckFuaW1hdGlv
blZhbHVlOjpjcmVhdGUoa2V5LCBrZXlmcmFtZVN0eWxlLT5maWx0ZXIoKSwgdGYpKTsKICNlbmRp
ZgogICAgIH0KIApAQCAtMjE1NCw4ICsyMTU0LDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6
OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIK
ICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiBvcGFjaXR5QW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRp
b25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHkpOwogICAgICAgICBpZiAob3BhY2l0eUFu
aW0gJiYgIW9wYWNpdHlBbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAg
ICAgS2V5ZnJhbWVWYWx1ZUxpc3Qgb3BhY2l0eVZlY3RvcihBbmltYXRlZFByb3BlcnR5T3BhY2l0
eSk7Ci0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcgRmxvYXRB
bmltYXRpb25WYWx1ZSgwLCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkp
KSkpOwotICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IEZsb2F0
QW5pbWF0aW9uVmFsdWUoMSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkp
KSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChGbG9hdEFuaW1hdGlvblZhbHVl
OjpjcmVhdGUoMCwgY29tcG9zaXRpbmdPcGFjaXR5KGZyb21TdHlsZS0+b3BhY2l0eSgpKSkpOwor
ICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoRmxvYXRBbmltYXRpb25WYWx1ZTo6Y3Jl
YXRlKDEsIGNvbXBvc2l0aW5nT3BhY2l0eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7CiAgICAgICAg
ICAgICAvLyBUaGUgYm94U2l6ZSBwYXJhbSBpcyBvbmx5IHVzZWQgZm9yIHRyYW5zZm9ybSBhbmlt
YXRpb25zICh3aGljaCBjYW4gb25seSBydW4gb24gUmVuZGVyQm94ZXMpLCBzbyB3ZSBwYXNzIGFu
IGVtcHR5IHNpemUgaGVyZS4KICAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFu
aW1hdGlvbihvcGFjaXR5VmVjdG9yLCBJbnRTaXplKCksIG9wYWNpdHlBbmltLCBHcmFwaGljc0xh
eWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5T3BhY2l0eSks
IHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNv
cnJlY3Qgb3BhY2l0eSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNl
dCB0aGUgZmluYWwgb3BhY2l0eS4KQEAgLTIxNjksOCArMjE2OSw4IEBAIGJvb2wgUmVuZGVyTGF5
ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5
SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogdHJhbnNmb3JtQW5pbSA9IHRvU3R5
bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CiAg
ICAgICAgIGlmICh0cmFuc2Zvcm1BbmltICYmICF0cmFuc2Zvcm1BbmltLT5pc0VtcHR5T3JaZXJv
RHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgdHJhbnNmb3JtVmVj
dG9yKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwotICAgICAgICAgICAgdHJhbnNm
b3JtVmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwg
JmZyb21TdHlsZS0+dHJhbnNmb3JtKCkpKSk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3Iu
aW5zZXJ0KGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgxLCAmdG9TdHlsZS0+
dHJhbnNmb3JtKCkpKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlOjpjcmVhdGUoMCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkpOwor
ICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZTo6Y3JlYXRlKDEsIHRvU3R5bGUtPnRyYW5zZm9ybSgpKSk7CiAgICAgICAgICAgICBpZiAobV9n
cmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odHJhbnNmb3JtVmVjdG9yLCB0b1JlbmRlckJveChy
ZW5kZXJlcigpKS0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpLnNpemUoKSwgdHJhbnNmb3Jt
QW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgdHJhbnNmb3JtIGlzIHZpc2libGUgd2hlbiB0
aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCB0cmFuc2Zvcm0uCiAgICAgICAg
ICAgICAgICAgdXBkYXRlVHJhbnNmb3JtKHRvU3R5bGUpOwpAQCAtMjE4NCw4ICsyMTg0LDggQEAg
Ym9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNl
dCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiBmaWx0ZXJB
bmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Rmls
dGVyKTsKICAgICAgICAgaWYgKGZpbHRlckFuaW0gJiYgIWZpbHRlckFuaW0tPmlzRW1wdHlPclpl
cm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCBmaWx0ZXJWZWN0
b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlcik7Ci0gICAgICAgICAgICBmaWx0ZXJWZWN0
b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGaWx0ZXJBbmltYXRpb25WYWx1ZSgwLCAmZnJvbVN0eWxl
LT5maWx0ZXIoKSkpKTsKLSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoYWRvcHRQdHIo
bmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKDEsICZ0b1N0eWxlLT5maWx0ZXIoKSkpKTsKKyAgICAg
ICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoRmlsdGVyQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgw
LCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0
KEZpbHRlckFuaW1hdGlvblZhbHVlOjpjcmVhdGUoMSwgdG9TdHlsZS0+ZmlsdGVyKCkpKTsKICAg
ICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihmaWx0ZXJWZWN0b3Is
IEludFNpemUoKSwgZmlsdGVyQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRy
YW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlciksIHRpbWVPZmZzZXQpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgZmlsdGVyIGlzIHZp
c2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBmaWx0ZXIu
CiAgICAgICAgICAgICAgICAgdXBkYXRlRmlsdGVycyh0b1N0eWxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDQxMTA3
MzA4OWNjNTUzZmM3OTE0ODE5YTYwZWRlMTc5NjRjYWE3OWUuLjgzYzI1YzM5MDZlZGYwZDMzMmQ2
ZDEwNzNlYWExN2U0MWQzM2VkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtNjQ1LDE5ICs2NDUsMTkgQEAgdm9pZCBB
cmd1bWVudENvZGVyPEdyYXBoaWNzTGF5ZXJBbmltYXRpb24+OjplbmNvZGUoQXJndW1lbnRFbmNv
ZGVyJiBlbmNvZGVyLCBjb24KICAgICBlbmNvZGVyLmVuY29kZUVudW0oa2V5ZnJhbWVzLnByb3Bl
cnR5KCkpOwogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtleWZyYW1lcy5z
aXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5ZnJhbWVzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlKiB2YWx1ZSA9IGtleWZyYW1lcy5hdChp
KTsKLSAgICAgICAgZW5jb2RlciA8PCB2YWx1ZS0+a2V5VGltZSgpOwotICAgICAgICBlbmNvZGVU
aW1pbmdGdW5jdGlvbihlbmNvZGVyLCB2YWx1ZS0+dGltaW5nRnVuY3Rpb24oKSk7CisgICAgICAg
IGNvbnN0IEFuaW1hdGlvblZhbHVlJiB2YWx1ZSA9IGtleWZyYW1lcy5hdChpKTsKKyAgICAgICAg
ZW5jb2RlciA8PCB2YWx1ZS5rZXlUaW1lKCk7CisgICAgICAgIGVuY29kZVRpbWluZ0Z1bmN0aW9u
KGVuY29kZXIsIHZhbHVlLnRpbWluZ0Z1bmN0aW9uKCkpOwogICAgICAgICBzd2l0Y2ggKGtleWZy
YW1lcy5wcm9wZXJ0eSgpKSB7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6
Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9u
VmFsdWUqPih2YWx1ZSktPnZhbHVlKCk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmPih2YWx1ZSkudmFsdWUoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06
Ci0gICAgICAgICAgICBlbmNvZGVyIDw8ICpzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1Bbmlt
YXRpb25WYWx1ZSo+KHZhbHVlKS0+dmFsdWUoKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3Rh
dGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZSkudmFsdWUoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICAgICAgY2Fz
ZSBBbmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyOgotICAgICAgICAgICAgZW5jb2RlciA8PCAq
c3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUqPih2YWx1ZSktPnZhbHVlKCk7
CisgICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlv
blZhbHVlJj4odmFsdWUpLnZhbHVlKCk7CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAg
ICAgICBkZWZhdWx0OgpAQCAtNzMzLDE0ICs3MzMsMTQgQEAgYm9vbCBBcmd1bWVudENvZGVyPEdy
YXBoaWNzTGF5ZXJBbmltYXRpb24+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBH
cmEKICAgICAgICAgICAgIGZsb2F0IHZhbHVlOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
a2V5ZnJhbWVzLmluc2VydChhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZShrZXlUaW1l
LCB2YWx1ZSwgdGltaW5nRnVuY3Rpb24pKSk7CisgICAgICAgICAgICBrZXlmcmFtZXMuaW5zZXJ0
KEZsb2F0QW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXlUaW1lLCB2YWx1ZSwgdGltaW5nRnVuY3Rp
b24pKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFuaW1h
dGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06IHsKICAgICAgICAgICAgIFRyYW5zZm9ybU9wZXJh
dGlvbnMgdHJhbnNmb3JtOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0cmFuc2Zv
cm0pKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGtleWZyYW1l
cy5pbnNlcnQoYWRvcHRQdHIobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleVRpbWUsICZ0
cmFuc2Zvcm0sIHRpbWluZ0Z1bmN0aW9uKSkpOworICAgICAgICAgICAga2V5ZnJhbWVzLmluc2Vy
dChUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleVRpbWUsIHRyYW5zZm9ybSwgdGlt
aW5nRnVuY3Rpb24pKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKQEAgLTc0OCw3ICs3NDgsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8R3Jh
cGhpY3NMYXllckFuaW1hdGlvbj46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEdy
YQogICAgICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXI7CiAgICAgICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGZpbHRlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAga2V5ZnJhbWVzLmluc2VydChhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9u
VmFsdWUoa2V5VGltZSwgJmZpbHRlciwgdGltaW5nRnVuY3Rpb24pKSk7CisgICAgICAgICAgICBr
ZXlmcmFtZXMuaW5zZXJ0KEZpbHRlckFuaW1hdGlvblZhbHVlOjpjcmVhdGUoa2V5VGltZSwgZmls
dGVyLCB0aW1pbmdGdW5jdGlvbikpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAj
ZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200954</attachid>
            <date>2013-05-07 12:08:32 -0700</date>
            <delta_ts>2013-05-07 12:18:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115738-20130507120737.patch</filename>
            <type>text/plain</type>
            <size>47916</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmYzMGI4M2ExOTVhN2U4
NzNjZWRlNzE0NzE2ODkwMjRlMDdjZWZlYS4uNGY1NGQyMWI2NTUzOWMzNWM4NGY4YWVlMDQxNzMy
ZThiOTUzN2FlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTA1LTA3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgS2V5
ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN0YXRpYyBjcmVhdGUoKSBmdW5jdGlvbnMg
dG8gdGhlIEFuaW1hdGlvblZhbHVlIHN1YmNsYXNzZXMsIGFuZCBjaGFuZ2UgYSBidW5jaCBvZiBw
YXJhbWV0ZXJzCisgICAgICAgIGFuZCByZXR1cm4gdmFsdWVzIHRoYXQgY2FuIG5ldmVyIGJlIG51
bGwgZnJvbSBwb2ludGVyIHR5cGVzIHRvIHJlZmVyZW5jZSB0eXBlcyB0byBiZXR0ZXIgaW5kaWNh
dGUgdGhpcy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJPcGVyYXRpb25zQXQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dmFsaWRhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdGlvbnNBdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjp2YWxpZGF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKEFuaW1hdGlvblZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblZhbHVlOjpBbmltYXRpb25WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoRmxvYXRB
bmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpG
bG9hdEFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OnZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckFuaW1hdGlvblZhbHVlOjp2YWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6RmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoRmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVW
YWx1ZUxpc3Q6On5LZXlmcmFtZVZhbHVlTGlzdCk6CisgICAgICAgIChLZXlmcmFtZVZhbHVlTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6YXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVGaWx0ZXJBbmltYXRp
b25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRp
b25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0
ZXJBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAoR3JhcGhpY3NMYXllckNBKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorCiAyMDEzLTA1LTA2ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBhbiAnaXNSZWFkT25seScgbWVt
YmVyIHRvIElETCBwYXJzZSB0cmVlIHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUzNjgxNDU2NGY4
NmRjYjQ3NjViNzFmMzNiZDgwYzA1MTVjMTVlNTcuLjBhNjI4YzQ2NWRkNTY1YTI1NDk0MTNmMzY0
MDI3MTJlN2UyOTI2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wNS0wNyAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVw
IEtleWZyYW1lVmFsdWVMaXN0IGFuZCByZWxhdGVkIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTczOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBmb3IgV2ViQ29yZSBjaGFuZ2Vz
LgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKwog
MjAxMy0wNS0wNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHNvbWUgdW5uZWNlc3Nhcnkgc29mdCBsaW5raW5nIGluIE5ldHdvcmtQcm9jZXNzLiAo
VGFrZSAyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcAppbmRleCBjNzhiNWJlYjI2OGMxOGQyZmJlZTRmZjBlYWNmODA3MTQzYWNiZjA3
Li4wMWI2YTNmZDdhMmIwYTFmZmE0ZDZjZjU0NWFhZjBjNmU1MTdhODJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtNDA5
LDkgKzQwOSw5IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6ZGlzdHJpYnV0ZU9wYWNpdHkoZmxvYXQg
YWNjdW11bGF0ZWRPcGFjaXR5KQogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotc3RhdGlj
IGlubGluZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQorc3RhdGljIGlubGlu
ZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkp
LT52YWx1ZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSY+KHZhbHVlTGlzdC5hdChpbmRleCkpLnZhbHVlKCk7CiB9CiAKIGludCBHcmFwaGljc0xh
eWVyOjp2YWxpZGF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZh
bHVlTGlzdCkKQEAgLTQyNCwyMyArNDI0LDIzIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCkKICAg
ICAvLyBFbXB0eSBmaWx0ZXJzIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBub24t
ZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZQogICAgIHNpemVfdCBmaXJzdEluZGV4ID0gMDsK
ICAgICBmb3IgKCA7IGZpcnN0SW5kZXggPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2ZpcnN0SW5kZXgp
IHsKLSAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGZpcnN0SW5kZXgp
LT5vcGVyYXRpb25zKCkuc2l6ZSgpID4gMCkKKyAgICAgICAgaWYgKCFmaWx0ZXJPcGVyYXRpb25z
QXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS5vcGVyYXRpb25zKCkuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKGZpcnN0SW5kZXggPj0gdmFsdWVMaXN0LnNp
emUoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyog
Zmlyc3RWYWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KTsKKyAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaXJzdFZhbCA9IGZpbHRlck9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGZpcnN0SW5kZXgpOwogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdElu
ZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zKiB2YWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKKyAg
ICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdmFsID0gZmlsdGVyT3BlcmF0aW9uc0F0KHZh
bHVlTGlzdCwgaSk7CiAgICAgICAgIAogICAgICAgICAvLyBBbiBlbXRweSBmaWx0ZXIgbGlzdCBt
YXRjaGVzIGFueXRoaW5nLgotICAgICAgICBpZiAodmFsLT5vcGVyYXRpb25zKCkuaXNFbXB0eSgp
KQorICAgICAgICBpZiAodmFsLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRj
aCgqdmFsKSkKKyAgICAgICAgaWYgKCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAg
ICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgCkBAIC00NTIsOSArNDUyLDkgQEAgaW50
IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWVMaXN0KQogLy8gVGhlIGhhc0JpZ1JvdGF0aW9uIGZsYWcgd2lsbCBhbHdh
eXMgcmV0dXJuIGZhbHNlIGlmIGlzVmFsaWQgaXMgZmFsc2UuIE90aGVyd2lzZSBoYXNCaWdSb3Rh
dGlvbiBpcyAKIC8vIHRydWUgaWYgdGhlIHJvdGF0aW9uIGJldHdlZW4gYW55IHR3byBrZXlmcmFt
ZXMgaXMgPj0gMTgwIGRlZ3JlZXMuCiAKLXN0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9ucyogb3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3Qs
IHNpemVfdCBpbmRleCkKK3N0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYg
b3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIHNpemVfdCBp
bmRleCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUqPih2YWx1ZUxpc3QuYXQoaW5kZXgpKS0+dmFsdWUoKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoaW5kZXgp
KS52YWx1ZSgpOwogfQogCiBpbnQgR3JhcGhpY3NMYXllcjo6dmFsaWRhdGVUcmFuc2Zvcm1PcGVy
YXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGJvb2wmIGhhc0JpZ1Jv
dGF0aW9uKQpAQCAtNDY5LDI0ICs0NjksMjQgQEAgaW50IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRl
VHJhbnNmb3JtT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXMKICAg
ICAvLyBFbXB0eSB0cmFuc2Zvcm1zIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBu
b24tZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZS4KICAgICBzaXplX3QgZmlyc3RJbmRleCA9
IDA7CiAgICAgZm9yICggOyBmaXJzdEluZGV4IDwgdmFsdWVMaXN0LnNpemUoKTsgKytmaXJzdElu
ZGV4KSB7Ci0gICAgICAgIGlmIChvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS0+
b3BlcmF0aW9ucygpLnNpemUoKSA+IDApCisgICAgICAgIGlmICghb3BlcmF0aW9uc0F0KHZhbHVl
TGlzdCwgZmlyc3RJbmRleCkub3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAKICAgICBpZiAoZmlyc3RJbmRleCA+PSB2YWx1ZUxpc3Quc2l6ZSgp
KQogICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIAotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbnMqIGZpcnN0VmFsID0gb3BlcmF0aW9uc0F0KHZhbHVlTGlzdCwgZmlyc3RJbmRleCk7Cisg
ICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZmlyc3RWYWwgPSBvcGVyYXRpb25zQXQodmFs
dWVMaXN0LCBmaXJzdEluZGV4KTsKICAgICAKICAgICAvLyBTZWUgaWYgdGhlIGtleWZyYW1lcyBh
cmUgdmFsaWQuCiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0SW5kZXggKyAxOyBpIDwgdmFsdWVM
aXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZh
bCA9IG9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGkpOworICAgICAgICBjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKICAgICAgICAgCi0g
ICAgICAgIC8vIEFuIGVtdHB5IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCi0gICAg
ICAgIGlmICh2YWwtPm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCisgICAgICAgIC8vIEFuIGVtcHR5
IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCisgICAgICAgIGlmICh2YWwub3BlcmF0
aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0g
ICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRjaCgqdmFsKSkKKyAgICAgICAgaWYg
KCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAgICAgICAgICAgIHJldHVybiAtMTsK
ICAgICB9CiAKQEAgLTQ5NCwyMiArNDk0LDIyIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzCiAg
ICAgZG91YmxlIGxhc3RSb3RBbmdsZSA9IDAuMDsKICAgICBkb3VibGUgbWF4Um90QW5nbGUgPSAt
MS4wOwogICAgICAgICAKLSAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGZpcnN0VmFsLT5vcGVy
YXRpb25zKCkuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHR5cGUgPSBmaXJzdFZhbC0+b3BlcmF0aW9ucygpLmF0KGopLT5nZXRPcGVyYXRp
b25UeXBlKCk7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBmaXJzdFZhbC5vcGVyYXRpb25z
KCkuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHR5cGUgPSBmaXJzdFZhbC5vcGVyYXRpb25zKCkuYXQoaiktPmdldE9wZXJhdGlvblR5cGUo
KTsKICAgICAgICAgCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSByb3RhdGlvbiBlbnRyeSwgd2Ug
bmVlZCB0byBzZWUgaWYgYW55IGFuZ2xlIGRpZmZlcmVuY2VzIGFyZSA+PSAxODAgZGVnCiAgICAg
ICAgIGlmICh0eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1ggfHwKICAgICAgICAg
ICAgIHR5cGUgPT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWSB8fAogICAgICAgICAgICAg
dHlwZSA9PSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9aIHx8CiAgICAgICAgICAgICB0eXBl
ID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEKSB7Ci0gICAgICAgICAgICBsYXN0Um90
QW5nbGUgPSBzdGF0aWNfY2FzdDxSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihmaXJzdFZhbC0+
b3BlcmF0aW9ucygpLmF0KGopLmdldCgpKS0+YW5nbGUoKTsKKyAgICAgICAgICAgIGxhc3RSb3RB
bmdsZSA9IHN0YXRpY19jYXN0PFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KGZpcnN0VmFsLm9w
ZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChtYXhSb3RBbmdsZSA8IDApCiAgICAgICAgICAgICAgICAgbWF4Um90QW5nbGUgPSBm
YWJzKGxhc3RSb3RBbmdsZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBmaXJzdEluZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZhbCA9IG9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGkpOwotICAgICAgICAgICAgICAgIGRvdWJsZSByb3RBbmdsZSA9IHZhbC0+b3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLT5vcGVyYXRpb25zKCkuYXQoaikuZ2V0KCkpLT5hbmdsZSgpKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQo
dmFsdWVMaXN0LCBpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgcm90QW5nbGUgPSB2YWwub3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLm9wZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCkpOwogICAgICAg
ICAgICAgICAgIGRvdWJsZSBkaWZmQW5nbGUgPSBmYWJzKHJvdEFuZ2xlIC0gbGFzdFJvdEFuZ2xl
KTsKICAgICAgICAgICAgICAgICBpZiAoZGlmZkFuZ2xlID4gbWF4Um90QW5nbGUpCiAgICAgICAg
ICAgICAgICAgICAgIG1heFJvdEFuZ2xlID0gZGlmZkFuZ2xlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDEzMTFmYjZlYmM3ZDg0
ZTFhODIxMWQxYjc0ODk2YmUwYjQ0ZTU1MTUuLjE2ZGMwN2ZlYmI3YzhkODJlN2Q5MjdkNzYzYTdl
MDE1YmE4NzlmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTcyLDE4ICs3MiwxOSBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKIGNsYXNzIEFuaW1hdGlvblZhbHVlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBQ
YXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCi0gICAgICAgIDog
bV9rZXlUaW1lKGtleVRpbWUpCi0gICAgICAgICwgbV90aW1pbmdGdW5jdGlvbih0aW1pbmdGdW5j
dGlvbikKLSAgICB7Ci0gICAgfQotICAgIAogICAgIHZpcnR1YWwgfkFuaW1hdGlvblZhbHVlKCkg
eyB9CiAKICAgICBmbG9hdCBrZXlUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9rZXlUaW1lOyB9CiAg
ICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90aW1pbmdGdW5jdGlvbi5nZXQoKTsgfQogICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRp
b25WYWx1ZT4gY2xvbmUoKSBjb25zdCA9IDA7CiAKK3Byb3RlY3RlZDoKKyAgICBBbmltYXRpb25W
YWx1ZShmbG9hdCBrZXlUaW1lLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5j
dGlvbiA9IDApCisgICAgICAgIDogbV9rZXlUaW1lKGtleVRpbWUpCisgICAgICAgICwgbV90aW1p
bmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbikKKyAgICB7CisgICAgfQorCiBwcml2YXRlOgogICAg
IGZsb2F0IG1fa2V5VGltZTsKICAgICBSZWZQdHI8VGltaW5nRnVuY3Rpb24+IG1fdGltaW5nRnVu
Y3Rpb247CkBAIC05MywxNiArOTQsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUg
bW92ZWQgdG8gaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIEZsb2F0QW5pbWF0aW9uVmFsdWUg
OiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogcHVibGljOgotICAgIEZsb2F0QW5pbWF0aW9uVmFs
dWUoZmxvYXQga2V5VGltZSwgZmxvYXQgdmFsdWUsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+
IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0
aW1pbmdGdW5jdGlvbikKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHN0YXRpYyBQYXNz
T3duUHRyPEZsb2F0QW5pbWF0aW9uVmFsdWU+IGNyZWF0ZShmbG9hdCBrZXlUaW1lLCBmbG9hdCB2
YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24gPSAwKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093
blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKCp0aGlzKSk7CiAgICAg
fQotICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgqdGhpcykp
OyB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJp
dmF0ZToKKyAgICBGbG9hdEFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRpbWUsIGZsb2F0IHZhbHVl
LCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgOiBB
bmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgLCBtX3ZhbHVl
KHZhbHVlKQorICAgIHsKKyAgICB9CisKICAgICBmbG9hdCBtX3ZhbHVlOwogfTsKIApAQCAtMTEw
LDE3ICsxMjAsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRz
IG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGlj
IEFuaW1hdGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiB2YWx1ZSA9
IDAsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAg
ICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMg
UGFzc093blB0cjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUs
IGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlv
bikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xv
bmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKLSAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAg
ICAgbV92YWx1ZSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSgqdGhpcykpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICBj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7
IH0KIAogcHJpdmF0ZToKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1l
LCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5j
dGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFsdWUoa2V5VGltZSwg
dGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQor
CiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKIApAQCAtMTI5LDE3ICsxNDcs
MjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRzIG93biBoZWFk
ZXIgZmlsZS4KIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZh
bHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBGaWx0ZXJBbmltYXRpb25WYWx1ZShmbG9hdCBr
ZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWx1ZSA9IDAsIFBhc3NSZWZQdHI8VGlt
aW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1
ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMgUGFzc093blB0cjxGaWx0ZXJB
bmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUsIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDAp
CiAgICAgewotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICBtX3ZhbHVlID0gKnZhbHVl
OworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQ
dHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUoKnRo
aXMpKTsKKyAgICB9CisKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKKyAgICBGaWx0ZXJBbmltYXRpb25WYWx1
ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0
cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFs
dWUoa2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAg
ICB7CisgICAgfQorCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKICNlbmRpZgpA
QCAtMTYxLDYgKzE4NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQo
b3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOwogICAgIH0KIAorICAgIH5LZXlmcmFtZVZhbHVl
TGlzdCgpCisgICAgeworICAgIH0KKwogICAgIEtleWZyYW1lVmFsdWVMaXN0JiBvcGVyYXRvcj0o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKICAgICAgICAgS2V5ZnJhbWVW
YWx1ZUxpc3QgY29weShvdGhlcik7CkBAIC0xNzcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIEFu
aW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHk7IH0K
IAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOyB9Ci0g
ICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlcy5hdChpKS5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhdChzaXplX3Qg
aSkgY29uc3QgeyByZXR1cm4gKm1fdmFsdWVzLmF0KGkpOyB9CiAgICAgCiAgICAgLy8gSW5zZXJ0
LCBzb3J0ZWQgYnkga2V5VGltZS4KICAgICB2b2lkIGluc2VydChQYXNzT3duUHRyPGNvbnN0IEFu
aW1hdGlvblZhbHVlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCmluZGV4IGQwMjY1OThiMDI2ZmJk
MDA1NGNlYmM2MzcwZjFhZmVlMzQ0OWNjYjUuLjUzNjZiNWMwNjZkNjQ5ZjFjYTI5MTAwODA5YjZh
MDY4ZDE0NmFiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCkBAIC0zOSwyNyArMzksMjcgQEAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRGdW5jKEZpbHRl
ck9wZXJhdGlvbiogZnJvbU9wLCBGaWwKIH0KIAogCi1zdGF0aWMgRmlsdGVyT3BlcmF0aW9ucyBh
cHBseUZpbHRlckFuaW1hdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmcm9tLCBjb25zdCBG
aWx0ZXJPcGVyYXRpb25zKiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBib3hT
aXplKQorc3RhdGljIEZpbHRlck9wZXJhdGlvbnMgYXBwbHlGaWx0ZXJBbmltYXRpb24oY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZnJvbSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdG8sIGRvdWJs
ZSBwcm9ncmVzcywgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKIHsKICAgICAvLyBGaXJzdCBmcmFt
ZSBvZiBhbiBhbmltYXRpb24uCiAgICAgaWYgKCFwcm9ncmVzcykKLSAgICAgICAgcmV0dXJuICpm
cm9tOworICAgICAgICByZXR1cm4gZnJvbTsKIAogICAgIC8vIExhc3QgZnJhbWUgb2YgYW4gYW5p
bWF0aW9uLgogICAgIGlmIChwcm9ncmVzcyA9PSAxKQotICAgICAgICByZXR1cm4gKnRvOworICAg
ICAgICByZXR1cm4gdG87CiAKLSAgICBpZiAoIWZyb20tPmlzRW1wdHkoKSAmJiAhdG8tPmlzRW1w
dHkoKSAmJiAhZnJvbS0+b3BlcmF0aW9uc01hdGNoKCp0bykpCi0gICAgICAgIHJldHVybiAqdG87
CisgICAgaWYgKCFmcm9tLmlzRW1wdHkoKSAmJiAhdG8uaXNFbXB0eSgpICYmICFmcm9tLm9wZXJh
dGlvbnNNYXRjaCh0bykpCisgICAgICAgIHJldHVybiB0bzsKIAogICAgIEZpbHRlck9wZXJhdGlv
bnMgcmVzdWx0OwogCi0gICAgc2l6ZV90IGZyb21TaXplID0gZnJvbS0+b3BlcmF0aW9ucygpLnNp
emUoKTsKLSAgICBzaXplX3QgdG9TaXplID0gdG8tPm9wZXJhdGlvbnMoKS5zaXplKCk7CisgICAg
c2l6ZV90IGZyb21TaXplID0gZnJvbS5vcGVyYXRpb25zKCkuc2l6ZSgpOworICAgIHNpemVfdCB0
b1NpemUgPSB0by5vcGVyYXRpb25zKCkuc2l6ZSgpOwogICAgIHNpemVfdCBzaXplID0gc3RkOjpt
YXgoZnJvbVNpemUsIHRvU2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKLSAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZnJvbU9wID0gKGkgPCBmcm9t
U2l6ZSkgPyBmcm9tLT5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwotICAgICAgICBSZWZQdHI8
RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8tPm9wZXJhdGlvbnMoKVtp
XS5nZXQoKSA6IDA7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZyb21PcCA9IChp
IDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOworICAgICAgICBS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8ub3BlcmF0aW9u
cygpW2ldLmdldCgpIDogMDsKICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRl
ZE9wID0gdG9PcCA/IGJsZW5kRnVuYyhmcm9tT3AuZ2V0KCksIHRvT3AuZ2V0KCksIHByb2dyZXNz
LCBib3hTaXplKSA6IChmcm9tT3AgPyBibGVuZEZ1bmMoMCwgZnJvbU9wLmdldCgpLCBwcm9ncmVz
cywgYm94U2l6ZSwgdHJ1ZSkgOiAwKTsKICAgICAgICAgaWYgKGJsZW5kZWRPcCkKICAgICAgICAg
ICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7CkBAIC0xNTUsNTEgKzE1
NSw1MSBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVuY3Rpb24oY29uc3QgVGlt
aW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbAogICAgIHJldHVybiBwcm9ncmVzczsKIH0K
IAotc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMq
IHRvLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGJvb2wgbGlzdHNN
YXRjaCkKK3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcHBseVRyYW5zZm9ybUFuaW1hdGlv
bihjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b25zJiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBib29sIGxp
c3RzTWF0Y2gpCiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OwogCiAgICAgLy8g
Rmlyc3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmICghcHJvZ3Jlc3MpIHsKLSAgICAg
ICAgZnJvbS0+YXBwbHkoYm94U2l6ZSwgbWF0cml4KTsKKyAgICAgICAgZnJvbS5hcHBseShib3hT
aXplLCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIExh
c3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmIChwcm9ncmVzcyA9PSAxKSB7Ci0gICAg
ICAgIHRvLT5hcHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICB0by5hcHBseShib3hTaXpl
LCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIElmIHdl
IGhhdmUgaW5jb21wYXRpYmxlIG9wZXJhdGlvbiBsaXN0cywgd2UgYmxlbmQgdGhlIHJlc3VsdGlu
ZyBtYXRyaWNlcy4KICAgICBpZiAoIWxpc3RzTWF0Y2gpIHsKICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggZnJvbU1hdHJpeDsKLSAgICAgICAgdG8tPmFwcGx5KGJveFNpemUsIG1hdHJpeCk7
Ci0gICAgICAgIGZyb20tPmFwcGx5KGJveFNpemUsIGZyb21NYXRyaXgpOworICAgICAgICB0by5h
cHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICBmcm9tLmFwcGx5KGJveFNpemUsIGZyb21N
YXRyaXgpOwogICAgICAgICBtYXRyaXguYmxlbmQoZnJvbU1hdHJpeCwgcHJvZ3Jlc3MpOwogICAg
ICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIEFuaW1hdGlvbiB0byAiLXdlYmtp
dC10cmFuc2Zvcm06IG5vbmUiLgotICAgIGlmICghdG8tPnNpemUoKSkgewotICAgICAgICBUcmFu
c2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQoKmZyb20pOworICAgIGlmICghdG8uc2l6ZSgpKSB7Cisg
ICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRlZChmcm9tKTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBibGVuZGVkLm9wZXJhdGlvbnMoKS5zaXplKCk7ICsraSkKICAgICAg
ICAgICAgIGJsZW5kZWQub3BlcmF0aW9ucygpW2ldLT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkt
PmFwcGx5KG1hdHJpeCwgYm94U2l6ZSk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQog
CiAgICAgLy8gQW5pbWF0aW9uIGZyb20gIi13ZWJraXQtdHJhbnNmb3JtOiBub25lIi4KLSAgICBp
ZiAoIWZyb20tPnNpemUoKSkgewotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQo
KnRvKTsKKyAgICBpZiAoIWZyb20uc2l6ZSgpKSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlv
bnMgYmxlbmRlZCh0byk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxlbmRlZC5v
cGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMo
KVtpXS0+YmxlbmQoMCwgMS4gLSBwcm9ncmVzcywgdHJ1ZSktPmFwcGx5KG1hdHJpeCwgYm94U2l6
ZSk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQogCiAgICAgLy8gTm9ybWFsIGFuaW1h
dGlvbiB3aXRoIGEgbWF0Y2hpbmcgb3BlcmF0aW9uIGxpc3QuCi0gICAgVHJhbnNmb3JtT3BlcmF0
aW9ucyBibGVuZGVkKCp0byk7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZGVkKHRvKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsZW5kZWQub3BlcmF0aW9ucygpLnNpemUoKTsg
KytpKQotICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS0+YXQoaSks
IHByb2dyZXNzLCAhZnJvbS0+YXQoaSkpLT5hcHBseShtYXRyaXgsIGJveFNpemUpOworICAgICAg
ICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS5hdChpKSwgcHJvZ3Jlc3MsICFm
cm9tLmF0KGkpKS0+YXBwbHkobWF0cml4LCBib3hTaXplKTsKICAgICByZXR1cm4gbWF0cml4Owog
fQogCkBAIC0yMjcsMTggKzIyNywxOCBAQCBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpHcmFwaGlj
c0xheWVyQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS2V5ZnJhbQogewogfQog
Ci12b2lkIEdyYXBoaWNzTGF5ZXJBbmltYXRpb246OmFwcGx5SW50ZXJuYWwoQ2xpZW50KiBjbGll
bnQsIGNvbnN0IEFuaW1hdGlvblZhbHVlKiBmcm9tLCBjb25zdCBBbmltYXRpb25WYWx1ZSogdG8s
IGZsb2F0IHByb2dyZXNzKQordm9pZCBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjphcHBseUludGVy
bmFsKENsaWVudCogY2xpZW50LCBjb25zdCBBbmltYXRpb25WYWx1ZSYgZnJvbSwgY29uc3QgQW5p
bWF0aW9uVmFsdWUmIHRvLCBmbG9hdCBwcm9ncmVzcykKIHsKICAgICBzd2l0Y2ggKG1fa2V5ZnJh
bWVzLnByb3BlcnR5KCkpIHsKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5OgotICAg
ICAgICBjbGllbnQtPnNldEFuaW1hdGVkT3BhY2l0eShhcHBseU9wYWNpdHlBbmltYXRpb24oKHN0
YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPihmcm9tKS0+dmFsdWUoKSksIChz
dGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odG8pLT52YWx1ZSgpKSwgcHJv
Z3Jlc3MpKTsKKyAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZE9wYWNpdHkoYXBwbHlPcGFjaXR5
QW5pbWF0aW9uKChzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJj4oZnJvbSku
dmFsdWUoKSksIChzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJj4odG8pLnZh
bHVlKCkpLCBwcm9ncmVzcykpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBbmltYXRlZFBy
b3BlcnR5V2Via2l0VHJhbnNmb3JtOgotICAgICAgICBjbGllbnQtPnNldEFuaW1hdGVkVHJhbnNm
b3JtKGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlKj4oZnJvbSktPnZhbHVlKCksIHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlKj4odG8pLT52YWx1ZSgpLCBwcm9ncmVzcywgbV9ib3hTaXplLCBtX2xp
c3RzTWF0Y2gpKTsKKyAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZFRyYW5zZm9ybShhcHBseVRy
YW5zZm9ybUFuaW1hdGlvbihzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSY+KGZyb20pLnZhbHVlKCksIHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZh
bHVlJj4odG8pLnZhbHVlKCksIHByb2dyZXNzLCBtX2JveFNpemUsIG1fbGlzdHNNYXRjaCkpOwog
ICAgICAgICByZXR1cm47CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGNhc2UgQW5pbWF0
ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlcjoKLSAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZEZpbHRl
cnMoYXBwbHlGaWx0ZXJBbmltYXRpb24oc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9u
VmFsdWUqPihmcm9tKS0+dmFsdWUoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9u
VmFsdWUqPih0byktPnZhbHVlKCksIHByb2dyZXNzLCBtX2JveFNpemUpKTsKKyAgICAgICAgY2xp
ZW50LT5zZXRBbmltYXRlZEZpbHRlcnMoYXBwbHlGaWx0ZXJBbmltYXRpb24oc3RhdGljX2Nhc3Q8
Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPihmcm9tKS52YWx1ZSgpLCBzdGF0aWNfY2FzdDxj
b25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSY+KHRvKS52YWx1ZSgpLCBwcm9ncmVzcywgbV9ib3hT
aXplKSk7CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIGRlZmF1bHQ6CkBAIC0zMDQsMTMg
KzMwNCwxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJBbmltYXRpb246OmFwcGx5KENsaWVudCogY2xp
ZW50KQogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9rZXlmcmFtZXMuc2l6
ZSgpIC0gMTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlKiBmcm9tID0gbV9r
ZXlmcmFtZXMuYXQoaSk7Ci0gICAgICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlKiB0byA9IG1fa2V5
ZnJhbWVzLmF0KGkgKyAxKTsKLSAgICAgICAgaWYgKGZyb20tPmtleVRpbWUoKSA+IG5vcm1hbGl6
ZWRWYWx1ZSB8fCB0by0+a2V5VGltZSgpIDwgbm9ybWFsaXplZFZhbHVlKQorICAgICAgICBjb25z
dCBBbmltYXRpb25WYWx1ZSYgZnJvbSA9IG1fa2V5ZnJhbWVzLmF0KGkpOworICAgICAgICBjb25z
dCBBbmltYXRpb25WYWx1ZSYgdG8gPSBtX2tleWZyYW1lcy5hdChpICsgMSk7CisgICAgICAgIGlm
IChmcm9tLmtleVRpbWUoKSA+IG5vcm1hbGl6ZWRWYWx1ZSB8fCB0by5rZXlUaW1lKCkgPCBub3Jt
YWxpemVkVmFsdWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBub3JtYWxpemVk
VmFsdWUgPSAobm9ybWFsaXplZFZhbHVlIC0gZnJvbS0+a2V5VGltZSgpKSAvICh0by0+a2V5VGlt
ZSgpIC0gZnJvbS0+a2V5VGltZSgpKTsKLSAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRp
bWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmcm9tLCBtX2Fu
aW1hdGlvbi5nZXQoKSk7CisgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IChub3JtYWxpemVkVmFs
dWUgLSBmcm9tLmtleVRpbWUoKSkgLyAodG8ua2V5VGltZSgpIC0gZnJvbS5rZXlUaW1lKCkpOwor
ICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5j
dGlvbkZvckFuaW1hdGlvblZhbHVlKCZmcm9tLCBtX2FuaW1hdGlvbi5nZXQoKSk7CiAgICAgICAg
IG5vcm1hbGl6ZWRWYWx1ZSA9IGFwcGx5VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24sIG5v
cm1hbGl6ZWRWYWx1ZSwgbV9hbmltYXRpb24tPmR1cmF0aW9uKCkpOwogICAgICAgICBhcHBseUlu
dGVybmFsKGNsaWVudCwgZnJvbSwgdG8sIG5vcm1hbGl6ZWRWYWx1ZSk7CiAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllckFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllckFuaW1hdGlvbi5oCmluZGV4IDlmMGI1YzUyYWJkOTgyZDdiZGM0Njg4MjdlM2Q4Zjkw
ZDY1YmExZGIuLjJkMmY2ODU3MzU0NDIzZmY4MWVmMTYxNDlmMTY2YjgzYzE1NjEzNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmlt
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQW5pbWF0aW9uLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIGJvb2wgbGlzdHNN
YXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdHNNYXRjaDsgfQogCiBwcml2YXRlOgotICAgIHZv
aWQgYXBwbHlJbnRlcm5hbChDbGllbnQqLCBjb25zdCBBbmltYXRpb25WYWx1ZSogZnJvbSwgY29u
c3QgQW5pbWF0aW9uVmFsdWUqIHRvLCBmbG9hdCBwcm9ncmVzcyk7CisgICAgdm9pZCBhcHBseUlu
dGVybmFsKENsaWVudCosIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBmcm9tLCBjb25zdCBBbmltYXRp
b25WYWx1ZSYgdG8sIGZsb2F0IHByb2dyZXNzKTsKICAgICBLZXlmcmFtZVZhbHVlTGlzdCBtX2tl
eWZyYW1lczsKICAgICBJbnRTaXplIG1fYm94U2l6ZTsKICAgICBSZWZQdHI8QW5pbWF0aW9uPiBt
X2FuaW1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDIxMGI4MWFiZDcyMjE0OTRhZDdkZjI3NTI0
ZmUxYzM5ZTZkMzdhNmMuLmZmY2FkODc5NmVmNGYzZjlhOTNiN2NjYTVjZDQyYzVlMTc2Yzc2OTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcApAQCAtMjQyLDkgKzI0MiwxMCBAQCBzdGF0aWMgYm9vbCBhbmltYXRp
b25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxp
c3QsCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rp
b24qIHRpbWluZ0Z1bmN0aW9uID0gdmFsdWVMaXN0LmF0KGkpLT50aW1pbmdGdW5jdGlvbigpOwot
ICAgICAgICBpZiAodGltaW5nRnVuY3Rpb24gJiYgdGltaW5nRnVuY3Rpb24tPmlzU3RlcHNUaW1p
bmdGdW5jdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChjb25z
dCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB2YWx1ZUxpc3QuYXQoaSkudGltaW5n
RnVuY3Rpb24oKSkgeworICAgICAgICAgICAgaWYgKHRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBzVGlt
aW5nRnVuY3Rpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTIwOTEsNyArMjA5Miw3IEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25z
dCBLZXlmcmFtZVZhbHVlCiAKICAgICBib29sIGhhc0JpZ1JvdGF0aW9uOwogICAgIGludCBsaXN0
SW5kZXggPSB2YWxpZGF0ZVRyYW5zZm9ybU9wZXJhdGlvbnModmFsdWVMaXN0LCBoYXNCaWdSb3Rh
dGlvbik7Ci0gICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyogb3BlcmF0aW9ucyA9IChsaXN0
SW5kZXggPj0gMCkgPyBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+
KHZhbHVlTGlzdC5hdChsaXN0SW5kZXgpKS0+dmFsdWUoKSA6IDA7CisgICAgY29uc3QgVHJhbnNm
b3JtT3BlcmF0aW9ucyogb3BlcmF0aW9ucyA9IChsaXN0SW5kZXggPj0gMCkgPyAmc3RhdGljX2Nh
c3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4
KSkudmFsdWUoKSA6IDA7CiAKICAgICAvLyBXZSBuZWVkIHRvIGZhbGwgYmFjayB0byBzb2Z0d2Fy
ZSBhbmltYXRpb24gaWYgd2UgZG9uJ3QgaGF2ZSBzZXRWYWx1ZUZ1bmN0aW9uOiwgYW5kCiAgICAg
Ly8gd2Ugd291bGQgbmVlZCB0byBhbmltYXRlIGVhY2ggaW5jb21pbmcgdHJhbnNmb3JtIGZ1bmN0
aW9uIHNlcGFyYXRlbHkuIFRoaXMgaXMgdGhlCkBAIC0yMTgxLDIxICsyMTgyLDIxIEBAIGJvb2wg
R3JhcGhpY3NMYXllckNBOjpjcmVhdGVGaWx0ZXJBbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25z
dCBLZXlmcmFtZVZhbHVlTGlzCiAgICAgaWYgKGxpc3RJbmRleCA8IDApCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgCi0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyogb3BlcmF0aW9u
cyA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0
KGxpc3RJbmRleCkpLT52YWx1ZSgpOworICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJh
dGlvbnMgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlz
dC5hdChsaXN0SW5kZXgpKS52YWx1ZSgpOwogICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGxhdGZvcm0g
bGF5ZXIgZGlkbid0IGZhbGxiYWNrIHRvIHVzaW5nIHNvZnR3YXJlIGZpbHRlciBjb21wb3NpdGlu
ZyBpbnN0ZWFkLgotICAgIGlmICghUGxhdGZvcm1DQUxheWVyOjpmaWx0ZXJzQ2FuQmVDb21wb3Np
dGVkKCpvcGVyYXRpb25zKSkKKyAgICBpZiAoIVBsYXRmb3JtQ0FMYXllcjo6ZmlsdGVyc0NhbkJl
Q29tcG9zaXRlZChvcGVyYXRpb25zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50
IG51bUFuaW1hdGlvbnMgPSBvcGVyYXRpb25zLT5zaXplKCk7CisgICAgaW50IG51bUFuaW1hdGlv
bnMgPSBvcGVyYXRpb25zLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBjYW4ndCBjdXJyZW50
bHkgaGFyZHdhcmUgYW5pbWF0ZSBzaGFkb3dzLgogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
QW5pbWF0aW9uczsgKytpKSB7Ci0gICAgICAgIGlmIChvcGVyYXRpb25zLT5hdChpKS0+Z2V0T3Bl
cmF0aW9uVHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpCisgICAgICAgIGlm
IChvcGVyYXRpb25zLmF0KGkpLT5nZXRPcGVyYXRpb25UeXBlKCkgPT0gRmlsdGVyT3BlcmF0aW9u
OjpEUk9QX1NIQURPVykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBm
b3IgKGludCBhbmltYXRpb25JbmRleCA9IDA7IGFuaW1hdGlvbkluZGV4IDwgbnVtQW5pbWF0aW9u
czsgKythbmltYXRpb25JbmRleCkgewotICAgICAgICBpZiAoIWFwcGVuZFRvVW5jb21taXR0ZWRB
bmltYXRpb25zKHZhbHVlTGlzdCwgb3BlcmF0aW9ucy0+b3BlcmF0aW9ucygpLmF0KGFuaW1hdGlv
bkluZGV4KS5nZXQoKSwgYW5pbWF0aW9uLCBhbmltYXRpb25OYW1lLCBhbmltYXRpb25JbmRleCwg
dGltZU9mZnNldCkpCisgICAgICAgIGlmICghYXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMo
dmFsdWVMaXN0LCBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hdChhbmltYXRpb25JbmRleCkuZ2V0
KCksIGFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjI1MywxMiArMjI1NCwx
MiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1h
dGlvbiogcHJvcGVydHlBbmltLCBjb25zdCBBbgogICAgIHByb3BlcnR5QW5pbS0+c2V0RmlsbE1v
ZGUoZmlsbE1vZGUpOwogfQogCi1jb25zdCBUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXllckNB
Ojp0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlKiBh
bmltVmFsdWUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkKK2NvbnN0IFRpbWluZ0Z1bmN0aW9uKiBH
cmFwaGljc0xheWVyQ0E6OnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5p
bWF0aW9uVmFsdWUmIGFuaW1WYWx1ZSwgY29uc3QgQW5pbWF0aW9uJiBhbmltKQogewotICAgIGlm
IChhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiBhbmltVmFsdWUt
PnRpbWluZ0Z1bmN0aW9uKCk7Ci0gICAgaWYgKGFuaW0tPmlzVGltaW5nRnVuY3Rpb25TZXQoKSkK
LSAgICAgICAgcmV0dXJuIGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7CisgICAgaWYgKGFu
aW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gYW5pbVZhbHVlLnRpbWlu
Z0Z1bmN0aW9uKCk7CisgICAgaWYgKGFuaW0uaXNUaW1pbmdGdW5jdGlvblNldCgpKQorICAgICAg
ICByZXR1cm4gYW5pbS50aW1pbmdGdW5jdGlvbigpLmdldCgpOwogICAgIAogICAgIHJldHVybiBD
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpkZWZhdWx0VGltaW5nRnVuY3Rpb24oKTsKIH0KQEAg
LTIyNzIsOCArMjI3Myw4IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRw
b2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAKICAgICBzd2l0
Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7CiAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3Bh
Y2l0eTogewotICAgICAgICBiYXNpY0FuaW0tPnNldEZyb21WYWx1ZShzdGF0aWNfY2FzdDxjb25z
dCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGZyb21JbmRleCkpLT52YWx1ZSgp
KTsKLSAgICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0
QW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpLT52YWx1ZSgpKTsKKyAgICAg
ICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRp
b25WYWx1ZSY+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKS52YWx1ZSgpKTsKKyAgICAgICAgYmFz
aWNBbmltLT5zZXRUb1ZhbHVlKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUm
Pih2YWx1ZUxpc3QuYXQodG9JbmRleCkpLnZhbHVlKCkpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgZGVmYXVsdDoKQEAgLTIyODMsNyArMjI4NCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNB
OjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlz
dCwKIAogICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRp
b25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CiAgICAgLy8gZm9yIGEg
dGltaW5nIGZ1bmN0aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcgYW5pbWF0aW9uIGNhc2UsIHRo
ZSBmaXJzdCBrZXlmcmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0aW9uLgotICAgIGNvbnN0
IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0
aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCBhbmltYXRpb24pOworICAgIGNvbnN0IFRpbWluZ0Z1
bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUo
dmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKTsKICAgICBpZiAodGltaW5nRnVuY3Rpb24pCiAg
ICAgICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24sICFmb3J3
YXJkcyk7CiAKQEAgLTIzMDAsMTMgKzIzMDEsMTMgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNl
dEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAog
ICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBmb3J3YXJkcyA/IGkgOiAodmFsdWVMaXN0LnNp
emUoKSAtIGkgLSAxKTsKLSAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGN1clZhbHVlID0g
dmFsdWVMaXN0LmF0KGluZGV4KTsKLSAgICAgICAga2V5VGltZXMuYXBwZW5kKGZvcndhcmRzID8g
Y3VyVmFsdWUtPmtleVRpbWUoKSA6ICgxIC0gY3VyVmFsdWUtPmtleVRpbWUoKSkpOworICAgICAg
ICBjb25zdCBBbmltYXRpb25WYWx1ZSYgY3VyVmFsdWUgPSB2YWx1ZUxpc3QuYXQoaW5kZXgpOwor
ICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2FyZHMgPyBjdXJWYWx1ZS5rZXlUaW1lKCkgOiAo
MSAtIGN1clZhbHVlLmtleVRpbWUoKSkpOwogCiAgICAgICAgIHN3aXRjaCAodmFsdWVMaXN0LnBy
b3BlcnR5KCkpIHsKICAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eTogewotICAg
ICAgICAgICAgY29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSogZmxvYXRWYWx1ZSA9IHN0YXRpY19j
YXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPihjdXJWYWx1ZSk7Ci0gICAgICAgICAgICB2
YWx1ZXMuYXBwZW5kKGZsb2F0VmFsdWUtPnZhbHVlKCkpOworICAgICAgICAgICAgY29uc3QgRmxv
YXRBbmltYXRpb25WYWx1ZSYgZmxvYXRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5p
bWF0aW9uVmFsdWUmPihjdXJWYWx1ZSk7CisgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGZsb2F0
VmFsdWUudmFsdWUoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBk
ZWZhdWx0OgpAQCAtMjMxNSw3ICsyMzE2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEFu
aW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGkgPCAodmFsdWVMaXN0LnNpemUoKSAtIDEpKQotICAgICAg
ICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZh
bHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgYW5pbWF0
aW9uKSk7CisgICAgICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9u
Rm9yQW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRl
eCAtIDEpLCAqYW5pbWF0aW9uKSk7CiAgICAgfQogICAgIAogICAgIGtleWZyYW1lQW5pbS0+c2V0
S2V5VGltZXMoa2V5VGltZXMpOwpAQCAtMjMzNCwxMyArMjMzNSwxMyBAQCBib29sIEdyYXBoaWNz
TGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiB2YQogICAgIHVuc2lnbmVkIGZyb21JbmRleCA9ICFmb3J3YXJkczsKICAgICB1bnNp
Z25lZCB0b0luZGV4ID0gZm9yd2FyZHM7CiAgICAgCi0gICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0
aW9uVmFsdWUqIHN0YXJ0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZSo+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKTsKLSAgICBjb25zdCBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZSogZW5kVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1Bbmlt
YXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCh0b0luZGV4KSk7CisgICAgY29uc3QgVHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWUmIHN0YXJ0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKTsKKyAgICBjb25zdCBUcmFu
c2Zvcm1BbmltYXRpb25WYWx1ZSYgZW5kVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdCh0b0luZGV4KSk7CiAgICAgCiAgICAgaWYg
KGlzTWF0cml4QW5pbWF0aW9uKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21U
cmFuc2Zvcm0sIHRvVHJhbnNmb3JtOwotICAgICAgICBzdGFydFZhbHVlLT52YWx1ZSgpLT5hcHBs
eShib3hTaXplLCBmcm9tVHJhbnNmb3JtKTsKLSAgICAgICAgZW5kVmFsdWUtPnZhbHVlKCktPmFw
cGx5KGJveFNpemUsIHRvVHJhbnNmb3JtKTsKKyAgICAgICAgc3RhcnRWYWx1ZS52YWx1ZSgpLmFw
cGx5KGJveFNpemUsIGZyb21UcmFuc2Zvcm0pOworICAgICAgICBlbmRWYWx1ZS52YWx1ZSgpLmFw
cGx5KGJveFNpemUsIHRvVHJhbnNmb3JtKTsKIAogICAgICAgICAvLyBJZiBhbnkgbWF0cml4IGlz
IHNpbmd1bGFyLCBDQSB3b24ndCBhbmltYXRlIGl0IGNvcnJlY3RseS4gU28gZmFsbCBiYWNrIHRv
IHNvZnR3YXJlIGFuaW1hdGlvbgogICAgICAgICBpZiAoIWZyb21UcmFuc2Zvcm0uaXNJbnZlcnRp
YmxlKCkgfHwgIXRvVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQpAQCAtMjM1MSwzNCArMjM1Miwz
NCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRz
KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChp
c1RyYW5zZm9ybVR5cGVOdW1iZXIodHJhbnNmb3JtT3BUeXBlKSkgewogICAgICAgICAgICAgZmxv
YXQgZnJvbVZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFy
dFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hT
aXplLCBmcm9tVmFsdWUpOworICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShz
dGFydFZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94
U2l6ZSwgZnJvbVZhbHVlKTsKICAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKGZy
b21WYWx1ZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZsb2F0IHRvVmFsdWU7Ci0gICAg
ICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChm
dW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKKyAgICAg
ICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUudmFsdWUoKS5hdChmdW5j
dGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKICAgICAgICAg
ICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1ZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmIChp
c1RyYW5zZm9ybVR5cGVGbG9hdFBvaW50M0QodHJhbnNmb3JtT3BUeXBlKSkgewogICAgICAgICAg
ICAgRmxvYXRQb2ludDNEIGZyb21WYWx1ZTsKLSAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0
aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9y
bU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1
bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zv
cm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNl
dEZyb21WYWx1ZShmcm9tVmFsdWUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBGbG9hdFBv
aW50M0QgdG9WYWx1ZTsKLSAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5k
VmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNp
emUsIHRvVmFsdWUpOworICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRW
YWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUs
IHRvVmFsdWUpOwogICAgICAgICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHRvVmFsdWUpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVZh
bHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLT52
YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCBmcm9t
VmFsdWUpOworICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVl
LnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJv
bVZhbHVlKTsKICAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKGZyb21WYWx1ZSk7
CiAKICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRvVmFsdWU7Ci0gICAgICAgICAg
ICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlv
bkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKKyAgICAgICAgICAg
IGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbklu
ZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKICAgICAgICAgICAgIGJh
c2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1ZhbHVlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8v
IFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBz
dGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CiAgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0
aW9uLiBFdmVuIGluIHRoZSByZXZlcnNpbmcgYW5pbWF0aW9uIGNhc2UsIHRoZSBmaXJzdCBrZXlm
cmFtZSBwcm92aWRlcyB0aGUgdGltaW5nIGZ1bmN0aW9uLgotICAgIGNvbnN0IFRpbWluZ0Z1bmN0
aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFs
dWVMaXN0LmF0KDApLCBhbmltYXRpb24pOworICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1p
bmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0
KDApLCAqYW5pbWF0aW9uKTsKICAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWlu
Z0Z1bmN0aW9uLCAhZm9yd2FyZHMpOwogCiAgICAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVG
dW5jdGlvblR5cGUgdmFsdWVGdW5jdGlvbiA9IGdldFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJhbnNm
b3JtT3BlcmF0aW9uKHRyYW5zZm9ybU9wVHlwZSk7CkBAIC0yNDAwLDEyICsyNDAxLDEyIEBAIGJv
b2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFs
dWVMaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gZm9yd2FyZHMg
PyBpIDogKHZhbHVlTGlzdC5zaXplKCkgLSBpIC0gMSk7Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlKiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGluZGV4KSk7Ci0gICAgICAgIGtleVRpbWVzLmFw
cGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLT5rZXlUaW1lKCkgOiAoMSAtIGN1clZhbHVlLT5rZXlU
aW1lKCkpKTsKKyAgICAgICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIGN1clZhbHVl
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3Qu
YXQoaW5kZXgpKTsKKyAgICAgICAga2V5VGltZXMuYXBwZW5kKGZvcndhcmRzID8gY3VyVmFsdWUu
a2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS5rZXlUaW1lKCkpKTsKIAogICAgICAgICBpZiAoaXNN
YXRyaXhBbmltYXRpb24pIHsKICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5z
Zm9ybTsKLSAgICAgICAgICAgIGN1clZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCB0cmFu
c2Zvcm0pOworICAgICAgICAgICAgY3VyVmFsdWUudmFsdWUoKS5hcHBseShib3hTaXplLCB0cmFu
c2Zvcm0pOwogCiAgICAgICAgICAgICAvLyBJZiBhbnkgbWF0cml4IGlzIHNpbmd1bGFyLCBDQSB3
b24ndCBhbmltYXRlIGl0IGNvcnJlY3RseS4gU28gZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGFuaW1h
dGlvbgogICAgICAgICAgICAgaWYgKCF0cmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCkBAIC0yNDEz
LDcgKzI0MTQsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9u
S2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogCiAgICAgICAgICAgICB0cmFu
c2Zvcm1hdGlvbk1hdHJpeFZhbHVlcy5hcHBlbmQodHJhbnNmb3JtKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNmb3JtT3AgPSBj
dXJWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCk7CisgICAgICAgICAgICBjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybU9wID0gY3VyVmFsdWUudmFsdWUoKS5hdChmdW5j
dGlvbkluZGV4KTsKICAgICAgICAgICAgIGlmIChpc1RyYW5zZm9ybVR5cGVOdW1iZXIodHJhbnNm
b3JtT3BUeXBlKSkgewogICAgICAgICAgICAgICAgIGZsb2F0IHZhbHVlOwogICAgICAgICAgICAg
ICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUodHJhbnNmb3JtT3AsIHRyYW5zZm9ybU9wVHlw
ZSwgYm94U2l6ZSwgdmFsdWUpOwpAQCAtMjQzMCw3ICsyNDMxLDcgQEAgYm9vbCBHcmFwaGljc0xh
eWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVl
TGlzdCYgdmEKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkg
LSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25G
b3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4
IC0gMSksIGFuaW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0
aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1
ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwogICAgIH0KICAgICAKICAgICBrZXlm
cmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRpbWVzKTsKQEAgLTI0NjEsMTEgKzI0NjIsMTEgQEAg
Ym9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUKICAgICB1bnNpZ25lZCBmcm9tSW5kZXggPSAhZm9yd2Fy
ZHM7CiAgICAgdW5zaWduZWQgdG9JbmRleCA9IGZvcndhcmRzOwogCi0gICAgY29uc3QgRmlsdGVy
QW5pbWF0aW9uVmFsdWUqIGZyb21WYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1h
dGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGZyb21JbmRleCkpOwotICAgIGNvbnN0IEZpbHRlckFu
aW1hdGlvblZhbHVlKiB0b1ZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9u
VmFsdWUqPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOworICAgIGNvbnN0IEZpbHRlckFuaW1hdGlv
blZhbHVlJiBmcm9tVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1
ZSY+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKTsKKyAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSYgdG9WYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJj4o
dmFsdWVMaXN0LmF0KHRvSW5kZXgpKTsKIAotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJv
bU9wZXJhdGlvbiA9IGZyb21WYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCk7Ci0gICAg
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiB0b09wZXJhdGlvbiA9IHRvVmFsdWUtPnZhbHVlKCktPmF0
KGZ1bmN0aW9uSW5kZXgpOworICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbU9wZXJhdGlv
biA9IGZyb21WYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpOworICAgIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbiogdG9PcGVyYXRpb24gPSB0b1ZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRl
eCk7CiAKICAgICBSZWZQdHI8RGVmYXVsdEZpbHRlck9wZXJhdGlvbj4gZGVmYXVsdEZyb21PcGVy
YXRpb247CiAgICAgUmVmUHRyPERlZmF1bHRGaWx0ZXJPcGVyYXRpb24+IGRlZmF1bHRUb09wZXJh
dGlvbjsKQEAgLTI0ODcsNyArMjQ4OCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRGaWx0
ZXJBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlCiAKICAg
ICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28g
d2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAogICAgIC8vIGZvciBhIHRpbWluZyBm
dW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5nIGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qg
a2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBmdW5jdGlvbi4KLSAgICBiYXNpY0FuaW0tPnNl
dFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0
LmF0KDApLCBhbmltYXRpb24pLCAhZm9yd2FyZHMpOworICAgIGJhc2ljQW5pbS0+c2V0VGltaW5n
RnVuY3Rpb24odGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCks
ICphbmltYXRpb24pLCAhZm9yd2FyZHMpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNTAz
LDExICsyNTA0LDExIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRpb25L
ZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlCiAKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIHVuc2lnbmVk
IGluZGV4ID0gZm9yd2FyZHMgPyBpIDogKHZhbHVlTGlzdC5zaXplKCkgLSBpIC0gMSk7Ci0gICAg
ICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNv
bnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGluZGV4KSk7Ci0gICAgICAg
IGtleVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLT5rZXlUaW1lKCkgOiAoMSAtIGN1
clZhbHVlLT5rZXlUaW1lKCkpKTsKKyAgICAgICAgY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUm
IGN1clZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPih2YWx1
ZUxpc3QuYXQoaW5kZXgpKTsKKyAgICAgICAga2V5VGltZXMuYXBwZW5kKGZvcndhcmRzID8gY3Vy
VmFsdWUua2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS5rZXlUaW1lKCkpKTsKIAotICAgICAgICBp
ZiAoY3VyVmFsdWUtPnZhbHVlKCktPm9wZXJhdGlvbnMoKS5zaXplKCkgPiBzdGF0aWNfY2FzdDxz
aXplX3Q+KGZ1bmN0aW9uSW5kZXgpKQotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChjdXJWYWx1
ZS0+dmFsdWUoKS0+b3BlcmF0aW9ucygpW2Z1bmN0aW9uSW5kZXhdKTsKKyAgICAgICAgaWYgKGN1
clZhbHVlLnZhbHVlKCkub3BlcmF0aW9ucygpLnNpemUoKSA+IHN0YXRpY19jYXN0PHNpemVfdD4o
ZnVuY3Rpb25JbmRleCkpCisgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGN1clZhbHVlLnZhbHVl
KCkub3BlcmF0aW9ucygpW2Z1bmN0aW9uSW5kZXhdKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBpZiAoIWRlZmF1bHRPcGVyYXRpb24pCiAgICAgICAgICAgICAgICAgZGVmYXVsdE9wZXJh
dGlvbiA9IERlZmF1bHRGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShmaWx0ZXJPcCk7CkBAIC0yNTE1
LDcgKzI1MTYsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9uS2V5
ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZQogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKGkgPCAodmFsdWVMaXN0LnNpemUoKSAtIDEpKQotICAgICAgICAgICAgdGltaW5nRnVu
Y3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8g
Y3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgYW5pbWF0aW9uKSk7CisgICAgICAg
ICAgICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCAqYW5pbWF0
aW9uKSk7CiAgICAgfQogICAgIAogICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGlt
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuaAppbmRleCAwMmMwMjI3ZTk4YzZjNTJlODk0M2FkYWJkZDhlMGM5NGE2MTRh
NTIwLi4wOWNjY2U0NTFmNzYxNTI3NzM2MzNjYWVhMDkxNDY5NGU2MWRlZDRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aApAQCAtMjA1LDcgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
QW5pbWF0aW9uPiBjcmVhdGVLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBjb25z
dCBTdHJpbmcmLCBib29sIGFkZGl0aXZlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uKFBsYXRm
b3JtQ0FBbmltYXRpb24qLCBjb25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZlKTsKICAgICAK
LSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1
ZShjb25zdCBBbmltYXRpb25WYWx1ZSosIGNvbnN0IEFuaW1hdGlvbiopOworICAgIGNvbnN0IFRp
bWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1h
dGlvblZhbHVlJiwgY29uc3QgQW5pbWF0aW9uJik7CiAgICAgCiAgICAgYm9vbCBzZXRBbmltYXRp
b25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uKik7CiAgICAgYm9vbCBzZXRBbmltYXRpb25LZXlmcmFtZXMoY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9ybUNBQW5pbWF0
aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCmluZGV4IDFkZWZiNTJiMzRhYTgzOWE5NDMzZmZiNDAwM2YxMTU0MWY5MDFlODkuLjY0MTll
MGNiYmYxZDlmYmUwNjAyMDA4ZjdmNjg1MTk2Y2E5ODM4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0yMTA3LDE0ICsyMTA3LDE0
IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFuaW1hdGlvbihkb3VibGUgdGltZU9m
ZnNldCwgY29uc3QgQW5pbWF0aW9uKiBhbmltCiAgICAgICAgIAogICAgICAgICBib29sIGlzRmly
c3RPckxhc3RLZXlmcmFtZSA9IGtleSA9PSAwIHx8IGtleSA9PSAxOwogICAgICAgICBpZiAoKGhh
c1RyYW5zZm9ybSAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5j
b250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtKSkKLSAgICAgICAgICAg
IHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZh
bHVlKGtleSwgJihrZXlmcmFtZVN0eWxlLT50cmFuc2Zvcm0oKSksIHRmKSkpOwotICAgICAgICAK
KyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoVHJhbnNmb3JtQW5pbWF0aW9uVmFs
dWU6OmNyZWF0ZShrZXksIGtleWZyYW1lU3R5bGUtPnRyYW5zZm9ybSgpLCB0ZikpOworCiAgICAg
ICAgIGlmICgoaGFzT3BhY2l0eSAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRL
ZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSkpCi0gICAgICAgICAg
ICBvcGFjaXR5VmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZShr
ZXksIGtleWZyYW1lU3R5bGUtPm9wYWNpdHkoKSwgdGYpKSk7CisgICAgICAgICAgICBvcGFjaXR5
VmVjdG9yLmluc2VydChGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUoa2V5LCBrZXlmcmFtZVN0
eWxlLT5vcGFjaXR5KCksIHRmKSk7CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgICAg
IGlmICgoaGFzRmlsdGVyICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZy
YW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRGaWx0ZXIpKQotICAgICAgICAg
ICAgZmlsdGVyVmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUo
a2V5LCAmKGtleWZyYW1lU3R5bGUtPmZpbHRlcigpKSwgdGYpKSk7CisgICAgICAgICAgICBmaWx0
ZXJWZWN0b3IuaW5zZXJ0KEZpbHRlckFuaW1hdGlvblZhbHVlOjpjcmVhdGUoa2V5LCBrZXlmcmFt
ZVN0eWxlLT5maWx0ZXIoKSwgdGYpKTsKICNlbmRpZgogICAgIH0KIApAQCAtMjE1NCw4ICsyMTU0
LDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGlt
ZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiBv
cGFjaXR5QW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eU9w
YWNpdHkpOwogICAgICAgICBpZiAob3BhY2l0eUFuaW0gJiYgIW9wYWNpdHlBbmltLT5pc0VtcHR5
T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3Qgb3BhY2l0
eVZlY3RvcihBbmltYXRlZFByb3BlcnR5T3BhY2l0eSk7Ci0gICAgICAgICAgICBvcGFjaXR5VmVj
dG9yLmluc2VydChhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgwLCBjb21wb3NpdGlu
Z09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSkpOwotICAgICAgICAgICAgb3BhY2l0eVZl
Y3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IEZsb2F0QW5pbWF0aW9uVmFsdWUoMSwgY29tcG9zaXRp
bmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkpKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVj
dG9yLmluc2VydChGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUoMCwgY29tcG9zaXRpbmdPcGFj
aXR5KGZyb21TdHlsZS0+b3BhY2l0eSgpKSkpOworICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5p
bnNlcnQoRmxvYXRBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKDEsIGNvbXBvc2l0aW5nT3BhY2l0eSh0
b1N0eWxlLT5vcGFjaXR5KCkpKSk7CiAgICAgICAgICAgICAvLyBUaGUgYm94U2l6ZSBwYXJhbSBp
cyBvbmx5IHVzZWQgZm9yIHRyYW5zZm9ybSBhbmltYXRpb25zICh3aGljaCBjYW4gb25seSBydW4g
b24gUmVuZGVyQm94ZXMpLCBzbyB3ZSBwYXNzIGFuIGVtcHR5IHNpemUgaGVyZS4KICAgICAgICAg
ICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihvcGFjaXR5VmVjdG9yLCBJbnRT
aXplKCksIG9wYWNpdHlBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNp
dGlvbihBbmltYXRlZFByb3BlcnR5T3BhY2l0eSksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3Qgb3BhY2l0eSBpcyB2aXNpYmxlIHdo
ZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgb3BhY2l0eS4KQEAgLTIx
NjksOCArMjE2OSw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24o
ZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFu
aW1hdGlvbiogdHJhbnNmb3JtQW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CiAgICAgICAgIGlmICh0cmFuc2Zvcm1BbmltICYm
ICF0cmFuc2Zvcm1BbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAg
S2V5ZnJhbWVWYWx1ZUxpc3QgdHJhbnNmb3JtVmVjdG9yKEFuaW1hdGVkUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm0pOwotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChhZG9wdFB0cihu
ZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwgJmZyb21TdHlsZS0+dHJhbnNmb3JtKCkpKSk7
Ci0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSgxLCAmdG9TdHlsZS0+dHJhbnNmb3JtKCkpKSk7CisgICAgICAgICAg
ICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpjcmVhdGUo
MCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkpOworICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9y
Lmluc2VydChUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZTo6Y3JlYXRlKDEsIHRvU3R5bGUtPnRyYW5z
Zm9ybSgpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24o
dHJhbnNmb3JtVmVjdG9yLCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+cGl4ZWxTbmFwcGVkQm9y
ZGVyQm94UmVjdCgpLnNpemUoKSwgdHJhbnNmb3JtQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0
aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSksIHRp
bWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJl
Y3QgdHJhbnNmb3JtIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0
IHRoZSBmaW5hbCB0cmFuc2Zvcm0uCiAgICAgICAgICAgICAgICAgdXBkYXRlVHJhbnNmb3JtKHRv
U3R5bGUpOwpAQCAtMjE4NCw4ICsyMTg0LDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0
YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAg
ICAgICAgY29uc3QgQW5pbWF0aW9uKiBmaWx0ZXJBbmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZv
clByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0RmlsdGVyKTsKICAgICAgICAgaWYgKGZpbHRlckFu
aW0gJiYgIWZpbHRlckFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAg
ICBLZXlmcmFtZVZhbHVlTGlzdCBmaWx0ZXJWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEZp
bHRlcik7Ci0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGaWx0
ZXJBbmltYXRpb25WYWx1ZSgwLCAmZnJvbVN0eWxlLT5maWx0ZXIoKSkpKTsKLSAgICAgICAgICAg
IGZpbHRlclZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKDEs
ICZ0b1N0eWxlLT5maWx0ZXIoKSkpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQo
RmlsdGVyQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgwLCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7Cisg
ICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KEZpbHRlckFuaW1hdGlvblZhbHVlOjpjcmVh
dGUoMSwgdG9TdHlsZS0+ZmlsdGVyKCkpKTsKICAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5
ZXItPmFkZEFuaW1hdGlvbihmaWx0ZXJWZWN0b3IsIEludFNpemUoKSwgZmlsdGVyQW5pbSwgR3Jh
cGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVdl
YmtpdEZpbHRlciksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJl
IHRoYXQgdGhlIGNvcnJlY3QgZmlsdGVyIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVu
ZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBmaWx0ZXIuCiAgICAgICAgICAgICAgICAgdXBkYXRlRmls
dGVycyh0b1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDQxMTA3MzA4OWNjNTUzZmM3OTE0ODE5YTYwZWRlMTc5
NjRjYWE3OWUuLjgzYzI1YzM5MDZlZGYwZDMzMmQ2ZDEwNzNlYWExN2U0MWQzM2VkNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNw
cApAQCAtNjQ1LDE5ICs2NDUsMTkgQEAgdm9pZCBBcmd1bWVudENvZGVyPEdyYXBoaWNzTGF5ZXJB
bmltYXRpb24+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb24KICAgICBlbmNv
ZGVyLmVuY29kZUVudW0oa2V5ZnJhbWVzLnByb3BlcnR5KCkpOwogICAgIGVuY29kZXIgPDwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGtleWZyYW1lcy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwga2V5ZnJhbWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEFuaW1hdGlv
blZhbHVlKiB2YWx1ZSA9IGtleWZyYW1lcy5hdChpKTsKLSAgICAgICAgZW5jb2RlciA8PCB2YWx1
ZS0+a2V5VGltZSgpOwotICAgICAgICBlbmNvZGVUaW1pbmdGdW5jdGlvbihlbmNvZGVyLCB2YWx1
ZS0+dGltaW5nRnVuY3Rpb24oKSk7CisgICAgICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiB2YWx1
ZSA9IGtleWZyYW1lcy5hdChpKTsKKyAgICAgICAgZW5jb2RlciA8PCB2YWx1ZS5rZXlUaW1lKCk7
CisgICAgICAgIGVuY29kZVRpbWluZ0Z1bmN0aW9uKGVuY29kZXIsIHZhbHVlLnRpbWluZ0Z1bmN0
aW9uKCkpOwogICAgICAgICBzd2l0Y2ggKGtleWZyYW1lcy5wcm9wZXJ0eSgpKSB7CiAgICAgICAg
IGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPih2YWx1ZSktPnZhbHVlKCk7Cisg
ICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFs
dWUmPih2YWx1ZSkudmFsdWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFu
aW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06Ci0gICAgICAgICAgICBlbmNvZGVyIDw8ICpz
dGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlKS0+dmFsdWUo
KTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5p
bWF0aW9uVmFsdWUmPih2YWx1ZSkudmFsdWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKICAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5V2Via2l0Rmls
dGVyOgotICAgICAgICAgICAgZW5jb2RlciA8PCAqc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5p
bWF0aW9uVmFsdWUqPih2YWx1ZSktPnZhbHVlKCk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJj4odmFsdWUpLnZhbHVlKCk7CiAg
ICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICBkZWZhdWx0OgpAQCAtNzMzLDE0ICs3
MzMsMTQgQEAgYm9vbCBBcmd1bWVudENvZGVyPEdyYXBoaWNzTGF5ZXJBbmltYXRpb24+OjpkZWNv
ZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBHcmEKICAgICAgICAgICAgIGZsb2F0IHZhbHVl
OwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2YWx1ZSkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAga2V5ZnJhbWVzLmluc2VydChhZG9wdFB0cihu
ZXcgRmxvYXRBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB2YWx1ZSwgdGltaW5nRnVuY3Rpb24pKSk7
CisgICAgICAgICAgICBrZXlmcmFtZXMuaW5zZXJ0KEZsb2F0QW5pbWF0aW9uVmFsdWU6OmNyZWF0
ZShrZXlUaW1lLCB2YWx1ZSwgdGltaW5nRnVuY3Rpb24pKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06
IHsKICAgICAgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgdHJhbnNmb3JtOwogICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0cmFuc2Zvcm0pKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIGtleWZyYW1lcy5pbnNlcnQoYWRvcHRQdHIobmV3IFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlKGtleVRpbWUsICZ0cmFuc2Zvcm0sIHRpbWluZ0Z1bmN0aW9uKSkp
OworICAgICAgICAgICAga2V5ZnJhbWVzLmluc2VydChUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZTo6
Y3JlYXRlKGtleVRpbWUsIHRyYW5zZm9ybSwgdGltaW5nRnVuY3Rpb24pKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKQEAgLTc0OCw3ICs3
NDgsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbj46OmRlY29k
ZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEdyYQogICAgICAgICAgICAgRmlsdGVyT3BlcmF0
aW9ucyBmaWx0ZXI7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZpbHRlcikpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAga2V5ZnJhbWVzLmluc2Vy
dChhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUoa2V5VGltZSwgJmZpbHRlciwgdGlt
aW5nRnVuY3Rpb24pKSk7CisgICAgICAgICAgICBrZXlmcmFtZXMuaW5zZXJ0KEZpbHRlckFuaW1h
dGlvblZhbHVlOjpjcmVhdGUoa2V5VGltZSwgZmlsdGVyLCB0aW1pbmdGdW5jdGlvbikpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200956</attachid>
            <date>2013-05-07 12:18:24 -0700</date>
            <delta_ts>2013-05-07 12:36:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115738-20130507121730.patch</filename>
            <type>text/plain</type>
            <size>48277</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmYzMGI4M2ExOTVhN2U4
NzNjZWRlNzE0NzE2ODkwMjRlMDdjZWZlYS4uNGY1NGQyMWI2NTUzOWMzNWM4NGY4YWVlMDQxNzMy
ZThiOTUzN2FlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTA1LTA3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgS2V5
ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN0YXRpYyBjcmVhdGUoKSBmdW5jdGlvbnMg
dG8gdGhlIEFuaW1hdGlvblZhbHVlIHN1YmNsYXNzZXMsIGFuZCBjaGFuZ2UgYSBidW5jaCBvZiBw
YXJhbWV0ZXJzCisgICAgICAgIGFuZCByZXR1cm4gdmFsdWVzIHRoYXQgY2FuIG5ldmVyIGJlIG51
bGwgZnJvbSBwb2ludGVyIHR5cGVzIHRvIHJlZmVyZW5jZSB0eXBlcyB0byBiZXR0ZXIgaW5kaWNh
dGUgdGhpcy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJPcGVyYXRpb25zQXQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dmFsaWRhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdGlvbnNBdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjp2YWxpZGF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKEFuaW1hdGlvblZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblZhbHVlOjpBbmltYXRpb25WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoRmxvYXRB
bmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpG
bG9hdEFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OnZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckFuaW1hdGlvblZhbHVlOjp2YWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6RmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoRmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVW
YWx1ZUxpc3Q6On5LZXlmcmFtZVZhbHVlTGlzdCk6CisgICAgICAgIChLZXlmcmFtZVZhbHVlTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6YXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVGaWx0ZXJBbmltYXRp
b25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRp
b25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0
ZXJBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAoR3JhcGhpY3NMYXllckNBKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorCiAyMDEzLTA1LTA2ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBhbiAnaXNSZWFkT25seScgbWVt
YmVyIHRvIElETCBwYXJzZSB0cmVlIHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUzNjgxNDU2NGY4
NmRjYjQ3NjViNzFmMzNiZDgwYzA1MTVjMTVlNTcuLjBhNjI4YzQ2NWRkNTY1YTI1NDk0MTNmMzY0
MDI3MTJlN2UyOTI2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wNS0wNyAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVw
IEtleWZyYW1lVmFsdWVMaXN0IGFuZCByZWxhdGVkIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTczOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBmb3IgV2ViQ29yZSBjaGFuZ2Vz
LgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKwog
MjAxMy0wNS0wNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHNvbWUgdW5uZWNlc3Nhcnkgc29mdCBsaW5raW5nIGluIE5ldHdvcmtQcm9jZXNzLiAo
VGFrZSAyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcAppbmRleCBjNzhiNWJlYjI2OGMxOGQyZmJlZTRmZjBlYWNmODA3MTQzYWNiZjA3
Li4wMWI2YTNmZDdhMmIwYTFmZmE0ZDZjZjU0NWFhZjBjNmU1MTdhODJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtNDA5
LDkgKzQwOSw5IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6ZGlzdHJpYnV0ZU9wYWNpdHkoZmxvYXQg
YWNjdW11bGF0ZWRPcGFjaXR5KQogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotc3RhdGlj
IGlubGluZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQorc3RhdGljIGlubGlu
ZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkp
LT52YWx1ZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSY+KHZhbHVlTGlzdC5hdChpbmRleCkpLnZhbHVlKCk7CiB9CiAKIGludCBHcmFwaGljc0xh
eWVyOjp2YWxpZGF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZh
bHVlTGlzdCkKQEAgLTQyNCwyMyArNDI0LDIzIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCkKICAg
ICAvLyBFbXB0eSBmaWx0ZXJzIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBub24t
ZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZQogICAgIHNpemVfdCBmaXJzdEluZGV4ID0gMDsK
ICAgICBmb3IgKCA7IGZpcnN0SW5kZXggPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2ZpcnN0SW5kZXgp
IHsKLSAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGZpcnN0SW5kZXgp
LT5vcGVyYXRpb25zKCkuc2l6ZSgpID4gMCkKKyAgICAgICAgaWYgKCFmaWx0ZXJPcGVyYXRpb25z
QXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS5vcGVyYXRpb25zKCkuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKGZpcnN0SW5kZXggPj0gdmFsdWVMaXN0LnNp
emUoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyog
Zmlyc3RWYWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KTsKKyAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaXJzdFZhbCA9IGZpbHRlck9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGZpcnN0SW5kZXgpOwogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdElu
ZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zKiB2YWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKKyAg
ICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdmFsID0gZmlsdGVyT3BlcmF0aW9uc0F0KHZh
bHVlTGlzdCwgaSk7CiAgICAgICAgIAogICAgICAgICAvLyBBbiBlbXRweSBmaWx0ZXIgbGlzdCBt
YXRjaGVzIGFueXRoaW5nLgotICAgICAgICBpZiAodmFsLT5vcGVyYXRpb25zKCkuaXNFbXB0eSgp
KQorICAgICAgICBpZiAodmFsLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRj
aCgqdmFsKSkKKyAgICAgICAgaWYgKCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAg
ICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgCkBAIC00NTIsOSArNDUyLDkgQEAgaW50
IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWVMaXN0KQogLy8gVGhlIGhhc0JpZ1JvdGF0aW9uIGZsYWcgd2lsbCBhbHdh
eXMgcmV0dXJuIGZhbHNlIGlmIGlzVmFsaWQgaXMgZmFsc2UuIE90aGVyd2lzZSBoYXNCaWdSb3Rh
dGlvbiBpcyAKIC8vIHRydWUgaWYgdGhlIHJvdGF0aW9uIGJldHdlZW4gYW55IHR3byBrZXlmcmFt
ZXMgaXMgPj0gMTgwIGRlZ3JlZXMuCiAKLXN0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9ucyogb3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3Qs
IHNpemVfdCBpbmRleCkKK3N0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYg
b3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIHNpemVfdCBp
bmRleCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUqPih2YWx1ZUxpc3QuYXQoaW5kZXgpKS0+dmFsdWUoKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoaW5kZXgp
KS52YWx1ZSgpOwogfQogCiBpbnQgR3JhcGhpY3NMYXllcjo6dmFsaWRhdGVUcmFuc2Zvcm1PcGVy
YXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGJvb2wmIGhhc0JpZ1Jv
dGF0aW9uKQpAQCAtNDY5LDI0ICs0NjksMjQgQEAgaW50IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRl
VHJhbnNmb3JtT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXMKICAg
ICAvLyBFbXB0eSB0cmFuc2Zvcm1zIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBu
b24tZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZS4KICAgICBzaXplX3QgZmlyc3RJbmRleCA9
IDA7CiAgICAgZm9yICggOyBmaXJzdEluZGV4IDwgdmFsdWVMaXN0LnNpemUoKTsgKytmaXJzdElu
ZGV4KSB7Ci0gICAgICAgIGlmIChvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS0+
b3BlcmF0aW9ucygpLnNpemUoKSA+IDApCisgICAgICAgIGlmICghb3BlcmF0aW9uc0F0KHZhbHVl
TGlzdCwgZmlyc3RJbmRleCkub3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAKICAgICBpZiAoZmlyc3RJbmRleCA+PSB2YWx1ZUxpc3Quc2l6ZSgp
KQogICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIAotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbnMqIGZpcnN0VmFsID0gb3BlcmF0aW9uc0F0KHZhbHVlTGlzdCwgZmlyc3RJbmRleCk7Cisg
ICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZmlyc3RWYWwgPSBvcGVyYXRpb25zQXQodmFs
dWVMaXN0LCBmaXJzdEluZGV4KTsKICAgICAKICAgICAvLyBTZWUgaWYgdGhlIGtleWZyYW1lcyBh
cmUgdmFsaWQuCiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0SW5kZXggKyAxOyBpIDwgdmFsdWVM
aXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZh
bCA9IG9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGkpOworICAgICAgICBjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKICAgICAgICAgCi0g
ICAgICAgIC8vIEFuIGVtdHB5IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCi0gICAg
ICAgIGlmICh2YWwtPm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCisgICAgICAgIC8vIEFuIGVtcHR5
IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCisgICAgICAgIGlmICh2YWwub3BlcmF0
aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0g
ICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRjaCgqdmFsKSkKKyAgICAgICAgaWYg
KCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAgICAgICAgICAgIHJldHVybiAtMTsK
ICAgICB9CiAKQEAgLTQ5NCwyMiArNDk0LDIyIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzCiAg
ICAgZG91YmxlIGxhc3RSb3RBbmdsZSA9IDAuMDsKICAgICBkb3VibGUgbWF4Um90QW5nbGUgPSAt
MS4wOwogICAgICAgICAKLSAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGZpcnN0VmFsLT5vcGVy
YXRpb25zKCkuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHR5cGUgPSBmaXJzdFZhbC0+b3BlcmF0aW9ucygpLmF0KGopLT5nZXRPcGVyYXRp
b25UeXBlKCk7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBmaXJzdFZhbC5vcGVyYXRpb25z
KCkuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHR5cGUgPSBmaXJzdFZhbC5vcGVyYXRpb25zKCkuYXQoaiktPmdldE9wZXJhdGlvblR5cGUo
KTsKICAgICAgICAgCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSByb3RhdGlvbiBlbnRyeSwgd2Ug
bmVlZCB0byBzZWUgaWYgYW55IGFuZ2xlIGRpZmZlcmVuY2VzIGFyZSA+PSAxODAgZGVnCiAgICAg
ICAgIGlmICh0eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1ggfHwKICAgICAgICAg
ICAgIHR5cGUgPT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWSB8fAogICAgICAgICAgICAg
dHlwZSA9PSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9aIHx8CiAgICAgICAgICAgICB0eXBl
ID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEKSB7Ci0gICAgICAgICAgICBsYXN0Um90
QW5nbGUgPSBzdGF0aWNfY2FzdDxSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihmaXJzdFZhbC0+
b3BlcmF0aW9ucygpLmF0KGopLmdldCgpKS0+YW5nbGUoKTsKKyAgICAgICAgICAgIGxhc3RSb3RB
bmdsZSA9IHN0YXRpY19jYXN0PFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KGZpcnN0VmFsLm9w
ZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChtYXhSb3RBbmdsZSA8IDApCiAgICAgICAgICAgICAgICAgbWF4Um90QW5nbGUgPSBm
YWJzKGxhc3RSb3RBbmdsZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBmaXJzdEluZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZhbCA9IG9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGkpOwotICAgICAgICAgICAgICAgIGRvdWJsZSByb3RBbmdsZSA9IHZhbC0+b3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLT5vcGVyYXRpb25zKCkuYXQoaikuZ2V0KCkpLT5hbmdsZSgpKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQo
dmFsdWVMaXN0LCBpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgcm90QW5nbGUgPSB2YWwub3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLm9wZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCkpOwogICAgICAg
ICAgICAgICAgIGRvdWJsZSBkaWZmQW5nbGUgPSBmYWJzKHJvdEFuZ2xlIC0gbGFzdFJvdEFuZ2xl
KTsKICAgICAgICAgICAgICAgICBpZiAoZGlmZkFuZ2xlID4gbWF4Um90QW5nbGUpCiAgICAgICAg
ICAgICAgICAgICAgIG1heFJvdEFuZ2xlID0gZGlmZkFuZ2xlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDEzMTFmYjZlYmM3ZDg0
ZTFhODIxMWQxYjc0ODk2YmUwYjQ0ZTU1MTUuLjE2ZGMwN2ZlYmI3YzhkODJlN2Q5MjdkNzYzYTdl
MDE1YmE4NzlmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTcyLDE4ICs3MiwxOSBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKIGNsYXNzIEFuaW1hdGlvblZhbHVlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBQ
YXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCi0gICAgICAgIDog
bV9rZXlUaW1lKGtleVRpbWUpCi0gICAgICAgICwgbV90aW1pbmdGdW5jdGlvbih0aW1pbmdGdW5j
dGlvbikKLSAgICB7Ci0gICAgfQotICAgIAogICAgIHZpcnR1YWwgfkFuaW1hdGlvblZhbHVlKCkg
eyB9CiAKICAgICBmbG9hdCBrZXlUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9rZXlUaW1lOyB9CiAg
ICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90aW1pbmdGdW5jdGlvbi5nZXQoKTsgfQogICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRp
b25WYWx1ZT4gY2xvbmUoKSBjb25zdCA9IDA7CiAKK3Byb3RlY3RlZDoKKyAgICBBbmltYXRpb25W
YWx1ZShmbG9hdCBrZXlUaW1lLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5j
dGlvbiA9IDApCisgICAgICAgIDogbV9rZXlUaW1lKGtleVRpbWUpCisgICAgICAgICwgbV90aW1p
bmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbikKKyAgICB7CisgICAgfQorCiBwcml2YXRlOgogICAg
IGZsb2F0IG1fa2V5VGltZTsKICAgICBSZWZQdHI8VGltaW5nRnVuY3Rpb24+IG1fdGltaW5nRnVu
Y3Rpb247CkBAIC05MywxNiArOTQsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUg
bW92ZWQgdG8gaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIEZsb2F0QW5pbWF0aW9uVmFsdWUg
OiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogcHVibGljOgotICAgIEZsb2F0QW5pbWF0aW9uVmFs
dWUoZmxvYXQga2V5VGltZSwgZmxvYXQgdmFsdWUsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+
IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0
aW1pbmdGdW5jdGlvbikKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHN0YXRpYyBQYXNz
T3duUHRyPEZsb2F0QW5pbWF0aW9uVmFsdWU+IGNyZWF0ZShmbG9hdCBrZXlUaW1lLCBmbG9hdCB2
YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24gPSAwKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093
blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKCp0aGlzKSk7CiAgICAg
fQotICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgqdGhpcykp
OyB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJp
dmF0ZToKKyAgICBGbG9hdEFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRpbWUsIGZsb2F0IHZhbHVl
LCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgOiBB
bmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgLCBtX3ZhbHVl
KHZhbHVlKQorICAgIHsKKyAgICB9CisKICAgICBmbG9hdCBtX3ZhbHVlOwogfTsKIApAQCAtMTEw
LDE3ICsxMjAsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRz
IG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGlj
IEFuaW1hdGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiB2YWx1ZSA9
IDAsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAg
ICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMg
UGFzc093blB0cjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUs
IGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlv
bikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xv
bmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKLSAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAg
ICAgbV92YWx1ZSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSgqdGhpcykpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICBj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7
IH0KIAogcHJpdmF0ZToKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1l
LCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5j
dGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFsdWUoa2V5VGltZSwg
dGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQor
CiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKIApAQCAtMTI5LDE3ICsxNDcs
MjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRzIG93biBoZWFk
ZXIgZmlsZS4KIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZh
bHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBGaWx0ZXJBbmltYXRpb25WYWx1ZShmbG9hdCBr
ZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWx1ZSA9IDAsIFBhc3NSZWZQdHI8VGlt
aW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1
ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMgUGFzc093blB0cjxGaWx0ZXJB
bmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUsIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDAp
CiAgICAgewotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICBtX3ZhbHVlID0gKnZhbHVl
OworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQ
dHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUoKnRo
aXMpKTsKKyAgICB9CisKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKKyAgICBGaWx0ZXJBbmltYXRpb25WYWx1
ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0
cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFs
dWUoa2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAg
ICB7CisgICAgfQorCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKICNlbmRpZgpA
QCAtMTYxLDYgKzE4NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQo
b3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOwogICAgIH0KIAorICAgIH5LZXlmcmFtZVZhbHVl
TGlzdCgpCisgICAgeworICAgIH0KKwogICAgIEtleWZyYW1lVmFsdWVMaXN0JiBvcGVyYXRvcj0o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKICAgICAgICAgS2V5ZnJhbWVW
YWx1ZUxpc3QgY29weShvdGhlcik7CkBAIC0xNzcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIEFu
aW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHk7IH0K
IAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOyB9Ci0g
ICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlcy5hdChpKS5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhdChzaXplX3Qg
aSkgY29uc3QgeyByZXR1cm4gKm1fdmFsdWVzLmF0KGkpOyB9CiAgICAgCiAgICAgLy8gSW5zZXJ0
LCBzb3J0ZWQgYnkga2V5VGltZS4KICAgICB2b2lkIGluc2VydChQYXNzT3duUHRyPGNvbnN0IEFu
aW1hdGlvblZhbHVlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCmluZGV4IGQwMjY1OThiMDI2ZmJk
MDA1NGNlYmM2MzcwZjFhZmVlMzQ0OWNjYjUuLjIwNmQ3MDdiM2FkMTUwMWFlNTFiMzFkNTYyNDgw
ZGJhNjJlMDVmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCkBAIC0zOSwyNyArMzksMjcgQEAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRGdW5jKEZpbHRl
ck9wZXJhdGlvbiogZnJvbU9wLCBGaWwKIH0KIAogCi1zdGF0aWMgRmlsdGVyT3BlcmF0aW9ucyBh
cHBseUZpbHRlckFuaW1hdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmcm9tLCBjb25zdCBG
aWx0ZXJPcGVyYXRpb25zKiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBib3hT
aXplKQorc3RhdGljIEZpbHRlck9wZXJhdGlvbnMgYXBwbHlGaWx0ZXJBbmltYXRpb24oY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZnJvbSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdG8sIGRvdWJs
ZSBwcm9ncmVzcywgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKIHsKICAgICAvLyBGaXJzdCBmcmFt
ZSBvZiBhbiBhbmltYXRpb24uCiAgICAgaWYgKCFwcm9ncmVzcykKLSAgICAgICAgcmV0dXJuICpm
cm9tOworICAgICAgICByZXR1cm4gZnJvbTsKIAogICAgIC8vIExhc3QgZnJhbWUgb2YgYW4gYW5p
bWF0aW9uLgogICAgIGlmIChwcm9ncmVzcyA9PSAxKQotICAgICAgICByZXR1cm4gKnRvOworICAg
ICAgICByZXR1cm4gdG87CiAKLSAgICBpZiAoIWZyb20tPmlzRW1wdHkoKSAmJiAhdG8tPmlzRW1w
dHkoKSAmJiAhZnJvbS0+b3BlcmF0aW9uc01hdGNoKCp0bykpCi0gICAgICAgIHJldHVybiAqdG87
CisgICAgaWYgKCFmcm9tLmlzRW1wdHkoKSAmJiAhdG8uaXNFbXB0eSgpICYmICFmcm9tLm9wZXJh
dGlvbnNNYXRjaCh0bykpCisgICAgICAgIHJldHVybiB0bzsKIAogICAgIEZpbHRlck9wZXJhdGlv
bnMgcmVzdWx0OwogCi0gICAgc2l6ZV90IGZyb21TaXplID0gZnJvbS0+b3BlcmF0aW9ucygpLnNp
emUoKTsKLSAgICBzaXplX3QgdG9TaXplID0gdG8tPm9wZXJhdGlvbnMoKS5zaXplKCk7CisgICAg
c2l6ZV90IGZyb21TaXplID0gZnJvbS5vcGVyYXRpb25zKCkuc2l6ZSgpOworICAgIHNpemVfdCB0
b1NpemUgPSB0by5vcGVyYXRpb25zKCkuc2l6ZSgpOwogICAgIHNpemVfdCBzaXplID0gc3RkOjpt
YXgoZnJvbVNpemUsIHRvU2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKLSAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZnJvbU9wID0gKGkgPCBmcm9t
U2l6ZSkgPyBmcm9tLT5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwotICAgICAgICBSZWZQdHI8
RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8tPm9wZXJhdGlvbnMoKVtp
XS5nZXQoKSA6IDA7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZyb21PcCA9IChp
IDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOworICAgICAgICBS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8ub3BlcmF0aW9u
cygpW2ldLmdldCgpIDogMDsKICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRl
ZE9wID0gdG9PcCA/IGJsZW5kRnVuYyhmcm9tT3AuZ2V0KCksIHRvT3AuZ2V0KCksIHByb2dyZXNz
LCBib3hTaXplKSA6IChmcm9tT3AgPyBibGVuZEZ1bmMoMCwgZnJvbU9wLmdldCgpLCBwcm9ncmVz
cywgYm94U2l6ZSwgdHJ1ZSkgOiAwKTsKICAgICAgICAgaWYgKGJsZW5kZWRPcCkKICAgICAgICAg
ICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7CkBAIC0xNTUsNTggKzE1
NSw1OCBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVuY3Rpb24oY29uc3QgVGlt
aW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbAogICAgIHJldHVybiBwcm9ncmVzczsKIH0K
IAotc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMq
IHRvLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGJvb2wgbGlzdHNN
YXRjaCkKK3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcHBseVRyYW5zZm9ybUFuaW1hdGlv
bihjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b25zJiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBib29sIGxp
c3RzTWF0Y2gpCiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OwogCiAgICAgLy8g
Rmlyc3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmICghcHJvZ3Jlc3MpIHsKLSAgICAg
ICAgZnJvbS0+YXBwbHkoYm94U2l6ZSwgbWF0cml4KTsKKyAgICAgICAgZnJvbS5hcHBseShib3hT
aXplLCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIExh
c3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmIChwcm9ncmVzcyA9PSAxKSB7Ci0gICAg
ICAgIHRvLT5hcHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICB0by5hcHBseShib3hTaXpl
LCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIElmIHdl
IGhhdmUgaW5jb21wYXRpYmxlIG9wZXJhdGlvbiBsaXN0cywgd2UgYmxlbmQgdGhlIHJlc3VsdGlu
ZyBtYXRyaWNlcy4KICAgICBpZiAoIWxpc3RzTWF0Y2gpIHsKICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggZnJvbU1hdHJpeDsKLSAgICAgICAgdG8tPmFwcGx5KGJveFNpemUsIG1hdHJpeCk7
Ci0gICAgICAgIGZyb20tPmFwcGx5KGJveFNpemUsIGZyb21NYXRyaXgpOworICAgICAgICB0by5h
cHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICBmcm9tLmFwcGx5KGJveFNpemUsIGZyb21N
YXRyaXgpOwogICAgICAgICBtYXRyaXguYmxlbmQoZnJvbU1hdHJpeCwgcHJvZ3Jlc3MpOwogICAg
ICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIEFuaW1hdGlvbiB0byAiLXdlYmtp
dC10cmFuc2Zvcm06IG5vbmUiLgotICAgIGlmICghdG8tPnNpemUoKSkgewotICAgICAgICBUcmFu
c2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQoKmZyb20pOworICAgIGlmICghdG8uc2l6ZSgpKSB7Cisg
ICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRlZChmcm9tKTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBibGVuZGVkLm9wZXJhdGlvbnMoKS5zaXplKCk7ICsraSkKICAgICAg
ICAgICAgIGJsZW5kZWQub3BlcmF0aW9ucygpW2ldLT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkt
PmFwcGx5KG1hdHJpeCwgYm94U2l6ZSk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQog
CiAgICAgLy8gQW5pbWF0aW9uIGZyb20gIi13ZWJraXQtdHJhbnNmb3JtOiBub25lIi4KLSAgICBp
ZiAoIWZyb20tPnNpemUoKSkgewotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQo
KnRvKTsKKyAgICBpZiAoIWZyb20uc2l6ZSgpKSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlv
bnMgYmxlbmRlZCh0byk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxlbmRlZC5v
cGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMo
KVtpXS0+YmxlbmQoMCwgMS4gLSBwcm9ncmVzcywgdHJ1ZSktPmFwcGx5KG1hdHJpeCwgYm94U2l6
ZSk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQogCiAgICAgLy8gTm9ybWFsIGFuaW1h
dGlvbiB3aXRoIGEgbWF0Y2hpbmcgb3BlcmF0aW9uIGxpc3QuCi0gICAgVHJhbnNmb3JtT3BlcmF0
aW9ucyBibGVuZGVkKCp0byk7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZGVkKHRvKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsZW5kZWQub3BlcmF0aW9ucygpLnNpemUoKTsg
KytpKQotICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS0+YXQoaSks
IHByb2dyZXNzLCAhZnJvbS0+YXQoaSkpLT5hcHBseShtYXRyaXgsIGJveFNpemUpOworICAgICAg
ICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS5hdChpKSwgcHJvZ3Jlc3MsICFm
cm9tLmF0KGkpKS0+YXBwbHkobWF0cml4LCBib3hTaXplKTsKICAgICByZXR1cm4gbWF0cml4Owog
fQogCi1zdGF0aWMgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0
aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqIGFuaW1WYWx1ZSwgY29uc3QgQW5pbWF0aW9u
KiBhbmltKQorc3RhdGljIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbkZvckFu
aW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltVmFsdWUsIGNvbnN0IEFuaW1h
dGlvbiogYW5pbSkKIHsKLSAgICBpZiAoYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpKQotICAg
ICAgICByZXR1cm4gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOworICAgIGlmIChhbmltVmFs
dWUudGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGFuaW1WYWx1ZS50aW1pbmdGdW5j
dGlvbigpOwogICAgIGlmIChhbmltLT50aW1pbmdGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4g
YW5pbS0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKIApAQCAtMjI3LDE4ICsyMjcsMTggQEAgR3Jh
cGhpY3NMYXllckFuaW1hdGlvbjo6R3JhcGhpY3NMYXllckFuaW1hdGlvbihjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IEtleWZyYW0KIHsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQW5pbWF0aW9u
OjphcHBseUludGVybmFsKENsaWVudCogY2xpZW50LCBjb25zdCBBbmltYXRpb25WYWx1ZSogZnJv
bSwgY29uc3QgQW5pbWF0aW9uVmFsdWUqIHRvLCBmbG9hdCBwcm9ncmVzcykKK3ZvaWQgR3JhcGhp
Y3NMYXllckFuaW1hdGlvbjo6YXBwbHlJbnRlcm5hbChDbGllbnQqIGNsaWVudCwgY29uc3QgQW5p
bWF0aW9uVmFsdWUmIGZyb20sIGNvbnN0IEFuaW1hdGlvblZhbHVlJiB0bywgZmxvYXQgcHJvZ3Jl
c3MpCiB7CiAgICAgc3dpdGNoIChtX2tleWZyYW1lcy5wcm9wZXJ0eSgpKSB7CiAgICAgY2FzZSBB
bmltYXRlZFByb3BlcnR5T3BhY2l0eToKLSAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZE9wYWNp
dHkoYXBwbHlPcGFjaXR5QW5pbWF0aW9uKChzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlv
blZhbHVlKj4oZnJvbSktPnZhbHVlKCkpLCAoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRp
b25WYWx1ZSo+KHRvKS0+dmFsdWUoKSksIHByb2dyZXNzKSk7CisgICAgICAgIGNsaWVudC0+c2V0
QW5pbWF0ZWRPcGFjaXR5KGFwcGx5T3BhY2l0eUFuaW1hdGlvbigoc3RhdGljX2Nhc3Q8Y29uc3Qg
RmxvYXRBbmltYXRpb25WYWx1ZSY+KGZyb20pLnZhbHVlKCkpLCAoc3RhdGljX2Nhc3Q8Y29uc3Qg
RmxvYXRBbmltYXRpb25WYWx1ZSY+KHRvKS52YWx1ZSgpKSwgcHJvZ3Jlc3MpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKLSAgICAg
ICAgY2xpZW50LT5zZXRBbmltYXRlZFRyYW5zZm9ybShhcHBseVRyYW5zZm9ybUFuaW1hdGlvbihz
dGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KGZyb20pLT52YWx1ZSgp
LCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHRvKS0+dmFsdWUo
KSwgcHJvZ3Jlc3MsIG1fYm94U2l6ZSwgbV9saXN0c01hdGNoKSk7CisgICAgICAgIGNsaWVudC0+
c2V0QW5pbWF0ZWRUcmFuc2Zvcm0oYXBwbHlUcmFuc2Zvcm1BbmltYXRpb24oc3RhdGljX2Nhc3Q8
Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPihmcm9tKS52YWx1ZSgpLCBzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHRvKS52YWx1ZSgpLCBwcm9ncmVzcywg
bV9ib3hTaXplLCBtX2xpc3RzTWF0Y2gpKTsKICAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRGaWx0ZXI6Ci0gICAg
ICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRGaWx0ZXJzKGFwcGx5RmlsdGVyQW5pbWF0aW9uKHN0YXRp
Y19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4oZnJvbSktPnZhbHVlKCksIHN0YXRp
Y19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odG8pLT52YWx1ZSgpLCBwcm9ncmVz
cywgbV9ib3hTaXplKSk7CisgICAgICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRGaWx0ZXJzKGFwcGx5
RmlsdGVyQW5pbWF0aW9uKHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJj4o
ZnJvbSkudmFsdWUoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPih0
bykudmFsdWUoKSwgcHJvZ3Jlc3MsIG1fYm94U2l6ZSkpOwogICAgICAgICByZXR1cm47CiAjZW5k
aWYKICAgICBkZWZhdWx0OgpAQCAtMzA0LDEyICszMDQsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVy
QW5pbWF0aW9uOjphcHBseShDbGllbnQqIGNsaWVudCkKICAgICB9CiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fa2V5ZnJhbWVzLnNpemUoKSAtIDE7ICsraSkgewotICAgICAgICBjb25z
dCBBbmltYXRpb25WYWx1ZSogZnJvbSA9IG1fa2V5ZnJhbWVzLmF0KGkpOwotICAgICAgICBjb25z
dCBBbmltYXRpb25WYWx1ZSogdG8gPSBtX2tleWZyYW1lcy5hdChpICsgMSk7Ci0gICAgICAgIGlm
IChmcm9tLT5rZXlUaW1lKCkgPiBub3JtYWxpemVkVmFsdWUgfHwgdG8tPmtleVRpbWUoKSA8IG5v
cm1hbGl6ZWRWYWx1ZSkKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIGZyb20gPSBtX2tl
eWZyYW1lcy5hdChpKTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIHRvID0gbV9rZXlm
cmFtZXMuYXQoaSArIDEpOworICAgICAgICBpZiAoZnJvbS5rZXlUaW1lKCkgPiBub3JtYWxpemVk
VmFsdWUgfHwgdG8ua2V5VGltZSgpIDwgbm9ybWFsaXplZFZhbHVlKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gKG5vcm1hbGl6ZWRWYWx1ZSAtIGZy
b20tPmtleVRpbWUoKSkgLyAodG8tPmtleVRpbWUoKSAtIGZyb20tPmtleVRpbWUoKSk7CisgICAg
ICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IChub3JtYWxpemVkVmFsdWUgLSBmcm9tLmtleVRpbWUoKSkg
LyAodG8ua2V5VGltZSgpIC0gZnJvbS5rZXlUaW1lKCkpOwogICAgICAgICBjb25zdCBUaW1pbmdG
dW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVl
KGZyb20sIG1fYW5pbWF0aW9uLmdldCgpKTsKICAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gYXBw
bHlUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgbm9ybWFsaXplZFZhbHVlLCBtX2FuaW1h
dGlvbi0+ZHVyYXRpb24oKSk7CiAgICAgICAgIGFwcGx5SW50ZXJuYWwoY2xpZW50LCBmcm9tLCB0
bywgbm9ybWFsaXplZFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaAppbmRleCA5ZjBiNWM1MmFiZDk4
MmQ3YmRjNDY4ODI3ZTNkOGY5MGQ2NWJhMWRiLi4yZDJmNjg1NzM1NDQyM2ZmODFlZjE2MTQ5ZjE2
NmI4M2MxNTYxMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckFuaW1hdGlvbi5oCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGxpc3RzTWF0Y2goKSBjb25zdCB7IHJldHVybiBtX2xpc3RzTWF0Y2g7IH0K
IAogcHJpdmF0ZToKLSAgICB2b2lkIGFwcGx5SW50ZXJuYWwoQ2xpZW50KiwgY29uc3QgQW5pbWF0
aW9uVmFsdWUqIGZyb20sIGNvbnN0IEFuaW1hdGlvblZhbHVlKiB0bywgZmxvYXQgcHJvZ3Jlc3Mp
OworICAgIHZvaWQgYXBwbHlJbnRlcm5hbChDbGllbnQqLCBjb25zdCBBbmltYXRpb25WYWx1ZSYg
ZnJvbSwgY29uc3QgQW5pbWF0aW9uVmFsdWUmIHRvLCBmbG9hdCBwcm9ncmVzcyk7CiAgICAgS2V5
ZnJhbWVWYWx1ZUxpc3QgbV9rZXlmcmFtZXM7CiAgICAgSW50U2l6ZSBtX2JveFNpemU7CiAgICAg
UmVmUHRyPEFuaW1hdGlvbj4gbV9hbmltYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCAyMTBiODFh
YmQ3MjIxNDk0YWQ3ZGYyNzUyNGZlMWMzOWU2ZDM3YTZjLi5mZmNhZDg3OTZlZjRmM2Y5YTkzYjdj
Y2E1Y2Q0MmM1ZTE3NmM3NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTI0Miw5ICsyNDIsMTAgQEAg
c3RhdGljIGJvb2wgYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlvbihjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHZhbHVlTGlzdC5hdChpKS0+
dGltaW5nRnVuY3Rpb24oKTsKLSAgICAgICAgaWYgKHRpbWluZ0Z1bmN0aW9uICYmIHRpbWluZ0Z1
bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBpZiAoY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFs
dWVMaXN0LmF0KGkpLnRpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgICAgIGlmICh0aW1pbmdG
dW5jdGlvbi0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDkxLDcg
KzIwOTIsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9u
c0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZQogCiAgICAgYm9vbCBoYXNCaWdSb3Rh
dGlvbjsKICAgICBpbnQgbGlzdEluZGV4ID0gdmFsaWRhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZh
bHVlTGlzdCwgaGFzQmlnUm90YXRpb24pOwotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMq
IG9wZXJhdGlvbnMgPSAobGlzdEluZGV4ID49IDApID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4KSktPnZhbHVlKCkgOiAw
OworICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSAobGlzdEluZGV4
ID49IDApID8gJnN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFs
dWVMaXN0LmF0KGxpc3RJbmRleCkpLnZhbHVlKCkgOiAwOwogCiAgICAgLy8gV2UgbmVlZCB0byBm
YWxsIGJhY2sgdG8gc29mdHdhcmUgYW5pbWF0aW9uIGlmIHdlIGRvbid0IGhhdmUgc2V0VmFsdWVG
dW5jdGlvbjosIGFuZAogICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gYW5pbWF0ZSBlYWNoIGluY29t
aW5nIHRyYW5zZm9ybSBmdW5jdGlvbiBzZXBhcmF0ZWx5LiBUaGlzIGlzIHRoZQpAQCAtMjE4MSwy
MSArMjE4MiwyMSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlRmlsdGVyQW5pbWF0aW9u
c0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpcwogICAgIGlmIChsaXN0SW5kZXgg
PCAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSo+KHZhbHVlTGlzdC5hdChsaXN0SW5kZXgpKS0+dmFsdWUoKTsKKyAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0
aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4KSkudmFsdWUoKTsKICAgICAvLyBNYWtl
IHN1cmUgdGhlIHBsYXRmb3JtIGxheWVyIGRpZG4ndCBmYWxsYmFjayB0byB1c2luZyBzb2Z0d2Fy
ZSBmaWx0ZXIgY29tcG9zaXRpbmcgaW5zdGVhZC4KLSAgICBpZiAoIVBsYXRmb3JtQ0FMYXllcjo6
ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZCgqb3BlcmF0aW9ucykpCisgICAgaWYgKCFQbGF0Zm9ybUNB
TGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQob3BlcmF0aW9ucykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGludCBudW1BbmltYXRpb25zID0gb3BlcmF0aW9ucy0+c2l6ZSgpOwor
ICAgIGludCBudW1BbmltYXRpb25zID0gb3BlcmF0aW9ucy5zaXplKCk7CiAKICAgICAvLyBGSVhN
RTogV2UgY2FuJ3QgY3VycmVudGx5IGhhcmR3YXJlIGFuaW1hdGUgc2hhZG93cy4KICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICBpZiAob3BlcmF0
aW9ucy0+YXQoaSktPmdldE9wZXJhdGlvblR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OkRST1Bf
U0hBRE9XKQorICAgICAgICBpZiAob3BlcmF0aW9ucy5hdChpKS0+Z2V0T3BlcmF0aW9uVHlwZSgp
ID09IEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgZm9yIChpbnQgYW5pbWF0aW9uSW5kZXggPSAwOyBhbmltYXRpb25J
bmRleCA8IG51bUFuaW1hdGlvbnM7ICsrYW5pbWF0aW9uSW5kZXgpIHsKLSAgICAgICAgaWYgKCFh
cHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyh2YWx1ZUxpc3QsIG9wZXJhdGlvbnMtPm9wZXJh
dGlvbnMoKS5hdChhbmltYXRpb25JbmRleCkuZ2V0KCksIGFuaW1hdGlvbiwgYW5pbWF0aW9uTmFt
ZSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQpKQorICAgICAgICBpZiAoIWFwcGVuZFRvVW5j
b21taXR0ZWRBbmltYXRpb25zKHZhbHVlTGlzdCwgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXQo
YW5pbWF0aW9uSW5kZXgpLmdldCgpLCBhbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIGFuaW1hdGlv
bkluZGV4LCB0aW1lT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTIyNTMsMTIgKzIyNTQsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQW5pbWF0
aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qIHByb3BlcnR5QW5pbSwgY29uc3QgQW4KICAgICBwcm9w
ZXJ0eUFuaW0tPnNldEZpbGxNb2RlKGZpbGxNb2RlKTsKIH0KIAotY29uc3QgVGltaW5nRnVuY3Rp
b24qIEdyYXBoaWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25z
dCBBbmltYXRpb25WYWx1ZSogYW5pbVZhbHVlLCBjb25zdCBBbmltYXRpb24qIGFuaW0pCitjb25z
dCBUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXllckNBOjp0aW1pbmdGdW5jdGlvbkZvckFuaW1h
dGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlv
biYgYW5pbSkKIHsKLSAgICBpZiAoYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpKQotICAgICAg
ICByZXR1cm4gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOwotICAgIGlmIChhbmltLT5pc1Rp
bWluZ0Z1bmN0aW9uU2V0KCkpCi0gICAgICAgIHJldHVybiBhbmltLT50aW1pbmdGdW5jdGlvbigp
LmdldCgpOworICAgIGlmIChhbmltVmFsdWUudGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0
dXJuIGFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpOworICAgIGlmIChhbmltLmlzVGltaW5nRnVu
Y3Rpb25TZXQoKSkKKyAgICAgICAgcmV0dXJuIGFuaW0udGltaW5nRnVuY3Rpb24oKS5nZXQoKTsK
ICAgICAKICAgICByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6ZGVmYXVsdFRpbWlu
Z0Z1bmN0aW9uKCk7CiB9CkBAIC0yMjcyLDggKzIyNzMsOCBAQCBib29sIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxp
c3QsCiAgICAgCiAgICAgc3dpdGNoICh2YWx1ZUxpc3QucHJvcGVydHkoKSkgewogICAgIGNhc2Ug
QW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFs
dWUoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChm
cm9tSW5kZXgpKS0+dmFsdWUoKSk7Ci0gICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZShzdGF0
aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KHRvSW5kZXgp
KS0+dmFsdWUoKSk7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKHN0YXRpY19jYXN0
PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSkudmFs
dWUoKSk7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZShzdGF0aWNfY2FzdDxjb25zdCBG
bG9hdEFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKS52YWx1ZSgpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC0yMjgzLDcgKzIyODQsNyBAQCBi
b29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1ZUxpc3QsCiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9y
IDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBz
dGFydAogICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5n
IGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBm
dW5jdGlvbi4KLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1p
bmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKTsK
KyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlv
bkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbik7CiAgICAgaWYg
KHRpbWluZ0Z1bmN0aW9uKQogICAgICAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRp
bWluZ0Z1bmN0aW9uLCAhZm9yd2FyZHMpOwogCkBAIC0yMzAwLDEzICsyMzAxLDEzIEBAIGJvb2wg
R3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFs
dWVMaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gZm9yd2FyZHMg
PyBpIDogKHZhbHVlTGlzdC5zaXplKCkgLSBpIC0gMSk7Ci0gICAgICAgIGNvbnN0IEFuaW1hdGlv
blZhbHVlKiBjdXJWYWx1ZSA9IHZhbHVlTGlzdC5hdChpbmRleCk7Ci0gICAgICAgIGtleVRpbWVz
LmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLT5rZXlUaW1lKCkgOiAoMSAtIGN1clZhbHVlLT5r
ZXlUaW1lKCkpKTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIGN1clZhbHVlID0gdmFs
dWVMaXN0LmF0KGluZGV4KTsKKyAgICAgICAga2V5VGltZXMuYXBwZW5kKGZvcndhcmRzID8gY3Vy
VmFsdWUua2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS5rZXlUaW1lKCkpKTsKIAogICAgICAgICBz
d2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9w
ZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqIGZs
b2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4oY3VyVmFs
dWUpOwotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChmbG9hdFZhbHVlLT52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmIGZsb2F0VmFsdWUgPSBzdGF0aWNf
Y2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJj4oY3VyVmFsdWUpOworICAgICAgICAgICAg
dmFsdWVzLmFwcGVuZChmbG9hdFZhbHVlLnZhbHVlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTIzMTUsNyArMjMxNiw3IEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5z
aXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVu
Y3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0
KGluZGV4IC0gMSksIGFuaW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFw
cGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUg
OiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwogICAgIH0KICAgICAKICAg
ICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRpbWVzKTsKQEAgLTIzMzQsMTMgKzIzMzUs
MTMgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50
cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICB1bnNpZ25lZCBmcm9tSW5kZXggPSAh
Zm9yd2FyZHM7CiAgICAgdW5zaWduZWQgdG9JbmRleCA9IGZvcndhcmRzOwogICAgIAotICAgIGNv
bnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7Ci0g
ICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8
Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOwor
ICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBzdGFydFZhbHVlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4
KSk7CisgICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIGVuZFZhbHVlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQodG9JbmRl
eCkpOwogICAgIAogICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgewogICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBmcm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsKLSAgICAgICAgc3RhcnRW
YWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwgZnJvbVRyYW5zZm9ybSk7Ci0gICAgICAgIGVu
ZFZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCB0b1RyYW5zZm9ybSk7CisgICAgICAgIHN0
YXJ0VmFsdWUudmFsdWUoKS5hcHBseShib3hTaXplLCBmcm9tVHJhbnNmb3JtKTsKKyAgICAgICAg
ZW5kVmFsdWUudmFsdWUoKS5hcHBseShib3hTaXplLCB0b1RyYW5zZm9ybSk7CiAKICAgICAgICAg
Ly8gSWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0
bHkuIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24KICAgICAgICAgaWYgKCFmcm9t
VHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpIHx8ICF0b1RyYW5zZm9ybS5pc0ludmVydGlibGUoKSkK
QEAgLTIzNTEsMzQgKzIzNTIsMzQgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9y
bUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICB9IGVs
c2UgewogICAgICAgICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9wVHlwZSkp
IHsKICAgICAgICAgICAgIGZsb2F0IGZyb21WYWx1ZTsKLSAgICAgICAgICAgIGdldFRyYW5zZm9y
bUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRy
YW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5z
Zm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpLCB0
cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0Fu
aW0tPnNldEZyb21WYWx1ZShmcm9tVmFsdWUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBm
bG9hdCB0b1ZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRW
YWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6
ZSwgdG9WYWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZh
bHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwg
dG9WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodG9WYWx1ZSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoaXNUcmFuc2Zvcm1UeXBlRmxvYXRQb2ludDNEKHRyYW5zZm9ybU9w
VHlwZSkpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQzRCBmcm9tVmFsdWU7Ci0gICAgICAgICAg
ICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0
aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CisgICAgICAg
ICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUudmFsdWUoKS5hdChmdW5j
dGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCBmcm9tVmFsdWUpOwogICAgICAg
ICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUoZnJvbVZhbHVlKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgRmxvYXRQb2ludDNEIHRvVmFsdWU7Ci0gICAgICAgICAgICBnZXRUcmFuc2Zv
cm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJh
bnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9y
bUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNm
b3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKICAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0
VG9WYWx1ZSh0b1ZhbHVlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGZyb21WYWx1ZTsKLSAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9u
VmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9w
VHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0
aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1P
cFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldEZy
b21WYWx1ZShmcm9tVmFsdWUpOwogCiAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
b1ZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRWYWx1ZS0+
dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdG9W
YWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLnZh
bHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdG9WYWx1
ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodG9WYWx1ZSk7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUg
YW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAogICAgIC8v
IGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5nIGFuaW1hdGlvbiBj
YXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBmdW5jdGlvbi4KLSAg
ICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZv
ckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKTsKKyAgICBjb25zdCBU
aW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlv
blZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbik7CiAgICAgYmFzaWNBbmltLT5zZXRU
aW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgIWZvcndhcmRzKTsKIAogICAgIFBsYXRmb3Jt
Q0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb24gPSBnZXRWYWx1ZUZ1
bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcFR5cGUpOwpAQCAtMjQw
MCwxMiArMjQwMSwxMiBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0
aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICB1bnNpZ25l
ZCBpbmRleCA9IGZvcndhcmRzID8gaSA6ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gaSAtIDEpOwotICAg
ICAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogY3VyVmFsdWUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkpOwot
ICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2FyZHMgPyBjdXJWYWx1ZS0+a2V5VGltZSgpIDog
KDEgLSBjdXJWYWx1ZS0+a2V5VGltZSgpKSk7CisgICAgICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlJiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlJj4odmFsdWVMaXN0LmF0KGluZGV4KSk7CisgICAgICAgIGtleVRpbWVzLmFwcGVuZChm
b3J3YXJkcyA/IGN1clZhbHVlLmtleVRpbWUoKSA6ICgxIC0gY3VyVmFsdWUua2V5VGltZSgpKSk7
CiAKICAgICAgICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7CiAgICAgICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07Ci0gICAgICAgICAgICBjdXJWYWx1ZS0+dmFsdWUoKS0+
YXBwbHkoYm94U2l6ZSwgdHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGN1clZhbHVlLnZhbHVlKCku
YXBwbHkoYm94U2l6ZSwgdHJhbnNmb3JtKTsKIAogICAgICAgICAgICAgLy8gSWYgYW55IG1hdHJp
eCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwgYmFj
ayB0byBzb2Z0d2FyZSBhbmltYXRpb24KICAgICAgICAgICAgIGlmICghdHJhbnNmb3JtLmlzSW52
ZXJ0aWJsZSgpKQpAQCAtMjQxMyw3ICsyNDE0LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNl
dFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEK
IAogICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXhWYWx1ZXMuYXBwZW5kKHRyYW5zZm9y
bSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b24qIHRyYW5zZm9ybU9wID0gY3VyVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpOwor
ICAgICAgICAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCA9IGN1clZh
bHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCk7CiAgICAgICAgICAgICBpZiAoaXNUcmFuc2Zv
cm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9wVHlwZSkpIHsKICAgICAgICAgICAgICAgICBmbG9hdCB2
YWx1ZTsKICAgICAgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHRyYW5zZm9y
bU9wLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKQEAgLTI0MzAsNyArMjQzMSw3
IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMo
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaSA8
ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gMSkpCi0gICAgICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBw
ZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6
IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCBhbmltYXRpb24pKTsKKyAgICAgICAgICAgIHRpbWlu
Z0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJk
cyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKICAg
ICB9CiAgICAgCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlUaW1lcyk7CkBAIC0y
NDYxLDExICsyNDYyLDExIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRp
b25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlCiAgICAgdW5zaWduZWQg
ZnJvbUluZGV4ID0gIWZvcndhcmRzOwogICAgIHVuc2lnbmVkIHRvSW5kZXggPSBmb3J3YXJkczsK
IAotICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKiBmcm9tVmFsdWUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKTsK
LSAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSogdG9WYWx1ZSA9IHN0YXRpY19jYXN0PGNv
bnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKTsKKyAgICBj
b25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSYgZnJvbVZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
RmlsdGVyQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7CisgICAgY29u
c3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIHRvVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0
ZXJBbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdCh0b0luZGV4KSk7CiAKLSAgICBjb25zdCBG
aWx0ZXJPcGVyYXRpb24qIGZyb21PcGVyYXRpb24gPSBmcm9tVmFsdWUtPnZhbHVlKCktPmF0KGZ1
bmN0aW9uSW5kZXgpOwotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogdG9PcGVyYXRpb24gPSB0
b1ZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KTsKKyAgICBjb25zdCBGaWx0ZXJPcGVy
YXRpb24qIGZyb21PcGVyYXRpb24gPSBmcm9tVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4
KTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIHRvT3BlcmF0aW9uID0gdG9WYWx1ZS52YWx1
ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpOwogCiAgICAgUmVmUHRyPERlZmF1bHRGaWx0ZXJPcGVyYXRp
b24+IGRlZmF1bHRGcm9tT3BlcmF0aW9uOwogICAgIFJlZlB0cjxEZWZhdWx0RmlsdGVyT3BlcmF0
aW9uPiBkZWZhdWx0VG9PcGVyYXRpb247CkBAIC0yNDg3LDcgKzI0ODgsNyBAQCBib29sIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiB2YWx1ZQogCiAgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZvciAyLWtleWZy
YW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUgc3RhcnQKICAg
ICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uIEV2ZW4gaW4gdGhlIHJldmVyc2luZyBhbmltYXRp
b24gY2FzZSwgdGhlIGZpcnN0IGtleWZyYW1lIHByb3ZpZGVzIHRoZSB0aW1pbmcgZnVuY3Rpb24u
Ci0gICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbkZvckFuaW1h
dGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKKyAgICBi
YXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMjUwMywxMSArMjUwNCwxMSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0RmlsdGVyQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkg
ewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGZvcndhcmRzID8gaSA6ICh2YWx1ZUxpc3Quc2l6
ZSgpIC0gaSAtIDEpOwotICAgICAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSogY3VyVmFs
dWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5h
dChpbmRleCkpOwotICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2FyZHMgPyBjdXJWYWx1ZS0+
a2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS0+a2V5VGltZSgpKSk7CisgICAgICAgIGNvbnN0IEZp
bHRlckFuaW1hdGlvblZhbHVlJiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFu
aW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KGluZGV4KSk7CisgICAgICAgIGtleVRpbWVzLmFw
cGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLmtleVRpbWUoKSA6ICgxIC0gY3VyVmFsdWUua2V5VGlt
ZSgpKSk7CiAKLSAgICAgICAgaWYgKGN1clZhbHVlLT52YWx1ZSgpLT5vcGVyYXRpb25zKCkuc2l6
ZSgpID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihmdW5jdGlvbkluZGV4KSkKLSAgICAgICAgICAgIHZh
bHVlcy5hcHBlbmQoY3VyVmFsdWUtPnZhbHVlKCktPm9wZXJhdGlvbnMoKVtmdW5jdGlvbkluZGV4
XSk7CisgICAgICAgIGlmIChjdXJWYWx1ZS52YWx1ZSgpLm9wZXJhdGlvbnMoKS5zaXplKCkgPiBz
dGF0aWNfY2FzdDxzaXplX3Q+KGZ1bmN0aW9uSW5kZXgpKQorICAgICAgICAgICAgdmFsdWVzLmFw
cGVuZChjdXJWYWx1ZS52YWx1ZSgpLm9wZXJhdGlvbnMoKVtmdW5jdGlvbkluZGV4XSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKCFkZWZhdWx0T3BlcmF0aW9uKQogICAgICAgICAg
ICAgICAgIGRlZmF1bHRPcGVyYXRpb24gPSBEZWZhdWx0RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUo
ZmlsdGVyT3ApOwpAQCAtMjUxNSw3ICsyNTE2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNl
dEZpbHRlckFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAg
ICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksIGFu
aW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5j
dGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQo
aW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwogICAgIH0KICAgICAKICAgICBrZXlmcmFtZUFuaW0t
PnNldEtleVRpbWVzKGtleVRpbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggMDJjMDIyN2U5OGM2YzUyZTg5
NDNhZGFiZGQ4ZTBjOTRhNjE0YTUyMC4uMDljY2NlNDUxZjc2MTUyNzczNjMzY2FlYTA5MTQ2OTRl
NjFkZWQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTIwNSw3ICsyMDUsNyBAQCBwcml2YXRlOgogICAgIFBh
c3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29u
c3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7CiAgICAgdm9pZCBz
ZXR1cEFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgY29uc3QgQW5pbWF0aW9uKiwgYm9v
bCBhZGRpdGl2ZSk7CiAgICAgCi0gICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqLCBjb25zdCBBbmltYXRp
b24qKTsKKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwogICAgIAog
ICAgIGJvb2wgc2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0Jiwg
Y29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOwogICAgIGJvb2wgc2V0QW5p
bWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9u
KiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAxZGVmYjUyYjM0YWE4MzlhOTQzM2ZmYjQwMDNm
MTE1NDFmOTAxZTg5Li42NDE5ZTBjYmJmMWQ5ZmJlMDYwMjAwOGY3ZjY4NTE5NmNhOTgzOGNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApA
QCAtMjEwNywxNCArMjEwNywxNCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmlt
YXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiogYW5pbQogICAgICAgICAK
ICAgICAgICAgYm9vbCBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUgPSBrZXkgPT0gMCB8fCBrZXkgPT0g
MTsKICAgICAgICAgaWYgKChoYXNUcmFuc2Zvcm0gJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8
fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybSkpCi0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBU
cmFuc2Zvcm1BbmltYXRpb25WYWx1ZShrZXksICYoa2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCkp
LCB0ZikpKTsKLSAgICAgICAgCisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlOjpjcmVhdGUoa2V5LCBrZXlmcmFtZVN0eWxlLT50cmFuc2Zv
cm0oKSwgdGYpKTsKKwogICAgICAgICBpZiAoKGhhc09wYWNpdHkgJiYgaXNGaXJzdE9yTGFzdEtl
eWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eU9w
YWNpdHkpKQotICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IEZs
b2F0QW5pbWF0aW9uVmFsdWUoa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSkpOwor
ICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoRmxvYXRBbmltYXRpb25WYWx1ZTo6Y3Jl
YXRlKGtleSwga2V5ZnJhbWVTdHlsZS0+b3BhY2l0eSgpLCB0ZikpOwogCiAjaWYgRU5BQkxFKENT
U19GSUxURVJTKQogICAgICAgICBpZiAoKGhhc0ZpbHRlciAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJh
bWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
RmlsdGVyKSkKLSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IEZp
bHRlckFuaW1hdGlvblZhbHVlKGtleSwgJihrZXlmcmFtZVN0eWxlLT5maWx0ZXIoKSksIHRmKSkp
OworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChGaWx0ZXJBbmltYXRpb25WYWx1ZTo6
Y3JlYXRlKGtleSwga2V5ZnJhbWVTdHlsZS0+ZmlsdGVyKCksIHRmKSk7CiAjZW5kaWYKICAgICB9
CiAKQEAgLTIxNTQsOCArMjE1NCw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRy
YW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAg
IGNvbnN0IEFuaW1hdGlvbiogb3BhY2l0eUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJv
cGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KTsKICAgICAgICAgaWYgKG9wYWNpdHlBbmltICYmICFv
cGFjaXR5QW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZy
YW1lVmFsdWVMaXN0IG9wYWNpdHlWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAg
ICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IEZsb2F0QW5pbWF0aW9u
VmFsdWUoMCwgY29tcG9zaXRpbmdPcGFjaXR5KGZyb21TdHlsZS0+b3BhY2l0eSgpKSkpKTsKLSAg
ICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlv
blZhbHVlKDEsIGNvbXBvc2l0aW5nT3BhY2l0eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSkpOworICAg
ICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoRmxvYXRBbmltYXRpb25WYWx1ZTo6Y3JlYXRl
KDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKTsKKyAgICAgICAg
ICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KEZsb2F0QW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgxLCBj
b21wb3NpdGluZ09wYWNpdHkodG9TdHlsZS0+b3BhY2l0eSgpKSkpOwogICAgICAgICAgICAgLy8g
VGhlIGJveFNpemUgcGFyYW0gaXMgb25seSB1c2VkIGZvciB0cmFuc2Zvcm0gYW5pbWF0aW9ucyAo
d2hpY2ggY2FuIG9ubHkgcnVuIG9uIFJlbmRlckJveGVzKSwgc28gd2UgcGFzcyBhbiBlbXB0eSBz
aXplIGhlcmUuCiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24o
b3BhY2l0eVZlY3RvciwgSW50U2l6ZSgpLCBvcGFjaXR5QW5pbSwgR3JhcGhpY3NMYXllcjo6YW5p
bWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpLCB0aW1lT2Zm
c2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IG9w
YWNpdHkgaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZp
bmFsIG9wYWNpdHkuCkBAIC0yMTY5LDggKzIxNjksOCBAQCBib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3Bl
cgogICAgICAgICBjb25zdCBBbmltYXRpb24qIHRyYW5zZm9ybUFuaW0gPSB0b1N0eWxlLT50cmFu
c2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwogICAgICAgICBp
ZiAodHJhbnNmb3JtQW5pbSAmJiAhdHJhbnNmb3JtQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9u
KCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IHRyYW5zZm9ybVZlY3RvcihBbmlt
YXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rv
ci5pbnNlcnQoYWRvcHRQdHIobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDAsICZmcm9tU3R5
bGUtPnRyYW5zZm9ybSgpKSkpOwotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChh
ZG9wdFB0cihuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMSwgJnRvU3R5bGUtPnRyYW5zZm9y
bSgpKSkpOworICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChUcmFuc2Zvcm1Bbmlt
YXRpb25WYWx1ZTo6Y3JlYXRlKDAsIGZyb21TdHlsZS0+dHJhbnNmb3JtKCkpKTsKKyAgICAgICAg
ICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OmNyZWF0
ZSgxLCB0b1N0eWxlLT50cmFuc2Zvcm0oKSkpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NM
YXllci0+YWRkQW5pbWF0aW9uKHRyYW5zZm9ybVZlY3RvciwgdG9SZW5kZXJCb3gocmVuZGVyZXIo
KSktPnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKS5zaXplKCksIHRyYW5zZm9ybUFuaW0sIEdy
YXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm0pLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVu
c3VyZSB0aGF0IHRoZSBjb3JyZWN0IHRyYW5zZm9ybSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1h
dGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgdHJhbnNmb3JtLgogICAgICAgICAgICAgICAg
IHVwZGF0ZVRyYW5zZm9ybSh0b1N0eWxlKTsKQEAgLTIxODQsOCArMjE4NCw4IEBAIGJvb2wgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1By
b3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogZmlsdGVyQW5pbSA9IHRv
U3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEZpbHRlcik7CiAg
ICAgICAgIGlmIChmaWx0ZXJBbmltICYmICFmaWx0ZXJBbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRp
b24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgZmlsdGVyVmVjdG9yKEFuaW1h
dGVkUHJvcGVydHlXZWJraXRGaWx0ZXIpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2Vy
dChhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUoMCwgJmZyb21TdHlsZS0+ZmlsdGVy
KCkpKSk7Ci0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGaWx0
ZXJBbmltYXRpb25WYWx1ZSgxLCAmdG9TdHlsZS0+ZmlsdGVyKCkpKSk7CisgICAgICAgICAgICBm
aWx0ZXJWZWN0b3IuaW5zZXJ0KEZpbHRlckFuaW1hdGlvblZhbHVlOjpjcmVhdGUoMCwgZnJvbVN0
eWxlLT5maWx0ZXIoKSkpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChGaWx0ZXJB
bmltYXRpb25WYWx1ZTo6Y3JlYXRlKDEsIHRvU3R5bGUtPmZpbHRlcigpKSk7CiAgICAgICAgICAg
ICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24oZmlsdGVyVmVjdG9yLCBJbnRTaXpl
KCksIGZpbHRlckFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9u
KEFuaW1hdGVkUHJvcGVydHlXZWJraXRGaWx0ZXIpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAg
ICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IGZpbHRlciBpcyB2aXNpYmxlIHdo
ZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgZmlsdGVyLgogICAgICAg
ICAgICAgICAgIHVwZGF0ZUZpbHRlcnModG9TdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1l
bnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA0MTEwNzMwODljYzU1
M2ZjNzkxNDgxOWE2MGVkZTE3OTY0Y2FhNzllLi44M2MyNWMzOTA2ZWRmMGQzMzJkNmQxMDczZWFh
MTdlNDFkMzNlZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NBcmd1bWVudENvZGVycy5jcHAKQEAgLTY0NSwxOSArNjQ1LDE5IEBAIHZvaWQgQXJndW1lbnRD
b2RlcjxHcmFwaGljc0xheWVyQW5pbWF0aW9uPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgY29uCiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGtleWZyYW1lcy5wcm9wZXJ0eSgpKTsK
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrZXlmcmFtZXMuc2l6ZSgpKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleWZyYW1lcy5zaXplKCk7ICsraSkgewotICAg
ICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSogdmFsdWUgPSBrZXlmcmFtZXMuYXQoaSk7Ci0gICAg
ICAgIGVuY29kZXIgPDwgdmFsdWUtPmtleVRpbWUoKTsKLSAgICAgICAgZW5jb2RlVGltaW5nRnVu
Y3Rpb24oZW5jb2RlciwgdmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCkpOworICAgICAgICBjb25zdCBB
bmltYXRpb25WYWx1ZSYgdmFsdWUgPSBrZXlmcmFtZXMuYXQoaSk7CisgICAgICAgIGVuY29kZXIg
PDwgdmFsdWUua2V5VGltZSgpOworICAgICAgICBlbmNvZGVUaW1pbmdGdW5jdGlvbihlbmNvZGVy
LCB2YWx1ZS50aW1pbmdGdW5jdGlvbigpKTsKICAgICAgICAgc3dpdGNoIChrZXlmcmFtZXMucHJv
cGVydHkoKSkgewogICAgICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5OgotICAgICAg
ICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4o
dmFsdWUpLT52YWx1ZSgpOworICAgICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxjb25z
dCBGbG9hdEFuaW1hdGlvblZhbHVlJj4odmFsdWUpLnZhbHVlKCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtOgotICAgICAg
ICAgICAgZW5jb2RlciA8PCAqc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFs
dWUqPih2YWx1ZSktPnZhbHVlKCk7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFsdWUpLnZhbHVlKCk7CiAgICAgICAg
ICAgICBicmVhazsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgICAgIGNhc2UgQW5pbWF0
ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlcjoKLSAgICAgICAgICAgIGVuY29kZXIgPDwgKnN0YXRpY19j
YXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odmFsdWUpLT52YWx1ZSgpOworICAgICAg
ICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSY+
KHZhbHVlKS52YWx1ZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgZGVm
YXVsdDoKQEAgLTczMywxNCArNzMzLDE0IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxHcmFwaGljc0xh
eWVyQW5pbWF0aW9uPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgR3JhCiAgICAg
ICAgICAgICBmbG9hdCB2YWx1ZTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFs
dWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGtleWZyYW1l
cy5pbnNlcnQoYWRvcHRQdHIobmV3IEZsb2F0QW5pbWF0aW9uVmFsdWUoa2V5VGltZSwgdmFsdWUs
IHRpbWluZ0Z1bmN0aW9uKSkpOworICAgICAgICAgICAga2V5ZnJhbWVzLmluc2VydChGbG9hdEFu
aW1hdGlvblZhbHVlOjpjcmVhdGUoa2V5VGltZSwgdmFsdWUsIHRpbWluZ0Z1bmN0aW9uKSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBbmltYXRlZFByb3Bl
cnR5V2Via2l0VHJhbnNmb3JtOiB7CiAgICAgICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIHRy
YW5zZm9ybTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHJhbnNmb3JtKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBrZXlmcmFtZXMuaW5zZXJ0
KGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShrZXlUaW1lLCAmdHJhbnNmb3Jt
LCB0aW1pbmdGdW5jdGlvbikpKTsKKyAgICAgICAgICAgIGtleWZyYW1lcy5pbnNlcnQoVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXlUaW1lLCB0cmFuc2Zvcm0sIHRpbWluZ0Z1bmN0
aW9uKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoQ1NTX0ZJ
TFRFUlMpCkBAIC03NDgsNyArNzQ4LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEdyYXBoaWNzTGF5
ZXJBbmltYXRpb24+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBHcmEKICAgICAg
ICAgICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShmaWx0ZXIpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIGtleWZyYW1lcy5pbnNlcnQoYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKGtl
eVRpbWUsICZmaWx0ZXIsIHRpbWluZ0Z1bmN0aW9uKSkpOworICAgICAgICAgICAga2V5ZnJhbWVz
Lmluc2VydChGaWx0ZXJBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleVRpbWUsIGZpbHRlciwgdGlt
aW5nRnVuY3Rpb24pKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200958</attachid>
            <date>2013-05-07 12:36:33 -0700</date>
            <delta_ts>2013-05-07 12:44:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115738-20130507123539.patch</filename>
            <type>text/plain</type>
            <size>49364</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmYzMGI4M2ExOTVhN2U4
NzNjZWRlNzE0NzE2ODkwMjRlMDdjZWZlYS4uNGY1NGQyMWI2NTUzOWMzNWM4NGY4YWVlMDQxNzMy
ZThiOTUzN2FlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTA1LTA3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgS2V5
ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN0YXRpYyBjcmVhdGUoKSBmdW5jdGlvbnMg
dG8gdGhlIEFuaW1hdGlvblZhbHVlIHN1YmNsYXNzZXMsIGFuZCBjaGFuZ2UgYSBidW5jaCBvZiBw
YXJhbWV0ZXJzCisgICAgICAgIGFuZCByZXR1cm4gdmFsdWVzIHRoYXQgY2FuIG5ldmVyIGJlIG51
bGwgZnJvbSBwb2ludGVyIHR5cGVzIHRvIHJlZmVyZW5jZSB0eXBlcyB0byBiZXR0ZXIgaW5kaWNh
dGUgdGhpcy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJPcGVyYXRpb25zQXQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dmFsaWRhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdGlvbnNBdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjp2YWxpZGF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKEFuaW1hdGlvblZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblZhbHVlOjpBbmltYXRpb25WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoRmxvYXRB
bmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpG
bG9hdEFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OnZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckFuaW1hdGlvblZhbHVlOjp2YWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6RmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoRmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVW
YWx1ZUxpc3Q6On5LZXlmcmFtZVZhbHVlTGlzdCk6CisgICAgICAgIChLZXlmcmFtZVZhbHVlTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6YXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVGaWx0ZXJBbmltYXRp
b25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRp
b25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0
ZXJBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAoR3JhcGhpY3NMYXllckNBKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorCiAyMDEzLTA1LTA2ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBhbiAnaXNSZWFkT25seScgbWVt
YmVyIHRvIElETCBwYXJzZSB0cmVlIHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUzNjgxNDU2NGY4
NmRjYjQ3NjViNzFmMzNiZDgwYzA1MTVjMTVlNTcuLjBhNjI4YzQ2NWRkNTY1YTI1NDk0MTNmMzY0
MDI3MTJlN2UyOTI2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wNS0wNyAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVw
IEtleWZyYW1lVmFsdWVMaXN0IGFuZCByZWxhdGVkIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTczOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBmb3IgV2ViQ29yZSBjaGFuZ2Vz
LgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKwog
MjAxMy0wNS0wNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHNvbWUgdW5uZWNlc3Nhcnkgc29mdCBsaW5raW5nIGluIE5ldHdvcmtQcm9jZXNzLiAo
VGFrZSAyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcAppbmRleCBjNzhiNWJlYjI2OGMxOGQyZmJlZTRmZjBlYWNmODA3MTQzYWNiZjA3
Li4wMWI2YTNmZDdhMmIwYTFmZmE0ZDZjZjU0NWFhZjBjNmU1MTdhODJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtNDA5
LDkgKzQwOSw5IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6ZGlzdHJpYnV0ZU9wYWNpdHkoZmxvYXQg
YWNjdW11bGF0ZWRPcGFjaXR5KQogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotc3RhdGlj
IGlubGluZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQorc3RhdGljIGlubGlu
ZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkp
LT52YWx1ZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSY+KHZhbHVlTGlzdC5hdChpbmRleCkpLnZhbHVlKCk7CiB9CiAKIGludCBHcmFwaGljc0xh
eWVyOjp2YWxpZGF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZh
bHVlTGlzdCkKQEAgLTQyNCwyMyArNDI0LDIzIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCkKICAg
ICAvLyBFbXB0eSBmaWx0ZXJzIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBub24t
ZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZQogICAgIHNpemVfdCBmaXJzdEluZGV4ID0gMDsK
ICAgICBmb3IgKCA7IGZpcnN0SW5kZXggPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2ZpcnN0SW5kZXgp
IHsKLSAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGZpcnN0SW5kZXgp
LT5vcGVyYXRpb25zKCkuc2l6ZSgpID4gMCkKKyAgICAgICAgaWYgKCFmaWx0ZXJPcGVyYXRpb25z
QXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS5vcGVyYXRpb25zKCkuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKGZpcnN0SW5kZXggPj0gdmFsdWVMaXN0LnNp
emUoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyog
Zmlyc3RWYWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KTsKKyAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaXJzdFZhbCA9IGZpbHRlck9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGZpcnN0SW5kZXgpOwogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdElu
ZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zKiB2YWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKKyAg
ICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdmFsID0gZmlsdGVyT3BlcmF0aW9uc0F0KHZh
bHVlTGlzdCwgaSk7CiAgICAgICAgIAogICAgICAgICAvLyBBbiBlbXRweSBmaWx0ZXIgbGlzdCBt
YXRjaGVzIGFueXRoaW5nLgotICAgICAgICBpZiAodmFsLT5vcGVyYXRpb25zKCkuaXNFbXB0eSgp
KQorICAgICAgICBpZiAodmFsLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRj
aCgqdmFsKSkKKyAgICAgICAgaWYgKCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAg
ICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgCkBAIC00NTIsOSArNDUyLDkgQEAgaW50
IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWVMaXN0KQogLy8gVGhlIGhhc0JpZ1JvdGF0aW9uIGZsYWcgd2lsbCBhbHdh
eXMgcmV0dXJuIGZhbHNlIGlmIGlzVmFsaWQgaXMgZmFsc2UuIE90aGVyd2lzZSBoYXNCaWdSb3Rh
dGlvbiBpcyAKIC8vIHRydWUgaWYgdGhlIHJvdGF0aW9uIGJldHdlZW4gYW55IHR3byBrZXlmcmFt
ZXMgaXMgPj0gMTgwIGRlZ3JlZXMuCiAKLXN0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9ucyogb3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3Qs
IHNpemVfdCBpbmRleCkKK3N0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYg
b3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIHNpemVfdCBp
bmRleCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUqPih2YWx1ZUxpc3QuYXQoaW5kZXgpKS0+dmFsdWUoKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoaW5kZXgp
KS52YWx1ZSgpOwogfQogCiBpbnQgR3JhcGhpY3NMYXllcjo6dmFsaWRhdGVUcmFuc2Zvcm1PcGVy
YXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGJvb2wmIGhhc0JpZ1Jv
dGF0aW9uKQpAQCAtNDY5LDI0ICs0NjksMjQgQEAgaW50IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRl
VHJhbnNmb3JtT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXMKICAg
ICAvLyBFbXB0eSB0cmFuc2Zvcm1zIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBu
b24tZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZS4KICAgICBzaXplX3QgZmlyc3RJbmRleCA9
IDA7CiAgICAgZm9yICggOyBmaXJzdEluZGV4IDwgdmFsdWVMaXN0LnNpemUoKTsgKytmaXJzdElu
ZGV4KSB7Ci0gICAgICAgIGlmIChvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS0+
b3BlcmF0aW9ucygpLnNpemUoKSA+IDApCisgICAgICAgIGlmICghb3BlcmF0aW9uc0F0KHZhbHVl
TGlzdCwgZmlyc3RJbmRleCkub3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAKICAgICBpZiAoZmlyc3RJbmRleCA+PSB2YWx1ZUxpc3Quc2l6ZSgp
KQogICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIAotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbnMqIGZpcnN0VmFsID0gb3BlcmF0aW9uc0F0KHZhbHVlTGlzdCwgZmlyc3RJbmRleCk7Cisg
ICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZmlyc3RWYWwgPSBvcGVyYXRpb25zQXQodmFs
dWVMaXN0LCBmaXJzdEluZGV4KTsKICAgICAKICAgICAvLyBTZWUgaWYgdGhlIGtleWZyYW1lcyBh
cmUgdmFsaWQuCiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0SW5kZXggKyAxOyBpIDwgdmFsdWVM
aXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZh
bCA9IG9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGkpOworICAgICAgICBjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKICAgICAgICAgCi0g
ICAgICAgIC8vIEFuIGVtdHB5IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCi0gICAg
ICAgIGlmICh2YWwtPm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCisgICAgICAgIC8vIEFuIGVtcHR5
IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCisgICAgICAgIGlmICh2YWwub3BlcmF0
aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0g
ICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRjaCgqdmFsKSkKKyAgICAgICAgaWYg
KCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAgICAgICAgICAgIHJldHVybiAtMTsK
ICAgICB9CiAKQEAgLTQ5NCwyMiArNDk0LDIyIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzCiAg
ICAgZG91YmxlIGxhc3RSb3RBbmdsZSA9IDAuMDsKICAgICBkb3VibGUgbWF4Um90QW5nbGUgPSAt
MS4wOwogICAgICAgICAKLSAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGZpcnN0VmFsLT5vcGVy
YXRpb25zKCkuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHR5cGUgPSBmaXJzdFZhbC0+b3BlcmF0aW9ucygpLmF0KGopLT5nZXRPcGVyYXRp
b25UeXBlKCk7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBmaXJzdFZhbC5vcGVyYXRpb25z
KCkuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHR5cGUgPSBmaXJzdFZhbC5vcGVyYXRpb25zKCkuYXQoaiktPmdldE9wZXJhdGlvblR5cGUo
KTsKICAgICAgICAgCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSByb3RhdGlvbiBlbnRyeSwgd2Ug
bmVlZCB0byBzZWUgaWYgYW55IGFuZ2xlIGRpZmZlcmVuY2VzIGFyZSA+PSAxODAgZGVnCiAgICAg
ICAgIGlmICh0eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1ggfHwKICAgICAgICAg
ICAgIHR5cGUgPT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWSB8fAogICAgICAgICAgICAg
dHlwZSA9PSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9aIHx8CiAgICAgICAgICAgICB0eXBl
ID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEKSB7Ci0gICAgICAgICAgICBsYXN0Um90
QW5nbGUgPSBzdGF0aWNfY2FzdDxSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihmaXJzdFZhbC0+
b3BlcmF0aW9ucygpLmF0KGopLmdldCgpKS0+YW5nbGUoKTsKKyAgICAgICAgICAgIGxhc3RSb3RB
bmdsZSA9IHN0YXRpY19jYXN0PFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KGZpcnN0VmFsLm9w
ZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChtYXhSb3RBbmdsZSA8IDApCiAgICAgICAgICAgICAgICAgbWF4Um90QW5nbGUgPSBm
YWJzKGxhc3RSb3RBbmdsZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBmaXJzdEluZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZhbCA9IG9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGkpOwotICAgICAgICAgICAgICAgIGRvdWJsZSByb3RBbmdsZSA9IHZhbC0+b3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLT5vcGVyYXRpb25zKCkuYXQoaikuZ2V0KCkpLT5hbmdsZSgpKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQo
dmFsdWVMaXN0LCBpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgcm90QW5nbGUgPSB2YWwub3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLm9wZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCkpOwogICAgICAg
ICAgICAgICAgIGRvdWJsZSBkaWZmQW5nbGUgPSBmYWJzKHJvdEFuZ2xlIC0gbGFzdFJvdEFuZ2xl
KTsKICAgICAgICAgICAgICAgICBpZiAoZGlmZkFuZ2xlID4gbWF4Um90QW5nbGUpCiAgICAgICAg
ICAgICAgICAgICAgIG1heFJvdEFuZ2xlID0gZGlmZkFuZ2xlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDEzMTFmYjZlYmM3ZDg0
ZTFhODIxMWQxYjc0ODk2YmUwYjQ0ZTU1MTUuLjE2ZGMwN2ZlYmI3YzhkODJlN2Q5MjdkNzYzYTdl
MDE1YmE4NzlmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTcyLDE4ICs3MiwxOSBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKIGNsYXNzIEFuaW1hdGlvblZhbHVlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBQ
YXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCi0gICAgICAgIDog
bV9rZXlUaW1lKGtleVRpbWUpCi0gICAgICAgICwgbV90aW1pbmdGdW5jdGlvbih0aW1pbmdGdW5j
dGlvbikKLSAgICB7Ci0gICAgfQotICAgIAogICAgIHZpcnR1YWwgfkFuaW1hdGlvblZhbHVlKCkg
eyB9CiAKICAgICBmbG9hdCBrZXlUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9rZXlUaW1lOyB9CiAg
ICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90aW1pbmdGdW5jdGlvbi5nZXQoKTsgfQogICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRp
b25WYWx1ZT4gY2xvbmUoKSBjb25zdCA9IDA7CiAKK3Byb3RlY3RlZDoKKyAgICBBbmltYXRpb25W
YWx1ZShmbG9hdCBrZXlUaW1lLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5j
dGlvbiA9IDApCisgICAgICAgIDogbV9rZXlUaW1lKGtleVRpbWUpCisgICAgICAgICwgbV90aW1p
bmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbikKKyAgICB7CisgICAgfQorCiBwcml2YXRlOgogICAg
IGZsb2F0IG1fa2V5VGltZTsKICAgICBSZWZQdHI8VGltaW5nRnVuY3Rpb24+IG1fdGltaW5nRnVu
Y3Rpb247CkBAIC05MywxNiArOTQsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUg
bW92ZWQgdG8gaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIEZsb2F0QW5pbWF0aW9uVmFsdWUg
OiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogcHVibGljOgotICAgIEZsb2F0QW5pbWF0aW9uVmFs
dWUoZmxvYXQga2V5VGltZSwgZmxvYXQgdmFsdWUsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+
IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0
aW1pbmdGdW5jdGlvbikKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHN0YXRpYyBQYXNz
T3duUHRyPEZsb2F0QW5pbWF0aW9uVmFsdWU+IGNyZWF0ZShmbG9hdCBrZXlUaW1lLCBmbG9hdCB2
YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24gPSAwKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093
blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKCp0aGlzKSk7CiAgICAg
fQotICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgqdGhpcykp
OyB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJp
dmF0ZToKKyAgICBGbG9hdEFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRpbWUsIGZsb2F0IHZhbHVl
LCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgOiBB
bmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgLCBtX3ZhbHVl
KHZhbHVlKQorICAgIHsKKyAgICB9CisKICAgICBmbG9hdCBtX3ZhbHVlOwogfTsKIApAQCAtMTEw
LDE3ICsxMjAsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRz
IG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGlj
IEFuaW1hdGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiB2YWx1ZSA9
IDAsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAg
ICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMg
UGFzc093blB0cjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUs
IGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlv
bikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xv
bmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKLSAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAg
ICAgbV92YWx1ZSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSgqdGhpcykpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICBj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7
IH0KIAogcHJpdmF0ZToKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1l
LCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5j
dGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFsdWUoa2V5VGltZSwg
dGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQor
CiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKIApAQCAtMTI5LDE3ICsxNDcs
MjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRzIG93biBoZWFk
ZXIgZmlsZS4KIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZh
bHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBGaWx0ZXJBbmltYXRpb25WYWx1ZShmbG9hdCBr
ZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWx1ZSA9IDAsIFBhc3NSZWZQdHI8VGlt
aW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1
ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMgUGFzc093blB0cjxGaWx0ZXJB
bmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUsIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDAp
CiAgICAgewotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICBtX3ZhbHVlID0gKnZhbHVl
OworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQ
dHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUoKnRo
aXMpKTsKKyAgICB9CisKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKKyAgICBGaWx0ZXJBbmltYXRpb25WYWx1
ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0
cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFs
dWUoa2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAg
ICB7CisgICAgfQorCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKICNlbmRpZgpA
QCAtMTYxLDYgKzE4NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQo
b3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOwogICAgIH0KIAorICAgIH5LZXlmcmFtZVZhbHVl
TGlzdCgpCisgICAgeworICAgIH0KKwogICAgIEtleWZyYW1lVmFsdWVMaXN0JiBvcGVyYXRvcj0o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKICAgICAgICAgS2V5ZnJhbWVW
YWx1ZUxpc3QgY29weShvdGhlcik7CkBAIC0xNzcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIEFu
aW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHk7IH0K
IAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOyB9Ci0g
ICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlcy5hdChpKS5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhdChzaXplX3Qg
aSkgY29uc3QgeyByZXR1cm4gKm1fdmFsdWVzLmF0KGkpOyB9CiAgICAgCiAgICAgLy8gSW5zZXJ0
LCBzb3J0ZWQgYnkga2V5VGltZS4KICAgICB2b2lkIGluc2VydChQYXNzT3duUHRyPGNvbnN0IEFu
aW1hdGlvblZhbHVlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCmluZGV4IGQwMjY1OThiMDI2ZmJk
MDA1NGNlYmM2MzcwZjFhZmVlMzQ0OWNjYjUuLjIwNmQ3MDdiM2FkMTUwMWFlNTFiMzFkNTYyNDgw
ZGJhNjJlMDVmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCkBAIC0zOSwyNyArMzksMjcgQEAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRGdW5jKEZpbHRl
ck9wZXJhdGlvbiogZnJvbU9wLCBGaWwKIH0KIAogCi1zdGF0aWMgRmlsdGVyT3BlcmF0aW9ucyBh
cHBseUZpbHRlckFuaW1hdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmcm9tLCBjb25zdCBG
aWx0ZXJPcGVyYXRpb25zKiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBib3hT
aXplKQorc3RhdGljIEZpbHRlck9wZXJhdGlvbnMgYXBwbHlGaWx0ZXJBbmltYXRpb24oY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZnJvbSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdG8sIGRvdWJs
ZSBwcm9ncmVzcywgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKIHsKICAgICAvLyBGaXJzdCBmcmFt
ZSBvZiBhbiBhbmltYXRpb24uCiAgICAgaWYgKCFwcm9ncmVzcykKLSAgICAgICAgcmV0dXJuICpm
cm9tOworICAgICAgICByZXR1cm4gZnJvbTsKIAogICAgIC8vIExhc3QgZnJhbWUgb2YgYW4gYW5p
bWF0aW9uLgogICAgIGlmIChwcm9ncmVzcyA9PSAxKQotICAgICAgICByZXR1cm4gKnRvOworICAg
ICAgICByZXR1cm4gdG87CiAKLSAgICBpZiAoIWZyb20tPmlzRW1wdHkoKSAmJiAhdG8tPmlzRW1w
dHkoKSAmJiAhZnJvbS0+b3BlcmF0aW9uc01hdGNoKCp0bykpCi0gICAgICAgIHJldHVybiAqdG87
CisgICAgaWYgKCFmcm9tLmlzRW1wdHkoKSAmJiAhdG8uaXNFbXB0eSgpICYmICFmcm9tLm9wZXJh
dGlvbnNNYXRjaCh0bykpCisgICAgICAgIHJldHVybiB0bzsKIAogICAgIEZpbHRlck9wZXJhdGlv
bnMgcmVzdWx0OwogCi0gICAgc2l6ZV90IGZyb21TaXplID0gZnJvbS0+b3BlcmF0aW9ucygpLnNp
emUoKTsKLSAgICBzaXplX3QgdG9TaXplID0gdG8tPm9wZXJhdGlvbnMoKS5zaXplKCk7CisgICAg
c2l6ZV90IGZyb21TaXplID0gZnJvbS5vcGVyYXRpb25zKCkuc2l6ZSgpOworICAgIHNpemVfdCB0
b1NpemUgPSB0by5vcGVyYXRpb25zKCkuc2l6ZSgpOwogICAgIHNpemVfdCBzaXplID0gc3RkOjpt
YXgoZnJvbVNpemUsIHRvU2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKLSAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZnJvbU9wID0gKGkgPCBmcm9t
U2l6ZSkgPyBmcm9tLT5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwotICAgICAgICBSZWZQdHI8
RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8tPm9wZXJhdGlvbnMoKVtp
XS5nZXQoKSA6IDA7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZyb21PcCA9IChp
IDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOworICAgICAgICBS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8ub3BlcmF0aW9u
cygpW2ldLmdldCgpIDogMDsKICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRl
ZE9wID0gdG9PcCA/IGJsZW5kRnVuYyhmcm9tT3AuZ2V0KCksIHRvT3AuZ2V0KCksIHByb2dyZXNz
LCBib3hTaXplKSA6IChmcm9tT3AgPyBibGVuZEZ1bmMoMCwgZnJvbU9wLmdldCgpLCBwcm9ncmVz
cywgYm94U2l6ZSwgdHJ1ZSkgOiAwKTsKICAgICAgICAgaWYgKGJsZW5kZWRPcCkKICAgICAgICAg
ICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7CkBAIC0xNTUsNTggKzE1
NSw1OCBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVuY3Rpb24oY29uc3QgVGlt
aW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbAogICAgIHJldHVybiBwcm9ncmVzczsKIH0K
IAotc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMq
IHRvLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGJvb2wgbGlzdHNN
YXRjaCkKK3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcHBseVRyYW5zZm9ybUFuaW1hdGlv
bihjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b25zJiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBib29sIGxp
c3RzTWF0Y2gpCiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OwogCiAgICAgLy8g
Rmlyc3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmICghcHJvZ3Jlc3MpIHsKLSAgICAg
ICAgZnJvbS0+YXBwbHkoYm94U2l6ZSwgbWF0cml4KTsKKyAgICAgICAgZnJvbS5hcHBseShib3hT
aXplLCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIExh
c3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmIChwcm9ncmVzcyA9PSAxKSB7Ci0gICAg
ICAgIHRvLT5hcHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICB0by5hcHBseShib3hTaXpl
LCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIElmIHdl
IGhhdmUgaW5jb21wYXRpYmxlIG9wZXJhdGlvbiBsaXN0cywgd2UgYmxlbmQgdGhlIHJlc3VsdGlu
ZyBtYXRyaWNlcy4KICAgICBpZiAoIWxpc3RzTWF0Y2gpIHsKICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggZnJvbU1hdHJpeDsKLSAgICAgICAgdG8tPmFwcGx5KGJveFNpemUsIG1hdHJpeCk7
Ci0gICAgICAgIGZyb20tPmFwcGx5KGJveFNpemUsIGZyb21NYXRyaXgpOworICAgICAgICB0by5h
cHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICBmcm9tLmFwcGx5KGJveFNpemUsIGZyb21N
YXRyaXgpOwogICAgICAgICBtYXRyaXguYmxlbmQoZnJvbU1hdHJpeCwgcHJvZ3Jlc3MpOwogICAg
ICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIEFuaW1hdGlvbiB0byAiLXdlYmtp
dC10cmFuc2Zvcm06IG5vbmUiLgotICAgIGlmICghdG8tPnNpemUoKSkgewotICAgICAgICBUcmFu
c2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQoKmZyb20pOworICAgIGlmICghdG8uc2l6ZSgpKSB7Cisg
ICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRlZChmcm9tKTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBibGVuZGVkLm9wZXJhdGlvbnMoKS5zaXplKCk7ICsraSkKICAgICAg
ICAgICAgIGJsZW5kZWQub3BlcmF0aW9ucygpW2ldLT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkt
PmFwcGx5KG1hdHJpeCwgYm94U2l6ZSk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQog
CiAgICAgLy8gQW5pbWF0aW9uIGZyb20gIi13ZWJraXQtdHJhbnNmb3JtOiBub25lIi4KLSAgICBp
ZiAoIWZyb20tPnNpemUoKSkgewotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQo
KnRvKTsKKyAgICBpZiAoIWZyb20uc2l6ZSgpKSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlv
bnMgYmxlbmRlZCh0byk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxlbmRlZC5v
cGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMo
KVtpXS0+YmxlbmQoMCwgMS4gLSBwcm9ncmVzcywgdHJ1ZSktPmFwcGx5KG1hdHJpeCwgYm94U2l6
ZSk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQogCiAgICAgLy8gTm9ybWFsIGFuaW1h
dGlvbiB3aXRoIGEgbWF0Y2hpbmcgb3BlcmF0aW9uIGxpc3QuCi0gICAgVHJhbnNmb3JtT3BlcmF0
aW9ucyBibGVuZGVkKCp0byk7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZGVkKHRvKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsZW5kZWQub3BlcmF0aW9ucygpLnNpemUoKTsg
KytpKQotICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS0+YXQoaSks
IHByb2dyZXNzLCAhZnJvbS0+YXQoaSkpLT5hcHBseShtYXRyaXgsIGJveFNpemUpOworICAgICAg
ICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS5hdChpKSwgcHJvZ3Jlc3MsICFm
cm9tLmF0KGkpKS0+YXBwbHkobWF0cml4LCBib3hTaXplKTsKICAgICByZXR1cm4gbWF0cml4Owog
fQogCi1zdGF0aWMgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0
aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqIGFuaW1WYWx1ZSwgY29uc3QgQW5pbWF0aW9u
KiBhbmltKQorc3RhdGljIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbkZvckFu
aW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltVmFsdWUsIGNvbnN0IEFuaW1h
dGlvbiogYW5pbSkKIHsKLSAgICBpZiAoYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpKQotICAg
ICAgICByZXR1cm4gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOworICAgIGlmIChhbmltVmFs
dWUudGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGFuaW1WYWx1ZS50aW1pbmdGdW5j
dGlvbigpOwogICAgIGlmIChhbmltLT50aW1pbmdGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4g
YW5pbS0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKIApAQCAtMjI3LDE4ICsyMjcsMTggQEAgR3Jh
cGhpY3NMYXllckFuaW1hdGlvbjo6R3JhcGhpY3NMYXllckFuaW1hdGlvbihjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IEtleWZyYW0KIHsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQW5pbWF0aW9u
OjphcHBseUludGVybmFsKENsaWVudCogY2xpZW50LCBjb25zdCBBbmltYXRpb25WYWx1ZSogZnJv
bSwgY29uc3QgQW5pbWF0aW9uVmFsdWUqIHRvLCBmbG9hdCBwcm9ncmVzcykKK3ZvaWQgR3JhcGhp
Y3NMYXllckFuaW1hdGlvbjo6YXBwbHlJbnRlcm5hbChDbGllbnQqIGNsaWVudCwgY29uc3QgQW5p
bWF0aW9uVmFsdWUmIGZyb20sIGNvbnN0IEFuaW1hdGlvblZhbHVlJiB0bywgZmxvYXQgcHJvZ3Jl
c3MpCiB7CiAgICAgc3dpdGNoIChtX2tleWZyYW1lcy5wcm9wZXJ0eSgpKSB7CiAgICAgY2FzZSBB
bmltYXRlZFByb3BlcnR5T3BhY2l0eToKLSAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZE9wYWNp
dHkoYXBwbHlPcGFjaXR5QW5pbWF0aW9uKChzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlv
blZhbHVlKj4oZnJvbSktPnZhbHVlKCkpLCAoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRp
b25WYWx1ZSo+KHRvKS0+dmFsdWUoKSksIHByb2dyZXNzKSk7CisgICAgICAgIGNsaWVudC0+c2V0
QW5pbWF0ZWRPcGFjaXR5KGFwcGx5T3BhY2l0eUFuaW1hdGlvbigoc3RhdGljX2Nhc3Q8Y29uc3Qg
RmxvYXRBbmltYXRpb25WYWx1ZSY+KGZyb20pLnZhbHVlKCkpLCAoc3RhdGljX2Nhc3Q8Y29uc3Qg
RmxvYXRBbmltYXRpb25WYWx1ZSY+KHRvKS52YWx1ZSgpKSwgcHJvZ3Jlc3MpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKLSAgICAg
ICAgY2xpZW50LT5zZXRBbmltYXRlZFRyYW5zZm9ybShhcHBseVRyYW5zZm9ybUFuaW1hdGlvbihz
dGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KGZyb20pLT52YWx1ZSgp
LCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHRvKS0+dmFsdWUo
KSwgcHJvZ3Jlc3MsIG1fYm94U2l6ZSwgbV9saXN0c01hdGNoKSk7CisgICAgICAgIGNsaWVudC0+
c2V0QW5pbWF0ZWRUcmFuc2Zvcm0oYXBwbHlUcmFuc2Zvcm1BbmltYXRpb24oc3RhdGljX2Nhc3Q8
Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPihmcm9tKS52YWx1ZSgpLCBzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHRvKS52YWx1ZSgpLCBwcm9ncmVzcywg
bV9ib3hTaXplLCBtX2xpc3RzTWF0Y2gpKTsKICAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRGaWx0ZXI6Ci0gICAg
ICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRGaWx0ZXJzKGFwcGx5RmlsdGVyQW5pbWF0aW9uKHN0YXRp
Y19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4oZnJvbSktPnZhbHVlKCksIHN0YXRp
Y19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odG8pLT52YWx1ZSgpLCBwcm9ncmVz
cywgbV9ib3hTaXplKSk7CisgICAgICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRGaWx0ZXJzKGFwcGx5
RmlsdGVyQW5pbWF0aW9uKHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJj4o
ZnJvbSkudmFsdWUoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPih0
bykudmFsdWUoKSwgcHJvZ3Jlc3MsIG1fYm94U2l6ZSkpOwogICAgICAgICByZXR1cm47CiAjZW5k
aWYKICAgICBkZWZhdWx0OgpAQCAtMzA0LDEyICszMDQsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVy
QW5pbWF0aW9uOjphcHBseShDbGllbnQqIGNsaWVudCkKICAgICB9CiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fa2V5ZnJhbWVzLnNpemUoKSAtIDE7ICsraSkgewotICAgICAgICBjb25z
dCBBbmltYXRpb25WYWx1ZSogZnJvbSA9IG1fa2V5ZnJhbWVzLmF0KGkpOwotICAgICAgICBjb25z
dCBBbmltYXRpb25WYWx1ZSogdG8gPSBtX2tleWZyYW1lcy5hdChpICsgMSk7Ci0gICAgICAgIGlm
IChmcm9tLT5rZXlUaW1lKCkgPiBub3JtYWxpemVkVmFsdWUgfHwgdG8tPmtleVRpbWUoKSA8IG5v
cm1hbGl6ZWRWYWx1ZSkKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIGZyb20gPSBtX2tl
eWZyYW1lcy5hdChpKTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIHRvID0gbV9rZXlm
cmFtZXMuYXQoaSArIDEpOworICAgICAgICBpZiAoZnJvbS5rZXlUaW1lKCkgPiBub3JtYWxpemVk
VmFsdWUgfHwgdG8ua2V5VGltZSgpIDwgbm9ybWFsaXplZFZhbHVlKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gKG5vcm1hbGl6ZWRWYWx1ZSAtIGZy
b20tPmtleVRpbWUoKSkgLyAodG8tPmtleVRpbWUoKSAtIGZyb20tPmtleVRpbWUoKSk7CisgICAg
ICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IChub3JtYWxpemVkVmFsdWUgLSBmcm9tLmtleVRpbWUoKSkg
LyAodG8ua2V5VGltZSgpIC0gZnJvbS5rZXlUaW1lKCkpOwogICAgICAgICBjb25zdCBUaW1pbmdG
dW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVl
KGZyb20sIG1fYW5pbWF0aW9uLmdldCgpKTsKICAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gYXBw
bHlUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgbm9ybWFsaXplZFZhbHVlLCBtX2FuaW1h
dGlvbi0+ZHVyYXRpb24oKSk7CiAgICAgICAgIGFwcGx5SW50ZXJuYWwoY2xpZW50LCBmcm9tLCB0
bywgbm9ybWFsaXplZFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaAppbmRleCA5ZjBiNWM1MmFiZDk4
MmQ3YmRjNDY4ODI3ZTNkOGY5MGQ2NWJhMWRiLi4yZDJmNjg1NzM1NDQyM2ZmODFlZjE2MTQ5ZjE2
NmI4M2MxNTYxMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckFuaW1hdGlvbi5oCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGxpc3RzTWF0Y2goKSBjb25zdCB7IHJldHVybiBtX2xpc3RzTWF0Y2g7IH0K
IAogcHJpdmF0ZToKLSAgICB2b2lkIGFwcGx5SW50ZXJuYWwoQ2xpZW50KiwgY29uc3QgQW5pbWF0
aW9uVmFsdWUqIGZyb20sIGNvbnN0IEFuaW1hdGlvblZhbHVlKiB0bywgZmxvYXQgcHJvZ3Jlc3Mp
OworICAgIHZvaWQgYXBwbHlJbnRlcm5hbChDbGllbnQqLCBjb25zdCBBbmltYXRpb25WYWx1ZSYg
ZnJvbSwgY29uc3QgQW5pbWF0aW9uVmFsdWUmIHRvLCBmbG9hdCBwcm9ncmVzcyk7CiAgICAgS2V5
ZnJhbWVWYWx1ZUxpc3QgbV9rZXlmcmFtZXM7CiAgICAgSW50U2l6ZSBtX2JveFNpemU7CiAgICAg
UmVmUHRyPEFuaW1hdGlvbj4gbV9hbmltYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCAyMTBiODFh
YmQ3MjIxNDk0YWQ3ZGYyNzUyNGZlMWMzOWU2ZDM3YTZjLi5mZmNhZDg3OTZlZjRmM2Y5YTkzYjdj
Y2E1Y2Q0MmM1ZTE3NmM3NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTI0Miw5ICsyNDIsMTAgQEAg
c3RhdGljIGJvb2wgYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlvbihjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHZhbHVlTGlzdC5hdChpKS0+
dGltaW5nRnVuY3Rpb24oKTsKLSAgICAgICAgaWYgKHRpbWluZ0Z1bmN0aW9uICYmIHRpbWluZ0Z1
bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBpZiAoY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFs
dWVMaXN0LmF0KGkpLnRpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgICAgIGlmICh0aW1pbmdG
dW5jdGlvbi0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDkxLDcg
KzIwOTIsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9u
c0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZQogCiAgICAgYm9vbCBoYXNCaWdSb3Rh
dGlvbjsKICAgICBpbnQgbGlzdEluZGV4ID0gdmFsaWRhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZh
bHVlTGlzdCwgaGFzQmlnUm90YXRpb24pOwotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMq
IG9wZXJhdGlvbnMgPSAobGlzdEluZGV4ID49IDApID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4KSktPnZhbHVlKCkgOiAw
OworICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSAobGlzdEluZGV4
ID49IDApID8gJnN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFs
dWVMaXN0LmF0KGxpc3RJbmRleCkpLnZhbHVlKCkgOiAwOwogCiAgICAgLy8gV2UgbmVlZCB0byBm
YWxsIGJhY2sgdG8gc29mdHdhcmUgYW5pbWF0aW9uIGlmIHdlIGRvbid0IGhhdmUgc2V0VmFsdWVG
dW5jdGlvbjosIGFuZAogICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gYW5pbWF0ZSBlYWNoIGluY29t
aW5nIHRyYW5zZm9ybSBmdW5jdGlvbiBzZXBhcmF0ZWx5LiBUaGlzIGlzIHRoZQpAQCAtMjE4MSwy
MSArMjE4MiwyMSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlRmlsdGVyQW5pbWF0aW9u
c0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpcwogICAgIGlmIChsaXN0SW5kZXgg
PCAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSo+KHZhbHVlTGlzdC5hdChsaXN0SW5kZXgpKS0+dmFsdWUoKTsKKyAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0
aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4KSkudmFsdWUoKTsKICAgICAvLyBNYWtl
IHN1cmUgdGhlIHBsYXRmb3JtIGxheWVyIGRpZG4ndCBmYWxsYmFjayB0byB1c2luZyBzb2Z0d2Fy
ZSBmaWx0ZXIgY29tcG9zaXRpbmcgaW5zdGVhZC4KLSAgICBpZiAoIVBsYXRmb3JtQ0FMYXllcjo6
ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZCgqb3BlcmF0aW9ucykpCisgICAgaWYgKCFQbGF0Zm9ybUNB
TGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQob3BlcmF0aW9ucykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGludCBudW1BbmltYXRpb25zID0gb3BlcmF0aW9ucy0+c2l6ZSgpOwor
ICAgIGludCBudW1BbmltYXRpb25zID0gb3BlcmF0aW9ucy5zaXplKCk7CiAKICAgICAvLyBGSVhN
RTogV2UgY2FuJ3QgY3VycmVudGx5IGhhcmR3YXJlIGFuaW1hdGUgc2hhZG93cy4KICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICBpZiAob3BlcmF0
aW9ucy0+YXQoaSktPmdldE9wZXJhdGlvblR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OkRST1Bf
U0hBRE9XKQorICAgICAgICBpZiAob3BlcmF0aW9ucy5hdChpKS0+Z2V0T3BlcmF0aW9uVHlwZSgp
ID09IEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgZm9yIChpbnQgYW5pbWF0aW9uSW5kZXggPSAwOyBhbmltYXRpb25J
bmRleCA8IG51bUFuaW1hdGlvbnM7ICsrYW5pbWF0aW9uSW5kZXgpIHsKLSAgICAgICAgaWYgKCFh
cHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyh2YWx1ZUxpc3QsIG9wZXJhdGlvbnMtPm9wZXJh
dGlvbnMoKS5hdChhbmltYXRpb25JbmRleCkuZ2V0KCksIGFuaW1hdGlvbiwgYW5pbWF0aW9uTmFt
ZSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQpKQorICAgICAgICBpZiAoIWFwcGVuZFRvVW5j
b21taXR0ZWRBbmltYXRpb25zKHZhbHVlTGlzdCwgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXQo
YW5pbWF0aW9uSW5kZXgpLmdldCgpLCBhbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIGFuaW1hdGlv
bkluZGV4LCB0aW1lT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTIyNTMsMTIgKzIyNTQsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQW5pbWF0
aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qIHByb3BlcnR5QW5pbSwgY29uc3QgQW4KICAgICBwcm9w
ZXJ0eUFuaW0tPnNldEZpbGxNb2RlKGZpbGxNb2RlKTsKIH0KIAotY29uc3QgVGltaW5nRnVuY3Rp
b24qIEdyYXBoaWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25z
dCBBbmltYXRpb25WYWx1ZSogYW5pbVZhbHVlLCBjb25zdCBBbmltYXRpb24qIGFuaW0pCitjb25z
dCBUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXllckNBOjp0aW1pbmdGdW5jdGlvbkZvckFuaW1h
dGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlv
biYgYW5pbSkKIHsKLSAgICBpZiAoYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpKQotICAgICAg
ICByZXR1cm4gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOwotICAgIGlmIChhbmltLT5pc1Rp
bWluZ0Z1bmN0aW9uU2V0KCkpCi0gICAgICAgIHJldHVybiBhbmltLT50aW1pbmdGdW5jdGlvbigp
LmdldCgpOworICAgIGlmIChhbmltVmFsdWUudGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0
dXJuIGFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpOworICAgIGlmIChhbmltLmlzVGltaW5nRnVu
Y3Rpb25TZXQoKSkKKyAgICAgICAgcmV0dXJuIGFuaW0udGltaW5nRnVuY3Rpb24oKS5nZXQoKTsK
ICAgICAKICAgICByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6ZGVmYXVsdFRpbWlu
Z0Z1bmN0aW9uKCk7CiB9CkBAIC0yMjcyLDggKzIyNzMsOCBAQCBib29sIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxp
c3QsCiAgICAgCiAgICAgc3dpdGNoICh2YWx1ZUxpc3QucHJvcGVydHkoKSkgewogICAgIGNhc2Ug
QW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFs
dWUoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChm
cm9tSW5kZXgpKS0+dmFsdWUoKSk7Ci0gICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZShzdGF0
aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KHRvSW5kZXgp
KS0+dmFsdWUoKSk7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKHN0YXRpY19jYXN0
PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSkudmFs
dWUoKSk7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZShzdGF0aWNfY2FzdDxjb25zdCBG
bG9hdEFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKS52YWx1ZSgpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC0yMjgzLDcgKzIyODQsNyBAQCBi
b29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1ZUxpc3QsCiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9y
IDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBz
dGFydAogICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5n
IGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBm
dW5jdGlvbi4KLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1p
bmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKTsK
KyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlv
bkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbik7CiAgICAgaWYg
KHRpbWluZ0Z1bmN0aW9uKQogICAgICAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRp
bWluZ0Z1bmN0aW9uLCAhZm9yd2FyZHMpOwogCkBAIC0yMzAwLDEzICsyMzAxLDEzIEBAIGJvb2wg
R3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFs
dWVMaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gZm9yd2FyZHMg
PyBpIDogKHZhbHVlTGlzdC5zaXplKCkgLSBpIC0gMSk7Ci0gICAgICAgIGNvbnN0IEFuaW1hdGlv
blZhbHVlKiBjdXJWYWx1ZSA9IHZhbHVlTGlzdC5hdChpbmRleCk7Ci0gICAgICAgIGtleVRpbWVz
LmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLT5rZXlUaW1lKCkgOiAoMSAtIGN1clZhbHVlLT5r
ZXlUaW1lKCkpKTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIGN1clZhbHVlID0gdmFs
dWVMaXN0LmF0KGluZGV4KTsKKyAgICAgICAga2V5VGltZXMuYXBwZW5kKGZvcndhcmRzID8gY3Vy
VmFsdWUua2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS5rZXlUaW1lKCkpKTsKIAogICAgICAgICBz
d2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9w
ZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqIGZs
b2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4oY3VyVmFs
dWUpOwotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChmbG9hdFZhbHVlLT52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmIGZsb2F0VmFsdWUgPSBzdGF0aWNf
Y2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJj4oY3VyVmFsdWUpOworICAgICAgICAgICAg
dmFsdWVzLmFwcGVuZChmbG9hdFZhbHVlLnZhbHVlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTIzMTUsNyArMjMxNiw3IEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5z
aXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVu
Y3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0
KGluZGV4IC0gMSksIGFuaW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFw
cGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUg
OiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwogICAgIH0KICAgICAKICAg
ICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRpbWVzKTsKQEAgLTIzMzQsMTMgKzIzMzUs
MTMgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50
cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICB1bnNpZ25lZCBmcm9tSW5kZXggPSAh
Zm9yd2FyZHM7CiAgICAgdW5zaWduZWQgdG9JbmRleCA9IGZvcndhcmRzOwogICAgIAotICAgIGNv
bnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7Ci0g
ICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8
Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOwor
ICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBzdGFydFZhbHVlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4
KSk7CisgICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIGVuZFZhbHVlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQodG9JbmRl
eCkpOwogICAgIAogICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgewogICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBmcm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsKLSAgICAgICAgc3RhcnRW
YWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwgZnJvbVRyYW5zZm9ybSk7Ci0gICAgICAgIGVu
ZFZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCB0b1RyYW5zZm9ybSk7CisgICAgICAgIHN0
YXJ0VmFsdWUudmFsdWUoKS5hcHBseShib3hTaXplLCBmcm9tVHJhbnNmb3JtKTsKKyAgICAgICAg
ZW5kVmFsdWUudmFsdWUoKS5hcHBseShib3hTaXplLCB0b1RyYW5zZm9ybSk7CiAKICAgICAgICAg
Ly8gSWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0
bHkuIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24KICAgICAgICAgaWYgKCFmcm9t
VHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpIHx8ICF0b1RyYW5zZm9ybS5pc0ludmVydGlibGUoKSkK
QEAgLTIzNTEsMzQgKzIzNTIsMzQgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9y
bUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICB9IGVs
c2UgewogICAgICAgICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9wVHlwZSkp
IHsKICAgICAgICAgICAgIGZsb2F0IGZyb21WYWx1ZTsKLSAgICAgICAgICAgIGdldFRyYW5zZm9y
bUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRy
YW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5z
Zm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpLCB0
cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0Fu
aW0tPnNldEZyb21WYWx1ZShmcm9tVmFsdWUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBm
bG9hdCB0b1ZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRW
YWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6
ZSwgdG9WYWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZh
bHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwg
dG9WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodG9WYWx1ZSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoaXNUcmFuc2Zvcm1UeXBlRmxvYXRQb2ludDNEKHRyYW5zZm9ybU9w
VHlwZSkpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQzRCBmcm9tVmFsdWU7Ci0gICAgICAgICAg
ICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0
aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CisgICAgICAg
ICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUudmFsdWUoKS5hdChmdW5j
dGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCBmcm9tVmFsdWUpOwogICAgICAg
ICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUoZnJvbVZhbHVlKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgRmxvYXRQb2ludDNEIHRvVmFsdWU7Ci0gICAgICAgICAgICBnZXRUcmFuc2Zv
cm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJh
bnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9y
bUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNm
b3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKICAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0
VG9WYWx1ZSh0b1ZhbHVlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGZyb21WYWx1ZTsKLSAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9u
VmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9w
VHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0
aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1P
cFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldEZy
b21WYWx1ZShmcm9tVmFsdWUpOwogCiAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
b1ZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRWYWx1ZS0+
dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdG9W
YWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLnZh
bHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdG9WYWx1
ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodG9WYWx1ZSk7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUg
YW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAogICAgIC8v
IGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5nIGFuaW1hdGlvbiBj
YXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBmdW5jdGlvbi4KLSAg
ICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZv
ckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKTsKKyAgICBjb25zdCBU
aW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlv
blZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbik7CiAgICAgYmFzaWNBbmltLT5zZXRU
aW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgIWZvcndhcmRzKTsKIAogICAgIFBsYXRmb3Jt
Q0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb24gPSBnZXRWYWx1ZUZ1
bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcFR5cGUpOwpAQCAtMjQw
MCwxMiArMjQwMSwxMiBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0
aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICB1bnNpZ25l
ZCBpbmRleCA9IGZvcndhcmRzID8gaSA6ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gaSAtIDEpOwotICAg
ICAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogY3VyVmFsdWUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkpOwot
ICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2FyZHMgPyBjdXJWYWx1ZS0+a2V5VGltZSgpIDog
KDEgLSBjdXJWYWx1ZS0+a2V5VGltZSgpKSk7CisgICAgICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlJiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlJj4odmFsdWVMaXN0LmF0KGluZGV4KSk7CisgICAgICAgIGtleVRpbWVzLmFwcGVuZChm
b3J3YXJkcyA/IGN1clZhbHVlLmtleVRpbWUoKSA6ICgxIC0gY3VyVmFsdWUua2V5VGltZSgpKSk7
CiAKICAgICAgICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7CiAgICAgICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07Ci0gICAgICAgICAgICBjdXJWYWx1ZS0+dmFsdWUoKS0+
YXBwbHkoYm94U2l6ZSwgdHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGN1clZhbHVlLnZhbHVlKCku
YXBwbHkoYm94U2l6ZSwgdHJhbnNmb3JtKTsKIAogICAgICAgICAgICAgLy8gSWYgYW55IG1hdHJp
eCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwgYmFj
ayB0byBzb2Z0d2FyZSBhbmltYXRpb24KICAgICAgICAgICAgIGlmICghdHJhbnNmb3JtLmlzSW52
ZXJ0aWJsZSgpKQpAQCAtMjQxMyw3ICsyNDE0LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNl
dFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEK
IAogICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXhWYWx1ZXMuYXBwZW5kKHRyYW5zZm9y
bSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b24qIHRyYW5zZm9ybU9wID0gY3VyVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpOwor
ICAgICAgICAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCA9IGN1clZh
bHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCk7CiAgICAgICAgICAgICBpZiAoaXNUcmFuc2Zv
cm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9wVHlwZSkpIHsKICAgICAgICAgICAgICAgICBmbG9hdCB2
YWx1ZTsKICAgICAgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHRyYW5zZm9y
bU9wLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKQEAgLTI0MzAsNyArMjQzMSw3
IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMo
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaSA8
ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gMSkpCi0gICAgICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBw
ZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6
IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCBhbmltYXRpb24pKTsKKyAgICAgICAgICAgIHRpbWlu
Z0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJk
cyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKICAg
ICB9CiAgICAgCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlUaW1lcyk7CkBAIC0y
NDYxLDExICsyNDYyLDExIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRp
b25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlCiAgICAgdW5zaWduZWQg
ZnJvbUluZGV4ID0gIWZvcndhcmRzOwogICAgIHVuc2lnbmVkIHRvSW5kZXggPSBmb3J3YXJkczsK
IAotICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKiBmcm9tVmFsdWUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKTsK
LSAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSogdG9WYWx1ZSA9IHN0YXRpY19jYXN0PGNv
bnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKTsKKyAgICBj
b25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSYgZnJvbVZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
RmlsdGVyQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7CisgICAgY29u
c3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIHRvVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0
ZXJBbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdCh0b0luZGV4KSk7CiAKLSAgICBjb25zdCBG
aWx0ZXJPcGVyYXRpb24qIGZyb21PcGVyYXRpb24gPSBmcm9tVmFsdWUtPnZhbHVlKCktPmF0KGZ1
bmN0aW9uSW5kZXgpOwotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogdG9PcGVyYXRpb24gPSB0
b1ZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KTsKKyAgICBjb25zdCBGaWx0ZXJPcGVy
YXRpb24qIGZyb21PcGVyYXRpb24gPSBmcm9tVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4
KTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIHRvT3BlcmF0aW9uID0gdG9WYWx1ZS52YWx1
ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpOwogCiAgICAgUmVmUHRyPERlZmF1bHRGaWx0ZXJPcGVyYXRp
b24+IGRlZmF1bHRGcm9tT3BlcmF0aW9uOwogICAgIFJlZlB0cjxEZWZhdWx0RmlsdGVyT3BlcmF0
aW9uPiBkZWZhdWx0VG9PcGVyYXRpb247CkBAIC0yNDg3LDcgKzI0ODgsNyBAQCBib29sIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiB2YWx1ZQogCiAgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZvciAyLWtleWZy
YW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUgc3RhcnQKICAg
ICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uIEV2ZW4gaW4gdGhlIHJldmVyc2luZyBhbmltYXRp
b24gY2FzZSwgdGhlIGZpcnN0IGtleWZyYW1lIHByb3ZpZGVzIHRoZSB0aW1pbmcgZnVuY3Rpb24u
Ci0gICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbkZvckFuaW1h
dGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKKyAgICBi
YXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMjUwMywxMSArMjUwNCwxMSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0RmlsdGVyQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkg
ewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGZvcndhcmRzID8gaSA6ICh2YWx1ZUxpc3Quc2l6
ZSgpIC0gaSAtIDEpOwotICAgICAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSogY3VyVmFs
dWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5h
dChpbmRleCkpOwotICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2FyZHMgPyBjdXJWYWx1ZS0+
a2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS0+a2V5VGltZSgpKSk7CisgICAgICAgIGNvbnN0IEZp
bHRlckFuaW1hdGlvblZhbHVlJiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFu
aW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KGluZGV4KSk7CisgICAgICAgIGtleVRpbWVzLmFw
cGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLmtleVRpbWUoKSA6ICgxIC0gY3VyVmFsdWUua2V5VGlt
ZSgpKSk7CiAKLSAgICAgICAgaWYgKGN1clZhbHVlLT52YWx1ZSgpLT5vcGVyYXRpb25zKCkuc2l6
ZSgpID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihmdW5jdGlvbkluZGV4KSkKLSAgICAgICAgICAgIHZh
bHVlcy5hcHBlbmQoY3VyVmFsdWUtPnZhbHVlKCktPm9wZXJhdGlvbnMoKVtmdW5jdGlvbkluZGV4
XSk7CisgICAgICAgIGlmIChjdXJWYWx1ZS52YWx1ZSgpLm9wZXJhdGlvbnMoKS5zaXplKCkgPiBz
dGF0aWNfY2FzdDxzaXplX3Q+KGZ1bmN0aW9uSW5kZXgpKQorICAgICAgICAgICAgdmFsdWVzLmFw
cGVuZChjdXJWYWx1ZS52YWx1ZSgpLm9wZXJhdGlvbnMoKVtmdW5jdGlvbkluZGV4XSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKCFkZWZhdWx0T3BlcmF0aW9uKQogICAgICAgICAg
ICAgICAgIGRlZmF1bHRPcGVyYXRpb24gPSBEZWZhdWx0RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUo
ZmlsdGVyT3ApOwpAQCAtMjUxNSw3ICsyNTE2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNl
dEZpbHRlckFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAg
ICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksIGFu
aW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5j
dGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQo
aW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwogICAgIH0KICAgICAKICAgICBrZXlmcmFtZUFuaW0t
PnNldEtleVRpbWVzKGtleVRpbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggMDJjMDIyN2U5OGM2YzUyZTg5
NDNhZGFiZGQ4ZTBjOTRhNjE0YTUyMC4uMDljY2NlNDUxZjc2MTUyNzczNjMzY2FlYTA5MTQ2OTRl
NjFkZWQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTIwNSw3ICsyMDUsNyBAQCBwcml2YXRlOgogICAgIFBh
c3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29u
c3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7CiAgICAgdm9pZCBz
ZXR1cEFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgY29uc3QgQW5pbWF0aW9uKiwgYm9v
bCBhZGRpdGl2ZSk7CiAgICAgCi0gICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqLCBjb25zdCBBbmltYXRp
b24qKTsKKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwogICAgIAog
ICAgIGJvb2wgc2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0Jiwg
Y29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOwogICAgIGJvb2wgc2V0QW5p
bWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9u
KiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCBiN2E1NDdkMjAwOGE0ZjRhOWJh
MWQ1MDc0NzlkOTA5NzFiNjFlMDJjLi5mZjMwYTVlOGE0NGIwYzZjZDU3MTdmYTNlYzRlNmViZDMz
YzQwZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcApAQCAtNzEyLDggKzcxMiw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpzZXRMYXllckFuaW1hdGlvbnNJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIq
IGxhCiAgICAgICAgIGlmIChrZXlmcmFtZXMucHJvcGVydHkoKSAhPSBBbmltYXRlZFByb3BlcnR5
V2Via2l0RmlsdGVyKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwga2V5ZnJhbWVzLnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICBjb25zdCBG
aWx0ZXJBbmltYXRpb25WYWx1ZSogZmlsdGVyVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0
ZXJBbmltYXRpb25WYWx1ZSo+KGtleWZyYW1lcy5hdChpKSk7Ci0gICAgICAgICAgICBpbmplY3RD
YWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcygqZmlsdGVyVmFsdWUtPnZhbHVlKCkpOworICAgICAg
ICAgICAgY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIGZpbHRlclZhbHVlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPihrZXlmcmFtZXMuYXQoaSkpOworICAgICAg
ICAgICAgaW5qZWN0Q2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoZmlsdGVyVmFsdWUudmFsdWUo
KSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMWRlZmI1MmIzNGFhODM5YTk0MzNmZmI0
MDAzZjExNTQxZjkwMWU4OS4uNjQxOWUwY2JiZjFkOWZiZTA2MDIwMDhmN2Y2ODUxOTZjYTk4Mzhj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKQEAgLTIxMDcsMTQgKzIxMDcsMTQgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0
QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmltYXRpb24qIGFuaW0KICAgICAg
ICAgCiAgICAgICAgIGJvb2wgaXNGaXJzdE9yTGFzdEtleWZyYW1lID0ga2V5ID09IDAgfHwga2V5
ID09IDE7CiAgICAgICAgIGlmICgoaGFzVHJhbnNmb3JtICYmIGlzRmlyc3RPckxhc3RLZXlmcmFt
ZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm0pKQotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChhZG9wdFB0cihu
ZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoa2V5LCAmKGtleWZyYW1lU3R5bGUtPnRyYW5zZm9y
bSgpKSwgdGYpKSk7Ci0gICAgICAgIAorICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2Vy
dChUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleSwga2V5ZnJhbWVTdHlsZS0+dHJh
bnNmb3JtKCksIHRmKSk7CisKICAgICAgICAgaWYgKChoYXNPcGFjaXR5ICYmIGlzRmlyc3RPckxh
c3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVy
dHlPcGFjaXR5KSkKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5l
dyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleSwga2V5ZnJhbWVTdHlsZS0+b3BhY2l0eSgpLCB0Zikp
KTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KEZsb2F0QW5pbWF0aW9uVmFsdWU6
OmNyZWF0ZShrZXksIGtleWZyYW1lU3R5bGUtPm9wYWNpdHkoKSwgdGYpKTsKIAogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKICAgICAgICAgaWYgKChoYXNGaWx0ZXIgJiYgaXNGaXJzdE9yTGFzdEtl
eWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdEZpbHRlcikpCi0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5l
dyBGaWx0ZXJBbmltYXRpb25WYWx1ZShrZXksICYoa2V5ZnJhbWVTdHlsZS0+ZmlsdGVyKCkpLCB0
ZikpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoRmlsdGVyQW5pbWF0aW9uVmFs
dWU6OmNyZWF0ZShrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOwogI2VuZGlmCiAg
ICAgfQogCkBAIC0yMTU0LDggKzIxNTQsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3Rh
cnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAg
ICAgICBjb25zdCBBbmltYXRpb24qIG9wYWNpdHlBbmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZv
clByb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSk7CiAgICAgICAgIGlmIChvcGFjaXR5QW5pbSAm
JiAhb3BhY2l0eUFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBL
ZXlmcmFtZVZhbHVlTGlzdCBvcGFjaXR5VmVjdG9yKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KTsK
LSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1h
dGlvblZhbHVlKDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKSk7
Ci0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcgRmxvYXRBbmlt
YXRpb25WYWx1ZSgxLCBjb21wb3NpdGluZ09wYWNpdHkodG9TdHlsZS0+b3BhY2l0eSgpKSkpKTsK
KyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KEZsb2F0QW5pbWF0aW9uVmFsdWU6OmNy
ZWF0ZSgwLCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7CisgICAg
ICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUo
MSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkpKTsKICAgICAgICAgICAg
IC8vIFRoZSBib3hTaXplIHBhcmFtIGlzIG9ubHkgdXNlZCBmb3IgdHJhbnNmb3JtIGFuaW1hdGlv
bnMgKHdoaWNoIGNhbiBvbmx5IHJ1biBvbiBSZW5kZXJCb3hlcyksIHNvIHdlIHBhc3MgYW4gZW1w
dHkgc2l6ZSBoZXJlLgogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0
aW9uKG9wYWNpdHlWZWN0b3IsIEludFNpemUoKSwgb3BhY2l0eUFuaW0sIEdyYXBoaWNzTGF5ZXI6
OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KSwgdGlt
ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVj
dCBvcGFjaXR5IGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRo
ZSBmaW5hbCBvcGFjaXR5LgpAQCAtMjE2OSw4ICsyMTY5LDggQEAgYm9vbCBSZW5kZXJMYXllckJh
Y2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBw
cm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiB0cmFuc2Zvcm1BbmltID0gdG9TdHlsZS0+
dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKICAgICAg
ICAgaWYgKHRyYW5zZm9ybUFuaW0gJiYgIXRyYW5zZm9ybUFuaW0tPmlzRW1wdHlPclplcm9EdXJh
dGlvbigpKSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCB0cmFuc2Zvcm1WZWN0b3Io
QW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1W
ZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgwLCAmZnJv
bVN0eWxlLT50cmFuc2Zvcm0oKSkpKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNl
cnQoYWRvcHRQdHIobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDEsICZ0b1N0eWxlLT50cmFu
c2Zvcm0oKSkpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoVHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgwLCBmcm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7CisgICAg
ICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpj
cmVhdGUoMSwgdG9TdHlsZS0+dHJhbnNmb3JtKCkpKTsKICAgICAgICAgICAgIGlmIChtX2dyYXBo
aWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFuc2Zvcm1WZWN0b3IsIHRvUmVuZGVyQm94KHJlbmRl
cmVyKCkpLT5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkuc2l6ZSgpLCB0cmFuc2Zvcm1Bbmlt
LCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3Bl
cnR5V2Via2l0VHJhbnNmb3JtKSwgdGltZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBU
byBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCB0cmFuc2Zvcm0gaXMgdmlzaWJsZSB3aGVuIHRoZSBh
bmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIHRyYW5zZm9ybS4KICAgICAgICAgICAg
ICAgICB1cGRhdGVUcmFuc2Zvcm0odG9TdHlsZSk7CkBAIC0yMTg0LDggKzIxODQsOCBAQCBib29s
IFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBD
U1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIGZpbHRlckFuaW0g
PSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRGaWx0ZXIp
OwogICAgICAgICBpZiAoZmlsdGVyQW5pbSAmJiAhZmlsdGVyQW5pbS0+aXNFbXB0eU9yWmVyb0R1
cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IGZpbHRlclZlY3RvcihB
bmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKTsKLSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5p
bnNlcnQoYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKDAsICZmcm9tU3R5bGUtPmZp
bHRlcigpKSkpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcg
RmlsdGVyQW5pbWF0aW9uVmFsdWUoMSwgJnRvU3R5bGUtPmZpbHRlcigpKSkpOworICAgICAgICAg
ICAgZmlsdGVyVmVjdG9yLmluc2VydChGaWx0ZXJBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKDAsIGZy
b21TdHlsZS0+ZmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoRmls
dGVyQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgxLCB0b1N0eWxlLT5maWx0ZXIoKSkpOwogICAgICAg
ICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKGZpbHRlclZlY3RvciwgSW50
U2l6ZSgpLCBmaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNp
dGlvbihBbmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKSwgdGltZU9mZnNldCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBmaWx0ZXIgaXMgdmlzaWJs
ZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIGZpbHRlci4KICAg
ICAgICAgICAgICAgICB1cGRhdGVGaWx0ZXJzKHRvU3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0Fy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNDExMDczMDg5
Y2M1NTNmYzc5MTQ4MTlhNjBlZGUxNzk2NGNhYTc5ZS4uODNjMjVjMzkwNmVkZjBkMzMyZDZkMTA3
M2VhYTE3ZTQxZDMzZWQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCkBAIC02NDUsMTkgKzY0NSwxOSBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbj46OmVuY29kZShBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIsIGNvbgogICAgIGVuY29kZXIuZW5jb2RlRW51bShrZXlmcmFtZXMucHJvcGVydHko
KSk7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa2V5ZnJhbWVzLnNpemUo
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlmcmFtZXMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIHZhbHVlID0ga2V5ZnJhbWVzLmF0KGkpOwot
ICAgICAgICBlbmNvZGVyIDw8IHZhbHVlLT5rZXlUaW1lKCk7Ci0gICAgICAgIGVuY29kZVRpbWlu
Z0Z1bmN0aW9uKGVuY29kZXIsIHZhbHVlLT50aW1pbmdGdW5jdGlvbigpKTsKKyAgICAgICAgY29u
c3QgQW5pbWF0aW9uVmFsdWUmIHZhbHVlID0ga2V5ZnJhbWVzLmF0KGkpOworICAgICAgICBlbmNv
ZGVyIDw8IHZhbHVlLmtleVRpbWUoKTsKKyAgICAgICAgZW5jb2RlVGltaW5nRnVuY3Rpb24oZW5j
b2RlciwgdmFsdWUudGltaW5nRnVuY3Rpb24oKSk7CiAgICAgICAgIHN3aXRjaCAoa2V5ZnJhbWVz
LnByb3BlcnR5KCkpIHsKICAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eToKLSAg
ICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1
ZSo+KHZhbHVlKS0+dmFsdWUoKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSY+KHZhbHVlKS52YWx1ZSgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKLSAg
ICAgICAgICAgIGVuY29kZXIgPDwgKnN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlKj4odmFsdWUpLT52YWx1ZSgpOworICAgICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZhbHVlKS52YWx1ZSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgICAgICBjYXNlIEFu
aW1hdGVkUHJvcGVydHlXZWJraXRGaWx0ZXI6Ci0gICAgICAgICAgICBlbmNvZGVyIDw8ICpzdGF0
aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlKS0+dmFsdWUoKTsKKyAg
ICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFs
dWUmPih2YWx1ZSkudmFsdWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgICAg
IGRlZmF1bHQ6CkBAIC03MzMsMTQgKzczMywxNCBAQCBib29sIEFyZ3VtZW50Q29kZXI8R3JhcGhp
Y3NMYXllckFuaW1hdGlvbj46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEdyYQog
ICAgICAgICAgICAgZmxvYXQgdmFsdWU7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBrZXlm
cmFtZXMuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHZh
bHVlLCB0aW1pbmdGdW5jdGlvbikpKTsKKyAgICAgICAgICAgIGtleWZyYW1lcy5pbnNlcnQoRmxv
YXRBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybTogewogICAgICAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9u
cyB0cmFuc2Zvcm07CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAga2V5ZnJhbWVzLmlu
c2VydChhZG9wdFB0cihuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoa2V5VGltZSwgJnRyYW5z
Zm9ybSwgdGltaW5nRnVuY3Rpb24pKSk7CisgICAgICAgICAgICBrZXlmcmFtZXMuaW5zZXJ0KFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlOjpjcmVhdGUoa2V5VGltZSwgdHJhbnNmb3JtLCB0aW1pbmdG
dW5jdGlvbikpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAjaWYgRU5BQkxFKENT
U19GSUxURVJTKQpAQCAtNzQ4LDcgKzc0OCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxHcmFwaGlj
c0xheWVyQW5pbWF0aW9uPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgR3JhCiAg
ICAgICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcjsKICAgICAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZmlsdGVyKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICBrZXlmcmFtZXMuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGaWx0ZXJBbmltYXRpb25WYWx1
ZShrZXlUaW1lLCAmZmlsdGVyLCB0aW1pbmdGdW5jdGlvbikpKTsKKyAgICAgICAgICAgIGtleWZy
YW1lcy5pbnNlcnQoRmlsdGVyQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXlUaW1lLCBmaWx0ZXIs
IHRpbWluZ0Z1bmN0aW9uKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNlbmRp
Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200960</attachid>
            <date>2013-05-07 12:44:39 -0700</date>
            <delta_ts>2013-05-07 13:33:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115738-20130507124345.patch</filename>
            <type>text/plain</type>
            <size>49361</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmYzMGI4M2ExOTVhN2U4
NzNjZWRlNzE0NzE2ODkwMjRlMDdjZWZlYS4uNGY1NGQyMWI2NTUzOWMzNWM4NGY4YWVlMDQxNzMy
ZThiOTUzN2FlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTA1LTA3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgS2V5
ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN0YXRpYyBjcmVhdGUoKSBmdW5jdGlvbnMg
dG8gdGhlIEFuaW1hdGlvblZhbHVlIHN1YmNsYXNzZXMsIGFuZCBjaGFuZ2UgYSBidW5jaCBvZiBw
YXJhbWV0ZXJzCisgICAgICAgIGFuZCByZXR1cm4gdmFsdWVzIHRoYXQgY2FuIG5ldmVyIGJlIG51
bGwgZnJvbSBwb2ludGVyIHR5cGVzIHRvIHJlZmVyZW5jZSB0eXBlcyB0byBiZXR0ZXIgaW5kaWNh
dGUgdGhpcy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJPcGVyYXRpb25zQXQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dmFsaWRhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdGlvbnNBdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjp2YWxpZGF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKEFuaW1hdGlvblZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblZhbHVlOjpBbmltYXRpb25WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoRmxvYXRB
bmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpG
bG9hdEFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OnZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckFuaW1hdGlvblZhbHVlOjp2YWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6RmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoRmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVW
YWx1ZUxpc3Q6On5LZXlmcmFtZVZhbHVlTGlzdCk6CisgICAgICAgIChLZXlmcmFtZVZhbHVlTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6YXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVGaWx0ZXJBbmltYXRp
b25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRp
b25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0
ZXJBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAoR3JhcGhpY3NMYXllckNBKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorCiAyMDEzLTA1LTA2ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBhbiAnaXNSZWFkT25seScgbWVt
YmVyIHRvIElETCBwYXJzZSB0cmVlIHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUzNjgxNDU2NGY4
NmRjYjQ3NjViNzFmMzNiZDgwYzA1MTVjMTVlNTcuLjBhNjI4YzQ2NWRkNTY1YTI1NDk0MTNmMzY0
MDI3MTJlN2UyOTI2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wNS0wNyAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVw
IEtleWZyYW1lVmFsdWVMaXN0IGFuZCByZWxhdGVkIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTczOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBmb3IgV2ViQ29yZSBjaGFuZ2Vz
LgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKwog
MjAxMy0wNS0wNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHNvbWUgdW5uZWNlc3Nhcnkgc29mdCBsaW5raW5nIGluIE5ldHdvcmtQcm9jZXNzLiAo
VGFrZSAyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcAppbmRleCBjNzhiNWJlYjI2OGMxOGQyZmJlZTRmZjBlYWNmODA3MTQzYWNiZjA3
Li4wMWI2YTNmZDdhMmIwYTFmZmE0ZDZjZjU0NWFhZjBjNmU1MTdhODJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtNDA5
LDkgKzQwOSw5IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6ZGlzdHJpYnV0ZU9wYWNpdHkoZmxvYXQg
YWNjdW11bGF0ZWRPcGFjaXR5KQogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotc3RhdGlj
IGlubGluZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQorc3RhdGljIGlubGlu
ZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkp
LT52YWx1ZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSY+KHZhbHVlTGlzdC5hdChpbmRleCkpLnZhbHVlKCk7CiB9CiAKIGludCBHcmFwaGljc0xh
eWVyOjp2YWxpZGF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZh
bHVlTGlzdCkKQEAgLTQyNCwyMyArNDI0LDIzIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCkKICAg
ICAvLyBFbXB0eSBmaWx0ZXJzIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBub24t
ZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZQogICAgIHNpemVfdCBmaXJzdEluZGV4ID0gMDsK
ICAgICBmb3IgKCA7IGZpcnN0SW5kZXggPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2ZpcnN0SW5kZXgp
IHsKLSAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGZpcnN0SW5kZXgp
LT5vcGVyYXRpb25zKCkuc2l6ZSgpID4gMCkKKyAgICAgICAgaWYgKCFmaWx0ZXJPcGVyYXRpb25z
QXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS5vcGVyYXRpb25zKCkuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKGZpcnN0SW5kZXggPj0gdmFsdWVMaXN0LnNp
emUoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyog
Zmlyc3RWYWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KTsKKyAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaXJzdFZhbCA9IGZpbHRlck9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGZpcnN0SW5kZXgpOwogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdElu
ZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zKiB2YWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKKyAg
ICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdmFsID0gZmlsdGVyT3BlcmF0aW9uc0F0KHZh
bHVlTGlzdCwgaSk7CiAgICAgICAgIAogICAgICAgICAvLyBBbiBlbXRweSBmaWx0ZXIgbGlzdCBt
YXRjaGVzIGFueXRoaW5nLgotICAgICAgICBpZiAodmFsLT5vcGVyYXRpb25zKCkuaXNFbXB0eSgp
KQorICAgICAgICBpZiAodmFsLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRj
aCgqdmFsKSkKKyAgICAgICAgaWYgKCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAg
ICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgCkBAIC00NTIsOSArNDUyLDkgQEAgaW50
IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWVMaXN0KQogLy8gVGhlIGhhc0JpZ1JvdGF0aW9uIGZsYWcgd2lsbCBhbHdh
eXMgcmV0dXJuIGZhbHNlIGlmIGlzVmFsaWQgaXMgZmFsc2UuIE90aGVyd2lzZSBoYXNCaWdSb3Rh
dGlvbiBpcyAKIC8vIHRydWUgaWYgdGhlIHJvdGF0aW9uIGJldHdlZW4gYW55IHR3byBrZXlmcmFt
ZXMgaXMgPj0gMTgwIGRlZ3JlZXMuCiAKLXN0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9ucyogb3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3Qs
IHNpemVfdCBpbmRleCkKK3N0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYg
b3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIHNpemVfdCBp
bmRleCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUqPih2YWx1ZUxpc3QuYXQoaW5kZXgpKS0+dmFsdWUoKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoaW5kZXgp
KS52YWx1ZSgpOwogfQogCiBpbnQgR3JhcGhpY3NMYXllcjo6dmFsaWRhdGVUcmFuc2Zvcm1PcGVy
YXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGJvb2wmIGhhc0JpZ1Jv
dGF0aW9uKQpAQCAtNDY5LDI0ICs0NjksMjQgQEAgaW50IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRl
VHJhbnNmb3JtT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXMKICAg
ICAvLyBFbXB0eSB0cmFuc2Zvcm1zIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBu
b24tZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZS4KICAgICBzaXplX3QgZmlyc3RJbmRleCA9
IDA7CiAgICAgZm9yICggOyBmaXJzdEluZGV4IDwgdmFsdWVMaXN0LnNpemUoKTsgKytmaXJzdElu
ZGV4KSB7Ci0gICAgICAgIGlmIChvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS0+
b3BlcmF0aW9ucygpLnNpemUoKSA+IDApCisgICAgICAgIGlmICghb3BlcmF0aW9uc0F0KHZhbHVl
TGlzdCwgZmlyc3RJbmRleCkub3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAKICAgICBpZiAoZmlyc3RJbmRleCA+PSB2YWx1ZUxpc3Quc2l6ZSgp
KQogICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIAotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbnMqIGZpcnN0VmFsID0gb3BlcmF0aW9uc0F0KHZhbHVlTGlzdCwgZmlyc3RJbmRleCk7Cisg
ICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZmlyc3RWYWwgPSBvcGVyYXRpb25zQXQodmFs
dWVMaXN0LCBmaXJzdEluZGV4KTsKICAgICAKICAgICAvLyBTZWUgaWYgdGhlIGtleWZyYW1lcyBh
cmUgdmFsaWQuCiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0SW5kZXggKyAxOyBpIDwgdmFsdWVM
aXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZh
bCA9IG9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGkpOworICAgICAgICBjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKICAgICAgICAgCi0g
ICAgICAgIC8vIEFuIGVtdHB5IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCi0gICAg
ICAgIGlmICh2YWwtPm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCisgICAgICAgIC8vIEFuIGVtcHR5
IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCisgICAgICAgIGlmICh2YWwub3BlcmF0
aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0g
ICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRjaCgqdmFsKSkKKyAgICAgICAgaWYg
KCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAgICAgICAgICAgIHJldHVybiAtMTsK
ICAgICB9CiAKQEAgLTQ5NCwyMiArNDk0LDIyIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzCiAg
ICAgZG91YmxlIGxhc3RSb3RBbmdsZSA9IDAuMDsKICAgICBkb3VibGUgbWF4Um90QW5nbGUgPSAt
MS4wOwogICAgICAgICAKLSAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGZpcnN0VmFsLT5vcGVy
YXRpb25zKCkuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHR5cGUgPSBmaXJzdFZhbC0+b3BlcmF0aW9ucygpLmF0KGopLT5nZXRPcGVyYXRp
b25UeXBlKCk7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBmaXJzdFZhbC5vcGVyYXRpb25z
KCkuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHR5cGUgPSBmaXJzdFZhbC5vcGVyYXRpb25zKCkuYXQoaiktPmdldE9wZXJhdGlvblR5cGUo
KTsKICAgICAgICAgCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSByb3RhdGlvbiBlbnRyeSwgd2Ug
bmVlZCB0byBzZWUgaWYgYW55IGFuZ2xlIGRpZmZlcmVuY2VzIGFyZSA+PSAxODAgZGVnCiAgICAg
ICAgIGlmICh0eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1ggfHwKICAgICAgICAg
ICAgIHR5cGUgPT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWSB8fAogICAgICAgICAgICAg
dHlwZSA9PSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9aIHx8CiAgICAgICAgICAgICB0eXBl
ID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEKSB7Ci0gICAgICAgICAgICBsYXN0Um90
QW5nbGUgPSBzdGF0aWNfY2FzdDxSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihmaXJzdFZhbC0+
b3BlcmF0aW9ucygpLmF0KGopLmdldCgpKS0+YW5nbGUoKTsKKyAgICAgICAgICAgIGxhc3RSb3RB
bmdsZSA9IHN0YXRpY19jYXN0PFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KGZpcnN0VmFsLm9w
ZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChtYXhSb3RBbmdsZSA8IDApCiAgICAgICAgICAgICAgICAgbWF4Um90QW5nbGUgPSBm
YWJzKGxhc3RSb3RBbmdsZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBmaXJzdEluZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZhbCA9IG9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGkpOwotICAgICAgICAgICAgICAgIGRvdWJsZSByb3RBbmdsZSA9IHZhbC0+b3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLT5vcGVyYXRpb25zKCkuYXQoaikuZ2V0KCkpLT5hbmdsZSgpKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQo
dmFsdWVMaXN0LCBpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgcm90QW5nbGUgPSB2YWwub3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLm9wZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCkpOwogICAgICAg
ICAgICAgICAgIGRvdWJsZSBkaWZmQW5nbGUgPSBmYWJzKHJvdEFuZ2xlIC0gbGFzdFJvdEFuZ2xl
KTsKICAgICAgICAgICAgICAgICBpZiAoZGlmZkFuZ2xlID4gbWF4Um90QW5nbGUpCiAgICAgICAg
ICAgICAgICAgICAgIG1heFJvdEFuZ2xlID0gZGlmZkFuZ2xlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDEzMTFmYjZlYmM3ZDg0
ZTFhODIxMWQxYjc0ODk2YmUwYjQ0ZTU1MTUuLjE2ZGMwN2ZlYmI3YzhkODJlN2Q5MjdkNzYzYTdl
MDE1YmE4NzlmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTcyLDE4ICs3MiwxOSBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKIGNsYXNzIEFuaW1hdGlvblZhbHVlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBQ
YXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCi0gICAgICAgIDog
bV9rZXlUaW1lKGtleVRpbWUpCi0gICAgICAgICwgbV90aW1pbmdGdW5jdGlvbih0aW1pbmdGdW5j
dGlvbikKLSAgICB7Ci0gICAgfQotICAgIAogICAgIHZpcnR1YWwgfkFuaW1hdGlvblZhbHVlKCkg
eyB9CiAKICAgICBmbG9hdCBrZXlUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9rZXlUaW1lOyB9CiAg
ICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90aW1pbmdGdW5jdGlvbi5nZXQoKTsgfQogICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRp
b25WYWx1ZT4gY2xvbmUoKSBjb25zdCA9IDA7CiAKK3Byb3RlY3RlZDoKKyAgICBBbmltYXRpb25W
YWx1ZShmbG9hdCBrZXlUaW1lLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5j
dGlvbiA9IDApCisgICAgICAgIDogbV9rZXlUaW1lKGtleVRpbWUpCisgICAgICAgICwgbV90aW1p
bmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbikKKyAgICB7CisgICAgfQorCiBwcml2YXRlOgogICAg
IGZsb2F0IG1fa2V5VGltZTsKICAgICBSZWZQdHI8VGltaW5nRnVuY3Rpb24+IG1fdGltaW5nRnVu
Y3Rpb247CkBAIC05MywxNiArOTQsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUg
bW92ZWQgdG8gaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIEZsb2F0QW5pbWF0aW9uVmFsdWUg
OiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogcHVibGljOgotICAgIEZsb2F0QW5pbWF0aW9uVmFs
dWUoZmxvYXQga2V5VGltZSwgZmxvYXQgdmFsdWUsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+
IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0
aW1pbmdGdW5jdGlvbikKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHN0YXRpYyBQYXNz
T3duUHRyPEZsb2F0QW5pbWF0aW9uVmFsdWU+IGNyZWF0ZShmbG9hdCBrZXlUaW1lLCBmbG9hdCB2
YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24gPSAwKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093
blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKCp0aGlzKSk7CiAgICAg
fQotICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgqdGhpcykp
OyB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJp
dmF0ZToKKyAgICBGbG9hdEFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRpbWUsIGZsb2F0IHZhbHVl
LCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgOiBB
bmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgLCBtX3ZhbHVl
KHZhbHVlKQorICAgIHsKKyAgICB9CisKICAgICBmbG9hdCBtX3ZhbHVlOwogfTsKIApAQCAtMTEw
LDE3ICsxMjAsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRz
IG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGlj
IEFuaW1hdGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiB2YWx1ZSA9
IDAsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAg
ICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMg
UGFzc093blB0cjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUs
IGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlv
bikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xv
bmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKLSAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAg
ICAgbV92YWx1ZSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSgqdGhpcykpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICBj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7
IH0KIAogcHJpdmF0ZToKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1l
LCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5j
dGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFsdWUoa2V5VGltZSwg
dGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQor
CiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKIApAQCAtMTI5LDE3ICsxNDcs
MjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRzIG93biBoZWFk
ZXIgZmlsZS4KIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZh
bHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBGaWx0ZXJBbmltYXRpb25WYWx1ZShmbG9hdCBr
ZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWx1ZSA9IDAsIFBhc3NSZWZQdHI8VGlt
aW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1
ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMgUGFzc093blB0cjxGaWx0ZXJB
bmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUsIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDAp
CiAgICAgewotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICBtX3ZhbHVlID0gKnZhbHVl
OworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQ
dHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUoKnRo
aXMpKTsKKyAgICB9CisKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKKyAgICBGaWx0ZXJBbmltYXRpb25WYWx1
ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0
cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFs
dWUoa2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAg
ICB7CisgICAgfQorCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKICNlbmRpZgpA
QCAtMTYxLDYgKzE4NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQo
b3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOwogICAgIH0KIAorICAgIH5LZXlmcmFtZVZhbHVl
TGlzdCgpCisgICAgeworICAgIH0KKwogICAgIEtleWZyYW1lVmFsdWVMaXN0JiBvcGVyYXRvcj0o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKICAgICAgICAgS2V5ZnJhbWVW
YWx1ZUxpc3QgY29weShvdGhlcik7CkBAIC0xNzcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIEFu
aW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHk7IH0K
IAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOyB9Ci0g
ICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlcy5hdChpKS5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhdChzaXplX3Qg
aSkgY29uc3QgeyByZXR1cm4gKm1fdmFsdWVzLmF0KGkpOyB9CiAgICAgCiAgICAgLy8gSW5zZXJ0
LCBzb3J0ZWQgYnkga2V5VGltZS4KICAgICB2b2lkIGluc2VydChQYXNzT3duUHRyPGNvbnN0IEFu
aW1hdGlvblZhbHVlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCmluZGV4IGQwMjY1OThiMDI2ZmJk
MDA1NGNlYmM2MzcwZjFhZmVlMzQ0OWNjYjUuLjIwNmQ3MDdiM2FkMTUwMWFlNTFiMzFkNTYyNDgw
ZGJhNjJlMDVmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCkBAIC0zOSwyNyArMzksMjcgQEAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRGdW5jKEZpbHRl
ck9wZXJhdGlvbiogZnJvbU9wLCBGaWwKIH0KIAogCi1zdGF0aWMgRmlsdGVyT3BlcmF0aW9ucyBh
cHBseUZpbHRlckFuaW1hdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmcm9tLCBjb25zdCBG
aWx0ZXJPcGVyYXRpb25zKiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBib3hT
aXplKQorc3RhdGljIEZpbHRlck9wZXJhdGlvbnMgYXBwbHlGaWx0ZXJBbmltYXRpb24oY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZnJvbSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdG8sIGRvdWJs
ZSBwcm9ncmVzcywgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKIHsKICAgICAvLyBGaXJzdCBmcmFt
ZSBvZiBhbiBhbmltYXRpb24uCiAgICAgaWYgKCFwcm9ncmVzcykKLSAgICAgICAgcmV0dXJuICpm
cm9tOworICAgICAgICByZXR1cm4gZnJvbTsKIAogICAgIC8vIExhc3QgZnJhbWUgb2YgYW4gYW5p
bWF0aW9uLgogICAgIGlmIChwcm9ncmVzcyA9PSAxKQotICAgICAgICByZXR1cm4gKnRvOworICAg
ICAgICByZXR1cm4gdG87CiAKLSAgICBpZiAoIWZyb20tPmlzRW1wdHkoKSAmJiAhdG8tPmlzRW1w
dHkoKSAmJiAhZnJvbS0+b3BlcmF0aW9uc01hdGNoKCp0bykpCi0gICAgICAgIHJldHVybiAqdG87
CisgICAgaWYgKCFmcm9tLmlzRW1wdHkoKSAmJiAhdG8uaXNFbXB0eSgpICYmICFmcm9tLm9wZXJh
dGlvbnNNYXRjaCh0bykpCisgICAgICAgIHJldHVybiB0bzsKIAogICAgIEZpbHRlck9wZXJhdGlv
bnMgcmVzdWx0OwogCi0gICAgc2l6ZV90IGZyb21TaXplID0gZnJvbS0+b3BlcmF0aW9ucygpLnNp
emUoKTsKLSAgICBzaXplX3QgdG9TaXplID0gdG8tPm9wZXJhdGlvbnMoKS5zaXplKCk7CisgICAg
c2l6ZV90IGZyb21TaXplID0gZnJvbS5vcGVyYXRpb25zKCkuc2l6ZSgpOworICAgIHNpemVfdCB0
b1NpemUgPSB0by5vcGVyYXRpb25zKCkuc2l6ZSgpOwogICAgIHNpemVfdCBzaXplID0gc3RkOjpt
YXgoZnJvbVNpemUsIHRvU2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKLSAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZnJvbU9wID0gKGkgPCBmcm9t
U2l6ZSkgPyBmcm9tLT5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwotICAgICAgICBSZWZQdHI8
RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8tPm9wZXJhdGlvbnMoKVtp
XS5nZXQoKSA6IDA7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZyb21PcCA9IChp
IDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOworICAgICAgICBS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8ub3BlcmF0aW9u
cygpW2ldLmdldCgpIDogMDsKICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRl
ZE9wID0gdG9PcCA/IGJsZW5kRnVuYyhmcm9tT3AuZ2V0KCksIHRvT3AuZ2V0KCksIHByb2dyZXNz
LCBib3hTaXplKSA6IChmcm9tT3AgPyBibGVuZEZ1bmMoMCwgZnJvbU9wLmdldCgpLCBwcm9ncmVz
cywgYm94U2l6ZSwgdHJ1ZSkgOiAwKTsKICAgICAgICAgaWYgKGJsZW5kZWRPcCkKICAgICAgICAg
ICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7CkBAIC0xNTUsNTggKzE1
NSw1OCBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVuY3Rpb24oY29uc3QgVGlt
aW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbAogICAgIHJldHVybiBwcm9ncmVzczsKIH0K
IAotc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMq
IHRvLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGJvb2wgbGlzdHNN
YXRjaCkKK3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcHBseVRyYW5zZm9ybUFuaW1hdGlv
bihjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b25zJiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBib29sIGxp
c3RzTWF0Y2gpCiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OwogCiAgICAgLy8g
Rmlyc3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmICghcHJvZ3Jlc3MpIHsKLSAgICAg
ICAgZnJvbS0+YXBwbHkoYm94U2l6ZSwgbWF0cml4KTsKKyAgICAgICAgZnJvbS5hcHBseShib3hT
aXplLCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIExh
c3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmIChwcm9ncmVzcyA9PSAxKSB7Ci0gICAg
ICAgIHRvLT5hcHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICB0by5hcHBseShib3hTaXpl
LCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIElmIHdl
IGhhdmUgaW5jb21wYXRpYmxlIG9wZXJhdGlvbiBsaXN0cywgd2UgYmxlbmQgdGhlIHJlc3VsdGlu
ZyBtYXRyaWNlcy4KICAgICBpZiAoIWxpc3RzTWF0Y2gpIHsKICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggZnJvbU1hdHJpeDsKLSAgICAgICAgdG8tPmFwcGx5KGJveFNpemUsIG1hdHJpeCk7
Ci0gICAgICAgIGZyb20tPmFwcGx5KGJveFNpemUsIGZyb21NYXRyaXgpOworICAgICAgICB0by5h
cHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICBmcm9tLmFwcGx5KGJveFNpemUsIGZyb21N
YXRyaXgpOwogICAgICAgICBtYXRyaXguYmxlbmQoZnJvbU1hdHJpeCwgcHJvZ3Jlc3MpOwogICAg
ICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIEFuaW1hdGlvbiB0byAiLXdlYmtp
dC10cmFuc2Zvcm06IG5vbmUiLgotICAgIGlmICghdG8tPnNpemUoKSkgewotICAgICAgICBUcmFu
c2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQoKmZyb20pOworICAgIGlmICghdG8uc2l6ZSgpKSB7Cisg
ICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRlZChmcm9tKTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBibGVuZGVkLm9wZXJhdGlvbnMoKS5zaXplKCk7ICsraSkKICAgICAg
ICAgICAgIGJsZW5kZWQub3BlcmF0aW9ucygpW2ldLT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkt
PmFwcGx5KG1hdHJpeCwgYm94U2l6ZSk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQog
CiAgICAgLy8gQW5pbWF0aW9uIGZyb20gIi13ZWJraXQtdHJhbnNmb3JtOiBub25lIi4KLSAgICBp
ZiAoIWZyb20tPnNpemUoKSkgewotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQo
KnRvKTsKKyAgICBpZiAoIWZyb20uc2l6ZSgpKSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlv
bnMgYmxlbmRlZCh0byk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxlbmRlZC5v
cGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMo
KVtpXS0+YmxlbmQoMCwgMS4gLSBwcm9ncmVzcywgdHJ1ZSktPmFwcGx5KG1hdHJpeCwgYm94U2l6
ZSk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQogCiAgICAgLy8gTm9ybWFsIGFuaW1h
dGlvbiB3aXRoIGEgbWF0Y2hpbmcgb3BlcmF0aW9uIGxpc3QuCi0gICAgVHJhbnNmb3JtT3BlcmF0
aW9ucyBibGVuZGVkKCp0byk7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZGVkKHRvKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsZW5kZWQub3BlcmF0aW9ucygpLnNpemUoKTsg
KytpKQotICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS0+YXQoaSks
IHByb2dyZXNzLCAhZnJvbS0+YXQoaSkpLT5hcHBseShtYXRyaXgsIGJveFNpemUpOworICAgICAg
ICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS5hdChpKSwgcHJvZ3Jlc3MsICFm
cm9tLmF0KGkpKS0+YXBwbHkobWF0cml4LCBib3hTaXplKTsKICAgICByZXR1cm4gbWF0cml4Owog
fQogCi1zdGF0aWMgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0
aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqIGFuaW1WYWx1ZSwgY29uc3QgQW5pbWF0aW9u
KiBhbmltKQorc3RhdGljIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbkZvckFu
aW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltVmFsdWUsIGNvbnN0IEFuaW1h
dGlvbiogYW5pbSkKIHsKLSAgICBpZiAoYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpKQotICAg
ICAgICByZXR1cm4gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOworICAgIGlmIChhbmltVmFs
dWUudGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGFuaW1WYWx1ZS50aW1pbmdGdW5j
dGlvbigpOwogICAgIGlmIChhbmltLT50aW1pbmdGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4g
YW5pbS0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKIApAQCAtMjI3LDE4ICsyMjcsMTggQEAgR3Jh
cGhpY3NMYXllckFuaW1hdGlvbjo6R3JhcGhpY3NMYXllckFuaW1hdGlvbihjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IEtleWZyYW0KIHsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQW5pbWF0aW9u
OjphcHBseUludGVybmFsKENsaWVudCogY2xpZW50LCBjb25zdCBBbmltYXRpb25WYWx1ZSogZnJv
bSwgY29uc3QgQW5pbWF0aW9uVmFsdWUqIHRvLCBmbG9hdCBwcm9ncmVzcykKK3ZvaWQgR3JhcGhp
Y3NMYXllckFuaW1hdGlvbjo6YXBwbHlJbnRlcm5hbChDbGllbnQqIGNsaWVudCwgY29uc3QgQW5p
bWF0aW9uVmFsdWUmIGZyb20sIGNvbnN0IEFuaW1hdGlvblZhbHVlJiB0bywgZmxvYXQgcHJvZ3Jl
c3MpCiB7CiAgICAgc3dpdGNoIChtX2tleWZyYW1lcy5wcm9wZXJ0eSgpKSB7CiAgICAgY2FzZSBB
bmltYXRlZFByb3BlcnR5T3BhY2l0eToKLSAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZE9wYWNp
dHkoYXBwbHlPcGFjaXR5QW5pbWF0aW9uKChzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlv
blZhbHVlKj4oZnJvbSktPnZhbHVlKCkpLCAoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRp
b25WYWx1ZSo+KHRvKS0+dmFsdWUoKSksIHByb2dyZXNzKSk7CisgICAgICAgIGNsaWVudC0+c2V0
QW5pbWF0ZWRPcGFjaXR5KGFwcGx5T3BhY2l0eUFuaW1hdGlvbigoc3RhdGljX2Nhc3Q8Y29uc3Qg
RmxvYXRBbmltYXRpb25WYWx1ZSY+KGZyb20pLnZhbHVlKCkpLCAoc3RhdGljX2Nhc3Q8Y29uc3Qg
RmxvYXRBbmltYXRpb25WYWx1ZSY+KHRvKS52YWx1ZSgpKSwgcHJvZ3Jlc3MpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKLSAgICAg
ICAgY2xpZW50LT5zZXRBbmltYXRlZFRyYW5zZm9ybShhcHBseVRyYW5zZm9ybUFuaW1hdGlvbihz
dGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KGZyb20pLT52YWx1ZSgp
LCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHRvKS0+dmFsdWUo
KSwgcHJvZ3Jlc3MsIG1fYm94U2l6ZSwgbV9saXN0c01hdGNoKSk7CisgICAgICAgIGNsaWVudC0+
c2V0QW5pbWF0ZWRUcmFuc2Zvcm0oYXBwbHlUcmFuc2Zvcm1BbmltYXRpb24oc3RhdGljX2Nhc3Q8
Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPihmcm9tKS52YWx1ZSgpLCBzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHRvKS52YWx1ZSgpLCBwcm9ncmVzcywg
bV9ib3hTaXplLCBtX2xpc3RzTWF0Y2gpKTsKICAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRGaWx0ZXI6Ci0gICAg
ICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRGaWx0ZXJzKGFwcGx5RmlsdGVyQW5pbWF0aW9uKHN0YXRp
Y19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4oZnJvbSktPnZhbHVlKCksIHN0YXRp
Y19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odG8pLT52YWx1ZSgpLCBwcm9ncmVz
cywgbV9ib3hTaXplKSk7CisgICAgICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRGaWx0ZXJzKGFwcGx5
RmlsdGVyQW5pbWF0aW9uKHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJj4o
ZnJvbSkudmFsdWUoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPih0
bykudmFsdWUoKSwgcHJvZ3Jlc3MsIG1fYm94U2l6ZSkpOwogICAgICAgICByZXR1cm47CiAjZW5k
aWYKICAgICBkZWZhdWx0OgpAQCAtMzA0LDEyICszMDQsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVy
QW5pbWF0aW9uOjphcHBseShDbGllbnQqIGNsaWVudCkKICAgICB9CiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fa2V5ZnJhbWVzLnNpemUoKSAtIDE7ICsraSkgewotICAgICAgICBjb25z
dCBBbmltYXRpb25WYWx1ZSogZnJvbSA9IG1fa2V5ZnJhbWVzLmF0KGkpOwotICAgICAgICBjb25z
dCBBbmltYXRpb25WYWx1ZSogdG8gPSBtX2tleWZyYW1lcy5hdChpICsgMSk7Ci0gICAgICAgIGlm
IChmcm9tLT5rZXlUaW1lKCkgPiBub3JtYWxpemVkVmFsdWUgfHwgdG8tPmtleVRpbWUoKSA8IG5v
cm1hbGl6ZWRWYWx1ZSkKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIGZyb20gPSBtX2tl
eWZyYW1lcy5hdChpKTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIHRvID0gbV9rZXlm
cmFtZXMuYXQoaSArIDEpOworICAgICAgICBpZiAoZnJvbS5rZXlUaW1lKCkgPiBub3JtYWxpemVk
VmFsdWUgfHwgdG8ua2V5VGltZSgpIDwgbm9ybWFsaXplZFZhbHVlKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gKG5vcm1hbGl6ZWRWYWx1ZSAtIGZy
b20tPmtleVRpbWUoKSkgLyAodG8tPmtleVRpbWUoKSAtIGZyb20tPmtleVRpbWUoKSk7CisgICAg
ICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IChub3JtYWxpemVkVmFsdWUgLSBmcm9tLmtleVRpbWUoKSkg
LyAodG8ua2V5VGltZSgpIC0gZnJvbS5rZXlUaW1lKCkpOwogICAgICAgICBjb25zdCBUaW1pbmdG
dW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVl
KGZyb20sIG1fYW5pbWF0aW9uLmdldCgpKTsKICAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gYXBw
bHlUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgbm9ybWFsaXplZFZhbHVlLCBtX2FuaW1h
dGlvbi0+ZHVyYXRpb24oKSk7CiAgICAgICAgIGFwcGx5SW50ZXJuYWwoY2xpZW50LCBmcm9tLCB0
bywgbm9ybWFsaXplZFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaAppbmRleCA5ZjBiNWM1MmFiZDk4
MmQ3YmRjNDY4ODI3ZTNkOGY5MGQ2NWJhMWRiLi4yZDJmNjg1NzM1NDQyM2ZmODFlZjE2MTQ5ZjE2
NmI4M2MxNTYxMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckFuaW1hdGlvbi5oCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGxpc3RzTWF0Y2goKSBjb25zdCB7IHJldHVybiBtX2xpc3RzTWF0Y2g7IH0K
IAogcHJpdmF0ZToKLSAgICB2b2lkIGFwcGx5SW50ZXJuYWwoQ2xpZW50KiwgY29uc3QgQW5pbWF0
aW9uVmFsdWUqIGZyb20sIGNvbnN0IEFuaW1hdGlvblZhbHVlKiB0bywgZmxvYXQgcHJvZ3Jlc3Mp
OworICAgIHZvaWQgYXBwbHlJbnRlcm5hbChDbGllbnQqLCBjb25zdCBBbmltYXRpb25WYWx1ZSYg
ZnJvbSwgY29uc3QgQW5pbWF0aW9uVmFsdWUmIHRvLCBmbG9hdCBwcm9ncmVzcyk7CiAgICAgS2V5
ZnJhbWVWYWx1ZUxpc3QgbV9rZXlmcmFtZXM7CiAgICAgSW50U2l6ZSBtX2JveFNpemU7CiAgICAg
UmVmUHRyPEFuaW1hdGlvbj4gbV9hbmltYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCAyMTBiODFh
YmQ3MjIxNDk0YWQ3ZGYyNzUyNGZlMWMzOWU2ZDM3YTZjLi5mZmNhZDg3OTZlZjRmM2Y5YTkzYjdj
Y2E1Y2Q0MmM1ZTE3NmM3NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTI0Miw5ICsyNDIsMTAgQEAg
c3RhdGljIGJvb2wgYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlvbihjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHZhbHVlTGlzdC5hdChpKS0+
dGltaW5nRnVuY3Rpb24oKTsKLSAgICAgICAgaWYgKHRpbWluZ0Z1bmN0aW9uICYmIHRpbWluZ0Z1
bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBpZiAoY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFs
dWVMaXN0LmF0KGkpLnRpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgICAgIGlmICh0aW1pbmdG
dW5jdGlvbi0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDkxLDcg
KzIwOTIsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9u
c0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZQogCiAgICAgYm9vbCBoYXNCaWdSb3Rh
dGlvbjsKICAgICBpbnQgbGlzdEluZGV4ID0gdmFsaWRhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZh
bHVlTGlzdCwgaGFzQmlnUm90YXRpb24pOwotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMq
IG9wZXJhdGlvbnMgPSAobGlzdEluZGV4ID49IDApID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4KSktPnZhbHVlKCkgOiAw
OworICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSAobGlzdEluZGV4
ID49IDApID8gJnN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFs
dWVMaXN0LmF0KGxpc3RJbmRleCkpLnZhbHVlKCkgOiAwOwogCiAgICAgLy8gV2UgbmVlZCB0byBm
YWxsIGJhY2sgdG8gc29mdHdhcmUgYW5pbWF0aW9uIGlmIHdlIGRvbid0IGhhdmUgc2V0VmFsdWVG
dW5jdGlvbjosIGFuZAogICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gYW5pbWF0ZSBlYWNoIGluY29t
aW5nIHRyYW5zZm9ybSBmdW5jdGlvbiBzZXBhcmF0ZWx5LiBUaGlzIGlzIHRoZQpAQCAtMjE4MSwy
MSArMjE4MiwyMSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlRmlsdGVyQW5pbWF0aW9u
c0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpcwogICAgIGlmIChsaXN0SW5kZXgg
PCAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSo+KHZhbHVlTGlzdC5hdChsaXN0SW5kZXgpKS0+dmFsdWUoKTsKKyAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0
aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4KSkudmFsdWUoKTsKICAgICAvLyBNYWtl
IHN1cmUgdGhlIHBsYXRmb3JtIGxheWVyIGRpZG4ndCBmYWxsYmFjayB0byB1c2luZyBzb2Z0d2Fy
ZSBmaWx0ZXIgY29tcG9zaXRpbmcgaW5zdGVhZC4KLSAgICBpZiAoIVBsYXRmb3JtQ0FMYXllcjo6
ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZCgqb3BlcmF0aW9ucykpCisgICAgaWYgKCFQbGF0Zm9ybUNB
TGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQob3BlcmF0aW9ucykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGludCBudW1BbmltYXRpb25zID0gb3BlcmF0aW9ucy0+c2l6ZSgpOwor
ICAgIGludCBudW1BbmltYXRpb25zID0gb3BlcmF0aW9ucy5zaXplKCk7CiAKICAgICAvLyBGSVhN
RTogV2UgY2FuJ3QgY3VycmVudGx5IGhhcmR3YXJlIGFuaW1hdGUgc2hhZG93cy4KICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICBpZiAob3BlcmF0
aW9ucy0+YXQoaSktPmdldE9wZXJhdGlvblR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OkRST1Bf
U0hBRE9XKQorICAgICAgICBpZiAob3BlcmF0aW9ucy5hdChpKS0+Z2V0T3BlcmF0aW9uVHlwZSgp
ID09IEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgZm9yIChpbnQgYW5pbWF0aW9uSW5kZXggPSAwOyBhbmltYXRpb25J
bmRleCA8IG51bUFuaW1hdGlvbnM7ICsrYW5pbWF0aW9uSW5kZXgpIHsKLSAgICAgICAgaWYgKCFh
cHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyh2YWx1ZUxpc3QsIG9wZXJhdGlvbnMtPm9wZXJh
dGlvbnMoKS5hdChhbmltYXRpb25JbmRleCkuZ2V0KCksIGFuaW1hdGlvbiwgYW5pbWF0aW9uTmFt
ZSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQpKQorICAgICAgICBpZiAoIWFwcGVuZFRvVW5j
b21taXR0ZWRBbmltYXRpb25zKHZhbHVlTGlzdCwgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXQo
YW5pbWF0aW9uSW5kZXgpLmdldCgpLCBhbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIGFuaW1hdGlv
bkluZGV4LCB0aW1lT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTIyNTMsMTIgKzIyNTQsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQW5pbWF0
aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qIHByb3BlcnR5QW5pbSwgY29uc3QgQW4KICAgICBwcm9w
ZXJ0eUFuaW0tPnNldEZpbGxNb2RlKGZpbGxNb2RlKTsKIH0KIAotY29uc3QgVGltaW5nRnVuY3Rp
b24qIEdyYXBoaWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25z
dCBBbmltYXRpb25WYWx1ZSogYW5pbVZhbHVlLCBjb25zdCBBbmltYXRpb24qIGFuaW0pCitjb25z
dCBUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXllckNBOjp0aW1pbmdGdW5jdGlvbkZvckFuaW1h
dGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlv
biYgYW5pbSkKIHsKLSAgICBpZiAoYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpKQotICAgICAg
ICByZXR1cm4gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOwotICAgIGlmIChhbmltLT5pc1Rp
bWluZ0Z1bmN0aW9uU2V0KCkpCi0gICAgICAgIHJldHVybiBhbmltLT50aW1pbmdGdW5jdGlvbigp
LmdldCgpOworICAgIGlmIChhbmltVmFsdWUudGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0
dXJuIGFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpOworICAgIGlmIChhbmltLmlzVGltaW5nRnVu
Y3Rpb25TZXQoKSkKKyAgICAgICAgcmV0dXJuIGFuaW0udGltaW5nRnVuY3Rpb24oKS5nZXQoKTsK
ICAgICAKICAgICByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6ZGVmYXVsdFRpbWlu
Z0Z1bmN0aW9uKCk7CiB9CkBAIC0yMjcyLDggKzIyNzMsOCBAQCBib29sIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxp
c3QsCiAgICAgCiAgICAgc3dpdGNoICh2YWx1ZUxpc3QucHJvcGVydHkoKSkgewogICAgIGNhc2Ug
QW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFs
dWUoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChm
cm9tSW5kZXgpKS0+dmFsdWUoKSk7Ci0gICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZShzdGF0
aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KHRvSW5kZXgp
KS0+dmFsdWUoKSk7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKHN0YXRpY19jYXN0
PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSkudmFs
dWUoKSk7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZShzdGF0aWNfY2FzdDxjb25zdCBG
bG9hdEFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKS52YWx1ZSgpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC0yMjgzLDcgKzIyODQsNyBAQCBi
b29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1ZUxpc3QsCiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9y
IDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBz
dGFydAogICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5n
IGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBm
dW5jdGlvbi4KLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1p
bmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKTsK
KyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlv
bkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbik7CiAgICAgaWYg
KHRpbWluZ0Z1bmN0aW9uKQogICAgICAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRp
bWluZ0Z1bmN0aW9uLCAhZm9yd2FyZHMpOwogCkBAIC0yMzAwLDEzICsyMzAxLDEzIEBAIGJvb2wg
R3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFs
dWVMaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gZm9yd2FyZHMg
PyBpIDogKHZhbHVlTGlzdC5zaXplKCkgLSBpIC0gMSk7Ci0gICAgICAgIGNvbnN0IEFuaW1hdGlv
blZhbHVlKiBjdXJWYWx1ZSA9IHZhbHVlTGlzdC5hdChpbmRleCk7Ci0gICAgICAgIGtleVRpbWVz
LmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLT5rZXlUaW1lKCkgOiAoMSAtIGN1clZhbHVlLT5r
ZXlUaW1lKCkpKTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIGN1clZhbHVlID0gdmFs
dWVMaXN0LmF0KGluZGV4KTsKKyAgICAgICAga2V5VGltZXMuYXBwZW5kKGZvcndhcmRzID8gY3Vy
VmFsdWUua2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS5rZXlUaW1lKCkpKTsKIAogICAgICAgICBz
d2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9w
ZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqIGZs
b2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4oY3VyVmFs
dWUpOwotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChmbG9hdFZhbHVlLT52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmIGZsb2F0VmFsdWUgPSBzdGF0aWNf
Y2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJj4oY3VyVmFsdWUpOworICAgICAgICAgICAg
dmFsdWVzLmFwcGVuZChmbG9hdFZhbHVlLnZhbHVlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTIzMTUsNyArMjMxNiw3IEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5z
aXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVu
Y3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0
KGluZGV4IC0gMSksIGFuaW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFw
cGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUg
OiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwogICAgIH0KICAgICAKICAg
ICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRpbWVzKTsKQEAgLTIzMzQsMTMgKzIzMzUs
MTMgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50
cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICB1bnNpZ25lZCBmcm9tSW5kZXggPSAh
Zm9yd2FyZHM7CiAgICAgdW5zaWduZWQgdG9JbmRleCA9IGZvcndhcmRzOwogICAgIAotICAgIGNv
bnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7Ci0g
ICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8
Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOwor
ICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBzdGFydFZhbHVlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4
KSk7CisgICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIGVuZFZhbHVlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQodG9JbmRl
eCkpOwogICAgIAogICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgewogICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBmcm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsKLSAgICAgICAgc3RhcnRW
YWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwgZnJvbVRyYW5zZm9ybSk7Ci0gICAgICAgIGVu
ZFZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCB0b1RyYW5zZm9ybSk7CisgICAgICAgIHN0
YXJ0VmFsdWUudmFsdWUoKS5hcHBseShib3hTaXplLCBmcm9tVHJhbnNmb3JtKTsKKyAgICAgICAg
ZW5kVmFsdWUudmFsdWUoKS5hcHBseShib3hTaXplLCB0b1RyYW5zZm9ybSk7CiAKICAgICAgICAg
Ly8gSWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0
bHkuIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24KICAgICAgICAgaWYgKCFmcm9t
VHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpIHx8ICF0b1RyYW5zZm9ybS5pc0ludmVydGlibGUoKSkK
QEAgLTIzNTEsMzQgKzIzNTIsMzQgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9y
bUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICB9IGVs
c2UgewogICAgICAgICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9wVHlwZSkp
IHsKICAgICAgICAgICAgIGZsb2F0IGZyb21WYWx1ZTsKLSAgICAgICAgICAgIGdldFRyYW5zZm9y
bUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRy
YW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5z
Zm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpLCB0
cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0Fu
aW0tPnNldEZyb21WYWx1ZShmcm9tVmFsdWUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBm
bG9hdCB0b1ZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRW
YWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6
ZSwgdG9WYWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZh
bHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwg
dG9WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodG9WYWx1ZSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoaXNUcmFuc2Zvcm1UeXBlRmxvYXRQb2ludDNEKHRyYW5zZm9ybU9w
VHlwZSkpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQzRCBmcm9tVmFsdWU7Ci0gICAgICAgICAg
ICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0
aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CisgICAgICAg
ICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUudmFsdWUoKS5hdChmdW5j
dGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCBmcm9tVmFsdWUpOwogICAgICAg
ICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUoZnJvbVZhbHVlKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgRmxvYXRQb2ludDNEIHRvVmFsdWU7Ci0gICAgICAgICAgICBnZXRUcmFuc2Zv
cm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJh
bnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9y
bUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNm
b3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKICAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0
VG9WYWx1ZSh0b1ZhbHVlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGZyb21WYWx1ZTsKLSAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9u
VmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9w
VHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0
aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1P
cFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldEZy
b21WYWx1ZShmcm9tVmFsdWUpOwogCiAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
b1ZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRWYWx1ZS0+
dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdG9W
YWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLnZh
bHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdG9WYWx1
ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodG9WYWx1ZSk7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUg
YW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAogICAgIC8v
IGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5nIGFuaW1hdGlvbiBj
YXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBmdW5jdGlvbi4KLSAg
ICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZv
ckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKTsKKyAgICBjb25zdCBU
aW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlv
blZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbik7CiAgICAgYmFzaWNBbmltLT5zZXRU
aW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgIWZvcndhcmRzKTsKIAogICAgIFBsYXRmb3Jt
Q0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb24gPSBnZXRWYWx1ZUZ1
bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcFR5cGUpOwpAQCAtMjQw
MCwxMiArMjQwMSwxMiBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0
aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICB1bnNpZ25l
ZCBpbmRleCA9IGZvcndhcmRzID8gaSA6ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gaSAtIDEpOwotICAg
ICAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogY3VyVmFsdWUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkpOwot
ICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2FyZHMgPyBjdXJWYWx1ZS0+a2V5VGltZSgpIDog
KDEgLSBjdXJWYWx1ZS0+a2V5VGltZSgpKSk7CisgICAgICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlJiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlJj4odmFsdWVMaXN0LmF0KGluZGV4KSk7CisgICAgICAgIGtleVRpbWVzLmFwcGVuZChm
b3J3YXJkcyA/IGN1clZhbHVlLmtleVRpbWUoKSA6ICgxIC0gY3VyVmFsdWUua2V5VGltZSgpKSk7
CiAKICAgICAgICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7CiAgICAgICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07Ci0gICAgICAgICAgICBjdXJWYWx1ZS0+dmFsdWUoKS0+
YXBwbHkoYm94U2l6ZSwgdHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGN1clZhbHVlLnZhbHVlKCku
YXBwbHkoYm94U2l6ZSwgdHJhbnNmb3JtKTsKIAogICAgICAgICAgICAgLy8gSWYgYW55IG1hdHJp
eCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwgYmFj
ayB0byBzb2Z0d2FyZSBhbmltYXRpb24KICAgICAgICAgICAgIGlmICghdHJhbnNmb3JtLmlzSW52
ZXJ0aWJsZSgpKQpAQCAtMjQxMyw3ICsyNDE0LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNl
dFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEK
IAogICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXhWYWx1ZXMuYXBwZW5kKHRyYW5zZm9y
bSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b24qIHRyYW5zZm9ybU9wID0gY3VyVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpOwor
ICAgICAgICAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCA9IGN1clZh
bHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCk7CiAgICAgICAgICAgICBpZiAoaXNUcmFuc2Zv
cm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9wVHlwZSkpIHsKICAgICAgICAgICAgICAgICBmbG9hdCB2
YWx1ZTsKICAgICAgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHRyYW5zZm9y
bU9wLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKQEAgLTI0MzAsNyArMjQzMSw3
IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMo
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaSA8
ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gMSkpCi0gICAgICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBw
ZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6
IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCBhbmltYXRpb24pKTsKKyAgICAgICAgICAgIHRpbWlu
Z0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJk
cyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKICAg
ICB9CiAgICAgCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlUaW1lcyk7CkBAIC0y
NDYxLDExICsyNDYyLDExIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRp
b25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlCiAgICAgdW5zaWduZWQg
ZnJvbUluZGV4ID0gIWZvcndhcmRzOwogICAgIHVuc2lnbmVkIHRvSW5kZXggPSBmb3J3YXJkczsK
IAotICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKiBmcm9tVmFsdWUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKTsK
LSAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSogdG9WYWx1ZSA9IHN0YXRpY19jYXN0PGNv
bnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKTsKKyAgICBj
b25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSYgZnJvbVZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
RmlsdGVyQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7CisgICAgY29u
c3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIHRvVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0
ZXJBbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdCh0b0luZGV4KSk7CiAKLSAgICBjb25zdCBG
aWx0ZXJPcGVyYXRpb24qIGZyb21PcGVyYXRpb24gPSBmcm9tVmFsdWUtPnZhbHVlKCktPmF0KGZ1
bmN0aW9uSW5kZXgpOwotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogdG9PcGVyYXRpb24gPSB0
b1ZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KTsKKyAgICBjb25zdCBGaWx0ZXJPcGVy
YXRpb24qIGZyb21PcGVyYXRpb24gPSBmcm9tVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4
KTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIHRvT3BlcmF0aW9uID0gdG9WYWx1ZS52YWx1
ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpOwogCiAgICAgUmVmUHRyPERlZmF1bHRGaWx0ZXJPcGVyYXRp
b24+IGRlZmF1bHRGcm9tT3BlcmF0aW9uOwogICAgIFJlZlB0cjxEZWZhdWx0RmlsdGVyT3BlcmF0
aW9uPiBkZWZhdWx0VG9PcGVyYXRpb247CkBAIC0yNDg3LDcgKzI0ODgsNyBAQCBib29sIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiB2YWx1ZQogCiAgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZvciAyLWtleWZy
YW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUgc3RhcnQKICAg
ICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uIEV2ZW4gaW4gdGhlIHJldmVyc2luZyBhbmltYXRp
b24gY2FzZSwgdGhlIGZpcnN0IGtleWZyYW1lIHByb3ZpZGVzIHRoZSB0aW1pbmcgZnVuY3Rpb24u
Ci0gICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbkZvckFuaW1h
dGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKKyAgICBi
YXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMjUwMywxMSArMjUwNCwxMSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0RmlsdGVyQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkg
ewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGZvcndhcmRzID8gaSA6ICh2YWx1ZUxpc3Quc2l6
ZSgpIC0gaSAtIDEpOwotICAgICAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSogY3VyVmFs
dWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5h
dChpbmRleCkpOwotICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2FyZHMgPyBjdXJWYWx1ZS0+
a2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS0+a2V5VGltZSgpKSk7CisgICAgICAgIGNvbnN0IEZp
bHRlckFuaW1hdGlvblZhbHVlJiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFu
aW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KGluZGV4KSk7CisgICAgICAgIGtleVRpbWVzLmFw
cGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLmtleVRpbWUoKSA6ICgxIC0gY3VyVmFsdWUua2V5VGlt
ZSgpKSk7CiAKLSAgICAgICAgaWYgKGN1clZhbHVlLT52YWx1ZSgpLT5vcGVyYXRpb25zKCkuc2l6
ZSgpID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihmdW5jdGlvbkluZGV4KSkKLSAgICAgICAgICAgIHZh
bHVlcy5hcHBlbmQoY3VyVmFsdWUtPnZhbHVlKCktPm9wZXJhdGlvbnMoKVtmdW5jdGlvbkluZGV4
XSk7CisgICAgICAgIGlmIChjdXJWYWx1ZS52YWx1ZSgpLm9wZXJhdGlvbnMoKS5zaXplKCkgPiBz
dGF0aWNfY2FzdDxzaXplX3Q+KGZ1bmN0aW9uSW5kZXgpKQorICAgICAgICAgICAgdmFsdWVzLmFw
cGVuZChjdXJWYWx1ZS52YWx1ZSgpLm9wZXJhdGlvbnMoKVtmdW5jdGlvbkluZGV4XSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKCFkZWZhdWx0T3BlcmF0aW9uKQogICAgICAgICAg
ICAgICAgIGRlZmF1bHRPcGVyYXRpb24gPSBEZWZhdWx0RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUo
ZmlsdGVyT3ApOwpAQCAtMjUxNSw3ICsyNTE2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNl
dEZpbHRlckFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAg
ICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksIGFu
aW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5j
dGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQo
aW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwogICAgIH0KICAgICAKICAgICBrZXlmcmFtZUFuaW0t
PnNldEtleVRpbWVzKGtleVRpbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggMDJjMDIyN2U5OGM2YzUyZTg5
NDNhZGFiZGQ4ZTBjOTRhNjE0YTUyMC4uMDljY2NlNDUxZjc2MTUyNzczNjMzY2FlYTA5MTQ2OTRl
NjFkZWQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTIwNSw3ICsyMDUsNyBAQCBwcml2YXRlOgogICAgIFBh
c3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29u
c3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7CiAgICAgdm9pZCBz
ZXR1cEFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgY29uc3QgQW5pbWF0aW9uKiwgYm9v
bCBhZGRpdGl2ZSk7CiAgICAgCi0gICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqLCBjb25zdCBBbmltYXRp
b24qKTsKKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwogICAgIAog
ICAgIGJvb2wgc2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0Jiwg
Y29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOwogICAgIGJvb2wgc2V0QW5p
bWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9u
KiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCBiN2E1NDdkMjAwOGE0ZjRhOWJh
MWQ1MDc0NzlkOTA5NzFiNjFlMDJjLi5mZjMwYTVlOGE0NGIwYzZjZDU3MTdmYTNlYzRlNmViZDMz
YzQwZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcApAQCAtNzEyLDggKzcxMiw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpzZXRMYXllckFuaW1hdGlvbnNJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIq
IGxhCiAgICAgICAgIGlmIChrZXlmcmFtZXMucHJvcGVydHkoKSAhPSBBbmltYXRlZFByb3BlcnR5
V2Via2l0RmlsdGVyKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwga2V5ZnJhbWVzLnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICBjb25zdCBG
aWx0ZXJBbmltYXRpb25WYWx1ZSogZmlsdGVyVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0
ZXJBbmltYXRpb25WYWx1ZSo+KGtleWZyYW1lcy5hdChpKSk7Ci0gICAgICAgICAgICBpbmplY3RD
YWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcygqZmlsdGVyVmFsdWUtPnZhbHVlKCkpOworICAgICAg
ICAgICAgY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIGZpbHRlclZhbHVlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPihrZXlmcmFtZXMuYXQoaSkpOworICAgICAg
ICAgICAgaW5qZWN0Q2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoZmlsdGVyVmFsdWUudmFsdWUo
KSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMWRlZmI1MmIzNGFhODM5YTk0MzNmZmI0
MDAzZjExNTQxZjkwMWU4OS4uNjQxOWUwY2JiZjFkOWZiZTA2MDIwMDhmN2Y2ODUxOTZjYTk4Mzhj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKQEAgLTIxMDcsMTQgKzIxMDcsMTQgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0
QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmltYXRpb24qIGFuaW0KICAgICAg
ICAgCiAgICAgICAgIGJvb2wgaXNGaXJzdE9yTGFzdEtleWZyYW1lID0ga2V5ID09IDAgfHwga2V5
ID09IDE7CiAgICAgICAgIGlmICgoaGFzVHJhbnNmb3JtICYmIGlzRmlyc3RPckxhc3RLZXlmcmFt
ZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm0pKQotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChhZG9wdFB0cihu
ZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoa2V5LCAmKGtleWZyYW1lU3R5bGUtPnRyYW5zZm9y
bSgpKSwgdGYpKSk7Ci0gICAgICAgIAorICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2Vy
dChUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleSwga2V5ZnJhbWVTdHlsZS0+dHJh
bnNmb3JtKCksIHRmKSk7CisKICAgICAgICAgaWYgKChoYXNPcGFjaXR5ICYmIGlzRmlyc3RPckxh
c3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVy
dHlPcGFjaXR5KSkKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5l
dyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleSwga2V5ZnJhbWVTdHlsZS0+b3BhY2l0eSgpLCB0Zikp
KTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KEZsb2F0QW5pbWF0aW9uVmFsdWU6
OmNyZWF0ZShrZXksIGtleWZyYW1lU3R5bGUtPm9wYWNpdHkoKSwgdGYpKTsKIAogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKICAgICAgICAgaWYgKChoYXNGaWx0ZXIgJiYgaXNGaXJzdE9yTGFzdEtl
eWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdEZpbHRlcikpCi0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5l
dyBGaWx0ZXJBbmltYXRpb25WYWx1ZShrZXksICYoa2V5ZnJhbWVTdHlsZS0+ZmlsdGVyKCkpLCB0
ZikpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoRmlsdGVyQW5pbWF0aW9uVmFs
dWU6OmNyZWF0ZShrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOwogI2VuZGlmCiAg
ICAgfQogCkBAIC0yMTU0LDggKzIxNTQsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3Rh
cnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAg
ICAgICBjb25zdCBBbmltYXRpb24qIG9wYWNpdHlBbmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZv
clByb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSk7CiAgICAgICAgIGlmIChvcGFjaXR5QW5pbSAm
JiAhb3BhY2l0eUFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBL
ZXlmcmFtZVZhbHVlTGlzdCBvcGFjaXR5VmVjdG9yKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KTsK
LSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1h
dGlvblZhbHVlKDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKSk7
Ci0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcgRmxvYXRBbmlt
YXRpb25WYWx1ZSgxLCBjb21wb3NpdGluZ09wYWNpdHkodG9TdHlsZS0+b3BhY2l0eSgpKSkpKTsK
KyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KEZsb2F0QW5pbWF0aW9uVmFsdWU6OmNy
ZWF0ZSgwLCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7CisgICAg
ICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUo
MSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkpKTsKICAgICAgICAgICAg
IC8vIFRoZSBib3hTaXplIHBhcmFtIGlzIG9ubHkgdXNlZCBmb3IgdHJhbnNmb3JtIGFuaW1hdGlv
bnMgKHdoaWNoIGNhbiBvbmx5IHJ1biBvbiBSZW5kZXJCb3hlcyksIHNvIHdlIHBhc3MgYW4gZW1w
dHkgc2l6ZSBoZXJlLgogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0
aW9uKG9wYWNpdHlWZWN0b3IsIEludFNpemUoKSwgb3BhY2l0eUFuaW0sIEdyYXBoaWNzTGF5ZXI6
OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KSwgdGlt
ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVj
dCBvcGFjaXR5IGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRo
ZSBmaW5hbCBvcGFjaXR5LgpAQCAtMjE2OSw4ICsyMTY5LDggQEAgYm9vbCBSZW5kZXJMYXllckJh
Y2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBw
cm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiB0cmFuc2Zvcm1BbmltID0gdG9TdHlsZS0+
dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKICAgICAg
ICAgaWYgKHRyYW5zZm9ybUFuaW0gJiYgIXRyYW5zZm9ybUFuaW0tPmlzRW1wdHlPclplcm9EdXJh
dGlvbigpKSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCB0cmFuc2Zvcm1WZWN0b3Io
QW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1W
ZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgwLCAmZnJv
bVN0eWxlLT50cmFuc2Zvcm0oKSkpKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNl
cnQoYWRvcHRQdHIobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDEsICZ0b1N0eWxlLT50cmFu
c2Zvcm0oKSkpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoVHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgwLCBmcm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7CisgICAg
ICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpj
cmVhdGUoMSwgdG9TdHlsZS0+dHJhbnNmb3JtKCkpKTsKICAgICAgICAgICAgIGlmIChtX2dyYXBo
aWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFuc2Zvcm1WZWN0b3IsIHRvUmVuZGVyQm94KHJlbmRl
cmVyKCkpLT5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkuc2l6ZSgpLCB0cmFuc2Zvcm1Bbmlt
LCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3Bl
cnR5V2Via2l0VHJhbnNmb3JtKSwgdGltZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBU
byBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCB0cmFuc2Zvcm0gaXMgdmlzaWJsZSB3aGVuIHRoZSBh
bmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIHRyYW5zZm9ybS4KICAgICAgICAgICAg
ICAgICB1cGRhdGVUcmFuc2Zvcm0odG9TdHlsZSk7CkBAIC0yMTg0LDggKzIxODQsOCBAQCBib29s
IFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBD
U1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIGZpbHRlckFuaW0g
PSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRGaWx0ZXIp
OwogICAgICAgICBpZiAoZmlsdGVyQW5pbSAmJiAhZmlsdGVyQW5pbS0+aXNFbXB0eU9yWmVyb0R1
cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IGZpbHRlclZlY3RvcihB
bmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKTsKLSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5p
bnNlcnQoYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKDAsICZmcm9tU3R5bGUtPmZp
bHRlcigpKSkpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcg
RmlsdGVyQW5pbWF0aW9uVmFsdWUoMSwgJnRvU3R5bGUtPmZpbHRlcigpKSkpOworICAgICAgICAg
ICAgZmlsdGVyVmVjdG9yLmluc2VydChGaWx0ZXJBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKDAsIGZy
b21TdHlsZS0+ZmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoRmls
dGVyQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgxLCB0b1N0eWxlLT5maWx0ZXIoKSkpOwogICAgICAg
ICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKGZpbHRlclZlY3RvciwgSW50
U2l6ZSgpLCBmaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNp
dGlvbihBbmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKSwgdGltZU9mZnNldCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBmaWx0ZXIgaXMgdmlzaWJs
ZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIGZpbHRlci4KICAg
ICAgICAgICAgICAgICB1cGRhdGVGaWx0ZXJzKHRvU3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0Fy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNDExMDczMDg5
Y2M1NTNmYzc5MTQ4MTlhNjBlZGUxNzk2NGNhYTc5ZS4uM2NhZjU3Njc2NzhkZWUyZTdlMzcwNGIw
MGZhYmM5MTc3OTBhZjFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCkBAIC02NDUsMTkgKzY0NSwxOSBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbj46OmVuY29kZShBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIsIGNvbgogICAgIGVuY29kZXIuZW5jb2RlRW51bShrZXlmcmFtZXMucHJvcGVydHko
KSk7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa2V5ZnJhbWVzLnNpemUo
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlmcmFtZXMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIHZhbHVlID0ga2V5ZnJhbWVzLmF0KGkpOwot
ICAgICAgICBlbmNvZGVyIDw8IHZhbHVlLT5rZXlUaW1lKCk7Ci0gICAgICAgIGVuY29kZVRpbWlu
Z0Z1bmN0aW9uKGVuY29kZXIsIHZhbHVlLT50aW1pbmdGdW5jdGlvbigpKTsKKyAgICAgICAgY29u
c3QgQW5pbWF0aW9uVmFsdWUmIHZhbHVlID0ga2V5ZnJhbWVzLmF0KGkpOworICAgICAgICBlbmNv
ZGVyIDw8IHZhbHVlLmtleVRpbWUoKTsKKyAgICAgICAgZW5jb2RlVGltaW5nRnVuY3Rpb24oZW5j
b2RlciwgdmFsdWUudGltaW5nRnVuY3Rpb24oKSk7CiAgICAgICAgIHN3aXRjaCAoa2V5ZnJhbWVz
LnByb3BlcnR5KCkpIHsKICAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eToKLSAg
ICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1
ZSo+KHZhbHVlKS0+dmFsdWUoKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSY+KHZhbHVlKS52YWx1ZSgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKLSAg
ICAgICAgICAgIGVuY29kZXIgPDwgKnN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlKj4odmFsdWUpLT52YWx1ZSgpOworICAgICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZhbHVlKS52YWx1ZSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgICAgICBjYXNlIEFu
aW1hdGVkUHJvcGVydHlXZWJraXRGaWx0ZXI6Ci0gICAgICAgICAgICBlbmNvZGVyIDw8ICpzdGF0
aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlKS0+dmFsdWUoKTsKKyAg
ICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFs
dWUmPih2YWx1ZSkudmFsdWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgICAg
IGRlZmF1bHQ6CkBAIC03MzMsMTQgKzczMywxNCBAQCBib29sIEFyZ3VtZW50Q29kZXI8R3JhcGhp
Y3NMYXllckFuaW1hdGlvbj46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEdyYQog
ICAgICAgICAgICAgZmxvYXQgdmFsdWU7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBrZXlm
cmFtZXMuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHZh
bHVlLCB0aW1pbmdGdW5jdGlvbikpKTsKKyAgICAgICAgICAgIGtleWZyYW1lcy5pbnNlcnQoRmxv
YXRBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBbmltYXRlZFBy
b3BlcnR5V2Via2l0VHJhbnNmb3JtOiB7CiAgICAgICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25z
IHRyYW5zZm9ybTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHJhbnNmb3JtKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBrZXlmcmFtZXMuaW5z
ZXJ0KGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShrZXlUaW1lLCAmdHJhbnNm
b3JtLCB0aW1pbmdGdW5jdGlvbikpKTsKKyAgICAgICAgICAgIGtleWZyYW1lcy5pbnNlcnQoVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXlUaW1lLCB0cmFuc2Zvcm0sIHRpbWluZ0Z1
bmN0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogI2lmIEVOQUJMRShDU1Nf
RklMVEVSUykKQEAgLTc0OCw3ICs3NDgsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8R3JhcGhpY3NM
YXllckFuaW1hdGlvbj46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEdyYQogICAg
ICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXI7CiAgICAgICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGZpbHRlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAga2V5ZnJhbWVzLmluc2VydChhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUo
a2V5VGltZSwgJmZpbHRlciwgdGltaW5nRnVuY3Rpb24pKSk7CisgICAgICAgICAgICBrZXlmcmFt
ZXMuaW5zZXJ0KEZpbHRlckFuaW1hdGlvblZhbHVlOjpjcmVhdGUoa2V5VGltZSwgZmlsdGVyLCB0
aW1pbmdGdW5jdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200964</attachid>
            <date>2013-05-07 13:33:38 -0700</date>
            <delta_ts>2013-05-07 14:24:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115738-20130507133244.patch</filename>
            <type>text/plain</type>
            <size>50490</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmYzMGI4M2ExOTVhN2U4
NzNjZWRlNzE0NzE2ODkwMjRlMDdjZWZlYS4uNGY1NGQyMWI2NTUzOWMzNWM4NGY4YWVlMDQxNzMy
ZThiOTUzN2FlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTA1LTA3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgS2V5
ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN0YXRpYyBjcmVhdGUoKSBmdW5jdGlvbnMg
dG8gdGhlIEFuaW1hdGlvblZhbHVlIHN1YmNsYXNzZXMsIGFuZCBjaGFuZ2UgYSBidW5jaCBvZiBw
YXJhbWV0ZXJzCisgICAgICAgIGFuZCByZXR1cm4gdmFsdWVzIHRoYXQgY2FuIG5ldmVyIGJlIG51
bGwgZnJvbSBwb2ludGVyIHR5cGVzIHRvIHJlZmVyZW5jZSB0eXBlcyB0byBiZXR0ZXIgaW5kaWNh
dGUgdGhpcy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJPcGVyYXRpb25zQXQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dmFsaWRhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdGlvbnNBdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjp2YWxpZGF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKEFuaW1hdGlvblZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblZhbHVlOjpBbmltYXRpb25WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoRmxvYXRB
bmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpG
bG9hdEFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OnZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckFuaW1hdGlvblZhbHVlOjp2YWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZTo6RmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAg
ICAgICAoRmlsdGVyQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVW
YWx1ZUxpc3Q6On5LZXlmcmFtZVZhbHVlTGlzdCk6CisgICAgICAgIChLZXlmcmFtZVZhbHVlTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6YXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVGaWx0ZXJBbmltYXRp
b25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRp
b25FbmRwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRGaWx0
ZXJBbmltYXRpb25LZXlmcmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAoR3JhcGhpY3NMYXllckNBKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorCiAyMDEzLTA1LTA2ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBhbiAnaXNSZWFkT25seScgbWVt
YmVyIHRvIElETCBwYXJzZSB0cmVlIHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUzNjgxNDU2NGY4
NmRjYjQ3NjViNzFmMzNiZDgwYzA1MTVjMTVlNTcuLjBhNjI4YzQ2NWRkNTY1YTI1NDk0MTNmMzY0
MDI3MTJlN2UyOTI2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wNS0wNyAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVw
IEtleWZyYW1lVmFsdWVMaXN0IGFuZCByZWxhdGVkIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTczOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBmb3IgV2ViQ29yZSBjaGFuZ2Vz
LgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKwog
MjAxMy0wNS0wNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHNvbWUgdW5uZWNlc3Nhcnkgc29mdCBsaW5raW5nIGluIE5ldHdvcmtQcm9jZXNzLiAo
VGFrZSAyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcAppbmRleCBjNzhiNWJlYjI2OGMxOGQyZmJlZTRmZjBlYWNmODA3MTQzYWNiZjA3
Li4wMWI2YTNmZDdhMmIwYTFmZmE0ZDZjZjU0NWFhZjBjNmU1MTdhODJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtNDA5
LDkgKzQwOSw5IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6ZGlzdHJpYnV0ZU9wYWNpdHkoZmxvYXQg
YWNjdW11bGF0ZWRPcGFjaXR5KQogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotc3RhdGlj
IGlubGluZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQorc3RhdGljIGlubGlu
ZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25zQXQoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkp
LT52YWx1ZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSY+KHZhbHVlTGlzdC5hdChpbmRleCkpLnZhbHVlKCk7CiB9CiAKIGludCBHcmFwaGljc0xh
eWVyOjp2YWxpZGF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZh
bHVlTGlzdCkKQEAgLTQyNCwyMyArNDI0LDIzIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCkKICAg
ICAvLyBFbXB0eSBmaWx0ZXJzIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBub24t
ZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZQogICAgIHNpemVfdCBmaXJzdEluZGV4ID0gMDsK
ICAgICBmb3IgKCA7IGZpcnN0SW5kZXggPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2ZpcnN0SW5kZXgp
IHsKLSAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGZpcnN0SW5kZXgp
LT5vcGVyYXRpb25zKCkuc2l6ZSgpID4gMCkKKyAgICAgICAgaWYgKCFmaWx0ZXJPcGVyYXRpb25z
QXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS5vcGVyYXRpb25zKCkuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKGZpcnN0SW5kZXggPj0gdmFsdWVMaXN0LnNp
emUoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyog
Zmlyc3RWYWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KTsKKyAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaXJzdFZhbCA9IGZpbHRlck9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGZpcnN0SW5kZXgpOwogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdElu
ZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zKiB2YWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKKyAg
ICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdmFsID0gZmlsdGVyT3BlcmF0aW9uc0F0KHZh
bHVlTGlzdCwgaSk7CiAgICAgICAgIAogICAgICAgICAvLyBBbiBlbXRweSBmaWx0ZXIgbGlzdCBt
YXRjaGVzIGFueXRoaW5nLgotICAgICAgICBpZiAodmFsLT5vcGVyYXRpb25zKCkuaXNFbXB0eSgp
KQorICAgICAgICBpZiAodmFsLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRj
aCgqdmFsKSkKKyAgICAgICAgaWYgKCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAg
ICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgCkBAIC00NTIsOSArNDUyLDkgQEAgaW50
IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWVMaXN0KQogLy8gVGhlIGhhc0JpZ1JvdGF0aW9uIGZsYWcgd2lsbCBhbHdh
eXMgcmV0dXJuIGZhbHNlIGlmIGlzVmFsaWQgaXMgZmFsc2UuIE90aGVyd2lzZSBoYXNCaWdSb3Rh
dGlvbiBpcyAKIC8vIHRydWUgaWYgdGhlIHJvdGF0aW9uIGJldHdlZW4gYW55IHR3byBrZXlmcmFt
ZXMgaXMgPj0gMTgwIGRlZ3JlZXMuCiAKLXN0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9ucyogb3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3Qs
IHNpemVfdCBpbmRleCkKK3N0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYg
b3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIHNpemVfdCBp
bmRleCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUqPih2YWx1ZUxpc3QuYXQoaW5kZXgpKS0+dmFsdWUoKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoaW5kZXgp
KS52YWx1ZSgpOwogfQogCiBpbnQgR3JhcGhpY3NMYXllcjo6dmFsaWRhdGVUcmFuc2Zvcm1PcGVy
YXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGJvb2wmIGhhc0JpZ1Jv
dGF0aW9uKQpAQCAtNDY5LDI0ICs0NjksMjQgQEAgaW50IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRl
VHJhbnNmb3JtT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXMKICAg
ICAvLyBFbXB0eSB0cmFuc2Zvcm1zIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBu
b24tZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZS4KICAgICBzaXplX3QgZmlyc3RJbmRleCA9
IDA7CiAgICAgZm9yICggOyBmaXJzdEluZGV4IDwgdmFsdWVMaXN0LnNpemUoKTsgKytmaXJzdElu
ZGV4KSB7Ci0gICAgICAgIGlmIChvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS0+
b3BlcmF0aW9ucygpLnNpemUoKSA+IDApCisgICAgICAgIGlmICghb3BlcmF0aW9uc0F0KHZhbHVl
TGlzdCwgZmlyc3RJbmRleCkub3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAKICAgICBpZiAoZmlyc3RJbmRleCA+PSB2YWx1ZUxpc3Quc2l6ZSgp
KQogICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIAotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbnMqIGZpcnN0VmFsID0gb3BlcmF0aW9uc0F0KHZhbHVlTGlzdCwgZmlyc3RJbmRleCk7Cisg
ICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZmlyc3RWYWwgPSBvcGVyYXRpb25zQXQodmFs
dWVMaXN0LCBmaXJzdEluZGV4KTsKICAgICAKICAgICAvLyBTZWUgaWYgdGhlIGtleWZyYW1lcyBh
cmUgdmFsaWQuCiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0SW5kZXggKyAxOyBpIDwgdmFsdWVM
aXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZh
bCA9IG9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGkpOworICAgICAgICBjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKICAgICAgICAgCi0g
ICAgICAgIC8vIEFuIGVtdHB5IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCi0gICAg
ICAgIGlmICh2YWwtPm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCisgICAgICAgIC8vIEFuIGVtcHR5
IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCisgICAgICAgIGlmICh2YWwub3BlcmF0
aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0g
ICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRjaCgqdmFsKSkKKyAgICAgICAgaWYg
KCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAgICAgICAgICAgIHJldHVybiAtMTsK
ICAgICB9CiAKQEAgLTQ5NCwyMiArNDk0LDIyIEBAIGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzCiAg
ICAgZG91YmxlIGxhc3RSb3RBbmdsZSA9IDAuMDsKICAgICBkb3VibGUgbWF4Um90QW5nbGUgPSAt
MS4wOwogICAgICAgICAKLSAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGZpcnN0VmFsLT5vcGVy
YXRpb25zKCkuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHR5cGUgPSBmaXJzdFZhbC0+b3BlcmF0aW9ucygpLmF0KGopLT5nZXRPcGVyYXRp
b25UeXBlKCk7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBmaXJzdFZhbC5vcGVyYXRpb25z
KCkuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHR5cGUgPSBmaXJzdFZhbC5vcGVyYXRpb25zKCkuYXQoaiktPmdldE9wZXJhdGlvblR5cGUo
KTsKICAgICAgICAgCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSByb3RhdGlvbiBlbnRyeSwgd2Ug
bmVlZCB0byBzZWUgaWYgYW55IGFuZ2xlIGRpZmZlcmVuY2VzIGFyZSA+PSAxODAgZGVnCiAgICAg
ICAgIGlmICh0eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1ggfHwKICAgICAgICAg
ICAgIHR5cGUgPT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWSB8fAogICAgICAgICAgICAg
dHlwZSA9PSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9aIHx8CiAgICAgICAgICAgICB0eXBl
ID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEKSB7Ci0gICAgICAgICAgICBsYXN0Um90
QW5nbGUgPSBzdGF0aWNfY2FzdDxSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihmaXJzdFZhbC0+
b3BlcmF0aW9ucygpLmF0KGopLmdldCgpKS0+YW5nbGUoKTsKKyAgICAgICAgICAgIGxhc3RSb3RB
bmdsZSA9IHN0YXRpY19jYXN0PFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KGZpcnN0VmFsLm9w
ZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChtYXhSb3RBbmdsZSA8IDApCiAgICAgICAgICAgICAgICAgbWF4Um90QW5nbGUgPSBm
YWJzKGxhc3RSb3RBbmdsZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBmaXJzdEluZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZhbCA9IG9wZXJhdGlvbnNBdCh2
YWx1ZUxpc3QsIGkpOwotICAgICAgICAgICAgICAgIGRvdWJsZSByb3RBbmdsZSA9IHZhbC0+b3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLT5vcGVyYXRpb25zKCkuYXQoaikuZ2V0KCkpLT5hbmdsZSgpKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQo
dmFsdWVMaXN0LCBpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgcm90QW5nbGUgPSB2YWwub3Bl
cmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odmFsLm9wZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCkpOwogICAgICAg
ICAgICAgICAgIGRvdWJsZSBkaWZmQW5nbGUgPSBmYWJzKHJvdEFuZ2xlIC0gbGFzdFJvdEFuZ2xl
KTsKICAgICAgICAgICAgICAgICBpZiAoZGlmZkFuZ2xlID4gbWF4Um90QW5nbGUpCiAgICAgICAg
ICAgICAgICAgICAgIG1heFJvdEFuZ2xlID0gZGlmZkFuZ2xlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDEzMTFmYjZlYmM3ZDg0
ZTFhODIxMWQxYjc0ODk2YmUwYjQ0ZTU1MTUuLjE2ZGMwN2ZlYmI3YzhkODJlN2Q5MjdkNzYzYTdl
MDE1YmE4NzlmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTcyLDE4ICs3MiwxOSBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKIGNsYXNzIEFuaW1hdGlvblZhbHVlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBQ
YXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCi0gICAgICAgIDog
bV9rZXlUaW1lKGtleVRpbWUpCi0gICAgICAgICwgbV90aW1pbmdGdW5jdGlvbih0aW1pbmdGdW5j
dGlvbikKLSAgICB7Ci0gICAgfQotICAgIAogICAgIHZpcnR1YWwgfkFuaW1hdGlvblZhbHVlKCkg
eyB9CiAKICAgICBmbG9hdCBrZXlUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9rZXlUaW1lOyB9CiAg
ICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90aW1pbmdGdW5jdGlvbi5nZXQoKTsgfQogICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRp
b25WYWx1ZT4gY2xvbmUoKSBjb25zdCA9IDA7CiAKK3Byb3RlY3RlZDoKKyAgICBBbmltYXRpb25W
YWx1ZShmbG9hdCBrZXlUaW1lLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5j
dGlvbiA9IDApCisgICAgICAgIDogbV9rZXlUaW1lKGtleVRpbWUpCisgICAgICAgICwgbV90aW1p
bmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbikKKyAgICB7CisgICAgfQorCiBwcml2YXRlOgogICAg
IGZsb2F0IG1fa2V5VGltZTsKICAgICBSZWZQdHI8VGltaW5nRnVuY3Rpb24+IG1fdGltaW5nRnVu
Y3Rpb247CkBAIC05MywxNiArOTQsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUg
bW92ZWQgdG8gaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIEZsb2F0QW5pbWF0aW9uVmFsdWUg
OiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogcHVibGljOgotICAgIEZsb2F0QW5pbWF0aW9uVmFs
dWUoZmxvYXQga2V5VGltZSwgZmxvYXQgdmFsdWUsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+
IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0
aW1pbmdGdW5jdGlvbikKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHN0YXRpYyBQYXNz
T3duUHRyPEZsb2F0QW5pbWF0aW9uVmFsdWU+IGNyZWF0ZShmbG9hdCBrZXlUaW1lLCBmbG9hdCB2
YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24gPSAwKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093
blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKCp0aGlzKSk7CiAgICAg
fQotICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgqdGhpcykp
OyB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJp
dmF0ZToKKyAgICBGbG9hdEFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRpbWUsIGZsb2F0IHZhbHVl
LCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgOiBB
bmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgLCBtX3ZhbHVl
KHZhbHVlKQorICAgIHsKKyAgICB9CisKICAgICBmbG9hdCBtX3ZhbHVlOwogfTsKIApAQCAtMTEw
LDE3ICsxMjAsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRz
IG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGlj
IEFuaW1hdGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiB2YWx1ZSA9
IDAsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAg
ICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMg
UGFzc093blB0cjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUs
IGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlv
bikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xv
bmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKLSAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAg
ICAgbV92YWx1ZSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSgqdGhpcykpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQdHIo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICBj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7
IH0KIAogcHJpdmF0ZToKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1l
LCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5j
dGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFsdWUoa2V5VGltZSwg
dGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQor
CiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKIApAQCAtMTI5LDE3ICsxNDcs
MjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRzIG93biBoZWFk
ZXIgZmlsZS4KIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZh
bHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBGaWx0ZXJBbmltYXRpb25WYWx1ZShmbG9hdCBr
ZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWx1ZSA9IDAsIFBhc3NSZWZQdHI8VGlt
aW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1
ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMgUGFzc093blB0cjxGaWx0ZXJB
bmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUsIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDAp
CiAgICAgewotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICBtX3ZhbHVlID0gKnZhbHVl
OworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKGtleVRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYWRvcHRQ
dHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAotICAgIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUoKnRo
aXMpKTsKKyAgICB9CisKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKKyAgICBGaWx0ZXJBbmltYXRpb25WYWx1
ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1JlZlB0
cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9uVmFs
dWUoa2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAg
ICB7CisgICAgfQorCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKICNlbmRpZgpA
QCAtMTYxLDYgKzE4NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQo
b3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOwogICAgIH0KIAorICAgIH5LZXlmcmFtZVZhbHVl
TGlzdCgpCisgICAgeworICAgIH0KKwogICAgIEtleWZyYW1lVmFsdWVMaXN0JiBvcGVyYXRvcj0o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKICAgICAgICAgS2V5ZnJhbWVW
YWx1ZUxpc3QgY29weShvdGhlcik7CkBAIC0xNzcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIEFu
aW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHk7IH0K
IAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOyB9Ci0g
ICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlcy5hdChpKS5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhdChzaXplX3Qg
aSkgY29uc3QgeyByZXR1cm4gKm1fdmFsdWVzLmF0KGkpOyB9CiAgICAgCiAgICAgLy8gSW5zZXJ0
LCBzb3J0ZWQgYnkga2V5VGltZS4KICAgICB2b2lkIGluc2VydChQYXNzT3duUHRyPGNvbnN0IEFu
aW1hdGlvblZhbHVlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCmluZGV4IGQwMjY1OThiMDI2ZmJk
MDA1NGNlYmM2MzcwZjFhZmVlMzQ0OWNjYjUuLjIwNmQ3MDdiM2FkMTUwMWFlNTFiMzFkNTYyNDgw
ZGJhNjJlMDVmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCkBAIC0zOSwyNyArMzksMjcgQEAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRGdW5jKEZpbHRl
ck9wZXJhdGlvbiogZnJvbU9wLCBGaWwKIH0KIAogCi1zdGF0aWMgRmlsdGVyT3BlcmF0aW9ucyBh
cHBseUZpbHRlckFuaW1hdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmcm9tLCBjb25zdCBG
aWx0ZXJPcGVyYXRpb25zKiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBib3hT
aXplKQorc3RhdGljIEZpbHRlck9wZXJhdGlvbnMgYXBwbHlGaWx0ZXJBbmltYXRpb24oY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZnJvbSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdG8sIGRvdWJs
ZSBwcm9ncmVzcywgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKIHsKICAgICAvLyBGaXJzdCBmcmFt
ZSBvZiBhbiBhbmltYXRpb24uCiAgICAgaWYgKCFwcm9ncmVzcykKLSAgICAgICAgcmV0dXJuICpm
cm9tOworICAgICAgICByZXR1cm4gZnJvbTsKIAogICAgIC8vIExhc3QgZnJhbWUgb2YgYW4gYW5p
bWF0aW9uLgogICAgIGlmIChwcm9ncmVzcyA9PSAxKQotICAgICAgICByZXR1cm4gKnRvOworICAg
ICAgICByZXR1cm4gdG87CiAKLSAgICBpZiAoIWZyb20tPmlzRW1wdHkoKSAmJiAhdG8tPmlzRW1w
dHkoKSAmJiAhZnJvbS0+b3BlcmF0aW9uc01hdGNoKCp0bykpCi0gICAgICAgIHJldHVybiAqdG87
CisgICAgaWYgKCFmcm9tLmlzRW1wdHkoKSAmJiAhdG8uaXNFbXB0eSgpICYmICFmcm9tLm9wZXJh
dGlvbnNNYXRjaCh0bykpCisgICAgICAgIHJldHVybiB0bzsKIAogICAgIEZpbHRlck9wZXJhdGlv
bnMgcmVzdWx0OwogCi0gICAgc2l6ZV90IGZyb21TaXplID0gZnJvbS0+b3BlcmF0aW9ucygpLnNp
emUoKTsKLSAgICBzaXplX3QgdG9TaXplID0gdG8tPm9wZXJhdGlvbnMoKS5zaXplKCk7CisgICAg
c2l6ZV90IGZyb21TaXplID0gZnJvbS5vcGVyYXRpb25zKCkuc2l6ZSgpOworICAgIHNpemVfdCB0
b1NpemUgPSB0by5vcGVyYXRpb25zKCkuc2l6ZSgpOwogICAgIHNpemVfdCBzaXplID0gc3RkOjpt
YXgoZnJvbVNpemUsIHRvU2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKLSAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZnJvbU9wID0gKGkgPCBmcm9t
U2l6ZSkgPyBmcm9tLT5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwotICAgICAgICBSZWZQdHI8
RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8tPm9wZXJhdGlvbnMoKVtp
XS5nZXQoKSA6IDA7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZyb21PcCA9IChp
IDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOworICAgICAgICBS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8ub3BlcmF0aW9u
cygpW2ldLmdldCgpIDogMDsKICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRl
ZE9wID0gdG9PcCA/IGJsZW5kRnVuYyhmcm9tT3AuZ2V0KCksIHRvT3AuZ2V0KCksIHByb2dyZXNz
LCBib3hTaXplKSA6IChmcm9tT3AgPyBibGVuZEZ1bmMoMCwgZnJvbU9wLmdldCgpLCBwcm9ncmVz
cywgYm94U2l6ZSwgdHJ1ZSkgOiAwKTsKICAgICAgICAgaWYgKGJsZW5kZWRPcCkKICAgICAgICAg
ICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7CkBAIC0xNTUsNTggKzE1
NSw1OCBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVuY3Rpb24oY29uc3QgVGlt
aW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbAogICAgIHJldHVybiBwcm9ncmVzczsKIH0K
IAotc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMq
IHRvLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGJvb2wgbGlzdHNN
YXRjaCkKK3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcHBseVRyYW5zZm9ybUFuaW1hdGlv
bihjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b25zJiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBib29sIGxp
c3RzTWF0Y2gpCiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OwogCiAgICAgLy8g
Rmlyc3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmICghcHJvZ3Jlc3MpIHsKLSAgICAg
ICAgZnJvbS0+YXBwbHkoYm94U2l6ZSwgbWF0cml4KTsKKyAgICAgICAgZnJvbS5hcHBseShib3hT
aXplLCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIExh
c3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmIChwcm9ncmVzcyA9PSAxKSB7Ci0gICAg
ICAgIHRvLT5hcHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICB0by5hcHBseShib3hTaXpl
LCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIElmIHdl
IGhhdmUgaW5jb21wYXRpYmxlIG9wZXJhdGlvbiBsaXN0cywgd2UgYmxlbmQgdGhlIHJlc3VsdGlu
ZyBtYXRyaWNlcy4KICAgICBpZiAoIWxpc3RzTWF0Y2gpIHsKICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggZnJvbU1hdHJpeDsKLSAgICAgICAgdG8tPmFwcGx5KGJveFNpemUsIG1hdHJpeCk7
Ci0gICAgICAgIGZyb20tPmFwcGx5KGJveFNpemUsIGZyb21NYXRyaXgpOworICAgICAgICB0by5h
cHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICBmcm9tLmFwcGx5KGJveFNpemUsIGZyb21N
YXRyaXgpOwogICAgICAgICBtYXRyaXguYmxlbmQoZnJvbU1hdHJpeCwgcHJvZ3Jlc3MpOwogICAg
ICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIEFuaW1hdGlvbiB0byAiLXdlYmtp
dC10cmFuc2Zvcm06IG5vbmUiLgotICAgIGlmICghdG8tPnNpemUoKSkgewotICAgICAgICBUcmFu
c2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQoKmZyb20pOworICAgIGlmICghdG8uc2l6ZSgpKSB7Cisg
ICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRlZChmcm9tKTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBibGVuZGVkLm9wZXJhdGlvbnMoKS5zaXplKCk7ICsraSkKICAgICAg
ICAgICAgIGJsZW5kZWQub3BlcmF0aW9ucygpW2ldLT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkt
PmFwcGx5KG1hdHJpeCwgYm94U2l6ZSk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQog
CiAgICAgLy8gQW5pbWF0aW9uIGZyb20gIi13ZWJraXQtdHJhbnNmb3JtOiBub25lIi4KLSAgICBp
ZiAoIWZyb20tPnNpemUoKSkgewotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQo
KnRvKTsKKyAgICBpZiAoIWZyb20uc2l6ZSgpKSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlv
bnMgYmxlbmRlZCh0byk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxlbmRlZC5v
cGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMo
KVtpXS0+YmxlbmQoMCwgMS4gLSBwcm9ncmVzcywgdHJ1ZSktPmFwcGx5KG1hdHJpeCwgYm94U2l6
ZSk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQogCiAgICAgLy8gTm9ybWFsIGFuaW1h
dGlvbiB3aXRoIGEgbWF0Y2hpbmcgb3BlcmF0aW9uIGxpc3QuCi0gICAgVHJhbnNmb3JtT3BlcmF0
aW9ucyBibGVuZGVkKCp0byk7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZGVkKHRvKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsZW5kZWQub3BlcmF0aW9ucygpLnNpemUoKTsg
KytpKQotICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS0+YXQoaSks
IHByb2dyZXNzLCAhZnJvbS0+YXQoaSkpLT5hcHBseShtYXRyaXgsIGJveFNpemUpOworICAgICAg
ICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS5hdChpKSwgcHJvZ3Jlc3MsICFm
cm9tLmF0KGkpKS0+YXBwbHkobWF0cml4LCBib3hTaXplKTsKICAgICByZXR1cm4gbWF0cml4Owog
fQogCi1zdGF0aWMgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0
aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqIGFuaW1WYWx1ZSwgY29uc3QgQW5pbWF0aW9u
KiBhbmltKQorc3RhdGljIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbkZvckFu
aW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltVmFsdWUsIGNvbnN0IEFuaW1h
dGlvbiogYW5pbSkKIHsKLSAgICBpZiAoYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpKQotICAg
ICAgICByZXR1cm4gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOworICAgIGlmIChhbmltVmFs
dWUudGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGFuaW1WYWx1ZS50aW1pbmdGdW5j
dGlvbigpOwogICAgIGlmIChhbmltLT50aW1pbmdGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4g
YW5pbS0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKIApAQCAtMjI3LDE4ICsyMjcsMTggQEAgR3Jh
cGhpY3NMYXllckFuaW1hdGlvbjo6R3JhcGhpY3NMYXllckFuaW1hdGlvbihjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IEtleWZyYW0KIHsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQW5pbWF0aW9u
OjphcHBseUludGVybmFsKENsaWVudCogY2xpZW50LCBjb25zdCBBbmltYXRpb25WYWx1ZSogZnJv
bSwgY29uc3QgQW5pbWF0aW9uVmFsdWUqIHRvLCBmbG9hdCBwcm9ncmVzcykKK3ZvaWQgR3JhcGhp
Y3NMYXllckFuaW1hdGlvbjo6YXBwbHlJbnRlcm5hbChDbGllbnQqIGNsaWVudCwgY29uc3QgQW5p
bWF0aW9uVmFsdWUmIGZyb20sIGNvbnN0IEFuaW1hdGlvblZhbHVlJiB0bywgZmxvYXQgcHJvZ3Jl
c3MpCiB7CiAgICAgc3dpdGNoIChtX2tleWZyYW1lcy5wcm9wZXJ0eSgpKSB7CiAgICAgY2FzZSBB
bmltYXRlZFByb3BlcnR5T3BhY2l0eToKLSAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZE9wYWNp
dHkoYXBwbHlPcGFjaXR5QW5pbWF0aW9uKChzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlv
blZhbHVlKj4oZnJvbSktPnZhbHVlKCkpLCAoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRp
b25WYWx1ZSo+KHRvKS0+dmFsdWUoKSksIHByb2dyZXNzKSk7CisgICAgICAgIGNsaWVudC0+c2V0
QW5pbWF0ZWRPcGFjaXR5KGFwcGx5T3BhY2l0eUFuaW1hdGlvbigoc3RhdGljX2Nhc3Q8Y29uc3Qg
RmxvYXRBbmltYXRpb25WYWx1ZSY+KGZyb20pLnZhbHVlKCkpLCAoc3RhdGljX2Nhc3Q8Y29uc3Qg
RmxvYXRBbmltYXRpb25WYWx1ZSY+KHRvKS52YWx1ZSgpKSwgcHJvZ3Jlc3MpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKLSAgICAg
ICAgY2xpZW50LT5zZXRBbmltYXRlZFRyYW5zZm9ybShhcHBseVRyYW5zZm9ybUFuaW1hdGlvbihz
dGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KGZyb20pLT52YWx1ZSgp
LCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHRvKS0+dmFsdWUo
KSwgcHJvZ3Jlc3MsIG1fYm94U2l6ZSwgbV9saXN0c01hdGNoKSk7CisgICAgICAgIGNsaWVudC0+
c2V0QW5pbWF0ZWRUcmFuc2Zvcm0oYXBwbHlUcmFuc2Zvcm1BbmltYXRpb24oc3RhdGljX2Nhc3Q8
Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPihmcm9tKS52YWx1ZSgpLCBzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHRvKS52YWx1ZSgpLCBwcm9ncmVzcywg
bV9ib3hTaXplLCBtX2xpc3RzTWF0Y2gpKTsKICAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRGaWx0ZXI6Ci0gICAg
ICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRGaWx0ZXJzKGFwcGx5RmlsdGVyQW5pbWF0aW9uKHN0YXRp
Y19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4oZnJvbSktPnZhbHVlKCksIHN0YXRp
Y19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odG8pLT52YWx1ZSgpLCBwcm9ncmVz
cywgbV9ib3hTaXplKSk7CisgICAgICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRGaWx0ZXJzKGFwcGx5
RmlsdGVyQW5pbWF0aW9uKHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJj4o
ZnJvbSkudmFsdWUoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPih0
bykudmFsdWUoKSwgcHJvZ3Jlc3MsIG1fYm94U2l6ZSkpOwogICAgICAgICByZXR1cm47CiAjZW5k
aWYKICAgICBkZWZhdWx0OgpAQCAtMzA0LDEyICszMDQsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVy
QW5pbWF0aW9uOjphcHBseShDbGllbnQqIGNsaWVudCkKICAgICB9CiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fa2V5ZnJhbWVzLnNpemUoKSAtIDE7ICsraSkgewotICAgICAgICBjb25z
dCBBbmltYXRpb25WYWx1ZSogZnJvbSA9IG1fa2V5ZnJhbWVzLmF0KGkpOwotICAgICAgICBjb25z
dCBBbmltYXRpb25WYWx1ZSogdG8gPSBtX2tleWZyYW1lcy5hdChpICsgMSk7Ci0gICAgICAgIGlm
IChmcm9tLT5rZXlUaW1lKCkgPiBub3JtYWxpemVkVmFsdWUgfHwgdG8tPmtleVRpbWUoKSA8IG5v
cm1hbGl6ZWRWYWx1ZSkKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIGZyb20gPSBtX2tl
eWZyYW1lcy5hdChpKTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIHRvID0gbV9rZXlm
cmFtZXMuYXQoaSArIDEpOworICAgICAgICBpZiAoZnJvbS5rZXlUaW1lKCkgPiBub3JtYWxpemVk
VmFsdWUgfHwgdG8ua2V5VGltZSgpIDwgbm9ybWFsaXplZFZhbHVlKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gKG5vcm1hbGl6ZWRWYWx1ZSAtIGZy
b20tPmtleVRpbWUoKSkgLyAodG8tPmtleVRpbWUoKSAtIGZyb20tPmtleVRpbWUoKSk7CisgICAg
ICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IChub3JtYWxpemVkVmFsdWUgLSBmcm9tLmtleVRpbWUoKSkg
LyAodG8ua2V5VGltZSgpIC0gZnJvbS5rZXlUaW1lKCkpOwogICAgICAgICBjb25zdCBUaW1pbmdG
dW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVl
KGZyb20sIG1fYW5pbWF0aW9uLmdldCgpKTsKICAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gYXBw
bHlUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgbm9ybWFsaXplZFZhbHVlLCBtX2FuaW1h
dGlvbi0+ZHVyYXRpb24oKSk7CiAgICAgICAgIGFwcGx5SW50ZXJuYWwoY2xpZW50LCBmcm9tLCB0
bywgbm9ybWFsaXplZFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaAppbmRleCA5ZjBiNWM1MmFiZDk4
MmQ3YmRjNDY4ODI3ZTNkOGY5MGQ2NWJhMWRiLi4yZDJmNjg1NzM1NDQyM2ZmODFlZjE2MTQ5ZjE2
NmI4M2MxNTYxMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckFuaW1hdGlvbi5oCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGxpc3RzTWF0Y2goKSBjb25zdCB7IHJldHVybiBtX2xpc3RzTWF0Y2g7IH0K
IAogcHJpdmF0ZToKLSAgICB2b2lkIGFwcGx5SW50ZXJuYWwoQ2xpZW50KiwgY29uc3QgQW5pbWF0
aW9uVmFsdWUqIGZyb20sIGNvbnN0IEFuaW1hdGlvblZhbHVlKiB0bywgZmxvYXQgcHJvZ3Jlc3Mp
OworICAgIHZvaWQgYXBwbHlJbnRlcm5hbChDbGllbnQqLCBjb25zdCBBbmltYXRpb25WYWx1ZSYg
ZnJvbSwgY29uc3QgQW5pbWF0aW9uVmFsdWUmIHRvLCBmbG9hdCBwcm9ncmVzcyk7CiAgICAgS2V5
ZnJhbWVWYWx1ZUxpc3QgbV9rZXlmcmFtZXM7CiAgICAgSW50U2l6ZSBtX2JveFNpemU7CiAgICAg
UmVmUHRyPEFuaW1hdGlvbj4gbV9hbmltYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCAyMTBiODFh
YmQ3MjIxNDk0YWQ3ZGYyNzUyNGZlMWMzOWU2ZDM3YTZjLi5mZmNhZDg3OTZlZjRmM2Y5YTkzYjdj
Y2E1Y2Q0MmM1ZTE3NmM3NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTI0Miw5ICsyNDIsMTAgQEAg
c3RhdGljIGJvb2wgYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlvbihjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHZhbHVlTGlzdC5hdChpKS0+
dGltaW5nRnVuY3Rpb24oKTsKLSAgICAgICAgaWYgKHRpbWluZ0Z1bmN0aW9uICYmIHRpbWluZ0Z1
bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBpZiAoY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFs
dWVMaXN0LmF0KGkpLnRpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgICAgIGlmICh0aW1pbmdG
dW5jdGlvbi0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDkxLDcg
KzIwOTIsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9u
c0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZQogCiAgICAgYm9vbCBoYXNCaWdSb3Rh
dGlvbjsKICAgICBpbnQgbGlzdEluZGV4ID0gdmFsaWRhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZh
bHVlTGlzdCwgaGFzQmlnUm90YXRpb24pOwotICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMq
IG9wZXJhdGlvbnMgPSAobGlzdEluZGV4ID49IDApID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4KSktPnZhbHVlKCkgOiAw
OworICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSAobGlzdEluZGV4
ID49IDApID8gJnN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFs
dWVMaXN0LmF0KGxpc3RJbmRleCkpLnZhbHVlKCkgOiAwOwogCiAgICAgLy8gV2UgbmVlZCB0byBm
YWxsIGJhY2sgdG8gc29mdHdhcmUgYW5pbWF0aW9uIGlmIHdlIGRvbid0IGhhdmUgc2V0VmFsdWVG
dW5jdGlvbjosIGFuZAogICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gYW5pbWF0ZSBlYWNoIGluY29t
aW5nIHRyYW5zZm9ybSBmdW5jdGlvbiBzZXBhcmF0ZWx5LiBUaGlzIGlzIHRoZQpAQCAtMjE4MSwy
MSArMjE4MiwyMSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlRmlsdGVyQW5pbWF0aW9u
c0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpcwogICAgIGlmIChsaXN0SW5kZXgg
PCAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSo+KHZhbHVlTGlzdC5hdChsaXN0SW5kZXgpKS0+dmFsdWUoKTsKKyAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0
aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4KSkudmFsdWUoKTsKICAgICAvLyBNYWtl
IHN1cmUgdGhlIHBsYXRmb3JtIGxheWVyIGRpZG4ndCBmYWxsYmFjayB0byB1c2luZyBzb2Z0d2Fy
ZSBmaWx0ZXIgY29tcG9zaXRpbmcgaW5zdGVhZC4KLSAgICBpZiAoIVBsYXRmb3JtQ0FMYXllcjo6
ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZCgqb3BlcmF0aW9ucykpCisgICAgaWYgKCFQbGF0Zm9ybUNB
TGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQob3BlcmF0aW9ucykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGludCBudW1BbmltYXRpb25zID0gb3BlcmF0aW9ucy0+c2l6ZSgpOwor
ICAgIGludCBudW1BbmltYXRpb25zID0gb3BlcmF0aW9ucy5zaXplKCk7CiAKICAgICAvLyBGSVhN
RTogV2UgY2FuJ3QgY3VycmVudGx5IGhhcmR3YXJlIGFuaW1hdGUgc2hhZG93cy4KICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICBpZiAob3BlcmF0
aW9ucy0+YXQoaSktPmdldE9wZXJhdGlvblR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OkRST1Bf
U0hBRE9XKQorICAgICAgICBpZiAob3BlcmF0aW9ucy5hdChpKS0+Z2V0T3BlcmF0aW9uVHlwZSgp
ID09IEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgZm9yIChpbnQgYW5pbWF0aW9uSW5kZXggPSAwOyBhbmltYXRpb25J
bmRleCA8IG51bUFuaW1hdGlvbnM7ICsrYW5pbWF0aW9uSW5kZXgpIHsKLSAgICAgICAgaWYgKCFh
cHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyh2YWx1ZUxpc3QsIG9wZXJhdGlvbnMtPm9wZXJh
dGlvbnMoKS5hdChhbmltYXRpb25JbmRleCkuZ2V0KCksIGFuaW1hdGlvbiwgYW5pbWF0aW9uTmFt
ZSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQpKQorICAgICAgICBpZiAoIWFwcGVuZFRvVW5j
b21taXR0ZWRBbmltYXRpb25zKHZhbHVlTGlzdCwgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXQo
YW5pbWF0aW9uSW5kZXgpLmdldCgpLCBhbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIGFuaW1hdGlv
bkluZGV4LCB0aW1lT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTIyNTMsMTIgKzIyNTQsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQW5pbWF0
aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qIHByb3BlcnR5QW5pbSwgY29uc3QgQW4KICAgICBwcm9w
ZXJ0eUFuaW0tPnNldEZpbGxNb2RlKGZpbGxNb2RlKTsKIH0KIAotY29uc3QgVGltaW5nRnVuY3Rp
b24qIEdyYXBoaWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25z
dCBBbmltYXRpb25WYWx1ZSogYW5pbVZhbHVlLCBjb25zdCBBbmltYXRpb24qIGFuaW0pCitjb25z
dCBUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXllckNBOjp0aW1pbmdGdW5jdGlvbkZvckFuaW1h
dGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlv
biYgYW5pbSkKIHsKLSAgICBpZiAoYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpKQotICAgICAg
ICByZXR1cm4gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOwotICAgIGlmIChhbmltLT5pc1Rp
bWluZ0Z1bmN0aW9uU2V0KCkpCi0gICAgICAgIHJldHVybiBhbmltLT50aW1pbmdGdW5jdGlvbigp
LmdldCgpOworICAgIGlmIChhbmltVmFsdWUudGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0
dXJuIGFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpOworICAgIGlmIChhbmltLmlzVGltaW5nRnVu
Y3Rpb25TZXQoKSkKKyAgICAgICAgcmV0dXJuIGFuaW0udGltaW5nRnVuY3Rpb24oKS5nZXQoKTsK
ICAgICAKICAgICByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6ZGVmYXVsdFRpbWlu
Z0Z1bmN0aW9uKCk7CiB9CkBAIC0yMjcyLDggKzIyNzMsOCBAQCBib29sIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxp
c3QsCiAgICAgCiAgICAgc3dpdGNoICh2YWx1ZUxpc3QucHJvcGVydHkoKSkgewogICAgIGNhc2Ug
QW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFs
dWUoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChm
cm9tSW5kZXgpKS0+dmFsdWUoKSk7Ci0gICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZShzdGF0
aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KHRvSW5kZXgp
KS0+dmFsdWUoKSk7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKHN0YXRpY19jYXN0
PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSkudmFs
dWUoKSk7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZShzdGF0aWNfY2FzdDxjb25zdCBG
bG9hdEFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKS52YWx1ZSgpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC0yMjgzLDcgKzIyODQsNyBAQCBi
b29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1ZUxpc3QsCiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9y
IDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBz
dGFydAogICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5n
IGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBm
dW5jdGlvbi4KLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1p
bmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKTsK
KyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlv
bkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbik7CiAgICAgaWYg
KHRpbWluZ0Z1bmN0aW9uKQogICAgICAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRp
bWluZ0Z1bmN0aW9uLCAhZm9yd2FyZHMpOwogCkBAIC0yMzAwLDEzICsyMzAxLDEzIEBAIGJvb2wg
R3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFs
dWVMaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gZm9yd2FyZHMg
PyBpIDogKHZhbHVlTGlzdC5zaXplKCkgLSBpIC0gMSk7Ci0gICAgICAgIGNvbnN0IEFuaW1hdGlv
blZhbHVlKiBjdXJWYWx1ZSA9IHZhbHVlTGlzdC5hdChpbmRleCk7Ci0gICAgICAgIGtleVRpbWVz
LmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLT5rZXlUaW1lKCkgOiAoMSAtIGN1clZhbHVlLT5r
ZXlUaW1lKCkpKTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIGN1clZhbHVlID0gdmFs
dWVMaXN0LmF0KGluZGV4KTsKKyAgICAgICAga2V5VGltZXMuYXBwZW5kKGZvcndhcmRzID8gY3Vy
VmFsdWUua2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS5rZXlUaW1lKCkpKTsKIAogICAgICAgICBz
d2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9w
ZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqIGZs
b2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4oY3VyVmFs
dWUpOwotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChmbG9hdFZhbHVlLT52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmIGZsb2F0VmFsdWUgPSBzdGF0aWNf
Y2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJj4oY3VyVmFsdWUpOworICAgICAgICAgICAg
dmFsdWVzLmFwcGVuZChmbG9hdFZhbHVlLnZhbHVlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTIzMTUsNyArMjMxNiw3IEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5z
aXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVu
Y3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0
KGluZGV4IC0gMSksIGFuaW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFw
cGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUg
OiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwogICAgIH0KICAgICAKICAg
ICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRpbWVzKTsKQEAgLTIzMzQsMTMgKzIzMzUs
MTMgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50
cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICB1bnNpZ25lZCBmcm9tSW5kZXggPSAh
Zm9yd2FyZHM7CiAgICAgdW5zaWduZWQgdG9JbmRleCA9IGZvcndhcmRzOwogICAgIAotICAgIGNv
bnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7Ci0g
ICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8
Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQodG9JbmRleCkpOwor
ICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBzdGFydFZhbHVlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4
KSk7CisgICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIGVuZFZhbHVlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQodG9JbmRl
eCkpOwogICAgIAogICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgewogICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBmcm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsKLSAgICAgICAgc3RhcnRW
YWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwgZnJvbVRyYW5zZm9ybSk7Ci0gICAgICAgIGVu
ZFZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCB0b1RyYW5zZm9ybSk7CisgICAgICAgIHN0
YXJ0VmFsdWUudmFsdWUoKS5hcHBseShib3hTaXplLCBmcm9tVHJhbnNmb3JtKTsKKyAgICAgICAg
ZW5kVmFsdWUudmFsdWUoKS5hcHBseShib3hTaXplLCB0b1RyYW5zZm9ybSk7CiAKICAgICAgICAg
Ly8gSWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0
bHkuIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24KICAgICAgICAgaWYgKCFmcm9t
VHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpIHx8ICF0b1RyYW5zZm9ybS5pc0ludmVydGlibGUoKSkK
QEAgLTIzNTEsMzQgKzIzNTIsMzQgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9y
bUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICB9IGVs
c2UgewogICAgICAgICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9wVHlwZSkp
IHsKICAgICAgICAgICAgIGZsb2F0IGZyb21WYWx1ZTsKLSAgICAgICAgICAgIGdldFRyYW5zZm9y
bUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRy
YW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5z
Zm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpLCB0
cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0Fu
aW0tPnNldEZyb21WYWx1ZShmcm9tVmFsdWUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBm
bG9hdCB0b1ZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRW
YWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6
ZSwgdG9WYWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZh
bHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwg
dG9WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodG9WYWx1ZSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoaXNUcmFuc2Zvcm1UeXBlRmxvYXRQb2ludDNEKHRyYW5zZm9ybU9w
VHlwZSkpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQzRCBmcm9tVmFsdWU7Ci0gICAgICAgICAg
ICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0
aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CisgICAgICAg
ICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUudmFsdWUoKS5hdChmdW5j
dGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCBmcm9tVmFsdWUpOwogICAgICAg
ICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUoZnJvbVZhbHVlKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgRmxvYXRQb2ludDNEIHRvVmFsdWU7Ci0gICAgICAgICAgICBnZXRUcmFuc2Zv
cm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJh
bnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9y
bUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNm
b3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKICAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0
VG9WYWx1ZSh0b1ZhbHVlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGZyb21WYWx1ZTsKLSAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9u
VmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9w
VHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0
aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1P
cFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldEZy
b21WYWx1ZShmcm9tVmFsdWUpOwogCiAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
b1ZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRWYWx1ZS0+
dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdG9W
YWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLnZh
bHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdG9WYWx1
ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodG9WYWx1ZSk7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUg
YW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAogICAgIC8v
IGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJzaW5nIGFuaW1hdGlvbiBj
YXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWluZyBmdW5jdGlvbi4KLSAg
ICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZv
ckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKTsKKyAgICBjb25zdCBU
aW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlv
blZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbik7CiAgICAgYmFzaWNBbmltLT5zZXRU
aW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgIWZvcndhcmRzKTsKIAogICAgIFBsYXRmb3Jt
Q0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb24gPSBnZXRWYWx1ZUZ1
bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcFR5cGUpOwpAQCAtMjQw
MCwxMiArMjQwMSwxMiBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0
aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQogCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICB1bnNpZ25l
ZCBpbmRleCA9IGZvcndhcmRzID8gaSA6ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gaSAtIDEpOwotICAg
ICAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogY3VyVmFsdWUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkpOwot
ICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2FyZHMgPyBjdXJWYWx1ZS0+a2V5VGltZSgpIDog
KDEgLSBjdXJWYWx1ZS0+a2V5VGltZSgpKSk7CisgICAgICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlJiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlJj4odmFsdWVMaXN0LmF0KGluZGV4KSk7CisgICAgICAgIGtleVRpbWVzLmFwcGVuZChm
b3J3YXJkcyA/IGN1clZhbHVlLmtleVRpbWUoKSA6ICgxIC0gY3VyVmFsdWUua2V5VGltZSgpKSk7
CiAKICAgICAgICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7CiAgICAgICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07Ci0gICAgICAgICAgICBjdXJWYWx1ZS0+dmFsdWUoKS0+
YXBwbHkoYm94U2l6ZSwgdHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGN1clZhbHVlLnZhbHVlKCku
YXBwbHkoYm94U2l6ZSwgdHJhbnNmb3JtKTsKIAogICAgICAgICAgICAgLy8gSWYgYW55IG1hdHJp
eCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwgYmFj
ayB0byBzb2Z0d2FyZSBhbmltYXRpb24KICAgICAgICAgICAgIGlmICghdHJhbnNmb3JtLmlzSW52
ZXJ0aWJsZSgpKQpAQCAtMjQxMyw3ICsyNDE0LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNl
dFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEK
IAogICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXhWYWx1ZXMuYXBwZW5kKHRyYW5zZm9y
bSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b24qIHRyYW5zZm9ybU9wID0gY3VyVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpOwor
ICAgICAgICAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCA9IGN1clZh
bHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCk7CiAgICAgICAgICAgICBpZiAoaXNUcmFuc2Zv
cm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9wVHlwZSkpIHsKICAgICAgICAgICAgICAgICBmbG9hdCB2
YWx1ZTsKICAgICAgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHRyYW5zZm9y
bU9wLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKQEAgLTI0MzAsNyArMjQzMSw3
IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMo
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaSA8
ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gMSkpCi0gICAgICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBw
ZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2FyZHMgPyBjdXJWYWx1ZSA6
IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCBhbmltYXRpb24pKTsKKyAgICAgICAgICAgIHRpbWlu
Z0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJk
cyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICphbmltYXRpb24pKTsKICAg
ICB9CiAgICAgCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlUaW1lcyk7CkBAIC0y
NDYxLDExICsyNDYyLDExIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRGaWx0ZXJBbmltYXRp
b25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlCiAgICAgdW5zaWduZWQg
ZnJvbUluZGV4ID0gIWZvcndhcmRzOwogICAgIHVuc2lnbmVkIHRvSW5kZXggPSBmb3J3YXJkczsK
IAotICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKiBmcm9tVmFsdWUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKTsK
LSAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSogdG9WYWx1ZSA9IHN0YXRpY19jYXN0PGNv
bnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KHRvSW5kZXgpKTsKKyAgICBj
b25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSYgZnJvbVZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
RmlsdGVyQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUluZGV4KSk7CisgICAgY29u
c3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIHRvVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0
ZXJBbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdCh0b0luZGV4KSk7CiAKLSAgICBjb25zdCBG
aWx0ZXJPcGVyYXRpb24qIGZyb21PcGVyYXRpb24gPSBmcm9tVmFsdWUtPnZhbHVlKCktPmF0KGZ1
bmN0aW9uSW5kZXgpOwotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogdG9PcGVyYXRpb24gPSB0
b1ZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KTsKKyAgICBjb25zdCBGaWx0ZXJPcGVy
YXRpb24qIGZyb21PcGVyYXRpb24gPSBmcm9tVmFsdWUudmFsdWUoKS5hdChmdW5jdGlvbkluZGV4
KTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIHRvT3BlcmF0aW9uID0gdG9WYWx1ZS52YWx1
ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpOwogCiAgICAgUmVmUHRyPERlZmF1bHRGaWx0ZXJPcGVyYXRp
b24+IGRlZmF1bHRGcm9tT3BlcmF0aW9uOwogICAgIFJlZlB0cjxEZWZhdWx0RmlsdGVyT3BlcmF0
aW9uPiBkZWZhdWx0VG9PcGVyYXRpb247CkBAIC0yNDg3LDcgKzI0ODgsNyBAQCBib29sIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiB2YWx1ZQogCiAgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZvciAyLWtleWZy
YW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUgc3RhcnQKICAg
ICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uIEV2ZW4gaW4gdGhlIHJldmVyc2luZyBhbmltYXRp
b24gY2FzZSwgdGhlIGZpcnN0IGtleWZyYW1lIHByb3ZpZGVzIHRoZSB0aW1pbmcgZnVuY3Rpb24u
Ci0gICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbkZvckFuaW1h
dGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKKyAgICBi
YXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKSwgIWZvcndhcmRzKTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMjUwMywxMSArMjUwNCwxMSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0RmlsdGVyQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkg
ewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGZvcndhcmRzID8gaSA6ICh2YWx1ZUxpc3Quc2l6
ZSgpIC0gaSAtIDEpOwotICAgICAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSogY3VyVmFs
dWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5h
dChpbmRleCkpOwotICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2FyZHMgPyBjdXJWYWx1ZS0+
a2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS0+a2V5VGltZSgpKSk7CisgICAgICAgIGNvbnN0IEZp
bHRlckFuaW1hdGlvblZhbHVlJiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFu
aW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KGluZGV4KSk7CisgICAgICAgIGtleVRpbWVzLmFw
cGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLmtleVRpbWUoKSA6ICgxIC0gY3VyVmFsdWUua2V5VGlt
ZSgpKSk7CiAKLSAgICAgICAgaWYgKGN1clZhbHVlLT52YWx1ZSgpLT5vcGVyYXRpb25zKCkuc2l6
ZSgpID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihmdW5jdGlvbkluZGV4KSkKLSAgICAgICAgICAgIHZh
bHVlcy5hcHBlbmQoY3VyVmFsdWUtPnZhbHVlKCktPm9wZXJhdGlvbnMoKVtmdW5jdGlvbkluZGV4
XSk7CisgICAgICAgIGlmIChjdXJWYWx1ZS52YWx1ZSgpLm9wZXJhdGlvbnMoKS5zaXplKCkgPiBz
dGF0aWNfY2FzdDxzaXplX3Q+KGZ1bmN0aW9uSW5kZXgpKQorICAgICAgICAgICAgdmFsdWVzLmFw
cGVuZChjdXJWYWx1ZS52YWx1ZSgpLm9wZXJhdGlvbnMoKVtmdW5jdGlvbkluZGV4XSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKCFkZWZhdWx0T3BlcmF0aW9uKQogICAgICAgICAg
ICAgICAgIGRlZmF1bHRPcGVyYXRpb24gPSBEZWZhdWx0RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUo
ZmlsdGVyT3ApOwpAQCAtMjUxNSw3ICsyNTE2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNl
dEZpbHRlckFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAg
ICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksIGFu
aW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5j
dGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQo
aW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwogICAgIH0KICAgICAKICAgICBrZXlmcmFtZUFuaW0t
PnNldEtleVRpbWVzKGtleVRpbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggMDJjMDIyN2U5OGM2YzUyZTg5
NDNhZGFiZGQ4ZTBjOTRhNjE0YTUyMC4uMDljY2NlNDUxZjc2MTUyNzczNjMzY2FlYTA5MTQ2OTRl
NjFkZWQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTIwNSw3ICsyMDUsNyBAQCBwcml2YXRlOgogICAgIFBh
c3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29u
c3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7CiAgICAgdm9pZCBz
ZXR1cEFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgY29uc3QgQW5pbWF0aW9uKiwgYm9v
bCBhZGRpdGl2ZSk7CiAgICAgCi0gICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqLCBjb25zdCBBbmltYXRp
b24qKTsKKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwogICAgIAog
ICAgIGJvb2wgc2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0Jiwg
Y29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOwogICAgIGJvb2wgc2V0QW5p
bWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9u
KiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCBiN2E1NDdkMjAwOGE0ZjRhOWJh
MWQ1MDc0NzlkOTA5NzFiNjFlMDJjLi5mZjMwYTVlOGE0NGIwYzZjZDU3MTdmYTNlYzRlNmViZDMz
YzQwZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcApAQCAtNzEyLDggKzcxMiw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpzZXRMYXllckFuaW1hdGlvbnNJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIq
IGxhCiAgICAgICAgIGlmIChrZXlmcmFtZXMucHJvcGVydHkoKSAhPSBBbmltYXRlZFByb3BlcnR5
V2Via2l0RmlsdGVyKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwga2V5ZnJhbWVzLnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICBjb25zdCBG
aWx0ZXJBbmltYXRpb25WYWx1ZSogZmlsdGVyVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0
ZXJBbmltYXRpb25WYWx1ZSo+KGtleWZyYW1lcy5hdChpKSk7Ci0gICAgICAgICAgICBpbmplY3RD
YWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcygqZmlsdGVyVmFsdWUtPnZhbHVlKCkpOworICAgICAg
ICAgICAgY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIGZpbHRlclZhbHVlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPihrZXlmcmFtZXMuYXQoaSkpOworICAgICAg
ICAgICAgaW5qZWN0Q2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoZmlsdGVyVmFsdWUudmFsdWUo
KSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMWRlZmI1MmIzNGFhODM5YTk0MzNmZmI0
MDAzZjExNTQxZjkwMWU4OS4uNjQxOWUwY2JiZjFkOWZiZTA2MDIwMDhmN2Y2ODUxOTZjYTk4Mzhj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKQEAgLTIxMDcsMTQgKzIxMDcsMTQgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0
QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmltYXRpb24qIGFuaW0KICAgICAg
ICAgCiAgICAgICAgIGJvb2wgaXNGaXJzdE9yTGFzdEtleWZyYW1lID0ga2V5ID09IDAgfHwga2V5
ID09IDE7CiAgICAgICAgIGlmICgoaGFzVHJhbnNmb3JtICYmIGlzRmlyc3RPckxhc3RLZXlmcmFt
ZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm0pKQotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChhZG9wdFB0cihu
ZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoa2V5LCAmKGtleWZyYW1lU3R5bGUtPnRyYW5zZm9y
bSgpKSwgdGYpKSk7Ci0gICAgICAgIAorICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2Vy
dChUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleSwga2V5ZnJhbWVTdHlsZS0+dHJh
bnNmb3JtKCksIHRmKSk7CisKICAgICAgICAgaWYgKChoYXNPcGFjaXR5ICYmIGlzRmlyc3RPckxh
c3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVy
dHlPcGFjaXR5KSkKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5l
dyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleSwga2V5ZnJhbWVTdHlsZS0+b3BhY2l0eSgpLCB0Zikp
KTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KEZsb2F0QW5pbWF0aW9uVmFsdWU6
OmNyZWF0ZShrZXksIGtleWZyYW1lU3R5bGUtPm9wYWNpdHkoKSwgdGYpKTsKIAogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKICAgICAgICAgaWYgKChoYXNGaWx0ZXIgJiYgaXNGaXJzdE9yTGFzdEtl
eWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdEZpbHRlcikpCi0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5l
dyBGaWx0ZXJBbmltYXRpb25WYWx1ZShrZXksICYoa2V5ZnJhbWVTdHlsZS0+ZmlsdGVyKCkpLCB0
ZikpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoRmlsdGVyQW5pbWF0aW9uVmFs
dWU6OmNyZWF0ZShrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOwogI2VuZGlmCiAg
ICAgfQogCkBAIC0yMTU0LDggKzIxNTQsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3Rh
cnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAg
ICAgICBjb25zdCBBbmltYXRpb24qIG9wYWNpdHlBbmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZv
clByb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSk7CiAgICAgICAgIGlmIChvcGFjaXR5QW5pbSAm
JiAhb3BhY2l0eUFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBL
ZXlmcmFtZVZhbHVlTGlzdCBvcGFjaXR5VmVjdG9yKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KTsK
LSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1h
dGlvblZhbHVlKDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKSk7
Ci0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcgRmxvYXRBbmlt
YXRpb25WYWx1ZSgxLCBjb21wb3NpdGluZ09wYWNpdHkodG9TdHlsZS0+b3BhY2l0eSgpKSkpKTsK
KyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KEZsb2F0QW5pbWF0aW9uVmFsdWU6OmNy
ZWF0ZSgwLCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7CisgICAg
ICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChGbG9hdEFuaW1hdGlvblZhbHVlOjpjcmVhdGUo
MSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkpKTsKICAgICAgICAgICAg
IC8vIFRoZSBib3hTaXplIHBhcmFtIGlzIG9ubHkgdXNlZCBmb3IgdHJhbnNmb3JtIGFuaW1hdGlv
bnMgKHdoaWNoIGNhbiBvbmx5IHJ1biBvbiBSZW5kZXJCb3hlcyksIHNvIHdlIHBhc3MgYW4gZW1w
dHkgc2l6ZSBoZXJlLgogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0
aW9uKG9wYWNpdHlWZWN0b3IsIEludFNpemUoKSwgb3BhY2l0eUFuaW0sIEdyYXBoaWNzTGF5ZXI6
OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KSwgdGlt
ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVj
dCBvcGFjaXR5IGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRo
ZSBmaW5hbCBvcGFjaXR5LgpAQCAtMjE2OSw4ICsyMTY5LDggQEAgYm9vbCBSZW5kZXJMYXllckJh
Y2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBw
cm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiB0cmFuc2Zvcm1BbmltID0gdG9TdHlsZS0+
dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKICAgICAg
ICAgaWYgKHRyYW5zZm9ybUFuaW0gJiYgIXRyYW5zZm9ybUFuaW0tPmlzRW1wdHlPclplcm9EdXJh
dGlvbigpKSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCB0cmFuc2Zvcm1WZWN0b3Io
QW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1W
ZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgwLCAmZnJv
bVN0eWxlLT50cmFuc2Zvcm0oKSkpKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNl
cnQoYWRvcHRQdHIobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDEsICZ0b1N0eWxlLT50cmFu
c2Zvcm0oKSkpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoVHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgwLCBmcm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7CisgICAg
ICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpj
cmVhdGUoMSwgdG9TdHlsZS0+dHJhbnNmb3JtKCkpKTsKICAgICAgICAgICAgIGlmIChtX2dyYXBo
aWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFuc2Zvcm1WZWN0b3IsIHRvUmVuZGVyQm94KHJlbmRl
cmVyKCkpLT5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkuc2l6ZSgpLCB0cmFuc2Zvcm1Bbmlt
LCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3Bl
cnR5V2Via2l0VHJhbnNmb3JtKSwgdGltZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBU
byBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCB0cmFuc2Zvcm0gaXMgdmlzaWJsZSB3aGVuIHRoZSBh
bmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIHRyYW5zZm9ybS4KICAgICAgICAgICAg
ICAgICB1cGRhdGVUcmFuc2Zvcm0odG9TdHlsZSk7CkBAIC0yMTg0LDggKzIxODQsOCBAQCBib29s
IFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBD
U1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIGZpbHRlckFuaW0g
PSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRGaWx0ZXIp
OwogICAgICAgICBpZiAoZmlsdGVyQW5pbSAmJiAhZmlsdGVyQW5pbS0+aXNFbXB0eU9yWmVyb0R1
cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IGZpbHRlclZlY3RvcihB
bmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKTsKLSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5p
bnNlcnQoYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKDAsICZmcm9tU3R5bGUtPmZp
bHRlcigpKSkpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChhZG9wdFB0cihuZXcg
RmlsdGVyQW5pbWF0aW9uVmFsdWUoMSwgJnRvU3R5bGUtPmZpbHRlcigpKSkpOworICAgICAgICAg
ICAgZmlsdGVyVmVjdG9yLmluc2VydChGaWx0ZXJBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKDAsIGZy
b21TdHlsZS0+ZmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoRmls
dGVyQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgxLCB0b1N0eWxlLT5maWx0ZXIoKSkpOwogICAgICAg
ICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKGZpbHRlclZlY3RvciwgSW50
U2l6ZSgpLCBmaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNp
dGlvbihBbmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKSwgdGltZU9mZnNldCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBmaWx0ZXIgaXMgdmlzaWJs
ZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIGZpbHRlci4KICAg
ICAgICAgICAgICAgICB1cGRhdGVGaWx0ZXJzKHRvU3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0Fy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNDExMDczMDg5
Y2M1NTNmYzc5MTQ4MTlhNjBlZGUxNzk2NGNhYTc5ZS4uM2NhZjU3Njc2NzhkZWUyZTdlMzcwNGIw
MGZhYmM5MTc3OTBhZjFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCkBAIC02NDUsMTkgKzY0NSwxOSBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbj46OmVuY29kZShBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIsIGNvbgogICAgIGVuY29kZXIuZW5jb2RlRW51bShrZXlmcmFtZXMucHJvcGVydHko
KSk7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa2V5ZnJhbWVzLnNpemUo
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlmcmFtZXMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIHZhbHVlID0ga2V5ZnJhbWVzLmF0KGkpOwot
ICAgICAgICBlbmNvZGVyIDw8IHZhbHVlLT5rZXlUaW1lKCk7Ci0gICAgICAgIGVuY29kZVRpbWlu
Z0Z1bmN0aW9uKGVuY29kZXIsIHZhbHVlLT50aW1pbmdGdW5jdGlvbigpKTsKKyAgICAgICAgY29u
c3QgQW5pbWF0aW9uVmFsdWUmIHZhbHVlID0ga2V5ZnJhbWVzLmF0KGkpOworICAgICAgICBlbmNv
ZGVyIDw8IHZhbHVlLmtleVRpbWUoKTsKKyAgICAgICAgZW5jb2RlVGltaW5nRnVuY3Rpb24oZW5j
b2RlciwgdmFsdWUudGltaW5nRnVuY3Rpb24oKSk7CiAgICAgICAgIHN3aXRjaCAoa2V5ZnJhbWVz
LnByb3BlcnR5KCkpIHsKICAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eToKLSAg
ICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1
ZSo+KHZhbHVlKS0+dmFsdWUoKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSY+KHZhbHVlKS52YWx1ZSgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKLSAg
ICAgICAgICAgIGVuY29kZXIgPDwgKnN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlKj4odmFsdWUpLT52YWx1ZSgpOworICAgICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZhbHVlKS52YWx1ZSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgICAgICBjYXNlIEFu
aW1hdGVkUHJvcGVydHlXZWJraXRGaWx0ZXI6Ci0gICAgICAgICAgICBlbmNvZGVyIDw8ICpzdGF0
aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlKS0+dmFsdWUoKTsKKyAg
ICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFs
dWUmPih2YWx1ZSkudmFsdWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgICAg
IGRlZmF1bHQ6CkBAIC03MzMsMTQgKzczMywxNCBAQCBib29sIEFyZ3VtZW50Q29kZXI8R3JhcGhp
Y3NMYXllckFuaW1hdGlvbj46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEdyYQog
ICAgICAgICAgICAgZmxvYXQgdmFsdWU7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBrZXlm
cmFtZXMuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHZh
bHVlLCB0aW1pbmdGdW5jdGlvbikpKTsKKyAgICAgICAgICAgIGtleWZyYW1lcy5pbnNlcnQoRmxv
YXRBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBbmltYXRlZFBy
b3BlcnR5V2Via2l0VHJhbnNmb3JtOiB7CiAgICAgICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25z
IHRyYW5zZm9ybTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHJhbnNmb3JtKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBrZXlmcmFtZXMuaW5z
ZXJ0KGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShrZXlUaW1lLCAmdHJhbnNm
b3JtLCB0aW1pbmdGdW5jdGlvbikpKTsKKyAgICAgICAgICAgIGtleWZyYW1lcy5pbnNlcnQoVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXlUaW1lLCB0cmFuc2Zvcm0sIHRpbWluZ0Z1
bmN0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogI2lmIEVOQUJMRShDU1Nf
RklMVEVSUykKQEAgLTc0OCw3ICs3NDgsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8R3JhcGhpY3NM
YXllckFuaW1hdGlvbj46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEdyYQogICAg
ICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXI7CiAgICAgICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGZpbHRlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAga2V5ZnJhbWVzLmluc2VydChhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUo
a2V5VGltZSwgJmZpbHRlciwgdGltaW5nRnVuY3Rpb24pKSk7CisgICAgICAgICAgICBrZXlmcmFt
ZXMuaW5zZXJ0KEZpbHRlckFuaW1hdGlvblZhbHVlOjpjcmVhdGUoa2V5VGltZSwgZmlsdGVyLCB0
aW1pbmdGdW5jdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5jcHAKaW5kZXggMWMwYmEyNDQ0NmI2MmNmMGU0NjVjMGIxNTA1MzE1MDRiMDliOTkwYS4u
MjdhOTAwOWI5N2RjNjA3YTdjNjQyN2FlZTAxMjM3OWVmNjk0MmFkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBA
IC0zNDIsOCArMzQyLDggQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnByZXBhcmVD
dXN0b21GaWx0ZXJQcm94aWVzSWZOZWVkZWQoQ29vcmRpbmF0ZWRHcmEKICAgICAgICAgICAgIGlm
IChrZXlmcmFtZXMucHJvcGVydHkoKSAhPSBBbmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7
IGogPCBrZXlmcmFtZXMuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAgICAgICBjb25zdCBGaWx0
ZXJBbmltYXRpb25WYWx1ZSogZmlsdGVyVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJB
bmltYXRpb25WYWx1ZSo+KGtleWZyYW1lcy5hdChpKSk7Ci0gICAgICAgICAgICAgICAgY2hlY2tD
dXN0b21GaWx0ZXJQcm9ncmFtUHJveGllcygqZmlsdGVyVmFsdWUtPnZhbHVlKCkpOworICAgICAg
ICAgICAgICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJiBmaWx0ZXJWYWx1ZSA9IHN0YXRp
Y19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJj4oa2V5ZnJhbWVzLmF0KGkpKTsKKyAg
ICAgICAgICAgICAgICBjaGVja0N1c3RvbUZpbHRlclByb2dyYW1Qcm94aWVzKGZpbHRlclZhbHVl
LT52YWx1ZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200977</attachid>
            <date>2013-05-07 14:24:26 -0700</date>
            <delta_ts>2013-05-07 14:36:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115738-20130507232325.patch</filename>
            <type>text/plain</type>
            <size>50998</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhmYTViZjRlMGVlMGQw
YjEyNTI5NmQxZGYwZTNiOGExN2VlZGY5ZS4uZDVjZjgwYTFjMjc2YTU0NDkxZjY0ZTBhMmRmNGNi
N2UwNzMyYzM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU0IEBACiAyMDEzLTA1LTA3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgQ2xlYW4gdXAgS2V5
ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgIEFkZCBzdGF0aWMgY3JlYXRlKCkgZnVuY3Rpb25zIHRv
IHRoZSBBbmltYXRpb25WYWx1ZSBzdWJjbGFzc2VzLCBhbmQgY2hhbmdlIGEgYnVuY2ggb2YgcGFy
YW1ldGVycworICAgICAgICBhbmQgcmV0dXJuIHZhbHVlcyB0aGF0IGNhbiBuZXZlciBiZSBudWxs
IGZyb20gcG9pbnRlciB0eXBlcyB0byByZWZlcmVuY2UgdHlwZXMgdG8gYmV0dGVyIGluZGljYXRl
IHRoaXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmZpbHRlck9wZXJhdGlvbnNBdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjp2YWxpZGF0ZUZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0aW9uc0F0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnZh
bGlkYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QW5pbWF0aW9uVmFsdWU6OkFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZsb2F0QW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChGbG9hdEFuaW1hdGlvblZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0QW5pbWF0aW9uVmFsdWU6OkZsb2F0QW5pbWF0
aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OmNy
ZWF0ZSk6CisgICAgICAgIChUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZTo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OlRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckFuaW1hdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyQW5pbWF0aW9uVmFsdWU6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckFuaW1hdGlvblZhbHVlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZSk6CisgICAgICAgIChGaWx0
ZXJBbmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6
fktleWZyYW1lVmFsdWVMaXN0KToKKyAgICAgICAgKEtleWZyYW1lVmFsdWVMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0OjphdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFuaW1h
dGlvbkhhc1N0ZXBzVGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUZpbHRlckFuaW1hdGlvbnNGcm9tS2V5
ZnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rp
b25Gb3JBbmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnNldEFuaW1hdGlvbkVuZHBvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q0E6OnNldEFuaW1hdGlvbktleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbkVuZHBvaW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlv
bktleWZyYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmg6CisgICAgICAgIChHcmFwaGljc0xheWVyQ0EpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNr
aW5nOjpzdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tp
bmc6OnN0YXJ0VHJhbnNpdGlvbik6CisKKzIwMTMtMDUtMDcgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBUaGUgc3RvcmFnZSBkYXRhYmFzZSB0cmFja2Vy
IHNob3VsZCBrbm93IHdoZW4gZGF0YWJhc2VzIGNvbWUgYW5kIGdvCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU3NDgKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGVi
Y2ExZmRhYjIwMDRiNGI1NGQwZmZhNjJhZGQ4NWIxN2ZlNmQwZGYuLjQ4M2FkMjdkNDY2Y2U0YTIx
OTRmZjJkYzIzZGI2MmY1NGQ5YTUwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAx
My0wNS0wNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAg
IENsZWFuIHVwIEtleWZyYW1lVmFsdWVMaXN0IGFuZCByZWxhdGVkIGNsYXNzZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTczOAorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBVcGRhdGUgZm9yIFdlYkNvcmUg
Y2hhbmdlcy4KKworICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29k
ZSk6CisKKzIwMTMtMDUtMDcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
KwogICAgICAgICBUaGUgc3RvcmFnZSBkYXRhYmFzZSB0cmFja2VyIHNob3VsZCBrbm93IHdoZW4g
ZGF0YWJhc2VzIGNvbWUgYW5kIGdvCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTU3NDgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCBjNzhiNWJlYjI2OGMxOGQyZmJlZTRmZjBl
YWNmODA3MTQzYWNiZjA3Li4wMWI2YTNmZDdhMmIwYTFmZmE0ZDZjZjU0NWFhZjBjNmU1MTdhODJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcApAQCAtNDA5LDkgKzQwOSw5IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6ZGlzdHJpYnV0
ZU9wYWNpdHkoZmxvYXQgYWNjdW11bGF0ZWRPcGFjaXR5KQogfQogCiAjaWYgRU5BQkxFKENTU19G
SUxURVJTKQotc3RhdGljIGlubGluZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmaWx0ZXJPcGVy
YXRpb25zQXQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4
KQorc3RhdGljIGlubGluZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25z
QXQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQogewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVl
TGlzdC5hdChpbmRleCkpLT52YWx1ZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBG
aWx0ZXJBbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdChpbmRleCkpLnZhbHVlKCk7CiB9CiAK
IGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCkKQEAgLTQyNCwyMyArNDI0LDIzIEBAIGludCBHcmFwaGlj
c0xheWVyOjp2YWxpZGF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlTGlzdCkKICAgICAvLyBFbXB0eSBmaWx0ZXJzIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5k
IHRoZSBmaXJzdCBub24tZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZQogICAgIHNpemVfdCBm
aXJzdEluZGV4ID0gMDsKICAgICBmb3IgKCA7IGZpcnN0SW5kZXggPCB2YWx1ZUxpc3Quc2l6ZSgp
OyArK2ZpcnN0SW5kZXgpIHsKLSAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbnNBdCh2YWx1ZUxp
c3QsIGZpcnN0SW5kZXgpLT5vcGVyYXRpb25zKCkuc2l6ZSgpID4gMCkKKyAgICAgICAgaWYgKCFm
aWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS5vcGVyYXRpb25zKCkuaXNF
bXB0eSgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKGZpcnN0SW5kZXgg
Pj0gdmFsdWVMaXN0LnNpemUoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgY29uc3QgRmls
dGVyT3BlcmF0aW9ucyogZmlyc3RWYWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBm
aXJzdEluZGV4KTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaXJzdFZhbCA9IGZpbHRl
ck9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGZpcnN0SW5kZXgpOwogICAgIAogICAgIGZvciAoc2l6
ZV90IGkgPSBmaXJzdEluZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAg
ICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFs
dWVMaXN0LCBpKTsKKyAgICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdmFsID0gZmlsdGVy
T3BlcmF0aW9uc0F0KHZhbHVlTGlzdCwgaSk7CiAgICAgICAgIAogICAgICAgICAvLyBBbiBlbXRw
eSBmaWx0ZXIgbGlzdCBtYXRjaGVzIGFueXRoaW5nLgotICAgICAgICBpZiAodmFsLT5vcGVyYXRp
b25zKCkuaXNFbXB0eSgpKQorICAgICAgICBpZiAodmFsLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGlmICghZmlyc3RWYWwt
Pm9wZXJhdGlvbnNNYXRjaCgqdmFsKSkKKyAgICAgICAgaWYgKCFmaXJzdFZhbC5vcGVyYXRpb25z
TWF0Y2godmFsKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgCkBAIC00NTIs
OSArNDUyLDkgQEAgaW50IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRlRmlsdGVyT3BlcmF0aW9ucyhj
b25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0KQogLy8gVGhlIGhhc0JpZ1JvdGF0aW9u
IGZsYWcgd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGlmIGlzVmFsaWQgaXMgZmFsc2UuIE90aGVy
d2lzZSBoYXNCaWdSb3RhdGlvbiBpcyAKIC8vIHRydWUgaWYgdGhlIHJvdGF0aW9uIGJldHdlZW4g
YW55IHR3byBrZXlmcmFtZXMgaXMgPj0gMTgwIGRlZ3JlZXMuCiAKLXN0YXRpYyBpbmxpbmUgY29u
c3QgVHJhbnNmb3JtT3BlcmF0aW9ucyogb3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiB2YWx1ZUxpc3QsIHNpemVfdCBpbmRleCkKK3N0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNm
b3JtT3BlcmF0aW9ucyYgb3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZUxpc3QsIHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoaW5kZXgpKS0+dmFsdWUoKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1
ZUxpc3QuYXQoaW5kZXgpKS52YWx1ZSgpOwogfQogCiBpbnQgR3JhcGhpY3NMYXllcjo6dmFsaWRh
dGVUcmFuc2Zvcm1PcGVyYXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3Qs
IGJvb2wmIGhhc0JpZ1JvdGF0aW9uKQpAQCAtNDY5LDI0ICs0NjksMjQgQEAgaW50IEdyYXBoaWNz
TGF5ZXI6OnZhbGlkYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYgdmFsdWVMaXMKICAgICAvLyBFbXB0eSB0cmFuc2Zvcm1zIG1hdGNoIGFueXRoaW5nLCBzbyBm
aW5kIHRoZSBmaXJzdCBub24tZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZS4KICAgICBzaXpl
X3QgZmlyc3RJbmRleCA9IDA7CiAgICAgZm9yICggOyBmaXJzdEluZGV4IDwgdmFsdWVMaXN0LnNp
emUoKTsgKytmaXJzdEluZGV4KSB7Ci0gICAgICAgIGlmIChvcGVyYXRpb25zQXQodmFsdWVMaXN0
LCBmaXJzdEluZGV4KS0+b3BlcmF0aW9ucygpLnNpemUoKSA+IDApCisgICAgICAgIGlmICghb3Bl
cmF0aW9uc0F0KHZhbHVlTGlzdCwgZmlyc3RJbmRleCkub3BlcmF0aW9ucygpLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKICAgICBpZiAoZmlyc3RJbmRleCA+PSB2
YWx1ZUxpc3Quc2l6ZSgpKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIAotICAgIGNvbnN0
IFRyYW5zZm9ybU9wZXJhdGlvbnMqIGZpcnN0VmFsID0gb3BlcmF0aW9uc0F0KHZhbHVlTGlzdCwg
Zmlyc3RJbmRleCk7CisgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZmlyc3RWYWwgPSBv
cGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KTsKICAgICAKICAgICAvLyBTZWUgaWYg
dGhlIGtleWZyYW1lcyBhcmUgdmFsaWQuCiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0SW5kZXgg
KyAxOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbnMqIHZhbCA9IG9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGkpOworICAgICAgICBj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBp
KTsKICAgICAgICAgCi0gICAgICAgIC8vIEFuIGVtdHB5IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMg
YW55dGhpbmcuCi0gICAgICAgIGlmICh2YWwtPm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCisgICAg
ICAgIC8vIEFuIGVtcHR5IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCisgICAgICAg
IGlmICh2YWwub3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgCi0gICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRjaCgqdmFs
KSkKKyAgICAgICAgaWYgKCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAgICAgICAg
ICAgIHJldHVybiAtMTsKICAgICB9CiAKQEAgLTQ5NCwyMiArNDk0LDIyIEBAIGludCBHcmFwaGlj
c0xheWVyOjp2YWxpZGF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzCiAgICAgZG91YmxlIGxhc3RSb3RBbmdsZSA9IDAuMDsKICAgICBkb3VibGUg
bWF4Um90QW5nbGUgPSAtMS4wOwogICAgICAgICAKLSAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
IGZpcnN0VmFsLT5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUgPSBmaXJzdFZhbC0+b3BlcmF0aW9ucygpLmF0
KGopLT5nZXRPcGVyYXRpb25UeXBlKCk7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBmaXJz
dFZhbC5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0
aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUgPSBmaXJzdFZhbC5vcGVyYXRpb25zKCkuYXQoaiktPmdl
dE9wZXJhdGlvblR5cGUoKTsKICAgICAgICAgCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSByb3Rh
dGlvbiBlbnRyeSwgd2UgbmVlZCB0byBzZWUgaWYgYW55IGFuZ2xlIGRpZmZlcmVuY2VzIGFyZSA+
PSAxODAgZGVnCiAgICAgICAgIGlmICh0eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRF
X1ggfHwKICAgICAgICAgICAgIHR5cGUgPT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWSB8
fAogICAgICAgICAgICAgdHlwZSA9PSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9aIHx8CiAg
ICAgICAgICAgICB0eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEKSB7Ci0gICAg
ICAgICAgICBsYXN0Um90QW5nbGUgPSBzdGF0aWNfY2FzdDxSb3RhdGVUcmFuc2Zvcm1PcGVyYXRp
b24qPihmaXJzdFZhbC0+b3BlcmF0aW9ucygpLmF0KGopLmdldCgpKS0+YW5nbGUoKTsKKyAgICAg
ICAgICAgIGxhc3RSb3RBbmdsZSA9IHN0YXRpY19jYXN0PFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bio+KGZpcnN0VmFsLm9wZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGlmIChtYXhSb3RBbmdsZSA8IDApCiAgICAgICAgICAgICAgICAg
bWF4Um90QW5nbGUgPSBmYWJzKGxhc3RSb3RBbmdsZSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEluZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7
ICsraSkgewotICAgICAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZhbCA9
IG9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGkpOwotICAgICAgICAgICAgICAgIGRvdWJsZSByb3RB
bmdsZSA9IHZhbC0+b3BlcmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90
YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odmFsLT5vcGVyYXRpb25zKCkuYXQoaikuZ2V0KCkpLT5h
bmdsZSgpKTsKKyAgICAgICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWwg
PSBvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgcm90
QW5nbGUgPSB2YWwub3BlcmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90
YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odmFsLm9wZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFu
Z2xlKCkpOwogICAgICAgICAgICAgICAgIGRvdWJsZSBkaWZmQW5nbGUgPSBmYWJzKHJvdEFuZ2xl
IC0gbGFzdFJvdEFuZ2xlKTsKICAgICAgICAgICAgICAgICBpZiAoZGlmZkFuZ2xlID4gbWF4Um90
QW5nbGUpCiAgICAgICAgICAgICAgICAgICAgIG1heFJvdEFuZ2xlID0gZGlmZkFuZ2xlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4
IDEzMTFmYjZlYmM3ZDg0ZTFhODIxMWQxYjc0ODk2YmUwYjQ0ZTU1MTUuLjE2ZGMwN2ZlYmI3Yzhk
ODJlN2Q5MjdkNzYzYTdlMDE1YmE4NzlmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTcyLDE4ICs3MiwxOSBAQCBjbGFzcyBU
cmFuc2Zvcm1hdGlvbk1hdHJpeDsKIGNsYXNzIEFuaW1hdGlvblZhbHVlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBbmltYXRpb25WYWx1ZShm
bG9hdCBrZXlUaW1lLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9
IDApCi0gICAgICAgIDogbV9rZXlUaW1lKGtleVRpbWUpCi0gICAgICAgICwgbV90aW1pbmdGdW5j
dGlvbih0aW1pbmdGdW5jdGlvbikKLSAgICB7Ci0gICAgfQotICAgIAogICAgIHZpcnR1YWwgfkFu
aW1hdGlvblZhbHVlKCkgeyB9CiAKICAgICBmbG9hdCBrZXlUaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9rZXlUaW1lOyB9CiAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1pbmdGdW5jdGlvbi5nZXQoKTsgfQogICAgIHZpcnR1YWwgUGFz
c093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCA9IDA7CiAKK3Byb3RlY3RlZDoK
KyAgICBBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCisgICAgICAgIDogbV9rZXlUaW1lKGtleVRpbWUpCisg
ICAgICAgICwgbV90aW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbikKKyAgICB7CisgICAgfQor
CiBwcml2YXRlOgogICAgIGZsb2F0IG1fa2V5VGltZTsKICAgICBSZWZQdHI8VGltaW5nRnVuY3Rp
b24+IG1fdGltaW5nRnVuY3Rpb247CkBAIC05MywxNiArOTQsMjUgQEAgcHJpdmF0ZToKIC8vIEZJ
WE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIEZsb2F0
QW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogcHVibGljOgotICAgIEZs
b2F0QW5pbWF0aW9uVmFsdWUoZmxvYXQga2V5VGltZSwgZmxvYXQgdmFsdWUsIFBhc3NSZWZQdHI8
VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25W
YWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEZsb2F0QW5pbWF0aW9uVmFsdWU+IGNyZWF0ZShmbG9hdCBr
ZXlUaW1lLCBmbG9hdCB2YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVu
Y3Rpb24gPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1h
dGlvblZhbHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOworICAgIH0KKworICAg
IHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBPVkVSUklE
RQogICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVl
KCp0aGlzKSk7CiAgICAgfQotICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4g
Y2xvbmUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRp
b25WYWx1ZSgqdGhpcykpOyB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWU7IH0KIAogcHJpdmF0ZToKKyAgICBGbG9hdEFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRp
bWUsIGZsb2F0IHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlv
bikKKyAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAg
ICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICB9CisKICAgICBmbG9hdCBtX3ZhbHVl
OwogfTsKIApAQCAtMTEwLDE3ICsxMjAsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQg
YmUgbW92ZWQgdG8gaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBU
cmFuc2Zvcm1BbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVy
YXRpb25zKiB2YWx1ZSA9IDAsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0
aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlv
bikKKyAgICBzdGF0aWMgUGFzc093blB0cjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4gY3JlYXRl
KGZsb2F0IGtleVRpbWUsIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzUmVm
UHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHZhbHVl
LCB0aW1pbmdGdW5jdGlvbikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmlt
YXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKLSAgICAgICAgaWYgKHZh
bHVlKQotICAgICAgICAgICAgbV92YWx1ZSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgqdGhpcykpOwogICAgIH0KLSAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gYWRvcHRQdHIobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAot
ICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1f
dmFsdWU7IH0KKyAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1Jl
ZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9u
VmFsdWUoa2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkK
KyAgICB7CisgICAgfQorCiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKIApA
QCAtMTI5LDE3ICsxNDcsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQg
dG8gaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVlIDogcHVi
bGljIEFuaW1hdGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBGaWx0ZXJBbmltYXRp
b25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWx1ZSA9IDAs
IFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAg
OiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMgUGFz
c093blB0cjxGaWx0ZXJBbmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUsIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1p
bmdGdW5jdGlvbiA9IDApCiAgICAgewotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICBt
X3ZhbHVlID0gKnZhbHVlOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbHRlckFuaW1h
dGlvblZhbHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOwogICAgIH0KLSAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAot
ICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFs
dWU7IH0KKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29u
c3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsdGVyQW5p
bWF0aW9uVmFsdWUoKnRoaXMpKTsKKyAgICB9CisKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25z
JiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKKyAgICBGaWx0
ZXJBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2
YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAg
IDogQW5pbWF0aW9uVmFsdWUoa2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92
YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX3ZhbHVl
OwogfTsKICNlbmRpZgpAQCAtMTYxLDYgKzE4NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBt
X3ZhbHVlcy5hcHBlbmQob3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOwogICAgIH0KIAorICAg
IH5LZXlmcmFtZVZhbHVlTGlzdCgpCisgICAgeworICAgIH0KKwogICAgIEtleWZyYW1lVmFsdWVM
aXN0JiBvcGVyYXRvcj0oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKICAg
ICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgY29weShvdGhlcik7CkBAIC0xNzcsNyArMjA3LDcgQEAg
cHVibGljOgogICAgIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvcGVydHk7IH0KIAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZXMuc2l6ZSgpOyB9Ci0gICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGF0KHNpemVfdCBpKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlcy5hdChpKS5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvblZh
bHVlJiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gKm1fdmFsdWVzLmF0KGkpOyB9CiAgICAg
CiAgICAgLy8gSW5zZXJ0LCBzb3J0ZWQgYnkga2V5VGltZS4KICAgICB2b2lkIGluc2VydChQYXNz
T3duUHRyPGNvbnN0IEFuaW1hdGlvblZhbHVlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCmluZGV4
IGQwMjY1OThiMDI2ZmJkMDA1NGNlYmM2MzcwZjFhZmVlMzQ0OWNjYjUuLjIwNmQ3MDdiM2FkMTUw
MWFlNTFiMzFkNTYyNDgwZGJhNjJlMDVmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCkBAIC0z
OSwyNyArMzksMjcgQEAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4g
YmxlbmRGdW5jKEZpbHRlck9wZXJhdGlvbiogZnJvbU9wLCBGaWwKIH0KIAogCi1zdGF0aWMgRmls
dGVyT3BlcmF0aW9ucyBhcHBseUZpbHRlckFuaW1hdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRpb25z
KiBmcm9tLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25z
dCBJbnRTaXplJiBib3hTaXplKQorc3RhdGljIEZpbHRlck9wZXJhdGlvbnMgYXBwbHlGaWx0ZXJB
bmltYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZnJvbSwgY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgdG8sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKIHsKICAg
ICAvLyBGaXJzdCBmcmFtZSBvZiBhbiBhbmltYXRpb24uCiAgICAgaWYgKCFwcm9ncmVzcykKLSAg
ICAgICAgcmV0dXJuICpmcm9tOworICAgICAgICByZXR1cm4gZnJvbTsKIAogICAgIC8vIExhc3Qg
ZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmIChwcm9ncmVzcyA9PSAxKQotICAgICAgICBy
ZXR1cm4gKnRvOworICAgICAgICByZXR1cm4gdG87CiAKLSAgICBpZiAoIWZyb20tPmlzRW1wdHko
KSAmJiAhdG8tPmlzRW1wdHkoKSAmJiAhZnJvbS0+b3BlcmF0aW9uc01hdGNoKCp0bykpCi0gICAg
ICAgIHJldHVybiAqdG87CisgICAgaWYgKCFmcm9tLmlzRW1wdHkoKSAmJiAhdG8uaXNFbXB0eSgp
ICYmICFmcm9tLm9wZXJhdGlvbnNNYXRjaCh0bykpCisgICAgICAgIHJldHVybiB0bzsKIAogICAg
IEZpbHRlck9wZXJhdGlvbnMgcmVzdWx0OwogCi0gICAgc2l6ZV90IGZyb21TaXplID0gZnJvbS0+
b3BlcmF0aW9ucygpLnNpemUoKTsKLSAgICBzaXplX3QgdG9TaXplID0gdG8tPm9wZXJhdGlvbnMo
KS5zaXplKCk7CisgICAgc2l6ZV90IGZyb21TaXplID0gZnJvbS5vcGVyYXRpb25zKCkuc2l6ZSgp
OworICAgIHNpemVfdCB0b1NpemUgPSB0by5vcGVyYXRpb25zKCkuc2l6ZSgpOwogICAgIHNpemVf
dCBzaXplID0gc3RkOjptYXgoZnJvbVNpemUsIHRvU2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZnJv
bU9wID0gKGkgPCBmcm9tU2l6ZSkgPyBmcm9tLT5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwot
ICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8t
Pm9wZXJhdGlvbnMoKVtpXS5nZXQoKSA6IDA7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IGZyb21PcCA9IChpIDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkg
OiAwOworICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUp
ID8gdG8ub3BlcmF0aW9ucygpW2ldLmdldCgpIDogMDsKICAgICAgICAgUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gYmxlbmRlZE9wID0gdG9PcCA/IGJsZW5kRnVuYyhmcm9tT3AuZ2V0KCksIHRvT3Au
Z2V0KCksIHByb2dyZXNzLCBib3hTaXplKSA6IChmcm9tT3AgPyBibGVuZEZ1bmMoMCwgZnJvbU9w
LmdldCgpLCBwcm9ncmVzcywgYm94U2l6ZSwgdHJ1ZSkgOiAwKTsKICAgICAgICAgaWYgKGJsZW5k
ZWRPcCkKICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7
CkBAIC0xNTUsNTggKzE1NSw1OCBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVu
Y3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbAogICAgIHJldHVy
biBwcm9ncmVzczsKIH0KIAotc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFwcGx5VHJhbnNm
b3JtQW5pbWF0aW9uKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIGZyb20sIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMqIHRvLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IEludFNpemUmIGJveFNp
emUsIGJvb2wgbGlzdHNNYXRjaCkKK3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcHBseVRy
YW5zZm9ybUFuaW1hdGlvbihjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb25zJiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBi
b3hTaXplLCBib29sIGxpc3RzTWF0Y2gpCiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0
cml4OwogCiAgICAgLy8gRmlyc3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmICghcHJv
Z3Jlc3MpIHsKLSAgICAgICAgZnJvbS0+YXBwbHkoYm94U2l6ZSwgbWF0cml4KTsKKyAgICAgICAg
ZnJvbS5hcHBseShib3hTaXplLCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAg
IH0KIAogICAgIC8vIExhc3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmIChwcm9ncmVz
cyA9PSAxKSB7Ci0gICAgICAgIHRvLT5hcHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICB0
by5hcHBseShib3hTaXplLCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0K
IAogICAgIC8vIElmIHdlIGhhdmUgaW5jb21wYXRpYmxlIG9wZXJhdGlvbiBsaXN0cywgd2UgYmxl
bmQgdGhlIHJlc3VsdGluZyBtYXRyaWNlcy4KICAgICBpZiAoIWxpc3RzTWF0Y2gpIHsKICAgICAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbU1hdHJpeDsKLSAgICAgICAgdG8tPmFwcGx5KGJv
eFNpemUsIG1hdHJpeCk7Ci0gICAgICAgIGZyb20tPmFwcGx5KGJveFNpemUsIGZyb21NYXRyaXgp
OworICAgICAgICB0by5hcHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICBmcm9tLmFwcGx5
KGJveFNpemUsIGZyb21NYXRyaXgpOwogICAgICAgICBtYXRyaXguYmxlbmQoZnJvbU1hdHJpeCwg
cHJvZ3Jlc3MpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIEFuaW1h
dGlvbiB0byAiLXdlYmtpdC10cmFuc2Zvcm06IG5vbmUiLgotICAgIGlmICghdG8tPnNpemUoKSkg
ewotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQoKmZyb20pOworICAgIGlmICgh
dG8uc2l6ZSgpKSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRlZChmcm9tKTsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibGVuZGVkLm9wZXJhdGlvbnMoKS5zaXpl
KCk7ICsraSkKICAgICAgICAgICAgIGJsZW5kZWQub3BlcmF0aW9ucygpW2ldLT5ibGVuZCgwLCBw
cm9ncmVzcywgdHJ1ZSktPmFwcGx5KG1hdHJpeCwgYm94U2l6ZSk7CiAgICAgICAgIHJldHVybiBt
YXRyaXg7CiAgICAgfQogCiAgICAgLy8gQW5pbWF0aW9uIGZyb20gIi13ZWJraXQtdHJhbnNmb3Jt
OiBub25lIi4KLSAgICBpZiAoIWZyb20tPnNpemUoKSkgewotICAgICAgICBUcmFuc2Zvcm1PcGVy
YXRpb25zIGJsZW5kZWQoKnRvKTsKKyAgICBpZiAoIWZyb20uc2l6ZSgpKSB7CisgICAgICAgIFRy
YW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRlZCh0byk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYmxlbmRlZC5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBibGVu
ZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoMCwgMS4gLSBwcm9ncmVzcywgdHJ1ZSktPmFwcGx5
KG1hdHJpeCwgYm94U2l6ZSk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQogCiAgICAg
Ly8gTm9ybWFsIGFuaW1hdGlvbiB3aXRoIGEgbWF0Y2hpbmcgb3BlcmF0aW9uIGxpc3QuCi0gICAg
VHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZGVkKCp0byk7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9u
cyBibGVuZGVkKHRvKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsZW5kZWQub3BlcmF0
aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+Ymxl
bmQoZnJvbS0+YXQoaSksIHByb2dyZXNzLCAhZnJvbS0+YXQoaSkpLT5hcHBseShtYXRyaXgsIGJv
eFNpemUpOworICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS5hdChp
KSwgcHJvZ3Jlc3MsICFmcm9tLmF0KGkpKS0+YXBwbHkobWF0cml4LCBib3hTaXplKTsKICAgICBy
ZXR1cm4gbWF0cml4OwogfQogCi1zdGF0aWMgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1
bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqIGFuaW1WYWx1ZSwg
Y29uc3QgQW5pbWF0aW9uKiBhbmltKQorc3RhdGljIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1p
bmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltVmFs
dWUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkKIHsKLSAgICBpZiAoYW5pbVZhbHVlLT50aW1pbmdG
dW5jdGlvbigpKQotICAgICAgICByZXR1cm4gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOwor
ICAgIGlmIChhbmltVmFsdWUudGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGFuaW1W
YWx1ZS50aW1pbmdGdW5jdGlvbigpOwogICAgIGlmIChhbmltLT50aW1pbmdGdW5jdGlvbigpKQog
ICAgICAgICByZXR1cm4gYW5pbS0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKIApAQCAtMjI3LDE4
ICsyMjcsMTggQEAgR3JhcGhpY3NMYXllckFuaW1hdGlvbjo6R3JhcGhpY3NMYXllckFuaW1hdGlv
bihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtleWZyYW0KIHsKIH0KIAotdm9pZCBHcmFwaGlj
c0xheWVyQW5pbWF0aW9uOjphcHBseUludGVybmFsKENsaWVudCogY2xpZW50LCBjb25zdCBBbmlt
YXRpb25WYWx1ZSogZnJvbSwgY29uc3QgQW5pbWF0aW9uVmFsdWUqIHRvLCBmbG9hdCBwcm9ncmVz
cykKK3ZvaWQgR3JhcGhpY3NMYXllckFuaW1hdGlvbjo6YXBwbHlJbnRlcm5hbChDbGllbnQqIGNs
aWVudCwgY29uc3QgQW5pbWF0aW9uVmFsdWUmIGZyb20sIGNvbnN0IEFuaW1hdGlvblZhbHVlJiB0
bywgZmxvYXQgcHJvZ3Jlc3MpCiB7CiAgICAgc3dpdGNoIChtX2tleWZyYW1lcy5wcm9wZXJ0eSgp
KSB7CiAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eToKLSAgICAgICAgY2xpZW50LT5z
ZXRBbmltYXRlZE9wYWNpdHkoYXBwbHlPcGFjaXR5QW5pbWF0aW9uKChzdGF0aWNfY2FzdDxjb25z
dCBGbG9hdEFuaW1hdGlvblZhbHVlKj4oZnJvbSktPnZhbHVlKCkpLCAoc3RhdGljX2Nhc3Q8Y29u
c3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KHRvKS0+dmFsdWUoKSksIHByb2dyZXNzKSk7CisgICAg
ICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRPcGFjaXR5KGFwcGx5T3BhY2l0eUFuaW1hdGlvbigoc3Rh
dGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSY+KGZyb20pLnZhbHVlKCkpLCAoc3Rh
dGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSY+KHRvKS52YWx1ZSgpKSwgcHJvZ3Jl
c3MpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybToKLSAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZFRyYW5zZm9ybShhcHBseVRyYW5z
Zm9ybUFuaW1hdGlvbihzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+
KGZyb20pLT52YWx1ZSgpLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSo+KHRvKS0+dmFsdWUoKSwgcHJvZ3Jlc3MsIG1fYm94U2l6ZSwgbV9saXN0c01hdGNoKSk7Cisg
ICAgICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRUcmFuc2Zvcm0oYXBwbHlUcmFuc2Zvcm1BbmltYXRp
b24oc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPihmcm9tKS52YWx1
ZSgpLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHRvKS52YWx1
ZSgpLCBwcm9ncmVzcywgbV9ib3hTaXplLCBtX2xpc3RzTWF0Y2gpKTsKICAgICAgICAgcmV0dXJu
OwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJr
aXRGaWx0ZXI6Ci0gICAgICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRGaWx0ZXJzKGFwcGx5RmlsdGVy
QW5pbWF0aW9uKHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4oZnJvbSkt
PnZhbHVlKCksIHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odG8pLT52
YWx1ZSgpLCBwcm9ncmVzcywgbV9ib3hTaXplKSk7CisgICAgICAgIGNsaWVudC0+c2V0QW5pbWF0
ZWRGaWx0ZXJzKGFwcGx5RmlsdGVyQW5pbWF0aW9uKHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFu
aW1hdGlvblZhbHVlJj4oZnJvbSkudmFsdWUoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5p
bWF0aW9uVmFsdWUmPih0bykudmFsdWUoKSwgcHJvZ3Jlc3MsIG1fYm94U2l6ZSkpOwogICAgICAg
ICByZXR1cm47CiAjZW5kaWYKICAgICBkZWZhdWx0OgpAQCAtMzA0LDEyICszMDQsMTIgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjphcHBseShDbGllbnQqIGNsaWVudCkKICAgICB9CiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fa2V5ZnJhbWVzLnNpemUoKSAtIDE7ICsraSkg
ewotICAgICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSogZnJvbSA9IG1fa2V5ZnJhbWVzLmF0KGkp
OwotICAgICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSogdG8gPSBtX2tleWZyYW1lcy5hdChpICsg
MSk7Ci0gICAgICAgIGlmIChmcm9tLT5rZXlUaW1lKCkgPiBub3JtYWxpemVkVmFsdWUgfHwgdG8t
PmtleVRpbWUoKSA8IG5vcm1hbGl6ZWRWYWx1ZSkKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFs
dWUmIGZyb20gPSBtX2tleWZyYW1lcy5hdChpKTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFs
dWUmIHRvID0gbV9rZXlmcmFtZXMuYXQoaSArIDEpOworICAgICAgICBpZiAoZnJvbS5rZXlUaW1l
KCkgPiBub3JtYWxpemVkVmFsdWUgfHwgdG8ua2V5VGltZSgpIDwgbm9ybWFsaXplZFZhbHVlKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gKG5vcm1h
bGl6ZWRWYWx1ZSAtIGZyb20tPmtleVRpbWUoKSkgLyAodG8tPmtleVRpbWUoKSAtIGZyb20tPmtl
eVRpbWUoKSk7CisgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IChub3JtYWxpemVkVmFsdWUgLSBm
cm9tLmtleVRpbWUoKSkgLyAodG8ua2V5VGltZSgpIC0gZnJvbS5rZXlUaW1lKCkpOwogICAgICAg
ICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZv
ckFuaW1hdGlvblZhbHVlKGZyb20sIG1fYW5pbWF0aW9uLmdldCgpKTsKICAgICAgICAgbm9ybWFs
aXplZFZhbHVlID0gYXBwbHlUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgbm9ybWFsaXpl
ZFZhbHVlLCBtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSk7CiAgICAgICAgIGFwcGx5SW50ZXJuYWwo
Y2xpZW50LCBmcm9tLCB0bywgbm9ybWFsaXplZFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaAppbmRl
eCA5ZjBiNWM1MmFiZDk4MmQ3YmRjNDY4ODI3ZTNkOGY5MGQ2NWJhMWRiLi4yZDJmNjg1NzM1NDQy
M2ZmODFlZjE2MTQ5ZjE2NmI4M2MxNTYxMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckFuaW1hdGlvbi5oCkBAIC02Niw3
ICs2Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGxpc3RzTWF0Y2goKSBjb25zdCB7IHJldHVybiBt
X2xpc3RzTWF0Y2g7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGFwcGx5SW50ZXJuYWwoQ2xpZW50
KiwgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGZyb20sIGNvbnN0IEFuaW1hdGlvblZhbHVlKiB0bywg
ZmxvYXQgcHJvZ3Jlc3MpOworICAgIHZvaWQgYXBwbHlJbnRlcm5hbChDbGllbnQqLCBjb25zdCBB
bmltYXRpb25WYWx1ZSYgZnJvbSwgY29uc3QgQW5pbWF0aW9uVmFsdWUmIHRvLCBmbG9hdCBwcm9n
cmVzcyk7CiAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgbV9rZXlmcmFtZXM7CiAgICAgSW50U2l6ZSBt
X2JveFNpemU7CiAgICAgUmVmUHRyPEFuaW1hdGlvbj4gbV9hbmltYXRpb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cAppbmRleCAyMTBiODFhYmQ3MjIxNDk0YWQ3ZGYyNzUyNGZlMWMzOWU2ZDM3YTZjLi5mZmNhZDg3
OTZlZjRmM2Y5YTkzYjdjY2E1Y2Q0MmM1ZTE3NmM3NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTI0
Miw5ICsyNDIsMTAgQEAgc3RhdGljIGJvb2wgYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlv
bihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHZh
bHVlTGlzdC5hdChpKS0+dGltaW5nRnVuY3Rpb24oKTsKLSAgICAgICAgaWYgKHRpbWluZ0Z1bmN0
aW9uICYmIHRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWlu
Z0Z1bmN0aW9uID0gdmFsdWVMaXN0LmF0KGkpLnRpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAg
ICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yMDkxLDcgKzIwOTIsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJh
bnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZQogCiAgICAg
Ym9vbCBoYXNCaWdSb3RhdGlvbjsKICAgICBpbnQgbGlzdEluZGV4ID0gdmFsaWRhdGVUcmFuc2Zv
cm1PcGVyYXRpb25zKHZhbHVlTGlzdCwgaGFzQmlnUm90YXRpb24pOwotICAgIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSAobGlzdEluZGV4ID49IDApID8gc3RhdGljX2Nh
c3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4
KSktPnZhbHVlKCkgOiAwOworICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIG9wZXJhdGlv
bnMgPSAobGlzdEluZGV4ID49IDApID8gJnN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KGxpc3RJbmRleCkpLnZhbHVlKCkgOiAwOwogCiAgICAg
Ly8gV2UgbmVlZCB0byBmYWxsIGJhY2sgdG8gc29mdHdhcmUgYW5pbWF0aW9uIGlmIHdlIGRvbid0
IGhhdmUgc2V0VmFsdWVGdW5jdGlvbjosIGFuZAogICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gYW5p
bWF0ZSBlYWNoIGluY29taW5nIHRyYW5zZm9ybSBmdW5jdGlvbiBzZXBhcmF0ZWx5LiBUaGlzIGlz
IHRoZQpAQCAtMjE4MSwyMSArMjE4MiwyMSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRl
RmlsdGVyQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpcwogICAg
IGlmIChsaXN0SW5kZXggPCAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAg
IGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSBzdGF0aWNfY2FzdDxjb25zdCBG
aWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChsaXN0SW5kZXgpKS0+dmFsdWUoKTsK
KyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zID0gc3RhdGljX2Nhc3Q8Y29u
c3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4KSkudmFsdWUo
KTsKICAgICAvLyBNYWtlIHN1cmUgdGhlIHBsYXRmb3JtIGxheWVyIGRpZG4ndCBmYWxsYmFjayB0
byB1c2luZyBzb2Z0d2FyZSBmaWx0ZXIgY29tcG9zaXRpbmcgaW5zdGVhZC4KLSAgICBpZiAoIVBs
YXRmb3JtQ0FMYXllcjo6ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZCgqb3BlcmF0aW9ucykpCisgICAg
aWYgKCFQbGF0Zm9ybUNBTGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQob3BlcmF0aW9ucykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGludCBudW1BbmltYXRpb25zID0gb3BlcmF0
aW9ucy0+c2l6ZSgpOworICAgIGludCBudW1BbmltYXRpb25zID0gb3BlcmF0aW9ucy5zaXplKCk7
CiAKICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgY3VycmVudGx5IGhhcmR3YXJlIGFuaW1hdGUgc2hh
ZG93cy4KICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAg
ICAgICBpZiAob3BlcmF0aW9ucy0+YXQoaSktPmdldE9wZXJhdGlvblR5cGUoKSA9PSBGaWx0ZXJP
cGVyYXRpb246OkRST1BfU0hBRE9XKQorICAgICAgICBpZiAob3BlcmF0aW9ucy5hdChpKS0+Z2V0
T3BlcmF0aW9uVHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgZm9yIChpbnQgYW5pbWF0aW9uSW5kZXgg
PSAwOyBhbmltYXRpb25JbmRleCA8IG51bUFuaW1hdGlvbnM7ICsrYW5pbWF0aW9uSW5kZXgpIHsK
LSAgICAgICAgaWYgKCFhcHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyh2YWx1ZUxpc3QsIG9w
ZXJhdGlvbnMtPm9wZXJhdGlvbnMoKS5hdChhbmltYXRpb25JbmRleCkuZ2V0KCksIGFuaW1hdGlv
biwgYW5pbWF0aW9uTmFtZSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQpKQorICAgICAgICBp
ZiAoIWFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKHZhbHVlTGlzdCwgb3BlcmF0aW9ucy5v
cGVyYXRpb25zKCkuYXQoYW5pbWF0aW9uSW5kZXgpLmdldCgpLCBhbmltYXRpb24sIGFuaW1hdGlv
bk5hbWUsIGFuaW1hdGlvbkluZGV4LCB0aW1lT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTIyNTMsMTIgKzIyNTQsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVy
Q0E6OnNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qIHByb3BlcnR5QW5pbSwgY29u
c3QgQW4KICAgICBwcm9wZXJ0eUFuaW0tPnNldEZpbGxNb2RlKGZpbGxNb2RlKTsKIH0KIAotY29u
c3QgVGltaW5nRnVuY3Rpb24qIEdyYXBoaWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmlt
YXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSogYW5pbVZhbHVlLCBjb25zdCBBbmltYXRp
b24qIGFuaW0pCitjb25zdCBUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXllckNBOjp0aW1pbmdG
dW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltVmFsdWUs
IGNvbnN0IEFuaW1hdGlvbiYgYW5pbSkKIHsKLSAgICBpZiAoYW5pbVZhbHVlLT50aW1pbmdGdW5j
dGlvbigpKQotICAgICAgICByZXR1cm4gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOwotICAg
IGlmIChhbmltLT5pc1RpbWluZ0Z1bmN0aW9uU2V0KCkpCi0gICAgICAgIHJldHVybiBhbmltLT50
aW1pbmdGdW5jdGlvbigpLmdldCgpOworICAgIGlmIChhbmltVmFsdWUudGltaW5nRnVuY3Rpb24o
KSkKKyAgICAgICAgcmV0dXJuIGFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpOworICAgIGlmIChh
bmltLmlzVGltaW5nRnVuY3Rpb25TZXQoKSkKKyAgICAgICAgcmV0dXJuIGFuaW0udGltaW5nRnVu
Y3Rpb24oKS5nZXQoKTsKICAgICAKICAgICByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6ZGVmYXVsdFRpbWluZ0Z1bmN0aW9uKCk7CiB9CkBAIC0yMjcyLDggKzIyNzMsOCBAQCBib29s
IEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiB2YWx1ZUxpc3QsCiAgICAgCiAgICAgc3dpdGNoICh2YWx1ZUxpc3QucHJvcGVydHko
KSkgewogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgYmFzaWNB
bmltLT5zZXRGcm9tVmFsdWUoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+
KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKS0+dmFsdWUoKSk7Ci0gICAgICAgIGJhc2ljQW5pbS0+
c2V0VG9WYWx1ZShzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFsdWVM
aXN0LmF0KHRvSW5kZXgpKS0+dmFsdWUoKSk7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZh
bHVlKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQo
ZnJvbUluZGV4KSkudmFsdWUoKSk7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZShzdGF0
aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KHRvSW5kZXgp
KS52YWx1ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC0yMjgz
LDcgKzIyODQsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRz
KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsCiAKICAgICAvLyBUaGlzIGNvZGVw
YXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0
byBsb29rIGluIHRoZSBzdGFydAogICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBp
biB0aGUgcmV2ZXJzaW5nIGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlk
ZXMgdGhlIHRpbWluZyBmdW5jdGlvbi4KLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5n
RnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgw
KSwgYW5pbWF0aW9uKTsKKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24g
PSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1h
dGlvbik7CiAgICAgaWYgKHRpbWluZ0Z1bmN0aW9uKQogICAgICAgICBiYXNpY0FuaW0tPnNldFRp
bWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uLCAhZm9yd2FyZHMpOwogCkBAIC0yMzAwLDEzICsy
MzAxLDEzIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIHVuc2lnbmVkIGlu
ZGV4ID0gZm9yd2FyZHMgPyBpIDogKHZhbHVlTGlzdC5zaXplKCkgLSBpIC0gMSk7Ci0gICAgICAg
IGNvbnN0IEFuaW1hdGlvblZhbHVlKiBjdXJWYWx1ZSA9IHZhbHVlTGlzdC5hdChpbmRleCk7Ci0g
ICAgICAgIGtleVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLT5rZXlUaW1lKCkgOiAo
MSAtIGN1clZhbHVlLT5rZXlUaW1lKCkpKTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUm
IGN1clZhbHVlID0gdmFsdWVMaXN0LmF0KGluZGV4KTsKKyAgICAgICAga2V5VGltZXMuYXBwZW5k
KGZvcndhcmRzID8gY3VyVmFsdWUua2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS5rZXlUaW1lKCkp
KTsKIAogICAgICAgICBzd2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7CiAgICAgICAgIGNh
c2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgICAgIGNvbnN0IEZsb2F0QW5p
bWF0aW9uVmFsdWUqIGZsb2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlv
blZhbHVlKj4oY3VyVmFsdWUpOwotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChmbG9hdFZhbHVl
LT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmIGZsb2F0
VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJj4oY3VyVmFsdWUp
OworICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChmbG9hdFZhbHVlLnZhbHVlKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTIzMTUsNyArMjMx
Niw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAgICAgfQogCiAgICAgICAgIGlmIChp
IDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5h
cHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVl
IDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksIGFuaW1hdGlvbikpOworICAgICAgICAgICAgdGlt
aW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndh
cmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwog
ICAgIH0KICAgICAKICAgICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRpbWVzKTsKQEAg
LTIzMzQsMTMgKzIzMzUsMTMgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFu
aW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICB1bnNpZ25l
ZCBmcm9tSW5kZXggPSAhZm9yd2FyZHM7CiAgICAgdW5zaWduZWQgdG9JbmRleCA9IGZvcndhcmRz
OwogICAgIAotICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBzdGFydFZhbHVlID0g
c3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQo
ZnJvbUluZGV4KSk7Ci0gICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGVuZFZhbHVl
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3Qu
YXQodG9JbmRleCkpOworICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBzdGFydFZh
bHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxp
c3QuYXQoZnJvbUluZGV4KSk7CisgICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIGVu
ZFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1
ZUxpc3QuYXQodG9JbmRleCkpOwogICAgIAogICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgewog
ICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmcm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsK
LSAgICAgICAgc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwgZnJvbVRyYW5zZm9y
bSk7Ci0gICAgICAgIGVuZFZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCB0b1RyYW5zZm9y
bSk7CisgICAgICAgIHN0YXJ0VmFsdWUudmFsdWUoKS5hcHBseShib3hTaXplLCBmcm9tVHJhbnNm
b3JtKTsKKyAgICAgICAgZW5kVmFsdWUudmFsdWUoKS5hcHBseShib3hTaXplLCB0b1RyYW5zZm9y
bSk7CiAKICAgICAgICAgLy8gSWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5p
bWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24KICAg
ICAgICAgaWYgKCFmcm9tVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpIHx8ICF0b1RyYW5zZm9ybS5p
c0ludmVydGlibGUoKSkKQEAgLTIzNTEsMzQgKzIzNTIsMzQgQEAgYm9vbCBHcmFwaGljc0xheWVy
Q0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYgdmEKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRy
YW5zZm9ybU9wVHlwZSkpIHsKICAgICAgICAgICAgIGZsb2F0IGZyb21WYWx1ZTsKLSAgICAgICAg
ICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVu
Y3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAg
ICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSgpLmF0KGZ1
bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CiAgICAg
ICAgICAgICBiYXNpY0FuaW0tPnNldEZyb21WYWx1ZShmcm9tVmFsdWUpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBmbG9hdCB0b1ZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVu
Y3Rpb25WYWx1ZShlbmRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9y
bU9wVHlwZSwgYm94U2l6ZSwgdG9WYWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5j
dGlvblZhbHVlKGVuZFZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9w
VHlwZSwgYm94U2l6ZSwgdG9WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFs
dWUodG9WYWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNUcmFuc2Zvcm1UeXBlRmxvYXRQb2lu
dDNEKHRyYW5zZm9ybU9wVHlwZSkpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQzRCBmcm9tVmFs
dWU7Ci0gICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUtPnZh
bHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21W
YWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUu
dmFsdWUoKS5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCBmcm9t
VmFsdWUpOwogICAgICAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUoZnJvbVZhbHVlKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgRmxvYXRQb2ludDNEIHRvVmFsdWU7Ci0gICAgICAg
ICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5j
dGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKKyAgICAgICAg
ICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUudmFsdWUoKS5hdChmdW5jdGlv
bkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKICAgICAgICAgICAg
IGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1ZhbHVlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21WYWx1ZTsKLSAgICAgICAgICAgIGdldFRy
YW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRl
eCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAgICAgICAgIGdl
dFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5k
ZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CiAgICAgICAgICAgICBi
YXNpY0FuaW0tPnNldEZyb21WYWx1ZShmcm9tVmFsdWUpOwogCiAgICAgICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0b1ZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25W
YWx1ZShlbmRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlw
ZSwgYm94U2l6ZSwgdG9WYWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZh
bHVlKGVuZFZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwg
Ym94U2l6ZSwgdG9WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodG9W
YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQg
Zm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRo
ZSBzdGFydAogICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJz
aW5nIGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWlu
ZyBmdW5jdGlvbi4KLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0
aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9u
KTsKKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5j
dGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbik7CiAgICAg
YmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgIWZvcndhcmRzKTsK
IAogICAgIFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rp
b24gPSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1P
cFR5cGUpOwpAQCAtMjQwMCwxMiArMjQwMSwxMiBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQog
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewog
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGZvcndhcmRzID8gaSA6ICh2YWx1ZUxpc3Quc2l6ZSgp
IC0gaSAtIDEpOwotICAgICAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogY3VyVmFs
dWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlz
dC5hdChpbmRleCkpOwotICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2FyZHMgPyBjdXJWYWx1
ZS0+a2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS0+a2V5VGltZSgpKSk7CisgICAgICAgIGNvbnN0
IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KGluZGV4KSk7CisgICAgICAgIGtl
eVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLmtleVRpbWUoKSA6ICgxIC0gY3VyVmFs
dWUua2V5VGltZSgpKSk7CiAKICAgICAgICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7CiAgICAg
ICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07Ci0gICAgICAgICAgICBjdXJW
YWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwgdHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGN1
clZhbHVlLnZhbHVlKCkuYXBwbHkoYm94U2l6ZSwgdHJhbnNmb3JtKTsKIAogICAgICAgICAgICAg
Ly8gSWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0
bHkuIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24KICAgICAgICAgICAgIGlmICgh
dHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQpAQCAtMjQxMyw3ICsyNDE0LDcgQEAgYm9vbCBHcmFw
aGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYgdmEKIAogICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXhWYWx1ZXMu
YXBwZW5kKHRyYW5zZm9ybSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybU9wID0gY3VyVmFsdWUtPnZhbHVlKCktPmF0KGZ1
bmN0aW9uSW5kZXgpOworICAgICAgICAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFu
c2Zvcm1PcCA9IGN1clZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCk7CiAgICAgICAgICAg
ICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9wVHlwZSkpIHsKICAgICAgICAg
ICAgICAgICBmbG9hdCB2YWx1ZTsKICAgICAgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlv
blZhbHVlKHRyYW5zZm9ybU9wLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKQEAg
LTI0MzAsNyArMjQzMSw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1Bbmlt
YXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhCiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoaSA8ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gMSkpCi0gICAgICAgICAgICB0aW1p
bmdGdW5jdGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2Fy
ZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCBhbmltYXRpb24pKTsKKyAg
ICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICph
bmltYXRpb24pKTsKICAgICB9CiAgICAgCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhr
ZXlUaW1lcyk7CkBAIC0yNDYxLDExICsyNDYyLDExIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpz
ZXRGaWx0ZXJBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVl
CiAgICAgdW5zaWduZWQgZnJvbUluZGV4ID0gIWZvcndhcmRzOwogICAgIHVuc2lnbmVkIHRvSW5k
ZXggPSBmb3J3YXJkczsKIAotICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKiBmcm9tVmFs
dWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5h
dChmcm9tSW5kZXgpKTsKLSAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSogdG9WYWx1ZSA9
IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KHRv
SW5kZXgpKTsKKyAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSYgZnJvbVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUlu
ZGV4KSk7CisgICAgY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIHRvVmFsdWUgPSBzdGF0aWNf
Y2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdCh0b0luZGV4KSk7
CiAKLSAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb21PcGVyYXRpb24gPSBmcm9tVmFsdWUt
PnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpOwotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiog
dG9PcGVyYXRpb24gPSB0b1ZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KTsKKyAgICBj
b25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb21PcGVyYXRpb24gPSBmcm9tVmFsdWUudmFsdWUoKS5h
dChmdW5jdGlvbkluZGV4KTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIHRvT3BlcmF0aW9u
ID0gdG9WYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpOwogCiAgICAgUmVmUHRyPERlZmF1
bHRGaWx0ZXJPcGVyYXRpb24+IGRlZmF1bHRGcm9tT3BlcmF0aW9uOwogICAgIFJlZlB0cjxEZWZh
dWx0RmlsdGVyT3BlcmF0aW9uPiBkZWZhdWx0VG9PcGVyYXRpb247CkBAIC0yNDg3LDcgKzI0ODgs
NyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9uRW5kcG9pbnRzKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZQogCiAgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1
c2VkIGZvciAyLWtleWZyYW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBp
biB0aGUgc3RhcnQKICAgICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uIEV2ZW4gaW4gdGhlIHJl
dmVyc2luZyBhbmltYXRpb24gY2FzZSwgdGhlIGZpcnN0IGtleWZyYW1lIHByb3ZpZGVzIHRoZSB0
aW1pbmcgZnVuY3Rpb24uCi0gICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdG
dW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKSwgIWZv
cndhcmRzKTsKKyAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9u
Rm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKSwgIWZvcndhcmRz
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjUwMywxMSArMjUwNCwxMSBAQCBib29sIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1ZQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlz
dC5zaXplKCk7ICsraSkgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGZvcndhcmRzID8gaSA6
ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gaSAtIDEpOwotICAgICAgICBjb25zdCBGaWx0ZXJBbmltYXRp
b25WYWx1ZSogY3VyVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1
ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkpOwotICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2Fy
ZHMgPyBjdXJWYWx1ZS0+a2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS0+a2V5VGltZSgpKSk7Cisg
ICAgICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0
PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KGluZGV4KSk7CisgICAg
ICAgIGtleVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLmtleVRpbWUoKSA6ICgxIC0g
Y3VyVmFsdWUua2V5VGltZSgpKSk7CiAKLSAgICAgICAgaWYgKGN1clZhbHVlLT52YWx1ZSgpLT5v
cGVyYXRpb25zKCkuc2l6ZSgpID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihmdW5jdGlvbkluZGV4KSkK
LSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoY3VyVmFsdWUtPnZhbHVlKCktPm9wZXJhdGlvbnMo
KVtmdW5jdGlvbkluZGV4XSk7CisgICAgICAgIGlmIChjdXJWYWx1ZS52YWx1ZSgpLm9wZXJhdGlv
bnMoKS5zaXplKCkgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KGZ1bmN0aW9uSW5kZXgpKQorICAgICAg
ICAgICAgdmFsdWVzLmFwcGVuZChjdXJWYWx1ZS52YWx1ZSgpLm9wZXJhdGlvbnMoKVtmdW5jdGlv
bkluZGV4XSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKCFkZWZhdWx0T3BlcmF0
aW9uKQogICAgICAgICAgICAgICAgIGRlZmF1bHRPcGVyYXRpb24gPSBEZWZhdWx0RmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoZmlsdGVyT3ApOwpAQCAtMjUxNSw3ICsyNTE2LDcgQEAgYm9vbCBHcmFw
aGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5z
aXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVu
Y3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0
KGluZGV4IC0gMSksIGFuaW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFw
cGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUg
OiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwogICAgIH0KICAgICAKICAg
ICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRpbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggMDJj
MDIyN2U5OGM2YzUyZTg5NDNhZGFiZGQ4ZTBjOTRhNjE0YTUyMC4uMDljY2NlNDUxZjc2MTUyNzcz
NjMzY2FlYTA5MTQ2OTRlNjFkZWQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTIwNSw3ICsyMDUsNyBAQCBw
cml2YXRlOgogICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJh
bWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2
ZSk7CiAgICAgdm9pZCBzZXR1cEFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgY29uc3Qg
QW5pbWF0aW9uKiwgYm9vbCBhZGRpdGl2ZSk7CiAgICAgCi0gICAgY29uc3QgVGltaW5nRnVuY3Rp
b24qIHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUq
LCBjb25zdCBBbmltYXRpb24qKTsKKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVu
Y3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSYsIGNvbnN0IEFuaW1h
dGlvbiYpOwogICAgIAogICAgIGJvb2wgc2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOwog
ICAgIGJvb2wgc2V0QW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0Jiwg
Y29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCBiN2E1
NDdkMjAwOGE0ZjRhOWJhMWQ1MDc0NzlkOTA5NzFiNjFlMDJjLi5mZjMwYTVlOGE0NGIwYzZjZDU3
MTdmYTNlYzRlNmViZDMzYzQwZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtNzEyLDggKzcxMiw4IEBAIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllckFuaW1hdGlvbnNJZk5lZWRlZChUZXh0
dXJlTWFwcGVyTGF5ZXIqIGxhCiAgICAgICAgIGlmIChrZXlmcmFtZXMucHJvcGVydHkoKSAhPSBB
bmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwga2V5ZnJhbWVzLnNpemUoKTsgKytqKSB7Ci0gICAg
ICAgICAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSogZmlsdGVyVmFsdWUgPSBzdGF0aWNf
Y2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KGtleWZyYW1lcy5hdChpKSk7Ci0gICAg
ICAgICAgICBpbmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcygqZmlsdGVyVmFsdWUtPnZh
bHVlKCkpOworICAgICAgICAgICAgY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIGZpbHRlclZh
bHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPihrZXlmcmFtZXMu
YXQoaSkpOworICAgICAgICAgICAgaW5qZWN0Q2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoZmls
dGVyVmFsdWUudmFsdWUoKSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMWRlZmI1MmIz
NGFhODM5YTk0MzNmZmI0MDAzZjExNTQxZjkwMWU4OS4uNjQxOWUwY2JiZjFkOWZiZTA2MDIwMDhm
N2Y2ODUxOTZjYTk4MzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKQEAgLTIxMDcsMTQgKzIxMDcsMTQgQEAgYm9vbCBSZW5kZXJMYXll
ckJhY2tpbmc6OnN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmltYXRp
b24qIGFuaW0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNGaXJzdE9yTGFzdEtleWZyYW1lID0g
a2V5ID09IDAgfHwga2V5ID09IDE7CiAgICAgICAgIGlmICgoaGFzVHJhbnNmb3JtICYmIGlzRmly
c3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pKQotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmlu
c2VydChhZG9wdFB0cihuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoa2V5LCAmKGtleWZyYW1l
U3R5bGUtPnRyYW5zZm9ybSgpKSwgdGYpKSk7Ci0gICAgICAgIAorICAgICAgICAgICAgdHJhbnNm
b3JtVmVjdG9yLmluc2VydChUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleSwga2V5
ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7CisKICAgICAgICAgaWYgKChoYXNPcGFjaXR5
ICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJv
cGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KSkKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5z
ZXJ0KGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleSwga2V5ZnJhbWVTdHlsZS0+
b3BhY2l0eSgpLCB0ZikpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KEZsb2F0
QW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXksIGtleWZyYW1lU3R5bGUtPm9wYWNpdHkoKSwgdGYp
KTsKIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICAgICAgaWYgKChoYXNGaWx0ZXIgJiYg
aXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdlYmtpdEZpbHRlcikpCi0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5z
ZXJ0KGFkb3B0UHRyKG5ldyBGaWx0ZXJBbmltYXRpb25WYWx1ZShrZXksICYoa2V5ZnJhbWVTdHls
ZS0+ZmlsdGVyKCkpLCB0ZikpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoRmls
dGVyQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0
ZikpOwogI2VuZGlmCiAgICAgfQogCkBAIC0yMTU0LDggKzIxNTQsOCBAQCBib29sIFJlbmRlckxh
eWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0
eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIG9wYWNpdHlBbmltID0gdG9TdHls
ZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSk7CiAgICAgICAgIGlm
IChvcGFjaXR5QW5pbSAmJiAhb3BhY2l0eUFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7
CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCBvcGFjaXR5VmVjdG9yKEFuaW1hdGVkUHJv
cGVydHlPcGFjaXR5KTsKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KGFkb3B0UHRy
KG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUt
Pm9wYWNpdHkoKSkpKSk7Ci0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChhZG9wdFB0
cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgxLCBjb21wb3NpdGluZ09wYWNpdHkodG9TdHlsZS0+
b3BhY2l0eSgpKSkpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KEZsb2F0QW5p
bWF0aW9uVmFsdWU6OmNyZWF0ZSgwLCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFj
aXR5KCkpKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChGbG9hdEFuaW1hdGlv
blZhbHVlOjpjcmVhdGUoMSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkp
KTsKICAgICAgICAgICAgIC8vIFRoZSBib3hTaXplIHBhcmFtIGlzIG9ubHkgdXNlZCBmb3IgdHJh
bnNmb3JtIGFuaW1hdGlvbnMgKHdoaWNoIGNhbiBvbmx5IHJ1biBvbiBSZW5kZXJCb3hlcyksIHNv
IHdlIHBhc3MgYW4gZW1wdHkgc2l6ZSBoZXJlLgogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NM
YXllci0+YWRkQW5pbWF0aW9uKG9wYWNpdHlWZWN0b3IsIEludFNpemUoKSwgb3BhY2l0eUFuaW0s
IEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVy
dHlPcGFjaXR5KSwgdGltZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUg
dGhhdCB0aGUgY29ycmVjdCBvcGFjaXR5IGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVu
ZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBvcGFjaXR5LgpAQCAtMjE2OSw4ICsyMTY5LDggQEAgYm9v
bCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwg
Q1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiB0cmFuc2Zvcm1B
bmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJh
bnNmb3JtKTsKICAgICAgICAgaWYgKHRyYW5zZm9ybUFuaW0gJiYgIXRyYW5zZm9ybUFuaW0tPmlz
RW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCB0
cmFuc2Zvcm1WZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7Ci0gICAgICAg
ICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZSgwLCAmZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkpKTsKLSAgICAgICAgICAgIHRyYW5z
Zm9ybVZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDEs
ICZ0b1N0eWxlLT50cmFuc2Zvcm0oKSkpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5p
bnNlcnQoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgwLCBmcm9tU3R5bGUtPnRyYW5z
Zm9ybSgpKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KFRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlOjpjcmVhdGUoMSwgdG9TdHlsZS0+dHJhbnNmb3JtKCkpKTsKICAgICAgICAg
ICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFuc2Zvcm1WZWN0b3IsIHRv
UmVuZGVyQm94KHJlbmRlcmVyKCkpLT5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkuc2l6ZSgp
LCB0cmFuc2Zvcm1BbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlv
bihBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKSwgdGltZU9mZnNldCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCB0cmFuc2Zvcm0gaXMgdmlz
aWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIHRyYW5zZm9y
bS4KICAgICAgICAgICAgICAgICB1cGRhdGVUcmFuc2Zvcm0odG9TdHlsZSk7CkBAIC0yMTg0LDgg
KzIxODQsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJs
ZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRp
b24qIGZpbHRlckFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVy
dHlXZWJraXRGaWx0ZXIpOwogICAgICAgICBpZiAoZmlsdGVyQW5pbSAmJiAhZmlsdGVyQW5pbS0+
aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0
IGZpbHRlclZlY3RvcihBbmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKTsKLSAgICAgICAgICAg
IGZpbHRlclZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKDAs
ICZmcm9tU3R5bGUtPmZpbHRlcigpKSkpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2Vy
dChhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUoMSwgJnRvU3R5bGUtPmZpbHRlcigp
KSkpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChGaWx0ZXJBbmltYXRpb25WYWx1
ZTo6Y3JlYXRlKDAsIGZyb21TdHlsZS0+ZmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGZpbHRlclZl
Y3Rvci5pbnNlcnQoRmlsdGVyQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgxLCB0b1N0eWxlLT5maWx0
ZXIoKSkpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKGZp
bHRlclZlY3RvciwgSW50U2l6ZSgpLCBmaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRp
b25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKSwgdGltZU9m
ZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBm
aWx0ZXIgaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZp
bmFsIGZpbHRlci4KICAgICAgICAgICAgICAgICB1cGRhdGVGaWx0ZXJzKHRvU3R5bGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggNDExMDczMDg5Y2M1NTNmYzc5MTQ4MTlhNjBlZGUxNzk2NGNhYTc5ZS4uM2NhZjU3Njc2
NzhkZWUyZTdlMzcwNGIwMGZhYmM5MTc3OTBhZjFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50
Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCkBAIC02NDUsMTkgKzY0NSwx
OSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbj46OmVuY29kZShB
cmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbgogICAgIGVuY29kZXIuZW5jb2RlRW51bShrZXlm
cmFtZXMucHJvcGVydHkoKSk7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
a2V5ZnJhbWVzLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlmcmFtZXMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIHZhbHVlID0ga2V5
ZnJhbWVzLmF0KGkpOwotICAgICAgICBlbmNvZGVyIDw8IHZhbHVlLT5rZXlUaW1lKCk7Ci0gICAg
ICAgIGVuY29kZVRpbWluZ0Z1bmN0aW9uKGVuY29kZXIsIHZhbHVlLT50aW1pbmdGdW5jdGlvbigp
KTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIHZhbHVlID0ga2V5ZnJhbWVzLmF0KGkp
OworICAgICAgICBlbmNvZGVyIDw8IHZhbHVlLmtleVRpbWUoKTsKKyAgICAgICAgZW5jb2RlVGlt
aW5nRnVuY3Rpb24oZW5jb2RlciwgdmFsdWUudGltaW5nRnVuY3Rpb24oKSk7CiAgICAgICAgIHN3
aXRjaCAoa2V5ZnJhbWVzLnByb3BlcnR5KCkpIHsKICAgICAgICAgY2FzZSBBbmltYXRlZFByb3Bl
cnR5T3BhY2l0eToKLSAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRmxv
YXRBbmltYXRpb25WYWx1ZSo+KHZhbHVlKS0+dmFsdWUoKTsKKyAgICAgICAgICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSY+KHZhbHVlKS52YWx1ZSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybToKLSAgICAgICAgICAgIGVuY29kZXIgPDwgKnN0YXRpY19jYXN0PGNvbnN0IFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWUpLT52YWx1ZSgpOworICAgICAgICAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZhbHVl
KS52YWx1ZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQog
ICAgICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRGaWx0ZXI6Ci0gICAgICAgICAgICBl
bmNvZGVyIDw8ICpzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVl
KS0+dmFsdWUoKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRmls
dGVyQW5pbWF0aW9uVmFsdWUmPih2YWx1ZSkudmFsdWUoKTsKICAgICAgICAgICAgIGJyZWFrOwog
I2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6CkBAIC03MzMsMTQgKzczMywxNCBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbj46OmRlY29kZShBcmd1bWVudERlY29kZXIm
IGRlY29kZXIsIEdyYQogICAgICAgICAgICAgZmxvYXQgdmFsdWU7CiAgICAgICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBrZXlmcmFtZXMuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZh
bHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpKTsKKyAgICAgICAgICAgIGtleWZy
YW1lcy5pbnNlcnQoRmxvYXRBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleVRpbWUsIHZhbHVlLCB0
aW1pbmdGdW5jdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtOiB7CiAgICAgICAgICAgICBUcmFu
c2Zvcm1PcGVyYXRpb25zIHRyYW5zZm9ybTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUodHJhbnNmb3JtKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICBrZXlmcmFtZXMuaW5zZXJ0KGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShr
ZXlUaW1lLCAmdHJhbnNmb3JtLCB0aW1pbmdGdW5jdGlvbikpKTsKKyAgICAgICAgICAgIGtleWZy
YW1lcy5pbnNlcnQoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXlUaW1lLCB0cmFu
c2Zvcm0sIHRpbWluZ0Z1bmN0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
I2lmIEVOQUJMRShDU1NfRklMVEVSUykKQEAgLTc0OCw3ICs3NDgsNyBAQCBib29sIEFyZ3VtZW50
Q29kZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbj46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIEdyYQogICAgICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXI7CiAgICAgICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZpbHRlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAga2V5ZnJhbWVzLmluc2VydChhZG9wdFB0cihuZXcgRmlsdGVy
QW5pbWF0aW9uVmFsdWUoa2V5VGltZSwgJmZpbHRlciwgdGltaW5nRnVuY3Rpb24pKSk7CisgICAg
ICAgICAgICBrZXlmcmFtZXMuaW5zZXJ0KEZpbHRlckFuaW1hdGlvblZhbHVlOjpjcmVhdGUoa2V5
VGltZSwgZmlsdGVyLCB0aW1pbmdGdW5jdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggNTNlMDZhMmZlZDJmOGE4ZDBkZDFhYjJjNDhi
MzU1ZjQ5NTg0ZDliYS4uZDJmNWNkN2EzZThhYmFmMGY4NDkzOTMwYTY1NzNmZjI5YmY1Yzk1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9UYXJnZXQucHJpCkBAIC0xMiw2ICsxMiw3IEBAIGluY2x1ZGUoV2ViS2l0Mi5wcmkpCiBXRUJL
SVQgKz0gd3RmIGphdmFzY3JpcHRjb3JlIHdlYmNvcmUKIAogQ09ORklHICs9IHN0YXRpY2xpYgor
Q09ORklHICs9IGMrKzExCiAKIFJFU09VUkNFUyArPSAkJFBXRC9XZWJLaXQyLnFyYwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcAppbmRleCAxYzBiYTI0NDQ2YjYyY2YwZTQ2NWMwYjE1MDUzMTUwNGIwOWI5OTBhLi4wOWE3
OGU0ZTAzNDNhMTk1NTNkZWY1NTBmMjI4YmM5YjgwN2M5OTc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM0
Miw4ICszNDIsOCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUN1c3Rv
bUZpbHRlclByb3hpZXNJZk5lZWRlZChDb29yZGluYXRlZEdyYQogICAgICAgICAgICAgaWYgKGtl
eWZyYW1lcy5wcm9wZXJ0eSgpICE9IEFuaW1hdGVkUHJvcGVydHlXZWJraXRGaWx0ZXIpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
IGtleWZyYW1lcy5zaXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIGNvbnN0IEZpbHRlckFu
aW1hdGlvblZhbHVlKiBmaWx0ZXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1h
dGlvblZhbHVlKj4oa2V5ZnJhbWVzLmF0KGkpKTsKLSAgICAgICAgICAgICAgICBjaGVja0N1c3Rv
bUZpbHRlclByb2dyYW1Qcm94aWVzKCpmaWx0ZXJWYWx1ZS0+dmFsdWUoKSk7CisgICAgICAgICAg
ICAgICAgY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIGZpbHRlclZhbHVlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPihrZXlmcmFtZXMuYXQoaSkpOworICAgICAg
ICAgICAgICAgIGNoZWNrQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3hpZXMoZmlsdGVyVmFsdWUudmFs
dWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200978</attachid>
            <date>2013-05-07 14:36:33 -0700</date>
            <delta_ts>2013-05-07 15:03:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-115738-20130507233532.patch</filename>
            <type>text/plain</type>
            <size>50618</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhmYTViZjRlMGVlMGQw
YjEyNTI5NmQxZGYwZTNiOGExN2VlZGY5ZS4uZDVjZjgwYTFjMjc2YTU0NDkxZjY0ZTBhMmRmNGNi
N2UwNzMyYzM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU0IEBACiAyMDEzLTA1LTA3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgQ2xlYW4gdXAgS2V5
ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgIEFkZCBzdGF0aWMgY3JlYXRlKCkgZnVuY3Rpb25zIHRv
IHRoZSBBbmltYXRpb25WYWx1ZSBzdWJjbGFzc2VzLCBhbmQgY2hhbmdlIGEgYnVuY2ggb2YgcGFy
YW1ldGVycworICAgICAgICBhbmQgcmV0dXJuIHZhbHVlcyB0aGF0IGNhbiBuZXZlciBiZSBudWxs
IGZyb20gcG9pbnRlciB0eXBlcyB0byByZWZlcmVuY2UgdHlwZXMgdG8gYmV0dGVyIGluZGljYXRl
IHRoaXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmZpbHRlck9wZXJhdGlvbnNBdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjp2YWxpZGF0ZUZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0aW9uc0F0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnZh
bGlkYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QW5pbWF0aW9uVmFsdWU6OkFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZsb2F0QW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChGbG9hdEFuaW1hdGlvblZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0QW5pbWF0aW9uVmFsdWU6OkZsb2F0QW5pbWF0
aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OmNy
ZWF0ZSk6CisgICAgICAgIChUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZTo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OlRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckFuaW1hdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyQW5pbWF0aW9uVmFsdWU6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckFuaW1hdGlvblZhbHVlOjpGaWx0ZXJBbmltYXRpb25WYWx1ZSk6CisgICAgICAgIChGaWx0
ZXJBbmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6
fktleWZyYW1lVmFsdWVMaXN0KToKKyAgICAgICAgKEtleWZyYW1lVmFsdWVMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0OjphdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFuaW1h
dGlvbkhhc1N0ZXBzVGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUZpbHRlckFuaW1hdGlvbnNGcm9tS2V5
ZnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rp
b25Gb3JBbmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnNldEFuaW1hdGlvbkVuZHBvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q0E6OnNldEFuaW1hdGlvbktleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbkVuZHBvaW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlv
bktleWZyYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmg6CisgICAgICAgIChHcmFwaGljc0xheWVyQ0EpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNr
aW5nOjpzdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tp
bmc6OnN0YXJ0VHJhbnNpdGlvbik6CisKKzIwMTMtMDUtMDcgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBUaGUgc3RvcmFnZSBkYXRhYmFzZSB0cmFja2Vy
IHNob3VsZCBrbm93IHdoZW4gZGF0YWJhc2VzIGNvbWUgYW5kIGdvCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU3NDgKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGVi
Y2ExZmRhYjIwMDRiNGI1NGQwZmZhNjJhZGQ4NWIxN2ZlNmQwZGYuLjQ4M2FkMjdkNDY2Y2U0YTIx
OTRmZjJkYzIzZGI2MmY1NGQ5YTUwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAx
My0wNS0wNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAg
IENsZWFuIHVwIEtleWZyYW1lVmFsdWVMaXN0IGFuZCByZWxhdGVkIGNsYXNzZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTczOAorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBVcGRhdGUgZm9yIFdlYkNvcmUg
Y2hhbmdlcy4KKworICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29k
ZSk6CisKKzIwMTMtMDUtMDcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
KwogICAgICAgICBUaGUgc3RvcmFnZSBkYXRhYmFzZSB0cmFja2VyIHNob3VsZCBrbm93IHdoZW4g
ZGF0YWJhc2VzIGNvbWUgYW5kIGdvCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTU3NDgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCBjNzhiNWJlYjI2OGMxOGQyZmJlZTRmZjBl
YWNmODA3MTQzYWNiZjA3Li4wMWI2YTNmZDdhMmIwYTFmZmE0ZDZjZjU0NWFhZjBjNmU1MTdhODJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcApAQCAtNDA5LDkgKzQwOSw5IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6ZGlzdHJpYnV0
ZU9wYWNpdHkoZmxvYXQgYWNjdW11bGF0ZWRPcGFjaXR5KQogfQogCiAjaWYgRU5BQkxFKENTU19G
SUxURVJTKQotc3RhdGljIGlubGluZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmaWx0ZXJPcGVy
YXRpb25zQXQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4
KQorc3RhdGljIGlubGluZSBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25z
QXQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgc2l6ZV90IGluZGV4KQogewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVl
TGlzdC5hdChpbmRleCkpLT52YWx1ZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBG
aWx0ZXJBbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdChpbmRleCkpLnZhbHVlKCk7CiB9CiAK
IGludCBHcmFwaGljc0xheWVyOjp2YWxpZGF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCkKQEAgLTQyNCwyMyArNDI0LDIzIEBAIGludCBHcmFwaGlj
c0xheWVyOjp2YWxpZGF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlTGlzdCkKICAgICAvLyBFbXB0eSBmaWx0ZXJzIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5k
IHRoZSBmaXJzdCBub24tZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZQogICAgIHNpemVfdCBm
aXJzdEluZGV4ID0gMDsKICAgICBmb3IgKCA7IGZpcnN0SW5kZXggPCB2YWx1ZUxpc3Quc2l6ZSgp
OyArK2ZpcnN0SW5kZXgpIHsKLSAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbnNBdCh2YWx1ZUxp
c3QsIGZpcnN0SW5kZXgpLT5vcGVyYXRpb25zKCkuc2l6ZSgpID4gMCkKKyAgICAgICAgaWYgKCFm
aWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KS5vcGVyYXRpb25zKCkuaXNF
bXB0eSgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKGZpcnN0SW5kZXgg
Pj0gdmFsdWVMaXN0LnNpemUoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgY29uc3QgRmls
dGVyT3BlcmF0aW9ucyogZmlyc3RWYWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFsdWVMaXN0LCBm
aXJzdEluZGV4KTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaXJzdFZhbCA9IGZpbHRl
ck9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGZpcnN0SW5kZXgpOwogICAgIAogICAgIGZvciAoc2l6
ZV90IGkgPSBmaXJzdEluZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAg
ICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWwgPSBmaWx0ZXJPcGVyYXRpb25zQXQodmFs
dWVMaXN0LCBpKTsKKyAgICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdmFsID0gZmlsdGVy
T3BlcmF0aW9uc0F0KHZhbHVlTGlzdCwgaSk7CiAgICAgICAgIAogICAgICAgICAvLyBBbiBlbXRw
eSBmaWx0ZXIgbGlzdCBtYXRjaGVzIGFueXRoaW5nLgotICAgICAgICBpZiAodmFsLT5vcGVyYXRp
b25zKCkuaXNFbXB0eSgpKQorICAgICAgICBpZiAodmFsLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGlmICghZmlyc3RWYWwt
Pm9wZXJhdGlvbnNNYXRjaCgqdmFsKSkKKyAgICAgICAgaWYgKCFmaXJzdFZhbC5vcGVyYXRpb25z
TWF0Y2godmFsKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgCkBAIC00NTIs
OSArNDUyLDkgQEAgaW50IEdyYXBoaWNzTGF5ZXI6OnZhbGlkYXRlRmlsdGVyT3BlcmF0aW9ucyhj
b25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0KQogLy8gVGhlIGhhc0JpZ1JvdGF0aW9u
IGZsYWcgd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGlmIGlzVmFsaWQgaXMgZmFsc2UuIE90aGVy
d2lzZSBoYXNCaWdSb3RhdGlvbiBpcyAKIC8vIHRydWUgaWYgdGhlIHJvdGF0aW9uIGJldHdlZW4g
YW55IHR3byBrZXlmcmFtZXMgaXMgPj0gMTgwIGRlZ3JlZXMuCiAKLXN0YXRpYyBpbmxpbmUgY29u
c3QgVHJhbnNmb3JtT3BlcmF0aW9ucyogb3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiB2YWx1ZUxpc3QsIHNpemVfdCBpbmRleCkKK3N0YXRpYyBpbmxpbmUgY29uc3QgVHJhbnNm
b3JtT3BlcmF0aW9ucyYgb3BlcmF0aW9uc0F0KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZUxpc3QsIHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoaW5kZXgpKS0+dmFsdWUoKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1
ZUxpc3QuYXQoaW5kZXgpKS52YWx1ZSgpOwogfQogCiBpbnQgR3JhcGhpY3NMYXllcjo6dmFsaWRh
dGVUcmFuc2Zvcm1PcGVyYXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3Qs
IGJvb2wmIGhhc0JpZ1JvdGF0aW9uKQpAQCAtNDY5LDI0ICs0NjksMjQgQEAgaW50IEdyYXBoaWNz
TGF5ZXI6OnZhbGlkYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYgdmFsdWVMaXMKICAgICAvLyBFbXB0eSB0cmFuc2Zvcm1zIG1hdGNoIGFueXRoaW5nLCBzbyBm
aW5kIHRoZSBmaXJzdCBub24tZW1wdHkgZW50cnkgYXMgdGhlIHJlZmVyZW5jZS4KICAgICBzaXpl
X3QgZmlyc3RJbmRleCA9IDA7CiAgICAgZm9yICggOyBmaXJzdEluZGV4IDwgdmFsdWVMaXN0LnNp
emUoKTsgKytmaXJzdEluZGV4KSB7Ci0gICAgICAgIGlmIChvcGVyYXRpb25zQXQodmFsdWVMaXN0
LCBmaXJzdEluZGV4KS0+b3BlcmF0aW9ucygpLnNpemUoKSA+IDApCisgICAgICAgIGlmICghb3Bl
cmF0aW9uc0F0KHZhbHVlTGlzdCwgZmlyc3RJbmRleCkub3BlcmF0aW9ucygpLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKICAgICBpZiAoZmlyc3RJbmRleCA+PSB2
YWx1ZUxpc3Quc2l6ZSgpKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIAotICAgIGNvbnN0
IFRyYW5zZm9ybU9wZXJhdGlvbnMqIGZpcnN0VmFsID0gb3BlcmF0aW9uc0F0KHZhbHVlTGlzdCwg
Zmlyc3RJbmRleCk7CisgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZmlyc3RWYWwgPSBv
cGVyYXRpb25zQXQodmFsdWVMaXN0LCBmaXJzdEluZGV4KTsKICAgICAKICAgICAvLyBTZWUgaWYg
dGhlIGtleWZyYW1lcyBhcmUgdmFsaWQuCiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0SW5kZXgg
KyAxOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbnMqIHZhbCA9IG9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGkpOworICAgICAgICBj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWwgPSBvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBp
KTsKICAgICAgICAgCi0gICAgICAgIC8vIEFuIGVtdHB5IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMg
YW55dGhpbmcuCi0gICAgICAgIGlmICh2YWwtPm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCisgICAg
ICAgIC8vIEFuIGVtcHR5IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCisgICAgICAg
IGlmICh2YWwub3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgCi0gICAgICAgIGlmICghZmlyc3RWYWwtPm9wZXJhdGlvbnNNYXRjaCgqdmFs
KSkKKyAgICAgICAgaWYgKCFmaXJzdFZhbC5vcGVyYXRpb25zTWF0Y2godmFsKSkKICAgICAgICAg
ICAgIHJldHVybiAtMTsKICAgICB9CiAKQEAgLTQ5NCwyMiArNDk0LDIyIEBAIGludCBHcmFwaGlj
c0xheWVyOjp2YWxpZGF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzCiAgICAgZG91YmxlIGxhc3RSb3RBbmdsZSA9IDAuMDsKICAgICBkb3VibGUg
bWF4Um90QW5nbGUgPSAtMS4wOwogICAgICAgICAKLSAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
IGZpcnN0VmFsLT5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUgPSBmaXJzdFZhbC0+b3BlcmF0aW9ucygpLmF0
KGopLT5nZXRPcGVyYXRpb25UeXBlKCk7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBmaXJz
dFZhbC5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0
aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUgPSBmaXJzdFZhbC5vcGVyYXRpb25zKCkuYXQoaiktPmdl
dE9wZXJhdGlvblR5cGUoKTsKICAgICAgICAgCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSByb3Rh
dGlvbiBlbnRyeSwgd2UgbmVlZCB0byBzZWUgaWYgYW55IGFuZ2xlIGRpZmZlcmVuY2VzIGFyZSA+
PSAxODAgZGVnCiAgICAgICAgIGlmICh0eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRF
X1ggfHwKICAgICAgICAgICAgIHR5cGUgPT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWSB8
fAogICAgICAgICAgICAgdHlwZSA9PSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9aIHx8CiAg
ICAgICAgICAgICB0eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEKSB7Ci0gICAg
ICAgICAgICBsYXN0Um90QW5nbGUgPSBzdGF0aWNfY2FzdDxSb3RhdGVUcmFuc2Zvcm1PcGVyYXRp
b24qPihmaXJzdFZhbC0+b3BlcmF0aW9ucygpLmF0KGopLmdldCgpKS0+YW5nbGUoKTsKKyAgICAg
ICAgICAgIGxhc3RSb3RBbmdsZSA9IHN0YXRpY19jYXN0PFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bio+KGZpcnN0VmFsLm9wZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFuZ2xlKCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGlmIChtYXhSb3RBbmdsZSA8IDApCiAgICAgICAgICAgICAgICAg
bWF4Um90QW5nbGUgPSBmYWJzKGxhc3RSb3RBbmdsZSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEluZGV4ICsgMTsgaSA8IHZhbHVlTGlzdC5zaXplKCk7
ICsraSkgewotICAgICAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZhbCA9
IG9wZXJhdGlvbnNBdCh2YWx1ZUxpc3QsIGkpOwotICAgICAgICAgICAgICAgIGRvdWJsZSByb3RB
bmdsZSA9IHZhbC0+b3BlcmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90
YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odmFsLT5vcGVyYXRpb25zKCkuYXQoaikuZ2V0KCkpLT5h
bmdsZSgpKTsKKyAgICAgICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWwg
PSBvcGVyYXRpb25zQXQodmFsdWVMaXN0LCBpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgcm90
QW5nbGUgPSB2YWwub3BlcmF0aW9ucygpLmlzRW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8Um90
YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odmFsLm9wZXJhdGlvbnMoKS5hdChqKS5nZXQoKSktPmFu
Z2xlKCkpOwogICAgICAgICAgICAgICAgIGRvdWJsZSBkaWZmQW5nbGUgPSBmYWJzKHJvdEFuZ2xl
IC0gbGFzdFJvdEFuZ2xlKTsKICAgICAgICAgICAgICAgICBpZiAoZGlmZkFuZ2xlID4gbWF4Um90
QW5nbGUpCiAgICAgICAgICAgICAgICAgICAgIG1heFJvdEFuZ2xlID0gZGlmZkFuZ2xlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4
IDEzMTFmYjZlYmM3ZDg0ZTFhODIxMWQxYjc0ODk2YmUwYjQ0ZTU1MTUuLjE2ZGMwN2ZlYmI3Yzhk
ODJlN2Q5MjdkNzYzYTdlMDE1YmE4NzlmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTcyLDE4ICs3MiwxOSBAQCBjbGFzcyBU
cmFuc2Zvcm1hdGlvbk1hdHJpeDsKIGNsYXNzIEFuaW1hdGlvblZhbHVlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBbmltYXRpb25WYWx1ZShm
bG9hdCBrZXlUaW1lLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9
IDApCi0gICAgICAgIDogbV9rZXlUaW1lKGtleVRpbWUpCi0gICAgICAgICwgbV90aW1pbmdGdW5j
dGlvbih0aW1pbmdGdW5jdGlvbikKLSAgICB7Ci0gICAgfQotICAgIAogICAgIHZpcnR1YWwgfkFu
aW1hdGlvblZhbHVlKCkgeyB9CiAKICAgICBmbG9hdCBrZXlUaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9rZXlUaW1lOyB9CiAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1pbmdGdW5jdGlvbi5nZXQoKTsgfQogICAgIHZpcnR1YWwgUGFz
c093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCA9IDA7CiAKK3Byb3RlY3RlZDoK
KyAgICBBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCisgICAgICAgIDogbV9rZXlUaW1lKGtleVRpbWUpCisg
ICAgICAgICwgbV90aW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbikKKyAgICB7CisgICAgfQor
CiBwcml2YXRlOgogICAgIGZsb2F0IG1fa2V5VGltZTsKICAgICBSZWZQdHI8VGltaW5nRnVuY3Rp
b24+IG1fdGltaW5nRnVuY3Rpb247CkBAIC05MywxNiArOTQsMjUgQEAgcHJpdmF0ZToKIC8vIEZJ
WE1FOiBTaG91bGQgYmUgbW92ZWQgdG8gaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIEZsb2F0
QW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogcHVibGljOgotICAgIEZs
b2F0QW5pbWF0aW9uVmFsdWUoZmxvYXQga2V5VGltZSwgZmxvYXQgdmFsdWUsIFBhc3NSZWZQdHI8
VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25W
YWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKLSAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEZsb2F0QW5pbWF0aW9uVmFsdWU+IGNyZWF0ZShmbG9hdCBr
ZXlUaW1lLCBmbG9hdCB2YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVu
Y3Rpb24gPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1h
dGlvblZhbHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOworICAgIH0KKworICAg
IHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBPVkVSUklE
RQogICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVl
KCp0aGlzKSk7CiAgICAgfQotICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmltYXRpb25WYWx1ZT4g
Y2xvbmUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBhZG9wdFB0cihuZXcgRmxvYXRBbmltYXRp
b25WYWx1ZSgqdGhpcykpOyB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWU7IH0KIAogcHJpdmF0ZToKKyAgICBGbG9hdEFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRp
bWUsIGZsb2F0IHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlv
bikKKyAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAg
ICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICB9CisKICAgICBmbG9hdCBtX3ZhbHVl
OwogfTsKIApAQCAtMTEwLDE3ICsxMjAsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQg
YmUgbW92ZWQgdG8gaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBU
cmFuc2Zvcm1BbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVy
YXRpb25zKiB2YWx1ZSA9IDAsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0
aW9uID0gMCkKLSAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlv
bikKKyAgICBzdGF0aWMgUGFzc093blB0cjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4gY3JlYXRl
KGZsb2F0IGtleVRpbWUsIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzUmVm
UHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHZhbHVl
LCB0aW1pbmdGdW5jdGlvbikpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc093blB0cjxBbmlt
YXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBPVkVSUklERQogICAgIHsKLSAgICAgICAgaWYgKHZh
bHVlKQotICAgICAgICAgICAgbV92YWx1ZSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgqdGhpcykpOwogICAgIH0KLSAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gYWRvcHRQdHIobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAot
ICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1f
dmFsdWU7IH0KKyAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwgUGFzc1Jl
ZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAgIDogQW5pbWF0aW9u
VmFsdWUoa2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkK
KyAgICB7CisgICAgfQorCiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBtX3ZhbHVlOwogfTsKIApA
QCAtMTI5LDE3ICsxNDcsMjUgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBTaG91bGQgYmUgbW92ZWQg
dG8gaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVlIDogcHVi
bGljIEFuaW1hdGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBGaWx0ZXJBbmltYXRp
b25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWx1ZSA9IDAs
IFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKLSAgICAgICAg
OiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICBzdGF0aWMgUGFz
c093blB0cjxGaWx0ZXJBbmltYXRpb25WYWx1ZT4gY3JlYXRlKGZsb2F0IGtleVRpbWUsIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1p
bmdGdW5jdGlvbiA9IDApCiAgICAgewotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICBt
X3ZhbHVlID0gKnZhbHVlOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbHRlckFuaW1h
dGlvblZhbHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOwogICAgIH0KLSAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKCp0aGlzKSk7IH0KIAot
ICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gJm1fdmFs
dWU7IH0KKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29u
c3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsdGVyQW5p
bWF0aW9uVmFsdWUoKnRoaXMpKTsKKyAgICB9CisKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25z
JiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKKyAgICBGaWx0
ZXJBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB2
YWx1ZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCisgICAgICAg
IDogQW5pbWF0aW9uVmFsdWUoa2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCisgICAgICAgICwgbV92
YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX3ZhbHVl
OwogfTsKICNlbmRpZgpAQCAtMTYxLDYgKzE4NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBt
X3ZhbHVlcy5hcHBlbmQob3RoZXIubV92YWx1ZXNbaV0tPmNsb25lKCkpOwogICAgIH0KIAorICAg
IH5LZXlmcmFtZVZhbHVlTGlzdCgpCisgICAgeworICAgIH0KKwogICAgIEtleWZyYW1lVmFsdWVM
aXN0JiBvcGVyYXRvcj0oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIG90aGVyKQogICAgIHsKICAg
ICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgY29weShvdGhlcik7CkBAIC0xNzcsNyArMjA3LDcgQEAg
cHVibGljOgogICAgIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvcGVydHk7IH0KIAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZXMuc2l6ZSgpOyB9Ci0gICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGF0KHNpemVfdCBpKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlcy5hdChpKS5nZXQoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvblZh
bHVlJiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gKm1fdmFsdWVzLmF0KGkpOyB9CiAgICAg
CiAgICAgLy8gSW5zZXJ0LCBzb3J0ZWQgYnkga2V5VGltZS4KICAgICB2b2lkIGluc2VydChQYXNz
T3duUHRyPGNvbnN0IEFuaW1hdGlvblZhbHVlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCmluZGV4
IGQwMjY1OThiMDI2ZmJkMDA1NGNlYmM2MzcwZjFhZmVlMzQ0OWNjYjUuLjIwNmQ3MDdiM2FkMTUw
MWFlNTFiMzFkNTYyNDgwZGJhNjJlMDVmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCkBAIC0z
OSwyNyArMzksMjcgQEAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4g
YmxlbmRGdW5jKEZpbHRlck9wZXJhdGlvbiogZnJvbU9wLCBGaWwKIH0KIAogCi1zdGF0aWMgRmls
dGVyT3BlcmF0aW9ucyBhcHBseUZpbHRlckFuaW1hdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRpb25z
KiBmcm9tLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25z
dCBJbnRTaXplJiBib3hTaXplKQorc3RhdGljIEZpbHRlck9wZXJhdGlvbnMgYXBwbHlGaWx0ZXJB
bmltYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZnJvbSwgY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgdG8sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKIHsKICAg
ICAvLyBGaXJzdCBmcmFtZSBvZiBhbiBhbmltYXRpb24uCiAgICAgaWYgKCFwcm9ncmVzcykKLSAg
ICAgICAgcmV0dXJuICpmcm9tOworICAgICAgICByZXR1cm4gZnJvbTsKIAogICAgIC8vIExhc3Qg
ZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmIChwcm9ncmVzcyA9PSAxKQotICAgICAgICBy
ZXR1cm4gKnRvOworICAgICAgICByZXR1cm4gdG87CiAKLSAgICBpZiAoIWZyb20tPmlzRW1wdHko
KSAmJiAhdG8tPmlzRW1wdHkoKSAmJiAhZnJvbS0+b3BlcmF0aW9uc01hdGNoKCp0bykpCi0gICAg
ICAgIHJldHVybiAqdG87CisgICAgaWYgKCFmcm9tLmlzRW1wdHkoKSAmJiAhdG8uaXNFbXB0eSgp
ICYmICFmcm9tLm9wZXJhdGlvbnNNYXRjaCh0bykpCisgICAgICAgIHJldHVybiB0bzsKIAogICAg
IEZpbHRlck9wZXJhdGlvbnMgcmVzdWx0OwogCi0gICAgc2l6ZV90IGZyb21TaXplID0gZnJvbS0+
b3BlcmF0aW9ucygpLnNpemUoKTsKLSAgICBzaXplX3QgdG9TaXplID0gdG8tPm9wZXJhdGlvbnMo
KS5zaXplKCk7CisgICAgc2l6ZV90IGZyb21TaXplID0gZnJvbS5vcGVyYXRpb25zKCkuc2l6ZSgp
OworICAgIHNpemVfdCB0b1NpemUgPSB0by5vcGVyYXRpb25zKCkuc2l6ZSgpOwogICAgIHNpemVf
dCBzaXplID0gc3RkOjptYXgoZnJvbVNpemUsIHRvU2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZnJv
bU9wID0gKGkgPCBmcm9tU2l6ZSkgPyBmcm9tLT5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwot
ICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8t
Pm9wZXJhdGlvbnMoKVtpXS5nZXQoKSA6IDA7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IGZyb21PcCA9IChpIDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkg
OiAwOworICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUp
ID8gdG8ub3BlcmF0aW9ucygpW2ldLmdldCgpIDogMDsKICAgICAgICAgUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gYmxlbmRlZE9wID0gdG9PcCA/IGJsZW5kRnVuYyhmcm9tT3AuZ2V0KCksIHRvT3Au
Z2V0KCksIHByb2dyZXNzLCBib3hTaXplKSA6IChmcm9tT3AgPyBibGVuZEZ1bmMoMCwgZnJvbU9w
LmdldCgpLCBwcm9ncmVzcywgYm94U2l6ZSwgdHJ1ZSkgOiAwKTsKICAgICAgICAgaWYgKGJsZW5k
ZWRPcCkKICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7
CkBAIC0xNTUsNTggKzE1NSw1OCBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVu
Y3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbAogICAgIHJldHVy
biBwcm9ncmVzczsKIH0KIAotc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFwcGx5VHJhbnNm
b3JtQW5pbWF0aW9uKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIGZyb20sIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMqIHRvLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IEludFNpemUmIGJveFNp
emUsIGJvb2wgbGlzdHNNYXRjaCkKK3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcHBseVRy
YW5zZm9ybUFuaW1hdGlvbihjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb25zJiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBJbnRTaXplJiBi
b3hTaXplLCBib29sIGxpc3RzTWF0Y2gpCiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0
cml4OwogCiAgICAgLy8gRmlyc3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmICghcHJv
Z3Jlc3MpIHsKLSAgICAgICAgZnJvbS0+YXBwbHkoYm94U2l6ZSwgbWF0cml4KTsKKyAgICAgICAg
ZnJvbS5hcHBseShib3hTaXplLCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAg
IH0KIAogICAgIC8vIExhc3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgogICAgIGlmIChwcm9ncmVz
cyA9PSAxKSB7Ci0gICAgICAgIHRvLT5hcHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICB0
by5hcHBseShib3hTaXplLCBtYXRyaXgpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0K
IAogICAgIC8vIElmIHdlIGhhdmUgaW5jb21wYXRpYmxlIG9wZXJhdGlvbiBsaXN0cywgd2UgYmxl
bmQgdGhlIHJlc3VsdGluZyBtYXRyaWNlcy4KICAgICBpZiAoIWxpc3RzTWF0Y2gpIHsKICAgICAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbU1hdHJpeDsKLSAgICAgICAgdG8tPmFwcGx5KGJv
eFNpemUsIG1hdHJpeCk7Ci0gICAgICAgIGZyb20tPmFwcGx5KGJveFNpemUsIGZyb21NYXRyaXgp
OworICAgICAgICB0by5hcHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICBmcm9tLmFwcGx5
KGJveFNpemUsIGZyb21NYXRyaXgpOwogICAgICAgICBtYXRyaXguYmxlbmQoZnJvbU1hdHJpeCwg
cHJvZ3Jlc3MpOwogICAgICAgICByZXR1cm4gbWF0cml4OwogICAgIH0KIAogICAgIC8vIEFuaW1h
dGlvbiB0byAiLXdlYmtpdC10cmFuc2Zvcm06IG5vbmUiLgotICAgIGlmICghdG8tPnNpemUoKSkg
ewotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQoKmZyb20pOworICAgIGlmICgh
dG8uc2l6ZSgpKSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRlZChmcm9tKTsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibGVuZGVkLm9wZXJhdGlvbnMoKS5zaXpl
KCk7ICsraSkKICAgICAgICAgICAgIGJsZW5kZWQub3BlcmF0aW9ucygpW2ldLT5ibGVuZCgwLCBw
cm9ncmVzcywgdHJ1ZSktPmFwcGx5KG1hdHJpeCwgYm94U2l6ZSk7CiAgICAgICAgIHJldHVybiBt
YXRyaXg7CiAgICAgfQogCiAgICAgLy8gQW5pbWF0aW9uIGZyb20gIi13ZWJraXQtdHJhbnNmb3Jt
OiBub25lIi4KLSAgICBpZiAoIWZyb20tPnNpemUoKSkgewotICAgICAgICBUcmFuc2Zvcm1PcGVy
YXRpb25zIGJsZW5kZWQoKnRvKTsKKyAgICBpZiAoIWZyb20uc2l6ZSgpKSB7CisgICAgICAgIFRy
YW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRlZCh0byk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYmxlbmRlZC5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBibGVu
ZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoMCwgMS4gLSBwcm9ncmVzcywgdHJ1ZSktPmFwcGx5
KG1hdHJpeCwgYm94U2l6ZSk7CiAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgfQogCiAgICAg
Ly8gTm9ybWFsIGFuaW1hdGlvbiB3aXRoIGEgbWF0Y2hpbmcgb3BlcmF0aW9uIGxpc3QuCi0gICAg
VHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZGVkKCp0byk7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9u
cyBibGVuZGVkKHRvKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsZW5kZWQub3BlcmF0
aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+Ymxl
bmQoZnJvbS0+YXQoaSksIHByb2dyZXNzLCAhZnJvbS0+YXQoaSkpLT5hcHBseShtYXRyaXgsIGJv
eFNpemUpOworICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS5hdChp
KSwgcHJvZ3Jlc3MsICFmcm9tLmF0KGkpKS0+YXBwbHkobWF0cml4LCBib3hTaXplKTsKICAgICBy
ZXR1cm4gbWF0cml4OwogfQogCi1zdGF0aWMgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1
bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqIGFuaW1WYWx1ZSwg
Y29uc3QgQW5pbWF0aW9uKiBhbmltKQorc3RhdGljIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1p
bmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltVmFs
dWUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkKIHsKLSAgICBpZiAoYW5pbVZhbHVlLT50aW1pbmdG
dW5jdGlvbigpKQotICAgICAgICByZXR1cm4gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOwor
ICAgIGlmIChhbmltVmFsdWUudGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGFuaW1W
YWx1ZS50aW1pbmdGdW5jdGlvbigpOwogICAgIGlmIChhbmltLT50aW1pbmdGdW5jdGlvbigpKQog
ICAgICAgICByZXR1cm4gYW5pbS0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKIApAQCAtMjI3LDE4
ICsyMjcsMTggQEAgR3JhcGhpY3NMYXllckFuaW1hdGlvbjo6R3JhcGhpY3NMYXllckFuaW1hdGlv
bihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtleWZyYW0KIHsKIH0KIAotdm9pZCBHcmFwaGlj
c0xheWVyQW5pbWF0aW9uOjphcHBseUludGVybmFsKENsaWVudCogY2xpZW50LCBjb25zdCBBbmlt
YXRpb25WYWx1ZSogZnJvbSwgY29uc3QgQW5pbWF0aW9uVmFsdWUqIHRvLCBmbG9hdCBwcm9ncmVz
cykKK3ZvaWQgR3JhcGhpY3NMYXllckFuaW1hdGlvbjo6YXBwbHlJbnRlcm5hbChDbGllbnQqIGNs
aWVudCwgY29uc3QgQW5pbWF0aW9uVmFsdWUmIGZyb20sIGNvbnN0IEFuaW1hdGlvblZhbHVlJiB0
bywgZmxvYXQgcHJvZ3Jlc3MpCiB7CiAgICAgc3dpdGNoIChtX2tleWZyYW1lcy5wcm9wZXJ0eSgp
KSB7CiAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eToKLSAgICAgICAgY2xpZW50LT5z
ZXRBbmltYXRlZE9wYWNpdHkoYXBwbHlPcGFjaXR5QW5pbWF0aW9uKChzdGF0aWNfY2FzdDxjb25z
dCBGbG9hdEFuaW1hdGlvblZhbHVlKj4oZnJvbSktPnZhbHVlKCkpLCAoc3RhdGljX2Nhc3Q8Y29u
c3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KHRvKS0+dmFsdWUoKSksIHByb2dyZXNzKSk7CisgICAg
ICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRPcGFjaXR5KGFwcGx5T3BhY2l0eUFuaW1hdGlvbigoc3Rh
dGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSY+KGZyb20pLnZhbHVlKCkpLCAoc3Rh
dGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSY+KHRvKS52YWx1ZSgpKSwgcHJvZ3Jl
c3MpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybToKLSAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZFRyYW5zZm9ybShhcHBseVRyYW5z
Zm9ybUFuaW1hdGlvbihzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+
KGZyb20pLT52YWx1ZSgpLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSo+KHRvKS0+dmFsdWUoKSwgcHJvZ3Jlc3MsIG1fYm94U2l6ZSwgbV9saXN0c01hdGNoKSk7Cisg
ICAgICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRUcmFuc2Zvcm0oYXBwbHlUcmFuc2Zvcm1BbmltYXRp
b24oc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPihmcm9tKS52YWx1
ZSgpLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHRvKS52YWx1
ZSgpLCBwcm9ncmVzcywgbV9ib3hTaXplLCBtX2xpc3RzTWF0Y2gpKTsKICAgICAgICAgcmV0dXJu
OwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJr
aXRGaWx0ZXI6Ci0gICAgICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRGaWx0ZXJzKGFwcGx5RmlsdGVy
QW5pbWF0aW9uKHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4oZnJvbSkt
PnZhbHVlKCksIHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odG8pLT52
YWx1ZSgpLCBwcm9ncmVzcywgbV9ib3hTaXplKSk7CisgICAgICAgIGNsaWVudC0+c2V0QW5pbWF0
ZWRGaWx0ZXJzKGFwcGx5RmlsdGVyQW5pbWF0aW9uKHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFu
aW1hdGlvblZhbHVlJj4oZnJvbSkudmFsdWUoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5p
bWF0aW9uVmFsdWUmPih0bykudmFsdWUoKSwgcHJvZ3Jlc3MsIG1fYm94U2l6ZSkpOwogICAgICAg
ICByZXR1cm47CiAjZW5kaWYKICAgICBkZWZhdWx0OgpAQCAtMzA0LDEyICszMDQsMTIgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjphcHBseShDbGllbnQqIGNsaWVudCkKICAgICB9CiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fa2V5ZnJhbWVzLnNpemUoKSAtIDE7ICsraSkg
ewotICAgICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSogZnJvbSA9IG1fa2V5ZnJhbWVzLmF0KGkp
OwotICAgICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSogdG8gPSBtX2tleWZyYW1lcy5hdChpICsg
MSk7Ci0gICAgICAgIGlmIChmcm9tLT5rZXlUaW1lKCkgPiBub3JtYWxpemVkVmFsdWUgfHwgdG8t
PmtleVRpbWUoKSA8IG5vcm1hbGl6ZWRWYWx1ZSkKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFs
dWUmIGZyb20gPSBtX2tleWZyYW1lcy5hdChpKTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFs
dWUmIHRvID0gbV9rZXlmcmFtZXMuYXQoaSArIDEpOworICAgICAgICBpZiAoZnJvbS5rZXlUaW1l
KCkgPiBub3JtYWxpemVkVmFsdWUgfHwgdG8ua2V5VGltZSgpIDwgbm9ybWFsaXplZFZhbHVlKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gKG5vcm1h
bGl6ZWRWYWx1ZSAtIGZyb20tPmtleVRpbWUoKSkgLyAodG8tPmtleVRpbWUoKSAtIGZyb20tPmtl
eVRpbWUoKSk7CisgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IChub3JtYWxpemVkVmFsdWUgLSBm
cm9tLmtleVRpbWUoKSkgLyAodG8ua2V5VGltZSgpIC0gZnJvbS5rZXlUaW1lKCkpOwogICAgICAg
ICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZv
ckFuaW1hdGlvblZhbHVlKGZyb20sIG1fYW5pbWF0aW9uLmdldCgpKTsKICAgICAgICAgbm9ybWFs
aXplZFZhbHVlID0gYXBwbHlUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgbm9ybWFsaXpl
ZFZhbHVlLCBtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSk7CiAgICAgICAgIGFwcGx5SW50ZXJuYWwo
Y2xpZW50LCBmcm9tLCB0bywgbm9ybWFsaXplZFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaAppbmRl
eCA5ZjBiNWM1MmFiZDk4MmQ3YmRjNDY4ODI3ZTNkOGY5MGQ2NWJhMWRiLi4yZDJmNjg1NzM1NDQy
M2ZmODFlZjE2MTQ5ZjE2NmI4M2MxNTYxMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckFuaW1hdGlvbi5oCkBAIC02Niw3
ICs2Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGxpc3RzTWF0Y2goKSBjb25zdCB7IHJldHVybiBt
X2xpc3RzTWF0Y2g7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGFwcGx5SW50ZXJuYWwoQ2xpZW50
KiwgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGZyb20sIGNvbnN0IEFuaW1hdGlvblZhbHVlKiB0bywg
ZmxvYXQgcHJvZ3Jlc3MpOworICAgIHZvaWQgYXBwbHlJbnRlcm5hbChDbGllbnQqLCBjb25zdCBB
bmltYXRpb25WYWx1ZSYgZnJvbSwgY29uc3QgQW5pbWF0aW9uVmFsdWUmIHRvLCBmbG9hdCBwcm9n
cmVzcyk7CiAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgbV9rZXlmcmFtZXM7CiAgICAgSW50U2l6ZSBt
X2JveFNpemU7CiAgICAgUmVmUHRyPEFuaW1hdGlvbj4gbV9hbmltYXRpb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cAppbmRleCAyMTBiODFhYmQ3MjIxNDk0YWQ3ZGYyNzUyNGZlMWMzOWU2ZDM3YTZjLi5mZmNhZDg3
OTZlZjRmM2Y5YTkzYjdjY2E1Y2Q0MmM1ZTE3NmM3NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTI0
Miw5ICsyNDIsMTAgQEAgc3RhdGljIGJvb2wgYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlv
bihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LAogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHZh
bHVlTGlzdC5hdChpKS0+dGltaW5nRnVuY3Rpb24oKTsKLSAgICAgICAgaWYgKHRpbWluZ0Z1bmN0
aW9uICYmIHRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWlu
Z0Z1bmN0aW9uID0gdmFsdWVMaXN0LmF0KGkpLnRpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAg
ICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yMDkxLDcgKzIwOTIsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJh
bnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZQogCiAgICAg
Ym9vbCBoYXNCaWdSb3RhdGlvbjsKICAgICBpbnQgbGlzdEluZGV4ID0gdmFsaWRhdGVUcmFuc2Zv
cm1PcGVyYXRpb25zKHZhbHVlTGlzdCwgaGFzQmlnUm90YXRpb24pOwotICAgIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSAobGlzdEluZGV4ID49IDApID8gc3RhdGljX2Nh
c3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4
KSktPnZhbHVlKCkgOiAwOworICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIG9wZXJhdGlv
bnMgPSAobGlzdEluZGV4ID49IDApID8gJnN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KGxpc3RJbmRleCkpLnZhbHVlKCkgOiAwOwogCiAgICAg
Ly8gV2UgbmVlZCB0byBmYWxsIGJhY2sgdG8gc29mdHdhcmUgYW5pbWF0aW9uIGlmIHdlIGRvbid0
IGhhdmUgc2V0VmFsdWVGdW5jdGlvbjosIGFuZAogICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gYW5p
bWF0ZSBlYWNoIGluY29taW5nIHRyYW5zZm9ybSBmdW5jdGlvbiBzZXBhcmF0ZWx5LiBUaGlzIGlz
IHRoZQpAQCAtMjE4MSwyMSArMjE4MiwyMSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRl
RmlsdGVyQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpcwogICAg
IGlmIChsaXN0SW5kZXggPCAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAg
IGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqIG9wZXJhdGlvbnMgPSBzdGF0aWNfY2FzdDxjb25zdCBG
aWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChsaXN0SW5kZXgpKS0+dmFsdWUoKTsK
KyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zID0gc3RhdGljX2Nhc3Q8Y29u
c3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQobGlzdEluZGV4KSkudmFsdWUo
KTsKICAgICAvLyBNYWtlIHN1cmUgdGhlIHBsYXRmb3JtIGxheWVyIGRpZG4ndCBmYWxsYmFjayB0
byB1c2luZyBzb2Z0d2FyZSBmaWx0ZXIgY29tcG9zaXRpbmcgaW5zdGVhZC4KLSAgICBpZiAoIVBs
YXRmb3JtQ0FMYXllcjo6ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZCgqb3BlcmF0aW9ucykpCisgICAg
aWYgKCFQbGF0Zm9ybUNBTGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQob3BlcmF0aW9ucykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGludCBudW1BbmltYXRpb25zID0gb3BlcmF0
aW9ucy0+c2l6ZSgpOworICAgIGludCBudW1BbmltYXRpb25zID0gb3BlcmF0aW9ucy5zaXplKCk7
CiAKICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgY3VycmVudGx5IGhhcmR3YXJlIGFuaW1hdGUgc2hh
ZG93cy4KICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAg
ICAgICBpZiAob3BlcmF0aW9ucy0+YXQoaSktPmdldE9wZXJhdGlvblR5cGUoKSA9PSBGaWx0ZXJP
cGVyYXRpb246OkRST1BfU0hBRE9XKQorICAgICAgICBpZiAob3BlcmF0aW9ucy5hdChpKS0+Z2V0
T3BlcmF0aW9uVHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgZm9yIChpbnQgYW5pbWF0aW9uSW5kZXgg
PSAwOyBhbmltYXRpb25JbmRleCA8IG51bUFuaW1hdGlvbnM7ICsrYW5pbWF0aW9uSW5kZXgpIHsK
LSAgICAgICAgaWYgKCFhcHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyh2YWx1ZUxpc3QsIG9w
ZXJhdGlvbnMtPm9wZXJhdGlvbnMoKS5hdChhbmltYXRpb25JbmRleCkuZ2V0KCksIGFuaW1hdGlv
biwgYW5pbWF0aW9uTmFtZSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQpKQorICAgICAgICBp
ZiAoIWFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKHZhbHVlTGlzdCwgb3BlcmF0aW9ucy5v
cGVyYXRpb25zKCkuYXQoYW5pbWF0aW9uSW5kZXgpLmdldCgpLCBhbmltYXRpb24sIGFuaW1hdGlv
bk5hbWUsIGFuaW1hdGlvbkluZGV4LCB0aW1lT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTIyNTMsMTIgKzIyNTQsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVy
Q0E6OnNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qIHByb3BlcnR5QW5pbSwgY29u
c3QgQW4KICAgICBwcm9wZXJ0eUFuaW0tPnNldEZpbGxNb2RlKGZpbGxNb2RlKTsKIH0KIAotY29u
c3QgVGltaW5nRnVuY3Rpb24qIEdyYXBoaWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmlt
YXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSogYW5pbVZhbHVlLCBjb25zdCBBbmltYXRp
b24qIGFuaW0pCitjb25zdCBUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXllckNBOjp0aW1pbmdG
dW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltVmFsdWUs
IGNvbnN0IEFuaW1hdGlvbiYgYW5pbSkKIHsKLSAgICBpZiAoYW5pbVZhbHVlLT50aW1pbmdGdW5j
dGlvbigpKQotICAgICAgICByZXR1cm4gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOwotICAg
IGlmIChhbmltLT5pc1RpbWluZ0Z1bmN0aW9uU2V0KCkpCi0gICAgICAgIHJldHVybiBhbmltLT50
aW1pbmdGdW5jdGlvbigpLmdldCgpOworICAgIGlmIChhbmltVmFsdWUudGltaW5nRnVuY3Rpb24o
KSkKKyAgICAgICAgcmV0dXJuIGFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpOworICAgIGlmIChh
bmltLmlzVGltaW5nRnVuY3Rpb25TZXQoKSkKKyAgICAgICAgcmV0dXJuIGFuaW0udGltaW5nRnVu
Y3Rpb24oKS5nZXQoKTsKICAgICAKICAgICByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6ZGVmYXVsdFRpbWluZ0Z1bmN0aW9uKCk7CiB9CkBAIC0yMjcyLDggKzIyNzMsOCBAQCBib29s
IEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiB2YWx1ZUxpc3QsCiAgICAgCiAgICAgc3dpdGNoICh2YWx1ZUxpc3QucHJvcGVydHko
KSkgewogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgYmFzaWNB
bmltLT5zZXRGcm9tVmFsdWUoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+
KHZhbHVlTGlzdC5hdChmcm9tSW5kZXgpKS0+dmFsdWUoKSk7Ci0gICAgICAgIGJhc2ljQW5pbS0+
c2V0VG9WYWx1ZShzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFsdWVM
aXN0LmF0KHRvSW5kZXgpKS0+dmFsdWUoKSk7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZh
bHVlKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQo
ZnJvbUluZGV4KSkudmFsdWUoKSk7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZShzdGF0
aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KHRvSW5kZXgp
KS52YWx1ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC0yMjgz
LDcgKzIyODQsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRz
KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsCiAKICAgICAvLyBUaGlzIGNvZGVw
YXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0
byBsb29rIGluIHRoZSBzdGFydAogICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBp
biB0aGUgcmV2ZXJzaW5nIGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlk
ZXMgdGhlIHRpbWluZyBmdW5jdGlvbi4KLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5n
RnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgw
KSwgYW5pbWF0aW9uKTsKKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24g
PSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1h
dGlvbik7CiAgICAgaWYgKHRpbWluZ0Z1bmN0aW9uKQogICAgICAgICBiYXNpY0FuaW0tPnNldFRp
bWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uLCAhZm9yd2FyZHMpOwogCkBAIC0yMzAwLDEzICsy
MzAxLDEzIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIHVuc2lnbmVkIGlu
ZGV4ID0gZm9yd2FyZHMgPyBpIDogKHZhbHVlTGlzdC5zaXplKCkgLSBpIC0gMSk7Ci0gICAgICAg
IGNvbnN0IEFuaW1hdGlvblZhbHVlKiBjdXJWYWx1ZSA9IHZhbHVlTGlzdC5hdChpbmRleCk7Ci0g
ICAgICAgIGtleVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLT5rZXlUaW1lKCkgOiAo
MSAtIGN1clZhbHVlLT5rZXlUaW1lKCkpKTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUm
IGN1clZhbHVlID0gdmFsdWVMaXN0LmF0KGluZGV4KTsKKyAgICAgICAga2V5VGltZXMuYXBwZW5k
KGZvcndhcmRzID8gY3VyVmFsdWUua2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS5rZXlUaW1lKCkp
KTsKIAogICAgICAgICBzd2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7CiAgICAgICAgIGNh
c2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgICAgIGNvbnN0IEZsb2F0QW5p
bWF0aW9uVmFsdWUqIGZsb2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlv
blZhbHVlKj4oY3VyVmFsdWUpOwotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChmbG9hdFZhbHVl
LT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmIGZsb2F0
VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlJj4oY3VyVmFsdWUp
OworICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChmbG9hdFZhbHVlLnZhbHVlKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTIzMTUsNyArMjMx
Niw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAgICAgfQogCiAgICAgICAgIGlmIChp
IDwgKHZhbHVlTGlzdC5zaXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5h
cHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVl
IDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksIGFuaW1hdGlvbikpOworICAgICAgICAgICAgdGlt
aW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndh
cmRzID8gY3VyVmFsdWUgOiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwog
ICAgIH0KICAgICAKICAgICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRpbWVzKTsKQEAg
LTIzMzQsMTMgKzIzMzUsMTMgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFu
aW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmEKICAgICB1bnNpZ25l
ZCBmcm9tSW5kZXggPSAhZm9yd2FyZHM7CiAgICAgdW5zaWduZWQgdG9JbmRleCA9IGZvcndhcmRz
OwogICAgIAotICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBzdGFydFZhbHVlID0g
c3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQo
ZnJvbUluZGV4KSk7Ci0gICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGVuZFZhbHVl
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3Qu
YXQodG9JbmRleCkpOworICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBzdGFydFZh
bHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxp
c3QuYXQoZnJvbUluZGV4KSk7CisgICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIGVu
ZFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPih2YWx1
ZUxpc3QuYXQodG9JbmRleCkpOwogICAgIAogICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgewog
ICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmcm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsK
LSAgICAgICAgc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwgZnJvbVRyYW5zZm9y
bSk7Ci0gICAgICAgIGVuZFZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCB0b1RyYW5zZm9y
bSk7CisgICAgICAgIHN0YXJ0VmFsdWUudmFsdWUoKS5hcHBseShib3hTaXplLCBmcm9tVHJhbnNm
b3JtKTsKKyAgICAgICAgZW5kVmFsdWUudmFsdWUoKS5hcHBseShib3hTaXplLCB0b1RyYW5zZm9y
bSk7CiAKICAgICAgICAgLy8gSWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5p
bWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24KICAg
ICAgICAgaWYgKCFmcm9tVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpIHx8ICF0b1RyYW5zZm9ybS5p
c0ludmVydGlibGUoKSkKQEAgLTIzNTEsMzQgKzIzNTIsMzQgQEAgYm9vbCBHcmFwaGljc0xheWVy
Q0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYgdmEKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRy
YW5zZm9ybU9wVHlwZSkpIHsKICAgICAgICAgICAgIGZsb2F0IGZyb21WYWx1ZTsKLSAgICAgICAg
ICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVu
Y3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAg
ICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSgpLmF0KGZ1
bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CiAgICAg
ICAgICAgICBiYXNpY0FuaW0tPnNldEZyb21WYWx1ZShmcm9tVmFsdWUpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBmbG9hdCB0b1ZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVu
Y3Rpb25WYWx1ZShlbmRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9y
bU9wVHlwZSwgYm94U2l6ZSwgdG9WYWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5j
dGlvblZhbHVlKGVuZFZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9w
VHlwZSwgYm94U2l6ZSwgdG9WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFs
dWUodG9WYWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNUcmFuc2Zvcm1UeXBlRmxvYXRQb2lu
dDNEKHRyYW5zZm9ybU9wVHlwZSkpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQzRCBmcm9tVmFs
dWU7Ci0gICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUtPnZh
bHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21W
YWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUu
dmFsdWUoKS5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCBmcm9t
VmFsdWUpOwogICAgICAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUoZnJvbVZhbHVlKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgRmxvYXRQb2ludDNEIHRvVmFsdWU7Ci0gICAgICAg
ICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5j
dGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKKyAgICAgICAg
ICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUudmFsdWUoKS5hdChmdW5jdGlv
bkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB0b1ZhbHVlKTsKICAgICAgICAgICAg
IGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1ZhbHVlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21WYWx1ZTsKLSAgICAgICAgICAgIGdldFRy
YW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRl
eCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgZnJvbVZhbHVlKTsKKyAgICAgICAgICAgIGdl
dFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5k
ZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIGZyb21WYWx1ZSk7CiAgICAgICAgICAgICBi
YXNpY0FuaW0tPnNldEZyb21WYWx1ZShmcm9tVmFsdWUpOwogCiAgICAgICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0b1ZhbHVlOwotICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25W
YWx1ZShlbmRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlw
ZSwgYm94U2l6ZSwgdG9WYWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZh
bHVlKGVuZFZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwg
Ym94U2l6ZSwgdG9WYWx1ZSk7CiAgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodG9W
YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQg
Zm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRo
ZSBzdGFydAogICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4gRXZlbiBpbiB0aGUgcmV2ZXJz
aW5nIGFuaW1hdGlvbiBjYXNlLCB0aGUgZmlyc3Qga2V5ZnJhbWUgcHJvdmlkZXMgdGhlIHRpbWlu
ZyBmdW5jdGlvbi4KLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0
aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9u
KTsKKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5j
dGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgKmFuaW1hdGlvbik7CiAgICAg
YmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbiwgIWZvcndhcmRzKTsK
IAogICAgIFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rp
b24gPSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1P
cFR5cGUpOwpAQCAtMjQwMCwxMiArMjQwMSwxMiBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YQog
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewog
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGZvcndhcmRzID8gaSA6ICh2YWx1ZUxpc3Quc2l6ZSgp
IC0gaSAtIDEpOwotICAgICAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogY3VyVmFs
dWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlz
dC5hdChpbmRleCkpOwotICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2FyZHMgPyBjdXJWYWx1
ZS0+a2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS0+a2V5VGltZSgpKSk7CisgICAgICAgIGNvbnN0
IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KGluZGV4KSk7CisgICAgICAgIGtl
eVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLmtleVRpbWUoKSA6ICgxIC0gY3VyVmFs
dWUua2V5VGltZSgpKSk7CiAKICAgICAgICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7CiAgICAg
ICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07Ci0gICAgICAgICAgICBjdXJW
YWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwgdHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGN1
clZhbHVlLnZhbHVlKCkuYXBwbHkoYm94U2l6ZSwgdHJhbnNmb3JtKTsKIAogICAgICAgICAgICAg
Ly8gSWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0
bHkuIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24KICAgICAgICAgICAgIGlmICgh
dHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQpAQCAtMjQxMyw3ICsyNDE0LDcgQEAgYm9vbCBHcmFw
aGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYgdmEKIAogICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXhWYWx1ZXMu
YXBwZW5kKHRyYW5zZm9ybSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybU9wID0gY3VyVmFsdWUtPnZhbHVlKCktPmF0KGZ1
bmN0aW9uSW5kZXgpOworICAgICAgICAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFu
c2Zvcm1PcCA9IGN1clZhbHVlLnZhbHVlKCkuYXQoZnVuY3Rpb25JbmRleCk7CiAgICAgICAgICAg
ICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9wVHlwZSkpIHsKICAgICAgICAg
ICAgICAgICBmbG9hdCB2YWx1ZTsKICAgICAgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlv
blZhbHVlKHRyYW5zZm9ybU9wLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKQEAg
LTI0MzAsNyArMjQzMSw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1Bbmlt
YXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhCiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoaSA8ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gMSkpCi0gICAgICAgICAgICB0aW1p
bmdGdW5jdGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoZm9yd2Fy
ZHMgPyBjdXJWYWx1ZSA6IHZhbHVlTGlzdC5hdChpbmRleCAtIDEpLCBhbmltYXRpb24pKTsKKyAg
ICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0KGluZGV4IC0gMSksICph
bmltYXRpb24pKTsKICAgICB9CiAgICAgCiAgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhr
ZXlUaW1lcyk7CkBAIC0yNDYxLDExICsyNDYyLDExIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpz
ZXRGaWx0ZXJBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVl
CiAgICAgdW5zaWduZWQgZnJvbUluZGV4ID0gIWZvcndhcmRzOwogICAgIHVuc2lnbmVkIHRvSW5k
ZXggPSBmb3J3YXJkczsKIAotICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKiBmcm9tVmFs
dWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5h
dChmcm9tSW5kZXgpKTsKLSAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSogdG9WYWx1ZSA9
IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KHRv
SW5kZXgpKTsKKyAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSYgZnJvbVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPih2YWx1ZUxpc3QuYXQoZnJvbUlu
ZGV4KSk7CisgICAgY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIHRvVmFsdWUgPSBzdGF0aWNf
Y2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSY+KHZhbHVlTGlzdC5hdCh0b0luZGV4KSk7
CiAKLSAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb21PcGVyYXRpb24gPSBmcm9tVmFsdWUt
PnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpOwotICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiog
dG9PcGVyYXRpb24gPSB0b1ZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KTsKKyAgICBj
b25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb21PcGVyYXRpb24gPSBmcm9tVmFsdWUudmFsdWUoKS5h
dChmdW5jdGlvbkluZGV4KTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIHRvT3BlcmF0aW9u
ID0gdG9WYWx1ZS52YWx1ZSgpLmF0KGZ1bmN0aW9uSW5kZXgpOwogCiAgICAgUmVmUHRyPERlZmF1
bHRGaWx0ZXJPcGVyYXRpb24+IGRlZmF1bHRGcm9tT3BlcmF0aW9uOwogICAgIFJlZlB0cjxEZWZh
dWx0RmlsdGVyT3BlcmF0aW9uPiBkZWZhdWx0VG9PcGVyYXRpb247CkBAIC0yNDg3LDcgKzI0ODgs
NyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9uRW5kcG9pbnRzKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZQogCiAgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1
c2VkIGZvciAyLWtleWZyYW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBp
biB0aGUgc3RhcnQKICAgICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uIEV2ZW4gaW4gdGhlIHJl
dmVyc2luZyBhbmltYXRpb24gY2FzZSwgdGhlIGZpcnN0IGtleWZyYW1lIHByb3ZpZGVzIHRoZSB0
aW1pbmcgZnVuY3Rpb24uCi0gICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdG
dW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbWF0aW9uKSwgIWZv
cndhcmRzKTsKKyAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9u
Rm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCAqYW5pbWF0aW9uKSwgIWZvcndhcmRz
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjUwMywxMSArMjUwNCwxMSBAQCBib29sIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0RmlsdGVyQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1ZQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlz
dC5zaXplKCk7ICsraSkgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGZvcndhcmRzID8gaSA6
ICh2YWx1ZUxpc3Quc2l6ZSgpIC0gaSAtIDEpOwotICAgICAgICBjb25zdCBGaWx0ZXJBbmltYXRp
b25WYWx1ZSogY3VyVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1
ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkpOwotICAgICAgICBrZXlUaW1lcy5hcHBlbmQoZm9yd2Fy
ZHMgPyBjdXJWYWx1ZS0+a2V5VGltZSgpIDogKDEgLSBjdXJWYWx1ZS0+a2V5VGltZSgpKSk7Cisg
ICAgICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0
PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJj4odmFsdWVMaXN0LmF0KGluZGV4KSk7CisgICAg
ICAgIGtleVRpbWVzLmFwcGVuZChmb3J3YXJkcyA/IGN1clZhbHVlLmtleVRpbWUoKSA6ICgxIC0g
Y3VyVmFsdWUua2V5VGltZSgpKSk7CiAKLSAgICAgICAgaWYgKGN1clZhbHVlLT52YWx1ZSgpLT5v
cGVyYXRpb25zKCkuc2l6ZSgpID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihmdW5jdGlvbkluZGV4KSkK
LSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoY3VyVmFsdWUtPnZhbHVlKCktPm9wZXJhdGlvbnMo
KVtmdW5jdGlvbkluZGV4XSk7CisgICAgICAgIGlmIChjdXJWYWx1ZS52YWx1ZSgpLm9wZXJhdGlv
bnMoKS5zaXplKCkgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KGZ1bmN0aW9uSW5kZXgpKQorICAgICAg
ICAgICAgdmFsdWVzLmFwcGVuZChjdXJWYWx1ZS52YWx1ZSgpLm9wZXJhdGlvbnMoKVtmdW5jdGlv
bkluZGV4XSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKCFkZWZhdWx0T3BlcmF0
aW9uKQogICAgICAgICAgICAgICAgIGRlZmF1bHRPcGVyYXRpb24gPSBEZWZhdWx0RmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoZmlsdGVyT3ApOwpAQCAtMjUxNSw3ICsyNTE2LDcgQEAgYm9vbCBHcmFw
aGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpIDwgKHZhbHVlTGlzdC5z
aXplKCkgLSAxKSkKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVu
Y3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmb3J3YXJkcyA/IGN1clZhbHVlIDogdmFsdWVMaXN0LmF0
KGluZGV4IC0gMSksIGFuaW1hdGlvbikpOworICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFw
cGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGZvcndhcmRzID8gY3VyVmFsdWUg
OiB2YWx1ZUxpc3QuYXQoaW5kZXggLSAxKSwgKmFuaW1hdGlvbikpOwogICAgIH0KICAgICAKICAg
ICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRpbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggMDJj
MDIyN2U5OGM2YzUyZTg5NDNhZGFiZGQ4ZTBjOTRhNjE0YTUyMC4uMDljY2NlNDUxZjc2MTUyNzcz
NjMzY2FlYTA5MTQ2OTRlNjFkZWQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTIwNSw3ICsyMDUsNyBAQCBw
cml2YXRlOgogICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJh
bWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2
ZSk7CiAgICAgdm9pZCBzZXR1cEFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgY29uc3Qg
QW5pbWF0aW9uKiwgYm9vbCBhZGRpdGl2ZSk7CiAgICAgCi0gICAgY29uc3QgVGltaW5nRnVuY3Rp
b24qIHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUq
LCBjb25zdCBBbmltYXRpb24qKTsKKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVu
Y3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSYsIGNvbnN0IEFuaW1h
dGlvbiYpOwogICAgIAogICAgIGJvb2wgc2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOwog
ICAgIGJvb2wgc2V0QW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0Jiwg
Y29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCBiN2E1
NDdkMjAwOGE0ZjRhOWJhMWQ1MDc0NzlkOTA5NzFiNjFlMDJjLi5mZjMwYTVlOGE0NGIwYzZjZDU3
MTdmYTNlYzRlNmViZDMzYzQwZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtNzEyLDggKzcxMiw4IEBAIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllckFuaW1hdGlvbnNJZk5lZWRlZChUZXh0
dXJlTWFwcGVyTGF5ZXIqIGxhCiAgICAgICAgIGlmIChrZXlmcmFtZXMucHJvcGVydHkoKSAhPSBB
bmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwga2V5ZnJhbWVzLnNpemUoKTsgKytqKSB7Ci0gICAg
ICAgICAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSogZmlsdGVyVmFsdWUgPSBzdGF0aWNf
Y2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KGtleWZyYW1lcy5hdChpKSk7Ci0gICAg
ICAgICAgICBpbmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcygqZmlsdGVyVmFsdWUtPnZh
bHVlKCkpOworICAgICAgICAgICAgY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIGZpbHRlclZh
bHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPihrZXlmcmFtZXMu
YXQoaSkpOworICAgICAgICAgICAgaW5qZWN0Q2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoZmls
dGVyVmFsdWUudmFsdWUoKSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMWRlZmI1MmIz
NGFhODM5YTk0MzNmZmI0MDAzZjExNTQxZjkwMWU4OS4uNjQxOWUwY2JiZjFkOWZiZTA2MDIwMDhm
N2Y2ODUxOTZjYTk4MzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKQEAgLTIxMDcsMTQgKzIxMDcsMTQgQEAgYm9vbCBSZW5kZXJMYXll
ckJhY2tpbmc6OnN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmltYXRp
b24qIGFuaW0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNGaXJzdE9yTGFzdEtleWZyYW1lID0g
a2V5ID09IDAgfHwga2V5ID09IDE7CiAgICAgICAgIGlmICgoaGFzVHJhbnNmb3JtICYmIGlzRmly
c3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pKQotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmlu
c2VydChhZG9wdFB0cihuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoa2V5LCAmKGtleWZyYW1l
U3R5bGUtPnRyYW5zZm9ybSgpKSwgdGYpKSk7Ci0gICAgICAgIAorICAgICAgICAgICAgdHJhbnNm
b3JtVmVjdG9yLmluc2VydChUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleSwga2V5
ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7CisKICAgICAgICAgaWYgKChoYXNPcGFjaXR5
ICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJv
cGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KSkKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5z
ZXJ0KGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleSwga2V5ZnJhbWVTdHlsZS0+
b3BhY2l0eSgpLCB0ZikpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KEZsb2F0
QW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXksIGtleWZyYW1lU3R5bGUtPm9wYWNpdHkoKSwgdGYp
KTsKIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICAgICAgaWYgKChoYXNGaWx0ZXIgJiYg
aXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdlYmtpdEZpbHRlcikpCi0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5z
ZXJ0KGFkb3B0UHRyKG5ldyBGaWx0ZXJBbmltYXRpb25WYWx1ZShrZXksICYoa2V5ZnJhbWVTdHls
ZS0+ZmlsdGVyKCkpLCB0ZikpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoRmls
dGVyQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0
ZikpOwogI2VuZGlmCiAgICAgfQogCkBAIC0yMTU0LDggKzIxNTQsOCBAQCBib29sIFJlbmRlckxh
eWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0
eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIG9wYWNpdHlBbmltID0gdG9TdHls
ZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSk7CiAgICAgICAgIGlm
IChvcGFjaXR5QW5pbSAmJiAhb3BhY2l0eUFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7
CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCBvcGFjaXR5VmVjdG9yKEFuaW1hdGVkUHJv
cGVydHlPcGFjaXR5KTsKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KGFkb3B0UHRy
KG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUt
Pm9wYWNpdHkoKSkpKSk7Ci0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChhZG9wdFB0
cihuZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgxLCBjb21wb3NpdGluZ09wYWNpdHkodG9TdHlsZS0+
b3BhY2l0eSgpKSkpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KEZsb2F0QW5p
bWF0aW9uVmFsdWU6OmNyZWF0ZSgwLCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFj
aXR5KCkpKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChGbG9hdEFuaW1hdGlv
blZhbHVlOjpjcmVhdGUoMSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkp
KTsKICAgICAgICAgICAgIC8vIFRoZSBib3hTaXplIHBhcmFtIGlzIG9ubHkgdXNlZCBmb3IgdHJh
bnNmb3JtIGFuaW1hdGlvbnMgKHdoaWNoIGNhbiBvbmx5IHJ1biBvbiBSZW5kZXJCb3hlcyksIHNv
IHdlIHBhc3MgYW4gZW1wdHkgc2l6ZSBoZXJlLgogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NM
YXllci0+YWRkQW5pbWF0aW9uKG9wYWNpdHlWZWN0b3IsIEludFNpemUoKSwgb3BhY2l0eUFuaW0s
IEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVy
dHlPcGFjaXR5KSwgdGltZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUg
dGhhdCB0aGUgY29ycmVjdCBvcGFjaXR5IGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVu
ZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBvcGFjaXR5LgpAQCAtMjE2OSw4ICsyMTY5LDggQEAgYm9v
bCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwg
Q1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiB0cmFuc2Zvcm1B
bmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJh
bnNmb3JtKTsKICAgICAgICAgaWYgKHRyYW5zZm9ybUFuaW0gJiYgIXRyYW5zZm9ybUFuaW0tPmlz
RW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCB0
cmFuc2Zvcm1WZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7Ci0gICAgICAg
ICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZSgwLCAmZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkpKTsKLSAgICAgICAgICAgIHRyYW5z
Zm9ybVZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDEs
ICZ0b1N0eWxlLT50cmFuc2Zvcm0oKSkpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5p
bnNlcnQoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgwLCBmcm9tU3R5bGUtPnRyYW5z
Zm9ybSgpKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KFRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlOjpjcmVhdGUoMSwgdG9TdHlsZS0+dHJhbnNmb3JtKCkpKTsKICAgICAgICAg
ICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFuc2Zvcm1WZWN0b3IsIHRv
UmVuZGVyQm94KHJlbmRlcmVyKCkpLT5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkuc2l6ZSgp
LCB0cmFuc2Zvcm1BbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlv
bihBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKSwgdGltZU9mZnNldCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCB0cmFuc2Zvcm0gaXMgdmlz
aWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIHRyYW5zZm9y
bS4KICAgICAgICAgICAgICAgICB1cGRhdGVUcmFuc2Zvcm0odG9TdHlsZSk7CkBAIC0yMTg0LDgg
KzIxODQsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJs
ZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRp
b24qIGZpbHRlckFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVy
dHlXZWJraXRGaWx0ZXIpOwogICAgICAgICBpZiAoZmlsdGVyQW5pbSAmJiAhZmlsdGVyQW5pbS0+
aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0
IGZpbHRlclZlY3RvcihBbmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKTsKLSAgICAgICAgICAg
IGZpbHRlclZlY3Rvci5pbnNlcnQoYWRvcHRQdHIobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKDAs
ICZmcm9tU3R5bGUtPmZpbHRlcigpKSkpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2Vy
dChhZG9wdFB0cihuZXcgRmlsdGVyQW5pbWF0aW9uVmFsdWUoMSwgJnRvU3R5bGUtPmZpbHRlcigp
KSkpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChGaWx0ZXJBbmltYXRpb25WYWx1
ZTo6Y3JlYXRlKDAsIGZyb21TdHlsZS0+ZmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGZpbHRlclZl
Y3Rvci5pbnNlcnQoRmlsdGVyQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgxLCB0b1N0eWxlLT5maWx0
ZXIoKSkpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKGZp
bHRlclZlY3RvciwgSW50U2l6ZSgpLCBmaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRp
b25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKSwgdGltZU9m
ZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBm
aWx0ZXIgaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZp
bmFsIGZpbHRlci4KICAgICAgICAgICAgICAgICB1cGRhdGVGaWx0ZXJzKHRvU3R5bGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggNDExMDczMDg5Y2M1NTNmYzc5MTQ4MTlhNjBlZGUxNzk2NGNhYTc5ZS4uM2NhZjU3Njc2
NzhkZWUyZTdlMzcwNGIwMGZhYmM5MTc3OTBhZjFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50
Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCkBAIC02NDUsMTkgKzY0NSwx
OSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbj46OmVuY29kZShB
cmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbgogICAgIGVuY29kZXIuZW5jb2RlRW51bShrZXlm
cmFtZXMucHJvcGVydHkoKSk7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
a2V5ZnJhbWVzLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlmcmFtZXMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIHZhbHVlID0ga2V5
ZnJhbWVzLmF0KGkpOwotICAgICAgICBlbmNvZGVyIDw8IHZhbHVlLT5rZXlUaW1lKCk7Ci0gICAg
ICAgIGVuY29kZVRpbWluZ0Z1bmN0aW9uKGVuY29kZXIsIHZhbHVlLT50aW1pbmdGdW5jdGlvbigp
KTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUmIHZhbHVlID0ga2V5ZnJhbWVzLmF0KGkp
OworICAgICAgICBlbmNvZGVyIDw8IHZhbHVlLmtleVRpbWUoKTsKKyAgICAgICAgZW5jb2RlVGlt
aW5nRnVuY3Rpb24oZW5jb2RlciwgdmFsdWUudGltaW5nRnVuY3Rpb24oKSk7CiAgICAgICAgIHN3
aXRjaCAoa2V5ZnJhbWVzLnByb3BlcnR5KCkpIHsKICAgICAgICAgY2FzZSBBbmltYXRlZFByb3Bl
cnR5T3BhY2l0eToKLSAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRmxv
YXRBbmltYXRpb25WYWx1ZSo+KHZhbHVlKS0+dmFsdWUoKTsKKyAgICAgICAgICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSY+KHZhbHVlKS52YWx1ZSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybToKLSAgICAgICAgICAgIGVuY29kZXIgPDwgKnN0YXRpY19jYXN0PGNvbnN0IFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWUpLT52YWx1ZSgpOworICAgICAgICAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHZhbHVl
KS52YWx1ZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQog
ICAgICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRGaWx0ZXI6Ci0gICAgICAgICAgICBl
bmNvZGVyIDw8ICpzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KHZhbHVl
KS0+dmFsdWUoKTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRmls
dGVyQW5pbWF0aW9uVmFsdWUmPih2YWx1ZSkudmFsdWUoKTsKICAgICAgICAgICAgIGJyZWFrOwog
I2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6CkBAIC03MzMsMTQgKzczMywxNCBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbj46OmRlY29kZShBcmd1bWVudERlY29kZXIm
IGRlY29kZXIsIEdyYQogICAgICAgICAgICAgZmxvYXQgdmFsdWU7CiAgICAgICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBrZXlmcmFtZXMuaW5zZXJ0KGFkb3B0UHRyKG5ldyBGbG9hdEFuaW1hdGlvblZh
bHVlKGtleVRpbWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpKTsKKyAgICAgICAgICAgIGtleWZy
YW1lcy5pbnNlcnQoRmxvYXRBbmltYXRpb25WYWx1ZTo6Y3JlYXRlKGtleVRpbWUsIHZhbHVlLCB0
aW1pbmdGdW5jdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtOiB7CiAgICAgICAgICAgICBUcmFu
c2Zvcm1PcGVyYXRpb25zIHRyYW5zZm9ybTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUodHJhbnNmb3JtKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICBrZXlmcmFtZXMuaW5zZXJ0KGFkb3B0UHRyKG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShr
ZXlUaW1lLCAmdHJhbnNmb3JtLCB0aW1pbmdGdW5jdGlvbikpKTsKKyAgICAgICAgICAgIGtleWZy
YW1lcy5pbnNlcnQoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZShrZXlUaW1lLCB0cmFu
c2Zvcm0sIHRpbWluZ0Z1bmN0aW9uKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
I2lmIEVOQUJMRShDU1NfRklMVEVSUykKQEAgLTc0OCw3ICs3NDgsNyBAQCBib29sIEFyZ3VtZW50
Q29kZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbj46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIEdyYQogICAgICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXI7CiAgICAgICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZpbHRlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAga2V5ZnJhbWVzLmluc2VydChhZG9wdFB0cihuZXcgRmlsdGVy
QW5pbWF0aW9uVmFsdWUoa2V5VGltZSwgJmZpbHRlciwgdGltaW5nRnVuY3Rpb24pKSk7CisgICAg
ICAgICAgICBrZXlmcmFtZXMuaW5zZXJ0KEZpbHRlckFuaW1hdGlvblZhbHVlOjpjcmVhdGUoa2V5
VGltZSwgZmlsdGVyLCB0aW1pbmdGdW5jdGlvbikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMWMwYmEyNDQ0NmI2MmNmMGU0NjVjMGIxNTA1
MzE1MDRiMDliOTkwYS4uMDlhNzhlNGUwMzQzYTE5NTUzZGVmNTUwZjIyOGJjOWI4MDdjOTk3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwCkBAIC0zNDIsOCArMzQyLDggQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OnByZXBhcmVDdXN0b21GaWx0ZXJQcm94aWVzSWZOZWVkZWQoQ29vcmRpbmF0ZWRHcmEK
ICAgICAgICAgICAgIGlmIChrZXlmcmFtZXMucHJvcGVydHkoKSAhPSBBbmltYXRlZFByb3BlcnR5
V2Via2l0RmlsdGVyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgZm9y
IChzaXplX3QgaiA9IDA7IGogPCBrZXlmcmFtZXMuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAg
ICAgICBjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSogZmlsdGVyVmFsdWUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSo+KGtleWZyYW1lcy5hdChpKSk7Ci0gICAgICAg
ICAgICAgICAgY2hlY2tDdXN0b21GaWx0ZXJQcm9ncmFtUHJveGllcygqZmlsdGVyVmFsdWUtPnZh
bHVlKCkpOworICAgICAgICAgICAgICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJiBmaWx0
ZXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJj4oa2V5ZnJh
bWVzLmF0KGkpKTsKKyAgICAgICAgICAgICAgICBjaGVja0N1c3RvbUZpbHRlclByb2dyYW1Qcm94
aWVzKGZpbHRlclZhbHVlLnZhbHVlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>