<?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>122954</bug_id>
          
          <creation_ts>2013-10-17 04:51:51 -0700</creation_ts>
          <short_desc>Try to keep AppCache memory caches in control</short_desc>
          <delta_ts>2022-10-27 08:53:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="Xabier Rodríguez Calvar">calvaris</reporter>
          <assigned_to name="Xabier Rodríguez Calvar">calvaris</assigned_to>
          <cc>andersca</cc>
    
    <cc>annevk</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>japhet</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>940721</commentid>
    <comment_count>0</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-10-17 04:51:51 -0700</bug_when>
    <thetext>[AppCache] Trying to keep memory caches in control</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940723</commentid>
    <comment_count>1</comment_count>
      <attachid>214441</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-10-17 04:53:06 -0700</bug_when>
    <thetext>Created attachment 214441
Patch

Attempt to keep the memory cache under control. This is a proof of concept and suggestions are very welcome. Changelog will be added when patch is ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940733</commentid>
    <comment_count>2</comment_count>
      <attachid>214441</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-17 05:21:13 -0700</bug_when>
    <thetext>Comment on attachment 214441
Patch

Attachment 214441 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/3474135</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940741</commentid>
    <comment_count>3</comment_count>
      <attachid>214441</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-17 05:39:46 -0700</bug_when>
    <thetext>Comment on attachment 214441
Patch

Attachment 214441 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/3480051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940771</commentid>
    <comment_count>4</comment_count>
      <attachid>214454</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-10-17 07:26:19 -0700</bug_when>
    <thetext>Created attachment 214454
Patch

AtFixed compile issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940806</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-17 09:38:06 -0700</bug_when>
    <thetext>Could you please explain your approach? It&apos;s hard to see how code proves a concept when the concept is kept secret :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940809</commentid>
    <comment_count>6</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-10-17 09:52:07 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Could you please explain your approach? It&apos;s hard to see how code proves a concept when the concept is kept secret :)

Sure , sorry for that :)

The idea is having an upper limit for the memory used by the app cache in case we have several caches in memory and as they are in the database anyway we can reload the resource from disk to memory easily when needed.

What the patch does is setting some control points, specially when a cache is loaded or stuff is added to it. Then it checks the size of the caches in memory and if it&apos;s above the limit, at a first step it tries to dump all caches but the last one and if that doesn&apos;t reach the limit, it waits for some time and  then it dumps everything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941881</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-21 09:54:38 -0700</bug_when>
    <thetext>Yes, this is certainly a huge inefficiencies in the current appcache implementation.

I don&apos;t think that hardcoding a limit is a great answer though. Keeping even a single application in memory doesn&apos;t make sense when it&apos;s large.

We need something much more like a regular resource cache, just backed by appcache database and not the network. That would respect system low memory notifications too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944156</commentid>
    <comment_count>8</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-10-28 10:57:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Yes, this is certainly a huge inefficiencies in the current appcache implementation.
&gt; 
&gt; I don&apos;t think that hardcoding a limit is a great answer though. Keeping even a single application in memory doesn&apos;t make sense when it&apos;s large.
&gt; 
&gt; We need something much more like a regular resource cache, just backed by appcache database and not the network. That would respect system low memory notifications too.

With the approach I am trying, no app is stored in memory after certain amount of time, because it is evicted by the timer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944157</commentid>
    <comment_count>9</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-10-28 10:58:33 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Yes, this is certainly a huge inefficiencies in the current appcache implementation.
&gt; &gt; 
&gt; &gt; I don&apos;t think that hardcoding a limit is a great answer though. Keeping even a single application in memory doesn&apos;t make sense when it&apos;s large.
&gt; &gt; 
&gt; &gt; We need something much more like a regular resource cache, just backed by appcache database and not the network. That would respect system low memory notifications too.
&gt; 
&gt; With the approach I am trying, no app is stored in memory after certain amount of time, because it is evicted by the timer.

With this I mean if there is any way that we can work out this patch and get it applied, knowing that we need to fix it better, of course, but as an improvement instead of a permanent solution?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945491</commentid>
    <comment_count>10</comment_count>
      <attachid>215643</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-10-31 05:14:13 -0700</bug_when>
    <thetext>Created attachment 215643
Patch

Done some improvements for the moment the cache is created and added cache eviction for background.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946595</commentid>
    <comment_count>11</comment_count>
      <attachid>215643</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-04 03:01:17 -0800</bug_when>
    <thetext>Comment on attachment 215643
Patch

Attachment 215643 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/19598732</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946608</commentid>
    <comment_count>12</comment_count>
      <attachid>215643</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-04 03:44:24 -0800</bug_when>
    <thetext>Comment on attachment 215643
Patch

Attachment 215643 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/19598747</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946611</commentid>
    <comment_count>13</comment_count>
      <attachid>215643</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-04 03:54:02 -0800</bug_when>
    <thetext>Comment on attachment 215643
Patch

Attachment 215643 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/19628700</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948733</commentid>
    <comment_count>14</comment_count>
      <attachid>216412</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-08 10:58:32 -0800</bug_when>
    <thetext>Created attachment 216412
Patch

Fixed Mac build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950669</commentid>
    <comment_count>15</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-14 08:17:06 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; I don&apos;t think that hardcoding a limit is a great answer though. Keeping even a single application in memory doesn&apos;t make sense when it&apos;s large.

It takes into account the cache only for the first pass, after the timeout that cache should be purged too.

&gt; We need something much more like a regular resource cache, just backed by appcache database and not the network. That would respect system low memory notifications too.

Is there any way we could get landed even it is not the perfect solution? I think it is better than nothing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196185</commentid>
    <comment_count>16</comment_count>
      <attachid>216412</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-24 22:05:06 -0700</bug_when>
    <thetext>Comment on attachment 216412
Patch

Assuming that patches for review since 2013 are stale, r-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908720</commentid>
    <comment_count>17</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2022-10-27 08:53:03 -0700</bug_when>
    <thetext>AppCache is now disabled and will be removed in bug 219391.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214441</attachid>
            <date>2013-10-17 04:53:06 -0700</date>
            <delta_ts>2013-10-17 07:26:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122954-20131017135303.patch</filename>
            <type>text/plain</type>
            <size>14838</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI0OTczMzE3MjBmYzky
ZGU5NDVlMTgyMGEzNmY4MDJmZGIxYzhhMC4uNDJlMWZiYjFhNTRkMGJkOTE0NjM2YWU0YzE3MzUx
ZGI2MjU5YTM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTEwLTE3ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0Fw
cENhY2hlXSBUcnlpbmcgdG8ga2VlcCBtZW1vcnkgY2FjaGVzIGluIGNvbnRyb2wKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjk1NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZTo6YWRkUmVzb3VyY2UpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaXNhc3NvY2lhdGVEb2N1bWVudExvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpc2Fzc29jaWF0
ZUxvYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpjbGVh
cik6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmVzdGltYXRlZE1l
bW9yeVNpemUpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmNsZWFyTWFpblJlc291
cmNlQXBwbGljYXRpb25DYWNoZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Ojpsb2FkQ2FjaGVHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZmluZEluTWVtb3J5Q2FjaGVHcm91cCk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9y
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdy
b3VwRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmVVcGRhdGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6bG9hZENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpjdXJyZW50RXN0aW1hdGVkTWVtb3J5U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6Y29udHJvbE1lbW9yeVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNvbnRyb2xNZW1vcnlTaXplVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aDoKKwogMjAxMy0xMC0xNiAgcGVhdm9Ab3V0bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNvbT4K
IAogICAgICAgICBFbXBoYXNpcyBtYXJrcyBoYXMgd3JvbmcgY29sb3IuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggODUy
ODliMzM5ODIzODIzZGRkMmQ3MGFkZWMxNGFmMjk2ZjQ5YWRiMi4uMDk0ZDk2ZmZmZGRiZjZlOTU2
ZDc4OWNlOTQwN2U3MjBkMTU1MjJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtOTcsNiArOTcsOSBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGU6OmFkZFJlc291cmNlKFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJl
c291cmNlPiByZXNvdXJjZQogICAgIG1fZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSArPSByZXNvdXJj
ZS0+ZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSgpOwogCiAgICAgbV9yZXNvdXJjZXMuc2V0KHVybCwg
cmVzb3VyY2UpOworCisgICAgaWYgKG1fc3RvcmFnZUlEKQorICAgICAgICBjYWNoZVN0b3JhZ2Uo
KS5jb250cm9sTWVtb3J5U2l6ZShtX2dyb3VwKTsKIH0KIAogdW5zaWduZWQgQXBwbGljYXRpb25D
YWNoZTo6cmVtb3ZlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmlu
ZGV4IDczNTdiNDVmYTZhYTdkMGNkMTEzNzBjNDVmYTYzN2RiM2VmODA1NTYuLmFjZTQzNTEzYWI0
MDgzMTllMTcyNTU1N2E0ZWZhNWE5ZjZkMGE3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0zNjAs
MTIgKzM2MCwxNCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RvcExvYWRpbmcoKQog
ICAgIG1fcGVuZGluZ0VudHJpZXMuY2xlYXIoKTsKIH0gICAgCiAKLXZvaWQgQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpkaXNhc3NvY2lhdGVEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9h
ZGVyKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpc2Fzc29jaWF0ZURvY3VtZW50TG9h
ZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGJvb2wgY2xlYXJNYWluUmVzb3VyY2VBcHBsaWNh
dGlvbkNhY2hlKQogewogICAgIG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycy5yZW1vdmUobG9h
ZGVyKTsKICAgICBtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMucmVtb3ZlKGxvYWRlcik7
CiAKICAgICBsb2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPnNldEFwcGxpY2F0aW9uQ2Fj
aGUoMCk7IC8vIFdpbGwgc2V0IGNhbmRpZGF0ZSB0byAwLCB0b28uCisgICAgaWYgKGNsZWFyTWFp
blJlc291cmNlQXBwbGljYXRpb25DYWNoZSkKKyAgICAgICAgbG9hZGVyLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLT5jbGVhck1haW5SZXNvdXJjZUFwcGxpY2F0aW9uQ2FjaGUoKTsKIAogICAgIGlm
ICghbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzLmlzRW1wdHkoKSB8fCAhbV9wZW5kaW5nTWFz
dGVyUmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE4NCw0
ICsxMTg2LDM0IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjbGVhclN0b3JhZ2VJRCgp
CiAgICAgICAgICgqaXQpLT5jbGVhclN0b3JhZ2VJRCgpOwogfQogCit2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6ZGlzYXNzb2NpYXRlTG9hZGVycyhjb25zdCBIYXNoU2V0PERvY3VtZW50TG9h
ZGVyKj4mIGxvYWRlcnMpCit7CisgICAgaWYgKGxvYWRlcnMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBWZWN0b3I8RG9jdW1lbnRMb2FkZXIqPiBjb3B5OworICAgIGNvcHlUb1Zl
Y3Rvcihsb2FkZXJzLCBjb3B5KTsKKworICAgIFZlY3RvcjxEb2N1bWVudExvYWRlcio+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBjb3B5LmVuZCgpOworICAgIGZvciAoVmVjdG9yPERvY3VtZW50TG9h
ZGVyKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29weS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
CisgICAgICAgIGRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKCppdCwgdHJ1ZSk7Cit9CisKK3Zv
aWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjbGVhcigpCit7CisgICAgZGlzYXNzb2NpYXRlTG9h
ZGVycyhtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMpOworICAgIGRpc2Fzc29jaWF0ZUxv
YWRlcnMobV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsKK30KKworaW50NjRfdCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmVzdGltYXRlZE1lbW9yeVNpemUoKQoreworICAgIGludDY0X3Qgc2l6
ZSA9IDA7CisKKyAgICBIYXNoU2V0PEFwcGxpY2F0aW9uQ2FjaGUqPjo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbV9jYWNoZXMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PEFwcGxpY2F0aW9uQ2FjaGUq
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NhY2hlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
CisgICAgICAgIHNpemUgKz0gKCppdCktPmVzdGltYXRlZFNpemVJblN0b3JhZ2UoKTsKKworICAg
IHJldHVybiBzaXplOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKaW5kZXggYTUwMTY3M2ExZWVhYTI3MzNi
NTMxM2FkMGQ1NGEzMTA4N2ZjMzY3Yy4uY2M4YzdjOTcyNjE5Nzc2NWIyZmI1MjY2YzA1NDRjNjg3
YjY5Y2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuaApAQCAtOTEsMTAgKzkxLDEzIEBAIHB1YmxpYzoKICAgICB2
b2lkIGZpbmlzaGVkTG9hZGluZ01haW5SZXNvdXJjZShEb2N1bWVudExvYWRlciopOwogICAgIHZv
aWQgZmFpbGVkTG9hZGluZ01haW5SZXNvdXJjZShEb2N1bWVudExvYWRlciopOwogCi0gICAgdm9p
ZCBkaXNhc3NvY2lhdGVEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciopOworICAgIHZvaWQg
ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqLCBib29sIGNsZWFyTWFp
blJlc291cmNlQXBwbGljYXRpb25DYWNoZSA9IGZhbHNlKTsKIAogICAgIGJvb2wgaXNDb3B5KCkg
Y29uc3QgeyByZXR1cm4gbV9pc0NvcHk7IH0KIAorICAgIHZvaWQgY2xlYXIoKTsKKyAgICBpbnQ2
NF90IGVzdGltYXRlZE1lbW9yeVNpemUoKTsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBw
b3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGlkLCBjb25zdCBI
YXNoU2V0PERvY3VtZW50TG9hZGVyKj4mIHNldCkgeyBwb3N0TGlzdGVuZXJUYXNrKGlkLCAwLCAw
LCBzZXQpOyB9CiAgICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6RXZlbnRJRCBpZCwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikgIHsgcG9zdExpc3Rl
bmVyVGFzayhpZCwgMCwgMCwgbG9hZGVyKTsgfQpAQCAtMTMyLDYgKzEzNSw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBhc3NvY2lhdGVEb2N1bWVudExvYWRlcldpdGhDYWNoZShEb2N1bWVudExvYWRl
ciosIEFwcGxpY2F0aW9uQ2FjaGUqKTsKICAgICAKICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CisK
KyAgICB2b2lkIGRpc2Fzc29jaWF0ZUxvYWRlcnMoY29uc3QgSGFzaFNldDxEb2N1bWVudExvYWRl
cio+JiBsb2FkZXJzKTsKICAgICAKICAgICBVUkwgbV9tYW5pZmVzdFVSTDsKICAgICBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNDMzYmYyNjkzZWE2
MjZiNzA0NTcxYzc0OTQ3YWMwN2Y1MzU2NjFhMi4uMGM0YzQ2NDYyYTlmN2U2NWE5OWQ2ZTFmZjdl
YTg2ZWQwMzk3YTdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC00ODAsNCArNDgwLDkgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpCiAgICAgcmV0
dXJuIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkgJiYgbV9kb2N1bWVudExvYWRlci0+ZnJhbWUo
KS0+c2V0dGluZ3MoKS5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKTsKIH0KIAor
dm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y2xlYXJNYWluUmVzb3VyY2VBcHBsaWNhdGlvbkNh
Y2hlKCkKK3sKKyAgICBtX21haW5SZXNvdXJjZUFwcGxpY2F0aW9uQ2FjaGUuY2xlYXIoKTsKK30K
KwogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggZjZlMGQwYjk0MWUyZmEy
M2EyNTI2ZjJmN2MxNjlhNDlkODU1ZGUxMy4uMjEwNDZlM2ExMzhkMGFhN2NjZWMyMWUwYWE0OGE1
MmM3NGY5Y2VkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTE1Myw2ICsxNTMsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGJvb2wgc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2Fj
aGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiYpOwog
ICAgICAgICBib29sIGdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSomLCBBcHBsaWNhdGlvbkNh
Y2hlKiA9IDApOwogCisgICAgICAgIHZvaWQgY2xlYXJNYWluUmVzb3VyY2VBcHBsaWNhdGlvbkNh
Y2hlKCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGlzQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQoKTsKICAgICAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9kb2N1bWVudExvYWRlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggM2M2
MjRkZjQ0N2JmZTFhYTMyNTk3MTFmZGJhMmNlYzkyNDIyZDU3OC4uNDZhZGNkZjU0ZjY3YjRlZDYz
ZDQxNzczMmYxMjlmMzkwODZhMDYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC00Miw2ICs0
Miw5IEBACiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KIAorc3RhdGljIGNvbnN0IGludDY0X3QgbWF4TWVtb3J5U2l6ZSA9
IDEgPDwgMTA7CitzdGF0aWMgY29uc3QgaW50IGZ1bGxQcnVuZURlbGF5ID0gMjsKKwogdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTMyLDYgKzEzNSw4IEBA
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNo
ZUdyb3VwKGNvbnN0IFVSTCYgbWFuaWZlCiAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7CiAgICAgZ3JvdXAt
PnNldE5ld2VzdENhY2hlKGNhY2hlLnJlbGVhc2UoKSk7CiAKKyAgICBjb250cm9sTWVtb3J5U2l6
ZShncm91cCk7CisKICAgICByZXR1cm4gZ3JvdXA7CiB9ICAgIAogCkBAIC0xNTYsMTMgKzE2MSwx
NiBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmaW5k
T3JDcmVhdGVDYWNoZUdyb3VwKGNvbnN0IFVSTAogICAgIH0KICAgICAKICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gZ3JvdXA7CisKKyAgICBtX2xhc3RVc2VkR3JvdXAgPSBncm91cDsKICAg
ICAKICAgICByZXR1cm4gZ3JvdXA7CiB9CiAKIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRJbk1lbW9yeUNhY2hlR3JvdXAoY29uc3QgVVJMJiBtYW5p
ZmVzdFVSTCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jYWNoZXNJbk1lbW9yeS5nZXQobWFuaWZl
c3RVUkwpOworICAgIG1fbGFzdFVzZWRHcm91cCA9IG1fY2FjaGVzSW5NZW1vcnkuZ2V0KG1hbmlm
ZXN0VVJMKTsKKyAgICByZXR1cm4gbV9sYXN0VXNlZEdyb3VwOwogfQogCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCkKQEAgLTI1Niw2ICsyNjQs
OCBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNo
ZUdyb3VwRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICBncm91cC0+c2V0TmV3ZXN0Q2Fj
aGUoY2FjaGUucmVsZWFzZSgpKTsKICAgICAgICAgCiAgICAgICAgIG1fY2FjaGVzSW5NZW1vcnku
c2V0KGdyb3VwLT5tYW5pZmVzdFVSTCgpLCBncm91cCk7CisKKyAgICAgICAgY29udHJvbE1lbW9y
eVNpemUoZ3JvdXApOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIGdyb3VwOwogICAgIH0KQEAg
LTMyNyw2ICszMzcsOCBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgVQogICAgICAgICBncm91cC0+
c2V0TmV3ZXN0Q2FjaGUoY2FjaGUucmVsZWFzZSgpKTsKICAgICAgICAgCiAgICAgICAgIG1fY2Fj
aGVzSW5NZW1vcnkuc2V0KGdyb3VwLT5tYW5pZmVzdFVSTCgpLCBncm91cCk7CisKKyAgICAgICAg
Y29udHJvbE1lbW9yeVNpemUoZ3JvdXApOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIGdyb3Vw
OwogICAgIH0KQEAgLTM1Miw2ICszNjQsOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpjYWNoZUdyb3VwRGVzdHJveWVkKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXApCiAgICAg
Ly8gSWYgdGhlIGNhY2hlIGdyb3VwIGlzIGhhbGYtY3JlYXRlZCwgd2UgZG9uJ3Qgd2FudCBpdCBp
biB0aGUgc2F2ZWQgc2V0IChhcyBpdCBpcyBub3Qgc3RvcmVkIGluIGRhdGFiYXNlKS4KICAgICBp
ZiAoIWdyb3VwLT5zdG9yYWdlSUQoKSkKICAgICAgICAgbV9jYWNoZUhvc3RTZXQucmVtb3ZlKHVy
bEhvc3RIYXNoKGdyb3VwLT5tYW5pZmVzdFVSTCgpKSk7CisKKyAgICBpZiAobV9sYXN0VXNlZEdy
b3VwID09IGdyb3VwKQorICAgICAgICBtX2xhc3RVc2VkR3JvdXAgPSAwOwogfQogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3VwTWFkZU9ic29sZXRlKEFwcGxpY2F0aW9u
Q2FjaGVHcm91cCogZ3JvdXApCkBAIC04OTEsNiArOTA2LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5z
aWduZWQKICAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNl
LT5zZXRTdG9yYWdlSUQocmVzb3VyY2VJZCk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
OTA3LDYgKzkyMyw4IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlVXBkYXRl
ZFR5cGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjCiAgICAgZW50cnlTdGF0ZW1l
bnQuYmluZEludDY0KDEsIHJlc291cmNlLT50eXBlKCkpOwogICAgIGVudHJ5U3RhdGVtZW50LmJp
bmRJbnQ2NCgyLCByZXNvdXJjZS0+c3RvcmFnZUlEKCkpOwogCisgICAgY29udHJvbE1lbW9yeVNp
emUoY2FjaGUtPmdyb3VwKCkpOworCiAgICAgcmV0dXJuIGV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlT
dGF0ZW1lbnQpOwogfQogCkBAIC0xMTk3LDYgKzEyMTUsOCBAQCBQYXNzUmVmUHRyPEFwcGxpY2F0
aW9uQ2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3Rv
cmFnZQogICAgIAogICAgIGNhY2hlLT5zZXRTdG9yYWdlSUQoc3RvcmFnZUlEKTsKIAorICAgIGNv
bnRyb2xNZW1vcnlTaXplKCk7CisKICAgICByZXR1cm4gY2FjaGUucmVsZWFzZSgpOwogfSAgICAK
ICAgICAKQEAgLTE1MzUsMTAgKzE1NTUsNjggQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6ZGVsZXRlQWxsRW50cmllcygpCiAgICAgdmFjdXVtRGF0YWJhc2VGaWxlKCk7CiB9CiAKK2lu
dDY0X3QgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmN1cnJlbnRFc3RpbWF0ZWRNZW1vcnlTaXpl
KCkKK3sKKyAgICBpbnQ2NF90IGN1cnJlbnRTaXplID0gMDsKKworICAgIENhY2hlR3JvdXBNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY2FjaGVzSW5NZW1vcnkuZW5kKCk7CisgICAgZm9yIChD
YWNoZUdyb3VwTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY2FjaGVzSW5NZW1vcnkuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBjdXJyZW50U2l6ZSArPSBpdC0+dmFsdWUtPmVz
dGltYXRlZE1lbW9yeVNpemUoKTsKKworICAgIHJldHVybiBjdXJyZW50U2l6ZTsKK30KKwordm9p
ZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y29udHJvbE1lbW9yeVNpemUoQXBwbGljYXRpb25D
YWNoZUdyb3VwKiBncm91cEV4Y2x1ZGVkRnJvbVB1cmdlKQoreworICAgIGlmICghZ3JvdXBFeGNs
dWRlZEZyb21QdXJnZSkKKyAgICAgICAgbV9sYXN0VXNlZEdyb3VwID0gZ3JvdXBFeGNsdWRlZEZy
b21QdXJnZTsKKyAgICBjb250cm9sTWVtb3J5U2l6ZSgpOworfQorCit2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpjb250cm9sTWVtb3J5U2l6ZSgpCit7CisgICAgaW50NjRfdCBjdXJyZW50
U2l6ZSA9IGN1cnJlbnRFc3RpbWF0ZWRNZW1vcnlTaXplKCk7CisKKyAgICBpZiAoY3VycmVudFNp
emUgPCBtYXhNZW1vcnlTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBjdXJyZW50U2l6ZSA9
IGN1cnJlbnRFc3RpbWF0ZWRNZW1vcnlTaXplKCk7CisKKyAgICBWZWN0b3I8QXBwbGljYXRpb25D
YWNoZUdyb3VwKj4gY29weTsKKyAgICAvLyBjb3B5VG9WZWN0b3IobV9jYWNoZXNJbk1lbW9yeSwg
Y29weSk7CisgICAgY29weS5yZXNpemUobV9jYWNoZXNJbk1lbW9yeS5zaXplKCkpOworICAgIENh
Y2hlR3JvdXBNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jYWNoZXNJbk1lbW9yeS5iZWdpbigp
OworICAgIENhY2hlR3JvdXBNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY2FjaGVzSW5NZW1v
cnkuZW5kKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaXQgIT0gZW5kOyArK2l0LCArK2kp
CisgICAgICAgIGNvcHlbaV0gPSBpdC0+dmFsdWU7CisgICAgVmVjdG9yPEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCo+Ojpjb25zdF9pdGVyYXRvciB2ZWN0b3JFbmQgPSBjb3B5LmVuZCgpOworICAgIGZv
ciAoVmVjdG9yPEFwcGxpY2F0aW9uQ2FjaGVHcm91cCo+Ojpjb25zdF9pdGVyYXRvciB2ZWN0b3JJ
dGVyYXRvciA9IGNvcHkuYmVnaW4oKTsgdmVjdG9ySXRlcmF0b3IgIT0gdmVjdG9yRW5kOyArK3Zl
Y3Rvckl0ZXJhdG9yKQorICAgICAgICBpZiAoKCp2ZWN0b3JJdGVyYXRvcikgIT0gbV9sYXN0VXNl
ZEdyb3VwKSB7CisgICAgICAgICAgICBjdXJyZW50U2l6ZSAtPSAoKnZlY3Rvckl0ZXJhdG9yKS0+
ZXN0aW1hdGVkTWVtb3J5U2l6ZSgpOworICAgICAgICAgICAgKCp2ZWN0b3JJdGVyYXRvciktPmNs
ZWFyKCk7CisgICAgICAgIH0KKyAgICAKKyAgICBpZiAoY3VycmVudFNpemUgPj0gbWF4TWVtb3J5
U2l6ZSkgeworICAgICAgICBBU1NFUlQobV9sYXN0VXNlZEdyb3VwKTsKKyAgICAgICAgbV9wcnVu
ZU1lbW9yeVRpbWVyLnN0YXJ0T25lU2hvdChmdWxsUHJ1bmVEZWxheSk7CisgICAgfQorfQorCit2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjb250cm9sTWVtb3J5U2l6ZVRpbWVyKFRpbWVy
PEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiogdGltZXIpCit7CisgICAgaWYgKGN1cnJlbnRFc3Rp
bWF0ZWRNZW1vcnlTaXplKCkgPCBtYXhNZW1vcnlTaXplKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2xhc3RVc2VkR3JvdXAgPSAwOworICAgIGNvbnRyb2xNZW1vcnlTaXplKCk7Cit9CisKIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpIAogICAgIDog
bV9tYXhpbXVtU2l6ZShBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpKQogICAgICwg
bV9pc01heGltdW1TaXplUmVhY2hlZChmYWxzZSkKICAgICAsIG1fZGVmYXVsdE9yaWdpblF1b3Rh
KEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCkpCisgICAgLCBtX2xhc3RVc2VkR3Jv
dXAoMCkKKyAgICAsIG1fcHJ1bmVNZW1vcnlUaW1lcih0aGlzLCAmQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OmNvbnRyb2xNZW1vcnlTaXplVGltZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKaW5k
ZXggZTRiMzEwNDRlZGJjMjlkYjdlMDIwNTIwOGZkZmVlMGY0NjQyMTcwOC4uZGM4MzgwNWQ0MTM0
ZmUzYzVmM2VkYWI5NjY1NzkzYjJiN2RmOTI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUgIlNR
TGl0ZURhdGFiYXNlLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaENv
dW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KQEAgLTk5LDYgKzEwMCwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
aW50NjRfdCB1bmtub3duUXVvdGEoKSB7IHJldHVybiAtMTsgfQogICAgIHN0YXRpYyBpbnQ2NF90
IG5vUXVvdGEoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsg
fQorCisgICAgdm9pZCBjb250cm9sTWVtb3J5U2l6ZSgpOworICAgIHZvaWQgY29udHJvbE1lbW9y
eVNpemUoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cEV4Y2x1ZGVkRnJvbVB1cmdlKTsKKyAg
ICB2b2lkIGNvbnRyb2xNZW1vcnlTaXplVGltZXIoVGltZXI8QXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U+Kik7CisKIHByaXZhdGU6CiAgICAgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKTsKICAgICBQ
YXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQp
OwpAQCAtMTI4LDYgKzEzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGVja0Zvck1heFNpemVS
ZWFjaGVkKCk7CiAgICAgdm9pZCBjaGVja0ZvckRlbGV0ZWRSZXNvdXJjZXMoKTsKICAgICBsb25n
IGxvbmcgZmxhdEZpbGVBcmVhU2l6ZSgpOworCisgICAgaW50NjRfdCBjdXJyZW50RXN0aW1hdGVk
TWVtb3J5U2l6ZSgpOwogICAgIAogICAgIFN0cmluZyBtX2NhY2hlRGlyZWN0b3J5OwogICAgIFN0
cmluZyBtX2NhY2hlRmlsZTsKQEAgLTE0Niw2ICsxNTQsOSBAQCBwcml2YXRlOgogICAgIHR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCo+IENhY2hlR3JvdXBNYXA7
CiAgICAgQ2FjaGVHcm91cE1hcCBtX2NhY2hlc0luTWVtb3J5OyAvLyBFeGNsdWRlcyBvYnNvbGV0
ZSBjYWNoZSBncm91cHMuCiAKKyAgICBtdXRhYmxlIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogbV9s
YXN0VXNlZEdyb3VwOworICAgIFRpbWVyPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiBtX3BydW5l
TWVtb3J5VGltZXI7CisKICAgICBmcmllbmQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIGNhY2hl
U3RvcmFnZSgpOwogfTsKICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214454</attachid>
            <date>2013-10-17 07:26:19 -0700</date>
            <delta_ts>2013-10-31 05:14:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122954-20131017162616.patch</filename>
            <type>text/plain</type>
            <size>14882</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI0OTczMzE3MjBmYzky
ZGU5NDVlMTgyMGEzNmY4MDJmZGIxYzhhMC4uNGM3Y2YwODEwYTM3YjE4OWM5NzkzOTFjN2QyY2U2
Nzg5ZGE1ZWYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTEwLTE3ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0Fw
cENhY2hlXSBUcnlpbmcgdG8ga2VlcCBtZW1vcnkgY2FjaGVzIGluIGNvbnRyb2wKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjk1NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZTo6YWRkUmVzb3VyY2UpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaXNhc3NvY2lhdGVEb2N1bWVudExvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpc2Fzc29jaWF0
ZUxvYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpjbGVh
cik6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmVzdGltYXRlZE1l
bW9yeVNpemUpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmNsZWFyTWFpblJlc291
cmNlQXBwbGljYXRpb25DYWNoZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Ojpsb2FkQ2FjaGVHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZmluZEluTWVtb3J5Q2FjaGVHcm91cCk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9y
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdy
b3VwRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmVVcGRhdGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6bG9hZENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpjdXJyZW50RXN0aW1hdGVkTWVtb3J5U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6Y29udHJvbE1lbW9yeVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNvbnRyb2xNZW1vcnlTaXplVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6QXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oOgorCiAyMDEzLTEwLTE2ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2su
Y29tPgogCiAgICAgICAgIEVtcGhhc2lzIG1hcmtzIGhhcyB3cm9uZyBjb2xvci4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRl
eCA4NTI4OWIzMzk4MjM4MjNkZGQyZDcwYWRlYzE0YWYyOTZmNDlhZGIyLi4wOTRkOTZmZmZkZGJm
NmU5NTZkNzg5Y2U5NDA3ZTcyMGQxNTUyMmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC05Nyw2ICs5Nyw5IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZTo6YWRkUmVzb3VyY2UoUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U+IHJlc291cmNlCiAgICAgbV9lc3RpbWF0ZWRTaXplSW5TdG9yYWdlICs9IHJl
c291cmNlLT5lc3RpbWF0ZWRTaXplSW5TdG9yYWdlKCk7CiAKICAgICBtX3Jlc291cmNlcy5zZXQo
dXJsLCByZXNvdXJjZSk7CisKKyAgICBpZiAobV9zdG9yYWdlSUQpCisgICAgICAgIGNhY2hlU3Rv
cmFnZSgpLmNvbnRyb2xNZW1vcnlTaXplKG1fZ3JvdXApOwogfQogCiB1bnNpZ25lZCBBcHBsaWNh
dGlvbkNhY2hlOjpyZW1vdmVSZXNvdXJjZShjb25zdCBTdHJpbmcmIHVybCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAKaW5kZXggNzM1N2I0NWZhNmFhN2QwY2QxMTM3MGM0NWZhNjM3ZGIzZWY4MDU1Ni4uYWNlNDM1
MTNhYjQwODMxOWUxNzI1NTU3YTRlZmE1YTlmNmQwYTcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAg
LTM2MCwxMiArMzYwLDE0IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzdG9wTG9hZGlu
ZygpCiAgICAgbV9wZW5kaW5nRW50cmllcy5jbGVhcigpOwogfSAgICAKIAotdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlzYXNzb2NpYXRlRG9jdW1l
bnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgYm9vbCBjbGVhck1haW5SZXNvdXJjZUFw
cGxpY2F0aW9uQ2FjaGUpCiB7CiAgICAgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzLnJlbW92
ZShsb2FkZXIpOwogICAgIG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycy5yZW1vdmUobG9h
ZGVyKTsKIAogICAgIGxvYWRlci0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+c2V0QXBwbGljYXRp
b25DYWNoZSgwKTsgLy8gV2lsbCBzZXQgY2FuZGlkYXRlIHRvIDAsIHRvby4KKyAgICBpZiAoY2xl
YXJNYWluUmVzb3VyY2VBcHBsaWNhdGlvbkNhY2hlKQorICAgICAgICBsb2FkZXItPmFwcGxpY2F0
aW9uQ2FjaGVIb3N0KCktPmNsZWFyTWFpblJlc291cmNlQXBwbGljYXRpb25DYWNoZSgpOwogCiAg
ICAgaWYgKCFtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMuaXNFbXB0eSgpIHx8ICFtX3BlbmRp
bmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0x
MTg0LDQgKzExODYsMzQgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNsZWFyU3RvcmFn
ZUlEKCkKICAgICAgICAgKCppdCktPmNsZWFyU3RvcmFnZUlEKCk7CiB9CiAKK3ZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaXNhc3NvY2lhdGVMb2FkZXJzKGNvbnN0IEhhc2hTZXQ8RG9jdW1l
bnRMb2FkZXIqPiYgbG9hZGVycykKK3sKKyAgICBpZiAobG9hZGVycy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIFZlY3RvcjxEb2N1bWVudExvYWRlcio+IGNvcHk7CisgICAgY29w
eVRvVmVjdG9yKGxvYWRlcnMsIGNvcHkpOworCisgICAgVmVjdG9yPERvY3VtZW50TG9hZGVyKj46
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNvcHkuZW5kKCk7CisgICAgZm9yIChWZWN0b3I8RG9jdW1l
bnRMb2FkZXIqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb3B5LmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKKyAgICAgICAgZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIoKml0LCB0cnVlKTsKK30K
Kwordm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNsZWFyKCkKK3sKKyAgICBkaXNhc3NvY2lh
dGVMb2FkZXJzKG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycyk7CisgICAgZGlzYXNzb2Np
YXRlTG9hZGVycyhtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMpOworfQorCitpbnQ2NF90IEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZXN0aW1hdGVkTWVtb3J5U2l6ZSgpCit7CisgICAgaW50NjRf
dCBzaXplID0gMDsKKworICAgIEhhc2hTZXQ8QXBwbGljYXRpb25DYWNoZSo+Ojpjb25zdF9pdGVy
YXRvciBlbmQgPSBtX2NhY2hlcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8QXBwbGljYXRpb25D
YWNoZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fY2FjaGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKKyAgICAgICAgc2l6ZSArPSAoKml0KS0+ZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSgpOwor
CisgICAgcmV0dXJuIHNpemU7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAppbmRleCBhNTAxNjczYTFlZWFh
MjczM2I1MzEzYWQwZDU0YTMxMDg3ZmMzNjdjLi5jYzhjN2M5NzI2MTk3NzY1YjJmYjUyNjZjMDU0
NGM2ODdiNjljY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBAIC05MSwxMCArOTEsMTMgQEAgcHVibGljOgog
ICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKERvY3VtZW50TG9hZGVyKik7CiAg
ICAgdm9pZCBmYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKERvY3VtZW50TG9hZGVyKik7CiAKLSAg
ICB2b2lkIGRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKik7CisgICAg
dm9pZCBkaXNhc3NvY2lhdGVEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciosIGJvb2wgY2xl
YXJNYWluUmVzb3VyY2VBcHBsaWNhdGlvbkNhY2hlID0gZmFsc2UpOwogCiAgICAgYm9vbCBpc0Nv
cHkoKSBjb25zdCB7IHJldHVybiBtX2lzQ29weTsgfQogCisgICAgdm9pZCBjbGVhcigpOworICAg
IGludDY0X3QgZXN0aW1hdGVkTWVtb3J5U2l6ZSgpOworCiBwcml2YXRlOgogICAgIHN0YXRpYyB2
b2lkIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgaWQsIGNv
bnN0IEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPiYgc2V0KSB7IHBvc3RMaXN0ZW5lclRhc2soaWQs
IDAsIDAsIHNldCk7IH0KICAgICBzdGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpFdmVudElEIGlkLCBEb2N1bWVudExvYWRlciogbG9hZGVyKSAgeyBwb3N0
TGlzdGVuZXJUYXNrKGlkLCAwLCAwLCBsb2FkZXIpOyB9CkBAIC0xMzIsNiArMTM1LDggQEAgcHJp
dmF0ZToKICAgICB2b2lkIGFzc29jaWF0ZURvY3VtZW50TG9hZGVyV2l0aENhY2hlKERvY3VtZW50
TG9hZGVyKiwgQXBwbGljYXRpb25DYWNoZSopOwogICAgIAogICAgIHZvaWQgc3RvcExvYWRpbmco
KTsKKworICAgIHZvaWQgZGlzYXNzb2NpYXRlTG9hZGVycyhjb25zdCBIYXNoU2V0PERvY3VtZW50
TG9hZGVyKj4mIGxvYWRlcnMpOwogICAgIAogICAgIFVSTCBtX21hbmlmZXN0VVJMOwogICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA0MzNiZjI2
OTNlYTYyNmI3MDQ1NzFjNzQ5NDdhYzA3ZjUzNTY2MWEyLi4wYzRjNDY0NjJhOWY3ZTY1YTk5ZDZl
MWZmN2VhODZlZDAzOTdhN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTQ4MCw0ICs0ODAsOSBAQCBi
b29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkKICAg
ICByZXR1cm4gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSAmJiBtX2RvY3VtZW50TG9hZGVyLT5m
cmFtZSgpLT5zZXR0aW5ncygpLm9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpOwog
fQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjbGVhck1haW5SZXNvdXJjZUFwcGxpY2F0
aW9uQ2FjaGUoKQoreworICAgIG1fbWFpblJlc291cmNlQXBwbGljYXRpb25DYWNoZS5jbGVhcigp
OworfQorCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCBmNmUwZDBiOTQx
ZTJmYTIzYTI1MjZmMmY3YzE2OWE0OWQ4NTVkZTEzLi4yMTA0NmUzYTEzOGQwYWE3Y2NlYzIxZTBh
YTQ4YTUyYzc0ZjljZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtMTUzLDYgKzE1Myw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRp
b25DYWNoZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uq
Jik7CiAgICAgICAgIGJvb2wgZ2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiYsIEFwcGxpY2F0
aW9uQ2FjaGUqID0gMCk7CiAKKyAgICAgICAgdm9pZCBjbGVhck1haW5SZXNvdXJjZUFwcGxpY2F0
aW9uQ2FjaGUoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNBcHBsaWNhdGlvbkNh
Y2hlRW5hYmxlZCgpOwogICAgICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIoKSBj
b25zdCB7IHJldHVybiBtX2RvY3VtZW50TG9hZGVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRl
eCAzYzYyNGRmNDQ3YmZlMWFhMzI1OTcxMWZkYmEyY2VjOTI0MjJkNTc4Li4zMWE0ZWY0MTFlYWQ4
NjRiNWIxZWJlZjAyYzYyZjQzMzI0NmRhNDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTQy
LDYgKzQyLDkgQEAKICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCitzdGF0aWMgY29uc3QgaW50NjRfdCBtYXhNZW1vcnlT
aXplID0gMSA8PCAxMDsKK3N0YXRpYyBjb25zdCBpbnQgZnVsbFBydW5lRGVsYXkgPSAyOworCiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzIsNiArMTM1
LDggQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9h
ZENhY2hlR3JvdXAoY29uc3QgVVJMJiBtYW5pZmUKICAgICBncm91cC0+c2V0U3RvcmFnZUlEKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50NjQoMCkpKTsKICAgICBn
cm91cC0+c2V0TmV3ZXN0Q2FjaGUoY2FjaGUucmVsZWFzZSgpKTsKIAorICAgIGNvbnRyb2xNZW1v
cnlTaXplKGdyb3VwKTsKKwogICAgIHJldHVybiBncm91cDsKIH0gICAgCiAKQEAgLTE1NiwxMyAr
MTYxLDE2IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3QgVVJMCiAgICAgfQogICAgIAogICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBncm91cDsKKworICAgIG1fbGFzdFVzZWRHcm91cCA9IGdyb3Vw
OwogICAgIAogICAgIHJldHVybiBncm91cDsKIH0KIAogQXBwbGljYXRpb25DYWNoZUdyb3VwKiBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZEluTWVtb3J5Q2FjaGVHcm91cChjb25zdCBVUkwm
IG1hbmlmZXN0VVJMKSBjb25zdAogewotICAgIHJldHVybiBtX2NhY2hlc0luTWVtb3J5LmdldCht
YW5pZmVzdFVSTCk7CisgICAgbV9sYXN0VXNlZEdyb3VwID0gbV9jYWNoZXNJbk1lbW9yeS5nZXQo
bWFuaWZlc3RVUkwpOworICAgIHJldHVybiBtX2xhc3RVc2VkR3JvdXA7CiB9CiAKIHZvaWQgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRNYW5pZmVzdEhvc3RIYXNoZXMoKQpAQCAtMjU2LDYg
KzI2NCw4IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmNhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIGdyb3VwLT5zZXROZXdl
c3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOwogICAgICAgICAKICAgICAgICAgbV9jYWNoZXNJbk1l
bW9yeS5zZXQoZ3JvdXAtPm1hbmlmZXN0VVJMKCksIGdyb3VwKTsKKworICAgICAgICBjb250cm9s
TWVtb3J5U2l6ZShncm91cCk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gZ3JvdXA7CiAgICAg
fQpAQCAtMzI3LDYgKzMzNyw4IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBVCiAgICAgICAgIGdy
b3VwLT5zZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOwogICAgICAgICAKICAgICAgICAg
bV9jYWNoZXNJbk1lbW9yeS5zZXQoZ3JvdXAtPm1hbmlmZXN0VVJMKCksIGdyb3VwKTsKKworICAg
ICAgICBjb250cm9sTWVtb3J5U2l6ZShncm91cCk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4g
Z3JvdXA7CiAgICAgfQpAQCAtMzUyLDYgKzM2NCw5IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OmNhY2hlR3JvdXBEZXN0cm95ZWQoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCkK
ICAgICAvLyBJZiB0aGUgY2FjaGUgZ3JvdXAgaXMgaGFsZi1jcmVhdGVkLCB3ZSBkb24ndCB3YW50
IGl0IGluIHRoZSBzYXZlZCBzZXQgKGFzIGl0IGlzIG5vdCBzdG9yZWQgaW4gZGF0YWJhc2UpLgog
ICAgIGlmICghZ3JvdXAtPnN0b3JhZ2VJRCgpKQogICAgICAgICBtX2NhY2hlSG9zdFNldC5yZW1v
dmUodXJsSG9zdEhhc2goZ3JvdXAtPm1hbmlmZXN0VVJMKCkpKTsKKworICAgIGlmIChtX2xhc3RV
c2VkR3JvdXAgPT0gZ3JvdXApCisgICAgICAgIG1fbGFzdFVzZWRHcm91cCA9IDA7CiB9CiAKIHZv
aWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBNYWRlT2Jzb2xldGUoQXBwbGlj
YXRpb25DYWNoZUdyb3VwKiBncm91cCkKQEAgLTg5MSw2ICs5MDYsNyBAQCBib29sIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
LCB1bnNpZ25lZAogICAgICAgICByZXNvdXJjZS0+ZGF0YSgpLT5jbGVhcigpOwogCiAgICAgcmVz
b3VyY2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKKwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC05MDcsNiArOTIzLDggQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVV
cGRhdGVkVHlwZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmMKICAgICBlbnRyeVN0
YXRlbWVudC5iaW5kSW50NjQoMSwgcmVzb3VyY2UtPnR5cGUoKSk7CiAgICAgZW50cnlTdGF0ZW1l
bnQuYmluZEludDY0KDIsIHJlc291cmNlLT5zdG9yYWdlSUQoKSk7CiAKKyAgICBjb250cm9sTWVt
b3J5U2l6ZShjYWNoZS0+Z3JvdXAoKSk7CisKICAgICByZXR1cm4gZXhlY3V0ZVN0YXRlbWVudChl
bnRyeVN0YXRlbWVudCk7CiB9CiAKQEAgLTExOTcsNiArMTIxNSw4IEBAIFBhc3NSZWZQdHI8QXBw
bGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25l
ZCBzdG9yYWdlCiAgICAgCiAgICAgY2FjaGUtPnNldFN0b3JhZ2VJRChzdG9yYWdlSUQpOwogCisg
ICAgY29udHJvbE1lbW9yeVNpemUoKTsKKwogICAgIHJldHVybiBjYWNoZS5yZWxlYXNlKCk7CiB9
ICAgIAogICAgIApAQCAtMTUzNSwxMCArMTU1NSw3MCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpkZWxldGVBbGxFbnRyaWVzKCkKICAgICB2YWN1dW1EYXRhYmFzZUZpbGUoKTsKIH0K
IAoraW50NjRfdCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3VycmVudEVzdGltYXRlZE1lbW9y
eVNpemUoKQoreworICAgIGludDY0X3QgY3VycmVudFNpemUgPSAwOworCisgICAgQ2FjaGVHcm91
cE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jYWNoZXNJbk1lbW9yeS5lbmQoKTsKKyAgICBm
b3IgKENhY2hlR3JvdXBNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jYWNoZXNJbk1lbW9yeS5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGN1cnJlbnRTaXplICs9IGl0LT52YWx1
ZS0+ZXN0aW1hdGVkTWVtb3J5U2l6ZSgpOworCisgICAgcmV0dXJuIGN1cnJlbnRTaXplOworfQor
Cit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjb250cm9sTWVtb3J5U2l6ZShBcHBsaWNh
dGlvbkNhY2hlR3JvdXAqIGdyb3VwRXhjbHVkZWRGcm9tUHVyZ2UpCit7CisgICAgaWYgKCFncm91
cEV4Y2x1ZGVkRnJvbVB1cmdlKQorICAgICAgICBtX2xhc3RVc2VkR3JvdXAgPSBncm91cEV4Y2x1
ZGVkRnJvbVB1cmdlOworICAgIGNvbnRyb2xNZW1vcnlTaXplKCk7Cit9CisKK3ZvaWQgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmNvbnRyb2xNZW1vcnlTaXplKCkKK3sKKyAgICBpbnQ2NF90IGN1
cnJlbnRTaXplID0gY3VycmVudEVzdGltYXRlZE1lbW9yeVNpemUoKTsKKworICAgIGlmIChjdXJy
ZW50U2l6ZSA8IG1heE1lbW9yeVNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIGN1cnJlbnRT
aXplID0gY3VycmVudEVzdGltYXRlZE1lbW9yeVNpemUoKTsKKworICAgIFZlY3RvcjxBcHBsaWNh
dGlvbkNhY2hlR3JvdXAqPiBjb3B5OworICAgIC8vIGNvcHlUb1ZlY3RvcihtX2NhY2hlc0luTWVt
b3J5LCBjb3B5KTsKKyAgICBjb3B5LnJlc2l6ZShtX2NhY2hlc0luTWVtb3J5LnNpemUoKSk7Cisg
ICAgQ2FjaGVHcm91cE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NhY2hlc0luTWVtb3J5LmJl
Z2luKCk7CisgICAgQ2FjaGVHcm91cE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jYWNoZXNJ
bk1lbW9yeS5lbmQoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpdCAhPSBlbmQ7ICsraXQs
ICsraSkKKyAgICAgICAgY29weVtpXSA9IGl0LT52YWx1ZTsKKyAgICBWZWN0b3I8QXBwbGljYXRp
b25DYWNoZUdyb3VwKj46OmNvbnN0X2l0ZXJhdG9yIHZlY3RvckVuZCA9IGNvcHkuZW5kKCk7Cisg
ICAgZm9yIChWZWN0b3I8QXBwbGljYXRpb25DYWNoZUdyb3VwKj46OmNvbnN0X2l0ZXJhdG9yIHZl
Y3Rvckl0ZXJhdG9yID0gY29weS5iZWdpbigpOyB2ZWN0b3JJdGVyYXRvciAhPSB2ZWN0b3JFbmQ7
ICsrdmVjdG9ySXRlcmF0b3IpCisgICAgICAgIGlmICgoKnZlY3Rvckl0ZXJhdG9yKSAhPSBtX2xh
c3RVc2VkR3JvdXApIHsKKyAgICAgICAgICAgIGN1cnJlbnRTaXplIC09ICgqdmVjdG9ySXRlcmF0
b3IpLT5lc3RpbWF0ZWRNZW1vcnlTaXplKCk7CisgICAgICAgICAgICAoKnZlY3Rvckl0ZXJhdG9y
KS0+Y2xlYXIoKTsKKyAgICAgICAgfQorCisgICAgaWYgKGN1cnJlbnRTaXplID49IG1heE1lbW9y
eVNpemUpIHsKKyAgICAgICAgQVNTRVJUKG1fbGFzdFVzZWRHcm91cCk7CisgICAgICAgIG1fcHJ1
bmVNZW1vcnlUaW1lci5zdGFydE9uZVNob3QoZnVsbFBydW5lRGVsYXkpOworICAgIH0KK30KKwor
dm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y29udHJvbE1lbW9yeVNpemVUaW1lckZpcmVk
KFRpbWVyPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiopCit7CisgICAgbV9wcnVuZU1lbW9yeVRp
bWVyLnN0b3AoKTsKKworICAgIGlmIChjdXJyZW50RXN0aW1hdGVkTWVtb3J5U2l6ZSgpIDwgbWF4
TWVtb3J5U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0VXNlZEdyb3VwID0gMDsK
KyAgICBjb250cm9sTWVtb3J5U2l6ZSgpOworfQorCiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKSAKICAgICA6IG1fbWF4aW11bVNpemUoQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKSkKICAgICAsIG1faXNNYXhpbXVtU2l6ZVJlYWNoZWQo
ZmFsc2UpCiAgICAgLCBtX2RlZmF1bHRPcmlnaW5RdW90YShBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6bm9RdW90YSgpKQorICAgICwgbV9sYXN0VXNlZEdyb3VwKDApCisgICAgLCBtX3BydW5lTWVt
b3J5VGltZXIodGhpcywgJkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjb250cm9sTWVtb3J5U2l6
ZVRpbWVyRmlyZWQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKaW5kZXggZTRiMzEwNDRlZGJjMjlk
YjdlMDIwNTIwOGZkZmVlMGY0NjQyMTcwOC4uZjViNzM5MTU1Zjc1YWJlNjA3ODJiZTE3ZTcyM2Zk
NTE4ZTljNTJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCisj
aW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAg
LTk5LDYgKzEwMCwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgaW50NjRfdCB1bmtub3duUXVv
dGEoKSB7IHJldHVybiAtMTsgfQogICAgIHN0YXRpYyBpbnQ2NF90IG5vUXVvdGEoKSB7IHJldHVy
biBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsgfQorCisgICAgdm9pZCBjb250
cm9sTWVtb3J5U2l6ZSgpOworICAgIHZvaWQgY29udHJvbE1lbW9yeVNpemUoQXBwbGljYXRpb25D
YWNoZUdyb3VwKiBncm91cEV4Y2x1ZGVkRnJvbVB1cmdlKTsKKyAgICB2b2lkIGNvbnRyb2xNZW1v
cnlTaXplVGltZXJGaXJlZChUaW1lcjxBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZT4qKTsKKwogcHJp
dmF0ZToKICAgICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpOwogICAgIFBhc3NSZWZQdHI8QXBw
bGljYXRpb25DYWNoZT4gbG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCk7CkBAIC0xMjgsNiAr
MTM0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoZWNrRm9yTWF4U2l6ZVJlYWNoZWQoKTsKICAg
ICB2b2lkIGNoZWNrRm9yRGVsZXRlZFJlc291cmNlcygpOwogICAgIGxvbmcgbG9uZyBmbGF0Rmls
ZUFyZWFTaXplKCk7CisKKyAgICBpbnQ2NF90IGN1cnJlbnRFc3RpbWF0ZWRNZW1vcnlTaXplKCk7
CiAgICAgCiAgICAgU3RyaW5nIG1fY2FjaGVEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fY2FjaGVG
aWxlOwpAQCAtMTQ2LDYgKzE1NCw5IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgQXBwbGljYXRpb25DYWNoZUdyb3VwKj4gQ2FjaGVHcm91cE1hcDsKICAgICBDYWNoZUdy
b3VwTWFwIG1fY2FjaGVzSW5NZW1vcnk7IC8vIEV4Y2x1ZGVzIG9ic29sZXRlIGNhY2hlIGdyb3Vw
cy4KIAorICAgIG11dGFibGUgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBtX2xhc3RVc2VkR3JvdXA7
CisgICAgVGltZXI8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IG1fcHJ1bmVNZW1vcnlUaW1lcjsK
KwogICAgIGZyaWVuZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgY2FjaGVTdG9yYWdlKCk7CiB9
OwogIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215643</attachid>
            <date>2013-10-31 05:14:13 -0700</date>
            <delta_ts>2013-11-08 10:58:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122954-20131031131411.patch</filename>
            <type>text/plain</type>
            <size>16494</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWVhNjI2ZDU4MGY2ODk0
ZDkxNTIyODY3Yzg3ZjdlY2U1MjMxM2MwNy4uZmM2NzhjNDEyZDM1ZjM2MWIxYmJmYzdjZjJmZTRj
NmZiOWJhNDIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTEwLTMxICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgVHJ5
IHRvIGtlZXAgQXBwQ2FjaGUgbWVtb3J5IGNhY2hlcyBpbiBjb250cm9sCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4K
KworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGU6OmFkZFJlc291cmNlKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaXNhc3NvY2lhdGVMb2Fk
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjplc3RpbWF0ZWRNZW1vcnlT
aXplKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmg6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjbGVhck1haW5SZXNvdXJjZUFw
cGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9h
ZENhY2hlR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmZpbmRPckNyZWF0ZUNhY2hlR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmZpbmRJbk1lbW9yeUNhY2hlR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cERl
c3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmVVcGRhdGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmVOZXdlc3RDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpjdXJyZW50RXN0aW1hdGVkTWVtb3J5U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y29udHJvbE1lbW9yeVNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNvbnRyb2xNZW1vcnlTaXplVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZXZpY3RSZXNv
dXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OkFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuaDoKKwogMjAxMy0xMC0zMCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTVNFXSBNYWtlIE1lZGlhU291cmNlUHJpdmF0ZSwgU291cmNl
QnVmZmVyUHJpdmF0ZSBjbGFzc2VzIFJlZkNvdW50ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDQ3NTk3NzI3
MTFjYjEwN2RlZjViNjY0ZDYyNjhlMmM1MGNjNjE2ZC4uZThiYWE3YjMzMmUyZGI1YjdiNzA4OTI2
NGFkNDMxZjRhMTdiZTI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTEwLTMx
ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgVHJ5IHRvIGtlZXAgQXBwQ2FjaGUgbWVtb3J5IGNhY2hlcyBpbiBjb250cm9sCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5NTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNsZWFyUmVzb3VyY2VD
YWNoZXMpOgorCiAyMDEzLTEwLTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXSB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2Nl
cnRpZmljYXRlX2Zvcl9ob3N0IGRvYyBpcyBtaXNzaW5nIFNpbmNlIHRhZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IGUx
MWZiNzk2MzhjNThjODAwODZhMDI2NWEwNjI3ZTkxMzdkNWVmNzguLjY5N2ZmM2YyY2I5MDIzNDZi
N2RkYjJhMjg3ZTA3NTRmNWE3OTAwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTk3LDYgKzk3LDkgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlOjphZGRSZXNvdXJjZShQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZT4gcmVzb3VyY2UKICAgICBtX2VzdGltYXRlZFNpemVJblN0b3JhZ2UgKz0gcmVzb3Vy
Y2UtPmVzdGltYXRlZFNpemVJblN0b3JhZ2UoKTsKIAogICAgIG1fcmVzb3VyY2VzLnNldCh1cmws
IHJlc291cmNlKTsKKworICAgIGlmIChtX3N0b3JhZ2VJRCkKKyAgICAgICAgY2FjaGVTdG9yYWdl
KCkuY29udHJvbE1lbW9yeVNpemUobV9ncm91cCk7CiB9CiAKIHVuc2lnbmVkIEFwcGxpY2F0aW9u
Q2FjaGU6OnJlbW92ZVJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApp
bmRleCA3MzU3YjQ1ZmE2YWE3ZDBjZDExMzcwYzQ1ZmE2MzdkYjNlZjgwNTU2Li5hY2U0MzUxM2Fi
NDA4MzE5ZTE3MjU1NTdhNGVmYTVhOWY2ZDBhNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtMzYw
LDEyICszNjAsMTQgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0b3BMb2FkaW5nKCkK
ICAgICBtX3BlbmRpbmdFbnRyaWVzLmNsZWFyKCk7CiB9ICAgIAogCi12b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlcikKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaXNhc3NvY2lhdGVEb2N1bWVudExv
YWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBib29sIGNsZWFyTWFpblJlc291cmNlQXBwbGlj
YXRpb25DYWNoZSkKIHsKICAgICBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMucmVtb3ZlKGxv
YWRlcik7CiAgICAgbV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzLnJlbW92ZShsb2FkZXIp
OwogCiAgICAgbG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5zZXRBcHBsaWNhdGlvbkNh
Y2hlKDApOyAvLyBXaWxsIHNldCBjYW5kaWRhdGUgdG8gMCwgdG9vLgorICAgIGlmIChjbGVhck1h
aW5SZXNvdXJjZUFwcGxpY2F0aW9uQ2FjaGUpCisgICAgICAgIGxvYWRlci0+YXBwbGljYXRpb25D
YWNoZUhvc3QoKS0+Y2xlYXJNYWluUmVzb3VyY2VBcHBsaWNhdGlvbkNhY2hlKCk7CiAKICAgICBp
ZiAoIW1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycy5pc0VtcHR5KCkgfHwgIW1fcGVuZGluZ01h
c3RlclJlc291cmNlTG9hZGVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExODQs
NCArMTE4NiwzNCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2xlYXJTdG9yYWdlSUQo
KQogICAgICAgICAoKml0KS0+Y2xlYXJTdG9yYWdlSUQoKTsKIH0KIAordm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmRpc2Fzc29jaWF0ZUxvYWRlcnMoY29uc3QgSGFzaFNldDxEb2N1bWVudExv
YWRlcio+JiBsb2FkZXJzKQoreworICAgIGlmIChsb2FkZXJzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgVmVjdG9yPERvY3VtZW50TG9hZGVyKj4gY29weTsKKyAgICBjb3B5VG9W
ZWN0b3IobG9hZGVycywgY29weSk7CisKKyAgICBWZWN0b3I8RG9jdW1lbnRMb2FkZXIqPjo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gY29weS5lbmQoKTsKKyAgICBmb3IgKFZlY3RvcjxEb2N1bWVudExv
YWRlcio+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNvcHkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQorICAgICAgICBkaXNhc3NvY2lhdGVEb2N1bWVudExvYWRlcigqaXQsIHRydWUpOworfQorCit2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2xlYXIoKQoreworICAgIGRpc2Fzc29jaWF0ZUxv
YWRlcnMobV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzKTsKKyAgICBkaXNhc3NvY2lhdGVM
b2FkZXJzKG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycyk7Cit9CisKK2ludDY0X3QgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjplc3RpbWF0ZWRNZW1vcnlTaXplKCkKK3sKKyAgICBpbnQ2NF90IHNp
emUgPSAwOworCisgICAgSGFzaFNldDxBcHBsaWNhdGlvbkNhY2hlKj46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1fY2FjaGVzLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxBcHBsaWNhdGlvbkNhY2hl
Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jYWNoZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQorICAgICAgICBzaXplICs9ICgqaXQpLT5lc3RpbWF0ZWRTaXplSW5TdG9yYWdlKCk7CisKKyAg
ICByZXR1cm4gc2l6ZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCmluZGV4IGE1MDE2NzNhMWVlYWEyNzMz
YjUzMTNhZDBkNTRhMzEwODdmYzM2N2MuLmNjOGM3Yzk3MjYxOTc3NjViMmZiNTI2NmMwNTQ0YzY4
N2I2OWNjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmgKQEAgLTkxLDEwICs5MSwxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2
b2lkIGZhaWxlZExvYWRpbmdNYWluUmVzb3VyY2UoRG9jdW1lbnRMb2FkZXIqKTsKIAotICAgIHZv
aWQgZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2b2lk
IGRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiwgYm9vbCBjbGVhck1h
aW5SZXNvdXJjZUFwcGxpY2F0aW9uQ2FjaGUgPSBmYWxzZSk7CiAKICAgICBib29sIGlzQ29weSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNDb3B5OyB9CiAKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgaW50
NjRfdCBlc3RpbWF0ZWRNZW1vcnlTaXplKCk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQg
cG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBpZCwgY29uc3Qg
SGFzaFNldDxEb2N1bWVudExvYWRlcio+JiBzZXQpIHsgcG9zdExpc3RlbmVyVGFzayhpZCwgMCwg
MCwgc2V0KTsgfQogICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25D
YWNoZUhvc3Q6OkV2ZW50SUQgaWQsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpICB7IHBvc3RMaXN0
ZW5lclRhc2soaWQsIDAsIDAsIGxvYWRlcik7IH0KQEAgLTEzMiw2ICsxMzUsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXJXaXRoQ2FjaGUoRG9jdW1lbnRMb2Fk
ZXIqLCBBcHBsaWNhdGlvbkNhY2hlKik7CiAgICAgCiAgICAgdm9pZCBzdG9wTG9hZGluZygpOwor
CisgICAgdm9pZCBkaXNhc3NvY2lhdGVMb2FkZXJzKGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRMb2Fk
ZXIqPiYgbG9hZGVycyk7CiAgICAgCiAgICAgVVJMIG1fbWFuaWZlc3RVUkw7CiAgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDQzM2JmMjY5M2Vh
NjI2YjcwNDU3MWM3NDk0N2FjMDdmNTM1NjYxYTIuLjBjNGM0NjQ2MmE5ZjdlNjVhOTlkNmUxZmY3
ZWE4NmVkMDM5N2E3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtNDgwLDQgKzQ4MCw5IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKQogICAgIHJl
dHVybiBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpICYmIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1l
KCktPnNldHRpbmdzKCkub2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCk7CiB9CiAK
K3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNsZWFyTWFpblJlc291cmNlQXBwbGljYXRpb25D
YWNoZSgpCit7CisgICAgbV9tYWluUmVzb3VyY2VBcHBsaWNhdGlvbkNhY2hlLmNsZWFyKCk7Cit9
CisKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IGY2ZTBkMGI5NDFlMmZh
MjNhMjUyNmYyZjdjMTY5YTQ5ZDg1NWRlMTMuLjIxMDQ2ZTNhMTM4ZDBhYTdjY2VjMjFlMGFhNDhh
NTJjNzRmOWNlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC0xNTMsNiArMTUzLDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBib29sIHNob3VsZExvYWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNh
Y2hlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSomKTsK
ICAgICAgICAgYm9vbCBnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqJiwgQXBwbGljYXRpb25D
YWNoZSogPSAwKTsKIAorICAgICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlQXBwbGljYXRpb25D
YWNoZSgpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVF
bmFibGVkKCk7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDEz
YmVkMGZhYjNlNTc4Zjk4OTY3ZjFhZmIwZjc3ODdhY2U0MTUzNGEuLmZlNzRjODBhMTFiZmFmYzFh
NTNlMjVlOThkY2ZjMGZmMDJiYTQzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDIsNiAr
NDIsOSBAQAogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAKK3N0YXRpYyBjb25zdCBpbnQ2NF90IG1heE1lbW9yeVNpemUg
PSAxIDw8IDIwOyAvLyAxTUIKK3N0YXRpYyBjb25zdCBpbnQgZnVsbFBydW5lRGVsYXkgPSAxODA7
IC8vIDMgbWludXRlcworCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xMzIsNiArMTM1LDggQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlR3JvdXAoY29uc3QgVVJMJiBtYW5pZmUKICAgICBncm91
cC0+c2V0U3RvcmFnZUlEKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQuZ2V0Q29sdW1u
SW50NjQoMCkpKTsKICAgICBncm91cC0+c2V0TmV3ZXN0Q2FjaGUoY2FjaGUucmVsZWFzZSgpKTsK
IAorICAgIGNvbnRyb2xNZW1vcnlTaXplKGdyb3VwKTsKKwogICAgIHJldHVybiBncm91cDsKIH0g
ICAgCiAKQEAgLTE1NiwxMyArMTYxLDE2IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3QgVVJMCiAgICAg
fQogICAgIAogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBncm91cDsKKworICAgIG1fbGFz
dFVzZWRHcm91cCA9IGdyb3VwOwogICAgIAogICAgIHJldHVybiBncm91cDsKIH0KIAogQXBwbGlj
YXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZEluTWVtb3J5Q2Fj
aGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKSBjb25zdAogewotICAgIHJldHVybiBtX2Nh
Y2hlc0luTWVtb3J5LmdldChtYW5pZmVzdFVSTCk7CisgICAgbV9sYXN0VXNlZEdyb3VwID0gbV9j
YWNoZXNJbk1lbW9yeS5nZXQobWFuaWZlc3RVUkwpOworICAgIHJldHVybiBtX2xhc3RVc2VkR3Jv
dXA7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRNYW5pZmVzdEhvc3RI
YXNoZXMoKQpAQCAtMjU2LDYgKzI2NCw4IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAg
ICAgIGdyb3VwLT5zZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOwogICAgICAgICAKICAg
ICAgICAgbV9jYWNoZXNJbk1lbW9yeS5zZXQoZ3JvdXAtPm1hbmlmZXN0VVJMKCksIGdyb3VwKTsK
KworICAgICAgICBjb250cm9sTWVtb3J5U2l6ZShncm91cCk7CiAgICAgICAgIAogICAgICAgICBy
ZXR1cm4gZ3JvdXA7CiAgICAgfQpAQCAtMzI3LDYgKzMzNyw4IEBAIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChj
b25zdCBVCiAgICAgICAgIGdyb3VwLT5zZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOwog
ICAgICAgICAKICAgICAgICAgbV9jYWNoZXNJbk1lbW9yeS5zZXQoZ3JvdXAtPm1hbmlmZXN0VVJM
KCksIGdyb3VwKTsKKworICAgICAgICBjb250cm9sTWVtb3J5U2l6ZShncm91cCk7CiAgICAgICAg
IAogICAgICAgICByZXR1cm4gZ3JvdXA7CiAgICAgfQpAQCAtMzUyLDYgKzM2NCw5IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBEZXN0cm95ZWQoQXBwbGljYXRpb25D
YWNoZUdyb3VwKiBncm91cCkKICAgICAvLyBJZiB0aGUgY2FjaGUgZ3JvdXAgaXMgaGFsZi1jcmVh
dGVkLCB3ZSBkb24ndCB3YW50IGl0IGluIHRoZSBzYXZlZCBzZXQgKGFzIGl0IGlzIG5vdCBzdG9y
ZWQgaW4gZGF0YWJhc2UpLgogICAgIGlmICghZ3JvdXAtPnN0b3JhZ2VJRCgpKQogICAgICAgICBt
X2NhY2hlSG9zdFNldC5yZW1vdmUodXJsSG9zdEhhc2goZ3JvdXAtPm1hbmlmZXN0VVJMKCkpKTsK
KworICAgIGlmIChtX2xhc3RVc2VkR3JvdXAgPT0gZ3JvdXApCisgICAgICAgIG1fbGFzdFVzZWRH
cm91cCA9IDA7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBN
YWRlT2Jzb2xldGUoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCkKQEAgLTkwNyw2ICs5MjIs
OCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZVVwZGF0ZWRUeXBlKEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyYwogICAgIGVudHJ5U3RhdGVtZW50LmJpbmRJbnQ2
NCgxLCByZXNvdXJjZS0+dHlwZSgpKTsKICAgICBlbnRyeVN0YXRlbWVudC5iaW5kSW50NjQoMiwg
cmVzb3VyY2UtPnN0b3JhZ2VJRCgpKTsKIAorICAgIGNvbnRyb2xNZW1vcnlTaXplKGNhY2hlLT5n
cm91cCgpKTsKKwogICAgIHJldHVybiBleGVjdXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50KTsK
IH0KIApAQCAtMTA0Nyw2ICsxMDY0LDkgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmVOZXdlc3RDYWNoZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwLCBBcHAKICAgICBn
cm91cFN0b3JhZ2VJREpvdXJuYWwuY29tbWl0KCk7CiAgICAgcmVzb3VyY2VTdG9yYWdlSURKb3Vy
bmFsLmNvbW1pdCgpOwogICAgIHN0b3JlQ2FjaGVUcmFuc2FjdGlvbi5jb21taXQoKTsKKworICAg
IGNvbnRyb2xNZW1vcnlTaXplKCk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTE5Nyw2
ICsxMjE3LDggQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAgICAKICAgICBjYWNoZS0+c2V0
U3RvcmFnZUlEKHN0b3JhZ2VJRCk7CiAKKyAgICBjb250cm9sTWVtb3J5U2l6ZSgpOworCiAgICAg
cmV0dXJuIGNhY2hlLnJlbGVhc2UoKTsKIH0gICAgCiAgICAgCkBAIC0xNTM1LDEwICsxNTU3LDc1
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUFsbEVudHJpZXMoKQogICAg
IHZhY3V1bURhdGFiYXNlRmlsZSgpOwogfQogCitpbnQ2NF90IEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpjdXJyZW50RXN0aW1hdGVkTWVtb3J5U2l6ZSgpCit7CisgICAgaW50NjRfdCBjdXJyZW50
U2l6ZSA9IDA7CisKKyAgICBDYWNoZUdyb3VwTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2Nh
Y2hlc0luTWVtb3J5LmVuZCgpOworICAgIGZvciAoQ2FjaGVHcm91cE1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX2NhY2hlc0luTWVtb3J5LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAg
ICAgY3VycmVudFNpemUgKz0gaXQtPnZhbHVlLT5lc3RpbWF0ZWRNZW1vcnlTaXplKCk7CisKKyAg
ICByZXR1cm4gY3VycmVudFNpemU7Cit9CisKK3ZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmNvbnRyb2xNZW1vcnlTaXplKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXBFeGNsdWRlZEZy
b21QdXJnZSkKK3sKKyAgICBpZiAoZ3JvdXBFeGNsdWRlZEZyb21QdXJnZSkKKyAgICAgICAgbV9s
YXN0VXNlZEdyb3VwID0gZ3JvdXBFeGNsdWRlZEZyb21QdXJnZTsKKyAgICBjb250cm9sTWVtb3J5
U2l6ZSgpOworfQorCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjb250cm9sTWVtb3J5
U2l6ZSgpCit7CisgICAgaW50NjRfdCBjdXJyZW50U2l6ZSA9IGN1cnJlbnRFc3RpbWF0ZWRNZW1v
cnlTaXplKCk7CisKKyAgICBpZiAoY3VycmVudFNpemUgPCBtYXhNZW1vcnlTaXplKQorICAgICAg
ICByZXR1cm47CisKKyAgICBWZWN0b3I8QXBwbGljYXRpb25DYWNoZUdyb3VwKj4gY29weTsKKyAg
ICAvLyBjb3B5VG9WZWN0b3IobV9jYWNoZXNJbk1lbW9yeSwgY29weSk7CisgICAgY29weS5yZXNp
emUobV9jYWNoZXNJbk1lbW9yeS5zaXplKCkpOworICAgIENhY2hlR3JvdXBNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9jYWNoZXNJbk1lbW9yeS5iZWdpbigpOworICAgIENhY2hlR3JvdXBNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY2FjaGVzSW5NZW1vcnkuZW5kKCk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaXQgIT0gZW5kOyArK2l0LCArK2kpCisgICAgICAgIGNvcHlbaV0gPSBp
dC0+dmFsdWU7CisgICAgVmVjdG9yPEFwcGxpY2F0aW9uQ2FjaGVHcm91cCo+Ojpjb25zdF9pdGVy
YXRvciB2ZWN0b3JFbmQgPSBjb3B5LmVuZCgpOworICAgIGZvciAoVmVjdG9yPEFwcGxpY2F0aW9u
Q2FjaGVHcm91cCo+Ojpjb25zdF9pdGVyYXRvciB2ZWN0b3JJdGVyYXRvciA9IGNvcHkuYmVnaW4o
KTsgdmVjdG9ySXRlcmF0b3IgIT0gdmVjdG9yRW5kOyArK3ZlY3Rvckl0ZXJhdG9yKQorICAgICAg
ICBpZiAoKCp2ZWN0b3JJdGVyYXRvcikgIT0gbV9sYXN0VXNlZEdyb3VwKSB7CisgICAgICAgICAg
ICBjdXJyZW50U2l6ZSAtPSAoKnZlY3Rvckl0ZXJhdG9yKS0+ZXN0aW1hdGVkTWVtb3J5U2l6ZSgp
OworICAgICAgICAgICAgKCp2ZWN0b3JJdGVyYXRvciktPmNsZWFyKCk7CisgICAgICAgIH0KKwor
ICAgIGlmIChjdXJyZW50U2l6ZSA+PSBtYXhNZW1vcnlTaXplKSB7CisgICAgICAgIEFTU0VSVCht
X2xhc3RVc2VkR3JvdXApOworICAgICAgICBtX3BydW5lTWVtb3J5VGltZXIuc3RhcnRPbmVTaG90
KGZ1bGxQcnVuZURlbGF5KTsKKyAgICB9Cit9CisKK3ZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OmNvbnRyb2xNZW1vcnlTaXplVGltZXJGaXJlZChUaW1lcjxBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZT4qKQoreworICAgIGlmIChjdXJyZW50RXN0aW1hdGVkTWVtb3J5U2l6ZSgpIDwgbWF4TWVt
b3J5U2l6ZSkgeworICAgICAgICBtX3BydW5lTWVtb3J5VGltZXIuc3RvcCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZXZpY3RSZXNvdXJjZXMoKTsKK30KKwordm9pZCBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZXZpY3RSZXNvdXJjZXMoKQoreworICAgIG1fcHJ1bmVNZW1vcnlU
aW1lci5zdG9wKCk7CisKKyAgICBtX2xhc3RVc2VkR3JvdXAgPSAwOworICAgIGNvbnRyb2xNZW1v
cnlTaXplKCk7Cit9CisKIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZSgpIAogICAgIDogbV9tYXhpbXVtU2l6ZShBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
bm9RdW90YSgpKQogICAgICwgbV9pc01heGltdW1TaXplUmVhY2hlZChmYWxzZSkKICAgICAsIG1f
ZGVmYXVsdE9yaWdpblF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCkpCisg
ICAgLCBtX2xhc3RVc2VkR3JvdXAoMCkKKyAgICAsIG1fcHJ1bmVNZW1vcnlUaW1lcih0aGlzLCAm
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNvbnRyb2xNZW1vcnlTaXplVGltZXJGaXJlZCkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCBlNGIzMTA0NGVkYmMyOWRiN2UwMjA1MjA4ZmRmZWUw
ZjQ2NDIxNzA4Li4yZGY3ZDU5Y2Q0Yzk3YjNjOTA3MzZkZjgzNGNmYTM5NTQ3ZTFmY2YxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW5IYXNoLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtOTksNiArMTAwLDEyIEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBpbnQ2NF90IHVua25vd25RdW90YSgpIHsgcmV0dXJuIC0x
OyB9CiAgICAgc3RhdGljIGludDY0X3Qgbm9RdW90YSgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50NjRfdD46Om1heCgpOyB9CisKKyAgICB2b2lkIGNvbnRyb2xNZW1vcnlTaXplKCk7
CisgICAgdm9pZCBjb250cm9sTWVtb3J5U2l6ZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3Vw
RXhjbHVkZWRGcm9tUHVyZ2UpOworICAgIHZvaWQgY29udHJvbE1lbW9yeVNpemVUaW1lckZpcmVk
KFRpbWVyPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiopOworICAgIHZvaWQgZXZpY3RSZXNvdXJj
ZXMoKTsKKwogcHJpdmF0ZToKICAgICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpOwogICAgIFBh
c3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gbG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCk7
CkBAIC0xMjgsNiArMTM1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoZWNrRm9yTWF4U2l6ZVJl
YWNoZWQoKTsKICAgICB2b2lkIGNoZWNrRm9yRGVsZXRlZFJlc291cmNlcygpOwogICAgIGxvbmcg
bG9uZyBmbGF0RmlsZUFyZWFTaXplKCk7CisKKyAgICBpbnQ2NF90IGN1cnJlbnRFc3RpbWF0ZWRN
ZW1vcnlTaXplKCk7CiAgICAgCiAgICAgU3RyaW5nIG1fY2FjaGVEaXJlY3Rvcnk7CiAgICAgU3Ry
aW5nIG1fY2FjaGVGaWxlOwpAQCAtMTQ2LDYgKzE1NSw5IEBAIHByaXZhdGU6CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFN0cmluZywgQXBwbGljYXRpb25DYWNoZUdyb3VwKj4gQ2FjaGVHcm91cE1hcDsK
ICAgICBDYWNoZUdyb3VwTWFwIG1fY2FjaGVzSW5NZW1vcnk7IC8vIEV4Y2x1ZGVzIG9ic29sZXRl
IGNhY2hlIGdyb3Vwcy4KIAorICAgIG11dGFibGUgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBtX2xh
c3RVc2VkR3JvdXA7CisgICAgVGltZXI8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IG1fcHJ1bmVN
ZW1vcnlUaW1lcjsKKwogICAgIGZyaWVuZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgY2FjaGVT
dG9yYWdlKCk7CiB9OwogIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggYzA5MGY0NDU1NTYzYTg4YmZkMWU2ODA5ODM1OGNjYjc4YWJhZDNjMi4uYTYyYjA3NzRl
MGQ4OTYxZTA1MjgwNmY1MDE1MzZmYzg2YmFjM2I1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC03NDEsNiArNzQxLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpj
bGVhclJlc291cmNlQ2FjaGVzKFJlc291cmNlQ2FjaGVzVG9DbGVhciByZXNvdXJjZUNhY2hlc1Rv
Q2xlYXIKICAgICBzZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpOwogCiAgICAgbWVtb3J5Q2FjaGUo
KS0+ZXZpY3RSZXNvdXJjZXMoKTsKKyAgICBjYWNoZVN0b3JhZ2UoKS5ldmljdFJlc291cmNlcygp
OyAvLyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZQogCiAgICAgLy8gRW1wdHkgdGhlIGNyb3NzLW9y
aWdpbiBwcmVmbGlnaHQgY2FjaGUuCiAgICAgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNo
ZTo6c2hhcmVkKCkuZW1wdHkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216412</attachid>
            <date>2013-11-08 10:58:32 -0800</date>
            <delta_ts>2016-05-24 22:05:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122954-20131108195831.patch</filename>
            <type>text/plain</type>
            <size>17209</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4NjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ2MDIxN2I4MDc2MGVm
ZjNiMWQzYjdlODAzNzU4NTQ5NzM0MGIzZC4uYTZkNDY5YTNkYzJjOGEzNGE1MTA2ZTAwYzUyMWNm
YTI2YTAzZDMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEzLTExLTA4ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgVHJ5
IHRvIGtlZXAgQXBwQ2FjaGUgbWVtb3J5IGNhY2hlcyBpbiBjb250cm9sCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGU6
OmFkZFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlz
YXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZUdyb3VwOjpkaXNhc3NvY2lhdGVMb2FkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZUdyb3VwOjplc3RpbWF0ZWRNZW1vcnlTaXplKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpjbGVhck1haW5SZXNvdXJjZUFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlR3JvdXApOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNhY2hlR3JvdXApOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRJbk1lbW9yeUNhY2hl
R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hl
R3JvdXBGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cERlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVVcGRhdGVkVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVOZXdlc3RDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjdXJyZW50RXN0aW1hdGVkTWVtb3J5
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y29udHJv
bE1lbW9yeVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmNvbnRyb2xNZW1vcnlTaXplVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZXZpY3RSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKwogMjAxMy0xMS0w
NSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHU3RyZWFtZXJdIFJlbW92ZSBOQVRJVkVfRlVMTFNDUkVFTl9WSURFTyBzdXBwb3J0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMGQ4YmRlMDc5ZmQ3MWZiODcxZjZlYTMzMGQ5OTIxOTUyZTRhZTI5MS4uMjY2
MjhhNTExM2ZkOGNlNTJlMmVjNTFkOWE5NTRhZjc0MjZmOThjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEzLTExLTA4ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlz
QGlnYWxpYS5jb20+CisKKyAgICAgICAgVHJ5IHRvIGtlZXAgQXBwQ2FjaGUgbWVtb3J5IGNhY2hl
cyBpbiBjb250cm9sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjI5NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OmNsZWFyUmVzb3VyY2VDYWNoZXMpOgorCiAyMDEzLTExLTA0ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJREI6IFNwbGl0IGJhY2tlbmQgQ3Vyc29y
cyBhbmQgVHJhbnNhY3Rpb25zIGludG8gdGhlaXIgb3duIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDBjMGM2NGFhN2QyMzY4ZDEyMjhiZjRhZjk1MTlmYThmNTA3MTQ3ZWUuLmZkZWVhMTk5
NjU4NjBiOGRkZDUxMmI3MTY0Mjk2ODUyNzdjZDlmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC04MzMsNiArODMzLDcgQEAgX19aTjdXZWJDb3JlMjJleHRlcm5hbFJlcHJlc2VudGF0aW9uRVBO
U181RnJhbWVFagogX19aTjdXZWJDb3JlMjJleHRlcm5hbFJlcHJlc2VudGF0aW9uRVBOU183RWxl
bWVudEVqCiBfX1pON1dlYkNvcmUyMnN5c3RlbU1hcmtldGluZ1ZlcnNpb25FdgogX19aTjdXZWJD
b3JlMjJ1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzRXYKK19fWk43V2ViQ29yZTIzQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UxNGV2aWN0UmVzb3VyY2VzRXYKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UxNHNldE1heGltdW1TaXplRXgKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UxNmRlbGV0ZUFsbEVudHJpZXNFdgogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTE2c3RvcmVDb3B5T2ZDYWNoZUVSS04zV1RGNlN0cmluZ0VQTlNfMjBBcHBs
aWNhdGlvbkNhY2hlSG9zdEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCBlMTFmYjc5NjM4YzU4YzgwMDg2YTAyNjVhMDYy
N2U5MTM3ZDVlZjc4Li42OTdmZjNmMmNiOTAyMzQ2YjdkZGIyYTI4N2UwNzU0ZjVhNzkwMGVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGUuY3BwCkBAIC05Nyw2ICs5Nyw5IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6YWRkUmVzb3Vy
Y2UoUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IHJlc291cmNlCiAgICAgbV9l
c3RpbWF0ZWRTaXplSW5TdG9yYWdlICs9IHJlc291cmNlLT5lc3RpbWF0ZWRTaXplSW5TdG9yYWdl
KCk7CiAKICAgICBtX3Jlc291cmNlcy5zZXQodXJsLCByZXNvdXJjZSk7CisKKyAgICBpZiAobV9z
dG9yYWdlSUQpCisgICAgICAgIGNhY2hlU3RvcmFnZSgpLmNvbnRyb2xNZW1vcnlTaXplKG1fZ3Jv
dXApOwogfQogCiB1bnNpZ25lZCBBcHBsaWNhdGlvbkNhY2hlOjpyZW1vdmVSZXNvdXJjZShjb25z
dCBTdHJpbmcmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggNzM1N2I0NWZhNmFhN2QwY2QxMTM3
MGM0NWZhNjM3ZGIzZWY4MDU1Ni4uYWNlNDM1MTNhYjQwODMxOWUxNzI1NTU3YTRlZmE1YTlmNmQw
YTcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTM2MCwxMiArMzYwLDE0IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpzdG9wTG9hZGluZygpCiAgICAgbV9wZW5kaW5nRW50cmllcy5jbGVh
cigpOwogfSAgICAKIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpc2Fzc29jaWF0ZURv
Y3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDo6ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgYm9vbCBjbGVhck1haW5SZXNvdXJjZUFwcGxpY2F0aW9uQ2FjaGUpCiB7CiAgICAgbV9hc3Nv
Y2lhdGVkRG9jdW1lbnRMb2FkZXJzLnJlbW92ZShsb2FkZXIpOwogICAgIG1fcGVuZGluZ01hc3Rl
clJlc291cmNlTG9hZGVycy5yZW1vdmUobG9hZGVyKTsKIAogICAgIGxvYWRlci0+YXBwbGljYXRp
b25DYWNoZUhvc3QoKS0+c2V0QXBwbGljYXRpb25DYWNoZSgwKTsgLy8gV2lsbCBzZXQgY2FuZGlk
YXRlIHRvIDAsIHRvby4KKyAgICBpZiAoY2xlYXJNYWluUmVzb3VyY2VBcHBsaWNhdGlvbkNhY2hl
KQorICAgICAgICBsb2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPmNsZWFyTWFpblJlc291
cmNlQXBwbGljYXRpb25DYWNoZSgpOwogCiAgICAgaWYgKCFtX2Fzc29jaWF0ZWREb2N1bWVudExv
YWRlcnMuaXNFbXB0eSgpIHx8ICFtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMTg0LDQgKzExODYsMzQgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmNsZWFyU3RvcmFnZUlEKCkKICAgICAgICAgKCppdCktPmNsZWFyU3Rv
cmFnZUlEKCk7CiB9CiAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaXNhc3NvY2lhdGVM
b2FkZXJzKGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPiYgbG9hZGVycykKK3sKKyAgICBp
ZiAobG9hZGVycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxEb2N1
bWVudExvYWRlcio+IGNvcHk7CisgICAgY29weVRvVmVjdG9yKGxvYWRlcnMsIGNvcHkpOworCisg
ICAgVmVjdG9yPERvY3VtZW50TG9hZGVyKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNvcHkuZW5k
KCk7CisgICAgZm9yIChWZWN0b3I8RG9jdW1lbnRMb2FkZXIqPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBjb3B5LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgZGlzYXNzb2NpYXRlRG9j
dW1lbnRMb2FkZXIoKml0LCB0cnVlKTsKK30KKwordm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmNsZWFyKCkKK3sKKyAgICBkaXNhc3NvY2lhdGVMb2FkZXJzKG1fcGVuZGluZ01hc3RlclJlc291
cmNlTG9hZGVycyk7CisgICAgZGlzYXNzb2NpYXRlTG9hZGVycyhtX2Fzc29jaWF0ZWREb2N1bWVu
dExvYWRlcnMpOworfQorCitpbnQ2NF90IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZXN0aW1hdGVk
TWVtb3J5U2l6ZSgpCit7CisgICAgaW50NjRfdCBzaXplID0gMDsKKworICAgIEhhc2hTZXQ8QXBw
bGljYXRpb25DYWNoZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2NhY2hlcy5lbmQoKTsKKyAg
ICBmb3IgKEhhc2hTZXQ8QXBwbGljYXRpb25DYWNoZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1f
Y2FjaGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgc2l6ZSArPSAoKml0KS0+
ZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSgpOworCisgICAgcmV0dXJuIHNpemU7Cit9CisKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuaAppbmRleCBhNTAxNjczYTFlZWFhMjczM2I1MzEzYWQwZDU0YTMxMDg3ZmMzNjdjLi5j
YzhjN2M5NzI2MTk3NzY1YjJmYjUyNjZjMDU0NGM2ODdiNjljY2U2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBA
IC05MSwxMCArOTEsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nTWFpblJl
c291cmNlKERvY3VtZW50TG9hZGVyKik7CiAgICAgdm9pZCBmYWlsZWRMb2FkaW5nTWFpblJlc291
cmNlKERvY3VtZW50TG9hZGVyKik7CiAKLSAgICB2b2lkIGRpc2Fzc29jaWF0ZURvY3VtZW50TG9h
ZGVyKERvY3VtZW50TG9hZGVyKik7CisgICAgdm9pZCBkaXNhc3NvY2lhdGVEb2N1bWVudExvYWRl
cihEb2N1bWVudExvYWRlciosIGJvb2wgY2xlYXJNYWluUmVzb3VyY2VBcHBsaWNhdGlvbkNhY2hl
ID0gZmFsc2UpOwogCiAgICAgYm9vbCBpc0NvcHkoKSBjb25zdCB7IHJldHVybiBtX2lzQ29weTsg
fQogCisgICAgdm9pZCBjbGVhcigpOworICAgIGludDY0X3QgZXN0aW1hdGVkTWVtb3J5U2l6ZSgp
OworCiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRp
b25DYWNoZUhvc3Q6OkV2ZW50SUQgaWQsIGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPiYg
c2V0KSB7IHBvc3RMaXN0ZW5lclRhc2soaWQsIDAsIDAsIHNldCk7IH0KICAgICBzdGF0aWMgdm9p
ZCBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGlkLCBEb2N1
bWVudExvYWRlciogbG9hZGVyKSAgeyBwb3N0TGlzdGVuZXJUYXNrKGlkLCAwLCAwLCBsb2FkZXIp
OyB9CkBAIC0xMzIsNiArMTM1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGFzc29jaWF0ZURvY3Vt
ZW50TG9hZGVyV2l0aENhY2hlKERvY3VtZW50TG9hZGVyKiwgQXBwbGljYXRpb25DYWNoZSopOwog
ICAgIAogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKKworICAgIHZvaWQgZGlzYXNzb2NpYXRlTG9h
ZGVycyhjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mIGxvYWRlcnMpOwogICAgIAogICAg
IFVSTCBtX21hbmlmZXN0VVJMOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcAppbmRleCA0MzNiZjI2OTNlYTYyNmI3MDQ1NzFjNzQ5NDdhYzA3ZjUzNTY2
MWEyLi4wYzRjNDY0NjJhOWY3ZTY1YTk5ZDZlMWZmN2VhODZlZDAzOTdhN2I2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAKQEAgLTQ4MCw0ICs0ODAsOSBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0Fw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkKICAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlci0+ZnJh
bWUoKSAmJiBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5zZXR0aW5ncygpLm9mZmxpbmVXZWJB
cHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpOwogfQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjpjbGVhck1haW5SZXNvdXJjZUFwcGxpY2F0aW9uQ2FjaGUoKQoreworICAgIG1fbWFpblJlc291
cmNlQXBwbGljYXRpb25DYWNoZS5jbGVhcigpOworfQorCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuaAppbmRleCBmNmUwZDBiOTQxZTJmYTIzYTI1MjZmMmY3YzE2OWE0OWQ4NTVkZTEz
Li4yMTA0NmUzYTEzOGQwYWE3Y2NlYzIxZTBhYTQ4YTUyYzc0ZjljZWRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApA
QCAtMTUzLDYgKzE1Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBzaG91
bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqJik7CiAgICAgICAgIGJvb2wgZ2V0QXBwbGljYXRp
b25DYWNoZUZhbGxiYWNrUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlKiYsIEFwcGxpY2F0aW9uQ2FjaGUqID0gMCk7CiAKKyAgICAgICAgdm9p
ZCBjbGVhck1haW5SZXNvdXJjZUFwcGxpY2F0aW9uQ2FjaGUoKTsKKwogICAgIHByaXZhdGU6CiAg
ICAgICAgIGJvb2wgaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpOwogICAgICAgICBEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50TG9hZGVy
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxM2JlZDBmYWIzZTU3OGY5ODk2N2YxYWZiMGY3
Nzg3YWNlNDE1MzRhLi5mZTc0YzgwYTExYmZhZmMxYTUzZTI1ZTk4ZGNmYzBmZjAyYmE0MzljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTQyLDYgKzQyLDkgQEAKICNpbmNsdWRlIDx3dGYvU3Ry
aW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCitzdGF0
aWMgY29uc3QgaW50NjRfdCBtYXhNZW1vcnlTaXplID0gMSA8PCAyMDsgLy8gMU1CCitzdGF0aWMg
Y29uc3QgaW50IGZ1bGxQcnVuZURlbGF5ID0gMTgwOyAvLyAzIG1pbnV0ZXMKKwogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTMyLDYgKzEzNSw4IEBAIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZUdy
b3VwKGNvbnN0IFVSTCYgbWFuaWZlCiAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7CiAgICAgZ3JvdXAtPnNl
dE5ld2VzdENhY2hlKGNhY2hlLnJlbGVhc2UoKSk7CiAKKyAgICBjb250cm9sTWVtb3J5U2l6ZShn
cm91cCk7CisKICAgICByZXR1cm4gZ3JvdXA7CiB9ICAgIAogCkBAIC0xNTYsMTMgKzE2MSwxNiBA
QCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmaW5kT3JD
cmVhdGVDYWNoZUdyb3VwKGNvbnN0IFVSTAogICAgIH0KICAgICAKICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gZ3JvdXA7CisKKyAgICBtX2xhc3RVc2VkR3JvdXAgPSBncm91cDsKICAgICAK
ICAgICByZXR1cm4gZ3JvdXA7CiB9CiAKIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmZpbmRJbk1lbW9yeUNhY2hlR3JvdXAoY29uc3QgVVJMJiBtYW5pZmVz
dFVSTCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jYWNoZXNJbk1lbW9yeS5nZXQobWFuaWZlc3RV
UkwpOworICAgIG1fbGFzdFVzZWRHcm91cCA9IG1fY2FjaGVzSW5NZW1vcnkuZ2V0KG1hbmlmZXN0
VVJMKTsKKyAgICByZXR1cm4gbV9sYXN0VXNlZEdyb3VwOwogfQogCiB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCkKQEAgLTI1Niw2ICsyNjQsOCBA
QCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdy
b3VwRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICBncm91cC0+c2V0TmV3ZXN0Q2FjaGUo
Y2FjaGUucmVsZWFzZSgpKTsKICAgICAgICAgCiAgICAgICAgIG1fY2FjaGVzSW5NZW1vcnkuc2V0
KGdyb3VwLT5tYW5pZmVzdFVSTCgpLCBncm91cCk7CisKKyAgICAgICAgY29udHJvbE1lbW9yeVNp
emUoZ3JvdXApOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIGdyb3VwOwogICAgIH0KQEAgLTMy
Nyw2ICszMzcsOCBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgVQogICAgICAgICBncm91cC0+c2V0
TmV3ZXN0Q2FjaGUoY2FjaGUucmVsZWFzZSgpKTsKICAgICAgICAgCiAgICAgICAgIG1fY2FjaGVz
SW5NZW1vcnkuc2V0KGdyb3VwLT5tYW5pZmVzdFVSTCgpLCBncm91cCk7CisKKyAgICAgICAgY29u
dHJvbE1lbW9yeVNpemUoZ3JvdXApOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIGdyb3VwOwog
ICAgIH0KQEAgLTM1Miw2ICszNjQsOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpj
YWNoZUdyb3VwRGVzdHJveWVkKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXApCiAgICAgLy8g
SWYgdGhlIGNhY2hlIGdyb3VwIGlzIGhhbGYtY3JlYXRlZCwgd2UgZG9uJ3Qgd2FudCBpdCBpbiB0
aGUgc2F2ZWQgc2V0IChhcyBpdCBpcyBub3Qgc3RvcmVkIGluIGRhdGFiYXNlKS4KICAgICBpZiAo
IWdyb3VwLT5zdG9yYWdlSUQoKSkKICAgICAgICAgbV9jYWNoZUhvc3RTZXQucmVtb3ZlKHVybEhv
c3RIYXNoKGdyb3VwLT5tYW5pZmVzdFVSTCgpKSk7CisKKyAgICBpZiAobV9sYXN0VXNlZEdyb3Vw
ID09IGdyb3VwKQorICAgICAgICBtX2xhc3RVc2VkR3JvdXAgPSAwOwogfQogCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3VwTWFkZU9ic29sZXRlKEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCogZ3JvdXApCkBAIC05MDcsNiArOTIyLDggQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmVVcGRhdGVkVHlwZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291
cmMKICAgICBlbnRyeVN0YXRlbWVudC5iaW5kSW50NjQoMSwgcmVzb3VyY2UtPnR5cGUoKSk7CiAg
ICAgZW50cnlTdGF0ZW1lbnQuYmluZEludDY0KDIsIHJlc291cmNlLT5zdG9yYWdlSUQoKSk7CiAK
KyAgICBjb250cm9sTWVtb3J5U2l6ZShjYWNoZS0+Z3JvdXAoKSk7CisKICAgICByZXR1cm4gZXhl
Y3V0ZVN0YXRlbWVudChlbnRyeVN0YXRlbWVudCk7CiB9CiAKQEAgLTEwNDcsNiArMTA2NCw5IEBA
IGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlTmV3ZXN0Q2FjaGUoQXBwbGljYXRp
b25DYWNoZUdyb3VwKiBncm91cCwgQXBwCiAgICAgZ3JvdXBTdG9yYWdlSURKb3VybmFsLmNvbW1p
dCgpOwogICAgIHJlc291cmNlU3RvcmFnZUlESm91cm5hbC5jb21taXQoKTsKICAgICBzdG9yZUNh
Y2hlVHJhbnNhY3Rpb24uY29tbWl0KCk7CisKKyAgICBjb250cm9sTWVtb3J5U2l6ZSgpOworCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExOTcsNiArMTIxNyw4IEBAIFBhc3NSZWZQdHI8QXBw
bGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25l
ZCBzdG9yYWdlCiAgICAgCiAgICAgY2FjaGUtPnNldFN0b3JhZ2VJRChzdG9yYWdlSUQpOwogCisg
ICAgY29udHJvbE1lbW9yeVNpemUoKTsKKwogICAgIHJldHVybiBjYWNoZS5yZWxlYXNlKCk7CiB9
ICAgIAogICAgIApAQCAtMTUzNSwxMCArMTU1Nyw3NSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpkZWxldGVBbGxFbnRyaWVzKCkKICAgICB2YWN1dW1EYXRhYmFzZUZpbGUoKTsKIH0K
IAoraW50NjRfdCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3VycmVudEVzdGltYXRlZE1lbW9y
eVNpemUoKQoreworICAgIGludDY0X3QgY3VycmVudFNpemUgPSAwOworCisgICAgQ2FjaGVHcm91
cE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jYWNoZXNJbk1lbW9yeS5lbmQoKTsKKyAgICBm
b3IgKENhY2hlR3JvdXBNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jYWNoZXNJbk1lbW9yeS5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGN1cnJlbnRTaXplICs9IGl0LT52YWx1
ZS0+ZXN0aW1hdGVkTWVtb3J5U2l6ZSgpOworCisgICAgcmV0dXJuIGN1cnJlbnRTaXplOworfQor
Cit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjb250cm9sTWVtb3J5U2l6ZShBcHBsaWNh
dGlvbkNhY2hlR3JvdXAqIGdyb3VwRXhjbHVkZWRGcm9tUHVyZ2UpCit7CisgICAgaWYgKGdyb3Vw
RXhjbHVkZWRGcm9tUHVyZ2UpCisgICAgICAgIG1fbGFzdFVzZWRHcm91cCA9IGdyb3VwRXhjbHVk
ZWRGcm9tUHVyZ2U7CisgICAgY29udHJvbE1lbW9yeVNpemUoKTsKK30KKwordm9pZCBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6Y29udHJvbE1lbW9yeVNpemUoKQoreworICAgIGludDY0X3QgY3Vy
cmVudFNpemUgPSBjdXJyZW50RXN0aW1hdGVkTWVtb3J5U2l6ZSgpOworCisgICAgaWYgKGN1cnJl
bnRTaXplIDwgbWF4TWVtb3J5U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPEFw
cGxpY2F0aW9uQ2FjaGVHcm91cCo+IGNvcHk7CisgICAgLy8gY29weVRvVmVjdG9yKG1fY2FjaGVz
SW5NZW1vcnksIGNvcHkpOworICAgIGNvcHkucmVzaXplKG1fY2FjaGVzSW5NZW1vcnkuc2l6ZSgp
KTsKKyAgICBDYWNoZUdyb3VwTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY2FjaGVzSW5NZW1v
cnkuYmVnaW4oKTsKKyAgICBDYWNoZUdyb3VwTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2Nh
Y2hlc0luTWVtb3J5LmVuZCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGl0ICE9IGVuZDsg
KytpdCwgKytpKQorICAgICAgICBjb3B5W2ldID0gaXQtPnZhbHVlOworICAgIFZlY3RvcjxBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqPjo6Y29uc3RfaXRlcmF0b3IgdmVjdG9yRW5kID0gY29weS5lbmQo
KTsKKyAgICBmb3IgKFZlY3RvcjxBcHBsaWNhdGlvbkNhY2hlR3JvdXAqPjo6Y29uc3RfaXRlcmF0
b3IgdmVjdG9ySXRlcmF0b3IgPSBjb3B5LmJlZ2luKCk7IHZlY3Rvckl0ZXJhdG9yICE9IHZlY3Rv
ckVuZDsgKyt2ZWN0b3JJdGVyYXRvcikKKyAgICAgICAgaWYgKCgqdmVjdG9ySXRlcmF0b3IpICE9
IG1fbGFzdFVzZWRHcm91cCkgeworICAgICAgICAgICAgY3VycmVudFNpemUgLT0gKCp2ZWN0b3JJ
dGVyYXRvciktPmVzdGltYXRlZE1lbW9yeVNpemUoKTsKKyAgICAgICAgICAgICgqdmVjdG9ySXRl
cmF0b3IpLT5jbGVhcigpOworICAgICAgICB9CisKKyAgICBpZiAoY3VycmVudFNpemUgPj0gbWF4
TWVtb3J5U2l6ZSkgeworICAgICAgICBBU1NFUlQobV9sYXN0VXNlZEdyb3VwKTsKKyAgICAgICAg
bV9wcnVuZU1lbW9yeVRpbWVyLnN0YXJ0T25lU2hvdChmdWxsUHJ1bmVEZWxheSk7CisgICAgfQor
fQorCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjb250cm9sTWVtb3J5U2l6ZVRpbWVy
RmlyZWQoVGltZXI8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+KikKK3sKKyAgICBpZiAoY3VycmVu
dEVzdGltYXRlZE1lbW9yeVNpemUoKSA8IG1heE1lbW9yeVNpemUpIHsKKyAgICAgICAgbV9wcnVu
ZU1lbW9yeVRpbWVyLnN0b3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGV2aWN0
UmVzb3VyY2VzKCk7Cit9CisKK3ZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmV2aWN0UmVz
b3VyY2VzKCkKK3sKKyAgICBtX3BydW5lTWVtb3J5VGltZXIuc3RvcCgpOworCisgICAgbV9sYXN0
VXNlZEdyb3VwID0gMDsKKyAgICBjb250cm9sTWVtb3J5U2l6ZSgpOworfQorCiBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKSAKICAgICA6IG1fbWF4aW11
bVNpemUoQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKSkKICAgICAsIG1faXNNYXhp
bXVtU2l6ZVJlYWNoZWQoZmFsc2UpCiAgICAgLCBtX2RlZmF1bHRPcmlnaW5RdW90YShBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpKQorICAgICwgbV9sYXN0VXNlZEdyb3VwKDApCisg
ICAgLCBtX3BydW5lTWVtb3J5VGltZXIodGhpcywgJkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpj
b250cm9sTWVtb3J5U2l6ZVRpbWVyRmlyZWQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKaW5kZXgg
ZTRiMzEwNDRlZGJjMjlkYjdlMDIwNTIwOGZkZmVlMGY0NjQyMTcwOC4uMmRmN2Q1OWNkNGM5N2Iz
YzkwNzM2ZGY4MzRjZmEzOTU0N2UxZmNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUgIlNRTGl0
ZURhdGFiYXNlLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaENvdW50
ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KQEAgLTk5LDYgKzEwMCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgaW50
NjRfdCB1bmtub3duUXVvdGEoKSB7IHJldHVybiAtMTsgfQogICAgIHN0YXRpYyBpbnQ2NF90IG5v
UXVvdGEoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsgfQor
CisgICAgdm9pZCBjb250cm9sTWVtb3J5U2l6ZSgpOworICAgIHZvaWQgY29udHJvbE1lbW9yeVNp
emUoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cEV4Y2x1ZGVkRnJvbVB1cmdlKTsKKyAgICB2
b2lkIGNvbnRyb2xNZW1vcnlTaXplVGltZXJGaXJlZChUaW1lcjxBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZT4qKTsKKyAgICB2b2lkIGV2aWN0UmVzb3VyY2VzKCk7CisKIHByaXZhdGU6CiAgICAgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UoKTsKICAgICBQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+
IGxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpOwpAQCAtMTI4LDYgKzEzNSw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjaGVja0Zvck1heFNpemVSZWFjaGVkKCk7CiAgICAgdm9pZCBjaGVja0Zv
ckRlbGV0ZWRSZXNvdXJjZXMoKTsKICAgICBsb25nIGxvbmcgZmxhdEZpbGVBcmVhU2l6ZSgpOwor
CisgICAgaW50NjRfdCBjdXJyZW50RXN0aW1hdGVkTWVtb3J5U2l6ZSgpOwogICAgIAogICAgIFN0
cmluZyBtX2NhY2hlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2NhY2hlRmlsZTsKQEAgLTE0Niw2
ICsxNTUsOSBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cCo+IENhY2hlR3JvdXBNYXA7CiAgICAgQ2FjaGVHcm91cE1hcCBtX2NhY2hl
c0luTWVtb3J5OyAvLyBFeGNsdWRlcyBvYnNvbGV0ZSBjYWNoZSBncm91cHMuCiAKKyAgICBtdXRh
YmxlIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogbV9sYXN0VXNlZEdyb3VwOworICAgIFRpbWVyPEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiBtX3BydW5lTWVtb3J5VGltZXI7CisKICAgICBmcmllbmQg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIGNhY2hlU3RvcmFnZSgpOwogfTsKICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGMwOTBmNDQ1NTU2M2E4OGJmZDFl
NjgwOTgzNThjY2I3OGFiYWQzYzIuLmE2MmIwNzc0ZTBkODk2MWUwNTI4MDZmNTAxNTM2ZmM4NmJh
YzNiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNzQx
LDYgKzc0MSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJSZXNvdXJjZUNhY2hlcyhSZXNvdXJj
ZUNhY2hlc1RvQ2xlYXIgcmVzb3VyY2VDYWNoZXNUb0NsZWFyCiAgICAgc2V0Q2FjaGVNb2RlbChj
YWNoZU1vZGVsKTsKIAogICAgIG1lbW9yeUNhY2hlKCktPmV2aWN0UmVzb3VyY2VzKCk7CisgICAg
Y2FjaGVTdG9yYWdlKCkuZXZpY3RSZXNvdXJjZXMoKTsgLy8gQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UKIAogICAgIC8vIEVtcHR5IHRoZSBjcm9zcy1vcmlnaW4gcHJlZmxpZ2h0IGNhY2hlLgogICAg
IENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OnNoYXJlZCgpLmVtcHR5KCk7Cg==
</data>
<flag name="review"
          id="239717"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>