<?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>205632</bug_id>
          
          <creation_ts>2019-12-29 14:32:47 -0800</creation_ts>
          <short_desc>Create media mime type cache base class to reduce duplicate code</short_desc>
          <delta_ts>2019-12-30 12:52:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1601795</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-29 14:32:47 -0800</bug_when>
    <thetext>AVStreamDataParserMIMETypeCache and AVAssetMIMETypeCache have a lot of very similar code so create a base class so they can share.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601796</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-29 14:33:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/58233565&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601797</commentid>
    <comment_count>2</comment_count>
      <attachid>386498</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-29 14:52:47 -0800</bug_when>
    <thetext>Created attachment 386498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601807</commentid>
    <comment_count>3</comment_count>
      <attachid>386501</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-29 17:27:00 -0800</bug_when>
    <thetext>Created attachment 386501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601811</commentid>
    <comment_count>4</comment_count>
      <attachid>386504</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-29 20:27:13 -0800</bug_when>
    <thetext>Created attachment 386504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601823</commentid>
    <comment_count>5</comment_count>
      <attachid>386504</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-12-29 22:31:39 -0800</bug_when>
    <thetext>Comment on attachment 386504
Patch

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

r=me with nits. 

&gt; Source/WebCore/platform/graphics/MIMETypeCache.h:48
&gt; +    WEBCORE_EXPORT void setSupportedTypes(const Vector&lt;String&gt;&amp;);

Nit: The implementation doesn’t match the name here. It doesn’t replace the existing set of supported types, instead it adds new types to the existing set. ‘addSupportedTypes’ maybe?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:263
&gt; +    if (AVStreamDataParserMIMETypeCache::singleton().isAvailable())

This could use a “auto cache = ...” so you’re not calling the singleton() method so much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601899</commentid>
    <comment_count>6</comment_count>
      <attachid>386541</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-30 11:11:30 -0800</bug_when>
    <thetext>Created attachment 386541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601926</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-30 12:51:54 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 386541:

highlight/highlight-world-leak.html bug 205643 (author: megan_gardner@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601927</commentid>
    <comment_count>8</comment_count>
      <attachid>386541</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-30 12:52:49 -0800</bug_when>
    <thetext>Comment on attachment 386541
Patch

Clearing flags on attachment: 386541

Committed r253952: &lt;https://trac.webkit.org/changeset/253952&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601928</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-30 12:52:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386498</attachid>
            <date>2019-12-29 14:52:47 -0800</date>
            <delta_ts>2019-12-29 17:26:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205632-20191229145240.patch</filename>
            <type>text/plain</type>
            <size>43512</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZmNmJkOTNjNzY0MzQ5
ZjczN2VmOTc2ODFlYmQyYjVjYmNkYjg5Yy4uYjg0OTExN2M3ZGQ3NzE0MDM2NTJhMzNlMDU3ZDE0
YTE4NmE4YmEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE5LTEyLTI5ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENyZWF0ZSBtZWRp
YSBtaW1lIHR5cGUgY2FjaGUgYmFzZSBjbGFzcyB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTYzMgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTgyMzM1NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFsIGNoYW5n
ZS4KKyAgICAgICAgCisgICAgICAgIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUgYW5k
IEFWQXNzZXRNSU1FVHlwZUNhY2hlIGhhdmUgYSBsb3Qgb2YgdmVyeSBzaW1pbGFyIGNvZGUsCisg
ICAgICAgIHNvIGNyZWF0ZSBNSU1FVHlwZUNhY2hlIGFzIGEgYmFzZSBjbGFzcy4gQWxzbyBtb3Zl
IG1vc3Qgb2YgdGhlIGxvZ2ljIGZyb20gCisgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlIGFuZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzdXBwb3J0c1R5cGUKKyAgICAgICAgaW4gdGhlIGNhY2hlcy4KKworICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVZpZGVvT3JTVkdN
SU1FVHlwZSk6IENhbGwgc3VwcG9ydHNDb250YWluZXJUeXBlLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TUlNRVR5cGVDYWNoZTo6c3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5
cGVDYWNoZTo6c3VwcG9ydHNDb250YWluZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVU
eXBlQ2FjaGU6OmNhbkRlY29kZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVDYWNo
ZTo6Y2FuRGVjb2RlVHlwZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVDYWNo
ZTo6c2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVDYWNoZTo6
YWRkU3VwcG9ydGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUNhY2hlOjpzdGF0
aWNDb250YWluZXJUeXBlTGlzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5
cGVDYWNoZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlQ2FjaGU6OmlzVW5z
dXBwb3J0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlQ2FjaGU6OmlzQXZhaWxh
YmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlQ2FjaGU6OmNhbkRlY29kZVR5
cGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUNhY2hlOjppbml0aWFsaXpl
Q2FjaGUpOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnM6OmVuY29kZSBjb25z
dCk6IERyaXZlLWJ5IGZpeCAtIGFkZCBtaXNzaW5nIHZhcmlhYmxlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVUeXBlQ2FjaGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlN
RVR5cGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXNzZXRNSU1FVHlwZUNhY2hlOjpp
c0F2YWlsYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBVkFzc2V0TUlNRVR5cGVDYWNo
ZTo6Y2FuRGVjb2RlVHlwZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXNzZXRNSU1F
VHlwZUNhY2hlOjppc1Vuc3VwcG9ydGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpBVkFzc2V0
TUlNRVR5cGVDYWNoZTo6c3RhdGljQ29udGFpbmVyVHlwZUxpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVZBc3NldE1JTUVUeXBlQ2FjaGU6OmluaXRpYWxpemVDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2V0U3VwcG9ydGVkVHlwZXMpOiBNb3ZlZCB0byBi
YXNlIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6QVZBc3NldE1JTUVUeXBlQ2FjaGU6OnR5cGVz
KTogTW92ZWQgdG8gYmFzZSBjbGFzcyBhcyBzdXBwb3J0ZWRUeXBlcy4KKyAgICAgICAgKFdlYkNv
cmU6OkFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzdXBwb3J0c0NvbnRlbnRUeXBlKTogUmVuYW1lZCBz
dXBwb3J0c0NvbnRhaW5lclR5cGUuCisgICAgICAgIChXZWJDb3JlOjpBVkFzc2V0TUlNRVR5cGVD
YWNoZTo6Y2FuRGVjb2RlVHlwZSk6IE1vdmVkIHRvIGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpBVkFzc2V0TUlNRVR5cGVDYWNoZTo6bG9hZE1JTUVUeXBlcyk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OmNhbkRlY29kZVR5cGVJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNh
Y2hlOjppbml0aWFsaXplQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZTo6dHlwZXMpOiBNb3ZlZCB0byBiYXNlIGNsYXNzIGFzIHN1cHBvcnRl
ZFR5cGVzLgorICAgICAgICAoV2ViQ29yZTo6QVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNo
ZTo6c3VwcG9ydHNDb250ZW50VHlwZSk6IFJlbmFtZWQgc3VwcG9ydHNDb250YWluZXJUeXBlLgor
ICAgICAgICAoV2ViQ29yZTo6QVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6Y2FuRGVj
b2RlVHlwZSk6IE1vdmVkIHRvIGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpBVlN0cmVh
bURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpsb2FkTUlNRVR5cGVzKTogRGVsZXRlZC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZG
T2JqQzo6c3VwcG9ydHNDb250YWluZXJUeXBlKTogUmVuYW1lZCBmcm9tIHN1cHBvcnRzQ29udGVu
dFR5cGUuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpjYW5EZWNvZGVU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnN1cHBvcnRzQ29u
dGVudFR5cGUpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmlzVW5zdXBwb3J0
ZWRNSU1FVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpzdGF0aWNNSU1FVHlwZUxpc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBvcnRl
ZFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZSk6CisKIDIwMTkt
MTItMjUgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHTF0g
RW5hYmxlIEFOR0xFIGJ5IGRlZmF1bHQgZm9yIENvY29hIHBsYXRmb3JtcyAoZXhjZXB0IHNpbXVs
YXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggYzk2ODE4OWM4YThkZTUyYTlmOWE0N2ExMWYyMzk5Zjcy
MDc5YmRhZC4uYTBlMjc5NDVlNGFmMTFiOWQ2MmMxZmE0ODYwZTViMDI4OTY3YmJmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTE4NzYsNiArMTg3Niw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFBv
aW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKK3Bs
YXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJjZTZjZDI5NmMwMTBm
OGUwOWE3ZDFmYzMwNjhjMWVmMzBmZGMwMjEuLjI2YzkyYjljNDcyZDYyNDBiNWRjYTc4ODIxMjk4
OTVmZTNiOTA1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTIwNSw2ICsyMDUsNyBAQAogCQkwN0I1QTJEQzE0NjQzMjBBMDBB
ODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0I1QTJEQTE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tM
aXN0LmggKi87IH07CiAJCTA3QjcxMTZEMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I3MTE2
QTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3QjcxMTZGMUQ4OTlFNjMwMDlGMEZGQiAv
KiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDdCNzExNkMxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VN
YW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMDdCOTNGRkMyM0I5NEVDNzAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjkzRkY5MjNCOTJBQUEwMDM2
RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMDdDMDQ2QzQxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDczQjg3NTgxRTQwRENGRDAwNzFDMEVDIC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3
QzA0NkNCMUU0MjY0MTMwMDcyMDFFNyAvKiBBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1NjFFNDBEQ0U1
MDA3MUMwRUMgLyogQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3QzFDMEUyMUJGQjYwMDEwMEJEMjI1NiAv
KiBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzFDMEUwMUJGQjYwMDEwMEJEMjI1NiAvKiBNZWRp
YVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLzsgfTsKQEAgLTU1NDUsNiArNTU0Niw4IEBA
CiAJCTA3QjcxMTZBMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcHR1cmVEZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDdCNzExNkIxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VN
YW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdCNzExNkMx
RDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhcHR1cmVEZXZpY2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA3QjkzRkY5MjNCOTJBQUEwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1JTUVUeXBlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDdCOTNGRkIyM0I5MkFBQjAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTUlNRVR5cGVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3QzA0NkM2MUU0MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3QzFDMEUwMUJGQjYwMDEwMEJEMjI1NiAvKiBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3Ry
YWludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFUcmFja1N1cHBv
cnRlZENvbnN0cmFpbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzFDMEUx
MUJGQjYwMDEwMEJEMjI1NiAvKiBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTEwNSw2ICsyNTEwOCw4IEBACiAJCQkJ
MDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oICovLAogCQkJ
CUNENjQxRUIxMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCAqLywKIAkJ
CQlDRERDMUU3OTE4QTk1MkYzMDAyN0E5RDQgLyogTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Lmgg
Ki8sCisJCQkJMDdCOTNGRkIyM0I5MkFBQjAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuY3BwICov
LAorCQkJCTA3QjkzRkY5MjNCOTJBQUEwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmggKi8sCiAJ
CQkJMzE0QkUzQTQxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5j
cHAgKi8sCiAJCQkJMzE0QkUzQTUxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZS5oICovLAogCQkJCTZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFn
ZS5oICovLApAQCAtMzE0OTcsNiArMzE1MDIsNyBAQAogCQkJCTUxRjY0NUUwMUZGNDU5NEUwMEI1
NERFRCAvKiBNZXNzYWdlUG9ydElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQTc0
OEUzMjAwNUQwRTgwMDc1QkE2OCAvKiBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTNCODk1QUYxOURDN0VEOTAwOUNBQTkzIC8qIE1pY3JvdGFza3MuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTA3QjkzRkZDMjNCOTRFQzcwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc3MkM0RjBDNEVCMzA0MDA4MzI4NUYgLyogTUlNRVR5
cGVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJGMTA4NjYxNjJCNkRBODAwOUFDODFF
IC8qIE1peGVkQ29udGVudENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMkRFRjFEMjNB
OTE4NjYwMEQ4NDBGNiAvKiBNb2NrQXVkaW9TaGFyZWRVbml0LmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggMTAwZGQ2
MzkxNzM0MzliNmU1NDdmZDIwYjA0YmUzODg4MmFlYmY0YS4uZDgxYzNkNjNmZGEyNWI3YzRiYzI0
ZDU2NjQ0NjFjM2M0ZmE0NmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5jcHAKQEAgLTQzMSw3ICs0MzEsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmIEhBVkUoQVZBU1NFVFJFQURFUikKLSAgICBp
ZiAoSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c3VwcG9ydHNDb250ZW50VHlwZShDb250ZW50VHlwZSht
aW1lVHlwZSkpKQorICAgIGlmIChJbWFnZURlY29kZXJBVkZPYmpDOjpzdXBwb3J0c0NvbnRhaW5l
clR5cGUobWltZVR5cGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIxZGMyNTI0NWUxYTllMzlhOWEyZGQ1YzBkYWQ0OWI1MTkxZDk0MzEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hl
LmNwcApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVDYWNo
ZS5oIgorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVDYWNo
ZTo6c3VwcG9ydGVkVHlwZXMoKQoreworICAgIGlmICghbV9zdXBwb3J0ZWRUeXBlcykgeworICAg
ICAgICBtX3N1cHBvcnRlZFR5cGVzID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4oKTsKKyAgICAgICAgaW5pdGlhbGl6ZUNhY2hlKCptX3N1cHBvcnRlZFR5cGVzKTsK
KyAgICB9CisKKyAgICByZXR1cm4gKm1fc3VwcG9ydGVkVHlwZXM7Cit9CisKK2Jvb2wgTUlNRVR5
cGVDYWNoZTo6c3VwcG9ydHNDb250YWluZXJUeXBlKGNvbnN0IFN0cmluZyYgY29udGFpbmVyVHlw
ZSkKK3sKKyAgICBpZiAoIWlzQXZhaWxhYmxlKCkgfHwgY29udGFpbmVyVHlwZS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzdGF0aWNDb250YWluZXJUeXBlTGlz
dCgpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IHJldHVybiBzdXBwb3J0ZWRUeXBlcygpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpOworfQorCitN
ZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgTUlNRVR5cGVDYWNoZTo6Y2FuRGVjb2RlVHlw
ZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGF1dG8gY29udGVudFR5cGUgPSBDb250
ZW50VHlwZSB7IG1pbWVUeXBlIH07CisgICAgYXV0byB0eXBlV2l0aENvZGVjcyA9IG1ha2VTdHJp
bmcoY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpLCAiOyBjb2RlY3M9XCIiLCBjb250ZW50VHlw
ZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKSwgIlwiIik7CisKKyAg
ICBpZiAobV9jYWNoZWRSZXN1bHRzKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX2NhY2hlZFJlc3Vs
dHMtPmZpbmQodHlwZVdpdGhDb2RlY3MpOworICAgICAgICBpZiAoaXQgIT0gbV9jYWNoZWRSZXN1
bHRzLT5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgfQorCisgICAg
YXV0byByZXN1bHQgPSBjYW5EZWNvZGVUeXBlUHJpdmF0ZShjb250ZW50VHlwZSk7CisgICAgaWYg
KCFtX2NhY2hlZFJlc3VsdHMpCisgICAgICAgIG1fY2FjaGVkUmVzdWx0cyA9IEhhc2hNYXA8U3Ry
aW5nLCBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4oKTsKKyAgICBtX2NhY2hlZFJlc3VsdHMtPmFkZCh0eXBlV2l0aENvZGVjcywgcmVzdWx0
KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK01lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRz
VHlwZSBNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlUHJpdmF0ZShjb25zdCBDb250ZW50VHlw
ZSYgY29udGVudFR5cGUpCit7CisgICAgaWYgKCFpc0F2YWlsYWJsZSgpIHx8IGNvbnRlbnRUeXBl
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlw
ZTo6SXNOb3RTdXBwb3J0ZWQ7CisKKyAgICBhdXRvIGNvbnRhaW5lclR5cGUgPSBjb250ZW50VHlw
ZS5jb250YWluZXJUeXBlKCk7CisgICAgaWYgKGlzVW5zdXBwb3J0ZWRUeXBlKGNvbnRhaW5lclR5
cGUpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05v
dFN1cHBvcnRlZDsKKworICAgIGlmIChjb250ZW50VHlwZS5jb2RlY3MoKS5pc0VtcHR5KCkgJiYg
c3VwcG9ydHNDb250YWluZXJUeXBlKGNvbnRhaW5lclR5cGUpKQorICAgICAgICByZXR1cm4gTWVk
aWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKKworICAgIGlmICgh
c3VwcG9ydGVkVHlwZXMoKS5jb250YWlucyhjb250YWluZXJUeXBlKSkKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CisKKyAgICBp
ZiAoY29udGVudFR5cGUuY29kZWNzKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKKworICAgIGlmIChjYW5E
ZWNvZGVUeXBlSW50ZXJuYWwoY29udGVudFR5cGUpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsKKworICAgIHJldHVybiBNZWRpYVBs
YXllckVudW1zOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOworfQorCit2b2lkIE1JTUVU
eXBlQ2FjaGU6OnNldFN1cHBvcnRlZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBuZXdUeXBl
cykKK3sKKyAgICBhdXRvJiBzdG9yYWdlID0gc3VwcG9ydGVkVHlwZXMoKTsKKyAgICBmb3IgKGF1
dG8mIHR5cGUgOiBuZXdUeXBlcykKKyAgICAgICAgc3RvcmFnZS5hZGQodHlwZSk7Cit9CisKK3Zv
aWQgTUlNRVR5cGVDYWNoZTo6YWRkU3VwcG9ydGVkVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCit7
CisgICAgc3VwcG9ydGVkVHlwZXMoKS5hZGQodHlwZSk7Cit9CisKK2NvbnN0IEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZUNhY2hlOjpzdGF0aWNDb250
YWluZXJUeXBlTGlzdCgpCit7CisgICAgc3RhdGljIGNvbnN0IGF1dG8gY2FjaGUgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geyB9
KTsKKyAgICByZXR1cm4gY2FjaGU7Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyNGQwNTk4MWI1NmQ1
NGY3NDI4MTI3YzY5NDg5OTlkMTVlNjZjZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmgKQEAgLTAsMCArMSw2NiBAQAor
LyoKKyogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lZGlhUGxh
eWVyRW51bXMuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBDb250ZW50VHlwZTsKKworY2xhc3MgTUlNRVR5cGVDYWNoZSB7CitwdWJsaWM6
CisgICAgTUlNRVR5cGVDYWNoZSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5NSU1FVHlwZUNh
Y2hlKCkgPSBkZWZhdWx0OworCisgICAgYm9vbCBzdXBwb3J0c0NvbnRhaW5lclR5cGUoY29uc3Qg
U3RyaW5nJik7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIGNhbkRlY29kZVR5
cGUoY29uc3QgU3RyaW5nJik7CisKKyAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiYgc3VwcG9ydGVkVHlwZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFN1cHBvcnRlZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBhZGRTdXBw
b3J0ZWRUeXBlKGNvbnN0IFN0cmluZyYpOworCisgICAgdmlydHVhbCBib29sIGlzVW5zdXBwb3J0
ZWRUeXBlKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IGlzQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCitwcm90ZWN0ZWQ6CisgICAg
dmlydHVhbCBib29sIGNhbkRlY29kZVR5cGVJbnRlcm5hbChjb25zdCBDb250ZW50VHlwZSYpIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVDYWNoZShIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpIHsgfQorICAgIHZpcnR1YWwgY29u
c3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN0YXRpY0NvbnRh
aW5lclR5cGVMaXN0KCk7CisKK3ByaXZhdGU6CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9y
dHNUeXBlIGNhbkRlY29kZVR5cGVQcml2YXRlKGNvbnN0IENvbnRlbnRUeXBlJik7CisKKyAgICBP
cHRpb25hbDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gbV9zdXBw
b3J0ZWRUeXBlczsKKyAgICBPcHRpb25hbDxIYXNoTWFwPFN0cmluZywgTWVkaWFQbGF5ZXJFbnVt
czo6U3VwcG9ydHNUeXBlLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBtX2NhY2hlZFJlc3Vs
dHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBmNmQ5ZDRmYmFkODgxY2U1YTZmNDZk
ZTAzYmQ1ZDVhOGE4OWMxYTdjLi5mNGRiNGM3ZDA2ODBiZDI1Mjg2NWRiMmU1MDM4MDE0NGU1MWM5
NDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKQEAgLTkxLDYgKzkxLDcgQEAgc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMg
ewogICAgICAgICBlbmNvZGVyIDw8IHR5cGU7CiAgICAgICAgIGVuY29kZXIgPDwgdXJsOwogICAg
ICAgICBlbmNvZGVyIDw8IGlzTWVkaWFTb3VyY2U7CisgICAgICAgIGVuY29kZXIgPDwgaXNNZWRp
YVN0cmVhbTsKICAgICAgICAgZW5jb2RlciA8PCBjb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2Fy
ZVN1cHBvcnQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb24uY3BwCmluZGV4IDliODk3M2I2MWUwMTUyMDEzYzhlZTdjMzli
OTBmODY5NDc1YWNkMTAuLjA2MDg2Mzc2OTM0MjYyMTkyMWE0Y2IxZWY0NGY4YjUxODg1ZGE3ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uY3BwCkBAIC0xMDM0LDMxICsxMDM0LDYgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmNhblNhdmVNZWRpYURhdGEoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6aXNVbnN1cHBvcnRlZE1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKLXsKLSAgICBTdHJpbmcgbG93ZXJDYXNlVHlwZSA9
IHR5cGUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKLQotICAgIC8vIEFWRm91bmRhdGlvbiB3
aWxsIHJldHVybiBub24tdmlkZW8gTUlNRSB0eXBlcyB3aGljaCBpdCBjbGFpbXMgdG8gc3VwcG9y
dCwgYnV0IHdoaWNoIHdlCi0gICAgLy8gZG8gbm90IHN1cHBvcnQgaW4gdGhlIDx2aWRlbz4gZWxl
bWVudC4gUmVqZWN0IGFsbCBub24gdmlkZW8vLCBhdWRpby8sIGFuZCBhcHBsaWNhdGlvbi8gdHlw
ZXMuCi0gICAgaWYgKCFsb3dlckNhc2VUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFsb3dl
ckNhc2VUeXBlLnN0YXJ0c1dpdGgoImF1ZGlvLyIpICYmICFsb3dlckNhc2VUeXBlLnN0YXJ0c1dp
dGgoImFwcGxpY2F0aW9uLyIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFJlamVj
dCB0eXBlcyB3ZSBrbm93IEFWRm91bmRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHRoYXQgc2l0ZXMg
Y29tbW9ubHkgYXNrIGFib3V0LgotICAgIGlmIChsb3dlckNhc2VUeXBlID09ICJ2aWRlby93ZWJt
IiB8fCBsb3dlckNhc2VUeXBlID09ICJhdWRpby93ZWJtIiB8fCBsb3dlckNhc2VUeXBlID09ICJ2
aWRlby94LXdlYm0iKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChsb3dlckNhc2VU
eXBlID09ICJ2aWRlby94LWZsdiIpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKGxv
d2VyQ2FzZVR5cGUgPT0gImF1ZGlvL29nZyIgfHwgbG93ZXJDYXNlVHlwZSA9PSAidmlkZW8vb2dn
IiB8fCBsb3dlckNhc2VUeXBlID09ICJhcHBsaWNhdGlvbi9vZ2ciKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIGlmIChsb3dlckNhc2VUeXBlID09ICJ2aWRlby9oMjY0IikKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKIFdURkxvZ0NoYW5uZWwmIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6
bG9nQ2hhbm5lbCgpIGNvbnN0CiB7CkBAIC0xMDY2LDQzICsxMDQxLDYgQEAgV1RGTG9nQ2hhbm5l
bCYgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpsb2dDaGFubmVsKCkgY29uc3QKIH0K
ICNlbmRpZgogCi1jb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzdGF0aWNNSU1FVHlwZUxpc3QoKQot
ewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGNhY2hlID0gbWFrZU5ldmVyRGVzdHJveWVkKEhhc2hT
ZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsKLSAgICAgICAgImFwcGxpY2F0
aW9uL3ZuZC5hcHBsZS5tcGVndXJsIiwKLSAgICAgICAgImFwcGxpY2F0aW9uL3gtbXBlZ3VybCIs
Ci0gICAgICAgICJhdWRpby8zZ3BwIiwKLSAgICAgICAgImF1ZGlvL2FhYyIsCi0gICAgICAgICJh
dWRpby9hYWNwIiwKLSAgICAgICAgImF1ZGlvL2FpZmYiLAotICAgICAgICAiYXVkaW8vYmFzaWMi
LAotICAgICAgICAiYXVkaW8vbXAzIiwKLSAgICAgICAgImF1ZGlvL21wNCIsCi0gICAgICAgICJh
dWRpby9tcGVnIiwKLSAgICAgICAgImF1ZGlvL21wZWczIiwKLSAgICAgICAgImF1ZGlvL21wZWd1
cmwiLAotICAgICAgICAiYXVkaW8vbXBnIiwKLSAgICAgICAgImF1ZGlvL3ZuZC53YXZlIiwKLSAg
ICAgICAgImF1ZGlvL3dhdiIsCi0gICAgICAgICJhdWRpby93YXZlIiwKLSAgICAgICAgImF1ZGlv
L3gtYWFjIiwKLSAgICAgICAgImF1ZGlvL3gtYWlmZiIsCi0gICAgICAgICJhdWRpby94LW00YSIs
Ci0gICAgICAgICJhdWRpby94LW1wZWd1cmwiLAotICAgICAgICAiYXVkaW8veC13YXYiLAotICAg
ICAgICAidmlkZW8vM2dwcCIsCi0gICAgICAgICJ2aWRlby8zZ3BwMiIsCi0gICAgICAgICJ2aWRl
by9tcDQiLAotICAgICAgICAidmlkZW8vbXBlZyIsCi0gICAgICAgICJ2aWRlby9tcGVnMiIsCi0g
ICAgICAgICJ2aWRlby9tcGciLAotICAgICAgICAidmlkZW8vcXVpY2t0aW1lIiwKLSAgICAgICAg
InZpZGVvL3gtbTR2IiwKLSAgICAgICAgInZpZGVvL3gtbXBlZyIsCi0gICAgICAgICJ2aWRlby94
LW1wZyIsCi0gICAgfSk7Ci0gICAgcmV0dXJuIGNhY2hlOwotfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaAppbmRleCAzOWRhNTU4ZTZkYjM4ZjBjNzc4YzUxNzgwYTA3NjJiNWY2NTAwYjBm
Li4zZjgwODg5MmRlMWMxODFjNjdkOTkxYzVmYmYyYmZmMDAzMWRmYjg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCkBAIC0yNzAs
OSArMjcwLDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0xheWVy
R3Jhdml0eSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZWRVUkxDaGFuZ2VkKCkgPSAw
OwogCi0gICAgc3RhdGljIGJvb2wgaXNVbnN1cHBvcnRlZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYp
OwotICAgIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgc3RhdGljTUlNRVR5cGVMaXN0KCk7Ci0KIHByb3RlY3RlZDoKICAgICB2b2lkIHVwZGF0
ZVN0YXRlcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVUeXBlQ2Fj
aGUuaAppbmRleCBkNmQ5MmFjYjA1YWVmYzQxN2U1YjdlNjhhODYyNDI5ODU3M2FkNTlhLi5kNjFl
NTU3NTE4YWU4MzRjM2IzNzk3ZjZjNjg3YzAxZmZmZTg2MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5
cGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogCisjaW5jbHVkZSAiTUlNRVR5cGVDYWNoZS5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CkBAIC0zNSwyNyArMzYsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb250ZW50VHlwZTsKIAotY2xhc3MgQVZBc3NldE1JTUVUeXBlQ2FjaGUgewor
Y2xhc3MgQVZBc3NldE1JTUVUeXBlQ2FjaGUgZmluYWwgOiBwdWJsaWMgTUlNRVR5cGVDYWNoZSB7
CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFWQXNzZXRNSU1FVHlwZUNhY2hl
JiBzaW5nbGV0b24oKTsKIAotICAgIGJvb2wgc3VwcG9ydHNDb250ZW50VHlwZShjb25zdCBDb250
ZW50VHlwZSYpOwotICAgIGJvb2wgY2FuRGVjb2RlVHlwZShjb25zdCBTdHJpbmcmKTsKLQotICAg
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcygp
OwogICAgIGJvb2wgaXNFbXB0eSgpOwogICAgIGJvb2wgaXNBdmFpbGFibGUoKSBjb25zdDsKIAog
ICAgIHVzaW5nIENhY2hlTUlNRVR5cGVzQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29u
c3QgVmVjdG9yPFN0cmluZz4mKT47CiAgICAgdm9pZCBzZXRDYWNoZU1JTUVUeXBlc0NhbGxiYWNr
KENhY2hlTUlNRVR5cGVzQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX2NhY2hlVHlwZUNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Vw
cG9ydGVkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKLQogcHJpdmF0ZToKICAgICBmcmll
bmQgTmV2ZXJEZXN0cm95ZWQ8QVZBc3NldE1JTUVUeXBlQ2FjaGU+OwogICAgIEFWQXNzZXRNSU1F
VHlwZUNhY2hlKCkgPSBkZWZhdWx0OwogCi0gICAgdm9pZCBsb2FkTUlNRVR5cGVzKCk7CisgICAg
Y29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN0YXRpY0Nv
bnRhaW5lclR5cGVMaXN0KCkgZmluYWw7CisgICAgYm9vbCBpc1Vuc3VwcG9ydGVkVHlwZShjb25z
dCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGNhbkRlY29kZVR5cGVJbnRlcm5hbChjb25zdCBD
b250ZW50VHlwZSYpIGZpbmFsOworICAgIHZvaWQgaW5pdGlhbGl6ZUNhY2hlKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JikgZmluYWw7CiAKICAgICBPcHRpb25hbDxI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gbV9jYWNoZTsKICAgICBD
YWNoZU1JTUVUeXBlc0NhbGxiYWNrIG1fY2FjaGVUeXBlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0
TUlNRVR5cGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCmluZGV4IGUyNmI2NDIzYzVlYjI1
NzNkY2U5ZjY0OTc2NGEwODFmMjczNGI4NTguLjg0YTM5N2VjN2Q5NDllMTNiN2NhYmFhN2RiMTU3
MGIyMDA1M2NlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlw
ZUNhY2hlLm1tCkBAIC00NSw3OCArNDUsMTA4IEBAIEFWQXNzZXRNSU1FVHlwZUNhY2hlJiBBVkFz
c2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkKICAgICByZXR1cm4gY2FjaGUuZ2V0KCk7CiB9
CiAKLXZvaWQgQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNldFN1cHBvcnRlZFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcykKK2Jvb2wgQVZBc3NldE1JTUVUeXBlQ2FjaGU6OmlzQXZhaWxh
YmxlKCkgY29uc3QKIHsKLSAgICBpZiAobV9jYWNoZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9jYWNoZSA9IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KCk7Ci0g
ICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCi0gICAgICAgIG1fY2FjaGUtPmFkZCh0eXBlKTsK
KyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisjaWYgUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHVzaW5nIEFWRm91bmRhdGlv
bkxpYnJhcnlJc0F2YWlsYWJsZSgpIGluc3RlYWQsIGJ1dCBkb2luZyBzbyBjYXVzZXMgc29mdC1s
aW5raW5nCisgICAgLy8gdG8gc3Vic2VxdWVudGx5IGZhaWwgb24gY2VydGFpbiBzeW1ib2xzLiBT
ZWUgPHJkYXI6Ly9wcm9ibGVtLzQyMjI0NzgwPiBmb3IgbW9yZSBkZXRhaWxzLgorICAgIHJldHVy
biBQQUw6OmlzQVZGb3VuZGF0aW9uRnJhbWV3b3JrQXZhaWxhYmxlKCk7CisjZWxzZQorICAgIHJl
dHVybiBBVkZvdW5kYXRpb25MaWJyYXJ5SXNBdmFpbGFibGUoKTsKKyNlbmRpZgorI2Vsc2UKKyAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAotY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjp0eXBlcygpCitib29s
IEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlSW50ZXJuYWwoY29uc3QgQ29udGVu
dFR5cGUmIHR5cGUpCiB7Ci0gICAgaWYgKCFtX2NhY2hlKQotICAgICAgICBsb2FkTUlNRVR5cGVz
KCk7CisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgIEFTU0VSVChp
c0F2YWlsYWJsZSgpKTsKKyAgICByZXR1cm4gW1BBTDo6Z2V0QVZVUkxBc3NldENsYXNzKCkgaXNQ
bGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6dHlwZS5yYXcoKV07CisjZW5kaWYKIAotICAgIHJldHVy
biAqbV9jYWNoZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQVZBc3NldE1JTUVUeXBl
Q2FjaGU6OnN1cHBvcnRzQ29udGVudFR5cGUoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBl
KQorYm9vbCBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6aXNVbnN1cHBvcnRlZFR5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlKQogewotICAgIGlmIChjb250ZW50VHlwZS5pc0VtcHR5KCkpCisgICAgaWYgKHR5
cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gdHlwZXMo
KS5jb250YWlucyhjb250ZW50VHlwZS5jb250YWluZXJUeXBlKCkpOwotfQorICAgIFN0cmluZyBs
b3dlckNhc2VUeXBlID0gdHlwZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogCi1ib29sIEFW
QXNzZXRNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
Ci17Ci0gICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIC8vIEFWRm91bmRhdGlvbiB3aWxsIHJldHVybiBub24tdmlkZW8gTUlNRSB0eXBlcyB3aGlj
aCBpdCBjbGFpbXMgdG8gc3VwcG9ydCwgYnV0IHdoaWNoIHdlCisgICAgLy8gZG8gbm90IHN1cHBv
cnQgaW4gdGhlIDx2aWRlbz4gZWxlbWVudC4gUmVqZWN0IGFsbCBub24gdmlkZW8vLCBhdWRpby8s
IGFuZCBhcHBsaWNhdGlvbi8gdHlwZXMuCisgICAgaWYgKCFsb3dlckNhc2VUeXBlLnN0YXJ0c1dp
dGgoInZpZGVvLyIpICYmICFsb3dlckNhc2VUeXBlLnN0YXJ0c1dpdGgoImF1ZGlvLyIpICYmICFs
b3dlckNhc2VUeXBlLnN0YXJ0c1dpdGgoImFwcGxpY2F0aW9uLyIpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIGlmICghaXNBdmFpbGFibGUoKSB8fCAhdHlwZXMoKS5jb250YWlucyhDb250
ZW50VHlwZSB7IG1pbWVUeXBlIH0uY29udGFpbmVyVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIC8vIFJlamVjdCB0eXBlcyB3ZSBrbm93IEFWRm91bmRhdGlvbiBkb2VzIG5vdCBz
dXBwb3J0IHRoYXQgc2l0ZXMgY29tbW9ubHkgYXNrIGFib3V0LgorICAgIGlmIChsb3dlckNhc2VU
eXBlID09ICJ2aWRlby93ZWJtIiB8fCBsb3dlckNhc2VUeXBlID09ICJhdWRpby93ZWJtIiB8fCBs
b3dlckNhc2VUeXBlID09ICJ2aWRlby94LXdlYm0iKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKLSAgICByZXR1cm4gW1BBTDo6
Z2V0QVZVUkxBc3NldENsYXNzKCkgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6bWltZVR5cGVd
OwotI2VuZGlmCisgICAgaWYgKGxvd2VyQ2FzZVR5cGUgPT0gInZpZGVvL3gtZmx2IikKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobG93ZXJDYXNlVHlwZSA9PSAiYXVkaW8vb2dnIiB8
fCBsb3dlckNhc2VUeXBlID09ICJ2aWRlby9vZ2ciIHx8IGxvd2VyQ2FzZVR5cGUgPT0gImFwcGxp
Y2F0aW9uL29nZyIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGxvd2VyQ2FzZVR5
cGUgPT0gInZpZGVvL2gyNjQiKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6aXNBdmFpbGFibGUoKSBjb25z
dAorY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIEFWQXNz
ZXRNSU1FVHlwZUNhY2hlOjpzdGF0aWNDb250YWluZXJUeXBlTGlzdCgpCiB7Ci0jaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQotI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQot
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB1c2luZyBBVkZvdW5kYXRpb25MaWJyYXJ5SXNB
dmFpbGFibGUoKSBpbnN0ZWFkLCBidXQgZG9pbmcgc28gY2F1c2VzIHNvZnQtbGlua2luZwotICAg
IC8vIHRvIHN1YnNlcXVlbnRseSBmYWlsIG9uIGNlcnRhaW4gc3ltYm9scy4gU2VlIDxyZGFyOi8v
cHJvYmxlbS80MjIyNDc4MD4gZm9yIG1vcmUgZGV0YWlscy4KLSAgICByZXR1cm4gUEFMOjppc0FW
Rm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJsZSgpOwotI2Vsc2UKLSAgICByZXR1cm4gQVZGb3Vu
ZGF0aW9uTGlicmFyeUlzQXZhaWxhYmxlKCk7Ci0jZW5kaWYKLSNlbHNlCi0gICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCisgICAgc3RhdGljIGNvbnN0IGF1dG8gY2FjaGUgPSBtYWtlTmV2ZXJEZXN0
cm95ZWQoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geworICAgICAg
ICAiYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmwiLAorICAgICAgICAiYXBwbGljYXRpb24v
eC1tcGVndXJsIiwKKyAgICAgICAgImF1ZGlvLzNncHAiLAorICAgICAgICAiYXVkaW8vYWFjIiwK
KyAgICAgICAgImF1ZGlvL2FhY3AiLAorICAgICAgICAiYXVkaW8vYWlmZiIsCisgICAgICAgICJh
dWRpby9iYXNpYyIsCisgICAgICAgICJhdWRpby9tcDMiLAorICAgICAgICAiYXVkaW8vbXA0IiwK
KyAgICAgICAgImF1ZGlvL21wZWciLAorICAgICAgICAiYXVkaW8vbXBlZzMiLAorICAgICAgICAi
YXVkaW8vbXBlZ3VybCIsCisgICAgICAgICJhdWRpby9tcGciLAorICAgICAgICAiYXVkaW8vdm5k
LndhdmUiLAorICAgICAgICAiYXVkaW8vd2F2IiwKKyAgICAgICAgImF1ZGlvL3dhdmUiLAorICAg
ICAgICAiYXVkaW8veC1hYWMiLAorICAgICAgICAiYXVkaW8veC1haWZmIiwKKyAgICAgICAgImF1
ZGlvL3gtbTRhIiwKKyAgICAgICAgImF1ZGlvL3gtbXBlZ3VybCIsCisgICAgICAgICJhdWRpby94
LXdhdiIsCisgICAgICAgICJ2aWRlby8zZ3BwIiwKKyAgICAgICAgInZpZGVvLzNncHAyIiwKKyAg
ICAgICAgInZpZGVvL21wNCIsCisgICAgICAgICJ2aWRlby9tcGVnIiwKKyAgICAgICAgInZpZGVv
L21wZWcyIiwKKyAgICAgICAgInZpZGVvL21wZyIsCisgICAgICAgICJ2aWRlby9xdWlja3RpbWUi
LAorICAgICAgICAidmlkZW8veC1tNHYiLAorICAgICAgICAidmlkZW8veC1tcGVnIiwKKyAgICAg
ICAgInZpZGVvL3gtbXBnIiwKKyAgICB9KTsKKyAgICByZXR1cm4gY2FjaGU7CiB9CiAKLXZvaWQg
QVZBc3NldE1JTUVUeXBlQ2FjaGU6OmxvYWRNSU1FVHlwZXMoKQordm9pZCBBVkFzc2V0TUlNRVR5
cGVDYWNoZTo6aW5pdGlhbGl6ZUNhY2hlKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiBjYWNoZSkKIHsKLSAgICBtX2NhY2hlID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4oKTsKLQogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9V
TkRBVElPTikKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpj
YWxsX29uY2Uob25jZUZsYWcsIFt0aGlzXSB7Ci0gICAgICAgIGlmICghUEFMOjppc0FWRm91bmRh
dGlvbkZyYW1ld29ya0F2YWlsYWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuOworICAgIGlmICgh
aXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZvciAoTlNTdHJpbmcq
IHR5cGUgaW4gW1BBTDo6Z2V0QVZVUkxBc3NldENsYXNzKCkgYXVkaW92aXN1YWxNSU1FVHlwZXNd
KQotICAgICAgICAgICAgbV9jYWNoZS0+YWRkKHR5cGUpOworICAgIGZvciAoTlNTdHJpbmcqIHR5
cGUgaW4gW1BBTDo6Z2V0QVZVUkxBc3NldENsYXNzKCkgYXVkaW92aXN1YWxNSU1FVHlwZXNdKQor
ICAgICAgICBjYWNoZS5hZGQodHlwZSk7CiAKLSAgICAgICAgaWYgKG1fY2FjaGVUeXBlQ2FsbGJh
Y2spCi0gICAgICAgICAgICBtX2NhY2hlVHlwZUNhbGxiYWNrKGNvcHlUb1ZlY3RvcigqbV9jYWNo
ZSkpOwotICAgIH0pOworICAgIGlmIChtX2NhY2hlVHlwZUNhbGxiYWNrKQorICAgICAgICBtX2Nh
Y2hlVHlwZUNhbGxiYWNrKGNvcHlUb1ZlY3RvcihjYWNoZSkpOwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBl
Q2FjaGUuaAppbmRleCAwNDQ0MTk5ZWY0N2JkZTQzNzc5YTIxMjk0MjZjNGYwMDVjOGU0YWUzLi5i
OWNhNDczYTdhNjQyMjg4ZWY4ODNkMGQ1ZjgyODVlMGY0NWIzMTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlN0cmVhbURh
dGFQYXJzZXJNSU1FVHlwZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQogCisjaW5jbHVkZSAiTUlNRVR5cGVDYWNoZS5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CkBAIC0zNSwyNCArMzYsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb250ZW50VHlwZTsKIAotY2xhc3MgQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNo
ZSB7CitjbGFzcyBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlIGZpbmFsIDogcHVibGlj
IE1JTUVUeXBlQ2FjaGUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBVlN0
cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlJiBzaW5nbGV0b24oKTsKIAotICAgIGJvb2wgc3Vw
cG9ydHNDb250ZW50VHlwZShjb25zdCBDb250ZW50VHlwZSYpOwotICAgIGJvb2wgY2FuRGVjb2Rl
VHlwZShjb25zdCBTdHJpbmcmKTsKLQotICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcygpOwotICAgIGJvb2wgaXNFbXB0eSgpOwotICAgIGJv
b2wgaXNBdmFpbGFibGUoKSBjb25zdDsKKyAgICBib29sIGlzQXZhaWxhYmxlKCkgY29uc3QgZmlu
YWw7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGU+OwogICAgIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUo
KSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIGxvYWRNSU1FVHlwZXMoKTsKLQotICAgIE9wdGlvbmFs
PEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBtX2NhY2hlOworICAg
IGJvb2wgY2FuRGVjb2RlVHlwZUludGVybmFsKGNvbnN0IENvbnRlbnRUeXBlJikgZmluYWw7Cisg
ICAgdm9pZCBpbml0aWFsaXplQ2FjaGUoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4mKSBmaW5hbDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVU
eXBlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9BVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLm1tCmluZGV4IDlhMmU4Nzll
MjBmZTkzNDIxYzM0N2FlMzIyZjcyNzlkZTQ1YzVmMmYuLjdlMGFjMGE2MTY5MDhhMDUyNjEyYmQ5
M2YyMDA4NTlmNzk5NWRmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbQpAQCAtNTQsNDUgKzU0LDMwIEBA
IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUmIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVU
eXBlQ2FjaGU6OnNpbmdsZXRvbigpCiAgICAgcmV0dXJuIGNhY2hlLmdldCgpOwogfQogCi1jb25z
dCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgQVZTdHJlYW1EYXRh
UGFyc2VyTUlNRVR5cGVDYWNoZTo6dHlwZXMoKQorYm9vbCBBVlN0cmVhbURhdGFQYXJzZXJNSU1F
VHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlSW50ZXJuYWwoY29uc3QgQ29udGVudFR5cGUmIHR5cGUp
CiB7Ci0gICAgaWYgKCFtX2NhY2hlKQotICAgICAgICBsb2FkTUlNRVR5cGVzKCk7Ci0KLSAgICBy
ZXR1cm4gKm1fY2FjaGU7Ci19Ci0KLWJvb2wgQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNo
ZTo6c3VwcG9ydHNDb250ZW50VHlwZShjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpCi17
Ci0gICAgaWYgKGNvbnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmV0dXJuIHR5cGVzKCkuY29udGFpbnMoY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgp
KTsKLX0KLQotYm9vbCBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgaWYgKG1pbWVUeXBlLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ29udGVudFR5cGUgdHlwZSB7IG1pbWVU
eXBlIH07CisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgIEFTU0VS
VChpc0F2YWlsYWJsZSgpKTsKIAotICAgIGlmICghaXNBdmFpbGFibGUoKSB8fCAhdHlwZXMoKS5j
b250YWlucyh0eXBlLmNvbnRhaW5lclR5cGUoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBTdHJpbmcgb3V0cHV0Q29kZWNzID0gdHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVj
c1BhcmFtZXRlcigpKTsKKyAgICBBU1NFUlQoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkpOworICAg
IGlmIChbUEFMOjpnZXRBVlN0cmVhbURhdGFQYXJzZXJDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Iob3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJh
bWV0ZXI6KV0pCisgICAgICAgIG91dHB1dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBh
cnNlckNsYXNzKCkgb3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJh
bWV0ZXI6b3V0cHV0Q29kZWNzXTsKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRB
VElPTikKKyAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyh0eXBlLmNvbnRhaW5l
clR5cGUoKSwgIjsgY29kZWNzPVwiIiwgb3V0cHV0Q29kZWNzLCAiXCIiKTsKICAgICBpZiAoW1BB
TDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGNhblBhcnNlRXh0ZW5kZWRNSU1FVHlwZTopXSkKLSAgICAgICAgcmV0dXJuIFtQQUw6Omdl
dEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgY2FuUGFyc2VFeHRlbmRlZE1JTUVUeXBlOm1pbWVU
eXBlXTsKKyAgICAgICAgcmV0dXJuIFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkg
Y2FuUGFyc2VFeHRlbmRlZE1JTUVUeXBlOmV4dGVuZGVkVHlwZV07CiAKICAgICAvLyBGSVhNRShy
ZGFyOi8vNTA1MDI3NzEpIEFWU3RyZWFtRGF0YVBhcnNlciBkb2VzIG5vdCBoYXZlIGFuIC1jYW5Q
YXJzZUV4dGVuZGVkTUlNRVR5cGU6IG1ldGhvZCBvbiB0aGlzIHN5c3RlbSwKICAgICAvLyAgc28g
anVzdCByZXBsYWNlIHRoZSBjb250YWluZXIgdHlwZSB3aXRoIGEgdmFsaWQgb25lIGZyb20gQVZB
c3NldE1JTUVUeXBlQ2FjaGUgYW5kIGFzayB0aGF0IGNhY2hlIGlmIGl0CiAgICAgLy8gIGNhbiBk
ZWNvZGUgdGhpcyB0eXBlLgogICAgIGF1dG8mIGFzc2V0Q2FjaGUgPSBBVkFzc2V0TUlNRVR5cGVD
YWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKCFhc3NldENhY2hlLmlzQXZhaWxhYmxlKCkgfHwg
YXNzZXRDYWNoZS50eXBlcygpLmlzRW1wdHkoKSkKKyAgICBpZiAoIWFzc2V0Q2FjaGUuaXNBdmFp
bGFibGUoKSB8fCBhc3NldENhY2hlLnN1cHBvcnRlZFR5cGVzKCkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyaW5nIHJlcGxhY2VtZW50VHlwZSB7IG1pbWVUeXBlIH07
Ci0gICAgcmVwbGFjZW1lbnRUeXBlLnJlcGxhY2UodHlwZS5jb250YWluZXJUeXBlKCksICphc3Nl
dENhY2hlLnR5cGVzKCkuYmVnaW4oKSk7Ci0gICAgcmV0dXJuIGFzc2V0Q2FjaGUuY2FuRGVjb2Rl
VHlwZShyZXBsYWNlbWVudFR5cGUpOworCisgICAgU3RyaW5nIHJlcGxhY2VtZW50VHlwZSB7IHR5
cGUucmF3KCkgfTsKKyAgICByZXBsYWNlbWVudFR5cGUucmVwbGFjZSh0eXBlLmNvbnRhaW5lclR5
cGUoKSwgKmFzc2V0Q2FjaGUuc3VwcG9ydGVkVHlwZXMoKS5iZWdpbigpKTsKKyAgICByZXR1cm4g
YXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKHJlcGxhY2VtZW50VHlwZSkgPT0gTWVkaWFQbGF5ZXJF
bnVtczo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsKICNlbmRpZgogCiAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTE3LDE5ICsxMDIsMTQgQEAgYm9vbCBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlw
ZUNhY2hlOjppc0F2YWlsYWJsZSgpIGNvbnN0CiAjZW5kaWYKIH0KIAotdm9pZCBBVlN0cmVhbURh
dGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpsb2FkTUlNRVR5cGVzKCkKK3ZvaWQgQVZTdHJlYW1EYXRh
UGFyc2VyTUlNRVR5cGVDYWNoZTo6aW5pdGlhbGl6ZUNhY2hlKEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBjYWNoZSkKIHsKLSAgICBtX2NhY2hlID0gSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oKTsKLQogI2lmIEVOQUJMRShWSURFTykg
JiYgVVNFKEFWRk9VTkRBVElPTikKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFt0aGlzXSB7Ci0gICAgICAgIGlmICghaXNB
dmFpbGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3IgKE5TU3RyaW5n
KiB0eXBlIGluIFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgYXVkaW92aXN1YWxN
SU1FVHlwZXNdKQotICAgICAgICAgICAgbV9jYWNoZS0+YWRkKHR5cGUpOwotICAgIH0pOworICAg
IGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChOU1N0cmlu
ZyogdHlwZSBpbiBbUEFMOjpnZXRBVlN0cmVhbURhdGFQYXJzZXJDbGFzcygpIGF1ZGlvdmlzdWFs
TUlNRVR5cGVzXSkKKyAgICAgICAgY2FjaGUuYWRkKHR5cGUpOwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCBiNWQxYjlhZGM2
ZDFmZTQxYWUzZDcxNDdiMGEzYzcxOGYzYTIxM2QyLi44YTVmNTg3MGEzNTM1NzNkODY5NzY2OTM5
MTU0ZDk3YjcyMmNmYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVy
QVZGT2JqQy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZURl
Y29kZXJBVkZPYmpDKCk7CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRp
YVR5cGUpOwotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQ29udGVudFR5cGUoY29uc3QgQ29udGVu
dFR5cGUmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0NvbnRhaW5lclR5cGUoY29uc3QgU3Ry
aW5nJik7CiAKICAgICBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBib29sIGNhbkRlY29kZVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAzMjZkYWRiYjE3ZDA4OTExNzBlYjc1NDUzYjYzNDhk
N2ZlODM5NzgyLi5kZWExZDE1ZjQ5MDRhMDMwYTIwZTlhOTM0MTc3NzcwZTQ4Nzg4N2VjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTM0OSwx
NCArMzQ5LDE0IEBAIGJvb2wgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c3VwcG9ydHNNZWRpYVR5cGUo
TWVkaWFUeXBlIHR5cGUpCiAgICAgcmV0dXJuIHR5cGUgPT0gTWVkaWFUeXBlOjpWaWRlbyAmJiBB
VkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKTsKIH0KIAotYm9v
bCBJbWFnZURlY29kZXJBVkZPYmpDOjpzdXBwb3J0c0NvbnRlbnRUeXBlKGNvbnN0IENvbnRlbnRU
eXBlJiB0eXBlKQorYm9vbCBJbWFnZURlY29kZXJBVkZPYmpDOjpzdXBwb3J0c0NvbnRhaW5lclR5
cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIHJldHVybiBBVkFzc2V0TUlNRVR5cGVDYWNo
ZTo6c2luZ2xldG9uKCkuc3VwcG9ydHNDb250ZW50VHlwZSh0eXBlKTsKKyAgICByZXR1cm4gQVZB
c3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLnN1cHBvcnRzQ29udGFpbmVyVHlwZSh0eXBl
KTsKIH0KIAogYm9vbCBJbWFnZURlY29kZXJBVkZPYmpDOjpjYW5EZWNvZGVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgcmV0dXJuIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5n
bGV0b24oKS5jYW5EZWNvZGVUeXBlKG1pbWVUeXBlKTsKKyAgICByZXR1cm4gQVZBc3NldE1JTUVU
eXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNhbkRlY29kZVR5cGUobWltZVR5cGUpID09IE1lZGlhUGxh
eWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CiB9CiAKIEFWQXNzZXRUcmFjayAq
SW1hZ2VEZWNvZGVyQVZGT2JqQzo6Zmlyc3RFbmFibGVkVHJhY2soKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KaW5kZXggZmEzZWE1Y2I1OWE2MzQ4ZDYxZDFlMjkyYWU5ZWE2MTJmZjEwYzIwOS4uNTU5
N2ZiYTZlZmE5OWE4ZWIwYWIxM2QyMmI3YWRmYzk2MTg1YzcyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCkBAIC0xNjA2LDcgKzE2MDYsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlSW1hZ2VGb3JUaW1lSW5SZQogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBvcnRlZFR5cGVz
KEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRUeXBl
cykKIHsKLSAgICBzdXBwb3J0ZWRUeXBlcyA9IEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0
b24oKS50eXBlcygpOworICAgIHN1cHBvcnRlZFR5cGVzID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6
OnNpbmdsZXRvbigpLnN1cHBvcnRlZFR5cGVzKCk7CiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKQEAgLTE2MjksMjMgKzE2MjksMTQgQEAgTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUo
Y29uc3QKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3Vw
cG9ydGVkOwogI2VuZGlmCiAKLSAgICBhdXRvIGNvbnRhaW5lclR5cGUgPSBwYXJhbWV0ZXJzLnR5
cGUuY29udGFpbmVyVHlwZSgpOwotICAgIGlmIChpc1Vuc3VwcG9ydGVkTUlNRVR5cGUoY29udGFp
bmVyVHlwZSkpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05v
dFN1cHBvcnRlZDsKLQotICAgIGlmICghc3RhdGljTUlNRVR5cGVMaXN0KCkuY29udGFpbnMoY29u
dGFpbmVyVHlwZSkgJiYgIUFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5jYW5EZWNv
ZGVUeXBlKGNvbnRhaW5lclR5cGUpKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7Ci0KLSAgICAvLyBUaGUgc3BlYyBzYXlzOgotICAgIC8v
ICJJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJtYXliZSIgdW5sZXNzIHRo
ZSB0eXBlIGNhbiBiZSBjb25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBiZWluZyBzdXBwb3J0ZWQg
b3Igbm90LiIKLSAgICBpZiAocGFyYW1ldGVycy50eXBlLmNvZGVjcygpLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOwor
ICAgIGF1dG8gc3VwcG9ydGVkID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNh
bkRlY29kZVR5cGUocGFyYW1ldGVycy50eXBlLnJhdygpKTsKKyAgICBpZiAoc3VwcG9ydGVkICE9
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkKQorICAgICAgICByZXR1cm4g
c3VwcG9ydGVkOwogCiAgICAgaWYgKCFjb250ZW50VHlwZU1lZXRzSGFyZHdhcmVEZWNvZGVSZXF1
aXJlbWVudHMocGFyYW1ldGVycy50eXBlLCBwYXJhbWV0ZXJzLmNvbnRlbnRUeXBlc1JlcXVpcmlu
Z0hhcmR3YXJlU3VwcG9ydCkpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlOjpJc05vdFN1cHBvcnRlZDsKIAotICAgIE5TU3RyaW5nICp0eXBlU3RyaW5nID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDsgY29kZWNzPVwiJUBcIiIsIChOU1N0cmluZyAqKWNv
bnRhaW5lclR5cGUsIChOU1N0cmluZyAqKXBhcmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVu
dFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKV07Ci0gICAgcmV0dXJuIFtQQUw6OmdldEFWVVJMQXNz
ZXRDbGFzcygpIGlzUGxheWFibGVFeHRlbmRlZE1JTUVUeXBlOnR5cGVTdHJpbmddID8gTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlOjpNYXlCZVN1cHBvcnRlZDsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZTo6SXNTdXBwb3J0ZWQ7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCkBAIC0xNjU5LDEwICsxNjUwLDcgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtl
eVN5c3QKICAgICAgICAgaWYgKCFrZXlTeXN0ZW1Jc1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgp
ICYmIGlzVW5zdXBwb3J0ZWRNSU1FVHlwZShtaW1lVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkgJiYgIXN0YXRpY01JTUVU
eXBlTGlzdCgpLmNvbnRhaW5zKG1pbWVUeXBlKSAmJiAhQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNp
bmdsZXRvbigpLmNhbkRlY29kZVR5cGUobWltZVR5cGUpKQorICAgICAgICBpZiAoIW1pbWVUeXBl
LmlzRW1wdHkoKSAmJiBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuY2FuRGVjb2Rl
VHlwZShtaW1lVHlwZSkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc1N1cHBv
cnRlZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBiY2RiMzhhMzUyNDY1MTE3MWZiMzgzZGMx
MTU4NmJmMjM0YTRhZGYwLi4wMTI5N2E1ZDQ0MzYzMGRiYTJmZjkyODNkNDdlOTJmNzc1ZWVkNWI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0yNDAsMTMgKzI0MCwxMyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXMo
SGFzaFNldDxTdHJpbmcsIEFTQwogewogICAgIGF1dG8mIHN0cmVhbURhdGFQYXJzZXJDYWNoZSA9
IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwogICAgIGlmIChz
dHJlYW1EYXRhUGFyc2VyQ2FjaGUuaXNBdmFpbGFibGUoKSkgewotICAgICAgICB0eXBlcyA9IHN0
cmVhbURhdGFQYXJzZXJDYWNoZS50eXBlcygpOworICAgICAgICB0eXBlcyA9IHN0cmVhbURhdGFQ
YXJzZXJDYWNoZS5zdXBwb3J0ZWRUeXBlcygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgYXV0byYgYXNzZXRDYWNoZSA9IEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsK
ICAgICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICB0eXBlcyA9IGFzc2V0
Q2FjaGUudHlwZXMoKTsKKyAgICAgICAgdHlwZXMgPSBhc3NldENhY2hlLnN1cHBvcnRlZFR5cGVz
KCk7CiB9CiAKIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTI1OSwzNSArMjU5LDE5IEBAIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0
c1R5cGUoY29uCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05v
dFN1cHBvcnRlZDsKICNlbmRpZgogCi0gICAgaWYgKHBhcmFtZXRlcnMudHlwZS5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRl
ZDsKLQotICAgIGlmIChBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24o
KS5pc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIGlmICghQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5
cGVDYWNoZTo6c2luZ2xldG9uKCkuc3VwcG9ydHNDb250ZW50VHlwZShwYXJhbWV0ZXJzLnR5cGUp
KQotICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3Vw
cG9ydGVkOwotICAgIH0gZWxzZSBpZiAoQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigp
LmlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgaWYgKCFBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2lu
Z2xldG9uKCkuc3VwcG9ydHNDb250ZW50VHlwZShwYXJhbWV0ZXJzLnR5cGUpKQotICAgICAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwotICAg
IH0gZWxzZQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RT
dXBwb3J0ZWQ7Ci0KLSAgICAvLyBUaGUgc3BlYyBzYXlzOgotICAgIC8vICJJbXBsZW1lbnRvcnMg
YXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJtYXliZSIgdW5sZXNzIHRoZSB0eXBlIGNhbiBiZSBj
b25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBiZWluZyBzdXBwb3J0ZWQgb3Igbm90LiIKLSAgICBh
dXRvIGNvZGVjcyA9IHBhcmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVj
c1BhcmFtZXRlcigpKTsKLSAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOworICAgIGF1dG8gc3Vw
cG9ydGVkID0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CisgICAg
aWYgKEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxh
YmxlKCkpCisgICAgICAgIHN1cHBvcnRlZCA9IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2Fj
aGU6OnNpbmdsZXRvbigpLmNhbkRlY29kZVR5cGUocGFyYW1ldGVycy50eXBlLnJhdygpKTsKKyAg
ICBlbHNlIGlmIChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUo
KSkKKyAgICAgICAgc3VwcG9ydGVkID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigp
LmNhbkRlY29kZVR5cGUocGFyYW1ldGVycy50eXBlLnJhdygpKTsKIAotICAgIFN0cmluZyBvdXRw
dXRDb2RlY3MgPSBjb2RlY3M7Ci0gICAgaWYgKFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNs
YXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXRNSU1FQ29kZWNQYXJhbWV0
ZXJGb3JJbnB1dE1JTUVDb2RlY1BhcmFtZXRlcjopXSkKLSAgICAgICAgb3V0cHV0Q29kZWNzID0g
W1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSBvdXRwdXRNSU1FQ29kZWNQYXJhbWV0
ZXJGb3JJbnB1dE1JTUVDb2RlY1BhcmFtZXRlcjpvdXRwdXRDb2RlY3NdOworICAgIGlmIChzdXBw
b3J0ZWQgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQpCisgICAgICAg
IHJldHVybiBzdXBwb3J0ZWQ7CiAKICAgICBpZiAoIWNvbnRlbnRUeXBlTWVldHNIYXJkd2FyZURl
Y29kZVJlcXVpcmVtZW50cyhwYXJhbWV0ZXJzLnR5cGUsIHBhcmFtZXRlcnMuY29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogCi0gICAgU3RyaW5nIHR5cGUgPSBtYWtlU3Ry
aW5nKHBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBlKCksICI7IGNvZGVjcz1cIiIsIG91dHB1
dENvZGVjcywgIlwiIik7Ci0gICAgaWYgKEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6
OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJldHVybiBBVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5jYW5EZWNvZGVUeXBlKHR5cGUpID8gTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKLSAgICByZXR1cm4gQVZBc3NldE1JTUVUeXBlQ2FjaGU6
OnNpbmdsZXRvbigpLmNhbkRlY29kZVR5cGUodHlwZSkgPyBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9y
dGVkOworICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsK
IH0KIAogI3ByYWdtYSBtYXJrIC0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386501</attachid>
            <date>2019-12-29 17:27:00 -0800</date>
            <delta_ts>2019-12-29 19:42:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205632-20191229172656.patch</filename>
            <type>text/plain</type>
            <size>39645</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZmNmJkOTNjNzY0MzQ5
ZjczN2VmOTc2ODFlYmQyYjVjYmNkYjg5Yy4uODBkMGIwMWZjMjNjMTJiYzJkOTRkMDAwMDg0NWQx
ZjIwNzRlYjUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE5LTEyLTI5ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENyZWF0ZSBtZWRp
YSBtaW1lIHR5cGUgY2FjaGUgYmFzZSBjbGFzcyB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTYzMgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTgyMzM1NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFsIGNoYW5n
ZS4KKyAgICAgICAgCisgICAgICAgIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUgYW5k
IEFWQXNzZXRNSU1FVHlwZUNhY2hlIGhhdmUgYSBsb3Qgb2YgdmVyeSBzaW1pbGFyIGNvZGUsCisg
ICAgICAgIHNvIGNyZWF0ZSBNSU1FVHlwZUNhY2hlIGFzIGEgYmFzZSBjbGFzcy4gQWxzbyBtb3Zl
IG1vc3Qgb2YgdGhlIGxvZ2ljIGZyb20gCisgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlIGFuZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzdXBwb3J0c1R5cGUKKyAgICAgICAgaW4gdGhlIGNhY2hlcy4KKworICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVZpZGVvT3JTVkdN
SU1FVHlwZSk6IENhbGwgc3VwcG9ydHNDb250YWluZXJUeXBlLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TUlNRVR5cGVDYWNoZTo6c3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5
cGVDYWNoZTo6c3VwcG9ydHNDb250YWluZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVU
eXBlQ2FjaGU6OmNhbkRlY29kZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVDYWNo
ZTo6Y2FuRGVjb2RlVHlwZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVDYWNo
ZTo6c2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVDYWNoZTo6
YWRkU3VwcG9ydGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUNhY2hlOjpzdGF0
aWNDb250YWluZXJUeXBlTGlzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5
cGVDYWNoZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlQ2FjaGU6OmlzVW5z
dXBwb3J0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlQ2FjaGU6OmlzQXZhaWxh
YmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlQ2FjaGU6OmNhbkRlY29kZVR5
cGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUNhY2hlOjppbml0aWFsaXpl
Q2FjaGUpOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnM6OmVuY29kZSBjb25z
dCk6IERyaXZlLWJ5IGZpeCAtIGFkZCBtaXNzaW5nIHZhcmlhYmxlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVUeXBlQ2FjaGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlN
RVR5cGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXNzZXRNSU1FVHlwZUNhY2hlOjpp
c0F2YWlsYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBVkFzc2V0TUlNRVR5cGVDYWNo
ZTo6Y2FuRGVjb2RlVHlwZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXNzZXRNSU1F
VHlwZUNhY2hlOjppc1Vuc3VwcG9ydGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpBVkFzc2V0
TUlNRVR5cGVDYWNoZTo6c3RhdGljQ29udGFpbmVyVHlwZUxpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVZBc3NldE1JTUVUeXBlQ2FjaGU6OmluaXRpYWxpemVDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2V0U3VwcG9ydGVkVHlwZXMpOiBNb3ZlZCB0byBi
YXNlIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6QVZBc3NldE1JTUVUeXBlQ2FjaGU6OnR5cGVz
KTogTW92ZWQgdG8gYmFzZSBjbGFzcyBhcyBzdXBwb3J0ZWRUeXBlcy4KKyAgICAgICAgKFdlYkNv
cmU6OkFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzdXBwb3J0c0NvbnRlbnRUeXBlKTogUmVuYW1lZCBz
dXBwb3J0c0NvbnRhaW5lclR5cGUuCisgICAgICAgIChXZWJDb3JlOjpBVkFzc2V0TUlNRVR5cGVD
YWNoZTo6Y2FuRGVjb2RlVHlwZSk6IE1vdmVkIHRvIGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpBVkFzc2V0TUlNRVR5cGVDYWNoZTo6bG9hZE1JTUVUeXBlcyk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OmNhbkRlY29kZVR5cGVJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNh
Y2hlOjppbml0aWFsaXplQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZTo6dHlwZXMpOiBNb3ZlZCB0byBiYXNlIGNsYXNzIGFzIHN1cHBvcnRl
ZFR5cGVzLgorICAgICAgICAoV2ViQ29yZTo6QVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNo
ZTo6c3VwcG9ydHNDb250ZW50VHlwZSk6IFJlbmFtZWQgc3VwcG9ydHNDb250YWluZXJUeXBlLgor
ICAgICAgICAoV2ViQ29yZTo6QVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6Y2FuRGVj
b2RlVHlwZSk6IE1vdmVkIHRvIGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpBVlN0cmVh
bURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpsb2FkTUlNRVR5cGVzKTogRGVsZXRlZC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZG
T2JqQzo6c3VwcG9ydHNDb250YWluZXJUeXBlKTogUmVuYW1lZCBmcm9tIHN1cHBvcnRzQ29udGVu
dFR5cGUuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpjYW5EZWNvZGVU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnN1cHBvcnRzQ29u
dGVudFR5cGUpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBv
cnRlZFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZSk6CisKIDIw
MTktMTItMjUgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJH
TF0gRW5hYmxlIEFOR0xFIGJ5IGRlZmF1bHQgZm9yIENvY29hIHBsYXRmb3JtcyAoZXhjZXB0IHNp
bXVsYXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYzk2ODE4OWM4YThkZTUyYTlmOWE0N2ExMWYyMzk5
ZjcyMDc5YmRhZC4uYTBlMjc5NDVlNGFmMTFiOWQ2MmMxZmE0ODYwZTViMDI4OTY3YmJmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKQEAgLTE4NzYsNiArMTg3Niw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91
dFBvaW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
K3BsYXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9O
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJjZTZjZDI5NmMw
MTBmOGUwOWE3ZDFmYzMwNjhjMWVmMzBmZGMwMjEuLjI2YzkyYjljNDcyZDYyNDBiNWRjYTc4ODIx
Mjk4OTVmZTNiOTA1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNSw2ICsyMDUsNyBAQAogCQkwN0I1QTJEQzE0NjQzMjBB
MDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I1QTJEQTE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJh
Y2tMaXN0LmggKi87IH07CiAJCTA3QjcxMTZEMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2
aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I3
MTE2QTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3QjcxMTZGMUQ4OTlFNjMwMDlGMEZG
QiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDdCNzExNkMxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMDdCOTNGRkMyM0I5NEVDNzAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjkzRkY5MjNCOTJBQUEw
MDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdDMDQ2QzQxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDczQjg3NTgxRTQwRENGRDAwNzFDMEVDIC8qIENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTA3QzA0NkNCMUU0MjY0MTMwMDcyMDFFNyAvKiBBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1NjFFNDBE
Q0U1MDA3MUMwRUMgLyogQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3QzFDMEUyMUJGQjYwMDEwMEJEMjI1
NiAvKiBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzFDMEUwMUJGQjYwMDEwMEJEMjI1NiAvKiBN
ZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLzsgfTsKQEAgLTU1NDUsNiArNTU0Niw4
IEBACiAJCTA3QjcxMTZBMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcHR1cmVEZXZpY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDdCNzExNkIxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhcHR1
cmVEZXZpY2VNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdCNzEx
NkMxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcHR1cmVEZXZpY2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3QjkzRkY5MjNCOTJBQUEwMDM2RjhFQSAvKiBNSU1FVHlwZUNh
Y2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1JTUVUeXBlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDdCOTNGRkIyM0I5MkFBQjAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTUlNRVR5cGVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3QzA0NkM2MUU0MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3QzFDMEUwMUJGQjYwMDEwMEJEMjI1NiAvKiBNZWRpYVRyYWNrU3VwcG9ydGVkQ29u
c3RyYWludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFUcmFja1N1
cHBvcnRlZENvbnN0cmFpbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzFD
MEUxMUJGQjYwMDEwMEJEMjI1NiAvKiBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTEwNSw2ICsyNTEwOCw4IEBACiAJ
CQkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oICovLAog
CQkJCUNENjQxRUIxMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCAqLywK
IAkJCQlDRERDMUU3OTE4QTk1MkYzMDAyN0E5RDQgLyogTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50
LmggKi8sCisJCQkJMDdCOTNGRkIyM0I5MkFBQjAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuY3Bw
ICovLAorCQkJCTA3QjkzRkY5MjNCOTJBQUEwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmggKi8s
CiAJCQkJMzE0QkUzQTQxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFn
ZS5jcHAgKi8sCiAJCQkJMzE0QkUzQTUxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5l
cmF0ZWRJbWFnZS5oICovLAogCQkJCTZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJ
bWFnZS5oICovLApAQCAtMzE0OTcsNiArMzE1MDIsNyBAQAogCQkJCTUxRjY0NUUwMUZGNDU5NEUw
MEI1NERFRCAvKiBNZXNzYWdlUG9ydElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
QTc0OEUzMjAwNUQwRTgwMDc1QkE2OCAvKiBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTNCODk1QUYxOURDN0VEOTAwOUNBQTkzIC8qIE1pY3JvdGFza3MuaCBp
biBIZWFkZXJzICovLAorCQkJCTA3QjkzRkZDMjNCOTRFQzcwMDM2RjhFQSAvKiBNSU1FVHlwZUNh
Y2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc3MkM0RjBDNEVCMzA0MDA4MzI4NUYgLyogTUlN
RVR5cGVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJGMTA4NjYxNjJCNkRBODAwOUFD
ODFFIC8qIE1peGVkQ29udGVudENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMkRFRjFE
MjNBOTE4NjYwMEQ4NDBGNiAvKiBNb2NrQXVkaW9TaGFyZWRVbml0LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggMTAw
ZGQ2MzkxNzM0MzliNmU1NDdmZDIwYjA0YmUzODg4MmFlYmY0YS4uZDgxYzNkNjNmZGEyNWI3YzRi
YzI0ZDU2NjQ0NjFjM2M0ZmE0NmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5jcHAKQEAgLTQzMSw3ICs0MzEsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmIEhBVkUoQVZBU1NFVFJFQURFUikKLSAg
ICBpZiAoSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c3VwcG9ydHNDb250ZW50VHlwZShDb250ZW50VHlw
ZShtaW1lVHlwZSkpKQorICAgIGlmIChJbWFnZURlY29kZXJBVkZPYmpDOjpzdXBwb3J0c0NvbnRh
aW5lclR5cGUobWltZVR5cGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIxZGMyNTI0NWUxYTllMzlhOWEyZGQ1YzBkYWQ0OWI1MTkxZDk0MzEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNh
Y2hlLmNwcApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVD
YWNoZS5oIgorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVD
YWNoZTo6c3VwcG9ydGVkVHlwZXMoKQoreworICAgIGlmICghbV9zdXBwb3J0ZWRUeXBlcykgewor
ICAgICAgICBtX3N1cHBvcnRlZFR5cGVzID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4oKTsKKyAgICAgICAgaW5pdGlhbGl6ZUNhY2hlKCptX3N1cHBvcnRlZFR5cGVz
KTsKKyAgICB9CisKKyAgICByZXR1cm4gKm1fc3VwcG9ydGVkVHlwZXM7Cit9CisKK2Jvb2wgTUlN
RVR5cGVDYWNoZTo6c3VwcG9ydHNDb250YWluZXJUeXBlKGNvbnN0IFN0cmluZyYgY29udGFpbmVy
VHlwZSkKK3sKKyAgICBpZiAoIWlzQXZhaWxhYmxlKCkgfHwgY29udGFpbmVyVHlwZS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzdGF0aWNDb250YWluZXJUeXBl
TGlzdCgpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHJldHVybiBzdXBwb3J0ZWRUeXBlcygpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpOworfQor
CitNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgTUlNRVR5cGVDYWNoZTo6Y2FuRGVjb2Rl
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGF1dG8gY29udGVudFR5cGUgPSBD
b250ZW50VHlwZSB7IG1pbWVUeXBlIH07CisgICAgYXV0byB0eXBlV2l0aENvZGVjcyA9IG1ha2VT
dHJpbmcoY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpLCAiOyBjb2RlY3M9XCIiLCBjb250ZW50
VHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKSwgIlwiIik7CisK
KyAgICBpZiAobV9jYWNoZWRSZXN1bHRzKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX2NhY2hlZFJl
c3VsdHMtPmZpbmQodHlwZVdpdGhDb2RlY3MpOworICAgICAgICBpZiAoaXQgIT0gbV9jYWNoZWRS
ZXN1bHRzLT5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgfQorCisg
ICAgYXV0byByZXN1bHQgPSBjYW5EZWNvZGVUeXBlUHJpdmF0ZShjb250ZW50VHlwZSk7CisgICAg
aWYgKCFtX2NhY2hlZFJlc3VsdHMpCisgICAgICAgIG1fY2FjaGVkUmVzdWx0cyA9IEhhc2hNYXA8
U3RyaW5nLCBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4oKTsKKyAgICBtX2NhY2hlZFJlc3VsdHMtPmFkZCh0eXBlV2l0aENvZGVjcywgcmVz
dWx0KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK01lZGlhUGxheWVyRW51bXM6OlN1cHBv
cnRzVHlwZSBNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlUHJpdmF0ZShjb25zdCBDb250ZW50
VHlwZSYgY29udGVudFR5cGUpCit7CisgICAgaWYgKCFpc0F2YWlsYWJsZSgpIHx8IGNvbnRlbnRU
eXBlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRz
VHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CisKKyAgICBhdXRvIGNvbnRhaW5lclR5cGUgPSBjb250ZW50
VHlwZS5jb250YWluZXJUeXBlKCk7CisgICAgaWYgKGlzVW5zdXBwb3J0ZWRUeXBlKGNvbnRhaW5l
clR5cGUpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJ
c05vdFN1cHBvcnRlZDsKKworICAgIGlmIChjb250ZW50VHlwZS5jb2RlY3MoKS5pc0VtcHR5KCkg
JiYgc3VwcG9ydHNDb250YWluZXJUeXBlKGNvbnRhaW5lclR5cGUpKQorICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKKworICAgIGlm
ICghc3VwcG9ydGVkVHlwZXMoKS5jb250YWlucyhjb250YWluZXJUeXBlKSkKKyAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CisKKyAg
ICBpZiAoY29udGVudFR5cGUuY29kZWNzKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gTWVk
aWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKKworICAgIGlmIChj
YW5EZWNvZGVUeXBlSW50ZXJuYWwoY29udGVudFR5cGUpKQorICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsKKworICAgIHJldHVybiBNZWRp
YVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOworfQorCit2b2lkIE1J
TUVUeXBlQ2FjaGU6OnNldFN1cHBvcnRlZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBuZXdU
eXBlcykKK3sKKyAgICBhdXRvJiBzdG9yYWdlID0gc3VwcG9ydGVkVHlwZXMoKTsKKyAgICBmb3Ig
KGF1dG8mIHR5cGUgOiBuZXdUeXBlcykKKyAgICAgICAgc3RvcmFnZS5hZGQodHlwZSk7Cit9CisK
K3ZvaWQgTUlNRVR5cGVDYWNoZTo6YWRkU3VwcG9ydGVkVHlwZShjb25zdCBTdHJpbmcmIHR5cGUp
Cit7CisgICAgc3VwcG9ydGVkVHlwZXMoKS5hZGQodHlwZSk7Cit9CisKK2NvbnN0IEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZUNhY2hlOjpzdGF0aWND
b250YWluZXJUeXBlTGlzdCgpCit7CisgICAgc3RhdGljIGNvbnN0IGF1dG8gY2FjaGUgPSBtYWtl
TmV2ZXJEZXN0cm95ZWQoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4g
eyB9KTsKKyAgICByZXR1cm4gY2FjaGU7Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyNGQwNTk4MWI1
NmQ1NGY3NDI4MTI3YzY5NDg5OTlkMTVlNjZjZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmgKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lZGlh
UGxheWVyRW51bXMuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBDb250ZW50VHlwZTsKKworY2xhc3MgTUlNRVR5cGVDYWNoZSB7CitwdWJs
aWM6CisgICAgTUlNRVR5cGVDYWNoZSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5NSU1FVHlw
ZUNhY2hlKCkgPSBkZWZhdWx0OworCisgICAgYm9vbCBzdXBwb3J0c0NvbnRhaW5lclR5cGUoY29u
c3QgU3RyaW5nJik7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIGNhbkRlY29k
ZVR5cGUoY29uc3QgU3RyaW5nJik7CisKKyAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkVHlwZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFN1cHBvcnRlZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBhZGRT
dXBwb3J0ZWRUeXBlKGNvbnN0IFN0cmluZyYpOworCisgICAgdmlydHVhbCBib29sIGlzVW5zdXBw
b3J0ZWRUeXBlKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgdmlydHVhbCBib29sIGNhbkRlY29kZVR5cGVJbnRlcm5hbChjb25zdCBDb250ZW50VHlwZSYp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVDYWNoZShIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpIHsgfQorICAgIHZpcnR1YWwg
Y29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN0YXRpY0Nv
bnRhaW5lclR5cGVMaXN0KCk7CisKK3ByaXZhdGU6CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6U3Vw
cG9ydHNUeXBlIGNhbkRlY29kZVR5cGVQcml2YXRlKGNvbnN0IENvbnRlbnRUeXBlJik7CisKKyAg
ICBPcHRpb25hbDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gbV9z
dXBwb3J0ZWRUeXBlczsKKyAgICBPcHRpb25hbDxIYXNoTWFwPFN0cmluZywgTWVkaWFQbGF5ZXJF
bnVtczo6U3VwcG9ydHNUeXBlLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBtX2NhY2hlZFJl
c3VsdHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBmNmQ5ZDRmYmFkODgxY2U1YTZm
NDZkZTAzYmQ1ZDVhOGE4OWMxYTdjLi5mNGRiNGM3ZDA2ODBiZDI1Mjg2NWRiMmU1MDM4MDE0NGU1
MWM5NDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKQEAgLTkxLDYgKzkxLDcgQEAgc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRl
cnMgewogICAgICAgICBlbmNvZGVyIDw8IHR5cGU7CiAgICAgICAgIGVuY29kZXIgPDwgdXJsOwog
ICAgICAgICBlbmNvZGVyIDw8IGlzTWVkaWFTb3VyY2U7CisgICAgICAgIGVuY29kZXIgPDwgaXNN
ZWRpYVN0cmVhbTsKICAgICAgICAgZW5jb2RlciA8PCBjb250ZW50VHlwZXNSZXF1aXJpbmdIYXJk
d2FyZVN1cHBvcnQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1J
TUVUeXBlQ2FjaGUuaAppbmRleCBkNmQ5MmFjYjA1YWVmYzQxN2U1YjdlNjhhODYyNDI5ODU3M2Fk
NTlhLi5kNjFlNTU3NTE4YWU4MzRjM2IzNzk3ZjZjNjg3YzAxZmZmZTg2MDQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFz
c2V0TUlNRVR5cGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCisjaW5jbHVkZSAiTUlNRVR5cGVDYWNoZS5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC0zNSwyNyArMzYsMjQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKIAotY2xhc3MgQVZBc3NldE1JTUVUeXBl
Q2FjaGUgeworY2xhc3MgQVZBc3NldE1JTUVUeXBlQ2FjaGUgZmluYWwgOiBwdWJsaWMgTUlNRVR5
cGVDYWNoZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFWQXNzZXRNSU1F
VHlwZUNhY2hlJiBzaW5nbGV0b24oKTsKIAotICAgIGJvb2wgc3VwcG9ydHNDb250ZW50VHlwZShj
b25zdCBDb250ZW50VHlwZSYpOwotICAgIGJvb2wgY2FuRGVjb2RlVHlwZShjb25zdCBTdHJpbmcm
KTsKLQotICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiB0eXBlcygpOwogICAgIGJvb2wgaXNFbXB0eSgpOwogICAgIGJvb2wgaXNBdmFpbGFibGUoKSBj
b25zdDsKIAogICAgIHVzaW5nIENhY2hlTUlNRVR5cGVzQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9u
PHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKT47CiAgICAgdm9pZCBzZXRDYWNoZU1JTUVUeXBl
c0NhbGxiYWNrKENhY2hlTUlNRVR5cGVzQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX2NhY2hlVHlw
ZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U3VwcG9ydGVkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKLQogcHJpdmF0ZToK
ICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8QVZBc3NldE1JTUVUeXBlQ2FjaGU+OwogICAgIEFW
QXNzZXRNSU1FVHlwZUNhY2hlKCkgPSBkZWZhdWx0OwogCi0gICAgdm9pZCBsb2FkTUlNRVR5cGVz
KCk7CisgICAgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IHN0YXRpY0NvbnRhaW5lclR5cGVMaXN0KCkgZmluYWw7CisgICAgYm9vbCBpc1Vuc3VwcG9ydGVk
VHlwZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGNhbkRlY29kZVR5cGVJbnRlcm5h
bChjb25zdCBDb250ZW50VHlwZSYpIGZpbmFsOworICAgIHZvaWQgaW5pdGlhbGl6ZUNhY2hlKEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JikgZmluYWw7CiAKICAgICBP
cHRpb25hbDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gbV9jYWNo
ZTsKICAgICBDYWNoZU1JTUVUeXBlc0NhbGxiYWNrIG1fY2FjaGVUeXBlQ2FsbGJhY2s7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCmluZGV4IGUyNmI2
NDIzYzVlYjI1NzNkY2U5ZjY0OTc2NGEwODFmMjczNGI4NTguLjg0YTM5N2VjN2Q5NDllMTNiN2Nh
YmFhN2RiMTU3MGIyMDA1M2NlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNz
ZXRNSU1FVHlwZUNhY2hlLm1tCkBAIC00NSw3OCArNDUsMTA4IEBAIEFWQXNzZXRNSU1FVHlwZUNh
Y2hlJiBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkKICAgICByZXR1cm4gY2FjaGUu
Z2V0KCk7CiB9CiAKLXZvaWQgQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNldFN1cHBvcnRlZFR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKK2Jvb2wgQVZBc3NldE1JTUVUeXBlQ2FjaGU6
OmlzQXZhaWxhYmxlKCkgY29uc3QKIHsKLSAgICBpZiAobV9jYWNoZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9jYWNoZSA9IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+KCk7Ci0gICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCi0gICAgICAgIG1fY2FjaGUtPmFk
ZCh0eXBlKTsKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisjaWYgUExB
VEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHVzaW5nIEFW
Rm91bmRhdGlvbkxpYnJhcnlJc0F2YWlsYWJsZSgpIGluc3RlYWQsIGJ1dCBkb2luZyBzbyBjYXVz
ZXMgc29mdC1saW5raW5nCisgICAgLy8gdG8gc3Vic2VxdWVudGx5IGZhaWwgb24gY2VydGFpbiBz
eW1ib2xzLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzQyMjI0NzgwPiBmb3IgbW9yZSBkZXRhaWxzLgor
ICAgIHJldHVybiBQQUw6OmlzQVZGb3VuZGF0aW9uRnJhbWV3b3JrQXZhaWxhYmxlKCk7CisjZWxz
ZQorICAgIHJldHVybiBBVkZvdW5kYXRpb25MaWJyYXJ5SXNBdmFpbGFibGUoKTsKKyNlbmRpZgor
I2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAotY29uc3QgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjp0eXBl
cygpCitib29sIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlSW50ZXJuYWwoY29u
c3QgQ29udGVudFR5cGUmIHR5cGUpCiB7Ci0gICAgaWYgKCFtX2NhY2hlKQotICAgICAgICBsb2Fk
TUlNRVR5cGVzKCk7CisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAg
IEFTU0VSVChpc0F2YWlsYWJsZSgpKTsKKyAgICByZXR1cm4gW1BBTDo6Z2V0QVZVUkxBc3NldENs
YXNzKCkgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6dHlwZS5yYXcoKV07CisjZW5kaWYKIAot
ICAgIHJldHVybiAqbV9jYWNoZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQVZBc3Nl
dE1JTUVUeXBlQ2FjaGU6OnN1cHBvcnRzQ29udGVudFR5cGUoY29uc3QgQ29udGVudFR5cGUmIGNv
bnRlbnRUeXBlKQorYm9vbCBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6aXNVbnN1cHBvcnRlZFR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIGlmIChjb250ZW50VHlwZS5pc0VtcHR5KCkpCisg
ICAgaWYgKHR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gdHlwZXMoKS5jb250YWlucyhjb250ZW50VHlwZS5jb250YWluZXJUeXBlKCkpOwotfQorICAg
IFN0cmluZyBsb3dlckNhc2VUeXBlID0gdHlwZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwog
Ci1ib29sIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCi17Ci0gICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIC8vIEFWRm91bmRhdGlvbiB3aWxsIHJldHVybiBub24tdmlkZW8gTUlNRSB0
eXBlcyB3aGljaCBpdCBjbGFpbXMgdG8gc3VwcG9ydCwgYnV0IHdoaWNoIHdlCisgICAgLy8gZG8g
bm90IHN1cHBvcnQgaW4gdGhlIDx2aWRlbz4gZWxlbWVudC4gUmVqZWN0IGFsbCBub24gdmlkZW8v
LCBhdWRpby8sIGFuZCBhcHBsaWNhdGlvbi8gdHlwZXMuCisgICAgaWYgKCFsb3dlckNhc2VUeXBl
LnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFsb3dlckNhc2VUeXBlLnN0YXJ0c1dpdGgoImF1ZGlv
LyIpICYmICFsb3dlckNhc2VUeXBlLnN0YXJ0c1dpdGgoImFwcGxpY2F0aW9uLyIpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghaXNBdmFpbGFibGUoKSB8fCAhdHlwZXMoKS5jb250
YWlucyhDb250ZW50VHlwZSB7IG1pbWVUeXBlIH0uY29udGFpbmVyVHlwZSgpKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIC8vIFJlamVjdCB0eXBlcyB3ZSBrbm93IEFWRm91bmRhdGlvbiBk
b2VzIG5vdCBzdXBwb3J0IHRoYXQgc2l0ZXMgY29tbW9ubHkgYXNrIGFib3V0LgorICAgIGlmIChs
b3dlckNhc2VUeXBlID09ICJ2aWRlby93ZWJtIiB8fCBsb3dlckNhc2VUeXBlID09ICJhdWRpby93
ZWJtIiB8fCBsb3dlckNhc2VUeXBlID09ICJ2aWRlby94LXdlYm0iKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKLSAgICByZXR1
cm4gW1BBTDo6Z2V0QVZVUkxBc3NldENsYXNzKCkgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6
bWltZVR5cGVdOwotI2VuZGlmCisgICAgaWYgKGxvd2VyQ2FzZVR5cGUgPT0gInZpZGVvL3gtZmx2
IikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobG93ZXJDYXNlVHlwZSA9PSAiYXVk
aW8vb2dnIiB8fCBsb3dlckNhc2VUeXBlID09ICJ2aWRlby9vZ2ciIHx8IGxvd2VyQ2FzZVR5cGUg
PT0gImFwcGxpY2F0aW9uL29nZyIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGxv
d2VyQ2FzZVR5cGUgPT0gInZpZGVvL2gyNjQiKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6aXNBdmFpbGFi
bGUoKSBjb25zdAorY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzdGF0aWNDb250YWluZXJUeXBlTGlzdCgpCiB7Ci0j
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQotI2lmIFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB1c2luZyBBVkZvdW5kYXRpb25M
aWJyYXJ5SXNBdmFpbGFibGUoKSBpbnN0ZWFkLCBidXQgZG9pbmcgc28gY2F1c2VzIHNvZnQtbGlu
a2luZwotICAgIC8vIHRvIHN1YnNlcXVlbnRseSBmYWlsIG9uIGNlcnRhaW4gc3ltYm9scy4gU2Vl
IDxyZGFyOi8vcHJvYmxlbS80MjIyNDc4MD4gZm9yIG1vcmUgZGV0YWlscy4KLSAgICByZXR1cm4g
UEFMOjppc0FWRm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJsZSgpOwotI2Vsc2UKLSAgICByZXR1
cm4gQVZGb3VuZGF0aW9uTGlicmFyeUlzQXZhaWxhYmxlKCk7Ci0jZW5kaWYKLSNlbHNlCi0gICAg
cmV0dXJuIGZhbHNlOwotI2VuZGlmCisgICAgc3RhdGljIGNvbnN0IGF1dG8gY2FjaGUgPSBtYWtl
TmV2ZXJEZXN0cm95ZWQoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4g
eworICAgICAgICAiYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmwiLAorICAgICAgICAiYXBw
bGljYXRpb24veC1tcGVndXJsIiwKKyAgICAgICAgImF1ZGlvLzNncHAiLAorICAgICAgICAiYXVk
aW8vYWFjIiwKKyAgICAgICAgImF1ZGlvL2FhY3AiLAorICAgICAgICAiYXVkaW8vYWlmZiIsCisg
ICAgICAgICJhdWRpby9iYXNpYyIsCisgICAgICAgICJhdWRpby9tcDMiLAorICAgICAgICAiYXVk
aW8vbXA0IiwKKyAgICAgICAgImF1ZGlvL21wZWciLAorICAgICAgICAiYXVkaW8vbXBlZzMiLAor
ICAgICAgICAiYXVkaW8vbXBlZ3VybCIsCisgICAgICAgICJhdWRpby9tcGciLAorICAgICAgICAi
YXVkaW8vdm5kLndhdmUiLAorICAgICAgICAiYXVkaW8vd2F2IiwKKyAgICAgICAgImF1ZGlvL3dh
dmUiLAorICAgICAgICAiYXVkaW8veC1hYWMiLAorICAgICAgICAiYXVkaW8veC1haWZmIiwKKyAg
ICAgICAgImF1ZGlvL3gtbTRhIiwKKyAgICAgICAgImF1ZGlvL3gtbXBlZ3VybCIsCisgICAgICAg
ICJhdWRpby94LXdhdiIsCisgICAgICAgICJ2aWRlby8zZ3BwIiwKKyAgICAgICAgInZpZGVvLzNn
cHAyIiwKKyAgICAgICAgInZpZGVvL21wNCIsCisgICAgICAgICJ2aWRlby9tcGVnIiwKKyAgICAg
ICAgInZpZGVvL21wZWcyIiwKKyAgICAgICAgInZpZGVvL21wZyIsCisgICAgICAgICJ2aWRlby9x
dWlja3RpbWUiLAorICAgICAgICAidmlkZW8veC1tNHYiLAorICAgICAgICAidmlkZW8veC1tcGVn
IiwKKyAgICAgICAgInZpZGVvL3gtbXBnIiwKKyAgICB9KTsKKyAgICByZXR1cm4gY2FjaGU7CiB9
CiAKLXZvaWQgQVZBc3NldE1JTUVUeXBlQ2FjaGU6OmxvYWRNSU1FVHlwZXMoKQordm9pZCBBVkFz
c2V0TUlNRVR5cGVDYWNoZTo6aW5pdGlhbGl6ZUNhY2hlKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBjYWNoZSkKIHsKLSAgICBtX2NhY2hlID0gSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oKTsKLQogI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0g
ICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFt0aGlzXSB7Ci0gICAgICAgIGlmICghUEFMOjpp
c0FWRm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuOwor
ICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZvciAo
TlNTdHJpbmcqIHR5cGUgaW4gW1BBTDo6Z2V0QVZVUkxBc3NldENsYXNzKCkgYXVkaW92aXN1YWxN
SU1FVHlwZXNdKQotICAgICAgICAgICAgbV9jYWNoZS0+YWRkKHR5cGUpOworICAgIGZvciAoTlNT
dHJpbmcqIHR5cGUgaW4gW1BBTDo6Z2V0QVZVUkxBc3NldENsYXNzKCkgYXVkaW92aXN1YWxNSU1F
VHlwZXNdKQorICAgICAgICBjYWNoZS5hZGQodHlwZSk7CiAKLSAgICAgICAgaWYgKG1fY2FjaGVU
eXBlQ2FsbGJhY2spCi0gICAgICAgICAgICBtX2NhY2hlVHlwZUNhbGxiYWNrKGNvcHlUb1ZlY3Rv
cigqbV9jYWNoZSkpOwotICAgIH0pOworICAgIGlmIChtX2NhY2hlVHlwZUNhbGxiYWNrKQorICAg
ICAgICBtX2NhY2hlVHlwZUNhbGxiYWNrKGNvcHlUb1ZlY3RvcihjYWNoZSkpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNl
ck1JTUVUeXBlQ2FjaGUuaAppbmRleCAwNDQ0MTk5ZWY0N2JkZTQzNzc5YTIxMjk0MjZjNGYwMDVj
OGU0YWUzLi5iOWNhNDczYTdhNjQyMjg4ZWY4ODNkMGQ1ZjgyODVlMGY0NWIzMTZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9B
VlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5
cGVDYWNoZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAm
JiBVU0UoQVZGT1VOREFUSU9OKQogCisjaW5jbHVkZSAiTUlNRVR5cGVDYWNoZS5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC0zNSwyNCArMzYsMTggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKIAotY2xhc3MgQVZTdHJlYW1EYXRhUGFyc2VyTUlN
RVR5cGVDYWNoZSB7CitjbGFzcyBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlIGZpbmFs
IDogcHVibGljIE1JTUVUeXBlQ2FjaGUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlJiBzaW5nbGV0b24oKTsKIAotICAg
IGJvb2wgc3VwcG9ydHNDb250ZW50VHlwZShjb25zdCBDb250ZW50VHlwZSYpOwotICAgIGJvb2wg
Y2FuRGVjb2RlVHlwZShjb25zdCBTdHJpbmcmKTsKLQotICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcygpOwotICAgIGJvb2wgaXNFbXB0eSgp
OwotICAgIGJvb2wgaXNBdmFpbGFibGUoKSBjb25zdDsKKyAgICBib29sIGlzQXZhaWxhYmxlKCkg
Y29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEFWU3Ry
ZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU+OwogICAgIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVU
eXBlQ2FjaGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIGxvYWRNSU1FVHlwZXMoKTsKLQotICAg
IE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBtX2Nh
Y2hlOworICAgIGJvb2wgY2FuRGVjb2RlVHlwZUludGVybmFsKGNvbnN0IENvbnRlbnRUeXBlJikg
ZmluYWw7CisgICAgdm9pZCBpbml0aWFsaXplQ2FjaGUoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mKSBmaW5hbDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9BVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLm1tCmluZGV4
IDlhMmU4NzllMjBmZTkzNDIxYzM0N2FlMzIyZjcyNzlkZTQ1YzVmMmYuLjdlMGFjMGE2MTY5MDhh
MDUyNjEyYmQ5M2YyMDA4NTlmNzk5NWRmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVU
eXBlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbQpAQCAtNTQsNDUg
KzU0LDMwIEBAIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUmIEFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpCiAgICAgcmV0dXJuIGNhY2hlLmdldCgpOwog
fQogCi1jb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgQVZT
dHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6dHlwZXMoKQorYm9vbCBBVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlSW50ZXJuYWwoY29uc3QgQ29udGVudFR5
cGUmIHR5cGUpCiB7Ci0gICAgaWYgKCFtX2NhY2hlKQotICAgICAgICBsb2FkTUlNRVR5cGVzKCk7
Ci0KLSAgICByZXR1cm4gKm1fY2FjaGU7Ci19Ci0KLWJvb2wgQVZTdHJlYW1EYXRhUGFyc2VyTUlN
RVR5cGVDYWNoZTo6c3VwcG9ydHNDb250ZW50VHlwZShjb25zdCBDb250ZW50VHlwZSYgY29udGVu
dFR5cGUpCi17Ci0gICAgaWYgKGNvbnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIHR5cGVzKCkuY29udGFpbnMoY29udGVudFR5cGUuY29udGFp
bmVyVHlwZSgpKTsKLX0KLQotYm9vbCBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpj
YW5EZWNvZGVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgaWYgKG1pbWVUeXBl
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ29udGVudFR5cGUgdHlw
ZSB7IG1pbWVUeXBlIH07CisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQor
ICAgIEFTU0VSVChpc0F2YWlsYWJsZSgpKTsKIAotICAgIGlmICghaXNBdmFpbGFibGUoKSB8fCAh
dHlwZXMoKS5jb250YWlucyh0eXBlLmNvbnRhaW5lclR5cGUoKSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBTdHJpbmcgb3V0cHV0Q29kZWNzID0gdHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5
cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKKyAgICBBU1NFUlQoIW91dHB1dENvZGVjcy5pc0VtcHR5
KCkpOworICAgIGlmIChbUEFMOjpnZXRBVlN0cmVhbURhdGFQYXJzZXJDbGFzcygpIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1F
Q29kZWNQYXJhbWV0ZXI6KV0pCisgICAgICAgIG91dHB1dENvZGVjcyA9IFtQQUw6OmdldEFWU3Ry
ZWFtRGF0YVBhcnNlckNsYXNzKCkgb3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1F
Q29kZWNQYXJhbWV0ZXI6b3V0cHV0Q29kZWNzXTsKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNF
KEFWRk9VTkRBVElPTikKKyAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyh0eXBl
LmNvbnRhaW5lclR5cGUoKSwgIjsgY29kZWNzPVwiIiwgb3V0cHV0Q29kZWNzLCAiXCIiKTsKICAg
ICBpZiAoW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKGNhblBhcnNlRXh0ZW5kZWRNSU1FVHlwZTopXSkKLSAgICAgICAgcmV0dXJu
IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgY2FuUGFyc2VFeHRlbmRlZE1JTUVU
eXBlOm1pbWVUeXBlXTsKKyAgICAgICAgcmV0dXJuIFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNl
ckNsYXNzKCkgY2FuUGFyc2VFeHRlbmRlZE1JTUVUeXBlOmV4dGVuZGVkVHlwZV07CiAKICAgICAv
LyBGSVhNRShyZGFyOi8vNTA1MDI3NzEpIEFWU3RyZWFtRGF0YVBhcnNlciBkb2VzIG5vdCBoYXZl
IGFuIC1jYW5QYXJzZUV4dGVuZGVkTUlNRVR5cGU6IG1ldGhvZCBvbiB0aGlzIHN5c3RlbSwKICAg
ICAvLyAgc28ganVzdCByZXBsYWNlIHRoZSBjb250YWluZXIgdHlwZSB3aXRoIGEgdmFsaWQgb25l
IGZyb20gQVZBc3NldE1JTUVUeXBlQ2FjaGUgYW5kIGFzayB0aGF0IGNhY2hlIGlmIGl0CiAgICAg
Ly8gIGNhbiBkZWNvZGUgdGhpcyB0eXBlLgogICAgIGF1dG8mIGFzc2V0Q2FjaGUgPSBBVkFzc2V0
TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKCFhc3NldENhY2hlLmlzQXZhaWxh
YmxlKCkgfHwgYXNzZXRDYWNoZS50eXBlcygpLmlzRW1wdHkoKSkKKyAgICBpZiAoIWFzc2V0Q2Fj
aGUuaXNBdmFpbGFibGUoKSB8fCBhc3NldENhY2hlLnN1cHBvcnRlZFR5cGVzKCkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyaW5nIHJlcGxhY2VtZW50VHlwZSB7IG1p
bWVUeXBlIH07Ci0gICAgcmVwbGFjZW1lbnRUeXBlLnJlcGxhY2UodHlwZS5jb250YWluZXJUeXBl
KCksICphc3NldENhY2hlLnR5cGVzKCkuYmVnaW4oKSk7Ci0gICAgcmV0dXJuIGFzc2V0Q2FjaGUu
Y2FuRGVjb2RlVHlwZShyZXBsYWNlbWVudFR5cGUpOworCisgICAgU3RyaW5nIHJlcGxhY2VtZW50
VHlwZSB7IHR5cGUucmF3KCkgfTsKKyAgICByZXBsYWNlbWVudFR5cGUucmVwbGFjZSh0eXBlLmNv
bnRhaW5lclR5cGUoKSwgKmFzc2V0Q2FjaGUuc3VwcG9ydGVkVHlwZXMoKS5iZWdpbigpKTsKKyAg
ICByZXR1cm4gYXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKHJlcGxhY2VtZW50VHlwZSkgPT0gTWVk
aWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsKICNlbmRpZgogCiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTE3LDE5ICsxMDIsMTQgQEAgYm9vbCBBVlN0cmVhbURhdGFQYXJz
ZXJNSU1FVHlwZUNhY2hlOjppc0F2YWlsYWJsZSgpIGNvbnN0CiAjZW5kaWYKIH0KIAotdm9pZCBB
VlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpsb2FkTUlNRVR5cGVzKCkKK3ZvaWQgQVZT
dHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6aW5pdGlhbGl6ZUNhY2hlKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBjYWNoZSkKIHsKLSAgICBtX2NhY2hlID0g
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oKTsKLQogI2lmIEVOQUJM
RShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFt0aGlzXSB7Ci0gICAgICAg
IGlmICghaXNBdmFpbGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3Ig
KE5TU3RyaW5nKiB0eXBlIGluIFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgYXVk
aW92aXN1YWxNSU1FVHlwZXNdKQotICAgICAgICAgICAgbV9jYWNoZS0+YWRkKHR5cGUpOwotICAg
IH0pOworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9y
IChOU1N0cmluZyogdHlwZSBpbiBbUEFMOjpnZXRBVlN0cmVhbURhdGFQYXJzZXJDbGFzcygpIGF1
ZGlvdmlzdWFsTUlNRVR5cGVzXSkKKyAgICAgICAgY2FjaGUuYWRkKHR5cGUpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCBi
NWQxYjlhZGM2ZDFmZTQxYWUzZDcxNDdiMGEzYzcxOGYzYTIxM2QyLi44YTVmNTg3MGEzNTM1NzNk
ODY5NzY2OTM5MTU0ZDk3YjcyMmNmYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5JbWFnZURlY29kZXJBVkZPYmpDKCk7CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlh
VHlwZShNZWRpYVR5cGUpOwotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQ29udGVudFR5cGUoY29u
c3QgQ29udGVudFR5cGUmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0NvbnRhaW5lclR5cGUo
Y29uc3QgU3RyaW5nJik7CiAKICAgICBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9w
ZXJ0aWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBib29sIGNh
bkRlY29kZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAzMjZkYWRiYjE3ZDA4OTExNzBlYjc1
NDUzYjYzNDhkN2ZlODM5NzgyLi5kZWExZDE1ZjQ5MDRhMDMwYTIwZTlhOTM0MTc3NzcwZTQ4Nzg4
N2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0K
QEAgLTM0OSwxNCArMzQ5LDE0IEBAIGJvb2wgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c3VwcG9ydHNN
ZWRpYVR5cGUoTWVkaWFUeXBlIHR5cGUpCiAgICAgcmV0dXJuIHR5cGUgPT0gTWVkaWFUeXBlOjpW
aWRlbyAmJiBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKTsK
IH0KIAotYm9vbCBJbWFnZURlY29kZXJBVkZPYmpDOjpzdXBwb3J0c0NvbnRlbnRUeXBlKGNvbnN0
IENvbnRlbnRUeXBlJiB0eXBlKQorYm9vbCBJbWFnZURlY29kZXJBVkZPYmpDOjpzdXBwb3J0c0Nv
bnRhaW5lclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIHJldHVybiBBVkFzc2V0TUlN
RVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuc3VwcG9ydHNDb250ZW50VHlwZSh0eXBlKTsKKyAgICBy
ZXR1cm4gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLnN1cHBvcnRzQ29udGFpbmVy
VHlwZSh0eXBlKTsKIH0KIAogYm9vbCBJbWFnZURlY29kZXJBVkZPYmpDOjpjYW5EZWNvZGVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgcmV0dXJuIEFWQXNzZXRNSU1FVHlwZUNh
Y2hlOjpzaW5nbGV0b24oKS5jYW5EZWNvZGVUeXBlKG1pbWVUeXBlKTsKKyAgICByZXR1cm4gQVZB
c3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNhbkRlY29kZVR5cGUobWltZVR5cGUpID09
IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CiB9CiAKIEFWQXNz
ZXRUcmFjayAqSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Zmlyc3RFbmFibGVkVHJhY2soKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KaW5kZXggZmEzZWE1Y2I1OWE2MzQ4ZDYxZDFlMjkyYWU5ZWE2MTJmZjEw
YzIwOS4uNTU5N2ZiYTZlZmE5OWE4ZWIwYWIxM2QyMmI3YWRmYzk2MTg1YzcyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCkBAIC0xNjA2LDcgKzE2MDYsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlSW1hZ2VGb3JUaW1l
SW5SZQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBv
cnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBw
b3J0ZWRUeXBlcykKIHsKLSAgICBzdXBwb3J0ZWRUeXBlcyA9IEFWQXNzZXRNSU1FVHlwZUNhY2hl
OjpzaW5nbGV0b24oKS50eXBlcygpOworICAgIHN1cHBvcnRlZFR5cGVzID0gQVZBc3NldE1JTUVU
eXBlQ2FjaGU6OnNpbmdsZXRvbigpLnN1cHBvcnRlZFR5cGVzKCk7CiB9CiAKICNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAgLTE2MjksMjMgKzE2MjksMTQgQEAgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBw
b3J0c1R5cGUoY29uc3QKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6
OklzTm90U3VwcG9ydGVkOwogI2VuZGlmCiAKLSAgICBhdXRvIGNvbnRhaW5lclR5cGUgPSBwYXJh
bWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgpOwotICAgIGlmIChpc1Vuc3VwcG9ydGVkTUlNRVR5
cGUoY29udGFpbmVyVHlwZSkpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlOjpJc05vdFN1cHBvcnRlZDsKLQotICAgIGlmICghc3RhdGljTUlNRVR5cGVMaXN0KCkuY29u
dGFpbnMoY29udGFpbmVyVHlwZSkgJiYgIUFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24o
KS5jYW5EZWNvZGVUeXBlKGNvbnRhaW5lclR5cGUpKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7Ci0KLSAgICAvLyBUaGUgc3BlYyBzYXlz
OgotICAgIC8vICJJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJtYXliZSIg
dW5sZXNzIHRoZSB0eXBlIGNhbiBiZSBjb25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBiZWluZyBz
dXBwb3J0ZWQgb3Igbm90LiIKLSAgICBpZiAocGFyYW1ldGVycy50eXBlLmNvZGVjcygpLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3Vw
cG9ydGVkOworICAgIGF1dG8gc3VwcG9ydGVkID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmds
ZXRvbigpLmNhbkRlY29kZVR5cGUocGFyYW1ldGVycy50eXBlLnJhdygpKTsKKyAgICBpZiAoc3Vw
cG9ydGVkICE9IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkKQorICAgICAg
ICByZXR1cm4gc3VwcG9ydGVkOwogCiAgICAgaWYgKCFjb250ZW50VHlwZU1lZXRzSGFyZHdhcmVE
ZWNvZGVSZXF1aXJlbWVudHMocGFyYW1ldGVycy50eXBlLCBwYXJhbWV0ZXJzLmNvbnRlbnRUeXBl
c1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCkpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAotICAgIE5TU3RyaW5nICp0eXBlU3RyaW5n
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDsgY29kZWNzPVwiJUBcIiIsIChOU1N0
cmluZyAqKWNvbnRhaW5lclR5cGUsIChOU1N0cmluZyAqKXBhcmFtZXRlcnMudHlwZS5wYXJhbWV0
ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKV07Ci0gICAgcmV0dXJuIFtQQUw6Omdl
dEFWVVJMQXNzZXRDbGFzcygpIGlzUGxheWFibGVFeHRlbmRlZE1JTUVUeXBlOnR5cGVTdHJpbmdd
ID8gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC0xNjU5LDEwICsxNjUwLDcgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBT
dHJpbmcmIGtleVN5c3QKICAgICAgICAgaWYgKCFrZXlTeXN0ZW1Jc1N1cHBvcnRlZChrZXlTeXN0
ZW0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghbWltZVR5cGUu
aXNFbXB0eSgpICYmIGlzVW5zdXBwb3J0ZWRNSU1FVHlwZShtaW1lVHlwZSkpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkgJiYgIXN0
YXRpY01JTUVUeXBlTGlzdCgpLmNvbnRhaW5zKG1pbWVUeXBlKSAmJiAhQVZBc3NldE1JTUVUeXBl
Q2FjaGU6OnNpbmdsZXRvbigpLmNhbkRlY29kZVR5cGUobWltZVR5cGUpKQorICAgICAgICBpZiAo
IW1pbWVUeXBlLmlzRW1wdHkoKSAmJiBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCku
Y2FuRGVjb2RlVHlwZShtaW1lVHlwZSkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBl
OjpJc1N1cHBvcnRlZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBiY2RiMzhhMzUyNDY1MTE3
MWZiMzgzZGMxMTU4NmJmMjM0YTRhZGYwLi4wMTI5N2E1ZDQ0MzYzMGRiYTJmZjkyODNkNDdlOTJm
Nzc1ZWVkNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0yNDAsMTMgKzI0MCwx
MyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Z2V0U3VwcG9y
dGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQwogewogICAgIGF1dG8mIHN0cmVhbURhdGFQYXJz
ZXJDYWNoZSA9IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwog
ICAgIGlmIChzdHJlYW1EYXRhUGFyc2VyQ2FjaGUuaXNBdmFpbGFibGUoKSkgewotICAgICAgICB0
eXBlcyA9IHN0cmVhbURhdGFQYXJzZXJDYWNoZS50eXBlcygpOworICAgICAgICB0eXBlcyA9IHN0
cmVhbURhdGFQYXJzZXJDYWNoZS5zdXBwb3J0ZWRUeXBlcygpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgYXV0byYgYXNzZXRDYWNoZSA9IEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5n
bGV0b24oKTsKICAgICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICB0eXBl
cyA9IGFzc2V0Q2FjaGUudHlwZXMoKTsKKyAgICAgICAgdHlwZXMgPSBhc3NldENhY2hlLnN1cHBv
cnRlZFR5cGVzKCk7CiB9CiAKIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVT
dXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTI1OSwzNSArMjU5LDE5IEBAIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpzdXBwb3J0c1R5cGUoY29uCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlOjpJc05vdFN1cHBvcnRlZDsKICNlbmRpZgogCi0gICAgaWYgKHBhcmFtZXRlcnMudHlwZS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05v
dFN1cHBvcnRlZDsKLQotICAgIGlmIChBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpz
aW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIGlmICghQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuc3VwcG9ydHNDb250ZW50VHlwZShwYXJhbWV0
ZXJzLnR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6
OklzTm90U3VwcG9ydGVkOwotICAgIH0gZWxzZSBpZiAoQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNp
bmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgaWYgKCFBVkFzc2V0TUlNRVR5cGVD
YWNoZTo6c2luZ2xldG9uKCkuc3VwcG9ydHNDb250ZW50VHlwZShwYXJhbWV0ZXJzLnR5cGUpKQot
ICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9y
dGVkOwotICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZTo6SXNOb3RTdXBwb3J0ZWQ7Ci0KLSAgICAvLyBUaGUgc3BlYyBzYXlzOgotICAgIC8vICJJbXBs
ZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJtYXliZSIgdW5sZXNzIHRoZSB0eXBl
IGNhbiBiZSBjb25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBiZWluZyBzdXBwb3J0ZWQgb3Igbm90
LiIKLSAgICBhdXRvIGNvZGVjcyA9IHBhcmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5
cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKLSAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOworICAg
IGF1dG8gc3VwcG9ydGVkID0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0
ZWQ7CisgICAgaWYgKEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigp
LmlzQXZhaWxhYmxlKCkpCisgICAgICAgIHN1cHBvcnRlZCA9IEFWU3RyZWFtRGF0YVBhcnNlck1J
TUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNhbkRlY29kZVR5cGUocGFyYW1ldGVycy50eXBlLnJh
dygpKTsKKyAgICBlbHNlIGlmIChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNB
dmFpbGFibGUoKSkKKyAgICAgICAgc3VwcG9ydGVkID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNp
bmdsZXRvbigpLmNhbkRlY29kZVR5cGUocGFyYW1ldGVycy50eXBlLnJhdygpKTsKIAotICAgIFN0
cmluZyBvdXRwdXRDb2RlY3MgPSBjb2RlY3M7Ci0gICAgaWYgKFtQQUw6OmdldEFWU3RyZWFtRGF0
YVBhcnNlckNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXRNSU1FQ29k
ZWNQYXJhbWV0ZXJGb3JJbnB1dE1JTUVDb2RlY1BhcmFtZXRlcjopXSkKLSAgICAgICAgb3V0cHV0
Q29kZWNzID0gW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSBvdXRwdXRNSU1FQ29k
ZWNQYXJhbWV0ZXJGb3JJbnB1dE1JTUVDb2RlY1BhcmFtZXRlcjpvdXRwdXRDb2RlY3NdOworICAg
IGlmIChzdXBwb3J0ZWQgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQp
CisgICAgICAgIHJldHVybiBzdXBwb3J0ZWQ7CiAKICAgICBpZiAoIWNvbnRlbnRUeXBlTWVldHNI
YXJkd2FyZURlY29kZVJlcXVpcmVtZW50cyhwYXJhbWV0ZXJzLnR5cGUsIHBhcmFtZXRlcnMuY29u
dGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KSkKICAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogCi0gICAgU3RyaW5nIHR5cGUg
PSBtYWtlU3RyaW5nKHBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBlKCksICI7IGNvZGVjcz1c
IiIsIG91dHB1dENvZGVjcywgIlwiIik7Ci0gICAgaWYgKEFWU3RyZWFtRGF0YVBhcnNlck1JTUVU
eXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJldHVybiBBVlN0
cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5jYW5EZWNvZGVUeXBlKHR5
cGUpID8gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKLSAgICByZXR1cm4gQVZBc3NldE1JTUVU
eXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNhbkRlY29kZVR5cGUodHlwZSkgPyBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1h
eUJlU3VwcG9ydGVkOworICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1
cHBvcnRlZDsKIH0KIAogI3ByYWdtYSBtYXJrIC0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386504</attachid>
            <date>2019-12-29 20:27:13 -0800</date>
            <delta_ts>2019-12-30 11:11:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205632-20191229202710.patch</filename>
            <type>text/plain</type>
            <size>39342</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZmNmJkOTNjNzY0MzQ5
ZjczN2VmOTc2ODFlYmQyYjVjYmNkYjg5Yy4uODBkMGIwMWZjMjNjMTJiYzJkOTRkMDAwMDg0NWQx
ZjIwNzRlYjUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE5LTEyLTI5ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENyZWF0ZSBtZWRp
YSBtaW1lIHR5cGUgY2FjaGUgYmFzZSBjbGFzcyB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTYzMgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTgyMzM1NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFsIGNoYW5n
ZS4KKyAgICAgICAgCisgICAgICAgIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUgYW5k
IEFWQXNzZXRNSU1FVHlwZUNhY2hlIGhhdmUgYSBsb3Qgb2YgdmVyeSBzaW1pbGFyIGNvZGUsCisg
ICAgICAgIHNvIGNyZWF0ZSBNSU1FVHlwZUNhY2hlIGFzIGEgYmFzZSBjbGFzcy4gQWxzbyBtb3Zl
IG1vc3Qgb2YgdGhlIGxvZ2ljIGZyb20gCisgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlIGFuZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzdXBwb3J0c1R5cGUKKyAgICAgICAgaW4gdGhlIGNhY2hlcy4KKworICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVZpZGVvT3JTVkdN
SU1FVHlwZSk6IENhbGwgc3VwcG9ydHNDb250YWluZXJUeXBlLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TUlNRVR5cGVDYWNoZTo6c3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5
cGVDYWNoZTo6c3VwcG9ydHNDb250YWluZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVU
eXBlQ2FjaGU6OmNhbkRlY29kZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVDYWNo
ZTo6Y2FuRGVjb2RlVHlwZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVDYWNo
ZTo6c2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVDYWNoZTo6
YWRkU3VwcG9ydGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUNhY2hlOjpzdGF0
aWNDb250YWluZXJUeXBlTGlzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5
cGVDYWNoZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlQ2FjaGU6OmlzVW5z
dXBwb3J0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlQ2FjaGU6OmlzQXZhaWxh
YmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlQ2FjaGU6OmNhbkRlY29kZVR5
cGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUNhY2hlOjppbml0aWFsaXpl
Q2FjaGUpOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnM6OmVuY29kZSBjb25z
dCk6IERyaXZlLWJ5IGZpeCAtIGFkZCBtaXNzaW5nIHZhcmlhYmxlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVUeXBlQ2FjaGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlN
RVR5cGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXNzZXRNSU1FVHlwZUNhY2hlOjpp
c0F2YWlsYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBVkFzc2V0TUlNRVR5cGVDYWNo
ZTo6Y2FuRGVjb2RlVHlwZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXNzZXRNSU1F
VHlwZUNhY2hlOjppc1Vuc3VwcG9ydGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpBVkFzc2V0
TUlNRVR5cGVDYWNoZTo6c3RhdGljQ29udGFpbmVyVHlwZUxpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVZBc3NldE1JTUVUeXBlQ2FjaGU6OmluaXRpYWxpemVDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2V0U3VwcG9ydGVkVHlwZXMpOiBNb3ZlZCB0byBi
YXNlIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6QVZBc3NldE1JTUVUeXBlQ2FjaGU6OnR5cGVz
KTogTW92ZWQgdG8gYmFzZSBjbGFzcyBhcyBzdXBwb3J0ZWRUeXBlcy4KKyAgICAgICAgKFdlYkNv
cmU6OkFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzdXBwb3J0c0NvbnRlbnRUeXBlKTogUmVuYW1lZCBz
dXBwb3J0c0NvbnRhaW5lclR5cGUuCisgICAgICAgIChXZWJDb3JlOjpBVkFzc2V0TUlNRVR5cGVD
YWNoZTo6Y2FuRGVjb2RlVHlwZSk6IE1vdmVkIHRvIGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpBVkFzc2V0TUlNRVR5cGVDYWNoZTo6bG9hZE1JTUVUeXBlcyk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OmNhbkRlY29kZVR5cGVJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNh
Y2hlOjppbml0aWFsaXplQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZTo6dHlwZXMpOiBNb3ZlZCB0byBiYXNlIGNsYXNzIGFzIHN1cHBvcnRl
ZFR5cGVzLgorICAgICAgICAoV2ViQ29yZTo6QVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNo
ZTo6c3VwcG9ydHNDb250ZW50VHlwZSk6IFJlbmFtZWQgc3VwcG9ydHNDb250YWluZXJUeXBlLgor
ICAgICAgICAoV2ViQ29yZTo6QVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6Y2FuRGVj
b2RlVHlwZSk6IE1vdmVkIHRvIGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpBVlN0cmVh
bURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpsb2FkTUlNRVR5cGVzKTogRGVsZXRlZC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZG
T2JqQzo6c3VwcG9ydHNDb250YWluZXJUeXBlKTogUmVuYW1lZCBmcm9tIHN1cHBvcnRzQ29udGVu
dFR5cGUuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpjYW5EZWNvZGVU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnN1cHBvcnRzQ29u
dGVudFR5cGUpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBv
cnRlZFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZSk6CisKIDIw
MTktMTItMjUgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJH
TF0gRW5hYmxlIEFOR0xFIGJ5IGRlZmF1bHQgZm9yIENvY29hIHBsYXRmb3JtcyAoZXhjZXB0IHNp
bXVsYXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYzk2ODE4OWM4YThkZTUyYTlmOWE0N2ExMWYyMzk5
ZjcyMDc5YmRhZC4uYTBlMjc5NDVlNGFmMTFiOWQ2MmMxZmE0ODYwZTViMDI4OTY3YmJmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKQEAgLTE4NzYsNiArMTg3Niw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91
dFBvaW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
K3BsYXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9O
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJjZTZjZDI5NmMw
MTBmOGUwOWE3ZDFmYzMwNjhjMWVmMzBmZGMwMjEuLjI2YzkyYjljNDcyZDYyNDBiNWRjYTc4ODIx
Mjk4OTVmZTNiOTA1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNSw2ICsyMDUsNyBAQAogCQkwN0I1QTJEQzE0NjQzMjBB
MDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I1QTJEQTE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJh
Y2tMaXN0LmggKi87IH07CiAJCTA3QjcxMTZEMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2
aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I3
MTE2QTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3QjcxMTZGMUQ4OTlFNjMwMDlGMEZG
QiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDdCNzExNkMxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMDdCOTNGRkMyM0I5NEVDNzAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjkzRkY5MjNCOTJBQUEw
MDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdDMDQ2QzQxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDczQjg3NTgxRTQwRENGRDAwNzFDMEVDIC8qIENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTA3QzA0NkNCMUU0MjY0MTMwMDcyMDFFNyAvKiBBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1NjFFNDBE
Q0U1MDA3MUMwRUMgLyogQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3QzFDMEUyMUJGQjYwMDEwMEJEMjI1
NiAvKiBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzFDMEUwMUJGQjYwMDEwMEJEMjI1NiAvKiBN
ZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLzsgfTsKQEAgLTU1NDUsNiArNTU0Niw4
IEBACiAJCTA3QjcxMTZBMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcHR1cmVEZXZpY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDdCNzExNkIxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhcHR1
cmVEZXZpY2VNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdCNzEx
NkMxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcHR1cmVEZXZpY2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3QjkzRkY5MjNCOTJBQUEwMDM2RjhFQSAvKiBNSU1FVHlwZUNh
Y2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1JTUVUeXBlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDdCOTNGRkIyM0I5MkFBQjAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTUlNRVR5cGVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3QzA0NkM2MUU0MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3QzFDMEUwMUJGQjYwMDEwMEJEMjI1NiAvKiBNZWRpYVRyYWNrU3VwcG9ydGVkQ29u
c3RyYWludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFUcmFja1N1
cHBvcnRlZENvbnN0cmFpbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzFD
MEUxMUJGQjYwMDEwMEJEMjI1NiAvKiBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTEwNSw2ICsyNTEwOCw4IEBACiAJ
CQkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oICovLAog
CQkJCUNENjQxRUIxMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCAqLywK
IAkJCQlDRERDMUU3OTE4QTk1MkYzMDAyN0E5RDQgLyogTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50
LmggKi8sCisJCQkJMDdCOTNGRkIyM0I5MkFBQjAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuY3Bw
ICovLAorCQkJCTA3QjkzRkY5MjNCOTJBQUEwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmggKi8s
CiAJCQkJMzE0QkUzQTQxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFn
ZS5jcHAgKi8sCiAJCQkJMzE0QkUzQTUxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5l
cmF0ZWRJbWFnZS5oICovLAogCQkJCTZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJ
bWFnZS5oICovLApAQCAtMzE0OTcsNiArMzE1MDIsNyBAQAogCQkJCTUxRjY0NUUwMUZGNDU5NEUw
MEI1NERFRCAvKiBNZXNzYWdlUG9ydElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
QTc0OEUzMjAwNUQwRTgwMDc1QkE2OCAvKiBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTNCODk1QUYxOURDN0VEOTAwOUNBQTkzIC8qIE1pY3JvdGFza3MuaCBp
biBIZWFkZXJzICovLAorCQkJCTA3QjkzRkZDMjNCOTRFQzcwMDM2RjhFQSAvKiBNSU1FVHlwZUNh
Y2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc3MkM0RjBDNEVCMzA0MDA4MzI4NUYgLyogTUlN
RVR5cGVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJGMTA4NjYxNjJCNkRBODAwOUFD
ODFFIC8qIE1peGVkQ29udGVudENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMkRFRjFE
MjNBOTE4NjYwMEQ4NDBGNiAvKiBNb2NrQXVkaW9TaGFyZWRVbml0LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggMTAw
ZGQ2MzkxNzM0MzliNmU1NDdmZDIwYjA0YmUzODg4MmFlYmY0YS4uZDgxYzNkNjNmZGEyNWI3YzRi
YzI0ZDU2NjQ0NjFjM2M0ZmE0NmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5jcHAKQEAgLTQzMSw3ICs0MzEsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmIEhBVkUoQVZBU1NFVFJFQURFUikKLSAg
ICBpZiAoSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c3VwcG9ydHNDb250ZW50VHlwZShDb250ZW50VHlw
ZShtaW1lVHlwZSkpKQorICAgIGlmIChJbWFnZURlY29kZXJBVkZPYmpDOjpzdXBwb3J0c0NvbnRh
aW5lclR5cGUobWltZVR5cGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk0Yzk1MGYwYzBjNTYzMTE3OGQ0YjIzYzE2ZDhkYmRkNjA0ZDljZjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNh
Y2hlLmNwcApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVD
YWNoZS5oIgorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVD
YWNoZTo6c3VwcG9ydGVkVHlwZXMoKQoreworICAgIGlmICghbV9zdXBwb3J0ZWRUeXBlcykgewor
ICAgICAgICBtX3N1cHBvcnRlZFR5cGVzID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4oKTsKKyAgICAgICAgaW5pdGlhbGl6ZUNhY2hlKCptX3N1cHBvcnRlZFR5cGVz
KTsKKyAgICB9CisKKyAgICByZXR1cm4gKm1fc3VwcG9ydGVkVHlwZXM7Cit9CisKK2Jvb2wgTUlN
RVR5cGVDYWNoZTo6c3VwcG9ydHNDb250YWluZXJUeXBlKGNvbnN0IFN0cmluZyYgY29udGFpbmVy
VHlwZSkKK3sKKyAgICBpZiAoIWlzQXZhaWxhYmxlKCkgfHwgY29udGFpbmVyVHlwZS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzdGF0aWNDb250YWluZXJUeXBl
TGlzdCgpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHJldHVybiBzdXBwb3J0ZWRUeXBlcygpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpOworfQor
CitNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgTUlNRVR5cGVDYWNoZTo6Y2FuRGVjb2Rl
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlmICghaXNBdmFpbGFibGUoKSB8
fCBtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpT
dXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOworCisgICAgaWYgKG1fY2FjaGVkUmVzdWx0cykg
eworICAgICAgICBhdXRvIGl0ID0gbV9jYWNoZWRSZXN1bHRzLT5maW5kKG1pbWVUeXBlKTsKKyAg
ICAgICAgaWYgKGl0ICE9IG1fY2FjaGVkUmVzdWx0cy0+ZW5kKCkpCisgICAgICAgICAgICByZXR1
cm4gaXQtPnZhbHVlOworICAgIH0KKworICAgIGF1dG8gcmVzdWx0ID0gY2FuRGVjb2RlVHlwZVBy
aXZhdGUobWltZVR5cGUpOworICAgIGlmICghbV9jYWNoZWRSZXN1bHRzKQorICAgICAgICBtX2Nh
Y2hlZFJlc3VsdHMgPSBIYXNoTWFwPFN0cmluZywgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KCk7CisgICAgbV9jYWNoZWRSZXN1bHRzLT5h
ZGQobWltZVR5cGUsIHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitNZWRpYVBs
YXllckVudW1zOjpTdXBwb3J0c1R5cGUgTUlNRVR5cGVDYWNoZTo6Y2FuRGVjb2RlVHlwZVByaXZh
dGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBBU1NFUlQoaXNBdmFpbGFibGUoKSAm
JiAhbWltZVR5cGUuaXNFbXB0eSgpKTsKKworICAgIGF1dG8gY29udGVudFR5cGUgPSBDb250ZW50
VHlwZSB7IG1pbWVUeXBlIH07CisgICAgYXV0byBjb250YWluZXJUeXBlID0gY29udGVudFR5cGUu
Y29udGFpbmVyVHlwZSgpOworCisgICAgaWYgKGlzVW5zdXBwb3J0ZWRDb250YWluZXJUeXBlKGNv
bnRhaW5lclR5cGUpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlOjpJc05vdFN1cHBvcnRlZDsKKworICAgIGlmICghc3VwcG9ydHNDb250YWluZXJUeXBlKGNv
bnRhaW5lclR5cGUpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlOjpJc05vdFN1cHBvcnRlZDsKKworICAgIGlmICghY29udGVudFR5cGUuY29kZWNzKCkuaXNF
bXB0eSgpICYmIGNhbkRlY29kZVR5cGVJbnRlcm5hbChjb250ZW50VHlwZSkpCisgICAgICAgIHJl
dHVybiBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkOworCisgICAg
cmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6TWF5QmVTdXBwb3J0ZWQ7Cit9
CisKK3ZvaWQgTUlNRVR5cGVDYWNoZTo6c2V0U3VwcG9ydGVkVHlwZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIG5ld1R5cGVzKQoreworICAgIGF1dG8mIHN0b3JhZ2UgPSBzdXBwb3J0ZWRUeXBlcygp
OworICAgIGZvciAoYXV0byYgdHlwZSA6IG5ld1R5cGVzKQorICAgICAgICBzdG9yYWdlLmFkZCh0
eXBlKTsKK30KKwordm9pZCBNSU1FVHlwZUNhY2hlOjphZGRTdXBwb3J0ZWRUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSkKK3sKKyAgICBzdXBwb3J0ZWRUeXBlcygpLmFkZCh0eXBlKTsKK30KKworY29u
c3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlQ2Fj
aGU6OnN0YXRpY0NvbnRhaW5lclR5cGVMaXN0KCkKK3sKKyAgICBzdGF0aWMgY29uc3QgYXV0byBj
YWNoZSA9IG1ha2VOZXZlckRlc3Ryb3llZChIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiB7IH0pOworICAgIHJldHVybiBjYWNoZTsKK30KKworfQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTUyZWY4YjY0MTIyYzA5MmJmM2Q1NmZhMjc2YzUzYzYxNWM5NjY1ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuaApAQCAt
MCwwICsxLDY2IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6Cisq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiTWVkaWFQbGF5ZXJFbnVtcy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbnRlbnRUeXBlOworCitjbGFzcyBNSU1FVHlwZUNh
Y2hlIHsKK3B1YmxpYzoKKyAgICBNSU1FVHlwZUNhY2hlKCkgPSBkZWZhdWx0OworICAgIHZpcnR1
YWwgfk1JTUVUeXBlQ2FjaGUoKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIHN1cHBvcnRzQ29udGFp
bmVyVHlwZShjb25zdCBTdHJpbmcmKTsKKyAgICBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5
cGUgY2FuRGVjb2RlVHlwZShjb25zdCBTdHJpbmcmKTsKKworICAgIEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRUeXBlcygpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0U3VwcG9ydGVkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAg
ICB2b2lkIGFkZFN1cHBvcnRlZFR5cGUoY29uc3QgU3RyaW5nJik7CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNVbnN1cHBvcnRlZENvbnRhaW5lclR5cGUoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIGJvb2wgY2FuRGVjb2RlVHlwZUludGVybmFs
KGNvbnN0IENvbnRlbnRUeXBlJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
aW5pdGlhbGl6ZUNhY2hlKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JikgeyB9CisgICAgdmlydHVhbCBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiYgc3RhdGljQ29udGFpbmVyVHlwZUxpc3QoKTsKKworcHJpdmF0ZToKKyAgICBN
ZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgY2FuRGVjb2RlVHlwZVByaXZhdGUoY29uc3Qg
U3RyaW5nJik7CisKKyAgICBPcHRpb25hbDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPj4gbV9zdXBwb3J0ZWRUeXBlczsKKyAgICBPcHRpb25hbDxIYXNoTWFwPFN0cmlu
ZywgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+PiBtX2NhY2hlZFJlc3VsdHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBmNmQ5
ZDRmYmFkODgxY2U1YTZmNDZkZTAzYmQ1ZDVhOGE4OWMxYTdjLi5mNGRiNGM3ZDA2ODBiZDI1Mjg2
NWRiMmU1MDM4MDE0NGU1MWM5NDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTkxLDYgKzkxLDcgQEAgc3RydWN0IE1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnMgewogICAgICAgICBlbmNvZGVyIDw8IHR5cGU7CiAgICAgICAgIGVu
Y29kZXIgPDwgdXJsOwogICAgICAgICBlbmNvZGVyIDw8IGlzTWVkaWFTb3VyY2U7CisgICAgICAg
IGVuY29kZXIgPDwgaXNNZWRpYVN0cmVhbTsKICAgICAgICAgZW5jb2RlciA8PCBjb250ZW50VHlw
ZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5
cGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQVZBc3NldE1JTUVUeXBlQ2FjaGUuaAppbmRleCBkNmQ5MmFjYjA1YWVmYzQxN2U1Yjdl
NjhhODYyNDI5ODU3M2FkNTlhLi5mNTcyMDlhN2I3ZWI3NzljYmM0MWUyZGYwZjhjYTQ5ZDYwODhk
NjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCisjaW5jbHVkZSAiTUlN
RVR5cGVDYWNoZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC0zNSwyNyArMzYs
MjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKIAotY2xhc3Mg
QVZBc3NldE1JTUVUeXBlQ2FjaGUgeworY2xhc3MgQVZBc3NldE1JTUVUeXBlQ2FjaGUgZmluYWwg
OiBwdWJsaWMgTUlNRVR5cGVDYWNoZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIEFWQXNzZXRNSU1FVHlwZUNhY2hlJiBzaW5nbGV0b24oKTsKIAotICAgIGJvb2wgc3VwcG9y
dHNDb250ZW50VHlwZShjb25zdCBDb250ZW50VHlwZSYpOwotICAgIGJvb2wgY2FuRGVjb2RlVHlw
ZShjb25zdCBTdHJpbmcmKTsKLQotICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiB0eXBlcygpOwogICAgIGJvb2wgaXNFbXB0eSgpOwogICAgIGJvb2wg
aXNBdmFpbGFibGUoKSBjb25zdDsKIAogICAgIHVzaW5nIENhY2hlTUlNRVR5cGVzQ2FsbGJhY2sg
PSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKT47CiAgICAgdm9pZCBz
ZXRDYWNoZU1JTUVUeXBlc0NhbGxiYWNrKENhY2hlTUlNRVR5cGVzQ2FsbGJhY2smJiBjYWxsYmFj
aykgeyBtX2NhY2hlVHlwZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0U3VwcG9ydGVkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
KTsKLQogcHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8QVZBc3NldE1JTUVUeXBl
Q2FjaGU+OwogICAgIEFWQXNzZXRNSU1FVHlwZUNhY2hlKCkgPSBkZWZhdWx0OwogCi0gICAgdm9p
ZCBsb2FkTUlNRVR5cGVzKCk7CisgICAgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4mIHN0YXRpY0NvbnRhaW5lclR5cGVMaXN0KCkgZmluYWw7CisgICAgYm9v
bCBpc1Vuc3VwcG9ydGVkQ29udGFpbmVyVHlwZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBi
b29sIGNhbkRlY29kZVR5cGVJbnRlcm5hbChjb25zdCBDb250ZW50VHlwZSYpIGZpbmFsOworICAg
IHZvaWQgaW5pdGlhbGl6ZUNhY2hlKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+JikgZmluYWw7CiAKICAgICBPcHRpb25hbDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPj4gbV9jYWNoZTsKICAgICBDYWNoZU1JTUVUeXBlc0NhbGxiYWNrIG1f
Y2FjaGVUeXBlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1F
VHlwZUNhY2hlLm1tCmluZGV4IGUyNmI2NDIzYzVlYjI1NzNkY2U5ZjY0OTc2NGEwODFmMjczNGI4
NTguLjE2MTc2YmZkNDYzMGFhOTM1NTgwMjRiY2RkZTMwOWYyYmZhMWUwZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNz
ZXRNSU1FVHlwZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCkBAIC00NSw3OCArNDUs
MTA4IEBAIEFWQXNzZXRNSU1FVHlwZUNhY2hlJiBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xl
dG9uKCkKICAgICByZXR1cm4gY2FjaGUuZ2V0KCk7CiB9CiAKLXZvaWQgQVZBc3NldE1JTUVUeXBl
Q2FjaGU6OnNldFN1cHBvcnRlZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKK2Jv
b2wgQVZBc3NldE1JTUVUeXBlQ2FjaGU6OmlzQXZhaWxhYmxlKCkgY29uc3QKIHsKLSAgICBpZiAo
bV9jYWNoZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jYWNoZSA9IEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KCk7Ci0gICAgZm9yIChhdXRvJiB0eXBlIDogdHlw
ZXMpCi0gICAgICAgIG1fY2FjaGUtPmFkZCh0eXBlKTsKKyNpZiBFTkFCTEUoVklERU8pICYmIFVT
RShBVkZPVU5EQVRJT04pCisjaWYgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIGJlIHVzaW5nIEFWRm91bmRhdGlvbkxpYnJhcnlJc0F2YWlsYWJsZSgpIGlu
c3RlYWQsIGJ1dCBkb2luZyBzbyBjYXVzZXMgc29mdC1saW5raW5nCisgICAgLy8gdG8gc3Vic2Vx
dWVudGx5IGZhaWwgb24gY2VydGFpbiBzeW1ib2xzLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzQyMjI0
NzgwPiBmb3IgbW9yZSBkZXRhaWxzLgorICAgIHJldHVybiBQQUw6OmlzQVZGb3VuZGF0aW9uRnJh
bWV3b3JrQXZhaWxhYmxlKCk7CisjZWxzZQorICAgIHJldHVybiBBVkZvdW5kYXRpb25MaWJyYXJ5
SXNBdmFpbGFibGUoKTsKKyNlbmRpZgorI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
IH0KIAotY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIEFW
QXNzZXRNSU1FVHlwZUNhY2hlOjp0eXBlcygpCitib29sIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpj
YW5EZWNvZGVUeXBlSW50ZXJuYWwoY29uc3QgQ29udGVudFR5cGUmIHR5cGUpCiB7Ci0gICAgaWYg
KCFtX2NhY2hlKQotICAgICAgICBsb2FkTUlNRVR5cGVzKCk7CisjaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoQVZGT1VOREFUSU9OKQorICAgIEFTU0VSVChpc0F2YWlsYWJsZSgpKTsKKyAgICByZXR1
cm4gW1BBTDo6Z2V0QVZVUkxBc3NldENsYXNzKCkgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6
dHlwZS5yYXcoKV07CisjZW5kaWYKIAotICAgIHJldHVybiAqbV9jYWNoZTsKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLWJvb2wgQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnN1cHBvcnRzQ29udGVudFR5
cGUoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlKQorYm9vbCBBVkFzc2V0TUlNRVR5cGVD
YWNoZTo6aXNVbnN1cHBvcnRlZENvbnRhaW5lclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewot
ICAgIGlmIChjb250ZW50VHlwZS5pc0VtcHR5KCkpCisgICAgaWYgKHR5cGUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gdHlwZXMoKS5jb250YWlucyhjb250
ZW50VHlwZS5jb250YWluZXJUeXBlKCkpOwotfQorICAgIFN0cmluZyBsb3dlckNhc2VUeXBlID0g
dHlwZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogCi1ib29sIEFWQXNzZXRNSU1FVHlwZUNh
Y2hlOjpjYW5EZWNvZGVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgaWYgKG1p
bWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEFWRm91bmRh
dGlvbiB3aWxsIHJldHVybiBub24tdmlkZW8gTUlNRSB0eXBlcyB3aGljaCBpdCBjbGFpbXMgdG8g
c3VwcG9ydCwgYnV0IHdoaWNoIHdlCisgICAgLy8gZG8gbm90IHN1cHBvcnQgaW4gdGhlIDx2aWRl
bz4gZWxlbWVudC4gUmVqZWN0IGFsbCBub24gdmlkZW8vLCBhdWRpby8sIGFuZCBhcHBsaWNhdGlv
bi8gdHlwZXMuCisgICAgaWYgKCFsb3dlckNhc2VUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYm
ICFsb3dlckNhc2VUeXBlLnN0YXJ0c1dpdGgoImF1ZGlvLyIpICYmICFsb3dlckNhc2VUeXBlLnN0
YXJ0c1dpdGgoImFwcGxpY2F0aW9uLyIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
ICghaXNBdmFpbGFibGUoKSB8fCAhdHlwZXMoKS5jb250YWlucyhDb250ZW50VHlwZSB7IG1pbWVU
eXBlIH0uY29udGFpbmVyVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIFJl
amVjdCB0eXBlcyB3ZSBrbm93IEFWRm91bmRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHRoYXQgc2l0
ZXMgY29tbW9ubHkgYXNrIGFib3V0LgorICAgIGlmIChsb3dlckNhc2VUeXBlID09ICJ2aWRlby93
ZWJtIiB8fCBsb3dlckNhc2VUeXBlID09ICJhdWRpby93ZWJtIiB8fCBsb3dlckNhc2VUeXBlID09
ICJ2aWRlby94LXdlYm0iKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotI2lmIEVOQUJMRShWSURF
TykgJiYgVVNFKEFWRk9VTkRBVElPTikKLSAgICByZXR1cm4gW1BBTDo6Z2V0QVZVUkxBc3NldENs
YXNzKCkgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6bWltZVR5cGVdOwotI2VuZGlmCisgICAg
aWYgKGxvd2VyQ2FzZVR5cGUgPT0gInZpZGVvL3gtZmx2IikKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBpZiAobG93ZXJDYXNlVHlwZSA9PSAiYXVkaW8vb2dnIiB8fCBsb3dlckNhc2VUeXBl
ID09ICJ2aWRlby9vZ2ciIHx8IGxvd2VyQ2FzZVR5cGUgPT0gImFwcGxpY2F0aW9uL29nZyIpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGxvd2VyQ2FzZVR5cGUgPT0gInZpZGVvL2gy
NjQiKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6aXNBdmFpbGFibGUoKSBjb25zdAorY29uc3QgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIEFWQXNzZXRNSU1FVHlwZUNhY2hl
OjpzdGF0aWNDb250YWluZXJUeXBlTGlzdCgpCiB7Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQotI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSB1c2luZyBBVkZvdW5kYXRpb25MaWJyYXJ5SXNBdmFpbGFibGUoKSBpbnN0
ZWFkLCBidXQgZG9pbmcgc28gY2F1c2VzIHNvZnQtbGlua2luZwotICAgIC8vIHRvIHN1YnNlcXVl
bnRseSBmYWlsIG9uIGNlcnRhaW4gc3ltYm9scy4gU2VlIDxyZGFyOi8vcHJvYmxlbS80MjIyNDc4
MD4gZm9yIG1vcmUgZGV0YWlscy4KLSAgICByZXR1cm4gUEFMOjppc0FWRm91bmRhdGlvbkZyYW1l
d29ya0F2YWlsYWJsZSgpOwotI2Vsc2UKLSAgICByZXR1cm4gQVZGb3VuZGF0aW9uTGlicmFyeUlz
QXZhaWxhYmxlKCk7Ci0jZW5kaWYKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCisg
ICAgc3RhdGljIGNvbnN0IGF1dG8gY2FjaGUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geworICAgICAgICAiYXBwbGljYXRpb24v
dm5kLmFwcGxlLm1wZWd1cmwiLAorICAgICAgICAiYXBwbGljYXRpb24veC1tcGVndXJsIiwKKyAg
ICAgICAgImF1ZGlvLzNncHAiLAorICAgICAgICAiYXVkaW8vYWFjIiwKKyAgICAgICAgImF1ZGlv
L2FhY3AiLAorICAgICAgICAiYXVkaW8vYWlmZiIsCisgICAgICAgICJhdWRpby9iYXNpYyIsCisg
ICAgICAgICJhdWRpby9tcDMiLAorICAgICAgICAiYXVkaW8vbXA0IiwKKyAgICAgICAgImF1ZGlv
L21wZWciLAorICAgICAgICAiYXVkaW8vbXBlZzMiLAorICAgICAgICAiYXVkaW8vbXBlZ3VybCIs
CisgICAgICAgICJhdWRpby9tcGciLAorICAgICAgICAiYXVkaW8vdm5kLndhdmUiLAorICAgICAg
ICAiYXVkaW8vd2F2IiwKKyAgICAgICAgImF1ZGlvL3dhdmUiLAorICAgICAgICAiYXVkaW8veC1h
YWMiLAorICAgICAgICAiYXVkaW8veC1haWZmIiwKKyAgICAgICAgImF1ZGlvL3gtbTRhIiwKKyAg
ICAgICAgImF1ZGlvL3gtbXBlZ3VybCIsCisgICAgICAgICJhdWRpby94LXdhdiIsCisgICAgICAg
ICJ2aWRlby8zZ3BwIiwKKyAgICAgICAgInZpZGVvLzNncHAyIiwKKyAgICAgICAgInZpZGVvL21w
NCIsCisgICAgICAgICJ2aWRlby9tcGVnIiwKKyAgICAgICAgInZpZGVvL21wZWcyIiwKKyAgICAg
ICAgInZpZGVvL21wZyIsCisgICAgICAgICJ2aWRlby9xdWlja3RpbWUiLAorICAgICAgICAidmlk
ZW8veC1tNHYiLAorICAgICAgICAidmlkZW8veC1tcGVnIiwKKyAgICAgICAgInZpZGVvL3gtbXBn
IiwKKyAgICB9KTsKKyAgICByZXR1cm4gY2FjaGU7CiB9CiAKLXZvaWQgQVZBc3NldE1JTUVUeXBl
Q2FjaGU6OmxvYWRNSU1FVHlwZXMoKQordm9pZCBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6aW5pdGlh
bGl6ZUNhY2hlKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBjYWNo
ZSkKIHsKLSAgICBtX2NhY2hlID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4oKTsKLQogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKLSAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZs
YWcsIFt0aGlzXSB7Ci0gICAgICAgIGlmICghUEFMOjppc0FWRm91bmRhdGlvbkZyYW1ld29ya0F2
YWlsYWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuOworICAgIGlmICghaXNBdmFpbGFibGUoKSkK
KyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZvciAoTlNTdHJpbmcqIHR5cGUgaW4gW1BBTDo6
Z2V0QVZVUkxBc3NldENsYXNzKCkgYXVkaW92aXN1YWxNSU1FVHlwZXNdKQotICAgICAgICAgICAg
bV9jYWNoZS0+YWRkKHR5cGUpOworICAgIGZvciAoTlNTdHJpbmcqIHR5cGUgaW4gW1BBTDo6Z2V0
QVZVUkxBc3NldENsYXNzKCkgYXVkaW92aXN1YWxNSU1FVHlwZXNdKQorICAgICAgICBjYWNoZS5h
ZGQodHlwZSk7CiAKLSAgICAgICAgaWYgKG1fY2FjaGVUeXBlQ2FsbGJhY2spCi0gICAgICAgICAg
ICBtX2NhY2hlVHlwZUNhbGxiYWNrKGNvcHlUb1ZlY3RvcigqbV9jYWNoZSkpOwotICAgIH0pOwor
ICAgIGlmIChtX2NhY2hlVHlwZUNhbGxiYWNrKQorICAgICAgICBtX2NhY2hlVHlwZUNhbGxiYWNr
KGNvcHlUb1ZlY3RvcihjYWNoZSkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaAppbmRleCAw
NDQ0MTk5ZWY0N2JkZTQzNzc5YTIxMjk0MjZjNGYwMDVjOGU0YWUzLi5iOWNhNDczYTdhNjQyMjg4
ZWY4ODNkMGQ1ZjgyODVlMGY0NWIzMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlw
ZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCisj
aW5jbHVkZSAiTUlNRVR5cGVDYWNoZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBA
IC0zNSwyNCArMzYsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlw
ZTsKIAotY2xhc3MgQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZSB7CitjbGFzcyBBVlN0
cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlIGZpbmFsIDogcHVibGljIE1JTUVUeXBlQ2FjaGUg
ewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBVlN0cmVhbURhdGFQYXJzZXJN
SU1FVHlwZUNhY2hlJiBzaW5nbGV0b24oKTsKIAotICAgIGJvb2wgc3VwcG9ydHNDb250ZW50VHlw
ZShjb25zdCBDb250ZW50VHlwZSYpOwotICAgIGJvb2wgY2FuRGVjb2RlVHlwZShjb25zdCBTdHJp
bmcmKTsKLQotICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+JiB0eXBlcygpOwotICAgIGJvb2wgaXNFbXB0eSgpOwotICAgIGJvb2wgaXNBdmFpbGFibGUo
KSBjb25zdDsKKyAgICBib29sIGlzQXZhaWxhYmxlKCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6
CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2Fj
aGU+OwogICAgIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUoKSA9IGRlZmF1bHQ7CiAK
LSAgICB2b2lkIGxvYWRNSU1FVHlwZXMoKTsKLQotICAgIE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBtX2NhY2hlOworICAgIGJvb2wgY2FuRGVjb2Rl
VHlwZUludGVybmFsKGNvbnN0IENvbnRlbnRUeXBlJikgZmluYWw7CisgICAgdm9pZCBpbml0aWFs
aXplQ2FjaGUoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKSBmaW5h
bDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVlN0cmVh
bURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLm1tCmluZGV4IDlhMmU4NzllMjBmZTkzNDIxYzM0N2Fl
MzIyZjcyNzlkZTQ1YzVmMmYuLjdlMGFjMGE2MTY5MDhhMDUyNjEyYmQ5M2YyMDA4NTlmNzk5NWRm
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRh
UGFyc2VyTUlNRVR5cGVDYWNoZS5tbQpAQCAtNTQsNDUgKzU0LDMwIEBAIEFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGUmIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmds
ZXRvbigpCiAgICAgcmV0dXJuIGNhY2hlLmdldCgpOwogfQogCi1jb25zdCBIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVD
YWNoZTo6dHlwZXMoKQorYm9vbCBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpjYW5E
ZWNvZGVUeXBlSW50ZXJuYWwoY29uc3QgQ29udGVudFR5cGUmIHR5cGUpCiB7Ci0gICAgaWYgKCFt
X2NhY2hlKQotICAgICAgICBsb2FkTUlNRVR5cGVzKCk7Ci0KLSAgICByZXR1cm4gKm1fY2FjaGU7
Ci19Ci0KLWJvb2wgQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6c3VwcG9ydHNDb250
ZW50VHlwZShjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpCi17Ci0gICAgaWYgKGNvbnRl
bnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHR5
cGVzKCkuY29udGFpbnMoY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpKTsKLX0KLQotYm9vbCBB
VlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCi17Ci0gICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgQ29udGVudFR5cGUgdHlwZSB7IG1pbWVUeXBlIH07CisjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgIEFTU0VSVChpc0F2YWlsYWJsZSgp
KTsKIAotICAgIGlmICghaXNBdmFpbGFibGUoKSB8fCAhdHlwZXMoKS5jb250YWlucyh0eXBlLmNv
bnRhaW5lclR5cGUoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJpbmcgb3V0cHV0
Q29kZWNzID0gdHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsK
KyAgICBBU1NFUlQoIW91dHB1dENvZGVjcy5pc0VtcHR5KCkpOworICAgIGlmIChbUEFMOjpnZXRB
VlN0cmVhbURhdGFQYXJzZXJDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0
cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6KV0pCisgICAg
ICAgIG91dHB1dENvZGVjcyA9IFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgb3V0
cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6b3V0cHV0Q29k
ZWNzXTsKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBTdHJp
bmcgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyh0eXBlLmNvbnRhaW5lclR5cGUoKSwgIjsgY29k
ZWNzPVwiIiwgb3V0cHV0Q29kZWNzLCAiXCIiKTsKICAgICBpZiAoW1BBTDo6Z2V0QVZTdHJlYW1E
YXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNhblBhcnNlRXh0
ZW5kZWRNSU1FVHlwZTopXSkKLSAgICAgICAgcmV0dXJuIFtQQUw6OmdldEFWU3RyZWFtRGF0YVBh
cnNlckNsYXNzKCkgY2FuUGFyc2VFeHRlbmRlZE1JTUVUeXBlOm1pbWVUeXBlXTsKKyAgICAgICAg
cmV0dXJuIFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgY2FuUGFyc2VFeHRlbmRl
ZE1JTUVUeXBlOmV4dGVuZGVkVHlwZV07CiAKICAgICAvLyBGSVhNRShyZGFyOi8vNTA1MDI3NzEp
IEFWU3RyZWFtRGF0YVBhcnNlciBkb2VzIG5vdCBoYXZlIGFuIC1jYW5QYXJzZUV4dGVuZGVkTUlN
RVR5cGU6IG1ldGhvZCBvbiB0aGlzIHN5c3RlbSwKICAgICAvLyAgc28ganVzdCByZXBsYWNlIHRo
ZSBjb250YWluZXIgdHlwZSB3aXRoIGEgdmFsaWQgb25lIGZyb20gQVZBc3NldE1JTUVUeXBlQ2Fj
aGUgYW5kIGFzayB0aGF0IGNhY2hlIGlmIGl0CiAgICAgLy8gIGNhbiBkZWNvZGUgdGhpcyB0eXBl
LgogICAgIGF1dG8mIGFzc2V0Q2FjaGUgPSBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9u
KCk7Ci0gICAgaWYgKCFhc3NldENhY2hlLmlzQXZhaWxhYmxlKCkgfHwgYXNzZXRDYWNoZS50eXBl
cygpLmlzRW1wdHkoKSkKKyAgICBpZiAoIWFzc2V0Q2FjaGUuaXNBdmFpbGFibGUoKSB8fCBhc3Nl
dENhY2hlLnN1cHBvcnRlZFR5cGVzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgU3RyaW5nIHJlcGxhY2VtZW50VHlwZSB7IG1pbWVUeXBlIH07Ci0gICAgcmVwbGFjZW1l
bnRUeXBlLnJlcGxhY2UodHlwZS5jb250YWluZXJUeXBlKCksICphc3NldENhY2hlLnR5cGVzKCku
YmVnaW4oKSk7Ci0gICAgcmV0dXJuIGFzc2V0Q2FjaGUuY2FuRGVjb2RlVHlwZShyZXBsYWNlbWVu
dFR5cGUpOworCisgICAgU3RyaW5nIHJlcGxhY2VtZW50VHlwZSB7IHR5cGUucmF3KCkgfTsKKyAg
ICByZXBsYWNlbWVudFR5cGUucmVwbGFjZSh0eXBlLmNvbnRhaW5lclR5cGUoKSwgKmFzc2V0Q2Fj
aGUuc3VwcG9ydGVkVHlwZXMoKS5iZWdpbigpKTsKKyAgICByZXR1cm4gYXNzZXRDYWNoZS5jYW5E
ZWNvZGVUeXBlKHJlcGxhY2VtZW50VHlwZSkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlOjpJc1N1cHBvcnRlZDsKICNlbmRpZgogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3LDE5
ICsxMDIsMTQgQEAgYm9vbCBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjppc0F2YWls
YWJsZSgpIGNvbnN0CiAjZW5kaWYKIH0KIAotdm9pZCBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlw
ZUNhY2hlOjpsb2FkTUlNRVR5cGVzKCkKK3ZvaWQgQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVD
YWNoZTo6aW5pdGlhbGl6ZUNhY2hlKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+JiBjYWNoZSkKIHsKLSAgICBtX2NhY2hlID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4oKTsKLQogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRB
VElPTikKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFt0aGlzXSB7Ci0gICAgICAgIGlmICghaXNBdmFpbGFibGUoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3IgKE5TU3RyaW5nKiB0eXBlIGluIFtQQUw6
OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgYXVkaW92aXN1YWxNSU1FVHlwZXNdKQotICAg
ICAgICAgICAgbV9jYWNoZS0+YWRkKHR5cGUpOwotICAgIH0pOworICAgIGlmICghaXNBdmFpbGFi
bGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChOU1N0cmluZyogdHlwZSBpbiBbUEFM
OjpnZXRBVlN0cmVhbURhdGFQYXJzZXJDbGFzcygpIGF1ZGlvdmlzdWFsTUlNRVR5cGVzXSkKKyAg
ICAgICAgY2FjaGUuYWRkKHR5cGUpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCBiNWQxYjlhZGM2ZDFmZTQxYWUzZDcxNDdi
MGEzYzcxOGYzYTIxM2QyLi44YTVmNTg3MGEzNTM1NzNkODY5NzY2OTM5MTU0ZDk3YjcyMmNmYzMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJBVkZPYmpDKCk7
CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRpYVR5cGUpOwotICAgIHN0
YXRpYyBib29sIHN1cHBvcnRzQ29udGVudFR5cGUoY29uc3QgQ29udGVudFR5cGUmKTsKKyAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0c0NvbnRhaW5lclR5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBz
aXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBib29sIGNhbkRlY29kZVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbQppbmRleCAzMjZkYWRiYjE3ZDA4OTExNzBlYjc1NDUzYjYzNDhkN2ZlODM5NzgyLi5iYTZh
MGUyNDIyN2JjZTg1ZDBmMjIyNWFlMTkwYjM5ZmY5NDNhNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTM0OSwxNCArMzQ5LDE0IEBAIGJv
b2wgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c3VwcG9ydHNNZWRpYVR5cGUoTWVkaWFUeXBlIHR5cGUp
CiAgICAgcmV0dXJuIHR5cGUgPT0gTWVkaWFUeXBlOjpWaWRlbyAmJiBBVkFzc2V0TUlNRVR5cGVD
YWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBJbWFnZURlY29kZXJB
VkZPYmpDOjpzdXBwb3J0c0NvbnRlbnRUeXBlKGNvbnN0IENvbnRlbnRUeXBlJiB0eXBlKQorYm9v
bCBJbWFnZURlY29kZXJBVkZPYmpDOjpzdXBwb3J0c0NvbnRhaW5lclR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKQogewotICAgIHJldHVybiBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCku
c3VwcG9ydHNDb250ZW50VHlwZSh0eXBlKTsKKyAgICByZXR1cm4gQVZBc3NldE1JTUVUeXBlQ2Fj
aGU6OnNpbmdsZXRvbigpLnN1cHBvcnRzQ29udGFpbmVyVHlwZSh0eXBlKTsKIH0KIAogYm9vbCBJ
bWFnZURlY29kZXJBVkZPYmpDOjpjYW5EZWNvZGVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CiB7Ci0gICAgcmV0dXJuIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5jYW5EZWNv
ZGVUeXBlKG1pbWVUeXBlKTsKKyAgICByZXR1cm4gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmds
ZXRvbigpLmNhbkRlY29kZVR5cGUobWltZVR5cGUpICE9IE1lZGlhUGxheWVyRW51bXM6OlN1cHBv
cnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKIEFWQXNzZXRUcmFjayAqSW1hZ2VEZWNvZGVy
QVZGT2JqQzo6Zmlyc3RFbmFibGVkVHJhY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXgg
ZmEzZWE1Y2I1OWE2MzQ4ZDYxZDFlMjkyYWU5ZWE2MTJmZjEwYzIwOS4uZTRiZjI5ZmMyOTU5M2Y3
YTZlMTFlMWQ4ZTQzMGNkMTM0MTYzYzc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0x
NjA2LDcgKzE2MDYsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlSW1hZ2VGb3JUaW1lSW5SZQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRUeXBlcykKIHsKLSAgICBz
dXBwb3J0ZWRUeXBlcyA9IEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS50eXBlcygp
OworICAgIHN1cHBvcnRlZFR5cGVzID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigp
LnN1cHBvcnRlZFR5cGVzKCk7CiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkKQEAgLTE2MjksMjMgKzE2MjksMTQgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QKICAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogI2Vu
ZGlmCiAKLSAgICBhdXRvIGNvbnRhaW5lclR5cGUgPSBwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVy
VHlwZSgpOwotICAgIGlmIChpc1Vuc3VwcG9ydGVkTUlNRVR5cGUoY29udGFpbmVyVHlwZSkpCi0g
ICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsK
LQotICAgIGlmICghc3RhdGljTUlNRVR5cGVMaXN0KCkuY29udGFpbnMoY29udGFpbmVyVHlwZSkg
JiYgIUFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5jYW5EZWNvZGVUeXBlKGNvbnRh
aW5lclR5cGUpKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNO
b3RTdXBwb3J0ZWQ7Ci0KLSAgICAvLyBUaGUgc3BlYyBzYXlzOgotICAgIC8vICJJbXBsZW1lbnRv
cnMgYXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJtYXliZSIgdW5sZXNzIHRoZSB0eXBlIGNhbiBi
ZSBjb25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBiZWluZyBzdXBwb3J0ZWQgb3Igbm90LiIKLSAg
ICBpZiAocGFyYW1ldGVycy50eXBlLmNvZGVjcygpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOworICAgIGF1dG8gc3Vw
cG9ydGVkID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNhbkRlY29kZVR5cGUo
cGFyYW1ldGVycy50eXBlLnJhdygpKTsKKyAgICBpZiAoc3VwcG9ydGVkICE9IE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkKQorICAgICAgICByZXR1cm4gc3VwcG9ydGVkOwog
CiAgICAgaWYgKCFjb250ZW50VHlwZU1lZXRzSGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVudHMocGFy
YW1ldGVycy50eXBlLCBwYXJhbWV0ZXJzLmNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3Vw
cG9ydCkpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1
cHBvcnRlZDsKIAotICAgIE5TU3RyaW5nICp0eXBlU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIlQDsgY29kZWNzPVwiJUBcIiIsIChOU1N0cmluZyAqKWNvbnRhaW5lclR5cGUs
IChOU1N0cmluZyAqKXBhcmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVj
c1BhcmFtZXRlcigpKV07Ci0gICAgcmV0dXJuIFtQQUw6OmdldEFWVVJMQXNzZXRDbGFzcygpIGlz
UGxheWFibGVFeHRlbmRlZE1JTUVUeXBlOnR5cGVTdHJpbmddID8gTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZTo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1
cHBvcnRlZDsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0
ZWQ7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3VwcG9y
dHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCkBAIC0xNjU5LDEwICsxNjUwLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3QKICAgICAg
ICAgaWYgKCFrZXlTeXN0ZW1Jc1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpICYmIGlzVW5zdXBw
b3J0ZWRNSU1FVHlwZShtaW1lVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkgJiYgIXN0YXRpY01JTUVUeXBlTGlzdCgpLmNv
bnRhaW5zKG1pbWVUeXBlKSAmJiAhQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNh
bkRlY29kZVR5cGUobWltZVR5cGUpKQorICAgICAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSAm
JiBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuY2FuRGVjb2RlVHlwZShtaW1lVHlw
ZSkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQppbmRleCBiY2RiMzhhMzUyNDY1MTE3MWZiMzgzZGMxMTU4NmJmMjM0
YTRhZGYwLi4wMTI5N2E1ZDQ0MzYzMGRiYTJmZjkyODNkNDdlOTJmNzc1ZWVkNWI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0yNDAsMTMgKzI0MCwxMyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxT
dHJpbmcsIEFTQwogewogICAgIGF1dG8mIHN0cmVhbURhdGFQYXJzZXJDYWNoZSA9IEFWU3RyZWFt
RGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpOwogICAgIGlmIChzdHJlYW1EYXRh
UGFyc2VyQ2FjaGUuaXNBdmFpbGFibGUoKSkgewotICAgICAgICB0eXBlcyA9IHN0cmVhbURhdGFQ
YXJzZXJDYWNoZS50eXBlcygpOworICAgICAgICB0eXBlcyA9IHN0cmVhbURhdGFQYXJzZXJDYWNo
ZS5zdXBwb3J0ZWRUeXBlcygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byYg
YXNzZXRDYWNoZSA9IEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKTsKICAgICBpZiAo
YXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQotICAgICAgICB0eXBlcyA9IGFzc2V0Q2FjaGUudHlw
ZXMoKTsKKyAgICAgICAgdHlwZXMgPSBhc3NldENhY2hlLnN1cHBvcnRlZFR5cGVzKCk7CiB9CiAK
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYg
cGFyYW1ldGVycykKQEAgLTI1OSwzNSArMjU5LDE5IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29u
CiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRl
ZDsKICNlbmRpZgogCi0gICAgaWYgKHBhcmFtZXRlcnMudHlwZS5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKLQotICAg
IGlmIChBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWls
YWJsZSgpKSB7Ci0gICAgICAgIGlmICghQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6
c2luZ2xldG9uKCkuc3VwcG9ydHNDb250ZW50VHlwZShwYXJhbWV0ZXJzLnR5cGUpKQotICAgICAg
ICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwot
ICAgIH0gZWxzZSBpZiAoQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxh
YmxlKCkpIHsKLSAgICAgICAgaWYgKCFBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCku
c3VwcG9ydHNDb250ZW50VHlwZShwYXJhbWV0ZXJzLnR5cGUpKQotICAgICAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwotICAgIH0gZWxzZQot
ICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7
Ci0KLSAgICAvLyBUaGUgc3BlYyBzYXlzOgotICAgIC8vICJJbXBsZW1lbnRvcnMgYXJlIGVuY291
cmFnZWQgdG8gcmV0dXJuICJtYXliZSIgdW5sZXNzIHRoZSB0eXBlIGNhbiBiZSBjb25maWRlbnRs
eSBlc3RhYmxpc2hlZCBhcyBiZWluZyBzdXBwb3J0ZWQgb3Igbm90LiIKLSAgICBhdXRvIGNvZGVj
cyA9IHBhcmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRl
cigpKTsKLSAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOworICAgIGF1dG8gc3VwcG9ydGVkID0g
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgaWYgKEFWU3Ry
ZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCisg
ICAgICAgIHN1cHBvcnRlZCA9IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmds
ZXRvbigpLmNhbkRlY29kZVR5cGUocGFyYW1ldGVycy50eXBlLnJhdygpKTsKKyAgICBlbHNlIGlm
IChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSkKKyAgICAg
ICAgc3VwcG9ydGVkID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNhbkRlY29k
ZVR5cGUocGFyYW1ldGVycy50eXBlLnJhdygpKTsKIAotICAgIFN0cmluZyBvdXRwdXRDb2RlY3Mg
PSBjb2RlY3M7Ci0gICAgaWYgKFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihvdXRwdXRNSU1FQ29kZWNQYXJhbWV0ZXJGb3JJbnB1
dE1JTUVDb2RlY1BhcmFtZXRlcjopXSkKLSAgICAgICAgb3V0cHV0Q29kZWNzID0gW1BBTDo6Z2V0
QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSBvdXRwdXRNSU1FQ29kZWNQYXJhbWV0ZXJGb3JJbnB1
dE1JTUVDb2RlY1BhcmFtZXRlcjpvdXRwdXRDb2RlY3NdOworICAgIGlmIChzdXBwb3J0ZWQgIT0g
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQpCisgICAgICAgIHJldHVybiBz
dXBwb3J0ZWQ7CiAKICAgICBpZiAoIWNvbnRlbnRUeXBlTWVldHNIYXJkd2FyZURlY29kZVJlcXVp
cmVtZW50cyhwYXJhbWV0ZXJzLnR5cGUsIHBhcmFtZXRlcnMuY29udGVudFR5cGVzUmVxdWlyaW5n
SGFyZHdhcmVTdXBwb3J0KSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGU6OklzTm90U3VwcG9ydGVkOwogCi0gICAgU3RyaW5nIHR5cGUgPSBtYWtlU3RyaW5nKHBhcmFt
ZXRlcnMudHlwZS5jb250YWluZXJUeXBlKCksICI7IGNvZGVjcz1cIiIsIG91dHB1dENvZGVjcywg
IlwiIik7Ci0gICAgaWYgKEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRv
bigpLmlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJldHVybiBBVlN0cmVhbURhdGFQYXJzZXJNSU1F
VHlwZUNhY2hlOjpzaW5nbGV0b24oKS5jYW5EZWNvZGVUeXBlKHR5cGUpID8gTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpN
YXlCZVN1cHBvcnRlZDsKLSAgICByZXR1cm4gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRv
bigpLmNhbkRlY29kZVR5cGUodHlwZSkgPyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1
cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOworICAg
IHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsKIH0KIAogI3By
YWdtYSBtYXJrIC0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386541</attachid>
            <date>2019-12-30 11:11:30 -0800</date>
            <delta_ts>2019-12-30 12:52:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205632-20191230111128.patch</filename>
            <type>text/plain</type>
            <size>40884</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZmNmJkOTNjNzY0MzQ5
ZjczN2VmOTc2ODFlYmQyYjVjYmNkYjg5Yy4uMzk0YThjYzcxZjE3MWNkNjM4ZjEzZGUzODMyZWQ5
ZDg1ZTY4YjFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE5LTEyLTI5ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENyZWF0ZSBtZWRp
YSBtaW1lIHR5cGUgY2FjaGUgYmFzZSBjbGFzcyB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTYzMgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTgyMzM1NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVy
IE5vYmxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCisg
ICAgICAgIAorICAgICAgICBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlIGFuZCBBVkFz
c2V0TUlNRVR5cGVDYWNoZSBoYXZlIGEgbG90IG9mIHZlcnkgc2ltaWxhciBjb2RlLAorICAgICAg
ICBzbyBjcmVhdGUgTUlNRVR5cGVDYWNoZSBhcyBhIGJhc2UgY2xhc3MuIEFsc28gbW92ZSBtb3N0
IG9mIHRoZSBsb2dpYyBmcm9tIAorICAgICAgICBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnN1cHBvcnRzVHlwZSBhbmQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c3VwcG9ydHNUeXBlCisgICAgICAgIGluIHRoZSBjYWNoZXMuCisKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5
cGUpOiBDYWxsIHN1cHBvcnRzQ29udGFpbmVyVHlwZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01JTUVUeXBlQ2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVU
eXBlQ2FjaGU6OnN1cHBvcnRlZFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlQ2Fj
aGU6OnN1cHBvcnRzQ29udGFpbmVyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUNh
Y2hlOjpjYW5EZWNvZGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlQ2FjaGU6OmNh
bkRlY29kZVR5cGVQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlQ2FjaGU6OnNl
dFN1cHBvcnRlZFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlQ2FjaGU6OmFkZFN1
cHBvcnRlZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVDYWNoZTo6c3RhdGljQ29u
dGFpbmVyVHlwZUxpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2Fj
aGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUNhY2hlOjppc1Vuc3VwcG9y
dGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUNhY2hlOjppc0F2YWlsYWJsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVDYWNoZTo6aW5pdGlhbGl6ZUNhY2hl
KToKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOiBE
cml2ZS1ieSBmaXggLSBhZGQgbWlzc2luZyB2YXJpYWJsZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVUeXBl
Q2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpBVkFzc2V0TUlNRVR5cGVDYWNoZTo6aXNBdmFp
bGFibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVZBc3NldE1JTUVUeXBlQ2FjaGU6OmNh
bkRlY29kZVR5cGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpBVkFzc2V0TUlNRVR5cGVD
YWNoZTo6aXNVbnN1cHBvcnRlZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZBc3NldE1JTUVU
eXBlQ2FjaGU6OnN0YXRpY0NvbnRhaW5lclR5cGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFW
QXNzZXRNSU1FVHlwZUNhY2hlOjppbml0aWFsaXplQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
QVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNldFN1cHBvcnRlZFR5cGVzKTogTW92ZWQgdG8gYmFzZSBj
bGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkFWQXNzZXRNSU1FVHlwZUNhY2hlOjp0eXBlcyk6IE1v
dmVkIHRvIGJhc2UgY2xhc3MgYXMgc3VwcG9ydGVkVHlwZXMuCisgICAgICAgIChXZWJDb3JlOjpB
VkFzc2V0TUlNRVR5cGVDYWNoZTo6c3VwcG9ydHNDb250ZW50VHlwZSk6IFJlbmFtZWQgc3VwcG9y
dHNDb250YWluZXJUeXBlLgorICAgICAgICAoV2ViQ29yZTo6QVZBc3NldE1JTUVUeXBlQ2FjaGU6
OmNhbkRlY29kZVR5cGUpOiBNb3ZlZCB0byBiYXNlIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6
QVZBc3NldE1JTUVUeXBlQ2FjaGU6OmxvYWRNSU1FVHlwZXMpOiBEZWxldGVkLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW06CisgICAgICAgIChXZWJD
b3JlOjpBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlSW50ZXJu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6QVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6
aW5pdGlhbGl6ZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWU3RyZWFtRGF0YVBhcnNlck1J
TUVUeXBlQ2FjaGU6OnR5cGVzKTogTW92ZWQgdG8gYmFzZSBjbGFzcyBhcyBzdXBwb3J0ZWRUeXBl
cy4KKyAgICAgICAgKFdlYkNvcmU6OkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnN1
cHBvcnRzQ29udGVudFR5cGUpOiBSZW5hbWVkIHN1cHBvcnRzQ29udGFpbmVyVHlwZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OmNhbkRlY29kZVR5
cGUpOiBNb3ZlZCB0byBiYXNlIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6QVZTdHJlYW1EYXRh
UGFyc2VyTUlNRVR5cGVDYWNoZTo6bG9hZE1JTUVUeXBlcyk6IERlbGV0ZWQuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6
OnN1cHBvcnRzQ29udGFpbmVyVHlwZSk6IFJlbmFtZWQgZnJvbSBzdXBwb3J0c0NvbnRlbnRUeXBl
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y2FuRGVjb2RlVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzdXBwb3J0c0NvbnRlbnRU
eXBlKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpnZXRTdXBwb3J0ZWRU
eXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUpOgorCiAyMDE5LTEy
LTI1ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIEVu
YWJsZSBBTkdMRSBieSBkZWZhdWx0IGZvciBDb2NvYSBwbGF0Zm9ybXMgKGV4Y2VwdCBzaW11bGF0
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IGM5NjgxODljOGE4ZGU1MmE5ZjlhNDdhMTFmMjM5OWY3MjA3
OWJkYWQuLmEwZTI3OTQ1ZTRhZjExYjlkNjJjMWZhNDg2MGU1YjAyODk2N2JiZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0xODc2LDYgKzE4NzYsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRQb2lu
dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9MYXlvdXRTaXplLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCitwbGF0
Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiY2U2Y2QyOTZjMDEwZjhl
MDlhN2QxZmMzMDY4YzFlZjMwZmRjMDIxLi4yNmM5MmI5YzQ3MmQ2MjQwYjVkY2E3ODgyMTI5ODk1
ZmUzYjkwNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yMDUsNiArMjA1LDcgQEAKIAkJMDdCNUEyREMxNDY0MzIwQTAwQTgx
RUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDdCNUEyREExNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlz
dC5oICovOyB9OwogCQkwN0I3MTE2RDFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCNzExNkEx
RDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0I3MTE2RjFEODk5RTYzMDA5RjBGRkIgLyog
Q2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3QjcxMTZDMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFu
YWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTA3QjkzRkZDMjNCOTRFQzcwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I5M0ZGOTIzQjkyQUFBMDAzNkY4
RUEgLyogTUlNRVR5cGVDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA3QzA0NkM0MUU0MjUwOEIwMDcyMDFFNyAvKiBDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3M0I4NzU4MUU0MERDRkQwMDcxQzBFQyAvKiBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0Mw
NDZDQjFFNDI2NDEzMDA3MjAxRTcgLyogQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQjg3NTYxRTQwRENFNTAw
NzFDMEVDIC8qIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0MxQzBFMjFCRkI2MDAxMDBCRDIyNTYgLyog
TWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFU
cmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmggKi87IH07CkBAIC01NTQ1LDYgKzU1NDYsOCBAQAog
CQkwN0I3MTE2QTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3QjcxMTZCMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYXB0dXJlRGV2
aWNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjcxMTZDMUQ4
OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwN0I5M0ZGOTIzQjkyQUFBMDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNSU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA3QjkzRkZCMjNCOTJBQUIwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1JTUVUeXBlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwN0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFp
bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tTdXBwb3J0
ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFMTFC
RkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUxMDUsNiArMjUxMDgsOCBAQAogCQkJCTA3
OUY1RTRCMEYzQkVCRUEwMDVFMDc4MiAvKiBNZWRpYVBsYXllclByaXZhdGUuaCAqLywKIAkJCQlD
RDY0MUVCMTE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggKi8sCiAJCQkJ
Q0REQzFFNzkxOEE5NTJGMzAwMjdBOUQ0IC8qIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oICov
LAorCQkJCTA3QjkzRkZCMjNCOTJBQUIwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmNwcCAqLywK
KwkJCQkwN0I5M0ZGOTIzQjkyQUFBMDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5oICovLAogCQkJ
CTMxNEJFM0E0MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3Bw
ICovLAogCQkJCTMxNEJFM0E1MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVk
SW1hZ2UuaCAqLywKIAkJCQk2QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2Uu
aCAqLywKQEAgLTMxNDk3LDYgKzMxNTAyLDcgQEAKIAkJCQk1MUY2NDVFMDFGRjQ1OTRFMDBCNTRE
RUQgLyogTWVzc2FnZVBvcnRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUE3NDhF
MzIwMDVEMEU4MDA3NUJBNjggLyogTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzQjg5NUFGMTlEQzdFRDkwMDlDQUE5MyAvKiBNaWNyb3Rhc2tzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwN0I5M0ZGQzIzQjk0RUM3MDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJDNEYwQzRFQjMwNDAwODMyODVGIC8qIE1JTUVUeXBl
UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyRjEwODY2MTYyQjZEQTgwMDlBQzgxRSAv
KiBNaXhlZENvbnRlbnRDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTJERUYxRDIzQTkx
ODY2MDBEODQwRjYgLyogTW9ja0F1ZGlvU2hhcmVkVW5pdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IDEwMGRkNjM5
MTczNDM5YjZlNTQ3ZmQyMGIwNGJlMzg4ODJhZWJmNGEuLmQ4MWMzZDYzZmRhMjViN2M0YmMyNGQ1
NjY0NDYxYzNjNGZhNDZkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuY3BwCkBAIC00MzEsNyArNDMxLDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1N1cHBvcnRlZEltYWdlVmlkZW9PclNWR01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiBIQVZFKEFWQVNTRVRSRUFERVIpCi0gICAgaWYg
KEltYWdlRGVjb2RlckFWRk9iakM6OnN1cHBvcnRzQ29udGVudFR5cGUoQ29udGVudFR5cGUobWlt
ZVR5cGUpKSkKKyAgICBpZiAoSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c3VwcG9ydHNDb250YWluZXJU
eXBlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NzVhOGJiMzYyOGRhNjY3YzYxYzEwOWU5MjBiZDMyOTdhMzQ2MDI2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5j
cHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1JTUVUeXBlQ2FjaGUu
aCIKKworI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlQ2FjaGU6
OnN1cHBvcnRlZFR5cGVzKCkKK3sKKyAgICBpZiAoIW1fc3VwcG9ydGVkVHlwZXMpIHsKKyAgICAg
ICAgbV9zdXBwb3J0ZWRUeXBlcyA9IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+KCk7CisgICAgICAgIGluaXRpYWxpemVDYWNoZSgqbV9zdXBwb3J0ZWRUeXBlcyk7Cisg
ICAgfQorCisgICAgcmV0dXJuICptX3N1cHBvcnRlZFR5cGVzOworfQorCitib29sIE1JTUVUeXBl
Q2FjaGU6OnN1cHBvcnRzQ29udGFpbmVyVHlwZShjb25zdCBTdHJpbmcmIGNvbnRhaW5lclR5cGUp
Cit7CisgICAgaWYgKCFpc0F2YWlsYWJsZSgpIHx8IGNvbnRhaW5lclR5cGUuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3RhdGljQ29udGFpbmVyVHlwZUxpc3Qo
KS5jb250YWlucyhjb250YWluZXJUeXBlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBy
ZXR1cm4gc3VwcG9ydGVkVHlwZXMoKS5jb250YWlucyhjb250YWluZXJUeXBlKTsKK30KKworTWVk
aWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIE1JTUVUeXBlQ2FjaGU6OmNhbkRlY29kZVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBpZiAoIWlzQXZhaWxhYmxlKCkgfHwgbWlt
ZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9y
dHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKKworICAgIGlmIChtX2NhY2hlZFJlc3VsdHMpIHsKKyAg
ICAgICAgYXV0byBpdCA9IG1fY2FjaGVkUmVzdWx0cy0+ZmluZChtaW1lVHlwZSk7CisgICAgICAg
IGlmIChpdCAhPSBtX2NhY2hlZFJlc3VsdHMtPmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0
LT52YWx1ZTsKKyAgICB9CisKKyAgICBhdXRvIHJlc3VsdCA9IGNhbkRlY29kZVR5cGVQcml2YXRl
KG1pbWVUeXBlKTsKKyAgICBpZiAoIW1fY2FjaGVkUmVzdWx0cykKKyAgICAgICAgbV9jYWNoZWRS
ZXN1bHRzID0gSGFzaE1hcDxTdHJpbmcsIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSwg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPigpOworICAgIG1fY2FjaGVkUmVzdWx0cy0+YWRkKG1p
bWVUeXBlLCByZXN1bHQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworTWVkaWFQbGF5ZXJF
bnVtczo6U3VwcG9ydHNUeXBlIE1JTUVUeXBlQ2FjaGU6OmNhbkRlY29kZVR5cGVQcml2YXRlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgQVNTRVJUKGlzQXZhaWxhYmxlKCkgJiYgIW1p
bWVUeXBlLmlzRW1wdHkoKSk7CisKKyAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5cGUg
eyBtaW1lVHlwZSB9OworICAgIGF1dG8gY29udGFpbmVyVHlwZSA9IGNvbnRlbnRUeXBlLmNvbnRh
aW5lclR5cGUoKTsKKworICAgIGlmIChpc1Vuc3VwcG9ydGVkQ29udGFpbmVyVHlwZShjb250YWlu
ZXJUeXBlKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6
SXNOb3RTdXBwb3J0ZWQ7CisKKyAgICBpZiAoIXN1cHBvcnRzQ29udGFpbmVyVHlwZShjb250YWlu
ZXJUeXBlKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6
SXNOb3RTdXBwb3J0ZWQ7CisKKyAgICBpZiAoIWNvbnRlbnRUeXBlLmNvZGVjcygpLmlzRW1wdHko
KSAmJiBjYW5EZWNvZGVUeXBlSW50ZXJuYWwoY29udGVudFR5cGUpKQorICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsKKworICAgIHJldHVy
biBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVkOworfQorCit2
b2lkIE1JTUVUeXBlQ2FjaGU6OmFkZFN1cHBvcnRlZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBuZXdUeXBlcykKK3sKKyAgICBhdXRvJiBzdG9yYWdlID0gc3VwcG9ydGVkVHlwZXMoKTsKKyAg
ICBmb3IgKGF1dG8mIHR5cGUgOiBuZXdUeXBlcykKKyAgICAgICAgc3RvcmFnZS5hZGQodHlwZSk7
Cit9CisKK3ZvaWQgTUlNRVR5cGVDYWNoZTo6YWRkU3VwcG9ydGVkVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCit7CisgICAgc3VwcG9ydGVkVHlwZXMoKS5hZGQodHlwZSk7Cit9CisKK2NvbnN0IEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZUNhY2hlOjpz
dGF0aWNDb250YWluZXJUeXBlTGlzdCgpCit7CisgICAgc3RhdGljIGNvbnN0IGF1dG8gY2FjaGUg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4geyB9KTsKKyAgICByZXR1cm4gY2FjaGU7Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0ZDdh
Zjk4OTFmNmRkM2M5ODFjZTc0NWMzNmI3N2IyYzUzM2JkYzQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmgKQEAgLTAsMCAr
MSw2OCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1lZGlhUGxheWVyRW51bXMuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBDb250ZW50VHlwZTsKKworY2xhc3MgTUlNRVR5cGVDYWNoZSB7
CitwdWJsaWM6CisgICAgTUlNRVR5cGVDYWNoZSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5N
SU1FVHlwZUNhY2hlKCkgPSBkZWZhdWx0OworCisgICAgYm9vbCBzdXBwb3J0c0NvbnRhaW5lclR5
cGUoY29uc3QgU3RyaW5nJik7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIGNh
bkRlY29kZVR5cGUoY29uc3QgU3RyaW5nJik7CisKKyAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkVHlwZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFkZFN1cHBvcnRlZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9p
ZCBhZGRTdXBwb3J0ZWRUeXBlKGNvbnN0IFN0cmluZyYpOworCisgICAgdmlydHVhbCBib29sIGlz
VW5zdXBwb3J0ZWRDb250YWluZXJUeXBlKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRUeXBlcyAmJiAh
bV9zdXBwb3J0ZWRUeXBlcy0+aXNFbXB0eSgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuRGVjb2RlVHlwZUludGVybmFsKGNvbnN0IENvbnRlbnRUeXBlJikgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUNhY2hlKEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JikgeyB9CisgICAgdmlydHVhbCBjb25zdCBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3RhdGljQ29udGFpbmVyVHlw
ZUxpc3QoKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUg
Y2FuRGVjb2RlVHlwZVByaXZhdGUoY29uc3QgU3RyaW5nJik7CisKKyAgICBPcHRpb25hbDxIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gbV9zdXBwb3J0ZWRUeXBlczsK
KyAgICBPcHRpb25hbDxIYXNoTWFwPFN0cmluZywgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBtX2NhY2hlZFJlc3VsdHM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAppbmRleCBmNmQ5ZDRmYmFkODgxY2U1YTZmNDZkZTAzYmQ1ZDVhOGE4
OWMxYTdjLi5mNGRiNGM3ZDA2ODBiZDI1Mjg2NWRiMmU1MDM4MDE0NGU1MWM5NDY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTkxLDYg
KzkxLDcgQEAgc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgewogICAgICAgICBl
bmNvZGVyIDw8IHR5cGU7CiAgICAgICAgIGVuY29kZXIgPDwgdXJsOwogICAgICAgICBlbmNvZGVy
IDw8IGlzTWVkaWFTb3VyY2U7CisgICAgICAgIGVuY29kZXIgPDwgaXNNZWRpYVN0cmVhbTsKICAg
ICAgICAgZW5jb2RlciA8PCBjb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVUeXBlQ2FjaGUuaApp
bmRleCBkNmQ5MmFjYjA1YWVmYzQxN2U1YjdlNjhhODYyNDI5ODU3M2FkNTlhLi5mNTcyMDlhN2I3
ZWI3NzljYmM0MWUyZGYwZjhjYTQ5ZDYwODhkNjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogCisjaW5jbHVkZSAiTUlNRVR5cGVDYWNoZS5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CkBAIC0zNSwyNyArMzYsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb250ZW50VHlwZTsKIAotY2xhc3MgQVZBc3NldE1JTUVUeXBlQ2FjaGUgeworY2xhc3Mg
QVZBc3NldE1JTUVUeXBlQ2FjaGUgZmluYWwgOiBwdWJsaWMgTUlNRVR5cGVDYWNoZSB7CiBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFWQXNzZXRNSU1FVHlwZUNhY2hlJiBzaW5n
bGV0b24oKTsKIAotICAgIGJvb2wgc3VwcG9ydHNDb250ZW50VHlwZShjb25zdCBDb250ZW50VHlw
ZSYpOwotICAgIGJvb2wgY2FuRGVjb2RlVHlwZShjb25zdCBTdHJpbmcmKTsKLQotICAgIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcygpOwogICAg
IGJvb2wgaXNFbXB0eSgpOwogICAgIGJvb2wgaXNBdmFpbGFibGUoKSBjb25zdDsKIAogICAgIHVz
aW5nIENhY2hlTUlNRVR5cGVzQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmVj
dG9yPFN0cmluZz4mKT47CiAgICAgdm9pZCBzZXRDYWNoZU1JTUVUeXBlc0NhbGxiYWNrKENhY2hl
TUlNRVR5cGVzQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX2NhY2hlVHlwZUNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3VwcG9ydGVk
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKLQogcHJpdmF0ZToKICAgICBmcmllbmQgTmV2
ZXJEZXN0cm95ZWQ8QVZBc3NldE1JTUVUeXBlQ2FjaGU+OwogICAgIEFWQXNzZXRNSU1FVHlwZUNh
Y2hlKCkgPSBkZWZhdWx0OwogCi0gICAgdm9pZCBsb2FkTUlNRVR5cGVzKCk7CisgICAgY29uc3Qg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN0YXRpY0NvbnRhaW5l
clR5cGVMaXN0KCkgZmluYWw7CisgICAgYm9vbCBpc1Vuc3VwcG9ydGVkQ29udGFpbmVyVHlwZShj
b25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGNhbkRlY29kZVR5cGVJbnRlcm5hbChjb25z
dCBDb250ZW50VHlwZSYpIGZpbmFsOworICAgIHZvaWQgaW5pdGlhbGl6ZUNhY2hlKEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JikgZmluYWw7CiAKICAgICBPcHRpb25h
bDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gbV9jYWNoZTsKICAg
ICBDYWNoZU1JTUVUeXBlc0NhbGxiYWNrIG1fY2FjaGVUeXBlQ2FsbGJhY2s7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFz
c2V0TUlNRVR5cGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCmluZGV4IGUyNmI2NDIzYzVl
YjI1NzNkY2U5ZjY0OTc2NGEwODFmMjczNGI4NTguLjE2MTc2YmZkNDYzMGFhOTM1NTgwMjRiY2Rk
ZTMwOWYyYmZhMWUwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1F
VHlwZUNhY2hlLm1tCkBAIC00NSw3OCArNDUsMTA4IEBAIEFWQXNzZXRNSU1FVHlwZUNhY2hlJiBB
VkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkKICAgICByZXR1cm4gY2FjaGUuZ2V0KCk7
CiB9CiAKLXZvaWQgQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNldFN1cHBvcnRlZFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKK2Jvb2wgQVZBc3NldE1JTUVUeXBlQ2FjaGU6OmlzQXZh
aWxhYmxlKCkgY29uc3QKIHsKLSAgICBpZiAobV9jYWNoZSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9jYWNoZSA9IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KCk7
Ci0gICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCi0gICAgICAgIG1fY2FjaGUtPmFkZCh0eXBl
KTsKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisjaWYgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHVzaW5nIEFWRm91bmRh
dGlvbkxpYnJhcnlJc0F2YWlsYWJsZSgpIGluc3RlYWQsIGJ1dCBkb2luZyBzbyBjYXVzZXMgc29m
dC1saW5raW5nCisgICAgLy8gdG8gc3Vic2VxdWVudGx5IGZhaWwgb24gY2VydGFpbiBzeW1ib2xz
LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzQyMjI0NzgwPiBmb3IgbW9yZSBkZXRhaWxzLgorICAgIHJl
dHVybiBQQUw6OmlzQVZGb3VuZGF0aW9uRnJhbWV3b3JrQXZhaWxhYmxlKCk7CisjZWxzZQorICAg
IHJldHVybiBBVkZvdW5kYXRpb25MaWJyYXJ5SXNBdmFpbGFibGUoKTsKKyNlbmRpZgorI2Vsc2UK
KyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAotY29uc3QgSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjp0eXBlcygpCiti
b29sIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlSW50ZXJuYWwoY29uc3QgQ29u
dGVudFR5cGUmIHR5cGUpCiB7Ci0gICAgaWYgKCFtX2NhY2hlKQotICAgICAgICBsb2FkTUlNRVR5
cGVzKCk7CisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgIEFTU0VS
VChpc0F2YWlsYWJsZSgpKTsKKyAgICByZXR1cm4gW1BBTDo6Z2V0QVZVUkxBc3NldENsYXNzKCkg
aXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6dHlwZS5yYXcoKV07CisjZW5kaWYKIAotICAgIHJl
dHVybiAqbV9jYWNoZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQVZBc3NldE1JTUVU
eXBlQ2FjaGU6OnN1cHBvcnRzQ29udGVudFR5cGUoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRU
eXBlKQorYm9vbCBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6aXNVbnN1cHBvcnRlZENvbnRhaW5lclR5
cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIGlmIChjb250ZW50VHlwZS5pc0VtcHR5KCkp
CisgICAgaWYgKHR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXR1cm4gdHlwZXMoKS5jb250YWlucyhjb250ZW50VHlwZS5jb250YWluZXJUeXBlKCkpOwotfQor
ICAgIFN0cmluZyBsb3dlckNhc2VUeXBlID0gdHlwZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgp
OwogCi1ib29sIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCi17Ci0gICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIC8vIEFWRm91bmRhdGlvbiB3aWxsIHJldHVybiBub24tdmlkZW8gTUlN
RSB0eXBlcyB3aGljaCBpdCBjbGFpbXMgdG8gc3VwcG9ydCwgYnV0IHdoaWNoIHdlCisgICAgLy8g
ZG8gbm90IHN1cHBvcnQgaW4gdGhlIDx2aWRlbz4gZWxlbWVudC4gUmVqZWN0IGFsbCBub24gdmlk
ZW8vLCBhdWRpby8sIGFuZCBhcHBsaWNhdGlvbi8gdHlwZXMuCisgICAgaWYgKCFsb3dlckNhc2VU
eXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFsb3dlckNhc2VUeXBlLnN0YXJ0c1dpdGgoImF1
ZGlvLyIpICYmICFsb3dlckNhc2VUeXBlLnN0YXJ0c1dpdGgoImFwcGxpY2F0aW9uLyIpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghaXNBdmFpbGFibGUoKSB8fCAhdHlwZXMoKS5j
b250YWlucyhDb250ZW50VHlwZSB7IG1pbWVUeXBlIH0uY29udGFpbmVyVHlwZSgpKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIC8vIFJlamVjdCB0eXBlcyB3ZSBrbm93IEFWRm91bmRhdGlv
biBkb2VzIG5vdCBzdXBwb3J0IHRoYXQgc2l0ZXMgY29tbW9ubHkgYXNrIGFib3V0LgorICAgIGlm
IChsb3dlckNhc2VUeXBlID09ICJ2aWRlby93ZWJtIiB8fCBsb3dlckNhc2VUeXBlID09ICJhdWRp
by93ZWJtIiB8fCBsb3dlckNhc2VUeXBlID09ICJ2aWRlby94LXdlYm0iKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKLSAgICBy
ZXR1cm4gW1BBTDo6Z2V0QVZVUkxBc3NldENsYXNzKCkgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5
cGU6bWltZVR5cGVdOwotI2VuZGlmCisgICAgaWYgKGxvd2VyQ2FzZVR5cGUgPT0gInZpZGVvL3gt
Zmx2IikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobG93ZXJDYXNlVHlwZSA9PSAi
YXVkaW8vb2dnIiB8fCBsb3dlckNhc2VUeXBlID09ICJ2aWRlby9vZ2ciIHx8IGxvd2VyQ2FzZVR5
cGUgPT0gImFwcGxpY2F0aW9uL29nZyIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYg
KGxvd2VyQ2FzZVR5cGUgPT0gInZpZGVvL2gyNjQiKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6aXNBdmFp
bGFibGUoKSBjb25zdAorY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4mIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzdGF0aWNDb250YWluZXJUeXBlTGlzdCgpCiB7
Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQotI2lmIFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB1c2luZyBBVkZvdW5kYXRp
b25MaWJyYXJ5SXNBdmFpbGFibGUoKSBpbnN0ZWFkLCBidXQgZG9pbmcgc28gY2F1c2VzIHNvZnQt
bGlua2luZwotICAgIC8vIHRvIHN1YnNlcXVlbnRseSBmYWlsIG9uIGNlcnRhaW4gc3ltYm9scy4g
U2VlIDxyZGFyOi8vcHJvYmxlbS80MjIyNDc4MD4gZm9yIG1vcmUgZGV0YWlscy4KLSAgICByZXR1
cm4gUEFMOjppc0FWRm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJsZSgpOwotI2Vsc2UKLSAgICBy
ZXR1cm4gQVZGb3VuZGF0aW9uTGlicmFyeUlzQXZhaWxhYmxlKCk7Ci0jZW5kaWYKLSNlbHNlCi0g
ICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCisgICAgc3RhdGljIGNvbnN0IGF1dG8gY2FjaGUgPSBt
YWtlTmV2ZXJEZXN0cm95ZWQoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4geworICAgICAgICAiYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmwiLAorICAgICAgICAi
YXBwbGljYXRpb24veC1tcGVndXJsIiwKKyAgICAgICAgImF1ZGlvLzNncHAiLAorICAgICAgICAi
YXVkaW8vYWFjIiwKKyAgICAgICAgImF1ZGlvL2FhY3AiLAorICAgICAgICAiYXVkaW8vYWlmZiIs
CisgICAgICAgICJhdWRpby9iYXNpYyIsCisgICAgICAgICJhdWRpby9tcDMiLAorICAgICAgICAi
YXVkaW8vbXA0IiwKKyAgICAgICAgImF1ZGlvL21wZWciLAorICAgICAgICAiYXVkaW8vbXBlZzMi
LAorICAgICAgICAiYXVkaW8vbXBlZ3VybCIsCisgICAgICAgICJhdWRpby9tcGciLAorICAgICAg
ICAiYXVkaW8vdm5kLndhdmUiLAorICAgICAgICAiYXVkaW8vd2F2IiwKKyAgICAgICAgImF1ZGlv
L3dhdmUiLAorICAgICAgICAiYXVkaW8veC1hYWMiLAorICAgICAgICAiYXVkaW8veC1haWZmIiwK
KyAgICAgICAgImF1ZGlvL3gtbTRhIiwKKyAgICAgICAgImF1ZGlvL3gtbXBlZ3VybCIsCisgICAg
ICAgICJhdWRpby94LXdhdiIsCisgICAgICAgICJ2aWRlby8zZ3BwIiwKKyAgICAgICAgInZpZGVv
LzNncHAyIiwKKyAgICAgICAgInZpZGVvL21wNCIsCisgICAgICAgICJ2aWRlby9tcGVnIiwKKyAg
ICAgICAgInZpZGVvL21wZWcyIiwKKyAgICAgICAgInZpZGVvL21wZyIsCisgICAgICAgICJ2aWRl
by9xdWlja3RpbWUiLAorICAgICAgICAidmlkZW8veC1tNHYiLAorICAgICAgICAidmlkZW8veC1t
cGVnIiwKKyAgICAgICAgInZpZGVvL3gtbXBnIiwKKyAgICB9KTsKKyAgICByZXR1cm4gY2FjaGU7
CiB9CiAKLXZvaWQgQVZBc3NldE1JTUVUeXBlQ2FjaGU6OmxvYWRNSU1FVHlwZXMoKQordm9pZCBB
VkFzc2V0TUlNRVR5cGVDYWNoZTo6aW5pdGlhbGl6ZUNhY2hlKEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBjYWNoZSkKIHsKLSAgICBtX2NhY2hlID0gSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oKTsKLQogI2lmIEVOQUJMRShWSURFTykg
JiYgVVNFKEFWRk9VTkRBVElPTikKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFt0aGlzXSB7Ci0gICAgICAgIGlmICghUEFM
Ojppc0FWRm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJsZSgpKQotICAgICAgICAgICAgcmV0dXJu
OworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZv
ciAoTlNTdHJpbmcqIHR5cGUgaW4gW1BBTDo6Z2V0QVZVUkxBc3NldENsYXNzKCkgYXVkaW92aXN1
YWxNSU1FVHlwZXNdKQotICAgICAgICAgICAgbV9jYWNoZS0+YWRkKHR5cGUpOworICAgIGZvciAo
TlNTdHJpbmcqIHR5cGUgaW4gW1BBTDo6Z2V0QVZVUkxBc3NldENsYXNzKCkgYXVkaW92aXN1YWxN
SU1FVHlwZXNdKQorICAgICAgICBjYWNoZS5hZGQodHlwZSk7CiAKLSAgICAgICAgaWYgKG1fY2Fj
aGVUeXBlQ2FsbGJhY2spCi0gICAgICAgICAgICBtX2NhY2hlVHlwZUNhbGxiYWNrKGNvcHlUb1Zl
Y3RvcigqbV9jYWNoZSkpOwotICAgIH0pOworICAgIGlmIChtX2NhY2hlVHlwZUNhbGxiYWNrKQor
ICAgICAgICBtX2NhY2hlVHlwZUNhbGxiYWNrKGNvcHlUb1ZlY3RvcihjYWNoZSkpOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGUuaAppbmRleCAwNDQ0MTk5ZWY0N2JkZTQzNzc5YTIxMjk0MjZjNGYw
MDVjOGU0YWUzLi5iOWNhNDczYTdhNjQyMjg4ZWY4ODNkMGQ1ZjgyODVlMGY0NWIzMTZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9BVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlN
RVR5cGVDYWNoZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCisjaW5jbHVkZSAiTUlNRVR5cGVDYWNoZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC0zNSwyNCArMzYsMTggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKIAotY2xhc3MgQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZSB7CitjbGFzcyBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlIGZp
bmFsIDogcHVibGljIE1JTUVUeXBlQ2FjaGUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlJiBzaW5nbGV0b24oKTsKIAot
ICAgIGJvb2wgc3VwcG9ydHNDb250ZW50VHlwZShjb25zdCBDb250ZW50VHlwZSYpOwotICAgIGJv
b2wgY2FuRGVjb2RlVHlwZShjb25zdCBTdHJpbmcmKTsKLQotICAgIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcygpOwotICAgIGJvb2wgaXNFbXB0
eSgpOwotICAgIGJvb2wgaXNBdmFpbGFibGUoKSBjb25zdDsKKyAgICBib29sIGlzQXZhaWxhYmxl
KCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEFW
U3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU+OwogICAgIEFWU3RyZWFtRGF0YVBhcnNlck1J
TUVUeXBlQ2FjaGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIGxvYWRNSU1FVHlwZXMoKTsKLQot
ICAgIE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBt
X2NhY2hlOworICAgIGJvb2wgY2FuRGVjb2RlVHlwZUludGVybmFsKGNvbnN0IENvbnRlbnRUeXBl
JikgZmluYWw7CisgICAgdm9pZCBpbml0aWFsaXplQ2FjaGUoSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mKSBmaW5hbDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9BVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLm1tCmlu
ZGV4IDlhMmU4NzllMjBmZTkzNDIxYzM0N2FlMzIyZjcyNzlkZTQ1YzVmMmYuLjdlMGFjMGE2MTY5
MDhhMDUyNjEyYmQ5M2YyMDA4NTlmNzk5NWRmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWU3RyZWFtRGF0YVBhcnNlck1J
TUVUeXBlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbQpAQCAtNTQs
NDUgKzU0LDMwIEBAIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUmIEFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpCiAgICAgcmV0dXJuIGNhY2hlLmdldCgp
OwogfQogCi1jb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYg
QVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6dHlwZXMoKQorYm9vbCBBVlN0cmVhbURh
dGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBlSW50ZXJuYWwoY29uc3QgQ29udGVu
dFR5cGUmIHR5cGUpCiB7Ci0gICAgaWYgKCFtX2NhY2hlKQotICAgICAgICBsb2FkTUlNRVR5cGVz
KCk7Ci0KLSAgICByZXR1cm4gKm1fY2FjaGU7Ci19Ci0KLWJvb2wgQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZTo6c3VwcG9ydHNDb250ZW50VHlwZShjb25zdCBDb250ZW50VHlwZSYgY29u
dGVudFR5cGUpCi17Ci0gICAgaWYgKGNvbnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHR5cGVzKCkuY29udGFpbnMoY29udGVudFR5cGUuY29u
dGFpbmVyVHlwZSgpKTsKLX0KLQotYm9vbCBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hl
OjpjYW5EZWNvZGVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgaWYgKG1pbWVU
eXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ29udGVudFR5cGUg
dHlwZSB7IG1pbWVUeXBlIH07CisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9O
KQorICAgIEFTU0VSVChpc0F2YWlsYWJsZSgpKTsKIAotICAgIGlmICghaXNBdmFpbGFibGUoKSB8
fCAhdHlwZXMoKS5jb250YWlucyh0eXBlLmNvbnRhaW5lclR5cGUoKSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBTdHJpbmcgb3V0cHV0Q29kZWNzID0gdHlwZS5wYXJhbWV0ZXIoQ29udGVu
dFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKKyAgICBBU1NFUlQoIW91dHB1dENvZGVjcy5pc0Vt
cHR5KCkpOworICAgIGlmIChbUEFMOjpnZXRBVlN0cmVhbURhdGFQYXJzZXJDbGFzcygpIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRN
SU1FQ29kZWNQYXJhbWV0ZXI6KV0pCisgICAgICAgIG91dHB1dENvZGVjcyA9IFtQQUw6OmdldEFW
U3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgb3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5wdXRN
SU1FQ29kZWNQYXJhbWV0ZXI6b3V0cHV0Q29kZWNzXTsKIAotI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKKyAgICBTdHJpbmcgZXh0ZW5kZWRUeXBlID0gbWFrZVN0cmluZyh0
eXBlLmNvbnRhaW5lclR5cGUoKSwgIjsgY29kZWNzPVwiIiwgb3V0cHV0Q29kZWNzLCAiXCIiKTsK
ICAgICBpZiAoW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGNhblBhcnNlRXh0ZW5kZWRNSU1FVHlwZTopXSkKLSAgICAgICAgcmV0
dXJuIFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgY2FuUGFyc2VFeHRlbmRlZE1J
TUVUeXBlOm1pbWVUeXBlXTsKKyAgICAgICAgcmV0dXJuIFtQQUw6OmdldEFWU3RyZWFtRGF0YVBh
cnNlckNsYXNzKCkgY2FuUGFyc2VFeHRlbmRlZE1JTUVUeXBlOmV4dGVuZGVkVHlwZV07CiAKICAg
ICAvLyBGSVhNRShyZGFyOi8vNTA1MDI3NzEpIEFWU3RyZWFtRGF0YVBhcnNlciBkb2VzIG5vdCBo
YXZlIGFuIC1jYW5QYXJzZUV4dGVuZGVkTUlNRVR5cGU6IG1ldGhvZCBvbiB0aGlzIHN5c3RlbSwK
ICAgICAvLyAgc28ganVzdCByZXBsYWNlIHRoZSBjb250YWluZXIgdHlwZSB3aXRoIGEgdmFsaWQg
b25lIGZyb20gQVZBc3NldE1JTUVUeXBlQ2FjaGUgYW5kIGFzayB0aGF0IGNhY2hlIGlmIGl0CiAg
ICAgLy8gIGNhbiBkZWNvZGUgdGhpcyB0eXBlLgogICAgIGF1dG8mIGFzc2V0Q2FjaGUgPSBBVkFz
c2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKCFhc3NldENhY2hlLmlzQXZh
aWxhYmxlKCkgfHwgYXNzZXRDYWNoZS50eXBlcygpLmlzRW1wdHkoKSkKKyAgICBpZiAoIWFzc2V0
Q2FjaGUuaXNBdmFpbGFibGUoKSB8fCBhc3NldENhY2hlLnN1cHBvcnRlZFR5cGVzKCkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyaW5nIHJlcGxhY2VtZW50VHlwZSB7
IG1pbWVUeXBlIH07Ci0gICAgcmVwbGFjZW1lbnRUeXBlLnJlcGxhY2UodHlwZS5jb250YWluZXJU
eXBlKCksICphc3NldENhY2hlLnR5cGVzKCkuYmVnaW4oKSk7Ci0gICAgcmV0dXJuIGFzc2V0Q2Fj
aGUuY2FuRGVjb2RlVHlwZShyZXBsYWNlbWVudFR5cGUpOworCisgICAgU3RyaW5nIHJlcGxhY2Vt
ZW50VHlwZSB7IHR5cGUucmF3KCkgfTsKKyAgICByZXBsYWNlbWVudFR5cGUucmVwbGFjZSh0eXBl
LmNvbnRhaW5lclR5cGUoKSwgKmFzc2V0Q2FjaGUuc3VwcG9ydGVkVHlwZXMoKS5iZWdpbigpKTsK
KyAgICByZXR1cm4gYXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKHJlcGxhY2VtZW50VHlwZSkgPT0g
TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZDsKICNlbmRpZgogCiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3LDE5ICsxMDIsMTQgQEAgYm9vbCBBVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlOjppc0F2YWlsYWJsZSgpIGNvbnN0CiAjZW5kaWYKIH0KIAotdm9p
ZCBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlOjpsb2FkTUlNRVR5cGVzKCkKK3ZvaWQg
QVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6aW5pdGlhbGl6ZUNhY2hlKEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBjYWNoZSkKIHsKLSAgICBtX2NhY2hl
ID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oKTsKLQogI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFt0aGlzXSB7Ci0gICAg
ICAgIGlmICghaXNBdmFpbGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBm
b3IgKE5TU3RyaW5nKiB0eXBlIGluIFtQQUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkg
YXVkaW92aXN1YWxNSU1FVHlwZXNdKQotICAgICAgICAgICAgbV9jYWNoZS0+YWRkKHR5cGUpOwot
ICAgIH0pOworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Zm9yIChOU1N0cmluZyogdHlwZSBpbiBbUEFMOjpnZXRBVlN0cmVhbURhdGFQYXJzZXJDbGFzcygp
IGF1ZGlvdmlzdWFsTUlNRVR5cGVzXSkKKyAgICAgICAgY2FjaGUuYWRkKHR5cGUpOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRl
eCBiNWQxYjlhZGM2ZDFmZTQxYWUzZDcxNDdiMGEzYzcxOGYzYTIxM2QyLi44YTVmNTg3MGEzNTM1
NzNkODY5NzY2OTM5MTU0ZDk3YjcyMmNmYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5JbWFnZURlY29kZXJBVkZPYmpDKCk7CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c01l
ZGlhVHlwZShNZWRpYVR5cGUpOwotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQ29udGVudFR5cGUo
Y29uc3QgQ29udGVudFR5cGUmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0NvbnRhaW5lclR5
cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQ
cm9wZXJ0aWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBib29s
IGNhbkRlY29kZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAzMjZkYWRiYjE3ZDA4OTExNzBl
Yjc1NDUzYjYzNDhkN2ZlODM5NzgyLi5iYTZhMGUyNDIyN2JjZTg1ZDBmMjIyNWFlMTkwYjM5ZmY5
NDNhNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
bW0KQEAgLTM0OSwxNCArMzQ5LDE0IEBAIGJvb2wgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c3VwcG9y
dHNNZWRpYVR5cGUoTWVkaWFUeXBlIHR5cGUpCiAgICAgcmV0dXJuIHR5cGUgPT0gTWVkaWFUeXBl
OjpWaWRlbyAmJiBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUo
KTsKIH0KIAotYm9vbCBJbWFnZURlY29kZXJBVkZPYmpDOjpzdXBwb3J0c0NvbnRlbnRUeXBlKGNv
bnN0IENvbnRlbnRUeXBlJiB0eXBlKQorYm9vbCBJbWFnZURlY29kZXJBVkZPYmpDOjpzdXBwb3J0
c0NvbnRhaW5lclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIHJldHVybiBBVkFzc2V0
TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuc3VwcG9ydHNDb250ZW50VHlwZSh0eXBlKTsKKyAg
ICByZXR1cm4gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLnN1cHBvcnRzQ29udGFp
bmVyVHlwZSh0eXBlKTsKIH0KIAogYm9vbCBJbWFnZURlY29kZXJBVkZPYmpDOjpjYW5EZWNvZGVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgcmV0dXJuIEFWQXNzZXRNSU1FVHlw
ZUNhY2hlOjpzaW5nbGV0b24oKS5jYW5EZWNvZGVUeXBlKG1pbWVUeXBlKTsKKyAgICByZXR1cm4g
QVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNhbkRlY29kZVR5cGUobWltZVR5cGUp
ICE9IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAK
IEFWQXNzZXRUcmFjayAqSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Zmlyc3RFbmFibGVkVHJhY2soKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZmEzZWE1Y2I1OWE2MzQ4ZDYxZDFlMjkyYWU5ZWE2
MTJmZjEwYzIwOS4uZTRiZjI5ZmMyOTU5M2Y3YTZlMTFlMWQ4ZTQzMGNkMTM0MTYzYzc2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xNjA2LDcgKzE2MDYsNyBAQCBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlSW1hZ2VG
b3JUaW1lSW5SZQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omdl
dFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiBzdXBwb3J0ZWRUeXBlcykKIHsKLSAgICBzdXBwb3J0ZWRUeXBlcyA9IEFWQXNzZXRNSU1FVHlw
ZUNhY2hlOjpzaW5nbGV0b24oKS50eXBlcygpOworICAgIHN1cHBvcnRlZFR5cGVzID0gQVZBc3Nl
dE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLnN1cHBvcnRlZFR5cGVzKCk7CiB9CiAKICNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAgLTE2MjksMjMgKzE2MjksMTQgQEAgTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzdXBwb3J0c1R5cGUoY29uc3QKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGU6OklzTm90U3VwcG9ydGVkOwogI2VuZGlmCiAKLSAgICBhdXRvIGNvbnRhaW5lclR5cGUg
PSBwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgpOwotICAgIGlmIChpc1Vuc3VwcG9ydGVk
TUlNRVR5cGUoY29udGFpbmVyVHlwZSkpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKLQotICAgIGlmICghc3RhdGljTUlNRVR5cGVMaXN0
KCkuY29udGFpbnMoY29udGFpbmVyVHlwZSkgJiYgIUFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5n
bGV0b24oKS5jYW5EZWNvZGVUeXBlKGNvbnRhaW5lclR5cGUpKQotICAgICAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7Ci0KLSAgICAvLyBUaGUgc3Bl
YyBzYXlzOgotICAgIC8vICJJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJt
YXliZSIgdW5sZXNzIHRoZSB0eXBlIGNhbiBiZSBjb25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBi
ZWluZyBzdXBwb3J0ZWQgb3Igbm90LiIKLSAgICBpZiAocGFyYW1ldGVycy50eXBlLmNvZGVjcygp
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1h
eUJlU3VwcG9ydGVkOworICAgIGF1dG8gc3VwcG9ydGVkID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6
OnNpbmdsZXRvbigpLmNhbkRlY29kZVR5cGUocGFyYW1ldGVycy50eXBlLnJhdygpKTsKKyAgICBp
ZiAoc3VwcG9ydGVkICE9IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkKQor
ICAgICAgICByZXR1cm4gc3VwcG9ydGVkOwogCiAgICAgaWYgKCFjb250ZW50VHlwZU1lZXRzSGFy
ZHdhcmVEZWNvZGVSZXF1aXJlbWVudHMocGFyYW1ldGVycy50eXBlLCBwYXJhbWV0ZXJzLmNvbnRl
bnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCkpCiAgICAgICAgIHJldHVybiBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIAotICAgIE5TU3RyaW5nICp0eXBl
U3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDsgY29kZWNzPVwiJUBcIiIs
IChOU1N0cmluZyAqKWNvbnRhaW5lclR5cGUsIChOU1N0cmluZyAqKXBhcmFtZXRlcnMudHlwZS5w
YXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKV07Ci0gICAgcmV0dXJuIFtQ
QUw6OmdldEFWVVJMQXNzZXRDbGFzcygpIGlzUGxheWFibGVFeHRlbmRlZE1JTUVUeXBlOnR5cGVT
dHJpbmddID8gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZDsKKyAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNTdXBwb3J0ZWQ7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC0xNjU5LDEwICsxNjUwLDcgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbShj
b25zdCBTdHJpbmcmIGtleVN5c3QKICAgICAgICAgaWYgKCFrZXlTeXN0ZW1Jc1N1cHBvcnRlZChr
ZXlTeXN0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghbWlt
ZVR5cGUuaXNFbXB0eSgpICYmIGlzVW5zdXBwb3J0ZWRNSU1FVHlwZShtaW1lVHlwZSkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkg
JiYgIXN0YXRpY01JTUVUeXBlTGlzdCgpLmNvbnRhaW5zKG1pbWVUeXBlKSAmJiAhQVZBc3NldE1J
TUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmNhbkRlY29kZVR5cGUobWltZVR5cGUpKQorICAgICAg
ICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSAmJiBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xl
dG9uKCkuY2FuRGVjb2RlVHlwZShtaW1lVHlwZSkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9y
dHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBiY2RiMzhh
MzUyNDY1MTE3MWZiMzgzZGMxMTU4NmJmMjM0YTRhZGYwLi4yM2M0ZDQ5NjIzMThiZDRjMzhiNmUy
MjY5NTU4OGY4ZjA3MThmYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0yNDAs
MTMgKzI0MCwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQwogewogICAgIGF1dG8mIHN0cmVh
bURhdGFQYXJzZXJDYWNoZSA9IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNpbmds
ZXRvbigpOwogICAgIGlmIChzdHJlYW1EYXRhUGFyc2VyQ2FjaGUuaXNBdmFpbGFibGUoKSkgewot
ICAgICAgICB0eXBlcyA9IHN0cmVhbURhdGFQYXJzZXJDYWNoZS50eXBlcygpOworICAgICAgICB0
eXBlcyA9IHN0cmVhbURhdGFQYXJzZXJDYWNoZS5zdXBwb3J0ZWRUeXBlcygpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgYXV0byYgYXNzZXRDYWNoZSA9IEFWQXNzZXRNSU1FVHlwZUNh
Y2hlOjpzaW5nbGV0b24oKTsKICAgICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQotICAg
ICAgICB0eXBlcyA9IGFzc2V0Q2FjaGUudHlwZXMoKTsKKyAgICAgICAgdHlwZXMgPSBhc3NldENh
Y2hlLnN1cHBvcnRlZFR5cGVzKCk7CiB9CiAKIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTI1OSwzNSArMjU5LDIz
IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKICNlbmRpZgogCi0gICAgaWYgKHBhcmFtZXRl
cnMudHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlOjpJc05vdFN1cHBvcnRlZDsKLQotICAgIGlmIChBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlw
ZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIGlmICghQVZTdHJl
YW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuc3VwcG9ydHNDb250ZW50VHlw
ZShwYXJhbWV0ZXJzLnR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwotICAgIH0gZWxzZSBpZiAoQVZBc3NldE1JTUVUeXBl
Q2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgaWYgKCFBVkFzc2V0
TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuc3VwcG9ydHNDb250ZW50VHlwZShwYXJhbWV0ZXJz
LnR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Oklz
Tm90U3VwcG9ydGVkOwotICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7Ci0KLSAgICAvLyBUaGUgc3BlYyBzYXlzOgotICAg
IC8vICJJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJtYXliZSIgdW5sZXNz
IHRoZSB0eXBlIGNhbiBiZSBjb25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBiZWluZyBzdXBwb3J0
ZWQgb3Igbm90LiIKLSAgICBhdXRvIGNvZGVjcyA9IHBhcmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIo
Q29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKLSAgICBpZiAoY29kZWNzLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9y
dGVkOworICAgIGF1dG8gc3VwcG9ydGVkID0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNO
b3RTdXBwb3J0ZWQ7CisgICAgYXV0byYgc3RyZWFtRGF0YVBhcnNlckNhY2hlID0gQVZTdHJlYW1E
YXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCk7CisgICAgaWYgKHN0cmVhbURhdGFQ
YXJzZXJDYWNoZS5pc0F2YWlsYWJsZSgpKQorICAgICAgICBzdXBwb3J0ZWQgPSBzdHJlYW1EYXRh
UGFyc2VyQ2FjaGUuY2FuRGVjb2RlVHlwZShwYXJhbWV0ZXJzLnR5cGUucmF3KCkpOworICAgIGVs
c2UgeworICAgICAgICBhdXRvJiBhc3NldENhY2hlID0gQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNp
bmdsZXRvbigpOworICAgICAgICBpZiAoYXNzZXRDYWNoZS5pc0F2YWlsYWJsZSgpKQorICAgICAg
ICAgICAgc3VwcG9ydGVkID0gYXNzZXRDYWNoZS5jYW5EZWNvZGVUeXBlKHBhcmFtZXRlcnMudHlw
ZS5yYXcoKSk7CisgICAgfQogCi0gICAgU3RyaW5nIG91dHB1dENvZGVjcyA9IGNvZGVjczsKLSAg
ICBpZiAoW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFy
YW1ldGVyOildKQotICAgICAgICBvdXRwdXRDb2RlY3MgPSBbUEFMOjpnZXRBVlN0cmVhbURhdGFQ
YXJzZXJDbGFzcygpIG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFy
YW1ldGVyOm91dHB1dENvZGVjc107CisgICAgaWYgKHN1cHBvcnRlZCAhPSBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCkKKyAgICAgICAgcmV0dXJuIHN1cHBvcnRlZDsKIAog
ICAgIGlmICghY29udGVudFR5cGVNZWV0c0hhcmR3YXJlRGVjb2RlUmVxdWlyZW1lbnRzKHBhcmFt
ZXRlcnMudHlwZSwgcGFyYW1ldGVycy5jb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBv
cnQpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBw
b3J0ZWQ7CiAKLSAgICBTdHJpbmcgdHlwZSA9IG1ha2VTdHJpbmcocGFyYW1ldGVycy50eXBlLmNv
bnRhaW5lclR5cGUoKSwgIjsgY29kZWNzPVwiIiwgb3V0cHV0Q29kZWNzLCAiXCIiKTsKLSAgICBp
ZiAoQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFi
bGUoKSkKLSAgICAgICAgcmV0dXJuIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGU6OnNp
bmdsZXRvbigpLmNhbkRlY29kZVR5cGUodHlwZSkgPyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6Ok1heUJlU3VwcG9ydGVk
OwotICAgIHJldHVybiBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuY2FuRGVjb2Rl
VHlwZSh0eXBlKSA/IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkIDogTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6TWF5QmVTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkOwogfQogCiAjcHJhZ21hIG1hcmsgLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0K
aW5kZXggNDNiM2M2OWQ4MTI1MmMzYjM3OTc3MWM2NDNmNzQ2OTU4MTQ1N2MyNi4uZjA3ZTRlN2U5
MDQ2OGMxOWJhMTYyMjYyOGI0OGNlYWI0NDE3OTczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC04ODQsNyArODg0LDcgQEAg
dm9pZCBXZWJQcm9jZXNzOjpiYWNrbGlnaHRMZXZlbERpZENoYW5nZShmbG9hdCBiYWNrbGlnaHRM
ZXZlbCkKIAogdm9pZCBXZWJQcm9jZXNzOjpzZXRNZWRpYU1JTUVUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiB0eXBlcykKIHsKLSAgICBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCku
c2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5n
bGV0b24oKS5hZGRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQppbmRleCA5YzViODc4
YjlmNGI4OTE4ZTcyM2Q1NWNjNTE4MDQ1YWMyODEwNDE3Li5hYTMyMzJmYjZkNTUyYzBjZGJiY2Fm
NmFkOWY3YTk3OTllYmRiODAwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRo
cy5tbQpAQCAtNjMwLDcgKzYzMCw3IEBAIFRFU1QoV2ViS2l0LCBNZWRpYUNhY2hlKQogCiAgICAg
ICAgIHdoaWxlICghZG9uZSkgewogICAgICAgICAgICAgYXV0byBieXRlcyA9IFRDUFNlcnZlcjo6
cmVhZChzb2NrZXQpOwotICAgICAgICAgICAgaWYgKGRvbmUpCisgICAgICAgICAgICBpZiAoZG9u
ZSB8fCBieXRlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBTdHJpbmdWaWV3IHJlcXVlc3Qoc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPihieXRlcy5kYXRh
KCkpLCBieXRlcy5zaXplKCkpOwogICAgICAgICAgICAgU3RyaW5nIHJhbmdlQnl0ZXMgPSAiUmFu
Z2U6IGJ5dGVzPSJfczsK
</data>

          </attachment>
      

    </bug>

</bugzilla>