<?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>215013</bug_id>
          
          <creation_ts>2020-07-30 22:43:30 -0700</creation_ts>
          <short_desc>Clean up text layout code a bit</short_desc>
          <delta_ts>2020-08-07 23:23:13 -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>
          
          <blocked>206208</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1676732</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-07-30 22:43:30 -0700</bug_when>
    <thetext>Clean up text layout code a bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676737</commentid>
    <comment_count>1</comment_count>
      <attachid>405671</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-07-30 22:56:48 -0700</bug_when>
    <thetext>Created attachment 405671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676738</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-30 22:57:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/66365710&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676739</commentid>
    <comment_count>3</comment_count>
      <attachid>405672</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-07-30 23:03:56 -0700</bug_when>
    <thetext>Created attachment 405672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677051</commentid>
    <comment_count>4</comment_count>
      <attachid>405672</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-07-31 16:59:01 -0700</bug_when>
    <thetext>Comment on attachment 405672
Patch

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

&gt; Source/WebCore/platform/graphics/FontCascade.cpp:1391
&gt; +    float initialAdvance;

I always get scared when I see a non-initialized variable (I know it gets a value eventually).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677063</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-07-31 17:36:19 -0700</bug_when>
    <thetext>Committed r265170: &lt;https://trac.webkit.org/changeset/265170&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405671</attachid>
            <date>2020-07-30 22:56:48 -0700</date>
            <delta_ts>2020-07-30 23:03:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215013-20200730225647.patch</filename>
            <type>text/plain</type>
            <size>24658</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMwM2ExZGYyNzcxYWZj
NGZmYTJlYTFmZTIyNTU3YmY0OGE0NDE2Ni4uNjdhNjI3NzAwZDFiMjU3MDMwZTBhYjIzNDRkN2Y0
OTA1ODRiYzNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA3LTMwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAg
dGV4dCBsYXlvdXQgY29kZSBhIGJpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1MDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc2OS4KKworICAgICAgICBTZWUgZmlsZS1zcGVj
aWZpYyBDaGFuZ2VMb2cgZW50cmllcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDogUmVtb3ZlIHVubmVjZXNzYXJ5IGRlY2xhcmF0aW9u
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpsYXlvdXRUZXh0IGNvbnN0KTogUmVuYW1lIGdseXBoQnVm
ZmVyRm9yVGV4dFJ1bigpIHRvIGxheW91dFRleHQoKS4KKyAgICAgICAgQWxzbywgbWFrZSBpdCBy
ZXR1cm4gYSBHbHlwaEJ1ZmZlciBpbnN0ZWFkIG9mIHRha2luZyBhIEdseXBoQnVmZmVyIGFzIGFu
IG91dCBwYXJhbS4KKyAgICAgICAgSXRzIHByZXZpb3VzIHJldHVybiwgdGhlIGluaXRpYWwgYWR2
YW5jZSwgaXMgbm93IHJldHVybmVkIGluIEdseXBoQnVmZmVyOjppbml0aWFsQWR2YW5jZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3VGV4dCBjb25zdCk6IFVwZGF0ZSB0byBu
ZXcgc2lnbmF0dXJlIG9mIGxheW91dFRleHQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNj
YWRlOjpkcmF3RW1waGFzaXNNYXJrcyBjb25zdCk6IElubGluZSBkcmF3RW1waGFzaXNNYXJrc0Zv
clNpbXBsZVRleHQoKQorICAgICAgICBhbmQgZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4
dCgpLCBzaW5jZSB0aGV5J3JlIG5lYXJseSBpZGVudGljYWwuIFVwZGF0ZSB0byB0aGUgbmV3Cisg
ICAgICAgIHNpZ25hdHVyZSBvZiBsYXlvdXRUZXh0KCkuCisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KTogVXBkYXRlIHRvIHRoZSBuZXcg
c2lnbmF0dXJlIG9mCisgICAgICAgIGxheW91dFRleHQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpsYXlvdXRTaW1wbGVUZXh0IGNvbnN0KTogTWFrZSB0aGlzIHJldHVybiBhIG5l
dyBHbHlwaEJ1ZmZlciwgaW5zdGVhZAorICAgICAgICBvZiB0YWtpbmcgb25lIGFzIGFuIG91dCBw
YXJhbS4gQWxzbywgdXNlIGFjY2Vzc29ycyBvZiBXaWR0aEl0ZXJhdG9yIGluc3RlYWQgb2YgcmVh
Y2hpbmcKKyAgICAgICAgaW50byBpdHMgZ3V0cy4gVGhlIHByZXZpb3VzIHJldHVybiB2YWx1ZSBp
cyBub3cgcmV0dXJuZWQgaW4gR2x5cGhCdWZmZXI6OmluaXRpYWxBZHZhbmNlLgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dENvbXBsZXhUZXh0IGNvbnN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZmxvYXRXaWR0aEZvclNpbXBsZVRleHQgY29u
c3QpOiBVc2UgYWNjZXNzb3JzIG9mIFdpZHRoSXRlcmF0b3IKKyAgICAgICAgaW5zdGVhZCBvZiBy
ZWFjaGluZyBpbnRvIGl0cyBndXRzLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmFk
anVzdFNlbGVjdGlvblJlY3RGb3JTaW1wbGVUZXh0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FzY2FkZTo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0IGNvbnN0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZGFzaGVzRm9ySW50ZXJz
ZWN0aW9uc1dpdGhSZWN0IGNvbnN0KTogU2FtZSBhcworICAgICAgICBGb250Q2FzY2FkZTo6ZHJh
d0VtcGhhc2lzTWFya3MoKSBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpn
bHlwaEJ1ZmZlckZvclRleHRSdW4gY29uc3QpOiBSZW5hbWVkIHRvIGxheW91dFRleHQoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBs
ZVRleHQgY29uc3QpOiBSZW5hbWVkIHRvCisgICAgICAgIGxheW91dFNpbXBsZVRleHQoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBs
ZXhUZXh0IGNvbnN0KTogUmVuYW1lZCB0bworICAgICAgICBsYXlvdXRDb21wbGV4VGV4dCgpLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzRm9yU2ltcGxl
VGV4dCBjb25zdCk6IElubGluZWQgaW50bworICAgICAgICBkcmF3RW1waGFzaXNNYXJrcygpLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxl
eFRleHQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFuY2U6OkdseXBoQnVmZmVyQWR2YW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFuY2U6Om9wZXJhdG9yIEZsb2F0U2l6ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oOiBSZW1vdmUgdW5uZWNlc3Nh
cnkgZGVjbGFyYXRpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjpXaWR0aEl0ZXJhdG9yKTog
VXBkYXRlIGZvciBjaGFuZ2VzIHRvIFdpZHRoSXRlcmF0b3IuaAorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaDogUmVhcnJhbmdlIHRoZSBjbGFzcyBtZW1iZXJzIHRv
IHNvcnQgdGhlbSBieSBzaXplLAorICAgICAgICB0byBnZXQgYmV0dGVyIHBhY2tpbmcuIEFsc28s
IG1ha2UgYWxsIG1lbWJlciB2YXJpYWJsZXMgcHJpdmF0ZSwgYW5kIGluaXRpYWxpemUgdGhlbQor
ICAgICAgICBhbGwgd2l0aCB7IH0gc3ludGF4LgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVy
YXRvcjo6ZmluYWxSb3VuZGluZ1dpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRo
SXRlcmF0b3I6OmN1cnJlbnRDaGFyYWN0ZXIgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3MuY3BwOiBSZW1vdmUgdW5uZWNlc3NhcnkgaW5jbHVkZS4KKwogMjAy
MC0wNy0zMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgSXQgd291
bGQgYmUgbmljZSBpZiB0aGUgcHJlZGljYXRlIHRha2luZyBmdW5jdGlvbnMgaW4gUGFyc2luZ1V0
aWxpdGllcy5oIGRpZG4ndCByZXF1aXJlIHNwZWNpZnlpbmcgdGhlIGNoYXJhY3RlciB0eXBlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggZDQwZmQzYWY5MDYzZGY0
ZmFhNmRmY2NmOWI1MGU4YWFhMDkwNTgzNC4uZWFmOWRhYzQyMGFhZmUwMmJjYWY3MDdiN2VkY2I0
ZGRlMzNkOTRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAt
NTksNyArNTksNiBAQCBjbGFzcyBHbHlwaFBhZ2U7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBj
bGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgR2x5cGhEYXRhOwotc3RydWN0IFdpZHRoSXRlcmF0
b3I7CiAKIGVudW0gRm9udFZhcmlhbnQgeyBBdXRvVmFyaWFudCwgTm9ybWFsVmFyaWFudCwgU21h
bGxDYXBzVmFyaWFudCwgRW1waGFzaXNNYXJrVmFyaWFudCwgQnJva2VuSWRlb2dyYXBoVmFyaWFu
dCB9OwogZW51bSBQaXRjaCB7IFVua25vd25QaXRjaCwgRml4ZWRQaXRjaCwgVmFyaWFibGVQaXRj
aCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwCmluZGV4IDY5MWEzZTFhNWFmOGMzMzYxZGY1ZWIwZjgyZDk0YjJlMTE4MmVkMDkuLjVjY2E5
MmY1NWY3N2IyOTBkZWNjMGYwNjQ4MTc0Yjc0ZGNhNzNjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTI4NSwxOCArMjg1LDE5
IEBAIHZvaWQgRm9udENhc2NhZGU6OnVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRT
ZWxlY3RvcikgY29uc3QKICAgICBtX3JlcXVpcmVzU2hhcGluZyA9IGNvbXB1dGVSZXF1aXJlc1No
YXBpbmcoKTsKIH0KIAotRmxvYXRTaXplIEZvbnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRleHRS
dW4oQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKSBjb25zdAorR2x5cGhC
dWZmZXIgRm9udENhc2NhZGU6OmxheW91dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29u
c3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgU2hvdWxkU2F2ZU9m
ZnNldHMgc2hvdWxkU2F2ZU9mZnNldHMsIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBo
YXNpcykgY29uc3QKIHsKICAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBDb21wbGV4KQotICAgICAg
ICByZXR1cm4geyBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0
bywgZ2x5cGhCdWZmZXIpLCAwIH07Ci0gICAgcmV0dXJuIGdldEdseXBoc0FuZEFkdmFuY2VzRm9y
Q29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpOworICAgICAgICByZXR1cm4g
bGF5b3V0U2ltcGxlVGV4dChydW4sIGZyb20sIHRvLCBzaG91bGRTYXZlT2Zmc2V0cywgZm9yVGV4
dEVtcGhhc2lzKTsKKworICAgIHJldHVybiBsYXlvdXRDb21wbGV4VGV4dChydW4sIGZyb20sIHRv
LCBzaG91bGRTYXZlT2Zmc2V0cywgZm9yVGV4dEVtcGhhc2lzKTsKIH0KIAogZmxvYXQgRm9udENh
c2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYg
cnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5z
aWduZWQ+IHRvLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0
aW9uKSBjb25zdAogewogICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4u
bGVuZ3RoKCkpOwotICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIEZsb2F0UG9pbnQg
c3RhcnRQb2ludCA9IHBvaW50ICsgZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRoKHJ1biwg
ZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZlcik7CisgICAgYXV0
byBnbHlwaEJ1ZmZlciA9IGxheW91dFRleHQoY29kZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwg
ZnJvbSwgZGVzdGluYXRpb24pOworICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludCA9IHBvaW50ICsg
RmxvYXRTaXplKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpOwogICAgIC8vIFdlIGNvdWxk
bid0IGdlbmVyYXRlIGFueSBnbHlwaHMgZm9yIHRoZSBydW4uIEdpdmUgdXAuCiAgICAgaWYgKGds
eXBoQnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zMTIsMTAgKzMxMywx
NCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1bgogICAgICAgICByZXR1cm47CiAKICAgICB1bnNp
Z25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKLSAgICBpZiAoY29k
ZVBhdGgocnVuLCBmcm9tLCB0bykgIT0gQ29tcGxleCkKLSAgICAgICAgZHJhd0VtcGhhc2lzTWFy
a3NGb3JTaW1wbGVUZXh0KGNvbnRleHQsIHJ1biwgbWFyaywgcG9pbnQsIGZyb20sIGRlc3RpbmF0
aW9uKTsKLSAgICBlbHNlCi0gICAgICAgIGRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQo
Y29udGV4dCwgcnVuLCBtYXJrLCBwb2ludCwgZnJvbSwgZGVzdGluYXRpb24pOworCisgICAgYXV0
byBnbHlwaEJ1ZmZlciA9IGxheW91dFRleHQoY29kZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwg
ZnJvbSwgZGVzdGluYXRpb24sIFNob3VsZFNhdmVPZmZzZXRzOjpObywgRm9yVGV4dEVtcGhhc2lz
T3JOb3Q6OkZvclRleHRFbXBoYXNpcyk7CisKKyAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQgPSBwb2ludCAr
IEZsb2F0U2l6ZShnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKTsKKyAgICBkcmF3RW1waGFz
aXNNYXJrcyhjb250ZXh0LCBnbHlwaEJ1ZmZlciwgbWFyaywgc3RhcnRQb2ludCk7CiB9CiAKIHN0
ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNw
bGF5TGlzdEZvclRleHRSdW4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVu
JiBydW4sIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bywgQ3VzdG9tRm9udE5v
dFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QKQEAgLTMyNyw5ICsz
MzIsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBGb250Q2Fz
Y2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9V
c2UgPSBjb2RlUGF0aChydW4pOwogICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXggJiYg
KGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20gfHwgZGVzdGlu
YXRpb24gIT0gcnVuLmxlbmd0aCgpKSkKICAgICAgICAgY29kZVBhdGhUb1VzZSA9IENvbXBsZXg7
Ci0gICAgCi0gICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgRmxvYXRQb2ludCBzdGFy
dFBvaW50ID0gdG9GbG9hdFBvaW50KGdseXBoQnVmZmVyRm9yVGV4dFJ1bihjb2RlUGF0aFRvVXNl
LCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZlcikpOworCisgICAgYXV0byBnbHlw
aEJ1ZmZlciA9IGxheW91dFRleHQoY29kZVBhdGhUb1VzZSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlv
bik7CisgICAgRmxvYXRQb2ludCBzdGFydFBvaW50ID0gdG9GbG9hdFBvaW50KEZsb2F0U2l6ZShn
bHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSk7CiAgICAgLy8gV2UgY291bGRuJ3QgZ2VuZXJh
dGUgYW55IGdseXBocyBmb3IgdGhlIHJ1bi4gR2l2ZSB1cC4KICAgICBpZiAoZ2x5cGhCdWZmZXIu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEzNjQsMzkgKzEzNjksNDUg
QEAgaW50IEZvbnRDYXNjYWRlOjplbXBoYXNpc01hcmtIZWlnaHQoY29uc3QgQXRvbVN0cmluZyYg
bWFyaykgY29uc3QKICAgICByZXR1cm4gbWFya0ZvbnREYXRhLT5mb250TWV0cmljcygpLmhlaWdo
dCgpOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1w
bGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEds
eXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhh
c2lzKSBjb25zdAorR2x5cGhCdWZmZXIgRm9udENhc2NhZGU6OmxheW91dFNpbXBsZVRleHQoY29u
c3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgU2hvdWxkU2F2ZU9m
ZnNldHMgc2hvdWxkU2F2ZU9mZnNldHMsIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBo
YXNpcykgY29uc3QKIHsKLSAgICBmbG9hdCBpbml0aWFsQWR2YW5jZTsKKyAgICBHbHlwaEJ1ZmZl
ciBnbHlwaEJ1ZmZlcjsKKyAgICBpZiAoc2hvdWxkU2F2ZU9mZnNldHMgPT0gU2hvdWxkU2F2ZU9m
ZnNldHM6OlllcykKKyAgICAgICAgZ2x5cGhCdWZmZXIuc2F2ZU9mZnNldHNJblN0cmluZygpOwog
CiAgICAgV2lkdGhJdGVyYXRvciBpdCh0aGlzLCBydW4sIDAsIGZhbHNlLCBmb3JUZXh0RW1waGFz
aXMpOwogICAgIC8vIEZJWE1FOiBVc2luZyBzZXBhcmF0ZSBnbHlwaCBidWZmZXJzIGZvciB0aGUg
cHJlZml4IGFuZCB0aGUgc3VmZml4IGlzIGluY29ycmVjdCB3aGVuIGtlcm5pbmcgb3IKICAgICAv
LyBsaWdhdHVyZXMgYXJlIGVuYWJsZWQuCiAgICAgR2x5cGhCdWZmZXIgbG9jYWxHbHlwaEJ1ZmZl
cjsKICAgICBpdC5hZHZhbmNlKGZyb20sICZsb2NhbEdseXBoQnVmZmVyKTsKLSAgICBmbG9hdCBi
ZWZvcmVXaWR0aCA9IGl0Lm1fcnVuV2lkdGhTb0ZhcjsKKyAgICBmbG9hdCBiZWZvcmVXaWR0aCA9
IGl0LnJ1bldpZHRoU29GYXIoKTsKICAgICBpdC5hZHZhbmNlKHRvLCAmZ2x5cGhCdWZmZXIpOwog
CiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBnbHlwaEJ1ZmZlcjsKIAotICAgIGZsb2F0IGFmdGVyV2lkdGggPSBpdC5tX3J1
bldpZHRoU29GYXI7CisgICAgZmxvYXQgYWZ0ZXJXaWR0aCA9IGl0LnJ1bldpZHRoU29GYXIoKTsK
IAorICAgIGZsb2F0IGluaXRpYWxBZHZhbmNlOwogICAgIGlmIChydW4ucnRsKCkpIHsKLSAgICAg
ICAgZmxvYXQgZmluYWxSb3VuZGluZ1dpZHRoID0gaXQubV9maW5hbFJvdW5kaW5nV2lkdGg7Cisg
ICAgICAgIGZsb2F0IGZpbmFsUm91bmRpbmdXaWR0aCA9IGl0LmZpbmFsUm91bmRpbmdXaWR0aCgp
OwogICAgICAgICBpdC5hZHZhbmNlKHJ1bi5sZW5ndGgoKSwgJmxvY2FsR2x5cGhCdWZmZXIpOwot
ICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGZpbmFsUm91bmRpbmdXaWR0aCArIGl0Lm1fcnVuV2lk
dGhTb0ZhciAtIGFmdGVyV2lkdGg7CisgICAgICAgIGluaXRpYWxBZHZhbmNlID0gZmluYWxSb3Vu
ZGluZ1dpZHRoICsgaXQucnVuV2lkdGhTb0ZhcigpIC0gYWZ0ZXJXaWR0aDsKICAgICB9IGVsc2UK
ICAgICAgICAgaW5pdGlhbEFkdmFuY2UgPSBiZWZvcmVXaWR0aDsKKyAgICBnbHlwaEJ1ZmZlci5z
ZXRJbml0aWFsQWR2YW5jZShGbG9hdFNpemUoaW5pdGlhbEFkdmFuY2UsIDApKTsKIAogICAgIGlm
IChydW4ucnRsKCkpCiAgICAgICAgIGdseXBoQnVmZmVyLnJldmVyc2UoMCwgZ2x5cGhCdWZmZXIu
c2l6ZSgpKTsKIAotICAgIHJldHVybiBpbml0aWFsQWR2YW5jZTsKKyAgICByZXR1cm4gZ2x5cGhC
dWZmZXI7CiB9CiAKLUZsb2F0U2l6ZSBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNG
b3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVk
IHRvLCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRl
eHRFbXBoYXNpcykgY29uc3QKK0dseXBoQnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRDb21wbGV4
VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBTaG91
bGRTYXZlT2Zmc2V0cyBzaG91bGRTYXZlT2Zmc2V0cywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9y
VGV4dEVtcGhhc2lzKSBjb25zdAogewotICAgIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZTsKKyAg
ICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKKyAgICBpZiAoc2hvdWxkU2F2ZU9mZnNldHMgPT0g
U2hvdWxkU2F2ZU9mZnNldHM6OlllcykKKyAgICAgICAgZ2x5cGhCdWZmZXIuc2F2ZU9mZnNldHNJ
blN0cmluZygpOwogCiAgICAgQ29tcGxleFRleHRDb250cm9sbGVyIGNvbnRyb2xsZXIoKnRoaXMs
IHJ1biwgZmFsc2UsIDAsIGZvclRleHRFbXBoYXNpcyk7CiAgICAgR2x5cGhCdWZmZXIgZHVtbXlH
bHlwaEJ1ZmZlcjsKQEAgLTE0MDQsMzUgKzE0MTUsMjggQEAgRmxvYXRTaXplIEZvbnRDYXNjYWRl
OjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwg
dW4KICAgICBjb250cm9sbGVyLmFkdmFuY2UodG8sICZnbHlwaEJ1ZmZlcik7CiAKICAgICBpZiAo
Z2x5cGhCdWZmZXIuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1
cm4gZ2x5cGhCdWZmZXI7CiAKICAgICBpZiAocnVuLnJ0bCgpKSB7CiAgICAgICAgIC8vIEV4cGxv
aXQgdGhlIGZhY3QgdGhhdCB0aGUgc3VtIG9mIHRoZSBwYWludCBhZHZhbmNlcyBpcyBlcXVhbCB0
bwogICAgICAgICAvLyB0aGUgc3VtIG9mIHRoZSBsYXlvdXQgYWR2YW5jZXMuCi0gICAgICAgIGlu
aXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbEFkdmFuY2UoKTsKKyAgICAgICAgRmxvYXRT
aXplIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbEFkdmFuY2UoKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bW15R2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpCiAg
ICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSB0b0Zsb2F0U2l6ZShkdW1teUdseXBoQnVmZmVy
LmFkdmFuY2VBdChpKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnbHlwaEJ1
ZmZlci5zaXplKCk7ICsraSkKICAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IHRvRmxvYXRT
aXplKGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGRu
J3Qgd2Ugc3VidHJhY3QgdGhlIG90aGVyIGluaXRpYWwgYWR2YW5jZT8KICAgICAgICAgZ2x5cGhC
dWZmZXIucmV2ZXJzZSgwLCBnbHlwaEJ1ZmZlci5zaXplKCkpOworICAgICAgICBnbHlwaEJ1ZmZl
ci5zZXRJbml0aWFsQWR2YW5jZShpbml0aWFsQWR2YW5jZSk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgaW5pdGlhbEFkdmFuY2UgPSB0b0Zsb2F0U2l6ZShkdW1teUdseXBoQnVmZmVyLmluaXRpYWxB
ZHZhbmNlKCkpOworICAgICAgICBGbG9hdFNpemUgaW5pdGlhbEFkdmFuY2UgPSB0b0Zsb2F0U2l6
ZShkdW1teUdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZHVtbXlHbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkKICAgICAgICAgICAg
IGluaXRpYWxBZHZhbmNlICs9IHRvRmxvYXRTaXplKGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0
KGkpKTsKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCB3ZSBhZGQgdGhlIG90aGVyIGluaXRp
YWwgYWR2YW5jZT8KKyAgICAgICAgZ2x5cGhCdWZmZXIuc2V0SW5pdGlhbEFkdmFuY2UoaW5pdGlh
bEFkdmFuY2UpOwogICAgIH0KIAotICAgIHJldHVybiBpbml0aWFsQWR2YW5jZTsKLX0KLQotdm9p
ZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJr
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNv
bnN0Ci17Ci0gICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgZmxvYXQgaW5pdGlhbEFk
dmFuY2UgPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywg
Z2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7Ci0KLSAgICBpZiAoZ2x5cGhCdWZmZXIuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkcmF3RW1waGFzaXNNYXJrcyhjb250ZXh0
LCBnbHlwaEJ1ZmZlciwgbWFyaywgRmxvYXRQb2ludChwb2ludC54KCkgKyBpbml0aWFsQWR2YW5j
ZSwgcG9pbnQueSgpKSk7CisgICAgcmV0dXJuIGdseXBoQnVmZmVyOwogfQogCiBpbmxpbmUgYm9v
bCBzaG91bGREcmF3SWZMb2FkaW5nKGNvbnN0IEZvbnQmIGZvbnQsIEZvbnRDYXNjYWRlOjpDdXN0
b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKQpAQCAtMTUzMSw3
ICsxNTM1LDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0KGNv
bnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGb24KICAgICAgICAgZ2x5cGhPdmVyZmxv
dy0+cmlnaHQgPSBjZWlsZihpdC5sYXN0R2x5cGhPdmVyZmxvdygpKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gaXQubV9ydW5XaWR0aFNvRmFyOworICAgIHJldHVybiBpdC5ydW5XaWR0aFNvRmFyKCk7
CiB9CiAKIGZsb2F0IEZvbnRDYXNjYWRlOjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3Qg
VGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywgR2x5cGhP
dmVyZmxvdyogZ2x5cGhPdmVyZmxvdykgY29uc3QKQEAgLTE1NTEsMTQgKzE1NTUsMTQgQEAgdm9p
ZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclNpbXBsZVRleHQoY29uc3QgVGV4
dFJ1biYgcnVuLCBMYXlvdXRSZWMKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBX
aWR0aEl0ZXJhdG9yIGl0KHRoaXMsIHJ1bik7CiAgICAgaXQuYWR2YW5jZShmcm9tLCAmZ2x5cGhC
dWZmZXIpOwotICAgIGZsb2F0IGJlZm9yZVdpZHRoID0gaXQubV9ydW5XaWR0aFNvRmFyOworICAg
IGZsb2F0IGJlZm9yZVdpZHRoID0gaXQucnVuV2lkdGhTb0ZhcigpOwogICAgIGl0LmFkdmFuY2Uo
dG8sICZnbHlwaEJ1ZmZlcik7Ci0gICAgZmxvYXQgYWZ0ZXJXaWR0aCA9IGl0Lm1fcnVuV2lkdGhT
b0ZhcjsKKyAgICBmbG9hdCBhZnRlcldpZHRoID0gaXQucnVuV2lkdGhTb0ZhcigpOwogICAgIGZs
b2F0IHRvdGFsV2lkdGggPSAtMTsKIAogICAgIGlmIChydW4ucnRsKCkpIHsKICAgICAgICAgaXQu
YWR2YW5jZShydW4ubGVuZ3RoKCksICZnbHlwaEJ1ZmZlcik7Ci0gICAgICAgIHRvdGFsV2lkdGgg
PSBpdC5tX3J1bldpZHRoU29GYXI7CisgICAgICAgIHRvdGFsV2lkdGggPSBpdC5ydW5XaWR0aFNv
RmFyKCk7CiAgICAgICAgIHNlbGVjdGlvblJlY3QubW92ZSh0b3RhbFdpZHRoIC0gYWZ0ZXJXaWR0
aCwgMCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHNlbGVjdGlvblJlY3QubW92ZShiZWZvcmVXaWR0
aCwgMCk7CkBAIC0xNTkwLDcgKzE1OTQsNyBAQCBpbnQgRm9udENhc2NhZGU6Om9mZnNldEZvclBv
c2l0aW9uRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvbwogICAg
IGlmIChydW4ucnRsKCkpIHsKICAgICAgICAgZGVsdGEgLT0gZmxvYXRXaWR0aEZvclNpbXBsZVRl
eHQocnVuKTsKICAgICAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgICAgIG9mZnNldCA9IGl0Lm1f
Y3VycmVudENoYXJhY3RlcjsKKyAgICAgICAgICAgIG9mZnNldCA9IGl0LmN1cnJlbnRDaGFyYWN0
ZXIoKTsKICAgICAgICAgICAgIGZsb2F0IHc7CiAgICAgICAgICAgICBpZiAoIWl0LmFkdmFuY2VP
bmVDaGFyYWN0ZXIodywgbG9jYWxHbHlwaEJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0xNjA1LDcgKzE2MDksNyBAQCBpbnQgRm9udENhc2NhZGU6Om9mZnNldEZvclBvc2l0aW9u
Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvbwogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKICAgICAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgICAgIG9mZnNldCA9
IGl0Lm1fY3VycmVudENoYXJhY3RlcjsKKyAgICAgICAgICAgIG9mZnNldCA9IGl0LmN1cnJlbnRD
aGFyYWN0ZXIoKTsKICAgICAgICAgICAgIGZsb2F0IHc7CiAgICAgICAgICAgICBpZiAoIWl0LmFk
dmFuY2VPbmVDaGFyYWN0ZXIodywgbG9jYWxHbHlwaEJ1ZmZlcikpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC0xNjQ0LDE3ICsxNjQ4LDYgQEAgY29uc3QgRm9udCogRm9udENhc2NhZGU6OmZv
bnRGb3JDb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZShjb25zdCBVQ2hhciogY2hhcmFjdGUKIH0K
ICNlbmRpZgogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhU
ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8pIGNvbnN0Ci17Ci0gICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAg
YXV0byBpbml0aWFsQWR2YW5jZSA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQo
cnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7Ci0KLSAgICBpZiAo
Z2x5cGhCdWZmZXIuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkcmF3RW1waGFz
aXNNYXJrcyhjb250ZXh0LCBnbHlwaEJ1ZmZlciwgbWFyaywgcG9pbnQgKyBpbml0aWFsQWR2YW5j
ZSk7Ci19Ci0KIHN0cnVjdCBHbHlwaEl0ZXJhdGlvblN0YXRlIHsKICAgICBGbG9hdFBvaW50IHN0
YXJ0aW5nUG9pbnQ7CiAgICAgRmxvYXRQb2ludCBjdXJyZW50UG9pbnQ7CkBAIC0xNzg0LDE4ICsx
Nzc3LDEyIEBAIERhc2hBcnJheSBGb250Q2FzY2FkZTo6ZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dp
dGhSZWN0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICAgICBpZiAoaXNMb2FkaW5nQ3VzdG9t
Rm9udHMoKSkKICAgICAgICAgcmV0dXJuIERhc2hBcnJheSgpOwogCi0gICAgR2x5cGhCdWZmZXIg
Z2x5cGhCdWZmZXI7Ci0gICAgZ2x5cGhCdWZmZXIuc2F2ZU9mZnNldHNJblN0cmluZygpOwotICAg
IGZsb2F0IGRlbHRhWDsKLSAgICBpZiAoY29kZVBhdGgocnVuKSAhPSBGb250Q2FzY2FkZTo6Q29t
cGxleCkKLSAgICAgICAgZGVsdGFYID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0
KHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBk
ZWx0YVggPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgMCwgcnVuLmxl
bmd0aCgpLCBnbHlwaEJ1ZmZlcikud2lkdGgoKTsKKyAgICBhdXRvIGdseXBoQnVmZmVyID0gbGF5
b3V0VGV4dChjb2RlUGF0aChydW4pICE9IEZvbnRDYXNjYWRlOjpDb21wbGV4LCBydW4sIDAsIHJ1
bi5sZW5ndGgoKSwgU2hvdWxkU2F2ZU9mZnNldHM6Olllcyk7CiAKICAgICBpZiAoIWdseXBoQnVm
ZmVyLnNpemUoKSkKICAgICAgICAgcmV0dXJuIERhc2hBcnJheSgpOwogCi0gICAgRmxvYXRQb2lu
dCBvcmlnaW4gPSBGbG9hdFBvaW50KHRleHRPcmlnaW4ueCgpICsgZGVsdGFYLCB0ZXh0T3JpZ2lu
LnkoKSk7CisgICAgRmxvYXRQb2ludCBvcmlnaW4gPSB0ZXh0T3JpZ2luICsgRmxvYXRTaXplKGds
eXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpOwogICAgIEdseXBoVG9QYXRoVHJhbnNsYXRvciB0
cmFuc2xhdG9yKHJ1biwgZ2x5cGhCdWZmZXIsIG9yaWdpbik7CiAgICAgRGFzaEFycmF5IHJlc3Vs
dDsKICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgdHJhbnNsYXRvci5jb250YWluc01vcmVQ
YXRocygpOyArK2luZGV4LCB0cmFuc2xhdG9yLmFkdmFuY2UoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggN2Q3YzVkMWYxZTA2NzM0
MjQ5ZjJlZmNlMGVjZWM3NjRlMjQ4NzE5YS4uOTU5ZDhmMzMxOTM5Nzc5MTA2ZjhhNjk2MDUyNjk1
NTMzYzg2NWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5oCkBAIC0yMDMsMTEgKzIwMywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKIHByaXZhdGU6
CiAgICAgZW51bSBGb3JUZXh0RW1waGFzaXNPck5vdCB7IE5vdEZvclRleHRFbXBoYXNpcywgRm9y
VGV4dEVtcGhhc2lzIH07CisgICAgZW51bSBjbGFzcyBTaG91bGRTYXZlT2Zmc2V0cyA6IHVpbnQ4
X3QgeworICAgICAgICBZZXMsCisgICAgICAgIE5vCisgICAgfTsKIAotICAgIEZsb2F0U2l6ZSBn
bHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGgsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImKSBjb25zdDsKLSAgICAvLyBSZXR1cm5zIHRo
ZSBpbml0aWFsIGluLXN0cmVhbSBhZHZhbmNlLgotICAgIGZsb2F0IGdldEdseXBoc0FuZEFkdmFu
Y2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
dG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFz
aXMpIGNvbnN0OwotICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25z
dCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OworICAgIEds
eXBoQnVmZmVyIGxheW91dFRleHQoQ29kZVBhdGgsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bywgU2hvdWxkU2F2ZU9mZnNldHMgPSBTaG91bGRTYXZlT2Zmc2V0czo6
Tm8sIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsKKyAg
ICBHbHlwaEJ1ZmZlciBsYXlvdXRTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bywgU2hvdWxkU2F2ZU9mZnNldHMgPSBTaG91bGRTYXZlT2Zmc2V0czo6
Tm8sIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsKICAg
ICB2b2lkIGRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBHbHlwaEJ1ZmZl
ciYsIEZsb2F0UG9pbnQmLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0OwogICAgIHZv
aWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgR2x5cGhCdWZmZXIm
LCBjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwogICAgIGZsb2F0
IGZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IEZv
bnQqPiogZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7CkBAIC0y
MTksOSArMjIxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBjYW5SZXR1cm5GYWxsYmFj
a0ZvbnRzRm9yQ29tcGxleFRleHQoKTsKICAgICBzdGF0aWMgYm9vbCBjYW5FeHBhbmRBcm91bmRJ
ZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpOwogCi0gICAgLy8gUmV0dXJucyB0aGUgaW5pdGlhbCBp
bi1zdHJlYW0gYWR2YW5jZS4KLSAgICBGbG9hdFNpemUgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JD
b21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEds
eXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNv
bnN0OwotICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxv
YXRQb2ludCYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdDsKKyAgICBHbHlwaEJ1
ZmZlciBsYXlvdXRDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5z
aWduZWQgdG8sIFNob3VsZFNhdmVPZmZzZXRzID0gU2hvdWxkU2F2ZU9mZnNldHM6Ok5vLCBGb3JU
ZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7CiAgICAgZmxvYXQg
ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IEZv
bnQqPiogZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7CiAgICAg
aW50IG9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIGZsb2F0
IHBvc2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdDsKICAgICB2b2lkIGFk
anVzdFNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0UmVj
dCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKaW5kZXggMzZj
OGZiZDcxNGJlMzQxNDkzMmIyZmZkYzE5NGRlNmU2ZDJhNmI4MS4uZTQ1YjY4MWYxMjM3M2MzMDM4
Y2Y4YjZiN2JhMzEzNDQ1YmM1MzRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC01OCw2ICs1OCwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IDogQ0dTaXplKHNpemUpCiAgICAgewogICAgIH0KKyAgICBHbHlwaEJ1ZmZlckFkdmFuY2UoRmxv
YXRTaXplIHNpemUpCisgICAgICAgIDogQ0dTaXplKHNpemUpCisgICAgeworICAgIH0KICAgICBH
bHlwaEJ1ZmZlckFkdmFuY2UoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKICAgICAgICAgOiBD
R1NpemUoQ0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KSkKICAgICB7CkBAIC02Niw2ICs3MCw4IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEds
eXBoQnVmZmVyQWR2YW5jZT4gZGVjb2RlKERlY29kZXImKTsKIAorICAgIG9wZXJhdG9yIEZsb2F0
U2l6ZSgpIHsgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRoaXMtPkNHU2l6ZTo6d2lkdGgp
LCBzdGF0aWNfY2FzdDxmbG9hdD4odGhpcy0+Q0dTaXplOjpoZWlnaHQpIH07IH0KKwogICAgIHZv
aWQgc2V0V2lkdGgoQ0dGbG9hdCB3aWR0aCkgeyB0aGlzLT5DR1NpemU6OndpZHRoID0gd2lkdGg7
IH0KICAgICB2b2lkIHNldEhlaWdodChDR0Zsb2F0IGhlaWdodCkgeyB0aGlzLT5DR1NpemU6Omhl
aWdodCA9IGhlaWdodDsgfQogICAgIENHRmxvYXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiB0aGlz
LT5DR1NpemU6OndpZHRoOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UZXh0UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0
UnVuLmgKaW5kZXggNWYxMDY2YzliYzBmYjJlMmViNjU4NGIyM2UyNDA2ZDAxYWUzNjgyNy4uZWNi
YzVlZWE5YjlkMWUzZTNjNDUxM2FmNTgwNjdlNTdlODJhNWRhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApAQCAtMzksNyArMzksNiBAQCBjbGFzcyBHbHlw
aEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiAKIHN0cnVjdCBHbHlwaERhdGE7Ci1zdHJ1Y3QgV2lkdGhJ
dGVyYXRvcjsKIAogY2xhc3MgVGV4dFJ1biB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3Iu
Y3BwCmluZGV4IGUzMDA3ZGE4OTYyODg4ZjNlYjc0MjkxMDBhYTMzODc0NmI0ZjRhMmEuLmIzYzJm
ZjZhMTM5OTBhNjZmZWU2YWVlOWUwZTU5NmNkZDg3ZDYyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCwgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMg
LSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTM4LDE5ICsz
OCwxNCBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwogV2lkdGhJdGVyYXRvcjo6V2lk
dGhJdGVyYXRvcihjb25zdCBGb250Q2FzY2FkZSogZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBI
YXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywgYm9vbCBhY2NvdW50Rm9yR2x5cGhC
b3VuZHMsIGJvb2wgZm9yVGV4dEVtcGhhc2lzKQogICAgIDogbV9mb250KGZvbnQpCiAgICAgLCBt
X3J1bihydW4pCi0gICAgLCBtX2N1cnJlbnRDaGFyYWN0ZXIoMCkKLSAgICAsIG1fcnVuV2lkdGhT
b0ZhcigwKQotICAgICwgbV9pc0FmdGVyRXhwYW5zaW9uKChydW4uZXhwYW5zaW9uQmVoYXZpb3Io
KSAmIExlYWRpbmdFeHBhbnNpb25NYXNrKSA9PSBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uKQotICAg
ICwgbV9maW5hbFJvdW5kaW5nV2lkdGgoMCkKICAgICAsIG1fZmFsbGJhY2tGb250cyhmYWxsYmFj
a0ZvbnRzKQorICAgICwgbV9leHBhbnNpb24ocnVuLmV4cGFuc2lvbigpKQorICAgICwgbV9pc0Fm
dGVyRXhwYW5zaW9uKChydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIExlYWRpbmdFeHBhbnNpb25N
YXNrKSA9PSBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uKQogICAgICwgbV9hY2NvdW50Rm9yR2x5cGhC
b3VuZHMoYWNjb3VudEZvckdseXBoQm91bmRzKQogICAgICwgbV9lbmFibGVLZXJuaW5nKGZvbnQt
PmVuYWJsZUtlcm5pbmcoKSkKICAgICAsIG1fcmVxdWlyZXNTaGFwaW5nKGZvbnQtPnJlcXVpcmVz
U2hhcGluZygpKQogICAgICwgbV9mb3JUZXh0RW1waGFzaXMoZm9yVGV4dEVtcGhhc2lzKQogewot
ICAgIC8vIElmIHRoZSBwYWRkaW5nIGlzIG5vbi16ZXJvLCBjb3VudCB0aGUgbnVtYmVyIG9mIHNw
YWNlcyBpbiB0aGUgcnVuCi0gICAgLy8gYW5kIGRpdmlkZSB0aGF0IGJ5IHRoZSBwYWRkaW5nIGZv
ciBwZXIgc3BhY2UgYWRkaXRpb24uCi0gICAgbV9leHBhbnNpb24gPSBtX3J1bi5leHBhbnNpb24o
KTsKICAgICBpZiAoIW1fZXhwYW5zaW9uKQogICAgICAgICBtX2V4cGFuc2lvblBlck9wcG9ydHVu
aXR5ID0gMDsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1dpZHRoSXRlcmF0b3IuaAppbmRleCBiMmM1MDlmZTYwMjQxNDQyYzJhM2ZmODNiNGVhZTBm
NGQ0MjM0YWY5Li5jZDBkMmZjODc0ZjU0OWY2YWY5NTJkMjQyNzcxZDliMGQwZmVhMDlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwOCwgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMg
LSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTUyLDE3ICs1
Miw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFRleHRSdW4mIHJ1bigpIGNvbnN0IHsgcmV0dXJu
IG1fcnVuOyB9CiAgICAgZmxvYXQgcnVuV2lkdGhTb0ZhcigpIGNvbnN0IHsgcmV0dXJuIG1fcnVu
V2lkdGhTb0ZhcjsgfQotCi0gICAgY29uc3QgRm9udENhc2NhZGUqIG1fZm9udDsKLQotICAgIGNv
bnN0IFRleHRSdW4mIG1fcnVuOwotCi0gICAgdW5zaWduZWQgbV9jdXJyZW50Q2hhcmFjdGVyOwot
ICAgIGZsb2F0IG1fcnVuV2lkdGhTb0ZhcjsKLSAgICBmbG9hdCBtX2V4cGFuc2lvbjsKLSAgICBm
bG9hdCBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5OwotICAgIGJvb2wgbV9pc0FmdGVyRXhwYW5z
aW9uOwotICAgIGZsb2F0IG1fZmluYWxSb3VuZGluZ1dpZHRoOworICAgIGZsb2F0IGZpbmFsUm91
bmRpbmdXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZmluYWxSb3VuZGluZ1dpZHRoOyB9CisgICAg
dW5zaWduZWQgY3VycmVudENoYXJhY3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudENoYXJh
Y3RlcjsgfQogCiBwcml2YXRlOgogICAgIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIo
VUNoYXIzMiwgYm9vbCBtaXJyb3IpOwpAQCAtNzMsMTUgKzY0LDI0IEBAIHByaXZhdGU6CiAgICAg
VHJhbnNmb3Jtc1R5cGUgc2hvdWxkQXBwbHlGb250VHJhbnNmb3Jtcyhjb25zdCBHbHlwaEJ1ZmZl
ciosIHVuc2lnbmVkIGxhc3RHbHlwaENvdW50LCBVQ2hhcjMyIHByZXZpb3VzQ2hhcmFjdGVyKSBj
b25zdDsKICAgICBmbG9hdCBhcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyKiwgYm9vbCBs
dHIsIHVuc2lnbmVkJiBsYXN0R2x5cGhDb3VudCwgY29uc3QgRm9udCosIFVDaGFyMzIgcHJldmlv
dXNDaGFyYWN0ZXIsIGJvb2wgZm9yY2UsIENoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSYpOwogCisg
ICAgY29uc3QgRm9udENhc2NhZGUqIG1fZm9udDsKKyAgICBjb25zdCBUZXh0UnVuJiBtX3J1bjsK
ICAgICBIYXNoU2V0PGNvbnN0IEZvbnQqPiogbV9mYWxsYmFja0ZvbnRzIHsgbnVsbHB0ciB9Owot
ICAgIGJvb2wgbV9hY2NvdW50Rm9yR2x5cGhCb3VuZHMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9l
bmFibGVLZXJuaW5nIHsgZmFsc2UgfTsKLSAgICBib29sIG1fcmVxdWlyZXNTaGFwaW5nIHsgZmFs
c2UgfTsKLSAgICBib29sIG1fZm9yVGV4dEVtcGhhc2lzIHsgZmFsc2UgfTsKKworICAgIHVuc2ln
bmVkIG1fY3VycmVudENoYXJhY3RlciB7IDAgfTsKKyAgICBmbG9hdCBtX3J1bldpZHRoU29GYXIg
eyAwIH07CisgICAgZmxvYXQgbV9leHBhbnNpb24geyAwIH07CisgICAgZmxvYXQgbV9leHBhbnNp
b25QZXJPcHBvcnR1bml0eSB7IDAgfTsKKyAgICBmbG9hdCBtX2ZpbmFsUm91bmRpbmdXaWR0aCB7
IDAgfTsKICAgICBmbG9hdCBtX21heEdseXBoQm91bmRpbmdCb3hZIHsgc3RkOjpudW1lcmljX2xp
bWl0czxmbG9hdD46Om1pbigpIH07CiAgICAgZmxvYXQgbV9taW5HbHlwaEJvdW5kaW5nQm94WSB7
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSB9OwogICAgIGZsb2F0IG1fZmlyc3RH
bHlwaE92ZXJmbG93IHsgMCB9OwogICAgIGZsb2F0IG1fbGFzdEdseXBoT3ZlcmZsb3cgeyAwIH07
CisgICAgYm9vbCBtX2lzQWZ0ZXJFeHBhbnNpb24geyBmYWxzZSB9OworICAgIGJvb2wgbV9hY2Nv
dW50Rm9yR2x5cGhCb3VuZHMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9lbmFibGVLZXJuaW5nIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fcmVxdWlyZXNTaGFwaW5nIHsgZmFsc2UgfTsKKyAgICBib29s
IG1fZm9yVGV4dEVtcGhhc2lzIHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAKaW5kZXggNzhlMDZiNTM3YzMxMzlm
NjBmMDNiMjZjOGU3NjkzNzU3MTZhZjVlZC4uMDY0YjRkYTEyNzJlZmE4MzRlYjIzNDVmNzljYmQ0
MmMyZjg4NDUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TWV0cmljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TWV0cmljcy5jcHAKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNsdWRlICJTVkdUZXh0TWV0cmljcy5o
IgogCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgotI2luY2x1ZGUgIldpZHRoSXRl
cmF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405672</attachid>
            <date>2020-07-30 23:03:56 -0700</date>
            <delta_ts>2020-07-31 16:59:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215013-20200730230355.patch</filename>
            <type>text/plain</type>
            <size>24691</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMwM2ExZGYyNzcxYWZj
NGZmYTJlYTFmZTIyNTU3YmY0OGE0NDE2Ni4uZGI2MDM0YTJjZjUyMmFmYjBlZTAyYWU1YWY0ODY0
MTA4NThjMWQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIwLTA3LTMwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAg
dGV4dCBsYXlvdXQgY29kZSBhIGJpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1MDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc2OS4KKworICAgICAgICBTZWUgZmlsZS1zcGVj
aWZpYyBDaGFuZ2VMb2cgZW50cmllcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgICAgICBO
byB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDogUmVtb3ZlIHVubmVjZXNzYXJ5IGRlY2xhcmF0aW9u
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpsYXlvdXRUZXh0IGNvbnN0KTogUmVuYW1lIGdseXBoQnVm
ZmVyRm9yVGV4dFJ1bigpIHRvIGxheW91dFRleHQoKS4KKyAgICAgICAgQWxzbywgbWFrZSBpdCBy
ZXR1cm4gYSBHbHlwaEJ1ZmZlciBpbnN0ZWFkIG9mIHRha2luZyBhIEdseXBoQnVmZmVyIGFzIGFu
IG91dCBwYXJhbS4KKyAgICAgICAgSXRzIHByZXZpb3VzIHJldHVybiwgdGhlIGluaXRpYWwgYWR2
YW5jZSwgaXMgbm93IHJldHVybmVkIGluIEdseXBoQnVmZmVyOjppbml0aWFsQWR2YW5jZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3VGV4dCBjb25zdCk6IFVwZGF0ZSB0byBu
ZXcgc2lnbmF0dXJlIG9mIGxheW91dFRleHQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNj
YWRlOjpkcmF3RW1waGFzaXNNYXJrcyBjb25zdCk6IElubGluZSBkcmF3RW1waGFzaXNNYXJrc0Zv
clNpbXBsZVRleHQoKQorICAgICAgICBhbmQgZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4
dCgpLCBzaW5jZSB0aGV5J3JlIG5lYXJseSBpZGVudGljYWwuIFVwZGF0ZSB0byB0aGUgbmV3Cisg
ICAgICAgIHNpZ25hdHVyZSBvZiBsYXlvdXRUZXh0KCkuCisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KTogVXBkYXRlIHRvIHRoZSBuZXcg
c2lnbmF0dXJlIG9mCisgICAgICAgIGxheW91dFRleHQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpsYXlvdXRTaW1wbGVUZXh0IGNvbnN0KTogTWFrZSB0aGlzIHJldHVybiBhIG5l
dyBHbHlwaEJ1ZmZlciwgaW5zdGVhZAorICAgICAgICBvZiB0YWtpbmcgb25lIGFzIGFuIG91dCBw
YXJhbS4gQWxzbywgdXNlIGFjY2Vzc29ycyBvZiBXaWR0aEl0ZXJhdG9yIGluc3RlYWQgb2YgcmVh
Y2hpbmcKKyAgICAgICAgaW50byBpdHMgZ3V0cy4gVGhlIHByZXZpb3VzIHJldHVybiB2YWx1ZSBp
cyBub3cgcmV0dXJuZWQgaW4gR2x5cGhCdWZmZXI6OmluaXRpYWxBZHZhbmNlLgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dENvbXBsZXhUZXh0IGNvbnN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZmxvYXRXaWR0aEZvclNpbXBsZVRleHQgY29u
c3QpOiBVc2UgYWNjZXNzb3JzIG9mIFdpZHRoSXRlcmF0b3IKKyAgICAgICAgaW5zdGVhZCBvZiBy
ZWFjaGluZyBpbnRvIGl0cyBndXRzLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmFk
anVzdFNlbGVjdGlvblJlY3RGb3JTaW1wbGVUZXh0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FzY2FkZTo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0IGNvbnN0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZGFzaGVzRm9ySW50ZXJz
ZWN0aW9uc1dpdGhSZWN0IGNvbnN0KTogU2FtZSBhcworICAgICAgICBGb250Q2FzY2FkZTo6ZHJh
d0VtcGhhc2lzTWFya3MoKSBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpn
bHlwaEJ1ZmZlckZvclRleHRSdW4gY29uc3QpOiBSZW5hbWVkIHRvIGxheW91dFRleHQoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBs
ZVRleHQgY29uc3QpOiBSZW5hbWVkIHRvCisgICAgICAgIGxheW91dFNpbXBsZVRleHQoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBs
ZXhUZXh0IGNvbnN0KTogUmVuYW1lZCB0bworICAgICAgICBsYXlvdXRDb21wbGV4VGV4dCgpLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzRm9yU2ltcGxl
VGV4dCBjb25zdCk6IElubGluZWQgaW50bworICAgICAgICBkcmF3RW1waGFzaXNNYXJrcygpLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxl
eFRleHQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFuY2U6OkdseXBoQnVmZmVyQWR2YW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFuY2U6Om9wZXJhdG9yIEZsb2F0U2l6ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oOiBSZW1vdmUgdW5uZWNlc3Nh
cnkgZGVjbGFyYXRpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjpXaWR0aEl0ZXJhdG9yKTog
VXBkYXRlIGZvciBjaGFuZ2VzIHRvIFdpZHRoSXRlcmF0b3IuaAorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaDogUmVhcnJhbmdlIHRoZSBjbGFzcyBtZW1iZXJzIHRv
IHNvcnQgdGhlbSBieSBzaXplLAorICAgICAgICB0byBnZXQgYmV0dGVyIHBhY2tpbmcuIEFsc28s
IG1ha2UgYWxsIG1lbWJlciB2YXJpYWJsZXMgcHJpdmF0ZSwgYW5kIGluaXRpYWxpemUgdGhlbQor
ICAgICAgICBhbGwgd2l0aCB7IH0gc3ludGF4LgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVy
YXRvcjo6ZmluYWxSb3VuZGluZ1dpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRo
SXRlcmF0b3I6OmN1cnJlbnRDaGFyYWN0ZXIgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3MuY3BwOiBSZW1vdmUgdW5uZWNlc3NhcnkgaW5jbHVkZS4KKwogMjAy
MC0wNy0zMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgSXQgd291
bGQgYmUgbmljZSBpZiB0aGUgcHJlZGljYXRlIHRha2luZyBmdW5jdGlvbnMgaW4gUGFyc2luZ1V0
aWxpdGllcy5oIGRpZG4ndCByZXF1aXJlIHNwZWNpZnlpbmcgdGhlIGNoYXJhY3RlciB0eXBlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggZDQwZmQzYWY5MDYzZGY0
ZmFhNmRmY2NmOWI1MGU4YWFhMDkwNTgzNC4uZWFmOWRhYzQyMGFhZmUwMmJjYWY3MDdiN2VkY2I0
ZGRlMzNkOTRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAt
NTksNyArNTksNiBAQCBjbGFzcyBHbHlwaFBhZ2U7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBj
bGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgR2x5cGhEYXRhOwotc3RydWN0IFdpZHRoSXRlcmF0
b3I7CiAKIGVudW0gRm9udFZhcmlhbnQgeyBBdXRvVmFyaWFudCwgTm9ybWFsVmFyaWFudCwgU21h
bGxDYXBzVmFyaWFudCwgRW1waGFzaXNNYXJrVmFyaWFudCwgQnJva2VuSWRlb2dyYXBoVmFyaWFu
dCB9OwogZW51bSBQaXRjaCB7IFVua25vd25QaXRjaCwgRml4ZWRQaXRjaCwgVmFyaWFibGVQaXRj
aCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwCmluZGV4IDY5MWEzZTFhNWFmOGMzMzYxZGY1ZWIwZjgyZDk0YjJlMTE4MmVkMDkuLmI1Nzdh
YzFmNzE5Y2Q1OWMwYmY3MzkwNDVkNzk2MjI4YjRhZjQ2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTI4NSwxOCArMjg1LDE5
IEBAIHZvaWQgRm9udENhc2NhZGU6OnVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRT
ZWxlY3RvcikgY29uc3QKICAgICBtX3JlcXVpcmVzU2hhcGluZyA9IGNvbXB1dGVSZXF1aXJlc1No
YXBpbmcoKTsKIH0KIAotRmxvYXRTaXplIEZvbnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRleHRS
dW4oQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKSBjb25zdAorR2x5cGhC
dWZmZXIgRm9udENhc2NhZGU6OmxheW91dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29u
c3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgU2hvdWxkU2F2ZU9m
ZnNldHMgc2hvdWxkU2F2ZU9mZnNldHMsIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBo
YXNpcykgY29uc3QKIHsKICAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBDb21wbGV4KQotICAgICAg
ICByZXR1cm4geyBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0
bywgZ2x5cGhCdWZmZXIpLCAwIH07Ci0gICAgcmV0dXJuIGdldEdseXBoc0FuZEFkdmFuY2VzRm9y
Q29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpOworICAgICAgICByZXR1cm4g
bGF5b3V0U2ltcGxlVGV4dChydW4sIGZyb20sIHRvLCBzaG91bGRTYXZlT2Zmc2V0cywgZm9yVGV4
dEVtcGhhc2lzKTsKKworICAgIHJldHVybiBsYXlvdXRDb21wbGV4VGV4dChydW4sIGZyb20sIHRv
LCBzaG91bGRTYXZlT2Zmc2V0cywgZm9yVGV4dEVtcGhhc2lzKTsKIH0KIAogZmxvYXQgRm9udENh
c2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYg
cnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5z
aWduZWQ+IHRvLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0
aW9uKSBjb25zdAogewogICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4u
bGVuZ3RoKCkpOwotICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIEZsb2F0UG9pbnQg
c3RhcnRQb2ludCA9IHBvaW50ICsgZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRoKHJ1biwg
ZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZlcik7CisgICAgYXV0
byBnbHlwaEJ1ZmZlciA9IGxheW91dFRleHQoY29kZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwg
ZnJvbSwgZGVzdGluYXRpb24pOworICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludCA9IHBvaW50ICsg
RmxvYXRTaXplKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpOwogICAgIC8vIFdlIGNvdWxk
bid0IGdlbmVyYXRlIGFueSBnbHlwaHMgZm9yIHRoZSBydW4uIEdpdmUgdXAuCiAgICAgaWYgKGds
eXBoQnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zMTIsMTAgKzMxMywx
NCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1bgogICAgICAgICByZXR1cm47CiAKICAgICB1bnNp
Z25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKLSAgICBpZiAoY29k
ZVBhdGgocnVuLCBmcm9tLCB0bykgIT0gQ29tcGxleCkKLSAgICAgICAgZHJhd0VtcGhhc2lzTWFy
a3NGb3JTaW1wbGVUZXh0KGNvbnRleHQsIHJ1biwgbWFyaywgcG9pbnQsIGZyb20sIGRlc3RpbmF0
aW9uKTsKLSAgICBlbHNlCi0gICAgICAgIGRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQo
Y29udGV4dCwgcnVuLCBtYXJrLCBwb2ludCwgZnJvbSwgZGVzdGluYXRpb24pOworCisgICAgYXV0
byBnbHlwaEJ1ZmZlciA9IGxheW91dFRleHQoY29kZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwg
ZnJvbSwgZGVzdGluYXRpb24sIFNob3VsZFNhdmVPZmZzZXRzOjpObywgRm9yVGV4dEVtcGhhc2lz
T3JOb3Q6OkZvclRleHRFbXBoYXNpcyk7CisKKyAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQgPSBwb2ludCAr
IEZsb2F0U2l6ZShnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKTsKKyAgICBkcmF3RW1waGFz
aXNNYXJrcyhjb250ZXh0LCBnbHlwaEJ1ZmZlciwgbWFyaywgc3RhcnRQb2ludCk7CiB9CiAKIHN0
ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNw
bGF5TGlzdEZvclRleHRSdW4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVu
JiBydW4sIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bywgQ3VzdG9tRm9udE5v
dFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QKQEAgLTMyNyw5ICsz
MzIsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBGb250Q2Fz
Y2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9V
c2UgPSBjb2RlUGF0aChydW4pOwogICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXggJiYg
KGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20gfHwgZGVzdGlu
YXRpb24gIT0gcnVuLmxlbmd0aCgpKSkKICAgICAgICAgY29kZVBhdGhUb1VzZSA9IENvbXBsZXg7
Ci0gICAgCi0gICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgRmxvYXRQb2ludCBzdGFy
dFBvaW50ID0gdG9GbG9hdFBvaW50KGdseXBoQnVmZmVyRm9yVGV4dFJ1bihjb2RlUGF0aFRvVXNl
LCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZlcikpOworCisgICAgYXV0byBnbHlw
aEJ1ZmZlciA9IGxheW91dFRleHQoY29kZVBhdGhUb1VzZSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlv
bik7CisgICAgRmxvYXRQb2ludCBzdGFydFBvaW50ID0gdG9GbG9hdFBvaW50KEZsb2F0U2l6ZShn
bHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSk7CiAgICAgLy8gV2UgY291bGRuJ3QgZ2VuZXJh
dGUgYW55IGdseXBocyBmb3IgdGhlIHJ1bi4gR2l2ZSB1cC4KICAgICBpZiAoZ2x5cGhCdWZmZXIu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEzNjQsMzkgKzEzNjksNDUg
QEAgaW50IEZvbnRDYXNjYWRlOjplbXBoYXNpc01hcmtIZWlnaHQoY29uc3QgQXRvbVN0cmluZyYg
bWFyaykgY29uc3QKICAgICByZXR1cm4gbWFya0ZvbnREYXRhLT5mb250TWV0cmljcygpLmhlaWdo
dCgpOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1w
bGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEds
eXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhh
c2lzKSBjb25zdAorR2x5cGhCdWZmZXIgRm9udENhc2NhZGU6OmxheW91dFNpbXBsZVRleHQoY29u
c3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgU2hvdWxkU2F2ZU9m
ZnNldHMgc2hvdWxkU2F2ZU9mZnNldHMsIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBo
YXNpcykgY29uc3QKIHsKLSAgICBmbG9hdCBpbml0aWFsQWR2YW5jZTsKKyAgICBHbHlwaEJ1ZmZl
ciBnbHlwaEJ1ZmZlcjsKKyAgICBpZiAoc2hvdWxkU2F2ZU9mZnNldHMgPT0gU2hvdWxkU2F2ZU9m
ZnNldHM6OlllcykKKyAgICAgICAgZ2x5cGhCdWZmZXIuc2F2ZU9mZnNldHNJblN0cmluZygpOwog
CiAgICAgV2lkdGhJdGVyYXRvciBpdCh0aGlzLCBydW4sIDAsIGZhbHNlLCBmb3JUZXh0RW1waGFz
aXMpOwogICAgIC8vIEZJWE1FOiBVc2luZyBzZXBhcmF0ZSBnbHlwaCBidWZmZXJzIGZvciB0aGUg
cHJlZml4IGFuZCB0aGUgc3VmZml4IGlzIGluY29ycmVjdCB3aGVuIGtlcm5pbmcgb3IKICAgICAv
LyBsaWdhdHVyZXMgYXJlIGVuYWJsZWQuCiAgICAgR2x5cGhCdWZmZXIgbG9jYWxHbHlwaEJ1ZmZl
cjsKICAgICBpdC5hZHZhbmNlKGZyb20sICZsb2NhbEdseXBoQnVmZmVyKTsKLSAgICBmbG9hdCBi
ZWZvcmVXaWR0aCA9IGl0Lm1fcnVuV2lkdGhTb0ZhcjsKKyAgICBmbG9hdCBiZWZvcmVXaWR0aCA9
IGl0LnJ1bldpZHRoU29GYXIoKTsKICAgICBpdC5hZHZhbmNlKHRvLCAmZ2x5cGhCdWZmZXIpOwog
CiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBnbHlwaEJ1ZmZlcjsKIAotICAgIGZsb2F0IGFmdGVyV2lkdGggPSBpdC5tX3J1
bldpZHRoU29GYXI7CisgICAgZmxvYXQgYWZ0ZXJXaWR0aCA9IGl0LnJ1bldpZHRoU29GYXIoKTsK
IAorICAgIGZsb2F0IGluaXRpYWxBZHZhbmNlOwogICAgIGlmIChydW4ucnRsKCkpIHsKLSAgICAg
ICAgZmxvYXQgZmluYWxSb3VuZGluZ1dpZHRoID0gaXQubV9maW5hbFJvdW5kaW5nV2lkdGg7Cisg
ICAgICAgIGZsb2F0IGZpbmFsUm91bmRpbmdXaWR0aCA9IGl0LmZpbmFsUm91bmRpbmdXaWR0aCgp
OwogICAgICAgICBpdC5hZHZhbmNlKHJ1bi5sZW5ndGgoKSwgJmxvY2FsR2x5cGhCdWZmZXIpOwot
ICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGZpbmFsUm91bmRpbmdXaWR0aCArIGl0Lm1fcnVuV2lk
dGhTb0ZhciAtIGFmdGVyV2lkdGg7CisgICAgICAgIGluaXRpYWxBZHZhbmNlID0gZmluYWxSb3Vu
ZGluZ1dpZHRoICsgaXQucnVuV2lkdGhTb0ZhcigpIC0gYWZ0ZXJXaWR0aDsKICAgICB9IGVsc2UK
ICAgICAgICAgaW5pdGlhbEFkdmFuY2UgPSBiZWZvcmVXaWR0aDsKKyAgICBnbHlwaEJ1ZmZlci5z
ZXRJbml0aWFsQWR2YW5jZShGbG9hdFNpemUoaW5pdGlhbEFkdmFuY2UsIDApKTsKIAogICAgIGlm
IChydW4ucnRsKCkpCiAgICAgICAgIGdseXBoQnVmZmVyLnJldmVyc2UoMCwgZ2x5cGhCdWZmZXIu
c2l6ZSgpKTsKIAotICAgIHJldHVybiBpbml0aWFsQWR2YW5jZTsKKyAgICByZXR1cm4gZ2x5cGhC
dWZmZXI7CiB9CiAKLUZsb2F0U2l6ZSBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNG
b3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVk
IHRvLCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRl
eHRFbXBoYXNpcykgY29uc3QKK0dseXBoQnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRDb21wbGV4
VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBTaG91
bGRTYXZlT2Zmc2V0cyBzaG91bGRTYXZlT2Zmc2V0cywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9y
VGV4dEVtcGhhc2lzKSBjb25zdAogewotICAgIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZTsKKyAg
ICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKKyAgICBpZiAoc2hvdWxkU2F2ZU9mZnNldHMgPT0g
U2hvdWxkU2F2ZU9mZnNldHM6OlllcykKKyAgICAgICAgZ2x5cGhCdWZmZXIuc2F2ZU9mZnNldHNJ
blN0cmluZygpOwogCiAgICAgQ29tcGxleFRleHRDb250cm9sbGVyIGNvbnRyb2xsZXIoKnRoaXMs
IHJ1biwgZmFsc2UsIDAsIGZvclRleHRFbXBoYXNpcyk7CiAgICAgR2x5cGhCdWZmZXIgZHVtbXlH
bHlwaEJ1ZmZlcjsKQEAgLTE0MDQsMzUgKzE0MTUsMjggQEAgRmxvYXRTaXplIEZvbnRDYXNjYWRl
OjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwg
dW4KICAgICBjb250cm9sbGVyLmFkdmFuY2UodG8sICZnbHlwaEJ1ZmZlcik7CiAKICAgICBpZiAo
Z2x5cGhCdWZmZXIuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1
cm4gZ2x5cGhCdWZmZXI7CiAKICAgICBpZiAocnVuLnJ0bCgpKSB7CiAgICAgICAgIC8vIEV4cGxv
aXQgdGhlIGZhY3QgdGhhdCB0aGUgc3VtIG9mIHRoZSBwYWludCBhZHZhbmNlcyBpcyBlcXVhbCB0
bwogICAgICAgICAvLyB0aGUgc3VtIG9mIHRoZSBsYXlvdXQgYWR2YW5jZXMuCi0gICAgICAgIGlu
aXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbEFkdmFuY2UoKTsKKyAgICAgICAgRmxvYXRT
aXplIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbEFkdmFuY2UoKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bW15R2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpCiAg
ICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSB0b0Zsb2F0U2l6ZShkdW1teUdseXBoQnVmZmVy
LmFkdmFuY2VBdChpKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnbHlwaEJ1
ZmZlci5zaXplKCk7ICsraSkKICAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IHRvRmxvYXRT
aXplKGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGRu
J3Qgd2Ugc3VidHJhY3QgdGhlIG90aGVyIGluaXRpYWwgYWR2YW5jZT8KICAgICAgICAgZ2x5cGhC
dWZmZXIucmV2ZXJzZSgwLCBnbHlwaEJ1ZmZlci5zaXplKCkpOworICAgICAgICBnbHlwaEJ1ZmZl
ci5zZXRJbml0aWFsQWR2YW5jZShpbml0aWFsQWR2YW5jZSk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgaW5pdGlhbEFkdmFuY2UgPSB0b0Zsb2F0U2l6ZShkdW1teUdseXBoQnVmZmVyLmluaXRpYWxB
ZHZhbmNlKCkpOworICAgICAgICBGbG9hdFNpemUgaW5pdGlhbEFkdmFuY2UgPSB0b0Zsb2F0U2l6
ZShkdW1teUdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZHVtbXlHbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkKICAgICAgICAgICAg
IGluaXRpYWxBZHZhbmNlICs9IHRvRmxvYXRTaXplKGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0
KGkpKTsKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCB3ZSBhZGQgdGhlIG90aGVyIGluaXRp
YWwgYWR2YW5jZT8KKyAgICAgICAgZ2x5cGhCdWZmZXIuc2V0SW5pdGlhbEFkdmFuY2UoaW5pdGlh
bEFkdmFuY2UpOwogICAgIH0KIAotICAgIHJldHVybiBpbml0aWFsQWR2YW5jZTsKLX0KLQotdm9p
ZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJr
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNv
bnN0Ci17Ci0gICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgZmxvYXQgaW5pdGlhbEFk
dmFuY2UgPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywg
Z2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7Ci0KLSAgICBpZiAoZ2x5cGhCdWZmZXIuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkcmF3RW1waGFzaXNNYXJrcyhjb250ZXh0
LCBnbHlwaEJ1ZmZlciwgbWFyaywgRmxvYXRQb2ludChwb2ludC54KCkgKyBpbml0aWFsQWR2YW5j
ZSwgcG9pbnQueSgpKSk7CisgICAgcmV0dXJuIGdseXBoQnVmZmVyOwogfQogCiBpbmxpbmUgYm9v
bCBzaG91bGREcmF3SWZMb2FkaW5nKGNvbnN0IEZvbnQmIGZvbnQsIEZvbnRDYXNjYWRlOjpDdXN0
b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKQpAQCAtMTUzMSw3
ICsxNTM1LDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0KGNv
bnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGb24KICAgICAgICAgZ2x5cGhPdmVyZmxv
dy0+cmlnaHQgPSBjZWlsZihpdC5sYXN0R2x5cGhPdmVyZmxvdygpKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gaXQubV9ydW5XaWR0aFNvRmFyOworICAgIHJldHVybiBpdC5ydW5XaWR0aFNvRmFyKCk7
CiB9CiAKIGZsb2F0IEZvbnRDYXNjYWRlOjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3Qg
VGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywgR2x5cGhP
dmVyZmxvdyogZ2x5cGhPdmVyZmxvdykgY29uc3QKQEAgLTE1NTEsMTQgKzE1NTUsMTQgQEAgdm9p
ZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclNpbXBsZVRleHQoY29uc3QgVGV4
dFJ1biYgcnVuLCBMYXlvdXRSZWMKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBX
aWR0aEl0ZXJhdG9yIGl0KHRoaXMsIHJ1bik7CiAgICAgaXQuYWR2YW5jZShmcm9tLCAmZ2x5cGhC
dWZmZXIpOwotICAgIGZsb2F0IGJlZm9yZVdpZHRoID0gaXQubV9ydW5XaWR0aFNvRmFyOworICAg
IGZsb2F0IGJlZm9yZVdpZHRoID0gaXQucnVuV2lkdGhTb0ZhcigpOwogICAgIGl0LmFkdmFuY2Uo
dG8sICZnbHlwaEJ1ZmZlcik7Ci0gICAgZmxvYXQgYWZ0ZXJXaWR0aCA9IGl0Lm1fcnVuV2lkdGhT
b0ZhcjsKKyAgICBmbG9hdCBhZnRlcldpZHRoID0gaXQucnVuV2lkdGhTb0ZhcigpOwogICAgIGZs
b2F0IHRvdGFsV2lkdGggPSAtMTsKIAogICAgIGlmIChydW4ucnRsKCkpIHsKICAgICAgICAgaXQu
YWR2YW5jZShydW4ubGVuZ3RoKCksICZnbHlwaEJ1ZmZlcik7Ci0gICAgICAgIHRvdGFsV2lkdGgg
PSBpdC5tX3J1bldpZHRoU29GYXI7CisgICAgICAgIHRvdGFsV2lkdGggPSBpdC5ydW5XaWR0aFNv
RmFyKCk7CiAgICAgICAgIHNlbGVjdGlvblJlY3QubW92ZSh0b3RhbFdpZHRoIC0gYWZ0ZXJXaWR0
aCwgMCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHNlbGVjdGlvblJlY3QubW92ZShiZWZvcmVXaWR0
aCwgMCk7CkBAIC0xNTkwLDcgKzE1OTQsNyBAQCBpbnQgRm9udENhc2NhZGU6Om9mZnNldEZvclBv
c2l0aW9uRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvbwogICAg
IGlmIChydW4ucnRsKCkpIHsKICAgICAgICAgZGVsdGEgLT0gZmxvYXRXaWR0aEZvclNpbXBsZVRl
eHQocnVuKTsKICAgICAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgICAgIG9mZnNldCA9IGl0Lm1f
Y3VycmVudENoYXJhY3RlcjsKKyAgICAgICAgICAgIG9mZnNldCA9IGl0LmN1cnJlbnRDaGFyYWN0
ZXIoKTsKICAgICAgICAgICAgIGZsb2F0IHc7CiAgICAgICAgICAgICBpZiAoIWl0LmFkdmFuY2VP
bmVDaGFyYWN0ZXIodywgbG9jYWxHbHlwaEJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0xNjA1LDcgKzE2MDksNyBAQCBpbnQgRm9udENhc2NhZGU6Om9mZnNldEZvclBvc2l0aW9u
Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvbwogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKICAgICAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgICAgIG9mZnNldCA9
IGl0Lm1fY3VycmVudENoYXJhY3RlcjsKKyAgICAgICAgICAgIG9mZnNldCA9IGl0LmN1cnJlbnRD
aGFyYWN0ZXIoKTsKICAgICAgICAgICAgIGZsb2F0IHc7CiAgICAgICAgICAgICBpZiAoIWl0LmFk
dmFuY2VPbmVDaGFyYWN0ZXIodywgbG9jYWxHbHlwaEJ1ZmZlcikpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC0xNjQ0LDE3ICsxNjQ4LDYgQEAgY29uc3QgRm9udCogRm9udENhc2NhZGU6OmZv
bnRGb3JDb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZShjb25zdCBVQ2hhciogY2hhcmFjdGUKIH0K
ICNlbmRpZgogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhU
ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8pIGNvbnN0Ci17Ci0gICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAg
YXV0byBpbml0aWFsQWR2YW5jZSA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQo
cnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7Ci0KLSAgICBpZiAo
Z2x5cGhCdWZmZXIuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkcmF3RW1waGFz
aXNNYXJrcyhjb250ZXh0LCBnbHlwaEJ1ZmZlciwgbWFyaywgcG9pbnQgKyBpbml0aWFsQWR2YW5j
ZSk7Ci19Ci0KIHN0cnVjdCBHbHlwaEl0ZXJhdGlvblN0YXRlIHsKICAgICBGbG9hdFBvaW50IHN0
YXJ0aW5nUG9pbnQ7CiAgICAgRmxvYXRQb2ludCBjdXJyZW50UG9pbnQ7CkBAIC0xNzg0LDE4ICsx
Nzc3LDEyIEBAIERhc2hBcnJheSBGb250Q2FzY2FkZTo6ZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dp
dGhSZWN0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICAgICBpZiAoaXNMb2FkaW5nQ3VzdG9t
Rm9udHMoKSkKICAgICAgICAgcmV0dXJuIERhc2hBcnJheSgpOwogCi0gICAgR2x5cGhCdWZmZXIg
Z2x5cGhCdWZmZXI7Ci0gICAgZ2x5cGhCdWZmZXIuc2F2ZU9mZnNldHNJblN0cmluZygpOwotICAg
IGZsb2F0IGRlbHRhWDsKLSAgICBpZiAoY29kZVBhdGgocnVuKSAhPSBGb250Q2FzY2FkZTo6Q29t
cGxleCkKLSAgICAgICAgZGVsdGFYID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0
KHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBk
ZWx0YVggPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgMCwgcnVuLmxl
bmd0aCgpLCBnbHlwaEJ1ZmZlcikud2lkdGgoKTsKKyAgICBhdXRvIGdseXBoQnVmZmVyID0gbGF5
b3V0VGV4dChjb2RlUGF0aChydW4pLCBydW4sIDAsIHJ1bi5sZW5ndGgoKSwgU2hvdWxkU2F2ZU9m
ZnNldHM6Olllcyk7CiAKICAgICBpZiAoIWdseXBoQnVmZmVyLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIERhc2hBcnJheSgpOwogCi0gICAgRmxvYXRQb2ludCBvcmlnaW4gPSBGbG9hdFBvaW50KHRl
eHRPcmlnaW4ueCgpICsgZGVsdGFYLCB0ZXh0T3JpZ2luLnkoKSk7CisgICAgRmxvYXRQb2ludCBv
cmlnaW4gPSB0ZXh0T3JpZ2luICsgRmxvYXRTaXplKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNl
KCkpOwogICAgIEdseXBoVG9QYXRoVHJhbnNsYXRvciB0cmFuc2xhdG9yKHJ1biwgZ2x5cGhCdWZm
ZXIsIG9yaWdpbik7CiAgICAgRGFzaEFycmF5IHJlc3VsdDsKICAgICBmb3IgKHVuc2lnbmVkIGlu
ZGV4ID0gMDsgdHJhbnNsYXRvci5jb250YWluc01vcmVQYXRocygpOyArK2luZGV4LCB0cmFuc2xh
dG9yLmFkdmFuY2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmgKaW5kZXggN2Q3YzVkMWYxZTA2NzM0MjQ5ZjJlZmNlMGVjZWM3NjRlMjQ4NzE5
YS4uOTU5ZDhmMzMxOTM5Nzc5MTA2ZjhhNjk2MDUyNjk1NTMzYzg2NWM1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yMDMsMTEgKzIw
MywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKIHByaXZhdGU6CiAgICAgZW51bSBGb3JUZXh0RW1waGFz
aXNPck5vdCB7IE5vdEZvclRleHRFbXBoYXNpcywgRm9yVGV4dEVtcGhhc2lzIH07CisgICAgZW51
bSBjbGFzcyBTaG91bGRTYXZlT2Zmc2V0cyA6IHVpbnQ4X3QgeworICAgICAgICBZZXMsCisgICAg
ICAgIE5vCisgICAgfTsKIAotICAgIEZsb2F0U2l6ZSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29k
ZVBhdGgsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhC
dWZmZXImKSBjb25zdDsKLSAgICAvLyBSZXR1cm5zIHRoZSBpbml0aWFsIGluLXN0cmVhbSBhZHZh
bmNlLgotICAgIGZsb2F0IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBU
ZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4
dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwotICAgIHZvaWQgZHJh
d0VtcGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRS
dW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OworICAgIEdseXBoQnVmZmVyIGxheW91dFRleHQoQ29k
ZVBhdGgsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgU2hvdWxk
U2F2ZU9mZnNldHMgPSBTaG91bGRTYXZlT2Zmc2V0czo6Tm8sIEZvclRleHRFbXBoYXNpc09yTm90
ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsKKyAgICBHbHlwaEJ1ZmZlciBsYXlvdXRTaW1w
bGVUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgU2hvdWxk
U2F2ZU9mZnNldHMgPSBTaG91bGRTYXZlT2Zmc2V0czo6Tm8sIEZvclRleHRFbXBoYXNpc09yTm90
ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsKICAgICB2b2lkIGRyYXdHbHlwaEJ1ZmZlcihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIEZsb2F0UG9pbnQmLCBDdXN0b21G
b250Tm90UmVhZHlBY3Rpb24pIGNvbnN0OwogICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgR2x5cGhCdWZmZXImLCBjb25zdCBBdG9tU3RyaW5nJiwgY29u
c3QgRmxvYXRQb2ludCYpIGNvbnN0OwogICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0
KGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDAs
IEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7CkBAIC0yMTksOSArMjIxLDcgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgYm9vbCBjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQoKTsK
ICAgICBzdGF0aWMgYm9vbCBjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgp
OwogCi0gICAgLy8gUmV0dXJucyB0aGUgaW5pdGlhbCBpbi1zdHJlYW0gYWR2YW5jZS4KLSAgICBG
bG9hdFNpemUgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhh
c2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwotICAgIHZvaWQgZHJhd0VtcGhh
c2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwg
Y29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIHRvKSBjb25zdDsKKyAgICBHbHlwaEJ1ZmZlciBsYXlvdXRDb21wbGV4VGV4dChj
b25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIFNob3VsZFNhdmVPZmZz
ZXRzID0gU2hvdWxkU2F2ZU9mZnNldHM6Ok5vLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZv
clRleHRFbXBoYXNpcykgY29uc3Q7CiAgICAgZmxvYXQgZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0
KGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDAs
IEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7CiAgICAgaW50IG9mZnNldEZvclBvc2l0aW9uRm9y
Q29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIGZsb2F0IHBvc2l0aW9uLCBib29sIGluY2x1ZGVQ
YXJ0aWFsR2x5cGhzKSBjb25zdDsKICAgICB2b2lkIGFkanVzdFNlbGVjdGlvblJlY3RGb3JDb21w
bGV4VGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKaW5kZXggMzZjOGZiZDcxNGJlMzQxNDkzMmIyZmZkYzE5
NGRlNmU2ZDJhNmI4MS4uZTQ1YjY4MWYxMjM3M2MzMDM4Y2Y4YjZiN2JhMzEzNDQ1YmM1MzRjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBA
IC01OCw2ICs1OCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIDogQ0dTaXplKHNpemUpCiAgICAgewog
ICAgIH0KKyAgICBHbHlwaEJ1ZmZlckFkdmFuY2UoRmxvYXRTaXplIHNpemUpCisgICAgICAgIDog
Q0dTaXplKHNpemUpCisgICAgeworICAgIH0KICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UoZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCkKICAgICAgICAgOiBDR1NpemUoQ0dTaXplTWFrZSh3aWR0aCwg
aGVpZ2h0KSkKICAgICB7CkBAIC02Niw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4gZGVjb2Rl
KERlY29kZXImKTsKIAorICAgIG9wZXJhdG9yIEZsb2F0U2l6ZSgpIHsgcmV0dXJuIHsgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHRoaXMtPkNHU2l6ZTo6d2lkdGgpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGhp
cy0+Q0dTaXplOjpoZWlnaHQpIH07IH0KKwogICAgIHZvaWQgc2V0V2lkdGgoQ0dGbG9hdCB3aWR0
aCkgeyB0aGlzLT5DR1NpemU6OndpZHRoID0gd2lkdGg7IH0KICAgICB2b2lkIHNldEhlaWdodChD
R0Zsb2F0IGhlaWdodCkgeyB0aGlzLT5DR1NpemU6OmhlaWdodCA9IGhlaWdodDsgfQogICAgIENH
RmxvYXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiB0aGlzLT5DR1NpemU6OndpZHRoOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKaW5kZXggNWYxMDY2YzliYzBm
YjJlMmViNjU4NGIyM2UyNDA2ZDAxYWUzNjgyNy4uZWNiYzVlZWE5YjlkMWUzZTNjNDUxM2FmNTgw
NjdlNTdlODJhNWRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGV4dFJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRS
dW4uaApAQCAtMzksNyArMzksNiBAQCBjbGFzcyBHbHlwaEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiAK
IHN0cnVjdCBHbHlwaERhdGE7Ci1zdHJ1Y3QgV2lkdGhJdGVyYXRvcjsKIAogY2xhc3MgVGV4dFJ1
biB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCmluZGV4IGUzMDA3ZGE4OTYyODg4
ZjNlYjc0MjkxMDBhYTMzODc0NmI0ZjRhMmEuLmIzYzJmZjZhMTM5OTBhNjZmZWU2YWVlOWUwZTU5
NmNkZDg3ZDYyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dpZHRoSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dpZHRoSXRlcmF0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgLSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlcgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTM4LDE5ICszOCwxNCBAQCB1c2luZyBuYW1lc3BhY2Ug
V1RGOjpVbmljb2RlOwogV2lkdGhJdGVyYXRvcjo6V2lkdGhJdGVyYXRvcihjb25zdCBGb250Q2Fz
Y2FkZSogZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFs
bGJhY2tGb250cywgYm9vbCBhY2NvdW50Rm9yR2x5cGhCb3VuZHMsIGJvb2wgZm9yVGV4dEVtcGhh
c2lzKQogICAgIDogbV9mb250KGZvbnQpCiAgICAgLCBtX3J1bihydW4pCi0gICAgLCBtX2N1cnJl
bnRDaGFyYWN0ZXIoMCkKLSAgICAsIG1fcnVuV2lkdGhTb0ZhcigwKQotICAgICwgbV9pc0FmdGVy
RXhwYW5zaW9uKChydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIExlYWRpbmdFeHBhbnNpb25NYXNr
KSA9PSBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uKQotICAgICwgbV9maW5hbFJvdW5kaW5nV2lkdGgo
MCkKICAgICAsIG1fZmFsbGJhY2tGb250cyhmYWxsYmFja0ZvbnRzKQorICAgICwgbV9leHBhbnNp
b24ocnVuLmV4cGFuc2lvbigpKQorICAgICwgbV9pc0FmdGVyRXhwYW5zaW9uKChydW4uZXhwYW5z
aW9uQmVoYXZpb3IoKSAmIExlYWRpbmdFeHBhbnNpb25NYXNrKSA9PSBGb3JiaWRMZWFkaW5nRXhw
YW5zaW9uKQogICAgICwgbV9hY2NvdW50Rm9yR2x5cGhCb3VuZHMoYWNjb3VudEZvckdseXBoQm91
bmRzKQogICAgICwgbV9lbmFibGVLZXJuaW5nKGZvbnQtPmVuYWJsZUtlcm5pbmcoKSkKICAgICAs
IG1fcmVxdWlyZXNTaGFwaW5nKGZvbnQtPnJlcXVpcmVzU2hhcGluZygpKQogICAgICwgbV9mb3JU
ZXh0RW1waGFzaXMoZm9yVGV4dEVtcGhhc2lzKQogewotICAgIC8vIElmIHRoZSBwYWRkaW5nIGlz
IG5vbi16ZXJvLCBjb3VudCB0aGUgbnVtYmVyIG9mIHNwYWNlcyBpbiB0aGUgcnVuCi0gICAgLy8g
YW5kIGRpdmlkZSB0aGF0IGJ5IHRoZSBwYWRkaW5nIGZvciBwZXIgc3BhY2UgYWRkaXRpb24uCi0g
ICAgbV9leHBhbnNpb24gPSBtX3J1bi5leHBhbnNpb24oKTsKICAgICBpZiAoIW1fZXhwYW5zaW9u
KQogICAgICAgICBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5ID0gMDsKICAgICBlbHNlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaAppbmRl
eCBiMmM1MDlmZTYwMjQxNDQyYzJhM2ZmODNiNGVhZTBmNGQ0MjM0YWY5Li5jZDBkMmZjODc0ZjU0
OWY2YWY5NTJkMjQyNzcxZDliMGQwZmVhMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgLSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlcgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTUyLDE3ICs1Miw4IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFRleHRSdW4mIHJ1bigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuOyB9CiAgICAgZmxvYXQgcnVu
V2lkdGhTb0ZhcigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuV2lkdGhTb0ZhcjsgfQotCi0gICAgY29u
c3QgRm9udENhc2NhZGUqIG1fZm9udDsKLQotICAgIGNvbnN0IFRleHRSdW4mIG1fcnVuOwotCi0g
ICAgdW5zaWduZWQgbV9jdXJyZW50Q2hhcmFjdGVyOwotICAgIGZsb2F0IG1fcnVuV2lkdGhTb0Zh
cjsKLSAgICBmbG9hdCBtX2V4cGFuc2lvbjsKLSAgICBmbG9hdCBtX2V4cGFuc2lvblBlck9wcG9y
dHVuaXR5OwotICAgIGJvb2wgbV9pc0FmdGVyRXhwYW5zaW9uOwotICAgIGZsb2F0IG1fZmluYWxS
b3VuZGluZ1dpZHRoOworICAgIGZsb2F0IGZpbmFsUm91bmRpbmdXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fZmluYWxSb3VuZGluZ1dpZHRoOyB9CisgICAgdW5zaWduZWQgY3VycmVudENoYXJhY3Rl
cigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudENoYXJhY3RlcjsgfQogCiBwcml2YXRlOgogICAg
IEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiwgYm9vbCBtaXJyb3IpOwpA
QCAtNzMsMTUgKzY0LDI0IEBAIHByaXZhdGU6CiAgICAgVHJhbnNmb3Jtc1R5cGUgc2hvdWxkQXBw
bHlGb250VHJhbnNmb3Jtcyhjb25zdCBHbHlwaEJ1ZmZlciosIHVuc2lnbmVkIGxhc3RHbHlwaENv
dW50LCBVQ2hhcjMyIHByZXZpb3VzQ2hhcmFjdGVyKSBjb25zdDsKICAgICBmbG9hdCBhcHBseUZv
bnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyKiwgYm9vbCBsdHIsIHVuc2lnbmVkJiBsYXN0R2x5cGhD
b3VudCwgY29uc3QgRm9udCosIFVDaGFyMzIgcHJldmlvdXNDaGFyYWN0ZXIsIGJvb2wgZm9yY2Us
IENoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSYpOwogCisgICAgY29uc3QgRm9udENhc2NhZGUqIG1f
Zm9udDsKKyAgICBjb25zdCBUZXh0UnVuJiBtX3J1bjsKICAgICBIYXNoU2V0PGNvbnN0IEZvbnQq
PiogbV9mYWxsYmFja0ZvbnRzIHsgbnVsbHB0ciB9OwotICAgIGJvb2wgbV9hY2NvdW50Rm9yR2x5
cGhCb3VuZHMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9lbmFibGVLZXJuaW5nIHsgZmFsc2UgfTsK
LSAgICBib29sIG1fcmVxdWlyZXNTaGFwaW5nIHsgZmFsc2UgfTsKLSAgICBib29sIG1fZm9yVGV4
dEVtcGhhc2lzIHsgZmFsc2UgfTsKKworICAgIHVuc2lnbmVkIG1fY3VycmVudENoYXJhY3RlciB7
IDAgfTsKKyAgICBmbG9hdCBtX3J1bldpZHRoU29GYXIgeyAwIH07CisgICAgZmxvYXQgbV9leHBh
bnNpb24geyAwIH07CisgICAgZmxvYXQgbV9leHBhbnNpb25QZXJPcHBvcnR1bml0eSB7IDAgfTsK
KyAgICBmbG9hdCBtX2ZpbmFsUm91bmRpbmdXaWR0aCB7IDAgfTsKICAgICBmbG9hdCBtX21heEds
eXBoQm91bmRpbmdCb3hZIHsgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1pbigpIH07CiAg
ICAgZmxvYXQgbV9taW5HbHlwaEJvdW5kaW5nQm94WSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjptYXgoKSB9OwogICAgIGZsb2F0IG1fZmlyc3RHbHlwaE92ZXJmbG93IHsgMCB9OwogICAg
IGZsb2F0IG1fbGFzdEdseXBoT3ZlcmZsb3cgeyAwIH07CisgICAgYm9vbCBtX2lzQWZ0ZXJFeHBh
bnNpb24geyBmYWxzZSB9OworICAgIGJvb2wgbV9hY2NvdW50Rm9yR2x5cGhCb3VuZHMgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9lbmFibGVLZXJuaW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1fcmVx
dWlyZXNTaGFwaW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZm9yVGV4dEVtcGhhc2lzIHsgZmFs
c2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHVGV4dE1ldHJpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TWV0cmljcy5jcHAKaW5kZXggNzhlMDZiNTM3YzMxMzlmNjBmMDNiMjZjOGU3NjkzNzU3MTZhZjVl
ZC4uMDY0YjRkYTEyNzJlZmE4MzRlYjIzNDVmNzljYmQ0MmMyZjg4NDUzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAKQEAgLTIxLDcgKzIx
LDYgQEAKICNpbmNsdWRlICJTVkdUZXh0TWV0cmljcy5oIgogCiAjaW5jbHVkZSAiUmVuZGVyU1ZH
SW5saW5lVGV4dC5oIgotI2luY2x1ZGUgIldpZHRoSXRlcmF0b3IuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCg==
</data>
<flag name="review"
          id="421064"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>