<?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>181386</bug_id>
          
          <creation_ts>2018-01-08 05:05:33 -0800</creation_ts>
          <short_desc>[Cairo] Use isolated fill and stroke source containers</short_desc>
          <delta_ts>2018-01-08 07:01:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1386680</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-01-08 05:05:33 -0800</bug_when>
    <thetext>[Cairo] Use isolated fill and stroke source containers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386689</commentid>
    <comment_count>1</comment_count>
      <attachid>330692</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-01-08 05:24:15 -0800</bug_when>
    <thetext>Created attachment 330692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386692</commentid>
    <comment_count>2</comment_count>
      <attachid>330693</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-01-08 05:25:05 -0800</bug_when>
    <thetext>Created attachment 330693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386695</commentid>
    <comment_count>3</comment_count>
      <attachid>330693</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-08 05:33:27 -0800</bug_when>
    <thetext>Comment on attachment 330693
Patch

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

&gt; Source/WebCore/platform/graphics/cairo/CairoOperations.cpp:486
&gt; +    if (state.strokePattern) {

Don&apos;t use { in this case

&gt; Source/WebCore/platform/graphics/cairo/CairoOperations.h:89
&gt; +        bool repeatX;
&gt; +        bool repeatY;

Should we initialize this for the default constructor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386717</commentid>
    <comment_count>4</comment_count>
      <attachid>330702</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-01-08 06:58:10 -0800</bug_when>
    <thetext>Created attachment 330702
Patch for landing

Addresses all the review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386718</commentid>
    <comment_count>5</comment_count>
      <attachid>330702</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-01-08 07:00:41 -0800</bug_when>
    <thetext>Comment on attachment 330702
Patch for landing

Clearing flags on attachment: 330702

Committed r226511: &lt;https://trac.webkit.org/changeset/226511&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386719</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-01-08 07:00:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386720</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-08 07:01:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/36348799&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330692</attachid>
            <date>2018-01-08 05:24:15 -0800</date>
            <delta_ts>2018-01-08 05:25:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181386-20180108142413.patch</filename>
            <type>text/plain</type>
            <size>28062</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGUyMzg1ZDliNDU4MmVj
NTZlZTIzMTVkN2Q0MjQ0OGY4NWY2NDFlYy4uMmNmYTczYmM2NmU5M2YwZDQwMWZhNWE0NTcxYWFj
YWVlZGE1M2JjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE4LTAxLTA4ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIFVzZSBp
c29sYXRlZCBmaWxsIGFuZCBzdHJva2Ugc291cmNlIGNvbnRhaW5lcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTM4NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdlbmVyYXRlIGZpbGwgYW5kIHN0cm9r
ZSBzb3VyY2Ugb2JqZWN0cyB1cG9uIGludm9jYXRpb24gb2YgdmFyaW91cyBDYWlybworICAgICAg
ICBvcGVyYXRpb25zLCBpbml0aWFsaXppbmcgbmVjZXNzYXJ5IGRhdGEgZnJvbSB0aGUgR3JhcGhp
Y3NDb250ZXh0U3RhdGUKKyAgICAgICAgb2JqZWN0LgorCisgICAgICAgIENhaXJvOjpGaWxsU291
cmNlIGFuZCBDYWlybzo6U3Ryb2tlU291cmNlIHN0cnVjdHMgYXJlIGludHJvZHVjZWQsIGJvdGgK
KyAgICAgICAgYmVpbmcgZGVmYXVsdC1jb25zdHJ1Y3RpYmxlIGFzIHdlbGwgYXMgcHJvdmlkaW5n
IGEgY29uc3RydWN0b3IgdGhhdAorICAgICAgICBhY2NlcHRzIGEgR3JhcGhpY3NDb250ZXh0U3Rh
dGUgb2JqZWN0IGZyb20gd2hpY2ggdGhlIGFwcHJvcHJpYXRlCisgICAgICAgIHJlc291cmNlcyBh
cmUgY3JlYXRlZC4KKworICAgICAgICBUaGUgRmlsbFNvdXJjZSBhbmQgU3Ryb2tlU291cmNlIG9i
amVjdHMgYXJlIHRoZW4gcGFzc2VkIHRvCisgICAgICAgIFBsYXRmb3JtQ29udGV4dENhaXJvJ3Mg
cHJlcGFyZUZvckZpbGxpbmcoKSBhbmQgcHJlcGFyZUZvclN0cm9raW5nKCkKKyAgICAgICAgbWV0
aG9kcy4gSGVyZSB0aGUgaGVscGVyIHByZXBhcmVDYWlyb0NvbnRleHRTb3VyY2UoKSBmdW5jdGlv
biBpcyBub3cKKyAgICAgICAgaW52b2tlZCB3aXRoIGNhaXJvX3BhdHRlcm5fdCBvYmplY3RzIGFz
IHBhdHRlcm4gb3IgZ3JhZGllbnQgc291cmNlcywgb3IKKyAgICAgICAgdGhlIHNvdXJjZSBjb2xv
ciBpZiBuZWl0aGVyIGNhaXJvX3BhdHRlcm5fdCBvYmplY3QgaXMgc3BlY2lmaWVkLgorCisgICAg
ICAgIFRoZSBGaWxsU291cmNlIGFuZCBTdHJva2VTb3VyY2UgY29uc3RydWN0b3JzIG1pbWljIHRo
ZSBwcmV2aW91cyBiZWhhdmlvcgorICAgICAgICBvZiBwcmVwYXJlQ2Fpcm9Db250ZXh0U291cmNl
KCkuIEluIGNhc2UgdGhlIHNvdXJjZSBpcyBhIFBhdHRlcm4gb2JqZWN0LAorICAgICAgICBhIGNh
aXJvX3BhdHRlcm5fdCBvYmplY3QgaXMgY3JlYXRlZCBmcm9tIHRoYXQuIEluIGNhc2Ugb2YgRmls
bFNvdXJjZSwKKyAgICAgICAgd2UgYWxzbyByZXRyaWV2ZSBwYXR0ZXJuIHNpemUsIHRyYW5zZm9y
bSBhbmQgcmVwZXRpdGlvbiBpbmZvcm1hdGlvbi4gSW4KKyAgICAgICAgY2FzZSB0aGUgc291cmNl
IG9zIGEgR3JhZGllbnQgb2JqZWN0LCB3ZSBjcmVhdGUgYSAnYmFzZScgY2Fpcm9fcGF0dGVybl90
CisgICAgICAgIG9iamVjdCBmb3IgYSBjb21wbGV0ZWx5IG9wYXF1ZSBhbHBoYSBjaGFubmVsLiBB
ZGRpdGlvbmFsbHksIGlmIHRoZSBhbHBoYQorICAgICAgICB2YWx1ZSBvbiB0aGUgc3RhdGUgaXMg
bm90IDEsIHdlIGNyZWF0ZSBhbiBhbHBoYS1hZGp1c3RlZCBjYWlyb19wYXR0ZXJuX3QKKyAgICAg
ICAgdGhhdCBpcyBwb3RlbnRpYWxseSB1c2VkIGZvciBhbnkgZmlsbGluZyBvciBzdHJva2luZyBv
cGVyYXRpb24gdGhhdCBoYXMKKyAgICAgICAgdG8gcHJlc2VydmUgdHJhbnNwYXJlbmN5LiBJZiBu
ZWl0aGVyIFBhdHRlcm4gb3IgR3JhZGllbnQgb2JqZWN0cyBhcmUgc2V0CisgICAgICAgIG9uIHRo
ZSBHcmFwaGljc0NvbnRleHRTdGF0ZSwgd2UgZGVmYXVsdCB0byB0aGUgY3VycmVudCBmaWxsIG9y
IHN0cm9rZQorICAgICAgICBjb2xvci4KKworICAgICAgICBPdmVyYWxsLCB0aGVyZSdzIG5vIGNo
YW5nZSBpbiBiZWhhdmlvciwgdGhpcyBpcyBzaW1wbHkgYSByZWZhY3RvcmluZworICAgICAgICB0
aGF0IGVuYWJsZXMgdXMgdG8gY29uc3RydWN0IENhaXJvIG9iamVjdHMgZm9yIGZpbGxpbmcgYW5k
IHN0cm9raW5nCisgICAgICAgIHNvdXJjZXMgYXQgdGhlIHRpbWUgb2YgQ2Fpcm8gb3BlcmF0aW9u
IGRpc3BhdGNoLCBpbnN0ZWFkIG9mIHB1bGxpbmcgZG93bgorICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZSBkZWVwZXIgaW50byB0aGUgQ2Fpcm8tc3BlY2lmaWMgY29kZS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgLS0gbm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2Fpcm86OmRyYXdQYXRoU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpm
aWxsQ3VycmVudENhaXJvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6RmlsbFNvdXJj
ZTo6RmlsbFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U3Ryb2tlU291cmNlOjpT
dHJva2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmZpbGxSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhaXJvOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWlybzo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OnN0cm9r
ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OnN0cm9rZVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0ds
eXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cHJlcGFyZUNhaXJvQ29udGV4dFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUNvbnRleHRDYWlybzo6cHJlcGFyZUZvckZpbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1Db250ZXh0Q2Fpcm86OnByZXBhcmVGb3JTdHJva2luZyk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6Y2xpcEZvclBhdHRlcm5GaWxsaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oOgorCiAyMDE4
LTAxLTA3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZHVj
ZSB0aGUgcHJlY2lzaW9uIG9mICJoaWdoIiByZXNvbHV0aW9uIHRpbWUgdG8gMW1zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVy
YXRpb25zLmNwcAppbmRleCAxMzEzMDA5M2Y0ZDRjZGU3NTk0NTFhZGRmMjVmMzE0ZjRiODFiYjgy
Li5hZDI3YjQ5NGQyYzcwNjJiNzgwMjlhZTM2OGUwYWZmMWI3MzJjNzMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0
aW9ucy5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgZW51bSBQYXRoRHJhd2luZ1N0eWxlIHsKICAgICBG
aWxsQW5kU3Ryb2tlID0gRmlsbCArIFN0cm9rZQogfTsKIAotc3RhdGljIGlubGluZSB2b2lkIGRy
YXdQYXRoU2hhZG93KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBjb250ZXh0U3RhdGUsIEdyYXBoaWNzQ29udGV4dCYgdGFy
Z2V0Q29udGV4dCwgUGF0aERyYXdpbmdTdHlsZSBkcmF3aW5nU3R5bGUpCitzdGF0aWMgaW5saW5l
IHZvaWQgZHJhd1BhdGhTaGFkb3coUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJv
a2VTb3VyY2UsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCwgUGF0aERyYXdpbmdTdHls
ZSBkcmF3aW5nU3R5bGUpCiB7CiAgICAgU2hhZG93Qmx1ciYgc2hhZG93ID0gcGxhdGZvcm1Db250
ZXh0LnNoYWRvd0JsdXIoKTsKICAgICBpZiAoc2hhZG93LnR5cGUoKSA9PSBTaGFkb3dCbHVyOjpO
b1NoYWRvdykKQEAgLTEwNiwxNCArMTA2LDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0
aFNoYWRvdyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBHCiAg
ICAgaWYgKGRyYXdpbmdTdHlsZSAmIEZpbGwpIHsKICAgICAgICAgY2Fpcm9fc2F2ZShjYWlyb1No
YWRvd0NvbnRleHQpOwogICAgICAgICBjYWlyb19hcHBlbmRfcGF0aChjYWlyb1NoYWRvd0NvbnRl
eHQsIHBhdGguZ2V0KCkpOwotICAgICAgICBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dFN0YXRlLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6
Tm9BZGp1c3RtZW50KTsKKyAgICAgICAgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PnByZXBhcmVGb3JGaWxsaW5nKGZpbGxTb3VyY2UsIFBsYXRmb3JtQ29udGV4dENhaXJvOjpOb0Fk
anVzdG1lbnQpOwogICAgICAgICBjYWlyb19maWxsKGNhaXJvU2hhZG93Q29udGV4dCk7CiAgICAg
ICAgIGNhaXJvX3Jlc3RvcmUoY2Fpcm9TaGFkb3dDb250ZXh0KTsKICAgICB9CiAKICAgICBpZiAo
ZHJhd2luZ1N0eWxlICYgU3Ryb2tlKSB7CiAgICAgICAgIGNhaXJvX2FwcGVuZF9wYXRoKGNhaXJv
U2hhZG93Q29udGV4dCwgcGF0aC5nZXQoKSk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yU3Ryb2tpbmcoY29udGV4dFN0YXRlLCBQbGF0Zm9ybUNv
bnRleHRDYWlybzo6RG9Ob3RQcmVzZXJ2ZUFscGhhKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JTdHJva2luZyhzdHJva2VTb3VyY2UsIFBsYXRm
b3JtQ29udGV4dENhaXJvOjpEb05vdFByZXNlcnZlQWxwaGEpOwogICAgICAgICBjYWlyb19zdHJv
a2UoY2Fpcm9TaGFkb3dDb250ZXh0KTsKICAgICB9CiAKQEAgLTEyNiwxMiArMTI2LDEyIEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxh
dGZvcm1Db250ZXh0LCBjb25zdCBHCiAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY2Fpcm9Db250ZXh0
LCBwYXRoLmdldCgpKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGZpbGxDdXJyZW50Q2Fpcm9Q
YXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBjb250ZXh0U3RhdGUpCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsbEN1cnJl
bnRDYWlyb1BhdGgoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3Qg
RmlsbFNvdXJjZSYgZmlsbFNvdXJjZSkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29u
dGV4dC5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogCi0gICAgcGxhdGZvcm1Db250ZXh0LnBy
ZXBhcmVGb3JGaWxsaW5nKGNvbnRleHRTdGF0ZSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OkFkanVz
dFBhdHRlcm5Gb3JHbG9iYWxBbHBoYSk7CisgICAgcGxhdGZvcm1Db250ZXh0LnByZXBhcmVGb3JG
aWxsaW5nKGZpbGxTb3VyY2UsIFBsYXRmb3JtQ29udGV4dENhaXJvOjpBZGp1c3RQYXR0ZXJuRm9y
R2xvYmFsQWxwaGEpOwogICAgIGNhaXJvX2ZpbGwoY3IpOwogCiAgICAgY2Fpcm9fcmVzdG9yZShj
cik7CkBAIC00NjEsNiArNDYxLDM4IEBAIGJvb2wgaXNBY2NlbGVyYXRlZENvbnRleHQoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKIAogfSAvLyBuYW1lc3BhY2UgU3RhdGUK
IAorRmlsbFNvdXJjZTo6RmlsbFNvdXJjZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUpCit7CisgICAgaWYgKHN0YXRlLmZpbGxQYXR0ZXJuKSB7CisgICAgICAgIHBhdHRlcm4ub2Jq
ZWN0ID0gYWRvcHRSZWYoc3RhdGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihB
ZmZpbmVUcmFuc2Zvcm0oKSkpOworCisgICAgICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0YXRl
LmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKKyAgICAgICAgcGF0dGVybi5zaXplID0gRmxvYXRT
aXplKHBhdHRlcm5JbWFnZS53aWR0aCgpLCBwYXR0ZXJuSW1hZ2UuaGVpZ2h0KCkpOworICAgICAg
ICBwYXR0ZXJuLnRyYW5zZm9ybSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5wYXR0ZXJuU3BhY2VUcmFu
c2Zvcm0oKTsKKyAgICAgICAgcGF0dGVybi5yZXBlYXRYID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJl
cGVhdFgoKTsKKyAgICAgICAgcGF0dGVybi5yZXBlYXRZID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJl
cGVhdFkoKTsKKyAgICB9IGVsc2UgaWYgKHN0YXRlLmZpbGxHcmFkaWVudCkgeworICAgICAgICBn
cmFkaWVudC5iYXNlID0gYWRvcHRSZWYoc3RhdGUuZmlsbEdyYWRpZW50LT5jcmVhdGVQbGF0Zm9y
bUdyYWRpZW50KDEpKTsKKyAgICAgICAgaWYgKHN0YXRlLmFscGhhICE9IDEpCisgICAgICAgICAg
ICBncmFkaWVudC5hbHBoYUFkanVzdGVkID0gYWRvcHRSZWYoc3RhdGUuZmlsbEdyYWRpZW50LT5j
cmVhdGVQbGF0Zm9ybUdyYWRpZW50KHN0YXRlLmFscGhhKSk7CisgICAgfSBlbHNlCisgICAgICAg
IGNvbG9yID0gc3RhdGUuZmlsbENvbG9yOworCisgICAgZmlsbFJ1bGUgPSBzdGF0ZS5maWxsUnVs
ZTsKK30KKworU3Ryb2tlU291cmNlOjpTdHJva2VTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlKQoreworICAgIGlmIChzdGF0ZS5zdHJva2VQYXR0ZXJuKSB7CisgICAgICAg
IHBhdHRlcm4gPSBhZG9wdFJlZihzdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBh
dHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICB9IGVsc2UgaWYgKHN0YXRlLnN0cm9rZUdy
YWRpZW50KSB7CisgICAgICAgIGdyYWRpZW50LmJhc2UgPSBhZG9wdFJlZihzdGF0ZS5zdHJva2VH
cmFkaWVudC0+Y3JlYXRlUGxhdGZvcm1HcmFkaWVudCgxKSk7CisgICAgICAgIGlmIChzdGF0ZS5h
bHBoYSAhPSAxKQorICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IGFkb3B0UmVm
KHN0YXRlLnN0cm9rZUdyYWRpZW50LT5jcmVhdGVQbGF0Zm9ybUdyYWRpZW50KHN0YXRlLmFscGhh
KSk7CisgICAgfSBlbHNlCisgICAgICAgIGNvbG9yID0gc3RhdGUuc3Ryb2tlQ29sb3I7Cit9CisK
IHZvaWQgc2V0TGluZUNhcChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBM
aW5lQ2FwIGxpbmVDYXApCiB7CiAgICAgY2Fpcm9fbGluZV9jYXBfdCBjYWlyb0NhcDsKQEAgLTUw
OCwxMyArNTQwLDEzIEBAIHZvaWQgc2V0TWl0ZXJMaW1pdChQbGF0Zm9ybUNvbnRleHRDYWlybyYg
cGxhdGZvcm1Db250ZXh0LCBmbG9hdCBtaXRlckxpbWl0KQogICAgIGNhaXJvX3NldF9taXRlcl9s
aW1pdChwbGF0Zm9ybUNvbnRleHQuY3IoKSwgbWl0ZXJMaW1pdCk7CiB9CiAKLXZvaWQgZmlsbFJl
Y3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGV4dFN0YXRlLCBHcmFwaGlj
c0NvbnRleHQmIHRhcmdldENvbnRleHQpCit2b2lkIGZpbGxSZWN0KFBsYXRmb3JtQ29udGV4dENh
aXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmlsbFNv
dXJjZSYgZmlsbFNvdXJjZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewogICAg
IGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAKICAgICBjYWlyb19yZWN0YW5n
bGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsK
LSAgICBkcmF3UGF0aFNoYWRvdyhwbGF0Zm9ybUNvbnRleHQsIGNvbnRleHRTdGF0ZSwgdGFyZ2V0
Q29udGV4dCwgRmlsbCk7Ci0gICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgocGxhdGZvcm1Db250ZXh0
LCBjb250ZXh0U3RhdGUpOworICAgIGRyYXdQYXRoU2hhZG93KHBsYXRmb3JtQ29udGV4dCwgZmls
bFNvdXJjZSwgeyB9LCB0YXJnZXRDb250ZXh0LCBGaWxsKTsKKyAgICBmaWxsQ3VycmVudENhaXJv
UGF0aChwbGF0Zm9ybUNvbnRleHQsIGZpbGxTb3VyY2UpOwogfQogCiB2b2lkIGZpbGxSZWN0KFBs
YXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBib29sIGhhc1NoYWRvdywgR3JhcGhpY3NDb250ZXh0JiB0
YXJnZXRDb250ZXh0KQpAQCAtNTUxLDcgKzU4Myw3IEBAIHZvaWQgZmlsbFJvdW5kZWRSZWN0KFBs
YXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJl
CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhv
bGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBjb250ZXh0U3RhdGUsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0
Q29udGV4dCkKK3ZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJv
dW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBj
b250ZXh0U3RhdGUsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIEdyYXBoaWNzQ29udGV4
dCYgdGFyZ2V0Q29udGV4dCkKIHsKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgbGV2ZXJhZ2Ug
dGhlIHNwZWNpZmllZCBjb2xvci4KIApAQCAtNTY5LDQwICs2MDEsNDAgQEAgdm9pZCBmaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBj
b25zdCBGbG9hdFIKIAogICAgIGNhaXJvX3NhdmUoY3IpOwogICAgIHNldFBhdGhPbkNhaXJvQ29u
dGV4dChwbGF0Zm9ybUNvbnRleHQuY3IoKSwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgp
KTsKLSAgICBmaWxsQ3VycmVudENhaXJvUGF0aChwbGF0Zm9ybUNvbnRleHQsIGNvbnRleHRTdGF0
ZSk7CisgICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgocGxhdGZvcm1Db250ZXh0LCBmaWxsU291cmNl
KTsKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBmaWxsUGF0aChQbGF0Zm9ybUNv
bnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBQYXRoJiBwYXRoLCBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgY29udGV4dFN0YXRlLCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENv
bnRleHQpCit2b2lkIGZpbGxQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIEdyYXBo
aWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3Jt
Q29udGV4dC5jcigpOwogCiAgICAgc2V0UGF0aE9uQ2Fpcm9Db250ZXh0KGNyLCBwYXRoLnBsYXRm
b3JtUGF0aCgpLT5jb250ZXh0KCkpOwotICAgIGRyYXdQYXRoU2hhZG93KHBsYXRmb3JtQ29udGV4
dCwgY29udGV4dFN0YXRlLCB0YXJnZXRDb250ZXh0LCBGaWxsKTsKLSAgICBmaWxsQ3VycmVudENh
aXJvUGF0aChwbGF0Zm9ybUNvbnRleHQsIGNvbnRleHRTdGF0ZSk7CisgICAgZHJhd1BhdGhTaGFk
b3cocGxhdGZvcm1Db250ZXh0LCBmaWxsU291cmNlLCB7IH0sIHRhcmdldENvbnRleHQsIEZpbGwp
OworICAgIGZpbGxDdXJyZW50Q2Fpcm9QYXRoKHBsYXRmb3JtQ29udGV4dCwgZmlsbFNvdXJjZSk7
CiB9CiAKLXZvaWQgc3Ryb2tlUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIGNvbnRleHRTdGF0ZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250
ZXh0KQordm9pZCBzdHJva2VSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoLCBjb25zdCBTdHJva2VT
b3VyY2UmIHN0cm9rZVNvdXJjZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewog
ICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShj
cik7CiAKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgbGlu
ZVdpZHRoKTsKLSAgICBkcmF3UGF0aFNoYWRvdyhwbGF0Zm9ybUNvbnRleHQsIGNvbnRleHRTdGF0
ZSwgdGFyZ2V0Q29udGV4dCwgU3Ryb2tlKTsKLSAgICBwbGF0Zm9ybUNvbnRleHQucHJlcGFyZUZv
clN0cm9raW5nKGNvbnRleHRTdGF0ZSk7CisgICAgZHJhd1BhdGhTaGFkb3cocGxhdGZvcm1Db250
ZXh0LCB7IH0sIHN0cm9rZVNvdXJjZSwgdGFyZ2V0Q29udGV4dCwgU3Ryb2tlKTsKKyAgICBwbGF0
Zm9ybUNvbnRleHQucHJlcGFyZUZvclN0cm9raW5nKHN0cm9rZVNvdXJjZSwgUGxhdGZvcm1Db250
ZXh0Q2Fpcm86OlByZXNlcnZlQWxwaGEpOwogICAgIGNhaXJvX3N0cm9rZShjcik7CiAKICAgICBj
YWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBzdHJva2VQYXRoKFBsYXRmb3JtQ29udGV4dENh
aXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBjb250ZXh0U3RhdGUsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkK
K3ZvaWQgc3Ryb2tlUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBj
b25zdCBQYXRoJiBwYXRoLCBjb25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgR3JhcGhp
Y3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1D
b250ZXh0LmNyKCk7CiAKICAgICBzZXRQYXRoT25DYWlyb0NvbnRleHQoY3IsIHBhdGgucGxhdGZv
cm1QYXRoKCktPmNvbnRleHQoKSk7Ci0gICAgZHJhd1BhdGhTaGFkb3cocGxhdGZvcm1Db250ZXh0
LCBjb250ZXh0U3RhdGUsIHRhcmdldENvbnRleHQsIFN0cm9rZSk7Ci0gICAgcGxhdGZvcm1Db250
ZXh0LnByZXBhcmVGb3JTdHJva2luZyhjb250ZXh0U3RhdGUpOworICAgIGRyYXdQYXRoU2hhZG93
KHBsYXRmb3JtQ29udGV4dCwgeyB9LCBzdHJva2VTb3VyY2UsIHRhcmdldENvbnRleHQsIFN0cm9r
ZSk7CisgICAgcGxhdGZvcm1Db250ZXh0LnByZXBhcmVGb3JTdHJva2luZyhzdHJva2VTb3VyY2Us
IFBsYXRmb3JtQ29udGV4dENhaXJvOjpQcmVzZXJ2ZUFscGhhKTsKICAgICBjYWlyb19zdHJva2Uo
Y3IpOwogfQogCkBAIC02MTcsNyArNjQ5LDcgQEAgdm9pZCBjbGVhclJlY3QoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBj
b25zdCBGbG9hdFBvaW50JiBwb2ludCwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCwg
ZG91YmxlIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNvbnN0IFZlY3RvcjxjYWlyb19nbHlwaF90PiYg
Z2x5cGhzLCBmbG9hdCB4T2Zmc2V0LCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleHQpCit2
b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291
cmNlLCBjb25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQsIGRvdWJsZSBzeW50aGV0aWNC
b2xkT2Zmc2V0LCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mIGdseXBocywgZmxvYXQgeE9m
ZnNldCwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewogICAgIGRyYXdHbHlwaHNT
aGFkb3cocGxhdGZvcm1Db250ZXh0LCBzdGF0ZSwgcG9pbnQsIHNjYWxlZEZvbnQsIHN5bnRoZXRp
Y0JvbGRPZmZzZXQsIGdseXBocywgdGFyZ2V0Q29udGV4dCk7CiAKQEAgLTYyNSw3ICs2NTcsNyBA
QCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdAogICAgIGNhaXJvX3NhdmUoY3IpOwogCiAgICAgaWYg
KHN0YXRlLnRleHREcmF3aW5nTW9kZSAmIFRleHRNb2RlRmlsbCkgewotICAgICAgICBwbGF0Zm9y
bUNvbnRleHQucHJlcGFyZUZvckZpbGxpbmcoc3RhdGUsIFBsYXRmb3JtQ29udGV4dENhaXJvOjpB
ZGp1c3RQYXR0ZXJuRm9yR2xvYmFsQWxwaGEpOworICAgICAgICBwbGF0Zm9ybUNvbnRleHQucHJl
cGFyZUZvckZpbGxpbmcoZmlsbFNvdXJjZSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OkFkanVzdFBh
dHRlcm5Gb3JHbG9iYWxBbHBoYSk7CiAgICAgICAgIGRyYXdHbHlwaHNUb0NvbnRleHQoY3IsIHNj
YWxlZEZvbnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGdseXBocyk7CiAgICAgfQogCkBAIC02MzQs
NyArNjY2LDcgQEAgdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9y
bUNvbnRleHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXQKICAgICAvLyB0aGUgdGV4dCBhcyBl
dmVuIG9uZSBzaW5nbGUgc3Ryb2tlIHdvdWxkIGNvdmVyIHRoZSBmdWxsIHdkdGggb2YgdGhlIHRl
eHQuCiAgICAgLy8gIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM3NTkuCiAgICAgaWYgKHN0YXRlLnRleHREcmF3aW5nTW9kZSAmIFRleHRNb2RlU3Ryb2tlICYm
IHN0YXRlLnN0cm9rZVRoaWNrbmVzcyA8IDIgKiB4T2Zmc2V0KSB7Ci0gICAgICAgIHBsYXRmb3Jt
Q29udGV4dC5wcmVwYXJlRm9yU3Ryb2tpbmcoc3RhdGUpOworICAgICAgICBwbGF0Zm9ybUNvbnRl
eHQucHJlcGFyZUZvclN0cm9raW5nKHN0cm9rZVNvdXJjZSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86
OlByZXNlcnZlQWxwaGEpOwogICAgICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgc3RhdGUu
c3Ryb2tlVGhpY2tuZXNzKTsKIAogICAgICAgICAvLyBUaGlzIG1heSBkaXN0dXJiIHRoZSBDVE0s
IGJ1dCB3ZSBhcmUgZ29pbmcgdG8gY2FsbCBjYWlyb19yZXN0b3JlIHNvb24gYWZ0ZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJh
dGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3Bl
cmF0aW9ucy5oCmluZGV4IDE1ZDM0YzZkM2M3NGY1ZDZlOGE0MGM4YTUwOWM0MGY1MTk1OGNhZTIu
LjRhYWVhNmE4NTU4ZTFjYTIyZWFlM2ZhYzNkODQ0YTJiZTQxZmJkZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9u
cy5oCkBAIC03NywyMiArNzcsNTQgQEAgYm9vbCBpc0FjY2VsZXJhdGVkQ29udGV4dChQbGF0Zm9y
bUNvbnRleHRDYWlybyYpOwogCiB9IC8vIG5hbWVzcGFjZSBTdGF0ZQogCitzdHJ1Y3QgRmlsbFNv
dXJjZSB7CisgICAgRmlsbFNvdXJjZSgpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBGaWxsU291
cmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CisKKyAgICBzdHJ1Y3QgeworICAgICAg
ICBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBvYmplY3Q7CisgICAgICAgIEZsb2F0U2l6ZSBzaXpl
OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOworICAgICAgICBib29sIHJlcGVh
dFg7CisgICAgICAgIGJvb2wgcmVwZWF0WTsKKyAgICB9IHBhdHRlcm47CisgICAgc3RydWN0IHsK
KyAgICAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gYmFzZTsKKyAgICAgICAgUmVmUHRyPGNh
aXJvX3BhdHRlcm5fdD4gYWxwaGFBZGp1c3RlZDsKKyAgICB9IGdyYWRpZW50OworICAgIENvbG9y
IGNvbG9yOworCisgICAgV2luZFJ1bGUgZmlsbFJ1bGU7Cit9OworCitzdHJ1Y3QgU3Ryb2tlU291
cmNlIHsKKyAgICBTdHJva2VTb3VyY2UoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU3Ryb2tl
U291cmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CisKKyAgICBSZWZQdHI8Y2Fpcm9f
cGF0dGVybl90PiBwYXR0ZXJuOworICAgIHN0cnVjdCB7CisgICAgICAgIFJlZlB0cjxjYWlyb19w
YXR0ZXJuX3Q+IGJhc2U7CisgICAgICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IGFscGhhQWRq
dXN0ZWQ7CisgICAgfSBncmFkaWVudDsKKyAgICBDb2xvciBjb2xvcjsKK307CisKIHZvaWQgc2V0
TGluZUNhcChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIExpbmVDYXApOwogdm9pZCBzZXRMaW5lRGFz
aChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IERhc2hBcnJheSYsIGZsb2F0KTsKIHZvaWQg
c2V0TGluZUpvaW4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBMaW5lSm9pbik7CiB2b2lkIHNldE1p
dGVyTGltaXQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBmbG9hdCk7CiAKLXZvaWQgZmlsbFJlY3Qo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dCYpOwordm9pZCBmaWxsUmVjdChQbGF0Zm9ybUNv
bnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZpbGxTb3VyY2UmLCBHcmFwaGlj
c0NvbnRleHQmKTsKIHZvaWQgZmlsbFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIGJvb2wsIEdyYXBoaWNzQ29udGV4dCYpOwogdm9pZCBm
aWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYsIGNhaXJvX3Bh
dHRlcm5fdCopOwogdm9pZCBmaWxsUm91bmRlZFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBib29sLCBHcmFwaGljc0NvbnRl
eHQmKTsKLXZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmKTsKLXZvaWQgZmlsbFBhdGgoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBQYXRoJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
LCBHcmFwaGljc0NvbnRleHQmKTsKLXZvaWQgc3Ryb2tlUmVjdChQbGF0Zm9ybUNvbnRleHRDYWly
byYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dCYpOwotdm9pZCBzdHJva2VQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJv
JiwgY29uc3QgUGF0aCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250
ZXh0Jik7Cit2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKFBsYXRmb3JtQ29udGV4dENhaXJv
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmlsbFNvdXJjZSYsIEdyYXBoaWNzQ29udGV4dCYpOwor
dm9pZCBmaWxsUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IFBhdGgmLCBjb25zdCBG
aWxsU291cmNlJiwgR3JhcGhpY3NDb250ZXh0Jik7Cit2b2lkIHN0cm9rZVJlY3QoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29uc3QgU3Ryb2tlU291cmNl
JiwgR3JhcGhpY3NDb250ZXh0Jik7Cit2b2lkIHN0cm9rZVBhdGgoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mLCBjb25zdCBQYXRoJiwgY29uc3QgU3Ryb2tlU291cmNlJiwgR3JhcGhpY3NDb250ZXh0Jik7
CiB2b2lkIGNsZWFyUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYp
OwogCi12b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjYWlyb19zY2FsZWRfZm9udF90Kiwg
ZG91YmxlLCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mLCBmbG9hdCwgR3JhcGhpY3NDb250
ZXh0Jik7Cit2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJva2VTb3VyY2Um
LCBjb25zdCBGbG9hdFBvaW50JiwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCosIGRvdWJsZSwgY29uc3Qg
VmVjdG9yPGNhaXJvX2dseXBoX3Q+JiwgZmxvYXQsIEdyYXBoaWNzQ29udGV4dCYpOwogCiB2b2lk
IGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCos
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24sIEdyYXBoaWNzQ29udGV4dCYpOwogdm9pZCBkcmF3
UGF0dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IElu
dFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dENhaXJvLmNwcAppbmRleCBkMjRkYmM0NWVlYzZkZjZiYjFkNzA5ZDQxZjdhZDc0M2JiOGMzZTMw
Li42MTQ5YWU0YTViMGVkOWNlMmEwNzY2ZmU0NTYxM2UwMzU0YWM0MTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAg
LTcxLDcgKzcxLDkgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICBkb3VibGUgc3ludGhl
dGljQm9sZE9mZnNldCA9IGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpOwogCiAgICAgQVNTRVJU
KGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAgIENhaXJvOjpkcmF3R2x5cGhzKCpj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBjb250ZXh0LnN0YXRlKCksIHBvaW50LCBzY2FsZWRG
b250LCBzeW50aGV0aWNCb2xkT2Zmc2V0LCBnbHlwaHMsIHhPZmZzZXQsIGNvbnRleHQpOworICAg
IGF1dG8mIHN0YXRlID0gY29udGV4dC5zdGF0ZSgpOworICAgIENhaXJvOjpkcmF3R2x5cGhzKCpj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBzdGF0ZSwgQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUp
LCBDYWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwKKyAgICAgICAgcG9pbnQsIHNjYWxlZEZvbnQs
IHN5bnRoZXRpY0JvbGRPZmZzZXQsIGdseXBocywgeE9mZnNldCwgY29udGV4dCk7CiB9CiAKICNp
ZiBFTkFCTEUoQ1NTM19URVhUX0RFQ09SQVRJT05fU0tJUF9JTkspCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRDYWlyby5jcHAKaW5kZXggNTM1MTJmOThiMjY3MjAwZDcwMjA1MDlmZTlkZjMyMmU1YjMwYjU3
NS4uZWM3YTNlZTU5YmE1N2U5M2Q3OTM0ZjdlODU2M2JhZGE0MzUyNWQ0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIH0KIAogICAgIEFTU0VSVChoYXNQ
bGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgQ2Fpcm86OmZpbGxQYXRoKCpwbGF0Zm9ybUNvbnRleHQo
KSwgcGF0aCwgc3RhdGUoKSwgKnRoaXMpOworICAgIENhaXJvOjpmaWxsUGF0aCgqcGxhdGZvcm1D
b250ZXh0KCksIHBhdGgsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKCkpLCAqdGhpcyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCkBAIC0y
MDIsNyArMjAyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0
aCYgcGF0aCkKICAgICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAg
IENhaXJvOjpzdHJva2VQYXRoKCpwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aCwgc3RhdGUoKSwgKnRo
aXMpOworICAgIENhaXJvOjpzdHJva2VQYXRoKCpwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aCwgQ2Fp
cm86OlN0cm9rZVNvdXJjZShzdGF0ZSgpKSwgKnRoaXMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtMjE2LDcgKzIxNiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAg
ICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBDYWlybzo6Zmls
bFJlY3QoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBzdGF0ZSgpLCAqdGhpcyk7CisgICAgQ2Fp
cm86OmZpbGxSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgQ2Fpcm86OkZpbGxTb3VyY2Uo
c3RhdGUoKSksICp0aGlzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNTIzLDcgKzUyMyw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgZmxvYXQgbGluZVdpZHRoKQogICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRl
eHQoKSk7Ci0gICAgQ2Fpcm86OnN0cm9rZVJlY3QoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBs
aW5lV2lkdGgsIHN0YXRlKCksICp0aGlzKTsKKyAgICBDYWlybzo6c3Ryb2tlUmVjdCgqcGxhdGZv
cm1Db250ZXh0KCksIHJlY3QsIGxpbmVXaWR0aCwgQ2Fpcm86OlN0cm9rZVNvdXJjZShzdGF0ZSgp
KSwgKnRoaXMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUNhcChMaW5lQ2Fw
IGxpbmVDYXApCkBAIC02NzgsNyArNjc4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKICAg
ICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAgIENhaXJvOjpmaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZSgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIHJvdW5kZWRIb2xl
UmVjdCwgc3RhdGUoKSwgKnRoaXMpOworICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsK
KyAgICBDYWlybzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoKnBsYXRmb3JtQ29udGV4dCgpLCBy
ZWN0LCByb3VuZGVkSG9sZVJlY3QsIHN0YXRlLCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksICp0
aGlzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENh
aXJvLmNwcAppbmRleCBkNDI0NDE0OGYxMTc0ZmRlYThhOTVlYzBkNDkyODk2OWM3MDMyOGNkLi42
YTNjYzc1OGY3NmZmNjk1ZjU2OTliODgxZjljYjg4NjdkZDY0ZjU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1D
b250ZXh0Q2Fpcm8uY3BwCkBAIC0yNjQsMTYgKzI2NCwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
cmVkdWNlU291cmNlQnlBbHBoYShjYWlyb190KiBjciwgZmxvYXQgYWxwaGEpCiAgICAgY2Fpcm9f
cG9wX2dyb3VwX3RvX3NvdXJjZShjcik7CiB9CiAKLXN0YXRpYyB2b2lkIHByZXBhcmVDYWlyb0Nv
bnRleHRTb3VyY2UoY2Fpcm9fdCogY3IsIFBhdHRlcm4qIHBhdHRlcm4sIEdyYWRpZW50KiBncmFk
aWVudCwgY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBnbG9iYWxBbHBoYSkKK3N0YXRpYyB2b2lk
IHByZXBhcmVDYWlyb0NvbnRleHRTb3VyY2UoY2Fpcm9fdCogY3IsIGNhaXJvX3BhdHRlcm5fdCog
cGF0dGVybiwgY2Fpcm9fcGF0dGVybl90KiBncmFkaWVudCwgY29uc3QgQ29sb3ImIGNvbG9yLCBm
bG9hdCBnbG9iYWxBbHBoYSkKIHsKICAgICBpZiAocGF0dGVybikgewotICAgICAgICBSZWZQdHI8
Y2Fpcm9fcGF0dGVybl90PiBjYWlyb1BhdHRlcm4gPSBhZG9wdFJlZihwYXR0ZXJuLT5jcmVhdGVQ
bGF0Zm9ybVBhdHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsKLSAgICAgICAgY2Fpcm9fc2V0X3Nv
dXJjZShjciwgY2Fpcm9QYXR0ZXJuLmdldCgpKTsKKyAgICAgICAgLy8gUGF0dGVybiBzb3VyY2UK
KyAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZShjciwgcGF0dGVybik7CiAgICAgICAgIHJlZHVjZVNv
dXJjZUJ5QWxwaGEoY3IsIGdsb2JhbEFscGhhKTsKICAgICB9IGVsc2UgaWYgKGdyYWRpZW50KSB7
Ci0gICAgICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IGNhaXJvUGF0dGVybiA9IGFkb3B0UmVm
KGdyYWRpZW50LT5jcmVhdGVQbGF0Zm9ybUdyYWRpZW50KGdsb2JhbEFscGhhKSk7Ci0gICAgICAg
IGNhaXJvX3NldF9zb3VyY2UoY3IsIGNhaXJvUGF0dGVybi5nZXQoKSk7Ci0gICAgfSBlbHNlIHsg
Ly8gU29saWQgY29sb3Igc291cmNlLgorICAgICAgICAvLyBHcmFkaWVudCBzb3VyY2UKKyAgICAg
ICAgY2Fpcm9fc2V0X3NvdXJjZShjciwgZ3JhZGllbnQpOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIFNvbGlkIGNvbG9yIHNvdXJjZQogICAgICAgICBpZiAoZ2xvYmFsQWxwaGEgPCAxKQogICAg
ICAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwgY29sb3JXaXRoT3ZlcnJpZGVBbHBo
YShjb2xvci5yZ2IoKSwgY29sb3IuYWxwaGEoKSAvIDI1NS5mICogZ2xvYmFsQWxwaGEpKTsKICAg
ICAgICAgZWxzZQpAQCAtMjgxLDMyICsyODIsMzkgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUNhaXJv
Q29udGV4dFNvdXJjZShjYWlyb190KiBjciwgUGF0dGVybiogcGF0dGVybiwgR3JhZGllbnQqIGcK
ICAgICB9CiB9CiAKLXZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OnByZXBhcmVGb3JGaWxsaW5n
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgUGF0dGVybkFkanVzdG1lbnQgcGF0
dGVybkFkanVzdG1lbnQpCit2b2lkIFBsYXRmb3JtQ29udGV4dENhaXJvOjpwcmVwYXJlRm9yRmls
bGluZyhjb25zdCBDYWlybzo6RmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgUGF0dGVybkFkanVzdG1l
bnQgcGF0dGVybkFkanVzdG1lbnQpCiB7Ci0gICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShtX2NyLmdl
dCgpLCBzdGF0ZS5maWxsUnVsZSA9PSBSVUxFX0VWRU5PREQgPyAgQ0FJUk9fRklMTF9SVUxFX0VW
RU5fT0REIDogQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcpOwotICAgIHByZXBhcmVDYWlyb0NvbnRl
eHRTb3VyY2UobV9jci5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
LmZpbGxQYXR0ZXJuLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUu
ZmlsbEdyYWRpZW50LmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUu
ZmlsbENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybkFkanVzdG1l
bnQgPT0gQWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhID8gZ2xvYmFsQWxwaGEoKSA6IDEpOwot
Ci0gICAgaWYgKHN0YXRlLmZpbGxQYXR0ZXJuKQotICAgICAgICBjbGlwRm9yUGF0dGVybkZpbGxp
bmcoc3RhdGUpOworICAgIGNhaXJvX3NldF9maWxsX3J1bGUobV9jci5nZXQoKSwgZmlsbFNvdXJj
ZS5maWxsUnVsZSA9PSBSVUxFX0VWRU5PREQgPyBDQUlST19GSUxMX1JVTEVfRVZFTl9PREQgOiBD
QUlST19GSUxMX1JVTEVfV0lORElORyk7CisKKyAgICBib29sIGFkanVzdEZvckFscGhhID0gcGF0
dGVybkFkanVzdG1lbnQgPT0gQWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhOworCisgICAgYXV0
byogZ3JhZGllbnQgPSBmaWxsU291cmNlLmdyYWRpZW50LmJhc2UuZ2V0KCk7CisgICAgaWYgKGFk
anVzdEZvckFscGhhICYmIGZpbGxTb3VyY2UuZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCkKKyAgICAg
ICAgZ3JhZGllbnQgPSBmaWxsU291cmNlLmdyYWRpZW50LmFscGhhQWRqdXN0ZWQuZ2V0KCk7CisK
KyAgICBwcmVwYXJlQ2Fpcm9Db250ZXh0U291cmNlKG1fY3IuZ2V0KCksIGZpbGxTb3VyY2UucGF0
dGVybi5vYmplY3QuZ2V0KCksIGdyYWRpZW50LAorICAgICAgICBmaWxsU291cmNlLmNvbG9yLCBh
ZGp1c3RGb3JBbHBoYSA/IGdsb2JhbEFscGhhKCkgOiAxKTsKKworICAgIGlmIChmaWxsU291cmNl
LnBhdHRlcm4ub2JqZWN0KSB7CisgICAgICAgIGNsaXBGb3JQYXR0ZXJuRmlsbGluZyhmaWxsU291
cmNlLnBhdHRlcm4uc2l6ZSwgZmlsbFNvdXJjZS5wYXR0ZXJuLnRyYW5zZm9ybSwKKyAgICAgICAg
ICAgIGZpbGxTb3VyY2UucGF0dGVybi5yZXBlYXRYLCBmaWxsU291cmNlLnBhdHRlcm4ucmVwZWF0
WSk7CisgICAgfQogfQogCi12b2lkIFBsYXRmb3JtQ29udGV4dENhaXJvOjpwcmVwYXJlRm9yU3Ry
b2tpbmcoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBBbHBoYVByZXNlcnZhdGlv
biBhbHBoYVByZXNlcnZhdGlvbikKK3ZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OnByZXBhcmVG
b3JTdHJva2luZyhjb25zdCBDYWlybzo6U3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIEFscGhh
UHJlc2VydmF0aW9uIGFscGhhUHJlc2VydmF0aW9uKQogewotICAgIHByZXBhcmVDYWlyb0NvbnRl
eHRTb3VyY2UobV9jci5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
LnN0cm9rZVBhdHRlcm4uZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
ZS5zdHJva2VHcmFkaWVudC5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRlLnN0cm9rZUNvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFQcmVz
ZXJ2YXRpb24gPT0gUHJlc2VydmVBbHBoYSA/IGdsb2JhbEFscGhhKCkgOiAxKTsKKyAgICBib29s
IHByZXNlcnZlQWxwaGEgPSBhbHBoYVByZXNlcnZhdGlvbiA9PSBQcmVzZXJ2ZUFscGhhOworCisg
ICAgYXV0byogZ3JhZGllbnQgPSBzdHJva2VTb3VyY2UuZ3JhZGllbnQuYmFzZS5nZXQoKTsKKyAg
ICBpZiAocHJlc2VydmVBbHBoYSAmJiBzdHJva2VTb3VyY2UuZ3JhZGllbnQuYWxwaGFBZGp1c3Rl
ZCkKKyAgICAgICAgZ3JhZGllbnQgPSBzdHJva2VTb3VyY2UuZ3JhZGllbnQuYWxwaGFBZGp1c3Rl
ZC5nZXQoKTsKKworICAgIHByZXBhcmVDYWlyb0NvbnRleHRTb3VyY2UobV9jci5nZXQoKSwgc3Ry
b2tlU291cmNlLnBhdHRlcm4uZ2V0KCksIGdyYWRpZW50LAorICAgICAgICBzdHJva2VTb3VyY2Uu
Y29sb3IsIHByZXNlcnZlQWxwaGEgPyBnbG9iYWxBbHBoYSgpIDogMSk7CiB9CiAKLXZvaWQgUGxh
dGZvcm1Db250ZXh0Q2Fpcm86OmNsaXBGb3JQYXR0ZXJuRmlsbGluZyhjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUpCit2b2lkIFBsYXRmb3JtQ29udGV4dENhaXJvOjpjbGlwRm9yUGF0
dGVybkZpbGxpbmcoY29uc3QgRmxvYXRTaXplJiBwYXR0ZXJuU2l6ZSwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSkKIHsK
LSAgICBBU1NFUlQoc3RhdGUuZmlsbFBhdHRlcm4pOwotCiAgICAgLy8gSG9sZCBjdXJyZW50IGNh
aXJvIHBhdGggaW4gYSB2YXJpYWJsZSBmb3IgcmVzdG9yaW5nIGl0IGFmdGVyIGNvbmZpZ3VyaW5n
IHRoZSBwYXR0ZXJuIGNsaXAgcmVjdGFuZ2xlLgogICAgIGF1dG8gY3VycmVudFBhdGggPSBjYWly
b19jb3B5X3BhdGgobV9jci5nZXQoKSk7CiAgICAgY2Fpcm9fbmV3X3BhdGgobV9jci5nZXQoKSk7
CkBAIC0zMTcsMTIgKzMyNSw3IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OmNsaXBGb3JQ
YXR0ZXJuRmlsbGluZyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhCiAgICAgY2Fpcm9f
Y2xpcF9leHRlbnRzKG1fY3IuZ2V0KCksICZ4MSwgJnkxLCAmeDIsICZ5Mik7CiAgICAgRmxvYXRS
ZWN0IGNsaXBSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSk7CiAKLSAgICBhdXRvJiBwYXR0
ZXJuSW1hZ2UgPSBzdGF0ZS5maWxsUGF0dGVybi0+dGlsZUltYWdlKCk7Ci0gICAgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtID0gc3RhdGUuZmlsbFBhdHRlcm4tPnBhdHRl
cm5TcGFjZVRyYW5zZm9ybSgpOwotICAgIEZsb2F0UmVjdCBwYXR0ZXJuUmVjdCA9IHBhdHRlcm5U
cmFuc2Zvcm0ubWFwUmVjdChGbG9hdFJlY3QoMCwgMCwgcGF0dGVybkltYWdlLndpZHRoKCksIHBh
dHRlcm5JbWFnZS5oZWlnaHQoKSkpOwotCi0gICAgYm9vbCByZXBlYXRYID0gc3RhdGUuZmlsbFBh
dHRlcm4tPnJlcGVhdFgoKTsKLSAgICBib29sIHJlcGVhdFkgPSBzdGF0ZS5maWxsUGF0dGVybi0+
cmVwZWF0WSgpOworICAgIEZsb2F0UmVjdCBwYXR0ZXJuUmVjdCA9IHBhdHRlcm5UcmFuc2Zvcm0u
bWFwUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBwYXR0ZXJuU2l6ZSkpOwogCiAgICAgaWYg
KCFyZXBlYXRYKSB7CiAgICAgICAgIGNsaXBSZWN0LnNldFgocGF0dGVyblJlY3QueCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3Jt
Q29udGV4dENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Q
bGF0Zm9ybUNvbnRleHRDYWlyby5oCmluZGV4IDllNTk1NzRjYjRlYTlmZGIyMzdkYjU2NTkyNDY3
ODkzOTdmNGRiN2UuLjU0NGYxZjkyZjk3MmE0NDgwYTMzZTI3ZThiODM1YWUzYWQzYjE4ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3Jt
Q29udGV4dENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaApAQCAtMzcsNiArMzcsMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwogc3RydWN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlOwogCituYW1lc3BhY2UgQ2Fpcm8geworc3RydWN0IEZpbGxTb3Vy
Y2U7CitzdHJ1Y3QgU3Ryb2tlU291cmNlOworfQorCiAvLyBNdWNoIGxpa2UgUGxhdGZvcm1Db250
ZXh0U2tpYSBpbiB0aGUgU2tpYSBwb3J0LCB0aGlzIGNsYXNzIGhvbGRzIGluZm9ybWF0aW9uIHRo
YXQKIC8vIHdvdWxkIG5vcm1hbGx5IGJlIHByaXZhdGUgdG8gR3JhcGhpY3NDb250ZXh0LCBleGNl
cHQgdGhhdCB3ZSB3YW50IHRvIGFsbG93IGFjY2VzcwogLy8gdG8gaXQgaW4gRm9udCBhbmQgSW1h
Z2UgY29kZS4gVGhpcyBhbGxvd3MgdXMgdG8gc2VwYXJhdGUgdGhlIGNvbmNlcm5zIG9mIENhaXJv
LXNwZWNpZmljCkBAIC02OSwxMyArNzQsMTMgQEAgcHVibGljOgogICAgIEludGVycG9sYXRpb25R
dWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdDsKIAogICAgIGVudW0gUGF0
dGVybkFkanVzdG1lbnQgeyBOb0FkanVzdG1lbnQsIEFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBo
YSB9OwotICAgIHZvaWQgcHJlcGFyZUZvckZpbGxpbmcoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmLCBQYXR0ZXJuQWRqdXN0bWVudCk7CisgICAgdm9pZCBwcmVwYXJlRm9yRmlsbGluZyhjb25z
dCBDYWlybzo6RmlsbFNvdXJjZSYsIFBhdHRlcm5BZGp1c3RtZW50KTsKIAogICAgIGVudW0gQWxw
aGFQcmVzZXJ2YXRpb24geyBEb05vdFByZXNlcnZlQWxwaGEsIFByZXNlcnZlQWxwaGEgfTsKLSAg
ICB2b2lkIHByZXBhcmVGb3JTdHJva2luZyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEFs
cGhhUHJlc2VydmF0aW9uID0gUHJlc2VydmVBbHBoYSk7CisgICAgdm9pZCBwcmVwYXJlRm9yU3Ry
b2tpbmcoY29uc3QgQ2Fpcm86OlN0cm9rZVNvdXJjZSYsIEFscGhhUHJlc2VydmF0aW9uKTsKIAog
cHJpdmF0ZToKLSAgICB2b2lkIGNsaXBGb3JQYXR0ZXJuRmlsbGluZyhjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYpOworICAgIHZvaWQgY2xpcEZvclBhdHRlcm5GaWxsaW5nKGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGJvb2wsIGJvb2wpOwogCiAgICAgUmVmUHRy
PGNhaXJvX3Q+IG1fY3I7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330693</attachid>
            <date>2018-01-08 05:25:05 -0800</date>
            <delta_ts>2018-01-08 06:58:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181386-20180108142504.patch</filename>
            <type>text/plain</type>
            <size>28062</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGUyMzg1ZDliNDU4MmVj
NTZlZTIzMTVkN2Q0MjQ0OGY4NWY2NDFlYy4uMmNmYTczYmM2NmU5M2YwZDQwMWZhNWE0NTcxYWFj
YWVlZGE1M2JjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE4LTAxLTA4ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIFVzZSBp
c29sYXRlZCBmaWxsIGFuZCBzdHJva2Ugc291cmNlIGNvbnRhaW5lcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTM4NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdlbmVyYXRlIGZpbGwgYW5kIHN0cm9r
ZSBzb3VyY2Ugb2JqZWN0cyB1cG9uIGludm9jYXRpb24gb2YgdmFyaW91cyBDYWlybworICAgICAg
ICBvcGVyYXRpb25zLCBpbml0aWFsaXppbmcgbmVjZXNzYXJ5IGRhdGEgZnJvbSB0aGUgR3JhcGhp
Y3NDb250ZXh0U3RhdGUKKyAgICAgICAgb2JqZWN0LgorCisgICAgICAgIENhaXJvOjpGaWxsU291
cmNlIGFuZCBDYWlybzo6U3Ryb2tlU291cmNlIHN0cnVjdHMgYXJlIGludHJvZHVjZWQsIGJvdGgK
KyAgICAgICAgYmVpbmcgZGVmYXVsdC1jb25zdHJ1Y3RpYmxlIGFzIHdlbGwgYXMgcHJvdmlkaW5n
IGEgY29uc3RydWN0b3IgdGhhdAorICAgICAgICBhY2NlcHRzIGEgR3JhcGhpY3NDb250ZXh0U3Rh
dGUgb2JqZWN0IGZyb20gd2hpY2ggdGhlIGFwcHJvcHJpYXRlCisgICAgICAgIHJlc291cmNlcyBh
cmUgY3JlYXRlZC4KKworICAgICAgICBUaGUgRmlsbFNvdXJjZSBhbmQgU3Ryb2tlU291cmNlIG9i
amVjdHMgYXJlIHRoZW4gcGFzc2VkIHRvCisgICAgICAgIFBsYXRmb3JtQ29udGV4dENhaXJvJ3Mg
cHJlcGFyZUZvckZpbGxpbmcoKSBhbmQgcHJlcGFyZUZvclN0cm9raW5nKCkKKyAgICAgICAgbWV0
aG9kcy4gSGVyZSB0aGUgaGVscGVyIHByZXBhcmVDYWlyb0NvbnRleHRTb3VyY2UoKSBmdW5jdGlv
biBpcyBub3cKKyAgICAgICAgaW52b2tlZCB3aXRoIGNhaXJvX3BhdHRlcm5fdCBvYmplY3RzIGFz
IHBhdHRlcm4gb3IgZ3JhZGllbnQgc291cmNlcywgb3IKKyAgICAgICAgdGhlIHNvdXJjZSBjb2xv
ciBpZiBuZWl0aGVyIGNhaXJvX3BhdHRlcm5fdCBvYmplY3QgaXMgc3BlY2lmaWVkLgorCisgICAg
ICAgIFRoZSBGaWxsU291cmNlIGFuZCBTdHJva2VTb3VyY2UgY29uc3RydWN0b3JzIG1pbWljIHRo
ZSBwcmV2aW91cyBiZWhhdmlvcgorICAgICAgICBvZiBwcmVwYXJlQ2Fpcm9Db250ZXh0U291cmNl
KCkuIEluIGNhc2UgdGhlIHNvdXJjZSBpcyBhIFBhdHRlcm4gb2JqZWN0LAorICAgICAgICBhIGNh
aXJvX3BhdHRlcm5fdCBvYmplY3QgaXMgY3JlYXRlZCBmcm9tIHRoYXQuIEluIGNhc2Ugb2YgRmls
bFNvdXJjZSwKKyAgICAgICAgd2UgYWxzbyByZXRyaWV2ZSBwYXR0ZXJuIHNpemUsIHRyYW5zZm9y
bSBhbmQgcmVwZXRpdGlvbiBpbmZvcm1hdGlvbi4gSW4KKyAgICAgICAgY2FzZSB0aGUgc291cmNl
IG9zIGEgR3JhZGllbnQgb2JqZWN0LCB3ZSBjcmVhdGUgYSAnYmFzZScgY2Fpcm9fcGF0dGVybl90
CisgICAgICAgIG9iamVjdCBmb3IgYSBjb21wbGV0ZWx5IG9wYXF1ZSBhbHBoYSBjaGFubmVsLiBB
ZGRpdGlvbmFsbHksIGlmIHRoZSBhbHBoYQorICAgICAgICB2YWx1ZSBvbiB0aGUgc3RhdGUgaXMg
bm90IDEsIHdlIGNyZWF0ZSBhbiBhbHBoYS1hZGp1c3RlZCBjYWlyb19wYXR0ZXJuX3QKKyAgICAg
ICAgdGhhdCBpcyBwb3RlbnRpYWxseSB1c2VkIGZvciBhbnkgZmlsbGluZyBvciBzdHJva2luZyBv
cGVyYXRpb24gdGhhdCBoYXMKKyAgICAgICAgdG8gcHJlc2VydmUgdHJhbnNwYXJlbmN5LiBJZiBu
ZWl0aGVyIFBhdHRlcm4gb3IgR3JhZGllbnQgb2JqZWN0cyBhcmUgc2V0CisgICAgICAgIG9uIHRo
ZSBHcmFwaGljc0NvbnRleHRTdGF0ZSwgd2UgZGVmYXVsdCB0byB0aGUgY3VycmVudCBmaWxsIG9y
IHN0cm9rZQorICAgICAgICBjb2xvci4KKworICAgICAgICBPdmVyYWxsLCB0aGVyZSdzIG5vIGNo
YW5nZSBpbiBiZWhhdmlvciwgdGhpcyBpcyBzaW1wbHkgYSByZWZhY3RvcmluZworICAgICAgICB0
aGF0IGVuYWJsZXMgdXMgdG8gY29uc3RydWN0IENhaXJvIG9iamVjdHMgZm9yIGZpbGxpbmcgYW5k
IHN0cm9raW5nCisgICAgICAgIHNvdXJjZXMgYXQgdGhlIHRpbWUgb2YgQ2Fpcm8gb3BlcmF0aW9u
IGRpc3BhdGNoLCBpbnN0ZWFkIG9mIHB1bGxpbmcgZG93bgorICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZSBkZWVwZXIgaW50byB0aGUgQ2Fpcm8tc3BlY2lmaWMgY29kZS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgLS0gbm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2Fpcm86OmRyYXdQYXRoU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpm
aWxsQ3VycmVudENhaXJvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6RmlsbFNvdXJj
ZTo6RmlsbFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U3Ryb2tlU291cmNlOjpT
dHJva2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmZpbGxSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhaXJvOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWlybzo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OnN0cm9r
ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OnN0cm9rZVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0ds
eXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cHJlcGFyZUNhaXJvQ29udGV4dFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUNvbnRleHRDYWlybzo6cHJlcGFyZUZvckZpbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1Db250ZXh0Q2Fpcm86OnByZXBhcmVGb3JTdHJva2luZyk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6Y2xpcEZvclBhdHRlcm5GaWxsaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oOgorCiAyMDE4
LTAxLTA3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZHVj
ZSB0aGUgcHJlY2lzaW9uIG9mICJoaWdoIiByZXNvbHV0aW9uIHRpbWUgdG8gMW1zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVy
YXRpb25zLmNwcAppbmRleCAxMzEzMDA5M2Y0ZDRjZGU3NTk0NTFhZGRmMjVmMzE0ZjRiODFiYjgy
Li5hZDI3YjQ5NGQyYzcwNjJiNzgwMjlhZTM2OGUwYWZmMWI3MzJjNzMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0
aW9ucy5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgZW51bSBQYXRoRHJhd2luZ1N0eWxlIHsKICAgICBG
aWxsQW5kU3Ryb2tlID0gRmlsbCArIFN0cm9rZQogfTsKIAotc3RhdGljIGlubGluZSB2b2lkIGRy
YXdQYXRoU2hhZG93KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBjb250ZXh0U3RhdGUsIEdyYXBoaWNzQ29udGV4dCYgdGFy
Z2V0Q29udGV4dCwgUGF0aERyYXdpbmdTdHlsZSBkcmF3aW5nU3R5bGUpCitzdGF0aWMgaW5saW5l
IHZvaWQgZHJhd1BhdGhTaGFkb3coUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJv
a2VTb3VyY2UsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCwgUGF0aERyYXdpbmdTdHls
ZSBkcmF3aW5nU3R5bGUpCiB7CiAgICAgU2hhZG93Qmx1ciYgc2hhZG93ID0gcGxhdGZvcm1Db250
ZXh0LnNoYWRvd0JsdXIoKTsKICAgICBpZiAoc2hhZG93LnR5cGUoKSA9PSBTaGFkb3dCbHVyOjpO
b1NoYWRvdykKQEAgLTEwNiwxNCArMTA2LDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0
aFNoYWRvdyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBHCiAg
ICAgaWYgKGRyYXdpbmdTdHlsZSAmIEZpbGwpIHsKICAgICAgICAgY2Fpcm9fc2F2ZShjYWlyb1No
YWRvd0NvbnRleHQpOwogICAgICAgICBjYWlyb19hcHBlbmRfcGF0aChjYWlyb1NoYWRvd0NvbnRl
eHQsIHBhdGguZ2V0KCkpOwotICAgICAgICBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dFN0YXRlLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6
Tm9BZGp1c3RtZW50KTsKKyAgICAgICAgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PnByZXBhcmVGb3JGaWxsaW5nKGZpbGxTb3VyY2UsIFBsYXRmb3JtQ29udGV4dENhaXJvOjpOb0Fk
anVzdG1lbnQpOwogICAgICAgICBjYWlyb19maWxsKGNhaXJvU2hhZG93Q29udGV4dCk7CiAgICAg
ICAgIGNhaXJvX3Jlc3RvcmUoY2Fpcm9TaGFkb3dDb250ZXh0KTsKICAgICB9CiAKICAgICBpZiAo
ZHJhd2luZ1N0eWxlICYgU3Ryb2tlKSB7CiAgICAgICAgIGNhaXJvX2FwcGVuZF9wYXRoKGNhaXJv
U2hhZG93Q29udGV4dCwgcGF0aC5nZXQoKSk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yU3Ryb2tpbmcoY29udGV4dFN0YXRlLCBQbGF0Zm9ybUNv
bnRleHRDYWlybzo6RG9Ob3RQcmVzZXJ2ZUFscGhhKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JTdHJva2luZyhzdHJva2VTb3VyY2UsIFBsYXRm
b3JtQ29udGV4dENhaXJvOjpEb05vdFByZXNlcnZlQWxwaGEpOwogICAgICAgICBjYWlyb19zdHJv
a2UoY2Fpcm9TaGFkb3dDb250ZXh0KTsKICAgICB9CiAKQEAgLTEyNiwxMiArMTI2LDEyIEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxh
dGZvcm1Db250ZXh0LCBjb25zdCBHCiAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY2Fpcm9Db250ZXh0
LCBwYXRoLmdldCgpKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGZpbGxDdXJyZW50Q2Fpcm9Q
YXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBjb250ZXh0U3RhdGUpCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsbEN1cnJl
bnRDYWlyb1BhdGgoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3Qg
RmlsbFNvdXJjZSYgZmlsbFNvdXJjZSkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29u
dGV4dC5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogCi0gICAgcGxhdGZvcm1Db250ZXh0LnBy
ZXBhcmVGb3JGaWxsaW5nKGNvbnRleHRTdGF0ZSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OkFkanVz
dFBhdHRlcm5Gb3JHbG9iYWxBbHBoYSk7CisgICAgcGxhdGZvcm1Db250ZXh0LnByZXBhcmVGb3JG
aWxsaW5nKGZpbGxTb3VyY2UsIFBsYXRmb3JtQ29udGV4dENhaXJvOjpBZGp1c3RQYXR0ZXJuRm9y
R2xvYmFsQWxwaGEpOwogICAgIGNhaXJvX2ZpbGwoY3IpOwogCiAgICAgY2Fpcm9fcmVzdG9yZShj
cik7CkBAIC00NjEsNiArNDYxLDM4IEBAIGJvb2wgaXNBY2NlbGVyYXRlZENvbnRleHQoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKIAogfSAvLyBuYW1lc3BhY2UgU3RhdGUK
IAorRmlsbFNvdXJjZTo6RmlsbFNvdXJjZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUpCit7CisgICAgaWYgKHN0YXRlLmZpbGxQYXR0ZXJuKSB7CisgICAgICAgIHBhdHRlcm4ub2Jq
ZWN0ID0gYWRvcHRSZWYoc3RhdGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihB
ZmZpbmVUcmFuc2Zvcm0oKSkpOworCisgICAgICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0YXRl
LmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKKyAgICAgICAgcGF0dGVybi5zaXplID0gRmxvYXRT
aXplKHBhdHRlcm5JbWFnZS53aWR0aCgpLCBwYXR0ZXJuSW1hZ2UuaGVpZ2h0KCkpOworICAgICAg
ICBwYXR0ZXJuLnRyYW5zZm9ybSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5wYXR0ZXJuU3BhY2VUcmFu
c2Zvcm0oKTsKKyAgICAgICAgcGF0dGVybi5yZXBlYXRYID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJl
cGVhdFgoKTsKKyAgICAgICAgcGF0dGVybi5yZXBlYXRZID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJl
cGVhdFkoKTsKKyAgICB9IGVsc2UgaWYgKHN0YXRlLmZpbGxHcmFkaWVudCkgeworICAgICAgICBn
cmFkaWVudC5iYXNlID0gYWRvcHRSZWYoc3RhdGUuZmlsbEdyYWRpZW50LT5jcmVhdGVQbGF0Zm9y
bUdyYWRpZW50KDEpKTsKKyAgICAgICAgaWYgKHN0YXRlLmFscGhhICE9IDEpCisgICAgICAgICAg
ICBncmFkaWVudC5hbHBoYUFkanVzdGVkID0gYWRvcHRSZWYoc3RhdGUuZmlsbEdyYWRpZW50LT5j
cmVhdGVQbGF0Zm9ybUdyYWRpZW50KHN0YXRlLmFscGhhKSk7CisgICAgfSBlbHNlCisgICAgICAg
IGNvbG9yID0gc3RhdGUuZmlsbENvbG9yOworCisgICAgZmlsbFJ1bGUgPSBzdGF0ZS5maWxsUnVs
ZTsKK30KKworU3Ryb2tlU291cmNlOjpTdHJva2VTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlKQoreworICAgIGlmIChzdGF0ZS5zdHJva2VQYXR0ZXJuKSB7CisgICAgICAg
IHBhdHRlcm4gPSBhZG9wdFJlZihzdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBh
dHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICB9IGVsc2UgaWYgKHN0YXRlLnN0cm9rZUdy
YWRpZW50KSB7CisgICAgICAgIGdyYWRpZW50LmJhc2UgPSBhZG9wdFJlZihzdGF0ZS5zdHJva2VH
cmFkaWVudC0+Y3JlYXRlUGxhdGZvcm1HcmFkaWVudCgxKSk7CisgICAgICAgIGlmIChzdGF0ZS5h
bHBoYSAhPSAxKQorICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IGFkb3B0UmVm
KHN0YXRlLnN0cm9rZUdyYWRpZW50LT5jcmVhdGVQbGF0Zm9ybUdyYWRpZW50KHN0YXRlLmFscGhh
KSk7CisgICAgfSBlbHNlCisgICAgICAgIGNvbG9yID0gc3RhdGUuc3Ryb2tlQ29sb3I7Cit9CisK
IHZvaWQgc2V0TGluZUNhcChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBM
aW5lQ2FwIGxpbmVDYXApCiB7CiAgICAgY2Fpcm9fbGluZV9jYXBfdCBjYWlyb0NhcDsKQEAgLTUw
OCwxMyArNTQwLDEzIEBAIHZvaWQgc2V0TWl0ZXJMaW1pdChQbGF0Zm9ybUNvbnRleHRDYWlybyYg
cGxhdGZvcm1Db250ZXh0LCBmbG9hdCBtaXRlckxpbWl0KQogICAgIGNhaXJvX3NldF9taXRlcl9s
aW1pdChwbGF0Zm9ybUNvbnRleHQuY3IoKSwgbWl0ZXJMaW1pdCk7CiB9CiAKLXZvaWQgZmlsbFJl
Y3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGV4dFN0YXRlLCBHcmFwaGlj
c0NvbnRleHQmIHRhcmdldENvbnRleHQpCit2b2lkIGZpbGxSZWN0KFBsYXRmb3JtQ29udGV4dENh
aXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmlsbFNv
dXJjZSYgZmlsbFNvdXJjZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewogICAg
IGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAKICAgICBjYWlyb19yZWN0YW5n
bGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsK
LSAgICBkcmF3UGF0aFNoYWRvdyhwbGF0Zm9ybUNvbnRleHQsIGNvbnRleHRTdGF0ZSwgdGFyZ2V0
Q29udGV4dCwgRmlsbCk7Ci0gICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgocGxhdGZvcm1Db250ZXh0
LCBjb250ZXh0U3RhdGUpOworICAgIGRyYXdQYXRoU2hhZG93KHBsYXRmb3JtQ29udGV4dCwgZmls
bFNvdXJjZSwgeyB9LCB0YXJnZXRDb250ZXh0LCBGaWxsKTsKKyAgICBmaWxsQ3VycmVudENhaXJv
UGF0aChwbGF0Zm9ybUNvbnRleHQsIGZpbGxTb3VyY2UpOwogfQogCiB2b2lkIGZpbGxSZWN0KFBs
YXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBib29sIGhhc1NoYWRvdywgR3JhcGhpY3NDb250ZXh0JiB0
YXJnZXRDb250ZXh0KQpAQCAtNTUxLDcgKzU4Myw3IEBAIHZvaWQgZmlsbFJvdW5kZWRSZWN0KFBs
YXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJl
CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhv
bGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBjb250ZXh0U3RhdGUsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0
Q29udGV4dCkKK3ZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJv
dW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBj
b250ZXh0U3RhdGUsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIEdyYXBoaWNzQ29udGV4
dCYgdGFyZ2V0Q29udGV4dCkKIHsKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgbGV2ZXJhZ2Ug
dGhlIHNwZWNpZmllZCBjb2xvci4KIApAQCAtNTY5LDQwICs2MDEsNDAgQEAgdm9pZCBmaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBj
b25zdCBGbG9hdFIKIAogICAgIGNhaXJvX3NhdmUoY3IpOwogICAgIHNldFBhdGhPbkNhaXJvQ29u
dGV4dChwbGF0Zm9ybUNvbnRleHQuY3IoKSwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgp
KTsKLSAgICBmaWxsQ3VycmVudENhaXJvUGF0aChwbGF0Zm9ybUNvbnRleHQsIGNvbnRleHRTdGF0
ZSk7CisgICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgocGxhdGZvcm1Db250ZXh0LCBmaWxsU291cmNl
KTsKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBmaWxsUGF0aChQbGF0Zm9ybUNv
bnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBQYXRoJiBwYXRoLCBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgY29udGV4dFN0YXRlLCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENv
bnRleHQpCit2b2lkIGZpbGxQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIEdyYXBo
aWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3Jt
Q29udGV4dC5jcigpOwogCiAgICAgc2V0UGF0aE9uQ2Fpcm9Db250ZXh0KGNyLCBwYXRoLnBsYXRm
b3JtUGF0aCgpLT5jb250ZXh0KCkpOwotICAgIGRyYXdQYXRoU2hhZG93KHBsYXRmb3JtQ29udGV4
dCwgY29udGV4dFN0YXRlLCB0YXJnZXRDb250ZXh0LCBGaWxsKTsKLSAgICBmaWxsQ3VycmVudENh
aXJvUGF0aChwbGF0Zm9ybUNvbnRleHQsIGNvbnRleHRTdGF0ZSk7CisgICAgZHJhd1BhdGhTaGFk
b3cocGxhdGZvcm1Db250ZXh0LCBmaWxsU291cmNlLCB7IH0sIHRhcmdldENvbnRleHQsIEZpbGwp
OworICAgIGZpbGxDdXJyZW50Q2Fpcm9QYXRoKHBsYXRmb3JtQ29udGV4dCwgZmlsbFNvdXJjZSk7
CiB9CiAKLXZvaWQgc3Ryb2tlUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIGNvbnRleHRTdGF0ZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250
ZXh0KQordm9pZCBzdHJva2VSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoLCBjb25zdCBTdHJva2VT
b3VyY2UmIHN0cm9rZVNvdXJjZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewog
ICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShj
cik7CiAKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgbGlu
ZVdpZHRoKTsKLSAgICBkcmF3UGF0aFNoYWRvdyhwbGF0Zm9ybUNvbnRleHQsIGNvbnRleHRTdGF0
ZSwgdGFyZ2V0Q29udGV4dCwgU3Ryb2tlKTsKLSAgICBwbGF0Zm9ybUNvbnRleHQucHJlcGFyZUZv
clN0cm9raW5nKGNvbnRleHRTdGF0ZSk7CisgICAgZHJhd1BhdGhTaGFkb3cocGxhdGZvcm1Db250
ZXh0LCB7IH0sIHN0cm9rZVNvdXJjZSwgdGFyZ2V0Q29udGV4dCwgU3Ryb2tlKTsKKyAgICBwbGF0
Zm9ybUNvbnRleHQucHJlcGFyZUZvclN0cm9raW5nKHN0cm9rZVNvdXJjZSwgUGxhdGZvcm1Db250
ZXh0Q2Fpcm86OlByZXNlcnZlQWxwaGEpOwogICAgIGNhaXJvX3N0cm9rZShjcik7CiAKICAgICBj
YWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBzdHJva2VQYXRoKFBsYXRmb3JtQ29udGV4dENh
aXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBjb250ZXh0U3RhdGUsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkK
K3ZvaWQgc3Ryb2tlUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBj
b25zdCBQYXRoJiBwYXRoLCBjb25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgR3JhcGhp
Y3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1D
b250ZXh0LmNyKCk7CiAKICAgICBzZXRQYXRoT25DYWlyb0NvbnRleHQoY3IsIHBhdGgucGxhdGZv
cm1QYXRoKCktPmNvbnRleHQoKSk7Ci0gICAgZHJhd1BhdGhTaGFkb3cocGxhdGZvcm1Db250ZXh0
LCBjb250ZXh0U3RhdGUsIHRhcmdldENvbnRleHQsIFN0cm9rZSk7Ci0gICAgcGxhdGZvcm1Db250
ZXh0LnByZXBhcmVGb3JTdHJva2luZyhjb250ZXh0U3RhdGUpOworICAgIGRyYXdQYXRoU2hhZG93
KHBsYXRmb3JtQ29udGV4dCwgeyB9LCBzdHJva2VTb3VyY2UsIHRhcmdldENvbnRleHQsIFN0cm9r
ZSk7CisgICAgcGxhdGZvcm1Db250ZXh0LnByZXBhcmVGb3JTdHJva2luZyhzdHJva2VTb3VyY2Us
IFBsYXRmb3JtQ29udGV4dENhaXJvOjpQcmVzZXJ2ZUFscGhhKTsKICAgICBjYWlyb19zdHJva2Uo
Y3IpOwogfQogCkBAIC02MTcsNyArNjQ5LDcgQEAgdm9pZCBjbGVhclJlY3QoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBj
b25zdCBGbG9hdFBvaW50JiBwb2ludCwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCwg
ZG91YmxlIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNvbnN0IFZlY3RvcjxjYWlyb19nbHlwaF90PiYg
Z2x5cGhzLCBmbG9hdCB4T2Zmc2V0LCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleHQpCit2
b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291
cmNlLCBjb25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQsIGRvdWJsZSBzeW50aGV0aWNC
b2xkT2Zmc2V0LCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mIGdseXBocywgZmxvYXQgeE9m
ZnNldCwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewogICAgIGRyYXdHbHlwaHNT
aGFkb3cocGxhdGZvcm1Db250ZXh0LCBzdGF0ZSwgcG9pbnQsIHNjYWxlZEZvbnQsIHN5bnRoZXRp
Y0JvbGRPZmZzZXQsIGdseXBocywgdGFyZ2V0Q29udGV4dCk7CiAKQEAgLTYyNSw3ICs2NTcsNyBA
QCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdAogICAgIGNhaXJvX3NhdmUoY3IpOwogCiAgICAgaWYg
KHN0YXRlLnRleHREcmF3aW5nTW9kZSAmIFRleHRNb2RlRmlsbCkgewotICAgICAgICBwbGF0Zm9y
bUNvbnRleHQucHJlcGFyZUZvckZpbGxpbmcoc3RhdGUsIFBsYXRmb3JtQ29udGV4dENhaXJvOjpB
ZGp1c3RQYXR0ZXJuRm9yR2xvYmFsQWxwaGEpOworICAgICAgICBwbGF0Zm9ybUNvbnRleHQucHJl
cGFyZUZvckZpbGxpbmcoZmlsbFNvdXJjZSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OkFkanVzdFBh
dHRlcm5Gb3JHbG9iYWxBbHBoYSk7CiAgICAgICAgIGRyYXdHbHlwaHNUb0NvbnRleHQoY3IsIHNj
YWxlZEZvbnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGdseXBocyk7CiAgICAgfQogCkBAIC02MzQs
NyArNjY2LDcgQEAgdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9y
bUNvbnRleHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXQKICAgICAvLyB0aGUgdGV4dCBhcyBl
dmVuIG9uZSBzaW5nbGUgc3Ryb2tlIHdvdWxkIGNvdmVyIHRoZSBmdWxsIHdkdGggb2YgdGhlIHRl
eHQuCiAgICAgLy8gIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM3NTkuCiAgICAgaWYgKHN0YXRlLnRleHREcmF3aW5nTW9kZSAmIFRleHRNb2RlU3Ryb2tlICYm
IHN0YXRlLnN0cm9rZVRoaWNrbmVzcyA8IDIgKiB4T2Zmc2V0KSB7Ci0gICAgICAgIHBsYXRmb3Jt
Q29udGV4dC5wcmVwYXJlRm9yU3Ryb2tpbmcoc3RhdGUpOworICAgICAgICBwbGF0Zm9ybUNvbnRl
eHQucHJlcGFyZUZvclN0cm9raW5nKHN0cm9rZVNvdXJjZSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86
OlByZXNlcnZlQWxwaGEpOwogICAgICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgc3RhdGUu
c3Ryb2tlVGhpY2tuZXNzKTsKIAogICAgICAgICAvLyBUaGlzIG1heSBkaXN0dXJiIHRoZSBDVE0s
IGJ1dCB3ZSBhcmUgZ29pbmcgdG8gY2FsbCBjYWlyb19yZXN0b3JlIHNvb24gYWZ0ZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJh
dGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3Bl
cmF0aW9ucy5oCmluZGV4IDE1ZDM0YzZkM2M3NGY1ZDZlOGE0MGM4YTUwOWM0MGY1MTk1OGNhZTIu
LjRhYWVhNmE4NTU4ZTFjYTIyZWFlM2ZhYzNkODQ0YTJiZTQxZmJkZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9u
cy5oCkBAIC03NywyMiArNzcsNTQgQEAgYm9vbCBpc0FjY2VsZXJhdGVkQ29udGV4dChQbGF0Zm9y
bUNvbnRleHRDYWlybyYpOwogCiB9IC8vIG5hbWVzcGFjZSBTdGF0ZQogCitzdHJ1Y3QgRmlsbFNv
dXJjZSB7CisgICAgRmlsbFNvdXJjZSgpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBGaWxsU291
cmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CisKKyAgICBzdHJ1Y3QgeworICAgICAg
ICBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBvYmplY3Q7CisgICAgICAgIEZsb2F0U2l6ZSBzaXpl
OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOworICAgICAgICBib29sIHJlcGVh
dFg7CisgICAgICAgIGJvb2wgcmVwZWF0WTsKKyAgICB9IHBhdHRlcm47CisgICAgc3RydWN0IHsK
KyAgICAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gYmFzZTsKKyAgICAgICAgUmVmUHRyPGNh
aXJvX3BhdHRlcm5fdD4gYWxwaGFBZGp1c3RlZDsKKyAgICB9IGdyYWRpZW50OworICAgIENvbG9y
IGNvbG9yOworCisgICAgV2luZFJ1bGUgZmlsbFJ1bGU7Cit9OworCitzdHJ1Y3QgU3Ryb2tlU291
cmNlIHsKKyAgICBTdHJva2VTb3VyY2UoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU3Ryb2tl
U291cmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CisKKyAgICBSZWZQdHI8Y2Fpcm9f
cGF0dGVybl90PiBwYXR0ZXJuOworICAgIHN0cnVjdCB7CisgICAgICAgIFJlZlB0cjxjYWlyb19w
YXR0ZXJuX3Q+IGJhc2U7CisgICAgICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IGFscGhhQWRq
dXN0ZWQ7CisgICAgfSBncmFkaWVudDsKKyAgICBDb2xvciBjb2xvcjsKK307CisKIHZvaWQgc2V0
TGluZUNhcChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIExpbmVDYXApOwogdm9pZCBzZXRMaW5lRGFz
aChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IERhc2hBcnJheSYsIGZsb2F0KTsKIHZvaWQg
c2V0TGluZUpvaW4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBMaW5lSm9pbik7CiB2b2lkIHNldE1p
dGVyTGltaXQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBmbG9hdCk7CiAKLXZvaWQgZmlsbFJlY3Qo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dCYpOwordm9pZCBmaWxsUmVjdChQbGF0Zm9ybUNv
bnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZpbGxTb3VyY2UmLCBHcmFwaGlj
c0NvbnRleHQmKTsKIHZvaWQgZmlsbFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIGJvb2wsIEdyYXBoaWNzQ29udGV4dCYpOwogdm9pZCBm
aWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYsIGNhaXJvX3Bh
dHRlcm5fdCopOwogdm9pZCBmaWxsUm91bmRlZFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBib29sLCBHcmFwaGljc0NvbnRl
eHQmKTsKLXZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmKTsKLXZvaWQgZmlsbFBhdGgoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBQYXRoJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
LCBHcmFwaGljc0NvbnRleHQmKTsKLXZvaWQgc3Ryb2tlUmVjdChQbGF0Zm9ybUNvbnRleHRDYWly
byYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dCYpOwotdm9pZCBzdHJva2VQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJv
JiwgY29uc3QgUGF0aCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250
ZXh0Jik7Cit2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKFBsYXRmb3JtQ29udGV4dENhaXJv
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmlsbFNvdXJjZSYsIEdyYXBoaWNzQ29udGV4dCYpOwor
dm9pZCBmaWxsUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IFBhdGgmLCBjb25zdCBG
aWxsU291cmNlJiwgR3JhcGhpY3NDb250ZXh0Jik7Cit2b2lkIHN0cm9rZVJlY3QoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29uc3QgU3Ryb2tlU291cmNl
JiwgR3JhcGhpY3NDb250ZXh0Jik7Cit2b2lkIHN0cm9rZVBhdGgoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mLCBjb25zdCBQYXRoJiwgY29uc3QgU3Ryb2tlU291cmNlJiwgR3JhcGhpY3NDb250ZXh0Jik7
CiB2b2lkIGNsZWFyUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYp
OwogCi12b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjYWlyb19zY2FsZWRfZm9udF90Kiwg
ZG91YmxlLCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mLCBmbG9hdCwgR3JhcGhpY3NDb250
ZXh0Jik7Cit2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJva2VTb3VyY2Um
LCBjb25zdCBGbG9hdFBvaW50JiwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCosIGRvdWJsZSwgY29uc3Qg
VmVjdG9yPGNhaXJvX2dseXBoX3Q+JiwgZmxvYXQsIEdyYXBoaWNzQ29udGV4dCYpOwogCiB2b2lk
IGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCos
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24sIEdyYXBoaWNzQ29udGV4dCYpOwogdm9pZCBkcmF3
UGF0dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IElu
dFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dENhaXJvLmNwcAppbmRleCBkMjRkYmM0NWVlYzZkZjZiYjFkNzA5ZDQxZjdhZDc0M2JiOGMzZTMw
Li42MTQ5YWU0YTViMGVkOWNlMmEwNzY2ZmU0NTYxM2UwMzU0YWM0MTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAg
LTcxLDcgKzcxLDkgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICBkb3VibGUgc3ludGhl
dGljQm9sZE9mZnNldCA9IGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpOwogCiAgICAgQVNTRVJU
KGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAgIENhaXJvOjpkcmF3R2x5cGhzKCpj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBjb250ZXh0LnN0YXRlKCksIHBvaW50LCBzY2FsZWRG
b250LCBzeW50aGV0aWNCb2xkT2Zmc2V0LCBnbHlwaHMsIHhPZmZzZXQsIGNvbnRleHQpOworICAg
IGF1dG8mIHN0YXRlID0gY29udGV4dC5zdGF0ZSgpOworICAgIENhaXJvOjpkcmF3R2x5cGhzKCpj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBzdGF0ZSwgQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUp
LCBDYWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwKKyAgICAgICAgcG9pbnQsIHNjYWxlZEZvbnQs
IHN5bnRoZXRpY0JvbGRPZmZzZXQsIGdseXBocywgeE9mZnNldCwgY29udGV4dCk7CiB9CiAKICNp
ZiBFTkFCTEUoQ1NTM19URVhUX0RFQ09SQVRJT05fU0tJUF9JTkspCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRDYWlyby5jcHAKaW5kZXggNTM1MTJmOThiMjY3MjAwZDcwMjA1MDlmZTlkZjMyMmU1YjMwYjU3
NS4uZWM3YTNlZTU5YmE1N2U5M2Q3OTM0ZjdlODU2M2JhZGE0MzUyNWQ0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIH0KIAogICAgIEFTU0VSVChoYXNQ
bGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgQ2Fpcm86OmZpbGxQYXRoKCpwbGF0Zm9ybUNvbnRleHQo
KSwgcGF0aCwgc3RhdGUoKSwgKnRoaXMpOworICAgIENhaXJvOjpmaWxsUGF0aCgqcGxhdGZvcm1D
b250ZXh0KCksIHBhdGgsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKCkpLCAqdGhpcyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCkBAIC0y
MDIsNyArMjAyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0
aCYgcGF0aCkKICAgICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAg
IENhaXJvOjpzdHJva2VQYXRoKCpwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aCwgc3RhdGUoKSwgKnRo
aXMpOworICAgIENhaXJvOjpzdHJva2VQYXRoKCpwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aCwgQ2Fp
cm86OlN0cm9rZVNvdXJjZShzdGF0ZSgpKSwgKnRoaXMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtMjE2LDcgKzIxNiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAg
ICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBDYWlybzo6Zmls
bFJlY3QoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBzdGF0ZSgpLCAqdGhpcyk7CisgICAgQ2Fp
cm86OmZpbGxSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgQ2Fpcm86OkZpbGxTb3VyY2Uo
c3RhdGUoKSksICp0aGlzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNTIzLDcgKzUyMyw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgZmxvYXQgbGluZVdpZHRoKQogICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRl
eHQoKSk7Ci0gICAgQ2Fpcm86OnN0cm9rZVJlY3QoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBs
aW5lV2lkdGgsIHN0YXRlKCksICp0aGlzKTsKKyAgICBDYWlybzo6c3Ryb2tlUmVjdCgqcGxhdGZv
cm1Db250ZXh0KCksIHJlY3QsIGxpbmVXaWR0aCwgQ2Fpcm86OlN0cm9rZVNvdXJjZShzdGF0ZSgp
KSwgKnRoaXMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUNhcChMaW5lQ2Fw
IGxpbmVDYXApCkBAIC02NzgsNyArNjc4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKICAg
ICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAgIENhaXJvOjpmaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZSgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIHJvdW5kZWRIb2xl
UmVjdCwgc3RhdGUoKSwgKnRoaXMpOworICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsK
KyAgICBDYWlybzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoKnBsYXRmb3JtQ29udGV4dCgpLCBy
ZWN0LCByb3VuZGVkSG9sZVJlY3QsIHN0YXRlLCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksICp0
aGlzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENh
aXJvLmNwcAppbmRleCBkNDI0NDE0OGYxMTc0ZmRlYThhOTVlYzBkNDkyODk2OWM3MDMyOGNkLi42
YTNjYzc1OGY3NmZmNjk1ZjU2OTliODgxZjljYjg4NjdkZDY0ZjU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1D
b250ZXh0Q2Fpcm8uY3BwCkBAIC0yNjQsMTYgKzI2NCwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
cmVkdWNlU291cmNlQnlBbHBoYShjYWlyb190KiBjciwgZmxvYXQgYWxwaGEpCiAgICAgY2Fpcm9f
cG9wX2dyb3VwX3RvX3NvdXJjZShjcik7CiB9CiAKLXN0YXRpYyB2b2lkIHByZXBhcmVDYWlyb0Nv
bnRleHRTb3VyY2UoY2Fpcm9fdCogY3IsIFBhdHRlcm4qIHBhdHRlcm4sIEdyYWRpZW50KiBncmFk
aWVudCwgY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBnbG9iYWxBbHBoYSkKK3N0YXRpYyB2b2lk
IHByZXBhcmVDYWlyb0NvbnRleHRTb3VyY2UoY2Fpcm9fdCogY3IsIGNhaXJvX3BhdHRlcm5fdCog
cGF0dGVybiwgY2Fpcm9fcGF0dGVybl90KiBncmFkaWVudCwgY29uc3QgQ29sb3ImIGNvbG9yLCBm
bG9hdCBnbG9iYWxBbHBoYSkKIHsKICAgICBpZiAocGF0dGVybikgewotICAgICAgICBSZWZQdHI8
Y2Fpcm9fcGF0dGVybl90PiBjYWlyb1BhdHRlcm4gPSBhZG9wdFJlZihwYXR0ZXJuLT5jcmVhdGVQ
bGF0Zm9ybVBhdHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsKLSAgICAgICAgY2Fpcm9fc2V0X3Nv
dXJjZShjciwgY2Fpcm9QYXR0ZXJuLmdldCgpKTsKKyAgICAgICAgLy8gUGF0dGVybiBzb3VyY2UK
KyAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZShjciwgcGF0dGVybik7CiAgICAgICAgIHJlZHVjZVNv
dXJjZUJ5QWxwaGEoY3IsIGdsb2JhbEFscGhhKTsKICAgICB9IGVsc2UgaWYgKGdyYWRpZW50KSB7
Ci0gICAgICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IGNhaXJvUGF0dGVybiA9IGFkb3B0UmVm
KGdyYWRpZW50LT5jcmVhdGVQbGF0Zm9ybUdyYWRpZW50KGdsb2JhbEFscGhhKSk7Ci0gICAgICAg
IGNhaXJvX3NldF9zb3VyY2UoY3IsIGNhaXJvUGF0dGVybi5nZXQoKSk7Ci0gICAgfSBlbHNlIHsg
Ly8gU29saWQgY29sb3Igc291cmNlLgorICAgICAgICAvLyBHcmFkaWVudCBzb3VyY2UKKyAgICAg
ICAgY2Fpcm9fc2V0X3NvdXJjZShjciwgZ3JhZGllbnQpOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIFNvbGlkIGNvbG9yIHNvdXJjZQogICAgICAgICBpZiAoZ2xvYmFsQWxwaGEgPCAxKQogICAg
ICAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwgY29sb3JXaXRoT3ZlcnJpZGVBbHBo
YShjb2xvci5yZ2IoKSwgY29sb3IuYWxwaGEoKSAvIDI1NS5mICogZ2xvYmFsQWxwaGEpKTsKICAg
ICAgICAgZWxzZQpAQCAtMjgxLDMyICsyODIsMzkgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUNhaXJv
Q29udGV4dFNvdXJjZShjYWlyb190KiBjciwgUGF0dGVybiogcGF0dGVybiwgR3JhZGllbnQqIGcK
ICAgICB9CiB9CiAKLXZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OnByZXBhcmVGb3JGaWxsaW5n
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgUGF0dGVybkFkanVzdG1lbnQgcGF0
dGVybkFkanVzdG1lbnQpCit2b2lkIFBsYXRmb3JtQ29udGV4dENhaXJvOjpwcmVwYXJlRm9yRmls
bGluZyhjb25zdCBDYWlybzo6RmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgUGF0dGVybkFkanVzdG1l
bnQgcGF0dGVybkFkanVzdG1lbnQpCiB7Ci0gICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShtX2NyLmdl
dCgpLCBzdGF0ZS5maWxsUnVsZSA9PSBSVUxFX0VWRU5PREQgPyAgQ0FJUk9fRklMTF9SVUxFX0VW
RU5fT0REIDogQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcpOwotICAgIHByZXBhcmVDYWlyb0NvbnRl
eHRTb3VyY2UobV9jci5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
LmZpbGxQYXR0ZXJuLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUu
ZmlsbEdyYWRpZW50LmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUu
ZmlsbENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybkFkanVzdG1l
bnQgPT0gQWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhID8gZ2xvYmFsQWxwaGEoKSA6IDEpOwot
Ci0gICAgaWYgKHN0YXRlLmZpbGxQYXR0ZXJuKQotICAgICAgICBjbGlwRm9yUGF0dGVybkZpbGxp
bmcoc3RhdGUpOworICAgIGNhaXJvX3NldF9maWxsX3J1bGUobV9jci5nZXQoKSwgZmlsbFNvdXJj
ZS5maWxsUnVsZSA9PSBSVUxFX0VWRU5PREQgPyBDQUlST19GSUxMX1JVTEVfRVZFTl9PREQgOiBD
QUlST19GSUxMX1JVTEVfV0lORElORyk7CisKKyAgICBib29sIGFkanVzdEZvckFscGhhID0gcGF0
dGVybkFkanVzdG1lbnQgPT0gQWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhOworCisgICAgYXV0
byogZ3JhZGllbnQgPSBmaWxsU291cmNlLmdyYWRpZW50LmJhc2UuZ2V0KCk7CisgICAgaWYgKGFk
anVzdEZvckFscGhhICYmIGZpbGxTb3VyY2UuZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCkKKyAgICAg
ICAgZ3JhZGllbnQgPSBmaWxsU291cmNlLmdyYWRpZW50LmFscGhhQWRqdXN0ZWQuZ2V0KCk7CisK
KyAgICBwcmVwYXJlQ2Fpcm9Db250ZXh0U291cmNlKG1fY3IuZ2V0KCksIGZpbGxTb3VyY2UucGF0
dGVybi5vYmplY3QuZ2V0KCksIGdyYWRpZW50LAorICAgICAgICBmaWxsU291cmNlLmNvbG9yLCBh
ZGp1c3RGb3JBbHBoYSA/IGdsb2JhbEFscGhhKCkgOiAxKTsKKworICAgIGlmIChmaWxsU291cmNl
LnBhdHRlcm4ub2JqZWN0KSB7CisgICAgICAgIGNsaXBGb3JQYXR0ZXJuRmlsbGluZyhmaWxsU291
cmNlLnBhdHRlcm4uc2l6ZSwgZmlsbFNvdXJjZS5wYXR0ZXJuLnRyYW5zZm9ybSwKKyAgICAgICAg
ICAgIGZpbGxTb3VyY2UucGF0dGVybi5yZXBlYXRYLCBmaWxsU291cmNlLnBhdHRlcm4ucmVwZWF0
WSk7CisgICAgfQogfQogCi12b2lkIFBsYXRmb3JtQ29udGV4dENhaXJvOjpwcmVwYXJlRm9yU3Ry
b2tpbmcoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBBbHBoYVByZXNlcnZhdGlv
biBhbHBoYVByZXNlcnZhdGlvbikKK3ZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OnByZXBhcmVG
b3JTdHJva2luZyhjb25zdCBDYWlybzo6U3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIEFscGhh
UHJlc2VydmF0aW9uIGFscGhhUHJlc2VydmF0aW9uKQogewotICAgIHByZXBhcmVDYWlyb0NvbnRl
eHRTb3VyY2UobV9jci5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
LnN0cm9rZVBhdHRlcm4uZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
ZS5zdHJva2VHcmFkaWVudC5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRlLnN0cm9rZUNvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFQcmVz
ZXJ2YXRpb24gPT0gUHJlc2VydmVBbHBoYSA/IGdsb2JhbEFscGhhKCkgOiAxKTsKKyAgICBib29s
IHByZXNlcnZlQWxwaGEgPSBhbHBoYVByZXNlcnZhdGlvbiA9PSBQcmVzZXJ2ZUFscGhhOworCisg
ICAgYXV0byogZ3JhZGllbnQgPSBzdHJva2VTb3VyY2UuZ3JhZGllbnQuYmFzZS5nZXQoKTsKKyAg
ICBpZiAocHJlc2VydmVBbHBoYSAmJiBzdHJva2VTb3VyY2UuZ3JhZGllbnQuYWxwaGFBZGp1c3Rl
ZCkKKyAgICAgICAgZ3JhZGllbnQgPSBzdHJva2VTb3VyY2UuZ3JhZGllbnQuYWxwaGFBZGp1c3Rl
ZC5nZXQoKTsKKworICAgIHByZXBhcmVDYWlyb0NvbnRleHRTb3VyY2UobV9jci5nZXQoKSwgc3Ry
b2tlU291cmNlLnBhdHRlcm4uZ2V0KCksIGdyYWRpZW50LAorICAgICAgICBzdHJva2VTb3VyY2Uu
Y29sb3IsIHByZXNlcnZlQWxwaGEgPyBnbG9iYWxBbHBoYSgpIDogMSk7CiB9CiAKLXZvaWQgUGxh
dGZvcm1Db250ZXh0Q2Fpcm86OmNsaXBGb3JQYXR0ZXJuRmlsbGluZyhjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUpCit2b2lkIFBsYXRmb3JtQ29udGV4dENhaXJvOjpjbGlwRm9yUGF0
dGVybkZpbGxpbmcoY29uc3QgRmxvYXRTaXplJiBwYXR0ZXJuU2l6ZSwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSkKIHsK
LSAgICBBU1NFUlQoc3RhdGUuZmlsbFBhdHRlcm4pOwotCiAgICAgLy8gSG9sZCBjdXJyZW50IGNh
aXJvIHBhdGggaW4gYSB2YXJpYWJsZSBmb3IgcmVzdG9yaW5nIGl0IGFmdGVyIGNvbmZpZ3VyaW5n
IHRoZSBwYXR0ZXJuIGNsaXAgcmVjdGFuZ2xlLgogICAgIGF1dG8gY3VycmVudFBhdGggPSBjYWly
b19jb3B5X3BhdGgobV9jci5nZXQoKSk7CiAgICAgY2Fpcm9fbmV3X3BhdGgobV9jci5nZXQoKSk7
CkBAIC0zMTcsMTIgKzMyNSw3IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OmNsaXBGb3JQ
YXR0ZXJuRmlsbGluZyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhCiAgICAgY2Fpcm9f
Y2xpcF9leHRlbnRzKG1fY3IuZ2V0KCksICZ4MSwgJnkxLCAmeDIsICZ5Mik7CiAgICAgRmxvYXRS
ZWN0IGNsaXBSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSk7CiAKLSAgICBhdXRvJiBwYXR0
ZXJuSW1hZ2UgPSBzdGF0ZS5maWxsUGF0dGVybi0+dGlsZUltYWdlKCk7Ci0gICAgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtID0gc3RhdGUuZmlsbFBhdHRlcm4tPnBhdHRl
cm5TcGFjZVRyYW5zZm9ybSgpOwotICAgIEZsb2F0UmVjdCBwYXR0ZXJuUmVjdCA9IHBhdHRlcm5U
cmFuc2Zvcm0ubWFwUmVjdChGbG9hdFJlY3QoMCwgMCwgcGF0dGVybkltYWdlLndpZHRoKCksIHBh
dHRlcm5JbWFnZS5oZWlnaHQoKSkpOwotCi0gICAgYm9vbCByZXBlYXRYID0gc3RhdGUuZmlsbFBh
dHRlcm4tPnJlcGVhdFgoKTsKLSAgICBib29sIHJlcGVhdFkgPSBzdGF0ZS5maWxsUGF0dGVybi0+
cmVwZWF0WSgpOworICAgIEZsb2F0UmVjdCBwYXR0ZXJuUmVjdCA9IHBhdHRlcm5UcmFuc2Zvcm0u
bWFwUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBwYXR0ZXJuU2l6ZSkpOwogCiAgICAgaWYg
KCFyZXBlYXRYKSB7CiAgICAgICAgIGNsaXBSZWN0LnNldFgocGF0dGVyblJlY3QueCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3Jt
Q29udGV4dENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Q
bGF0Zm9ybUNvbnRleHRDYWlyby5oCmluZGV4IDllNTk1NzRjYjRlYTlmZGIyMzdkYjU2NTkyNDY3
ODkzOTdmNGRiN2UuLjU0NGYxZjkyZjk3MmE0NDgwYTMzZTI3ZThiODM1YWUzYWQzYjE4ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3Jt
Q29udGV4dENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaApAQCAtMzcsNiArMzcsMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwogc3RydWN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlOwogCituYW1lc3BhY2UgQ2Fpcm8geworc3RydWN0IEZpbGxTb3Vy
Y2U7CitzdHJ1Y3QgU3Ryb2tlU291cmNlOworfQorCiAvLyBNdWNoIGxpa2UgUGxhdGZvcm1Db250
ZXh0U2tpYSBpbiB0aGUgU2tpYSBwb3J0LCB0aGlzIGNsYXNzIGhvbGRzIGluZm9ybWF0aW9uIHRo
YXQKIC8vIHdvdWxkIG5vcm1hbGx5IGJlIHByaXZhdGUgdG8gR3JhcGhpY3NDb250ZXh0LCBleGNl
cHQgdGhhdCB3ZSB3YW50IHRvIGFsbG93IGFjY2VzcwogLy8gdG8gaXQgaW4gRm9udCBhbmQgSW1h
Z2UgY29kZS4gVGhpcyBhbGxvd3MgdXMgdG8gc2VwYXJhdGUgdGhlIGNvbmNlcm5zIG9mIENhaXJv
LXNwZWNpZmljCkBAIC02OSwxMyArNzQsMTMgQEAgcHVibGljOgogICAgIEludGVycG9sYXRpb25R
dWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdDsKIAogICAgIGVudW0gUGF0
dGVybkFkanVzdG1lbnQgeyBOb0FkanVzdG1lbnQsIEFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBo
YSB9OwotICAgIHZvaWQgcHJlcGFyZUZvckZpbGxpbmcoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmLCBQYXR0ZXJuQWRqdXN0bWVudCk7CisgICAgdm9pZCBwcmVwYXJlRm9yRmlsbGluZyhjb25z
dCBDYWlybzo6RmlsbFNvdXJjZSYsIFBhdHRlcm5BZGp1c3RtZW50KTsKIAogICAgIGVudW0gQWxw
aGFQcmVzZXJ2YXRpb24geyBEb05vdFByZXNlcnZlQWxwaGEsIFByZXNlcnZlQWxwaGEgfTsKLSAg
ICB2b2lkIHByZXBhcmVGb3JTdHJva2luZyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEFs
cGhhUHJlc2VydmF0aW9uID0gUHJlc2VydmVBbHBoYSk7CisgICAgdm9pZCBwcmVwYXJlRm9yU3Ry
b2tpbmcoY29uc3QgQ2Fpcm86OlN0cm9rZVNvdXJjZSYsIEFscGhhUHJlc2VydmF0aW9uKTsKIAog
cHJpdmF0ZToKLSAgICB2b2lkIGNsaXBGb3JQYXR0ZXJuRmlsbGluZyhjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYpOworICAgIHZvaWQgY2xpcEZvclBhdHRlcm5GaWxsaW5nKGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGJvb2wsIGJvb2wpOwogCiAgICAgUmVmUHRy
PGNhaXJvX3Q+IG1fY3I7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330702</attachid>
            <date>2018-01-08 06:58:10 -0800</date>
            <delta_ts>2018-01-08 06:58:10 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-181386-20180108155809.patch</filename>
            <type>text/plain</type>
            <size>28453</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzc1MmNiODYxYzVhNmUw
NGEyMTllNTdlYjBkYWY1NDg0M2NkMDk5OS4uMDllNzkwNTY0Y2EzODZlMjk2MWRkYThjZTAwYzQ4
NjA2NDhlOTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDczIEBACiAyMDE4LTAxLTA4ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBbQ2Fpcm9dIFVzZSBp
c29sYXRlZCBmaWxsIGFuZCBzdHJva2Ugc291cmNlIGNvbnRhaW5lcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTM4NgorCisgICAgICAgIFJldmll
d2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgorCisgICAgICAgIEdlbmVyYXRlIGZpbGwgYW5k
IHN0cm9rZSBzb3VyY2Ugb2JqZWN0cyB1cG9uIGludm9jYXRpb24gb2YgdmFyaW91cyBDYWlybwor
ICAgICAgICBvcGVyYXRpb25zLCBpbml0aWFsaXppbmcgbmVjZXNzYXJ5IGRhdGEgZnJvbSB0aGUg
R3JhcGhpY3NDb250ZXh0U3RhdGUKKyAgICAgICAgb2JqZWN0LgorCisgICAgICAgIENhaXJvOjpG
aWxsU291cmNlIGFuZCBDYWlybzo6U3Ryb2tlU291cmNlIHN0cnVjdHMgYXJlIGludHJvZHVjZWQs
IGJvdGgKKyAgICAgICAgYmVpbmcgZGVmYXVsdC1jb25zdHJ1Y3RpYmxlIGFzIHdlbGwgYXMgcHJv
dmlkaW5nIGEgY29uc3RydWN0b3IgdGhhdAorICAgICAgICBhY2NlcHRzIGEgR3JhcGhpY3NDb250
ZXh0U3RhdGUgb2JqZWN0IGZyb20gd2hpY2ggdGhlIGFwcHJvcHJpYXRlCisgICAgICAgIHJlc291
cmNlcyBhcmUgY3JlYXRlZC4KKworICAgICAgICBUaGUgRmlsbFNvdXJjZSBhbmQgU3Ryb2tlU291
cmNlIG9iamVjdHMgYXJlIHRoZW4gcGFzc2VkIHRvCisgICAgICAgIFBsYXRmb3JtQ29udGV4dENh
aXJvJ3MgcHJlcGFyZUZvckZpbGxpbmcoKSBhbmQgcHJlcGFyZUZvclN0cm9raW5nKCkKKyAgICAg
ICAgbWV0aG9kcy4gSGVyZSB0aGUgaGVscGVyIHByZXBhcmVDYWlyb0NvbnRleHRTb3VyY2UoKSBm
dW5jdGlvbiBpcyBub3cKKyAgICAgICAgaW52b2tlZCB3aXRoIGNhaXJvX3BhdHRlcm5fdCBvYmpl
Y3RzIGFzIHBhdHRlcm4gb3IgZ3JhZGllbnQgc291cmNlcywgb3IKKyAgICAgICAgdGhlIHNvdXJj
ZSBjb2xvciBpZiBuZWl0aGVyIGNhaXJvX3BhdHRlcm5fdCBvYmplY3QgaXMgc3BlY2lmaWVkLgor
CisgICAgICAgIFRoZSBGaWxsU291cmNlIGFuZCBTdHJva2VTb3VyY2UgY29uc3RydWN0b3JzIG1p
bWljIHRoZSBwcmV2aW91cyBiZWhhdmlvcgorICAgICAgICBvZiBwcmVwYXJlQ2Fpcm9Db250ZXh0
U291cmNlKCkuIEluIGNhc2UgdGhlIHNvdXJjZSBpcyBhIFBhdHRlcm4gb2JqZWN0LAorICAgICAg
ICBhIGNhaXJvX3BhdHRlcm5fdCBvYmplY3QgaXMgY3JlYXRlZCBmcm9tIHRoYXQuIEluIGNhc2Ug
b2YgRmlsbFNvdXJjZSwKKyAgICAgICAgd2UgYWxzbyByZXRyaWV2ZSBwYXR0ZXJuIHNpemUsIHRy
YW5zZm9ybSBhbmQgcmVwZXRpdGlvbiBpbmZvcm1hdGlvbi4gSW4KKyAgICAgICAgY2FzZSB0aGUg
c291cmNlIG9zIGEgR3JhZGllbnQgb2JqZWN0LCB3ZSBjcmVhdGUgYSAnYmFzZScgY2Fpcm9fcGF0
dGVybl90CisgICAgICAgIG9iamVjdCBmb3IgYSBjb21wbGV0ZWx5IG9wYXF1ZSBhbHBoYSBjaGFu
bmVsLiBBZGRpdGlvbmFsbHksIGlmIHRoZSBhbHBoYQorICAgICAgICB2YWx1ZSBvbiB0aGUgc3Rh
dGUgaXMgbm90IDEsIHdlIGNyZWF0ZSBhbiBhbHBoYS1hZGp1c3RlZCBjYWlyb19wYXR0ZXJuX3QK
KyAgICAgICAgdGhhdCBpcyBwb3RlbnRpYWxseSB1c2VkIGZvciBhbnkgZmlsbGluZyBvciBzdHJv
a2luZyBvcGVyYXRpb24gdGhhdCBoYXMKKyAgICAgICAgdG8gcHJlc2VydmUgdHJhbnNwYXJlbmN5
LiBJZiBuZWl0aGVyIFBhdHRlcm4gb3IgR3JhZGllbnQgb2JqZWN0cyBhcmUgc2V0CisgICAgICAg
IG9uIHRoZSBHcmFwaGljc0NvbnRleHRTdGF0ZSwgd2UgZGVmYXVsdCB0byB0aGUgY3VycmVudCBm
aWxsIG9yIHN0cm9rZQorICAgICAgICBjb2xvci4KKworICAgICAgICBPdmVyYWxsLCB0aGVyZSdz
IG5vIGNoYW5nZSBpbiBiZWhhdmlvciwgdGhpcyBpcyBzaW1wbHkgYSByZWZhY3RvcmluZworICAg
ICAgICB0aGF0IGVuYWJsZXMgdXMgdG8gY29uc3RydWN0IENhaXJvIG9iamVjdHMgZm9yIGZpbGxp
bmcgYW5kIHN0cm9raW5nCisgICAgICAgIHNvdXJjZXMgYXQgdGhlIHRpbWUgb2YgQ2Fpcm8gb3Bl
cmF0aW9uIGRpc3BhdGNoLCBpbnN0ZWFkIG9mIHB1bGxpbmcgZG93bgorICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZSBkZWVwZXIgaW50byB0aGUgQ2Fpcm8tc3BlY2lmaWMgY29kZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgLS0gbm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdQYXRoU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
aXJvOjpmaWxsQ3VycmVudENhaXJvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6Rmls
bFNvdXJjZTo6RmlsbFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U3Ryb2tlU291
cmNlOjpTdHJva2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmZpbGxSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWlybzo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86
OnN0cm9rZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OnN0cm9rZVBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxs
UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cHJlcGFyZUNhaXJvQ29udGV4dFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNvbnRleHRDYWlybzo6cHJlcGFyZUZvckZpbGxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm86OnByZXBhcmVGb3JTdHJva2luZyk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6Y2xpcEZvclBhdHRlcm5GaWxsaW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oOgor
CisyMDE4LTAxLTA4ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKwogICAg
ICAgICBbQ2Fpcm9dIENvbnRhaW4gc2hhZG93IGJsdXIgcmVxdWlyZW1lbnQgc3RhdGUgaW4gYSBz
ZXBhcmF0ZSBvYmplY3QKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MTM4MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCA3ZWQxNDA4YmJlODI1ZDhj
YzI5N2I3YjgxMDQ0NThhZjE3YzQwNWY0Li45NGZlNWM1NDU4N2FhODg1NDFhNmJkNDg5ZTM2MTU2
MmUwMmM5YThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgZW51bSBQ
YXRoRHJhd2luZ1N0eWxlIHsKICAgICBGaWxsQW5kU3Ryb2tlID0gRmlsbCArIFN0cm9rZQogfTsK
IAotc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KFBsYXRmb3JtQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBjb250ZXh0U3Rh
dGUsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCwgUGF0aERyYXdpbmdTdHlsZSBkcmF3
aW5nU3R5bGUpCitzdGF0aWMgaW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwg
Y29uc3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0
Q29udGV4dCwgUGF0aERyYXdpbmdTdHlsZSBkcmF3aW5nU3R5bGUpCiB7CiAgICAgU2hhZG93Qmx1
ciYgc2hhZG93ID0gcGxhdGZvcm1Db250ZXh0LnNoYWRvd0JsdXIoKTsKICAgICBpZiAoc2hhZG93
LnR5cGUoKSA9PSBTaGFkb3dCbHVyOjpOb1NoYWRvdykKQEAgLTEwNiwxNCArMTA2LDE0IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxh
dGZvcm1Db250ZXh0LCBjb25zdCBHCiAgICAgaWYgKGRyYXdpbmdTdHlsZSAmIEZpbGwpIHsKICAg
ICAgICAgY2Fpcm9fc2F2ZShjYWlyb1NoYWRvd0NvbnRleHQpOwogICAgICAgICBjYWlyb19hcHBl
bmRfcGF0aChjYWlyb1NoYWRvd0NvbnRleHQsIHBhdGguZ2V0KCkpOwotICAgICAgICBzaGFkb3dD
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dFN0YXRl
LCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6Tm9BZGp1c3RtZW50KTsKKyAgICAgICAgc2hhZG93Q29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JGaWxsaW5nKGZpbGxTb3VyY2UsIFBs
YXRmb3JtQ29udGV4dENhaXJvOjpOb0FkanVzdG1lbnQpOwogICAgICAgICBjYWlyb19maWxsKGNh
aXJvU2hhZG93Q29udGV4dCk7CiAgICAgICAgIGNhaXJvX3Jlc3RvcmUoY2Fpcm9TaGFkb3dDb250
ZXh0KTsKICAgICB9CiAKICAgICBpZiAoZHJhd2luZ1N0eWxlICYgU3Ryb2tlKSB7CiAgICAgICAg
IGNhaXJvX2FwcGVuZF9wYXRoKGNhaXJvU2hhZG93Q29udGV4dCwgcGF0aC5nZXQoKSk7Ci0gICAg
ICAgIHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yU3Ryb2tpbmco
Y29udGV4dFN0YXRlLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6RG9Ob3RQcmVzZXJ2ZUFscGhhKTsK
KyAgICAgICAgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JTdHJv
a2luZyhzdHJva2VTb3VyY2UsIFBsYXRmb3JtQ29udGV4dENhaXJvOjpEb05vdFByZXNlcnZlQWxw
aGEpOwogICAgICAgICBjYWlyb19zdHJva2UoY2Fpcm9TaGFkb3dDb250ZXh0KTsKICAgICB9CiAK
QEAgLTEyNiwxMiArMTI2LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhQ
bGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBHCiAgICAgY2Fpcm9f
YXBwZW5kX3BhdGgoY2Fpcm9Db250ZXh0LCBwYXRoLmdldCgpKTsKIH0KIAotc3RhdGljIGlubGlu
ZSB2b2lkIGZpbGxDdXJyZW50Q2Fpcm9QYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9y
bUNvbnRleHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBjb250ZXh0U3RhdGUpCitzdGF0
aWMgaW5saW5lIHZvaWQgZmlsbEN1cnJlbnRDYWlyb1BhdGgoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
IHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSkKIHsKICAgICBj
YWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwog
Ci0gICAgcGxhdGZvcm1Db250ZXh0LnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHRTdGF0ZSwgUGxh
dGZvcm1Db250ZXh0Q2Fpcm86OkFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBoYSk7CisgICAgcGxh
dGZvcm1Db250ZXh0LnByZXBhcmVGb3JGaWxsaW5nKGZpbGxTb3VyY2UsIFBsYXRmb3JtQ29udGV4
dENhaXJvOjpBZGp1c3RQYXR0ZXJuRm9yR2xvYmFsQWxwaGEpOwogICAgIGNhaXJvX2ZpbGwoY3Ip
OwogCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CkBAIC00NjgsNiArNDY4LDM4IEBAIGJvb2wgU2hh
ZG93Qmx1clVzYWdlOjpyZXF1aXJlZChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitGaWxsU291cmNlOjpGaWxsU291cmNl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKK3sKKyAgICBpZiAoc3RhdGUuZmls
bFBhdHRlcm4pIHsKKyAgICAgICAgcGF0dGVybi5vYmplY3QgPSBhZG9wdFJlZihzdGF0ZS5maWxs
UGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CisKKyAg
ICAgICAgYXV0byYgcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgp
OworICAgICAgICBwYXR0ZXJuLnNpemUgPSBGbG9hdFNpemUocGF0dGVybkltYWdlLndpZHRoKCks
IHBhdHRlcm5JbWFnZS5oZWlnaHQoKSk7CisgICAgICAgIHBhdHRlcm4udHJhbnNmb3JtID0gc3Rh
dGUuZmlsbFBhdHRlcm4tPnBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpOworICAgICAgICBwYXR0ZXJu
LnJlcGVhdFggPSBzdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WCgpOworICAgICAgICBwYXR0ZXJu
LnJlcGVhdFkgPSBzdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WSgpOworICAgIH0gZWxzZSBpZiAo
c3RhdGUuZmlsbEdyYWRpZW50KSB7CisgICAgICAgIGdyYWRpZW50LmJhc2UgPSBhZG9wdFJlZihz
dGF0ZS5maWxsR3JhZGllbnQtPmNyZWF0ZVBsYXRmb3JtR3JhZGllbnQoMSkpOworICAgICAgICBp
ZiAoc3RhdGUuYWxwaGEgIT0gMSkKKyAgICAgICAgICAgIGdyYWRpZW50LmFscGhhQWRqdXN0ZWQg
PSBhZG9wdFJlZihzdGF0ZS5maWxsR3JhZGllbnQtPmNyZWF0ZVBsYXRmb3JtR3JhZGllbnQoc3Rh
dGUuYWxwaGEpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29sb3IgPSBzdGF0ZS5maWxsQ29sb3I7
CisKKyAgICBmaWxsUnVsZSA9IHN0YXRlLmZpbGxSdWxlOworfQorCitTdHJva2VTb3VyY2U6OlN0
cm9rZVNvdXJjZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCit7CisgICAgaWYg
KHN0YXRlLnN0cm9rZVBhdHRlcm4pCisgICAgICAgIHBhdHRlcm4gPSBhZG9wdFJlZihzdGF0ZS5z
dHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsK
KyAgICBlbHNlIGlmIChzdGF0ZS5zdHJva2VHcmFkaWVudCkgeworICAgICAgICBncmFkaWVudC5i
YXNlID0gYWRvcHRSZWYoc3RhdGUuc3Ryb2tlR3JhZGllbnQtPmNyZWF0ZVBsYXRmb3JtR3JhZGll
bnQoMSkpOworICAgICAgICBpZiAoc3RhdGUuYWxwaGEgIT0gMSkKKyAgICAgICAgICAgIGdyYWRp
ZW50LmFscGhhQWRqdXN0ZWQgPSBhZG9wdFJlZihzdGF0ZS5zdHJva2VHcmFkaWVudC0+Y3JlYXRl
UGxhdGZvcm1HcmFkaWVudChzdGF0ZS5hbHBoYSkpOworICAgIH0gZWxzZQorICAgICAgICBjb2xv
ciA9IHN0YXRlLnN0cm9rZUNvbG9yOworfQorCiB2b2lkIHNldExpbmVDYXAoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgTGluZUNhcCBsaW5lQ2FwKQogewogICAgIGNhaXJv
X2xpbmVfY2FwX3QgY2Fpcm9DYXA7CkBAIC01MTUsMTMgKzU0NywxMyBAQCB2b2lkIHNldE1pdGVy
TGltaXQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgZmxvYXQgbWl0ZXJM
aW1pdCkKICAgICBjYWlyb19zZXRfbWl0ZXJfbGltaXQocGxhdGZvcm1Db250ZXh0LmNyKCksIG1p
dGVyTGltaXQpOwogfQogCi12b2lkIGZpbGxSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIGNvbnRleHRTdGF0ZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQordm9p
ZCBmaWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIEdyYXBoaWNzQ29u
dGV4dCYgdGFyZ2V0Q29udGV4dCkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4
dC5jcigpOwogCiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCByZWN0LngoKSwgcmVjdC55KCksIHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgZHJhd1BhdGhTaGFkb3cocGxhdGZvcm1D
b250ZXh0LCBjb250ZXh0U3RhdGUsIHRhcmdldENvbnRleHQsIEZpbGwpOwotICAgIGZpbGxDdXJy
ZW50Q2Fpcm9QYXRoKHBsYXRmb3JtQ29udGV4dCwgY29udGV4dFN0YXRlKTsKKyAgICBkcmF3UGF0
aFNoYWRvdyhwbGF0Zm9ybUNvbnRleHQsIGZpbGxTb3VyY2UsIHsgfSwgdGFyZ2V0Q29udGV4dCwg
RmlsbCk7CisgICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgocGxhdGZvcm1Db250ZXh0LCBmaWxsU291
cmNlKTsKIH0KIAogdm9pZCBmaWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgYm9vbCBo
YXNTaGFkb3csIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkKQEAgLTU1OCw3ICs1OTAs
NyBAQCB2b2lkIGZpbGxSb3VuZGVkUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBjb25zdCBGbG9hdFJvdW5kZWRSZQogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQog
Ci12b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGV4dFN0
YXRlLCBjb25zdCBTaGFkb3dCbHVyVXNhZ2UmIHNoYWRvd0JsdXJVc2FnZSwgR3JhcGhpY3NDb250
ZXh0JiB0YXJnZXRDb250ZXh0KQordm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgRmlsbFNvdXJjZSYg
ZmlsbFNvdXJjZSwgY29uc3QgU2hhZG93Qmx1clVzYWdlJiBzaGFkb3dCbHVyVXNhZ2UsIEdyYXBo
aWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkKIHsKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQg
bGV2ZXJhZ2UgdGhlIHNwZWNpZmllZCBjb2xvci4KIApAQCAtNTc2LDQwICs2MDgsNDAgQEAgdm9p
ZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBjb25zdCBGbG9hdFIKIAogICAgIGNhaXJvX3NhdmUoY3IpOwogICAgIHNldFBhdGhP
bkNhaXJvQ29udGV4dChwbGF0Zm9ybUNvbnRleHQuY3IoKSwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+
Y29udGV4dCgpKTsKLSAgICBmaWxsQ3VycmVudENhaXJvUGF0aChwbGF0Zm9ybUNvbnRleHQsIGNv
bnRleHRTdGF0ZSk7CisgICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgocGxhdGZvcm1Db250ZXh0LCBm
aWxsU291cmNlKTsKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBmaWxsUGF0aChQ
bGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBQYXRoJiBwYXRoLCBj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGV4dFN0YXRlLCBHcmFwaGljc0NvbnRleHQm
IHRhcmdldENvbnRleHQpCit2b2lkIGZpbGxQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3Vy
Y2UsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkKIHsKICAgICBjYWlyb190KiBjciA9
IHBsYXRmb3JtQ29udGV4dC5jcigpOwogCiAgICAgc2V0UGF0aE9uQ2Fpcm9Db250ZXh0KGNyLCBw
YXRoLnBsYXRmb3JtUGF0aCgpLT5jb250ZXh0KCkpOwotICAgIGRyYXdQYXRoU2hhZG93KHBsYXRm
b3JtQ29udGV4dCwgY29udGV4dFN0YXRlLCB0YXJnZXRDb250ZXh0LCBGaWxsKTsKLSAgICBmaWxs
Q3VycmVudENhaXJvUGF0aChwbGF0Zm9ybUNvbnRleHQsIGNvbnRleHRTdGF0ZSk7CisgICAgZHJh
d1BhdGhTaGFkb3cocGxhdGZvcm1Db250ZXh0LCBmaWxsU291cmNlLCB7IH0sIHRhcmdldENvbnRl
eHQsIEZpbGwpOworICAgIGZpbGxDdXJyZW50Q2Fpcm9QYXRoKHBsYXRmb3JtQ29udGV4dCwgZmls
bFNvdXJjZSk7CiB9CiAKLXZvaWQgc3Ryb2tlUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxh
dGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCwgY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIGNvbnRleHRTdGF0ZSwgR3JhcGhpY3NDb250ZXh0JiB0
YXJnZXRDb250ZXh0KQordm9pZCBzdHJva2VSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoLCBjb25z
dCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250
ZXh0KQogewogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAgICAgY2Fp
cm9fc2F2ZShjcik7CiAKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0Lnko
KSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19zZXRfbGluZV93aWR0
aChjciwgbGluZVdpZHRoKTsKLSAgICBkcmF3UGF0aFNoYWRvdyhwbGF0Zm9ybUNvbnRleHQsIGNv
bnRleHRTdGF0ZSwgdGFyZ2V0Q29udGV4dCwgU3Ryb2tlKTsKLSAgICBwbGF0Zm9ybUNvbnRleHQu
cHJlcGFyZUZvclN0cm9raW5nKGNvbnRleHRTdGF0ZSk7CisgICAgZHJhd1BhdGhTaGFkb3cocGxh
dGZvcm1Db250ZXh0LCB7IH0sIHN0cm9rZVNvdXJjZSwgdGFyZ2V0Q29udGV4dCwgU3Ryb2tlKTsK
KyAgICBwbGF0Zm9ybUNvbnRleHQucHJlcGFyZUZvclN0cm9raW5nKHN0cm9rZVNvdXJjZSwgUGxh
dGZvcm1Db250ZXh0Q2Fpcm86OlByZXNlcnZlQWxwaGEpOwogICAgIGNhaXJvX3N0cm9rZShjcik7
CiAKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBzdHJva2VQYXRoKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBjb250ZXh0U3RhdGUsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0
Q29udGV4dCkKK3ZvaWQgc3Ryb2tlUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBjb25zdCBQYXRoJiBwYXRoLCBjb25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJj
ZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewogICAgIGNhaXJvX3QqIGNyID0g
cGxhdGZvcm1Db250ZXh0LmNyKCk7CiAKICAgICBzZXRQYXRoT25DYWlyb0NvbnRleHQoY3IsIHBh
dGgucGxhdGZvcm1QYXRoKCktPmNvbnRleHQoKSk7Ci0gICAgZHJhd1BhdGhTaGFkb3cocGxhdGZv
cm1Db250ZXh0LCBjb250ZXh0U3RhdGUsIHRhcmdldENvbnRleHQsIFN0cm9rZSk7Ci0gICAgcGxh
dGZvcm1Db250ZXh0LnByZXBhcmVGb3JTdHJva2luZyhjb250ZXh0U3RhdGUpOworICAgIGRyYXdQ
YXRoU2hhZG93KHBsYXRmb3JtQ29udGV4dCwgeyB9LCBzdHJva2VTb3VyY2UsIHRhcmdldENvbnRl
eHQsIFN0cm9rZSk7CisgICAgcGxhdGZvcm1Db250ZXh0LnByZXBhcmVGb3JTdHJva2luZyhzdHJv
a2VTb3VyY2UsIFBsYXRmb3JtQ29udGV4dENhaXJvOjpQcmVzZXJ2ZUFscGhhKTsKICAgICBjYWly
b19zdHJva2UoY3IpOwogfQogCkBAIC02MjQsNyArNjU2LDcgQEAgdm9pZCBjbGVhclJlY3QoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlLCBjb25zdCBTaGFkb3dCbHVyVXNhZ2UmIHNoYWRvd0JsdXJVc2FnZSwgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQsIGRvdWJsZSBz
eW50aGV0aWNCb2xkT2Zmc2V0LCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mIGdseXBocywg
ZmxvYXQgeE9mZnNldCwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQordm9pZCBkcmF3
R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29u
c3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIGNvbnN0IFNoYWRvd0JsdXJVc2FnZSYgc2hh
ZG93Qmx1clVzYWdlLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY2Fpcm9fc2NhbGVkX2ZvbnRf
dCogc2NhbGVkRm9udCwgZG91YmxlIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNvbnN0IFZlY3Rvcjxj
YWlyb19nbHlwaF90PiYgZ2x5cGhzLCBmbG9hdCB4T2Zmc2V0LCBHcmFwaGljc0NvbnRleHQmIHRh
cmdldENvbnRleHQpCiB7CiAgICAgZHJhd0dseXBoc1NoYWRvdyhwbGF0Zm9ybUNvbnRleHQsIHN0
YXRlLCBzaGFkb3dCbHVyVXNhZ2UsIHBvaW50LCBzY2FsZWRGb250LCBzeW50aGV0aWNCb2xkT2Zm
c2V0LCBnbHlwaHMsIHRhcmdldENvbnRleHQpOwogCkBAIC02MzIsNyArNjY0LDcgQEAgdm9pZCBk
cmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXQKICAgICBjYWlyb19zYXZlKGNyKTsKIAogICAgIGlmIChzdGF0ZS50
ZXh0RHJhd2luZ01vZGUgJiBUZXh0TW9kZUZpbGwpIHsKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0
LnByZXBhcmVGb3JGaWxsaW5nKHN0YXRlLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6QWRqdXN0UGF0
dGVybkZvckdsb2JhbEFscGhhKTsKKyAgICAgICAgcGxhdGZvcm1Db250ZXh0LnByZXBhcmVGb3JG
aWxsaW5nKGZpbGxTb3VyY2UsIFBsYXRmb3JtQ29udGV4dENhaXJvOjpBZGp1c3RQYXR0ZXJuRm9y
R2xvYmFsQWxwaGEpOwogICAgICAgICBkcmF3R2x5cGhzVG9Db250ZXh0KGNyLCBzY2FsZWRGb250
LCBzeW50aGV0aWNCb2xkT2Zmc2V0LCBnbHlwaHMpOwogICAgIH0KIApAQCAtNjQxLDcgKzY3Myw3
IEBAIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0
LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0CiAgICAgLy8gdGhlIHRleHQgYXMgZXZlbiBvbmUg
c2luZ2xlIHN0cm9rZSB3b3VsZCBjb3ZlciB0aGUgZnVsbCB3ZHRoIG9mIHRoZSB0ZXh0LgogICAg
IC8vICBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNzU5Lgog
ICAgIGlmIChzdGF0ZS50ZXh0RHJhd2luZ01vZGUgJiBUZXh0TW9kZVN0cm9rZSAmJiBzdGF0ZS5z
dHJva2VUaGlja25lc3MgPCAyICogeE9mZnNldCkgewotICAgICAgICBwbGF0Zm9ybUNvbnRleHQu
cHJlcGFyZUZvclN0cm9raW5nKHN0YXRlKTsKKyAgICAgICAgcGxhdGZvcm1Db250ZXh0LnByZXBh
cmVGb3JTdHJva2luZyhzdHJva2VTb3VyY2UsIFBsYXRmb3JtQ29udGV4dENhaXJvOjpQcmVzZXJ2
ZUFscGhhKTsKICAgICAgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgoY3IsIHN0YXRlLnN0cm9rZVRo
aWNrbmVzcyk7CiAKICAgICAgICAgLy8gVGhpcyBtYXkgZGlzdHVyYiB0aGUgQ1RNLCBidXQgd2Ug
YXJlIGdvaW5nIHRvIGNhbGwgY2Fpcm9fcmVzdG9yZSBzb29uIGFmdGVyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMu
aAppbmRleCBiMzljOTRlNDY4ZmJmYjI5MjdjYzg2ZjlhNGJhNDQyMDk5MzVkMmI5Li4wYmE5MWZi
YzE2N2NiNzZhNGMxNzE5ODNmMGMwYjIzNDlkNDViMWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaApAQCAt
NzcsNiArNzcsMzggQEAgYm9vbCBpc0FjY2VsZXJhdGVkQ29udGV4dChQbGF0Zm9ybUNvbnRleHRD
YWlybyYpOwogCiB9IC8vIG5hbWVzcGFjZSBTdGF0ZQogCitzdHJ1Y3QgRmlsbFNvdXJjZSB7Cisg
ICAgRmlsbFNvdXJjZSgpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBGaWxsU291cmNlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CisKKyAgICBzdHJ1Y3QgeworICAgICAgICBSZWZQdHI8
Y2Fpcm9fcGF0dGVybl90PiBvYmplY3Q7CisgICAgICAgIEZsb2F0U2l6ZSBzaXplOworICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOworICAgICAgICBib29sIHJlcGVhdFggeyBmYWxz
ZSB9OworICAgICAgICBib29sIHJlcGVhdFkgeyBmYWxzZSB9OworICAgIH0gcGF0dGVybjsKKyAg
ICBzdHJ1Y3QgeworICAgICAgICBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBiYXNlOworICAgICAg
ICBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBhbHBoYUFkanVzdGVkOworICAgIH0gZ3JhZGllbnQ7
CisgICAgQ29sb3IgY29sb3I7CisKKyAgICBXaW5kUnVsZSBmaWxsUnVsZTsKK307CisKK3N0cnVj
dCBTdHJva2VTb3VyY2UgeworICAgIFN0cm9rZVNvdXJjZSgpID0gZGVmYXVsdDsKKyAgICBleHBs
aWNpdCBTdHJva2VTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKworICAgIFJl
ZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IHBhdHRlcm47CisgICAgc3RydWN0IHsKKyAgICAgICAgUmVm
UHRyPGNhaXJvX3BhdHRlcm5fdD4gYmFzZTsKKyAgICAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5f
dD4gYWxwaGFBZGp1c3RlZDsKKyAgICB9IGdyYWRpZW50OworICAgIENvbG9yIGNvbG9yOworfTsK
Kwogc3RydWN0IFNoYWRvd0JsdXJVc2FnZSB7CiAgICAgZXhwbGljaXQgU2hhZG93Qmx1clVzYWdl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAKQEAgLTkyLDE3ICsxMjQsMTcgQEAgdm9p
ZCBzZXRMaW5lRGFzaChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IERhc2hBcnJheSYsIGZs
b2F0KTsKIHZvaWQgc2V0TGluZUpvaW4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBMaW5lSm9pbik7
CiB2b2lkIHNldE1pdGVyTGltaXQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBmbG9hdCk7CiAKLXZv
aWQgZmlsbFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dCYpOwordm9pZCBmaWxsUmVj
dChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZpbGxTb3Vy
Y2UmLCBHcmFwaGljc0NvbnRleHQmKTsKIHZvaWQgZmlsbFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIGJvb2wsIEdyYXBoaWNzQ29udGV4
dCYpOwogdm9pZCBmaWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNhaXJvX3BhdHRlcm5fdCopOwogdm9pZCBmaWxsUm91bmRlZFJlY3QoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBib29sLCBH
cmFwaGljc0NvbnRleHQmKTsKLXZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBTaGFkb3dCbHVyVXNhZ2UmLCBHcmFw
aGljc0NvbnRleHQmKTsKLXZvaWQgZmlsbFBhdGgoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25z
dCBQYXRoJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmKTsK
LXZvaWQgc3Ryb2tlUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYs
IGZsb2F0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dCYpOwot
dm9pZCBzdHJva2VQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgUGF0aCYsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0Jik7Cit2b2lkIGZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTaGFkb3dC
bHVyVXNhZ2UmLCBHcmFwaGljc0NvbnRleHQmKTsKK3ZvaWQgZmlsbFBhdGgoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mLCBjb25zdCBQYXRoJiwgY29uc3QgRmlsbFNvdXJjZSYsIEdyYXBoaWNzQ29udGV4
dCYpOwordm9pZCBzdHJva2VSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRS
ZWN0JiwgZmxvYXQsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIEdyYXBoaWNzQ29udGV4dCYpOwordm9p
ZCBzdHJva2VQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgUGF0aCYsIGNvbnN0IFN0
cm9rZVNvdXJjZSYsIEdyYXBoaWNzQ29udGV4dCYpOwogdm9pZCBjbGVhclJlY3QoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmKTsKIAotdm9pZCBkcmF3R2x5cGhzKFBsYXRm
b3JtQ29udGV4dENhaXJvJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBTaGFk
b3dCbHVyVXNhZ2UmLCBjb25zdCBGbG9hdFBvaW50JiwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCosIGRv
dWJsZSwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBoX3Q+JiwgZmxvYXQsIEdyYXBoaWNzQ29udGV4
dCYpOwordm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU3Ryb2tlU291cmNlJiwg
Y29uc3QgU2hhZG93Qmx1clVzYWdlJiwgY29uc3QgRmxvYXRQb2ludCYsIGNhaXJvX3NjYWxlZF9m
b250X3QqLCBkb3VibGUsIGNvbnN0IFZlY3RvcjxjYWlyb19nbHlwaF90PiYsIGZsb2F0LCBHcmFw
aGljc0NvbnRleHQmKTsKIAogdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uLCBHcmFwaGlj
c0NvbnRleHQmKTsKIHZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWly
b19zdXJmYWNlX3QqLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKaW5kZXggMjY5ZjFhMDE2YzEwMTg5NWJl
NmQ3NTY0Y2E5NDA5MTdkYjFkMjBmOC4uZTVlNmNmZGJhOTBjOWIyYzAzMjAxZjdiOTZlYTYzNGNi
MWM2ZWQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm8uY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRy
YXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25z
dCBHCiAKICAgICBBU1NFUlQoY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0
byYgc3RhdGUgPSBjb250ZXh0LnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdHbHlwaHMoKmNvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCksIHN0YXRlLCBDYWlybzo6U2hhZG93Qmx1clVzYWdlKHN0YXRl
KSwgcG9pbnQsIHNjYWxlZEZvbnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGdseXBocywgeE9mZnNl
dCwgY29udGV4dCk7CisgICAgQ2Fpcm86OmRyYXdHbHlwaHMoKmNvbnRleHQucGxhdGZvcm1Db250
ZXh0KCksIHN0YXRlLCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJvOjpTdHJva2VTb3Vy
Y2Uoc3RhdGUpLCBDYWlybzo6U2hhZG93Qmx1clVzYWdlKHN0YXRlKSwgcG9pbnQsIHNjYWxlZEZv
bnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGdseXBocywgeE9mZnNldCwgY29udGV4dCk7CiB9CiAK
ICNpZiBFTkFCTEUoQ1NTM19URVhUX0RFQ09SQVRJT05fU0tJUF9JTkspCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAKaW5kZXggMTg1ZDhlNjg5OGU2YmM0YTUyMWFjZTU1YjRkM2MzNjQ1NGU0
MjlkNy4uNTU0ZTQzZDlhYmVjZjllYjYzZWYxMjY5YzY2ZDc5NmJmOTVkNGFiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIH0KIAogICAgIEFTU0VSVCho
YXNQbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgQ2Fpcm86OmZpbGxQYXRoKCpwbGF0Zm9ybUNvbnRl
eHQoKSwgcGF0aCwgc3RhdGUoKSwgKnRoaXMpOworICAgIENhaXJvOjpmaWxsUGF0aCgqcGxhdGZv
cm1Db250ZXh0KCksIHBhdGgsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKCkpLCAqdGhpcyk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCkBA
IC0yMDIsNyArMjAyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3Qg
UGF0aCYgcGF0aCkKICAgICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwot
ICAgIENhaXJvOjpzdHJva2VQYXRoKCpwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aCwgc3RhdGUoKSwg
KnRoaXMpOworICAgIENhaXJvOjpzdHJva2VQYXRoKCpwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aCwg
Q2Fpcm86OlN0cm9rZVNvdXJjZShzdGF0ZSgpKSwgKnRoaXMpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtMjE2LDcgKzIxNiw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBDYWlybzo6
ZmlsbFJlY3QoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBzdGF0ZSgpLCAqdGhpcyk7CisgICAg
Q2Fpcm86OmZpbGxSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgQ2Fpcm86OkZpbGxTb3Vy
Y2Uoc3RhdGUoKSksICp0aGlzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNTIzLDcgKzUy
Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgZmxvYXQgbGluZVdpZHRoKQogICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNv
bnRleHQoKSk7Ci0gICAgQ2Fpcm86OnN0cm9rZVJlY3QoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0
LCBsaW5lV2lkdGgsIHN0YXRlKCksICp0aGlzKTsKKyAgICBDYWlybzo6c3Ryb2tlUmVjdCgqcGxh
dGZvcm1Db250ZXh0KCksIHJlY3QsIGxpbmVXaWR0aCwgQ2Fpcm86OlN0cm9rZVNvdXJjZShzdGF0
ZSgpKSwgKnRoaXMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUNhcChMaW5l
Q2FwIGxpbmVDYXApCkBAIC02NzksNyArNjc5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZp
bGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQK
IAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0
aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSgqcGxhdGZv
cm1Db250ZXh0KCksIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCwgc3RhdGUsIENhaXJvOjpTaGFkb3dC
bHVyVXNhZ2Uoc3RhdGUpLCAqdGhpcyk7CisgICAgQ2Fpcm86OmZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlKCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgcm91bmRlZEhvbGVSZWN0LCBDYWlybzo6Rmls
bFNvdXJjZShzdGF0ZSksIENhaXJvOjpTaGFkb3dCbHVyVXNhZ2Uoc3RhdGUpLCAqdGhpcyk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAK
aW5kZXggZDQyNDQxNDhmMTE3NGZkZWE4YTk1ZWMwZDQ5Mjg5NjljNzAzMjhjZC4uNmEzY2M3NThm
NzZmZjY5NWY1Njk5Yjg4MWY5Y2I4ODY3ZGQ2NGY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENh
aXJvLmNwcApAQCAtMjY0LDE2ICsyNjQsMTcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlZHVjZVNv
dXJjZUJ5QWxwaGEoY2Fpcm9fdCogY3IsIGZsb2F0IGFscGhhKQogICAgIGNhaXJvX3BvcF9ncm91
cF90b19zb3VyY2UoY3IpOwogfQogCi1zdGF0aWMgdm9pZCBwcmVwYXJlQ2Fpcm9Db250ZXh0U291
cmNlKGNhaXJvX3QqIGNyLCBQYXR0ZXJuKiBwYXR0ZXJuLCBHcmFkaWVudCogZ3JhZGllbnQsIGNv
bnN0IENvbG9yJiBjb2xvciwgZmxvYXQgZ2xvYmFsQWxwaGEpCitzdGF0aWMgdm9pZCBwcmVwYXJl
Q2Fpcm9Db250ZXh0U291cmNlKGNhaXJvX3QqIGNyLCBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4s
IGNhaXJvX3BhdHRlcm5fdCogZ3JhZGllbnQsIGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgZ2xv
YmFsQWxwaGEpCiB7CiAgICAgaWYgKHBhdHRlcm4pIHsKLSAgICAgICAgUmVmUHRyPGNhaXJvX3Bh
dHRlcm5fdD4gY2Fpcm9QYXR0ZXJuID0gYWRvcHRSZWYocGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7Ci0gICAgICAgIGNhaXJvX3NldF9zb3VyY2UoY3Is
IGNhaXJvUGF0dGVybi5nZXQoKSk7CisgICAgICAgIC8vIFBhdHRlcm4gc291cmNlCisgICAgICAg
IGNhaXJvX3NldF9zb3VyY2UoY3IsIHBhdHRlcm4pOwogICAgICAgICByZWR1Y2VTb3VyY2VCeUFs
cGhhKGNyLCBnbG9iYWxBbHBoYSk7CiAgICAgfSBlbHNlIGlmIChncmFkaWVudCkgewotICAgICAg
ICBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBjYWlyb1BhdHRlcm4gPSBhZG9wdFJlZihncmFkaWVu
dC0+Y3JlYXRlUGxhdGZvcm1HcmFkaWVudChnbG9iYWxBbHBoYSkpOwotICAgICAgICBjYWlyb19z
ZXRfc291cmNlKGNyLCBjYWlyb1BhdHRlcm4uZ2V0KCkpOwotICAgIH0gZWxzZSB7IC8vIFNvbGlk
IGNvbG9yIHNvdXJjZS4KKyAgICAgICAgLy8gR3JhZGllbnQgc291cmNlCisgICAgICAgIGNhaXJv
X3NldF9zb3VyY2UoY3IsIGdyYWRpZW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBTb2xp
ZCBjb2xvciBzb3VyY2UKICAgICAgICAgaWYgKGdsb2JhbEFscGhhIDwgMSkKICAgICAgICAgICAg
IHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoY29sb3Iu
cmdiKCksIGNvbG9yLmFscGhhKCkgLyAyNTUuZiAqIGdsb2JhbEFscGhhKSk7CiAgICAgICAgIGVs
c2UKQEAgLTI4MSwzMiArMjgyLDM5IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVDYWlyb0NvbnRleHRT
b3VyY2UoY2Fpcm9fdCogY3IsIFBhdHRlcm4qIHBhdHRlcm4sIEdyYWRpZW50KiBnCiAgICAgfQog
fQogCi12b2lkIFBsYXRmb3JtQ29udGV4dENhaXJvOjpwcmVwYXJlRm9yRmlsbGluZyhjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIFBhdHRlcm5BZGp1c3RtZW50IHBhdHRlcm5BZGp1
c3RtZW50KQordm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6cHJlcGFyZUZvckZpbGxpbmcoY29u
c3QgQ2Fpcm86OkZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIFBhdHRlcm5BZGp1c3RtZW50IHBhdHRl
cm5BZGp1c3RtZW50KQogewotICAgIGNhaXJvX3NldF9maWxsX3J1bGUobV9jci5nZXQoKSwgc3Rh
dGUuZmlsbFJ1bGUgPT0gUlVMRV9FVkVOT0REID8gIENBSVJPX0ZJTExfUlVMRV9FVkVOX09ERCA6
IENBSVJPX0ZJTExfUlVMRV9XSU5ESU5HKTsKLSAgICBwcmVwYXJlQ2Fpcm9Db250ZXh0U291cmNl
KG1fY3IuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5maWxsUGF0
dGVybi5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmZpbGxHcmFk
aWVudC5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmZpbGxDb2xv
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5BZGp1c3RtZW50ID09IEFk
anVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBoYSA/IGdsb2JhbEFscGhhKCkgOiAxKTsKLQotICAgIGlm
IChzdGF0ZS5maWxsUGF0dGVybikKLSAgICAgICAgY2xpcEZvclBhdHRlcm5GaWxsaW5nKHN0YXRl
KTsKKyAgICBjYWlyb19zZXRfZmlsbF9ydWxlKG1fY3IuZ2V0KCksIGZpbGxTb3VyY2UuZmlsbFJ1
bGUgPT0gUlVMRV9FVkVOT0REID8gQ0FJUk9fRklMTF9SVUxFX0VWRU5fT0REIDogQ0FJUk9fRklM
TF9SVUxFX1dJTkRJTkcpOworCisgICAgYm9vbCBhZGp1c3RGb3JBbHBoYSA9IHBhdHRlcm5BZGp1
c3RtZW50ID09IEFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBoYTsKKworICAgIGF1dG8qIGdyYWRp
ZW50ID0gZmlsbFNvdXJjZS5ncmFkaWVudC5iYXNlLmdldCgpOworICAgIGlmIChhZGp1c3RGb3JB
bHBoYSAmJiBmaWxsU291cmNlLmdyYWRpZW50LmFscGhhQWRqdXN0ZWQpCisgICAgICAgIGdyYWRp
ZW50ID0gZmlsbFNvdXJjZS5ncmFkaWVudC5hbHBoYUFkanVzdGVkLmdldCgpOworCisgICAgcHJl
cGFyZUNhaXJvQ29udGV4dFNvdXJjZShtX2NyLmdldCgpLCBmaWxsU291cmNlLnBhdHRlcm4ub2Jq
ZWN0LmdldCgpLCBncmFkaWVudCwKKyAgICAgICAgZmlsbFNvdXJjZS5jb2xvciwgYWRqdXN0Rm9y
QWxwaGEgPyBnbG9iYWxBbHBoYSgpIDogMSk7CisKKyAgICBpZiAoZmlsbFNvdXJjZS5wYXR0ZXJu
Lm9iamVjdCkgeworICAgICAgICBjbGlwRm9yUGF0dGVybkZpbGxpbmcoZmlsbFNvdXJjZS5wYXR0
ZXJuLnNpemUsIGZpbGxTb3VyY2UucGF0dGVybi50cmFuc2Zvcm0sCisgICAgICAgICAgICBmaWxs
U291cmNlLnBhdHRlcm4ucmVwZWF0WCwgZmlsbFNvdXJjZS5wYXR0ZXJuLnJlcGVhdFkpOworICAg
IH0KIH0KIAotdm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6cHJlcGFyZUZvclN0cm9raW5nKGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgQWxwaGFQcmVzZXJ2YXRpb24gYWxwaGFQ
cmVzZXJ2YXRpb24pCit2b2lkIFBsYXRmb3JtQ29udGV4dENhaXJvOjpwcmVwYXJlRm9yU3Ryb2tp
bmcoY29uc3QgQ2Fpcm86OlN0cm9rZVNvdXJjZSYgc3Ryb2tlU291cmNlLCBBbHBoYVByZXNlcnZh
dGlvbiBhbHBoYVByZXNlcnZhdGlvbikKIHsKLSAgICBwcmVwYXJlQ2Fpcm9Db250ZXh0U291cmNl
KG1fY3IuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHJva2VQ
YXR0ZXJuLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3Ryb2tl
R3JhZGllbnQuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHJv
a2VDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhUHJlc2VydmF0aW9u
ID09IFByZXNlcnZlQWxwaGEgPyBnbG9iYWxBbHBoYSgpIDogMSk7CisgICAgYm9vbCBwcmVzZXJ2
ZUFscGhhID0gYWxwaGFQcmVzZXJ2YXRpb24gPT0gUHJlc2VydmVBbHBoYTsKKworICAgIGF1dG8q
IGdyYWRpZW50ID0gc3Ryb2tlU291cmNlLmdyYWRpZW50LmJhc2UuZ2V0KCk7CisgICAgaWYgKHBy
ZXNlcnZlQWxwaGEgJiYgc3Ryb2tlU291cmNlLmdyYWRpZW50LmFscGhhQWRqdXN0ZWQpCisgICAg
ICAgIGdyYWRpZW50ID0gc3Ryb2tlU291cmNlLmdyYWRpZW50LmFscGhhQWRqdXN0ZWQuZ2V0KCk7
CisKKyAgICBwcmVwYXJlQ2Fpcm9Db250ZXh0U291cmNlKG1fY3IuZ2V0KCksIHN0cm9rZVNvdXJj
ZS5wYXR0ZXJuLmdldCgpLCBncmFkaWVudCwKKyAgICAgICAgc3Ryb2tlU291cmNlLmNvbG9yLCBw
cmVzZXJ2ZUFscGhhID8gZ2xvYmFsQWxwaGEoKSA6IDEpOwogfQogCi12b2lkIFBsYXRmb3JtQ29u
dGV4dENhaXJvOjpjbGlwRm9yUGF0dGVybkZpbGxpbmcoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlKQordm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6Y2xpcEZvclBhdHRlcm5GaWxs
aW5nKGNvbnN0IEZsb2F0U2l6ZSYgcGF0dGVyblNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCiB7Ci0gICAgQVNT
RVJUKHN0YXRlLmZpbGxQYXR0ZXJuKTsKLQogICAgIC8vIEhvbGQgY3VycmVudCBjYWlybyBwYXRo
IGluIGEgdmFyaWFibGUgZm9yIHJlc3RvcmluZyBpdCBhZnRlciBjb25maWd1cmluZyB0aGUgcGF0
dGVybiBjbGlwIHJlY3RhbmdsZS4KICAgICBhdXRvIGN1cnJlbnRQYXRoID0gY2Fpcm9fY29weV9w
YXRoKG1fY3IuZ2V0KCkpOwogICAgIGNhaXJvX25ld19wYXRoKG1fY3IuZ2V0KCkpOwpAQCAtMzE3
LDEyICszMjUsNyBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dENhaXJvOjpjbGlwRm9yUGF0dGVybkZp
bGxpbmcoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YQogICAgIGNhaXJvX2NsaXBfZXh0
ZW50cyhtX2NyLmdldCgpLCAmeDEsICZ5MSwgJngyLCAmeTIpOwogICAgIEZsb2F0UmVjdCBjbGlw
UmVjdCh4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEpOwogCi0gICAgYXV0byYgcGF0dGVybkltYWdl
ID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwotICAgIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5wYXR0ZXJuU3BhY2VU
cmFuc2Zvcm0oKTsKLSAgICBGbG9hdFJlY3QgcGF0dGVyblJlY3QgPSBwYXR0ZXJuVHJhbnNmb3Jt
Lm1hcFJlY3QoRmxvYXRSZWN0KDAsIDAsIHBhdHRlcm5JbWFnZS53aWR0aCgpLCBwYXR0ZXJuSW1h
Z2UuaGVpZ2h0KCkpKTsKLQotICAgIGJvb2wgcmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5y
ZXBlYXRYKCk7Ci0gICAgYm9vbCByZXBlYXRZID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFko
KTsKKyAgICBGbG9hdFJlY3QgcGF0dGVyblJlY3QgPSBwYXR0ZXJuVHJhbnNmb3JtLm1hcFJlY3Qo
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgcGF0dGVyblNpemUpKTsKIAogICAgIGlmICghcmVwZWF0
WCkgewogICAgICAgICBjbGlwUmVjdC5zZXRYKHBhdHRlcm5SZWN0LngoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRD
YWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1D
b250ZXh0Q2Fpcm8uaAppbmRleCA5ZTU5NTc0Y2I0ZWE5ZmRiMjM3ZGI1NjU5MjQ2Nzg5Mzk3ZjRk
YjdlLi41NDRmMWY5MmY5NzJhNDQ4MGEzM2UyN2U4YjgzNWFlM2FkM2IxOGYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRD
YWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRm
b3JtQ29udGV4dENhaXJvLmgKQEAgLTM3LDYgKzM3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKIHN0cnVjdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTsKIAorbmFtZXNwYWNlIENhaXJvIHsKK3N0cnVjdCBGaWxsU291cmNlOworc3Ry
dWN0IFN0cm9rZVNvdXJjZTsKK30KKwogLy8gTXVjaCBsaWtlIFBsYXRmb3JtQ29udGV4dFNraWEg
aW4gdGhlIFNraWEgcG9ydCwgdGhpcyBjbGFzcyBob2xkcyBpbmZvcm1hdGlvbiB0aGF0CiAvLyB3
b3VsZCBub3JtYWxseSBiZSBwcml2YXRlIHRvIEdyYXBoaWNzQ29udGV4dCwgZXhjZXB0IHRoYXQg
d2Ugd2FudCB0byBhbGxvdyBhY2Nlc3MKIC8vIHRvIGl0IGluIEZvbnQgYW5kIEltYWdlIGNvZGUu
IFRoaXMgYWxsb3dzIHVzIHRvIHNlcGFyYXRlIHRoZSBjb25jZXJucyBvZiBDYWlyby1zcGVjaWZp
YwpAQCAtNjksMTMgKzc0LDEzIEBAIHB1YmxpYzoKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBp
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3Q7CiAKICAgICBlbnVtIFBhdHRlcm5BZGp1
c3RtZW50IHsgTm9BZGp1c3RtZW50LCBBZGp1c3RQYXR0ZXJuRm9yR2xvYmFsQWxwaGEgfTsKLSAg
ICB2b2lkIHByZXBhcmVGb3JGaWxsaW5nKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgUGF0
dGVybkFkanVzdG1lbnQpOworICAgIHZvaWQgcHJlcGFyZUZvckZpbGxpbmcoY29uc3QgQ2Fpcm86
OkZpbGxTb3VyY2UmLCBQYXR0ZXJuQWRqdXN0bWVudCk7CiAKICAgICBlbnVtIEFscGhhUHJlc2Vy
dmF0aW9uIHsgRG9Ob3RQcmVzZXJ2ZUFscGhhLCBQcmVzZXJ2ZUFscGhhIH07Ci0gICAgdm9pZCBw
cmVwYXJlRm9yU3Ryb2tpbmcoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBBbHBoYVByZXNl
cnZhdGlvbiA9IFByZXNlcnZlQWxwaGEpOworICAgIHZvaWQgcHJlcGFyZUZvclN0cm9raW5nKGNv
bnN0IENhaXJvOjpTdHJva2VTb3VyY2UmLCBBbHBoYVByZXNlcnZhdGlvbik7CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCBjbGlwRm9yUGF0dGVybkZpbGxpbmcoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmKTsKKyAgICB2b2lkIGNsaXBGb3JQYXR0ZXJuRmlsbGluZyhjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBib29sLCBib29sKTsKIAogICAgIFJlZlB0cjxjYWlyb190
PiBtX2NyOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>