<?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>211023</bug_id>
          
          <creation_ts>2020-04-25 07:38:47 -0700</creation_ts>
          <short_desc>[LFC][TFC] Cleanup TableFormattingContext::layoutInFlowContent</short_desc>
          <delta_ts>2020-04-25 08:23:19 -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>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>1645591</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-04-25 07:38:47 -0700</bug_when>
    <thetext>move some code to dedicated functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645593</commentid>
    <comment_count>1</comment_count>
      <attachid>397566</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-04-25 07:41:47 -0700</bug_when>
    <thetext>Created attachment 397566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645601</commentid>
    <comment_count>2</comment_count>
      <attachid>397566</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-04-25 08:19:46 -0700</bug_when>
    <thetext>Comment on attachment 397566
Patch

Thanks Sam!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645602</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-25 08:22:09 -0700</bug_when>
    <thetext>Committed r260703: &lt;https://trac.webkit.org/changeset/260703&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 397566.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645604</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-25 08:23:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/62371376&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397566</attachid>
            <date>2020-04-25 07:41:47 -0700</date>
            <delta_ts>2020-04-25 08:22:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211023-20200425074146.patch</filename>
            <type>text/plain</type>
            <size>19850</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRkOWFjYzU0NGY1ZGQz
NTFjOTAzZTRkZTFjOTgyMjE2NGI2ODU0YS4uY2U5NGQ1MjNmOWE0NDVhN2Q2YzA3ZjgzM2UzZWIy
NmM0MzVjZjNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA0LTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bVEZDXSBDbGVhbnVw
IFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTAyMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgc29tZSBjb2RlIHRvIGRl
ZGljYXRlZCBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1Rh
YmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJs
ZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yQ2Vs
bHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpz
ZXRVc2VkR2VvbWV0cnlGb3JSb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVG
b3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yU2VjdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRDZWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUFu
ZERpc3RyaWJ1dGVFeHRyYUhvcml6b250YWxTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVBbmREaXN0cmlidXRlRXh0cmFWZXJ0
aWNhbFNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29u
dGV4dDo6aW5pdGlhbGl6ZURpc3BsYXlCb3hUb0JsYW5rIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0Q29tcHV0ZWRH
ZW9tZXRyeUZvclJvd3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJs
ZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRDb21wdXRlZEdlb21ldHJ5Rm9yU2VjdGlvbnMpOiBEZWxl
dGVkLgorICAgICAgICAqIGxheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29u
dGV4dC5oOgorICAgICAgICAqIGxheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNlbGxIZWlnaCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZENv
bHVtbldpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OnRhYmxlQ2VsbEhlaWdodEFuZE1hcmdpbiBjb25zdCk6IERl
bGV0ZWQuCisKIDIwMjAtMDQtMjQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTEZDXVtURkNdIFRha2UgZmlyc3QgaW4tZmxvdyB0YWJsZS1yb3cgYmFzZWxpbmUg
aW50byBhY2NvdW50IHdoZW4gY29tcHV0aW5nIGNlbGwgYmFzZWxpbmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0
dGluZ0NvbnRleHQuY3BwCmluZGV4IGI2YmQ1Y2NkMzk5ZGRlZjk4NjdjMjc3OGE2MDc3NmY3YjA5
OTU0NzIuLjMzMjU0NDI4OTNmOWMwOTkxOGJmNmIwN2UzNzZkMDBkMjk4YTMzN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9U
YWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNDIsNzEgKzQyLDEwNCBAQCBuYW1lc3BhY2Ug
TGF5b3V0IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRhYmxlRm9ybWF0dGluZ0Nv
bnRleHQpOwogCi0vLyBGSVhNRTogVGhpcyBpcyB0ZW1wb3JhcnkuIFJlbW92ZSB0aGlzIGZ1bmN0
aW9uIHdoZW4gdGFibGUgZm9ybWF0dGluZyBpcyBjb21wbGV0ZS4KLXZvaWQgVGFibGVGb3JtYXR0
aW5nQ29udGV4dDo6aW5pdGlhbGl6ZURpc3BsYXlCb3hUb0JsYW5rKERpc3BsYXk6OkJveCYgZGlz
cGxheUJveCkgY29uc3QKLXsKLSAgICBkaXNwbGF5Qm94LnNldEJvcmRlcih7IH0pOwotICAgIGRp
c3BsYXlCb3guc2V0UGFkZGluZyh7IH0pOwotICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1h
cmdpbih7IH0pOwotICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKHsg
fSk7Ci0gICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih7IHsgfSwgeyB9IH0pOwotICAg
IGRpc3BsYXlCb3guc2V0VG9wTGVmdCh7IH0pOwotICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJv
eFdpZHRoKHsgfSk7Ci0gICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KHsgfSk7Ci19
Ci0KIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdGFibGVzLTMvI3RhYmxlLWxheW91dC1h
bGdvcml0aG0KIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQo
Y29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIFRhYmxlRm9ybWF0dGlu
Z1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUpCiAgICAgOiBGb3JtYXR0aW5nQ29udGV4dChmb3JtYXR0
aW5nQ29udGV4dFJvb3QsIGZvcm1hdHRpbmdTdGF0ZSkKIHsKIH0KIAotdm9pZCBUYWJsZUZvcm1h
dHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZh
bGlkYXRpb25TdGF0ZSwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29u
c3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMp
Cit2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxp
ZGF0aW9uU3RhdGUmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25z
dHJhaW50cywgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYgdmVydGljYWxDb25zdHJhaW50cykK
IHsKLSAgICBhdXRvJiBncmlkID0gZm9ybWF0dGluZ1N0YXRlKCkudGFibGVHcmlkKCk7Ci0gICAg
YXV0byYgY29sdW1uTGlzdCA9IGdyaWQuY29sdW1ucygpLmxpc3QoKTsKLSAgICBhdXRvJiByb3dM
aXN0ID0gZ3JpZC5yb3dzKCkubGlzdCgpOwogICAgIC8vIDEuIENvbXB1dGUgd2lkdGggYW5kIGhl
aWdodCBmb3IgdGhlIGdyaWQuCiAgICAgY29tcHV0ZUFuZERpc3RyaWJ1dGVFeHRyYUhvcml6b250
YWxTcGFjZShob3Jpem9udGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRoKTsKICAgICBjb21wdXRl
QW5kRGlzdHJpYnV0ZUV4dHJhVmVydGljYWxTcGFjZShob3Jpem9udGFsQ29uc3RyYWludHMubG9n
aWNhbFdpZHRoLCB2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQpOwotICAgIC8vIDIu
IFBvc2l0aW9uIGNvbHVtbnMuCi0gICAgYXV0byBob3Jpem9udGFsU3BhY2luZyA9IGdyaWQuaG9y
aXpvbnRhbFNwYWNpbmcoKTsKLSAgICBhdXRvIGNvbHVtbkxvZ2ljYWxMZWZ0ID0gaG9yaXpvbnRh
bFNwYWNpbmc7Ci0gICAgZm9yIChhdXRvJiBjb2x1bW4gOiBjb2x1bW5MaXN0KSB7Ci0gICAgICAg
IGNvbHVtbi5zZXRMb2dpY2FsTGVmdChjb2x1bW5Mb2dpY2FsTGVmdCk7Ci0gICAgICAgIGNvbHVt
bkxvZ2ljYWxMZWZ0ICs9IGNvbHVtbi5sb2dpY2FsV2lkdGgoKSArIGhvcml6b250YWxTcGFjaW5n
OwotICAgIH0KLSAgICAvLyAzLiBQb3NpdGlvbiByb3dzLgotICAgIGF1dG8gdmVydGljYWxTcGFj
aW5nID0gZ3JpZC52ZXJ0aWNhbFNwYWNpbmcoKTsKLSAgICBhdXRvIHJvd0xvZ2ljYWxUb3AgPSB2
ZXJ0aWNhbFNwYWNpbmc7Ci0gICAgZm9yIChhdXRvJiByb3cgOiByb3dMaXN0KSB7Ci0gICAgICAg
IHJvdy5zZXRMb2dpY2FsVG9wKHJvd0xvZ2ljYWxUb3ApOwotICAgICAgICByb3dMb2dpY2FsVG9w
ICs9IHJvdy5sb2dpY2FsSGVpZ2h0KCkgKyB2ZXJ0aWNhbFNwYWNpbmc7Ci0gICAgfQotICAgIC8v
IDQuIFBvc2l0aW9uIGFuZCBzaXplIGNlbGxzLgorICAgIC8vIDIuIEZpbmFsaXplIGNlbGxzLgor
ICAgIHNldFVzZWRHZW9tZXRyeUZvckNlbGxzKGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2Fs
V2lkdGgpOworICAgIC8vIDMuIEZpbmFsaXplIHJvd3MuCisgICAgc2V0VXNlZEdlb21ldHJ5Rm9y
Um93cyhob3Jpem9udGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRoKTsKKyAgICAvLyA0LiBGaW5h
bGl6ZSBzZWN0aW9ucy4KKyAgICBzZXRVc2VkR2VvbWV0cnlGb3JTZWN0aW9ucyhob3Jpem9udGFs
Q29uc3RyYWludHMubG9naWNhbFdpZHRoKTsKK30KKwordm9pZCBUYWJsZUZvcm1hdHRpbmdDb250
ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JDZWxscyhMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250
YWxTcGFjZSkKK3sKKyAgICBhdXRvJiBncmlkID0gZm9ybWF0dGluZ1N0YXRlKCkudGFibGVHcmlk
KCk7CisgICAgYXV0byYgY29sdW1uTGlzdCA9IGdyaWQuY29sdW1ucygpLmxpc3QoKTsKKyAgICBh
dXRvJiByb3dMaXN0ID0gZ3JpZC5yb3dzKCkubGlzdCgpOworICAgIC8vIEZpbmFsIHRhYmxlIGNl
bGwgbGF5b3V0LiBBdCB0aGlzIHBvaW50IGFsbCBwZXJjZW50YWdlIHZhbHVlcyBjYW4gYmUgcmVz
b2x2ZWQuCiAgICAgZm9yIChhdXRvJiBjZWxsIDogZ3JpZC5jZWxscygpKSB7CiAgICAgICAgIGF1
dG8mIGNlbGxEaXNwbGF5Qm94ID0gZm9ybWF0dGluZ1N0YXRlKCkuZGlzcGxheUJveChjZWxsLT5i
b3goKSk7CiAgICAgICAgIGNlbGxEaXNwbGF5Qm94LnNldFRvcChyb3dMaXN0W2NlbGwtPnN0YXJ0
Um93KCldLmxvZ2ljYWxUb3AoKSk7CiAgICAgICAgIGNlbGxEaXNwbGF5Qm94LnNldExlZnQoY29s
dW1uTGlzdFtjZWxsLT5zdGFydENvbHVtbigpXS5sb2dpY2FsTGVmdCgpKTsKKyAgICAgICAgYXV0
byByb3dIZWlnaHQgPSByb3dMaXN0W2NlbGwtPnN0YXJ0Um93KCldLmxvZ2ljYWxIZWlnaHQoKTsK
KyAgICAgICAgbGF5b3V0Q2VsbCgqY2VsbCwgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCByb3dI
ZWlnaHQpOworICAgICAgICAvLyBGSVhNRTogRmluZCBvdXQgaWYgaXQgaXMgb2sgdG8gdXNlIHRo
ZSByZWd1bGFyIHBhZGRpbmcgaGVyZSB0byBhbGlnbiB0aGUgY29udGVudCBib3ggaW5zaWRlIGEg
dGFsbCBjZWxsIG9yIHdlIG5lZWQgdG8gCisgICAgICAgIC8vIHVzZSBzb21lIGtpbmQgb2YgaW50
cmluc2ljIHBhZGRpbmcgc2ltaWxhciB0byBSZW5kZXJUYWJsZUNlbGwuCisgICAgICAgIGF1dG8g
dmVydGljYWxCb3JkZXIgPSBjZWxsRGlzcGxheUJveC52ZXJ0aWNhbEJvcmRlcigpOworICAgICAg
ICBhdXRvIGNvbnRlbnRIZWlnaHQgPSBjZWxsRGlzcGxheUJveC5jb250ZW50Qm94SGVpZ2h0KCk7
CisgICAgICAgIGF1dG8gaW50cmluc2ljVmVydGljYWxQYWRkaW5nID0gc3RkOjptYXgoMF9sdSwg
cm93SGVpZ2h0IC0gdmVydGljYWxCb3JkZXIgLSBjb250ZW50SGVpZ2h0KTsKKyAgICAgICAgLy8g
RklYTUU6IFRha2UgdmVydGljYWwtYWxpZ24gaW50byBhY2NvdW50IGhlcmUuCisgICAgICAgIGNl
bGxEaXNwbGF5Qm94LnNldFZlcnRpY2FsUGFkZGluZyh7IGludHJpbnNpY1ZlcnRpY2FsUGFkZGlu
ZyAvIDIsIGludHJpbnNpY1ZlcnRpY2FsUGFkZGluZyAvIDIgfSk7CisgICAgfQorfQorCit2b2lk
IFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvclJvd3MoTGF5b3V0VW5p
dCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UpCit7CisgICAgYXV0byYgZ3JpZCA9IGZvcm1hdHRp
bmdTdGF0ZSgpLnRhYmxlR3JpZCgpOworICAgIGF1dG8gcm93V2lkdGggPSBncmlkLmNvbHVtbnMo
KS5sb2dpY2FsV2lkdGgoKSArIDIgKiBncmlkLmhvcml6b250YWxTcGFjaW5nKCk7CisgICAgYXV0
byByb3dMb2dpY2FsVG9wID0gZ3JpZC52ZXJ0aWNhbFNwYWNpbmcoKTsKKyAgICBmb3IgKGF1dG8m
IHJvdyA6IGdyaWQucm93cygpLmxpc3QoKSkgeworICAgICAgICBhdXRvJiByb3dCb3ggPSByb3cu
Ym94KCk7CisgICAgICAgIGF1dG8mIHJvd0Rpc3BsYXlCb3ggPSBmb3JtYXR0aW5nU3RhdGUoKS5k
aXNwbGF5Qm94KHJvd0JveCk7CisgICAgICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKHJvd0Jv
eCwgSG9yaXpvbnRhbENvbnN0cmFpbnRzIHsgeyB9LCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2Ug
fSk7CisgICAgICAgIC8vIEludGVybmFsIHRhYmxlIGVsZW1lbnRzIGRvIG5vdCBoYXZlIG1hcmdp
bnMuCisgICAgICAgIHJvd0Rpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1hcmdpbih7IH0pOworICAg
ICAgICByb3dEaXNwbGF5Qm94LnNldEhvcml6b250YWxDb21wdXRlZE1hcmdpbih7IH0pOworICAg
ICAgICByb3dEaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHsgeyB9LCB7IH0gfSk7CisKKyAg
ICAgICAgcm93RGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KHJvdy5sb2dpY2FsSGVpZ2h0
KCkpOworICAgICAgICByb3dEaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aChyb3dXaWR0aCk7
CisgICAgICAgIHJvd0Rpc3BsYXlCb3guc2V0VG9wKHJvd0xvZ2ljYWxUb3ApOworICAgICAgICBy
b3dEaXNwbGF5Qm94LnNldExlZnQoeyB9KTsKKworICAgICAgICByb3cuc2V0TG9naWNhbFRvcChy
b3dMb2dpY2FsVG9wKTsKKyAgICAgICAgcm93TG9naWNhbFRvcCArPSByb3cubG9naWNhbEhlaWdo
dCgpICsgZ3JpZC52ZXJ0aWNhbFNwYWNpbmcoKTsKKyAgICB9Cit9CisKK3ZvaWQgVGFibGVGb3Jt
YXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yU2VjdGlvbnMoTGF5b3V0VW5pdCBhdmFp
bGFibGVIb3Jpem9udGFsU3BhY2UpCit7CisgICAgYXV0byYgZ3JpZCA9IGZvcm1hdHRpbmdTdGF0
ZSgpLnRhYmxlR3JpZCgpOworICAgIGF1dG8gc2VjdGlvbldpZHRoID0gZ3JpZC5jb2x1bW5zKCku
bG9naWNhbFdpZHRoKCkgKyAyICogZ3JpZC5ob3Jpem9udGFsU3BhY2luZygpOworCisgICAgZm9y
IChhdXRvJiBzZWN0aW9uIDogY2hpbGRyZW5PZlR5cGU8Q29udGFpbmVyQm94Pihyb290KCkpKSB7
CisgICAgICAgIGF1dG8mIHNlY3Rpb25EaXNwbGF5Qm94ID0gZm9ybWF0dGluZ1N0YXRlKCkuZGlz
cGxheUJveChzZWN0aW9uKTsKKyAgICAgICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoc2VjdGlv
biwgSG9yaXpvbnRhbENvbnN0cmFpbnRzIHsgeyB9LCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2Ug
fSk7CisgICAgICAgIC8vIEludGVybmFsIHRhYmxlIGVsZW1lbnRzIGRvIG5vdCBoYXZlIG1hcmdp
bnMuCisgICAgICAgIHNlY3Rpb25EaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4oeyB9KTsK
KyAgICAgICAgc2VjdGlvbkRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKHsg
fSk7CisgICAgICAgIHNlY3Rpb25EaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHsgeyB9LCB7
IH0gfSk7CisKKyAgICAgICAgc2VjdGlvbkRpc3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKHNl
Y3Rpb25XaWR0aCk7CisgICAgICAgIHNlY3Rpb25EaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWln
aHQoZ3JpZC5yb3dzKCkubGlzdCgpLmxhc3QoKS5sb2dpY2FsQm90dG9tKCkgKyBncmlkLnZlcnRp
Y2FsU3BhY2luZygpKTsKKyAgICAgICAgLy8gRklYTUU6IFBvc2l0aW9uIHRhYmxlIHNlY3Rpb25z
IHByb3Blcmx5LgorICAgICAgICBzZWN0aW9uRGlzcGxheUJveC5zZXRUb3BMZWZ0KHsgfSk7CiAg
ICAgfQotICAgIC8vIDUuIEZpbmFsIHRhYmxlIGNlbGwgbGF5b3V0LiBBdCB0aGlzIHBvaW50IGFs
bCBwZXJjZW50YWdlIHZhbHVlcyBjYW4gYmUgcmVzb2x2ZWQuCi0gICAgYXV0byYgY2VsbExpc3Qg
PSBncmlkLmNlbGxzKCk7Ci0gICAgQVNTRVJUKCFjZWxsTGlzdC5pc0VtcHR5KCkpOwotICAgIGZv
ciAoYXV0byYgY2VsbCA6IGNlbGxMaXN0KQotICAgICAgICBsYXlvdXRDZWxsKCpjZWxsLCBpbnZh
bGlkYXRpb25TdGF0ZSwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aCwgZ3JpZC5y
b3dzKCkubGlzdCgpW2NlbGwtPnN0YXJ0Um93KCldLmxvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgLy8g
My4gRmluYWxpemUgc2l6ZSBhbmQgcG9zaXRpb24uCi0gICAgc2V0Q29tcHV0ZWRHZW9tZXRyeUZv
clNlY3Rpb25zKCk7Ci0gICAgc2V0Q29tcHV0ZWRHZW9tZXRyeUZvclJvd3MoKTsKIH0KIAotdm9p
ZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRDZWxsKGNvbnN0IFRhYmxlR3JpZDo6Q2Vs
bCYgY2VsbCwgSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvblN0YXRlLCBMYXlvdXRVbml0
IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZENlbGxI
ZWlnaHQpCit2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dENlbGwoY29uc3QgVGFi
bGVHcmlkOjpDZWxsJiBjZWxsLCBMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSwg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZENlbGxIZWlnaHQpCiB7CisgICAgQVNTRVJUKGNlbGwu
Ym94KCkuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpOworCiAgICAgYXV0byYg
Y2VsbEJveCA9IGNlbGwuYm94KCk7Ci0gICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoY2VsbEJv
eCwgSG9yaXpvbnRhbENvbnN0cmFpbnRzIHsgeyB9LCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2Ug
fSk7Ci0gICAgLy8gTWFyZ2lucyBkbyBub3QgYXBwbHkgdG8gaW50ZXJuYWwgdGFibGUgZWxlbWVu
dHMuCiAgICAgYXV0byYgY2VsbERpc3BsYXlCb3ggPSBmb3JtYXR0aW5nU3RhdGUoKS5kaXNwbGF5
Qm94KGNlbGxCb3gpOworCisgICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoY2VsbEJveCwgSG9y
aXpvbnRhbENvbnN0cmFpbnRzIHsgeyB9LCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UgfSk7Cisg
ICAgLy8gSW50ZXJuYWwgdGFibGUgZWxlbWVudHMgZG8gbm90IGhhdmUgbWFyZ2lucy4KICAgICBj
ZWxsRGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKHsgfSk7CiAgICAgY2VsbERpc3BsYXlC
b3guc2V0SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKHsgfSk7CisgICAgY2VsbERpc3BsYXlCb3gu
c2V0VmVydGljYWxNYXJnaW4oeyB7IH0sIHsgfSB9KTsKKwogICAgIGF1dG8gYXZhaWxhYmxlU3Bh
Y2VGb3JDb250ZW50ID0gWyZdIHsKICAgICAgICAgYXV0byYgZ3JpZCA9IGZvcm1hdHRpbmdTdGF0
ZSgpLnRhYmxlR3JpZCgpOwogICAgICAgICBhdXRvJiBjb2x1bW5MaXN0ID0gZ3JpZC5jb2x1bW5z
KCkubGlzdCgpOwpAQCAtMTE5LDI1ICsxNTIsMTMgQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250
ZXh0OjpsYXlvdXRDZWxsKGNvbnN0IFRhYmxlR3JpZDo6Q2VsbCYgY2VsbCwgSW52YWxpZGF0aW8K
ICAgICB9KCk7CiAgICAgY2VsbERpc3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKGF2YWlsYWJs
ZVNwYWNlRm9yQ29udGVudCk7CiAKLSAgICBBU1NFUlQoY2VsbEJveC5lc3RhYmxpc2hlc0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgaWYgKGNlbGxCb3guaGFzSW5GbG93T3JGbG9hdGlu
Z0NoaWxkKCkpIHsKLSAgICAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dEZvckNlbGxDb250ZW50
ID0gTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY2VsbEJveCwgbGF5b3V0
U3RhdGUoKSk7CiAgICAgICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yQ2VsbENvbnRl
bnQgPSBHZW9tZXRyeTo6aG9yaXpvbnRhbENvbnN0cmFpbnRzRm9ySW5GbG93KGNlbGxEaXNwbGF5
Qm94KTsKICAgICAgICAgYXV0byB2ZXJ0aWNhbENvbnN0cmFpbnRzRm9yQ2VsbENvbnRlbnQgPSBW
ZXJ0aWNhbENvbnN0cmFpbnRzIHsgY2VsbERpc3BsYXlCb3guY29udGVudEJveFRvcCgpLCB1c2Vk
Q2VsbEhlaWdodCB9OwotICAgICAgICBmb3JtYXR0aW5nQ29udGV4dEZvckNlbGxDb250ZW50LT5s
YXlvdXRJbkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBob3Jpem9udGFsQ29uc3RyYWlu
dHNGb3JDZWxsQ29udGVudCwgdmVydGljYWxDb25zdHJhaW50c0ZvckNlbGxDb250ZW50KTsKKyAg
ICAgICAgYXV0byBpbnZhbGlkYXRpb25TdGF0ZSA9IEludmFsaWRhdGlvblN0YXRlIHsgfTsKKyAg
ICAgICAgTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY2VsbEJveCwgbGF5
b3V0U3RhdGUoKSktPmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGhvcml6
b250YWxDb25zdHJhaW50c0ZvckNlbGxDb250ZW50LCB2ZXJ0aWNhbENvbnN0cmFpbnRzRm9yQ2Vs
bENvbnRlbnQpOwogICAgIH0KLSAgICBjZWxsRGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih7
IHsgfSwgeyB9IH0pOwotICAgIGF1dG8gY29udGVudEhlaWdodCA9IGdlb21ldHJ5KCkudGFibGVD
ZWxsSGVpZ2h0QW5kTWFyZ2luKGNlbGxCb3gpLmNvbnRlbnRIZWlnaHQ7Ci0gICAgaWYgKHVzZWRD
ZWxsSGVpZ2h0KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBGaW5kIG91dCBpZiBpdCBpcyBvayB0byB1
c2UgdGhlIHJlZ3VsYXIgcGFkZGluZyBoZXJlIHRvIGFsaWduIHRoZSBjb250ZW50IGJveCBpbnNp
ZGUgYSB0YWxsIGNlbGwgb3Igd2UgbmVlZCB0byAKLSAgICAgICAgLy8gdXNlIHNvbWUga2luZCBv
ZiBpbnRyaW5zaWMgcGFkZGluZyBzaW1pbGFyIHRvIFJlbmRlclRhYmxlQ2VsbC4KLSAgICAgICAg
YXV0byB2ZXJ0aWNhbEJvcmRlciA9IGNlbGxEaXNwbGF5Qm94LnZlcnRpY2FsQm9yZGVyKCk7Ci0g
ICAgICAgIGF1dG8gaW50cmluc2ljVmVydGljYWxQYWRkaW5nID0gc3RkOjptYXgoMF9sdSwgKnVz
ZWRDZWxsSGVpZ2h0IC0gdmVydGljYWxCb3JkZXIgLSBjb250ZW50SGVpZ2h0KTsKLSAgICAgICAg
Ly8gRklYTUU6IFRha2UgdmVydGljYWwtYWxpZ24gaW50byBhY2NvdW50IGhlcmUuCi0gICAgICAg
IGNlbGxEaXNwbGF5Qm94LnNldFZlcnRpY2FsUGFkZGluZyh7IGludHJpbnNpY1ZlcnRpY2FsUGFk
ZGluZyAvIDIsIGludHJpbnNpY1ZlcnRpY2FsUGFkZGluZyAvIDIgfSk7Ci0gICAgfQotICAgIGNl
bGxEaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoY29udGVudEhlaWdodCk7Ci0gICAgLy8g
RklYTUU6IENoZWNrIHdoYXQgdG8gZG8gd2l0aCBvdXQtb2YtZmxvdyBjb250ZW50LgorICAgIGNl
bGxEaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoZ2VvbWV0cnkoKS5jZWxsSGVpZ2goY2Vs
bEJveCkpOwogfQogCiBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50
cyBUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMoKQpAQCAtNDIyLDE2ICs0NDMsMjAgQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlQW5kRGlzdHJpYnV0ZUV4dHJhSG9yaXpvbnRhbFNwYWNlKExheW91dFVuaXQKICAgICAg
ICAgICAgIGFkanVzdGFibGVkSG9yaXpvbnRhbFNwYWNlICs9IGNvbHVtbkluaXRpYWxXaWR0aC0+
dmFsdWU7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBTZXQgZmluaWFsIGhvcml6b250YWwgcG9z
aXRpb24gYW5kIHdpZHRoLgorICAgICAgICBmbG9hdCBjb2x1bW5Mb2dpY2FsTGVmdCA9IGdyaWQu
aG9yaXpvbnRhbFNwYWNpbmcoKTsKICAgICAgICAgZm9yIChzaXplX3QgY29sdW1uSW5kZXggPSAw
OyBjb2x1bW5JbmRleCA8IGNvbHVtbnMuc2l6ZSgpOyArK2NvbHVtbkluZGV4KSB7CiAgICAgICAg
ICAgICBhdXRvJiBjb2x1bW4gPSBjb2x1bW5zLmxpc3QoKVtjb2x1bW5JbmRleF07CiAgICAgICAg
ICAgICBhdXRvIGluaXRpYWxXaWR0aCA9IGNvbHVtbkluaXRpYWxXaWR0aHNbY29sdW1uSW5kZXhd
LT52YWx1ZTsKKyAgICAgICAgICAgIGF1dG8gY29sdW1uV2lkdGggPSBpbml0aWFsV2lkdGg7CiAK
LSAgICAgICAgICAgIGlmICghZXh0cmFIb3Jpem9udGFsU3BhY2UgfHwgY29sdW1uSW5pdGlhbFdp
ZHRoc1tjb2x1bW5JbmRleF0tPmlzRml4ZWQpIHsKLSAgICAgICAgICAgICAgICBjb2x1bW4uc2V0
TG9naWNhbFdpZHRoKExheW91dFVuaXQgeyBpbml0aWFsV2lkdGggfSk7Ci0gICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoZXh0cmFIb3Jpem9udGFsU3BhY2UgJiYgIWNv
bHVtbkluaXRpYWxXaWR0aHNbY29sdW1uSW5kZXhdLT5pc0ZpeGVkKSB7CisgICAgICAgICAgICAg
ICAgYXV0byBjb2x1bW5FeHRyYVNwYWNlID0gZXh0cmFIb3Jpem9udGFsU3BhY2UgLyBhZGp1c3Rh
YmxlZEhvcml6b250YWxTcGFjZSAqIGluaXRpYWxXaWR0aDsKKyAgICAgICAgICAgICAgICBjb2x1
bW5XaWR0aCA9IGluaXRpYWxXaWR0aCArIGNvbHVtbkV4dHJhU3BhY2U7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBhdXRvIGNvbHVtbkV4dHJhU3BhY2UgPSBleHRyYUhvcml6b250YWxTcGFj
ZSAvIGFkanVzdGFibGVkSG9yaXpvbnRhbFNwYWNlICogaW5pdGlhbFdpZHRoOwotICAgICAgICAg
ICAgY29sdW1uLnNldExvZ2ljYWxXaWR0aChMYXlvdXRVbml0IHsgaW5pdGlhbFdpZHRoICsgY29s
dW1uRXh0cmFTcGFjZSB9KTsKKyAgICAgICAgICAgIGNvbHVtbi5zZXRMb2dpY2FsTGVmdChMYXlv
dXRVbml0IHtjb2x1bW5Mb2dpY2FsTGVmdCB9KTsKKyAgICAgICAgICAgIGNvbHVtbi5zZXRMb2dp
Y2FsV2lkdGgoTGF5b3V0VW5pdCB7IGNvbHVtbldpZHRoIH0pOworICAgICAgICAgICAgY29sdW1u
TG9naWNhbExlZnQgKz0gY29sdW1uV2lkdGggKyBncmlkLmhvcml6b250YWxTcGFjaW5nKCk7CiAg
ICAgICAgIH0KICAgICB9OwogCkBAIC00NjIsOCArNDg3LDcgQEAgdm9pZCBUYWJsZUZvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlQW5kRGlzdHJpYnV0ZUV4dHJhVmVydGljYWxTcGFjZShMYXlvdXRV
bml0IGEKICAgICAgICAgICAgIGF1dG8mIHNsb3QgPSAqZ3JpZC5zbG90KHsgY29sdW1uSW5kZXgs
IHJvd0luZGV4IH0pOwogICAgICAgICAgICAgaWYgKHNsb3QuaXNDb2x1bW5TcGFubmVkKCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBhdXRvIGludmFsaWRhdGlvblN0
YXRlID0gSW52YWxpZGF0aW9uU3RhdGUgeyB9OwotICAgICAgICAgICAgbGF5b3V0Q2VsbChzbG90
LmNlbGwoKSwgaW52YWxpZGF0aW9uU3RhdGUsIGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSk7Cisg
ICAgICAgICAgICBsYXlvdXRDZWxsKHNsb3QuY2VsbCgpLCBhdmFpbGFibGVIb3Jpem9udGFsU3Bh
Y2UpOwogICAgICAgICAgICAgLy8gVGhlIG1pbmltdW0gaGVpZ2h0IG9mIGEgcm93ICh3aXRob3V0
IHNwYW5uaW5nLXJlbGF0ZWQgaGVpZ2h0IGRpc3RyaWJ1dGlvbikgaXMgZGVmaW5lZCBhcyB0aGUg
aGVpZ2h0IG9mIGFuIGh5cG90aGV0aWNhbAogICAgICAgICAgICAgLy8gbGluZWJveCBjb250YWlu
aW5nIHRoZSBjZWxscyBvcmlnaW5hdGluZyBpbiB0aGUgcm93LgogICAgICAgICAgICAgYXV0byYg
Y2VsbEJveCA9IHNsb3QuY2VsbCgpLmJveCgpOwpAQCAtNDc3LDM4ICs1MDEsMTUgQEAgdm9pZCBU
YWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlQW5kRGlzdHJpYnV0ZUV4dHJhVmVydGljYWxT
cGFjZShMYXlvdXRVbml0IGEKICAgICAgICAgcm93c0Jhc2VsaW5lT2Zmc2V0LmFwcGVuZChtYXhp
bXVtQ29sdW1uQXNjZW50KTsKICAgICB9CiAKKyAgICBhdXRvIHJvd0xvZ2ljYWxUb3AgPSBncmlk
LnZlcnRpY2FsU3BhY2luZygpOwogICAgIGZvciAoc2l6ZV90IHJvd0luZGV4ID0gMDsgcm93SW5k
ZXggPCByb3dzLnNpemUoKTsgKytyb3dJbmRleCkgewogICAgICAgICBhdXRvJiByb3cgPSBncmlk
LnJvd3MoKS5saXN0KClbcm93SW5kZXhdOwotICAgICAgICByb3cuc2V0TG9naWNhbEhlaWdodChy
b3dzSGVpZ2h0W3Jvd0luZGV4XSk7Ci0gICAgICAgIHJvdy5zZXRCYXNlbGluZU9mZnNldChyb3dz
QmFzZWxpbmVPZmZzZXRbcm93SW5kZXhdKTsKLSAgICB9Ci19Ci0KLXZvaWQgVGFibGVGb3JtYXR0
aW5nQ29udGV4dDo6c2V0Q29tcHV0ZWRHZW9tZXRyeUZvclJvd3MoKQotewotICAgIGF1dG8mIGdy
aWQgPSBmb3JtYXR0aW5nU3RhdGUoKS50YWJsZUdyaWQoKTsKLSAgICBhdXRvIHJvd1dpZHRoID0g
Z3JpZC5jb2x1bW5zKCkubG9naWNhbFdpZHRoKCkgKyAyICogZ3JpZC5ob3Jpem9udGFsU3BhY2lu
ZygpOwotCi0gICAgZm9yIChhdXRvJiByb3cgOiBncmlkLnJvd3MoKS5saXN0KCkpIHsKLSAgICAg
ICAgYXV0byYgcm93RGlzcGxheUJveCA9IGZvcm1hdHRpbmdTdGF0ZSgpLmRpc3BsYXlCb3gocm93
LmJveCgpKTsKLSAgICAgICAgaW5pdGlhbGl6ZURpc3BsYXlCb3hUb0JsYW5rKHJvd0Rpc3BsYXlC
b3gpOwotICAgICAgICByb3dEaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQocm93LmxvZ2lj
YWxIZWlnaHQoKSk7Ci0gICAgICAgIHJvd0Rpc3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKHJv
d1dpZHRoKTsKLSAgICAgICAgcm93RGlzcGxheUJveC5zZXRUb3Aocm93LmxvZ2ljYWxUb3AoKSk7
Ci0gICAgfQotfQotCi12b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldENvbXB1dGVkR2Vv
bWV0cnlGb3JTZWN0aW9ucygpCi17Ci0gICAgYXV0byYgZ3JpZCA9IGZvcm1hdHRpbmdTdGF0ZSgp
LnRhYmxlR3JpZCgpOwotICAgIGF1dG8gc2VjdGlvbldpZHRoID0gZ3JpZC5jb2x1bW5zKCkubG9n
aWNhbFdpZHRoKCkgKyAyICogZ3JpZC5ob3Jpem9udGFsU3BhY2luZygpOworICAgICAgICBhdXRv
IHJvd0hlaWdodCA9IHJvd3NIZWlnaHRbcm93SW5kZXhdOwogCi0gICAgZm9yIChhdXRvJiBzZWN0
aW9uIDogY2hpbGRyZW5PZlR5cGU8Qm94Pihyb290KCkpKSB7Ci0gICAgICAgIGF1dG8mIHNlY3Rp
b25EaXNwbGF5Qm94ID0gZm9ybWF0dGluZ1N0YXRlKCkuZGlzcGxheUJveChzZWN0aW9uKTsKLSAg
ICAgICAgaW5pdGlhbGl6ZURpc3BsYXlCb3hUb0JsYW5rKHNlY3Rpb25EaXNwbGF5Qm94KTsKLSAg
ICAgICAgLy8gRklYTUU6IFNpemUgdGFibGUgc2VjdGlvbnMgcHJvcGVybHkuCi0gICAgICAgIHNl
Y3Rpb25EaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aChzZWN0aW9uV2lkdGgpOwotICAgICAg
ICBzZWN0aW9uRGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KGdyaWQucm93cygpLmxpc3Qo
KS5sYXN0KCkubG9naWNhbEJvdHRvbSgpICsgZ3JpZC52ZXJ0aWNhbFNwYWNpbmcoKSk7CisgICAg
ICAgIHJvdy5zZXRMb2dpY2FsSGVpZ2h0KHJvd0hlaWdodCk7CisgICAgICAgIHJvdy5zZXRCYXNl
bGluZU9mZnNldChyb3dzQmFzZWxpbmVPZmZzZXRbcm93SW5kZXhdKTsKKyAgICAgICAgcm93LnNl
dExvZ2ljYWxUb3Aocm93TG9naWNhbFRvcCk7CisgICAgICAgIHJvd0xvZ2ljYWxUb3AgKz0gcm93
SGVpZ2h0ICsgZ3JpZC52ZXJ0aWNhbFNwYWNpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0LmgKaW5kZXggMjAyNzQwMGYzOGM1NjM4MzYxMzI2M2UxMWY3YTg3NTZiMGI4
OWU0NS4uOWM2YTBhN2I2MDg1OGQxNDIyMWM5ZWY3MzAzNzZiM2ZkYTEwMzJlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJs
ZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTQ3LDggKzQ3LDggQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBjbGFzcyBHZW9tZXRyeSA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnkg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29udGVudEhlaWdodEFuZE1hcmdpbiB0YWJsZUNlbGxI
ZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JikgY29uc3Q7Ci0gICAgICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IGNvbXB1dGVkQ29sdW1uV2lkdGgoY29uc3QgQm94JiBjb2x1bW5Cb3gpIGNvbnN0Owor
ICAgICAgICBMYXlvdXRVbml0IGNlbGxIZWlnaChjb25zdCBDb250YWluZXJCb3gmKSBjb25zdDsK
KyAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRDb2x1bW5XaWR0aChjb25zdCBD
b250YWluZXJCb3gmIGNvbHVtbkJveCkgY29uc3Q7CiAgICAgICAgIEZvcm1hdHRpbmdDb250ZXh0
OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JD
ZWxsKGNvbnN0IENvbnRhaW5lckJveCYgY2VsbEJveCk7CiAgICAgICAgIElubGluZUxheW91dFVu
aXQgdXNlZEJhc2VsaW5lRm9yQ2VsbChjb25zdCBDb250YWluZXJCb3gmIGNlbGxCb3gpOwogCkBA
IC02MSwxOCArNjEsMTYgQEAgcHJpdmF0ZToKICAgICBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeSBnZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIEdlb21ldHJ5KCp0aGlzKTsgfQogCiAg
ICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGxheW91dENlbGwoY29uc3QgVGFibGVHcmlkOjpD
ZWxsJiwgSW52YWxpZGF0aW9uU3RhdGUmLCBMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxT
cGFjZSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZENlbGxIZWlnaHQgPSBXVEY6Om51bGxvcHQp
OwotICAgIHZvaWQgcG9zaXRpb25UYWJsZUNlbGxzKCk7Ci0gICAgdm9pZCBzZXRDb21wdXRlZEdl
b21ldHJ5Rm9yUm93cygpOwotICAgIHZvaWQgc2V0Q29tcHV0ZWRHZW9tZXRyeUZvclNlY3Rpb25z
KCk7CisgICAgdm9pZCBsYXlvdXRDZWxsKGNvbnN0IFRhYmxlR3JpZDo6Q2VsbCYsIExheW91dFVu
aXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkQ2Vs
bEhlaWdodCA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBzZXRVc2VkR2VvbWV0cnlGb3JDZWxs
cyhMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSk7CisgICAgdm9pZCBzZXRVc2Vk
R2VvbWV0cnlGb3JSb3dzKExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlKTsKKyAg
ICB2b2lkIHNldFVzZWRHZW9tZXRyeUZvclNlY3Rpb25zKExheW91dFVuaXQgYXZhaWxhYmxlSG9y
aXpvbnRhbFNwYWNlKTsKIAogICAgIHZvaWQgZW5zdXJlVGFibGVHcmlkKCk7CiAgICAgSW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyBjb21wdXRlZFByZWZlcnJlZFdpZHRoRm9yQ29sdW1ucygpOwog
ICAgIHZvaWQgY29tcHV0ZUFuZERpc3RyaWJ1dGVFeHRyYUhvcml6b250YWxTcGFjZShMYXlvdXRV
bml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSk7CiAgICAgdm9pZCBjb21wdXRlQW5kRGlzdHJp
YnV0ZUV4dHJhVmVydGljYWxTcGFjZShMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFj
ZSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlVmVydGljYWxTcGFjZSk7CiAKLSAgICB2
b2lkIGluaXRpYWxpemVEaXNwbGF5Qm94VG9CbGFuayhEaXNwbGF5OjpCb3gmKSBjb25zdDsKLQog
ICAgIGNvbnN0IFRhYmxlRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7
IHJldHVybiBkb3duY2FzdDxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0NvbnRleHQ6
OmZvcm1hdHRpbmdTdGF0ZSgpKTsgfQogICAgIFRhYmxlRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0
aW5nU3RhdGUoKSB7IHJldHVybiBkb3duY2FzdDxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oRm9ybWF0
dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdTdGF0ZSgpKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dEdl
b21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCA2YWY3YjE1ODUyMzJmNzE2M2E4Zjc4
MTM0NWE5MjJlOTZiM2Y3ZWE1Li4yNzFjNGM5MWIxNmNiYmU5Yzg0NjYxZTBkNzhhOTgzMGQ2MzQz
Nzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1Rh
YmxlRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBA
IC0zNiwxOSArMzYsMTUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQg
ewogCi1Db250ZW50SGVpZ2h0QW5kTWFyZ2luIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojp0YWJsZUNlbGxIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0
CitMYXlvdXRVbml0IFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpjZWxsSGVpZ2go
Y29uc3QgQ29udGFpbmVyQm94JiBjZWxsQm94KSBjb25zdAogewotICAgIEFTU0VSVChsYXlvdXRC
b3guaXNJbkZsb3coKSk7Ci0KLSAgICBhdXRvIGhlaWdodCA9IGNvbXB1dGVkQ29udGVudEhlaWdo
dChsYXlvdXRCb3gpOwotICAgIGlmICghaGVpZ2h0KQotICAgICAgICBoZWlnaHQgPSBjb250ZW50
SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGxheW91dEJveCk7Ci0KLSAgICAvLyBNYXJn
aW5zIGRvbid0IGFwcGx5IHRvIGludGVybmFsIHRhYmxlIGVsZW1lbnRzLgotICAgIHJldHVybiBD
b250ZW50SGVpZ2h0QW5kTWFyZ2luIHsgKmhlaWdodCwgeyB9IH07CisgICAgQVNTRVJUKGNlbGxC
b3guaXNJbkZsb3coKSk7CisgICAgaWYgKGF1dG8gaGVpZ2h0ID0gY29tcHV0ZWRDb250ZW50SGVp
Z2h0KGNlbGxCb3gpKQorICAgICAgICByZXR1cm4gKmhlaWdodDsKKyAgICByZXR1cm4gY29udGVu
dEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChjZWxsQm94KTsKIH0KIAotT3B0aW9uYWw8
TGF5b3V0VW5pdD4gVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkQ29s
dW1uV2lkdGgoY29uc3QgQm94JiBjb2x1bW5Cb3gpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0
PiBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRDb2x1bW5XaWR0aChj
b25zdCBDb250YWluZXJCb3gmIGNvbHVtbkJveCkgY29uc3QKIHsKICAgICAvLyBDaGVjayBib3Ro
IHN0eWxlIGFuZCA8Y29sPidzIHdpZHRoIGF0dHJpYnV0ZS4KICAgICAvLyBGSVhNRTogRmlndXJl
IG91dCB3aGF0IHRvIGRvIHdpdGggY2FsY3VsYXRlZCB2YWx1ZXMsIGxpa2UgPGNvbCBzdHlsZT0i
d2lkdGg6IDEwJSI+Lgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>