<?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>225820</bug_id>
          
          <creation_ts>2021-05-14 13:40:53 -0700</creation_ts>
          <short_desc>Drop FileSystem::fileMetadata() / fileMetadataFollowingSymlinks()</short_desc>
          <delta_ts>2021-05-14 22:47:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1760188</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-14 13:40:53 -0700</bug_when>
    <thetext>Drop FileSystem::fileMetadata() / fileMetadataFollowingSymlinks(). Those don&apos;t match very closely the std::filesystem API and they are not very efficient because we gather several attributes of a file but the callers are usually only interested in one thing (e.g. file type or file size).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760191</commentid>
    <comment_count>1</comment_count>
      <attachid>428652</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-14 13:46:39 -0700</bug_when>
    <thetext>Created attachment 428652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760217</commentid>
    <comment_count>2</comment_count>
      <attachid>428660</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-14 14:37:01 -0700</bug_when>
    <thetext>Created attachment 428660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760298</commentid>
    <comment_count>3</comment_count>
      <attachid>428685</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-14 16:55:26 -0700</bug_when>
    <thetext>Created attachment 428685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760339</commentid>
    <comment_count>4</comment_count>
      <attachid>428685</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-14 20:20:06 -0700</bug_when>
    <thetext>Comment on attachment 428685
Patch

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

&gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:716
&gt; +    auto fileType = FileSystem::fileTypeFollowingSymlinks(path);
&gt; +    bool isDirectory = fileType &amp;&amp; *fileType == FileSystem::FileType::Directory;

The == operator in Optional should make this easier to write. Like this:

    bool isDirectory = FileSystem::fileTypeFollowingSymlinks(path) == FileSystem::FileType::Directory;

&gt; Source/WebCore/fileapi/File.cpp:151
&gt; +        auto fileType = FileSystem::fileTypeFollowingSymlinks(m_path);
&gt; +        m_isDirectory = fileType &amp;&amp; *fileType == FileSystem::FileType::Directory;

m_isDirectory = FileSystem::fileTypeFollowingSymlinks(m_path) == FileSystem::FileType::Directory;

&gt; Source/WebCore/html/DirectoryFileListCreator.cpp:79
&gt; +        auto fileType = FileSystem::fileType(info.path);
&gt; +        if (fileType &amp;&amp; *fileType == FileSystem::FileType::Directory)

if (FileSystem::fileType(info.path) == FileSystem::FileType::Directory)

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheFileSystem.cpp:62
&gt; +        auto fileType = FileSystem::fileType(entryPath);
&gt; +        auto type = (fileType &amp;&amp; *fileType == FileSystem::FileType::Directory) ? DirectoryEntryType::Directory : DirectoryEntryType::File;

auto type = FileSystem::fileType(entryPath) == FileSystem::FileType::Directory ? DirectoryEntryType::Directory : DirectoryEntryType::File;

&gt; Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm:368
&gt; +        auto directoryType = FileSystem::fileType(info.directoryPath);
&gt; +        if (directoryType &amp;&amp; *directoryType == FileSystem::FileType::Directory) {

if (FileSystem::fileType(info.directoryPath) == FileSystem::FileType::Directory) {

&gt; Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm:392
&gt; +            auto fileType = FileSystem::fileTypeFollowingSymlinks(info.directoryPath);
&gt; +            hasSandboxDirectory = fileType &amp;&amp; *fileType == FileSystem::FileType::Directory;

hasSandboxDirectory = FileSystem::fileTypeFollowingSymlinks(info.directoryPath) == FileSystem::FileType::Directory;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760341</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-14 20:24:05 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 428685 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=428685&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:716
&gt; &gt; +    auto fileType = FileSystem::fileTypeFollowingSymlinks(path);
&gt; &gt; +    bool isDirectory = fileType &amp;&amp; *fileType == FileSystem::FileType::Directory;
&gt; 
&gt; The == operator in Optional should make this easier to write. Like this:
&gt; 
&gt;     bool isDirectory = FileSystem::fileTypeFollowingSymlinks(path) ==
&gt; FileSystem::FileType::Directory;
&gt; 
&gt; &gt; Source/WebCore/fileapi/File.cpp:151
&gt; &gt; +        auto fileType = FileSystem::fileTypeFollowingSymlinks(m_path);
&gt; &gt; +        m_isDirectory = fileType &amp;&amp; *fileType == FileSystem::FileType::Directory;
&gt; 
&gt; m_isDirectory = FileSystem::fileTypeFollowingSymlinks(m_path) ==
&gt; FileSystem::FileType::Directory;
&gt; 
&gt; &gt; Source/WebCore/html/DirectoryFileListCreator.cpp:79
&gt; &gt; +        auto fileType = FileSystem::fileType(info.path);
&gt; &gt; +        if (fileType &amp;&amp; *fileType == FileSystem::FileType::Directory)
&gt; 
&gt; if (FileSystem::fileType(info.path) == FileSystem::FileType::Directory)
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cache/NetworkCacheFileSystem.cpp:62
&gt; &gt; +        auto fileType = FileSystem::fileType(entryPath);
&gt; &gt; +        auto type = (fileType &amp;&amp; *fileType == FileSystem::FileType::Directory) ? DirectoryEntryType::Directory : DirectoryEntryType::File;
&gt; 
&gt; auto type = FileSystem::fileType(entryPath) ==
&gt; FileSystem::FileType::Directory ? DirectoryEntryType::Directory :
&gt; DirectoryEntryType::File;
&gt; 
&gt; &gt; Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm:368
&gt; &gt; +        auto directoryType = FileSystem::fileType(info.directoryPath);
&gt; &gt; +        if (directoryType &amp;&amp; *directoryType == FileSystem::FileType::Directory) {
&gt; 
&gt; if (FileSystem::fileType(info.directoryPath) ==
&gt; FileSystem::FileType::Directory) {
&gt; 
&gt; &gt; Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm:392
&gt; &gt; +            auto fileType = FileSystem::fileTypeFollowingSymlinks(info.directoryPath);
&gt; &gt; +            hasSandboxDirectory = fileType &amp;&amp; *fileType == FileSystem::FileType::Directory;
&gt; 
&gt; hasSandboxDirectory =
&gt; FileSystem::fileTypeFollowingSymlinks(info.directoryPath) ==
&gt; FileSystem::FileType::Directory;

Oh that’s great. I did not realize I could do that. This should make things a lot nicer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760360</commentid>
    <comment_count>6</comment_count>
      <attachid>428711</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-14 21:03:52 -0700</bug_when>
    <thetext>Created attachment 428711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760383</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-14 22:46:50 -0700</bug_when>
    <thetext>Committed r277535 (237763@main): &lt;https://commits.webkit.org/237763@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428711.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760384</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-14 22:47:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/78047472&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428652</attachid>
            <date>2021-05-14 13:46:39 -0700</date>
            <delta_ts>2021-05-14 14:44:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225820-20210514134638.patch</filename>
            <type>text/plain</type>
            <size>65030</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
M2E3NWE2ZmEzMjAyYWRiY2VjNWY2ODliOTIyMTc1NWJjZjVkZjc1Li4yMjI4ZTAxOGYxZWYwOTRj
MmRiMjZjNGZkYWQxM2M1YjhiNTRjYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERyb3AgRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgLyBmaWxlTWV0YWRhdGFG
b2xsb3dpbmdTeW1saW5rcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjU4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgb3VyIGNvZGUgYmFzZSBiZWNhdXNlIG9mIHRoZSBGaWxlU3lzdGVt
IEFQSSBjaGFuZ2VzLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAgICAgICAodmFs
aWRhdGVCeXRlY29kZUNhY2hlUGF0aCk6CisKIDIwMjEtMDUtMTQgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBCYXNlbGluZSBKSVQgcHJvcGVydHkg
YWNjZXNzIHNsb3cgcGF0aHMgdXNpbmcgSklUIHRodW5rcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGZlZTAxZWFkY2E0NjEy
ZDVhNjE2ODliZTQ3NDg2NWQwNjNkNDY2NS4uZmU4NGE1N2IyNDQwMDhmZmQ5NjlkY2ZjMTcyNGRi
ZmMwNzM5ZjE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgRmlsZVN5c3RlbTo6ZmlsZU1ldGFk
YXRhKCkgLyBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcygpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4MjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEcm9wIEZpbGVTeXN0ZW06OmZpbGVNZXRh
ZGF0YSgpIC8gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoKS4gVGhvc2UgZG9uJ3QgbWF0
Y2ggdmVyeSBjbG9zZWx5IHRoZQorICAgICAgICBzdGQ6OmZpbGVzeXN0ZW0gQVBJIHdlIHVzZSBp
bnRlcm5hbGx5IGFuZCB0aGV5IGFyZSBub3QgdmVyeSBlZmZpY2llbnQgYmVjYXVzZSB3ZSBnYXRo
ZXIgc2V2ZXJhbCBhdHRyaWJ1dGVzCisgICAgICAgIG9mIGEgZmlsZSBidXQgdGhlIGNhbGxlcnMg
YXJlIHVzdWFsbHkgb25seSBpbnRlcmVzdGVkIGluIG9uZSB0aGluZyAoZS5nLiBmaWxlIHR5cGUg
b3IgZmlsZSBzaXplKS4KKworICAgICAgICBDYWxsZXJzIGludGVyZXN0ZWQgaW4gdGhlIGZpbGUg
c2l6ZSwgY2FuIGNhbGwgdGhlIHByZS1leGlzdGluZyBGaWxlU3lzdGVtOjpmaWxlU2l6ZSgpLiBG
b3IgY2FsbCBzaXRlcworICAgICAgICB3YW50aW5nIHRvIGNoZWNrIGlmIGl0IGlzIGEgaGlkZGVu
IGZpbGUsIEkgaW50cm9kdWNlZCBhIG5ldyBGaWxlU3lzdGVtOjppc0hpZGRlbkZpbGUoKSBBUEku
IEZvciBjYWxsIHNpdGVzCisgICAgICAgIGludGVyZXN0ZWQgaW4gdGhlIGZpbGUgdHlwZSwgSSBy
ZXBsYWNlZCBGaWxlU3lzdGVtOjppc0RpcmVjdG9yeSgpIC8gRmlsZVN5c3RlbTo6aXNEaXJlY3Rv
cnlGb2xsb3dpbmdTeW1saW5rcygpCisgICAgICAgIHdpdGggbW9yZSBnZW5lcmljIEZpbGVTeXN0
ZW06OmZpbGVUeXBlKCkgLyBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKCku
CisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3
dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0ZpbGVNZXRhZGF0YS5oOiBSZW1vdmVk
LgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3Rl
bUltcGw6OmlzSGlkZGVuRmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxl
VHlwZVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltTGlua3MpOgorICAgICAgICAoV1RGOjpGaWxlU3lz
dGVtSW1wbDo6ZmlsZVR5cGUpOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZmlsZVR5
cGVGb2xsb3dpbmdTeW1saW5rcyk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAgICAg
ICAgKiB3dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHA6CisgICAgICAgICogd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoK
KwogMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IEludHJvZHVjZSBGaWxlU3lzdGVtOjp1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZDUyZmQ0YmMyMDYyYTEwMzZlZjNjZWMzMmRmNzcyZjI4ZmRkZDkxMy4uZTVkOTcx
MWQwZmYzNGQ2MjI2NjUwMDBjNGE1ODljYTEzNWYyY2U4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM5IEBACisyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgRHJvcCBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoKSAvIGZpbGVNZXRhZGF0YUZvbGxv
d2luZ1N5bWxpbmtzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTgyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZSBvdXIgY29kZSBiYXNlIGJlY2F1c2Ugb2YgdGhlIEZpbGVTeXN0ZW0gQVBJ
IGNoYW5nZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpsaXN0RGlyZWN0b3J5V2l0aE1ldGFkYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvRmlsZVN5c3RlbUVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZVR5cGVJZ25vcmluZ0hpZGRlbkZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlUGF0
aElzRXhwZWN0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmdldFBh
cmVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRFbnRyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRGaWxlKToKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFj
aG1lbnRGb3JGaWxlUGF0aCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGU6OmlzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBodG1sL0RpcmVj
dG9yeUZpbGVMaXN0Q3JlYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmREaXJlY3Rv
cnlGaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpnYXRoZXJGaWxlSW5mb3JtYXRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVBc3NldENhY2hlRXhp
c3RzRm9yUGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZl
cmVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFy
dFRyYWNraW5nTW9kaWZpY2F0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpwcmVwYXJlRm9yVXBsb2FkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmdlbmVyYXRlUmVwbGFjZW1l
bnRGaWxlKToKKwogMjAyMS0wNS0xNCAgWmlyYW4gU3VuICA8enN1bkBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFdyb25nIHN0YXRpYyBwb3NpdGlvbiBmb3Igb3V0LW9mLWZsb3cgcG9zaXRpb25lZCBl
bGVtZW50IHdpdGggZGlmZmVyZW50IHdyaXRpbmctbW9kZSB0aGFuIGl0cyBjb250YWluaW5nIGJs
b2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDgzMzVkYWE3OWYxZWE0MWM3MTg1MTZmN2UzOGExMjdmMTcwYzdjNzEu
LjYzYjM4YWM0ZGQ3ZjA3YjJhMTE4MzQ2MTg3OGQzMGYwOTE2ZWY0YTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMjEtMDUtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBEcm9wIEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSgpIC8gZmlsZU1ldGFkYXRh
Rm9sbG93aW5nU3ltbGlua3MoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIG91ciBjb2RlIGJhc2UgYmVjYXVzZSBvZiB0aGUgRmlsZVN5c3Rl
bSBBUEkgY2hhbmdlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Z2V0RGlyZWN0
b3J5U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpnZXREaXJl
Y3Rvcmllcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFs
bENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjp0cmF2
ZXJzZURpcmVjdG9yeSk6CisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjplbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3RvcnkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAo
V2ViS2l0Ojppc0ludGVybmFsSW5zdGFsbCk6CisKIDIwMjEtMDUtMTQgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgRmlsZVN5c3RlbTo6dXBkYXRl
RmlsZU1vZGlmaWNhdGlvblRpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0K
aW5kZXggMWRjYTdjMTU3ODEyMWRmMzZkY2UyZjdlZDZiMGExYjUwZDM5NWIyMC4uYmQzNGZiZTVj
OTM3MjAxZWUwZmI3NWVjZjNiOGJkMDMzZmY3NmRkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTU2NyaXB0Lm1tCkBAIC0zOCw3ICszOCw2IEBACiAjaW1wb3J0ICJKU1ZpcnR1YWxNYWNoaW5l
SW50ZXJuYWwuaCIKICNpbXBvcnQgIlN5bWJvbC5oIgogI2ltcG9ydCA8c3lzL3N0YXQuaD4KLSNp
bXBvcnQgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDx3dGYvU0hBMS5oPgogI2ltcG9ydCA8d3RmL1Njb3BlLmg+CkBAIC03Nyw4ICs3Niw4
IEBAIHN0YXRpYyBib29sIHZhbGlkYXRlQnl0ZWNvZGVDYWNoZVBhdGgoTlNVUkwqIGNhY2hlUGF0
aCwgTlNFcnJvcioqIGVycm9yKQogCiAgICAgU3RyaW5nIHN5c3RlbVBhdGggPSBjYWNoZVBhdGhV
UkwuZmlsZVN5c3RlbVBhdGgoKTsKIAotICAgIGlmIChhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3Rl
bTo6ZmlsZU1ldGFkYXRhKHN5c3RlbVBhdGgpKSB7Ci0gICAgICAgIGlmIChtZXRhZGF0YS0+dHlw
ZSAhPSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpIHsKKyAgICBpZiAoYXV0byBmaWxlVHlwZSA9
IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHN5c3RlbVBhdGgpKSB7CisgICAgICAgIGlmICgqZmlsZVR5
cGUgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlJlZ3VsYXIpIHsKICAgICAgICAgICAgIGNyZWF0
ZUVycm9yKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQ2FjaGUgcGF0aCBgJUBgIGFscmVh
ZHkgZXhpc3RzIGFuZCBpcyBub3QgYSBmaWxlIiwgc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oc3lz
dGVtUGF0aCldLCBlcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
QEAgLTkwLDcgKzg5LDggQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29kZUNhY2hlUGF0aChO
U1VSTCogY2FjaGVQYXRoLCBOU0Vycm9yKiogZXJyb3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5KGRpcmVjdG9yeSkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZShkaXJlY3Rvcnkp
OworICAgIGlmICghZGlyZWN0b3J5VHlwZSB8fCAqZGlyZWN0b3J5VHlwZSAhPSBGaWxlU3lzdGVt
OjpGaWxlVHlwZTo6RGlyZWN0b3J5KSB7CiAgICAgICAgIGNyZWF0ZUVycm9yKFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiQ2FjaGUgZGlyZWN0b3J5IGAlQGAgaXMgbm90IGEgZGlyZWN0b3J5
IG9yIGRvZXMgbm90IGV4aXN0Iiwgc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oZGlyZWN0b3J5KV0s
IGVycm9yKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNhZTA1ZTcwMTVlNTYyZGRkNGQyNjNkYjEzZjA3
NDk3MzEwY2ZlMmMuLmIxMWUwOThjZTQ3N2Q2OWQ4NjliMmYxNWU3NTNjOTkzZTE4MDM3ZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTEyLDcgKzUxMiw2
IEBACiAJCUEzMEQ0MTJDMUYwREUwQkEwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMzBENDEyRDFGMERFMTNGMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMyRDhGQTQyMUZGRkFCNDAwNzgwNjYyIC8qIFRocmVhZGlu
Z1BPU0lYLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZGlu
Z1BPU0lYLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTMzMUQ5NTgyMUYyNDk3
ODAwOUYwMkFBIC8qIEZpbGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGaWxlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMzMUQ5
NTkyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MzMxRDk1QTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTMzMUQ5NUMyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtQ0YuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAzOSw3ICsxMDM4LDYgQEAKIAkJCQlBOEE0
NzJBMTE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgKi8sCiAJCQkJQThBNDcyQTIx
NTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLywKIAkJCQkwRjc5QzdDMzFFNzM1MTE4
MDBFQjM0RDEgLyogRmFzdFRMUy5oICovLAotCQkJCUEzMzFEOTU4MjFGMjQ5NzgwMDlGMDJBQSAv
KiBGaWxlTWV0YWRhdGEuaCAqLywKIAkJCQkwRjlEMzM1QjE2NURCQTczMDA1QUQzODcgLyogRmls
ZVByaW50U3RyZWFtLmNwcCAqLywKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmls
ZVByaW50U3RyZWFtLmggKi8sCiAJCQkJQTMzMUQ5NUEyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVT
eXN0ZW0uY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBiNDljMTM3M2ZlMjdlODRhOGRj
M2IyYmZlNDc1MzkyZWI1OTMzMWJiLi5lN2RiYzRmMDJmYTA5NmE2ODM5YmZmOWJkMzI1MjI4MDZk
NzBhMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNjgsNyArNjgsNiBAQCBzZXQoV1RGX1BV
QkxJQ19IRUFERVJTCiAgICAgRmFzdEJpdFZlY3Rvci5oCiAgICAgRmFzdE1hbGxvYy5oCiAgICAg
RmFzdFRMUy5oCi0gICAgRmlsZU1ldGFkYXRhLmgKICAgICBGaWxlUHJpbnRTdHJlYW0uaAogICAg
IEZpbGVTeXN0ZW0uaAogICAgIEZpeGVkVmVjdG9yLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0ZpbGVNZXRhZGF0YS5oIGIvU291cmNlL1dURi93dGYvRmlsZU1ldGFkYXRhLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzYTBhMmFhYjc1MzNiZDA3YjIwMDkxNDE1MWNkMmJh
NzFmNTU4NDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dURi93dGYvRmlsZU1ldGFkYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KLQotbmFtZXNwYWNl
IFdURiB7Ci0KLXN0cnVjdCBGaWxlTWV0YWRhdGEgewotICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKLQotICAgIC8vIFRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRoZSBm
aWxlLCBpbiBzZWNvbmRzLgotICAgIFdhbGxUaW1lIG1vZGlmaWNhdGlvblRpbWU7Ci0KLSAgICAv
LyBUaGUgbGVuZ3RoIG9mIHRoZSBmaWxlIGluIGJ5dGVzLgotICAgIGxvbmcgbG9uZyBsZW5ndGg7
Ci0KLSAgICBib29sIGlzSGlkZGVuOwotCi0gICAgZW51bSBjbGFzcyBUeXBlIHsgRmlsZSwgRGly
ZWN0b3J5LCBTeW1ib2xpY0xpbmsgfTsKLSAgICBUeXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXVEYKLQotdXNpbmcgV1RGOjpGaWxlTWV0YWRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCmlu
ZGV4IDIzYzgxZDY1Y2IyZGFiNmQ0MmE2MmQwNzU3ZDIzNzQ4OGQ3YzBkNjkuLmM1NWFhZWM3ZWY2
NjZlZGU0OWE4ZjUwZjAxNzM0OGUzYzA4YTAwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC0y
OCw3ICsyOCw2IEBACiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2luY2x1ZGUgPHd0
Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlTWV0
YWRhdGEuaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3Bl
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZEZpbGVzeXN0ZW0uaD4KQEAgLTEzOSwyMCArMTM4LDYgQEAg
c3RhdGljIFdhbGxUaW1lIHRvV2FsbFRpbWUoc3RkOjpmaWxlc3lzdGVtOjpmaWxlX3RpbWVfdHlw
ZSBmaWxlVGltZSkKICAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRvVGltZVQo
ZmlsZVRpbWUpKTsKIH0KIAotc3RhdGljIHN0ZDo6ZmlsZXN5c3RlbTo6cGF0aCByZXNvbHZlU3lt
bGlua3Moc3RkOjpmaWxlc3lzdGVtOjpwYXRoIHBhdGgsIHN0ZDo6ZXJyb3JfY29kZSYgZWMpCi17
Ci0jaWZkZWYgTUFYU1lNTElOS1MKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFN5
bWxpbmtEZXB0aCA9IE1BWFNZTUxJTktTOwotI2Vsc2UKLSAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIG1heFN5bWxpbmtEZXB0aCA9IDQwOwotI2VuZGlmCi0KLSAgICB1bnNpZ25lZCBjdXJy
ZW50RGVwdGggPSAwOwotICAgIHdoaWxlICgrK2N1cnJlbnREZXB0aCA8PSBtYXhTeW1saW5rRGVw
dGggJiYgIWVjICYmIHN0ZDo6ZmlsZXN5c3RlbTo6aXNfc3ltbGluayhwYXRoLCBlYykpCi0gICAg
ICAgIHBhdGggPSBzdGQ6OmZpbGVzeXN0ZW06OnJlYWRfc3ltbGluayhwYXRoLCBlYyk7Ci0gICAg
cmV0dXJuIHBhdGg7Ci19Ci0KIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcm
IGlucHV0U3RyaW5nKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0U3RyaW5nLmxlbmd0
aCgpOwpAQCAtNjA2LDE4ICs1OTEsNiBAQCBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoY29u
c3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBzaXplOwogfQogCi1ib29sIGlzRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBzdGQ6OmVycm9yX2NvZGUgZWM7Ci0gICAgcmV0
dXJuIHN0ZDo6ZmlsZXN5c3RlbTo6c3ltbGlua19zdGF0dXModG9TdGRGaWxlU3lzdGVtUGF0aChw
YXRoKSwgZWMpLnR5cGUoKSA9PSBzdGQ6OmZpbGVzeXN0ZW06OmZpbGVfdHlwZTo6ZGlyZWN0b3J5
OwotfQotCi1ib29sIGlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKLSAgICByZXR1cm4gc3RkOjpmaWxlc3lz
dGVtOjpzdGF0dXModG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpLnR5cGUoKSA9PSBzdGQ6
OmZpbGVzeXN0ZW06OmZpbGVfdHlwZTo6ZGlyZWN0b3J5OwotfQotCiBib29sIG1ha2VBbGxEaXJl
Y3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc3RkOjplcnJvcl9jb2RlIGVjOwpA
QCAtNjkzLDU2ICs2NjYsNDQgQEAgYm9vbCB1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZShjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuICFlYzsKIH0KIAotZW51bSBjbGFzcyBTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzIHsgTm8sIFllcyB9Owotc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRh
ZGF0YT4gZmlsZU1ldGFkYXRhUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJp
bmcmIHBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rcykKK2Jvb2wgaXNIaWRkZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBpZiAo
cGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBhdXRv
IGZzUGF0aCA9IHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCk7Ci0KLSAgICBzdGQ6OmVycm9yX2Nv
ZGUgZWM7Ci0gICAgaWYgKHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgPT0gU2hvdWxkRm9sbG93
U3ltYm9saWNMaW5rczo6WWVzICYmIHN0ZDo6ZmlsZXN5c3RlbTo6aXNfc3ltbGluayhmc1BhdGgs
IGVjKSkgewotICAgICAgICBmc1BhdGggPSByZXNvbHZlU3ltbGlua3MoZnNQYXRoLCBlYyk7Ci0g
ICAgICAgIGlmIChlYykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQot
Ci0gICAgZWMgPSB7IH07Ci0gICAgc3RkOjpmaWxlc3lzdGVtOjpkaXJlY3RvcnlfZW50cnkgZW50
cnkoZnNQYXRoLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotCi0gICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gdG9XYWxsVGltZShlbnRyeS5sYXN0X3dy
aXRlX3RpbWUoZWMpKTsKLQotICAgIC8vIE5vdGUgdGhhdCB0aGUgcmVzdWx0IG9mIGF0dGVtcHRp
bmcgdG8gZGV0ZXJtaW5lIHRoZSBzaXplIG9mIGEgZGlyZWN0b3J5IGlzIGltcGxlbWVudGF0aW9u
LWRlZmluZWQuCi0gICAgYXV0byBmaWxlU2l6ZSA9IGVudHJ5LmZpbGVfc2l6ZShlYyk7Ci0gICAg
aWYgKGVjKQotICAgICAgICBmaWxlU2l6ZSA9IDA7Ci0KICNpZiBPUyhVTklYKQorICAgIGF1dG8g
ZnNQYXRoID0gdG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKTsKICAgICBzdGQ6OmZpbGVzeXN0ZW06
OnBhdGg6OnN0cmluZ190eXBlIGZpbGVuYW1lID0gZnNQYXRoLmZpbGVuYW1lKCk7Ci0gICAgYm9v
bCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5lbXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKKyAg
ICByZXR1cm4gIWZpbGVuYW1lLmVtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4nOwogI2Vsc2UK
LSAgICBib29sIGlzSGlkZGVuID0gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFNKHBhdGgpOworICAg
IHJldHVybiBmYWxzZTsKICNlbmRpZgotICAgIEZpbGVNZXRhZGF0YTo6VHlwZSB0eXBlID0gRmls
ZU1ldGFkYXRhOjpUeXBlOjpGaWxlOwotICAgIGlmIChlbnRyeS5pc19zeW1saW5rKGVjKSkKLSAg
ICAgICAgdHlwZSA9IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOwotICAgIGVsc2Ug
aWYgKGVudHJ5LmlzX2RpcmVjdG9yeShlYykpCi0gICAgICAgIHR5cGUgPSBGaWxlTWV0YWRhdGE6
OlR5cGU6OkRpcmVjdG9yeTsKK30KIAotICAgIHJldHVybiBGaWxlTWV0YWRhdGEgeyBtb2RpZmlj
YXRpb25UaW1lLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGZpbGVTaXplKSwgaXNIaWRkZW4sIHR5
cGUgfTsKK2VudW0gY2xhc3MgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMgfTsK
K3N0YXRpYyBPcHRpb25hbDxGaWxlVHlwZT4gZmlsZVR5cGVQb3RlbnRpYWxseUZvbGxvd2luZ1N5
bUxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyBzaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQoreworICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKKyAgICBh
dXRvIHN0YXR1cyA9IHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgPT0gU2hvdWxkRm9sbG93U3lt
Ym9saWNMaW5rczo6WWVzID8gc3RkOjpmaWxlc3lzdGVtOjpzdGF0dXModG9TdGRGaWxlU3lzdGVt
UGF0aChwYXRoKSwgZWMpIDogc3RkOjpmaWxlc3lzdGVtOjpzeW1saW5rX3N0YXR1cyh0b1N0ZEZp
bGVTeXN0ZW1QYXRoKHBhdGgpLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHN3aXRjaCAoc3RhdHVzLnR5cGUoKSkgeworICAgIGNhc2Ugc3RkOjpm
aWxlc3lzdGVtOjpmaWxlX3R5cGU6OmRpcmVjdG9yeToKKyAgICAgICAgcmV0dXJuIEZpbGVUeXBl
OjpEaXJlY3Rvcnk7CisgICAgY2FzZSBzdGQ6OmZpbGVzeXN0ZW06OmZpbGVfdHlwZTo6c3ltbGlu
azoKKyAgICAgICAgcmV0dXJuIEZpbGVUeXBlOjpTeW1ib2xpY0xpbms7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBGaWxlVHlwZTo6UmVndWxhcjsKIH0K
IAotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRo
KQorT3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAg
ICByZXR1cm4gZmlsZU1ldGFkYXRhUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1saW5rcyhwYXRoLCBT
aG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObyk7CisgICAgcmV0dXJuIGZpbGVUeXBlUG90ZW50
aWFsbHlGb2xsb3dpbmdTeW1MaW5rcyhwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpO
byk7CiB9CiAKLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3lt
bGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQorT3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlRm9s
bG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiBmaWxlTWV0
YWRhdGFQb3RlbnRpYWxseUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgsIFNob3VsZEZvbGxvd1N5bWJv
bGljTGlua3M6Olllcyk7CisgICAgcmV0dXJuIGZpbGVUeXBlUG90ZW50aWFsbHlGb2xsb3dpbmdT
eW1MaW5rcyhwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMpOwogfQogCiBTdHJp
bmcgcGF0aEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCBj
N2JhMTkwMjM5MzdlODBjYTRmMzk0ODhjZWYwZDBlN2ExZjRiZjA4Li40ODFmYmIyNTI4ZjFkZmI1
N2VjYTgyNWU0MDdjZWI2MDMwNjU5ODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxl
U3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC01OCw4ICs1OCw2
IEBAIHR5cGVkZWYgc3RydWN0IF9HRmlsZUlPU3RyZWFtIEdGaWxlSU9TdHJlYW07CiAKIG5hbWVz
cGFjZSBXVEYgewogCi1zdHJ1Y3QgRmlsZU1ldGFkYXRhOwotCiBuYW1lc3BhY2UgRmlsZVN5c3Rl
bUltcGwgewogCiAvLyBQbGF0Zm9ybUZpbGVIYW5kbGUKQEAgLTExMSwxNSArMTA5LDEyIEBAIFdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0
cmluZyYgbmV3UGF0aCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDY0X3Q+IGZp
bGVTaXplKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPHVpbnQ2
NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmKTsgLy8gRm9sbG93cyBzeW1saW5rcy4KIFdURl9F
WFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoUGxhdGZvcm1GaWxlSGFu
ZGxlKTsKIFdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCB1cGRh
dGVGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpOyAvLyBTZXRzIG1vZGlm
aWNhdGlvbiB0aW1lIHRvIG5vdy4KIFdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxXYWxsVGlt
ZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKTsgLy8gTm90IGFsbCBwbGF0Zm9y
bXMgc3RvcmUgZmlsZSBjcmVhdGlvbiB0aW1lLgotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFs
PEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1XVEZfRVhQ
T1JUX1BSSVZBVEUgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdT
eW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0RpcmVj
dG9yeUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgaXNIaWRkZW5GaWxlKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGNvbXBvbmVudCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4m
IGNvbXBvbmVudHMpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBsYXN0Q29tcG9uZW50T2ZQ
YXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYgcGF0aCk7CkBAIC0xMzEsNiAr
MTI2LDEwIEBAIFdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgQ1N0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgY3JlYXRlU3lt
Ym9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xp
Y0xpbmtQYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5Wmlw
QXJjaGl2ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk7CiAKK2VudW0gY2xhc3MgRmlsZVR5cGUg
eyBSZWd1bGFyLCBEaXJlY3RvcnksIFN5bWJvbGljTGluayB9OworV1RGX0VYUE9SVF9QUklWQVRF
IE9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBPcHRpb25hbDxGaWxlVHlwZT4gZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhjb25z
dCBTdHJpbmcmKTsKKwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TWV0YWRhdGFVUkwoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciA9IHsgfSk7CiAKIGJvb2wgY2FuRXhjbHVkZUZyb21CYWNrdXAoKTsgLy8gUmV0dXJu
cyB0cnVlIGlmIGFueSBmaWxlIGNhbiBldmVyIGJlIGV4Y2x1ZGVkIGZyb20gYmFja3VwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCAwMjYxZDliMWMwZDRiNTVkODJj
MGJlNTM2ZmQwODE1Y2NhODYwMWY5Li5mMjAzOTJkODY3NTU4NjY0MTU3NTJmYmNmZWZhM2EwNzhi
MzVjYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMjksNyAr
MjksNiBAQAogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4K
ICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEu
aD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dMaWJVdGlsaXRp
ZXMuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgv
RmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCBhNjAwYmMyNjE5ODY5MGY4YWZkM2MyNjVjZjE1Y2Q2
YmRmYzVkNmVjLi4yNzQ0MzEzNjRjMmI0ZWFkMDA0NWM0ZjQ3ZjYzOGI1MWRlYzc0OTNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTQwLDcgKzQwLDYgQEAK
ICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3
dGYvRW51bVRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0
ZW1XaW4uY3BwCmluZGV4IDA1N2UxZWM1OTRiZDEwMjRlZjg5NmI5YTcxOGMyOTg5NzcwZDU1MDgu
LmZkMzM5YjRlNDkzMjQ4MWQ5YTQ0ZGEyOGQwMzdjYjU5NjJlMjE4MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93
aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlIDxzeXMvc3Rh
dC5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21OdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IDBiYTAxYjJmZWJkNzU2Y2Uy
Mzg3YjM3MGIyNGVjMmNhNjkzY2I3YzguLjk0NTY1NWI3YzQ5NzM2MmQyNTg2ZDY4YjE4MDEzZWYz
ODJkNDhkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9E
T01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RE9NRmlsZVN5c3RlbS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVt
RmlsZUVudHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1
ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEu
aD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KQEAgLTQzLDcgKzQyLDcgQEAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKERPTUZpbGVTeXN0ZW0pOwogCiBzdHJ1Y3QgTGlzdGVkQ2hp
bGQgewogICAgIFN0cmluZyBmaWxlbmFtZTsKLSAgICBGaWxlTWV0YWRhdGE6OlR5cGUgdHlwZTsK
KyAgICBGaWxlU3lzdGVtOjpGaWxlVHlwZSB0eXBlOwogCiAgICAgTGlzdGVkQ2hpbGQgaXNvbGF0
ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBmaWxlbmFtZS5pc29sYXRlZENvcHkoKSwgdHlwZSB9
OyB9CiB9OwpAQCAtNTEsMTcgKzUwLDIxIEBAIHN0cnVjdCBMaXN0ZWRDaGlsZCB7CiBzdGF0aWMg
RXhjZXB0aW9uT3I8VmVjdG9yPExpc3RlZENoaWxkPj4gbGlzdERpcmVjdG9yeVdpdGhNZXRhZGF0
YShjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnkoZnVsbFBhdGgpKQorICAgIGF1dG8g
ZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZShmdWxsUGF0aCk7CisgICAgaWYgKCFmaWxl
VHlwZSB8fCAqZmlsZVR5cGUgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJQYXRoIG5vIGxvbmdlciBl
eGlzdHMgb3IgaXMgbm8gbG9uZ2VyIGEgZGlyZWN0b3J5IiB9OwogCiAgICAgYXV0byBjaGlsZE5h
bWVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShmdWxsUGF0aCk7CiAgICAgVmVjdG9yPExp
c3RlZENoaWxkPiBsaXN0ZWRDaGlsZHJlbjsKICAgICBsaXN0ZWRDaGlsZHJlbi5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGNoaWxkTmFtZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGNoaWxkTmFt
ZSA6IGNoaWxkTmFtZXMpIHsKLSAgICAgICAgYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZp
bGVNZXRhZGF0YShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZnVsbFBhdGgs
IGNoaWxkTmFtZSkpOwotICAgICAgICBpZiAoIW1ldGFkYXRhIHx8IG1ldGFkYXRhLnZhbHVlKCku
aXNIaWRkZW4pCisgICAgICAgIGF1dG8gY2hpbGRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGZ1bGxQYXRoLCBjaGlsZE5hbWUpOworICAgICAgICBpZiAoRmlsZVN5
c3RlbTo6aXNIaWRkZW5GaWxlKGNoaWxkUGF0aCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgbGlzdGVkQ2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKExpc3RlZENoaWxkIHsgY2hpbGRO
YW1lLCBtZXRhZGF0YS52YWx1ZSgpLnR5cGUgfSk7CisgICAgICAgIGF1dG8gZmlsZVR5cGUgPSBG
aWxlU3lzdGVtOjpmaWxlVHlwZShjaGlsZFBhdGgpOworICAgICAgICBpZiAoIWZpbGVUeXBlKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hlY2tlZEFw
cGVuZChMaXN0ZWRDaGlsZCB7IGNoaWxkTmFtZSwgKmZpbGVUeXBlIH0pOwogICAgIH0KICAgICBy
ZXR1cm4gbGlzdGVkQ2hpbGRyZW47CiB9CkBAIC03NywxMCArODAsMTAgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+IHRvRmlsZVN5c3RlbUVudHJpZXMo
U2NyaXB0RXhlY3UKICAgICBmb3IgKGF1dG8mIGNoaWxkIDogbGlzdGVkQ2hpbGRyZW4ucmV0dXJu
VmFsdWUoKSkgewogICAgICAgICBTdHJpbmcgdmlydHVhbFBhdGggPSBwYXJlbnRWaXJ0dWFsUGF0
aCArICIvIiArIGNoaWxkLmZpbGVuYW1lOwogICAgICAgICBzd2l0Y2ggKGNoaWxkLnR5cGUpIHsK
LSAgICAgICAgY2FzZSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU6CisgICAgICAgIGNhc2UgRmls
ZVN5c3RlbTo6RmlsZVR5cGU6OlJlZ3VsYXI6CiAgICAgICAgICAgICBlbnRyaWVzLnVuY2hlY2tl
ZEFwcGVuZChGaWxlU3lzdGVtRmlsZUVudHJ5OjpjcmVhdGUoY29udGV4dCwgZmlsZVN5c3RlbSwg
dmlydHVhbFBhdGgpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZpbGVNZXRh
ZGF0YTo6VHlwZTo6RGlyZWN0b3J5OgorICAgICAgICBjYXNlIEZpbGVTeXN0ZW06OkZpbGVUeXBl
OjpEaXJlY3Rvcnk6CiAgICAgICAgICAgICBlbnRyaWVzLnVuY2hlY2tlZEFwcGVuZChGaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShjb250ZXh0LCBmaWxlU3lzdGVtLCB2aXJ0dWFsUGF0
aCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xNjYsMjggKzE2
OSwyNyBAQCBSZWY8RmlsZVN5c3RlbUVudHJ5PiBET01GaWxlU3lzdGVtOjpmaWxlQXNFbnRyeShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgIHJldHVybiBGaWxlU3lzdGVtRmls
ZUVudHJ5OjpjcmVhdGUoY29udGV4dCwgKnRoaXMsICIvIiArIG1fZmlsZS0+bmFtZSgpKTsKIH0K
IAotc3RhdGljIEV4Y2VwdGlvbk9yPFN0cmluZz4gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUo
Y29uc3QgU3RyaW5nJiBmdWxsUGF0aCwgU3RyaW5nJiYgdmlydHVhbFBhdGgsIEZpbGVNZXRhZGF0
YTo6VHlwZSBleHBlY3RlZFR5cGUpCitzdGF0aWMgT3B0aW9uYWw8RmlsZVN5c3RlbTo6RmlsZVR5
cGU+IGZpbGVUeXBlSWdub3JpbmdIaWRkZW5GaWxlcyhjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQor
eworICAgIGlmIChGaWxlU3lzdGVtOjppc0hpZGRlbkZpbGUoZnVsbFBhdGgpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlVHlwZShmdWxs
UGF0aCk7Cit9CisKK3N0YXRpYyBFeGNlcHRpb25PcjxTdHJpbmc+IHZhbGlkYXRlUGF0aElzRXhw
ZWN0ZWRUeXBlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFN0cmluZyYmIHZpcnR1YWxQYXRoLCBG
aWxlU3lzdGVtOjpGaWxlVHlwZSBleHBlY3RlZFR5cGUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAKLSAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRh
KGZ1bGxQYXRoKTsKLSAgICBpZiAoIW1ldGFkYXRhIHx8IG1ldGFkYXRhLnZhbHVlKCkuaXNIaWRk
ZW4pCisgICAgYXV0byBmaWxlVHlwZSA9IGZpbGVUeXBlSWdub3JpbmdIaWRkZW5GaWxlcyhmdWxs
UGF0aCk7CisgICAgaWYgKCFmaWxlVHlwZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dEZvdW5kRXJyb3IsICJQYXRoIGRvZXMgbm90IGV4aXN0Il9zIH07CiAKLSAgICBpZiAobWV0YWRh
dGEudmFsdWUoKS50eXBlICE9IGV4cGVjdGVkVHlwZSkKKyAgICBpZiAoKmZpbGVUeXBlICE9IGV4
cGVjdGVkVHlwZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVNaXNtYXRjaEVycm9y
LCAiRW50cnkgYXQgcGF0aCBkb2VzIG5vdCBoYXZlIGV4cGVjdGVkIHR5cGUiIH07CiAKICAgICBy
ZXR1cm4gV1RGTW92ZSh2aXJ0dWFsUGF0aCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxGaWxlTWV0
YWRhdGE6OlR5cGU+IGZpbGVUeXBlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi17Ci0gICAgYXV0
byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShmdWxsUGF0aCk7Ci0gICAgaWYg
KCFtZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlzSGlkZGVuKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotICAgIHJldHVybiBtZXRhZGF0YS52YWx1ZSgpLnR5cGU7Ci19Ci0KIC8v
IGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkvI3Jlc29sdmUtYS1yZWxhdGl2ZS1w
YXRoCiBzdGF0aWMgU3RyaW5nIHJlc29sdmVSZWxhdGl2ZVZpcnR1YWxQYXRoKFN0cmluZ1ZpZXcg
YmFzZVZpcnR1YWxQYXRoLCBTdHJpbmdWaWV3IHJlbGF0aXZlVmlydHVhbFBhdGgpCiB7CkBAIC0y
NzEsNyArMjczLDcgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbUVudHJ5JgogICAgIEFTU0VSVCh2aXJ0dWFs
UGF0aFswXSA9PSAnLycpOwogICAgIGF1dG8gZnVsbFBhdGggPSBldmFsdWF0ZVBhdGgodmlydHVh
bFBhdGgpOwogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjb250ZXh0ID0gbWFrZVJlZihjb250ZXh0KSwgZnVsbFBhdGggPSBjcm9zc1Ro
cmVhZENvcHkoZnVsbFBhdGgpLCB2aXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weSh2aXJ0dWFs
UGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IHZhbGlkYXRl
UGF0aElzRXhwZWN0ZWRUeXBlKGZ1bGxQYXRoLCBXVEZNb3ZlKHZpcnR1YWxQYXRoKSwgRmlsZU1l
dGFkYXRhOjpUeXBlOjpEaXJlY3RvcnkpOworICAgICAgICBhdXRvIHZhbGlkYXRlZFZpcnR1YWxQ
YXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVsbFBhdGgsIFdURk1vdmUodmlydHVh
bFBhdGgpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KTsKICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRl
eHQgPSBXVEZNb3ZlKGNvbnRleHQpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFk
Q29weSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUo
Y29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICh2YWxpZGF0
ZWRWaXJ0dWFsUGF0aC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
Q2FsbGJhY2sodmFsaWRhdGVkVmlydHVhbFBhdGgucmVsZWFzZUV4Y2VwdGlvbigpKTsKQEAgLTMx
MiwxNyArMzE0LDE3IEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0RW50cnkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbURpcmVjdG9yCiAgICAgfQogCiAgICAgbV93
b3JrUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbnRl
eHQgPSBtYWtlUmVmKGNvbnRleHQpLCBmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0
aCksIHJlc29sdmVkVmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkocmVzb2x2ZWRWaXJ0dWFs
UGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBlbnRyeVR5cGUgPSBmaWxlVHlwZShmdWxsUGF0aCk7
CisgICAgICAgIGF1dG8gZW50cnlUeXBlID0gZmlsZVR5cGVJZ25vcmluZ0hpZGRlbkZpbGVzKGZ1
bGxQYXRoKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCByZXNvbHZlZFZp
cnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHJlc29sdmVkVmlydHVhbFBhdGgpLCBlbnRyeVR5
cGUsIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGlmICghZW50cnlUeXBlKSB7CiAgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkNhbGxiYWNrKEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJDYW5ub3QgZmlu
ZCBlbnRyeSBhdCBnaXZlbiBwYXRoIl9zIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoZW50cnlUeXBlLnZhbHVlKCkpIHsKLSAg
ICAgICAgICAgIGNhc2UgRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk6CisgICAgICAgICAg
ICBjYXNlIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3Rvcnk6CiAgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkNhbGxiYWNrKFJlZjxGaWxlU3lzdGVtRW50cnk+IHsgRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5OjpjcmVhdGUoY29udGV4dCwgcHJvdGVjdGVkVGhpcy5nZXQoKSwgcmVzb2x2ZWRW
aXJ0dWFsUGF0aCkgfSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZToKKyAgICAgICAgICAgIGNhc2UgRmlsZVN5c3RlbTo6
RmlsZVR5cGU6OlJlZ3VsYXI6CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKFJl
ZjxGaWxlU3lzdGVtRW50cnk+IHsgRmlsZVN5c3RlbUZpbGVFbnRyeTo6Y3JlYXRlKGNvbnRleHQs
IHByb3RlY3RlZFRoaXMuZ2V0KCksIHJlc29sdmVkVmlydHVhbFBhdGgpIH0pOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKQEAgLTMzOCw3ICszNDAsNyBAQCB2
b2lkIERPTUZpbGVTeXN0ZW06OmdldEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgRmlsZVN5c3RlbUZpbGVFbnRyeQogICAgIGF1dG8gdmlydHVhbFBhdGggPSBmaWxlRW50cnku
dmlydHVhbFBhdGgoKTsKICAgICBhdXRvIGZ1bGxQYXRoID0gZXZhbHVhdGVQYXRoKHZpcnR1YWxQ
YXRoKTsKICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2Z1bGxQYXRoID0gY3Jvc3NUaHJlYWRD
b3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmlydHVhbFBhdGgp
LCBjb250ZXh0ID0gbWFrZVJlZihjb250ZXh0KSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92
ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIHZhbGlkYXRl
ZFZpcnR1YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVsbFBhdGgsIFdURk1v
dmUodmlydHVhbFBhdGgpLCBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOworICAgICAgICBhdXRv
IHZhbGlkYXRlZFZpcnR1YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVsbFBh
dGgsIFdURk1vdmUodmlydHVhbFBhdGgpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVndWxhcik7
CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2Z1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1
bGxQYXRoKSwgdmFsaWRhdGVkVmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmFsaWRhdGVk
VmlydHVhbFBhdGgpLCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgY29tcGxldGlvbkNhbGxi
YWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKHZhbGlkYXRlZFZpcnR1YWxQYXRoLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25DYWxsYmFjayh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5yZWxlYXNlRXhjZXB0
aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbQppbmRleCAyYzY3M2Q2NjE3M2Y5Yzc2N2MzZGQxOTRkYjEzY2MwYjhj
YzE4ODRmLi5hYjg2OWYzN2NkYjdlMDgzMzllMmEwY2JjMmQ1ZTcwMWI4ZTQxMjRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2Nv
YS5tbQpAQCAtNzEyLDcgKzcxMiw4IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1l
bnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICAgICAg
cmV0dXJuIGF0dGFjaG1lbnQ7CiAgICAgfQogCi0gICAgYm9vbCBpc0RpcmVjdG9yeSA9IEZpbGVT
eXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3MocGF0aCk7CisgICAgYXV0byBmaWxl
VHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MocGF0aCk7CisgICAg
Ym9vbCBpc0RpcmVjdG9yeSA9IGZpbGVUeXBlICYmICpmaWxlVHlwZSA9PSBGaWxlU3lzdGVtOjpG
aWxlVHlwZTo6RGlyZWN0b3J5OwogICAgIFN0cmluZyBjb250ZW50VHlwZSA9IHR5cGVGb3JBdHRh
Y2htZW50RWxlbWVudChleHBsaWNpdENvbnRlbnRUeXBlKTsKICAgICBpZiAoY29udGVudFR5cGUu
aXNFbXB0eSgpKSB7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5jcHAKaW5kZXggMjNhMjI5NjFjMWRkZTk2N2JhNGUzNTQyYzNmZmJkY2ZhYzY4
NjEwNy4uMTY3ZmZlZWI0OTVjZTcyNjZlODMzYmU5MzhmY2MyOWM1ZmU2NzAxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGUuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3
dGYvRGF0ZU1hdGguaD4KLSNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTQ3LDggKzE0NiwxMCBAQCBTdHJpbmcg
RmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogYm9vbCBGaWxl
Ojppc0RpcmVjdG9yeSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2lzRGlyZWN0b3J5KQotICAgICAg
ICBtX2lzRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xsb3dpbmdTeW1saW5r
cyhtX3BhdGgpOworICAgIGlmICghbV9pc0RpcmVjdG9yeSkgeworICAgICAgICBhdXRvIGZpbGVU
eXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhtX3BhdGgpOworICAg
ICAgICBtX2lzRGlyZWN0b3J5ID0gZmlsZVR5cGUgJiYgKmZpbGVUeXBlID09IEZpbGVTeXN0ZW06
OkZpbGVUeXBlOjpEaXJlY3Rvcnk7CisgICAgfQogICAgIHJldHVybiAqbV9pc0RpcmVjdG9yeTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENy
ZWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3Iu
Y3BwCmluZGV4IDE4N2VkZTMzOTM4ZjNlNGFiMzc2YzhjNzQzZGE0Y2NhMDc1MTBhYjkuLjNkZWY3
NzJiMDA3ZTQ2Y2NkOGU4MmUxNmUwMzk0Yjg5MjM4ZGRiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKQEAgLTMwLDcgKzMwLDYgQEAK
ICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCiAjaW5jbHVk
ZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+Ci0jaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5o
PgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTU2LDE3ICs1NSwxNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmREaXJlY3RvcnlGaWxlcyhjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZQogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogICAgIGZvciAoYXV0byYgY2hpbGROYW1lIDogRmlsZVN5c3RlbTo6bGlz
dERpcmVjdG9yeShkaXJlY3RvcnkpKSB7CiAgICAgICAgIGF1dG8gY2hpbGRQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgY2hpbGROYW1lKTsKLSAg
ICAgICAgYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShjaGlsZFBhdGgp
OwotICAgICAgICBpZiAoIW1ldGFkYXRhKQorICAgICAgICBpZiAoRmlsZVN5c3RlbTo6aXNIaWRk
ZW5GaWxlKGNoaWxkUGF0aCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAo
bWV0YWRhdGEudmFsdWUoKS5pc0hpZGRlbikKKyAgICAgICAgYXV0byBmaWxlVHlwZSA9IEZpbGVT
eXN0ZW06OmZpbGVUeXBlKGNoaWxkUGF0aCk7CisgICAgICAgIGlmICghZmlsZVR5cGUpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBTdHJpbmcgY2hpbGRSZWxhdGl2ZVBhdGggPSBy
ZWxhdGl2ZVBhdGggKyAiLyIgKyBjaGlsZE5hbWU7Ci0gICAgICAgIGlmIChtZXRhZGF0YS52YWx1
ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3RvcnkpCisgICAgICAgIGlmICgq
ZmlsZVR5cGUgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAg
IGFwcGVuZERpcmVjdG9yeUZpbGVzKGNoaWxkUGF0aCwgY2hpbGRSZWxhdGl2ZVBhdGgsIGZpbGVz
KTsKLSAgICAgICAgZWxzZSBpZiAobWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0
YTo6VHlwZTo6RmlsZSkKKyAgICAgICAgZWxzZSBpZiAoKmZpbGVUeXBlID09IEZpbGVTeXN0ZW06
OkZpbGVUeXBlOjpSZWd1bGFyKQogICAgICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVJbmZvcm1h
dGlvbiB7IGNoaWxkUGF0aCwgY2hpbGRSZWxhdGl2ZVBhdGgsIHsgfSB9KTsKICAgICB9CiB9CkBA
IC03Niw3ICs3NSwxMCBAQCBzdGF0aWMgVmVjdG9yPEZpbGVJbmZvcm1hdGlvbj4gZ2F0aGVyRmls
ZUluZm9ybWF0aW9uKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbAogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogICAgIFZlY3RvcjxGaWxlSW5mb3JtYXRpb24+IGZpbGVzOwogICAgIGZv
ciAoYXV0byYgaW5mbyA6IHBhdGhzKSB7Ci0gICAgICAgIGlmIChGaWxlU3lzdGVtOjppc0RpcmVj
dG9yeShpbmZvLnBhdGgpKQorICAgICAgICBhdXRvIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6Zmls
ZVR5cGUoaW5mby5wYXRoKTsKKyAgICAgICAgaWYgKCFmaWxlVHlwZSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBpZiAoZmlsZVR5cGUgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRp
cmVjdG9yeSkKICAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8ucGF0aCwgRmls
ZVN5c3RlbTo6cGF0aEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVzKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVJbmZvcm1hdGlvbiB7IGluZm8ucGF0aCwgeyB9
LCBpbmZvLmRpc3BsYXlOYW1lIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCBhNWI3
OTZlMGZiNDQ4NTJhNzI0OTFjZDY4YjYwY2Y3OWRhYTg3YTg5Li5iZWM0N2ExZTFiMzgyYzdkZDEw
NjQxNDU5ZTViNTZiZjRiOTE1OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzk4
LDEwICszOTgsMTEgQEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHN0b3IKIAogICAgIGF1dG8gc3RvcmFn
ZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVj
dG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKIAotICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhzdG9yYWdlRGlyZWN0b3J5KSkgeworICAgIGF1dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVt
OjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHN0b3JhZ2VEaXJlY3RvcnkpOworICAgIGlmICgh
ZmlsZVR5cGUpIHsKICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMo
c3RvcmFnZURpcmVjdG9yeSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNlIGlmICgh
RmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xsb3dpbmdTeW1saW5rcyhzdG9yYWdlRGlyZWN0b3J5
KSkgeworICAgIH0gZWxzZSBpZiAoKmZpbGVUeXBlICE9IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpE
aXJlY3RvcnkpIHsKICAgICAgICAgYXV0byB0ZW1wRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3Jl
YXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiTWVkaWFLZXlzIik7CiAgICAgICAgIGlmICghdGVtcERp
cmVjdG9yeSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4
IDhhMzI5ODI2YzI2MmFhMzI4OGY3MWIwNGMyZWY5ODVlOTg3OWVjNzAuLmNjZTY5MzNiNTc5ZTZm
NTRlNWEzYmQwZDU4ZTNiMjE3ZjRmMDdkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
MzM2LDE1ICszMzYsMTQgQEAgc3RhdGljIEFWQXNzZXRDYWNoZSAqZW5zdXJlQXNzZXRDYWNoZUV4
aXN0c0ZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8gZmlsZUV4aXN0c0F0UGF0aCA9IEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMocGF0aCk7Ci0KLSAgICBpZiAoZmlsZUV4aXN0c0F0UGF0aCAmJiAh
RmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xsb3dpbmdTeW1saW5rcyhwYXRoKSkgeworICAgIGF1
dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgp
OworICAgIGlmIChmaWxlVHlwZSAmJiAqZmlsZVR5cGUgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6
OkRpcmVjdG9yeSkgewogICAgICAgICAvLyBOb24tZGlyZWN0b3J5IGZpbGUgYWxyZWFkeSBleGlz
dHMgYXQgdGhlIHBhdGggbG9jYXRpb247IGJhaWwuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIAotICAgIGlmICghZmlsZUV4aXN0c0F0
UGF0aCAmJiAhRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgpKSB7CisgICAgaWYg
KCFmaWxlVHlwZSAmJiAhRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgpKSB7CiAg
ICAgICAgIC8vIENvdWxkIG5vdCBjcmVhdGUgYSBkaXJlY3RvcnkgYXQgdGhlIHNwZWNpZmllZCBs
b2NhdGlvbjsgYmFpbC4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKaW5kZXggZGZiNGI1ODRhOGE4ZTIzNDY3Yjg0M2E5
NWEzM2Y3ZDUxNzJjOTg0Ny4uZjQxNzM3YWM4NGQ4MjVjMDYwZTQyMWVjY2I4MjVmMDI2MDQxNmY3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZp
bGVSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkJsb2JE
YXRhRmlsZVJlZmVyZW5jZS5oIgogCiAjaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgPHd0Zi9G
aWxlTWV0YWRhdGEuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC04OCwyNSArODcsMjMgQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OnN0YXJ0VHJhY2tpbmdNb2RpZmljYXRpb25zKCkKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IFNv
bWUgcGxhdGZvcm1zIHByb3ZpZGUgYmV0dGVyIHdheXMgdG8gbGlzdGVuIGZvciBmaWxlIHN5c3Rl
bSBvYmplY3QgY2hhbmdlcywgY29uc2lkZXIgdXNpbmcgdGhlc2UuCi0gICAgYXV0byBtZXRhZGF0
YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1fcGF0aCk7Ci0g
ICAgaWYgKCFtZXRhZGF0YSkKKyAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBGaWxlU3lzdGVt
OjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtX3BhdGgpOworICAgIGlmICghbW9kaWZpY2F0aW9u
VGltZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUg
PSBtZXRhZGF0YS52YWx1ZSgpLm1vZGlmaWNhdGlvblRpbWU7CisgICAgbV9leHBlY3RlZE1vZGlm
aWNhdGlvblRpbWUgPSAqbW9kaWZpY2F0aW9uVGltZTsKIAogI2lmIEVOQUJMRShGSUxFX1JFUExB
Q0VNRU5UKQogICAgIGlmIChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQpCiAgICAgICAg
IHJldHVybjsKICNlbmRpZgogCi0gICAgLy8gVGhpcyBpcyBhIHJlZ2lzdGVyZWQgYmxvYiB3aXRo
IGEgcmVwbGFjZW1lbnQgZmlsZS4gR2V0IHRoZSBNZXRhZGF0YSBvZiB0aGUgcmVwbGFjZW1lbnQg
ZmlsZS4KLSAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1l
dGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MobV9yZXBs
YWNlbWVudFBhdGgpOwotICAgICAgICBpZiAoIW1ldGFkYXRhKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICAvLyBUaGlzIGlzIGEgcmVnaXN0ZXJlZCBibG9iIHdpdGggYSByZXBsYWNl
bWVudCBmaWxlLiBHZXQgdGhlIHNpemUgb2YgdGhlIHJlcGxhY2VtZW50IGZpbGUuCisgICAgYXV0
byBmaWxlU2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKG1fcmVwbGFjZW1lbnRQYXRoLmlzTnVs
bCgpID8gbV9wYXRoIDogbV9yZXBsYWNlbWVudFBhdGgpOworICAgIGlmICghZmlsZVNpemUpCisg
ICAgICAgIHJldHVybjsKIAotICAgIG1fc2l6ZSA9IG1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoOwor
ICAgIG1fc2l6ZSA9ICpmaWxlU2l6ZTsKIH0KIAogdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OnByZXBhcmVGb3JGaWxlQWNjZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDY3ZWQyYTRiNWM5NjA5YWY4YmMw
NjdmZGQyY2RhMTljOWE0ODdkZDUuLmViMmViZTYzNDhmZThjYjUwZmZhOTlhMGQ5NmFkZDZjYWYz
NzI4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVnaXN0cnlJbXBsLmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVx
dWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KLSNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcAppbmRleCA3MDJkYmM5ZTU0M2ZjOGZiMWZkNTljNjdhNzEyYjc2MGQ0
MmRjZTUxLi43YzViZmJjYWFmYzA1ZTBhYTUyZGZjMTNjZGIxYmVjNDE5MzkwOTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMzU0LDcgKzM1
NCw4IEBAIEZvcm1EYXRhRm9yVXBsb2FkIEZvcm1EYXRhOjpwcmVwYXJlRm9yVXBsb2FkKCkKICAg
ICAgICAgYXV0byogZmlsZURhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29k
ZWRGaWxlRGF0YT4oZWxlbWVudC5kYXRhKTsKICAgICAgICAgaWYgKCFmaWxlRGF0YSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9s
bG93aW5nU3ltbGlua3MoZmlsZURhdGEtPmZpbGVuYW1lKSkKKyAgICAgICAgYXV0byBmaWxlVHlw
ZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MoZmlsZURhdGEtPmZpbGVu
YW1lKTsKKyAgICAgICAgaWYgKCFmaWxlVHlwZSB8fCAqZmlsZVR5cGUgIT0gRmlsZVN5c3RlbTo6
RmlsZVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAo
ZmlsZURhdGEtPmZpbGVTdGFydCB8fCBmaWxlRGF0YS0+ZmlsZUxlbmd0aCAhPSBCbG9iRGF0YUl0
ZW06OnRvRW5kT2ZGaWxlKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZl
cmVuY2VNYWMubW0KaW5kZXggNWVjNzc3YTg2OTkwNjcxMThjYmNkNTUyOGU4ZjRmZmU5MmE0NDg2
Yi4uM2JmNjQzNDlhNTU0ZDFjYzIyZjI5Nzk1YjNiODFjODNiZDEzODk2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRh
RmlsZVJlZmVyZW5jZU1hYy5tbQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKEZJTEVf
UkVQTEFDRU1FTlQpCiAKLSNpbXBvcnQgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbXBvcnQgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ3LDgg
KzQ2LDggQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmdlbmVyYXRlUmVwbGFjZW1lbnRG
aWxlKCkKIAogICAgIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCA9IGZhbHNlOwogICAg
IGlmICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWV0
YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhtX3JlcGxh
Y2VtZW50UGF0aCkpCi0gICAgICAgICAgICBtX3NpemUgPSBtZXRhZGF0YS52YWx1ZSgpLmxlbmd0
aDsKKyAgICAgICAgaWYgKGF1dG8gZmlsZVNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShtX3Jl
cGxhY2VtZW50UGF0aCkpCisgICAgICAgICAgICBtX3NpemUgPSAqZmlsZVNpemU7CiAgICAgfQog
CiAgICAgcmV2b2tlRmlsZUFjY2VzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IGI0Zjg5MDdi
YmEwYjlkYjlhYjkwY2IyZjdhNDFmYmE3ZmIxNTcwZTUuLmM5ZWRjZDNkYWZjMzU4M2M2ZjI3ODk1
NmQxMzY1ZTQ1NTVhZTllZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTIwNyw3ICsyMDcsOCBA
QCBzdGF0aWMgdWludDY0X3QgZ2V0RGlyZWN0b3J5U2l6ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9y
eVBhdGgpCiAgICAgcGF0aHMuYXBwZW5kKGRpcmVjdG9yeVBhdGgpOwogICAgIHdoaWxlICghcGF0
aHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IHBhdGhzLnRha2VGaXJzdCgpOwot
ICAgICAgICBpZiAoRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnkocGF0aCkpIHsKKyAgICAgICAgYXV0
byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHBhdGgpOworICAgICAgICBpZiAoZmls
ZVR5cGUgJiYgKmZpbGVUeXBlID09IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpIHsK
ICAgICAgICAgICAgIGF1dG8gZmlsZU5hbWVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShw
YXRoKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBmaWxlTmFtZXMpIHsKICAg
ICAgICAgICAgICAgICAvLyBGaWxlcyBpbiAvQmxvYnMgZGlyZWN0b3J5IGFyZSBoYXJkIGxpbmsu
CkBAIC02MTMsNyArNjE0LDggQEAgdm9pZCBFbmdpbmU6OmdldERpcmVjdG9yaWVzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4mJiBjb20KICAgICAgICAgVmVj
dG9yPFN0cmluZz4gZm9sZGVyUGF0aHM7CiAgICAgICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgpKSB7CiAgICAgICAgICAgICBhdXRvIGZpbGVQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1l
KTsKLSAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjppc0RpcmVjdG9yeShmaWxlUGF0aCkpCisg
ICAgICAgICAgICBhdXRvIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUoZmlsZVBhdGgp
OworICAgICAgICAgICAgaWYgKGZpbGVUeXBlICYmICpmaWxlVHlwZSA9PSBGaWxlU3lzdGVtOjpG
aWxlVHlwZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgICAgIGZvbGRlclBhdGhzLmFwcGVuZChm
aWxlUGF0aC5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgIH0KIApAQCAtNzAxLDcgKzcwMyw4IEBA
IHZvaWQgRW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlCiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2Jh
bFNpemVGaWxlTG9jayk7CiAgICAgICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVt
OjpsaXN0RGlyZWN0b3J5KHBhdGgpKSB7CiAgICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lKTsKLSAgICAg
ICAgICAgIGlmIChGaWxlU3lzdGVtOjppc0RpcmVjdG9yeShmaWxlUGF0aCkpCisgICAgICAgICAg
ICBhdXRvIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUoZmlsZVBhdGgpOworICAgICAg
ICAgICAgaWYgKGZpbGVUeXBlICYmICpmaWxlVHlwZSA9PSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6
RGlyZWN0b3J5KQogICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGly
ZWN0b3J5KGZpbGVQYXRoKTsKICAgICAgICAgfQogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5j
cHAKaW5kZXggOWMxNzQ1OTM2MzcxNDE3MGJlOWUyZWEzZTY3MmU3ZTEwNWFhOTA0ZS4uMTUzYzYw
ODc5MGY4MjI3NTY0ZTkwMThkMjRkYzQ5NmI4NjY5YjljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0
ZW0uY3BwCkBAIC01OCw3ICs1OCw4IEBAIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBECiAgICAgYXV0
byBlbnRyaWVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoKTsKICAgICBmb3IgKGF1
dG8mIGVudHJ5IDogZW50cmllcykgewogICAgICAgICBhdXRvIGVudHJ5UGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBlbnRyeSk7Ci0gICAgICAgIGF1dG8g
dHlwZSA9IEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5KGVudHJ5UGF0aCkgPyBEaXJlY3RvcnlFbnRy
eVR5cGU6OkRpcmVjdG9yeSA6IERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZTsKKyAgICAgICAgYXV0
byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKGVudHJ5UGF0aCk7CisgICAgICAgIGF1
dG8gdHlwZSA9IChmaWxlVHlwZSAmJiAqZmlsZVR5cGUgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6
OkRpcmVjdG9yeSkgPyBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeSA6IERpcmVjdG9yeUVu
dHJ5VHlwZTo6RmlsZTsKICAgICAgICAgZnVuY3Rpb24oZW50cnksIHR5cGUpOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KaW5k
ZXggZDU0NTZjZGIxNDNlZGNkOGEzYjcwYmU5ZjQxOTRjNGY0OGI2ODIwNi4uZmMzZGY5M2FlNjI4
NDk4ZGNlODIxMWRmYzE5NzFmNWRmMzQ5Yjg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KQEAgLTMzMSw5ICszMzEsMTAgQEAgc3RhdGlj
IFN0cmluZyBzYW5kYm94RmlsZVBhdGgoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlQYXRoLCBjb25z
dCBDU3RyaW5nJiBoZWFkZXIKIAogc3RhdGljIGJvb2wgZW5zdXJlU2FuZGJveENhY2hlRGlyZWN0
b3J5KGNvbnN0IFNhbmRib3hJbmZvJiBpbmZvKQogewotICAgIGlmICghRmlsZVN5c3RlbTo6aXNE
aXJlY3RvcnlGb2xsb3dpbmdTeW1saW5rcyhpbmZvLnBhcmVudERpcmVjdG9yeVBhdGgpKSB7Cisg
ICAgYXV0byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3Mo
aW5mby5wYXJlbnREaXJlY3RvcnlQYXRoKTsKKyAgICBpZiAoIWZpbGVUeXBlIHx8ICpmaWxlVHlw
ZSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KSB7CiAgICAgICAgIEZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhpbmZvLnBhcmVudERpcmVjdG9yeVBhdGgpOwotICAgICAg
ICBpZiAoIUZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3MoaW5mby5wYXJl
bnREaXJlY3RvcnlQYXRoKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVUeXBlRm9s
bG93aW5nU3ltbGlua3MoaW5mby5wYXJlbnREaXJlY3RvcnlQYXRoKSkgewogICAgICAgICAgICAg
V1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IGNyZWF0ZSBzYW5kYm94IGRpcmVjdG9yeVxuIiwg
Z2V0cHJvZ25hbWUoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAg
LTM2Myw4ICszNjQsOCBAQCBzdGF0aWMgYm9vbCBlbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3Rvcnko
Y29uc3QgU2FuZGJveEluZm8mIGluZm8pCiAgICAgICAgIGlmICghcm9vdGxlc3NfY2hlY2tfZGF0
YXZhdWx0X2ZsYWcoZGlyZWN0b3J5UGF0aC5kYXRhKCksIHN0b3JhZ2VDbGFzcykpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBib29sIGlzRGlyZWN0b3J5ID0gRmlsZVN5c3Rl
bTo6aXNEaXJlY3RvcnkoaW5mby5kaXJlY3RvcnlQYXRoKTsKLSAgICAgICAgaWYgKGlzRGlyZWN0
b3J5KSB7CisgICAgICAgIGF1dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZShpbmZv
LmRpcmVjdG9yeVBhdGgpOworICAgICAgICBpZiAoZmlsZVR5cGUgJiYgKmZpbGVUeXBlID09IEZp
bGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpIHsKICAgICAgICAgICAgIGlmICghRmlsZVN5
c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoaW5mby5kaXJlY3RvcnlQYXRoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNzksMTQgKzM4
MCwxNiBAQCBzdGF0aWMgYm9vbCBlbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3RvcnkoY29uc3QgU2Fu
ZGJveEluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAjZWxzZQotICAg
IGJvb2wgaGFzU2FuZGJveERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93
aW5nU3ltbGlua3MoaW5mby5kaXJlY3RvcnlQYXRoKTsKKyAgICBhdXRvIGZpbGVUeXBlID0gRmls
ZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhpbmZvLmRpcmVjdG9yeVBhdGgpOwor
ICAgIGJvb2wgaGFzU2FuZGJveERpcmVjdG9yeSA9IGZpbGVUeXBlICYmICpmaWxlVHlwZSA9PSBG
aWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5OwogICAgIGlmICghaGFzU2FuZGJveERpcmVj
dG9yeSkgewogICAgICAgICBpZiAoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGluZm8u
ZGlyZWN0b3J5UGF0aCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChGaWxlU3lzdGVtOjppc0RpcmVj
dG9yeUZvbGxvd2luZ1N5bWxpbmtzKGluZm8uZGlyZWN0b3J5UGF0aCkpOworICAgICAgICAgICAg
QVNTRVJUKEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MoaW5mby5kaXJlY3Rv
cnlQYXRoKS52YWx1ZU9yKEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKSA9PSBGaWxlU3lz
dGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KTsKICAgICAgICAgICAgIGhhc1NhbmRib3hEaXJlY3Rv
cnkgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gV2UgbWF5IGhhdmUg
cmFjZWQgd2l0aCBzb21lb25lIGVsc2UgbWFraW5nIGl0LiBUaGF0J3Mgb2suCi0gICAgICAgICAg
ICBoYXNTYW5kYm94RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xsb3dpbmdT
eW1saW5rcyhpbmZvLmRpcmVjdG9yeVBhdGgpOworICAgICAgICAgICAgYXV0byBmaWxlVHlwZSA9
IEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MoaW5mby5kaXJlY3RvcnlQYXRo
KTsKKyAgICAgICAgICAgIGhhc1NhbmRib3hEaXJlY3RvcnkgPSBmaWxlVHlwZSAmJiAqZmlsZVR5
cGUgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeTsKICAgICAgICAgfQogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW0KaW5kZXggODJkMjQ5ODY5ZTA1ZTQwNmY2MDAyNDFiOTIwZjA2YjkwODUzZjMwZC4u
NGJiZDA0MGVmNmE4MDU3MTYyM2ZmNWNmMWEyZDkzY2EzYzNjNjI5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0y
MTcsNyArMjE3LDcgQEAgc3RhdGljIGJvb2wgaXNJbnRlcm5hbEluc3RhbGwoKQogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgaXNJbnRlcm5hbCA9IE1HR2V0Qm9vbEFu
c3dlcihrTUdRQXBwbGVJbnRlcm5hbEluc3RhbGxDYXBhYmlsaXR5KTsKICNlbHNlCi0gICAgc3Rh
dGljIGJvb2wgaXNJbnRlcm5hbCA9IEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5KCIvQXBwbGVJbnRl
cm5hbCIpOworICAgIHN0YXRpYyBib29sIGlzSW50ZXJuYWwgPSBGaWxlU3lzdGVtOjpmaWxlVHlw
ZSgiL0FwcGxlSW50ZXJuYWwiKS52YWx1ZU9yKEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFy
KSA9PSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5OwogI2VuZGlmCiAgICAgcmV0dXJu
IGlzSW50ZXJuYWw7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggZGU0MDhlZWFhZmZiYTBiYjE0MTM5NjY3NDAyMDg0YTdiYmI5MDc4My4uOTIz
ZjhiNjY5NjdlMzBhZDRiZDhkNTEwMzE1MDc3ZmM2ZWY3MDU4ZSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA1
LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBGaWxl
U3lzdGVtOjpmaWxlTWV0YWRhdGEoKSAvIGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTgyMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0
aGUgRmlsZVN5c3RlbSBBUEkgdGVzdHMgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1RfRik6CisKIDIwMjEtMDUtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBJbnRyb2R1Y2UgRmlsZVN5c3RlbTo6dXBkYXRlRmlsZU1vZGlmaWNhdGlvblRp
bWUoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3Rl
bS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRl
eCA0N2ZhNjU5OWE5ZmQ3MThlZDYwYTU2Njg4NjUwMTM5ZDBmZjZkODZkLi5mNDQ2NDI0Yjg2MjJk
MjAxOWI0MGMzMDQ0YzUyZTM0MGU3NGZkMzA4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiVGVz
dC5oIgogI2luY2x1ZGUgIlV0aWxpdGllcy5oIgotI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEu
aD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgpAQCAtMTUzLDkxICsxNTIsMTEzIEBA
IFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgRmlsZXNIYXZlU2FtZVZvbHVtZSkKICAgICBFWFBFQ1Rf
VFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKGJhbmdDb250YWluaW5nRmlsZVBh
dGgoKSwgcXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSkpOwogfQogCi1URVNUX0YoRmlsZVN5c3Rl
bVRlc3QsIEdldEZpbGVNZXRhZGF0YUZpbGVTeW1saW5rKQorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0
LCBmaWxlVHlwZSkKIHsKLSAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZp
bGVNZXRhZGF0YSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwotICAgIEFTU0VSVF9UUlVFKHN5bWxp
bmtNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEt
PnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOwotICAgIEVYUEVDVF9G
QUxTRShzeW1saW5rTWV0YWRhdGEtPmlzSGlkZGVuKTsKLSAgICBFWFBFQ1RfVFJVRShzdGF0aWNf
Y2FzdDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0YS0+bGVuZ3RoKSA9PSBzdHJsZW4oRmlsZVN5c3Rl
bVRlc3REYXRhKSk7Ci0KLSAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6Zmls
ZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKLSAgICBB
U1NFUlRfVFJVRSh0YXJnZXRNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSh0
YXJnZXRNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOwotICAgIEVY
UEVDVF9GQUxTRSh0YXJnZXRNZXRhZGF0YS0+aXNIaWRkZW4pOwotICAgIEVYUEVDVF9FUShzdHJs
ZW4oRmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0
YS0+bGVuZ3RoKSk7Ci0KLSAgICBhdXRvIGFjdHVhbFRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3Rl
bTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfVFJVRShhY3R1YWxU
YXJnZXRNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShhY3R1YWxUYXJnZXRN
ZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOwotICAgIEVYUEVDVF9F
USh0YXJnZXRNZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSwgYWN0dWFsVGFyZ2V0TWV0YWRhdGEt
Pm1vZGlmaWNhdGlvblRpbWUpOwotICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3RlbVRlc3RE
YXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS0+bGVuZ3RoKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKGFjdHVhbFRhcmdldE1ldGFkYXRhLT5pc0hpZGRlbik7Ci19Ci0KLVRFU1Rf
RihGaWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1ldGFkYXRhU3ltbGlua1RvRmlsZVN5bWxpbmspCi17
Ci0gICAgLy8gQ3JlYXRlIGEgc3ltYm9saWMgbGluayBwb2ludGluZyB0aGUgdGVtcEZpbGVTeW1s
aW5rUGF0aCgpLgotICAgIGF1dG8gc3ltbGlua1RvU3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAic3ltbGlua1Rv
U3ltbGluayIpOwotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGlu
ayh0ZW1wRmlsZVN5bWxpbmtQYXRoKCksIHN5bWxpbmtUb1N5bWxpbmtQYXRoKSk7Ci0KLSAgICBh
dXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShzeW1saW5rVG9T
eW1saW5rUGF0aCk7Ci0gICAgQVNTRVJUX1RSVUUoc3ltbGlua01ldGFkYXRhLmhhc1ZhbHVlKCkp
OwotICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6
OlR5cGU6OlN5bWJvbGljTGluayk7Ci0gICAgRVhQRUNUX0ZBTFNFKHN5bWxpbmtNZXRhZGF0YS0+
aXNIaWRkZW4pOwotCi0gICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVN
ZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHN5bWxpbmtUb1N5bWxpbmtQYXRoKTsKLSAgICBBU1NF
UlRfVFJVRSh0YXJnZXRNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSh0YXJn
ZXRNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOwotICAgIEVYUEVD
VF9GQUxTRSh0YXJnZXRNZXRhZGF0YS0+aXNIaWRkZW4pOwotICAgIEVYUEVDVF9FUShzdHJsZW4o
RmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS0+
bGVuZ3RoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHN5bWxp
bmtUb1N5bWxpbmtQYXRoKSk7Ci19Ci0KLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1l
dGFkYXRhRGlyZWN0b3J5U3ltbGluaykKLXsKLSAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZp
bGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpKTsKLSAg
ICBBU1NFUlRfVFJVRShzeW1saW5rTWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RS
VUUoc3ltbGlua01ldGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNM
aW5rKTsKLSAgICBFWFBFQ1RfRkFMU0Uoc3ltbGlua01ldGFkYXRhLT5pc0hpZGRlbik7Ci0KLSAg
ICBhdXRvIHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5n
U3ltbGlua3ModGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUo
dGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRh
dGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3RvcnkpOwotICAgIEVYUEVDVF9G
QUxTRSh0YXJnZXRNZXRhZGF0YS0+aXNIaWRkZW4pOworICAgIGF1dG8gZG9lc05vdEV4aXN0UGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQ
YXRoKCksICJkb2VzLW5vdC1leGlzdCIpOworICAgIGF1dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVt
OjpmaWxlVHlwZShkb2VzTm90RXhpc3RQYXRoKTsKKyAgICBFWFBFQ1RfRkFMU0UoZmlsZVR5cGUp
OworCisgICAgZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZSh0ZW1wRmlsZVBhdGgoKSk7
CisgICAgQVNTRVJUX1RSVUUoZmlsZVR5cGUpOworICAgIEVYUEVDVF9FUSgqZmlsZVR5cGUsIEZp
bGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKTsKKworICAgIGZpbGVUeXBlID0gRmlsZVN5c3Rl
bTo6ZmlsZVR5cGUodGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShmaWxl
VHlwZSk7CisgICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlN5
bWJvbGljTGluayk7CisKKyAgICBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHRlbXBF
bXB0eUZvbGRlclN5bWxpbmtQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKGZpbGVUeXBlKTsKKyAg
ICBFWFBFQ1RfRVEoKmZpbGVUeXBlLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6U3ltYm9saWNMaW5r
KTsKKworICAgIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUodGVtcEVtcHR5Rm9sZGVy
UGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShmaWxlVHlwZSk7CisgICAgRVhQRUNUX0VRKCpmaWxl
VHlwZSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSk7CisKKyAgICAvLyBTeW1saW5r
IHRvIGZpbGUgc3ltbGluayBjYXNlLgorICAgIGF1dG8gc3ltbGlua1RvRmlsZVN5bWxpbmtQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBh
dGgoKSwgInN5bWxpbmtUb1N5bWxpbmsiKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpj
cmVhdGVTeW1ib2xpY0xpbmsodGVtcEZpbGVTeW1saW5rUGF0aCgpLCBzeW1saW5rVG9GaWxlU3lt
bGlua1BhdGgpKTsKKyAgICBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHN5bWxpbmtU
b0ZpbGVTeW1saW5rUGF0aCk7CisgICAgQVNTRVJUX1RSVUUoZmlsZVR5cGUpOworICAgIEVYUEVD
VF9FUSgqZmlsZVR5cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpTeW1ib2xpY0xpbmspOworCisg
ICAgLy8gU3ltbGluayB0byBkaXJlY3Rvcnkgc3ltbGluayBjYXNlLgorICAgIEZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7CisgICAgYXV0byBzeW1saW5rVG9EaXJlY3RvcnlT
eW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUt
c3ltbGluayIsIGhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Cisg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShzeW1saW5rVG9EaXJlY3RvcnlTeW1saW5rUGF0aCk7
CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKHRlbXBFbXB0
eUZvbGRlclN5bWxpbmtQYXRoKCksIHN5bWxpbmtUb0RpcmVjdG9yeVN5bWxpbmtQYXRoKSk7Cisg
ICAgZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZShzeW1saW5rVG9EaXJlY3RvcnlTeW1s
aW5rUGF0aCk7CisgICAgQVNTRVJUX1RSVUUoZmlsZVR5cGUpOworICAgIEVYUEVDVF9FUSgqZmls
ZVR5cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpTeW1ib2xpY0xpbmspOworCisgICAgLy8gQnJv
a2VuIGZpbGUgc3ltbGluayBjYXNlLgorICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUodGVtcEZpbGVQYXRoKCkpKTsKKyAgICBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVU
eXBlKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUoZmlsZVR5cGUpOwor
ICAgIEVYUEVDVF9FUSgqZmlsZVR5cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpTeW1ib2xpY0xp
bmspOwogCi0gICAgYXV0byBhY3R1YWxUYXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVN
ZXRhZGF0YSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpOwotICAgIEFTU0VSVF9UUlVFKGFjdHVhbFRh
cmdldE1ldGFkYXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9UUlVFKGFjdHVhbFRhcmdldE1l
dGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5KTsKLSAgICBFWFBF
Q1RfRVEodGFyZ2V0TWV0YWRhdGEtPm1vZGlmaWNhdGlvblRpbWUsIGFjdHVhbFRhcmdldE1ldGFk
YXRhLT5tb2RpZmljYXRpb25UaW1lKTsKLSAgICBFWFBFQ1RfRVEodGFyZ2V0TWV0YWRhdGEtPmxl
bmd0aCwgYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPmxlbmd0aCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGFj
dHVhbFRhcmdldE1ldGFkYXRhLT5pc0hpZGRlbik7CisgICAgLy8gQnJva2VuIGRpcmVjdG9yeSBz
eW1saW5rIGNhc2UuCisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlE
aXJlY3RvcnkodGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSk7CisgICAgZmlsZVR5cGUgPSBGaWxlU3lz
dGVtOjpmaWxlVHlwZSh0ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpKTsKKyAgICBBU1NFUlRf
VFJVRShmaWxlVHlwZSk7CisgICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6Rmls
ZVR5cGU6OlN5bWJvbGljTGluayk7CiB9CiAKLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0Rmls
ZU1ldGFkYXRhRmlsZURvZXNOb3RFeGlzdCkKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgZmlsZVR5
cGVGb2xsb3dpbmdTeW1saW5rcykKIHsKICAgICBhdXRvIGRvZXNOb3RFeGlzdFBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAi
ZG9lcy1ub3QtZXhpc3QiKTsKLSAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1l
dGFkYXRhKGRvZXNOb3RFeGlzdFBhdGgpOwotICAgIEVYUEVDVF9UUlVFKCFtZXRhZGF0YSk7Cisg
ICAgYXV0byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3Mo
ZG9lc05vdEV4aXN0UGF0aCk7CisgICAgRVhQRUNUX0ZBTFNFKGZpbGVUeXBlKTsKKworICAgIGZp
bGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVBh
dGgoKSk7CisgICAgQVNTRVJUX1RSVUUoZmlsZVR5cGUpOworICAgIEVYUEVDVF9FUSgqZmlsZVR5
cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKTsKKworICAgIGZpbGVUeXBlID0gRmls
ZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkp
OworICAgIEFTU0VSVF9UUlVFKGZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEoKmZpbGVUeXBlLCBG
aWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVndWxhcik7CisKKyAgICBmaWxlVHlwZSA9IEZpbGVTeXN0
ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3ModGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgo
KSk7CisgICAgQVNTRVJUX1RSVUUoZmlsZVR5cGUpOworICAgIEVYUEVDVF9FUSgqZmlsZVR5cGUs
IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpOworCisgICAgZmlsZVR5cGUgPSBGaWxl
U3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSk7
CisgICAgQVNTRVJUX1RSVUUoZmlsZVR5cGUpOworICAgIEVYUEVDVF9FUSgqZmlsZVR5cGUsIEZp
bGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpOworCisgICAgLy8gU3ltbGluayB0byBmaWxl
IHN5bWxpbmsgY2FzZS4KKyAgICBhdXRvIHN5bWxpbmtUb0ZpbGVTeW1saW5rUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJz
eW1saW5rVG9TeW1saW5rIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6Y3JlYXRlU3lt
Ym9saWNMaW5rKHRlbXBGaWxlU3ltbGlua1BhdGgoKSwgc3ltbGlua1RvRmlsZVN5bWxpbmtQYXRo
KSk7CisgICAgZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtz
KHN5bWxpbmtUb0ZpbGVTeW1saW5rUGF0aCk7CisgICAgQVNTRVJUX1RSVUUoZmlsZVR5cGUpOwor
ICAgIEVYUEVDVF9FUSgqZmlsZVR5cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKTsK
KworICAgIC8vIFN5bWxpbmsgdG8gZGlyZWN0b3J5IHN5bWxpbmsgY2FzZS4KKyAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOworICAgIGF1dG8gc3ltbGlua1RvRGlyZWN0
b3J5U3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RG
aWxlLXN5bWxpbmsiLCBoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUp
OworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc3ltbGlua1RvRGlyZWN0b3J5U3ltbGlua1Bh
dGgpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayh0ZW1w
RW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpLCBzeW1saW5rVG9EaXJlY3RvcnlTeW1saW5rUGF0aCkp
OworICAgIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhz
eW1saW5rVG9EaXJlY3RvcnlTeW1saW5rUGF0aCk7CisgICAgQVNTRVJUX1RSVUUoZmlsZVR5cGUp
OworICAgIEVYUEVDVF9FUSgqZmlsZVR5cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3Rv
cnkpOworCisgICAgLy8gQnJva2VuIGZpbGUgc3ltbGluayBjYXNlLgorICAgIEVYUEVDVF9UUlVF
KEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUodGVtcEZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVN5bWxpbmtQ
YXRoKCkpKTsKKworICAgIC8vIEJyb2tlbiBkaXJlY3Rvcnkgc3ltbGluayBjYXNlLgorICAgIEVY
UEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHRlbXBFbXB0eUZv
bGRlclBhdGgoKSkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxv
d2luZ1N5bWxpbmtzKHRlbXBFbXB0eUZvbGRlclN5bWxpbmtQYXRoKCkpKTsKIH0KIAogI2lmIE9T
KFVOSVgpCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRhZGF0YUhpZGRlbkZpbGUp
CitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGlzSGlkZGVuRmlsZSkKIHsKICAgICBhdXRvIGhpZGRl
bkZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0
eUZvbGRlclBhdGgoKSwgIi5oaWRkZW5GaWxlIik7Ci0gICAgYXV0byBmaWxlSGFuZGxlID0gRmls
ZVN5c3RlbTo6b3BlbkZpbGUoaGlkZGVuRmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9k
ZTo6V3JpdGUpOwotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmls
ZUhhbmRsZSkpOwotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIEZpbGVT
eXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwotICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpp
c0hpZGRlbkZpbGUoaGlkZGVuRmlsZVBhdGgpKTsKIAotICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxl
U3lzdGVtOjpmaWxlTWV0YWRhdGEoaGlkZGVuRmlsZVBhdGgpOwotICAgIEFTU0VSVF9UUlVFKG1l
dGFkYXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9UUlVFKG1ldGFkYXRhLT50eXBlID09IEZp
bGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7Ci0gICAgRVhQRUNUX1RSVUUobWV0YWRhdGEtPmlzSGlk
ZGVuKTsKLSAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSksIHN0YXRpY19j
YXN0PHNpemVfdD4obWV0YWRhdGEtPmxlbmd0aCkpOwotCi0gICAgRVhQRUNUX1RSVUUoRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShoaWRkZW5GaWxlUGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxl
U3lzdGVtOjppc0hpZGRlbkZpbGUodGVtcEZpbGVQYXRoKCkpKTsKIH0KICNlbmRpZgogCkBAIC0y
ODksOSArMzEwLDkgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBmaWxlRXhpc3RzQnJva2VuU3lt
bGluaykKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsoZG9l
c05vdEV4aXN0UGF0aCwgc3ltbGlua1BhdGgpKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhkb2VzTm90RXhpc3RQYXRoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMoc3ltbGlua1BhdGgpKTsgLy8gZmlsZUV4aXN0cygpIGZvbGxvd3Mg
c3ltbGlua3MuCi0gICAgYXV0byBzeW1saW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0
YWRhdGEoc3ltbGlua1BhdGgpOwotICAgIEFTU0VSVF9UUlVFKCEhc3ltbGlua01ldGFkYXRhKTsK
LSAgICBFWFBFQ1RfRVEoc3ltbGlua01ldGFkYXRhLT50eXBlLCBGaWxlTWV0YWRhdGE6OlR5cGU6
OlN5bWJvbGljTGluayk7CisgICAgYXV0byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBl
KHN5bWxpbmtQYXRoKTsKKyAgICBBU1NFUlRfVFJVRSghIWZpbGVUeXBlKTsKKyAgICBFWFBFQ1Rf
RVEoKmZpbGVUeXBlLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6U3ltYm9saWNMaW5rKTsKICAgICBF
WFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHN5bWxpbmtQYXRoKSk7CiB9CiAKQEAg
LTMwMiwxMyArMzIzLDEzIEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZmlsZUV4aXN0c1N5bWxp
bmtUb1N5bWxpbmspCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNM
aW5rKHRlbXBGaWxlU3ltbGlua1BhdGgoKSwgc3ltbGlua1BhdGgpKTsKICAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN5bWxpbmtQYXRoKSk7CiAKLSAgICBhdXRvIG1ldGFk
YXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHN5bWxpbmtQYXRoKTsKLSAgICBBU1NFUlRf
VFJVRSghIW1ldGFkYXRhKTsKLSAgICBFWFBFQ1RfRVEobWV0YWRhdGEtPnR5cGUsIEZpbGVNZXRh
ZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKKyAgICBhdXRvIGZpbGVUeXBlID0gRmlsZVN5c3Rl
bTo6ZmlsZVR5cGUoc3ltbGlua1BhdGgpOworICAgIEFTU0VSVF9UUlVFKCEhZmlsZVR5cGUpOwor
ICAgIEVYUEVDVF9FUSgqZmlsZVR5cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpTeW1ib2xpY0xp
bmspOwogCi0gICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0
YUZvbGxvd2luZ1N5bWxpbmtzKHN5bWxpbmtQYXRoKTsKLSAgICBBU1NFUlRfVFJVRSghIXRhcmdl
dE1ldGFkYXRhKTsKLSAgICBFWFBFQ1RfRVEodGFyZ2V0TWV0YWRhdGEtPnR5cGUsIEZpbGVNZXRh
ZGF0YTo6VHlwZTo6RmlsZSk7CisgICAgYXV0byB0YXJnZXRGaWxlVHlwZSA9IEZpbGVTeXN0ZW06
OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3Moc3ltbGlua1BhdGgpOworICAgIEFTU0VSVF9UUlVF
KCEhdGFyZ2V0RmlsZVR5cGUpOworICAgIEVYUEVDVF9FUSgqdGFyZ2V0RmlsZVR5cGUsIEZpbGVT
eXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKTsKIAogICAgIC8vIEJyZWFrIHRoZSBzeW1saW5rIGJ5
IGRlbGV0aW5nIHRoZSB0YXJnZXQuCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZSh0ZW1wRmlsZVBhdGgoKSkpOwpAQCAtMzE3LDE5ICszMzgsMTkgQEAgVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBmaWxlRXhpc3RzU3ltbGlua1RvU3ltbGluaykKICAgICBFWFBFQ1RfRkFMU0Uo
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpKTsgLy8gZmlsZUV4
aXN0cygpIGZvbGxvd3Mgc3ltbGlua3MuCiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMoc3ltbGlua1BhdGgpKTsgLy8gZmlsZUV4aXN0cygpIGZvbGxvd3Mgc3ltbGlua3Mu
CiAKLSAgICBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShzeW1saW5rUGF0aCk7
Ci0gICAgQVNTRVJUX1RSVUUoISFtZXRhZGF0YSk7Ci0gICAgRVhQRUNUX0VRKG1ldGFkYXRhLT50
eXBlLCBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluayk7CisgICAgZmlsZVR5cGUgPSBG
aWxlU3lzdGVtOjpmaWxlVHlwZShzeW1saW5rUGF0aCk7CisgICAgQVNTRVJUX1RSVUUoISFmaWxl
VHlwZSk7CisgICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlN5
bWJvbGljTGluayk7CiAKLSAgICBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0
ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwotICAgIEFTU0VSVF9UUlVFKCEhbWV0YWRhdGEpOwotICAg
IEVYUEVDVF9FUShtZXRhZGF0YS0+dHlwZSwgRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xp
bmspOworICAgIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUodGVtcEZpbGVTeW1saW5r
UGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRSghIWZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEoKmZp
bGVUeXBlLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6U3ltYm9saWNMaW5rKTsKIAotICAgIHRhcmdl
dE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3ModGVt
cEZpbGVTeW1saW5rUGF0aCgpKTsKLSAgICBFWFBFQ1RfVFJVRSghdGFyZ2V0TWV0YWRhdGEpOwor
ICAgIHRhcmdldEZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5r
cyh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOworICAgIEVYUEVDVF9UUlVFKCF0YXJnZXRGaWxlVHlw
ZSk7CiAKLSAgICB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxv
d2luZ1N5bWxpbmtzKHN5bWxpbmtQYXRoKTsKLSAgICBFWFBFQ1RfVFJVRSghdGFyZ2V0TWV0YWRh
dGEpOworICAgIHRhcmdldEZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdT
eW1saW5rcyhzeW1saW5rUGF0aCk7CisgICAgRVhQRUNUX1RSVUUoIXRhcmdldEZpbGVUeXBlKTsK
IAogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc3ltbGlua1BhdGgpKTsK
IH0KQEAgLTUwNCw0MSArNTI1LDE2IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZmlsZVNpemUp
CiAgICAgRVhQRUNUX1RSVUUoIWZpbGVTaXplKTsKIH0KIAotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0
LCBpc0RpcmVjdG9yeSkKLXsKLSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0RpcmVjdG9y
eSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpp
c0RpcmVjdG9yeUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSkpOwotCi0g
ICAgYXV0byBmb2xkZXJTeW1saW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEo
dGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgoKSk7Ci0gICAgRVhQRUNUX1RSVUUoISFmb2xkZXJT
eW1saW5rTWV0YWRhdGEpOwotICAgIEVYUEVDVF9FUShmb2xkZXJTeW1saW5rTWV0YWRhdGEtPnR5
cGUsIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
RmlsZVN5c3RlbTo6aXNEaXJlY3RvcnkodGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgoKSkpOwot
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3Mo
dGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgoKSkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKEZpbGVT
eXN0ZW06OmlzRGlyZWN0b3J5KHRlbXBGaWxlUGF0aCgpKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKEZp
bGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVQYXRoKCkpKTsK
LQotICAgIGF1dG8gZmlsZVN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0
YSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwotICAgIEVYUEVDVF9UUlVFKCEhZmlsZVN5bWxpbmtN
ZXRhZGF0YSk7Ci0gICAgRVhQRUNUX0VRKGZpbGVTeW1saW5rTWV0YWRhdGEtPnR5cGUsIEZpbGVN
ZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKLSAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3Rl
bTo6aXNEaXJlY3RvcnkodGVtcEZpbGVTeW1saW5rUGF0aCgpKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVTeW1saW5r
UGF0aCgpKSk7Ci0KLSAgICBTdHJpbmcgZmlsZVRoYXREb2VzTm90RXhpc3QgPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1u
b3QtZXhpc3QiX3MpOwotICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0RpcmVjdG9yeShm
aWxlVGhhdERvZXNOb3RFeGlzdCkpOwotICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0Rp
cmVjdG9yeUZvbGxvd2luZ1N5bWxpbmtzKGZpbGVUaGF0RG9lc05vdEV4aXN0KSk7Ci19Ci0KIFRF
U1RfRihGaWxlU3lzdGVtVGVzdCwgbWFrZUFsbERpcmVjdG9yaWVzKQogewogICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSk7Ci0gICAg
RVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnkodGVtcEVtcHR5Rm9sZGVyUGF0aCgp
KSk7CisgICAgRVhQRUNUX0VRKEZpbGVTeXN0ZW06OmZpbGVUeXBlKHRlbXBFbXB0eUZvbGRlclBh
dGgoKSkudmFsdWVPcihGaWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVndWxhciksIEZpbGVTeXN0ZW06
OkZpbGVUeXBlOjpEaXJlY3RvcnkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1ha2VB
bGxEaXJlY3Rvcmllcyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpKTsKICAgICBTdHJpbmcgc3ViRm9s
ZGVyUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcEVtcHR5
Rm9sZGVyUGF0aCgpLCB7ICJzdWJGb2xkZXIxIiwgInN1YkZvbGRlcjIiLCAic3ViRm9sZGVyMyIg
fSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3ViRm9sZGVyUGF0
aCkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhzdWJG
b2xkZXJQYXRoKSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzdWJG
b2xkZXJQYXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNEaXJlY3Rvcnkoc3Vi
Rm9sZGVyUGF0aCkpOworICAgIEVYUEVDVF9FUShGaWxlU3lzdGVtOjpmaWxlVHlwZShzdWJGb2xk
ZXJQYXRoKS52YWx1ZU9yKEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKSwgRmlsZVN5c3Rl
bTo6RmlsZVR5cGU6OkRpcmVjdG9yeSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVs
ZXRlTm9uRW1wdHlEaXJlY3RvcnkodGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSk7CiAgICAgRVhQRUNU
X0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3ViRm9sZGVyUGF0aCkpOwogfQpAQCAtNTYw
LDkgKzU1Niw5IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgY3JlYXRlU3ltYm9saWNMaW5rKQog
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayh0ZW1wRmlsZVBh
dGgoKSwgc3ltbGlua1BhdGgpKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKHN5bWxpbmtQYXRoKSk7CiAKLSAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0
ZW06OmZpbGVNZXRhZGF0YShzeW1saW5rUGF0aCk7Ci0gICAgRVhQRUNUX1RSVUUoISFzeW1saW5r
TWV0YWRhdGEpOwotICAgIEVYUEVDVF9FUShzeW1saW5rTWV0YWRhdGEtPnR5cGUsIEZpbGVNZXRh
ZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKKyAgICBhdXRvIGZpbGVUeXBlID0gRmlsZVN5c3Rl
bTo6ZmlsZVR5cGUoc3ltbGlua1BhdGgpOworICAgIEFTU0VSVF9UUlVFKCEhZmlsZVR5cGUpOwor
ICAgIEVYUEVDVF9FUSgqZmlsZVR5cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpTeW1ib2xpY0xp
bmspOwogCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShzeW1saW5rUGF0
aCkpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN5bWxpbmtQYXRo
KSk7CkBAIC01NzcsMTIgKzU3Myw5IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgY3JlYXRlU3lt
Ym9saWNMaW5rRm9sZGVyKQogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJv
bGljTGluayh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksIHN5bWxpbmtQYXRoKSk7CiAgICAgRVhQRUNU
X1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzeW1saW5rUGF0aCkpOwogCi0gICAgYXV0byBz
eW1saW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoc3ltbGlua1BhdGgpOwot
ICAgIEVYUEVDVF9UUlVFKCEhc3ltbGlua01ldGFkYXRhKTsKLSAgICBFWFBFQ1RfRVEoc3ltbGlu
a01ldGFkYXRhLT50eXBlLCBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluayk7Ci0KLSAg
ICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6aXNEaXJlY3Rvcnkoc3ltbGlua1BhdGgpKTsKLSAg
ICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0RpcmVjdG9yeUZvbGxvd2luZ1N5bWxpbmtzKHN5
bWxpbmtQYXRoKSk7CisgICAgYXV0byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHN5
bWxpbmtQYXRoKTsKKyAgICBBU1NFUlRfVFJVRSghIWZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEo
KmZpbGVUeXBlLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6U3ltYm9saWNMaW5rKTsKIAogICAgIEVY
UEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc3ltbGlua1BhdGgpKTsKICAgICBFWFBF
Q1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzeW1saW5rUGF0aCkpOwpAQCAtNjE3LDkg
KzYxMCw5IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgY3JlYXRlSGFyZExpbmspCiAgICAgQVNT
RVJUX1RSVUUobGlua0ZpbGVTaXplKTsKICAgICBFWFBFQ1RfRVEoKmxpbmtGaWxlU2l6ZSwgKmZp
bGVTaXplKTsKIAotICAgIGF1dG8gaGFyZGxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVN
ZXRhZGF0YShoYXJkbGlua1BhdGgpOwotICAgIEFTU0VSVF9UUlVFKCEhaGFyZGxpbmtNZXRhZGF0
YSk7Ci0gICAgRVhQRUNUX0VRKGhhcmRsaW5rTWV0YWRhdGEtPnR5cGUsIEZpbGVNZXRhZGF0YTo6
VHlwZTo6RmlsZSk7CisgICAgYXV0byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKGhh
cmRsaW5rUGF0aCk7CisgICAgQVNTRVJUX1RSVUUoISFmaWxlVHlwZSk7CisgICAgRVhQRUNUX0VR
KCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlJlZ3VsYXIpOwogCiAgICAgRVhQRUNU
X1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0ZW1wRmlsZVBhdGgoKSkpOwogICAgIEVYUEVD
VF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CkBAIC02NDcs
OSArNjQwLDkgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBjcmVhdGVIYXJkTGlua09yQ29weUZp
bGUpCiAgICAgQVNTRVJUX1RSVUUobGlua0ZpbGVTaXplKTsKICAgICBFWFBFQ1RfRVEoKmxpbmtG
aWxlU2l6ZSwgKmZpbGVTaXplKTsKIAotICAgIGF1dG8gaGFyZGxpbmtNZXRhZGF0YSA9IEZpbGVT
eXN0ZW06OmZpbGVNZXRhZGF0YShoYXJkbGlua1BhdGgpOwotICAgIEVYUEVDVF9UUlVFKCEhaGFy
ZGxpbmtNZXRhZGF0YSk7Ci0gICAgRVhQRUNUX0VRKGhhcmRsaW5rTWV0YWRhdGEtPnR5cGUsIEZp
bGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7CisgICAgYXV0byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06
OmZpbGVUeXBlKGhhcmRsaW5rUGF0aCk7CisgICAgQVNTRVJUX1RSVUUoISFmaWxlVHlwZSk7Cisg
ICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlJlZ3VsYXIpOwog
CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0ZW1wRmlsZVBhdGgoKSkp
OwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgp
KSk7CkBAIC03MzEsMTYgKzcyNCw2IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZ2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUpCiAgICAgfSk7CiB9CiAKLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZ2V0
RmlsZU1vZGlmaWNhdGlvblRpbWVWaWFGaWxlTWV0YWRhdGEpCi17Ci0gICAgcnVuR2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWVUZXN0KHRlbXBGaWxlUGF0aCgpLCBbXShjb25zdCBTdHJpbmcmIHBhdGgp
IC0+IE9wdGlvbmFsPFdhbGxUaW1lPiB7Ci0gICAgICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lz
dGVtOjpmaWxlTWV0YWRhdGEocGF0aCk7Ci0gICAgICAgIGlmICghbWV0YWRhdGEpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gbWV0YWRhdGEtPm1vZGlm
aWNhdGlvblRpbWU7Ci0gICAgfSk7Ci19Ci0KIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgdXBkYXRl
RmlsZU1vZGlmaWNhdGlvblRpbWUpCiB7CiAgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gRmls
ZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUodGVtcEZpbGVQYXRoKCkpOwo=
</data>
<flag name="commit-queue"
          id="449644"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428660</attachid>
            <date>2021-05-14 14:37:01 -0700</date>
            <delta_ts>2021-05-14 16:55:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225820-20210514143700.patch</filename>
            <type>text/plain</type>
            <size>65107</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
M2E3NWE2ZmEzMjAyYWRiY2VjNWY2ODliOTIyMTc1NWJjZjVkZjc1Li4yMjI4ZTAxOGYxZWYwOTRj
MmRiMjZjNGZkYWQxM2M1YjhiNTRjYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERyb3AgRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgLyBmaWxlTWV0YWRhdGFG
b2xsb3dpbmdTeW1saW5rcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjU4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgb3VyIGNvZGUgYmFzZSBiZWNhdXNlIG9mIHRoZSBGaWxlU3lzdGVt
IEFQSSBjaGFuZ2VzLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAgICAgICAodmFs
aWRhdGVCeXRlY29kZUNhY2hlUGF0aCk6CisKIDIwMjEtMDUtMTQgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBCYXNlbGluZSBKSVQgcHJvcGVydHkg
YWNjZXNzIHNsb3cgcGF0aHMgdXNpbmcgSklUIHRodW5rcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGZlZTAxZWFkY2E0NjEy
ZDVhNjE2ODliZTQ3NDg2NWQwNjNkNDY2NS4uZmU4NGE1N2IyNDQwMDhmZmQ5NjlkY2ZjMTcyNGRi
ZmMwNzM5ZjE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgRmlsZVN5c3RlbTo6ZmlsZU1ldGFk
YXRhKCkgLyBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcygpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4MjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEcm9wIEZpbGVTeXN0ZW06OmZpbGVNZXRh
ZGF0YSgpIC8gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoKS4gVGhvc2UgZG9uJ3QgbWF0
Y2ggdmVyeSBjbG9zZWx5IHRoZQorICAgICAgICBzdGQ6OmZpbGVzeXN0ZW0gQVBJIHdlIHVzZSBp
bnRlcm5hbGx5IGFuZCB0aGV5IGFyZSBub3QgdmVyeSBlZmZpY2llbnQgYmVjYXVzZSB3ZSBnYXRo
ZXIgc2V2ZXJhbCBhdHRyaWJ1dGVzCisgICAgICAgIG9mIGEgZmlsZSBidXQgdGhlIGNhbGxlcnMg
YXJlIHVzdWFsbHkgb25seSBpbnRlcmVzdGVkIGluIG9uZSB0aGluZyAoZS5nLiBmaWxlIHR5cGUg
b3IgZmlsZSBzaXplKS4KKworICAgICAgICBDYWxsZXJzIGludGVyZXN0ZWQgaW4gdGhlIGZpbGUg
c2l6ZSwgY2FuIGNhbGwgdGhlIHByZS1leGlzdGluZyBGaWxlU3lzdGVtOjpmaWxlU2l6ZSgpLiBG
b3IgY2FsbCBzaXRlcworICAgICAgICB3YW50aW5nIHRvIGNoZWNrIGlmIGl0IGlzIGEgaGlkZGVu
IGZpbGUsIEkgaW50cm9kdWNlZCBhIG5ldyBGaWxlU3lzdGVtOjppc0hpZGRlbkZpbGUoKSBBUEku
IEZvciBjYWxsIHNpdGVzCisgICAgICAgIGludGVyZXN0ZWQgaW4gdGhlIGZpbGUgdHlwZSwgSSBy
ZXBsYWNlZCBGaWxlU3lzdGVtOjppc0RpcmVjdG9yeSgpIC8gRmlsZVN5c3RlbTo6aXNEaXJlY3Rv
cnlGb2xsb3dpbmdTeW1saW5rcygpCisgICAgICAgIHdpdGggbW9yZSBnZW5lcmljIEZpbGVTeXN0
ZW06OmZpbGVUeXBlKCkgLyBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKCku
CisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3
dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0ZpbGVNZXRhZGF0YS5oOiBSZW1vdmVk
LgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3Rl
bUltcGw6OmlzSGlkZGVuRmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxl
VHlwZVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltTGlua3MpOgorICAgICAgICAoV1RGOjpGaWxlU3lz
dGVtSW1wbDo6ZmlsZVR5cGUpOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZmlsZVR5
cGVGb2xsb3dpbmdTeW1saW5rcyk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAgICAg
ICAgKiB3dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHA6CisgICAgICAgICogd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoK
KwogMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IEludHJvZHVjZSBGaWxlU3lzdGVtOjp1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZDUyZmQ0YmMyMDYyYTEwMzZlZjNjZWMzMmRmNzcyZjI4ZmRkZDkxMy4uZTVkOTcx
MWQwZmYzNGQ2MjI2NjUwMDBjNGE1ODljYTEzNWYyY2U4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM5IEBACisyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgRHJvcCBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoKSAvIGZpbGVNZXRhZGF0YUZvbGxv
d2luZ1N5bWxpbmtzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTgyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZSBvdXIgY29kZSBiYXNlIGJlY2F1c2Ugb2YgdGhlIEZpbGVTeXN0ZW0gQVBJ
IGNoYW5nZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpsaXN0RGlyZWN0b3J5V2l0aE1ldGFkYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvRmlsZVN5c3RlbUVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZVR5cGVJZ25vcmluZ0hpZGRlbkZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlUGF0
aElzRXhwZWN0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmdldFBh
cmVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRFbnRyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRGaWxlKToKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFj
aG1lbnRGb3JGaWxlUGF0aCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGU6OmlzRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBodG1sL0RpcmVj
dG9yeUZpbGVMaXN0Q3JlYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmREaXJlY3Rv
cnlGaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpnYXRoZXJGaWxlSW5mb3JtYXRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVBc3NldENhY2hlRXhp
c3RzRm9yUGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZl
cmVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFy
dFRyYWNraW5nTW9kaWZpY2F0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpwcmVwYXJlRm9yVXBsb2FkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmdlbmVyYXRlUmVwbGFjZW1l
bnRGaWxlKToKKwogMjAyMS0wNS0xNCAgWmlyYW4gU3VuICA8enN1bkBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFdyb25nIHN0YXRpYyBwb3NpdGlvbiBmb3Igb3V0LW9mLWZsb3cgcG9zaXRpb25lZCBl
bGVtZW50IHdpdGggZGlmZmVyZW50IHdyaXRpbmctbW9kZSB0aGFuIGl0cyBjb250YWluaW5nIGJs
b2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDRkNDcyZWFlMjYxODk0NTdhMTJmNTUzMGNhN2M3NTYxMDE5YTI0N2Mu
LmY5NGE5ZmRmODExYjgxMjM2NWU1OGQ1YTgzM2E1ZjRlNzk5ZmNjZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMjEtMDUtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBEcm9wIEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSgpIC8gZmlsZU1ldGFkYXRh
Rm9sbG93aW5nU3ltbGlua3MoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIG91ciBjb2RlIGJhc2UgYmVjYXVzZSBvZiB0aGUgRmlsZVN5c3Rl
bSBBUEkgY2hhbmdlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Z2V0RGlyZWN0
b3J5U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpnZXREaXJl
Y3Rvcmllcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFs
bENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjp0cmF2
ZXJzZURpcmVjdG9yeSk6CisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjplbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3RvcnkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAo
V2ViS2l0Ojppc0ludGVybmFsSW5zdGFsbCk6CisKIDIwMjEtMDUtMTQgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIGNvbnRleHRtZW51IGhpbnRzIGNh
biBiZSBjbGlwcGVkIGJ5IHRoZSBXS1dlYlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNTY3JpcHQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2Ny
aXB0Lm1tCmluZGV4IDFkY2E3YzE1NzgxMjFkZjM2ZGNlMmY3ZWQ2YjBhMWI1MGQzOTViMjAuLmJk
MzRmYmU1YzkzNzIwMWVlMGZiNzVlY2YzYjhiZDAzM2ZmNzZkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1NjcmlwdC5tbQpAQCAtMzgsNyArMzgsNiBAQAogI2ltcG9ydCAiSlNWaXJ0dWFs
TWFjaGluZUludGVybmFsLmgiCiAjaW1wb3J0ICJTeW1ib2wuaCIKICNpbXBvcnQgPHN5cy9zdGF0
Lmg+Ci0jaW1wb3J0IDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW1wb3J0IDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2ltcG9ydCA8d3RmL1NIQTEuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgpAQCAtNzcs
OCArNzYsOCBAQCBzdGF0aWMgYm9vbCB2YWxpZGF0ZUJ5dGVjb2RlQ2FjaGVQYXRoKE5TVVJMKiBj
YWNoZVBhdGgsIE5TRXJyb3IqKiBlcnJvcikKIAogICAgIFN0cmluZyBzeXN0ZW1QYXRoID0gY2Fj
aGVQYXRoVVJMLmZpbGVTeXN0ZW1QYXRoKCk7CiAKLSAgICBpZiAoYXV0byBtZXRhZGF0YSA9IEZp
bGVTeXN0ZW06OmZpbGVNZXRhZGF0YShzeXN0ZW1QYXRoKSkgewotICAgICAgICBpZiAobWV0YWRh
dGEtPnR5cGUgIT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKSB7CisgICAgaWYgKGF1dG8gZmls
ZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZShzeXN0ZW1QYXRoKSkgeworICAgICAgICBpZiAo
KmZpbGVUeXBlICE9IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKSB7CiAgICAgICAgICAg
ICBjcmVhdGVFcnJvcihbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkNhY2hlIHBhdGggYCVA
YCBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90IGEgZmlsZSIsIHN0YXRpY19jYXN0PE5TU3RyaW5n
ICo+KHN5c3RlbVBhdGgpXSwgZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CkBAIC05MCw3ICs4OSw4IEBAIHN0YXRpYyBib29sIHZhbGlkYXRlQnl0ZWNvZGVDYWNo
ZVBhdGgoTlNVUkwqIGNhY2hlUGF0aCwgTlNFcnJvcioqIGVycm9yKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFGaWxlU3lzdGVtOjppc0RpcmVjdG9yeShkaXJlY3Rv
cnkpKSB7CisgICAgYXV0byBkaXJlY3RvcnlUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUoZGly
ZWN0b3J5KTsKKyAgICBpZiAoIWRpcmVjdG9yeVR5cGUgfHwgKmRpcmVjdG9yeVR5cGUgIT0gRmls
ZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkgewogICAgICAgICBjcmVhdGVFcnJvcihbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkNhY2hlIGRpcmVjdG9yeSBgJUBgIGlzIG5vdCBhIGRp
cmVjdG9yeSBvciBkb2VzIG5vdCBleGlzdCIsIHN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGRpcmVj
dG9yeSldLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYWUwNWU3MDE1ZTU2MmRkZDRkMjYz
ZGIxM2YwNzQ5NzMxMGNmZTJjLi5iMTFlMDk4Y2U0NzdkNjlkODY5YjJmMTVlNzUzYzk5M2UxODAz
N2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUxMiw3
ICs1MTIsNiBAQAogCQlBMzBENDEyQzFGMERFMEJBMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMkQxRjBERTEzRjAwQjcxOTU0IC8qIFNvZnRMaW5r
aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMkQ4RkE0MjFGRkZBQjQwMDc4MDY2MiAvKiBU
aHJlYWRpbmdQT1NJWC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
aHJlYWRpbmdQT1NJWC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUEzMzFEOTU4
MjFGMjQ5NzgwMDlGMDJBQSAvKiBGaWxlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUEzMzFEOTU5MjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTMzMUQ5NUEyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUEzMzFEOTVDMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVt
Q0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbUNG
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzksNyArMTAzOCw2IEBACiAJ
CQkJQThBNDcyQTExNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwICovLAogCQkJCUE4
QTQ3MkEyMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggKi8sCiAJCQkJMEY3OUM3QzMx
RTczNTExODAwRUIzNEQxIC8qIEZhc3RUTFMuaCAqLywKLQkJCQlBMzMxRDk1ODIxRjI0OTc4MDA5
RjAyQUEgLyogRmlsZU1ldGFkYXRhLmggKi8sCiAJCQkJMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3
IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgKi8sCiAJCQkJMEY5RDMzNUMxNjVEQkE3MzAwNUFEMzg3
IC8qIEZpbGVQcmludFN0cmVhbS5oICovLAogCQkJCUEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAv
KiBGaWxlU3lzdGVtLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggYjQ5YzEzNzNmZTI3
ZTg0YThkYzNiMmJmZTQ3NTM5MmViNTkzMzFiYi4uZTdkYmM0ZjAyZmEwOTZhNjgzOWJmZjliZDMy
NTIyODA2ZDcwYTE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTY4LDcgKzY4LDYgQEAgc2V0
KFdURl9QVUJMSUNfSEVBREVSUwogICAgIEZhc3RCaXRWZWN0b3IuaAogICAgIEZhc3RNYWxsb2Mu
aAogICAgIEZhc3RUTFMuaAotICAgIEZpbGVNZXRhZGF0YS5oCiAgICAgRmlsZVByaW50U3RyZWFt
LmgKICAgICBGaWxlU3lzdGVtLmgKICAgICBGaXhlZFZlY3Rvci5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlTWV0YWRhdGEuaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVNZXRhZGF0YS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2EwYTJhYWI3NTMzYmQwN2IyMDA5MTQx
NTFjZDJiYTcxZjU1ODQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVNZXRhZGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+Ci0KLW5h
bWVzcGFjZSBXVEYgewotCi1zdHJ1Y3QgRmlsZU1ldGFkYXRhIHsKLSAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7Ci0KLSAgICAvLyBUaGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBv
ZiB0aGUgZmlsZSwgaW4gc2Vjb25kcy4KLSAgICBXYWxsVGltZSBtb2RpZmljYXRpb25UaW1lOwot
Ci0gICAgLy8gVGhlIGxlbmd0aCBvZiB0aGUgZmlsZSBpbiBieXRlcy4KLSAgICBsb25nIGxvbmcg
bGVuZ3RoOwotCi0gICAgYm9vbCBpc0hpZGRlbjsKLQotICAgIGVudW0gY2xhc3MgVHlwZSB7IEZp
bGUsIERpcmVjdG9yeSwgU3ltYm9saWNMaW5rIH07Ci0gICAgVHlwZSB0eXBlOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6RmlsZU1ldGFkYXRhOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmNwcAppbmRleCAyM2M4MWQ2NWNiMmRhYjZkNDJhNjJkMDc1N2QyMzc0ODhkN2MwZDY5Li5jNTVh
YWVjN2VmNjY2ZWRlNDlhOGY1MGYwMTczNDhlM2MwOGEwMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNw
cApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpbmNs
dWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYv
RmlsZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0
Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRGaWxlc3lzdGVtLmg+CkBAIC0xMzksMjAgKzEz
OCw2IEBAIHN0YXRpYyBXYWxsVGltZSB0b1dhbGxUaW1lKHN0ZDo6ZmlsZXN5c3RlbTo6ZmlsZV90
aW1lX3R5cGUgZmlsZVRpbWUpCiAgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0
b1RpbWVUKGZpbGVUaW1lKSk7CiB9CiAKLXN0YXRpYyBzdGQ6OmZpbGVzeXN0ZW06OnBhdGggcmVz
b2x2ZVN5bWxpbmtzKHN0ZDo6ZmlsZXN5c3RlbTo6cGF0aCBwYXRoLCBzdGQ6OmVycm9yX2NvZGUm
IGVjKQotewotI2lmZGVmIE1BWFNZTUxJTktTCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBtYXhTeW1saW5rRGVwdGggPSBNQVhTWU1MSU5LUzsKLSNlbHNlCi0gICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBtYXhTeW1saW5rRGVwdGggPSA0MDsKLSNlbmRpZgotCi0gICAgdW5zaWdu
ZWQgY3VycmVudERlcHRoID0gMDsKLSAgICB3aGlsZSAoKytjdXJyZW50RGVwdGggPD0gbWF4U3lt
bGlua0RlcHRoICYmICFlYyAmJiBzdGQ6OmZpbGVzeXN0ZW06OmlzX3N5bWxpbmsocGF0aCwgZWMp
KQotICAgICAgICBwYXRoID0gc3RkOjpmaWxlc3lzdGVtOjpyZWFkX3N5bWxpbmsocGF0aCwgZWMp
OwotICAgIHJldHVybiBwYXRoOwotfQotCiBTdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3Qg
U3RyaW5nJiBpbnB1dFN0cmluZykKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dFN0cmlu
Zy5sZW5ndGgoKTsKQEAgLTYwNiwxOCArNTkxLDYgQEAgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVT
aXplKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gc2l6ZTsKIH0KIAotYm9vbCBpc0Rp
cmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgc3RkOjplcnJvcl9jb2RlIGVjOwot
ICAgIHJldHVybiBzdGQ6OmZpbGVzeXN0ZW06OnN5bWxpbmtfc3RhdHVzKHRvU3RkRmlsZVN5c3Rl
bVBhdGgocGF0aCksIGVjKS50eXBlKCkgPT0gc3RkOjpmaWxlc3lzdGVtOjpmaWxlX3R5cGU6OmRp
cmVjdG9yeTsKLX0KLQotYm9vbCBpc0RpcmVjdG9yeUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0
cmluZyYgcGF0aCkKLXsKLSAgICBzdGQ6OmVycm9yX2NvZGUgZWM7Ci0gICAgcmV0dXJuIHN0ZDo6
ZmlsZXN5c3RlbTo6c3RhdHVzKHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCksIGVjKS50eXBlKCkg
PT0gc3RkOjpmaWxlc3lzdGVtOjpmaWxlX3R5cGU6OmRpcmVjdG9yeTsKLX0KLQogYm9vbCBtYWtl
QWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHN0ZDo6ZXJyb3JfY29k
ZSBlYzsKQEAgLTY5Myw1NiArNjY2LDQ0IEBAIGJvb2wgdXBkYXRlRmlsZU1vZGlmaWNhdGlvblRp
bWUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiAhZWM7CiB9CiAKLWVudW0gY2xhc3Mg
U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMgfTsKLXN0YXRpYyBPcHRpb25hbDxG
aWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltbGlua3MoY29u
c3QgU3RyaW5nJiBwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHNob3VsZEZvbGxvd1N5
bWJvbGljTGlua3MpCitib29sIGlzSGlkZGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0g
ICAgaWYgKHBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgYXV0byBmc1BhdGggPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgpOwotCi0gICAgc3RkOjpl
cnJvcl9jb2RlIGVjOwotICAgIGlmIChzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzID09IFNob3Vs
ZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyAmJiBzdGQ6OmZpbGVzeXN0ZW06OmlzX3N5bWxpbmso
ZnNQYXRoLCBlYykpIHsKLSAgICAgICAgZnNQYXRoID0gcmVzb2x2ZVN5bWxpbmtzKGZzUGF0aCwg
ZWMpOwotICAgICAgICBpZiAoZWMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgIH0KLQotICAgIGVjID0geyB9OwotICAgIHN0ZDo6ZmlsZXN5c3RlbTo6ZGlyZWN0b3J5X2Vu
dHJ5IGVudHJ5KGZzUGF0aCwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLQotICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IHRvV2FsbFRpbWUoZW50cnku
bGFzdF93cml0ZV90aW1lKGVjKSk7Ci0KLSAgICAvLyBOb3RlIHRoYXQgdGhlIHJlc3VsdCBvZiBh
dHRlbXB0aW5nIHRvIGRldGVybWluZSB0aGUgc2l6ZSBvZiBhIGRpcmVjdG9yeSBpcyBpbXBsZW1l
bnRhdGlvbi1kZWZpbmVkLgotICAgIGF1dG8gZmlsZVNpemUgPSBlbnRyeS5maWxlX3NpemUoZWMp
OwotICAgIGlmIChlYykKLSAgICAgICAgZmlsZVNpemUgPSAwOwotCiAjaWYgT1MoVU5JWCkKKyAg
ICBhdXRvIGZzUGF0aCA9IHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCk7CiAgICAgc3RkOjpmaWxl
c3lzdGVtOjpwYXRoOjpzdHJpbmdfdHlwZSBmaWxlbmFtZSA9IGZzUGF0aC5maWxlbmFtZSgpOwot
ICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuZW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAn
Lic7CisgICAgcmV0dXJuICFmaWxlbmFtZS5lbXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsK
ICNlbHNlCi0gICAgYm9vbCBpc0hpZGRlbiA9IGZhbHNlOworICAgIFVOVVNFRF9QQVJBTShwYXRo
KTsKKyAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKLSAgICBGaWxlTWV0YWRhdGE6OlR5cGUgdHlw
ZSA9IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZTsKLSAgICBpZiAoZW50cnkuaXNfc3ltbGluayhl
YykpCi0gICAgICAgIHR5cGUgPSBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluazsKLSAg
ICBlbHNlIGlmIChlbnRyeS5pc19kaXJlY3RvcnkoZWMpKQotICAgICAgICB0eXBlID0gRmlsZU1l
dGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7Cit9CiAKLSAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsg
bW9kaWZpY2F0aW9uVGltZSwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihmaWxlU2l6ZSksIGlzSGlk
ZGVuLCB0eXBlIH07CitlbnVtIGNsYXNzIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgeyBObywg
WWVzIH07CitzdGF0aWMgT3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlUG90ZW50aWFsbHlGb2xs
b3dpbmdTeW1MaW5rcyhjb25zdCBTdHJpbmcmIHBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3Mgc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcykKK3sKKyAgICBzdGQ6OmVycm9yX2NvZGUgZWM7
CisgICAgYXV0byBzdGF0dXMgPSBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzID09IFNob3VsZEZv
bGxvd1N5bWJvbGljTGlua3M6OlllcyA/IHN0ZDo6ZmlsZXN5c3RlbTo6c3RhdHVzKHRvU3RkRmls
ZVN5c3RlbVBhdGgocGF0aCksIGVjKSA6IHN0ZDo6ZmlsZXN5c3RlbTo6c3ltbGlua19zdGF0dXMo
dG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBzd2l0Y2ggKHN0YXR1cy50eXBlKCkpIHsKKyAgICBjYXNl
IHN0ZDo6ZmlsZXN5c3RlbTo6ZmlsZV90eXBlOjpkaXJlY3Rvcnk6CisgICAgICAgIHJldHVybiBG
aWxlVHlwZTo6RGlyZWN0b3J5OworICAgIGNhc2Ugc3RkOjpmaWxlc3lzdGVtOjpmaWxlX3R5cGU6
OnN5bWxpbms6CisgICAgICAgIHJldHVybiBGaWxlVHlwZTo6U3ltYm9saWNMaW5rOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gRmlsZVR5cGU6OlJlZ3Vs
YXI7CiB9CiAKLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK09wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZShjb25zdCBTdHJpbmcmIHBhdGgp
CiB7Ci0gICAgcmV0dXJuIGZpbGVNZXRhZGF0YVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltbGlua3Mo
cGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pOworICAgIHJldHVybiBmaWxlVHlw
ZVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltTGlua3MocGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rczo6Tm8pOwogfQogCi1PcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxv
d2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKK09wdGlvbmFsPEZpbGVUeXBlPiBmaWxl
VHlwZUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICByZXR1cm4g
ZmlsZU1ldGFkYXRhUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1saW5rcyhwYXRoLCBTaG91bGRGb2xs
b3dTeW1ib2xpY0xpbmtzOjpZZXMpOworICAgIHJldHVybiBmaWxlVHlwZVBvdGVudGlhbGx5Rm9s
bG93aW5nU3ltTGlua3MocGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzKTsKIH0K
IAogU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgK
aW5kZXggYzdiYTE5MDIzOTM3ZTgwY2E0ZjM5NDg4Y2VmMGQwZTdhMWY0YmYwOC4uNDgxZmJiMjUy
OGYxZGZiNTdlY2E4MjVlNDA3Y2ViNjAzMDY1OTgwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtNTgs
OCArNTgsNiBAQCB0eXBlZGVmIHN0cnVjdCBfR0ZpbGVJT1N0cmVhbSBHRmlsZUlPU3RyZWFtOwog
CiBuYW1lc3BhY2UgV1RGIHsKIAotc3RydWN0IEZpbGVNZXRhZGF0YTsKLQogbmFtZXNwYWNlIEZp
bGVTeXN0ZW1JbXBsIHsKIAogLy8gUGxhdGZvcm1GaWxlSGFuZGxlCkBAIC0xMTEsMTUgKzEwOSwx
MiBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwog
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwog
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBj
b25zdCBTdHJpbmcmIG5ld1BhdGgpOwotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPHVpbnQ2
NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25h
bDx1aW50NjRfdD4gZmlsZVNpemUoY29uc3QgU3RyaW5nJik7IC8vIEZvbGxvd3Mgc3ltbGlua3Mu
CiBXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplKFBsYXRmb3Jt
RmlsZUhhbmRsZSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgdXBkYXRlRmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKTsgLy8gU2V0
cyBtb2RpZmljYXRpb24gdGltZSB0byBub3cuCiBXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8
V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJik7IC8vIE5vdCBhbGwg
cGxhdGZvcm1zIHN0b3JlIGZpbGUgY3JlYXRpb24gdGltZS4KLVdURl9FWFBPUlRfUFJJVkFURSBP
cHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpOwot
V1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9s
bG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKTsKLVdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
aXNEaXJlY3RvcnlGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBib29sIGlzSGlkZGVuRmlsZShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBjb21wb25lbnQpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmlu
Z1ZpZXc+JiBjb21wb25lbnRzKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbGFzdENvbXBv
bmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChjb25zdCBTdHJpbmcmIHBhdGgpOwpAQCAt
MTMxLDYgKzEyNiwxMCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8aW50MzJfdD4gZ2V0
RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNy
ZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYg
c3ltYm9saWNMaW5rUGF0aCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0ZVRlbXBv
cmFyeVppcEFyY2hpdmUoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOwogCitlbnVtIGNsYXNzIEZp
bGVUeXBlIHsgUmVndWxhciwgRGlyZWN0b3J5LCBTeW1ib2xpY0xpbmsgfTsKK1dURl9FWFBPUlRf
UFJJVkFURSBPcHRpb25hbDxGaWxlVHlwZT4gZmlsZVR5cGUoY29uc3QgU3RyaW5nJik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlRm9sbG93aW5nU3ltbGlu
a3MoY29uc3QgU3RyaW5nJik7CisKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldE1ldGFkYXRh
VVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIgPSB7IH0pOwogCiBib29sIGNhbkV4Y2x1ZGVGcm9tQmFja3VwKCk7IC8v
IFJldHVybnMgdHJ1ZSBpZiBhbnkgZmlsZSBjYW4gZXZlciBiZSBleGNsdWRlZCBmcm9tIGJhY2t1
cC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIv
U291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggMDI2MWQ5YjFjMGQ0
YjU1ZDgyYzBiZTUzNmZkMDgxNWNjYTg2MDFmOS4uZjIwMzkyZDg2NzU1ODY2NDE1NzUyZmJjZmVm
YTNhMDc4YjM1Y2IzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVt
R2xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPHN5cy9m
aWxlLmg+CiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvRmlsZU1l
dGFkYXRhLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HTGli
VXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggYTYwMGJjMjYxOTg2OTBmOGFmZDNjMjY1
Y2YxNWNkNmJkZmM1ZDZlYy4uMjc0NDMxMzY0YzJiNGVhZDAwNDVjNGY0N2Y2MzhiNTFkZWM3NDkz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC00MCw3ICs0
MCw2IEBACiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5j
bHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9G
aWxlU3lzdGVtV2luLmNwcAppbmRleCAwNTdlMWVjNTk0YmQxMDI0ZWY4OTZiOWE3MThjMjk4OTc3
MGQ1NTA4Li5mZDMzOWI0ZTQ5MzI0ODFkOWE0NGRhMjhkMDM3Y2I1OTYyZTIxODM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSA8
c3lzL3N0YXQuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dy
YXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCAwYmEwMWIyZmVi
ZDc1NmNlMjM4N2IzNzBiMjRlYzJjYTY5M2NiN2M4Li45NDU2NTViN2M0OTczNjJkMjU4NmQ2OGIx
ODAxM2VmMzgyZDQ4ZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiRmls
ZVN5c3RlbUZpbGVFbnRyeS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
ICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KLSNpbmNsdWRlIDx3dGYvRmlsZU1l
dGFkYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CkBAIC00Myw3ICs0Miw3IEBA
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChET01GaWxlU3lzdGVtKTsKIAogc3RydWN0IExp
c3RlZENoaWxkIHsKICAgICBTdHJpbmcgZmlsZW5hbWU7Ci0gICAgRmlsZU1ldGFkYXRhOjpUeXBl
IHR5cGU7CisgICAgRmlsZVN5c3RlbTo6RmlsZVR5cGUgdHlwZTsKIAogICAgIExpc3RlZENoaWxk
IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCks
IHR5cGUgfTsgfQogfTsKQEAgLTUxLDE3ICs1MCwyMSBAQCBzdHJ1Y3QgTGlzdGVkQ2hpbGQgewog
c3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0ZWRDaGlsZD4+IGxpc3REaXJlY3RvcnlXaXRo
TWV0YWRhdGEoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5KGZ1bGxQYXRoKSkKKyAg
ICBhdXRvIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUoZnVsbFBhdGgpOworICAgIGlm
ICghZmlsZVR5cGUgfHwgKmZpbGVUeXBlICE9IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3Rv
cnkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiUGF0aCBubyBs
b25nZXIgZXhpc3RzIG9yIGlzIG5vIGxvbmdlciBhIGRpcmVjdG9yeSIgfTsKIAogICAgIGF1dG8g
Y2hpbGROYW1lcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZnVsbFBhdGgpOwogICAgIFZl
Y3RvcjxMaXN0ZWRDaGlsZD4gbGlzdGVkQ2hpbGRyZW47CiAgICAgbGlzdGVkQ2hpbGRyZW4ucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShjaGlsZE5hbWVzLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBj
aGlsZE5hbWUgOiBjaGlsZE5hbWVzKSB7Ci0gICAgICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lz
dGVtOjpmaWxlTWV0YWRhdGEoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZ1
bGxQYXRoLCBjaGlsZE5hbWUpKTsKLSAgICAgICAgaWYgKCFtZXRhZGF0YSB8fCBtZXRhZGF0YS52
YWx1ZSgpLmlzSGlkZGVuKQorICAgICAgICBhdXRvIGNoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChmdWxsUGF0aCwgY2hpbGROYW1lKTsKKyAgICAgICAgaWYg
KEZpbGVTeXN0ZW06OmlzSGlkZGVuRmlsZShjaGlsZFBhdGgpKQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hlY2tlZEFwcGVuZChMaXN0ZWRDaGlsZCB7
IGNoaWxkTmFtZSwgbWV0YWRhdGEudmFsdWUoKS50eXBlIH0pOworICAgICAgICBhdXRvIGZpbGVU
eXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUoY2hpbGRQYXRoKTsKKyAgICAgICAgaWYgKCFmaWxl
VHlwZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBsaXN0ZWRDaGlsZHJlbi51bmNo
ZWNrZWRBcHBlbmQoTGlzdGVkQ2hpbGQgeyBjaGlsZE5hbWUsICpmaWxlVHlwZSB9KTsKICAgICB9
CiAgICAgcmV0dXJuIGxpc3RlZENoaWxkcmVuOwogfQpAQCAtNzcsMTAgKzgwLDEwIEBAIHN0YXRp
YyBFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+PiB0b0ZpbGVTeXN0ZW1F
bnRyaWVzKFNjcmlwdEV4ZWN1CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGxpc3RlZENoaWxkcmVu
LnJldHVyblZhbHVlKCkpIHsKICAgICAgICAgU3RyaW5nIHZpcnR1YWxQYXRoID0gcGFyZW50Vmly
dHVhbFBhdGggKyAiLyIgKyBjaGlsZC5maWxlbmFtZTsKICAgICAgICAgc3dpdGNoIChjaGlsZC50
eXBlKSB7Ci0gICAgICAgIGNhc2UgRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOgorICAgICAgICBj
YXNlIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyOgogICAgICAgICAgICAgZW50cmllcy51
bmNoZWNrZWRBcHBlbmQoRmlsZVN5c3RlbUZpbGVFbnRyeTo6Y3JlYXRlKGNvbnRleHQsIGZpbGVT
eXN0ZW0sIHZpcnR1YWxQYXRoKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBG
aWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeToKKyAgICAgICAgY2FzZSBGaWxlU3lzdGVtOjpG
aWxlVHlwZTo6RGlyZWN0b3J5OgogICAgICAgICAgICAgZW50cmllcy51bmNoZWNrZWRBcHBlbmQo
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoY29udGV4dCwgZmlsZVN5c3RlbSwgdmly
dHVhbFBhdGgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtMTY2
LDI4ICsxNjksMjcgQEAgUmVmPEZpbGVTeXN0ZW1FbnRyeT4gRE9NRmlsZVN5c3RlbTo6ZmlsZUFz
RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICByZXR1cm4gRmlsZVN5
c3RlbUZpbGVFbnRyeTo6Y3JlYXRlKGNvbnRleHQsICp0aGlzLCAiLyIgKyBtX2ZpbGUtPm5hbWUo
KSk7CiB9CiAKLXN0YXRpYyBFeGNlcHRpb25PcjxTdHJpbmc+IHZhbGlkYXRlUGF0aElzRXhwZWN0
ZWRUeXBlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFN0cmluZyYmIHZpcnR1YWxQYXRoLCBGaWxl
TWV0YWRhdGE6OlR5cGUgZXhwZWN0ZWRUeXBlKQorc3RhdGljIE9wdGlvbmFsPEZpbGVTeXN0ZW06
OkZpbGVUeXBlPiBmaWxlVHlwZUlnbm9yaW5nSGlkZGVuRmlsZXMoY29uc3QgU3RyaW5nJiBmdWxs
UGF0aCkKK3sKKyAgICBpZiAoRmlsZVN5c3RlbTo6aXNIaWRkZW5GaWxlKGZ1bGxQYXRoKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZVR5
cGUoZnVsbFBhdGgpOworfQorCitzdGF0aWMgRXhjZXB0aW9uT3I8U3RyaW5nPiB2YWxpZGF0ZVBh
dGhJc0V4cGVjdGVkVHlwZShjb25zdCBTdHJpbmcmIGZ1bGxQYXRoLCBTdHJpbmcmJiB2aXJ0dWFs
UGF0aCwgRmlsZVN5c3RlbTo6RmlsZVR5cGUgZXhwZWN0ZWRUeXBlKQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVN
ZXRhZGF0YShmdWxsUGF0aCk7Ci0gICAgaWYgKCFtZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgp
LmlzSGlkZGVuKQorICAgIGF1dG8gZmlsZVR5cGUgPSBmaWxlVHlwZUlnbm9yaW5nSGlkZGVuRmls
ZXMoZnVsbFBhdGgpOworICAgIGlmICghZmlsZVR5cGUpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBOb3RGb3VuZEVycm9yLCAiUGF0aCBkb2VzIG5vdCBleGlzdCJfcyB9OwogCi0gICAgaWYg
KG1ldGFkYXRhLnZhbHVlKCkudHlwZSAhPSBleHBlY3RlZFR5cGUpCisgICAgaWYgKCpmaWxlVHlw
ZSAhPSBleHBlY3RlZFR5cGUpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlTWlzbWF0
Y2hFcnJvciwgIkVudHJ5IGF0IHBhdGggZG9lcyBub3QgaGF2ZSBleHBlY3RlZCB0eXBlIiB9Owog
CiAgICAgcmV0dXJuIFdURk1vdmUodmlydHVhbFBhdGgpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8
RmlsZU1ldGFkYXRhOjpUeXBlPiBmaWxlVHlwZShjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotewot
ICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoZnVsbFBhdGgpOwot
ICAgIGlmICghbWV0YWRhdGEgfHwgbWV0YWRhdGEudmFsdWUoKS5pc0hpZGRlbikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1cm4gbWV0YWRhdGEudmFsdWUoKS50eXBlOwot
fQotCiAvLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMtYXBpLyNyZXNvbHZlLWEtcmVs
YXRpdmUtcGF0aAogc3RhdGljIFN0cmluZyByZXNvbHZlUmVsYXRpdmVWaXJ0dWFsUGF0aChTdHJp
bmdWaWV3IGJhc2VWaXJ0dWFsUGF0aCwgU3RyaW5nVmlldyByZWxhdGl2ZVZpcnR1YWxQYXRoKQog
ewpAQCAtMjcxLDcgKzI3Myw3IEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0UGFyZW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1FbnRyeSYKICAgICBBU1NFUlQo
dmlydHVhbFBhdGhbMF0gPT0gJy8nKTsKICAgICBhdXRvIGZ1bGxQYXRoID0gZXZhbHVhdGVQYXRo
KHZpcnR1YWxQYXRoKTsKICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGZ1bGxQYXRoID0g
Y3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHko
dmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxs
YmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gdmFsaWRhdGVkVmlydHVhbFBhdGggPSB2
YWxpZGF0ZVBhdGhJc0V4cGVjdGVkVHlwZShmdWxsUGF0aCwgV1RGTW92ZSh2aXJ0dWFsUGF0aCks
IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5KTsKKyAgICAgICAgYXV0byB2YWxpZGF0ZWRW
aXJ0dWFsUGF0aCA9IHZhbGlkYXRlUGF0aElzRXhwZWN0ZWRUeXBlKGZ1bGxQYXRoLCBXVEZNb3Zl
KHZpcnR1YWxQYXRoKSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSk7CiAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgdmFsaWRhdGVkVmlydHVhbFBhdGggPSBjcm9z
c1RocmVhZENvcHkodmFsaWRhdGVkVmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAo
dmFsaWRhdGVkVmlydHVhbFBhdGguaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkNhbGxiYWNrKHZhbGlkYXRlZFZpcnR1YWxQYXRoLnJlbGVhc2VFeGNlcHRpb24oKSk7
CkBAIC0zMTIsMTcgKzMxNCwxNyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06OmdldEVudHJ5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1EaXJlY3RvcgogICAgIH0KIAog
ICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjb250ZXh0ID0gbWFrZVJlZihjb250ZXh0KSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHko
ZnVsbFBhdGgpLCByZXNvbHZlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHJlc29sdmVk
VmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxs
YmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gZW50cnlUeXBlID0gZmlsZVR5cGUoZnVs
bFBhdGgpOworICAgICAgICBhdXRvIGVudHJ5VHlwZSA9IGZpbGVUeXBlSWdub3JpbmdIaWRkZW5G
aWxlcyhmdWxsUGF0aCk7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgcmVz
b2x2ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShyZXNvbHZlZFZpcnR1YWxQYXRoKSwg
ZW50cnlUeXBlLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFj
ayldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIWVudHJ5VHlwZSkgewogICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiQ2Fu
bm90IGZpbmQgZW50cnkgYXQgZ2l2ZW4gcGF0aCJfcyB9KTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzd2l0Y2ggKGVudHJ5VHlwZS52YWx1ZSgp
KSB7Ci0gICAgICAgICAgICBjYXNlIEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OgorICAg
ICAgICAgICAgY2FzZSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5OgogICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhSZWY8RmlsZVN5c3RlbUVudHJ5PiB7IEZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKGNvbnRleHQsIHByb3RlY3RlZFRoaXMuZ2V0KCksIHJl
c29sdmVkVmlydHVhbFBhdGgpIH0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGU6CisgICAgICAgICAgICBjYXNlIEZpbGVT
eXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyOgogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxs
YmFjayhSZWY8RmlsZVN5c3RlbUVudHJ5PiB7IEZpbGVTeXN0ZW1GaWxlRW50cnk6OmNyZWF0ZShj
b250ZXh0LCBwcm90ZWN0ZWRUaGlzLmdldCgpLCByZXNvbHZlZFZpcnR1YWxQYXRoKSB9KTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC0zMzgsNyArMzQw
LDcgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpnZXRGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIEZpbGVTeXN0ZW1GaWxlRW50cnkKICAgICBhdXRvIHZpcnR1YWxQYXRoID0gZmls
ZUVudHJ5LnZpcnR1YWxQYXRoKCk7CiAgICAgYXV0byBmdWxsUGF0aCA9IGV2YWx1YXRlUGF0aCh2
aXJ0dWFsUGF0aCk7CiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtmdWxsUGF0aCA9IGNyb3Nz
VGhyZWFkQ29weShmdWxsUGF0aCksIHZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHZpcnR1
YWxQYXRoKSwgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGNvbXBsZXRpb25DYWxsYmFjayA9
IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byB2
YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IHZhbGlkYXRlUGF0aElzRXhwZWN0ZWRUeXBlKGZ1bGxQYXRo
LCBXVEZNb3ZlKHZpcnR1YWxQYXRoKSwgRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKKyAgICAg
ICAgYXV0byB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IHZhbGlkYXRlUGF0aElzRXhwZWN0ZWRUeXBl
KGZ1bGxQYXRoLCBXVEZNb3ZlKHZpcnR1YWxQYXRoKSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlJl
Z3VsYXIpOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFk
Q29weShmdWxsUGF0aCksIHZhbGlkYXRlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHZh
bGlkYXRlZFZpcnR1YWxQYXRoKSwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCksIGNvbXBsZXRp
b25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmICh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2sodmFsaWRhdGVkVmlydHVhbFBhdGgucmVsZWFz
ZUV4Y2VwdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMmM2NzNkNjYxNzNmOWM3NjdjM2RkMTk0ZGIx
M2NjMGI4Y2MxODg0Zi4uYWI4NjlmMzdjZGI3ZTA4MzM5ZTJhMGNiYzJkNWU3MDFiOGU0MTI0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KQEAgLTcxMiw3ICs3MTIsOCBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBh
dHRhY2htZW50Rm9yRmlsZVBhdGgoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHBhdGgsCiAg
ICAgICAgIHJldHVybiBhdHRhY2htZW50OwogICAgIH0KIAotICAgIGJvb2wgaXNEaXJlY3Rvcnkg
PSBGaWxlU3lzdGVtOjppc0RpcmVjdG9yeUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgpOworICAgIGF1
dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgp
OworICAgIGJvb2wgaXNEaXJlY3RvcnkgPSBmaWxlVHlwZSAmJiAqZmlsZVR5cGUgPT0gRmlsZVN5
c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeTsKICAgICBTdHJpbmcgY29udGVudFR5cGUgPSB0eXBl
Rm9yQXR0YWNobWVudEVsZW1lbnQoZXhwbGljaXRDb250ZW50VHlwZSk7CiAgICAgaWYgKGNvbnRl
bnRUeXBlLmlzRW1wdHkoKSkgewogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IDIzYTIyOTYxYzFkZGU5NjdiYTRlMzU0MmMzZmZi
ZGNmYWM2ODYxMDcuLjE2N2ZmZWViNDk1Y2U3MjY2ZTgzM2JlOTM4ZmNjMjljNWZlNjcwMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSA8d3RmL0RhdGVNYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTE0Nyw4ICsxNDYsMTAgQEAg
U3RyaW5nIEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAKIGJv
b2wgRmlsZTo6aXNEaXJlY3RvcnkoKSBjb25zdAogewotICAgIGlmICghbV9pc0RpcmVjdG9yeSkK
LSAgICAgICAgbV9pc0RpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93aW5n
U3ltbGlua3MobV9wYXRoKTsKKyAgICBpZiAoIW1faXNEaXJlY3RvcnkpIHsKKyAgICAgICAgYXV0
byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MobV9wYXRo
KTsKKyAgICAgICAgbV9pc0RpcmVjdG9yeSA9IGZpbGVUeXBlICYmICpmaWxlVHlwZSA9PSBGaWxl
U3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5OworICAgIH0KICAgICByZXR1cm4gKm1faXNEaXJl
Y3Rvcnk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5Rmls
ZUxpc3RDcmVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RD
cmVhdG9yLmNwcAppbmRleCAxODdlZGUzMzkzOGYzZTRhYjM3NmM4Yzc0M2RhNGNjYTA3NTEwYWI5
Li4zZGVmNzcyYjAwN2U0NmNjZDhlODJlMTZlMDM5NGI4OTIzOGRkYjc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwCkBAIC0zMCw3ICsz
MCw2IEBACiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgog
I2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlTWV0
YWRhdGEuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01NiwxNyArNTUsMTcgQEAgc3RhdGljIHZvaWQgYXBwZW5kRGlyZWN0b3J5RmlsZXMo
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUKICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBmb3IgKGF1dG8mIGNoaWxkTmFtZSA6IEZpbGVTeXN0
ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5KSkgewogICAgICAgICBhdXRvIGNoaWxkUGF0aCA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksIGNoaWxkTmFt
ZSk7Ci0gICAgICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoY2hp
bGRQYXRoKTsKLSAgICAgICAgaWYgKCFtZXRhZGF0YSkKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06
OmlzSGlkZGVuRmlsZShjaGlsZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgaWYgKG1ldGFkYXRhLnZhbHVlKCkuaXNIaWRkZW4pCisgICAgICAgIGF1dG8gZmlsZVR5cGUg
PSBGaWxlU3lzdGVtOjpmaWxlVHlwZShjaGlsZFBhdGgpOworICAgICAgICBpZiAoIWZpbGVUeXBl
KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgU3RyaW5nIGNoaWxkUmVsYXRpdmVQ
YXRoID0gcmVsYXRpdmVQYXRoICsgIi8iICsgY2hpbGROYW1lOwotICAgICAgICBpZiAobWV0YWRh
dGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5KQorICAgICAg
ICBpZiAoKmZpbGVUeXBlID09IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpCiAgICAg
ICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxlcyhjaGlsZFBhdGgsIGNoaWxkUmVsYXRpdmVQYXRo
LCBmaWxlcyk7Ci0gICAgICAgIGVsc2UgaWYgKG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxl
TWV0YWRhdGE6OlR5cGU6OkZpbGUpCisgICAgICAgIGVsc2UgaWYgKCpmaWxlVHlwZSA9PSBGaWxl
U3lzdGVtOjpGaWxlVHlwZTo6UmVndWxhcikKICAgICAgICAgICAgIGZpbGVzLmFwcGVuZChGaWxl
SW5mb3JtYXRpb24geyBjaGlsZFBhdGgsIGNoaWxkUmVsYXRpdmVQYXRoLCB7IH0gfSk7CiAgICAg
fQogfQpAQCAtNzYsNyArNzUsMTAgQEAgc3RhdGljIFZlY3RvcjxGaWxlSW5mb3JtYXRpb24+IGdh
dGhlckZpbGVJbmZvcm1hdGlvbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWwKICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBWZWN0b3I8RmlsZUluZm9ybWF0aW9uPiBmaWxlczsK
ICAgICBmb3IgKGF1dG8mIGluZm8gOiBwYXRocykgewotICAgICAgICBpZiAoRmlsZVN5c3RlbTo6
aXNEaXJlY3RvcnkoaW5mby5wYXRoKSkKKyAgICAgICAgYXV0byBmaWxlVHlwZSA9IEZpbGVTeXN0
ZW06OmZpbGVUeXBlKGluZm8ucGF0aCk7CisgICAgICAgIGlmICghZmlsZVR5cGUpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGZpbGVUeXBlID09IEZpbGVTeXN0ZW06OkZpbGVU
eXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxlcyhpbmZvLnBh
dGgsIEZpbGVTeXN0ZW06OnBhdGhGaWxlTmFtZShpbmZvLnBhdGgpLCBmaWxlcyk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGZpbGVzLmFwcGVuZChGaWxlSW5mb3JtYXRpb24geyBpbmZvLnBh
dGgsIHsgfSwgaW5mby5kaXNwbGF5TmFtZSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5k
ZXggYTViNzk2ZTBmYjQ0ODUyYTcyNDkxY2Q2OGI2MGNmNzlkYWE4N2E4OS4uYmVjNDdhMWUxYjM4
MmM3ZGQxMDY0MTQ1OWU1YjU2YmY0YjkxNTkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0K
QEAgLTM5OCwxMCArMzk4LDExIEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBzdG9yCiAKICAgICBhdXRv
IHN0b3JhZ2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3Jh
Z2VEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CiAKLSAgICBpZiAoIUZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoc3RvcmFnZURpcmVjdG9yeSkpIHsKKyAgICBhdXRvIGZpbGVUeXBlID0gRmls
ZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhzdG9yYWdlRGlyZWN0b3J5KTsKKyAg
ICBpZiAoIWZpbGVUeXBlKSB7CiAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVj
dG9yaWVzKHN0b3JhZ2VEaXJlY3RvcnkpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgIH0gZWxz
ZSBpZiAoIUZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3Moc3RvcmFnZURp
cmVjdG9yeSkpIHsKKyAgICB9IGVsc2UgaWYgKCpmaWxlVHlwZSAhPSBGaWxlU3lzdGVtOjpGaWxl
VHlwZTo6RGlyZWN0b3J5KSB7CiAgICAgICAgIGF1dG8gdGVtcERpcmVjdG9yeSA9IEZpbGVTeXN0
ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIk1lZGlhS2V5cyIpOwogICAgICAgICBpZiAo
IXRlbXBEaXJlY3RvcnkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQppbmRleCA4YTMyOTgyNmMyNjJhYTMyODhmNzFiMDRjMmVmOTg1ZTk4NzllYzcwLi5jY2U2OTMz
YjU3OWU2ZjU0ZTVhM2JkMGQ1OGUzYjIxN2Y0ZjA3ZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KQEAgLTMzNiwxNSArMzM2LDE0IEBAIHN0YXRpYyBBVkFzc2V0Q2FjaGUgKmVuc3VyZUFzc2V0
Q2FjaGVFeGlzdHNGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBpZiAocGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRvIGZpbGVFeGlzdHNBdFBhdGgg
PSBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGgpOwotCi0gICAgaWYgKGZpbGVFeGlzdHNBdFBh
dGggJiYgIUZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3MocGF0aCkpIHsK
KyAgICBhdXRvIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5r
cyhwYXRoKTsKKyAgICBpZiAoZmlsZVR5cGUgJiYgKmZpbGVUeXBlICE9IEZpbGVTeXN0ZW06OkZp
bGVUeXBlOjpEaXJlY3RvcnkpIHsKICAgICAgICAgLy8gTm9uLWRpcmVjdG9yeSBmaWxlIGFscmVh
ZHkgZXhpc3RzIGF0IHRoZSBwYXRoIGxvY2F0aW9uOyBiYWlsLgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICBpZiAoIWZpbGVF
eGlzdHNBdFBhdGggJiYgIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoKSkgewor
ICAgIGlmICghZmlsZVR5cGUgJiYgIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRo
KSkgewogICAgICAgICAvLyBDb3VsZCBub3QgY3JlYXRlIGEgZGlyZWN0b3J5IGF0IHRoZSBzcGVj
aWZpZWQgbG9jYXRpb247IGJhaWwuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCmluZGV4IGRmYjRiNTg0YThhOGUyMzQ2
N2I4NDNhOTVhMzNmN2Q1MTcyYzk4NDcuLmY0MTczN2FjODRkODI1YzA2MGU0MjFlY2NiODI1ZjAy
NjA0MTZmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRl
ICJCbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCIKIAogI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRl
IDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtODgsMjUgKzg3LDIzIEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjpzdGFydFRyYWNraW5nTW9kaWZpY2F0aW9ucygpCiAjZW5kaWYKIAogICAgIC8vIEZJ
WE1FOiBTb21lIHBsYXRmb3JtcyBwcm92aWRlIGJldHRlciB3YXlzIHRvIGxpc3RlbiBmb3IgZmls
ZSBzeXN0ZW0gb2JqZWN0IGNoYW5nZXMsIGNvbnNpZGVyIHVzaW5nIHRoZXNlLgotICAgIGF1dG8g
bWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhtX3Bh
dGgpOwotICAgIGlmICghbWV0YWRhdGEpCisgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gRmls
ZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobV9wYXRoKTsKKyAgICBpZiAoIW1vZGlm
aWNhdGlvblRpbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZXhwZWN0ZWRNb2RpZmljYXRp
b25UaW1lID0gbWV0YWRhdGEudmFsdWUoKS5tb2RpZmljYXRpb25UaW1lOworICAgIG1fZXhwZWN0
ZWRNb2RpZmljYXRpb25UaW1lID0gKm1vZGlmaWNhdGlvblRpbWU7CiAKICNpZiBFTkFCTEUoRklM
RV9SRVBMQUNFTUVOVCkKICAgICBpZiAobV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKQog
ICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgIC8vIFRoaXMgaXMgYSByZWdpc3RlcmVkIGJs
b2Igd2l0aCBhIHJlcGxhY2VtZW50IGZpbGUuIEdldCB0aGUgTWV0YWRhdGEgb2YgdGhlIHJlcGxh
Y2VtZW50IGZpbGUuCi0gICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkgewotICAg
ICAgICBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtz
KG1fcmVwbGFjZW1lbnRQYXRoKTsKLSAgICAgICAgaWYgKCFtZXRhZGF0YSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgLy8gVGhpcyBpcyBhIHJlZ2lzdGVyZWQgYmxvYiB3aXRoIGEg
cmVwbGFjZW1lbnQgZmlsZS4gR2V0IHRoZSBzaXplIG9mIHRoZSByZXBsYWNlbWVudCBmaWxlLgor
ICAgIGF1dG8gZmlsZVNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShtX3JlcGxhY2VtZW50UGF0
aC5pc051bGwoKSA/IG1fcGF0aCA6IG1fcmVwbGFjZW1lbnRQYXRoKTsKKyAgICBpZiAoIWZpbGVT
aXplKQorICAgICAgICByZXR1cm47CiAKLSAgICBtX3NpemUgPSBtZXRhZGF0YS52YWx1ZSgpLmxl
bmd0aDsKKyAgICBtX3NpemUgPSAqZmlsZVNpemU7CiB9CiAKIHZvaWQgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjpwcmVwYXJlRm9yRmlsZUFjY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRleCA2N2VkMmE0YjVjOTYw
OWFmOGJjMDY3ZmRkMmNkYTE5YzlhNDg3ZGQ1Li5lYjJlYmU2MzQ4ZmU4Y2I1MGZmYTk5YTBkOTZh
ZGQ2Y2FmMzcyODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJSZXNv
dXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgog
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggNzAyZGJjOWU1NDNmYzhmYjFmZDU5YzY3YTcx
MmI3NjBkNDJkY2U1MS4uN2M1YmZiY2FhZmMwNWUwYWE1MmRmYzEzY2RiMWJlYzQxOTM5MDkyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTM1
NCw3ICszNTQsOCBAQCBGb3JtRGF0YUZvclVwbG9hZCBGb3JtRGF0YTo6cHJlcGFyZUZvclVwbG9h
ZCgpCiAgICAgICAgIGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50
OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSk7CiAgICAgICAgIGlmICghZmlsZURhdGEp
CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0RpcmVj
dG9yeUZvbGxvd2luZ1N5bWxpbmtzKGZpbGVEYXRhLT5maWxlbmFtZSkpCisgICAgICAgIGF1dG8g
ZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKGZpbGVEYXRh
LT5maWxlbmFtZSk7CisgICAgICAgIGlmICghZmlsZVR5cGUgfHwgKmZpbGVUeXBlICE9IEZpbGVT
eXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgaWYgKGZpbGVEYXRhLT5maWxlU3RhcnQgfHwgZmlsZURhdGEtPmZpbGVMZW5ndGggIT0gQmxv
YkRhdGFJdGVtOjp0b0VuZE9mRmlsZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlTWFjLm1tCmluZGV4IDVlYzc3N2E4Njk5MDY3MTE4Y2JjZDU1MjhlOGY0ZmZl
OTJhNDQ4NmIuLjNiZjY0MzQ5YTU1NGQxY2MyMmYyOTc5NWIzYjgxYzgzYmQxMzg5NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJl
ZmVyZW5jZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9C
bG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJM
RShGSUxFX1JFUExBQ0VNRU5UKQogCi0jaW1wb3J0IDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW1w
b3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBA
IC00Nyw4ICs0Niw4IEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpnZW5lcmF0ZVJlcGxh
Y2VtZW50RmlsZSgpCiAKICAgICBtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQgPSBmYWxz
ZTsKICAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChh
dXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3Mo
bV9yZXBsYWNlbWVudFBhdGgpKQotICAgICAgICAgICAgbV9zaXplID0gbWV0YWRhdGEudmFsdWUo
KS5sZW5ndGg7CisgICAgICAgIGlmIChhdXRvIGZpbGVTaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNp
emUobV9yZXBsYWNlbWVudFBhdGgpKQorICAgICAgICAgICAgbV9zaXplID0gKmZpbGVTaXplOwog
ICAgIH0KIAogICAgIHJldm9rZUZpbGVBY2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCBi
NGY4OTA3YmJhMGI5ZGI5YWI5MGNiMmY3YTQxZmJhN2ZiMTU3MGU1Li5jOWVkY2QzZGFmYzM1ODNj
NmYyNzg5NTZkMTM2NWU0NTU1YWU5ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0yMDcsNyAr
MjA3LDggQEAgc3RhdGljIHVpbnQ2NF90IGdldERpcmVjdG9yeVNpemUoY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnlQYXRoKQogICAgIHBhdGhzLmFwcGVuZChkaXJlY3RvcnlQYXRoKTsKICAgICB3aGls
ZSAoIXBhdGhzLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHBhdGggPSBwYXRocy50YWtlRmly
c3QoKTsKLSAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5KHBhdGgpKSB7CisgICAg
ICAgIGF1dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZShwYXRoKTsKKyAgICAgICAg
aWYgKGZpbGVUeXBlICYmICpmaWxlVHlwZSA9PSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0
b3J5KSB7CiAgICAgICAgICAgICBhdXRvIGZpbGVOYW1lcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJl
Y3RvcnkocGF0aCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDogZmlsZU5hbWVz
KSB7CiAgICAgICAgICAgICAgICAgLy8gRmlsZXMgaW4gL0Jsb2JzIGRpcmVjdG9yeSBhcmUgaGFy
ZCBsaW5rLgpAQCAtNjEzLDcgKzYxNCw4IEBAIHZvaWQgRW5naW5lOjpnZXREaXJlY3RvcmllcyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+JiYgY29tCiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IGZvbGRlclBhdGhzOwogICAgICAgICBmb3IgKGF1dG8mIGZpbGVO
YW1lIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoKSkgewogICAgICAgICAgICAgYXV0
byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBm
aWxlTmFtZSk7Ci0gICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnkoZmlsZVBh
dGgpKQorICAgICAgICAgICAgYXV0byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKGZp
bGVQYXRoKTsKKyAgICAgICAgICAgIGlmIChmaWxlVHlwZSAmJiAqZmlsZVR5cGUgPT0gRmlsZVN5
c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICBmb2xkZXJQYXRocy5h
cHBlbmQoZmlsZVBhdGguaXNvbGF0ZWRDb3B5KCkpOwogICAgICAgICB9CiAKQEAgLTcwMSw3ICs3
MDMsOCBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXNGcm9tRGlzayhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZQogICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihnbG9iYWxTaXplRmlsZUxvY2spOwogICAgICAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDogRmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoKSkgewogICAgICAgICAgICAgYXV0byBmaWxlUGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBmaWxlTmFtZSk7
Ci0gICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnkoZmlsZVBhdGgpKQorICAg
ICAgICAgICAgYXV0byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKGZpbGVQYXRoKTsK
KyAgICAgICAgICAgIGlmIChmaWxlVHlwZSAmJiAqZmlsZVR5cGUgPT0gRmlsZVN5c3RlbTo6Rmls
ZVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeShmaWxlUGF0aCk7CiAgICAgICAgIH0KICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVT
eXN0ZW0uY3BwCmluZGV4IDljMTc0NTkzNjM3MTQxNzBiZTllMmVhM2U2NzJlN2UxMDVhYTkwNGUu
LjE1M2M2MDg3OTBmODIyNzU2NGU5MDE4ZDI0ZGM0OTZiODY2OWI5Y2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVG
aWxlU3lzdGVtLmNwcApAQCAtNTgsNyArNTgsOCBAQCB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRAog
ICAgIGF1dG8gZW50cmllcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkocGF0aCk7CiAgICAg
Zm9yIChhdXRvJiBlbnRyeSA6IGVudHJpZXMpIHsKICAgICAgICAgYXV0byBlbnRyeVBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZW50cnkpOwotICAgICAg
ICBhdXRvIHR5cGUgPSBGaWxlU3lzdGVtOjppc0RpcmVjdG9yeShlbnRyeVBhdGgpID8gRGlyZWN0
b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkgOiBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGU7CisgICAg
ICAgIGF1dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZShlbnRyeVBhdGgpOworICAg
ICAgICBhdXRvIHR5cGUgPSAoZmlsZVR5cGUgJiYgKmZpbGVUeXBlID09IEZpbGVTeXN0ZW06OkZp
bGVUeXBlOjpEaXJlY3RvcnkpID8gRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkgOiBEaXJl
Y3RvcnlFbnRyeVR5cGU6OkZpbGU7CiAgICAgICAgIGZ1bmN0aW9uKGVudHJ5LCB0eXBlKTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJv
Y2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFj
Lm1tCmluZGV4IGQ1NDU2Y2RiMTQzZWRjZDhhM2I3MGJlOWY0MTk0YzRmNDhiNjgyMDYuLjY3ODBl
ZDg2MGMwYmFjMzQwOGYwZmQ0NmM0MDRmNGI3ODIwMDRmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCkBAIC0zMzEsOSArMzMxLDEwIEBA
IHN0YXRpYyBTdHJpbmcgc2FuZGJveEZpbGVQYXRoKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0
aCwgY29uc3QgQ1N0cmluZyYgaGVhZGVyCiAKIHN0YXRpYyBib29sIGVuc3VyZVNhbmRib3hDYWNo
ZURpcmVjdG9yeShjb25zdCBTYW5kYm94SW5mbyYgaW5mbykKIHsKLSAgICBpZiAoIUZpbGVTeXN0
ZW06OmlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3MoaW5mby5wYXJlbnREaXJlY3RvcnlQYXRo
KSkgeworICAgIGF1dG8gcGFyZW50RGlyZWN0b3J5VHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBl
Rm9sbG93aW5nU3ltbGlua3MoaW5mby5wYXJlbnREaXJlY3RvcnlQYXRoKTsKKyAgICBpZiAoIXBh
cmVudERpcmVjdG9yeVR5cGUgfHwgKnBhcmVudERpcmVjdG9yeVR5cGUgIT0gRmlsZVN5c3RlbTo6
RmlsZVR5cGU6OkRpcmVjdG9yeSkgewogICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMoaW5mby5wYXJlbnREaXJlY3RvcnlQYXRoKTsKLSAgICAgICAgaWYgKCFGaWxlU3lzdGVt
Ojppc0RpcmVjdG9yeUZvbGxvd2luZ1N5bWxpbmtzKGluZm8ucGFyZW50RGlyZWN0b3J5UGF0aCkp
IHsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKGlu
Zm8ucGFyZW50RGlyZWN0b3J5UGF0aCkpIHsKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6
IENvdWxkIG5vdCBjcmVhdGUgc2FuZGJveCBkaXJlY3RvcnlcbiIsIGdldHByb2duYW1lKCkpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0zNjMsOCArMzY0LDggQEAg
c3RhdGljIGJvb2wgZW5zdXJlU2FuZGJveENhY2hlRGlyZWN0b3J5KGNvbnN0IFNhbmRib3hJbmZv
JiBpbmZvKQogICAgICAgICBpZiAoIXJvb3RsZXNzX2NoZWNrX2RhdGF2YXVsdF9mbGFnKGRpcmVj
dG9yeVBhdGguZGF0YSgpLCBzdG9yYWdlQ2xhc3MpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICAgICAgYm9vbCBpc0RpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5KGlu
Zm8uZGlyZWN0b3J5UGF0aCk7Ci0gICAgICAgIGlmIChpc0RpcmVjdG9yeSkgeworICAgICAgICBh
dXRvIGRpcmVjdG9yeVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZShpbmZvLmRpcmVjdG9yeVBh
dGgpOworICAgICAgICBpZiAoZGlyZWN0b3J5VHlwZSAmJiAqZGlyZWN0b3J5VHlwZSA9PSBGaWxl
U3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KSB7CiAgICAgICAgICAgICBpZiAoIUZpbGVTeXN0
ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGluZm8uZGlyZWN0b3J5UGF0aCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9IGVsc2UgewpAQCAtMzc5LDE0ICszODAs
MTYgQEAgc3RhdGljIGJvb2wgZW5zdXJlU2FuZGJveENhY2hlRGlyZWN0b3J5KGNvbnN0IFNhbmRi
b3hJbmZvJiBpbmZvKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogI2Vsc2UKLSAgICBi
b29sIGhhc1NhbmRib3hEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjppc0RpcmVjdG9yeUZvbGxvd2lu
Z1N5bWxpbmtzKGluZm8uZGlyZWN0b3J5UGF0aCk7CisgICAgYXV0byBkaXJlY3RvcnlUeXBlID0g
RmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhpbmZvLmRpcmVjdG9yeVBhdGgp
OworICAgIGJvb2wgaGFzU2FuZGJveERpcmVjdG9yeSA9IGRpcmVjdG9yeVR5cGUgJiYgKmRpcmVj
dG9yeVR5cGUgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeTsKICAgICBpZiAoIWhh
c1NhbmRib3hEaXJlY3RvcnkpIHsKICAgICAgICAgaWYgKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJl
Y3RvcmllcyhpbmZvLmRpcmVjdG9yeVBhdGgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoRmlsZVN5
c3RlbTo6aXNEaXJlY3RvcnlGb2xsb3dpbmdTeW1saW5rcyhpbmZvLmRpcmVjdG9yeVBhdGgpKTsK
KyAgICAgICAgICAgIEFTU0VSVChGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtz
KGluZm8uZGlyZWN0b3J5UGF0aCkudmFsdWVPcihGaWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVndWxh
cikgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSk7CiAgICAgICAgICAgICBoYXNT
YW5kYm94RGlyZWN0b3J5ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8v
IFdlIG1heSBoYXZlIHJhY2VkIHdpdGggc29tZW9uZSBlbHNlIG1ha2luZyBpdC4gVGhhdCdzIG9r
LgotICAgICAgICAgICAgaGFzU2FuZGJveERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmlzRGlyZWN0
b3J5Rm9sbG93aW5nU3ltbGlua3MoaW5mby5kaXJlY3RvcnlQYXRoKTsKKyAgICAgICAgICAgIGF1
dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKGluZm8u
ZGlyZWN0b3J5UGF0aCk7CisgICAgICAgICAgICBoYXNTYW5kYm94RGlyZWN0b3J5ID0gZmlsZVR5
cGUgJiYgKmZpbGVUeXBlID09IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3Rvcnk7CiAgICAg
ICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDgyZDI0OTg2OWUwNWU0MDZmNjAwMjQxYjkyMGYw
NmI5MDg1M2YzMGQuLjRiYmQwNDBlZjZhODA1NzE2MjNmZjVjZjFhMmQ5M2NhM2MzYzYyOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQpAQCAtMjE3LDcgKzIxNyw3IEBAIHN0YXRpYyBib29sIGlzSW50ZXJuYWxJbnN0YWxs
KCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpYyBib29sIGlzSW50ZXJuYWwg
PSBNR0dldEJvb2xBbnN3ZXIoa01HUUFwcGxlSW50ZXJuYWxJbnN0YWxsQ2FwYWJpbGl0eSk7CiAj
ZWxzZQotICAgIHN0YXRpYyBib29sIGlzSW50ZXJuYWwgPSBGaWxlU3lzdGVtOjppc0RpcmVjdG9y
eSgiL0FwcGxlSW50ZXJuYWwiKTsKKyAgICBzdGF0aWMgYm9vbCBpc0ludGVybmFsID0gRmlsZVN5
c3RlbTo6ZmlsZVR5cGUoIi9BcHBsZUludGVybmFsIikudmFsdWVPcihGaWxlU3lzdGVtOjpGaWxl
VHlwZTo6UmVndWxhcikgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeTsKICNlbmRp
ZgogICAgIHJldHVybiBpc0ludGVybmFsOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY2ZGQ4OTFmZTYyOGE2Mjc2N2ZiZjQ1YTA5N2RhZGEz
OGQ3NmUzMjkuLjYwOTM1MDFmYjJlODFhMzcwN2EwM2ZkYjJjNjM5NjkzYTM4ZjFjNWYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIERyb3AgRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgLyBmaWxlTWV0YWRhdGFGb2xsb3dp
bmdTeW1saW5rcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjU4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGUgdGhlIEZpbGVTeXN0ZW0gQVBJIHRlc3RzIGFjY29yZGluZ2x5LgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTA1LTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBjb250ZXh0bWVudSBoaW50cyBjYW4gYmUg
Y2xpcHBlZCBieSB0aGUgV0tXZWJWaWV3CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDQ3ZmE2NTk5YTlmZDcxOGVkNjBhNTY2ODg2NTAxMzlkMGZm
NmQ4NmQuLmY0NDY0MjRiODYyMmQyMDE5YjQwYzMwNDRjNTJlMzQwZTc0ZmQzMDggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC0yOCw3ICsyOCw2
IEBACiAKICNpbmNsdWRlICJUZXN0LmgiCiAjaW5jbHVkZSAiVXRpbGl0aWVzLmgiCi0jaW5jbHVk
ZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CkBA
IC0xNTMsOTEgKzE1MiwxMTMgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBGaWxlc0hhdmVTYW1l
Vm9sdW1lKQogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUo
YmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpLCBxdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7CiB9
CiAKLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1ldGFkYXRhRmlsZVN5bWxpbmspCitU
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVUeXBlKQogewotICAgIGF1dG8gc3ltbGlua01ldGFk
YXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7Ci0g
ICAgQVNTRVJUX1RSVUUoc3ltbGlua01ldGFkYXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9U
UlVFKHN5bWxpbmtNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGlj
TGluayk7Ci0gICAgRVhQRUNUX0ZBTFNFKHN5bWxpbmtNZXRhZGF0YS0+aXNIaWRkZW4pOwotICAg
IEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PHNpemVfdD4oc3ltbGlua01ldGFkYXRhLT5sZW5ndGgp
ID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKLQotICAgIGF1dG8gdGFyZ2V0TWV0YWRh
dGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVN5
bWxpbmtQYXRoKCkpOwotICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc1ZhbHVlKCkp
OwotICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6
VHlwZTo6RmlsZSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRhcmdldE1ldGFkYXRhLT5pc0hpZGRlbik7
Ci0gICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KHRhcmdldE1ldGFkYXRhLT5sZW5ndGgpKTsKLQotICAgIGF1dG8gYWN0dWFsVGFyZ2V0
TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEodGVtcEZpbGVQYXRoKCkpOwotICAg
IEFTU0VSVF9UUlVFKGFjdHVhbFRhcmdldE1ldGFkYXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVD
VF9UUlVFKGFjdHVhbFRhcmdldE1ldGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6
RmlsZSk7Ci0gICAgRVhQRUNUX0VRKHRhcmdldE1ldGFkYXRhLT5tb2RpZmljYXRpb25UaW1lLCBh
Y3R1YWxUYXJnZXRNZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSk7Ci0gICAgRVhQRUNUX0VRKHN0
cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHRhcmdldE1ldGFk
YXRhLT5sZW5ndGgpKTsKLSAgICBFWFBFQ1RfRkFMU0UoYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPmlz
SGlkZGVuKTsKLX0KLQotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1s
aW5rVG9GaWxlU3ltbGluaykKLXsKLSAgICAvLyBDcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHBvaW50
aW5nIHRoZSB0ZW1wRmlsZVN5bWxpbmtQYXRoKCkuCi0gICAgYXV0byBzeW1saW5rVG9TeW1saW5r
UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xk
ZXJQYXRoKCksICJzeW1saW5rVG9TeW1saW5rIik7Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3Rl
bTo6Y3JlYXRlU3ltYm9saWNMaW5rKHRlbXBGaWxlU3ltbGlua1BhdGgoKSwgc3ltbGlua1RvU3lt
bGlua1BhdGgpKTsKLQotICAgIGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6Zmls
ZU1ldGFkYXRhKHN5bWxpbmtUb1N5bWxpbmtQYXRoKTsKLSAgICBBU1NFUlRfVFJVRShzeW1saW5r
TWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoc3ltbGlua01ldGFkYXRhLT50
eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKLSAgICBFWFBFQ1RfRkFM
U0Uoc3ltbGlua01ldGFkYXRhLT5pc0hpZGRlbik7Ci0KLSAgICBhdXRvIHRhcmdldE1ldGFkYXRh
ID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3Moc3ltbGlua1RvU3lt
bGlua1BhdGgpOwotICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc1ZhbHVlKCkpOwot
ICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLT50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlw
ZTo6RmlsZSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRhcmdldE1ldGFkYXRhLT5pc0hpZGRlbik7Ci0g
ICAgRVhQRUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHRhcmdldE1ldGFkYXRhLT5sZW5ndGgpKTsKLQotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUoc3ltbGlua1RvU3ltbGlua1BhdGgpKTsKLX0KLQotVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFEaXJlY3RvcnlTeW1saW5rKQotewotICAgIGF1dG8g
c3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBFbXB0eUZvbGRl
clN5bWxpbmtQYXRoKCkpOwotICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS5oYXNWYWx1
ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFk
YXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOwotICAgIEVYUEVDVF9GQUxTRShzeW1saW5rTWV0YWRh
dGEtPmlzSGlkZGVuKTsKLQotICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpm
aWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCgp
KTsKLSAgICBBU1NFUlRfVFJVRSh0YXJnZXRNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBF
Q1RfVFJVRSh0YXJnZXRNZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVj
dG9yeSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRhcmdldE1ldGFkYXRhLT5pc0hpZGRlbik7CisgICAg
YXV0byBkb2VzTm90RXhpc3RQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Iik7CisgICAgYXV0byBm
aWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKGRvZXNOb3RFeGlzdFBhdGgpOworICAgIEVY
UEVDVF9GQUxTRShmaWxlVHlwZSk7CisKKyAgICBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVU
eXBlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShmaWxlVHlwZSk7CisgICAgRVhQ
RUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlJlZ3VsYXIpOworCisgICAg
ZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwor
ICAgIEFTU0VSVF9UUlVFKGZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEoKmZpbGVUeXBlLCBGaWxl
U3lzdGVtOjpGaWxlVHlwZTo6U3ltYm9saWNMaW5rKTsKKworICAgIGZpbGVUeXBlID0gRmlsZVN5
c3RlbTo6ZmlsZVR5cGUodGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgoKSk7CisgICAgQVNTRVJU
X1RSVUUoZmlsZVR5cGUpOworICAgIEVYUEVDVF9FUSgqZmlsZVR5cGUsIEZpbGVTeXN0ZW06OkZp
bGVUeXBlOjpTeW1ib2xpY0xpbmspOworCisgICAgZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxl
VHlwZSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKGZpbGVUeXBlKTsK
KyAgICBFWFBFQ1RfRVEoKmZpbGVUeXBlLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5
KTsKKworICAgIC8vIFN5bWxpbmsgdG8gZmlsZSBzeW1saW5rIGNhc2UuCisgICAgYXV0byBzeW1s
aW5rVG9GaWxlU3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAic3ltbGlua1RvU3ltbGluayIpOworICAgIEVYUEVD
VF9UUlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayh0ZW1wRmlsZVN5bWxpbmtQYXRo
KCksIHN5bWxpbmtUb0ZpbGVTeW1saW5rUGF0aCkpOworICAgIGZpbGVUeXBlID0gRmlsZVN5c3Rl
bTo6ZmlsZVR5cGUoc3ltbGlua1RvRmlsZVN5bWxpbmtQYXRoKTsKKyAgICBBU1NFUlRfVFJVRShm
aWxlVHlwZSk7CisgICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6
OlN5bWJvbGljTGluayk7CisKKyAgICAvLyBTeW1saW5rIHRvIGRpcmVjdG9yeSBzeW1saW5rIGNh
c2UuCisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICBhdXRv
IHN5bWxpbmtUb0RpcmVjdG9yeVN5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoInRlbXBUZXN0RmlsZS1zeW1saW5rIiwgaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUoaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHN5bWxpbmtUb0Rp
cmVjdG9yeVN5bWxpbmtQYXRoKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVT
eW1ib2xpY0xpbmsodGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgoKSwgc3ltbGlua1RvRGlyZWN0
b3J5U3ltbGlua1BhdGgpKTsKKyAgICBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHN5
bWxpbmtUb0RpcmVjdG9yeVN5bWxpbmtQYXRoKTsKKyAgICBBU1NFUlRfVFJVRShmaWxlVHlwZSk7
CisgICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlN5bWJvbGlj
TGluayk7CisKKyAgICAvLyBCcm9rZW4gZmlsZSBzeW1saW5rIGNhc2UuCisgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0ZW1wRmlsZVBhdGgoKSkpOworICAgIGZpbGVUeXBl
ID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUodGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKKyAgICBBU1NF
UlRfVFJVRShmaWxlVHlwZSk7CisgICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6
RmlsZVR5cGU6OlN5bWJvbGljTGluayk7CiAKLSAgICBhdXRvIGFjdHVhbFRhcmdldE1ldGFkYXRh
ID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBFbXB0eUZvbGRlclBhdGgoKSk7Ci0gICAg
QVNTRVJUX1RSVUUoYWN0dWFsVGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNU
X1RSVUUoYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpE
aXJlY3RvcnkpOwotICAgIEVYUEVDVF9FUSh0YXJnZXRNZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGlt
ZSwgYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPm1vZGlmaWNhdGlvblRpbWUpOwotICAgIEVYUEVDVF9F
USh0YXJnZXRNZXRhZGF0YS0+bGVuZ3RoLCBhY3R1YWxUYXJnZXRNZXRhZGF0YS0+bGVuZ3RoKTsK
LSAgICBFWFBFQ1RfRkFMU0UoYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPmlzSGlkZGVuKTsKKyAgICAv
LyBCcm9rZW4gZGlyZWN0b3J5IHN5bWxpbmsgY2FzZS4KKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpKTsKKyAg
ICBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHRlbXBFbXB0eUZvbGRlclN5bWxpbmtQ
YXRoKCkpOworICAgIEFTU0VSVF9UUlVFKGZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEoKmZpbGVU
eXBlLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6U3ltYm9saWNMaW5rKTsKIH0KIAotVEVTVF9GKEZp
bGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFGaWxlRG9lc05vdEV4aXN0KQorVEVTVF9GKEZp
bGVTeXN0ZW1UZXN0LCBmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKQogewogICAgIGF1dG8gZG9l
c05vdEV4aXN0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1w
RW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCIpOwotICAgIGF1dG8gbWV0YWRhdGEg
PSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoZG9lc05vdEV4aXN0UGF0aCk7Ci0gICAgRVhQRUNU
X1RSVUUoIW1ldGFkYXRhKTsKKyAgICBhdXRvIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5
cGVGb2xsb3dpbmdTeW1saW5rcyhkb2VzTm90RXhpc3RQYXRoKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
ZmlsZVR5cGUpOworCisgICAgZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2lu
Z1N5bWxpbmtzKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShmaWxlVHlwZSk7Cisg
ICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlJlZ3VsYXIpOwor
CisgICAgZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHRl
bXBGaWxlU3ltbGlua1BhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUoZmlsZVR5cGUpOworICAgIEVY
UEVDVF9FUSgqZmlsZVR5cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKTsKKworICAg
IGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRW1w
dHlGb2xkZXJTeW1saW5rUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShmaWxlVHlwZSk7CisgICAg
RVhQRUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSk7CisK
KyAgICBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3ModGVt
cEVtcHR5Rm9sZGVyUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShmaWxlVHlwZSk7CisgICAgRVhQ
RUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSk7CisKKyAg
ICAvLyBTeW1saW5rIHRvIGZpbGUgc3ltbGluayBjYXNlLgorICAgIGF1dG8gc3ltbGlua1RvRmls
ZVN5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBF
bXB0eUZvbGRlclBhdGgoKSwgInN5bWxpbmtUb1N5bWxpbmsiKTsKKyAgICBFWFBFQ1RfVFJVRShG
aWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsodGVtcEZpbGVTeW1saW5rUGF0aCgpLCBzeW1s
aW5rVG9GaWxlU3ltbGlua1BhdGgpKTsKKyAgICBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVU
eXBlRm9sbG93aW5nU3ltbGlua3Moc3ltbGlua1RvRmlsZVN5bWxpbmtQYXRoKTsKKyAgICBBU1NF
UlRfVFJVRShmaWxlVHlwZSk7CisgICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6
RmlsZVR5cGU6OlJlZ3VsYXIpOworCisgICAgLy8gU3ltbGluayB0byBkaXJlY3Rvcnkgc3ltbGlu
ayBjYXNlLgorICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7CisgICAg
YXV0byBzeW1saW5rVG9EaXJlY3RvcnlTeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1w
b3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUtc3ltbGluayIsIGhhbmRsZSk7CisgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShzeW1saW5r
VG9EaXJlY3RvcnlTeW1saW5rUGF0aCk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6Y3Jl
YXRlU3ltYm9saWNMaW5rKHRlbXBFbXB0eUZvbGRlclN5bWxpbmtQYXRoKCksIHN5bWxpbmtUb0Rp
cmVjdG9yeVN5bWxpbmtQYXRoKSk7CisgICAgZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlw
ZUZvbGxvd2luZ1N5bWxpbmtzKHN5bWxpbmtUb0RpcmVjdG9yeVN5bWxpbmtQYXRoKTsKKyAgICBB
U1NFUlRfVFJVRShmaWxlVHlwZSk7CisgICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3Rl
bTo6RmlsZVR5cGU6OkRpcmVjdG9yeSk7CisKKyAgICAvLyBCcm9rZW4gZmlsZSBzeW1saW5rIGNh
c2UuCisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0ZW1wRmlsZVBhdGgo
KSkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxp
bmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSkpOworCisgICAgLy8gQnJva2VuIGRpcmVjdG9yeSBz
eW1saW5rIGNhc2UuCisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlE
aXJlY3RvcnkodGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVT
eXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3ModGVtcEVtcHR5Rm9sZGVyU3ltbGlua1Bh
dGgoKSkpOwogfQogCiAjaWYgT1MoVU5JWCkKLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0Rmls
ZU1ldGFkYXRhSGlkZGVuRmlsZSkKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgaXNIaWRkZW5GaWxl
KQogewogICAgIGF1dG8gaGlkZGVuRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiLmhpZGRlbkZpbGUiKTsKLSAgICBh
dXRvIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShoaWRkZW5GaWxlUGF0aCwgRmls
ZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3Rl
bTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7Ci0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUoZmlsZUhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3RE
YXRhKSk7Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIEVYUEVD
VF9UUlVFKEZpbGVTeXN0ZW06OmlzSGlkZGVuRmlsZShoaWRkZW5GaWxlUGF0aCkpOwogCi0gICAg
YXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShoaWRkZW5GaWxlUGF0aCk7
Ci0gICAgQVNTRVJUX1RSVUUobWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUo
bWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKLSAgICBFWFBFQ1Rf
VFJVRShtZXRhZGF0YS0+aXNIaWRkZW4pOwotICAgIEVYUEVDVF9FUShzdHJsZW4oRmlsZVN5c3Rl
bVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtZXRhZGF0YS0+bGVuZ3RoKSk7Ci0KLSAg
ICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGhpZGRlbkZpbGVQYXRoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmlzSGlkZGVuRmlsZSh0ZW1wRmlsZVBhdGgoKSkp
OwogfQogI2VuZGlmCiAKQEAgLTI4OSw5ICszMTAsOSBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3Qs
IGZpbGVFeGlzdHNCcm9rZW5TeW1saW5rKQogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNy
ZWF0ZVN5bWJvbGljTGluayhkb2VzTm90RXhpc3RQYXRoLCBzeW1saW5rUGF0aCkpOwogICAgIEVY
UEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRvZXNOb3RFeGlzdFBhdGgpKTsKICAg
ICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzeW1saW5rUGF0aCkpOyAvLyBm
aWxlRXhpc3RzKCkgZm9sbG93cyBzeW1saW5rcy4KLSAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9
IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShzeW1saW5rUGF0aCk7Ci0gICAgQVNTRVJUX1RSVUUo
ISFzeW1saW5rTWV0YWRhdGEpOwotICAgIEVYUEVDVF9FUShzeW1saW5rTWV0YWRhdGEtPnR5cGUs
IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKKyAgICBhdXRvIGZpbGVUeXBlID0g
RmlsZVN5c3RlbTo6ZmlsZVR5cGUoc3ltbGlua1BhdGgpOworICAgIEFTU0VSVF9UUlVFKCEhZmls
ZVR5cGUpOworICAgIEVYUEVDVF9FUSgqZmlsZVR5cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpT
eW1ib2xpY0xpbmspOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc3lt
bGlua1BhdGgpKTsKIH0KIApAQCAtMzAyLDEzICszMjMsMTMgQEAgVEVTVF9GKEZpbGVTeXN0ZW1U
ZXN0LCBmaWxlRXhpc3RzU3ltbGlua1RvU3ltbGluaykKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsodGVtcEZpbGVTeW1saW5rUGF0aCgpLCBzeW1saW5rUGF0
aCkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3ltbGlua1BhdGgp
KTsKIAotICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoc3ltbGlu
a1BhdGgpOwotICAgIEFTU0VSVF9UUlVFKCEhbWV0YWRhdGEpOwotICAgIEVYUEVDVF9FUShtZXRh
ZGF0YS0+dHlwZSwgRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOworICAgIGF1dG8g
ZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZShzeW1saW5rUGF0aCk7CisgICAgQVNTRVJU
X1RSVUUoISFmaWxlVHlwZSk7CisgICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6
RmlsZVR5cGU6OlN5bWJvbGljTGluayk7CiAKLSAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0gRmls
ZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3Moc3ltbGlua1BhdGgpOwotICAg
IEFTU0VSVF9UUlVFKCEhdGFyZ2V0TWV0YWRhdGEpOwotICAgIEVYUEVDVF9FUSh0YXJnZXRNZXRh
ZGF0YS0+dHlwZSwgRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKKyAgICBhdXRvIHRhcmdldEZp
bGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhzeW1saW5rUGF0
aCk7CisgICAgQVNTRVJUX1RSVUUoISF0YXJnZXRGaWxlVHlwZSk7CisgICAgRVhQRUNUX0VRKCp0
YXJnZXRGaWxlVHlwZSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlJlZ3VsYXIpOwogCiAgICAgLy8g
QnJlYWsgdGhlIHN5bWxpbmsgYnkgZGVsZXRpbmcgdGhlIHRhcmdldC4KICAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHRlbXBGaWxlUGF0aCgpKSk7CkBAIC0zMTcsMTkgKzMz
OCwxOSBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVFeGlzdHNTeW1saW5rVG9TeW1saW5r
KQogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlU3ltbGlu
a1BhdGgoKSkpOyAvLyBmaWxlRXhpc3RzKCkgZm9sbG93cyBzeW1saW5rcy4KICAgICBFWFBFQ1Rf
RkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzeW1saW5rUGF0aCkpOyAvLyBmaWxlRXhpc3Rz
KCkgZm9sbG93cyBzeW1saW5rcy4KIAotICAgIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1l
dGFkYXRhKHN5bWxpbmtQYXRoKTsKLSAgICBBU1NFUlRfVFJVRSghIW1ldGFkYXRhKTsKLSAgICBF
WFBFQ1RfRVEobWV0YWRhdGEtPnR5cGUsIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5r
KTsKKyAgICBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHN5bWxpbmtQYXRoKTsKKyAg
ICBBU1NFUlRfVFJVRSghIWZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEoKmZpbGVUeXBlLCBGaWxl
U3lzdGVtOjpGaWxlVHlwZTo6U3ltYm9saWNMaW5rKTsKIAotICAgIG1ldGFkYXRhID0gRmlsZVN5
c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7Ci0gICAgQVNTRVJUX1RS
VUUoISFtZXRhZGF0YSk7Ci0gICAgRVhQRUNUX0VRKG1ldGFkYXRhLT50eXBlLCBGaWxlTWV0YWRh
dGE6OlR5cGU6OlN5bWJvbGljTGluayk7CisgICAgZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxl
VHlwZSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKCEhZmlsZVR5cGUp
OworICAgIEVYUEVDVF9FUSgqZmlsZVR5cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpTeW1ib2xp
Y0xpbmspOwogCi0gICAgdGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFG
b2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwotICAgIEVYUEVDVF9UUlVF
KCF0YXJnZXRNZXRhZGF0YSk7CisgICAgdGFyZ2V0RmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxl
VHlwZUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CisgICAgRVhQRUNU
X1RSVUUoIXRhcmdldEZpbGVUeXBlKTsKIAotICAgIHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3Rl
bTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3Moc3ltbGlua1BhdGgpOwotICAgIEVYUEVD
VF9UUlVFKCF0YXJnZXRNZXRhZGF0YSk7CisgICAgdGFyZ2V0RmlsZVR5cGUgPSBGaWxlU3lzdGVt
OjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHN5bWxpbmtQYXRoKTsKKyAgICBFWFBFQ1RfVFJV
RSghdGFyZ2V0RmlsZVR5cGUpOwogCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShzeW1saW5rUGF0aCkpOwogfQpAQCAtNTA0LDQxICs1MjUsMTYgQEAgVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBmaWxlU2l6ZSkKICAgICBFWFBFQ1RfVFJVRSghZmlsZVNpemUpOwogfQogCi1U
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIGlzRGlyZWN0b3J5KQotewotICAgIEVYUEVDVF9UUlVFKEZp
bGVTeXN0ZW06OmlzRGlyZWN0b3J5KHRlbXBFbXB0eUZvbGRlclBhdGgoKSkpOwotICAgIEVYUEVD
VF9UUlVFKEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3ModGVtcEVtcHR5
Rm9sZGVyUGF0aCgpKSk7Ci0KLSAgICBhdXRvIGZvbGRlclN5bWxpbmtNZXRhZGF0YSA9IEZpbGVT
eXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpKTsKLSAgICBF
WFBFQ1RfVFJVRSghIWZvbGRlclN5bWxpbmtNZXRhZGF0YSk7Ci0gICAgRVhQRUNUX0VRKGZvbGRl
clN5bWxpbmtNZXRhZGF0YS0+dHlwZSwgRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmsp
OwotICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0RpcmVjdG9yeSh0ZW1wRW1wdHlGb2xk
ZXJTeW1saW5rUGF0aCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNEaXJlY3Rv
cnlGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpKSk7Ci0KLSAg
ICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnkodGVtcEZpbGVQYXRoKCkpKTsK
LSAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xsb3dpbmdTeW1saW5r
cyh0ZW1wRmlsZVBhdGgoKSkpOwotCi0gICAgYXV0byBmaWxlU3ltbGlua01ldGFkYXRhID0gRmls
ZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7Ci0gICAgRVhQRUNU
X1RSVUUoISFmaWxlU3ltbGlua01ldGFkYXRhKTsKLSAgICBFWFBFQ1RfRVEoZmlsZVN5bWxpbmtN
ZXRhZGF0YS0+dHlwZSwgRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOwotICAgIEVY
UEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0RpcmVjdG9yeSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkp
KTsKLSAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xsb3dpbmdTeW1s
aW5rcyh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpKTsKLQotICAgIFN0cmluZyBmaWxlVGhhdERvZXNO
b3RFeGlzdCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlG
b2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCJfcyk7Ci0gICAgRVhQRUNUX0ZBTFNFKEZpbGVT
eXN0ZW06OmlzRGlyZWN0b3J5KGZpbGVUaGF0RG9lc05vdEV4aXN0KSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3MoZmlsZVRoYXREb2Vz
Tm90RXhpc3QpKTsKLX0KLQogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBtYWtlQWxsRGlyZWN0b3Jp
ZXMpCiB7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRW1wdHlG
b2xkZXJQYXRoKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0RpcmVjdG9yeSh0
ZW1wRW1wdHlGb2xkZXJQYXRoKCkpKTsKKyAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6ZmlsZVR5
cGUodGVtcEVtcHR5Rm9sZGVyUGF0aCgpKS52YWx1ZU9yKEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpS
ZWd1bGFyKSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSk7CiAgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSkp
OwogICAgIFN0cmluZyBzdWJGb2xkZXJQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50cyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksIHsgInN1YkZvbGRlcjEiLCAic3ViRm9s
ZGVyMiIsICJzdWJGb2xkZXIzIiB9KTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhzdWJGb2xkZXJQYXRoKSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFr
ZUFsbERpcmVjdG9yaWVzKHN1YkZvbGRlclBhdGgpKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKHN1YkZvbGRlclBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjppc0RpcmVjdG9yeShzdWJGb2xkZXJQYXRoKSk7CisgICAgRVhQRUNUX0VRKEZpbGVTeXN0
ZW06OmZpbGVUeXBlKHN1YkZvbGRlclBhdGgpLnZhbHVlT3IoRmlsZVN5c3RlbTo6RmlsZVR5cGU6
OlJlZ3VsYXIpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KTsKICAgICBFWFBFQ1Rf
VFJVRShGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSh0ZW1wRW1wdHlGb2xkZXJQ
YXRoKCkpKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzdWJGb2xk
ZXJQYXRoKSk7CiB9CkBAIC01NjAsOSArNTU2LDkgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBj
cmVhdGVTeW1ib2xpY0xpbmspCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6Y3JlYXRlU3lt
Ym9saWNMaW5rKHRlbXBGaWxlUGF0aCgpLCBzeW1saW5rUGF0aCkpOwogICAgIEVYUEVDVF9UUlVF
KEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3ltbGlua1BhdGgpKTsKIAotICAgIGF1dG8gc3ltbGlu
a01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHN5bWxpbmtQYXRoKTsKLSAgICBF
WFBFQ1RfVFJVRSghIXN5bWxpbmtNZXRhZGF0YSk7Ci0gICAgRVhQRUNUX0VRKHN5bWxpbmtNZXRh
ZGF0YS0+dHlwZSwgRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOworICAgIGF1dG8g
ZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZShzeW1saW5rUGF0aCk7CisgICAgQVNTRVJU
X1RSVUUoISFmaWxlVHlwZSk7CisgICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6
RmlsZVR5cGU6OlN5bWJvbGljTGluayk7CiAKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKHN5bWxpbmtQYXRoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMoc3ltbGlua1BhdGgpKTsKQEAgLTU3NywxMiArNTczLDkgQEAgVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBjcmVhdGVTeW1ib2xpY0xpbmtGb2xkZXIpCiAgICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgc3ltbGlu
a1BhdGgpKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN5bWxpbmtQ
YXRoKSk7CiAKLSAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRh
ZGF0YShzeW1saW5rUGF0aCk7Ci0gICAgRVhQRUNUX1RSVUUoISFzeW1saW5rTWV0YWRhdGEpOwot
ICAgIEVYUEVDVF9FUShzeW1saW5rTWV0YWRhdGEtPnR5cGUsIEZpbGVNZXRhZGF0YTo6VHlwZTo6
U3ltYm9saWNMaW5rKTsKLQotICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0RpcmVjdG9y
eShzeW1saW5rUGF0aCkpOwotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5
Rm9sbG93aW5nU3ltbGlua3Moc3ltbGlua1BhdGgpKTsKKyAgICBhdXRvIGZpbGVUeXBlID0gRmls
ZVN5c3RlbTo6ZmlsZVR5cGUoc3ltbGlua1BhdGgpOworICAgIEFTU0VSVF9UUlVFKCEhZmlsZVR5
cGUpOworICAgIEVYUEVDVF9FUSgqZmlsZVR5cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpTeW1i
b2xpY0xpbmspOwogCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShzeW1s
aW5rUGF0aCkpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN5bWxp
bmtQYXRoKSk7CkBAIC02MTcsOSArNjEwLDkgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBjcmVh
dGVIYXJkTGluaykKICAgICBBU1NFUlRfVFJVRShsaW5rRmlsZVNpemUpOwogICAgIEVYUEVDVF9F
USgqbGlua0ZpbGVTaXplLCAqZmlsZVNpemUpOwogCi0gICAgYXV0byBoYXJkbGlua01ldGFkYXRh
ID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGhhcmRsaW5rUGF0aCk7Ci0gICAgQVNTRVJUX1RS
VUUoISFoYXJkbGlua01ldGFkYXRhKTsKLSAgICBFWFBFQ1RfRVEoaGFyZGxpbmtNZXRhZGF0YS0+
dHlwZSwgRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKKyAgICBhdXRvIGZpbGVUeXBlID0gRmls
ZVN5c3RlbTo6ZmlsZVR5cGUoaGFyZGxpbmtQYXRoKTsKKyAgICBBU1NFUlRfVFJVRSghIWZpbGVU
eXBlKTsKKyAgICBFWFBFQ1RfRVEoKmZpbGVUeXBlLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVn
dWxhcik7CiAKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHRlbXBGaWxl
UGF0aCgpKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEZp
bGVQYXRoKCkpKTsKQEAgLTY0Nyw5ICs2NDAsOSBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGNy
ZWF0ZUhhcmRMaW5rT3JDb3B5RmlsZSkKICAgICBBU1NFUlRfVFJVRShsaW5rRmlsZVNpemUpOwog
ICAgIEVYUEVDVF9FUSgqbGlua0ZpbGVTaXplLCAqZmlsZVNpemUpOwogCi0gICAgYXV0byBoYXJk
bGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGhhcmRsaW5rUGF0aCk7Ci0g
ICAgRVhQRUNUX1RSVUUoISFoYXJkbGlua01ldGFkYXRhKTsKLSAgICBFWFBFQ1RfRVEoaGFyZGxp
bmtNZXRhZGF0YS0+dHlwZSwgRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKKyAgICBhdXRvIGZp
bGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUoaGFyZGxpbmtQYXRoKTsKKyAgICBBU1NFUlRf
VFJVRSghIWZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEoKmZpbGVUeXBlLCBGaWxlU3lzdGVtOjpG
aWxlVHlwZTo6UmVndWxhcik7CiAKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKHRlbXBGaWxlUGF0aCgpKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHModGVtcEZpbGVQYXRoKCkpKTsKQEAgLTczMSwxNiArNzI0LDYgQEAgVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSkKICAgICB9KTsKIH0KIAotVEVTVF9G
KEZpbGVTeXN0ZW1UZXN0LCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZVZpYUZpbGVNZXRhZGF0YSkK
LXsKLSAgICBydW5HZXRGaWxlTW9kaWZpY2F0aW9uVGltZVRlc3QodGVtcEZpbGVQYXRoKCksIFtd
KGNvbnN0IFN0cmluZyYgcGF0aCkgLT4gT3B0aW9uYWw8V2FsbFRpbWU+IHsKLSAgICAgICAgYXV0
byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShwYXRoKTsKLSAgICAgICAgaWYg
KCFtZXRhZGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIHJl
dHVybiBtZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZTsKLSAgICB9KTsKLX0KLQogVEVTVF9GKEZp
bGVTeXN0ZW1UZXN0LCB1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZSkKIHsKICAgICBhdXRvIG1v
ZGlmaWNhdGlvblRpbWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSh0ZW1w
RmlsZVBhdGgoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428685</attachid>
            <date>2021-05-14 16:55:26 -0700</date>
            <delta_ts>2021-05-14 21:03:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225820-20210514165525.patch</filename>
            <type>text/plain</type>
            <size>65007</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
M2E3NWE2ZmEzMjAyYWRiY2VjNWY2ODliOTIyMTc1NWJjZjVkZjc1Li4yMjI4ZTAxOGYxZWYwOTRj
MmRiMjZjNGZkYWQxM2M1YjhiNTRjYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERyb3AgRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgLyBmaWxlTWV0YWRhdGFG
b2xsb3dpbmdTeW1saW5rcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjU4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgb3VyIGNvZGUgYmFzZSBiZWNhdXNlIG9mIHRoZSBGaWxlU3lzdGVt
IEFQSSBjaGFuZ2VzLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAgICAgICAodmFs
aWRhdGVCeXRlY29kZUNhY2hlUGF0aCk6CisKIDIwMjEtMDUtMTQgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBCYXNlbGluZSBKSVQgcHJvcGVydHkg
YWNjZXNzIHNsb3cgcGF0aHMgdXNpbmcgSklUIHRodW5rcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNWQwMzljNjUyOGM2OWJh
Y2FkOTc5NWEzNTVlNTExMzBmZDgzN2FhNi4uYTEzNDQ0Y2Y3MWU1OGJmNzhhYTA0ZWY5Y2U3NTkx
ZjcwM2YyNGEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgRmlsZVN5c3RlbTo6ZmlsZU1ldGFk
YXRhKCkgLyBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcygpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4MjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEcm9wIEZpbGVTeXN0ZW06OmZpbGVNZXRh
ZGF0YSgpIC8gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoKS4gVGhvc2UgZG9uJ3QgbWF0
Y2ggdmVyeSBjbG9zZWx5IHRoZQorICAgICAgICBzdGQ6OmZpbGVzeXN0ZW0gQVBJIHdlIHVzZSBp
bnRlcm5hbGx5IGFuZCB0aGV5IGFyZSBub3QgdmVyeSBlZmZpY2llbnQgYmVjYXVzZSB3ZSBnYXRo
ZXIgc2V2ZXJhbCBhdHRyaWJ1dGVzCisgICAgICAgIG9mIGEgZmlsZSBidXQgdGhlIGNhbGxlcnMg
YXJlIHVzdWFsbHkgb25seSBpbnRlcmVzdGVkIGluIG9uZSB0aGluZyAoZS5nLiBmaWxlIHR5cGUg
b3IgZmlsZSBzaXplKS4KKworICAgICAgICBDYWxsZXJzIGludGVyZXN0ZWQgaW4gdGhlIGZpbGUg
c2l6ZSwgY2FuIGNhbGwgdGhlIHByZS1leGlzdGluZyBGaWxlU3lzdGVtOjpmaWxlU2l6ZSgpLiBG
b3IgY2FsbCBzaXRlcworICAgICAgICB3YW50aW5nIHRvIGNoZWNrIGlmIGl0IGlzIGEgaGlkZGVu
IGZpbGUsIEkgaW50cm9kdWNlZCBhIG5ldyBGaWxlU3lzdGVtOjppc0hpZGRlbkZpbGUoKSBBUEku
IEZvciBjYWxsIHNpdGVzCisgICAgICAgIGludGVyZXN0ZWQgaW4gdGhlIGZpbGUgdHlwZSwgSSBy
ZXBsYWNlZCBGaWxlU3lzdGVtOjppc0RpcmVjdG9yeSgpIC8gRmlsZVN5c3RlbTo6aXNEaXJlY3Rv
cnlGb2xsb3dpbmdTeW1saW5rcygpCisgICAgICAgIHdpdGggbW9yZSBnZW5lcmljIEZpbGVTeXN0
ZW06OmZpbGVUeXBlKCkgLyBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKCku
CisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3
dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0ZpbGVNZXRhZGF0YS5oOiBSZW1vdmVk
LgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3Rl
bUltcGw6OmlzSGlkZGVuRmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxl
VHlwZVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltTGlua3MpOgorICAgICAgICAoV1RGOjpGaWxlU3lz
dGVtSW1wbDo6ZmlsZVR5cGUpOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZmlsZVR5
cGVGb2xsb3dpbmdTeW1saW5rcyk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAgICAg
ICAgKiB3dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHA6CisgICAgICAgICogd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoK
KwogMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IERyb3AgImdldCIgcHJlZml4IGZyb20gV1RGOjpGaWxlU3lzdGVtJ3MgZ2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUoKSAvIGdldEZpbGVDcmVhdGlvblRpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlmZmEyZjQ3
NzI1YmIzZTMwYjc5YTk5M2ExNGUzMTQ4YTM4ODg3OGQuLmQ3M2I2NzI1ZDZiYTgxMWE3YTkwMzVm
ZDgzMGYzMWNlNDIxN2JjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMS0wNS0x
NCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgRmlsZVN5
c3RlbTo6ZmlsZU1ldGFkYXRhKCkgLyBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcygpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4MjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgb3Vy
IGNvZGUgYmFzZSBiZWNhdXNlIG9mIHRoZSBGaWxlU3lzdGVtIEFQSSBjaGFuZ2VzLgorCisgICAg
ICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bGlzdERpcmVjdG9yeVdpdGhNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjp0b0Zp
bGVTeXN0ZW1FbnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVUeXBlSWdub3JpbmdIaWRk
ZW5GaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZVBhdGhJc0V4cGVjdGVkVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Z2V0RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
RmlsZVN5c3RlbTo6Z2V0RmlsZSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50Rm9yRmlsZVBhdGgp
OgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpp
c0RpcmVjdG9yeSBjb25zdCk6CisgICAgICAgICogaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kRGlyZWN0b3J5RmlsZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Z2F0aGVyRmlsZUluZm9ybWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpzZXRTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6ZW5zdXJlQXNzZXRDYWNoZUV4aXN0c0ZvclBhdGgpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6c3RhcnRUcmFja2luZ01vZGlmaWNh
dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6cHJlcGFyZUZvclVwbG9hZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSk6CisKIDIwMjEt
MDUtMTQgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtzaG93UmVu
ZGVyVHJlZV0gRG8gbm90IGludGVncmFsIGZsb29yIHRoZSBvdmVyZmxvdyB2YWx1ZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggNjE1OTQ5NGUxNjY1NDNjMTgxMTA0MWRmZGI0Y2JlZmY0YTQ4MTc3Zi4uOGVhYmQzNTU5
MWUzYzA0MDhjNjgzMzYwMWUzZDA5OWI2YWJjODdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBA
QAorMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IERyb3AgRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgLyBmaWxlTWV0YWRhdGFGb2xsb3dpbmdT
eW1saW5rcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgb3VyIGNvZGUgYmFzZSBiZWNhdXNlIG9mIHRoZSBGaWxlU3lzdGVtIEFQSSBjaGFu
Z2VzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpnZXREaXJlY3RvcnlTaXplKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmdldERpcmVjdG9yaWVzKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzRnJv
bURpc2spOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVT
eXN0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OnRyYXZlcnNlRGlyZWN0
b3J5KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OmVuc3VyZVNhbmRib3hDYWNoZURpcmVjdG9yeSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Omlz
SW50ZXJuYWxJbnN0YWxsKToKKwogMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIERyb3AgImdldCIgcHJlZml4IGZyb20gV1RGOjpGaWxlU3lzdGVt
J3MgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoKSAvIGdldEZpbGVDcmVhdGlvblRpbWUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0KaW5kZXggMWRjYTdjMTU3ODEyMWRmMzZkY2Uy
ZjdlZDZiMGExYjUwZDM5NWIyMC4uYmQzNGZiZTVjOTM3MjAxZWUwZmI3NWVjZjNiOGJkMDMzZmY3
NmRkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0zOCw3ICszOCw2
IEBACiAjaW1wb3J0ICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKICNpbXBvcnQgIlN5bWJv
bC5oIgogI2ltcG9ydCA8c3lzL3N0YXQuaD4KLSNpbXBvcnQgPHd0Zi9GaWxlTWV0YWRhdGEuaD4K
ICNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvU0hBMS5oPgogI2ltcG9y
dCA8d3RmL1Njb3BlLmg+CkBAIC03Nyw4ICs3Niw4IEBAIHN0YXRpYyBib29sIHZhbGlkYXRlQnl0
ZWNvZGVDYWNoZVBhdGgoTlNVUkwqIGNhY2hlUGF0aCwgTlNFcnJvcioqIGVycm9yKQogCiAgICAg
U3RyaW5nIHN5c3RlbVBhdGggPSBjYWNoZVBhdGhVUkwuZmlsZVN5c3RlbVBhdGgoKTsKIAotICAg
IGlmIChhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHN5c3RlbVBhdGgp
KSB7Ci0gICAgICAgIGlmIChtZXRhZGF0YS0+dHlwZSAhPSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZp
bGUpIHsKKyAgICBpZiAoYXV0byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHN5c3Rl
bVBhdGgpKSB7CisgICAgICAgIGlmICgqZmlsZVR5cGUgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6
OlJlZ3VsYXIpIHsKICAgICAgICAgICAgIGNyZWF0ZUVycm9yKFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiQ2FjaGUgcGF0aCBgJUBgIGFscmVhZHkgZXhpc3RzIGFuZCBpcyBub3QgYSBmaWxl
Iiwgc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oc3lzdGVtUGF0aCldLCBlcnJvcik7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTkwLDcgKzg5LDggQEAgc3RhdGljIGJv
b2wgdmFsaWRhdGVCeXRlY29kZUNhY2hlUGF0aChOU1VSTCogY2FjaGVQYXRoLCBOU0Vycm9yKiog
ZXJyb3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIUZpbGVTeXN0
ZW06OmlzRGlyZWN0b3J5KGRpcmVjdG9yeSkpIHsKKyAgICBhdXRvIGRpcmVjdG9yeVR5cGUgPSBG
aWxlU3lzdGVtOjpmaWxlVHlwZShkaXJlY3RvcnkpOworICAgIGlmICghZGlyZWN0b3J5VHlwZSB8
fCAqZGlyZWN0b3J5VHlwZSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KSB7CiAg
ICAgICAgIGNyZWF0ZUVycm9yKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQ2FjaGUgZGly
ZWN0b3J5IGAlQGAgaXMgbm90IGEgZGlyZWN0b3J5IG9yIGRvZXMgbm90IGV4aXN0Iiwgc3RhdGlj
X2Nhc3Q8TlNTdHJpbmcgKj4oZGlyZWN0b3J5KV0sIGVycm9yKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDNhZTA1ZTcwMTVlNTYyZGRkNGQyNjNkYjEzZjA3NDk3MzEwY2ZlMmMuLmIxMWUwOThjZTQ3N2Q2
OWQ4NjliMmYxNWU3NTNjOTkzZTE4MDM3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNTEyLDcgKzUxMiw2IEBACiAJCUEzMEQ0MTJDMUYwREUwQkEwMEI3
MTk1NCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
b2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDEyRDFGMERF
MTNGMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMyRDhG
QTQyMUZGRkFCNDAwNzgwNjYyIC8qIFRocmVhZGluZ1BPU0lYLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZGluZ1BPU0lYLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQTMzMUQ5NTgyMUYyNDk3ODAwOUYwMkFBIC8qIEZpbGVNZXRhZGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlTWV0YWRhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMzMUQ5NTkyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVT
eXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzMxRDk1QTIxRjI0OTkyMDA5RjAyQUEgLyog
RmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxl
U3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMzMUQ5NUMyMUYyNDlF
NDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGaWxlU3lzdGVtQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTAzOSw3ICsxMDM4LDYgQEAKIAkJCQlBOEE0NzJBMTE1MUE4MjVBMDA0MTIzRkYgLyogRmFz
dE1hbGxvYy5jcHAgKi8sCiAJCQkJQThBNDcyQTIxNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxs
b2MuaCAqLywKIAkJCQkwRjc5QzdDMzFFNzM1MTE4MDBFQjM0RDEgLyogRmFzdFRMUy5oICovLAot
CQkJCUEzMzFEOTU4MjFGMjQ5NzgwMDlGMDJBQSAvKiBGaWxlTWV0YWRhdGEuaCAqLywKIAkJCQkw
RjlEMzM1QjE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCAqLywKIAkJCQkw
RjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJQTMz
MUQ5NUEyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dAppbmRleCBiNDljMTM3M2ZlMjdlODRhOGRjM2IyYmZlNDc1MzkyZWI1OTMzMWJiLi5lN2Ri
YzRmMDJmYTA5NmE2ODM5YmZmOWJkMzI1MjI4MDZkNzBhMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dApAQCAtNjgsNyArNjgsNiBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgRmFzdEJpdFZl
Y3Rvci5oCiAgICAgRmFzdE1hbGxvYy5oCiAgICAgRmFzdFRMUy5oCi0gICAgRmlsZU1ldGFkYXRh
LmgKICAgICBGaWxlUHJpbnRTdHJlYW0uaAogICAgIEZpbGVTeXN0ZW0uaAogICAgIEZpeGVkVmVj
dG9yLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVNZXRhZGF0YS5oIGIvU291cmNl
L1dURi93dGYvRmlsZU1ldGFkYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQz
YTBhMmFhYjc1MzNiZDA3YjIwMDkxNDE1MWNkMmJhNzFmNTU4NDQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZU1ldGFkYXRh
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
IDx3dGYvV2FsbFRpbWUuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXN0cnVjdCBGaWxlTWV0YWRh
dGEgewotICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLQotICAgIC8vIFRoZSBs
YXN0IG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRoZSBmaWxlLCBpbiBzZWNvbmRzLgotICAgIFdhbGxU
aW1lIG1vZGlmaWNhdGlvblRpbWU7Ci0KLSAgICAvLyBUaGUgbGVuZ3RoIG9mIHRoZSBmaWxlIGlu
IGJ5dGVzLgotICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0KLSAgICBib29sIGlzSGlkZGVuOwotCi0g
ICAgZW51bSBjbGFzcyBUeXBlIHsgRmlsZSwgRGlyZWN0b3J5LCBTeW1ib2xpY0xpbmsgfTsKLSAg
ICBUeXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpGaWxl
TWV0YWRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IGExNjdhNzQ0N2YyYmE3ZjQ4Zjc1OGJk
YWMxYWJkMGY2YjQyYjRhODcuLjQ3ZWFjY2ZlNDFiNjVkZGMyZTY3NmFmODEyOTA4YTUxM2ZmMTFh
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KIAogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51
bWJlci5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbmNsdWRlIDx3dGYvSGV4
TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZEZpbGVz
eXN0ZW0uaD4KQEAgLTEzOSwyMCArMTM4LDYgQEAgc3RhdGljIFdhbGxUaW1lIHRvV2FsbFRpbWUo
c3RkOjpmaWxlc3lzdGVtOjpmaWxlX3RpbWVfdHlwZSBmaWxlVGltZSkKICAgICByZXR1cm4gV2Fs
bFRpbWU6OmZyb21SYXdTZWNvbmRzKHRvVGltZVQoZmlsZVRpbWUpKTsKIH0KIAotc3RhdGljIHN0
ZDo6ZmlsZXN5c3RlbTo6cGF0aCByZXNvbHZlU3ltbGlua3Moc3RkOjpmaWxlc3lzdGVtOjpwYXRo
IHBhdGgsIHN0ZDo6ZXJyb3JfY29kZSYgZWMpCi17Ci0jaWZkZWYgTUFYU1lNTElOS1MKLSAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFN5bWxpbmtEZXB0aCA9IE1BWFNZTUxJTktTOwot
I2Vsc2UKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFN5bWxpbmtEZXB0aCA9IDQw
OwotI2VuZGlmCi0KLSAgICB1bnNpZ25lZCBjdXJyZW50RGVwdGggPSAwOwotICAgIHdoaWxlICgr
K2N1cnJlbnREZXB0aCA8PSBtYXhTeW1saW5rRGVwdGggJiYgIWVjICYmIHN0ZDo6ZmlsZXN5c3Rl
bTo6aXNfc3ltbGluayhwYXRoLCBlYykpCi0gICAgICAgIHBhdGggPSBzdGQ6OmZpbGVzeXN0ZW06
OnJlYWRfc3ltbGluayhwYXRoLCBlYyk7Ci0gICAgcmV0dXJuIHBhdGg7Ci19Ci0KIFN0cmluZyBl
bmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmIGlucHV0U3RyaW5nKQogewogICAgIHVuc2ln
bmVkIGxlbmd0aCA9IGlucHV0U3RyaW5nLmxlbmd0aCgpOwpAQCAtNjA2LDE4ICs1OTEsNiBAQCBP
cHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVy
biBzaXplOwogfQogCi1ib29sIGlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAg
ICBzdGQ6OmVycm9yX2NvZGUgZWM7Ci0gICAgcmV0dXJuIHN0ZDo6ZmlsZXN5c3RlbTo6c3ltbGlu
a19zdGF0dXModG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpLnR5cGUoKSA9PSBzdGQ6OmZp
bGVzeXN0ZW06OmZpbGVfdHlwZTo6ZGlyZWN0b3J5OwotfQotCi1ib29sIGlzRGlyZWN0b3J5Rm9s
bG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHN0ZDo6ZXJyb3JfY29k
ZSBlYzsKLSAgICByZXR1cm4gc3RkOjpmaWxlc3lzdGVtOjpzdGF0dXModG9TdGRGaWxlU3lzdGVt
UGF0aChwYXRoKSwgZWMpLnR5cGUoKSA9PSBzdGQ6OmZpbGVzeXN0ZW06OmZpbGVfdHlwZTo6ZGly
ZWN0b3J5OwotfQotCiBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgp
CiB7CiAgICAgc3RkOjplcnJvcl9jb2RlIGVjOwpAQCAtNjkyLDU2ICs2NjUsNDQgQEAgYm9vbCB1
cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJu
ICFlYzsKIH0KIAotZW51bSBjbGFzcyBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHsgTm8sIFll
cyB9Owotc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhUG90ZW50aWFs
bHlGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgsIFNob3VsZEZvbGxvd1N5bWJv
bGljTGlua3Mgc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcykKK2Jvb2wgaXNIaWRkZW5GaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBpZiAocGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIGZzUGF0aCA9IHRvU3RkRmlsZVN5c3RlbVBh
dGgocGF0aCk7Ci0KLSAgICBzdGQ6OmVycm9yX2NvZGUgZWM7Ci0gICAgaWYgKHNob3VsZEZvbGxv
d1N5bWJvbGljTGlua3MgPT0gU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzICYmIHN0ZDo6
ZmlsZXN5c3RlbTo6aXNfc3ltbGluayhmc1BhdGgsIGVjKSkgewotICAgICAgICBmc1BhdGggPSBy
ZXNvbHZlU3ltbGlua3MoZnNQYXRoLCBlYyk7Ci0gICAgICAgIGlmIChlYykKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgZWMgPSB7IH07Ci0gICAgc3RkOjpm
aWxlc3lzdGVtOjpkaXJlY3RvcnlfZW50cnkgZW50cnkoZnNQYXRoLCBlYyk7Ci0gICAgaWYgKGVj
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byBtb2RpZmljYXRpb25U
aW1lID0gdG9XYWxsVGltZShlbnRyeS5sYXN0X3dyaXRlX3RpbWUoZWMpKTsKLQotICAgIC8vIE5v
dGUgdGhhdCB0aGUgcmVzdWx0IG9mIGF0dGVtcHRpbmcgdG8gZGV0ZXJtaW5lIHRoZSBzaXplIG9m
IGEgZGlyZWN0b3J5IGlzIGltcGxlbWVudGF0aW9uLWRlZmluZWQuCi0gICAgYXV0byBmaWxlU2l6
ZSA9IGVudHJ5LmZpbGVfc2l6ZShlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICBmaWxlU2l6ZSA9
IDA7Ci0KICNpZiBPUyhVTklYKQorICAgIGF1dG8gZnNQYXRoID0gdG9TdGRGaWxlU3lzdGVtUGF0
aChwYXRoKTsKICAgICBzdGQ6OmZpbGVzeXN0ZW06OnBhdGg6OnN0cmluZ190eXBlIGZpbGVuYW1l
ID0gZnNQYXRoLmZpbGVuYW1lKCk7Ci0gICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5lbXB0
eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKKyAgICByZXR1cm4gIWZpbGVuYW1lLmVtcHR5KCkg
JiYgZmlsZW5hbWVbMF0gPT0gJy4nOwogI2Vsc2UKLSAgICBib29sIGlzSGlkZGVuID0gZmFsc2U7
CisgICAgVU5VU0VEX1BBUkFNKHBhdGgpOworICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgotICAg
IEZpbGVNZXRhZGF0YTo6VHlwZSB0eXBlID0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOwotICAg
IGlmIChlbnRyeS5pc19zeW1saW5rKGVjKSkKLSAgICAgICAgdHlwZSA9IEZpbGVNZXRhZGF0YTo6
VHlwZTo6U3ltYm9saWNMaW5rOwotICAgIGVsc2UgaWYgKGVudHJ5LmlzX2RpcmVjdG9yeShlYykp
Ci0gICAgICAgIHR5cGUgPSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKK30KIAotICAg
IHJldHVybiBGaWxlTWV0YWRhdGEgeyBtb2RpZmljYXRpb25UaW1lLCBzdGF0aWNfY2FzdDxsb25n
IGxvbmc+KGZpbGVTaXplKSwgaXNIaWRkZW4sIHR5cGUgfTsKK2VudW0gY2xhc3MgU2hvdWxkRm9s
bG93U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMgfTsKK3N0YXRpYyBPcHRpb25hbDxGaWxlVHlwZT4g
ZmlsZVR5cGVQb3RlbnRpYWxseUZvbGxvd2luZ1N5bUxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCwg
U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQorewor
ICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKKyAgICBhdXRvIHN0YXR1cyA9IHNob3VsZEZvbGxvd1N5
bWJvbGljTGlua3MgPT0gU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzID8gc3RkOjpmaWxl
c3lzdGVtOjpzdGF0dXModG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpIDogc3RkOjpmaWxl
c3lzdGVtOjpzeW1saW5rX3N0YXR1cyh0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgpLCBlYyk7Cisg
ICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHN3aXRjaCAoc3Rh
dHVzLnR5cGUoKSkgeworICAgIGNhc2Ugc3RkOjpmaWxlc3lzdGVtOjpmaWxlX3R5cGU6OmRpcmVj
dG9yeToKKyAgICAgICAgcmV0dXJuIEZpbGVUeXBlOjpEaXJlY3Rvcnk7CisgICAgY2FzZSBzdGQ6
OmZpbGVzeXN0ZW06OmZpbGVfdHlwZTo6c3ltbGluazoKKyAgICAgICAgcmV0dXJuIEZpbGVUeXBl
OjpTeW1ib2xpY0xpbms7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IHJldHVybiBGaWxlVHlwZTo6UmVndWxhcjsKIH0KIAotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBm
aWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQorT3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVU
eXBlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhUG90ZW50
aWFsbHlGb2xsb3dpbmdTeW1saW5rcyhwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpO
byk7CisgICAgcmV0dXJuIGZpbGVUeXBlUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1MaW5rcyhwYXRo
LCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObyk7CiB9CiAKLU9wdGlvbmFsPEZpbGVNZXRh
ZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQor
T3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5n
JiBwYXRoKQogewotICAgIHJldHVybiBmaWxlTWV0YWRhdGFQb3RlbnRpYWxseUZvbGxvd2luZ1N5
bWxpbmtzKHBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Olllcyk7CisgICAgcmV0dXJu
IGZpbGVUeXBlUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1MaW5rcyhwYXRoLCBTaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzOjpZZXMpOwogfQogCiBTdHJpbmcgcGF0aEZpbGVOYW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCA1YjlhODY3MjIwNDlhYWY2ZmRiZWMyOTg0NDNm
NjlkZmNlMDdkMDQ2Li43MzVhMDc3YjIwNTlhYjNhMWJjNGE5MTJkODUzNzg2YWFiMDk1ZDY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5oCkBAIC01OCw4ICs1OCw2IEBAIHR5cGVkZWYgc3RydWN0IF9HRmlsZUlP
U3RyZWFtIEdGaWxlSU9TdHJlYW07CiAKIG5hbWVzcGFjZSBXVEYgewogCi1zdHJ1Y3QgRmlsZU1l
dGFkYXRhOwotCiBuYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwgewogCiAvLyBQbGF0Zm9ybUZpbGVI
YW5kbGUKQEAgLTExMSwxNSArMTA5LDEyIEBAIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGZpbGVF
eGlzdHMoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVGaWxl
KGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlRW1wdHlEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBtb3ZlRmlsZShj
b25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCk7Ci1XVEZfRVhQT1JU
X1BSSVZBVEUgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplKGNvbnN0IFN0cmluZyYpOworV1RG
X0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcm
KTsgLy8gRm9sbG93cyBzeW1saW5rcy4KIFdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50
NjRfdD4gZmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKIFdURl9FWFBPUlRfUFJJVkFURSBP
cHRpb25hbDxXYWxsVGltZT4gZmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJik7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCB1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBT
dHJpbmcmIHBhdGgpOyAvLyBTZXRzIG1vZGlmaWNhdGlvbiB0aW1lIHRvIG5vdy4KIFdURl9FWFBP
UlRfUFJJVkFURSBPcHRpb25hbDxXYWxsVGltZT4gZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJp
bmcmKTsgLy8gTm90IGFsbCBwbGF0Zm9ybXMgc3RvcmUgZmlsZSBjcmVhdGlvbiB0aW1lLgotV1RG
X0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0
IFN0cmluZyYgcGF0aCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8RmlsZU1ldGFkYXRh
PiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpOwotV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci1XVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBpc0RpcmVjdG9yeUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmlu
ZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIaWRkZW5GaWxlKGNvbnN0IFN0cmluZyYp
OwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7CiBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBj
b25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpOwogV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0
cmluZyYgcGF0aCk7CkBAIC0xMzEsNiArMTI2LDEwIEBAIFdURl9FWFBPUlRfUFJJVkFURSBPcHRp
b25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYpOwogV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0
aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk7
CiAKK2VudW0gY2xhc3MgRmlsZVR5cGUgeyBSZWd1bGFyLCBEaXJlY3RvcnksIFN5bWJvbGljTGlu
ayB9OworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZShjb25z
dCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxGaWxlVHlwZT4gZmlsZVR5
cGVGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmKTsKKwogV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgc2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlciA9IHsgfSk7CiAKIGJvb2wgY2FuRXhjbHVk
ZUZyb21CYWNrdXAoKTsgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBmaWxlIGNhbiBldmVyIGJlIGV4
Y2x1ZGVkIGZyb20gYmFja3VwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxl
U3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApp
bmRleCAxMzNjNDIwZTAyNjE5N2JiZDdlOTVlNzRhNDYzNzBiZWZmNWM0Yzg1Li5iZDkzZjBiM2E4
MmU4M2VhYTZmNTk0ZjdmNTYxMTBjMWNjMjIxZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+
CiAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgotI2lu
Y2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL0dMaWJVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRy
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
IGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCBiYjBiYzFm
YzYwYjA3YWFlMDZlMzdkODk1YjczM2MyOGI0NjBkMDg5Li41NGM2NjFhZTE2MjNiZTNkYzlhZDJm
Y2U4YWUwZmRmZmZjMWE2MzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRl
IDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9G
aWxlTWV0YWRhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IGQxOTIxNTc1MzRiMWUxY2Rm
ZTYxN2Q5ZDQwZjY0NmYyMzM4YTFhNGQuLmE1ODQ4MzRjMzRhNzk4ZWFiZDY0OThiZTA5YjMxZjgw
N2ZkYmE0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTM2LDcgKzM2
LDYgQEAKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNs
dWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYv
RmlsZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3Bw
CmluZGV4IDBiYTAxYjJmZWJkNzU2Y2UyMzg3YjM3MGIyNGVjMmNhNjkzY2I3YzguLmUxYzIzZDBl
YzRmNjUwYWJiODhhNTRkYWI2NjFmMjI4MTkxNjkwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTMxLDcgKzMxLDYg
QEAKICNpbmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgotI2lu
Y2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4K
QEAgLTQzLDI1ICs0MiwzNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRE9NRmlsZVN5
c3RlbSk7CiAKIHN0cnVjdCBMaXN0ZWRDaGlsZCB7CiAgICAgU3RyaW5nIGZpbGVuYW1lOwotICAg
IEZpbGVNZXRhZGF0YTo6VHlwZSB0eXBlOworICAgIEZpbGVTeXN0ZW06OkZpbGVUeXBlIHR5cGU7
CiAKICAgICBMaXN0ZWRDaGlsZCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGZpbGVu
YW1lLmlzb2xhdGVkQ29weSgpLCB0eXBlIH07IH0KIH07CiAKK3N0YXRpYyBPcHRpb25hbDxGaWxl
U3lzdGVtOjpGaWxlVHlwZT4gZmlsZVR5cGVJZ25vcmluZ0hpZGRlbkZpbGVzKGNvbnN0IFN0cmlu
ZyYgZnVsbFBhdGgpCit7CisgICAgaWYgKEZpbGVTeXN0ZW06OmlzSGlkZGVuRmlsZShmdWxsUGF0
aCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmZpbGVUeXBlKGZ1bGxQYXRoKTsKK30KKwogc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0
ZWRDaGlsZD4+IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBmdWxsUGF0
aCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06
OmlzRGlyZWN0b3J5KGZ1bGxQYXRoKSkKKyAgICBhdXRvIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6
ZmlsZVR5cGUoZnVsbFBhdGgpOworICAgIGlmICghZmlsZVR5cGUgfHwgKmZpbGVUeXBlICE9IEZp
bGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOb3RGb3VuZEVycm9yLCAiUGF0aCBubyBsb25nZXIgZXhpc3RzIG9yIGlzIG5vIGxvbmdlciBh
IGRpcmVjdG9yeSIgfTsKIAogICAgIGF1dG8gY2hpbGROYW1lcyA9IEZpbGVTeXN0ZW06Omxpc3RE
aXJlY3RvcnkoZnVsbFBhdGgpOwogICAgIFZlY3RvcjxMaXN0ZWRDaGlsZD4gbGlzdGVkQ2hpbGRy
ZW47CiAgICAgbGlzdGVkQ2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjaGlsZE5hbWVz
LnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBjaGlsZE5hbWUgOiBjaGlsZE5hbWVzKSB7Ci0gICAg
ICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZ1bGxQYXRoLCBjaGlsZE5hbWUpKTsKLSAgICAgICAg
aWYgKCFtZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlzSGlkZGVuKQorICAgICAgICBhdXRv
IGNoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmdWxsUGF0
aCwgY2hpbGROYW1lKTsKKyAgICAgICAgYXV0byBmaWxlVHlwZSA9IGZpbGVUeXBlSWdub3JpbmdI
aWRkZW5GaWxlcyhjaGlsZFBhdGgpOworICAgICAgICBpZiAoIWZpbGVUeXBlKQogICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hlY2tlZEFwcGVuZChMaXN0
ZWRDaGlsZCB7IGNoaWxkTmFtZSwgbWV0YWRhdGEudmFsdWUoKS50eXBlIH0pOworICAgICAgICBs
aXN0ZWRDaGlsZHJlbi51bmNoZWNrZWRBcHBlbmQoTGlzdGVkQ2hpbGQgeyBjaGlsZE5hbWUsICpm
aWxlVHlwZSB9KTsKICAgICB9CiAgICAgcmV0dXJuIGxpc3RlZENoaWxkcmVuOwogfQpAQCAtNzcs
MTAgKzg1LDEwIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRy
eT4+PiB0b0ZpbGVTeXN0ZW1FbnRyaWVzKFNjcmlwdEV4ZWN1CiAgICAgZm9yIChhdXRvJiBjaGls
ZCA6IGxpc3RlZENoaWxkcmVuLnJldHVyblZhbHVlKCkpIHsKICAgICAgICAgU3RyaW5nIHZpcnR1
YWxQYXRoID0gcGFyZW50VmlydHVhbFBhdGggKyAiLyIgKyBjaGlsZC5maWxlbmFtZTsKICAgICAg
ICAgc3dpdGNoIChjaGlsZC50eXBlKSB7Ci0gICAgICAgIGNhc2UgRmlsZU1ldGFkYXRhOjpUeXBl
OjpGaWxlOgorICAgICAgICBjYXNlIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyOgogICAg
ICAgICAgICAgZW50cmllcy51bmNoZWNrZWRBcHBlbmQoRmlsZVN5c3RlbUZpbGVFbnRyeTo6Y3Jl
YXRlKGNvbnRleHQsIGZpbGVTeXN0ZW0sIHZpcnR1YWxQYXRoKSk7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeToKKyAgICAgICAg
Y2FzZSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5OgogICAgICAgICAgICAgZW50cmll
cy51bmNoZWNrZWRBcHBlbmQoRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoY29udGV4
dCwgZmlsZVN5c3RlbSwgdmlydHVhbFBhdGgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgpAQCAtMTY2LDI4ICsxNzQsMjAgQEAgUmVmPEZpbGVTeXN0ZW1FbnRyeT4gRE9N
RmlsZVN5c3RlbTo6ZmlsZUFzRW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkK
ICAgICByZXR1cm4gRmlsZVN5c3RlbUZpbGVFbnRyeTo6Y3JlYXRlKGNvbnRleHQsICp0aGlzLCAi
LyIgKyBtX2ZpbGUtPm5hbWUoKSk7CiB9CiAKLXN0YXRpYyBFeGNlcHRpb25PcjxTdHJpbmc+IHZh
bGlkYXRlUGF0aElzRXhwZWN0ZWRUeXBlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFN0cmluZyYm
IHZpcnR1YWxQYXRoLCBGaWxlTWV0YWRhdGE6OlR5cGUgZXhwZWN0ZWRUeXBlKQorc3RhdGljIEV4
Y2VwdGlvbk9yPFN0cmluZz4gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoY29uc3QgU3RyaW5n
JiBmdWxsUGF0aCwgU3RyaW5nJiYgdmlydHVhbFBhdGgsIEZpbGVTeXN0ZW06OkZpbGVUeXBlIGV4
cGVjdGVkVHlwZSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIGF1dG8g
bWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoZnVsbFBhdGgpOwotICAgIGlmICgh
bWV0YWRhdGEgfHwgbWV0YWRhdGEudmFsdWUoKS5pc0hpZGRlbikKKyAgICBhdXRvIGZpbGVUeXBl
ID0gZmlsZVR5cGVJZ25vcmluZ0hpZGRlbkZpbGVzKGZ1bGxQYXRoKTsKKyAgICBpZiAoIWZpbGVU
eXBlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIlBhdGggZG9l
cyBub3QgZXhpc3QiX3MgfTsKIAotICAgIGlmIChtZXRhZGF0YS52YWx1ZSgpLnR5cGUgIT0gZXhw
ZWN0ZWRUeXBlKQorICAgIGlmICgqZmlsZVR5cGUgIT0gZXhwZWN0ZWRUeXBlKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgVHlwZU1pc21hdGNoRXJyb3IsICJFbnRyeSBhdCBwYXRoIGRvZXMg
bm90IGhhdmUgZXhwZWN0ZWQgdHlwZSIgfTsKIAogICAgIHJldHVybiBXVEZNb3ZlKHZpcnR1YWxQ
YXRoKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YTo6VHlwZT4gZmlsZVR5cGUo
Y29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLXsKLSAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3Rl
bTo6ZmlsZU1ldGFkYXRhKGZ1bGxQYXRoKTsKLSAgICBpZiAoIW1ldGFkYXRhIHx8IG1ldGFkYXRh
LnZhbHVlKCkuaXNIaWRkZW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcmV0
dXJuIG1ldGFkYXRhLnZhbHVlKCkudHlwZTsKLX0KLQogLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5p
by9lbnRyaWVzLWFwaS8jcmVzb2x2ZS1hLXJlbGF0aXZlLXBhdGgKIHN0YXRpYyBTdHJpbmcgcmVz
b2x2ZVJlbGF0aXZlVmlydHVhbFBhdGgoU3RyaW5nVmlldyBiYXNlVmlydHVhbFBhdGgsIFN0cmlu
Z1ZpZXcgcmVsYXRpdmVWaXJ0dWFsUGF0aCkKIHsKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIERP
TUZpbGVTeXN0ZW06OmdldFBhcmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBG
aWxlU3lzdGVtRW50cnkmCiAgICAgQVNTRVJUKHZpcnR1YWxQYXRoWzBdID09ICcvJyk7CiAgICAg
YXV0byBmdWxsUGF0aCA9IGV2YWx1YXRlUGF0aCh2aXJ0dWFsUGF0aCk7CiAgICAgbV93b3JrUXVl
dWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbnRleHQgPSBt
YWtlUmVmKGNvbnRleHQpLCBmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHZp
cnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxi
YWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewotICAgICAgICBh
dXRvIHZhbGlkYXRlZFZpcnR1YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVs
bFBhdGgsIFdURk1vdmUodmlydHVhbFBhdGgpLCBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9y
eSk7CisgICAgICAgIGF1dG8gdmFsaWRhdGVkVmlydHVhbFBhdGggPSB2YWxpZGF0ZVBhdGhJc0V4
cGVjdGVkVHlwZShmdWxsUGF0aCwgV1RGTW92ZSh2aXJ0dWFsUGF0aCksIEZpbGVTeXN0ZW06OkZp
bGVUeXBlOjpEaXJlY3RvcnkpOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCks
IHZhbGlkYXRlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHZhbGlkYXRlZFZpcnR1YWxQ
YXRoKSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgp
IG11dGFibGUgewogICAgICAgICAgICAgaWYgKHZhbGlkYXRlZFZpcnR1YWxQYXRoLmhhc0V4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayh2YWxpZGF0ZWRWaXJ0
dWFsUGF0aC5yZWxlYXNlRXhjZXB0aW9uKCkpOwpAQCAtMzEyLDE3ICszMTIsMTcgQEAgdm9pZCBE
T01GaWxlU3lzdGVtOjpnZXRFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBG
aWxlU3lzdGVtRGlyZWN0b3IKICAgICB9CiAKICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCks
IGZ1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgcmVzb2x2ZWRWaXJ0dWFsUGF0
aCA9IGNyb3NzVGhyZWFkQ29weShyZXNvbHZlZFZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxi
YWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewotICAgICAgICBh
dXRvIGVudHJ5VHlwZSA9IGZpbGVUeXBlKGZ1bGxQYXRoKTsKKyAgICAgICAgYXV0byBlbnRyeVR5
cGUgPSBmaWxlVHlwZUlnbm9yaW5nSGlkZGVuRmlsZXMoZnVsbFBhdGgpOwogICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29u
dGV4dCA9IFdURk1vdmUoY29udGV4dCksIHJlc29sdmVkVmlydHVhbFBhdGggPSBjcm9zc1RocmVh
ZENvcHkocmVzb2x2ZWRWaXJ0dWFsUGF0aCksIGVudHJ5VHlwZSwgY29tcGxldGlvbkNhbGxiYWNr
ID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKCFlbnRyeVR5cGUpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soRXhj
ZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIkNhbm5vdCBmaW5kIGVudHJ5IGF0IGdpdmVuIHBhdGgi
X3MgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgc3dpdGNoIChlbnRyeVR5cGUudmFsdWUoKSkgewotICAgICAgICAgICAgY2FzZSBGaWxlTWV0
YWRhdGE6OlR5cGU6OkRpcmVjdG9yeToKKyAgICAgICAgICAgIGNhc2UgRmlsZVN5c3RlbTo6Rmls
ZVR5cGU6OkRpcmVjdG9yeToKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soUmVm
PEZpbGVTeXN0ZW1FbnRyeT4geyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShjb250
ZXh0LCBwcm90ZWN0ZWRUaGlzLmdldCgpLCByZXNvbHZlZFZpcnR1YWxQYXRoKSB9KTsKICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgRmlsZU1ldGFkYXRhOjpUeXBlOjpG
aWxlOgorICAgICAgICAgICAgY2FzZSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVndWxhcjoKICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soUmVmPEZpbGVTeXN0ZW1FbnRyeT4geyBG
aWxlU3lzdGVtRmlsZUVudHJ5OjpjcmVhdGUoY29udGV4dCwgcHJvdGVjdGVkVGhpcy5nZXQoKSwg
cmVzb2x2ZWRWaXJ0dWFsUGF0aCkgfSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBkZWZhdWx0OgpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0
RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRmlsZUVudHJ5
CiAgICAgYXV0byB2aXJ0dWFsUGF0aCA9IGZpbGVFbnRyeS52aXJ0dWFsUGF0aCgpOwogICAgIGF1
dG8gZnVsbFBhdGggPSBldmFsdWF0ZVBhdGgodmlydHVhbFBhdGgpOwogICAgIG1fd29ya1F1ZXVl
LT5kaXNwYXRjaChbZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2aXJ0dWFs
UGF0aCA9IGNyb3NzVGhyZWFkQ29weSh2aXJ0dWFsUGF0aCksIGNvbnRleHQgPSBtYWtlUmVmKGNv
bnRleHQpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayld
KCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gdmFsaWRhdGVkVmlydHVhbFBhdGggPSB2YWxpZGF0
ZVBhdGhJc0V4cGVjdGVkVHlwZShmdWxsUGF0aCwgV1RGTW92ZSh2aXJ0dWFsUGF0aCksIEZpbGVN
ZXRhZGF0YTo6VHlwZTo6RmlsZSk7CisgICAgICAgIGF1dG8gdmFsaWRhdGVkVmlydHVhbFBhdGgg
PSB2YWxpZGF0ZVBhdGhJc0V4cGVjdGVkVHlwZShmdWxsUGF0aCwgV1RGTW92ZSh2aXJ0dWFsUGF0
aCksIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKTsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2YWxpZGF0ZWRWaXJ0
dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbnRleHQg
PSBXVEZNb3ZlKGNvbnRleHQpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRp
b25DYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAodmFsaWRhdGVkVmlydHVh
bFBhdGguaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNr
KHZhbGlkYXRlZFZpcnR1YWxQYXRoLnJlbGVhc2VFeGNlcHRpb24oKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4
IDJjNjczZDY2MTczZjljNzY3YzNkZDE5NGRiMTNjYzBiOGNjMTg4NGYuLmFiODY5ZjM3Y2RiN2Uw
ODMzOWUyYTBjYmMyZDVlNzAxYjhlNDEyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC03MTIsNyArNzEyLDgg
QEAgc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckZpbGVQYXRoKEZyYW1lJiBm
cmFtZSwgY29uc3QgU3RyaW5nJiBwYXRoLAogICAgICAgICByZXR1cm4gYXR0YWNobWVudDsKICAg
ICB9CiAKLSAgICBib29sIGlzRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xs
b3dpbmdTeW1saW5rcyhwYXRoKTsKKyAgICBhdXRvIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6Zmls
ZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhwYXRoKTsKKyAgICBib29sIGlzRGlyZWN0b3J5ID0gZmls
ZVR5cGUgJiYgKmZpbGVUeXBlID09IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3Rvcnk7CiAg
ICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gdHlwZUZvckF0dGFjaG1lbnRFbGVtZW50KGV4cGxpY2l0
Q29udGVudFR5cGUpOwogICAgIGlmIChjb250ZW50VHlwZS5pc0VtcHR5KCkpIHsKIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCBk
ZmM5MmQxZmZkYjU3ZjIyZGRmZGJmNjdjYWM4OGQ3ZDIwODQwMzE5Li43YTYyNDRhNTY0MTM2MmNm
MjQwNmVlZmJlOWIzMDlhZjNhZmVmNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTMw
LDcgKzMwLDYgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgotI2luY2x1
ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC0xNDcsOCArMTQ2LDEwIEBAIFN0cmluZyBGaWxlOjpjb250ZW50VHlwZUZvckZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoKQogCiBib29sIEZpbGU6OmlzRGlyZWN0b3J5KCkgY29uc3QK
IHsKLSAgICBpZiAoIW1faXNEaXJlY3RvcnkpCi0gICAgICAgIG1faXNEaXJlY3RvcnkgPSBGaWxl
U3lzdGVtOjppc0RpcmVjdG9yeUZvbGxvd2luZ1N5bWxpbmtzKG1fcGF0aCk7CisgICAgaWYgKCFt
X2lzRGlyZWN0b3J5KSB7CisgICAgICAgIGF1dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxl
VHlwZUZvbGxvd2luZ1N5bWxpbmtzKG1fcGF0aCk7CisgICAgICAgIG1faXNEaXJlY3RvcnkgPSBm
aWxlVHlwZSAmJiAqZmlsZVR5cGUgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeTsK
KyAgICB9CiAgICAgcmV0dXJuICptX2lzRGlyZWN0b3J5OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKaW5kZXggMTg3ZWRlMzM5Mzhm
M2U0YWIzNzZjOGM3NDNkYTRjY2EwNzUxMGFiOS4uZTM4NGYwMDNlMDNlZmVmNTlkNmY4M2UzYmE5
NjY1YThkY2VhMmQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlG
aWxlTGlzdENyZWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5Rmls
ZUxpc3RDcmVhdG9yLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkZpbGVDaG9vc2Vy
LmgiCiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTYsMTcgKzU1LDE3IEBAIHN0YXRp
YyB2b2lkIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25z
dCBTdHJpbmcmIHJlbGF0aXZlCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgZm9y
IChhdXRvJiBjaGlsZE5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSkp
IHsKICAgICAgICAgYXV0byBjaGlsZFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZGlyZWN0b3J5LCBjaGlsZE5hbWUpOwotICAgICAgICBhdXRvIG1ldGFkYXRhID0g
RmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7Ci0gICAgICAgIGlmICghbWV0YWRh
dGEpCisgICAgICAgIGlmIChGaWxlU3lzdGVtOjppc0hpZGRlbkZpbGUoY2hpbGRQYXRoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChtZXRhZGF0YS52YWx1ZSgpLmlzSGlk
ZGVuKQorICAgICAgICBhdXRvIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUoY2hpbGRQ
YXRoKTsKKyAgICAgICAgaWYgKCFmaWxlVHlwZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIFN0cmluZyBjaGlsZFJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aCArICIvIiArIGNo
aWxkTmFtZTsKLSAgICAgICAgaWYgKG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRh
dGE6OlR5cGU6OkRpcmVjdG9yeSkKKyAgICAgICAgaWYgKCpmaWxlVHlwZSA9PSBGaWxlU3lzdGVt
OjpGaWxlVHlwZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMo
Y2hpbGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0aCwgZmlsZXMpOwotICAgICAgICBlbHNlIGlmICht
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKQorICAgICAg
ICBlbHNlIGlmICgqZmlsZVR5cGUgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlJlZ3VsYXIpCiAg
ICAgICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUluZm9ybWF0aW9uIHsgY2hpbGRQYXRoLCBjaGls
ZFJlbGF0aXZlUGF0aCwgeyB9IH0pOwogICAgIH0KIH0KQEAgLTc2LDcgKzc1LDggQEAgc3RhdGlj
IFZlY3RvcjxGaWxlSW5mb3JtYXRpb24+IGdhdGhlckZpbGVJbmZvcm1hdGlvbihjb25zdCBWZWN0
b3I8RmlsZUNob29zZXJGaWwKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBWZWN0
b3I8RmlsZUluZm9ybWF0aW9uPiBmaWxlczsKICAgICBmb3IgKGF1dG8mIGluZm8gOiBwYXRocykg
ewotICAgICAgICBpZiAoRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnkoaW5mby5wYXRoKSkKKyAgICAg
ICAgYXV0byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKGluZm8ucGF0aCk7CisgICAg
ICAgIGlmIChmaWxlVHlwZSAmJiAqZmlsZVR5cGUgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRp
cmVjdG9yeSkKICAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8ucGF0aCwgRmls
ZVN5c3RlbTo6cGF0aEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVzKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVJbmZvcm1hdGlvbiB7IGluZm8ucGF0aCwgeyB9
LCBpbmZvLmRpc3BsYXlOYW1lIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCBhNWI3
OTZlMGZiNDQ4NTJhNzI0OTFjZDY4YjYwY2Y3OWRhYTg3YTg5Li5iZWM0N2ExZTFiMzgyYzdkZDEw
NjQxNDU5ZTViNTZiZjRiOTE1OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzk4
LDEwICszOTgsMTEgQEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHN0b3IKIAogICAgIGF1dG8gc3RvcmFn
ZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVj
dG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKIAotICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhzdG9yYWdlRGlyZWN0b3J5KSkgeworICAgIGF1dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVt
OjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHN0b3JhZ2VEaXJlY3RvcnkpOworICAgIGlmICgh
ZmlsZVR5cGUpIHsKICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMo
c3RvcmFnZURpcmVjdG9yeSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNlIGlmICgh
RmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xsb3dpbmdTeW1saW5rcyhzdG9yYWdlRGlyZWN0b3J5
KSkgeworICAgIH0gZWxzZSBpZiAoKmZpbGVUeXBlICE9IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpE
aXJlY3RvcnkpIHsKICAgICAgICAgYXV0byB0ZW1wRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3Jl
YXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiTWVkaWFLZXlzIik7CiAgICAgICAgIGlmICghdGVtcERp
cmVjdG9yeSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4
IGY4YTlmMWJkYzEyYjJjMzdjOGE1Yjk5NTRkY2ZjMDk1NThhMTNhODguLmFkMmE1NTg5ZDBhMWM2
YTBlNjFiZGQ4NzNkMDU4NGU1OGY1OWVkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
MzM3LDE1ICszMzcsMTQgQEAgc3RhdGljIEFWQXNzZXRDYWNoZSAqZW5zdXJlQXNzZXRDYWNoZUV4
aXN0c0ZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8gZmlsZUV4aXN0c0F0UGF0aCA9IEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMocGF0aCk7Ci0KLSAgICBpZiAoZmlsZUV4aXN0c0F0UGF0aCAmJiAh
RmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xsb3dpbmdTeW1saW5rcyhwYXRoKSkgeworICAgIGF1
dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgp
OworICAgIGlmIChmaWxlVHlwZSAmJiAqZmlsZVR5cGUgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6
OkRpcmVjdG9yeSkgewogICAgICAgICAvLyBOb24tZGlyZWN0b3J5IGZpbGUgYWxyZWFkeSBleGlz
dHMgYXQgdGhlIHBhdGggbG9jYXRpb247IGJhaWwuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIAotICAgIGlmICghZmlsZUV4aXN0c0F0
UGF0aCAmJiAhRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgpKSB7CisgICAgaWYg
KCFmaWxlVHlwZSAmJiAhRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgpKSB7CiAg
ICAgICAgIC8vIENvdWxkIG5vdCBjcmVhdGUgYSBkaXJlY3RvcnkgYXQgdGhlIHNwZWNpZmllZCBs
b2NhdGlvbjsgYmFpbC4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKaW5kZXggZGZiNGI1ODRhOGE4ZTIzNDY3Yjg0M2E5
NWEzM2Y3ZDUxNzJjOTg0Ny4uMTJmODI3NGVkYmZlYTA3MTFkNTJiY2E5MTE1ZTk5MmVkZTI2ZTA3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZp
bGVSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkJsb2JE
YXRhRmlsZVJlZmVyZW5jZS5oIgogCiAjaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgPHd0Zi9G
aWxlTWV0YWRhdGEuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC04OCwyNSArODcsMjMgQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OnN0YXJ0VHJhY2tpbmdNb2RpZmljYXRpb25zKCkKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IFNv
bWUgcGxhdGZvcm1zIHByb3ZpZGUgYmV0dGVyIHdheXMgdG8gbGlzdGVuIGZvciBmaWxlIHN5c3Rl
bSBvYmplY3QgY2hhbmdlcywgY29uc2lkZXIgdXNpbmcgdGhlc2UuCi0gICAgYXV0byBtZXRhZGF0
YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1fcGF0aCk7Ci0g
ICAgaWYgKCFtZXRhZGF0YSkKKyAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBGaWxlU3lzdGVt
OjpmaWxlTW9kaWZpY2F0aW9uVGltZShtX3BhdGgpOworICAgIGlmICghbW9kaWZpY2F0aW9uVGlt
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUgPSBt
ZXRhZGF0YS52YWx1ZSgpLm1vZGlmaWNhdGlvblRpbWU7CisgICAgbV9leHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUgPSAqbW9kaWZpY2F0aW9uVGltZTsKIAogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VN
RU5UKQogICAgIGlmIChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQpCiAgICAgICAgIHJl
dHVybjsKICNlbmRpZgogCi0gICAgLy8gVGhpcyBpcyBhIHJlZ2lzdGVyZWQgYmxvYiB3aXRoIGEg
cmVwbGFjZW1lbnQgZmlsZS4gR2V0IHRoZSBNZXRhZGF0YSBvZiB0aGUgcmVwbGFjZW1lbnQgZmls
ZS4KLSAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1ldGFk
YXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MobV9yZXBsYWNl
bWVudFBhdGgpOwotICAgICAgICBpZiAoIW1ldGFkYXRhKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICAvLyBUaGlzIGlzIGEgcmVnaXN0ZXJlZCBibG9iIHdpdGggYSByZXBsYWNlbWVu
dCBmaWxlLiBHZXQgdGhlIHNpemUgb2YgdGhlIHJlcGxhY2VtZW50IGZpbGUuCisgICAgYXV0byBm
aWxlU2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKG1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgp
ID8gbV9wYXRoIDogbV9yZXBsYWNlbWVudFBhdGgpOworICAgIGlmICghZmlsZVNpemUpCisgICAg
ICAgIHJldHVybjsKIAotICAgIG1fc2l6ZSA9IG1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoOworICAg
IG1fc2l6ZSA9ICpmaWxlU2l6ZTsKIH0KIAogdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnBy
ZXBhcmVGb3JGaWxlQWNjZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDY3ZWQyYTRiNWM5NjA5YWY4YmMwNjdm
ZGQyY2RhMTljOWE0ODdkZDUuLmViMmViZTYzNDhmZThjYjUwZmZhOTlhMGQ5NmFkZDZjYWYzNzI4
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVn
aXN0cnlJbXBsLmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KLSNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcAppbmRleCBhZDhjMzViNzE4NTY2ZTlmMTJiYWU5ODgzY2Q4MjlhMWI2NTQ4
ZGU2Li40YmNjY2ZmYzUzMjFlYjI3MDdkYTI5NmI1ZjY1ZjUwOGQ0MjA2ODIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMzU0LDcgKzM1NCw4
IEBAIEZvcm1EYXRhRm9yVXBsb2FkIEZvcm1EYXRhOjpwcmVwYXJlRm9yVXBsb2FkKCkKICAgICAg
ICAgYXV0byogZmlsZURhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRG
aWxlRGF0YT4oZWxlbWVudC5kYXRhKTsKICAgICAgICAgaWYgKCFmaWxlRGF0YSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93
aW5nU3ltbGlua3MoZmlsZURhdGEtPmZpbGVuYW1lKSkKKyAgICAgICAgYXV0byBmaWxlVHlwZSA9
IEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MoZmlsZURhdGEtPmZpbGVuYW1l
KTsKKyAgICAgICAgaWYgKCFmaWxlVHlwZSB8fCAqZmlsZVR5cGUgIT0gRmlsZVN5c3RlbTo6Rmls
ZVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoZmls
ZURhdGEtPmZpbGVTdGFydCB8fCBmaWxlRGF0YS0+ZmlsZUxlbmd0aCAhPSBCbG9iRGF0YUl0ZW06
OnRvRW5kT2ZGaWxlKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2VNYWMubW0KaW5kZXggNWVjNzc3YTg2OTkwNjcxMThjYmNkNTUyOGU4ZjRmZmU5MmE0NDg2Yi4u
M2JmNjQzNDlhNTU0ZDFjYzIyZjI5Nzk1YjNiODFjODNiZDEzODk2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmls
ZVJlZmVyZW5jZU1hYy5tbQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKEZJTEVfUkVQ
TEFDRU1FTlQpCiAKLSNpbXBvcnQgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbXBvcnQgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ3LDggKzQ2
LDggQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxl
KCkKIAogICAgIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCA9IGZhbHNlOwogICAgIGlm
ICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWV0YWRh
dGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhtX3JlcGxhY2Vt
ZW50UGF0aCkpCi0gICAgICAgICAgICBtX3NpemUgPSBtZXRhZGF0YS52YWx1ZSgpLmxlbmd0aDsK
KyAgICAgICAgaWYgKGF1dG8gZmlsZVNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShtX3JlcGxh
Y2VtZW50UGF0aCkpCisgICAgICAgICAgICBtX3NpemUgPSAqZmlsZVNpemU7CiAgICAgfQogCiAg
ICAgcmV2b2tlRmlsZUFjY2VzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IGI0Zjg5MDdiYmEw
YjlkYjlhYjkwY2IyZjdhNDFmYmE3ZmIxNTcwZTUuLmM5ZWRjZDNkYWZjMzU4M2M2ZjI3ODk1NmQx
MzY1ZTQ1NTVhZTllZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTIwNyw3ICsyMDcsOCBAQCBz
dGF0aWMgdWludDY0X3QgZ2V0RGlyZWN0b3J5U2l6ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBh
dGgpCiAgICAgcGF0aHMuYXBwZW5kKGRpcmVjdG9yeVBhdGgpOwogICAgIHdoaWxlICghcGF0aHMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IHBhdGhzLnRha2VGaXJzdCgpOwotICAg
ICAgICBpZiAoRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnkocGF0aCkpIHsKKyAgICAgICAgYXV0byBm
aWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHBhdGgpOworICAgICAgICBpZiAoZmlsZVR5
cGUgJiYgKmZpbGVUeXBlID09IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpIHsKICAg
ICAgICAgICAgIGF1dG8gZmlsZU5hbWVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRo
KTsKICAgICAgICAgICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBmaWxlTmFtZXMpIHsKICAgICAg
ICAgICAgICAgICAvLyBGaWxlcyBpbiAvQmxvYnMgZGlyZWN0b3J5IGFyZSBoYXJkIGxpbmsuCkBA
IC02MTMsNyArNjE0LDggQEAgdm9pZCBFbmdpbmU6OmdldERpcmVjdG9yaWVzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4mJiBjb20KICAgICAgICAgVmVjdG9y
PFN0cmluZz4gZm9sZGVyUGF0aHM7CiAgICAgICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgpKSB7CiAgICAgICAgICAgICBhdXRvIGZpbGVQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lKTsK
LSAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjppc0RpcmVjdG9yeShmaWxlUGF0aCkpCisgICAg
ICAgICAgICBhdXRvIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUoZmlsZVBhdGgpOwor
ICAgICAgICAgICAgaWYgKGZpbGVUeXBlICYmICpmaWxlVHlwZSA9PSBGaWxlU3lzdGVtOjpGaWxl
VHlwZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgICAgIGZvbGRlclBhdGhzLmFwcGVuZChmaWxl
UGF0aC5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgIH0KIApAQCAtNzAxLDcgKzcwMyw4IEBAIHZv
aWQgRW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlCiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFNp
emVGaWxlTG9jayk7CiAgICAgICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KHBhdGgpKSB7CiAgICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lKTsKLSAgICAgICAg
ICAgIGlmIChGaWxlU3lzdGVtOjppc0RpcmVjdG9yeShmaWxlUGF0aCkpCisgICAgICAgICAgICBh
dXRvIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUoZmlsZVBhdGgpOworICAgICAgICAg
ICAgaWYgKGZpbGVUeXBlICYmICpmaWxlVHlwZSA9PSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGly
ZWN0b3J5KQogICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0
b3J5KGZpbGVQYXRoKTsKICAgICAgICAgfQogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAK
aW5kZXggNjBlNDBlNTMyNDk4MmQ1MmFkOGI0MmY5NzliZDYzZTI5YzgwOTExMC4uZjBmNzQ4ZWNh
ODFmYWNmMjJkZDExM2VjN2M4N2U3MDFjZGI1OGQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0u
Y3BwCkBAIC01OCw3ICs1OCw4IEBAIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBECiAgICAgYXV0byBl
bnRyaWVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoKTsKICAgICBmb3IgKGF1dG8m
IGVudHJ5IDogZW50cmllcykgewogICAgICAgICBhdXRvIGVudHJ5UGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBlbnRyeSk7Ci0gICAgICAgIGF1dG8gdHlw
ZSA9IEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5KGVudHJ5UGF0aCkgPyBEaXJlY3RvcnlFbnRyeVR5
cGU6OkRpcmVjdG9yeSA6IERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZTsKKyAgICAgICAgYXV0byBm
aWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKGVudHJ5UGF0aCk7CisgICAgICAgIGF1dG8g
dHlwZSA9IChmaWxlVHlwZSAmJiAqZmlsZVR5cGUgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRp
cmVjdG9yeSkgPyBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeSA6IERpcmVjdG9yeUVudHJ5
VHlwZTo6RmlsZTsKICAgICAgICAgZnVuY3Rpb24oZW50cnksIHR5cGUpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KaW5kZXgg
ZDU0NTZjZGIxNDNlZGNkOGEzYjcwYmU5ZjQxOTRjNGY0OGI2ODIwNi4uNjc4MGVkODYwYzBiYWMz
NDA4ZjBmZDQ2YzQwNGY0Yjc4MjAwNGY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KQEAgLTMzMSw5ICszMzEsMTAgQEAgc3RhdGljIFN0
cmluZyBzYW5kYm94RmlsZVBhdGgoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlQYXRoLCBjb25zdCBD
U3RyaW5nJiBoZWFkZXIKIAogc3RhdGljIGJvb2wgZW5zdXJlU2FuZGJveENhY2hlRGlyZWN0b3J5
KGNvbnN0IFNhbmRib3hJbmZvJiBpbmZvKQogewotICAgIGlmICghRmlsZVN5c3RlbTo6aXNEaXJl
Y3RvcnlGb2xsb3dpbmdTeW1saW5rcyhpbmZvLnBhcmVudERpcmVjdG9yeVBhdGgpKSB7CisgICAg
YXV0byBwYXJlbnREaXJlY3RvcnlUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdT
eW1saW5rcyhpbmZvLnBhcmVudERpcmVjdG9yeVBhdGgpOworICAgIGlmICghcGFyZW50RGlyZWN0
b3J5VHlwZSB8fCAqcGFyZW50RGlyZWN0b3J5VHlwZSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6
RGlyZWN0b3J5KSB7CiAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhpbmZv
LnBhcmVudERpcmVjdG9yeVBhdGgpOwotICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzRGlyZWN0
b3J5Rm9sbG93aW5nU3ltbGlua3MoaW5mby5wYXJlbnREaXJlY3RvcnlQYXRoKSkgeworICAgICAg
ICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MoaW5mby5wYXJlbnRE
aXJlY3RvcnlQYXRoKSkgewogICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90
IGNyZWF0ZSBzYW5kYm94IGRpcmVjdG9yeVxuIiwgZ2V0cHJvZ25hbWUoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTM2Myw4ICszNjQsOCBAQCBzdGF0aWMgYm9v
bCBlbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3RvcnkoY29uc3QgU2FuZGJveEluZm8mIGluZm8pCiAg
ICAgICAgIGlmICghcm9vdGxlc3NfY2hlY2tfZGF0YXZhdWx0X2ZsYWcoZGlyZWN0b3J5UGF0aC5k
YXRhKCksIHN0b3JhZ2VDbGFzcykpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAg
ICBib29sIGlzRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnkoaW5mby5kaXJlY3Rv
cnlQYXRoKTsKLSAgICAgICAgaWYgKGlzRGlyZWN0b3J5KSB7CisgICAgICAgIGF1dG8gZGlyZWN0
b3J5VHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKGluZm8uZGlyZWN0b3J5UGF0aCk7CisgICAg
ICAgIGlmIChkaXJlY3RvcnlUeXBlICYmICpkaXJlY3RvcnlUeXBlID09IEZpbGVTeXN0ZW06OkZp
bGVUeXBlOjpEaXJlY3RvcnkpIHsKICAgICAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZGVsZXRl
Tm9uRW1wdHlEaXJlY3RvcnkoaW5mby5kaXJlY3RvcnlQYXRoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNzksMTQgKzM4MCwxNiBAQCBzdGF0
aWMgYm9vbCBlbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3RvcnkoY29uc3QgU2FuZGJveEluZm8mIGlu
Zm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAjZWxzZQotICAgIGJvb2wgaGFzU2Fu
ZGJveERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3Mo
aW5mby5kaXJlY3RvcnlQYXRoKTsKKyAgICBhdXRvIGRpcmVjdG9yeVR5cGUgPSBGaWxlU3lzdGVt
OjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKGluZm8uZGlyZWN0b3J5UGF0aCk7CisgICAgYm9v
bCBoYXNTYW5kYm94RGlyZWN0b3J5ID0gZGlyZWN0b3J5VHlwZSAmJiAqZGlyZWN0b3J5VHlwZSA9
PSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5OwogICAgIGlmICghaGFzU2FuZGJveERp
cmVjdG9yeSkgewogICAgICAgICBpZiAoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGlu
Zm8uZGlyZWN0b3J5UGF0aCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChGaWxlU3lzdGVtOjppc0Rp
cmVjdG9yeUZvbGxvd2luZ1N5bWxpbmtzKGluZm8uZGlyZWN0b3J5UGF0aCkpOworICAgICAgICAg
ICAgQVNTRVJUKEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MoaW5mby5kaXJl
Y3RvcnlQYXRoKS52YWx1ZU9yKEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKSA9PSBGaWxl
U3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KTsKICAgICAgICAgICAgIGhhc1NhbmRib3hEaXJl
Y3RvcnkgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gV2UgbWF5IGhh
dmUgcmFjZWQgd2l0aCBzb21lb25lIGVsc2UgbWFraW5nIGl0LiBUaGF0J3Mgb2suCi0gICAgICAg
ICAgICBoYXNTYW5kYm94RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xsb3dp
bmdTeW1saW5rcyhpbmZvLmRpcmVjdG9yeVBhdGgpOworICAgICAgICAgICAgYXV0byBmaWxlVHlw
ZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MoaW5mby5kaXJlY3RvcnlQ
YXRoKTsKKyAgICAgICAgICAgIGhhc1NhbmRib3hEaXJlY3RvcnkgPSBmaWxlVHlwZSAmJiAqZmls
ZVR5cGUgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeTsKICAgICAgICAgfQogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0KaW5kZXggODJkMjQ5ODY5ZTA1ZTQwNmY2MDAyNDFiOTIwZjA2YjkwODUzZjMw
ZC4uNGJiZDA0MGVmNmE4MDU3MTYyM2ZmNWNmMWEyZDkzY2EzYzNjNjI5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBA
IC0yMTcsNyArMjE3LDcgQEAgc3RhdGljIGJvb2wgaXNJbnRlcm5hbEluc3RhbGwoKQogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgaXNJbnRlcm5hbCA9IE1HR2V0Qm9v
bEFuc3dlcihrTUdRQXBwbGVJbnRlcm5hbEluc3RhbGxDYXBhYmlsaXR5KTsKICNlbHNlCi0gICAg
c3RhdGljIGJvb2wgaXNJbnRlcm5hbCA9IEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5KCIvQXBwbGVJ
bnRlcm5hbCIpOworICAgIHN0YXRpYyBib29sIGlzSW50ZXJuYWwgPSBGaWxlU3lzdGVtOjpmaWxl
VHlwZSgiL0FwcGxlSW50ZXJuYWwiKS52YWx1ZU9yKEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1
bGFyKSA9PSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5OwogI2VuZGlmCiAgICAgcmV0
dXJuIGlzSW50ZXJuYWw7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggYWNjZDJkNjgwMjM1NDdmOGI3MDAzYWI2NzBjOTUwYWYzZDg2ZDc3NC4u
MzhkYzdhMjIyMWI3MTUxZjJlZTMxMTdiZmNiOTBkYjBiMzk5YjQ4ZiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIx
LTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBG
aWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoKSAvIGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtz
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTgy
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSB0aGUgRmlsZVN5c3RlbSBBUEkgdGVzdHMgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisKIDIwMjEtMDUtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBEcm9wICJnZXQiIHByZWZpeCBmcm9tIFdURjo6RmlsZVN5c3RlbSdzIGdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKCkgLyBnZXRGaWxlQ3JlYXRpb25UaW1lKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggZWUyOWE3NDBiNjM3
ODFjYTU5NjhjM2YzYzNjMDAyZmNiNGM4YjIxZi4uNTIyMzMwNTA4Y2QwNjEwNWEzMjI0YTA4ODRl
MTc1NzM4MDBkM2ZlZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
RmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5
c3RlbS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIlRlc3QuaCIKICNpbmNsdWRl
ICJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUg
PHd0Zi9TdHJpbmdFeHRyYXMuaD4KQEAgLTE1Myw5MSArMTUyLDExMyBAQCBURVNUX0YoRmlsZVN5
c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUpCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3Rl
bTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCksIHF1b3RlQ29u
dGFpbmluZ0ZpbGVQYXRoKCkpKTsKIH0KIAotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxl
TWV0YWRhdGFGaWxlU3ltbGluaykKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgZmlsZVR5cGUpCiB7
Ci0gICAgYXV0byBzeW1saW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEodGVt
cEZpbGVTeW1saW5rUGF0aCgpKTsKLSAgICBBU1NFUlRfVFJVRShzeW1saW5rTWV0YWRhdGEuaGFz
VmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoc3ltbGlua01ldGFkYXRhLT50eXBlID09IEZpbGVN
ZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKLSAgICBFWFBFQ1RfRkFMU0Uoc3ltbGlua01l
dGFkYXRhLT5pc0hpZGRlbik7Ci0gICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90Pihz
eW1saW5rTWV0YWRhdGEtPmxlbmd0aCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwot
Ci0gICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxv
d2luZ1N5bWxpbmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUodGFy
Z2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEt
PnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKLSAgICBFWFBFQ1RfRkFMU0UodGFy
Z2V0TWV0YWRhdGEtPmlzSGlkZGVuKTsKLSAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1U
ZXN0RGF0YSksIHN0YXRpY19jYXN0PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEtPmxlbmd0aCkpOwot
Ci0gICAgYXV0byBhY3R1YWxUYXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0
YSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUoYWN0dWFsVGFyZ2V0TWV0YWRhdGEu
aGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPnR5cGUg
PT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKLSAgICBFWFBFQ1RfRVEodGFyZ2V0TWV0YWRh
dGEtPm1vZGlmaWNhdGlvblRpbWUsIGFjdHVhbFRhcmdldE1ldGFkYXRhLT5tb2RpZmljYXRpb25U
aW1lKTsKLSAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSksIHN0YXRpY19j
YXN0PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEtPmxlbmd0aCkpOwotICAgIEVYUEVDVF9GQUxTRShh
Y3R1YWxUYXJnZXRNZXRhZGF0YS0+aXNIaWRkZW4pOwotfQotCi1URVNUX0YoRmlsZVN5c3RlbVRl
c3QsIEdldEZpbGVNZXRhZGF0YVN5bWxpbmtUb0ZpbGVTeW1saW5rKQotewotICAgIC8vIENyZWF0
ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdGhlIHRlbXBGaWxlU3ltbGlua1BhdGgoKS4KLSAg
ICBhdXRvIHN5bWxpbmtUb1N5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInN5bWxpbmtUb1N5bWxpbmsiKTsKLSAg
ICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsodGVtcEZpbGVTeW1s
aW5rUGF0aCgpLCBzeW1saW5rVG9TeW1saW5rUGF0aCkpOwotCi0gICAgYXV0byBzeW1saW5rTWV0
YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoc3ltbGlua1RvU3ltbGlua1BhdGgpOwot
ICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1Rf
VFJVRShzeW1saW5rTWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xp
Y0xpbmspOwotICAgIEVYUEVDVF9GQUxTRShzeW1saW5rTWV0YWRhdGEtPmlzSGlkZGVuKTsKLQot
ICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dp
bmdTeW1saW5rcyhzeW1saW5rVG9TeW1saW5rUGF0aCk7Ci0gICAgQVNTRVJUX1RSVUUodGFyZ2V0
TWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEtPnR5
cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKLSAgICBFWFBFQ1RfRkFMU0UodGFyZ2V0
TWV0YWRhdGEtPmlzSGlkZGVuKTsKLSAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0
RGF0YSksIHN0YXRpY19jYXN0PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEtPmxlbmd0aCkpOwotCi0g
ICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShzeW1saW5rVG9TeW1saW5rUGF0
aCkpOwotfQotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRhZGF0YURpcmVjdG9y
eVN5bWxpbmspCi17Ci0gICAgYXV0byBzeW1saW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxl
TWV0YWRhdGEodGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUo
c3ltbGlua01ldGFkYXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtNZXRh
ZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluayk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKHN5bWxpbmtNZXRhZGF0YS0+aXNIaWRkZW4pOwotCi0gICAgYXV0byB0YXJnZXRN
ZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBF
bXB0eUZvbGRlclN5bWxpbmtQYXRoKCkpOwotICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRh
Lmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLT50eXBlID09IEZp
bGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5KTsKLSAgICBFWFBFQ1RfRkFMU0UodGFyZ2V0TWV0
YWRhdGEtPmlzSGlkZGVuKTsKKyAgICBhdXRvIGRvZXNOb3RFeGlzdFBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1u
b3QtZXhpc3QiKTsKKyAgICBhdXRvIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUoZG9l
c05vdEV4aXN0UGF0aCk7CisgICAgRVhQRUNUX0ZBTFNFKGZpbGVUeXBlKTsKKworICAgIGZpbGVU
eXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUodGVtcEZpbGVQYXRoKCkpOworICAgIEFTU0VSVF9U
UlVFKGZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEoKmZpbGVUeXBlLCBGaWxlU3lzdGVtOjpGaWxl
VHlwZTo6UmVndWxhcik7CisKKyAgICBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHRl
bXBGaWxlU3ltbGlua1BhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUoZmlsZVR5cGUpOworICAgIEVY
UEVDVF9FUSgqZmlsZVR5cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpTeW1ib2xpY0xpbmspOwor
CisgICAgZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZSh0ZW1wRW1wdHlGb2xkZXJTeW1s
aW5rUGF0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShmaWxlVHlwZSk7CisgICAgRVhQRUNUX0VRKCpm
aWxlVHlwZSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlN5bWJvbGljTGluayk7CisKKyAgICBmaWxl
VHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHRlbXBFbXB0eUZvbGRlclBhdGgoKSk7CisgICAg
QVNTRVJUX1RSVUUoZmlsZVR5cGUpOworICAgIEVYUEVDVF9FUSgqZmlsZVR5cGUsIEZpbGVTeXN0
ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpOworCisgICAgLy8gU3ltbGluayB0byBmaWxlIHN5bWxp
bmsgY2FzZS4KKyAgICBhdXRvIHN5bWxpbmtUb0ZpbGVTeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJzeW1saW5r
VG9TeW1saW5rIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNM
aW5rKHRlbXBGaWxlU3ltbGlua1BhdGgoKSwgc3ltbGlua1RvRmlsZVN5bWxpbmtQYXRoKSk7Cisg
ICAgZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZShzeW1saW5rVG9GaWxlU3ltbGlua1Bh
dGgpOworICAgIEFTU0VSVF9UUlVFKGZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEoKmZpbGVUeXBl
LCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6U3ltYm9saWNMaW5rKTsKKworICAgIC8vIFN5bWxpbmsg
dG8gZGlyZWN0b3J5IHN5bWxpbmsgY2FzZS4KKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlOworICAgIGF1dG8gc3ltbGlua1RvRGlyZWN0b3J5U3ltbGlua1BhdGggPSBG
aWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlLXN5bWxpbmsiLCBoYW5k
bGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUoc3ltbGlua1RvRGlyZWN0b3J5U3ltbGlua1BhdGgpOworICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayh0ZW1wRW1wdHlGb2xkZXJTeW1saW5r
UGF0aCgpLCBzeW1saW5rVG9EaXJlY3RvcnlTeW1saW5rUGF0aCkpOworICAgIGZpbGVUeXBlID0g
RmlsZVN5c3RlbTo6ZmlsZVR5cGUoc3ltbGlua1RvRGlyZWN0b3J5U3ltbGlua1BhdGgpOworICAg
IEFTU0VSVF9UUlVFKGZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEoKmZpbGVUeXBlLCBGaWxlU3lz
dGVtOjpGaWxlVHlwZTo6U3ltYm9saWNMaW5rKTsKKworICAgIC8vIEJyb2tlbiBmaWxlIHN5bWxp
bmsgY2FzZS4KKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHRlbXBGaWxl
UGF0aCgpKSk7CisgICAgZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZSh0ZW1wRmlsZVN5
bWxpbmtQYXRoKCkpOworICAgIEFTU0VSVF9UUlVFKGZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEo
KmZpbGVUeXBlLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6U3ltYm9saWNMaW5rKTsKIAotICAgIGF1
dG8gYWN0dWFsVGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEodGVtcEVt
cHR5Rm9sZGVyUGF0aCgpKTsKLSAgICBBU1NFUlRfVFJVRShhY3R1YWxUYXJnZXRNZXRhZGF0YS5o
YXNWYWx1ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShhY3R1YWxUYXJnZXRNZXRhZGF0YS0+dHlwZSA9
PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeSk7Ci0gICAgRVhQRUNUX0VRKHRhcmdldE1l
dGFkYXRhLT5tb2RpZmljYXRpb25UaW1lLCBhY3R1YWxUYXJnZXRNZXRhZGF0YS0+bW9kaWZpY2F0
aW9uVGltZSk7Ci0gICAgRVhQRUNUX0VRKHRhcmdldE1ldGFkYXRhLT5sZW5ndGgsIGFjdHVhbFRh
cmdldE1ldGFkYXRhLT5sZW5ndGgpOwotICAgIEVYUEVDVF9GQUxTRShhY3R1YWxUYXJnZXRNZXRh
ZGF0YS0+aXNIaWRkZW4pOworICAgIC8vIEJyb2tlbiBkaXJlY3Rvcnkgc3ltbGluayBjYXNlLgor
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHRlbXBF
bXB0eUZvbGRlclBhdGgoKSkpOworICAgIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUo
dGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgoKSk7CisgICAgQVNTRVJUX1RSVUUoZmlsZVR5cGUp
OworICAgIEVYUEVDVF9FUSgqZmlsZVR5cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpTeW1ib2xp
Y0xpbmspOwogfQogCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRhZGF0YUZpbGVE
b2VzTm90RXhpc3QpCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVUeXBlRm9sbG93aW5nU3lt
bGlua3MpCiB7CiAgICAgYXV0byBkb2VzTm90RXhpc3RQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0
Iik7Ci0gICAgYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShkb2VzTm90
RXhpc3RQYXRoKTsKLSAgICBFWFBFQ1RfVFJVRSghbWV0YWRhdGEpOworICAgIGF1dG8gZmlsZVR5
cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKGRvZXNOb3RFeGlzdFBh
dGgpOworICAgIEVYUEVDVF9GQUxTRShmaWxlVHlwZSk7CisKKyAgICBmaWxlVHlwZSA9IEZpbGVT
eXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVQYXRoKCkpOworICAgIEFT
U0VSVF9UUlVFKGZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEoKmZpbGVUeXBlLCBGaWxlU3lzdGVt
OjpGaWxlVHlwZTo6UmVndWxhcik7CisKKyAgICBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVU
eXBlRm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKKyAgICBBU1NFUlRf
VFJVRShmaWxlVHlwZSk7CisgICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5c3RlbTo6Rmls
ZVR5cGU6OlJlZ3VsYXIpOworCisgICAgZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZUZv
bGxvd2luZ1N5bWxpbmtzKHRlbXBFbXB0eUZvbGRlclN5bWxpbmtQYXRoKCkpOworICAgIEFTU0VS
VF9UUlVFKGZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEoKmZpbGVUeXBlLCBGaWxlU3lzdGVtOjpG
aWxlVHlwZTo6RGlyZWN0b3J5KTsKKworICAgIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5
cGVGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpOworICAgIEFTU0VSVF9U
UlVFKGZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEoKmZpbGVUeXBlLCBGaWxlU3lzdGVtOjpGaWxl
VHlwZTo6RGlyZWN0b3J5KTsKKworICAgIC8vIFN5bWxpbmsgdG8gZmlsZSBzeW1saW5rIGNhc2Uu
CisgICAgYXV0byBzeW1saW5rVG9GaWxlU3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAic3ltbGlua1RvU3ltbGlu
ayIpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayh0ZW1w
RmlsZVN5bWxpbmtQYXRoKCksIHN5bWxpbmtUb0ZpbGVTeW1saW5rUGF0aCkpOworICAgIGZpbGVU
eXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhzeW1saW5rVG9GaWxl
U3ltbGlua1BhdGgpOworICAgIEFTU0VSVF9UUlVFKGZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEo
KmZpbGVUeXBlLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVndWxhcik7CisKKyAgICAvLyBTeW1s
aW5rIHRvIGRpcmVjdG9yeSBzeW1saW5rIGNhc2UuCisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZTsKKyAgICBhdXRvIHN5bWxpbmtUb0RpcmVjdG9yeVN5bWxpbmtQYXRo
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZS1zeW1saW5rIiwg
aGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKHN5bWxpbmtUb0RpcmVjdG9yeVN5bWxpbmtQYXRoKTsKKyAgICBFWFBF
Q1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsodGVtcEVtcHR5Rm9sZGVyU3lt
bGlua1BhdGgoKSwgc3ltbGlua1RvRGlyZWN0b3J5U3ltbGlua1BhdGgpKTsKKyAgICBmaWxlVHlw
ZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3Moc3ltbGlua1RvRGlyZWN0
b3J5U3ltbGlua1BhdGgpOworICAgIEFTU0VSVF9UUlVFKGZpbGVUeXBlKTsKKyAgICBFWFBFQ1Rf
RVEoKmZpbGVUeXBlLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KTsKKworICAgIC8v
IEJyb2tlbiBmaWxlIHN5bWxpbmsgY2FzZS4KKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKHRlbXBGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06
OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKSk7CisKKyAg
ICAvLyBCcm9rZW4gZGlyZWN0b3J5IHN5bWxpbmsgY2FzZS4KKyAgICBFWFBFQ1RfVFJVRShGaWxl
U3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyh0
ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpKSk7CiB9CiAKICNpZiBPUyhVTklYKQotVEVTVF9G
KEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFIaWRkZW5GaWxlKQorVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBpc0hpZGRlbkZpbGUpCiB7CiAgICAgYXV0byBoaWRkZW5GaWxlUGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCks
ICIuaGlkZGVuRmlsZSIpOwotICAgIGF1dG8gZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5G
aWxlKGhpZGRlbkZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKLSAg
ICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKLSAg
ICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBGaWxlU3lzdGVtVGVzdERhdGEs
IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNIaWRkZW5GaWxlKGhp
ZGRlbkZpbGVQYXRoKSk7CiAKLSAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1l
dGFkYXRhKGhpZGRlbkZpbGVQYXRoKTsKLSAgICBBU1NFUlRfVFJVRShtZXRhZGF0YS5oYXNWYWx1
ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShtZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5
cGU6OkZpbGUpOwotICAgIEVYUEVDVF9UUlVFKG1ldGFkYXRhLT5pc0hpZGRlbik7Ci0gICAgRVhQ
RUNUX0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1l
dGFkYXRhLT5sZW5ndGgpKTsKLQotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUoaGlkZGVuRmlsZVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6aXNIaWRk
ZW5GaWxlKHRlbXBGaWxlUGF0aCgpKSk7CiB9CiAjZW5kaWYKIApAQCAtMjg5LDkgKzMxMCw5IEBA
IFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZmlsZUV4aXN0c0Jyb2tlblN5bWxpbmspCiAgICAgRVhQ
RUNUX1RSVUUoRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKGRvZXNOb3RFeGlzdFBhdGgs
IHN5bWxpbmtQYXRoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
ZG9lc05vdEV4aXN0UGF0aCkpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKHN5bWxpbmtQYXRoKSk7IC8vIGZpbGVFeGlzdHMoKSBmb2xsb3dzIHN5bWxpbmtzLgotICAg
IGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHN5bWxpbmtQ
YXRoKTsKLSAgICBBU1NFUlRfVFJVRSghIXN5bWxpbmtNZXRhZGF0YSk7Ci0gICAgRVhQRUNUX0VR
KHN5bWxpbmtNZXRhZGF0YS0+dHlwZSwgRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmsp
OworICAgIGF1dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZShzeW1saW5rUGF0aCk7
CisgICAgQVNTRVJUX1RSVUUoISFmaWxlVHlwZSk7CisgICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwg
RmlsZVN5c3RlbTo6RmlsZVR5cGU6OlN5bWJvbGljTGluayk7CiAgICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShzeW1saW5rUGF0aCkpOwogfQogCkBAIC0zMDIsMTMgKzMyMywx
MyBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVFeGlzdHNTeW1saW5rVG9TeW1saW5rKQog
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayh0ZW1wRmlsZVN5
bWxpbmtQYXRoKCksIHN5bWxpbmtQYXRoKSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhzeW1saW5rUGF0aCkpOwogCi0gICAgYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0
ZW06OmZpbGVNZXRhZGF0YShzeW1saW5rUGF0aCk7Ci0gICAgQVNTRVJUX1RSVUUoISFtZXRhZGF0
YSk7Ci0gICAgRVhQRUNUX0VRKG1ldGFkYXRhLT50eXBlLCBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5
bWJvbGljTGluayk7CisgICAgYXV0byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHN5
bWxpbmtQYXRoKTsKKyAgICBBU1NFUlRfVFJVRSghIWZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEo
KmZpbGVUeXBlLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6U3ltYm9saWNMaW5rKTsKIAotICAgIGF1
dG8gdGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1s
aW5rcyhzeW1saW5rUGF0aCk7Ci0gICAgQVNTRVJUX1RSVUUoISF0YXJnZXRNZXRhZGF0YSk7Ci0g
ICAgRVhQRUNUX0VRKHRhcmdldE1ldGFkYXRhLT50eXBlLCBGaWxlTWV0YWRhdGE6OlR5cGU6OkZp
bGUpOworICAgIGF1dG8gdGFyZ2V0RmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxv
d2luZ1N5bWxpbmtzKHN5bWxpbmtQYXRoKTsKKyAgICBBU1NFUlRfVFJVRSghIXRhcmdldEZpbGVU
eXBlKTsKKyAgICBFWFBFQ1RfRVEoKnRhcmdldEZpbGVUeXBlLCBGaWxlU3lzdGVtOjpGaWxlVHlw
ZTo6UmVndWxhcik7CiAKICAgICAvLyBCcmVhayB0aGUgc3ltbGluayBieSBkZWxldGluZyB0aGUg
dGFyZ2V0LgogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUodGVtcEZpbGVQ
YXRoKCkpKTsKQEAgLTMxNywxOSArMzM4LDE5IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZmls
ZUV4aXN0c1N5bWxpbmtUb1N5bWxpbmspCiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZp
bGVFeGlzdHModGVtcEZpbGVTeW1saW5rUGF0aCgpKSk7IC8vIGZpbGVFeGlzdHMoKSBmb2xsb3dz
IHN5bWxpbmtzLgogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN5bWxp
bmtQYXRoKSk7IC8vIGZpbGVFeGlzdHMoKSBmb2xsb3dzIHN5bWxpbmtzLgogCi0gICAgbWV0YWRh
dGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoc3ltbGlua1BhdGgpOwotICAgIEFTU0VSVF9U
UlVFKCEhbWV0YWRhdGEpOwotICAgIEVYUEVDVF9FUShtZXRhZGF0YS0+dHlwZSwgRmlsZU1ldGFk
YXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOworICAgIGZpbGVUeXBlID0gRmlsZVN5c3RlbTo6Zmls
ZVR5cGUoc3ltbGlua1BhdGgpOworICAgIEFTU0VSVF9UUlVFKCEhZmlsZVR5cGUpOworICAgIEVY
UEVDVF9FUSgqZmlsZVR5cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpTeW1ib2xpY0xpbmspOwog
Ci0gICAgbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEodGVtcEZpbGVTeW1saW5r
UGF0aCgpKTsKLSAgICBBU1NFUlRfVFJVRSghIW1ldGFkYXRhKTsKLSAgICBFWFBFQ1RfRVEobWV0
YWRhdGEtPnR5cGUsIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKKyAgICBmaWxl
VHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CisgICAg
QVNTRVJUX1RSVUUoISFmaWxlVHlwZSk7CisgICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwgRmlsZVN5
c3RlbTo6RmlsZVR5cGU6OlN5bWJvbGljTGluayk7CiAKLSAgICB0YXJnZXRNZXRhZGF0YSA9IEZp
bGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlU3ltbGlua1Bh
dGgoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIXRhcmdldE1ldGFkYXRhKTsKKyAgICB0YXJnZXRGaWxl
VHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVTeW1s
aW5rUGF0aCgpKTsKKyAgICBFWFBFQ1RfVFJVRSghdGFyZ2V0RmlsZVR5cGUpOwogCi0gICAgdGFy
Z2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhz
eW1saW5rUGF0aCk7Ci0gICAgRVhQRUNUX1RSVUUoIXRhcmdldE1ldGFkYXRhKTsKKyAgICB0YXJn
ZXRGaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3Moc3ltbGlu
a1BhdGgpOworICAgIEVYUEVDVF9UUlVFKCF0YXJnZXRGaWxlVHlwZSk7CiAKICAgICBFWFBFQ1Rf
VFJVRShGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHN5bWxpbmtQYXRoKSk7CiB9CkBAIC01MDQsNDEg
KzUyNSwxNiBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVTaXplKQogICAgIEVYUEVDVF9U
UlVFKCFmaWxlU2l6ZSk7CiB9CiAKLVRFU1RfRihGaWxlU3lzdGVtVGVzdCwgaXNEaXJlY3Rvcnkp
Ci17Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnkodGVtcEVtcHR5Rm9s
ZGVyUGF0aCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xs
b3dpbmdTeW1saW5rcyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpKTsKLQotICAgIGF1dG8gZm9sZGVy
U3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBFbXB0eUZvbGRl
clN5bWxpbmtQYXRoKCkpOwotICAgIEVYUEVDVF9UUlVFKCEhZm9sZGVyU3ltbGlua01ldGFkYXRh
KTsKLSAgICBFWFBFQ1RfRVEoZm9sZGVyU3ltbGlua01ldGFkYXRhLT50eXBlLCBGaWxlTWV0YWRh
dGE6OlR5cGU6OlN5bWJvbGljTGluayk7Ci0gICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06Omlz
RGlyZWN0b3J5KHRlbXBFbXB0eUZvbGRlclN5bWxpbmtQYXRoKCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjppc0RpcmVjdG9yeUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBFbXB0eUZvbGRl
clN5bWxpbmtQYXRoKCkpKTsKLQotICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0RpcmVj
dG9yeSh0ZW1wRmlsZVBhdGgoKSkpOwotICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0Rp
cmVjdG9yeUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlUGF0aCgpKSk7Ci0KLSAgICBhdXRvIGZp
bGVTeW1saW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEodGVtcEZpbGVTeW1s
aW5rUGF0aCgpKTsKLSAgICBFWFBFQ1RfVFJVRSghIWZpbGVTeW1saW5rTWV0YWRhdGEpOwotICAg
IEVYUEVDVF9FUShmaWxlU3ltbGlua01ldGFkYXRhLT50eXBlLCBGaWxlTWV0YWRhdGE6OlR5cGU6
OlN5bWJvbGljTGluayk7Ci0gICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5
KHRlbXBGaWxlU3ltbGlua1BhdGgoKSkpOwotICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpp
c0RpcmVjdG9yeUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSkpOwotCi0g
ICAgU3RyaW5nIGZpbGVUaGF0RG9lc05vdEV4aXN0ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Il9zKTsK
LSAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnkoZmlsZVRoYXREb2VzTm90
RXhpc3QpKTsKLSAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xsb3dp
bmdTeW1saW5rcyhmaWxlVGhhdERvZXNOb3RFeGlzdCkpOwotfQotCiBURVNUX0YoRmlsZVN5c3Rl
bVRlc3QsIG1ha2VBbGxEaXJlY3RvcmllcykKIHsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSkpOwotICAgIEVYUEVDVF9UUlVFKEZp
bGVTeXN0ZW06OmlzRGlyZWN0b3J5KHRlbXBFbXB0eUZvbGRlclBhdGgoKSkpOworICAgIEVYUEVD
VF9FUShGaWxlU3lzdGVtOjpmaWxlVHlwZSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpLnZhbHVlT3Io
RmlsZVN5c3RlbTo6RmlsZVR5cGU6OlJlZ3VsYXIpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGly
ZWN0b3J5KTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMo
dGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSk7CiAgICAgU3RyaW5nIHN1YkZvbGRlclBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSwg
eyAic3ViRm9sZGVyMSIsICJzdWJGb2xkZXIyIiwgInN1YkZvbGRlcjMiIH0pOwogICAgIEVYUEVD
VF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN1YkZvbGRlclBhdGgpKTsKICAgICBFWFBF
Q1RfVFJVRShGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoc3ViRm9sZGVyUGF0aCkpOwog
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3ViRm9sZGVyUGF0aCkpOwot
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5KHN1YkZvbGRlclBhdGgpKTsK
KyAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6ZmlsZVR5cGUoc3ViRm9sZGVyUGF0aCkudmFsdWVP
cihGaWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVndWxhciksIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpE
aXJlY3RvcnkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGly
ZWN0b3J5KHRlbXBFbXB0eUZvbGRlclBhdGgoKSkpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKHN1YkZvbGRlclBhdGgpKTsKIH0KQEAgLTU2MCw5ICs1NTYsOSBAQCBU
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIGNyZWF0ZVN5bWJvbGljTGluaykKICAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsodGVtcEZpbGVQYXRoKCksIHN5bWxpbmtQ
YXRoKSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzeW1saW5rUGF0
aCkpOwogCi0gICAgYXV0byBzeW1saW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRh
dGEoc3ltbGlua1BhdGgpOwotICAgIEVYUEVDVF9UUlVFKCEhc3ltbGlua01ldGFkYXRhKTsKLSAg
ICBFWFBFQ1RfRVEoc3ltbGlua01ldGFkYXRhLT50eXBlLCBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5
bWJvbGljTGluayk7CisgICAgYXV0byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHN5
bWxpbmtQYXRoKTsKKyAgICBBU1NFUlRfVFJVRSghIWZpbGVUeXBlKTsKKyAgICBFWFBFQ1RfRVEo
KmZpbGVUeXBlLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6U3ltYm9saWNMaW5rKTsKIAogICAgIEVY
UEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc3ltbGlua1BhdGgpKTsKICAgICBFWFBF
Q1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzeW1saW5rUGF0aCkpOwpAQCAtNTc3LDEy
ICs1NzMsOSBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGNyZWF0ZVN5bWJvbGljTGlua0ZvbGRl
cikKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsodGVtcEVt
cHR5Rm9sZGVyUGF0aCgpLCBzeW1saW5rUGF0aCkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMoc3ltbGlua1BhdGgpKTsKIAotICAgIGF1dG8gc3ltbGlua01ldGFkYXRh
ID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHN5bWxpbmtQYXRoKTsKLSAgICBFWFBFQ1RfVFJV
RSghIXN5bWxpbmtNZXRhZGF0YSk7Ci0gICAgRVhQRUNUX0VRKHN5bWxpbmtNZXRhZGF0YS0+dHlw
ZSwgRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOwotCi0gICAgRVhQRUNUX0ZBTFNF
KEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5KHN5bWxpbmtQYXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUo
RmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xsb3dpbmdTeW1saW5rcyhzeW1saW5rUGF0aCkpOwor
ICAgIGF1dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZShzeW1saW5rUGF0aCk7Cisg
ICAgQVNTRVJUX1RSVUUoISFmaWxlVHlwZSk7CisgICAgRVhQRUNUX0VRKCpmaWxlVHlwZSwgRmls
ZVN5c3RlbTo6RmlsZVR5cGU6OlN5bWJvbGljTGluayk7CiAKICAgICBFWFBFQ1RfVFJVRShGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKHN5bWxpbmtQYXRoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMoc3ltbGlua1BhdGgpKTsKQEAgLTYxNyw5ICs2MTAsOSBAQCBURVNU
X0YoRmlsZVN5c3RlbVRlc3QsIGNyZWF0ZUhhcmRMaW5rKQogICAgIEFTU0VSVF9UUlVFKGxpbmtG
aWxlU2l6ZSk7CiAgICAgRVhQRUNUX0VRKCpsaW5rRmlsZVNpemUsICpmaWxlU2l6ZSk7CiAKLSAg
ICBhdXRvIGhhcmRsaW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoaGFyZGxp
bmtQYXRoKTsKLSAgICBBU1NFUlRfVFJVRSghIWhhcmRsaW5rTWV0YWRhdGEpOwotICAgIEVYUEVD
VF9FUShoYXJkbGlua01ldGFkYXRhLT50eXBlLCBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOwor
ICAgIGF1dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZShoYXJkbGlua1BhdGgpOwor
ICAgIEFTU0VSVF9UUlVFKCEhZmlsZVR5cGUpOworICAgIEVYUEVDVF9FUSgqZmlsZVR5cGUsIEZp
bGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKTsKIAogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUodGVtcEZpbGVQYXRoKCkpKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwpAQCAtNjQ3LDkgKzY0MCw5IEBAIFRF
U1RfRihGaWxlU3lzdGVtVGVzdCwgY3JlYXRlSGFyZExpbmtPckNvcHlGaWxlKQogICAgIEFTU0VS
VF9UUlVFKGxpbmtGaWxlU2l6ZSk7CiAgICAgRVhQRUNUX0VRKCpsaW5rRmlsZVNpemUsICpmaWxl
U2l6ZSk7CiAKLSAgICBhdXRvIGhhcmRsaW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0
YWRhdGEoaGFyZGxpbmtQYXRoKTsKLSAgICBFWFBFQ1RfVFJVRSghIWhhcmRsaW5rTWV0YWRhdGEp
OwotICAgIEVYUEVDVF9FUShoYXJkbGlua01ldGFkYXRhLT50eXBlLCBGaWxlTWV0YWRhdGE6OlR5
cGU6OkZpbGUpOworICAgIGF1dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZShoYXJk
bGlua1BhdGgpOworICAgIEFTU0VSVF9UUlVFKCEhZmlsZVR5cGUpOworICAgIEVYUEVDVF9FUSgq
ZmlsZVR5cGUsIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKTsKIAogICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUodGVtcEZpbGVQYXRoKCkpKTsKICAgICBFWFBFQ1Rf
RkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwpAQCAtNzMxLDE2
ICs3MjQsNiBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVNb2RpZmljYXRpb25UaW1lKQog
ICAgIH0pOwogfQogCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVNb2RpZmljYXRpb25UaW1l
VmlhRmlsZU1ldGFkYXRhKQotewotICAgIHJ1bkdldEZpbGVNb2RpZmljYXRpb25UaW1lVGVzdCh0
ZW1wRmlsZVBhdGgoKSwgW10oY29uc3QgU3RyaW5nJiBwYXRoKSAtPiBPcHRpb25hbDxXYWxsVGlt
ZT4gewotICAgICAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHBh
dGgpOwotICAgICAgICBpZiAoIW1ldGFkYXRhKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICAgICAgcmV0dXJuIG1ldGFkYXRhLT5tb2RpZmljYXRpb25UaW1lOwotICAgIH0p
OwotfQotCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIHVwZGF0ZUZpbGVNb2RpZmljYXRpb25UaW1l
KQogewogICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmZpbGVNb2RpZmlj
YXRpb25UaW1lKHRlbXBGaWxlUGF0aCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428711</attachid>
            <date>2021-05-14 21:03:52 -0700</date>
            <delta_ts>2021-05-14 22:46:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225820-20210514210351.patch</filename>
            <type>text/plain</type>
            <size>62688</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
M2E3NWE2ZmEzMjAyYWRiY2VjNWY2ODliOTIyMTc1NWJjZjVkZjc1Li45ODg2NjE5OTA3NDBkMDM0
MTdmNGFiYWQzNTg2NWFjYjQ5NzdmZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERyb3AgRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgLyBmaWxlTWV0YWRhdGFG
b2xsb3dpbmdTeW1saW5rcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjU4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICBVcGRhdGUgb3VyIGNvZGUgYmFzZSBiZWNhdXNlIG9mIHRoZSBGaWxlU3lzdGVtIEFQ
SSBjaGFuZ2VzLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAgICAgICAodmFsaWRh
dGVCeXRlY29kZUNhY2hlUGF0aCk6CisKIDIwMjEtMDUtMTQgIE1hcmsgTGFtICA8bWFyay5sYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBCYXNlbGluZSBKSVQgcHJvcGVydHkgYWNj
ZXNzIHNsb3cgcGF0aHMgdXNpbmcgSklUIHRodW5rcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNWQwMzljNjUyOGM2OWJhY2Fk
OTc5NWEzNTVlNTExMzBmZDgzN2FhNi4uYzgwNTQwYjIwYjg4OTA3MjA1OGQ4MjQzMjE5Mzc5ZGQx
NDcxMDM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRh
KCkgLyBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcygpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4MjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBEcm9wIEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSgp
IC8gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoKS4gVGhvc2UgZG9uJ3QgbWF0Y2ggdmVy
eSBjbG9zZWx5IHRoZQorICAgICAgICBzdGQ6OmZpbGVzeXN0ZW0gQVBJIHdlIHVzZSBpbnRlcm5h
bGx5IGFuZCB0aGV5IGFyZSBub3QgdmVyeSBlZmZpY2llbnQgYmVjYXVzZSB3ZSBnYXRoZXIgc2V2
ZXJhbCBhdHRyaWJ1dGVzCisgICAgICAgIG9mIGEgZmlsZSBidXQgdGhlIGNhbGxlcnMgYXJlIHVz
dWFsbHkgb25seSBpbnRlcmVzdGVkIGluIG9uZSB0aGluZyAoZS5nLiBmaWxlIHR5cGUgb3IgZmls
ZSBzaXplKS4KKworICAgICAgICBDYWxsZXJzIGludGVyZXN0ZWQgaW4gdGhlIGZpbGUgc2l6ZSwg
Y2FuIGNhbGwgdGhlIHByZS1leGlzdGluZyBGaWxlU3lzdGVtOjpmaWxlU2l6ZSgpLiBGb3IgY2Fs
bCBzaXRlcworICAgICAgICB3YW50aW5nIHRvIGNoZWNrIGlmIGl0IGlzIGEgaGlkZGVuIGZpbGUs
IEkgaW50cm9kdWNlZCBhIG5ldyBGaWxlU3lzdGVtOjppc0hpZGRlbkZpbGUoKSBBUEkuIEZvciBj
YWxsIHNpdGVzCisgICAgICAgIGludGVyZXN0ZWQgaW4gdGhlIGZpbGUgdHlwZSwgSSByZXBsYWNl
ZCBGaWxlU3lzdGVtOjppc0RpcmVjdG9yeSgpIC8gRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xs
b3dpbmdTeW1saW5rcygpCisgICAgICAgIHdpdGggbW9yZSBnZW5lcmljIEZpbGVTeXN0ZW06OmZp
bGVUeXBlKCkgLyBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKCkuCisKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0ZpbGVNZXRhZGF0YS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OmlzSGlkZGVuRmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxlVHlwZVBv
dGVudGlhbGx5Rm9sbG93aW5nU3ltTGlua3MpOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1w
bDo6ZmlsZVR5cGUpOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZmlsZVR5cGVGb2xs
b3dpbmdTeW1saW5rcyk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiB3
dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHA6CisgICAgICAgICogd3RmL3Bvc2l4L0ZpbGVTeXN0
ZW1QT1NJWC5jcHA6CisgICAgICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKwogMjAy
MS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3Ag
ImdldCIgcHJlZml4IGZyb20gV1RGOjpGaWxlU3lzdGVtJ3MgZ2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUoKSAvIGdldEZpbGVDcmVhdGlvblRpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNiMTVlMTk3Nzk1Nzc3
NzVmOThjMmQyMzg5MDlhYWU4MGRhN2VhMWMuLmYyZGQ2NmY2NmM0NDNhYzM0ODk2MDc0ZWViMGE2
NGNhMzNhNjQ0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMS0wNS0xNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgRmlsZVN5c3RlbTo6
ZmlsZU1ldGFkYXRhKCkgLyBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcygpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4MjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVcGRhdGUgb3VyIGNvZGUgYmFz
ZSBiZWNhdXNlIG9mIHRoZSBGaWxlU3lzdGVtIEFQSSBjaGFuZ2VzLgorCisgICAgICAgICogTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGlz
dERpcmVjdG9yeVdpdGhNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjp0b0ZpbGVTeXN0ZW1F
bnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVUeXBlSWdub3JpbmdIaWRkZW5GaWxlcyk6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZVBhdGhJc0V4cGVjdGVkVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRmlsZVN5c3RlbTo6Z2V0RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3Rl
bTo6Z2V0RmlsZSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50Rm9yRmlsZVBhdGgpOgorICAgICAg
ICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjppc0RpcmVjdG9y
eSBjb25zdCk6CisgICAgICAgICogaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YXBwZW5kRGlyZWN0b3J5RmlsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2F0aGVyRmlsZUluZm9ybWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpz
ZXRTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5zdXJlQXNzZXRDYWNoZUV4aXN0c0ZvclBhdGgpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6c3RhcnRUcmFja2luZ01vZGlmaWNhdGlvbnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YTo6cHJlcGFyZUZvclVwbG9hZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
QmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlOjpnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSk6CisKIDIwMjEtMDUtMTQgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBbIE1h
YyBXSzIgXSBmYXN0L21lZGlhc3RyZWFtL2F1ZGlvLXRyYWNrLWVuYWJsZWQuaHRtbCBpcyBmbGFr
eSBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNkY2Q0N2E0YjRmYjc1MzYzZGYwN2UzY2IyZjAzZTgxZDg5
NWIyNDUuLjIxZTc1ZmJlMTYwODBmNTJhOTdiNGYxNGY1YTE1OGU5YThkZjM3Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDUtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBEcm9wIEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSgpIC8gZmlsZU1l
dGFkYXRhRm9sbG93aW5nU3ltbGlua3MoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgVXBkYXRlIG91ciBjb2RlIGJhc2UgYmVjYXVzZSBvZiB0aGUgRmlsZVN5
c3RlbSBBUEkgY2hhbmdlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Z2V0RGly
ZWN0b3J5U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpnZXRE
aXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVh
ckFsbENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjp0
cmF2ZXJzZURpcmVjdG9yeSk6CisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNz
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjplbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3RvcnkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0Ojppc0ludGVybmFsSW5zdGFsbCk6CisKIDIwMjEtMDUtMTQgIFBhdHJpY2sgQW5n
bGUgIDxwYW5nbGVAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGBfV0tJbnNw
ZWN0b3JgIGxlYWtzIGBXZWJJbnNwZWN0b3JVSVByb3h5YApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNTY3JpcHQubW0KaW5kZXggMWRjYTdjMTU3ODEyMWRmMzZkY2UyZjdlZDZiMGExYjUwZDM5NWIy
MC4uOGE3MjNjNTE5YmQ2MjU4N2QxYzU4ZmZkZDE2YTEzMTJiODRiNGYwZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0zOCw3ICszOCw2IEBACiAjaW1wb3J0ICJKU1Zp
cnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKICNpbXBvcnQgIlN5bWJvbC5oIgogI2ltcG9ydCA8c3lz
L3N0YXQuaD4KLSNpbXBvcnQgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbXBvcnQgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvU0hBMS5oPgogI2ltcG9ydCA8d3RmL1Njb3BlLmg+CkBA
IC03Nyw4ICs3Niw4IEBAIHN0YXRpYyBib29sIHZhbGlkYXRlQnl0ZWNvZGVDYWNoZVBhdGgoTlNV
UkwqIGNhY2hlUGF0aCwgTlNFcnJvcioqIGVycm9yKQogCiAgICAgU3RyaW5nIHN5c3RlbVBhdGgg
PSBjYWNoZVBhdGhVUkwuZmlsZVN5c3RlbVBhdGgoKTsKIAotICAgIGlmIChhdXRvIG1ldGFkYXRh
ID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHN5c3RlbVBhdGgpKSB7Ci0gICAgICAgIGlmICht
ZXRhZGF0YS0+dHlwZSAhPSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpIHsKKyAgICBpZiAoYXV0
byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlKHN5c3RlbVBhdGgpKSB7CisgICAgICAg
IGlmICgqZmlsZVR5cGUgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlJlZ3VsYXIpIHsKICAgICAg
ICAgICAgIGNyZWF0ZUVycm9yKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQ2FjaGUgcGF0
aCBgJUBgIGFscmVhZHkgZXhpc3RzIGFuZCBpcyBub3QgYSBmaWxlIiwgc3RhdGljX2Nhc3Q8TlNT
dHJpbmcgKj4oc3lzdGVtUGF0aCldLCBlcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KQEAgLTkwLDcgKzg5LDcgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVCeXRlY29k
ZUNhY2hlUGF0aChOU1VSTCogY2FjaGVQYXRoLCBOU0Vycm9yKiogZXJyb3IpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5KGRp
cmVjdG9yeSkpIHsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZVR5cGUoZGlyZWN0b3J5KSAhPSBG
aWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KSB7CiAgICAgICAgIGNyZWF0ZUVycm9yKFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQ2FjaGUgZGlyZWN0b3J5IGAlQGAgaXMgbm90IGEg
ZGlyZWN0b3J5IG9yIGRvZXMgbm90IGV4aXN0Iiwgc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oZGly
ZWN0b3J5KV0sIGVycm9yKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNhZTA1ZTcwMTVlNTYyZGRkNGQy
NjNkYjEzZjA3NDk3MzEwY2ZlMmMuLmIxMWUwOThjZTQ3N2Q2OWQ4NjliMmYxNWU3NTNjOTkzZTE4
MDM3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTEy
LDcgKzUxMiw2IEBACiAJCUEzMEQ0MTJDMUYwREUwQkEwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDEyRDFGMERFMTNGMDBCNzE5NTQgLyogU29mdExp
bmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMyRDhGQTQyMUZGRkFCNDAwNzgwNjYyIC8q
IFRocmVhZGluZ1BPU0lYLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRocmVhZGluZ1BPU0lYLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTMzMUQ5
NTgyMUYyNDk3ODAwOUYwMkFBIC8qIEZpbGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGaWxlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTMzMUQ5NTkyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMzMxRDk1QTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMzMUQ5NUMyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0
ZW1DRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVt
Q0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAzOSw3ICsxMDM4LDYgQEAK
IAkJCQlBOEE0NzJBMTE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgKi8sCiAJCQkJ
QThBNDcyQTIxNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLywKIAkJCQkwRjc5QzdD
MzFFNzM1MTE4MDBFQjM0RDEgLyogRmFzdFRMUy5oICovLAotCQkJCUEzMzFEOTU4MjFGMjQ5Nzgw
MDlGMDJBQSAvKiBGaWxlTWV0YWRhdGEuaCAqLywKIAkJCQkwRjlEMzM1QjE2NURCQTczMDA1QUQz
ODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCAqLywKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1QUQz
ODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJQTMzMUQ5NUEyMUYyNDk5MjAwOUYwMkFB
IC8qIEZpbGVTeXN0ZW0uY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBiNDljMTM3M2Zl
MjdlODRhOGRjM2IyYmZlNDc1MzkyZWI1OTMzMWJiLi5lN2RiYzRmMDJmYTA5NmE2ODM5YmZmOWJk
MzI1MjI4MDZkNzBhMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNjgsNyArNjgsNiBAQCBz
ZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgRmFzdEJpdFZlY3Rvci5oCiAgICAgRmFzdE1hbGxv
Yy5oCiAgICAgRmFzdFRMUy5oCi0gICAgRmlsZU1ldGFkYXRhLmgKICAgICBGaWxlUHJpbnRTdHJl
YW0uaAogICAgIEZpbGVTeXN0ZW0uaAogICAgIEZpeGVkVmVjdG9yLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVNZXRhZGF0YS5oIGIvU291cmNlL1dURi93dGYvRmlsZU1ldGFkYXRh
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzYTBhMmFhYjc1MzNiZDA3YjIwMDkx
NDE1MWNkMmJhNzFmNTU4NDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZU1ldGFkYXRhLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KLQot
bmFtZXNwYWNlIFdURiB7Ci0KLXN0cnVjdCBGaWxlTWV0YWRhdGEgewotICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKLQotICAgIC8vIFRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1l
IG9mIHRoZSBmaWxlLCBpbiBzZWNvbmRzLgotICAgIFdhbGxUaW1lIG1vZGlmaWNhdGlvblRpbWU7
Ci0KLSAgICAvLyBUaGUgbGVuZ3RoIG9mIHRoZSBmaWxlIGluIGJ5dGVzLgotICAgIGxvbmcgbG9u
ZyBsZW5ndGg7Ci0KLSAgICBib29sIGlzSGlkZGVuOwotCi0gICAgZW51bSBjbGFzcyBUeXBlIHsg
RmlsZSwgRGlyZWN0b3J5LCBTeW1ib2xpY0xpbmsgfTsKLSAgICBUeXBlIHR5cGU7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpGaWxlTWV0YWRhdGE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uY3BwCmluZGV4IGExNjdhNzQ0N2YyYmE3ZjQ4Zjc1OGJkYWMxYWJkMGY2YjQyYjRhODcuLjQ3
ZWFjY2ZlNDFiNjVkZGMyZTY3NmFmODEyOTA4YTUxM2ZmMTFhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
Y3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lu
Y2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgotI2luY2x1ZGUgPHd0
Zi9GaWxlTWV0YWRhdGEuaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8
d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZEZpbGVzeXN0ZW0uaD4KQEAgLTEzOSwyMCAr
MTM4LDYgQEAgc3RhdGljIFdhbGxUaW1lIHRvV2FsbFRpbWUoc3RkOjpmaWxlc3lzdGVtOjpmaWxl
X3RpbWVfdHlwZSBmaWxlVGltZSkKICAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KHRvVGltZVQoZmlsZVRpbWUpKTsKIH0KIAotc3RhdGljIHN0ZDo6ZmlsZXN5c3RlbTo6cGF0aCBy
ZXNvbHZlU3ltbGlua3Moc3RkOjpmaWxlc3lzdGVtOjpwYXRoIHBhdGgsIHN0ZDo6ZXJyb3JfY29k
ZSYgZWMpCi17Ci0jaWZkZWYgTUFYU1lNTElOS1MKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG1heFN5bWxpbmtEZXB0aCA9IE1BWFNZTUxJTktTOwotI2Vsc2UKLSAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG1heFN5bWxpbmtEZXB0aCA9IDQwOwotI2VuZGlmCi0KLSAgICB1bnNp
Z25lZCBjdXJyZW50RGVwdGggPSAwOwotICAgIHdoaWxlICgrK2N1cnJlbnREZXB0aCA8PSBtYXhT
eW1saW5rRGVwdGggJiYgIWVjICYmIHN0ZDo6ZmlsZXN5c3RlbTo6aXNfc3ltbGluayhwYXRoLCBl
YykpCi0gICAgICAgIHBhdGggPSBzdGQ6OmZpbGVzeXN0ZW06OnJlYWRfc3ltbGluayhwYXRoLCBl
Yyk7Ci0gICAgcmV0dXJuIHBhdGg7Ci19Ci0KIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25z
dCBTdHJpbmcmIGlucHV0U3RyaW5nKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0U3Ry
aW5nLmxlbmd0aCgpOwpAQCAtNjA2LDE4ICs1OTEsNiBAQCBPcHRpb25hbDx1aW50NjRfdD4gZmls
ZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBzaXplOwogfQogCi1ib29sIGlz
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBzdGQ6OmVycm9yX2NvZGUgZWM7
Ci0gICAgcmV0dXJuIHN0ZDo6ZmlsZXN5c3RlbTo6c3ltbGlua19zdGF0dXModG9TdGRGaWxlU3lz
dGVtUGF0aChwYXRoKSwgZWMpLnR5cGUoKSA9PSBzdGQ6OmZpbGVzeXN0ZW06OmZpbGVfdHlwZTo6
ZGlyZWN0b3J5OwotfQotCi1ib29sIGlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3MoY29uc3Qg
U3RyaW5nJiBwYXRoKQotewotICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKLSAgICByZXR1cm4gc3Rk
OjpmaWxlc3lzdGVtOjpzdGF0dXModG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpLnR5cGUo
KSA9PSBzdGQ6OmZpbGVzeXN0ZW06OmZpbGVfdHlwZTo6ZGlyZWN0b3J5OwotfQotCiBib29sIG1h
a2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc3RkOjplcnJvcl9j
b2RlIGVjOwpAQCAtNjkyLDU2ICs2NjUsNDQgQEAgYm9vbCB1cGRhdGVGaWxlTW9kaWZpY2F0aW9u
VGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuICFlYzsKIH0KIAotZW51bSBjbGFz
cyBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHsgTm8sIFllcyB9Owotc3RhdGljIE9wdGlvbmFs
PEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1saW5rcyhj
b25zdCBTdHJpbmcmIHBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93
U3ltYm9saWNMaW5rcykKK2Jvb2wgaXNIaWRkZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
LSAgICBpZiAocGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICBhdXRvIGZzUGF0aCA9IHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCk7Ci0KLSAgICBzdGQ6
OmVycm9yX2NvZGUgZWM7Ci0gICAgaWYgKHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgPT0gU2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzICYmIHN0ZDo6ZmlsZXN5c3RlbTo6aXNfc3ltbGlu
ayhmc1BhdGgsIGVjKSkgewotICAgICAgICBmc1BhdGggPSByZXNvbHZlU3ltbGlua3MoZnNQYXRo
LCBlYyk7Ci0gICAgICAgIGlmIChlYykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgfQotCi0gICAgZWMgPSB7IH07Ci0gICAgc3RkOjpmaWxlc3lzdGVtOjpkaXJlY3Rvcnlf
ZW50cnkgZW50cnkoZnNQYXRoLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gdG9XYWxsVGltZShlbnRy
eS5sYXN0X3dyaXRlX3RpbWUoZWMpKTsKLQotICAgIC8vIE5vdGUgdGhhdCB0aGUgcmVzdWx0IG9m
IGF0dGVtcHRpbmcgdG8gZGV0ZXJtaW5lIHRoZSBzaXplIG9mIGEgZGlyZWN0b3J5IGlzIGltcGxl
bWVudGF0aW9uLWRlZmluZWQuCi0gICAgYXV0byBmaWxlU2l6ZSA9IGVudHJ5LmZpbGVfc2l6ZShl
Yyk7Ci0gICAgaWYgKGVjKQotICAgICAgICBmaWxlU2l6ZSA9IDA7Ci0KICNpZiBPUyhVTklYKQor
ICAgIGF1dG8gZnNQYXRoID0gdG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKTsKICAgICBzdGQ6OmZp
bGVzeXN0ZW06OnBhdGg6OnN0cmluZ190eXBlIGZpbGVuYW1lID0gZnNQYXRoLmZpbGVuYW1lKCk7
Ci0gICAgYm9vbCBpc0hpZGRlbiA9ICFmaWxlbmFtZS5lbXB0eSgpICYmIGZpbGVuYW1lWzBdID09
ICcuJzsKKyAgICByZXR1cm4gIWZpbGVuYW1lLmVtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4n
OwogI2Vsc2UKLSAgICBib29sIGlzSGlkZGVuID0gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFNKHBh
dGgpOworICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgotICAgIEZpbGVNZXRhZGF0YTo6VHlwZSB0
eXBlID0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOwotICAgIGlmIChlbnRyeS5pc19zeW1saW5r
KGVjKSkKLSAgICAgICAgdHlwZSA9IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rOwot
ICAgIGVsc2UgaWYgKGVudHJ5LmlzX2RpcmVjdG9yeShlYykpCi0gICAgICAgIHR5cGUgPSBGaWxl
TWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsKK30KIAotICAgIHJldHVybiBGaWxlTWV0YWRhdGEg
eyBtb2RpZmljYXRpb25UaW1lLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGZpbGVTaXplKSwgaXNI
aWRkZW4sIHR5cGUgfTsKK2VudW0gY2xhc3MgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyB7IE5v
LCBZZXMgfTsKK3N0YXRpYyBPcHRpb25hbDxGaWxlVHlwZT4gZmlsZVR5cGVQb3RlbnRpYWxseUZv
bGxvd2luZ1N5bUxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rcyBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQoreworICAgIHN0ZDo6ZXJyb3JfY29kZSBl
YzsKKyAgICBhdXRvIHN0YXR1cyA9IHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgPT0gU2hvdWxk
Rm9sbG93U3ltYm9saWNMaW5rczo6WWVzID8gc3RkOjpmaWxlc3lzdGVtOjpzdGF0dXModG9TdGRG
aWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpIDogc3RkOjpmaWxlc3lzdGVtOjpzeW1saW5rX3N0YXR1
cyh0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgpLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHN3aXRjaCAoc3RhdHVzLnR5cGUoKSkgeworICAgIGNh
c2Ugc3RkOjpmaWxlc3lzdGVtOjpmaWxlX3R5cGU6OmRpcmVjdG9yeToKKyAgICAgICAgcmV0dXJu
IEZpbGVUeXBlOjpEaXJlY3Rvcnk7CisgICAgY2FzZSBzdGQ6OmZpbGVzeXN0ZW06OmZpbGVfdHlw
ZTo6c3ltbGluazoKKyAgICAgICAgcmV0dXJuIEZpbGVUeXBlOjpTeW1ib2xpY0xpbms7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBGaWxlVHlwZTo6UmVn
dWxhcjsKIH0KIAotT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3Ry
aW5nJiBwYXRoKQorT3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlKGNvbnN0IFN0cmluZyYgcGF0
aCkKIHsKLSAgICByZXR1cm4gZmlsZU1ldGFkYXRhUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1saW5r
cyhwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObyk7CisgICAgcmV0dXJuIGZpbGVU
eXBlUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1MaW5rcyhwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xp
Y0xpbmtzOjpObyk7CiB9CiAKLU9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9s
bG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQorT3B0aW9uYWw8RmlsZVR5cGU+IGZp
bGVUeXBlRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVy
biBmaWxlTWV0YWRhdGFQb3RlbnRpYWxseUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgsIFNob3VsZEZv
bGxvd1N5bWJvbGljTGlua3M6Olllcyk7CisgICAgcmV0dXJuIGZpbGVUeXBlUG90ZW50aWFsbHlG
b2xsb3dpbmdTeW1MaW5rcyhwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMpOwog
fQogCiBTdHJpbmcgcGF0aEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
aAppbmRleCA1YjlhODY3MjIwNDlhYWY2ZmRiZWMyOTg0NDNmNjlkZmNlMDdkMDQ2Li43MzVhMDc3
YjIwNTlhYjNhMWJjNGE5MTJkODUzNzg2YWFiMDk1ZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC01
OCw4ICs1OCw2IEBAIHR5cGVkZWYgc3RydWN0IF9HRmlsZUlPU3RyZWFtIEdGaWxlSU9TdHJlYW07
CiAKIG5hbWVzcGFjZSBXVEYgewogCi1zdHJ1Y3QgRmlsZU1ldGFkYXRhOwotCiBuYW1lc3BhY2Ug
RmlsZVN5c3RlbUltcGwgewogCiAvLyBQbGF0Zm9ybUZpbGVIYW5kbGUKQEAgLTExMSwxNSArMTA5
LDEyIEBAIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJik7
CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOwogV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7
CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgs
IGNvbnN0IFN0cmluZyYgbmV3UGF0aCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZpbGVTaXplKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlv
bmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmKTsgLy8gRm9sbG93cyBzeW1saW5r
cy4KIFdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoUGxhdGZv
cm1GaWxlSGFuZGxlKTsKIFdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxXYWxsVGltZT4gZmls
ZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCB1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpOyAvLyBTZXRz
IG1vZGlmaWNhdGlvbiB0aW1lIHRvIG5vdy4KIFdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxX
YWxsVGltZT4gZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKTsgLy8gTm90IGFsbCBwbGF0
Zm9ybXMgc3RvcmUgZmlsZSBjcmVhdGlvbiB0aW1lLgotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlv
bmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1XVEZf
RVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dp
bmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
aXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0Rp
cmVjdG9yeUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgaXNIaWRkZW5GaWxlKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGNvbXBvbmVudCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmll
dz4mIGNvbXBvbmVudHMpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBsYXN0Q29tcG9uZW50
T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYgcGF0aCk7CkBAIC0xMzEs
NiArMTI2LDEwIEBAIFdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgY3JlYXRl
U3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1i
b2xpY0xpbmtQYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5
WmlwQXJjaGl2ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk7CiAKK2VudW0gY2xhc3MgRmlsZVR5
cGUgeyBSZWd1bGFyLCBEaXJlY3RvcnksIFN5bWJvbGljTGluayB9OworV1RGX0VYUE9SVF9QUklW
QVRFIE9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBPcHRpb25hbDxGaWxlVHlwZT4gZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhj
b25zdCBTdHJpbmcmKTsKKwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TWV0YWRhdGFVUkwo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5n
JiByZWZlcnJlciA9IHsgfSk7CiAKIGJvb2wgY2FuRXhjbHVkZUZyb21CYWNrdXAoKTsgLy8gUmV0
dXJucyB0cnVlIGlmIGFueSBmaWxlIGNhbiBldmVyIGJlIGV4Y2x1ZGVkIGZyb20gYmFja3VwLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCAxMzNjNDIwZTAyNjE5N2Ji
ZDdlOTVlNzRhNDYzNzBiZWZmNWM0Yzg1Li5iZDkzZjBiM2E4MmU4M2VhYTZmNTk0ZjdmNTYxMTBj
MWNjMjIxZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGli
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMjks
NyArMjksNiBAQAogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8c3lzL2ZpbGUu
aD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRh
dGEuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dMaWJVdGls
aXRpZXMuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9z
aXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCBiYjBiYzFmYzYwYjA3YWFlMDZlMzdkODk1Yjcz
M2MyOGI0NjBkMDg5Li41NGM2NjFhZTE2MjNiZTNkYzlhZDJmY2U4YWUwZmRmZmZjMWE2MzgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTQwLDcgKzQwLDYg
QEAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRl
IDx3dGYvRW51bVRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwCmluZGV4IGQxOTIxNTc1MzRiMWUxY2RmZTYxN2Q5ZDQwZjY0NmYyMzM4YTFh
NGQuLmE1ODQ4MzRjMzRhNzk4ZWFiZDY0OThiZTA5YjMxZjgwN2ZkYmE0MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlIDxzeXMv
c3RhdC5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IDBiYTAxYjJmZWJkNzU2
Y2UyMzg3YjM3MGIyNGVjMmNhNjkzY2I3YzguLmU2ZTJjYmZjZjExNjBmY2Q4YjVlYjU2ODlkMzJl
MGY0NjBlZGUxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2Fw
aS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJGaWxlU3lz
dGVtRmlsZUVudHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRh
dGEuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KQEAgLTQzLDI1ICs0MiwzMyBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRE9NRmlsZVN5c3RlbSk7CiAKIHN0cnVjdCBMaXN0
ZWRDaGlsZCB7CiAgICAgU3RyaW5nIGZpbGVuYW1lOwotICAgIEZpbGVNZXRhZGF0YTo6VHlwZSB0
eXBlOworICAgIEZpbGVTeXN0ZW06OkZpbGVUeXBlIHR5cGU7CiAKICAgICBMaXN0ZWRDaGlsZCBp
c29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpLCB0
eXBlIH07IH0KIH07CiAKK3N0YXRpYyBPcHRpb25hbDxGaWxlU3lzdGVtOjpGaWxlVHlwZT4gZmls
ZVR5cGVJZ25vcmluZ0hpZGRlbkZpbGVzKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCit7CisgICAg
aWYgKEZpbGVTeXN0ZW06OmlzSGlkZGVuRmlsZShmdWxsUGF0aCkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVUeXBlKGZ1bGxQYXRoKTsK
K30KKwogc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0ZWRDaGlsZD4+IGxpc3REaXJlY3Rv
cnlXaXRoTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKIHsKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5KGZ1bGxQYXRo
KSkKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZVR5cGUoZnVsbFBhdGgpICE9IEZpbGVTeXN0ZW06
OkZpbGVUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3Vu
ZEVycm9yLCAiUGF0aCBubyBsb25nZXIgZXhpc3RzIG9yIGlzIG5vIGxvbmdlciBhIGRpcmVjdG9y
eSIgfTsKIAogICAgIGF1dG8gY2hpbGROYW1lcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnko
ZnVsbFBhdGgpOwogICAgIFZlY3RvcjxMaXN0ZWRDaGlsZD4gbGlzdGVkQ2hpbGRyZW47CiAgICAg
bGlzdGVkQ2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjaGlsZE5hbWVzLnNpemUoKSk7
CiAgICAgZm9yIChhdXRvJiBjaGlsZE5hbWUgOiBjaGlsZE5hbWVzKSB7Ci0gICAgICAgIGF1dG8g
bWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGZ1bGxQYXRoLCBjaGlsZE5hbWUpKTsKLSAgICAgICAgaWYgKCFtZXRh
ZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlzSGlkZGVuKQorICAgICAgICBhdXRvIGNoaWxkUGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmdWxsUGF0aCwgY2hpbGRO
YW1lKTsKKyAgICAgICAgYXV0byBmaWxlVHlwZSA9IGZpbGVUeXBlSWdub3JpbmdIaWRkZW5GaWxl
cyhjaGlsZFBhdGgpOworICAgICAgICBpZiAoIWZpbGVUeXBlKQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hlY2tlZEFwcGVuZChMaXN0ZWRDaGlsZCB7
IGNoaWxkTmFtZSwgbWV0YWRhdGEudmFsdWUoKS50eXBlIH0pOworICAgICAgICBsaXN0ZWRDaGls
ZHJlbi51bmNoZWNrZWRBcHBlbmQoTGlzdGVkQ2hpbGQgeyBjaGlsZE5hbWUsICpmaWxlVHlwZSB9
KTsKICAgICB9CiAgICAgcmV0dXJuIGxpc3RlZENoaWxkcmVuOwogfQpAQCAtNzcsMTAgKzg0LDEw
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+PiB0b0Zp
bGVTeXN0ZW1FbnRyaWVzKFNjcmlwdEV4ZWN1CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGxpc3Rl
ZENoaWxkcmVuLnJldHVyblZhbHVlKCkpIHsKICAgICAgICAgU3RyaW5nIHZpcnR1YWxQYXRoID0g
cGFyZW50VmlydHVhbFBhdGggKyAiLyIgKyBjaGlsZC5maWxlbmFtZTsKICAgICAgICAgc3dpdGNo
IChjaGlsZC50eXBlKSB7Ci0gICAgICAgIGNhc2UgRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOgor
ICAgICAgICBjYXNlIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyOgogICAgICAgICAgICAg
ZW50cmllcy51bmNoZWNrZWRBcHBlbmQoRmlsZVN5c3RlbUZpbGVFbnRyeTo6Y3JlYXRlKGNvbnRl
eHQsIGZpbGVTeXN0ZW0sIHZpcnR1YWxQYXRoKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeToKKyAgICAgICAgY2FzZSBGaWxl
U3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5OgogICAgICAgICAgICAgZW50cmllcy51bmNoZWNr
ZWRBcHBlbmQoRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoY29udGV4dCwgZmlsZVN5
c3RlbSwgdmlydHVhbFBhdGgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0
OgpAQCAtMTY2LDI4ICsxNzMsMjAgQEAgUmVmPEZpbGVTeXN0ZW1FbnRyeT4gRE9NRmlsZVN5c3Rl
bTo6ZmlsZUFzRW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICByZXR1
cm4gRmlsZVN5c3RlbUZpbGVFbnRyeTo6Y3JlYXRlKGNvbnRleHQsICp0aGlzLCAiLyIgKyBtX2Zp
bGUtPm5hbWUoKSk7CiB9CiAKLXN0YXRpYyBFeGNlcHRpb25PcjxTdHJpbmc+IHZhbGlkYXRlUGF0
aElzRXhwZWN0ZWRUeXBlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFN0cmluZyYmIHZpcnR1YWxQ
YXRoLCBGaWxlTWV0YWRhdGE6OlR5cGUgZXhwZWN0ZWRUeXBlKQorc3RhdGljIEV4Y2VwdGlvbk9y
PFN0cmluZz4gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoY29uc3QgU3RyaW5nJiBmdWxsUGF0
aCwgU3RyaW5nJiYgdmlydHVhbFBhdGgsIEZpbGVTeXN0ZW06OkZpbGVUeXBlIGV4cGVjdGVkVHlw
ZSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIGF1dG8gbWV0YWRhdGEg
PSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoZnVsbFBhdGgpOwotICAgIGlmICghbWV0YWRhdGEg
fHwgbWV0YWRhdGEudmFsdWUoKS5pc0hpZGRlbikKKyAgICBhdXRvIGZpbGVUeXBlID0gZmlsZVR5
cGVJZ25vcmluZ0hpZGRlbkZpbGVzKGZ1bGxQYXRoKTsKKyAgICBpZiAoIWZpbGVUeXBlKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIlBhdGggZG9lcyBub3QgZXhp
c3QiX3MgfTsKIAotICAgIGlmIChtZXRhZGF0YS52YWx1ZSgpLnR5cGUgIT0gZXhwZWN0ZWRUeXBl
KQorICAgIGlmICgqZmlsZVR5cGUgIT0gZXhwZWN0ZWRUeXBlKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgVHlwZU1pc21hdGNoRXJyb3IsICJFbnRyeSBhdCBwYXRoIGRvZXMgbm90IGhhdmUg
ZXhwZWN0ZWQgdHlwZSIgfTsKIAogICAgIHJldHVybiBXVEZNb3ZlKHZpcnR1YWxQYXRoKTsKIH0K
IAotc3RhdGljIE9wdGlvbmFsPEZpbGVNZXRhZGF0YTo6VHlwZT4gZmlsZVR5cGUoY29uc3QgU3Ry
aW5nJiBmdWxsUGF0aCkKLXsKLSAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1l
dGFkYXRhKGZ1bGxQYXRoKTsKLSAgICBpZiAoIW1ldGFkYXRhIHx8IG1ldGFkYXRhLnZhbHVlKCku
aXNIaWRkZW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1ldGFk
YXRhLnZhbHVlKCkudHlwZTsKLX0KLQogLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVz
LWFwaS8jcmVzb2x2ZS1hLXJlbGF0aXZlLXBhdGgKIHN0YXRpYyBTdHJpbmcgcmVzb2x2ZVJlbGF0
aXZlVmlydHVhbFBhdGgoU3RyaW5nVmlldyBiYXNlVmlydHVhbFBhdGgsIFN0cmluZ1ZpZXcgcmVs
YXRpdmVWaXJ0dWFsUGF0aCkKIHsKQEAgLTI3MSw3ICsyNzAsNyBAQCB2b2lkIERPTUZpbGVTeXN0
ZW06OmdldFBhcmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVt
RW50cnkmCiAgICAgQVNTRVJUKHZpcnR1YWxQYXRoWzBdID09ICcvJyk7CiAgICAgYXV0byBmdWxs
UGF0aCA9IGV2YWx1YXRlUGF0aCh2aXJ0dWFsUGF0aCk7CiAgICAgbV93b3JrUXVldWUtPmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbnRleHQgPSBtYWtlUmVmKGNv
bnRleHQpLCBmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHZpcnR1YWxQYXRo
ID0gY3Jvc3NUaHJlYWRDb3B5KHZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RG
TW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIHZhbGlk
YXRlZFZpcnR1YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVsbFBhdGgsIFdU
Rk1vdmUodmlydHVhbFBhdGgpLCBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeSk7CisgICAg
ICAgIGF1dG8gdmFsaWRhdGVkVmlydHVhbFBhdGggPSB2YWxpZGF0ZVBhdGhJc0V4cGVjdGVkVHlw
ZShmdWxsUGF0aCwgV1RGTW92ZSh2aXJ0dWFsUGF0aCksIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpE
aXJlY3RvcnkpOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCksIHZhbGlkYXRl
ZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHZhbGlkYXRlZFZpcnR1YWxQYXRoKSwgY29t
cGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKHZhbGlkYXRlZFZpcnR1YWxQYXRoLmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5y
ZWxlYXNlRXhjZXB0aW9uKCkpOwpAQCAtMzEyLDE3ICszMTEsMTcgQEAgdm9pZCBET01GaWxlU3lz
dGVtOjpnZXRFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVt
RGlyZWN0b3IKICAgICB9CiAKICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGZ1bGxQYXRo
ID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgcmVzb2x2ZWRWaXJ0dWFsUGF0aCA9IGNyb3Nz
VGhyZWFkQ29weShyZXNvbHZlZFZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RG
TW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIGVudHJ5
VHlwZSA9IGZpbGVUeXBlKGZ1bGxQYXRoKTsKKyAgICAgICAgYXV0byBlbnRyeVR5cGUgPSBmaWxl
VHlwZUlnbm9yaW5nSGlkZGVuRmlsZXMoZnVsbFBhdGgpOwogICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dCA9IFdU
Rk1vdmUoY29udGV4dCksIHJlc29sdmVkVmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkocmVz
b2x2ZWRWaXJ0dWFsUGF0aCksIGVudHJ5VHlwZSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92
ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFlbnRy
eVR5cGUpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soRXhjZXB0aW9uIHsg
Tm90Rm91bmRFcnJvciwgIkNhbm5vdCBmaW5kIGVudHJ5IGF0IGdpdmVuIHBhdGgiX3MgfSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dpdGNo
IChlbnRyeVR5cGUudmFsdWUoKSkgewotICAgICAgICAgICAgY2FzZSBGaWxlTWV0YWRhdGE6OlR5
cGU6OkRpcmVjdG9yeToKKyAgICAgICAgICAgIGNhc2UgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRp
cmVjdG9yeToKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soUmVmPEZpbGVTeXN0
ZW1FbnRyeT4geyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShjb250ZXh0LCBwcm90
ZWN0ZWRUaGlzLmdldCgpLCByZXNvbHZlZFZpcnR1YWxQYXRoKSB9KTsKICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlOgorICAg
ICAgICAgICAgY2FzZSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVndWxhcjoKICAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uQ2FsbGJhY2soUmVmPEZpbGVTeXN0ZW1FbnRyeT4geyBGaWxlU3lzdGVt
RmlsZUVudHJ5OjpjcmVhdGUoY29udGV4dCwgcHJvdGVjdGVkVGhpcy5nZXQoKSwgcmVzb2x2ZWRW
aXJ0dWFsUGF0aCkgfSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZh
dWx0OgpAQCAtMzM4LDcgKzMzNyw3IEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0RmlsZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRmlsZUVudHJ5CiAgICAgYXV0
byB2aXJ0dWFsUGF0aCA9IGZpbGVFbnRyeS52aXJ0dWFsUGF0aCgpOwogICAgIGF1dG8gZnVsbFBh
dGggPSBldmFsdWF0ZVBhdGgodmlydHVhbFBhdGgpOwogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRj
aChbZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2aXJ0dWFsUGF0aCA9IGNy
b3NzVGhyZWFkQ29weSh2aXJ0dWFsUGF0aCksIGNvbnRleHQgPSBtYWtlUmVmKGNvbnRleHQpLCBj
b21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGF1dG8gdmFsaWRhdGVkVmlydHVhbFBhdGggPSB2YWxpZGF0ZVBhdGhJc0V4
cGVjdGVkVHlwZShmdWxsUGF0aCwgV1RGTW92ZSh2aXJ0dWFsUGF0aCksIEZpbGVNZXRhZGF0YTo6
VHlwZTo6RmlsZSk7CisgICAgICAgIGF1dG8gdmFsaWRhdGVkVmlydHVhbFBhdGggPSB2YWxpZGF0
ZVBhdGhJc0V4cGVjdGVkVHlwZShmdWxsUGF0aCwgV1RGTW92ZSh2aXJ0dWFsUGF0aCksIEZpbGVT
eXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZnVs
bFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9
IGNyb3NzVGhyZWFkQ29weSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbnRleHQgPSBXVEZNb3Zl
KGNvbnRleHQpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFj
ayldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAodmFsaWRhdGVkVmlydHVhbFBhdGguaGFz
RXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKHZhbGlkYXRl
ZFZpcnR1YWxQYXRoLnJlbGVhc2VFeGNlcHRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDJjNjczZDY2
MTczZjljNzY3YzNkZDE5NGRiMTNjYzBiOGNjMTg4NGYuLmRhMjk3OTdiOTU5MDgyNzJjZmU1NTMw
NGVhOGNiODdhOGIxMDExMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC03MTIsNyArNzEyLDcgQEAgc3RhdGlj
IFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckZpbGVQYXRoKEZyYW1lJiBmcmFtZSwgY29u
c3QgU3RyaW5nJiBwYXRoLAogICAgICAgICByZXR1cm4gYXR0YWNobWVudDsKICAgICB9CiAKLSAg
ICBib29sIGlzRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xsb3dpbmdTeW1s
aW5rcyhwYXRoKTsKKyAgICBib29sIGlzRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGVG
b2xsb3dpbmdTeW1saW5rcyhwYXRoKSA9PSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5
OwogICAgIFN0cmluZyBjb250ZW50VHlwZSA9IHR5cGVGb3JBdHRhY2htZW50RWxlbWVudChleHBs
aWNpdENvbnRlbnRUeXBlKTsKICAgICBpZiAoY29udGVudFR5cGUuaXNFbXB0eSgpKSB7CiBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5k
ZXggZGZjOTJkMWZmZGI1N2YyMmRkZmRiZjY3Y2FjODhkN2QyMDg0MDMxOS4uOWVkMmRlNjUwNTBk
MDY4ZDBlY2I5OTQ2OGJmZGFkNDM0MDMwNTA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBA
IC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUg
IlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KLSNp
bmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtMTQ4LDcgKzE0Nyw3IEBAIFN0cmluZyBGaWxlOjpjb250ZW50VHlwZUZv
ckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogYm9vbCBGaWxlOjppc0RpcmVjdG9yeSgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2lzRGlyZWN0b3J5KQotICAgICAgICBtX2lzRGlyZWN0b3J5ID0gRmls
ZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xsb3dpbmdTeW1saW5rcyhtX3BhdGgpOworICAgICAgICBt
X2lzRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhtX3Bh
dGgpID09IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3Rvcnk7CiAgICAgcmV0dXJuICptX2lz
RGlyZWN0b3J5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9y
eUZpbGVMaXN0Q3JlYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVM
aXN0Q3JlYXRvci5jcHAKaW5kZXggMTg3ZWRlMzM5MzhmM2U0YWIzNzZjOGM3NDNkYTRjY2EwNzUx
MGFiOS4uOGZlODk0MjRlNDhjMmJmMTI2MDZhMzcwNWZkOWVlNDE4OGY3NzJiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcApAQCAtMzAs
NyArMzAsNiBAQAogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRmlsZUxpc3Qu
aCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KLSNpbmNsdWRlIDx3dGYvRmls
ZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNTYsMTcgKzU1LDE3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZERpcmVjdG9yeUZp
bGVzKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlCiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgZm9yIChhdXRvJiBjaGlsZE5hbWUgOiBGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSkpIHsKICAgICAgICAgYXV0byBjaGlsZFBh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCBjaGls
ZE5hbWUpOwotICAgICAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRh
KGNoaWxkUGF0aCk7Ci0gICAgICAgIGlmICghbWV0YWRhdGEpCisgICAgICAgIGlmIChGaWxlU3lz
dGVtOjppc0hpZGRlbkZpbGUoY2hpbGRQYXRoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIGlmIChtZXRhZGF0YS52YWx1ZSgpLmlzSGlkZGVuKQorICAgICAgICBhdXRvIGZpbGVU
eXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUoY2hpbGRQYXRoKTsKKyAgICAgICAgaWYgKCFmaWxl
VHlwZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFN0cmluZyBjaGlsZFJlbGF0
aXZlUGF0aCA9IHJlbGF0aXZlUGF0aCArICIvIiArIGNoaWxkTmFtZTsKLSAgICAgICAgaWYgKG1l
dGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeSkKKyAg
ICAgICAgaWYgKCpmaWxlVHlwZSA9PSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KQog
ICAgICAgICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMoY2hpbGRQYXRoLCBjaGlsZFJlbGF0aXZl
UGF0aCwgZmlsZXMpOwotICAgICAgICBlbHNlIGlmIChtZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0g
RmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKQorICAgICAgICBlbHNlIGlmICgqZmlsZVR5cGUgPT0g
RmlsZVN5c3RlbTo6RmlsZVR5cGU6OlJlZ3VsYXIpCiAgICAgICAgICAgICBmaWxlcy5hcHBlbmQo
RmlsZUluZm9ybWF0aW9uIHsgY2hpbGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0aCwgeyB9IH0pOwog
ICAgIH0KIH0KQEAgLTc2LDcgKzc1LDcgQEAgc3RhdGljIFZlY3RvcjxGaWxlSW5mb3JtYXRpb24+
IGdhdGhlckZpbGVJbmZvcm1hdGlvbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWwKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBWZWN0b3I8RmlsZUluZm9ybWF0aW9uPiBmaWxl
czsKICAgICBmb3IgKGF1dG8mIGluZm8gOiBwYXRocykgewotICAgICAgICBpZiAoRmlsZVN5c3Rl
bTo6aXNEaXJlY3RvcnkoaW5mby5wYXRoKSkKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVU
eXBlKGluZm8ucGF0aCkgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkKICAgICAg
ICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8ucGF0aCwgRmlsZVN5c3RlbTo6cGF0aEZp
bGVOYW1lKGluZm8ucGF0aCksIGZpbGVzKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZmls
ZXMuYXBwZW5kKEZpbGVJbmZvcm1hdGlvbiB7IGluZm8ucGF0aCwgeyB9LCBpbmZvLmRpc3BsYXlO
YW1lIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCBhNWI3OTZlMGZiNDQ4NTJhNzI0
OTFjZDY4YjYwY2Y3OWRhYTg3YTg5Li5iZWM0N2ExZTFiMzgyYzdkZDEwNjQxNDU5ZTViNTZiZjRi
OTE1OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzk4LDEwICszOTgsMTEgQEAg
dm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U3RvcmFnZURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHN0b3IKIAogICAgIGF1dG8gc3RvcmFnZVBhdGggPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0
b3AucGxpc3QiKTsKIAotICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzdG9yYWdlRGly
ZWN0b3J5KSkgeworICAgIGF1dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxv
d2luZ1N5bWxpbmtzKHN0b3JhZ2VEaXJlY3RvcnkpOworICAgIGlmICghZmlsZVR5cGUpIHsKICAg
ICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9y
eSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNlIGlmICghRmlsZVN5c3RlbTo6aXNE
aXJlY3RvcnlGb2xsb3dpbmdTeW1saW5rcyhzdG9yYWdlRGlyZWN0b3J5KSkgeworICAgIH0gZWxz
ZSBpZiAoKmZpbGVUeXBlICE9IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpIHsKICAg
ICAgICAgYXV0byB0ZW1wRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGly
ZWN0b3J5KEAiTWVkaWFLZXlzIik7CiAgICAgICAgIGlmICghdGVtcERpcmVjdG9yeSkKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGY4YTlmMWJkYzEyYjJj
MzdjOGE1Yjk5NTRkY2ZjMDk1NThhMTNhODguLmFkMmE1NTg5ZDBhMWM2YTBlNjFiZGQ4NzNkMDU4
NGU1OGY1OWVkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzM3LDE1ICszMzcsMTQg
QEAgc3RhdGljIEFWQXNzZXRDYWNoZSAqZW5zdXJlQXNzZXRDYWNoZUV4aXN0c0ZvclBhdGgoY29u
c3QgU3RyaW5nJiBwYXRoKQogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIGF1dG8gZmlsZUV4aXN0c0F0UGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMocGF0aCk7Ci0KLSAgICBpZiAoZmlsZUV4aXN0c0F0UGF0aCAmJiAhRmlsZVN5c3RlbTo6aXNE
aXJlY3RvcnlGb2xsb3dpbmdTeW1saW5rcyhwYXRoKSkgeworICAgIGF1dG8gZmlsZVR5cGUgPSBG
aWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBhdGgpOworICAgIGlmIChmaWxl
VHlwZSAmJiAqZmlsZVR5cGUgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkgewog
ICAgICAgICAvLyBOb24tZGlyZWN0b3J5IGZpbGUgYWxyZWFkeSBleGlzdHMgYXQgdGhlIHBhdGgg
bG9jYXRpb247IGJhaWwuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIH0KIAotICAgIGlmICghZmlsZUV4aXN0c0F0UGF0aCAmJiAhRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgpKSB7CisgICAgaWYgKCFmaWxlVHlwZSAmJiAh
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgpKSB7CiAgICAgICAgIC8vIENvdWxk
IG5vdCBjcmVhdGUgYSBkaXJlY3RvcnkgYXQgdGhlIHNwZWNpZmllZCBsb2NhdGlvbjsgYmFpbC4K
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVy
ZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJl
ZmVyZW5jZS5jcHAKaW5kZXggZGZiNGI1ODRhOGE4ZTIzNDY3Yjg0M2E5NWEzM2Y3ZDUxNzJjOTg0
Ny4uMTJmODI3NGVkYmZlYTA3MTFkNTJiY2E5MTE1ZTk5MmVkZTI2ZTA3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZS5oIgogCiAjaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgPHd0Zi9GaWxlTWV0YWRhdGEuaD4K
ICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
OCwyNSArODcsMjMgQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnN0YXJ0VHJhY2tpbmdN
b2RpZmljYXRpb25zKCkKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IFNvbWUgcGxhdGZvcm1zIHBy
b3ZpZGUgYmV0dGVyIHdheXMgdG8gbGlzdGVuIGZvciBmaWxlIHN5c3RlbSBvYmplY3QgY2hhbmdl
cywgY29uc2lkZXIgdXNpbmcgdGhlc2UuCi0gICAgYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06
OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1fcGF0aCk7Ci0gICAgaWYgKCFtZXRhZGF0
YSkKKyAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBGaWxlU3lzdGVtOjpmaWxlTW9kaWZpY2F0
aW9uVGltZShtX3BhdGgpOworICAgIGlmICghbW9kaWZpY2F0aW9uVGltZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUgPSBtZXRhZGF0YS52YWx1ZSgp
Lm1vZGlmaWNhdGlvblRpbWU7CisgICAgbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUgPSAqbW9k
aWZpY2F0aW9uVGltZTsKIAogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogICAgIGlmICht
X3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgog
Ci0gICAgLy8gVGhpcyBpcyBhIHJlZ2lzdGVyZWQgYmxvYiB3aXRoIGEgcmVwbGFjZW1lbnQgZmls
ZS4gR2V0IHRoZSBNZXRhZGF0YSBvZiB0aGUgcmVwbGFjZW1lbnQgZmlsZS4KLSAgICBpZiAoIW1f
cmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1ldGFkYXRhID0gRmlsZVN5c3Rl
bTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MobV9yZXBsYWNlbWVudFBhdGgpOwotICAg
ICAgICBpZiAoIW1ldGFkYXRhKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyBU
aGlzIGlzIGEgcmVnaXN0ZXJlZCBibG9iIHdpdGggYSByZXBsYWNlbWVudCBmaWxlLiBHZXQgdGhl
IHNpemUgb2YgdGhlIHJlcGxhY2VtZW50IGZpbGUuCisgICAgYXV0byBmaWxlU2l6ZSA9IEZpbGVT
eXN0ZW06OmZpbGVTaXplKG1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpID8gbV9wYXRoIDogbV9y
ZXBsYWNlbWVudFBhdGgpOworICAgIGlmICghZmlsZVNpemUpCisgICAgICAgIHJldHVybjsKIAot
ICAgIG1fc2l6ZSA9IG1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoOworICAgIG1fc2l6ZSA9ICpmaWxl
U2l6ZTsKIH0KIAogdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnByZXBhcmVGb3JGaWxlQWNj
ZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwCmluZGV4IDY3ZWQyYTRiNWM5NjA5YWY4YmMwNjdmZGQyY2RhMTljOWE0ODdk
ZDUuLmViMmViZTYzNDhmZThjYjUwZmZhOTlhMGQ5NmFkZDZjYWYzNzI4NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApA
QCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
LSNpbmNsdWRlIDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApp
bmRleCBhZDhjMzViNzE4NTY2ZTlmMTJiYWU5ODgzY2Q4MjlhMWI2NTQ4ZGU2Li42MzI0ZGNhZmFj
YWE5Yzc0ZDQzM2RhMWFhOTVhM2ViMDIzNmY1N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMzU0LDcgKzM1NCw3IEBAIEZvcm1EYXRhRm9y
VXBsb2FkIEZvcm1EYXRhOjpwcmVwYXJlRm9yVXBsb2FkKCkKICAgICAgICAgYXV0byogZmlsZURh
dGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVu
dC5kYXRhKTsKICAgICAgICAgaWYgKCFmaWxlRGF0YSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3MoZmls
ZURhdGEtPmZpbGVuYW1lKSkKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93
aW5nU3ltbGlua3MoZmlsZURhdGEtPmZpbGVuYW1lKSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6
RGlyZWN0b3J5KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChmaWxlRGF0YS0+
ZmlsZVN0YXJ0IHx8IGZpbGVEYXRhLT5maWxlTGVuZ3RoICE9IEJsb2JEYXRhSXRlbTo6dG9FbmRP
ZkZpbGUpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5t
bQppbmRleCA1ZWM3NzdhODY5OTA2NzExOGNiY2Q1NTI4ZThmNGZmZTkyYTQ0ODZiLi4zYmY2NDM0
OWE1NTRkMWNjMjJmMjk3OTViM2I4MWM4M2JkMTM4OTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlTWFjLm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVO
VCkKIAotI2ltcG9ydCA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNDcsOCArNDYsOCBAQCB2
b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoKQogCiAg
ICAgbV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkID0gZmFsc2U7CiAgICAgaWYgKCFtX3Jl
cGxhY2VtZW50UGF0aC5pc051bGwoKSkgewotICAgICAgICBpZiAoYXV0byBtZXRhZGF0YSA9IEZp
bGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1fcmVwbGFjZW1lbnRQYXRo
KSkKLSAgICAgICAgICAgIG1fc2l6ZSA9IG1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoOworICAgICAg
ICBpZiAoYXV0byBmaWxlU2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKG1fcmVwbGFjZW1lbnRQ
YXRoKSkKKyAgICAgICAgICAgIG1fc2l6ZSA9ICpmaWxlU2l6ZTsKICAgICB9CiAKICAgICByZXZv
a2VGaWxlQWNjZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggYjRmODkwN2JiYTBiOWRiOWFi
OTBjYjJmN2E0MWZiYTdmYjE1NzBlNS4uOWExYTIwODY0MGZlZDgxMTNkYTM3YjY0NGQwYjc0Yjlm
YmZmYjMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHN0YXRpYyB1
aW50NjRfdCBnZXREaXJlY3RvcnlTaXplKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKICAg
ICBwYXRocy5hcHBlbmQoZGlyZWN0b3J5UGF0aCk7CiAgICAgd2hpbGUgKCFwYXRocy5pc0VtcHR5
KCkpIHsKICAgICAgICAgYXV0byBwYXRoID0gcGF0aHMudGFrZUZpcnN0KCk7Ci0gICAgICAgIGlm
IChGaWxlU3lzdGVtOjppc0RpcmVjdG9yeShwYXRoKSkgeworICAgICAgICBpZiAoRmlsZVN5c3Rl
bTo6ZmlsZVR5cGUocGF0aCkgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkgewog
ICAgICAgICAgICAgYXV0byBmaWxlTmFtZXMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBh
dGgpOwogICAgICAgICAgICAgZm9yIChhdXRvJiBmaWxlTmFtZSA6IGZpbGVOYW1lcykgewogICAg
ICAgICAgICAgICAgIC8vIEZpbGVzIGluIC9CbG9icyBkaXJlY3RvcnkgYXJlIGhhcmQgbGluay4K
QEAgLTYxMyw3ICs2MTMsNyBAQCB2b2lkIEVuZ2luZTo6Z2V0RGlyZWN0b3JpZXMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPiYmIGNvbQogICAgICAgICBWZWN0
b3I8U3RyaW5nPiBmb2xkZXJQYXRoczsKICAgICAgICAgZm9yIChhdXRvJiBmaWxlTmFtZSA6IEZp
bGVTeXN0ZW06Omxpc3REaXJlY3RvcnkocGF0aCkpIHsKICAgICAgICAgICAgIGF1dG8gZmlsZVBh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5hbWUp
OwotICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5KGZpbGVQYXRoKSkKKyAg
ICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlVHlwZShmaWxlUGF0aCkgPT0gRmlsZVN5c3Rl
bTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICBmb2xkZXJQYXRocy5hcHBl
bmQoZmlsZVBhdGguaXNvbGF0ZWRDb3B5KCkpOwogICAgICAgICB9CiAKQEAgLTcwMSw3ICs3MDEs
NyBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXNGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZQogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihn
bG9iYWxTaXplRmlsZUxvY2spOwogICAgICAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDogRmlsZVN5
c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoKSkgewogICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBmaWxlTmFtZSk7Ci0g
ICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnkoZmlsZVBhdGgpKQorICAgICAg
ICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVUeXBlKGZpbGVQYXRoKSA9PSBGaWxlU3lzdGVtOjpG
aWxlVHlwZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5v
bkVtcHR5RGlyZWN0b3J5KGZpbGVQYXRoKTsKICAgICAgICAgfQogICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmls
ZVN5c3RlbS5jcHAKaW5kZXggNjBlNDBlNTMyNDk4MmQ1MmFkOGI0MmY5NzliZDYzZTI5YzgwOTEx
MC4uM2JkMGM3NDg3YjYwMDM0ZTJmNDJiYzAwMjk3ZmI4MjRiMDM2ZTUyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUZpbGVTeXN0ZW0uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgdHJhdmVyc2VEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBE
CiAgICAgYXV0byBlbnRyaWVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoKTsKICAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykgewogICAgICAgICBhdXRvIGVudHJ5UGF0aCA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBlbnRyeSk7Ci0gICAg
ICAgIGF1dG8gdHlwZSA9IEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5KGVudHJ5UGF0aCkgPyBEaXJl
Y3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeSA6IERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZTsKKyAg
ICAgICAgYXV0byB0eXBlID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUoZW50cnlQYXRoKSA9PSBGaWxl
U3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5ID8gRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3Rv
cnkgOiBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGU7CiAgICAgICAgIGZ1bmN0aW9uKGVudHJ5LCB0
eXBlKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4
aWxpYXJ5UHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQ
cm9jZXNzTWFjLm1tCmluZGV4IGQ1NDU2Y2RiMTQzZWRjZDhhM2I3MGJlOWY0MTk0YzRmNDhiNjgy
MDYuLjEzMWExN2IyMDI1ZTU4Y2IxM2NlMDI2NGI4OWJjYzEzMGVhMzk3Y2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCkBAIC0zMzEsOSAr
MzMxLDkgQEAgc3RhdGljIFN0cmluZyBzYW5kYm94RmlsZVBhdGgoY29uc3QgU3RyaW5nJiBkaXJl
Y3RvcnlQYXRoLCBjb25zdCBDU3RyaW5nJiBoZWFkZXIKIAogc3RhdGljIGJvb2wgZW5zdXJlU2Fu
ZGJveENhY2hlRGlyZWN0b3J5KGNvbnN0IFNhbmRib3hJbmZvJiBpbmZvKQogewotICAgIGlmICgh
RmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlGb2xsb3dpbmdTeW1saW5rcyhpbmZvLnBhcmVudERpcmVj
dG9yeVBhdGgpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlu
a3MoaW5mby5wYXJlbnREaXJlY3RvcnlQYXRoKSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGly
ZWN0b3J5KSB7CiAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhpbmZvLnBh
cmVudERpcmVjdG9yeVBhdGgpOwotICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5
Rm9sbG93aW5nU3ltbGlua3MoaW5mby5wYXJlbnREaXJlY3RvcnlQYXRoKSkgeworICAgICAgICBp
ZiAoRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhpbmZvLnBhcmVudERpcmVj
dG9yeVBhdGgpICE9IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpIHsKICAgICAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBjcmVhdGUgc2FuZGJveCBkaXJlY3Rvcnlc
biIsIGdldHByb2duYW1lKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CkBAIC0zNjMsOCArMzYzLDcgQEAgc3RhdGljIGJvb2wgZW5zdXJlU2FuZGJveENhY2hlRGlyZWN0
b3J5KGNvbnN0IFNhbmRib3hJbmZvJiBpbmZvKQogICAgICAgICBpZiAoIXJvb3RsZXNzX2NoZWNr
X2RhdGF2YXVsdF9mbGFnKGRpcmVjdG9yeVBhdGguZGF0YSgpLCBzdG9yYWdlQ2xhc3MpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgYm9vbCBpc0RpcmVjdG9yeSA9IEZpbGVT
eXN0ZW06OmlzRGlyZWN0b3J5KGluZm8uZGlyZWN0b3J5UGF0aCk7Ci0gICAgICAgIGlmIChpc0Rp
cmVjdG9yeSkgeworICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZVR5cGUoaW5mby5kaXJlY3Rv
cnlQYXRoKSA9PSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KSB7CiAgICAgICAgICAg
ICBpZiAoIUZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGluZm8uZGlyZWN0b3J5
UGF0aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9IGVsc2UgewpA
QCAtMzc5LDE0ICszNzgsMTQgQEAgc3RhdGljIGJvb2wgZW5zdXJlU2FuZGJveENhY2hlRGlyZWN0
b3J5KGNvbnN0IFNhbmRib3hJbmZvJiBpbmZvKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogI2Vsc2UKLSAgICBib29sIGhhc1NhbmRib3hEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjppc0Rp
cmVjdG9yeUZvbGxvd2luZ1N5bWxpbmtzKGluZm8uZGlyZWN0b3J5UGF0aCk7CisgICAgYm9vbCBo
YXNTYW5kYm94RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5r
cyhpbmZvLmRpcmVjdG9yeVBhdGgpID09IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3Rvcnk7
CiAgICAgaWYgKCFoYXNTYW5kYm94RGlyZWN0b3J5KSB7CiAgICAgICAgIGlmIChGaWxlU3lzdGVt
OjptYWtlQWxsRGlyZWN0b3JpZXMoaW5mby5kaXJlY3RvcnlQYXRoKSkgewotICAgICAgICAgICAg
QVNTRVJUKEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3MoaW5mby5kaXJl
Y3RvcnlQYXRoKSk7CisgICAgICAgICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xs
b3dpbmdTeW1saW5rcyhpbmZvLmRpcmVjdG9yeVBhdGgpID09IEZpbGVTeXN0ZW06OkZpbGVUeXBl
OjpEaXJlY3RvcnkpOwogICAgICAgICAgICAgaGFzU2FuZGJveERpcmVjdG9yeSA9IHRydWU7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBtYXkgaGF2ZSByYWNlZCB3aXRoIHNv
bWVvbmUgZWxzZSBtYWtpbmcgaXQuIFRoYXQncyBvay4KLSAgICAgICAgICAgIGhhc1NhbmRib3hE
aXJlY3RvcnkgPSBGaWxlU3lzdGVtOjppc0RpcmVjdG9yeUZvbGxvd2luZ1N5bWxpbmtzKGluZm8u
ZGlyZWN0b3J5UGF0aCk7CisgICAgICAgICAgICBoYXNTYW5kYm94RGlyZWN0b3J5ID0gRmlsZVN5
c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhpbmZvLmRpcmVjdG9yeVBhdGgpID09IEZp
bGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3Rvcnk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
CmluZGV4IDgyZDI0OTg2OWUwNWU0MDZmNjAwMjQxYjkyMGYwNmI5MDg1M2YzMGQuLjU3YjQxYTk3
OWI5MmY4NGVmNDI0YWI2ODIwY2Y2YWMzN2VlNGU0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtMjE3LDcgKzIx
Nyw3IEBAIHN0YXRpYyBib29sIGlzSW50ZXJuYWxJbnN0YWxsKCkKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHN0YXRpYyBib29sIGlzSW50ZXJuYWwgPSBNR0dldEJvb2xBbnN3ZXIoa01H
UUFwcGxlSW50ZXJuYWxJbnN0YWxsQ2FwYWJpbGl0eSk7CiAjZWxzZQotICAgIHN0YXRpYyBib29s
IGlzSW50ZXJuYWwgPSBGaWxlU3lzdGVtOjppc0RpcmVjdG9yeSgiL0FwcGxlSW50ZXJuYWwiKTsK
KyAgICBzdGF0aWMgYm9vbCBpc0ludGVybmFsID0gRmlsZVN5c3RlbTo6ZmlsZVR5cGUoIi9BcHBs
ZUludGVybmFsIikgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeTsKICNlbmRpZgog
ICAgIHJldHVybiBpc0ludGVybmFsOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFjY2QyZDY4MDIzNTQ3ZjhiNzAwM2FiNjcwYzk1MGFmM2Q4
NmQ3NzQuLjYxNjA1YmYwNDI3MGNlZDliOGYzMGRhODFlZGFjOTdhN2I4ZTMzMzMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IERyb3AgRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKCkgLyBmaWxlTWV0YWRhdGFGb2xsb3dpbmdT
eW1saW5rcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBV
cGRhdGUgdGhlIEZpbGVTeXN0ZW0gQVBJIHRlc3RzIGFjY29yZGluZ2x5LgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgRHJvcCAiZ2V0IiBwcmVmaXggZnJvbSBXVEY6OkZpbGVTeXN0ZW0n
cyBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIC8gZ2V0RmlsZUNyZWF0aW9uVGltZSgpCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IGVlMjlhNzQw
YjYzNzgxY2E1OTY4YzNmM2MzYzAwMmZjYjRjOGIyMWYuLmVkZDE4Y2VhMzc2YTZjMWI3OWRlNDVl
ZjZmNGJjNzNlYjE2OGQwOGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Zp
bGVTeXN0ZW0uY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJUZXN0LmgiCiAjaW5j
bHVkZSAiVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CkBAIC0xNTMsOTEgKzE1Miw3NyBAQCBURVNUX0YoRmls
ZVN5c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUpCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5
c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCksIHF1b3Rl
Q29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKIH0KIAotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRG
aWxlTWV0YWRhdGFGaWxlU3ltbGluaykKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgZmlsZVR5cGUp
CiB7Ci0gICAgYXV0byBzeW1saW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEo
dGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKLSAgICBBU1NFUlRfVFJVRShzeW1saW5rTWV0YWRhdGEu
aGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoc3ltbGlua01ldGFkYXRhLT50eXBlID09IEZp
bGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKLSAgICBFWFBFQ1RfRkFMU0Uoc3ltbGlu
a01ldGFkYXRhLT5pc0hpZGRlbik7Ci0gICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90
PihzeW1saW5rTWV0YWRhdGEtPmxlbmd0aCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkp
OwotCi0gICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZv
bGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUo
dGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRh
dGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
dGFyZ2V0TWV0YWRhdGEtPmlzSGlkZGVuKTsKLSAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0
ZW1UZXN0RGF0YSksIHN0YXRpY19jYXN0PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEtPmxlbmd0aCkp
OwotCi0gICAgYXV0byBhY3R1YWxUYXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRh
ZGF0YSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUoYWN0dWFsVGFyZ2V0TWV0YWRh
dGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPnR5
cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKLSAgICBFWFBFQ1RfRVEodGFyZ2V0TWV0
YWRhdGEtPm1vZGlmaWNhdGlvblRpbWUsIGFjdHVhbFRhcmdldE1ldGFkYXRhLT5tb2RpZmljYXRp
b25UaW1lKTsKLSAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSksIHN0YXRp
Y19jYXN0PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEtPmxlbmd0aCkpOwotICAgIEVYUEVDVF9GQUxT
RShhY3R1YWxUYXJnZXRNZXRhZGF0YS0+aXNIaWRkZW4pOwotfQotCi1URVNUX0YoRmlsZVN5c3Rl
bVRlc3QsIEdldEZpbGVNZXRhZGF0YVN5bWxpbmtUb0ZpbGVTeW1saW5rKQotewotICAgIC8vIENy
ZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdGhlIHRlbXBGaWxlU3ltbGlua1BhdGgoKS4K
LSAgICBhdXRvIHN5bWxpbmtUb1N5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInN5bWxpbmtUb1N5bWxpbmsiKTsK
LSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsodGVtcEZpbGVT
eW1saW5rUGF0aCgpLCBzeW1saW5rVG9TeW1saW5rUGF0aCkpOwotCi0gICAgYXV0byBzeW1saW5r
TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoc3ltbGlua1RvU3ltbGlua1BhdGgp
OwotICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS5oYXNWYWx1ZSgpKTsKLSAgICBFWFBF
Q1RfVFJVRShzeW1saW5rTWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1i
b2xpY0xpbmspOwotICAgIEVYUEVDVF9GQUxTRShzeW1saW5rTWV0YWRhdGEtPmlzSGlkZGVuKTsK
LQotICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xs
b3dpbmdTeW1saW5rcyhzeW1saW5rVG9TeW1saW5rUGF0aCk7Ci0gICAgQVNTRVJUX1RSVUUodGFy
Z2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEt
PnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKLSAgICBFWFBFQ1RfRkFMU0UodGFy
Z2V0TWV0YWRhdGEtPmlzSGlkZGVuKTsKLSAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1U
ZXN0RGF0YSksIHN0YXRpY19jYXN0PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEtPmxlbmd0aCkpOwot
Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShzeW1saW5rVG9TeW1saW5r
UGF0aCkpOwotfQotCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRhZGF0YURpcmVj
dG9yeVN5bWxpbmspCi17Ci0gICAgYXV0byBzeW1saW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpm
aWxlTWV0YWRhdGEodGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgoKSk7Ci0gICAgQVNTRVJUX1RS
VUUoc3ltbGlua01ldGFkYXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtN
ZXRhZGF0YS0+dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluayk7Ci0gICAg
RVhQRUNUX0ZBTFNFKHN5bWxpbmtNZXRhZGF0YS0+aXNIaWRkZW4pOwotCi0gICAgYXV0byB0YXJn
ZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHRl
bXBFbXB0eUZvbGRlclN5bWxpbmtQYXRoKCkpOwotICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFk
YXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLT50eXBlID09
IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5KTsKLSAgICBFWFBFQ1RfRkFMU0UodGFyZ2V0
TWV0YWRhdGEtPmlzSGlkZGVuKTsKKyAgICBhdXRvIGRvZXNOb3RFeGlzdFBhdGggPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9l
cy1ub3QtZXhpc3QiKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZVR5cGUoZG9l
c05vdEV4aXN0UGF0aCkpOworCisgICAgRVhQRUNUX0VRKEZpbGVTeXN0ZW06OmZpbGVUeXBlKHRl
bXBGaWxlUGF0aCgpKSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlJlZ3VsYXIpOworICAgIEVYUEVD
VF9FUShGaWxlU3lzdGVtOjpmaWxlVHlwZSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpLCBGaWxlU3lz
dGVtOjpGaWxlVHlwZTo6U3ltYm9saWNMaW5rKTsKKyAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6
ZmlsZVR5cGUodGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgoKSksIEZpbGVTeXN0ZW06OkZpbGVU
eXBlOjpTeW1ib2xpY0xpbmspOworICAgIEVYUEVDVF9FUShGaWxlU3lzdGVtOjpmaWxlVHlwZSh0
ZW1wRW1wdHlGb2xkZXJQYXRoKCkpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KTsK
KworICAgIC8vIFN5bWxpbmsgdG8gZmlsZSBzeW1saW5rIGNhc2UuCisgICAgYXV0byBzeW1saW5r
VG9GaWxlU3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
dGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAic3ltbGlua1RvU3ltbGluayIpOworICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayh0ZW1wRmlsZVN5bWxpbmtQYXRoKCks
IHN5bWxpbmtUb0ZpbGVTeW1saW5rUGF0aCkpOworICAgIEVYUEVDVF9FUShGaWxlU3lzdGVtOjpm
aWxlVHlwZShzeW1saW5rVG9GaWxlU3ltbGlua1BhdGgpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6
U3ltYm9saWNMaW5rKTsKKworICAgIC8vIFN5bWxpbmsgdG8gZGlyZWN0b3J5IHN5bWxpbmsgY2Fz
ZS4KKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOworICAgIGF1dG8g
c3ltbGlua1RvRGlyZWN0b3J5U3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5
RmlsZSgidGVtcFRlc3RGaWxlLXN5bWxpbmsiLCBoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc3ltbGlua1RvRGly
ZWN0b3J5U3ltbGlua1BhdGgpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5
bWJvbGljTGluayh0ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpLCBzeW1saW5rVG9EaXJlY3Rv
cnlTeW1saW5rUGF0aCkpOworICAgIEVYUEVDVF9FUShGaWxlU3lzdGVtOjpmaWxlVHlwZShzeW1s
aW5rVG9EaXJlY3RvcnlTeW1saW5rUGF0aCksIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpTeW1ib2xp
Y0xpbmspOworCisgICAgLy8gQnJva2VuIGZpbGUgc3ltbGluayBjYXNlLgorICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUodGVtcEZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1Rf
RVEoRmlsZVN5c3RlbTo6ZmlsZVR5cGUodGVtcEZpbGVTeW1saW5rUGF0aCgpKSwgRmlsZVN5c3Rl
bTo6RmlsZVR5cGU6OlN5bWJvbGljTGluayk7CiAKLSAgICBhdXRvIGFjdHVhbFRhcmdldE1ldGFk
YXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBFbXB0eUZvbGRlclBhdGgoKSk7Ci0g
ICAgQVNTRVJUX1RSVUUoYWN0dWFsVGFyZ2V0TWV0YWRhdGEuaGFzVmFsdWUoKSk7Ci0gICAgRVhQ
RUNUX1RSVUUoYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBl
OjpEaXJlY3RvcnkpOwotICAgIEVYUEVDVF9FUSh0YXJnZXRNZXRhZGF0YS0+bW9kaWZpY2F0aW9u
VGltZSwgYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPm1vZGlmaWNhdGlvblRpbWUpOwotICAgIEVYUEVD
VF9FUSh0YXJnZXRNZXRhZGF0YS0+bGVuZ3RoLCBhY3R1YWxUYXJnZXRNZXRhZGF0YS0+bGVuZ3Ro
KTsKLSAgICBFWFBFQ1RfRkFMU0UoYWN0dWFsVGFyZ2V0TWV0YWRhdGEtPmlzSGlkZGVuKTsKKyAg
ICAvLyBCcm9rZW4gZGlyZWN0b3J5IHN5bWxpbmsgY2FzZS4KKyAgICBFWFBFQ1RfVFJVRShGaWxl
U3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpKTsK
KyAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6ZmlsZVR5cGUodGVtcEVtcHR5Rm9sZGVyU3ltbGlu
a1BhdGgoKSksIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpTeW1ib2xpY0xpbmspOwogfQogCi1URVNU
X0YoRmlsZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRhZGF0YUZpbGVEb2VzTm90RXhpc3QpCitURVNU
X0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MpCiB7CiAgICAgYXV0
byBkb2VzTm90RXhpc3RQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Iik7Ci0gICAgYXV0byBtZXRh
ZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShkb2VzTm90RXhpc3RQYXRoKTsKLSAgICBF
WFBFQ1RfVFJVRSghbWV0YWRhdGEpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxl
VHlwZUZvbGxvd2luZ1N5bWxpbmtzKGRvZXNOb3RFeGlzdFBhdGgpKTsKKworICAgIEVYUEVDVF9F
UShGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlUGF0aCgpKSwg
RmlsZVN5c3RlbTo6RmlsZVR5cGU6OlJlZ3VsYXIpOworICAgIEVYUEVDVF9FUShGaWxlU3lzdGVt
OjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSksIEZpbGVT
eXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKTsKKyAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6Zmls
ZVR5cGVGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpKSwgRmls
ZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSk7CisgICAgRVhQRUNUX0VRKEZpbGVTeXN0ZW06
OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3ModGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSwgRmlsZVN5
c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSk7CisKKyAgICAvLyBTeW1saW5rIHRvIGZpbGUgc3lt
bGluayBjYXNlLgorICAgIGF1dG8gc3ltbGlua1RvRmlsZVN5bWxpbmtQYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInN5bWxp
bmtUb1N5bWxpbmsiKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xp
Y0xpbmsodGVtcEZpbGVTeW1saW5rUGF0aCgpLCBzeW1saW5rVG9GaWxlU3ltbGlua1BhdGgpKTsK
KyAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhzeW1s
aW5rVG9GaWxlU3ltbGlua1BhdGgpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVndWxhcik7CisK
KyAgICAvLyBTeW1saW5rIHRvIGRpcmVjdG9yeSBzeW1saW5rIGNhc2UuCisgICAgRmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICBhdXRvIHN5bWxpbmtUb0RpcmVjdG9y
eVN5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0Rmls
ZS1zeW1saW5rIiwgaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsK
KyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHN5bWxpbmtUb0RpcmVjdG9yeVN5bWxpbmtQYXRo
KTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsodGVtcEVt
cHR5Rm9sZGVyU3ltbGlua1BhdGgoKSwgc3ltbGlua1RvRGlyZWN0b3J5U3ltbGlua1BhdGgpKTsK
KyAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhzeW1s
aW5rVG9EaXJlY3RvcnlTeW1saW5rUGF0aCksIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3Rv
cnkpOworCisgICAgLy8gQnJva2VuIGZpbGUgc3ltbGluayBjYXNlLgorICAgIEVYUEVDVF9UUlVF
KEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUodGVtcEZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVN5bWxpbmtQ
YXRoKCkpKTsKKworICAgIC8vIEJyb2tlbiBkaXJlY3Rvcnkgc3ltbGluayBjYXNlLgorICAgIEVY
UEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHRlbXBFbXB0eUZv
bGRlclBhdGgoKSkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxv
d2luZ1N5bWxpbmtzKHRlbXBFbXB0eUZvbGRlclN5bWxpbmtQYXRoKCkpKTsKIH0KIAogI2lmIE9T
KFVOSVgpCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRhZGF0YUhpZGRlbkZpbGUp
CitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGlzSGlkZGVuRmlsZSkKIHsKICAgICBhdXRvIGhpZGRl
bkZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0
eUZvbGRlclBhdGgoKSwgIi5oaWRkZW5GaWxlIik7Ci0gICAgYXV0byBmaWxlSGFuZGxlID0gRmls
ZVN5c3RlbTo6b3BlbkZpbGUoaGlkZGVuRmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9k
ZTo6V3JpdGUpOwotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmls
ZUhhbmRsZSkpOwotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIEZpbGVT
eXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwotICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKLQotICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lz
dGVtOjpmaWxlTWV0YWRhdGEoaGlkZGVuRmlsZVBhdGgpOwotICAgIEFTU0VSVF9UUlVFKG1ldGFk
YXRhLmhhc1ZhbHVlKCkpOwotICAgIEVYUEVDVF9UUlVFKG1ldGFkYXRhLT50eXBlID09IEZpbGVN
ZXRhZGF0YTo6VHlwZTo6RmlsZSk7Ci0gICAgRVhQRUNUX1RSVUUobWV0YWRhdGEtPmlzSGlkZGVu
KTsKLSAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSksIHN0YXRpY19jYXN0
PHNpemVfdD4obWV0YWRhdGEtPmxlbmd0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06
OmlzSGlkZGVuRmlsZShoaWRkZW5GaWxlUGF0aCkpOwogCi0gICAgRVhQRUNUX1RSVUUoRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShoaWRkZW5GaWxlUGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxl
U3lzdGVtOjppc0hpZGRlbkZpbGUodGVtcEZpbGVQYXRoKCkpKTsKIH0KICNlbmRpZgogCkBAIC0y
ODksOSArMjc0LDcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBmaWxlRXhpc3RzQnJva2VuU3lt
bGluaykKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsoZG9l
c05vdEV4aXN0UGF0aCwgc3ltbGlua1BhdGgpKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhkb2VzTm90RXhpc3RQYXRoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMoc3ltbGlua1BhdGgpKTsgLy8gZmlsZUV4aXN0cygpIGZvbGxvd3Mg
c3ltbGlua3MuCi0gICAgYXV0byBzeW1saW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0
YWRhdGEoc3ltbGlua1BhdGgpOwotICAgIEFTU0VSVF9UUlVFKCEhc3ltbGlua01ldGFkYXRhKTsK
LSAgICBFWFBFQ1RfRVEoc3ltbGlua01ldGFkYXRhLT50eXBlLCBGaWxlTWV0YWRhdGE6OlR5cGU6
OlN5bWJvbGljTGluayk7CisgICAgRVhQRUNUX0VRKEZpbGVTeXN0ZW06OmZpbGVUeXBlKHN5bWxp
bmtQYXRoKSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlN5bWJvbGljTGluayk7CiAgICAgRVhQRUNU
X1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShzeW1saW5rUGF0aCkpOwogfQogCkBAIC0zMDEs
MTQgKzI4NCw4IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZmlsZUV4aXN0c1N5bWxpbmtUb1N5
bWxpbmspCiAgICAgYXV0byBzeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJzeW1saW5rIl9zKTsKICAgICBFWFBF
Q1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsodGVtcEZpbGVTeW1saW5rUGF0
aCgpLCBzeW1saW5rUGF0aCkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoc3ltbGlua1BhdGgpKTsKLQotICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxl
TWV0YWRhdGEoc3ltbGlua1BhdGgpOwotICAgIEFTU0VSVF9UUlVFKCEhbWV0YWRhdGEpOwotICAg
IEVYUEVDVF9FUShtZXRhZGF0YS0+dHlwZSwgRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xp
bmspOwotCi0gICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0
YUZvbGxvd2luZ1N5bWxpbmtzKHN5bWxpbmtQYXRoKTsKLSAgICBBU1NFUlRfVFJVRSghIXRhcmdl
dE1ldGFkYXRhKTsKLSAgICBFWFBFQ1RfRVEodGFyZ2V0TWV0YWRhdGEtPnR5cGUsIEZpbGVNZXRh
ZGF0YTo6VHlwZTo6RmlsZSk7CisgICAgRVhQRUNUX0VRKEZpbGVTeXN0ZW06OmZpbGVUeXBlKHN5
bWxpbmtQYXRoKSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlN5bWJvbGljTGluayk7CisgICAgRVhQ
RUNUX0VRKEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3Moc3ltbGlua1BhdGgp
LCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVndWxhcik7CiAKICAgICAvLyBCcmVhayB0aGUgc3lt
bGluayBieSBkZWxldGluZyB0aGUgdGFyZ2V0LgogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUodGVtcEZpbGVQYXRoKCkpKTsKQEAgLTMxNywxOSArMjk0LDExIEBAIFRFU1Rf
RihGaWxlU3lzdGVtVGVzdCwgZmlsZUV4aXN0c1N5bWxpbmtUb1N5bWxpbmspCiAgICAgRVhQRUNU
X0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEZpbGVTeW1saW5rUGF0aCgpKSk7IC8v
IGZpbGVFeGlzdHMoKSBmb2xsb3dzIHN5bWxpbmtzLgogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKHN5bWxpbmtQYXRoKSk7IC8vIGZpbGVFeGlzdHMoKSBmb2xsb3dzIHN5
bWxpbmtzLgogCi0gICAgbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoc3ltbGlu
a1BhdGgpOwotICAgIEFTU0VSVF9UUlVFKCEhbWV0YWRhdGEpOwotICAgIEVYUEVDVF9FUShtZXRh
ZGF0YS0+dHlwZSwgRmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOwotCi0gICAgbWV0
YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEodGVtcEZpbGVTeW1saW5rUGF0aCgpKTsK
LSAgICBBU1NFUlRfVFJVRSghIW1ldGFkYXRhKTsKLSAgICBFWFBFQ1RfRVEobWV0YWRhdGEtPnR5
cGUsIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKKyAgICBFWFBFQ1RfRVEoRmls
ZVN5c3RlbTo6ZmlsZVR5cGUoc3ltbGlua1BhdGgpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6U3lt
Ym9saWNMaW5rKTsKKyAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6ZmlsZVR5cGUodGVtcEZpbGVT
eW1saW5rUGF0aCgpKSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlN5bWJvbGljTGluayk7CiAKLSAg
ICB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxp
bmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIXRhcmdldE1ldGFk
YXRhKTsKLQotICAgIHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9s
bG93aW5nU3ltbGlua3Moc3ltbGlua1BhdGgpOwotICAgIEVYUEVDVF9UUlVFKCF0YXJnZXRNZXRh
ZGF0YSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3lt
bGlua3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0
ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3Moc3ltbGlua1BhdGgpKTsKIAogICAgIEVYUEVD
VF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc3ltbGlua1BhdGgpKTsKIH0KQEAgLTUwNCw0
MSArNDczLDE2IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZmlsZVNpemUpCiAgICAgRVhQRUNU
X1RSVUUoIWZpbGVTaXplKTsKIH0KIAotVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBpc0RpcmVjdG9y
eSkKLXsKLSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0RpcmVjdG9yeSh0ZW1wRW1wdHlG
b2xkZXJQYXRoKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0RpcmVjdG9yeUZv
bGxvd2luZ1N5bWxpbmtzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSkpOwotCi0gICAgYXV0byBmb2xk
ZXJTeW1saW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEodGVtcEVtcHR5Rm9s
ZGVyU3ltbGlua1BhdGgoKSk7Ci0gICAgRVhQRUNUX1RSVUUoISFmb2xkZXJTeW1saW5rTWV0YWRh
dGEpOwotICAgIEVYUEVDVF9FUShmb2xkZXJTeW1saW5rTWV0YWRhdGEtPnR5cGUsIEZpbGVNZXRh
ZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKLSAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6
aXNEaXJlY3RvcnkodGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgoKSkpOwotICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3ModGVtcEVtcHR5Rm9s
ZGVyU3ltbGlua1BhdGgoKSkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmlzRGly
ZWN0b3J5KHRlbXBGaWxlUGF0aCgpKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06Omlz
RGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVQYXRoKCkpKTsKLQotICAgIGF1dG8g
ZmlsZVN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRmlsZVN5
bWxpbmtQYXRoKCkpOwotICAgIEVYUEVDVF9UUlVFKCEhZmlsZVN5bWxpbmtNZXRhZGF0YSk7Ci0g
ICAgRVhQRUNUX0VRKGZpbGVTeW1saW5rTWV0YWRhdGEtPnR5cGUsIEZpbGVNZXRhZGF0YTo6VHlw
ZTo6U3ltYm9saWNMaW5rKTsKLSAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6aXNEaXJlY3Rv
cnkodGVtcEZpbGVTeW1saW5rUGF0aCgpKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06
OmlzRGlyZWN0b3J5Rm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKSk7Ci0K
LSAgICBTdHJpbmcgZmlsZVRoYXREb2VzTm90RXhpc3QgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiX3Mp
OwotICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0RpcmVjdG9yeShmaWxlVGhhdERvZXNO
b3RFeGlzdCkpOwotICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0RpcmVjdG9yeUZvbGxv
d2luZ1N5bWxpbmtzKGZpbGVUaGF0RG9lc05vdEV4aXN0KSk7Ci19Ci0KIFRFU1RfRihGaWxlU3lz
dGVtVGVzdCwgbWFrZUFsbERpcmVjdG9yaWVzKQogewogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06OmZpbGVFeGlzdHModGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUo
RmlsZVN5c3RlbTo6aXNEaXJlY3RvcnkodGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSk7CisgICAgRVhQ
RUNUX0VRKEZpbGVTeXN0ZW06OmZpbGVUeXBlKHRlbXBFbXB0eUZvbGRlclBhdGgoKSksIEZpbGVT
eXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3Rvcmllcyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpKTsKICAgICBTdHJpbmcg
c3ViRm9sZGVyUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVt
cEVtcHR5Rm9sZGVyUGF0aCgpLCB7ICJzdWJGb2xkZXIxIiwgInN1YkZvbGRlcjIiLCAic3ViRm9s
ZGVyMyIgfSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3ViRm9s
ZGVyUGF0aCkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhzdWJGb2xkZXJQYXRoKSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhzdWJGb2xkZXJQYXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNEaXJlY3Rv
cnkoc3ViRm9sZGVyUGF0aCkpOworICAgIEVYUEVDVF9FUShGaWxlU3lzdGVtOjpmaWxlVHlwZShz
dWJGb2xkZXJQYXRoKSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSk7CiAgICAgRVhQ
RUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkodGVtcEVtcHR5Rm9s
ZGVyUGF0aCgpKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3Vi
Rm9sZGVyUGF0aCkpOwogfQpAQCAtNTYwLDkgKzUwNCw3IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVz
dCwgY3JlYXRlU3ltYm9saWNMaW5rKQogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNyZWF0
ZVN5bWJvbGljTGluayh0ZW1wRmlsZVBhdGgoKSwgc3ltbGlua1BhdGgpKTsKICAgICBFWFBFQ1Rf
VFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN5bWxpbmtQYXRoKSk7CiAKLSAgICBhdXRvIHN5
bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShzeW1saW5rUGF0aCk7Ci0g
ICAgRVhQRUNUX1RSVUUoISFzeW1saW5rTWV0YWRhdGEpOwotICAgIEVYUEVDVF9FUShzeW1saW5r
TWV0YWRhdGEtPnR5cGUsIEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsKKyAgICBF
WFBFQ1RfRVEoRmlsZVN5c3RlbTo6ZmlsZVR5cGUoc3ltbGlua1BhdGgpLCBGaWxlU3lzdGVtOjpG
aWxlVHlwZTo6U3ltYm9saWNMaW5rKTsKIAogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUoc3ltbGlua1BhdGgpKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhzeW1saW5rUGF0aCkpOwpAQCAtNTc3LDEyICs1MTksNyBAQCBURVNUX0YoRmlsZVN5
c3RlbVRlc3QsIGNyZWF0ZVN5bWJvbGljTGlua0ZvbGRlcikKICAgICBFWFBFQ1RfVFJVRShGaWxl
U3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCBzeW1saW5r
UGF0aCkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3ltbGlua1Bh
dGgpKTsKIAotICAgIGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFk
YXRhKHN5bWxpbmtQYXRoKTsKLSAgICBFWFBFQ1RfVFJVRSghIXN5bWxpbmtNZXRhZGF0YSk7Ci0g
ICAgRVhQRUNUX0VRKHN5bWxpbmtNZXRhZGF0YS0+dHlwZSwgRmlsZU1ldGFkYXRhOjpUeXBlOjpT
eW1ib2xpY0xpbmspOwotCi0gICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmlzRGlyZWN0b3J5
KHN5bWxpbmtQYXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNEaXJlY3RvcnlG
b2xsb3dpbmdTeW1saW5rcyhzeW1saW5rUGF0aCkpOworICAgIEVYUEVDVF9FUShGaWxlU3lzdGVt
OjpmaWxlVHlwZShzeW1saW5rUGF0aCksIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpTeW1ib2xpY0xp
bmspOwogCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShzeW1saW5rUGF0
aCkpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN5bWxpbmtQYXRo
KSk7CkBAIC02MTcsOSArNTU0LDcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBjcmVhdGVIYXJk
TGluaykKICAgICBBU1NFUlRfVFJVRShsaW5rRmlsZVNpemUpOwogICAgIEVYUEVDVF9FUSgqbGlu
a0ZpbGVTaXplLCAqZmlsZVNpemUpOwogCi0gICAgYXV0byBoYXJkbGlua01ldGFkYXRhID0gRmls
ZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGhhcmRsaW5rUGF0aCk7Ci0gICAgQVNTRVJUX1RSVUUoISFo
YXJkbGlua01ldGFkYXRhKTsKLSAgICBFWFBFQ1RfRVEoaGFyZGxpbmtNZXRhZGF0YS0+dHlwZSwg
RmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsKKyAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6Zmls
ZVR5cGUoaGFyZGxpbmtQYXRoKSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlJlZ3VsYXIpOwogCiAg
ICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0ZW1wRmlsZVBhdGgoKSkpOwog
ICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7
CkBAIC02NDcsOSArNTgyLDcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBjcmVhdGVIYXJkTGlu
a09yQ29weUZpbGUpCiAgICAgQVNTRVJUX1RSVUUobGlua0ZpbGVTaXplKTsKICAgICBFWFBFQ1Rf
RVEoKmxpbmtGaWxlU2l6ZSwgKmZpbGVTaXplKTsKIAotICAgIGF1dG8gaGFyZGxpbmtNZXRhZGF0
YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShoYXJkbGlua1BhdGgpOwotICAgIEVYUEVDVF9U
UlVFKCEhaGFyZGxpbmtNZXRhZGF0YSk7Ci0gICAgRVhQRUNUX0VRKGhhcmRsaW5rTWV0YWRhdGEt
PnR5cGUsIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7CisgICAgRVhQRUNUX0VRKEZpbGVTeXN0
ZW06OmZpbGVUeXBlKGhhcmRsaW5rUGF0aCksIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFy
KTsKIAogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUodGVtcEZpbGVQYXRo
KCkpKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVBh
dGgoKSkpOwpAQCAtNzMxLDE2ICs2NjQsNiBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVN
b2RpZmljYXRpb25UaW1lKQogICAgIH0pOwogfQogCi1URVNUX0YoRmlsZVN5c3RlbVRlc3QsIGZp
bGVNb2RpZmljYXRpb25UaW1lVmlhRmlsZU1ldGFkYXRhKQotewotICAgIHJ1bkdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lVGVzdCh0ZW1wRmlsZVBhdGgoKSwgW10oY29uc3QgU3RyaW5nJiBwYXRoKSAt
PiBPcHRpb25hbDxXYWxsVGltZT4gewotICAgICAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3Rl
bTo6ZmlsZU1ldGFkYXRhKHBhdGgpOwotICAgICAgICBpZiAoIW1ldGFkYXRhKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIG1ldGFkYXRhLT5tb2RpZmlj
YXRpb25UaW1lOwotICAgIH0pOwotfQotCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIHVwZGF0ZUZp
bGVNb2RpZmljYXRpb25UaW1lKQogewogICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IEZpbGVT
eXN0ZW06OmZpbGVNb2RpZmljYXRpb25UaW1lKHRlbXBGaWxlUGF0aCgpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>