<?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>191845</bug_id>
          
          <creation_ts>2018-11-19 15:15:45 -0800</creation_ts>
          <short_desc>[LFC][IFC] InlineFormattingContext::Line should hold the list of runs for the current line.</short_desc>
          <delta_ts>2018-11-20 07:54:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</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>1480314</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-11-19 15:15:45 -0800</bug_when>
    <thetext>instead of directly adding them to InlineFormattingState. (This removes some code complexity. If it turns out to be a perf issue, we should look into it again)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480320</commentid>
    <comment_count>1</comment_count>
      <attachid>355298</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-11-19 15:32:50 -0800</bug_when>
    <thetext>Created attachment 355298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480498</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-11-20 07:53:59 -0800</bug_when>
    <thetext>Committed r238402: &lt;https://trac.webkit.org/changeset/238402&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480499</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-20 07:54:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/46186492&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355298</attachid>
            <date>2018-11-19 15:32:50 -0800</date>
            <delta_ts>2018-11-20 07:05:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>22090</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZWI1Y2MzZDA1Ny4uNzAxNzczYWZjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxOC0xMS0xOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIFtMRkNdW0lGQ10gSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmUgc2hvdWxk
IGhvbGQgdGhlIGxpc3Qgb2YgcnVucyBmb3IgdGhlIGN1cnJlbnQgbGluZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg0NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbGxlY3QgdGhlIHJ1bnMgaW4g
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmUgYW5kIHRyYW5zZmVyIHRoZW0gdG8gSW5saW5l
Rm9ybWF0dGluZ1N0YXRlIGR1cmluZyBsaW5lIGNsb3NpbmcuCisgICAgICAgIChJbiB0aGUgbW9z
dCBjb21tb24gY2FzZXMsIHRoaXMgaXMgb25seSBvbmUgZXh0cmEgdmVjdG9yOjphcHBlbmQoKSBj
YWxsLikKKworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OnNwbGl0SW5saW5lUnVuSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRmluYWxSdW5zIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnBv
c3RQcm9jZXNzSW5saW5lUnVucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjpjbG9zZUxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6YXBwZW5kQ29udGVudFRvTGluZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRJbmxpbmVDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxkcmVuIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OnNwbGl0SW5saW5lUnVuc0lmTmVlZGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6aGFzQ29udGVu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250
ZXh0OjpMaW5lOjpydW5zKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpqdXN0aWZ5UnVucyk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
Y29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmFsaWduUnVucyk6CisgICAgICAg
ICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjppbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmU6OmFkanVzdExvZ2lj
YWxMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OkxpbmU6OmNvbnRlbnRMb2dpY2FsUmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6YXBwZW5kQ29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjpj
bG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpMaW5lOjpMaW5lKTogRGVsZXRlZC4KKwogMjAxOC0xMS0xOSAgWmFsYW4gQnV0amFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gSW50cm9kdWNlIElubGluZUl0ZW06
Om5vbkJyZWFrYWJsZVN0YXJ0L0VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CmluZGV4IGY1Y2MzMDBkZTU1Li4zYTc4YThjZTlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcApAQCAtMTI3LDEwICsxMjcsOCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdD
b250ZXh0Ojppbml0aWFsaXplTmV3TGluZShMaW5lJiBsaW5lKSBjb25zdAogCiB2b2lkIElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpzcGxpdElubGluZVJ1bklmTmVlZGVkKGNvbnN0IElubGluZVJ1
biYgaW5saW5lUnVuLCBJbmxpbmVSdW5zJiBzcGxpdFJ1bnMpIGNvbnN0CiB7Ci0gICAgaWYgKCFp
bmxpbmVSdW4ub3ZlcmxhcHNNdWx0aXBsZUlubGluZUl0ZW1zKCkpCi0gICAgICAgIHJldHVybjsK
LQogICAgIEFTU0VSVChpbmxpbmVSdW4udGV4dENvbnRleHQoKSk7CisgICAgQVNTRVJUKGlubGlu
ZVJ1bi5vdmVybGFwc011bHRpcGxlSW5saW5lSXRlbXMoKSk7CiAgICAgLy8gSW4gY2VydGFpbiBj
YXNlcywgYSBydW4gY2FuIG92ZXJsYXAgbXVsdGlwbGUgaW5saW5lIGVsZW1lbnRzIGxpa2UgdGhp
czoKICAgICAvLyA8c3Bhbj5ub3JtYWwgdGV4dCBjb250ZW50PC9zcGFuPjxzcGFuIHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IGxlZnQ6IDEwcHg7Ij5idXQgdGhpcyBvbmUgbmVlZHMgYSBkZWRp
Y2F0ZWQgcnVuPC9zcGFuPjxzcGFuPmVuZCBvZiB0ZXh0PC9zcGFuPgogICAgIC8vIFRoZSBjb250
ZW50IGFib3ZlIGdlbmVyYXRlcyBvbmUgbG9uZyBydW4gPG5vcm1hbCB0ZXh0IGNvbnRlbnRidXQg
dGhpcyBvbmUgbmVlZHMgZGVkaWNhdGVkIHJ1bmVuZCBvZiB0ZXh0PgpAQCAtMjI0LDU4ICsyMjIs
NTIgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c3BsaXRJbmxpbmVSdW5JZk5lZWRl
ZChjb25zdCBJbmxpbmVSdW4mIGlubGluZVJ1biwKICAgICBzcGxpdCgqZmlyc3RVbmNvbW1pdHRl
ZElubGluZUl0ZW0sIHN0YXJ0UG9zaXRpb24sIHVuY29tbWl0dGVkTGVuZ3RoLCBjb250ZW50U3Rh
cnQpOwogfQogCi1JbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6UnVuUmFuZ2UgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OnNwbGl0SW5saW5lUnVuc0lmTmVlZGVkKExpbmU6OlJ1blJhbmdl
IHJ1blJhbmdlKSBjb25zdAordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRmlu
YWxSdW5zKExpbmUmIGxpbmUpIGNvbnN0CiB7Ci0gICAgYXV0byYgaW5saW5lUnVucyA9IGlubGlu
ZUZvcm1hdHRpbmdTdGF0ZSgpLmlubGluZVJ1bnMoKTsKLSAgICBBU1NFUlQoKnJ1blJhbmdlLmxh
c3RSdW5JbmRleCA8IGlubGluZVJ1bnMuc2l6ZSgpKTsKLQotICAgIGF1dG8gcnVuSW5kZXggPSAq
cnVuUmFuZ2UuZmlyc3RSdW5JbmRleDsKLSAgICBhdXRvJiBsYXN0SW5saW5lUnVuID0gaW5saW5l
UnVuc1sqcnVuUmFuZ2UubGFzdFJ1bkluZGV4XTsKLSAgICB3aGlsZSAocnVuSW5kZXggPCBpbmxp
bmVSdW5zLnNpemUoKSkgewotICAgICAgICBhdXRvJiBpbmxpbmVSdW4gPSBpbmxpbmVSdW5zW3J1
bkluZGV4XTsKLSAgICAgICAgYXV0byBpc0xhc3RSdW5JblJhbmdlID0gJmlubGluZVJ1biA9PSAm
bGFzdElubGluZVJ1bjsKLQotICAgICAgICBJbmxpbmVSdW5zIHNwbGl0UnVuczsKLSAgICAgICAg
c3BsaXRJbmxpbmVSdW5JZk5lZWRlZChpbmxpbmVSdW4sIHNwbGl0UnVucyk7Ci0gICAgICAgIGlm
ICghc3BsaXRSdW5zLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgQVNTRVJUKHNwbGl0UnVucy5z
aXplKCkgPiAxKTsKLSAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGNvbnRpbm91cyBydW4gd2l0
aCBuZXcgb25lcy4KLSAgICAgICAgICAgIC8vIFJldXNlIHRoZSBvcmlnaW5hbCBvbmUuCi0gICAg
ICAgICAgICBhdXRvJiBmaXJzdFJ1biA9IHNwbGl0UnVucy5maXJzdCgpOwotICAgICAgICAgICAg
aW5saW5lUnVuLnNldFdpZHRoKGZpcnN0UnVuLndpZHRoKCkpOwotICAgICAgICAgICAgaW5saW5l
UnVuLnRleHRDb250ZXh0KCktPnNldExlbmd0aChmaXJzdFJ1bi50ZXh0Q29udGV4dCgpLT5sZW5n
dGgoKSk7Ci0gICAgICAgICAgICBzcGxpdFJ1bnMucmVtb3ZlKDApOwotICAgICAgICAgICAgLy8g
SW5zZXJ0IHRoZSByZXN0LgorICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMt
PmlubGluZUZvcm1hdHRpbmdTdGF0ZSgpOworICAgIGZvciAoYXV0byYgaW5saW5lUnVuIDogbGlu
ZS5ydW5zKCkpIHsKKyAgICAgICAgaWYgKGlubGluZVJ1bi5vdmVybGFwc011bHRpcGxlSW5saW5l
SXRlbXMoKSkgeworICAgICAgICAgICAgSW5saW5lUnVucyBzcGxpdFJ1bnM7CisgICAgICAgICAg
ICBzcGxpdElubGluZVJ1bklmTmVlZGVkKGlubGluZVJ1biwgc3BsaXRSdW5zKTsKICAgICAgICAg
ICAgIGZvciAoYXV0byYgc3BsaXRSdW4gOiBzcGxpdFJ1bnMpCi0gICAgICAgICAgICAgICAgaW5s
aW5lUnVucy5pbnNlcnQoKytydW5JbmRleCwgc3BsaXRSdW4pOworICAgICAgICAgICAgICAgIGlu
bGluZUZvcm1hdHRpbmdTdGF0ZS5hcHBlbmRJbmxpbmVSdW4oc3BsaXRSdW4pOworCisgICAgICAg
ICAgICBpZiAoIXNwbGl0UnVucy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaXNMYXN0UnVuSW5SYW5nZSkKLSAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBhdXRvIGZpbmFsUnVuID0gWyZdIHsKKyAgICAgICAgICAgIGF1dG8m
IGlubGluZUl0ZW0gPSBpbmxpbmVSdW4uaW5saW5lSXRlbSgpOworICAgICAgICAgICAgaWYgKGlu
bGluZUl0ZW0uZGV0YWNoaW5nUnVsZXMoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGlubGluZVJ1bjsKIAotICAgICAgICArK3J1bkluZGV4OwotICAgIH0KKyAgICAgICAgICAg
IElubGluZVJ1biBhZGp1c3RlZFJ1biA9IGlubGluZVJ1bjsKKyAgICAgICAgICAgIGF1dG8gd2lk
dGggPSBpbmxpbmVSdW4ud2lkdGgoKSAtIGlubGluZUl0ZW0ubm9uQnJlYWthYmxlU3RhcnQoKSAt
IGlubGluZUl0ZW0ubm9uQnJlYWthYmxlRW5kKCk7CisgICAgICAgICAgICBhZGp1c3RlZFJ1bi5z
ZXRMb2dpY2FsTGVmdChpbmxpbmVSdW4ubG9naWNhbExlZnQoKSArIGlubGluZUl0ZW0ubm9uQnJl
YWthYmxlU3RhcnQoKSk7CisgICAgICAgICAgICBhZGp1c3RlZFJ1bi5zZXRXaWR0aCh3aWR0aCk7
CisgICAgICAgICAgICByZXR1cm4gYWRqdXN0ZWRSdW47CisgICAgICAgIH07CiAKLSAgICByZXR1
cm4geyBydW5SYW5nZS5maXJzdFJ1bkluZGV4LCBydW5JbmRleCB9OworICAgICAgICBpbmxpbmVG
b3JtYXR0aW5nU3RhdGUuYXBwZW5kSW5saW5lUnVuKGZpbmFsUnVuKCkpOworICAgIH0KIH0KIAot
dm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cG9zdFByb2Nlc3NJbmxpbmVSdW5zKExpbmUm
IGxpbmUsIElzTGFzdExpbmUgaXNMYXN0TGluZSwgTGluZTo6UnVuUmFuZ2UgcnVuUmFuZ2UpIGNv
bnN0Cit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpwb3N0UHJvY2Vzc0lubGluZVJ1bnMo
TGluZSYgbGluZSwgSXNMYXN0TGluZSBpc0xhc3RMaW5lKSBjb25zdAogewotICAgIGF1dG8mIGlu
bGluZUZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMtPmlubGluZUZvcm1hdHRpbmdTdGF0ZSgpOwotICAg
IEdlb21ldHJ5OjphbGlnblJ1bnMoaW5saW5lRm9ybWF0dGluZ1N0YXRlLCByb290KCkuc3R5bGUo
KS50ZXh0QWxpZ24oKSwgbGluZSwgcnVuUmFuZ2UsIGlzTGFzdExpbmUpOwotICAgIHJ1blJhbmdl
ID0gc3BsaXRJbmxpbmVSdW5zSWZOZWVkZWQocnVuUmFuZ2UpOwotICAgIHBsYWNlSW5GbG93UG9z
aXRpb25lZENoaWxkcmVuKHJ1blJhbmdlKTsKKyAgICBHZW9tZXRyeTo6YWxpZ25SdW5zKHJvb3Qo
KS5zdHlsZSgpLnRleHRBbGlnbigpLCBsaW5lLCBpc0xhc3RMaW5lKTsKKyAgICBhdXRvIGZpcnN0
UnVuSW5kZXggPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVSdW5zKCkuc2l6ZSgpOwor
ICAgIGNyZWF0ZUZpbmFsUnVucyhsaW5lKTsKKworICAgIHBsYWNlSW5GbG93UG9zaXRpb25lZENo
aWxkcmVuKGZpcnN0UnVuSW5kZXgpOwogfQogCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpjbG9zZUxpbmUoTGluZSYgbGluZSwgSXNMYXN0TGluZSBpc0xhc3RMaW5lKSBjb25zdAogewot
ICAgIGF1dG8gcnVuUmFuZ2UgPSBsaW5lLmNsb3NlKCk7Ci0gICAgQVNTRVJUKCFydW5SYW5nZS5m
aXJzdFJ1bkluZGV4IHx8IHJ1blJhbmdlLmxhc3RSdW5JbmRleCk7Ci0KLSAgICBpZiAoIXJ1blJh
bmdlLmZpcnN0UnVuSW5kZXgpCisgICAgbGluZS5jbG9zZSgpOworICAgIGlmICghbGluZS5oYXND
b250ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBvc3RQcm9jZXNzSW5saW5lUnVucyhs
aW5lLCBpc0xhc3RMaW5lLCBydW5SYW5nZSk7CisgICAgcG9zdFByb2Nlc3NJbmxpbmVSdW5zKGxp
bmUsIGlzTGFzdExpbmUpOwogfQogCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjphcHBl
bmRDb250ZW50VG9MaW5lKExpbmUmIGxpbmUsIGNvbnN0IElubGluZUxpbmVCcmVha2VyOjpSdW4m
IHJ1bikgY29uc3QKQEAgLTI4NCw3ICsyNzYsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250
ZXh0OjphcHBlbmRDb250ZW50VG9MaW5lKExpbmUmIGxpbmUsIGNvbnN0IElubGluZUxpbmVCcgog
ICAgIGxpbmUuYXBwZW5kQ29udGVudChydW4pOwogCiAgICAgaWYgKHJvb3QoKS5zdHlsZSgpLnRl
eHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkpCi0gICAgICAgIEdlb21ldHJ5Ojpj
b21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdGllcyhpbmxpbmVGb3JtYXR0aW5nU3RhdGUoKSwgcnVu
LmNvbnRlbnQsIGxhc3RSdW5UeXBlLnZhbHVlX29yKElubGluZVJ1blByb3ZpZGVyOjpSdW46OlR5
cGU6Ok5vbldoaXRlc3BhY2UpKTsKKyAgICAgICAgR2VvbWV0cnk6OmNvbXB1dGVFeHBhbnNpb25P
cHBvcnR1bml0aWVzKGxpbmUsIHJ1bi5jb250ZW50LCBsYXN0UnVuVHlwZS52YWx1ZV9vcihJbmxp
bmVSdW5Qcm92aWRlcjo6UnVuOjpUeXBlOjpOb25XaGl0ZXNwYWNlKSk7CiB9CiAKIHZvaWQgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQoY29uc3QgSW5saW5lUnVu
UHJvdmlkZXImIGlubGluZVJ1blByb3ZpZGVyKSBjb25zdApAQCAtMjkzLDcgKzI4NSw3IEBAIHZv
aWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQoY29uc3QgSW5s
aW5lUnVuUHJvdmlkZXImIGlubGluCiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0g
dGhpcy0+aW5saW5lRm9ybWF0dGluZ1N0YXRlKCk7CiAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQg
PSBGbG9hdGluZ0NvbnRleHQgeyBpbmxpbmVGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgp
IH07CiAKLSAgICBMaW5lIGxpbmUoaW5saW5lRm9ybWF0dGluZ1N0YXRlKTsKKyAgICBMaW5lIGxp
bmU7CiAgICAgaW5pdGlhbGl6ZU5ld0xpbmUobGluZSk7CiAKICAgICBJbmxpbmVMaW5lQnJlYWtl
ciBsaW5lQnJlYWtlcihsYXlvdXRTdGF0ZSwgaW5saW5lRm9ybWF0dGluZ1N0YXRlLmlubGluZUNv
bnRlbnQoKSwgaW5saW5lUnVuUHJvdmlkZXIucnVucygpKTsKQEAgLTQyMSwxMiArNDEzLDEwIEBA
IHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVGbG9hdFBvc2l0aW9uKGNvbnN0
IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpCiAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KGZsb2F0
aW5nQ29udGV4dC5wb3NpdGlvbkZvckZsb2F0KGZsb2F0Qm94KSk7CiB9CiAKLXZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OnBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxkcmVuKExpbmU6OlJ1
blJhbmdlIHJ1blJhbmdlKSBjb25zdAordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cGxh
Y2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4odW5zaWduZWQgZmlzdFJ1bkluZGV4KSBjb25zdAog
ewogICAgIGF1dG8mIGlubGluZVJ1bnMgPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVS
dW5zKCk7Ci0gICAgQVNTRVJUKCpydW5SYW5nZS5sYXN0UnVuSW5kZXggPCBpbmxpbmVSdW5zLnNp
emUoKSk7Ci0KLSAgICBmb3IgKGF1dG8gcnVuSW5kZXggPSAqcnVuUmFuZ2UuZmlyc3RSdW5JbmRl
eDsgcnVuSW5kZXggPD0gKnJ1blJhbmdlLmxhc3RSdW5JbmRleDsgKytydW5JbmRleCkgeworICAg
IGZvciAoYXV0byBydW5JbmRleCA9IGZpc3RSdW5JbmRleDsgcnVuSW5kZXggPCBpbmxpbmVSdW5z
LnNpemUoKTsgKytydW5JbmRleCkgewogICAgICAgICBhdXRvJiBpbmxpbmVSdW4gPSBpbmxpbmVS
dW5zW3J1bkluZGV4XTsKIAogICAgICAgICBhdXRvIHBvc2l0aW9uT2Zmc2V0ID0gWyZdKGF1dG8m
IGxheW91dEJveCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggNGFhODQz
NDczNjguLjhjNWFjOTlhNDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAg
LTUxLDIzICs1MSwxOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGNsYXNzIExpbmUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgTGluZShJbmxpbmVGb3JtYXR0aW5nU3RhdGUmKTsKLQogICAgICAg
ICB2b2lkIGluaXQoY29uc3QgRGlzcGxheTo6Qm94OjpSZWN0Jik7Ci0gICAgICAgIHN0cnVjdCBS
dW5SYW5nZSB7Ci0gICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdFJ1bklu
ZGV4OwotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGFzdFJ1bkluZGV4Owot
ICAgICAgICB9OwotICAgICAgICBSdW5SYW5nZSBjbG9zZSgpOworICAgICAgICB2b2lkIGNsb3Nl
KCk7CiAKICAgICAgICAgdm9pZCBhcHBlbmRDb250ZW50KGNvbnN0IElubGluZUxpbmVCcmVha2Vy
OjpSdW4mKTsKIAogICAgICAgICB2b2lkIGFkanVzdExvZ2ljYWxMZWZ0KExheW91dFVuaXQgZGVs
dGEpOwogICAgICAgICB2b2lkIGFkanVzdExvZ2ljYWxSaWdodChMYXlvdXRVbml0IGRlbHRhKTsK
IAotICAgICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UnVuSW5k
ZXguaGFzX3ZhbHVlKCk7IH0KKyAgICAgICAgYm9vbCBoYXNDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gIW1faW5saW5lUnVucy5pc0VtcHR5KCk7IH0KICAgICAgICAgYm9vbCBpc0Nsb3NlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xvc2VkOyB9CiAgICAgICAgIGJvb2wgaXNGaXJzdExpbmUoKSBjb25z
dCB7IHJldHVybiBtX2lzRmlyc3RMaW5lOyB9CisgICAgICAgIFZlY3RvcjxJbmxpbmVSdW4+JiBy
dW5zKCkgeyByZXR1cm4gbV9pbmxpbmVSdW5zOyB9CisKICAgICAgICAgTGF5b3V0VW5pdCBjb250
ZW50TG9naWNhbFJpZ2h0KCkgY29uc3Q7CiAgICAgICAgIExheW91dFVuaXQgY29udGVudExvZ2lj
YWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsUmVjdC5sZWZ0KCk7IH0KICAgICAgICAg
TGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYXZhaWxhYmxlV2lk
dGg7IH0KQEAgLTg1LDEyICs4MSwxMCBAQCBwcml2YXRlOgogICAgICAgICBzdGQ6Om9wdGlvbmFs
PElubGluZVJ1blByb3ZpZGVyOjpSdW46OlR5cGU+IG1fbGFzdFJ1blR5cGU7CiAgICAgICAgIGJv
b2wgbV9sYXN0UnVuQ2FuRXhwYW5kIHsgZmFsc2UgfTsKIAotICAgICAgICBJbmxpbmVGb3JtYXR0
aW5nU3RhdGUmIG1fZm9ybWF0dGluZ1N0YXRlOwotCiAgICAgICAgIERpc3BsYXk6OkJveDo6UmVj
dCBtX2xvZ2ljYWxSZWN0OwogICAgICAgICBMYXlvdXRVbml0IG1fYXZhaWxhYmxlV2lkdGg7CiAK
LSAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9maXJzdFJ1bkluZGV4OworICAgICAg
ICBWZWN0b3I8SW5saW5lUnVuPiBtX2lubGluZVJ1bnM7CiAgICAgICAgIGJvb2wgbV9pc0ZpcnN0
TGluZSB7IHRydWUgfTsKICAgICAgICAgYm9vbCBtX2Nsb3NlZCB7IHRydWUgfTsKICAgICB9OwpA
QCAtMTAwLDE5ICs5NCwxOSBAQCBwcml2YXRlOgogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IEhlaWdodEFuZE1hcmdpbiBpbmxpbmVCbG9ja0hlaWdodEFuZE1hcmdpbihjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYpOwogICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gaW5saW5l
QmxvY2tXaWR0aEFuZE1hcmdpbihMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICBz
dGF0aWMgdm9pZCBhbGlnblJ1bnMoSW5saW5lRm9ybWF0dGluZ1N0YXRlJiwgVGV4dEFsaWduTW9k
ZSwgTGluZSYsIExpbmU6OlJ1blJhbmdlLCBJc0xhc3RMaW5lKTsKLSAgICAgICAgc3RhdGljIHZv
aWQgY29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMoSW5saW5lRm9ybWF0dGluZ1N0YXRlJiwg
Y29uc3QgSW5saW5lUnVuUHJvdmlkZXI6OlJ1biYsIElubGluZVJ1blByb3ZpZGVyOjpSdW46OlR5
cGUgbGFzdFJ1blR5cGUpOworICAgICAgICBzdGF0aWMgdm9pZCBhbGlnblJ1bnMoVGV4dEFsaWdu
TW9kZSwgTGluZSYsIElzTGFzdExpbmUpOworICAgICAgICBzdGF0aWMgdm9pZCBjb21wdXRlRXhw
YW5zaW9uT3Bwb3J0dW5pdGllcyhMaW5lJiwgY29uc3QgSW5saW5lUnVuUHJvdmlkZXI6OlJ1biYs
IElubGluZVJ1blByb3ZpZGVyOjpSdW46OlR5cGUgbGFzdFJ1blR5cGUpOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgc3RhdGljIHZvaWQganVzdGlmeVJ1bnMoSW5saW5lRm9ybWF0dGluZ1N0YXRl
JiwgTGluZSYsIExpbmU6OlJ1blJhbmdlKTsKKyAgICAgICAgc3RhdGljIHZvaWQganVzdGlmeVJ1
bnMoTGluZSYpOwogICAgIH07CiAKICAgICB2b2lkIGxheW91dElubGluZUNvbnRlbnQoY29uc3Qg
SW5saW5lUnVuUHJvdmlkZXImKSBjb25zdDsKICAgICB2b2lkIGluaXRpYWxpemVOZXdMaW5lKExp
bmUmKSBjb25zdDsKICAgICB2b2lkIGNsb3NlTGluZShMaW5lJiwgSXNMYXN0TGluZSkgY29uc3Q7
CiAgICAgdm9pZCBhcHBlbmRDb250ZW50VG9MaW5lKExpbmUmLCBjb25zdCBJbmxpbmVMaW5lQnJl
YWtlcjo6UnVuJikgY29uc3Q7Ci0gICAgdm9pZCBwb3N0UHJvY2Vzc0lubGluZVJ1bnMoTGluZSYs
IElzTGFzdExpbmUsIExpbmU6OlJ1blJhbmdlKSBjb25zdDsKLSAgICBMaW5lOjpSdW5SYW5nZSBz
cGxpdElubGluZVJ1bnNJZk5lZWRlZChMaW5lOjpSdW5SYW5nZSkgY29uc3QgIFdBUk5fVU5VU0VE
X1JFVFVSTjsKKyAgICB2b2lkIHBvc3RQcm9jZXNzSW5saW5lUnVucyhMaW5lJiwgSXNMYXN0TGlu
ZSkgY29uc3Q7CisgICAgdm9pZCBjcmVhdGVGaW5hbFJ1bnMoTGluZSYpIGNvbnN0OwogICAgIHZv
aWQgc3BsaXRJbmxpbmVSdW5JZk5lZWRlZChjb25zdCBJbmxpbmVSdW4mLCBJbmxpbmVSdW5zJiBz
cGxpdFJ1bnMpIGNvbnN0OwogCiAgICAgdm9pZCBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3Qo
Y29uc3QgQm94JikgY29uc3Q7CkBAIC0xMjAsNyArMTE0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JikgY29uc3Q7CiAgICAgdm9pZCBjb21w
dXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JikgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlRmxv
YXRQb3NpdGlvbihjb25zdCBGbG9hdGluZ0NvbnRleHQmLCBMaW5lJiwgY29uc3QgQm94JikgY29u
c3Q7Ci0gICAgdm9pZCBwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbihMaW5lOjpSdW5SYW5n
ZSkgY29uc3Q7CisgICAgdm9pZCBwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbih1bnNpZ25l
ZCBmaXJzdFJ1bkluZGV4KSBjb25zdDsKIAogICAgIHZvaWQgY29sbGVjdElubGluZUNvbnRlbnQo
SW5saW5lUnVuUHJvdmlkZXImKSBjb25zdDsKICAgICB2b2lkIGNvbGxlY3RJbmxpbmVDb250ZW50
Rm9yU3VidHJlZShjb25zdCBCb3gmIHJvb3QsIElubGluZVJ1blByb3ZpZGVyJikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDlj
YWVmOTJlYTg5Li5jMGU2OTJlZWU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTk5LDkgKzk5LDkgQEAgc3RhdGljIExheW91dFVuaXQg
YWRqdXN0ZWRMaW5lTG9naWNhbExlZnQoVGV4dEFsaWduTW9kZSBhbGlnbiwgTGF5b3V0VW5pdCBs
aW5lTG8KICAgICByZXR1cm4gbGluZUxvZ2ljYWxMZWZ0OwogfQogCi12b2lkIElubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6anVzdGlmeVJ1bnMoSW5saW5lRm9ybWF0dGluZ1N0YXRl
JiBmb3JtYXR0aW5nU3RhdGUsIExpbmUmIGxpbmUsIExpbmU6OlJ1blJhbmdlIHJ1blJhbmdlKQor
dm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Omp1c3RpZnlSdW5zKExpbmUm
IGxpbmUpCiB7Ci0gICAgYXV0byYgaW5saW5lUnVucyA9IGZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVS
dW5zKCk7CisgICAgYXV0byYgaW5saW5lUnVucyA9IGxpbmUucnVucygpOwogICAgIGF1dG8mIGxh
c3RJbmxpbmVSdW4gPSBpbmxpbmVSdW5zLmxhc3QoKTsKIAogICAgIC8vIEFkanVzdCAoZm9yYmlk
KSB0cmFpbGluZyBleHBhbnNpb24gZm9yIHRoZSBsYXN0IHRleHQgcnVuIG9uIGxpbmUuCkBAIC0x
MTcsMTcgKzExNywxNSBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
anVzdGlmeVJ1bnMoSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBmb3JtYQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIGV4cGFuc2lvbk9wcG9ydHVuaXRpZXMgPSAwOwotICAgIEFTU0VSVCgqcnVu
UmFuZ2UubGFzdFJ1bkluZGV4IDwgaW5saW5lUnVucy5zaXplKCkpOwotICAgIGZvciAoYXV0byBy
dW5JbmRleCA9ICpydW5SYW5nZS5maXJzdFJ1bkluZGV4OyBydW5JbmRleCA8PSAqcnVuUmFuZ2Uu
bGFzdFJ1bkluZGV4OyArK3J1bkluZGV4KQotICAgICAgICBleHBhbnNpb25PcHBvcnR1bml0aWVz
ICs9IGlubGluZVJ1bnNbcnVuSW5kZXhdLmV4cGFuc2lvbk9wcG9ydHVuaXR5KCkuY291bnQ7Cisg
ICAgZm9yIChhdXRvJiBpbmxpbmVSdW4gOiBpbmxpbmVSdW5zKQorICAgICAgICBleHBhbnNpb25P
cHBvcnR1bml0aWVzICs9IGlubGluZVJ1bi5leHBhbnNpb25PcHBvcnR1bml0eSgpLmNvdW50Owog
CiAgICAgaWYgKCFleHBhbnNpb25PcHBvcnR1bml0aWVzKQogICAgICAgICByZXR1cm47CiAKICAg
ICBmbG9hdCBleHBhbnNpb24gPSB3aWR0aFRvRGlzdHJpYnV0ZS50b0Zsb2F0KCkgLyBleHBhbnNp
b25PcHBvcnR1bml0aWVzOwogICAgIExheW91dFVuaXQgYWNjdW11bGF0ZWRFeHBhbnNpb247Ci0g
ICAgZm9yIChhdXRvIHJ1bkluZGV4ID0gKnJ1blJhbmdlLmZpcnN0UnVuSW5kZXg7IHJ1bkluZGV4
IDw9ICpydW5SYW5nZS5sYXN0UnVuSW5kZXg7ICsrcnVuSW5kZXgpIHsKLSAgICAgICAgYXV0byYg
aW5saW5lUnVuID0gaW5saW5lUnVuc1tydW5JbmRleF07CisgICAgZm9yIChhdXRvJiBpbmxpbmVS
dW4gOiBpbmxpbmVSdW5zKSB7CiAgICAgICAgIGF1dG8gZXhwYW5zaW9uRm9yUnVuID0gaW5saW5l
UnVuLmV4cGFuc2lvbk9wcG9ydHVuaXR5KCkuY291bnQgKiBleHBhbnNpb247CiAKICAgICAgICAg
aW5saW5lUnVuLmV4cGFuc2lvbk9wcG9ydHVuaXR5KCkuZXhwYW5zaW9uID0gZXhwYW5zaW9uRm9y
UnVuOwpAQCAtMTM3LDcgKzEzNSw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpqdXN0aWZ5UnVucyhJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hCiAgICAgfQog
fQogCi12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZUV4cGFu
c2lvbk9wcG9ydHVuaXRpZXMoSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUs
IGNvbnN0IElubGluZVJ1blByb3ZpZGVyOjpSdW4mIHJ1biwgSW5saW5lUnVuUHJvdmlkZXI6OlJ1
bjo6VHlwZSBsYXN0UnVuVHlwZSkKK3ZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojpjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdGllcyhMaW5lJiBsaW5lLCBjb25zdCBJbmxp
bmVSdW5Qcm92aWRlcjo6UnVuJiBydW4sIElubGluZVJ1blByb3ZpZGVyOjpSdW46OlR5cGUgbGFz
dFJ1blR5cGUpCiB7CiAgICAgYXV0byBpc0V4cGFuc2lvbk9wcG9ydHVuaXR5ID0gW10oYXV0byBj
dXJyZW50UnVuSXNXaGl0ZXNwYWNlLCBhdXRvIGxhc3RSdW5Jc1doaXRlc3BhY2UpIHsKICAgICAg
ICAgcmV0dXJuIGN1cnJlbnRSdW5Jc1doaXRlc3BhY2UgfHwgKCFjdXJyZW50UnVuSXNXaGl0ZXNw
YWNlICYmICFsYXN0UnVuSXNXaGl0ZXNwYWNlKTsKQEAgLTE1MSw3ICsxNDksNyBAQCB2b2lkIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVu
aXRpZXMoSW5saW5lRm9ybQogCiAgICAgYXV0byBpc0F0RXhwYW5zaW9uT3Bwb3J0dW5pdHkgPSBp
c0V4cGFuc2lvbk9wcG9ydHVuaXR5KHJ1bi5pc1doaXRlc3BhY2UoKSwgbGFzdFJ1blR5cGUgPT0g
SW5saW5lUnVuUHJvdmlkZXI6OlJ1bjo6VHlwZTo6V2hpdGVzcGFjZSk7CiAKLSAgICBhdXRvJiBj
dXJyZW50SW5saW5lUnVuID0gZm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1bnMoKS5sYXN0KCk7Cisg
ICAgYXV0byYgY3VycmVudElubGluZVJ1biA9IGxpbmUucnVucygpLmxhc3QoKTsKICAgICBhdXRv
JiBleHBhbnNpb25PcHBvcnR1bml0eSA9IGN1cnJlbnRJbmxpbmVSdW4uZXhwYW5zaW9uT3Bwb3J0
dW5pdHkoKTsKICAgICBpZiAoaXNBdEV4cGFuc2lvbk9wcG9ydHVuaXR5KQogICAgICAgICArK2V4
cGFuc2lvbk9wcG9ydHVuaXR5LmNvdW50OwpAQCAtMTU5LDExICsxNTcsMTEgQEAgdm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVFeHBhbnNpb25PcHBvcnR1bml0
aWVzKElubGluZUZvcm0KICAgICBleHBhbnNpb25PcHBvcnR1bml0eS5iZWhhdmlvciA9IGV4cGFu
c2lvbkJlaGF2aW9yKGlzQXRFeHBhbnNpb25PcHBvcnR1bml0eSk7CiB9CiAKLXZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjphbGlnblJ1bnMoSW5saW5lRm9ybWF0dGluZ1N0
YXRlJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUsIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduLCBMaW5l
JiBsaW5lLCBMaW5lOjpSdW5SYW5nZSBydW5SYW5nZSwgSXNMYXN0TGluZSBpc0xhc3RMaW5lKQor
dm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmFsaWduUnVucyhUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiwgTGluZSYgbGluZSwgIElzTGFzdExpbmUgaXNMYXN0TGluZSkKIHsK
ICAgICBhdXRvIGFkanV0ZWRUZXh0QWxpZ25tZW50ID0gdGV4dEFsaWduICE9IFRleHRBbGlnbk1v
ZGU6Okp1c3RpZnkgPyB0ZXh0QWxpZ24gOiBpc0xhc3RMaW5lID09IElzTGFzdExpbmU6Ok5vID8g
VGV4dEFsaWduTW9kZTo6SnVzdGlmeSA6IFRleHRBbGlnbk1vZGU6OkxlZnQ7CiAgICAgaWYgKGFk
anV0ZWRUZXh0QWxpZ25tZW50ID09IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkpIHsKLSAgICAgICAg
anVzdGlmeVJ1bnMoaW5saW5lRm9ybWF0dGluZ1N0YXRlLCBsaW5lLCBydW5SYW5nZSk7CisgICAg
ICAgIGp1c3RpZnlSdW5zKGxpbmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNzIs
MTEgKzE3MCw5IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjphbGln
blJ1bnMoSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBpbmxpbmVGCiAgICAgaWYgKGFkanVzdGVkTG9n
aWNhbExlZnQgPT0gbGluZUxvZ2ljYWxMZWZ0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRv
JiBpbmxpbmVSdW5zID0gaW5saW5lRm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1bnMoKTsKICAgICBh
dXRvIGRlbHRhID0gYWRqdXN0ZWRMb2dpY2FsTGVmdCAtIGxpbmVMb2dpY2FsTGVmdDsKLSAgICBB
U1NFUlQoKnJ1blJhbmdlLmxhc3RSdW5JbmRleCA8IGlubGluZVJ1bnMuc2l6ZSgpKTsKLSAgICBm
b3IgKGF1dG8gcnVuSW5kZXggPSAqcnVuUmFuZ2UuZmlyc3RSdW5JbmRleDsgcnVuSW5kZXggPD0g
KnJ1blJhbmdlLmxhc3RSdW5JbmRleDsgKytydW5JbmRleCkKLSAgICAgICAgaW5saW5lUnVuc1ty
dW5JbmRleF0uc2V0TG9naWNhbExlZnQoaW5saW5lUnVuc1tydW5JbmRleF0ubG9naWNhbExlZnQo
KSArIGRlbHRhKTsKKyAgICBmb3IgKGF1dG8mIGlubGluZVJ1biA6IGxpbmUucnVucygpKQorICAg
ICAgICBpbmxpbmVSdW4uc2V0TG9naWNhbExlZnQoaW5saW5lUnVuLmxvZ2ljYWxMZWZ0KCkgKyBk
ZWx0YSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0xpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvTGluZS5jcHAKaW5kZXggMzFjZmUwYWE3MTQuLmU5ZGEzOTc5ZGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lLmNwcApAQCAtMjUsNyArMjUs
NiBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaCIKLSNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJ
bmxpbmVSdW5Qcm92aWRlci5oIgogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRF
WFQpCkBAIC0zMywxNyArMzIsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBM
YXlvdXQgewogCi1JbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6TGluZShJbmxpbmVGb3Jt
YXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKLSAgICA6IG1fZm9ybWF0dGluZ1N0YXRlKGZv
cm1hdHRpbmdTdGF0ZSkKLXsKLX0KLQogdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGlu
ZTo6aW5pdChjb25zdCBEaXNwbGF5OjpCb3g6OlJlY3QmIGxvZ2ljYWxSZWN0KQogewogICAgIG1f
bG9naWNhbFJlY3QgPSBsb2dpY2FsUmVjdDsKICAgICBtX2F2YWlsYWJsZVdpZHRoID0gbG9naWNh
bFJlY3Qud2lkdGgoKTsKIAotICAgIG1fZmlyc3RSdW5JbmRleCA9IHsgfTsKKyAgICBtX2lubGlu
ZVJ1bnMuY2xlYXIoKTsKICAgICBtX2xhc3RSdW5UeXBlID0geyB9OwogICAgIG1fbGFzdFJ1bkNh
bkV4cGFuZCA9IGZhbHNlOwogICAgIG1fdHJhaWxpbmdUcmltbWFibGVDb250ZW50ID0geyB9OwpA
QCAtNTcsMTIgKzUxLDggQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6YWRq
dXN0TG9naWNhbExlZnQoTGF5b3V0VW5pdCBkZWx0YSkKICAgICBtX2F2YWlsYWJsZVdpZHRoIC09
IGRlbHRhOwogICAgIG1fbG9naWNhbFJlY3Quc2hpZnRMZWZ0VG8obV9sb2dpY2FsUmVjdC5sZWZ0
KCkgKyBkZWx0YSk7CiAKLSAgICBpZiAoIW1fZmlyc3RSdW5JbmRleCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYXV0byYgaW5saW5lUnVucyA9IG1fZm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1bnMo
KTsKLSAgICBmb3IgKGF1dG8gcnVuSW5kZXggPSAqbV9maXJzdFJ1bkluZGV4OyBydW5JbmRleCA8
IGlubGluZVJ1bnMuc2l6ZSgpOyArK3J1bkluZGV4KQotICAgICAgICBpbmxpbmVSdW5zW3J1bklu
ZGV4XS5tb3ZlSG9yaXpvbnRhbGx5KGRlbHRhKTsKKyAgICBmb3IgKGF1dG8mIGlubGluZVJ1biA6
IG1faW5saW5lUnVucykKKyAgICAgICAgaW5saW5lUnVuLm1vdmVIb3Jpem9udGFsbHkoZGVsdGEp
OwogfQogCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjphZGp1c3RMb2dpY2Fs
UmlnaHQoTGF5b3V0VW5pdCBkZWx0YSkKQEAgLTgwLDEwICs3MCwxMCBAQCBzdGF0aWMgYm9vbCBp
c1RyaW1tYWJsZUNvbnRlbnQoY29uc3QgSW5saW5lUnVuUHJvdmlkZXI6OlJ1biYgaW5saW5lUnVu
KQogCiBMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjpjb250ZW50TG9n
aWNhbFJpZ2h0KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZmlyc3RSdW5JbmRleC5oYXNfdmFsdWUo
KSkKKyAgICBpZiAobV9pbmxpbmVSdW5zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1fbG9n
aWNhbFJlY3QubGVmdCgpOwogCi0gICAgcmV0dXJuIG1fZm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1
bnMoKS5sYXN0KCkubG9naWNhbFJpZ2h0KCk7CisgICAgcmV0dXJuIG1faW5saW5lUnVucy5sYXN0
KCkubG9naWNhbFJpZ2h0KCk7CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okxp
bmU6OmFwcGVuZENvbnRlbnQoY29uc3QgSW5saW5lTGluZUJyZWFrZXI6OlJ1biYgcnVuKQpAQCAt
MTA2LDExICs5NiwxMSBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjphcHBl
bmRDb250ZW50KGNvbnN0IElubGluZUxpbmVCcmVha2VyOjpSdW4mCiAgICAgICAgIGF1dG8gaW5s
aW5lUnVuID0gSW5saW5lUnVuIHsgeyBsb2dpY2FsVG9wKCksIGNvbnRlbnRMb2dpY2FsUmlnaHQo
KSwgcnVuLndpZHRoLCBsb2dpY2FsQm90dG9tKCkgLSBsb2dpY2FsVG9wKCkgfSwgY29udGVudC5p
bmxpbmVJdGVtKCkgfTsKICAgICAgICAgaWYgKHRleHRSdW4pCiAgICAgICAgICAgICBpbmxpbmVS
dW4uc2V0VGV4dENvbnRleHQoeyB0ZXh0UnVuLT5zdGFydCgpLCB0ZXh0UnVuLT5sZW5ndGgoKSB9
KTsKLSAgICAgICAgbV9mb3JtYXR0aW5nU3RhdGUuYXBwZW5kSW5saW5lUnVuKGlubGluZVJ1bik7
CisgICAgICAgIG1faW5saW5lUnVucy5hcHBlbmQoaW5saW5lUnVuKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyBOb24tdGV4dCBydW5zIGFsd2F5cyByZXF1aXJlIG5ldyBpbmxpbmUgcnVuLgog
ICAgICAgICBBU1NFUlQodGV4dFJ1bik7Ci0gICAgICAgIGF1dG8mIGlubGluZVJ1biA9IG1fZm9y
bWF0dGluZ1N0YXRlLmlubGluZVJ1bnMoKS5sYXN0KCk7CisgICAgICAgIGF1dG8mIGlubGluZVJ1
biA9IG1faW5saW5lUnVucy5sYXN0KCk7CiAgICAgICAgIGlubGluZVJ1bi5zZXRXaWR0aChpbmxp
bmVSdW4ud2lkdGgoKSArIHJ1bi53aWR0aCk7CiAgICAgICAgIGlubGluZVJ1bi50ZXh0Q29udGV4
dCgpLT5zZXRMZW5ndGgoaW5saW5lUnVuLnRleHRDb250ZXh0KCktPmxlbmd0aCgpICsgdGV4dFJ1
bi0+bGVuZ3RoKCkpOwogICAgIH0KQEAgLTExOCw0MiArMTA4LDM0IEBAIHZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OkxpbmU6OmFwcGVuZENvbnRlbnQoY29uc3QgSW5saW5lTGluZUJyZWFr
ZXI6OlJ1biYKICAgICBtX2F2YWlsYWJsZVdpZHRoIC09IHJ1bi53aWR0aDsKICAgICBtX2xhc3RS
dW5UeXBlID0gY29udGVudC50eXBlKCk7CiAgICAgbV9sYXN0UnVuQ2FuRXhwYW5kID0gY29udGVu
dC5pc1RleHQoKSAmJiAhY29udGVudC50ZXh0Q29udGV4dCgpLT5pc0NvbGxhcHNlZCgpOwotICAg
IG1fZmlyc3RSdW5JbmRleCA9IG1fZmlyc3RSdW5JbmRleC52YWx1ZV9vcihtX2Zvcm1hdHRpbmdT
dGF0ZS5pbmxpbmVSdW5zKCkuc2l6ZSgpIC0gMSk7CiAgICAgbV90cmFpbGluZ1RyaW1tYWJsZUNv
bnRlbnQgPSB7IH07CiAgICAgaWYgKGlzVHJpbW1hYmxlQ29udGVudChjb250ZW50KSkKICAgICAg
ICAgbV90cmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQgPSBUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQg
eyBydW4ud2lkdGgsIHRleHRSdW4tPmxlbmd0aCgpIH07CiB9CiAKLUlubGluZUZvcm1hdHRpbmdD
b250ZXh0OjpMaW5lOjpSdW5SYW5nZSBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6Y2xv
c2UoKQordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6Y2xvc2UoKQogewogICAg
IGF1dG8gdHJpbVRyYWlsaW5nQ29udGVudCA9IFsmXXsKIAogICAgICAgICBpZiAoIW1fdHJhaWxp
bmdUcmltbWFibGVDb250ZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8m
IGxhc3RJbmxpbmVSdW4gPSBtX2Zvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCkubGFzdCgpOwor
ICAgICAgICBhdXRvJiBsYXN0SW5saW5lUnVuID0gbV9pbmxpbmVSdW5zLmxhc3QoKTsKICAgICAg
ICAgbGFzdElubGluZVJ1bi5zZXRXaWR0aChsYXN0SW5saW5lUnVuLndpZHRoKCkgLSBtX3RyYWls
aW5nVHJpbW1hYmxlQ29udGVudC0+d2lkdGgpOwogICAgICAgICBsYXN0SW5saW5lUnVuLnRleHRD
b250ZXh0KCktPnNldExlbmd0aChsYXN0SW5saW5lUnVuLnRleHRDb250ZXh0KCktPmxlbmd0aCgp
IC0gbV90cmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQtPmxlbmd0aCk7CiAKLSAgICAgICAgaWYgKCFs
YXN0SW5saW5lUnVuLnRleHRDb250ZXh0KCktPmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBpZiAo
Km1fZmlyc3RSdW5JbmRleCA9PSBtX2Zvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCkuc2l6ZSgp
IC0gMSkKLSAgICAgICAgICAgICAgICBtX2ZpcnN0UnVuSW5kZXggPSB7IH07Ci0gICAgICAgICAg
ICBtX2Zvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCkucmVtb3ZlTGFzdCgpOwotICAgICAgICB9
CisgICAgICAgIGlmICghbGFzdElubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5sZW5ndGgoKSkKKyAg
ICAgICAgICAgIG1faW5saW5lUnVucy5yZW1vdmVMYXN0KCk7CiAgICAgICAgIG1fYXZhaWxhYmxl
V2lkdGggKz0gbV90cmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQtPndpZHRoOwogICAgICAgICBtX3Ry
YWlsaW5nVHJpbW1hYmxlQ29udGVudCA9IHsgfTsKICAgICB9OwogCiAgICAgaWYgKCFoYXNDb250
ZW50KCkpCi0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybjsKIAogICAgIHRyaW1U
cmFpbGluZ0NvbnRlbnQoKTsKICAgICBtX2lzRmlyc3RMaW5lID0gZmFsc2U7CiAgICAgbV9jbG9z
ZWQgPSB0cnVlOwotCi0gICAgaWYgKCFtX2ZpcnN0UnVuSW5kZXgpCi0gICAgICAgIHJldHVybiB7
IH07Ci0gICAgcmV0dXJuIHsgbV9maXJzdFJ1bkluZGV4LCBtX2Zvcm1hdHRpbmdTdGF0ZS5pbmxp
bmVSdW5zKCkuc2l6ZSgpIC0gMSB9OwogfQogCiB9Cg==
</data>
<flag name="review"
          id="372470"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>