<?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>151795</bug_id>
          
          <creation_ts>2015-12-02 23:22:54 -0800</creation_ts>
          <short_desc>FTL::OSRExitDescriptor should use less memory by having a companion object that dies after compilation</short_desc>
          <delta_ts>2015-12-03 13:10:22 -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>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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1145877</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-02 23:22:54 -0800</bug_when>
    <thetext>We only use the field while compiling so there is no need for it to live forever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145894</commentid>
    <comment_count>1</comment_count>
      <attachid>266521</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-03 01:29:35 -0800</bug_when>
    <thetext>Created attachment 266521
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145895</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-03 01:31:39 -0800</bug_when>
    <thetext>Attachment 266521 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLOSRExitCompilationInfo.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOSRExit.cpp:47:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 9 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>1145996</commentid>
    <comment_count>3</comment_count>
      <attachid>266521</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-12-03 11:53:21 -0800</bug_when>
    <thetext>Comment on attachment 266521
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=266521&amp;action=review

r=me

&gt; Source/JavaScriptCore/ftl/FTLCompile.cpp:485
&gt; +    HashMap&lt;OSRExitDescriptor*, OSRExitDescriptorCompilationInfo*&gt; genericUnwindOSRExitDescriptors;

Can we call this OSRExitDescriptorImpl? This seems to be the impl pattern, where most of the implementation of the object is in another object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145998</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-03 12:00:46 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 266521 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=266521&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLCompile.cpp:485
&gt; &gt; +    HashMap&lt;OSRExitDescriptor*, OSRExitDescriptorCompilationInfo*&gt; genericUnwindOSRExitDescriptors;
&gt; 
&gt; Can we call this OSRExitDescriptorImpl? This seems to be the impl pattern,
&gt; where most of the implementation of the object is in another object.

Sounds good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146034</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-03 13:10:22 -0800</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/193371</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266521</attachid>
            <date>2015-12-03 01:29:35 -0800</date>
            <delta_ts>2015-12-03 11:53:21 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>26316</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkyOTk0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDE1LTEyLTAzICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEZUTDo6T1NSRXhpdERlc2NyaXB0b3Igc2hvdWxkIHVzZSBsZXNzIG1lbW9yeSBieSBoYXZpbmcg
YSBjb21wYW5pb24gb2JqZWN0IHRoYXQgZGllcyBhZnRlciBjb21waWxhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNzk1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgd2VyZSBhIGZldyBm
aWVsZHMgb24gRlRMOjpPU1JFeGl0RGVzY3JpcHRvciB0aGF0IGFyZSBvbmx5CisgICAgICAgIG5l
ZWRlZCBkdXJpbmcgY29tcGlsYXRpb24uIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBPU1JFeGl0RGVz
Y3JpcHRvckNvbXBpbGF0aW9uSW5mbyAKKyAgICAgICAgd2hpY2ggaXMgYSBzdHJ1Y3QgdGhhdCB3
ZSBjcmVhdGUgZm9yIGVhY2ggT1NSRXhpdERlc2NyaXB0b3IuIFRoZSBkaWZmZXJlbmNlIGlzIAor
ICAgICAgICB0aGF0IE9TUkV4aXREZXNjcmlwdG9yQ29tcGlsYXRpb25JbmZvIGxpdmVzIG9mZiBv
ZiBGVEw6OlN0YXRlIHNvIGl0IGRpZXMgYWZ0ZXIgd2UgY29tcGlsZS4KKyAgICAgICAgVGhpcyB3
YXkgbm8gdW5uZWNlc3NhcnkgZmllbGRzIHBlcnNpc3QgYWZ0ZXIgdGhlIGNvbXBpbGF0aW9uLgor
CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om1tQWxs
b2NhdGVEYXRhU2VjdGlvbik6CisgICAgICAgICogZnRsL0ZUTEV4Y2VwdGlvbkhhbmRsZXJNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGNlcHRpb25IYW5kbGVyTWFuYWdlcjo6bGF6
eVNsb3dQYXRoRXhjZXB0aW9uVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpFeGNlcHRpb25I
YW5kbGVyTWFuYWdlcjo6Z2V0Q2FsbE9TUkV4aXRDb21tb24pOgorICAgICAgICAqIGZ0bC9GVExM
b3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExW
TTo6Y29tcGlsZUludmFsaWRhdGlvblBvaW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9MTFZNOjphcHBlbmRPU1JFeGl0QXJndW1lbnRzRm9yUGF0Y2hwb2ludElmV2lsbENh
dGNoRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjph
cHBlbmRPU1JFeGl0RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6YXBwZW5kT1NSRXhpdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Ymxlc3NTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvTExWTTo6ZW1pdE9TUkV4aXRDYWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9MTFZNOjpidWlsZEV4aXRBcmd1bWVudHMpOgorICAgICAgICAqIGZ0bC9GVExPU1JF
eGl0LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpPU1JFeGl0RGVzY3JpcHRvcjo6T1NSRXhpdERl
c2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjp2YWxpZGF0
ZVJlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpGVEw6Ok9TUkV4aXQ6Ok9TUkV4aXQpOgorICAg
ICAgICAoSlNDOjpGVEw6Ok9TUkV4aXQ6OmNvZGVMb2NhdGlvbkZvclJlcGF0Y2gpOgorICAgICAg
ICAoSlNDOjpGVEw6Ok9TUkV4aXQ6OmdhdGhlclJlZ2lzdGVyc1RvU3BpbGxGb3JDYWxsSWZFeGNl
cHRpb24pOgorICAgICAgICAoSlNDOjpGVEw6Ok9TUkV4aXQ6OndpbGxBcnJpdmVBdEV4aXRGcm9t
SW5kaXJlY3RFeGNlcHRpb25DaGVjayk6CisgICAgICAgIChKU0M6OkZUTDo6ZXhjZXB0aW9uVHlw
ZVdpbGxBcnJpdmVBdE9TUkV4aXRGcm9tR2VuZXJpY1Vud2luZCk6CisgICAgICAgIChKU0M6OkZU
TDo6T1NSRXhpdDo6d2lsbEFycml2ZUF0T1NSRXhpdEZyb21HZW5lcmljVW53aW5kKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPU1JFeGl0Ojp3aWxsQXJyaXZlQXRPU1JFeGl0RnJvbUNhbGxPcGVyYXRp
b24pOgorICAgICAgICAoSlNDOjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjppc0V4Y2VwdGlvbkhh
bmRsZXIpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Lmg6CisgICAgICAgICog
ZnRsL0ZUTE9TUkV4aXRDb21waWxhdGlvbkluZm8uaDoKKyAgICAgICAgKEpTQzo6RlRMOjpPU1JF
eGl0RGVzY3JpcHRvckNvbXBpbGF0aW9uSW5mbzo6T1NSRXhpdERlc2NyaXB0b3JDb21waWxhdGlv
bkluZm8pOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OmNvbXBpbGVGVExPU1JFeGl0KToKKyAgICAgICAgKiBmdGwvRlRMU3RhdGUuaDoK
KwogMjAxNS0xMi0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
UG9seW1vcnBoaWMgb3BlcmFuZCB0eXBlcyBmb3IgREZHIGFuZCBGVEwgbXVsLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCShyZXZpc2lvbiAxOTI5OTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00ODIsNiArNDgyLDcgQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tN
YXBzKAogICAgIH0KIAogICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRlLmppdENvZGUtPm9zckV4aXQu
c2l6ZSgpID09IDApOworICAgIEhhc2hNYXA8T1NSRXhpdERlc2NyaXB0b3IqLCBPU1JFeGl0RGVz
Y3JpcHRvckNvbXBpbGF0aW9uSW5mbyo+IGdlbmVyaWNVbndpbmRPU1JFeGl0RGVzY3JpcHRvcnM7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0YXRlLmppdENvZGUtPm9zckV4aXREZXNj
cmlwdG9ycy5zaXplKCk7IGkrKykgewogICAgICAgICBPU1JFeGl0RGVzY3JpcHRvciYgZXhpdERl
c2NyaXB0b3IgPSBzdGF0ZS5qaXRDb2RlLT5vc3JFeGl0RGVzY3JpcHRvcnNbaV07CiAgICAgICAg
IGF1dG8gaXRlciA9IHJlY29yZE1hcC5maW5kKGV4aXREZXNjcmlwdG9yLm1fc3RhY2ttYXBJRCk7
CkBAIC00OTAsNiArNDkxLDEwIEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNr
TWFwcygKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKKyAgICAgICAgT1NSRXhp
dERlc2NyaXB0b3JDb21waWxhdGlvbkluZm8mIGV4aXREZXNjcmlwdG9yQ29tcGlsYXRpb25JbmZv
ID0gc3RhdGUub3NyRXhpdERlc2NyaXB0b3JDb21waWxhdGlvbkluZm9zW2ldOworICAgICAgICBp
ZiAoZXhjZXB0aW9uVHlwZVdpbGxBcnJpdmVBdE9TUkV4aXRGcm9tR2VuZXJpY1Vud2luZChleGl0
RGVzY3JpcHRvckNvbXBpbGF0aW9uSW5mby5tX2V4Y2VwdGlvblR5cGUpKQorICAgICAgICAgICAg
Z2VuZXJpY1Vud2luZE9TUkV4aXREZXNjcmlwdG9ycy5hZGQoJmV4aXREZXNjcmlwdG9yLCAmZXhp
dERlc2NyaXB0b3JDb21waWxhdGlvbkluZm8pOworCiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9
IGV4aXREZXNjcmlwdG9yLm1fdmFsdWVzLnNpemUoKTsgai0tOykKICAgICAgICAgICAgIGV4aXRE
ZXNjcmlwdG9yLm1fdmFsdWVzW2pdID0gZXhpdERlc2NyaXB0b3IubV92YWx1ZXNbal0ud2l0aExv
Y2Fsc09mZnNldChsb2NhbHNPZmZzZXQpOwogICAgICAgICBmb3IgKEV4aXRUaW1lT2JqZWN0TWF0
ZXJpYWxpemF0aW9uKiBtYXRlcmlhbGl6YXRpb24gOiBleGl0RGVzY3JpcHRvci5tX21hdGVyaWFs
aXphdGlvbnMpCkBAIC00OTgsNyArNTAzLDcgQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNl
ZE9uU3RhY2tNYXBzKAogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgaXRlci0+dmFs
dWUuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB1aW50MzJf
dCBzdGFja21hcFJlY29yZEluZGV4ID0gaXRlci0+dmFsdWVbal0uaW5kZXg7Ci0gICAgICAgICAg
ICAgICAgT1NSRXhpdCBleGl0KGV4aXREZXNjcmlwdG9yLCBzdGFja21hcFJlY29yZEluZGV4KTsK
KyAgICAgICAgICAgICAgICBPU1JFeGl0IGV4aXQoZXhpdERlc2NyaXB0b3IsIGV4aXREZXNjcmlw
dG9yQ29tcGlsYXRpb25JbmZvLCBzdGFja21hcFJlY29yZEluZGV4KTsKICAgICAgICAgICAgICAg
ICBzdGF0ZS5qaXRDb2RlLT5vc3JFeGl0LmFwcGVuZChleGl0KTsKICAgICAgICAgICAgICAgICBz
dGF0ZS5maW5hbGl6ZXItPm9zckV4aXQuYXBwZW5kKE9TUkV4aXRDb21waWxhdGlvbkluZm8oKSk7
CiAgICAgICAgICAgICB9CkBAIC01MDYsMjkgKzUxMSwyOSBAQCBzdGF0aWMgdm9pZCBmaXhGdW5j
dGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgICAgICAgICBPU1JFeGl0JiBleGl0ID0gc3RhdGUu
aml0Q29kZS0+b3NyRXhpdC5sYXN0KCk7CiAgICAgICAgICAgICBpZiAoZXhpdC53aWxsQXJyaXZl
QXRFeGl0RnJvbUluZGlyZWN0RXhjZXB0aW9uQ2hlY2soKSkgewogICAgICAgICAgICAgICAgIFN0
YWNrTWFwczo6UmVjb3JkJiByZWNvcmQgPSBpdGVyLT52YWx1ZVtqXS5yZWNvcmQ7Ci0gICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhpdC5tX2Rlc2NyaXB0b3IubV9zZW1hbnRpY0NvZGVP
cmlnaW5Gb3JDYWxsRnJhbWVIZWFkZXIuaXNTZXQoKSk7Ci0gICAgICAgICAgICAgICAgQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUuaml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNh
bGxTaXRlSW5kZXgoZXhpdC5tX2Rlc2NyaXB0b3IubV9zZW1hbnRpY0NvZGVPcmlnaW5Gb3JDYWxs
RnJhbWVIZWFkZXIpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4aXREZXNjcmlw
dG9yQ29tcGlsYXRpb25JbmZvLm1fc2VtYW50aWNDb2RlT3JpZ2luRm9yQ2FsbEZyYW1lSGVhZGVy
LmlzU2V0KCkpOworICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9
IHN0YXRlLmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KGV4aXREZXNjcmlw
dG9yQ29tcGlsYXRpb25JbmZvLm1fc2VtYW50aWNDb2RlT3JpZ2luRm9yQ2FsbEZyYW1lSGVhZGVy
KTsKICAgICAgICAgICAgICAgICBleGl0Lm1fZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgg
PSBjYWxsU2l0ZUluZGV4OwogCiAgICAgICAgICAgICAgICAgT1NSRXhpdCogY2FsbE9wZXJhdGlv
bkV4aXQgPSBudWxscHRyOwotICAgICAgICAgICAgICAgIGlmIChleGl0RGVzY3JpcHRvci5tX2V4
Y2VwdGlvblR5cGUgPT0gRXhjZXB0aW9uVHlwZTo6QmluYXJ5T3BHZW5lcmF0b3IpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoZXhpdERlc2NyaXB0b3JDb21waWxhdGlvbkluZm8ubV9leGNlcHRpb25U
eXBlID09IEV4Y2VwdGlvblR5cGU6OkJpbmFyeU9wR2VuZXJhdG9yKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbkhhbmRsZXJNYW5hZ2VyLmFkZE5ld0NhbGxPcGVyYXRpb25FeGl0KGl0
ZXItPnZhbHVlW2pdLmluZGV4LCBzdGF0ZS5qaXRDb2RlLT5vc3JFeGl0LnNpemUoKSAtIDEpOwog
ICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uRXhpdCA9ICZleGl0OwogICAgICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGVyTWFuYWdl
ci5hZGROZXdFeGl0KGl0ZXItPnZhbHVlW2pdLmluZGV4LCBzdGF0ZS5qaXRDb2RlLT5vc3JFeGl0
LnNpemUoKSAtIDEpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChleGl0
RGVzY3JpcHRvci5tX2V4Y2VwdGlvblR5cGUgPT0gRXhjZXB0aW9uVHlwZTo6R2V0QnlJZCB8fCBl
eGl0RGVzY3JpcHRvci5tX2V4Y2VwdGlvblR5cGUgPT0gRXhjZXB0aW9uVHlwZTo6UHV0QnlJZCkg
eworICAgICAgICAgICAgICAgIGlmIChleGl0RGVzY3JpcHRvckNvbXBpbGF0aW9uSW5mby5tX2V4
Y2VwdGlvblR5cGUgPT0gRXhjZXB0aW9uVHlwZTo6R2V0QnlJZCB8fCBleGl0RGVzY3JpcHRvckNv
bXBpbGF0aW9uSW5mby5tX2V4Y2VwdGlvblR5cGUgPT0gRXhjZXB0aW9uVHlwZTo6UHV0QnlJZCkg
ewogICAgICAgICAgICAgICAgICAgICAvLyBXZSBjcmVhdGUgdHdvIGRpZmZlcmVudCBPU1JFeGl0
cyBmb3IgR2V0QnlJZCBhbmQgUHV0QnlJZC4KICAgICAgICAgICAgICAgICAgICAgLy8gT25lIGV4
aXQgdGhhdCB3aWxsIGJlIGFycml2ZWQgYXQgZnJvbSB0aGUgZ2VuZXJpY1Vud2luZCBleGNlcHRp
b24gaGFuZGxlciBwYXRoLAogICAgICAgICAgICAgICAgICAgICAvLyBhbmQgdGhlIG90aGVyIHRo
YXQgd2lsbCBiZSBhcnJpdmVkIGF0IGZyb20gdGhlIGNhbGxPcGVyYXRpb24gZXhjZXB0aW9uIGhh
bmRsZXIgcGF0aC4KICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBjb2RlIGhlcmUgZ2VuZXJh
dGVzIHRoZSBzZWNvbmQgY2FsbE9wZXJhdGlvbiB2YXJpYW50LgogICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCBzdGFja21hcFJlY29yZEluZGV4ID0gaXRlci0+dmFsdWVbal0uaW5kZXg7Ci0g
ICAgICAgICAgICAgICAgICAgIE9TUkV4aXQgZXhpdChleGl0RGVzY3JpcHRvciwgc3RhY2ttYXBS
ZWNvcmRJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChleGl0RGVzY3JpcHRvci5tX2V4
Y2VwdGlvblR5cGUgPT0gRXhjZXB0aW9uVHlwZTo6R2V0QnlJZCkKKyAgICAgICAgICAgICAgICAg
ICAgT1NSRXhpdCBleGl0KGV4aXREZXNjcmlwdG9yLCBleGl0RGVzY3JpcHRvckNvbXBpbGF0aW9u
SW5mbywgc3RhY2ttYXBSZWNvcmRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChleGl0
RGVzY3JpcHRvckNvbXBpbGF0aW9uSW5mby5tX2V4Y2VwdGlvblR5cGUgPT0gRXhjZXB0aW9uVHlw
ZTo6R2V0QnlJZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQubV9leGNlcHRpb25UeXBl
ID0gRXhjZXB0aW9uVHlwZTo6R2V0QnlJZENhbGxPcGVyYXRpb247CiAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQubV9leGNlcHRpb25UeXBlID0g
RXhjZXB0aW9uVHlwZTo6UHV0QnlJZENhbGxPcGVyYXRpb247Ci0gICAgICAgICAgICAgICAgICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLmppdENvZGUtPmNvbW1vbi5hZGRV
bmlxdWVDYWxsU2l0ZUluZGV4KGV4aXQubV9kZXNjcmlwdG9yLm1fc2VtYW50aWNDb2RlT3JpZ2lu
Rm9yQ2FsbEZyYW1lSGVhZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZUluZGV4ID0gc3RhdGUuaml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNhbGxTaXRlSW5k
ZXgoZXhpdERlc2NyaXB0b3JDb21waWxhdGlvbkluZm8ubV9zZW1hbnRpY0NvZGVPcmlnaW5Gb3JD
YWxsRnJhbWVIZWFkZXIpOwogICAgICAgICAgICAgICAgICAgICBleGl0Lm1fZXhjZXB0aW9uSGFu
ZGxlckNhbGxTaXRlSW5kZXggPSBjYWxsU2l0ZUluZGV4OwogCiAgICAgICAgICAgICAgICAgICAg
IHN0YXRlLmppdENvZGUtPm9zckV4aXQuYXBwZW5kKGV4aXQpOwpAQCAtNTQzLDE5ICs1NDgsMTkg
QEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogICAgICAgICAgICAg
ICAgIC8vCiAgICAgICAgICAgICAgICAgLy8gV2Ugc2V0IHRoZSByZWdpc3RlcnMgbmVlZGluZyBz
cGlsbGFnZSBoZXJlIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHNldAogICAgICAgICAgICAgICAg
IC8vIGJlZm9yZSB3ZSBnZW5lcmF0ZSBPU1IgZXhpdHMgc28gdGhlIGV4aXQga25vd3MgdG8gZG8g
dGhlIHByb3BlciByZWNvdmVyeS4KLSAgICAgICAgICAgICAgICBpZiAoZXhpdERlc2NyaXB0b3Iu
bV9leGNlcHRpb25UeXBlID09IEV4Y2VwdGlvblR5cGU6OkpTQ2FsbCkgeworICAgICAgICAgICAg
ICAgIGlmIChleGl0RGVzY3JpcHRvckNvbXBpbGF0aW9uSW5mby5tX2V4Y2VwdGlvblR5cGUgPT0g
RXhjZXB0aW9uVHlwZTo6SlNDYWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIENhbGwgcGF0
Y2hwb2ludHMgbWlnaHQgaGF2ZSB2YWx1ZXMgd2Ugd2FudCB0byBkbyB2YWx1ZSByZWNvdmVyeQog
ICAgICAgICAgICAgICAgICAgICAvLyBvbiBpbnNpZGUgdm9sYXRpbGUgcmVnaXN0ZXJzLiBXZSBu
ZWVkIHRvIGNvbGxlY3QgdGhlIHZvbGF0aWxlCiAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lz
dGVycyB3ZSB3YW50IHRvIGRvIHZhbHVlIHJlY292ZXJ5IG9uIGhlcmUgYmVjYXVzZSB0aGV5IG11
c3QKICAgICAgICAgICAgICAgICAgICAgLy8gYmUgcHJlc2VydmVkIHRvIHRoZSBzdGFjayBiZWZv
cmUgdGhlIGNhbGwsIHRoYXQgd2F5IHRoZSBPU1IgZXhpdAogICAgICAgICAgICAgICAgICAgICAv
LyBleGNlcHRpb24gaGFuZGxlciBjYW4gcmVjb3ZlciB0aGVtIGludG8gdGhlIHByb3BlciByZWdp
c3RlcnMuCiAgICAgICAgICAgICAgICAgICAgIGV4aXQuZ2F0aGVyUmVnaXN0ZXJzVG9TcGlsbEZv
ckNhbGxJZkV4Y2VwdGlvbihzdGFja21hcHMsIHJlY29yZCk7Ci0gICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChleGl0RGVzY3JpcHRvci5tX2V4Y2VwdGlvblR5cGUgPT0gRXhjZXB0aW9uVHlwZTo6
R2V0QnlJZCkgeworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXhpdERlc2NyaXB0b3JDb21w
aWxhdGlvbkluZm8ubV9leGNlcHRpb25UeXBlID09IEV4Y2VwdGlvblR5cGU6OkdldEJ5SWQpIHsK
ICAgICAgICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IHJlY29yZC5sb2NhdGlvbnNbMF0u
ZGlyZWN0R1BSKCk7CiAgICAgICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlID0gcmVjb3JkLmxv
Y2F0aW9uc1sxXS5kaXJlY3RHUFIoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UgPT0g
cmVzdWx0KQogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbkV4aXQtPnJlZ2lz
dGVyc1RvUHJlc2VydmVGb3JDYWxsVGhhdE1pZ2h0VGhyb3cuc2V0KGJhc2UpOwotICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoZXhpdERlc2NyaXB0b3IubV9leGNlcHRpb25UeXBlID09IEV4Y2Vw
dGlvblR5cGU6OkJpbmFyeU9wR2VuZXJhdG9yKSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChleGl0RGVzY3JpcHRvckNvbXBpbGF0aW9uSW5mby5tX2V4Y2VwdGlvblR5cGUgPT0gRXhjZXB0
aW9uVHlwZTo6QmluYXJ5T3BHZW5lcmF0b3IpIHsKICAgICAgICAgICAgICAgICAgICAgR1BSUmVn
IHJlc3VsdCA9IHJlY29yZC5sb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCk7CiAgICAgICAgICAgICAg
ICAgICAgIEdQUlJlZyBsZWZ0ID0gcmVjb3JkLmxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKTsKICAg
ICAgICAgICAgICAgICAgICAgR1BSUmVnIHJpZ2h0ID0gcmVjb3JkLmxvY2F0aW9uc1syXS5kaXJl
Y3RHUFIoKTsKQEAgLTU5Miw3ICs1OTcsNyBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2Vk
T25TdGFja01hcHMoCiAgICAgICAgICAgICBleGl0Lm1fcGF0Y2hhYmxlQ29kZU9mZnNldCA9IGxp
bmtCdWZmZXItPm9mZnNldE9mKGluZm8ubV90aHVua0p1bXApOwogCiAgICAgICAgICAgICBpZiAo
ZXhpdC53aWxsQXJyaXZlQXRPU1JFeGl0RnJvbUdlbmVyaWNVbndpbmQoKSkgewotICAgICAgICAg
ICAgICAgIEhhbmRsZXJJbmZvIG5ld0hhbmRsZXIgPSBleGl0Lm1fZGVzY3JpcHRvci5tX2Jhc2Vs
aW5lRXhjZXB0aW9uSGFuZGxlcjsKKyAgICAgICAgICAgICAgICBIYW5kbGVySW5mbyBuZXdIYW5k
bGVyID0gZ2VuZXJpY1Vud2luZE9TUkV4aXREZXNjcmlwdG9ycy5nZXQoJmV4aXQubV9kZXNjcmlw
dG9yKS0+bV9iYXNlbGluZUV4Y2VwdGlvbkhhbmRsZXI7CiAgICAgICAgICAgICAgICAgbmV3SGFu
ZGxlci5zdGFydCA9IGV4aXQubV9leGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleC5iaXRzKCk7
CiAgICAgICAgICAgICAgICAgbmV3SGFuZGxlci5lbmQgPSBleGl0Lm1fZXhjZXB0aW9uSGFuZGxl
ckNhbGxTaXRlSW5kZXguYml0cygpICsgMTsKICAgICAgICAgICAgICAgICBuZXdIYW5kbGVyLm5h
dGl2ZUNvZGUgPSBpbmZvLm1fdGh1bmtBZGRyZXNzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExFeGNlcHRpb25IYW5kbGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGNlcHRpb25IYW5kbGVyTWFuYWdlci5jcHAJKHJl
dmlzaW9uIDE5Mjk5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhjZXB0aW9u
SGFuZGxlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIENvZGVM
b2NhdGlvbkxhYmVsIEV4Y2VwdGlvbkhhbmRsZXJNYW5hZ2UKICAgICAgICAgcmV0dXJuIENvZGVM
b2NhdGlvbkxhYmVsKCk7CiAKICAgICBzaXplX3Qgb3NyRXhpdEluZGV4ID0gZmluZFJlc3VsdC0+
dmFsdWU7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZS5qaXRDb2RlLT5vc3JFeGl0W29zckV4
aXRJbmRleF0ubV9kZXNjcmlwdG9yLm1fZXhjZXB0aW9uVHlwZSA9PSBFeGNlcHRpb25UeXBlOjpM
YXp5U2xvd1BhdGgpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RhdGUuaml0Q29kZS0+b3NyRXhp
dFtvc3JFeGl0SW5kZXhdLm1fZXhjZXB0aW9uVHlwZSA9PSBFeGNlcHRpb25UeXBlOjpMYXp5U2xv
d1BhdGgpOwogICAgIE9TUkV4aXRDb21waWxhdGlvbkluZm8mIGluZm8gPSBtX3N0YXRlLmZpbmFs
aXplci0+b3NyRXhpdFtvc3JFeGl0SW5kZXhdOwogICAgIFJFTEVBU0VfQVNTRVJUKGluZm8ubV90
aHVua0xhYmVsLmlzU2V0KCkpOwogICAgIHJldHVybiBtX3N0YXRlLmZpbmFsaXplci0+ZXhpdFRo
dW5rc0xpbmtCdWZmZXItPmxvY2F0aW9uT2YoaW5mby5tX3RodW5rTGFiZWwpOwpAQCAtMTA5LDcg
KzEwOSw3IEBAIE9TUkV4aXQqIEV4Y2VwdGlvbkhhbmRsZXJNYW5hZ2VyOjpnZXRDYWwKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgc2l6ZV90IG9zckV4aXRJbmRleCA9IGZpbmRSZXN1bHQt
PnZhbHVlOwogICAgIE9TUkV4aXQqIGV4aXQgPSAmbV9zdGF0ZS5qaXRDb2RlLT5vc3JFeGl0W29z
ckV4aXRJbmRleF07Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhpdC0+bV9kZXNjcmlwdG9yLm1fZXhj
ZXB0aW9uVHlwZSA9PSBFeGNlcHRpb25UeXBlOjpKU0NhbGwpOworICAgIFJFTEVBU0VfQVNTRVJU
KGV4aXQtPm1fZXhjZXB0aW9uVHlwZSA9PSBFeGNlcHRpb25UeXBlOjpKU0NhbGwpOwogICAgIHJl
dHVybiBleGl0OyAKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE5Mjk5MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Mzc5
LDcgKzUzNzksNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgT1NSRXhpdERlc2NyaXB0
b3ImIGV4aXREZXNjcmlwdG9yID0gbV9mdGxTdGF0ZS5qaXRDb2RlLT5vc3JFeGl0RGVzY3JpcHRv
cnMubGFzdCgpOwogICAgICAgICAKLSAgICAgICAgU3RhY2ttYXBBcmd1bWVudExpc3QgYXJndW1l
bnRzID0gYnVpbGRFeGl0QXJndW1lbnRzKGV4aXREZXNjcmlwdG9yLCBGb3JtYXR0ZWRWYWx1ZSgp
KTsKKyAgICAgICAgU3RhY2ttYXBBcmd1bWVudExpc3QgYXJndW1lbnRzID0gYnVpbGRFeGl0QXJn
dW1lbnRzKGV4aXREZXNjcmlwdG9yLCBtX2Z0bFN0YXRlLm9zckV4aXREZXNjcmlwdG9yQ29tcGls
YXRpb25JbmZvcy5sYXN0KCksIEZvcm1hdHRlZFZhbHVlKCkpOwogICAgICAgICBjYWxsU3RhY2tt
YXAoZXhpdERlc2NyaXB0b3IsIGFyZ3VtZW50cyk7CiAgICAgICAgIAogICAgICAgICBleGl0RGVz
Y3JpcHRvci5tX2lzSW52YWxpZGF0aW9uUG9pbnQgPSB0cnVlOwpAQCAtOTI3MCwxMiArOTI3MCwx
NCBAQCBwcml2YXRlOgogCiAgICAgICAgIGFwcGVuZE9TUkV4aXREZXNjcmlwdG9yKFVuY291bnRh
YmxlLCBleGNlcHRpb25UeXBlLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3JpZ2luLndpdGhGb3JF
eGl0QW5kRXhpdE9LKG9wQ2F0Y2hPcmlnaW4sIHRydWUpKTsKICAgICAgICAgT1NSRXhpdERlc2Ny
aXB0b3ImIGV4aXREZXNjcmlwdG9yID0gbV9mdGxTdGF0ZS5qaXRDb2RlLT5vc3JFeGl0RGVzY3Jp
cHRvcnMubGFzdCgpOwotICAgICAgICBleGl0RGVzY3JpcHRvci5tX3NlbWFudGljQ29kZU9yaWdp
bkZvckNhbGxGcmFtZUhlYWRlciA9IGNvZGVPcmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKTsK
LSAgICAgICAgZXhpdERlc2NyaXB0b3IubV9iYXNlbGluZUV4Y2VwdGlvbkhhbmRsZXIgPSAqZXhj
ZXB0aW9uSGFuZGxlcjsKICAgICAgICAgZXhpdERlc2NyaXB0b3IubV9zdGFja21hcElEID0gbV9z
dGFja21hcElEcyAtIDE7CiAKKyAgICAgICAgT1NSRXhpdERlc2NyaXB0b3JDb21waWxhdGlvbklu
Zm8mIGV4aXREZXNjcmlwdG9yQ29tcGlsYXRpb25JbmZvID0gbV9mdGxTdGF0ZS5vc3JFeGl0RGVz
Y3JpcHRvckNvbXBpbGF0aW9uSW5mb3MubGFzdCgpOworICAgICAgICBleGl0RGVzY3JpcHRvckNv
bXBpbGF0aW9uSW5mby5tX3NlbWFudGljQ29kZU9yaWdpbkZvckNhbGxGcmFtZUhlYWRlciA9IGNv
ZGVPcmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKTsKKyAgICAgICAgZXhpdERlc2NyaXB0b3JD
b21waWxhdGlvbkluZm8ubV9iYXNlbGluZUV4Y2VwdGlvbkhhbmRsZXIgPSAqZXhjZXB0aW9uSGFu
ZGxlcjsKKwogICAgICAgICBTdGFja21hcEFyZ3VtZW50TGlzdCBmcmVzaExpc3QgPQotICAgICAg
ICAgICAgYnVpbGRFeGl0QXJndW1lbnRzKGV4aXREZXNjcmlwdG9yLCBub1ZhbHVlKCksIG9mZnNl
dE9mRXhpdEFyZ3VtZW50cyk7CisgICAgICAgICAgICBidWlsZEV4aXRBcmd1bWVudHMoZXhpdERl
c2NyaXB0b3IsIG1fZnRsU3RhdGUub3NyRXhpdERlc2NyaXB0b3JDb21waWxhdGlvbkluZm9zLmxh
c3QoKSwgbm9WYWx1ZSgpLCBvZmZzZXRPZkV4aXRBcmd1bWVudHMpOwogICAgICAgICBhcmd1bWVu
dHMuYXBwZW5kVmVjdG9yKGZyZXNoTGlzdCk7CiAgICAgfQogCkBAIC05Mjk4LDExICs5MzAwLDEz
IEBAIHByaXZhdGU6CiAKICAgICBPU1JFeGl0RGVzY3JpcHRvciYgYXBwZW5kT1NSRXhpdERlc2Ny
aXB0b3IoRXhpdEtpbmQga2luZCwgRXhjZXB0aW9uVHlwZSBleGNlcHRpb25UeXBlLCBGb3JtYXR0
ZWRWYWx1ZSBsb3dWYWx1ZSwgTm9kZSogaGlnaFZhbHVlLCBOb2RlT3JpZ2luIG9yaWdpbikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2Z0bFN0YXRlLmppdENvZGUtPm9zckV4aXREZXNjcmlwdG9y
cy5hbGxvYygKLSAgICAgICAgICAgIGtpbmQsIGV4Y2VwdGlvblR5cGUsIGxvd1ZhbHVlLmZvcm1h
dCgpLCBtX2dyYXBoLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoaGlnaFZhbHVlKSwK
LSAgICAgICAgICAgIG9yaWdpbi5mb3JFeGl0LCBvcmlnaW4uc2VtYW50aWMsCisgICAgICAgIE9T
UkV4aXREZXNjcmlwdG9yJiByZXN1bHQgPSBtX2Z0bFN0YXRlLmppdENvZGUtPm9zckV4aXREZXNj
cmlwdG9ycy5hbGxvYygKKyAgICAgICAgICAgIGxvd1ZhbHVlLmZvcm1hdCgpLCBtX2dyYXBoLm1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoaGlnaFZhbHVlKSwKICAgICAgICAgICAgIGF2
YWlsYWJpbGl0eU1hcCgpLm1fbG9jYWxzLm51bWJlck9mQXJndW1lbnRzKCksCiAgICAgICAgICAg
ICBhdmFpbGFiaWxpdHlNYXAoKS5tX2xvY2Fscy5udW1iZXJPZkxvY2FscygpKTsKKyAgICAgICAg
bV9mdGxTdGF0ZS5vc3JFeGl0RGVzY3JpcHRvckNvbXBpbGF0aW9uSW5mb3MuYWxsb2MoCisgICAg
ICAgICAgICBraW5kLCBvcmlnaW4uZm9yRXhpdCwgb3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25U
eXBlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgdm9pZCBhcHBl
bmRPU1JFeGl0KApAQCAtOTM3Miw3ICs5Mzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJsZXNz
U3BlY3VsYXRpb24oQjM6OlN0YWNrbWFwVmFsdWUqIHZhbHVlLCBFeGl0S2luZCBraW5kLCBGb3Jt
YXR0ZWRWYWx1ZSBsb3dWYWx1ZSwgTm9kZSogaGlnaFZhbHVlLCBOb2RlT3JpZ2luIG9yaWdpbiwg
Ym9vbCBpc0V4Y2VwdGlvbkhhbmRsZXIgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIE9TUkV4aXRE
ZXNjcmlwdG9yJiBleGl0RGVzY3JpcHRvciA9IGFwcGVuZE9TUkV4aXREZXNjcmlwdG9yKGtpbmQs
IGlzRXhjZXB0aW9uSGFuZGxlciA/IEV4Y2VwdGlvblR5cGU6OkNDYWxsRXhjZXB0aW9uIDogRXhj
ZXB0aW9uVHlwZTo6Tm9uZSwgbG93VmFsdWUsIGhpZ2hWYWx1ZSwgb3JpZ2luKTsKLSAgICAgICAg
dmFsdWUtPmFwcGVuZEFueXMoYnVpbGRFeGl0QXJndW1lbnRzKGV4aXREZXNjcmlwdG9yLCBsb3dW
YWx1ZSkpOworICAgICAgICB2YWx1ZS0+YXBwZW5kQW55cyhidWlsZEV4aXRBcmd1bWVudHMoZXhp
dERlc2NyaXB0b3IsIG1fZnRsU3RhdGUub3NyRXhpdERlc2NyaXB0b3JDb21waWxhdGlvbkluZm9z
Lmxhc3QoKSwgbG93VmFsdWUpKTsKICAgICAgICAgdmFsdWUtPnNldEdlbmVyYXRvcigKICAgICAg
ICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmKSB7CiAgICAgICAgICAgICAgICAgaml0Lm9vcHMoKTsKQEAgLTkzODMsMjkgKzkz
ODcsMjkgQEAgcHJpdmF0ZToKICNpZiAhRlRMX1VTRVNfQjMKICAgICB2b2lkIGVtaXRPU1JFeGl0
Q2FsbChPU1JFeGl0RGVzY3JpcHRvciYgZXhpdERlc2NyaXB0b3IsIEZvcm1hdHRlZFZhbHVlIGxv
d1ZhbHVlKQogICAgIHsKLSAgICAgICAgY2FsbFN0YWNrbWFwKGV4aXREZXNjcmlwdG9yLCBidWls
ZEV4aXRBcmd1bWVudHMoZXhpdERlc2NyaXB0b3IsIGxvd1ZhbHVlKSk7CisgICAgICAgIGNhbGxT
dGFja21hcChleGl0RGVzY3JpcHRvciwgYnVpbGRFeGl0QXJndW1lbnRzKGV4aXREZXNjcmlwdG9y
LCBtX2Z0bFN0YXRlLm9zckV4aXREZXNjcmlwdG9yQ29tcGlsYXRpb25JbmZvcy5sYXN0KCksIGxv
d1ZhbHVlKSk7CiAgICAgfQogI2VuZGlmCiAKICAgICBTdGFja21hcEFyZ3VtZW50TGlzdCBidWls
ZEV4aXRBcmd1bWVudHMoCi0gICAgICAgIE9TUkV4aXREZXNjcmlwdG9yJiBleGl0RGVzY3JpcHRv
ciwgRm9ybWF0dGVkVmFsdWUgbG93VmFsdWUsCisgICAgICAgIE9TUkV4aXREZXNjcmlwdG9yJiBl
eGl0RGVzY3JpcHRvciwgT1NSRXhpdERlc2NyaXB0b3JDb21waWxhdGlvbkluZm8mIGV4aXREZXNj
cmlwdG9yQ29tcGlsYXRpb25JbmZvLCBGb3JtYXR0ZWRWYWx1ZSBsb3dWYWx1ZSwKICAgICAgICAg
dW5zaWduZWQgb2Zmc2V0T2ZFeGl0QXJndW1lbnRzSW5TdGFja21hcExvY2F0aW9ucyA9IDApCiAg
ICAgewogICAgICAgICBTdGFja21hcEFyZ3VtZW50TGlzdCByZXN1bHQ7CiAgICAgICAgIGJ1aWxk
RXhpdEFyZ3VtZW50cygKLSAgICAgICAgICAgIGV4aXREZXNjcmlwdG9yLCByZXN1bHQsIGxvd1Zh
bHVlLCBvZmZzZXRPZkV4aXRBcmd1bWVudHNJblN0YWNrbWFwTG9jYXRpb25zKTsKKyAgICAgICAg
ICAgIGV4aXREZXNjcmlwdG9yLCBleGl0RGVzY3JpcHRvckNvbXBpbGF0aW9uSW5mbywgcmVzdWx0
LCBsb3dWYWx1ZSwgb2Zmc2V0T2ZFeGl0QXJndW1lbnRzSW5TdGFja21hcExvY2F0aW9ucyk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIHZvaWQgYnVpbGRFeGl0QXJn
dW1lbnRzKAotICAgICAgICBPU1JFeGl0RGVzY3JpcHRvciYgZXhpdERlc2NyaXB0b3IsIFN0YWNr
bWFwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIEZvcm1hdHRlZFZhbHVlIGxvd1ZhbHVlLAorICAg
ICAgICBPU1JFeGl0RGVzY3JpcHRvciYgZXhpdERlc2NyaXB0b3IsIE9TUkV4aXREZXNjcmlwdG9y
Q29tcGlsYXRpb25JbmZvJiBleGl0RGVzY3JpcHRvckNvbXBpbGF0aW9uSW5mbywgU3RhY2ttYXBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgRm9ybWF0dGVkVmFsdWUgbG93VmFsdWUsCiAgICAgICAg
IHVuc2lnbmVkIG9mZnNldE9mRXhpdEFyZ3VtZW50c0luU3RhY2ttYXBMb2NhdGlvbnMgPSAwKQog
ICAgIHsKICAgICAgICAgaWYgKCEhbG93VmFsdWUpCiAgICAgICAgICAgICBhcmd1bWVudHMuYXBw
ZW5kKGxvd1ZhbHVlLnZhbHVlKCkpOwogICAgICAgICAKICAgICAgICAgQXZhaWxhYmlsaXR5TWFw
IGF2YWlsYWJpbGl0eU1hcCA9IHRoaXMtPmF2YWlsYWJpbGl0eU1hcCgpOwotICAgICAgICBhdmFp
bGFiaWxpdHlNYXAucHJ1bmVCeUxpdmVuZXNzKG1fZ3JhcGgsIGV4aXREZXNjcmlwdG9yLm1fY29k
ZU9yaWdpbik7CisgICAgICAgIGF2YWlsYWJpbGl0eU1hcC5wcnVuZUJ5TGl2ZW5lc3MobV9ncmFw
aCwgZXhpdERlc2NyaXB0b3JDb21waWxhdGlvbkluZm8ubV9jb2RlT3JpZ2luKTsKICAgICAgICAg
CiAgICAgICAgIEhhc2hNYXA8Tm9kZSosIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uKj4g
bWFwOwogICAgICAgICBhdmFpbGFiaWxpdHlNYXAuZm9yRWFjaEF2YWlsYWJpbGl0eSgKQEAgLTk0
MzIsNyArOTQzNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmFsaWRh
dGVGVExPU1JFeGl0TGl2ZW5lc3MoKSkgewogICAgICAgICAgICAgICAgIERGR19BU1NFUlQoCiAg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG1fbm9kZSwKLSAgICAgICAgICAgICAgICAgICAg
KCEoYXZhaWxhYmlsaXR5LmlzRGVhZCgpICYmIG1fZ3JhcGguaXNMaXZlSW5CeXRlY29kZShWaXJ0
dWFsUmVnaXN0ZXIob3BlcmFuZCksIGV4aXREZXNjcmlwdG9yLm1fY29kZU9yaWdpbikpKSB8fCBt
X2dyYXBoLm1fcGxhbi5tb2RlID09IEZUTEZvck9TUkVudHJ5TW9kZSk7CisgICAgICAgICAgICAg
ICAgICAgICghKGF2YWlsYWJpbGl0eS5pc0RlYWQoKSAmJiBtX2dyYXBoLmlzTGl2ZUluQnl0ZWNv
ZGUoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLCBleGl0RGVzY3JpcHRvckNvbXBpbGF0aW9uSW5m
by5tX2NvZGVPcmlnaW4pKSkgfHwgbV9ncmFwaC5tX3BsYW4ubW9kZSA9PSBGVExGb3JPU1JFbnRy
eU1vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgRXhpdFZhbHVlIGV4aXRWYWx1ZSA9
IGV4aXRWYWx1ZUZvckF2YWlsYWJpbGl0eShhcmd1bWVudHMsIG1hcCwgYXZhaWxhYmlsaXR5KTsK
ICAgICAgICAgICAgIGlmIChleGl0VmFsdWUuaGFzSW5kZXhJblN0YWNrbWFwTG9jYXRpb25zKCkp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAJKHJldmlzaW9u
IDE5Mjk5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJGVExFeGl0QXJndW1lbnQu
aCIKICNpbmNsdWRlICJGVExKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMTG9jYXRpb24uaCIKKyNp
bmNsdWRlICJGVExPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmgiIAogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewpAQCAtNDEsMjYgKzQyLDE1
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIHVzaW5nIG5hbWVzcGFjZSBERkc7
CiAKIE9TUkV4aXREZXNjcmlwdG9yOjpPU1JFeGl0RGVzY3JpcHRvcigKLSAgICBFeGl0S2luZCBl
eGl0S2luZCwgRXhjZXB0aW9uVHlwZSBleGNlcHRpb25UeXBlLCBEYXRhRm9ybWF0IHByb2ZpbGVE
YXRhRm9ybWF0LAotICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgdmFsdWVQcm9maWxl
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCi0gICAgQ29kZU9yaWdpbiBvcmlnaW5Gb3JQcm9maWxl
LCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cywKLSAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2Fs
cykKLSAgICA6IG1fa2luZChleGl0S2luZCkKLSAgICAsIG1fZXhjZXB0aW9uVHlwZShleGNlcHRp
b25UeXBlKQotICAgICwgbV9jb2RlT3JpZ2luKGNvZGVPcmlnaW4pCi0gICAgLCBtX2NvZGVPcmln
aW5Gb3JFeGl0UHJvZmlsZShvcmlnaW5Gb3JQcm9maWxlKQotICAgICwgbV9wcm9maWxlRGF0YUZv
cm1hdChwcm9maWxlRGF0YUZvcm1hdCkKKyAgICBEYXRhRm9ybWF0IHByb2ZpbGVEYXRhRm9ybWF0
LCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZhbHVlUHJvZmlsZSwKKyAgICB1bnNpZ25l
ZCBudW1iZXJPZkFyZ3VtZW50cywgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMpCisgICAgOiBtX3By
b2ZpbGVEYXRhRm9ybWF0KHByb2ZpbGVEYXRhRm9ybWF0KQogICAgICwgbV92YWx1ZVByb2ZpbGUo
dmFsdWVQcm9maWxlKQogICAgICwgbV92YWx1ZXMobnVtYmVyT2ZBcmd1bWVudHMsIG51bWJlck9m
TG9jYWxzKQogICAgICwgbV9pc0ludmFsaWRhdGlvblBvaW50KGZhbHNlKQogewogfQogCi1ib29s
IE9TUkV4aXREZXNjcmlwdG9yOjppc0V4Y2VwdGlvbkhhbmRsZXIoKSBjb25zdAotewotICAgIHJl
dHVybiBtX2V4Y2VwdGlvblR5cGUgIT0gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKLX0KLQogdm9pZCBP
U1JFeGl0RGVzY3JpcHRvcjo6dmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVu
Y2VzJiB0cmFja2VkUmVmZXJlbmNlcykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3ZhbHVl
cy5zaXplKCk7IGktLTspCkBAIC03MSwxMyArNjEsMTMgQEAgdm9pZCBPU1JFeGl0RGVzY3JpcHRv
cjo6dmFsaWRhdGVSZWZlcmVuYwogfQogCiAKLU9TUkV4aXQ6Ok9TUkV4aXQoT1NSRXhpdERlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIHVpbnQzMl90IHN0YWNrbWFwUmVjb3JkSW5kZXgpCi0gICAgOiBP
U1JFeGl0QmFzZShkZXNjcmlwdG9yLm1fa2luZCwgZGVzY3JpcHRvci5tX2NvZGVPcmlnaW4sIGRl
c2NyaXB0b3IubV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUpCitPU1JFeGl0OjpPU1JFeGl0KE9T
UkV4aXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBPU1JFeGl0RGVzY3JpcHRvckNvbXBpbGF0aW9u
SW5mbyYgZGVzY3JpcHRvckNvbXBpbGF0aW9uSW5mbywgdWludDMyX3Qgc3RhY2ttYXBSZWNvcmRJ
bmRleCkKKyAgICA6IE9TUkV4aXRCYXNlKGRlc2NyaXB0b3JDb21waWxhdGlvbkluZm8ubV9raW5k
LCBkZXNjcmlwdG9yQ29tcGlsYXRpb25JbmZvLm1fY29kZU9yaWdpbiwgZGVzY3JpcHRvckNvbXBp
bGF0aW9uSW5mby5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSkKICAgICAsIG1fZGVzY3JpcHRv
cihkZXNjcmlwdG9yKQogICAgICwgbV9zdGFja21hcFJlY29yZEluZGV4KHN0YWNrbWFwUmVjb3Jk
SW5kZXgpCi0gICAgLCBtX2V4Y2VwdGlvblR5cGUoZGVzY3JpcHRvci5tX2V4Y2VwdGlvblR5cGUp
CisgICAgLCBtX2V4Y2VwdGlvblR5cGUoZGVzY3JpcHRvckNvbXBpbGF0aW9uSW5mby5tX2V4Y2Vw
dGlvblR5cGUpCiB7Ci0gICAgbV9pc0V4Y2VwdGlvbkhhbmRsZXIgPSBkZXNjcmlwdG9yLmlzRXhj
ZXB0aW9uSGFuZGxlcigpOworICAgIG1faXNFeGNlcHRpb25IYW5kbGVyID0gZGVzY3JpcHRvckNv
bXBpbGF0aW9uSW5mby5tX2V4Y2VwdGlvblR5cGUgIT0gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0K
IAogQ29kZUxvY2F0aW9uSnVtcCBPU1JFeGl0Ojpjb2RlTG9jYXRpb25Gb3JSZXBhdGNoKENvZGVC
bG9jayogZnRsQ29kZUJsb2NrKSBjb25zdApAQCAtOTcsNyArODcsNyBAQCBDb2RlTG9jYXRpb25K
dW1wIE9TUkV4aXQ6OmNvZGVMb2NhdGlvbkZvCiAKIHZvaWQgT1NSRXhpdDo6Z2F0aGVyUmVnaXN0
ZXJzVG9TcGlsbEZvckNhbGxJZkV4Y2VwdGlvbihTdGFja01hcHMmIHN0YWNrbWFwcywgU3RhY2tN
YXBzOjpSZWNvcmQmIHJlY29yZCkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVChtX2Rlc2NyaXB0b3Iu
bV9leGNlcHRpb25UeXBlID09IEV4Y2VwdGlvblR5cGU6OkpTQ2FsbCk7CisgICAgUkVMRUFTRV9B
U1NFUlQobV9leGNlcHRpb25UeXBlID09IEV4Y2VwdGlvblR5cGU6OkpTQ2FsbCk7CiAKICAgICBS
ZWdpc3RlclNldCB2b2xhdGlsZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lz
dGVyc0ZvckpTQ2FsbCgpOwogCkBAIC0xODIsOSArMTcyLDkgQEAgYm9vbCBPU1JFeGl0Ojp3aWxs
QXJyaXZlQXRFeGl0RnJvbUluZGlyZQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLWJvb2wgT1NSRXhpdDo6d2lsbEFycml2ZUF0T1NSRXhpdEZyb21HZW5lcmljVW53aW5k
KCkgY29uc3QKK2Jvb2wgZXhjZXB0aW9uVHlwZVdpbGxBcnJpdmVBdE9TUkV4aXRGcm9tR2VuZXJp
Y1Vud2luZChFeGNlcHRpb25UeXBlIGV4Y2VwdGlvblR5cGUpCiB7Ci0gICAgc3dpdGNoIChtX2V4
Y2VwdGlvblR5cGUpIHsKKyAgICBzd2l0Y2ggKGV4Y2VwdGlvblR5cGUpIHsKICAgICBjYXNlIEV4
Y2VwdGlvblR5cGU6OkpTQ2FsbDoKICAgICBjYXNlIEV4Y2VwdGlvblR5cGU6OkdldEJ5SWQ6CiAg
ICAgY2FzZSBFeGNlcHRpb25UeXBlOjpQdXRCeUlkOgpAQCAtMTk1LDYgKzE4NSwxMSBAQCBib29s
IE9TUkV4aXQ6OndpbGxBcnJpdmVBdE9TUkV4aXRGcm9tR2VuCiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAorYm9vbCBPU1JFeGl0Ojp3aWxsQXJyaXZlQXRPU1JFeGl0RnJv
bUdlbmVyaWNVbndpbmQoKSBjb25zdAoreworICAgIHJldHVybiBleGNlcHRpb25UeXBlV2lsbEFy
cml2ZUF0T1NSRXhpdEZyb21HZW5lcmljVW53aW5kKG1fZXhjZXB0aW9uVHlwZSk7Cit9CisKIGJv
b2wgT1NSRXhpdDo6d2lsbEFycml2ZUF0T1NSRXhpdEZyb21DYWxsT3BlcmF0aW9uKCkgY29uc3QK
IHsKICAgICBzd2l0Y2ggKG1fZXhjZXB0aW9uVHlwZSkgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFeGl0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPU1JFeGl0LmgJKHJldmlzaW9uIDE5Mjk5MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDgg
QEAgbmFtZXNwYWNlIEZUTCB7CiAvLyAgIGludHJpbnNpY3MgKG9yIG1ldGEtZGF0YSwgb3Igc29t
ZXRoaW5nKSB0byBpbmZvcm0gdGhlIGJhY2tlbmQgdGhhdCBpdCdzIHNhZmUgdG8KIC8vICAgbWFr
ZSB0aGUgcHJlZGljYXRlIHBhc3NlZCB0byAnZXhpdElmKCknIG1vcmUgdHJ1dGh5LgogCitzdHJ1
Y3QgT1NSRXhpdERlc2NyaXB0b3JDb21waWxhdGlvbkluZm87CisKIGVudW0gY2xhc3MgRXhjZXB0
aW9uVHlwZSA6IHVpbnQ4X3QgewogICAgIE5vbmUsCiAgICAgQ0NhbGxFeGNlcHRpb24sCkBAIC0x
NDgsMjAgKzE1MCwxMyBAQCBlbnVtIGNsYXNzIEV4Y2VwdGlvblR5cGUgOiB1aW50OF90IHsKICAg
ICBCaW5hcnlPcEdlbmVyYXRvciwKIH07CiAKK2Jvb2wgZXhjZXB0aW9uVHlwZVdpbGxBcnJpdmVB
dE9TUkV4aXRGcm9tR2VuZXJpY1Vud2luZChFeGNlcHRpb25UeXBlKTsKKwogc3RydWN0IE9TUkV4
aXREZXNjcmlwdG9yIHsKICAgICBPU1JFeGl0RGVzY3JpcHRvcigKLSAgICAgICAgRXhpdEtpbmQs
IEV4Y2VwdGlvblR5cGUsIERhdGFGb3JtYXQgcHJvZmlsZURhdGFGb3JtYXQsIE1ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUsCi0gICAgICAgIENvZGVPcmlnaW4sIENvZGVPcmlnaW4gb3JpZ2lu
Rm9yUHJvZmlsZSwKKyAgICAgICAgRGF0YUZvcm1hdCBwcm9maWxlRGF0YUZvcm1hdCwgTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVu
dHMsIHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKTsKIAotICAgIGJvb2wgaXNFeGNlcHRpb25IYW5k
bGVyKCkgY29uc3Q7Ci0KLSAgICBFeGl0S2luZCBtX2tpbmQ7Ci0gICAgRXhjZXB0aW9uVHlwZSBt
X2V4Y2VwdGlvblR5cGU7Ci0gICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW47Ci0gICAgQ29kZU9y
aWdpbiBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKLSAgICBDb2RlT3JpZ2luIG1fc2VtYW50
aWNDb2RlT3JpZ2luRm9yQ2FsbEZyYW1lSGVhZGVyOwotICAgIAogICAgIC8vIFRoZSBmaXJzdCBh
cmd1bWVudCB0byB0aGUgZXhpdCBjYWxsIG1heSBiZSBhIHZhbHVlIHdlIHdpc2ggdG8gcHJvZmls
ZS4KICAgICAvLyBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZSBmb3JtYXQgd2lsbCBiZSBub3QgSW52
YWxpZCBhbmQgd2UnbGwgaGF2ZSBhCiAgICAgLy8gbWV0aG9kIG9mIGdldHRpbmcgYSB2YWx1ZSBw
cm9maWxlLiBOb3RlIHRoYXQgYWxsIG9mIHRoZSBFeGl0QXJndW1lbnQncwpAQCAtMTc0LDE0ICsx
NjksMTMgQEAgc3RydWN0IE9TUkV4aXREZXNjcmlwdG9yIHsKICAgICBCYWc8RXhpdFRpbWVPYmpl
Y3RNYXRlcmlhbGl6YXRpb24+IG1fbWF0ZXJpYWxpemF0aW9uczsKICAgICAKICAgICB1aW50MzJf
dCBtX3N0YWNrbWFwSUQ7Ci0gICAgSGFuZGxlckluZm8gbV9iYXNlbGluZUV4Y2VwdGlvbkhhbmRs
ZXI7CiAgICAgYm9vbCBtX2lzSW52YWxpZGF0aW9uUG9pbnQgOiAxOwogICAgIAogICAgIHZvaWQg
dmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJik7CiB9OwogCiBzdHJ1
Y3QgT1NSRXhpdCA6IHB1YmxpYyBERkc6Ok9TUkV4aXRCYXNlIHsKLSAgICBPU1JFeGl0KE9TUkV4
aXREZXNjcmlwdG9yJiwgdWludDMyX3Qgc3RhY2ttYXBSZWNvcmRJbmRleCk7CisgICAgT1NSRXhp
dChPU1JFeGl0RGVzY3JpcHRvciYsIE9TUkV4aXREZXNjcmlwdG9yQ29tcGlsYXRpb25JbmZvJiwg
dWludDMyX3Qgc3RhY2ttYXBSZWNvcmRJbmRleCk7CiAKICAgICBPU1JFeGl0RGVzY3JpcHRvciYg
bV9kZXNjcmlwdG9yOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBtX2NvZGU7CkBAIC0yMDks
NiArMjAzLDcgQEAgc3RydWN0IE9TUkV4aXQgOiBwdWJsaWMgREZHOjpPU1JFeGl0QmFzZQogICAg
IGJvb2wgbmVlZHNSZWdpc3RlclJlY292ZXJ5T25HZW5lcmljVW53aW5kT1NSRXhpdFBhdGgoKSBj
b25zdDsKIH07CiAKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAogCiAjZW5kaWYgLy8gRU5B
QkxFKEZUTF9KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRD
b21waWxhdGlvbkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkV4aXRDb21waWxhdGlvbkluZm8uaAkocmV2aXNpb24gMTkyOTkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkZUTEFiYnJldmlhdGVkVHlwZXMu
aCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIkZUTE9TUkV4aXQuaCIK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCkBAIC00Myw2ICs0NCwyMyBAQCBz
dHJ1Y3QgT1NSRXhpdENvbXBpbGF0aW9uSW5mbyB7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgbV90
aHVua0FkZHJlc3M7CiB9OwogCitzdHJ1Y3QgT1NSRXhpdERlc2NyaXB0b3JDb21waWxhdGlvbklu
Zm8geworICAgIE9TUkV4aXREZXNjcmlwdG9yQ29tcGlsYXRpb25JbmZvKEV4aXRLaW5kIGtpbmQs
IENvZGVPcmlnaW4gZXhpdE9yaWdpbiwgQ29kZU9yaWdpbiBmb3JFeGl0UHJvZmlsZSwgRXhjZXB0
aW9uVHlwZSBleGNlcHRpb25UeXBlKQorICAgICAgICA6IG1fa2luZChraW5kKQorICAgICAgICAs
IG1fY29kZU9yaWdpbihleGl0T3JpZ2luKQorICAgICAgICAsIG1fY29kZU9yaWdpbkZvckV4aXRQ
cm9maWxlKGZvckV4aXRQcm9maWxlKQorICAgICAgICAsIG1fZXhjZXB0aW9uVHlwZShleGNlcHRp
b25UeXBlKQorICAgIHsKKyAgICB9CisKKyAgICBFeGl0S2luZCBtX2tpbmQ7CisgICAgQ29kZU9y
aWdpbiBtX2NvZGVPcmlnaW47CisgICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJv
ZmlsZTsKKyAgICBFeGNlcHRpb25UeXBlIG1fZXhjZXB0aW9uVHlwZTsKKyAgICBDb2RlT3JpZ2lu
IG1fc2VtYW50aWNDb2RlT3JpZ2luRm9yQ2FsbEZyYW1lSGVhZGVyOworICAgIEhhbmRsZXJJbmZv
IG1fYmFzZWxpbmVFeGNlcHRpb25IYW5kbGVyOworfTsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkZUTAogCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxOTI5OTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU0OCw3ICs1NDgsNyBAQCBleHRlcm4gIkMiIHZvaWQqIGNvbXBpbGVG
VExPU1JFeGl0KEV4ZWNTCiAgICAgICAgIGRhdGFMb2coIiAgICBDdXJyZW50IGNhbGwgc2l0ZSBp
bmRleDogIiwgZXhlYy0+Y2FsbFNpdGVJbmRleCgpLmJpdHMoKSwgIlxuIik7CiAgICAgICAgIGRh
dGFMb2coIiAgICBFeGl0IGlzIGV4Y2VwdGlvbiBoYW5kbGVyOiAiLCBleGl0Lm1faXNFeGNlcHRp
b25IYW5kbGVyLAogICAgICAgICAgICAgIiB3aWxsIGFycml2ZSBhdCBleGl0IGZyb20gZ2VuZXJp
Y1Vud2luZCgpOiAiLCBleGl0LndpbGxBcnJpdmVBdE9TUkV4aXRGcm9tR2VuZXJpY1Vud2luZCgp
LCAKLSAgICAgICAgICAgICIgd2lsbCBhcnJpdmUgYXQgZXhpdCBmcm9tIGxhenkgc2xvdyBwYXRo
OiAiLCBleGl0Lm1fZGVzY3JpcHRvci5tX2V4Y2VwdGlvblR5cGUgPT0gRXhjZXB0aW9uVHlwZTo6
TGF6eVNsb3dQYXRoLCAiXG4iKTsKKyAgICAgICAgICAgICIgd2lsbCBhcnJpdmUgYXQgZXhpdCBm
cm9tIGxhenkgc2xvdyBwYXRoOiAiLCBleGl0Lm1fZXhjZXB0aW9uVHlwZSA9PSBFeGNlcHRpb25U
eXBlOjpMYXp5U2xvd1BhdGgsICJcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICAgRXhpdCB2YWx1
ZXM6ICIsIGV4aXQubV9kZXNjcmlwdG9yLm1fdmFsdWVzLCAiXG4iKTsKICAgICAgICAgaWYgKCFl
eGl0Lm1fZGVzY3JpcHRvci5tX21hdGVyaWFsaXphdGlvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgTWF0ZXJpYWxpemF0aW9uczpcbiIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMU3RhdGUuaAkocmV2aXNpb24gMTkyOTkzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDcg
QEAgcHVibGljOgogICAgIFZlY3RvcjxKU1RhaWxDYWxsPiBqc1RhaWxDYWxsczsKICAgICBWZWN0
b3I8Q1N0cmluZz4gY29kZVNlY3Rpb25OYW1lczsKICAgICBWZWN0b3I8Q1N0cmluZz4gZGF0YVNl
Y3Rpb25OYW1lczsKKyAgICBTZWdtZW50ZWRWZWN0b3I8T1NSRXhpdERlc2NyaXB0b3JDb21waWxh
dGlvbkluZm8+IG9zckV4aXREZXNjcmlwdG9yQ29tcGlsYXRpb25JbmZvczsKICAgICB2b2lkKiB1
bndpbmREYXRhU2VjdGlvbjsKICAgICBzaXplX3QgdW53aW5kRGF0YVNlY3Rpb25TaXplOwogICAg
IFJlZlB0cjxEYXRhU2VjdGlvbj4gc3RhY2ttYXBzU2VjdGlvbjsK
</data>
<flag name="review"
          id="291535"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>