<?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>219152</bug_id>
          
          <creation_ts>2020-11-19 02:55:47 -0800</creation_ts>
          <short_desc>[LFC][Integration] nextLinePosition should use iterator</short_desc>
          <delta_ts>2020-11-19 06:18:16 -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>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>1709023</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-19 02:55:47 -0800</bug_when>
    <thetext>In VisibleUnits.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709024</commentid>
    <comment_count>1</comment_count>
      <attachid>414558</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-19 03:00:35 -0800</bug_when>
    <thetext>Created attachment 414558
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709068</commentid>
    <comment_count>2</comment_count>
      <attachid>414558</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-11-19 06:03:56 -0800</bug_when>
    <thetext>Comment on attachment 414558
patch

very nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709071</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-19 06:17:35 -0800</bug_when>
    <thetext>Committed r270025: &lt;https://trac.webkit.org/changeset/270025&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414558.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709072</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-19 06:18:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/71584839&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414558</attachid>
            <date>2020-11-19 03:00:35 -0800</date>
            <delta_ts>2020-11-19 06:17:36 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-visible-units.patch</filename>
            <type>text/plain</type>
            <size>25431</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMzhkNmNmMWNlMTguLjAxNDQxMDZmYzU1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ4IEBACisyMDIwLTExLTE5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gbmV4dExpbmVQb3NpdGlvbiBzaG91bGQg
dXNlIGl0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTkxNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgbGFzdCBtYWpvciBwaWVjZSBvZiBkaXJlY3QgSW5saW5lQm94IGFjY2VzcyBpbiBl
ZGl0aW5nIGNvZGUuCisKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lQm94QW5kT2Zmc2V0OjpJbmxpbmVCb3hBbmRPZmZzZXQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmlubGluZUJveEFuZE9mZnNldCBjb25zdCk6IERl
bGV0ZWQuCisKKyAgICAgICAgTm8gbG9uZ2VyIG5lZWRlZC4KKworICAgICAgICAqIGRvbS9Qb3Np
dGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnByZXZpb3VzTGluZUNhbmRpZGF0ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Om5leHRMaW5lQ2FuZGlkYXRlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6aXNUZXh0T3JM
aW5lQnJlYWtSdW4pOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNUZXh0T3JMaW5lQnJlYWtS
dW4pOgorICAgICAgICAoV2ViQ29yZTo6bmV4dFRleHRPckxpbmVCcmVha1J1bik6CisgICAgICAg
IChXZWJDb3JlOjpzdGFydFRleHRPckxpbmVCcmVha1J1bik6CisgICAgICAgIChXZWJDb3JlOjpl
bmRUZXh0T3JMaW5lQnJlYWtSdW4pOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5UHJldmlv
dXNSdW4pOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5TmV4dFJ1bik6CisgICAgICAgIChX
ZWJDb3JlOjp3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OndvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6dmlzdWFsV29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnByZXZp
b3VzTGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRMaW5lUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNSb290SW5saW5lQm94Q2FuZGlkYXRlUG9zaXRpb24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmV4dFJvb3RJbmxpbmVCb3hDYW5kaWRhdGVQ
b3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMb2dpY2FsbHlPcmRl
cmVkTGVhZkJveGVzOjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZExvZ2ljYWxseU9yZGVyZWRMZWFmQm94ZXM6OmZpcnN0Qm94IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZExvZ2ljYWxseU9yZGVyZWRMZWFmQm94ZXM6OkNhY2hl
ZExvZ2ljYWxseU9yZGVyZWRMZWFmQm94ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlczo6cHJldmlvdXNUZXh0T3JMaW5lQnJlYWtC
b3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTG9naWNhbGx5T3JkZXJlZExl
YWZCb3hlczo6bmV4dFRleHRPckxpbmVCcmVha0JveCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzOjpib3hJbmRleEluTGVhdmVzIGNv
bnN0KTogRGVsZXRlZC4KKworICAgICAgICBUaGUgaXRlcmFyYXRvciBoYW5kbGVzIGxvZ2ljYWwg
b3JkZXIgY2FjaGluZyBmb3IgSW5saW5lQm94ZXMsIG5vIG5lZWQgZm9yIGEgc2VwYXJhdGUgY2Fj
aGUuCisKKyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxseVByZXZpb3VzQm94KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxseU5leHRCb3gpOiBEZWxldGVkLgorCiAyMDIwLTEx
LTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLiBGaXggdGhlIGJ1aWxkIHdpdGggR0NDIDEwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmNwcAppbmRleCAzOGU2OTgwY2ViY2YuLmMyZDkyNjM0MDhlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b24uY3BwCkBAIC0xMDMsMTIgKzEwMyw2IEBAIHN0YXRpYyBOb2RlKiBwcmV2aW91c1JlbmRlcmVk
RWRpdGFibGUoTm9kZSogbm9kZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSW5saW5lQm94
QW5kT2Zmc2V0OjpJbmxpbmVCb3hBbmRPZmZzZXQoSW5saW5lUnVuQW5kT2Zmc2V0IHJ1bkFuZE9m
ZnNldCkKLSAgICA6IGJveChydW5BbmRPZmZzZXQucnVuID8gcnVuQW5kT2Zmc2V0LnJ1bi0+bGVn
YWN5SW5saW5lQm94KCkgOiBudWxscHRyKQotICAgICwgb2Zmc2V0KHJ1bkFuZE9mZnNldC5vZmZz
ZXQpCi17Ci19Ci0KIFBvc2l0aW9uOjpQb3NpdGlvbihOb2RlKiBhbmNob3JOb2RlLCB1bnNpZ25l
ZCBvZmZzZXQsIExlZ2FjeUVkaXRpbmdQb3NpdGlvbkZsYWcpCiAgICAgOiBtX2FuY2hvck5vZGUo
YW5jaG9yTm9kZSkKICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKQEAgLTEzNjksMTggKzEzNjMsNiBA
QCBJbmxpbmVSdW5BbmRPZmZzZXQgUG9zaXRpb246OmlubGluZVJ1bkFuZE9mZnNldChBZmZpbml0
eSBhZmZpbml0eSwgVGV4dERpcmVjdGlvbgogICAgIHJldHVybiB7IHJ1biwgY2FyZXRPZmZzZXQg
fTsKIH0KIAotSW5saW5lQm94QW5kT2Zmc2V0IFBvc2l0aW9uOjppbmxpbmVCb3hBbmRPZmZzZXQo
QWZmaW5pdHkgYWZmaW5pdHkpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlubGluZUJveEFuZE9mZnNl
dChhZmZpbml0eSwgcHJpbWFyeURpcmVjdGlvbigpKTsKLX0KLQotSW5saW5lQm94QW5kT2Zmc2V0
IFBvc2l0aW9uOjppbmxpbmVCb3hBbmRPZmZzZXQoQWZmaW5pdHkgYWZmaW5pdHksIFRleHREaXJl
Y3Rpb24gcHJpbWFyeURpcmVjdGlvbikgY29uc3QKLXsKLSAgICBlbnN1cmVMaW5lQm94ZXMoKTsK
LQotICAgIHJldHVybiB7IGlubGluZVJ1bkFuZE9mZnNldChhZmZpbml0eSwgcHJpbWFyeURpcmVj
dGlvbikgfTsKLX0KLQogdm9pZCBQb3NpdGlvbjo6ZW5zdXJlTGluZUJveGVzKCkgY29uc3QKIHsK
ICAgICBhdXRvIG5vZGUgPSBkZXByZWNhdGVkTm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAppbmRl
eCAxZTRmOTdkNDBmY2IuLmI0YzA3MmZiZWU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTUx
LDEzICs1MSw2IEBAIGVudW0gUG9zaXRpb25Nb3ZlVHlwZSB7CiAKIHN0cnVjdCBJbmxpbmVSdW5B
bmRPZmZzZXQ7CiAKLXN0cnVjdCBJbmxpbmVCb3hBbmRPZmZzZXQgewotICAgIElubGluZUJveEFu
ZE9mZnNldChJbmxpbmVSdW5BbmRPZmZzZXQpOwotCi0gICAgSW5saW5lQm94KiBib3ggeyBudWxs
cHRyIH07Ci0gICAgaW50IG9mZnNldCB7IDAgfTsKLX07Ci0KIGNsYXNzIFBvc2l0aW9uIHsKIHB1
YmxpYzoKICAgICBlbnVtIEFuY2hvclR5cGUgewpAQCAtMTc5LDkgKzE3Miw2IEBAIHB1YmxpYzoK
ICAgICBJbmxpbmVSdW5BbmRPZmZzZXQgaW5saW5lUnVuQW5kT2Zmc2V0KEFmZmluaXR5KSBjb25z
dDsKICAgICBJbmxpbmVSdW5BbmRPZmZzZXQgaW5saW5lUnVuQW5kT2Zmc2V0KEFmZmluaXR5LCBU
ZXh0RGlyZWN0aW9uIHByaW1hcnlEaXJlY3Rpb24pIGNvbnN0OwogCi0gICAgSW5saW5lQm94QW5k
T2Zmc2V0IGlubGluZUJveEFuZE9mZnNldChBZmZpbml0eSkgY29uc3Q7Ci0gICAgSW5saW5lQm94
QW5kT2Zmc2V0IGlubGluZUJveEFuZE9mZnNldChBZmZpbml0eSwgVGV4dERpcmVjdGlvbiBwcmlt
YXJ5RGlyZWN0aW9uKSBjb25zdDsKLQogICAgIFRleHREaXJlY3Rpb24gcHJpbWFyeURpcmVjdGlv
bigpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHBvc2l0aW9ucyB0aGF0
IGV4aXN0IGJldHdlZW4gdHdvIHBvc2l0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVVuaXRzLmNwcAppbmRleCBlOTZlMTQxYzdkNmEuLjk5OTkwY2RmNGM0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMiw3ICszMiw4IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKLSNpbmNsdWRlICJJbmxp
bmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaCIK
KyNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTm9k
ZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tG
bG93LmgiCkBAIC03OCw3ICs3OSw3IEBAIHN0YXRpYyBOb2RlKiBuZXh0TGVhZldpdGhTYW1lRWRp
dGFiaWxpdHkoTm9kZSogbm9kZSwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSkKIH0KIAogLy8g
RklYTUU6IGNvbnNvbGlkYXRlIHdpdGggY29kZSBpbiBwcmV2aW91c0xpbmVQb3NpdGlvbi4KLXN0
YXRpYyBQb3NpdGlvbiBwcmV2aW91c1Jvb3RJbmxpbmVCb3hDYW5kaWRhdGVQb3NpdGlvbihOb2Rl
KiBub2RlLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgRWRpdGFibGVU
eXBlIGVkaXRhYmxlVHlwZSkKK3N0YXRpYyBQb3NpdGlvbiBwcmV2aW91c0xpbmVDYW5kaWRhdGVQ
b3NpdGlvbihOb2RlKiBub2RlLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlv
biwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSkKIHsKICAgICBhdXRvKiBoaWdoZXN0Um9vdCA9
IGhpZ2hlc3RFZGl0YWJsZVJvb3QodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCksIGVk
aXRhYmxlVHlwZSk7CiAgICAgTm9kZSogcHJldmlvdXNOb2RlID0gcHJldmlvdXNMZWFmV2l0aFNh
bWVFZGl0YWJpbGl0eShub2RlLCBlZGl0YWJsZVR5cGUpOwpAQCAtMTAxLDcgKzEwMiw3IEBAIHN0
YXRpYyBQb3NpdGlvbiBwcmV2aW91c1Jvb3RJbmxpbmVCb3hDYW5kaWRhdGVQb3NpdGlvbihOb2Rl
KiBub2RlLCBjb25zdCBWaXNpYmxlCiAgICAgcmV0dXJuIFBvc2l0aW9uKCk7CiB9CiAKLXN0YXRp
YyBQb3NpdGlvbiBuZXh0Um9vdElubGluZUJveENhbmRpZGF0ZVBvc2l0aW9uKE5vZGUqIG5vZGUs
IGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBFZGl0YWJsZVR5cGUgZWRp
dGFibGVUeXBlKQorc3RhdGljIFBvc2l0aW9uIG5leHRMaW5lQ2FuZGlkYXRlUG9zaXRpb24oTm9k
ZSogbm9kZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIEVkaXRhYmxl
VHlwZSBlZGl0YWJsZVR5cGUpCiB7CiAgICAgYXV0byogaGlnaGVzdFJvb3QgPSBoaWdoZXN0RWRp
dGFibGVSb290KHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLCBlZGl0YWJsZVR5cGUp
OwogICAgIE5vZGUqIG5leHROb2RlID0gbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5vZGUs
IGVkaXRhYmxlVHlwZSk7CkBAIC0xMjMsMjEyICsxMjQsMTY0IEBAIHN0YXRpYyBQb3NpdGlvbiBu
ZXh0Um9vdElubGluZUJveENhbmRpZGF0ZVBvc2l0aW9uKE5vZGUqIG5vZGUsIGNvbnN0IFZpc2li
bGVQb3NpCiAgICAgcmV0dXJuIFBvc2l0aW9uKCk7CiB9CiAKLWNsYXNzIENhY2hlZExvZ2ljYWxs
eU9yZGVyZWRMZWFmQm94ZXMgewotcHVibGljOgotICAgIENhY2hlZExvZ2ljYWxseU9yZGVyZWRM
ZWFmQm94ZXMoKTsKLQotICAgIGNvbnN0IElubGluZUJveCogcHJldmlvdXNUZXh0T3JMaW5lQnJl
YWtCb3goY29uc3QgUm9vdElubGluZUJveCosIGNvbnN0IElubGluZUJveCopOwotICAgIGNvbnN0
IElubGluZUJveCogbmV4dFRleHRPckxpbmVCcmVha0JveChjb25zdCBSb290SW5saW5lQm94Kiwg
Y29uc3QgSW5saW5lQm94Kik7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bGVhZkJveGVzLnNpemUoKTsgfQotICAgIGNvbnN0IElubGluZUJveCogZmlyc3RCb3goKSBjb25z
dCB7IHJldHVybiBtX2xlYWZCb3hlc1swXTsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IFZlY3Rv
cjxJbmxpbmVCb3gqPiYgY29sbGVjdEJveGVzKGNvbnN0IFJvb3RJbmxpbmVCb3gqKTsKLSAgICBp
bnQgYm94SW5kZXhJbkxlYXZlcyhjb25zdCBJbmxpbmVCb3gqKSBjb25zdDsKLQotICAgIGNvbnN0
IFJvb3RJbmxpbmVCb3gqIG1fcm9vdElubGluZUJveCB7IG51bGxwdHIgfTsKLSAgICBWZWN0b3I8
SW5saW5lQm94Kj4gbV9sZWFmQm94ZXM7Ci19OwotCi1DYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVh
ZkJveGVzOjpDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzKCkKK3N0YXRpYyBib29sIGlz
VGV4dE9yTGluZUJyZWFrUnVuKExheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvciBydW4pCiB7
CisgICAgcmV0dXJuIHJ1biAmJiAocnVuLT5pc1RleHQoKSB8fCBydW4tPnJlbmRlcmVyKCkuaXNC
UigpKTsKIH0KIAotY29uc3QgSW5saW5lQm94KiBDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJv
eGVzOjpwcmV2aW91c1RleHRPckxpbmVCcmVha0JveChjb25zdCBSb290SW5saW5lQm94KiByb290
LCBjb25zdCBJbmxpbmVCb3gqIGJveCkKK3N0YXRpYyBMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRl
cmF0b3IgcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4oTGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0
ZXJhdG9yIHJ1bikKIHsKLSAgICBpZiAoIXJvb3QpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgY29sbGVjdEJveGVzKHJvb3QpOwotCi0gICAgLy8gSWYgYm94IGlzIG51bGwsIHJvb3Qg
aXMgYm94J3MgcHJldmlvdXMgUm9vdElubGluZUJveCwgYW5kIHByZXZpb3VzQm94IGlzIHRoZSBs
YXN0IGxvZ2ljYWwgYm94IGluIHJvb3QuCi0gICAgaW50IGJveEluZGV4ID0gbV9sZWFmQm94ZXMu
c2l6ZSgpIC0gMTsKLSAgICBpZiAoYm94KQotICAgICAgICBib3hJbmRleCA9IGJveEluZGV4SW5M
ZWF2ZXMoYm94KSAtIDE7Ci0KLSAgICBmb3IgKGludCBpID0gYm94SW5kZXg7IGkgPj0gMDsgLS1p
KSB7Ci0gICAgICAgIElubGluZUJveCogYm94ID0gbV9sZWFmQm94ZXNbaV07Ci0gICAgICAgIGlm
IChib3gtPmlzSW5saW5lVGV4dEJveCgpIHx8IGJveC0+cmVuZGVyZXIoKS5pc0JSKCkpCi0gICAg
ICAgICAgICByZXR1cm4gYm94OworICAgIHdoaWxlIChydW4pIHsKKyAgICAgICAgcnVuLnRyYXZl
cnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpOworICAgICAgICBpZiAoaXNUZXh0T3JM
aW5lQnJlYWtSdW4ocnVuKSkKKyAgICAgICAgICAgIHJldHVybiBydW47CiAgICAgfQotCi0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotY29uc3QgSW5saW5lQm94KiBD
YWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzOjpuZXh0VGV4dE9yTGluZUJyZWFrQm94KGNv
bnN0IFJvb3RJbmxpbmVCb3gqIHJvb3QsIGNvbnN0IElubGluZUJveCogYm94KQorc3RhdGljIExh
eW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvciBuZXh0VGV4dE9yTGluZUJyZWFrUnVuKExheW91
dEludGVncmF0aW9uOjpSdW5JdGVyYXRvciBydW4pCiB7Ci0gICAgaWYgKCFyb290KQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGNvbGxlY3RCb3hlcyhyb290KTsKLQotICAgIC8vIElm
IGJveCBpcyBudWxsLCByb290IGlzIGJveCdzIG5leHQgUm9vdElubGluZUJveCwgYW5kIG5leHRC
b3ggaXMgdGhlIGZpcnN0IGxvZ2ljYWwgYm94IGluIHJvb3QuCi0gICAgLy8gT3RoZXJ3aXNlLCBy
b290IGlzIGJveCdzIFJvb3RJbmxpbmVCb3gsIGFuZCBuZXh0Qm94IGlzIHRoZSBuZXh0IGxvZ2lj
YWwgYm94IGluIHRoZSBzYW1lIGxpbmUuCi0gICAgc2l6ZV90IG5leHRCb3hJbmRleCA9IDA7Ci0g
ICAgaWYgKGJveCkKLSAgICAgICAgbmV4dEJveEluZGV4ID0gYm94SW5kZXhJbkxlYXZlcyhib3gp
ICsgMTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSBuZXh0Qm94SW5kZXg7IGkgPCBtX2xlYWZCb3hl
cy5zaXplKCk7ICsraSkgewotICAgICAgICBJbmxpbmVCb3gqIGJveCA9IG1fbGVhZkJveGVzW2ld
OwotICAgICAgICBpZiAoYm94LT5pc0lubGluZVRleHRCb3goKSB8fCBib3gtPnJlbmRlcmVyKCku
aXNCUigpKQotICAgICAgICAgICAgcmV0dXJuIGJveDsKKyAgICB3aGlsZSAocnVuKSB7CisgICAg
ICAgIHJ1bi50cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpOworICAgICAgICBpZiAo
aXNUZXh0T3JMaW5lQnJlYWtSdW4ocnVuKSkKKyAgICAgICAgICAgIHJldHVybiBydW47CiAgICAg
fQotCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotY29uc3QgVmVj
dG9yPElubGluZUJveCo+JiBDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzOjpjb2xsZWN0
Qm94ZXMoY29uc3QgUm9vdElubGluZUJveCogcm9vdCkKK3N0YXRpYyBMYXlvdXRJbnRlZ3JhdGlv
bjo6UnVuSXRlcmF0b3Igc3RhcnRUZXh0T3JMaW5lQnJlYWtSdW4oTGF5b3V0SW50ZWdyYXRpb246
OkxpbmVJdGVyYXRvciBsaW5lKQogewotICAgIGlmIChtX3Jvb3RJbmxpbmVCb3ggIT0gcm9vdCkg
ewotICAgICAgICBtX3Jvb3RJbmxpbmVCb3ggPSByb290OwotICAgICAgICBtX2xlYWZCb3hlcy5j
bGVhcigpOwotICAgICAgICByb290LT5jb2xsZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobV9s
ZWFmQm94ZXMpOwotICAgIH0KLSAgICByZXR1cm4gbV9sZWFmQm94ZXM7CisgICAgYXV0byBydW4g
PSBsaW5lLmxvZ2ljYWxTdGFydFJ1bigpOworICAgIGlmIChpc1RleHRPckxpbmVCcmVha1J1bihy
dW4pKQorICAgICAgICByZXR1cm4gcnVuOworICAgIHJldHVybiBuZXh0VGV4dE9yTGluZUJyZWFr
UnVuKHJ1bik7CiB9CiAKLWludCBDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzOjpib3hJ
bmRleEluTGVhdmVzKGNvbnN0IElubGluZUJveCogYm94KSBjb25zdAorc3RhdGljIExheW91dElu
dGVncmF0aW9uOjpSdW5JdGVyYXRvciBlbmRUZXh0T3JMaW5lQnJlYWtSdW4oTGF5b3V0SW50ZWdy
YXRpb246OkxpbmVJdGVyYXRvciBsaW5lKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9sZWFmQm94ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGJveCA9PSBtX2xlYWZCb3hl
c1tpXSkKLSAgICAgICAgICAgIHJldHVybiBpOwotICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICBh
dXRvIHJ1biA9IGxpbmUubG9naWNhbEVuZFJ1bigpOworICAgIGlmIChpc1RleHRPckxpbmVCcmVh
a1J1bihydW4pKQorICAgICAgICByZXR1cm4gcnVuOworICAgIHJldHVybiBwcmV2aW91c1RleHRP
ckxpbmVCcmVha1J1bihydW4pOwogfQogCi1zdGF0aWMgY29uc3QgSW5saW5lQm94KiBsb2dpY2Fs
bHlQcmV2aW91c0JveChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29u
c3QgSW5saW5lQm94KiB0ZXh0Qm94LAotICAgIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRM
aW5lLCBDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzJiBsZWFmQm94ZXMpCitzdGF0aWMg
Y29uc3QgTGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yIGxvZ2ljYWxseVByZXZpb3VzUnVu
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBMYXlvdXRJbnRlZ3JhdGlv
bjo6UnVuSXRlcmF0b3Igc3RhcnRSdW4sIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5l
KQogewotICAgIGNvbnN0IElubGluZUJveCogc3RhcnRCb3ggPSB0ZXh0Qm94OwotCi0gICAgY29u
c3QgSW5saW5lQm94KiBwcmV2aW91c0JveCA9IGxlYWZCb3hlcy5wcmV2aW91c1RleHRPckxpbmVC
cmVha0JveCgmc3RhcnRCb3gtPnJvb3QoKSwgdGV4dEJveCk7Ci0gICAgaWYgKHByZXZpb3VzQm94
KQotICAgICAgICByZXR1cm4gcHJldmlvdXNCb3g7CisgICAgaWYgKGF1dG8gcHJldmlvdXNSdW4g
PSBwcmV2aW91c1RleHRPckxpbmVCcmVha1J1bihzdGFydFJ1bikpCisgICAgICAgIHJldHVybiBw
cmV2aW91c1J1bjsKIAotICAgIHByZXZpb3VzQm94ID0gbGVhZkJveGVzLnByZXZpb3VzVGV4dE9y
TGluZUJyZWFrQm94KHN0YXJ0Qm94LT5yb290KCkucHJldlJvb3RCb3goKSwgMCk7Ci0gICAgaWYg
KHByZXZpb3VzQm94KQotICAgICAgICByZXR1cm4gcHJldmlvdXNCb3g7CisgICAgaWYgKGF1dG8g
cHJldmlvdXNMaW5lID0gc3RhcnRSdW4ubGluZSgpLnByZXZpb3VzKCkpIHsKKyAgICAgICAgLy8g
RklYTUU6IFdoeSBpc24ndCBwcmV2aW91c0JveEluRGlmZmVyZW50TGluZSBzZXQgaGVyZT8KKyAg
ICAgICAgaWYgKGF1dG8gcHJldmlvdXNSdW4gPSBlbmRUZXh0T3JMaW5lQnJlYWtSdW4ocHJldmlv
dXNMaW5lKSkKKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1J1bjsKKyAgICB9CiAKICAgICB3
aGlsZSAoMSkgewotICAgICAgICBOb2RlKiBzdGFydE5vZGUgPSBzdGFydEJveC0+cmVuZGVyZXIo
KS5ub25Qc2V1ZG9Ob2RlKCk7CisgICAgICAgIGF1dG8qIHN0YXJ0Tm9kZSA9IHN0YXJ0UnVuLT5y
ZW5kZXJlcigpLm5vblBzZXVkb05vZGUoKTsKICAgICAgICAgaWYgKCFzdGFydE5vZGUpCiAgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IHByZXZpb3VzUm9v
dElubGluZUJveENhbmRpZGF0ZVBvc2l0aW9uKHN0YXJ0Tm9kZSwgdmlzaWJsZVBvc2l0aW9uLCBD
b250ZW50SXNFZGl0YWJsZSk7CisgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gcHJldmlvdXNM
aW5lQ2FuZGlkYXRlUG9zaXRpb24oc3RhcnROb2RlLCB2aXNpYmxlUG9zaXRpb24sIENvbnRlbnRJ
c0VkaXRhYmxlKTsKICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgUmVuZGVyZWRQb3NpdGlvbiByZW5kZXJlZFBvc2l0aW9uKHBvc2l0
aW9uLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7Ci0gICAgICAgIFJvb3RJbmxpbmVCb3gqIHByZXZp
b3VzUm9vdCA9IHJlbmRlcmVkUG9zaXRpb24ucm9vdEJveCgpOwotICAgICAgICBpZiAoIXByZXZp
b3VzUm9vdCkKKyAgICAgICAgYXV0byBwcmV2aW91c0xpbmUgPSByZW5kZXJlZFBvc2l0aW9uLmxp
bmUoKTsKKyAgICAgICAgaWYgKCFwcmV2aW91c0xpbmUpCiAgICAgICAgICAgICBicmVhazsKIAot
ICAgICAgICBwcmV2aW91c0JveCA9IGxlYWZCb3hlcy5wcmV2aW91c1RleHRPckxpbmVCcmVha0Jv
eChwcmV2aW91c1Jvb3QsICZzdGFydEJveC0+cm9vdCgpID09IHByZXZpb3VzUm9vdCA/IHN0YXJ0
Qm94IDogbnVsbHB0cik7Ci0gICAgICAgIGlmIChwcmV2aW91c0JveCkgewotICAgICAgICAgICAg
cHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIHBy
ZXZpb3VzQm94OworICAgICAgICBpZiAocHJldmlvdXNMaW5lICE9IHN0YXJ0UnVuLmxpbmUoKSkg
eworICAgICAgICAgICAgaWYgKGF1dG8gcHJldmlvdXNSdW4gPSBlbmRUZXh0T3JMaW5lQnJlYWtS
dW4ocHJldmlvdXNMaW5lKSkgeworICAgICAgICAgICAgICAgIHByZXZpb3VzQm94SW5EaWZmZXJl
bnRMaW5lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNSdW47CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWxlYWZCb3hlcy5zaXplKCkpCi0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgc3RhcnRCb3ggPSBsZWFmQm94ZXMuZmlyc3RCb3go
KTsKKyAgICAgICAgc3RhcnRSdW4gPSBwcmV2aW91c0xpbmUubG9naWNhbFN0YXJ0UnVuKCk7CiAg
ICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiB7IH07CiB9CiAKIAotc3RhdGljIGNvbnN0
IElubGluZUJveCogbG9naWNhbGx5TmV4dEJveChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2li
bGVQb3NpdGlvbiwgY29uc3QgSW5saW5lQm94KiB0ZXh0Qm94LAotICAgIGJvb2wmIG5leHRCb3hJ
bkRpZmZlcmVudExpbmUsIENhY2hlZExvZ2ljYWxseU9yZGVyZWRMZWFmQm94ZXMmIGxlYWZCb3hl
cykKK3N0YXRpYyBjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3IgbG9naWNhbGx5
TmV4dFJ1bihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgTGF5b3V0SW50
ZWdyYXRpb246OlJ1bkl0ZXJhdG9yIHN0YXJ0UnVuLCBib29sJiBuZXh0Qm94SW5EaWZmZXJlbnRM
aW5lKQogewotICAgIGNvbnN0IElubGluZUJveCogc3RhcnRCb3ggPSB0ZXh0Qm94OworICAgIGlm
IChhdXRvIG5leHRSdW4gPSBuZXh0VGV4dE9yTGluZUJyZWFrUnVuKHN0YXJ0UnVuKSkKKyAgICAg
ICAgcmV0dXJuIG5leHRSdW47CiAKLSAgICBjb25zdCBJbmxpbmVCb3gqIG5leHRCb3ggPSBsZWFm
Qm94ZXMubmV4dFRleHRPckxpbmVCcmVha0JveCgmc3RhcnRCb3gtPnJvb3QoKSwgdGV4dEJveCk7
Ci0gICAgaWYgKG5leHRCb3gpCi0gICAgICAgIHJldHVybiBuZXh0Qm94OwotCi0gICAgbmV4dEJv
eCA9IGxlYWZCb3hlcy5uZXh0VGV4dE9yTGluZUJyZWFrQm94KHN0YXJ0Qm94LT5yb290KCkubmV4
dFJvb3RCb3goKSwgMCk7Ci0gICAgaWYgKG5leHRCb3gpCi0gICAgICAgIHJldHVybiBuZXh0Qm94
OworICAgIGlmIChhdXRvIG5leHRMaW5lID0gc3RhcnRSdW4ubGluZSgpLm5leHQoKSkgeworICAg
ICAgICAvLyBGSVhNRTogV2h5IGlzbid0IHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lIHNldCBo
ZXJlPworICAgICAgICBpZiAoYXV0byBuZXh0UnVuID0gc3RhcnRUZXh0T3JMaW5lQnJlYWtSdW4o
bmV4dExpbmUpKQorICAgICAgICAgICAgcmV0dXJuIG5leHRSdW47CisgICAgfQogCiAgICAgd2hp
bGUgKDEpIHsKLSAgICAgICAgTm9kZSogc3RhcnROb2RlID0gc3RhcnRCb3gtPnJlbmRlcmVyKCku
bm9uUHNldWRvTm9kZSgpOworICAgICAgICBhdXRvKiBzdGFydE5vZGUgPSBzdGFydFJ1bi0+cmVu
ZGVyZXIoKS5ub25Qc2V1ZG9Ob2RlKCk7CiAgICAgICAgIGlmICghc3RhcnROb2RlKQogICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBuZXh0Um9vdElubGlu
ZUJveENhbmRpZGF0ZVBvc2l0aW9uKHN0YXJ0Tm9kZSwgdmlzaWJsZVBvc2l0aW9uLCBDb250ZW50
SXNFZGl0YWJsZSk7CisgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gbmV4dExpbmVDYW5kaWRh
dGVQb3NpdGlvbihzdGFydE5vZGUsIHZpc2libGVQb3NpdGlvbiwgQ29udGVudElzRWRpdGFibGUp
OwogICAgICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICBSZW5kZXJlZFBvc2l0aW9uIHJlbmRlcmVkUG9zaXRpb24ocG9zaXRpb24sIEFmZmlu
aXR5OjpEb3duc3RyZWFtKTsKLSAgICAgICAgUm9vdElubGluZUJveCogbmV4dFJvb3QgPSByZW5k
ZXJlZFBvc2l0aW9uLnJvb3RCb3goKTsKLSAgICAgICAgaWYgKCFuZXh0Um9vdCkKKyAgICAgICAg
YXV0byBuZXh0TGluZSA9IHJlbmRlcmVkUG9zaXRpb24ubGluZSgpOworICAgICAgICBpZiAoIW5l
eHRMaW5lKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgbmV4dEJveCA9IGxlYWZCb3hl
cy5uZXh0VGV4dE9yTGluZUJyZWFrQm94KG5leHRSb290LCAmc3RhcnRCb3gtPnJvb3QoKSA9PSBu
ZXh0Um9vdCA/IHN0YXJ0Qm94IDogbnVsbHB0cik7Ci0gICAgICAgIGlmIChuZXh0Qm94KSB7Ci0g
ICAgICAgICAgICBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsKLSAgICAgICAgICAgIHJl
dHVybiBuZXh0Qm94OworICAgICAgICBpZiAobmV4dExpbmUgIT0gc3RhcnRSdW4ubGluZSgpKSB7
CisgICAgICAgICAgICBpZiAoYXV0byBuZXh0UnVuID0gc3RhcnRUZXh0T3JMaW5lQnJlYWtSdW4o
bmV4dExpbmUpKSB7CisgICAgICAgICAgICAgICAgbmV4dEJveEluRGlmZmVyZW50TGluZSA9IHRy
dWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5leHRSdW47CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoIWxlYWZCb3hlcy5zaXplKCkpCi0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgc3RhcnRCb3ggPSBsZWFmQm94ZXMuZmlyc3RCb3goKTsKKyAgICAgICAgc3Rh
cnRSdW4gPSBuZXh0TGluZS5sb2dpY2FsRW5kUnVuKCk7CiAgICAgfQotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRl
cmF0b3JGb3JNaW5PZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQ
b3NpdGlvbiwgY29uc3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwKLSAgICBpbnQmIHByZXZpb3Vz
Qm94TGVuZ3RoLCBib29sJiBwcmV2aW91c0JveEluRGlmZmVyZW50TGluZSwgVmVjdG9yPFVDaGFy
LCAxMDI0PiYgc3RyaW5nLCBDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzJiBsZWFmQm94
ZXMpCitzdGF0aWMgVUJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWluT2Zmc2V0
Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIExheW91dElu
dGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3IgdGV4dFJ1biwKKyAgICB1bnNpZ25lZCYgcHJldmlv
dXNSdW5MZW5ndGgsIGJvb2wmIHByZXZpb3VzUnVuSW5EaWZmZXJlbnRMaW5lLCBWZWN0b3I8VUNo
YXIsIDEwMjQ+JiBzdHJpbmcpCiB7Ci0gICAgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUgPSBm
YWxzZTsKKyAgICBwcmV2aW91c1J1bkluRGlmZmVyZW50TGluZSA9IGZhbHNlOwogCi0gICAgY29u
c3QgSW5saW5lQm94KiBwcmV2aW91c0JveCA9IGxvZ2ljYWxseVByZXZpb3VzQm94KHZpc2libGVQ
b3NpdGlvbiwgdGV4dEJveCwgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUsIGxlYWZCb3hlcyk7
Ci0gICAgd2hpbGUgKHByZXZpb3VzQm94ICYmICFpczxJbmxpbmVUZXh0Qm94PihwcmV2aW91c0Jv
eCkpIHsKLSAgICAgICAgQVNTRVJUKHByZXZpb3VzQm94LT5yZW5kZXJlcigpLmlzQlIoKSk7Ci0g
ICAgICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsKLSAgICAgICAgcHJldmlv
dXNCb3ggPSBsb2dpY2FsbHlQcmV2aW91c0JveCh2aXNpYmxlUG9zaXRpb24sIHByZXZpb3VzQm94
LCBwcmV2aW91c0JveEluRGlmZmVyZW50TGluZSwgbGVhZkJveGVzKTsKKyAgICBhdXRvIHByZXZp
b3VzUnVuID0gbG9naWNhbGx5UHJldmlvdXNSdW4odmlzaWJsZVBvc2l0aW9uLCB0ZXh0UnVuLCBw
cmV2aW91c1J1bkluRGlmZmVyZW50TGluZSk7CisgICAgd2hpbGUgKHByZXZpb3VzUnVuICYmICFw
cmV2aW91c1J1bi0+aXNUZXh0KCkpIHsKKyAgICAgICAgQVNTRVJUKHByZXZpb3VzUnVuLT5yZW5k
ZXJlcigpLmlzQlIoKSk7CisgICAgICAgIHByZXZpb3VzUnVuSW5EaWZmZXJlbnRMaW5lID0gdHJ1
ZTsKKyAgICAgICAgcHJldmlvdXNSdW4gPSBsb2dpY2FsbHlQcmV2aW91c1J1bih2aXNpYmxlUG9z
aXRpb24sIHByZXZpb3VzUnVuLCBwcmV2aW91c1J1bkluRGlmZmVyZW50TGluZSk7CiAgICAgfQog
CiAgICAgc3RyaW5nLmNsZWFyKCk7CiAKLSAgICBpZiAoaXM8SW5saW5lVGV4dEJveD4ocHJldmlv
dXNCb3gpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIHByZXZpb3VzVGV4dEJveCA9IGRvd25jYXN0
PElubGluZVRleHRCb3g+KCpwcmV2aW91c0JveCk7Ci0gICAgICAgIHByZXZpb3VzQm94TGVuZ3Ro
ID0gcHJldmlvdXNUZXh0Qm94LmxlbigpOwotICAgICAgICBhcHBlbmQoc3RyaW5nLCBTdHJpbmdW
aWV3KHByZXZpb3VzVGV4dEJveC5yZW5kZXJlcigpLnRleHQoKSkuc3Vic3RyaW5nKHByZXZpb3Vz
VGV4dEJveC5zdGFydCgpLCBwcmV2aW91c0JveExlbmd0aCkpOworICAgIGlmIChwcmV2aW91c1J1
bikgeworICAgICAgICBhdXRvJiBwcmV2aW91c1RleHRSdW4gPSBkb3duY2FzdDxMYXlvdXRJbnRl
Z3JhdGlvbjo6VGV4dFJ1bkl0ZXJhdG9yPihwcmV2aW91c1J1bik7CisgICAgICAgIHByZXZpb3Vz
UnVuTGVuZ3RoID0gcHJldmlvdXNUZXh0UnVuLT5sZW5ndGgoKTsKKyAgICAgICAgYXBwZW5kKHN0
cmluZywgcHJldmlvdXNUZXh0UnVuLT50ZXh0KCkpOwogICAgIH0KLSAgICBhcHBlbmQoc3RyaW5n
LCBTdHJpbmdWaWV3KHRleHRCb3gtPnJlbmRlcmVyKCkudGV4dCgpKS5zdWJzdHJpbmcodGV4dEJv
eC0+c3RhcnQoKSwgdGV4dEJveC0+bGVuKCkpKTsKKyAgICBhcHBlbmQoc3RyaW5nLCB0ZXh0UnVu
LT50ZXh0KCkpOwogCiAgICAgcmV0dXJuIHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3Ry
aW5nLmRhdGEoKSwgc3RyaW5nLnNpemUoKSkpOwogfQogCi1zdGF0aWMgVUJyZWFrSXRlcmF0b3Iq
IHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB2aXNpYmxlUG9zaXRpb24sIGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gsCi0gICAg
Ym9vbCYgbmV4dEJveEluRGlmZmVyZW50TGluZSwgVmVjdG9yPFVDaGFyLCAxMDI0PiYgc3RyaW5n
LCBDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzJiBsZWFmQm94ZXMpCitzdGF0aWMgVUJy
ZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIExheW91dEludGVncmF0aW9uOjpUZXh0
UnVuSXRlcmF0b3IgdGV4dFJ1biwKKyAgICBib29sJiBuZXh0UnVuSW5EaWZmZXJlbnRMaW5lLCBW
ZWN0b3I8VUNoYXIsIDEwMjQ+JiBzdHJpbmcpCiB7Ci0gICAgbmV4dEJveEluRGlmZmVyZW50TGlu
ZSA9IGZhbHNlOworICAgIG5leHRSdW5JbkRpZmZlcmVudExpbmUgPSBmYWxzZTsKIAotICAgIGNv
bnN0IElubGluZUJveCogbmV4dEJveCA9IGxvZ2ljYWxseU5leHRCb3godmlzaWJsZVBvc2l0aW9u
LCB0ZXh0Qm94LCBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lLCBsZWFmQm94ZXMpOwotICAgIHdoaWxl
IChuZXh0Qm94ICYmICFpczxJbmxpbmVUZXh0Qm94PihuZXh0Qm94KSkgewotICAgICAgICBBU1NF
UlQobmV4dEJveC0+cmVuZGVyZXIoKS5pc0JSKCkpOwotICAgICAgICBuZXh0Qm94SW5EaWZmZXJl
bnRMaW5lID0gdHJ1ZTsKLSAgICAgICAgbmV4dEJveCA9IGxvZ2ljYWxseU5leHRCb3godmlzaWJs
ZVBvc2l0aW9uLCBuZXh0Qm94LCBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lLCBsZWFmQm94ZXMpOwor
ICAgIGF1dG8gbmV4dFJ1biA9IGxvZ2ljYWxseU5leHRSdW4odmlzaWJsZVBvc2l0aW9uLCB0ZXh0
UnVuLCBuZXh0UnVuSW5EaWZmZXJlbnRMaW5lKTsKKyAgICB3aGlsZSAobmV4dFJ1biAmJiAhbmV4
dFJ1bi0+aXNUZXh0KCkpIHsKKyAgICAgICAgQVNTRVJUKG5leHRSdW4tPnJlbmRlcmVyKCkuaXNC
UigpKTsKKyAgICAgICAgbmV4dFJ1bkluRGlmZmVyZW50TGluZSA9IHRydWU7CisgICAgICAgIG5l
eHRSdW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2libGVQb3NpdGlvbiwgbmV4dFJ1biwgbmV4dFJ1
bkluRGlmZmVyZW50TGluZSk7CiAgICAgfQogCiAgICAgc3RyaW5nLmNsZWFyKCk7Ci0gICAgYXBw
ZW5kKHN0cmluZywgU3RyaW5nVmlldyh0ZXh0Qm94LT5yZW5kZXJlcigpLnRleHQoKSkuc3Vic3Ry
aW5nKHRleHRCb3gtPnN0YXJ0KCksIHRleHRCb3gtPmxlbigpKSk7Ci0gICAgaWYgKGlzPElubGlu
ZVRleHRCb3g+KG5leHRCb3gpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIG5leHRUZXh0Qm94ID0g
ZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKm5leHRCb3gpOwotICAgICAgICBhcHBlbmQoc3RyaW5n
LCBTdHJpbmdWaWV3KG5leHRUZXh0Qm94LnJlbmRlcmVyKCkudGV4dCgpKS5zdWJzdHJpbmcobmV4
dFRleHRCb3guc3RhcnQoKSwgbmV4dFRleHRCb3gubGVuKCkpKTsKKyAgICBhcHBlbmQoc3RyaW5n
LCB0ZXh0UnVuLT50ZXh0KCkpOworCisgICAgaWYgKG5leHRSdW4pIHsKKyAgICAgICAgYXV0byYg
bmV4dFRleHRSdW4gPSBkb3duY2FzdDxMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bkl0ZXJhdG9y
PihuZXh0UnVuKTsKKyAgICAgICAgYXBwZW5kKHN0cmluZywgbmV4dFRleHRSdW4tPnRleHQoKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5n
LmRhdGEoKSwgc3RyaW5nLnNpemUoKSkpOwpAQCAtMzYwLDEyICszMTMsMTEgQEAgc3RhdGljIFZp
c2libGVQb3NpdGlvbiB2aXN1YWxXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2
aXNpYmxlUG9zaXRpb24KICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCiAgICAg
VGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2so
dmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwotICAgIElubGluZUJveCogcHJldmlv
dXNseVZpc2l0ZWRCb3ggPSBudWxscHRyOworICAgIExheW91dEludGVncmF0aW9uOjpSdW5JdGVy
YXRvciBwcmV2aW91c2x5VmlzaXRlZFJ1bjsKICAgICBWaXNpYmxlUG9zaXRpb24gY3VycmVudCA9
IHZpc2libGVQb3NpdGlvbjsKICAgICBPcHRpb25hbDxWaXNpYmxlUG9zaXRpb24+IHByZXZpb3Vz
UG9zaXRpb247CiAgICAgVUJyZWFrSXRlcmF0b3IqIGl0ZXIgPSBudWxscHRyOwogCi0gICAgQ2Fj
aGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlcyBsZWFmQm94ZXM7CiAgICAgVmVjdG9yPFVDaGFy
LCAxMDI0PiBzdHJpbmc7CiAKICAgICB3aGlsZSAoMSkgewpAQCAtMzc2LDUwICszMjgsNTAgQEAg
c3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXN1YWxXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiB2aXNpYmxlUG9zaXRpb24KICAgICAgICAgaWYgKHByZXZpb3VzUG9zaXRpb24gJiYg
YWRqYWNlbnRDaGFyYWN0ZXJQb3NpdGlvbiA9PSBwcmV2aW91c1Bvc2l0aW9uLnZhbHVlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAgICAgCi0gICAgICAgIC8vIEZJ
WE1FOiBXaHkgZm9yY2UgdGhlIHVzZSBvZiB1cHN0cmVhbSBhZmZpbml0eSBoZXJlIGluc3RlYWQg
b2YgVmlzaWJsZVBvc2l0aW9uOjppbmxpbmVCb3hBbmRPZmZzZXQsIHdoaWNoIHdpbGwgZ2V0IGFm
ZmluaXR5IGZyb20gYWRqYWNlbnRDaGFyYWN0ZXJQb3NpdGlvbj8KLSAgICAgICAgYXV0byBbYm94
LCBvZmZzZXRJbkJveF0gPSBhZGphY2VudENoYXJhY3RlclBvc2l0aW9uLmRlZXBFcXVpdmFsZW50
KCkuaW5saW5lQm94QW5kT2Zmc2V0KEFmZmluaXR5OjpVcHN0cmVhbSk7CisgICAgICAgIC8vIEZJ
WE1FOiBXaHkgZm9yY2UgdGhlIHVzZSBvZiB1cHN0cmVhbSBhZmZpbml0eSBoZXJlIGluc3RlYWQg
b2YgVmlzaWJsZVBvc2l0aW9uOjppbmxpbmVSdW5BbmRPZmZzZXQsIHdoaWNoIHdpbGwgZ2V0IGFm
ZmluaXR5IGZyb20gYWRqYWNlbnRDaGFyYWN0ZXJQb3NpdGlvbj8KKyAgICAgICAgYXV0byBbcnVu
LCBvZmZzZXRJblJ1bl0gPSBhZGphY2VudENoYXJhY3RlclBvc2l0aW9uLmRlZXBFcXVpdmFsZW50
KCkuaW5saW5lUnVuQW5kT2Zmc2V0KEFmZmluaXR5OjpVcHN0cmVhbSk7CiAgICAgCi0gICAgICAg
IGlmICghYm94KQorICAgICAgICBpZiAoIXJ1bikKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBpZiAoIWlzPElubGluZVRleHRCb3g+KCpib3gpKSB7CisgICAgICAgIGlmICghcnVuLT5pc1Rl
eHQoKSkgewogICAgICAgICAgICAgY3VycmVudCA9IGFkamFjZW50Q2hhcmFjdGVyUG9zaXRpb247
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIElubGluZVRleHRC
b3gmIHRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqYm94KTsKLSAgICAgICAgaW50
IHByZXZpb3VzQm94TGVuZ3RoID0gMDsKLSAgICAgICAgYm9vbCBwcmV2aW91c0JveEluRGlmZmVy
ZW50TGluZSA9IGZhbHNlOwotICAgICAgICBib29sIG5leHRCb3hJbkRpZmZlcmVudExpbmUgPSBm
YWxzZTsKLSAgICAgICAgYm9vbCBtb3ZpbmdJbnRvTmV3Qm94ID0gcHJldmlvdXNseVZpc2l0ZWRC
b3ggIT0gYm94OwotCi0gICAgICAgIGlmIChvZmZzZXRJbkJveCA9PSBib3gtPmNhcmV0TWluT2Zm
c2V0KCkpCi0gICAgICAgICAgICBpdGVyID0gd29yZEJyZWFrSXRlcmF0b3JGb3JNaW5PZmZzZXRC
b3VuZGFyeShhZGphY2VudENoYXJhY3RlclBvc2l0aW9uLCAmdGV4dEJveCwgcHJldmlvdXNCb3hM
ZW5ndGgsIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lLCBzdHJpbmcsIGxlYWZCb3hlcyk7Ci0g
ICAgICAgIGVsc2UgaWYgKG9mZnNldEluQm94ID09IGJveC0+Y2FyZXRNYXhPZmZzZXQoKSkKLSAg
ICAgICAgICAgIGl0ZXIgPSB3b3JkQnJlYWtJdGVyYXRvckZvck1heE9mZnNldEJvdW5kYXJ5KGFk
amFjZW50Q2hhcmFjdGVyUG9zaXRpb24sICZ0ZXh0Qm94LCBuZXh0Qm94SW5EaWZmZXJlbnRMaW5l
LCBzdHJpbmcsIGxlYWZCb3hlcyk7Ci0gICAgICAgIGVsc2UgaWYgKG1vdmluZ0ludG9OZXdCb3gp
IHsKLSAgICAgICAgICAgIGl0ZXIgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHRleHRC
b3gucmVuZGVyZXIoKS50ZXh0KCkpLnN1YnN0cmluZyh0ZXh0Qm94LnN0YXJ0KCksIHRleHRCb3gu
bGVuKCkpKTsKLSAgICAgICAgICAgIHByZXZpb3VzbHlWaXNpdGVkQm94ID0gYm94OworICAgICAg
ICBhdXRvJiB0ZXh0UnVuID0gZG93bmNhc3Q8TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW5JdGVy
YXRvcj4ocnVuKTsKKyAgICAgICAgdW5zaWduZWQgcHJldmlvdXNSdW5MZW5ndGggPSAwOworICAg
ICAgICBib29sIHByZXZpb3VzUnVuSW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CisgICAgICAgIGJv
b2wgbmV4dFJ1bkluRGlmZmVyZW50TGluZSA9IGZhbHNlOworICAgICAgICBib29sIG1vdmluZ0lu
dG9OZXdSdW4gPSBwcmV2aW91c2x5VmlzaXRlZFJ1biAhPSBydW47CisKKyAgICAgICAgaWYgKG9m
ZnNldEluUnVuID09IHRleHRSdW4tPm1pbmltdW1DYXJldE9mZnNldCgpKQorICAgICAgICAgICAg
aXRlciA9IHdvcmRCcmVha0l0ZXJhdG9yRm9yTWluT2Zmc2V0Qm91bmRhcnkoYWRqYWNlbnRDaGFy
YWN0ZXJQb3NpdGlvbiwgdGV4dFJ1biwgcHJldmlvdXNSdW5MZW5ndGgsIHByZXZpb3VzUnVuSW5E
aWZmZXJlbnRMaW5lLCBzdHJpbmcpOworICAgICAgICBlbHNlIGlmIChvZmZzZXRJblJ1biA9PSB0
ZXh0UnVuLT5tYXhpbXVtQ2FyZXRPZmZzZXQoKSkKKyAgICAgICAgICAgIGl0ZXIgPSB3b3JkQnJl
YWtJdGVyYXRvckZvck1heE9mZnNldEJvdW5kYXJ5KGFkamFjZW50Q2hhcmFjdGVyUG9zaXRpb24s
IHRleHRSdW4sIG5leHRSdW5JbkRpZmZlcmVudExpbmUsIHN0cmluZyk7CisgICAgICAgIGVsc2Ug
aWYgKG1vdmluZ0ludG9OZXdSdW4pIHsKKyAgICAgICAgICAgIGl0ZXIgPSB3b3JkQnJlYWtJdGVy
YXRvcih0ZXh0UnVuLT50ZXh0KCkpOworICAgICAgICAgICAgcHJldmlvdXNseVZpc2l0ZWRSdW4g
PSBydW47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWl0ZXIpCiAgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICB1YnJrX2ZpcnN0KGl0ZXIpOwotICAgICAgICBpbnQgb2Zmc2V0SW5JdGVy
YXRvciA9IG9mZnNldEluQm94IC0gdGV4dEJveC5zdGFydCgpICsgcHJldmlvdXNCb3hMZW5ndGg7
CisgICAgICAgIGludCBvZmZzZXRJbkl0ZXJhdG9yID0gb2Zmc2V0SW5SdW4gLSB0ZXh0UnVuLT5z
dGFydCgpICsgcHJldmlvdXNSdW5MZW5ndGg7CiAKICAgICAgICAgYm9vbCBpc1dvcmRCcmVhazsK
LSAgICAgICAgYm9vbCBib3hIYXNTYW1lRGlyZWN0aW9uYWxpdHlBc0Jsb2NrID0gYm94LT5kaXJl
Y3Rpb24oKSA9PSBibG9ja0RpcmVjdGlvbjsKLSAgICAgICAgYm9vbCBtb3ZpbmdCYWNrd2FyZCA9
IChkaXJlY3Rpb24gPT0gTW92ZUxlZnQgJiYgYm94LT5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0
aW9uOjpMVFIpIHx8IChkaXJlY3Rpb24gPT0gTW92ZVJpZ2h0ICYmIGJveC0+ZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6UlRMKTsKKyAgICAgICAgYm9vbCBib3hIYXNTYW1lRGlyZWN0aW9u
YWxpdHlBc0Jsb2NrID0gcnVuLT5kaXJlY3Rpb24oKSA9PSBibG9ja0RpcmVjdGlvbjsKKyAgICAg
ICAgYm9vbCBtb3ZpbmdCYWNrd2FyZCA9IChkaXJlY3Rpb24gPT0gTW92ZUxlZnQgJiYgcnVuLT5k
aXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHx8IChkaXJlY3Rpb24gPT0gTW92ZVJp
Z2h0ICYmIHJ1bi0+ZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMKTsKICAgICAgICAg
aWYgKChza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0ICYmIGJveEhhc1NhbWVEaXJlY3Rpb25hbGl0
eUFzQmxvY2spCiAgICAgICAgICAgICB8fCAoIXNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgJiYg
bW92aW5nQmFja3dhcmQpKSB7Ci0gICAgICAgICAgICBib29sIGxvZ2ljYWxTdGFydEluUmVuZGVy
ZXIgPSBvZmZzZXRJbkJveCA9PSBzdGF0aWNfY2FzdDxpbnQ+KHRleHRCb3guc3RhcnQoKSkgJiYg
cHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmU7CisgICAgICAgICAgICBib29sIGxvZ2ljYWxTdGFy
dEluUmVuZGVyZXIgPSBvZmZzZXRJblJ1biA9PSB0ZXh0UnVuLT5zdGFydCgpICYmIHByZXZpb3Vz
UnVuSW5EaWZmZXJlbnRMaW5lOwogICAgICAgICAgICAgaXNXb3JkQnJlYWsgPSBpc0xvZ2ljYWxT
dGFydE9mV29yZChpdGVyLCBvZmZzZXRJbkl0ZXJhdG9yLCBsb2dpY2FsU3RhcnRJblJlbmRlcmVy
KTsKLSAgICAgICAgICAgIGlmIChpc1dvcmRCcmVhayAmJiBvZmZzZXRJbkJveCA9PSBib3gtPmNh
cmV0TWF4T2Zmc2V0KCkgJiYgbmV4dEJveEluRGlmZmVyZW50TGluZSkKKyAgICAgICAgICAgIGlm
IChpc1dvcmRCcmVhayAmJiBvZmZzZXRJblJ1biA9PSBydW4tPm1heGltdW1DYXJldE9mZnNldCgp
ICYmIG5leHRSdW5JbkRpZmZlcmVudExpbmUpCiAgICAgICAgICAgICAgICAgaXNXb3JkQnJlYWsg
PSBmYWxzZTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgbG9naWNhbEVuZElu
UmVuZGVyZXIgPSBvZmZzZXRJbkJveCA9PSBzdGF0aWNfY2FzdDxpbnQ+KHRleHRCb3guc3RhcnQo
KSArIHRleHRCb3gubGVuKCkpICYmIG5leHRCb3hJbkRpZmZlcmVudExpbmU7CisgICAgICAgICAg
ICBib29sIGxvZ2ljYWxFbmRJblJlbmRlcmVyID0gb2Zmc2V0SW5SdW4gPT0gdGV4dFJ1bi0+ZW5k
KCkgJiYgbmV4dFJ1bkluRGlmZmVyZW50TGluZTsKICAgICAgICAgICAgIGlzV29yZEJyZWFrID0g
aXNsb2dpY2FsRW5kT2ZXb3JkKGl0ZXIsIG9mZnNldEluSXRlcmF0b3IsIGxvZ2ljYWxFbmRJblJl
bmRlcmVyKTsKLSAgICAgICAgICAgIGlmIChpc1dvcmRCcmVhayAmJiBvZmZzZXRJbkJveCA9PSBi
b3gtPmNhcmV0TWluT2Zmc2V0KCkgJiYgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUpCisgICAg
ICAgICAgICBpZiAoaXNXb3JkQnJlYWsgJiYgb2Zmc2V0SW5SdW4gPT0gcnVuLT5taW5pbXVtQ2Fy
ZXRPZmZzZXQoKSAmJiBwcmV2aW91c1J1bkluRGlmZmVyZW50TGluZSkKICAgICAgICAgICAgICAg
ICBpc1dvcmRCcmVhayA9IGZhbHNlOwogICAgICAgICB9ICAgICAgCiAKQEAgLTEwMjQsNyArOTc2
LDcgQEAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzTGluZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBpbnQKICAgICB9CiAKICAgICBpZiAoIWxpbmUpIHsK
LSAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBwcmV2aW91c1Jvb3RJbmxpbmVCb3hDYW5kaWRh
dGVQb3NpdGlvbihub2RlLCB2aXNpYmxlUG9zaXRpb24sIGVkaXRhYmxlVHlwZSk7CisgICAgICAg
IFBvc2l0aW9uIHBvc2l0aW9uID0gcHJldmlvdXNMaW5lQ2FuZGlkYXRlUG9zaXRpb24obm9kZSwg
dmlzaWJsZVBvc2l0aW9uLCBlZGl0YWJsZVR5cGUpOwogICAgICAgICBpZiAocG9zaXRpb24uaXNO
b3ROdWxsKCkpIHsKICAgICAgICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3NpdGlv
bihwb3NpdGlvbik7CiAgICAgICAgICAgICBsaW5lID0gcmVuZGVyZWRQb3NpdGlvbi5saW5lKCk7
CkBAIC0xMDc3LDcgKzEwMjksNyBAQCBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgaW50IGxpbgogICAgICAgICAv
LyBGSVhNRTogV2UgbmVlZCBkbyB0aGUgc2FtZSBpbiBwcmV2aW91c0xpbmVQb3NpdGlvbi4KICAg
ICAgICAgTm9kZSogY2hpbGQgPSBub2RlLT50cmF2ZXJzZVRvQ2hpbGRBdChwLmRlcHJlY2F0ZWRF
ZGl0aW5nT2Zmc2V0KCkpOwogICAgICAgICBub2RlID0gY2hpbGQgPyBjaGlsZCA6IG5vZGUtPmxh
c3REZXNjZW5kYW50KCk7Ci0gICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gbmV4dFJvb3RJbmxp
bmVCb3hDYW5kaWRhdGVQb3NpdGlvbihub2RlLCB2aXNpYmxlUG9zaXRpb24sIGVkaXRhYmxlVHlw
ZSk7CisgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gbmV4dExpbmVDYW5kaWRhdGVQb3NpdGlv
bihub2RlLCB2aXNpYmxlUG9zaXRpb24sIGVkaXRhYmxlVHlwZSk7CiAgICAgICAgIGlmIChwb3Np
dGlvbi5pc05vdE51bGwoKSkgewogICAgICAgICAgICAgUmVuZGVyZWRQb3NpdGlvbiByZW5kZXJl
ZFBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICAgICAgICAgIGxpbmUgPSByZW5kZXJlZFBvc2l0aW9u
LmxpbmUoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>