<?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>147705</bug_id>
          
          <creation_ts>2015-08-05 16:20:24 -0700</creation_ts>
          <short_desc>Move more functions from DatabaseBackendBase to Database</short_desc>
          <delta_ts>2015-08-05 16:23:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1115167</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-08-05 16:20:24 -0700</bug_when>
    <thetext>Move more functions from DatabaseBackendBase to Database</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115168</commentid>
    <comment_count>1</comment_count>
      <attachid>258319</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-08-05 16:20:56 -0700</bug_when>
    <thetext>Created attachment 258319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115170</commentid>
    <comment_count>2</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-08-05 16:23:41 -0700</bug_when>
    <thetext>Committed r187999: &lt;http://trac.webkit.org/changeset/187999&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258319</attachid>
            <date>2015-08-05 16:20:56 -0700</date>
            <delta_ts>2015-08-05 16:23:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147705-20150805162048.patch</filename>
            <type>text/plain</type>
            <size>28780</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3OTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQ2NzcxZDI4YTNlYjRj
YmJiMjcwYWE3MDlkYTFlYjhlOGZmZWE5YS4uOWU0NmM2ZWI2OTMxMjMxNDRmNWZiY2Y1NTE1Y2Mx
ZDY4YjhhYzc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw2ICsxLDQ2IEBACisyMDE1LTA4LTA1ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBtb3JlIGZ1
bmN0aW9ucyBmcm9tIERhdGFiYXNlQmFja2VuZEJhc2UgdG8gRGF0YWJhc2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzcwNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpndWlkTXV0ZXgpOgorICAgICAgICAo
V2ViQ29yZTo6Z3VpZFRvVmVyc2lvbk1hcCk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVHdWlk
VmVyc2lvbk1hcCk6CisgICAgICAgIChXZWJDb3JlOjpndWlkVG9EYXRhYmFzZU1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpndWlkRm9yT3JpZ2luQW5kTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZTo6RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9uZUNyZWF0aW5nRGF0YWJh
c2VPbkV4aXRDYWxsZXI6OkRvbmVDcmVhdGluZ0RhdGFiYXNlT25FeGl0Q2FsbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvbmVDcmVhdGluZ0RhdGFiYXNlT25FeGl0Q2FsbGVyOjp+RG9uZUNyZWF0
aW5nRGF0YWJhc2VPbkV4aXRDYWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9uZUNyZWF0aW5n
RGF0YWJhc2VPbkV4aXRDYWxsZXI6OnNldE9wZW5TdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlOjpjbG9zZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpnZXRD
YWNoZWRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzZXRDYWNoZWRWZXJz
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZEJhc2U6OnZlcnNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Zm9ybWF0RXJyb3JNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omd1aWRN
dXRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpndWlkVG9WZXJzaW9uTWFwKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUd1aWRWZXJzaW9uTWFwKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Omd1aWRUb0RhdGFiYXNlTWFwKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Omd1aWRGb3JPcmlnaW5BbmROYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlQmFja2VuZEJhc2U6OkRhdGFiYXNlQmFja2VuZEJhc2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kQmFzZTo6Y2xvc2VEYXRhYmFzZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb25lQ3JlYXRpbmdEYXRhYmFzZU9uRXhpdENhbGxl
cjo6RG9uZUNyZWF0aW5nRGF0YWJhc2VPbkV4aXRDYWxsZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RG9uZUNyZWF0aW5nRGF0YWJhc2VPbkV4aXRDYWxsZXI6On5Eb25lQ3JlYXRpbmdE
YXRhYmFzZU9uRXhpdENhbGxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb25lQ3Jl
YXRpbmdEYXRhYmFzZU9uRXhpdENhbGxlcjo6c2V0T3BlblN1Y2NlZWRlZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlm
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRCYXNlOjpnZXRD
YWNoZWRWZXJzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2Vu
ZEJhc2U6OnNldENhY2hlZFZlcnNpb24pOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5oOgorCiAyMDE1LTA4LTA1ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBtb3JlIGZ1bmN0aW9u
cyBmcm9tIERhdGFiYXNlQmFja2VuZEJhc2UgdG8gRGF0YWJhc2UKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzcwMwogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFRpbSBIb3J0b24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuY3BwCmluZGV4IDE5MDY0Y2Q4OGY2MTc5MWE3NWU2YjkwOWI1ODJjNmMyYTcwODNh
YTIuLjYwZjU0M2Y3MmQ3YmEzMDExY2E2ZWY5ODE5MDVjMGVhM2U3ZTVmY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC00OCw5ICs0
OCwxMSBAQAogI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oIgogI2luY2x1
ZGUgIlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5o
IgorI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVm9p
ZENhbGxiYWNrLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgpAQCAtMTI1LDYgKzEyNyw2MiBAQCBzdGF0aWMgYm9vbCByZXRyaWV2
ZVRleHRSZXN1bHRGcm9tRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRiLCBjb25zdCBTdHJpbmcm
IHF1ZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorLy8gRklYTUU6IG1vdmUgYWxsIGd1aWQtcmVs
YXRlZCBmdW5jdGlvbnMgdG8gYSBEYXRhYmFzZVZlcnNpb25UcmFja2VyIGNsYXNzLgorc3RhdGlj
IHN0ZDo6bXV0ZXgmIGd1aWRNdXRleCgpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VGbGFnOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8c3RkOjptdXRleD4gbXV0ZXg7
CisKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBtdXRleC5jb25z
dHJ1Y3QoKTsKKyAgICB9KTsKKworICAgIHJldHVybiBtdXRleDsKK30KKwordHlwZWRlZiBIYXNo
TWFwPERhdGFiYXNlR3VpZCwgU3RyaW5nPiBHdWlkVmVyc2lvbk1hcDsKK3N0YXRpYyBHdWlkVmVy
c2lvbk1hcCYgZ3VpZFRvVmVyc2lvbk1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEd1aWRWZXJzaW9uTWFwPiBtYXA7CisgICAgcmV0dXJuIG1hcDsKK30KKworLy8gTk9URTogQ2Fs
bGVyIG11c3QgbG9jayBndWlkTXV0ZXgoKS4KK3N0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVHdWlk
VmVyc2lvbk1hcChEYXRhYmFzZUd1aWQgZ3VpZCwgU3RyaW5nIG5ld1ZlcnNpb24pCit7CisgICAg
Ly8gTm90ZTogSXQgaXMgbm90IHNhZmUgdG8gcHV0IGFuIGVtcHR5IHN0cmluZyBpbnRvIHRoZSBn
dWlkVG9WZXJzaW9uTWFwKCkgbWFwLgorICAgIC8vIFRoYXQncyBiZWNhdXNlIHRoZSBtYXAgaXMg
Y3Jvc3MtdGhyZWFkLCBidXQgZW1wdHkgc3RyaW5ncyBhcmUgcGVyLXRocmVhZC4KKyAgICAvLyBU
aGUgY29weSgpIGZ1bmN0aW9uIG1ha2VzIGEgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHlvdSBjYW4g
dXNlIG9uIHRoZSBjdXJyZW50CisgICAgLy8gdGhyZWFkLCBidXQgd2UgbmVlZCBhIHN0cmluZyB3
ZSBjYW4ga2VlcCBpbiBhIGNyb3NzLXRocmVhZCBkYXRhIHN0cnVjdHVyZS4KKyAgICAvLyBGSVhN
RTogVGhpcyBpcyBhIHF1aXRlLWF3a3dhcmQgcmVzdHJpY3Rpb24gdG8gaGF2ZSB0byBwcm9ncmFt
IHdpdGguCisKKyAgICAvLyBNYXAgbnVsbCBzdHJpbmcgdG8gZW1wdHkgc3RyaW5nIChzZWUgY29t
bWVudCBhYm92ZSkuCisgICAgZ3VpZFRvVmVyc2lvbk1hcCgpLnNldChndWlkLCBuZXdWZXJzaW9u
LmlzRW1wdHkoKSA/IFN0cmluZygpIDogbmV3VmVyc2lvbi5pc29sYXRlZENvcHkoKSk7Cit9CisK
K3R5cGVkZWYgSGFzaE1hcDxEYXRhYmFzZUd1aWQsIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PERh
dGFiYXNlQmFja2VuZEJhc2UqPj4+IEd1aWREYXRhYmFzZU1hcDsKKworc3RhdGljIEd1aWREYXRh
YmFzZU1hcCYgZ3VpZFRvRGF0YWJhc2VNYXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxHdWlkRGF0YWJhc2VNYXA+IG1hcDsKKyAgICByZXR1cm4gbWFwOworfQorCitzdGF0aWMgRGF0
YWJhc2VHdWlkIGd1aWRGb3JPcmlnaW5BbmROYW1lKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIG5hbWUpCit7CisgICAgU3RyaW5nIHN0cmluZ0lEID0gb3JpZ2luICsgIi8iICsg
bmFtZTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgaW50Pj4g
bWFwOworICAgIERhdGFiYXNlR3VpZCBndWlkID0gbWFwLmdldCgpLmdldChzdHJpbmdJRCk7Cisg
ICAgaWYgKCFndWlkKSB7CisgICAgICAgIHN0YXRpYyBpbnQgY3VycmVudE5ld0dVSUQgPSAxOwor
ICAgICAgICBndWlkID0gY3VycmVudE5ld0dVSUQrKzsKKyAgICAgICAgbWFwLmdldCgpLnNldChz
dHJpbmdJRCwgZ3VpZCk7CisgICAgfQorCisgICAgcmV0dXJuIGd1aWQ7Cit9CisKIERhdGFiYXNl
OjpEYXRhYmFzZShQYXNzUmVmUHRyPERhdGFiYXNlQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCiAgICAgOiBE
YXRhYmFzZUJhY2tlbmRCYXNlKGRhdGFiYXNlQ29udGV4dC5nZXQoKSwgbmFtZSwgZXhwZWN0ZWRW
ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkKICAgICAsIG1fdHJhbnNhY3Rpb25J
blByb2dyZXNzKGZhbHNlKQpAQCAtMTMzLDYgKzE5MSwyNSBAQCBEYXRhYmFzZTo6RGF0YWJhc2Uo
UGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYQogICAgICwgbV9kYXRhYmFzZUNvbnRleHQoZGF0YWJhc2VDb250ZXh0KQogICAgICwgbV9k
ZWxldGVkKGZhbHNlKQogeworICAgIG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luID0gbV9k
YXRhYmFzZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmlzb2xhdGVkQ29weSgpOworCisgICAg
bV9kYXRhYmFzZUF1dGhvcml6ZXIgPSBEYXRhYmFzZUF1dGhvcml6ZXI6OmNyZWF0ZSh1bnF1YWxp
ZmllZEluZm9UYWJsZU5hbWUpOworCisgICAgaWYgKG1fbmFtZS5pc051bGwoKSkKKyAgICAgICAg
bV9uYW1lID0gZW1wdHlTdHJpbmcoKTsKKworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJk
PHN0ZDo6bXV0ZXg+IGxvY2tlcihndWlkTXV0ZXgoKSk7CisKKyAgICAgICAgbV9ndWlkID0gZ3Vp
ZEZvck9yaWdpbkFuZE5hbWUoc2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbmFtZSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PERhdGFiYXNlQmFja2VuZEJhc2UqPj4mIGhh
c2hTZXQgPSBndWlkVG9EYXRhYmFzZU1hcCgpLmFkZChtX2d1aWQsIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICAgICAgaWYgKCFoYXNoU2V0KQorICAgICAgICAgICAgaGFzaFNldCA9IHN0
ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxEYXRhYmFzZUJhY2tlbmRCYXNlKj4+KCk7CisgICAgICAg
IGhhc2hTZXQtPmFkZCh0aGlzKTsKKyAgICB9CisKKyAgICBtX2ZpbGVuYW1lID0gRGF0YWJhc2VN
YW5hZ2VyOjpzaW5nbGV0b24oKS5mdWxsUGF0aEZvckRhdGFiYXNlKHNlY3VyaXR5T3JpZ2luKCks
IG1fbmFtZSk7CisKICAgICBtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4gPSBtX2NvbnRl
eHRUaHJlYWRTZWN1cml0eU9yaWdpbi0+aXNvbGF0ZWRDb3B5KCk7CiAgICAgc2V0RnJvbnRlbmQo
dGhpcyk7CiAKQEAgLTIwMSwxNiArMjc4LDE2MSBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZSgpCiAg
ICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnVuc2NoZWR1bGVEYXRhYmFz
ZVRhc2tzKHRoaXMpOwogfQogCi1ib29sIERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShi
b29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yJiBlcnJvciwgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpCitjbGFzcyBEb25lQ3JlYXRpbmdEYXRhYmFzZU9uRXhpdENhbGxlciB7
CitwdWJsaWM6CisgICAgRG9uZUNyZWF0aW5nRGF0YWJhc2VPbkV4aXRDYWxsZXIoRGF0YWJhc2VC
YWNrZW5kQmFzZSogZGF0YWJhc2UpCisgICAgICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkKKyAg
ICAgICAgLCBtX29wZW5TdWNjZWVkZWQoZmFsc2UpCisgICAgeworICAgIH0KKyAgICB+RG9uZUNy
ZWF0aW5nRGF0YWJhc2VPbkV4aXRDYWxsZXIoKQorICAgIHsKKyAgICAgICAgRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkuZG9uZUNyZWF0aW5nRGF0YWJhc2Uoc3RhdGljX2Nhc3Q8RGF0YWJhc2Uq
PihtX2RhdGFiYXNlKSk7CisgICAgfQorCisgICAgdm9pZCBzZXRPcGVuU3VjY2VlZGVkKCkgeyBt
X29wZW5TdWNjZWVkZWQgPSB0cnVlOyB9CisKK3ByaXZhdGU6CisgICAgRGF0YWJhc2VCYWNrZW5k
QmFzZSogbV9kYXRhYmFzZTsKKyAgICBib29sIG1fb3BlblN1Y2NlZWRlZDsKK307CisKK2Jvb2wg
RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2hvdWxkU2V0VmVyc2lvbkluTmV3
RGF0YWJhc2UsIERhdGFiYXNlRXJyb3ImIGVycm9yLCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsK
LSAgICBpZiAoRGF0YWJhc2VCYWNrZW5kQmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoc2V0VmVy
c2lvbkluTmV3RGF0YWJhc2UsIGVycm9yLCBlcnJvck1lc3NhZ2UpKSB7Ci0gICAgICAgIGlmIChk
YXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSkKLSAgICAgICAgICAgIGRhdGFiYXNl
Q29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5yZWNvcmREYXRhYmFzZU9wZW4odGhpcyk7Cisg
ICAgRG9uZUNyZWF0aW5nRGF0YWJhc2VPbkV4aXRDYWxsZXIgb25FeGl0Q2FsbGVyKHRoaXMpOwor
ICAgIEFTU0VSVChlcnJvck1lc3NhZ2UuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoZXJyb3IgPT0g
RGF0YWJhc2VFcnJvcjo6Tm9uZSk7IC8vIEJldHRlciBub3QgaGF2ZSBhbnkgZXJyb3JzIGFscmVh
ZHkuCisgICAgZXJyb3IgPSBEYXRhYmFzZUVycm9yOjpJbnZhbGlkRGF0YWJhc2VTdGF0ZTsgLy8g
UHJlc3VtZWQgZmFpbHVyZS4gV2UnbGwgY2xlYXIgaXQgaWYgd2Ugc3VjY2VlZCBiZWxvdy4KIAot
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjb25zdCBpbnQgbWF4U3FsaXRlQnVzeVdhaXRUaW1l
ID0gMzAwMDA7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgeworICAgICAgICAvLyBNYWtlIHN1
cmUgd2Ugd2FpdCB0aWxsIHRoZSBiYWNrZ3JvdW5kIHJlbW92YWwgb2YgdGhlIGVtcHR5IGRhdGFi
YXNlIGZpbGVzIGZpbmlzaGVkIGJlZm9yZSB0cnlpbmcgdG8gb3BlbiBhbnkgZGF0YWJhc2UuCisg
ICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoRGF0YWJhc2VUcmFja2VyOjpvcGVu
RGF0YWJhc2VNdXRleCgpKTsKICAgICB9CisjZW5kaWYKIAotICAgIHJldHVybiBmYWxzZTsKKyAg
ICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50
ZXI7CisKKyAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2Uub3BlbihtX2ZpbGVuYW1lLCB0cnVlKSkg
eworICAgICAgICBlcnJvck1lc3NhZ2UgPSBmb3JtYXRFcnJvck1lc3NhZ2UoInVuYWJsZSB0byBv
cGVuIGRhdGFiYXNlIiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
aWYgKCFtX3NxbGl0ZURhdGFiYXNlLnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpKQorICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byB0dXJuIG9uIGluY3JlbWVudGFsIGF1dG8tdmFjdXVt
ICglZCAlcykiLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvcigpLCBtX3NxbGl0ZURhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKworICAgIG1fc3FsaXRlRGF0YWJhc2Uuc2V0QnVzeVRpbWVvdXQo
bWF4U3FsaXRlQnVzeVdhaXRUaW1lKTsKKworICAgIFN0cmluZyBjdXJyZW50VmVyc2lvbjsKKyAg
ICB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIoZ3VpZE11dGV4
KCkpOworCisgICAgICAgIGF1dG8gZW50cnkgPSBndWlkVG9WZXJzaW9uTWFwKCkuZmluZChtX2d1
aWQpOworICAgICAgICBpZiAoZW50cnkgIT0gZ3VpZFRvVmVyc2lvbk1hcCgpLmVuZCgpKSB7Cisg
ICAgICAgICAgICAvLyBNYXAgbnVsbCBzdHJpbmcgdG8gZW1wdHkgc3RyaW5nIChzZWUgdXBkYXRl
R3VpZFZlcnNpb25NYXAoKSkuCisgICAgICAgICAgICBjdXJyZW50VmVyc2lvbiA9IGVudHJ5LT52
YWx1ZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBlbnRyeS0+dmFsdWUuaXNvbGF0ZWRDb3B5
KCk7CisgICAgICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkN1cnJlbnQgY2FjaGVkIHZlcnNpb24g
Zm9yIGd1aWQgJWkgaXMgJXMiLCBtX2d1aWQsIGN1cnJlbnRWZXJzaW9uLmFzY2lpKCkuZGF0YSgp
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiTm8gY2Fj
aGVkIHZlcnNpb24gZm9yIGd1aWQgJWkiLCBtX2d1aWQpOworCisgICAgICAgICAgICBTUUxpdGVU
cmFuc2FjdGlvbiB0cmFuc2FjdGlvbihtX3NxbGl0ZURhdGFiYXNlKTsKKyAgICAgICAgICAgIHRy
YW5zYWN0aW9uLmJlZ2luKCk7CisgICAgICAgICAgICBpZiAoIXRyYW5zYWN0aW9uLmluUHJvZ3Jl
c3MoKSkgeworICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGZvcm1hdEVycm9yTWVzc2Fn
ZSgidW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UsIGZhaWxlZCB0byBzdGFydCB0cmFuc2FjdGlvbiIs
IG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yKCksIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICAgICAgICAgIG1fc3FsaXRlRGF0YWJhc2UuY2xvc2UoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN0
cmluZyB0YWJsZU5hbWUodW5xdWFsaWZpZWRJbmZvVGFibGVOYW1lKTsKKyAgICAgICAgICAgIGlm
ICghbV9zcWxpdGVEYXRhYmFzZS50YWJsZUV4aXN0cyh0YWJsZU5hbWUpKSB7CisgICAgICAgICAg
ICAgICAgbV9uZXcgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFi
YXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgIiArIHRhYmxlTmFtZSArICIgKGtleSBU
RVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0Us
dmFsdWUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgICAgICAgICAg
ICAgICAgICBlcnJvck1lc3NhZ2UgPSBmb3JtYXRFcnJvck1lc3NhZ2UoInVuYWJsZSB0byBvcGVu
IGRhdGFiYXNlLCBmYWlsZWQgdG8gY3JlYXRlICdpbmZvJyB0YWJsZSIsIG1fc3FsaXRlRGF0YWJh
c2UubGFzdEVycm9yKCksIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICAgICAgICAgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjaygpOworICAgICAgICAgICAgICAgICAg
ICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFtX2Zyb250
ZW5kLT5nZXRWZXJzaW9uRnJvbURhdGFiYXNlKGN1cnJlbnRWZXJzaW9uLCBmYWxzZSkpIHsKKyAg
ICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBmb3JtYXRFcnJvck1lc3NhZ2UoInVuYWJsZSB0
byBvcGVuIGRhdGFiYXNlLCBmYWlsZWQgdG8gcmVhZCBjdXJyZW50IHZlcnNpb24iLCBtX3NxbGl0
ZURhdGFiYXNlLmxhc3RFcnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
KyAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjaygpOworICAgICAgICAgICAgICAg
IG1fc3FsaXRlRGF0YWJhc2UuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50VmVyc2lvbi5sZW5ndGgo
KSkgeworICAgICAgICAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiUmV0cmlldmVkIGN1cnJlbnQg
dmVyc2lvbiAlcyBmcm9tIGRhdGFiYXNlICVzIiwgY3VycmVudFZlcnNpb24uYXNjaWkoKS5kYXRh
KCksIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgfSBl
bHNlIGlmICghbV9uZXcgfHwgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpIHsKKyAgICAg
ICAgICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNldHRpbmcgdmVyc2lvbiAlcyBpbiBkYXRhYmFz
ZSAlcyB0aGF0IHdhcyBqdXN0IGNyZWF0ZWQiLCBtX2V4cGVjdGVkVmVyc2lvbi5hc2NpaSgpLmRh
dGEoKSwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAg
ICAgaWYgKCFtX2Zyb250ZW5kLT5zZXRWZXJzaW9uSW5EYXRhYmFzZShtX2V4cGVjdGVkVmVyc2lv
biwgZmFsc2UpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGZvcm1hdEVy
cm9yTWVzc2FnZSgidW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UsIGZhaWxlZCB0byB3cml0ZSBjdXJy
ZW50IHZlcnNpb24iLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvcigpLCBtX3NxbGl0ZURhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24ucm9s
bGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9zZSgpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGN1cnJlbnRWZXJzaW9uID0gbV9leHBlY3RlZFZlcnNpb247CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB1cGRhdGVHdWlkVmVyc2lvbk1hcChtX2d1aWQsIGN1cnJlbnRW
ZXJzaW9uKTsKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uLmNvbW1pdCgpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKGN1cnJlbnRWZXJzaW9uLmlzTnVsbCgpKSB7CisgICAgICAgIExPRyhT
dG9yYWdlQVBJLCAiRGF0YWJhc2UgJXMgZG9lcyBub3QgaGF2ZSBpdHMgdmVyc2lvbiBzZXQiLCBk
YXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgY3VycmVudFZlcnNp
b24gPSAiIjsKKyAgICB9CisKKyAgICAvLyBJZiB0aGUgZXhwZWN0ZWQgdmVyc2lvbiBpc24ndCB0
aGUgZW1wdHkgc3RyaW5nLCBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCBkYXRhYmFzZSB2ZXJzaW9u
IHdlIGhhdmUgbWF0Y2hlcyB0aGF0IHZlcnNpb24uIE90aGVyd2lzZSwgc2V0IGFuIGV4Y2VwdGlv
bi4KKyAgICAvLyBJZiB0aGUgZXhwZWN0ZWQgdmVyc2lvbiBpcyB0aGUgZW1wdHkgc3RyaW5nLCB0
aGVuIHdlIGFsd2F5cyByZXR1cm4gd2l0aCB3aGF0ZXZlciB2ZXJzaW9uIG9mIHRoZSBkYXRhYmFz
ZSB3ZSBoYXZlLgorICAgIGlmICgoIW1fbmV3IHx8IHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFi
YXNlKSAmJiBtX2V4cGVjdGVkVmVyc2lvbi5sZW5ndGgoKSAmJiBtX2V4cGVjdGVkVmVyc2lvbiAh
PSBjdXJyZW50VmVyc2lvbikgeworICAgICAgICBlcnJvck1lc3NhZ2UgPSAidW5hYmxlIHRvIG9w
ZW4gZGF0YWJhc2UsIHZlcnNpb24gbWlzbWF0Y2gsICciICsgbV9leHBlY3RlZFZlcnNpb24gKyAi
JyBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudFZlcnNpb24gb2YgJyIgKyBjdXJyZW50VmVyc2lv
biArICInIjsKKyAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9zZSgpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgQVNTRVJUKG1fZGF0YWJhc2VBdXRob3JpemVyKTsKKyAg
ICBtX3NxbGl0ZURhdGFiYXNlLnNldEF1dGhvcml6ZXIobV9kYXRhYmFzZUF1dGhvcml6ZXIpOwor
CisgICAgLy8gU2VlIGNvbW1lbnQgYXQgdGhlIHRvcCB0aGlzIGZpbGUgcmVnYXJkaW5nIGNhbGxp
bmcgYWRkT3BlbkRhdGFiYXNlKCkuCisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuYWRk
T3BlbkRhdGFiYXNlKHN0YXRpY19jYXN0PERhdGFiYXNlKj4odGhpcykpOworICAgIG1fb3BlbmVk
ID0gdHJ1ZTsKKworICAgIC8vIERlY2xhcmUgc3VjY2VzczoKKyAgICBlcnJvciA9IERhdGFiYXNl
RXJyb3I6Ok5vbmU7IC8vIENsZWFyIHRoZSBwcmVzdW1lZCBlcnJvciBmcm9tIGFib3ZlLgorICAg
IG9uRXhpdENhbGxlci5zZXRPcGVuU3VjY2VlZGVkKCk7CisKKyAgICBpZiAobV9uZXcgJiYgIXNo
b3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXNlKQorICAgICAgICBtX2V4cGVjdGVkVmVyc2lvbiA9
ICIiOyAvLyBUaGUgY2FsbGVyIHByb3ZpZGVkIGEgY3JlYXRpb25DYWxsYmFjayB3aGljaCB3aWxs
IHNldCB0aGUgZXhwZWN0ZWQgdmVyc2lvbi4KKworICAgIGlmIChkYXRhYmFzZUNvbnRleHQoKS0+
ZGF0YWJhc2VUaHJlYWQoKSkKKyAgICAgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhy
ZWFkKCktPnJlY29yZERhdGFiYXNlT3Blbih0aGlzKTsKKworICAgIHJldHVybiB0cnVlOworfQor
Cit2b2lkIERhdGFiYXNlOjpjbG9zZURhdGFiYXNlKCkKK3sKKyAgICBpZiAoIW1fb3BlbmVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CisgICAgbV9v
cGVuZWQgPSBmYWxzZTsKKyAgICAvLyBTZWUgY29tbWVudCBhdCB0aGUgdG9wIHRoaXMgZmlsZSBy
ZWdhcmRpbmcgY2FsbGluZyByZW1vdmVPcGVuRGF0YWJhc2UoKS4KKyAgICBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UodGhpcyk7CisgICAgeworICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKGd1aWRNdXRleCgpKTsKKworICAgICAg
ICBhdXRvIGl0ID0gZ3VpZFRvRGF0YWJhc2VNYXAoKS5maW5kKG1fZ3VpZCk7CisgICAgICAgIEFT
U0VSVChpdCAhPSBndWlkVG9EYXRhYmFzZU1hcCgpLmVuZCgpKTsKKyAgICAgICAgQVNTRVJUKGl0
LT52YWx1ZSk7CisgICAgICAgIEFTU0VSVChpdC0+dmFsdWUtPmNvbnRhaW5zKHRoaXMpKTsKKyAg
ICAgICAgaXQtPnZhbHVlLT5yZW1vdmUodGhpcyk7CisgICAgICAgIGlmIChpdC0+dmFsdWUtPmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgZ3VpZFRvRGF0YWJhc2VNYXAoKS5yZW1vdmUoaXQpOwor
ICAgICAgICAgICAgZ3VpZFRvVmVyc2lvbk1hcCgpLnJlbW92ZShtX2d1aWQpOworICAgICAgICB9
CisgICAgfQogfQogCiBib29sIERhdGFiYXNlOjpnZXRWZXJzaW9uRnJvbURhdGFiYXNlKFN0cmlu
ZyYgdmVyc2lvbiwgYm9vbCBzaG91bGRDYWNoZVZlcnNpb24pCkBAIC0yNTEsNiArNDczLDIxIEBA
IGJvb2wgRGF0YWJhc2U6OnNldFZlcnNpb25JbkRhdGFiYXNlKGNvbnN0IFN0cmluZyYgdmVyc2lv
biwgYm9vbCBzaG91bGRDYWNoZVZlcnNpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorU3RyaW5n
IERhdGFiYXNlOjpnZXRDYWNoZWRWZXJzaW9uKCkgY29uc3QKK3sKKyAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8c3RkOjptdXRleD4gbG9ja2VyKGd1aWRNdXRleCgpKTsKKworICAgIHJldHVybiBndWlkVG9W
ZXJzaW9uTWFwKCkuZ2V0KG1fZ3VpZCkuaXNvbGF0ZWRDb3B5KCk7Cit9CisKK3ZvaWQgRGF0YWJh
c2U6OnNldENhY2hlZFZlcnNpb24oY29uc3QgU3RyaW5nJiBhY3R1YWxWZXJzaW9uKQoreworICAg
IC8vIFVwZGF0ZSB0aGUgaW4gbWVtb3J5IGRhdGFiYXNlIHZlcnNpb24gbWFwLgorICAgIHN0ZDo6
bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIoZ3VpZE11dGV4KCkpOworCisgICAgdXBkYXRl
R3VpZFZlcnNpb25NYXAobV9ndWlkLCBhY3R1YWxWZXJzaW9uKTsKK30KKwogdm9pZCBEYXRhYmFz
ZTo6c2NoZWR1bGVUcmFuc2FjdGlvbigpCiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uSW5Q
cm9ncmVzc011dGV4LnRyeUxvY2soKSk7IC8vIExvY2tlZCBieSBjYWxsZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgKaW5kZXggYzBhNjUwMzQ2Yzdl
OGMxOWEyODIwZGNhNTE5ODExNDdlMzVhOTQ5ZC4uYTIxNDlkMjRlMmVhOTFjOTlkODQ2MGQzMTcw
OGE1NmNjYWUwOWY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2NoZWR1
bGVUcmFuc2FjdGlvbkNhbGxiYWNrKFNRTFRyYW5zYWN0aW9uKik7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgcGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0
YWJhc2VFcnJvciYsIFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICBib29sIHBlcmZvcm1PcGVu
QW5kVmVyaWZ5KGJvb2wgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIERhdGFiYXNlRXJy
b3ImLCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAgICAgVmVjdG9yPFN0cmluZz4gcGVyZm9ybUdl
dFRhYmxlTmFtZXMoKTsKIAogICAgIHZvaWQgaW5jcmVtZW50YWxWYWN1dW1JZk5lZWRlZCgpOwpA
QCAtMTA4LDggKzEwOCwxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIERhdGFiYXNlKFBhc3NS
ZWZQdHI8RGF0YWJhc2VDb250ZXh0PiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9u
ZyBlc3RpbWF0ZWRTaXplKTsKIAorICAgIHZvaWQgY2xvc2VEYXRhYmFzZSgpOworCiAgICAgYm9v
bCBnZXRWZXJzaW9uRnJvbURhdGFiYXNlKFN0cmluZyYgdmVyc2lvbiwgYm9vbCBzaG91bGRDYWNo
ZVZlcnNpb24gPSB0cnVlKTsKICAgICBib29sIHNldFZlcnNpb25JbkRhdGFiYXNlKGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgYm9vbCBzaG91bGRDYWNoZVZlcnNpb24gPSB0cnVlKTsKKyAgICBTdHJp
bmcgZ2V0Q2FjaGVkVmVyc2lvbigpY29uc3Q7CisgICAgdm9pZCBzZXRDYWNoZWRWZXJzaW9uKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBzY2hlZHVsZVRyYW5zYWN0aW9uKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5k
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFj
a2VuZEJhc2UuY3BwCmluZGV4IGE5YzUxYjM5ZDU5ZjhjYTMzNjViODBmNzJjYzA4MGIwNTg4YWZi
MTguLmFhMDFiZTJkOWE5M2YzYjMwYjMwMDdkNjE4MDM1ZjZlMDgzYmFmM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmRCYXNlLmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQu
aCIKLSNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgpAQCAtODEsNjkgKzgwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29u
c3QgY2hhciB1bnF1YWxpZmllZEluZm9UYWJsZU5hbWVbXSA9ICJfX1dlYktpdERhdGFiYXNlSW5m
b1RhYmxlX18iOwotCi1zdGF0aWMgU3RyaW5nIGZvcm1hdEVycm9yTWVzc2FnZShjb25zdCBjaGFy
KiBtZXNzYWdlLCBpbnQgc3FsaXRlRXJyb3JDb2RlLCBjb25zdCBjaGFyKiBzcWxpdGVFcnJvck1l
c3NhZ2UpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyAoJWQgJXMpIiwgbWVzc2Fn
ZSwgc3FsaXRlRXJyb3JDb2RlLCBzcWxpdGVFcnJvck1lc3NhZ2UpOwotfQotCi0vLyBGSVhNRTog
bW92ZSBhbGwgZ3VpZC1yZWxhdGVkIGZ1bmN0aW9ucyB0byBhIERhdGFiYXNlVmVyc2lvblRyYWNr
ZXIgY2xhc3MuCi1zdGF0aWMgc3RkOjptdXRleCYgZ3VpZE11dGV4KCkKLXsKLSAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxz
dGQ6Om11dGV4PiBtdXRleDsKLQotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXXsKLSAg
ICAgICAgbXV0ZXguY29uc3RydWN0KCk7Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gbXV0ZXg7Ci19
Ci0KLXR5cGVkZWYgSGFzaE1hcDxEYXRhYmFzZUd1aWQsIFN0cmluZz4gR3VpZFZlcnNpb25NYXA7
Ci1zdGF0aWMgR3VpZFZlcnNpb25NYXAmIGd1aWRUb1ZlcnNpb25NYXAoKQotewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxHdWlkVmVyc2lvbk1hcD4gbWFwOwotICAgIHJldHVybiBtYXA7Ci19
Ci0KLS8vIE5PVEU6IENhbGxlciBtdXN0IGxvY2sgZ3VpZE11dGV4KCkuCi1zdGF0aWMgaW5saW5l
IHZvaWQgdXBkYXRlR3VpZFZlcnNpb25NYXAoRGF0YWJhc2VHdWlkIGd1aWQsIFN0cmluZyBuZXdW
ZXJzaW9uKQotewotICAgIC8vIE5vdGU6IEl0IGlzIG5vdCBzYWZlIHRvIHB1dCBhbiBlbXB0eSBz
dHJpbmcgaW50byB0aGUgZ3VpZFRvVmVyc2lvbk1hcCgpIG1hcC4KLSAgICAvLyBUaGF0J3MgYmVj
YXVzZSB0aGUgbWFwIGlzIGNyb3NzLXRocmVhZCwgYnV0IGVtcHR5IHN0cmluZ3MgYXJlIHBlci10
aHJlYWQuCi0gICAgLy8gVGhlIGNvcHkoKSBmdW5jdGlvbiBtYWtlcyBhIHZlcnNpb24gb2YgdGhl
IHN0cmluZyB5b3UgY2FuIHVzZSBvbiB0aGUgY3VycmVudAotICAgIC8vIHRocmVhZCwgYnV0IHdl
IG5lZWQgYSBzdHJpbmcgd2UgY2FuIGtlZXAgaW4gYSBjcm9zcy10aHJlYWQgZGF0YSBzdHJ1Y3R1
cmUuCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgYSBxdWl0ZS1hd2t3YXJkIHJlc3RyaWN0aW9uIHRv
IGhhdmUgdG8gcHJvZ3JhbSB3aXRoLgotCi0gICAgLy8gTWFwIG51bGwgc3RyaW5nIHRvIGVtcHR5
IHN0cmluZyAoc2VlIGNvbW1lbnQgYWJvdmUpLgotICAgIGd1aWRUb1ZlcnNpb25NYXAoKS5zZXQo
Z3VpZCwgbmV3VmVyc2lvbi5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IG5ld1ZlcnNpb24uaXNvbGF0
ZWRDb3B5KCkpOwotfQotCi10eXBlZGVmIEhhc2hNYXA8RGF0YWJhc2VHdWlkLCBzdGQ6OnVuaXF1
ZV9wdHI8SGFzaFNldDxEYXRhYmFzZUJhY2tlbmRCYXNlKj4+PiBHdWlkRGF0YWJhc2VNYXA7Ci0K
LXN0YXRpYyBHdWlkRGF0YWJhc2VNYXAmIGd1aWRUb0RhdGFiYXNlTWFwKCkKLXsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8R3VpZERhdGFiYXNlTWFwPiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsK
LX0KLQotc3RhdGljIERhdGFiYXNlR3VpZCBndWlkRm9yT3JpZ2luQW5kTmFtZShjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIFN0cmluZyBzdHJpbmdJRCA9
IG9yaWdpbiArICIvIiArIG5hbWU7Ci0KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxTdHJpbmcsIGludD4+IG1hcDsKLSAgICBEYXRhYmFzZUd1aWQgZ3VpZCA9IG1hcC5nZXQoKS5n
ZXQoc3RyaW5nSUQpOwotICAgIGlmICghZ3VpZCkgewotICAgICAgICBzdGF0aWMgaW50IGN1cnJl
bnROZXdHVUlEID0gMTsKLSAgICAgICAgZ3VpZCA9IGN1cnJlbnROZXdHVUlEKys7Ci0gICAgICAg
IG1hcC5nZXQoKS5zZXQoc3RyaW5nSUQsIGd1aWQpOwotICAgIH0KLQotICAgIHJldHVybiBndWlk
OwotfQotCiAjaWYgIUxPR19ESVNBQkxFRCB8fCAhRVJST1JfRElTQUJMRUQKIFN0cmluZyBEYXRh
YmFzZUJhY2tlbmRCYXNlOjpkYXRhYmFzZURlYnVnTmFtZSgpIGNvbnN0CiB7CkBAIC0xNjAsMjQg
Kzk2LDYgQEAgRGF0YWJhc2VCYWNrZW5kQmFzZTo6RGF0YWJhc2VCYWNrZW5kQmFzZShQYXNzUmVm
UHRyPERhdGFiYXNlQ29udGV4dD4gZGF0YWJhc2VDb24KICAgICAsIG1fb3BlbmVkKGZhbHNlKQog
ICAgICwgbV9uZXcoZmFsc2UpCiB7Ci0gICAgbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4g
PSBtX2RhdGFiYXNlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aXNvbGF0ZWRDb3B5KCk7Ci0K
LSAgICBtX2RhdGFiYXNlQXV0aG9yaXplciA9IERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKHVu
cXVhbGlmaWVkSW5mb1RhYmxlTmFtZSk7Ci0KLSAgICBpZiAobV9uYW1lLmlzTnVsbCgpKQotICAg
ICAgICBtX25hbWUgPSBlbXB0eVN0cmluZygpOwotCi0gICAgewotICAgICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKGd1aWRNdXRleCgpKTsKLQotICAgICAgICBtX2d1aWQg
PSBndWlkRm9yT3JpZ2luQW5kTmFtZShzZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLCBuYW1l
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8RGF0YWJhc2VCYWNrZW5kQmFzZSo+
PiYgaGFzaFNldCA9IGd1aWRUb0RhdGFiYXNlTWFwKCkuYWRkKG1fZ3VpZCwgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOwotICAgICAgICBpZiAoIWhhc2hTZXQpCi0gICAgICAgICAgICBoYXNoU2V0
ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PERhdGFiYXNlQmFja2VuZEJhc2UqPj4oKTsKLSAg
ICAgICAgaGFzaFNldC0+YWRkKHRoaXMpOwotICAgIH0KLQotICAgIG1fZmlsZW5hbWUgPSBEYXRh
YmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLmZ1bGxQYXRoRm9yRGF0YWJhc2Uoc2VjdXJpdHlPcmln
aW4oKSwgbV9uYW1lKTsKIH0KIAogRGF0YWJhc2VCYWNrZW5kQmFzZTo6fkRhdGFiYXNlQmFja2Vu
ZEJhc2UoKQpAQCAtMTk0LDE2NSArMTEyLDEyIEBAIERhdGFiYXNlQmFja2VuZEJhc2U6On5EYXRh
YmFzZUJhY2tlbmRCYXNlKCkKICAgICBBU1NFUlQoIW1fb3BlbmVkKTsKIH0KIAotdm9pZCBEYXRh
YmFzZUJhY2tlbmRCYXNlOjpjbG9zZURhdGFiYXNlKCkKLXsKLSAgICBpZiAoIW1fb3BlbmVkKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7Ci0gICAgbV9v
cGVuZWQgPSBmYWxzZTsKLSAgICAvLyBTZWUgY29tbWVudCBhdCB0aGUgdG9wIHRoaXMgZmlsZSBy
ZWdhcmRpbmcgY2FsbGluZyByZW1vdmVPcGVuRGF0YWJhc2UoKS4KLSAgICBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2Uoc3RhdGljX2Nhc3Q8RGF0YWJhc2UqPih0
aGlzKSk7Ci0gICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2Vy
KGd1aWRNdXRleCgpKTsKLQotICAgICAgICBhdXRvIGl0ID0gZ3VpZFRvRGF0YWJhc2VNYXAoKS5m
aW5kKG1fZ3VpZCk7Ci0gICAgICAgIEFTU0VSVChpdCAhPSBndWlkVG9EYXRhYmFzZU1hcCgpLmVu
ZCgpKTsKLSAgICAgICAgQVNTRVJUKGl0LT52YWx1ZSk7Ci0gICAgICAgIEFTU0VSVChpdC0+dmFs
dWUtPmNvbnRhaW5zKHRoaXMpKTsKLSAgICAgICAgaXQtPnZhbHVlLT5yZW1vdmUodGhpcyk7Ci0g
ICAgICAgIGlmIChpdC0+dmFsdWUtPmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZ3VpZFRvRGF0
YWJhc2VNYXAoKS5yZW1vdmUoaXQpOwotICAgICAgICAgICAgZ3VpZFRvVmVyc2lvbk1hcCgpLnJl
bW92ZShtX2d1aWQpOwotICAgICAgICB9Ci0gICAgfQotfQotCiBTdHJpbmcgRGF0YWJhc2VCYWNr
ZW5kQmFzZTo6dmVyc2lvbigpIGNvbnN0CiB7CiAgICAgLy8gTm90ZTogSW4gbXVsdGktcHJvY2Vz
cyBicm93c2VycyB0aGUgY2FjaGVkIHZhbHVlIG1heSBiZSBhY2N1cmF0ZSwgYnV0IHdlIGNhbm5v
dCByZWFkIHRoZQogICAgIC8vIGFjdHVhbCB2ZXJzaW9uIGZyb20gdGhlIGRhdGFiYXNlIHdpdGhv
dXQgcG90ZW50aWFsbHkgaW5kdWNpbmcgYSBkZWFkbG9jay4KICAgICAvLyBGSVhNRTogQWRkIGFu
IGFzeW5jIHZlcnNpb24gZ2V0dGVyIHRvIHRoZSBEYXRhYmFzZUFQSS4KLSAgICByZXR1cm4gZ2V0
Q2FjaGVkVmVyc2lvbigpOwotfQotCi1jbGFzcyBEb25lQ3JlYXRpbmdEYXRhYmFzZU9uRXhpdENh
bGxlciB7Ci1wdWJsaWM6Ci0gICAgRG9uZUNyZWF0aW5nRGF0YWJhc2VPbkV4aXRDYWxsZXIoRGF0
YWJhc2VCYWNrZW5kQmFzZSogZGF0YWJhc2UpCi0gICAgICAgIDogbV9kYXRhYmFzZShkYXRhYmFz
ZSkKLSAgICAgICAgLCBtX29wZW5TdWNjZWVkZWQoZmFsc2UpCi0gICAgewotICAgIH0KLSAgICB+
RG9uZUNyZWF0aW5nRGF0YWJhc2VPbkV4aXRDYWxsZXIoKQotICAgIHsKLSAgICAgICAgRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuZG9uZUNyZWF0aW5nRGF0YWJhc2Uoc3RhdGljX2Nhc3Q8RGF0
YWJhc2UqPihtX2RhdGFiYXNlKSk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRPcGVuU3VjY2VlZGVk
KCkgeyBtX29wZW5TdWNjZWVkZWQgPSB0cnVlOyB9Ci0KLXByaXZhdGU6Ci0gICAgRGF0YWJhc2VC
YWNrZW5kQmFzZSogbV9kYXRhYmFzZTsKLSAgICBib29sIG1fb3BlblN1Y2NlZWRlZDsKLX07Ci0K
LWJvb2wgRGF0YWJhc2VCYWNrZW5kQmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzaG91
bGRTZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VFcnJvciYgZXJyb3IsIFN0cmluZyYg
ZXJyb3JNZXNzYWdlKQotewotICAgIERvbmVDcmVhdGluZ0RhdGFiYXNlT25FeGl0Q2FsbGVyIG9u
RXhpdENhbGxlcih0aGlzKTsKLSAgICBBU1NFUlQoZXJyb3JNZXNzYWdlLmlzRW1wdHkoKSk7Ci0g
ICAgQVNTRVJUKGVycm9yID09IERhdGFiYXNlRXJyb3I6Ok5vbmUpOyAvLyBCZXR0ZXIgbm90IGhh
dmUgYW55IGVycm9ycyBhbHJlYWR5LgotICAgIGVycm9yID0gRGF0YWJhc2VFcnJvcjo6SW52YWxp
ZERhdGFiYXNlU3RhdGU7IC8vIFByZXN1bWVkIGZhaWx1cmUuIFdlJ2xsIGNsZWFyIGl0IGlmIHdl
IHN1Y2NlZWQgYmVsb3cuCi0KLSAgICBjb25zdCBpbnQgbWF4U3FsaXRlQnVzeVdhaXRUaW1lID0g
MzAwMDA7Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgewotICAgICAgICAvLyBNYWtlIHN1cmUg
d2Ugd2FpdCB0aWxsIHRoZSBiYWNrZ3JvdW5kIHJlbW92YWwgb2YgdGhlIGVtcHR5IGRhdGFiYXNl
IGZpbGVzIGZpbmlzaGVkIGJlZm9yZSB0cnlpbmcgdG8gb3BlbiBhbnkgZGF0YWJhc2UuCi0gICAg
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoRGF0YWJhc2VUcmFja2VyOjpvcGVuRGF0
YWJhc2VNdXRleCgpKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKLQotICAgIGlmICghbV9zcWxp
dGVEYXRhYmFzZS5vcGVuKG1fZmlsZW5hbWUsIHRydWUpKSB7Ci0gICAgICAgIGVycm9yTWVzc2Fn
ZSA9IGZvcm1hdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UiLCBtX3NxbGl0
ZURhdGFiYXNlLmxhc3RFcnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2Uu
dHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtKCkpCi0gICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHR1cm4gb24gaW5jcmVtZW50YWwgYXV0by12YWN1dW0gKCVkICVzKSIsIG1fc3FsaXRlRGF0
YWJhc2UubGFzdEVycm9yKCksIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotCi0g
ICAgbV9zcWxpdGVEYXRhYmFzZS5zZXRCdXN5VGltZW91dChtYXhTcWxpdGVCdXN5V2FpdFRpbWUp
OwotCi0gICAgU3RyaW5nIGN1cnJlbnRWZXJzaW9uOwotICAgIHsKLSAgICAgICAgc3RkOjpsb2Nr
X2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihndWlkTXV0ZXgoKSk7Ci0KLSAgICAgICAgYXV0byBl
bnRyeSA9IGd1aWRUb1ZlcnNpb25NYXAoKS5maW5kKG1fZ3VpZCk7Ci0gICAgICAgIGlmIChlbnRy
eSAhPSBndWlkVG9WZXJzaW9uTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgICAgIC8vIE1hcCBudWxs
IHN0cmluZyB0byBlbXB0eSBzdHJpbmcgKHNlZSB1cGRhdGVHdWlkVmVyc2lvbk1hcCgpKS4KLSAg
ICAgICAgICAgIGN1cnJlbnRWZXJzaW9uID0gZW50cnktPnZhbHVlLmlzTnVsbCgpID8gZW1wdHlT
dHJpbmcoKSA6IGVudHJ5LT52YWx1ZS5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgICAgIExPRyhT
dG9yYWdlQVBJLCAiQ3VycmVudCBjYWNoZWQgdmVyc2lvbiBmb3IgZ3VpZCAlaSBpcyAlcyIsIG1f
Z3VpZCwgY3VycmVudFZlcnNpb24uYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJObyBjYWNoZWQgdmVyc2lvbiBmb3IgZ3VpZCAl
aSIsIG1fZ3VpZCk7Ci0KLSAgICAgICAgICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9u
KG1fc3FsaXRlRGF0YWJhc2UpOwotICAgICAgICAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKLSAg
ICAgICAgICAgIGlmICghdHJhbnNhY3Rpb24uaW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgICAgICAg
ICAgZXJyb3JNZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gb3BlbiBkYXRh
YmFzZSwgZmFpbGVkIHRvIHN0YXJ0IHRyYW5zYWN0aW9uIiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0
RXJyb3IoKSwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICAg
ICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9zZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgU3RyaW5nIHRhYmxlTmFtZSh1bnF1YWxp
ZmllZEluZm9UYWJsZU5hbWUpOwotICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLnRh
YmxlRXhpc3RzKHRhYmxlTmFtZSkpIHsKLSAgICAgICAgICAgICAgICBtX25ldyA9IHRydWU7Ci0K
LSAgICAgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNS
RUFURSBUQUJMRSAiICsgdGFibGVOYW1lICsgIiAoa2V5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSx2YWx1ZSBURVhUIE5PVCBOVUxMIE9O
IENPTkZMSUNUIEZBSUwpOyIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9
IGZvcm1hdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UsIGZhaWxlZCB0byBj
cmVhdGUgJ2luZm8nIHRhYmxlIiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9zcWxp
dGVEYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0
aW9uLnJvbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3FsaXRlRGF0YWJhc2UuY2xv
c2UoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIW1fZnJvbnRlbmQtPmdldFZlcnNpb25Gcm9tRGF0
YWJhc2UoY3VycmVudFZlcnNpb24sIGZhbHNlKSkgewotICAgICAgICAgICAgICAgIGVycm9yTWVz
c2FnZSA9IGZvcm1hdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UsIGZhaWxl
ZCB0byByZWFkIGN1cnJlbnQgdmVyc2lvbiIsIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yKCks
IG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICAgICAgICAgIHRyYW5z
YWN0aW9uLnJvbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9z
ZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKGN1cnJlbnRWZXJzaW9uLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAg
TE9HKFN0b3JhZ2VBUEksICJSZXRyaWV2ZWQgY3VycmVudCB2ZXJzaW9uICVzIGZyb20gZGF0YWJh
c2UgJXMiLCBjdXJyZW50VmVyc2lvbi5hc2NpaSgpLmRhdGEoKSwgZGF0YWJhc2VEZWJ1Z05hbWUo
KS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFtX25ldyB8fCBzaG91
bGRTZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSkgewotICAgICAgICAgICAgICAgIExPRyhTdG9yYWdl
QVBJLCAiU2V0dGluZyB2ZXJzaW9uICVzIGluIGRhdGFiYXNlICVzIHRoYXQgd2FzIGp1c3QgY3Jl
YXRlZCIsIG1fZXhwZWN0ZWRWZXJzaW9uLmFzY2lpKCkuZGF0YSgpLCBkYXRhYmFzZURlYnVnTmFt
ZSgpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fZnJvbnRlbmQtPnNl
dFZlcnNpb25JbkRhdGFiYXNlKG1fZXhwZWN0ZWRWZXJzaW9uLCBmYWxzZSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8g
b3BlbiBkYXRhYmFzZSwgZmFpbGVkIHRvIHdyaXRlIGN1cnJlbnQgdmVyc2lvbiIsIG1fc3FsaXRl
RGF0YWJhc2UubGFzdEVycm9yKCksIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwot
ICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjaygpOwotICAgICAgICAgICAg
ICAgICAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY3VycmVudFZl
cnNpb24gPSBtX2V4cGVjdGVkVmVyc2lvbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVw
ZGF0ZUd1aWRWZXJzaW9uTWFwKG1fZ3VpZCwgY3VycmVudFZlcnNpb24pOwotICAgICAgICAgICAg
dHJhbnNhY3Rpb24uY29tbWl0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoY3VycmVu
dFZlcnNpb24uaXNOdWxsKCkpIHsKLSAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSAl
cyBkb2VzIG5vdCBoYXZlIGl0cyB2ZXJzaW9uIHNldCIsIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNj
aWkoKS5kYXRhKCkpOwotICAgICAgICBjdXJyZW50VmVyc2lvbiA9ICIiOwotICAgIH0KLQotICAg
IC8vIElmIHRoZSBleHBlY3RlZCB2ZXJzaW9uIGlzbid0IHRoZSBlbXB0eSBzdHJpbmcsIGVuc3Vy
ZSB0aGF0IHRoZSBjdXJyZW50IGRhdGFiYXNlIHZlcnNpb24gd2UgaGF2ZSBtYXRjaGVzIHRoYXQg
dmVyc2lvbi4gT3RoZXJ3aXNlLCBzZXQgYW4gZXhjZXB0aW9uLgotICAgIC8vIElmIHRoZSBleHBl
Y3RlZCB2ZXJzaW9uIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHRoZW4gd2UgYWx3YXlzIHJldHVybiB3
aXRoIHdoYXRldmVyIHZlcnNpb24gb2YgdGhlIGRhdGFiYXNlIHdlIGhhdmUuCi0gICAgaWYgKCgh
bV9uZXcgfHwgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpICYmIG1fZXhwZWN0ZWRWZXJz
aW9uLmxlbmd0aCgpICYmIG1fZXhwZWN0ZWRWZXJzaW9uICE9IGN1cnJlbnRWZXJzaW9uKSB7Ci0g
ICAgICAgIGVycm9yTWVzc2FnZSA9ICJ1bmFibGUgdG8gb3BlbiBkYXRhYmFzZSwgdmVyc2lvbiBt
aXNtYXRjaCwgJyIgKyBtX2V4cGVjdGVkVmVyc2lvbiArICInIGRvZXMgbm90IG1hdGNoIHRoZSBj
dXJyZW50VmVyc2lvbiBvZiAnIiArIGN1cnJlbnRWZXJzaW9uICsgIiciOwotICAgICAgICBtX3Nx
bGl0ZURhdGFiYXNlLmNsb3NlKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBBU1NFUlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOwotICAgIG1fc3FsaXRlRGF0YWJhc2Uuc2V0
QXV0aG9yaXplcihtX2RhdGFiYXNlQXV0aG9yaXplcik7Ci0KLSAgICAvLyBTZWUgY29tbWVudCBh
dCB0aGUgdG9wIHRoaXMgZmlsZSByZWdhcmRpbmcgY2FsbGluZyBhZGRPcGVuRGF0YWJhc2UoKS4K
LSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5hZGRPcGVuRGF0YWJhc2Uoc3RhdGljX2Nh
c3Q8RGF0YWJhc2UqPih0aGlzKSk7Ci0gICAgbV9vcGVuZWQgPSB0cnVlOwotCi0gICAgLy8gRGVj
bGFyZSBzdWNjZXNzOgotICAgIGVycm9yID0gRGF0YWJhc2VFcnJvcjo6Tm9uZTsgLy8gQ2xlYXIg
dGhlIHByZXN1bWVkIGVycm9yIGZyb20gYWJvdmUuCi0gICAgb25FeGl0Q2FsbGVyLnNldE9wZW5T
dWNjZWVkZWQoKTsKLQotICAgIGlmIChtX25ldyAmJiAhc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0
YWJhc2UpCi0gICAgICAgIG1fZXhwZWN0ZWRWZXJzaW9uID0gIiI7IC8vIFRoZSBjYWxsZXIgcHJv
dmlkZWQgYSBjcmVhdGlvbkNhbGxiYWNrIHdoaWNoIHdpbGwgc2V0IHRoZSBleHBlY3RlZCB2ZXJz
aW9uLgotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBtX2Zyb250ZW5kLT5nZXRDYWNoZWRW
ZXJzaW9uKCk7CiB9CiAKIFNlY3VyaXR5T3JpZ2luKiBEYXRhYmFzZUJhY2tlbmRCYXNlOjpzZWN1
cml0eU9yaWdpbigpIGNvbnN0CkBAIC0zOTQsMjEgKzE1OSw2IEBAIHZvaWQgRGF0YWJhc2VCYWNr
ZW5kQmFzZTo6c2V0RXhwZWN0ZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKICAgICBt
X2V4cGVjdGVkVmVyc2lvbiA9IHZlcnNpb24uaXNvbGF0ZWRDb3B5KCk7CiB9CiAKLVN0cmluZyBE
YXRhYmFzZUJhY2tlbmRCYXNlOjpnZXRDYWNoZWRWZXJzaW9uKCkgY29uc3QKLXsKLSAgICBzdGQ6
OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKGd1aWRNdXRleCgpKTsKLQotICAgIHJldHVy
biBndWlkVG9WZXJzaW9uTWFwKCkuZ2V0KG1fZ3VpZCkuaXNvbGF0ZWRDb3B5KCk7Ci19Ci0KLXZv
aWQgRGF0YWJhc2VCYWNrZW5kQmFzZTo6c2V0Q2FjaGVkVmVyc2lvbihjb25zdCBTdHJpbmcmIGFj
dHVhbFZlcnNpb24pCi17Ci0gICAgLy8gVXBkYXRlIHRoZSBpbiBtZW1vcnkgZGF0YWJhc2UgdmVy
c2lvbiBtYXAuCi0gICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihndWlkTXV0
ZXgoKSk7Ci0KLSAgICB1cGRhdGVHdWlkVmVyc2lvbk1hcChtX2d1aWQsIGFjdHVhbFZlcnNpb24p
OwotfQotCiBib29sIERhdGFiYXNlQmFja2VuZEJhc2U6OmdldEFjdHVhbFZlcnNpb25Gb3JUcmFu
c2FjdGlvbihTdHJpbmcgJmFjdHVhbFZlcnNpb24pCiB7CiAgICAgQVNTRVJUKG1fc3FsaXRlRGF0
YWJhc2UudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEJhc2UuaAppbmRleCA4OTRi
YzEyNzE3YjFlMTJiNDc4OTk5NTY5YTFjOWRiYWU2YjNlMGRmLi5hZDBhNTYwOTIwMDkyYWQ5OGI2
YzUzZWI4NTE4ZWRjY2FlNmQzMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEJhc2UuaApAQCAtNzcsMTQgKzc3LDkg
QEAgcHJvdGVjdGVkOgogCiAgICAgRGF0YWJhc2VCYWNrZW5kQmFzZShQYXNzUmVmUHRyPERhdGFi
YXNlQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZl
cnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVk
U2l6ZSk7CiAKLSAgICB2b2lkIGNsb3NlRGF0YWJhc2UoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBw
ZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBE
YXRhYmFzZUVycm9yJiwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogCiAgICAgdm9pZCBzZXRFeHBl
Y3RlZFZlcnNpb24oY29uc3QgU3RyaW5nJik7CiAgICAgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZl
cnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGVkVmVyc2lvbjsgfQotICAgIFN0cmluZyBn
ZXRDYWNoZWRWZXJzaW9uKCljb25zdDsKLSAgICB2b2lkIHNldENhY2hlZFZlcnNpb24oY29uc3Qg
U3RyaW5nJik7CiAgICAgYm9vbCBnZXRBY3R1YWxWZXJzaW9uRm9yVHJhbnNhY3Rpb24oU3RyaW5n
JiB2ZXJzaW9uKTsKIAogI2lmICFMT0dfRElTQUJMRUQgfHwgIUVSUk9SX0RJU0FCTEVECg==
</data>
<flag name="review"
          id="283503"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>