<?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>222173</bug_id>
          
          <creation_ts>2021-02-19 07:55:58 -0800</creation_ts>
          <short_desc>Implement OpenXR port graphics binding</short_desc>
          <delta_ts>2021-04-19 03:22: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>WebXR</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>
          <dependson>222263</dependson>
          <blocked>208988</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Imanol Fernandez">ifernandez</reporter>
          <assigned_to name="Imanol Fernandez">ifernandez</assigned_to>
          <cc>adachan</cc>
    
    <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1731335</commentid>
    <comment_count>0</comment_count>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-19 07:55:58 -0800</bug_when>
    <thetext>Headless session is not valid for tracking or rendering, and we need a graphics binding to create a non headless XrSession.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731346</commentid>
    <comment_count>1</comment_count>
      <attachid>420972</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-19 08:33:35 -0800</bug_when>
    <thetext>Created attachment 420972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732075</commentid>
    <comment_count>2</comment_count>
      <attachid>420972</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-22 02:39:18 -0800</bug_when>
    <thetext>Comment on attachment 420972
Patch

I splitted the file refactor into a different patch: https://bugs.webkit.org/show_bug.cgi?id=222263

I&apos;ll rebase this one when 222264 is merged</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732863</commentid>
    <comment_count>3</comment_count>
      <attachid>421405</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-24 07:07:35 -0800</bug_when>
    <thetext>Created attachment 421405
Patch

Rebase onto main</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732864</commentid>
    <comment_count>4</comment_count>
      <attachid>421406</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-24 07:09:30 -0800</bug_when>
    <thetext>Created attachment 421406
Patch

Fix nit in changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733702</commentid>
    <comment_count>5</comment_count>
      <attachid>421406</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-02-26 02:12:20 -0800</bug_when>
    <thetext>Comment on attachment 421406
Patch

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

&gt; Source/WebCore/platform/xr/openxr/OpenXRExtensions.cpp:78
&gt; +        reinterpret_cast&lt;PFN_xrVoidFunction*&gt;(&amp;m_methods.xrGetOpenGLGraphicsRequirementsKHR));

Use a single line here

&gt; Source/WebCore/platform/xr/openxr/OpenXRUtils.h:30
&gt; +typedef __eglMustCastToProperFunctionPointerType (*PFNEGLGETPROCADDRESSPROC)(const char *proc);

Seems superweird having to add this.

Style wise the asterisk should go always next to the type, void *EGL -&gt; void* EGL, char *... etc

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:265
&gt; +    return features;

So this is how we avoid having to create the session too early. nice! I should have researched a bit more about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733711</commentid>
    <comment_count>6</comment_count>
      <attachid>421630</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-26 02:39:47 -0800</bug_when>
    <thetext>Created attachment 421630
Patch for landing

Address review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733715</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-26 03:53:12 -0800</bug_when>
    <thetext>Committed r273549: &lt;https://commits.webkit.org/r273549&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421630.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733716</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-26 03:54:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/74785342&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420972</attachid>
            <date>2021-02-19 08:33:35 -0800</date>
            <delta_ts>2021-02-24 07:07:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222173-20210219173333.patch</filename>
            <type>text/plain</type>
            <size>66503</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY5ODBjNDRjOWZiMDYw
M2UwMmVmNzRmNDQ5NTk1NTQ2MmNmZTFmMC4uZWFlZTExMWM2YjI0Zjg4YjdhMTA5NWRlZTU4Nzkw
ZDdjYzUwODc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIxLTAyLTE5ICBJbWFu
b2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBPcGVuWFIgcG9ydCBncmFwaGljcyBiaW5kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIxNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNocyBpbXBsZW1lbnRzIHRoZSBncmFwaGlj
cyBiaW5kaW5nIHJlcXVpcmVkIHRvIGluaXRpYWxpemUgT3BlblhSIHNlc3Npb25zCisgICAgICAg
IHdpdGggdHJhY2tpbmcgYW5kIHJlbmRlcmluZyBzdXBwb3J0LiBUaGUgY3VycmVudCBpbXBsZW1l
bnRhdGlvbiB3YXMgdXNpbmcgYSBoZWFkbGVzcworICAgICAgICBPcGVuWFIgc2Vzc2lvbiB3aGlj
aCBpcyBub3QgdmFsaWQgZm9yIHRyYWNraW5nLgorCisgICAgICAgIFRoZSBoZWFkbGVzcyBzZXNz
aW9uIHdhcyB1c2VkIHRvIGF2b2lkIGFsbG9jYXRpbmcgdGhlIGdyYXBoaWNzIHJlc291cmNlcyBk
dXJpbmcgV2ViWFIKKyAgICAgICAgZGV2aWNlIGVudW1lcmF0aW9uLiBUaGUgcHJvYmxlbSBpcyB0
aGF0IGl0IGNhbid0IGJlICBjb252ZXJ0ZWQgbGF0ZXIgdG8gYSB2YWxpZCBYclNlc3Npb24KKyAg
ICAgICAgd2l0aCB0cmFja2luZyB3aXRob3V0IHJlY3JlYXRpbmcgdGhlIGdsb2JhbCBYckluc3Rh
bmNlLiBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBuZXcgYXBwcm9hY2gKKyAgICAgICAgdG8ga2Vl
cCB0aGUgZGVsYXllZCBncmFwaGljcyBpbml0aWFsaXphdGlvbiB3aXRob3V0IHVzaW5nIHRoZSBo
ZWFkbGVzcyBzZXNzaW9uLgorCisgICAgICAgIEFkZGl0aW9uYWx5IHRoZSBPcGVuWFIgZXh0ZW5z
aW9ucyBhbmQgT3BlblhSIGluc3RhbmNlIGluaXRpYWxpemF0aW9uIGNvZGUgaGF2ZSBiZWVuIHJl
ZmFjdG9yZWQKKyAgICAgICAgdG8gZGlmZmVyZW50IGNsYXNzZXMgYW5kIGZpbGVzLgorCisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29u
dGV4dEVHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRv
d0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVQYnVmZmVy
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVN1cmZhY2Vs
ZXNzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OkdMQ29udGV4dEVH
TCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xMaWJXUEUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0wpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVXUEVDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRFR0w6OmNyZWF0ZVdheWxhbmRDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVH
TDo6R0xDb250ZXh0RUdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
UGl4bWFwQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkV4dGVu
c2lvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkV4dGVuc2lvbnM6
OmNyZWF0ZSk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJFeHRlbnNpb25zOjpPcGVuWFJF
eHRlbnNpb25zKToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkV4dGVuc2lvbnM6OmxvYWRN
ZXRob2RzKToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkV4dGVuc2lvbnM6OmlzRXh0ZW5z
aW9uU3VwcG9ydGVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvT3BlblhS
RXh0ZW5zaW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvT3BlblhS
SW5zdGFuY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBs
Ojp4ckluc3RhbmNlIGNvbnN0KToKKyAgICAgICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBs
OjpxdWV1ZSBjb25zdCk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6SW1wbDo6ZXh0
ZW5zaW9ucyk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6SW1wbDo6SW1wbCk6Cisg
ICAgICAgIChQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6SW1wbDo6fkltcGwpOgorICAgICAgICAoUGxh
dGZvcm1YUjo6SW5zdGFuY2U6OnNpbmdsZXRvbik6CisgICAgICAgIChQbGF0Zm9ybVhSOjpJbnN0
YW5jZTo6SW5zdGFuY2UpOgorICAgICAgICAoUGxhdGZvcm1YUjo6SW5zdGFuY2U6OmVudW1lcmF0
ZUltbWVyc2l2ZVhSRGV2aWNlcyk6CisgICAgICAgICogcGxhdGZvcm0veHIvb3BlbnhyL09wZW5Y
UlV0aWxzLmg6IEFkZGVkLgorICAgICAgICAoUGxhdGZvcm1YUjo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKFBsYXRmb3JtWFI6OnJlc3VsdFRvU3RyaW5nKToKKyAgICAgICAgKFBsYXRmb3Jt
WFI6OlhyUG9zZWZUb1Bvc2UpOgorICAgICAgICAoUGxhdGZvcm1YUjo6eHJWaWV3VG9Qb3NlKToK
KyAgICAgICAgKFBsYXRmb3JtWFI6OnRvWHJWaWV3Q29uZmlndXJhdGlvblR5cGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcDoKKyAgICAgICAgKFBs
YXRmb3JtWFI6OmlzU2Vzc2lvbkFjdGl2ZSk6CisgICAgICAgIChQbGF0Zm9ybVhSOjppc1Nlc3Np
b25SZWFkeSk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6Ok9wZW5YUkRldmlj
ZSk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1
dGlvbik6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVUcmFj
a2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnNo
dXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcpOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhS
RGV2aWNlOjppbml0aWFsaXplUmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAoUGxhdGZvcm1YUjo6
T3BlblhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhS
RGV2aWNlOjp2aWV3cyBjb25zdCk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6
OmNvbGxlY3RFbmFibGVkRmVhdHVyZXMpOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2
aWNlOjpjb2xsZWN0U3VwcG9ydGVkU2Vzc2lvbk1vZGVzKToKKyAgICAgICAgKFBsYXRmb3JtWFI6
Ok9wZW5YUkRldmljZTo6Y3JlYXRlUmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAoUGxhdGZvcm1Y
Ujo6T3BlblhSRGV2aWNlOjpyZXNldFNlc3Npb24pOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3Bl
blhSRGV2aWNlOjpoYW5kbGVTZXNzaW9uU3RhdGVDaGFuZ2UpOgorICAgICAgICAoUGxhdGZvcm1Y
Ujo6T3BlblhSRGV2aWNlOjp3YWl0VW50aWxTdG9wcGluZyk6CisgICAgICAgICogcGxhdGZvcm0v
eHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaDoKKwogMjAyMS0wMi0xOSAgSmlld2VuIFRhbiAg
PGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogUmVxdWVzdCBzZXJ2ZXIgcHVi
bGljIGtleSB0byBnZW5lcmF0ZSBzZWNyZXQgdG9rZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYzM1YzA2
ZjAzMDY3ZjFkYzAyYjU0NTY5NzUzYTQ5NzUwN2E5ZDUyZS4uZTk5N2YwYWUyNzM0NTFkN2NlOTE2
Yjc0MmRlMDQ0YzlhODcxZGJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIxNjQsNiArMjE2NCw4IEBA
IHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCiBwbGF0Zm9ybS90ZXh0L1Rl
eHRFbmNvZGluZy5jcHAKIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3Bw
CiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAorcGxhdGZvcm0veHIvb3Bl
bnhyL09wZW5YUkluc3RhbmNlLmNwcCBAbm8tdW5pZnkKK3BsYXRmb3JtL3hyL29wZW54ci9PcGVu
WFJFeHRlbnNpb25zLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmNwcCBAbm8tdW5pZnkKIHBsdWdpbnMvRE9NTWltZVR5cGUuY3BwCiBwbHVnaW5zL0RP
TU1pbWVUeXBlQXJyYXkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCmluZGV4IDZmYjY2MmNiZmExM2YzMDMwNTYxZWVl
MWQzYTE2ZThlMzFmMzVmMDguLjZmOTM5OTdiNThhMmM5YmMzNjZlNjBjYWJkZjA3MWQxY2E5MGY4
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9H
TENvbnRleHRFR0wuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29u
dGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEdMTmF0aXZlV2luZG93
VHkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBj
b250ZXh0LCBzdXJmYWNlLCBXaW5kb3dTdXJmYWNlKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250
ZXh0LCBzdXJmYWNlLCBjb25maWcsIFdpbmRvd1N1cmZhY2UpKTsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQYnVmZmVyQ29udGV4dChQbGF0
Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkK
QEAgLTIzMCw3ICsyMzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRl
eHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0KFBsYXRmb3JtRGlzcGxheQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2Us
IFBidWZmZXJTdXJmYWNlKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRF
R0w+KG5ldyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBj
b25maWcsIFBidWZmZXJTdXJmYWNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRF
R0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlU3VyZmFjZWxlc3NDb250ZXh0KFBsYXRmb3JtRGlzcGxh
eSYgcGxhdGZvcm1EaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQpAQCAtMjU5LDcg
KzI1OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3Jl
YXRlU3VyZmFjZWxlc3NDb250ZXh0KFBsYXRmb3JtRGlzCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcg
R0xDb250ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgRUdMX05PX1NVUkZBQ0UsIFN1
cmZhY2VsZXNzKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5l
dyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSwg
Y29uZmlnLCBTdXJmYWNlbGVzcykpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdM
PiBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQoR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywg
UGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXkpCkBAIC0zNTMsMTAgKzM1MywxMSBAQCBz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVNoYXJpbmdD
b250ZXh0KFBsYXRmb3JtRGlzcGxheQogICAgIHJldHVybiBjb250ZXh0OwogfQogCi1HTENvbnRl
eHRFR0w6OkdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQg
Y29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSB0eXBlKQorR0xDb250
ZXh0RUdMOjpHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xDb250ZXh0
IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMU3VyZmFj
ZVR5cGUgdHlwZSkKICAgICA6IEdMQ29udGV4dChkaXNwbGF5KQogICAgICwgbV9jb250ZXh0KGNv
bnRleHQpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKKyAgICAsIG1fY29uZmlnKGNvbmZpZykK
ICAgICAsIG1fdHlwZSh0eXBlKQogewogICAgIEFTU0VSVCh0eXBlICE9IFBpeG1hcFN1cmZhY2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29u
dGV4dEVHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4
dEVHTC5oCmluZGV4IDkxYmRkNGQ3MjFhNmVmYTljYjFlMWNiMDExNDBiYzViMjRiYWE0NGUuLmZj
NGViYTkxZjViNTE4OThjMTA5NjcyZGMxYjlhMmI3NjQ3YjA2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKQEAgLTUyLDYg
KzUyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBlcnJvclN0cmluZyhpbnQg
c3RhdHVzQ29kZSk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGxhc3RFcnJvclN0cmluZygpOwog
CisgICAgRUdMQ29uZmlnIGNvbmZpZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlnOyB9CisKICAg
ICB2aXJ0dWFsIH5HTENvbnRleHRFR0woKTsKIAogcHJpdmF0ZToKQEAgLTcxLDE2ICs3MywxNiBA
QCBwcml2YXRlOgogCiAgICAgZW51bSBFR0xTdXJmYWNlVHlwZSB7IFBidWZmZXJTdXJmYWNlLCBX
aW5kb3dTdXJmYWNlLCBQaXhtYXBTdXJmYWNlLCBTdXJmYWNlbGVzcyB9OwogCi0gICAgR0xDb250
ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTFN1cmZh
Y2VUeXBlKTsKKyAgICBHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwg
RUdMU3VyZmFjZSwgRUdMQ29uZmlnLCBFR0xTdXJmYWNlVHlwZSk7CiAjaWYgUExBVEZPUk0oWDEx
KQotICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0LCBFR0xTdXJm
YWNlLCBYVW5pcXVlUGl4bWFwJiYpOworICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkm
LCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBFR0xDb25maWcsIFhVbmlxdWVQaXhtYXAmJik7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShXQVlMQU5EKQotICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURp
c3BsYXkmLCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3Vy
ZmFjZT4mJiwgc3RydWN0IHdsX2VnbF93aW5kb3cqKTsKKyAgICBHTENvbnRleHRFR0woUGxhdGZv
cm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgRUdMQ29uZmlnLCBXbFVuaXF1ZVB0
cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4mJiwgc3RydWN0IHdsX2VnbF93aW5kb3cqKTsKICAgICB2b2lk
IGRlc3Ryb3lXYXlsYW5kV2luZG93KCk7CiAjZW5kaWYKICNpZiBVU0UoV1BFX1JFTkRFUkVSKQot
ICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0LCBFR0xTdXJmYWNl
LCBzdHJ1Y3Qgd3BlX3JlbmRlcmVyX2JhY2tlbmRfZWdsX29mZnNjcmVlbl90YXJnZXQqKTsKKyAg
ICBHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwg
RUdMQ29uZmlnLCBzdHJ1Y3Qgd3BlX3JlbmRlcmVyX2JhY2tlbmRfZWdsX29mZnNjcmVlbl90YXJn
ZXQqKTsKICAgICB2b2lkIGRlc3Ryb3lXUEVUYXJnZXQoKTsKICNlbmRpZgogCkBAIC0xMDQsNiAr
MTA2LDcgQEAgcHJpdmF0ZToKIAogICAgIEVHTENvbnRleHQgbV9jb250ZXh0IHsgbnVsbHB0ciB9
OwogICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlIHsgbnVsbHB0ciB9OworICAgIEVHTENvbmZpZyBt
X2NvbmZpZyB7IG51bGxwdHIgfTsKICAgICBFR0xTdXJmYWNlVHlwZSBtX3R5cGU7CiAjaWYgUExB
VEZPUk0oWDExKQogICAgIFhVbmlxdWVQaXhtYXAgbV9waXhtYXA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMTGliV1BFLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xMaWJXUEUu
Y3BwCmluZGV4IDQwOGRmM2IzOThkNWM0OGMxYjc2Mjk2NTU0OWJhMTZjOTg3YTIwMGUuLjY4MjNi
MDVlNGE1NzE3NTc4ZWY0MmMzZmM3NGEyYjQ0MjQ1YWE0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xMaWJXUEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xMaWJXUEUu
Y3BwCkBAIC00MCwxMCArNDAsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1HTENvbnRl
eHRFR0w6OkdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQg
Y29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBzdHJ1Y3Qgd3BlX3JlbmRlcmVyX2JhY2tlbmRf
ZWdsX29mZnNjcmVlbl90YXJnZXQqIHRhcmdldCkKK0dMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdM
KFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNl
IHN1cmZhY2UsIEVHTENvbmZpZyBjb25maWcsIHN0cnVjdCB3cGVfcmVuZGVyZXJfYmFja2VuZF9l
Z2xfb2Zmc2NyZWVuX3RhcmdldCogdGFyZ2V0KQogICAgIDogR0xDb250ZXh0KGRpc3BsYXkpCiAg
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQorICAgICwg
bV9jb25maWcoY29uZmlnKQogICAgICwgbV90eXBlKFdpbmRvd1N1cmZhY2UpCiAgICAgLCBtX3dw
ZVRhcmdldCh0YXJnZXQpCiB7CkBAIC04OSw3ICs5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlV1BFQ29udGV4dChQbGF0Zm9ybURpc3BsYXkm
IHBsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwg
Y29udGV4dCwgc3VyZmFjZSwgdGFyZ2V0KSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxH
TENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0LCBz
dXJmYWNlLCBjb25maWcsIHRhcmdldCkpOwogfQogCiB2b2lkIEdMQ29udGV4dEVHTDo6ZGVzdHJv
eVdQRVRhcmdldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHAKaW5kZXggY2VhYjkyZDkyNmFlOTM2
YThhYWQ4OWJlODYwMGY2MmEzYWJiOGU2OS4uZmE2YjZhYjliYzZkZGJlOTJjMDE2OWI2NDg2YjVl
NTk1Yjk5NDExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5kLmNwcApAQCAtMjksMTAgKzI5LDExIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woUGxh
dGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3Vy
ZmFjZSwgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+JiYgd2xTdXJmYWNlLCBzdHJ1Y3Qg
d2xfZWdsX3dpbmRvdyogd2xXaW5kb3cpCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0
Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJm
YWNlLCBFR0xDb25maWcgY29uZmlnLCBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4mJiB3
bFN1cmZhY2UsIHN0cnVjdCB3bF9lZ2xfd2luZG93KiB3bFdpbmRvdykKICAgICA6IEdMQ29udGV4
dChkaXNwbGF5KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3N1cmZhY2Uoc3Vy
ZmFjZSkKKyAgICAsIG1fY29uZmlnKGNvbmZpZykKICAgICAsIG1fdHlwZShXaW5kb3dTdXJmYWNl
KQogICAgICwgbV93bFN1cmZhY2UoV1RGTW92ZSh3bFN1cmZhY2UpKQogICAgICwgbV93bFdpbmRv
dyh3bFdpbmRvdykKQEAgLTY5LDcgKzcwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVH
TD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXYXlsYW5kQ29udGV4dChQbGF0Zm9ybURpc3BsYXkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0
LCBzdXJmYWNlLCBXVEZNb3ZlKHdsU3VyZmFjZSksIHdpbmRvdykpOworICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRmb3JtRGlzcGxh
eSwgY29udGV4dCwgc3VyZmFjZSwgY29uZmlnLCBXVEZNb3ZlKHdsU3VyZmFjZSksIHdpbmRvdykp
OwogfQogCiB2b2lkIEdMQ29udGV4dEVHTDo6ZGVzdHJveVdheWxhbmRXaW5kb3coKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgx
MS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
WDExLmNwcAppbmRleCA2N2E4ZTBiNTk2MTFjNTVlNDMzNmYyYjEzMjQ4ZjIwMzg3MzExOGE1Li44
ZjczMjM5OTg4ZTg2OWNiOGZjODNjZjlkMzRjZjY1N2FiN2IxYWI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNw
cApAQCAtMjgsMTAgKzI4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotR0xDb250ZXh0
RUdMOjpHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xDb250ZXh0IGNv
bnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmIHBpeG1hcCkKK0dMQ29u
dGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgRUdMQ29udGV4
dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTENvbmZpZyBjb25maWcsIFhVbmlxdWVQ
aXhtYXAmJiBwaXhtYXApCiAgICAgOiBHTENvbnRleHQoZGlzcGxheSkKICAgICAsIG1fY29udGV4
dChjb250ZXh0KQogICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCisgICAgLCBtX2NvbmZpZyhjb25m
aWcpCiAgICAgLCBtX3R5cGUoUGl4bWFwU3VyZmFjZSkKICAgICAsIG1fcGl4bWFwKFdURk1vdmUo
cGl4bWFwKSkKIHsKQEAgLTkwLDcgKzkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVH
TD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0
LCBzdXJmYWNlLCBXVEZNb3ZlKHBpeG1hcCkpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQs
IHN1cmZhY2UsIGNvbmZpZywgV1RGTW92ZShwaXhtYXApKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9P
cGVuWFJFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9P
cGVuWFJFeHRlbnNpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmRiMTUzYzY1MzZmYmNlNzYxN2EwNDIw
NDgzM2I1MWIzMGMzMDdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL09wZW5YUkV4dGVuc2lvbnMuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhLCBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk9wZW5YUkV4dGVuc2lvbnMuaCIKKworI2lmIEVOQUJMRShXRUJYUikgJiYgVVNFKE9Q
RU5YUikKKworLy8gUmVxdWlyZWQgaW5jbHVkZXMgdG8gcXVlcnkgZWdsR2V0UHJvY0FkZHJlc3Mg
ZnVuY3Rpb24gYWRkcmVzcy4KKyNpZiBVU0UoRUdMKQorCisjaWYgVVNFKExJQkVQT1hZKQorI2Rl
ZmluZSBfX0dCTV9fIDEKKyNpbmNsdWRlICJFcG94eUVHTC5oIgorI2Vsc2UKKyNpZiBQTEFURk9S
TShXQVlMQU5EKQorI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxF
R0wvZWdsLmg+CisjZW5kaWYKKworI2VuZGlmIC8vIFVTRShFR0wpCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgUGxhdGZvcm1YUiB7CisKK3N0ZDo6dW5pcXVlX3B0cjxP
cGVuWFJFeHRlbnNpb25zPiBPcGVuWFJFeHRlbnNpb25zOjpjcmVhdGUoKQoreworICAgIHVpbnQz
Ml90IGV4dGVuc2lvbkNvdW50IHsgMCB9OworICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyRW51bWVy
YXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzKG51bGxwdHIsIDAsICZleHRlbnNpb25Db3Vu
dCwgbnVsbHB0cik7CisKKyAgICBpZiAoWFJfRkFJTEVEKHJlc3VsdCkgfHwgIWV4dGVuc2lvbkNv
dW50KSB7CisgICAgICAgIExPRyhYUiwgInhyRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9w
ZXJ0aWVzKCk6IG5vIGV4dGVuc2lvbnNcbiIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBWZWN0b3I8WHJFeHRlbnNpb25Qcm9wZXJ0aWVzPiBleHRlbnNpb25zKGV4dGVu
c2lvbkNvdW50LCBbXSB7CisgICAgICAgIHJldHVybiBjcmVhdGVTdHJ1Y3R1cmU8WHJFeHRlbnNp
b25Qcm9wZXJ0aWVzLCBYUl9UWVBFX0VYVEVOU0lPTl9QUk9QRVJUSUVTPigpOworICAgIH0oKSk7
CisKKyAgICByZXN1bHQgPSB4ckVudW1lcmF0ZUluc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcyhu
dWxscHRyLCBleHRlbnNpb25Db3VudCwgJmV4dGVuc2lvbkNvdW50LCBleHRlbnNpb25zLmRhdGEo
KSk7CisgICAgaWYgKFhSX0ZBSUxFRChyZXN1bHQpKSB7CisgICAgICAgIExPRyhYUiwgInhyRW51
bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzKCkgZmFpbGVkOiAlZFxuIiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8T3BlblhSRXh0ZW5zaW9ucz4oV1RGTW92ZShleHRlbnNpb25zKSk7Cit9CisKK09wZW5YUkV4
dGVuc2lvbnM6Ok9wZW5YUkV4dGVuc2lvbnMoVmVjdG9yPFhyRXh0ZW5zaW9uUHJvcGVydGllcz4m
JiBleHRlbnNpb25zKQorICAgIDogbV9leHRlbnNpb25zKFdURk1vdmUoZXh0ZW5zaW9ucykpCit7
Cit9CisKK3ZvaWQgT3BlblhSRXh0ZW5zaW9uczo6bG9hZE1ldGhvZHMoWHJJbnN0YW5jZSBpbnN0
YW5jZSkKK3sKKyNpZiBVU0UoRUdMKQorICAgIG1fbWV0aG9kcy5nZXRQcm9jQWRkcmVzc0Z1bmMg
PSBlZ2xHZXRQcm9jQWRkcmVzczsKKyNlbmRpZgorICAgIHhyR2V0SW5zdGFuY2VQcm9jQWRkcihp
bnN0YW5jZSwgInhyR2V0T3BlbkdMR3JhcGhpY3NSZXF1aXJlbWVudHNLSFIiLAorICAgICAgICBy
ZWludGVycHJldF9jYXN0PFBGTl94clZvaWRGdW5jdGlvbio+KCZtX21ldGhvZHMueHJHZXRPcGVu
R0xHcmFwaGljc1JlcXVpcmVtZW50c0tIUikpOworfQorCitib29sIE9wZW5YUkV4dGVuc2lvbnM6
OmlzRXh0ZW5zaW9uU3VwcG9ydGVkKGNvbnN0IGNoYXIqIG5hbWUpIGNvbnN0Cit7CisgICAgYXV0
byBwb3NpdGlvbiA9IG1fZXh0ZW5zaW9ucy5maW5kTWF0Y2hpbmcoW25hbWVdKGF1dG8mIHByb3Bl
cnR5KSB7CisgICAgICAgIHJldHVybiAhc3RyY21wKHByb3BlcnR5LmV4dGVuc2lvbk5hbWUsIG5h
bWUpOworICAgIH0pOworICAgIHJldHVybiBwb3NpdGlvbiAhPSBub3RGb3VuZDsKK30KKworfSAv
LyBuYW1lc3BhY2UgUGxhdGZvcm1YUgorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKSAmJiBVU0Uo
T1BFTlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUkV4dGVuc2lvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVu
WFJFeHRlbnNpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJmNWFlNjM4OTAwZTcwNDUyYzZhNDkyOTkyNjhi
ZmYwMDY1NzYyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L29wZW54ci9PcGVuWFJFeHRlbnNpb25zLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBJZ2FsaWEsIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJY
UikgJiYgVVNFKE9QRU5YUikKKworI2luY2x1ZGUgIk9wZW5YUlV0aWxzLmgiCisKKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBQbGF0Zm9ybVhSIHsKKworc3RydWN0IE9wZW5YUkV4dGVuc2lvbk1ldGhvZHMgeworICAgIFBG
TkVHTEdFVFBST0NBRERSRVNTUFJPQyBnZXRQcm9jQWRkcmVzc0Z1bmMgeyBudWxscHRyIH07Cisg
ICAgUEZOX3hyR2V0T3BlbkdMR3JhcGhpY3NSZXF1aXJlbWVudHNLSFIgeHJHZXRPcGVuR0xHcmFw
aGljc1JlcXVpcmVtZW50c0tIUiB7IG51bGxwdHIgfTsKK307CisKK2NsYXNzIE9wZW5YUkV4dGVu
c2lvbnMgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKE9wZW5YUkV4dGVuc2lvbnMpOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8T3BlblhSRXh0ZW5zaW9ucz4gY3JlYXRlKCk7CisgICAgT3BlblhSRXh0ZW5z
aW9ucyhWZWN0b3I8WHJFeHRlbnNpb25Qcm9wZXJ0aWVzPiYmKTsKKworICAgIHZvaWQgbG9hZE1l
dGhvZHMoWHJJbnN0YW5jZSk7CisgICAgYm9vbCBpc0V4dGVuc2lvblN1cHBvcnRlZChjb25zdCBj
aGFyKikgY29uc3Q7CisgICAgY29uc3QgT3BlblhSRXh0ZW5zaW9uTWV0aG9kcyYgbWV0aG9kcygp
IGNvbnN0IHsgcmV0dXJuIG1fbWV0aG9kczsgfQorCitwcml2YXRlOgorCisgICAgVmVjdG9yPFhy
RXh0ZW5zaW9uUHJvcGVydGllcz4gbV9leHRlbnNpb25zOworICAgIE9wZW5YUkV4dGVuc2lvbk1l
dGhvZHMgbV9tZXRob2RzOworfTsKKworfSAvLyBuYW1lc3BhY2UgUGxhdGZvcm1YUgorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQlhSKSAmJiBVU0UoT1BFTlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkluc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnN0YW5jZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ4
NTA3M2I2MGQ2OTJkN2RjYWE1ZjcwMjE5MDNiMmUyZDg4OTNjZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnN0YW5jZS5jcHAKQEAg
LTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhLCBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQlhSKSAmJiBVU0UoT1BFTlhSKQorCisj
aW5jbHVkZSAiT3BlblhSRXh0ZW5zaW9ucy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJPcGVuWFIu
aCIKKworI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFBsYXRmb3JtWFIgeworCitzdHJ1Y3QgSW5zdGFuY2U6OkltcGwgeworICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgIEltcGwoKTsKKyAgICB+SW1w
bCgpOworCisgICAgWHJJbnN0YW5jZSB4ckluc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0
YW5jZTsgfQorICAgIFdvcmtRdWV1ZSYgcXVldWUoKSBjb25zdCB7IHJldHVybiBtX3dvcmtRdWV1
ZTsgfQorICAgIE9wZW5YUkV4dGVuc2lvbnMqIGV4dGVuc2lvbnMoKSB7IHJldHVybiBtX2V4dGVu
c2lvbnMuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBYckluc3RhbmNlIG1faW5zdGFuY2UgeyBY
Ul9OVUxMX0hBTkRMRSB9OworICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxPcGVuWFJFeHRlbnNpb25zPiBtX2V4dGVuc2lvbnM7Cit9OworCitJbnN0
YW5jZTo6SW1wbDo6SW1wbCgpCisgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgi
T3BlblhSIHF1ZXVlIikpCit7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzXSgpIHsK
KyAgICAgICAgTE9HKFhSLCAiT3BlblhSOiBpbml0aWFsaXppbmdcbiIpOworCisgICAgICAgIG1f
ZXh0ZW5zaW9ucyA9IE9wZW5YUkV4dGVuc2lvbnM6OmNyZWF0ZSgpOworICAgICAgICBpZiAoIW1f
ZXh0ZW5zaW9ucykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogc19hcHBsaWNhdGlvbk5hbWUgPSAiV2ViWFIgKFdlYktpdCkiOworICAgICAgICBzdGF0
aWMgY29uc3QgdWludDMyX3Qgc19hcHBsaWNhdGlvblZlcnNpb24gPSAxOworCisgICAgICAgIGNv
bnN0IGNoYXIqIGNvbnN0IGVuYWJsZWRFeHRlbnNpb25zW10gPSB7CisgICAgICAgICAgICBYUl9L
SFJfT1BFTkdMX0VOQUJMRV9FWFRFTlNJT05fTkFNRSwKKyAgICAgICAgICAgIFhSX01ORFhfRUdM
X0VOQUJMRV9FWFRFTlNJT05fTkFNRQorICAgICAgICB9OworCisgICAgICAgIGF1dG8gY3JlYXRl
SW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYckluc3RhbmNlQ3JlYXRlSW5mbywgWFJfVFlQRV9JTlNU
QU5DRV9DUkVBVEVfSU5GTz4oKTsKKyAgICAgICAgY3JlYXRlSW5mby5jcmVhdGVGbGFncyA9IDA7
CisgICAgICAgIHN0ZDo6bWVtY3B5KGNyZWF0ZUluZm8uYXBwbGljYXRpb25JbmZvLmFwcGxpY2F0
aW9uTmFtZSwgc19hcHBsaWNhdGlvbk5hbWUsIFhSX01BWF9BUFBMSUNBVElPTl9OQU1FX1NJWkUp
OworICAgICAgICBjcmVhdGVJbmZvLmFwcGxpY2F0aW9uSW5mby5hcGlWZXJzaW9uID0gWFJfQ1VS
UkVOVF9BUElfVkVSU0lPTjsKKyAgICAgICAgY3JlYXRlSW5mby5hcHBsaWNhdGlvbkluZm8uYXBw
bGljYXRpb25WZXJzaW9uID0gc19hcHBsaWNhdGlvblZlcnNpb247CisgICAgICAgIGNyZWF0ZUlu
Zm8uZW5hYmxlZEFwaUxheWVyQ291bnQgPSAwOworICAgICAgICBjcmVhdGVJbmZvLmVuYWJsZWRF
eHRlbnNpb25Db3VudCA9IFdURl9BUlJBWV9MRU5HVEgoZW5hYmxlZEV4dGVuc2lvbnMpOworICAg
ICAgICBjcmVhdGVJbmZvLmVuYWJsZWRFeHRlbnNpb25OYW1lcyA9IGVuYWJsZWRFeHRlbnNpb25z
OworCisgICAgICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyQ3JlYXRlSW5zdGFuY2UoJmNyZWF0ZUlu
Zm8sICZtX2luc3RhbmNlKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckNy
ZWF0ZUluc3RhbmNlKCkiLCBtX2luc3RhbmNlKTsKKyAgICAgICAgaWYgKG1faW5zdGFuY2UgPT0g
WFJfTlVMTF9IQU5ETEUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9leHRlbnNp
b25zLT5sb2FkTWV0aG9kcyhtX2luc3RhbmNlKTsKKworICAgICAgICBMT0coWFIsICJ4ckNyZWF0
ZUluc3RhbmNlKCk6IHVzaW5nIGluc3RhbmNlICVwXG4iLCBtX2luc3RhbmNlKTsKKyAgICB9KTsK
K30KKworSW5zdGFuY2U6OkltcGw6On5JbXBsKCkKK3sKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0
Y2goW3RoaXNdIHsKKyAgICAgICAgaWYgKG1faW5zdGFuY2UgIT0gWFJfTlVMTF9IQU5ETEUpCisg
ICAgICAgICAgICB4ckRlc3Ryb3lJbnN0YW5jZShtX2luc3RhbmNlKTsKKyAgICB9KTsKK30KKwor
SW5zdGFuY2UmIEluc3RhbmNlOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8SW5zdGFuY2U+IHNfaW5zdGFuY2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IHNfb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uoc19vbmNlRmxhZywKKyAgICAgICAgWyZd
IHsKKyAgICAgICAgICAgIHNfaW5zdGFuY2UuY29uc3RydWN0KCk7CisgICAgICAgIH0pOworICAg
IHJldHVybiBzX2luc3RhbmNlLmdldCgpOworfQorCitJbnN0YW5jZTo6SW5zdGFuY2UoKQorICAg
IDogbV9pbXBsKG1ha2VVbmlxdWVSZWY8SW1wbD4oKSkKK3sKK30KKwordm9pZCBJbnN0YW5jZTo6
ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
RGV2aWNlTGlzdCYgZGV2aWNlcyk+JiYgY2FsbGJhY2spCit7CisgICAgbV9pbXBsLT5xdWV1ZSgp
LmRpc3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUg
eworICAgICAgICBhdXRvIGNhbGxiYWNrT25FeGl0ID0gbWFrZVNjb3BlRXhpdChbJl0oKSB7Cisg
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKG1faW1wbC0+eHJJbnN0YW5jZSgpID09
IFhSX05VTExfSEFORExFIHx8ICFtX2ltcGwtPmV4dGVuc2lvbnMoKSkgeworICAgICAgICAgICAg
TE9HKFhSLCAiJXMgVW5hYmxlIHRvIGVudW1lcmF0ZSBYUiBkZXZpY2VzLiBObyBYckluc3RhbmNl
IHByZXNlbnRcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBhdXRvIHN5c3RlbUdldEluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTeXN0
ZW1HZXRJbmZvLCBYUl9UWVBFX1NZU1RFTV9HRVRfSU5GTz4oKTsKKyAgICAgICAgc3lzdGVtR2V0
SW5mby5mb3JtRmFjdG9yID0gWFJfRk9STV9GQUNUT1JfSEVBRF9NT1VOVEVEX0RJU1BMQVk7CisK
KyAgICAgICAgWHJTeXN0ZW1JZCBzeXN0ZW1JZDsKKyAgICAgICAgWHJSZXN1bHQgcmVzdWx0ID0g
eHJHZXRTeXN0ZW0obV9pbXBsLT54ckluc3RhbmNlKCksICZzeXN0ZW1HZXRJbmZvLCAmc3lzdGVt
SWQpOworICAgICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyR2V0U3lzdGVtIiwgbV9p
bXBsLT54ckluc3RhbmNlKCkpOworCisgICAgICAgIGNhbGxiYWNrT25FeGl0LnJlbGVhc2UoKTsK
KworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBzeXN0ZW1JZF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1faW1tZXJzaXZlWFJE
ZXZpY2VzID0gRGV2aWNlTGlzdDo6ZnJvbShtYWtlVW5pcXVlUmVmPE9wZW5YUkRldmljZT4obV9p
bXBsLT54ckluc3RhbmNlKCksIHN5c3RlbUlkLCBtX2ltcGwtPnF1ZXVlKCksICptX2ltcGwtPmV4
dGVuc2lvbnMoKSwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgICAg
ICAgICBjYWxsYmFjayhtX2ltbWVyc2l2ZVhSRGV2aWNlcyk7CisgICAgICAgICAgICB9KSk7Cisg
ICAgICAgIH0pOworICAgIH0pOworfQorCisKK30gLy8gbmFtZXNwYWNlIFBsYXRmb3JtWFIKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJYUikgJiYgVVNFKE9QRU5YUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJVdGlscy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTc4OGVlMzk0
YjhmYWRjYmZjZGE4ZGEzNThlYTE5MDgyZWQ5N2IyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJVdGlscy5oCkBAIC0wLDAgKzEsOTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhLCBTLkwuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCWFIpICYmIFVTRShPUEVOWFIpCisKKy8vIFN5bWJvbHMgcmVxdWlyZWQg
Ynkgb3BlbnhyX3BsYXRmb3JtCit0eXBlZGVmIHZvaWQgKkVHTENvbmZpZzsKK3R5cGVkZWYgdm9p
ZCAqRUdMQ29udGV4dDsKK3R5cGVkZWYgdm9pZCAqRUdMRGlzcGxheTsKK3R5cGVkZWYgdm9pZCAq
RUdMU3VyZmFjZTsKK3R5cGVkZWYgdm9pZCAoKl9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9u
UG9pbnRlclR5cGUpKHZvaWQpOwordHlwZWRlZiBfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlv
blBvaW50ZXJUeXBlICgqUEZORUdMR0VUUFJPQ0FERFJFU1NQUk9DKShjb25zdCBjaGFyICpwcm9j
KTsKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCisjaW5j
bHVkZSA8b3BlbnhyL29wZW54ci5oPgorI2luY2x1ZGUgPG9wZW54ci9vcGVueHJfcGxhdGZvcm0u
aD4KKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgUGxhdGZvcm1YUiB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIFhyU3RydWN0dXJlVHlwZSBTdHJ1Y3R1cmVUeXBlPgorVCBj
cmVhdGVTdHJ1Y3R1cmUoKQoreworICAgIFQgb2JqZWN0OworICAgIHN0ZDo6bWVtc2V0KCZvYmpl
Y3QsIDAsIHNpemVvZihUKSk7CisgICAgb2JqZWN0LnR5cGUgPSBTdHJ1Y3R1cmVUeXBlOworICAg
IG9iamVjdC5uZXh0ID0gbnVsbHB0cjsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitpbmxpbmUg
U3RyaW5nIHJlc3VsdFRvU3RyaW5nKFhyUmVzdWx0IHZhbHVlLCBYckluc3RhbmNlIGluc3RhbmNl
KQoreworICAgIGNoYXIgYnVmZmVyW1hSX01BWF9SRVNVTFRfU1RSSU5HX1NJWkVdOworICAgIFhy
UmVzdWx0IHJlc3VsdCA9IHhyUmVzdWx0VG9TdHJpbmcoaW5zdGFuY2UsIHZhbHVlLCBidWZmZXIp
OworICAgIGlmIChyZXN1bHQgPT0gWFJfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIFN0cmluZyhi
dWZmZXIpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCI8dW5rbm93biAiLCBpbnQodmFsdWUpLCAi
PiIpOworfQorCisjZGVmaW5lIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCBjYWxsLCBpbnN0YW5j
ZSwgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
aWYgKFhSX0ZBSUxFRChyZXN1bHQpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExPRyhYUiwgIiVz
ICVzOiAlc1xuIiwgX19mdW5jX18sIGNhbGwsIHJlc3VsdFRvU3RyaW5nKHJlc3VsdCwgaW5zdGFu
Y2UpLnV0ZjgoKS5kYXRhKCkpOyBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgfQorCitpbmxpbmUgRGV2aWNlOjpGcmFtZURhdGE6OlBvc2UgWHJQb3NlZlRv
UG9zZShYclBvc2VmIHBvc2UpCit7CisgICAgRGV2aWNlOjpGcmFtZURhdGE6OlBvc2UgcmVzdWx0
OworICAgIHJlc3VsdC5vcmllbnRhdGlvbiA9IHsgcG9zZS5vcmllbnRhdGlvbi54LCBwb3NlLm9y
aWVudGF0aW9uLnksIHBvc2Uub3JpZW50YXRpb24ueiwgcG9zZS5vcmllbnRhdGlvbi53IH07Cisg
ICAgcmVzdWx0LnBvc2l0aW9uID0geyBwb3NlLnBvc2l0aW9uLngsIHBvc2UucG9zaXRpb24ueSwg
cG9zZS5wb3NpdGlvbi56IH07CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5lIERldmlj
ZTo6RnJhbWVEYXRhOjpWaWV3IHhyVmlld1RvUG9zZShYclZpZXcgdmlldykKK3sKKyAgICBEZXZp
Y2U6OkZyYW1lRGF0YTo6VmlldyBwb3NlOworICAgIHBvc2UucHJvamVjdGlvbiA9IERldmljZTo6
RnJhbWVEYXRhOjpGb3YgeyB2aWV3LmZvdi5hbmdsZVVwLCAtdmlldy5mb3YuYW5nbGVEb3duLCAt
dmlldy5mb3YuYW5nbGVMZWZ0LCB2aWV3LmZvdi5hbmdsZVJpZ2h0IH07CisgICAgcG9zZS5vZmZz
ZXQgPSBYclBvc2VmVG9Qb3NlKHZpZXcucG9zZSk7CisgICAgcmV0dXJuIHBvc2U7Cit9CisKK2lu
bGluZSBYclZpZXdDb25maWd1cmF0aW9uVHlwZSB0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKFNl
c3Npb25Nb2RlIG1vZGUpCit7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBTZXNzaW9u
TW9kZTo6SW1tZXJzaXZlVnI6CisgICAgICAgIHJldHVybiBYUl9WSUVXX0NPTkZJR1VSQVRJT05f
VFlQRV9QUklNQVJZX1NURVJFTzsKKyAgICBjYXNlIFNlc3Npb25Nb2RlOjpJbmxpbmU6CisgICAg
Y2FzZSBTZXNzaW9uTW9kZTo6SW1tZXJzaXZlQXI6CisgICAgICAgIHJldHVybiBYUl9WSUVXX0NP
TkZJR1VSQVRJT05fVFlQRV9QUklNQVJZX01PTk87CisgICAgfTsKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gWFJfVklFV19DT05GSUdVUkFUSU9OX1RZUEVfUFJJTUFSWV9N
T05POworfQorCit9IC8vIG5hbWVzcGFjZSBQbGF0Zm9ybVhSCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCWFIpICYmIFVTRShPUEVOWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKaW5kZXggYjk0ZTg3MWY1N2I4OTdjN2U0
ODQ5YTQ3ZjRhNjRjMzMzMGQ2ZDE3Ni4uYmRiMGYxZmQxMTQ5NzAyZDAzMWQ0MDZhYjkyNzk0YTdk
ZmU0MjZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1Bs
YXRmb3JtWFJPcGVuWFIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54
ci9QbGF0Zm9ybVhST3BlblhSLmNwcApAQCAtMjIsMzAzICsyMiwyNDcgQEAKIAogI2lmIEVOQUJM
RShXRUJYUikgJiYgVVNFKE9QRU5YUikKIAotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRl
IDxvcGVueHIvb3BlbnhyX3BsYXRmb3JtLmg+CisjaW5jbHVkZSAiT3BlblhSRXh0ZW5zaW9ucy5o
IgorCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1Njb3BlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgUGxhdGZvcm1YUiB7CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIFhyU3RydWN0dXJlVHlwZSBTdHJ1Y3R1cmVUeXBlPgotVCBjcmVh
dGVTdHJ1Y3R1cmUoKQorCitzdGF0aWMgYm9vbCBpc1Nlc3Npb25BY3RpdmUoWHJTZXNzaW9uU3Rh
dGUgc3RhdGUpCiB7Ci0gICAgVCBvYmplY3Q7Ci0gICAgc3RkOjptZW1zZXQoJm9iamVjdCwgMCwg
c2l6ZW9mKFQpKTsKLSAgICBvYmplY3QudHlwZSA9IFN0cnVjdHVyZVR5cGU7Ci0gICAgb2JqZWN0
Lm5leHQgPSBudWxscHRyOwotICAgIHJldHVybiBvYmplY3Q7CisgICAgcmV0dXJuIHN0YXRlID09
IFhSX1NFU1NJT05fU1RBVEVfVklTSUJMRSB8fCBzdGF0ZSA9PSBYUl9TRVNTSU9OX1NUQVRFX0ZP
Q1VTRUQ7CiB9CiAKLVN0cmluZyByZXN1bHRUb1N0cmluZyhYclJlc3VsdCB2YWx1ZSwgWHJJbnN0
YW5jZSBpbnN0YW5jZSkKK3N0YXRpYyBib29sIGlzU2Vzc2lvblJlYWR5KFhyU2Vzc2lvblN0YXRl
IHN0YXRlKQogewotICAgIGNoYXIgYnVmZmVyW1hSX01BWF9SRVNVTFRfU1RSSU5HX1NJWkVdOwot
ICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyUmVzdWx0VG9TdHJpbmcoaW5zdGFuY2UsIHZhbHVlLCBi
dWZmZXIpOwotICAgIGlmIChyZXN1bHQgPT0gWFJfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIFN0
cmluZyhidWZmZXIpOwotICAgIHJldHVybiBtYWtlU3RyaW5nKCI8dW5rbm93biAiLCBpbnQodmFs
dWUpLCAiPiIpOworICAgIHJldHVybiBzdGF0ZSA+PSBYUl9TRVNTSU9OX1NUQVRFX1JFQURZICAm
JiBzdGF0ZSA8IFhSX1NFU1NJT05fU1RBVEVfU1RPUFBJTkc7CiB9CiAKLSNkZWZpbmUgUkVUVVJO
X0lGX0ZBSUxFRChyZXN1bHQsIGNhbGwsIGluc3RhbmNlLCAuLi4pICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoWFJfRkFJTEVEKHJlc3VsdCkpIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgTE9HKFhSLCAiJXMgJXM6ICVzXG4iLCBfX2Z1bmNfXywgY2Fs
bCwgcmVzdWx0VG9TdHJpbmcocmVzdWx0LCBpbnN0YW5jZSkudXRmOCgpLmRhdGEoKSk7IFwKLSAg
ICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLXN0cnVjdCBJ
bnN0YW5jZTo6SW1wbCB7Ci0gICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotCi0g
ICAgSW1wbCgpOwotICAgIH5JbXBsKCk7Ci0KLSAgICBYckluc3RhbmNlIHhySW5zdGFuY2UoKSBj
b25zdCB7IHJldHVybiBtX2luc3RhbmNlOyB9Ci0gICAgV29ya1F1ZXVlJiBxdWV1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fd29ya1F1ZXVlOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBlbnVtZXJhdGVB
cGlMYXllclByb3BlcnRpZXMoKSBjb25zdDsKLSAgICBib29sIGNoZWNrSW5zdGFuY2VFeHRlbnNp
b25Qcm9wZXJ0aWVzKCkgY29uc3Q7Ci0KLSAgICBYckluc3RhbmNlIG1faW5zdGFuY2UgeyBYUl9O
VUxMX0hBTkRMRSB9OwotICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOwotfTsKLQotdm9p
ZCBJbnN0YW5jZTo6SW1wbDo6ZW51bWVyYXRlQXBpTGF5ZXJQcm9wZXJ0aWVzKCkgY29uc3QKK09w
ZW5YUkRldmljZTo6T3BlblhSRGV2aWNlKFhySW5zdGFuY2UgaW5zdGFuY2UsIFhyU3lzdGVtSWQg
c3lzdGVtLCBXb3JrUXVldWUmIHF1ZXVlLCBjb25zdCBPcGVuWFJFeHRlbnNpb25zJiBleHRlbnNp
b25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCisgICAgOiBtX2luc3Rh
bmNlKGluc3RhbmNlKQorICAgICwgbV9zeXN0ZW1JZChzeXN0ZW0pCisgICAgLCBtX3F1ZXVlKHF1
ZXVlKQorICAgICwgbV9leHRlbnNpb25zKGV4dGVuc2lvbnMpCiB7Ci0gICAgQVNTRVJUKCZSdW5M
b29wOjpjdXJyZW50KCkgPT0gJm1fd29ya1F1ZXVlLT5ydW5Mb29wKCkpOwotICAgIHVpbnQzMl90
IHByb3BlcnR5Q291bnRPdXRwdXQgeyAwIH07Ci0gICAgWHJSZXN1bHQgcmVzdWx0ID0geHJFbnVt
ZXJhdGVBcGlMYXllclByb3BlcnRpZXMoMCwgJnByb3BlcnR5Q291bnRPdXRwdXQsIG51bGxwdHIp
OwotICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJFbnVtZXJhdGVBcGlMYXllclByb3Bl
cnRpZXMoKSIsIG1faW5zdGFuY2UpOwotCi0gICAgaWYgKCFwcm9wZXJ0eUNvdW50T3V0cHV0KSB7
Ci0gICAgICAgIExPRyhYUiwgInhyRW51bWVyYXRlQXBpTGF5ZXJQcm9wZXJ0aWVzKCk6IG5vIHBy
b3BlcnRpZXNcbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBzeXN0ZW1Qcm9wZXJ0aWVzID0g
Y3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtUHJvcGVydGllcywgWFJfVFlQRV9TWVNURU1fUFJPUEVS
VElFUz4oKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSB4ckdldFN5c3RlbVByb3BlcnRpZXMobV9p
bnN0YW5jZSwgbV9zeXN0ZW1JZCwgJnN5c3RlbVByb3BlcnRpZXMpOworICAgICAgICBpZiAoWFJf
U1VDQ0VFREVEKHJlc3VsdCkpCisgICAgICAgICAgICBtX3N1cHBvcnRzT3JpZW50YXRpb25UcmFj
a2luZyA9IHN5c3RlbVByb3BlcnRpZXMudHJhY2tpbmdQcm9wZXJ0aWVzLm9yaWVudGF0aW9uVHJh
Y2tpbmcgPT0gWFJfVFJVRTsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIExPRyhYUiwgInhyR2V0U3lzdGVtUHJvcGVydGllcygpOiBlcnJvciAlc1xuIiwgcmVz
dWx0VG9TdHJpbmcocmVzdWx0LCBtX2luc3RhbmNlKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
TE9HKFhSLCAiRm91bmQgWFJTeXN0ZW0gJWx1OiBcIiVzXCIsIHZlbmRvciBJRCAlZFxuIiwgc3lz
dGVtUHJvcGVydGllcy5zeXN0ZW1JZCwgc3lzdGVtUHJvcGVydGllcy5zeXN0ZW1OYW1lLCBzeXN0
ZW1Qcm9wZXJ0aWVzLnZlbmRvcklkKTsKKyNlbmRpZgogCi0gICAgVmVjdG9yPFhyQXBpTGF5ZXJQ
cm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKHByb3BlcnR5Q291bnRPdXRwdXQsCi0gICAgICAgIFtdIHsK
LSAgICAgICAgICAgIFhyQXBpTGF5ZXJQcm9wZXJ0aWVzIG9iamVjdDsKLSAgICAgICAgICAgIHN0
ZDo6bWVtc2V0KCZvYmplY3QsIDAsIHNpemVvZihYckFwaUxheWVyUHJvcGVydGllcykpOwotICAg
ICAgICAgICAgb2JqZWN0LnR5cGUgPSBYUl9UWVBFX0FQSV9MQVlFUl9QUk9QRVJUSUVTOwotICAg
ICAgICAgICAgcmV0dXJuIG9iamVjdDsKLSAgICAgICAgfSgpKTsKLSAgICByZXN1bHQgPSB4ckVu
dW1lcmF0ZUFwaUxheWVyUHJvcGVydGllcyhwcm9wZXJ0eUNvdW50T3V0cHV0LCAmcHJvcGVydHlD
b3VudE91dHB1dCwgcHJvcGVydGllcy5kYXRhKCkpOworICAgICAgICBjb2xsZWN0U3VwcG9ydGVk
U2Vzc2lvbk1vZGVzKCk7CisgICAgICAgIGNvbGxlY3RDb25maWd1cmF0aW9uVmlld3MoKTsKIAot
ICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJFbnVtZXJhdGVBcGlMYXllclByb3BlcnRp
ZXMoKSIsIG1faW5zdGFuY2UpOwotICAgIExPRyhYUiwgInhyRW51bWVyYXRlQXBpTGF5ZXJQcm9w
ZXJ0aWVzKCk6ICV6dSBwcm9wZXJ0aWVzXG4iLCBwcm9wZXJ0aWVzLnNpemUoKSk7CisgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0pOwogfQogCi1zdGF0
aWMgYm9vbCBpc0V4dGVuc2lvblN1cHBvcnRlZChjb25zdCBjaGFyKiBleHRlbnNpb25OYW1lLCBW
ZWN0b3I8WHJFeHRlbnNpb25Qcm9wZXJ0aWVzPiYgaW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVz
KQorV2ViQ29yZTo6SW50U2l6ZSBPcGVuWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbihT
ZXNzaW9uTW9kZSBtb2RlKQogewotICAgIGF1dG8gcG9zaXRpb24gPSBpbnN0YW5jZUV4dGVuc2lv
blByb3BlcnRpZXMuZmluZE1hdGNoaW5nKFtleHRlbnNpb25OYW1lXShhdXRvJiBwcm9wZXJ0eSkg
ewotICAgICAgICByZXR1cm4gIXN0cmNtcChwcm9wZXJ0eS5leHRlbnNpb25OYW1lLCBleHRlbnNp
b25OYW1lKTsKLSAgICB9KTsKLSAgICByZXR1cm4gcG9zaXRpb24gIT0gbm90Rm91bmQ7CisgICAg
YXV0byBjb25maWdUeXBlID0gdG9YclZpZXdDb25maWd1cmF0aW9uVHlwZShtb2RlKTsKKyAgICBh
dXRvIHZpZXdzSXRlcmF0b3IgPSBtX2NvbmZpZ3VyYXRpb25WaWV3cy5maW5kKGNvbmZpZ1R5cGUp
OworICAgIGlmICh2aWV3c0l0ZXJhdG9yICE9IG1fY29uZmlndXJhdGlvblZpZXdzLmVuZCgpKQor
ICAgICAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdzSXRlcmF0b3ItPnZhbHVlWzBd
LnJlY29tbWVuZGVkSW1hZ2VSZWN0V2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdzSXRlcmF0
b3ItPnZhbHVlWzBdLnJlY29tbWVuZGVkSW1hZ2VSZWN0SGVpZ2h0KSB9OworICAgIHJldHVybiBE
ZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbihtb2RlKTsKIH0KIAotYm9vbCBJbnN0YW5jZTo6
SW1wbDo6Y2hlY2tJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMoKSBjb25zdAordm9pZCBPcGVu
WFJEZXZpY2U6OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSBtb2Rl
KQogewotICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3dvcmtRdWV1ZS0+cnVu
TG9vcCgpKTsKLSAgICB1aW50MzJfdCBwcm9wZXJ0eUNvdW50T3V0cHV0IHsgMCB9OwotICAgIFhy
UmVzdWx0IHJlc3VsdCA9IHhyRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzKG51
bGxwdHIsIDAsICZwcm9wZXJ0eUNvdW50T3V0cHV0LCBudWxscHRyKTsKLSAgICBSRVRVUk5fSUZf
RkFJTEVEKHJlc3VsdCwgInhyRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIiwg
bV9pbnN0YW5jZSwgZmFsc2UpOwotCi0gICAgaWYgKCFwcm9wZXJ0eUNvdW50T3V0cHV0KSB7Ci0g
ICAgICAgIExPRyhYUiwgInhyRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzKCk6
IG5vIHByb3BlcnRpZXNcbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIG1f
cXVldWUuZGlzcGF0Y2goW3RoaXMsIG1vZGVdKCkgeworICAgICAgICBBU1NFUlQobV9pbnN0YW5j
ZSAhPSBYUl9OVUxMX0hBTkRMRSk7CisgICAgICAgIEFTU0VSVChtX3Nlc3Npb24gPT0gWFJfTlVM
TF9IQU5ETEUpOworICAgICAgICBBU1NFUlQobV9leHRlbnNpb25zLm1ldGhvZHMoKS54ckdldE9w
ZW5HTEdyYXBoaWNzUmVxdWlyZW1lbnRzS0hSKTsKIAotICAgIFZlY3RvcjxYckV4dGVuc2lvblBy
b3BlcnRpZXM+IHByb3BlcnRpZXMocHJvcGVydHlDb3VudE91dHB1dCwKLSAgICAgICAgW10gewot
ICAgICAgICAgICAgWHJFeHRlbnNpb25Qcm9wZXJ0aWVzIG9iamVjdDsKLSAgICAgICAgICAgIHN0
ZDo6bWVtc2V0KCZvYmplY3QsIDAsIHNpemVvZihYckV4dGVuc2lvblByb3BlcnRpZXMpKTsKLSAg
ICAgICAgICAgIG9iamVjdC50eXBlID0gWFJfVFlQRV9FWFRFTlNJT05fUFJPUEVSVElFUzsKLSAg
ICAgICAgICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgIH0oKSk7CisgICAgICAgIG1fY3VycmVu
dFZpZXdDb25maWd1cmF0aW9uVHlwZSA9IHRvWHJWaWV3Q29uZmlndXJhdGlvblR5cGUobW9kZSk7
CisgICAgICAgIEFTU0VSVChtX2NvbmZpZ3VyYXRpb25WaWV3cy5jb250YWlucyhtX2N1cnJlbnRW
aWV3Q29uZmlndXJhdGlvblR5cGUpKTsKIAotICAgIHVpbnQzMl90IHByb3BlcnR5Q291bnRXcml0
dGVuIHsgMCB9OwotICAgIHJlc3VsdCA9IHhyRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9w
ZXJ0aWVzKG51bGxwdHIsIHByb3BlcnR5Q291bnRPdXRwdXQsICZwcm9wZXJ0eUNvdW50V3JpdHRl
biwgcHJvcGVydGllcy5kYXRhKCkpOwotICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJF
bnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMiLCBtX2luc3RhbmNlLCBmYWxzZSk7
Ci0jaWYgIUxPR19ESVNBQkxFRAotICAgIExPRyhYUiwgInhyRW51bWVyYXRlSW5zdGFuY2VFeHRl
bnNpb25Qcm9wZXJ0aWVzKCk6ICV6dSBleHRlbnNpb24gcHJvcGVydGllc1xuIiwgcHJvcGVydGll
cy5zaXplKCkpOwotICAgIGZvciAoYXV0byYgcHJvcGVydHkgOiBwcm9wZXJ0aWVzKQotICAgICAg
ICBMT0coWFIsICIgIGV4dGVuc2lvbiAnJXMnLCB2ZXJzaW9uICV1XG4iLCBwcm9wZXJ0eS5leHRl
bnNpb25OYW1lLCBwcm9wZXJ0eS5leHRlbnNpb25WZXJzaW9uKTsKLSNlbmRpZgotICAgIGlmICgh
aXNFeHRlbnNpb25TdXBwb3J0ZWQoWFJfTU5EX0hFQURMRVNTX0VYVEVOU0lPTl9OQU1FLCBwcm9w
ZXJ0aWVzKSkgewotICAgICAgICBMT0coWFIsICJSZXF1aXJlZCBleHRlbnNpb24gJXMgbm90IHN1
cHBvcnRlZCIsIFhSX01ORF9IRUFETEVTU19FWFRFTlNJT05fTkFNRSk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9CisgICAgICAgIC8vIE9wZW5YUiByZXF1aXJlcyBjaGVja2luZyBncmFw
aGljcyByZXF1aXJlbWVudHMgYmVmb3JlIGNyZWF0aW5nIGEgc2Vzc2lvbi4KKyAgICAgICAgYXV0
byByZXF1aXJlbWVudHMgPSBjcmVhdGVTdHJ1Y3R1cmU8WHJHcmFwaGljc1JlcXVpcmVtZW50c09w
ZW5HTEtIUiwgWFJfVFlQRV9HUkFQSElDU19SRVFVSVJFTUVOVFNfT1BFTkdMX0tIUj4oKTsKIAot
ICAgIHJldHVybiB0cnVlOwotfQorICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZXh0ZW5zaW9ucy5t
ZXRob2RzKCkueHJHZXRPcGVuR0xHcmFwaGljc1JlcXVpcmVtZW50c0tIUihtX2luc3RhbmNlLCBt
X3N5c3RlbUlkLCAmcmVxdWlyZW1lbnRzKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1
bHQsICJ4ckdldE9wZW5HTEdyYXBoaWNzUmVxdWlyZW1lbnRzS0hSIiwgbV9pbnN0YW5jZSk7CiAK
LUluc3RhbmNlOjpJbXBsOjpJbXBsKCkKLSAgICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3Jl
YXRlKCJPcGVuWFIgcXVldWUiKSkKLXsKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNd
KCkgewotICAgICAgICBMT0coWFIsICJPcGVuWFI6IGluaXRpYWxpemluZ1xuIik7CisgICAgICAg
IG1fZ3JhcGhpY3NCaW5kaW5nID0gY3JlYXRlU3RydWN0dXJlPFhyR3JhcGhpY3NCaW5kaW5nRUdM
TU5EWCwgWFJfVFlQRV9HUkFQSElDU19CSU5ESU5HX0VHTF9NTkRYPigpOworICAgICAgICBtX2Vn
bCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkpOworICAgICAgICBpZiAoIW1fZWdsKSB7CisgICAgICAgICAgICBMT0co
WFIsICJGYWlsZWQgdG8gY3JlYXRlIEVHTCBjb250ZXh0Iik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KIAotICAgICAgICBlbnVtZXJhdGVBcGlMYXllclByb3BlcnRpZXMoKTsKKyAg
ICAgICAgYXV0byYgY29udGV4dCA9IHN0YXRpY19jYXN0PEdMQ29udGV4dCY+KCptX2VnbCk7Cisg
ICAgICAgIGNvbnRleHQubWFrZUNvbnRleHRDdXJyZW50KCk7CiAKLSAgICAgICAgaWYgKCFjaGVj
a0luc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcygpKQotICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2dyYXBoaWNzQmluZGluZy5kaXNwbGF5ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5KCkuZWdsRGlzcGxheSgpOworICAgICAgICBtX2dyYXBoaWNzQmluZGluZy5jb250ZXh0
ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAgICAgbV9ncmFwaGljc0JpbmRpbmcu
Y29uZmlnID0gbV9lZ2wtPmNvbmZpZygpOworICAgICAgICBtX2dyYXBoaWNzQmluZGluZy5nZXRQ
cm9jQWRkcmVzcyA9IG1fZXh0ZW5zaW9ucy5tZXRob2RzKCkuZ2V0UHJvY0FkZHJlc3NGdW5jOwog
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzX2FwcGxpY2F0aW9uTmFtZSA9ICJXZWJYUiAo
V2ViS2l0KSI7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2FwcGxpY2F0aW9uVmVy
c2lvbiA9IDE7CisgICAgICAgIC8vIENyZWF0ZSB0aGUgc2Vzc2lvbi4KKyAgICAgICAgYXV0byBz
ZXNzaW9uQ3JlYXRlSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYclNlc3Npb25DcmVhdGVJbmZvLCBY
Ul9UWVBFX1NFU1NJT05fQ1JFQVRFX0lORk8+KCk7CisgICAgICAgIHNlc3Npb25DcmVhdGVJbmZv
LnN5c3RlbUlkID0gbV9zeXN0ZW1JZDsKKyAgICAgICAgc2Vzc2lvbkNyZWF0ZUluZm8ubmV4dCA9
ICZtX2dyYXBoaWNzQmluZGluZzsKIAotICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBlbmFibGVk
RXh0ZW5zaW9uc1tdID0gewotICAgICAgICAgICAgWFJfTU5EX0hFQURMRVNTX0VYVEVOU0lPTl9O
QU1FLAotICAgICAgICB9OworICAgICAgICByZXN1bHQgPSB4ckNyZWF0ZVNlc3Npb24obV9pbnN0
YW5jZSwgJnNlc3Npb25DcmVhdGVJbmZvLCAmbV9zZXNzaW9uKTsKKyAgICAgICAgUkVUVVJOX0lG
X0ZBSUxFRChyZXN1bHQsICJ4ckVudW1lcmF0ZUluc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcyIs
IG1faW5zdGFuY2UpOwogCi0gICAgICAgIGF1dG8gY3JlYXRlSW5mbyA9IGNyZWF0ZVN0cnVjdHVy
ZTxYckluc3RhbmNlQ3JlYXRlSW5mbywgWFJfVFlQRV9JTlNUQU5DRV9DUkVBVEVfSU5GTz4oKTsK
LSAgICAgICAgY3JlYXRlSW5mby5jcmVhdGVGbGFncyA9IDA7Ci0gICAgICAgIHN0ZDo6bWVtY3B5
KGNyZWF0ZUluZm8uYXBwbGljYXRpb25JbmZvLmFwcGxpY2F0aW9uTmFtZSwgc19hcHBsaWNhdGlv
bk5hbWUsIFhSX01BWF9BUFBMSUNBVElPTl9OQU1FX1NJWkUpOwotICAgICAgICBjcmVhdGVJbmZv
LmFwcGxpY2F0aW9uSW5mby5hcGlWZXJzaW9uID0gWFJfQ1VSUkVOVF9BUElfVkVSU0lPTjsKLSAg
ICAgICAgY3JlYXRlSW5mby5hcHBsaWNhdGlvbkluZm8uYXBwbGljYXRpb25WZXJzaW9uID0gc19h
cHBsaWNhdGlvblZlcnNpb247Ci0gICAgICAgIGNyZWF0ZUluZm8uZW5hYmxlZEFwaUxheWVyQ291
bnQgPSAwOwotICAgICAgICBjcmVhdGVJbmZvLmVuYWJsZWRFeHRlbnNpb25Db3VudCA9IFdURl9B
UlJBWV9MRU5HVEgoZW5hYmxlZEV4dGVuc2lvbnMpOwotICAgICAgICBjcmVhdGVJbmZvLmVuYWJs
ZWRFeHRlbnNpb25OYW1lcyA9IGVuYWJsZWRFeHRlbnNpb25zOwotCi0gICAgICAgIFhySW5zdGFu
Y2UgaW5zdGFuY2U7Ci0gICAgICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyQ3JlYXRlSW5zdGFuY2Uo
JmNyZWF0ZUluZm8sICZpbnN0YW5jZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0
LCAieHJDcmVhdGVJbnN0YW5jZSgpIiwgbV9pbnN0YW5jZSk7Ci0gICAgICAgIG1faW5zdGFuY2Ug
PSBpbnN0YW5jZTsKLSAgICAgICAgTE9HKFhSLCAieHJDcmVhdGVJbnN0YW5jZSgpOiB1c2luZyBp
bnN0YW5jZSAlcFxuIiwgbV9pbnN0YW5jZSk7CisgICAgICAgIC8vIENyZWF0ZSB0aGUgZGVmYXVs
dCByZWZlcmVuY2Ugc3BhY2VzCisgICAgICAgIG1fbG9jYWxTcGFjZSA9IGNyZWF0ZVJlZmVyZW5j
ZVNwYWNlKFhSX1JFRkVSRU5DRV9TUEFDRV9UWVBFX0xPQ0FMKTsKKyAgICAgICAgbV92aWV3U3Bh
Y2UgPSBjcmVhdGVSZWZlcmVuY2VTcGFjZShYUl9SRUZFUkVOQ0VfU1BBQ0VfVFlQRV9WSUVXKTsK
ICAgICB9KTsKIH0KIAotSW5zdGFuY2U6OkltcGw6On5JbXBsKCkKK3ZvaWQgT3BlblhSRGV2aWNl
OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKIHsKLSAgICBtX3dvcmtRdWV1ZS0+ZGlz
cGF0Y2goW3RoaXNdIHsKLSAgICAgICAgaWYgKG1faW5zdGFuY2UgIT0gWFJfTlVMTF9IQU5ETEUp
Ci0gICAgICAgICAgICB4ckRlc3Ryb3lJbnN0YW5jZShtX2luc3RhbmNlKTsKLSAgICB9KTsKLX0K
KyAgICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzXSgpIHsKKyAgICAgICAgaWYgKG1fc2Vzc2lvbiA9
PSBYUl9OVUxMX0hBTkRMRSkKKyAgICAgICAgICAgIHJldHVybjsKIAotSW5zdGFuY2UmIEluc3Rh
bmNlOjpzaW5nbGV0b24oKQotewotICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SW5zdGFu
Y2U+IHNfaW5zdGFuY2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNfb25jZUZsYWc7Ci0g
ICAgc3RkOjpjYWxsX29uY2Uoc19vbmNlRmxhZywKLSAgICAgICAgWyZdIHsKLSAgICAgICAgICAg
IHNfaW5zdGFuY2UuY29uc3RydWN0KCk7Ci0gICAgICAgIH0pOwotICAgIHJldHVybiBzX2luc3Rh
bmNlLmdldCgpOworICAgICAgICAvLyB4clJlcXVlc3RFeGl0U2Vzc2lvbigpIHdpbGwgdHJhbnNp
dGlvbiB0aGUgc2Vzc2lvbiB0byBTVE9QUEVEIHN0YXRlLgorICAgICAgICAvLyBJZiB0aGUgc2Vz
c2lvbiB3YXMgbm90IHJ1bm5pbmcgd2UgaGF2ZSB0byByZXNldCB0aGUgc2Vzc2lvbiBvdXJzZWx2
ZXMuCisgICAgICAgIGlmIChYUl9GQUlMRUQoeHJSZXF1ZXN0RXhpdFNlc3Npb24obV9zZXNzaW9u
KSkpIHsKKyAgICAgICAgICAgIHJlc2V0U2Vzc2lvbigpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gT3BlblhSIG5lZWRzIHRvIHdhaXQgZm9yIHRoZSBYUl9T
RVNTSU9OX1NUQVRFX1NUT1BQSU5HIHN0YXRlIHRvIHByb3Blcmx5IGVuZCB0aGUgc2Vzc2lvbi4K
KyAgICAgICAgd2FpdFVudGlsU3RvcHBpbmcoKTsKKyAgICB9KTsKIH0KIAotSW5zdGFuY2U6Oklu
c3RhbmNlKCkKLSAgICA6IG1faW1wbChtYWtlVW5pcXVlUmVmPEltcGw+KCkpCit2b2lkIE9wZW5Y
UkRldmljZTo6aW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNw
YWNlVHlwZSBzcGFjZVR5cGUpCiB7CisgICAgaWYgKChzcGFjZVR5cGUgPT0gUmVmZXJlbmNlU3Bh
Y2VUeXBlOjpMb2NhbEZsb29yIHx8IHNwYWNlVHlwZSA9PSBSZWZlcmVuY2VTcGFjZVR5cGU6OkJv
dW5kZWRGbG9vcikgJiYgbV9zdGFnZVNwYWNlID09IFhSX05VTExfSEFORExFKQorICAgICAgICBt
X3N0YWdlU3BhY2UgPSBjcmVhdGVSZWZlcmVuY2VTcGFjZShYUl9SRUZFUkVOQ0VfU1BBQ0VfVFlQ
RV9TVEFHRSk7CiB9CiAKLXZvaWQgSW5zdGFuY2U6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNl
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IERldmljZUxpc3QmIGRldmljZXMpPiYmIGNh
bGxiYWNrKQordm9pZCBPcGVuWFJEZXZpY2U6OnJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxs
YmFjayYmIGNhbGxiYWNrKQogewotICAgIG1faW1wbC0+cXVldWUoKS5kaXNwYXRjaChbdGhpcywg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBj
YWxsYmFja09uRXhpdCA9IG1ha2VTY29wZUV4aXQoWyZdKCkgeworICAgIG1fcXVldWUuZGlzcGF0
Y2goW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAg
ICAgIHBvbGxFdmVudHMoKTsKKyAgICAgICAgaWYgKCFpc1Nlc3Npb25SZWFkeShtX3Nlc3Npb25T
dGF0ZSkpIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgLy8gRGV2aWNlIG5vdCBy
ZWFkeSBvciBzdG9wcGluZy4gUmVwb3J0IGZyYW1lRGF0YSB3aXRoIGludmFsaWQgdHJhY2tpbmcu
CiAgICAgICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKICAgICAgICAgICAgIH0pOwotICAgICAg
ICB9KTsKLQotICAgICAgICBpZiAobV9pbXBsLT54ckluc3RhbmNlKCkgPT0gWFJfTlVMTF9IQU5E
TEUpIHsKLSAgICAgICAgICAgIExPRyhYUiwgIiVzIFVuYWJsZSB0byBlbnVtZXJhdGUgWFIgZGV2
aWNlcy4gTm8gWHJJbnN0YW5jZSBwcmVzZW50XG4iLCBfX0ZVTkNUSU9OX18pOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBzeXN0ZW1HZXRJbmZvID0gY3Jl
YXRlU3RydWN0dXJlPFhyU3lzdGVtR2V0SW5mbywgWFJfVFlQRV9TWVNURU1fR0VUX0lORk8+KCk7
Ci0gICAgICAgIHN5c3RlbUdldEluZm8uZm9ybUZhY3RvciA9IFhSX0ZPUk1fRkFDVE9SX0hFQURf
TU9VTlRFRF9ESVNQTEFZOworICAgICAgICBhdXRvIGZyYW1lU3RhdGUgPSBjcmVhdGVTdHJ1Y3R1
cmU8WHJGcmFtZVN0YXRlLCBYUl9UWVBFX0ZSQU1FX1NUQVRFPigpOworICAgICAgICBhdXRvIGZy
YW1lV2FpdEluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJGcmFtZVdhaXRJbmZvLCBYUl9UWVBFX0ZS
QU1FX1dBSVRfSU5GTz4oKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSB4cldhaXRGcmFtZShtX3Nl
c3Npb24sICZmcmFtZVdhaXRJbmZvLCAmZnJhbWVTdGF0ZSk7CisgICAgICAgIFJFVFVSTl9JRl9G
QUlMRUQocmVzdWx0LCAieHJXYWl0RnJhbWUiLCBtX2luc3RhbmNlKTsKKyAgICAgICAgWHJUaW1l
IHByZWRpY3RlZFRpbWUgPSBmcmFtZVN0YXRlLnByZWRpY3RlZERpc3BsYXlUaW1lOworCisgICAg
ICAgIGF1dG8gZnJhbWVCZWdpbkluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJGcmFtZUJlZ2luSW5m
bywgWFJfVFlQRV9GUkFNRV9CRUdJTl9JTkZPPigpOworICAgICAgICByZXN1bHQgPSB4ckJlZ2lu
RnJhbWUobV9zZXNzaW9uLCAmZnJhbWVCZWdpbkluZm8pOworICAgICAgICBSRVRVUk5fSUZfRkFJ
TEVEKHJlc3VsdCwgInhyQmVnaW5GcmFtZSIsIG1faW5zdGFuY2UpOworCisgICAgICAgIERldmlj
ZTo6RnJhbWVEYXRhIGZyYW1lRGF0YTsKKyAgICAgICAgZnJhbWVEYXRhLnByZWRpY3RlZERpc3Bs
YXlUaW1lID0gZnJhbWVTdGF0ZS5wcmVkaWN0ZWREaXNwbGF5VGltZTsKKwogCi0gICAgICAgIFhy
U3lzdGVtSWQgc3lzdGVtSWQ7Ci0gICAgICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyR2V0U3lzdGVt
KG1faW1wbC0+eHJJbnN0YW5jZSgpLCAmc3lzdGVtR2V0SW5mbywgJnN5c3RlbUlkKTsKLSAgICAg
ICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckdldFN5c3RlbSIsIG1faW1wbC0+eHJJbnN0
YW5jZSgpKTsKKyAgICAgICAgQVNTRVJUKG1fY29uZmlndXJhdGlvblZpZXdzLmNvbnRhaW5zKG1f
Y3VycmVudFZpZXdDb25maWd1cmF0aW9uVHlwZSkpOworICAgICAgICBjb25zdCBhdXRvJiBjb25m
aWd1cmF0aW9uVmlldyA9IG1fY29uZmlndXJhdGlvblZpZXdzLmdldChtX2N1cnJlbnRWaWV3Q29u
ZmlndXJhdGlvblR5cGUpOworCisgICAgICAgIHVpbnQzMl90IHZpZXdDb3VudCA9IGNvbmZpZ3Vy
YXRpb25WaWV3LnNpemUoKTsKKyAgICAgICAgVmVjdG9yPFhyVmlldz4gdmlld3Modmlld0NvdW50
LCBbXSB7CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlU3RydWN0dXJlPFhyVmlldywgWFJfVFlQ
RV9WSUVXPigpOworICAgICAgICB9KCkpOworCisKKyAgICAgICAgaWYgKGlzU2Vzc2lvbkFjdGl2
ZShtX3Nlc3Npb25TdGF0ZSkpIHsKKyAgICAgICAgICAgIC8vIFF1ZXJ5IGhlYWQgbG9jYXRpb24K
KyAgICAgICAgICAgIGF1dG8gbG9jYXRpb24gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTcGFjZUxvY2F0
aW9uLCBYUl9UWVBFX1NQQUNFX0xPQ0FUSU9OPigpOworICAgICAgICAgICAgeHJMb2NhdGVTcGFj
ZShtX3ZpZXdTcGFjZSwgbV9sb2NhbFNwYWNlLCBmcmFtZVN0YXRlLnByZWRpY3RlZERpc3BsYXlU
aW1lLCAmbG9jYXRpb24pOworICAgICAgICAgICAgZnJhbWVEYXRhLmlzVHJhY2tpbmdWYWxpZCA9
IGxvY2F0aW9uLmxvY2F0aW9uRmxhZ3MgJiBYUl9TUEFDRV9MT0NBVElPTl9PUklFTlRBVElPTl9W
QUxJRF9CSVQ7CisgICAgICAgICAgICBmcmFtZURhdGEuaXNQb3NpdGlvblZhbGlkID0gbG9jYXRp
b24ubG9jYXRpb25GbGFncyAmIFhSX1NQQUNFX0xPQ0FUSU9OX1BPU0lUSU9OX1ZBTElEX0JJVDsK
KyAgICAgICAgICAgIGZyYW1lRGF0YS5pc1Bvc2l0aW9uRW11bGF0ZWQgPSBsb2NhdGlvbi5sb2Nh
dGlvbkZsYWdzICYgWFJfU1BBQ0VfTE9DQVRJT05fUE9TSVRJT05fVFJBQ0tFRF9CSVQ7CisKKyAg
ICAgICAgICAgIGlmIChmcmFtZURhdGEuaXNUcmFja2luZ1ZhbGlkKQorICAgICAgICAgICAgICAg
IGZyYW1lRGF0YS5vcmlnaW4gPSBYclBvc2VmVG9Qb3NlKGxvY2F0aW9uLnBvc2UpOworICAgICAg
ICAgICAgCisKKyAgICAgICAgICAgIGF1dG8gdmlld0xvY2F0ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1
cmU8WHJWaWV3TG9jYXRlSW5mbywgWFJfVFlQRV9WSUVXX0xPQ0FURV9JTkZPPigpOworICAgICAg
ICAgICAgdmlld0xvY2F0ZUluZm8uZGlzcGxheVRpbWUgPSBwcmVkaWN0ZWRUaW1lOworICAgICAg
ICAgICAgdmlld0xvY2F0ZUluZm8uc3BhY2UgPSBtX2xvY2FsU3BhY2U7CisKKyAgICAgICAgICAg
IGF1dG8gdmlld1N0YXRlID0gY3JlYXRlU3RydWN0dXJlPFhyVmlld1N0YXRlLCBYUl9UWVBFX1ZJ
RVdfU1RBVEU+KCk7CisgICAgICAgICAgICB1aW50MzJfdCB2aWV3Q291bnRPdXRwdXQ7CisgICAg
ICAgICAgICByZXN1bHQgPSB4ckxvY2F0ZVZpZXdzKG1fc2Vzc2lvbiwgJnZpZXdMb2NhdGVJbmZv
LCAmdmlld1N0YXRlLCB2aWV3Q291bnQsICZ2aWV3Q291bnRPdXRwdXQsIHZpZXdzLmRhdGEoKSk7
CisgICAgICAgICAgICBpZiAoIVhSX0ZBSUxFRChyZXN1bHQpKSB7CisgICAgICAgICAgICAgICAg
Zm9yIChhdXRvJiB2aWV3IDogdmlld3MpCisgICAgICAgICAgICAgICAgICAgIGZyYW1lRGF0YS52
aWV3cy5hcHBlbmQoeHJWaWV3VG9Qb3NlKHZpZXcpKTsKKyAgICAgICAgICAgIH0KIAotICAgICAg
ICBjYWxsYmFja09uRXhpdC5yZWxlYXNlKCk7CisgICAgICAgICAgICAvLyBRdWVyeSBmbG9vciB0
cmFuc2Zvcm0KKyAgICAgICAgICAgIGlmIChtX3N0YWdlU3BhY2UgIT0gWFJfTlVMTF9IQU5ETEUp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGZsb29yTG9jYXRpb24gPSBjcmVhdGVTdHJ1Y3R1cmU8
WHJTcGFjZUxvY2F0aW9uLCBYUl9UWVBFX1NQQUNFX0xPQ0FUSU9OPigpOworICAgICAgICAgICAg
ICAgIHhyTG9jYXRlU3BhY2UobV9zdGFnZVNwYWNlLCBtX2xvY2FsU3BhY2UsIGZyYW1lU3RhdGUu
cHJlZGljdGVkRGlzcGxheVRpbWUsICZmbG9vckxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICBm
cmFtZURhdGEuZmxvb3JUcmFuc2Zvcm0gPSB7IFhyUG9zZWZUb1Bvc2UoZmxvb3JMb2NhdGlvbi5w
b3NlKSB9OworICAgICAgICAgICAgfQorICAgICAgICB9CiAKLSAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc3lzdGVtSWRdKCkgbXV0
YWJsZSB7Ci0gICAgICAgICAgICBtX2ltbWVyc2l2ZVhSRGV2aWNlcyA9IERldmljZUxpc3Q6OmZy
b20obWFrZVVuaXF1ZVJlZjxPcGVuWFJEZXZpY2U+KHN5c3RlbUlkLCBtX2ltcGwtPnhySW5zdGFu
Y2UoKSwgbV9pbXBsLT5xdWV1ZSgpLCBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1faW1tZXJzaXZlWFJEZXZpY2VzKTsKLSAgICAgICAg
ICAgIH0pKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZnJhbWVEYXRhID0gV1RGTW92ZShm
cmFtZURhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShmcmFtZURhdGEpKTsKICAgICAgICAgfSk7Ci0gICAg
fSk7Ci19CiAKLU9wZW5YUkRldmljZTo6T3BlblhSRGV2aWNlKFhyU3lzdGVtSWQgaWQsIFhySW5z
dGFuY2UgaW5zdGFuY2UsIFdvcmtRdWV1ZSYgcXVldWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjYWxsYmFjaykKLSAgICA6IG1fc3lzdGVtSWQoaWQpCi0gICAgLCBtX2luc3RhbmNlKGlu
c3RhbmNlKQotICAgICwgbV9xdWV1ZShxdWV1ZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gc3lzdGVtUHJvcGVydGllcyA9IGNyZWF0
ZVN0cnVjdHVyZTxYclN5c3RlbVByb3BlcnRpZXMsIFhSX1RZUEVfU1lTVEVNX1BST1BFUlRJRVM+
KCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0geHJHZXRTeXN0ZW1Qcm9wZXJ0aWVzKG1faW5zdGFu
Y2UsIG1fc3lzdGVtSWQsICZzeXN0ZW1Qcm9wZXJ0aWVzKTsKLSAgICAgICAgaWYgKFhSX1NVQ0NF
RURFRChyZXN1bHQpKQotICAgICAgICAgICAgbV9zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcg
PSBzeXN0ZW1Qcm9wZXJ0aWVzLnRyYWNraW5nUHJvcGVydGllcy5vcmllbnRhdGlvblRyYWNraW5n
ID09IFhSX1RSVUU7Ci0jaWYgIUxPR19ESVNBQkxFRAotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBMT0coWFIsICJ4ckdldFN5c3RlbVByb3BlcnRpZXMoKTogZXJyb3IgJXNcbiIsIHJlc3VsdFRv
U3RyaW5nKHJlc3VsdCwgbV9pbnN0YW5jZSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIExPRyhY
UiwgIkZvdW5kIFhSU3lzdGVtICVsdTogXCIlc1wiLCB2ZW5kb3IgSUQgJWRcbiIsIHN5c3RlbVBy
b3BlcnRpZXMuc3lzdGVtSWQsIHN5c3RlbVByb3BlcnRpZXMuc3lzdGVtTmFtZSwgc3lzdGVtUHJv
cGVydGllcy52ZW5kb3JJZCk7Ci0jZW5kaWYKIAotICAgICAgICBjb2xsZWN0U3VwcG9ydGVkU2Vz
c2lvbk1vZGVzKCk7Ci0gICAgICAgIGNvbGxlY3RDb25maWd1cmF0aW9uVmlld3MoKTsKKyAgICAg
ICAgVmVjdG9yPGNvbnN0IFhyQ29tcG9zaXRpb25MYXllckJhc2VIZWFkZXIqPiBsYXllcnM7CiAK
LSAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICAgICAg
YXV0byBmcmFtZUVuZEluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJGcmFtZUVuZEluZm8sIFhSX1RZ
UEVfRlJBTUVfRU5EX0lORk8+KCk7CisgICAgICAgIGZyYW1lRW5kSW5mby5kaXNwbGF5VGltZSA9
IHByZWRpY3RlZFRpbWU7CisgICAgICAgIGZyYW1lRW5kSW5mby5lbnZpcm9ubWVudEJsZW5kTW9k
ZSA9IFhSX0VOVklST05NRU5UX0JMRU5EX01PREVfT1BBUVVFOworICAgICAgICBmcmFtZUVuZElu
Zm8ubGF5ZXJDb3VudCA9IGxheWVycy5zaXplKCk7CisgICAgICAgIHJlc3VsdCA9IHhyRW5kRnJh
bWUobV9zZXNzaW9uLCAmZnJhbWVFbmRJbmZvKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChy
ZXN1bHQsICJ4ckVuZEZyYW1lIiwgbV9pbnN0YW5jZSk7CiAgICAgfSk7CiB9CiAKLURldmljZTo6
TGlzdE9mRW5hYmxlZEZlYXR1cmVzIE9wZW5YUkRldmljZTo6ZW51bWVyYXRlUmVmZXJlbmNlU3Bh
Y2VzKFhyU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKK1ZlY3RvcjxEZXZpY2U6OlZpZXdEYXRhPiBP
cGVuWFJEZXZpY2U6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0CiB7Ci0gICAgdWludDMy
X3QgcmVmZXJlbmNlU3BhY2VzQ291bnQ7Ci0gICAgYXV0byByZXN1bHQgPSB4ckVudW1lcmF0ZVJl
ZmVyZW5jZVNwYWNlcyhzZXNzaW9uLCAwLCAmcmVmZXJlbmNlU3BhY2VzQ291bnQsIG51bGxwdHIp
OwotICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJFbnVtZXJhdGVSZWZlcmVuY2VTcGFj
ZXMiLCBtX2luc3RhbmNlLCB7IH0pOwotCi0gICAgVmVjdG9yPFhyUmVmZXJlbmNlU3BhY2VUeXBl
PiByZWZlcmVuY2VTcGFjZXMocmVmZXJlbmNlU3BhY2VzQ291bnQpOwotICAgIHJlZmVyZW5jZVNw
YWNlcy5maWxsKFhSX1JFRkVSRU5DRV9TUEFDRV9UWVBFX1ZJRVcsIHJlZmVyZW5jZVNwYWNlc0Nv
dW50KTsKLSAgICByZXN1bHQgPSB4ckVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhzZXNzaW9uLCBy
ZWZlcmVuY2VTcGFjZXNDb3VudCwgJnJlZmVyZW5jZVNwYWNlc0NvdW50LCByZWZlcmVuY2VTcGFj
ZXMuZGF0YSgpKTsKLSAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyRW51bWVyYXRlUmVm
ZXJlbmNlU3BhY2VzIiwgbV9pbnN0YW5jZSwgeyB9KTsKLQotICAgIExpc3RPZkVuYWJsZWRGZWF0
dXJlcyBlbmFibGVkRmVhdHVyZXM7Ci0gICAgZm9yIChhdXRvJiByZWZlcmVuY2VTcGFjZSA6IHJl
ZmVyZW5jZVNwYWNlcykgewotICAgICAgICBzd2l0Y2ggKHJlZmVyZW5jZVNwYWNlKSB7Ci0gICAg
ICAgIGNhc2UgWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfVklFVzoKLSAgICAgICAgICAgIGVuYWJs
ZWRGZWF0dXJlcy5hcHBlbmQoUmVmZXJlbmNlU3BhY2VUeXBlOjpWaWV3ZXIpOwotICAgICAgICAg
ICAgTE9HKFhSLCAiXHREZXZpY2Ugc3VwcG9ydHMgVklFVyByZWZlcmVuY2Ugc3BhY2UiKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFhSX1JFRkVSRU5DRV9TUEFDRV9UWVBFX0xP
Q0FMOgotICAgICAgICAgICAgZW5hYmxlZEZlYXR1cmVzLmFwcGVuZChSZWZlcmVuY2VTcGFjZVR5
cGU6OkxvY2FsKTsKLSAgICAgICAgICAgIExPRyhYUiwgIlx0RGV2aWNlIHN1cHBvcnRzIExPQ0FM
IHJlZmVyZW5jZSBzcGFjZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgWFJf
UkVGRVJFTkNFX1NQQUNFX1RZUEVfU1RBR0U6Ci0gICAgICAgICAgICBlbmFibGVkRmVhdHVyZXMu
YXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWxGbG9vcik7Ci0gICAgICAgICAgICBlbmFi
bGVkRmVhdHVyZXMuYXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKTsKLSAg
ICAgICAgICAgIExPRyhYUiwgIlx0RGV2aWNlIHN1cHBvcnRzIFNUQUdFIHJlZmVyZW5jZSBzcGFj
ZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgWFJfUkVGRVJFTkNFX1NQQUNF
X1RZUEVfVU5CT1VOREVEX01TRlQ6Ci0gICAgICAgICAgICBlbmFibGVkRmVhdHVyZXMuYXBwZW5k
KFJlZmVyZW5jZVNwYWNlVHlwZTo6VW5ib3VuZGVkKTsKLSAgICAgICAgICAgIExPRyhYUiwgIlx0
RGV2aWNlIHN1cHBvcnRzIFVOQk9VTkRFRCByZWZlcmVuY2Ugc3BhY2UiKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IH0KLSAgICB9CisgICAgVmVjdG9yPERldmljZTo6Vmlld0RhdGE+IHZpZXdzOworICAgIGF1dG8g
Y29uZmlndXJhdGlvblR5cGUgPSB0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKG1vZGUpOwogCi0g
ICAgcmV0dXJuIGVuYWJsZWRGZWF0dXJlczsKKyAgICBpZiAoY29uZmlndXJhdGlvblR5cGUgPT0g
WFJfVklFV19DT05GSUdVUkFUSU9OX1RZUEVfUFJJTUFSWV9NT05PKQorICAgICAgICB2aWV3cy5h
cHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgLmV5ZSA9IEV5ZTo6Tm9uZSB9KTsKKyAgICBlbHNlIHsK
KyAgICAgICAgQVNTRVJUKGNvbmZpZ3VyYXRpb25UeXBlID09IFhSX1ZJRVdfQ09ORklHVVJBVElP
Tl9UWVBFX1BSSU1BUllfU1RFUkVPKTsKKyAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9
IHRydWUsIEV5ZTo6TGVmdCB9KTsKKyAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRy
dWUsIEV5ZTo6UmlnaHQgfSk7CisgICAgfQorICAgIHJldHVybiB2aWV3czsKIH0KIAotWHJTcGFj
ZSBPcGVuWFJEZXZpY2U6OmNyZWF0ZVJlZmVyZW5jZVNwYWNlKFhyUmVmZXJlbmNlU3BhY2VUeXBl
IHR5cGUpCitEZXZpY2U6Okxpc3RPZkVuYWJsZWRGZWF0dXJlcyBPcGVuWFJEZXZpY2U6OmNvbGxl
Y3RFbmFibGVkRmVhdHVyZXMoKQogewotICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09
ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7Ci0gICAgQVNTRVJUKG1fc2Vzc2lvbiAhPSBYUl9OVUxMX0hB
TkRMRSk7Ci0gICAgQVNTRVJUKG1faW5zdGFuY2UgIT0gWFJfTlVMTF9IQU5ETEUpOworICAgIERl
dmljZTo6TGlzdE9mRW5hYmxlZEZlYXR1cmVzIGZlYXR1cmVzOwogCi0gICAgWHJQb3NlZiBpZGVu
dGl0eVBvc2UgewotICAgICAgICAub3JpZW50YXRpb24gPSB7IC54ID0gMCwgLnkgPSAwLCAueiA9
IDAsIC53ID0gMS4wIH0sCi0gICAgICAgIC5wb3NpdGlvbiA9IHsgLnggPSAwLCAueSA9IDAsIC56
ID0gMCB9Ci0gICAgfTsKKyAgICAvLyBPcGVuWFIgcnVudGltZXMgbXVzdCBzdXBwb3J0IFZpZXdl
ciBhbmQgTG9jYWwgc3BhY2VzLgorICAgIGZlYXR1cmVzLmFwcGVuZChSZWZlcmVuY2VTcGFjZVR5
cGU6OlZpZXdlcik7CisgICAgZmVhdHVyZXMuYXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6TG9j
YWwpOwogCi0gICAgYXV0byBzcGFjZUNyZWF0ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJSZWZl
cmVuY2VTcGFjZUNyZWF0ZUluZm8sIFhSX1RZUEVfUkVGRVJFTkNFX1NQQUNFX0NSRUFURV9JTkZP
PigpOwotICAgIHNwYWNlQ3JlYXRlSW5mby5yZWZlcmVuY2VTcGFjZVR5cGUgPSB0eXBlOwotICAg
IHNwYWNlQ3JlYXRlSW5mby5wb3NlSW5SZWZlcmVuY2VTcGFjZSA9IGlkZW50aXR5UG9zZTsKKyAg
ICAvLyBNYXJrIExvY2FsRmxvb3IgYXMgc3VwcG9ydGVkIHJlZ2FyZGxlc3MgaWYgWFJfUkVGRVJF
TkNFX1NQQUNFX1RZUEVfU1RBR0UgaXMgYXZhaWxhYmxlLgorICAgIC8vIFRoZSBzcGVjIHVzZWQg
YSBlc3RpbWF0ZWQgaGVpZ2h0IGlmIHdlIGRvbid0IHByb3ZpZGUgYSBmbG9vciB0cmFuc2Zvcm0u
CisgICAgZmVhdHVyZXMuYXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWxGbG9vcik7CiAK
LSAgICBYclNwYWNlIHNwYWNlOwotICAgIGF1dG8gcmVzdWx0ID0geHJDcmVhdGVSZWZlcmVuY2VT
cGFjZShtX3Nlc3Npb24sICZzcGFjZUNyZWF0ZUluZm8sICZzcGFjZSk7Ci0gICAgUkVUVVJOX0lG
X0ZBSUxFRChyZXN1bHQsICJ4ckNyZWF0ZVJlZmVyZW5jZVNwYWNlIiwgbV9pbnN0YW5jZSwgWFJf
TlVMTF9IQU5ETEUpOworICAgIC8vIEZJWE1FOiBFbmFibGUgQm91bmRlZEZsb29yIHdoZW4gd2hl
IGltcGxlbWVudCB4ckdldFJlZmVyZW5jZVNwYWNlQm91bmRzUmVjdCBhbmQgdGhlIHJlbGF0ZWQg
Yml0cyBpbiB0aGUgRE9NLgorICAgIC8vIGVuYWJsZWRGZWF0dXJlcy5hcHBlbmQoUmVmZXJlbmNl
U3BhY2VUeXBlOjpCb3VuZGVkRmxvb3IpOwogCi0gICAgcmV0dXJuIHNwYWNlOworICAgIGlmICht
X2V4dGVuc2lvbnMuaXNFeHRlbnNpb25TdXBwb3J0ZWQoWFJfTVNGVF9VTkJPVU5ERURfUkVGRVJF
TkNFX1NQQUNFX0VYVEVOU0lPTl9OQU1FKSkKKyAgICAgICAgZmVhdHVyZXMuYXBwZW5kKFJlZmVy
ZW5jZVNwYWNlVHlwZTo6VW5ib3VuZGVkKTsKKworICAgIHJldHVybiBmZWF0dXJlczsKIH0KIAog
dm9pZCBPcGVuWFJEZXZpY2U6OmNvbGxlY3RTdXBwb3J0ZWRTZXNzaW9uTW9kZXMoKQpAQCAtMzMy
LDE1ICsyNzYsNyBAQCB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRlZFNlc3Npb25N
b2RlcygpCiAgICAgcmVzdWx0ID0geHJFbnVtZXJhdGVWaWV3Q29uZmlndXJhdGlvbnMobV9pbnN0
YW5jZSwgbV9zeXN0ZW1JZCwgdmlld0NvbmZpZ3VyYXRpb25Db3VudCwgJnZpZXdDb25maWd1cmF0
aW9uQ291bnQsIHZpZXdDb25maWd1cmF0aW9ucyk7CiAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1
bHQsICJ4ckVudW1lcmF0ZVZpZXdDb25maWd1cmF0aW9ucyIsIG1faW5zdGFuY2UpOwogCi0gICAg
Ly8gUmV0cmlldmluZyB0aGUgc3VwcG9ydGVkIHJlZmVyZW5jZSBzcGFjZXMgcmVxdWlyZXMgYW4g
aW5pdGlhbGl6ZWQgc2Vzc2lvbi4gVGhlcmUgaXMgbm8gbmVlZCB0byBpbml0aWFsaXplIGFsbCB0
aGUgZ3JhcGhpY3MKLSAgICAvLyBzdHVmZiBzbyB3ZSdsbCB1c2UgYSBoZWFkbGVzcyBzZXNzaW9u
IHRoYXQgd2lsbCBiZSBkaXNjYXJkZWQgYWZ0ZXIgZ2V0dGluZyB0aGUgaW5mbyB3ZSBuZWVkLgot
ICAgIGF1dG8gc2Vzc2lvbkNyZWF0ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTZXNzaW9uQ3Jl
YXRlSW5mbywgWFJfVFlQRV9TRVNTSU9OX0NSRUFURV9JTkZPPigpOwotICAgIHNlc3Npb25DcmVh
dGVJbmZvLnN5c3RlbUlkID0gbV9zeXN0ZW1JZDsKLSAgICBYclNlc3Npb24gZXBoZW1lcmFsU2Vz
c2lvbjsKLSAgICByZXN1bHQgPSB4ckNyZWF0ZVNlc3Npb24obV9pbnN0YW5jZSwgJnNlc3Npb25D
cmVhdGVJbmZvLCAmZXBoZW1lcmFsU2Vzc2lvbik7Ci0gICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1
bHQsICJ4ckNyZWF0ZVNlc3Npb24iLCBtX2luc3RhbmNlKTsKLQotICAgIExpc3RPZkVuYWJsZWRG
ZWF0dXJlcyBmZWF0dXJlcyA9IGVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhlcGhlbWVyYWxTZXNz
aW9uKTsKKyAgICBMaXN0T2ZFbmFibGVkRmVhdHVyZXMgZmVhdHVyZXMgPSBjb2xsZWN0RW5hYmxl
ZEZlYXR1cmVzKCk7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHZpZXdDb25maWd1cmF0
aW9uQ291bnQ7ICsraSkgewogICAgICAgICBhdXRvIHZpZXdDb25maWd1cmF0aW9uUHJvcGVydGll
cyA9IGNyZWF0ZVN0cnVjdHVyZTxYclZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllcywgWFJfVFlQ
RV9WSUVXX0NPTkZJR1VSQVRJT05fUFJPUEVSVElFUz4oKTsKICAgICAgICAgcmVzdWx0ID0geHJH
ZXRWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMobV9pbnN0YW5jZSwgbV9zeXN0ZW1JZCwgdmll
d0NvbmZpZ3VyYXRpb25zW2ldLCAmdmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzKTsKQEAgLTM2
MSw3ICsyOTcsNiBAQCB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRlZFNlc3Npb25N
b2RlcygpCiAgICAgICAgIH07CiAgICAgICAgIG1fdmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVz
LmFkZChjb25maWdUeXBlLCBXVEZNb3ZlKHZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllcykpOwog
ICAgIH0KLSAgICB4ckRlc3Ryb3lTZXNzaW9uKGVwaGVtZXJhbFNlc3Npb24pOwogfQogCiB2b2lk
IE9wZW5YUkRldmljZTo6Y29sbGVjdENvbmZpZ3VyYXRpb25WaWV3cygpCkBAIC0zOTAsMTEzICsz
MjUsMjYgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OmNvbGxlY3RDb25maWd1cmF0aW9uVmlld3MoKQog
ICAgIH0KIH0KIAotWHJWaWV3Q29uZmlndXJhdGlvblR5cGUgdG9YclZpZXdDb25maWd1cmF0aW9u
VHlwZShTZXNzaW9uTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2Ug
U2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyOgotICAgICAgICByZXR1cm4gWFJfVklFV19DT05GSUdV
UkFUSU9OX1RZUEVfUFJJTUFSWV9TVEVSRU87Ci0gICAgY2FzZSBTZXNzaW9uTW9kZTo6SW5saW5l
OgotICAgIGNhc2UgU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZUFyOgotICAgICAgICByZXR1cm4gWFJf
VklFV19DT05GSUdVUkFUSU9OX1RZUEVfUFJJTUFSWV9NT05POwotICAgIH07Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFhSX1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BS
SU1BUllfTU9OTzsKLX0KLQotc3RhdGljIGJvb2wgaXNTZXNzaW9uQWN0aXZlKFhyU2Vzc2lvblN0
YXRlIHN0YXRlKQotewotICAgIHJldHVybiBzdGF0ZSA9PSBYUl9TRVNTSU9OX1NUQVRFX1ZJU0lC
TEUgfHwgc3RhdGUgPT0gWFJfU0VTU0lPTl9TVEFURV9GT0NVU0VEOwotfQotCi1zdGF0aWMgYm9v
bCBpc1Nlc3Npb25SZWFkeShYclNlc3Npb25TdGF0ZSBzdGF0ZSkKLXsKLSAgICByZXR1cm4gc3Rh
dGUgPj0gWFJfU0VTU0lPTl9TVEFURV9SRUFEWSAgJiYgc3RhdGUgPCBYUl9TRVNTSU9OX1NUQVRF
X1NUT1BQSU5HOwotfQotCi1XZWJDb3JlOjpJbnRTaXplIE9wZW5YUkRldmljZTo6cmVjb21tZW5k
ZWRSZXNvbHV0aW9uKFNlc3Npb25Nb2RlIG1vZGUpCi17Ci0gICAgYXV0byBjb25maWdUeXBlID0g
dG9YclZpZXdDb25maWd1cmF0aW9uVHlwZShtb2RlKTsKLSAgICBhdXRvIHZpZXdzSXRlcmF0b3Ig
PSBtX2NvbmZpZ3VyYXRpb25WaWV3cy5maW5kKGNvbmZpZ1R5cGUpOwotICAgIGlmICh2aWV3c0l0
ZXJhdG9yICE9IG1fY29uZmlndXJhdGlvblZpZXdzLmVuZCgpKQotICAgICAgICByZXR1cm4geyBz
dGF0aWNfY2FzdDxpbnQ+KHZpZXdzSXRlcmF0b3ItPnZhbHVlWzBdLnJlY29tbWVuZGVkSW1hZ2VS
ZWN0V2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdzSXRlcmF0b3ItPnZhbHVlWzBdLnJlY29t
bWVuZGVkSW1hZ2VSZWN0SGVpZ2h0KSB9OwotICAgIHJldHVybiBEZXZpY2U6OnJlY29tbWVuZGVk
UmVzb2x1dGlvbihtb2RlKTsKLX0KLQotdm9pZCBPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVUcmFj
a2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSBtb2RlKQotewotICAgIG1fcXVldWUuZGlzcGF0
Y2goW3RoaXMsIG1vZGVdKCkgewotICAgICAgICBBU1NFUlQobV9pbnN0YW5jZSAhPSBYUl9OVUxM
X0hBTkRMRSk7Ci0gICAgICAgIEFTU0VSVChtX3Nlc3Npb24gPT0gWFJfTlVMTF9IQU5ETEUpOwot
Ci0gICAgICAgIG1fY3VycmVudFZpZXdDb25maWd1cmF0aW9uVHlwZSA9IHRvWHJWaWV3Q29uZmln
dXJhdGlvblR5cGUobW9kZSk7Ci0gICAgICAgIEFTU0VSVChtX2NvbmZpZ3VyYXRpb25WaWV3cy5j
b250YWlucyhtX2N1cnJlbnRWaWV3Q29uZmlndXJhdGlvblR5cGUpKTsKLQotICAgICAgICAvLyBD
cmVhdGUgdGhlIHNlc3Npb24uCi0gICAgICAgIGF1dG8gc2Vzc2lvbkNyZWF0ZUluZm8gPSBjcmVh
dGVTdHJ1Y3R1cmU8WHJTZXNzaW9uQ3JlYXRlSW5mbywgWFJfVFlQRV9TRVNTSU9OX0NSRUFURV9J
TkZPPigpOwotICAgICAgICBzZXNzaW9uQ3JlYXRlSW5mby5zeXN0ZW1JZCA9IG1fc3lzdGVtSWQ7
Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0geHJDcmVhdGVTZXNzaW9uKG1faW5zdGFuY2UsICZzZXNz
aW9uQ3JlYXRlSW5mbywgJm1fc2Vzc2lvbik7Ci0gICAgICAgIFJFVFVSTl9JRl9GQUlMRUQocmVz
dWx0LCAieHJFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMiLCBtX2luc3RhbmNl
KTsKLQotICAgICAgICBtX2xvY2FsU3BhY2UgPSBjcmVhdGVSZWZlcmVuY2VTcGFjZShYUl9SRUZF
UkVOQ0VfU1BBQ0VfVFlQRV9MT0NBTCk7Ci0gICAgICAgIG1fdmlld1NwYWNlID0gY3JlYXRlUmVm
ZXJlbmNlU3BhY2UoWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfVklFVyk7Ci0gICAgfSk7Ci19Ci0K
LXZvaWQgT3BlblhSRGV2aWNlOjpyZXNldFNlc3Npb24oKQotewotICAgIEFTU0VSVCgmUnVuTG9v
cDo6Y3VycmVudCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7Ci0gICAgaWYgKG1fc2Vzc2lvbiAh
PSBYUl9OVUxMX0hBTkRMRSkgewotICAgICAgICB4ckRlc3Ryb3lTZXNzaW9uKG1fc2Vzc2lvbik7
Ci0gICAgICAgIG1fc2Vzc2lvbiA9IFhSX05VTExfSEFORExFOwotICAgIH0KLSAgICBtX3Nlc3Np
b25TdGF0ZSA9IFhSX1NFU1NJT05fU1RBVEVfVU5LTk9XTjsKLX0KLQotdm9pZCBPcGVuWFJEZXZp
Y2U6OmhhbmRsZVNlc3Npb25TdGF0ZUNoYW5nZSgpCitYclNwYWNlIE9wZW5YUkRldmljZTo6Y3Jl
YXRlUmVmZXJlbmNlU3BhY2UoWHJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKIHsKICAgICBBU1NF
UlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9xdWV1ZS5ydW5Mb29wKCkpOwotICAgIGlmICht
X3Nlc3Npb25TdGF0ZSA9PSBYUl9TRVNTSU9OX1NUQVRFX1NUT1BQSU5HKSB7Ci0gICAgICAgIC8v
IFRoZSBhcHBsaWNhdGlvbiBzaG91bGQgZXhpdCB0aGUgcmVuZGVyIGxvb3AgYW5kIGNhbGwgeHJF
bmRTZXNzaW9uCi0gICAgICAgIGVuZFNlc3Npb24oKTsKLSAgICB9IGVsc2UgaWYgKG1fc2Vzc2lv
blN0YXRlID09IFhSX1NFU1NJT05fU1RBVEVfUkVBRFkpIHsKLSAgICAgICAgLy8gVGhlIGFwcGxp
Y2F0aW9uIGlzIHJlYWR5IHRvIGNhbGwgeHJCZWdpblNlc3Npb24uCi0gICAgICAgIGJlZ2luU2Vz
c2lvbigpOwotICAgIH0KLX0KLQotdm9pZCBPcGVuWFJEZXZpY2U6OnNodXREb3duVHJhY2tpbmdB
bmRSZW5kZXJpbmcoKQotewotICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXNdKCkgewotICAgICAg
ICBpZiAobV9zZXNzaW9uID09IFhSX05VTExfSEFORExFKQotICAgICAgICAgICAgcmV0dXJuOwor
ICAgIEFTU0VSVChtX3Nlc3Npb24gIT0gWFJfTlVMTF9IQU5ETEUpOworICAgIEFTU0VSVChtX2lu
c3RhbmNlICE9IFhSX05VTExfSEFORExFKTsKIAotICAgICAgICAvLyB4clJlcXVlc3RFeGl0U2Vz
c2lvbigpIHdpbGwgdHJhbnNpdGlvbiB0aGUgc2Vzc2lvbiB0byBTVE9QUEVEIHN0YXRlLgotICAg
ICAgICAvLyBJZiB0aGUgc2Vzc2lvbiB3YXMgbm90IHJ1bm5pbmcgd2UgaGF2ZSB0byByZXNldCB0
aGUgc2Vzc2lvbiBvdXJzZWx2ZXMuCi0gICAgICAgIGlmIChYUl9GQUlMRUQoeHJSZXF1ZXN0RXhp
dFNlc3Npb24obV9zZXNzaW9uKSkpIHsKLSAgICAgICAgICAgIHJlc2V0U2Vzc2lvbigpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgWHJQb3NlZiBpZGVudGl0eVBvc2Ugewor
ICAgICAgICAub3JpZW50YXRpb24gPSB7IC54ID0gMCwgLnkgPSAwLCAueiA9IDAsIC53ID0gMS4w
IH0sCisgICAgICAgIC5wb3NpdGlvbiA9IHsgLnggPSAwLCAueSA9IDAsIC56ID0gMCB9CisgICAg
fTsKIAotICAgICAgICAvLyBPcGVuWFIgbmVlZHMgdG8gd2FpdCBmb3IgdGhlIFhSX1NFU1NJT05f
U1RBVEVfU1RPUFBJTkcgc3RhdGUgdG8gcHJvcGVybHkgZW5kIHRoZSBzZXNzaW9uLgotICAgICAg
ICB3YWl0VW50aWxTdG9wcGluZygpOwotICAgIH0pOwotfQorICAgIGF1dG8gc3BhY2VDcmVhdGVJ
bmZvID0gY3JlYXRlU3RydWN0dXJlPFhyUmVmZXJlbmNlU3BhY2VDcmVhdGVJbmZvLCBYUl9UWVBF
X1JFRkVSRU5DRV9TUEFDRV9DUkVBVEVfSU5GTz4oKTsKKyAgICBzcGFjZUNyZWF0ZUluZm8ucmVm
ZXJlbmNlU3BhY2VUeXBlID0gdHlwZTsKKyAgICBzcGFjZUNyZWF0ZUluZm8ucG9zZUluUmVmZXJl
bmNlU3BhY2UgPSBpZGVudGl0eVBvc2U7CiAKLXZvaWQgT3BlblhSRGV2aWNlOjppbml0aWFsaXpl
UmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlIHNwYWNlVHlwZSkK
LXsKLSAgICBpZiAoKHNwYWNlVHlwZSA9PSBSZWZlcmVuY2VTcGFjZVR5cGU6OkxvY2FsRmxvb3Ig
fHwgc3BhY2VUeXBlID09IFJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKSAmJiBtX3N0
YWdlU3BhY2UgPT0gWFJfTlVMTF9IQU5ETEUpCi0gICAgICAgIG1fc3RhZ2VTcGFjZSA9IGNyZWF0
ZVJlZmVyZW5jZVNwYWNlKFhSX1JFRkVSRU5DRV9TUEFDRV9UWVBFX1NUQUdFKTsKLX0KKyAgICBY
clNwYWNlIHNwYWNlOworICAgIGF1dG8gcmVzdWx0ID0geHJDcmVhdGVSZWZlcmVuY2VTcGFjZSht
X3Nlc3Npb24sICZzcGFjZUNyZWF0ZUluZm8sICZzcGFjZSk7CisgICAgUkVUVVJOX0lGX0ZBSUxF
RChyZXN1bHQsICJ4ckNyZWF0ZVJlZmVyZW5jZVNwYWNlIiwgbV9pbnN0YW5jZSwgWFJfTlVMTF9I
QU5ETEUpOwogCi12b2lkIE9wZW5YUkRldmljZTo6d2FpdFVudGlsU3RvcHBpbmcoKQotewotICAg
IEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7Ci0gICAg
cG9sbEV2ZW50cygpOwotICAgIGlmIChtX3Nlc3Npb25TdGF0ZSA+PSBYUl9TRVNTSU9OX1NUQVRF
X1NUT1BQSU5HKQotICAgICAgICByZXR1cm47Ci0gICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpc10o
KSB7Ci0gICAgICAgIHdhaXRVbnRpbFN0b3BwaW5nKCk7Ci0gICAgfSk7CisgICAgcmV0dXJuIHNw
YWNlOwogfQogCiB2b2lkIE9wZW5YUkRldmljZTo6cG9sbEV2ZW50cygpCkBAIC01NTcsMTE1ICs0
MDUsNDEgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OmVuZFNlc3Npb24oKQogICAgIH0pOwogfQogCi1z
dGF0aWMgRGV2aWNlOjpGcmFtZURhdGE6OlBvc2UgWHJQb3NlZlRvUG9zZShYclBvc2VmIHBvc2Up
Cit2b2lkIE9wZW5YUkRldmljZTo6cmVzZXRTZXNzaW9uKCkKIHsKLSAgICBEZXZpY2U6OkZyYW1l
RGF0YTo6UG9zZSByZXN1bHQ7Ci0gICAgcmVzdWx0Lm9yaWVudGF0aW9uID0geyBwb3NlLm9yaWVu
dGF0aW9uLngsIHBvc2Uub3JpZW50YXRpb24ueSwgcG9zZS5vcmllbnRhdGlvbi56LCBwb3NlLm9y
aWVudGF0aW9uLncgfTsKLSAgICByZXN1bHQucG9zaXRpb24gPSB7IHBvc2UucG9zaXRpb24ueCwg
cG9zZS5wb3NpdGlvbi55LCBwb3NlLnBvc2l0aW9uLnogfTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQorICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7
CisgICAgaWYgKG1fc2Vzc2lvbiAhPSBYUl9OVUxMX0hBTkRMRSkgeworICAgICAgICB4ckRlc3Ry
b3lTZXNzaW9uKG1fc2Vzc2lvbik7CisgICAgICAgIG1fc2Vzc2lvbiA9IFhSX05VTExfSEFORExF
OworICAgIH0KKyAgICBtX3Nlc3Npb25TdGF0ZSA9IFhSX1NFU1NJT05fU1RBVEVfVU5LTk9XTjsK
IAotc3RhdGljIERldmljZTo6RnJhbWVEYXRhOjpWaWV3IHhyVmlld1RvUG9zZShYclZpZXcgdmll
dykKLXsKLSAgICBEZXZpY2U6OkZyYW1lRGF0YTo6VmlldyBwb3NlOwotICAgIHBvc2UucHJvamVj
dGlvbiA9IERldmljZTo6RnJhbWVEYXRhOjpGb3YgeyB2aWV3LmZvdi5hbmdsZVVwLCB2aWV3LmZv
di5hbmdsZURvd24sIHZpZXcuZm92LmFuZ2xlTGVmdCwgdmlldy5mb3YuYW5nbGVSaWdodCB9Owot
ICAgIHBvc2Uub2Zmc2V0ID0gWHJQb3NlZlRvUG9zZSh2aWV3LnBvc2UpOwotICAgIHJldHVybiBw
b3NlOworICAgIC8vIGRlYWxsb2NhdGUgZ3JhcGhpYyByZXNvdXJjZXMKKyAgICBtX2VnbC5yZXNl
dCgpOwogfQogCi12b2lkIE9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNh
bGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE9wZW5YUkRldmljZTo6aGFuZGxlU2Vzc2lvblN0YXRl
Q2hhbmdlKCkKIHsKLSAgICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSgpIG11dGFibGUgewotICAgICAgICBwb2xsRXZlbnRzKCk7Ci0gICAgICAg
IGlmICghaXNTZXNzaW9uUmVhZHkobV9zZXNzaW9uU3RhdGUpKSB7Ci0gICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewot
ICAgICAgICAgICAgICAgIC8vIERldmljZSBub3QgcmVhZHkgb3Igc3RvcHBpbmcuIFJlcG9ydCBm
cmFtZURhdGEgd2l0aCBpbnZhbGlkIHRyYWNraW5nLgotICAgICAgICAgICAgICAgIGNhbGxiYWNr
KHsgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGF1dG8gZnJhbWVTdGF0ZSA9IGNyZWF0ZVN0cnVjdHVyZTxYckZyYW1lU3RhdGUs
IFhSX1RZUEVfRlJBTUVfU1RBVEU+KCk7Ci0gICAgICAgIGF1dG8gZnJhbWVXYWl0SW5mbyA9IGNy
ZWF0ZVN0cnVjdHVyZTxYckZyYW1lV2FpdEluZm8sIFhSX1RZUEVfRlJBTUVfV0FJVF9JTkZPPigp
OwotICAgICAgICBhdXRvIHJlc3VsdCA9IHhyV2FpdEZyYW1lKG1fc2Vzc2lvbiwgJmZyYW1lV2Fp
dEluZm8sICZmcmFtZVN0YXRlKTsKLSAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4
cldhaXRGcmFtZSIsIG1faW5zdGFuY2UpOwotICAgICAgICBYclRpbWUgcHJlZGljdGVkVGltZSA9
IGZyYW1lU3RhdGUucHJlZGljdGVkRGlzcGxheVRpbWU7Ci0KLSAgICAgICAgYXV0byBmcmFtZUJl
Z2luSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYckZyYW1lQmVnaW5JbmZvLCBYUl9UWVBFX0ZSQU1F
X0JFR0lOX0lORk8+KCk7Ci0gICAgICAgIHJlc3VsdCA9IHhyQmVnaW5GcmFtZShtX3Nlc3Npb24s
ICZmcmFtZUJlZ2luSW5mbyk7Ci0gICAgICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJC
ZWdpbkZyYW1lIiwgbV9pbnN0YW5jZSk7Ci0KLSAgICAgICAgRGV2aWNlOjpGcmFtZURhdGEgZnJh
bWVEYXRhOwotICAgICAgICBmcmFtZURhdGEucHJlZGljdGVkRGlzcGxheVRpbWUgPSBmcmFtZVN0
YXRlLnByZWRpY3RlZERpc3BsYXlUaW1lOwotCi0gICAgICAgIGlmIChpc1Nlc3Npb25BY3RpdmUo
bV9zZXNzaW9uU3RhdGUpKSB7Ci0gICAgICAgICAgICAvLyBRdWVyeSBoZWFkIGxvY2F0aW9uCi0g
ICAgICAgICAgICBhdXRvIGxvY2F0aW9uID0gY3JlYXRlU3RydWN0dXJlPFhyU3BhY2VMb2NhdGlv
biwgWFJfVFlQRV9TUEFDRV9MT0NBVElPTj4oKTsKLSAgICAgICAgICAgIHhyTG9jYXRlU3BhY2Uo
bV92aWV3U3BhY2UsIG1fbG9jYWxTcGFjZSwgZnJhbWVTdGF0ZS5wcmVkaWN0ZWREaXNwbGF5VGlt
ZSwgJmxvY2F0aW9uKTsKLSAgICAgICAgICAgIGZyYW1lRGF0YS5pc1RyYWNraW5nVmFsaWQgPSBs
b2NhdGlvbi5sb2NhdGlvbkZsYWdzICYgWFJfU1BBQ0VfTE9DQVRJT05fT1JJRU5UQVRJT05fVkFM
SURfQklUOwotICAgICAgICAgICAgZnJhbWVEYXRhLmlzUG9zaXRpb25WYWxpZCA9IGxvY2F0aW9u
LmxvY2F0aW9uRmxhZ3MgJiBYUl9TUEFDRV9MT0NBVElPTl9QT1NJVElPTl9WQUxJRF9CSVQ7Ci0g
ICAgICAgICAgICBmcmFtZURhdGEuaXNQb3NpdGlvbkVtdWxhdGVkID0gbG9jYXRpb24ubG9jYXRp
b25GbGFncyAmIFhSX1NQQUNFX0xPQ0FUSU9OX1BPU0lUSU9OX1RSQUNLRURfQklUOwotCi0gICAg
ICAgICAgICBpZiAoZnJhbWVEYXRhLmlzVHJhY2tpbmdWYWxpZCkKLSAgICAgICAgICAgICAgICBm
cmFtZURhdGEub3JpZ2luID0gWHJQb3NlZlRvUG9zZShsb2NhdGlvbi5wb3NlKTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgQVNTRVJUKG1fY29uZmlndXJhdGlvblZpZXdzLmNvbnRhaW5zKG1f
Y3VycmVudFZpZXdDb25maWd1cmF0aW9uVHlwZSkpOwotICAgICAgICAgICAgY29uc3QgYXV0byYg
Y29uZmlndXJhdGlvblZpZXcgPSBtX2NvbmZpZ3VyYXRpb25WaWV3cy5nZXQobV9jdXJyZW50Vmll
d0NvbmZpZ3VyYXRpb25UeXBlKTsKLQotICAgICAgICAgICAgYXV0byB2aWV3TG9jYXRlSW5mbyA9
IGNyZWF0ZVN0cnVjdHVyZTxYclZpZXdMb2NhdGVJbmZvLCBYUl9UWVBFX1ZJRVdfTE9DQVRFX0lO
Rk8+KCk7Ci0gICAgICAgICAgICB2aWV3TG9jYXRlSW5mby5kaXNwbGF5VGltZSA9IHByZWRpY3Rl
ZFRpbWU7Ci0gICAgICAgICAgICB2aWV3TG9jYXRlSW5mby5zcGFjZSA9IG1fbG9jYWxTcGFjZTsK
LQotICAgICAgICAgICAgdWludDMyX3Qgdmlld0NvdW50ID0gY29uZmlndXJhdGlvblZpZXcuc2l6
ZSgpOwotICAgICAgICAgICAgVmVjdG9yPFhyVmlldz4gdmlld3Modmlld0NvdW50LCBbXSB7Ci0g
ICAgICAgICAgICAgICAgWHJWaWV3IG9iamVjdDsKLSAgICAgICAgICAgICAgICBzdGQ6Om1lbXNl
dCgmb2JqZWN0LCAwLCBzaXplb2YoWHJWaWV3KSk7Ci0gICAgICAgICAgICAgICAgb2JqZWN0LnR5
cGUgPSBYUl9UWVBFX1ZJRVc7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKLSAgICAg
ICAgICAgIH0oKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gdmlld1N0YXRlID0gY3JlYXRlU3RydWN0
dXJlPFhyVmlld1N0YXRlLCBYUl9UWVBFX1ZJRVdfU1RBVEU+KCk7Ci0gICAgICAgICAgICB1aW50
MzJfdCB2aWV3Q291bnRPdXRwdXQ7Ci0gICAgICAgICAgICByZXN1bHQgPSB4ckxvY2F0ZVZpZXdz
KG1fc2Vzc2lvbiwgJnZpZXdMb2NhdGVJbmZvLCAmdmlld1N0YXRlLCB2aWV3Q291bnQsICZ2aWV3
Q291bnRPdXRwdXQsIHZpZXdzLmRhdGEoKSk7Ci0gICAgICAgICAgICBpZiAoIVhSX0ZBSUxFRChy
ZXN1bHQpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiB2aWV3IDogdmlld3MpCi0gICAg
ICAgICAgICAgICAgICAgIGZyYW1lRGF0YS52aWV3cy5hcHBlbmQoeHJWaWV3VG9Qb3NlKHZpZXcp
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gUXVlcnkgZmxvb3IgdHJhbnNmb3Jt
Ci0gICAgICAgICAgICBpZiAobV9zdGFnZVNwYWNlICE9IFhSX05VTExfSEFORExFKSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byBmbG9vckxvY2F0aW9uID0gY3JlYXRlU3RydWN0dXJlPFhyU3BhY2VM
b2NhdGlvbiwgWFJfVFlQRV9TUEFDRV9MT0NBVElPTj4oKTsKLSAgICAgICAgICAgICAgICB4ckxv
Y2F0ZVNwYWNlKG1fc3RhZ2VTcGFjZSwgbV9sb2NhbFNwYWNlLCBmcmFtZVN0YXRlLnByZWRpY3Rl
ZERpc3BsYXlUaW1lLCAmZmxvb3JMb2NhdGlvbik7Ci0gICAgICAgICAgICAgICAgZnJhbWVEYXRh
LmZsb29yVHJhbnNmb3JtID0geyBYclBvc2VmVG9Qb3NlKGZsb29yTG9jYXRpb24ucG9zZSkgfTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2Zy
YW1lRGF0YSA9IFdURk1vdmUoZnJhbWVEYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZnJhbWVEYXRhKSk7
Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGF1dG8gZnJhbWVFbmRJbmZvID0gY3JlYXRlU3RydWN0
dXJlPFhyRnJhbWVFbmRJbmZvLCBYUl9UWVBFX0ZSQU1FX0VORF9JTkZPPigpOwotICAgICAgICBm
cmFtZUVuZEluZm8uZGlzcGxheVRpbWUgPSBwcmVkaWN0ZWRUaW1lOwotICAgICAgICBmcmFtZUVu
ZEluZm8uZW52aXJvbm1lbnRCbGVuZE1vZGUgPSBYUl9FTlZJUk9OTUVOVF9CTEVORF9NT0RFX09Q
QVFVRTsKLSAgICAgICAgZnJhbWVFbmRJbmZvLmxheWVyQ291bnQgPSAwOwotICAgICAgICByZXN1
bHQgPSB4ckVuZEZyYW1lKG1fc2Vzc2lvbiwgJmZyYW1lRW5kSW5mbyk7Ci0gICAgICAgIFJFVFVS
Tl9JRl9GQUlMRUQocmVzdWx0LCAieHJFbmRGcmFtZSIsIG1faW5zdGFuY2UpOwotICAgIH0pOwor
ICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7Cisg
ICAgaWYgKG1fc2Vzc2lvblN0YXRlID09IFhSX1NFU1NJT05fU1RBVEVfU1RPUFBJTkcpIHsKKyAg
ICAgICAgLy8gVGhlIGFwcGxpY2F0aW9uIHNob3VsZCBleGl0IHRoZSByZW5kZXIgbG9vcCBhbmQg
Y2FsbCB4ckVuZFNlc3Npb24KKyAgICAgICAgZW5kU2Vzc2lvbigpOworICAgIH0gZWxzZSBpZiAo
bV9zZXNzaW9uU3RhdGUgPT0gWFJfU0VTU0lPTl9TVEFURV9SRUFEWSkgeworICAgICAgICAvLyBU
aGUgYXBwbGljYXRpb24gaXMgcmVhZHkgdG8gY2FsbCB4ckJlZ2luU2Vzc2lvbi4KKyAgICAgICAg
YmVnaW5TZXNzaW9uKCk7CisgICAgfQogfQogCi1WZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gT3Bl
blhSRGV2aWNlOjp2aWV3cyhTZXNzaW9uTW9kZSBtb2RlKSBjb25zdAotewotICAgIFZlY3RvcjxE
ZXZpY2U6OlZpZXdEYXRhPiB2aWV3czsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb25UeXBlID0gdG9Y
clZpZXdDb25maWd1cmF0aW9uVHlwZShtb2RlKTsKIAotICAgIGlmIChjb25maWd1cmF0aW9uVHlw
ZSA9PSBYUl9WSUVXX0NPTkZJR1VSQVRJT05fVFlQRV9QUklNQVJZX01PTk8pCi0gICAgICAgIHZp
ZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCAuZXllID0gRXllOjpOb25lIH0pOwotICAgIGVs
c2UgewotICAgICAgICBBU1NFUlQoY29uZmlndXJhdGlvblR5cGUgPT0gWFJfVklFV19DT05GSUdV
UkFUSU9OX1RZUEVfUFJJTUFSWV9TVEVSRU8pOwotICAgICAgICB2aWV3cy5hcHBlbmQoeyAuYWN0
aXZlID0gdHJ1ZSwgRXllOjpMZWZ0IH0pOwotICAgICAgICB2aWV3cy5hcHBlbmQoeyAuYWN0aXZl
ID0gdHJ1ZSwgRXllOjpSaWdodCB9KTsKLSAgICB9Ci0gICAgcmV0dXJuIHZpZXdzOwordm9pZCBP
cGVuWFJEZXZpY2U6OndhaXRVbnRpbFN0b3BwaW5nKCkKK3sKKyAgICBBU1NFUlQoJlJ1bkxvb3A6
OmN1cnJlbnQoKSA9PSAmbV9xdWV1ZS5ydW5Mb29wKCkpOworICAgIHBvbGxFdmVudHMoKTsKKyAg
ICBpZiAobV9zZXNzaW9uU3RhdGUgPj0gWFJfU0VTU0lPTl9TVEFURV9TVE9QUElORykKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXNdKCkgeworICAgICAgICB3YWl0
VW50aWxTdG9wcGluZygpOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBQbGF0Zm9ybVhS
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1Y
Uk9wZW5YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJP
cGVuWFIuaAppbmRleCAwMmQxOTRlNjI3MWViYTZiMmE4NDQ4NzAyNzk1YTYwOWVhMjkwNzNkLi5m
ZjY4MTg1YjdiNDMxOTE0ZTU3YWI1MjI0NjhjYzExNjZjMjQ5OWMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKQEAgLTIw
LDE1ICsyMCwxOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoV0VCWFIpICYmIFVTRShP
UEVOWFIpCisKKyNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKKyNpbmNsdWRlICJPcGVuWFJVdGls
cy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0KLSNpbmNsdWRlIDxvcGVueHIvb3BlbnhyLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5o
PgogCiBuYW1lc3BhY2UgUGxhdGZvcm1YUiB7CiAKK2NsYXNzIE9wZW5YUkV4dGVuc2lvbnM7Citj
bGFzcyBPcGVuWFJTd2FwY2hhaW47CisKIC8vIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lz
dHJ5L09wZW5YUi9zcGVjcy8xLjAvaHRtbC94cnNwZWMuaHRtbCNzeXN0ZW0KIC8vIEEgc3lzdGVt
IHJlcHJlc2VudHMgYSBjb2xsZWN0aW9uIG9mIHJlbGF0ZWQgZGV2aWNlcyBpbiB0aGUgcnVudGlt
ZSwgb2Z0ZW4gbWFkZSB1cCBvZiBzZXZlcmFsIGluZGl2aWR1YWwKIC8vIGhhcmR3YXJlIGNvbXBv
bmVudHMgd29ya2luZyB0b2dldGhlciB0byBlbmFibGUgWFIgZXhwZXJpZW5jZXMuCkBAIC00Myw0
NiArNDcsNDMgQEAgbmFtZXNwYWNlIFBsYXRmb3JtWFIgewogLy8gdGhlIFhSU3lzdGVtIGlzIGJh
c2ljYWxseSB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBXZWJYUiBBUEkgYXZhaWxhYmxlIHZpYSB0
aGUgTmF2aWdhdG9yIG9iamVjdC4KIGNsYXNzIE9wZW5YUkRldmljZSBmaW5hbCA6IHB1YmxpYyBE
ZXZpY2UgewogcHVibGljOgotICAgIE9wZW5YUkRldmljZShYclN5c3RlbUlkLCBYckluc3RhbmNl
LCBXb3JrUXVldWUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIFhyU3lzdGVt
SWQgeHJTeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KKyAgICBPcGVuWFJE
ZXZpY2UoWHJJbnN0YW5jZSwgWHJTeXN0ZW1JZCwgV29ya1F1ZXVlJiwgY29uc3QgT3BlblhSRXh0
ZW5zaW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCBjb2xsZWN0U3VwcG9ydGVkU2Vzc2lvbk1vZGVzKCk7Ci0gICAgdm9pZCBjb2xsZWN0Q29u
ZmlndXJhdGlvblZpZXdzKCk7Ci0KLSAgICBMaXN0T2ZFbmFibGVkRmVhdHVyZXMgZW51bWVyYXRl
UmVmZXJlbmNlU3BhY2VzKFhyU2Vzc2lvbiYpIGNvbnN0OwotICAgIFhyU3BhY2UgY3JlYXRlUmVm
ZXJlbmNlU3BhY2UoWHJSZWZlcmVuY2VTcGFjZVR5cGUpOwotCisgICAgLy8gUGxhdGZvcm1YUjo6
RGV2aWNlCiAgICAgV2ViQ29yZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24oU2Vzc2lv
bk1vZGUpIGZpbmFsOwotCiAgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmco
U2Vzc2lvbk1vZGUpIGZpbmFsOwogICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmlu
ZygpIGZpbmFsOwogICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6
OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0
ZG93bk5vdGlmaWNhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lk
IHdhaXRVbnRpbFN0b3BwaW5nKCk7CisgICAgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1l
Q2FsbGJhY2smJikgZmluYWw7CisgICAgVmVjdG9yPFZpZXdEYXRhPiB2aWV3cyhTZXNzaW9uTW9k
ZSkgY29uc3QgZmluYWw7CiAKKyAgICAvLyBDdXN0b20gbWV0aG9kcworICAgIExpc3RPZkVuYWJs
ZWRGZWF0dXJlcyBjb2xsZWN0RW5hYmxlZEZlYXR1cmVzKCk7CisgICAgdm9pZCBjb2xsZWN0U3Vw
cG9ydGVkU2Vzc2lvbk1vZGVzKCk7CisgICAgdm9pZCBjb2xsZWN0Q29uZmlndXJhdGlvblZpZXdz
KCk7CisgICAgWHJTcGFjZSBjcmVhdGVSZWZlcmVuY2VTcGFjZShYclJlZmVyZW5jZVNwYWNlVHlw
ZSk7CiAgICAgdm9pZCBwb2xsRXZlbnRzKCk7CiAgICAgWHJSZXN1bHQgYmVnaW5TZXNzaW9uKCk7
CiAgICAgdm9pZCBlbmRTZXNzaW9uKCk7CiAgICAgdm9pZCByZXNldFNlc3Npb24oKTsKICAgICB2
b2lkIGhhbmRsZVNlc3Npb25TdGF0ZUNoYW5nZSgpOworICAgIHZvaWQgd2FpdFVudGlsU3RvcHBp
bmcoKTsKIAotICAgIHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZp
bmFsOwotCi0gICAgVmVjdG9yPFZpZXdEYXRhPiB2aWV3cyhTZXNzaW9uTW9kZSkgY29uc3QgZmlu
YWw7CisgICAgWHJJbnN0YW5jZSBtX2luc3RhbmNlOworICAgIFhyU3lzdGVtSWQgbV9zeXN0ZW1J
ZDsKKyAgICBXb3JrUXVldWUmIG1fcXVldWU7CisgICAgY29uc3QgT3BlblhSRXh0ZW5zaW9ucyYg
bV9leHRlbnNpb25zOworICAgIFhyU2Vzc2lvbiBtX3Nlc3Npb24geyBYUl9OVUxMX0hBTkRMRSB9
OworICAgIFhyU2Vzc2lvblN0YXRlIG1fc2Vzc2lvblN0YXRlIHsgWFJfU0VTU0lPTl9TVEFURV9V
TktOT1dOIH07CisgICAgWHJHcmFwaGljc0JpbmRpbmdFR0xNTkRYIG1fZ3JhcGhpY3NCaW5kaW5n
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHTENvbnRleHRFR0w+IG1fZWdsOwogCiAg
ICAgdXNpbmcgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzTWFwID0gSGFzaE1hcDxYclZpZXdD
b25maWd1cmF0aW9uVHlwZSwgWHJWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMsIEludEhhc2g8
WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFhyVmll
d0NvbmZpZ3VyYXRpb25UeXBlPj47CiAgICAgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzTWFw
IG1fdmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzOwogICAgIHVzaW5nIFZpZXdDb25maWd1cmF0
aW9uVmlld3NNYXAgPSBIYXNoTWFwPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlLCBWZWN0b3I8WHJW
aWV3Q29uZmlndXJhdGlvblZpZXc+LCBJbnRIYXNoPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlPiwg
V1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4+OwogICAg
IFZpZXdDb25maWd1cmF0aW9uVmlld3NNYXAgbV9jb25maWd1cmF0aW9uVmlld3M7Ci0KLSAgICBY
clN5c3RlbUlkIG1fc3lzdGVtSWQ7Ci0gICAgWHJJbnN0YW5jZSBtX2luc3RhbmNlOwotICAgIFhy
U2Vzc2lvbiBtX3Nlc3Npb24geyBYUl9OVUxMX0hBTkRMRSB9OwotICAgIFhyU2Vzc2lvblN0YXRl
IG1fc2Vzc2lvblN0YXRlIHsgWFJfU0VTU0lPTl9TVEFURV9VTktOT1dOIH07Ci0KLSAgICBXb3Jr
UXVldWUmIG1fcXVldWU7Ci0KICAgICBYclZpZXdDb25maWd1cmF0aW9uVHlwZSBtX2N1cnJlbnRW
aWV3Q29uZmlndXJhdGlvblR5cGU7CiAgICAgWHJTcGFjZSBtX2xvY2FsU3BhY2UgeyBYUl9OVUxM
X0hBTkRMRSB9OwogICAgIFhyU3BhY2UgbV92aWV3U3BhY2UgeyBYUl9OVUxMX0hBTkRMRSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc1dQRS5jbWFrZQppbmRleCBlNTZmZDFiNDZlZDhkY2M3NzAzZTNmZjgzZjk3YzU4ODRh
ZmY2MjE3Li4zNmNjZTAwNDRkNjI1MGYwYTZlNmUxNjc2OWFhNzNkZTBiMzJlMWQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc1dQRS5jbWFrZQpAQCAtMTg5LDYgKzE4OSw4IEBAIGlmIChFTkFCTEVfV0VCWFIpCiAgICAg
ICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIk9wZW5YUiBpcyByZXF1aXJlZCB0byBlbmFibGUgV2Vi
WFIgc3VwcG9ydC4iKQogICAgIGVuZGlmICgpCiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQo
VVNFX09QRU5YUiAke09wZW5YUl9GT1VORH0pCisgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQo
WFJfVVNFX1BMQVRGT1JNX0VHTCBUUlVFKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFhS
X1VTRV9HUkFQSElDU19BUElfT1BFTkdMIFRSVUUpCiBlbmRpZiAoKQogCiBpZiAoVVNFX1NZU1RF
TUQpCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggY2M0ZmZiNDM1ZmEz
Nzc0OGFmNDQzYmUxOGY3NWU1OTc5YzAxNDc0NC4uN2Y4ODgzN2I5MDVlZDhkNmRmNDZhOTkxZWFh
NWViZDhjNjZmZDNkNCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIxLTAyLTE5ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBp
Z2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVudCBPcGVuWFIgcG9ydCBncmFwaGljcyBiaW5k
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIx
NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFi
bGUgT3BlblhSIGRlZmluZXMgcmVxdWlyZWQgZm9yIEVHTCBncmFwaGljcyBiaW5kaW5nLgorCisg
ICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2U6CisKIDIwMjEtMDItMTggIE1h
cnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQ
RV0gSW1wbGVtZW50IHN1cHBvcnQgZm9yIENTUyBTY3JvbGwgU25hcAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421405</attachid>
            <date>2021-02-24 07:07:35 -0800</date>
            <delta_ts>2021-02-24 07:09:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222173-20210224160734.patch</filename>
            <type>text/plain</type>
            <size>25659</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VjNTYxMjQ4OTE3Njk0
ZTZhOGNiMjMyMmNiMWVkZWIzODk2MzQ0Ny4uZmU3YTUyNmQ4M2UyNTFiMzM2MWY0YzBhOWIyZTZl
YzdkNjU0MmQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTAyLTI0ICBJbWFu
b2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBPcGVuWFIgcG9ydCBncmFwaGljcyBiaW5kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIxNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNocyBpbXBsZW1lbnRzIHRoZSBncmFwaGlj
cyBiaW5kaW5nIHJlcXVpcmVkIHRvIGluaXRpYWxpemUgT3BlblhSIHNlc3Npb25zCisgICAgICAg
IHdpdGggdHJhY2tpbmcgYW5kIHJlbmRlcmluZyBzdXBwb3J0LiBUaGUgY3VycmVudCBpbXBsZW1l
bnRhdGlvbiB3YXMgdXNpbmcgYSBoZWFkbGVzcworICAgICAgICBPcGVuWFIgc2Vzc2lvbiB3aGlj
aCBpcyBub3QgdmFsaWQgZm9yIHRyYWNraW5nLgorCisgICAgICAgIFRoZSBoZWFkbGVzcyBzZXNz
aW9uIHdhcyB1c2VkIHRvIGF2b2lkIGFsbG9jYXRpbmcgdGhlIGdyYXBoaWNzIHJlc291cmNlcyBk
dXJpbmcgV2ViWFIKKyAgICAgICAgZGV2aWNlIGVudW1lcmF0aW9uLiBUaGUgcHJvYmxlbSBpcyB0
aGF0IGl0IGNhbid0IGJlIGNvbnZlcnRlZCBsYXRlciB0byBhIHZhbGlkIHNlc3Npb24gZm9yCisg
ICAgICAgIHRyYWNraW5nLCBhbmQgdGhlIGdsb2JhbCBYckluc3RhbmNlIG5lZWRzIHRvIGJlIHJl
Y3JlYXRlZC4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IGFwcHJvYWNoCisgICAgICAgIHRv
IGtlZXAgdGhlIGRlbGF5ZWQgZ3JhcGhpY3MgaW5pdGlhbGl6YXRpb24gd2l0aG91dCB1c2luZyB0
aGUgaGVhZGxlc3Mgc2Vzc2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9H
TENvbnRleHRFR0wuY3BwOiBBZGQgRUdMQ29uZmlnIGFyZ3VtZW50IHRvIGNyZWF0ZSBtZXRob2Rz
CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVQYnVmZmVyQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVN1cmZhY2VsZXNzQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oOiBBZGQgRUdMQ29uZmlnIG1l
bWJlcgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xMaWJXUEUu
Y3BwOiBpbml0aWFsaXplIG1fY29uZmlnCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6
OkdMQ29udGV4dEVHTCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVdQ
RUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xX
YXlsYW5kLmNwcDogaW5pdGlhbGl6ZSBtX2NvbmZpZworICAgICAgICAoV2ViQ29yZTo6R0xDb250
ZXh0RUdMOjpHTENvbnRleHRFR0wpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpj
cmVhdGVXYXlsYW5kQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dM
Q29udGV4dEVHTFgxMS5jcHA6IGluaXRpYWxpemUgbV9jb25maWcKKyAgICAgICAgKFdlYkNvcmU6
OkdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4
dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVu
eHIvT3BlblhSRXh0ZW5zaW9ucy5jcHA6IEFkZCBPcGVuWFJFeHRlbnNpb25NZXRob2RzCisgICAg
ICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJFeHRlbnNpb25zOjpsb2FkTWV0aG9kcyk6CisgICAgICAg
ICogcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkV4dGVuc2lvbnMuaDoKKworICAgICAgICAqIHBs
YXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnN0YW5jZS5jcHA6IEVuYWJsZSBncnBhaGljcyByZWxh
dGVkIGV4dGVuc2lvbnMgaW5zdGVhZCBvZiBYUl9NTkRfSEVBRExFU1NfRVhURU5TSU9OCisgICAg
ICAgIChQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6SW1wbDo6SW1wbCk6CisKKyAgICAgICAgKiBwbGF0
Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaDogRm9yd2FyZCBkZWNsYXJlIHN5bWJvbHMgcmVx
dWlyZWQgYnkgb3BlbnhyX3BsYXRmb3JtLgorCisgICAgICAgICogcGxhdGZvcm0veHIvb3Blbnhy
L1BsYXRmb3JtWFJPcGVuWFIuY3BwOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNl
Ojppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcpOiBTZXR1cCBYckdyYXBoaWNzQmluZGlu
Z0VHTE1ORFgKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6Y29sbGVjdEVuYWJs
ZWRGZWF0dXJlcyk6IEFsdGVybmF0aXZlIHNvbHV0aW9uIHRvIGVudW1lcmF0ZVJlZmVyZW5jZVNw
YWNlcygpCisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OmNvbGxlY3RTdXBwb3J0
ZWRTZXNzaW9uTW9kZXMpOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpyZXNl
dFNlc3Npb24pOiBkZWFsbG9jYXRlIGdyYXBoaWMgcmVzb3VyY2VzCisgICAgICAgICogcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaDoKKwogMjAyMS0wMi0yNCAgSW1hbm9sIEZl
cm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBPcGVu
WFIgcGxhdGZvcm0gY29kZSBpbnRvIGRpZmZlcmVudCBjbGFzc2VzIGFuZCBmaWxlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5j
cHAKaW5kZXggNmZiNjYyY2JmYTEzZjMwMzA1NjFlZWUxZDNhMTZlOGUzMWYzNWYwOC4uNmY5Mzk5
N2I1OGEyYzliYzM2NmU2MGNhYmRmMDcxZDFjYTkwZjhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKQEAgLTIwNCw3
ICsyMDQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNy
ZWF0ZVdpbmRvd0NvbnRleHQoR0xOYXRpdmVXaW5kb3dUeQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3
IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIFdpbmRvd1N1
cmZhY2UpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3IEdM
Q29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIGNvbmZpZywgV2lu
ZG93U3VyZmFjZSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRl
eHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1EaXNw
bGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQpAQCAtMjMwLDcgKzIzMCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRl
eHQoUGxhdGZvcm1EaXNwbGF5CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBs
YXRmb3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgUGJ1ZmZlclN1cmZhY2UpKTsKKyAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0
Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIGNvbmZpZywgUGJ1ZmZlclN1cmZhY2UpKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVT
dXJmYWNlbGVzc0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEVHTENv
bnRleHQgc2hhcmluZ0NvbnRleHQpCkBAIC0yNTksNyArMjU5LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVTdXJmYWNlbGVzc0NvbnRleHQoUGxh
dGZvcm1EaXMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNw
bGF5LCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSwgU3VyZmFjZWxlc3MpKTsKKyAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURp
c3BsYXksIGNvbnRleHQsIEVHTF9OT19TVVJGQUNFLCBjb25maWcsIFN1cmZhY2VsZXNzKSk7CiB9
CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29u
dGV4dChHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3Jt
RGlzcGxheSkKQEAgLTM1MywxMCArMzUzLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRF
R0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5CiAg
ICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLUdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRm
b3JtRGlzcGxheSYgZGlzcGxheSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZh
Y2UsIEVHTFN1cmZhY2VUeXBlIHR5cGUpCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0
Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJm
YWNlLCBFR0xDb25maWcgY29uZmlnLCBFR0xTdXJmYWNlVHlwZSB0eXBlKQogICAgIDogR0xDb250
ZXh0KGRpc3BsYXkpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc3VyZmFjZShz
dXJmYWNlKQorICAgICwgbV9jb25maWcoY29uZmlnKQogICAgICwgbV90eXBlKHR5cGUpCiB7CiAg
ICAgQVNTRVJUKHR5cGUgIT0gUGl4bWFwU3VyZmFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKaW5kZXggOTFiZGQ0ZDcyMWE2
ZWZhOWNiMWUxY2IwMTE0MGJjNWIyNGJhYTQ0ZS4uZmM0ZWJhOTFmNWI1MTg5OGMxMDk2NzJkYzFi
OWEyYjc2NDdiMDZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VnbC9HTENvbnRleHRFR0wuaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGVycm9yU3RyaW5nKGludCBzdGF0dXNDb2RlKTsKICAgICBzdGF0aWMg
Y29uc3QgY2hhciogbGFzdEVycm9yU3RyaW5nKCk7CiAKKyAgICBFR0xDb25maWcgY29uZmlnKCkg
Y29uc3QgeyByZXR1cm4gbV9jb25maWc7IH0KKwogICAgIHZpcnR1YWwgfkdMQ29udGV4dEVHTCgp
OwogCiBwcml2YXRlOgpAQCAtNzEsMTYgKzczLDE2IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIEVH
TFN1cmZhY2VUeXBlIHsgUGJ1ZmZlclN1cmZhY2UsIFdpbmRvd1N1cmZhY2UsIFBpeG1hcFN1cmZh
Y2UsIFN1cmZhY2VsZXNzIH07CiAKLSAgICBHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5Jiwg
RUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUpOworICAgIEdMQ29udGV4dEVH
TChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBFR0xDb25maWcsIEVH
TFN1cmZhY2VUeXBlKTsKICNpZiBQTEFURk9STShYMTEpCi0gICAgR0xDb250ZXh0RUdMKFBsYXRm
b3JtRGlzcGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIFhVbmlxdWVQaXhtYXAmJik7Cisg
ICAgR0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZhY2Us
IEVHTENvbmZpZywgWFVuaXF1ZVBpeG1hcCYmKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdBWUxB
TkQpCi0gICAgR0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQsIEVHTFN1
cmZhY2UsIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9zdXJmYWNlPiYmLCBzdHJ1Y3Qgd2xfZWdsX3dp
bmRvdyopOworICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0LCBF
R0xTdXJmYWNlLCBFR0xDb25maWcsIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9zdXJmYWNlPiYmLCBz
dHJ1Y3Qgd2xfZWdsX3dpbmRvdyopOwogICAgIHZvaWQgZGVzdHJveVdheWxhbmRXaW5kb3coKTsK
ICNlbmRpZgogI2lmIFVTRShXUEVfUkVOREVSRVIpCi0gICAgR0xDb250ZXh0RUdMKFBsYXRmb3Jt
RGlzcGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIHN0cnVjdCB3cGVfcmVuZGVyZXJfYmFj
a2VuZF9lZ2xfb2Zmc2NyZWVuX3RhcmdldCopOworICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURp
c3BsYXkmLCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBFR0xDb25maWcsIHN0cnVjdCB3cGVfcmVu
ZGVyZXJfYmFja2VuZF9lZ2xfb2Zmc2NyZWVuX3RhcmdldCopOwogICAgIHZvaWQgZGVzdHJveVdQ
RVRhcmdldCgpOwogI2VuZGlmCiAKQEAgLTEwNCw2ICsxMDYsNyBAQCBwcml2YXRlOgogCiAgICAg
RUdMQ29udGV4dCBtX2NvbnRleHQgeyBudWxscHRyIH07CiAgICAgRUdMU3VyZmFjZSBtX3N1cmZh
Y2UgeyBudWxscHRyIH07CisgICAgRUdMQ29uZmlnIG1fY29uZmlnIHsgbnVsbHB0ciB9OwogICAg
IEVHTFN1cmZhY2VUeXBlIG1fdHlwZTsKICNpZiBQTEFURk9STShYMTEpCiAgICAgWFVuaXF1ZVBp
eG1hcCBtX3BpeG1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VnbC9HTENvbnRleHRFR0xMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTExpYldQRS5jcHAKaW5kZXggNDA4ZGYzYjM5OGQ1YzQ4
YzFiNzYyOTY1NTQ5YmExNmM5ODdhMjAwZS4uNjgyM2IwNWU0YTU3MTc1NzhlZjQyYzNmYzc0YTJi
NDQyNDVhYTQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTExpYldQRS5jcHAKQEAgLTQwLDEwICs0MCwxMSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRm
b3JtRGlzcGxheSYgZGlzcGxheSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZh
Y2UsIHN0cnVjdCB3cGVfcmVuZGVyZXJfYmFja2VuZF9lZ2xfb2Zmc2NyZWVuX3RhcmdldCogdGFy
Z2V0KQorR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5
LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMQ29uZmlnIGNvbmZp
Zywgc3RydWN0IHdwZV9yZW5kZXJlcl9iYWNrZW5kX2VnbF9vZmZzY3JlZW5fdGFyZ2V0KiB0YXJn
ZXQpCiAgICAgOiBHTENvbnRleHQoZGlzcGxheSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQog
ICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCisgICAgLCBtX2NvbmZpZyhjb25maWcpCiAgICAgLCBt
X3R5cGUoV2luZG93U3VyZmFjZSkKICAgICAsIG1fd3BlVGFyZ2V0KHRhcmdldCkKIHsKQEAgLTg5
LDcgKzkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpj
cmVhdGVXUEVDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgcGwKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5l
dyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCB0YXJnZXQp
KTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3IEdMQ29udGV4
dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIGNvbmZpZywgdGFyZ2V0KSk7
CiB9CiAKIHZvaWQgR0xDb250ZXh0RUdMOjpkZXN0cm95V1BFVGFyZ2V0KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xX
YXlsYW5kLmNwcAppbmRleCBjZWFiOTJkOTI2YWU5MzZhOGFhZDg5YmU4NjAwZjYyYTNhYmI4ZTY5
Li5mYTZiNmFiOWJjNmRkYmU5MmMwMTY5YjY0ODZiNWU1OTViOTk0MTE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TFdheWxhbmQuY3BwCkBAIC0yOSwxMCArMjksMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1HTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVH
TENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBXbFVuaXF1ZVB0cjxzdHJ1Y3Qg
d2xfc3VyZmFjZT4mJiB3bFN1cmZhY2UsIHN0cnVjdCB3bF9lZ2xfd2luZG93KiB3bFdpbmRvdykK
K0dMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgRUdM
Q29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTENvbmZpZyBjb25maWcsIFds
VW5pcXVlUHRyPHN0cnVjdCB3bF9zdXJmYWNlPiYmIHdsU3VyZmFjZSwgc3RydWN0IHdsX2VnbF93
aW5kb3cqIHdsV2luZG93KQogICAgIDogR0xDb250ZXh0KGRpc3BsYXkpCiAgICAgLCBtX2NvbnRl
eHQoY29udGV4dCkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQorICAgICwgbV9jb25maWcoY29u
ZmlnKQogICAgICwgbV90eXBlKFdpbmRvd1N1cmZhY2UpCiAgICAgLCBtX3dsU3VyZmFjZShXVEZN
b3ZlKHdsU3VyZmFjZSkpCiAgICAgLCBtX3dsV2luZG93KHdsV2luZG93KQpAQCAtNjksNyArNzAs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdh
eWxhbmRDb250ZXh0KFBsYXRmb3JtRGlzcGxheQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3IEdMQ29u
dGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIFdURk1vdmUod2xTdXJm
YWNlKSwgd2luZG93KSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+
KG5ldyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBjb25m
aWcsIFdURk1vdmUod2xTdXJmYWNlKSwgd2luZG93KSk7CiB9CiAKIHZvaWQgR0xDb250ZXh0RUdM
OjpkZXN0cm95V2F5bGFuZFdpbmRvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xYMTEuY3BwCmluZGV4IDY3YThlMGI1OTYx
MWM1NWU0MzM2ZjJiMTMyNDhmMjAzODczMTE4YTUuLjhmNzMyMzk5ODhlODY5Y2I4ZmM4M2NmOWQz
NGNmNjU3YWI3YjFhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VnbC9HTENvbnRleHRFR0xYMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xYMTEuY3BwCkBAIC0yOCwxMCArMjgsMTEgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1HTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0Zm9y
bURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNl
LCBYVW5pcXVlUGl4bWFwJiYgcGl4bWFwKQorR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woUGxh
dGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3Vy
ZmFjZSwgRUdMQ29uZmlnIGNvbmZpZywgWFVuaXF1ZVBpeG1hcCYmIHBpeG1hcCkKICAgICA6IEdM
Q29udGV4dChkaXNwbGF5KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3N1cmZh
Y2Uoc3VyZmFjZSkKKyAgICAsIG1fY29uZmlnKGNvbmZpZykKICAgICAsIG1fdHlwZShQaXhtYXBT
dXJmYWNlKQogICAgICwgbV9waXhtYXAoV1RGTW92ZShwaXhtYXApKQogewpAQCAtOTAsNyArOTEs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBp
eG1hcENvbnRleHQoUGxhdGZvcm1EaXNwbGF5JgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3IEdMQ29u
dGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIFdURk1vdmUocGl4bWFw
KSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250
ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgY29uZmlnLCBXVEZNb3Zl
KHBpeG1hcCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkV4dGVuc2lvbnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkV4dGVuc2lvbnMuY3BwCmluZGV4
IGZiMzFhN2QzZjNkNmEwMzk0NzlhNDRiMTJhYjMzNmIzMmY4YTk5MTcuLmFlN2ZiOTIzYzYxZjdh
ZGVlMDU4NmE5Y2YzODQyMWQ4NmM3ODAwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL29wZW54ci9PcGVuWFJFeHRlbnNpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSRXh0ZW5zaW9ucy5jcHAKQEAgLTIyLDYgKzIyLDIx
IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpICYmIFVTRShPUEVOWFIpCiAKKy8vIFJlcXVpcmVkIGlu
Y2x1ZGVzIHRvIHF1ZXJ5IGVnbEdldFByb2NBZGRyZXNzIGZ1bmN0aW9uIGFkZHJlc3MuCisjaWYg
VVNFKEVHTCkKKworI2lmIFVTRShMSUJFUE9YWSkKKyNkZWZpbmUgX19HQk1fXyAxCisjaW5jbHVk
ZSAiRXBveHlFR0wuaCIKKyNlbHNlCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNsdWRlIDx3
YXlsYW5kLWVnbC5oPgorI2VuZGlmCisjaW5jbHVkZSA8RUdML2VnbC5oPgorI2VuZGlmCisKKyNl
bmRpZiAvLyBVU0UoRUdMKQorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFBsYXRmb3JtWFIgewpAQCAtNTQsNiArNjksMTUgQEAgT3BlblhSRXh0ZW5zaW9uczo6T3BlblhS
RXh0ZW5zaW9ucyhWZWN0b3I8WHJFeHRlbnNpb25Qcm9wZXJ0aWVzPiYmIGV4dGVuc2lvbnMpCiB7
CiB9CiAKK3ZvaWQgT3BlblhSRXh0ZW5zaW9uczo6bG9hZE1ldGhvZHMoWHJJbnN0YW5jZSBpbnN0
YW5jZSkKK3sKKyNpZiBVU0UoRUdMKQorICAgIG1fbWV0aG9kcy5nZXRQcm9jQWRkcmVzc0Z1bmMg
PSBlZ2xHZXRQcm9jQWRkcmVzczsKKyNlbmRpZgorICAgIHhyR2V0SW5zdGFuY2VQcm9jQWRkcihp
bnN0YW5jZSwgInhyR2V0T3BlbkdMR3JhcGhpY3NSZXF1aXJlbWVudHNLSFIiLAorICAgICAgICBy
ZWludGVycHJldF9jYXN0PFBGTl94clZvaWRGdW5jdGlvbio+KCZtX21ldGhvZHMueHJHZXRPcGVu
R0xHcmFwaGljc1JlcXVpcmVtZW50c0tIUikpOworfQorCiBib29sIE9wZW5YUkV4dGVuc2lvbnM6
OmlzRXh0ZW5zaW9uU3VwcG9ydGVkKGNvbnN0IGNoYXIqIG5hbWUpIGNvbnN0CiB7CiAgICAgYXV0
byBwb3NpdGlvbiA9IG1fZXh0ZW5zaW9ucy5maW5kTWF0Y2hpbmcoW25hbWVdKGF1dG8mIHByb3Bl
cnR5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3Bl
blhSRXh0ZW5zaW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5Y
UkV4dGVuc2lvbnMuaAppbmRleCA0ZTRjYTM4YTgyNWI3NzViYjJmODI4NmMyZTZhNzI2OGYxM2Iz
M2UwLi5hZWM4MGNlODM4OTI2ODYwNTcxNjA1NjYyZThlOTJmYWJlY2Y4NGFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSRXh0ZW5zaW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJFeHRlbnNpb25zLmgK
QEAgLTI4LDYgKzI4LDExIEBACiAKIG5hbWVzcGFjZSBQbGF0Zm9ybVhSIHsKIAorc3RydWN0IE9w
ZW5YUkV4dGVuc2lvbk1ldGhvZHMgeworICAgIFBGTkVHTEdFVFBST0NBRERSRVNTUFJPQyBnZXRQ
cm9jQWRkcmVzc0Z1bmMgeyBudWxscHRyIH07CisgICAgUEZOX3hyR2V0T3BlbkdMR3JhcGhpY3NS
ZXF1aXJlbWVudHNLSFIgeHJHZXRPcGVuR0xHcmFwaGljc1JlcXVpcmVtZW50c0tIUiB7IG51bGxw
dHIgfTsKK307CisKIGNsYXNzIE9wZW5YUkV4dGVuc2lvbnMgZmluYWwgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE9wZW5YUkV4dGVuc2lv
bnMpOwpAQCAtMzUsMTAgKzQwLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPE9wZW5YUkV4dGVuc2lvbnM+IGNyZWF0ZSgpOwogICAgIE9wZW5YUkV4dGVuc2lvbnMoVmVj
dG9yPFhyRXh0ZW5zaW9uUHJvcGVydGllcz4mJik7CiAKKyAgICB2b2lkIGxvYWRNZXRob2RzKFhy
SW5zdGFuY2UpOwogICAgIGJvb2wgaXNFeHRlbnNpb25TdXBwb3J0ZWQoY29uc3QgY2hhciopIGNv
bnN0OworICAgIGNvbnN0IE9wZW5YUkV4dGVuc2lvbk1ldGhvZHMmIG1ldGhvZHMoKSBjb25zdCB7
IHJldHVybiBtX21ldGhvZHM7IH0KIAogcHJpdmF0ZToKICAgICBWZWN0b3I8WHJFeHRlbnNpb25Q
cm9wZXJ0aWVzPiBtX2V4dGVuc2lvbnM7CisgICAgT3BlblhSRXh0ZW5zaW9uTWV0aG9kcyBtX21l
dGhvZHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQbGF0Zm9ybVhSCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5zdGFuY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkluc3RhbmNlLmNwcAppbmRleCA5NDZj
OWI1NWQyYzhjYzVmMWFjOGI0ZWFkZDA1MmMxN2QzMzc2MzNjLi44Y2FjN2E3MWZjNmZjYTFjMGNm
NTk3ZTI1MzJmOGYwNDY3MTY5MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS94ci9vcGVueHIvT3BlblhSSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL29wZW54ci9PcGVuWFJJbnN0YW5jZS5jcHAKQEAgLTU2LDE2ICs1NiwxMiBAQCBJbnN0
YW5jZTo6SW1wbDo6SW1wbCgpCiAgICAgICAgIGlmICghbV9leHRlbnNpb25zKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghbV9leHRlbnNpb25zLT5pc0V4dGVuc2lvblN1cHBv
cnRlZChYUl9NTkRfSEVBRExFU1NfRVhURU5TSU9OX05BTUUpKSB7Ci0gICAgICAgICAgICBMT0co
WFIsICJSZXF1aXJlZCBleHRlbnNpb24gJXMgbm90IHN1cHBvcnRlZCIsIFhSX01ORF9IRUFETEVT
U19FWFRFTlNJT05fTkFNRSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQogICAg
ICAgICBzdGF0aWMgY29uc3QgY2hhciogc19hcHBsaWNhdGlvbk5hbWUgPSAiV2ViWFIgKFdlYktp
dCkiOwogICAgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19hcHBsaWNhdGlvblZlcnNpb24g
PSAxOwogCiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGVuYWJsZWRFeHRlbnNpb25zW10gPSB7
Ci0gICAgICAgICAgICBYUl9NTkRfSEVBRExFU1NfRVhURU5TSU9OX05BTUUKKyAgICAgICAgICAg
IFhSX0tIUl9PUEVOR0xfRU5BQkxFX0VYVEVOU0lPTl9OQU1FLAorICAgICAgICAgICAgWFJfTU5E
WF9FR0xfRU5BQkxFX0VYVEVOU0lPTl9OQU1FCiAgICAgICAgIH07CiAKICAgICAgICAgYXV0byBj
cmVhdGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhySW5zdGFuY2VDcmVhdGVJbmZvLCBYUl9UWVBF
X0lOU1RBTkNFX0NSRUFURV9JTkZPPigpOwpAQCAtODIsNiArNzgsOCBAQCBJbnN0YW5jZTo6SW1w
bDo6SW1wbCgpCiAgICAgICAgIGlmIChtX2luc3RhbmNlID09IFhSX05VTExfSEFORExFKQogICAg
ICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIG1fZXh0ZW5zaW9ucy0+bG9hZE1ldGhvZHMobV9p
bnN0YW5jZSk7CisKICAgICAgICAgTE9HKFhSLCAieHJDcmVhdGVJbnN0YW5jZSgpOiB1c2luZyBp
bnN0YW5jZSAlcFxuIiwgbV9pbnN0YW5jZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJVdGlscy5oCmluZGV4IGUxYWE1NmJmZTA4OTQ4
ZGI3NWNkMjkxMDc4YzU2Y2I5NDkyYWI4NDcuLmU3ODhlZTM5NGI4ZmFkY2JmY2RhOGRhMzU4ZWEx
OTA4MmVkOTdiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54
ci9PcGVuWFJVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9P
cGVuWFJVdGlscy5oCkBAIC0yMSw5ICsyMSwxOCBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBV
U0UoT1BFTlhSKQogCisvLyBTeW1ib2xzIHJlcXVpcmVkIGJ5IG9wZW54cl9wbGF0Zm9ybQordHlw
ZWRlZiB2b2lkICpFR0xDb25maWc7Cit0eXBlZGVmIHZvaWQgKkVHTENvbnRleHQ7Cit0eXBlZGVm
IHZvaWQgKkVHTERpc3BsYXk7Cit0eXBlZGVmIHZvaWQgKkVHTFN1cmZhY2U7Cit0eXBlZGVmIHZv
aWQgKCpfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKSh2b2lkKTsKK3R5
cGVkZWYgX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSAoKlBGTkVHTEdF
VFBST0NBRERSRVNTUFJPQykoY29uc3QgY2hhciAqcHJvYyk7CisKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgogI2luY2x1ZGUgPG9wZW54ci9vcGVueHIuaD4K
KyNpbmNsdWRlIDxvcGVueHIvb3BlbnhyX3BsYXRmb3JtLmg+CiAKICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0
Zm9ybVhST3BlblhSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0
Zm9ybVhST3BlblhSLmNwcAppbmRleCA1YWFmMTg3MTM3ODFiZDIzYzdlMmM1MGU0ZDZkMmExNjQ2
ZDM1YTk0Li41MzEyZDgzYmYyYTcyODAyODBmZjFkNjJlZTQ3MzA5NjNiMTc3MGU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVu
WFIuY3BwCkBAIC04MSwxNSArODEsMzggQEAgdm9pZCBPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVU
cmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSBtb2RlKQogICAgIG1fcXVldWUuZGlzcGF0
Y2goW3RoaXMsIG1vZGVdKCkgewogICAgICAgICBBU1NFUlQobV9pbnN0YW5jZSAhPSBYUl9OVUxM
X0hBTkRMRSk7CiAgICAgICAgIEFTU0VSVChtX3Nlc3Npb24gPT0gWFJfTlVMTF9IQU5ETEUpOwor
ICAgICAgICBBU1NFUlQobV9leHRlbnNpb25zLm1ldGhvZHMoKS54ckdldE9wZW5HTEdyYXBoaWNz
UmVxdWlyZW1lbnRzS0hSKTsKIAogICAgICAgICBtX2N1cnJlbnRWaWV3Q29uZmlndXJhdGlvblR5
cGUgPSB0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKG1vZGUpOwogICAgICAgICBBU1NFUlQobV9j
b25maWd1cmF0aW9uVmlld3MuY29udGFpbnMobV9jdXJyZW50Vmlld0NvbmZpZ3VyYXRpb25UeXBl
KSk7CiAKKyAgICAgICAgLy8gaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvT3BlblhS
L3NwZWNzLzEuMC9tYW4vaHRtbC94ckdldE9wZW5HTEdyYXBoaWNzUmVxdWlyZW1lbnRzS0hSLmh0
bWwKKyAgICAgICAgLy8gT3BlblhSIHJlcXVpcmVzIHRvIGNhbGwgeHJHZXRPcGVuR0xHcmFwaGlj
c1JlcXVpcmVtZW50c0tIUiBiZWZvcmUgY3JlYXRpbmcgYSBzZXNzaW9uLgorICAgICAgICBhdXRv
IHJlcXVpcmVtZW50cyA9IGNyZWF0ZVN0cnVjdHVyZTxYckdyYXBoaWNzUmVxdWlyZW1lbnRzT3Bl
bkdMS0hSLCBYUl9UWVBFX0dSQVBISUNTX1JFUVVJUkVNRU5UU19PUEVOR0xfS0hSPigpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IG1fZXh0ZW5zaW9ucy5tZXRob2RzKCkueHJHZXRPcGVuR0xHcmFw
aGljc1JlcXVpcmVtZW50c0tIUihtX2luc3RhbmNlLCBtX3N5c3RlbUlkLCAmcmVxdWlyZW1lbnRz
KTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckdldE9wZW5HTEdyYXBoaWNz
UmVxdWlyZW1lbnRzS0hSIiwgbV9pbnN0YW5jZSk7CisKKyAgICAgICAgbV9ncmFwaGljc0JpbmRp
bmcgPSBjcmVhdGVTdHJ1Y3R1cmU8WHJHcmFwaGljc0JpbmRpbmdFR0xNTkRYLCBYUl9UWVBFX0dS
QVBISUNTX0JJTkRJTkdfRUdMX01ORFg+KCk7CisgICAgICAgIG1fZWdsID0gR0xDb250ZXh0RUdM
OjpjcmVhdGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSk7
CisgICAgICAgIGlmICghbV9lZ2wpIHsKKyAgICAgICAgICAgIExPRyhYUiwgIkZhaWxlZCB0byBj
cmVhdGUgRUdMIGNvbnRleHQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGF1dG8mIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxHTENvbnRleHQmPigqbV9lZ2wpOwor
ICAgICAgICBjb250ZXh0Lm1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgICAgIG1fZ3JhcGhp
Y3NCaW5kaW5nLmRpc3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xE
aXNwbGF5KCk7CisgICAgICAgIG1fZ3JhcGhpY3NCaW5kaW5nLmNvbnRleHQgPSBjb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpOworICAgICAgICBtX2dyYXBoaWNzQmluZGluZy5jb25maWcgPSBtX2Vn
bC0+Y29uZmlnKCk7CisgICAgICAgIG1fZ3JhcGhpY3NCaW5kaW5nLmdldFByb2NBZGRyZXNzID0g
bV9leHRlbnNpb25zLm1ldGhvZHMoKS5nZXRQcm9jQWRkcmVzc0Z1bmM7CisKICAgICAgICAgLy8g
Q3JlYXRlIHRoZSBzZXNzaW9uLgogICAgICAgICBhdXRvIHNlc3Npb25DcmVhdGVJbmZvID0gY3Jl
YXRlU3RydWN0dXJlPFhyU2Vzc2lvbkNyZWF0ZUluZm8sIFhSX1RZUEVfU0VTU0lPTl9DUkVBVEVf
SU5GTz4oKTsKICAgICAgICAgc2Vzc2lvbkNyZWF0ZUluZm8uc3lzdGVtSWQgPSBtX3N5c3RlbUlk
OworICAgICAgICBzZXNzaW9uQ3JlYXRlSW5mby5uZXh0ID0gJm1fZ3JhcGhpY3NCaW5kaW5nOwog
Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0geHJDcmVhdGVTZXNzaW9uKG1faW5zdGFuY2UsICZzZXNz
aW9uQ3JlYXRlSW5mbywgJm1fc2Vzc2lvbik7CisgICAgICAgIHJlc3VsdCA9IHhyQ3JlYXRlU2Vz
c2lvbihtX2luc3RhbmNlLCAmc2Vzc2lvbkNyZWF0ZUluZm8sICZtX3Nlc3Npb24pOwogICAgICAg
ICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Q
cm9wZXJ0aWVzIiwgbV9pbnN0YW5jZSk7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBkZWZhdWx0
IHJlZmVyZW5jZSBzcGFjZXMKQEAgLTIyMCw0MyArMjQzLDI2IEBAIFZlY3RvcjxEZXZpY2U6OlZp
ZXdEYXRhPiBPcGVuWFJEZXZpY2U6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0CiAgICAg
cmV0dXJuIHZpZXdzOwogfQogCi1EZXZpY2U6Okxpc3RPZkVuYWJsZWRGZWF0dXJlcyBPcGVuWFJE
ZXZpY2U6OmVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhYclNlc3Npb24gc2Vzc2lvbikgY29uc3QK
K0RldmljZTo6TGlzdE9mRW5hYmxlZEZlYXR1cmVzIE9wZW5YUkRldmljZTo6Y29sbGVjdEVuYWJs
ZWRGZWF0dXJlcygpCiB7Ci0gICAgdWludDMyX3QgcmVmZXJlbmNlU3BhY2VzQ291bnQ7Ci0gICAg
YXV0byByZXN1bHQgPSB4ckVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhzZXNzaW9uLCAwLCAmcmVm
ZXJlbmNlU3BhY2VzQ291bnQsIG51bGxwdHIpOwotICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0
LCAieHJFbnVtZXJhdGVSZWZlcmVuY2VTcGFjZXMiLCBtX2luc3RhbmNlLCB7IH0pOwotCi0gICAg
VmVjdG9yPFhyUmVmZXJlbmNlU3BhY2VUeXBlPiByZWZlcmVuY2VTcGFjZXMocmVmZXJlbmNlU3Bh
Y2VzQ291bnQpOwotICAgIHJlZmVyZW5jZVNwYWNlcy5maWxsKFhSX1JFRkVSRU5DRV9TUEFDRV9U
WVBFX1ZJRVcsIHJlZmVyZW5jZVNwYWNlc0NvdW50KTsKLSAgICByZXN1bHQgPSB4ckVudW1lcmF0
ZVJlZmVyZW5jZVNwYWNlcyhzZXNzaW9uLCByZWZlcmVuY2VTcGFjZXNDb3VudCwgJnJlZmVyZW5j
ZVNwYWNlc0NvdW50LCByZWZlcmVuY2VTcGFjZXMuZGF0YSgpKTsKLSAgICBSRVRVUk5fSUZfRkFJ
TEVEKHJlc3VsdCwgInhyRW51bWVyYXRlUmVmZXJlbmNlU3BhY2VzIiwgbV9pbnN0YW5jZSwgeyB9
KTsKLQotICAgIExpc3RPZkVuYWJsZWRGZWF0dXJlcyBlbmFibGVkRmVhdHVyZXM7Ci0gICAgZm9y
IChhdXRvJiByZWZlcmVuY2VTcGFjZSA6IHJlZmVyZW5jZVNwYWNlcykgewotICAgICAgICBzd2l0
Y2ggKHJlZmVyZW5jZVNwYWNlKSB7Ci0gICAgICAgIGNhc2UgWFJfUkVGRVJFTkNFX1NQQUNFX1RZ
UEVfVklFVzoKLSAgICAgICAgICAgIGVuYWJsZWRGZWF0dXJlcy5hcHBlbmQoUmVmZXJlbmNlU3Bh
Y2VUeXBlOjpWaWV3ZXIpOwotICAgICAgICAgICAgTE9HKFhSLCAiXHREZXZpY2Ugc3VwcG9ydHMg
VklFVyByZWZlcmVuY2Ugc3BhY2UiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFhSX1JFRkVSRU5DRV9TUEFDRV9UWVBFX0xPQ0FMOgotICAgICAgICAgICAgZW5hYmxlZEZlYXR1
cmVzLmFwcGVuZChSZWZlcmVuY2VTcGFjZVR5cGU6OkxvY2FsKTsKLSAgICAgICAgICAgIExPRyhY
UiwgIlx0RGV2aWNlIHN1cHBvcnRzIExPQ0FMIHJlZmVyZW5jZSBzcGFjZSIpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfU1RBR0U6Ci0g
ICAgICAgICAgICBlbmFibGVkRmVhdHVyZXMuYXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6TG9j
YWxGbG9vcik7Ci0gICAgICAgICAgICBlbmFibGVkRmVhdHVyZXMuYXBwZW5kKFJlZmVyZW5jZVNw
YWNlVHlwZTo6Qm91bmRlZEZsb29yKTsKLSAgICAgICAgICAgIExPRyhYUiwgIlx0RGV2aWNlIHN1
cHBvcnRzIFNUQUdFIHJlZmVyZW5jZSBzcGFjZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfVU5CT1VOREVEX01TRlQ6Ci0gICAgICAg
ICAgICBlbmFibGVkRmVhdHVyZXMuYXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6VW5ib3VuZGVk
KTsKLSAgICAgICAgICAgIExPRyhYUiwgIlx0RGV2aWNlIHN1cHBvcnRzIFVOQk9VTkRFRCByZWZl
cmVuY2Ugc3BhY2UiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICB9CisgICAgRGV2aWNlOjpMaXN0T2ZF
bmFibGVkRmVhdHVyZXMgZmVhdHVyZXM7CisKKyAgICAvLyBodHRwczovL3d3dy5raHJvbm9zLm9y
Zy9yZWdpc3RyeS9PcGVuWFIvc3BlY3MvMS4wL21hbi9odG1sL1hyUmVmZXJlbmNlU3BhY2VUeXBl
Lmh0bWwKKyAgICAvLyBPcGVuWFIgcnVudGltZXMgbXVzdCBzdXBwb3J0IFZpZXdlciBhbmQgTG9j
YWwgc3BhY2VzLgorICAgIGZlYXR1cmVzLmFwcGVuZChSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdl
cik7CisgICAgZmVhdHVyZXMuYXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWwpOwogCi0g
ICAgcmV0dXJuIGVuYWJsZWRGZWF0dXJlczsKKyAgICAvLyBNYXJrIExvY2FsRmxvb3IgYXMgc3Vw
cG9ydGVkIHJlZ2FyZGxlc3MgaWYgWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfU1RBR0UgaXMgYXZh
aWxhYmxlLgorICAgIC8vIFRoZSBzcGVjIHVzZXMgYSBlc3RpbWF0ZWQgaGVpZ2h0IGlmIHdlIGRv
bid0IHByb3ZpZGUgYSBmbG9vciB0cmFuc2Zvcm0gaW4gZnJhbWVEYXRhLgorICAgIGZlYXR1cmVz
LmFwcGVuZChSZWZlcmVuY2VTcGFjZVR5cGU6OkxvY2FsRmxvb3IpOworCisgICAgLy8gRklYTUU6
IEVuYWJsZSBCb3VuZGVkRmxvb3Igd2hlbiB3ZSBpbXBsZW1lbnQgeHJHZXRSZWZlcmVuY2VTcGFj
ZUJvdW5kc1JlY3QgYW5kIHRoZSByZWxhdGVkIGJpdHMgaW4gdGhlIERPTS4KKyAgICAvLyBlbmFi
bGVkRmVhdHVyZXMuYXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKTsKKwor
ICAgIGlmIChtX2V4dGVuc2lvbnMuaXNFeHRlbnNpb25TdXBwb3J0ZWQoWFJfTVNGVF9VTkJPVU5E
RURfUkVGRVJFTkNFX1NQQUNFX0VYVEVOU0lPTl9OQU1FKSkKKyAgICAgICAgZmVhdHVyZXMuYXBw
ZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6VW5ib3VuZGVkKTsKKworICAgIHJldHVybiBmZWF0dXJl
czsKIH0KIAogdm9pZCBPcGVuWFJEZXZpY2U6OmNvbGxlY3RTdXBwb3J0ZWRTZXNzaW9uTW9kZXMo
KQpAQCAtMjcwLDE1ICsyNzYsNyBAQCB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRl
ZFNlc3Npb25Nb2RlcygpCiAgICAgcmVzdWx0ID0geHJFbnVtZXJhdGVWaWV3Q29uZmlndXJhdGlv
bnMobV9pbnN0YW5jZSwgbV9zeXN0ZW1JZCwgdmlld0NvbmZpZ3VyYXRpb25Db3VudCwgJnZpZXdD
b25maWd1cmF0aW9uQ291bnQsIHZpZXdDb25maWd1cmF0aW9ucyk7CiAgICAgUkVUVVJOX0lGX0ZB
SUxFRChyZXN1bHQsICJ4ckVudW1lcmF0ZVZpZXdDb25maWd1cmF0aW9ucyIsIG1faW5zdGFuY2Up
OwogCi0gICAgLy8gUmV0cmlldmluZyB0aGUgc3VwcG9ydGVkIHJlZmVyZW5jZSBzcGFjZXMgcmVx
dWlyZXMgYW4gaW5pdGlhbGl6ZWQgc2Vzc2lvbi4gVGhlcmUgaXMgbm8gbmVlZCB0byBpbml0aWFs
aXplIGFsbCB0aGUgZ3JhcGhpY3MKLSAgICAvLyBzdHVmZiBzbyB3ZSdsbCB1c2UgYSBoZWFkbGVz
cyBzZXNzaW9uIHRoYXQgd2lsbCBiZSBkaXNjYXJkZWQgYWZ0ZXIgZ2V0dGluZyB0aGUgaW5mbyB3
ZSBuZWVkLgotICAgIGF1dG8gc2Vzc2lvbkNyZWF0ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJT
ZXNzaW9uQ3JlYXRlSW5mbywgWFJfVFlQRV9TRVNTSU9OX0NSRUFURV9JTkZPPigpOwotICAgIHNl
c3Npb25DcmVhdGVJbmZvLnN5c3RlbUlkID0gbV9zeXN0ZW1JZDsKLSAgICBYclNlc3Npb24gZXBo
ZW1lcmFsU2Vzc2lvbjsKLSAgICByZXN1bHQgPSB4ckNyZWF0ZVNlc3Npb24obV9pbnN0YW5jZSwg
JnNlc3Npb25DcmVhdGVJbmZvLCAmZXBoZW1lcmFsU2Vzc2lvbik7Ci0gICAgUkVUVVJOX0lGX0ZB
SUxFRChyZXN1bHQsICJ4ckNyZWF0ZVNlc3Npb24iLCBtX2luc3RhbmNlKTsKLQotICAgIExpc3RP
ZkVuYWJsZWRGZWF0dXJlcyBmZWF0dXJlcyA9IGVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhlcGhl
bWVyYWxTZXNzaW9uKTsKKyAgICBMaXN0T2ZFbmFibGVkRmVhdHVyZXMgZmVhdHVyZXMgPSBjb2xs
ZWN0RW5hYmxlZEZlYXR1cmVzKCk7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHZpZXdD
b25maWd1cmF0aW9uQ291bnQ7ICsraSkgewogICAgICAgICBhdXRvIHZpZXdDb25maWd1cmF0aW9u
UHJvcGVydGllcyA9IGNyZWF0ZVN0cnVjdHVyZTxYclZpZXdDb25maWd1cmF0aW9uUHJvcGVydGll
cywgWFJfVFlQRV9WSUVXX0NPTkZJR1VSQVRJT05fUFJPUEVSVElFUz4oKTsKICAgICAgICAgcmVz
dWx0ID0geHJHZXRWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMobV9pbnN0YW5jZSwgbV9zeXN0
ZW1JZCwgdmlld0NvbmZpZ3VyYXRpb25zW2ldLCAmdmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVz
KTsKQEAgLTI5OSw3ICsyOTcsNiBAQCB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRl
ZFNlc3Npb25Nb2RlcygpCiAgICAgICAgIH07CiAgICAgICAgIG1fdmlld0NvbmZpZ3VyYXRpb25Q
cm9wZXJ0aWVzLmFkZChjb25maWdUeXBlLCBXVEZNb3ZlKHZpZXdDb25maWd1cmF0aW9uUHJvcGVy
dGllcykpOwogICAgIH0KLSAgICB4ckRlc3Ryb3lTZXNzaW9uKGVwaGVtZXJhbFNlc3Npb24pOwog
fQogCiB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdENvbmZpZ3VyYXRpb25WaWV3cygpCkBAIC00
MTYsNiArNDEzLDkgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OnJlc2V0U2Vzc2lvbigpCiAgICAgICAg
IG1fc2Vzc2lvbiA9IFhSX05VTExfSEFORExFOwogICAgIH0KICAgICBtX3Nlc3Npb25TdGF0ZSA9
IFhSX1NFU1NJT05fU1RBVEVfVU5LTk9XTjsKKworICAgIC8vIGRlYWxsb2NhdGUgZ3JhcGhpYyBy
ZXNvdXJjZXMKKyAgICBtX2VnbC5yZXNldCgpOwogfQogCiB2b2lkIE9wZW5YUkRldmljZTo6aGFu
ZGxlU2Vzc2lvblN0YXRlQ2hhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCmluZGV4IDc2Y2E1OWNmYmVjZWViY2RiMGJm
ZTMwMjliNGZjZjkxMDM5MzA0MjAuLjMxNzgzNjkxZjRhOTNiYmJkNDgwNzkxNmJkNTY5YmM2NjA3
YzkxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0
Zm9ybVhST3BlblhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1Bs
YXRmb3JtWFJPcGVuWFIuaApAQCAtMjEsNiArMjEsNyBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKSAm
JiBVU0UoT1BFTlhSKQogCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCiAjaW5jbHVkZSAiT3Bl
blhSVXRpbHMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCiAKQEAgLTU4LDcgKzU5LDcgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8Vmlld0RhdGE+IHZpZXdzKFNlc3Npb25Nb2RlKSBjb25zdCBm
aW5hbDsKIAogICAgIC8vIEN1c3RvbSBtZXRob2RzCi0gICAgTGlzdE9mRW5hYmxlZEZlYXR1cmVz
IGVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhYclNlc3Npb24pIGNvbnN0OworICAgIExpc3RPZkVu
YWJsZWRGZWF0dXJlcyBjb2xsZWN0RW5hYmxlZEZlYXR1cmVzKCk7CiAgICAgdm9pZCBjb2xsZWN0
U3VwcG9ydGVkU2Vzc2lvbk1vZGVzKCk7CiAgICAgdm9pZCBjb2xsZWN0Q29uZmlndXJhdGlvblZp
ZXdzKCk7CiAgICAgWHJTcGFjZSBjcmVhdGVSZWZlcmVuY2VTcGFjZShYclJlZmVyZW5jZVNwYWNl
VHlwZSk7CkBAIC03NSw2ICs3Niw4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgT3BlblhSRXh0ZW5z
aW9ucyYgbV9leHRlbnNpb25zOwogICAgIFhyU2Vzc2lvbiBtX3Nlc3Npb24geyBYUl9OVUxMX0hB
TkRMRSB9OwogICAgIFhyU2Vzc2lvblN0YXRlIG1fc2Vzc2lvblN0YXRlIHsgWFJfU0VTU0lPTl9T
VEFURV9VTktOT1dOIH07CisgICAgWHJHcmFwaGljc0JpbmRpbmdFR0xNTkRYIG1fZ3JhcGhpY3NC
aW5kaW5nOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHTENvbnRleHRFR0w+IG1fZWds
OwogCiAgICAgdXNpbmcgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzTWFwID0gSGFzaE1hcDxY
clZpZXdDb25maWd1cmF0aW9uVHlwZSwgWHJWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMsIElu
dEhhc2g8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRz
PFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlPj47CiAgICAgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0
aWVzTWFwIG1fdmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L2NtYWtlL09wdGlvbnNXUEUuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQpp
bmRleCAyMDg2M2EwOGYxNjc4YTE1Mzc0OGZjMjEzNzRkN2QwMjc3MTE5MWI0Li43MWZlN2U4NDEw
NDUyMTM3MzlhMzNlNGQyMzljNjkxOTU3Y2NkNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc1dQRS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQpAQCAt
MTk2LDYgKzE5Niw4IEBAIGlmIChFTkFCTEVfV0VCWFIpCiAgICAgICAgIG1lc3NhZ2UoRkFUQUxf
RVJST1IgIk9wZW5YUiBpcyByZXF1aXJlZCB0byBlbmFibGUgV2ViWFIgc3VwcG9ydC4iKQogICAg
IGVuZGlmICgpCiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX09QRU5YUiAke09wZW5Y
Ul9GT1VORH0pCisgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoWFJfVVNFX1BMQVRGT1JNX0VH
TCBUUlVFKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFhSX1VTRV9HUkFQSElDU19BUElf
T1BFTkdMIFRSVUUpCiBlbmRpZiAoKQogCiBpZiAoVVNFX1NZU1RFTUQpCmRpZmYgLS1naXQgYS9D
aGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZTQ1OGY3OTY3NjdiMDJhZTFkYzY4ZWZmZjJiOWEw
ZmI3OTdiYjQ1Zi4uOTY2MTRiN2Q2OGY3MDE3MDMwYTk1NGU1NTk0ODlmMzkxZDg5OTJmMCAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIx
LTAyLTI0ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBPcGVuWFIgcG9ydCBncmFwaGljcyBiaW5kaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIxNzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgT3BlblhSIGRlZmluZXMg
cmVxdWlyZWQgZm9yIEVHTCBncmFwaGljcyBiaW5kaW5nLgorCisgICAgICAgICogU291cmNlL2Nt
YWtlL09wdGlvbnNXUEUuY21ha2U6CisKIDIwMjEtMDItMjMgIERvbiBPbG1zdGVhZCAgPGRvbi5v
bG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIEZpeCBKU0NPbmx5IGJ1aWxkIG9u
IFdpbmRvd3MK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421406</attachid>
            <date>2021-02-24 07:09:30 -0800</date>
            <delta_ts>2021-02-26 02:12:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222173-20210224160929.patch</filename>
            <type>text/plain</type>
            <size>25658</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VjNTYxMjQ4OTE3Njk0
ZTZhOGNiMjMyMmNiMWVkZWIzODk2MzQ0Ny4uOWMyMTk1MmU0Y2UyYThjNWRkZmQyMmYyZjAzNWY1
NmM5MGU2ZDgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTAyLTI0ICBJbWFu
b2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBPcGVuWFIgcG9ydCBncmFwaGljcyBiaW5kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIxNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGdyYXBoaWNz
IGJpbmRpbmcgcmVxdWlyZWQgdG8gaW5pdGlhbGl6ZSBPcGVuWFIgc2Vzc2lvbnMKKyAgICAgICAg
d2l0aCB0cmFja2luZyBhbmQgcmVuZGVyaW5nIHN1cHBvcnQuIFRoZSBjdXJyZW50IGltcGxlbWVu
dGF0aW9uIHdhcyB1c2luZyBhIGhlYWRsZXNzCisgICAgICAgIE9wZW5YUiBzZXNzaW9uIHdoaWNo
IGlzIG5vdCB2YWxpZCBmb3IgdHJhY2tpbmcuCisKKyAgICAgICAgVGhlIGhlYWRsZXNzIHNlc3Np
b24gd2FzIHVzZWQgdG8gYXZvaWQgYWxsb2NhdGluZyB0aGUgZ3JhcGhpY3MgcmVzb3VyY2VzIGR1
cmluZyBXZWJYUgorICAgICAgICBkZXZpY2UgZW51bWVyYXRpb24uIFRoZSBwcm9ibGVtIGlzIHRo
YXQgaXQgY2FuJ3QgYmUgY29udmVydGVkIGxhdGVyIHRvIGEgdmFsaWQgc2Vzc2lvbiBmb3IKKyAg
ICAgICAgdHJhY2tpbmcsIGFuZCB0aGUgZ2xvYmFsIFhySW5zdGFuY2UgbmVlZHMgdG8gYmUgcmVj
cmVhdGVkLiBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBuZXcgYXBwcm9hY2gKKyAgICAgICAgdG8g
a2VlcCB0aGUgZGVsYXllZCBncmFwaGljcyBpbml0aWFsaXphdGlvbiB3aXRob3V0IHVzaW5nIHRo
ZSBoZWFkbGVzcyBzZXNzaW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dM
Q29udGV4dEVHTC5jcHA6IEFkZCBFR0xDb25maWcgYXJndW1lbnQgdG8gY3JlYXRlIG1ldGhvZHMK
KyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlU3VyZmFjZWxlc3NDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmg6IEFkZCBFR0xDb25maWcgbWVt
YmVyCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTExpYldQRS5j
cHA6IGluaXRpYWxpemUgbV9jb25maWcKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6
R0xDb250ZXh0RUdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlV1BF
Q29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdh
eWxhbmQuY3BwOiBpbml0aWFsaXplIG1fY29uZmlnCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRFR0w6OkdMQ29udGV4dEVHTCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNy
ZWF0ZVdheWxhbmRDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMWDExLmNwcDogaW5pdGlhbGl6ZSBtX2NvbmZpZworICAgICAgICAoV2ViQ29yZTo6
R0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0wpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0
RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KToKKworICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54
ci9PcGVuWFJFeHRlbnNpb25zLmNwcDogQWRkIE9wZW5YUkV4dGVuc2lvbk1ldGhvZHMKKyAgICAg
ICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkV4dGVuc2lvbnM6OmxvYWRNZXRob2RzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSRXh0ZW5zaW9ucy5oOgorCisgICAgICAgICogcGxh
dGZvcm0veHIvb3BlbnhyL09wZW5YUkluc3RhbmNlLmNwcDogRW5hYmxlIGdycGFoaWNzIHJlbGF0
ZWQgZXh0ZW5zaW9ucyBpbnN0ZWFkIG9mIFhSX01ORF9IRUFETEVTU19FWFRFTlNJT04KKyAgICAg
ICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBsOjpJbXBsKToKKworICAgICAgICAqIHBsYXRm
b3JtL3hyL29wZW54ci9PcGVuWFJVdGlscy5oOiBGb3J3YXJkIGRlY2xhcmUgc3ltYm9scyByZXF1
aXJlZCBieSBvcGVueHJfcGxhdGZvcm0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIv
UGxhdGZvcm1YUk9wZW5YUi5jcHA6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6
OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyk6IFNldHVwIFhyR3JhcGhpY3NCaW5kaW5n
RUdMTU5EWAorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpjb2xsZWN0RW5hYmxl
ZEZlYXR1cmVzKTogQWx0ZXJuYXRpdmUgc29sdXRpb24gdG8gZW51bWVyYXRlUmVmZXJlbmNlU3Bh
Y2VzKCkKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRl
ZFNlc3Npb25Nb2Rlcyk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnJlc2V0
U2Vzc2lvbik6IGRlYWxsb2NhdGUgZ3JhcGhpYyByZXNvdXJjZXMKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oOgorCiAyMDIxLTAyLTI0ICBJbWFub2wgRmVy
bmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIE9wZW5Y
UiBwbGF0Zm9ybSBjb2RlIGludG8gZGlmZmVyZW50IGNsYXNzZXMgYW5kIGZpbGVzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNw
cAppbmRleCA2ZmI2NjJjYmZhMTNmMzAzMDU2MWVlZTFkM2ExNmU4ZTMxZjM1ZjA4Li42ZjkzOTk3
YjU4YTJjOWJjMzY2ZTYwY2FiZGYwNzFkMWNhOTBmOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApAQCAtMjA0LDcg
KzIwNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3Jl
YXRlV2luZG93Q29udGV4dChHTE5hdGl2ZVdpbmRvd1R5CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcg
R0xDb250ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgV2luZG93U3Vy
ZmFjZSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xD
b250ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgY29uZmlnLCBXaW5k
b3dTdXJmYWNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4
dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3Bs
YXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCkBAIC0yMzAsNyArMjMwLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQYnVmZmVyQ29udGV4
dChQbGF0Zm9ybURpc3BsYXkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxh
dGZvcm1EaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBQYnVmZmVyU3VyZmFjZSkpOworICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRm
b3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgY29uZmlnLCBQYnVmZmVyU3VyZmFjZSkpOwog
fQogCiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVN1
cmZhY2VsZXNzQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCkKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVN1cmZhY2VsZXNzQ29udGV4dChQbGF0
Zm9ybURpcwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3Bs
YXksIGNvbnRleHQsIEVHTF9OT19TVVJGQUNFLCBTdXJmYWNlbGVzcykpOworICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRmb3JtRGlz
cGxheSwgY29udGV4dCwgRUdMX05PX1NVUkZBQ0UsIGNvbmZpZywgU3VyZmFjZWxlc3MpKTsKIH0K
IAogc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250
ZXh0KEdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1E
aXNwbGF5KQpAQCAtMzUzLDEwICszNTMsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVH
TD4gR0xDb250ZXh0RUdMOjpjcmVhdGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXkKICAg
ICByZXR1cm4gY29udGV4dDsKIH0KIAotR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woUGxhdGZv
cm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFj
ZSwgRUdMU3VyZmFjZVR5cGUgdHlwZSkKK0dMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRm
b3JtRGlzcGxheSYgZGlzcGxheSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZh
Y2UsIEVHTENvbmZpZyBjb25maWcsIEVHTFN1cmZhY2VUeXBlIHR5cGUpCiAgICAgOiBHTENvbnRl
eHQoZGlzcGxheSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9zdXJmYWNlKHN1
cmZhY2UpCisgICAgLCBtX2NvbmZpZyhjb25maWcpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKICAg
ICBBU1NFUlQodHlwZSAhPSBQaXhtYXBTdXJmYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAppbmRleCA5MWJkZDRkNzIxYTZl
ZmE5Y2IxZTFjYjAxMTQwYmM1YjI0YmFhNDRlLi5mYzRlYmE5MWY1YjUxODk4YzEwOTY3MmRjMWI5
YTJiNzY0N2IwNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTC5oCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgY2hhciogZXJyb3JTdHJpbmcoaW50IHN0YXR1c0NvZGUpOwogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBsYXN0RXJyb3JTdHJpbmcoKTsKIAorICAgIEVHTENvbmZpZyBjb25maWcoKSBj
b25zdCB7IHJldHVybiBtX2NvbmZpZzsgfQorCiAgICAgdmlydHVhbCB+R0xDb250ZXh0RUdMKCk7
CiAKIHByaXZhdGU6CkBAIC03MSwxNiArNzMsMTYgQEAgcHJpdmF0ZToKIAogICAgIGVudW0gRUdM
U3VyZmFjZVR5cGUgeyBQYnVmZmVyU3VyZmFjZSwgV2luZG93U3VyZmFjZSwgUGl4bWFwU3VyZmFj
ZSwgU3VyZmFjZWxlc3MgfTsKIAotICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmLCBF
R0xDb250ZXh0LCBFR0xTdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSk7CisgICAgR0xDb250ZXh0RUdM
KFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTENvbmZpZywgRUdM
U3VyZmFjZVR5cGUpOwogI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBHTENvbnRleHRFR0woUGxhdGZv
cm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmKTsKKyAg
ICBHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwg
RUdMQ29uZmlnLCBYVW5pcXVlUGl4bWFwJiYpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oV0FZTEFO
RCkKLSAgICBHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3Vy
ZmFjZSwgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+JiYsIHN0cnVjdCB3bF9lZ2xfd2lu
ZG93Kik7CisgICAgR0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQsIEVH
TFN1cmZhY2UsIEVHTENvbmZpZywgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+JiYsIHN0
cnVjdCB3bF9lZ2xfd2luZG93Kik7CiAgICAgdm9pZCBkZXN0cm95V2F5bGFuZFdpbmRvdygpOwog
I2VuZGlmCiAjaWYgVVNFKFdQRV9SRU5ERVJFUikKLSAgICBHTENvbnRleHRFR0woUGxhdGZvcm1E
aXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgc3RydWN0IHdwZV9yZW5kZXJlcl9iYWNr
ZW5kX2VnbF9vZmZzY3JlZW5fdGFyZ2V0Kik7CisgICAgR0xDb250ZXh0RUdMKFBsYXRmb3JtRGlz
cGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTENvbmZpZywgc3RydWN0IHdwZV9yZW5k
ZXJlcl9iYWNrZW5kX2VnbF9vZmZzY3JlZW5fdGFyZ2V0Kik7CiAgICAgdm9pZCBkZXN0cm95V1BF
VGFyZ2V0KCk7CiAjZW5kaWYKIApAQCAtMTA0LDYgKzEwNiw3IEBAIHByaXZhdGU6CiAKICAgICBF
R0xDb250ZXh0IG1fY29udGV4dCB7IG51bGxwdHIgfTsKICAgICBFR0xTdXJmYWNlIG1fc3VyZmFj
ZSB7IG51bGxwdHIgfTsKKyAgICBFR0xDb25maWcgbV9jb25maWcgeyBudWxscHRyIH07CiAgICAg
RUdMU3VyZmFjZVR5cGUgbV90eXBlOwogI2lmIFBMQVRGT1JNKFgxMSkKICAgICBYVW5pcXVlUGl4
bWFwIG1fcGl4bWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMTGliV1BFLmNwcAppbmRleCA0MDhkZjNiMzk4ZDVjNDhj
MWI3NjI5NjU1NDliYTE2Yzk4N2EyMDBlLi42ODIzYjA1ZTRhNTcxNzU3OGVmNDJjM2ZjNzRhMmI0
NDI0NWFhNDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
Z2wvR0xDb250ZXh0RUdMTGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMTGliV1BFLmNwcApAQCAtNDAsMTAgKzQwLDExIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woUGxhdGZv
cm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFj
ZSwgc3RydWN0IHdwZV9yZW5kZXJlcl9iYWNrZW5kX2VnbF9vZmZzY3JlZW5fdGFyZ2V0KiB0YXJn
ZXQpCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXks
IEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xDb25maWcgY29uZmln
LCBzdHJ1Y3Qgd3BlX3JlbmRlcmVyX2JhY2tlbmRfZWdsX29mZnNjcmVlbl90YXJnZXQqIHRhcmdl
dCkKICAgICA6IEdMQ29udGV4dChkaXNwbGF5KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAg
ICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKKyAgICAsIG1fY29uZmlnKGNvbmZpZykKICAgICAsIG1f
dHlwZShXaW5kb3dTdXJmYWNlKQogICAgICwgbV93cGVUYXJnZXQodGFyZ2V0KQogewpAQCAtODks
NyArOTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNy
ZWF0ZVdQRUNvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbAogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3
IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIHRhcmdldCkp
OworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0
RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgY29uZmlnLCB0YXJnZXQpKTsK
IH0KIAogdm9pZCBHTENvbnRleHRFR0w6OmRlc3Ryb3lXUEVUYXJnZXQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdh
eWxhbmQuY3BwCmluZGV4IGNlYWI5MmQ5MjZhZTkzNmE4YWFkODliZTg2MDBmNjJhM2FiYjhlNjku
LmZhNmI2YWI5YmM2ZGRiZTkyYzAxNjliNjQ4NmI1ZTU5NWI5OTQxMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
V2F5bGFuZC5jcHAKQEAgLTI5LDEwICsyOSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgRUdM
Q29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIFdsVW5pcXVlUHRyPHN0cnVjdCB3
bF9zdXJmYWNlPiYmIHdsU3VyZmFjZSwgc3RydWN0IHdsX2VnbF93aW5kb3cqIHdsV2luZG93KQor
R0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xD
b250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMQ29uZmlnIGNvbmZpZywgV2xV
bmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+JiYgd2xTdXJmYWNlLCBzdHJ1Y3Qgd2xfZWdsX3dp
bmRvdyogd2xXaW5kb3cpCiAgICAgOiBHTENvbnRleHQoZGlzcGxheSkKICAgICAsIG1fY29udGV4
dChjb250ZXh0KQogICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCisgICAgLCBtX2NvbmZpZyhjb25m
aWcpCiAgICAgLCBtX3R5cGUoV2luZG93U3VyZmFjZSkKICAgICAsIG1fd2xTdXJmYWNlKFdURk1v
dmUod2xTdXJmYWNlKSkKICAgICAsIG1fd2xXaW5kb3cod2xXaW5kb3cpCkBAIC02OSw3ICs3MCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlV2F5
bGFuZENvbnRleHQoUGxhdGZvcm1EaXNwbGF5CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250
ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgV1RGTW92ZSh3bFN1cmZh
Y2UpLCB3aW5kb3cpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4o
bmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIGNvbmZp
ZywgV1RGTW92ZSh3bFN1cmZhY2UpLCB3aW5kb3cpKTsKIH0KIAogdm9pZCBHTENvbnRleHRFR0w6
OmRlc3Ryb3lXYXlsYW5kV2luZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xYMTEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAKaW5kZXggNjdhOGUwYjU5NjEx
YzU1ZTQzMzZmMmIxMzI0OGYyMDM4NzMxMThhNS4uOGY3MzIzOTk4OGU4NjljYjhmYzgzY2Y5ZDM0
Y2Y2NTdhYjdiMWFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAKQEAgLTI4LDEwICsyOCwxMSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3Jt
RGlzcGxheSYgZGlzcGxheSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2Us
IFhVbmlxdWVQaXhtYXAmJiBwaXhtYXApCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0
Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJm
YWNlLCBFR0xDb25maWcgY29uZmlnLCBYVW5pcXVlUGl4bWFwJiYgcGl4bWFwKQogICAgIDogR0xD
b250ZXh0KGRpc3BsYXkpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc3VyZmFj
ZShzdXJmYWNlKQorICAgICwgbV9jb25maWcoY29uZmlnKQogICAgICwgbV90eXBlKFBpeG1hcFN1
cmZhY2UpCiAgICAgLCBtX3BpeG1hcChXVEZNb3ZlKHBpeG1hcCkpCiB7CkBAIC05MCw3ICs5MSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4
bWFwQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250
ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgV1RGTW92ZShwaXhtYXAp
KSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRl
eHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBjb25maWcsIFdURk1vdmUo
cGl4bWFwKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSRXh0ZW5zaW9ucy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSRXh0ZW5zaW9ucy5jcHAKaW5kZXgg
ZmIzMWE3ZDNmM2Q2YTAzOTQ3OWE0NGIxMmFiMzM2YjMyZjhhOTkxNy4uYWU3ZmI5MjNjNjFmN2Fk
ZWUwNTg2YTljZjM4NDIxZDg2Yzc4MDA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0veHIvb3BlbnhyL09wZW5YUkV4dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJFeHRlbnNpb25zLmNwcApAQCAtMjIsNiArMjIsMjEg
QEAKIAogI2lmIEVOQUJMRShXRUJYUikgJiYgVVNFKE9QRU5YUikKIAorLy8gUmVxdWlyZWQgaW5j
bHVkZXMgdG8gcXVlcnkgZWdsR2V0UHJvY0FkZHJlc3MgZnVuY3Rpb24gYWRkcmVzcy4KKyNpZiBV
U0UoRUdMKQorCisjaWYgVVNFKExJQkVQT1hZKQorI2RlZmluZSBfX0dCTV9fIDEKKyNpbmNsdWRl
ICJFcG94eUVHTC5oIgorI2Vsc2UKKyNpZiBQTEFURk9STShXQVlMQU5EKQorI2luY2x1ZGUgPHdh
eWxhbmQtZWdsLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjZW5kaWYKKworI2Vu
ZGlmIC8vIFVTRShFR0wpCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
UGxhdGZvcm1YUiB7CkBAIC01NCw2ICs2OSwxNSBAQCBPcGVuWFJFeHRlbnNpb25zOjpPcGVuWFJF
eHRlbnNpb25zKFZlY3RvcjxYckV4dGVuc2lvblByb3BlcnRpZXM+JiYgZXh0ZW5zaW9ucykKIHsK
IH0KIAordm9pZCBPcGVuWFJFeHRlbnNpb25zOjpsb2FkTWV0aG9kcyhYckluc3RhbmNlIGluc3Rh
bmNlKQoreworI2lmIFVTRShFR0wpCisgICAgbV9tZXRob2RzLmdldFByb2NBZGRyZXNzRnVuYyA9
IGVnbEdldFByb2NBZGRyZXNzOworI2VuZGlmCisgICAgeHJHZXRJbnN0YW5jZVByb2NBZGRyKGlu
c3RhbmNlLCAieHJHZXRPcGVuR0xHcmFwaGljc1JlcXVpcmVtZW50c0tIUiIsCisgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOX3hyVm9pZEZ1bmN0aW9uKj4oJm1fbWV0aG9kcy54ckdldE9wZW5H
TEdyYXBoaWNzUmVxdWlyZW1lbnRzS0hSKSk7Cit9CisKIGJvb2wgT3BlblhSRXh0ZW5zaW9uczo6
aXNFeHRlbnNpb25TdXBwb3J0ZWQoY29uc3QgY2hhciogbmFtZSkgY29uc3QKIHsKICAgICBhdXRv
IHBvc2l0aW9uID0gbV9leHRlbnNpb25zLmZpbmRNYXRjaGluZyhbbmFtZV0oYXV0byYgcHJvcGVy
dHkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVu
WFJFeHRlbnNpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhS
RXh0ZW5zaW9ucy5oCmluZGV4IDRlNGNhMzhhODI1Yjc3NWJiMmY4Mjg2YzJlNmE3MjY4ZjEzYjMz
ZTAuLmFlYzgwY2U4Mzg5MjY4NjA1NzE2MDU2NjJlOGU5MmZhYmVjZjg0YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJFeHRlbnNpb25zLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkV4dGVuc2lvbnMuaApA
QCAtMjgsNiArMjgsMTEgQEAKIAogbmFtZXNwYWNlIFBsYXRmb3JtWFIgewogCitzdHJ1Y3QgT3Bl
blhSRXh0ZW5zaW9uTWV0aG9kcyB7CisgICAgUEZORUdMR0VUUFJPQ0FERFJFU1NQUk9DIGdldFBy
b2NBZGRyZXNzRnVuYyB7IG51bGxwdHIgfTsKKyAgICBQRk5feHJHZXRPcGVuR0xHcmFwaGljc1Jl
cXVpcmVtZW50c0tIUiB4ckdldE9wZW5HTEdyYXBoaWNzUmVxdWlyZW1lbnRzS0hSIHsgbnVsbHB0
ciB9OworfTsKKwogY2xhc3MgT3BlblhSRXh0ZW5zaW9ucyBmaW5hbCB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT3BlblhSRXh0ZW5zaW9u
cyk7CkBAIC0zNSwxMCArNDAsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8T3BlblhSRXh0ZW5zaW9ucz4gY3JlYXRlKCk7CiAgICAgT3BlblhSRXh0ZW5zaW9ucyhWZWN0
b3I8WHJFeHRlbnNpb25Qcm9wZXJ0aWVzPiYmKTsKIAorICAgIHZvaWQgbG9hZE1ldGhvZHMoWHJJ
bnN0YW5jZSk7CiAgICAgYm9vbCBpc0V4dGVuc2lvblN1cHBvcnRlZChjb25zdCBjaGFyKikgY29u
c3Q7CisgICAgY29uc3QgT3BlblhSRXh0ZW5zaW9uTWV0aG9kcyYgbWV0aG9kcygpIGNvbnN0IHsg
cmV0dXJuIG1fbWV0aG9kczsgfQogCiBwcml2YXRlOgogICAgIFZlY3RvcjxYckV4dGVuc2lvblBy
b3BlcnRpZXM+IG1fZXh0ZW5zaW9uczsKKyAgICBPcGVuWFJFeHRlbnNpb25NZXRob2RzIG1fbWV0
aG9kczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBsYXRmb3JtWFIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnN0YW5jZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5zdGFuY2UuY3BwCmluZGV4IDk0NmM5
YjU1ZDJjOGNjNWYxYWM4YjRlYWRkMDUyYzE3ZDMzNzYzM2MuLjhjYWM3YTcxZmM2ZmNhMWMwY2Y1
OTdlMjUzMmY4ZjA0NjcxNjkyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL29wZW54ci9PcGVuWFJJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL09wZW5YUkluc3RhbmNlLmNwcApAQCAtNTYsMTYgKzU2LDEyIEBAIEluc3Rh
bmNlOjpJbXBsOjpJbXBsKCkKICAgICAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgaWYgKCFtX2V4dGVuc2lvbnMtPmlzRXh0ZW5zaW9uU3VwcG9y
dGVkKFhSX01ORF9IRUFETEVTU19FWFRFTlNJT05fTkFNRSkpIHsKLSAgICAgICAgICAgIExPRyhY
UiwgIlJlcXVpcmVkIGV4dGVuc2lvbiAlcyBub3Qgc3VwcG9ydGVkIiwgWFJfTU5EX0hFQURMRVNT
X0VYVEVOU0lPTl9OQU1FKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCiAgICAg
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzX2FwcGxpY2F0aW9uTmFtZSA9ICJXZWJYUiAoV2ViS2l0
KSI7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2FwcGxpY2F0aW9uVmVyc2lvbiA9
IDE7CiAKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZW5hYmxlZEV4dGVuc2lvbnNbXSA9IHsK
LSAgICAgICAgICAgIFhSX01ORF9IRUFETEVTU19FWFRFTlNJT05fTkFNRQorICAgICAgICAgICAg
WFJfS0hSX09QRU5HTF9FTkFCTEVfRVhURU5TSU9OX05BTUUsCisgICAgICAgICAgICBYUl9NTkRY
X0VHTF9FTkFCTEVfRVhURU5TSU9OX05BTUUKICAgICAgICAgfTsKIAogICAgICAgICBhdXRvIGNy
ZWF0ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJJbnN0YW5jZUNyZWF0ZUluZm8sIFhSX1RZUEVf
SU5TVEFOQ0VfQ1JFQVRFX0lORk8+KCk7CkBAIC04Miw2ICs3OCw4IEBAIEluc3RhbmNlOjpJbXBs
OjpJbXBsKCkKICAgICAgICAgaWYgKG1faW5zdGFuY2UgPT0gWFJfTlVMTF9IQU5ETEUpCiAgICAg
ICAgICAgICByZXR1cm47CiAKKyAgICAgICAgbV9leHRlbnNpb25zLT5sb2FkTWV0aG9kcyhtX2lu
c3RhbmNlKTsKKwogICAgICAgICBMT0coWFIsICJ4ckNyZWF0ZUluc3RhbmNlKCk6IHVzaW5nIGlu
c3RhbmNlICVwXG4iLCBtX2luc3RhbmNlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJVdGlscy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmgKaW5kZXggZTFhYTU2YmZlMDg5NDhk
Yjc1Y2QyOTEwNzhjNTZjYjk0OTJhYjg0Ny4uZTc4OGVlMzk0YjhmYWRjYmZjZGE4ZGEzNThlYTE5
MDgyZWQ5N2IyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTIxLDkgKzIxLDE4IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpICYmIFVT
RShPUEVOWFIpCiAKKy8vIFN5bWJvbHMgcmVxdWlyZWQgYnkgb3BlbnhyX3BsYXRmb3JtCit0eXBl
ZGVmIHZvaWQgKkVHTENvbmZpZzsKK3R5cGVkZWYgdm9pZCAqRUdMQ29udGV4dDsKK3R5cGVkZWYg
dm9pZCAqRUdMRGlzcGxheTsKK3R5cGVkZWYgdm9pZCAqRUdMU3VyZmFjZTsKK3R5cGVkZWYgdm9p
ZCAoKl9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpKHZvaWQpOwordHlw
ZWRlZiBfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlICgqUEZORUdMR0VU
UFJPQ0FERFJFU1NQUk9DKShjb25zdCBjaGFyICpwcm9jKTsKKwogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCiAjaW5jbHVkZSA8b3BlbnhyL29wZW54ci5oPgor
I2luY2x1ZGUgPG9wZW54ci9vcGVueHJfcGxhdGZvcm0uaD4KIAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRm
b3JtWFJPcGVuWFIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRm
b3JtWFJPcGVuWFIuY3BwCmluZGV4IDVhYWYxODcxMzc4MWJkMjNjN2UyYzUwZTRkNmQyYTE2NDZk
MzVhOTQuLjUzMTJkODNiZjJhNzI4MDI4MGZmMWQ2MmVlNDczMDk2M2IxNzcwZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5Y
Ui5jcHAKQEAgLTgxLDE1ICs4MSwzOCBAQCB2b2lkIE9wZW5YUkRldmljZTo6aW5pdGlhbGl6ZVRy
YWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlIG1vZGUpCiAgICAgbV9xdWV1ZS5kaXNwYXRj
aChbdGhpcywgbW9kZV0oKSB7CiAgICAgICAgIEFTU0VSVChtX2luc3RhbmNlICE9IFhSX05VTExf
SEFORExFKTsKICAgICAgICAgQVNTRVJUKG1fc2Vzc2lvbiA9PSBYUl9OVUxMX0hBTkRMRSk7Cisg
ICAgICAgIEFTU0VSVChtX2V4dGVuc2lvbnMubWV0aG9kcygpLnhyR2V0T3BlbkdMR3JhcGhpY3NS
ZXF1aXJlbWVudHNLSFIpOwogCiAgICAgICAgIG1fY3VycmVudFZpZXdDb25maWd1cmF0aW9uVHlw
ZSA9IHRvWHJWaWV3Q29uZmlndXJhdGlvblR5cGUobW9kZSk7CiAgICAgICAgIEFTU0VSVChtX2Nv
bmZpZ3VyYXRpb25WaWV3cy5jb250YWlucyhtX2N1cnJlbnRWaWV3Q29uZmlndXJhdGlvblR5cGUp
KTsKIAorICAgICAgICAvLyBodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9PcGVuWFIv
c3BlY3MvMS4wL21hbi9odG1sL3hyR2V0T3BlbkdMR3JhcGhpY3NSZXF1aXJlbWVudHNLSFIuaHRt
bAorICAgICAgICAvLyBPcGVuWFIgcmVxdWlyZXMgdG8gY2FsbCB4ckdldE9wZW5HTEdyYXBoaWNz
UmVxdWlyZW1lbnRzS0hSIGJlZm9yZSBjcmVhdGluZyBhIHNlc3Npb24uCisgICAgICAgIGF1dG8g
cmVxdWlyZW1lbnRzID0gY3JlYXRlU3RydWN0dXJlPFhyR3JhcGhpY3NSZXF1aXJlbWVudHNPcGVu
R0xLSFIsIFhSX1RZUEVfR1JBUEhJQ1NfUkVRVUlSRU1FTlRTX09QRU5HTF9LSFI+KCk7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gbV9leHRlbnNpb25zLm1ldGhvZHMoKS54ckdldE9wZW5HTEdyYXBo
aWNzUmVxdWlyZW1lbnRzS0hSKG1faW5zdGFuY2UsIG1fc3lzdGVtSWQsICZyZXF1aXJlbWVudHMp
OworICAgICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyR2V0T3BlbkdMR3JhcGhpY3NS
ZXF1aXJlbWVudHNLSFIiLCBtX2luc3RhbmNlKTsKKworICAgICAgICBtX2dyYXBoaWNzQmluZGlu
ZyA9IGNyZWF0ZVN0cnVjdHVyZTxYckdyYXBoaWNzQmluZGluZ0VHTE1ORFgsIFhSX1RZUEVfR1JB
UEhJQ1NfQklORElOR19FR0xfTU5EWD4oKTsKKyAgICAgICAgbV9lZ2wgPSBHTENvbnRleHRFR0w6
OmNyZWF0ZVNoYXJpbmdDb250ZXh0KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKTsK
KyAgICAgICAgaWYgKCFtX2VnbCkgeworICAgICAgICAgICAgTE9HKFhSLCAiRmFpbGVkIHRvIGNy
ZWF0ZSBFR0wgY29udGV4dCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgYXV0byYgY29udGV4dCA9IHN0YXRpY19jYXN0PEdMQ29udGV4dCY+KCptX2VnbCk7Cisg
ICAgICAgIGNvbnRleHQubWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICAgICAgbV9ncmFwaGlj
c0JpbmRpbmcuZGlzcGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERp
c3BsYXkoKTsKKyAgICAgICAgbV9ncmFwaGljc0JpbmRpbmcuY29udGV4dCA9IGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCk7CisgICAgICAgIG1fZ3JhcGhpY3NCaW5kaW5nLmNvbmZpZyA9IG1fZWds
LT5jb25maWcoKTsKKyAgICAgICAgbV9ncmFwaGljc0JpbmRpbmcuZ2V0UHJvY0FkZHJlc3MgPSBt
X2V4dGVuc2lvbnMubWV0aG9kcygpLmdldFByb2NBZGRyZXNzRnVuYzsKKwogICAgICAgICAvLyBD
cmVhdGUgdGhlIHNlc3Npb24uCiAgICAgICAgIGF1dG8gc2Vzc2lvbkNyZWF0ZUluZm8gPSBjcmVh
dGVTdHJ1Y3R1cmU8WHJTZXNzaW9uQ3JlYXRlSW5mbywgWFJfVFlQRV9TRVNTSU9OX0NSRUFURV9J
TkZPPigpOwogICAgICAgICBzZXNzaW9uQ3JlYXRlSW5mby5zeXN0ZW1JZCA9IG1fc3lzdGVtSWQ7
CisgICAgICAgIHNlc3Npb25DcmVhdGVJbmZvLm5leHQgPSAmbV9ncmFwaGljc0JpbmRpbmc7CiAK
LSAgICAgICAgYXV0byByZXN1bHQgPSB4ckNyZWF0ZVNlc3Npb24obV9pbnN0YW5jZSwgJnNlc3Np
b25DcmVhdGVJbmZvLCAmbV9zZXNzaW9uKTsKKyAgICAgICAgcmVzdWx0ID0geHJDcmVhdGVTZXNz
aW9uKG1faW5zdGFuY2UsICZzZXNzaW9uQ3JlYXRlSW5mbywgJm1fc2Vzc2lvbik7CiAgICAgICAg
IFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblBy
b3BlcnRpZXMiLCBtX2luc3RhbmNlKTsKIAogICAgICAgICAvLyBDcmVhdGUgdGhlIGRlZmF1bHQg
cmVmZXJlbmNlIHNwYWNlcwpAQCAtMjIwLDQzICsyNDMsMjYgQEAgVmVjdG9yPERldmljZTo6Vmll
d0RhdGE+IE9wZW5YUkRldmljZTo6dmlld3MoU2Vzc2lvbk1vZGUgbW9kZSkgY29uc3QKICAgICBy
ZXR1cm4gdmlld3M7CiB9CiAKLURldmljZTo6TGlzdE9mRW5hYmxlZEZlYXR1cmVzIE9wZW5YUkRl
dmljZTo6ZW51bWVyYXRlUmVmZXJlbmNlU3BhY2VzKFhyU2Vzc2lvbiBzZXNzaW9uKSBjb25zdAor
RGV2aWNlOjpMaXN0T2ZFbmFibGVkRmVhdHVyZXMgT3BlblhSRGV2aWNlOjpjb2xsZWN0RW5hYmxl
ZEZlYXR1cmVzKCkKIHsKLSAgICB1aW50MzJfdCByZWZlcmVuY2VTcGFjZXNDb3VudDsKLSAgICBh
dXRvIHJlc3VsdCA9IHhyRW51bWVyYXRlUmVmZXJlbmNlU3BhY2VzKHNlc3Npb24sIDAsICZyZWZl
cmVuY2VTcGFjZXNDb3VudCwgbnVsbHB0cik7Ci0gICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQs
ICJ4ckVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyIsIG1faW5zdGFuY2UsIHsgfSk7Ci0KLSAgICBW
ZWN0b3I8WHJSZWZlcmVuY2VTcGFjZVR5cGU+IHJlZmVyZW5jZVNwYWNlcyhyZWZlcmVuY2VTcGFj
ZXNDb3VudCk7Ci0gICAgcmVmZXJlbmNlU3BhY2VzLmZpbGwoWFJfUkVGRVJFTkNFX1NQQUNFX1RZ
UEVfVklFVywgcmVmZXJlbmNlU3BhY2VzQ291bnQpOwotICAgIHJlc3VsdCA9IHhyRW51bWVyYXRl
UmVmZXJlbmNlU3BhY2VzKHNlc3Npb24sIHJlZmVyZW5jZVNwYWNlc0NvdW50LCAmcmVmZXJlbmNl
U3BhY2VzQ291bnQsIHJlZmVyZW5jZVNwYWNlcy5kYXRhKCkpOwotICAgIFJFVFVSTl9JRl9GQUlM
RUQocmVzdWx0LCAieHJFbnVtZXJhdGVSZWZlcmVuY2VTcGFjZXMiLCBtX2luc3RhbmNlLCB7IH0p
OwotCi0gICAgTGlzdE9mRW5hYmxlZEZlYXR1cmVzIGVuYWJsZWRGZWF0dXJlczsKLSAgICBmb3Ig
KGF1dG8mIHJlZmVyZW5jZVNwYWNlIDogcmVmZXJlbmNlU3BhY2VzKSB7Ci0gICAgICAgIHN3aXRj
aCAocmVmZXJlbmNlU3BhY2UpIHsKLSAgICAgICAgY2FzZSBYUl9SRUZFUkVOQ0VfU1BBQ0VfVFlQ
RV9WSUVXOgotICAgICAgICAgICAgZW5hYmxlZEZlYXR1cmVzLmFwcGVuZChSZWZlcmVuY2VTcGFj
ZVR5cGU6OlZpZXdlcik7Ci0gICAgICAgICAgICBMT0coWFIsICJcdERldmljZSBzdXBwb3J0cyBW
SUVXIHJlZmVyZW5jZSBzcGFjZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
WFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfTE9DQUw6Ci0gICAgICAgICAgICBlbmFibGVkRmVhdHVy
ZXMuYXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWwpOwotICAgICAgICAgICAgTE9HKFhS
LCAiXHREZXZpY2Ugc3VwcG9ydHMgTE9DQUwgcmVmZXJlbmNlIHNwYWNlIik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBYUl9SRUZFUkVOQ0VfU1BBQ0VfVFlQRV9TVEFHRToKLSAg
ICAgICAgICAgIGVuYWJsZWRGZWF0dXJlcy5hcHBlbmQoUmVmZXJlbmNlU3BhY2VUeXBlOjpMb2Nh
bEZsb29yKTsKLSAgICAgICAgICAgIGVuYWJsZWRGZWF0dXJlcy5hcHBlbmQoUmVmZXJlbmNlU3Bh
Y2VUeXBlOjpCb3VuZGVkRmxvb3IpOwotICAgICAgICAgICAgTE9HKFhSLCAiXHREZXZpY2Ugc3Vw
cG9ydHMgU1RBR0UgcmVmZXJlbmNlIHNwYWNlIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBYUl9SRUZFUkVOQ0VfU1BBQ0VfVFlQRV9VTkJPVU5ERURfTVNGVDoKLSAgICAgICAg
ICAgIGVuYWJsZWRGZWF0dXJlcy5hcHBlbmQoUmVmZXJlbmNlU3BhY2VUeXBlOjpVbmJvdW5kZWQp
OwotICAgICAgICAgICAgTE9HKFhSLCAiXHREZXZpY2Ugc3VwcG9ydHMgVU5CT1VOREVEIHJlZmVy
ZW5jZSBzcGFjZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgIH0KKyAgICBEZXZpY2U6Okxpc3RPZkVu
YWJsZWRGZWF0dXJlcyBmZWF0dXJlczsKKworICAgIC8vIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3Jn
L3JlZ2lzdHJ5L09wZW5YUi9zcGVjcy8xLjAvbWFuL2h0bWwvWHJSZWZlcmVuY2VTcGFjZVR5cGUu
aHRtbAorICAgIC8vIE9wZW5YUiBydW50aW1lcyBtdXN0IHN1cHBvcnQgVmlld2VyIGFuZCBMb2Nh
bCBzcGFjZXMuCisgICAgZmVhdHVyZXMuYXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6Vmlld2Vy
KTsKKyAgICBmZWF0dXJlcy5hcHBlbmQoUmVmZXJlbmNlU3BhY2VUeXBlOjpMb2NhbCk7CiAKLSAg
ICByZXR1cm4gZW5hYmxlZEZlYXR1cmVzOworICAgIC8vIE1hcmsgTG9jYWxGbG9vciBhcyBzdXBw
b3J0ZWQgcmVnYXJkbGVzcyBpZiBYUl9SRUZFUkVOQ0VfU1BBQ0VfVFlQRV9TVEFHRSBpcyBhdmFp
bGFibGUuCisgICAgLy8gVGhlIHNwZWMgdXNlcyBhIGVzdGltYXRlZCBoZWlnaHQgaWYgd2UgZG9u
J3QgcHJvdmlkZSBhIGZsb29yIHRyYW5zZm9ybSBpbiBmcmFtZURhdGEuCisgICAgZmVhdHVyZXMu
YXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWxGbG9vcik7CisKKyAgICAvLyBGSVhNRTog
RW5hYmxlIEJvdW5kZWRGbG9vciB3aGVuIHdlIGltcGxlbWVudCB4ckdldFJlZmVyZW5jZVNwYWNl
Qm91bmRzUmVjdCBhbmQgdGhlIHJlbGF0ZWQgYml0cyBpbiB0aGUgRE9NLgorICAgIC8vIGVuYWJs
ZWRGZWF0dXJlcy5hcHBlbmQoUmVmZXJlbmNlU3BhY2VUeXBlOjpCb3VuZGVkRmxvb3IpOworCisg
ICAgaWYgKG1fZXh0ZW5zaW9ucy5pc0V4dGVuc2lvblN1cHBvcnRlZChYUl9NU0ZUX1VOQk9VTkRF
RF9SRUZFUkVOQ0VfU1BBQ0VfRVhURU5TSU9OX05BTUUpKQorICAgICAgICBmZWF0dXJlcy5hcHBl
bmQoUmVmZXJlbmNlU3BhY2VUeXBlOjpVbmJvdW5kZWQpOworCisgICAgcmV0dXJuIGZlYXR1cmVz
OwogfQogCiB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRlZFNlc3Npb25Nb2Rlcygp
CkBAIC0yNzAsMTUgKzI3Niw3IEBAIHZvaWQgT3BlblhSRGV2aWNlOjpjb2xsZWN0U3VwcG9ydGVk
U2Vzc2lvbk1vZGVzKCkKICAgICByZXN1bHQgPSB4ckVudW1lcmF0ZVZpZXdDb25maWd1cmF0aW9u
cyhtX2luc3RhbmNlLCBtX3N5c3RlbUlkLCB2aWV3Q29uZmlndXJhdGlvbkNvdW50LCAmdmlld0Nv
bmZpZ3VyYXRpb25Db3VudCwgdmlld0NvbmZpZ3VyYXRpb25zKTsKICAgICBSRVRVUk5fSUZfRkFJ
TEVEKHJlc3VsdCwgInhyRW51bWVyYXRlVmlld0NvbmZpZ3VyYXRpb25zIiwgbV9pbnN0YW5jZSk7
CiAKLSAgICAvLyBSZXRyaWV2aW5nIHRoZSBzdXBwb3J0ZWQgcmVmZXJlbmNlIHNwYWNlcyByZXF1
aXJlcyBhbiBpbml0aWFsaXplZCBzZXNzaW9uLiBUaGVyZSBpcyBubyBuZWVkIHRvIGluaXRpYWxp
emUgYWxsIHRoZSBncmFwaGljcwotICAgIC8vIHN0dWZmIHNvIHdlJ2xsIHVzZSBhIGhlYWRsZXNz
IHNlc3Npb24gdGhhdCB3aWxsIGJlIGRpc2NhcmRlZCBhZnRlciBnZXR0aW5nIHRoZSBpbmZvIHdl
IG5lZWQuCi0gICAgYXV0byBzZXNzaW9uQ3JlYXRlSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYclNl
c3Npb25DcmVhdGVJbmZvLCBYUl9UWVBFX1NFU1NJT05fQ1JFQVRFX0lORk8+KCk7Ci0gICAgc2Vz
c2lvbkNyZWF0ZUluZm8uc3lzdGVtSWQgPSBtX3N5c3RlbUlkOwotICAgIFhyU2Vzc2lvbiBlcGhl
bWVyYWxTZXNzaW9uOwotICAgIHJlc3VsdCA9IHhyQ3JlYXRlU2Vzc2lvbihtX2luc3RhbmNlLCAm
c2Vzc2lvbkNyZWF0ZUluZm8sICZlcGhlbWVyYWxTZXNzaW9uKTsKLSAgICBSRVRVUk5fSUZfRkFJ
TEVEKHJlc3VsdCwgInhyQ3JlYXRlU2Vzc2lvbiIsIG1faW5zdGFuY2UpOwotCi0gICAgTGlzdE9m
RW5hYmxlZEZlYXR1cmVzIGZlYXR1cmVzID0gZW51bWVyYXRlUmVmZXJlbmNlU3BhY2VzKGVwaGVt
ZXJhbFNlc3Npb24pOworICAgIExpc3RPZkVuYWJsZWRGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbGxl
Y3RFbmFibGVkRmVhdHVyZXMoKTsKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgdmlld0Nv
bmZpZ3VyYXRpb25Db3VudDsgKytpKSB7CiAgICAgICAgIGF1dG8gdmlld0NvbmZpZ3VyYXRpb25Q
cm9wZXJ0aWVzID0gY3JlYXRlU3RydWN0dXJlPFhyVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVz
LCBYUl9UWVBFX1ZJRVdfQ09ORklHVVJBVElPTl9QUk9QRVJUSUVTPigpOwogICAgICAgICByZXN1
bHQgPSB4ckdldFZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllcyhtX2luc3RhbmNlLCBtX3N5c3Rl
bUlkLCB2aWV3Q29uZmlndXJhdGlvbnNbaV0sICZ2aWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMp
OwpAQCAtMjk5LDcgKzI5Nyw2IEBAIHZvaWQgT3BlblhSRGV2aWNlOjpjb2xsZWN0U3VwcG9ydGVk
U2Vzc2lvbk1vZGVzKCkKICAgICAgICAgfTsKICAgICAgICAgbV92aWV3Q29uZmlndXJhdGlvblBy
b3BlcnRpZXMuYWRkKGNvbmZpZ1R5cGUsIFdURk1vdmUodmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0
aWVzKSk7CiAgICAgfQotICAgIHhyRGVzdHJveVNlc3Npb24oZXBoZW1lcmFsU2Vzc2lvbik7CiB9
CiAKIHZvaWQgT3BlblhSRGV2aWNlOjpjb2xsZWN0Q29uZmlndXJhdGlvblZpZXdzKCkKQEAgLTQx
Niw2ICs0MTMsOSBAQCB2b2lkIE9wZW5YUkRldmljZTo6cmVzZXRTZXNzaW9uKCkKICAgICAgICAg
bV9zZXNzaW9uID0gWFJfTlVMTF9IQU5ETEU7CiAgICAgfQogICAgIG1fc2Vzc2lvblN0YXRlID0g
WFJfU0VTU0lPTl9TVEFURV9VTktOT1dOOworCisgICAgLy8gZGVhbGxvY2F0ZSBncmFwaGljIHJl
c291cmNlcworICAgIG1fZWdsLnJlc2V0KCk7CiB9CiAKIHZvaWQgT3BlblhSRGV2aWNlOjpoYW5k
bGVTZXNzaW9uU3RhdGVDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKaW5kZXggNzZjYTU5Y2ZiZWNlZWJjZGIwYmZl
MzAyOWI0ZmNmOTEwMzkzMDQyMC4uMzE3ODM2OTFmNGE5M2JiYmQ0ODA3OTE2YmQ1NjliYzY2MDdj
OTE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRm
b3JtWFJPcGVuWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxh
dGZvcm1YUk9wZW5YUi5oCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpICYm
IFVTRShPUEVOWFIpCiAKKyNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKICNpbmNsdWRlICJPcGVu
WFJVdGlscy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKIApAQCAtNTgsNyArNTksNyBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxWaWV3RGF0YT4gdmlld3MoU2Vzc2lvbk1vZGUpIGNvbnN0IGZp
bmFsOwogCiAgICAgLy8gQ3VzdG9tIG1ldGhvZHMKLSAgICBMaXN0T2ZFbmFibGVkRmVhdHVyZXMg
ZW51bWVyYXRlUmVmZXJlbmNlU3BhY2VzKFhyU2Vzc2lvbikgY29uc3Q7CisgICAgTGlzdE9mRW5h
YmxlZEZlYXR1cmVzIGNvbGxlY3RFbmFibGVkRmVhdHVyZXMoKTsKICAgICB2b2lkIGNvbGxlY3RT
dXBwb3J0ZWRTZXNzaW9uTW9kZXMoKTsKICAgICB2b2lkIGNvbGxlY3RDb25maWd1cmF0aW9uVmll
d3MoKTsKICAgICBYclNwYWNlIGNyZWF0ZVJlZmVyZW5jZVNwYWNlKFhyUmVmZXJlbmNlU3BhY2VU
eXBlKTsKQEAgLTc1LDYgKzc2LDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBPcGVuWFJFeHRlbnNp
b25zJiBtX2V4dGVuc2lvbnM7CiAgICAgWHJTZXNzaW9uIG1fc2Vzc2lvbiB7IFhSX05VTExfSEFO
RExFIH07CiAgICAgWHJTZXNzaW9uU3RhdGUgbV9zZXNzaW9uU3RhdGUgeyBYUl9TRVNTSU9OX1NU
QVRFX1VOS05PV04gfTsKKyAgICBYckdyYXBoaWNzQmluZGluZ0VHTE1ORFggbV9ncmFwaGljc0Jp
bmRpbmc7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdMQ29udGV4dEVHTD4gbV9lZ2w7
CiAKICAgICB1c2luZyBWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXNNYXAgPSBIYXNoTWFwPFhy
Vmlld0NvbmZpZ3VyYXRpb25UeXBlLCBYclZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllcywgSW50
SGFzaDxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8
WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+PjsKICAgICBWaWV3Q29uZmlndXJhdGlvblByb3BlcnRp
ZXNNYXAgbV92aWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1dQRS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCmlu
ZGV4IDIwODYzYTA4ZjE2NzhhMTUzNzQ4ZmMyMTM3NGQ3ZDAyNzcxMTkxYjQuLjcxZmU3ZTg0MTA0
NTIxMzczOWEzM2U0ZDIzOWM2OTE5NTdjY2Q1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCkBAIC0x
OTYsNiArMTk2LDggQEAgaWYgKEVOQUJMRV9XRUJYUikKICAgICAgICAgbWVzc2FnZShGQVRBTF9F
UlJPUiAiT3BlblhSIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBXZWJYUiBzdXBwb3J0LiIpCiAgICAg
ZW5kaWYgKCkKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfT1BFTlhSICR7T3BlblhS
X0ZPVU5EfSkKKyAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChYUl9VU0VfUExBVEZPUk1fRUdM
IFRSVUUpCisgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoWFJfVVNFX0dSQVBISUNTX0FQSV9P
UEVOR0wgVFJVRSkKIGVuZGlmICgpCiAKIGlmIChVU0VfU1lTVEVNRCkKZGlmZiAtLWdpdCBhL0No
YW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlNDU4Zjc5Njc2N2IwMmFlMWRjNjhlZmZmMmI5YTBm
Yjc5N2JiNDVmLi45NjYxNGI3ZDY4ZjcwMTcwMzBhOTU0ZTU1OTQ4OWYzOTFkODk5MmYwIDEwMDY0
NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEt
MDItMjQgIEltYW5vbCBGZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IE9wZW5YUiBwb3J0IGdyYXBoaWNzIGJpbmRpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjE3MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBPcGVuWFIgZGVmaW5lcyBy
ZXF1aXJlZCBmb3IgRUdMIGdyYXBoaWNzIGJpbmRpbmcuCisKKyAgICAgICAgKiBTb3VyY2UvY21h
a2UvT3B0aW9uc1dQRS5jbWFrZToKKwogMjAyMS0wMi0yMyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9s
bXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0gRml4IEpTQ09ubHkgYnVpbGQgb24g
V2luZG93cwo=
</data>
<flag name="review"
          id="440238"
          type_id="1"
          status="+"
          setter="svillar"
    />
    <flag name="commit-queue"
          id="440239"
          type_id="3"
          status="-"
          setter="svillar"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421630</attachid>
            <date>2021-02-26 02:39:47 -0800</date>
            <delta_ts>2021-02-26 03:53:13 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-222173-20210226113945.patch</filename>
            <type>text/plain</type>
            <size>25206</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VjNTYxMjQ4OTE3Njk0
ZTZhOGNiMjMyMmNiMWVkZWIzODk2MzQ0Ny4uMTkyNjQ2NTQ1YzQ1MGM4MTE2ZGE2ZmQ1NzlhOGQ4
YzhiZDU4MjZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTAyLTI0ICBJbWFu
b2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBPcGVuWFIgcG9ydCBncmFwaGljcyBiaW5kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIxNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGdyYXBoaWNz
IGJpbmRpbmcgcmVxdWlyZWQgdG8gaW5pdGlhbGl6ZSBPcGVuWFIgc2Vzc2lvbnMKKyAgICAgICAg
d2l0aCB0cmFja2luZyBhbmQgcmVuZGVyaW5nIHN1cHBvcnQuIFRoZSBjdXJyZW50IGltcGxlbWVu
dGF0aW9uIHdhcyB1c2luZyBhIGhlYWRsZXNzCisgICAgICAgIE9wZW5YUiBzZXNzaW9uIHdoaWNo
IGlzIG5vdCB2YWxpZCBmb3IgdHJhY2tpbmcuCisKKyAgICAgICAgVGhlIGhlYWRsZXNzIHNlc3Np
b24gd2FzIHVzZWQgdG8gYXZvaWQgYWxsb2NhdGluZyB0aGUgZ3JhcGhpY3MgcmVzb3VyY2VzIGR1
cmluZyBXZWJYUgorICAgICAgICBkZXZpY2UgZW51bWVyYXRpb24uIFRoZSBwcm9ibGVtIGlzIHRo
YXQgaXQgY2FuJ3QgYmUgY29udmVydGVkIGxhdGVyIHRvIGEgdmFsaWQgc2Vzc2lvbiBmb3IKKyAg
ICAgICAgdHJhY2tpbmcsIGFuZCB0aGUgZ2xvYmFsIFhySW5zdGFuY2UgbmVlZHMgdG8gYmUgcmVj
cmVhdGVkLiBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBuZXcgYXBwcm9hY2gKKyAgICAgICAgdG8g
a2VlcCB0aGUgZGVsYXllZCBncmFwaGljcyBpbml0aWFsaXphdGlvbiB3aXRob3V0IHVzaW5nIHRo
ZSBoZWFkbGVzcyBzZXNzaW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dM
Q29udGV4dEVHTC5jcHA6IEFkZCBFR0xDb25maWcgYXJndW1lbnQgdG8gY3JlYXRlIG1ldGhvZHMK
KyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlU3VyZmFjZWxlc3NDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmg6IEFkZCBFR0xDb25maWcgbWVt
YmVyCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTExpYldQRS5j
cHA6IGluaXRpYWxpemUgbV9jb25maWcKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6
R0xDb250ZXh0RUdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlV1BF
Q29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdh
eWxhbmQuY3BwOiBpbml0aWFsaXplIG1fY29uZmlnCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRFR0w6OkdMQ29udGV4dEVHTCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNy
ZWF0ZVdheWxhbmRDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMWDExLmNwcDogaW5pdGlhbGl6ZSBtX2NvbmZpZworICAgICAgICAoV2ViQ29yZTo6
R0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0wpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0
RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KToKKworICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54
ci9PcGVuWFJFeHRlbnNpb25zLmNwcDogQWRkIE9wZW5YUkV4dGVuc2lvbk1ldGhvZHMKKyAgICAg
ICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkV4dGVuc2lvbnM6OmxvYWRNZXRob2RzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSRXh0ZW5zaW9ucy5oOgorCisgICAgICAgICogcGxh
dGZvcm0veHIvb3BlbnhyL09wZW5YUkluc3RhbmNlLmNwcDogRW5hYmxlIGdyYXBoaWNzIHJlbGF0
ZWQgZXh0ZW5zaW9ucyBpbnN0ZWFkIG9mIFhSX01ORF9IRUFETEVTU19FWFRFTlNJT04KKyAgICAg
ICAgKFBsYXRmb3JtWFI6Okluc3RhbmNlOjpJbXBsOjpJbXBsKToKKworICAgICAgICAqIHBsYXRm
b3JtL3hyL29wZW54ci9PcGVuWFJVdGlscy5oOiBGb3J3YXJkIGRlY2xhcmUgc3ltYm9scyByZXF1
aXJlZCBieSBvcGVueHJfcGxhdGZvcm0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIv
UGxhdGZvcm1YUk9wZW5YUi5jcHA6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6
OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyk6IFNldHVwIFhyR3JhcGhpY3NCaW5kaW5n
RUdMTU5EWAorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpjb2xsZWN0RW5hYmxl
ZEZlYXR1cmVzKTogQWx0ZXJuYXRpdmUgc29sdXRpb24gdG8gZW51bWVyYXRlUmVmZXJlbmNlU3Bh
Y2VzKCkKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRl
ZFNlc3Npb25Nb2Rlcyk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnJlc2V0
U2Vzc2lvbik6IGRlYWxsb2NhdGUgZ3JhcGhpYyByZXNvdXJjZXMKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oOgorCiAyMDIxLTAyLTI0ICBJbWFub2wgRmVy
bmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIE9wZW5Y
UiBwbGF0Zm9ybSBjb2RlIGludG8gZGlmZmVyZW50IGNsYXNzZXMgYW5kIGZpbGVzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNw
cAppbmRleCA2ZmI2NjJjYmZhMTNmMzAzMDU2MWVlZTFkM2ExNmU4ZTMxZjM1ZjA4Li42ZjkzOTk3
YjU4YTJjOWJjMzY2ZTYwY2FiZGYwNzFkMWNhOTBmOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApAQCAtMjA0LDcg
KzIwNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3Jl
YXRlV2luZG93Q29udGV4dChHTE5hdGl2ZVdpbmRvd1R5CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcg
R0xDb250ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgV2luZG93U3Vy
ZmFjZSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xD
b250ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgY29uZmlnLCBXaW5k
b3dTdXJmYWNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4
dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3Bs
YXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCkBAIC0yMzAsNyArMjMwLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQYnVmZmVyQ29udGV4
dChQbGF0Zm9ybURpc3BsYXkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxh
dGZvcm1EaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBQYnVmZmVyU3VyZmFjZSkpOworICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRm
b3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgY29uZmlnLCBQYnVmZmVyU3VyZmFjZSkpOwog
fQogCiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVN1
cmZhY2VsZXNzQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCkKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVN1cmZhY2VsZXNzQ29udGV4dChQbGF0
Zm9ybURpcwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3Bs
YXksIGNvbnRleHQsIEVHTF9OT19TVVJGQUNFLCBTdXJmYWNlbGVzcykpOworICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRmb3JtRGlz
cGxheSwgY29udGV4dCwgRUdMX05PX1NVUkZBQ0UsIGNvbmZpZywgU3VyZmFjZWxlc3MpKTsKIH0K
IAogc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250
ZXh0KEdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1E
aXNwbGF5KQpAQCAtMzUzLDEwICszNTMsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVH
TD4gR0xDb250ZXh0RUdMOjpjcmVhdGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXkKICAg
ICByZXR1cm4gY29udGV4dDsKIH0KIAotR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woUGxhdGZv
cm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFj
ZSwgRUdMU3VyZmFjZVR5cGUgdHlwZSkKK0dMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRm
b3JtRGlzcGxheSYgZGlzcGxheSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZh
Y2UsIEVHTENvbmZpZyBjb25maWcsIEVHTFN1cmZhY2VUeXBlIHR5cGUpCiAgICAgOiBHTENvbnRl
eHQoZGlzcGxheSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9zdXJmYWNlKHN1
cmZhY2UpCisgICAgLCBtX2NvbmZpZyhjb25maWcpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKICAg
ICBBU1NFUlQodHlwZSAhPSBQaXhtYXBTdXJmYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAppbmRleCA5MWJkZDRkNzIxYTZl
ZmE5Y2IxZTFjYjAxMTQwYmM1YjI0YmFhNDRlLi5mYzRlYmE5MWY1YjUxODk4YzEwOTY3MmRjMWI5
YTJiNzY0N2IwNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTC5oCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgY2hhciogZXJyb3JTdHJpbmcoaW50IHN0YXR1c0NvZGUpOwogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBsYXN0RXJyb3JTdHJpbmcoKTsKIAorICAgIEVHTENvbmZpZyBjb25maWcoKSBj
b25zdCB7IHJldHVybiBtX2NvbmZpZzsgfQorCiAgICAgdmlydHVhbCB+R0xDb250ZXh0RUdMKCk7
CiAKIHByaXZhdGU6CkBAIC03MSwxNiArNzMsMTYgQEAgcHJpdmF0ZToKIAogICAgIGVudW0gRUdM
U3VyZmFjZVR5cGUgeyBQYnVmZmVyU3VyZmFjZSwgV2luZG93U3VyZmFjZSwgUGl4bWFwU3VyZmFj
ZSwgU3VyZmFjZWxlc3MgfTsKIAotICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmLCBF
R0xDb250ZXh0LCBFR0xTdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSk7CisgICAgR0xDb250ZXh0RUdM
KFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTENvbmZpZywgRUdM
U3VyZmFjZVR5cGUpOwogI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBHTENvbnRleHRFR0woUGxhdGZv
cm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmKTsKKyAg
ICBHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwg
RUdMQ29uZmlnLCBYVW5pcXVlUGl4bWFwJiYpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oV0FZTEFO
RCkKLSAgICBHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3Vy
ZmFjZSwgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+JiYsIHN0cnVjdCB3bF9lZ2xfd2lu
ZG93Kik7CisgICAgR0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQsIEVH
TFN1cmZhY2UsIEVHTENvbmZpZywgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+JiYsIHN0
cnVjdCB3bF9lZ2xfd2luZG93Kik7CiAgICAgdm9pZCBkZXN0cm95V2F5bGFuZFdpbmRvdygpOwog
I2VuZGlmCiAjaWYgVVNFKFdQRV9SRU5ERVJFUikKLSAgICBHTENvbnRleHRFR0woUGxhdGZvcm1E
aXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgc3RydWN0IHdwZV9yZW5kZXJlcl9iYWNr
ZW5kX2VnbF9vZmZzY3JlZW5fdGFyZ2V0Kik7CisgICAgR0xDb250ZXh0RUdMKFBsYXRmb3JtRGlz
cGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTENvbmZpZywgc3RydWN0IHdwZV9yZW5k
ZXJlcl9iYWNrZW5kX2VnbF9vZmZzY3JlZW5fdGFyZ2V0Kik7CiAgICAgdm9pZCBkZXN0cm95V1BF
VGFyZ2V0KCk7CiAjZW5kaWYKIApAQCAtMTA0LDYgKzEwNiw3IEBAIHByaXZhdGU6CiAKICAgICBF
R0xDb250ZXh0IG1fY29udGV4dCB7IG51bGxwdHIgfTsKICAgICBFR0xTdXJmYWNlIG1fc3VyZmFj
ZSB7IG51bGxwdHIgfTsKKyAgICBFR0xDb25maWcgbV9jb25maWcgeyBudWxscHRyIH07CiAgICAg
RUdMU3VyZmFjZVR5cGUgbV90eXBlOwogI2lmIFBMQVRGT1JNKFgxMSkKICAgICBYVW5pcXVlUGl4
bWFwIG1fcGl4bWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMTGliV1BFLmNwcAppbmRleCA0MDhkZjNiMzk4ZDVjNDhj
MWI3NjI5NjU1NDliYTE2Yzk4N2EyMDBlLi42ODIzYjA1ZTRhNTcxNzU3OGVmNDJjM2ZjNzRhMmI0
NDI0NWFhNDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
Z2wvR0xDb250ZXh0RUdMTGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMTGliV1BFLmNwcApAQCAtNDAsMTAgKzQwLDExIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woUGxhdGZv
cm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFj
ZSwgc3RydWN0IHdwZV9yZW5kZXJlcl9iYWNrZW5kX2VnbF9vZmZzY3JlZW5fdGFyZ2V0KiB0YXJn
ZXQpCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXks
IEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xDb25maWcgY29uZmln
LCBzdHJ1Y3Qgd3BlX3JlbmRlcmVyX2JhY2tlbmRfZWdsX29mZnNjcmVlbl90YXJnZXQqIHRhcmdl
dCkKICAgICA6IEdMQ29udGV4dChkaXNwbGF5KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAg
ICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKKyAgICAsIG1fY29uZmlnKGNvbmZpZykKICAgICAsIG1f
dHlwZShXaW5kb3dTdXJmYWNlKQogICAgICwgbV93cGVUYXJnZXQodGFyZ2V0KQogewpAQCAtODks
NyArOTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNy
ZWF0ZVdQRUNvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbAogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3
IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIHRhcmdldCkp
OworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0
RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgY29uZmlnLCB0YXJnZXQpKTsK
IH0KIAogdm9pZCBHTENvbnRleHRFR0w6OmRlc3Ryb3lXUEVUYXJnZXQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdh
eWxhbmQuY3BwCmluZGV4IGNlYWI5MmQ5MjZhZTkzNmE4YWFkODliZTg2MDBmNjJhM2FiYjhlNjku
LmZhNmI2YWI5YmM2ZGRiZTkyYzAxNjliNjQ4NmI1ZTU5NWI5OTQxMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
V2F5bGFuZC5jcHAKQEAgLTI5LDEwICsyOSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgRUdM
Q29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIFdsVW5pcXVlUHRyPHN0cnVjdCB3
bF9zdXJmYWNlPiYmIHdsU3VyZmFjZSwgc3RydWN0IHdsX2VnbF93aW5kb3cqIHdsV2luZG93KQor
R0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xD
b250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMQ29uZmlnIGNvbmZpZywgV2xV
bmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+JiYgd2xTdXJmYWNlLCBzdHJ1Y3Qgd2xfZWdsX3dp
bmRvdyogd2xXaW5kb3cpCiAgICAgOiBHTENvbnRleHQoZGlzcGxheSkKICAgICAsIG1fY29udGV4
dChjb250ZXh0KQogICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCisgICAgLCBtX2NvbmZpZyhjb25m
aWcpCiAgICAgLCBtX3R5cGUoV2luZG93U3VyZmFjZSkKICAgICAsIG1fd2xTdXJmYWNlKFdURk1v
dmUod2xTdXJmYWNlKSkKICAgICAsIG1fd2xXaW5kb3cod2xXaW5kb3cpCkBAIC02OSw3ICs3MCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlV2F5
bGFuZENvbnRleHQoUGxhdGZvcm1EaXNwbGF5CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250
ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgV1RGTW92ZSh3bFN1cmZh
Y2UpLCB3aW5kb3cpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4o
bmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIGNvbmZp
ZywgV1RGTW92ZSh3bFN1cmZhY2UpLCB3aW5kb3cpKTsKIH0KIAogdm9pZCBHTENvbnRleHRFR0w6
OmRlc3Ryb3lXYXlsYW5kV2luZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xYMTEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAKaW5kZXggNjdhOGUwYjU5NjEx
YzU1ZTQzMzZmMmIxMzI0OGYyMDM4NzMxMThhNS4uOGY3MzIzOTk4OGU4NjljYjhmYzgzY2Y5ZDM0
Y2Y2NTdhYjdiMWFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAKQEAgLTI4LDEwICsyOCwxMSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3Jt
RGlzcGxheSYgZGlzcGxheSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2Us
IFhVbmlxdWVQaXhtYXAmJiBwaXhtYXApCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0
Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJm
YWNlLCBFR0xDb25maWcgY29uZmlnLCBYVW5pcXVlUGl4bWFwJiYgcGl4bWFwKQogICAgIDogR0xD
b250ZXh0KGRpc3BsYXkpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc3VyZmFj
ZShzdXJmYWNlKQorICAgICwgbV9jb25maWcoY29uZmlnKQogICAgICwgbV90eXBlKFBpeG1hcFN1
cmZhY2UpCiAgICAgLCBtX3BpeG1hcChXVEZNb3ZlKHBpeG1hcCkpCiB7CkBAIC05MCw3ICs5MSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4
bWFwQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250
ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgV1RGTW92ZShwaXhtYXAp
KSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRl
eHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBjb25maWcsIFdURk1vdmUo
cGl4bWFwKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSRXh0ZW5zaW9ucy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSRXh0ZW5zaW9ucy5jcHAKaW5kZXgg
ZmIzMWE3ZDNmM2Q2YTAzOTQ3OWE0NGIxMmFiMzM2YjMyZjhhOTkxNy4uZGE1MzVlYTEwOGViZGQ3
MDMzODFmOTgxYzc3Mjc4MzAyZGY5NjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0veHIvb3BlbnhyL09wZW5YUkV4dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJFeHRlbnNpb25zLmNwcApAQCAtNTQsNiArNTQsMTQg
QEAgT3BlblhSRXh0ZW5zaW9uczo6T3BlblhSRXh0ZW5zaW9ucyhWZWN0b3I8WHJFeHRlbnNpb25Q
cm9wZXJ0aWVzPiYmIGV4dGVuc2lvbnMpCiB7CiB9CiAKK3ZvaWQgT3BlblhSRXh0ZW5zaW9uczo6
bG9hZE1ldGhvZHMoWHJJbnN0YW5jZSBpbnN0YW5jZSkKK3sKKyNpZiBVU0UoRUdMKQorICAgIG1f
bWV0aG9kcy5nZXRQcm9jQWRkcmVzc0Z1bmMgPSBlZ2xHZXRQcm9jQWRkcmVzczsKKyNlbmRpZgor
ICAgIHhyR2V0SW5zdGFuY2VQcm9jQWRkcihpbnN0YW5jZSwgInhyR2V0T3BlbkdMR3JhcGhpY3NS
ZXF1aXJlbWVudHNLSFIiLCByZWludGVycHJldF9jYXN0PFBGTl94clZvaWRGdW5jdGlvbio+KCZt
X21ldGhvZHMueHJHZXRPcGVuR0xHcmFwaGljc1JlcXVpcmVtZW50c0tIUikpOworfQorCiBib29s
IE9wZW5YUkV4dGVuc2lvbnM6OmlzRXh0ZW5zaW9uU3VwcG9ydGVkKGNvbnN0IGNoYXIqIG5hbWUp
IGNvbnN0CiB7CiAgICAgYXV0byBwb3NpdGlvbiA9IG1fZXh0ZW5zaW9ucy5maW5kTWF0Y2hpbmco
W25hbWVdKGF1dG8mIHByb3BlcnR5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS94ci9vcGVueHIvT3BlblhSRXh0ZW5zaW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL09wZW5YUkV4dGVuc2lvbnMuaAppbmRleCA0ZTRjYTM4YTgyNWI3NzViYjJm
ODI4NmMyZTZhNzI2OGYxM2IzM2UwLi5hZWM4MGNlODM4OTI2ODYwNTcxNjA1NjYyZThlOTJmYWJl
Y2Y4NGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3Bl
blhSRXh0ZW5zaW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9P
cGVuWFJFeHRlbnNpb25zLmgKQEAgLTI4LDYgKzI4LDExIEBACiAKIG5hbWVzcGFjZSBQbGF0Zm9y
bVhSIHsKIAorc3RydWN0IE9wZW5YUkV4dGVuc2lvbk1ldGhvZHMgeworICAgIFBGTkVHTEdFVFBS
T0NBRERSRVNTUFJPQyBnZXRQcm9jQWRkcmVzc0Z1bmMgeyBudWxscHRyIH07CisgICAgUEZOX3hy
R2V0T3BlbkdMR3JhcGhpY3NSZXF1aXJlbWVudHNLSFIgeHJHZXRPcGVuR0xHcmFwaGljc1JlcXVp
cmVtZW50c0tIUiB7IG51bGxwdHIgfTsKK307CisKIGNsYXNzIE9wZW5YUkV4dGVuc2lvbnMgZmlu
YWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKE9wZW5YUkV4dGVuc2lvbnMpOwpAQCAtMzUsMTAgKzQwLDEzIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPE9wZW5YUkV4dGVuc2lvbnM+IGNyZWF0ZSgpOwogICAgIE9w
ZW5YUkV4dGVuc2lvbnMoVmVjdG9yPFhyRXh0ZW5zaW9uUHJvcGVydGllcz4mJik7CiAKKyAgICB2
b2lkIGxvYWRNZXRob2RzKFhySW5zdGFuY2UpOwogICAgIGJvb2wgaXNFeHRlbnNpb25TdXBwb3J0
ZWQoY29uc3QgY2hhciopIGNvbnN0OworICAgIGNvbnN0IE9wZW5YUkV4dGVuc2lvbk1ldGhvZHMm
IG1ldGhvZHMoKSBjb25zdCB7IHJldHVybiBtX21ldGhvZHM7IH0KIAogcHJpdmF0ZToKICAgICBW
ZWN0b3I8WHJFeHRlbnNpb25Qcm9wZXJ0aWVzPiBtX2V4dGVuc2lvbnM7CisgICAgT3BlblhSRXh0
ZW5zaW9uTWV0aG9kcyBtX21ldGhvZHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQbGF0Zm9ybVhS
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5z
dGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkluc3Rh
bmNlLmNwcAppbmRleCA5NDZjOWI1NWQyYzhjYzVmMWFjOGI0ZWFkZDA1MmMxN2QzMzc2MzNjLi44
Y2FjN2E3MWZjNmZjYTFjMGNmNTk3ZTI1MzJmOGYwNDY3MTY5MjMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5zdGFuY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnN0YW5jZS5jcHAKQEAgLTU2
LDE2ICs1NiwxMiBAQCBJbnN0YW5jZTo6SW1wbDo6SW1wbCgpCiAgICAgICAgIGlmICghbV9leHRl
bnNpb25zKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghbV9leHRlbnNpb25z
LT5pc0V4dGVuc2lvblN1cHBvcnRlZChYUl9NTkRfSEVBRExFU1NfRVhURU5TSU9OX05BTUUpKSB7
Ci0gICAgICAgICAgICBMT0coWFIsICJSZXF1aXJlZCBleHRlbnNpb24gJXMgbm90IHN1cHBvcnRl
ZCIsIFhSX01ORF9IRUFETEVTU19FWFRFTlNJT05fTkFNRSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc19hcHBsaWNhdGlvbk5h
bWUgPSAiV2ViWFIgKFdlYktpdCkiOwogICAgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19h
cHBsaWNhdGlvblZlcnNpb24gPSAxOwogCiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGVuYWJs
ZWRFeHRlbnNpb25zW10gPSB7Ci0gICAgICAgICAgICBYUl9NTkRfSEVBRExFU1NfRVhURU5TSU9O
X05BTUUKKyAgICAgICAgICAgIFhSX0tIUl9PUEVOR0xfRU5BQkxFX0VYVEVOU0lPTl9OQU1FLAor
ICAgICAgICAgICAgWFJfTU5EWF9FR0xfRU5BQkxFX0VYVEVOU0lPTl9OQU1FCiAgICAgICAgIH07
CiAKICAgICAgICAgYXV0byBjcmVhdGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhySW5zdGFuY2VD
cmVhdGVJbmZvLCBYUl9UWVBFX0lOU1RBTkNFX0NSRUFURV9JTkZPPigpOwpAQCAtODIsNiArNzgs
OCBAQCBJbnN0YW5jZTo6SW1wbDo6SW1wbCgpCiAgICAgICAgIGlmIChtX2luc3RhbmNlID09IFhS
X05VTExfSEFORExFKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIG1fZXh0ZW5zaW9u
cy0+bG9hZE1ldGhvZHMobV9pbnN0YW5jZSk7CisKICAgICAgICAgTE9HKFhSLCAieHJDcmVhdGVJ
bnN0YW5jZSgpOiB1c2luZyBpbnN0YW5jZSAlcFxuIiwgbV9pbnN0YW5jZSk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRp
bHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJVdGlscy5oCmlu
ZGV4IGUxYWE1NmJmZTA4OTQ4ZGI3NWNkMjkxMDc4YzU2Y2I5NDkyYWI4NDcuLjA4NTgxNGZkMDBi
YTg4YWRlMjRiNThiZjc5Mjg4YmZmMTg1NjhjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL29wZW54ci9PcGVuWFJVdGlscy5oCkBAIC0yMSw5ICsyMSwyNCBAQAogCiAjaWYg
RU5BQkxFKFdFQlhSKSAmJiBVU0UoT1BFTlhSKQogCisjaWYgVVNFKEVHTCkKKy8vIEVHTCBzeW1i
b2xzIHJlcXVpcmVkIGJ5IG9wZW54cl9wbGF0Zm9ybS5oCisjaWYgVVNFKExJQkVQT1hZKQorI2Rl
ZmluZSBfX0dCTV9fIDEKKyNpbmNsdWRlICJFcG94eUVHTC5oIgorI2Vsc2UKKyNpZiBQTEFURk9S
TShXQVlMQU5EKQorI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxF
R0wvZWdsLmg+CisjZW5kaWYKKworI2VuZGlmIC8vIFVTRShFR0wpCisKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgogI2luY2x1ZGUgPG9wZW54ci9vcGVueHIu
aD4KKyNpbmNsdWRlIDxvcGVueHIvb3BlbnhyX3BsYXRmb3JtLmg+CiAKICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9Q
bGF0Zm9ybVhST3BlblhSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9Q
bGF0Zm9ybVhST3BlblhSLmNwcAppbmRleCA1YWFmMTg3MTM3ODFiZDIzYzdlMmM1MGU0ZDZkMmEx
NjQ2ZDM1YTk0Li41MzEyZDgzYmYyYTcyODAyODBmZjFkNjJlZTQ3MzA5NjNiMTc3MGU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5Y
Ui5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJP
cGVuWFIuY3BwCkBAIC04MSwxNSArODEsMzggQEAgdm9pZCBPcGVuWFJEZXZpY2U6OmluaXRpYWxp
emVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSBtb2RlKQogICAgIG1fcXVldWUuZGlz
cGF0Y2goW3RoaXMsIG1vZGVdKCkgewogICAgICAgICBBU1NFUlQobV9pbnN0YW5jZSAhPSBYUl9O
VUxMX0hBTkRMRSk7CiAgICAgICAgIEFTU0VSVChtX3Nlc3Npb24gPT0gWFJfTlVMTF9IQU5ETEUp
OworICAgICAgICBBU1NFUlQobV9leHRlbnNpb25zLm1ldGhvZHMoKS54ckdldE9wZW5HTEdyYXBo
aWNzUmVxdWlyZW1lbnRzS0hSKTsKIAogICAgICAgICBtX2N1cnJlbnRWaWV3Q29uZmlndXJhdGlv
blR5cGUgPSB0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKG1vZGUpOwogICAgICAgICBBU1NFUlQo
bV9jb25maWd1cmF0aW9uVmlld3MuY29udGFpbnMobV9jdXJyZW50Vmlld0NvbmZpZ3VyYXRpb25U
eXBlKSk7CiAKKyAgICAgICAgLy8gaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvT3Bl
blhSL3NwZWNzLzEuMC9tYW4vaHRtbC94ckdldE9wZW5HTEdyYXBoaWNzUmVxdWlyZW1lbnRzS0hS
Lmh0bWwKKyAgICAgICAgLy8gT3BlblhSIHJlcXVpcmVzIHRvIGNhbGwgeHJHZXRPcGVuR0xHcmFw
aGljc1JlcXVpcmVtZW50c0tIUiBiZWZvcmUgY3JlYXRpbmcgYSBzZXNzaW9uLgorICAgICAgICBh
dXRvIHJlcXVpcmVtZW50cyA9IGNyZWF0ZVN0cnVjdHVyZTxYckdyYXBoaWNzUmVxdWlyZW1lbnRz
T3BlbkdMS0hSLCBYUl9UWVBFX0dSQVBISUNTX1JFUVVJUkVNRU5UU19PUEVOR0xfS0hSPigpOwor
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZXh0ZW5zaW9ucy5tZXRob2RzKCkueHJHZXRPcGVuR0xH
cmFwaGljc1JlcXVpcmVtZW50c0tIUihtX2luc3RhbmNlLCBtX3N5c3RlbUlkLCAmcmVxdWlyZW1l
bnRzKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckdldE9wZW5HTEdyYXBo
aWNzUmVxdWlyZW1lbnRzS0hSIiwgbV9pbnN0YW5jZSk7CisKKyAgICAgICAgbV9ncmFwaGljc0Jp
bmRpbmcgPSBjcmVhdGVTdHJ1Y3R1cmU8WHJHcmFwaGljc0JpbmRpbmdFR0xNTkRYLCBYUl9UWVBF
X0dSQVBISUNTX0JJTkRJTkdfRUdMX01ORFg+KCk7CisgICAgICAgIG1fZWdsID0gR0xDb250ZXh0
RUdMOjpjcmVhdGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXko
KSk7CisgICAgICAgIGlmICghbV9lZ2wpIHsKKyAgICAgICAgICAgIExPRyhYUiwgIkZhaWxlZCB0
byBjcmVhdGUgRUdMIGNvbnRleHQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8mIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxHTENvbnRleHQmPigqbV9lZ2wp
OworICAgICAgICBjb250ZXh0Lm1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgICAgIG1fZ3Jh
cGhpY3NCaW5kaW5nLmRpc3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5l
Z2xEaXNwbGF5KCk7CisgICAgICAgIG1fZ3JhcGhpY3NCaW5kaW5nLmNvbnRleHQgPSBjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpOworICAgICAgICBtX2dyYXBoaWNzQmluZGluZy5jb25maWcgPSBt
X2VnbC0+Y29uZmlnKCk7CisgICAgICAgIG1fZ3JhcGhpY3NCaW5kaW5nLmdldFByb2NBZGRyZXNz
ID0gbV9leHRlbnNpb25zLm1ldGhvZHMoKS5nZXRQcm9jQWRkcmVzc0Z1bmM7CisKICAgICAgICAg
Ly8gQ3JlYXRlIHRoZSBzZXNzaW9uLgogICAgICAgICBhdXRvIHNlc3Npb25DcmVhdGVJbmZvID0g
Y3JlYXRlU3RydWN0dXJlPFhyU2Vzc2lvbkNyZWF0ZUluZm8sIFhSX1RZUEVfU0VTU0lPTl9DUkVB
VEVfSU5GTz4oKTsKICAgICAgICAgc2Vzc2lvbkNyZWF0ZUluZm8uc3lzdGVtSWQgPSBtX3N5c3Rl
bUlkOworICAgICAgICBzZXNzaW9uQ3JlYXRlSW5mby5uZXh0ID0gJm1fZ3JhcGhpY3NCaW5kaW5n
OwogCi0gICAgICAgIGF1dG8gcmVzdWx0ID0geHJDcmVhdGVTZXNzaW9uKG1faW5zdGFuY2UsICZz
ZXNzaW9uQ3JlYXRlSW5mbywgJm1fc2Vzc2lvbik7CisgICAgICAgIHJlc3VsdCA9IHhyQ3JlYXRl
U2Vzc2lvbihtX2luc3RhbmNlLCAmc2Vzc2lvbkNyZWF0ZUluZm8sICZtX3Nlc3Npb24pOwogICAg
ICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNp
b25Qcm9wZXJ0aWVzIiwgbV9pbnN0YW5jZSk7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBkZWZh
dWx0IHJlZmVyZW5jZSBzcGFjZXMKQEAgLTIyMCw0MyArMjQzLDI2IEBAIFZlY3RvcjxEZXZpY2U6
OlZpZXdEYXRhPiBPcGVuWFJEZXZpY2U6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0CiAg
ICAgcmV0dXJuIHZpZXdzOwogfQogCi1EZXZpY2U6Okxpc3RPZkVuYWJsZWRGZWF0dXJlcyBPcGVu
WFJEZXZpY2U6OmVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhYclNlc3Npb24gc2Vzc2lvbikgY29u
c3QKK0RldmljZTo6TGlzdE9mRW5hYmxlZEZlYXR1cmVzIE9wZW5YUkRldmljZTo6Y29sbGVjdEVu
YWJsZWRGZWF0dXJlcygpCiB7Ci0gICAgdWludDMyX3QgcmVmZXJlbmNlU3BhY2VzQ291bnQ7Ci0g
ICAgYXV0byByZXN1bHQgPSB4ckVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhzZXNzaW9uLCAwLCAm
cmVmZXJlbmNlU3BhY2VzQ291bnQsIG51bGxwdHIpOwotICAgIFJFVFVSTl9JRl9GQUlMRUQocmVz
dWx0LCAieHJFbnVtZXJhdGVSZWZlcmVuY2VTcGFjZXMiLCBtX2luc3RhbmNlLCB7IH0pOwotCi0g
ICAgVmVjdG9yPFhyUmVmZXJlbmNlU3BhY2VUeXBlPiByZWZlcmVuY2VTcGFjZXMocmVmZXJlbmNl
U3BhY2VzQ291bnQpOwotICAgIHJlZmVyZW5jZVNwYWNlcy5maWxsKFhSX1JFRkVSRU5DRV9TUEFD
RV9UWVBFX1ZJRVcsIHJlZmVyZW5jZVNwYWNlc0NvdW50KTsKLSAgICByZXN1bHQgPSB4ckVudW1l
cmF0ZVJlZmVyZW5jZVNwYWNlcyhzZXNzaW9uLCByZWZlcmVuY2VTcGFjZXNDb3VudCwgJnJlZmVy
ZW5jZVNwYWNlc0NvdW50LCByZWZlcmVuY2VTcGFjZXMuZGF0YSgpKTsKLSAgICBSRVRVUk5fSUZf
RkFJTEVEKHJlc3VsdCwgInhyRW51bWVyYXRlUmVmZXJlbmNlU3BhY2VzIiwgbV9pbnN0YW5jZSwg
eyB9KTsKLQotICAgIExpc3RPZkVuYWJsZWRGZWF0dXJlcyBlbmFibGVkRmVhdHVyZXM7Ci0gICAg
Zm9yIChhdXRvJiByZWZlcmVuY2VTcGFjZSA6IHJlZmVyZW5jZVNwYWNlcykgewotICAgICAgICBz
d2l0Y2ggKHJlZmVyZW5jZVNwYWNlKSB7Ci0gICAgICAgIGNhc2UgWFJfUkVGRVJFTkNFX1NQQUNF
X1RZUEVfVklFVzoKLSAgICAgICAgICAgIGVuYWJsZWRGZWF0dXJlcy5hcHBlbmQoUmVmZXJlbmNl
U3BhY2VUeXBlOjpWaWV3ZXIpOwotICAgICAgICAgICAgTE9HKFhSLCAiXHREZXZpY2Ugc3VwcG9y
dHMgVklFVyByZWZlcmVuY2Ugc3BhY2UiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFhSX1JFRkVSRU5DRV9TUEFDRV9UWVBFX0xPQ0FMOgotICAgICAgICAgICAgZW5hYmxlZEZl
YXR1cmVzLmFwcGVuZChSZWZlcmVuY2VTcGFjZVR5cGU6OkxvY2FsKTsKLSAgICAgICAgICAgIExP
RyhYUiwgIlx0RGV2aWNlIHN1cHBvcnRzIExPQ0FMIHJlZmVyZW5jZSBzcGFjZSIpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfU1RBR0U6
Ci0gICAgICAgICAgICBlbmFibGVkRmVhdHVyZXMuYXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6
TG9jYWxGbG9vcik7Ci0gICAgICAgICAgICBlbmFibGVkRmVhdHVyZXMuYXBwZW5kKFJlZmVyZW5j
ZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKTsKLSAgICAgICAgICAgIExPRyhYUiwgIlx0RGV2aWNl
IHN1cHBvcnRzIFNUQUdFIHJlZmVyZW5jZSBzcGFjZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfVU5CT1VOREVEX01TRlQ6Ci0gICAg
ICAgICAgICBlbmFibGVkRmVhdHVyZXMuYXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6VW5ib3Vu
ZGVkKTsKLSAgICAgICAgICAgIExPRyhYUiwgIlx0RGV2aWNlIHN1cHBvcnRzIFVOQk9VTkRFRCBy
ZWZlcmVuY2Ugc3BhY2UiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICB9CisgICAgRGV2aWNlOjpMaXN0
T2ZFbmFibGVkRmVhdHVyZXMgZmVhdHVyZXM7CisKKyAgICAvLyBodHRwczovL3d3dy5raHJvbm9z
Lm9yZy9yZWdpc3RyeS9PcGVuWFIvc3BlY3MvMS4wL21hbi9odG1sL1hyUmVmZXJlbmNlU3BhY2VU
eXBlLmh0bWwKKyAgICAvLyBPcGVuWFIgcnVudGltZXMgbXVzdCBzdXBwb3J0IFZpZXdlciBhbmQg
TG9jYWwgc3BhY2VzLgorICAgIGZlYXR1cmVzLmFwcGVuZChSZWZlcmVuY2VTcGFjZVR5cGU6OlZp
ZXdlcik7CisgICAgZmVhdHVyZXMuYXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWwpOwog
Ci0gICAgcmV0dXJuIGVuYWJsZWRGZWF0dXJlczsKKyAgICAvLyBNYXJrIExvY2FsRmxvb3IgYXMg
c3VwcG9ydGVkIHJlZ2FyZGxlc3MgaWYgWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfU1RBR0UgaXMg
YXZhaWxhYmxlLgorICAgIC8vIFRoZSBzcGVjIHVzZXMgYSBlc3RpbWF0ZWQgaGVpZ2h0IGlmIHdl
IGRvbid0IHByb3ZpZGUgYSBmbG9vciB0cmFuc2Zvcm0gaW4gZnJhbWVEYXRhLgorICAgIGZlYXR1
cmVzLmFwcGVuZChSZWZlcmVuY2VTcGFjZVR5cGU6OkxvY2FsRmxvb3IpOworCisgICAgLy8gRklY
TUU6IEVuYWJsZSBCb3VuZGVkRmxvb3Igd2hlbiB3ZSBpbXBsZW1lbnQgeHJHZXRSZWZlcmVuY2VT
cGFjZUJvdW5kc1JlY3QgYW5kIHRoZSByZWxhdGVkIGJpdHMgaW4gdGhlIERPTS4KKyAgICAvLyBl
bmFibGVkRmVhdHVyZXMuYXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKTsK
KworICAgIGlmIChtX2V4dGVuc2lvbnMuaXNFeHRlbnNpb25TdXBwb3J0ZWQoWFJfTVNGVF9VTkJP
VU5ERURfUkVGRVJFTkNFX1NQQUNFX0VYVEVOU0lPTl9OQU1FKSkKKyAgICAgICAgZmVhdHVyZXMu
YXBwZW5kKFJlZmVyZW5jZVNwYWNlVHlwZTo6VW5ib3VuZGVkKTsKKworICAgIHJldHVybiBmZWF0
dXJlczsKIH0KIAogdm9pZCBPcGVuWFJEZXZpY2U6OmNvbGxlY3RTdXBwb3J0ZWRTZXNzaW9uTW9k
ZXMoKQpAQCAtMjcwLDE1ICsyNzYsNyBAQCB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdFN1cHBv
cnRlZFNlc3Npb25Nb2RlcygpCiAgICAgcmVzdWx0ID0geHJFbnVtZXJhdGVWaWV3Q29uZmlndXJh
dGlvbnMobV9pbnN0YW5jZSwgbV9zeXN0ZW1JZCwgdmlld0NvbmZpZ3VyYXRpb25Db3VudCwgJnZp
ZXdDb25maWd1cmF0aW9uQ291bnQsIHZpZXdDb25maWd1cmF0aW9ucyk7CiAgICAgUkVUVVJOX0lG
X0ZBSUxFRChyZXN1bHQsICJ4ckVudW1lcmF0ZVZpZXdDb25maWd1cmF0aW9ucyIsIG1faW5zdGFu
Y2UpOwogCi0gICAgLy8gUmV0cmlldmluZyB0aGUgc3VwcG9ydGVkIHJlZmVyZW5jZSBzcGFjZXMg
cmVxdWlyZXMgYW4gaW5pdGlhbGl6ZWQgc2Vzc2lvbi4gVGhlcmUgaXMgbm8gbmVlZCB0byBpbml0
aWFsaXplIGFsbCB0aGUgZ3JhcGhpY3MKLSAgICAvLyBzdHVmZiBzbyB3ZSdsbCB1c2UgYSBoZWFk
bGVzcyBzZXNzaW9uIHRoYXQgd2lsbCBiZSBkaXNjYXJkZWQgYWZ0ZXIgZ2V0dGluZyB0aGUgaW5m
byB3ZSBuZWVkLgotICAgIGF1dG8gc2Vzc2lvbkNyZWF0ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8
WHJTZXNzaW9uQ3JlYXRlSW5mbywgWFJfVFlQRV9TRVNTSU9OX0NSRUFURV9JTkZPPigpOwotICAg
IHNlc3Npb25DcmVhdGVJbmZvLnN5c3RlbUlkID0gbV9zeXN0ZW1JZDsKLSAgICBYclNlc3Npb24g
ZXBoZW1lcmFsU2Vzc2lvbjsKLSAgICByZXN1bHQgPSB4ckNyZWF0ZVNlc3Npb24obV9pbnN0YW5j
ZSwgJnNlc3Npb25DcmVhdGVJbmZvLCAmZXBoZW1lcmFsU2Vzc2lvbik7Ci0gICAgUkVUVVJOX0lG
X0ZBSUxFRChyZXN1bHQsICJ4ckNyZWF0ZVNlc3Npb24iLCBtX2luc3RhbmNlKTsKLQotICAgIExp
c3RPZkVuYWJsZWRGZWF0dXJlcyBmZWF0dXJlcyA9IGVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhl
cGhlbWVyYWxTZXNzaW9uKTsKKyAgICBMaXN0T2ZFbmFibGVkRmVhdHVyZXMgZmVhdHVyZXMgPSBj
b2xsZWN0RW5hYmxlZEZlYXR1cmVzKCk7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHZp
ZXdDb25maWd1cmF0aW9uQ291bnQ7ICsraSkgewogICAgICAgICBhdXRvIHZpZXdDb25maWd1cmF0
aW9uUHJvcGVydGllcyA9IGNyZWF0ZVN0cnVjdHVyZTxYclZpZXdDb25maWd1cmF0aW9uUHJvcGVy
dGllcywgWFJfVFlQRV9WSUVXX0NPTkZJR1VSQVRJT05fUFJPUEVSVElFUz4oKTsKICAgICAgICAg
cmVzdWx0ID0geHJHZXRWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMobV9pbnN0YW5jZSwgbV9z
eXN0ZW1JZCwgdmlld0NvbmZpZ3VyYXRpb25zW2ldLCAmdmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0
aWVzKTsKQEAgLTI5OSw3ICsyOTcsNiBAQCB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdFN1cHBv
cnRlZFNlc3Npb25Nb2RlcygpCiAgICAgICAgIH07CiAgICAgICAgIG1fdmlld0NvbmZpZ3VyYXRp
b25Qcm9wZXJ0aWVzLmFkZChjb25maWdUeXBlLCBXVEZNb3ZlKHZpZXdDb25maWd1cmF0aW9uUHJv
cGVydGllcykpOwogICAgIH0KLSAgICB4ckRlc3Ryb3lTZXNzaW9uKGVwaGVtZXJhbFNlc3Npb24p
OwogfQogCiB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdENvbmZpZ3VyYXRpb25WaWV3cygpCkBA
IC00MTYsNiArNDEzLDkgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OnJlc2V0U2Vzc2lvbigpCiAgICAg
ICAgIG1fc2Vzc2lvbiA9IFhSX05VTExfSEFORExFOwogICAgIH0KICAgICBtX3Nlc3Npb25TdGF0
ZSA9IFhSX1NFU1NJT05fU1RBVEVfVU5LTk9XTjsKKworICAgIC8vIGRlYWxsb2NhdGUgZ3JhcGhp
YyByZXNvdXJjZXMKKyAgICBtX2VnbC5yZXNldCgpOwogfQogCiB2b2lkIE9wZW5YUkRldmljZTo6
aGFuZGxlU2Vzc2lvblN0YXRlQ2hhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCmluZGV4IDc2Y2E1OWNmYmVjZWViY2Ri
MGJmZTMwMjliNGZjZjkxMDM5MzA0MjAuLjMxNzgzNjkxZjRhOTNiYmJkNDgwNzkxNmJkNTY5YmM2
NjA3YzkxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9Q
bGF0Zm9ybVhST3BlblhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L1BsYXRmb3JtWFJPcGVuWFIuaApAQCAtMjEsNiArMjEsNyBAQAogCiAjaWYgRU5BQkxFKFdFQlhS
KSAmJiBVU0UoT1BFTlhSKQogCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCiAjaW5jbHVkZSAi
T3BlblhSVXRpbHMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCiAKQEAgLTU4LDcgKzU5LDcg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8Vmlld0RhdGE+IHZpZXdzKFNlc3Npb25Nb2RlKSBjb25z
dCBmaW5hbDsKIAogICAgIC8vIEN1c3RvbSBtZXRob2RzCi0gICAgTGlzdE9mRW5hYmxlZEZlYXR1
cmVzIGVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhYclNlc3Npb24pIGNvbnN0OworICAgIExpc3RP
ZkVuYWJsZWRGZWF0dXJlcyBjb2xsZWN0RW5hYmxlZEZlYXR1cmVzKCk7CiAgICAgdm9pZCBjb2xs
ZWN0U3VwcG9ydGVkU2Vzc2lvbk1vZGVzKCk7CiAgICAgdm9pZCBjb2xsZWN0Q29uZmlndXJhdGlv
blZpZXdzKCk7CiAgICAgWHJTcGFjZSBjcmVhdGVSZWZlcmVuY2VTcGFjZShYclJlZmVyZW5jZVNw
YWNlVHlwZSk7CkBAIC03NSw2ICs3Niw4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgT3BlblhSRXh0
ZW5zaW9ucyYgbV9leHRlbnNpb25zOwogICAgIFhyU2Vzc2lvbiBtX3Nlc3Npb24geyBYUl9OVUxM
X0hBTkRMRSB9OwogICAgIFhyU2Vzc2lvblN0YXRlIG1fc2Vzc2lvblN0YXRlIHsgWFJfU0VTU0lP
Tl9TVEFURV9VTktOT1dOIH07CisgICAgWHJHcmFwaGljc0JpbmRpbmdFR0xNTkRYIG1fZ3JhcGhp
Y3NCaW5kaW5nOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHTENvbnRleHRFR0w+IG1f
ZWdsOwogCiAgICAgdXNpbmcgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzTWFwID0gSGFzaE1h
cDxYclZpZXdDb25maWd1cmF0aW9uVHlwZSwgWHJWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMs
IEludEhhc2g8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJh
aXRzPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlPj47CiAgICAgVmlld0NvbmZpZ3VyYXRpb25Qcm9w
ZXJ0aWVzTWFwIG1fdmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFr
ZQppbmRleCAyMDg2M2EwOGYxNjc4YTE1Mzc0OGZjMjEzNzRkN2QwMjc3MTE5MWI0Li43MWZlN2U4
NDEwNDUyMTM3MzlhMzNlNGQyMzljNjkxOTU3Y2NkNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dQRS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQpA
QCAtMTk2LDYgKzE5Niw4IEBAIGlmIChFTkFCTEVfV0VCWFIpCiAgICAgICAgIG1lc3NhZ2UoRkFU
QUxfRVJST1IgIk9wZW5YUiBpcyByZXF1aXJlZCB0byBlbmFibGUgV2ViWFIgc3VwcG9ydC4iKQog
ICAgIGVuZGlmICgpCiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX09QRU5YUiAke09w
ZW5YUl9GT1VORH0pCisgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoWFJfVVNFX1BMQVRGT1JN
X0VHTCBUUlVFKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFhSX1VTRV9HUkFQSElDU19B
UElfT1BFTkdMIFRSVUUpCiBlbmRpZiAoKQogCiBpZiAoVVNFX1NZU1RFTUQpCmRpZmYgLS1naXQg
YS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZTQ1OGY3OTY3NjdiMDJhZTFkYzY4ZWZmZjJi
OWEwZmI3OTdiYjQ1Zi4uOTY2MTRiN2Q2OGY3MDE3MDMwYTk1NGU1NTk0ODlmMzkxZDg5OTJmMCAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDIxLTAyLTI0ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCBPcGVuWFIgcG9ydCBncmFwaGljcyBiaW5kaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIxNzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgT3BlblhSIGRlZmlu
ZXMgcmVxdWlyZWQgZm9yIEVHTCBncmFwaGljcyBiaW5kaW5nLgorCisgICAgICAgICogU291cmNl
L2NtYWtlL09wdGlvbnNXUEUuY21ha2U6CisKIDIwMjEtMDItMjMgIERvbiBPbG1zdGVhZCAgPGRv
bi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIEZpeCBKU0NPbmx5IGJ1aWxk
IG9uIFdpbmRvd3MK
</data>

          </attachment>
      

    </bug>

</bugzilla>