<?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>185058</bug_id>
          
          <creation_ts>2018-04-26 16:03:35 -0700</creation_ts>
          <short_desc>[LFC] Add layout tree iterators.</short_desc>
          <delta_ts>2018-04-27 07:35:23 -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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</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>1418305</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-04-26 16:03:35 -0700</bug_when>
    <thetext>childrenOfType, ancestorOfType etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418306</commentid>
    <comment_count>1</comment_count>
      <attachid>338932</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-04-26 16:06:49 -0700</bug_when>
    <thetext>Created attachment 338932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418476</commentid>
    <comment_count>2</comment_count>
      <attachid>338932</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-27 07:34:52 -0700</bug_when>
    <thetext>Comment on attachment 338932
Patch

Clearing flags on attachment: 338932

Committed r231093: &lt;https://trac.webkit.org/changeset/231093&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418477</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-27 07:34:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418478</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-27 07:35:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/39791497&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338932</attachid>
            <date>2018-04-26 16:06:49 -0700</date>
            <delta_ts>2018-04-27 07:34:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185058-20180426160648.patch</filename>
            <type>text/plain</type>
            <size>22462</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWY0NjI5MmZjNjU2YWIw
MjQzMzUwMzMzNjIyNmMzMmE2ODA1OTllYi4uYTFiZjc5M2NiM2ViMGZhZDdiZDJlODNlZTRiMmI1
MGNiMmZhZWJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE4LTA0LTI2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gQWRkIGxheW91dCB0
cmVlIGl0ZXJhdG9ycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4NTA1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZXkgd29yayBleGFjdGx5IGxpa2UgdGhlIHJlbmRlcmVyIHRyZWUgaXRlcmF0b3Jz
LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEFuY2VzdG9ySXRlcmF0b3IuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dEFuY2VzdG9ySXRlcmF0b3I8VD46OkxheW91
dEFuY2VzdG9ySXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRBbmNl
c3Rvckl0ZXJhdG9yPFQ+OjpvcGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxh
eW91dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPFQ+OjpMYXlvdXRBbmNlc3Rvckl0ZXJhdG9yQWRh
cHRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dEFuY2VzdG9ySXRlcmF0b3JB
ZGFwdGVyPFQ+OjpiZWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91
dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPFQ+OjplbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMYXlvdXRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxUPjo6Zmlyc3QgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjphbmNlc3RvcnNPZlR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpsaW5lYWdlT2ZUeXBlKToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRCb3guY3BwOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dENo
aWxkSXRlcmF0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dENo
aWxkdEl0ZXJhdG9yPFQ+OjpMYXlvdXRDaGlsZHRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxheW91dENoaWxkdEl0ZXJhdG9yPFQ+OjpvcGVyYXRvcik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxheW91dENoaWxkdEl0ZXJhdG9yQWRhcHRlcjxUPjo6TGF5b3V0Q2hp
bGR0SXRlcmF0b3JBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Q2hp
bGR0SXRlcmF0b3JBZGFwdGVyPFQ+OjpiZWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxheW91dENoaWxkdEl0ZXJhdG9yQWRhcHRlcjxUPjo6ZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Q2hpbGR0SXRlcmF0b3JBZGFwdGVyPFQ+OjpmaXJz
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dENoaWxkdEl0ZXJhdG9y
QWRhcHRlcjxUPjo6bGFzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmNoaWxk
cmVuT2ZUeXBlKToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJdGVyYXRvci5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6aXNMYXlvdXRCb3hPZlR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUcmF2ZXJzYWw6Omxhc3RDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRyYXZlcnNhbDo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OlRyYXZlcnNhbDo6ZmluZEFuY2VzdG9yT2ZUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6VHJhdmVyc2FsOjpuZXh0QW5jZXN0b3JTaWJsaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6VHJhdmVyc2FsOjpuZXh0V2l0aGluKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6VHJhdmVyc2FsOjpmaXJzdFdpdGhpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OlRyYXZlcnNhbDo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dEl0ZXJh
dG9yPFQ+OjpMYXlvdXRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91
dEl0ZXJhdG9yPFQ+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGF5b3V0SXRlcmF0b3I8VD46OnRyYXZlcnNlTmV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxheW91dEl0ZXJhdG9yPFQ+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dEl0ZXJhdG9yPFQ+Ojp0cmF2ZXJzZUFuY2Vz
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0SXRlcmF0b3I8VD46Om9wZXJh
dG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6PSBjb25zdCk6CisKIDIwMTgtMDQtMjUgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBBZGQgc3VwcG9ydCBmb3IgaXM8PiBh
bmQgZG93bmNhc3Q8PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDdhMzEyZTZkZDg0Y2I1ZjA3ZWE1OTAxNmYyODAwOGQ4MTEzYjRm
NDguLjUxZTZiNTM3N2M2N2QxMTUwNzA4ZDg3Njc1MjA5MTg3MzNkN2E2NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU3MTcs
NiArNTcxNyw5IEBACiAJCTBGRkQ0RDVGMTg2NTFGQTMwMDUxMkY2RSAvKiBBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTBGQjA4
NEExNEUxNUM3RTAwQTNEQjk4IC8qIFB1YmxpY1VSTE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUHVibGljVVJMTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxMTAwRkM2RTFGREIzQzREMDBERDk2MUIgLyogVHJhaWxpbmdGbG9hdHNSb290
SW5saW5lQm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYWlsaW5nRmxvYXRzUm9vdElubGlu
ZUJveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExMTAwRkM3MjA5Mjc2NEMw
MDgxQUE2QyAvKiBMYXlvdXRJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRJdGVyYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTEwMEZDOTIwOTI3Q0JDMDA4MUFB
NkMgLyogTGF5b3V0Q2hpbGRJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRDaGlsZEl0
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExMTAwRkNBMjA5Mjg2OEQw
MDgxQUE2QyAvKiBMYXlvdXRBbmNlc3Rvckl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91
dEFuY2VzdG9ySXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTEyQjM0
RDAxRTYwQjhBNzAwQkIzMTBBIC8qIFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTEyQjM0RDQxRTYwQjk4MzAw
QkIzMTBBIC8qIFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTExMzQwOUQ3MjAzRTAzODAwMEM2NjkxNSAvKiBSZW5kZXJUcmVl
QnVpbGRlckNvbnRpbnVhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUcmVlQnVp
bGRlckNvbnRpbnVhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTY1
NSwxNiArMTU2NTgsMTkgQEAKIAkJMTE1Q0ZBOTAyMDhCOTQ0MTAwMUU2OTkxIC8qIGxheW91dHRy
ZWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTExMTAw
RkNBMjA5Mjg2OEQwMDgxQUE2QyAvKiBMYXlvdXRBbmNlc3Rvckl0ZXJhdG9yLmggKi8sCiAJCQkJ
MTE5OUZBNEEyMDhFMzdCNjAwMjM1OENDIC8qIExheW91dEJsb2NrQ29udGFpbmVyLmNwcCAqLywK
IAkJCQkxMTk5RkE0OTIwOEUzN0I2MDAyMzU4Q0MgLyogTGF5b3V0QmxvY2tDb250YWluZXIuaCAq
LywKIAkJCQkxMTVDRkE5NjIwOEI5NTJCMDAxRTY5OTEgLyogTGF5b3V0Qm94LmNwcCAqLywKIAkJ
CQkxMTVDRkE5NTIwOEI5NTJCMDAxRTY5OTEgLyogTGF5b3V0Qm94LmggKi8sCisJCQkJMTExMDBG
QzkyMDkyN0NCQzAwODFBQTZDIC8qIExheW91dENoaWxkSXRlcmF0b3IuaCAqLywKIAkJCQkxMTk5
RkE0NTIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyLmNwcCAqLywKIAkJCQkxMTk5
RkE0NDIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyLmggKi8sCiAJCQkJMTE5OUZB
NTIyMDhFMzhEMzAwMjM1OENDIC8qIExheW91dElubGluZUJveC5jcHAgKi8sCiAJCQkJMTE5OUZB
NTEyMDhFMzhEMzAwMjM1OENDIC8qIExheW91dElubGluZUJveC5oICovLAogCQkJCTExOTlGQTRF
MjA4RTM4OTkwMDIzNThDQyAvKiBMYXlvdXRJbmxpbmVDb250YWluZXIuY3BwICovLAogCQkJCTEx
OTlGQTREMjA4RTM4OTkwMDIzNThDQyAvKiBMYXlvdXRJbmxpbmVDb250YWluZXIuaCAqLywKKwkJ
CQkxMTEwMEZDNzIwOTI3NjRDMDA4MUFBNkMgLyogTGF5b3V0SXRlcmF0b3IuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gbGF5b3V0dHJlZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0y
Nzg1MSw2ICsyNzg1Nyw3IEBACiAJCQkJQzRDRDYyOUIxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1l
U25hcHNob3R0aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUEyMTQ4NTA5N0EzRjUzMDBCOTA1
MEEgLyogRnJhbWVUcmVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUNCRkVGQTA5NzRGNjA3MDAx
REFDMjUgLyogRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQkxMTNEMEI1MjFGOUZERDJC
MDBGNjExQkIgLyogRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTcyMDVBQjAxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERpcmVjdG9yeURvY3VtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUM4MUI4QTBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFy
c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNkI5OTk5MzE4MDNCOUQ5MDBEMDExMjEgLyogRnVu
Y3Rpb25DYWxsLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MTA1LDcgKzI5MTEyLDYgQEAKIAkJCQkx
MTk5RkE0QjIwOEUzN0I2MDAyMzU4Q0MgLyogTGF5b3V0QmxvY2tDb250YWluZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTExNUNGQTk3MjA4Qjk1MkIwMDFFNjk5MSAvKiBMYXlvdXRCb3guaCBpbiBI
ZWFkZXJzICovLAogCQkJCTExOTlGQTQ2MjA4RTM1QTMwMDIzNThDQyAvKiBMYXlvdXRDb250YWlu
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTExM0QwQjUyMUY5RkREMkIwMEY2MTFCQiAvKiBGcmFt
ZVZpZXdMYXlvdXRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjdDQTNDNjIwOEMyOTU3
MDAyRjI5QUIgLyogTGF5b3V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTE5OUZBNTMy
MDhFMzhEMzAwMjM1OENDIC8qIExheW91dElubGluZUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTE5OUZBNEYyMDhFMzg5OTAwMjM1OENDIC8qIExheW91dElubGluZUNvbnRhaW5lci5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRBbmNlc3Rvckl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRBbmNlc3Rvckl0ZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJkZDI3NWIxZDkxODgyZGFj
MzU4M2Y2MDdmMmVkMjE5YTJjY2Q0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dEFuY2VzdG9ySXRlcmF0b3IuaApAQCAtMCwwICsxLDEy
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTGF5b3V0SXRlcmF0
b3IuaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0IHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitjbGFzcyBMYXlvdXRBbmNlc3Rvckl0ZXJhdG9yIDogcHVibGljIExheW91dEl0ZXJhdG9yPFQ+
IHsKK3B1YmxpYzoKKyAgICBMYXlvdXRBbmNlc3Rvckl0ZXJhdG9yKCk7CisgICAgZXhwbGljaXQg
TGF5b3V0QW5jZXN0b3JJdGVyYXRvcihjb25zdCBUKiBjdXJyZW50KTsKKyAgICBMYXlvdXRBbmNl
c3Rvckl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NsYXNzIExheW91dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyIHsKK3B1YmxpYzoKKyAgICBMYXlv
dXRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcihjb25zdCBUKiBmaXJzdCk7CisgICAgTGF5b3V0QW5j
ZXN0b3JJdGVyYXRvcjxUPiBiZWdpbigpIGNvbnN0OworICAgIExheW91dEFuY2VzdG9ySXRlcmF0
b3I8VD4gZW5kKCkgY29uc3Q7CisgICAgY29uc3QgVCogZmlyc3QoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBjb25zdCBUKiBtX2ZpcnN0OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IExh
eW91dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPFQ+IGFuY2VzdG9yc09mVHlwZShjb25zdCBCb3gm
KTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBMYXlvdXRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxU
PiBsaW5lYWdlT2ZUeXBlKGNvbnN0IEJveCYpOworCisvLyBMYXlvdXRBbmNlc3Rvckl0ZXJhdG9y
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIExheW91dEFuY2VzdG9ySXRlcmF0b3I8
VD46OkxheW91dEFuY2VzdG9ySXRlcmF0b3IoKQorICAgIDogTGF5b3V0SXRlcmF0b3I8VD4obnVs
bHB0cikKK3sKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgTGF5b3V0QW5jZXN0
b3JJdGVyYXRvcjxUPjo6TGF5b3V0QW5jZXN0b3JJdGVyYXRvcihjb25zdCBUKiBjdXJyZW50KQor
ICAgIDogTGF5b3V0SXRlcmF0b3I8VD4obnVsbHB0ciwgY3VycmVudCkKK3sKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgTGF5b3V0QW5jZXN0b3JJdGVyYXRvcjxUPiYgTGF5b3V0
QW5jZXN0b3JJdGVyYXRvcjxUPjo6b3BlcmF0b3IrKygpCit7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PExheW91dEFuY2VzdG9ySXRlcmF0b3I8VD4mPihMYXlvdXRJdGVyYXRvcjxUPjo6dHJhdmVy
c2VBbmNlc3RvcigpKTsKK30KKworLy8gTGF5b3V0QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXIKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgTGF5b3V0QW5jZXN0b3JJdGVyYXRvckFkYXB0
ZXI8VD46OkxheW91dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyKGNvbnN0IFQqIGZpcnN0KQorICAg
IDogbV9maXJzdChmaXJzdCkKK3sKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUg
TGF5b3V0QW5jZXN0b3JJdGVyYXRvcjxUPiBMYXlvdXRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxU
Pjo6YmVnaW4oKSBjb25zdAoreworICAgIHJldHVybiBMYXlvdXRBbmNlc3Rvckl0ZXJhdG9yPFQ+
KG1fZmlyc3QpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSBMYXlvdXRBbmNl
c3Rvckl0ZXJhdG9yPFQ+IExheW91dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPFQ+OjplbmQoKSBj
b25zdAoreworICAgIHJldHVybiBMYXlvdXRBbmNlc3Rvckl0ZXJhdG9yPFQ+KCk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIGNvbnN0IFQqIExheW91dEFuY2VzdG9ySXRlcmF0
b3JBZGFwdGVyPFQ+OjpmaXJzdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZmlyc3Q7Cit9CisK
Ky8vIFN0YW5kYWxvbmUgZnVuY3Rpb25zCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5l
IExheW91dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPFQ+IGFuY2VzdG9yc09mVHlwZShjb25zdCBC
b3gmIGRlc2NlbmRhbnQpCit7CisgICAgY29uc3QgVCogZmlyc3QgPSBUcmF2ZXJzYWw6OmZpbmRB
bmNlc3Rvck9mVHlwZTxjb25zdCBUPihkZXNjZW5kYW50KTsKKyAgICByZXR1cm4gTGF5b3V0QW5j
ZXN0b3JJdGVyYXRvckFkYXB0ZXI8VD4oZmlyc3QpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK2lubGluZSBMYXlvdXRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxUPiBsaW5lYWdlT2ZUeXBl
KGNvbnN0IEJveCYgZmlyc3QpCit7CisgICAgaWYgKGlzTGF5b3V0Qm94T2ZUeXBlPFQ+KGZpcnN0
KSkKKyAgICAgICAgcmV0dXJuIExheW91dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPFQ+KHN0YXRp
Y19jYXN0PGNvbnN0IFQqPigmZmlyc3QpKTsKKyAgICByZXR1cm4gYW5jZXN0b3JzT2ZUeXBlPFQ+
KGZpcnN0KTsKK30KKworfQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDaGlsZEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDaGlsZEl0ZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNjNzc3
ZTA0OTcyNTdiZGU4ZjY1YmU4ZjAwOGEyN2E2ZDg1ZmI0NQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENoaWxkSXRlcmF0b3IuaApAQCAt
MCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTGF5
b3V0SXRlcmF0b3IuaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0IHsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitjbGFzcyBMYXlvdXRDaGlsZHRJdGVyYXRvciA6IHB1YmxpYyBMYXlvdXRJdGVy
YXRvcjxUPiB7CitwdWJsaWM6CisgICAgTGF5b3V0Q2hpbGR0SXRlcmF0b3IoY29uc3QgQ29udGFp
bmVyJiBwYXJlbnQpOworICAgIExheW91dENoaWxkdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lciYg
cGFyZW50LCBjb25zdCBUKiBjdXJyZW50KTsKKyAgICBMYXlvdXRDaGlsZHRJdGVyYXRvciYgb3Bl
cmF0b3IrKygpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBMYXlvdXRDaGls
ZHRJdGVyYXRvckFkYXB0ZXIgeworcHVibGljOgorICAgIExheW91dENoaWxkdEl0ZXJhdG9yQWRh
cHRlcihjb25zdCBDb250YWluZXImIHBhcmVudCk7CisgICAgTGF5b3V0Q2hpbGR0SXRlcmF0b3I8
VD4gYmVnaW4oKSBjb25zdDsKKyAgICBMYXlvdXRDaGlsZHRJdGVyYXRvcjxUPiBlbmQoKSBjb25z
dDsKKyAgICBjb25zdCBUKiBmaXJzdCgpIGNvbnN0OworICAgIGNvbnN0IFQqIGxhc3QoKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBjb25zdCBDb250YWluZXImIG1fcGFyZW50OworfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IExheW91dENoaWxkdEl0ZXJhdG9yQWRhcHRlcjxUPiBjaGlsZHJl
bk9mVHlwZShjb25zdCBDb250YWluZXImKTsKKworLy8gTGF5b3V0Q2hpbGR0SXRlcmF0b3IKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgTGF5b3V0Q2hpbGR0SXRlcmF0b3I8VD46Okxh
eW91dENoaWxkdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lciYgcGFyZW50KQorICAgIDogTGF5b3V0
SXRlcmF0b3I8VD4oJnBhcmVudCkKK3sKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citpbmxp
bmUgTGF5b3V0Q2hpbGR0SXRlcmF0b3I8VD46OkxheW91dENoaWxkdEl0ZXJhdG9yKGNvbnN0IENv
bnRhaW5lciYgcGFyZW50LCBjb25zdCBUKiBjdXJyZW50KQorICAgIDogTGF5b3V0SXRlcmF0b3I8
VD4oJnBhcmVudCwgY3VycmVudCkKK3sKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citpbmxp
bmUgTGF5b3V0Q2hpbGR0SXRlcmF0b3I8VD4mIExheW91dENoaWxkdEl0ZXJhdG9yPFQ+OjpvcGVy
YXRvcisrKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0Q2hpbGR0SXRlcmF0b3I8
VD4mPihMYXlvdXRJdGVyYXRvcjxUPjo6dHJhdmVyc2VOZXh0U2libGluZygpKTsKK30KKworLy8g
TGF5b3V0Q2hpbGR0SXRlcmF0b3JBZGFwdGVyCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5s
aW5lIExheW91dENoaWxkdEl0ZXJhdG9yQWRhcHRlcjxUPjo6TGF5b3V0Q2hpbGR0SXRlcmF0b3JB
ZGFwdGVyKGNvbnN0IENvbnRhaW5lciYgcGFyZW50KQorICAgIDogbV9wYXJlbnQocGFyZW50KQor
eworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSBMYXlvdXRDaGlsZHRJdGVyYXRv
cjxUPiBMYXlvdXRDaGlsZHRJdGVyYXRvckFkYXB0ZXI8VD46OmJlZ2luKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gTGF5b3V0Q2hpbGR0SXRlcmF0b3I8VD4obV9wYXJlbnQsIFRyYXZlcnNhbDo6Zmly
c3RDaGlsZDxUPihtX3BhcmVudCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGlu
ZSBMYXlvdXRDaGlsZHRJdGVyYXRvcjxUPiBMYXlvdXRDaGlsZHRJdGVyYXRvckFkYXB0ZXI8VD46
OmVuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExheW91dENoaWxkdEl0ZXJhdG9yPFQ+KG1fcGFy
ZW50KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgY29uc3QgVCogTGF5b3V0
Q2hpbGR0SXRlcmF0b3JBZGFwdGVyPFQ+OjpmaXJzdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFRy
YXZlcnNhbDo6Zmlyc3RDaGlsZDxUPihtX3BhcmVudCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgoraW5saW5lIGNvbnN0IFQqIExheW91dENoaWxkdEl0ZXJhdG9yQWRhcHRlcjxUPjo6bGFz
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFRyYXZlcnNhbDo6bGFzdENoaWxkPFQ+KG1fcGFyZW50
KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgTGF5b3V0Q2hpbGR0SXRlcmF0
b3JBZGFwdGVyPFQ+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0IENvbnRhaW5lciYgcGFyZW50KQorewor
ICAgIHJldHVybiBMYXlvdXRDaGlsZHRJdGVyYXRvckFkYXB0ZXI8VD4ocGFyZW50KTsKK30KKwor
fQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0SXRlcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDg5NGI4MjdjNzRlNzM5ZWIyNzUzODZkMmMxYjY0
ZmVlODlhYzIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0SXRlcmF0b3IuaApAQCAtMCwwICsxLDIzNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgeworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2NsYXNzIExheW91dEl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBMYXlvdXRJdGVyYXRv
cihjb25zdCBDb250YWluZXIqIHJvb3QpOworICAgIExheW91dEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lciogcm9vdCwgY29uc3QgVCogY3VycmVudCk7CisKKyAgICBjb25zdCBUJiBvcGVyYXRvcioo
KSBjb25zdDsKKyAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3Q7CisKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgTGF5b3V0SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKKyAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgTGF5b3V0SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKKworICAgIExheW91
dEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHQoKTsKKyAgICBMYXlvdXRJdGVyYXRvciYgdHJhdmVyc2VO
ZXh0U2libGluZygpOworICAgIExheW91dEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzU2libGlu
ZygpOworICAgIExheW91dEl0ZXJhdG9yJiB0cmF2ZXJzZUFuY2VzdG9yKCk7CisKK3ByaXZhdGU6
CisgICAgY29uc3QgQ29udGFpbmVyKiBtX3Jvb3Q7CisgICAgY29uc3QgVCogbV9jdXJyZW50Owor
fTsKKworLy8gU2ltaWxhciB0byBXVEY6OmlzPD4oKSBidXQgd2l0aG91dCB0aGUgc3RhdGljX2Fz
c2VydCgpIG1ha2luZyBzdXJlIHRoZSBjaGVjayBpcyBuZWNlc3NhcnkuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSBib29sIGlzTGF5b3V0Qm94T2ZUeXBlKGNvbnN0
IFUmIGxheW91dEJveCkgeyByZXR1cm4gVHlwZUNhc3RUcmFpdHM8Y29uc3QgVCwgY29uc3QgVT46
OmlzT2ZUeXBlKGxheW91dEJveCk7IH0KKworLy8gVHJhdmVyc2FsIGhlbHBlcnMKK25hbWVzcGFj
ZSBUcmF2ZXJzYWwgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGlu
ZSBjb25zdCBUKiBmaXJzdENoaWxkKFUmIGN1cnJlbnQpCit7CisgICAgYXV0byogb2JqZWN0ID0g
Y3VycmVudC5maXJzdENoaWxkKCk7CisgICAgd2hpbGUgKG9iamVjdCAmJiAhaXNMYXlvdXRCb3hP
ZlR5cGU8VD4oKm9iamVjdCkpCisgICAgICAgIG9iamVjdCA9IG9iamVjdC0+bmV4dFNpYmxpbmco
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVCo+KG9iamVjdCk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIGNvbnN0IFQqIGxhc3RDaGlsZChV
JiBjdXJyZW50KQoreworICAgIGF1dG8qIG9iamVjdCA9IGN1cnJlbnQubGFzdENoaWxkKCk7Cisg
ICAgd2hpbGUgKG9iamVjdCAmJiAhaXNMYXlvdXRCb3hPZlR5cGU8VD4oKm9iamVjdCkpCisgICAg
ICAgIG9iamVjdCA9IG9iamVjdC0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IFQqPihvYmplY3QpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KK2lubGluZSBjb25zdCBUKiBuZXh0U2libGluZyhVJiBjdXJyZW50KQoreworICAg
IGF1dG8qIG9iamVjdCA9IGN1cnJlbnQubmV4dFNpYmxpbmcoKTsKKyAgICB3aGlsZSAob2JqZWN0
ICYmICFpc0xheW91dEJveE9mVHlwZTxUPigqb2JqZWN0KSkKKyAgICAgICAgb2JqZWN0ID0gb2Jq
ZWN0LT5uZXh0U2libGluZygpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUKj4ob2Jq
ZWN0KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgY29u
c3QgVCogcHJldmlvdXNTaWJsaW5nKFUmIGN1cnJlbnQpCit7CisgICAgYXV0byogb2JqZWN0ID0g
Y3VycmVudC5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICB3aGlsZSAob2JqZWN0ICYmICFpc0xheW91
dEJveE9mVHlwZTxUPigqb2JqZWN0KSkKKyAgICAgICAgb2JqZWN0ID0gb2JqZWN0LT5wcmV2aW91
c1NpYmxpbmcoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVCo+KG9iamVjdCk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIGNvbnN0IFQqIGZpbmRBbmNlc3Rvck9m
VHlwZShjb25zdCBCb3gmIGN1cnJlbnQpCit7CisgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IGN1
cnJlbnQucGFyZW50KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnQoKSkg
eworICAgICAgICBpZiAoaXNMYXlvdXRCb3hPZlR5cGU8VD4oKmFuY2VzdG9yKSkKKyAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUKj4oYW5jZXN0b3IpOworICAgIH0KKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Citp
bmxpbmUgY29uc3QgVCogbmV4dEFuY2VzdG9yU2libGluZyhVJiBjdXJyZW50LCBjb25zdCBDb250
YWluZXIqIHN0YXlXaXRoaW4pCit7CisgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IGN1cnJlbnQu
cGFyZW50KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnQoKSkgeworICAg
ICAgICBpZiAoYW5jZXN0b3IgPT0gc3RheVdpdGhpbikKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICBpZiAoYXV0byogc2libGluZyA9IGFuY2VzdG9yLT5uZXh0U2libGluZygp
KQorICAgICAgICAgICAgcmV0dXJuIHNpYmxpbmc7CisgICAgfQorICAgIHJldHVybiBudWxscHRy
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSBjb25zdCBU
KiBuZXh0V2l0aGluKFUmIGN1cnJlbnQsIGNvbnN0IENvbnRhaW5lciogc3RheVdpdGhpbikKK3sK
KyAgICBpZiAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkKGN1cnJlbnQpKQorICAgICAgICByZXR1
cm4gY2hpbGQ7CisKKyAgICBpZiAoJmN1cnJlbnQgPT0gc3RheVdpdGhpbikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBpZiAoYXV0byogc2libGluZyA9IGN1cnJlbnQubmV4dFNpYmxp
bmcoKSkKKyAgICAgICAgcmV0dXJuIHNpYmxpbmc7CisKKyAgICByZXR1cm4gbmV4dEFuY2VzdG9y
U2libGluZyhjdXJyZW50LCBzdGF5V2l0aGluKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+CitpbmxpbmUgY29uc3QgVCogZmlyc3RXaXRoaW4oVSYgY3VycmVudCkKK3sK
KyAgICBhdXRvKiBkZXNjZW5kYW50ID0gY3VycmVudC5maXN0Q2hpbGQoKTsKKyAgICB3aGlsZSAo
ZGVzY2VuZGFudCAmJiAhaXNMYXlvdXRCb3hPZlR5cGU8VD4oKmRlc2NlbmRhbnQpKQorICAgICAg
ICBkZXNjZW5kYW50ID0gbmV4dFdpdGhpbigqZGVzY2VuZGFudCwgJmN1cnJlbnQpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBUKj4oZGVzY2VuZGFudCk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIGNvbnN0IFQqIG5leHQoVSYgY3VycmVudCwg
Y29uc3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0aGluKQoreworICAgIGF1dG8qIGRlc2NlbmRhbnQg
PSBuZXh0V2l0aGluKGN1cnJlbnQsIHN0YXlXaXRoaW4pOworICAgIHdoaWxlIChkZXNjZW5kYW50
ICYmICFpc0xheW91dEJveE9mVHlwZTxUPigqZGVzY2VuZGFudCkpCisgICAgICAgIGRlc2NlbmRh
bnQgPSBuZXh0V2l0aGluKCpkZXNjZW5kYW50LCBzdGF5V2l0aGluKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgVCo+KGRlc2NlbmRhbnQpOworfQorCit9CisKKy8vIExheW91dEl0ZXJh
dG9yCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIExheW91dEl0ZXJhdG9yPFQ+OjpM
YXlvdXRJdGVyYXRvcihjb25zdCBDb250YWluZXIqIHJvb3QpCisgICAgOiBtX3Jvb3Qocm9vdCkK
KyAgICAsIG1fY3VycmVudChudWxscHRyKQoreworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2lubGluZSBMYXlvdXRJdGVyYXRvcjxUPjo6TGF5b3V0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVy
KiByb290LCBjb25zdCBUKiBjdXJyZW50KQorICAgIDogbV9yb290KHJvb3QpCisgICAgLCBtX2N1
cnJlbnQoY3VycmVudCkKK3sKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgTGF5
b3V0SXRlcmF0b3I8VD4mIExheW91dEl0ZXJhdG9yPFQ+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkK
K3sKKyAgICBBU1NFUlQobV9jdXJyZW50KTsKKyAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw6Om5l
eHRTaWJsaW5nPFQ+KCptX2N1cnJlbnQpOworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgTGF5b3V0SXRlcmF0b3I8VD4mIExheW91dEl0ZXJhdG9y
PFQ+Ojp0cmF2ZXJzZU5leHQoKQoreworICAgIEFTU0VSVChtX2N1cnJlbnQpOworICAgIG1fY3Vy
cmVudCA9IFRyYXZlcnNhbDo6bmV4dDxUPigqbV9jdXJyZW50LCBtX3Jvb3QpOworICAgIHJldHVy
biAqdGhpczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgTGF5b3V0SXRlcmF0
b3I8VD4mIExheW91dEl0ZXJhdG9yPFQ+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZygpCit7Cisg
ICAgQVNTRVJUKG1fY3VycmVudCk7CisgICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsOjpwcmV2aW91
c1NpYmxpbmc8VD4obV9jdXJyZW50KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgTGF5b3V0SXRlcmF0b3I8VD4mIExheW91dEl0ZXJhdG9y
PFQ+Ojp0cmF2ZXJzZUFuY2VzdG9yKCkKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50KTsKKyAgICBB
U1NFUlQobV9jdXJyZW50ICE9IG1fcm9vdCk7CisgICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsOjpm
aW5kQW5jZXN0b3JPZlR5cGU8Y29uc3QgVD4oKm1fY3VycmVudCk7CisgICAgcmV0dXJuICp0aGlz
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSBjb25zdCBUJiBMYXlvdXRJdGVy
YXRvcjxUPjo6b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50KTsKKyAg
ICByZXR1cm4gKm1fY3VycmVudDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUg
Y29uc3QgVCogTGF5b3V0SXRlcmF0b3I8VD46Om9wZXJhdG9yLT4oKSBjb25zdAoreworICAgIEFT
U0VSVChtX2N1cnJlbnQpOworICAgIHJldHVybiBtX2N1cnJlbnQ7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgoraW5saW5lIGJvb2wgTGF5b3V0SXRlcmF0b3I8VD46Om9wZXJhdG9yPT0oY29u
c3QgTGF5b3V0SXRlcmF0b3ImIG90aGVyKSBjb25zdAoreworICAgIEFTU0VSVChtX3Jvb3QgPT0g
b3RoZXIubV9yb290KTsKKyAgICByZXR1cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3VycmVudDsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgYm9vbCBMYXlvdXRJdGVyYXRvcjxU
Pjo6b3BlcmF0b3IhPShjb25zdCBMYXlvdXRJdGVyYXRvciYgb3RoZXIpIGNvbnN0Cit7CisgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworfQorCit9Cit9CisjaW5jbHVkZSAiTGF5b3V0QW5j
ZXN0b3JJdGVyYXRvci5oIgorI2luY2x1ZGUgIkxheW91dENoaWxkSXRlcmF0b3IuaCIKKworI2Vu
ZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>