<?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>217382</bug_id>
          
          <creation_ts>2020-10-06 06:09:07 -0700</creation_ts>
          <short_desc>[LFC][Integration] Add renderer() to iterator</short_desc>
          <delta_ts>2020-10-06 10:00:32 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1695120</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-06 06:09:07 -0700</bug_when>
    <thetext>And use it in RenderedPosition</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695133</commentid>
    <comment_count>1</comment_count>
      <attachid>410634</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-06 07:22:56 -0700</bug_when>
    <thetext>Created attachment 410634
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695178</commentid>
    <comment_count>2</comment_count>
      <attachid>410645</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-06 09:16:02 -0700</bug_when>
    <thetext>Created attachment 410645
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695192</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-06 09:59:53 -0700</bug_when>
    <thetext>Committed r268055: &lt;https://trac.webkit.org/changeset/268055&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410645.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695193</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-06 10:00:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/70004698&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410634</attachid>
            <date>2020-10-06 07:22:56 -0700</date>
            <delta_ts>2020-10-06 09:16:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>runiterator-renderer.patch</filename>
            <type>text/plain</type>
            <size>26398</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZWQ1NjI2YzM5NDAuLjlkODZiNjljYjE4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU2IEBACisyMDIwLTEwLTA2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gQWRkIHJlbmRlcmVyKCkgdG8gaXRlcmF0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzM4
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsc28g
dXNlIGl0IHdoaWxlIGNvbnZlcnRpbmcgUmVuZGVyZWRQb3NpdGlvbiBmb3IgdGhlIGl0ZXJhdG9y
LgorCisgICAgICAgICogZG9tL1Bvc2l0aW9uLmg6CisgICAgICAgICogZWRpdGluZy9SZW5kZXJl
ZFBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbmRlcmVyRnJvbVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OlJlbmRlcmVkUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6cHJldmlvdXNMZWFmT25MaW5lIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246Om5leHRMZWFmT25MaW5l
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OmlzRXF1aXZhbGVu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpiaWRpTGV2ZWxP
bkxlZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6YmlkaUxl
dmVsT25SaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjps
ZWZ0Qm91bmRhcnlPZkJpZGlSdW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlv
bjo6cmlnaHRCb3VuZGFyeU9mQmlkaVJ1bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBv
c2l0aW9uOjphdExlZnRCb3VuZGFyeU9mQmlkaVJ1biBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJlZFBvc2l0aW9uOjphdFJpZ2h0Qm91bmRhcnlPZkJpZGlSdW4gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6cG9zaXRpb25BdExlZnRCb3VuZGFyeU9m
QmlEaVJ1biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpwb3Np
dGlvbkF0UmlnaHRCb3VuZGFyeU9mQmlEaVJ1biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
cmVuZGVyT2JqZWN0Q29udGFpbnNQb3NpdGlvbik6CisgICAgICAgICogZWRpdGluZy9SZW5kZXJl
ZFBvc2l0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpyb290Qm94
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OmF0TGVmdG1vc3RPZmZzZXRJ
bkJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjphdFJpZ2h0
bW9zdE9mZnNldEluQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRp
b246OnVuY2FjaGVkSW5saW5lQm94KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
cmVkUG9zaXRpb246OlJlbmRlcmVkUG9zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIGxheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQ6OklubGluZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQ6
OmxpbmVMYXlvdXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OklubGluZUNvbnRlbnQ6OnJlbmRlcmVyRm9yTGF5b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudDo6Y3JlYXRlKToK
KyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojpl
bnN1cmVJbmxpbmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9u
OjpMaW5lTGF5b3V0OjpyZW5kZXJlckZvckxheW91dEJveCBjb25zdCk6CisgICAgICAgICogbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oOgorICAgICAgICAq
IGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblBhZ2luYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Om1ha2VBZGp1c3RlZENvbnRlbnQpOgor
ICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UGF0aFJ1bjo6cmVuZGVy
ZXIgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
blJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OkxlZ2FjeVBhdGg6OmlzTGFzdFRleHRSdW5PbkxpbmUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBhdGg6OmlzTGFzdFRleHRSdW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBhdGg6OnJl
bmRlcmVyIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dElu
dGVncmF0aW9uOjpNb2Rlcm5QYXRoOjpyZW5kZXJlciBjb25zdCk6CisKIDIwMjAtMTAtMDUgIEpv
aG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcmFnZSBBY2Nl
c3MgQVBJOiBFbmFibGUgcGVyLXBhZ2Ugc3RvcmFnZSBhY2Nlc3Mgc2NvcGUgYW5kIGFsaWduIHRl
c3QgY2FzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXggYzJhMWQxOWM5ZTFkLi42NWRmNTViMmIy
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCkBAIC0yMDksNiArMjA5LDggQEAgcHVibGljOgogICAg
IC8vIEZJWE1FOiBDb21iaW5lIHRoaXMgZnVuY3Rpb24gd2l0aCBvcGVyYXRvcj09CiAgICAgYm9v
bCBlcXVhbHMoY29uc3QgUG9zaXRpb24mKSBjb25zdDsKIAorICAgIHZvaWQgZW5zdXJlTGluZUJv
eGVzKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgLy8gRm9yIGNyZWF0aW5nIGxlZ2FjeSBlZGl0
aW5nIHBvc2l0aW9uczogKEFuY2hvciB0eXBlIHdpbGwgYmUgZGV0ZXJtaW5lZCBmcm9tIGVkaXRp
bmdJZ25vcmVzQ29udGVudChub2RlKSkKICAgICBlbnVtIGNsYXNzIExlZ2FjeUVkaXRpbmdQb3Np
dGlvbkZsYWcgeyBPbiB9OwpAQCAtMjIwLDggKzIyMiw2IEBAIHByaXZhdGU6CiAgICAgUG9zaXRp
b24gcHJldmlvdXNDaGFyYWN0ZXJQb3NpdGlvbihBZmZpbml0eSkgY29uc3Q7CiAgICAgUG9zaXRp
b24gbmV4dENoYXJhY3RlclBvc2l0aW9uKEFmZmluaXR5KSBjb25zdDsKIAotICAgIHZvaWQgZW5z
dXJlTGluZUJveGVzKCkgY29uc3Q7Ci0KICAgICBzdGF0aWMgQW5jaG9yVHlwZSBhbmNob3JUeXBl
Rm9yTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKE5vZGUqIGFuY2hvck5vZGUsIHVuc2lnbmVkIG9mZnNl
dCk7CiAKICAgICBSZWZQdHI8Tm9kZT4gbV9hbmNob3JOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKaW5kZXggM2Y0NDY1OTIyMjBlLi4zODYxMGE0ZDZh
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcApAQCAt
MzEsMTIgKzMxLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyZWRQ
b3NpdGlvbi5oIgogCisjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVkZSAi
SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZyb21Q
b3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCitzdGF0aWMgaW5saW5lIGNvbnN0IFJl
bmRlck9iamVjdCogcmVuZGVyZXJGcm9tUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9u
KQogewogICAgIEFTU0VSVChwb3NpdGlvbi5pc05vdE51bGwoKSk7CiAgICAgTm9kZSogcmVuZGVy
ZXJOb2RlID0gbnVsbHB0cjsKQEAgLTYzLDcxICs2NCw4NCBAQCBzdGF0aWMgaW5saW5lIFJlbmRl
ck9iamVjdCogcmVuZGVyZXJGcm9tUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQog
ICAgIHJldHVybiByZW5kZXJlck5vZGUtPnJlbmRlcmVyKCk7CiB9CiAKK1JlbmRlcmVkUG9zaXRp
b246OlJlbmRlcmVkUG9zaXRpb24oKQoreworfQorCitSZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJl
ZFBvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIExheW91dEludGVncmF0aW9u
OjpSdW5JdGVyYXRvciBydW4sIGludCBvZmZzZXQpCisgICAgOiBtX3JlbmRlcmVyKHJlbmRlcmVy
KQorICAgICwgbV9ydW4ocnVuKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQoreworfQorCiBSZW5k
ZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9z
aXRpb24pCiAgICAgOiBSZW5kZXJlZFBvc2l0aW9uKHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCks
IHBvc2l0aW9uLmFmZmluaXR5KCkpCiB7CiB9CiAKIFJlbmRlcmVkUG9zaXRpb246OlJlbmRlcmVk
UG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBBZmZpbml0eSBhZmZpbml0eSkKLSAg
ICA6IG1fcHJldmlvdXNMZWFmT25MaW5lKHVuY2FjaGVkSW5saW5lQm94KCkpCi0gICAgLCBtX25l
eHRMZWFmT25MaW5lKHVuY2FjaGVkSW5saW5lQm94KCkpCiB7CiAgICAgaWYgKHBvc2l0aW9uLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byBib3ggPSBwb3NpdGlvbi5pbmxpbmVC
b3hBbmRPZmZzZXQoYWZmaW5pdHkpOwotICAgIG1faW5saW5lQm94ID0gYm94LmJveDsKLSAgICBt
X29mZnNldCA9IGJveC5vZmZzZXQ7Ci0gICAgaWYgKG1faW5saW5lQm94KQotICAgICAgICBtX3Jl
bmRlcmVyID0gJm1faW5saW5lQm94LT5yZW5kZXJlcigpOworCisgICAgLy8gRklYTUU6IFJlbW92
ZS4KKyAgICBwb3NpdGlvbi5lbnN1cmVMaW5lQm94ZXMoKTsKKworICAgIGF1dG8gcnVuQW5kT2Zm
c2V0ID0gcG9zaXRpb24uaW5saW5lUnVuQW5kT2Zmc2V0KGFmZmluaXR5KTsKKyAgICBtX3J1biA9
IHJ1bkFuZE9mZnNldC5ydW47CisgICAgbV9vZmZzZXQgPSBydW5BbmRPZmZzZXQub2Zmc2V0Owor
ICAgIGlmIChtX3J1bikKKyAgICAgICAgbV9yZW5kZXJlciA9ICZtX3J1bi0+cmVuZGVyZXIoKTsK
ICAgICBlbHNlCiAgICAgICAgIG1fcmVuZGVyZXIgPSByZW5kZXJlckZyb21Qb3NpdGlvbihwb3Np
dGlvbik7CiB9CiAKLUlubGluZUJveCogUmVuZGVyZWRQb3NpdGlvbjo6cHJldmlvdXNMZWFmT25M
aW5lKCkgY29uc3QKK0xheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvciBSZW5kZXJlZFBvc2l0
aW9uOjpwcmV2aW91c0xlYWZPbkxpbmUoKSBjb25zdAogewotICAgIGlmIChtX3ByZXZpb3VzTGVh
Zk9uTGluZSA9PSB1bmNhY2hlZElubGluZUJveCgpKQotICAgICAgICBtX3ByZXZpb3VzTGVhZk9u
TGluZSA9IG1faW5saW5lQm94LT5wcmV2aW91c0xlYWZPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygp
OwotICAgIHJldHVybiBtX3ByZXZpb3VzTGVhZk9uTGluZTsKKyAgICBpZiAoIW1fcHJldmlvdXNM
ZWFmT25MaW5lKQorICAgICAgICBtX3ByZXZpb3VzTGVhZk9uTGluZSA9IG1fcnVuLnByZXZpb3Vz
T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKKyAgICByZXR1cm4gKm1fcHJldmlvdXNMZWFmT25M
aW5lOwogfQogCi1JbmxpbmVCb3gqIFJlbmRlcmVkUG9zaXRpb246Om5leHRMZWFmT25MaW5lKCkg
Y29uc3QKK0xheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvciBSZW5kZXJlZFBvc2l0aW9uOjpu
ZXh0TGVhZk9uTGluZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fbmV4dExlYWZPbkxpbmUgPT0gdW5j
YWNoZWRJbmxpbmVCb3goKSkKLSAgICAgICAgbV9uZXh0TGVhZk9uTGluZSA9IG1faW5saW5lQm94
LT5uZXh0TGVhZk9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7Ci0gICAgcmV0dXJuIG1fbmV4dExl
YWZPbkxpbmU7CisgICAgaWYgKCFtX25leHRMZWFmT25MaW5lKQorICAgICAgICBtX25leHRMZWFm
T25MaW5lID0gbV9ydW4ubmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CisgICAgcmV0dXJu
ICptX25leHRMZWFmT25MaW5lOwogfQogCiBib29sIFJlbmRlcmVkUG9zaXRpb246OmlzRXF1aXZh
bGVudChjb25zdCBSZW5kZXJlZFBvc2l0aW9uJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4g
KG1fcmVuZGVyZXIgPT0gb3RoZXIubV9yZW5kZXJlciAmJiBtX2lubGluZUJveCA9PSBvdGhlci5t
X2lubGluZUJveCAmJiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldCkKLSAgICAgICAgfHwgKGF0
TGVmdG1vc3RPZmZzZXRJbkJveCgpICYmIG90aGVyLmF0UmlnaHRtb3N0T2Zmc2V0SW5Cb3goKSAm
JiBwcmV2aW91c0xlYWZPbkxpbmUoKSA9PSBvdGhlci5tX2lubGluZUJveCkKLSAgICAgICAgfHwg
KGF0UmlnaHRtb3N0T2Zmc2V0SW5Cb3goKSAmJiBvdGhlci5hdExlZnRtb3N0T2Zmc2V0SW5Cb3go
KSAmJiBuZXh0TGVhZk9uTGluZSgpID09IG90aGVyLm1faW5saW5lQm94KTsKKyAgICByZXR1cm4g
KG1fcmVuZGVyZXIgPT0gb3RoZXIubV9yZW5kZXJlciAmJiBtX3J1biA9PSBvdGhlci5tX3J1biAm
JiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldCkKKyAgICAgICAgfHwgKGF0TGVmdG1vc3RPZmZz
ZXRJbkJveCgpICYmIG90aGVyLmF0UmlnaHRtb3N0T2Zmc2V0SW5Cb3goKSAmJiBwcmV2aW91c0xl
YWZPbkxpbmUoKSA9PSBvdGhlci5tX3J1bikKKyAgICAgICAgfHwgKGF0UmlnaHRtb3N0T2Zmc2V0
SW5Cb3goKSAmJiBvdGhlci5hdExlZnRtb3N0T2Zmc2V0SW5Cb3goKSAmJiBuZXh0TGVhZk9uTGlu
ZSgpID09IG90aGVyLm1fcnVuKTsKIH0KIAogdW5zaWduZWQgY2hhciBSZW5kZXJlZFBvc2l0aW9u
OjpiaWRpTGV2ZWxPbkxlZnQoKSBjb25zdAogewotICAgIElubGluZUJveCogYm94ID0gYXRMZWZ0
bW9zdE9mZnNldEluQm94KCkgPyBwcmV2aW91c0xlYWZPbkxpbmUoKSA6IG1faW5saW5lQm94Owot
ICAgIHJldHVybiBib3ggPyBib3gtPmJpZGlMZXZlbCgpIDogMDsKKyAgICBhdXRvIHJ1biA9IGF0
TGVmdG1vc3RPZmZzZXRJbkJveCgpID8gcHJldmlvdXNMZWFmT25MaW5lKCkgOiBtX3J1bjsKKyAg
ICByZXR1cm4gcnVuID8gcnVuLT5iaWRpTGV2ZWwoKSA6IDA7CiB9CiAKIHVuc2lnbmVkIGNoYXIg
UmVuZGVyZWRQb3NpdGlvbjo6YmlkaUxldmVsT25SaWdodCgpIGNvbnN0CiB7Ci0gICAgSW5saW5l
Qm94KiBib3ggPSBhdFJpZ2h0bW9zdE9mZnNldEluQm94KCkgPyBuZXh0TGVhZk9uTGluZSgpIDog
bV9pbmxpbmVCb3g7Ci0gICAgcmV0dXJuIGJveCA/IGJveC0+YmlkaUxldmVsKCkgOiAwOworICAg
IGF1dG8gcnVuID0gYXRSaWdodG1vc3RPZmZzZXRJbkJveCgpID8gbmV4dExlYWZPbkxpbmUoKSA6
IG1fcnVuOworICAgIHJldHVybiBydW4gPyBydW4tPmJpZGlMZXZlbCgpIDogMDsKIH0KIAogUmVu
ZGVyZWRQb3NpdGlvbiBSZW5kZXJlZFBvc2l0aW9uOjpsZWZ0Qm91bmRhcnlPZkJpZGlSdW4odW5z
aWduZWQgY2hhciBiaWRpTGV2ZWxPZlJ1bikKIHsKLSAgICBpZiAoIW1faW5saW5lQm94IHx8IGJp
ZGlMZXZlbE9mUnVuID4gbV9pbmxpbmVCb3gtPmJpZGlMZXZlbCgpKQorICAgIGlmICghbV9ydW4g
fHwgYmlkaUxldmVsT2ZSdW4gPiBtX3J1bi0+YmlkaUxldmVsKCkpCiAgICAgICAgIHJldHVybiBS
ZW5kZXJlZFBvc2l0aW9uKCk7CiAKLSAgICBJbmxpbmVCb3gqIGJveCA9IG1faW5saW5lQm94Owor
ICAgIGF1dG8gcnVuID0gbV9ydW47CiAgICAgZG8gewotICAgICAgICBJbmxpbmVCb3gqIHByZXYg
PSBib3gtPnByZXZpb3VzTGVhZk9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CisgICAgICAgIGF1
dG8gcHJldiA9IHJ1bi5wcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CiAgICAgICAg
IGlmICghcHJldiB8fCBwcmV2LT5iaWRpTGV2ZWwoKSA8IGJpZGlMZXZlbE9mUnVuKQotICAgICAg
ICAgICAgcmV0dXJuIFJlbmRlcmVkUG9zaXRpb24oJmJveC0+cmVuZGVyZXIoKSwgYm94LCBib3gt
PmNhcmV0TGVmdG1vc3RPZmZzZXQoKSk7Ci0gICAgICAgIGJveCA9IHByZXY7Ci0gICAgfSB3aGls
ZSAoYm94KTsKKyAgICAgICAgICAgIHJldHVybiBSZW5kZXJlZFBvc2l0aW9uKCZydW4tPnJlbmRl
cmVyKCksIHJ1biwgcnVuLT5sZWZ0bW9zdENhcmV0T2Zmc2V0KCkpOworICAgICAgICBydW4gPSBw
cmV2OworICAgIH0gd2hpbGUgKHJ1bik7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gUmVuZGVyZWRQb3NpdGlvbigpOwpAQCAtMTM1LDE2ICsxNDksMTYgQEAgUmVuZGVy
ZWRQb3NpdGlvbiBSZW5kZXJlZFBvc2l0aW9uOjpsZWZ0Qm91bmRhcnlPZkJpZGlSdW4odW5zaWdu
ZWQgY2hhciBiaWRpTGV2ZWwKIAogUmVuZGVyZWRQb3NpdGlvbiBSZW5kZXJlZFBvc2l0aW9uOjpy
aWdodEJvdW5kYXJ5T2ZCaWRpUnVuKHVuc2lnbmVkIGNoYXIgYmlkaUxldmVsT2ZSdW4pCiB7Ci0g
ICAgaWYgKCFtX2lubGluZUJveCB8fCBiaWRpTGV2ZWxPZlJ1biA+IG1faW5saW5lQm94LT5iaWRp
TGV2ZWwoKSkKKyAgICBpZiAoIW1fcnVuIHx8IGJpZGlMZXZlbE9mUnVuID4gbV9ydW4tPmJpZGlM
ZXZlbCgpKQogICAgICAgICByZXR1cm4gUmVuZGVyZWRQb3NpdGlvbigpOwogCi0gICAgSW5saW5l
Qm94KiBib3ggPSBtX2lubGluZUJveDsKKyAgICBhdXRvIHJ1biA9IG1fcnVuOwogICAgIGRvIHsK
LSAgICAgICAgSW5saW5lQm94KiBuZXh0ID0gYm94LT5uZXh0TGVhZk9uTGluZUlnbm9yaW5nTGlu
ZUJyZWFrKCk7CisgICAgICAgIGF1dG8gbmV4dCA9IHJ1bi5uZXh0T25MaW5lSWdub3JpbmdMaW5l
QnJlYWsoKTsKICAgICAgICAgaWYgKCFuZXh0IHx8IG5leHQtPmJpZGlMZXZlbCgpIDwgYmlkaUxl
dmVsT2ZSdW4pCi0gICAgICAgICAgICByZXR1cm4gUmVuZGVyZWRQb3NpdGlvbigmYm94LT5yZW5k
ZXJlcigpLCBib3gsIGJveC0+Y2FyZXRSaWdodG1vc3RPZmZzZXQoKSk7Ci0gICAgICAgIGJveCA9
IG5leHQ7Ci0gICAgfSB3aGlsZSAoYm94KTsKKyAgICAgICAgICAgIHJldHVybiBSZW5kZXJlZFBv
c2l0aW9uKCZydW4tPnJlbmRlcmVyKCksIHJ1biwgcnVuLT5yaWdodG1vc3RDYXJldE9mZnNldCgp
KTsKKyAgICAgICAgcnVuID0gbmV4dDsKKyAgICB9IHdoaWxlIChydW4pOwogCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFJlbmRlcmVkUG9zaXRpb24oKTsKQEAgLTE1Miwx
OSArMTY2LDE5IEBAIFJlbmRlcmVkUG9zaXRpb24gUmVuZGVyZWRQb3NpdGlvbjo6cmlnaHRCb3Vu
ZGFyeU9mQmlkaVJ1bih1bnNpZ25lZCBjaGFyIGJpZGlMZXZlCiAKIGJvb2wgUmVuZGVyZWRQb3Np
dGlvbjo6YXRMZWZ0Qm91bmRhcnlPZkJpZGlSdW4oU2hvdWxkTWF0Y2hCaWRpTGV2ZWwgc2hvdWxk
TWF0Y2hCaWRpTGV2ZWwsIHVuc2lnbmVkIGNoYXIgYmlkaUxldmVsT2ZSdW4pIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX2lubGluZUJveCkKKyAgICBpZiAoIW1fcnVuKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBpZiAoYXRMZWZ0bW9zdE9mZnNldEluQm94KCkpIHsKICAgICAgICAgaWYgKHNo
b3VsZE1hdGNoQmlkaUxldmVsID09IElnbm9yZUJpZGlMZXZlbCkKLSAgICAgICAgICAgIHJldHVy
biAhcHJldmlvdXNMZWFmT25MaW5lKCkgfHwgcHJldmlvdXNMZWFmT25MaW5lKCktPmJpZGlMZXZl
bCgpIDwgbV9pbmxpbmVCb3gtPmJpZGlMZXZlbCgpOwotICAgICAgICByZXR1cm4gbV9pbmxpbmVC
b3gtPmJpZGlMZXZlbCgpID49IGJpZGlMZXZlbE9mUnVuICYmICghcHJldmlvdXNMZWFmT25MaW5l
KCkgfHwgcHJldmlvdXNMZWFmT25MaW5lKCktPmJpZGlMZXZlbCgpIDwgYmlkaUxldmVsT2ZSdW4p
OworICAgICAgICAgICAgcmV0dXJuICFwcmV2aW91c0xlYWZPbkxpbmUoKSB8fCBwcmV2aW91c0xl
YWZPbkxpbmUoKS0+YmlkaUxldmVsKCkgPCBtX3J1bi0+YmlkaUxldmVsKCk7CisgICAgICAgIHJl
dHVybiBtX3J1bi0+YmlkaUxldmVsKCkgPj0gYmlkaUxldmVsT2ZSdW4gJiYgKCFwcmV2aW91c0xl
YWZPbkxpbmUoKSB8fCBwcmV2aW91c0xlYWZPbkxpbmUoKS0+YmlkaUxldmVsKCkgPCBiaWRpTGV2
ZWxPZlJ1bik7CiAgICAgfQogCiAgICAgaWYgKGF0UmlnaHRtb3N0T2Zmc2V0SW5Cb3goKSkgewog
ICAgICAgICBpZiAoc2hvdWxkTWF0Y2hCaWRpTGV2ZWwgPT0gSWdub3JlQmlkaUxldmVsKQotICAg
ICAgICAgICAgcmV0dXJuIG5leHRMZWFmT25MaW5lKCkgJiYgbV9pbmxpbmVCb3gtPmJpZGlMZXZl
bCgpIDwgbmV4dExlYWZPbkxpbmUoKS0+YmlkaUxldmVsKCk7Ci0gICAgICAgIHJldHVybiBuZXh0
TGVhZk9uTGluZSgpICYmIG1faW5saW5lQm94LT5iaWRpTGV2ZWwoKSA8IGJpZGlMZXZlbE9mUnVu
ICYmIG5leHRMZWFmT25MaW5lKCktPmJpZGlMZXZlbCgpID49IGJpZGlMZXZlbE9mUnVuOworICAg
ICAgICAgICAgcmV0dXJuIG5leHRMZWFmT25MaW5lKCkgJiYgbV9ydW4tPmJpZGlMZXZlbCgpIDwg
bmV4dExlYWZPbkxpbmUoKS0+YmlkaUxldmVsKCk7CisgICAgICAgIHJldHVybiBuZXh0TGVhZk9u
TGluZSgpICYmIG1fcnVuLT5iaWRpTGV2ZWwoKSA8IGJpZGlMZXZlbE9mUnVuICYmIG5leHRMZWFm
T25MaW5lKCktPmJpZGlMZXZlbCgpID49IGJpZGlMZXZlbE9mUnVuOwogICAgIH0KIAogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTE3MiwxOSArMTg2LDE5IEBAIGJvb2wgUmVuZGVyZWRQb3NpdGlvbjo6
YXRMZWZ0Qm91bmRhcnlPZkJpZGlSdW4oU2hvdWxkTWF0Y2hCaWRpTGV2ZWwgc2hvdWxkTWF0Y2hC
CiAKIGJvb2wgUmVuZGVyZWRQb3NpdGlvbjo6YXRSaWdodEJvdW5kYXJ5T2ZCaWRpUnVuKFNob3Vs
ZE1hdGNoQmlkaUxldmVsIHNob3VsZE1hdGNoQmlkaUxldmVsLCB1bnNpZ25lZCBjaGFyIGJpZGlM
ZXZlbE9mUnVuKSBjb25zdAogewotICAgIGlmICghbV9pbmxpbmVCb3gpCisgICAgaWYgKCFtX3J1
bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGF0UmlnaHRtb3N0T2Zmc2V0SW5C
b3goKSkgewogICAgICAgICBpZiAoc2hvdWxkTWF0Y2hCaWRpTGV2ZWwgPT0gSWdub3JlQmlkaUxl
dmVsKQotICAgICAgICAgICAgcmV0dXJuICFuZXh0TGVhZk9uTGluZSgpIHx8IG5leHRMZWFmT25M
aW5lKCktPmJpZGlMZXZlbCgpIDwgbV9pbmxpbmVCb3gtPmJpZGlMZXZlbCgpOwotICAgICAgICBy
ZXR1cm4gbV9pbmxpbmVCb3gtPmJpZGlMZXZlbCgpID49IGJpZGlMZXZlbE9mUnVuICYmICghbmV4
dExlYWZPbkxpbmUoKSB8fCBuZXh0TGVhZk9uTGluZSgpLT5iaWRpTGV2ZWwoKSA8IGJpZGlMZXZl
bE9mUnVuKTsKKyAgICAgICAgICAgIHJldHVybiAhbmV4dExlYWZPbkxpbmUoKSB8fCBuZXh0TGVh
Zk9uTGluZSgpLT5iaWRpTGV2ZWwoKSA8IG1fcnVuLT5iaWRpTGV2ZWwoKTsKKyAgICAgICAgcmV0
dXJuIG1fcnVuLT5iaWRpTGV2ZWwoKSA+PSBiaWRpTGV2ZWxPZlJ1biAmJiAoIW5leHRMZWFmT25M
aW5lKCkgfHwgbmV4dExlYWZPbkxpbmUoKS0+YmlkaUxldmVsKCkgPCBiaWRpTGV2ZWxPZlJ1bik7
CiAgICAgfQogCiAgICAgaWYgKGF0TGVmdG1vc3RPZmZzZXRJbkJveCgpKSB7CiAgICAgICAgIGlm
IChzaG91bGRNYXRjaEJpZGlMZXZlbCA9PSBJZ25vcmVCaWRpTGV2ZWwpCi0gICAgICAgICAgICBy
ZXR1cm4gcHJldmlvdXNMZWFmT25MaW5lKCkgJiYgbV9pbmxpbmVCb3gtPmJpZGlMZXZlbCgpIDwg
cHJldmlvdXNMZWFmT25MaW5lKCktPmJpZGlMZXZlbCgpOwotICAgICAgICByZXR1cm4gcHJldmlv
dXNMZWFmT25MaW5lKCkgJiYgbV9pbmxpbmVCb3gtPmJpZGlMZXZlbCgpIDwgYmlkaUxldmVsT2ZS
dW4gJiYgcHJldmlvdXNMZWFmT25MaW5lKCktPmJpZGlMZXZlbCgpID49IGJpZGlMZXZlbE9mUnVu
OworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzTGVhZk9uTGluZSgpICYmIG1fcnVuLT5iaWRp
TGV2ZWwoKSA8IHByZXZpb3VzTGVhZk9uTGluZSgpLT5iaWRpTGV2ZWwoKTsKKyAgICAgICAgcmV0
dXJuIHByZXZpb3VzTGVhZk9uTGluZSgpICYmIG1fcnVuLT5iaWRpTGV2ZWwoKSA8IGJpZGlMZXZl
bE9mUnVuICYmIHByZXZpb3VzTGVhZk9uTGluZSgpLT5iaWRpTGV2ZWwoKSA+PSBiaWRpTGV2ZWxP
ZlJ1bjsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTcsNyArMjExLDcgQEAgUG9z
aXRpb24gUmVuZGVyZWRQb3NpdGlvbjo6cG9zaXRpb25BdExlZnRCb3VuZGFyeU9mQmlEaVJ1bigp
IGNvbnN0CiAgICAgaWYgKGF0TGVmdG1vc3RPZmZzZXRJbkJveCgpKQogICAgICAgICByZXR1cm4g
bWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihtX3JlbmRlcmVyLT5ub2RlKCksIG1fb2Zmc2V0
KTsKIAotICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKG5leHRMZWFmT25M
aW5lKCktPnJlbmRlcmVyKCkubm9kZSgpLCBuZXh0TGVhZk9uTGluZSgpLT5jYXJldExlZnRtb3N0
T2Zmc2V0KCkpOworICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKG5leHRM
ZWFmT25MaW5lKCktPnJlbmRlcmVyKCkubm9kZSgpLCBuZXh0TGVhZk9uTGluZSgpLT5sZWZ0bW9z
dENhcmV0T2Zmc2V0KCkpOwogfQogCiBQb3NpdGlvbiBSZW5kZXJlZFBvc2l0aW9uOjpwb3NpdGlv
bkF0UmlnaHRCb3VuZGFyeU9mQmlEaVJ1bigpIGNvbnN0CkBAIC0yMDcsNyArMjIxLDcgQEAgUG9z
aXRpb24gUmVuZGVyZWRQb3NpdGlvbjo6cG9zaXRpb25BdFJpZ2h0Qm91bmRhcnlPZkJpRGlSdW4o
KSBjb25zdAogICAgIGlmIChhdFJpZ2h0bW9zdE9mZnNldEluQm94KCkpCiAgICAgICAgIHJldHVy
biBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKG1fcmVuZGVyZXItPm5vZGUoKSwgbV9vZmZz
ZXQpOwogCi0gICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJldmlvdXNM
ZWFmT25MaW5lKCktPnJlbmRlcmVyKCkubm9kZSgpLCBwcmV2aW91c0xlYWZPbkxpbmUoKS0+Y2Fy
ZXRSaWdodG1vc3RPZmZzZXQoKSk7CisgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9z
aXRpb24ocHJldmlvdXNMZWFmT25MaW5lKCktPnJlbmRlcmVyKCkubm9kZSgpLCBwcmV2aW91c0xl
YWZPbkxpbmUoKS0+cmlnaHRtb3N0Q2FyZXRPZmZzZXQoKSk7CiB9CiAKIEludFJlY3QgUmVuZGVy
ZWRQb3NpdGlvbjo6YWJzb2x1dGVSZWN0KExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGlu
ZSkgY29uc3QKQEAgLTIxNSwxMyArMjI5LDEzIEBAIEludFJlY3QgUmVuZGVyZWRQb3NpdGlvbjo6
YWJzb2x1dGVSZWN0KExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgY29uc3QKICAg
ICBpZiAoaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CiAKLSAgICBJbnRSZWN0
IGxvY2FsUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1fcmVuZGVyZXItPmxvY2FsQ2FyZXRSZWN0KG1f
aW5saW5lQm94LCBtX29mZnNldCwgZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKSk7CisgICAgSW50UmVj
dCBsb2NhbFJlY3QgPSBzbmFwcGVkSW50UmVjdChjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+KG1f
cmVuZGVyZXIpLT5sb2NhbENhcmV0UmVjdChtX3J1bi0+bGVnYWN5SW5saW5lQm94KCksIG1fb2Zm
c2V0LCBleHRyYVdpZHRoVG9FbmRPZkxpbmUpKTsKICAgICByZXR1cm4gbG9jYWxSZWN0ID09IElu
dFJlY3QoKSA/IEludFJlY3QoKSA6IG1fcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxv
YXRSZWN0KGxvY2FsUmVjdCkpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CiB9CiAKLWJvb2wgcmVu
ZGVyT2JqZWN0Q29udGFpbnNQb3NpdGlvbihSZW5kZXJPYmplY3QqIHRhcmdldCwgY29uc3QgUG9z
aXRpb24mIHBvc2l0aW9uKQorYm9vbCByZW5kZXJPYmplY3RDb250YWluc1Bvc2l0aW9uKGNvbnN0
IFJlbmRlck9iamVjdCogdGFyZ2V0LCBjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7Ci0gICAg
Zm9yIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcmVuZGVyZXJGcm9tUG9zaXRpb24ocG9zaXRp
b24pOyByZW5kZXJlciAmJiByZW5kZXJlci0+bm9kZSgpOyByZW5kZXJlciA9IHJlbmRlcmVyLT5w
YXJlbnQoKSkgeworICAgIGZvciAoYXV0byogcmVuZGVyZXIgPSByZW5kZXJlckZyb21Qb3NpdGlv
bihwb3NpdGlvbik7IHJlbmRlcmVyICYmIHJlbmRlcmVyLT5ub2RlKCk7IHJlbmRlcmVyID0gcmVu
ZGVyZXItPnBhcmVudCgpKSB7CiAgICAgICAgIGlmIChyZW5kZXJlciA9PSB0YXJnZXQpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVy
ZWRQb3NpdGlvbi5oCmluZGV4IDZhNTQ0ZDUwODk2MC4uMGMxZjc4NDE4YmMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaApAQCAtMzAsNyArMzAsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIklubGluZUJveC5oIgorI2luY2x1ZGUgIkxheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Vx
dWl2YWxlbnQoY29uc3QgUmVuZGVyZWRQb3NpdGlvbiYpIGNvbnN0OwogCiAgICAgYm9vbCBpc051
bGwoKSBjb25zdCB7IHJldHVybiAhbV9yZW5kZXJlcjsgfQotICAgIFJvb3RJbmxpbmVCb3gqIHJv
b3RCb3goKSB7IHJldHVybiBtX2lubGluZUJveCA/ICZtX2lubGluZUJveC0+cm9vdCgpIDogMDsg
fQorICAgIFJvb3RJbmxpbmVCb3gqIHJvb3RCb3goKSB7IHJldHVybiBtX3J1biA/ICZtX3J1bi0+
bGVnYWN5SW5saW5lQm94KCktPnJvb3QoKSA6IG51bGxwdHI7IH0KIAogICAgIHVuc2lnbmVkIGNo
YXIgYmlkaUxldmVsT25MZWZ0KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgY2hhciBiaWRpTGV2ZWxP
blJpZ2h0KCkgY29uc3Q7CkBAIC03MCw0MiArNzAsMjMgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZW5kZXJlZFBvc2l0aW9uJikgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBleHBsaWNpdCBSZW5kZXJlZFBvc2l0aW9uKFJlbmRlck9iamVjdCos
IElubGluZUJveCosIGludCBvZmZzZXQpOworICAgIGV4cGxpY2l0IFJlbmRlcmVkUG9zaXRpb24o
Y29uc3QgUmVuZGVyT2JqZWN0KiwgTGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yLCBpbnQg
b2Zmc2V0KTsKIAotICAgIElubGluZUJveCogcHJldmlvdXNMZWFmT25MaW5lKCkgY29uc3Q7Ci0g
ICAgSW5saW5lQm94KiBuZXh0TGVhZk9uTGluZSgpIGNvbnN0OwotICAgIGJvb2wgYXRMZWZ0bW9z
dE9mZnNldEluQm94KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3ggJiYgbV9vZmZzZXQgPT0g
bV9pbmxpbmVCb3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKTsgfQotICAgIGJvb2wgYXRSaWdodG1v
c3RPZmZzZXRJbkJveCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQm94ICYmIG1fb2Zmc2V0ID09
IG1faW5saW5lQm94LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpOyB9CisgICAgTGF5b3V0SW50ZWdy
YXRpb246OlJ1bkl0ZXJhdG9yIHByZXZpb3VzTGVhZk9uTGluZSgpIGNvbnN0OworICAgIExheW91
dEludGVncmF0aW9uOjpSdW5JdGVyYXRvciBuZXh0TGVhZk9uTGluZSgpIGNvbnN0OworICAgIGJv
b2wgYXRMZWZ0bW9zdE9mZnNldEluQm94KCkgY29uc3QgeyByZXR1cm4gbV9ydW4gJiYgbV9vZmZz
ZXQgPT0gbV9ydW4tPmxlZnRtb3N0Q2FyZXRPZmZzZXQoKTsgfQorICAgIGJvb2wgYXRSaWdodG1v
c3RPZmZzZXRJbkJveCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVuICYmIG1fb2Zmc2V0ID09IG1fcnVu
LT5yaWdodG1vc3RDYXJldE9mZnNldCgpOyB9CiAgICAgYm9vbCBhdExlZnRCb3VuZGFyeU9mQmlk
aVJ1bihTaG91bGRNYXRjaEJpZGlMZXZlbCwgdW5zaWduZWQgY2hhciBiaWRpTGV2ZWxPZlJ1bikg
Y29uc3Q7CiAgICAgYm9vbCBhdFJpZ2h0Qm91bmRhcnlPZkJpZGlSdW4oU2hvdWxkTWF0Y2hCaWRp
TGV2ZWwsIHVuc2lnbmVkIGNoYXIgYmlkaUxldmVsT2ZSdW4pIGNvbnN0OwogCi0gICAgc3RhdGlj
IElubGluZUJveCogdW5jYWNoZWRJbmxpbmVCb3goKSB7IHJldHVybiByZWludGVycHJldF9jYXN0
PElubGluZUJveCo+KDEpOyB9Ci0gICAgLy8gTmVlZHMgdG8gYmUgZGlmZmVyZW50IGZvcm0gMCBz
byBwaWNrIDEgYmVjYXVzZSBpdCdzIGFsc28gb24gdGhlIG51bGwgcGFnZS4KKyAgICBjb25zdCBS
ZW5kZXJPYmplY3QqIG1fcmVuZGVyZXIgeyBudWxscHRyIH07CisgICAgTGF5b3V0SW50ZWdyYXRp
b246OlJ1bkl0ZXJhdG9yIG1fcnVuOworICAgIHVuc2lnbmVkIG1fb2Zmc2V0IHsgMCB9OwogCi0g
ICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyIHsgbnVsbHB0ciB9OwotICAgIElubGluZUJveCog
bV9pbmxpbmVCb3ggeyBudWxscHRyIH07Ci0gICAgaW50IG1fb2Zmc2V0IHsgMCB9OwotCi0gICAg
bXV0YWJsZSBJbmxpbmVCb3gqIG1fcHJldmlvdXNMZWFmT25MaW5lIHsgbnVsbHB0ciB9OwotICAg
IG11dGFibGUgSW5saW5lQm94KiBtX25leHRMZWFmT25MaW5lIHsgbnVsbHB0ciB9OworICAgIG11
dGFibGUgT3B0aW9uYWw8TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yPiBtX3ByZXZpb3Vz
TGVhZk9uTGluZTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPExheW91dEludGVncmF0aW9uOjpSdW5J
dGVyYXRvcj4gbV9uZXh0TGVhZk9uTGluZTsKIH07CiAKLWlubGluZSBSZW5kZXJlZFBvc2l0aW9u
OjpSZW5kZXJlZFBvc2l0aW9uKCkKLSAgICA6IG1fb2Zmc2V0KDApCi0gICAgLCBtX3ByZXZpb3Vz
TGVhZk9uTGluZSh1bmNhY2hlZElubGluZUJveCgpKQotICAgICwgbV9uZXh0TGVhZk9uTGluZSh1
bmNhY2hlZElubGluZUJveCgpKQotewotfQotCi1pbmxpbmUgUmVuZGVyZWRQb3NpdGlvbjo6UmVu
ZGVyZWRQb3NpdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBJbmxpbmVCb3gqIGJveCwgaW50
IG9mZnNldCkKLSAgICA6IG1fcmVuZGVyZXIocmVuZGVyZXIpCi0gICAgLCBtX2lubGluZUJveChi
b3gpCi0gICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgLCBtX3ByZXZpb3VzTGVhZk9uTGluZSh1
bmNhY2hlZElubGluZUJveCgpKQotICAgICwgbV9uZXh0TGVhZk9uTGluZSh1bmNhY2hlZElubGlu
ZUJveCgpKQotewotfQotCi1ib29sIHJlbmRlck9iamVjdENvbnRhaW5zUG9zaXRpb24oUmVuZGVy
T2JqZWN0KiwgY29uc3QgUG9zaXRpb24mKTsKK2Jvb2wgcmVuZGVyT2JqZWN0Q29udGFpbnNQb3Np
dGlvbihjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBQb3NpdGlvbiYpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuY3BwCmluZGV4
IDY0Zjk4YjM2NzA1Ny4uMmMxOThlZWVmNGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Jbmxp
bmVDb250ZW50LmNwcApAQCAtMjgsMTIgKzI4LDE4IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZP
Uk1BVFRJTkdfQ09OVEVYVCkKIAorI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGluZUxheW91
dC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJUZXh0
UGFpbnRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0SW50ZWdy
YXRpb24gewogCitJbmxpbmVDb250ZW50OjpJbmxpbmVDb250ZW50KGNvbnN0IExpbmVMYXlvdXQm
IGxpbmVMYXlvdXQpCisgICAgOiBtX2xpbmVMYXlvdXQobWFrZVdlYWtQdHIobGluZUxheW91dCkp
Cit7Cit9CisKIFdURjo6SXRlcmF0b3JSYW5nZTxjb25zdCBSdW4qPiBJbmxpbmVDb250ZW50Ojpy
dW5zRm9yUmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogRG8g
c29tZXRoaW5nIGVmZmljaWVudCBlLmcuIHVzaW5nIGxpbmUgYm94ZXMuCkBAIC01MCw2ICs1Niwx
NyBAQCBJbmxpbmVDb250ZW50Ojp+SW5saW5lQ29udGVudCgpCiAgICAgfQogfQogCitjb25zdCBM
aW5lTGF5b3V0JiBJbmxpbmVDb250ZW50OjpsaW5lTGF5b3V0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gKm1fbGluZUxheW91dDsKK30KKworY29uc3QgUmVuZGVyT2JqZWN0KiBJbmxpbmVDb250ZW50
OjpyZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94KSBjb25z
dAoreworICAgIHJldHVybiBtX2xpbmVMYXlvdXQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KGxheW91
dEJveCk7Cit9CisKKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmgK
aW5kZXggN2I2NDIwMGIyMzQ1Li44ZDZmYzY0NTQxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25J
bmxpbmVDb250ZW50LmgKQEAgLTMxLDEyICszMSwyMiBAQAogI2luY2x1ZGUgIkxheW91dEludGVn
cmF0aW9uUnVuLmgiCiAjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBSZW5kZXJPYmplY3Q7CisKK25hbWVzcGFjZSBMYXlvdXQgeworY2xhc3Mg
Qm94OworfQorCiBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCitjbGFzcyBMaW5lTGF5
b3V0OworCiBzdHJ1Y3QgSW5saW5lQ29udGVudCA6IHB1YmxpYyBSZWZDb3VudGVkPElubGluZUNv
bnRlbnQ+IHsKLSAgICBzdGF0aWMgUmVmPElubGluZUNvbnRlbnQ+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW5saW5lQ29udGVudCk7IH0KKyAgICBzdGF0aWMgUmVmPElubGluZUNv
bnRlbnQ+IGNyZWF0ZShjb25zdCBMaW5lTGF5b3V0JiBsaW5lTGF5b3V0KSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IElubGluZUNvbnRlbnQobGluZUxheW91dCkpOyB9CiAgICAgfklubGluZUNvbnRl
bnQoKTsKIAogICAgIHVzaW5nIFJ1bnMgPSBWZWN0b3I8UnVuLCA0PjsKQEAgLTQ5LDggKzU5LDEz
IEBAIHN0cnVjdCBJbmxpbmVDb250ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8SW5saW5lQ29udGVu
dD4gewogICAgIFdURjo6SXRlcmF0b3JSYW5nZTxjb25zdCBSdW4qPiBydW5zRm9yUmVjdChjb25z
dCBMYXlvdXRSZWN0JikgY29uc3Q7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCisgICAgY29u
c3QgTGluZUxheW91dCYgbGluZUxheW91dCgpIGNvbnN0OworICAgIGNvbnN0IFJlbmRlck9iamVj
dCogcmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmKSBjb25zdDsKKwogcHJp
dmF0ZToKLSAgICBJbmxpbmVDb250ZW50KCkgPSBkZWZhdWx0OworICAgIElubGluZUNvbnRlbnQo
Y29uc3QgTGluZUxheW91dCYpOworCisgICAgV2Vha1B0cjxjb25zdCBMaW5lTGF5b3V0PiBtX2xp
bmVMYXlvdXQ7CiB9OwogCiBpbmxpbmUgdm9pZCBJbmxpbmVDb250ZW50OjpzaHJpbmtUb0ZpdCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCmluZGV4IDlkZGYyYWNkZGQ2MC4uMmFm
MmRkZmUzNGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtMjg5LDcg
KzI4OSw3IEBAIHZvaWQgTGluZUxheW91dDo6Y29sbGVjdE92ZXJmbG93KFJlbmRlckJsb2NrRmxv
dyYgZmxvdykKIElubGluZUNvbnRlbnQmIExpbmVMYXlvdXQ6OmVuc3VyZUlubGluZUNvbnRlbnQo
KQogewogICAgIGlmICghbV9pbmxpbmVDb250ZW50KQotICAgICAgICBtX2lubGluZUNvbnRlbnQg
PSBJbmxpbmVDb250ZW50OjpjcmVhdGUoKTsKKyAgICAgICAgbV9pbmxpbmVDb250ZW50ID0gSW5s
aW5lQ29udGVudDo6Y3JlYXRlKCp0aGlzKTsKICAgICByZXR1cm4gKm1faW5saW5lQ29udGVudDsK
IH0KIApAQCAtMzMwLDYgKzMzMCwxMSBAQCBSdW5JdGVyYXRvciBMaW5lTGF5b3V0OjpydW5Gb3Io
Y29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxlbWVudCkgY29uc3QKICAgICByZXR1cm4geyB9
OwogfQogCitjb25zdCBSZW5kZXJPYmplY3QqIExpbmVMYXlvdXQ6OnJlbmRlcmVyRm9yTGF5b3V0
Qm94KGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Ym94VHJlZS5yZW5kZXJlckZvckxheW91dEJveChsYXlvdXRCb3gpOworfQorCiBjb25zdCBMYXlv
dXQ6OkNvbnRhaW5lckJveCYgTGluZUxheW91dDo6cm9vdExheW91dEJveCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fYm94VHJlZS5yb290TGF5b3V0Qm94KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5l
TGF5b3V0LmgKaW5kZXggYmI0ZThiYjVlNTA0Li5mZTA1ZTYwZDE4ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25MaW5lTGF5b3V0LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJMYXlvdXRQb2lu
dC5oIgogI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0RW51
bXMuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ3LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKIAogc3RydWN0
IElubGluZUNvbnRlbnQ7CiAKLWNsYXNzIExpbmVMYXlvdXQgeworY2xhc3MgTGluZUxheW91dCA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMaW5lTGF5b3V0PiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGluZUxheW91dChjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
KTsKQEAgLTc4LDYgKzc5LDggQEAgcHVibGljOgogICAgIFRleHRSdW5JdGVyYXRvciB0ZXh0UnVu
c0Zvcihjb25zdCBSZW5kZXJUZXh0JikgY29uc3Q7CiAgICAgUnVuSXRlcmF0b3IgcnVuRm9yKGNv
bnN0IFJlbmRlckVsZW1lbnQmKSBjb25zdDsKIAorICAgIGNvbnN0IFJlbmRlck9iamVjdCogcmVu
ZGVyZXJGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmKSBjb25zdDsKKwogICAgIHN0YXRp
YyB2b2lkIHJlbGVhc2VDYWNoZXMoUmVuZGVyVmlldyYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUGFn
aW5hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25QYWdpbmF0aW9uLmNwcAppbmRleCBiNzc5MDdjZTIyMDIuLjE0Y2RmNTk3NGQ0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uUGFnaW5hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBz
dGF0aWMgUmVmPElubGluZUNvbnRlbnQ+IG1ha2VBZGp1c3RlZENvbnRlbnQoY29uc3QgSW5saW5l
Q29udGVudCYgaW5saW5lQ29udGVudAogICAgICAgICB9OwogICAgIH07CiAKLSAgICBhdXRvIGFk
anVzdGVkQ29udGVudCA9IElubGluZUNvbnRlbnQ6OmNyZWF0ZSgpOworICAgIGF1dG8gYWRqdXN0
ZWRDb250ZW50ID0gSW5saW5lQ29udGVudDo6Y3JlYXRlKGlubGluZUNvbnRlbnQubGluZUxheW91
dCgpKTsKIAogICAgIGZvciAoc2l6ZV90IGxpbmVJbmRleCA9IDA7IGxpbmVJbmRleCA8IGlubGlu
ZUNvbnRlbnQubGluZXMuc2l6ZSgpOyArK2xpbmVJbmRleCkKICAgICAgICAgYWRqdXN0ZWRDb250
ZW50LT5saW5lcy5hcHBlbmQoYWRqdXN0ZWRMaW5lKGlubGluZUNvbnRlbnQubGluZXNbbGluZUlu
ZGV4XSwgYWRqdXN0bWVudHNbbGluZUluZGV4XSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJh
dG9yLmgKaW5kZXggNmZlZjdlOWUwMGMwLi5kMGYxMjBmZmFhOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uUnVuSXRlcmF0b3IuaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBSZW5kZXJMaW5lQnJlYWs7CitjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5k
ZXJUZXh0OwogCiBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewpAQCAtNzUsNiArNzYsOCBA
QCBwdWJsaWM6CiAKICAgICBib29sIG9uU2FtZUxpbmUoY29uc3QgUGF0aFJ1biYpIGNvbnN0Owog
CisgICAgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcigpIGNvbnN0OworCiAgICAgLy8gRm9y
IGludGVybWVkaWF0ZSBwb3J0aW5nIHN0ZXBzIG9ubHkuCiAgICAgSW5saW5lQm94KiBsZWdhY3lJ
bmxpbmVCb3goKSBjb25zdDsKIApAQCAtMjgxLDYgKzI4NCwxMyBAQCBpbmxpbmUgYm9vbCBQYXRo
UnVuOjpvblNhbWVMaW5lKGNvbnN0IFBhdGhSdW4mIG90aGVyKSBjb25zdAogICAgIH0pOwogfQog
CitpbmxpbmUgY29uc3QgUmVuZGVyT2JqZWN0JiBQYXRoUnVuOjpyZW5kZXJlcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkg
LT4gY29uc3QgUmVuZGVyT2JqZWN0JiB7CisgICAgICAgIHJldHVybiBwYXRoLnJlbmRlcmVyKCk7
CisgICAgfSk7Cit9CisKIGlubGluZSBJbmxpbmVCb3gqIFBhdGhSdW46OmxlZ2FjeUlubGluZUJv
eCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10o
YXV0byYgcGF0aCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2Fj
eVBhdGguaAppbmRleCAzNjg4N2ZiYjllNjguLjUzOTgwNzVhYmFmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0
b3JMZWdhY3lQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKQEAgLTY1LDEyICs2NSwxNyBA
QCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9jYWxFbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBp
bmxpbmVUZXh0Qm94KCktPmVuZCgpOyB9CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gaW5saW5lVGV4dEJveCgpLT5sZW4oKTsgfQogCi0gICAgaW5saW5lIGJvb2wgaXNMYXN0
VGV4dFJ1bk9uTGluZSgpIGNvbnN0CisgICAgYm9vbCBpc0xhc3RUZXh0UnVuT25MaW5lKCkgY29u
c3QKICAgICB7CiAgICAgICAgIGF1dG8qIG5leHQgPSBuZXh0SW5saW5lVGV4dEJveEluVGV4dE9y
ZGVyKCk7CiAgICAgICAgIHJldHVybiAhbmV4dCB8fCAmaW5saW5lVGV4dEJveCgpLT5yb290KCkg
IT0gJm5leHQtPnJvb3QoKTsKICAgICB9Ci0gICAgaW5saW5lIGJvb2wgaXNMYXN0VGV4dFJ1bigp
IGNvbnN0IHsgcmV0dXJuICFuZXh0SW5saW5lVGV4dEJveEluVGV4dE9yZGVyKCk7IH07CisgICAg
Ym9vbCBpc0xhc3RUZXh0UnVuKCkgY29uc3QgeyByZXR1cm4gIW5leHRJbmxpbmVUZXh0Qm94SW5U
ZXh0T3JkZXIoKTsgfTsKKworICAgIGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW5saW5lQm94LT5yZW5kZXJlcigpOworICAgIH0K
IAogICAgIHZvaWQgdHJhdmVyc2VOZXh0VGV4dFJ1bigpIHsgbV9pbmxpbmVCb3ggPSBpbmxpbmVU
ZXh0Qm94KCktPm5leHRUZXh0Qm94KCk7IH0KICAgICB2b2lkIHRyYXZlcnNlTmV4dFRleHRSdW5J
blRleHRPcmRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aC5oCmluZGV4IGMwMjkwNTU5MmUyYy4uOTAxNDI5NzhjOTlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRv
ck1vZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaApAQCAtOTksNiArOTksMTEgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gJnJ1bigpLmxheW91dEJveCgpICE9ICZydW5zKClbbV9y
dW5JbmRleCArIDFdLmxheW91dEJveCgpOwogICAgIH07CiAKKyAgICBjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAqbV9pbmxpbmVDb250
ZW50LT5yZW5kZXJlckZvckxheW91dEJveChydW4oKS5sYXlvdXRCb3goKSk7CisgICAgfQorCiAg
ICAgdm9pZCB0cmF2ZXJzZU5leHRUZXh0UnVuKCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghYXRF
bmQoKSk7Cg==
</data>
<flag name="review"
          id="426631"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410645</attachid>
            <date>2020-10-06 09:16:02 -0700</date>
            <delta_ts>2020-10-06 09:59:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>runiterator-renderer-2.patch</filename>
            <type>text/plain</type>
            <size>26406</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZWQ1NjI2YzM5NDAuLjdiNzMxYjhkNTUyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU2IEBACisyMDIwLTEwLTA2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gQWRkIHJlbmRlcmVyKCkgdG8gaXRlcmF0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzM4
MgorCisgICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICBBbHNvIHVz
ZSBpdCB3aGlsZSBjb252ZXJ0aW5nIFJlbmRlcmVkUG9zaXRpb24gZm9yIHRoZSBpdGVyYXRvci4K
KworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvUmVuZGVyZWRQ
b3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJlckZyb21Qb3NpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OnByZXZpb3VzTGVhZk9uTGluZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpuZXh0TGVhZk9uTGluZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjppc0VxdWl2YWxlbnQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6YmlkaUxldmVsT25M
ZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OmJpZGlMZXZl
bE9uUmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6bGVm
dEJvdW5kYXJ5T2ZCaWRpUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246
OnJpZ2h0Qm91bmRhcnlPZkJpZGlSdW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3Np
dGlvbjo6YXRMZWZ0Qm91bmRhcnlPZkJpZGlSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyZWRQb3NpdGlvbjo6YXRSaWdodEJvdW5kYXJ5T2ZCaWRpUnVuIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OnBvc2l0aW9uQXRMZWZ0Qm91bmRhcnlPZkJp
RGlSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6cG9zaXRp
b25BdFJpZ2h0Qm91bmRhcnlPZkJpRGlSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyZWRQb3NpdGlvbjo6YWJzb2x1dGVSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnJl
bmRlck9iamVjdENvbnRhaW5zUG9zaXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvUmVuZGVyZWRQ
b3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6cm9vdEJveCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjphdExlZnRtb3N0T2Zmc2V0SW5C
b3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6YXRSaWdodG1v
c3RPZmZzZXRJbkJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9u
Ojp1bmNhY2hlZElubGluZUJveCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJl
ZFBvc2l0aW9uOjpSZW5kZXJlZFBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50OjpJbmxpbmVDb250ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50Ojps
aW5lTGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpJ
bmxpbmVDb250ZW50OjpyZW5kZXJlckZvckxheW91dEJveCBjb25zdCk6CisgICAgICAgICogbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6ZW5z
dXJlSW5saW5lQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6
TGluZUxheW91dDo6cmVuZGVyZXJGb3JMYXlvdXRCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaDoKKyAgICAgICAgKiBs
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjptYWtlQWRqdXN0ZWRDb250ZW50KToKKyAg
ICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5o
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlBhdGhSdW46OnJlbmRlcmVy
IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25S
dW5JdGVyYXRvckxlZ2FjeVBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpMZWdhY3lQYXRoOjppc0xhc3RUZXh0UnVuT25MaW5lIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMZWdhY3lQYXRoOjppc0xhc3RUZXh0UnVuIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMZWdhY3lQYXRoOjpyZW5k
ZXJlciBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6TW9kZXJuUGF0aDo6cmVuZGVyZXIgY29uc3QpOgorCiAyMDIwLTEwLTA1ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3JhZ2UgQWNjZXNz
IEFQSTogRW5hYmxlIHBlci1wYWdlIHN0b3JhZ2UgYWNjZXNzIHNjb3BlIGFuZCBhbGlnbiB0ZXN0
IGNhc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4IGMyYTFkMTljOWUxZC4uNjVkZjU1YjJiMjBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUG9zaXRpb24uaApAQCAtMjA5LDYgKzIwOSw4IEBAIHB1YmxpYzoKICAgICAv
LyBGSVhNRTogQ29tYmluZSB0aGlzIGZ1bmN0aW9uIHdpdGggb3BlcmF0b3I9PQogICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IFBvc2l0aW9uJikgY29uc3Q7CiAKKyAgICB2b2lkIGVuc3VyZUxpbmVCb3hl
cygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIC8vIEZvciBjcmVhdGluZyBsZWdhY3kgZWRpdGlu
ZyBwb3NpdGlvbnM6IChBbmNob3IgdHlwZSB3aWxsIGJlIGRldGVybWluZWQgZnJvbSBlZGl0aW5n
SWdub3Jlc0NvbnRlbnQobm9kZSkpCiAgICAgZW51bSBjbGFzcyBMZWdhY3lFZGl0aW5nUG9zaXRp
b25GbGFnIHsgT24gfTsKQEAgLTIyMCw4ICsyMjIsNiBAQCBwcml2YXRlOgogICAgIFBvc2l0aW9u
IHByZXZpb3VzQ2hhcmFjdGVyUG9zaXRpb24oQWZmaW5pdHkpIGNvbnN0OwogICAgIFBvc2l0aW9u
IG5leHRDaGFyYWN0ZXJQb3NpdGlvbihBZmZpbml0eSkgY29uc3Q7CiAKLSAgICB2b2lkIGVuc3Vy
ZUxpbmVCb3hlcygpIGNvbnN0OwotCiAgICAgc3RhdGljIEFuY2hvclR5cGUgYW5jaG9yVHlwZUZv
ckxlZ2FjeUVkaXRpbmdQb3NpdGlvbihOb2RlKiBhbmNob3JOb2RlLCB1bnNpZ25lZCBvZmZzZXQp
OwogCiAgICAgUmVmUHRyPE5vZGU+IG1fYW5jaG9yTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCmluZGV4IDNmNDQ2NTkyMjIwZS4uZDMzNzBkM2ViOWQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKQEAgLTMx
LDEyICszMSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlcmVkUG9z
aXRpb24uaCIKIAorI2luY2x1ZGUgIklubGluZVJ1bkFuZE9mZnNldC5oIgogI2luY2x1ZGUgIklu
bGluZVRleHRCb3guaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogcmVuZGVyZXJGcm9tUG9z
aXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQorc3RhdGljIGlubGluZSBjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyRnJvbVBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikK
IHsKICAgICBBU1NFUlQocG9zaXRpb24uaXNOb3ROdWxsKCkpOwogICAgIE5vZGUqIHJlbmRlcmVy
Tm9kZSA9IG51bGxwdHI7CkBAIC02Myw3MSArNjQsODQgQEAgc3RhdGljIGlubGluZSBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyRnJvbVBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKICAg
ICByZXR1cm4gcmVuZGVyZXJOb2RlLT5yZW5kZXJlcigpOwogfQogCitSZW5kZXJlZFBvc2l0aW9u
OjpSZW5kZXJlZFBvc2l0aW9uKCkKK3sKK30KKworUmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQ
b3NpdGlvbihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBMYXlvdXRJbnRlZ3JhdGlvbjo6
UnVuSXRlcmF0b3IgcnVuLCB1bnNpZ25lZCBvZmZzZXQpCisgICAgOiBtX3JlbmRlcmVyKHJlbmRl
cmVyKQorICAgICwgbV9ydW4ocnVuKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQoreworfQorCiBS
ZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
cG9zaXRpb24pCiAgICAgOiBSZW5kZXJlZFBvc2l0aW9uKHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50
KCksIHBvc2l0aW9uLmFmZmluaXR5KCkpCiB7CiB9CiAKIFJlbmRlcmVkUG9zaXRpb246OlJlbmRl
cmVkUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBBZmZpbml0eSBhZmZpbml0eSkK
LSAgICA6IG1fcHJldmlvdXNMZWFmT25MaW5lKHVuY2FjaGVkSW5saW5lQm94KCkpCi0gICAgLCBt
X25leHRMZWFmT25MaW5lKHVuY2FjaGVkSW5saW5lQm94KCkpCiB7CiAgICAgaWYgKHBvc2l0aW9u
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byBib3ggPSBwb3NpdGlvbi5pbmxp
bmVCb3hBbmRPZmZzZXQoYWZmaW5pdHkpOwotICAgIG1faW5saW5lQm94ID0gYm94LmJveDsKLSAg
ICBtX29mZnNldCA9IGJveC5vZmZzZXQ7Ci0gICAgaWYgKG1faW5saW5lQm94KQotICAgICAgICBt
X3JlbmRlcmVyID0gJm1faW5saW5lQm94LT5yZW5kZXJlcigpOworCisgICAgLy8gRklYTUU6IFJl
bW92ZS4KKyAgICBwb3NpdGlvbi5lbnN1cmVMaW5lQm94ZXMoKTsKKworICAgIGF1dG8gcnVuQW5k
T2Zmc2V0ID0gcG9zaXRpb24uaW5saW5lUnVuQW5kT2Zmc2V0KGFmZmluaXR5KTsKKyAgICBtX3J1
biA9IHJ1bkFuZE9mZnNldC5ydW47CisgICAgbV9vZmZzZXQgPSBydW5BbmRPZmZzZXQub2Zmc2V0
OworICAgIGlmIChtX3J1bikKKyAgICAgICAgbV9yZW5kZXJlciA9ICZtX3J1bi0+cmVuZGVyZXIo
KTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVuZGVyZXIgPSByZW5kZXJlckZyb21Qb3NpdGlvbihw
b3NpdGlvbik7CiB9CiAKLUlubGluZUJveCogUmVuZGVyZWRQb3NpdGlvbjo6cHJldmlvdXNMZWFm
T25MaW5lKCkgY29uc3QKK0xheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvciBSZW5kZXJlZFBv
c2l0aW9uOjpwcmV2aW91c0xlYWZPbkxpbmUoKSBjb25zdAogewotICAgIGlmIChtX3ByZXZpb3Vz
TGVhZk9uTGluZSA9PSB1bmNhY2hlZElubGluZUJveCgpKQotICAgICAgICBtX3ByZXZpb3VzTGVh
Zk9uTGluZSA9IG1faW5saW5lQm94LT5wcmV2aW91c0xlYWZPbkxpbmVJZ25vcmluZ0xpbmVCcmVh
aygpOwotICAgIHJldHVybiBtX3ByZXZpb3VzTGVhZk9uTGluZTsKKyAgICBpZiAoIW1fcHJldmlv
dXNMZWFmT25MaW5lKQorICAgICAgICBtX3ByZXZpb3VzTGVhZk9uTGluZSA9IG1fcnVuLnByZXZp
b3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKKyAgICByZXR1cm4gKm1fcHJldmlvdXNMZWFm
T25MaW5lOwogfQogCi1JbmxpbmVCb3gqIFJlbmRlcmVkUG9zaXRpb246Om5leHRMZWFmT25MaW5l
KCkgY29uc3QKK0xheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvciBSZW5kZXJlZFBvc2l0aW9u
OjpuZXh0TGVhZk9uTGluZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fbmV4dExlYWZPbkxpbmUgPT0g
dW5jYWNoZWRJbmxpbmVCb3goKSkKLSAgICAgICAgbV9uZXh0TGVhZk9uTGluZSA9IG1faW5saW5l
Qm94LT5uZXh0TGVhZk9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7Ci0gICAgcmV0dXJuIG1fbmV4
dExlYWZPbkxpbmU7CisgICAgaWYgKCFtX25leHRMZWFmT25MaW5lKQorICAgICAgICBtX25leHRM
ZWFmT25MaW5lID0gbV9ydW4ubmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CisgICAgcmV0
dXJuICptX25leHRMZWFmT25MaW5lOwogfQogCiBib29sIFJlbmRlcmVkUG9zaXRpb246OmlzRXF1
aXZhbGVudChjb25zdCBSZW5kZXJlZFBvc2l0aW9uJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1
cm4gKG1fcmVuZGVyZXIgPT0gb3RoZXIubV9yZW5kZXJlciAmJiBtX2lubGluZUJveCA9PSBvdGhl
ci5tX2lubGluZUJveCAmJiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldCkKLSAgICAgICAgfHwg
KGF0TGVmdG1vc3RPZmZzZXRJbkJveCgpICYmIG90aGVyLmF0UmlnaHRtb3N0T2Zmc2V0SW5Cb3go
KSAmJiBwcmV2aW91c0xlYWZPbkxpbmUoKSA9PSBvdGhlci5tX2lubGluZUJveCkKLSAgICAgICAg
fHwgKGF0UmlnaHRtb3N0T2Zmc2V0SW5Cb3goKSAmJiBvdGhlci5hdExlZnRtb3N0T2Zmc2V0SW5C
b3goKSAmJiBuZXh0TGVhZk9uTGluZSgpID09IG90aGVyLm1faW5saW5lQm94KTsKKyAgICByZXR1
cm4gKG1fcmVuZGVyZXIgPT0gb3RoZXIubV9yZW5kZXJlciAmJiBtX3J1biA9PSBvdGhlci5tX3J1
biAmJiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldCkKKyAgICAgICAgfHwgKGF0TGVmdG1vc3RP
ZmZzZXRJbkJveCgpICYmIG90aGVyLmF0UmlnaHRtb3N0T2Zmc2V0SW5Cb3goKSAmJiBwcmV2aW91
c0xlYWZPbkxpbmUoKSA9PSBvdGhlci5tX3J1bikKKyAgICAgICAgfHwgKGF0UmlnaHRtb3N0T2Zm
c2V0SW5Cb3goKSAmJiBvdGhlci5hdExlZnRtb3N0T2Zmc2V0SW5Cb3goKSAmJiBuZXh0TGVhZk9u
TGluZSgpID09IG90aGVyLm1fcnVuKTsKIH0KIAogdW5zaWduZWQgY2hhciBSZW5kZXJlZFBvc2l0
aW9uOjpiaWRpTGV2ZWxPbkxlZnQoKSBjb25zdAogewotICAgIElubGluZUJveCogYm94ID0gYXRM
ZWZ0bW9zdE9mZnNldEluQm94KCkgPyBwcmV2aW91c0xlYWZPbkxpbmUoKSA6IG1faW5saW5lQm94
OwotICAgIHJldHVybiBib3ggPyBib3gtPmJpZGlMZXZlbCgpIDogMDsKKyAgICBhdXRvIHJ1biA9
IGF0TGVmdG1vc3RPZmZzZXRJbkJveCgpID8gcHJldmlvdXNMZWFmT25MaW5lKCkgOiBtX3J1bjsK
KyAgICByZXR1cm4gcnVuID8gcnVuLT5iaWRpTGV2ZWwoKSA6IDA7CiB9CiAKIHVuc2lnbmVkIGNo
YXIgUmVuZGVyZWRQb3NpdGlvbjo6YmlkaUxldmVsT25SaWdodCgpIGNvbnN0CiB7Ci0gICAgSW5s
aW5lQm94KiBib3ggPSBhdFJpZ2h0bW9zdE9mZnNldEluQm94KCkgPyBuZXh0TGVhZk9uTGluZSgp
IDogbV9pbmxpbmVCb3g7Ci0gICAgcmV0dXJuIGJveCA/IGJveC0+YmlkaUxldmVsKCkgOiAwOwor
ICAgIGF1dG8gcnVuID0gYXRSaWdodG1vc3RPZmZzZXRJbkJveCgpID8gbmV4dExlYWZPbkxpbmUo
KSA6IG1fcnVuOworICAgIHJldHVybiBydW4gPyBydW4tPmJpZGlMZXZlbCgpIDogMDsKIH0KIAog
UmVuZGVyZWRQb3NpdGlvbiBSZW5kZXJlZFBvc2l0aW9uOjpsZWZ0Qm91bmRhcnlPZkJpZGlSdW4o
dW5zaWduZWQgY2hhciBiaWRpTGV2ZWxPZlJ1bikKIHsKLSAgICBpZiAoIW1faW5saW5lQm94IHx8
IGJpZGlMZXZlbE9mUnVuID4gbV9pbmxpbmVCb3gtPmJpZGlMZXZlbCgpKQorICAgIGlmICghbV9y
dW4gfHwgYmlkaUxldmVsT2ZSdW4gPiBtX3J1bi0+YmlkaUxldmVsKCkpCiAgICAgICAgIHJldHVy
biBSZW5kZXJlZFBvc2l0aW9uKCk7CiAKLSAgICBJbmxpbmVCb3gqIGJveCA9IG1faW5saW5lQm94
OworICAgIGF1dG8gcnVuID0gbV9ydW47CiAgICAgZG8gewotICAgICAgICBJbmxpbmVCb3gqIHBy
ZXYgPSBib3gtPnByZXZpb3VzTGVhZk9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CisgICAgICAg
IGF1dG8gcHJldiA9IHJ1bi5wcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CiAgICAg
ICAgIGlmICghcHJldiB8fCBwcmV2LT5iaWRpTGV2ZWwoKSA8IGJpZGlMZXZlbE9mUnVuKQotICAg
ICAgICAgICAgcmV0dXJuIFJlbmRlcmVkUG9zaXRpb24oJmJveC0+cmVuZGVyZXIoKSwgYm94LCBi
b3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKSk7Ci0gICAgICAgIGJveCA9IHByZXY7Ci0gICAgfSB3
aGlsZSAoYm94KTsKKyAgICAgICAgICAgIHJldHVybiBSZW5kZXJlZFBvc2l0aW9uKCZydW4tPnJl
bmRlcmVyKCksIHJ1biwgcnVuLT5sZWZ0bW9zdENhcmV0T2Zmc2V0KCkpOworICAgICAgICBydW4g
PSBwcmV2OworICAgIH0gd2hpbGUgKHJ1bik7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gUmVuZGVyZWRQb3NpdGlvbigpOwpAQCAtMTM1LDE2ICsxNDksMTYgQEAgUmVu
ZGVyZWRQb3NpdGlvbiBSZW5kZXJlZFBvc2l0aW9uOjpsZWZ0Qm91bmRhcnlPZkJpZGlSdW4odW5z
aWduZWQgY2hhciBiaWRpTGV2ZWwKIAogUmVuZGVyZWRQb3NpdGlvbiBSZW5kZXJlZFBvc2l0aW9u
OjpyaWdodEJvdW5kYXJ5T2ZCaWRpUnVuKHVuc2lnbmVkIGNoYXIgYmlkaUxldmVsT2ZSdW4pCiB7
Ci0gICAgaWYgKCFtX2lubGluZUJveCB8fCBiaWRpTGV2ZWxPZlJ1biA+IG1faW5saW5lQm94LT5i
aWRpTGV2ZWwoKSkKKyAgICBpZiAoIW1fcnVuIHx8IGJpZGlMZXZlbE9mUnVuID4gbV9ydW4tPmJp
ZGlMZXZlbCgpKQogICAgICAgICByZXR1cm4gUmVuZGVyZWRQb3NpdGlvbigpOwogCi0gICAgSW5s
aW5lQm94KiBib3ggPSBtX2lubGluZUJveDsKKyAgICBhdXRvIHJ1biA9IG1fcnVuOwogICAgIGRv
IHsKLSAgICAgICAgSW5saW5lQm94KiBuZXh0ID0gYm94LT5uZXh0TGVhZk9uTGluZUlnbm9yaW5n
TGluZUJyZWFrKCk7CisgICAgICAgIGF1dG8gbmV4dCA9IHJ1bi5uZXh0T25MaW5lSWdub3JpbmdM
aW5lQnJlYWsoKTsKICAgICAgICAgaWYgKCFuZXh0IHx8IG5leHQtPmJpZGlMZXZlbCgpIDwgYmlk
aUxldmVsT2ZSdW4pCi0gICAgICAgICAgICByZXR1cm4gUmVuZGVyZWRQb3NpdGlvbigmYm94LT5y
ZW5kZXJlcigpLCBib3gsIGJveC0+Y2FyZXRSaWdodG1vc3RPZmZzZXQoKSk7Ci0gICAgICAgIGJv
eCA9IG5leHQ7Ci0gICAgfSB3aGlsZSAoYm94KTsKKyAgICAgICAgICAgIHJldHVybiBSZW5kZXJl
ZFBvc2l0aW9uKCZydW4tPnJlbmRlcmVyKCksIHJ1biwgcnVuLT5yaWdodG1vc3RDYXJldE9mZnNl
dCgpKTsKKyAgICAgICAgcnVuID0gbmV4dDsKKyAgICB9IHdoaWxlIChydW4pOwogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFJlbmRlcmVkUG9zaXRpb24oKTsKQEAgLTE1
MiwxOSArMTY2LDE5IEBAIFJlbmRlcmVkUG9zaXRpb24gUmVuZGVyZWRQb3NpdGlvbjo6cmlnaHRC
b3VuZGFyeU9mQmlkaVJ1bih1bnNpZ25lZCBjaGFyIGJpZGlMZXZlCiAKIGJvb2wgUmVuZGVyZWRQ
b3NpdGlvbjo6YXRMZWZ0Qm91bmRhcnlPZkJpZGlSdW4oU2hvdWxkTWF0Y2hCaWRpTGV2ZWwgc2hv
dWxkTWF0Y2hCaWRpTGV2ZWwsIHVuc2lnbmVkIGNoYXIgYmlkaUxldmVsT2ZSdW4pIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX2lubGluZUJveCkKKyAgICBpZiAoIW1fcnVuKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoYXRMZWZ0bW9zdE9mZnNldEluQm94KCkpIHsKICAgICAgICAgaWYg
KHNob3VsZE1hdGNoQmlkaUxldmVsID09IElnbm9yZUJpZGlMZXZlbCkKLSAgICAgICAgICAgIHJl
dHVybiAhcHJldmlvdXNMZWFmT25MaW5lKCkgfHwgcHJldmlvdXNMZWFmT25MaW5lKCktPmJpZGlM
ZXZlbCgpIDwgbV9pbmxpbmVCb3gtPmJpZGlMZXZlbCgpOwotICAgICAgICByZXR1cm4gbV9pbmxp
bmVCb3gtPmJpZGlMZXZlbCgpID49IGJpZGlMZXZlbE9mUnVuICYmICghcHJldmlvdXNMZWFmT25M
aW5lKCkgfHwgcHJldmlvdXNMZWFmT25MaW5lKCktPmJpZGlMZXZlbCgpIDwgYmlkaUxldmVsT2ZS
dW4pOworICAgICAgICAgICAgcmV0dXJuICFwcmV2aW91c0xlYWZPbkxpbmUoKSB8fCBwcmV2aW91
c0xlYWZPbkxpbmUoKS0+YmlkaUxldmVsKCkgPCBtX3J1bi0+YmlkaUxldmVsKCk7CisgICAgICAg
IHJldHVybiBtX3J1bi0+YmlkaUxldmVsKCkgPj0gYmlkaUxldmVsT2ZSdW4gJiYgKCFwcmV2aW91
c0xlYWZPbkxpbmUoKSB8fCBwcmV2aW91c0xlYWZPbkxpbmUoKS0+YmlkaUxldmVsKCkgPCBiaWRp
TGV2ZWxPZlJ1bik7CiAgICAgfQogCiAgICAgaWYgKGF0UmlnaHRtb3N0T2Zmc2V0SW5Cb3goKSkg
ewogICAgICAgICBpZiAoc2hvdWxkTWF0Y2hCaWRpTGV2ZWwgPT0gSWdub3JlQmlkaUxldmVsKQot
ICAgICAgICAgICAgcmV0dXJuIG5leHRMZWFmT25MaW5lKCkgJiYgbV9pbmxpbmVCb3gtPmJpZGlM
ZXZlbCgpIDwgbmV4dExlYWZPbkxpbmUoKS0+YmlkaUxldmVsKCk7Ci0gICAgICAgIHJldHVybiBu
ZXh0TGVhZk9uTGluZSgpICYmIG1faW5saW5lQm94LT5iaWRpTGV2ZWwoKSA8IGJpZGlMZXZlbE9m
UnVuICYmIG5leHRMZWFmT25MaW5lKCktPmJpZGlMZXZlbCgpID49IGJpZGlMZXZlbE9mUnVuOwor
ICAgICAgICAgICAgcmV0dXJuIG5leHRMZWFmT25MaW5lKCkgJiYgbV9ydW4tPmJpZGlMZXZlbCgp
IDwgbmV4dExlYWZPbkxpbmUoKS0+YmlkaUxldmVsKCk7CisgICAgICAgIHJldHVybiBuZXh0TGVh
Zk9uTGluZSgpICYmIG1fcnVuLT5iaWRpTGV2ZWwoKSA8IGJpZGlMZXZlbE9mUnVuICYmIG5leHRM
ZWFmT25MaW5lKCktPmJpZGlMZXZlbCgpID49IGJpZGlMZXZlbE9mUnVuOwogICAgIH0KIAogICAg
IHJldHVybiBmYWxzZTsKQEAgLTE3MiwxOSArMTg2LDE5IEBAIGJvb2wgUmVuZGVyZWRQb3NpdGlv
bjo6YXRMZWZ0Qm91bmRhcnlPZkJpZGlSdW4oU2hvdWxkTWF0Y2hCaWRpTGV2ZWwgc2hvdWxkTWF0
Y2hCCiAKIGJvb2wgUmVuZGVyZWRQb3NpdGlvbjo6YXRSaWdodEJvdW5kYXJ5T2ZCaWRpUnVuKFNo
b3VsZE1hdGNoQmlkaUxldmVsIHNob3VsZE1hdGNoQmlkaUxldmVsLCB1bnNpZ25lZCBjaGFyIGJp
ZGlMZXZlbE9mUnVuKSBjb25zdAogewotICAgIGlmICghbV9pbmxpbmVCb3gpCisgICAgaWYgKCFt
X3J1bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGF0UmlnaHRtb3N0T2Zmc2V0
SW5Cb3goKSkgewogICAgICAgICBpZiAoc2hvdWxkTWF0Y2hCaWRpTGV2ZWwgPT0gSWdub3JlQmlk
aUxldmVsKQotICAgICAgICAgICAgcmV0dXJuICFuZXh0TGVhZk9uTGluZSgpIHx8IG5leHRMZWFm
T25MaW5lKCktPmJpZGlMZXZlbCgpIDwgbV9pbmxpbmVCb3gtPmJpZGlMZXZlbCgpOwotICAgICAg
ICByZXR1cm4gbV9pbmxpbmVCb3gtPmJpZGlMZXZlbCgpID49IGJpZGlMZXZlbE9mUnVuICYmICgh
bmV4dExlYWZPbkxpbmUoKSB8fCBuZXh0TGVhZk9uTGluZSgpLT5iaWRpTGV2ZWwoKSA8IGJpZGlM
ZXZlbE9mUnVuKTsKKyAgICAgICAgICAgIHJldHVybiAhbmV4dExlYWZPbkxpbmUoKSB8fCBuZXh0
TGVhZk9uTGluZSgpLT5iaWRpTGV2ZWwoKSA8IG1fcnVuLT5iaWRpTGV2ZWwoKTsKKyAgICAgICAg
cmV0dXJuIG1fcnVuLT5iaWRpTGV2ZWwoKSA+PSBiaWRpTGV2ZWxPZlJ1biAmJiAoIW5leHRMZWFm
T25MaW5lKCkgfHwgbmV4dExlYWZPbkxpbmUoKS0+YmlkaUxldmVsKCkgPCBiaWRpTGV2ZWxPZlJ1
bik7CiAgICAgfQogCiAgICAgaWYgKGF0TGVmdG1vc3RPZmZzZXRJbkJveCgpKSB7CiAgICAgICAg
IGlmIChzaG91bGRNYXRjaEJpZGlMZXZlbCA9PSBJZ25vcmVCaWRpTGV2ZWwpCi0gICAgICAgICAg
ICByZXR1cm4gcHJldmlvdXNMZWFmT25MaW5lKCkgJiYgbV9pbmxpbmVCb3gtPmJpZGlMZXZlbCgp
IDwgcHJldmlvdXNMZWFmT25MaW5lKCktPmJpZGlMZXZlbCgpOwotICAgICAgICByZXR1cm4gcHJl
dmlvdXNMZWFmT25MaW5lKCkgJiYgbV9pbmxpbmVCb3gtPmJpZGlMZXZlbCgpIDwgYmlkaUxldmVs
T2ZSdW4gJiYgcHJldmlvdXNMZWFmT25MaW5lKCktPmJpZGlMZXZlbCgpID49IGJpZGlMZXZlbE9m
UnVuOworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzTGVhZk9uTGluZSgpICYmIG1fcnVuLT5i
aWRpTGV2ZWwoKSA8IHByZXZpb3VzTGVhZk9uTGluZSgpLT5iaWRpTGV2ZWwoKTsKKyAgICAgICAg
cmV0dXJuIHByZXZpb3VzTGVhZk9uTGluZSgpICYmIG1fcnVuLT5iaWRpTGV2ZWwoKSA8IGJpZGlM
ZXZlbE9mUnVuICYmIHByZXZpb3VzTGVhZk9uTGluZSgpLT5iaWRpTGV2ZWwoKSA+PSBiaWRpTGV2
ZWxPZlJ1bjsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTcsNyArMjExLDcgQEAg
UG9zaXRpb24gUmVuZGVyZWRQb3NpdGlvbjo6cG9zaXRpb25BdExlZnRCb3VuZGFyeU9mQmlEaVJ1
bigpIGNvbnN0CiAgICAgaWYgKGF0TGVmdG1vc3RPZmZzZXRJbkJveCgpKQogICAgICAgICByZXR1
cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihtX3JlbmRlcmVyLT5ub2RlKCksIG1fb2Zm
c2V0KTsKIAotICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKG5leHRMZWFm
T25MaW5lKCktPnJlbmRlcmVyKCkubm9kZSgpLCBuZXh0TGVhZk9uTGluZSgpLT5jYXJldExlZnRt
b3N0T2Zmc2V0KCkpOworICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKG5l
eHRMZWFmT25MaW5lKCktPnJlbmRlcmVyKCkubm9kZSgpLCBuZXh0TGVhZk9uTGluZSgpLT5sZWZ0
bW9zdENhcmV0T2Zmc2V0KCkpOwogfQogCiBQb3NpdGlvbiBSZW5kZXJlZFBvc2l0aW9uOjpwb3Np
dGlvbkF0UmlnaHRCb3VuZGFyeU9mQmlEaVJ1bigpIGNvbnN0CkBAIC0yMDcsNyArMjIxLDcgQEAg
UG9zaXRpb24gUmVuZGVyZWRQb3NpdGlvbjo6cG9zaXRpb25BdFJpZ2h0Qm91bmRhcnlPZkJpRGlS
dW4oKSBjb25zdAogICAgIGlmIChhdFJpZ2h0bW9zdE9mZnNldEluQm94KCkpCiAgICAgICAgIHJl
dHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKG1fcmVuZGVyZXItPm5vZGUoKSwgbV9v
ZmZzZXQpOwogCi0gICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJldmlv
dXNMZWFmT25MaW5lKCktPnJlbmRlcmVyKCkubm9kZSgpLCBwcmV2aW91c0xlYWZPbkxpbmUoKS0+
Y2FyZXRSaWdodG1vc3RPZmZzZXQoKSk7CisgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5
UG9zaXRpb24ocHJldmlvdXNMZWFmT25MaW5lKCktPnJlbmRlcmVyKCkubm9kZSgpLCBwcmV2aW91
c0xlYWZPbkxpbmUoKS0+cmlnaHRtb3N0Q2FyZXRPZmZzZXQoKSk7CiB9CiAKIEludFJlY3QgUmVu
ZGVyZWRQb3NpdGlvbjo6YWJzb2x1dGVSZWN0KExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9m
TGluZSkgY29uc3QKQEAgLTIxNSwxMyArMjI5LDEzIEBAIEludFJlY3QgUmVuZGVyZWRQb3NpdGlv
bjo6YWJzb2x1dGVSZWN0KExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgY29uc3QK
ICAgICBpZiAoaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CiAKLSAgICBJbnRS
ZWN0IGxvY2FsUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1fcmVuZGVyZXItPmxvY2FsQ2FyZXRSZWN0
KG1faW5saW5lQm94LCBtX29mZnNldCwgZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKSk7CisgICAgSW50
UmVjdCBsb2NhbFJlY3QgPSBzbmFwcGVkSW50UmVjdChjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+
KG1fcmVuZGVyZXIpLT5sb2NhbENhcmV0UmVjdChtX3J1bi0+bGVnYWN5SW5saW5lQm94KCksIG1f
b2Zmc2V0LCBleHRyYVdpZHRoVG9FbmRPZkxpbmUpKTsKICAgICByZXR1cm4gbG9jYWxSZWN0ID09
IEludFJlY3QoKSA/IEludFJlY3QoKSA6IG1fcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQo
RmxvYXRSZWN0KGxvY2FsUmVjdCkpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CiB9CiAKLWJvb2wg
cmVuZGVyT2JqZWN0Q29udGFpbnNQb3NpdGlvbihSZW5kZXJPYmplY3QqIHRhcmdldCwgY29uc3Qg
UG9zaXRpb24mIHBvc2l0aW9uKQorYm9vbCByZW5kZXJPYmplY3RDb250YWluc1Bvc2l0aW9uKGNv
bnN0IFJlbmRlck9iamVjdCogdGFyZ2V0LCBjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7Ci0g
ICAgZm9yIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcmVuZGVyZXJGcm9tUG9zaXRpb24ocG9z
aXRpb24pOyByZW5kZXJlciAmJiByZW5kZXJlci0+bm9kZSgpOyByZW5kZXJlciA9IHJlbmRlcmVy
LT5wYXJlbnQoKSkgeworICAgIGZvciAoYXV0byogcmVuZGVyZXIgPSByZW5kZXJlckZyb21Qb3Np
dGlvbihwb3NpdGlvbik7IHJlbmRlcmVyICYmIHJlbmRlcmVyLT5ub2RlKCk7IHJlbmRlcmVyID0g
cmVuZGVyZXItPnBhcmVudCgpKSB7CiAgICAgICAgIGlmIChyZW5kZXJlciA9PSB0YXJnZXQpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVu
ZGVyZWRQb3NpdGlvbi5oCmluZGV4IDZhNTQ0ZDUwODk2MC4uOTEyZjJmYjU1MzU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaApAQCAtMzAsNyArMzAsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIklubGluZUJveC5oIgorI2luY2x1ZGUgIkxheW91
dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0VxdWl2YWxlbnQoY29uc3QgUmVuZGVyZWRQb3NpdGlvbiYpIGNvbnN0OwogCiAgICAgYm9vbCBp
c051bGwoKSBjb25zdCB7IHJldHVybiAhbV9yZW5kZXJlcjsgfQotICAgIFJvb3RJbmxpbmVCb3gq
IHJvb3RCb3goKSB7IHJldHVybiBtX2lubGluZUJveCA/ICZtX2lubGluZUJveC0+cm9vdCgpIDog
MDsgfQorICAgIFJvb3RJbmxpbmVCb3gqIHJvb3RCb3goKSB7IHJldHVybiBtX3J1biA/ICZtX3J1
bi0+bGVnYWN5SW5saW5lQm94KCktPnJvb3QoKSA6IG51bGxwdHI7IH0KIAogICAgIHVuc2lnbmVk
IGNoYXIgYmlkaUxldmVsT25MZWZ0KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgY2hhciBiaWRpTGV2
ZWxPblJpZ2h0KCkgY29uc3Q7CkBAIC03MCw0MiArNzAsMjMgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZW5kZXJlZFBvc2l0aW9uJikgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBleHBsaWNpdCBSZW5kZXJlZFBvc2l0aW9uKFJlbmRlck9iamVj
dCosIElubGluZUJveCosIGludCBvZmZzZXQpOworICAgIGV4cGxpY2l0IFJlbmRlcmVkUG9zaXRp
b24oY29uc3QgUmVuZGVyT2JqZWN0KiwgTGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yLCB1
bnNpZ25lZCBvZmZzZXQpOwogCi0gICAgSW5saW5lQm94KiBwcmV2aW91c0xlYWZPbkxpbmUoKSBj
b25zdDsKLSAgICBJbmxpbmVCb3gqIG5leHRMZWFmT25MaW5lKCkgY29uc3Q7Ci0gICAgYm9vbCBh
dExlZnRtb3N0T2Zmc2V0SW5Cb3goKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveCAmJiBtX29m
ZnNldCA9PSBtX2lubGluZUJveC0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgpOyB9Ci0gICAgYm9vbCBh
dFJpZ2h0bW9zdE9mZnNldEluQm94KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3ggJiYgbV9v
ZmZzZXQgPT0gbV9pbmxpbmVCb3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCk7IH0KKyAgICBMYXlv
dXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3IgcHJldmlvdXNMZWFmT25MaW5lKCkgY29uc3Q7Cisg
ICAgTGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yIG5leHRMZWFmT25MaW5lKCkgY29uc3Q7
CisgICAgYm9vbCBhdExlZnRtb3N0T2Zmc2V0SW5Cb3goKSBjb25zdCB7IHJldHVybiBtX3J1biAm
JiBtX29mZnNldCA9PSBtX3J1bi0+bGVmdG1vc3RDYXJldE9mZnNldCgpOyB9CisgICAgYm9vbCBh
dFJpZ2h0bW9zdE9mZnNldEluQm94KCkgY29uc3QgeyByZXR1cm4gbV9ydW4gJiYgbV9vZmZzZXQg
PT0gbV9ydW4tPnJpZ2h0bW9zdENhcmV0T2Zmc2V0KCk7IH0KICAgICBib29sIGF0TGVmdEJvdW5k
YXJ5T2ZCaWRpUnVuKFNob3VsZE1hdGNoQmlkaUxldmVsLCB1bnNpZ25lZCBjaGFyIGJpZGlMZXZl
bE9mUnVuKSBjb25zdDsKICAgICBib29sIGF0UmlnaHRCb3VuZGFyeU9mQmlkaVJ1bihTaG91bGRN
YXRjaEJpZGlMZXZlbCwgdW5zaWduZWQgY2hhciBiaWRpTGV2ZWxPZlJ1bikgY29uc3Q7CiAKLSAg
ICBzdGF0aWMgSW5saW5lQm94KiB1bmNhY2hlZElubGluZUJveCgpIHsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8SW5saW5lQm94Kj4oMSk7IH0KLSAgICAvLyBOZWVkcyB0byBiZSBkaWZmZXJlbnQg
Zm9ybSAwIHNvIHBpY2sgMSBiZWNhdXNlIGl0J3MgYWxzbyBvbiB0aGUgbnVsbCBwYWdlLgorICAg
IGNvbnN0IFJlbmRlck9iamVjdCogbV9yZW5kZXJlciB7IG51bGxwdHIgfTsKKyAgICBMYXlvdXRJ
bnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3IgbV9ydW47CisgICAgdW5zaWduZWQgbV9vZmZzZXQgeyAw
IH07CiAKLSAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXIgeyBudWxscHRyIH07Ci0gICAgSW5s
aW5lQm94KiBtX2lubGluZUJveCB7IG51bGxwdHIgfTsKLSAgICBpbnQgbV9vZmZzZXQgeyAwIH07
Ci0KLSAgICBtdXRhYmxlIElubGluZUJveCogbV9wcmV2aW91c0xlYWZPbkxpbmUgeyBudWxscHRy
IH07Ci0gICAgbXV0YWJsZSBJbmxpbmVCb3gqIG1fbmV4dExlYWZPbkxpbmUgeyBudWxscHRyIH07
CisgICAgbXV0YWJsZSBPcHRpb25hbDxMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3I+IG1f
cHJldmlvdXNMZWFmT25MaW5lOworICAgIG11dGFibGUgT3B0aW9uYWw8TGF5b3V0SW50ZWdyYXRp
b246OlJ1bkl0ZXJhdG9yPiBtX25leHRMZWFmT25MaW5lOwogfTsKIAotaW5saW5lIFJlbmRlcmVk
UG9zaXRpb246OlJlbmRlcmVkUG9zaXRpb24oKQotICAgIDogbV9vZmZzZXQoMCkKLSAgICAsIG1f
cHJldmlvdXNMZWFmT25MaW5lKHVuY2FjaGVkSW5saW5lQm94KCkpCi0gICAgLCBtX25leHRMZWFm
T25MaW5lKHVuY2FjaGVkSW5saW5lQm94KCkpCi17Ci19Ci0KLWlubGluZSBSZW5kZXJlZFBvc2l0
aW9uOjpSZW5kZXJlZFBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIElubGluZUJveCog
Ym94LCBpbnQgb2Zmc2V0KQotICAgIDogbV9yZW5kZXJlcihyZW5kZXJlcikKLSAgICAsIG1faW5s
aW5lQm94KGJveCkKLSAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICAsIG1fcHJldmlvdXNMZWFm
T25MaW5lKHVuY2FjaGVkSW5saW5lQm94KCkpCi0gICAgLCBtX25leHRMZWFmT25MaW5lKHVuY2Fj
aGVkSW5saW5lQm94KCkpCi17Ci19Ci0KLWJvb2wgcmVuZGVyT2JqZWN0Q29udGFpbnNQb3NpdGlv
bihSZW5kZXJPYmplY3QqLCBjb25zdCBQb3NpdGlvbiYpOworYm9vbCByZW5kZXJPYmplY3RDb250
YWluc1Bvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFBvc2l0aW9uJik7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5j
cHAKaW5kZXggNjRmOThiMzY3MDU3Li4yYzE5OGVlZWY0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbklubGluZUNvbnRlbnQuY3BwCkBAIC0yOCwxMiArMjgsMTggQEAKIAogI2lmIEVOQUJMRShM
QVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1
ZGUgIlRleHRQYWludGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlv
dXRJbnRlZ3JhdGlvbiB7CiAKK0lubGluZUNvbnRlbnQ6OklubGluZUNvbnRlbnQoY29uc3QgTGlu
ZUxheW91dCYgbGluZUxheW91dCkKKyAgICA6IG1fbGluZUxheW91dChtYWtlV2Vha1B0cihsaW5l
TGF5b3V0KSkKK3sKK30KKwogV1RGOjpJdGVyYXRvclJhbmdlPGNvbnN0IFJ1bio+IElubGluZUNv
bnRlbnQ6OnJ1bnNGb3JSZWN0KGNvbnN0IExheW91dFJlY3QmKSBjb25zdAogewogICAgIC8vIEZJ
WE1FOiBEbyBzb21ldGhpbmcgZWZmaWNpZW50IGUuZy4gdXNpbmcgbGluZSBib3hlcy4KQEAgLTUw
LDYgKzU2LDE3IEBAIElubGluZUNvbnRlbnQ6On5JbmxpbmVDb250ZW50KCkKICAgICB9CiB9CiAK
K2NvbnN0IExpbmVMYXlvdXQmIElubGluZUNvbnRlbnQ6OmxpbmVMYXlvdXQoKSBjb25zdAorewor
ICAgIHJldHVybiAqbV9saW5lTGF5b3V0OworfQorCitjb25zdCBSZW5kZXJPYmplY3QqIElubGlu
ZUNvbnRlbnQ6OnJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRC
b3gpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGluZUxheW91dC0+cmVuZGVyZXJGb3JMYXlvdXRC
b3gobGF5b3V0Qm94KTsKK30KKworCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNv
bnRlbnQuaAppbmRleCA3YjY0MjAwYjIzNDUuLjhkNmZjNjQ1NDE0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29u
dGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbklubGluZUNvbnRlbnQuaApAQCAtMzEsMTIgKzMxLDIyIEBACiAjaW5jbHVkZSAiTGF5
b3V0SW50ZWdyYXRpb25SdW4uaCIKICNpbmNsdWRlIDx3dGYvSXRlcmF0b3JSYW5nZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlck9iamVjdDsKKworbmFtZXNwYWNlIExheW91dCB7
CitjbGFzcyBCb3g7Cit9CisKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKK2NsYXNz
IExpbmVMYXlvdXQ7CisKIHN0cnVjdCBJbmxpbmVDb250ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8
SW5saW5lQ29udGVudD4gewotICAgIHN0YXRpYyBSZWY8SW5saW5lQ29udGVudD4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmxpbmVDb250ZW50KTsgfQorICAgIHN0YXRpYyBSZWY8
SW5saW5lQ29udGVudD4gY3JlYXRlKGNvbnN0IExpbmVMYXlvdXQmIGxpbmVMYXlvdXQpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSW5saW5lQ29udGVudChsaW5lTGF5b3V0KSk7IH0KICAgICB+SW5s
aW5lQ29udGVudCgpOwogCiAgICAgdXNpbmcgUnVucyA9IFZlY3RvcjxSdW4sIDQ+OwpAQCAtNDks
OCArNTksMTMgQEAgc3RydWN0IElubGluZUNvbnRlbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxJbmxp
bmVDb250ZW50PiB7CiAgICAgV1RGOjpJdGVyYXRvclJhbmdlPGNvbnN0IFJ1bio+IHJ1bnNGb3JS
ZWN0KGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKICAgICB2b2lkIHNocmlua1RvRml0KCk7CiAK
KyAgICBjb25zdCBMaW5lTGF5b3V0JiBsaW5lTGF5b3V0KCkgY29uc3Q7CisgICAgY29uc3QgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYpIGNvbnN0
OworCiBwcml2YXRlOgotICAgIElubGluZUNvbnRlbnQoKSA9IGRlZmF1bHQ7CisgICAgSW5saW5l
Q29udGVudChjb25zdCBMaW5lTGF5b3V0Jik7CisKKyAgICBXZWFrUHRyPGNvbnN0IExpbmVMYXlv
dXQ+IG1fbGluZUxheW91dDsKIH07CiAKIGlubGluZSB2b2lkIElubGluZUNvbnRlbnQ6OnNocmlu
a1RvRml0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggOWRkZjJhY2Rk
ZDYwLi4yYWYyZGRmZTM0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBA
IC0yODksNyArMjg5LDcgQEAgdm9pZCBMaW5lTGF5b3V0Ojpjb2xsZWN0T3ZlcmZsb3coUmVuZGVy
QmxvY2tGbG93JiBmbG93KQogSW5saW5lQ29udGVudCYgTGluZUxheW91dDo6ZW5zdXJlSW5saW5l
Q29udGVudCgpCiB7CiAgICAgaWYgKCFtX2lubGluZUNvbnRlbnQpCi0gICAgICAgIG1faW5saW5l
Q29udGVudCA9IElubGluZUNvbnRlbnQ6OmNyZWF0ZSgpOworICAgICAgICBtX2lubGluZUNvbnRl
bnQgPSBJbmxpbmVDb250ZW50OjpjcmVhdGUoKnRoaXMpOwogICAgIHJldHVybiAqbV9pbmxpbmVD
b250ZW50OwogfQogCkBAIC0zMzAsNiArMzMwLDExIEBAIFJ1bkl0ZXJhdG9yIExpbmVMYXlvdXQ6
OnJ1bkZvcihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50KSBjb25zdAogICAgIHJl
dHVybiB7IH07CiB9CiAKK2NvbnN0IFJlbmRlck9iamVjdCogTGluZUxheW91dDo6cmVuZGVyZXJG
b3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9ib3hUcmVlLnJlbmRlcmVyRm9yTGF5b3V0Qm94KGxheW91dEJveCk7Cit9CisKIGNv
bnN0IExheW91dDo6Q29udGFpbmVyQm94JiBMaW5lTGF5b3V0Ojpyb290TGF5b3V0Qm94KCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9ib3hUcmVlLnJvb3RMYXlvdXRCb3goKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVM
YXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuaAppbmRleCBiYjRlOGJiNWU1MDQuLmZlMDVlNjBkMThmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkxh
eW91dFBvaW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJSZW5kZXJP
YmplY3RFbnVtcy5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDcsNyArNDgsNyBAQCBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewog
CiBzdHJ1Y3QgSW5saW5lQ29udGVudDsKIAotY2xhc3MgTGluZUxheW91dCB7CitjbGFzcyBMaW5l
TGF5b3V0IDogcHVibGljIENhbk1ha2VXZWFrUHRyPExpbmVMYXlvdXQ+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaW5lTGF5b3V0KGNvbnN0IFJlbmRlckJs
b2NrRmxvdyYpOwpAQCAtNzgsNiArNzksOCBAQCBwdWJsaWM6CiAgICAgVGV4dFJ1bkl0ZXJhdG9y
IHRleHRSdW5zRm9yKGNvbnN0IFJlbmRlclRleHQmKSBjb25zdDsKICAgICBSdW5JdGVyYXRvciBy
dW5Gb3IoY29uc3QgUmVuZGVyRWxlbWVudCYpIGNvbnN0OwogCisgICAgY29uc3QgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYpIGNvbnN0OworCiAg
ICAgc3RhdGljIHZvaWQgcmVsZWFzZUNhY2hlcyhSZW5kZXJWaWV3Jik7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25QYWdpbmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvblBhZ2luYXRpb24uY3BwCmluZGV4IGI3NzkwN2NlMjIwMi4uMTRjZGY1
OTc0ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25QYWdpbmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0aW9uLmNwcApAQCAtMTQ3LDcgKzE0
Nyw3IEBAIHN0YXRpYyBSZWY8SW5saW5lQ29udGVudD4gbWFrZUFkanVzdGVkQ29udGVudChjb25z
dCBJbmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50CiAgICAgICAgIH07CiAgICAgfTsKIAotICAg
IGF1dG8gYWRqdXN0ZWRDb250ZW50ID0gSW5saW5lQ29udGVudDo6Y3JlYXRlKCk7CisgICAgYXV0
byBhZGp1c3RlZENvbnRlbnQgPSBJbmxpbmVDb250ZW50OjpjcmVhdGUoaW5saW5lQ29udGVudC5s
aW5lTGF5b3V0KCkpOwogCiAgICAgZm9yIChzaXplX3QgbGluZUluZGV4ID0gMDsgbGluZUluZGV4
IDwgaW5saW5lQ29udGVudC5saW5lcy5zaXplKCk7ICsrbGluZUluZGV4KQogICAgICAgICBhZGp1
c3RlZENvbnRlbnQtPmxpbmVzLmFwcGVuZChhZGp1c3RlZExpbmUoaW5saW5lQ29udGVudC5saW5l
c1tsaW5lSW5kZXhdLCBhZGp1c3RtZW50c1tsaW5lSW5kZXhdKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
UnVuSXRlcmF0b3IuaAppbmRleCA2ZmVmN2U5ZTAwYzAuLmQwZjEyMGZmYWE5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVu
SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFJlbmRlckxpbmVCcmVhazsKK2NsYXNzIFJlbmRlck9iamVjdDsKIGNs
YXNzIFJlbmRlclRleHQ7CiAKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CkBAIC03NSw2
ICs3Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb25TYW1lTGluZShjb25zdCBQYXRoUnVuJikg
Y29uc3Q7CiAKKyAgICBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKCkgY29uc3Q7CisKICAg
ICAvLyBGb3IgaW50ZXJtZWRpYXRlIHBvcnRpbmcgc3RlcHMgb25seS4KICAgICBJbmxpbmVCb3gq
IGxlZ2FjeUlubGluZUJveCgpIGNvbnN0OwogCkBAIC0yODEsNiArMjg0LDEzIEBAIGlubGluZSBi
b29sIFBhdGhSdW46Om9uU2FtZUxpbmUoY29uc3QgUGF0aFJ1biYgb3RoZXIpIGNvbnN0CiAgICAg
fSk7CiB9CiAKK2lubGluZSBjb25zdCBSZW5kZXJPYmplY3QmIFBhdGhSdW46OnJlbmRlcmVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRv
JiBwYXRoKSAtPiBjb25zdCBSZW5kZXJPYmplY3QmIHsKKyAgICAgICAgcmV0dXJuIHBhdGgucmVu
ZGVyZXIoKTsKKyAgICB9KTsKK30KKwogaW5saW5lIElubGluZUJveCogUGF0aFJ1bjo6bGVnYWN5
SW5saW5lQm94KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJp
YW50LCBbXShhdXRvJiBwYXRoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJh
dG9yTGVnYWN5UGF0aC5oCmluZGV4IDM2ODg3ZmJiOWU2OC4uNTM5ODA3NWFiYWYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25S
dW5JdGVyYXRvckxlZ2FjeVBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaApAQCAtNjUsMTIg
KzY1LDE3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsb2NhbEVuZE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIGlubGluZVRleHRCb3goKS0+ZW5kKCk7IH0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBpbmxpbmVUZXh0Qm94KCktPmxlbigpOyB9CiAKLSAgICBpbmxpbmUgYm9v
bCBpc0xhc3RUZXh0UnVuT25MaW5lKCkgY29uc3QKKyAgICBib29sIGlzTGFzdFRleHRSdW5Pbkxp
bmUoKSBjb25zdAogICAgIHsKICAgICAgICAgYXV0byogbmV4dCA9IG5leHRJbmxpbmVUZXh0Qm94
SW5UZXh0T3JkZXIoKTsKICAgICAgICAgcmV0dXJuICFuZXh0IHx8ICZpbmxpbmVUZXh0Qm94KCkt
PnJvb3QoKSAhPSAmbmV4dC0+cm9vdCgpOwogICAgIH0KLSAgICBpbmxpbmUgYm9vbCBpc0xhc3RU
ZXh0UnVuKCkgY29uc3QgeyByZXR1cm4gIW5leHRJbmxpbmVUZXh0Qm94SW5UZXh0T3JkZXIoKTsg
fTsKKyAgICBib29sIGlzTGFzdFRleHRSdW4oKSBjb25zdCB7IHJldHVybiAhbmV4dElubGluZVRl
eHRCb3hJblRleHRPcmRlcigpOyB9OworCisgICAgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJl
cigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pbmxpbmVCb3gtPnJlbmRlcmVyKCk7
CisgICAgfQogCiAgICAgdm9pZCB0cmF2ZXJzZU5leHRUZXh0UnVuKCkgeyBtX2lubGluZUJveCA9
IGlubGluZVRleHRCb3goKS0+bmV4dFRleHRCb3goKTsgfQogICAgIHZvaWQgdHJhdmVyc2VOZXh0
VGV4dFJ1bkluVGV4dE9yZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0
b3JNb2Rlcm5QYXRoLmgKaW5kZXggYzAyOTA1NTkyZTJjLi45MDE0Mjk3OGM5OWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1
bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCkBAIC05OSw2ICs5
OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAmcnVuKCkubGF5b3V0Qm94KCkgIT0gJnJ1
bnMoKVttX3J1bkluZGV4ICsgMV0ubGF5b3V0Qm94KCk7CiAgICAgfTsKIAorICAgIGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICptX2lu
bGluZUNvbnRlbnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KHJ1bigpLmxheW91dEJveCgpKTsKKyAg
ICB9CisKICAgICB2b2lkIHRyYXZlcnNlTmV4dFRleHRSdW4oKQogICAgIHsKICAgICAgICAgQVNT
RVJUKCFhdEVuZCgpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>