<?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>182602</bug_id>
          
          <creation_ts>2018-02-08 05:06:54 -0800</creation_ts>
          <short_desc>Move compiled selectors to StyleRule</short_desc>
          <delta_ts>2018-02-09 01:12:20 -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>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>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1397507</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-02-08 05:06:54 -0800</bug_when>
    <thetext>Currently they are owned by RuleData. Several RuleData objects can refer to the same StyleRule, requiring recompilation. Compiled selectors are context-independent so they can be shared between all clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397515</commentid>
    <comment_count>1</comment_count>
      <attachid>333373</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-02-08 05:58:13 -0800</bug_when>
    <thetext>Created attachment 333373
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397850</commentid>
    <comment_count>2</comment_count>
      <attachid>333455</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-02-09 00:25:34 -0800</bug_when>
    <thetext>Created attachment 333455
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397866</commentid>
    <comment_count>3</comment_count>
      <attachid>333455</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-09 01:11:10 -0800</bug_when>
    <thetext>Comment on attachment 333455
patch

Clearing flags on attachment: 333455

Committed r228313: &lt;https://trac.webkit.org/changeset/228313&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397867</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-09 01:11:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397870</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-09 01:12:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/37383334&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333373</attachid>
            <date>2018-02-08 05:58:13 -0800</date>
            <delta_ts>2018-02-09 00:25:34 -0800</delta_ts>
            <desc>patch</desc>
            <filename>compiled-selector-stylerule-2.patch</filename>
            <type>text/plain</type>
            <size>24213</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE4LTAyLTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbXBpbGVkIHNlbGVj
dG9ycyB0byBTdHlsZVJ1bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4MjYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEN1cnJlbnRseSB0aGV5IGFyZSBvd25lZCBieSBSdWxlRGF0YS4gU2V2ZXJhbCBS
dWxlRGF0YSBvYmplY3RzIGNhbiByZWZlciB0byB0aGUgc2FtZSBTdHlsZVJ1bGUsIHJlcXVpcmlu
ZyByZWNvbXBpbGF0aW9uLgorICAgICAgICBDb21waWxlZCBzZWxlY3RvcnMgYXJlIGNvbnRleHQt
aW5kZXBlbmRlbnQgc28gdGhleSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gYWxsIGNsaWVudHMuCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
Y3NzL0NTU1NlbGVjdG9yTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxp
c3Q6Omxpc3RTaXplIGNvbnN0KToKKworICAgICAgICBDb21wdXRlIHRoZSBudW1iZXIgb2YgY29t
cGxleCBzZWxlY3RvcnMgb24gdGhlIGxpc3QuCisKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JM
aXN0Lmg6CisgICAgICAgICogY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZVJ1bGVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6
Y2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyBjb25zdCk6CisKKyAgICAgICAgUGFzcyBhcm91bmQg
bGlzdCBpbmRleCBhbG9uZyB3aXRoIHRoZSBzZWxlY3RvciBpbmRleCAoY29tcGlsZWQgc2VsZWN0
b3JzIGFyZSBmb3VuZCBieSBsaXN0IGluZGV4KS4KKworICAgICAgICAqIGNzcy9FbGVtZW50UnVs
ZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6
cnVsZU1hdGNoZXMpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bGVEYXRhOjpSdWxlRGF0YSk6CisgICAgICAgICogY3NzL1J1bGVTZXQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bGVEYXRhOjpjb21waWxhdGlvblN0YXR1cyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSdWxlRGF0YTo6Y29tcGlsZWRTZWxlY3RvckNvZGVSZWYgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVsZURhdGE6OnNldENvbXBpbGVkU2Vs
ZWN0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVsZURhdGE6On5SdWxl
RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSdWxlRGF0YTo6Y29tcGlsZWRTZWxl
Y3RvclVzZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlOjpTdHlsZVJ1bGUpOgorICAgICAgICAqIGNzcy9T
dHlsZVJ1bGUuaDoKKworICAgICAgICAgICAgQWRkIENvbXBpbGVkU2VsZWN0b3IgbWVtYmVyLgor
CisgICAgICAgICogY3Nzaml0L0NvbXBpbGVkU2VsZWN0b3IuaDogQWRkZWQuCisKKyAgICAgICAg
ICAgIE1vdmUgdG8gYSBoZWFkZXIgb2YgaXRzIG93biB0byBrZWVwcyBkZXBlbmRlbmNpZXMgc2lt
cGxlLgorCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzOjpTZWxl
Y3RvckNvbXBpbGF0aW9uU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGls
YXRpb25TdGF0dXM6Om9wZXJhdG9yIFN0YXR1cyBjb25zdCk6CisgICAgICAgICogY3Nzaml0L1Nl
bGVjdG9yQ29tcGlsZXIuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzOjpTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXM6Om9w
ZXJhdG9yIFN0YXR1cyBjb25zdCk6IERlbGV0ZWQuCisKIDIwMTgtMDItMDggIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIExheW91
dFRlc3Qgd2ViYXVkaW8vc2lsZW50LWF1ZGlvLWludGVycnVwdGVkLWluLWJhY2tncm91bmQuaHRt
bCBtYWtlcyBpdHMgc3Vic2VxdWVudCB0ZXN0IGZsYWt5IGNyYXNoCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
MjgxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTE0MDA3LDYgKzE0MDA3LDcgQEAKIAkJRTQzQUY4RTQxQUM1
QjdERDAwQ0E3MTdFIC8qIENhY2hlVmFsaWRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDYWNoZVZhbGlkYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNDNBRjhFNTFBQzVCN0REMDBDQTcxN0UgLyogQ2FjaGVWYWxpZGF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlVmFsaWRhdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDQwQUE5NTFDNjg0MjA4MDBBMjY1Q0MgLyogRWxl
bWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTQ0NTEwNzcyMDJDN0UwMTAwNjU3RDMzIC8qIENvbXBpbGVkU2Vs
ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGlsZWRTZWxlY3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDQ2MTM4RjBDRDYzMzEwMDBGQURB
NzUgLyogSFRNTEF1ZGlvRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBIVE1MQXVkaW9FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTQ0NjEzOTAwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxBdWRpb0VsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEF1ZGlvRWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNDQ2MTM5MTBDRDYzMzEwMDBGQURBNzUgLyogSFRNTEF1ZGlv
RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEF1ZGlvRWxlbWVudC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTk3NCw2ICsxNTk3NSw3IEBACiAJCTI2
Qjk5OThEMTgwM0FERkEwMEQwMTEyMSAvKiBjc3NqaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUU0NDUxMDc3MjAyQzdFMDEwMDY1N0QzMyAvKiBDb21w
aWxlZFNlbGVjdG9yLmggKi8sCiAJCQkJMjZCOTk5OTIxODAzQjlEOTAwRDAxMTIxIC8qIEZ1bmN0
aW9uQ2FsbC5oICovLAogCQkJCTI2Qjk5OThFMTgwM0FFNzIwMEQwMTEyMSAvKiBSZWdpc3RlckFs
bG9jYXRvci5oICovLAogCQkJCTI2Qjk5OTk0MTgwNEQ1NDIwMEQwMTEyMSAvKiBTZWxlY3RvckNv
bXBpbGVyLmNwcCAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3Bw
CShyZXZpc2lvbiAyMjgxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsMjAgQEAgdW5zaWduZWQgQ1NTU2VsZWN0
b3JMaXN0Ojpjb21wb25lbnRDb3VudAogICAgIHJldHVybiAoY3VycmVudCAtIG1fc2VsZWN0b3JB
cnJheSkgKyAxOwogfQogCit1bnNpZ25lZCBDU1NTZWxlY3Rvckxpc3Q6Omxpc3RTaXplKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fc2VsZWN0b3JBcnJheSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
dW5zaWduZWQgc2l6ZSA9IDE7CisgICAgQ1NTU2VsZWN0b3IqIGN1cnJlbnQgPSBtX3NlbGVjdG9y
QXJyYXk7CisgICAgd2hpbGUgKCFjdXJyZW50LT5pc0xhc3RJblNlbGVjdG9yTGlzdCgpKSB7Cisg
ICAgICAgIGlmIChjdXJyZW50LT5pc0xhc3RJblRhZ0hpc3RvcnkoKSkKKyAgICAgICAgICAgICsr
c2l6ZTsKKyAgICAgICAgKytjdXJyZW50OworICAgIH0KKyAgICByZXR1cm4gc2l6ZTsKK30KKwog
Q1NTU2VsZWN0b3JMaXN0JiBDU1NTZWxlY3Rvckxpc3Q6Om9wZXJhdG9yPShDU1NTZWxlY3Rvckxp
c3QmJiBvdGhlcikKIHsKICAgICBkZWxldGVTZWxlY3RvcnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3JMaXN0LmgJKHJldmlzaW9uIDIyODE1MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBidWlsZFNlbGVjdG9yc1RleHQoU3RyaW5nQnVpbGRlciYpIGNvbnN0
OwogCiAgICAgdW5zaWduZWQgY29tcG9uZW50Q291bnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBs
aXN0U2l6ZSgpIGNvbnN0OwogCiAgICAgQ1NTU2VsZWN0b3JMaXN0JiBvcGVyYXRvcj0oQ1NTU2Vs
ZWN0b3JMaXN0JiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMu
Y3BwCShyZXZpc2lvbiAyMjgxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxl
U2V0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJ1bGVTZXQ+IG1ha2VSdWxlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IGF1dG8gcnVsZVNldCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxl
c1tpXS5ydWxlLCBydWxlc1tpXS5zZWxlY3RvckluZGV4KTsKKyAgICAgICAgcnVsZVNldC0+YWRk
UnVsZShydWxlc1tpXS5ydWxlLCBydWxlc1tpXS5zZWxlY3RvckluZGV4LCBydWxlc1tpXS5zZWxl
Y3Rvckxpc3RJbmRleCk7CiAgICAgcnVsZVNldC0+c2hyaW5rVG9GaXQoKTsKICAgICByZXR1cm4g
cnVsZVNldDsKIH0KQEAgLTE4NCw3ICsxODQsNyBAQCBjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9u
UnVsZVNldD4qIERvY3VtCiAgICAgICAgICAgICBhdXRvJiBydWxlU2V0ID0gbWF0Y2hFbGVtZW50
QXJyYXlbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpmZWF0dXJlLm1hdGNoRWxlbWVudCldOwogICAg
ICAgICAgICAgaWYgKCFydWxlU2V0KQogICAgICAgICAgICAgICAgIHJ1bGVTZXQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJ1bGVTZXQ+KCk7Ci0gICAgICAgICAgICBydWxlU2V0LT5hZGRSdWxlKGZlYXR1
cmUucnVsZSwgZmVhdHVyZS5zZWxlY3RvckluZGV4KTsKKyAgICAgICAgICAgIHJ1bGVTZXQtPmFk
ZFJ1bGUoZmVhdHVyZS5ydWxlLCBmZWF0dXJlLnNlbGVjdG9ySW5kZXgsIGZlYXR1cmUuc2VsZWN0
b3JMaXN0SW5kZXgpOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gaW52YWxpZGF0aW9uUnVsZVNl
dHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4oKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNoRWxlbWVudEFycmF5LnNpemUoKTsg
KytpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5j
cHAJKHJldmlzaW9uIDIyODE1MikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNv
bGxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MywxOCArMzgzLDE2IEBAIGlubGluZSBi
b29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpydWxlTWEKICAgICB9CiAKICNpZiBFTkFCTEUoQ1NT
X1NFTEVDVE9SX0pJVCkKLSAgICB2b2lkKiBjb21waWxlZFNlbGVjdG9yQ2hlY2tlciA9IHJ1bGVE
YXRhLmNvbXBpbGVkU2VsZWN0b3JDb2RlUmVmKCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7
Ci0gICAgaWYgKCFjb21waWxlZFNlbGVjdG9yQ2hlY2tlciAmJiBydWxlRGF0YS5jb21waWxhdGlv
blN0YXR1cygpID09IFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXM6Ok5vdENvbXBpbGVkKSB7Ci0g
ICAgICAgIFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXMgY29tcGlsYXRpb25TdGF0dXM7Ci0gICAg
ICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvbXBpbGVkU2VsZWN0b3JDb2RlUmVmOwot
ICAgICAgICBjb21waWxhdGlvblN0YXR1cyA9IFNlbGVjdG9yQ29tcGlsZXI6OmNvbXBpbGVTZWxl
Y3RvcihydWxlRGF0YS5zZWxlY3RvcigpLCBTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvbnRl
eHQ6OlJ1bGVDb2xsZWN0b3IsIGNvbXBpbGVkU2VsZWN0b3JDb2RlUmVmKTsKKyAgICBhdXRvJiBj
b21waWxlZFNlbGVjdG9yID0gcnVsZURhdGEucnVsZSgpLT5jb21waWxlZFNlbGVjdG9yRm9yTGlz
dEluZGV4KHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkpOworICAgIHZvaWQqIGNvbXBpbGVk
U2VsZWN0b3JDaGVja2VyID0gY29tcGlsZWRTZWxlY3Rvci5jb2RlUmVmLmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpOworICAgIGlmICghY29tcGlsZWRTZWxlY3RvckNoZWNrZXIgJiYgY29tcGls
ZWRTZWxlY3Rvci5zdGF0dXMgPT0gU2VsZWN0b3JDb21waWxhdGlvblN0YXR1czo6Tm90Q29tcGls
ZWQpIHsKKyAgICAgICAgY29tcGlsZWRTZWxlY3Rvci5zdGF0dXMgPSBTZWxlY3RvckNvbXBpbGVy
Ojpjb21waWxlU2VsZWN0b3IocnVsZURhdGEuc2VsZWN0b3IoKSwgU2VsZWN0b3JDb21waWxlcjo6
U2VsZWN0b3JDb250ZXh0OjpSdWxlQ29sbGVjdG9yLCBjb21waWxlZFNlbGVjdG9yLmNvZGVSZWYp
OwogCi0gICAgICAgIHJ1bGVEYXRhLnNldENvbXBpbGVkU2VsZWN0b3IoY29tcGlsYXRpb25TdGF0
dXMsIGNvbXBpbGVkU2VsZWN0b3JDb2RlUmVmKTsKLSAgICAgICAgY29tcGlsZWRTZWxlY3RvckNo
ZWNrZXIgPSBydWxlRGF0YS5jb21waWxlZFNlbGVjdG9yQ29kZVJlZigpLmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpOworICAgICAgICBjb21waWxlZFNlbGVjdG9yQ2hlY2tlciA9IGNvbXBpbGVk
U2VsZWN0b3IuY29kZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICB9CiAKLSAg
ICBpZiAoY29tcGlsZWRTZWxlY3RvckNoZWNrZXIgJiYgcnVsZURhdGEuY29tcGlsYXRpb25TdGF0
dXMoKSA9PSBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzOjpTaW1wbGVTZWxlY3RvckNoZWNrZXIp
IHsKLSAgICAgICAgU2VsZWN0b3JDb21waWxlcjo6UnVsZUNvbGxlY3RvclNpbXBsZVNlbGVjdG9y
Q2hlY2tlciBzZWxlY3RvckNoZWNrZXIgPSBTZWxlY3RvckNvbXBpbGVyOjpydWxlQ29sbGVjdG9y
U2ltcGxlU2VsZWN0b3JDaGVja2VyRnVuY3Rpb24oY29tcGlsZWRTZWxlY3RvckNoZWNrZXIsIHJ1
bGVEYXRhLmNvbXBpbGF0aW9uU3RhdHVzKCkpOworICAgIGlmIChjb21waWxlZFNlbGVjdG9yQ2hl
Y2tlciAmJiBjb21waWxlZFNlbGVjdG9yLnN0YXR1cyA9PSBTZWxlY3RvckNvbXBpbGF0aW9uU3Rh
dHVzOjpTaW1wbGVTZWxlY3RvckNoZWNrZXIpIHsKKyAgICAgICAgYXV0byBzZWxlY3RvckNoZWNr
ZXIgPSBTZWxlY3RvckNvbXBpbGVyOjpydWxlQ29sbGVjdG9yU2ltcGxlU2VsZWN0b3JDaGVja2Vy
RnVuY3Rpb24oY29tcGlsZWRTZWxlY3RvckNoZWNrZXIsIGNvbXBpbGVkU2VsZWN0b3Iuc3RhdHVz
KTsKICNpZiAhQVNTRVJUX01TR19ESVNBQkxFRAogICAgICAgICB1bnNpZ25lZCBpZ25vcmVTcGVj
aWZpY2l0eTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc2VsZWN0b3JDaGVja2VyKCZt
X2VsZW1lbnQsICZpZ25vcmVTcGVjaWZpY2l0eSkgfHwgbV9wc2V1ZG9TdHlsZVJlcXVlc3QucHNl
dWRvSWQgPT0gTk9QU0VVRE8sICJXaGVuIG1hdGNoaW5nIHBzZXVkbyBlbGVtZW50cywgd2Ugc2hv
dWxkIG5ldmVyIGNvbXBpbGUgYSBzZWxlY3RvciBjaGVja2VyIHdpdGhvdXQgY29udGV4dCB1bmxl
c3MgaXQgY2Fubm90IG1hdGNoIGFueXRoaW5nLiIpOwpAQCAtNDIwLDEyICs0MTgsMTIgQEAgaW5s
aW5lIGJvb2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYQogICAgIGJvb2wgc2VsZWN0b3JN
YXRjaGVzOwogI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQogICAgIGlmIChjb21waWxlZFNl
bGVjdG9yQ2hlY2tlcikgewotICAgICAgICBBU1NFUlQocnVsZURhdGEuY29tcGlsYXRpb25TdGF0
dXMoKSA9PSBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzOjpTZWxlY3RvckNoZWNrZXJXaXRoQ2hl
Y2tpbmdDb250ZXh0KTsKKyAgICAgICAgQVNTRVJUKGNvbXBpbGVkU2VsZWN0b3Iuc3RhdHVzID09
IFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXM6OlNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0Nv
bnRleHQpOwogCi0gICAgICAgIFNlbGVjdG9yQ29tcGlsZXI6OlJ1bGVDb2xsZWN0b3JTZWxlY3Rv
ckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0IHNlbGVjdG9yQ2hlY2tlciA9IFNlbGVjdG9yQ29t
cGlsZXI6OnJ1bGVDb2xsZWN0b3JTZWxlY3RvckNoZWNrZXJGdW5jdGlvbldpdGhDaGVja2luZ0Nv
bnRleHQoY29tcGlsZWRTZWxlY3RvckNoZWNrZXIsIHJ1bGVEYXRhLmNvbXBpbGF0aW9uU3RhdHVz
KCkpOworICAgICAgICBhdXRvIHNlbGVjdG9yQ2hlY2tlciA9IFNlbGVjdG9yQ29tcGlsZXI6OnJ1
bGVDb2xsZWN0b3JTZWxlY3RvckNoZWNrZXJGdW5jdGlvbldpdGhDaGVja2luZ0NvbnRleHQoY29t
cGlsZWRTZWxlY3RvckNoZWNrZXIsIGNvbXBpbGVkU2VsZWN0b3Iuc3RhdHVzKTsKIAogI2lmIENT
U19TRUxFQ1RPUl9KSVRfUFJPRklMSU5HCi0gICAgICAgIHJ1bGVEYXRhLmNvbXBpbGVkU2VsZWN0
b3JVc2VkKCk7CisgICAgICAgIGNvbXBpbGVkU2VsZWN0b3IudXNlQ291bnQrKzsKICNlbmRpZgog
ICAgICAgICBzZWxlY3Rvck1hdGNoZXMgPSBzZWxlY3RvckNoZWNrZXIoJm1fZWxlbWVudCwgJmNv
bnRleHQsICZzcGVjaWZpY2l0eSk7CiAgICAgfSBlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZUZlYXR1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxl
RmVhdHVyZS5jcHAJKHJldmlzaW9uIDIyODE1MikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxl
RmVhdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NiwxMyArMTc2LDEzIEBAIHZvaWQgUnVs
ZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb24KICAgICBTZWxlY3RvckZlYXR1cmVzIHNl
bGVjdG9yRmVhdHVyZXM7CiAgICAgcmVjdXJzaXZlbHlDb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0
b3Ioc2VsZWN0b3JGZWF0dXJlcywgKnJ1bGVEYXRhLnNlbGVjdG9yKCkpOwogICAgIGlmIChzZWxl
Y3RvckZlYXR1cmVzLmhhc1NpYmxpbmdTZWxlY3RvcikKLSAgICAgICAgc2libGluZ1J1bGVzLmFw
cGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgo
KSkpOworICAgICAgICBzaWJsaW5nUnVsZXMuYXBwZW5kKFJ1bGVGZWF0dXJlKHJ1bGVEYXRhLnJ1
bGUoKSwgcnVsZURhdGEuc2VsZWN0b3JJbmRleCgpLCBydWxlRGF0YS5zZWxlY3Rvckxpc3RJbmRl
eCgpKSk7CiAgICAgaWYgKHJ1bGVEYXRhLmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rv
cigpKQotICAgICAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZChSdWxlRmVhdHVyZShy
dWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSkpOworICAgICAgICB1bmNv
bW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1
bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSkpOwog
ICAgIGZvciAoYXV0byYgbmFtZUFuZE1hdGNoIDogc2VsZWN0b3JGZWF0dXJlcy5jbGFzc2VzKSB7
CiAgICAgICAgIGNsYXNzUnVsZXMuZW5zdXJlKG5hbWVBbmRNYXRjaC5maXJzdCwgW10gewogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsK
LSAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEu
cnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIG5hbWVBbmRNYXRjaC5zZWNvbmQpKTsK
KyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEu
cnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdElu
ZGV4KCksIG5hbWVBbmRNYXRjaC5zZWNvbmQpKTsKICAgICAgICAgaWYgKG5hbWVBbmRNYXRjaC5z
ZWNvbmQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0KQogICAgICAgICAgICAgY2xhc3Nlc0FmZmVjdGlu
Z0hvc3QuYWRkKG5hbWVBbmRNYXRjaC5maXJzdCk7CiAgICAgfQpAQCAtMTkyLDcgKzE5Miw3IEBA
IHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb24KICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEF0dHJpYnV0ZVJ1bGVzPigpOwogICAgICAgICB9KTsKICAg
ICAgICAgYXV0byYgcnVsZXMgPSAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAg
cnVsZXMuZmVhdHVyZXMuYXBwZW5kKFJ1bGVGZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVsZURh
dGEuc2VsZWN0b3JJbmRleCgpKSk7CisgICAgICAgIHJ1bGVzLmZlYXR1cmVzLmFwcGVuZChSdWxl
RmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURh
dGEuc2VsZWN0b3JMaXN0SW5kZXgoKSkpOwogICAgICAgICAvLyBEZWR1cGxpY2F0ZSBzZWxlY3Rv
cnMuCiAgICAgICAgIHJ1bGVzLnNlbGVjdG9ycy5hZGQobWFrZUF0dHJpYnV0ZVNlbGVjdG9yS2V5
KCpzZWxlY3RvciksIHNlbGVjdG9yKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
UnVsZUZlYXR1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuaAkocmV2aXNpb24gMjI4MTUyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE0ICszNywxNiBAQCBlbnVtIGNsYXNzIE1hdGNoRWxl
bWVudCB7IFN1YmplY3QsIFBhcmVuCiBjb25zdGV4cHIgdW5zaWduZWQgbWF0Y2hFbGVtZW50Q291
bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWF0Y2hFbGVtZW50OjpIb3N0KSArIDE7CiAKIHN0
cnVjdCBSdWxlRmVhdHVyZSB7Ci0gICAgUnVsZUZlYXR1cmUoU3R5bGVSdWxlKiBydWxlLCB1bnNp
Z25lZCBzZWxlY3RvckluZGV4LCBzdGQ6Om9wdGlvbmFsPE1hdGNoRWxlbWVudD4gbWF0Y2hFbGVt
ZW50ID0gc3RkOjpudWxsb3B0KQorICAgIFJ1bGVGZWF0dXJlKFN0eWxlUnVsZSogcnVsZSwgdW5z
aWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXgsIHN0ZDo6b3B0
aW9uYWw8TWF0Y2hFbGVtZW50PiBtYXRjaEVsZW1lbnQgPSBzdGQ6Om51bGxvcHQpCiAgICAgICAg
IDogcnVsZShydWxlKQogICAgICAgICAsIHNlbGVjdG9ySW5kZXgoc2VsZWN0b3JJbmRleCkKKyAg
ICAgICAgLCBzZWxlY3Rvckxpc3RJbmRleChzZWxlY3Rvckxpc3RJbmRleCkKICAgICAgICAgLCBt
YXRjaEVsZW1lbnQobWF0Y2hFbGVtZW50KQogICAgIHsKICAgICB9CiAgICAgU3R5bGVSdWxlKiBy
dWxlOwogICAgIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXg7CisgICAgdW5zaWduZWQgc2VsZWN0b3JM
aXN0SW5kZXg7CiAgICAgc3RkOjpvcHRpb25hbDxNYXRjaEVsZW1lbnQ+IG1hdGNoRWxlbWVudDsK
IH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAJKHJldmlzaW9uIDIyODE1MikKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDkgKzE0
OCwxMCBAQCBzdGF0aWMgaW5saW5lIFByb3BlcnR5V2hpdGVsaXN0VHlwZSBkZXRlCiAgICAgcmV0
dXJuIFByb3BlcnR5V2hpdGVsaXN0Tm9uZTsKIH0KIAotUnVsZURhdGE6OlJ1bGVEYXRhKFN0eWxl
UnVsZSogcnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgcG9zaXRpb24pCitS
dWxlRGF0YTo6UnVsZURhdGEoU3R5bGVSdWxlKiBydWxlLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4
LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCwgdW5zaWduZWQgcG9zaXRpb24pCiAgICAgOiBt
X3J1bGUocnVsZSkKICAgICAsIG1fc2VsZWN0b3JJbmRleChzZWxlY3RvckluZGV4KQorICAgICwg
bV9zZWxlY3Rvckxpc3RJbmRleChzZWxlY3Rvckxpc3RJbmRleCkKICAgICAsIG1fcG9zaXRpb24o
cG9zaXRpb24pCiAgICAgLCBtX21hdGNoQmFzZWRPblJ1bGVIYXNoKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb21wdXRlTWF0Y2hCYXNlZE9uUnVsZUhhc2goKnNlbGVjdG9yKCkpKSkKICAgICAsIG1f
Y2FuTWF0Y2hQc2V1ZG9FbGVtZW50KHNlbGVjdG9yQ2FuTWF0Y2hQc2V1ZG9FbGVtZW50KCpzZWxl
Y3RvcigpKSkKQEAgLTE1OCw5ICsxNTksNiBAQCBSdWxlRGF0YTo6UnVsZURhdGEoU3R5bGVSdWxl
KiBydWxlLCB1bnNpCiAgICAgLCBtX2xpbmtNYXRjaFR5cGUoU2VsZWN0b3JDaGVja2VyOjpkZXRl
cm1pbmVMaW5rTWF0Y2hUeXBlKHNlbGVjdG9yKCkpKQogICAgICwgbV9wcm9wZXJ0eVdoaXRlbGlz
dFR5cGUoZGV0ZXJtaW5lUHJvcGVydHlXaGl0ZWxpc3RUeXBlKHNlbGVjdG9yKCkpKQogICAgICwg
bV9kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzKFNlbGVjdG9yRmlsdGVyOjpjb2xs
ZWN0SGFzaGVzKCpzZWxlY3RvcigpKSkKLSNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkgJiYg
Q1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcKLSAgICAsIG1fY29tcGlsZWRTZWxlY3RvclVzZUNv
dW50KDApCi0jZW5kaWYKIHsKICAgICBBU1NFUlQobV9wb3NpdGlvbiA9PSBwb3NpdGlvbik7CiAg
ICAgQVNTRVJUKG1fc2VsZWN0b3JJbmRleCA9PSBzZWxlY3RvckluZGV4KTsKQEAgLTIwMSw5ICsx
OTksOSBAQCBzdGF0aWMgYm9vbCBpc0hvc3RTZWxlY3Rvck1hdGNoaW5nSW5TaGFkCiAgICAgcmV0
dXJuIGxlZnRtb3N0U2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
ICYmIGxlZnRtb3N0U2VsZWN0b3ItPnBzZXVkb0NsYXNzVHlwZSgpID09IENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0hvc3Q7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1bGUqIHJ1
bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgpCit2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoU3R5bGVS
dWxlKiBydWxlLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJ
bmRleCkKIHsKLSAgICBSdWxlRGF0YSBydWxlRGF0YShydWxlLCBzZWxlY3RvckluZGV4LCBtX3J1
bGVDb3VudCsrKTsKKyAgICBSdWxlRGF0YSBydWxlRGF0YShydWxlLCBzZWxlY3RvckluZGV4LCBz
ZWxlY3Rvckxpc3RJbmRleCwgbV9ydWxlQ291bnQrKyk7CiAgICAgbV9mZWF0dXJlcy5jb2xsZWN0
RmVhdHVyZXMocnVsZURhdGEpOwogCiAgICAgdW5zaWduZWQgY2xhc3NCdWNrZXRTaXplID0gMDsK
QEAgLTQwNCw4ICs0MDIsOSBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxl
U2hlCiAKIHZvaWQgUnVsZVNldDo6YWRkU3R5bGVSdWxlKFN0eWxlUnVsZSogcnVsZSkKIHsKKyAg
ICB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCA9IDA7CiAgICAgZm9yIChzaXplX3Qgc2VsZWN0
b3JJbmRleCA9IDA7IHNlbGVjdG9ySW5kZXggIT0gbm90Rm91bmQ7IHNlbGVjdG9ySW5kZXggPSBy
dWxlLT5zZWxlY3Rvckxpc3QoKS5pbmRleE9mTmV4dFNlbGVjdG9yQWZ0ZXIoc2VsZWN0b3JJbmRl
eCkpCi0gICAgICAgIGFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCk7CisgICAgICAgIGFkZFJ1
bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgc2VsZWN0b3JMaXN0SW5kZXgrKyk7CiB9CiAKIGJvb2wg
UnVsZVNldDo6aGFzU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L1J1bGVTZXQuaAkocmV2aXNpb24gMjI4MTUyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1J1bGVT
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTIgKzU5LDEzIEBAIGNsYXNzIFJ1bGVEYXRhIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bVNlbGVjdG9yQ29tcG9u
ZW50Q291bnQgPSA4MTkyOwogCi0gICAgUnVsZURhdGEoU3R5bGVSdWxlKiwgdW5zaWduZWQgc2Vs
ZWN0b3JJbmRleCwgdW5zaWduZWQgcG9zaXRpb24pOworICAgIFJ1bGVEYXRhKFN0eWxlUnVsZSos
IHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCB1bnNp
Z25lZCBwb3NpdGlvbik7CiAKICAgICB1bnNpZ25lZCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fcG9zaXRpb247IH0KICAgICBTdHlsZVJ1bGUqIHJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3J1
bGUuZ2V0KCk7IH0KICAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX3J1bGUtPnNlbGVjdG9yTGlzdCgpLnNlbGVjdG9yQXQobV9zZWxlY3RvckluZGV4KTsg
fQogICAgIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9y
SW5kZXg7IH0KKyAgICB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VsZWN0b3JMaXN0SW5kZXg7IH0KIAogICAgIGJvb2wgY2FuTWF0Y2hQc2V1ZG9FbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9jYW5NYXRjaFBzZXVkb0VsZW1lbnQ7IH0KICAgICBNYXRjaEJh
c2VkT25SdWxlSGFzaCBtYXRjaEJhc2VkT25SdWxlSGFzaCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PE1hdGNoQmFzZWRPblJ1bGVIYXNoPihtX21hdGNoQmFzZWRPblJ1bGVIYXNoKTsgfQpA
QCAtNzUsMjcgKzc2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlzYWJsZVNlbGVjdG9yRmls
dGVyaW5nKCkgeyBtX2Rlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXNbMF0gPSAwOyB9
CiAKLSNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKLSAgICBTZWxlY3RvckNvbXBpbGF0aW9u
U3RhdHVzIGNvbXBpbGF0aW9uU3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9jb21waWxhdGlvblN0
YXR1czsgfQotICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvbXBpbGVkU2VsZWN0b3JD
b2RlUmVmKCkgY29uc3QgeyByZXR1cm4gbV9jb21waWxlZFNlbGVjdG9yQ29kZVJlZjsgfQotICAg
IHZvaWQgc2V0Q29tcGlsZWRTZWxlY3RvcihTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIHN0YXR1
cywgSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIG1fY29tcGlsYXRpb25TdGF0dXMgPSBzdGF0dXM7Ci0gICAgICAgIG1fY29tcGlsZWRTZWxl
Y3RvckNvZGVSZWYgPSBjb2RlUmVmOwotICAgIH0KLSNpZiBDU1NfU0VMRUNUT1JfSklUX1BST0ZJ
TElORwotICAgIH5SdWxlRGF0YSgpCi0gICAgewotICAgICAgICBpZiAobV9jb21waWxlZFNlbGVj
dG9yQ29kZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkKLSAgICAgICAgICAgIGRhdGFM
b2dGKCJSdWxlRGF0YSBjb21waWxlZCBzZWxlY3RvciAlZCBcIiVzXCJcbiIsIG1fY29tcGlsZWRT
ZWxlY3RvclVzZUNvdW50LCBzZWxlY3RvcigpLT5zZWxlY3RvclRleHQoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICB9Ci0gICAgdm9pZCBjb21waWxlZFNlbGVjdG9yVXNlZCgpIGNvbnN0IHsgbV9jb21w
aWxlZFNlbGVjdG9yVXNlQ291bnQrKzsgfQotI2VuZGlmCi0jZW5kaWYgLy8gRU5BQkxFKENTU19T
RUxFQ1RPUl9KSVQpCi0KIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0eWxlUnVsZT4gbV9ydWxlOwot
ICAgIHVuc2lnbmVkIG1fc2VsZWN0b3JJbmRleCA6IDEzOworICAgIHVuc2lnbmVkIG1fc2VsZWN0
b3JJbmRleCA6IDE2OworICAgIHVuc2lnbmVkIG1fc2VsZWN0b3JMaXN0SW5kZXggOiAxNjsKICAg
ICAvLyBUaGlzIG51bWJlciB3YXMgcGlja2VkIGZhaXJseSBhcmJpdHJhcmlseS4gV2UgY2FuIHBy
b2JhYmx5IGxvd2VyIGl0IGlmIHdlIG5lZWQgdG8uCiAgICAgLy8gU29tZSBzaW1wbGUgdGVzdGlu
ZyBzaG93ZWQgPDEwMCwwMDAgUnVsZURhdGEncyBvbiBsYXJnZSBzaXRlcy4KICAgICB1bnNpZ25l
ZCBtX3Bvc2l0aW9uIDogMTg7CkBAIC0xMDUsMjUgKzg5LDkgQEAgcHJpdmF0ZToKICAgICB1bnNp
Z25lZCBtX2xpbmtNYXRjaFR5cGUgOiAyOyAvLyAgU2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0Y2hN
YXNrCiAgICAgdW5zaWduZWQgbV9wcm9wZXJ0eVdoaXRlbGlzdFR5cGUgOiAyOwogICAgIFNlbGVj
dG9yRmlsdGVyOjpIYXNoZXMgbV9kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzOwot
I2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQotICAgIG11dGFibGUgU2VsZWN0b3JDb21waWxh
dGlvblN0YXR1cyBtX2NvbXBpbGF0aW9uU3RhdHVzOwotICAgIG11dGFibGUgSlNDOjpNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgbV9jb21waWxlZFNlbGVjdG9yQ29kZVJlZjsKLSNpZiBDU1NfU0VMRUNU
T1JfSklUX1BST0ZJTElORwotICAgIG11dGFibGUgdW5zaWduZWQgbV9jb21waWxlZFNlbGVjdG9y
VXNlQ291bnQ7Ci0jZW5kaWYKLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKIH07
CiAgICAgCiBzdHJ1Y3QgU2FtZVNpemVBc1J1bGVEYXRhIHsKLSNpZiBFTkFCTEUoQ1NTX1NFTEVD
VE9SX0pJVCkKLSAgICB1bnNpZ25lZCBjb21waWxhdGlvblN0YXR1czsKLSAgICB2b2lkKiBjb21w
aWxlZFNlbGVjdG9yUG9pbnRlcjsKLSAgICB2b2lkKiBjb2RlUmVmUHRyOwotI2lmIENTU19TRUxF
Q1RPUl9KSVRfUFJPRklMSU5HCi0gICAgdW5zaWduZWQgY29tcGlsZWRTZWxlY3RvclVzZUNvdW50
OwotI2VuZGlmCi0jZW5kaWYgLy8gRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCi0KICAgICB2b2lk
KiBhOwogICAgIHVuc2lnbmVkIGI7CiAgICAgdW5zaWduZWQgYzsKQEAgLTE1Miw3ICsxMjAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMm
LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgU3R5bGVSZXNvbHZlciogPSAwKTsKIAogICAg
IHZvaWQgYWRkU3R5bGVSdWxlKFN0eWxlUnVsZSopOwotICAgIHZvaWQgYWRkUnVsZShTdHlsZVJ1
bGUqLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4KTsKKyAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxl
KiwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXgpOwog
ICAgIHZvaWQgYWRkUGFnZVJ1bGUoU3R5bGVSdWxlUGFnZSopOwogICAgIHZvaWQgYWRkVG9SdWxl
U2V0KGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCBBdG9tUnVsZU1hcCYsIGNvbnN0IFJ1bGVEYXRh
Jik7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5j
cHAJKHJldmlzaW9uIDIyODE1MikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNiArMTkxLDkgQEAgU3R5bGVSdWxlOjpTdHlsZVJ1bGUo
Y29uc3QgU3R5bGVSdWxlJiBvKQogICAgIDogU3R5bGVSdWxlQmFzZShvKQogICAgICwgbV9wcm9w
ZXJ0aWVzKG8ucHJvcGVydGllcygpLm11dGFibGVDb3B5KCkpCiAgICAgLCBtX3NlbGVjdG9yTGlz
dChvLm1fc2VsZWN0b3JMaXN0KQorI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQorICAgICwg
bV9jb21waWxlZFNlbGVjdG9ycyhvLm1fY29tcGlsZWRTZWxlY3RvcnMpCisjZW5kaWYKIHsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAkocmV2aXNpb24gMjI4MTUyKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUg
IkNvbXBpbGVkU2VsZWN0b3IuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgpAQCAtMTM5LDYg
KzE0MCwxNSBAQCBwdWJsaWM6CiAKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IHNwbGl0
SW50b011bHRpcGxlUnVsZXNXaXRoTWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQodW5zaWdu
ZWQpIGNvbnN0OwogCisjaWYgRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCisgICAgQ29tcGlsZWRT
ZWxlY3RvciYgY29tcGlsZWRTZWxlY3RvckZvckxpc3RJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAg
ICB7CisgICAgICAgIGlmIChtX2NvbXBpbGVkU2VsZWN0b3JzLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIG1fY29tcGlsZWRTZWxlY3RvcnMuZ3JvdyhtX3NlbGVjdG9yTGlzdC5saXN0U2l6ZSgpKTsK
KyAgICAgICAgcmV0dXJuIG1fY29tcGlsZWRTZWxlY3RvcnNbaW5kZXhdOworICAgIH0KKyNlbmRp
ZgorCiAgICAgc3RhdGljIHVuc2lnbmVkIGF2ZXJhZ2VTaXplSW5CeXRlcygpOwogCiBwcml2YXRl
OgpAQCAtMTQ5LDYgKzE1OSwxMCBAQCBwcml2YXRlOgogCiAgICAgbXV0YWJsZSBSZWY8U3R5bGVQ
cm9wZXJ0aWVzQmFzZT4gbV9wcm9wZXJ0aWVzOwogICAgIENTU1NlbGVjdG9yTGlzdCBtX3NlbGVj
dG9yTGlzdDsKKworI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQorICAgIFZlY3RvcjxDb21w
aWxlZFNlbGVjdG9yPiBtX2NvbXBpbGVkU2VsZWN0b3JzOworI2VuZGlmCiB9OwogCiBpbmxpbmUg
Y29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBTdHlsZVJ1bGU6OnByb3BlcnRpZXNXaXRob3V0RGVmZXJy
ZWRQYXJzaW5nKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9Db21waWxlZFNl
bGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nzaml0L0NvbXBpbGVkU2Vs
ZWN0b3IuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRT
ZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQorCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyB7CitwdWJsaWM6
CisgICAgZW51bSBTdGF0dXMgeworICAgICAgICBOb3RDb21waWxlZCwKKyAgICAgICAgQ2Fubm90
Q29tcGlsZSwKKyAgICAgICAgU2ltcGxlU2VsZWN0b3JDaGVja2VyLAorICAgICAgICBTZWxlY3Rv
ckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0CisgICAgfTsKKworICAgIFNlbGVjdG9yQ29tcGls
YXRpb25TdGF0dXMoKQorICAgICAgICA6IG1fc3RhdHVzKE5vdENvbXBpbGVkKQorICAgIHsgfQor
CisgICAgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyhTdGF0dXMgc3RhdHVzKQorICAgICAgICA6
IG1fc3RhdHVzKHN0YXR1cykKKyAgICB7IH0KKworICAgIG9wZXJhdG9yIFN0YXR1cygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisKK3ByaXZhdGU6CisgICAgU3RhdHVzIG1fc3RhdHVzOwor
fTsKKworc3RydWN0IENvbXBpbGVkU2VsZWN0b3IgeworICAgIFNlbGVjdG9yQ29tcGlsYXRpb25T
dGF0dXMgc3RhdHVzOworICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWY7Cisj
aWYgZGVmaW5lZChDU1NfU0VMRUNUT1JfSklUX1BST0ZJTElORykgJiYgQ1NTX1NFTEVDVE9SX0pJ
VF9QUk9GSUxJTkcKKyAgICB1bnNpZ25lZCB1c2VDb3VudCB7IDAgfTsKKyNlbmRpZgorfTsKKwor
fQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIu
aAkocmV2aXNpb24gMjI4MTUyKQorKysgU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29t
cGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNDMgKzI3LDE1IEBACiAKICNpZiBFTkFCTEUo
Q1NTX1NFTEVDVE9SX0pJVCkKIAorI2luY2x1ZGUgIkNvbXBpbGVkU2VsZWN0b3IuaCIKICNpbmNs
dWRlICJTZWxlY3RvckNoZWNrZXIuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9NYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaD4KIAogI2RlZmluZSBDU1NfU0VMRUNUT1JfSklUX1BST0ZJTElORyAw
CiAKLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwotfQotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1NlbGVjdG9yOwogY2xhc3MgRWxlbWVudDsK
LWNsYXNzIFJlbmRlclN0eWxlOwotCi1jbGFzcyBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIHsK
LXB1YmxpYzoKLSAgICBlbnVtIFN0YXR1cyB7Ci0gICAgICAgIE5vdENvbXBpbGVkLAotICAgICAg
ICBDYW5ub3RDb21waWxlLAotICAgICAgICBTaW1wbGVTZWxlY3RvckNoZWNrZXIsCi0gICAgICAg
IFNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQKLSAgICB9OwotCi0gICAgU2VsZWN0
b3JDb21waWxhdGlvblN0YXR1cygpCi0gICAgICAgIDogbV9zdGF0dXMoTm90Q29tcGlsZWQpCi0g
ICAgeyB9Ci0KLSAgICBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzKFN0YXR1cyBzdGF0dXMpCi0g
ICAgICAgIDogbV9zdGF0dXMoc3RhdHVzKQotICAgIHsgfQotCi0gICAgb3BlcmF0b3IgU3RhdHVz
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KLQotcHJpdmF0ZToKLSAgICBTdGF0dXMgbV9z
dGF0dXM7Ci19OwogCiBuYW1lc3BhY2UgU2VsZWN0b3JDb21waWxlciB7CiAK
</data>
<flag name="review"
          id="352264"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333455</attachid>
            <date>2018-02-09 00:25:34 -0800</date>
            <delta_ts>2018-02-09 01:11:10 -0800</delta_ts>
            <desc>patch</desc>
            <filename>compiled-selector-stylerule-3.patch</filename>
            <type>text/plain</type>
            <size>24543</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODI4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE4LTAyLTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbXBpbGVkIHNlbGVj
dG9ycyB0byBTdHlsZVJ1bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4MjYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKwor
ICAgICAgICBDdXJyZW50bHkgdGhleSBhcmUgb3duZWQgYnkgUnVsZURhdGEuIFNldmVyYWwgUnVs
ZURhdGEgb2JqZWN0cyBjYW4gcmVmZXIgdG8gdGhlIHNhbWUgU3R5bGVSdWxlLCByZXF1aXJpbmcg
cmVjb21waWxhdGlvbi4KKyAgICAgICAgQ29tcGlsZWQgc2VsZWN0b3JzIGFyZSBjb250ZXh0LWlu
ZGVwZW5kZW50IHNvIHRoZXkgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGFsbCBjbGllbnRzLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNz
cy9DU1NTZWxlY3Rvckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0
OjpsaXN0U2l6ZSBjb25zdCk6CisKKyAgICAgICAgQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIGNvbXBs
ZXggc2VsZWN0b3JzIG9uIHRoZSBsaXN0LgorCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlz
dC5oOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om1ha2VSdWxlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OmNs
YXNzSW52YWxpZGF0aW9uUnVsZVNldHMgY29uc3QpOgorCisgICAgICAgIFBhc3MgYXJvdW5kIGxp
c3QgaW5kZXggYWxvbmcgd2l0aCB0aGUgc2VsZWN0b3IgaW5kZXggKGNvbXBpbGVkIHNlbGVjdG9y
cyBhcmUgZm91bmQgYnkgbGlzdCBpbmRleCkuCisKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVD
b2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1
bGVNYXRjaGVzKToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSdWxlRGF0YTo6UnVsZURhdGEpOgorICAgICAgICAqIGNzcy9SdWxlU2V0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpSdWxlRGF0YTo6Y29tcGlsYXRpb25TdGF0dXMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UnVsZURhdGE6OmNvbXBpbGVkU2VsZWN0b3JDb2RlUmVmIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVEYXRhOjpzZXRDb21waWxlZFNlbGVj
dG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVEYXRhOjp+UnVsZURh
dGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVsZURhdGE6OmNvbXBpbGVkU2VsZWN0
b3JVc2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZTo6U3R5bGVSdWxlKToKKyAgICAgICAgKiBjc3MvU3R5
bGVSdWxlLmg6CisKKyAgICAgICAgICAgIEFkZCBDb21waWxlZFNlbGVjdG9yIG1lbWJlci4KKwor
ICAgICAgICAqIGNzc2ppdC9Db21waWxlZFNlbGVjdG9yLmg6IEFkZGVkLgorCisgICAgICAgICAg
ICBNb3ZlIHRvIGEgaGVhZGVyIG9mIGl0cyBvd24gdG8ga2VlcHMgZGVwZW5kZW5jaWVzIHNpbXBs
ZS4KKworICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxhdGlvblN0YXR1czo6U2VsZWN0
b3JDb21waWxhdGlvblN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGF0
aW9uU3RhdHVzOjpvcGVyYXRvciBTdGF0dXMgY29uc3QpOgorICAgICAgICAqIGNzc2ppdC9TZWxl
Y3RvckNvbXBpbGVyLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JDb21waWxhdGlvblN0YXR1czo6U2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzOjpvcGVy
YXRvciBTdGF0dXMgY29uc3QpOiBEZWxldGVkLgorCiAyMDE4LTAyLTA4ICBBbnR0aSBLb2l2aXN0
byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgaW52YWxpZGF0aW9uIHJ1bGVzZXRz
IGZvciBhdHRyaWJ1dGUgc2VsZWN0b3JzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjgyODUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MDA4LDYgKzE0MDA4LDcgQEAKIAkJRTQzQUY4RTQxQUM1QjdERDAwQ0E3MTdFIC8q
IENhY2hlVmFsaWRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDYWNoZVZhbGlkYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDNB
RjhFNTFBQzVCN0REMDBDQTcxN0UgLyogQ2FjaGVWYWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlVmFsaWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNDQwQUE5NTFDNjg0MjA4MDBBMjY1Q0MgLyogRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTQ0NTEwNzcyMDJDN0UwMTAwNjU3RDMzIC8qIENvbXBpbGVkU2VsZWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGlsZWRTZWxlY3Rvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNDQ2MTM4RjBDRDYzMzEwMDBGQURBNzUgLyogSFRNTEF1ZGlv
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MQXVk
aW9FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ0NjEzOTAwQ0Q2
MzMxMDAwRkFEQTc1IC8qIEhUTUxBdWRpb0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSFRNTEF1ZGlvRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNDQ2MTM5MTBDRDYzMzEwMDBGQURBNzUgLyogSFRNTEF1ZGlvRWxlbWVudC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEF1ZGlvRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNTk3NSw2ICsxNTk3Niw3IEBACiAJCTI2Qjk5OThEMTgwM0FERkEw
MEQwMTEyMSAvKiBjc3NqaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCUU0NDUxMDc3MjAyQzdFMDEwMDY1N0QzMyAvKiBDb21waWxlZFNlbGVjdG9yLmgg
Ki8sCiAJCQkJMjZCOTk5OTIxODAzQjlEOTAwRDAxMTIxIC8qIEZ1bmN0aW9uQ2FsbC5oICovLAog
CQkJCTI2Qjk5OThFMTgwM0FFNzIwMEQwMTEyMSAvKiBSZWdpc3RlckFsbG9jYXRvci5oICovLAog
CQkJCTI2Qjk5OTk0MTgwNEQ1NDIwMEQwMTEyMSAvKiBTZWxlY3RvckNvbXBpbGVyLmNwcCAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCShyZXZpc2lvbiAyMjgy
ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTUsNiArOTUsMjAgQEAgdW5zaWduZWQgQ1NTU2VsZWN0b3JMaXN0Ojpjb21wb25l
bnRDb3VudAogICAgIHJldHVybiAoY3VycmVudCAtIG1fc2VsZWN0b3JBcnJheSkgKyAxOwogfQog
Cit1bnNpZ25lZCBDU1NTZWxlY3Rvckxpc3Q6Omxpc3RTaXplKCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fc2VsZWN0b3JBcnJheSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdW5zaWduZWQgc2l6ZSA9
IDE7CisgICAgQ1NTU2VsZWN0b3IqIGN1cnJlbnQgPSBtX3NlbGVjdG9yQXJyYXk7CisgICAgd2hp
bGUgKCFjdXJyZW50LT5pc0xhc3RJblNlbGVjdG9yTGlzdCgpKSB7CisgICAgICAgIGlmIChjdXJy
ZW50LT5pc0xhc3RJblRhZ0hpc3RvcnkoKSkKKyAgICAgICAgICAgICsrc2l6ZTsKKyAgICAgICAg
KytjdXJyZW50OworICAgIH0KKyAgICByZXR1cm4gc2l6ZTsKK30KKwogQ1NTU2VsZWN0b3JMaXN0
JiBDU1NTZWxlY3Rvckxpc3Q6Om9wZXJhdG9yPShDU1NTZWxlY3Rvckxpc3QmJiBvdGhlcikKIHsK
ICAgICBkZWxldGVTZWxlY3RvcnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvckxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JM
aXN0LmgJKHJldmlzaW9uIDIyODI4NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ckxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBidWlsZFNlbGVjdG9yc1RleHQoU3RyaW5nQnVpbGRlciYpIGNvbnN0OwogCiAgICAgdW5zaWdu
ZWQgY29tcG9uZW50Q291bnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsaXN0U2l6ZSgpIGNvbnN0
OwogCiAgICAgQ1NTU2VsZWN0b3JMaXN0JiBvcGVyYXRvcj0oQ1NTU2VsZWN0b3JMaXN0JiYpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCShyZXZpc2lvbiAy
MjgyODUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVT
ZXQ+IG1ha2VSdWxlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gcnVsZVNldCA9
IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkKLSAgICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlc1tpXS5ydWxlLCBydWxl
c1tpXS5zZWxlY3RvckluZGV4KTsKKyAgICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlc1tpXS5y
dWxlLCBydWxlc1tpXS5zZWxlY3RvckluZGV4LCBydWxlc1tpXS5zZWxlY3Rvckxpc3RJbmRleCk7
CiAgICAgcnVsZVNldC0+c2hyaW5rVG9GaXQoKTsKICAgICByZXR1cm4gcnVsZVNldDsKIH0KQEAg
LTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1
CiAgICAgICAgICAgICBhdXRvJiBydWxlU2V0ID0gbWF0Y2hFbGVtZW50QXJyYXlbYXJyYXlJbmRl
eF07CiAgICAgICAgICAgICBpZiAoIXJ1bGVTZXQpCiAgICAgICAgICAgICAgICAgcnVsZVNldCA9
IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKLSAgICAgICAgICAgIHJ1bGVTZXQtPmFkZFJ1
bGUoZmVhdHVyZS5ydWxlLCBmZWF0dXJlLnNlbGVjdG9ySW5kZXgpOworICAgICAgICAgICAgcnVs
ZVNldC0+YWRkUnVsZShmZWF0dXJlLnJ1bGUsIGZlYXR1cmUuc2VsZWN0b3JJbmRleCwgZmVhdHVy
ZS5zZWxlY3Rvckxpc3RJbmRleCk7CiAgICAgICAgICAgICBpZiAoZmVhdHVyZS5pbnZhbGlkYXRp
b25TZWxlY3RvcikKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRpb25TZWxlY3RvckFycmF5W2Fy
cmF5SW5kZXhdLmFwcGVuZChmZWF0dXJlLmludmFsaWRhdGlvblNlbGVjdG9yKTsKICAgICAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCShy
ZXZpc2lvbiAyMjgyODUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODMsMTggKzM4MywxNiBAQCBpbmxpbmUgYm9vbCBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hCiAgICAgfQogCiAjaWYgRU5BQkxFKENTU19TRUxF
Q1RPUl9KSVQpCi0gICAgdm9pZCogY29tcGlsZWRTZWxlY3RvckNoZWNrZXIgPSBydWxlRGF0YS5j
b21waWxlZFNlbGVjdG9yQ29kZVJlZigpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwotICAg
IGlmICghY29tcGlsZWRTZWxlY3RvckNoZWNrZXIgJiYgcnVsZURhdGEuY29tcGlsYXRpb25TdGF0
dXMoKSA9PSBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzOjpOb3RDb21waWxlZCkgewotICAgICAg
ICBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIGNvbXBpbGF0aW9uU3RhdHVzOwotICAgICAgICBK
U0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb21waWxlZFNlbGVjdG9yQ29kZVJlZjsKLSAgICAg
ICAgY29tcGlsYXRpb25TdGF0dXMgPSBTZWxlY3RvckNvbXBpbGVyOjpjb21waWxlU2VsZWN0b3Io
cnVsZURhdGEuc2VsZWN0b3IoKSwgU2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb250ZXh0OjpS
dWxlQ29sbGVjdG9yLCBjb21waWxlZFNlbGVjdG9yQ29kZVJlZik7CisgICAgYXV0byYgY29tcGls
ZWRTZWxlY3RvciA9IHJ1bGVEYXRhLnJ1bGUoKS0+Y29tcGlsZWRTZWxlY3RvckZvckxpc3RJbmRl
eChydWxlRGF0YS5zZWxlY3Rvckxpc3RJbmRleCgpKTsKKyAgICB2b2lkKiBjb21waWxlZFNlbGVj
dG9yQ2hlY2tlciA9IGNvbXBpbGVkU2VsZWN0b3IuY29kZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKKyAgICBpZiAoIWNvbXBpbGVkU2VsZWN0b3JDaGVja2VyICYmIGNvbXBpbGVkU2Vs
ZWN0b3Iuc3RhdHVzID09IFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXM6Ok5vdENvbXBpbGVkKSB7
CisgICAgICAgIGNvbXBpbGVkU2VsZWN0b3Iuc3RhdHVzID0gU2VsZWN0b3JDb21waWxlcjo6Y29t
cGlsZVNlbGVjdG9yKHJ1bGVEYXRhLnNlbGVjdG9yKCksIFNlbGVjdG9yQ29tcGlsZXI6OlNlbGVj
dG9yQ29udGV4dDo6UnVsZUNvbGxlY3RvciwgY29tcGlsZWRTZWxlY3Rvci5jb2RlUmVmKTsKIAot
ICAgICAgICBydWxlRGF0YS5zZXRDb21waWxlZFNlbGVjdG9yKGNvbXBpbGF0aW9uU3RhdHVzLCBj
b21waWxlZFNlbGVjdG9yQ29kZVJlZik7Ci0gICAgICAgIGNvbXBpbGVkU2VsZWN0b3JDaGVja2Vy
ID0gcnVsZURhdGEuY29tcGlsZWRTZWxlY3RvckNvZGVSZWYoKS5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKKyAgICAgICAgY29tcGlsZWRTZWxlY3RvckNoZWNrZXIgPSBjb21waWxlZFNlbGVj
dG9yLmNvZGVSZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgfQogCi0gICAgaWYg
KGNvbXBpbGVkU2VsZWN0b3JDaGVja2VyICYmIHJ1bGVEYXRhLmNvbXBpbGF0aW9uU3RhdHVzKCkg
PT0gU2VsZWN0b3JDb21waWxhdGlvblN0YXR1czo6U2ltcGxlU2VsZWN0b3JDaGVja2VyKSB7Ci0g
ICAgICAgIFNlbGVjdG9yQ29tcGlsZXI6OlJ1bGVDb2xsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNr
ZXIgc2VsZWN0b3JDaGVja2VyID0gU2VsZWN0b3JDb21waWxlcjo6cnVsZUNvbGxlY3RvclNpbXBs
ZVNlbGVjdG9yQ2hlY2tlckZ1bmN0aW9uKGNvbXBpbGVkU2VsZWN0b3JDaGVja2VyLCBydWxlRGF0
YS5jb21waWxhdGlvblN0YXR1cygpKTsKKyAgICBpZiAoY29tcGlsZWRTZWxlY3RvckNoZWNrZXIg
JiYgY29tcGlsZWRTZWxlY3Rvci5zdGF0dXMgPT0gU2VsZWN0b3JDb21waWxhdGlvblN0YXR1czo6
U2ltcGxlU2VsZWN0b3JDaGVja2VyKSB7CisgICAgICAgIGF1dG8gc2VsZWN0b3JDaGVja2VyID0g
U2VsZWN0b3JDb21waWxlcjo6cnVsZUNvbGxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlckZ1bmN0
aW9uKGNvbXBpbGVkU2VsZWN0b3JDaGVja2VyLCBjb21waWxlZFNlbGVjdG9yLnN0YXR1cyk7CiAj
aWYgIUFTU0VSVF9NU0dfRElTQUJMRUQKICAgICAgICAgdW5zaWduZWQgaWdub3JlU3BlY2lmaWNp
dHk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXNlbGVjdG9yQ2hlY2tlcigmbV9lbGVt
ZW50LCAmaWdub3JlU3BlY2lmaWNpdHkpIHx8IG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lk
ID09IE5PUFNFVURPLCAiV2hlbiBtYXRjaGluZyBwc2V1ZG8gZWxlbWVudHMsIHdlIHNob3VsZCBu
ZXZlciBjb21waWxlIGEgc2VsZWN0b3IgY2hlY2tlciB3aXRob3V0IGNvbnRleHQgdW5sZXNzIGl0
IGNhbm5vdCBtYXRjaCBhbnl0aGluZy4iKTsKQEAgLTQyMCwxMiArNDE4LDEyIEBAIGlubGluZSBi
b29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpydWxlTWEKICAgICBib29sIHNlbGVjdG9yTWF0Y2hl
czsKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKICAgICBpZiAoY29tcGlsZWRTZWxlY3Rv
ckNoZWNrZXIpIHsKLSAgICAgICAgQVNTRVJUKHJ1bGVEYXRhLmNvbXBpbGF0aW9uU3RhdHVzKCkg
PT0gU2VsZWN0b3JDb21waWxhdGlvblN0YXR1czo6U2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5n
Q29udGV4dCk7CisgICAgICAgIEFTU0VSVChjb21waWxlZFNlbGVjdG9yLnN0YXR1cyA9PSBTZWxl
Y3RvckNvbXBpbGF0aW9uU3RhdHVzOjpTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0
KTsKIAotICAgICAgICBTZWxlY3RvckNvbXBpbGVyOjpSdWxlQ29sbGVjdG9yU2VsZWN0b3JDaGVj
a2VyV2l0aENoZWNraW5nQ29udGV4dCBzZWxlY3RvckNoZWNrZXIgPSBTZWxlY3RvckNvbXBpbGVy
OjpydWxlQ29sbGVjdG9yU2VsZWN0b3JDaGVja2VyRnVuY3Rpb25XaXRoQ2hlY2tpbmdDb250ZXh0
KGNvbXBpbGVkU2VsZWN0b3JDaGVja2VyLCBydWxlRGF0YS5jb21waWxhdGlvblN0YXR1cygpKTsK
KyAgICAgICAgYXV0byBzZWxlY3RvckNoZWNrZXIgPSBTZWxlY3RvckNvbXBpbGVyOjpydWxlQ29s
bGVjdG9yU2VsZWN0b3JDaGVja2VyRnVuY3Rpb25XaXRoQ2hlY2tpbmdDb250ZXh0KGNvbXBpbGVk
U2VsZWN0b3JDaGVja2VyLCBjb21waWxlZFNlbGVjdG9yLnN0YXR1cyk7CiAKICNpZiBDU1NfU0VM
RUNUT1JfSklUX1BST0ZJTElORwotICAgICAgICBydWxlRGF0YS5jb21waWxlZFNlbGVjdG9yVXNl
ZCgpOworICAgICAgICBjb21waWxlZFNlbGVjdG9yLnVzZUNvdW50Kys7CiAjZW5kaWYKICAgICAg
ICAgc2VsZWN0b3JNYXRjaGVzID0gc2VsZWN0b3JDaGVja2VyKCZtX2VsZW1lbnQsICZjb250ZXh0
LCAmc3BlY2lmaWNpdHkpOwogICAgIH0gZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1J1
bGVGZWF0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuY3BwCShyZXZpc2lvbiAyMjgyODUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsMjQgKzE2OCwyMyBAQCB2b2lkIFJ1bGVGZWF0
dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMoY29uCiAgICAgU2VsZWN0b3JGZWF0dXJlcyBzZWxlY3Rv
ckZlYXR1cmVzOwogICAgIHJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKHNl
bGVjdG9yRmVhdHVyZXMsICpydWxlRGF0YS5zZWxlY3RvcigpKTsKICAgICBpZiAoc2VsZWN0b3JG
ZWF0dXJlcy5oYXNTaWJsaW5nU2VsZWN0b3IpCi0gICAgICAgIHNpYmxpbmdSdWxlcy5hcHBlbmQo
UnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCkpKTsK
KyAgICAgICAgc2libGluZ1J1bGVzLmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCks
IHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSkp
OwogICAgIGlmIChydWxlRGF0YS5jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoKSkK
LSAgICAgICAgdW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURh
dGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCkpKTsKKyAgICAgICAgdW5jb21tb25B
dHRyaWJ1dGVSdWxlcy5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0
YS5zZWxlY3RvckluZGV4KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkpKTsKIAogICAg
IGZvciAoYXV0byYgbmFtZUFuZE1hdGNoIDogc2VsZWN0b3JGZWF0dXJlcy5jbGFzc2VzKSB7CiAg
ICAgICAgIGNsYXNzUnVsZXMuZW5zdXJlKG5hbWVBbmRNYXRjaC5maXJzdCwgW10gewogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKLSAg
ICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVs
ZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIG5hbWVBbmRNYXRjaC5zZWNvbmQpKTsKKyAg
ICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVs
ZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4
KCksIG5hbWVBbmRNYXRjaC5zZWNvbmQpKTsKICAgICAgICAgaWYgKG5hbWVBbmRNYXRjaC5zZWNv
bmQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0KQogICAgICAgICAgICAgY2xhc3Nlc0FmZmVjdGluZ0hv
c3QuYWRkKG5hbWVBbmRNYXRjaC5maXJzdCk7CiAgICAgfQotCiAgICAgZm9yIChhdXRvJiBzZWxl
Y3RvckFuZE1hdGNoIDogc2VsZWN0b3JGZWF0dXJlcy5hdHRyaWJ1dGVzKSB7CiAgICAgICAgIGF1
dG8qIHNlbGVjdG9yID0gc2VsZWN0b3JBbmRNYXRjaC5maXJzdDsKICAgICAgICAgYXV0byBtYXRj
aEVsZW1lbnQgPSBzZWxlY3RvckFuZE1hdGNoLnNlY29uZDsKICAgICAgICAgYXR0cmlidXRlUnVs
ZXMuZW5zdXJlKHNlbGVjdG9yLT5hdHRyaWJ1dGUoKS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpLCBbXSB7CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8UnVsZUZlYXR1cmU+PigpOwotICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVu
ZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwg
bWF0Y2hFbGVtZW50LCBzZWxlY3RvcikpOworICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFw
cGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgo
KSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSwgbWF0Y2hFbGVtZW50LCBzZWxlY3Rvcikp
OwogICAgICAgICBpZiAobWF0Y2hFbGVtZW50ID09IE1hdGNoRWxlbWVudDo6SG9zdCkKICAgICAg
ICAgICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFkZChzZWxlY3Rvci0+YXR0cmlidXRlKCku
bG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL1J1bGVGZWF0dXJlLmgJKHJldmlzaW9uIDIyODI4NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9SdWxlRmVhdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNSArMzcsMTcgQEAgZW51
bSBjbGFzcyBNYXRjaEVsZW1lbnQgeyBTdWJqZWN0LCBQYXJlbgogY29uc3RleHByIHVuc2lnbmVk
IG1hdGNoRWxlbWVudENvdW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE1hdGNoRWxlbWVudDo6
SG9zdCkgKyAxOwogCiBzdHJ1Y3QgUnVsZUZlYXR1cmUgewotICAgIFJ1bGVGZWF0dXJlKFN0eWxl
UnVsZSogcnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgc3RkOjpvcHRpb25hbDxNYXRjaEVs
ZW1lbnQ+IG1hdGNoRWxlbWVudCA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQ1NTU2VsZWN0b3IqIGlu
dmFsaWRhdGlvblNlbGVjdG9yID0gbnVsbHB0cikKKyAgICBSdWxlRmVhdHVyZShTdHlsZVJ1bGUq
IHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4
LCBzdGQ6Om9wdGlvbmFsPE1hdGNoRWxlbWVudD4gbWF0Y2hFbGVtZW50ID0gc3RkOjpudWxsb3B0
LCBjb25zdCBDU1NTZWxlY3RvciogaW52YWxpZGF0aW9uU2VsZWN0b3IgPSBudWxscHRyKQogICAg
ICAgICA6IHJ1bGUocnVsZSkKICAgICAgICAgLCBzZWxlY3RvckluZGV4KHNlbGVjdG9ySW5kZXgp
CisgICAgICAgICwgc2VsZWN0b3JMaXN0SW5kZXgoc2VsZWN0b3JMaXN0SW5kZXgpCiAgICAgICAg
ICwgbWF0Y2hFbGVtZW50KG1hdGNoRWxlbWVudCkKICAgICAgICAgLCBpbnZhbGlkYXRpb25TZWxl
Y3RvcihpbnZhbGlkYXRpb25TZWxlY3RvcikKICAgICB7CiAgICAgfQogICAgIFN0eWxlUnVsZSog
cnVsZTsKICAgICB1bnNpZ25lZCBzZWxlY3RvckluZGV4OworICAgIHVuc2lnbmVkIHNlbGVjdG9y
TGlzdEluZGV4OwogICAgIHN0ZDo6b3B0aW9uYWw8TWF0Y2hFbGVtZW50PiBtYXRjaEVsZW1lbnQ7
CiAgICAgY29uc3QgQ1NTU2VsZWN0b3IqIGludmFsaWRhdGlvblNlbGVjdG9yOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5jcHAJKHJldmlzaW9uIDIyODI4NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9SdWxlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDkgKzE0OCwxMCBAQCBzdGF0
aWMgaW5saW5lIFByb3BlcnR5V2hpdGVsaXN0VHlwZSBkZXRlCiAgICAgcmV0dXJuIFByb3BlcnR5
V2hpdGVsaXN0Tm9uZTsKIH0KIAotUnVsZURhdGE6OlJ1bGVEYXRhKFN0eWxlUnVsZSogcnVsZSwg
dW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgcG9zaXRpb24pCitSdWxlRGF0YTo6UnVs
ZURhdGEoU3R5bGVSdWxlKiBydWxlLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBz
ZWxlY3Rvckxpc3RJbmRleCwgdW5zaWduZWQgcG9zaXRpb24pCiAgICAgOiBtX3J1bGUocnVsZSkK
ICAgICAsIG1fc2VsZWN0b3JJbmRleChzZWxlY3RvckluZGV4KQorICAgICwgbV9zZWxlY3Rvckxp
c3RJbmRleChzZWxlY3Rvckxpc3RJbmRleCkKICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAg
ICAgLCBtX21hdGNoQmFzZWRPblJ1bGVIYXNoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb21wdXRl
TWF0Y2hCYXNlZE9uUnVsZUhhc2goKnNlbGVjdG9yKCkpKSkKICAgICAsIG1fY2FuTWF0Y2hQc2V1
ZG9FbGVtZW50KHNlbGVjdG9yQ2FuTWF0Y2hQc2V1ZG9FbGVtZW50KCpzZWxlY3RvcigpKSkKQEAg
LTE1OCw5ICsxNTksNiBAQCBSdWxlRGF0YTo6UnVsZURhdGEoU3R5bGVSdWxlKiBydWxlLCB1bnNp
CiAgICAgLCBtX2xpbmtNYXRjaFR5cGUoU2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVMaW5rTWF0
Y2hUeXBlKHNlbGVjdG9yKCkpKQogICAgICwgbV9wcm9wZXJ0eVdoaXRlbGlzdFR5cGUoZGV0ZXJt
aW5lUHJvcGVydHlXaGl0ZWxpc3RUeXBlKHNlbGVjdG9yKCkpKQogICAgICwgbV9kZXNjZW5kYW50
U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzKFNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0SGFzaGVzKCpz
ZWxlY3RvcigpKSkKLSNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkgJiYgQ1NTX1NFTEVDVE9S
X0pJVF9QUk9GSUxJTkcKLSAgICAsIG1fY29tcGlsZWRTZWxlY3RvclVzZUNvdW50KDApCi0jZW5k
aWYKIHsKICAgICBBU1NFUlQobV9wb3NpdGlvbiA9PSBwb3NpdGlvbik7CiAgICAgQVNTRVJUKG1f
c2VsZWN0b3JJbmRleCA9PSBzZWxlY3RvckluZGV4KTsKQEAgLTIwMSw5ICsxOTksOSBAQCBzdGF0
aWMgYm9vbCBpc0hvc3RTZWxlY3Rvck1hdGNoaW5nSW5TaGFkCiAgICAgcmV0dXJuIGxlZnRtb3N0
U2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzICYmIGxlZnRtb3N0
U2VsZWN0b3ItPnBzZXVkb0NsYXNzVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hv
c3Q7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIHVuc2lnbmVk
IHNlbGVjdG9ySW5kZXgpCit2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoU3R5bGVSdWxlKiBydWxlLCB1
bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCkKIHsKLSAg
ICBSdWxlRGF0YSBydWxlRGF0YShydWxlLCBzZWxlY3RvckluZGV4LCBtX3J1bGVDb3VudCsrKTsK
KyAgICBSdWxlRGF0YSBydWxlRGF0YShydWxlLCBzZWxlY3RvckluZGV4LCBzZWxlY3Rvckxpc3RJ
bmRleCwgbV9ydWxlQ291bnQrKyk7CiAgICAgbV9mZWF0dXJlcy5jb2xsZWN0RmVhdHVyZXMocnVs
ZURhdGEpOwogCiAgICAgdW5zaWduZWQgY2xhc3NCdWNrZXRTaXplID0gMDsKQEAgLTQwNCw4ICs0
MDIsOSBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlCiAKIHZvaWQg
UnVsZVNldDo6YWRkU3R5bGVSdWxlKFN0eWxlUnVsZSogcnVsZSkKIHsKKyAgICB1bnNpZ25lZCBz
ZWxlY3Rvckxpc3RJbmRleCA9IDA7CiAgICAgZm9yIChzaXplX3Qgc2VsZWN0b3JJbmRleCA9IDA7
IHNlbGVjdG9ySW5kZXggIT0gbm90Rm91bmQ7IHNlbGVjdG9ySW5kZXggPSBydWxlLT5zZWxlY3Rv
ckxpc3QoKS5pbmRleE9mTmV4dFNlbGVjdG9yQWZ0ZXIoc2VsZWN0b3JJbmRleCkpCi0gICAgICAg
IGFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCk7CisgICAgICAgIGFkZFJ1bGUocnVsZSwgc2Vs
ZWN0b3JJbmRleCwgc2VsZWN0b3JMaXN0SW5kZXgrKyk7CiB9CiAKIGJvb2wgUnVsZVNldDo6aGFz
U2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9SdWxlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAko
cmV2aXNpb24gMjI4Mjg1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTksMTIgKzU5LDEzIEBAIGNsYXNzIFJ1bGVEYXRhIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQgPSA4
MTkyOwogCi0gICAgUnVsZURhdGEoU3R5bGVSdWxlKiwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwg
dW5zaWduZWQgcG9zaXRpb24pOworICAgIFJ1bGVEYXRhKFN0eWxlUnVsZSosIHVuc2lnbmVkIHNl
bGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCB1bnNpZ25lZCBwb3NpdGlv
bik7CiAKICAgICB1bnNpZ25lZCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247
IH0KICAgICBTdHlsZVJ1bGUqIHJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3J1bGUuZ2V0KCk7IH0K
ICAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3J1bGUt
PnNlbGVjdG9yTGlzdCgpLnNlbGVjdG9yQXQobV9zZWxlY3RvckluZGV4KTsgfQogICAgIHVuc2ln
bmVkIHNlbGVjdG9ySW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9ySW5kZXg7IH0KKyAg
ICB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3JM
aXN0SW5kZXg7IH0KIAogICAgIGJvb2wgY2FuTWF0Y2hQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYW5NYXRjaFBzZXVkb0VsZW1lbnQ7IH0KICAgICBNYXRjaEJhc2VkT25SdWxlSGFz
aCBtYXRjaEJhc2VkT25SdWxlSGFzaCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGNo
QmFzZWRPblJ1bGVIYXNoPihtX21hdGNoQmFzZWRPblJ1bGVIYXNoKTsgfQpAQCAtNzUsMjcgKzc2
LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlzYWJsZVNlbGVjdG9yRmlsdGVyaW5nKCkgeyBt
X2Rlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXNbMF0gPSAwOyB9CiAKLSNpZiBFTkFC
TEUoQ1NTX1NFTEVDVE9SX0pJVCkKLSAgICBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIGNvbXBp
bGF0aW9uU3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9jb21waWxhdGlvblN0YXR1czsgfQotICAg
IEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvbXBpbGVkU2VsZWN0b3JDb2RlUmVmKCkgY29u
c3QgeyByZXR1cm4gbV9jb21waWxlZFNlbGVjdG9yQ29kZVJlZjsgfQotICAgIHZvaWQgc2V0Q29t
cGlsZWRTZWxlY3RvcihTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIHN0YXR1cywgSlNDOjpNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZikgY29uc3QKLSAgICB7Ci0gICAgICAgIG1fY29tcGls
YXRpb25TdGF0dXMgPSBzdGF0dXM7Ci0gICAgICAgIG1fY29tcGlsZWRTZWxlY3RvckNvZGVSZWYg
PSBjb2RlUmVmOwotICAgIH0KLSNpZiBDU1NfU0VMRUNUT1JfSklUX1BST0ZJTElORwotICAgIH5S
dWxlRGF0YSgpCi0gICAgewotICAgICAgICBpZiAobV9jb21waWxlZFNlbGVjdG9yQ29kZVJlZi5j
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkKLSAgICAgICAgICAgIGRhdGFMb2dGKCJSdWxlRGF0
YSBjb21waWxlZCBzZWxlY3RvciAlZCBcIiVzXCJcbiIsIG1fY29tcGlsZWRTZWxlY3RvclVzZUNv
dW50LCBzZWxlY3RvcigpLT5zZWxlY3RvclRleHQoKS51dGY4KCkuZGF0YSgpKTsKLSAgICB9Ci0g
ICAgdm9pZCBjb21waWxlZFNlbGVjdG9yVXNlZCgpIGNvbnN0IHsgbV9jb21waWxlZFNlbGVjdG9y
VXNlQ291bnQrKzsgfQotI2VuZGlmCi0jZW5kaWYgLy8gRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQp
Ci0KIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0eWxlUnVsZT4gbV9ydWxlOwotICAgIHVuc2lnbmVk
IG1fc2VsZWN0b3JJbmRleCA6IDEzOworICAgIHVuc2lnbmVkIG1fc2VsZWN0b3JJbmRleCA6IDE2
OworICAgIHVuc2lnbmVkIG1fc2VsZWN0b3JMaXN0SW5kZXggOiAxNjsKICAgICAvLyBUaGlzIG51
bWJlciB3YXMgcGlja2VkIGZhaXJseSBhcmJpdHJhcmlseS4gV2UgY2FuIHByb2JhYmx5IGxvd2Vy
IGl0IGlmIHdlIG5lZWQgdG8uCiAgICAgLy8gU29tZSBzaW1wbGUgdGVzdGluZyBzaG93ZWQgPDEw
MCwwMDAgUnVsZURhdGEncyBvbiBsYXJnZSBzaXRlcy4KICAgICB1bnNpZ25lZCBtX3Bvc2l0aW9u
IDogMTg7CkBAIC0xMDUsMjUgKzg5LDkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xpbmtN
YXRjaFR5cGUgOiAyOyAvLyAgU2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0Y2hNYXNrCiAgICAgdW5z
aWduZWQgbV9wcm9wZXJ0eVdoaXRlbGlzdFR5cGUgOiAyOwogICAgIFNlbGVjdG9yRmlsdGVyOjpI
YXNoZXMgbV9kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzOwotI2lmIEVOQUJMRShD
U1NfU0VMRUNUT1JfSklUKQotICAgIG11dGFibGUgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyBt
X2NvbXBpbGF0aW9uU3RhdHVzOwotICAgIG11dGFibGUgSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgbV9jb21waWxlZFNlbGVjdG9yQ29kZVJlZjsKLSNpZiBDU1NfU0VMRUNUT1JfSklUX1BST0ZJ
TElORwotICAgIG11dGFibGUgdW5zaWduZWQgbV9jb21waWxlZFNlbGVjdG9yVXNlQ291bnQ7Ci0j
ZW5kaWYKLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKIH07CiAgICAgCiBzdHJ1
Y3QgU2FtZVNpemVBc1J1bGVEYXRhIHsKLSNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKLSAg
ICB1bnNpZ25lZCBjb21waWxhdGlvblN0YXR1czsKLSAgICB2b2lkKiBjb21waWxlZFNlbGVjdG9y
UG9pbnRlcjsKLSAgICB2b2lkKiBjb2RlUmVmUHRyOwotI2lmIENTU19TRUxFQ1RPUl9KSVRfUFJP
RklMSU5HCi0gICAgdW5zaWduZWQgY29tcGlsZWRTZWxlY3RvclVzZUNvdW50OwotI2VuZGlmCi0j
ZW5kaWYgLy8gRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCi0KICAgICB2b2lkKiBhOwogICAgIHVu
c2lnbmVkIGI7CiAgICAgdW5zaWduZWQgYzsKQEAgLTE1Miw3ICsxMjAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMmLCBjb25zdCBNZWRp
YVF1ZXJ5RXZhbHVhdG9yJiwgU3R5bGVSZXNvbHZlciogPSAwKTsKIAogICAgIHZvaWQgYWRkU3R5
bGVSdWxlKFN0eWxlUnVsZSopOwotICAgIHZvaWQgYWRkUnVsZShTdHlsZVJ1bGUqLCB1bnNpZ25l
ZCBzZWxlY3RvckluZGV4KTsKKyAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlKiwgdW5zaWduZWQg
c2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXgpOwogICAgIHZvaWQgYWRk
UGFnZVJ1bGUoU3R5bGVSdWxlUGFnZSopOwogICAgIHZvaWQgYWRkVG9SdWxlU2V0KGNvbnN0IEF0
b21pY1N0cmluZyYga2V5LCBBdG9tUnVsZU1hcCYsIGNvbnN0IFJ1bGVEYXRhJik7CiAgICAgdm9p
ZCBzaHJpbmtUb0ZpdCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAJKHJldmlzaW9u
IDIyODI4NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTEsNiArMTkxLDkgQEAgU3R5bGVSdWxlOjpTdHlsZVJ1bGUoY29uc3QgU3R5bGVS
dWxlJiBvKQogICAgIDogU3R5bGVSdWxlQmFzZShvKQogICAgICwgbV9wcm9wZXJ0aWVzKG8ucHJv
cGVydGllcygpLm11dGFibGVDb3B5KCkpCiAgICAgLCBtX3NlbGVjdG9yTGlzdChvLm1fc2VsZWN0
b3JMaXN0KQorI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQorICAgICwgbV9jb21waWxlZFNl
bGVjdG9ycyhvLm1fY29tcGlsZWRTZWxlY3RvcnMpCisjZW5kaWYKIHsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJ1bGUuaAkocmV2aXNpb24gMjI4Mjg1KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIkNvbXBpbGVkU2Vs
ZWN0b3IuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgpAQCAtMTM5LDYgKzE0MCwxNSBAQCBw
dWJsaWM6CiAKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IHNwbGl0SW50b011bHRpcGxl
UnVsZXNXaXRoTWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQodW5zaWduZWQpIGNvbnN0Owog
CisjaWYgRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCisgICAgQ29tcGlsZWRTZWxlY3RvciYgY29t
cGlsZWRTZWxlY3RvckZvckxpc3RJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAg
IGlmIChtX2NvbXBpbGVkU2VsZWN0b3JzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fY29tcGls
ZWRTZWxlY3RvcnMuZ3JvdyhtX3NlbGVjdG9yTGlzdC5saXN0U2l6ZSgpKTsKKyAgICAgICAgcmV0
dXJuIG1fY29tcGlsZWRTZWxlY3RvcnNbaW5kZXhdOworICAgIH0KKyNlbmRpZgorCiAgICAgc3Rh
dGljIHVuc2lnbmVkIGF2ZXJhZ2VTaXplSW5CeXRlcygpOwogCiBwcml2YXRlOgpAQCAtMTQ5LDYg
KzE1OSwxMCBAQCBwcml2YXRlOgogCiAgICAgbXV0YWJsZSBSZWY8U3R5bGVQcm9wZXJ0aWVzQmFz
ZT4gbV9wcm9wZXJ0aWVzOwogICAgIENTU1NlbGVjdG9yTGlzdCBtX3NlbGVjdG9yTGlzdDsKKwor
I2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQorICAgIFZlY3RvcjxDb21waWxlZFNlbGVjdG9y
PiBtX2NvbXBpbGVkU2VsZWN0b3JzOworI2VuZGlmCiB9OwogCiBpbmxpbmUgY29uc3QgU3R5bGVQ
cm9wZXJ0aWVzKiBTdHlsZVJ1bGU6OnByb3BlcnRpZXNXaXRob3V0RGVmZXJyZWRQYXJzaW5nKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9Db21waWxlZFNlbGVjdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nzaml0L0NvbXBpbGVkU2VsZWN0b3IuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQorCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyB7CitwdWJsaWM6CisgICAgZW51bSBT
dGF0dXMgeworICAgICAgICBOb3RDb21waWxlZCwKKyAgICAgICAgQ2Fubm90Q29tcGlsZSwKKyAg
ICAgICAgU2ltcGxlU2VsZWN0b3JDaGVja2VyLAorICAgICAgICBTZWxlY3RvckNoZWNrZXJXaXRo
Q2hlY2tpbmdDb250ZXh0CisgICAgfTsKKworICAgIFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXMo
KQorICAgICAgICA6IG1fc3RhdHVzKE5vdENvbXBpbGVkKQorICAgIHsgfQorCisgICAgU2VsZWN0
b3JDb21waWxhdGlvblN0YXR1cyhTdGF0dXMgc3RhdHVzKQorICAgICAgICA6IG1fc3RhdHVzKHN0
YXR1cykKKyAgICB7IH0KKworICAgIG9wZXJhdG9yIFN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdHVzOyB9CisKK3ByaXZhdGU6CisgICAgU3RhdHVzIG1fc3RhdHVzOworfTsKKworc3RydWN0
IENvbXBpbGVkU2VsZWN0b3IgeworICAgIFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXMgc3RhdHVz
OworICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWY7CisjaWYgZGVmaW5lZChD
U1NfU0VMRUNUT1JfSklUX1BST0ZJTElORykgJiYgQ1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcK
KyAgICB1bnNpZ25lZCB1c2VDb3VudCB7IDAgfTsKKyNlbmRpZgorfTsKKworfQorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuaAkocmV2aXNpb24g
MjI4Mjg1KQorKysgU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNDMgKzI3LDE1IEBACiAKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9S
X0pJVCkKIAorI2luY2x1ZGUgIkNvbXBpbGVkU2VsZWN0b3IuaCIKICNpbmNsdWRlICJTZWxlY3Rv
ckNoZWNrZXIuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9NYWNyb0Fzc2VtYmxlckNvZGVS
ZWYuaD4KIAogI2RlZmluZSBDU1NfU0VMRUNUT1JfSklUX1BST0ZJTElORyAwCiAKLW5hbWVzcGFj
ZSBKU0MgewotY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwotfQotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENTU1NlbGVjdG9yOwogY2xhc3MgRWxlbWVudDsKLWNsYXNzIFJlbmRl
clN0eWxlOwotCi1jbGFzcyBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIHsKLXB1YmxpYzoKLSAg
ICBlbnVtIFN0YXR1cyB7Ci0gICAgICAgIE5vdENvbXBpbGVkLAotICAgICAgICBDYW5ub3RDb21w
aWxlLAotICAgICAgICBTaW1wbGVTZWxlY3RvckNoZWNrZXIsCi0gICAgICAgIFNlbGVjdG9yQ2hl
Y2tlcldpdGhDaGVja2luZ0NvbnRleHQKLSAgICB9OwotCi0gICAgU2VsZWN0b3JDb21waWxhdGlv
blN0YXR1cygpCi0gICAgICAgIDogbV9zdGF0dXMoTm90Q29tcGlsZWQpCi0gICAgeyB9Ci0KLSAg
ICBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzKFN0YXR1cyBzdGF0dXMpCi0gICAgICAgIDogbV9z
dGF0dXMoc3RhdHVzKQotICAgIHsgfQotCi0gICAgb3BlcmF0b3IgU3RhdHVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0dXM7IH0KLQotcHJpdmF0ZToKLSAgICBTdGF0dXMgbV9zdGF0dXM7Ci19Owog
CiBuYW1lc3BhY2UgU2VsZWN0b3JDb21waWxlciB7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>