<?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>181106</bug_id>
          
          <creation_ts>2017-12-21 15:12:21 -0800</creation_ts>
          <short_desc>[Curl] Move FormData related tasks into new CurlFormDataStream class.</short_desc>
          <delta_ts>2018-01-09 13:16:45 -0800</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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>117300</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>achristensen</cc>
    
    <cc>basuke</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1384292</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-12-21 15:12:21 -0800</bug_when>
    <thetext>FormData related tasks are located in several files and are poorly maintained. Move them into new CurlFormDataStream class to keep maintained well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387015</commentid>
    <comment_count>1</comment_count>
      <attachid>330762</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-01-08 17:25:17 -0800</bug_when>
    <thetext>Created attachment 330762
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387381</commentid>
    <comment_count>2</comment_count>
      <attachid>330762</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-09 13:15:36 -0800</bug_when>
    <thetext>Comment on attachment 330762
patch

Clearing flags on attachment: 330762

Committed r226656: &lt;https://trac.webkit.org/changeset/226656&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387382</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-09 13:15:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387383</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-09 13:16:45 -0800</bug_when>
    <thetext>&lt;rdar://problem/36383805&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330762</attachid>
            <date>2018-01-08 17:25:17 -0800</date>
            <delta_ts>2018-01-09 13:15:36 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-181106.diff</filename>
            <type>text/plain</type>
            <size>23494</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiY2M4ZDE2MWYzOS4uNzk4Nzg0NTdkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxOC0wMS0wOCAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIE1vdmUgRm9ybURhdGEgcmVsYXRlZCB0YXNrcyBpbnRv
IG5ldyBDdXJsRm9ybURhdGFTdHJlYW0gY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODExMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBiZWhhdmlvciBj
aGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9DdXJsLmNtYWtlOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxGb3JtRGF0YVN0cmVhbTo6Q3VybEZvcm1EYXRhU3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxGb3JtRGF0YVN0cmVhbTo6fkN1cmxGb3JtRGF0YVN0cmVhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsRm9ybURhdGFTdHJlYW06OmNsZWFuKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1cmxGb3JtRGF0YVN0cmVhbTo6c2hvdWxkVXNlQ2h1bmtUcmFuc2Zlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsRm9ybURhdGFTdHJlYW06OnRvdGFsU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsRm9ybURhdGFTdHJlYW06OmNvbXB1dGVDb250ZW50TGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsRm9ybURhdGFTdHJlYW06OnJlYWRGcm9tRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpD
dXJsRm9ybURhdGFTdHJlYW06OnJlYWRGcm9tRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Zvcm1EYXRhU3RyZWFtQ3VybC5oLgorICAgICAgICAo
V2ViQ29yZTo6Q3VybEZvcm1EYXRhU3RyZWFtOjplbGVtZW50U2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDdXJsRm9ybURhdGFTdHJlYW06OnRvdGFsUmVhZFNpemUpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
UmVxdWVzdDo6Q3VybFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6Ondp
bGxTZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6ZmluYWxpemVUcmFu
c2Zlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBQVVQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnNldHVwUE9TVCk6CisgICAgICAgIChXZWJDb3JlOjpD
dXJsUmVxdWVzdDo6c2V0dXBTZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1
cmxSZXF1ZXN0OjpzZXR1cEZvcm1EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvRm9ybURhdGFTdHJlYW1DdXJsLmNwcDogUmVtb3ZlZC4KKwogMjAxOC0wMS0wOCAgRG9uIE9s
bXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IHBsYXRm
b3JtIGNoZWNrcyBpbiBHcmFwaGljcyBDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9DdXJsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFr
ZQppbmRleCBlMmIwMTFjYjBjNC4uODc0YTM5ZTI1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vy
bC5jbWFrZQpAQCAtMTEsMTIgKzExLDEyIEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAogICAgIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURh
dGFTdHJlYW0uY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9E
TlNDdXJsLmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Gb3JtRGF0YVN0cmVhbUN1cmwu
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL011bHRpcGFydEhhbmRsZS5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFt
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODRmNWUyYjk0MmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybEZvcm1EYXRhU3RyZWFtLmNwcApAQCAtMCwwICsxLDIwNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KKyAqIENvcHlyaWdo
dCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEuY28udWs+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAo
QykgMjAwOCBDb2xsYWJvcmEgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJh
Y3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ3VybEZvcm1EYXRhU3RyZWFtLmgiCisKKyNpZiBVU0UoQ1VSTCkKKworI2lu
Y2x1ZGUgIkN1cmxDb250ZXh0LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ3VybEZvcm1EYXRhU3Ry
ZWFtOjpDdXJsRm9ybURhdGFTdHJlYW0oY29uc3QgRm9ybURhdGEqIGZvcm1EYXRhKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoIWZvcm1EYXRhIHx8IGZvcm1EYXRh
LT5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZm9ybURhdGEgPSBmb3JtRGF0
YS0+aXNvbGF0ZWRDb3B5KCk7CisKKyAgICAvLyBSZXNvbHZlIHRoZSBibG9iIGVsZW1lbnRzIHNv
IHRoZSBmb3JtRGF0YSBjYW4gY29ycmVjdGx5IHJlcG9ydCBpdCdzIHNpemUuCisgICAgbV9mb3Jt
RGF0YSA9IG1fZm9ybURhdGEtPnJlc29sdmVCbG9iUmVmZXJlbmNlcygpOworfQorCitDdXJsRm9y
bURhdGFTdHJlYW06On5DdXJsRm9ybURhdGFTdHJlYW0oKQoreworCit9CisKK3ZvaWQgQ3VybEZv
cm1EYXRhU3RyZWFtOjpjbGVhbigpCit7CisgICAgaWYgKG1fcG9zdERhdGEpCisgICAgICAgIG1f
cG9zdERhdGEgPSBudWxscHRyOworCisgICAgaWYgKG1fZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShtX2ZpbGVIYW5kbGUpOworICAgICAgICBtX2ZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIH0KK30KKworc3RkOjpvcHRpb25hbDxjb25z
dCBWZWN0b3I8Y2hhcj4mPiBDdXJsRm9ybURhdGFTdHJlYW06OmdldFBvc3REYXRhKCkKK3sKKyAg
ICBpZiAoIW1fZm9ybURhdGEpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBp
ZiAoIW1fcG9zdERhdGEpCisgICAgICAgIG1fcG9zdERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZl
Y3RvcjxjaGFyPj4obV9mb3JtRGF0YS0+ZmxhdHRlbigpKTsKKworICAgIHJldHVybiAqbV9wb3N0
RGF0YTsKK30KKworYm9vbCBDdXJsRm9ybURhdGFTdHJlYW06OnNob3VsZFVzZUNodW5rVHJhbnNm
ZXIoKQoreworICAgIGNvbXB1dGVDb250ZW50TGVuZ3RoKCk7CisKKyAgICByZXR1cm4gbV9zaG91
bGRVc2VDaHVua1RyYW5zZmVyOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgQ3VybEZvcm1EYXRh
U3RyZWFtOjp0b3RhbFNpemUoKQoreworICAgIGNvbXB1dGVDb250ZW50TGVuZ3RoKCk7CisKKyAg
ICByZXR1cm4gbV90b3RhbFNpemU7Cit9CisKK3ZvaWQgQ3VybEZvcm1EYXRhU3RyZWFtOjpjb21w
dXRlQ29udGVudExlbmd0aCgpCit7CisgICAgc3RhdGljIGF1dG8gbWF4Q3VybE9mZlQgPSBDdXJs
SGFuZGxlOjptYXhDdXJsT2ZmVCgpOworCisgICAgaWYgKCFtX2Zvcm1EYXRhIHx8IG1faXNDb250
ZW50TGVuZ3RoVXBkYXRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc0NvbnRlbnRMZW5n
dGhVcGRhdGVkID0gdHJ1ZTsKKworICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fZm9y
bURhdGEtPmVsZW1lbnRzKCkpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1E
YXRhRWxlbWVudDo6VHlwZTo6RW5jb2RlZEZpbGUpIHsKKyAgICAgICAgICAgIGxvbmcgbG9uZyBm
aWxlU2l6ZTsKKyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShlbGVtZW50
Lm1fZmlsZW5hbWUsIGZpbGVTaXplKSkgeworICAgICAgICAgICAgICAgIGlmIChmaWxlU2l6ZSA+
IG1heEN1cmxPZmZUKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZpbGUgc2l6ZSBpcyB0b28g
YmlnIGZvciBzcGVjaWZ5aW5nIGl0IHRvIGN1cmwKKyAgICAgICAgICAgICAgICAgICAgbV9zaG91
bGRVc2VDaHVua1RyYW5zZmVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBtX3RvdGFsU2l6ZSArPSBmaWxlU2l6ZTsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIG1fc2hvdWxkVXNlQ2h1bmtUcmFuc2ZlciA9IHRydWU7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgbV90b3RhbFNpemUgKz0gZWxlbWVudC5tX2RhdGEuc2l6ZSgpOwor
ICAgIH0KK30KKworc3RkOjpvcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVh
ZChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQoreworICAgIGlmICghbV9mb3JtRGF0YSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGNvbnN0IGF1dG8gdG90YWxFbGVtZW50
U2l6ZSA9IG1fZm9ybURhdGEtPmVsZW1lbnRzKCkuc2l6ZSgpOworICAgIGlmIChtX2VsZW1lbnRQ
b3NpdGlvbiA+PSB0b3RhbEVsZW1lbnRTaXplKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHNp
emVfdCB0b3RhbFJlYWRCeXRlcyA9IDA7CisKKyAgICB3aGlsZSAoKG1fZWxlbWVudFBvc2l0aW9u
IDwgdG90YWxFbGVtZW50U2l6ZSkgJiYgKHRvdGFsUmVhZEJ5dGVzIDwgc2l6ZSkpIHsKKyAgICAg
ICAgY29uc3QgYXV0byYgZWxlbWVudCA9IG1fZm9ybURhdGEtPmVsZW1lbnRzKCkuYXQobV9lbGVt
ZW50UG9zaXRpb24pOworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiByZWFkQnl0ZXM7
CisgICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gc2l6ZSAtIHRvdGFsUmVhZEJ5dGVzOworICAg
ICAgICBjaGFyKiBidWZmZXJQb3NpdGlvbiA9IGJ1ZmZlciArIHRvdGFsUmVhZEJ5dGVzOworCisg
ICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29k
ZWRGaWxlKQorICAgICAgICAgICAgcmVhZEJ5dGVzID0gcmVhZEZyb21GaWxlKGVsZW1lbnQsIGJ1
ZmZlclBvc2l0aW9uLCBidWZmZXJTaXplKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVh
ZEJ5dGVzID0gcmVhZEZyb21EYXRhKGVsZW1lbnQsIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJTaXpl
KTsKKworICAgICAgICBpZiAoIXJlYWRCeXRlcykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICAgICAgdG90YWxSZWFkQnl0ZXMgKz0gKnJlYWRCeXRlczsKKyAgICB9CisK
KyAgICBtX3RvdGFsUmVhZFNpemUgKz0gdG90YWxSZWFkQnl0ZXM7CisKKyAgICByZXR1cm4gdG90
YWxSZWFkQnl0ZXM7Cit9CisKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBDdXJsRm9ybURhdGFTdHJl
YW06OnJlYWRGcm9tRmlsZShjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQsIGNoYXIqIGJ1
ZmZlciwgc2l6ZV90IHNpemUpCit7CisgICAgaWYgKG1fZmlsZUhhbmRsZSA9PSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAgICBtX2ZpbGVIYW5kbGUgPSBGaWxl
U3lzdGVtOjpvcGVuRmlsZShlbGVtZW50Lm1fZmlsZW5hbWUsIEZpbGVTeXN0ZW06OkZpbGVPcGVu
TW9kZTo6UmVhZCk7CisKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9maWxl
SGFuZGxlKSkgeworICAgICAgICBMT0coTmV0d29yaywgIkN1cmwgLSBGYWlsZWQgd2hpbGUgdHJ5
aW5nIHRvIG9wZW4gJXMgZm9yIHVwbG9hZFxuIiwgZWxlbWVudC5tX2ZpbGVuYW1lLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICBtX2ZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAg
IGF1dG8gcmVhZEJ5dGVzID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKG1fZmlsZUhhbmRsZSwg
YnVmZmVyLCBzaXplKTsKKyAgICBpZiAocmVhZEJ5dGVzIDwgMCkgeworICAgICAgICBMT0coTmV0
d29yaywgIkN1cmwgLSBGYWlsZWQgd2hpbGUgdHJ5aW5nIHRvIHJlYWQgJXMgZm9yIHVwbG9hZFxu
IiwgZWxlbWVudC5tX2ZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUobV9maWxlSGFuZGxlKTsKKyAgICAgICAgbV9maWxlSGFuZGxlID0gRmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICB9CisKKyAgICBpZiAoIXJlYWRCeXRlcykgeworICAgICAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUobV9maWxlSGFuZGxlKTsKKyAgICAgICAgbV9maWxlSGFuZGxlID0gRmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICAgICAgbV9lbGVtZW50UG9zaXRp
b24rKzsKKyAgICB9CisKKyAgICByZXR1cm4gcmVhZEJ5dGVzOworfQorCitzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gQ3VybEZvcm1EYXRhU3RyZWFtOjpyZWFkRnJvbURhdGEoY29uc3QgRm9ybURhdGFF
bGVtZW50JiBlbGVtZW50LCBjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQoreworICAgIHNpemVf
dCBlbGVtZW50U2l6ZSA9IGVsZW1lbnQubV9kYXRhLnNpemUoKSAtIG1fZGF0YU9mZnNldDsKKyAg
ICBjb25zdCBjaGFyKiBlbGVtZW50QnVmZmVyID0gZWxlbWVudC5tX2RhdGEuZGF0YSgpICsgbV9k
YXRhT2Zmc2V0OworCisgICAgc2l6ZV90IHJlYWRCeXRlcyA9IGVsZW1lbnRTaXplID4gc2l6ZSA/
IHNpemUgOiBlbGVtZW50U2l6ZTsKKyAgICBtZW1jcHkoYnVmZmVyLCBlbGVtZW50QnVmZmVyLCBy
ZWFkQnl0ZXMpOworCisgICAgaWYgKGVsZW1lbnRTaXplID4gcmVhZEJ5dGVzKQorICAgICAgICBt
X2RhdGFPZmZzZXQgKz0gcmVhZEJ5dGVzOworICAgIGVsc2UgeworICAgICAgICBtX2RhdGFPZmZz
ZXQgPSAwOworICAgICAgICBtX2VsZW1lbnRQb3NpdGlvbisrOworICAgIH0KKworICAgIHJldHVy
biByZWFkQnl0ZXM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRm9ybURhdGFTdHJl
YW1DdXJsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1E
YXRhU3RyZWFtLmgKc2ltaWxhcml0eSBpbmRleCA1NiUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Zvcm1EYXRhU3RyZWFtQ3VybC5oCnJlbmFtZSB0byBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmgK
aW5kZXggZTFjNWE2NmUzYmYuLjY2NTMzYmNiNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRm9ybURhdGFTdHJlYW1DdXJsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oCkBAIC0y
NiwyOSArMjYsNDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxzdGRpby5oPgorI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJGb3JtRGF0YS5oIgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGb3JtRGF0YTsKLQot
Y2xhc3MgRm9ybURhdGFTdHJlYW0geworY2xhc3MgQ3VybEZvcm1EYXRhU3RyZWFtIHsKIHB1Ymxp
YzoKLSAgICBGb3JtRGF0YVN0cmVhbSgpID0gZGVmYXVsdDsKLSAgICB+Rm9ybURhdGFTdHJlYW0o
KTsKKyAgICBDdXJsRm9ybURhdGFTdHJlYW0oY29uc3QgRm9ybURhdGEqKTsKKyAgICB+Q3VybEZv
cm1EYXRhU3RyZWFtKCk7CisKKyAgICB2b2lkIGNsZWFuKCk7CisKKyAgICBzaXplX3QgZWxlbWVu
dFNpemUoKSB7IHJldHVybiBtX2Zvcm1EYXRhID8gbV9mb3JtRGF0YS0+ZWxlbWVudHMoKS5zaXpl
KCkgOiAwOyB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPGNvbnN0IFZlY3RvcjxjaGFyPiY+IGdldFBv
c3REYXRhKCk7CisgICAgYm9vbCBzaG91bGRVc2VDaHVua1RyYW5zZmVyKCk7CisgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsU2l6ZSgpOwogCi0gICAgdm9pZCBzZXRIVFRQQm9keShGb3JtRGF0
YSogZm9ybURhdGEpIHsgbV9mb3JtRGF0YSA9IGZvcm1EYXRhOyB9Ci0gICAgc2l6ZV90IHJlYWQo
dm9pZCogcHRyLCBzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgbnVtYmVyT2ZCbG9ja3MpOwotICAg
IGJvb2wgaGFzTW9yZUVsZW1lbnRzKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IHJlYWQoY2hhciosIHNpemVfdCk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsUmVhZFNp
emUoKSB7IHJldHVybiBtX3RvdGFsUmVhZFNpemU7IH0KIAogcHJpdmF0ZToKLSAgICAvLyBXZSBj
YW4gaG9sZCBhIHdlYWsgcmVmZXJlbmNlIHRvIG91ciBSZXNvdXJjZVJlcXVlc3QgYXMgaXQgaG9s
ZHMgYSBzdHJvbmcgcmVmZXJlbmNlCi0gICAgLy8gdG8gdXMgdGhyb3VnaCBpdHMgb3duZXIuCi0g
ICAgRm9ybURhdGEqIG1fZm9ybURhdGEgeyB9OworICAgIHZvaWQgY29tcHV0ZUNvbnRlbnRMZW5n
dGgoKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiByZWFkRnJvbUZpbGUoY29uc3QgRm9y
bURhdGFFbGVtZW50JiwgY2hhciosIHNpemVfdCk7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IHJlYWRGcm9tRGF0YShjb25zdCBGb3JtRGF0YUVsZW1lbnQmLCBjaGFyKiwgc2l6ZV90KTsKKwor
ICAgIFJlZlB0cjxGb3JtRGF0YT4gbV9mb3JtRGF0YTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8Y2hhcj4+IG1fcG9zdERhdGE7CisgICAgYm9vbCBtX2lzQ29udGVudExlbmd0aFVwZGF0
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9zaG91bGRVc2VDaHVua1RyYW5zZmVyIHsgZmFsc2Ug
fTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV90b3RhbFNpemUgeyAwIH07CisgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIG1fdG90YWxSZWFkU2l6ZSB7IDAgfTsKKworICAgIHNpemVfdCBtX2VsZW1l
bnRQb3NpdGlvbiB7IDAgfTsKIAotICAgIEZJTEUqIG1fZmlsZSB7IH07Ci0gICAgc2l6ZV90IG1f
Zm9ybURhdGFFbGVtZW50SW5kZXggeyAwIH07Ci0gICAgc2l6ZV90IG1fZm9ybURhdGFFbGVtZW50
RGF0YU9mZnNldCB7IDAgfTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9m
aWxlSGFuZGxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OworICAg
IHNpemVfdCBtX2RhdGFPZmZzZXQgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcAppbmRleCBjMDNiMGMyZDZhNi4uOThlZDEzNTFiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNDAs
MTEgKzQwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEN1cmxSZXF1ZXN0OjpDdXJsUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQqIGNsaWVu
dCwgYm9vbCBzaG91bGRTdXNwZW5kKQogICAgIDogbV9yZXF1ZXN0KHJlcXVlc3QuaXNvbGF0ZWRD
b3B5KCkpCiAgICAgLCBtX3Nob3VsZFN1c3BlbmQoc2hvdWxkU3VzcGVuZCkKKyAgICAsIG1fZm9y
bURhdGFTdHJlYW0obV9yZXF1ZXN0Lmh0dHBCb2R5KCkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgIHNldENsaWVudChjbGllbnQpOwotICAgIHJlc29sdmVCbG9iUmVmZXJl
bmNlcyhtX3JlcXVlc3QpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpzZXRVc2VyUGFzcyhjb25z
dCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCkBAIC0yMzUsMjQgKzIzNSwy
NiBAQCBDVVJMY29kZSBDdXJsUmVxdWVzdDo6d2lsbFNldHVwU3NsQ3R4KHZvaWQqIHNzbEN0eCkK
IC8vIEl0ZXJhdGUgdGhyb3VnaCBGb3JtRGF0YSBlbGVtZW50cyBhbmQgdXBsb2FkIGZpbGVzLgog
Ly8gQ2FyZWZ1bGx5IHJlc3BlY3QgdGhlIGdpdmVuIGJ1ZmZlciBzaXplIGFuZCBmaWxsIHRoZSBy
ZXN0IG9mIHRoZSBkYXRhIGF0IHRoZSBuZXh0IGNhbGxzLgogCi1zaXplX3QgQ3VybFJlcXVlc3Q6
OndpbGxTZW5kRGF0YShjaGFyKiBwdHIsIHNpemVfdCBibG9ja1NpemUsIHNpemVfdCBudW1iZXJP
ZkJsb2NrcykKK3NpemVfdCBDdXJsUmVxdWVzdDo6d2lsbFNlbmREYXRhKGNoYXIqIGJ1ZmZlciwg
c2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IG51bWJlck9mQmxvY2tzKQogewogICAgIGlmIChpc0Nv
bXBsZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybiBDVVJMX1JFQURGVU5DX0FCT1JU
OwogCiAgICAgaWYgKCFibG9ja1NpemUgfHwgIW51bWJlck9mQmxvY2tzKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIENVUkxfUkVBREZVTkNfQUJPUlQ7CiAKLSAgICBpZiAoIW1f
Zm9ybURhdGFTdHJlYW0gfHwgIW1fZm9ybURhdGFTdHJlYW0tPmhhc01vcmVFbGVtZW50cygpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAvLyBDaGVjayBmb3Igb3ZlcmZsb3cuCisgICAgaWYgKGJs
b2NrU2l6ZSA+IChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gbnVtYmVyT2ZC
bG9ja3MpKQorICAgICAgICByZXR1cm4gQ1VSTF9SRUFERlVOQ19BQk9SVDsKIAotICAgIGF1dG8g
c2VuZEJ5dGVzID0gbV9mb3JtRGF0YVN0cmVhbS0+cmVhZChwdHIsIGJsb2NrU2l6ZSwgbnVtYmVy
T2ZCbG9ja3MpOworICAgIHNpemVfdCBidWZmZXJTaXplID0gYmxvY2tTaXplICogbnVtYmVyT2ZC
bG9ja3M7CisgICAgYXV0byBzZW5kQnl0ZXMgPSBtX2Zvcm1EYXRhU3RyZWFtLnJlYWQoYnVmZmVy
LCBidWZmZXJTaXplKTsKICAgICBpZiAoIXNlbmRCeXRlcykgewogICAgICAgICAvLyBTb21ldGhp
bmcgd2VudCB3cm9uZyBzbyBlcnJvciB0aGUgam9iLgogICAgICAgICByZXR1cm4gQ1VSTF9SRUFE
RlVOQ19BQk9SVDsKICAgICB9CiAKLSAgICByZXR1cm4gc2VuZEJ5dGVzOworICAgIHJldHVybiAq
c2VuZEJ5dGVzOwogfQogCiAvLyBUaGlzIGlzIGJlaW5nIGNhbGxlZCBmb3IgZWFjaCBIVFRQIGhl
YWRlciBpbiB0aGUgcmVzcG9uc2UuIFRoaXMgaW5jbHVkZXMgJ1xyXG4nCkBAIC0zOTQsMjQgKzM5
NiwxMSBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRDYW5jZWxUcmFuc2ZlcigpCiAKIHZvaWQgQ3Vy
bFJlcXVlc3Q6OmZpbmFsaXplVHJhbnNmZXIoKQogewotICAgIG1fZm9ybURhdGFTdHJlYW0gPSBu
dWxscHRyOwogICAgIGNsb3NlRG93bmxvYWRGaWxlKCk7CisgICAgbV9mb3JtRGF0YVN0cmVhbS5j
bGVhbigpOwogICAgIG1fY3VybEhhbmRsZSA9IG51bGxwdHI7CiB9CiAKLXZvaWQgQ3VybFJlcXVl
c3Q6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIGF1dG8gYm9keSA9IHJlcXVlc3QuaHR0
cEJvZHkoKTsKLSAgICBpZiAoIWJvZHkgfHwgYm9keS0+aXNFbXB0eSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBSZXNvbHZlIHRoZSBibG9iIGVsZW1lbnRzIHNvIHRoZSBmb3JtRGF0YSBj
YW4gY29ycmVjdGx5IHJlcG9ydCBpdCdzIHNpemUuCi0gICAgUmVmUHRyPEZvcm1EYXRhPiBmb3Jt
RGF0YSA9IGJvZHktPnJlc29sdmVCbG9iUmVmZXJlbmNlcygpOwotICAgIHJlcXVlc3Quc2V0SFRU
UEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwotfQotCiB2b2lkIEN1cmxSZXF1ZXN0OjpzZXR1cFBV
VChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgbV9jdXJsSGFuZGxlLT5lbmFibGVI
dHRwUHV0UmVxdWVzdCgpOwpAQCAtNDE5LDc0ICs0MDgsNDIgQEAgdm9pZCBDdXJsUmVxdWVzdDo6
c2V0dXBQVVQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIC8vIERpc2FibGUgdGhlIEV4
cGVjdDogMTAwIGNvbnRpbnVlIGhlYWRlcgogICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVz
dEhlYWRlcigiRXhwZWN0Iik7CiAKLSAgICBhdXRvIGJvZHkgPSByZXF1ZXN0Lmh0dHBCb2R5KCk7
Ci0gICAgaWYgKCFib2R5IHx8IGJvZHktPmlzRW1wdHkoKSkKKyAgICBhdXRvIGVsZW1lbnRTaXpl
ID0gbV9mb3JtRGF0YVN0cmVhbS5lbGVtZW50U2l6ZSgpOworICAgIGlmICghZWxlbWVudFNpemUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHNldHVwRm9ybURhdGEocmVxdWVzdCwgZmFsc2UpOwor
ICAgIHNldHVwU2VuZERhdGEodHJ1ZSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUE9T
VChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgbV9jdXJsSGFuZGxlLT5lbmFibGVI
dHRwUG9zdFJlcXVlc3QoKTsKIAotICAgIGF1dG8gYm9keSA9IHJlcXVlc3QuaHR0cEJvZHkoKTsK
LSAgICBpZiAoIWJvZHkgfHwgYm9keS0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdXRvIG51bUVsZW1lbnRzID0gYm9keS0+ZWxlbWVudHMoKS5zaXplKCk7Ci0gICAgaWYgKCFu
dW1FbGVtZW50cykKKyAgICBhdXRvIGVsZW1lbnRTaXplID0gbV9mb3JtRGF0YVN0cmVhbS5lbGVt
ZW50U2l6ZSgpOworICAgIGlmICghZWxlbWVudFNpemUpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIERvIG5vdCBzdHJlYW0gZm9yIHNpbXBsZSBQT1NUIGRhdGEKLSAgICBpZiAobnVtRWxlbWVu
dHMgPT0gMSkgewotICAgICAgICBtX3Bvc3RCdWZmZXIgPSBib2R5LT5mbGF0dGVuKCk7Ci0gICAg
ICAgIGlmIChtX3Bvc3RCdWZmZXIuc2l6ZSgpKQotICAgICAgICAgICAgbV9jdXJsSGFuZGxlLT5z
ZXRQb3N0RmllbGRzKG1fcG9zdEJ1ZmZlci5kYXRhKCksIG1fcG9zdEJ1ZmZlci5zaXplKCkpOwor
ICAgIGlmIChlbGVtZW50U2l6ZSA9PSAxKSB7CisgICAgICAgIGF1dG8gcG9zdERhdGEgPSBtX2Zv
cm1EYXRhU3RyZWFtLmdldFBvc3REYXRhKCk7CisgICAgICAgIGlmIChwb3N0RGF0YSAmJiBwb3N0
RGF0YS0+c2l6ZSgpKQorICAgICAgICAgICAgbV9jdXJsSGFuZGxlLT5zZXRQb3N0RmllbGRzKHBv
c3REYXRhLT5kYXRhKCksIHBvc3REYXRhLT5zaXplKCkpOwogICAgIH0gZWxzZQotICAgICAgICBz
ZXR1cEZvcm1EYXRhKHJlcXVlc3QsIHRydWUpOwotfQotCi12b2lkIEN1cmxSZXF1ZXN0OjpzZXR1
cEZvcm1EYXRhKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBpc1Bvc3RSZXF1ZXN0KQot
ewotICAgIHN0YXRpYyBhdXRvIG1heEN1cmxPZmZUID0gQ3VybEhhbmRsZTo6bWF4Q3VybE9mZlQo
KTsKLQotICAgIC8vIE9idGFpbiB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgZm9ybSBkYXRhCi0gICAg
Y3VybF9vZmZfdCBzaXplID0gMDsKLSAgICBib29sIGNodW5rZWRUcmFuc2ZlciA9IGZhbHNlOwot
ICAgIGF1dG8gZWxlbWVudHMgPSByZXF1ZXN0Lmh0dHBCb2R5KCktPmVsZW1lbnRzKCk7Ci0KLSAg
ICBmb3IgKGF1dG8gZWxlbWVudCA6IGVsZW1lbnRzKSB7Ci0gICAgICAgIGlmIChlbGVtZW50Lm1f
dHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29kZWRGaWxlKSB7Ci0gICAgICAgICAg
ICBsb25nIGxvbmcgZmlsZVNpemVSZXN1bHQ7Ci0gICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6
Z2V0RmlsZVNpemUoZWxlbWVudC5tX2ZpbGVuYW1lLCBmaWxlU2l6ZVJlc3VsdCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoZmlsZVNpemVSZXN1bHQgPiBtYXhDdXJsT2ZmVCkgewotICAgICAgICAg
ICAgICAgICAgICAvLyBGaWxlIHNpemUgaXMgdG9vIGJpZyBmb3Igc3BlY2lmeWluZyBpdCB0byBj
VVJMCi0gICAgICAgICAgICAgICAgICAgIGNodW5rZWRUcmFuc2ZlciA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBz
aXplICs9IGZpbGVTaXplUmVzdWx0OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBjaHVua2VkVHJhbnNmZXIgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNpemUgKz0gZWxlbWVudC5t
X2RhdGEuc2l6ZSgpOwotICAgIH0KKyAgICAgICAgc2V0dXBTZW5kRGF0YShmYWxzZSk7Cit9CiAK
LSAgICAvLyBjVVJMIGd1ZXNzZXMgdGhhdCB3ZSB3YW50IGNodW5rZWQgZW5jb2RpbmcgYXMgbG9u
ZyBhcyB3ZSBzcGVjaWZ5IHRoZSBoZWFkZXIKLSAgICBpZiAoY2h1bmtlZFRyYW5zZmVyKQordm9p
ZCBDdXJsUmVxdWVzdDo6c2V0dXBTZW5kRGF0YShib29sIGZvclB1dE1ldGhvZCkKK3sKKyAgICAv
LyBjdXJsIGd1ZXNzZXMgdGhhdCB3ZSB3YW50IGNodW5rZWQgZW5jb2RpbmcgYXMgbG9uZyBhcyB3
ZSBzcGVjaWZ5IHRoZSBoZWFkZXIKKyAgICBpZiAobV9mb3JtRGF0YVN0cmVhbS5zaG91bGRVc2VD
aHVua1RyYW5zZmVyKCkpCiAgICAgICAgIG1fY3VybEhhbmRsZS0+YXBwZW5kUmVxdWVzdEhlYWRl
cigiVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWQiKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYg
KGlzUG9zdFJlcXVlc3QpCi0gICAgICAgICAgICBtX2N1cmxIYW5kbGUtPnNldFBvc3RGaWVsZExh
cmdlKHNpemUpOworICAgICAgICBpZiAoZm9yUHV0TWV0aG9kKQorICAgICAgICAgICAgbV9jdXJs
SGFuZGxlLT5zZXRJbkZpbGVTaXplTGFyZ2Uoc3RhdGljX2Nhc3Q8Y3VybF9vZmZfdD4obV9mb3Jt
RGF0YVN0cmVhbS50b3RhbFNpemUoKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2N1
cmxIYW5kbGUtPnNldEluRmlsZVNpemVMYXJnZShzaXplKTsKKyAgICAgICAgICAgIG1fY3VybEhh
bmRsZS0+c2V0UG9zdEZpZWxkTGFyZ2Uoc3RhdGljX2Nhc3Q8Y3VybF9vZmZfdD4obV9mb3JtRGF0
YVN0cmVhbS50b3RhbFNpemUoKSkpOwogICAgIH0KIAotICAgIG1fZm9ybURhdGFTdHJlYW0gPSBz
dGQ6Om1ha2VfdW5pcXVlPEZvcm1EYXRhU3RyZWFtPigpOwotICAgIG1fZm9ybURhdGFTdHJlYW0t
PnNldEhUVFBCb2R5KHJlcXVlc3QuaHR0cEJvZHkoKSk7Ci0KICAgICBtX2N1cmxIYW5kbGUtPnNl
dFJlYWRDYWxsYmFja0Z1bmN0aW9uKHdpbGxTZW5kRGF0YUNhbGxiYWNrLCB0aGlzKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
aAppbmRleCAzNTI1OTZhMDA3Zi4uZWEzNGZhZTYxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC0yNSwxMSArMjUsMTEg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDdXJsRm9ybURhdGFTdHJlYW0uaCIKICNp
bmNsdWRlICJDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudC5oIgogI2luY2x1ZGUgIkN1cmxSZXNw
b25zZS5oIgogI2luY2x1ZGUgIkN1cmxTU0xWZXJpZmllci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKLSNpbmNsdWRlICJGb3JtRGF0YVN0cmVhbUN1cmwuaCIKICNpbmNsdWRlICJOZXR3b3Jr
TG9hZE1ldHJpY3MuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KQEAgLTEwNCwxMCArMTA0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGZpbmFsaXplVHJhbnNmZXIoKTsKIAogICAgIC8vIEZvciBQT1NUIGFuZCBQVVQgbWV0aG9kIAot
ICAgIHZvaWQgcmVzb2x2ZUJsb2JSZWZlcmVuY2VzKFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZv
aWQgc2V0dXBQT1NUKFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgc2V0dXBQVVQoUmVzb3Vy
Y2VSZXF1ZXN0Jik7Ci0gICAgdm9pZCBzZXR1cEZvcm1EYXRhKFJlc291cmNlUmVxdWVzdCYsIGJv
b2wpOworICAgIHZvaWQgc2V0dXBTZW5kRGF0YShib29sIGZvclB1dE1ldGhvZCk7CiAKICAgICAv
LyBQcm9jZXNzaW5nIGZvciBEaWRSZWNlaXZlUmVzcG9uc2UKICAgICBib29sIG5lZWRUb0ludm9r
ZURpZFJlY2VpdmVSZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuICFtX2RpZE5vdGlmeVJlc3BvbnNl
IHx8ICFtX2RpZFJldHVybkZyb21Ob3RpZnk7IH0KQEAgLTE0Miw4ICsxNDEsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kIHsgZmFsc2UgfTsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxDdXJsSGFuZGxlPiBtX2N1cmxIYW5kbGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEZvcm1E
YXRhU3RyZWFtPiBtX2Zvcm1EYXRhU3RyZWFtOwotICAgIFZlY3RvcjxjaGFyPiBtX3Bvc3RCdWZm
ZXI7CisgICAgQ3VybEZvcm1EYXRhU3RyZWFtIG1fZm9ybURhdGFTdHJlYW07CiAgICAgQ3VybFNT
TFZlcmlmaWVyIG1fc3NsVmVyaWZpZXI7CiAKICAgICBDdXJsUmVzcG9uc2UgbV9yZXNwb25zZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Gb3JtRGF0
YVN0cmVhbUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Zv
cm1EYXRhU3RyZWFtQ3VybC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjOGRk
NDI2YmMwLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvRm9ybURhdGFTdHJlYW1DdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdt
YWlsLmNvbQotICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwLnRva2VyQGNvbGxh
Ym9yYS5jby51az4KLSAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlcgotICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGb3JtRGF0YVN0cmVhbUN1cmwuaCIKLQot
I2lmIFVTRShDVVJMKQotCi0jaW5jbHVkZSAiRm9ybURhdGEuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1Gb3JtRGF0YVN0cmVhbTo6fkZvcm1EYXRhU3RyZWFtKCkKLXsKLSAgICBpZiAobV9m
aWxlKQotICAgICAgICBmY2xvc2UobV9maWxlKTsKLX0KLQotc2l6ZV90IEZvcm1EYXRhU3RyZWFt
OjpyZWFkKHZvaWQqIHB0ciwgc2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IG51bWJlck9mQmxvY2tz
KQotewotICAgIC8vIENoZWNrIGZvciBvdmVyZmxvdy4KLSAgICBpZiAoIW51bWJlck9mQmxvY2tz
IHx8IGJsb2NrU2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLyBudW1i
ZXJPZkJsb2NrcykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBWZWN0b3I8Rm9ybURhdGFFbGVt
ZW50PiBlbGVtZW50czsKLSAgICBpZiAobV9mb3JtRGF0YSkKLSAgICAgICAgZWxlbWVudHMgPSBt
X2Zvcm1EYXRhLT5lbGVtZW50cygpOwotCi0gICAgaWYgKG1fZm9ybURhdGFFbGVtZW50SW5kZXgg
Pj0gZWxlbWVudHMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEZvcm1EYXRhRWxl
bWVudCBlbGVtZW50ID0gZWxlbWVudHNbbV9mb3JtRGF0YUVsZW1lbnRJbmRleF07Ci0KLSAgICBz
aXplX3QgdG9TZW5kID0gYmxvY2tTaXplICogbnVtYmVyT2ZCbG9ja3M7Ci0gICAgc2l6ZV90IHNl
bnQ7Ci0KLSAgICBpZiAoZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjpUeXBlOjpF
bmNvZGVkRmlsZSkgewotICAgICAgICBpZiAoIW1fZmlsZSkKLSAgICAgICAgICAgIG1fZmlsZSA9
IGZvcGVuKGVsZW1lbnQubV9maWxlbmFtZS51dGY4KCkuZGF0YSgpLCAicmIiKTsKLQotICAgICAg
ICBpZiAoIW1fZmlsZSkgewotICAgICAgICAgICAgLy8gRklYTUU6IHNob3cgYSB1c2VyIGVycm9y
PwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgIHByaW50ZigiRmFpbGVkIHdoaWxlIHRyeWlu
ZyB0byBvcGVuICVzIGZvciB1cGxvYWRcbiIsIGVsZW1lbnQubV9maWxlbmFtZS51dGY4KCkuZGF0
YSgpKTsKLSNlbmRpZgotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAg
ICBzZW50ID0gZnJlYWQocHRyLCBibG9ja1NpemUsIG51bWJlck9mQmxvY2tzLCBtX2ZpbGUpOwot
ICAgICAgICBpZiAoIWJsb2NrU2l6ZSAmJiBmZXJyb3IobV9maWxlKSkgewotICAgICAgICAgICAg
Ly8gRklYTUU6IHNob3cgYSB1c2VyIGVycm9yPwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAg
IHByaW50ZigiRmFpbGVkIHdoaWxlIHRyeWluZyB0byByZWFkICVzIGZvciB1cGxvYWRcbiIsIGVs
ZW1lbnQubV9maWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKLSNlbmRpZgotICAgICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGZlb2YobV9maWxlKSkgewotICAgICAgICAg
ICAgZmNsb3NlKG1fZmlsZSk7Ci0gICAgICAgICAgICBtX2ZpbGUgPSAwOwotICAgICAgICAgICAg
bV9mb3JtRGF0YUVsZW1lbnRJbmRleCsrOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgc2l6ZV90IGVsZW1lbnRTaXplID0gZWxlbWVudC5tX2RhdGEuc2l6ZSgpIC0gbV9mb3JtRGF0
YUVsZW1lbnREYXRhT2Zmc2V0OwotICAgICAgICBzZW50ID0gZWxlbWVudFNpemUgPiB0b1NlbmQg
PyB0b1NlbmQgOiBlbGVtZW50U2l6ZTsKLSAgICAgICAgbWVtY3B5KHB0ciwgZWxlbWVudC5tX2Rh
dGEuZGF0YSgpICsgbV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0LCBzZW50KTsKLSAgICAgICAg
aWYgKGVsZW1lbnRTaXplID4gc2VudCkKLSAgICAgICAgICAgIG1fZm9ybURhdGFFbGVtZW50RGF0
YU9mZnNldCArPSBzZW50OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fZm9ybURhdGFF
bGVtZW50RGF0YU9mZnNldCA9IDA7Ci0gICAgICAgICAgICBtX2Zvcm1EYXRhRWxlbWVudEluZGV4
Kys7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gc2VudDsKLX0KLQotYm9vbCBGb3Jt
RGF0YVN0cmVhbTo6aGFzTW9yZUVsZW1lbnRzKCkgY29uc3QKLXsKLSAgICBWZWN0b3I8Rm9ybURh
dGFFbGVtZW50PiBlbGVtZW50czsKLSAgICBpZiAobV9mb3JtRGF0YSkKLSAgICAgICAgZWxlbWVu
dHMgPSBtX2Zvcm1EYXRhLT5lbGVtZW50cygpOwotCi0gICAgcmV0dXJuIG1fZm9ybURhdGFFbGVt
ZW50SW5kZXggPCBlbGVtZW50cy5zaXplKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>