<?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>214406</bug_id>
          
          <creation_ts>2020-07-16 08:19:25 -0700</creation_ts>
          <short_desc>[LFC][IFC] adjustBaselineAndLineHeight should take the parent inline box.</short_desc>
          <delta_ts>2020-08-22 19:46:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>215087</blocked>
    
    <blocked>215752</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1672112</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-07-16 08:19:25 -0700</bug_when>
    <thetext>This is a preparation for multiple line boxes on the line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672118</commentid>
    <comment_count>1</comment_count>
      <attachid>404442</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-07-16 08:57:41 -0700</bug_when>
    <thetext>Created attachment 404442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672366</commentid>
    <comment_count>2</comment_count>
      <attachid>404519</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-07-16 19:37:19 -0700</bug_when>
    <thetext>Created attachment 404519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672369</commentid>
    <comment_count>3</comment_count>
      <attachid>404522</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-07-16 19:57:04 -0700</bug_when>
    <thetext>Created attachment 404522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672376</commentid>
    <comment_count>4</comment_count>
      <attachid>404527</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-07-16 20:16:49 -0700</bug_when>
    <thetext>Created attachment 404527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674215</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-23 08:20:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/65992768&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682138</commentid>
    <comment_count>6</comment_count>
      <attachid>404527</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-08-22 10:42:38 -0700</bug_when>
    <thetext>Comment on attachment 404527
Patch

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

&gt; Source/WebCore/layout/inlineformatting/InlineLineBuilder.h:227
&gt; +    InlineBox m_lineBox;

Maybe the names should match?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682197</commentid>
    <comment_count>7</comment_count>
      <attachid>407059</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-08-22 16:26:26 -0700</bug_when>
    <thetext>Created attachment 407059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682202</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-22 18:15:06 -0700</bug_when>
    <thetext>Committed r266040: &lt;https://trac.webkit.org/changeset/266040&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407059.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682207</commentid>
    <comment_count>9</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-08-22 19:46:09 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #6)
&gt; Comment on attachment 404527 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=404527&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/inlineformatting/InlineLineBuilder.h:227
&gt; &gt; +    InlineBox m_lineBox;
&gt; 
&gt; Maybe the names should match?
Maybe they should!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404442</attachid>
            <date>2020-07-16 08:57:41 -0700</date>
            <delta_ts>2020-07-16 19:08:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214406-20200716085740.patch</filename>
            <type>text/plain</type>
            <size>42113</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY2MTliZTA4OTMwZWE5
ZDA5N2EyMjlhZTEwZTc5MDA2NDgyY2VkYS4uZTZiZDYxZDE2MDNiNzA3NjU1OTkzOGM1MDhhOTdi
YTcwZGQzNGE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTA3LTE2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBhZGp1c3RC
YXNlbGluZUFuZExpbmVIZWlnaHQgc2hvdWxkIHRha2UgdGhlIHBhcmVudCBsaW5lIGJveC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDQwNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgaW4g
cHJlcGFydGlvbiBmb3Igc3VwcG9ydGluZyBuZXN0ZWQgbGluZWJveGVzIHJlcXVpcmVkIGJ5IGNl
cnRhaW4gdmVydGljYWwgYWxpZ25tZW50IHZhbHVlcy4KKworICAgICAgICA8ZGl2PnRleHQgY29u
dGVudDwvZGl2PiA8LSBUaGlzIGNvbnRlbnQgcmVxdWlyZXMgb25seSBvbmUgbGluZWJveCwgdGhl
IHJvb3QgbGluZWJveC4KKyAgICAgICAgPGRpdj5uZXN0ZWQgPHNwYW4+PHNwYW4gc3R5bGU9InZl
cnRpY2FsLWFsaWduOiB0ZXh0LXRvcCI+dGV4dDwvc3Bhbj4gPC9zcGFuPmNvbnRlbnQ8L2Rpdj4g
PC0gdGhlIGNvbnRlbnQgW3RleHRdIGlzIHZlcnRpY2FsbHkKKyAgICAgICAgYWxpZ25lZCB3aXRo
IHRoZSB0b3Agb2YgdGhlIF9wYXJlbnQgZWxlbWVudF8ncyBmb250IGFuZCBub3QgdGhlIHJvb3Qg
aW5saW5lIGJveC4KKworICAgICAgICAxLiBMZXQncyByZW5hbWUgdGhlIExpbmVCb3hCdWlsZGVy
IHRvIExpbmVCb3guIFdlJ2xsIGhhdmUgYSBidW5jaCBvZiB0aGVzZS4KKyAgICAgICAgMi4gUGFz
cyBpbiB0aGUgcGFyZW50IGxpbmVib3ggdG8gYWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0IChj
dXJyZW50bHkgdGhlcmUncyBvbmx5IG9uZSBsaW5lIGJveCBwZXIgbGluZSkuCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpsaW5l
SGVpZ2h0Q29uc3RyYWludHMgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCb3guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3hCdWlsZGVyLmguCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2VsaW5lOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNjcm9sbGFibGVPdmVyZmxvdyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxMZWZ0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbFJpZ2h0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9naWNhbFRvcCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2ljYWxCb3R0b20gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsV2lkdGggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsSGVpZ2h0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6cmVzZXREZXNjZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZUJveDo6c2V0TG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCb3g6OnNldExvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCb3g6OnNldFNjcm9sbGFibGVPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCb3g6Om1vdmVIb3Jpem9udGFsbHkpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpMaW5lQm94OjpleHBhbmRIb3Jpem9udGFsbHkpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpMaW5lQm94OjpzaHJpbmtIb3Jpem9udGFsbHkpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpMaW5lQm94OjpleHBhbmRWZXJ0aWNhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJveDo6c2hyaW5rVmVydGljYWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmVCb3g6OmlzQ29uc2lkZXJlZEVtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUJveDo6c2V0SXNDb25zaWRlcmVkRW1wdHkpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRJc0NvbnNpZGVyZWROb25FbXB0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQm94OjpzZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZUJveDo6YmFzZWxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpMaW5lQm94OjpzZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldEFzY2VudElmR3JlYXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldERlc2NlbnRJZkdyZWF0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpiYXNlbGluZU9mZnNldCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnJlc2V0QmFzZWxpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lQm94OjpCYXNlbGluZTo6QmFzZWxpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lQm94OjpCYXNlbGluZTo6c2V0QXNjZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6OnNldERlc2NlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpCYXNlbGluZTo6cmVzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lQm94OjpCYXNlbGluZTo6YXNjZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6OmRlc2NlbnQgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmluaXRpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmxpbmVCb3ggY29uc3QpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0Lmg6CisK
IDIwMjAtMDctMTQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TEZDXVtJRkNdIFJlbW92ZSBEaXNwbGF5OjpMaW5lQm94Ojppc0NvbnNpZGVyZWRFbXB0eQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGQ3NzMyYmRiMjY3MGQ5YWMyZWI3MTVkZTBhNTM2ZjhkMDM3YThjNjUuLmZiM2ZjNjVhOTJmNGE0
N2NiMDk1YjM4ZjcxYWQwMGM5NmI1MDlhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNjIsNyArMjA2Miw3IEBACiAJCTZG
OTk1QTNBMUE3MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGOTk1QTMwMUE3MDgz
MzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCAqLzsgfTsKIAkJNkZBNDQ1
NEU4OThGMkZDMTY4QkMzOEMxIC8qIEpTQmVmb3JlVW5sb2FkRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RTA0QTI3QkVEMkY4MUY5OEU5MDIy
QiAvKiBKU0JlZm9yZVVubG9hZEV2ZW50LmggKi87IH07CiAJCTZGQjExQjVDMjE3ODNGRDAwMEUy
QTU3NCAvKiBUZXh0VXRpbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkZCMTFCNTkyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRVdGlsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNkZCMjQwMDUyM0RGRjEy
ODAwNzk2NDU4IC8qIElubGluZUxpbmVCb3hCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkIyNDAwMzIzREZGMTI3MDA3OTY0NTggLyogSW5s
aW5lTGluZUJveEJ1aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk2RkIyNDAwNTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lTGluZUJveC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCMjQwMDMy
M0RGRjEyNzAwNzk2NDU4IC8qIElubGluZUxpbmVCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkI0N0U2MzIyNzc0MjVBMDBDN0JDQjAgLyog
RGlzcGxheUxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZGQjQ3RTYxMjI3NzQyNUEwMEM3QkNCMCAvKiBEaXNwbGF5TGluZUJveC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGQjVFMjE0MjIx
RjI0NTMwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjVFMjEyMjIxRjI0NDcwMDM5ODlDRiAv
KiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk2RkNFMUExQTIyNjE4QUJEMDA0RjAzNDMgLyogRGlzcGxheVJ1
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZDRTFB
MTgyMjYxOEFCMzAwNEYwMzQzIC8qIERpc3BsYXlSdW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTQ3Myw3ICs5NDczLDcgQEAKIAkJNkZCMTFC
NTkyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRVdGlsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRleHRVdGlsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQjEx
QjVCMjE3ODNGQ0YwMEUyQTU3NCAvKiBUZXh0VXRpbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUZXh0VXRpbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZGQjIyRTMwMjMwMDk3RTMwMEMyMDg2NiAvKiBUYWJsZUdyaWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGFibGVHcmlkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZGQjI0MDAzMjNE
RkYxMjcwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbmxpbmVMaW5lQm94QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk2RkIyNDAwMzIzREZGMTI3MDA3OTY0NTggLyogSW5saW5lTGluZUJveC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVMaW5lQm94Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQjQ3RTYxMjI3NzQyNUEwMEM3QkNCMCAvKiBEaXNw
bGF5TGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlu
ZUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkI1RTIxMjIyMUYyNDQ3MDAz
OTg5Q0YgLyogQ29udGVudENoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRD
aGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkJCODYwNTIw
QjQ2NEI2MDBEQUQ5MzggLyogRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE3MTIyLDcgKzE3MTIyLDcgQEAKIAkJCQkxMTVDRkE3QzIwOEI4RTEw
MDAxRTY5OTEgLyogSW5saW5lRm9ybWF0dGluZ1N0YXRlLmggKi8sCiAJCQkJNkY3QjhDRUMyMzYy
NkU2NjAwQzlGRjE1IC8qIElubGluZUl0ZW0uY3BwICovLAogCQkJCTZGRTdDRkEwMjE3N0VFRjEw
MDVCMTU3MyAvKiBJbmxpbmVJdGVtLmggKi8sCi0JCQkJNkZCMjQwMDMyM0RGRjEyNzAwNzk2NDU4
IC8qIElubGluZUxpbmVCb3hCdWlsZGVyLmggKi8sCisJCQkJNkZCMjQwMDMyM0RGRjEyNzAwNzk2
NDU4IC8qIElubGluZUxpbmVCb3guaCAqLywKIAkJCQk2RkUxOTgxMzIxNzgzOTdCMDA0NDZGMDgg
LyogSW5saW5lTGluZUJyZWFrZXIuY3BwICovLAogCQkJCTZGRTE5ODE1MjE3ODM5N0MwMDQ0NkYw
OCAvKiBJbmxpbmVMaW5lQnJlYWtlci5oICovLAogCQkJCTZGMENENjkyMjI5RUQzMTkwMEM1OTk0
RSAvKiBJbmxpbmVMaW5lQnVpbGRlci5jcHAgKi8sCkBAIC0zMTAwNyw3ICszMTAwNyw3IEBACiAJ
CQkJMTE1Q0ZBN0UyMDhCOEUxMDAwMUU2OTkxIC8qIElubGluZUZvcm1hdHRpbmdTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkZFN0NGQTIyMTc3RUVGMjAwNUIxNTczIC8qIElubGluZUl0ZW0u
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTc4OTE2MTEyMEQ2MDgwMDYwRUNFNSAvKiBJbmxpbmVJ
dGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkZCMjQwMDUyM0RGRjEyODAwNzk2NDU4IC8q
IElubGluZUxpbmVCb3hCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RkIyNDAwNTIzREZG
MTI4MDA3OTY0NTggLyogSW5saW5lTGluZUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZFMTk4
MTcyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVha2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2RjBDRDY5NTIyOUVEMzI3MDBDNTk5NEUgLyogSW5saW5lTGluZUJ1aWxkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUY0NTc3NUNFMjQxNDM3RDUwMDJERjFBMCAvKiBJbmxpbmVQYXRoRGF0
YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1
aXJrcy5jcHAKaW5kZXggMjQyMTE2NzE4ZjA3YjZmMDI4YzBiNGNkNjQ0YmM3NGNkNDE3NGM5NC4u
ZjFjZTVlNDY1NjlhNTg2OTgxNWM5NjdkMDVlMzE2MTk2MmU5YTNlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHRRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApAQCAtODMsMTIgKzgzLDEyIEBAIExp
bmVCdWlsZGVyOjpDb25zdHJhaW50czo6SGVpZ2h0QW5kQmFzZWxpbmUgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OlF1aXJrczo6bGluCiAgICAgYXV0byBsaW5lSGVpZ2h0ID0gZm9ybWF0dGluZ1Jv
b3Quc3R5bGUoKS5saW5lSGVpZ2h0KCk7CiAgICAgaWYgKGxpbmVIZWlnaHQuaXNQZXJjZW50T3JD
YWxjdWxhdGVkKCkpIHsKICAgICAgICAgYXV0byBpbml0aWFsQmFzZWxpbmVPZmZzZXQgPSBMaW5l
QnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKGZvcm1hdHRpbmdSb290LnN0eWxlKCkuZm9udE1l
dHJpY3MoKSwgMF9sdSkuYXNjZW50KCk7Ci0gICAgICAgIHJldHVybiB7IGluaXRpYWxCYXNlbGlu
ZU9mZnNldCwgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmUg
eyBzdHJ1dEJhc2VsaW5lT2Zmc2V0LCBzdHJ1dEhlaWdodCAtIHN0cnV0QmFzZWxpbmVPZmZzZXQg
fSB9OworICAgICAgICByZXR1cm4geyBpbml0aWFsQmFzZWxpbmVPZmZzZXQsIGluaXRpYWxCYXNl
bGluZU9mZnNldCwgTGluZUJveDo6QmFzZWxpbmUgeyBzdHJ1dEJhc2VsaW5lT2Zmc2V0LCBzdHJ1
dEhlaWdodCAtIHN0cnV0QmFzZWxpbmVPZmZzZXQgfSB9OwogICAgIH0KICAgICAvLyBGSVhNRTog
VGhlIG9ubHkgcmVhc29uIHdoeSB3ZSB1c2UgaW50VmFsdWUoKSBoZXJlIGlzIHRvIG1hdGNoIGN1
cnJlbnQgaW5saW5lIHRyZWUgKGludGVncmFsKWJlaGF2aW9yLgogICAgIElubGluZUxheW91dFVu
aXQgaW5pdGlhbExpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0LmludFZhbHVlKCk7CiAgICAgYXV0byBp
bml0aWFsQmFzZWxpbmVPZmZzZXQgPSBMaW5lQnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKGZv
cm1hdHRpbmdSb290LnN0eWxlKCkuZm9udE1ldHJpY3MoKSwgaW5pdGlhbExpbmVIZWlnaHQpLmFz
Y2VudCgpOwotICAgIHJldHVybiB7IGluaXRpYWxMaW5lSGVpZ2h0LCBpbml0aWFsQmFzZWxpbmVP
ZmZzZXQsIExpbmVCb3hCdWlsZGVyOjpCYXNlbGluZSB7IHN0cnV0QmFzZWxpbmVPZmZzZXQsIHN0
cnV0SGVpZ2h0IC0gc3RydXRCYXNlbGluZU9mZnNldCB9IH07CisgICAgcmV0dXJuIHsgaW5pdGlh
bExpbmVIZWlnaHQsIGluaXRpYWxCYXNlbGluZU9mZnNldCwgTGluZUJveDo6QmFzZWxpbmUgeyBz
dHJ1dEJhc2VsaW5lT2Zmc2V0LCBzdHJ1dEhlaWdodCAtIHN0cnV0QmFzZWxpbmVPZmZzZXQgfSB9
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQm94LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTA2MGIyOGZlMWI4YjYwMjIyMDI5NDcw
ZmZhNTc4ZDIyM2QzMDQ2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaApAQCAtMCwwICsxLDI0OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NP
TlRFWFQpCisKKyNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCisjaW5jbHVkZSAiRGlzcGxheUlubGlu
ZVJlY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK2Ns
YXNzIExpbmVCb3ggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IHN0cnVjdCBCYXNlbGluZSB7CisgICAgICAgIEJhc2VsaW5lKElubGluZUxheW91dFVuaXQgYXNj
ZW50LCBJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQpOworICAgICAgICBCYXNlbGluZSgpID0gZGVm
YXVsdDsKKworICAgICAgICB2b2lkIHNldEFzY2VudChJbmxpbmVMYXlvdXRVbml0KTsKKyAgICAg
ICAgdm9pZCBzZXREZXNjZW50KElubGluZUxheW91dFVuaXQpOworCisgICAgICAgIHZvaWQgcmVz
ZXQoKTsKKworICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IGFzY2VudCgpICsgZGVzY2VudCgpOyB9CisgICAgICAgIElubGluZUxheW91dFVuaXQgYXNjZW50
KCkgY29uc3Q7CisgICAgICAgIElubGluZUxheW91dFVuaXQgZGVzY2VudCgpIGNvbnN0OworCisg
ICAgcHJpdmF0ZToKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBib29sIG1faGFzVmFsaWRB
c2NlbnQgeyBmYWxzZSB9OworICAgICAgICBib29sIG1faGFzVmFsaWREZXNjZW50IHsgZmFsc2Ug
fTsKKyNlbmRpZgorICAgICAgICBJbmxpbmVMYXlvdXRVbml0IG1fYXNjZW50IHsgMCB9OworICAg
ICAgICBJbmxpbmVMYXlvdXRVbml0IG1fZGVzY2VudCB7IDAgfTsKKyAgICB9OworCisgICAgTGlu
ZUJveChjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiwgY29uc3QgQmFzZWxpbmUmLCBJbmxpbmVM
YXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KTsKKyAgICBMaW5lQm94KCkgPSBkZWZhdWx0OworCisg
ICAgY29uc3QgRGlzcGxheTo6SW5saW5lUmVjdCYgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVy
biBtX3JlY3Q7IH0KKyAgICBjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiBzY3JvbGxhYmxlT3Zl
cmZsb3coKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVPdmVyZmxvdzsgfQorCisgICAgSW5s
aW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5sZWZ0KCk7
IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVjdC5yaWdodCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWN0LnRvcCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsQm90
dG9tKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmJvdHRvbSgpOyB9CisKKyAgICBJbmxpbmVMYXlv
dXRVbml0IGxvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC53aWR0aCgpOyB9Cisg
ICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0
LmhlaWdodCgpOyB9CisKKyAgICBjb25zdCBCYXNlbGluZSYgYmFzZWxpbmUoKSBjb25zdDsKKyAg
ICAvLyBCYXNlbGluZSBvZmZzZXQgZnJvbSBsaW5lIGxvZ2ljYWwgdG9wLiBOb3RlIHRoYXQgb2Zm
c2V0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IGVxdWFsIHRvIGFzY2VudC4KKyAgICAvLworICAgIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgbGluZSBsb2dpY2FsIHRvcCAgICAgLS0tLS0tLS0tLS0t
LS0tLS0tLSAodG9wIGFsaWduKQorICAgIC8vICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgIC8vICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgfAorICAgIC8vICAgXiAg
ICAgICAgIHwgYmFzZWxpbmUgb2Zmc2V0ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCBi
YXNlbGluZSBvZmZzZXQKKyAgICAvLyAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgICAgICAgIHwKKyAgICAvLyAgIHwgYXNjZW50ICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXNjZW50ICAgIHwKKyAgICAvLyAgIHwgICAgICAg
ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgIHYKKyAgICAv
LyAgIHYgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0t
LS0tLS0tLS0gYmFzZWxpbmUKKyAgICAvLyAgIC0tLS0tLS0tLS0tLS0tLS0tIGJhc2VsaW5lICAg
ICAgICAgICAgICAgICAgIF4KKyAgICAvLyAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgZGVzY2VudAorICAgIC8vICAgfCBkZXNjZW50ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgIC8vICAgdgorICAgIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0gICAgbGluZSBsb2dpY2FsIGJvdHRvbSAgLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg
IElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkIHNldEJh
c2VsaW5lT2Zmc2V0SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQpOworICAgIHZvaWQgc2V0QXNj
ZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQpOworICAgIHZvaWQgc2V0RGVzY2VudElmR3Jl
YXRlcihJbmxpbmVMYXlvdXRVbml0KTsKKworICAgIHZvaWQgcmVzZXRCYXNlbGluZSgpOworICAg
IHZvaWQgcmVzZXREZXNjZW50KCkgeyBtX2Jhc2VsaW5lLnNldERlc2NlbnQoMF9sdSk7IH0KKwor
ICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQp
IHsgbV9yZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KTsgfQorCisgICAgdm9pZCBzZXRMb2dp
Y2FsSGVpZ2h0SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQpOworICAgIHZvaWQgc2V0TG9naWNh
bFdpZHRoKElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKSB7IG1fcmVjdC5zZXRXaWR0aChs
b2dpY2FsV2lkdGgpOyB9CisKKyAgICB2b2lkIHNldFNjcm9sbGFibGVPdmVyZmxvdyhjb25zdCBE
aXNwbGF5OjpJbmxpbmVSZWN0JiByZWN0KSB7IG1fc2Nyb2xsYWJsZU92ZXJmbG93ID0gcmVjdDsg
fQorCisgICAgdm9pZCBtb3ZlSG9yaXpvbnRhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsg
bV9yZWN0Lm1vdmVIb3Jpem9udGFsbHkoZGVsdGEpOyB9CisKKyAgICB2b2lkIGV4cGFuZEhvcml6
b250YWxseShJbmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IG1fcmVjdC5leHBhbmRIb3Jpem9udGFs
bHkoZGVsdGEpOyB9CisgICAgdm9pZCBzaHJpbmtIb3Jpem9udGFsbHkoSW5saW5lTGF5b3V0VW5p
dCBkZWx0YSkgeyBleHBhbmRIb3Jpem9udGFsbHkoLWRlbHRhKTsgfQorCisgICAgdm9pZCBleHBh
bmRWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0LmV4cGFuZFZlcnRp
Y2FsbHkoZGVsdGEpOyB9CisgICAgdm9pZCBzaHJpbmtWZXJ0aWNhbGx5KElubGluZUxheW91dFVu
aXQgZGVsdGEpIHsgZXhwYW5kVmVydGljYWxseSgtZGVsdGEpOyB9CisKKyAgICAvLyBodHRwczov
L3d3dy53My5vcmcvVFIvQ1NTMjIvdmlzdXJlbi5odG1sI2lubGluZS1mb3JtYXR0aW5nCisgICAg
Ly8gTGluZSBib3hlcyB0aGF0IGNvbnRhaW4gbm8gdGV4dCwgbm8gcHJlc2VydmVkIHdoaXRlIHNw
YWNlLCBubyBpbmxpbmUgZWxlbWVudHMgd2l0aCBub24temVybyBtYXJnaW5zLCBwYWRkaW5nLCBv
ciBib3JkZXJzLAorICAgIC8vIGFuZCBubyBvdGhlciBpbi1mbG93IGNvbnRlbnQgKHN1Y2ggYXMg
aW1hZ2VzLCBpbmxpbmUgYmxvY2tzIG9yIGlubGluZSB0YWJsZXMpLCBhbmQgZG8gbm90IGVuZCB3
aXRoIGEgcHJlc2VydmVkIG5ld2xpbmUKKyAgICAvLyBtdXN0IGJlIHRyZWF0ZWQgYXMgemVyby1o
ZWlnaHQgbGluZSBib3hlcyBmb3IgdGhlIHB1cnBvc2VzIG9mIGRldGVybWluaW5nIHRoZSBwb3Np
dGlvbnMgb2YgYW55IGVsZW1lbnRzIGluc2lkZSBvZiB0aGVtLAorICAgIC8vIGFuZCBtdXN0IGJl
IHRyZWF0ZWQgYXMgbm90IGV4aXN0aW5nIGZvciBhbnkgb3RoZXIgcHVycG9zZS4KKyAgICAvLyBO
b3RlIHRoYXQgaXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB2aXN1YWxseSBub24tZW1wdHkg
bGluZS4gPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMHB4Ij50aGlzIGlzIHN0aWxsIGNvbnNpZGVy
ZWQgbm9uLWVtcHR5PC9zcGFuPgorICAgIGJvb2wgaXNDb25zaWRlcmVkRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX2lzQ29uc2lkZXJlZEVtcHR5OyB9CisgICAgdm9pZCBzZXRJc0NvbnNpZGVyZWRF
bXB0eSgpIHsgbV9pc0NvbnNpZGVyZWRFbXB0eSA9IHRydWU7IH0KKyAgICB2b2lkIHNldElzQ29u
c2lkZXJlZE5vbkVtcHR5KCkgeyBtX2lzQ29uc2lkZXJlZEVtcHR5ID0gZmFsc2U7IH0KKworcHJp
dmF0ZToKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgbV9oYXNWYWxpZEJhc2VsaW5lIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCB7IGZhbHNlIH07Cisj
ZW5kaWYKKyAgICBEaXNwbGF5OjpJbmxpbmVSZWN0IG1fcmVjdDsKKyAgICBEaXNwbGF5OjpJbmxp
bmVSZWN0IG1fc2Nyb2xsYWJsZU92ZXJmbG93OworICAgIEJhc2VsaW5lIG1fYmFzZWxpbmU7Cisg
ICAgSW5saW5lTGF5b3V0VW5pdCBtX2Jhc2VsaW5lT2Zmc2V0IHsgMCB9OworICAgIGJvb2wgbV9p
c0NvbnNpZGVyZWRFbXB0eSB7IHRydWUgfTsKK307CisKK2lubGluZSBMaW5lQm94OjpMaW5lQm94
KGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmIHJlY3QsIGNvbnN0IEJhc2VsaW5lJiBiYXNlbGlu
ZSwgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldCkKKyAgICA6IG1fcmVjdChyZWN0KQor
ICAgICwgbV9iYXNlbGluZShiYXNlbGluZSkKKyAgICAsIG1fYmFzZWxpbmVPZmZzZXQoYmFzZWxp
bmVPZmZzZXQpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlkQmFzZWxpbmUg
PSB0cnVlOworICAgIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCA9IHRydWU7CisjZW5kaWYKK30K
KworaW5saW5lIHZvaWQgTGluZUJveDo6c2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihJbmxpbmVM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpCit7CisgICAgaWYgKGxvZ2ljYWxIZWlnaHQgPD0gbV9y
ZWN0LmhlaWdodCgpKQorICAgICAgICByZXR1cm47CisgICAgbV9yZWN0LnNldEhlaWdodChsb2dp
Y2FsSGVpZ2h0KTsKK30KKworaW5saW5lIGNvbnN0IExpbmVCb3g6OkJhc2VsaW5lJiBMaW5lQm94
OjpiYXNlbGluZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRCYXNlbGluZSk7Cisg
ICAgcmV0dXJuIG1fYmFzZWxpbmU7Cit9CisKK2lubGluZSB2b2lkIExpbmVCb3g6OnNldEJhc2Vs
aW5lT2Zmc2V0SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQpCit7Cisj
aWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOwor
I2VuZGlmCisgICAgbV9iYXNlbGluZU9mZnNldCA9IHN0ZDo6bWF4KGJhc2VsaW5lT2Zmc2V0LCBt
X2Jhc2VsaW5lT2Zmc2V0KTsKK30KKworaW5saW5lIHZvaWQgTGluZUJveDo6c2V0QXNjZW50SWZH
cmVhdGVyKElubGluZUxheW91dFVuaXQgYXNjZW50KQoreworICAgIGlmIChhc2NlbnQgPCBtX2Jh
c2VsaW5lLmFzY2VudCgpKQorICAgICAgICByZXR1cm47CisgICAgc2V0QmFzZWxpbmVPZmZzZXRJ
ZkdyZWF0ZXIoYXNjZW50KTsKKyAgICBtX2Jhc2VsaW5lLnNldEFzY2VudChhc2NlbnQpOworfQor
CitpbmxpbmUgdm9pZCBMaW5lQm94OjpzZXREZXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVu
aXQgZGVzY2VudCkKK3sKKyAgICBpZiAoZGVzY2VudCA8IG1fYmFzZWxpbmUuZGVzY2VudCgpKQor
ICAgICAgICByZXR1cm47CisgICAgbV9iYXNlbGluZS5zZXREZXNjZW50KGRlc2NlbnQpOworfQor
CitpbmxpbmUgSW5saW5lTGF5b3V0VW5pdCBMaW5lQm94OjpiYXNlbGluZU9mZnNldCgpIGNvbnN0
Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCk7CisgICAgcmV0dXJuIG1f
YmFzZWxpbmVPZmZzZXQ7Cit9CisKK2lubGluZSB2b2lkIExpbmVCb3g6OnJlc2V0QmFzZWxpbmUo
KQoreworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0ID0g
dHJ1ZTsKKyNlbmRpZgorICAgIG1fYmFzZWxpbmVPZmZzZXQgPSAwX2x1OworICAgIG1fYmFzZWxp
bmUucmVzZXQoKTsKK30KKworaW5saW5lIExpbmVCb3g6OkJhc2VsaW5lOjpCYXNlbGluZShJbmxp
bmVMYXlvdXRVbml0IGFzY2VudCwgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KQorICAgIDogbV9h
c2NlbnQoYXNjZW50KQorICAgICwgbV9kZXNjZW50KGRlc2NlbnQpCit7CisjaWYgQVNTRVJUX0VO
QUJMRUQKKyAgICBtX2hhc1ZhbGlkQXNjZW50ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkRGVzY2Vu
dCA9IHRydWU7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgTGluZUJveDo6QmFzZWxpbmU6OnNl
dEFzY2VudChJbmxpbmVMYXlvdXRVbml0IGFzY2VudCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAor
ICAgIG1faGFzVmFsaWRBc2NlbnQgPSB0cnVlOworI2VuZGlmCisgICAgbV9hc2NlbnQgPSBhc2Nl
bnQ7Cit9CisKK2lubGluZSB2b2lkIExpbmVCb3g6OkJhc2VsaW5lOjpzZXREZXNjZW50KElubGlu
ZUxheW91dFVuaXQgZGVzY2VudCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faGFzVmFs
aWREZXNjZW50ID0gdHJ1ZTsKKyNlbmRpZgorICAgIG1fZGVzY2VudCA9IGRlc2NlbnQ7Cit9CisK
K2lubGluZSB2b2lkIExpbmVCb3g6OkJhc2VsaW5lOjpyZXNldCgpCit7CisjaWYgQVNTRVJUX0VO
QUJMRUQKKyAgICBtX2hhc1ZhbGlkQXNjZW50ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkRGVzY2Vu
dCA9IHRydWU7CisjZW5kaWYKKyAgICBtX2FzY2VudCA9IDBfbHU7CisgICAgbV9kZXNjZW50ID0g
MF9sdTsKK30KKworaW5saW5lIElubGluZUxheW91dFVuaXQgTGluZUJveDo6QmFzZWxpbmU6OmFz
Y2VudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRBc2NlbnQpOworICAgIHJldHVy
biBtX2FzY2VudDsKK30KKworaW5saW5lIElubGluZUxheW91dFVuaXQgTGluZUJveDo6QmFzZWxp
bmU6OmRlc2NlbnQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkRGVzY2VudCk7Cisg
ICAgcmV0dXJuIG1fZGVzY2VudDsKK30KKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3hCdWlsZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94
QnVpbGRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDUwOThkYjA1OTc2MTBm
ZjA0ZDIxN2Y3YmNjYTIwMjBhMWQ3ZDhhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCb3hCdWlsZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNDkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NP
TlRFWFQpCi0KLSNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCi0jaW5jbHVkZSAiRGlzcGxheUlubGlu
ZVJlY3QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIExheW91dCB7Ci0KLWNs
YXNzIExpbmVCb3hCdWlsZGVyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBzdHJ1Y3QgQmFzZWxpbmUgewotICAgICAgICBCYXNlbGluZShJbmxpbmVMYXlvdXRV
bml0IGFzY2VudCwgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KTsKLSAgICAgICAgQmFzZWxpbmUo
KSA9IGRlZmF1bHQ7Ci0KLSAgICAgICAgdm9pZCBzZXRBc2NlbnQoSW5saW5lTGF5b3V0VW5pdCk7
Ci0gICAgICAgIHZvaWQgc2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0KTsKLQotICAgICAgICB2
b2lkIHJlc2V0KCk7Ci0KLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7
IHJldHVybiBhc2NlbnQoKSArIGRlc2NlbnQoKTsgfQotICAgICAgICBJbmxpbmVMYXlvdXRVbml0
IGFzY2VudCgpIGNvbnN0OwotICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQoKSBjb25z
dDsKLQotICAgIHByaXZhdGU6Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgYm9vbCBtX2hh
c1ZhbGlkQXNjZW50IHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBtX2hhc1ZhbGlkRGVzY2VudCB7
IGZhbHNlIH07Ci0jZW5kaWYKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2FzY2VudCB7IDAg
fTsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2Rlc2NlbnQgeyAwIH07Ci0gICAgfTsKLQot
ICAgIExpbmVCb3hCdWlsZGVyKGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmLCBjb25zdCBCYXNl
bGluZSYsIElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQpOwotICAgIExpbmVCb3hCdWls
ZGVyKCkgPSBkZWZhdWx0OwotCi0gICAgY29uc3QgRGlzcGxheTo6SW5saW5lUmVjdCYgbG9naWNh
bFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KLSAgICBjb25zdCBEaXNwbGF5OjpJbmxp
bmVSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVP
dmVyZmxvdzsgfQotCi0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVjdC5sZWZ0KCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5yaWdodCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnRvcCgpOyB9Ci0gICAgSW5saW5l
TGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmJvdHRvbSgp
OyB9Ci0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVjdC53aWR0aCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9yZWN0LmhlaWdodCgpOyB9Ci0KLSAgICBjb25zdCBCYXNlbGluZSYg
YmFzZWxpbmUoKSBjb25zdDsKLSAgICAvLyBCYXNlbGluZSBvZmZzZXQgZnJvbSBsaW5lIGxvZ2lj
YWwgdG9wLiBOb3RlIHRoYXQgb2Zmc2V0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IGVxdWFsIHRvIGFz
Y2VudC4KLSAgICAvLwotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgbGluZSBsb2dpY2Fs
IHRvcCAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLSAodG9wIGFsaWduKQotICAgIC8vICAgICAgICAg
ICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotICAg
IC8vICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAgICAg
ICAgICAgfAotICAgIC8vICAgXiAgICAgICAgIHwgYmFzZWxpbmUgb2Zmc2V0ICAgICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgfCBiYXNlbGluZSBvZmZzZXQKLSAgICAvLyAgIHwgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwKLSAgICAvLyAg
IHwgYXNjZW50ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXNjZW50ICAg
IHwKLSAgICAvLyAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHYgICAgICAgICAgIHYKLSAgICAvLyAgIHYgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0gYmFzZWxpbmUKLSAgICAvLyAgIC0tLS0tLS0t
LS0tLS0tLS0tIGJhc2VsaW5lICAgICAgICAgICAgICAgICAgIF4KLSAgICAvLyAgIF4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGVzY2VudAotICAgIC8vICAg
fCBkZXNjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgotICAgIC8vICAg
dgotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgbGluZSBsb2dpY2FsIGJvdHRvbSAgLS0t
LS0tLS0tLS0tLS0tLS0tLQotICAgIElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQoKSBj
b25zdDsKLSAgICB2b2lkIHNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKElubGluZUxheW91dFVu
aXQpOwotICAgIHZvaWQgc2V0QXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQpOwotICAg
IHZvaWQgc2V0RGVzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsKLQotICAgIHZvaWQg
cmVzZXRCYXNlbGluZSgpOwotICAgIHZvaWQgcmVzZXREZXNjZW50KCkgeyBtX2Jhc2VsaW5lLnNl
dERlc2NlbnQoMF9sdSk7IH0KLQotICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodChJbmxpbmVMYXlv
dXRVbml0IGxvZ2ljYWxIZWlnaHQpIHsgbV9yZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KTsg
fQotCi0gICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQp
OwotICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRo
KSB7IG1fcmVjdC5zZXRXaWR0aChsb2dpY2FsV2lkdGgpOyB9Ci0KLSAgICB2b2lkIHNldFNjcm9s
bGFibGVPdmVyZmxvdyhjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiByZWN0KSB7IG1fc2Nyb2xs
YWJsZU92ZXJmbG93ID0gcmVjdDsgfQotCi0gICAgdm9pZCBtb3ZlSG9yaXpvbnRhbGx5KElubGlu
ZUxheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0Lm1vdmVIb3Jpem9udGFsbHkoZGVsdGEpOyB9Ci0K
LSAgICB2b2lkIGV4cGFuZEhvcml6b250YWxseShJbmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IG1f
cmVjdC5leHBhbmRIb3Jpem9udGFsbHkoZGVsdGEpOyB9Ci0gICAgdm9pZCBzaHJpbmtIb3Jpem9u
dGFsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBleHBhbmRIb3Jpem9udGFsbHkoLWRlbHRh
KTsgfQotCi0gICAgdm9pZCBleHBhbmRWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEp
IHsgbV9yZWN0LmV4cGFuZFZlcnRpY2FsbHkoZGVsdGEpOyB9Ci0gICAgdm9pZCBzaHJpbmtWZXJ0
aWNhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgZXhwYW5kVmVydGljYWxseSgtZGVsdGEp
OyB9Ci0KLSAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjIvdmlzdXJlbi5odG1sI2lu
bGluZS1mb3JtYXR0aW5nCi0gICAgLy8gTGluZSBib3hlcyB0aGF0IGNvbnRhaW4gbm8gdGV4dCwg
bm8gcHJlc2VydmVkIHdoaXRlIHNwYWNlLCBubyBpbmxpbmUgZWxlbWVudHMgd2l0aCBub24temVy
byBtYXJnaW5zLCBwYWRkaW5nLCBvciBib3JkZXJzLAotICAgIC8vIGFuZCBubyBvdGhlciBpbi1m
bG93IGNvbnRlbnQgKHN1Y2ggYXMgaW1hZ2VzLCBpbmxpbmUgYmxvY2tzIG9yIGlubGluZSB0YWJs
ZXMpLCBhbmQgZG8gbm90IGVuZCB3aXRoIGEgcHJlc2VydmVkIG5ld2xpbmUKLSAgICAvLyBtdXN0
IGJlIHRyZWF0ZWQgYXMgemVyby1oZWlnaHQgbGluZSBib3hlcyBmb3IgdGhlIHB1cnBvc2VzIG9m
IGRldGVybWluaW5nIHRoZSBwb3NpdGlvbnMgb2YgYW55IGVsZW1lbnRzIGluc2lkZSBvZiB0aGVt
LAotICAgIC8vIGFuZCBtdXN0IGJlIHRyZWF0ZWQgYXMgbm90IGV4aXN0aW5nIGZvciBhbnkgb3Ro
ZXIgcHVycG9zZS4KLSAgICAvLyBOb3RlIHRoYXQgaXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVh
biB2aXN1YWxseSBub24tZW1wdHkgbGluZS4gPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMHB4Ij50
aGlzIGlzIHN0aWxsIGNvbnNpZGVyZWQgbm9uLWVtcHR5PC9zcGFuPgotICAgIGJvb2wgaXNDb25z
aWRlcmVkRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc2lkZXJlZEVtcHR5OyB9Ci0gICAg
dm9pZCBzZXRJc0NvbnNpZGVyZWRFbXB0eSgpIHsgbV9pc0NvbnNpZGVyZWRFbXB0eSA9IHRydWU7
IH0KLSAgICB2b2lkIHNldElzQ29uc2lkZXJlZE5vbkVtcHR5KCkgeyBtX2lzQ29uc2lkZXJlZEVt
cHR5ID0gZmFsc2U7IH0KLQotcHJpdmF0ZToKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIGJvb2wg
bV9oYXNWYWxpZEJhc2VsaW5lIHsgZmFsc2UgfTsKLSAgICBib29sIG1faGFzVmFsaWRCYXNlbGlu
ZU9mZnNldCB7IGZhbHNlIH07Ci0jZW5kaWYKLSAgICBEaXNwbGF5OjpJbmxpbmVSZWN0IG1fcmVj
dDsKLSAgICBEaXNwbGF5OjpJbmxpbmVSZWN0IG1fc2Nyb2xsYWJsZU92ZXJmbG93OwotICAgIEJh
c2VsaW5lIG1fYmFzZWxpbmU7Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBtX2Jhc2VsaW5lT2Zmc2V0
IHsgMCB9OwotICAgIGJvb2wgbV9pc0NvbnNpZGVyZWRFbXB0eSB7IHRydWUgfTsKLX07Ci0KLWlu
bGluZSBMaW5lQm94QnVpbGRlcjo6TGluZUJveEJ1aWxkZXIoY29uc3QgRGlzcGxheTo6SW5saW5l
UmVjdCYgcmVjdCwgY29uc3QgQmFzZWxpbmUmIGJhc2VsaW5lLCBJbmxpbmVMYXlvdXRVbml0IGJh
c2VsaW5lT2Zmc2V0KQotICAgIDogbV9yZWN0KHJlY3QpCi0gICAgLCBtX2Jhc2VsaW5lKGJhc2Vs
aW5lKQotICAgICwgbV9iYXNlbGluZU9mZnNldChiYXNlbGluZU9mZnNldCkKLXsKLSNpZiBBU1NF
UlRfRU5BQkxFRAotICAgIG1faGFzVmFsaWRCYXNlbGluZSA9IHRydWU7Ci0gICAgbV9oYXNWYWxp
ZEJhc2VsaW5lT2Zmc2V0ID0gdHJ1ZTsKLSNlbmRpZgotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94
QnVpbGRlcjo6c2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQpCi17Ci0gICAgaWYgKGxvZ2ljYWxIZWlnaHQgPD0gbV9yZWN0LmhlaWdodCgpKQot
ICAgICAgICByZXR1cm47Ci0gICAgbV9yZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKLX0K
LQotaW5saW5lIGNvbnN0IExpbmVCb3hCdWlsZGVyOjpCYXNlbGluZSYgTGluZUJveEJ1aWxkZXI6
OmJhc2VsaW5lKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9oYXNWYWxpZEJhc2VsaW5lKTsKLSAg
ICByZXR1cm4gbV9iYXNlbGluZTsKLX0KLQotaW5saW5lIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNl
dEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQp
Ci17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0
cnVlOwotI2VuZGlmCi0gICAgbV9iYXNlbGluZU9mZnNldCA9IHN0ZDo6bWF4KGJhc2VsaW5lT2Zm
c2V0LCBtX2Jhc2VsaW5lT2Zmc2V0KTsKLX0KLQotaW5saW5lIHZvaWQgTGluZUJveEJ1aWxkZXI6
OnNldEFzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGFzY2VudCkKLXsKLSAgICBpZiAo
YXNjZW50IDwgbV9iYXNlbGluZS5hc2NlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNldEJh
c2VsaW5lT2Zmc2V0SWZHcmVhdGVyKGFzY2VudCk7Ci0gICAgbV9iYXNlbGluZS5zZXRBc2NlbnQo
YXNjZW50KTsKLX0KLQotaW5saW5lIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldERlc2NlbnRJZkdy
ZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KQotewotICAgIGlmIChkZXNjZW50IDwgbV9i
YXNlbGluZS5kZXNjZW50KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2Jhc2VsaW5lLnNldERl
c2NlbnQoZGVzY2VudCk7Ci19Ci0KLWlubGluZSBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3hCdWls
ZGVyOjpiYXNlbGluZU9mZnNldCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1faGFzVmFsaWRCYXNl
bGluZU9mZnNldCk7Ci0gICAgcmV0dXJuIG1fYmFzZWxpbmVPZmZzZXQ7Ci19Ci0KLWlubGluZSB2
b2lkIExpbmVCb3hCdWlsZGVyOjpyZXNldEJhc2VsaW5lKCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxF
RAotICAgIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2Jh
c2VsaW5lT2Zmc2V0ID0gMF9sdTsKLSAgICBtX2Jhc2VsaW5lLnJlc2V0KCk7Ci19Ci0KLWlubGlu
ZSBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmU6OkJhc2VsaW5lKElubGluZUxheW91dFVuaXQgYXNj
ZW50LCBJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQpCi0gICAgOiBtX2FzY2VudChhc2NlbnQpCi0g
ICAgLCBtX2Rlc2NlbnQoZGVzY2VudCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1faGFz
VmFsaWRBc2NlbnQgPSB0cnVlOwotICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKLSNlbmRp
ZgotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmU6OnNldEFzY2VudChJ
bmxpbmVMYXlvdXRVbml0IGFzY2VudCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1faGFz
VmFsaWRBc2NlbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgbV9hc2NlbnQgPSBhc2NlbnQ7Ci19Ci0K
LWlubGluZSB2b2lkIExpbmVCb3hCdWlsZGVyOjpCYXNlbGluZTo6c2V0RGVzY2VudChJbmxpbmVM
YXlvdXRVbml0IGRlc2NlbnQpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlk
RGVzY2VudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2Rlc2NlbnQgPSBkZXNjZW50OwotfQotCi1p
bmxpbmUgdm9pZCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmU6OnJlc2V0KCkKLXsKLSNpZiBBU1NF
UlRfRU5BQkxFRAotICAgIG1faGFzVmFsaWRBc2NlbnQgPSB0cnVlOwotICAgIG1faGFzVmFsaWRE
ZXNjZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIG1fYXNjZW50ID0gMF9sdTsKLSAgICBtX2Rlc2Nl
bnQgPSAwX2x1OwotfQotCi1pbmxpbmUgSW5saW5lTGF5b3V0VW5pdCBMaW5lQm94QnVpbGRlcjo6
QmFzZWxpbmU6OmFzY2VudCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1faGFzVmFsaWRBc2NlbnQp
OwotICAgIHJldHVybiBtX2FzY2VudDsKLX0KLQotaW5saW5lIElubGluZUxheW91dFVuaXQgTGlu
ZUJveEJ1aWxkZXI6OkJhc2VsaW5lOjpkZXNjZW50KCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9o
YXNWYWxpZERlc2NlbnQpOwotICAgIHJldHVybiBtX2Rlc2NlbnQ7Ci19Ci0KLX0KLX0KLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggMDIzNjE1OGJjYTFhMjU5ZjhhZmRlNzAz
MmI1ZTBmODUzZTFkMjk4MC4uMTU2M2ViNGU1ZTI5YjFlZTRhODk2YTI5NDFiZjIwMWMxNDE1Mzkx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtOTEsOCArOTEsOCBAQCB2b2lkIExpbmVC
dWlsZGVyOjppbml0aWFsaXplKGNvbnN0IENvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKICAgICAg
ICAgbV9pbml0aWFsU3RydXQgPSB7IH07CiAKICAgICBhdXRvIGxpbmVSZWN0ID0gRGlzcGxheTo6
SW5saW5lUmVjdCB7IGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3BMZWZ0LCAwX2x1LCBpbml0aWFsTGlu
ZUhlaWdodCB9OwotICAgIGF1dG8gYmFzZWxpbmUgPSBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmUg
eyBpbml0aWFsQmFzZWxpbmVPZmZzZXQsIGluaXRpYWxMaW5lSGVpZ2h0IC0gaW5pdGlhbEJhc2Vs
aW5lT2Zmc2V0IH07Ci0gICAgbV9saW5lQm94ID0gTGluZUJveEJ1aWxkZXIgeyBsaW5lUmVjdCwg
YmFzZWxpbmUsIGluaXRpYWxCYXNlbGluZU9mZnNldCB9OworICAgIGF1dG8gYmFzZWxpbmUgPSBM
aW5lQm94OjpCYXNlbGluZSB7IGluaXRpYWxCYXNlbGluZU9mZnNldCwgaW5pdGlhbExpbmVIZWln
aHQgLSBpbml0aWFsQmFzZWxpbmVPZmZzZXQgfTsKKyAgICBtX2xpbmVCb3ggPSBMaW5lQm94IHsg
bGluZVJlY3QsIGJhc2VsaW5lLCBpbml0aWFsQmFzZWxpbmVPZmZzZXQgfTsKICAgICBtX2xpbmVM
b2dpY2FsV2lkdGggPSBjb25zdHJhaW50cy5hdmFpbGFibGVMb2dpY2FsV2lkdGg7CiAgICAgbV9o
YXNJbnRydXNpdmVGbG9hdCA9IGNvbnN0cmFpbnRzLmxpbmVJc0NvbnN0cmFpbmVkQnlGbG9hdDsK
IApAQCAtMTExLDQ1ICsxMTEsNDQgQEAgdm9pZCBMaW5lQnVpbGRlcjo6cmVzZXRDb250ZW50KCkK
IExpbmVCdWlsZGVyOjpSdW5MaXN0IExpbmVCdWlsZGVyOjpjbG9zZShJc0xhc3RMaW5lV2l0aElu
bGluZUNvbnRlbnQgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KQogewogICAgIC8vIDEuIFJl
bW92ZSB0cmltbWFibGUgdHJhaWxpbmcgY29udGVudC4KLSAgICAvLyAyLiBKb2luIHRleHQgcnVu
cyB0b2dldGhlciB3aGVuIHBvc3NpYmxlIFtmb29dWyBdW2Jhcl0gLT4gW2ZvbyBiYXJdLgotICAg
IC8vIDMuIEFsaWduIG1lcmdlZCBydW5zIGJvdGggdmVydGljYWxseSBhbmQgaG9yaXpvbnRhbGx5
LgorICAgIC8vIDIuIEFsaWduIG1lcmdlZCBydW5zIGJvdGggdmVydGljYWxseSBhbmQgaG9yaXpv
bnRhbGx5LgogICAgIHJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCgpOwogICAgIHZpc3Vh
bGx5Q29sbGFwc2VQcmVXcmFwT3ZlcmZsb3dDb250ZW50KCk7Ci0gICAgYXV0byBoYW5naW5nQ29u
dGVudCA9IGNvbGxlY3RIYW5naW5nQ29udGVudChpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQp
OworICAgIGlmIChtX2lzSW50cmluc2ljU2l6aW5nKQorICAgICAgICByZXR1cm4gV1RGTW92ZSht
X3J1bnMpOwogCi0gICAgaWYgKCFtX2lzSW50cmluc2ljU2l6aW5nKSB7Ci0gICAgICAgIHVuc2ln
bmVkIGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbCA9IDA7Ci0gICAgICAgIGF1dG8gaGFzU2Vl
blRleHRPckxpbmVCcmVhayA9IGZhbHNlOwotICAgICAgICBmb3IgKGF1dG8mIHJ1biA6IG1fcnVu
cykgewotICAgICAgICAgICAgcnVuLnNldExvZ2ljYWxIZWlnaHQocnVuQ29udGVudEhlaWdodChy
dW4pKTsKLSAgICAgICAgICAgIGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbCA9IHJ1bi5pc0Nv
bnRhaW5lclN0YXJ0KCkgPyBpbmxpbmVDb250YWluZXJOZXN0aW5nTGV2ZWwgKyAxIDogcnVuLmlz
Q29udGFpbmVyRW5kKCkgPyBpbmxpbmVDb250YWluZXJOZXN0aW5nTGV2ZWwgLSAxIDogaW5saW5l
Q29udGFpbmVyTmVzdGluZ0xldmVsOwotICAgICAgICAgICAgYXV0byBydW5Jc1RleHRPckxpbmVC
cmVhayA9IHJ1bi5pc1RleHQoKSB8fCBydW4uaXNMaW5lQnJlYWsoKTsKLSAgICAgICAgICAgIGlm
IChydW5Jc1RleHRPckxpbmVCcmVhaykgewotICAgICAgICAgICAgICAgIC8vIEZvciB0ZXh0IGNv
bnRlbnQgd2Ugc2V0IHRoZSBiYXNlbGluZSBlaXRoZXIgdGhyb3VnaCB0aGUgaW5pdGlhbCBzdHJ1
dCAoc2V0IGJ5IHRoZSBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdCkgb3IKLSAgICAgICAgICAgICAg
ICAvLyB0aHJvdWdoIHRoZSBpbmxpbmUgY29udGFpbmVyIChzdGFydCkuIE5vcm1hbGx5IHRoZSB0
ZXh0IGNvbnRlbnQgaXRzZWxmIGRvZXMgbm90IHN0cmV0Y2ggdGhlIGxpbmUuCi0gICAgICAgICAg
ICAgICAgaWYgKGhhc1NlZW5UZXh0T3JMaW5lQnJlYWspCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgICAgIGhhc1NlZW5UZXh0T3JMaW5lQnJlYWsgPSB0cnVlOwot
ICAgICAgICAgICAgICAgIGlmICghbV9pbml0aWFsU3RydXQpCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDb250YWluZXJOZXN0aW5nTGV2
ZWwpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYXV0byYgdXNlZEJhc2VsaW5lID0gcnVuSXNUZXh0T3JMaW5lQnJlYWsgPyAqbV9pbml0
aWFsU3RydXQgOiBtX2xpbmVCb3guYmFzZWxpbmUoKTsKLSAgICAgICAgICAgIGFkanVzdEJhc2Vs
aW5lQW5kTGluZUhlaWdodChydW4sIHVzZWRCYXNlbGluZSk7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKGlzVmlzdWFsbHlFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtX2xpbmVCb3gucmVzZXRCYXNl
bGluZSgpOwotICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHQoeyB9KTsKLSAg
ICAgICAgfQotICAgICAgICAvLyBSZW1vdmUgZGVzY2VudCB3aGVuIGFsbCBjb250ZW50IGlzIGJh
c2VsaW5lIGFsaWduZWQgYnV0IG5vbmUgb2YgdGhlbSBoYXZlIGRlc2NlbnQuCi0gICAgICAgIGlm
IChmb3JtYXR0aW5nQ29udGV4dCgpLnF1aXJrcygpLmxpbmVEZXNjZW50TmVlZHNDb2xsYXBzaW5n
KG1fcnVucykpIHsKLSAgICAgICAgICAgIG1fbGluZUJveC5zaHJpbmtWZXJ0aWNhbGx5KG1fbGlu
ZUJveC5iYXNlbGluZSgpLmRlc2NlbnQoKSk7Ci0gICAgICAgICAgICBtX2xpbmVCb3gucmVzZXRE
ZXNjZW50KCk7CisgICAgYXV0byBoYW5naW5nQ29udGVudCA9IGNvbGxlY3RIYW5naW5nQ29udGVu
dChpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpOworICAgIHVuc2lnbmVkIGlubGluZUNvbnRh
aW5lck5lc3RpbmdMZXZlbCA9IDA7CisgICAgYXV0byBoYXNTZWVuVGV4dE9yTGluZUJyZWFrID0g
ZmFsc2U7CisgICAgZm9yIChhdXRvJiBydW4gOiBtX3J1bnMpIHsKKyAgICAgICAgcnVuLnNldExv
Z2ljYWxIZWlnaHQocnVuQ29udGVudEhlaWdodChydW4pKTsKKyAgICAgICAgaW5saW5lQ29udGFp
bmVyTmVzdGluZ0xldmVsID0gcnVuLmlzQ29udGFpbmVyU3RhcnQoKSA/IGlubGluZUNvbnRhaW5l
ck5lc3RpbmdMZXZlbCArIDEgOiBydW4uaXNDb250YWluZXJFbmQoKSA/IGlubGluZUNvbnRhaW5l
ck5lc3RpbmdMZXZlbCAtIDEgOiBpbmxpbmVDb250YWluZXJOZXN0aW5nTGV2ZWw7CisgICAgICAg
IGF1dG8gcnVuSXNUZXh0T3JMaW5lQnJlYWsgPSBydW4uaXNUZXh0KCkgfHwgcnVuLmlzTGluZUJy
ZWFrKCk7CisgICAgICAgIGlmIChydW5Jc1RleHRPckxpbmVCcmVhaykgeworICAgICAgICAgICAg
Ly8gRm9yIHRleHQgY29udGVudCB3ZSBzZXQgdGhlIGJhc2VsaW5lIGVpdGhlciB0aHJvdWdoIHRo
ZSBpbml0aWFsIHN0cnV0IChzZXQgYnkgdGhlIGZvcm1hdHRpbmcgY29udGV4dCByb290KSBvcgor
ICAgICAgICAgICAgLy8gdGhyb3VnaCB0aGUgaW5saW5lIGNvbnRhaW5lciAoc3RhcnQpLiBOb3Jt
YWxseSB0aGUgdGV4dCBjb250ZW50IGl0c2VsZiBkb2VzIG5vdCBzdHJldGNoIHRoZSBsaW5lLgor
ICAgICAgICAgICAgaWYgKGhhc1NlZW5UZXh0T3JMaW5lQnJlYWspCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICBoYXNTZWVuVGV4dE9yTGluZUJyZWFrID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGlmICghbV9pbml0aWFsU3RydXQpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICBpZiAoaW5saW5lQ29udGFpbmVyTmVzdGluZ0xldmVsKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGFsaWduQ29udGVudFZlcnRpY2Fs
bHkoKTsKLSAgICAgICAgYWxpZ25Ib3Jpem9udGFsbHkoaGFuZ2luZ0NvbnRlbnQsIGlzTGFzdExp
bmVXaXRoSW5saW5lQ29udGVudCk7CisgICAgICAgIGF1dG8mIHVzZWRCYXNlbGluZSA9IHJ1bklz
VGV4dE9yTGluZUJyZWFrID8gKm1faW5pdGlhbFN0cnV0IDogbV9saW5lQm94LmJhc2VsaW5lKCk7
CisgICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChydW4sIG1fbGluZUJveCwgdXNl
ZEJhc2VsaW5lKTsKKyAgICB9CisgICAgaWYgKGlzVmlzdWFsbHlFbXB0eSgpKSB7CisgICAgICAg
IG1fbGluZUJveC5yZXNldEJhc2VsaW5lKCk7CisgICAgICAgIG1fbGluZUJveC5zZXRMb2dpY2Fs
SGVpZ2h0KHsgfSk7CisgICAgfQorICAgIC8vIFJlbW92ZSBkZXNjZW50IHdoZW4gYWxsIGNvbnRl
bnQgaXMgYmFzZWxpbmUgYWxpZ25lZCBidXQgbm9uZSBvZiB0aGVtIGhhdmUgZGVzY2VudC4KKyAg
ICBpZiAoZm9ybWF0dGluZ0NvbnRleHQoKS5xdWlya3MoKS5saW5lRGVzY2VudE5lZWRzQ29sbGFw
c2luZyhtX3J1bnMpKSB7CisgICAgICAgIG1fbGluZUJveC5zaHJpbmtWZXJ0aWNhbGx5KG1fbGlu
ZUJveC5iYXNlbGluZSgpLmRlc2NlbnQoKSk7CisgICAgICAgIG1fbGluZUJveC5yZXNldERlc2Nl
bnQoKTsKICAgICB9CisgICAgYWxpZ25Db250ZW50VmVydGljYWxseSgpOworICAgIGFsaWduSG9y
aXpvbnRhbGx5KGhhbmdpbmdDb250ZW50LCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpOwog
ICAgIHJldHVybiBXVEZNb3ZlKG1fcnVucyk7CiB9CiAKQEAgLTU2OSwxMiArNTY4LDEyIEBAIHZv
aWQgTGluZUJ1aWxkZXI6OmFwcGVuZExpbmVCcmVhayhjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJ
dGVtKQogICAgIG1fcnVucy5hcHBlbmQoeyBkb3duY2FzdDxJbmxpbmVTb2Z0TGluZUJyZWFrSXRl
bT4oaW5saW5lSXRlbSksIGNvbnRlbnRMb2dpY2FsV2lkdGgoKSB9KTsKIH0KIAotdm9pZCBMaW5l
QnVpbGRlcjo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IFJ1biYgcnVuLCBjb25z
dCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmUmIHVzZWRCYXNlbGluZSkKK3ZvaWQgTGluZUJ1aWxk
ZXI6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25zdCBSdW4mIHJ1biwgTGluZUJveCYg
cGFyZW50TGluZUJveCwgY29uc3QgTGluZUJveDo6QmFzZWxpbmUmIHVzZWRCYXNlbGluZSkKIHsK
ICAgICBpZiAocnVuLmlzVGV4dCgpIHx8IHJ1bi5pc0xpbmVCcmVhaygpKSB7Ci0gICAgICAgIG1f
bGluZUJveC5zZXRBc2NlbnRJZkdyZWF0ZXIodXNlZEJhc2VsaW5lLmFzY2VudCgpKTsKLSAgICAg
ICAgbV9saW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIodXNlZEJhc2VsaW5lLmRlc2NlbnQoKSk7
Ci0gICAgICAgIG1fbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKHVzZWRCYXNlbGlu
ZS5oZWlnaHQoKSk7CisgICAgICAgIHBhcmVudExpbmVCb3guc2V0QXNjZW50SWZHcmVhdGVyKHVz
ZWRCYXNlbGluZS5hc2NlbnQoKSk7CisgICAgICAgIHBhcmVudExpbmVCb3guc2V0RGVzY2VudElm
R3JlYXRlcih1c2VkQmFzZWxpbmUuZGVzY2VudCgpKTsKKyAgICAgICAgcGFyZW50TGluZUJveC5z
ZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKHVzZWRCYXNlbGluZS5oZWlnaHQoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTU4OCwxMiArNTg3LDEyIEBAIHZvaWQgTGluZUJ1aWxkZXI6
OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25zdCBSdW4mIHJ1biwgY29uc3QgTGluZUJv
eEJ1aWxkCiAgICAgICAgICAgICBhdXRvIGhhbGZMZWFkaW5nID0gaGFsZkxlYWRpbmdNZXRyaWNz
KGZvbnRNZXRyaWNzLCBzdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKSk7CiAgICAgICAgICAgICAv
LyBCb3RoIGhhbGZsZWFkaW5nIGFzY2VudCBhbmQgZGVzY2VudCBjb3VsZCBiZSBuZWdhdGl2ZSAo
dGFsbCBmb250IHZzLiBzbWFsbCBsaW5lLWhlaWdodCB2YWx1ZSkKICAgICAgICAgICAgIGlmICho
YWxmTGVhZGluZy5kZXNjZW50KCkgPiAwKQotICAgICAgICAgICAgICAgIG1fbGluZUJveC5zZXRE
ZXNjZW50SWZHcmVhdGVyKGhhbGZMZWFkaW5nLmRlc2NlbnQoKSk7CisgICAgICAgICAgICAgICAg
cGFyZW50TGluZUJveC5zZXREZXNjZW50SWZHcmVhdGVyKGhhbGZMZWFkaW5nLmRlc2NlbnQoKSk7
CiAgICAgICAgICAgICBpZiAoaGFsZkxlYWRpbmcuYXNjZW50KCkgPiAwKQotICAgICAgICAgICAg
ICAgIG1fbGluZUJveC5zZXRBc2NlbnRJZkdyZWF0ZXIoaGFsZkxlYWRpbmcuYXNjZW50KCkpOwot
ICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIodXNlZEJhc2Vs
aW5lLmhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICBwYXJlbnRMaW5lQm94LnNldEFzY2VudElm
R3JlYXRlcihoYWxmTGVhZGluZy5hc2NlbnQoKSk7CisgICAgICAgICAgICBwYXJlbnRMaW5lQm94
LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIodXNlZEJhc2VsaW5lLmhlaWdodCgpKTsKICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRl
cihmb250TWV0cmljcy5oZWlnaHQoKSk7CisgICAgICAgICAgICBwYXJlbnRMaW5lQm94LnNldExv
Z2ljYWxIZWlnaHRJZkdyZWF0ZXIoZm9udE1ldHJpY3MuaGVpZ2h0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC02MTYsMjggKzYxNSwyOCBAQCB2b2lkIExpbmVCdWlsZGVyOjphZGp1
c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgUnVuJiBydW4sIGNvbnN0IExpbmVCb3hCdWls
ZAogICAgICAgICAgICAgICAgIGF1dG8gaW5saW5lQmxvY2tCYXNlbGluZSA9IGxhc3RMaW5lQm94
LmJhc2VsaW5lKCk7CiAgICAgICAgICAgICAgICAgYXV0byBiZWZvcmVIZWlnaHQgPSBib3hHZW9t
ZXRyeS5tYXJnaW5CZWZvcmUoKSArIGJveEdlb21ldHJ5LmJvcmRlclRvcCgpICsgYm94R2VvbWV0
cnkucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7CiAKLSAgICAgICAgICAgICAgICBtX2xpbmVCb3gu
c2V0QXNjZW50SWZHcmVhdGVyKGlubGluZUJsb2NrQmFzZWxpbmUuYXNjZW50KCkpOwotICAgICAg
ICAgICAgICAgIG1fbGluZUJveC5zZXREZXNjZW50SWZHcmVhdGVyKGlubGluZUJsb2NrQmFzZWxp
bmUuZGVzY2VudCgpKTsKLSAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0QmFzZWxpbmVPZmZz
ZXRJZkdyZWF0ZXIoYmVmb3JlSGVpZ2h0ICsgbGFzdExpbmVCb3guYmFzZWxpbmVPZmZzZXQoKSk7
Ci0gICAgICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIobWFy
Z2luQm94SGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBwYXJlbnRMaW5lQm94LnNldEFzY2VudElm
R3JlYXRlcihpbmxpbmVCbG9ja0Jhc2VsaW5lLmFzY2VudCgpKTsKKyAgICAgICAgICAgICAgICBw
YXJlbnRMaW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIoaW5saW5lQmxvY2tCYXNlbGluZS5kZXNj
ZW50KCkpOworICAgICAgICAgICAgICAgIHBhcmVudExpbmVCb3guc2V0QmFzZWxpbmVPZmZzZXRJ
ZkdyZWF0ZXIoYmVmb3JlSGVpZ2h0ICsgbGFzdExpbmVCb3guYmFzZWxpbmVPZmZzZXQoKSk7Cisg
ICAgICAgICAgICAgICAgcGFyZW50TGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKG1h
cmdpbkJveEhlaWdodCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8v
IE5vbiBpbmxpbmUtYmxvY2sgYm94ZXMgc2l0IG9uIHRoZSBiYXNlbGluZSAoaW5jbHVkaW5nIHRo
ZWlyIGJvdHRvbSBtYXJnaW4pLgotICAgICAgICAgICAgICAgIG1fbGluZUJveC5zZXRBc2NlbnRJ
ZkdyZWF0ZXIobWFyZ2luQm94SGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBwYXJlbnRMaW5lQm94
LnNldEFzY2VudElmR3JlYXRlcihtYXJnaW5Cb3hIZWlnaHQpOwogICAgICAgICAgICAgICAgIC8v
IElnbm9yZSBuZWdhdGl2ZSBkZXNjZW50ICh5ZXMsIG5lZ2F0aXZlIGRlc2NlbnQgaXMgYSB0aGlu
ZykuCi0gICAgICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIo
bWFyZ2luQm94SGVpZ2h0ICsgc3RkOjptYXg8SW5saW5lTGF5b3V0VW5pdD4oMCwgdXNlZEJhc2Vs
aW5lLmRlc2NlbnQoKSkpOworICAgICAgICAgICAgICAgIHBhcmVudExpbmVCb3guc2V0TG9naWNh
bEhlaWdodElmR3JlYXRlcihtYXJnaW5Cb3hIZWlnaHQgKyBzdGQ6Om1heDxJbmxpbmVMYXlvdXRV
bml0PigwLCB1c2VkQmFzZWxpbmUuZGVzY2VudCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDoK
ICAgICAgICAgICAgIC8vIFRvcCBhbGlnbiBjb250ZW50IG5ldmVyIGNoYW5nZXMgdGhlIGJhc2Vs
aW5lLCBpdCBvbmx5IHB1c2hlcyB0aGUgYm90dG9tIG9mIHRoZSBsaW5lIGZ1cnRoZXIgZG93bi4K
LSAgICAgICAgICAgIG1fbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKG1hcmdpbkJv
eEhlaWdodCk7CisgICAgICAgICAgICBwYXJlbnRMaW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdy
ZWF0ZXIobWFyZ2luQm94SGVpZ2h0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFZlcnRpY2FsQWxpZ246OkJvdHRvbTogewogICAgICAgICAgICAgLy8gQm90dG9tIGFsaWduZWQs
IHRhbGwgY29udGVudCBwdXNoZXMgdGhlIGJhc2VsaW5lIGZ1cnRoZXIgZG93biBmcm9tIHRoZSBs
aW5lIHRvcC4KLSAgICAgICAgICAgIGF1dG8gbGluZUxvZ2ljYWxIZWlnaHQgPSBtX2xpbmVCb3gu
bG9naWNhbEhlaWdodCgpOworICAgICAgICAgICAgYXV0byBsaW5lTG9naWNhbEhlaWdodCA9IHBh
cmVudExpbmVCb3gubG9naWNhbEhlaWdodCgpOwogICAgICAgICAgICAgaWYgKG1hcmdpbkJveEhl
aWdodCA+IGxpbmVMb2dpY2FsSGVpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgbV9saW5lQm94LnNl
dExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIobWFyZ2luQm94SGVpZ2h0KTsKLSAgICAgICAgICAgICAg
ICBtX2xpbmVCb3guc2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIobV9saW5lQm94LmJhc2VsaW5l
T2Zmc2V0KCkgKyAobWFyZ2luQm94SGVpZ2h0IC0gbGluZUxvZ2ljYWxIZWlnaHQpKTsKKyAgICAg
ICAgICAgICAgICBwYXJlbnRMaW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIobWFyZ2lu
Qm94SGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBwYXJlbnRMaW5lQm94LnNldEJhc2VsaW5lT2Zm
c2V0SWZHcmVhdGVyKHBhcmVudExpbmVCb3guYmFzZWxpbmVPZmZzZXQoKSArIChtYXJnaW5Cb3hI
ZWlnaHQgLSBsaW5lTG9naWNhbEhlaWdodCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTcwMyw3ICs3MDIsNyBAQCBib29sIExpbmVCdWlsZGVyOjpp
c1Zpc3VhbGx5Tm9uRW1wdHkoY29uc3QgUnVuJiBydW4pIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1MaW5lQm94QnVpbGRlcjo6QmFzZWxpbmUgTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5n
TWV0cmljcyhjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIElubGluZUxheW91dFVuaXQg
bGluZUxvZ2ljYWxIZWlnaHQpCitMaW5lQm94OjpCYXNlbGluZSBMaW5lQnVpbGRlcjo6aGFsZkxl
YWRpbmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcywgSW5saW5lTGF5b3V0
VW5pdCBsaW5lTG9naWNhbEhlaWdodCkKIHsKICAgICBhdXRvIGFzY2VudCA9IGZvbnRNZXRyaWNz
LmFzY2VudCgpOwogICAgIGF1dG8gZGVzY2VudCA9IGZvbnRNZXRyaWNzLmRlc2NlbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQnVpbGRlci5oCmluZGV4IGI4YWMwYjFjNTEzMjkxN2YxMTA4NzJhNDgwMDdhOWViMzFh
ZjM3YTkuLmMyYzNiNmRmYzUwY2Q5MTdlY2QyYjllMjY2MGRlYTg1NWI3ZDkzMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWls
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZUJ1aWxkZXIuaApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiRGlzcGxheVJ1bi5o
IgogI2luY2x1ZGUgIklubGluZUl0ZW0uaCIKLSNpbmNsdWRlICJJbmxpbmVMaW5lQm94QnVpbGRl
ci5oIgorI2luY2x1ZGUgIklubGluZUxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0SXRl
bS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgc3RydWN0IEhlaWdodEFuZEJhc2VsaW5lIHsKICAgICAgICAgICAgIElubGluZUxheW91
dFVuaXQgaGVpZ2h0IHsgMCB9OwogICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGlu
ZU9mZnNldCB7IDAgfTsKLSAgICAgICAgICAgIE9wdGlvbmFsPExpbmVCb3hCdWlsZGVyOjpCYXNl
bGluZT4gc3RydXQ7CisgICAgICAgICAgICBPcHRpb25hbDxMaW5lQm94OjpCYXNlbGluZT4gc3Ry
dXQ7CiAgICAgICAgIH07CiAgICAgICAgIE9wdGlvbmFsPEhlaWdodEFuZEJhc2VsaW5lPiBoZWln
aHRBbmRCYXNlbGluZTsKICAgICB9OwpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgSW5s
aW5lTGF5b3V0VW5pdCB0cmltbWFibGVUcmFpbGluZ1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV90
cmltbWFibGVUcmFpbGluZ0NvbnRlbnQud2lkdGgoKTsgfQogICAgIGJvb2wgaXNUcmFpbGluZ1J1
bkZ1bGx5VHJpbW1hYmxlKCkgY29uc3QgeyByZXR1cm4gbV90cmltbWFibGVUcmFpbGluZ0NvbnRl
bnQuaXNUcmFpbGluZ1J1bkZ1bGx5VHJpbW1hYmxlKCk7IH0KIAotICAgIGNvbnN0IExpbmVCb3hC
dWlsZGVyJiBsaW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94OyB9CisgICAgY29uc3Qg
TGluZUJveCYgbGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveDsgfQogICAgIHZvaWQg
bW92ZUxvZ2ljYWxMZWZ0KElubGluZUxheW91dFVuaXQpOwogICAgIHZvaWQgbW92ZUxvZ2ljYWxS
aWdodChJbmxpbmVMYXlvdXRVbml0KTsKICAgICB2b2lkIHNldEhhc0ludHJ1c2l2ZUZsb2F0KCkg
eyBtX2hhc0ludHJ1c2l2ZUZsb2F0ID0gdHJ1ZTsgfQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1Ymxp
YzoKICAgICBlbnVtIGNsYXNzIElzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCB7IE5vLCBZZXMg
fTsKICAgICBSdW5MaXN0IGNsb3NlKElzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCA9IElzTGFz
dExpbmVXaXRoSW5saW5lQ29udGVudDo6Tm8pOwogCi0gICAgc3RhdGljIExpbmVCb3hCdWlsZGVy
OjpCYXNlbGluZSBoYWxmTGVhZGluZ01ldHJpY3MoY29uc3QgRm9udE1ldHJpY3MmLCBJbmxpbmVM
YXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0KTsKKyAgICBzdGF0aWMgTGluZUJveDo6QmFzZWxp
bmUgaGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRyaWNzJiwgSW5saW5lTGF5b3V0VW5p
dCBsaW5lTG9naWNhbEhlaWdodCk7CiAKIHByaXZhdGU6CiAgICAgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94LmxvZ2ljYWxUb3AoKTsgfQpAQCAt
MTgzLDcgKzE4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhbGlnbkhvcml6b250YWxseShjb25z
dCBIYW5naW5nQ29udGVudCYsIElzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCk7CiAgICAgdm9p
ZCBhbGlnbkNvbnRlbnRWZXJ0aWNhbGx5KCk7CiAKLSAgICB2b2lkIGFkanVzdEJhc2VsaW5lQW5k
TGluZUhlaWdodChjb25zdCBSdW4mLCBjb25zdCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmUmKTsK
KyAgICB2b2lkIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25zdCBSdW4mLCBMaW5lQm94
JiBwYXJlbnRMaW5lQm94LCBjb25zdCBMaW5lQm94OjpCYXNlbGluZSYpOwogICAgIElubGluZUxh
eW91dFVuaXQgcnVuQ29udGVudEhlaWdodChjb25zdCBSdW4mKSBjb25zdDsKIAogICAgIHZvaWQg
anVzdGlmeVJ1bnMoSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCk7CkBAIC0yMTksMTIg
KzIxOSwxMiBAQCBwcml2YXRlOgogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBt
X2lubGluZUZvcm1hdHRpbmdDb250ZXh0OwogICAgIFJ1bkxpc3QgbV9ydW5zOwogICAgIFRyaW1t
YWJsZVRyYWlsaW5nQ29udGVudCBtX3RyaW1tYWJsZVRyYWlsaW5nQ29udGVudDsKLSAgICBPcHRp
b25hbDxMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmU+IG1faW5pdGlhbFN0cnV0OworICAgIE9wdGlv
bmFsPExpbmVCb3g6OkJhc2VsaW5lPiBtX2luaXRpYWxTdHJ1dDsKICAgICBJbmxpbmVMYXlvdXRV
bml0IG1fbGluZUxvZ2ljYWxXaWR0aCB7IDAgfTsKICAgICBPcHRpb25hbDxUZXh0QWxpZ25Nb2Rl
PiBtX2hvcml6b250YWxBbGlnbm1lbnQ7CiAgICAgYm9vbCBtX2lzSW50cmluc2ljU2l6aW5nIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faGFzSW50cnVzaXZlRmxvYXQgeyBmYWxzZSB9OwotICAgIExp
bmVCb3hCdWlsZGVyIG1fbGluZUJveDsKKyAgICBMaW5lQm94IG1fbGluZUJveDsKICAgICBPcHRp
b25hbDxib29sPiBtX2xpbmVJc1Zpc3VhbGx5RW1wdHlCZWZvcmVUcmltbWFibGVUcmFpbGluZ0Nv
bnRlbnQ7CiAgICAgYm9vbCBtX3Nob3VsZElnbm9yZVRyYWlsaW5nTGV0dGVyU3BhY2luZyB7IGZh
bHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvTGluZUxheW91dENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKaW5kZXggNWVlNWQ1Zjc2YmNlYzQyMTU1NjU5
ZTZjNmQyNmUzNWI0NDQ4ODU0Zi4uMzFmZjg2YmZkMjQzM2EwMDRjZTIwNTU3MGQyODk4NzI1NWE2
ZmMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
TGluZUxheW91dENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgdXNpbmcgRmxvYXRMaXN0ID0gVmVjdG9yPEZsb2F0PjsKICAgICAgICAgRmxvYXRMaXN0
IGZsb2F0czsKICAgICAgICAgY29uc3QgTGluZUJ1aWxkZXI6OlJ1bkxpc3QgcnVuTGlzdDsKLSAg
ICAgICAgY29uc3QgTGluZUJveEJ1aWxkZXIgbGluZUJveDsKKyAgICAgICAgY29uc3QgTGluZUJv
eCBsaW5lQm94OwogICAgIH07CiAgICAgc3RydWN0IElubGluZUl0ZW1SYW5nZSB7CiAgICAgICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0ID09IGVuZDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404519</attachid>
            <date>2020-07-16 19:37:19 -0700</date>
            <delta_ts>2020-07-16 19:57:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214406-20200716193718.patch</filename>
            <type>text/plain</type>
            <size>42249</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY2MTliZTA4OTMwZWE5
ZDA5N2EyMjlhZTEwZTc5MDA2NDgyY2VkYS4uODMyYzExNTA0OWJkZGFhYTJkYjUzYzcxMTQ0NTdi
MDE4ODBkMGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTA3LTE2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBhZGp1c3RC
YXNlbGluZUFuZExpbmVIZWlnaHQgc2hvdWxkIHRha2UgdGhlIHBhcmVudCBpbmxpbmUgYm94Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NDA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBp
biBwcmVwYXJ0aW9uIGZvciBzdXBwb3J0aW5nIG5lc3RlZCBsaW5lYm94ZXMgcmVxdWlyZWQgYnkg
Y2VydGFpbiB2ZXJ0aWNhbCBhbGlnbm1lbnQgdmFsdWVzLgorCisgICAgICAgIDxkaXY+dGV4dCBj
b250ZW50PC9kaXY+IDwtIFRoaXMgY29udGVudCByZXF1aXJlcyBvbmx5IG9uZSBpbmxpbmUgYm94
LCB0aGUgcm9vdCBsaW5lYm94LgorICAgICAgICA8ZGl2Pm5lc3RlZCA8c3Bhbj48c3BhbiBzdHls
ZT0idmVydGljYWwtYWxpZ246IHRleHQtdG9wIj50ZXh0PC9zcGFuPiA8L3NwYW4+Y29udGVudDwv
ZGl2PiA8LSB0aGUgY29udGVudCBbdGV4dF0gaXMgdmVydGljYWxseQorICAgICAgICBhbGlnbmVk
IHdpdGggdGhlIHRvcCBvZiB0aGUgX3BhcmVudCBlbGVtZW50XydzIGZvbnQgYW5kIG5vdCB0aGUg
cm9vdCBpbmxpbmUgYm94LgorCisgICAgICAgIDEuIExldCdzIHJlbmFtZSB0aGUgTGluZUJveEJ1
aWxkZXIgdG8gSW5saW5lQm94LiBXZSdsbCBoYXZlIGEgYnVuY2ggb2YgdGhlc2UuCisgICAgICAg
IDIuIFBhc3MgaW4gdGhlIHBhcmVudCBpbmxpbmUgdG8gYWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVp
Z2h0IChjdXJyZW50bHkgdGhlcmUncyBvbmx5IG9uZSBpbmxpbmUgYm94IHBlciBsaW5lLCB0aGUg
cm9vdCBpbmxpbmUgYm94KS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmxpbmVIZWlnaHRDb25zdHJhaW50cyBjb25zdCk6Cisg
ICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJv
eEJ1aWxkZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6
OmhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2lj
YWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2Nyb2xs
YWJsZU92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6
bG9naWNhbExlZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojps
b2dpY2FsUmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojps
b2dpY2FsVG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9n
aWNhbEJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6Omxv
Z2ljYWxXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6Omxv
Z2ljYWxIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpy
ZXNldERlc2NlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRMb2dp
Y2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0TG9naWNh
bFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0U2Nyb2xsYWJs
ZU92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bW92ZUhvcml6
b250YWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmV4cGFuZEhvcml6
b250YWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNocmlua0hvcml6
b250YWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmV4cGFuZFZlcnRp
Y2FsbHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzaHJpbmtWZXJ0aWNh
bGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6aXNDb25zaWRlcmVkRW1w
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRJc0NvbnNp
ZGVyZWRFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldElzQ29u
c2lkZXJlZE5vbkVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6TGlu
ZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldExvZ2ljYWxIZWln
aHRJZkdyZWF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpiYXNlbGlu
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldEJhc2VsaW5l
T2Zmc2V0SWZHcmVhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0
QXNjZW50SWZHcmVhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0
RGVzY2VudElmR3JlYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmJh
c2VsaW5lT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6
cmVzZXRCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2Vs
aW5lOjpCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2Vs
aW5lOjpzZXRBc2NlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpCYXNl
bGluZTo6c2V0RGVzY2VudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJh
c2VsaW5lOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2Vs
aW5lOjphc2NlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpC
YXNlbGluZTo6ZGVzY2VudCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphZGp1
c3RCYXNlbGluZUFuZExpbmVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
aW5lQnVpbGRlcjo6bGluZUJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvTGluZUxheW91dENvbnRleHQuaDoKKwogMjAyMC0wNy0xNCAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gUmVtb3ZlIERpc3BsYXk6Okxp
bmVCb3g6OmlzQ29uc2lkZXJlZEVtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDc3MzJiZGIyNjcwZDlhYzJlYjcxNWRlMGE1
MzZmOGQwMzdhOGM2NS4uZjFlY2JmMGUwOWQ3NGI5ZDVjNGVkNzE3ZjI0YWQ1ZDY0NmVmOTEwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjA2Miw3ICsyMDYyLDcgQEAKIAkJNkY5OTVBM0ExQTcwODMzNzAwQTczNUY0IC8qIEpT
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkY5OTVBMzAxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdC5oICovOyB9OwogCQk2RkE0NDU0RTg5OEYyRkMxNjhCQzM4QzEgLyogSlNCZWZv
cmVVbmxvYWRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjlFMDRBMjdCRUQyRjgxRjk4RTkwMjJCIC8qIEpTQmVmb3JlVW5sb2FkRXZlbnQuaCAq
LzsgfTsKIAkJNkZCMTFCNUMyMTc4M0ZEMDAwRTJBNTc0IC8qIFRleHRVdGlsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkIxMUI1OTIxNzgzRkNGMDBF
MkE1NzQgLyogVGV4dFV0aWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk2RkIyNDAwNTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lTGluZUJveEJ1
aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZG
QjI0MDAzMjNERkYxMjcwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94QnVpbGRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZGQjI0MDA1MjNERkYx
MjgwMDc5NjQ1OCAvKiBJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZGQjI0MDAzMjNERkYxMjcwMDc5NjQ1OCAvKiBJbmxpbmVCb3guaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkI0N0U2
MzIyNzc0MjVBMDBDN0JDQjAgLyogRGlzcGxheUxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjQ3RTYxMjI3NzQyNUEwMEM3QkNCMCAvKiBE
aXNwbGF5TGluZUJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTZGQjVFMjE0MjIxRjI0NTMwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjVF
MjEyMjIxRjI0NDcwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkNFMUExQTIyNjE4QUJE
MDA0RjAzNDMgLyogRGlzcGxheVJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkZDRTFBMTgyMjYxOEFCMzAwNEYwMzQzIC8qIERpc3BsYXlSdW4uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTQ3Myw3
ICs5NDczLDcgQEAKIAkJNkZCMTFCNTkyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRVdGlsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRVdGlsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZGQjExQjVCMjE3ODNGQ0YwMEUyQTU3NCAvKiBUZXh0VXRpbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0VXRpbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQjIyRTMwMjMwMDk3RTMwMEMyMDg2NiAvKiBUYWJs
ZUdyaWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFibGVHcmlkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTZGQjI0MDAzMjNERkYxMjcwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94QnVpbGRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVMaW5lQm94QnVpbGRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RkIyNDAwMzIzREZGMTI3MDA3OTY0
NTggLyogSW5saW5lQm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGlu
ZUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkI0N0U2MTIyNzc0MjVBMDBD
N0JDQjAgLyogRGlzcGxheUxpbmVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGlzcGxheUxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCNUUy
MTIyMjFGMjQ0NzAwMzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNkZCQjg2MDUyMEI0NjRCNjAwREFEOTM4IC8qIEZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzEyMiw3ICsxNzEyMiw3IEBACiAJCQkJMTE1
Q0ZBN0MyMDhCOEUxMDAwMUU2OTkxIC8qIElubGluZUZvcm1hdHRpbmdTdGF0ZS5oICovLAogCQkJ
CTZGN0I4Q0VDMjM2MjZFNjYwMEM5RkYxNSAvKiBJbmxpbmVJdGVtLmNwcCAqLywKIAkJCQk2RkU3
Q0ZBMDIxNzdFRUYxMDA1QjE1NzMgLyogSW5saW5lSXRlbS5oICovLAotCQkJCTZGQjI0MDAzMjNE
RkYxMjcwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94QnVpbGRlci5oICovLAorCQkJCTZGQjI0MDAz
MjNERkYxMjcwMDc5NjQ1OCAvKiBJbmxpbmVCb3guaCAqLywKIAkJCQk2RkUxOTgxMzIxNzgzOTdC
MDA0NDZGMDggLyogSW5saW5lTGluZUJyZWFrZXIuY3BwICovLAogCQkJCTZGRTE5ODE1MjE3ODM5
N0MwMDQ0NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5oICovLAogCQkJCTZGMENENjkyMjI5RUQz
MTkwMEM1OTk0RSAvKiBJbmxpbmVMaW5lQnVpbGRlci5jcHAgKi8sCkBAIC0zMTAwNyw3ICszMTAw
Nyw3IEBACiAJCQkJMTE1Q0ZBN0UyMDhCOEUxMDAwMUU2OTkxIC8qIElubGluZUZvcm1hdHRpbmdT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZFN0NGQTIyMTc3RUVGMjAwNUIxNTczIC8qIElu
bGluZUl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTc4OTE2MTEyMEQ2MDgwMDYwRUNFNSAv
KiBJbmxpbmVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkZCMjQwMDUyM0RGRjEyODAw
Nzk2NDU4IC8qIElubGluZUxpbmVCb3hCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RkIy
NDAwNTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQk2
RkUxOTgxNzIxNzgzOTdDMDA0NDZGMDggLyogSW5saW5lTGluZUJyZWFrZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTZGMENENjk1MjI5RUQzMjcwMEM1OTk0RSAvKiBJbmxpbmVMaW5lQnVpbGRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ1Nzc1Q0UyNDE0MzdENTAwMkRGMUEwIC8qIElubGluZVBh
dGhEYXRhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lQm94LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNlZGY4Mzg0NTZiNzQzMzQw
YmYyMDhlYThiMGYxNzVhNWY2OTA5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUJveC5oCkBAIC0wLDAgKzEsMjQ5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdf
Q09OVEVYVCkKKworI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKKyNpbmNsdWRlICJEaXNwbGF5SW5s
aW5lUmVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0IHsKKwor
Y2xhc3MgSW5saW5lQm94IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBzdHJ1Y3QgQmFzZWxpbmUgeworICAgICAgICBCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0
IGFzY2VudCwgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KTsKKyAgICAgICAgQmFzZWxpbmUoKSA9
IGRlZmF1bHQ7CisKKyAgICAgICAgdm9pZCBzZXRBc2NlbnQoSW5saW5lTGF5b3V0VW5pdCk7Cisg
ICAgICAgIHZvaWQgc2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0KTsKKworICAgICAgICB2b2lk
IHJlc2V0KCk7CisKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBhc2NlbnQoKSArIGRlc2NlbnQoKTsgfQorICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGFz
Y2VudCgpIGNvbnN0OworICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQoKSBjb25zdDsK
KworICAgIHByaXZhdGU6CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgYm9vbCBtX2hhc1Zh
bGlkQXNjZW50IHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX2hhc1ZhbGlkRGVzY2VudCB7IGZh
bHNlIH07CisjZW5kaWYKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2FzY2VudCB7IDAgfTsK
KyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2Rlc2NlbnQgeyAwIH07CisgICAgfTsKKworICAg
IElubGluZUJveChjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiwgY29uc3QgQmFzZWxpbmUmLCBJ
bmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KTsKKyAgICBJbmxpbmVCb3goKSA9IGRlZmF1
bHQ7CisKKyAgICBjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiBsb2dpY2FsUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVjdDsgfQorICAgIGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmIHNjcm9s
bGFibGVPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZU92ZXJmbG93OyB9CisK
KyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0
LmxlZnQoKTsgfQorICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0LnJpZ2h0KCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3Ao
KSBjb25zdCB7IHJldHVybiBtX3JlY3QudG9wKCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX3JlY3QuYm90dG9tKCk7IH0KKworICAgIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LndpZHRo
KCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX3JlY3QuaGVpZ2h0KCk7IH0KKworICAgIGNvbnN0IEJhc2VsaW5lJiBiYXNlbGluZSgpIGNv
bnN0OworICAgIC8vIEJhc2VsaW5lIG9mZnNldCBmcm9tIGxpbmUgbG9naWNhbCB0b3AuIE5vdGUg
dGhhdCBvZmZzZXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gYXNjZW50LgorICAgIC8v
CisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLSAgICBsaW5lIGxvZ2ljYWwgdG9wICAgICAtLS0t
LS0tLS0tLS0tLS0tLS0tICh0b3AgYWxpZ24pCisgICAgLy8gICAgICAgICAgICAgXiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgLy8gICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICB8CisgICAg
Ly8gICBeICAgICAgICAgfCBiYXNlbGluZSBvZmZzZXQgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICB8IGJhc2VsaW5lIG9mZnNldAorICAgIC8vICAgfCAgICAgICAgIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfAorICAgIC8vICAgfCBhc2NlbnQgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhc2NlbnQgICAgfAorICAgIC8vICAg
fCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAg
dgorICAgIC8vICAgdiAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0t
LS0tLS0tLS0tLS0tLS0tLSBiYXNlbGluZQorICAgIC8vICAgLS0tLS0tLS0tLS0tLS0tLS0gYmFz
ZWxpbmUgICAgICAgICAgICAgICAgICAgXgorICAgIC8vICAgXiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXNjZW50CisgICAgLy8gICB8IGRlc2NlbnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgLy8gICB2CisgICAgLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLSAgICBsaW5lIGxvZ2ljYWwgYm90dG9tICAtLS0tLS0tLS0tLS0tLS0t
LS0tCisgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldCgpIGNvbnN0OworICAgIHZv
aWQgc2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7CisgICAgdm9p
ZCBzZXRBc2NlbnRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7CisgICAgdm9pZCBzZXREZXNj
ZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQpOworCisgICAgdm9pZCByZXNldEJhc2VsaW5l
KCk7CisgICAgdm9pZCByZXNldERlc2NlbnQoKSB7IG1fYmFzZWxpbmUuc2V0RGVzY2VudCgwX2x1
KTsgfQorCisgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0KElubGluZUxheW91dFVuaXQgbG9naWNh
bEhlaWdodCkgeyBtX3JlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOyB9CisKKyAgICB2b2lk
IHNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7CisgICAgdm9pZCBz
ZXRMb2dpY2FsV2lkdGgoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpIHsgbV9yZWN0LnNl
dFdpZHRoKGxvZ2ljYWxXaWR0aCk7IH0KKworICAgIHZvaWQgc2V0U2Nyb2xsYWJsZU92ZXJmbG93
KGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmIHJlY3QpIHsgbV9zY3JvbGxhYmxlT3ZlcmZsb3cg
PSByZWN0OyB9CisKKyAgICB2b2lkIG1vdmVIb3Jpem9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCBk
ZWx0YSkgeyBtX3JlY3QubW92ZUhvcml6b250YWxseShkZWx0YSk7IH0KKworICAgIHZvaWQgZXhw
YW5kSG9yaXpvbnRhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0LmV4cGFuZEhv
cml6b250YWxseShkZWx0YSk7IH0KKyAgICB2b2lkIHNocmlua0hvcml6b250YWxseShJbmxpbmVM
YXlvdXRVbml0IGRlbHRhKSB7IGV4cGFuZEhvcml6b250YWxseSgtZGVsdGEpOyB9CisKKyAgICB2
b2lkIGV4cGFuZFZlcnRpY2FsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBtX3JlY3QuZXhw
YW5kVmVydGljYWxseShkZWx0YSk7IH0KKyAgICB2b2lkIHNocmlua1ZlcnRpY2FsbHkoSW5saW5l
TGF5b3V0VW5pdCBkZWx0YSkgeyBleHBhbmRWZXJ0aWNhbGx5KC1kZWx0YSk7IH0KKworICAgIC8v
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMi92aXN1cmVuLmh0bWwjaW5saW5lLWZvcm1hdHRp
bmcKKyAgICAvLyBMaW5lIGJveGVzIHRoYXQgY29udGFpbiBubyB0ZXh0LCBubyBwcmVzZXJ2ZWQg
d2hpdGUgc3BhY2UsIG5vIGlubGluZSBlbGVtZW50cyB3aXRoIG5vbi16ZXJvIG1hcmdpbnMsIHBh
ZGRpbmcsIG9yIGJvcmRlcnMsCisgICAgLy8gYW5kIG5vIG90aGVyIGluLWZsb3cgY29udGVudCAo
c3VjaCBhcyBpbWFnZXMsIGlubGluZSBibG9ja3Mgb3IgaW5saW5lIHRhYmxlcyksIGFuZCBkbyBu
b3QgZW5kIHdpdGggYSBwcmVzZXJ2ZWQgbmV3bGluZQorICAgIC8vIG11c3QgYmUgdHJlYXRlZCBh
cyB6ZXJvLWhlaWdodCBsaW5lIGJveGVzIGZvciB0aGUgcHVycG9zZXMgb2YgZGV0ZXJtaW5pbmcg
dGhlIHBvc2l0aW9ucyBvZiBhbnkgZWxlbWVudHMgaW5zaWRlIG9mIHRoZW0sCisgICAgLy8gYW5k
IG11c3QgYmUgdHJlYXRlZCBhcyBub3QgZXhpc3RpbmcgZm9yIGFueSBvdGhlciBwdXJwb3NlLgor
ICAgIC8vIE5vdGUgdGhhdCBpdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHZpc3VhbGx5IG5v
bi1lbXB0eSBsaW5lLiA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAwcHgiPnRoaXMgaXMgc3RpbGwg
Y29uc2lkZXJlZCBub24tZW1wdHk8L3NwYW4+CisgICAgYm9vbCBpc0NvbnNpZGVyZWRFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNDb25zaWRlcmVkRW1wdHk7IH0KKyAgICB2b2lkIHNldElzQ29u
c2lkZXJlZEVtcHR5KCkgeyBtX2lzQ29uc2lkZXJlZEVtcHR5ID0gdHJ1ZTsgfQorICAgIHZvaWQg
c2V0SXNDb25zaWRlcmVkTm9uRW1wdHkoKSB7IG1faXNDb25zaWRlcmVkRW1wdHkgPSBmYWxzZTsg
fQorCitwcml2YXRlOgorI2lmIEFTU0VSVF9FTkFCTEVECisgICAgYm9vbCBtX2hhc1ZhbGlkQmFz
ZWxpbmUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0IHsgZmFs
c2UgfTsKKyNlbmRpZgorICAgIERpc3BsYXk6OklubGluZVJlY3QgbV9yZWN0OworICAgIERpc3Bs
YXk6OklubGluZVJlY3QgbV9zY3JvbGxhYmxlT3ZlcmZsb3c7CisgICAgQmFzZWxpbmUgbV9iYXNl
bGluZTsKKyAgICBJbmxpbmVMYXlvdXRVbml0IG1fYmFzZWxpbmVPZmZzZXQgeyAwIH07CisgICAg
Ym9vbCBtX2lzQ29uc2lkZXJlZEVtcHR5IHsgdHJ1ZSB9OworfTsKKworaW5saW5lIElubGluZUJv
eDo6SW5saW5lQm94KGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmIHJlY3QsIGNvbnN0IEJhc2Vs
aW5lJiBiYXNlbGluZSwgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldCkKKyAgICA6IG1f
cmVjdChyZWN0KQorICAgICwgbV9iYXNlbGluZShiYXNlbGluZSkKKyAgICAsIG1fYmFzZWxpbmVP
ZmZzZXQoYmFzZWxpbmVPZmZzZXQpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hhc1Zh
bGlkQmFzZWxpbmUgPSB0cnVlOworICAgIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCA9IHRydWU7
CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5saW5lQm94OjpzZXRMb2dpY2FsSGVpZ2h0SWZH
cmVhdGVyKElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCkKK3sKKyAgICBpZiAobG9naWNh
bEhlaWdodCA8PSBtX3JlY3QuaGVpZ2h0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3JlY3Qu
c2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOworfQorCitpbmxpbmUgY29uc3QgSW5saW5lQm94OjpC
YXNlbGluZSYgSW5saW5lQm94OjpiYXNlbGluZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFz
VmFsaWRCYXNlbGluZSk7CisgICAgcmV0dXJuIG1fYmFzZWxpbmU7Cit9CisKK2lubGluZSB2b2lk
IElubGluZUJveDo6c2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCBi
YXNlbGluZU9mZnNldCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faGFzVmFsaWRCYXNl
bGluZU9mZnNldCA9IHRydWU7CisjZW5kaWYKKyAgICBtX2Jhc2VsaW5lT2Zmc2V0ID0gc3RkOjpt
YXgoYmFzZWxpbmVPZmZzZXQsIG1fYmFzZWxpbmVPZmZzZXQpOworfQorCitpbmxpbmUgdm9pZCBJ
bmxpbmVCb3g6OnNldEFzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGFzY2VudCkKK3sK
KyAgICBpZiAoYXNjZW50IDwgbV9iYXNlbGluZS5hc2NlbnQoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIHNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKGFzY2VudCk7CisgICAgbV9iYXNlbGluZS5z
ZXRBc2NlbnQoYXNjZW50KTsKK30KKworaW5saW5lIHZvaWQgSW5saW5lQm94OjpzZXREZXNjZW50
SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgZGVzY2VudCkKK3sKKyAgICBpZiAoZGVzY2VudCA8
IG1fYmFzZWxpbmUuZGVzY2VudCgpKQorICAgICAgICByZXR1cm47CisgICAgbV9iYXNlbGluZS5z
ZXREZXNjZW50KGRlc2NlbnQpOworfQorCitpbmxpbmUgSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVC
b3g6OmJhc2VsaW5lT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZEJhc2Vs
aW5lT2Zmc2V0KTsKKyAgICByZXR1cm4gbV9iYXNlbGluZU9mZnNldDsKK30KKworaW5saW5lIHZv
aWQgSW5saW5lQm94OjpyZXNldEJhc2VsaW5lKCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAg
IG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCA9IHRydWU7CisjZW5kaWYKKyAgICBtX2Jhc2VsaW5l
T2Zmc2V0ID0gMF9sdTsKKyAgICBtX2Jhc2VsaW5lLnJlc2V0KCk7Cit9CisKK2lubGluZSBJbmxp
bmVCb3g6OkJhc2VsaW5lOjpCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGFzY2VudCwgSW5saW5l
TGF5b3V0VW5pdCBkZXNjZW50KQorICAgIDogbV9hc2NlbnQoYXNjZW50KQorICAgICwgbV9kZXNj
ZW50KGRlc2NlbnQpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlkQXNjZW50
ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7CisjZW5kaWYKK30KKworaW5s
aW5lIHZvaWQgSW5saW5lQm94OjpCYXNlbGluZTo6c2V0QXNjZW50KElubGluZUxheW91dFVuaXQg
YXNjZW50KQoreworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgbV9oYXNWYWxpZEFzY2VudCA9IHRy
dWU7CisjZW5kaWYKKyAgICBtX2FzY2VudCA9IGFzY2VudDsKK30KKworaW5saW5lIHZvaWQgSW5s
aW5lQm94OjpCYXNlbGluZTo6c2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQpCit7
CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7CisjZW5k
aWYKKyAgICBtX2Rlc2NlbnQgPSBkZXNjZW50OworfQorCitpbmxpbmUgdm9pZCBJbmxpbmVCb3g6
OkJhc2VsaW5lOjpyZXNldCgpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlk
QXNjZW50ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7CisjZW5kaWYKKyAg
ICBtX2FzY2VudCA9IDBfbHU7CisgICAgbV9kZXNjZW50ID0gMF9sdTsKK30KKworaW5saW5lIElu
bGluZUxheW91dFVuaXQgSW5saW5lQm94OjpCYXNlbGluZTo6YXNjZW50KCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQobV9oYXNWYWxpZEFzY2VudCk7CisgICAgcmV0dXJuIG1fYXNjZW50OworfQorCitp
bmxpbmUgSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVCb3g6OkJhc2VsaW5lOjpkZXNjZW50KCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZERlc2NlbnQpOworICAgIHJldHVybiBtX2Rlc2Nl
bnQ7Cit9CisKK30KK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dFF1aXJrcy5jcHAKaW5kZXggMjQyMTE2NzE4ZjA3YjZmMDI4YzBiNGNkNjQ0YmM3NGNkNDE3
NGM5NC4uODQ2MmVkZWI5ZGEwYWEzNWVmMTEzZmVmZmI2ODY3YzA0YTk2ODVmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHRRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApAQCAtODMsMTIgKzgzLDEy
IEBAIExpbmVCdWlsZGVyOjpDb25zdHJhaW50czo6SGVpZ2h0QW5kQmFzZWxpbmUgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6bGluCiAgICAgYXV0byBsaW5lSGVpZ2h0ID0gZm9ybWF0
dGluZ1Jvb3Quc3R5bGUoKS5saW5lSGVpZ2h0KCk7CiAgICAgaWYgKGxpbmVIZWlnaHQuaXNQZXJj
ZW50T3JDYWxjdWxhdGVkKCkpIHsKICAgICAgICAgYXV0byBpbml0aWFsQmFzZWxpbmVPZmZzZXQg
PSBMaW5lQnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKGZvcm1hdHRpbmdSb290LnN0eWxlKCku
Zm9udE1ldHJpY3MoKSwgMF9sdSkuYXNjZW50KCk7Ci0gICAgICAgIHJldHVybiB7IGluaXRpYWxC
YXNlbGluZU9mZnNldCwgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBMaW5lQm94QnVpbGRlcjo6QmFz
ZWxpbmUgeyBzdHJ1dEJhc2VsaW5lT2Zmc2V0LCBzdHJ1dEhlaWdodCAtIHN0cnV0QmFzZWxpbmVP
ZmZzZXQgfSB9OworICAgICAgICByZXR1cm4geyBpbml0aWFsQmFzZWxpbmVPZmZzZXQsIGluaXRp
YWxCYXNlbGluZU9mZnNldCwgSW5saW5lQm94OjpCYXNlbGluZSB7IHN0cnV0QmFzZWxpbmVPZmZz
ZXQsIHN0cnV0SGVpZ2h0IC0gc3RydXRCYXNlbGluZU9mZnNldCB9IH07CiAgICAgfQogICAgIC8v
IEZJWE1FOiBUaGUgb25seSByZWFzb24gd2h5IHdlIHVzZSBpbnRWYWx1ZSgpIGhlcmUgaXMgdG8g
bWF0Y2ggY3VycmVudCBpbmxpbmUgdHJlZSAoaW50ZWdyYWwpYmVoYXZpb3IuCiAgICAgSW5saW5l
TGF5b3V0VW5pdCBpbml0aWFsTGluZUhlaWdodCA9IGxpbmVIZWlnaHQuaW50VmFsdWUoKTsKICAg
ICBhdXRvIGluaXRpYWxCYXNlbGluZU9mZnNldCA9IExpbmVCdWlsZGVyOjpoYWxmTGVhZGluZ01l
dHJpY3MoZm9ybWF0dGluZ1Jvb3Quc3R5bGUoKS5mb250TWV0cmljcygpLCBpbml0aWFsTGluZUhl
aWdodCkuYXNjZW50KCk7Ci0gICAgcmV0dXJuIHsgaW5pdGlhbExpbmVIZWlnaHQsIGluaXRpYWxC
YXNlbGluZU9mZnNldCwgTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lIHsgc3RydXRCYXNlbGluZU9m
ZnNldCwgc3RydXRIZWlnaHQgLSBzdHJ1dEJhc2VsaW5lT2Zmc2V0IH0gfTsKKyAgICByZXR1cm4g
eyBpbml0aWFsTGluZUhlaWdodCwgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBJbmxpbmVCb3g6OkJh
c2VsaW5lIHsgc3RydXRCYXNlbGluZU9mZnNldCwgc3RydXRIZWlnaHQgLSBzdHJ1dEJhc2VsaW5l
T2Zmc2V0IH0gfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveEJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3hCdWlsZGVyLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwNTA5OGRiMDU5NzYxMGZmMDRkMjE3ZjdiY2NhMjAyMGExZDdk
OGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveEJ1aWxkZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDI0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLQotI2luY2x1ZGUgIkRp
c3BsYXlCb3guaCIKLSNpbmNsdWRlICJEaXNwbGF5SW5saW5lUmVjdC5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1uYW1lc3BhY2UgTGF5b3V0IHsKLQotY2xhc3MgTGluZUJveEJ1aWxkZXIgewot
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0cnVjdCBCYXNlbGlu
ZSB7Ci0gICAgICAgIEJhc2VsaW5lKElubGluZUxheW91dFVuaXQgYXNjZW50LCBJbmxpbmVMYXlv
dXRVbml0IGRlc2NlbnQpOwotICAgICAgICBCYXNlbGluZSgpID0gZGVmYXVsdDsKLQotICAgICAg
ICB2b2lkIHNldEFzY2VudChJbmxpbmVMYXlvdXRVbml0KTsKLSAgICAgICAgdm9pZCBzZXREZXNj
ZW50KElubGluZUxheW91dFVuaXQpOwotCi0gICAgICAgIHZvaWQgcmVzZXQoKTsKLQotICAgICAg
ICBJbmxpbmVMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGFzY2VudCgpICsgZGVz
Y2VudCgpOyB9Ci0gICAgICAgIElubGluZUxheW91dFVuaXQgYXNjZW50KCkgY29uc3Q7Ci0gICAg
ICAgIElubGluZUxheW91dFVuaXQgZGVzY2VudCgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSNp
ZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICBib29sIG1faGFzVmFsaWRBc2NlbnQgeyBmYWxzZSB9
OwotICAgICAgICBib29sIG1faGFzVmFsaWREZXNjZW50IHsgZmFsc2UgfTsKLSNlbmRpZgotICAg
ICAgICBJbmxpbmVMYXlvdXRVbml0IG1fYXNjZW50IHsgMCB9OwotICAgICAgICBJbmxpbmVMYXlv
dXRVbml0IG1fZGVzY2VudCB7IDAgfTsKLSAgICB9OwotCi0gICAgTGluZUJveEJ1aWxkZXIoY29u
c3QgRGlzcGxheTo6SW5saW5lUmVjdCYsIGNvbnN0IEJhc2VsaW5lJiwgSW5saW5lTGF5b3V0VW5p
dCBiYXNlbGluZU9mZnNldCk7Ci0gICAgTGluZUJveEJ1aWxkZXIoKSA9IGRlZmF1bHQ7Ci0KLSAg
ICBjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVjdDsgfQotICAgIGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmIHNjcm9sbGFibGVPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZU92ZXJmbG93OyB9Ci0KLSAgICBJbmxp
bmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmxlZnQoKTsg
fQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9y
ZWN0LnJpZ2h0KCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3AoKSBjb25zdCB7
IHJldHVybiBtX3JlY3QudG9wKCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxCb3R0
b20oKSBjb25zdCB7IHJldHVybiBtX3JlY3QuYm90dG9tKCk7IH0KLQotICAgIElubGluZUxheW91
dFVuaXQgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LndpZHRoKCk7IH0KLSAg
ICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3JlY3Qu
aGVpZ2h0KCk7IH0KLQotICAgIGNvbnN0IEJhc2VsaW5lJiBiYXNlbGluZSgpIGNvbnN0OwotICAg
IC8vIEJhc2VsaW5lIG9mZnNldCBmcm9tIGxpbmUgbG9naWNhbCB0b3AuIE5vdGUgdGhhdCBvZmZz
ZXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gYXNjZW50LgotICAgIC8vCi0gICAgLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLSAgICBsaW5lIGxvZ2ljYWwgdG9wICAgICAtLS0tLS0tLS0tLS0t
LS0tLS0tICh0b3AgYWxpZ24pCi0gICAgLy8gICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi0gICAgLy8gICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICB8Ci0gICAgLy8gICBeICAg
ICAgICAgfCBiYXNlbGluZSBvZmZzZXQgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IGJh
c2VsaW5lIG9mZnNldAotICAgIC8vICAgfCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICAgICAgICAgfAotICAgIC8vICAgfCBhc2NlbnQgIHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCBhc2NlbnQgICAgfAotICAgIC8vICAgfCAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgdgotICAgIC8v
ICAgdiAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0t
LS0tLS0tLSBiYXNlbGluZQotICAgIC8vICAgLS0tLS0tLS0tLS0tLS0tLS0gYmFzZWxpbmUgICAg
ICAgICAgICAgICAgICAgXgotICAgIC8vICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCBkZXNjZW50Ci0gICAgLy8gICB8IGRlc2NlbnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2Ci0gICAgLy8gICB2Ci0gICAgLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLSAgICBsaW5lIGxvZ2ljYWwgYm90dG9tICAtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAg
SW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldCgpIGNvbnN0OwotICAgIHZvaWQgc2V0QmFz
ZWxpbmVPZmZzZXRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7Ci0gICAgdm9pZCBzZXRBc2Nl
bnRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7Ci0gICAgdm9pZCBzZXREZXNjZW50SWZHcmVh
dGVyKElubGluZUxheW91dFVuaXQpOwotCi0gICAgdm9pZCByZXNldEJhc2VsaW5lKCk7Ci0gICAg
dm9pZCByZXNldERlc2NlbnQoKSB7IG1fYmFzZWxpbmUuc2V0RGVzY2VudCgwX2x1KTsgfQotCi0g
ICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0KElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCkg
eyBtX3JlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOyB9Ci0KLSAgICB2b2lkIHNldExvZ2lj
YWxIZWlnaHRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7Ci0gICAgdm9pZCBzZXRMb2dpY2Fs
V2lkdGgoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpIHsgbV9yZWN0LnNldFdpZHRoKGxv
Z2ljYWxXaWR0aCk7IH0KLQotICAgIHZvaWQgc2V0U2Nyb2xsYWJsZU92ZXJmbG93KGNvbnN0IERp
c3BsYXk6OklubGluZVJlY3QmIHJlY3QpIHsgbV9zY3JvbGxhYmxlT3ZlcmZsb3cgPSByZWN0OyB9
Ci0KLSAgICB2b2lkIG1vdmVIb3Jpem9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBt
X3JlY3QubW92ZUhvcml6b250YWxseShkZWx0YSk7IH0KLQotICAgIHZvaWQgZXhwYW5kSG9yaXpv
bnRhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0LmV4cGFuZEhvcml6b250YWxs
eShkZWx0YSk7IH0KLSAgICB2b2lkIHNocmlua0hvcml6b250YWxseShJbmxpbmVMYXlvdXRVbml0
IGRlbHRhKSB7IGV4cGFuZEhvcml6b250YWxseSgtZGVsdGEpOyB9Ci0KLSAgICB2b2lkIGV4cGFu
ZFZlcnRpY2FsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBtX3JlY3QuZXhwYW5kVmVydGlj
YWxseShkZWx0YSk7IH0KLSAgICB2b2lkIHNocmlua1ZlcnRpY2FsbHkoSW5saW5lTGF5b3V0VW5p
dCBkZWx0YSkgeyBleHBhbmRWZXJ0aWNhbGx5KC1kZWx0YSk7IH0KLQotICAgIC8vIGh0dHBzOi8v
d3d3LnczLm9yZy9UUi9DU1MyMi92aXN1cmVuLmh0bWwjaW5saW5lLWZvcm1hdHRpbmcKLSAgICAv
LyBMaW5lIGJveGVzIHRoYXQgY29udGFpbiBubyB0ZXh0LCBubyBwcmVzZXJ2ZWQgd2hpdGUgc3Bh
Y2UsIG5vIGlubGluZSBlbGVtZW50cyB3aXRoIG5vbi16ZXJvIG1hcmdpbnMsIHBhZGRpbmcsIG9y
IGJvcmRlcnMsCi0gICAgLy8gYW5kIG5vIG90aGVyIGluLWZsb3cgY29udGVudCAoc3VjaCBhcyBp
bWFnZXMsIGlubGluZSBibG9ja3Mgb3IgaW5saW5lIHRhYmxlcyksIGFuZCBkbyBub3QgZW5kIHdp
dGggYSBwcmVzZXJ2ZWQgbmV3bGluZQotICAgIC8vIG11c3QgYmUgdHJlYXRlZCBhcyB6ZXJvLWhl
aWdodCBsaW5lIGJveGVzIGZvciB0aGUgcHVycG9zZXMgb2YgZGV0ZXJtaW5pbmcgdGhlIHBvc2l0
aW9ucyBvZiBhbnkgZWxlbWVudHMgaW5zaWRlIG9mIHRoZW0sCi0gICAgLy8gYW5kIG11c3QgYmUg
dHJlYXRlZCBhcyBub3QgZXhpc3RpbmcgZm9yIGFueSBvdGhlciBwdXJwb3NlLgotICAgIC8vIE5v
dGUgdGhhdCBpdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHZpc3VhbGx5IG5vbi1lbXB0eSBs
aW5lLiA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAwcHgiPnRoaXMgaXMgc3RpbGwgY29uc2lkZXJl
ZCBub24tZW1wdHk8L3NwYW4+Ci0gICAgYm9vbCBpc0NvbnNpZGVyZWRFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNDb25zaWRlcmVkRW1wdHk7IH0KLSAgICB2b2lkIHNldElzQ29uc2lkZXJlZEVt
cHR5KCkgeyBtX2lzQ29uc2lkZXJlZEVtcHR5ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNDb25z
aWRlcmVkTm9uRW1wdHkoKSB7IG1faXNDb25zaWRlcmVkRW1wdHkgPSBmYWxzZTsgfQotCi1wcml2
YXRlOgotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgYm9vbCBtX2hhc1ZhbGlkQmFzZWxpbmUgeyBm
YWxzZSB9OwotICAgIGJvb2wgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0IHsgZmFsc2UgfTsKLSNl
bmRpZgotICAgIERpc3BsYXk6OklubGluZVJlY3QgbV9yZWN0OwotICAgIERpc3BsYXk6OklubGlu
ZVJlY3QgbV9zY3JvbGxhYmxlT3ZlcmZsb3c7Ci0gICAgQmFzZWxpbmUgbV9iYXNlbGluZTsKLSAg
ICBJbmxpbmVMYXlvdXRVbml0IG1fYmFzZWxpbmVPZmZzZXQgeyAwIH07Ci0gICAgYm9vbCBtX2lz
Q29uc2lkZXJlZEVtcHR5IHsgdHJ1ZSB9OwotfTsKLQotaW5saW5lIExpbmVCb3hCdWlsZGVyOjpM
aW5lQm94QnVpbGRlcihjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiByZWN0LCBjb25zdCBCYXNl
bGluZSYgYmFzZWxpbmUsIElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQpCi0gICAgOiBt
X3JlY3QocmVjdCkKLSAgICAsIG1fYmFzZWxpbmUoYmFzZWxpbmUpCi0gICAgLCBtX2Jhc2VsaW5l
T2Zmc2V0KGJhc2VsaW5lT2Zmc2V0KQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNW
YWxpZEJhc2VsaW5lID0gdHJ1ZTsKLSAgICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVl
OwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRMb2dpY2FsSGVp
Z2h0SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCkKLXsKLSAgICBpZiAo
bG9naWNhbEhlaWdodCA8PSBtX3JlY3QuaGVpZ2h0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBt
X3JlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOwotfQotCi1pbmxpbmUgY29uc3QgTGluZUJv
eEJ1aWxkZXI6OkJhc2VsaW5lJiBMaW5lQm94QnVpbGRlcjo6YmFzZWxpbmUoKSBjb25zdAotewot
ICAgIEFTU0VSVChtX2hhc1ZhbGlkQmFzZWxpbmUpOwotICAgIHJldHVybiBtX2Jhc2VsaW5lOwot
fQotCi1pbmxpbmUgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0
ZXIoSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxF
RAotICAgIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2Jh
c2VsaW5lT2Zmc2V0ID0gc3RkOjptYXgoYmFzZWxpbmVPZmZzZXQsIG1fYmFzZWxpbmVPZmZzZXQp
OwotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0QXNjZW50SWZHcmVhdGVyKElu
bGluZUxheW91dFVuaXQgYXNjZW50KQotewotICAgIGlmIChhc2NlbnQgPCBtX2Jhc2VsaW5lLmFz
Y2VudCgpKQotICAgICAgICByZXR1cm47Ci0gICAgc2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIo
YXNjZW50KTsKLSAgICBtX2Jhc2VsaW5lLnNldEFzY2VudChhc2NlbnQpOwotfQotCi1pbmxpbmUg
dm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0RGVzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0
IGRlc2NlbnQpCi17Ci0gICAgaWYgKGRlc2NlbnQgPCBtX2Jhc2VsaW5lLmRlc2NlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIG1fYmFzZWxpbmUuc2V0RGVzY2VudChkZXNjZW50KTsKLX0KLQot
aW5saW5lIElubGluZUxheW91dFVuaXQgTGluZUJveEJ1aWxkZXI6OmJhc2VsaW5lT2Zmc2V0KCkg
Y29uc3QKLXsKLSAgICBBU1NFUlQobV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0KTsKLSAgICByZXR1
cm4gbV9iYXNlbGluZU9mZnNldDsKLX0KLQotaW5saW5lIHZvaWQgTGluZUJveEJ1aWxkZXI6OnJl
c2V0QmFzZWxpbmUoKQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEJhc2Vs
aW5lT2Zmc2V0ID0gdHJ1ZTsKLSNlbmRpZgotICAgIG1fYmFzZWxpbmVPZmZzZXQgPSAwX2x1Owot
ICAgIG1fYmFzZWxpbmUucmVzZXQoKTsKLX0KLQotaW5saW5lIExpbmVCb3hCdWlsZGVyOjpCYXNl
bGluZTo6QmFzZWxpbmUoSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQsIElubGluZUxheW91dFVuaXQg
ZGVzY2VudCkKLSAgICA6IG1fYXNjZW50KGFzY2VudCkKLSAgICAsIG1fZGVzY2VudChkZXNjZW50
KQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEFzY2VudCA9IHRydWU7Ci0g
ICAgbV9oYXNWYWxpZERlc2NlbnQgPSB0cnVlOwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIExp
bmVCb3hCdWlsZGVyOjpCYXNlbGluZTo6c2V0QXNjZW50KElubGluZUxheW91dFVuaXQgYXNjZW50
KQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEFzY2VudCA9IHRydWU7Ci0j
ZW5kaWYKLSAgICBtX2FzY2VudCA9IGFzY2VudDsKLX0KLQotaW5saW5lIHZvaWQgTGluZUJveEJ1
aWxkZXI6OkJhc2VsaW5lOjpzZXREZXNjZW50KElubGluZUxheW91dFVuaXQgZGVzY2VudCkKLXsK
LSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKLSNlbmRp
ZgotICAgIG1fZGVzY2VudCA9IGRlc2NlbnQ7Ci19Ci0KLWlubGluZSB2b2lkIExpbmVCb3hCdWls
ZGVyOjpCYXNlbGluZTo6cmVzZXQoKQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNW
YWxpZEFzY2VudCA9IHRydWU7Ci0gICAgbV9oYXNWYWxpZERlc2NlbnQgPSB0cnVlOwotI2VuZGlm
Ci0gICAgbV9hc2NlbnQgPSAwX2x1OwotICAgIG1fZGVzY2VudCA9IDBfbHU7Ci19Ci0KLWlubGlu
ZSBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3hCdWlsZGVyOjpCYXNlbGluZTo6YXNjZW50KCkgY29u
c3QKLXsKLSAgICBBU1NFUlQobV9oYXNWYWxpZEFzY2VudCk7Ci0gICAgcmV0dXJuIG1fYXNjZW50
OwotfQotCi1pbmxpbmUgSW5saW5lTGF5b3V0VW5pdCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmU6
OmRlc2NlbnQoKSBjb25zdAotewotICAgIEFTU0VSVChtX2hhc1ZhbGlkRGVzY2VudCk7Ci0gICAg
cmV0dXJuIG1fZGVzY2VudDsKLX0KLQotfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVy
LmNwcAppbmRleCAwMjM2MTU4YmNhMWEyNTlmOGFmZGU3MDMyYjVlMGY4NTNlMWQyOTgwLi43Y2I3
MDU3ZDNlOGUwNTVjYzExNDljZmI4M2M2MjNhOGRlYTgyNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxk
ZXIuY3BwCkBAIC05MSw4ICs5MSw4IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmluaXRpYWxpemUoY29u
c3QgQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQogICAgICAgICBtX2luaXRpYWxTdHJ1dCA9IHsg
fTsKIAogICAgIGF1dG8gbGluZVJlY3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgY29uc3RyYWlu
dHMubG9naWNhbFRvcExlZnQsIDBfbHUsIGluaXRpYWxMaW5lSGVpZ2h0IH07Ci0gICAgYXV0byBi
YXNlbGluZSA9IExpbmVCb3hCdWlsZGVyOjpCYXNlbGluZSB7IGluaXRpYWxCYXNlbGluZU9mZnNl
dCwgaW5pdGlhbExpbmVIZWlnaHQgLSBpbml0aWFsQmFzZWxpbmVPZmZzZXQgfTsKLSAgICBtX2xp
bmVCb3ggPSBMaW5lQm94QnVpbGRlciB7IGxpbmVSZWN0LCBiYXNlbGluZSwgaW5pdGlhbEJhc2Vs
aW5lT2Zmc2V0IH07CisgICAgYXV0byBiYXNlbGluZSA9IElubGluZUJveDo6QmFzZWxpbmUgeyBp
bml0aWFsQmFzZWxpbmVPZmZzZXQsIGluaXRpYWxMaW5lSGVpZ2h0IC0gaW5pdGlhbEJhc2VsaW5l
T2Zmc2V0IH07CisgICAgbV9saW5lQm94ID0gSW5saW5lQm94IHsgbGluZVJlY3QsIGJhc2VsaW5l
LCBpbml0aWFsQmFzZWxpbmVPZmZzZXQgfTsKICAgICBtX2xpbmVMb2dpY2FsV2lkdGggPSBjb25z
dHJhaW50cy5hdmFpbGFibGVMb2dpY2FsV2lkdGg7CiAgICAgbV9oYXNJbnRydXNpdmVGbG9hdCA9
IGNvbnN0cmFpbnRzLmxpbmVJc0NvbnN0cmFpbmVkQnlGbG9hdDsKIApAQCAtMTExLDQ1ICsxMTEs
NDQgQEAgdm9pZCBMaW5lQnVpbGRlcjo6cmVzZXRDb250ZW50KCkKIExpbmVCdWlsZGVyOjpSdW5M
aXN0IExpbmVCdWlsZGVyOjpjbG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgaXNMYXN0
TGluZVdpdGhJbmxpbmVDb250ZW50KQogewogICAgIC8vIDEuIFJlbW92ZSB0cmltbWFibGUgdHJh
aWxpbmcgY29udGVudC4KLSAgICAvLyAyLiBKb2luIHRleHQgcnVucyB0b2dldGhlciB3aGVuIHBv
c3NpYmxlIFtmb29dWyBdW2Jhcl0gLT4gW2ZvbyBiYXJdLgotICAgIC8vIDMuIEFsaWduIG1lcmdl
ZCBydW5zIGJvdGggdmVydGljYWxseSBhbmQgaG9yaXpvbnRhbGx5LgorICAgIC8vIDIuIEFsaWdu
IG1lcmdlZCBydW5zIGJvdGggdmVydGljYWxseSBhbmQgaG9yaXpvbnRhbGx5LgogICAgIHJlbW92
ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCgpOwogICAgIHZpc3VhbGx5Q29sbGFwc2VQcmVXcmFw
T3ZlcmZsb3dDb250ZW50KCk7Ci0gICAgYXV0byBoYW5naW5nQ29udGVudCA9IGNvbGxlY3RIYW5n
aW5nQ29udGVudChpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpOworICAgIGlmIChtX2lzSW50
cmluc2ljU2l6aW5nKQorICAgICAgICByZXR1cm4gV1RGTW92ZShtX3J1bnMpOwogCi0gICAgaWYg
KCFtX2lzSW50cmluc2ljU2l6aW5nKSB7Ci0gICAgICAgIHVuc2lnbmVkIGlubGluZUNvbnRhaW5l
ck5lc3RpbmdMZXZlbCA9IDA7Ci0gICAgICAgIGF1dG8gaGFzU2VlblRleHRPckxpbmVCcmVhayA9
IGZhbHNlOwotICAgICAgICBmb3IgKGF1dG8mIHJ1biA6IG1fcnVucykgewotICAgICAgICAgICAg
cnVuLnNldExvZ2ljYWxIZWlnaHQocnVuQ29udGVudEhlaWdodChydW4pKTsKLSAgICAgICAgICAg
IGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbCA9IHJ1bi5pc0NvbnRhaW5lclN0YXJ0KCkgPyBp
bmxpbmVDb250YWluZXJOZXN0aW5nTGV2ZWwgKyAxIDogcnVuLmlzQ29udGFpbmVyRW5kKCkgPyBp
bmxpbmVDb250YWluZXJOZXN0aW5nTGV2ZWwgLSAxIDogaW5saW5lQ29udGFpbmVyTmVzdGluZ0xl
dmVsOwotICAgICAgICAgICAgYXV0byBydW5Jc1RleHRPckxpbmVCcmVhayA9IHJ1bi5pc1RleHQo
KSB8fCBydW4uaXNMaW5lQnJlYWsoKTsKLSAgICAgICAgICAgIGlmIChydW5Jc1RleHRPckxpbmVC
cmVhaykgewotICAgICAgICAgICAgICAgIC8vIEZvciB0ZXh0IGNvbnRlbnQgd2Ugc2V0IHRoZSBi
YXNlbGluZSBlaXRoZXIgdGhyb3VnaCB0aGUgaW5pdGlhbCBzdHJ1dCAoc2V0IGJ5IHRoZSBmb3Jt
YXR0aW5nIGNvbnRleHQgcm9vdCkgb3IKLSAgICAgICAgICAgICAgICAvLyB0aHJvdWdoIHRoZSBp
bmxpbmUgY29udGFpbmVyIChzdGFydCkuIE5vcm1hbGx5IHRoZSB0ZXh0IGNvbnRlbnQgaXRzZWxm
IGRvZXMgbm90IHN0cmV0Y2ggdGhlIGxpbmUuCi0gICAgICAgICAgICAgICAgaWYgKGhhc1NlZW5U
ZXh0T3JMaW5lQnJlYWspCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIGhhc1NlZW5UZXh0T3JMaW5lQnJlYWsgPSB0cnVlOwotICAgICAgICAgICAgICAgIGlm
ICghbV9pbml0aWFsU3RydXQpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgIGlmIChpbmxpbmVDb250YWluZXJOZXN0aW5nTGV2ZWwpCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYXV0byYgdXNlZEJh
c2VsaW5lID0gcnVuSXNUZXh0T3JMaW5lQnJlYWsgPyAqbV9pbml0aWFsU3RydXQgOiBtX2xpbmVC
b3guYmFzZWxpbmUoKTsKLSAgICAgICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChy
dW4sIHVzZWRCYXNlbGluZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzVmlzdWFsbHlFbXB0
eSgpKSB7Ci0gICAgICAgICAgICBtX2xpbmVCb3gucmVzZXRCYXNlbGluZSgpOwotICAgICAgICAg
ICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHQoeyB9KTsKLSAgICAgICAgfQotICAgICAgICAv
LyBSZW1vdmUgZGVzY2VudCB3aGVuIGFsbCBjb250ZW50IGlzIGJhc2VsaW5lIGFsaWduZWQgYnV0
IG5vbmUgb2YgdGhlbSBoYXZlIGRlc2NlbnQuCi0gICAgICAgIGlmIChmb3JtYXR0aW5nQ29udGV4
dCgpLnF1aXJrcygpLmxpbmVEZXNjZW50TmVlZHNDb2xsYXBzaW5nKG1fcnVucykpIHsKLSAgICAg
ICAgICAgIG1fbGluZUJveC5zaHJpbmtWZXJ0aWNhbGx5KG1fbGluZUJveC5iYXNlbGluZSgpLmRl
c2NlbnQoKSk7Ci0gICAgICAgICAgICBtX2xpbmVCb3gucmVzZXREZXNjZW50KCk7CisgICAgYXV0
byBoYW5naW5nQ29udGVudCA9IGNvbGxlY3RIYW5naW5nQ29udGVudChpc0xhc3RMaW5lV2l0aElu
bGluZUNvbnRlbnQpOworICAgIHVuc2lnbmVkIGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbCA9
IDA7CisgICAgYXV0byBoYXNTZWVuVGV4dE9yTGluZUJyZWFrID0gZmFsc2U7CisgICAgZm9yIChh
dXRvJiBydW4gOiBtX3J1bnMpIHsKKyAgICAgICAgcnVuLnNldExvZ2ljYWxIZWlnaHQocnVuQ29u
dGVudEhlaWdodChydW4pKTsKKyAgICAgICAgaW5saW5lQ29udGFpbmVyTmVzdGluZ0xldmVsID0g
cnVuLmlzQ29udGFpbmVyU3RhcnQoKSA/IGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbCArIDEg
OiBydW4uaXNDb250YWluZXJFbmQoKSA/IGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbCAtIDEg
OiBpbmxpbmVDb250YWluZXJOZXN0aW5nTGV2ZWw7CisgICAgICAgIGF1dG8gcnVuSXNUZXh0T3JM
aW5lQnJlYWsgPSBydW4uaXNUZXh0KCkgfHwgcnVuLmlzTGluZUJyZWFrKCk7CisgICAgICAgIGlm
IChydW5Jc1RleHRPckxpbmVCcmVhaykgeworICAgICAgICAgICAgLy8gRm9yIHRleHQgY29udGVu
dCB3ZSBzZXQgdGhlIGJhc2VsaW5lIGVpdGhlciB0aHJvdWdoIHRoZSBpbml0aWFsIHN0cnV0IChz
ZXQgYnkgdGhlIGZvcm1hdHRpbmcgY29udGV4dCByb290KSBvcgorICAgICAgICAgICAgLy8gdGhy
b3VnaCB0aGUgaW5saW5lIGNvbnRhaW5lciAoc3RhcnQpLiBOb3JtYWxseSB0aGUgdGV4dCBjb250
ZW50IGl0c2VsZiBkb2VzIG5vdCBzdHJldGNoIHRoZSBsaW5lLgorICAgICAgICAgICAgaWYgKGhh
c1NlZW5UZXh0T3JMaW5lQnJlYWspCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICBoYXNTZWVuVGV4dE9yTGluZUJyZWFrID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghbV9p
bml0aWFsU3RydXQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAo
aW5saW5lQ29udGFpbmVyTmVzdGluZ0xldmVsKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9Ci0gICAgICAgIGFsaWduQ29udGVudFZlcnRpY2FsbHkoKTsKLSAgICAgICAgYWxp
Z25Ib3Jpem9udGFsbHkoaGFuZ2luZ0NvbnRlbnQsIGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVu
dCk7CisgICAgICAgIGF1dG8mIHVzZWRCYXNlbGluZSA9IHJ1bklzVGV4dE9yTGluZUJyZWFrID8g
Km1faW5pdGlhbFN0cnV0IDogbV9saW5lQm94LmJhc2VsaW5lKCk7CisgICAgICAgIGFkanVzdEJh
c2VsaW5lQW5kTGluZUhlaWdodChydW4sIG1fbGluZUJveCwgdXNlZEJhc2VsaW5lKTsKKyAgICB9
CisgICAgaWYgKGlzVmlzdWFsbHlFbXB0eSgpKSB7CisgICAgICAgIG1fbGluZUJveC5yZXNldEJh
c2VsaW5lKCk7CisgICAgICAgIG1fbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KHsgfSk7CisgICAg
fQorICAgIC8vIFJlbW92ZSBkZXNjZW50IHdoZW4gYWxsIGNvbnRlbnQgaXMgYmFzZWxpbmUgYWxp
Z25lZCBidXQgbm9uZSBvZiB0aGVtIGhhdmUgZGVzY2VudC4KKyAgICBpZiAoZm9ybWF0dGluZ0Nv
bnRleHQoKS5xdWlya3MoKS5saW5lRGVzY2VudE5lZWRzQ29sbGFwc2luZyhtX3J1bnMpKSB7Cisg
ICAgICAgIG1fbGluZUJveC5zaHJpbmtWZXJ0aWNhbGx5KG1fbGluZUJveC5iYXNlbGluZSgpLmRl
c2NlbnQoKSk7CisgICAgICAgIG1fbGluZUJveC5yZXNldERlc2NlbnQoKTsKICAgICB9CisgICAg
YWxpZ25Db250ZW50VmVydGljYWxseSgpOworICAgIGFsaWduSG9yaXpvbnRhbGx5KGhhbmdpbmdD
b250ZW50LCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpOwogICAgIHJldHVybiBXVEZNb3Zl
KG1fcnVucyk7CiB9CiAKQEAgLTU2OSwxMiArNTY4LDEyIEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFw
cGVuZExpbmVCcmVhayhjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKQogICAgIG1fcnVucy5h
cHBlbmQoeyBkb3duY2FzdDxJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbT4oaW5saW5lSXRlbSksIGNv
bnRlbnRMb2dpY2FsV2lkdGgoKSB9KTsKIH0KIAotdm9pZCBMaW5lQnVpbGRlcjo6YWRqdXN0QmFz
ZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IFJ1biYgcnVuLCBjb25zdCBMaW5lQm94QnVpbGRlcjo6
QmFzZWxpbmUmIHVzZWRCYXNlbGluZSkKK3ZvaWQgTGluZUJ1aWxkZXI6OmFkanVzdEJhc2VsaW5l
QW5kTGluZUhlaWdodChjb25zdCBSdW4mIHJ1biwgSW5saW5lQm94JiBwYXJlbnRJbmxpbmVCb3gs
IGNvbnN0IElubGluZUJveDo6QmFzZWxpbmUmIHVzZWRCYXNlbGluZSkKIHsKICAgICBpZiAocnVu
LmlzVGV4dCgpIHx8IHJ1bi5pc0xpbmVCcmVhaygpKSB7Ci0gICAgICAgIG1fbGluZUJveC5zZXRB
c2NlbnRJZkdyZWF0ZXIodXNlZEJhc2VsaW5lLmFzY2VudCgpKTsKLSAgICAgICAgbV9saW5lQm94
LnNldERlc2NlbnRJZkdyZWF0ZXIodXNlZEJhc2VsaW5lLmRlc2NlbnQoKSk7Ci0gICAgICAgIG1f
bGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKHVzZWRCYXNlbGluZS5oZWlnaHQoKSk7
CisgICAgICAgIHBhcmVudElubGluZUJveC5zZXRBc2NlbnRJZkdyZWF0ZXIodXNlZEJhc2VsaW5l
LmFzY2VudCgpKTsKKyAgICAgICAgcGFyZW50SW5saW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIo
dXNlZEJhc2VsaW5lLmRlc2NlbnQoKSk7CisgICAgICAgIHBhcmVudElubGluZUJveC5zZXRMb2dp
Y2FsSGVpZ2h0SWZHcmVhdGVyKHVzZWRCYXNlbGluZS5oZWlnaHQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTU4OCwxMiArNTg3LDEyIEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFkanVz
dEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25zdCBSdW4mIHJ1biwgY29uc3QgTGluZUJveEJ1aWxk
CiAgICAgICAgICAgICBhdXRvIGhhbGZMZWFkaW5nID0gaGFsZkxlYWRpbmdNZXRyaWNzKGZvbnRN
ZXRyaWNzLCBzdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKSk7CiAgICAgICAgICAgICAvLyBCb3Ro
IGhhbGZsZWFkaW5nIGFzY2VudCBhbmQgZGVzY2VudCBjb3VsZCBiZSBuZWdhdGl2ZSAodGFsbCBm
b250IHZzLiBzbWFsbCBsaW5lLWhlaWdodCB2YWx1ZSkKICAgICAgICAgICAgIGlmIChoYWxmTGVh
ZGluZy5kZXNjZW50KCkgPiAwKQotICAgICAgICAgICAgICAgIG1fbGluZUJveC5zZXREZXNjZW50
SWZHcmVhdGVyKGhhbGZMZWFkaW5nLmRlc2NlbnQoKSk7CisgICAgICAgICAgICAgICAgcGFyZW50
SW5saW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIoaGFsZkxlYWRpbmcuZGVzY2VudCgpKTsKICAg
ICAgICAgICAgIGlmIChoYWxmTGVhZGluZy5hc2NlbnQoKSA+IDApCi0gICAgICAgICAgICAgICAg
bV9saW5lQm94LnNldEFzY2VudElmR3JlYXRlcihoYWxmTGVhZGluZy5hc2NlbnQoKSk7Ci0gICAg
ICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcih1c2VkQmFzZWxpbmUu
aGVpZ2h0KCkpOworICAgICAgICAgICAgICAgIHBhcmVudElubGluZUJveC5zZXRBc2NlbnRJZkdy
ZWF0ZXIoaGFsZkxlYWRpbmcuYXNjZW50KCkpOworICAgICAgICAgICAgcGFyZW50SW5saW5lQm94
LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIodXNlZEJhc2VsaW5lLmhlaWdodCgpKTsKICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRl
cihmb250TWV0cmljcy5oZWlnaHQoKSk7CisgICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3guc2V0
TG9naWNhbEhlaWdodElmR3JlYXRlcihmb250TWV0cmljcy5oZWlnaHQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTYxNiwyOCArNjE1LDI4IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFk
anVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25zdCBSdW4mIHJ1biwgY29uc3QgTGluZUJveEJ1
aWxkCiAgICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCbG9ja0Jhc2VsaW5lID0gbGFzdExpbmVC
b3guYmFzZWxpbmUoKTsKICAgICAgICAgICAgICAgICBhdXRvIGJlZm9yZUhlaWdodCA9IGJveEdl
b21ldHJ5Lm1hcmdpbkJlZm9yZSgpICsgYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9t
ZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKIAotICAgICAgICAgICAgICAgIG1fbGluZUJv
eC5zZXRBc2NlbnRJZkdyZWF0ZXIoaW5saW5lQmxvY2tCYXNlbGluZS5hc2NlbnQoKSk7Ci0gICAg
ICAgICAgICAgICAgbV9saW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIoaW5saW5lQmxvY2tCYXNl
bGluZS5kZXNjZW50KCkpOwotICAgICAgICAgICAgICAgIG1fbGluZUJveC5zZXRCYXNlbGluZU9m
ZnNldElmR3JlYXRlcihiZWZvcmVIZWlnaHQgKyBsYXN0TGluZUJveC5iYXNlbGluZU9mZnNldCgp
KTsKLSAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlciht
YXJnaW5Cb3hIZWlnaHQpOworICAgICAgICAgICAgICAgIHBhcmVudElubGluZUJveC5zZXRBc2Nl
bnRJZkdyZWF0ZXIoaW5saW5lQmxvY2tCYXNlbGluZS5hc2NlbnQoKSk7CisgICAgICAgICAgICAg
ICAgcGFyZW50SW5saW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIoaW5saW5lQmxvY2tCYXNlbGlu
ZS5kZXNjZW50KCkpOworICAgICAgICAgICAgICAgIHBhcmVudElubGluZUJveC5zZXRCYXNlbGlu
ZU9mZnNldElmR3JlYXRlcihiZWZvcmVIZWlnaHQgKyBsYXN0TGluZUJveC5iYXNlbGluZU9mZnNl
dCgpKTsKKyAgICAgICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3guc2V0TG9naWNhbEhlaWdodElm
R3JlYXRlcihtYXJnaW5Cb3hIZWlnaHQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAvLyBOb24gaW5saW5lLWJsb2NrIGJveGVzIHNpdCBvbiB0aGUgYmFzZWxpbmUgKGlu
Y2x1ZGluZyB0aGVpciBib3R0b20gbWFyZ2luKS4KLSAgICAgICAgICAgICAgICBtX2xpbmVCb3gu
c2V0QXNjZW50SWZHcmVhdGVyKG1hcmdpbkJveEhlaWdodCk7CisgICAgICAgICAgICAgICAgcGFy
ZW50SW5saW5lQm94LnNldEFzY2VudElmR3JlYXRlcihtYXJnaW5Cb3hIZWlnaHQpOwogICAgICAg
ICAgICAgICAgIC8vIElnbm9yZSBuZWdhdGl2ZSBkZXNjZW50ICh5ZXMsIG5lZ2F0aXZlIGRlc2Nl
bnQgaXMgYSB0aGluZykuCi0gICAgICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWln
aHRJZkdyZWF0ZXIobWFyZ2luQm94SGVpZ2h0ICsgc3RkOjptYXg8SW5saW5lTGF5b3V0VW5pdD4o
MCwgdXNlZEJhc2VsaW5lLmRlc2NlbnQoKSkpOworICAgICAgICAgICAgICAgIHBhcmVudElubGlu
ZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKG1hcmdpbkJveEhlaWdodCArIHN0ZDo6bWF4
PElubGluZUxheW91dFVuaXQ+KDAsIHVzZWRCYXNlbGluZS5kZXNjZW50KCkpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgVmVydGlj
YWxBbGlnbjo6VG9wOgogICAgICAgICAgICAgLy8gVG9wIGFsaWduIGNvbnRlbnQgbmV2ZXIgY2hh
bmdlcyB0aGUgYmFzZWxpbmUsIGl0IG9ubHkgcHVzaGVzIHRoZSBib3R0b20gb2YgdGhlIGxpbmUg
ZnVydGhlciBkb3duLgotICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdy
ZWF0ZXIobWFyZ2luQm94SGVpZ2h0KTsKKyAgICAgICAgICAgIHBhcmVudElubGluZUJveC5zZXRM
b2dpY2FsSGVpZ2h0SWZHcmVhdGVyKG1hcmdpbkJveEhlaWdodCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCb3R0b206IHsKICAgICAgICAgICAgIC8v
IEJvdHRvbSBhbGlnbmVkLCB0YWxsIGNvbnRlbnQgcHVzaGVzIHRoZSBiYXNlbGluZSBmdXJ0aGVy
IGRvd24gZnJvbSB0aGUgbGluZSB0b3AuCi0gICAgICAgICAgICBhdXRvIGxpbmVMb2dpY2FsSGVp
Z2h0ID0gbV9saW5lQm94LmxvZ2ljYWxIZWlnaHQoKTsKKyAgICAgICAgICAgIGF1dG8gbGluZUxv
Z2ljYWxIZWlnaHQgPSBwYXJlbnRJbmxpbmVCb3gubG9naWNhbEhlaWdodCgpOwogICAgICAgICAg
ICAgaWYgKG1hcmdpbkJveEhlaWdodCA+IGxpbmVMb2dpY2FsSGVpZ2h0KSB7Ci0gICAgICAgICAg
ICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIobWFyZ2luQm94SGVpZ2h0
KTsKLSAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIo
bV9saW5lQm94LmJhc2VsaW5lT2Zmc2V0KCkgKyAobWFyZ2luQm94SGVpZ2h0IC0gbGluZUxvZ2lj
YWxIZWlnaHQpKTsKKyAgICAgICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3guc2V0TG9naWNhbEhl
aWdodElmR3JlYXRlcihtYXJnaW5Cb3hIZWlnaHQpOworICAgICAgICAgICAgICAgIHBhcmVudElu
bGluZUJveC5zZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihwYXJlbnRJbmxpbmVCb3guYmFzZWxp
bmVPZmZzZXQoKSArIChtYXJnaW5Cb3hIZWlnaHQgLSBsaW5lTG9naWNhbEhlaWdodCkpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTcwMyw3ICs3MDIs
NyBAQCBib29sIExpbmVCdWlsZGVyOjppc1Zpc3VhbGx5Tm9uRW1wdHkoY29uc3QgUnVuJiBydW4p
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1MaW5lQm94QnVpbGRlcjo6QmFzZWxpbmUg
TGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYgZm9udE1l
dHJpY3MsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpCitJbmxpbmVCb3g6OkJh
c2VsaW5lIExpbmVCdWlsZGVyOjpoYWxmTGVhZGluZ01ldHJpY3MoY29uc3QgRm9udE1ldHJpY3Mm
IGZvbnRNZXRyaWNzLCBJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0KQogewogICAg
IGF1dG8gYXNjZW50ID0gZm9udE1ldHJpY3MuYXNjZW50KCk7CiAgICAgYXV0byBkZXNjZW50ID0g
Zm9udE1ldHJpY3MuZGVzY2VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKaW5kZXggYjhhYzBiMWM1
MTMyOTE3ZjExMDg3MmE0ODAwN2E5ZWIzMWFmMzdhOS4uODQ5NDRlODYwMGUwYzNmNzg3MjI0NjQy
OWQwMDFmMjBiOWIzY2JjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oCkBAIC0yOCw4ICsyOCw4IEBA
CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJEaXNw
bGF5UnVuLmgiCisjaW5jbHVkZSAiSW5saW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlbS5o
IgotI2luY2x1ZGUgIklubGluZUxpbmVCb3hCdWlsZGVyLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4
dEl0ZW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHN0cnVjdCBIZWlnaHRBbmRCYXNlbGluZSB7CiAgICAgICAgICAgICBJbmxpbmVM
YXlvdXRVbml0IGhlaWdodCB7IDAgfTsKICAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgYmFz
ZWxpbmVPZmZzZXQgeyAwIH07Ci0gICAgICAgICAgICBPcHRpb25hbDxMaW5lQm94QnVpbGRlcjo6
QmFzZWxpbmU+IHN0cnV0OworICAgICAgICAgICAgT3B0aW9uYWw8SW5saW5lQm94OjpCYXNlbGlu
ZT4gc3RydXQ7CiAgICAgICAgIH07CiAgICAgICAgIE9wdGlvbmFsPEhlaWdodEFuZEJhc2VsaW5l
PiBoZWlnaHRBbmRCYXNlbGluZTsKICAgICB9OwpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAg
ICAgSW5saW5lTGF5b3V0VW5pdCB0cmltbWFibGVUcmFpbGluZ1dpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQud2lkdGgoKTsgfQogICAgIGJvb2wgaXNUcmFp
bGluZ1J1bkZ1bGx5VHJpbW1hYmxlKCkgY29uc3QgeyByZXR1cm4gbV90cmltbWFibGVUcmFpbGlu
Z0NvbnRlbnQuaXNUcmFpbGluZ1J1bkZ1bGx5VHJpbW1hYmxlKCk7IH0KIAotICAgIGNvbnN0IExp
bmVCb3hCdWlsZGVyJiBsaW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94OyB9CisgICAg
Y29uc3QgSW5saW5lQm94JiBsaW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94OyB9CiAg
ICAgdm9pZCBtb3ZlTG9naWNhbExlZnQoSW5saW5lTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBtb3Zl
TG9naWNhbFJpZ2h0KElubGluZUxheW91dFVuaXQpOwogICAgIHZvaWQgc2V0SGFzSW50cnVzaXZl
RmxvYXQoKSB7IG1faGFzSW50cnVzaXZlRmxvYXQgPSB0cnVlOyB9CkBAIC0xNDgsNyArMTQ4LDcg
QEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50IHsg
Tm8sIFllcyB9OwogICAgIFJ1bkxpc3QgY2xvc2UoSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50
ID0gSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50OjpObyk7CiAKLSAgICBzdGF0aWMgTGluZUJv
eEJ1aWxkZXI6OkJhc2VsaW5lIGhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYs
IElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpOworICAgIHN0YXRpYyBJbmxpbmVC
b3g6OkJhc2VsaW5lIGhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYsIElubGlu
ZUxheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpOwogCiBwcml2YXRlOgogICAgIElubGluZUxh
eW91dFVuaXQgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveC5sb2dpY2FsVG9w
KCk7IH0KQEAgLTE4Myw3ICsxODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWxpZ25Ib3Jpem9u
dGFsbHkoY29uc3QgSGFuZ2luZ0NvbnRlbnQmLCBJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQp
OwogICAgIHZvaWQgYWxpZ25Db250ZW50VmVydGljYWxseSgpOwogCi0gICAgdm9pZCBhZGp1c3RC
YXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgUnVuJiwgY29uc3QgTGluZUJveEJ1aWxkZXI6OkJh
c2VsaW5lJik7CisgICAgdm9pZCBhZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgUnVu
JiwgSW5saW5lQm94JiBwYXJlbnRJbmxpbmVCb3gsIGNvbnN0IElubGluZUJveDo6QmFzZWxpbmUm
KTsKICAgICBJbmxpbmVMYXlvdXRVbml0IHJ1bkNvbnRlbnRIZWlnaHQoY29uc3QgUnVuJikgY29u
c3Q7CiAKICAgICB2b2lkIGp1c3RpZnlSdW5zKElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lk
dGgpOwpAQCAtMjE5LDEyICsyMTksMTIgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKICAgICBSdW5MaXN0IG1f
cnVuczsKICAgICBUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQgbV90cmltbWFibGVUcmFpbGluZ0Nv
bnRlbnQ7Ci0gICAgT3B0aW9uYWw8TGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lPiBtX2luaXRpYWxT
dHJ1dDsKKyAgICBPcHRpb25hbDxJbmxpbmVCb3g6OkJhc2VsaW5lPiBtX2luaXRpYWxTdHJ1dDsK
ICAgICBJbmxpbmVMYXlvdXRVbml0IG1fbGluZUxvZ2ljYWxXaWR0aCB7IDAgfTsKICAgICBPcHRp
b25hbDxUZXh0QWxpZ25Nb2RlPiBtX2hvcml6b250YWxBbGlnbm1lbnQ7CiAgICAgYm9vbCBtX2lz
SW50cmluc2ljU2l6aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzSW50cnVzaXZlRmxvYXQg
eyBmYWxzZSB9OwotICAgIExpbmVCb3hCdWlsZGVyIG1fbGluZUJveDsKKyAgICBJbmxpbmVCb3gg
bV9saW5lQm94OwogICAgIE9wdGlvbmFsPGJvb2w+IG1fbGluZUlzVmlzdWFsbHlFbXB0eUJlZm9y
ZVRyaW1tYWJsZVRyYWlsaW5nQ29udGVudDsKICAgICBib29sIG1fc2hvdWxkSWdub3JlVHJhaWxp
bmdMZXR0ZXJTcGFjaW5nIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaAppbmRleCA1
ZWU1ZDVmNzZiY2VjNDIxNTU2NTllNmM2ZDI2ZTM1YjQ0NDg4NTRmLi4wNjc5N2I2YjFhNDYyYmQ3
MTk2MDc4MzQzMmI3MWFjYjE1YmM0MTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKQEAgLTU0LDcg
KzU0LDcgQEAgcHVibGljOgogICAgICAgICB1c2luZyBGbG9hdExpc3QgPSBWZWN0b3I8RmxvYXQ+
OwogICAgICAgICBGbG9hdExpc3QgZmxvYXRzOwogICAgICAgICBjb25zdCBMaW5lQnVpbGRlcjo6
UnVuTGlzdCBydW5MaXN0OwotICAgICAgICBjb25zdCBMaW5lQm94QnVpbGRlciBsaW5lQm94Owor
ICAgICAgICBjb25zdCBJbmxpbmVCb3ggbGluZUJveDsKICAgICB9OwogICAgIHN0cnVjdCBJbmxp
bmVJdGVtUmFuZ2UgewogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBzdGFy
dCA9PSBlbmQ7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404522</attachid>
            <date>2020-07-16 19:57:04 -0700</date>
            <delta_ts>2020-07-16 20:16:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214406-20200716195703.patch</filename>
            <type>text/plain</type>
            <size>42972</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY2MTliZTA4OTMwZWE5
ZDA5N2EyMjlhZTEwZTc5MDA2NDgyY2VkYS4uODMyYzExNTA0OWJkZGFhYTJkYjUzYzcxMTQ0NTdi
MDE4ODBkMGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTA3LTE2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBhZGp1c3RC
YXNlbGluZUFuZExpbmVIZWlnaHQgc2hvdWxkIHRha2UgdGhlIHBhcmVudCBpbmxpbmUgYm94Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NDA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBp
biBwcmVwYXJ0aW9uIGZvciBzdXBwb3J0aW5nIG5lc3RlZCBsaW5lYm94ZXMgcmVxdWlyZWQgYnkg
Y2VydGFpbiB2ZXJ0aWNhbCBhbGlnbm1lbnQgdmFsdWVzLgorCisgICAgICAgIDxkaXY+dGV4dCBj
b250ZW50PC9kaXY+IDwtIFRoaXMgY29udGVudCByZXF1aXJlcyBvbmx5IG9uZSBpbmxpbmUgYm94
LCB0aGUgcm9vdCBsaW5lYm94LgorICAgICAgICA8ZGl2Pm5lc3RlZCA8c3Bhbj48c3BhbiBzdHls
ZT0idmVydGljYWwtYWxpZ246IHRleHQtdG9wIj50ZXh0PC9zcGFuPiA8L3NwYW4+Y29udGVudDwv
ZGl2PiA8LSB0aGUgY29udGVudCBbdGV4dF0gaXMgdmVydGljYWxseQorICAgICAgICBhbGlnbmVk
IHdpdGggdGhlIHRvcCBvZiB0aGUgX3BhcmVudCBlbGVtZW50XydzIGZvbnQgYW5kIG5vdCB0aGUg
cm9vdCBpbmxpbmUgYm94LgorCisgICAgICAgIDEuIExldCdzIHJlbmFtZSB0aGUgTGluZUJveEJ1
aWxkZXIgdG8gSW5saW5lQm94LiBXZSdsbCBoYXZlIGEgYnVuY2ggb2YgdGhlc2UuCisgICAgICAg
IDIuIFBhc3MgaW4gdGhlIHBhcmVudCBpbmxpbmUgdG8gYWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVp
Z2h0IChjdXJyZW50bHkgdGhlcmUncyBvbmx5IG9uZSBpbmxpbmUgYm94IHBlciBsaW5lLCB0aGUg
cm9vdCBpbmxpbmUgYm94KS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmxpbmVIZWlnaHRDb25zdHJhaW50cyBjb25zdCk6Cisg
ICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJv
eEJ1aWxkZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6
OmhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2lj
YWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2Nyb2xs
YWJsZU92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6
bG9naWNhbExlZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojps
b2dpY2FsUmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojps
b2dpY2FsVG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9n
aWNhbEJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6Omxv
Z2ljYWxXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6Omxv
Z2ljYWxIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpy
ZXNldERlc2NlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRMb2dp
Y2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0TG9naWNh
bFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0U2Nyb2xsYWJs
ZU92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bW92ZUhvcml6
b250YWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmV4cGFuZEhvcml6
b250YWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNocmlua0hvcml6
b250YWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmV4cGFuZFZlcnRp
Y2FsbHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzaHJpbmtWZXJ0aWNh
bGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6aXNDb25zaWRlcmVkRW1w
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRJc0NvbnNp
ZGVyZWRFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldElzQ29u
c2lkZXJlZE5vbkVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6TGlu
ZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldExvZ2ljYWxIZWln
aHRJZkdyZWF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpiYXNlbGlu
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldEJhc2VsaW5l
T2Zmc2V0SWZHcmVhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0
QXNjZW50SWZHcmVhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0
RGVzY2VudElmR3JlYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmJh
c2VsaW5lT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6
cmVzZXRCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2Vs
aW5lOjpCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2Vs
aW5lOjpzZXRBc2NlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpCYXNl
bGluZTo6c2V0RGVzY2VudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJh
c2VsaW5lOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2Vs
aW5lOjphc2NlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpC
YXNlbGluZTo6ZGVzY2VudCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphZGp1
c3RCYXNlbGluZUFuZExpbmVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
aW5lQnVpbGRlcjo6bGluZUJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvTGluZUxheW91dENvbnRleHQuaDoKKwogMjAyMC0wNy0xNCAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gUmVtb3ZlIERpc3BsYXk6Okxp
bmVCb3g6OmlzQ29uc2lkZXJlZEVtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDc3MzJiZGIyNjcwZDlhYzJlYjcxNWRlMGE1
MzZmOGQwMzdhOGM2NS4uNDVkMjIwMGE5NWYzOGU0YmRhMTcxYzI1NDkxZjBjN2E0NTk1N2Y2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjA2Miw3ICsyMDYyLDcgQEAKIAkJNkY5OTVBM0ExQTcwODMzNzAwQTczNUY0IC8qIEpT
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkY5OTVBMzAxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdC5oICovOyB9OwogCQk2RkE0NDU0RTg5OEYyRkMxNjhCQzM4QzEgLyogSlNCZWZv
cmVVbmxvYWRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjlFMDRBMjdCRUQyRjgxRjk4RTkwMjJCIC8qIEpTQmVmb3JlVW5sb2FkRXZlbnQuaCAq
LzsgfTsKIAkJNkZCMTFCNUMyMTc4M0ZEMDAwRTJBNTc0IC8qIFRleHRVdGlsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkIxMUI1OTIxNzgzRkNGMDBF
MkE1NzQgLyogVGV4dFV0aWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk2RkIyNDAwNTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lTGluZUJveEJ1
aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZG
QjI0MDAzMjNERkYxMjcwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94QnVpbGRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZGQjI0MDA1MjNERkYx
MjgwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RkIyNDAwMzIzREZGMTI3MDA3OTY0NTggLyogSW5saW5lTGlu
ZUJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTZGQjQ3RTYzMjI3NzQyNUEwMEM3QkNCMCAvKiBEaXNwbGF5TGluZUJveC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCNDdFNjEyMjc3NDI1QTAwQzdC
Q0IwIC8qIERpc3BsYXlMaW5lQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNkZCNUUyMTQyMjFGMjQ1MzAwMzk4OUNGIC8qIENvbnRlbnRDaGFu
Z2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkZCNUUyMTIyMjFGMjQ0NzAwMzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGQ0UxQTFB
MjI2MThBQkQwMDRGMDM0MyAvKiBEaXNwbGF5UnVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkNFMUExODIyNjE4QUIzMDA0RjAzNDMgLyogRGlzcGxh
eVJ1bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC05NDczLDcgKzk0NzMsNyBAQAogCQk2RkIxMUI1OTIxNzgzRkNGMDBFMkE1NzQgLyogVGV4dFV0
aWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFV0aWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCMTFCNUIyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRV
dGlsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRVdGlsLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCMjJFMzAyMzAwOTdFMzAwQzIwODY2
IC8qIFRhYmxlR3JpZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUYWJsZUdyaWQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNkZCMjQwMDMyM0RGRjEyNzAwNzk2NDU4IC8qIElubGluZUxpbmVC
b3hCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUxpbmVC
b3hCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGQjI0MDAzMjNERkYx
MjcwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IElubGluZUxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZC
NDdFNjEyMjc3NDI1QTAwQzdCQ0IwIC8qIERpc3BsYXlMaW5lQm94LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZGQjVFMjEyMjIxRjI0NDcwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudENoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZGQkI4NjA1MjBCNDY0QjYwMERBRDkzOCAvKiBGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcxMTQsNiArMTcx
MTQsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk2RkU3RERE
RDIwRUM2RThCMDA4QjVCNEUgLyogdGV4dCAqLywKKwkJCQk2RkIyNDAwMzIzREZGMTI3MDA3OTY0
NTggLyogSW5saW5lTGluZUJveC5oICovLAogCQkJCTZGN0NBM0M5MjA4QzJCMkUwMDJGMjlBQiAv
KiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJNkY3Q0EzQzgyMDhDMkIyRTAw
MkYyOUFCIC8qIElubGluZUZvcm1hdHRpbmdDb250ZXh0LmggKi8sCiAJCQkJNkYzNUVGQUYyMTg3
Q0JENTAwNDRFMEY0IC8qIElubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwICovLApA
QCAtMTcxMjIsNyArMTcxMjMsNiBAQAogCQkJCTExNUNGQTdDMjA4QjhFMTAwMDFFNjk5MSAvKiBJ
bmxpbmVGb3JtYXR0aW5nU3RhdGUuaCAqLywKIAkJCQk2RjdCOENFQzIzNjI2RTY2MDBDOUZGMTUg
LyogSW5saW5lSXRlbS5jcHAgKi8sCiAJCQkJNkZFN0NGQTAyMTc3RUVGMTAwNUIxNTczIC8qIElu
bGluZUl0ZW0uaCAqLywKLQkJCQk2RkIyNDAwMzIzREZGMTI3MDA3OTY0NTggLyogSW5saW5lTGlu
ZUJveEJ1aWxkZXIuaCAqLywKIAkJCQk2RkUxOTgxMzIxNzgzOTdCMDA0NDZGMDggLyogSW5saW5l
TGluZUJyZWFrZXIuY3BwICovLAogCQkJCTZGRTE5ODE1MjE3ODM5N0MwMDQ0NkYwOCAvKiBJbmxp
bmVMaW5lQnJlYWtlci5oICovLAogCQkJCTZGMENENjkyMjI5RUQzMTkwMEM1OTk0RSAvKiBJbmxp
bmVMaW5lQnVpbGRlci5jcHAgKi8sCkBAIC0zMTAwMCw2ICszMTAwMCw3IEBACiAJCQkJNTE3MTM4
RjgxQkYxMjhCQjAwMEQ1RjAxIC8qIEluZGV4VmFsdWVTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0QwNjNGODMxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4Q0ZGNUU1MEExNTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVCb3guaCBpbiBI
ZWFkZXJzICovLAorCQkJCTZGQjI0MDA1MjNERkYxMjgwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzA1OTI2NDFFMjdBM0FEMDBENTdDOTggLyogSW5saW5l
Q2xhc3NpY1NjcmlwdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU3Q0I1MkUxODJBM0VGQzAwNzlB
NjQ3IC8qIElubGluZUVsZW1lbnRCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGNUUzMEEx
NTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVGbG93Qm94LmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDA3
LDcgKzMxMDA4LDYgQEAKIAkJCQkxMTVDRkE3RTIwOEI4RTEwMDAxRTY5OTEgLyogSW5saW5lRm9y
bWF0dGluZ1N0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkU3Q0ZBMjIxNzdFRUYyMDA1QjE1
NzMgLyogSW5saW5lSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNzg5MTYxMTIwRDYwODAw
NjBFQ0U1IC8qIElubGluZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RkIyNDAwNTIz
REZGMTI4MDA3OTY0NTggLyogSW5saW5lTGluZUJveEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTZGRTE5ODE3MjE3ODM5N0MwMDQ0NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkYwQ0Q2OTUyMjlFRDMyNzAwQzU5OTRFIC8qIElubGluZUxpbmVCdWls
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDU3NzVDRTI0MTQzN0Q1MDAyREYxQTAgLyogSW5s
aW5lUGF0aERhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHRRdWlya3MuY3BwCmluZGV4IDI0MjExNjcxOGYwN2I2ZjAyOGMwYjRjZDY0NGJjNzRj
ZDQxNzRjOTQuLjg0NjJlZGViOWRhMGFhMzVlZjExM2ZlZmZiNjg2N2MwNGE5Njg1ZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKQEAgLTgzLDEyICs4
MywxMiBAQCBMaW5lQnVpbGRlcjo6Q29uc3RyYWludHM6OkhlaWdodEFuZEJhc2VsaW5lIElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmxpbgogICAgIGF1dG8gbGluZUhlaWdodCA9IGZv
cm1hdHRpbmdSb290LnN0eWxlKCkubGluZUhlaWdodCgpOwogICAgIGlmIChsaW5lSGVpZ2h0Lmlz
UGVyY2VudE9yQ2FsY3VsYXRlZCgpKSB7CiAgICAgICAgIGF1dG8gaW5pdGlhbEJhc2VsaW5lT2Zm
c2V0ID0gTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhmb3JtYXR0aW5nUm9vdC5zdHls
ZSgpLmZvbnRNZXRyaWNzKCksIDBfbHUpLmFzY2VudCgpOwotICAgICAgICByZXR1cm4geyBpbml0
aWFsQmFzZWxpbmVPZmZzZXQsIGluaXRpYWxCYXNlbGluZU9mZnNldCwgTGluZUJveEJ1aWxkZXI6
OkJhc2VsaW5lIHsgc3RydXRCYXNlbGluZU9mZnNldCwgc3RydXRIZWlnaHQgLSBzdHJ1dEJhc2Vs
aW5lT2Zmc2V0IH0gfTsKKyAgICAgICAgcmV0dXJuIHsgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBp
bml0aWFsQmFzZWxpbmVPZmZzZXQsIElubGluZUJveDo6QmFzZWxpbmUgeyBzdHJ1dEJhc2VsaW5l
T2Zmc2V0LCBzdHJ1dEhlaWdodCAtIHN0cnV0QmFzZWxpbmVPZmZzZXQgfSB9OwogICAgIH0KICAg
ICAvLyBGSVhNRTogVGhlIG9ubHkgcmVhc29uIHdoeSB3ZSB1c2UgaW50VmFsdWUoKSBoZXJlIGlz
IHRvIG1hdGNoIGN1cnJlbnQgaW5saW5lIHRyZWUgKGludGVncmFsKWJlaGF2aW9yLgogICAgIElu
bGluZUxheW91dFVuaXQgaW5pdGlhbExpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0LmludFZhbHVlKCk7
CiAgICAgYXV0byBpbml0aWFsQmFzZWxpbmVPZmZzZXQgPSBMaW5lQnVpbGRlcjo6aGFsZkxlYWRp
bmdNZXRyaWNzKGZvcm1hdHRpbmdSb290LnN0eWxlKCkuZm9udE1ldHJpY3MoKSwgaW5pdGlhbExp
bmVIZWlnaHQpLmFzY2VudCgpOwotICAgIHJldHVybiB7IGluaXRpYWxMaW5lSGVpZ2h0LCBpbml0
aWFsQmFzZWxpbmVPZmZzZXQsIExpbmVCb3hCdWlsZGVyOjpCYXNlbGluZSB7IHN0cnV0QmFzZWxp
bmVPZmZzZXQsIHN0cnV0SGVpZ2h0IC0gc3RydXRCYXNlbGluZU9mZnNldCB9IH07CisgICAgcmV0
dXJuIHsgaW5pdGlhbExpbmVIZWlnaHQsIGluaXRpYWxCYXNlbGluZU9mZnNldCwgSW5saW5lQm94
OjpCYXNlbGluZSB7IHN0cnV0QmFzZWxpbmVPZmZzZXQsIHN0cnV0SGVpZ2h0IC0gc3RydXRCYXNl
bGluZU9mZnNldCB9IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2VkZjgzODQ1
NmI3NDMzNDBiZjIwOGVhOGIwZjE3NWE1ZjY5MDlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oCkBAIC0wLDAg
KzEsMjQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKKyNpbmNsdWRl
ICJEaXNwbGF5SW5saW5lUmVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
TGF5b3V0IHsKKworY2xhc3MgSW5saW5lQm94IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgQmFzZWxpbmUgeworICAgICAgICBCYXNlbGluZShJbmxp
bmVMYXlvdXRVbml0IGFzY2VudCwgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KTsKKyAgICAgICAg
QmFzZWxpbmUoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgdm9pZCBzZXRBc2NlbnQoSW5saW5lTGF5
b3V0VW5pdCk7CisgICAgICAgIHZvaWQgc2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0KTsKKwor
ICAgICAgICB2b2lkIHJlc2V0KCk7CisKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBoZWlnaHQo
KSBjb25zdCB7IHJldHVybiBhc2NlbnQoKSArIGRlc2NlbnQoKTsgfQorICAgICAgICBJbmxpbmVM
YXlvdXRVbml0IGFzY2VudCgpIGNvbnN0OworICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGRlc2Nl
bnQoKSBjb25zdDsKKworICAgIHByaXZhdGU6CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAg
Ym9vbCBtX2hhc1ZhbGlkQXNjZW50IHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX2hhc1ZhbGlk
RGVzY2VudCB7IGZhbHNlIH07CisjZW5kaWYKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2Fz
Y2VudCB7IDAgfTsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2Rlc2NlbnQgeyAwIH07Cisg
ICAgfTsKKworICAgIElubGluZUJveChjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiwgY29uc3Qg
QmFzZWxpbmUmLCBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KTsKKyAgICBJbmxpbmVC
b3goKSA9IGRlZmF1bHQ7CisKKyAgICBjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiBsb2dpY2Fs
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQorICAgIGNvbnN0IERpc3BsYXk6OklubGlu
ZVJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZU92
ZXJmbG93OyB9CisKKyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0LmxlZnQoKTsgfQorICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFJpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnJpZ2h0KCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0
IGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBtX3JlY3QudG9wKCk7IH0KKyAgICBJbmxpbmVM
YXlvdXRVbml0IGxvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX3JlY3QuYm90dG9tKCk7
IH0KKworICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV9yZWN0LndpZHRoKCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQoKSBj
b25zdCB7IHJldHVybiBtX3JlY3QuaGVpZ2h0KCk7IH0KKworICAgIGNvbnN0IEJhc2VsaW5lJiBi
YXNlbGluZSgpIGNvbnN0OworICAgIC8vIEJhc2VsaW5lIG9mZnNldCBmcm9tIGxpbmUgbG9naWNh
bCB0b3AuIE5vdGUgdGhhdCBvZmZzZXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gYXNj
ZW50LgorICAgIC8vCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLSAgICBsaW5lIGxvZ2ljYWwg
dG9wICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tICh0b3AgYWxpZ24pCisgICAgLy8gICAgICAgICAg
ICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAg
Ly8gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICAg
ICAgICB8CisgICAgLy8gICBeICAgICAgICAgfCBiYXNlbGluZSBvZmZzZXQgICAgICAgICAgICAg
ICAgICB8ICAgICAgICAgICB8IGJhc2VsaW5lIG9mZnNldAorICAgIC8vICAgfCAgICAgICAgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfAorICAgIC8vICAg
fCBhc2NlbnQgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhc2NlbnQgICAg
fAorICAgIC8vICAgfCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
diAgICAgICAgICAgdgorICAgIC8vICAgdiAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLSBiYXNlbGluZQorICAgIC8vICAgLS0tLS0tLS0t
LS0tLS0tLS0gYmFzZWxpbmUgICAgICAgICAgICAgICAgICAgXgorICAgIC8vICAgXiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXNjZW50CisgICAgLy8gICB8
IGRlc2NlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgLy8gICB2
CisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLSAgICBsaW5lIGxvZ2ljYWwgYm90dG9tICAtLS0t
LS0tLS0tLS0tLS0tLS0tCisgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldCgpIGNv
bnN0OworICAgIHZvaWQgc2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5p
dCk7CisgICAgdm9pZCBzZXRBc2NlbnRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7CisgICAg
dm9pZCBzZXREZXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQpOworCisgICAgdm9pZCBy
ZXNldEJhc2VsaW5lKCk7CisgICAgdm9pZCByZXNldERlc2NlbnQoKSB7IG1fYmFzZWxpbmUuc2V0
RGVzY2VudCgwX2x1KTsgfQorCisgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0KElubGluZUxheW91
dFVuaXQgbG9naWNhbEhlaWdodCkgeyBtX3JlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOyB9
CisKKyAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7
CisgICAgdm9pZCBzZXRMb2dpY2FsV2lkdGgoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgp
IHsgbV9yZWN0LnNldFdpZHRoKGxvZ2ljYWxXaWR0aCk7IH0KKworICAgIHZvaWQgc2V0U2Nyb2xs
YWJsZU92ZXJmbG93KGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmIHJlY3QpIHsgbV9zY3JvbGxh
YmxlT3ZlcmZsb3cgPSByZWN0OyB9CisKKyAgICB2b2lkIG1vdmVIb3Jpem9udGFsbHkoSW5saW5l
TGF5b3V0VW5pdCBkZWx0YSkgeyBtX3JlY3QubW92ZUhvcml6b250YWxseShkZWx0YSk7IH0KKwor
ICAgIHZvaWQgZXhwYW5kSG9yaXpvbnRhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgbV9y
ZWN0LmV4cGFuZEhvcml6b250YWxseShkZWx0YSk7IH0KKyAgICB2b2lkIHNocmlua0hvcml6b250
YWxseShJbmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IGV4cGFuZEhvcml6b250YWxseSgtZGVsdGEp
OyB9CisKKyAgICB2b2lkIGV4cGFuZFZlcnRpY2FsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkg
eyBtX3JlY3QuZXhwYW5kVmVydGljYWxseShkZWx0YSk7IH0KKyAgICB2b2lkIHNocmlua1ZlcnRp
Y2FsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBleHBhbmRWZXJ0aWNhbGx5KC1kZWx0YSk7
IH0KKworICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMi92aXN1cmVuLmh0bWwjaW5s
aW5lLWZvcm1hdHRpbmcKKyAgICAvLyBMaW5lIGJveGVzIHRoYXQgY29udGFpbiBubyB0ZXh0LCBu
byBwcmVzZXJ2ZWQgd2hpdGUgc3BhY2UsIG5vIGlubGluZSBlbGVtZW50cyB3aXRoIG5vbi16ZXJv
IG1hcmdpbnMsIHBhZGRpbmcsIG9yIGJvcmRlcnMsCisgICAgLy8gYW5kIG5vIG90aGVyIGluLWZs
b3cgY29udGVudCAoc3VjaCBhcyBpbWFnZXMsIGlubGluZSBibG9ja3Mgb3IgaW5saW5lIHRhYmxl
cyksIGFuZCBkbyBub3QgZW5kIHdpdGggYSBwcmVzZXJ2ZWQgbmV3bGluZQorICAgIC8vIG11c3Qg
YmUgdHJlYXRlZCBhcyB6ZXJvLWhlaWdodCBsaW5lIGJveGVzIGZvciB0aGUgcHVycG9zZXMgb2Yg
ZGV0ZXJtaW5pbmcgdGhlIHBvc2l0aW9ucyBvZiBhbnkgZWxlbWVudHMgaW5zaWRlIG9mIHRoZW0s
CisgICAgLy8gYW5kIG11c3QgYmUgdHJlYXRlZCBhcyBub3QgZXhpc3RpbmcgZm9yIGFueSBvdGhl
ciBwdXJwb3NlLgorICAgIC8vIE5vdGUgdGhhdCBpdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFu
IHZpc3VhbGx5IG5vbi1lbXB0eSBsaW5lLiA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAwcHgiPnRo
aXMgaXMgc3RpbGwgY29uc2lkZXJlZCBub24tZW1wdHk8L3NwYW4+CisgICAgYm9vbCBpc0NvbnNp
ZGVyZWRFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zaWRlcmVkRW1wdHk7IH0KKyAgICB2
b2lkIHNldElzQ29uc2lkZXJlZEVtcHR5KCkgeyBtX2lzQ29uc2lkZXJlZEVtcHR5ID0gdHJ1ZTsg
fQorICAgIHZvaWQgc2V0SXNDb25zaWRlcmVkTm9uRW1wdHkoKSB7IG1faXNDb25zaWRlcmVkRW1w
dHkgPSBmYWxzZTsgfQorCitwcml2YXRlOgorI2lmIEFTU0VSVF9FTkFCTEVECisgICAgYm9vbCBt
X2hhc1ZhbGlkQmFzZWxpbmUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNWYWxpZEJhc2VsaW5l
T2Zmc2V0IHsgZmFsc2UgfTsKKyNlbmRpZgorICAgIERpc3BsYXk6OklubGluZVJlY3QgbV9yZWN0
OworICAgIERpc3BsYXk6OklubGluZVJlY3QgbV9zY3JvbGxhYmxlT3ZlcmZsb3c7CisgICAgQmFz
ZWxpbmUgbV9iYXNlbGluZTsKKyAgICBJbmxpbmVMYXlvdXRVbml0IG1fYmFzZWxpbmVPZmZzZXQg
eyAwIH07CisgICAgYm9vbCBtX2lzQ29uc2lkZXJlZEVtcHR5IHsgdHJ1ZSB9OworfTsKKworaW5s
aW5lIElubGluZUJveDo6SW5saW5lQm94KGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmIHJlY3Qs
IGNvbnN0IEJhc2VsaW5lJiBiYXNlbGluZSwgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNl
dCkKKyAgICA6IG1fcmVjdChyZWN0KQorICAgICwgbV9iYXNlbGluZShiYXNlbGluZSkKKyAgICAs
IG1fYmFzZWxpbmVPZmZzZXQoYmFzZWxpbmVPZmZzZXQpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQK
KyAgICBtX2hhc1ZhbGlkQmFzZWxpbmUgPSB0cnVlOworICAgIG1faGFzVmFsaWRCYXNlbGluZU9m
ZnNldCA9IHRydWU7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5saW5lQm94OjpzZXRMb2dp
Y2FsSGVpZ2h0SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCkKK3sKKyAg
ICBpZiAobG9naWNhbEhlaWdodCA8PSBtX3JlY3QuaGVpZ2h0KCkpCisgICAgICAgIHJldHVybjsK
KyAgICBtX3JlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOworfQorCitpbmxpbmUgY29uc3Qg
SW5saW5lQm94OjpCYXNlbGluZSYgSW5saW5lQm94OjpiYXNlbGluZSgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKG1faGFzVmFsaWRCYXNlbGluZSk7CisgICAgcmV0dXJuIG1fYmFzZWxpbmU7Cit9CisK
K2lubGluZSB2b2lkIElubGluZUJveDo6c2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIoSW5saW5l
TGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1f
aGFzVmFsaWRCYXNlbGluZU9mZnNldCA9IHRydWU7CisjZW5kaWYKKyAgICBtX2Jhc2VsaW5lT2Zm
c2V0ID0gc3RkOjptYXgoYmFzZWxpbmVPZmZzZXQsIG1fYmFzZWxpbmVPZmZzZXQpOworfQorCitp
bmxpbmUgdm9pZCBJbmxpbmVCb3g6OnNldEFzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0
IGFzY2VudCkKK3sKKyAgICBpZiAoYXNjZW50IDwgbV9iYXNlbGluZS5hc2NlbnQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIHNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKGFzY2VudCk7CisgICAg
bV9iYXNlbGluZS5zZXRBc2NlbnQoYXNjZW50KTsKK30KKworaW5saW5lIHZvaWQgSW5saW5lQm94
OjpzZXREZXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgZGVzY2VudCkKK3sKKyAgICBp
ZiAoZGVzY2VudCA8IG1fYmFzZWxpbmUuZGVzY2VudCgpKQorICAgICAgICByZXR1cm47CisgICAg
bV9iYXNlbGluZS5zZXREZXNjZW50KGRlc2NlbnQpOworfQorCitpbmxpbmUgSW5saW5lTGF5b3V0
VW5pdCBJbmxpbmVCb3g6OmJhc2VsaW5lT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9o
YXNWYWxpZEJhc2VsaW5lT2Zmc2V0KTsKKyAgICByZXR1cm4gbV9iYXNlbGluZU9mZnNldDsKK30K
KworaW5saW5lIHZvaWQgSW5saW5lQm94OjpyZXNldEJhc2VsaW5lKCkKK3sKKyNpZiBBU1NFUlRf
RU5BQkxFRAorICAgIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCA9IHRydWU7CisjZW5kaWYKKyAg
ICBtX2Jhc2VsaW5lT2Zmc2V0ID0gMF9sdTsKKyAgICBtX2Jhc2VsaW5lLnJlc2V0KCk7Cit9CisK
K2lubGluZSBJbmxpbmVCb3g6OkJhc2VsaW5lOjpCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGFz
Y2VudCwgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KQorICAgIDogbV9hc2NlbnQoYXNjZW50KQor
ICAgICwgbV9kZXNjZW50KGRlc2NlbnQpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hh
c1ZhbGlkQXNjZW50ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7CisjZW5k
aWYKK30KKworaW5saW5lIHZvaWQgSW5saW5lQm94OjpCYXNlbGluZTo6c2V0QXNjZW50KElubGlu
ZUxheW91dFVuaXQgYXNjZW50KQoreworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgbV9oYXNWYWxp
ZEFzY2VudCA9IHRydWU7CisjZW5kaWYKKyAgICBtX2FzY2VudCA9IGFzY2VudDsKK30KKworaW5s
aW5lIHZvaWQgSW5saW5lQm94OjpCYXNlbGluZTo6c2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0
IGRlc2NlbnQpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlkRGVzY2VudCA9
IHRydWU7CisjZW5kaWYKKyAgICBtX2Rlc2NlbnQgPSBkZXNjZW50OworfQorCitpbmxpbmUgdm9p
ZCBJbmxpbmVCb3g6OkJhc2VsaW5lOjpyZXNldCgpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAg
ICBtX2hhc1ZhbGlkQXNjZW50ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7
CisjZW5kaWYKKyAgICBtX2FzY2VudCA9IDBfbHU7CisgICAgbV9kZXNjZW50ID0gMF9sdTsKK30K
KworaW5saW5lIElubGluZUxheW91dFVuaXQgSW5saW5lQm94OjpCYXNlbGluZTo6YXNjZW50KCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZEFzY2VudCk7CisgICAgcmV0dXJuIG1fYXNj
ZW50OworfQorCitpbmxpbmUgSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVCb3g6OkJhc2VsaW5lOjpk
ZXNjZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZERlc2NlbnQpOworICAgIHJl
dHVybiBtX2Rlc2NlbnQ7Cit9CisKK30KK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94QnVpbGRlci5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveEJ1aWxk
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA1MDk4ZGIwNTk3NjEwZmYwNGQy
MTdmN2JjY2EyMDIwYTFkN2Q4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVM
aW5lQm94QnVpbGRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjQ5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQotCi0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgotI2luY2x1ZGUgIkRpc3BsYXlJbmxpbmVSZWN0
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBMYXlvdXQgewotCi1jbGFzcyBM
aW5lQm94QnVpbGRlciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgc3RydWN0IEJhc2VsaW5lIHsKLSAgICAgICAgQmFzZWxpbmUoSW5saW5lTGF5b3V0VW5pdCBh
c2NlbnQsIElubGluZUxheW91dFVuaXQgZGVzY2VudCk7Ci0gICAgICAgIEJhc2VsaW5lKCkgPSBk
ZWZhdWx0OwotCi0gICAgICAgIHZvaWQgc2V0QXNjZW50KElubGluZUxheW91dFVuaXQpOwotICAg
ICAgICB2b2lkIHNldERlc2NlbnQoSW5saW5lTGF5b3V0VW5pdCk7Ci0KLSAgICAgICAgdm9pZCBy
ZXNldCgpOwotCi0gICAgICAgIElubGluZUxheW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gYXNjZW50KCkgKyBkZXNjZW50KCk7IH0KLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBhc2Nl
bnQoKSBjb25zdDsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KCkgY29uc3Q7Ci0K
LSAgICBwcml2YXRlOgotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAgIGJvb2wgbV9oYXNWYWxp
ZEFzY2VudCB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgbV9oYXNWYWxpZERlc2NlbnQgeyBmYWxz
ZSB9OwotI2VuZGlmCi0gICAgICAgIElubGluZUxheW91dFVuaXQgbV9hc2NlbnQgeyAwIH07Ci0g
ICAgICAgIElubGluZUxheW91dFVuaXQgbV9kZXNjZW50IHsgMCB9OwotICAgIH07Ci0KLSAgICBM
aW5lQm94QnVpbGRlcihjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiwgY29uc3QgQmFzZWxpbmUm
LCBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KTsKLSAgICBMaW5lQm94QnVpbGRlcigp
ID0gZGVmYXVsdDsKLQotICAgIGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmIGxvZ2ljYWxSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9Ci0gICAgY29uc3QgRGlzcGxheTo6SW5saW5lUmVj
dCYgc2Nyb2xsYWJsZU92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlT3ZlcmZs
b3c7IH0KLQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVy
biBtX3JlY3QubGVmdCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQoKSBj
b25zdCB7IHJldHVybiBtX3JlY3QucmlnaHQoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgbG9n
aWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC50b3AoKTsgfQotICAgIElubGluZUxheW91
dFVuaXQgbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5ib3R0b20oKTsgfQot
Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3Jl
Y3Qud2lkdGgoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQotCi0gICAgY29uc3QgQmFzZWxpbmUmIGJhc2Vs
aW5lKCkgY29uc3Q7Ci0gICAgLy8gQmFzZWxpbmUgb2Zmc2V0IGZyb20gbGluZSBsb2dpY2FsIHRv
cC4gTm90ZSB0aGF0IG9mZnNldCBkb2VzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byBhc2NlbnQu
Ci0gICAgLy8KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tICAgIGxpbmUgbG9naWNhbCB0b3Ag
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0gKHRvcCBhbGlnbikKLSAgICAvLyAgICAgICAgICAgICBe
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLSAgICAvLyAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAg
IHwKLSAgICAvLyAgIF4gICAgICAgICB8IGJhc2VsaW5lIG9mZnNldCAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgIHwgYmFzZWxpbmUgb2Zmc2V0Ci0gICAgLy8gICB8ICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8Ci0gICAgLy8gICB8IGFz
Y2VudCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzY2VudCAgICB8Ci0g
ICAgLy8gICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ICAg
ICAgICAgICB2Ci0gICAgLy8gICB2ICAgICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tIGJhc2VsaW5lCi0gICAgLy8gICAtLS0tLS0tLS0tLS0t
LS0tLSBiYXNlbGluZSAgICAgICAgICAgICAgICAgICBeCi0gICAgLy8gICBeICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRlc2NlbnQKLSAgICAvLyAgIHwgZGVz
Y2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKLSAgICAvLyAgIHYKLSAg
ICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tICAgIGxpbmUgbG9naWNhbCBib3R0b20gIC0tLS0tLS0t
LS0tLS0tLS0tLS0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsK
LSAgICB2b2lkIHNldEFzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsKLSAgICB2b2lk
IHNldERlc2NlbnRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7Ci0KLSAgICB2b2lkIHJlc2V0
QmFzZWxpbmUoKTsKLSAgICB2b2lkIHJlc2V0RGVzY2VudCgpIHsgbV9iYXNlbGluZS5zZXREZXNj
ZW50KDBfbHUpOyB9Ci0KLSAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsSGVpZ2h0KSB7IG1fcmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7IH0KLQot
ICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsKLSAg
ICB2b2lkIHNldExvZ2ljYWxXaWR0aChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkgeyBt
X3JlY3Quc2V0V2lkdGgobG9naWNhbFdpZHRoKTsgfQotCi0gICAgdm9pZCBzZXRTY3JvbGxhYmxl
T3ZlcmZsb3coY29uc3QgRGlzcGxheTo6SW5saW5lUmVjdCYgcmVjdCkgeyBtX3Njcm9sbGFibGVP
dmVyZmxvdyA9IHJlY3Q7IH0KLQotICAgIHZvaWQgbW92ZUhvcml6b250YWxseShJbmxpbmVMYXlv
dXRVbml0IGRlbHRhKSB7IG1fcmVjdC5tb3ZlSG9yaXpvbnRhbGx5KGRlbHRhKTsgfQotCi0gICAg
dm9pZCBleHBhbmRIb3Jpem9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBtX3JlY3Qu
ZXhwYW5kSG9yaXpvbnRhbGx5KGRlbHRhKTsgfQotICAgIHZvaWQgc2hyaW5rSG9yaXpvbnRhbGx5
KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgZXhwYW5kSG9yaXpvbnRhbGx5KC1kZWx0YSk7IH0K
LQotICAgIHZvaWQgZXhwYW5kVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IG1f
cmVjdC5leHBhbmRWZXJ0aWNhbGx5KGRlbHRhKTsgfQotICAgIHZvaWQgc2hyaW5rVmVydGljYWxs
eShJbmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IGV4cGFuZFZlcnRpY2FsbHkoLWRlbHRhKTsgfQot
Ci0gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIyL3Zpc3VyZW4uaHRtbCNpbmxpbmUt
Zm9ybWF0dGluZwotICAgIC8vIExpbmUgYm94ZXMgdGhhdCBjb250YWluIG5vIHRleHQsIG5vIHBy
ZXNlcnZlZCB3aGl0ZSBzcGFjZSwgbm8gaW5saW5lIGVsZW1lbnRzIHdpdGggbm9uLXplcm8gbWFy
Z2lucywgcGFkZGluZywgb3IgYm9yZGVycywKLSAgICAvLyBhbmQgbm8gb3RoZXIgaW4tZmxvdyBj
b250ZW50IChzdWNoIGFzIGltYWdlcywgaW5saW5lIGJsb2NrcyBvciBpbmxpbmUgdGFibGVzKSwg
YW5kIGRvIG5vdCBlbmQgd2l0aCBhIHByZXNlcnZlZCBuZXdsaW5lCi0gICAgLy8gbXVzdCBiZSB0
cmVhdGVkIGFzIHplcm8taGVpZ2h0IGxpbmUgYm94ZXMgZm9yIHRoZSBwdXJwb3NlcyBvZiBkZXRl
cm1pbmluZyB0aGUgcG9zaXRpb25zIG9mIGFueSBlbGVtZW50cyBpbnNpZGUgb2YgdGhlbSwKLSAg
ICAvLyBhbmQgbXVzdCBiZSB0cmVhdGVkIGFzIG5vdCBleGlzdGluZyBmb3IgYW55IG90aGVyIHB1
cnBvc2UuCi0gICAgLy8gTm90ZSB0aGF0IGl0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdmlz
dWFsbHkgbm9uLWVtcHR5IGxpbmUuIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDBweCI+dGhpcyBp
cyBzdGlsbCBjb25zaWRlcmVkIG5vbi1lbXB0eTwvc3Bhbj4KLSAgICBib29sIGlzQ29uc2lkZXJl
ZEVtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnNpZGVyZWRFbXB0eTsgfQotICAgIHZvaWQg
c2V0SXNDb25zaWRlcmVkRW1wdHkoKSB7IG1faXNDb25zaWRlcmVkRW1wdHkgPSB0cnVlOyB9Ci0g
ICAgdm9pZCBzZXRJc0NvbnNpZGVyZWROb25FbXB0eSgpIHsgbV9pc0NvbnNpZGVyZWRFbXB0eSA9
IGZhbHNlOyB9Ci0KLXByaXZhdGU6Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBib29sIG1faGFz
VmFsaWRCYXNlbGluZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZz
ZXQgeyBmYWxzZSB9OwotI2VuZGlmCi0gICAgRGlzcGxheTo6SW5saW5lUmVjdCBtX3JlY3Q7Ci0g
ICAgRGlzcGxheTo6SW5saW5lUmVjdCBtX3Njcm9sbGFibGVPdmVyZmxvdzsKLSAgICBCYXNlbGlu
ZSBtX2Jhc2VsaW5lOwotICAgIElubGluZUxheW91dFVuaXQgbV9iYXNlbGluZU9mZnNldCB7IDAg
fTsKLSAgICBib29sIG1faXNDb25zaWRlcmVkRW1wdHkgeyB0cnVlIH07Ci19OwotCi1pbmxpbmUg
TGluZUJveEJ1aWxkZXI6OkxpbmVCb3hCdWlsZGVyKGNvbnN0IERpc3BsYXk6OklubGluZVJlY3Qm
IHJlY3QsIGNvbnN0IEJhc2VsaW5lJiBiYXNlbGluZSwgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGlu
ZU9mZnNldCkKLSAgICA6IG1fcmVjdChyZWN0KQotICAgICwgbV9iYXNlbGluZShiYXNlbGluZSkK
LSAgICAsIG1fYmFzZWxpbmVPZmZzZXQoYmFzZWxpbmVPZmZzZXQpCi17Ci0jaWYgQVNTRVJUX0VO
QUJMRUQKLSAgICBtX2hhc1ZhbGlkQmFzZWxpbmUgPSB0cnVlOwotICAgIG1faGFzVmFsaWRCYXNl
bGluZU9mZnNldCA9IHRydWU7Ci0jZW5kaWYKLX0KLQotaW5saW5lIHZvaWQgTGluZUJveEJ1aWxk
ZXI6OnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVp
Z2h0KQotewotICAgIGlmIChsb2dpY2FsSGVpZ2h0IDw9IG1fcmVjdC5oZWlnaHQoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIG1fcmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7Ci19Ci0KLWlu
bGluZSBjb25zdCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmUmIExpbmVCb3hCdWlsZGVyOjpiYXNl
bGluZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1faGFzVmFsaWRCYXNlbGluZSk7Ci0gICAgcmV0
dXJuIG1fYmFzZWxpbmU7Ci19Ci0KLWlubGluZSB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRCYXNl
bGluZU9mZnNldElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KQotewot
I2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0ID0gdHJ1ZTsK
LSNlbmRpZgotICAgIG1fYmFzZWxpbmVPZmZzZXQgPSBzdGQ6Om1heChiYXNlbGluZU9mZnNldCwg
bV9iYXNlbGluZU9mZnNldCk7Ci19Ci0KLWlubGluZSB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRB
c2NlbnRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQpCi17Ci0gICAgaWYgKGFzY2Vu
dCA8IG1fYmFzZWxpbmUuYXNjZW50KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBzZXRCYXNlbGlu
ZU9mZnNldElmR3JlYXRlcihhc2NlbnQpOwotICAgIG1fYmFzZWxpbmUuc2V0QXNjZW50KGFzY2Vu
dCk7Ci19Ci0KLWlubGluZSB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXREZXNjZW50SWZHcmVhdGVy
KElubGluZUxheW91dFVuaXQgZGVzY2VudCkKLXsKLSAgICBpZiAoZGVzY2VudCA8IG1fYmFzZWxp
bmUuZGVzY2VudCgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9iYXNlbGluZS5zZXREZXNjZW50
KGRlc2NlbnQpOwotfQotCi1pbmxpbmUgSW5saW5lTGF5b3V0VW5pdCBMaW5lQm94QnVpbGRlcjo6
YmFzZWxpbmVPZmZzZXQoKSBjb25zdAotewotICAgIEFTU0VSVChtX2hhc1ZhbGlkQmFzZWxpbmVP
ZmZzZXQpOwotICAgIHJldHVybiBtX2Jhc2VsaW5lT2Zmc2V0OwotfQotCi1pbmxpbmUgdm9pZCBM
aW5lQm94QnVpbGRlcjo6cmVzZXRCYXNlbGluZSgpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOwotI2VuZGlmCi0gICAgbV9iYXNlbGlu
ZU9mZnNldCA9IDBfbHU7Ci0gICAgbV9iYXNlbGluZS5yZXNldCgpOwotfQotCi1pbmxpbmUgTGlu
ZUJveEJ1aWxkZXI6OkJhc2VsaW5lOjpCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGFzY2VudCwg
SW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KQotICAgIDogbV9hc2NlbnQoYXNjZW50KQotICAgICwg
bV9kZXNjZW50KGRlc2NlbnQpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlk
QXNjZW50ID0gdHJ1ZTsKLSAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7Ci0jZW5kaWYKLX0K
LQotaW5saW5lIHZvaWQgTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lOjpzZXRBc2NlbnQoSW5saW5l
TGF5b3V0VW5pdCBhc2NlbnQpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlk
QXNjZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIG1fYXNjZW50ID0gYXNjZW50OwotfQotCi1pbmxp
bmUgdm9pZCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmU6OnNldERlc2NlbnQoSW5saW5lTGF5b3V0
VW5pdCBkZXNjZW50KQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZERlc2Nl
bnQgPSB0cnVlOwotI2VuZGlmCi0gICAgbV9kZXNjZW50ID0gZGVzY2VudDsKLX0KLQotaW5saW5l
IHZvaWQgTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lOjpyZXNldCgpCi17Ci0jaWYgQVNTRVJUX0VO
QUJMRUQKLSAgICBtX2hhc1ZhbGlkQXNjZW50ID0gdHJ1ZTsKLSAgICBtX2hhc1ZhbGlkRGVzY2Vu
dCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2FzY2VudCA9IDBfbHU7Ci0gICAgbV9kZXNjZW50ID0g
MF9sdTsKLX0KLQotaW5saW5lIElubGluZUxheW91dFVuaXQgTGluZUJveEJ1aWxkZXI6OkJhc2Vs
aW5lOjphc2NlbnQoKSBjb25zdAotewotICAgIEFTU0VSVChtX2hhc1ZhbGlkQXNjZW50KTsKLSAg
ICByZXR1cm4gbV9hc2NlbnQ7Ci19Ci0KLWlubGluZSBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3hC
dWlsZGVyOjpCYXNlbGluZTo6ZGVzY2VudCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1faGFzVmFs
aWREZXNjZW50KTsKLSAgICByZXR1cm4gbV9kZXNjZW50OwotfQotCi19Ci19Ci0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IDAyMzYxNThiY2ExYTI1OWY4YWZkZTcwMzJiNWUw
Zjg1M2UxZDI5ODAuLjdjYjcwNTdkM2U4ZTA1NWNjMTE0OWNmYjgzYzYyM2E4ZGVhODI2ZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTkxLDggKzkxLDggQEAgdm9pZCBMaW5lQnVpbGRl
cjo6aW5pdGlhbGl6ZShjb25zdCBDb25zdHJhaW50cyYgY29uc3RyYWludHMpCiAgICAgICAgIG1f
aW5pdGlhbFN0cnV0ID0geyB9OwogCiAgICAgYXV0byBsaW5lUmVjdCA9IERpc3BsYXk6OklubGlu
ZVJlY3QgeyBjb25zdHJhaW50cy5sb2dpY2FsVG9wTGVmdCwgMF9sdSwgaW5pdGlhbExpbmVIZWln
aHQgfTsKLSAgICBhdXRvIGJhc2VsaW5lID0gTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lIHsgaW5p
dGlhbEJhc2VsaW5lT2Zmc2V0LCBpbml0aWFsTGluZUhlaWdodCAtIGluaXRpYWxCYXNlbGluZU9m
ZnNldCB9OwotICAgIG1fbGluZUJveCA9IExpbmVCb3hCdWlsZGVyIHsgbGluZVJlY3QsIGJhc2Vs
aW5lLCBpbml0aWFsQmFzZWxpbmVPZmZzZXQgfTsKKyAgICBhdXRvIGJhc2VsaW5lID0gSW5saW5l
Qm94OjpCYXNlbGluZSB7IGluaXRpYWxCYXNlbGluZU9mZnNldCwgaW5pdGlhbExpbmVIZWlnaHQg
LSBpbml0aWFsQmFzZWxpbmVPZmZzZXQgfTsKKyAgICBtX2xpbmVCb3ggPSBJbmxpbmVCb3ggeyBs
aW5lUmVjdCwgYmFzZWxpbmUsIGluaXRpYWxCYXNlbGluZU9mZnNldCB9OwogICAgIG1fbGluZUxv
Z2ljYWxXaWR0aCA9IGNvbnN0cmFpbnRzLmF2YWlsYWJsZUxvZ2ljYWxXaWR0aDsKICAgICBtX2hh
c0ludHJ1c2l2ZUZsb2F0ID0gY29uc3RyYWludHMubGluZUlzQ29uc3RyYWluZWRCeUZsb2F0Owog
CkBAIC0xMTEsNDUgKzExMSw0NCBAQCB2b2lkIExpbmVCdWlsZGVyOjpyZXNldENvbnRlbnQoKQog
TGluZUJ1aWxkZXI6OlJ1bkxpc3QgTGluZUJ1aWxkZXI6OmNsb3NlKElzTGFzdExpbmVXaXRoSW5s
aW5lQ29udGVudCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpCiB7CiAgICAgLy8gMS4gUmVt
b3ZlIHRyaW1tYWJsZSB0cmFpbGluZyBjb250ZW50LgotICAgIC8vIDIuIEpvaW4gdGV4dCBydW5z
IHRvZ2V0aGVyIHdoZW4gcG9zc2libGUgW2Zvb11bIF1bYmFyXSAtPiBbZm9vIGJhcl0uCi0gICAg
Ly8gMy4gQWxpZ24gbWVyZ2VkIHJ1bnMgYm90aCB2ZXJ0aWNhbGx5IGFuZCBob3Jpem9udGFsbHku
CisgICAgLy8gMi4gQWxpZ24gbWVyZ2VkIHJ1bnMgYm90aCB2ZXJ0aWNhbGx5IGFuZCBob3Jpem9u
dGFsbHkuCiAgICAgcmVtb3ZlVHJhaWxpbmdUcmltbWFibGVDb250ZW50KCk7CiAgICAgdmlzdWFs
bHlDb2xsYXBzZVByZVdyYXBPdmVyZmxvd0NvbnRlbnQoKTsKLSAgICBhdXRvIGhhbmdpbmdDb250
ZW50ID0gY29sbGVjdEhhbmdpbmdDb250ZW50KGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCk7
CisgICAgaWYgKG1faXNJbnRyaW5zaWNTaXppbmcpCisgICAgICAgIHJldHVybiBXVEZNb3ZlKG1f
cnVucyk7CiAKLSAgICBpZiAoIW1faXNJbnRyaW5zaWNTaXppbmcpIHsKLSAgICAgICAgdW5zaWdu
ZWQgaW5saW5lQ29udGFpbmVyTmVzdGluZ0xldmVsID0gMDsKLSAgICAgICAgYXV0byBoYXNTZWVu
VGV4dE9yTGluZUJyZWFrID0gZmFsc2U7Ci0gICAgICAgIGZvciAoYXV0byYgcnVuIDogbV9ydW5z
KSB7Ci0gICAgICAgICAgICBydW4uc2V0TG9naWNhbEhlaWdodChydW5Db250ZW50SGVpZ2h0KHJ1
bikpOwotICAgICAgICAgICAgaW5saW5lQ29udGFpbmVyTmVzdGluZ0xldmVsID0gcnVuLmlzQ29u
dGFpbmVyU3RhcnQoKSA/IGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbCArIDEgOiBydW4uaXND
b250YWluZXJFbmQoKSA/IGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbCAtIDEgOiBpbmxpbmVD
b250YWluZXJOZXN0aW5nTGV2ZWw7Ci0gICAgICAgICAgICBhdXRvIHJ1bklzVGV4dE9yTGluZUJy
ZWFrID0gcnVuLmlzVGV4dCgpIHx8IHJ1bi5pc0xpbmVCcmVhaygpOwotICAgICAgICAgICAgaWYg
KHJ1bklzVGV4dE9yTGluZUJyZWFrKSB7Ci0gICAgICAgICAgICAgICAgLy8gRm9yIHRleHQgY29u
dGVudCB3ZSBzZXQgdGhlIGJhc2VsaW5lIGVpdGhlciB0aHJvdWdoIHRoZSBpbml0aWFsIHN0cnV0
IChzZXQgYnkgdGhlIGZvcm1hdHRpbmcgY29udGV4dCByb290KSBvcgotICAgICAgICAgICAgICAg
IC8vIHRocm91Z2ggdGhlIGlubGluZSBjb250YWluZXIgKHN0YXJ0KS4gTm9ybWFsbHkgdGhlIHRl
eHQgY29udGVudCBpdHNlbGYgZG9lcyBub3Qgc3RyZXRjaCB0aGUgbGluZS4KLSAgICAgICAgICAg
ICAgICBpZiAoaGFzU2VlblRleHRPckxpbmVCcmVhaykKLSAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAgICAgaGFzU2VlblRleHRPckxpbmVCcmVhayA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFtX2luaXRpYWxTdHJ1dCkKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZl
bCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBhdXRvJiB1c2VkQmFzZWxpbmUgPSBydW5Jc1RleHRPckxpbmVCcmVhayA/ICptX2luaXRp
YWxTdHJ1dCA6IG1fbGluZUJveC5iYXNlbGluZSgpOwotICAgICAgICAgICAgYWRqdXN0QmFzZWxp
bmVBbmRMaW5lSGVpZ2h0KHJ1biwgdXNlZEJhc2VsaW5lKTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoaXNWaXN1YWxseUVtcHR5KCkpIHsKLSAgICAgICAgICAgIG1fbGluZUJveC5yZXNldEJhc2Vs
aW5lKCk7Ci0gICAgICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodCh7IH0pOwotICAg
ICAgICB9Ci0gICAgICAgIC8vIFJlbW92ZSBkZXNjZW50IHdoZW4gYWxsIGNvbnRlbnQgaXMgYmFz
ZWxpbmUgYWxpZ25lZCBidXQgbm9uZSBvZiB0aGVtIGhhdmUgZGVzY2VudC4KLSAgICAgICAgaWYg
KGZvcm1hdHRpbmdDb250ZXh0KCkucXVpcmtzKCkubGluZURlc2NlbnROZWVkc0NvbGxhcHNpbmco
bV9ydW5zKSkgewotICAgICAgICAgICAgbV9saW5lQm94LnNocmlua1ZlcnRpY2FsbHkobV9saW5l
Qm94LmJhc2VsaW5lKCkuZGVzY2VudCgpKTsKLSAgICAgICAgICAgIG1fbGluZUJveC5yZXNldERl
c2NlbnQoKTsKKyAgICBhdXRvIGhhbmdpbmdDb250ZW50ID0gY29sbGVjdEhhbmdpbmdDb250ZW50
KGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCk7CisgICAgdW5zaWduZWQgaW5saW5lQ29udGFp
bmVyTmVzdGluZ0xldmVsID0gMDsKKyAgICBhdXRvIGhhc1NlZW5UZXh0T3JMaW5lQnJlYWsgPSBm
YWxzZTsKKyAgICBmb3IgKGF1dG8mIHJ1biA6IG1fcnVucykgeworICAgICAgICBydW4uc2V0TG9n
aWNhbEhlaWdodChydW5Db250ZW50SGVpZ2h0KHJ1bikpOworICAgICAgICBpbmxpbmVDb250YWlu
ZXJOZXN0aW5nTGV2ZWwgPSBydW4uaXNDb250YWluZXJTdGFydCgpID8gaW5saW5lQ29udGFpbmVy
TmVzdGluZ0xldmVsICsgMSA6IHJ1bi5pc0NvbnRhaW5lckVuZCgpID8gaW5saW5lQ29udGFpbmVy
TmVzdGluZ0xldmVsIC0gMSA6IGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbDsKKyAgICAgICAg
YXV0byBydW5Jc1RleHRPckxpbmVCcmVhayA9IHJ1bi5pc1RleHQoKSB8fCBydW4uaXNMaW5lQnJl
YWsoKTsKKyAgICAgICAgaWYgKHJ1bklzVGV4dE9yTGluZUJyZWFrKSB7CisgICAgICAgICAgICAv
LyBGb3IgdGV4dCBjb250ZW50IHdlIHNldCB0aGUgYmFzZWxpbmUgZWl0aGVyIHRocm91Z2ggdGhl
IGluaXRpYWwgc3RydXQgKHNldCBieSB0aGUgZm9ybWF0dGluZyBjb250ZXh0IHJvb3QpIG9yCisg
ICAgICAgICAgICAvLyB0aHJvdWdoIHRoZSBpbmxpbmUgY29udGFpbmVyIChzdGFydCkuIE5vcm1h
bGx5IHRoZSB0ZXh0IGNvbnRlbnQgaXRzZWxmIGRvZXMgbm90IHN0cmV0Y2ggdGhlIGxpbmUuCisg
ICAgICAgICAgICBpZiAoaGFzU2VlblRleHRPckxpbmVCcmVhaykKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGhhc1NlZW5UZXh0T3JMaW5lQnJlYWsgPSB0cnVlOworICAg
ICAgICAgICAgaWYgKCFtX2luaXRpYWxTdHJ1dCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGlmIChpbmxpbmVDb250YWluZXJOZXN0aW5nTGV2ZWwpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgYWxpZ25Db250ZW50VmVydGljYWxs
eSgpOwotICAgICAgICBhbGlnbkhvcml6b250YWxseShoYW5naW5nQ29udGVudCwgaXNMYXN0TGlu
ZVdpdGhJbmxpbmVDb250ZW50KTsKKyAgICAgICAgYXV0byYgdXNlZEJhc2VsaW5lID0gcnVuSXNU
ZXh0T3JMaW5lQnJlYWsgPyAqbV9pbml0aWFsU3RydXQgOiBtX2xpbmVCb3guYmFzZWxpbmUoKTsK
KyAgICAgICAgYWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KHJ1biwgbV9saW5lQm94LCB1c2Vk
QmFzZWxpbmUpOworICAgIH0KKyAgICBpZiAoaXNWaXN1YWxseUVtcHR5KCkpIHsKKyAgICAgICAg
bV9saW5lQm94LnJlc2V0QmFzZWxpbmUoKTsKKyAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxI
ZWlnaHQoeyB9KTsKKyAgICB9CisgICAgLy8gUmVtb3ZlIGRlc2NlbnQgd2hlbiBhbGwgY29udGVu
dCBpcyBiYXNlbGluZSBhbGlnbmVkIGJ1dCBub25lIG9mIHRoZW0gaGF2ZSBkZXNjZW50LgorICAg
IGlmIChmb3JtYXR0aW5nQ29udGV4dCgpLnF1aXJrcygpLmxpbmVEZXNjZW50TmVlZHNDb2xsYXBz
aW5nKG1fcnVucykpIHsKKyAgICAgICAgbV9saW5lQm94LnNocmlua1ZlcnRpY2FsbHkobV9saW5l
Qm94LmJhc2VsaW5lKCkuZGVzY2VudCgpKTsKKyAgICAgICAgbV9saW5lQm94LnJlc2V0RGVzY2Vu
dCgpOwogICAgIH0KKyAgICBhbGlnbkNvbnRlbnRWZXJ0aWNhbGx5KCk7CisgICAgYWxpZ25Ib3Jp
em9udGFsbHkoaGFuZ2luZ0NvbnRlbnQsIGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCk7CiAg
ICAgcmV0dXJuIFdURk1vdmUobV9ydW5zKTsKIH0KIApAQCAtNTY5LDEyICs1NjgsMTIgQEAgdm9p
ZCBMaW5lQnVpbGRlcjo6YXBwZW5kTGluZUJyZWFrKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0
ZW0pCiAgICAgbV9ydW5zLmFwcGVuZCh7IGRvd25jYXN0PElubGluZVNvZnRMaW5lQnJlYWtJdGVt
PihpbmxpbmVJdGVtKSwgY29udGVudExvZ2ljYWxXaWR0aCgpIH0pOwogfQogCi12b2lkIExpbmVC
dWlsZGVyOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgUnVuJiBydW4sIGNvbnN0
IExpbmVCb3hCdWlsZGVyOjpCYXNlbGluZSYgdXNlZEJhc2VsaW5lKQordm9pZCBMaW5lQnVpbGRl
cjo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IFJ1biYgcnVuLCBJbmxpbmVCb3gm
IHBhcmVudElubGluZUJveCwgY29uc3QgSW5saW5lQm94OjpCYXNlbGluZSYgdXNlZEJhc2VsaW5l
KQogewogICAgIGlmIChydW4uaXNUZXh0KCkgfHwgcnVuLmlzTGluZUJyZWFrKCkpIHsKLSAgICAg
ICAgbV9saW5lQm94LnNldEFzY2VudElmR3JlYXRlcih1c2VkQmFzZWxpbmUuYXNjZW50KCkpOwot
ICAgICAgICBtX2xpbmVCb3guc2V0RGVzY2VudElmR3JlYXRlcih1c2VkQmFzZWxpbmUuZGVzY2Vu
dCgpKTsKLSAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIodXNlZEJh
c2VsaW5lLmhlaWdodCgpKTsKKyAgICAgICAgcGFyZW50SW5saW5lQm94LnNldEFzY2VudElmR3Jl
YXRlcih1c2VkQmFzZWxpbmUuYXNjZW50KCkpOworICAgICAgICBwYXJlbnRJbmxpbmVCb3guc2V0
RGVzY2VudElmR3JlYXRlcih1c2VkQmFzZWxpbmUuZGVzY2VudCgpKTsKKyAgICAgICAgcGFyZW50
SW5saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIodXNlZEJhc2VsaW5lLmhlaWdodCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTg4LDEyICs1ODcsMTIgQEAgdm9pZCBM
aW5lQnVpbGRlcjo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IFJ1biYgcnVuLCBj
b25zdCBMaW5lQm94QnVpbGQKICAgICAgICAgICAgIGF1dG8gaGFsZkxlYWRpbmcgPSBoYWxmTGVh
ZGluZ01ldHJpY3MoZm9udE1ldHJpY3MsIHN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKTsKICAg
ICAgICAgICAgIC8vIEJvdGggaGFsZmxlYWRpbmcgYXNjZW50IGFuZCBkZXNjZW50IGNvdWxkIGJl
IG5lZ2F0aXZlICh0YWxsIGZvbnQgdnMuIHNtYWxsIGxpbmUtaGVpZ2h0IHZhbHVlKQogICAgICAg
ICAgICAgaWYgKGhhbGZMZWFkaW5nLmRlc2NlbnQoKSA+IDApCi0gICAgICAgICAgICAgICAgbV9s
aW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIoaGFsZkxlYWRpbmcuZGVzY2VudCgpKTsKKyAgICAg
ICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3guc2V0RGVzY2VudElmR3JlYXRlcihoYWxmTGVhZGlu
Zy5kZXNjZW50KCkpOwogICAgICAgICAgICAgaWYgKGhhbGZMZWFkaW5nLmFzY2VudCgpID4gMCkK
LSAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0QXNjZW50SWZHcmVhdGVyKGhhbGZMZWFkaW5n
LmFzY2VudCgpKTsKLSAgICAgICAgICAgIG1fbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVh
dGVyKHVzZWRCYXNlbGluZS5oZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgcGFyZW50SW5saW5l
Qm94LnNldEFzY2VudElmR3JlYXRlcihoYWxmTGVhZGluZy5hc2NlbnQoKSk7CisgICAgICAgICAg
ICBwYXJlbnRJbmxpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcih1c2VkQmFzZWxpbmUu
aGVpZ2h0KCkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fbGluZUJveC5zZXRMb2dp
Y2FsSGVpZ2h0SWZHcmVhdGVyKGZvbnRNZXRyaWNzLmhlaWdodCgpKTsKKyAgICAgICAgICAgIHBh
cmVudElubGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKGZvbnRNZXRyaWNzLmhlaWdo
dCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjE2LDI4ICs2MTUsMjggQEAgdm9p
ZCBMaW5lQnVpbGRlcjo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IFJ1biYgcnVu
LCBjb25zdCBMaW5lQm94QnVpbGQKICAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJsb2NrQmFz
ZWxpbmUgPSBsYXN0TGluZUJveC5iYXNlbGluZSgpOwogICAgICAgICAgICAgICAgIGF1dG8gYmVm
b3JlSGVpZ2h0ID0gYm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkgKyBib3hHZW9tZXRyeS5ib3Jk
ZXJUb3AoKSArIGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApOwogCi0gICAgICAg
ICAgICAgICAgbV9saW5lQm94LnNldEFzY2VudElmR3JlYXRlcihpbmxpbmVCbG9ja0Jhc2VsaW5l
LmFzY2VudCgpKTsKLSAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0RGVzY2VudElmR3JlYXRl
cihpbmxpbmVCbG9ja0Jhc2VsaW5lLmRlc2NlbnQoKSk7Ci0gICAgICAgICAgICAgICAgbV9saW5l
Qm94LnNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKGJlZm9yZUhlaWdodCArIGxhc3RMaW5lQm94
LmJhc2VsaW5lT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgIG1fbGluZUJveC5zZXRMb2dpY2Fs
SGVpZ2h0SWZHcmVhdGVyKG1hcmdpbkJveEhlaWdodCk7CisgICAgICAgICAgICAgICAgcGFyZW50
SW5saW5lQm94LnNldEFzY2VudElmR3JlYXRlcihpbmxpbmVCbG9ja0Jhc2VsaW5lLmFzY2VudCgp
KTsKKyAgICAgICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3guc2V0RGVzY2VudElmR3JlYXRlcihp
bmxpbmVCbG9ja0Jhc2VsaW5lLmRlc2NlbnQoKSk7CisgICAgICAgICAgICAgICAgcGFyZW50SW5s
aW5lQm94LnNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKGJlZm9yZUhlaWdodCArIGxhc3RMaW5l
Qm94LmJhc2VsaW5lT2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIHBhcmVudElubGluZUJveC5z
ZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKG1hcmdpbkJveEhlaWdodCk7CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIE5vbiBpbmxpbmUtYmxvY2sgYm94ZXMgc2l0IG9u
IHRoZSBiYXNlbGluZSAoaW5jbHVkaW5nIHRoZWlyIGJvdHRvbSBtYXJnaW4pLgotICAgICAgICAg
ICAgICAgIG1fbGluZUJveC5zZXRBc2NlbnRJZkdyZWF0ZXIobWFyZ2luQm94SGVpZ2h0KTsKKyAg
ICAgICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3guc2V0QXNjZW50SWZHcmVhdGVyKG1hcmdpbkJv
eEhlaWdodCk7CiAgICAgICAgICAgICAgICAgLy8gSWdub3JlIG5lZ2F0aXZlIGRlc2NlbnQgKHll
cywgbmVnYXRpdmUgZGVzY2VudCBpcyBhIHRoaW5nKS4KLSAgICAgICAgICAgICAgICBtX2xpbmVC
b3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihtYXJnaW5Cb3hIZWlnaHQgKyBzdGQ6Om1heDxJ
bmxpbmVMYXlvdXRVbml0PigwLCB1c2VkQmFzZWxpbmUuZGVzY2VudCgpKSk7CisgICAgICAgICAg
ICAgICAgcGFyZW50SW5saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIobWFyZ2luQm94
SGVpZ2h0ICsgc3RkOjptYXg8SW5saW5lTGF5b3V0VW5pdD4oMCwgdXNlZEJhc2VsaW5lLmRlc2Nl
bnQoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUb3A6CiAgICAgICAgICAgICAvLyBUb3AgYWxpZ24g
Y29udGVudCBuZXZlciBjaGFuZ2VzIHRoZSBiYXNlbGluZSwgaXQgb25seSBwdXNoZXMgdGhlIGJv
dHRvbSBvZiB0aGUgbGluZSBmdXJ0aGVyIGRvd24uCi0gICAgICAgICAgICBtX2xpbmVCb3guc2V0
TG9naWNhbEhlaWdodElmR3JlYXRlcihtYXJnaW5Cb3hIZWlnaHQpOworICAgICAgICAgICAgcGFy
ZW50SW5saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIobWFyZ2luQm94SGVpZ2h0KTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbTog
ewogICAgICAgICAgICAgLy8gQm90dG9tIGFsaWduZWQsIHRhbGwgY29udGVudCBwdXNoZXMgdGhl
IGJhc2VsaW5lIGZ1cnRoZXIgZG93biBmcm9tIHRoZSBsaW5lIHRvcC4KLSAgICAgICAgICAgIGF1
dG8gbGluZUxvZ2ljYWxIZWlnaHQgPSBtX2xpbmVCb3gubG9naWNhbEhlaWdodCgpOworICAgICAg
ICAgICAgYXV0byBsaW5lTG9naWNhbEhlaWdodCA9IHBhcmVudElubGluZUJveC5sb2dpY2FsSGVp
Z2h0KCk7CiAgICAgICAgICAgICBpZiAobWFyZ2luQm94SGVpZ2h0ID4gbGluZUxvZ2ljYWxIZWln
aHQpIHsKLSAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRl
cihtYXJnaW5Cb3hIZWlnaHQpOwotICAgICAgICAgICAgICAgIG1fbGluZUJveC5zZXRCYXNlbGlu
ZU9mZnNldElmR3JlYXRlcihtX2xpbmVCb3guYmFzZWxpbmVPZmZzZXQoKSArIChtYXJnaW5Cb3hI
ZWlnaHQgLSBsaW5lTG9naWNhbEhlaWdodCkpOworICAgICAgICAgICAgICAgIHBhcmVudElubGlu
ZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKG1hcmdpbkJveEhlaWdodCk7CisgICAgICAg
ICAgICAgICAgcGFyZW50SW5saW5lQm94LnNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKHBhcmVu
dElubGluZUJveC5iYXNlbGluZU9mZnNldCgpICsgKG1hcmdpbkJveEhlaWdodCAtIGxpbmVMb2dp
Y2FsSGVpZ2h0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtNzAzLDcgKzcwMiw3IEBAIGJvb2wgTGluZUJ1aWxkZXI6OmlzVmlzdWFsbHlOb25FbXB0
eShjb25zdCBSdW4mIHJ1bikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUxpbmVCb3hC
dWlsZGVyOjpCYXNlbGluZSBMaW5lQnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZv
bnRNZXRyaWNzJiBmb250TWV0cmljcywgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdo
dCkKK0lubGluZUJveDo6QmFzZWxpbmUgTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhj
b25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2lj
YWxIZWlnaHQpCiB7CiAgICAgYXV0byBhc2NlbnQgPSBmb250TWV0cmljcy5hc2NlbnQoKTsKICAg
ICBhdXRvIGRlc2NlbnQgPSBmb250TWV0cmljcy5kZXNjZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIu
aAppbmRleCBiOGFjMGIxYzUxMzI5MTdmMTEwODcyYTQ4MDA3YTllYjMxYWYzN2E5Li40NWI5MGZh
ZWQ4NjhlNTVmY2JiM2FjY2U3ZjA4MzI1MjY0MWZmMzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgK
QEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkRpc3BsYXlSdW4uaCIKICNpbmNsdWRlICJJ
bmxpbmVJdGVtLmgiCi0jaW5jbHVkZSAiSW5saW5lTGluZUJveEJ1aWxkZXIuaCIKKyNpbmNsdWRl
ICJJbmxpbmVMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEl0ZW0uaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0cnVjdCBI
ZWlnaHRBbmRCYXNlbGluZSB7CiAgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGhlaWdodCB7
IDAgfTsKICAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQgeyAwIH07
Ci0gICAgICAgICAgICBPcHRpb25hbDxMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmU+IHN0cnV0Owor
ICAgICAgICAgICAgT3B0aW9uYWw8SW5saW5lQm94OjpCYXNlbGluZT4gc3RydXQ7CiAgICAgICAg
IH07CiAgICAgICAgIE9wdGlvbmFsPEhlaWdodEFuZEJhc2VsaW5lPiBoZWlnaHRBbmRCYXNlbGlu
ZTsKICAgICB9OwpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgSW5saW5lTGF5b3V0VW5p
dCB0cmltbWFibGVUcmFpbGluZ1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV90cmltbWFibGVUcmFp
bGluZ0NvbnRlbnQud2lkdGgoKTsgfQogICAgIGJvb2wgaXNUcmFpbGluZ1J1bkZ1bGx5VHJpbW1h
YmxlKCkgY29uc3QgeyByZXR1cm4gbV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQuaXNUcmFpbGlu
Z1J1bkZ1bGx5VHJpbW1hYmxlKCk7IH0KIAotICAgIGNvbnN0IExpbmVCb3hCdWlsZGVyJiBsaW5l
Qm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94OyB9CisgICAgY29uc3QgSW5saW5lQm94JiBs
aW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94OyB9CiAgICAgdm9pZCBtb3ZlTG9naWNh
bExlZnQoSW5saW5lTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBtb3ZlTG9naWNhbFJpZ2h0KElubGlu
ZUxheW91dFVuaXQpOwogICAgIHZvaWQgc2V0SGFzSW50cnVzaXZlRmxvYXQoKSB7IG1faGFzSW50
cnVzaXZlRmxvYXQgPSB0cnVlOyB9CkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogICAgIGVu
dW0gY2xhc3MgSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50IHsgTm8sIFllcyB9OwogICAgIFJ1
bkxpc3QgY2xvc2UoSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50ID0gSXNMYXN0TGluZVdpdGhJ
bmxpbmVDb250ZW50OjpObyk7CiAKLSAgICBzdGF0aWMgTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5l
IGhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYsIElubGluZUxheW91dFVuaXQg
bGluZUxvZ2ljYWxIZWlnaHQpOworICAgIHN0YXRpYyBJbmxpbmVCb3g6OkJhc2VsaW5lIGhhbGZM
ZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYsIElubGluZUxheW91dFVuaXQgbGluZUxv
Z2ljYWxIZWlnaHQpOwogCiBwcml2YXRlOgogICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFRv
cCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveC5sb2dpY2FsVG9wKCk7IH0KQEAgLTE4Myw3ICsx
ODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWxpZ25Ib3Jpem9udGFsbHkoY29uc3QgSGFuZ2lu
Z0NvbnRlbnQmLCBJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpOwogICAgIHZvaWQgYWxpZ25D
b250ZW50VmVydGljYWxseSgpOwogCi0gICAgdm9pZCBhZGp1c3RCYXNlbGluZUFuZExpbmVIZWln
aHQoY29uc3QgUnVuJiwgY29uc3QgTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lJik7CisgICAgdm9p
ZCBhZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgUnVuJiwgSW5saW5lQm94JiBwYXJl
bnRJbmxpbmVCb3gsIGNvbnN0IElubGluZUJveDo6QmFzZWxpbmUmKTsKICAgICBJbmxpbmVMYXlv
dXRVbml0IHJ1bkNvbnRlbnRIZWlnaHQoY29uc3QgUnVuJikgY29uc3Q7CiAKICAgICB2b2lkIGp1
c3RpZnlSdW5zKElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpOwpAQCAtMjE5LDEyICsy
MTksMTIgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgbV9p
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKICAgICBSdW5MaXN0IG1fcnVuczsKICAgICBUcmltbWFi
bGVUcmFpbGluZ0NvbnRlbnQgbV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQ7Ci0gICAgT3B0aW9u
YWw8TGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lPiBtX2luaXRpYWxTdHJ1dDsKKyAgICBPcHRpb25h
bDxJbmxpbmVCb3g6OkJhc2VsaW5lPiBtX2luaXRpYWxTdHJ1dDsKICAgICBJbmxpbmVMYXlvdXRV
bml0IG1fbGluZUxvZ2ljYWxXaWR0aCB7IDAgfTsKICAgICBPcHRpb25hbDxUZXh0QWxpZ25Nb2Rl
PiBtX2hvcml6b250YWxBbGlnbm1lbnQ7CiAgICAgYm9vbCBtX2lzSW50cmluc2ljU2l6aW5nIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faGFzSW50cnVzaXZlRmxvYXQgeyBmYWxzZSB9OwotICAgIExp
bmVCb3hCdWlsZGVyIG1fbGluZUJveDsKKyAgICBJbmxpbmVCb3ggbV9saW5lQm94OwogICAgIE9w
dGlvbmFsPGJvb2w+IG1fbGluZUlzVmlzdWFsbHlFbXB0eUJlZm9yZVRyaW1tYWJsZVRyYWlsaW5n
Q29udGVudDsKICAgICBib29sIG1fc2hvdWxkSWdub3JlVHJhaWxpbmdMZXR0ZXJTcGFjaW5nIHsg
ZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaAppbmRleCA1ZWU1ZDVmNzZiY2VjNDIxNTU2
NTllNmM2ZDI2ZTM1YjQ0NDg4NTRmLi4wNjc5N2I2YjFhNDYyYmQ3MTk2MDc4MzQzMmI3MWFjYjE1
YmM0MTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9MaW5lTGF5b3V0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
ICAgICAgICB1c2luZyBGbG9hdExpc3QgPSBWZWN0b3I8RmxvYXQ+OwogICAgICAgICBGbG9hdExp
c3QgZmxvYXRzOwogICAgICAgICBjb25zdCBMaW5lQnVpbGRlcjo6UnVuTGlzdCBydW5MaXN0Owot
ICAgICAgICBjb25zdCBMaW5lQm94QnVpbGRlciBsaW5lQm94OworICAgICAgICBjb25zdCBJbmxp
bmVCb3ggbGluZUJveDsKICAgICB9OwogICAgIHN0cnVjdCBJbmxpbmVJdGVtUmFuZ2UgewogICAg
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBzdGFydCA9PSBlbmQ7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404527</attachid>
            <date>2020-07-16 20:16:49 -0700</date>
            <delta_ts>2020-08-22 16:26:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214406-20200716201648.patch</filename>
            <type>text/plain</type>
            <size>38145</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY2MTliZTA4OTMwZWE5
ZDA5N2EyMjlhZTEwZTc5MDA2NDgyY2VkYS4uODMyYzExNTA0OWJkZGFhYTJkYjUzYzcxMTQ0NTdi
MDE4ODBkMGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTA3LTE2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBhZGp1c3RC
YXNlbGluZUFuZExpbmVIZWlnaHQgc2hvdWxkIHRha2UgdGhlIHBhcmVudCBpbmxpbmUgYm94Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NDA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBp
biBwcmVwYXJ0aW9uIGZvciBzdXBwb3J0aW5nIG5lc3RlZCBsaW5lYm94ZXMgcmVxdWlyZWQgYnkg
Y2VydGFpbiB2ZXJ0aWNhbCBhbGlnbm1lbnQgdmFsdWVzLgorCisgICAgICAgIDxkaXY+dGV4dCBj
b250ZW50PC9kaXY+IDwtIFRoaXMgY29udGVudCByZXF1aXJlcyBvbmx5IG9uZSBpbmxpbmUgYm94
LCB0aGUgcm9vdCBsaW5lYm94LgorICAgICAgICA8ZGl2Pm5lc3RlZCA8c3Bhbj48c3BhbiBzdHls
ZT0idmVydGljYWwtYWxpZ246IHRleHQtdG9wIj50ZXh0PC9zcGFuPiA8L3NwYW4+Y29udGVudDwv
ZGl2PiA8LSB0aGUgY29udGVudCBbdGV4dF0gaXMgdmVydGljYWxseQorICAgICAgICBhbGlnbmVk
IHdpdGggdGhlIHRvcCBvZiB0aGUgX3BhcmVudCBlbGVtZW50XydzIGZvbnQgYW5kIG5vdCB0aGUg
cm9vdCBpbmxpbmUgYm94LgorCisgICAgICAgIDEuIExldCdzIHJlbmFtZSB0aGUgTGluZUJveEJ1
aWxkZXIgdG8gSW5saW5lQm94LiBXZSdsbCBoYXZlIGEgYnVuY2ggb2YgdGhlc2UuCisgICAgICAg
IDIuIFBhc3MgaW4gdGhlIHBhcmVudCBpbmxpbmUgdG8gYWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVp
Z2h0IChjdXJyZW50bHkgdGhlcmUncyBvbmx5IG9uZSBpbmxpbmUgYm94IHBlciBsaW5lLCB0aGUg
cm9vdCBpbmxpbmUgYm94KS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmxpbmVIZWlnaHRDb25zdHJhaW50cyBjb25zdCk6Cisg
ICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJv
eEJ1aWxkZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6
OmhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2lj
YWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2Nyb2xs
YWJsZU92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6
bG9naWNhbExlZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojps
b2dpY2FsUmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojps
b2dpY2FsVG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9n
aWNhbEJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6Omxv
Z2ljYWxXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6Omxv
Z2ljYWxIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpy
ZXNldERlc2NlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRMb2dp
Y2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0TG9naWNh
bFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0U2Nyb2xsYWJs
ZU92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bW92ZUhvcml6
b250YWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmV4cGFuZEhvcml6
b250YWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNocmlua0hvcml6
b250YWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmV4cGFuZFZlcnRp
Y2FsbHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzaHJpbmtWZXJ0aWNh
bGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6aXNDb25zaWRlcmVkRW1w
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRJc0NvbnNp
ZGVyZWRFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldElzQ29u
c2lkZXJlZE5vbkVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6TGlu
ZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldExvZ2ljYWxIZWln
aHRJZkdyZWF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpiYXNlbGlu
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldEJhc2VsaW5l
T2Zmc2V0SWZHcmVhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0
QXNjZW50SWZHcmVhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0
RGVzY2VudElmR3JlYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmJh
c2VsaW5lT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6
cmVzZXRCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2Vs
aW5lOjpCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2Vs
aW5lOjpzZXRBc2NlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpCYXNl
bGluZTo6c2V0RGVzY2VudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJh
c2VsaW5lOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2Vs
aW5lOjphc2NlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpC
YXNlbGluZTo6ZGVzY2VudCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphZGp1
c3RCYXNlbGluZUFuZExpbmVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
aW5lQnVpbGRlcjo6bGluZUJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvTGluZUxheW91dENvbnRleHQuaDoKKwogMjAyMC0wNy0xNCAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gUmVtb3ZlIERpc3BsYXk6Okxp
bmVCb3g6OmlzQ29uc2lkZXJlZEVtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDc3MzJiZGIyNjcwZDlhYzJlYjcxNWRlMGE1
MzZmOGQwMzdhOGM2NS4uZmIzZmM2NWE5MmY0YTQ3Y2IwOTViMzhmNzFhZDAwYzk2YjUwOWFkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjA2Miw3ICsyMDYyLDcgQEAKIAkJNkY5OTVBM0ExQTcwODMzNzAwQTczNUY0IC8qIEpT
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkY5OTVBMzAxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdC5oICovOyB9OwogCQk2RkE0NDU0RTg5OEYyRkMxNjhCQzM4QzEgLyogSlNCZWZv
cmVVbmxvYWRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjlFMDRBMjdCRUQyRjgxRjk4RTkwMjJCIC8qIEpTQmVmb3JlVW5sb2FkRXZlbnQuaCAq
LzsgfTsKIAkJNkZCMTFCNUMyMTc4M0ZEMDAwRTJBNTc0IC8qIFRleHRVdGlsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkIxMUI1OTIxNzgzRkNGMDBF
MkE1NzQgLyogVGV4dFV0aWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk2RkIyNDAwNTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lTGluZUJveEJ1
aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZG
QjI0MDAzMjNERkYxMjcwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94QnVpbGRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZGQjI0MDA1MjNERkYx
MjgwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RkIyNDAwMzIzREZGMTI3MDA3OTY0NTggLyogSW5saW5lTGlu
ZUJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTZGQjQ3RTYzMjI3NzQyNUEwMEM3QkNCMCAvKiBEaXNwbGF5TGluZUJveC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCNDdFNjEyMjc3NDI1QTAwQzdC
Q0IwIC8qIERpc3BsYXlMaW5lQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNkZCNUUyMTQyMjFGMjQ1MzAwMzk4OUNGIC8qIENvbnRlbnRDaGFu
Z2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkZCNUUyMTIyMjFGMjQ0NzAwMzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGQ0UxQTFB
MjI2MThBQkQwMDRGMDM0MyAvKiBEaXNwbGF5UnVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkNFMUExODIyNjE4QUIzMDA0RjAzNDMgLyogRGlzcGxh
eVJ1bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC05NDczLDcgKzk0NzMsNyBAQAogCQk2RkIxMUI1OTIxNzgzRkNGMDBFMkE1NzQgLyogVGV4dFV0
aWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFV0aWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCMTFCNUIyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRV
dGlsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRVdGlsLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCMjJFMzAyMzAwOTdFMzAwQzIwODY2
IC8qIFRhYmxlR3JpZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUYWJsZUdyaWQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNkZCMjQwMDMyM0RGRjEyNzAwNzk2NDU4IC8qIElubGluZUxpbmVC
b3hCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUxpbmVC
b3hCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGQjI0MDAzMjNERkYx
MjcwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IElubGluZUxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZC
NDdFNjEyMjc3NDI1QTAwQzdCQ0IwIC8qIERpc3BsYXlMaW5lQm94LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZGQjVFMjEyMjIxRjI0NDcwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudENoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZGQkI4NjA1MjBCNDY0QjYwMERBRDkzOCAvKiBGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcxMjIsNyArMTcx
MjIsNyBAQAogCQkJCTExNUNGQTdDMjA4QjhFMTAwMDFFNjk5MSAvKiBJbmxpbmVGb3JtYXR0aW5n
U3RhdGUuaCAqLywKIAkJCQk2RjdCOENFQzIzNjI2RTY2MDBDOUZGMTUgLyogSW5saW5lSXRlbS5j
cHAgKi8sCiAJCQkJNkZFN0NGQTAyMTc3RUVGMTAwNUIxNTczIC8qIElubGluZUl0ZW0uaCAqLywK
LQkJCQk2RkIyNDAwMzIzREZGMTI3MDA3OTY0NTggLyogSW5saW5lTGluZUJveEJ1aWxkZXIuaCAq
LywKKwkJCQk2RkIyNDAwMzIzREZGMTI3MDA3OTY0NTggLyogSW5saW5lTGluZUJveC5oICovLAog
CQkJCTZGRTE5ODEzMjE3ODM5N0IwMDQ0NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5jcHAgKi8s
CiAJCQkJNkZFMTk4MTUyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVha2VyLmggKi8s
CiAJCQkJNkYwQ0Q2OTIyMjlFRDMxOTAwQzU5OTRFIC8qIElubGluZUxpbmVCdWlsZGVyLmNwcCAq
LywKQEAgLTMxMDA3LDcgKzMxMDA3LDcgQEAKIAkJCQkxMTVDRkE3RTIwOEI4RTEwMDAxRTY5OTEg
LyogSW5saW5lRm9ybWF0dGluZ1N0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkU3Q0ZBMjIx
NzdFRUYyMDA1QjE1NzMgLyogSW5saW5lSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNzg5
MTYxMTIwRDYwODAwNjBFQ0U1IC8qIElubGluZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk2RkIyNDAwNTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lTGluZUJveEJ1aWxkZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTZGQjI0MDA1MjNERkYxMjgwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkUxOTgxNzIxNzgzOTdDMDA0NDZGMDggLyogSW5saW5l
TGluZUJyZWFrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMENENjk1MjI5RUQzMjcwMEM1OTk0
RSAvKiBJbmxpbmVMaW5lQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ1Nzc1Q0UyNDE0
MzdENTAwMkRGMUEwIC8qIElubGluZVBhdGhEYXRhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAppbmRleCAyNDIxMTY3MThmMDdi
NmYwMjhjMGI0Y2Q2NDRiYzc0Y2Q0MTc0Yzk0Li44NDYyZWRlYjlkYTBhYTM1ZWYxMTNmZWZmYjY4
NjdjMDRhOTY4NWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWly
a3MuY3BwCkBAIC04MywxMiArODMsMTIgQEAgTGluZUJ1aWxkZXI6OkNvbnN0cmFpbnRzOjpIZWln
aHRBbmRCYXNlbGluZSBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpsaW4KICAgICBh
dXRvIGxpbmVIZWlnaHQgPSBmb3JtYXR0aW5nUm9vdC5zdHlsZSgpLmxpbmVIZWlnaHQoKTsKICAg
ICBpZiAobGluZUhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewogICAgICAgICBhdXRv
IGluaXRpYWxCYXNlbGluZU9mZnNldCA9IExpbmVCdWlsZGVyOjpoYWxmTGVhZGluZ01ldHJpY3Mo
Zm9ybWF0dGluZ1Jvb3Quc3R5bGUoKS5mb250TWV0cmljcygpLCAwX2x1KS5hc2NlbnQoKTsKLSAg
ICAgICAgcmV0dXJuIHsgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBpbml0aWFsQmFzZWxpbmVPZmZz
ZXQsIExpbmVCb3hCdWlsZGVyOjpCYXNlbGluZSB7IHN0cnV0QmFzZWxpbmVPZmZzZXQsIHN0cnV0
SGVpZ2h0IC0gc3RydXRCYXNlbGluZU9mZnNldCB9IH07CisgICAgICAgIHJldHVybiB7IGluaXRp
YWxCYXNlbGluZU9mZnNldCwgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBJbmxpbmVCb3g6OkJhc2Vs
aW5lIHsgc3RydXRCYXNlbGluZU9mZnNldCwgc3RydXRIZWlnaHQgLSBzdHJ1dEJhc2VsaW5lT2Zm
c2V0IH0gfTsKICAgICB9CiAgICAgLy8gRklYTUU6IFRoZSBvbmx5IHJlYXNvbiB3aHkgd2UgdXNl
IGludFZhbHVlKCkgaGVyZSBpcyB0byBtYXRjaCBjdXJyZW50IGlubGluZSB0cmVlIChpbnRlZ3Jh
bCliZWhhdmlvci4KICAgICBJbmxpbmVMYXlvdXRVbml0IGluaXRpYWxMaW5lSGVpZ2h0ID0gbGlu
ZUhlaWdodC5pbnRWYWx1ZSgpOwogICAgIGF1dG8gaW5pdGlhbEJhc2VsaW5lT2Zmc2V0ID0gTGlu
ZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhmb3JtYXR0aW5nUm9vdC5zdHlsZSgpLmZvbnRN
ZXRyaWNzKCksIGluaXRpYWxMaW5lSGVpZ2h0KS5hc2NlbnQoKTsKLSAgICByZXR1cm4geyBpbml0
aWFsTGluZUhlaWdodCwgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBMaW5lQm94QnVpbGRlcjo6QmFz
ZWxpbmUgeyBzdHJ1dEJhc2VsaW5lT2Zmc2V0LCBzdHJ1dEhlaWdodCAtIHN0cnV0QmFzZWxpbmVP
ZmZzZXQgfSB9OworICAgIHJldHVybiB7IGluaXRpYWxMaW5lSGVpZ2h0LCBpbml0aWFsQmFzZWxp
bmVPZmZzZXQsIElubGluZUJveDo6QmFzZWxpbmUgeyBzdHJ1dEJhc2VsaW5lT2Zmc2V0LCBzdHJ1
dEhlaWdodCAtIHN0cnV0QmFzZWxpbmVPZmZzZXQgfSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmNlZGY4Mzg0NTZiNzQzMzQwYmYyMDhlYThiMGYxNzVhNWY2OTA5ZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmVCb3guaApAQCAtMCwwICsxLDI0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJEaXNw
bGF5Qm94LmgiCisjaW5jbHVkZSAiRGlzcGxheUlubGluZVJlY3QuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK2NsYXNzIElubGluZUJveCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RydWN0IEJhc2VsaW5lIHsKKyAg
ICAgICAgQmFzZWxpbmUoSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQsIElubGluZUxheW91dFVuaXQg
ZGVzY2VudCk7CisgICAgICAgIEJhc2VsaW5lKCkgPSBkZWZhdWx0OworCisgICAgICAgIHZvaWQg
c2V0QXNjZW50KElubGluZUxheW91dFVuaXQpOworICAgICAgICB2b2lkIHNldERlc2NlbnQoSW5s
aW5lTGF5b3V0VW5pdCk7CisKKyAgICAgICAgdm9pZCByZXNldCgpOworCisgICAgICAgIElubGlu
ZUxheW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYXNjZW50KCkgKyBkZXNjZW50KCk7
IH0KKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQoKSBjb25zdDsKKyAgICAgICAgSW5s
aW5lTGF5b3V0VW5pdCBkZXNjZW50KCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorI2lmIEFTU0VS
VF9FTkFCTEVECisgICAgICAgIGJvb2wgbV9oYXNWYWxpZEFzY2VudCB7IGZhbHNlIH07CisgICAg
ICAgIGJvb2wgbV9oYXNWYWxpZERlc2NlbnQgeyBmYWxzZSB9OworI2VuZGlmCisgICAgICAgIElu
bGluZUxheW91dFVuaXQgbV9hc2NlbnQgeyAwIH07CisgICAgICAgIElubGluZUxheW91dFVuaXQg
bV9kZXNjZW50IHsgMCB9OworICAgIH07CisKKyAgICBJbmxpbmVCb3goY29uc3QgRGlzcGxheTo6
SW5saW5lUmVjdCYsIGNvbnN0IEJhc2VsaW5lJiwgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZU9m
ZnNldCk7CisgICAgSW5saW5lQm94KCkgPSBkZWZhdWx0OworCisgICAgY29uc3QgRGlzcGxheTo6
SW5saW5lUmVjdCYgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBj
b25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3coKSBjb25zdCB7IHJl
dHVybiBtX3Njcm9sbGFibGVPdmVyZmxvdzsgfQorCisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5sZWZ0KCk7IH0KKyAgICBJbmxpbmVMYXlv
dXRVbml0IGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5yaWdodCgpOyB9Cisg
ICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnRv
cCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1
cm4gbV9yZWN0LmJvdHRvbSgpOyB9CisKKyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC53aWR0aCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmhlaWdodCgpOyB9CisKKyAg
ICBjb25zdCBCYXNlbGluZSYgYmFzZWxpbmUoKSBjb25zdDsKKyAgICAvLyBCYXNlbGluZSBvZmZz
ZXQgZnJvbSBsaW5lIGxvZ2ljYWwgdG9wLiBOb3RlIHRoYXQgb2Zmc2V0IGRvZXMgbm90IG5lY2Vz
c2FyaWx5IGVxdWFsIHRvIGFzY2VudC4KKyAgICAvLworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0gICAgbGluZSBsb2dpY2FsIHRvcCAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLSAodG9wIGFsaWdu
KQorICAgIC8vICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXgorICAgIC8vICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXiAgICAgICAgICAgfAorICAgIC8vICAgXiAgICAgICAgIHwgYmFzZWxpbmUg
b2Zmc2V0ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCBiYXNlbGluZSBvZmZzZXQKKyAg
ICAvLyAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgIHwKKyAgICAvLyAgIHwgYXNjZW50ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgYXNjZW50ICAgIHwKKyAgICAvLyAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgIHYKKyAgICAvLyAgIHYgICAgICAgICB2ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0gYmFzZWxpbmUK
KyAgICAvLyAgIC0tLS0tLS0tLS0tLS0tLS0tIGJhc2VsaW5lICAgICAgICAgICAgICAgICAgIF4K
KyAgICAvLyAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ZGVzY2VudAorICAgIC8vICAgfCBkZXNjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdgorICAgIC8vICAgdgorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgbGluZSBs
b2dpY2FsIGJvdHRvbSAgLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIElubGluZUxheW91dFVuaXQg
YmFzZWxpbmVPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkIHNldEJhc2VsaW5lT2Zmc2V0SWZHcmVh
dGVyKElubGluZUxheW91dFVuaXQpOworICAgIHZvaWQgc2V0QXNjZW50SWZHcmVhdGVyKElubGlu
ZUxheW91dFVuaXQpOworICAgIHZvaWQgc2V0RGVzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRV
bml0KTsKKworICAgIHZvaWQgcmVzZXRCYXNlbGluZSgpOworICAgIHZvaWQgcmVzZXREZXNjZW50
KCkgeyBtX2Jhc2VsaW5lLnNldERlc2NlbnQoMF9sdSk7IH0KKworICAgIHZvaWQgc2V0TG9naWNh
bEhlaWdodChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIHsgbV9yZWN0LnNldEhlaWdo
dChsb2dpY2FsSGVpZ2h0KTsgfQorCisgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVy
KElubGluZUxheW91dFVuaXQpOworICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKElubGluZUxheW91
dFVuaXQgbG9naWNhbFdpZHRoKSB7IG1fcmVjdC5zZXRXaWR0aChsb2dpY2FsV2lkdGgpOyB9CisK
KyAgICB2b2lkIHNldFNjcm9sbGFibGVPdmVyZmxvdyhjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0
JiByZWN0KSB7IG1fc2Nyb2xsYWJsZU92ZXJmbG93ID0gcmVjdDsgfQorCisgICAgdm9pZCBtb3Zl
SG9yaXpvbnRhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0Lm1vdmVIb3Jpem9u
dGFsbHkoZGVsdGEpOyB9CisKKyAgICB2b2lkIGV4cGFuZEhvcml6b250YWxseShJbmxpbmVMYXlv
dXRVbml0IGRlbHRhKSB7IG1fcmVjdC5leHBhbmRIb3Jpem9udGFsbHkoZGVsdGEpOyB9CisgICAg
dm9pZCBzaHJpbmtIb3Jpem9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBleHBhbmRI
b3Jpem9udGFsbHkoLWRlbHRhKTsgfQorCisgICAgdm9pZCBleHBhbmRWZXJ0aWNhbGx5KElubGlu
ZUxheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0LmV4cGFuZFZlcnRpY2FsbHkoZGVsdGEpOyB9Cisg
ICAgdm9pZCBzaHJpbmtWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgZXhwYW5k
VmVydGljYWxseSgtZGVsdGEpOyB9CisKKyAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NT
MjIvdmlzdXJlbi5odG1sI2lubGluZS1mb3JtYXR0aW5nCisgICAgLy8gTGluZSBib3hlcyB0aGF0
IGNvbnRhaW4gbm8gdGV4dCwgbm8gcHJlc2VydmVkIHdoaXRlIHNwYWNlLCBubyBpbmxpbmUgZWxl
bWVudHMgd2l0aCBub24temVybyBtYXJnaW5zLCBwYWRkaW5nLCBvciBib3JkZXJzLAorICAgIC8v
IGFuZCBubyBvdGhlciBpbi1mbG93IGNvbnRlbnQgKHN1Y2ggYXMgaW1hZ2VzLCBpbmxpbmUgYmxv
Y2tzIG9yIGlubGluZSB0YWJsZXMpLCBhbmQgZG8gbm90IGVuZCB3aXRoIGEgcHJlc2VydmVkIG5l
d2xpbmUKKyAgICAvLyBtdXN0IGJlIHRyZWF0ZWQgYXMgemVyby1oZWlnaHQgbGluZSBib3hlcyBm
b3IgdGhlIHB1cnBvc2VzIG9mIGRldGVybWluaW5nIHRoZSBwb3NpdGlvbnMgb2YgYW55IGVsZW1l
bnRzIGluc2lkZSBvZiB0aGVtLAorICAgIC8vIGFuZCBtdXN0IGJlIHRyZWF0ZWQgYXMgbm90IGV4
aXN0aW5nIGZvciBhbnkgb3RoZXIgcHVycG9zZS4KKyAgICAvLyBOb3RlIHRoYXQgaXQgZG9lcyBu
b3QgbmVjZXNzYXJpbHkgbWVhbiB2aXN1YWxseSBub24tZW1wdHkgbGluZS4gPHNwYW4gc3R5bGU9
ImZvbnQtc2l6ZTogMHB4Ij50aGlzIGlzIHN0aWxsIGNvbnNpZGVyZWQgbm9uLWVtcHR5PC9zcGFu
PgorICAgIGJvb2wgaXNDb25zaWRlcmVkRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc2lk
ZXJlZEVtcHR5OyB9CisgICAgdm9pZCBzZXRJc0NvbnNpZGVyZWRFbXB0eSgpIHsgbV9pc0NvbnNp
ZGVyZWRFbXB0eSA9IHRydWU7IH0KKyAgICB2b2lkIHNldElzQ29uc2lkZXJlZE5vbkVtcHR5KCkg
eyBtX2lzQ29uc2lkZXJlZEVtcHR5ID0gZmFsc2U7IH0KKworcHJpdmF0ZToKKyNpZiBBU1NFUlRf
RU5BQkxFRAorICAgIGJvb2wgbV9oYXNWYWxpZEJhc2VsaW5lIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCB7IGZhbHNlIH07CisjZW5kaWYKKyAgICBEaXNwbGF5
OjpJbmxpbmVSZWN0IG1fcmVjdDsKKyAgICBEaXNwbGF5OjpJbmxpbmVSZWN0IG1fc2Nyb2xsYWJs
ZU92ZXJmbG93OworICAgIEJhc2VsaW5lIG1fYmFzZWxpbmU7CisgICAgSW5saW5lTGF5b3V0VW5p
dCBtX2Jhc2VsaW5lT2Zmc2V0IHsgMCB9OworICAgIGJvb2wgbV9pc0NvbnNpZGVyZWRFbXB0eSB7
IHRydWUgfTsKK307CisKK2lubGluZSBJbmxpbmVCb3g6OklubGluZUJveChjb25zdCBEaXNwbGF5
OjpJbmxpbmVSZWN0JiByZWN0LCBjb25zdCBCYXNlbGluZSYgYmFzZWxpbmUsIElubGluZUxheW91
dFVuaXQgYmFzZWxpbmVPZmZzZXQpCisgICAgOiBtX3JlY3QocmVjdCkKKyAgICAsIG1fYmFzZWxp
bmUoYmFzZWxpbmUpCisgICAgLCBtX2Jhc2VsaW5lT2Zmc2V0KGJhc2VsaW5lT2Zmc2V0KQorewor
I2lmIEFTU0VSVF9FTkFCTEVECisgICAgbV9oYXNWYWxpZEJhc2VsaW5lID0gdHJ1ZTsKKyAgICBt
X2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOworI2VuZGlmCit9CisKK2lubGluZSB2b2lk
IElubGluZUJveDo6c2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHQpCit7CisgICAgaWYgKGxvZ2ljYWxIZWlnaHQgPD0gbV9yZWN0LmhlaWdodCgp
KQorICAgICAgICByZXR1cm47CisgICAgbV9yZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KTsK
K30KKworaW5saW5lIGNvbnN0IElubGluZUJveDo6QmFzZWxpbmUmIElubGluZUJveDo6YmFzZWxp
bmUoKSBjb25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkQmFzZWxpbmUpOworICAgIHJldHVy
biBtX2Jhc2VsaW5lOworfQorCitpbmxpbmUgdm9pZCBJbmxpbmVCb3g6OnNldEJhc2VsaW5lT2Zm
c2V0SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQpCit7CisjaWYgQVNT
RVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOworI2VuZGlm
CisgICAgbV9iYXNlbGluZU9mZnNldCA9IHN0ZDo6bWF4KGJhc2VsaW5lT2Zmc2V0LCBtX2Jhc2Vs
aW5lT2Zmc2V0KTsKK30KKworaW5saW5lIHZvaWQgSW5saW5lQm94OjpzZXRBc2NlbnRJZkdyZWF0
ZXIoSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQpCit7CisgICAgaWYgKGFzY2VudCA8IG1fYmFzZWxp
bmUuYXNjZW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICBzZXRCYXNlbGluZU9mZnNldElmR3Jl
YXRlcihhc2NlbnQpOworICAgIG1fYmFzZWxpbmUuc2V0QXNjZW50KGFzY2VudCk7Cit9CisKK2lu
bGluZSB2b2lkIElubGluZUJveDo6c2V0RGVzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0
IGRlc2NlbnQpCit7CisgICAgaWYgKGRlc2NlbnQgPCBtX2Jhc2VsaW5lLmRlc2NlbnQoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fYmFzZWxpbmUuc2V0RGVzY2VudChkZXNjZW50KTsKK30KKwor
aW5saW5lIElubGluZUxheW91dFVuaXQgSW5saW5lQm94OjpiYXNlbGluZU9mZnNldCgpIGNvbnN0
Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCk7CisgICAgcmV0dXJuIG1f
YmFzZWxpbmVPZmZzZXQ7Cit9CisKK2lubGluZSB2b2lkIElubGluZUJveDo6cmVzZXRCYXNlbGlu
ZSgpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQg
PSB0cnVlOworI2VuZGlmCisgICAgbV9iYXNlbGluZU9mZnNldCA9IDBfbHU7CisgICAgbV9iYXNl
bGluZS5yZXNldCgpOworfQorCitpbmxpbmUgSW5saW5lQm94OjpCYXNlbGluZTo6QmFzZWxpbmUo
SW5saW5lTGF5b3V0VW5pdCBhc2NlbnQsIElubGluZUxheW91dFVuaXQgZGVzY2VudCkKKyAgICA6
IG1fYXNjZW50KGFzY2VudCkKKyAgICAsIG1fZGVzY2VudChkZXNjZW50KQoreworI2lmIEFTU0VS
VF9FTkFCTEVECisgICAgbV9oYXNWYWxpZEFzY2VudCA9IHRydWU7CisgICAgbV9oYXNWYWxpZERl
c2NlbnQgPSB0cnVlOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIElubGluZUJveDo6QmFzZWxp
bmU6OnNldEFzY2VudChJbmxpbmVMYXlvdXRVbml0IGFzY2VudCkKK3sKKyNpZiBBU1NFUlRfRU5B
QkxFRAorICAgIG1faGFzVmFsaWRBc2NlbnQgPSB0cnVlOworI2VuZGlmCisgICAgbV9hc2NlbnQg
PSBhc2NlbnQ7Cit9CisKK2lubGluZSB2b2lkIElubGluZUJveDo6QmFzZWxpbmU6OnNldERlc2Nl
bnQoSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KQoreworI2lmIEFTU0VSVF9FTkFCTEVECisgICAg
bV9oYXNWYWxpZERlc2NlbnQgPSB0cnVlOworI2VuZGlmCisgICAgbV9kZXNjZW50ID0gZGVzY2Vu
dDsKK30KKworaW5saW5lIHZvaWQgSW5saW5lQm94OjpCYXNlbGluZTo6cmVzZXQoKQoreworI2lm
IEFTU0VSVF9FTkFCTEVECisgICAgbV9oYXNWYWxpZEFzY2VudCA9IHRydWU7CisgICAgbV9oYXNW
YWxpZERlc2NlbnQgPSB0cnVlOworI2VuZGlmCisgICAgbV9hc2NlbnQgPSAwX2x1OworICAgIG1f
ZGVzY2VudCA9IDBfbHU7Cit9CisKK2lubGluZSBJbmxpbmVMYXlvdXRVbml0IElubGluZUJveDo6
QmFzZWxpbmU6OmFzY2VudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRBc2NlbnQp
OworICAgIHJldHVybiBtX2FzY2VudDsKK30KKworaW5saW5lIElubGluZUxheW91dFVuaXQgSW5s
aW5lQm94OjpCYXNlbGluZTo6ZGVzY2VudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFs
aWREZXNjZW50KTsKKyAgICByZXR1cm4gbV9kZXNjZW50OworfQorCit9Cit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZUJveEJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmVCb3hCdWlsZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
NTA5OGRiMDU5NzYxMGZmMDRkMjE3ZjdiY2NhMjAyMGExZDdkOGEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveEJ1aWxkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDI0
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKLQotI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKLSNpbmNsdWRl
ICJEaXNwbGF5SW5saW5lUmVjdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2Ug
TGF5b3V0IHsKLQotY2xhc3MgTGluZUJveEJ1aWxkZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOgotICAgIHN0cnVjdCBCYXNlbGluZSB7Ci0gICAgICAgIEJhc2VsaW5l
KElubGluZUxheW91dFVuaXQgYXNjZW50LCBJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQpOwotICAg
ICAgICBCYXNlbGluZSgpID0gZGVmYXVsdDsKLQotICAgICAgICB2b2lkIHNldEFzY2VudChJbmxp
bmVMYXlvdXRVbml0KTsKLSAgICAgICAgdm9pZCBzZXREZXNjZW50KElubGluZUxheW91dFVuaXQp
OwotCi0gICAgICAgIHZvaWQgcmVzZXQoKTsKLQotICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIGFzY2VudCgpICsgZGVzY2VudCgpOyB9Ci0gICAgICAgIElu
bGluZUxheW91dFVuaXQgYXNjZW50KCkgY29uc3Q7Ci0gICAgICAgIElubGluZUxheW91dFVuaXQg
ZGVzY2VudCgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAg
ICAgICBib29sIG1faGFzVmFsaWRBc2NlbnQgeyBmYWxzZSB9OwotICAgICAgICBib29sIG1faGFz
VmFsaWREZXNjZW50IHsgZmFsc2UgfTsKLSNlbmRpZgotICAgICAgICBJbmxpbmVMYXlvdXRVbml0
IG1fYXNjZW50IHsgMCB9OwotICAgICAgICBJbmxpbmVMYXlvdXRVbml0IG1fZGVzY2VudCB7IDAg
fTsKLSAgICB9OwotCi0gICAgTGluZUJveEJ1aWxkZXIoY29uc3QgRGlzcGxheTo6SW5saW5lUmVj
dCYsIGNvbnN0IEJhc2VsaW5lJiwgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldCk7Ci0g
ICAgTGluZUJveEJ1aWxkZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICBjb25zdCBEaXNwbGF5OjpJbmxp
bmVSZWN0JiBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQotICAgIGNvbnN0
IERpc3BsYXk6OklubGluZVJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsYWJsZU92ZXJmbG93OyB9Ci0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxM
ZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmxlZnQoKTsgfQotICAgIElubGluZUxheW91dFVu
aXQgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnJpZ2h0KCk7IH0KLSAgICBJ
bmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBtX3JlY3QudG9wKCk7
IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBt
X3JlY3QuYm90dG9tKCk7IH0KLQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWN0LndpZHRoKCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QuaGVpZ2h0KCk7IH0KLQotICAgIGNv
bnN0IEJhc2VsaW5lJiBiYXNlbGluZSgpIGNvbnN0OwotICAgIC8vIEJhc2VsaW5lIG9mZnNldCBm
cm9tIGxpbmUgbG9naWNhbCB0b3AuIE5vdGUgdGhhdCBvZmZzZXQgZG9lcyBub3QgbmVjZXNzYXJp
bHkgZXF1YWwgdG8gYXNjZW50LgotICAgIC8vCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLSAg
ICBsaW5lIGxvZ2ljYWwgdG9wICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tICh0b3AgYWxpZ24pCi0g
ICAgLy8gICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBeCi0gICAgLy8gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBeICAgICAgICAgICB8Ci0gICAgLy8gICBeICAgICAgICAgfCBiYXNlbGluZSBvZmZz
ZXQgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IGJhc2VsaW5lIG9mZnNldAotICAgIC8v
ICAgfCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgfAotICAgIC8vICAgfCBhc2NlbnQgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCBhc2NlbnQgICAgfAotICAgIC8vICAgfCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdiAgICAgICAgICAgdgotICAgIC8vICAgdiAgICAgICAgIHYgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLSBiYXNlbGluZQotICAg
IC8vICAgLS0tLS0tLS0tLS0tLS0tLS0gYmFzZWxpbmUgICAgICAgICAgICAgICAgICAgXgotICAg
IC8vICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXNj
ZW50Ci0gICAgLy8gICB8IGRlc2NlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2Ci0gICAgLy8gICB2Ci0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLSAgICBsaW5lIGxvZ2lj
YWwgYm90dG9tICAtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgSW5saW5lTGF5b3V0VW5pdCBiYXNl
bGluZU9mZnNldCgpIGNvbnN0OwotICAgIHZvaWQgc2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIo
SW5saW5lTGF5b3V0VW5pdCk7Ci0gICAgdm9pZCBzZXRBc2NlbnRJZkdyZWF0ZXIoSW5saW5lTGF5
b3V0VW5pdCk7Ci0gICAgdm9pZCBzZXREZXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQp
OwotCi0gICAgdm9pZCByZXNldEJhc2VsaW5lKCk7Ci0gICAgdm9pZCByZXNldERlc2NlbnQoKSB7
IG1fYmFzZWxpbmUuc2V0RGVzY2VudCgwX2x1KTsgfQotCi0gICAgdm9pZCBzZXRMb2dpY2FsSGVp
Z2h0KElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCkgeyBtX3JlY3Quc2V0SGVpZ2h0KGxv
Z2ljYWxIZWlnaHQpOyB9Ci0KLSAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIoSW5s
aW5lTGF5b3V0VW5pdCk7Ci0gICAgdm9pZCBzZXRMb2dpY2FsV2lkdGgoSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsV2lkdGgpIHsgbV9yZWN0LnNldFdpZHRoKGxvZ2ljYWxXaWR0aCk7IH0KLQotICAg
IHZvaWQgc2V0U2Nyb2xsYWJsZU92ZXJmbG93KGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmIHJl
Y3QpIHsgbV9zY3JvbGxhYmxlT3ZlcmZsb3cgPSByZWN0OyB9Ci0KLSAgICB2b2lkIG1vdmVIb3Jp
em9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBtX3JlY3QubW92ZUhvcml6b250YWxs
eShkZWx0YSk7IH0KLQotICAgIHZvaWQgZXhwYW5kSG9yaXpvbnRhbGx5KElubGluZUxheW91dFVu
aXQgZGVsdGEpIHsgbV9yZWN0LmV4cGFuZEhvcml6b250YWxseShkZWx0YSk7IH0KLSAgICB2b2lk
IHNocmlua0hvcml6b250YWxseShJbmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IGV4cGFuZEhvcml6
b250YWxseSgtZGVsdGEpOyB9Ci0KLSAgICB2b2lkIGV4cGFuZFZlcnRpY2FsbHkoSW5saW5lTGF5
b3V0VW5pdCBkZWx0YSkgeyBtX3JlY3QuZXhwYW5kVmVydGljYWxseShkZWx0YSk7IH0KLSAgICB2
b2lkIHNocmlua1ZlcnRpY2FsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBleHBhbmRWZXJ0
aWNhbGx5KC1kZWx0YSk7IH0KLQotICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMi92
aXN1cmVuLmh0bWwjaW5saW5lLWZvcm1hdHRpbmcKLSAgICAvLyBMaW5lIGJveGVzIHRoYXQgY29u
dGFpbiBubyB0ZXh0LCBubyBwcmVzZXJ2ZWQgd2hpdGUgc3BhY2UsIG5vIGlubGluZSBlbGVtZW50
cyB3aXRoIG5vbi16ZXJvIG1hcmdpbnMsIHBhZGRpbmcsIG9yIGJvcmRlcnMsCi0gICAgLy8gYW5k
IG5vIG90aGVyIGluLWZsb3cgY29udGVudCAoc3VjaCBhcyBpbWFnZXMsIGlubGluZSBibG9ja3Mg
b3IgaW5saW5lIHRhYmxlcyksIGFuZCBkbyBub3QgZW5kIHdpdGggYSBwcmVzZXJ2ZWQgbmV3bGlu
ZQotICAgIC8vIG11c3QgYmUgdHJlYXRlZCBhcyB6ZXJvLWhlaWdodCBsaW5lIGJveGVzIGZvciB0
aGUgcHVycG9zZXMgb2YgZGV0ZXJtaW5pbmcgdGhlIHBvc2l0aW9ucyBvZiBhbnkgZWxlbWVudHMg
aW5zaWRlIG9mIHRoZW0sCi0gICAgLy8gYW5kIG11c3QgYmUgdHJlYXRlZCBhcyBub3QgZXhpc3Rp
bmcgZm9yIGFueSBvdGhlciBwdXJwb3NlLgotICAgIC8vIE5vdGUgdGhhdCBpdCBkb2VzIG5vdCBu
ZWNlc3NhcmlseSBtZWFuIHZpc3VhbGx5IG5vbi1lbXB0eSBsaW5lLiA8c3BhbiBzdHlsZT0iZm9u
dC1zaXplOiAwcHgiPnRoaXMgaXMgc3RpbGwgY29uc2lkZXJlZCBub24tZW1wdHk8L3NwYW4+Ci0g
ICAgYm9vbCBpc0NvbnNpZGVyZWRFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zaWRlcmVk
RW1wdHk7IH0KLSAgICB2b2lkIHNldElzQ29uc2lkZXJlZEVtcHR5KCkgeyBtX2lzQ29uc2lkZXJl
ZEVtcHR5ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0SXNDb25zaWRlcmVkTm9uRW1wdHkoKSB7IG1f
aXNDb25zaWRlcmVkRW1wdHkgPSBmYWxzZTsgfQotCi1wcml2YXRlOgotI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgYm9vbCBtX2hhc1ZhbGlkQmFzZWxpbmUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9o
YXNWYWxpZEJhc2VsaW5lT2Zmc2V0IHsgZmFsc2UgfTsKLSNlbmRpZgotICAgIERpc3BsYXk6Oklu
bGluZVJlY3QgbV9yZWN0OwotICAgIERpc3BsYXk6OklubGluZVJlY3QgbV9zY3JvbGxhYmxlT3Zl
cmZsb3c7Ci0gICAgQmFzZWxpbmUgbV9iYXNlbGluZTsKLSAgICBJbmxpbmVMYXlvdXRVbml0IG1f
YmFzZWxpbmVPZmZzZXQgeyAwIH07Ci0gICAgYm9vbCBtX2lzQ29uc2lkZXJlZEVtcHR5IHsgdHJ1
ZSB9OwotfTsKLQotaW5saW5lIExpbmVCb3hCdWlsZGVyOjpMaW5lQm94QnVpbGRlcihjb25zdCBE
aXNwbGF5OjpJbmxpbmVSZWN0JiByZWN0LCBjb25zdCBCYXNlbGluZSYgYmFzZWxpbmUsIElubGlu
ZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQpCi0gICAgOiBtX3JlY3QocmVjdCkKLSAgICAsIG1f
YmFzZWxpbmUoYmFzZWxpbmUpCi0gICAgLCBtX2Jhc2VsaW5lT2Zmc2V0KGJhc2VsaW5lT2Zmc2V0
KQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEJhc2VsaW5lID0gdHJ1ZTsK
LSAgICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOwotI2VuZGlmCi19Ci0KLWlubGlu
ZSB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKElubGluZUxh
eW91dFVuaXQgbG9naWNhbEhlaWdodCkKLXsKLSAgICBpZiAobG9naWNhbEhlaWdodCA8PSBtX3Jl
Y3QuaGVpZ2h0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3JlY3Quc2V0SGVpZ2h0KGxvZ2lj
YWxIZWlnaHQpOwotfQotCi1pbmxpbmUgY29uc3QgTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lJiBM
aW5lQm94QnVpbGRlcjo6YmFzZWxpbmUoKSBjb25zdAotewotICAgIEFTU0VSVChtX2hhc1ZhbGlk
QmFzZWxpbmUpOwotICAgIHJldHVybiBtX2Jhc2VsaW5lOwotfQotCi1pbmxpbmUgdm9pZCBMaW5l
Qm94QnVpbGRlcjo6c2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCBi
YXNlbGluZU9mZnNldCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1faGFzVmFsaWRCYXNl
bGluZU9mZnNldCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2Jhc2VsaW5lT2Zmc2V0ID0gc3RkOjpt
YXgoYmFzZWxpbmVPZmZzZXQsIG1fYmFzZWxpbmVPZmZzZXQpOwotfQotCi1pbmxpbmUgdm9pZCBM
aW5lQm94QnVpbGRlcjo6c2V0QXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgYXNjZW50
KQotewotICAgIGlmIChhc2NlbnQgPCBtX2Jhc2VsaW5lLmFzY2VudCgpKQotICAgICAgICByZXR1
cm47Ci0gICAgc2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIoYXNjZW50KTsKLSAgICBtX2Jhc2Vs
aW5lLnNldEFzY2VudChhc2NlbnQpOwotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94QnVpbGRlcjo6
c2V0RGVzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQpCi17Ci0gICAgaWYg
KGRlc2NlbnQgPCBtX2Jhc2VsaW5lLmRlc2NlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1f
YmFzZWxpbmUuc2V0RGVzY2VudChkZXNjZW50KTsKLX0KLQotaW5saW5lIElubGluZUxheW91dFVu
aXQgTGluZUJveEJ1aWxkZXI6OmJhc2VsaW5lT2Zmc2V0KCkgY29uc3QKLXsKLSAgICBBU1NFUlQo
bV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0KTsKLSAgICByZXR1cm4gbV9iYXNlbGluZU9mZnNldDsK
LX0KLQotaW5saW5lIHZvaWQgTGluZUJveEJ1aWxkZXI6OnJlc2V0QmFzZWxpbmUoKQotewotI2lm
IEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0ID0gdHJ1ZTsKLSNl
bmRpZgotICAgIG1fYmFzZWxpbmVPZmZzZXQgPSAwX2x1OwotICAgIG1fYmFzZWxpbmUucmVzZXQo
KTsKLX0KLQotaW5saW5lIExpbmVCb3hCdWlsZGVyOjpCYXNlbGluZTo6QmFzZWxpbmUoSW5saW5l
TGF5b3V0VW5pdCBhc2NlbnQsIElubGluZUxheW91dFVuaXQgZGVzY2VudCkKLSAgICA6IG1fYXNj
ZW50KGFzY2VudCkKLSAgICAsIG1fZGVzY2VudChkZXNjZW50KQotewotI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgbV9oYXNWYWxpZEFzY2VudCA9IHRydWU7Ci0gICAgbV9oYXNWYWxpZERlc2NlbnQg
PSB0cnVlOwotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkIExpbmVCb3hCdWlsZGVyOjpCYXNlbGlu
ZTo6c2V0QXNjZW50KElubGluZUxheW91dFVuaXQgYXNjZW50KQotewotI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgbV9oYXNWYWxpZEFzY2VudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2FzY2VudCA9
IGFzY2VudDsKLX0KLQotaW5saW5lIHZvaWQgTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lOjpzZXRE
ZXNjZW50KElubGluZUxheW91dFVuaXQgZGVzY2VudCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAot
ICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIG1fZGVzY2VudCA9IGRl
c2NlbnQ7Ci19Ci0KLWlubGluZSB2b2lkIExpbmVCb3hCdWlsZGVyOjpCYXNlbGluZTo6cmVzZXQo
KQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEFzY2VudCA9IHRydWU7Ci0g
ICAgbV9oYXNWYWxpZERlc2NlbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgbV9hc2NlbnQgPSAwX2x1
OwotICAgIG1fZGVzY2VudCA9IDBfbHU7Ci19Ci0KLWlubGluZSBJbmxpbmVMYXlvdXRVbml0IExp
bmVCb3hCdWlsZGVyOjpCYXNlbGluZTo6YXNjZW50KCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9o
YXNWYWxpZEFzY2VudCk7Ci0gICAgcmV0dXJuIG1fYXNjZW50OwotfQotCi1pbmxpbmUgSW5saW5l
TGF5b3V0VW5pdCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmU6OmRlc2NlbnQoKSBjb25zdAotewot
ICAgIEFTU0VSVChtX2hhc1ZhbGlkRGVzY2VudCk7Ci0gICAgcmV0dXJuIG1fZGVzY2VudDsKLX0K
LQotfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCAwMjM2MTU4YmNh
MWEyNTlmOGFmZGU3MDMyYjVlMGY4NTNlMWQyOTgwLi5iMjZmMmYwY2RlZWQ0MTQ2MzM0ODFkYWEy
ZDM5M2ExOTI1MWFhMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC05MSw4ICs5MSw4
IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmluaXRpYWxpemUoY29uc3QgQ29uc3RyYWludHMmIGNvbnN0
cmFpbnRzKQogICAgICAgICBtX2luaXRpYWxTdHJ1dCA9IHsgfTsKIAogICAgIGF1dG8gbGluZVJl
Y3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgY29uc3RyYWludHMubG9naWNhbFRvcExlZnQsIDBf
bHUsIGluaXRpYWxMaW5lSGVpZ2h0IH07Ci0gICAgYXV0byBiYXNlbGluZSA9IExpbmVCb3hCdWls
ZGVyOjpCYXNlbGluZSB7IGluaXRpYWxCYXNlbGluZU9mZnNldCwgaW5pdGlhbExpbmVIZWlnaHQg
LSBpbml0aWFsQmFzZWxpbmVPZmZzZXQgfTsKLSAgICBtX2xpbmVCb3ggPSBMaW5lQm94QnVpbGRl
ciB7IGxpbmVSZWN0LCBiYXNlbGluZSwgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0IH07CisgICAgYXV0
byBiYXNlbGluZSA9IElubGluZUJveDo6QmFzZWxpbmUgeyBpbml0aWFsQmFzZWxpbmVPZmZzZXQs
IGluaXRpYWxMaW5lSGVpZ2h0IC0gaW5pdGlhbEJhc2VsaW5lT2Zmc2V0IH07CisgICAgbV9saW5l
Qm94ID0gSW5saW5lQm94IHsgbGluZVJlY3QsIGJhc2VsaW5lLCBpbml0aWFsQmFzZWxpbmVPZmZz
ZXQgfTsKICAgICBtX2xpbmVMb2dpY2FsV2lkdGggPSBjb25zdHJhaW50cy5hdmFpbGFibGVMb2dp
Y2FsV2lkdGg7CiAgICAgbV9oYXNJbnRydXNpdmVGbG9hdCA9IGNvbnN0cmFpbnRzLmxpbmVJc0Nv
bnN0cmFpbmVkQnlGbG9hdDsKIApAQCAtMTExLDQ1ICsxMTEsNDQgQEAgdm9pZCBMaW5lQnVpbGRl
cjo6cmVzZXRDb250ZW50KCkKIExpbmVCdWlsZGVyOjpSdW5MaXN0IExpbmVCdWlsZGVyOjpjbG9z
ZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50
KQogewogICAgIC8vIDEuIFJlbW92ZSB0cmltbWFibGUgdHJhaWxpbmcgY29udGVudC4KLSAgICAv
LyAyLiBKb2luIHRleHQgcnVucyB0b2dldGhlciB3aGVuIHBvc3NpYmxlIFtmb29dWyBdW2Jhcl0g
LT4gW2ZvbyBiYXJdLgotICAgIC8vIDMuIEFsaWduIG1lcmdlZCBydW5zIGJvdGggdmVydGljYWxs
eSBhbmQgaG9yaXpvbnRhbGx5LgorICAgIC8vIDIuIEFsaWduIG1lcmdlZCBydW5zIGJvdGggdmVy
dGljYWxseSBhbmQgaG9yaXpvbnRhbGx5LgogICAgIHJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29u
dGVudCgpOwogICAgIHZpc3VhbGx5Q29sbGFwc2VQcmVXcmFwT3ZlcmZsb3dDb250ZW50KCk7Ci0g
ICAgYXV0byBoYW5naW5nQ29udGVudCA9IGNvbGxlY3RIYW5naW5nQ29udGVudChpc0xhc3RMaW5l
V2l0aElubGluZUNvbnRlbnQpOworICAgIGlmIChtX2lzSW50cmluc2ljU2l6aW5nKQorICAgICAg
ICByZXR1cm4gV1RGTW92ZShtX3J1bnMpOwogCi0gICAgaWYgKCFtX2lzSW50cmluc2ljU2l6aW5n
KSB7Ci0gICAgICAgIHVuc2lnbmVkIGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbCA9IDA7Ci0g
ICAgICAgIGF1dG8gaGFzU2VlblRleHRPckxpbmVCcmVhayA9IGZhbHNlOwotICAgICAgICBmb3Ig
KGF1dG8mIHJ1biA6IG1fcnVucykgewotICAgICAgICAgICAgcnVuLnNldExvZ2ljYWxIZWlnaHQo
cnVuQ29udGVudEhlaWdodChydW4pKTsKLSAgICAgICAgICAgIGlubGluZUNvbnRhaW5lck5lc3Rp
bmdMZXZlbCA9IHJ1bi5pc0NvbnRhaW5lclN0YXJ0KCkgPyBpbmxpbmVDb250YWluZXJOZXN0aW5n
TGV2ZWwgKyAxIDogcnVuLmlzQ29udGFpbmVyRW5kKCkgPyBpbmxpbmVDb250YWluZXJOZXN0aW5n
TGV2ZWwgLSAxIDogaW5saW5lQ29udGFpbmVyTmVzdGluZ0xldmVsOwotICAgICAgICAgICAgYXV0
byBydW5Jc1RleHRPckxpbmVCcmVhayA9IHJ1bi5pc1RleHQoKSB8fCBydW4uaXNMaW5lQnJlYWso
KTsKLSAgICAgICAgICAgIGlmIChydW5Jc1RleHRPckxpbmVCcmVhaykgewotICAgICAgICAgICAg
ICAgIC8vIEZvciB0ZXh0IGNvbnRlbnQgd2Ugc2V0IHRoZSBiYXNlbGluZSBlaXRoZXIgdGhyb3Vn
aCB0aGUgaW5pdGlhbCBzdHJ1dCAoc2V0IGJ5IHRoZSBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdCkg
b3IKLSAgICAgICAgICAgICAgICAvLyB0aHJvdWdoIHRoZSBpbmxpbmUgY29udGFpbmVyIChzdGFy
dCkuIE5vcm1hbGx5IHRoZSB0ZXh0IGNvbnRlbnQgaXRzZWxmIGRvZXMgbm90IHN0cmV0Y2ggdGhl
IGxpbmUuCi0gICAgICAgICAgICAgICAgaWYgKGhhc1NlZW5UZXh0T3JMaW5lQnJlYWspCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGhhc1NlZW5UZXh0T3JM
aW5lQnJlYWsgPSB0cnVlOwotICAgICAgICAgICAgICAgIGlmICghbV9pbml0aWFsU3RydXQpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChpbmxpbmVD
b250YWluZXJOZXN0aW5nTGV2ZWwpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYXV0byYgdXNlZEJhc2VsaW5lID0gcnVuSXNUZXh0T3JM
aW5lQnJlYWsgPyAqbV9pbml0aWFsU3RydXQgOiBtX2xpbmVCb3guYmFzZWxpbmUoKTsKLSAgICAg
ICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChydW4sIHVzZWRCYXNlbGluZSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKGlzVmlzdWFsbHlFbXB0eSgpKSB7Ci0gICAgICAgICAgICBt
X2xpbmVCb3gucmVzZXRCYXNlbGluZSgpOwotICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2lj
YWxIZWlnaHQoeyB9KTsKLSAgICAgICAgfQotICAgICAgICAvLyBSZW1vdmUgZGVzY2VudCB3aGVu
IGFsbCBjb250ZW50IGlzIGJhc2VsaW5lIGFsaWduZWQgYnV0IG5vbmUgb2YgdGhlbSBoYXZlIGRl
c2NlbnQuCi0gICAgICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dCgpLnF1aXJrcygpLmxpbmVEZXNj
ZW50TmVlZHNDb2xsYXBzaW5nKG1fcnVucykpIHsKLSAgICAgICAgICAgIG1fbGluZUJveC5zaHJp
bmtWZXJ0aWNhbGx5KG1fbGluZUJveC5iYXNlbGluZSgpLmRlc2NlbnQoKSk7Ci0gICAgICAgICAg
ICBtX2xpbmVCb3gucmVzZXREZXNjZW50KCk7CisgICAgYXV0byBoYW5naW5nQ29udGVudCA9IGNv
bGxlY3RIYW5naW5nQ29udGVudChpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpOworICAgIHVu
c2lnbmVkIGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbCA9IDA7CisgICAgYXV0byBoYXNTZWVu
VGV4dE9yTGluZUJyZWFrID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBydW4gOiBtX3J1bnMpIHsK
KyAgICAgICAgcnVuLnNldExvZ2ljYWxIZWlnaHQocnVuQ29udGVudEhlaWdodChydW4pKTsKKyAg
ICAgICAgaW5saW5lQ29udGFpbmVyTmVzdGluZ0xldmVsID0gcnVuLmlzQ29udGFpbmVyU3RhcnQo
KSA/IGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbCArIDEgOiBydW4uaXNDb250YWluZXJFbmQo
KSA/IGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbCAtIDEgOiBpbmxpbmVDb250YWluZXJOZXN0
aW5nTGV2ZWw7CisgICAgICAgIGF1dG8gcnVuSXNUZXh0T3JMaW5lQnJlYWsgPSBydW4uaXNUZXh0
KCkgfHwgcnVuLmlzTGluZUJyZWFrKCk7CisgICAgICAgIGlmIChydW5Jc1RleHRPckxpbmVCcmVh
aykgeworICAgICAgICAgICAgLy8gRm9yIHRleHQgY29udGVudCB3ZSBzZXQgdGhlIGJhc2VsaW5l
IGVpdGhlciB0aHJvdWdoIHRoZSBpbml0aWFsIHN0cnV0IChzZXQgYnkgdGhlIGZvcm1hdHRpbmcg
Y29udGV4dCByb290KSBvcgorICAgICAgICAgICAgLy8gdGhyb3VnaCB0aGUgaW5saW5lIGNvbnRh
aW5lciAoc3RhcnQpLiBOb3JtYWxseSB0aGUgdGV4dCBjb250ZW50IGl0c2VsZiBkb2VzIG5vdCBz
dHJldGNoIHRoZSBsaW5lLgorICAgICAgICAgICAgaWYgKGhhc1NlZW5UZXh0T3JMaW5lQnJlYWsp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBoYXNTZWVuVGV4dE9yTGlu
ZUJyZWFrID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghbV9pbml0aWFsU3RydXQpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoaW5saW5lQ29udGFpbmVyTmVzdGlu
Z0xldmVsKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGFs
aWduQ29udGVudFZlcnRpY2FsbHkoKTsKLSAgICAgICAgYWxpZ25Ib3Jpem9udGFsbHkoaGFuZ2lu
Z0NvbnRlbnQsIGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCk7CisgICAgICAgIGF1dG8mIHVz
ZWRCYXNlbGluZSA9IHJ1bklzVGV4dE9yTGluZUJyZWFrID8gKm1faW5pdGlhbFN0cnV0IDogbV9s
aW5lQm94LmJhc2VsaW5lKCk7CisgICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChy
dW4sIG1fbGluZUJveCwgdXNlZEJhc2VsaW5lKTsKKyAgICB9CisgICAgaWYgKGlzVmlzdWFsbHlF
bXB0eSgpKSB7CisgICAgICAgIG1fbGluZUJveC5yZXNldEJhc2VsaW5lKCk7CisgICAgICAgIG1f
bGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KHsgfSk7CisgICAgfQorICAgIC8vIFJlbW92ZSBkZXNj
ZW50IHdoZW4gYWxsIGNvbnRlbnQgaXMgYmFzZWxpbmUgYWxpZ25lZCBidXQgbm9uZSBvZiB0aGVt
IGhhdmUgZGVzY2VudC4KKyAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHQoKS5xdWlya3MoKS5saW5l
RGVzY2VudE5lZWRzQ29sbGFwc2luZyhtX3J1bnMpKSB7CisgICAgICAgIG1fbGluZUJveC5zaHJp
bmtWZXJ0aWNhbGx5KG1fbGluZUJveC5iYXNlbGluZSgpLmRlc2NlbnQoKSk7CisgICAgICAgIG1f
bGluZUJveC5yZXNldERlc2NlbnQoKTsKICAgICB9CisgICAgYWxpZ25Db250ZW50VmVydGljYWxs
eSgpOworICAgIGFsaWduSG9yaXpvbnRhbGx5KGhhbmdpbmdDb250ZW50LCBpc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQpOwogICAgIHJldHVybiBXVEZNb3ZlKG1fcnVucyk7CiB9CiAKQEAgLTU2
OSw3ICs1NjgsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmRMaW5lQnJlYWsoY29uc3QgSW5s
aW5lSXRlbSYgaW5saW5lSXRlbSkKICAgICBtX3J1bnMuYXBwZW5kKHsgZG93bmNhc3Q8SW5saW5l
U29mdExpbmVCcmVha0l0ZW0+KGlubGluZUl0ZW0pLCBjb250ZW50TG9naWNhbFdpZHRoKCkgfSk7
CiB9CiAKLXZvaWQgTGluZUJ1aWxkZXI6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25z
dCBSdW4mIHJ1biwgY29uc3QgTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lJiB1c2VkQmFzZWxpbmUp
Cit2b2lkIExpbmVCdWlsZGVyOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgUnVu
JiBydW4sIElubGluZUJveCYgLypwYXJlbnRJbmxpbmVCb3gqLywgY29uc3QgSW5saW5lQm94OjpC
YXNlbGluZSYgdXNlZEJhc2VsaW5lKQogewogICAgIGlmIChydW4uaXNUZXh0KCkgfHwgcnVuLmlz
TGluZUJyZWFrKCkpIHsKICAgICAgICAgbV9saW5lQm94LnNldEFzY2VudElmR3JlYXRlcih1c2Vk
QmFzZWxpbmUuYXNjZW50KCkpOwpAQCAtNzAzLDcgKzcwMiw3IEBAIGJvb2wgTGluZUJ1aWxkZXI6
OmlzVmlzdWFsbHlOb25FbXB0eShjb25zdCBSdW4mIHJ1bikgY29uc3QKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLUxpbmVCb3hCdWlsZGVyOjpCYXNlbGluZSBMaW5lQnVpbGRlcjo6aGFsZkxlYWRp
bmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcywgSW5saW5lTGF5b3V0VW5p
dCBsaW5lTG9naWNhbEhlaWdodCkKK0lubGluZUJveDo6QmFzZWxpbmUgTGluZUJ1aWxkZXI6Omhh
bGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIElubGluZUxh
eW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpCiB7CiAgICAgYXV0byBhc2NlbnQgPSBmb250TWV0
cmljcy5hc2NlbnQoKTsKICAgICBhdXRvIGRlc2NlbnQgPSBmb250TWV0cmljcy5kZXNjZW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJ1aWxkZXIuaAppbmRleCBiOGFjMGIxYzUxMzI5MTdmMTEwODcyYTQ4MDA3YTll
YjMxYWYzN2E5Li40NWI5MGZhZWQ4NjhlNTVmY2JiM2FjY2U3ZjA4MzI1MjY0MWZmMzFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
QnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCdWlsZGVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkRpc3BsYXlS
dW4uaCIKICNpbmNsdWRlICJJbmxpbmVJdGVtLmgiCi0jaW5jbHVkZSAiSW5saW5lTGluZUJveEJ1
aWxkZXIuaCIKKyNpbmNsdWRlICJJbmxpbmVMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4
dEl0ZW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHN0cnVjdCBIZWlnaHRBbmRCYXNlbGluZSB7CiAgICAgICAgICAgICBJbmxpbmVM
YXlvdXRVbml0IGhlaWdodCB7IDAgfTsKICAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgYmFz
ZWxpbmVPZmZzZXQgeyAwIH07Ci0gICAgICAgICAgICBPcHRpb25hbDxMaW5lQm94QnVpbGRlcjo6
QmFzZWxpbmU+IHN0cnV0OworICAgICAgICAgICAgT3B0aW9uYWw8SW5saW5lQm94OjpCYXNlbGlu
ZT4gc3RydXQ7CiAgICAgICAgIH07CiAgICAgICAgIE9wdGlvbmFsPEhlaWdodEFuZEJhc2VsaW5l
PiBoZWlnaHRBbmRCYXNlbGluZTsKICAgICB9OwpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAg
ICAgSW5saW5lTGF5b3V0VW5pdCB0cmltbWFibGVUcmFpbGluZ1dpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQud2lkdGgoKTsgfQogICAgIGJvb2wgaXNUcmFp
bGluZ1J1bkZ1bGx5VHJpbW1hYmxlKCkgY29uc3QgeyByZXR1cm4gbV90cmltbWFibGVUcmFpbGlu
Z0NvbnRlbnQuaXNUcmFpbGluZ1J1bkZ1bGx5VHJpbW1hYmxlKCk7IH0KIAotICAgIGNvbnN0IExp
bmVCb3hCdWlsZGVyJiBsaW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94OyB9CisgICAg
Y29uc3QgSW5saW5lQm94JiBsaW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94OyB9CiAg
ICAgdm9pZCBtb3ZlTG9naWNhbExlZnQoSW5saW5lTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBtb3Zl
TG9naWNhbFJpZ2h0KElubGluZUxheW91dFVuaXQpOwogICAgIHZvaWQgc2V0SGFzSW50cnVzaXZl
RmxvYXQoKSB7IG1faGFzSW50cnVzaXZlRmxvYXQgPSB0cnVlOyB9CkBAIC0xNDgsNyArMTQ4LDcg
QEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50IHsg
Tm8sIFllcyB9OwogICAgIFJ1bkxpc3QgY2xvc2UoSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50
ID0gSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50OjpObyk7CiAKLSAgICBzdGF0aWMgTGluZUJv
eEJ1aWxkZXI6OkJhc2VsaW5lIGhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYs
IElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpOworICAgIHN0YXRpYyBJbmxpbmVC
b3g6OkJhc2VsaW5lIGhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYsIElubGlu
ZUxheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpOwogCiBwcml2YXRlOgogICAgIElubGluZUxh
eW91dFVuaXQgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveC5sb2dpY2FsVG9w
KCk7IH0KQEAgLTE4Myw3ICsxODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWxpZ25Ib3Jpem9u
dGFsbHkoY29uc3QgSGFuZ2luZ0NvbnRlbnQmLCBJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQp
OwogICAgIHZvaWQgYWxpZ25Db250ZW50VmVydGljYWxseSgpOwogCi0gICAgdm9pZCBhZGp1c3RC
YXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgUnVuJiwgY29uc3QgTGluZUJveEJ1aWxkZXI6OkJh
c2VsaW5lJik7CisgICAgdm9pZCBhZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgUnVu
JiwgSW5saW5lQm94JiBwYXJlbnRJbmxpbmVCb3gsIGNvbnN0IElubGluZUJveDo6QmFzZWxpbmUm
KTsKICAgICBJbmxpbmVMYXlvdXRVbml0IHJ1bkNvbnRlbnRIZWlnaHQoY29uc3QgUnVuJikgY29u
c3Q7CiAKICAgICB2b2lkIGp1c3RpZnlSdW5zKElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lk
dGgpOwpAQCAtMjE5LDEyICsyMTksMTIgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKICAgICBSdW5MaXN0IG1f
cnVuczsKICAgICBUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQgbV90cmltbWFibGVUcmFpbGluZ0Nv
bnRlbnQ7Ci0gICAgT3B0aW9uYWw8TGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lPiBtX2luaXRpYWxT
dHJ1dDsKKyAgICBPcHRpb25hbDxJbmxpbmVCb3g6OkJhc2VsaW5lPiBtX2luaXRpYWxTdHJ1dDsK
ICAgICBJbmxpbmVMYXlvdXRVbml0IG1fbGluZUxvZ2ljYWxXaWR0aCB7IDAgfTsKICAgICBPcHRp
b25hbDxUZXh0QWxpZ25Nb2RlPiBtX2hvcml6b250YWxBbGlnbm1lbnQ7CiAgICAgYm9vbCBtX2lz
SW50cmluc2ljU2l6aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzSW50cnVzaXZlRmxvYXQg
eyBmYWxzZSB9OwotICAgIExpbmVCb3hCdWlsZGVyIG1fbGluZUJveDsKKyAgICBJbmxpbmVCb3gg
bV9saW5lQm94OwogICAgIE9wdGlvbmFsPGJvb2w+IG1fbGluZUlzVmlzdWFsbHlFbXB0eUJlZm9y
ZVRyaW1tYWJsZVRyYWlsaW5nQ29udGVudDsKICAgICBib29sIG1fc2hvdWxkSWdub3JlVHJhaWxp
bmdMZXR0ZXJTcGFjaW5nIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaAppbmRleCA1
ZWU1ZDVmNzZiY2VjNDIxNTU2NTllNmM2ZDI2ZTM1YjQ0NDg4NTRmLi4wNjc5N2I2YjFhNDYyYmQ3
MTk2MDc4MzQzMmI3MWFjYjE1YmM0MTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKQEAgLTU0LDcg
KzU0LDcgQEAgcHVibGljOgogICAgICAgICB1c2luZyBGbG9hdExpc3QgPSBWZWN0b3I8RmxvYXQ+
OwogICAgICAgICBGbG9hdExpc3QgZmxvYXRzOwogICAgICAgICBjb25zdCBMaW5lQnVpbGRlcjo6
UnVuTGlzdCBydW5MaXN0OwotICAgICAgICBjb25zdCBMaW5lQm94QnVpbGRlciBsaW5lQm94Owor
ICAgICAgICBjb25zdCBJbmxpbmVCb3ggbGluZUJveDsKICAgICB9OwogICAgIHN0cnVjdCBJbmxp
bmVJdGVtUmFuZ2UgewogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBzdGFy
dCA9PSBlbmQ7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407059</attachid>
            <date>2020-08-22 16:26:26 -0700</date>
            <delta_ts>2020-08-22 18:15:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214406-20200822162625.patch</filename>
            <type>text/plain</type>
            <size>38078</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgxMjhiYTlkZTgxZWRm
NDJhNWFhYTAyMjgwZTY3MGI3YjBjMDMzYy4uM2MxMGYyYTQyNWVhMTFmY2NhNmFlODFiMGVkNDU5
YjliN2ZmNTRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTA4LTIyICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBhZGp1c3RC
YXNlbGluZUFuZExpbmVIZWlnaHQgc2hvdWxkIHRha2UgdGhlIHBhcmVudCBpbmxpbmUgYm94Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NDA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgVGhpcyBpcyBp
biBwcmVwYXJ0aW9uIGZvciBzdXBwb3J0aW5nIG5lc3RlZCBsaW5lYm94ZXMgcmVxdWlyZWQgYnkg
Y2VydGFpbiB2ZXJ0aWNhbCBhbGlnbm1lbnQgdmFsdWVzLgorCisgICAgICAgIDxkaXY+dGV4dCBj
b250ZW50PC9kaXY+IDwtIFRoaXMgY29udGVudCByZXF1aXJlcyBvbmx5IG9uZSBpbmxpbmUgYm94
LCB0aGUgcm9vdCBsaW5lYm94LgorICAgICAgICA8ZGl2Pm5lc3RlZCA8c3Bhbj48c3BhbiBzdHls
ZT0idmVydGljYWwtYWxpZ246IHRleHQtdG9wIj50ZXh0PC9zcGFuPiA8L3NwYW4+Y29udGVudDwv
ZGl2PiA8LSB0aGUgY29udGVudCBbdGV4dF0gaXMgdmVydGljYWxseQorICAgICAgICBhbGlnbmVk
IHdpdGggdGhlIHRvcCBvZiB0aGUgX3BhcmVudCBlbGVtZW50XydzIGZvbnQgYW5kIG5vdCB0aGUg
cm9vdCBpbmxpbmUgYm94LgorCisgICAgICAgIDEuIExldCdzIHJlbmFtZSB0aGUgTGluZUJveEJ1
aWxkZXIgdG8gSW5saW5lQm94LiBXZSdsbCBoYXZlIGEgYnVuY2ggb2YgdGhlc2UuCisgICAgICAg
IDIuIFBhc3MgaW4gdGhlIHBhcmVudCBpbmxpbmUgdG8gYWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVp
Z2h0IChjdXJyZW50bHkgdGhlcmUncyBvbmx5IG9uZSBpbmxpbmUgYm94IHBlciBsaW5lLCB0aGUg
cm9vdCBpbmxpbmUgYm94KS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmxpbmVIZWlnaHRDb25zdHJhaW50cyBjb25zdCk6Cisg
ICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJv
eEJ1aWxkZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6QmFzZWxpbmU6
OmhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmxvZ2lj
YWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2Nyb2xs
YWJsZU92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6
bG9naWNhbExlZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojps
b2dpY2FsUmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojps
b2dpY2FsVG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bG9n
aWNhbEJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6Omxv
Z2ljYWxXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6Omxv
Z2ljYWxIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpy
ZXNldERlc2NlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRMb2dp
Y2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0TG9naWNh
bFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0U2Nyb2xsYWJs
ZU92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6bW92ZUhvcml6
b250YWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmV4cGFuZEhvcml6
b250YWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNocmlua0hvcml6
b250YWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmV4cGFuZFZlcnRp
Y2FsbHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzaHJpbmtWZXJ0aWNh
bGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6aXNDb25zaWRlcmVkRW1w
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRJc0NvbnNp
ZGVyZWRFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldElzQ29u
c2lkZXJlZE5vbkVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6TGlu
ZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldExvZ2ljYWxIZWln
aHRJZkdyZWF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpiYXNlbGlu
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldEJhc2VsaW5l
T2Zmc2V0SWZHcmVhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0
QXNjZW50SWZHcmVhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0
RGVzY2VudElmR3JlYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmJh
c2VsaW5lT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6
cmVzZXRCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2Vs
aW5lOjpCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2Vs
aW5lOjpzZXRBc2NlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpCYXNl
bGluZTo6c2V0RGVzY2VudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJh
c2VsaW5lOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OkJhc2Vs
aW5lOjphc2NlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpC
YXNlbGluZTo6ZGVzY2VudCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphZGp1
c3RCYXNlbGluZUFuZExpbmVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
aW5lQnVpbGRlcjo6bGluZUJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvTGluZUxheW91dENvbnRleHQuaDoKKwogMjAyMC0wOC0yMCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBub2RlIGdlb21ldHJ5IGZ1bmN0aW9ucyBm
cm9tIFJhbmdlIHRvIFJlbmRlck9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUyMzBhZTY5NTk5ZjkyYTgzZjllZmY2Njc2
NWQxMmM4YzI3ZTFlOTcuLmEyMzcyZjFkYTg2MjY2MzNmMDBmNWQwNjQ1NmMxMzA1NDRmZmU4YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIwODIsNyArMjA4Miw3IEBACiAJCTZGOTk1QTNBMUE3MDgzMzcwMEE3MzVGNCAvKiBK
U1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZGOTk1QTMwMUE3MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4
QXJyYXlPYmplY3QuaCAqLzsgfTsKIAkJNkZBNDQ1NEU4OThGMkZDMTY4QkMzOEMxIC8qIEpTQmVm
b3JlVW5sb2FkRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI5RTA0QTI3QkVEMkY4MUY5OEU5MDIyQiAvKiBKU0JlZm9yZVVubG9hZEV2ZW50Lmgg
Ki87IH07CiAJCTZGQjExQjVDMjE3ODNGRDAwMEUyQTU3NCAvKiBUZXh0VXRpbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCMTFCNTkyMTc4M0ZDRjAw
RTJBNTc0IC8qIFRleHRVdGlsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJNkZCMjQwMDUyM0RGRjEyODAwNzk2NDU4IC8qIElubGluZUxpbmVCb3hC
dWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RkIyNDAwMzIzREZGMTI3MDA3OTY0NTggLyogSW5saW5lTGluZUJveEJ1aWxkZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2RkIyNDAwNTIzREZG
MTI4MDA3OTY0NTggLyogSW5saW5lTGluZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCMjQwMDMyM0RGRjEyNzAwNzk2NDU4IC8qIElubGluZUxp
bmVCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk2RkI0N0U2MzIyNzc0MjVBMDBDN0JDQjAgLyogRGlzcGxheUxpbmVCb3guaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjQ3RTYxMjI3NzQyNUEwMEM3
QkNCMCAvKiBEaXNwbGF5TGluZUJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTZGQjVFMjE0MjIxRjI0NTMwMDM5ODlDRiAvKiBDb250ZW50Q2hh
bmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZGQjVFMjEyMjIxRjI0NDcwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkNFMUEx
QTIyNjE4QUJEMDA0RjAzNDMgLyogRGlzcGxheVJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZDRTFBMTgyMjYxOEFCMzAwNEYwMzQzIC8qIERpc3Bs
YXlSdW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtOTU4Niw3ICs5NTg2LDcgQEAKIAkJNkZCMTFCNTkyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRV
dGlsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRVdGlsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQjExQjVCMjE3ODNGQ0YwMEUyQTU3NCAvKiBUZXh0
VXRpbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0VXRpbC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQjIyRTMwMjMwMDk3RTMwMEMyMDg2
NiAvKiBUYWJsZUdyaWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFibGVHcmlkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTZGQjI0MDAzMjNERkYxMjcwMDc5NjQ1OCAvKiBJbmxpbmVMaW5l
Qm94QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVMaW5l
Qm94QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RkIyNDAwMzIzREZG
MTI3MDA3OTY0NTggLyogSW5saW5lTGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbmxpbmVMaW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZG
QjQ3RTYxMjI3NzQyNUEwMEM3QkNCMCAvKiBEaXNwbGF5TGluZUJveC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGluZUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2RkI1RTIxMjIyMUYyNDQ3MDAzOTg5Q0YgLyogQ29udGVudENoYW5nZU9ic2Vy
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRDaGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2RkJCODYwNTIwQjQ2NEI2MDBEQUQ5MzggLyogRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXR0aW5nQ29udGV4
dEdlb21ldHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MzkxLDcgKzE3
MzkxLDcgQEAKIAkJCQkxMTVDRkE3QzIwOEI4RTEwMDAxRTY5OTEgLyogSW5saW5lRm9ybWF0dGlu
Z1N0YXRlLmggKi8sCiAJCQkJNkY3QjhDRUMyMzYyNkU2NjAwQzlGRjE1IC8qIElubGluZUl0ZW0u
Y3BwICovLAogCQkJCTZGRTdDRkEwMjE3N0VFRjEwMDVCMTU3MyAvKiBJbmxpbmVJdGVtLmggKi8s
Ci0JCQkJNkZCMjQwMDMyM0RGRjEyNzAwNzk2NDU4IC8qIElubGluZUxpbmVCb3hCdWlsZGVyLmgg
Ki8sCisJCQkJNkZCMjQwMDMyM0RGRjEyNzAwNzk2NDU4IC8qIElubGluZUxpbmVCb3guaCAqLywK
IAkJCQk2RkUxOTgxMzIxNzgzOTdCMDA0NDZGMDggLyogSW5saW5lTGluZUJyZWFrZXIuY3BwICov
LAogCQkJCTZGRTE5ODE1MjE3ODM5N0MwMDQ0NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5oICov
LAogCQkJCTZGMENENjkyMjI5RUQzMTkwMEM1OTk0RSAvKiBJbmxpbmVMaW5lQnVpbGRlci5jcHAg
Ki8sCkBAIC0zMTUwNyw3ICszMTUwNyw3IEBACiAJCQkJMTE1Q0ZBN0UyMDhCOEUxMDAwMUU2OTkx
IC8qIElubGluZUZvcm1hdHRpbmdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZFN0NGQTIy
MTc3RUVGMjAwNUIxNTczIC8qIElubGluZUl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTc4
OTE2MTEyMEQ2MDgwMDYwRUNFNSAvKiBJbmxpbmVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNkZCMjQwMDUyM0RGRjEyODAwNzk2NDU4IC8qIElubGluZUxpbmVCb3hCdWlsZGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk2RkIyNDAwNTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lTGluZUJv
eC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZFMTk4MTcyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGlu
ZUxpbmVCcmVha2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjBDRDY5NTIyOUVEMzI3MDBDNTk5
NEUgLyogSW5saW5lTGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0NTc3NUNFMjQx
NDM3RDUwMDJERjFBMCAvKiBJbmxpbmVQYXRoRGF0YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dFF1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKaW5kZXggMjQyMTE2NzE4ZjA3
YjZmMDI4YzBiNGNkNjQ0YmM3NGNkNDE3NGM5NC4uZjFjZTVlNDY1NjlhNTg2OTgxNWM5NjdkMDVl
MzE2MTk2MmU5YTNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVp
cmtzLmNwcApAQCAtODMsMTIgKzgzLDEyIEBAIExpbmVCdWlsZGVyOjpDb25zdHJhaW50czo6SGVp
Z2h0QW5kQmFzZWxpbmUgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6bGluCiAgICAg
YXV0byBsaW5lSGVpZ2h0ID0gZm9ybWF0dGluZ1Jvb3Quc3R5bGUoKS5saW5lSGVpZ2h0KCk7CiAg
ICAgaWYgKGxpbmVIZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpIHsKICAgICAgICAgYXV0
byBpbml0aWFsQmFzZWxpbmVPZmZzZXQgPSBMaW5lQnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNz
KGZvcm1hdHRpbmdSb290LnN0eWxlKCkuZm9udE1ldHJpY3MoKSwgMF9sdSkuYXNjZW50KCk7Ci0g
ICAgICAgIHJldHVybiB7IGluaXRpYWxCYXNlbGluZU9mZnNldCwgaW5pdGlhbEJhc2VsaW5lT2Zm
c2V0LCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmUgeyBzdHJ1dEJhc2VsaW5lT2Zmc2V0LCBzdHJ1
dEhlaWdodCAtIHN0cnV0QmFzZWxpbmVPZmZzZXQgfSB9OworICAgICAgICByZXR1cm4geyBpbml0
aWFsQmFzZWxpbmVPZmZzZXQsIGluaXRpYWxCYXNlbGluZU9mZnNldCwgTGluZUJveDo6QmFzZWxp
bmUgeyBzdHJ1dEJhc2VsaW5lT2Zmc2V0LCBzdHJ1dEhlaWdodCAtIHN0cnV0QmFzZWxpbmVPZmZz
ZXQgfSB9OwogICAgIH0KICAgICAvLyBGSVhNRTogVGhlIG9ubHkgcmVhc29uIHdoeSB3ZSB1c2Ug
aW50VmFsdWUoKSBoZXJlIGlzIHRvIG1hdGNoIGN1cnJlbnQgaW5saW5lIHRyZWUgKGludGVncmFs
KWJlaGF2aW9yLgogICAgIElubGluZUxheW91dFVuaXQgaW5pdGlhbExpbmVIZWlnaHQgPSBsaW5l
SGVpZ2h0LmludFZhbHVlKCk7CiAgICAgYXV0byBpbml0aWFsQmFzZWxpbmVPZmZzZXQgPSBMaW5l
QnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKGZvcm1hdHRpbmdSb290LnN0eWxlKCkuZm9udE1l
dHJpY3MoKSwgaW5pdGlhbExpbmVIZWlnaHQpLmFzY2VudCgpOwotICAgIHJldHVybiB7IGluaXRp
YWxMaW5lSGVpZ2h0LCBpbml0aWFsQmFzZWxpbmVPZmZzZXQsIExpbmVCb3hCdWlsZGVyOjpCYXNl
bGluZSB7IHN0cnV0QmFzZWxpbmVPZmZzZXQsIHN0cnV0SGVpZ2h0IC0gc3RydXRCYXNlbGluZU9m
ZnNldCB9IH07CisgICAgcmV0dXJuIHsgaW5pdGlhbExpbmVIZWlnaHQsIGluaXRpYWxCYXNlbGlu
ZU9mZnNldCwgTGluZUJveDo6QmFzZWxpbmUgeyBzdHJ1dEJhc2VsaW5lT2Zmc2V0LCBzdHJ1dEhl
aWdodCAtIHN0cnV0QmFzZWxpbmVPZmZzZXQgfSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTA2MGIyOGZlMWI4YjYwMjIyMDI5NDcwZmZhNTc4ZDIyM2QzMDQ2OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmVCb3guaApAQCAtMCwwICsxLDI0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJEaXNwbGF5
Qm94LmgiCisjaW5jbHVkZSAiRGlzcGxheUlubGluZVJlY3QuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK2NsYXNzIExpbmVCb3ggeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0cnVjdCBCYXNlbGluZSB7CisgICAgICAg
IEJhc2VsaW5lKElubGluZUxheW91dFVuaXQgYXNjZW50LCBJbmxpbmVMYXlvdXRVbml0IGRlc2Nl
bnQpOworICAgICAgICBCYXNlbGluZSgpID0gZGVmYXVsdDsKKworICAgICAgICB2b2lkIHNldEFz
Y2VudChJbmxpbmVMYXlvdXRVbml0KTsKKyAgICAgICAgdm9pZCBzZXREZXNjZW50KElubGluZUxh
eW91dFVuaXQpOworCisgICAgICAgIHZvaWQgcmVzZXQoKTsKKworICAgICAgICBJbmxpbmVMYXlv
dXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGFzY2VudCgpICsgZGVzY2VudCgpOyB9Cisg
ICAgICAgIElubGluZUxheW91dFVuaXQgYXNjZW50KCkgY29uc3Q7CisgICAgICAgIElubGluZUxh
eW91dFVuaXQgZGVzY2VudCgpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyNpZiBBU1NFUlRfRU5B
QkxFRAorICAgICAgICBib29sIG1faGFzVmFsaWRBc2NlbnQgeyBmYWxzZSB9OworICAgICAgICBi
b29sIG1faGFzVmFsaWREZXNjZW50IHsgZmFsc2UgfTsKKyNlbmRpZgorICAgICAgICBJbmxpbmVM
YXlvdXRVbml0IG1fYXNjZW50IHsgMCB9OworICAgICAgICBJbmxpbmVMYXlvdXRVbml0IG1fZGVz
Y2VudCB7IDAgfTsKKyAgICB9OworCisgICAgTGluZUJveChjb25zdCBEaXNwbGF5OjpJbmxpbmVS
ZWN0JiwgY29uc3QgQmFzZWxpbmUmLCBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KTsK
KyAgICBMaW5lQm94KCkgPSBkZWZhdWx0OworCisgICAgY29uc3QgRGlzcGxheTo6SW5saW5lUmVj
dCYgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBjb25zdCBEaXNw
bGF5OjpJbmxpbmVSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX3Nj
cm9sbGFibGVPdmVyZmxvdzsgfQorCisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5sZWZ0KCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5yaWdodCgpOyB9CisgICAgSW5saW5l
TGF5b3V0VW5pdCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnRvcCgpOyB9Cisg
ICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0
LmJvdHRvbSgpOyB9CisKKyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVjdC53aWR0aCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2Fs
SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmhlaWdodCgpOyB9CisKKyAgICBjb25zdCBC
YXNlbGluZSYgYmFzZWxpbmUoKSBjb25zdDsKKyAgICAvLyBCYXNlbGluZSBvZmZzZXQgZnJvbSBs
aW5lIGxvZ2ljYWwgdG9wLiBOb3RlIHRoYXQgb2Zmc2V0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IGVx
dWFsIHRvIGFzY2VudC4KKyAgICAvLworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgbGlu
ZSBsb2dpY2FsIHRvcCAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLSAodG9wIGFsaWduKQorICAgIC8v
ICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXgorICAgIC8vICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXiAgICAgICAgICAgfAorICAgIC8vICAgXiAgICAgICAgIHwgYmFzZWxpbmUgb2Zmc2V0ICAg
ICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCBiYXNlbGluZSBvZmZzZXQKKyAgICAvLyAgIHwg
ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwK
KyAgICAvLyAgIHwgYXNjZW50ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
YXNjZW50ICAgIHwKKyAgICAvLyAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHYgICAgICAgICAgIHYKKyAgICAvLyAgIHYgICAgICAgICB2ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0gYmFzZWxpbmUKKyAgICAvLyAg
IC0tLS0tLS0tLS0tLS0tLS0tIGJhc2VsaW5lICAgICAgICAgICAgICAgICAgIF4KKyAgICAvLyAg
IF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGVzY2VudAor
ICAgIC8vICAgfCBkZXNjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgor
ICAgIC8vICAgdgorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgbGluZSBsb2dpY2FsIGJv
dHRvbSAgLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIElubGluZUxheW91dFVuaXQgYmFzZWxpbmVP
ZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkIHNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKElubGlu
ZUxheW91dFVuaXQpOworICAgIHZvaWQgc2V0QXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVu
aXQpOworICAgIHZvaWQgc2V0RGVzY2VudElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsKKwor
ICAgIHZvaWQgcmVzZXRCYXNlbGluZSgpOworICAgIHZvaWQgcmVzZXREZXNjZW50KCkgeyBtX2Jh
c2VsaW5lLnNldERlc2NlbnQoMF9sdSk7IH0KKworICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodChJ
bmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIHsgbV9yZWN0LnNldEhlaWdodChsb2dpY2Fs
SGVpZ2h0KTsgfQorCisgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKElubGluZUxh
eW91dFVuaXQpOworICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKElubGluZUxheW91dFVuaXQgbG9n
aWNhbFdpZHRoKSB7IG1fcmVjdC5zZXRXaWR0aChsb2dpY2FsV2lkdGgpOyB9CisKKyAgICB2b2lk
IHNldFNjcm9sbGFibGVPdmVyZmxvdyhjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiByZWN0KSB7
IG1fc2Nyb2xsYWJsZU92ZXJmbG93ID0gcmVjdDsgfQorCisgICAgdm9pZCBtb3ZlSG9yaXpvbnRh
bGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0Lm1vdmVIb3Jpem9udGFsbHkoZGVs
dGEpOyB9CisKKyAgICB2b2lkIGV4cGFuZEhvcml6b250YWxseShJbmxpbmVMYXlvdXRVbml0IGRl
bHRhKSB7IG1fcmVjdC5leHBhbmRIb3Jpem9udGFsbHkoZGVsdGEpOyB9CisgICAgdm9pZCBzaHJp
bmtIb3Jpem9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkgeyBleHBhbmRIb3Jpem9udGFs
bHkoLWRlbHRhKTsgfQorCisgICAgdm9pZCBleHBhbmRWZXJ0aWNhbGx5KElubGluZUxheW91dFVu
aXQgZGVsdGEpIHsgbV9yZWN0LmV4cGFuZFZlcnRpY2FsbHkoZGVsdGEpOyB9CisgICAgdm9pZCBz
aHJpbmtWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgZXhwYW5kVmVydGljYWxs
eSgtZGVsdGEpOyB9CisKKyAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjIvdmlzdXJl
bi5odG1sI2lubGluZS1mb3JtYXR0aW5nCisgICAgLy8gTGluZSBib3hlcyB0aGF0IGNvbnRhaW4g
bm8gdGV4dCwgbm8gcHJlc2VydmVkIHdoaXRlIHNwYWNlLCBubyBpbmxpbmUgZWxlbWVudHMgd2l0
aCBub24temVybyBtYXJnaW5zLCBwYWRkaW5nLCBvciBib3JkZXJzLAorICAgIC8vIGFuZCBubyBv
dGhlciBpbi1mbG93IGNvbnRlbnQgKHN1Y2ggYXMgaW1hZ2VzLCBpbmxpbmUgYmxvY2tzIG9yIGlu
bGluZSB0YWJsZXMpLCBhbmQgZG8gbm90IGVuZCB3aXRoIGEgcHJlc2VydmVkIG5ld2xpbmUKKyAg
ICAvLyBtdXN0IGJlIHRyZWF0ZWQgYXMgemVyby1oZWlnaHQgbGluZSBib3hlcyBmb3IgdGhlIHB1
cnBvc2VzIG9mIGRldGVybWluaW5nIHRoZSBwb3NpdGlvbnMgb2YgYW55IGVsZW1lbnRzIGluc2lk
ZSBvZiB0aGVtLAorICAgIC8vIGFuZCBtdXN0IGJlIHRyZWF0ZWQgYXMgbm90IGV4aXN0aW5nIGZv
ciBhbnkgb3RoZXIgcHVycG9zZS4KKyAgICAvLyBOb3RlIHRoYXQgaXQgZG9lcyBub3QgbmVjZXNz
YXJpbHkgbWVhbiB2aXN1YWxseSBub24tZW1wdHkgbGluZS4gPHNwYW4gc3R5bGU9ImZvbnQtc2l6
ZTogMHB4Ij50aGlzIGlzIHN0aWxsIGNvbnNpZGVyZWQgbm9uLWVtcHR5PC9zcGFuPgorICAgIGJv
b2wgaXNDb25zaWRlcmVkRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc2lkZXJlZEVtcHR5
OyB9CisgICAgdm9pZCBzZXRJc0NvbnNpZGVyZWRFbXB0eSgpIHsgbV9pc0NvbnNpZGVyZWRFbXB0
eSA9IHRydWU7IH0KKyAgICB2b2lkIHNldElzQ29uc2lkZXJlZE5vbkVtcHR5KCkgeyBtX2lzQ29u
c2lkZXJlZEVtcHR5ID0gZmFsc2U7IH0KKworcHJpdmF0ZToKKyNpZiBBU1NFUlRfRU5BQkxFRAor
ICAgIGJvb2wgbV9oYXNWYWxpZEJhc2VsaW5lIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzVmFs
aWRCYXNlbGluZU9mZnNldCB7IGZhbHNlIH07CisjZW5kaWYKKyAgICBEaXNwbGF5OjpJbmxpbmVS
ZWN0IG1fcmVjdDsKKyAgICBEaXNwbGF5OjpJbmxpbmVSZWN0IG1fc2Nyb2xsYWJsZU92ZXJmbG93
OworICAgIEJhc2VsaW5lIG1fYmFzZWxpbmU7CisgICAgSW5saW5lTGF5b3V0VW5pdCBtX2Jhc2Vs
aW5lT2Zmc2V0IHsgMCB9OworICAgIGJvb2wgbV9pc0NvbnNpZGVyZWRFbXB0eSB7IHRydWUgfTsK
K307CisKK2lubGluZSBMaW5lQm94OjpMaW5lQm94KGNvbnN0IERpc3BsYXk6OklubGluZVJlY3Qm
IHJlY3QsIGNvbnN0IEJhc2VsaW5lJiBiYXNlbGluZSwgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGlu
ZU9mZnNldCkKKyAgICA6IG1fcmVjdChyZWN0KQorICAgICwgbV9iYXNlbGluZShiYXNlbGluZSkK
KyAgICAsIG1fYmFzZWxpbmVPZmZzZXQoYmFzZWxpbmVPZmZzZXQpCit7CisjaWYgQVNTRVJUX0VO
QUJMRUQKKyAgICBtX2hhc1ZhbGlkQmFzZWxpbmUgPSB0cnVlOworICAgIG1faGFzVmFsaWRCYXNl
bGluZU9mZnNldCA9IHRydWU7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgTGluZUJveDo6c2V0
TG9naWNhbEhlaWdodElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpCit7
CisgICAgaWYgKGxvZ2ljYWxIZWlnaHQgPD0gbV9yZWN0LmhlaWdodCgpKQorICAgICAgICByZXR1
cm47CisgICAgbV9yZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKK30KKworaW5saW5lIGNv
bnN0IExpbmVCb3g6OkJhc2VsaW5lJiBMaW5lQm94OjpiYXNlbGluZSgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKG1faGFzVmFsaWRCYXNlbGluZSk7CisgICAgcmV0dXJuIG1fYmFzZWxpbmU7Cit9CisK
K2lubGluZSB2b2lkIExpbmVCb3g6OnNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKElubGluZUxh
eW91dFVuaXQgYmFzZWxpbmVPZmZzZXQpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hh
c1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOworI2VuZGlmCisgICAgbV9iYXNlbGluZU9mZnNl
dCA9IHN0ZDo6bWF4KGJhc2VsaW5lT2Zmc2V0LCBtX2Jhc2VsaW5lT2Zmc2V0KTsKK30KKworaW5s
aW5lIHZvaWQgTGluZUJveDo6c2V0QXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgYXNj
ZW50KQoreworICAgIGlmIChhc2NlbnQgPCBtX2Jhc2VsaW5lLmFzY2VudCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgc2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIoYXNjZW50KTsKKyAgICBtX2Jh
c2VsaW5lLnNldEFzY2VudChhc2NlbnQpOworfQorCitpbmxpbmUgdm9pZCBMaW5lQm94OjpzZXRE
ZXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgZGVzY2VudCkKK3sKKyAgICBpZiAoZGVz
Y2VudCA8IG1fYmFzZWxpbmUuZGVzY2VudCgpKQorICAgICAgICByZXR1cm47CisgICAgbV9iYXNl
bGluZS5zZXREZXNjZW50KGRlc2NlbnQpOworfQorCitpbmxpbmUgSW5saW5lTGF5b3V0VW5pdCBM
aW5lQm94OjpiYXNlbGluZU9mZnNldCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRC
YXNlbGluZU9mZnNldCk7CisgICAgcmV0dXJuIG1fYmFzZWxpbmVPZmZzZXQ7Cit9CisKK2lubGlu
ZSB2b2lkIExpbmVCb3g6OnJlc2V0QmFzZWxpbmUoKQoreworI2lmIEFTU0VSVF9FTkFCTEVECisg
ICAgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0ID0gdHJ1ZTsKKyNlbmRpZgorICAgIG1fYmFzZWxp
bmVPZmZzZXQgPSAwX2x1OworICAgIG1fYmFzZWxpbmUucmVzZXQoKTsKK30KKworaW5saW5lIExp
bmVCb3g6OkJhc2VsaW5lOjpCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGFzY2VudCwgSW5saW5l
TGF5b3V0VW5pdCBkZXNjZW50KQorICAgIDogbV9hc2NlbnQoYXNjZW50KQorICAgICwgbV9kZXNj
ZW50KGRlc2NlbnQpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlkQXNjZW50
ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7CisjZW5kaWYKK30KKworaW5s
aW5lIHZvaWQgTGluZUJveDo6QmFzZWxpbmU6OnNldEFzY2VudChJbmxpbmVMYXlvdXRVbml0IGFz
Y2VudCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faGFzVmFsaWRBc2NlbnQgPSB0cnVl
OworI2VuZGlmCisgICAgbV9hc2NlbnQgPSBhc2NlbnQ7Cit9CisKK2lubGluZSB2b2lkIExpbmVC
b3g6OkJhc2VsaW5lOjpzZXREZXNjZW50KElubGluZUxheW91dFVuaXQgZGVzY2VudCkKK3sKKyNp
ZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKKyNlbmRpZgor
ICAgIG1fZGVzY2VudCA9IGRlc2NlbnQ7Cit9CisKK2lubGluZSB2b2lkIExpbmVCb3g6OkJhc2Vs
aW5lOjpyZXNldCgpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBtX2hhc1ZhbGlkQXNjZW50
ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7CisjZW5kaWYKKyAgICBtX2Fz
Y2VudCA9IDBfbHU7CisgICAgbV9kZXNjZW50ID0gMF9sdTsKK30KKworaW5saW5lIElubGluZUxh
eW91dFVuaXQgTGluZUJveDo6QmFzZWxpbmU6OmFzY2VudCgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KG1faGFzVmFsaWRBc2NlbnQpOworICAgIHJldHVybiBtX2FzY2VudDsKK30KKworaW5saW5lIElu
bGluZUxheW91dFVuaXQgTGluZUJveDo6QmFzZWxpbmU6OmRlc2NlbnQoKSBjb25zdAoreworICAg
IEFTU0VSVChtX2hhc1ZhbGlkRGVzY2VudCk7CisgICAgcmV0dXJuIG1fZGVzY2VudDsKK30KKwor
fQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCb3hCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94QnVpbGRlci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDUwOThkYjA1OTc2MTBmZjA0ZDIxN2Y3YmNjYTIwMjBhMWQ3ZDhhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3hCdWlsZGVyLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwyNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0KLSNpbmNsdWRlICJEaXNwbGF5
Qm94LmgiCi0jaW5jbHVkZSAiRGlzcGxheUlubGluZVJlY3QuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotbmFtZXNwYWNlIExheW91dCB7Ci0KLWNsYXNzIExpbmVCb3hCdWlsZGVyIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgQmFzZWxpbmUgewot
ICAgICAgICBCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGFzY2VudCwgSW5saW5lTGF5b3V0VW5p
dCBkZXNjZW50KTsKLSAgICAgICAgQmFzZWxpbmUoKSA9IGRlZmF1bHQ7Ci0KLSAgICAgICAgdm9p
ZCBzZXRBc2NlbnQoSW5saW5lTGF5b3V0VW5pdCk7Ci0gICAgICAgIHZvaWQgc2V0RGVzY2VudChJ
bmxpbmVMYXlvdXRVbml0KTsKLQotICAgICAgICB2b2lkIHJlc2V0KCk7Ci0KLSAgICAgICAgSW5s
aW5lTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBhc2NlbnQoKSArIGRlc2NlbnQo
KTsgfQotICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCgpIGNvbnN0OwotICAgICAgICBJ
bmxpbmVMYXlvdXRVbml0IGRlc2NlbnQoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0jaWYgQVNT
RVJUX0VOQUJMRUQKLSAgICAgICAgYm9vbCBtX2hhc1ZhbGlkQXNjZW50IHsgZmFsc2UgfTsKLSAg
ICAgICAgYm9vbCBtX2hhc1ZhbGlkRGVzY2VudCB7IGZhbHNlIH07Ci0jZW5kaWYKLSAgICAgICAg
SW5saW5lTGF5b3V0VW5pdCBtX2FzY2VudCB7IDAgfTsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCBtX2Rlc2NlbnQgeyAwIH07Ci0gICAgfTsKLQotICAgIExpbmVCb3hCdWlsZGVyKGNvbnN0IERp
c3BsYXk6OklubGluZVJlY3QmLCBjb25zdCBCYXNlbGluZSYsIElubGluZUxheW91dFVuaXQgYmFz
ZWxpbmVPZmZzZXQpOwotICAgIExpbmVCb3hCdWlsZGVyKCkgPSBkZWZhdWx0OwotCi0gICAgY29u
c3QgRGlzcGxheTo6SW5saW5lUmVjdCYgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3Jl
Y3Q7IH0KLSAgICBjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3co
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVPdmVyZmxvdzsgfQotCi0gICAgSW5saW5lTGF5
b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5sZWZ0KCk7IH0KLSAg
ICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5y
aWdodCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1
cm4gbV9yZWN0LnRvcCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWN0LmJvdHRvbSgpOyB9Ci0KLSAgICBJbmxpbmVMYXlvdXRVbml0
IGxvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC53aWR0aCgpOyB9Ci0gICAgSW5s
aW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmhlaWdo
dCgpOyB9Ci0KLSAgICBjb25zdCBCYXNlbGluZSYgYmFzZWxpbmUoKSBjb25zdDsKLSAgICAvLyBC
YXNlbGluZSBvZmZzZXQgZnJvbSBsaW5lIGxvZ2ljYWwgdG9wLiBOb3RlIHRoYXQgb2Zmc2V0IGRv
ZXMgbm90IG5lY2Vzc2FyaWx5IGVxdWFsIHRvIGFzY2VudC4KLSAgICAvLwotICAgIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0gICAgbGluZSBsb2dpY2FsIHRvcCAgICAgLS0tLS0tLS0tLS0tLS0tLS0t
LSAodG9wIGFsaWduKQotICAgIC8vICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXgotICAgIC8vICAgICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgfAotICAgIC8vICAgXiAgICAgICAg
IHwgYmFzZWxpbmUgb2Zmc2V0ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCBiYXNlbGlu
ZSBvZmZzZXQKLSAgICAvLyAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgIHwKLSAgICAvLyAgIHwgYXNjZW50ICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgYXNjZW50ICAgIHwKLSAgICAvLyAgIHwgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgIHYKLSAgICAvLyAgIHYg
ICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0t
LS0gYmFzZWxpbmUKLSAgICAvLyAgIC0tLS0tLS0tLS0tLS0tLS0tIGJhc2VsaW5lICAgICAgICAg
ICAgICAgICAgIF4KLSAgICAvLyAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgZGVzY2VudAotICAgIC8vICAgfCBkZXNjZW50ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdgotICAgIC8vICAgdgotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0gICAgbGluZSBsb2dpY2FsIGJvdHRvbSAgLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIElubGlu
ZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQoKSBjb25zdDsKLSAgICB2b2lkIHNldEJhc2VsaW5l
T2Zmc2V0SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQpOwotICAgIHZvaWQgc2V0QXNjZW50SWZH
cmVhdGVyKElubGluZUxheW91dFVuaXQpOwotICAgIHZvaWQgc2V0RGVzY2VudElmR3JlYXRlcihJ
bmxpbmVMYXlvdXRVbml0KTsKLQotICAgIHZvaWQgcmVzZXRCYXNlbGluZSgpOwotICAgIHZvaWQg
cmVzZXREZXNjZW50KCkgeyBtX2Jhc2VsaW5lLnNldERlc2NlbnQoMF9sdSk7IH0KLQotICAgIHZv
aWQgc2V0TG9naWNhbEhlaWdodChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIHsgbV9y
ZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KTsgfQotCi0gICAgdm9pZCBzZXRMb2dpY2FsSGVp
Z2h0SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQpOwotICAgIHZvaWQgc2V0TG9naWNhbFdpZHRo
KElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKSB7IG1fcmVjdC5zZXRXaWR0aChsb2dpY2Fs
V2lkdGgpOyB9Ci0KLSAgICB2b2lkIHNldFNjcm9sbGFibGVPdmVyZmxvdyhjb25zdCBEaXNwbGF5
OjpJbmxpbmVSZWN0JiByZWN0KSB7IG1fc2Nyb2xsYWJsZU92ZXJmbG93ID0gcmVjdDsgfQotCi0g
ICAgdm9pZCBtb3ZlSG9yaXpvbnRhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0
Lm1vdmVIb3Jpem9udGFsbHkoZGVsdGEpOyB9Ci0KLSAgICB2b2lkIGV4cGFuZEhvcml6b250YWxs
eShJbmxpbmVMYXlvdXRVbml0IGRlbHRhKSB7IG1fcmVjdC5leHBhbmRIb3Jpem9udGFsbHkoZGVs
dGEpOyB9Ci0gICAgdm9pZCBzaHJpbmtIb3Jpem9udGFsbHkoSW5saW5lTGF5b3V0VW5pdCBkZWx0
YSkgeyBleHBhbmRIb3Jpem9udGFsbHkoLWRlbHRhKTsgfQotCi0gICAgdm9pZCBleHBhbmRWZXJ0
aWNhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0LmV4cGFuZFZlcnRpY2FsbHko
ZGVsdGEpOyB9Ci0gICAgdm9pZCBzaHJpbmtWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgZGVs
dGEpIHsgZXhwYW5kVmVydGljYWxseSgtZGVsdGEpOyB9Ci0KLSAgICAvLyBodHRwczovL3d3dy53
My5vcmcvVFIvQ1NTMjIvdmlzdXJlbi5odG1sI2lubGluZS1mb3JtYXR0aW5nCi0gICAgLy8gTGlu
ZSBib3hlcyB0aGF0IGNvbnRhaW4gbm8gdGV4dCwgbm8gcHJlc2VydmVkIHdoaXRlIHNwYWNlLCBu
byBpbmxpbmUgZWxlbWVudHMgd2l0aCBub24temVybyBtYXJnaW5zLCBwYWRkaW5nLCBvciBib3Jk
ZXJzLAotICAgIC8vIGFuZCBubyBvdGhlciBpbi1mbG93IGNvbnRlbnQgKHN1Y2ggYXMgaW1hZ2Vz
LCBpbmxpbmUgYmxvY2tzIG9yIGlubGluZSB0YWJsZXMpLCBhbmQgZG8gbm90IGVuZCB3aXRoIGEg
cHJlc2VydmVkIG5ld2xpbmUKLSAgICAvLyBtdXN0IGJlIHRyZWF0ZWQgYXMgemVyby1oZWlnaHQg
bGluZSBib3hlcyBmb3IgdGhlIHB1cnBvc2VzIG9mIGRldGVybWluaW5nIHRoZSBwb3NpdGlvbnMg
b2YgYW55IGVsZW1lbnRzIGluc2lkZSBvZiB0aGVtLAotICAgIC8vIGFuZCBtdXN0IGJlIHRyZWF0
ZWQgYXMgbm90IGV4aXN0aW5nIGZvciBhbnkgb3RoZXIgcHVycG9zZS4KLSAgICAvLyBOb3RlIHRo
YXQgaXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB2aXN1YWxseSBub24tZW1wdHkgbGluZS4g
PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMHB4Ij50aGlzIGlzIHN0aWxsIGNvbnNpZGVyZWQgbm9u
LWVtcHR5PC9zcGFuPgotICAgIGJvb2wgaXNDb25zaWRlcmVkRW1wdHkoKSBjb25zdCB7IHJldHVy
biBtX2lzQ29uc2lkZXJlZEVtcHR5OyB9Ci0gICAgdm9pZCBzZXRJc0NvbnNpZGVyZWRFbXB0eSgp
IHsgbV9pc0NvbnNpZGVyZWRFbXB0eSA9IHRydWU7IH0KLSAgICB2b2lkIHNldElzQ29uc2lkZXJl
ZE5vbkVtcHR5KCkgeyBtX2lzQ29uc2lkZXJlZEVtcHR5ID0gZmFsc2U7IH0KLQotcHJpdmF0ZToK
LSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIGJvb2wgbV9oYXNWYWxpZEJhc2VsaW5lIHsgZmFsc2Ug
fTsKLSAgICBib29sIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCB7IGZhbHNlIH07Ci0jZW5kaWYK
LSAgICBEaXNwbGF5OjpJbmxpbmVSZWN0IG1fcmVjdDsKLSAgICBEaXNwbGF5OjpJbmxpbmVSZWN0
IG1fc2Nyb2xsYWJsZU92ZXJmbG93OwotICAgIEJhc2VsaW5lIG1fYmFzZWxpbmU7Ci0gICAgSW5s
aW5lTGF5b3V0VW5pdCBtX2Jhc2VsaW5lT2Zmc2V0IHsgMCB9OwotICAgIGJvb2wgbV9pc0NvbnNp
ZGVyZWRFbXB0eSB7IHRydWUgfTsKLX07Ci0KLWlubGluZSBMaW5lQm94QnVpbGRlcjo6TGluZUJv
eEJ1aWxkZXIoY29uc3QgRGlzcGxheTo6SW5saW5lUmVjdCYgcmVjdCwgY29uc3QgQmFzZWxpbmUm
IGJhc2VsaW5lLCBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KQotICAgIDogbV9yZWN0
KHJlY3QpCi0gICAgLCBtX2Jhc2VsaW5lKGJhc2VsaW5lKQotICAgICwgbV9iYXNlbGluZU9mZnNl
dChiYXNlbGluZU9mZnNldCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1faGFzVmFsaWRC
YXNlbGluZSA9IHRydWU7Ci0gICAgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0ID0gdHJ1ZTsKLSNl
bmRpZgotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0TG9naWNhbEhlaWdodElm
R3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpCi17Ci0gICAgaWYgKGxvZ2lj
YWxIZWlnaHQgPD0gbV9yZWN0LmhlaWdodCgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9yZWN0
LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKLX0KLQotaW5saW5lIGNvbnN0IExpbmVCb3hCdWls
ZGVyOjpCYXNlbGluZSYgTGluZUJveEJ1aWxkZXI6OmJhc2VsaW5lKCkgY29uc3QKLXsKLSAgICBB
U1NFUlQobV9oYXNWYWxpZEJhc2VsaW5lKTsKLSAgICByZXR1cm4gbV9iYXNlbGluZTsKLX0KLQot
aW5saW5lIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKElu
bGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOwotI2VuZGlmCi0gICAgbV9iYXNlbGlu
ZU9mZnNldCA9IHN0ZDo6bWF4KGJhc2VsaW5lT2Zmc2V0LCBtX2Jhc2VsaW5lT2Zmc2V0KTsKLX0K
LQotaW5saW5lIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldEFzY2VudElmR3JlYXRlcihJbmxpbmVM
YXlvdXRVbml0IGFzY2VudCkKLXsKLSAgICBpZiAoYXNjZW50IDwgbV9iYXNlbGluZS5hc2NlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKGFzY2Vu
dCk7Ci0gICAgbV9iYXNlbGluZS5zZXRBc2NlbnQoYXNjZW50KTsKLX0KLQotaW5saW5lIHZvaWQg
TGluZUJveEJ1aWxkZXI6OnNldERlc2NlbnRJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCBkZXNj
ZW50KQotewotICAgIGlmIChkZXNjZW50IDwgbV9iYXNlbGluZS5kZXNjZW50KCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBtX2Jhc2VsaW5lLnNldERlc2NlbnQoZGVzY2VudCk7Ci19Ci0KLWlubGlu
ZSBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3hCdWlsZGVyOjpiYXNlbGluZU9mZnNldCgpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUKG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCk7Ci0gICAgcmV0dXJuIG1f
YmFzZWxpbmVPZmZzZXQ7Ci19Ci0KLWlubGluZSB2b2lkIExpbmVCb3hCdWlsZGVyOjpyZXNldEJh
c2VsaW5lKCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1faGFzVmFsaWRCYXNlbGluZU9m
ZnNldCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2Jhc2VsaW5lT2Zmc2V0ID0gMF9sdTsKLSAgICBt
X2Jhc2VsaW5lLnJlc2V0KCk7Ci19Ci0KLWlubGluZSBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmU6
OkJhc2VsaW5lKElubGluZUxheW91dFVuaXQgYXNjZW50LCBJbmxpbmVMYXlvdXRVbml0IGRlc2Nl
bnQpCi0gICAgOiBtX2FzY2VudChhc2NlbnQpCi0gICAgLCBtX2Rlc2NlbnQoZGVzY2VudCkKLXsK
LSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1faGFzVmFsaWRBc2NlbnQgPSB0cnVlOwotICAgIG1f
aGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKLSNlbmRpZgotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94
QnVpbGRlcjo6QmFzZWxpbmU6OnNldEFzY2VudChJbmxpbmVMYXlvdXRVbml0IGFzY2VudCkKLXsK
LSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1faGFzVmFsaWRBc2NlbnQgPSB0cnVlOwotI2VuZGlm
Ci0gICAgbV9hc2NlbnQgPSBhc2NlbnQ7Ci19Ci0KLWlubGluZSB2b2lkIExpbmVCb3hCdWlsZGVy
OjpCYXNlbGluZTo6c2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQpCi17Ci0jaWYg
QVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7Ci0jZW5kaWYKLSAg
ICBtX2Rlc2NlbnQgPSBkZXNjZW50OwotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94QnVpbGRlcjo6
QmFzZWxpbmU6OnJlc2V0KCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1faGFzVmFsaWRB
c2NlbnQgPSB0cnVlOwotICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAg
IG1fYXNjZW50ID0gMF9sdTsKLSAgICBtX2Rlc2NlbnQgPSAwX2x1OwotfQotCi1pbmxpbmUgSW5s
aW5lTGF5b3V0VW5pdCBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmU6OmFzY2VudCgpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKG1faGFzVmFsaWRBc2NlbnQpOwotICAgIHJldHVybiBtX2FzY2VudDsKLX0K
LQotaW5saW5lIElubGluZUxheW91dFVuaXQgTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lOjpkZXNj
ZW50KCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9oYXNWYWxpZERlc2NlbnQpOwotICAgIHJldHVy
biBtX2Rlc2NlbnQ7Ci19Ci0KLX0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAK
aW5kZXggM2E2MTU3NmQ1ZTFjYzZlZjFiYjAwNTJlMDc1MDc5NzRlZTI5YTlmMi4uYjVjZDAzMmRh
NzJkNDg0M2JiZTBmNWZmZGJhNGJkMDIyYzNjOGFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNw
cApAQCAtOTEsOCArOTEsOCBAQCB2b2lkIExpbmVCdWlsZGVyOjppbml0aWFsaXplKGNvbnN0IENv
bnN0cmFpbnRzJiBjb25zdHJhaW50cykKICAgICAgICAgbV9pbml0aWFsU3RydXQgPSB7IH07CiAK
ICAgICBhdXRvIGxpbmVSZWN0ID0gRGlzcGxheTo6SW5saW5lUmVjdCB7IGNvbnN0cmFpbnRzLmxv
Z2ljYWxUb3BMZWZ0LCAwX2x1LCBpbml0aWFsTGluZUhlaWdodCB9OwotICAgIGF1dG8gYmFzZWxp
bmUgPSBMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmUgeyBpbml0aWFsQmFzZWxpbmVPZmZzZXQsIGlu
aXRpYWxMaW5lSGVpZ2h0IC0gaW5pdGlhbEJhc2VsaW5lT2Zmc2V0IH07Ci0gICAgbV9saW5lQm94
ID0gTGluZUJveEJ1aWxkZXIgeyBsaW5lUmVjdCwgYmFzZWxpbmUsIGluaXRpYWxCYXNlbGluZU9m
ZnNldCB9OworICAgIGF1dG8gYmFzZWxpbmUgPSBMaW5lQm94OjpCYXNlbGluZSB7IGluaXRpYWxC
YXNlbGluZU9mZnNldCwgaW5pdGlhbExpbmVIZWlnaHQgLSBpbml0aWFsQmFzZWxpbmVPZmZzZXQg
fTsKKyAgICBtX2xpbmVCb3ggPSBMaW5lQm94IHsgbGluZVJlY3QsIGJhc2VsaW5lLCBpbml0aWFs
QmFzZWxpbmVPZmZzZXQgfTsKICAgICBtX2xpbmVMb2dpY2FsV2lkdGggPSBjb25zdHJhaW50cy5h
dmFpbGFibGVMb2dpY2FsV2lkdGg7CiAgICAgbV9oYXNJbnRydXNpdmVGbG9hdCA9IGNvbnN0cmFp
bnRzLmxpbmVJc0NvbnN0cmFpbmVkQnlGbG9hdDsKIApAQCAtMTExLDQ1ICsxMTEsNDQgQEAgdm9p
ZCBMaW5lQnVpbGRlcjo6cmVzZXRDb250ZW50KCkKIExpbmVCdWlsZGVyOjpSdW5MaXN0IExpbmVC
dWlsZGVyOjpjbG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgaXNMYXN0TGluZVdpdGhJ
bmxpbmVDb250ZW50KQogewogICAgIC8vIDEuIFJlbW92ZSB0cmltbWFibGUgdHJhaWxpbmcgY29u
dGVudC4KLSAgICAvLyAyLiBKb2luIHRleHQgcnVucyB0b2dldGhlciB3aGVuIHBvc3NpYmxlIFtm
b29dWyBdW2Jhcl0gLT4gW2ZvbyBiYXJdLgotICAgIC8vIDMuIEFsaWduIG1lcmdlZCBydW5zIGJv
dGggdmVydGljYWxseSBhbmQgaG9yaXpvbnRhbGx5LgorICAgIC8vIDIuIEFsaWduIG1lcmdlZCBy
dW5zIGJvdGggdmVydGljYWxseSBhbmQgaG9yaXpvbnRhbGx5LgogICAgIHJlbW92ZVRyYWlsaW5n
VHJpbW1hYmxlQ29udGVudCgpOwogICAgIHZpc3VhbGx5Q29sbGFwc2VQcmVXcmFwT3ZlcmZsb3dD
b250ZW50KCk7Ci0gICAgYXV0byBoYW5naW5nQ29udGVudCA9IGNvbGxlY3RIYW5naW5nQ29udGVu
dChpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpOworICAgIGlmIChtX2lzSW50cmluc2ljU2l6
aW5nKQorICAgICAgICByZXR1cm4gV1RGTW92ZShtX3J1bnMpOwogCi0gICAgaWYgKCFtX2lzSW50
cmluc2ljU2l6aW5nKSB7Ci0gICAgICAgIHVuc2lnbmVkIGlubGluZUNvbnRhaW5lck5lc3RpbmdM
ZXZlbCA9IDA7Ci0gICAgICAgIGF1dG8gaGFzU2VlblRleHRPckxpbmVCcmVhayA9IGZhbHNlOwot
ICAgICAgICBmb3IgKGF1dG8mIHJ1biA6IG1fcnVucykgewotICAgICAgICAgICAgcnVuLnNldExv
Z2ljYWxIZWlnaHQocnVuQ29udGVudEhlaWdodChydW4pKTsKLSAgICAgICAgICAgIGlubGluZUNv
bnRhaW5lck5lc3RpbmdMZXZlbCA9IHJ1bi5pc0NvbnRhaW5lclN0YXJ0KCkgPyBpbmxpbmVDb250
YWluZXJOZXN0aW5nTGV2ZWwgKyAxIDogcnVuLmlzQ29udGFpbmVyRW5kKCkgPyBpbmxpbmVDb250
YWluZXJOZXN0aW5nTGV2ZWwgLSAxIDogaW5saW5lQ29udGFpbmVyTmVzdGluZ0xldmVsOwotICAg
ICAgICAgICAgYXV0byBydW5Jc1RleHRPckxpbmVCcmVhayA9IHJ1bi5pc1RleHQoKSB8fCBydW4u
aXNMaW5lQnJlYWsoKTsKLSAgICAgICAgICAgIGlmIChydW5Jc1RleHRPckxpbmVCcmVhaykgewot
ICAgICAgICAgICAgICAgIC8vIEZvciB0ZXh0IGNvbnRlbnQgd2Ugc2V0IHRoZSBiYXNlbGluZSBl
aXRoZXIgdGhyb3VnaCB0aGUgaW5pdGlhbCBzdHJ1dCAoc2V0IGJ5IHRoZSBmb3JtYXR0aW5nIGNv
bnRleHQgcm9vdCkgb3IKLSAgICAgICAgICAgICAgICAvLyB0aHJvdWdoIHRoZSBpbmxpbmUgY29u
dGFpbmVyIChzdGFydCkuIE5vcm1hbGx5IHRoZSB0ZXh0IGNvbnRlbnQgaXRzZWxmIGRvZXMgbm90
IHN0cmV0Y2ggdGhlIGxpbmUuCi0gICAgICAgICAgICAgICAgaWYgKGhhc1NlZW5UZXh0T3JMaW5l
QnJlYWspCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGhh
c1NlZW5UZXh0T3JMaW5lQnJlYWsgPSB0cnVlOwotICAgICAgICAgICAgICAgIGlmICghbV9pbml0
aWFsU3RydXQpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAg
IGlmIChpbmxpbmVDb250YWluZXJOZXN0aW5nTGV2ZWwpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYXV0byYgdXNlZEJhc2VsaW5lID0g
cnVuSXNUZXh0T3JMaW5lQnJlYWsgPyAqbV9pbml0aWFsU3RydXQgOiBtX2xpbmVCb3guYmFzZWxp
bmUoKTsKLSAgICAgICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChydW4sIHVzZWRC
YXNlbGluZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzVmlzdWFsbHlFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICBtX2xpbmVCb3gucmVzZXRCYXNlbGluZSgpOwotICAgICAgICAgICAgbV9saW5l
Qm94LnNldExvZ2ljYWxIZWlnaHQoeyB9KTsKLSAgICAgICAgfQotICAgICAgICAvLyBSZW1vdmUg
ZGVzY2VudCB3aGVuIGFsbCBjb250ZW50IGlzIGJhc2VsaW5lIGFsaWduZWQgYnV0IG5vbmUgb2Yg
dGhlbSBoYXZlIGRlc2NlbnQuCi0gICAgICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dCgpLnF1aXJr
cygpLmxpbmVEZXNjZW50TmVlZHNDb2xsYXBzaW5nKG1fcnVucykpIHsKLSAgICAgICAgICAgIG1f
bGluZUJveC5zaHJpbmtWZXJ0aWNhbGx5KG1fbGluZUJveC5iYXNlbGluZSgpLmRlc2NlbnQoKSk7
Ci0gICAgICAgICAgICBtX2xpbmVCb3gucmVzZXREZXNjZW50KCk7CisgICAgYXV0byBoYW5naW5n
Q29udGVudCA9IGNvbGxlY3RIYW5naW5nQ29udGVudChpc0xhc3RMaW5lV2l0aElubGluZUNvbnRl
bnQpOworICAgIHVuc2lnbmVkIGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbCA9IDA7CisgICAg
YXV0byBoYXNTZWVuVGV4dE9yTGluZUJyZWFrID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBydW4g
OiBtX3J1bnMpIHsKKyAgICAgICAgcnVuLnNldExvZ2ljYWxIZWlnaHQocnVuQ29udGVudEhlaWdo
dChydW4pKTsKKyAgICAgICAgaW5saW5lQ29udGFpbmVyTmVzdGluZ0xldmVsID0gcnVuLmlzQ29u
dGFpbmVyU3RhcnQoKSA/IGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbCArIDEgOiBydW4uaXND
b250YWluZXJFbmQoKSA/IGlubGluZUNvbnRhaW5lck5lc3RpbmdMZXZlbCAtIDEgOiBpbmxpbmVD
b250YWluZXJOZXN0aW5nTGV2ZWw7CisgICAgICAgIGF1dG8gcnVuSXNUZXh0T3JMaW5lQnJlYWsg
PSBydW4uaXNUZXh0KCkgfHwgcnVuLmlzTGluZUJyZWFrKCk7CisgICAgICAgIGlmIChydW5Jc1Rl
eHRPckxpbmVCcmVhaykgeworICAgICAgICAgICAgLy8gRm9yIHRleHQgY29udGVudCB3ZSBzZXQg
dGhlIGJhc2VsaW5lIGVpdGhlciB0aHJvdWdoIHRoZSBpbml0aWFsIHN0cnV0IChzZXQgYnkgdGhl
IGZvcm1hdHRpbmcgY29udGV4dCByb290KSBvcgorICAgICAgICAgICAgLy8gdGhyb3VnaCB0aGUg
aW5saW5lIGNvbnRhaW5lciAoc3RhcnQpLiBOb3JtYWxseSB0aGUgdGV4dCBjb250ZW50IGl0c2Vs
ZiBkb2VzIG5vdCBzdHJldGNoIHRoZSBsaW5lLgorICAgICAgICAgICAgaWYgKGhhc1NlZW5UZXh0
T3JMaW5lQnJlYWspCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBoYXNT
ZWVuVGV4dE9yTGluZUJyZWFrID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghbV9pbml0aWFsU3Ry
dXQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoaW5saW5lQ29u
dGFpbmVyTmVzdGluZ0xldmVsKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
Ci0gICAgICAgIGFsaWduQ29udGVudFZlcnRpY2FsbHkoKTsKLSAgICAgICAgYWxpZ25Ib3Jpem9u
dGFsbHkoaGFuZ2luZ0NvbnRlbnQsIGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCk7CisgICAg
ICAgIGF1dG8mIHVzZWRCYXNlbGluZSA9IHJ1bklzVGV4dE9yTGluZUJyZWFrID8gKm1faW5pdGlh
bFN0cnV0IDogbV9saW5lQm94LmJhc2VsaW5lKCk7CisgICAgICAgIGFkanVzdEJhc2VsaW5lQW5k
TGluZUhlaWdodChydW4sIG1fbGluZUJveCwgdXNlZEJhc2VsaW5lKTsKKyAgICB9CisgICAgaWYg
KGlzVmlzdWFsbHlFbXB0eSgpKSB7CisgICAgICAgIG1fbGluZUJveC5yZXNldEJhc2VsaW5lKCk7
CisgICAgICAgIG1fbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KHsgfSk7CisgICAgfQorICAgIC8v
IFJlbW92ZSBkZXNjZW50IHdoZW4gYWxsIGNvbnRlbnQgaXMgYmFzZWxpbmUgYWxpZ25lZCBidXQg
bm9uZSBvZiB0aGVtIGhhdmUgZGVzY2VudC4KKyAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHQoKS5x
dWlya3MoKS5saW5lRGVzY2VudE5lZWRzQ29sbGFwc2luZyhtX3J1bnMpKSB7CisgICAgICAgIG1f
bGluZUJveC5zaHJpbmtWZXJ0aWNhbGx5KG1fbGluZUJveC5iYXNlbGluZSgpLmRlc2NlbnQoKSk7
CisgICAgICAgIG1fbGluZUJveC5yZXNldERlc2NlbnQoKTsKICAgICB9CisgICAgYWxpZ25Db250
ZW50VmVydGljYWxseSgpOworICAgIGFsaWduSG9yaXpvbnRhbGx5KGhhbmdpbmdDb250ZW50LCBp
c0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpOwogICAgIHJldHVybiBXVEZNb3ZlKG1fcnVucyk7
CiB9CiAKQEAgLTU2OSw3ICs1NjgsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmRMaW5lQnJl
YWsoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSkKICAgICBtX3J1bnMuYXBwZW5kKHsgZG93
bmNhc3Q8SW5saW5lU29mdExpbmVCcmVha0l0ZW0+KGlubGluZUl0ZW0pLCBjb250ZW50TG9naWNh
bFdpZHRoKCkgfSk7CiB9CiAKLXZvaWQgTGluZUJ1aWxkZXI6OmFkanVzdEJhc2VsaW5lQW5kTGlu
ZUhlaWdodChjb25zdCBSdW4mIHJ1biwgY29uc3QgTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lJiB1
c2VkQmFzZWxpbmUpCit2b2lkIExpbmVCdWlsZGVyOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWln
aHQoY29uc3QgUnVuJiBydW4sIExpbmVCb3gmIC8qcGFyZW50SW5saW5lQm94Ki8sIGNvbnN0IExp
bmVCb3g6OkJhc2VsaW5lJiB1c2VkQmFzZWxpbmUpCiB7CiAgICAgaWYgKHJ1bi5pc1RleHQoKSB8
fCBydW4uaXNMaW5lQnJlYWsoKSkgewogICAgICAgICBtX2xpbmVCb3guc2V0QXNjZW50SWZHcmVh
dGVyKHVzZWRCYXNlbGluZS5hc2NlbnQoKSk7CkBAIC03MDMsNyArNzAyLDcgQEAgYm9vbCBMaW5l
QnVpbGRlcjo6aXNWaXN1YWxseU5vbkVtcHR5KGNvbnN0IFJ1biYgcnVuKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotTGluZUJveEJ1aWxkZXI6OkJhc2VsaW5lIExpbmVCdWlsZGVyOjpo
YWxmTGVhZGluZ01ldHJpY3MoY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzLCBJbmxpbmVM
YXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0KQorTGluZUJveDo6QmFzZWxpbmUgTGluZUJ1aWxk
ZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIElu
bGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpCiB7CiAgICAgYXV0byBhc2NlbnQgPSBm
b250TWV0cmljcy5hc2NlbnQoKTsKICAgICBhdXRvIGRlc2NlbnQgPSBmb250TWV0cmljcy5kZXNj
ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaAppbmRleCBiOGFjMGIxYzUxMzI5MTdmMTEwODcyYTQ4
MDA3YTllYjMxYWYzN2E5Li41ZjYzNDc5YzI0M2E5OTFmNzg5NzQ0ZWQ4MWI3M2JiMzBiN2I5OGY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkRp
c3BsYXlSdW4uaCIKICNpbmNsdWRlICJJbmxpbmVJdGVtLmgiCi0jaW5jbHVkZSAiSW5saW5lTGlu
ZUJveEJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJbmxpbmVMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5s
aW5lVGV4dEl0ZW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNyArNTAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHN0cnVjdCBIZWlnaHRBbmRCYXNlbGluZSB7CiAgICAgICAgICAgICBJ
bmxpbmVMYXlvdXRVbml0IGhlaWdodCB7IDAgfTsKICAgICAgICAgICAgIElubGluZUxheW91dFVu
aXQgYmFzZWxpbmVPZmZzZXQgeyAwIH07Ci0gICAgICAgICAgICBPcHRpb25hbDxMaW5lQm94QnVp
bGRlcjo6QmFzZWxpbmU+IHN0cnV0OworICAgICAgICAgICAgT3B0aW9uYWw8TGluZUJveDo6QmFz
ZWxpbmU+IHN0cnV0OwogICAgICAgICB9OwogICAgICAgICBPcHRpb25hbDxIZWlnaHRBbmRCYXNl
bGluZT4gaGVpZ2h0QW5kQmFzZWxpbmU7CiAgICAgfTsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGlj
OgogICAgIElubGluZUxheW91dFVuaXQgdHJpbW1hYmxlVHJhaWxpbmdXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fdHJpbW1hYmxlVHJhaWxpbmdDb250ZW50LndpZHRoKCk7IH0KICAgICBib29sIGlz
VHJhaWxpbmdSdW5GdWxseVRyaW1tYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJpbW1hYmxlVHJh
aWxpbmdDb250ZW50LmlzVHJhaWxpbmdSdW5GdWxseVRyaW1tYWJsZSgpOyB9CiAKLSAgICBjb25z
dCBMaW5lQm94QnVpbGRlciYgbGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveDsgfQor
ICAgIGNvbnN0IExpbmVCb3gmIGxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3g7IH0K
ICAgICB2b2lkIG1vdmVMb2dpY2FsTGVmdChJbmxpbmVMYXlvdXRVbml0KTsKICAgICB2b2lkIG1v
dmVMb2dpY2FsUmlnaHQoSW5saW5lTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBzZXRIYXNJbnRydXNp
dmVGbG9hdCgpIHsgbV9oYXNJbnRydXNpdmVGbG9hdCA9IHRydWU7IH0KQEAgLTE0OCw3ICsxNDgs
NyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQg
eyBObywgWWVzIH07CiAgICAgUnVuTGlzdCBjbG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRl
bnQgPSBJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQ6Ok5vKTsKIAotICAgIHN0YXRpYyBMaW5l
Qm94QnVpbGRlcjo6QmFzZWxpbmUgaGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRyaWNz
JiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdodCk7CisgICAgc3RhdGljIExpbmVC
b3g6OkJhc2VsaW5lIGhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYsIElubGlu
ZUxheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpOwogCiBwcml2YXRlOgogICAgIElubGluZUxh
eW91dFVuaXQgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveC5sb2dpY2FsVG9w
KCk7IH0KQEAgLTE4Myw3ICsxODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWxpZ25Ib3Jpem9u
dGFsbHkoY29uc3QgSGFuZ2luZ0NvbnRlbnQmLCBJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQp
OwogICAgIHZvaWQgYWxpZ25Db250ZW50VmVydGljYWxseSgpOwogCi0gICAgdm9pZCBhZGp1c3RC
YXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgUnVuJiwgY29uc3QgTGluZUJveEJ1aWxkZXI6OkJh
c2VsaW5lJik7CisgICAgdm9pZCBhZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgUnVu
JiwgTGluZUJveCYgcGFyZW50SW5saW5lQm94LCBjb25zdCBMaW5lQm94OjpCYXNlbGluZSYpOwog
ICAgIElubGluZUxheW91dFVuaXQgcnVuQ29udGVudEhlaWdodChjb25zdCBSdW4mKSBjb25zdDsK
IAogICAgIHZvaWQganVzdGlmeVJ1bnMoSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCk7
CkBAIC0yMTksMTIgKzIxOSwxMiBAQCBwcml2YXRlOgogICAgIGNvbnN0IElubGluZUZvcm1hdHRp
bmdDb250ZXh0JiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OwogICAgIFJ1bkxpc3QgbV9ydW5z
OwogICAgIFRyaW1tYWJsZVRyYWlsaW5nQ29udGVudCBtX3RyaW1tYWJsZVRyYWlsaW5nQ29udGVu
dDsKLSAgICBPcHRpb25hbDxMaW5lQm94QnVpbGRlcjo6QmFzZWxpbmU+IG1faW5pdGlhbFN0cnV0
OworICAgIE9wdGlvbmFsPExpbmVCb3g6OkJhc2VsaW5lPiBtX2luaXRpYWxTdHJ1dDsKICAgICBJ
bmxpbmVMYXlvdXRVbml0IG1fbGluZUxvZ2ljYWxXaWR0aCB7IDAgfTsKICAgICBPcHRpb25hbDxU
ZXh0QWxpZ25Nb2RlPiBtX2hvcml6b250YWxBbGlnbm1lbnQ7CiAgICAgYm9vbCBtX2lzSW50cmlu
c2ljU2l6aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzSW50cnVzaXZlRmxvYXQgeyBmYWxz
ZSB9OwotICAgIExpbmVCb3hCdWlsZGVyIG1fbGluZUJveDsKKyAgICBMaW5lQm94IG1fbGluZUJv
eDsKICAgICBPcHRpb25hbDxib29sPiBtX2xpbmVJc1Zpc3VhbGx5RW1wdHlCZWZvcmVUcmltbWFi
bGVUcmFpbGluZ0NvbnRlbnQ7CiAgICAgYm9vbCBtX3Nob3VsZElnbm9yZVRyYWlsaW5nTGV0dGVy
U3BhY2luZyB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKaW5kZXggNWVlNWQ1Zjc2
YmNlYzQyMTU1NjU5ZTZjNmQyNmUzNWI0NDQ4ODU0Zi4uMzFmZjg2YmZkMjQzM2EwMDRjZTIwNTU3
MGQyODk4NzI1NWE2ZmMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgdXNpbmcgRmxvYXRMaXN0ID0gVmVjdG9yPEZsb2F0PjsKICAgICAg
ICAgRmxvYXRMaXN0IGZsb2F0czsKICAgICAgICAgY29uc3QgTGluZUJ1aWxkZXI6OlJ1bkxpc3Qg
cnVuTGlzdDsKLSAgICAgICAgY29uc3QgTGluZUJveEJ1aWxkZXIgbGluZUJveDsKKyAgICAgICAg
Y29uc3QgTGluZUJveCBsaW5lQm94OwogICAgIH07CiAgICAgc3RydWN0IElubGluZUl0ZW1SYW5n
ZSB7CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0ID09IGVuZDsg
fQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>