<?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>87902</bug_id>
          
          <creation_ts>2012-05-30 14:53:56 -0700</creation_ts>
          <short_desc>Add an helper function to get the style for a cell&apos;s flow computation</short_desc>
          <delta_ts>2012-05-30 20:15:30 -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>Tables</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>87900</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>ojan</cc>
    
    <cc>robert</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>637722</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-05-30 14:53:56 -0700</bug_when>
    <thetext>Currently the code makes the assumption that we use the table&apos;s direction and writing mode for flow resolution.

While CSS writing disables writing mode on table row groups and rows, it does allow direction on the same table parts. This means that the current code makes the wrong assumption and will break pretty badly if we start mixing directions.

In order to change that, a first step would be to introduce an helper function to get the right style for flow resolution (flow = direction and writing mode). We can then safely change this function to operate on a different level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637752</commentid>
    <comment_count>1</comment_count>
      <attachid>144936</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-05-30 15:25:27 -0700</bug_when>
    <thetext>Created attachment 144936
Proposed addition: styleForCellFlow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637797</commentid>
    <comment_count>2</comment_count>
      <attachid>144936</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-05-30 16:13:59 -0700</bug_when>
    <thetext>Comment on attachment 144936
Proposed addition: styleForCellFlow.

Hyatt might have opinions on the &quot;flow&quot; term. I&apos;m fine with it obviously since I suggested it. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637960</commentid>
    <comment_count>3</comment_count>
      <attachid>144936</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-30 20:15:24 -0700</bug_when>
    <thetext>Comment on attachment 144936
Proposed addition: styleForCellFlow.

Clearing flags on attachment: 144936

Committed r119033: &lt;http://trac.webkit.org/changeset/119033&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637961</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-30 20:15:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144936</attachid>
            <date>2012-05-30 15:25:27 -0700</date>
            <delta_ts>2012-05-30 20:15:24 -0700</delta_ts>
            <desc>Proposed addition: styleForCellFlow.</desc>
            <filename>bug-87902-20120530152526.patch</filename>
            <type>text/plain</type>
            <size>20868</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UwMmE2Nzc3MTJhZTY2
NjkxZjBjOGYxNWZmMDU4OTA2NTk3MGRhZC4uODVlNjQwN2JhOGY4MGJiZTc3ZDhkMmNlMDI0Mzk3
YTk5OWQxOTA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA1LTMwICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhbiBo
ZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzdHlsZSBmb3IgYSBjZWxsJ3MgZmxvdyBjb21wdXRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc5
MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBl
eHBlY3RlZCBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9k
dWNlcyBzdHlsZUZvckNlbGxGbG93IHRoYXQgdW5pZnkgd2hpY2ggZnVuY3Rpb24gd2UgdXNlCisg
ICAgICAgIHRvIGRldGVybWluZSBhIGNlbGwncyBkaXJlY3Rpb24gYW5kIHdyaXRpbmcgbW9kZS4K
KworICAgICAgICBUaGlzIHVuaWZpY2F0aW9uIHdpbGwgbWFrZSBpdCBlYXNpZXIgdG8gc3VwcG9y
dCBkaXJlY3Rpb24gb24gdGFibGUgcm93CisgICAgICAgIGdyb3VwIChzZWN0aW9uIGluIFdlYktp
dCBsYW5kKS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6c3R5bGVGb3JDZWxsRmxvdyk6CisgICAgICAg
IEFkZGVkIHRoZSBuZXcgZnVuY3Rpb24gYWxvbmcgd2l0aCBhIGNvbW1lbnQgYXMgdG8gaXRzIHB1
cnBvc2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2Vk
U3RhcnRCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb21wdXRl
Q29sbGFwc2VkRW5kQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6
Y29tcHV0ZUNvbGxhcHNlZEJlZm9yZUJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZUNlbGw6OmNvbXB1dGVDb2xsYXBzZWRBZnRlckJvcmRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ2VsbDo6Ym9yZGVySGFsZlJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlQ2VsbDo6Ym9yZGVySGFsZlRvcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZUNlbGw6OmJvcmRlckhhbGZCb3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVD
ZWxsOjpib3JkZXJIYWxmU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxs
Ojpib3JkZXJIYWxmRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Ym9y
ZGVySGFsZkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmJvcmRl
ckhhbGZBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29s
bGFwc2VkQm9yZGVycyk6CisgICAgICAgIE1vc3RseSBtZWNoYW5pY2FsIHJlcGxhY2VtZW50Lgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNhY2hlZENvbGxhcHNlZExlZnRCb3JkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjYWNoZWRDb2xsYXBzZWRSaWdodEJvcmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNhY2hlZENvbGxhcHNlZFRvcEJv
cmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNhY2hlZENvbGxhcHNl
ZEJvdHRvbUJvcmRlcik6CisgICAgICAgIE1hZGUgdGhlIGFyZ3VtZW50ICdjb25zdCcgbm93Lgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MpOgorICAgICAgICBBZGRlZCBh
IEZJWE1FIHRvIHVuaWZ5IHdpdGggdGhlIHJlc3QuCisKIDIwMTItMDUtMzAgIEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBTdXBw
b3J0IElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORyBmbGFnLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCA5OWVjOTJkN2QzOWM2ZTJmMTUzMGNh
ODQ2N2IwN2Q0MzA4ZTk0ZTg0Li43YTQ2OWIyNTdiOTQ3MTMzOThiZjI3YWE1YjFlZGRiMmJiN2Jk
YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApA
QCAtMjYwLDcgKzI2MCw3IEBAIExheW91dFJlY3QgUmVuZGVyVGFibGVDZWxsOjpjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCoKICAgICBpZiAoIXRhYmxl
KCktPmNvbGxhcHNlQm9yZGVycygpIHx8IHRhYmxlKCktPm5lZWRzU2VjdGlvblJlY2FsYygpKQog
ICAgICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KHJlcGFpbnRDb250YWluZXIpOwogCi0gICAgYm9vbCBydGwgPSAhdGFibGUoKS0+c3R5bGUoKS0+
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOworICAgIGJvb2wgcnRsID0gIXN0eWxlRm9yQ2VsbEZs
b3coKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwogICAgIGludCBvdXRsaW5lU2l6ZSA9IHN0
eWxlKCktPm91dGxpbmVTaXplKCk7CiAgICAgaW50IGxlZnQgPSBtYXgoYm9yZGVySGFsZkxlZnQo
dHJ1ZSksIG91dGxpbmVTaXplKTsKICAgICBpbnQgcmlnaHQgPSBtYXgoYm9yZGVySGFsZlJpZ2h0
KHRydWUpLCBvdXRsaW5lU2l6ZSk7CkBAIC00MjAsOCArNDIwLDggQEAgQ29sbGFwc2VkQm9yZGVy
VmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkU3RhcnRCb3JkZXIoSW5jbHVk
ZUJvcmRlckMKIAogICAgIC8vIEZvciB0aGUgc3RhcnQgYm9yZGVyLCB3ZSBuZWVkIHRvIGNoZWNr
LCBpbiBvcmRlciBvZiBwcmVjZWRlbmNlOgogICAgIC8vICgxKSBPdXIgc3RhcnQgYm9yZGVyLgot
ICAgIGludCBzdGFydENvbG9yUHJvcGVydHkgPSBpbmNsdWRlQ29sb3IgPyBDU1NQcm9wZXJ0eTo6
cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFy
dENvbG9yLCB0YWJsZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCksIHRhYmxlLT5zdHlsZSgpLT53cml0
aW5nTW9kZSgpKSA6IDA7Ci0gICAgaW50IGVuZENvbG9yUHJvcGVydHkgPSBpbmNsdWRlQ29sb3Ig
PyBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJFbmRDb2xvciwgdGFibGUtPnN0eWxlKCktPmRpcmVjdGlvbigpLCB0YWJsZS0+
c3R5bGUoKS0+d3JpdGluZ01vZGUoKSkgOiAwOworICAgIGludCBzdGFydENvbG9yUHJvcGVydHkg
PSBpbmNsdWRlQ29sb3IgPyBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVy
dHkoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yLCBzdHlsZUZvckNlbGxGbG93KCkt
PmRpcmVjdGlvbigpLCBzdHlsZUZvckNlbGxGbG93KCktPndyaXRpbmdNb2RlKCkpIDogMDsKKyAg
ICBpbnQgZW5kQ29sb3JQcm9wZXJ0eSA9IGluY2x1ZGVDb2xvciA/IENTU1Byb3BlcnR5OjpyZXNv
bHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9y
LCBzdHlsZUZvckNlbGxGbG93KCktPmRpcmVjdGlvbigpLCBzdHlsZUZvckNlbGxGbG93KCktPndy
aXRpbmdNb2RlKCkpIDogMDsKICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQoc3R5bGUo
KS0+Ym9yZGVyU3RhcnQoKSwgaW5jbHVkZUNvbG9yID8gc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ0VMTCk7CiAKICAgICAvLyAo
MikgVGhlIGVuZCBib3JkZXIgb2YgdGhlIHByZWNlZGluZyBjZWxsLgpAQCAtNDkxLDggKzQ5MSw4
IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNl
ZEVuZEJvcmRlcihJbmNsdWRlQm9yZGVyQ29sCiAKICAgICAvLyBGb3IgZW5kIGJvcmRlciwgd2Ug
bmVlZCB0byBjaGVjaywgaW4gb3JkZXIgb2YgcHJlY2VkZW5jZToKICAgICAvLyAoMSkgT3VyIGVu
ZCBib3JkZXIuCi0gICAgaW50IHN0YXJ0Q29sb3JQcm9wZXJ0eSA9IGluY2x1ZGVDb2xvciA/IENT
U1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclN0YXJ0Q29sb3IsIHRhYmxlLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSwgdGFibGUtPnN0
eWxlKCktPndyaXRpbmdNb2RlKCkpIDogMDsKLSAgICBpbnQgZW5kQ29sb3JQcm9wZXJ0eSA9IGlu
Y2x1ZGVDb2xvciA/IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yLCB0YWJsZS0+c3R5bGUoKS0+ZGlyZWN0aW9u
KCksIHRhYmxlLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpKSA6IDA7CisgICAgaW50IHN0YXJ0Q29s
b3JQcm9wZXJ0eSA9IGluY2x1ZGVDb2xvciA/IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9u
QXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3IsIHN0eWxlRm9y
Q2VsbEZsb3coKS0+ZGlyZWN0aW9uKCksIHN0eWxlRm9yQ2VsbEZsb3coKS0+d3JpdGluZ01vZGUo
KSkgOiAwOworICAgIGludCBlbmRDb2xvclByb3BlcnR5ID0gaW5jbHVkZUNvbG9yID8gQ1NTUHJv
cGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRW5kQ29sb3IsIHN0eWxlRm9yQ2VsbEZsb3coKS0+ZGlyZWN0aW9uKCksIHN0eWxlRm9yQ2Vs
bEZsb3coKS0+d3JpdGluZ01vZGUoKSkgOiAwOwogICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHJl
c3VsdCA9IENvbGxhcHNlZEJvcmRlclZhbHVlKHN0eWxlKCktPmJvcmRlckVuZCgpLCBpbmNsdWRl
Q29sb3IgPyBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkg
OiBDb2xvcigpLCBCQ0VMTCk7CiAgICAgCiAgICAgLy8gKDIpIFRoZSBzdGFydCBib3JkZXIgb2Yg
dGhlIGZvbGxvd2luZyBjZWxsLgpAQCAtNTY0LDggKzU2NCw4IEBAIENvbGxhcHNlZEJvcmRlclZh
bHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZEJlZm9yZUJvcmRlcihJbmNsdWRl
Qm9yZGVyCiAKICAgICAvLyBGb3IgYmVmb3JlIGJvcmRlciwgd2UgbmVlZCB0byBjaGVjaywgaW4g
b3JkZXIgb2YgcHJlY2VkZW5jZToKICAgICAvLyAoMSkgT3VyIGJlZm9yZSBib3JkZXIuCi0gICAg
aW50IGJlZm9yZUNvbG9yUHJvcGVydHkgPSBpbmNsdWRlQ29sb3IgPyBDU1NQcm9wZXJ0eTo6cmVz
b2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVD
b2xvciwgdGFibGUtPnN0eWxlKCktPmRpcmVjdGlvbigpLCB0YWJsZS0+c3R5bGUoKS0+d3JpdGlu
Z01vZGUoKSkgOiAwOwotICAgIGludCBhZnRlckNvbG9yUHJvcGVydHkgPSBpbmNsdWRlQ29sb3Ig
PyBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJBZnRlckNvbG9yLCB0YWJsZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCksIHRhYmxl
LT5zdHlsZSgpLT53cml0aW5nTW9kZSgpKSA6IDA7CisgICAgaW50IGJlZm9yZUNvbG9yUHJvcGVy
dHkgPSBpbmNsdWRlQ29sb3IgPyBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJv
cGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvciwgc3R5bGVGb3JDZWxsRmxv
dygpLT5kaXJlY3Rpb24oKSwgc3R5bGVGb3JDZWxsRmxvdygpLT53cml0aW5nTW9kZSgpKSA6IDA7
CisgICAgaW50IGFmdGVyQ29sb3JQcm9wZXJ0eSA9IGluY2x1ZGVDb2xvciA/IENTU1Byb3BlcnR5
OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFm
dGVyQ29sb3IsIHN0eWxlRm9yQ2VsbEZsb3coKS0+ZGlyZWN0aW9uKCksIHN0eWxlRm9yQ2VsbEZs
b3coKS0+d3JpdGluZ01vZGUoKSkgOiAwOwogICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHJlc3Vs
dCA9IENvbGxhcHNlZEJvcmRlclZhbHVlKHN0eWxlKCktPmJvcmRlckJlZm9yZSgpLCBpbmNsdWRl
Q29sb3IgPyBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlQ29sb3JQcm9wZXJ0
eSkgOiBDb2xvcigpLCBCQ0VMTCk7CiAgICAgCiAgICAgUmVuZGVyVGFibGVDZWxsKiBwcmV2Q2Vs
bCA9IHRhYmxlLT5jZWxsQWJvdmUodGhpcyk7CkBAIC02NTAsOCArNjUwLDggQEAgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkQWZ0ZXJCb3JkZXIo
SW5jbHVkZUJvcmRlckMKIAogICAgIC8vIEZvciBhZnRlciBib3JkZXIsIHdlIG5lZWQgdG8gY2hl
Y2ssIGluIG9yZGVyIG9mIHByZWNlZGVuY2U6CiAgICAgLy8gKDEpIE91ciBhZnRlciBib3JkZXIu
Ci0gICAgaW50IGJlZm9yZUNvbG9yUHJvcGVydHkgPSBpbmNsdWRlQ29sb3IgPyBDU1NQcm9wZXJ0
eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJC
ZWZvcmVDb2xvciwgdGFibGUtPnN0eWxlKCktPmRpcmVjdGlvbigpLCB0YWJsZS0+c3R5bGUoKS0+
d3JpdGluZ01vZGUoKSkgOiAwOwotICAgIGludCBhZnRlckNvbG9yUHJvcGVydHkgPSBpbmNsdWRl
Q29sb3IgPyBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yLCB0YWJsZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCks
IHRhYmxlLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpKSA6IDA7CisgICAgaW50IGJlZm9yZUNvbG9y
UHJvcGVydHkgPSBpbmNsdWRlQ29sb3IgPyBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3
YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvciwgc3R5bGVGb3JD
ZWxsRmxvdygpLT5kaXJlY3Rpb24oKSwgc3R5bGVGb3JDZWxsRmxvdygpLT53cml0aW5nTW9kZSgp
KSA6IDA7CisgICAgaW50IGFmdGVyQ29sb3JQcm9wZXJ0eSA9IGluY2x1ZGVDb2xvciA/IENTU1By
b3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckFmdGVyQ29sb3IsIHN0eWxlRm9yQ2VsbEZsb3coKS0+ZGlyZWN0aW9uKCksIHN0eWxlRm9y
Q2VsbEZsb3coKS0+d3JpdGluZ01vZGUoKSkgOiAwOwogICAgIENvbGxhcHNlZEJvcmRlclZhbHVl
IHJlc3VsdCA9IENvbGxhcHNlZEJvcmRlclZhbHVlKHN0eWxlKCktPmJvcmRlckFmdGVyKCksIGlu
Y2x1ZGVDb2xvciA/IHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlckNvbG9yUHJv
cGVydHkpIDogQ29sb3IoKSwgQkNFTEwpOwogICAgIAogICAgIFJlbmRlclRhYmxlQ2VsbCogbmV4
dENlbGwgPSB0YWJsZS0+Y2VsbEJlbG93KHRoaXMpOwpAQCAtNzEzLDMyICs3MTMsMzIgQEAgQ29s
bGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkQWZ0ZXJC
b3JkZXIoSW5jbHVkZUJvcmRlckMKICAgICByZXR1cm4gcmVzdWx0OyAgICAKIH0KIAotaW5saW5l
IENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y2FjaGVkQ29sbGFwc2VkTGVm
dEJvcmRlcihSZW5kZXJTdHlsZSogdGFibGVTdHlsZSkgY29uc3QKK2lubGluZSBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNhY2hlZENvbGxhcHNlZExlZnRCb3JkZXIoY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlRm9yQ2VsbEZsb3cpIGNvbnN0CiB7Ci0gICAgaWYgKHRhYmxl
U3R5bGUtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiB0YWJsZVN0
eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBzZWN0aW9uKCktPmNhY2hlZENvbGxhcHNl
ZEJvcmRlcih0aGlzLCBDQlNTdGFydCkgOiBzZWN0aW9uKCktPmNhY2hlZENvbGxhcHNlZEJvcmRl
cih0aGlzLCBDQlNFbmQpOwotICAgIHJldHVybiB0YWJsZVN0eWxlLT5pc0ZsaXBwZWRCbG9ja3NX
cml0aW5nTW9kZSgpID8gc2VjdGlvbigpLT5jYWNoZWRDb2xsYXBzZWRCb3JkZXIodGhpcywgQ0JT
QWZ0ZXIpIDogc2VjdGlvbigpLT5jYWNoZWRDb2xsYXBzZWRCb3JkZXIodGhpcywgQ0JTQmVmb3Jl
KTsKKyAgICBpZiAoc3R5bGVGb3JDZWxsRmxvdy0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkK
KyAgICAgICAgcmV0dXJuIHN0eWxlRm9yQ2VsbEZsb3ctPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KSA/IHNlY3Rpb24oKS0+Y2FjaGVkQ29sbGFwc2VkQm9yZGVyKHRoaXMsIENCU1N0YXJ0KSA6IHNl
Y3Rpb24oKS0+Y2FjaGVkQ29sbGFwc2VkQm9yZGVyKHRoaXMsIENCU0VuZCk7CisgICAgcmV0dXJu
IHN0eWxlRm9yQ2VsbEZsb3ctPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBzZWN0aW9u
KCktPmNhY2hlZENvbGxhcHNlZEJvcmRlcih0aGlzLCBDQlNBZnRlcikgOiBzZWN0aW9uKCktPmNh
Y2hlZENvbGxhcHNlZEJvcmRlcih0aGlzLCBDQlNCZWZvcmUpOwogfQogCi1pbmxpbmUgQ29sbGFw
c2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjYWNoZWRDb2xsYXBzZWRSaWdodEJvcmRl
cihSZW5kZXJTdHlsZSogdGFibGVTdHlsZSkgY29uc3QKK2lubGluZSBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNhY2hlZENvbGxhcHNlZFJpZ2h0Qm9yZGVyKGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZUZvckNlbGxGbG93KSBjb25zdAogewotICAgIGlmICh0YWJsZVN0eWxl
LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4gdGFibGVTdHlsZS0+
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gc2VjdGlvbigpLT5jYWNoZWRDb2xsYXBzZWRCb3Jk
ZXIodGhpcywgQ0JTRW5kKSA6IHNlY3Rpb24oKS0+Y2FjaGVkQ29sbGFwc2VkQm9yZGVyKHRoaXMs
IENCU1N0YXJ0KTsKLSAgICByZXR1cm4gdGFibGVTdHlsZS0+aXNGbGlwcGVkQmxvY2tzV3JpdGlu
Z01vZGUoKSA/IHNlY3Rpb24oKS0+Y2FjaGVkQ29sbGFwc2VkQm9yZGVyKHRoaXMsIENCU0JlZm9y
ZSkgOiBzZWN0aW9uKCktPmNhY2hlZENvbGxhcHNlZEJvcmRlcih0aGlzLCBDQlNBZnRlcik7Cisg
ICAgaWYgKHN0eWxlRm9yQ2VsbEZsb3ctPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAg
ICAgIHJldHVybiBzdHlsZUZvckNlbGxGbG93LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBz
ZWN0aW9uKCktPmNhY2hlZENvbGxhcHNlZEJvcmRlcih0aGlzLCBDQlNFbmQpIDogc2VjdGlvbigp
LT5jYWNoZWRDb2xsYXBzZWRCb3JkZXIodGhpcywgQ0JTU3RhcnQpOworICAgIHJldHVybiBzdHls
ZUZvckNlbGxGbG93LT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gc2VjdGlvbigpLT5j
YWNoZWRDb2xsYXBzZWRCb3JkZXIodGhpcywgQ0JTQmVmb3JlKSA6IHNlY3Rpb24oKS0+Y2FjaGVk
Q29sbGFwc2VkQm9yZGVyKHRoaXMsIENCU0FmdGVyKTsKIH0KIAotaW5saW5lIENvbGxhcHNlZEJv
cmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y2FjaGVkQ29sbGFwc2VkVG9wQm9yZGVyKFJlbmRl
clN0eWxlKiB0YWJsZVN0eWxlKSBjb25zdAoraW5saW5lIENvbGxhcHNlZEJvcmRlclZhbHVlIFJl
bmRlclRhYmxlQ2VsbDo6Y2FjaGVkQ29sbGFwc2VkVG9wQm9yZGVyKGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZUZvckNlbGxGbG93KSBjb25zdAogewotICAgIGlmICh0YWJsZVN0eWxlLT5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4gdGFibGVTdHlsZS0+aXNGbGlwcGVk
QmxvY2tzV3JpdGluZ01vZGUoKSA/IHNlY3Rpb24oKS0+Y2FjaGVkQ29sbGFwc2VkQm9yZGVyKHRo
aXMsIENCU0FmdGVyKSA6IHNlY3Rpb24oKS0+Y2FjaGVkQ29sbGFwc2VkQm9yZGVyKHRoaXMsIENC
U0JlZm9yZSk7Ci0gICAgcmV0dXJuIHRhYmxlU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KSA/IHNlY3Rpb24oKS0+Y2FjaGVkQ29sbGFwc2VkQm9yZGVyKHRoaXMsIENCU1N0YXJ0KSA6IHNl
Y3Rpb24oKS0+Y2FjaGVkQ29sbGFwc2VkQm9yZGVyKHRoaXMsIENCU0VuZCk7CisgICAgaWYgKHN0
eWxlRm9yQ2VsbEZsb3ctPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgIHJldHVy
biBzdHlsZUZvckNlbGxGbG93LT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gc2VjdGlv
bigpLT5jYWNoZWRDb2xsYXBzZWRCb3JkZXIodGhpcywgQ0JTQWZ0ZXIpIDogc2VjdGlvbigpLT5j
YWNoZWRDb2xsYXBzZWRCb3JkZXIodGhpcywgQ0JTQmVmb3JlKTsKKyAgICByZXR1cm4gc3R5bGVG
b3JDZWxsRmxvdy0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gc2VjdGlvbigpLT5jYWNoZWRD
b2xsYXBzZWRCb3JkZXIodGhpcywgQ0JTU3RhcnQpIDogc2VjdGlvbigpLT5jYWNoZWRDb2xsYXBz
ZWRCb3JkZXIodGhpcywgQ0JTRW5kKTsKIH0KIAotaW5saW5lIENvbGxhcHNlZEJvcmRlclZhbHVl
IFJlbmRlclRhYmxlQ2VsbDo6Y2FjaGVkQ29sbGFwc2VkQm90dG9tQm9yZGVyKFJlbmRlclN0eWxl
KiB0YWJsZVN0eWxlKSBjb25zdAoraW5saW5lIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRh
YmxlQ2VsbDo6Y2FjaGVkQ29sbGFwc2VkQm90dG9tQm9yZGVyKGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZUZvckNlbGxGbG93KSBjb25zdAogewotICAgIGlmICh0YWJsZVN0eWxlLT5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4gdGFibGVTdHlsZS0+aXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUoKSA/IHNlY3Rpb24oKS0+Y2FjaGVkQ29sbGFwc2VkQm9yZGVyKHRoaXMs
IENCU0JlZm9yZSkgOiBzZWN0aW9uKCktPmNhY2hlZENvbGxhcHNlZEJvcmRlcih0aGlzLCBDQlNB
ZnRlcik7Ci0gICAgcmV0dXJuIHRhYmxlU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/
IHNlY3Rpb24oKS0+Y2FjaGVkQ29sbGFwc2VkQm9yZGVyKHRoaXMsIENCU0VuZCkgOiBzZWN0aW9u
KCktPmNhY2hlZENvbGxhcHNlZEJvcmRlcih0aGlzLCBDQlNTdGFydCk7CisgICAgaWYgKHN0eWxl
Rm9yQ2VsbEZsb3ctPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgIHJldHVybiBz
dHlsZUZvckNlbGxGbG93LT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gc2VjdGlvbigp
LT5jYWNoZWRDb2xsYXBzZWRCb3JkZXIodGhpcywgQ0JTQmVmb3JlKSA6IHNlY3Rpb24oKS0+Y2Fj
aGVkQ29sbGFwc2VkQm9yZGVyKHRoaXMsIENCU0FmdGVyKTsKKyAgICByZXR1cm4gc3R5bGVGb3JD
ZWxsRmxvdy0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gc2VjdGlvbigpLT5jYWNoZWRDb2xs
YXBzZWRCb3JkZXIodGhpcywgQ0JTRW5kKSA6IHNlY3Rpb24oKS0+Y2FjaGVkQ29sbGFwc2VkQm9y
ZGVyKHRoaXMsIENCU1N0YXJ0KTsKIH0KIAogaW50IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVyTGVm
dCgpIGNvbnN0CkBAIC03ODUsNDEgKzc4NSw0MSBAQCBpbnQgUmVuZGVyVGFibGVDZWxsOjpib3Jk
ZXJBZnRlcigpIGNvbnN0CiAKIGludCBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZMZWZ0KGJv
b2wgb3V0ZXIpIGNvbnN0CiB7Ci0gICAgUmVuZGVyU3R5bGUqIHRhYmxlU3R5bGUgPSB0YWJsZSgp
LT5zdHlsZSgpOwotICAgIGlmICh0YWJsZVN0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgp
KQotICAgICAgICByZXR1cm4gdGFibGVTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8g
Ym9yZGVySGFsZlN0YXJ0KG91dGVyKSA6IGJvcmRlckhhbGZFbmQob3V0ZXIpOwotICAgIHJldHVy
biB0YWJsZVN0eWxlLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gYm9yZGVySGFsZkFm
dGVyKG91dGVyKSA6IGJvcmRlckhhbGZCZWZvcmUob3V0ZXIpOworICAgIGNvbnN0IFJlbmRlclN0
eWxlKiBzdHlsZUZvckNlbGxGbG93ID0gdGhpcy0+c3R5bGVGb3JDZWxsRmxvdygpOworICAgIGlm
IChzdHlsZUZvckNlbGxGbG93LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICBy
ZXR1cm4gc3R5bGVGb3JDZWxsRmxvdy0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gYm9yZGVy
SGFsZlN0YXJ0KG91dGVyKSA6IGJvcmRlckhhbGZFbmQob3V0ZXIpOworICAgIHJldHVybiBzdHls
ZUZvckNlbGxGbG93LT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gYm9yZGVySGFsZkFm
dGVyKG91dGVyKSA6IGJvcmRlckhhbGZCZWZvcmUob3V0ZXIpOwogfQogCiBpbnQgUmVuZGVyVGFi
bGVDZWxsOjpib3JkZXJIYWxmUmlnaHQoYm9vbCBvdXRlcikgY29uc3QKIHsKLSAgICBSZW5kZXJT
dHlsZSogdGFibGVTdHlsZSA9IHRhYmxlKCktPnN0eWxlKCk7Ci0gICAgaWYgKHRhYmxlU3R5bGUt
PmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiB0YWJsZVN0eWxlLT5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBib3JkZXJIYWxmRW5kKG91dGVyKSA6IGJvcmRlckhh
bGZTdGFydChvdXRlcik7Ci0gICAgcmV0dXJuIHRhYmxlU3R5bGUtPmlzRmxpcHBlZEJsb2Nrc1dy
aXRpbmdNb2RlKCkgPyBib3JkZXJIYWxmQmVmb3JlKG91dGVyKSA6IGJvcmRlckhhbGZBZnRlcihv
dXRlcik7CisgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlRm9yQ2VsbEZsb3cgPSB0aGlzLT5z
dHlsZUZvckNlbGxGbG93KCk7CisgICAgaWYgKHN0eWxlRm9yQ2VsbEZsb3ctPmlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkpCisgICAgICAgIHJldHVybiBzdHlsZUZvckNlbGxGbG93LT5pc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKCkgPyBib3JkZXJIYWxmRW5kKG91dGVyKSA6IGJvcmRlckhhbGZTdGFy
dChvdXRlcik7CisgICAgcmV0dXJuIHN0eWxlRm9yQ2VsbEZsb3ctPmlzRmxpcHBlZEJsb2Nrc1dy
aXRpbmdNb2RlKCkgPyBib3JkZXJIYWxmQmVmb3JlKG91dGVyKSA6IGJvcmRlckhhbGZBZnRlcihv
dXRlcik7CiB9CiAKIGludCBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZUb3AoYm9vbCBvdXRl
cikgY29uc3QKIHsKLSAgICBSZW5kZXJTdHlsZSogdGFibGVTdHlsZSA9IHRhYmxlKCktPnN0eWxl
KCk7Ci0gICAgaWYgKHRhYmxlU3R5bGUtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAg
ICAgIHJldHVybiB0YWJsZVN0eWxlLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gYm9y
ZGVySGFsZkFmdGVyKG91dGVyKSA6IGJvcmRlckhhbGZCZWZvcmUob3V0ZXIpOwotICAgIHJldHVy
biB0YWJsZVN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBib3JkZXJIYWxmU3RhcnQo
b3V0ZXIpIDogYm9yZGVySGFsZkVuZChvdXRlcik7CisgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlRm9yQ2VsbEZsb3cgPSB0aGlzLT5zdHlsZUZvckNlbGxGbG93KCk7CisgICAgaWYgKHN0eWxl
Rm9yQ2VsbEZsb3ctPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgIHJldHVybiBz
dHlsZUZvckNlbGxGbG93LT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gYm9yZGVySGFs
ZkFmdGVyKG91dGVyKSA6IGJvcmRlckhhbGZCZWZvcmUob3V0ZXIpOworICAgIHJldHVybiBzdHls
ZUZvckNlbGxGbG93LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBib3JkZXJIYWxmU3RhcnQo
b3V0ZXIpIDogYm9yZGVySGFsZkVuZChvdXRlcik7CiB9CiAKIGludCBSZW5kZXJUYWJsZUNlbGw6
OmJvcmRlckhhbGZCb3R0b20oYm9vbCBvdXRlcikgY29uc3QKIHsKLSAgICBSZW5kZXJTdHlsZSog
dGFibGVTdHlsZSA9IHRhYmxlKCktPnN0eWxlKCk7Ci0gICAgaWYgKHRhYmxlU3R5bGUtPmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiB0YWJsZVN0eWxlLT5pc0ZsaXBw
ZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gYm9yZGVySGFsZkJlZm9yZShvdXRlcikgOiBib3JkZXJI
YWxmQWZ0ZXIob3V0ZXIpOwotICAgIHJldHVybiB0YWJsZVN0eWxlLT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgPyBib3JkZXJIYWxmRW5kKG91dGVyKSA6IGJvcmRlckhhbGZTdGFydChvdXRlcik7
CisgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlRm9yQ2VsbEZsb3cgPSB0aGlzLT5zdHlsZUZv
ckNlbGxGbG93KCk7CisgICAgaWYgKHN0eWxlRm9yQ2VsbEZsb3ctPmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkpCisgICAgICAgIHJldHVybiBzdHlsZUZvckNlbGxGbG93LT5pc0ZsaXBwZWRCbG9j
a3NXcml0aW5nTW9kZSgpID8gYm9yZGVySGFsZkJlZm9yZShvdXRlcikgOiBib3JkZXJIYWxmQWZ0
ZXIob3V0ZXIpOworICAgIHJldHVybiBzdHlsZUZvckNlbGxGbG93LT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgPyBib3JkZXJIYWxmRW5kKG91dGVyKSA6IGJvcmRlckhhbGZTdGFydChvdXRlcik7
CiB9CiAKIGludCBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZTdGFydChib29sIG91dGVyKSBj
b25zdAogewogICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGJvcmRlciA9IGNvbGxhcHNlZFN0YXJ0
Qm9yZGVyKERvTm90SW5jbHVkZUJvcmRlckNvbG9yKTsKICAgICBpZiAoYm9yZGVyLmV4aXN0cygp
KQotICAgICAgICByZXR1cm4gKGJvcmRlci53aWR0aCgpICsgKCh0YWJsZSgpLT5zdHlsZSgpLT5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgXiBvdXRlcikgPyAxIDogMCkpIC8gMjsgLy8gR2l2ZSB0
aGUgZXh0cmEgcGl4ZWwgdG8gdG9wIGFuZCBsZWZ0LgorICAgICAgICByZXR1cm4gKGJvcmRlci53
aWR0aCgpICsgKChzdHlsZUZvckNlbGxGbG93KCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBe
IG91dGVyKSA/IDEgOiAwKSkgLyAyOyAvLyBHaXZlIHRoZSBleHRyYSBwaXhlbCB0byB0b3AgYW5k
IGxlZnQuCiAgICAgcmV0dXJuIDA7CiB9CiAgICAgCkBAIC04MjcsNyArODI3LDcgQEAgaW50IFJl
bmRlclRhYmxlQ2VsbDo6Ym9yZGVySGFsZkVuZChib29sIG91dGVyKSBjb25zdAogewogICAgIENv
bGxhcHNlZEJvcmRlclZhbHVlIGJvcmRlciA9IGNvbGxhcHNlZEVuZEJvcmRlcihEb05vdEluY2x1
ZGVCb3JkZXJDb2xvcik7CiAgICAgaWYgKGJvcmRlci5leGlzdHMoKSkKLSAgICAgICAgcmV0dXJu
IChib3JkZXIud2lkdGgoKSArICgodGFibGUoKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpIF4gb3V0ZXIpID8gMCA6IDEpKSAvIDI7CisgICAgICAgIHJldHVybiAoYm9yZGVyLndp
ZHRoKCkgKyAoKHN0eWxlRm9yQ2VsbEZsb3coKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIF4g
b3V0ZXIpID8gMCA6IDEpKSAvIDI7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTgzNSw3ICs4MzUs
NyBAQCBpbnQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJIYWxmQmVmb3JlKGJvb2wgb3V0ZXIpIGNv
bnN0CiB7CiAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgYm9yZGVyID0gY29sbGFwc2VkQmVmb3Jl
Qm9yZGVyKERvTm90SW5jbHVkZUJvcmRlckNvbG9yKTsKICAgICBpZiAoYm9yZGVyLmV4aXN0cygp
KQotICAgICAgICByZXR1cm4gKGJvcmRlci53aWR0aCgpICsgKCh0YWJsZSgpLT5zdHlsZSgpLT5p
c0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpIF4gb3V0ZXIpID8gMCA6IDEpKSAvIDI7IC8vIEdp
dmUgdGhlIGV4dHJhIHBpeGVsIHRvIHRvcCBhbmQgbGVmdC4KKyAgICAgICAgcmV0dXJuIChib3Jk
ZXIud2lkdGgoKSArICgoc3R5bGVGb3JDZWxsRmxvdygpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5n
TW9kZSgpIF4gb3V0ZXIpID8gMCA6IDEpKSAvIDI7IC8vIEdpdmUgdGhlIGV4dHJhIHBpeGVsIHRv
IHRvcCBhbmQgbGVmdC4KICAgICByZXR1cm4gMDsKIH0KIApAQCAtODQzLDcgKzg0Myw3IEBAIGlu
dCBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZBZnRlcihib29sIG91dGVyKSBjb25zdAogewog
ICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGJvcmRlciA9IGNvbGxhcHNlZEFmdGVyQm9yZGVyKERv
Tm90SW5jbHVkZUJvcmRlckNvbG9yKTsKICAgICBpZiAoYm9yZGVyLmV4aXN0cygpKQotICAgICAg
ICByZXR1cm4gKGJvcmRlci53aWR0aCgpICsgKCh0YWJsZSgpLT5zdHlsZSgpLT5pc0ZsaXBwZWRC
bG9ja3NXcml0aW5nTW9kZSgpIF4gb3V0ZXIpID8gMSA6IDApKSAvIDI7CisgICAgICAgIHJldHVy
biAoYm9yZGVyLndpZHRoKCkgKyAoKHN0eWxlRm9yQ2VsbEZsb3coKS0+aXNGbGlwcGVkQmxvY2tz
V3JpdGluZ01vZGUoKSBeIG91dGVyKSA/IDEgOiAwKSkgLyAyOwogICAgIHJldHVybiAwOwogfQog
CkBAIC05NjgsMTEgKzk2OCwxMSBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBz
ZWRCb3JkZXJzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgIGlmICgh
dGFibGUoKS0+Y3VycmVudEJvcmRlclZhbHVlKCkgfHwgZ3JhcGhpY3NDb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbmRlclN0eWxlKiB0YWJsZVN0
eWxlID0gdGFibGUoKS0+c3R5bGUoKTsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBsZWZ0VmFs
ID0gY2FjaGVkQ29sbGFwc2VkTGVmdEJvcmRlcih0YWJsZVN0eWxlKTsKLSAgICBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSByaWdodFZhbCA9IGNhY2hlZENvbGxhcHNlZFJpZ2h0Qm9yZGVyKHRhYmxlU3R5
bGUpOwotICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHRvcFZhbCA9IGNhY2hlZENvbGxhcHNlZFRv
cEJvcmRlcih0YWJsZVN0eWxlKTsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBib3R0b21WYWwg
PSBjYWNoZWRDb2xsYXBzZWRCb3R0b21Cb3JkZXIodGFibGVTdHlsZSk7CisgICAgY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlRm9yQ2VsbEZsb3cgPSB0aGlzLT5zdHlsZUZvckNlbGxGbG93KCk7Cisg
ICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgbGVmdFZhbCA9IGNhY2hlZENvbGxhcHNlZExlZnRCb3Jk
ZXIoc3R5bGVGb3JDZWxsRmxvdyk7CisgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmlnaHRWYWwg
PSBjYWNoZWRDb2xsYXBzZWRSaWdodEJvcmRlcihzdHlsZUZvckNlbGxGbG93KTsKKyAgICBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSB0b3BWYWwgPSBjYWNoZWRDb2xsYXBzZWRUb3BCb3JkZXIoc3R5bGVG
b3JDZWxsRmxvdyk7CisgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgYm90dG9tVmFsID0gY2FjaGVk
Q29sbGFwc2VkQm90dG9tQm9yZGVyKHN0eWxlRm9yQ2VsbEZsb3cpOwogICAgICAKICAgICAvLyBB
ZGp1c3Qgb3VyIHgveS93aWR0aC9oZWlnaHQgc28gdGhhdCB3ZSBwYWludCB0aGUgY29sbGFwc2Vk
IGJvcmRlcnMgYXQgdGhlIGNvcnJlY3QgbG9jYXRpb24uCiAgICAgaW50IHRvcFdpZHRoID0gdG9w
VmFsLndpZHRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgK
aW5kZXggMmE1ODIwZTllZTI5Y2Y3Y2Y1MjU3MjcxMDY5N2YzOTBkZWYzOGYyMy4uZDFiMGEyOGEz
YTBkMDUzZWViNDRkNGQ4NTk1Nzk3OGY1YTc5OTBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMTM1LDYgKzEzNSwxNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIocGFyZW50KTsKICAg
ICB9CiAKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gdW5pZnkgd2hpY2ggdGFibGUg
cGFydCdzIHN0eWxlIHdlIHVzZSBmb3IgY29tcHV0aW5nIGRpcmVjdGlvbiBhbmQKKyAgICAvLyB3
cml0aW5nIG1vZGUuIFdyaXRpbmcgbW9kZXMgYXJlIG5vdCBhbGxvd2VkIG9uIHJvdyBncm91cCBh
bmQgcm93IGJ1dCBkaXJlY3Rpb24gaXMuCisgICAgLy8gVGhpcyBtZWFucyB3ZSBjYW4gc2FmZWx5
IHVzZSB0aGUgc2FtZSBzdHlsZSBpbiBhbGwgY2FzZXMgdG8gc2ltcGxpZnkgb3VyIGNvZGUuCisg
ICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgdGhpcyBmdW5jdGlvbiBzaG91bGQgcmVwbGFjZWQgYnkg
c3R5bGUoKSBvbmNlIHdlIHN1cHBvcnQgZGlyZWN0aW9uCisgICAgLy8gb24gYWxsIHRhYmxlIHBh
cnRzIGFuZCB3cml0aW5nLW1vZGUgb24gY2VsbHMuCisgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlRm9yQ2VsbEZsb3coKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHRhYmxlKCktPnN0
eWxlKCk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKIApAQCAt
MTcxLDEwICsxODEsMTAgQEAgcHJpdmF0ZToKICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjb2xs
YXBzZWRCZWZvcmVCb3JkZXIoSW5jbHVkZUJvcmRlckNvbG9yT3JOb3QgPSBJbmNsdWRlQm9yZGVy
Q29sb3IpIGNvbnN0OwogICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNvbGxhcHNlZEFmdGVyQm9y
ZGVyKEluY2x1ZGVCb3JkZXJDb2xvck9yTm90ID0gSW5jbHVkZUJvcmRlckNvbG9yKSBjb25zdDsK
IAotICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNhY2hlZENvbGxhcHNlZExlZnRCb3JkZXIoUmVu
ZGVyU3R5bGUqKSBjb25zdDsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjYWNoZWRDb2xsYXBz
ZWRSaWdodEJvcmRlcihSZW5kZXJTdHlsZSopIGNvbnN0OwotICAgIENvbGxhcHNlZEJvcmRlclZh
bHVlIGNhY2hlZENvbGxhcHNlZFRvcEJvcmRlcihSZW5kZXJTdHlsZSopIGNvbnN0OwotICAgIENv
bGxhcHNlZEJvcmRlclZhbHVlIGNhY2hlZENvbGxhcHNlZEJvdHRvbUJvcmRlcihSZW5kZXJTdHls
ZSopIGNvbnN0OworICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNhY2hlZENvbGxhcHNlZExlZnRC
b3JkZXIoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdDsKKyAgICBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSBjYWNoZWRDb2xsYXBzZWRSaWdodEJvcmRlcihjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0Owor
ICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNhY2hlZENvbGxhcHNlZFRvcEJvcmRlcihjb25zdCBS
ZW5kZXJTdHlsZSopIGNvbnN0OworICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNhY2hlZENvbGxh
cHNlZEJvdHRvbUJvcmRlcihjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAgQ29sbGFw
c2VkQm9yZGVyVmFsdWUgY29tcHV0ZUNvbGxhcHNlZFN0YXJ0Qm9yZGVyKEluY2x1ZGVCb3JkZXJD
b2xvck9yTm90ID0gSW5jbHVkZUJvcmRlckNvbG9yKSBjb25zdDsKICAgICBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSBjb21wdXRlQ29sbGFwc2VkRW5kQm9yZGVyKEluY2x1ZGVCb3JkZXJDb2xvck9yTm90
ID0gSW5jbHVkZUJvcmRlckNvbG9yKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggZGIyNWU4MTQ5OTU3NDE1Y2Q5ZTIzYzMw
MjhhMTUzMzZhZjBhYWRhZS4uZmU0NTczODRhMDFhMzliNjA2ZGE2N2VjMjc3ZDE1MDRiZDA3YWI4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5j
cHAKQEAgLTY1NCw2ICs2NTQsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6bGF5b3V0Um93
cygpCiAgICAgICAgICAgICBMYXlvdXRSZWN0IG9sZENlbGxSZWN0KGNlbGwtPngoKSwgY2VsbC0+
eSgpICwgY2VsbC0+d2lkdGgoKSwgY2VsbC0+aGVpZ2h0KCkpOwogCiAgICAgICAgICAgICBMYXlv
dXRQb2ludCBjZWxsTG9jYXRpb24oMCwgbV9yb3dQb3NbcmluZHhdKTsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBTd2l0Y2ggdG8gY2VsbCdzIHN0eWxlRm9yQ2VsbEZsb3coKSBmb3IgY29uc2lzdGVu
Y3kgd2l0aCBSZW5kZXJUYWJsZUNlbGwsIG9uY2UgaXQgc3VwcG9ydHMgcm93IGdyb3VwLgogICAg
ICAgICAgICAgaWYgKCFzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCiAgICAgICAg
ICAgICAgICAgY2VsbExvY2F0aW9uLnNldFgodGFibGUoKS0+Y29sdW1uUG9zaXRpb25zKClbbkVm
ZkNvbHNdIC0gdGFibGUoKS0+Y29sdW1uUG9zaXRpb25zKClbdGFibGUoKS0+Y29sVG9FZmZDb2wo
Y2VsbC0+Y29sKCkgKyBjZWxsLT5jb2xTcGFuKCkpXSArIGhzcGFjaW5nKTsKICAgICAgICAgICAg
IGVsc2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>