<?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>173491</bug_id>
          
          <creation_ts>2017-06-16 13:08:42 -0700</creation_ts>
          <short_desc>Interpreter methods for mapping between Opcode and OpcodeID need not be instance methods.</short_desc>
          <delta_ts>2017-06-16 14:03:16 -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>JavaScriptCore</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>buildbot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1320112</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-06-16 13:08:42 -0700</bug_when>
    <thetext>This gets rid of some unnecessary work to get the interpreter pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320128</commentid>
    <comment_count>1</comment_count>
      <attachid>313122</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-06-16 13:37:20 -0700</bug_when>
    <thetext>Created attachment 313122
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320129</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 13:38:59 -0700</bug_when>
    <thetext>Attachment 313122 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320136</commentid>
    <comment_count>3</comment_count>
      <attachid>313122</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-16 13:45:33 -0700</bug_when>
    <thetext>Comment on attachment 313122
proposed patch.

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320154</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-06-16 14:03:16 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r218412: &lt;http://trac.webkit.org/r218412&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313122</attachid>
            <date>2017-06-16 13:37:20 -0700</date>
            <delta_ts>2017-06-16 13:45:33 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-173491.patch</filename>
            <type>text/plain</type>
            <size>46194</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE4NDA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBA
CisyMDE3LTA2LTE2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bnRlcnByZXRlciBtZXRob2RzIGZvciBtYXBwaW5nIGJldHdlZW4gT3Bjb2RlIGFuZCBPcGNvZGVJ
RCBuZWVkIG5vdCBiZSBpbnN0YW5jZSBtZXRob2RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGFyZSBiYXNlZCBvbiBz
dGF0aWMgZGF0YS4gVGhlcmUncyBubyBuZWVkIHRvIGdldCB0aGUKKyAgICAgICAgaW50ZXJwcmV0
ZXIgaW5zdGFuY2UuIEhlbmNlLCB3ZSBjYW4gbWFrZSB0aGVzZSBtZXRob2RzIHN0YXRpYyBhbmQg
YXZvaWQgZG9pbmcKKyAgICAgICAgdW5uZWNlc3Nhcnkgd29yayB0byBjb21wdXRlIHRoZSBpbnRl
cnByZXRlciB0aGlzIHBvaW50ZXIuCisKKyAgICAgICAgQWxzbyByZW1vdmVkIHRoZSB1bnVzZWQg
aXNDYWxsQnl0ZWNvZGUgbWV0aG9kLgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1w
bCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50R2V0QnlJZE9wKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVz
c1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZVJld3JpdGVyOjphZGp1c3RKdW1wVGFyZ2V0c0luRnJhZ21lbnQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpo
YXNPcERlYnVnRm9yTGluZUFuZENvbHVtbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXNl
c09wY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFyaXRoUHJvZmlsZUZvclBDKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNv
bnRyb2xGbG93UHJvZmlsZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0
cy5jcHA6CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpleHRyYWN0
U3RvcmVkSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldFByZWRpY3Rpb25XaXRob3V0
T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
Z2V0T3Bjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29k
ZUlEKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmlzQ2FsbEJ5dGVjb2Rl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZSk6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpnZXRPcGNvZGVJRCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0NvbW1vbik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwpOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9wdXRfYnlfdmFsKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAg
ICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1df
UEFUSF9ERUNMKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2Uu
Y3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Qnl0ZWNvZGVTZXF1ZW5jZTo6Qnl0ZWNvZGVT
ZXF1ZW5jZSk6CisKIDIwMTctMDYtMTYgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE4Mzc2LgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5j
cHAJKHJldmlzaW9uIDIxODM5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDkgKzc3LDggQEAg
dm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsbwogCiAgICAgYm9vbCBuZXh0
SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogCi0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKICAgICBmb3IgKHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50Oykgewot
ICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0
cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJ
RCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9m
ZnNldF0pOwogICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29w
Y29kZUlEXTsKIAogICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9IGZhbHNlOwpAQCAtMTE0LDcg
KzExMyw3IEBAIHZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG8KIAogICAg
ICAgICBib29sIGZhbGxzVGhyb3VnaCA9IHRydWU7IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmxlYWRlck9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8IGJs
b2NrLT5sZWFkZXJPZmZzZXQoKSArIGJsb2NrLT50b3RhbExlbmd0aCgpOykgewotICAgICAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rp
b25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKKyAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zm
c2V0XSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhz
W29wY29kZUlEXTsKICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIGEgdGVybWluYWwgYnl0ZWNv
ZGUsIGxpbmsgdG8gdGhlIGV4aXQgYmxvY2suCiAgICAgICAgICAgICBpZiAoaXNUZXJtaW5hbChv
cGNvZGVJRCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24gMjE4Mzk4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYwLDcg
KzM2MSw3IEBAIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgogdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OnByaW50R2V0QnlJZE9wKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3Qg
dHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQpCiB7CiAgICAgY29uc3QgY2hhciogb3A7
Ci0gICAgc3dpdGNoICh2bSgpLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKml0KSkgeworICAg
IHN3aXRjaCAoSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKCppdCkpIHsKICAgICBjYXNlIG9wX2dl
dF9ieV9pZDoKICAgICAgICAgb3AgPSAiZ2V0X2J5X2lkIjsKICAgICAgICAgYnJlYWs7CkBAIC00
MjIsMTQgKzQyMywxNCBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlk
CiAKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOyAvLyB0ZWxsIHRoZSBjb21waWxlciB0byBzaHV0
IHVwIGluIGNlcnRhaW4gcGxhdGZvcm0gY29uZmlndXJhdGlvbnMuCiAKLSAgICBpZiAodm0oKS0+
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uWzBdKSA9PSBvcF9nZXRfYXJyYXlf
bGVuZ3RoKQorICAgIGlmIChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25bMF0p
ID09IG9wX2dldF9hcnJheV9sZW5ndGgpCiAgICAgICAgIG91dC5wcmludGYoIiBsbGludChhcnJh
eV9sZW5ndGgpIik7CiAgICAgZWxzZSBpZiAoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSBnZXRT
dHJ1Y3R1cmVJRChpbnN0cnVjdGlvbls0XSkpIHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSB2bSgpLT5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoc3RydWN0dXJlSUQpOwogICAg
ICAgICBvdXQucHJpbnRmKCIgbGxpbnQoIik7CiAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAi
c3RydWN0Iiwgc3RydWN0dXJlLCBpZGVudCk7CiAgICAgICAgIG91dC5wcmludGYoIikiKTsKLSAg
ICAgICAgaWYgKHZtKCktPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvblswXSkg
PT0gb3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQpCisgICAgICAgIGlmIChJbnRlcnByZXRlcjo6Z2V0
T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25bMF0pID09IG9wX2dldF9ieV9pZF9wcm90b19sb2FkKQogICAg
ICAgICAgICAgb3V0LnByaW50ZigiIHByb3RvKCVwKSIsIGdldFBvaW50ZXIoaW5zdHJ1Y3Rpb25b
Nl0pKTsKICAgICB9CiAKQEAgLTYxMSw3ICs2MTIsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6ZHVtcEJ5dGVjb2RlCiB7CiAgICAgaW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKICAg
ICBib29sIGhhc1ByaW50ZWRQcm9maWxpbmcgPSBmYWxzZTsKLSAgICBPcGNvZGVJRCBvcGNvZGUg
PSB2bSgpLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKml0KTsKKyAgICBPcGNvZGVJRCBvcGNv
ZGUgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoKml0KTsKICAgICBzd2l0Y2ggKG9wY29kZSkg
ewogICAgIGNhc2Ugb3BfZW50ZXI6IHsKICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
bG9jYXRpb24sIGl0LCAiZW50ZXIiKTsKQEAgLTE3NzYsMTAgKzE3NzcsOSBAQCB2b2lkIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6ZHVtcFN0cmluZ1N3CiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KIHZv
aWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxvY2soQmxvY2sqIGJsb2NrLCBjb25zdCB0
eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJ
bmZvTWFwJiBjYWxsTGlua0luZm9zKQogewotICAgIFZNJiB2bSA9ICpibG9jay0+dm0oKTsKICAg
ICBzaXplX3QgaW5zdHJ1Y3Rpb25Db3VudCA9IDA7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGluc3RydWN0aW9ucy5zaXplKCk7IGkgKz0gb3Bjb2RlTGVuZ3Roc1t2bS5pbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zW2ldKV0pCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpbnN0cnVjdGlvbnMuc2l6ZSgpOyBpICs9IG9wY29kZUxlbmd0aHNbSW50ZXJwcmV0ZXI6
OmdldE9wY29kZUlEKGluc3RydWN0aW9uc1tpXSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291
bnQ7CiAKICAgICBvdXQucHJpbnQoKmJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3Bw
CShyZXZpc2lvbiAyMTgzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzksNyArMTM5
LDYgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bAogewogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKICAgICBkYXRhTG9nKCJc
bkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICpjb2RlQmxvY2ssICI6XG4iKTsKLSAg
ICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVy
OwogICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKTsKICAgICB1bnNpZ25lZCBpID0gMDsKIApAQCAtMTk2LDcgKzE5NSw3
IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWwKICAgICAgICAgICAg
IGRhdGFMb2dGKCJcbiIpOwogICAgICAgICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoV1RG
OjpkYXRhRmlsZSgpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsKIAot
ICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
aW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICAgICAgICAg
IE9wY29kZUlEIG9wY29kZUlEID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGluc3RydWN0aW9u
c0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBv
cGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICAgICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aDsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oCShyZXZpc2lvbiAyMTgzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCiAj
aW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCi0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGlu
ZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODEs
MTAgKzgxLDkgQEAgaW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPAogICAg
IC8vIGZpcnN0IGFkZCBpdCB0byB0aGUgb3V0IHNldCAodGhlIHVzZSksIGFuZCB0aGVuIHdlJ2Qg
cmVtb3ZlIGl0ICh0aGUgZGVmKS4KIAogICAgIGF1dG8qIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVC
bG9jaygpOwotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+
aW50ZXJwcmV0ZXI7CiAgICAgYXV0byogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBncmFwaC5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpOwogICAgIGF1dG8qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0Jl
Z2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVy
LT5nZXRPcGNvZGVJRCgqaW5zdHJ1Y3Rpb24pOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gSW50
ZXJwcmV0ZXI6OmdldE9wY29kZUlEKCppbnN0cnVjdGlvbik7CiAKICAgICBzdGF0aWNfY2FzdDxE
ZXJpdmVkQW5hbHlzaXMqPih0aGlzKS0+Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKICAg
ICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAJ
KHJldmlzaW9uIDIxODM5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVJld3JpdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgot
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIEJ5
dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzCiAgICAgICAgIGlmIChpc0JyYW5jaChv
cGNvZGVJRCkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gZmluYWxP
ZmZzZXQgKyBmcmFnbWVudE9mZnNldDsKICAgICAgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwotICAgICAgICAgICAgZXh0cmFjdFN0b3Jl
ZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCkt
PmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgZnJhZ21lbnRPZmZzZXQsIFsmXShpbnQz
Ml90JiBsYWJlbCkgeworICAgICAgICAgICAgZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgZnJhZ21lbnRPZmZzZXQs
IFsmXShpbnQzMl90JiBsYWJlbCkgewogICAgICAgICAgICAgICAgIGludCBhYnNvbHV0ZU9mZnNl
dCA9IGFkanVzdEFic29sdXRlT2Zmc2V0KGxhYmVsKTsKICAgICAgICAgICAgICAgICBsYWJlbCA9
IGFic29sdXRlT2Zmc2V0IC0gc3RhdGljX2Nhc3Q8aW50PihieXRlY29kZU9mZnNldCk7CiAgICAg
ICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMjE4Mzk4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMw
LDcgKzMwLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdKSVRDb2Rl
LmgiCiAjaW5jbHVkZSAiSW5saW5lQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJMTEludENhbGxM
aW5rSW5mby5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQ
cmludGVyLmg+CkBAIC02NiwxMCArNjYsOCBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1
czo6Y29tcHV0ZUZyCiAgICAgVU5VU0VEX1BBUkFNKGxvY2tlcik7CiAjZW5kaWYKIAotICAgIFZN
JiB2bSA9ICpwcm9maWxlZEJsb2NrLT52bSgpOwotICAgIAogICAgIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29k
ZUluZGV4OwotICAgIE9wY29kZUlEIG9wID0gdm0uaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uWzBdLnUub3Bjb2RlKTsKKyAgICBPcGNvZGVJRCBvcCA9IEludGVycHJldGVyOjpn
ZXRPcGNvZGVJRChpbnN0cnVjdGlvblswXS51Lm9wY29kZSk7CiAgICAgaWYgKG9wICE9IG9wX2Nh
bGwgJiYgb3AgIT0gb3BfY29uc3RydWN0ICYmIG9wICE9IG9wX3RhaWxfY2FsbCkKICAgICAgICAg
cmV0dXJuIENhbGxMaW5rU3RhdHVzKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjE4Mzk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUyNyw3ICs1MjcsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
CiAKICAgICAgICAgdW5zaWduZWQgb3BMZW5ndGggPSBvcGNvZGVMZW5ndGgocGNbMF0udS5vcGNv
ZGUpOwogCi0gICAgICAgIGluc3RydWN0aW9uc1tpXSA9IHZtLmludGVycHJldGVyLT5nZXRPcGNv
ZGUocGNbMF0udS5vcGNvZGUpOworICAgICAgICBpbnN0cnVjdGlvbnNbaV0gPSBJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlKHBjWzBdLnUub3Bjb2RlKTsKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDE7
IGogPCBvcExlbmd0aDsgKytqKSB7CiAgICAgICAgICAgICBpZiAoc2l6ZW9mKGludDMyX3QpICE9
IHNpemVvZihpbnRwdHJfdCkpCiAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBqXS51
LnBvaW50ZXIgPSAwOwpAQCAtMTEyMSwxMiArMTEyMSwxMSBAQCB2b2lkIENvZGVCbG9jazo6cHJv
cGFnYXRlVHJhbnNpdGlvbnMoY29uCiAKICAgICBib29sIGFsbEFyZU1hcmtlZFNvRmFyID0gdHJ1
ZTsKICAgICAgICAgCi0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV92bS0+aW50ZXJw
cmV0ZXI7CiAgICAgaWYgKGppdFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSB7
CiAgICAgICAgIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zID0gbV91bmxpbmtlZENvZGUtPnByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zKCk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0
cnVjdGlvbnMoKVtwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07Ci0gICAgICAgICAgICBz
d2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvblswXSkpIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGluc3RydWN0aW9uWzBdKSkg
ewogICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6IHsKICAgICAgICAgICAgICAgICBTdHJ1
Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlSUQ7CiAg
ICAgICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBpbnN0cnVjdGlvbls2
XS51LnN0cnVjdHVyZUlEOwpAQCAtMTI1NiwxMSArMTI1NSwxMCBAQCB2b2lkIENvZGVCbG9jazo6
Y2xlYXJMTEludEdldEJ5SWRDYWNoZShJCiAKIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50
SW5saW5lQ2FjaGVzKCkKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX3ZtLT5p
bnRlcnByZXRlcjsKICAgICBjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiBwcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9ucyA9IG1fdW5saW5rZWRDb2RlLT5wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucygp
OwogICAgIGZvciAoc2l6ZV90IHNpemUgPSBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXpl
KCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0
cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVtwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07
Ci0gICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9u
WzBdKSkgeworICAgICAgICBzd2l0Y2ggKEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjdXJJbnN0
cnVjdGlvblswXSkpIHsKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgICAgIGNhc2Ug
b3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQ6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Vuc2V0
OiB7CkBAIC0xMzQyLDcgKzEzNDAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElu
bGluZUNhY2hlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoY3VySW5zdHJ1Y3Rpb25bMF0pOworICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJ
bnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0pOwogICAgICAgICAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQob3Bjb2RlSUQsIGZhbHNlLCAiVW5oYW5kbGVkIG9w
Y29kZSBpbiBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5LCAlcyglZCkgYXQgYmMg
JXUiLCBvcGNvZGVOYW1lc1tvcGNvZGVJRF0sIG9wY29kZUlELCBwcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uc1tpXSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzIwLDExICsxNzE4LDEwIEBAIHZv
aWQgQ29kZUJsb2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRlY28KIAogYm9vbCBDb2RlQmxvY2s6
Omhhc09wRGVidWdGb3JMaW5lQW5kQ29sdW1uKHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVt
bikKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSB2bSgpLT5pbnRlcnByZXRlcjsK
ICAgICBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwog
ICAgIGNvbnN0IEluc3RydWN0aW9uKiBlbmQgPSBpbnN0cnVjdGlvbnMoKS5lbmQoKTsKICAgICBm
b3IgKGNvbnN0IEluc3RydWN0aW9uKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7KSB7Ci0gICAgICAg
IE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKCppdCk7CisgICAg
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKCppdCk7CiAg
ICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9kZWJ1ZykgewogICAgICAgICAgICAgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQgPSBpdCAtIGJlZ2luOwogICAgICAgICAgICAgaW50IHVudXNlZDsKQEAg
LTI2NjYsMTIgKzI2NjMsMTEgQEAgc2l6ZV90IENvZGVCbG9jazo6cHJlZGljdGVkTWFjaGluZUNv
ZGVTaQogCiBib29sIENvZGVCbG9jazo6dXNlc09wY29kZShPcGNvZGVJRCBvcGNvZGVJRCkKIHsK
LSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSB2bSgpLT5pbnRlcnByZXRlcjsKICAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwog
ICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAg
ICAgCiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0
IDwgaW5zdHJ1Y3Rpb25Db3VudDsgKSB7Ci0gICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSkpIHsKKyAgICAgICAg
c3dpdGNoIChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNv
ZGVPZmZzZXRdKSkgewogI2RlZmluZSBERUZJTkVfT1AoY3VyT3Bjb2RlLCBsZW5ndGgpICAgICAg
ICBcCiAgICAgICAgIGNhc2UgY3VyT3Bjb2RlOiAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg
ICAgICAgIGlmIChjdXJPcGNvZGUgPT0gb3Bjb2RlSUQpICAgICAgXApAQCAtMjcxNiw3ICsyNzEy
LDcgQEAgU3RyaW5nIENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YQogCiBWYWx1ZVBy
b2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVj
b2RlT2Zmc2V0KQogewotICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XSk7CisgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbYnl0
ZWNvZGVPZmZzZXRdKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBvcGNvZGVMZW5ndGgob3Bjb2Rl
SUQpOwogICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldCArIGxlbmd0aCAt
IDFdLnUucHJvZmlsZTsKIH0KQEAgLTI4MDUsNyArMjgwMSw3IEBAIEFyaXRoUHJvZmlsZSogQ29k
ZUJsb2NrOjphcml0aFByb2ZpbGVGb3IKIAogQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRo
UHJvZmlsZUZvclBDKEluc3RydWN0aW9uKiBwYykKIHsKLSAgICBhdXRvIG9wY29kZUlEID0gdm0o
KS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdKTsKKyAgICBhdXRvIG9wY29kZUlEID0g
SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKHBjWzBdKTsKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7
CiAgICAgY2FzZSBvcF9uZWdhdGU6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8QXJpdGhQ
cm9maWxlKj4oJnBjWzNdLnUub3BlcmFuZCk7CkBAIC0yODUyLDEyICsyODQ4LDEyIEBAIHZvaWQg
Q29kZUJsb2NrOjppbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmkKICAgICAgICAgLy8gQmVjYXVzZSBv
cF9wcm9maWxlX2NvbnRyb2xfZmxvdyBpcyBlbWl0dGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZl
cnkgYmFzaWMgYmxvY2ssIGZpbmRpbmcgCiAgICAgICAgIC8vIHRoZSBuZXh0IG9wX3Byb2ZpbGVf
Y29udHJvbF9mbG93IHdpbGwgZ2l2ZSB1cyB0aGUgdGV4dCByYW5nZSBvZiBhIHNpbmdsZSBiYXNp
YyBibG9jay4KICAgICAgICAgc2l6ZV90IHN0YXJ0SWR4ID0gYnl0ZWNvZGVPZmZzZXRzW2ldOwot
ICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb25zW3N0YXJ0SWR4XSkgPT0gb3BfcHJvZmlsZV9jb250cm9sX2Zsb3cpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zW3N0
YXJ0SWR4XSkgPT0gb3BfcHJvZmlsZV9jb250cm9sX2Zsb3cpOwogICAgICAgICBpbnQgYmFzaWNC
bG9ja1N0YXJ0T2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zW3N0YXJ0SWR4ICsgMV0udS5vcGVyYW5kOwog
ICAgICAgICBpbnQgYmFzaWNCbG9ja0VuZE9mZnNldDsKICAgICAgICAgaWYgKGkgKyAxIDwgb2Zm
c2V0c0xlbmd0aCkgewogICAgICAgICAgICAgc2l6ZV90IGVuZElkeCA9IGJ5dGVjb2RlT2Zmc2V0
c1tpICsgMV07Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zW2VuZElkeF0pID09IG9wX3Byb2ZpbGVfY29udHJvbF9m
bG93KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEludGVycHJldGVyOjpnZXRPcGNvZGVJ
RChpbnN0cnVjdGlvbnNbZW5kSWR4XSkgPT0gb3BfcHJvZmlsZV9jb250cm9sX2Zsb3cpOwogICAg
ICAgICAgICAgYmFzaWNCbG9ja0VuZE9mZnNldCA9IGluc3RydWN0aW9uc1tlbmRJZHggKyAxXS51
Lm9wZXJhbmQgLSAxOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYmFzaWNCbG9ja0Vu
ZE9mZnNldCA9IG1fc291cmNlT2Zmc2V0ICsgb3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPnNvdXJj
ZSgpLmxlbmd0aCgpIC0gMTsgLy8gT2Zmc2V0IGJlZm9yZSB0aGUgY2xvc2luZyBicmFjZS4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHMuY3BwCShyZXZpc2lvbiAyMTgzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywxMCArMzMs
MTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemUsIHR5
cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KLXN0YXRpYyB2b2lkIGdldEp1bXBU
YXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGlu
dGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCitzdGF0aWMgdm9p
ZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rv
cjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9
IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNl
dF0pOwotICAgIGV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVC
bG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgWyZd
KGludDMyX3QmIHJlbGF0aXZlT2Zmc2V0KSB7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRl
cnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsK
KyAgICBleHRyYWN0U3RvcmVkSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ss
IGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgWyZdKGludDMyX3QmIHJlbGF0aXZl
T2Zmc2V0KSB7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyByZWxhdGl2ZU9m
ZnNldCk7CiAgICAgfSk7CiAgICAgLy8gb3BfbG9vcF9oaW50IGRvZXMgbm90IGhhdmUganVtcCB0
YXJnZXQgc3RvcmVkIGluIGJ5dGVjb2RlIGluc3RydWN0aW9ucy4KQEAgLTY1LDEwICs2NSw5IEBA
IHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKEIKICAgICAgICAgb3V0LmFw
cGVuZChjb2RlQmxvY2stPmV4Y2VwdGlvbkhhbmRsZXIoaSkuZW5kKTsKICAgICB9CiAKLSAgICBJ
bnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwog
ICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGlu
c3RydWN0aW9uQ291bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7Ci0gICAg
ICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRl
ciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdp
bltieXRlY29kZU9mZnNldF0pOworICAgICAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwog
ICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICB9
CiAgICAgCkBAIC0xMTEsMTIgKzExMCwxMiBAQCB2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0cyhVbmxpbmtlCiAKIHZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKIHsKLSAgICBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2NrLT52bSgpLT5p
bnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAg
IGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNC
ZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiB9CiAKIHZvaWQgZmluZEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0
b3I8dW5zaWduZWQsIDE+JiBvdXQpCiB7Ci0gICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9m
ZnNldChjb2RlQmxvY2ssIGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9u
c0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVj
b2RlT2Zmc2V0KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBv
dXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaAko
cmV2aXNpb24gMjE4Mzk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNp
c2VKdW1wVGFyZ2V0c0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw5ICszMiw5IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0
aW9uLCB0eXBlbmFtZSBGdW5jdGlvbj4KLWlubGluZSB2b2lkIGV4dHJhY3RTdG9yZWRKdW1wVGFy
Z2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRl
cnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgRnVuY3Rpb24gZnVuY3Rpb24pCitpbmxpbmUgdm9pZCBleHRyYWN0U3RvcmVkSnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGdW5jdGlvbiBmdW5j
dGlvbikKIHsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJ
RChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOworICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2Rl
T2Zmc2V0XSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiAr
IGJ5dGVjb2RlT2Zmc2V0OwogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX2pt
cDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjE4Mzk4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMywgMjAxNS0yMDE2IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmFwcGx5TW9k
aWZpY2F0aW8KICAgICBmb3IgKGludCBieXRlY29kZU9mZnNldCA9IDAsIGluc3RydWN0aW9uQ291
bnQgPSBncmFwaC5pbnN0cnVjdGlvbnMoKS5zaXplKCk7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1
Y3Rpb25Db3VudDspIHsKICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogY3VycmVudCA9IGlu
c3RydWN0aW9uc0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQ7CiAgICAgICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gY3VycmVudFswXS51Lm9wY29kZTsKLSAgICAgICAgZXh0cmFjdFN0b3JlZEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQodGhpcywgdm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9u
c0JlZ2luLCBieXRlY29kZU9mZnNldCwgWyZdKGludDMyX3QmIHJlbGF0aXZlT2Zmc2V0KSB7Cisg
ICAgICAgIGV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KHRoaXMsIGlu
c3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgWyZdKGludDMyX3QmIHJlbGF0aXZlT2Zm
c2V0KSB7CiAgICAgICAgICAgICByZWxhdGl2ZU9mZnNldCA9IHJld3JpdGVyLmFkanVzdEp1bXBU
YXJnZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgcmVsYXRpdmVPZmZzZXQpOwog
ICAgICAgICB9KTsKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoKG9wY29k
ZUlEKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCShyZXZpc2lvbiAyMTgzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODg2LDcgKzg4Niw3IEBA
IHByaXZhdGU6CiAgICAgICAgIC8vIGlubGluZWQgdGFpbCBjYWxsIGZyYW1lcywgd2UgdXNlIFNw
ZWNGdWxsVG9wCiAgICAgICAgIC8vIHRvIGF2b2lkIGEgc3B1cmlvdXMgT1NSIGV4aXQuCiAgICAg
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7Ci0gICAgICAg
IE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3Ry
dWN0aW9uLT51Lm9wY29kZSk7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gSW50ZXJwcmV0
ZXI6OmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7CiAKICAgICAgICAgc3dpdGNo
IChvcGNvZGVJRCkgewogICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKQEAgLTQwNjIsNyArNDA2
Miw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIHsKICAgICBi
b29sIHNob3VsZENvbnRpbnVlUGFyc2luZyA9IHRydWU7CiAKLSAgICBJbnRlcnByZXRlciogaW50
ZXJwcmV0ZXIgPSBtX3ZtLT5pbnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4gPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKTsKICAgICB1bnNpZ25lZCBibG9ja0JlZ2luID0gbV9jdXJyZW50SW5kZXg7CiAKQEAg
LTQxMTUsNyArNDExNCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgLy8gU3dpdGNoIG9uIHRoZSBjdXJyZW50IGJ5dGVjb2RlIG9wY29kZS4KICAg
ICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2lu
ICsgbV9jdXJyZW50SW5kZXg7CiAgICAgICAgIG1fY3VycmVudEluc3RydWN0aW9uID0gY3VycmVu
dEluc3RydWN0aW9uOyAvLyBTb21lIG1ldGhvZHMgd2FudCB0byB1c2UgdGhpcywgYW5kIHdlJ2Qg
cmF0aGVyIG5vdCB0aHJlYWQgaXQgdGhyb3VnaCBjYWxscy4KLSAgICAgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9w
Y29kZSk7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gSW50ZXJwcmV0ZXI6OmdldE9wY29k
ZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwogICAgICAgICAKICAgICAgICAgaWYg
KE9wdGlvbnM6OnZlcmJvc2VERkdCeXRlQ29kZVBhcnNpbmcoKSkKICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBwYXJzaW5nICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICI6ICIsIG9wY29kZUlELCAi
XG4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAJKHJldmlzaW9uIDIxODM5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCi0jaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogCkBAIC0yNjksMTMgKzI2OSwxMiBA
QCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAKIENhcGFiaWxpdHlM
ZXZlbCBjYXBhYmlsaXR5TGV2ZWwoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgSW50ZXJw
cmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKICAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmJlZ2luKCk7CiAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIENhcGFiaWxpdHlMZXZlbCByZXN1bHQgPSBDYW5Db21w
aWxlQW5kSW5saW5lOwogICAgIAogICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAw
OyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7ICkgewotICAgICAgICBzd2l0Y2gg
KGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNl
dF0udS5vcGNvZGUpKSB7CisgICAgICAgIHN3aXRjaCAoSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlE
KGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSkpIHsKICNkZWZpbmUg
REVGSU5FX09QKG9wY29kZSwgbGVuZ3RoKSBcCiAgICAgICAgIGNhc2Ugb3Bjb2RlOiB7IFwKICAg
ICAgICAgICAgIENhcGFiaWxpdHlMZXZlbCBuZXdSZXN1bHQgPSBsZWFzdFVwcGVyQm91bmQocmVz
dWx0LCBjYXBhYmlsaXR5TGV2ZWwob3Bjb2RlLCBjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2lu
ICsgYnl0ZWNvZGVPZmZzZXQpKTsgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAyMTgzOTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCisjaW5j
bHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheUlubGluZXMuaCIK
ICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBA
IC01Myw3ICs1NCw2IEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1dpdGhT
Y29wZS5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKLSNpbmNsdWRlICJMTEludERhdGEuaCIK
ICNpbmNsdWRlICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUgIkxpdGVyYWxQYXJzZXIuaCIKICNp
bmNsdWRlICJNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgiCkBAIC0zMTcsMTggKzMxNywxNCBAQCBJ
bnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIoVk0mIHZtKQogI2lmICFFTkFCTEUoSklUKQogICAgICwg
bV9jbG9vcFN0YWNrKHZtKQogI2VuZGlmCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RF
UykKLSAgICAsIG1fb3Bjb2RlVGFibGUgeyBMTEludDo6b3Bjb2RlTWFwKCkgfQotI2lmICFVU0Uo
TExJTlRfRU1CRURERURfT1BDT0RFX0lEKSB8fCAhQVNTRVJUX0RJU0FCTEVECi0gICAgLCBtX29w
Y29kZUlEVGFibGUgeyBvcGNvZGVJRFRhYmxlKCkgfQotI2VuZGlmCi0jZW5kaWYKIHsKICNpZiAh
QVNTRVJUX0RJU0FCTEVECiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGFzc2VydE9uY2VLZXk7
CiAgICAgc3RkOjpjYWxsX29uY2UoYXNzZXJ0T25jZUtleSwgW3RoaXNdIHsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IE5VTUJFUl9PRl9CWVRFQ09ERV9JRFM7ICsraSkKLSAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGdldE9wY29kZUlEKG1fb3Bjb2RlVGFibGVbaV0pID09IHN0
YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBOVU1CRVJfT0ZfQllURUNPREVfSURTOyArK2kpIHsKKyAgICAgICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpOworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoZ2V0T3Bjb2RlSUQoZ2V0T3Bjb2RlKG9wY29kZUlEKSkgPT0gb3Bjb2RlSUQpOworICAg
ICAgICB9CiAgICAgfSk7CiAjZW5kaWYgLy8gVVNFKExMSU5UX0VNQkVEREVEX09QQ09ERV9JRCkK
IH0KQEAgLTQ3Miw3ICs0NjgsNyBAQCBib29sIEludGVycHJldGVyOjppc09wY29kZShPcGNvZGUg
b3Bjb2RlCiAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICAgICByZXR1cm4gb3Bj
b2RlICE9IEhhc2hUcmFpdHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNo
VHJhaXRzPE9wY29kZT46OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKLSAgICAgICAgJiYgbV9vcGNv
ZGVJRFRhYmxlLmNvbnRhaW5zKG9wY29kZSk7CisgICAgICAgICYmIG9wY29kZUlEVGFibGUoKS5j
b250YWlucyhvcGNvZGUpOwogI2Vsc2UKICAgICByZXR1cm4gb3Bjb2RlID49IDAgJiYgb3Bjb2Rl
IDw9IG9wX2VuZDsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDIxODM5OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDEsNDIgKzEwMSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ0xvb3BTdGFjayYgY2xv
b3BTdGFjaygpIHsgcmV0dXJuIG1fY2xvb3BTdGFjazsgfQogI2VuZGlmCiAgICAgICAgIAotICAg
ICAgICBPcGNvZGUgZ2V0T3Bjb2RlKE9wY29kZUlEIGlkKQotICAgICAgICB7Ci0jaWYgRU5BQkxF
KENPTVBVVEVEX0dPVE9fT1BDT0RFUykKLSAgICAgICAgICAgIHJldHVybiBtX29wY29kZVRhYmxl
W2lkXTsKLSNlbHNlCi0gICAgICAgICAgICByZXR1cm4gaWQ7Ci0jZW5kaWYKLSAgICAgICAgfQor
ICAgICAgICBzdGF0aWMgaW5saW5lIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQpOwogCi0gICAg
ICAgIE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29kZSBvcGNvZGUpCi0gICAgICAgIHsKLSNpZiBF
TkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQotICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2Rl
KG9wY29kZSkpOwotI2lmIFVTRShMTElOVF9FTUJFRERFRF9PUENPREVfSUQpCi0gICAgICAgICAg
ICAvLyBUaGUgT3Bjb2RlSUQgaXMgZW1iZWRkZWQgaW4gdGhlIGludDMyX3Qgd29yZCBwcmVjZWRp
bmcgdGhlIGxvY2F0aW9uIG9mCi0gICAgICAgICAgICAvLyB0aGUgTExJbnQgY29kZSBmb3IgdGhl
IG9wY29kZSAoc2VlIHRoZSBFTUJFRF9PUENPREVfSURfSUZfTkVFREVEIG1hY3JvCi0gICAgICAg
ICAgICAvLyBpbiBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuCi0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgY29kZVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihvcGNvZGUpKTsK
LSAgICAgICAgICAgIGludDMyX3QqIG9wY29kZUlEQWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
aW50MzJfdCo+KGNvZGVQdHIuZGF0YUxvY2F0aW9uKCkpIC0gMTsKLSAgICAgICAgICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KCpvcGNvZGVJREFkZHJlc3MpOwot
ICAgICAgICAgICAgQVNTRVJUKG9wY29kZUlEIDwgTlVNQkVSX09GX0JZVEVDT0RFX0lEUyk7Ci0g
ICAgICAgICAgICByZXR1cm4gb3Bjb2RlSUQ7Ci0jZWxzZQotICAgICAgICAgICAgcmV0dXJuIG1f
b3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKLSNlbmRpZiAvLyBVU0UoTExJTlRfRU1CRURERURf
T1BDT0RFX0lEKQotCi0jZWxzZSAvLyBub3QgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykK
LSAgICAgICAgICAgIHJldHVybiBvcGNvZGU7Ci0jZW5kaWYKLSAgICAgICAgfQotCi0gICAgICAg
IE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJik7Ci0gICAgICAgIE9wY29k
ZUlEIGdldE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24mKTsKKyAgICAgICAgc3Rh
dGljIGlubGluZSBPcGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUpOworICAgICAgICBzdGF0aWMg
aW5saW5lIE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJik7CisgICAgICAg
IHN0YXRpYyBpbmxpbmUgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoY29uc3QgVW5saW5rZWRJbnN0cnVj
dGlvbiYpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBib29sIGlzT3Bjb2RlKE9w
Y29kZSk7CisgICAgICAgIHN0YXRpYyBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAjZW5kaWYKIAog
ICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJjZUNvZGUmLCBDYWxsRnJh
bWUqLCBKU09iamVjdCogdGhpc09iaik7CkBAIC0xNzIsMjAgKzE0NCwxNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICB2b2lkIGR1bXBSZWdpc3RlcnMoQ2FsbEZyYW1lKik7CiAgICAgICAg
IAotICAgICAgICBib29sIGlzQ2FsbEJ5dGVjb2RlKE9wY29kZSBvcGNvZGUpIHsgcmV0dXJuIG9w
Y29kZSA9PSBnZXRPcGNvZGUob3BfY2FsbCkgfHwgb3Bjb2RlID09IGdldE9wY29kZShvcF9jb25z
dHJ1Y3QpIHx8IG9wY29kZSA9PSBnZXRPcGNvZGUob3BfY2FsbF9ldmFsKSB8fCBvcGNvZGUgPT0g
Z2V0T3Bjb2RlKG9wX3RhaWxfY2FsbCk7IH0KLQogICAgICAgICBWTSYgbV92bTsKICNpZiAhRU5B
QkxFKEpJVCkKICAgICAgICAgQ0xvb3BTdGFjayBtX2Nsb29wU3RhY2s7CiAjZW5kaWYKICAgICAg
ICAgCiAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKLSAgICAgICAgY29uc3QgT3Bj
b2RlKiBtX29wY29kZVRhYmxlOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGls
aW5nCi0KICNpZiAhVVNFKExMSU5UX0VNQkVEREVEX09QQ09ERV9JRCkgfHwgIUFTU0VSVF9ESVNB
QkxFRAotICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+JiBtX29wY29kZUlEVGFibGU7
IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwotCi0gICAgICAgIHN0
YXRpYyBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+JiBvcGNvZGVJRFRhYmxlKCk7CisgICAgICAg
IHN0YXRpYyBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+JiBvcGNvZGVJRFRhYmxlKCk7IC8vIE1h
cHMgT3Bjb2RlID0+IE9wY29kZUlELgogI2VuZGlmIC8vICFVU0UoTExJTlRfRU1CRURERURfT1BD
T0RFX0lEKSB8fCAhQVNTRVJUX0RJU0FCTEVECiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dP
VE9fT1BDT0RFUykKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjE4Mzk4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOCwxMCArMjgsMzggQEAKIAogI2luY2x1ZGUgIkluc3RydWN0
aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIK
ICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAoraW5s
aW5lIE9wY29kZSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlKE9wY29kZUlEIGlkKQoreworICAgIHJl
dHVybiBMTEludDo6Z2V0T3Bjb2RlKGlkKTsKK30KKworaW5saW5lIE9wY29kZUlEIEludGVycHJl
dGVyOjpnZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQoreworI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX09QQ09ERVMpCisgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOworI2lmIFVTRShMTElO
VF9FTUJFRERFRF9PUENPREVfSUQpCisgICAgLy8gVGhlIE9wY29kZUlEIGlzIGVtYmVkZGVkIGlu
IHRoZSBpbnQzMl90IHdvcmQgcHJlY2VkaW5nIHRoZSBsb2NhdGlvbiBvZgorICAgIC8vIHRoZSBM
TEludCBjb2RlIGZvciB0aGUgb3Bjb2RlIChzZWUgdGhlIEVNQkVEX09QQ09ERV9JRF9JRl9ORUVE
RUQgbWFjcm8KKyAgICAvLyBpbiBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuCisgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3Bjb2RlKSk7
CisgICAgaW50MzJfdCogb3Bjb2RlSURBZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90
Kj4oY29kZVB0ci5kYXRhTG9jYXRpb24oKSkgLSAxOworICAgIE9wY29kZUlEIG9wY29kZUlEID0g
c3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KCpvcGNvZGVJREFkZHJlc3MpOworICAgIEFTU0VSVChvcGNv
ZGVJRCA8IE5VTUJFUl9PRl9CWVRFQ09ERV9JRFMpOworICAgIHJldHVybiBvcGNvZGVJRDsKKyNl
bHNlCisgICAgcmV0dXJuIG9wY29kZUlEVGFibGUoKS5nZXQob3Bjb2RlKTsKKyNlbmRpZiAvLyBV
U0UoTExJTlRfRU1CRURERURfT1BDT0RFX0lEKQorICAgIAorI2Vsc2UgLy8gbm90IEVOQUJMRShD
T01QVVRFRF9HT1RPX09QQ09ERVMpCisgICAgcmV0dXJuIG9wY29kZTsKKyNlbmRpZgorfQorCiBp
bmxpbmUgT3Bjb2RlSUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9u
JiBpbnN0cnVjdGlvbikKIHsKICAgICByZXR1cm4gZ2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24udS5v
cGNvZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjE4Mzk4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrV2l0aEpJVFR5cGUuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKLSNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1
ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAi
SlNBcnJheS5oIgpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKCkKICAgICAgICAgaWYgKG1fZGlzYXNzZW1ibGVyKQogICAgICAgICAgICAgbV9kaXNh
c3NlbWJsZXItPnNldEZvckJ5dGVjb2RlTWFpblBhdGgobV9ieXRlY29kZU9mZnNldCwgbGFiZWwo
KSk7CiAgICAgICAgIEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlv
bnNCZWdpbiArIG1fYnl0ZWNvZGVPZmZzZXQ7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
bV9pbnRlcnByZXRlci0+aXNPcGNvZGUoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSksICJw
cml2YXRlQ29tcGlsZU1haW5QYXNzIGdvbmUgYmFkIEAgJWQiLCBtX2J5dGVjb2RlT2Zmc2V0KTsK
KyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShJbnRlcnByZXRlcjo6aXNPcGNvZGUoY3VycmVu
dEluc3RydWN0aW9uLT51Lm9wY29kZSksICJwcml2YXRlQ29tcGlsZU1haW5QYXNzIGdvbmUgYmFk
IEAgJWQiLCBtX2J5dGVjb2RlT2Zmc2V0KTsKIAogICAgICAgICBtX3BjVG9Db2RlT3JpZ2luTWFw
QnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsKCksIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCkp
OwogCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICBkYXRhTG9nRigiT2xkIEpJVCBlbWl0dGluZyBjb2RlIGZvciBiYyMldSBhdCBv
ZmZzZXQgMHglbHguXG4iLCBtX2J5dGVjb2RlT2Zmc2V0LCAobG9uZylkZWJ1Z09mZnNldCgpKTsK
ICNlbmRpZgogICAgICAgICAKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX2ludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICAgICAg
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY3VycmVudEluc3Ry
dWN0aW9uLT51Lm9wY29kZSk7CiAKICAgICAgICAgaWYgKG1fY29tcGlsYXRpb24pIHsKICAgICAg
ICAgICAgIGFkZDY0KApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpCiAgICAgICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgICAgIG1f
ZGlzYXNzZW1ibGVyLT5zZXRGb3JCeXRlY29kZVNsb3dQYXRoKG1fYnl0ZWNvZGVPZmZzZXQsIGxh
YmVsKCkpOwogCi0gICAgICAgIHN3aXRjaCAobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3Vy
cmVudEluc3RydWN0aW9uLT51Lm9wY29kZSkpIHsKKyAgICAgICAgc3dpdGNoIChJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSkpIHsKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX2FkZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X2JpdGFuZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2JpdG9yKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAyMTgzOTgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKQEAgLTk3
NSw3ICs5NzUsNyBAQCB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1Y3Rpb24qCiAj
ZW5kaWYKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjID0gbV9jb2RlQmxvY2stPmZ1
bmN0aW9uRGVjbChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKIAotICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0
cnVjdGlvbi0+dS5vcGNvZGUpOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gSW50ZXJwcmV0ZXI6
OmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwogICAgIGlmIChvcGNv
ZGVJRCA9PSBvcF9uZXdfZnVuYykKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdG
dW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOwogICAgIGVsc2UgaWYgKG9wY29kZUlEID09
IG9wX25ld19nZW5lcmF0b3JfZnVuYykKQEAgLTEwMTgsNyArMTAxOCw3IEBAIHZvaWQgSklUOjpl
bWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3QKICAgICBub3RVbmRlZmluZWRTY29wZS5saW5r
KHRoaXMpOwogICAgICAgICAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gbV9j
b2RlQmxvY2stPmZ1bmN0aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsK
LSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChj
dXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IElu
dGVycHJldGVyOjpnZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKIAog
ICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHApCiAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAkocmV2aXNpb24gMjE4Mzk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Miw3ICszMiw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCi0jaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRl
ICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTRW52aXJv
bm1lbnRSZWNvcmQuaCIKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X2J5X3ZhbChJbnN0cnVjCiAKICAgICBMYWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CiAgICAg
Ci0gICAgYm9vbCBpc0RpcmVjdCA9IG1faW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJ
bnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX3B1dF9ieV92YWxfZGlyZWN0OworICAgIGJvb2wg
aXNEaXJlY3QgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51
Lm9wY29kZSkgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3Q7CiAKICNpZiBDUFUoWDg2KQogICAgIC8v
IEZJWE1FOiBXZSBvbmx5IGhhdmUgNSB0ZW1wIHJlZ2lzdGVycywgYnV0IG5lZWQgNiB0byBtYWtl
IHRoaXMgY2FsbCwgdGhlcmVmb3JlIHdlIG1hdGVyaWFsaXplCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjE4Mzk4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDA5LCAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdDQXdhcmVKSVRTdHViUm91dGluZS5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgotI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCkBAIC00OTAs
NyArNDkwLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoSW5zdHJ1YwogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZh
bHVlLCByZWdUMik7Ci0gICAgYm9vbCBpc0RpcmVjdCA9IG1faW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX3B1dF9ieV92YWxfZGlyZWN0
OworICAgIGJvb2wgaXNEaXJlY3QgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY3VycmVudElu
c3RydWN0aW9uLT51Lm9wY29kZSkgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3Q7CiAgICAgQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0
aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCByZWdUMCwgcmVnVDEsIHJlZ1QyLCBi
eVZhbEluZm8pOwogCiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rp
b25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKQEAgLTE0MzQsNyArMTQzNCw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKEJ5VmFsSW4KICAgICAgICAgcGF0Y2hC
dWZmZXIubGluayhtX2NhbGxzLmxhc3QoKS5mcm9tLCBvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93
UGF0aCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNEaXJlY3QgPSBtX2ludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKSA9PSBvcF9wdXRfYnlfdmFs
X2RpcmVjdDsKKyAgICBib29sIGlzRGlyZWN0ID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGN1
cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX3B1dF9ieV92YWxfZGlyZWN0OwogICAg
IGlmICghaXNEaXJlY3QpIHsKICAgICAgICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFM
SVpFX0NPREVfRk9SX1NUVUIoCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIs
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAJKHJldmlzaW9uIDIxODM5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRl
ICJGdW5jdGlvbldoaXRlbGlzdC5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1
ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2lu
Y2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKQEAgLTE5
Miw3ICsxOTIsNyBAQCBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjCiAg
ICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKICAgICAgICAgICAgIGV4ZWMsCiAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKSksCi0gICAgICAgICAgICBleGVjLT52bSgpLmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgICBJbnRlcnByZXRlcjo6Z2V0
T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAogICAgICAgICAgICAgZnJvbVdoZXJlLAogICAgICAg
ICAgICAgb3BlcmFuZCwKICAgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCk7CkBAIC0y
MTUsNyArMjE1LDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhYwog
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKICAgICAgICAgZXhlYywKICAgICAgICAgc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJl
Z2luKCkpLAotICAgICAgICBleGVjLT52bSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1sw
XS51Lm9wY29kZSksCisgICAgICAgIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChwY1swXS51Lm9w
Y29kZSksCiAgICAgICAgIGZyb21XaGVyZSwKICAgICAgICAgb3BlcmFuZCwKICAgICAgICAgcGNb
b3BlcmFuZF0udS5vcGVyYW5kLApAQCAtMjY5LDE2ICsyNjksMTcgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0wodHJhY2VfYXJpdHlDaGVja19mbwogCiBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZSkK
IHsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChwY1sw
XS51Lm9wY29kZSk7CiAgICAgZGF0YUxvZ0YoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICVz
LCBwYyA9ICVwXG4iLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAg
ICBleGVjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29k
ZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAotICAgICAgICAgICAgb3Bjb2RlTmFt
ZXNbZXhlYy0+dm0oKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSwg
cGMpOwotICAgIGlmIChleGVjLT52bSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51
Lm9wY29kZSkgPT0gb3BfZW50ZXIpIHsKKyAgICAgICAgICAgIG9wY29kZU5hbWVzW29wY29kZUlE
XSwgcGMpOworICAgIGlmIChvcGNvZGVJRCA9PSBvcF9lbnRlcikgewogICAgICAgICBkYXRhTG9n
RigiRnJhbWUgd2lsbCBldmVudHVhbGx5IHJldHVybiB0byAlcFxuIiwgZXhlYy0+cmV0dXJuUEMo
KS52YWx1ZSgpKTsKICAgICAgICAgKmJpdHdpc2VfY2FzdDx2b2xhdGlsZSBjaGFyKj4oZXhlYy0+
cmV0dXJuUEMoKS52YWx1ZSgpKTsKICAgICB9Ci0gICAgaWYgKGV4ZWMtPnZtKCkuaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXQpIHsKKyAgICBpZiAob3Bj
b2RlSUQgPT0gb3BfcmV0KSB7CiAgICAgICAgIGRhdGFMb2dGKCJXaWxsIGJlIHJldHVybmluZyB0
byAlcFxuIiwgZXhlYy0+cmV0dXJuUEMoKS52YWx1ZSgpKTsKICAgICAgICAgZGF0YUxvZ0YoIlRo
ZSBuZXcgY2ZyIHdpbGwgYmUgJXBcbiIsIGV4ZWMtPmNhbGxlckZyYW1lKCkpOwogICAgIH0KQEAg
LTI5MSw3ICsyOTIsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzcGVjaWFsX3RyYWNlKQogICAg
ICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVjLAogICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0
aW9ucygpLmJlZ2luKCkpLAotICAgICAgICAgICAgZXhlYy0+dm0oKS5pbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICAgSW50ZXJwcmV0ZXI6OmdldE9w
Y29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKICAgICAgICAgICAgIGV4ZWMtPnJldHVyblBDKCkudmFs
dWUoKSk7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0KQEAgLTE2NjgsMTQgKzE2NjksMTQgQEAg
ZXh0ZXJuICJDIiBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgbAogCiBMTElOVF9TTE9XX1BB
VEhfREVDTChjb3VudF9vcGNvZGUpCiB7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBleGVjLT52
bSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSk7CisgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpOwog
ICAgIERhdGE6Om9wY29kZVN0YXRzKG9wY29kZUlEKS5jb3VudCsrOwogICAgIExMSU5UX0VORF9J
TVBMKCk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKGNvdW50X29wY29kZV9zbG93X3BhdGgp
CiB7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBleGVjLT52bSgpLmludGVycHJldGVyLT5nZXRP
cGNvZGVJRChwY1swXS51Lm9wY29kZSk7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnBy
ZXRlcjo6Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpOwogICAgIERhdGE6Om9wY29kZVN0YXRz
KG9wY29kZUlEKS5zbG93UGF0aENvdW50Kys7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVu
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwCShyZXZpc2lvbiAyMTgzOTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJQcm9maWxlckJ5dGVj
b2RlU2VxdWVuY2UuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiT3BlcmFu
ZHMuaCIKQEAgLTU1LDEwICs1NSw5IEBAIEJ5dGVjb2RlU2VxdWVuY2U6OkJ5dGVjb2RlU2VxdWVu
Y2UoQ29kZUIKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSAwOyBieXRlY29kZUlu
ZGV4IDwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7KSB7CiAgICAgICAgIG91dC5y
ZXNldCgpOwogICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShvdXQsIGJ5dGVjb2RlSW5k
ZXgsIHN0dWJJbmZvcyk7Ci0gICAgICAgIG1fc2VxdWVuY2UuYXBwZW5kKEJ5dGVjb2RlKGJ5dGVj
b2RlSW5kZXgsIGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVJbmRleF0udS5vcGNvZGUpLCBvdXQudG9DU3Ry
aW5nKCkpKTsKLSAgICAgICAgYnl0ZWNvZGVJbmRleCArPSBvcGNvZGVMZW5ndGgoCi0gICAgICAg
ICAgICBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLT5nZXRPcGNvZGVJRCgKLSAgICAgICAg
ICAgICAgICBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpW2J5dGVjb2RlSW5kZXhdLnUub3Bjb2Rl
KSk7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlE
KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVJbmRleF0udS5vcGNvZGUpOworICAg
ICAgICBtX3NlcXVlbmNlLmFwcGVuZChCeXRlY29kZShieXRlY29kZUluZGV4LCBvcGNvZGVJRCwg
b3V0LnRvQ1N0cmluZygpKSk7CisgICAgICAgIGJ5dGVjb2RlSW5kZXggKz0gb3Bjb2RlTGVuZ3Ro
KG9wY29kZUlEKTsKICAgICB9CiB9CiAK
</data>
<flag name="review"
          id="334031"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>