<?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>222896</bug_id>
          
          <creation_ts>2021-03-07 19:38:34 -0800</creation_ts>
          <short_desc>Be more restrictive about when canvas2d is allowed to update style</short_desc>
          <delta_ts>2021-03-16 16:07:01 -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>New Bugs</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="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1736977</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-07 19:38:34 -0800</bug_when>
    <thetext>Be more restrictive about when canvas2d is allowed to update style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736978</commentid>
    <comment_count>1</comment_count>
      <attachid>422542</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-07 19:42:49 -0800</bug_when>
    <thetext>Created attachment 422542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737364</commentid>
    <comment_count>2</comment_count>
      <attachid>422542</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-08 16:28:52 -0800</bug_when>
    <thetext>Comment on attachment 422542
Patch

I shouldn&apos;t move toTextDirection() before the RAII classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739301</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-14 20:39:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/75416260&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739850</commentid>
    <comment_count>4</comment_count>
      <attachid>423304</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-15 23:12:08 -0700</bug_when>
    <thetext>Created attachment 423304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739851</commentid>
    <comment_count>5</comment_count>
      <attachid>423304</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-03-15 23:19:21 -0700</bug_when>
    <thetext>Comment on attachment 423304
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=423304&amp;action=review

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:121
&gt; +    WidgetHierarchyUpdatesSuspensionScope suspendWidgetHierarchyUpdates;
&gt; +    ScriptDisallowedScope::InMainThread scriptDisallowedScope;
&gt; +    Style::PostResolutionCallbackDisabler callbackDisabler(canvas().document());

We don&apos;t need WidgetHierarchyUpdatesSuspensionScope or PostResolutionCallbackDisabler.
Just ScriptDisallowedScope::InMainThread is enough.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:163
&gt; -    auto* style = (computedStyle || direction == Direction::Inherit) ? canvas().computedStyle() : nullptr;
&gt; +    auto* style = (computedStyle || direction == Direction::Inherit) ? canvas().existingComputedStyle() : nullptr;

Maybe get rid of the unnecessary parenthesis here?

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:201
&gt; +    WidgetHierarchyUpdatesSuspensionScope suspendWidgetHierarchyUpdates;
&gt; +    ScriptDisallowedScope::InMainThread scriptDisallowedScope;
&gt; +    Style::PostResolutionCallbackDisabler callbackDisabler(canvas().document());

Ditto. We just need ScriptDisallowedScope::InMainThread here.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:-195
&gt; -    auto&amp; canvas = downcast&lt;HTMLCanvasElement&gt;(canvasBase());
&gt; -    canvas.document().updateStyleIfNeeded();

Let&apos;s also add ScriptDisallowedScope::InMainThread here?

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:234
&gt; +    WidgetHierarchyUpdatesSuspensionScope suspendWidgetHierarchyUpdates;
&gt; +    ScriptDisallowedScope::InMainThread scriptDisallowedScope;
&gt; +    Style::PostResolutionCallbackDisabler callbackDisabler(canvas().document());

Ditto. We just need ScriptDisallowedScope::InMainThread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740109</commentid>
    <comment_count>6</comment_count>
      <attachid>423378</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-16 12:16:40 -0700</bug_when>
    <thetext>Created attachment 423378
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740296</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-03-16 16:07:01 -0700</bug_when>
    <thetext>Committed r274531 (235382@main): &lt;https://commits.webkit.org/235382@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422542</attachid>
            <date>2021-03-07 19:42:49 -0800</date>
            <delta_ts>2021-03-15 23:12:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222896-20210307194248.patch</filename>
            <type>text/plain</type>
            <size>8205</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTA0MDEwNGE5NWQ5ZmQy
MWE1MGUzN2Y3NzUyYjNhNTYxNGM5NTIwOS4uNmQ2Y2M0ZDZjZDljNDVhMzYyODEwYWZkYTdkNmU1
YjBiNjBiZTc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTAzLTA3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQmUgbW9yZSBy
ZXN0cmljdGl2ZSBhYm91dCB3aGVuIGNhbnZhczJkIGlzIGFsbG93ZWQgdG8gdXBkYXRlIHN0eWxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI4OTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4g
dXNlIHRoZSBSQUlJIGNsYXNzZXM6CisgICAgICAgIC0gV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1
c3BlbnNpb25TY29wZQorICAgICAgICAtIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhy
ZWFkCisgICAgICAgIC0gU3R5bGU6OlBvc3RSZXNvbHV0aW9uQ2FsbGJhY2tEaXNhYmxlcgorICAg
ICAgICB0byBlbmZvcmNlIHBsYWNlcyB3aGVyZSBzdHlsZSBhbmQgd2lkZ2V0cyBhcmUgYWxsb3dl
ZCB0byBiZSB1cGRhdGVkLCBhbmQgd2hlcmUKKyAgICAgICAgc2NyaXB0IGlzIGFsbG93ZWQgdG8g
YmUgcnVuLgorCisgICAgICAgIFRoaXMgaXMganVzdCBhIGNsZWFudXAvY2xhcml0eSBwYXRjaC4K
KworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udFdpdGhv
dXRVcGRhdGluZ1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6bWVhc3VyZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmb250UHJveHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKwogMjAyMS0wMy0wNyAgTGF1cm8gTW91cmEgIDxs
bW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggLVd1bnVzZWQtcGFy
YW1ldGVyIHdhcm5pbmcgYWZ0ZXIgcjI3NDAzMwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNjczMDljNzM2
NDkyMGY4ZTczNmNlOWY5NTc0MzFhMGZiNzcwZDk3Ni4uZjNmYjI1NjYzMWQzYjczZWE1NTgzYzRh
OTE4NmUwZDE4YzE2ZmQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC00NCwxMyArNDQsMTYgQEAKICNp
bmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQYXRoMkQuaCIKICNpbmNsdWRl
ICJSZW5kZXJUaGVtZS5oIgorI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZE9ic2VydmVyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgorI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiU3R5bGVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVGb250U2l6ZUZ1
bmN0aW9ucy5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlN0eWxl
UmVzb2x2ZUZvckZvbnRSYXcuaCIKKyNpbmNsdWRlICJTdHlsZVRyZWVSZXNvbHZlci5oIgogI2lu
Y2x1ZGUgIlRleHRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0
Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgpAQCAtMTAwLDYgKzEwMywyMyBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ZvY3VzSWZOZWVkZWRJbnRlcm5hbChjb25zdCBQYXRoJiBw
YXRoLCBFbGVtZQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udChjb25z
dCBTdHJpbmcmIG5ld0ZvbnQpCiB7CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gY2FudmFzKCku
ZG9jdW1lbnQoKTsKKyAgICBkb2N1bWVudC51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisKKyAgICBz
ZXRGb250V2l0aG91dFVwZGF0aW5nU3R5bGUobmV3Rm9udCk7Cit9CisKK3ZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRGb250V2l0aG91dFVwZGF0aW5nU3R5bGUoY29uc3QgU3RyaW5n
JiBuZXdGb250KQoreworICAgIC8vIEludGVudGlvbmFsbHkgZG9uJ3QgdXBkYXRlIHN0eWxlIGhl
cmUsIGJlY2F1c2UgdXBkYXRpbmcgc3R5bGUgY2FuIGNhdXNlIEpTIHRvIHJ1biBzeW5jaHJvbm91
c2x5LgorICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHRoZSBtaWRkbGUgb2YgcHJv
Y2Vzc2luZywgYW5kIHJ1bm5pbmcgYXJiaXRyYXJ5IEpTIGluIHRoZSBtaWRkbGUgb2YgcHJvY2Vz
c2luZyBjYW4gY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvci4KKyAgICAvLyBJbnN0ZWFkLCB0aGUg
cmVsZXZhbnQgY2FudmFzIGVudHJ5IHBvaW50cyB1cGRhdGUgc3R5bGUgb25jZSB3aGVuIHRoZXkg
YmVnaW4gcnVubmluZywgYW5kIHdlIHdvbid0IHRvdWNoIHRoZSBzdHlsZSBhZnRlciB0aGF0Lgor
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGUgc3R5bGUgbWF5IGVuZCB1cCBiZWluZyBzdGFsZSBo
ZXJlLCBidXQgdGhhdCdzIGF0IGxlYXN0IGJldHRlciB0aGFuIHJ1bm5pbmcgYXJiaXRyYXJ5IEpT
IGluIHRoZSBtaWRkbGUgb2YgcHJvY2Vzc2luZy4KKworICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0
ZXNTdXNwZW5zaW9uU2NvcGUgc3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXM7CisgICAgU2Ny
aXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwor
ICAgIFN0eWxlOjpQb3N0UmVzb2x1dGlvbkNhbGxiYWNrRGlzYWJsZXIgY2FsbGJhY2tEaXNhYmxl
cihjYW52YXMoKS5kb2N1bWVudCgpKTsKKwogICAgIGlmIChuZXdGb250LmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xMTUsNyArMTM1LDYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldEZvbnQoY29uc3QgU3RyaW5nJiBuZXdGb250KQogICAgIC8vIE1hcCB0aGUg
PGNhbnZhcz4gZm9udCBpbnRvIHRoZSB0ZXh0IHN0eWxlLiBJZiB0aGUgZm9udCB1c2VzIGtleXdv
cmRzIGxpa2UgbGFyZ2VyL3NtYWxsZXIsIHRoZXNlIHdpbGwgd29yawogICAgIC8vIHJlbGF0aXZl
IHRvIHRoZSBjYW52YXMuCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gY2FudmFzKCkuZG9jdW1l
bnQoKTsKLSAgICBkb2N1bWVudC51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKICAgICBGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKICAgICBpZiAoYXV0byogY29tcHV0ZWRT
dHlsZSA9IGNhbnZhcygpLmNvbXB1dGVkU3R5bGUoKSkKQEAgLTE3NSw2ICsxOTQsMTYgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBmbG9hdCB4LCBmbG9hdCB5LAogCiBSZWY8VGV4dE1ldHJpY3M+IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6bWVhc3VyZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogeworICAgIGRvd25jYXN0
PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpLmRvY3VtZW50KCkudXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpOworCisgICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGU7CisgICAg
YXV0byBkaXJlY3Rpb24gPSB0b1RleHREaXJlY3Rpb24oc3RhdGUoKS5kaXJlY3Rpb24sICZjb21w
dXRlZFN0eWxlKTsKKyAgICBib29sIG92ZXJyaWRlID0gY29tcHV0ZWRTdHlsZSA/IGlzT3ZlcnJp
ZGUoY29tcHV0ZWRTdHlsZS0+dW5pY29kZUJpZGkoKSkgOiBmYWxzZTsKKworICAgIFdpZGdldEhp
ZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUgc3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0
ZXM7CisgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxs
b3dlZFNjb3BlOworICAgIFN0eWxlOjpQb3N0UmVzb2x1dGlvbkNhbGxiYWNrRGlzYWJsZXIgY2Fs
bGJhY2tEaXNhYmxlcihjYW52YXMoKS5kb2N1bWVudCgpKTsKKwogICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkp
IHsKICAgICAgICAgYXV0byYgY2FudmFzID0gdGhpcy0+Y2FudmFzKCk7CiAgICAgICAgIFJlc291
cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dDYW52YXNXcml0ZU9yTWVhc3VyZShjYW52YXMu
ZG9jdW1lbnQoKSwgdGV4dCk7CkBAIC0xODYsMjQgKzIxNSwzMiBAQCBSZWY8VGV4dE1ldHJpY3M+
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6bWVhc3VyZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
KQogICAgIFN0cmluZyBub3JtYWxpemVkVGV4dCA9IHRleHQ7CiAgICAgbm9ybWFsaXplU3BhY2Vz
KG5vcm1hbGl6ZWRUZXh0KTsKIAotICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxl
OwotICAgIGF1dG8gZGlyZWN0aW9uID0gdG9UZXh0RGlyZWN0aW9uKHN0YXRlKCkuZGlyZWN0aW9u
LCAmY29tcHV0ZWRTdHlsZSk7Ci0gICAgYm9vbCBvdmVycmlkZSA9IGNvbXB1dGVkU3R5bGUgPyBp
c092ZXJyaWRlKGNvbXB1dGVkU3R5bGUtPnVuaWNvZGVCaWRpKCkpIDogZmFsc2U7Ci0KICAgICBU
ZXh0UnVuIHRleHRSdW4obm9ybWFsaXplZFRleHQsIDAsIDAsIEFsbG93UmlnaHRFeHBhbnNpb24s
IGRpcmVjdGlvbiwgb3ZlcnJpZGUsIHRydWUpOwogICAgIHJldHVybiBtZWFzdXJlVGV4dEludGVy
bmFsKHRleHRSdW4pOwogfQogCiBhdXRvIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Zm9udFBy
b3h5KCkgLT4gY29uc3QgRm9udFByb3h5KiB7Ci0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8
SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7Ci0gICAgY2FudmFzLmRvY3VtZW50KCku
dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIC8vIEludGVudGlvbmFsbHkgZG9uJ3QgdXBkYXRl
IHN0eWxlIGhlcmUsIGJlY2F1c2UgdXBkYXRpbmcgc3R5bGUgY2FuIGNhdXNlIEpTIHRvIHJ1biBz
eW5jaHJvbm91c2x5LgorICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHRoZSBtaWRk
bGUgb2YgcHJvY2Vzc2luZywgYW5kIHJ1bm5pbmcgYXJiaXRyYXJ5IEpTIGluIHRoZSBtaWRkbGUg
b2YgcHJvY2Vzc2luZyBjYW4gY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvci4KKyAgICAvLyBJbnN0
ZWFkLCB0aGUgcmVsZXZhbnQgY2FudmFzIGVudHJ5IHBvaW50cyB1cGRhdGUgc3R5bGUgb25jZSB3
aGVuIHRoZXkgYmVnaW4gcnVubmluZywgYW5kIHdlIHdvbid0IHRvdWNoIHRoZSBzdHlsZSBhZnRl
ciB0aGF0LgorICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGUgc3R5bGUgbWF5IGVuZCB1cCBiZWlu
ZyBzdGFsZSBoZXJlLCBidXQgdGhhdCdzIGF0IGxlYXN0IGJldHRlciB0aGFuIHJ1bm5pbmcgYXJi
aXRyYXJ5IEpTIGluIHRoZSBtaWRkbGUgb2YgcHJvY2Vzc2luZy4KICAgICBpZiAoIXN0YXRlKCku
Zm9udC5yZWFsaXplZCgpKQotICAgICAgICBzZXRGb250KHN0YXRlKCkudW5wYXJzZWRGb250KTsK
KyAgICAgICAgc2V0Rm9udFdpdGhvdXRVcGRhdGluZ1N0eWxlKHN0YXRlKCkudW5wYXJzZWRGb250
KTsKICAgICByZXR1cm4gJnN0YXRlKCkuZm9udDsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBm
bG9hdCB5LCBib29sIGZpbGwsIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKIHsKKyAgICBkb3du
Y2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKS5kb2N1bWVudCgpLnVwZGF0ZVN0
eWxlSWZOZWVkZWQoKTsKKworICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlOwor
ICAgIGF1dG8gZGlyZWN0aW9uID0gdG9UZXh0RGlyZWN0aW9uKHN0YXRlKCkuZGlyZWN0aW9uLCAm
Y29tcHV0ZWRTdHlsZSk7CisgICAgYm9vbCBvdmVycmlkZSA9IGNvbXB1dGVkU3R5bGUgPyBpc092
ZXJyaWRlKGNvbXB1dGVkU3R5bGUtPnVuaWNvZGVCaWRpKCkpIDogZmFsc2U7CisKKyAgICBXaWRn
ZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlV
cGRhdGVzOworICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERp
c2FsbG93ZWRTY29wZTsKKyAgICBTdHlsZTo6UG9zdFJlc29sdXRpb25DYWxsYmFja0Rpc2FibGVy
IGNhbGxiYWNrRGlzYWJsZXIoY2FudmFzKCkuZG9jdW1lbnQoKSk7CisKICAgICBpZiAoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxl
ZCgpKQogICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nQ2FudmFzV3Jp
dGVPck1lYXN1cmUodGhpcy0+Y2FudmFzKCkuZG9jdW1lbnQoKSwgdGV4dCk7CiAKQEAgLTIxMywx
MCArMjUwLDYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJu
YWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICBTdHJpbmcgbm9ybWFsaXpl
ZFRleHQgPSB0ZXh0OwogICAgIG5vcm1hbGl6ZVNwYWNlcyhub3JtYWxpemVkVGV4dCk7CiAKLSAg
ICBjb25zdCBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZTsKLSAgICBhdXRvIGRpcmVjdGlvbiA9
IHRvVGV4dERpcmVjdGlvbihzdGF0ZSgpLmRpcmVjdGlvbiwgJmNvbXB1dGVkU3R5bGUpOwotICAg
IGJvb2wgb3ZlcnJpZGUgPSBjb21wdXRlZFN0eWxlID8gaXNPdmVycmlkZShjb21wdXRlZFN0eWxl
LT51bmljb2RlQmlkaSgpKSA6IGZhbHNlOwotCiAgICAgVGV4dFJ1biB0ZXh0UnVuKG5vcm1hbGl6
ZWRUZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5zaW9uLCBkaXJlY3Rpb24sIG92ZXJyaWRlLCB0
cnVlKTsKICAgICBkcmF3VGV4dFVuY2hlY2tlZCh0ZXh0UnVuLCB4LCB5LCBmaWxsLCBtYXhXaWR0
aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5oCmluZGV4IDFmNjI3ZWNmNTViOTY2MWU3YmE4OGVjYzNkZmRkZDJjNGI4
MjFhZGUuLmQ2N2FlY2NmOGQ3NTg2ZmM1NTk5NGNkZDg4YzFhYTMwZTJkMDYzMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEKENhbnZhc0Jhc2UmLCBib29sIHVzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VN
b2RlKTsKIAorICAgIHZvaWQgc2V0Rm9udFdpdGhvdXRVcGRhdGluZ1N0eWxlKGNvbnN0IFN0cmlu
ZyYpOworCiAgICAgY29uc3QgRm9udFByb3h5KiBmb250UHJveHkoKSBmaW5hbDsKIAogICAgIHZv
aWQgZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHks
IGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gV1RGOjpudWxsb3B0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423304</attachid>
            <date>2021-03-15 23:12:08 -0700</date>
            <delta_ts>2021-03-15 23:19:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222896-20210315231207.patch</filename>
            <type>text/plain</type>
            <size>8067</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk2MzI1YjdkYjE3MTll
ZDQ4MmQ5OWY4MjYxMzEzNDAxNjQ4NTZjNC4uZTJmNjEyZWExMzI0N2M4ODc2NDY1YTk3MjQ3ZWU5
ZjFhYjU4MmM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTAzLTE1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQmUgbW9yZSBy
ZXN0cmljdGl2ZSBhYm91dCB3aGVuIGNhbnZhczJkIGlzIGFsbG93ZWQgdG8gdXBkYXRlIHN0eWxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI4OTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4g
dXNlIHRoZSBSQUlJIGNsYXNzZXM6CisgICAgICAgIC0gV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1
c3BlbnNpb25TY29wZQorICAgICAgICAtIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhy
ZWFkCisgICAgICAgIC0gU3R5bGU6OlBvc3RSZXNvbHV0aW9uQ2FsbGJhY2tEaXNhYmxlcgorICAg
ICAgICB0byBlbmZvcmNlIHBsYWNlcyB3aGVyZSBzdHlsZSBhbmQgd2lkZ2V0cyBhcmUgYWxsb3dl
ZCB0byBiZSB1cGRhdGVkLCBhbmQgd2hlcmUKKyAgICAgICAgc2NyaXB0IGlzIGFsbG93ZWQgdG8g
YmUgcnVuLgorCisgICAgICAgIFRoaXMgaXMganVzdCBhIGNsZWFudXAvY2xhcml0eSBwYXRjaC4K
KworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udFdpdGhv
dXRVcGRhdGluZ1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6dG9UZXh0RGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6bWVhc3VyZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpmb250UHJveHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKwogMjAyMS0wMy0xNSAgSm9o
biBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQQ006IFNwbGl0IGF0
dHJpYnV0aW9uUmVwb3J0VVJMKCkgaW50byBhdHRyaWJ1dGlvblJlcG9ydFNvdXJjZVVSTCgpIGFu
ZCBhdHRyaWJ1dGlvblJlcG9ydEF0dHJpYnV0ZU9uVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGQ0
YmI1MWZhOTI5MDFlZDQ0MWM0NjE0MDczMWJlZGYxOGQzNzczZTAuLjAxY2IwZmZkMjg2ZmE0MGI1
MWNkZmI2ZTBmODUwNzcxZGI5Y2Q0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtNDQsMTMgKzQ0LDE2
IEBACiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGF0aDJELmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKKyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0eWxlQnVpbGRlci5oIgogI2luY2x1ZGUgIlN0eWxlRm9u
dFNpemVGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRl
ICJTdHlsZVJlc29sdmVGb3JGb250UmF3LmgiCisjaW5jbHVkZSAiU3R5bGVUcmVlUmVzb2x2ZXIu
aCIKICNpbmNsdWRlICJUZXh0TWV0cmljcy5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNs
dWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KQEAgLTEwMCw2ICsxMDMsMjMgQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdGb2N1c0lmTmVlZGVkSW50ZXJuYWwoY29uc3Qg
UGF0aCYgcGF0aCwgRWxlbWUKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZv
bnQoY29uc3QgU3RyaW5nJiBuZXdGb250KQogeworICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGNh
bnZhcygpLmRvY3VtZW50KCk7CisgICAgZG9jdW1lbnQudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwor
CisgICAgc2V0Rm9udFdpdGhvdXRVcGRhdGluZ1N0eWxlKG5ld0ZvbnQpOworfQorCit2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udFdpdGhvdXRVcGRhdGluZ1N0eWxlKGNvbnN0
IFN0cmluZyYgbmV3Rm9udCkKK3sKKyAgICAvLyBJbnRlbnRpb25hbGx5IGRvbid0IHVwZGF0ZSBz
dHlsZSBoZXJlLCBiZWNhdXNlIHVwZGF0aW5nIHN0eWxlIGNhbiBjYXVzZSBKUyB0byBydW4gc3lu
Y2hyb25vdXNseS4KKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiB0aGUgbWlkZGxl
IG9mIHByb2Nlc3NpbmcsIGFuZCBydW5uaW5nIGFyYml0cmFyeSBKUyBpbiB0aGUgbWlkZGxlIG9m
IHByb2Nlc3NpbmcgY2FuIGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IuCisgICAgLy8gSW5zdGVh
ZCwgdGhlIHJlbGV2YW50IGNhbnZhcyBlbnRyeSBwb2ludHMgdXBkYXRlIHN0eWxlIG9uY2Ugd2hl
biB0aGV5IGJlZ2luIHJ1bm5pbmcsIGFuZCB3ZSB3b24ndCB0b3VjaCB0aGUgc3R5bGUgYWZ0ZXIg
dGhhdC4KKyAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlIHN0eWxlIG1heSBlbmQgdXAgYmVpbmcg
c3RhbGUgaGVyZSwgYnV0IHRoYXQncyBhdCBsZWFzdCBiZXR0ZXIgdGhhbiBydW5uaW5nIGFyYml0
cmFyeSBKUyBpbiB0aGUgbWlkZGxlIG9mIHByb2Nlc3NpbmcuCisKKyAgICBXaWRnZXRIaWVyYXJj
aHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwor
ICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRT
Y29wZTsKKyAgICBTdHlsZTo6UG9zdFJlc29sdXRpb25DYWxsYmFja0Rpc2FibGVyIGNhbGxiYWNr
RGlzYWJsZXIoY2FudmFzKCkuZG9jdW1lbnQoKSk7CisKICAgICBpZiAobmV3Rm9udC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTEyLDExICsxMzIsNiBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udChjb25zdCBTdHJpbmcmIG5ld0ZvbnQpCiAgICAgaWYg
KCFmb250UmF3KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBNYXAgdGhlIDxjYW52YXM+IGZv
bnQgaW50byB0aGUgdGV4dCBzdHlsZS4gSWYgdGhlIGZvbnQgdXNlcyBrZXl3b3JkcyBsaWtlIGxh
cmdlci9zbWFsbGVyLCB0aGVzZSB3aWxsIHdvcmsKLSAgICAvLyByZWxhdGl2ZSB0byB0aGUgY2Fu
dmFzLgotICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGNhbnZhcygpLmRvY3VtZW50KCk7Ci0gICAg
ZG9jdW1lbnQudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwotCiAgICAgRm9udENhc2NhZGVEZXNjcmlw
dGlvbiBmb250RGVzY3JpcHRpb247CiAgICAgaWYgKGF1dG8qIGNvbXB1dGVkU3R5bGUgPSBjYW52
YXMoKS5jb21wdXRlZFN0eWxlKCkpCiAgICAgICAgIGZvbnREZXNjcmlwdGlvbiA9IEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24geyBjb21wdXRlZFN0eWxlLT5mb250RGVzY3JpcHRpb24oKSB9OwpAQCAt
MTI3LDYgKzE0Miw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KGNv
bnN0IFN0cmluZyYgbmV3Rm9udCkKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVk
U2l6ZShEZWZhdWx0Rm9udFNpemUpOwogICAgIH0KIAorICAgIC8vIE1hcCB0aGUgPGNhbnZhcz4g
Zm9udCBpbnRvIHRoZSB0ZXh0IHN0eWxlLiBJZiB0aGUgZm9udCB1c2VzIGtleXdvcmRzIGxpa2Ug
bGFyZ2VyL3NtYWxsZXIsIHRoZXNlIHdpbGwgd29yaworICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBj
YW52YXMuCisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gY2FudmFzKCkuZG9jdW1lbnQoKTsKICAg
ICBhdXRvIGZvbnRDYXNjYWRlID0gU3R5bGU6OnJlc29sdmVGb3JGb250UmF3KCpmb250UmF3LCBX
VEZNb3ZlKGZvbnREZXNjcmlwdGlvbiksIGRvY3VtZW50KTsKICAgICBpZiAoIWZvbnRDYXNjYWRl
KQogICAgICAgICByZXR1cm47CkBAIC0xNDIsNyArMTYwLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldEZvbnQoY29uc3QgU3RyaW5nJiBuZXdGb250KQogCiBpbmxpbmUgVGV4
dERpcmVjdGlvbiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRvVGV4dERpcmVjdGlvbihEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSoqIGNvbXB1dGVkU3R5bGUpIGNvbnN0
CiB7Ci0gICAgYXV0byogc3R5bGUgPSAoY29tcHV0ZWRTdHlsZSB8fCBkaXJlY3Rpb24gPT0gRGly
ZWN0aW9uOjpJbmhlcml0KSA/IGNhbnZhcygpLmNvbXB1dGVkU3R5bGUoKSA6IG51bGxwdHI7Cisg
ICAgYXV0byogc3R5bGUgPSAoY29tcHV0ZWRTdHlsZSB8fCBkaXJlY3Rpb24gPT0gRGlyZWN0aW9u
OjpJbmhlcml0KSA/IGNhbnZhcygpLmV4aXN0aW5nQ29tcHV0ZWRTdHlsZSgpIDogbnVsbHB0cjsK
ICAgICBpZiAoY29tcHV0ZWRTdHlsZSkKICAgICAgICAgKmNvbXB1dGVkU3R5bGUgPSBzdHlsZTsK
ICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewpAQCAtMTc2LDYgKzE5NCwxMiBAQCB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0
IHgsIGZsb2F0IHksCiAKIFJlZjxUZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjptZWFzdXJlVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiB7CisgICAgZG93bmNhc3Q8SFRNTENh
bnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSkuZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CisKKyAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRX
aWRnZXRIaWVyYXJjaHlVcGRhdGVzOworICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWlu
VGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKKyAgICBTdHlsZTo6UG9zdFJlc29sdXRpb25D
YWxsYmFja0Rpc2FibGVyIGNhbGxiYWNrRGlzYWJsZXIoY2FudmFzKCkuZG9jdW1lbnQoKSk7CisK
ICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElT
dGF0aXN0aWNzRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8mIGNhbnZhcyA9IHRoaXMtPmNhbnZh
cygpOwogICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nQ2FudmFzV3Jp
dGVPck1lYXN1cmUoY2FudmFzLmRvY3VtZW50KCksIHRleHQpOwpAQCAtMTkxLDE1ICsyMTUsMjQg
QEAgUmVmPFRleHRNZXRyaWNzPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Om1lYXN1cmVUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCkKIH0KIAogYXV0byBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmZvbnRQcm94eSgpIC0+IGNvbnN0IEZvbnRQcm94eSogewotICAgIGF1dG8mIGNhbnZhcyA9IGRv
d25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwotICAgIGNhbnZhcy5kb2N1
bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICAvLyBJbnRlbnRpb25hbGx5IGRvbid0
IHVwZGF0ZSBzdHlsZSBoZXJlLCBiZWNhdXNlIHVwZGF0aW5nIHN0eWxlIGNhbiBjYXVzZSBKUyB0
byBydW4gc3luY2hyb25vdXNseS4KKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiB0
aGUgbWlkZGxlIG9mIHByb2Nlc3NpbmcsIGFuZCBydW5uaW5nIGFyYml0cmFyeSBKUyBpbiB0aGUg
bWlkZGxlIG9mIHByb2Nlc3NpbmcgY2FuIGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IuCisgICAg
Ly8gSW5zdGVhZCwgdGhlIHJlbGV2YW50IGNhbnZhcyBlbnRyeSBwb2ludHMgdXBkYXRlIHN0eWxl
IG9uY2Ugd2hlbiB0aGV5IGJlZ2luIHJ1bm5pbmcsIGFuZCB3ZSB3b24ndCB0b3VjaCB0aGUgc3R5
bGUgYWZ0ZXIgdGhhdC4KKyAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlIHN0eWxlIG1heSBlbmQg
dXAgYmVpbmcgc3RhbGUgaGVyZSwgYnV0IHRoYXQncyBhdCBsZWFzdCBiZXR0ZXIgdGhhbiBydW5u
aW5nIGFyYml0cmFyeSBKUyBpbiB0aGUgbWlkZGxlIG9mIHByb2Nlc3NpbmcuCisKICAgICBpZiAo
IXN0YXRlKCkuZm9udC5yZWFsaXplZCgpKQotICAgICAgICBzZXRGb250KHN0YXRlKCkudW5wYXJz
ZWRGb250KTsKKyAgICAgICAgc2V0Rm9udFdpdGhvdXRVcGRhdGluZ1N0eWxlKHN0YXRlKCkudW5w
YXJzZWRGb250KTsKICAgICByZXR1cm4gJnN0YXRlKCkuZm9udDsKIH0KIAogdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBm
bG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKIHsK
KyAgICBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKS5kb2N1bWVudCgp
LnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKworICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNw
ZW5zaW9uU2NvcGUgc3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXM7CisgICAgU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOworICAgIFN0
eWxlOjpQb3N0UmVzb2x1dGlvbkNhbGxiYWNrRGlzYWJsZXIgY2FsbGJhY2tEaXNhYmxlcihjYW52
YXMoKS5kb2N1bWVudCgpKTsKKwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCiAgICAgICAgIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dDYW52YXNXcml0ZU9yTWVhc3VyZSh0aGlzLT5jYW52
YXMoKS5kb2N1bWVudCgpLCB0ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCA4OTdjOGIzYWU3YjM5MmZj
OTMwMGNlYTY5OTczZmJjYmMzODAxNWM4Li4yMTlmMGU3MGUzMDU1NjE5M2IwYWU3M2RiODEwMzNi
NTU3YTA2MjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtNTgsNiArNTgsNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBpczJkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGNvbnN0IEZvbnRQ
cm94eSogZm9udFByb3h5KCkgZmluYWw7CisgICAgdm9pZCBzZXRGb250V2l0aG91dFVwZGF0aW5n
U3R5bGUoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIGRyYXdUZXh0SW50ZXJuYWwoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIE9wdGlvbmFsPGZsb2F0
PiBtYXhXaWR0aCA9IFdURjo6bnVsbG9wdCk7CiAK
</data>
<flag name="review"
          id="442649"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423378</attachid>
            <date>2021-03-16 12:16:40 -0700</date>
            <delta_ts>2021-03-16 12:16:40 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-222896-20210316121639.patch</filename>
            <type>text/plain</type>
            <size>7485</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk2MzI1YjdkYjE3MTll
ZDQ4MmQ5OWY4MjYxMzEzNDAxNjQ4NTZjNC4uYjgzNGExMmIyN2JkMzQ5NzEyNWQ4OTAzMWE0MTAy
YmE1ZTI4OWQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAzLTE1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQmUgbW9yZSBy
ZXN0cmljdGl2ZSBhYm91dCB3aGVuIGNhbnZhczJkIGlzIGFsbG93ZWQgdG8gdXBkYXRlIHN0eWxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI4OTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4g
dXNlIHRoZSBSQUlJIGNsYXNzIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHRv
IGVuZm9yY2UgcGxhY2VzIHdoZXJlCisgICAgICAgIHNjcmlwdCBpcyBhbGxvd2VkIHRvIGJlIHJ1
bi4KKworICAgICAgICBUaGlzIGlzIGp1c3QgYSBjbGVhbnVwL2NsYXJpdHkgcGF0Y2guCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgor
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnRXaXRob3V0VXBk
YXRpbmdTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnRvVGV4dERpcmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6Om1lYXN1cmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6Zm9udFByb3h5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisKIDIwMjEtMDMtMTUgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUENNOiBTcGxpdCBhdHRyaWJ1
dGlvblJlcG9ydFVSTCgpIGludG8gYXR0cmlidXRpb25SZXBvcnRTb3VyY2VVUkwoKSBhbmQgYXR0
cmlidXRpb25SZXBvcnRBdHRyaWJ1dGVPblVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBkNGJiNTFm
YTkyOTAxZWQ0NDFjNDYxNDA3MzFiZWRmMThkMzc3M2UwLi4xNDE1NTdmZGM5N2I0MjBiYzEyMzlj
MTMxNzc0ZjM0N2M2ZWNjMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTQ0LDEzICs0NCwxNiBAQAog
I2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhdGgyRC5oIgogI2luY2x1
ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCisjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJTdHlsZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJTdHlsZUZvbnRTaXpl
RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiU3R5
bGVSZXNvbHZlRm9yRm9udFJhdy5oIgorI2luY2x1ZGUgIlN0eWxlVHJlZVJlc29sdmVyLmgiCiAj
aW5jbHVkZSAiVGV4dE1ldHJpY3MuaCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSA8
d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CkBAIC0xMDAsNiArMTAzLDIxIEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3Rm9jdXNJZk5lZWRlZEludGVybmFsKGNvbnN0IFBhdGgm
IHBhdGgsIEVsZW1lCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KGNv
bnN0IFN0cmluZyYgbmV3Rm9udCkKIHsKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBjYW52YXMo
KS5kb2N1bWVudCgpOworICAgIGRvY3VtZW50LnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKworICAg
IHNldEZvbnRXaXRob3V0VXBkYXRpbmdTdHlsZShuZXdGb250KTsKK30KKwordm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnRXaXRob3V0VXBkYXRpbmdTdHlsZShjb25zdCBTdHJp
bmcmIG5ld0ZvbnQpCit7CisgICAgLy8gSW50ZW50aW9uYWxseSBkb24ndCB1cGRhdGUgc3R5bGUg
aGVyZSwgYmVjYXVzZSB1cGRhdGluZyBzdHlsZSBjYW4gY2F1c2UgSlMgdG8gcnVuIHN5bmNocm9u
b3VzbHkuCisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gdGhlIG1pZGRsZSBvZiBw
cm9jZXNzaW5nLCBhbmQgcnVubmluZyBhcmJpdHJhcnkgSlMgaW4gdGhlIG1pZGRsZSBvZiBwcm9j
ZXNzaW5nIGNhbiBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yLgorICAgIC8vIEluc3RlYWQsIHRo
ZSByZWxldmFudCBjYW52YXMgZW50cnkgcG9pbnRzIHVwZGF0ZSBzdHlsZSBvbmNlIHdoZW4gdGhl
eSBiZWdpbiBydW5uaW5nLCBhbmQgd2Ugd29uJ3QgdG91Y2ggdGhlIHN0eWxlIGFmdGVyIHRoYXQu
CisgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoZSBzdHlsZSBtYXkgZW5kIHVwIGJlaW5nIHN0YWxl
IGhlcmUsIGJ1dCB0aGF0J3MgYXQgbGVhc3QgYmV0dGVyIHRoYW4gcnVubmluZyBhcmJpdHJhcnkg
SlMgaW4gdGhlIG1pZGRsZSBvZiBwcm9jZXNzaW5nLgorCisgICAgU2NyaXB0RGlzYWxsb3dlZFNj
b3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOworCiAgICAgaWYgKG5ld0Zv
bnQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTExMiwxMSArMTMwLDYgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQoY29uc3QgU3RyaW5nJiBuZXdGb250
KQogICAgIGlmICghZm9udFJhdykKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gTWFwIHRoZSA8
Y2FudmFzPiBmb250IGludG8gdGhlIHRleHQgc3R5bGUuIElmIHRoZSBmb250IHVzZXMga2V5d29y
ZHMgbGlrZSBsYXJnZXIvc21hbGxlciwgdGhlc2Ugd2lsbCB3b3JrCi0gICAgLy8gcmVsYXRpdmUg
dG8gdGhlIGNhbnZhcy4KLSAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBjYW52YXMoKS5kb2N1bWVu
dCgpOwotICAgIGRvY3VtZW50LnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLQogICAgIEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwogICAgIGlmIChhdXRvKiBjb21wdXRlZFN0
eWxlID0gY2FudmFzKCkuY29tcHV0ZWRTdHlsZSgpKQogICAgICAgICBmb250RGVzY3JpcHRpb24g
PSBGb250Q2FzY2FkZURlc2NyaXB0aW9uIHsgY29tcHV0ZWRTdHlsZS0+Zm9udERlc2NyaXB0aW9u
KCkgfTsKQEAgLTEyNyw2ICsxNDAsOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0Rm9udChjb25zdCBTdHJpbmcmIG5ld0ZvbnQpCiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRDb21wdXRlZFNpemUoRGVmYXVsdEZvbnRTaXplKTsKICAgICB9CiAKKyAgICAvLyBNYXAgdGhl
IDxjYW52YXM+IGZvbnQgaW50byB0aGUgdGV4dCBzdHlsZS4gSWYgdGhlIGZvbnQgdXNlcyBrZXl3
b3JkcyBsaWtlIGxhcmdlci9zbWFsbGVyLCB0aGVzZSB3aWxsIHdvcmsKKyAgICAvLyByZWxhdGl2
ZSB0byB0aGUgY2FudmFzLgorICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGNhbnZhcygpLmRvY3Vt
ZW50KCk7CiAgICAgYXV0byBmb250Q2FzY2FkZSA9IFN0eWxlOjpyZXNvbHZlRm9yRm9udFJhdygq
Zm9udFJhdywgV1RGTW92ZShmb250RGVzY3JpcHRpb24pLCBkb2N1bWVudCk7CiAgICAgaWYgKCFm
b250Q2FzY2FkZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQyLDcgKzE1OCw3IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KGNvbnN0IFN0cmluZyYgbmV3Rm9udCkKIAog
aW5saW5lIFRleHREaXJlY3Rpb24gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0b1RleHREaXJl
Y3Rpb24oRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqKiBjb21wdXRlZFN0
eWxlKSBjb25zdAogewotICAgIGF1dG8qIHN0eWxlID0gKGNvbXB1dGVkU3R5bGUgfHwgZGlyZWN0
aW9uID09IERpcmVjdGlvbjo6SW5oZXJpdCkgPyBjYW52YXMoKS5jb21wdXRlZFN0eWxlKCkgOiBu
dWxscHRyOworICAgIGF1dG8qIHN0eWxlID0gY29tcHV0ZWRTdHlsZSB8fCBkaXJlY3Rpb24gPT0g
RGlyZWN0aW9uOjpJbmhlcml0ID8gY2FudmFzKCkuZXhpc3RpbmdDb21wdXRlZFN0eWxlKCkgOiBu
dWxscHRyOwogICAgIGlmIChjb21wdXRlZFN0eWxlKQogICAgICAgICAqY29tcHV0ZWRTdHlsZSA9
IHN0eWxlOwogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CkBAIC0xNzYsNiArMTkyLDEwIEBAIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCwgZmxvYXQgeCwgZmxvYXQgeSwKIAogUmVmPFRleHRNZXRyaWNzPiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6Om1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKKyAgICBkb3duY2Fz
dDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKS5kb2N1bWVudCgpLnVwZGF0ZVN0eWxl
SWZOZWVkZWQoKTsKKworICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNj
cmlwdERpc2FsbG93ZWRTY29wZTsKKwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpIHsKICAgICAgICAgYXV0
byYgY2FudmFzID0gdGhpcy0+Y2FudmFzKCk7CiAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVy
OjpzaGFyZWQoKS5sb2dDYW52YXNXcml0ZU9yTWVhc3VyZShjYW52YXMuZG9jdW1lbnQoKSwgdGV4
dCk7CkBAIC0xOTEsMTUgKzIxMSwyMyBAQCBSZWY8VGV4dE1ldHJpY3M+IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6bWVhc3VyZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogfQogCiBhdXRvIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Zm9udFByb3h5KCkgLT4gY29uc3QgRm9udFByb3h5KiB7
Ci0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jh
c2UoKSk7Ci0gICAgY2FudmFzLmRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAg
IC8vIEludGVudGlvbmFsbHkgZG9uJ3QgdXBkYXRlIHN0eWxlIGhlcmUsIGJlY2F1c2UgdXBkYXRp
bmcgc3R5bGUgY2FuIGNhdXNlIEpTIHRvIHJ1biBzeW5jaHJvbm91c2x5LgorICAgIC8vIFRoaXMg
ZnVuY3Rpb24gaXMgY2FsbGVkIGluIHRoZSBtaWRkbGUgb2YgcHJvY2Vzc2luZywgYW5kIHJ1bm5p
bmcgYXJiaXRyYXJ5IEpTIGluIHRoZSBtaWRkbGUgb2YgcHJvY2Vzc2luZyBjYW4gY2F1c2UgdW5l
eHBlY3RlZCBiZWhhdmlvci4KKyAgICAvLyBJbnN0ZWFkLCB0aGUgcmVsZXZhbnQgY2FudmFzIGVu
dHJ5IHBvaW50cyB1cGRhdGUgc3R5bGUgb25jZSB3aGVuIHRoZXkgYmVnaW4gcnVubmluZywgYW5k
IHdlIHdvbid0IHRvdWNoIHRoZSBzdHlsZSBhZnRlciB0aGF0LgorICAgIC8vIFRoaXMgbWVhbnMg
dGhhdCB0aGUgc3R5bGUgbWF5IGVuZCB1cCBiZWluZyBzdGFsZSBoZXJlLCBidXQgdGhhdCdzIGF0
IGxlYXN0IGJldHRlciB0aGFuIHJ1bm5pbmcgYXJiaXRyYXJ5IEpTIGluIHRoZSBtaWRkbGUgb2Yg
cHJvY2Vzc2luZy4KKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3Jp
cHREaXNhbGxvd2VkU2NvcGU7CisKICAgICBpZiAoIXN0YXRlKCkuZm9udC5yZWFsaXplZCgpKQot
ICAgICAgICBzZXRGb250KHN0YXRlKCkudW5wYXJzZWRGb250KTsKKyAgICAgICAgc2V0Rm9udFdp
dGhvdXRVcGRhdGluZ1N0eWxlKHN0YXRlKCkudW5wYXJzZWRGb250KTsKICAgICByZXR1cm4gJnN0
YXRlKCkuZm9udDsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0
SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGws
IE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKIHsKKyAgICBkb3duY2FzdDxIVE1MQ2FudmFzRWxl
bWVudD4oY2FudmFzQmFzZSgpKS5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKwor
ICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRT
Y29wZTsKKwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCiAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVy
OjpzaGFyZWQoKS5sb2dDYW52YXNXcml0ZU9yTWVhc3VyZSh0aGlzLT5jYW52YXMoKS5kb2N1bWVu
dCgpLCB0ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCA4OTdjOGIzYWU3YjM5MmZjOTMwMGNlYTY5OTcz
ZmJjYmMzODAxNWM4Li4yMTlmMGU3MGUzMDU1NjE5M2IwYWU3M2RiODEwMzNiNTU3YTA2MjljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaApAQCAtNTgsNiArNTgsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpczJkKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGNvbnN0IEZvbnRQcm94eSogZm9udFBy
b3h5KCkgZmluYWw7CisgICAgdm9pZCBzZXRGb250V2l0aG91dFVwZGF0aW5nU3R5bGUoY29uc3Qg
U3RyaW5nJik7CiAKICAgICB2b2lkIGRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0
LCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9
IFdURjo6bnVsbG9wdCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>