<?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>144907</bug_id>
          
          <creation_ts>2015-05-12 02:35:36 -0700</creation_ts>
          <short_desc>[Streams API] Delegate ReadableStreamReader reference counting to ReadableStream</short_desc>
          <delta_ts>2015-05-17 11:44:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1094116</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-12 02:35:36 -0700</bug_when>
    <thetext>The current implementation handles reader and stream as related but independent entities.
This causes some complexity and some bugs to maintain their state and link correctly.
It might be simpler to adapt the ReadableStreamController link for the reader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094121</commentid>
    <comment_count>1</comment_count>
      <attachid>252953</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-12 03:20:51 -0700</bug_when>
    <thetext>Created attachment 252953
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094122</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-12 03:21:32 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created attachment 252953 [details]
&gt; WIP

WIP, does not contain moving closedpromise callback handling to ReadableStream, which would be the next logical step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094138</commentid>
    <comment_count>3</comment_count>
      <attachid>252958</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-12 06:06:01 -0700</bug_when>
    <thetext>Created attachment 252958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094212</commentid>
    <comment_count>4</comment_count>
      <attachid>252973</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-12 11:48:56 -0700</bug_when>
    <thetext>Created attachment 252973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094216</commentid>
    <comment_count>5</comment_count>
      <attachid>252973</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-12 11:57:29 -0700</bug_when>
    <thetext>Comment on attachment 252973
Patch

This patch improves style over the previous patch.

It shows the benefit of removing RefCounted from ReadableStreamReader.
This removes code and at the end, there should be no need for a ReadableStreamReader.cpp, just like ReadableStreamController.

There are two downsides though:
- The ReadableStream will not be released until all readers, including released readers, are collected by the JS engine.
- The ReadableStream currently needs to keep track of all released readers.

Overall I think that this is an improvement, so r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095506</commentid>
    <comment_count>6</comment_count>
      <attachid>252973</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-17 11:44:45 -0700</bug_when>
    <thetext>Comment on attachment 252973
Patch

Clearing flags on attachment: 252973

Committed r184444: &lt;http://trac.webkit.org/changeset/184444&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095507</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-17 11:44:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252953</attachid>
            <date>2015-05-12 03:20:51 -0700</date>
            <delta_ts>2015-05-12 06:05:56 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-144907-20150512121929.patch</filename>
            <type>text/plain</type>
            <size>17082</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRiODlhNGNmZTZkODJi
NmUxM2ZlZTE4MmQ1NDBkODNlYWFiMjAwYS4uMDY3ODliMjViYzMzNmQ1MTg4YzgwODY5ZjJlNjY2
NTU2OTg2ZGYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE1LTA1LTEzICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEld
IERlbGVnYXRlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHJlZmVyZW5jZSBjb3VudGluZyB0byBSZWFk
YWJsZVN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ0OTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpjaGFu
Z2VTdGF0ZVRvQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpjaGFu
Z2VTdGF0ZVRvRXJyb3JlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6Z2V0
UmVhZGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpyZWFkZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVT
dHJlYW1SZWFkZXI6OnJlZik6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRl
cjo6ZGVyZWYpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1SZWFkZXI6OmNsb3Nl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2hhbmdlU3RhdGVU
b0Nsb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2hhbmdl
U3RhdGVUb0Vycm9yZWQpOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVJlYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1SZWFkZXI6OlJlYWRh
YmxlU3RyZWFtUmVhZGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1SZWFkZXIuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbTo6Z2V0UmVhZGVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNsb3NlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtUmVhZGVyKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWRhYmxlSlNTdHJlYW06OnN0b3JlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVK
U1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZWFkYWJsZUpTU3RyZWFtOjpqc1NvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mv
anMvUmVhZGFibGVKU1N0cmVhbS5oOgorCiAyMDE1LTA1LTEyICBYYWJpZXIgUm9kcmlndWV6IENh
bHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0IDx5b3Vlbm4uZmFi
bGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBbU3RyZWFtcyBBUEldIFJlYWRhYmxlU3RyZWFt
IHJlYWRlciBzaG91bGQgbm90IGJlIGRpc3Bvc2FibGUgd2hlbiBoYXZpbmcgcGVuZGluZyBwcm9t
aXNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bS5jcHAKaW5kZXggNGQ2OWVlNjg3YmFmNjBjOGEyM2NkYTI2NmE2NGMyOTQ3ZjBjNzJkYS4uOTlj
YmRlYmI5OWZlYTQzNGFmMjczN2Q2NjAxOTgxYTJhYjg4MzFiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCkBAIC02Myw5ICs2Mywx
MCBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvQ2xvc2VkKCkKICAgICBpZiAo
bV9zdGF0ZSAhPSBTdGF0ZTo6UmVhZGFibGUpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXRl
ID0gU3RhdGU6OkNsb3NlZDsKLSAgICBpZiAobV9yZWFkZXIpCi0gICAgICAgIG1fcmVhZGVyLT5j
aGFuZ2VTdGF0ZVRvQ2xvc2VkKCk7Ci0gICAgQVNTRVJUKCFtX3JlYWRlcik7CisgICAgaWYgKCFt
X3JlYWRlcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fcmVhZGVyLT5jaGFuZ2VTdGF0ZVRvQ2xv
c2VkKCk7CisgICAgbV9yZWxlYXNlZFJlYWRlcnMuYXBwZW5kKFdURjo6bW92ZShtX3JlYWRlcikp
OwogfQogCiB2b2lkIFJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpCkBAIC03
Myw5ICs3NCwzMSBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgp
CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlJlYWRhYmxlKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpFcnJvcmVkOwotICAgIGlmIChtX3JlYWRlcikKLSAgICAgICAg
bV9yZWFkZXItPmNoYW5nZVN0YXRlVG9FcnJvcmVkKCk7CisgICAgaWYgKCFtX3JlYWRlcikKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fcmVhZGVyLT5jaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpOworICAg
IG1fcmVsZWFzZWRSZWFkZXJzLmFwcGVuZChXVEY6Om1vdmUobV9yZWFkZXIpKTsKK30KKworUmVh
ZGFibGVTdHJlYW1SZWFkZXImIFJlYWRhYmxlU3RyZWFtOjpnZXRSZWFkZXIoKQorewogICAgIEFT
U0VSVCghbV9yZWFkZXIpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRhYmxlU3RyZWFtUmVh
ZGVyPiBuZXdSZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlYWRhYmxlU3RyZWFtUmVhZGVyPigq
dGhpcyk7CisgICAgUmVhZGFibGVTdHJlYW1SZWFkZXImIHJlYWRlciA9ICpuZXdSZWFkZXIuZ2V0
KCk7CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZGFibGUpIHsKKyAgICAgICAgbV9y
ZWFkZXIgPSBXVEY6Om1vdmUobmV3UmVhZGVyKTsKKyAgICAgICAgcmV0dXJuIHJlYWRlcjsKKyAg
ICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKQorICAgICAgICByZWFkZXIu
Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpOworICAgIGVsc2UgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVy
cm9yZWQpCisgICAgICAgIHJlYWRlci5jaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpOworICAgIG1fcmVs
ZWFzZWRSZWFkZXJzLmFwcGVuZChXVEY6Om1vdmUobmV3UmVhZGVyKSk7CisKKyAgICByZXR1cm4g
cmVhZGVyOwogfQogCiB2b2lkIFJlYWRhYmxlU3RyZWFtOjpzdGFydCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oCmluZGV4IDAwYWM5NmM4MWU4
ZDg5MzRmYTVkOGQyZDA5YmRiMGM5MDQ1MDdjMTAuLmQ3OWRjZTViYmZkYzU0MDE3MmI5ZmEwODA2
N2UxMTg0NzYyNjAyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVhZGFibGVTdHJl
YW1Tb3VyY2UuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDxmdW5j
dGlvbmFsPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTcsMTMgKzU4LDkgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB+UmVhZGFibGVTdHJlYW0oKTsKIAotICAgIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyKiByZWFkZXIoKSB7IHJldHVybiBtX3JlYWRlcjsgfQotICAgIHZpcnR1YWwgUmVmPFJlYWRh
YmxlU3RyZWFtUmVhZGVyPiBjcmVhdGVSZWFkZXIoKSA9IDA7Ci0KLSAgICBib29sIGlzTG9ja2Vk
KCkgY29uc3QgeyByZXR1cm4gbV9pc0xvY2tlZDsgfQotICAgIHZvaWQgbG9jayhSZWFkYWJsZVN0
cmVhbVJlYWRlciYpOwotICAgIHZvaWQgcmVsZWFzZSgpOwotICAgIHZvaWQgcmVsZWFzZUJ1dEtl
ZXBMb2NrZWQoKTsKKyAgICBSZWFkYWJsZVN0cmVhbVJlYWRlciYgZ2V0UmVhZGVyKCk7CisgICAg
UmVhZGFibGVTdHJlYW1SZWFkZXIqIHJlYWRlcigpIHsgcmV0dXJuIG1fcmVhZGVyLmdldCgpOyB9
CisgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgZXJyb3IoKSA9IDA7CiAKICAgICBTdGF0ZSBpbnRl
cm5hbFN0YXRlKCkgeyByZXR1cm4gbV9zdGF0ZTsgfQogCkBAIC04MSwzMiArNzgsMTMgQEAgcHJp
dmF0ZToKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yUGFnZUNhY2hlKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhZGFibGVTdHJlYW1SZWFkZXI+IG1fcmVhZGVyOworICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UmVhZGFibGVTdHJlYW1SZWFkZXI+PiBtX3JlbGVhc2Vk
UmVhZGVyczsKKwogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgUmVmPFJlYWRhYmxlU3RyZWFtU291
cmNlPiBtX3NvdXJjZTsKLSAgICBSZWFkYWJsZVN0cmVhbVJlYWRlciogbV9yZWFkZXIgeyBudWxs
cHRyIH07Ci0gICAgYm9vbCBtX2lzTG9ja2VkIHsgZmFsc2UgfTsKIH07CiAKLWlubGluZSB2b2lk
IFJlYWRhYmxlU3RyZWFtOjpsb2NrKFJlYWRhYmxlU3RyZWFtUmVhZGVyJiByZWFkZXIpCi17Ci0g
ICAgbV9yZWFkZXIgPSAmcmVhZGVyOwotICAgIG1faXNMb2NrZWQgPSB0cnVlOwotfQotCi1pbmxp
bmUgdm9pZCBSZWFkYWJsZVN0cmVhbTo6cmVsZWFzZSgpCi17Ci0gICAgbV9yZWFkZXIgPSBudWxs
cHRyOwotICAgIG1faXNMb2NrZWQgPSBmYWxzZTsKLX0KLQotaW5saW5lIHZvaWQgUmVhZGFibGVT
dHJlYW06OnJlbGVhc2VCdXRLZWVwTG9ja2VkKCkKLXsKLSAgICBtX3JlYWRlciA9IG51bGxwdHI7
Ci0gICAgbV9pc0xvY2tlZCA9IHRydWU7Ci19Ci0KLQotCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5j
cHAKaW5kZXggODk5MmZlZjllZGVkYWY0YzlkNmIwMTAwZTg2YmJjMjAzODJlMGRiMy4uZGY1OWU0
NmRiYmJhNTYzYTY0OTc2NGQzMDU2MTg5NDY3YjUzNDJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCkBAIC0z
Myw1OCArMzMsMjMgQEAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1ERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZD
b3VudGVkTGVha0NvdW50ZXIsIHJlYWRhYmxlU3RyZWFtUmVhZGVyQ291bnRlciwgKCJSZWFkYWJs
ZVN0cmVhbVJlYWRlciIpKTsKLQotUmVhZGFibGVTdHJlYW1SZWFkZXI6OlJlYWRhYmxlU3RyZWFt
UmVhZGVyKFJlYWRhYmxlU3RyZWFtJiBzdHJlYW0pCi0gICAgOiBBY3RpdmVET01PYmplY3Qoc3Ry
ZWFtLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1fc3RyZWFtKCZzdHJlYW0pCit2
b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbGVhbigpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAg
IHJlYWRhYmxlU3RyZWFtUmVhZGVyQ291bnRlci5pbmNyZW1lbnQoKTsKLSNlbmRpZgotICAgIHN1
c3BlbmRJZk5lZWRlZCgpOworICAgIG1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNrID0gbnVsbHB0cjsK
KyAgICBtX2Nsb3NlZEVycm9yQ2FsbGJhY2sgPSBudWxscHRyOwogfQogCi1SZWFkYWJsZVN0cmVh
bVJlYWRlcjo6flJlYWRhYmxlU3RyZWFtUmVhZGVyKCkKK3ZvaWQgUmVhZGFibGVTdHJlYW1SZWFk
ZXI6OnJlZigpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIHJlYWRhYmxlU3RyZWFtUmVhZGVyQ291
bnRlci5kZWNyZW1lbnQoKTsKLSNlbmRpZgotICAgIGlmIChtX3N0cmVhbSkgewotICAgICAgICBt
X3N0cmVhbS0+cmVsZWFzZUJ1dEtlZXBMb2NrZWQoKTsKLSAgICAgICAgbV9zdHJlYW0gPSBudWxs
cHRyOwotICAgIH0KKyAgICBtX3N0cmVhbS5yZWYoKTsKIH0KIAotdm9pZCBSZWFkYWJsZVN0cmVh
bVJlYWRlcjo6aW5pdGlhbGl6ZSgpCit2b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpkZXJlZigp
CiB7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9zdHJlYW0tPmlzTG9ja2VkKCksICJBIFJl
YWRhYmxlU3RyZWFtIGNhbm5vdCBiZSBsb2NrZWQgYnkgdHdvIHJlYWRlcnMgYXQgdGhlIHNhbWUg
dGltZS4iKTsKLSAgICBtX3N0cmVhbS0+bG9jaygqdGhpcyk7Ci0gICAgaWYgKG1fc3RyZWFtLT5p
bnRlcm5hbFN0YXRlKCkgPT0gUmVhZGFibGVTdHJlYW06OlN0YXRlOjpDbG9zZWQpIHsKLSAgICAg
ICAgY2hhbmdlU3RhdGVUb0Nsb3NlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChtX3N0cmVhbS0+aW50ZXJuYWxTdGF0ZSgpID09IFJlYWRhYmxlU3RyZWFtOjpTdGF0ZTo6RXJy
b3JlZCkgewotICAgICAgICBjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotfQotCi12b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWxlYXNlU3RyZWFtQW5k
Q2xlYW4oKQotewotICAgIC8vIFJlbGVhc2luZyBjYWxsYmFja3MgbWF5IHRyaWdnZXIgdW5yZWZp
bmcgb2YgdGhlIHJlYWRlci4KLSAgICBSZWY8UmVhZGFibGVTdHJlYW1SZWFkZXI+IHByb3RlY3Qo
KnRoaXMpOwotCi0gICAgQVNTRVJUKG1fc3RyZWFtKTsKLSAgICBtX3N0cmVhbS0+cmVsZWFzZSgp
OwotICAgIG1fc3RyZWFtID0gbnVsbHB0cjsKLQotICAgIG1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNr
ID0gbnVsbHB0cjsKLSAgICBtX2Nsb3NlZEVycm9yQ2FsbGJhY2sgPSBudWxscHRyOworICAgIG1f
c3RyZWFtLmRlcmVmKCk7CiB9CiAKIHZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNsb3NlZChD
bG9zZWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBDbG9zZWRFcnJvckNhbGxiYWNr
IGVycm9yQ2FsbGJhY2spCkBAIC05NCw3ICs1OSw3IEBAIHZvaWQgUmVhZGFibGVTdHJlYW1SZWFk
ZXI6OmNsb3NlZChDbG9zZWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBDbG9zZWRF
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVycm9y
ZWQpIHsKLSAgICAgICAgZXJyb3JDYWxsYmFjaygpOworICAgICAgICBlcnJvckNhbGxiYWNrKG1f
c3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Nsb3NlZFN1Y2Nlc3NDYWxs
YmFjayA9IFdURjo6bW92ZShzdWNjZXNzQ2FsbGJhY2spOwpAQCAtMTExLDcgKzc2LDcgQEAgdm9p
ZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpCiAKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHJlYWQgcHJvbWlzZSBmdWxmaWxsaW5nLgogCi0gICAgcmVsZWFzZVN0
cmVhbUFuZENsZWFuKCk7CisgICAgY2xlYW4oKTsKIH0KIAogdm9pZCBSZWFkYWJsZVN0cmVhbVJl
YWRlcjo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQoKQpAQCAtMTIwLDIyICs4NSwxMSBAQCB2b2lkIFJl
YWRhYmxlU3RyZWFtUmVhZGVyOjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpCiAgICAgbV9zdGF0ZSA9
IFN0YXRlOjpFcnJvcmVkOwogCiAgICAgaWYgKG1fY2xvc2VkRXJyb3JDYWxsYmFjaykKLSAgICAg
ICAgbV9jbG9zZWRFcnJvckNhbGxiYWNrKCk7CisgICAgICAgIG1fY2xvc2VkRXJyb3JDYWxsYmFj
ayhtX3N0cmVhbSk7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlYWQgcHJvbWlzZSByZWpl
Y3Rpb24uCiAKLSAgICByZWxlYXNlU3RyZWFtQW5kQ2xlYW4oKTsKLX0KLQotY29uc3QgY2hhciog
UmVhZGFibGVTdHJlYW1SZWFkZXI6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAotewotICAg
IHJldHVybiAiUmVhZGFibGVTdHJlYW1SZWFkZXIiOwotfQotCi1ib29sIFJlYWRhYmxlU3RyZWFt
UmVhZGVyOjpjYW5TdXNwZW5kRm9yUGFnZUNhY2hlKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHRyeSBhbmQgZG8gYmV0dGVyIGhlcmUuCi0gICAgcmV0dXJuIGZhbHNlOworICAg
IGNsZWFuKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKaW5kZXggMzhmN2I1OTY5OWZiMTZkZTEwMDNlMDcz
MjRhNGYwNTQxYjFjODQ1OC4uNzUxZjU0MTRiOGFiZWY3NTE2OTQ2MmQyY2RlM2U2MWI5Mzg3NmVh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVh
bS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQ1LDcgKzQ0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogLy8gUmVhZGFibGVTdHJlYW1SZWFkZXIgaW1wbGVtZW50cyB0aGUgY29yZSBv
ZiB0aGUgc3RyZWFtcyBBUEkgUmVhZGFibGVTdHJlYW1SZWFkZXIgZnVuY3Rpb25hbGl0eS4KIC8v
IEl0IGhhbmRsZXMgaW4gcGFydGljdWxhciBhY2Nlc3MgdG8gdGhlIGNodW5rcyBhbmQgc3RhdGUg
b2YgYSBSZWFkYWJsZVN0cmVhbS4KIC8vIFNlZSBodHRwczovL3N0cmVhbXMuc3BlYy53aGF0d2cu
b3JnLyNyZWFkZXItY2xhc3MgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi1jbGFzcyBSZWFkYWJsZVN0
cmVhbVJlYWRlciA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBTY3JpcHRXcmFwcGFi
bGUsIHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxlU3RyZWFtUmVhZGVyPiB7CitjbGFzcyBSZWFk
YWJsZVN0cmVhbVJlYWRlciB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7CiAgICAg
ICAgIFJlYWRhYmxlLApAQCAtNTMsMzEgKzUyLDIzIEBAIHB1YmxpYzoKICAgICAgICAgRXJyb3Jl
ZAogICAgIH07CiAKLSAgICB2b2lkIGluaXRpYWxpemUoKTsKLSAgICB2aXJ0dWFsIH5SZWFkYWJs
ZVN0cmVhbVJlYWRlcigpOwotCi0gICAgUmVhZGFibGVTdHJlYW0qIHN0cmVhbSgpIHsgcmV0dXJu
IG1fc3RyZWFtLmdldCgpOyB9CisgICAgUmVhZGFibGVTdHJlYW1SZWFkZXIoUmVhZGFibGVTdHJl
YW0mIHN0cmVhbSkKKyAgICAgICAgOiBtX3N0cmVhbShzdHJlYW0pIHsgfTsKIAogICAgIHR5cGVk
ZWYgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IENsb3NlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICB0eXBl
ZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBDbG9zZWRFcnJvckNhbGxiYWNrOworICAgIHR5cGVk
ZWYgc3RkOjpmdW5jdGlvbjx2b2lkKFJlYWRhYmxlU3RyZWFtJik+IENsb3NlZEVycm9yQ2FsbGJh
Y2s7CiAgICAgdm9pZCBjbG9zZWQoQ2xvc2VkU3VjY2Vzc0NhbGxiYWNrLCBDbG9zZWRFcnJvckNh
bGxiYWNrKTsKIAogICAgIHZvaWQgY2hhbmdlU3RhdGVUb0Nsb3NlZCgpOwogICAgIHZvaWQgY2hh
bmdlU3RhdGVUb0Vycm9yZWQoKTsKIAotICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGVycm9yKCkg
PSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVhZGFibGVTdHJlYW1SZWFkZXIoUmVhZGFibGVTdHJl
YW0mKTsKKyAgICB2b2lkIHJlZigpOworICAgIHZvaWQgZGVyZWYoKTsKIAogcHJpdmF0ZToKLSAg
ICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVj
dE5hbWUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGNhblN1c3BlbmRGb3JQYWdlQ2FjaGUo
KSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZvaWQgcmVsZWFzZVN0cmVhbUFuZENsZWFuKCk7Cisg
ICAgdm9pZCBjbGVhbigpOwogCi0gICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBtX3N0cmVhbTsK
KyAgICBSZWFkYWJsZVN0cmVhbSYgbV9zdHJlYW07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRl
OjpSZWFkYWJsZSB9OwogCiAgICAgQ2xvc2VkU3VjY2Vzc0NhbGxiYWNrIG1fY2xvc2VkU3VjY2Vz
c0NhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVJlYWRlci5pZGwKaW5kZXggNDQwNDk0MjhlNjMyZDBjNDM3NTA3YTBjMzI2
MWQwNjIyMmIzZWNhYS4uYmViMjRiYWY5OWUyNzdiNDJjYWUzNGViM2M2MzY0ZTMxNWRhMjllNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
UmVhZGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1SZWFkZXIuaWRsCkBAIC0yOCw3ICsyOCw2IEBACiAgKi8KIAogWwotICAgIEFjdGl2ZURP
TU9iamVjdCwKICAgICBDdXN0b21Db25zdHJ1Y3RvcihhbnkgcHJvcGVydGllcyksCiAgICAgQ29u
ZGl0aW9uYWw9U1RSRUFNU19BUEksCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAK
aW5kZXggYmMxODY3OTFlYmIzYzUwMDllYWY4NzIxNDE5NmY0MjY1YThmODQ1My4uYmJjN2ExMjBi
NDkyMGZhNzM2ZjMxMDU4OTI3N2U4M2UwNGQ5YjMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAKQEAgLTU0LDkgKzU0
LDkgQEAgSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtOjpjYW5jZWwoRXhlY1N0YXRlKiBleGVjKQog
CiBKU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW06OmdldFJlYWRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7
Ci0gICAgaWYgKGltcGwoKS5pc0xvY2tlZCgpKQorICAgIGlmIChpbXBsKCkucmVhZGVyKCkpCiAg
ICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtIGlzIGxvY2tlZCIpKSk7Ci0g
ICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5jcmVhdGVSZWFkZXIo
KSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5nZXRSZWFk
ZXIoKSk7CiB9CiAKIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbTo6cGlwZVRvKEV4ZWNTdGF0ZSog
ZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVT
dHJlYW1SZWFkZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAKaW5kZXggODk5ZjA4ZWE2NzFmNjJiMWUxYTFjZDRm
MzcyYThhZDFiYjMzMjRlMC4uZGVlYzMxNTJjMTY3N2U5ZTI1YmE1YWIzZGI1ZWQ5MTUzNDg1ZWI2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVh
bVJlYWRlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAKQEAgLTcyLDEyICs3MiwxMSBAQCBKU1ZhbHVlIEpT
UmVhZGFibGVTdHJlYW1SZWFkZXI6OmNsb3NlZChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAg
SlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9IGdldE9yQ3JlYXRlUHJvbWlzZURl
ZmVycmVkRnJvbU9iamVjdChleGVjLCB0aGlzLCBnbG9iYWxPYmplY3QoKSwgY2xvc2VkUHJvbWlz
ZVNsb3ROYW1lKCkpOwogICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKGV4ZWMsIGdsb2JhbE9i
amVjdCgpLCBwcm9taXNlRGVmZXJyZWQpOwogCi0gICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtUmVh
ZGVyPiByZWFkZXIgPSAmaW1wbCgpOwogICAgIGF1dG8gc3VjY2Vzc0NhbGxiYWNrID0gW3dyYXBw
ZXJdKCkgbXV0YWJsZSB7CiAgICAgICAgIHdyYXBwZXIucmVzb2x2ZShqc1VuZGVmaW5lZCgpKTsK
ICAgICB9OwotICAgIGF1dG8gZmFpbHVyZUNhbGxiYWNrID0gW3dyYXBwZXIsIHJlYWRlcl0oKSBt
dXRhYmxlIHsKLSAgICAgICAgd3JhcHBlci5yZWplY3QocmVhZGVyLT5lcnJvcigpKTsKKyAgICBh
dXRvIGZhaWx1cmVDYWxsYmFjayA9IFt3cmFwcGVyXShSZWFkYWJsZVN0cmVhbSYgc3RyZWFtKSBt
dXRhYmxlIHsKKyAgICAgICAgd3JhcHBlci5yZWplY3Qoc3RyZWFtLmVycm9yKCkpOwogICAgIH07
CiAKICAgICBpbXBsKCkuY2xvc2VkKFdURjo6bW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEY6Om1v
dmUoZmFpbHVyZUNhbGxiYWNrKSk7CkBAIC0xMDYsMTAgKzEwNSwxMCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1SZWFkZXIoRXhlY1N0YXRl
KiBleGVjKQogICAgIGlmICghc3RyZWFtKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtUmVh
ZGVyIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBpcyBub3QgYSBSZWFkYWJsZVN0cmVhbSIpKSk7CiAK
LSAgICBpZiAoc3RyZWFtLT5pbXBsKCkuaXNMb2NrZWQoKSkKKyAgICBpZiAoc3RyZWFtLT5pbXBs
KCkucmVhZGVyKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0
b3IgcGFyYW1ldGVyIGlzIGEgbG9ja2VkIFJlYWRhYmxlU3RyZWFtIikpKTsKIAotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBzdHJlYW0tPmdsb2JhbE9iamVjdCgpLCBzdHJl
YW0tPmltcGwoKS5jcmVhdGVSZWFkZXIoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUyhleGVjLCBzdHJlYW0tPmdsb2JhbE9iamVjdCgpLCBzdHJlYW0tPmltcGwoKS5nZXRSZWFk
ZXIoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCmluZGV4IDc3MjcyN2E1Y2ViODQ0MzYw
ODEwZGFiZTlkYmQxNGQxYWFlNjA0NGQuLmM3M2U2ZmUyOTQ1NWM2YWJiOWIwNDJlNDczOWVkYjMy
ODgxNWVhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
SlNTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNT
dHJlYW0uY3BwCkBAIC0xMzksMTQgKzEzOSw2IEBAIFJlZjxSZWFkYWJsZUpTU3RyZWFtPiBSZWFk
YWJsZUpTU3RyZWFtOjpjcmVhdGUoRXhlY1N0YXRlJiBleGVjLCBTY3JpcHRFeGVjdXRpb25DCiAg
ICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtOwogfQogCi1SZWY8UmVhZGFibGVTdHJlYW1SZWFkZXI+
IFJlYWRhYmxlSlNTdHJlYW06OmNyZWF0ZVJlYWRlcigpCi17Ci0gICAgUmVmPFJlYWRlcj4gcmVh
ZGVyID0gUmVhZGVyOjpjcmVhdGUoKnRoaXMpOwotICAgIGlmIChtX2Vycm9yKQotICAgICAgICBy
ZWFkZXItPnN0b3JlRXJyb3IoKmpzU291cmNlKCkuZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMo
KSwgbV9lcnJvci5nZXQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxSZWFk
YWJsZVN0cmVhbVJlYWRlcj4ocmVhZGVyKTsKLX0KLQogUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFi
bGVKU1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBSZWY8UmVhZGFibGVKU1N0cmVhbTo6U291cmNlPiYmIHNvdXJjZSkKICAgICA6IFJlYWRhYmxl
U3RyZWFtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURjo6bW92ZShzb3VyY2UpKQogewpAQCAt
MTcxLDI5ICsxNjMsOSBAQCB2b2lkIFJlYWRhYmxlSlNTdHJlYW06OnN0b3JlRXJyb3IoSlNDOjpF
eGVjU3RhdGUmIGV4ZWMpCiAgICAgSlNWYWx1ZSBlcnJvciA9IGV4ZWMuYXJndW1lbnRDb3VudCgp
ID8gZXhlYy5hcmd1bWVudCgwKSA6IGNyZWF0ZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoIkVy
cm9yIGZ1bmN0aW9uIGNhbGxlZC4iKSk7CiAgICAgbV9lcnJvci5zZXQoZXhlYy52bSgpLCBlcnJv
cik7CiAKLSAgICBpZiAoYXV0byByZWFkZXIgPSBzdGF0aWNfY2FzdDxSZWFkZXIqPih0aGlzLT5y
ZWFkZXIoKSkpCi0gICAgICAgIHJlYWRlci0+c3RvcmVFcnJvcihleGVjLCBlcnJvcik7Ci0KICAg
ICBjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpOwogfQogCi1SZWY8UmVhZGFibGVKU1N0cmVhbTo6UmVh
ZGVyPiBSZWFkYWJsZUpTU3RyZWFtOjpSZWFkZXI6OmNyZWF0ZShSZWFkYWJsZUpTU3RyZWFtJiBz
dHJlYW0pCi17Ci0gICAgUmVmPFJlYWRlcj4gcmVhZGVyID0gYWRvcHRSZWYoKm5ldyBSZWFkZXIo
c3RyZWFtKSk7Ci0gICAgcmVhZGVyLT5pbml0aWFsaXplKCk7Ci0gICAgcmV0dXJuIHJlYWRlcjsK
LX0KLQotUmVhZGFibGVKU1N0cmVhbTo6UmVhZGVyOjpSZWFkZXIoUmVhZGFibGVKU1N0cmVhbSYg
cmVhZGFibGVTdHJlYW0pCi0gICAgOiBSZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkYWJsZVN0cmVh
bSkKLXsKLX0KLQotdm9pZCBSZWFkYWJsZUpTU3RyZWFtOjpSZWFkZXI6OnN0b3JlRXJyb3IoSlND
OjpFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgZXJyb3IpCi17Ci0gICAgbV9lcnJvci5zZXQoZXhl
Yy52bSgpLCBlcnJvcik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKaW5kZXggOTAw
YWVkNmVjZmY4NDU4NWQ5YWNkYWMxYjViZjQyMDM4MTA5MTFhNS4uNGQ1MWQwMWJmZjg0ZmNjZjcx
ZGVjNDY2MmM1OGY2NzcyZmE3OGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1JlYWRhYmxlSlNTdHJlYW0uaApAQCAtNDgsMTggKzQ4LDYgQEAgY2xhc3MgUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyOwogCiBjbGFzcyBSZWFkYWJsZUpTU3RyZWFtOiBwdWJsaWMgUmVhZGFibGVT
dHJlYW0gewogcHJpdmF0ZToKLSAgICBjbGFzcyBSZWFkZXI6IHB1YmxpYyBSZWFkYWJsZVN0cmVh
bVJlYWRlciB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPFJlYWRlcj4gY3JlYXRl
KFJlYWRhYmxlSlNTdHJlYW0mKTsKLSAgICAgICAgdm9pZCBzdG9yZUVycm9yKEpTQzo6RXhlY1N0
YXRlJiwgSlNDOjpKU1ZhbHVlKTsKLSAgICAgICAgSlNDOjpKU1ZhbHVlIGVycm9yKCkgeyByZXR1
cm4gbV9lcnJvci5nZXQoKTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQgUmVh
ZGVyKFJlYWRhYmxlSlNTdHJlYW0mKTsKLQotICAgICAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25v
d24+IG1fZXJyb3I7Ci0gICAgfTsKLQogICAgIGNsYXNzIFNvdXJjZTogcHVibGljIFJlYWRhYmxl
U3RyZWFtU291cmNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8U291cmNlPiBj
cmVhdGUoSlNDOjpFeGVjU3RhdGUmKTsKQEAgLTc1LDcgKzYzLDYgQEAgcHJpdmF0ZToKIAogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UmVhZGFibGVKU1N0cmVhbT4gY3JlYXRlKEpTQzo6RXhlY1N0
YXRlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwotICAgIHZpcnR1YWwgUmVmPFJlYWRhYmxl
U3RyZWFtUmVhZGVyPiBjcmVhdGVSZWFkZXIoKSBvdmVycmlkZTsKIAogICAgIFJlYWRhYmxlSlNT
dHJlYW06OlNvdXJjZSYganNTb3VyY2UoKTsKICAgICBKU0M6OkpTVmFsdWUganNDb250cm9sbGVy
KEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252958</attachid>
            <date>2015-05-12 06:06:01 -0700</date>
            <delta_ts>2015-05-12 11:48:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144907-20150512150439.patch</filename>
            <type>text/plain</type>
            <size>18169</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRiODlhNGNmZTZkODJi
NmUxM2ZlZTE4MmQ1NDBkODNlYWFiMjAwYS4uMjM0ZTI5ZThlMzQ5Mzk0Nzk0ZDg1N2MzY2JhZTQz
Y2FjNTJiOWViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE1LTA1LTEzICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEld
IERlbGVnYXRlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHJlZmVyZW5jZSBjb3VudGluZyB0byBSZWFk
YWJsZVN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ0OTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ2hhbmdlZCB0aGUgbGluayBiZXR3ZWVuIHJlYWRhZGFibGUgc3RyZWFtIGFuZCByZWFkZXIu
CisgICAgICAgIENvbnRyb2xsZXIgcmVmKCkvZGVyZWYoKSBub3cgaW5jcmVtZW50cy9kZWNyZW1l
bnRzIGl0cyBzdHJlYW0gcmVmIGNvdW50ZXIsIHNpbWlsYXJseSB0byBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIuCisgICAgICAgIFRoaXMgZW5zdXJlcyB0aGF0IGV2ZW4gaWYgSlMgc2NyaXB0cyBk
byBub3Qga2VlcCB0cmFjayBvZiB0aGUgcmVhZGFibGUgc3RyZWFtLAorICAgICAgICB0aGUgcmVh
ZGFibGUgc3RyZWFtIHdpbGwgbm90IGJlIGRpc3Bvc2VkIGFzIGxvbmcgYXMgdGhlIEpTIHNjcmlw
dCBoYXMgYWNjZXNzIHRvIGl0cyByZWFkZXIuCisKKyAgICAgICAgQWxsIHJlYWRlcnMgb2YgYSBn
aXZlbiBzdHJlYW0gYXJlIGtlcHQgYnkgdGhlIHN0cmVhbSwgZWl0aGVyIGluIGFuIGFycmF5IChm
b3IgcmVsZWFzZWQgcmVhZGVycykgCisgICAgICAgIG9yIGFuZCBpbiBSZWFkYWJsZVN0cmVhbTo6
bV9yZWFkZXIgZm9yIHRoZSBhY3RpdmUgcmVhZGVyLgorICAgICAgICBUaGlzIHJlbW92ZXMgdGhl
IG5lZWQgZm9yIHRoZSBjb2RlIHN5bmNocm9uaXppbmcgc3RyZWFtIGFuZCByZWFkZXIuCisKKyAg
ICAgICAgQXMgYSByZWFkZXIgY2FuIG5vdyBhbHJlYWR5IGNvdW50IG9uIGl0cyBzdHJlYW0sIHRo
ZSByZWFkZXIgbm8gbG9uZ2VyIG5lZWRzIHRvIHN0b3JlIHRoZSBlcnJvciBpbiBlcnJvcmVkIHN0
YXRlLgorICAgICAgICBSZW1vdmFsIG9mIFJlYWRhYmxlSlNTdHJlYW06OlJlYWRlciBhcyBjbG9z
ZWQgcHJvbWlzZSByZWplY3Rpb24gZXJyb3IgaXMgZGlyZWN0bHkgcmV0cmlldmVkIGZyb20gdGhl
IFJlYWRhYmxlU3RyZWFtLgorICAgICAgICBNb3ZlZCB0aGUgY3JlYXRpb24gb2YgcmVhZGVyIGRp
cmVjdGx5IGluIFJlYWRhYmxlU3RyZWFtLgorCisgICAgICAgIE5leHQgc3RlcCBzaG91bGQgYmUg
dG8gcmVtb3ZlIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjptX3N0YXRlIGFuZCB0byBkZWxlZ2F0ZSB0
aGUgaGFuZGxpbmcgb2YgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UgY2FsbGJh
Y2tzIHRvIFJlYWRhYmxlU3RyZWFtLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4K
KworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Nsb3NlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmdldFJlYWRlcik6CisgICAgICAgICogTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0
cmVhbTo6cmVhZGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1S
ZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1SZWFkZXI6OmNsZWFu
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWYpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1SZWFkZXI6OmRlcmVmKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVh
ZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRlVG9DbG9zZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRlVG9FcnJvcmVkKToKKyAgICAgICAg
KiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWRhYmxlU3RyZWFtUmVhZGVyOjpSZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAg
ICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbDoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTUmVhZGFibGVTdHJlYW06OmdldFJlYWRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRh
YmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNS
ZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpzdG9yZUVycm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNTdHJlYW0p
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaDoKKwog
MjAxNS0wNS0xMiAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29t
PiBhbmQgWW91ZW5uIEZhYmxldCA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAg
ICAgW1N0cmVhbXMgQVBJXSBSZWFkYWJsZVN0cmVhbSByZWFkZXIgc2hvdWxkIG5vdCBiZSBkaXNw
b3NhYmxlIHdoZW4gaGF2aW5nIHBlbmRpbmcgcHJvbWlzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCmluZGV4IDRkNjllZTY4N2JhZjYw
YzhhMjNjZGEyNjZhNjRjMjk0N2YwYzcyZGEuLjk5Y2JkZWJiOTlmZWE0MzRhZjI3MzdkNjYwMTk4
MWEyYWI4ODMxYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmNwcApAQCAtNjMsOSArNjMsMTAgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbTo6
Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlJlYWRhYmxl
KQogICAgICAgICByZXR1cm47CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpDbG9zZWQ7Ci0gICAgaWYg
KG1fcmVhZGVyKQotICAgICAgICBtX3JlYWRlci0+Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpOwotICAg
IEFTU0VSVCghbV9yZWFkZXIpOworICAgIGlmICghbV9yZWFkZXIpCisgICAgICAgIHJldHVybjsK
KyAgICBtX3JlYWRlci0+Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpOworICAgIG1fcmVsZWFzZWRSZWFk
ZXJzLmFwcGVuZChXVEY6Om1vdmUobV9yZWFkZXIpKTsKIH0KIAogdm9pZCBSZWFkYWJsZVN0cmVh
bTo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQoKQpAQCAtNzMsOSArNzQsMzEgQEAgdm9pZCBSZWFkYWJs
ZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRl
OjpSZWFkYWJsZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6RXJyb3Jl
ZDsKLSAgICBpZiAobV9yZWFkZXIpCi0gICAgICAgIG1fcmVhZGVyLT5jaGFuZ2VTdGF0ZVRvRXJy
b3JlZCgpOworICAgIGlmICghbV9yZWFkZXIpCisgICAgICAgIHJldHVybjsKKyAgICBtX3JlYWRl
ci0+Y2hhbmdlU3RhdGVUb0Vycm9yZWQoKTsKKyAgICBtX3JlbGVhc2VkUmVhZGVycy5hcHBlbmQo
V1RGOjptb3ZlKG1fcmVhZGVyKSk7Cit9CisKK1JlYWRhYmxlU3RyZWFtUmVhZGVyJiBSZWFkYWJs
ZVN0cmVhbTo6Z2V0UmVhZGVyKCkKK3sKICAgICBBU1NFUlQoIW1fcmVhZGVyKTsKKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4gbmV3UmVhZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxSZWFkYWJsZVN0cmVhbVJlYWRlcj4oKnRoaXMpOworICAgIFJlYWRhYmxlU3RyZWFt
UmVhZGVyJiByZWFkZXIgPSAqbmV3UmVhZGVyLmdldCgpOworCisgICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OlJlYWRhYmxlKSB7CisgICAgICAgIG1fcmVhZGVyID0gV1RGOjptb3ZlKG5ld1JlYWRl
cik7CisgICAgICAgIHJldHVybiByZWFkZXI7CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OkNsb3NlZCkKKyAgICAgICAgcmVhZGVyLmNoYW5nZVN0YXRlVG9DbG9zZWQoKTsKKyAg
ICBlbHNlIGlmIChtX3N0YXRlID09IFN0YXRlOjpFcnJvcmVkKQorICAgICAgICByZWFkZXIuY2hh
bmdlU3RhdGVUb0Vycm9yZWQoKTsKKyAgICBtX3JlbGVhc2VkUmVhZGVycy5hcHBlbmQoV1RGOjpt
b3ZlKG5ld1JlYWRlcikpOworCisgICAgcmV0dXJuIHJlYWRlcjsKIH0KIAogdm9pZCBSZWFkYWJs
ZVN0cmVhbTo6c3RhcnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW0uaAppbmRleCAwMGFjOTZjODFlOGQ4OTM0ZmE1ZDhkMmQwOWJkYjBjOTA0NTA3
YzEwLi5kNzlkY2U1YmJmZGM1NDAxNzJiOWZhMDgwNjdlMTE4NDc2MjYwMjlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaApAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxydW50aW1l
L0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTU3LDEzICs1OCw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflJlYWRhYmxlU3Ry
ZWFtKCk7CiAKLSAgICBSZWFkYWJsZVN0cmVhbVJlYWRlciogcmVhZGVyKCkgeyByZXR1cm4gbV9y
ZWFkZXI7IH0KLSAgICB2aXJ0dWFsIFJlZjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4gY3JlYXRlUmVh
ZGVyKCkgPSAwOwotCi0gICAgYm9vbCBpc0xvY2tlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNMb2Nr
ZWQ7IH0KLSAgICB2b2lkIGxvY2soUmVhZGFibGVTdHJlYW1SZWFkZXImKTsKLSAgICB2b2lkIHJl
bGVhc2UoKTsKLSAgICB2b2lkIHJlbGVhc2VCdXRLZWVwTG9ja2VkKCk7CisgICAgUmVhZGFibGVT
dHJlYW1SZWFkZXImIGdldFJlYWRlcigpOworICAgIFJlYWRhYmxlU3RyZWFtUmVhZGVyKiByZWFk
ZXIoKSB7IHJldHVybiBtX3JlYWRlci5nZXQoKTsgfQorICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVl
IGVycm9yKCkgPSAwOwogCiAgICAgU3RhdGUgaW50ZXJuYWxTdGF0ZSgpIHsgcmV0dXJuIG1fc3Rh
dGU7IH0KIApAQCAtODEsMzIgKzc4LDEzIEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogYWN0
aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU3VzcGVuZEZv
clBhZ2VDYWNoZSgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRh
YmxlU3RyZWFtUmVhZGVyPiBtX3JlYWRlcjsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJl
YWRhYmxlU3RyZWFtUmVhZGVyPj4gbV9yZWxlYXNlZFJlYWRlcnM7CisKICAgICBTdGF0ZSBtX3N0
YXRlOwogICAgIFJlZjxSZWFkYWJsZVN0cmVhbVNvdXJjZT4gbV9zb3VyY2U7Ci0gICAgUmVhZGFi
bGVTdHJlYW1SZWFkZXIqIG1fcmVhZGVyIHsgbnVsbHB0ciB9OwotICAgIGJvb2wgbV9pc0xvY2tl
ZCB7IGZhbHNlIH07CiB9OwogCi1pbmxpbmUgdm9pZCBSZWFkYWJsZVN0cmVhbTo6bG9jayhSZWFk
YWJsZVN0cmVhbVJlYWRlciYgcmVhZGVyKQotewotICAgIG1fcmVhZGVyID0gJnJlYWRlcjsKLSAg
ICBtX2lzTG9ja2VkID0gdHJ1ZTsKLX0KLQotaW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW06OnJl
bGVhc2UoKQotewotICAgIG1fcmVhZGVyID0gbnVsbHB0cjsKLSAgICBtX2lzTG9ja2VkID0gZmFs
c2U7Ci19Ci0KLWlubGluZSB2b2lkIFJlYWRhYmxlU3RyZWFtOjpyZWxlYXNlQnV0S2VlcExvY2tl
ZCgpCi17Ci0gICAgbV9yZWFkZXIgPSBudWxscHRyOwotICAgIG1faXNMb2NrZWQgPSB0cnVlOwot
fQotCi0KLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCmluZGV4IDg5OTJmZWY5ZWRlZGFmNGM5
ZDZiMDEwMGU4NmJiYzIwMzgyZTBkYjMuLjFkNzlhNGIxNzJiODEzYTRkYmMwYzFkNTUyOTNmOWI5
ZWQ1YzM5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcApAQCAtMzMsNTYgKzMzLDExIEBACiAjaWYgRU5BQkxF
KFNUUkVBTVNfQVBJKQogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotREVG
SU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCByZWFkYWJs
ZVN0cmVhbVJlYWRlckNvdW50ZXIsICgiUmVhZGFibGVTdHJlYW1SZWFkZXIiKSk7Ci0KLVJlYWRh
YmxlU3RyZWFtUmVhZGVyOjpSZWFkYWJsZVN0cmVhbVJlYWRlcihSZWFkYWJsZVN0cmVhbSYgc3Ry
ZWFtKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KHN0cmVhbS5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpCi0gICAgLCBtX3N0cmVhbSgmc3RyZWFtKQordm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6
Y2xlYW4oKQogewotI2lmbmRlZiBOREVCVUcKLSAgICByZWFkYWJsZVN0cmVhbVJlYWRlckNvdW50
ZXIuaW5jcmVtZW50KCk7Ci0jZW5kaWYKLSAgICBzdXNwZW5kSWZOZWVkZWQoKTsKLX0KLQotUmVh
ZGFibGVTdHJlYW1SZWFkZXI6On5SZWFkYWJsZVN0cmVhbVJlYWRlcigpCi17Ci0jaWZuZGVmIE5E
RUJVRwotICAgIHJlYWRhYmxlU3RyZWFtUmVhZGVyQ291bnRlci5kZWNyZW1lbnQoKTsKLSNlbmRp
ZgotICAgIGlmIChtX3N0cmVhbSkgewotICAgICAgICBtX3N0cmVhbS0+cmVsZWFzZUJ1dEtlZXBM
b2NrZWQoKTsKLSAgICAgICAgbV9zdHJlYW0gPSBudWxscHRyOwotICAgIH0KLX0KLQotdm9pZCBS
ZWFkYWJsZVN0cmVhbVJlYWRlcjo6aW5pdGlhbGl6ZSgpCi17Ci0gICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghbV9zdHJlYW0tPmlzTG9ja2VkKCksICJBIFJlYWRhYmxlU3RyZWFtIGNhbm5vdCBiZSBs
b2NrZWQgYnkgdHdvIHJlYWRlcnMgYXQgdGhlIHNhbWUgdGltZS4iKTsKLSAgICBtX3N0cmVhbS0+
bG9jaygqdGhpcyk7Ci0gICAgaWYgKG1fc3RyZWFtLT5pbnRlcm5hbFN0YXRlKCkgPT0gUmVhZGFi
bGVTdHJlYW06OlN0YXRlOjpDbG9zZWQpIHsKLSAgICAgICAgY2hhbmdlU3RhdGVUb0Nsb3NlZCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX3N0cmVhbS0+aW50ZXJuYWxTdGF0
ZSgpID09IFJlYWRhYmxlU3RyZWFtOjpTdGF0ZTo6RXJyb3JlZCkgewotICAgICAgICBjaGFuZ2VT
dGF0ZVRvRXJyb3JlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIFJlYWRh
YmxlU3RyZWFtUmVhZGVyOjpyZWxlYXNlU3RyZWFtQW5kQ2xlYW4oKQotewotICAgIC8vIFJlbGVh
c2luZyBjYWxsYmFja3MgbWF5IHRyaWdnZXIgdW5yZWZpbmcgb2YgdGhlIHJlYWRlci4KLSAgICBS
ZWY8UmVhZGFibGVTdHJlYW1SZWFkZXI+IHByb3RlY3QoKnRoaXMpOwotCi0gICAgQVNTRVJUKG1f
c3RyZWFtKTsKLSAgICBtX3N0cmVhbS0+cmVsZWFzZSgpOwotICAgIG1fc3RyZWFtID0gbnVsbHB0
cjsKLQogICAgIG1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNrID0gbnVsbHB0cjsKICAgICBtX2Nsb3Nl
ZEVycm9yQ2FsbGJhY2sgPSBudWxscHRyOwogfQpAQCAtOTQsNyArNDksNyBAQCB2b2lkIFJlYWRh
YmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoQ2xvc2VkU3VjY2Vzc0NhbGxiYWNrIHN1Y2Nlc3NDYWxs
YmFjaywgQ2xvc2VkRQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpFcnJvcmVkKSB7Ci0gICAgICAgIGVycm9yQ2FsbGJhY2soKTsKKyAgICAgICAgZXJy
b3JDYWxsYmFjayhtX3N0cmVhbSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9jbG9z
ZWRTdWNjZXNzQ2FsbGJhY2sgPSBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKTsKQEAgLTExMSw3
ICs2Niw3IEBAIHZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRlVG9DbG9zZWQo
KQogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCByZWFkIHByb21pc2UgZnVsZmlsbGluZy4KIAot
ICAgIHJlbGVhc2VTdHJlYW1BbmRDbGVhbigpOworICAgIGNsZWFuKCk7CiB9CiAKIHZvaWQgUmVh
ZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRlVG9FcnJvcmVkKCkKQEAgLTEyMCwyMiArNzUs
MTEgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQoKQog
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6RXJyb3JlZDsKIAogICAgIGlmIChtX2Nsb3NlZEVycm9yQ2Fs
bGJhY2spCi0gICAgICAgIG1fY2xvc2VkRXJyb3JDYWxsYmFjaygpOworICAgICAgICBtX2Nsb3Nl
ZEVycm9yQ2FsbGJhY2sobV9zdHJlYW0pOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCByZWFk
IHByb21pc2UgcmVqZWN0aW9uLgogCi0gICAgcmVsZWFzZVN0cmVhbUFuZENsZWFuKCk7Ci19Ci0K
LWNvbnN0IGNoYXIqIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjphY3RpdmVET01PYmplY3ROYW1lKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gIlJlYWRhYmxlU3RyZWFtUmVhZGVyIjsKLX0KLQotYm9vbCBS
ZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2FuU3VzcGVuZEZvclBhZ2VDYWNoZSgpIGNvbnN0Ci17Ci0g
ICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgYW5kIGRvIGJldHRlciBoZXJlLgotICAgIHJldHVy
biBmYWxzZTsKKyAgICBjbGVhbigpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oCmluZGV4IDM4ZjdiNTk2OTlm
YjE2ZGUxMDAzZTA3MzI0YTRmMDU0MWIxYzg0NTguLmQxNzZlOTZiOGNkODU4MTI5NDJkNjFjMDA5
NGI3YzVhMDkyODAwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oCkBAIC0zNiwxNiArMzYsMTcgQEAKICNpbmNsdWRl
ICJSZWFkYWJsZVN0cmVhbS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotLy8gUmVhZGFibGVTdHJlYW1SZWFkZXIgaW1wbGVtZW50cyB0aGUgY29yZSBv
ZiB0aGUgc3RyZWFtcyBBUEkgUmVhZGFibGVTdHJlYW1SZWFkZXIgZnVuY3Rpb25hbGl0eS4KLS8v
IEl0IGhhbmRsZXMgaW4gcGFydGljdWxhciBhY2Nlc3MgdG8gdGhlIGNodW5rcyBhbmQgc3RhdGUg
b2YgYSBSZWFkYWJsZVN0cmVhbS4KKy8vIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGltcGxlbWVudHMg
YWNjZXNzIHRvIFJlYWRhYmxlU3RyZWFtIGZyb20gSmF2YVNjcmlwdC4KKy8vIEl0IGJhc2ljYWxs
eSBhbGxvd3MgYWNjZXNzIHRvIHRoZSBSZWFkYWJsZVN0cmVhbSBpZmYgdGhlIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGluc3RhbmNlIGlzIHRoZSBhY3RpdmUgcmVhZGVyCisvLyBvZiB0aGUgUmVhZGFi
bGVTdHJlYW0uCisvLyBNb3N0IG9mIHRoaXMgaGFuZGxpbmcgaXMgaGFwcGVuaW5nIGluIHRoZSBj
dXN0b20gSlMgYmluZGluZyBvZiBSZWFkYWJsZVN0cmVhbVJlYWRlci4KIC8vIFNlZSBodHRwczov
L3N0cmVhbXMuc3BlYy53aGF0d2cub3JnLyNyZWFkZXItY2xhc3MgZm9yIG1vcmUgaW5mb3JtYXRp
b24uCi1jbGFzcyBSZWFkYWJsZVN0cmVhbVJlYWRlciA6IHB1YmxpYyBBY3RpdmVET01PYmplY3Qs
IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxlU3RyZWFt
UmVhZGVyPiB7CitjbGFzcyBSZWFkYWJsZVN0cmVhbVJlYWRlciB7CiBwdWJsaWM6CiAgICAgZW51
bSBjbGFzcyBTdGF0ZSB7CiAgICAgICAgIFJlYWRhYmxlLApAQCAtNTMsMzEgKzU0LDIzIEBAIHB1
YmxpYzoKICAgICAgICAgRXJyb3JlZAogICAgIH07CiAKLSAgICB2b2lkIGluaXRpYWxpemUoKTsK
LSAgICB2aXJ0dWFsIH5SZWFkYWJsZVN0cmVhbVJlYWRlcigpOwotCi0gICAgUmVhZGFibGVTdHJl
YW0qIHN0cmVhbSgpIHsgcmV0dXJuIG1fc3RyZWFtLmdldCgpOyB9CisgICAgUmVhZGFibGVTdHJl
YW1SZWFkZXIoUmVhZGFibGVTdHJlYW0mIHN0cmVhbSkKKyAgICAgICAgOiBtX3N0cmVhbShzdHJl
YW0pIHsgfTsKIAogICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IENsb3NlZFN1Y2Nl
c3NDYWxsYmFjazsKLSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBDbG9zZWRFcnJv
ckNhbGxiYWNrOworICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKFJlYWRhYmxlU3RyZWFt
Jik+IENsb3NlZEVycm9yQ2FsbGJhY2s7CiAgICAgdm9pZCBjbG9zZWQoQ2xvc2VkU3VjY2Vzc0Nh
bGxiYWNrLCBDbG9zZWRFcnJvckNhbGxiYWNrKTsKIAogICAgIHZvaWQgY2hhbmdlU3RhdGVUb0Ns
b3NlZCgpOwogICAgIHZvaWQgY2hhbmdlU3RhdGVUb0Vycm9yZWQoKTsKIAotICAgIHZpcnR1YWwg
SlNDOjpKU1ZhbHVlIGVycm9yKCkgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVhZGFibGVTdHJl
YW1SZWFkZXIoUmVhZGFibGVTdHJlYW0mKTsKKyAgICB2b2lkIHJlZigpIHsgbV9zdHJlYW0ucmVm
KCk7IH0KKyAgICB2b2lkIGRlcmVmKCkgeyBtX3N0cmVhbS5kZXJlZigpOyB9CiAKIHByaXZhdGU6
Ci0gICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KLSAgICBjb25zdCBjaGFyKiBhY3RpdmVET01P
YmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjYW5TdXNwZW5kRm9yUGFnZUNh
Y2hlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHJlbGVhc2VTdHJlYW1BbmRDbGVhbigp
OworICAgIHZvaWQgY2xlYW4oKTsKIAotICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4gbV9zdHJl
YW07CisgICAgUmVhZGFibGVTdHJlYW0mIG1fc3RyZWFtOwogICAgIFN0YXRlIG1fc3RhdGUgeyBT
dGF0ZTo6UmVhZGFibGUgfTsKIAogICAgIENsb3NlZFN1Y2Nlc3NDYWxsYmFjayBtX2Nsb3NlZFN1
Y2Nlc3NDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVJlYWRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRsCmluZGV4IDQ0MDQ5NDI4ZTYzMmQwYzQzNzUwN2Ew
YzMyNjFkMDYyMjJiM2VjYWEuLmJlYjI0YmFmOTllMjc3YjQyY2FlMzRlYjNjNjM2NGUzMTVkYTI5
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbVJlYWRlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtUmVhZGVyLmlkbApAQCAtMjgsNyArMjgsNiBAQAogICovCiAKIFsKLSAgICBBY3Rp
dmVET01PYmplY3QsCiAgICAgQ3VzdG9tQ29uc3RydWN0b3IoYW55IHByb3BlcnRpZXMpLAogICAg
IENvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20u
Y3BwCmluZGV4IGJjMTg2NzkxZWJiM2M1MDA5ZWFmODcyMTQxOTZmNDI2NWE4Zjg0NTMuLmJiYzdh
MTIwYjQ5MjBmYTczNmYzMTA1ODkyNzdlODNlMDRkOWIzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwCkBAIC01NCw5
ICs1NCw5IEBAIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbTo6Y2FuY2VsKEV4ZWNTdGF0ZSogZXhl
YykKIAogSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtOjpnZXRSZWFkZXIoRXhlY1N0YXRlKiBleGVj
KQogewotICAgIGlmIChpbXBsKCkuaXNMb2NrZWQoKSkKKyAgICBpZiAoaW1wbCgpLnJlYWRlcigp
KQogICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbSBpcyBsb2NrZWQiKSkp
OwotICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuY3JlYXRlUmVh
ZGVyKCkpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbXBsKCkuZ2V0
UmVhZGVyKCkpOwogfQogCiBKU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW06OnBpcGVUbyhFeGVjU3Rh
dGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRh
YmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCmluZGV4IDg5OWYwOGVhNjcxZjYyYjFlMWEx
Y2Q0ZjM3MmE4YWQxYmIzMzI0ZTAuLmRlZWMzMTUyYzE2NzdlOWUyNWJhNWFiM2RiNWVkOTE1MzQ4
NWViNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVT
dHJlYW1SZWFkZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCkBAIC03MiwxMiArNzIsMTEgQEAgSlNWYWx1
ZSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoRXhlY1N0YXRlKiBleGVjKSBjb25zdAog
ICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBnZXRPckNyZWF0ZVByb21p
c2VEZWZlcnJlZEZyb21PYmplY3QoZXhlYywgdGhpcywgZ2xvYmFsT2JqZWN0KCksIGNsb3NlZFBy
b21pc2VTbG90TmFtZSgpKTsKICAgICBEZWZlcnJlZFdyYXBwZXIgd3JhcHBlcihleGVjLCBnbG9i
YWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKTsKIAotICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVh
bVJlYWRlcj4gcmVhZGVyID0gJmltcGwoKTsKICAgICBhdXRvIHN1Y2Nlc3NDYWxsYmFjayA9IFt3
cmFwcGVyXSgpIG11dGFibGUgewogICAgICAgICB3cmFwcGVyLnJlc29sdmUoanNVbmRlZmluZWQo
KSk7CiAgICAgfTsKLSAgICBhdXRvIGZhaWx1cmVDYWxsYmFjayA9IFt3cmFwcGVyLCByZWFkZXJd
KCkgbXV0YWJsZSB7Ci0gICAgICAgIHdyYXBwZXIucmVqZWN0KHJlYWRlci0+ZXJyb3IoKSk7Cisg
ICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oUmVhZGFibGVTdHJlYW0mIHN0cmVh
bSkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVqZWN0KHN0cmVhbS5lcnJvcigpKTsKICAg
ICB9OwogCiAgICAgaW1wbCgpLmNsb3NlZChXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RG
Ojptb3ZlKGZhaWx1cmVDYWxsYmFjaykpOwpAQCAtMTA2LDEwICsxMDUsMTAgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtUmVhZGVyKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBpZiAoIXN0cmVhbSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVh
bVJlYWRlciBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgaXMgbm90IGEgUmVhZGFibGVTdHJlYW0iKSkp
OwogCi0gICAgaWYgKHN0cmVhbS0+aW1wbCgpLmlzTG9ja2VkKCkpCisgICAgaWYgKHN0cmVhbS0+
aW1wbCgpLnJlYWRlcigpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0
cnVjdG9yIHBhcmFtZXRlciBpcyBhIGxvY2tlZCBSZWFkYWJsZVN0cmVhbSIpKSk7CiAKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgc3RyZWFtLT5nbG9iYWxPYmplY3QoKSwg
c3RyZWFtLT5pbXBsKCkuY3JlYXRlUmVhZGVyKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlMoZXhlYywgc3RyZWFtLT5nbG9iYWxPYmplY3QoKSwgc3RyZWFtLT5pbXBsKCkuZ2V0
UmVhZGVyKCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAppbmRleCA3NzI3MjdhNWNlYjg0
NDM2MDgxMGRhYmU5ZGJkMTRkMWFhZTYwNDRkLi5jNzNlNmZlMjk0NTVjNmFiYjliMDQyZTQ3Mzll
ZGIzMjg4MTVlYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFk
YWJsZUpTU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJs
ZUpTU3RyZWFtLmNwcApAQCAtMTM5LDE0ICsxMzksNiBAQCBSZWY8UmVhZGFibGVKU1N0cmVhbT4g
UmVhZGFibGVKU1N0cmVhbTo6Y3JlYXRlKEV4ZWNTdGF0ZSYgZXhlYywgU2NyaXB0RXhlY3V0aW9u
QwogICAgIHJldHVybiByZWFkYWJsZVN0cmVhbTsKIH0KIAotUmVmPFJlYWRhYmxlU3RyZWFtUmVh
ZGVyPiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGVSZWFkZXIoKQotewotICAgIFJlZjxSZWFkZXI+
IHJlYWRlciA9IFJlYWRlcjo6Y3JlYXRlKCp0aGlzKTsKLSAgICBpZiAobV9lcnJvcikKLSAgICAg
ICAgcmVhZGVyLT5zdG9yZUVycm9yKCpqc1NvdXJjZSgpLmdsb2JhbE9iamVjdCgpLT5nbG9iYWxF
eGVjKCksIG1fZXJyb3IuZ2V0KCkpOwotICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8
UmVhZGFibGVTdHJlYW1SZWFkZXI+KHJlYWRlcik7Ci19Ci0KIFJlYWRhYmxlSlNTdHJlYW06OlJl
YWRhYmxlSlNTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgUmVmPFJlYWRhYmxlSlNTdHJlYW06OlNvdXJjZT4mJiBzb3VyY2UpCiAgICAgOiBSZWFk
YWJsZVN0cmVhbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXVEY6Om1vdmUoc291cmNlKSkKIHsK
QEAgLTE3MSwyOSArMTYzLDkgQEAgdm9pZCBSZWFkYWJsZUpTU3RyZWFtOjpzdG9yZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJiBleGVjKQogICAgIEpTVmFsdWUgZXJyb3IgPSBleGVjLmFyZ3VtZW50Q291
bnQoKSA/IGV4ZWMuYXJndW1lbnQoMCkgOiBjcmVhdGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFs
KCJFcnJvciBmdW5jdGlvbiBjYWxsZWQuIikpOwogICAgIG1fZXJyb3Iuc2V0KGV4ZWMudm0oKSwg
ZXJyb3IpOwogCi0gICAgaWYgKGF1dG8gcmVhZGVyID0gc3RhdGljX2Nhc3Q8UmVhZGVyKj4odGhp
cy0+cmVhZGVyKCkpKQotICAgICAgICByZWFkZXItPnN0b3JlRXJyb3IoZXhlYywgZXJyb3IpOwot
CiAgICAgY2hhbmdlU3RhdGVUb0Vycm9yZWQoKTsKIH0KIAotUmVmPFJlYWRhYmxlSlNTdHJlYW06
OlJlYWRlcj4gUmVhZGFibGVKU1N0cmVhbTo6UmVhZGVyOjpjcmVhdGUoUmVhZGFibGVKU1N0cmVh
bSYgc3RyZWFtKQotewotICAgIFJlZjxSZWFkZXI+IHJlYWRlciA9IGFkb3B0UmVmKCpuZXcgUmVh
ZGVyKHN0cmVhbSkpOwotICAgIHJlYWRlci0+aW5pdGlhbGl6ZSgpOwotICAgIHJldHVybiByZWFk
ZXI7Ci19Ci0KLVJlYWRhYmxlSlNTdHJlYW06OlJlYWRlcjo6UmVhZGVyKFJlYWRhYmxlSlNTdHJl
YW0mIHJlYWRhYmxlU3RyZWFtKQotICAgIDogUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGFibGVT
dHJlYW0pCi17Ci19Ci0KLXZvaWQgUmVhZGFibGVKU1N0cmVhbTo6UmVhZGVyOjpzdG9yZUVycm9y
KEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGVycm9yKQotewotICAgIG1fZXJyb3Iuc2V0
KGV4ZWMudm0oKSwgZXJyb3IpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVh
bS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCmluZGV4
IDkwMGFlZDZlY2ZmODQ1ODVkOWFjZGFjMWI1YmY0MjAzODEwOTExYTUuLjRkNTFkMDFiZmY4NGZj
Y2Y3MWRlYzQ2NjJjNThmNjc3MmZhNzhmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKQEAgLTQ4LDE4ICs0OCw2IEBAIGNsYXNzIFJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlcjsKIAogY2xhc3MgUmVhZGFibGVKU1N0cmVhbTogcHVibGljIFJlYWRh
YmxlU3RyZWFtIHsKIHByaXZhdGU6Ci0gICAgY2xhc3MgUmVhZGVyOiBwdWJsaWMgUmVhZGFibGVT
dHJlYW1SZWFkZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxSZWFkZXI+IGNy
ZWF0ZShSZWFkYWJsZUpTU3RyZWFtJik7Ci0gICAgICAgIHZvaWQgc3RvcmVFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Ci0gICAgICAgIEpTQzo6SlNWYWx1ZSBlcnJvcigpIHsg
cmV0dXJuIG1fZXJyb3IuZ2V0KCk7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGV4cGxpY2l0
IFJlYWRlcihSZWFkYWJsZUpTU3RyZWFtJik7Ci0KLSAgICAgICAgSlNDOjpTdHJvbmc8SlNDOjpV
bmtub3duPiBtX2Vycm9yOwotICAgIH07Ci0KICAgICBjbGFzcyBTb3VyY2U6IHB1YmxpYyBSZWFk
YWJsZVN0cmVhbVNvdXJjZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUmVmPFNvdXJj
ZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJik7CkBAIC03NSw3ICs2Myw2IEBAIHByaXZhdGU6CiAK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlYWRhYmxlSlNTdHJlYW0+IGNyZWF0ZShKU0M6OkV4
ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKLSAgICB2aXJ0dWFsIFJlZjxSZWFk
YWJsZVN0cmVhbVJlYWRlcj4gY3JlYXRlUmVhZGVyKCkgb3ZlcnJpZGU7CiAKICAgICBSZWFkYWJs
ZUpTU3RyZWFtOjpTb3VyY2UmIGpzU291cmNlKCk7CiAgICAgSlNDOjpKU1ZhbHVlIGpzQ29udHJv
bGxlcihKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252973</attachid>
            <date>2015-05-12 11:48:56 -0700</date>
            <delta_ts>2015-05-17 11:44:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144907-20150512204725.patch</filename>
            <type>text/plain</type>
            <size>18621</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRiODlhNGNmZTZkODJi
NmUxM2ZlZTE4MmQ1NDBkODNlYWFiMjAwYS4uMjM0ZTI5ZThlMzQ5Mzk0Nzk0ZDg1N2MzY2JhZTQz
Y2FjNTJiOWViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE1LTA1LTEzICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEld
IERlbGVnYXRlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHJlZmVyZW5jZSBjb3VudGluZyB0byBSZWFk
YWJsZVN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ0OTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ2hhbmdlZCB0aGUgbGluayBiZXR3ZWVuIHJlYWRhZGFibGUgc3RyZWFtIGFuZCByZWFkZXIu
CisgICAgICAgIENvbnRyb2xsZXIgcmVmKCkvZGVyZWYoKSBub3cgaW5jcmVtZW50cy9kZWNyZW1l
bnRzIGl0cyBzdHJlYW0gcmVmIGNvdW50ZXIsIHNpbWlsYXJseSB0byBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIuCisgICAgICAgIFRoaXMgZW5zdXJlcyB0aGF0IGV2ZW4gaWYgSlMgc2NyaXB0cyBk
byBub3Qga2VlcCB0cmFjayBvZiB0aGUgcmVhZGFibGUgc3RyZWFtLAorICAgICAgICB0aGUgcmVh
ZGFibGUgc3RyZWFtIHdpbGwgbm90IGJlIGRpc3Bvc2VkIGFzIGxvbmcgYXMgdGhlIEpTIHNjcmlw
dCBoYXMgYWNjZXNzIHRvIGl0cyByZWFkZXIuCisKKyAgICAgICAgQWxsIHJlYWRlcnMgb2YgYSBn
aXZlbiBzdHJlYW0gYXJlIGtlcHQgYnkgdGhlIHN0cmVhbSwgZWl0aGVyIGluIGFuIGFycmF5IChm
b3IgcmVsZWFzZWQgcmVhZGVycykgCisgICAgICAgIG9yIGFuZCBpbiBSZWFkYWJsZVN0cmVhbTo6
bV9yZWFkZXIgZm9yIHRoZSBhY3RpdmUgcmVhZGVyLgorICAgICAgICBUaGlzIHJlbW92ZXMgdGhl
IG5lZWQgZm9yIHRoZSBjb2RlIHN5bmNocm9uaXppbmcgc3RyZWFtIGFuZCByZWFkZXIuCisKKyAg
ICAgICAgQXMgYSByZWFkZXIgY2FuIG5vdyBhbHJlYWR5IGNvdW50IG9uIGl0cyBzdHJlYW0sIHRo
ZSByZWFkZXIgbm8gbG9uZ2VyIG5lZWRzIHRvIHN0b3JlIHRoZSBlcnJvciBpbiBlcnJvcmVkIHN0
YXRlLgorICAgICAgICBSZW1vdmFsIG9mIFJlYWRhYmxlSlNTdHJlYW06OlJlYWRlciBhcyBjbG9z
ZWQgcHJvbWlzZSByZWplY3Rpb24gZXJyb3IgaXMgZGlyZWN0bHkgcmV0cmlldmVkIGZyb20gdGhl
IFJlYWRhYmxlU3RyZWFtLgorICAgICAgICBNb3ZlZCB0aGUgY3JlYXRpb24gb2YgcmVhZGVyIGRp
cmVjdGx5IGluIFJlYWRhYmxlU3RyZWFtLgorCisgICAgICAgIE5leHQgc3RlcCBzaG91bGQgYmUg
dG8gcmVtb3ZlIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjptX3N0YXRlIGFuZCB0byBkZWxlZ2F0ZSB0
aGUgaGFuZGxpbmcgb2YgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UgY2FsbGJh
Y2tzIHRvIFJlYWRhYmxlU3RyZWFtLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4K
KworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Nsb3NlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmdldFJlYWRlcik6CisgICAgICAgICogTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0
cmVhbTo6cmVhZGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1S
ZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1SZWFkZXI6OmNsZWFu
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWYpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1SZWFkZXI6OmRlcmVmKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVh
ZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRlVG9DbG9zZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRlVG9FcnJvcmVkKToKKyAgICAgICAg
KiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWRhYmxlU3RyZWFtUmVhZGVyOjpSZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAg
ICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbDoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTUmVhZGFibGVTdHJlYW06OmdldFJlYWRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRh
YmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNS
ZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpzdG9yZUVycm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNTdHJlYW0p
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaDoKKwog
MjAxNS0wNS0xMiAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29t
PiBhbmQgWW91ZW5uIEZhYmxldCA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAg
ICAgW1N0cmVhbXMgQVBJXSBSZWFkYWJsZVN0cmVhbSByZWFkZXIgc2hvdWxkIG5vdCBiZSBkaXNw
b3NhYmxlIHdoZW4gaGF2aW5nIHBlbmRpbmcgcHJvbWlzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCmluZGV4IDRkNjllZTY4N2JhZjYw
YzhhMjNjZGEyNjZhNjRjMjk0N2YwYzcyZGEuLjgyOWQ0MDhmYzFjYzI4NzE2MDlmMTZjZmNhNGY4
OTc5OWM1YTcyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmNwcApAQCAtNDIsNyArNDIsNiBAQCBERUZJTkVfREVCVUdfT05MWV9HTE9C
QUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHJlYWRhYmxlU3RyZWFtQ291bnRlciwgKCJS
ZQogCiBSZWFkYWJsZVN0cmVhbTo6UmVhZGFibGVTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmPFJlYWRhYmxlU3RyZWFtU291cmNlPiYmIHNv
dXJjZSkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAg
ICAsIG1fc3RhdGUoU3RhdGU6OlJlYWRhYmxlKQogICAgICwgbV9zb3VyY2UoV1RGOjptb3ZlKHNv
dXJjZSkpCiB7CiAjaWZuZGVmIE5ERUJVRwpAQCAtNjMsOSArNjIsMTAgQEAgdm9pZCBSZWFkYWJs
ZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6
OlJlYWRhYmxlKQogICAgICAgICByZXR1cm47CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpDbG9zZWQ7
Ci0gICAgaWYgKG1fcmVhZGVyKQotICAgICAgICBtX3JlYWRlci0+Y2hhbmdlU3RhdGVUb0Nsb3Nl
ZCgpOwotICAgIEFTU0VSVCghbV9yZWFkZXIpOworICAgIGlmICghbV9yZWFkZXIpCisgICAgICAg
IHJldHVybjsKKyAgICBtX3JlYWRlci0+Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpOworICAgIG1fcmVs
ZWFzZWRSZWFkZXJzLmFwcGVuZChXVEY6Om1vdmUobV9yZWFkZXIpKTsKIH0KIAogdm9pZCBSZWFk
YWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQoKQpAQCAtNzMsOSArNzMsMzEgQEAgdm9p
ZCBSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQoKQogICAgIGlmIChtX3N0YXRl
ICE9IFN0YXRlOjpSZWFkYWJsZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fc3RhdGUgPSBTdGF0
ZTo6RXJyb3JlZDsKLSAgICBpZiAobV9yZWFkZXIpCi0gICAgICAgIG1fcmVhZGVyLT5jaGFuZ2VT
dGF0ZVRvRXJyb3JlZCgpOworICAgIGlmICghbV9yZWFkZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX3JlYWRlci0+Y2hhbmdlU3RhdGVUb0Vycm9yZWQoKTsKKyAgICBtX3JlbGVhc2VkUmVhZGVy
cy5hcHBlbmQoV1RGOjptb3ZlKG1fcmVhZGVyKSk7Cit9CisKK1JlYWRhYmxlU3RyZWFtUmVhZGVy
JiBSZWFkYWJsZVN0cmVhbTo6Z2V0UmVhZGVyKCkKK3sKICAgICBBU1NFUlQoIW1fcmVhZGVyKTsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4gbmV3UmVhZGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxSZWFkYWJsZVN0cmVhbVJlYWRlcj4oKnRoaXMpOworICAgIFJlYWRh
YmxlU3RyZWFtUmVhZGVyJiByZWFkZXIgPSAqbmV3UmVhZGVyLmdldCgpOworCisgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OlJlYWRhYmxlKSB7CisgICAgICAgIG1fcmVhZGVyID0gV1RGOjptb3Zl
KG5ld1JlYWRlcik7CisgICAgICAgIHJldHVybiByZWFkZXI7CisgICAgfQorCisgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkKKyAgICAgICAgcmVhZGVyLmNoYW5nZVN0YXRlVG9DbG9z
ZWQoKTsKKyAgICBlbHNlIGlmIChtX3N0YXRlID09IFN0YXRlOjpFcnJvcmVkKQorICAgICAgICBy
ZWFkZXIuY2hhbmdlU3RhdGVUb0Vycm9yZWQoKTsKKyAgICBtX3JlbGVhc2VkUmVhZGVycy5hcHBl
bmQoV1RGOjptb3ZlKG5ld1JlYWRlcikpOworCisgICAgcmV0dXJuIHJlYWRlcjsKIH0KIAogdm9p
ZCBSZWFkYWJsZVN0cmVhbTo6c3RhcnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW0uaAppbmRleCAwMGFjOTZjODFlOGQ4OTM0ZmE1ZDhkMmQwOWJk
YjBjOTA0NTA3YzEwLi5iMWJkMDYwZTU0YThmYjMzZTNjYTU1MjZiYWE2NjQ0NTkzNWY3ODM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaApA
QCAtMzgsNiArMzgsMTAgQEAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBKU1ZhbHVlOworfQorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtUmVhZGVyOwpAQCAtNTcsMTMgKzYxLDEw
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflJlYWRhYmxlU3RyZWFtKCk7CiAKLSAgICBSZWFk
YWJsZVN0cmVhbVJlYWRlciogcmVhZGVyKCkgeyByZXR1cm4gbV9yZWFkZXI7IH0KLSAgICB2aXJ0
dWFsIFJlZjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4gY3JlYXRlUmVhZGVyKCkgPSAwOworICAgIFJl
YWRhYmxlU3RyZWFtUmVhZGVyJiBnZXRSZWFkZXIoKTsKKyAgICBib29sIGlzTG9ja2VkKCkgY29u
c3QgeyByZXR1cm4gISFtX3JlYWRlcjsgfQogCi0gICAgYm9vbCBpc0xvY2tlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNMb2NrZWQ7IH0KLSAgICB2b2lkIGxvY2soUmVhZGFibGVTdHJlYW1SZWFkZXIm
KTsKLSAgICB2b2lkIHJlbGVhc2UoKTsKLSAgICB2b2lkIHJlbGVhc2VCdXRLZWVwTG9ja2VkKCk7
CisgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgZXJyb3IoKSA9IDA7CiAKICAgICBTdGF0ZSBpbnRl
cm5hbFN0YXRlKCkgeyByZXR1cm4gbV9zdGF0ZTsgfQogCkBAIC04MSwzMiArODIsMTMgQEAgcHJp
dmF0ZToKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yUGFnZUNhY2hlKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBTdGF0ZSBtX3N0YXRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbVJl
YWRlcj4gbV9yZWFkZXI7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVh
bVJlYWRlcj4+IG1fcmVsZWFzZWRSZWFkZXJzOworCisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRl
OjpSZWFkYWJsZSB9OwogICAgIFJlZjxSZWFkYWJsZVN0cmVhbVNvdXJjZT4gbV9zb3VyY2U7Ci0g
ICAgUmVhZGFibGVTdHJlYW1SZWFkZXIqIG1fcmVhZGVyIHsgbnVsbHB0ciB9OwotICAgIGJvb2wg
bV9pc0xvY2tlZCB7IGZhbHNlIH07CiB9OwogCi1pbmxpbmUgdm9pZCBSZWFkYWJsZVN0cmVhbTo6
bG9jayhSZWFkYWJsZVN0cmVhbVJlYWRlciYgcmVhZGVyKQotewotICAgIG1fcmVhZGVyID0gJnJl
YWRlcjsKLSAgICBtX2lzTG9ja2VkID0gdHJ1ZTsKLX0KLQotaW5saW5lIHZvaWQgUmVhZGFibGVT
dHJlYW06OnJlbGVhc2UoKQotewotICAgIG1fcmVhZGVyID0gbnVsbHB0cjsKLSAgICBtX2lzTG9j
a2VkID0gZmFsc2U7Ci19Ci0KLWlubGluZSB2b2lkIFJlYWRhYmxlU3RyZWFtOjpyZWxlYXNlQnV0
S2VlcExvY2tlZCgpCi17Ci0gICAgbV9yZWFkZXIgPSBudWxscHRyOwotICAgIG1faXNMb2NrZWQg
PSB0cnVlOwotfQotCi0KLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCmluZGV4IDg5OTJmZWY5
ZWRlZGFmNGM5ZDZiMDEwMGU4NmJiYzIwMzgyZTBkYjMuLjFkNzlhNGIxNzJiODEzYTRkYmMwYzFk
NTUyOTNmOWI5ZWQ1YzM5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcApAQCAtMzMsNTYgKzMzLDExIEBACiAj
aWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVy
LCByZWFkYWJsZVN0cmVhbVJlYWRlckNvdW50ZXIsICgiUmVhZGFibGVTdHJlYW1SZWFkZXIiKSk7
Ci0KLVJlYWRhYmxlU3RyZWFtUmVhZGVyOjpSZWFkYWJsZVN0cmVhbVJlYWRlcihSZWFkYWJsZVN0
cmVhbSYgc3RyZWFtKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KHN0cmVhbS5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpCi0gICAgLCBtX3N0cmVhbSgmc3RyZWFtKQordm9pZCBSZWFkYWJsZVN0cmVh
bVJlYWRlcjo6Y2xlYW4oKQogewotI2lmbmRlZiBOREVCVUcKLSAgICByZWFkYWJsZVN0cmVhbVJl
YWRlckNvdW50ZXIuaW5jcmVtZW50KCk7Ci0jZW5kaWYKLSAgICBzdXNwZW5kSWZOZWVkZWQoKTsK
LX0KLQotUmVhZGFibGVTdHJlYW1SZWFkZXI6On5SZWFkYWJsZVN0cmVhbVJlYWRlcigpCi17Ci0j
aWZuZGVmIE5ERUJVRwotICAgIHJlYWRhYmxlU3RyZWFtUmVhZGVyQ291bnRlci5kZWNyZW1lbnQo
KTsKLSNlbmRpZgotICAgIGlmIChtX3N0cmVhbSkgewotICAgICAgICBtX3N0cmVhbS0+cmVsZWFz
ZUJ1dEtlZXBMb2NrZWQoKTsKLSAgICAgICAgbV9zdHJlYW0gPSBudWxscHRyOwotICAgIH0KLX0K
LQotdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6aW5pdGlhbGl6ZSgpCi17Ci0gICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghbV9zdHJlYW0tPmlzTG9ja2VkKCksICJBIFJlYWRhYmxlU3RyZWFtIGNh
bm5vdCBiZSBsb2NrZWQgYnkgdHdvIHJlYWRlcnMgYXQgdGhlIHNhbWUgdGltZS4iKTsKLSAgICBt
X3N0cmVhbS0+bG9jaygqdGhpcyk7Ci0gICAgaWYgKG1fc3RyZWFtLT5pbnRlcm5hbFN0YXRlKCkg
PT0gUmVhZGFibGVTdHJlYW06OlN0YXRlOjpDbG9zZWQpIHsKLSAgICAgICAgY2hhbmdlU3RhdGVU
b0Nsb3NlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX3N0cmVhbS0+aW50
ZXJuYWxTdGF0ZSgpID09IFJlYWRhYmxlU3RyZWFtOjpTdGF0ZTo6RXJyb3JlZCkgewotICAgICAg
ICBjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12
b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWxlYXNlU3RyZWFtQW5kQ2xlYW4oKQotewotICAg
IC8vIFJlbGVhc2luZyBjYWxsYmFja3MgbWF5IHRyaWdnZXIgdW5yZWZpbmcgb2YgdGhlIHJlYWRl
ci4KLSAgICBSZWY8UmVhZGFibGVTdHJlYW1SZWFkZXI+IHByb3RlY3QoKnRoaXMpOwotCi0gICAg
QVNTRVJUKG1fc3RyZWFtKTsKLSAgICBtX3N0cmVhbS0+cmVsZWFzZSgpOwotICAgIG1fc3RyZWFt
ID0gbnVsbHB0cjsKLQogICAgIG1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNrID0gbnVsbHB0cjsKICAg
ICBtX2Nsb3NlZEVycm9yQ2FsbGJhY2sgPSBudWxscHRyOwogfQpAQCAtOTQsNyArNDksNyBAQCB2
b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoQ2xvc2VkU3VjY2Vzc0NhbGxiYWNrIHN1
Y2Nlc3NDYWxsYmFjaywgQ2xvc2VkRQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICht
X3N0YXRlID09IFN0YXRlOjpFcnJvcmVkKSB7Ci0gICAgICAgIGVycm9yQ2FsbGJhY2soKTsKKyAg
ICAgICAgZXJyb3JDYWxsYmFjayhtX3N0cmVhbSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgbV9jbG9zZWRTdWNjZXNzQ2FsbGJhY2sgPSBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKTsK
QEAgLTExMSw3ICs2Niw3IEBAIHZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRl
VG9DbG9zZWQoKQogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCByZWFkIHByb21pc2UgZnVsZmls
bGluZy4KIAotICAgIHJlbGVhc2VTdHJlYW1BbmRDbGVhbigpOworICAgIGNsZWFuKCk7CiB9CiAK
IHZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRlVG9FcnJvcmVkKCkKQEAgLTEy
MCwyMiArNzUsMTEgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2hhbmdlU3RhdGVUb0Vy
cm9yZWQoKQogICAgIG1fc3RhdGUgPSBTdGF0ZTo6RXJyb3JlZDsKIAogICAgIGlmIChtX2Nsb3Nl
ZEVycm9yQ2FsbGJhY2spCi0gICAgICAgIG1fY2xvc2VkRXJyb3JDYWxsYmFjaygpOworICAgICAg
ICBtX2Nsb3NlZEVycm9yQ2FsbGJhY2sobV9zdHJlYW0pOwogCiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCByZWFkIHByb21pc2UgcmVqZWN0aW9uLgogCi0gICAgcmVsZWFzZVN0cmVhbUFuZENsZWFu
KCk7Ci19Ci0KLWNvbnN0IGNoYXIqIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjphY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIlJlYWRhYmxlU3RyZWFtUmVhZGVyIjsKLX0K
LQotYm9vbCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2FuU3VzcGVuZEZvclBhZ2VDYWNoZSgpIGNv
bnN0Ci17Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgYW5kIGRvIGJldHRlciBoZXJlLgot
ICAgIHJldHVybiBmYWxzZTsKKyAgICBjbGVhbigpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oCmluZGV4IDM4
ZjdiNTk2OTlmYjE2ZGUxMDAzZTA3MzI0YTRmMDU0MWIxYzg0NTguLmQxNzZlOTZiOGNkODU4MTI5
NDJkNjFjMDA5NGI3YzVhMDkyODAwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oCkBAIC0zNiwxNiArMzYsMTcgQEAK
ICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5o
IgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gUmVhZGFibGVTdHJlYW1SZWFkZXIgaW1wbGVtZW50cyB0
aGUgY29yZSBvZiB0aGUgc3RyZWFtcyBBUEkgUmVhZGFibGVTdHJlYW1SZWFkZXIgZnVuY3Rpb25h
bGl0eS4KLS8vIEl0IGhhbmRsZXMgaW4gcGFydGljdWxhciBhY2Nlc3MgdG8gdGhlIGNodW5rcyBh
bmQgc3RhdGUgb2YgYSBSZWFkYWJsZVN0cmVhbS4KKy8vIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGlt
cGxlbWVudHMgYWNjZXNzIHRvIFJlYWRhYmxlU3RyZWFtIGZyb20gSmF2YVNjcmlwdC4KKy8vIEl0
IGJhc2ljYWxseSBhbGxvd3MgYWNjZXNzIHRvIHRoZSBSZWFkYWJsZVN0cmVhbSBpZmYgdGhlIFJl
YWRhYmxlU3RyZWFtUmVhZGVyIGluc3RhbmNlIGlzIHRoZSBhY3RpdmUgcmVhZGVyCisvLyBvZiB0
aGUgUmVhZGFibGVTdHJlYW0uCisvLyBNb3N0IG9mIHRoaXMgaGFuZGxpbmcgaXMgaGFwcGVuaW5n
IGluIHRoZSBjdXN0b20gSlMgYmluZGluZyBvZiBSZWFkYWJsZVN0cmVhbVJlYWRlci4KIC8vIFNl
ZSBodHRwczovL3N0cmVhbXMuc3BlYy53aGF0d2cub3JnLyNyZWFkZXItY2xhc3MgZm9yIG1vcmUg
aW5mb3JtYXRpb24uCi1jbGFzcyBSZWFkYWJsZVN0cmVhbVJlYWRlciA6IHB1YmxpYyBBY3RpdmVE
T01PYmplY3QsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFJlYWRh
YmxlU3RyZWFtUmVhZGVyPiB7CitjbGFzcyBSZWFkYWJsZVN0cmVhbVJlYWRlciB7CiBwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7CiAgICAgICAgIFJlYWRhYmxlLApAQCAtNTMsMzEgKzU0
LDIzIEBAIHB1YmxpYzoKICAgICAgICAgRXJyb3JlZAogICAgIH07CiAKLSAgICB2b2lkIGluaXRp
YWxpemUoKTsKLSAgICB2aXJ0dWFsIH5SZWFkYWJsZVN0cmVhbVJlYWRlcigpOwotCi0gICAgUmVh
ZGFibGVTdHJlYW0qIHN0cmVhbSgpIHsgcmV0dXJuIG1fc3RyZWFtLmdldCgpOyB9CisgICAgUmVh
ZGFibGVTdHJlYW1SZWFkZXIoUmVhZGFibGVTdHJlYW0mIHN0cmVhbSkKKyAgICAgICAgOiBtX3N0
cmVhbShzdHJlYW0pIHsgfTsKIAogICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IENs
b3NlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBD
bG9zZWRFcnJvckNhbGxiYWNrOworICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKFJlYWRh
YmxlU3RyZWFtJik+IENsb3NlZEVycm9yQ2FsbGJhY2s7CiAgICAgdm9pZCBjbG9zZWQoQ2xvc2Vk
U3VjY2Vzc0NhbGxiYWNrLCBDbG9zZWRFcnJvckNhbGxiYWNrKTsKIAogICAgIHZvaWQgY2hhbmdl
U3RhdGVUb0Nsb3NlZCgpOwogICAgIHZvaWQgY2hhbmdlU3RhdGVUb0Vycm9yZWQoKTsKIAotICAg
IHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGVycm9yKCkgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVh
ZGFibGVTdHJlYW1SZWFkZXIoUmVhZGFibGVTdHJlYW0mKTsKKyAgICB2b2lkIHJlZigpIHsgbV9z
dHJlYW0ucmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmKCkgeyBtX3N0cmVhbS5kZXJlZigpOyB9CiAK
IHByaXZhdGU6Ci0gICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KLSAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjYW5TdXNwZW5k
Rm9yUGFnZUNhY2hlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHJlbGVhc2VTdHJlYW1B
bmRDbGVhbigpOworICAgIHZvaWQgY2xlYW4oKTsKIAotICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVh
bT4gbV9zdHJlYW07CisgICAgUmVhZGFibGVTdHJlYW0mIG1fc3RyZWFtOwogICAgIFN0YXRlIG1f
c3RhdGUgeyBTdGF0ZTo6UmVhZGFibGUgfTsKIAogICAgIENsb3NlZFN1Y2Nlc3NDYWxsYmFjayBt
X2Nsb3NlZFN1Y2Nlc3NDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRsCmluZGV4IDQ0MDQ5NDI4ZTYzMmQw
YzQzNzUwN2EwYzMyNjFkMDYyMjJiM2VjYWEuLmJlYjI0YmFmOTllMjc3YjQyY2FlMzRlYjNjNjM2
NGUzMTVkYTI5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVJlYWRlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbApAQCAtMjgsNyArMjgsNiBAQAogICovCiAKIFsK
LSAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ3VzdG9tQ29uc3RydWN0b3IoYW55IHByb3BlcnRp
ZXMpLAogICAgIENvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLAogICAgIFNraXBWVGFibGVWYWxpZGF0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3Ry
ZWFtQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJl
YW1DdXN0b20uY3BwCmluZGV4IGJjMTg2NzkxZWJiM2M1MDA5ZWFmODcyMTQxOTZmNDI2NWE4Zjg0
NTMuLjgyNTdmMGE2ODBiZTQ0NTViMWRkZGYwNjgyZDk3OTcxM2QwZDUwYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20uY3Bw
CkBAIC01Niw3ICs1Niw3IEBAIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbTo6Z2V0UmVhZGVyKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoaW1wbCgpLmlzTG9ja2VkKCkpCiAgICAgICAgIHJl
dHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtIGlzIGxvY2tlZCIpKSk7Ci0gICAgcmV0dXJu
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5jcmVhdGVSZWFkZXIoKSk7CisgICAg
cmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGltcGwoKS5nZXRSZWFkZXIoKSk7CiB9
CiAKIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbTo6cGlwZVRvKEV4ZWNTdGF0ZSogZXhlYykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFk
ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVh
bVJlYWRlckN1c3RvbS5jcHAKaW5kZXggODk5ZjA4ZWE2NzFmNjJiMWUxYTFjZDRmMzcyYThhZDFi
YjMzMjRlMC4uYjdhMWYxOWVlZGUxMGRmZDZlMDc4OTFlYzlhMThlNGJkNjAyZjY5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVh
bVJlYWRlckN1c3RvbS5jcHAKQEAgLTcyLDEyICs3MiwxMSBAQCBKU1ZhbHVlIEpTUmVhZGFibGVT
dHJlYW1SZWFkZXI6OmNsb3NlZChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgSlNQcm9taXNl
RGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9IGdldE9yQ3JlYXRlUHJvbWlzZURlZmVycmVkRnJv
bU9iamVjdChleGVjLCB0aGlzLCBnbG9iYWxPYmplY3QoKSwgY2xvc2VkUHJvbWlzZVNsb3ROYW1l
KCkpOwogICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBw
cm9taXNlRGVmZXJyZWQpOwogCi0gICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtUmVhZGVyPiByZWFk
ZXIgPSAmaW1wbCgpOwogICAgIGF1dG8gc3VjY2Vzc0NhbGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0
YWJsZSB7CiAgICAgICAgIHdyYXBwZXIucmVzb2x2ZShqc1VuZGVmaW5lZCgpKTsKICAgICB9Owot
ICAgIGF1dG8gZmFpbHVyZUNhbGxiYWNrID0gW3dyYXBwZXIsIHJlYWRlcl0oKSBtdXRhYmxlIHsK
LSAgICAgICAgd3JhcHBlci5yZWplY3QocmVhZGVyLT5lcnJvcigpKTsKKyAgICBhdXRvIGZhaWx1
cmVDYWxsYmFjayA9IFt3cmFwcGVyXShSZWFkYWJsZVN0cmVhbSYgc3RyZWFtKSBtdXRhYmxlIHsK
KyAgICAgICAgd3JhcHBlci5yZWplY3Qoc3RyZWFtLmVycm9yKCkpOwogICAgIH07CiAKICAgICBp
bXBsKCkuY2xvc2VkKFdURjo6bW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVy
ZUNhbGxiYWNrKSk7CkBAIC0xMDksNyArMTA4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtUmVhZGVyKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBpZiAoc3RyZWFtLT5pbXBsKCkuaXNMb2NrZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0
cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgaXMgYSBsb2NrZWQgUmVhZGFibGVTdHJl
YW0iKSkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHN0cmVhbS0+
Z2xvYmFsT2JqZWN0KCksIHN0cmVhbS0+aW1wbCgpLmNyZWF0ZVJlYWRlcigpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHN0cmVhbS0+Z2xvYmFsT2JqZWN0KCksIHN0
cmVhbS0+aW1wbCgpLmdldFJlYWRlcigpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAKaW5k
ZXggNzcyNzI3YTVjZWI4NDQzNjA4MTBkYWJlOWRiZDE0ZDFhYWU2MDQ0ZC4uYWQxZWM3OTIxZWJk
MTJkNzlmY2NiZTE0NTBkZTI0MWVkZjNhNzYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAKQEAgLTEzNSwxOCArMTM1LDEwIEBAIFJlZjxS
ZWFkYWJsZUpTU3RyZWFtPiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoRXhlY1N0YXRlJiBleGVj
LCBTY3JpcHRFeGVjdXRpb25DCiAgICAgUmVmPFJlYWRhYmxlSlNTdHJlYW06OlNvdXJjZT4gc291
cmNlID0gUmVhZGFibGVKU1N0cmVhbTo6U291cmNlOjpjcmVhdGUoZXhlYyk7CiAgICAgUmVmPFJl
YWRhYmxlSlNTdHJlYW0+IHJlYWRhYmxlU3RyZWFtID0gYWRvcHRSZWYoKm5ldyBSZWFkYWJsZUpT
U3RyZWFtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURjo6bW92ZShzb3VyY2UpKSk7CiAKLSAg
ICBzdGF0aWNfY2FzdDxSZWFkYWJsZUpTU3RyZWFtOjpTb3VyY2UmPihyZWFkYWJsZVN0cmVhbS0+
c291cmNlKCkpLnN0YXJ0KGV4ZWMsIHJlYWRhYmxlU3RyZWFtLmdldCgpKTsKKyAgICByZWFkYWJs
ZVN0cmVhbS0+anNTb3VyY2UoKS5zdGFydChleGVjLCByZWFkYWJsZVN0cmVhbS5nZXQoKSk7CiAg
ICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtOwogfQogCi1SZWY8UmVhZGFibGVTdHJlYW1SZWFkZXI+
IFJlYWRhYmxlSlNTdHJlYW06OmNyZWF0ZVJlYWRlcigpCi17Ci0gICAgUmVmPFJlYWRlcj4gcmVh
ZGVyID0gUmVhZGVyOjpjcmVhdGUoKnRoaXMpOwotICAgIGlmIChtX2Vycm9yKQotICAgICAgICBy
ZWFkZXItPnN0b3JlRXJyb3IoKmpzU291cmNlKCkuZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMo
KSwgbV9lcnJvci5nZXQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxSZWFk
YWJsZVN0cmVhbVJlYWRlcj4ocmVhZGVyKTsKLX0KLQogUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFi
bGVKU1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBSZWY8UmVhZGFibGVKU1N0cmVhbTo6U291cmNlPiYmIHNvdXJjZSkKICAgICA6IFJlYWRhYmxl
U3RyZWFtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURjo6bW92ZShzb3VyY2UpKQogewpAQCAt
MTcxLDI5ICsxNjMsOSBAQCB2b2lkIFJlYWRhYmxlSlNTdHJlYW06OnN0b3JlRXJyb3IoSlNDOjpF
eGVjU3RhdGUmIGV4ZWMpCiAgICAgSlNWYWx1ZSBlcnJvciA9IGV4ZWMuYXJndW1lbnRDb3VudCgp
ID8gZXhlYy5hcmd1bWVudCgwKSA6IGNyZWF0ZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoIkVy
cm9yIGZ1bmN0aW9uIGNhbGxlZC4iKSk7CiAgICAgbV9lcnJvci5zZXQoZXhlYy52bSgpLCBlcnJv
cik7CiAKLSAgICBpZiAoYXV0byByZWFkZXIgPSBzdGF0aWNfY2FzdDxSZWFkZXIqPih0aGlzLT5y
ZWFkZXIoKSkpCi0gICAgICAgIHJlYWRlci0+c3RvcmVFcnJvcihleGVjLCBlcnJvcik7Ci0KICAg
ICBjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpOwogfQogCi1SZWY8UmVhZGFibGVKU1N0cmVhbTo6UmVh
ZGVyPiBSZWFkYWJsZUpTU3RyZWFtOjpSZWFkZXI6OmNyZWF0ZShSZWFkYWJsZUpTU3RyZWFtJiBz
dHJlYW0pCi17Ci0gICAgUmVmPFJlYWRlcj4gcmVhZGVyID0gYWRvcHRSZWYoKm5ldyBSZWFkZXIo
c3RyZWFtKSk7Ci0gICAgcmVhZGVyLT5pbml0aWFsaXplKCk7Ci0gICAgcmV0dXJuIHJlYWRlcjsK
LX0KLQotUmVhZGFibGVKU1N0cmVhbTo6UmVhZGVyOjpSZWFkZXIoUmVhZGFibGVKU1N0cmVhbSYg
cmVhZGFibGVTdHJlYW0pCi0gICAgOiBSZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkYWJsZVN0cmVh
bSkKLXsKLX0KLQotdm9pZCBSZWFkYWJsZUpTU3RyZWFtOjpSZWFkZXI6OnN0b3JlRXJyb3IoSlND
OjpFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgZXJyb3IpCi17Ci0gICAgbV9lcnJvci5zZXQoZXhl
Yy52bSgpLCBlcnJvcik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKaW5kZXggOTAw
YWVkNmVjZmY4NDU4NWQ5YWNkYWMxYjViZjQyMDM4MTA5MTFhNS4uNGQ1MWQwMWJmZjg0ZmNjZjcx
ZGVjNDY2MmM1OGY2NzcyZmE3OGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1JlYWRhYmxlSlNTdHJlYW0uaApAQCAtNDgsMTggKzQ4LDYgQEAgY2xhc3MgUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyOwogCiBjbGFzcyBSZWFkYWJsZUpTU3RyZWFtOiBwdWJsaWMgUmVhZGFibGVT
dHJlYW0gewogcHJpdmF0ZToKLSAgICBjbGFzcyBSZWFkZXI6IHB1YmxpYyBSZWFkYWJsZVN0cmVh
bVJlYWRlciB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPFJlYWRlcj4gY3JlYXRl
KFJlYWRhYmxlSlNTdHJlYW0mKTsKLSAgICAgICAgdm9pZCBzdG9yZUVycm9yKEpTQzo6RXhlY1N0
YXRlJiwgSlNDOjpKU1ZhbHVlKTsKLSAgICAgICAgSlNDOjpKU1ZhbHVlIGVycm9yKCkgeyByZXR1
cm4gbV9lcnJvci5nZXQoKTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQgUmVh
ZGVyKFJlYWRhYmxlSlNTdHJlYW0mKTsKLQotICAgICAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25v
d24+IG1fZXJyb3I7Ci0gICAgfTsKLQogICAgIGNsYXNzIFNvdXJjZTogcHVibGljIFJlYWRhYmxl
U3RyZWFtU291cmNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8U291cmNlPiBj
cmVhdGUoSlNDOjpFeGVjU3RhdGUmKTsKQEAgLTc1LDcgKzYzLDYgQEAgcHJpdmF0ZToKIAogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UmVhZGFibGVKU1N0cmVhbT4gY3JlYXRlKEpTQzo6RXhlY1N0
YXRlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwotICAgIHZpcnR1YWwgUmVmPFJlYWRhYmxl
U3RyZWFtUmVhZGVyPiBjcmVhdGVSZWFkZXIoKSBvdmVycmlkZTsKIAogICAgIFJlYWRhYmxlSlNT
dHJlYW06OlNvdXJjZSYganNTb3VyY2UoKTsKICAgICBKU0M6OkpTVmFsdWUganNDb250cm9sbGVy
KEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QqKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>