<?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>203153</bug_id>
          
          <creation_ts>2019-10-18 08:26:29 -0700</creation_ts>
          <short_desc>ElementRuleCollector function signature cleanups</short_desc>
          <delta_ts>2019-10-18 11:47:25 -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>CSS</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1581409</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-18 08:26:29 -0700</bug_when>
    <thetext>Many functions in ElementRuleCollector take repetitive arguments that can be removed:

- Make includeEmptyRules argument a class member
- Remove RuleRange argument, update the ranges in rule transfer step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581431</commentid>
    <comment_count>1</comment_count>
      <attachid>381307</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-18 09:26:04 -0700</bug_when>
    <thetext>Created attachment 381307
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581464</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-18 11:07:59 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 381307:

inspector/console/webcore-logging.html bug 203118 (authors: drousso@apple.com and eric.carlson@apple.com)
fast/events/resize-subframe-in-rendering-update.html bug 203140 (author: rniwa@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581465</commentid>
    <comment_count>3</comment_count>
      <attachid>381307</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-18 11:08:50 -0700</bug_when>
    <thetext>Comment on attachment 381307
patch

Clearing flags on attachment: 381307

Committed r251289: &lt;https://trac.webkit.org/changeset/251289&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581466</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-18 11:08:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581467</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-18 11:09:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/56412684&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581472</commentid>
    <comment_count>6</comment_count>
      <attachid>381318</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-18 11:40:45 -0700</bug_when>
    <thetext>Created attachment 381318
windows build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581474</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-18 11:47:25 -0700</bug_when>
    <thetext>Build fix https://trac.webkit.org/r251291</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381307</attachid>
            <date>2019-10-18 09:26:04 -0700</date>
            <delta_ts>2019-10-18 11:08:50 -0700</delta_ts>
            <desc>patch</desc>
            <filename>elementrulecollector-cleanups.patch</filename>
            <type>text/plain</type>
            <size>27628</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MTc1OTYxZDAxZi4uMTQ5OTcwNDQzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxOS0xMC0xOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgRWxlbWVudFJ1bGVDb2xsZWN0b3IgZnVuY3Rpb24gc2lnbmF0dXJlIGNsZWFu
dXBzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMx
NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYW55
IGZ1bmN0aW9ucyBpbiBFbGVtZW50UnVsZUNvbGxlY3RvciB0YWtlIHJlcGV0aXRpdmUgYXJndW1l
bnRzIHRoYXQgY2FuIGJlIHJlbW92ZWQ6CisKKyAgICAgICAgLSBNYWtlIGluY2x1ZGVFbXB0eVJ1
bGVzIGFyZ3VtZW50IGEgY2xhc3MgbWVtYmVyCisgICAgICAgIC0gUmVtb3ZlIFJ1bGVSYW5nZSBh
cmd1bWVudCwgdXBkYXRlIHRoZSByYW5nZXMgaW4gcnVsZSB0cmFuc2ZlciBzdGVwLgorCisgICAg
ICAgICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1h
dGNoUmVxdWVzdDo6TWF0Y2hSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxl
Q29sbGVjdG9yOjphZGRNYXRjaGVkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJ1bGVDb2xsZWN0b3I6OnNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6dHJhbnNmZXJNYXRjaGVkUnVsZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQXV0aG9yUnVsZXMp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoZXNBbnlBdXRo
b3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVj
dE1hdGNoaW5nQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xs
ZWN0b3I6Om1hdGNoQXV0aG9yU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEhvc3RQc2V1ZG9DbGFzc1J1bGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFNsb3R0ZWRQc2V1
ZG9FbGVtZW50UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6
Om1hdGNoUGFydFBzZXVkb0VsZW1lbnRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UnVsZUNvbGxlY3Rvcjo6bWF0Y2hQYXJ0UHNldWRvRWxlbWVudFJ1bGVzRm9yU2NvcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1NoYWRv
d1BzZXVkb0VsZW1lbnRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxl
Y3Rvcjo6Y29sbGVjdFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFVzZXJSdWxlcyk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQWxsUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Omhhc0FueU1hdGNo
aW5nUnVsZXMpOgorICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OnNldEluY2x1ZGVFbXB0eVJ1bGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjp0cmFuc2Zlck1hdGNoZWRS
dWxlcyk6CisKKyAgICAgICAgUmFuZ2UgdXBkYXRlIGhhcHBlbnMgbm93IGhlcmUgYmFzZWQgb24g
dGhlIHN1cHBsaWVkIGFyZ3VtZW50LgorCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlUnVsZXNGb3JF
bGVtZW50KToKK3gKIDIwMTktMTAtMTcgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgogCiAgICAgICAgIFtDU1MgU2hhZG93IFBhcnRzXSA6cGFydCBydWxlcyBzaG91bGQgYmUgYWJs
ZSB0byBvdmVycmlkZSBzdHlsZSBhdHRyaWJ1dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4IDhhNmM4NzEzZDg1Li5jZDllYmNlMGMwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC02OCwxNCArNjgs
MTIgQEAgc3RhdGljIGNvbnN0IFN0eWxlUHJvcGVydGllcyYgcmlnaHRUb0xlZnREZWNsYXJhdGlv
bigpCiAKIGNsYXNzIE1hdGNoUmVxdWVzdCB7CiBwdWJsaWM6Ci0gICAgTWF0Y2hSZXF1ZXN0KGNv
bnN0IFJ1bGVTZXQqIHJ1bGVTZXQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMgPSBmYWxzZSwgU3R5
bGU6OlNjb3BlT3JkaW5hbCBzdHlsZVNjb3BlT3JkaW5hbCA9IFN0eWxlOjpTY29wZU9yZGluYWw6
OkVsZW1lbnQpCisgICAgTWF0Y2hSZXF1ZXN0KGNvbnN0IFJ1bGVTZXQqIHJ1bGVTZXQsIFN0eWxl
OjpTY29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwgPSBTdHlsZTo6U2NvcGVPcmRpbmFsOjpF
bGVtZW50KQogICAgICAgICA6IHJ1bGVTZXQocnVsZVNldCkKLSAgICAgICAgLCBpbmNsdWRlRW1w
dHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcykKICAgICAgICAgLCBzdHlsZVNjb3BlT3JkaW5hbChz
dHlsZVNjb3BlT3JkaW5hbCkKICAgICB7CiAgICAgfQogICAgIGNvbnN0IFJ1bGVTZXQqIHJ1bGVT
ZXQ7Ci0gICAgY29uc3QgYm9vbCBpbmNsdWRlRW1wdHlSdWxlczsKICAgICBTdHlsZTo6U2NvcGVP
cmRpbmFsIHN0eWxlU2NvcGVPcmRpbmFsOwogfTsKIApAQCAtMTA5LDE2ICsxMDcsOCBAQCBjb25z
dCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hl
ZFJ1bGVMaXN0KCkgY29uc3QKICAgICByZXR1cm4gbV9tYXRjaGVkUnVsZUxpc3Q7CiB9CiAKLWlu
bGluZSB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjphZGRNYXRjaGVkUnVsZShjb25zdCBSdWxl
RGF0YSYgcnVsZURhdGEsIHVuc2lnbmVkIHNwZWNpZmljaXR5LCBTdHlsZTo6U2NvcGVPcmRpbmFs
IHN0eWxlU2NvcGVPcmRpbmFsLCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmIHJ1bGVSYW5nZSkK
K2lubGluZSB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjphZGRNYXRjaGVkUnVsZShjb25zdCBS
dWxlRGF0YSYgcnVsZURhdGEsIHVuc2lnbmVkIHNwZWNpZmljaXR5LCBTdHlsZTo6U2NvcGVPcmRp
bmFsIHN0eWxlU2NvcGVPcmRpbmFsKQogewotICAgIC8vIFVwZGF0ZSBvdXIgZmlyc3QvbGFzdCBy
dWxlIGluZGljZXMgaW4gdGhlIG1hdGNoZWQgcnVsZXMgYXJyYXkuCi0gICAgaWYgKHJ1bGVSYW5n
ZS5sYXN0UnVsZUluZGV4ICE9IC0xKQotICAgICAgICArK3J1bGVSYW5nZS5sYXN0UnVsZUluZGV4
OwotICAgIGVsc2UgewotICAgICAgICBydWxlUmFuZ2UubGFzdFJ1bGVJbmRleCA9IG1fcmVzdWx0
Lm1hdGNoZWRQcm9wZXJ0aWVzKCkuc2l6ZSgpOwotICAgICAgICBydWxlUmFuZ2UuZmlyc3RSdWxl
SW5kZXggPSBydWxlUmFuZ2UubGFzdFJ1bGVJbmRleDsKLSAgICB9Ci0KICAgICBtX21hdGNoZWRS
dWxlcy5hcHBlbmQoeyAmcnVsZURhdGEsIHNwZWNpZmljaXR5LCBzdHlsZVNjb3BlT3JkaW5hbCB9
KTsKIH0KIApAQCAtMTQ2LDQ1ICsxMzYsNjIgQEAgaW5saW5lIHZvaWQgRWxlbWVudFJ1bGVDb2xs
ZWN0b3I6OmFkZEVsZW1lbnRTdHlsZVByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0aWUKICAg
ICAgICAgbV9yZXN1bHQuaXNDYWNoZWFibGUgPSBmYWxzZTsKIH0KIAotdm9pZCBFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRj
aFJlcXVlc3QsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYgcnVsZVJhbmdlKQordm9pZCBFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0
JiBtYXRjaFJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKG1hdGNoUmVxdWVzdC5ydWxlU2V0KTsKICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCEobV9tb2RlID09IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6
Q29sbGVjdGluZ1J1bGVzSWdub3JpbmdWaXJ0dWFsUHNldWRvRWxlbWVudHMgJiYgbV9wc2V1ZG9T
dHlsZVJlcXVlc3QucHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmUpLCAiV2hlbiBpbiBTdHlsZUlu
dmFsaWRhdGlvbiBvciBTaGFyaW5nUnVsZXMsIFNlbGVjdG9yQ2hlY2tlciBkb2VzIG5vdCB0cnkg
dG8gbWF0Y2ggdGhlIHBzZXVkbyBJRC4gV2hpbGUgRWxlbWVudFJ1bGVDb2xsZWN0b3Igc3VwcG9y
dHMgbWF0Y2hpbmcgYSBwYXJ0aWN1bGFyIHBzZXVkb0lkIGluIHRoaXMgY2FzZSwgdGhpcyB3b3Vs
ZCBpbmRpY2F0ZSBhIGVycm9yIGF0IHRoZSBjYWxsIHNpdGUgc2luY2UgbWF0Y2hpbmcgYSBwYXJ0
aWN1bGFyIGVsZW1lbnQgc2hvdWxkIGJlIHVubmVjZXNzYXJ5LiIpOwogCiAgICAgYXV0byogc2hh
ZG93Um9vdCA9IGVsZW1lbnQoKS5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgIGlmIChzaGFk
b3dSb290ICYmIHNoYWRvd1Jvb3QtPm1vZGUoKSA9PSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50
KQotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMobWF0Y2hS
ZXF1ZXN0LCBydWxlUmFuZ2UpOworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdTaGFkb3dQc2V1ZG9F
bGVtZW50UnVsZXMobWF0Y2hSZXF1ZXN0KTsKIAogICAgIC8vIFdlIG5lZWQgdG8gY29sbGVjdCB0
aGUgcnVsZXMgZm9yIGlkLCBjbGFzcywgdGFnLCBhbmQgZXZlcnl0aGluZyBlbHNlIGludG8gYSBi
dWZmZXIgYW5kCiAgICAgLy8gdGhlbiBzb3J0IHRoZSBidWZmZXIuCiAgICAgYXV0byYgaWQgPSBl
bGVtZW50KCkuaWRGb3JTdHlsZVJlc29sdXRpb24oKTsKICAgICBpZiAoIWlkLmlzTnVsbCgpKQot
ICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQt
PmlkUnVsZXMoaWQpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisgICAgICAgIGNvbGxlY3RN
YXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+aWRSdWxlcyhpZCksIG1h
dGNoUmVxdWVzdCk7CiAgICAgaWYgKGVsZW1lbnQoKS5oYXNDbGFzcygpKSB7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudCgpLmNsYXNzTmFtZXMoKS5zaXplKCk7ICsraSkK
LSAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVs
ZVNldC0+Y2xhc3NSdWxlcyhlbGVtZW50KCkuY2xhc3NOYW1lcygpW2ldKSwgbWF0Y2hSZXF1ZXN0
LCBydWxlUmFuZ2UpOworICAgICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1h
dGNoUmVxdWVzdC5ydWxlU2V0LT5jbGFzc1J1bGVzKGVsZW1lbnQoKS5jbGFzc05hbWVzKClbaV0p
LCBtYXRjaFJlcXVlc3QpOwogICAgIH0KIAogICAgIGlmIChlbGVtZW50KCkuaXNMaW5rKCkpCi0g
ICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+
bGlua1BzZXVkb0NsYXNzUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOworICAgICAg
ICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmxpbmtQ
c2V1ZG9DbGFzc1J1bGVzKCksIG1hdGNoUmVxdWVzdCk7CiAgICAgaWYgKFNlbGVjdG9yQ2hlY2tl
cjo6bWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoZWxlbWVudCgpKSkKLSAgICAgICAgY29sbGVjdE1h
dGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5mb2N1c1BzZXVkb0NsYXNz
UnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1
bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+dGFnUnVsZXMoZWxlbWVudCgpLmxvY2Fs
TmFtZSgpLCBlbGVtZW50KCkuaXNIVE1MRWxlbWVudCgpICYmIGVsZW1lbnQoKS5kb2N1bWVudCgp
LmlzSFRNTERvY3VtZW50KCkpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7Ci0gICAgY29sbGVj
dE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT51bml2ZXJzYWxSdWxl
cygpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1
bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+Zm9jdXNQc2V1ZG9DbGFzc1J1bGVzKCks
IG1hdGNoUmVxdWVzdCk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVx
dWVzdC5ydWxlU2V0LT50YWdSdWxlcyhlbGVtZW50KCkubG9jYWxOYW1lKCksIGVsZW1lbnQoKS5p
c0hUTUxFbGVtZW50KCkgJiYgZWxlbWVudCgpLmRvY3VtZW50KCkuaXNIVE1MRG9jdW1lbnQoKSks
IG1hdGNoUmVxdWVzdCk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVx
dWVzdC5ydWxlU2V0LT51bml2ZXJzYWxSdWxlcygpLCBtYXRjaFJlcXVlc3QpOwogfQogCi12b2lk
IEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoKQordm9p
ZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6c29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKERlY2xh
cmF0aW9uT3JpZ2luIGRlY2xhcmF0aW9uT3JpZ2luKQogewogICAgIGlmIChtX21hdGNoZWRSdWxl
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNvcnRNYXRjaGVkUnVsZXMoKTsK
IAotICAgIHRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCk7CisgICAgdHJhbnNmZXJNYXRjaGVkUnVsZXMo
ZGVjbGFyYXRpb25PcmlnaW4pOwogfQogCi12b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjp0cmFu
c2Zlck1hdGNoZWRSdWxlcyhPcHRpb25hbDxTdHlsZTo6U2NvcGVPcmRpbmFsPiBmcm9tU2NvcGUp
Cit2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjp0cmFuc2Zlck1hdGNoZWRSdWxlcyhEZWNsYXJh
dGlvbk9yaWdpbiBkZWNsYXJhdGlvbk9yaWdpbiwgT3B0aW9uYWw8U3R5bGU6OlNjb3BlT3JkaW5h
bD4gZnJvbVNjb3BlKQogeworICAgIGlmIChtX21hdGNoZWRSdWxlcy5zaXplKCkgPD0gbV9tYXRj
aGVkUnVsZVRyYW5zZmVySW5kZXgpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmFuZ2VG
b3JEZWNsYXJhdGlvbk9yaWdpbiA9IFsmXSgpIHsKKyAgICAgICAgc3dpdGNoIChkZWNsYXJhdGlv
bk9yaWdpbikgeworICAgICAgICBjYXNlIERlY2xhcmF0aW9uT3JpZ2luOjpVc2VyQWdlbnQ6IHJl
dHVybiBtX3Jlc3VsdC5yYW5nZXMuVUFSdWxlUmFuZ2UoKTsKKyAgICAgICAgY2FzZSBEZWNsYXJh
dGlvbk9yaWdpbjo6QXV0aG9yOiByZXR1cm4gbV9yZXN1bHQucmFuZ2VzLmF1dGhvclJ1bGVSYW5n
ZSgpOworICAgICAgICBjYXNlIERlY2xhcmF0aW9uT3JpZ2luOjpVc2VyOiByZXR1cm4gbV9yZXN1
bHQucmFuZ2VzLnVzZXJSdWxlUmFuZ2UoKTsKKyAgICAgICAgfQorICAgIH0oKTsKKworICAgIC8v
IEZJWE1FOiBSYW5nZSB1cGRhdGluZyBzaG91bGQgYmUgZG9uZSBieSBNYXRjaFJlc3VsdHMgdHlw
ZQorICAgIC8vIEZJWE1FOiBNYXRjaFJlc3VsdHMgc2hvdWxkbid0IGJlIGluIFN0eWxlUmVzb2x2
ZXIgbmFtZXNwYWNlLgorICAgIGJvb2wgdXBkYXRlUmFuZ2VzID0gbV9tb2RlICE9IFNlbGVjdG9y
Q2hlY2tlcjo6TW9kZTo6Q29sbGVjdGluZ1J1bGVzOworICAgIGlmICh1cGRhdGVSYW5nZXMgJiYg
cmFuZ2VGb3JEZWNsYXJhdGlvbk9yaWdpbi5maXJzdFJ1bGVJbmRleCA9PSAtMSkKKyAgICAgICAg
cmFuZ2VGb3JEZWNsYXJhdGlvbk9yaWdpbi5maXJzdFJ1bGVJbmRleCA9IG1fcmVzdWx0Lm1hdGNo
ZWRSdWxlcy5zaXplKCk7CisKICAgICBmb3IgKDsgbV9tYXRjaGVkUnVsZVRyYW5zZmVySW5kZXgg
PCBtX21hdGNoZWRSdWxlcy5zaXplKCk7ICsrbV9tYXRjaGVkUnVsZVRyYW5zZmVySW5kZXgpIHsK
ICAgICAgICAgYXV0byYgbWF0Y2hlZFJ1bGUgPSBtX21hdGNoZWRSdWxlc1ttX21hdGNoZWRSdWxl
VHJhbnNmZXJJbmRleF07CiAgICAgICAgIGlmIChmcm9tU2NvcGUgJiYgbWF0Y2hlZFJ1bGUuc3R5
bGVTY29wZU9yZGluYWwgPCAqZnJvbVNjb3BlKQpAQCAtMTk3LDE1ICsyMDQsMTggQEAgdm9pZCBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6dHJhbnNmZXJNYXRjaGVkUnVsZXMoT3B0aW9uYWw8U3R5bGU6
OlNjb3BlT3JkaW5hbD4gZnIKIAogICAgICAgICBtX3Jlc3VsdC5hZGRNYXRjaGVkUHJvcGVydGll
cyhtYXRjaGVkUnVsZS5ydWxlRGF0YS0+cnVsZSgpLT5wcm9wZXJ0aWVzKCksIG1hdGNoZWRSdWxl
LnJ1bGVEYXRhLT5ydWxlKCksIG1hdGNoZWRSdWxlLnJ1bGVEYXRhLT5saW5rTWF0Y2hUeXBlKCks
IG1hdGNoZWRSdWxlLnJ1bGVEYXRhLT5wcm9wZXJ0eVdoaXRlbGlzdFR5cGUoKSwgbWF0Y2hlZFJ1
bGUuc3R5bGVTY29wZU9yZGluYWwpOwogICAgIH0KKworICAgIGlmICh1cGRhdGVSYW5nZXMpCisg
ICAgICAgIHJhbmdlRm9yRGVjbGFyYXRpb25PcmlnaW4ubGFzdFJ1bGVJbmRleCA9IG1fcmVzdWx0
Lm1hdGNoZWRSdWxlcy5zaXplKCkgLSAxOwogfQogCi12b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9y
OjptYXRjaEF1dGhvclJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCit2b2lkIEVsZW1lbnRS
dWxlQ29sbGVjdG9yOjptYXRjaEF1dGhvclJ1bGVzKCkKIHsKICAgICBjbGVhck1hdGNoZWRSdWxl
cygpOwogCi0gICAgY29sbGVjdE1hdGNoaW5nQXV0aG9yUnVsZXMoaW5jbHVkZUVtcHR5UnVsZXMp
OworICAgIGNvbGxlY3RNYXRjaGluZ0F1dGhvclJ1bGVzKCk7CiAKLSAgICBzb3J0QW5kVHJhbnNm
ZXJNYXRjaGVkUnVsZXMoKTsKKyAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFy
YXRpb25PcmlnaW46OkF1dGhvcik7CiB9CiAKIGJvb2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1h
dGNoZXNBbnlBdXRob3JSdWxlcygpCkBAIC0yMTMsMzQgKzIyMywzMiBAQCBib29sIEVsZW1lbnRS
dWxlQ29sbGVjdG9yOjptYXRjaGVzQW55QXV0aG9yUnVsZXMoKQogICAgIGNsZWFyTWF0Y2hlZFJ1
bGVzKCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmFpbCBvdXQgb24gZmlyc3QgbWF0
Y2guCi0gICAgY29sbGVjdE1hdGNoaW5nQXV0aG9yUnVsZXMoZmFsc2UpOworICAgIGNvbGxlY3RN
YXRjaGluZ0F1dGhvclJ1bGVzKCk7CiAKICAgICByZXR1cm4gIW1fbWF0Y2hlZFJ1bGVzLmlzRW1w
dHkoKTsKIH0KIAotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nQXV0
aG9yUnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKK3ZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0
b3I6OmNvbGxlY3RNYXRjaGluZ0F1dGhvclJ1bGVzKCkKIHsKLSAgICBTdHlsZVJlc29sdmVyOjpS
dWxlUmFuZ2UgcnVsZVJhbmdlID0gbV9yZXN1bHQucmFuZ2VzLmF1dGhvclJ1bGVSYW5nZSgpOwot
CiAgICAgewotICAgICAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KCZtX2F1dGhvclN0eWxl
LCBpbmNsdWRlRW1wdHlSdWxlcyk7Ci0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNo
UmVxdWVzdCwgcnVsZVJhbmdlKTsKKyAgICAgICAgTWF0Y2hSZXF1ZXN0IG1hdGNoUmVxdWVzdCgm
bV9hdXRob3JTdHlsZSk7CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVz
dCk7CiAgICAgfQogCiAgICAgYXV0byogcGFyZW50ID0gZWxlbWVudCgpLnBhcmVudEVsZW1lbnQo
KTsKICAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+c2hhZG93Um9vdCgpKQotICAgICAgICBtYXRj
aFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMoaW5jbHVkZUVtcHR5UnVsZXMsIHJ1bGVSYW5nZSk7
CisgICAgICAgIG1hdGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcygpOwogCiAgICAgaWYgKGVs
ZW1lbnQoKS5zaGFkb3dSb290KCkpCi0gICAgICAgIG1hdGNoSG9zdFBzZXVkb0NsYXNzUnVsZXMo
aW5jbHVkZUVtcHR5UnVsZXMsIHJ1bGVSYW5nZSk7CisgICAgICAgIG1hdGNoSG9zdFBzZXVkb0Ns
YXNzUnVsZXMoKTsKIAogICAgIGlmIChlbGVtZW50KCkuaXNJblNoYWRvd1RyZWUoKSkgewotICAg
ICAgICBtYXRjaEF1dGhvclNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhpbmNsdWRlRW1wdHlSdWxl
cywgcnVsZVJhbmdlKTsKLSAgICAgICAgbWF0Y2hQYXJ0UHNldWRvRWxlbWVudFJ1bGVzKGluY2x1
ZGVFbXB0eVJ1bGVzLCBydWxlUmFuZ2UpOworICAgICAgICBtYXRjaEF1dGhvclNoYWRvd1BzZXVk
b0VsZW1lbnRSdWxlcygpOworICAgICAgICBtYXRjaFBhcnRQc2V1ZG9FbGVtZW50UnVsZXMoKTsK
ICAgICB9CiB9CiAKLXZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQXV0aG9yU2hhZG93
UHNldWRvRWxlbWVudFJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFN0eWxlUmVzb2x2ZXI6
OlJ1bGVSYW5nZSYgcnVsZVJhbmdlKQordm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hB
dXRob3JTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoKQogewogICAgIEFTU0VSVChlbGVtZW50KCku
aXNJblNoYWRvd1RyZWUoKSk7CiAgICAgYXV0byYgc2hhZG93Um9vdCA9ICplbGVtZW50KCkuY29u
dGFpbmluZ1NoYWRvd1Jvb3QoKTsKQEAgLTI0OCwxMSArMjU2LDExIEBAIHZvaWQgRWxlbWVudFJ1
bGVDb2xsZWN0b3I6Om1hdGNoQXV0aG9yU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKGJvb2wgaW5j
bHVkZUVtcHR5CiAgICAgICAgIHJldHVybjsKICAgICAvLyBMb29rIHVwIHNoYWRvdyBwc2V1ZG8g
ZWxlbWVudHMgYWxzbyBmcm9tIHRoZSBob3N0IHNjb3BlIGF1dGhvciBzdHlsZSBhcyB0aGV5IGFy
ZSB3ZWItZXhwb3NlZC4KICAgICBhdXRvJiBob3N0QXV0aG9yUnVsZXMgPSBTdHlsZTo6U2NvcGU6
OmZvck5vZGUoKnNoYWRvd1Jvb3QuaG9zdCgpKS5yZXNvbHZlcigpLnJ1bGVTZXRzKCkuYXV0aG9y
U3R5bGUoKTsKLSAgICBNYXRjaFJlcXVlc3QgaG9zdEF1dGhvclJlcXVlc3QgeyAmaG9zdEF1dGhv
clJ1bGVzLCBpbmNsdWRlRW1wdHlSdWxlcywgU3R5bGU6OlNjb3BlT3JkaW5hbDo6Q29udGFpbmlu
Z0hvc3QgfTsKLSAgICBjb2xsZWN0TWF0Y2hpbmdTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoaG9z
dEF1dGhvclJlcXVlc3QsIHJ1bGVSYW5nZSk7CisgICAgTWF0Y2hSZXF1ZXN0IGhvc3RBdXRob3JS
ZXF1ZXN0IHsgJmhvc3RBdXRob3JSdWxlcywgU3R5bGU6OlNjb3BlT3JkaW5hbDo6Q29udGFpbmlu
Z0hvc3QgfTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoaG9z
dEF1dGhvclJlcXVlc3QpOwogfQogCi12b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEhv
c3RQc2V1ZG9DbGFzc1J1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFN0eWxlUmVzb2x2ZXI6
OlJ1bGVSYW5nZSYgcnVsZVJhbmdlKQordm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hI
b3N0UHNldWRvQ2xhc3NSdWxlcygpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS5zaGFkb3dSb290
KCkpOwogCkBAIC0yNjMsMTEgKzI3MSwxMSBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpt
YXRjaEhvc3RQc2V1ZG9DbGFzc1J1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFN0eQogCiAg
ICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY2hhbmdlKG1faXNNYXRjaGluZ0hvc3RQc2V1ZG9DbGFzcywg
dHJ1ZSk7CiAKLSAgICBNYXRjaFJlcXVlc3QgaG9zdE1hdGNoUmVxdWVzdCB7IG51bGxwdHIsIGlu
Y2x1ZGVFbXB0eVJ1bGVzLCBTdHlsZTo6U2NvcGVPcmRpbmFsOjpTaGFkb3cgfTsKLSAgICBjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoJnNoYWRvd0hvc3RSdWxlcywgaG9zdE1hdGNoUmVxdWVz
dCwgcnVsZVJhbmdlKTsKKyAgICBNYXRjaFJlcXVlc3QgaG9zdE1hdGNoUmVxdWVzdCB7IG51bGxw
dHIsIFN0eWxlOjpTY29wZU9yZGluYWw6OlNoYWRvdyB9OworICAgIGNvbGxlY3RNYXRjaGluZ1J1
bGVzRm9yTGlzdCgmc2hhZG93SG9zdFJ1bGVzLCBob3N0TWF0Y2hSZXF1ZXN0KTsKIH0KIAotdm9p
ZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzKGJv
b2wgaW5jbHVkZUVtcHR5UnVsZXMsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYgcnVsZVJhbmdl
KQordm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hTbG90dGVkUHNldWRvRWxlbWVudFJ1
bGVzKCkKIHsKICAgICBhdXRvKiBzbG90ID0gZWxlbWVudCgpLmFzc2lnbmVkU2xvdCgpOwogICAg
IGF1dG8gc3R5bGVTY29wZU9yZGluYWwgPSBTdHlsZTo6U2NvcGVPcmRpbmFsOjpGaXJzdFNsb3Q7
CkBAIC0yNzksMjAgKzI4NywyMCBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFNs
b3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcwogICAgICAgICAv
LyBGaW5kIG91dCBpZiB0aGVyZSBhcmUgYW55IDo6c2xvdHRlZCBydWxlcyBpbiB0aGUgc2hhZG93
IHRyZWUgbWF0Y2hpbmcgdGhlIGN1cnJlbnQgc2xvdC4KICAgICAgICAgLy8gRklYTUU6IFRoaXMg
aXMgcmVhbGx5IHBhcnQgb2YgdGhlIHNsb3Qgc3R5bGUgYW5kIGNvdWxkIGJlIGNhY2hlZCB3aGVu
IHJlc29sdmluZyBpdC4KICAgICAgICAgRWxlbWVudFJ1bGVDb2xsZWN0b3IgY29sbGVjdG9yKCpz
bG90LCBzdHlsZVNjb3BlLnJlc29sdmVyKCkucnVsZVNldHMoKS5hdXRob3JTdHlsZSgpLCBudWxs
cHRyKTsKLSAgICAgICAgYXV0byBzbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzID0gY29sbGVjdG9y
LmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdChpbmNsdWRlRW1wdHlSdWxl
cyk7CisgICAgICAgIGF1dG8gc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyA9IGNvbGxlY3Rvci5j
b2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3QoKTsKICAgICAgICAgaWYgKCFz
bG90dGVkUHNldWRvRWxlbWVudFJ1bGVzKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IC8vIE1hdGNoIGluIHRoZSBjdXJyZW50IHNjb3BlLgogICAgICAgICBTZXRGb3JTY29wZTxib29s
PiBjaGFuZ2UobV9pc01hdGNoaW5nU2xvdHRlZFBzZXVkb0VsZW1lbnRzLCB0cnVlKTsKIAotICAg
ICAgICBNYXRjaFJlcXVlc3Qgc2NvcGVNYXRjaFJlcXVlc3QobnVsbHB0ciwgaW5jbHVkZUVtcHR5
UnVsZXMsIHN0eWxlU2NvcGVPcmRpbmFsKTsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNG
b3JMaXN0KHNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMuZ2V0KCksIHNjb3BlTWF0Y2hSZXF1ZXN0
LCBydWxlUmFuZ2UpOworICAgICAgICBNYXRjaFJlcXVlc3Qgc2NvcGVNYXRjaFJlcXVlc3QobnVs
bHB0ciwgc3R5bGVTY29wZU9yZGluYWwpOworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zv
ckxpc3Qoc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcy5nZXQoKSwgc2NvcGVNYXRjaFJlcXVlc3Qp
OwogCiAgICAgICAgIG1fa2VlcEFsaXZlU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcy5hcHBlbmQo
V1RGTW92ZShzbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzKSk7CiAgICAgfQogfQogCi12b2lkIEVs
ZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFBhcnRQc2V1ZG9FbGVtZW50UnVsZXMoYm9vbCBpbmNs
dWRlRW1wdHlSdWxlcywgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJiBydWxlUmFuZ2UpCit2b2lk
IEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFBhcnRQc2V1ZG9FbGVtZW50UnVsZXMoKQogewog
ICAgIEFTU0VSVChlbGVtZW50KCkuaXNJblNoYWRvd1RyZWUoKSk7CiAKQEAgLTMwMiwxOCArMzEw
LDE4IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoUGFydFBzZXVkb0VsZW1lbnRS
dWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBTCiAgICAgaWYgKHBhcnRNYXRjaGluZ0VsZW1l
bnQucGFydE5hbWVzKCkuaXNFbXB0eSgpIHx8ICFwYXJ0TWF0Y2hpbmdFbGVtZW50LmlzSW5TaGFk
b3dUcmVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1hdGNoUGFydFBzZXVkb0VsZW1lbnRS
dWxlc0ZvclNjb3BlKCpwYXJ0TWF0Y2hpbmdFbGVtZW50LmNvbnRhaW5pbmdTaGFkb3dSb290KCks
IGluY2x1ZGVFbXB0eVJ1bGVzLCBydWxlUmFuZ2UpOworICAgIG1hdGNoUGFydFBzZXVkb0VsZW1l
bnRSdWxlc0ZvclNjb3BlKCpwYXJ0TWF0Y2hpbmdFbGVtZW50LmNvbnRhaW5pbmdTaGFkb3dSb290
KCkpOwogfQogCi12b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFBhcnRQc2V1ZG9FbGVt
ZW50UnVsZXNGb3JTY29wZShjb25zdCBTaGFkb3dSb290JiBzY29wZVNoYWRvd1Jvb3QsIGJvb2wg
aW5jbHVkZUVtcHR5UnVsZXMsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYgcnVsZVJhbmdlKQor
dm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hQYXJ0UHNldWRvRWxlbWVudFJ1bGVzRm9y
U2NvcGUoY29uc3QgU2hhZG93Um9vdCYgc2NvcGVTaGFkb3dSb290KQogewogICAgIGF1dG8mIHNo
YWRvd0hvc3QgPSAqc2NvcGVTaGFkb3dSb290Lmhvc3QoKTsKICAgICB7CiAgICAgICAgIFNldEZv
clNjb3BlPFJlZlB0cjxjb25zdCBFbGVtZW50Pj4gcGFydE1hdGNoaW5nU2NvcGUobV9zaGFkb3dI
b3N0SW5QYXJ0UnVsZVNjb3BlLCAmc2hhZG93SG9zdCk7CiAKICAgICAgICAgYXV0byYgaG9zdEF1
dGhvclJ1bGVzID0gU3R5bGU6OlNjb3BlOjpmb3JOb2RlKHNoYWRvd0hvc3QpLnJlc29sdmVyKCku
cnVsZVNldHMoKS5hdXRob3JTdHlsZSgpOwotICAgICAgICBNYXRjaFJlcXVlc3QgaG9zdEF1dGhv
clJlcXVlc3QgeyAmaG9zdEF1dGhvclJ1bGVzLCBpbmNsdWRlRW1wdHlSdWxlcywgU3R5bGU6OlNj
b3BlT3JkaW5hbDo6Q29udGFpbmluZ0hvc3QgfTsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVs
ZXNGb3JMaXN0KCZob3N0QXV0aG9yUnVsZXMucGFydFBzZXVkb0VsZW1lbnRSdWxlcygpLCBob3N0
QXV0aG9yUmVxdWVzdCwgcnVsZVJhbmdlKTsKKyAgICAgICAgTWF0Y2hSZXF1ZXN0IGhvc3RBdXRo
b3JSZXF1ZXN0IHsgJmhvc3RBdXRob3JSdWxlcywgU3R5bGU6OlNjb3BlT3JkaW5hbDo6Q29udGFp
bmluZ0hvc3QgfTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KCZob3N0QXV0
aG9yUnVsZXMucGFydFBzZXVkb0VsZW1lbnRSdWxlcygpLCBob3N0QXV0aG9yUmVxdWVzdCk7CiAg
ICAgfQogCiAgICAgLy8gRWxlbWVudCBtYXkgYmUgZXhwb3NlZCB0byBzdHlsaW5nIGZyb20gZW5j
bG9zaW5nIHNjb3BlcyB2aWEgZXhwb3J0cGFydHMgYXR0cmlidXRlcy4KQEAgLTMyMSwxMCArMzI5
LDEwIEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoUGFydFBzZXVkb0VsZW1lbnRS
dWxlc0ZvclNjb3BlKGNvbnN0IFNoYWRvd1Jvb3QmCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChhdXRvKiBwYXJlbnRTY29wZVNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmNvbnRhaW5pbmdTaGFk
b3dSb290KCkpCi0gICAgICAgIG1hdGNoUGFydFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNjb3BlKCpw
YXJlbnRTY29wZVNoYWRvd1Jvb3QsIGluY2x1ZGVFbXB0eVJ1bGVzLCBydWxlUmFuZ2UpOworICAg
ICAgICBtYXRjaFBhcnRQc2V1ZG9FbGVtZW50UnVsZXNGb3JTY29wZSgqcGFyZW50U2NvcGVTaGFk
b3dSb290KTsKIH0KIAotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5n
U2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKGNvbnN0IE1hdGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0
LCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmIHJ1bGVSYW5nZSkKK3ZvaWQgRWxlbWVudFJ1bGVD
b2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhjb25zdCBN
YXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCkKIHsKICAgICBBU1NFUlQobWF0Y2hSZXF1ZXN0LnJ1
bGVTZXQpOwogICAgIEFTU0VSVChlbGVtZW50KCkuY29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+bW9k
ZSgpID09IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpOwpAQCAtMzMzLDE0ICszNDEsMTQgQEAg
dm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nU2hhZG93UHNldWRvRWxl
bWVudFJ1bGVzKGNvbnN0IE1hdGNoUmUKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLy8g
RlhJTUU6IFdlYlZUVCBzaG91bGQgbm90IGJlIGRvbmUgYnkgc3R5bGluZyBVQSBzaGFkb3cgdHJl
ZXMgbGlrZSB0aGlzLgogICAgIGlmIChlbGVtZW50KCkuaXNXZWJWVFRFbGVtZW50KCkpCi0gICAg
ICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy5jdWVQc2V1ZG9SdWxlcygpLCBt
YXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
TGlzdChydWxlcy5jdWVQc2V1ZG9SdWxlcygpLCBtYXRjaFJlcXVlc3QpOwogI2VuZGlmCiAgICAg
YXV0byYgcHNldWRvSWQgPSBlbGVtZW50KCkuc2hhZG93UHNldWRvSWQoKTsKICAgICBpZiAoIXBz
ZXVkb0lkLmlzRW1wdHkoKSkKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1
bGVzLnNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhwc2V1ZG9JZCksIG1hdGNoUmVxdWVzdCwgcnVs
ZVJhbmdlKTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1bGVzLnNoYWRv
d1BzZXVkb0VsZW1lbnRSdWxlcyhwc2V1ZG9JZCksIG1hdGNoUmVxdWVzdCk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gRWxlbWVudFJ1bGVDb2xsZWN0b3I6
OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdChib29sIGluY2x1ZGVFbXB0
eVJ1bGVzKQorc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBFbGVtZW50
UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90KCkK
IHsKICAgICBBU1NFUlQoaXM8SFRNTFNsb3RFbGVtZW50PihlbGVtZW50KCkpKTsKIApAQCAtMzQ5
LDkgKzM1Nyw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gRWxl
bWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNlCiAgICAgbV9tb2RlID0gU2VsZWN0
b3JDaGVja2VyOjpNb2RlOjpDb2xsZWN0aW5nUnVsZXM7CiAKICAgICAvLyBNYXRjaCBnbG9iYWwg
YXV0aG9yIHJ1bGVzLgotICAgIE1hdGNoUmVxdWVzdCBtYXRjaFJlcXVlc3QoJm1fYXV0aG9yU3R5
bGUsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKLSAgICBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UgcnVs
ZVJhbmdlID0gbV9yZXN1bHQucmFuZ2VzLmF1dGhvclJ1bGVSYW5nZSgpOwotICAgIGNvbGxlY3RN
YXRjaGluZ1J1bGVzRm9yTGlzdCgmbV9hdXRob3JTdHlsZS5zbG90dGVkUHNldWRvRWxlbWVudFJ1
bGVzKCksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKKyAgICBNYXRjaFJlcXVlc3QgbWF0Y2hS
ZXF1ZXN0KCZtX2F1dGhvclN0eWxlKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qo
Jm1fYXV0aG9yU3R5bGUuc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcygpLCBtYXRjaFJlcXVlc3Qp
OwogCiAgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKQEAgLTM2NCwxOCArMzcxLDE3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0OjpSdWxlRGF0
YVZlY3Rvcj4gRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNlCiAgICAgcmV0
dXJuIHJ1bGVEYXRhVmVjdG9yOwogfQogCi12b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRj
aFVzZXJSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQordm9pZCBFbGVtZW50UnVsZUNvbGxl
Y3Rvcjo6bWF0Y2hVc2VyUnVsZXMoKQogewogICAgIGlmICghbV91c2VyU3R5bGUpCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICBjbGVhck1hdGNoZWRSdWxlcygpOwogCi0gICAgTWF0Y2hSZXF1
ZXN0IG1hdGNoUmVxdWVzdChtX3VzZXJTdHlsZSwgaW5jbHVkZUVtcHR5UnVsZXMpOwotICAgIFN0
eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSBydWxlUmFuZ2UgPSBtX3Jlc3VsdC5yYW5nZXMudXNlclJ1
bGVSYW5nZSgpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVzdCwgcnVsZVJh
bmdlKTsKKyAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KG1fdXNlclN0eWxlKTsKKyAgICBj
b2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QpOwogCi0gICAgc29ydEFuZFRyYW5zZmVy
TWF0Y2hlZFJ1bGVzKCk7CisgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKERlY2xhcmF0
aW9uT3JpZ2luOjpVc2VyKTsKIH0KIAogdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hV
QVJ1bGVzKCkKQEAgLTM5OSwxMCArNDA1LDkgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6
bWF0Y2hVQVJ1bGVzKGNvbnN0IFJ1bGVTZXQmIHJ1bGVzKQogewogICAgIGNsZWFyTWF0Y2hlZFJ1
bGVzKCk7CiAgICAgCi0gICAgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlIHJ1bGVSYW5nZSA9IG1f
cmVzdWx0LnJhbmdlcy5VQVJ1bGVSYW5nZSgpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKE1h
dGNoUmVxdWVzdCgmcnVsZXMpLCBydWxlUmFuZ2UpOworICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
KE1hdGNoUmVxdWVzdCgmcnVsZXMpKTsKIAotICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxl
cygpOworICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhEZWNsYXJhdGlvbk9yaWdpbjo6
VXNlckFnZW50KTsKIH0KIAogc3RhdGljIGNvbnN0IENTU1NlbGVjdG9yKiBmaW5kU2xvdHRlZFBz
ZXVkb0VsZW1lbnRTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCkBAIC01MTQs
NyArNTE5LDcgQEAgaW5saW5lIGJvb2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVz
KGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgdW5zaWduZWQKICAgICByZXR1cm4gc2VsZWN0b3JN
YXRjaGVzOwogfQogCi12b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdS
dWxlc0Zvckxpc3QoY29uc3QgUnVsZVNldDo6UnVsZURhdGFWZWN0b3IqIHJ1bGVzLCBjb25zdCBN
YXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJiBydWxl
UmFuZ2UpCit2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zv
ckxpc3QoY29uc3QgUnVsZVNldDo6UnVsZURhdGFWZWN0b3IqIHJ1bGVzLCBjb25zdCBNYXRjaFJl
cXVlc3QmIG1hdGNoUmVxdWVzdCkKIHsKICAgICBpZiAoIXJ1bGVzKQogICAgICAgICByZXR1cm47
CkBAIC01MzQsMTIgKzUzOSwxMiBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0
TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgUnVsZVNldDo6UnVsZURhdGFWZQogICAgICAgICAv
LyBOb3RlIHRoYXQgaWYgd2UgZ2V0IG51bGwgYmFjayBoZXJlLCBpdCBtZWFucyB3ZSBoYXZlIGEg
cnVsZSB3aXRoIGRlZmVycmVkIHByb3BlcnRpZXMsCiAgICAgICAgIC8vIGFuZCB0aGF0IG1lYW5z
IHdlIGFsd2F5cyBoYXZlIHRvIGNvbnNpZGVyIGl0LgogICAgICAgICBjb25zdCBTdHlsZVByb3Bl
cnRpZXMqIHByb3BlcnRpZXMgPSBydWxlLT5wcm9wZXJ0aWVzV2l0aG91dERlZmVycmVkUGFyc2lu
ZygpOwotICAgICAgICBpZiAocHJvcGVydGllcyAmJiBwcm9wZXJ0aWVzLT5pc0VtcHR5KCkgJiYg
IW1hdGNoUmVxdWVzdC5pbmNsdWRlRW1wdHlSdWxlcykKKyAgICAgICAgaWYgKHByb3BlcnRpZXMg
JiYgcHJvcGVydGllcy0+aXNFbXB0eSgpICYmICFtX3Nob3VsZEluY2x1ZGVFbXB0eVJ1bGVzKQog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgdW5zaWduZWQgc3BlY2lmaWNpdHk7CiAg
ICAgICAgIGlmIChydWxlTWF0Y2hlcyhydWxlRGF0YSwgc3BlY2lmaWNpdHkpKQotICAgICAgICAg
ICAgYWRkTWF0Y2hlZFJ1bGUocnVsZURhdGEsIHNwZWNpZmljaXR5LCBtYXRjaFJlcXVlc3Quc3R5
bGVTY29wZU9yZGluYWwsIHJ1bGVSYW5nZSk7CisgICAgICAgICAgICBhZGRNYXRjaGVkUnVsZShy
dWxlRGF0YSwgc3BlY2lmaWNpdHksIG1hdGNoUmVxdWVzdC5zdHlsZVNjb3BlT3JkaW5hbCk7CiAg
ICAgfQogfQogCkBAIC01NjYsNyArNTcxLDcgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6
bWF0Y2hBbGxSdWxlcyhib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcywgYm9vbCBpbmMKIAog
ICAgIC8vIE5vdyB3ZSBjaGVjayB1c2VyIHNoZWV0IHJ1bGVzLgogICAgIGlmIChtYXRjaEF1dGhv
ckFuZFVzZXJTdHlsZXMpCi0gICAgICAgIG1hdGNoVXNlclJ1bGVzKGZhbHNlKTsKKyAgICAgICAg
bWF0Y2hVc2VyUnVsZXMoKTsKIAogICAgIC8vIE5vdyBjaGVjayBhdXRob3IgcnVsZXMsIGJlZ2lu
bmluZyBmaXJzdCB3aXRoIHByZXNlbnRhdGlvbmFsIGF0dHJpYnV0ZXMgbWFwcGVkIGZyb20gSFRN
TC4KICAgICBpZiAoaXM8U3R5bGVkRWxlbWVudD4oZWxlbWVudCgpKSkgewpAQCAtNTg5LDE2ICs1
OTQsMTYgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hBbGxSdWxlcyhib29sIG1h
dGNoQXV0aG9yQW5kVXNlclN0eWxlcywgYm9vbCBpbmMKICAgICBpZiAobWF0Y2hBdXRob3JBbmRV
c2VyU3R5bGVzKSB7CiAgICAgICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CiAKLSAgICAgICAgY29s
bGVjdE1hdGNoaW5nQXV0aG9yUnVsZXMoZmFsc2UpOworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdB
dXRob3JSdWxlcygpOwogICAgICAgICBzb3J0TWF0Y2hlZFJ1bGVzKCk7CiAKLSAgICAgICAgdHJh
bnNmZXJNYXRjaGVkUnVsZXMoU3R5bGU6OlNjb3BlT3JkaW5hbDo6RWxlbWVudCk7CisgICAgICAg
IHRyYW5zZmVyTWF0Y2hlZFJ1bGVzKERlY2xhcmF0aW9uT3JpZ2luOjpBdXRob3IsIFN0eWxlOjpT
Y29wZU9yZGluYWw6OkVsZW1lbnQpOwogCiAgICAgICAgIC8vIElubGluZSBzdHlsZSBiZWhhdmVz
IGFzIGlmIGl0IGhhcyBoaWdoZXIgc3BlY2lmaWNpdHkgdGhhbiBhbnkgcnVsZS4KICAgICAgICAg
YWRkRWxlbWVudElubGluZVN0eWxlUHJvcGVydGllcyhpbmNsdWRlU01JTFByb3BlcnRpZXMpOwog
CiAgICAgICAgIC8vIFJ1bGVzIGZyb20gdGhlIGhvc3Qgc2NvcGUgb3ZlcnJpZGUgaW5saW5lIHN0
eWxlLgotICAgICAgICB0cmFuc2Zlck1hdGNoZWRSdWxlcyhTdHlsZTo6U2NvcGVPcmRpbmFsOjpD
b250YWluaW5nSG9zdCk7CisgICAgICAgIHRyYW5zZmVyTWF0Y2hlZFJ1bGVzKERlY2xhcmF0aW9u
T3JpZ2luOjpBdXRob3IsIFN0eWxlOjpTY29wZU9yZGluYWw6OkNvbnRhaW5pbmdIb3N0KTsKICAg
ICB9CiB9CiAKQEAgLTYyMiw5ICs2MjcsNyBAQCBib29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpo
YXNBbnlNYXRjaGluZ1J1bGVzKGNvbnN0IFJ1bGVTZXQqIHJ1bGVTZXQpCiAgICAgY2xlYXJNYXRj
aGVkUnVsZXMoKTsKIAogICAgIG1fbW9kZSA9IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVj
dGluZ1J1bGVzSWdub3JpbmdWaXJ0dWFsUHNldWRvRWxlbWVudHM7Ci0gICAgaW50IGZpcnN0UnVs
ZUluZGV4ID0gLTEsIGxhc3RSdWxlSW5kZXggPSAtMTsKLSAgICBTdHlsZVJlc29sdmVyOjpSdWxl
UmFuZ2UgcnVsZVJhbmdlKGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKLSAgICBjb2xs
ZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVlc3QocnVsZVNldCksIHJ1bGVSYW5nZSk7CisgICAg
Y29sbGVjdE1hdGNoaW5nUnVsZXMoTWF0Y2hSZXF1ZXN0KHJ1bGVTZXQpKTsKIAogICAgIHJldHVy
biAhbV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuaAppbmRleCA5MDNmYjg5YmU5ZC4uMWRkYmZlYTljM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCkBAIC00NywxMCArNDcsMTIgQEAg
cHVibGljOgogICAgIEVsZW1lbnRSdWxlQ29sbGVjdG9yKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBE
b2N1bWVudFJ1bGVTZXRzJiwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqKTsKICAgICBFbGVtZW50UnVs
ZUNvbGxlY3Rvcihjb25zdCBFbGVtZW50JiwgY29uc3QgUnVsZVNldCYgYXV0aG9yU3R5bGUsIGNv
bnN0IFNlbGVjdG9yRmlsdGVyKik7CiAKKyAgICB2b2lkIHNldEluY2x1ZGVFbXB0eVJ1bGVzKGJv
b2wgdmFsdWUpIHsgbV9zaG91bGRJbmNsdWRlRW1wdHlSdWxlcyA9IHZhbHVlOyB9CisKICAgICB2
b2lkIG1hdGNoQWxsUnVsZXMoYm9vbCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMsIGJvb2wgaW5j
bHVkZVNNSUxQcm9wZXJ0aWVzKTsKICAgICB2b2lkIG1hdGNoVUFSdWxlcygpOwotICAgIHZvaWQg
bWF0Y2hBdXRob3JSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKLSAgICB2b2lkIG1hdGNo
VXNlclJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOworICAgIHZvaWQgbWF0Y2hBdXRob3JS
dWxlcygpOworICAgIHZvaWQgbWF0Y2hVc2VyUnVsZXMoKTsKIAogICAgIGJvb2wgbWF0Y2hlc0Fu
eUF1dGhvclJ1bGVzKCk7CiAKQEAgLTc0LDI3ICs3NiwyOSBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBtYXRjaFVBUnVsZXMoY29uc3QgUnVsZVNldCYpOwogCi0gICAgdm9pZCBjb2xsZWN0TWF0Y2hp
bmdBdXRob3JSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICB2b2lkIGNvbGxlY3RN
YXRjaGluZ0F1dGhvclJ1bGVzKCk7CiAgICAgdm9pZCBhZGRFbGVtZW50SW5saW5lU3R5bGVQcm9w
ZXJ0aWVzKGJvb2wgaW5jbHVkZVNNSUxQcm9wZXJ0aWVzKTsKIAotICAgIHZvaWQgbWF0Y2hBdXRo
b3JTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgU3R5bGVS
ZXNvbHZlcjo6UnVsZVJhbmdlJik7Ci0gICAgdm9pZCBtYXRjaEhvc3RQc2V1ZG9DbGFzc1J1bGVz
KGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYpOwotICAg
IHZvaWQgbWF0Y2hTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVs
ZXMsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYpOwotICAgIHZvaWQgbWF0Y2hQYXJ0UHNldWRv
RWxlbWVudFJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVS
YW5nZSYpOwotICAgIHZvaWQgbWF0Y2hQYXJ0UHNldWRvRWxlbWVudFJ1bGVzRm9yU2NvcGUoY29u
c3QgU2hhZG93Um9vdCYgc2NvcGVTaGFkb3dSb290LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBT
dHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmKTsKKyAgICB2b2lkIG1hdGNoQXV0aG9yU2hhZG93UHNl
dWRvRWxlbWVudFJ1bGVzKCk7CisgICAgdm9pZCBtYXRjaEhvc3RQc2V1ZG9DbGFzc1J1bGVzKCk7
CisgICAgdm9pZCBtYXRjaFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMoKTsKKyAgICB2b2lkIG1h
dGNoUGFydFBzZXVkb0VsZW1lbnRSdWxlcygpOworICAgIHZvaWQgbWF0Y2hQYXJ0UHNldWRvRWxl
bWVudFJ1bGVzRm9yU2NvcGUoY29uc3QgU2hhZG93Um9vdCYgc2NvcGVTaGFkb3dSb290KTsKIAot
ICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKGNvbnN0IE1h
dGNoUmVxdWVzdCYsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gY29sbGVjdFNsb3R0ZWRQc2V1ZG9FbGVtZW50
UnVsZXNGb3JTbG90KGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOworICAgIHZvaWQgY29sbGVjdE1h
dGNoaW5nU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKGNvbnN0IE1hdGNoUmVxdWVzdCYpOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gY29sbGVjdFNsb3R0ZWRQ
c2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90KCk7CiAKLSAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1
bGVzKGNvbnN0IE1hdGNoUmVxdWVzdCYsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYpOwotICAg
IHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFJ1bGVTZXQ6OlJ1bGVEYXRh
VmVjdG9yKiwgY29uc3QgTWF0Y2hSZXF1ZXN0JiwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJik7
CisgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmKTsKKyAg
ICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBSdWxlU2V0OjpSdWxlRGF0
YVZlY3RvciosIGNvbnN0IE1hdGNoUmVxdWVzdCYpOwogICAgIGJvb2wgcnVsZU1hdGNoZXMoY29u
c3QgUnVsZURhdGEmLCB1bnNpZ25lZCAmc3BlY2lmaWNpdHkpOwogCiAgICAgdm9pZCBzb3J0TWF0
Y2hlZFJ1bGVzKCk7Ci0gICAgdm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoKTsKLSAg
ICB2b2lkIHRyYW5zZmVyTWF0Y2hlZFJ1bGVzKE9wdGlvbmFsPFN0eWxlOjpTY29wZU9yZGluYWw+
IGZvclNjb3BlID0geyB9KTsKIAotICAgIHZvaWQgYWRkTWF0Y2hlZFJ1bGUoY29uc3QgUnVsZURh
dGEmLCB1bnNpZ25lZCBzcGVjaWZpY2l0eSwgU3R5bGU6OlNjb3BlT3JkaW5hbCwgU3R5bGVSZXNv
bHZlcjo6UnVsZVJhbmdlJik7CisgICAgZW51bSBjbGFzcyBEZWNsYXJhdGlvbk9yaWdpbiB7IFVz
ZXJBZ2VudCwgQXV0aG9yLCBVc2VyIH07CisgICAgdm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVk
UnVsZXMoRGVjbGFyYXRpb25PcmlnaW4pOworICAgIHZvaWQgdHJhbnNmZXJNYXRjaGVkUnVsZXMo
RGVjbGFyYXRpb25PcmlnaW4sIE9wdGlvbmFsPFN0eWxlOjpTY29wZU9yZGluYWw+IGZvclNjb3Bl
ID0geyB9KTsKKworICAgIHZvaWQgYWRkTWF0Y2hlZFJ1bGUoY29uc3QgUnVsZURhdGEmLCB1bnNp
Z25lZCBzcGVjaWZpY2l0eSwgU3R5bGU6OlNjb3BlT3JkaW5hbCk7CiAKICAgICBjb25zdCBFbGVt
ZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50LmdldCgpOyB9CiAKQEAgLTEw
NCw2ICsxMDgsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFJ1bGVTZXQqIG1fdXNlckFnZW50TWVk
aWFRdWVyeVN0eWxlIHsgbnVsbHB0ciB9OwogICAgIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBtX3Nl
bGVjdG9yRmlsdGVyIHsgbnVsbHB0ciB9OwogCisgICAgYm9vbCBtX3Nob3VsZEluY2x1ZGVFbXB0
eVJ1bGVzIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcmludFN0eWxlIHsgZmFsc2UgfTsKICAg
ICBQc2V1ZG9TdHlsZVJlcXVlc3QgbV9wc2V1ZG9TdHlsZVJlcXVlc3QgeyBQc2V1ZG9JZDo6Tm9u
ZSB9OwogICAgIFNlbGVjdG9yQ2hlY2tlcjo6TW9kZSBtX21vZGUgeyBTZWxlY3RvckNoZWNrZXI6
Ok1vZGU6OlJlc29sdmluZ1N0eWxlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
aW5kZXggMGMxM2M5OWQ3OTEuLmU0ZjE0ZGI5ODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCkBAIC01ODQsOCArNTg0LDggQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYKICAg
ICBjb2xsZWN0b3IubWF0Y2hVQVJ1bGVzKCk7CiAKICAgICBpZiAobV9tYXRjaEF1dGhvckFuZFVz
ZXJTdHlsZXMpIHsKLSAgICAgICAgY29sbGVjdG9yLm1hdGNoVXNlclJ1bGVzKGZhbHNlKTsKLSAg
ICAgICAgY29sbGVjdG9yLm1hdGNoQXV0aG9yUnVsZXMoZmFsc2UpOworICAgICAgICBjb2xsZWN0
b3IubWF0Y2hVc2VyUnVsZXMoKTsKKyAgICAgICAgY29sbGVjdG9yLm1hdGNoQXV0aG9yUnVsZXMo
KTsKICAgICB9CiAKICAgICBBU1NFUlQoIWNvbGxlY3Rvci5tYXRjaGVkUHNldWRvRWxlbWVudElk
cygpKTsKQEAgLTEyNTcsNiArMTI1Nyw3IEBAIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4gU3R5
bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoY29uc3QgRWxlbWVuCiAgICAg
Y29sbGVjdG9yLnNldE1vZGUoU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpDb2xsZWN0aW5nUnVsZXMp
OwogICAgIGNvbGxlY3Rvci5zZXRQc2V1ZG9TdHlsZVJlcXVlc3QoUHNldWRvU3R5bGVSZXF1ZXN0
KHBzZXVkb0lkKSk7CiAgICAgY29sbGVjdG9yLnNldE1lZGl1bSgmbV9tZWRpYVF1ZXJ5RXZhbHVh
dG9yKTsKKyAgICBjb2xsZWN0b3Iuc2V0SW5jbHVkZUVtcHR5UnVsZXMocnVsZXNUb0luY2x1ZGUg
JiBFbXB0eUNTU1J1bGVzKTsKIAogICAgIGlmIChydWxlc1RvSW5jbHVkZSAmIFVBQW5kVXNlckNT
U1J1bGVzKSB7CiAgICAgICAgIC8vIEZpcnN0IHdlIG1hdGNoIHJ1bGVzIGZyb20gdGhlIHVzZXIg
YWdlbnQgc2hlZXQuCkBAIC0xMjY0LDExICsxMjY1LDExIEBAIFZlY3RvcjxSZWZQdHI8U3R5bGVS
dWxlPj4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoY29uc3QgRWxl
bWVuCiAKICAgICAgICAgLy8gTm93IHdlIGNoZWNrIHVzZXIgc2hlZXQgcnVsZXMuCiAgICAgICAg
IGlmIChtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykKLSAgICAgICAgICAgIGNvbGxlY3Rvci5t
YXRjaFVzZXJSdWxlcyhydWxlc1RvSW5jbHVkZSAmIEVtcHR5Q1NTUnVsZXMpOworICAgICAgICAg
ICAgY29sbGVjdG9yLm1hdGNoVXNlclJ1bGVzKCk7CiAgICAgfQogCiAgICAgaWYgKG1fbWF0Y2hB
dXRob3JBbmRVc2VyU3R5bGVzICYmIChydWxlc1RvSW5jbHVkZSAmIEF1dGhvckNTU1J1bGVzKSkK
LSAgICAgICAgY29sbGVjdG9yLm1hdGNoQXV0aG9yUnVsZXMocnVsZXNUb0luY2x1ZGUgJiBFbXB0
eUNTU1J1bGVzKTsKKyAgICAgICAgY29sbGVjdG9yLm1hdGNoQXV0aG9yUnVsZXMoKTsKIAogICAg
IHJldHVybiBjb2xsZWN0b3IubWF0Y2hlZFJ1bGVMaXN0KCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381318</attachid>
            <date>2019-10-18 11:40:45 -0700</date>
            <delta_ts>2019-10-18 11:44:40 -0700</delta_ts>
            <desc>windows build fix</desc>
            <filename>elementrulecollector-cleanups-win-fix.patch</filename>
            <type>text/plain</type>
            <size>1335</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNDk5NzA0NDNmZi4uZWRhYThjMDVjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxOS0xMC0xOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgRWxlbWVudFJ1bGVDb2xsZWN0b3IgZnVuY3Rpb24gc2lnbmF0dXJlIGNsZWFu
dXBzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMx
NTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2NDEyNjg0PgorCisgICAgICAgIFVucmV2aWV3
ZWQgZm9sbG93dXAuCisKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OnRyYW5zZmVyTWF0Y2hlZFJ1
bGVzKToKKworICAgICAgICBUcnkgdG8gYXBwZWFzZSBNU1ZDLgorCiAyMDE5LTEwLTE4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBFbGVtZW50UnVsZUNvbGxl
Y3RvciBmdW5jdGlvbiBzaWduYXR1cmUgY2xlYW51cHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxl
bWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4IGNkOWViY2UwYzA3Li44ZTAzMDA5NGJmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC0xODQsNiAr
MTg0LDggQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6dHJhbnNmZXJNYXRjaGVkUnVsZXMo
RGVjbGFyYXRpb25PcmlnaW4gZGVjbGFyYXRpb25PcmkKICAgICAgICAgY2FzZSBEZWNsYXJhdGlv
bk9yaWdpbjo6QXV0aG9yOiByZXR1cm4gbV9yZXN1bHQucmFuZ2VzLmF1dGhvclJ1bGVSYW5nZSgp
OwogICAgICAgICBjYXNlIERlY2xhcmF0aW9uT3JpZ2luOjpVc2VyOiByZXR1cm4gbV9yZXN1bHQu
cmFuZ2VzLnVzZXJSdWxlUmFuZ2UoKTsKICAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG1fcmVzdWx0LnJhbmdlcy5hdXRob3JSdWxlUmFuZ2Uo
KTsKICAgICB9KCk7CiAKICAgICAvLyBGSVhNRTogUmFuZ2UgdXBkYXRpbmcgc2hvdWxkIGJlIGRv
bmUgYnkgTWF0Y2hSZXN1bHRzIHR5cGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>