<?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>219909</bug_id>
          
          <creation_ts>2020-12-15 11:50:32 -0800</creation_ts>
          <short_desc>Switch to using a linked list for the TDZ environment instead of a Vector</short_desc>
          <delta_ts>2020-12-16 15:28:10 -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>JavaScriptCore</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219953</see_also>
          <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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>jsc32</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1714849</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-12-15 11:50:32 -0800</bug_when>
    <thetext>The spine of the vector seems to be causing about a 0.5% memory regression in RAMification</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714851</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-12-15 11:51:19 -0800</bug_when>
    <thetext>&lt;rdar://71441753&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714861</commentid>
    <comment_count>2</comment_count>
      <attachid>416274</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-12-15 12:08:03 -0800</bug_when>
    <thetext>Created attachment 416274
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714870</commentid>
    <comment_count>3</comment_count>
      <attachid>416274</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-12-15 12:20:18 -0800</bug_when>
    <thetext>Comment on attachment 416274
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714947</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-15 15:18:58 -0800</bug_when>
    <thetext>Committed r270870: &lt;https://trac.webkit.org/changeset/270870&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416274.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416274</attachid>
            <date>2020-12-15 12:08:03 -0800</date>
            <delta_ts>2020-12-15 15:18:59 -0800</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>28206</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjcwODU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDIwLTEyLTE1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFN3aXRjaCB0byB1c2luZyBhIGxpbmtlZCBsaXN0IGZvciB0aGUgVERaIGVudmlyb25tZW50IGlu
c3RlYWQgb2YgYSBWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxOTkwOQorICAgICAgICA8cmRhcjovLzcxNDQxNzUzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlZm9yZSwgd2UnZCByZXByZXNl
bnQgdGhlIFREWiBzdGFjayBpbiB0ZXJtcyBvZiBhIFZlY3Rvci4gV2hpbGUgdGhlIGVudHJpZXMK
KyAgICAgICAgaW4gdGhlIFZlY3RvciB3ZXJlIHJlZmVyZW5jZSBjb3VudGVkLCB0aGUgc3BpbmUg
b2YgdGhlIFZlY3RvciBpdHNlbGYgd291bGQKKyAgICAgICAgbWF0Y2ggdGhlIGxlbmd0aCBvZiB0
aGUgVERaIHNjb3BlIHN0YWNrLiBJdCB0dXJucyBvdXQgdGhpcyBzcGluZSBpdHNlbGYgY2FuCisg
ICAgICAgIHVzZSBub24tdHJpdmlhbCBhbW91bnRzIG9mIG1lbW9yeS4gV2UgYXJlIHNlZWluZyBh
Ym91dCBhIDAuNSUgcmVncmVzc2lvbiBmcm9tCisgICAgICAgIHRoaXMgaW5zaWRlIFJBTWlmaWNh
dGlvbi4gVGhpcyBjaGFuZ2UgbWFrZXMgaXQgc28gdGhhdCB3ZSBub3cgdXNlIGEgdHJlZS1saWtl
CisgICAgICAgIGRhdGEgc3RydWN0dXJlIGZvciBzY29wZSBzdGFjayBlbnRyaWVzLiBUaGUgZGF0
YSBzdHJ1Y3R1cmUgaXMgYSB0cmVlIHdpdGggb25seQorICAgICAgICBwYXJlbnQgcG9pbnRlcnMu
IEFueSBmaWVsZCB0aGF0IHVzZWQgdG8gYmUgYSB2ZWN0b3Igb2YgZW50cmllcyBpcyBub3cgYQor
ICAgICAgICBwb2ludGVyIHRvIGEgbm9kZSBpbiB0aGlzIHRyZWUuIFNvIGFueSBwb2ludGVyIGlu
dG8gdGhpcyB0cmVlIHdpbGwgaGF2ZSBhCisgICAgICAgIGxpbmtlZC1saXN0IHdpbmRvdyBpbnRv
IHRoZSB0cmVlLCB3aGVyZSB0aGUgbGlua2VkLWxpc3QgcmVwcmVzZW50cyB0aGUgc2FtZQorICAg
ICAgICBkYXRhIGFzIHRoZSBwcmV2aW91cyB2ZWN0b3ItYXMtc3RhY2sgZGF0YSBzdHJ1Y3R1cmUu
CisgICAgICAgIAorICAgICAgICBJbml0aWFsIHRlc3Rpbmcgc2hvd3MgdGhpcyBtaWdodCBiZSB1
cCB0byBhIDAuNSUgcHJvZ3Jlc3Npb24gb24gUkFNaWZpY2F0aW9uLgorCisgICAgICAgICogYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1
dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cG9wTGV4
aWNhbFNjb3BlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bmVl
ZHNURFpDaGVjayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpsaWZ0VERaQ2hl
Y2tJZlBvc3NpYmxlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hURFpW
YXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVz
VW5kZXJURFopOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cHJlc2VydmVURFpT
dGFjayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlVERaU3RhY2sp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAqIHBhcnNlci9WYXJp
YWJsZUVudmlyb25tZW50Lmg6CisgICAgICAgIChKU0M6OlREWkVudmlyb25tZW50TGluazo6VERa
RW52aXJvbm1lbnRMaW5rKToKKyAgICAgICAgKEpTQzo6VERaRW52aXJvbm1lbnRMaW5rOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpURFpFbnZpcm9ubWVudExpbms6OmNvbnRhaW5zIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6VERaRW52aXJvbm1lbnRMaW5rOjpwYXJlbnQpOgorICAgICAgICAqIHJ1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRURFpFbnZpcm9ubWVu
dExpbms6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFREWkVudmlyb25tZW50TGluazo6
ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAg
IChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKToKKyAgICAgICAgKEpTQzo6Q29k
ZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisKIDIwMjAtMTIt
MTUgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbV0FTTS1SZWZlcmVuY2VzXSBBZGQgc3VwcG9ydCBmb3IgbWVtb3J5LmZpbGwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuY3BwCShyZXZpc2lvbiAyNzA4MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3
IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3UKICAgICAgICAgfQog
ICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFi
bGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2UsICZtZXRh
ZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2lj
LCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCAmbWV0YWRhdGEsIGtpbmQsIGNvbnN0
cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgbnVsbHB0ciwgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNCdWlsdGlu
RGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjcwODA2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNvdXJjZSwgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0
cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1v
ZGUsIE9wdGlvbmFsPFZlY3RvcjxDb21wYWN0VERaRW52aXJvbm1lbnRNYXA6OkhhbmRsZT4+IHBh
cmVudFNjb3BlVERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvcikKK1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmls
aXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBSZWZQ
dHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZlZENv
bnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIg
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29u
c3RydWN0b3IpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2ZpcnN0TGluZU9m
ZnNldChub2RlLT5maXJzdExpbmUoKSAtIHBhcmVudFNvdXJjZS5maXJzdExpbmUoKS5vbmVCYXNl
ZEludCgpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc0luU3RyaWN0Q29udGV4
dCgpKQpAQCAtMTI3LDcgKzEyNyw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxp
bmtlZEZ1bmMKICAgICBpZiAoIW5vZGUtPmNsYXNzU291cmNlKCkuaXNOdWxsKCkpCiAgICAgICAg
IHNldENsYXNzU291cmNlKG5vZGUtPmNsYXNzU291cmNlKCkpOwogICAgIGlmIChwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcykKLSAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX3BhcmVudFNjb3BlVERa
VmFyaWFibGVzID0gV1RGTW92ZSgqcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgICAgICBl
bnN1cmVSYXJlRGF0YSgpLm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMgPSBXVEZNb3ZlKHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzKTsKIH0KIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6On5V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAko
cmV2aXNpb24gMjcwODA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gJnZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3Bh
Y2Uuc3BhY2U7CiAgICAgfQogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwg
Q29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2Ny
aXB0TW9kZSwgT3B0aW9uYWw8VmVjdG9yPENvbXBhY3RURFpFbnZpcm9ubWVudE1hcDo6SGFuZGxl
Pj4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyLCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCisg
ICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtl
ZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25z
dHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVu
dmlyb25tZW50TGluaz4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9y
ID0gZmFsc2UpCiAgICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5z
dGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZT4odm0uaGVhcCkpCiAgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2
bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwg
bm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUs
IFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rv
cik7CkBAIC0xNjgsMTAgKzE2OCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhbV9yYXJl
RGF0YS0+bV9jbGFzc1NvdXJjZS5pc051bGwoKTsKICAgICB9CiAKLSAgICBWZWN0b3I8Q29tcGFj
dFREWkVudmlyb25tZW50TWFwOjpIYW5kbGU+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29u
c3QKKyAgICBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cygpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIW1fcmFyZURhdGEgfHwgbV9yYXJlRGF0YS0+
bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7
CiAgICAgfQogICAgIApAQCAtMjA4LDcgKzIwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgU291cmNl
Q29kZSBtX2NsYXNzU291cmNlOwogICAgICAgICBTdHJpbmcgbV9zb3VyY2VVUkxEaXJlY3RpdmU7
CiAgICAgICAgIFN0cmluZyBtX3NvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmU7Ci0gICAgICAgIFZl
Y3RvcjxDb21wYWN0VERaRW52aXJvbm1lbnRNYXA6OkhhbmRsZT4gbV9wYXJlbnRTY29wZVREWlZh
cmlhYmxlczsKKyAgICAgICAgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gbV9wYXJlbnRTY29w
ZVREWlZhcmlhYmxlczsKICAgICAgICAgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiBtX2NsYXNzRmll
bGRMb2NhdGlvbnM7CiAgICAgfTsKIApAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBTdHJ1Y3R1
cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1
bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25h
bDxWZWN0b3I8Q29tcGFjdFREWkVudmlyb25tZW50TWFwOjpIYW5kbGU+PiwgIEpTQzo6RGVyaXZl
ZENvbnRleHRUeXBlLCBKU0M6Ok5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQnVp
bHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZShWTSYsIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNj
cmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+LCAgSlNDOjpEZXJpdmVkQ29udGV4
dFR5cGUsIEpTQzo6TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVm
YXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERl
Y29kZXImLCBjb25zdCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUmKTsKIAogICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCShyZXZpc2lvbiAyNzA4MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDcgKzI4
OSw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgKICAgICByZXR1
cm4gUGFyc2VyRXJyb3IoUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiB9CiAKLUJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9k
ZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgQ2FjaGVkVERaU3RhY2smIHBh
cmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwg
VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJh
dGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50
TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6
IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNw
YWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2Rl
R2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShwcm9ncmFtTm9kZSkKQEAgLTMwNCw3
ICszMDQsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAg
LCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChwcm9ncmFtTm9kZS0+dXNlc0Fy
cm93RnVuY3Rpb24oKSB8fCBwcm9ncmFtTm9kZS0+dXNlc0V2YWwoKSkKICAgICAsIG1fZWNtYU1v
ZGUoZWNtYU1vZGUpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLnNpemUoKSk7CisgICAgQVNTRVJUX1VOVVNFRChw
YXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKIAogICAg
IG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAvLyBBbGxvY2F0ZSBzcGFjZSBmb3Ig
InRoaXMiCiAKQEAgLTMzNiw3ICszMzYsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mCiAgICAgfQogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2Rl
R2VuZXJhdGlvbk1vZGUsIGNvbnN0IENhY2hlZFREWlN0YWNrJiBwYXJlbnRTY29wZVREWlZhcmlh
YmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2Rl
R2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVy
YXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVC
bG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJl
Z2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2Rl
KQogICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25Ob2RlKQpAQCAtMzYzLDggKzM2Myw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICBmdW5jdGlvblN5bWJv
bFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBp
bnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4ID0gMDsKIAotICAgIG1fcGFyZW50U2NvcGVURFpT
dGFja1NpemUgPSBwYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zaXplKCk7Ci0gICAgbV9jYWNoZWRW
YXJpYWJsZXNVbmRlclREWiA9IHBhcmVudFNjb3BlVERaVmFyaWFibGVzOworICAgIG1fY2FjaGVk
UGFyZW50VERaID0gcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7CiAKICAgICBGdW5jdGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMgPSAqZnVuY3Rpb25Ob2RlLT5wYXJhbWV0ZXJzKCk7IAogICAgIC8v
IGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvaW5kZXguaHRt
bCNzZWMtZnVuY3Rpb25kZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KQEAgLTgzOSw3ICs4MzgsNyBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgcHVzaExleGlj
YWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0
ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tT
Y29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29k
ZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUs
IGNvbnN0IENhY2hlZFREWlN0YWNrJiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUg
ZWNtYU1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBF
dmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRp
b25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0
cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUg
ZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNl
bGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2Vu
ZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZXZhbE5v
ZGUpCkBAIC04NTcsOCArODU2LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJgogewogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOwogCi0gICAg
bV9wYXJlbnRTY29wZVREWlN0YWNrU2l6ZSA9IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLnNpemUo
KTsKLSAgICBtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaID0gcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXM7CisgICAgbV9jYWNoZWRQYXJlbnRURFogPSBwYXJlbnRTY29wZVREWlZhcmlhYmxlczsKIAog
ICAgIGVtaXRFbnRlcigpOwogCkBAIC05MDMsNyArOTAxLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUs
IFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5l
c3RlZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0K
IAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJv
Z3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRp
b25Nb2RlLCBjb25zdCBDYWNoZWRURFpTdGFjayYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVD
TUFNb2RlIGVjbWFNb2RlKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9k
ZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYg
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNv
ZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZt
LCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1Zp
cnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0
aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKG1vZHVsZVByb2dyYW1Ob2RlKQpAQCAtOTE4LDcg
KzkxNiw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICAs
IG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KG1vZHVsZVByb2dyYW1Ob2RlLT51
c2VzQXJyb3dGdW5jdGlvbigpIHx8IG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogICAg
ICwgbV9lY21hTW9kZShlY21hTW9kZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuc2l6ZSgpKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMpOwogCiAgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUgPSBT
eW1ib2xUYWJsZTo6Y3JlYXRlKG1fdm0pOwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFi
bGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwpOwpAQCAtMjE2OCw3
ICsyMTY2LDYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cG9wTGV4aWNhbFNjb3BlSQogICAg
IH0KIAogICAgIG1fVERaU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgIG1fY2FjaGVkVmFyaWFibGVz
VW5kZXJURFoucmVtb3ZlTGFzdCgpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwcmVw
YXJlTGV4aWNhbFNjb3BlRm9yTmV4dEZvckxvb3BJdGVyYXRpb24oVmFyaWFibGVFbnZpcm9ubWVu
dE5vZGUqIG5vZGUsIFJlZ2lzdGVySUQqIGxvb3BTeW1ib2xUYWJsZSkKQEAgLTI4NTAsMTcgKzI4
NDcsMjAgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFREWkNoZWNrKFJlZwogYm9vbCBC
eXRlY29kZUdlbmVyYXRvcjo6bmVlZHNURFpDaGVjayhjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUp
CiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9URFpTdGFjay5zaXplKCk7IGktLTspIHsKLSAg
ICAgICAgYXV0byBpdGVyID0gbV9URFpTdGFja1tpXS5maW5kKHZhcmlhYmxlLmlkZW50KCkuaW1w
bCgpKTsKLSAgICAgICAgaWYgKGl0ZXIgPT0gbV9URFpTdGFja1tpXS5lbmQoKSkKKyAgICAgICAg
YXV0byBpdGVyID0gbV9URFpTdGFja1tpXS5maXJzdC5maW5kKHZhcmlhYmxlLmlkZW50KCkuaW1w
bCgpKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV9URFpTdGFja1tpXS5maXJzdC5lbmQoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICByZXR1cm4gaXRlci0+dmFsdWUgIT0gVERaTmVj
ZXNzaXR5TGV2ZWw6Ok5vdE5lZWRlZDsKICAgICB9CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X3BhcmVudFNjb3BlVERaU3RhY2tTaXplOyBpLS07KSB7Ci0gICAgICAgIGlmIChtX2NhY2hlZFZh
cmlhYmxlc1VuZGVyVERaW2ldLmVudmlyb25tZW50KCkudG9URFpFbnZpcm9ubWVudCgpLmNvbnRh
aW5zKHZhcmlhYmxlLmlkZW50KCkuaW1wbCgpKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIHsKKyAgICAgICAgVERaRW52aXJvbm1lbnRMaW5rKiBlbnZpcm9ubWVudCA9IG1fY2FjaGVk
UGFyZW50VERaLmdldCgpOworICAgICAgICB3aGlsZSAoZW52aXJvbm1lbnQpIHsKKyAgICAgICAg
ICAgIGlmIChlbnZpcm9ubWVudC0+Y29udGFpbnModmFyaWFibGUuaWRlbnQoKS5pbXBsKCkpKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgZW52aXJvbm1lbnQgPSBl
bnZpcm9ubWVudC0+cGFyZW50KCk7CisgICAgICAgIH0KICAgICB9Ci0KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKQEAgLTI4ODEsOCArMjg4MSw4IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6Omxp
ZnRURFpDaGVja0lmUG8KIHsKICAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IGlkZW50aWZp
ZXIodmFyaWFibGUuaWRlbnQoKS5pbXBsKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG1fVERa
U3RhY2suc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIGF1dG8gaXRlciA9IG1fVERaU3RhY2tbaV0u
ZmluZChpZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKGl0ZXIgIT0gbV9URFpTdGFja1tpXS5lbmQo
KSkgeworICAgICAgICBhdXRvIGl0ZXIgPSBtX1REWlN0YWNrW2ldLmZpcnN0LmZpbmQoaWRlbnRp
Zmllcik7CisgICAgICAgIGlmIChpdGVyICE9IG1fVERaU3RhY2tbaV0uZmlyc3QuZW5kKCkpIHsK
ICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZSA9PSBURFpOZWNlc3NpdHlMZXZlbDo6T3B0aW1p
emUpCiAgICAgICAgICAgICAgICAgaXRlci0+dmFsdWUgPSBURFpOZWNlc3NpdHlMZXZlbDo6Tm90
TmVlZGVkOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTA4LDU2ICsyOTA4LDU3IEBAIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hURFpWYXJpYWJsZXMKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGVudHJ5IDogZW52aXJvbm1lbnQpCiAgICAgICAgIG1hcC5hZGQoZW50cnkua2V5LCBlbnRyeS52
YWx1ZS5pc0Z1bmN0aW9uKCkgPyBURFpOZWNlc3NpdHlMZXZlbDo6Tm90TmVlZGVkIDogbGV2ZWwp
OwogCi0gICAgbV9URFpTdGFjay5hcHBlbmQoV1RGTW92ZShtYXApKTsKLSAgICBtX2NhY2hlZFZh
cmlhYmxlc1VuZGVyVERaLmFwcGVuZCh7IH0pOworICAgIG1fVERaU3RhY2suYXBwZW5kKFREWlN0
YWNrRW50cnkgeyBXVEZNb3ZlKG1hcCksIG51bGxwdHIgfSk7CiB9CiAKLU9wdGlvbmFsPEJ5dGVj
b2RlR2VuZXJhdG9yOjpDYWNoZWRURFpTdGFjaz4gQnl0ZWNvZGVHZW5lcmF0b3I6OmdldFZhcmlh
Ymxlc1VuZGVyVERaKCkKK1JlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IEJ5dGVjb2RlR2VuZXJh
dG9yOjpnZXRWYXJpYWJsZXNVbmRlclREWigpCiB7CisgICAgUmVmUHRyPFREWkVudmlyb25tZW50
TGluaz4gcGFyZW50ID0gbV9jYWNoZWRQYXJlbnRURFo7CisgICAgaWYgKCFtX1REWlN0YWNrLnNp
emUoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudDsKKwogICAgIGF1dG8gYXNzZXJ0Q2FjaGVJc0Nv
aGVyZW50ID0gWyZdIHsKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFouc2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICBBU1NFUlQoISFtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaW2ldKTsKKyAgICAgICAgVERa
RW52aXJvbm1lbnRMaW5rKiBwYXJlbnQgPSBtX2NhY2hlZFBhcmVudFREWi5nZXQoKTsKKyAgICAg
ICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fVERaU3RhY2spIHsKKyAgICAgICAgICAgIEFTU0VSVChl
bnRyeS5zZWNvbmQpOworICAgICAgICAgICAgQVNTRVJUKGVudHJ5LnNlY29uZC0+cGFyZW50KCkg
PT0gcGFyZW50KTsKKyAgICAgICAgICAgIHBhcmVudCA9IGVudHJ5LnNlY29uZC5nZXQoKTsKKyAg
ICAgICAgfQogI2VuZGlmCiAgICAgfTsKIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fVERaU3RhY2su
c2l6ZSgpICsgbV9wYXJlbnRTY29wZVREWlN0YWNrU2l6ZSA9PSBtX2NhY2hlZFZhcmlhYmxlc1Vu
ZGVyVERaLnNpemUoKSk7Ci0KLSAgICBpZiAobV9jYWNoZWRWYXJpYWJsZXNVbmRlclREWi5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBpZiAobV9jYWNoZWRW
YXJpYWJsZXNVbmRlclREWi5sYXN0KCkpIHsKKyAgICBpZiAobV9URFpTdGFjay5sYXN0KCkuc2Vj
b25kKSB7CiAgICAgICAgIGFzc2VydENhY2hlSXNDb2hlcmVudCgpOwotICAgICAgICByZXR1cm4g
bV9jYWNoZWRWYXJpYWJsZXNVbmRlclREWjsKKyAgICAgICAgcmV0dXJuIG1fVERaU3RhY2subGFz
dCgpLnNlY29uZDsKICAgICB9CiAKLSAgICBmb3IgKHNpemVfdCBpID0gbV9URFpTdGFjay5zaXpl
KCk7IGktLTspIHsKLSAgICAgICAgaWYgKG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFpbaSArIG1f
cGFyZW50U2NvcGVURFpTdGFja1NpemVdKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
YXV0byYgbWFwID0gbV9URFpTdGFja1tpXTsKLSAgICAgICAgVERaRW52aXJvbm1lbnQgZW52aXJv
bm1lbnQ7Ci0gICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtYXApIHsKLSAgICAgICAgICAgIGlm
IChlbnRyeS52YWx1ZSAhPSBURFpOZWNlc3NpdHlMZXZlbDo6Tm90TmVlZGVkKQotICAgICAgICAg
ICAgICAgIGVudmlyb25tZW50LmFkZChlbnRyeS5rZXkuZ2V0KCkpOworICAgIGZvciAoYXV0byYg
ZW50cnkgOiBtX1REWlN0YWNrKSB7CisgICAgICAgIGlmICghZW50cnkuc2Vjb25kKSB7CisgICAg
ICAgICAgICBhdXRvJiBtYXAgPSBlbnRyeS5maXJzdDsKKyAgICAgICAgICAgIFREWkVudmlyb25t
ZW50IGVudmlyb25tZW50OworICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1hcCkgewor
ICAgICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZSAhPSBURFpOZWNlc3NpdHlMZXZlbDo6Tm90
TmVlZGVkKQorICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC5hZGQoZW50cnkua2V5Lmdl
dCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVudHJ5LnNlY29uZCA9IFREWkVudmly
b25tZW50TGluazo6Y3JlYXRlKG1fdm0ubV9jb21wYWN0VmFyaWFibGVNYXAtPmdldChlbnZpcm9u
bWVudCksIHBhcmVudCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9jYWNoZWRWYXJpYWJsZXNVbmRl
clREWltpICsgbV9wYXJlbnRTY29wZVREWlN0YWNrU2l6ZV0gPSBtX3ZtLm1fY29tcGFjdFZhcmlh
YmxlTWFwLT5nZXQoZW52aXJvbm1lbnQpOworICAgICAgICBwYXJlbnQgPSBlbnRyeS5zZWNvbmQ7
CiAgICAgfQogCiAgICAgYXNzZXJ0Q2FjaGVJc0NvaGVyZW50KCk7Ci0gICAgcmV0dXJuIG1fY2Fj
aGVkVmFyaWFibGVzVW5kZXJURFo7CisKKyAgICByZXR1cm4gcGFyZW50OwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpwcmVzZXJ2ZVREWlN0YWNrKEJ5dGVjb2RlR2VuZXJhdG9yOjpQcmVz
ZXJ2ZWRURFpTdGFjayYgcHJlc2VydmVkU3RhY2spCiB7CiAgICAgcHJlc2VydmVkU3RhY2subV9w
cmVzZXJ2ZWRURFpTdGFjayA9IG1fVERaU3RhY2s7Ci0gICAgcHJlc2VydmVkU3RhY2subV9jYWNo
ZWRURFpTdGFjayA9IG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFo7CiB9CiAKIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OnJlc3RvcmVURFpTdGFjayhjb25zdCBCeXRlY29kZUdlbmVyYXRvcjo6UHJl
c2VydmVkVERaU3RhY2smIHByZXNlcnZlZFN0YWNrKQogewogICAgIG1fVERaU3RhY2sgPSBwcmVz
ZXJ2ZWRTdGFjay5tX3ByZXNlcnZlZFREWlN0YWNrOwotICAgIG1fY2FjaGVkVmFyaWFibGVzVW5k
ZXJURFogPSBwcmVzZXJ2ZWRTdGFjay5tX2NhY2hlZFREWlN0YWNrOwogfQogCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld09iamVjdChSZWdpc3RlcklEKiBkc3QpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyNzA4MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNywx
MiArNDA3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHVibGljOgogICAgICAgICB0eXBl
ZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7Ci0gICAg
ICAgIHVzaW5nIENhY2hlZFREWlN0YWNrID0gVmVjdG9yPENvbXBhY3RURFpFbnZpcm9ubWVudE1h
cDo6SGFuZGxlPjsKIAotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIFByb2dyYW1Ob2Rl
KiwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9k
ZT4sIGNvbnN0IENhY2hlZFREWlN0YWNrJiwgRUNNQU1vZGUpOwotICAgICAgICBCeXRlY29kZUdl
bmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgQ2FjaGVkVERaU3RhY2smLCBFQ01B
TW9kZSk7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRXZhbE5vZGUqLCBVbmxpbmtl
ZEV2YWxDb2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgQ2Fj
aGVkVERaU3RhY2smLCBFQ01BTW9kZSk7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwg
TW9kdWxlUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBPcHRp
b25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgQ2FjaGVkVERaU3RhY2smLCBFQ01BTW9k
ZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3Qg
UmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiwgRnVuY3Rpb25Ob2RlKiwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayos
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1l
bnRMaW5rPiYsIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFs
Tm9kZSosIFVubGlua2VkRXZhbENvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1v
ZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIEVDTUFNb2RlKTsKKyAgICAg
ICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25z
dCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIEVDTUFNb2RlKTsKIAogICAgICAgICB+Qnl0
ZWNvZGVHZW5lcmF0b3IoKTsKICAgICAgICAgCkBAIC00MzIsNyArNDMxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyKCk7IH0KIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlLCB0eXBl
bmFtZSBVbmxpbmtlZENvZGVCbG9jaz4KLSAgICAgICAgc3RhdGljIFBhcnNlckVycm9yIGdlbmVy
YXRlKFZNJiB2bSwgTm9kZSogbm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgVW5s
aW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IENhY2hlZFREWlN0YWNrJiBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgICAgIHN0YXRpYyBQYXJz
ZXJFcnJvciBnZW5lcmF0ZShWTSYgdm0sIE5vZGUqIG5vZGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERa
RW52aXJvbm1lbnRMaW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFN
b2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBNb25vdG9uaWNUaW1lIGJlZm9yZTsKICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRlY29kZUNvbXBpbGVUaW1lcygp
KSkKQEAgLTExOTgsNyArMTE5Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUt
PnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRp
bkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgc2Ny
aXB0TW9kZSgpLCBXVEZNb3ZlKG9wdGlvbmFsVmFyaWFibGVzVW5kZXJURFopLCBuZXdEZXJpdmVk
Q29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKICAgICAgICAgfQogCi0g
ICAgICAgIE9wdGlvbmFsPENhY2hlZFREWlN0YWNrPiBnZXRWYXJpYWJsZXNVbmRlclREWigpOwor
ICAgICAgICBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBnZXRWYXJpYWJsZXNVbmRlclREWigp
OwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJhcmdzKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3Rl
cklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZp
cnN0VmFyQXJnT2Zmc2V0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIERl
YnVnZ2FibGVDYWxsKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgpAQCAtMTIy
OSwxMCArMTIyOCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0VGhyb3dFeHByZXNzaW9uVG9vRGVlcEV4Y2VwdGlvbigpOwogCisgICAgICAgIHVzaW5nIFRE
WlN0YWNrRW50cnkgPSBzdGQ6OnBhaXI8VERaTWFwLCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5r
Pj47CisKICAgICAgICAgY2xhc3MgUHJlc2VydmVkVERaU3RhY2sgewogICAgICAgICBwcml2YXRl
OgotICAgICAgICAgICAgVmVjdG9yPFREWk1hcD4gbV9wcmVzZXJ2ZWRURFpTdGFjazsKLSAgICAg
ICAgICAgIENhY2hlZFREWlN0YWNrIG1fY2FjaGVkVERaU3RhY2s7CisgICAgICAgICAgICBWZWN0
b3I8VERaU3RhY2tFbnRyeT4gbV9wcmVzZXJ2ZWRURFpTdGFjazsKICAgICAgICAgICAgIGZyaWVu
ZCBjbGFzcyBCeXRlY29kZUdlbmVyYXRvcjsKICAgICAgICAgfTsKIApAQCAtMTI2NCw5ICsxMjY0
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAgICAgICAgIFZlY3RvcjxMZXhpY2Fs
U2NvcGVTdGFja0VudHJ5PiBtX2xleGljYWxTY29wZVN0YWNrOwogCi0gICAgICAgIHNpemVfdCBt
X3BhcmVudFNjb3BlVERaU3RhY2tTaXplIHsgMCB9OwotICAgICAgICBWZWN0b3I8VERaTWFwPiBt
X1REWlN0YWNrOwotICAgICAgICBDYWNoZWRURFpTdGFjayBtX2NhY2hlZFZhcmlhYmxlc1VuZGVy
VERaOworICAgICAgICBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBtX2NhY2hlZFBhcmVudFRE
WjsKKyAgICAgICAgVmVjdG9yPFREWlN0YWNrRW50cnk+IG1fVERaU3RhY2s7CiAgICAgICAgIE9w
dGlvbmFsPHNpemVfdD4gbV92YXJTY29wZUxleGljYWxTY29wZVN0YWNrSW5kZXg7CiAgICAgICAg
IHZvaWQgcHVzaFREWlZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiwgVERaQ2hl
Y2tPcHRpbWl6YXRpb24sIFREWlJlcXVpcmVtZW50KTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgJKHJldmlzaW9uIDI3
MDgwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTksNCArNDE5LDI2IEBAIHByaXZhdGU6CiAgICAgSGFz
aE1hcDxDb21wYWN0VERaRW52aXJvbm1lbnRLZXksIHVuc2lnbmVkPiBtX21hcDsKIH07CiAKK2Ns
YXNzIFREWkVudmlyb25tZW50TGluayA6IHB1YmxpYyBSZWZDb3VudGVkPFREWkVudmlyb25tZW50
TGluaz4geworICAgIFREWkVudmlyb25tZW50TGluayhDb21wYWN0VERaRW52aXJvbm1lbnRNYXA6
OkhhbmRsZSBoYW5kbGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudCkKKyAgICAg
ICAgOiBtX2hhbmRsZShXVEZNb3ZlKGhhbmRsZSkpCisgICAgICAgICwgbV9wYXJlbnQoV1RGTW92
ZShwYXJlbnQpKQorICAgIHsgfQorCitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxURFpFbnZp
cm9ubWVudExpbms+IGNyZWF0ZShDb21wYWN0VERaRW52aXJvbm1lbnRNYXA6OkhhbmRsZSBoYW5k
bGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVERaRW52aXJvbm1lbnRMaW5rKFdURk1vdmUoaGFuZGxlKSwgV1RG
TW92ZShwYXJlbnQpKSk7CisgICAgfQorCisgICAgYm9vbCBjb250YWlucyhVbmlxdWVkU3RyaW5n
SW1wbCogaW1wbCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUuZW52aXJvbm1lbnQoKS50b1REWkVu
dmlyb25tZW50KCkuY29udGFpbnMoaW1wbCk7IH0KKyAgICBURFpFbnZpcm9ubWVudExpbmsqIHBh
cmVudCgpIHsgcmV0dXJuIG1fcGFyZW50LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIENhY2hlZFREWkVudmlyb25tZW50TGluazsKKworICAgIENvbXBhY3RURFpFbnZpcm9u
bWVudE1hcDo6SGFuZGxlIG1faGFuZGxlOworICAgIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+
IG1fcGFyZW50OworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCShyZXZpc2lvbiAyNzA4MDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3NjMsNiArMTc2MywyNiBAQCBwcml2YXRlOgogICAgIGludCBtX3N0YXJ0Q29s
dW1uOwogfTsKIAorY2xhc3MgQ2FjaGVkVERaRW52aXJvbm1lbnRMaW5rIDogcHVibGljIENhY2hl
ZE9iamVjdDxURFpFbnZpcm9ubWVudExpbms+IHsKK3B1YmxpYzoKKyAgICB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBURFpFbnZpcm9ubWVudExpbmsmIGVudmlyb25tZW50KQor
ICAgIHsKKyAgICAgICAgbV9oYW5kbGUuZW5jb2RlKGVuY29kZXIsIGVudmlyb25tZW50Lm1faGFu
ZGxlKTsKKyAgICAgICAgbV9wYXJlbnQuZW5jb2RlKGVuY29kZXIsIGVudmlyb25tZW50Lm1fcGFy
ZW50KTsKKyAgICB9CisKKyAgICBURFpFbnZpcm9ubWVudExpbmsqIGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgQ29tcGFjdFREWkVudmlyb25tZW50TWFwOjpI
YW5kbGUgaGFuZGxlID0gbV9oYW5kbGUuZGVjb2RlKGRlY29kZXIpOworICAgICAgICBSZWZQdHI8
VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnQgPSBtX3BhcmVudC5kZWNvZGUoZGVjb2Rlcik7Cisg
ICAgICAgIHJldHVybiBuZXcgVERaRW52aXJvbm1lbnRMaW5rKFdURk1vdmUoaGFuZGxlKSwgV1RG
TW92ZShwYXJlbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ2FjaGVkQ29tcGFjdFREWkVu
dmlyb25tZW50TWFwSGFuZGxlIG1faGFuZGxlOworICAgIENhY2hlZFJlZlB0cjxDYWNoZWRURFpF
bnZpcm9ubWVudExpbms+IG1fcGFyZW50OworfTsKKwogY2xhc3MgQ2FjaGVkRnVuY3Rpb25FeGVj
dXRhYmxlUmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpSYXJlRGF0YT4gewogcHVibGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgcmFyZURh
dGEpCkBAIC0xNzgxLDcgKzE4MDEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgQ2FjaGVk
U291cmNlQ29kZVdpdGhvdXRQcm92aWRlciBtX2NsYXNzU291cmNlOwotICAgIENhY2hlZFZlY3Rv
cjxDYWNoZWRDb21wYWN0VERaRW52aXJvbm1lbnRNYXBIYW5kbGU+IG1fcGFyZW50U2NvcGVURFpW
YXJpYWJsZXM7CisgICAgQ2FjaGVkUmVmUHRyPENhY2hlZFREWkVudmlyb25tZW50TGluaz4gbV9w
YXJlbnRTY29wZVREWlZhcmlhYmxlczsKIH07CiAKIGNsYXNzIENhY2hlZEZ1bmN0aW9uRXhlY3V0
YWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAkocmV2
aXNpb24gMjcwODA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDkgKzEwNSw5IEBAIFVubGlua2VkQ29kZUJsb2Nr
VHlwZSogZ2VuZXJhdGVVbmxpbmtlZEMKICAgICBpZiAoIXNvdXJjZS5wcm92aWRlcigpLT5zb3Vy
Y2VNYXBwaW5nVVJMRGlyZWN0aXZlKCkuaXNOdWxsKCkpCiAgICAgICAgIHVubGlua2VkQ29kZUJs
b2NrLT5zZXRTb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKHNvdXJjZS5wcm92aWRlcigpLT5zb3Vy
Y2VNYXBwaW5nVVJMRGlyZWN0aXZlKCkpOwogCi0gICAgVmVjdG9yPENvbXBhY3RURFpFbnZpcm9u
bWVudE1hcDo6SGFuZGxlPiBwYXJlbnRWYXJpYWJsZXNVbmRlclREWjsKKyAgICBSZWZQdHI8VERa
RW52aXJvbm1lbnRMaW5rPiBwYXJlbnRWYXJpYWJsZXNVbmRlclREWjsKICAgICBpZiAodmFyaWFi
bGVzVW5kZXJURFopCi0gICAgICAgIHBhcmVudFZhcmlhYmxlc1VuZGVyVERaLmFwcGVuZCh2bS5t
X2NvbXBhY3RWYXJpYWJsZU1hcC0+Z2V0KCp2YXJpYWJsZXNVbmRlclREWikpOworICAgICAgICBw
YXJlbnRWYXJpYWJsZXNVbmRlclREWiA9IFREWkVudmlyb25tZW50TGluazo6Y3JlYXRlKHZtLm1f
Y29tcGFjdFZhcmlhYmxlTWFwLT5nZXQoKnZhcmlhYmxlc1VuZGVyVERaKSwgbnVsbHB0cik7CiAg
ICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIHJvb3ROb2RlLmdldCgp
LCBzb3VyY2UsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFZh
cmlhYmxlc1VuZGVyVERaLCBlY21hTW9kZSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQpA
QCAtMjQ4LDcgKzI0OCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6
OmcKICAgICAvLyBUaGUgRnVuY3Rpb24gY29uc3RydWN0b3Igb25seSBoYXMgYWNjZXNzIHRvIGds
b2JhbCB2YXJpYWJsZXMsIHNvIG5vIHZhcmlhYmxlcyB3aWxsIGJlIHVuZGVyIFREWiB1bmxlc3Mg
dGhleSdyZQogICAgIC8vIGluIHRoZSBnbG9iYWwgbGV4aWNhbCBlbnZpcm9ubWVudCwgd2hpY2gg
d2UgYWx3YXlzIFREWiBjaGVjayBhY2Nlc3NlcyBmcm9tLgogICAgIENvbnN0cnVjdEFiaWxpdHkg
Y29uc3RydWN0QWJpbGl0eSA9IGNvbnN0cnVjdEFiaWxpdHlGb3JQYXJzZU1vZGUobWV0YWRhdGEt
PnBhcnNlTW9kZSgpKTsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNl
LCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgSlNQ
YXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlw
ZTo6Tm9uZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKTsKKyAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5j
dGlvbiwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBudWxs
cHRyLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
OjpObyk7CiAKICAgICBpZiAoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxEaXJlY3RpdmUo
KS5pc051bGwoKSkKICAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXRTb3VyY2VVUkxEaXJl
Y3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>