<?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>238269</bug_id>
          
          <creation_ts>2022-03-23 10:09:55 -0700</creation_ts>
          <short_desc>Introduce an SPI to get website data directory for origin and use it in API tests</short_desc>
          <delta_ts>2022-03-25 01:56:16 -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>Website Storage</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>236977</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1854238</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-23 10:09:55 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854249</commentid>
    <comment_count>1</comment_count>
      <attachid>455514</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-23 10:26:18 -0700</bug_when>
    <thetext>Created attachment 455514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854279</commentid>
    <comment_count>2</comment_count>
      <attachid>455523</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-23 11:14:56 -0700</bug_when>
    <thetext>Created attachment 455523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854343</commentid>
    <comment_count>3</comment_count>
      <attachid>455523</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-03-23 12:51:05 -0700</bug_when>
    <thetext>Comment on attachment 455523
Patch

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

&gt; Source/WebKit/ChangeLog:12
&gt; +        storage), we need to update these tests with new paths, otherwise the tests will check the wrong paths. Let&apos;s 
&gt; +        just add an SPI so these tests can get the paths in use dynamically, which would avoid test breakage when
&gt; +        we do website data migration.

As we do this, we should also add tests that write data to the old location and verify that the migration happens successfully.

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:653
&gt; +        removeOriginStorageManagerIfPossible(origin);

Why is this done in a function that just gets the directory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854393</commentid>
    <comment_count>4</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-23 14:16:30 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 455523 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455523&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:12
&gt; &gt; +        storage), we need to update these tests with new paths, otherwise the tests will check the wrong paths. Let&apos;s 
&gt; &gt; +        just add an SPI so these tests can get the paths in use dynamically, which would avoid test breakage when
&gt; &gt; +        we do website data migration.
&gt; 
&gt; As we do this, we should also add tests that write data to the old location
&gt; and verify that the migration happens successfully.

We have test for migration, e.g. WebKit.MigrateLocalStorageDataToGeneralStorageDirectory, where we still use hardcoded paths (since we want to ensure files are moved correctly from old locations to new locations.)

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:653
&gt; &gt; +        removeOriginStorageManagerIfPossible(origin);
&gt; 
&gt; Why is this done in a function that just gets the directory?

Because localOriginStorageManager(origin) may create a new OriginStorageManager to get directory, and we don&apos;t want to hold the object if it is not in use after getting directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854446</commentid>
    <comment_count>5</comment_count>
      <attachid>455523</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 15:39:48 -0700</bug_when>
    <thetext>Comment on attachment 455523
Patch

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

&gt; Source/WebKit/Scripts/webkit/messages.py:965
&gt; +        &apos;WebKit::WebsiteDataType&apos;: [&apos;&quot;WebsiteDataType.h&quot;&apos;],

Why is this needed? The header name matches the class name so it shouldn&apos;t be needed.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:854
&gt; +    _websiteDataStore-&gt;originDirectoryForTesting(origin, topOrigin, *websiteDataType, [completionHandlerCopy](auto result) {

completionHandlerCopy = WTFMove(completionHandlerCopy)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855012</commentid>
    <comment_count>6</comment_count>
      <attachid>455727</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-24 22:58:43 -0700</bug_when>
    <thetext>Created attachment 455727
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855013</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-24 22:59:47 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 455727 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855023</commentid>
    <comment_count>8</comment_count>
      <attachid>455730</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-24 23:49:23 -0700</bug_when>
    <thetext>Created attachment 455730
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855044</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-25 01:55:25 -0700</bug_when>
    <thetext>Committed r291851 (248863@main): &lt;https://commits.webkit.org/248863@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455730.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855045</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-25 01:56:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/90825693&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455514</attachid>
            <date>2022-03-23 10:26:18 -0700</date>
            <delta_ts>2022-03-23 11:19:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238269-20220323102617.patch</filename>
            <type>text/plain</type>
            <size>72228</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAzYjU2MThlYjY3Yjc2NTcx
MDVlZWIwMGY3Y2EzYjRhMjFkMWMwMmIuLjU4NzM2OGQxODkxMGM0ODYwMDgxYzc3NGRmODJkNmZh
YmFhNjQwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjItMDMtMjMgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGFuIFNQSSB0byBn
ZXQgd2Vic2l0ZSBkYXRhIGRpcmVjdG9yeSBmb3Igb3JpZ2luIGFuZCB1c2UgaXQgaW4gQVBJIHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgy
NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVy
ZSBhcmUgYSBmZXcgdGVzdHMgdXNpbmcgaGFyZGNvZGVkIHdlYnNpdGUgZGF0YSBwYXRocyB0byBj
aGVjayBpZiBmaWxlcyBhcmUgY29ycmVjbHkgbW9kaWZpZWQgYnkgQVBJLgorICAgICAgICBFdmVy
eXRpbWUgd2UgbWlncmF0ZSB3ZWJzaXRlIGRhdGEgKGZvciBleGFtcGxlLCBpZiB3ZSBzdGFydCB1
c2luZyBnZW5lcmFsIHN0b3JhZ2UgZGlyZWN0b3J5IGZvciBJbmRleGVkREIgCisgICAgICAgIHN0
b3JhZ2UpLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGVzZSB0ZXN0cyB3aXRoIG5ldyBwYXRocywgb3Ro
ZXJ3aXNlIHRoZSB0ZXN0cyB3aWxsIGNoZWNrIHRoZSB3cm9uZyBwYXRocy4gTGV0J3MgCisgICAg
ICAgIGp1c3QgYWRkIGFuIFNQSSBzbyB0aGVzZSB0ZXN0cyBjYW4gZ2V0IHRoZSBwYXRocyBpbiB1
c2UgZHluYW1pY2FsbHksIHdoaWNoIHdvdWxkIGF2b2lkIHRlc3QgYnJlYWthZ2Ugd2hlbgorICAg
ICAgICB3ZSBkbyB3ZWJzaXRlIGRhdGEgbWlncmF0aW9uLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6d2Vic2l0ZURhdGFPcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Z2V0T3JpZ2luRGlyZWN0b3J5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpPcmln
aW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6dG9TdG9yYWdlVHlwZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpyZXNv
bHZlZExvY2FsU3RvcmFnZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFu
YWdlcjo6U3RvcmFnZUJ1Y2tldDo6cmVzb2x2ZWRJREJTdG9yYWdlUGF0aCk6CisgICAgICAgIChX
ZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpyZXNvbHZlZFBhdGgp
OgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6cmVzb2x2ZWRQYXRoKToK
KyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OnJlc29sdmVkTG9jYWxTdG9y
YWdlUGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2Vy
OjpyZXNvbHZlZElEQlN0b3JhZ2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1b
V0tXZWJzaXRlRGF0YVN0b3JlIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOnRvcE9yaWdpbjp0
eXBlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp3ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6Om9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMjItMDMtMjIg
IFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU11b
V1BdIEFkZCB0ZWxlbWV0cnkgZm9yIHN5c2NhbGxzIHVzZWQgZHVyaW5nIGxhdW5jaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA4MzRk
MTlhNWI2M2QwZTUzYThiZjIzNzJhOTUzMWM0YTFjZWY2OGYyLi41ODlkMTY2MzQxMmNmMzRlMzBj
ZTAxNjAzNGViYTNhZjg2NDQyZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjI1OSw2ICsyMjU5LDE2IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBVCiAgICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkubW92ZURhdGEo
ZGF0YVR5cGVzLCBXVEZNb3ZlKG9sZE9yaWdpbiksIFdURk1vdmUobmV3T3JpZ2luKSwgW2FnZ3Jl
Z2F0b3JdIHsgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYnNpdGVEYXRhT3JpZ2lu
RGlyZWN0b3J5Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYg
b3JpZ2luLCBjb25zdCBVUkwmIHRvcE9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlIGRhdGFUeXBlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAg
IGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisK
KyAgICBhdXRvIGNsaWVudE9yaWdpbiA9IFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTCh0b3BPcmlnaW4pLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21VUkwob3JpZ2luKSB9OworICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5h
Z2VyKCkuZ2V0T3JpZ2luRGlyZWN0b3J5KFdURk1vdmUoY2xpZW50T3JpZ2luKSwgZGF0YVR5cGUs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGQ5MzVmNDZjY2M5OWNh
ODY3ODRmNWYxNGU4MGRkNzBiNTAzODNiMjkuLmJmYTMyZGZlNzRiNzllNmE4ZDUwYTY1NzE1ZDUx
MGE0MWI4ZTIzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKQEAgLTI5Miw2ICsyOTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclN0b3Jh
Z2UoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBkaWRJbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
JiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBuZXdRdW90YSk7CiAgICAgdm9pZCByZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHdlYnNpdGVEYXRhT3Jp
Z2luRGlyZWN0b3J5Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3Qg
VVJMJiwgV2Vic2l0ZURhdGFUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBwYXJlbnRQcm9j
ZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCA2Nzg4ZDY1Y2M2YThjY2QzZjExZjkwYjJkNjc3OWUyMWFiZDFjZGM2Li5mYTc5YzViNWRiMTQ0
NTllMzY2NjE5MTJkYTJjYmY4OTllM2Q2NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTQ2LDYgKzQ2
LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIERl
bGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYktp
dDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlKSAtPiAoKQogICAgIERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURh
dGFUeXBlcywgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucywgVmVj
dG9yPFN0cmluZz4gY29va2llSG9zdE5hbWVzLCBWZWN0b3I8U3RyaW5nPiBIU1RTQ2FjaGVIb3N0
TmFtZXMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gcmVnaXN0cmFibGVEb21h
aW5zKSAtPiAoKQogICAgIFJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwgb2xkRG9tYWluLCBVUkwgbmV3RG9tYWluLCBPcHRpb25TZXQ8V2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMpIC0+ICgpCisgICAgV2Vic2l0ZURh
dGFPcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJM
IG9yaWdpbiwgVVJMIHRvcE9yaWdpbiwgZW51bTp1aW50MzJfdCBXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZSB3ZWJzaXRlRGF0YVR5cGUpIC0+IChTdHJpbmcgZGlyZWN0b3J5KQogCiAgICAgRG93bmxv
YWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wgc3Rk
OjpvcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgUmVzdW1l
RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBlbnVt
OmJvb2wgV2ViS2l0OjpDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMDBhZDkxOGZkYzQ4ODVhZWRjOGU1YWJi
NzExODExNmFmYTE2YTg3Ny4uZDBmOTI5MzA2MGE3OTM2MjVmNGQzNzY4NDJlMmM5YTVjYzlhMGI0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTYzMiw3ICs2MzIsNyBAQCB2b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gdHlwZXMsIFdlYkNvcmU6OgogICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHRh
cmdldE9yaWdpbikuZGVsZXRlRGF0YSh0eXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpKTsKIAog
ICAgICAgICAvLyBNb3ZlIGRhdGEgZnJvbSBzb3VyY2Ugb3JpZ2luIHRvIHRhcmdldCBvcmlnaW4u
Ci0gICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoc291cmNlT3JpZ2luKS5tb3ZlRGF0
YSh0eXBlcywgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcih0YXJnZXRPcmlnaW4pLnJlc29sdmVk
TG9jYWxTdG9yYWdlUGF0aCgpLCBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHRhcmdldE9yaWdp
bikucmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgpKTsKKyAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdl
TWFuYWdlcihzb3VyY2VPcmlnaW4pLm1vdmVEYXRhKHR5cGVzLCBsb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2VyKHRhcmdldE9yaWdpbikucmVzb2x2ZWRQYXRoKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxT
dG9yYWdlKSwgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcih0YXJnZXRPcmlnaW4pLnJlc29sdmVk
UGF0aChXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpOwogCiAgICAgICAgIHJl
bW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZSh0YXJnZXRPcmlnaW4pOwogICAgICAg
ICByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUoc291cmNlT3JpZ2luKTsKQEAg
LTY0MSw2ICs2NDEsMTkgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBXZWJDb3JlOjoKICAgICB9KTsKIH0KIAor
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldE9yaWdpbkRpcmVjdG9yeShXZWJDb3JlOjpD
bGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYnNpdGVEYXRhVHlwZSB0eXBlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUKCFtX2Nsb3NlZCk7CisKKyAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHR5
cGUsIG9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG9yaWdpbikpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGRpcmVjdG9yeSA9IGNyb3NzVGhyZWFkQ29weShsb2NhbE9yaWdp
blN0b3JhZ2VNYW5hZ2VyKG9yaWdpbikucmVzb2x2ZWRQYXRoKHR5cGUpKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZGlyZWN0b3J5KSk7CisgICAg
ICAgIH0pOworICAgICAgICByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUob3Jp
Z2luKTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnN1c3BlbmQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggMmFi
YjBmYjBlMzk4ZTc0ZjYwMTU4MmFlODVjNWU3OWMzMjU1OWU5OC4uODJlYjZjMjgyZjUwNTJlZjYx
MWQ3ZTJjZDFjMDhkODM2NGY4MDY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAtODYs
NiArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVEYXRhTW9kaWZpZWRTaW5jZShPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBkZWxldGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBtb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc291cmNlLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBnZXRPcmlnaW5EaXJlY3RvcnkoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYnNp
dGVEYXRhVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAg
ICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBy
ZXN1bWUoKTsKICAgICB2b2lkIGhhbmRsZUxvd01lbW9yeVdhcm5pbmcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFn
ZU1hbmFnZXIuY3BwCmluZGV4IDJmYjhhYzU3OGYzZGY5MTIxMTlmNDVjYmNiY2EwYWE1YzY1MDEx
NmQuLjcyNWJiZWEzNTBiODJlYWU0MWYxMDZhYzI4NTFhZjUxZTlkYzY4YzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0
b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNlc3Np
b25TdG9yYWdlLAogICAgICAgICBJbmRleGVkREIsCiAgICAgfTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0b3JhZ2VUeXBlPiB0b1N0b3JhZ2VUeXBlKFdlYnNpdGVEYXRhVHlwZSkgY29uc3Q7CiAgICAg
U3RyaW5nIHRvU3RvcmFnZUlkZW50aWZpZXIoU3RvcmFnZVR5cGUpIGNvbnN0OwogICAgIFN0b3Jh
Z2VCdWNrZXQoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFn
ZVBhdGgsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUGF0aHMpOwogICAgIFN0b3JhZ2VCdWNrZXRNb2Rl
IG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KQEAgLTczLDYgKzc0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFN0
cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCk7CiAg
ICAgU3RyaW5nIHJlc29sdmVkTG9jYWxTdG9yYWdlUGF0aCgpOwogICAgIFN0cmluZyByZXNvbHZl
ZElEQlN0b3JhZ2VQYXRoKCk7CisgICAgU3RyaW5nIHJlc29sdmVkUGF0aChXZWJzaXRlRGF0YVR5
cGUpOwogCiBwcml2YXRlOgogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGZldGNoRGF0
YVR5cGVzSW5MaXN0RnJvbU1lbW9yeShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPik7CkBAIC0x
MTcsNiArMTE5LDI1IEBAIHZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6
OmNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxCiAgICAgICAgIG1fc2Vzc2lv
blN0b3JhZ2VNYW5hZ2VyLT5jb25uZWN0aW9uQ2xvc2VkKGNvbm5lY3Rpb24pOwogfQogCitzdGQ6
Om9wdGlvbmFsPE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpTdG9yYWdlVHlw
ZT4gT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnRvU3RvcmFnZVR5cGUoV2Vi
c2l0ZURhdGFUeXBlIHdlYnNpdGVEYXRhVHlwZSkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHdlYnNp
dGVEYXRhVHlwZSkgeworICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtOgorICAg
ICAgICByZXR1cm4gU3RvcmFnZVR5cGU6OkZpbGVTeXN0ZW07CisgICAgY2FzZSBXZWJzaXRlRGF0
YVR5cGU6OkxvY2FsU3RvcmFnZToKKyAgICAgICAgcmV0dXJuIFN0b3JhZ2VUeXBlOjpMb2NhbFN0
b3JhZ2U7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlOgorICAgICAg
ICByZXR1cm4gU3RvcmFnZVR5cGU6OlNlc3Npb25TdG9yYWdlOworICAgIGNhc2UgV2Vic2l0ZURh
dGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM6CisgICAgICAgIHJldHVybiBTdG9yYWdlVHlwZTo6
SW5kZXhlZERCOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIFN0cmlu
ZyBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6dG9TdG9yYWdlSWRlbnRpZmll
cihTdG9yYWdlVHlwZSB0eXBlKSBjb25zdAogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMzUx
LDEwICszNzIsMTEgQEAgU3RyaW5nIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0
OjpyZXNvbHZlZExvY2FsU3RvcmFnZVBhdGgoKQogICAgICAgICBtX3Jlc29sdmVkTG9jYWxTdG9y
YWdlUGF0aCA9IG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aDsKICAgICB9IGVsc2UgaWYgKCFtX3Jv
b3RQYXRoLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9
IHR5cGVTdG9yYWdlUGF0aChTdG9yYWdlVHlwZTo6TG9jYWxTdG9yYWdlKTsKLSAgICAgICAgRmls
ZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CiAgICAg
ICAgIGF1dG8gbG9jYWxTdG9yYWdlUGF0aCA9IExvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3Rv
cmFnZUZpbGVQYXRoKGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7Ci0gICAgICAgIGlmICghbV9jdXN0
b21Mb2NhbFN0b3JhZ2VQYXRoLmlzRW1wdHkoKSAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhs
b2NhbFN0b3JhZ2VQYXRoKSAmJiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fY3VzdG9tTG9jYWxT
dG9yYWdlUGF0aCkpCisgICAgICAgIGlmICghbV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLmlzRW1w
dHkoKSAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhsb2NhbFN0b3JhZ2VQYXRoKSAmJiBGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkpIHsKKyAgICAgICAg
ICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyhsb2NhbFN0b3JhZ2VEaXJlY3Rvcnkp
OwogICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmls
ZShtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBhdGgpOworICAgICAgICB9
CiAKICAgICAgICAgbV9yZXNvbHZlZExvY2FsU3RvcmFnZVBhdGggPSBsb2NhbFN0b3JhZ2VQYXRo
OwogICAgIH0gZWxzZQpAQCAtMzg0LDExICs0MDYsMjcgQEAgU3RyaW5nIE9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpyZXNvbHZlZElEQlN0b3JhZ2VQYXRoKCkKICAgICAgICAg
SURCU3RvcmFnZU1hbmFnZXI6Om1pZ3JhdGVPcmlnaW5EYXRhKG1fY3VzdG9tSURCU3RvcmFnZVBh
dGgsIGlkYlN0b3JhZ2VQYXRoKTsKICAgICAgICAgbV9yZXNvbHZlZElEQlN0b3JhZ2VQYXRoID0g
aWRiU3RvcmFnZVBhdGg7CiAgICAgfQotICAgIAogICAgIEFTU0VSVCghbV9yZXNvbHZlZElEQlN0
b3JhZ2VQYXRoLmlzTnVsbCgpKTsKICAgICByZXR1cm4gbV9yZXNvbHZlZElEQlN0b3JhZ2VQYXRo
OwogfQogCitTdHJpbmcgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnJlc29s
dmVkUGF0aChXZWJzaXRlRGF0YVR5cGUgd2ViaXN0ZURhdGFUeXBlKQoreworICAgIGF1dG8gdHlw
ZSA9IHRvU3RvcmFnZVR5cGUod2ViaXN0ZURhdGFUeXBlKTsKKyAgICBpZiAoIXR5cGUpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBzd2l0Y2ggKCp0eXBlKSB7CisgICAgY2FzZSBTdG9yYWdl
VHlwZTo6TG9jYWxTdG9yYWdlOgorICAgICAgICByZXR1cm4gcmVzb2x2ZWRMb2NhbFN0b3JhZ2VQ
YXRoKCk7CisgICAgY2FzZSBTdG9yYWdlVHlwZTo6SW5kZXhlZERCOgorICAgICAgICByZXR1cm4g
cmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgpOworICAgIGNhc2UgU3RvcmFnZVR5cGU6OlNlc3Npb25T
dG9yYWdlOgorICAgIGNhc2UgU3RvcmFnZVR5cGU6OkZpbGVTeXN0ZW06CisgICAgICAgIHJldHVy
biB0eXBlU3RvcmFnZVBhdGgoKnR5cGUpOworICAgIH0KK30KKwogU3RyaW5nIE9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpvcmlnaW5GaWxlSWRlbnRpZmllcigpCiB7CiAgICAgcmV0dXJuIG9yaWdpbkZp
bGVOYW1lOwpAQCAtNDgyLDE0ICs1MjAsOSBAQCBJREJTdG9yYWdlTWFuYWdlciogT3JpZ2luU3Rv
cmFnZU1hbmFnZXI6OmV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKQogICAgIHJldHVybiBkZWZh
dWx0QnVja2V0KCkuZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigpOwogfQogCi1TdHJpbmcgT3Jp
Z2luU3RvcmFnZU1hbmFnZXI6OnJlc29sdmVkTG9jYWxTdG9yYWdlUGF0aCgpCi17Ci0gICAgcmV0
dXJuIGRlZmF1bHRCdWNrZXQoKS5yZXNvbHZlZExvY2FsU3RvcmFnZVBhdGgoKTsKLX0KLQotU3Ry
aW5nIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpyZXNvbHZlZElEQlN0b3JhZ2VQYXRoKCkKK1N0cmlu
ZyBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6cmVzb2x2ZWRQYXRoKFdlYnNpdGVEYXRhVHlwZSB0eXBl
KQogewotICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkucmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgp
OworICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkucmVzb2x2ZWRQYXRoKHR5cGUpOwogfQogCiBi
b29sIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5o
CmluZGV4IGQ4ODJiMTdlNjQ1NjU5ZThkMTcxZDUwODg1YTc1Nzg0MTcyYTM2MGIuLjU5OGU2YjFh
YjE1MWI2NmE1ZjZiYjUxNGY4ODgxMmNlZTZkMDZmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5o
CkBAIC01OSw4ICs1OSw3IEBAIHB1YmxpYzoKICAgICBTZXNzaW9uU3RvcmFnZU1hbmFnZXIqIGV4
aXN0aW5nU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCk7CiAgICAgSURCU3RvcmFnZU1hbmFnZXImIGlk
YlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3JhZ2VSZWdpc3RyeSYpOwogICAgIElEQlN0b3JhZ2VNYW5h
Z2VyKiBleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCk7Ci0gICAgU3RyaW5nIHJlc29sdmVkTG9j
YWxTdG9yYWdlUGF0aCgpOwotICAgIFN0cmluZyByZXNvbHZlZElEQlN0b3JhZ2VQYXRoKCk7Cisg
ICAgU3RyaW5nIHJlc29sdmVkUGF0aChXZWJzaXRlRGF0YVR5cGUpOwogICAgIGJvb2wgaXNBY3Rp
dmUoKTsKICAgICBib29sIGlzRW1wdHkoKTsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiBmZXRjaERhdGFUeXBlc0luTGlzdChPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA4MjU3MTIxMjlmYzI0MTg1
OTFmMTViZDdkOTlmYWI1MWI0YmNmNGExLi43MTJlNjdiYjM5MDA3ZjBhYjhhMzcxOGJlMzAxYjA0
MmJjYzRjNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAg
LTk2Miw2ICs5NjIsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dl
YktpdDo6V2ViR1BVOjpWZXJ0ZXhBdHRyaWJ1dGUnOiBbJyJXZWJHUFVWZXJ0ZXhBdHRyaWJ1dGUu
aCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViR1BVOjpWZXJ0ZXhCdWZmZXJMYXlvdXQnOiBbJyJX
ZWJHUFVWZXJ0ZXhCdWZmZXJMYXlvdXQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViR1BVOjpW
ZXJ0ZXhTdGF0ZSc6IFsnIldlYkdQVVZlcnRleFN0YXRlLmgiJ10sCisgICAgICAgICdXZWJLaXQ6
OldlYnNpdGVEYXRhVHlwZSc6IFsnIldlYnNpdGVEYXRhVHlwZS5oIiddLAogICAgICAgICAnc3Ry
dWN0IFdlYkNvcmU6OkNvb2tpZSc6IFsnPFdlYkNvcmUvQ29va2llLmg+J10sCiAgICAgICAgICdz
dHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQnOiBbJzxXZWJDb3JlL0VsZW1lbnRDb250ZXh0
Lmg+J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViQ29yZTo6VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRy
aWNzJzogWyc8V2ViQ29yZS9WaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MuaD4nXSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tCmluZGV4IGI3Y2YwNjViYWJjYTFjNDkxYWEzZWEzODQxZDI0Njg2MzFhYWVkYWMuLjFm
MzM2OTUxNDhiZTFmYjAxZGI2MjEyOGY3OTVhOTYxMGFhMjJjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpA
QCAtODQ0LDQgKzg0NCwxNiBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNv
cmQ+IHRvV2Vic2l0ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogICAgICAgICB9KTsK
IH0KIAorLSh2b2lkKV9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOihOU1VSTCAqKW9yaWdpbiB0
b3BPcmlnaW46KE5TVVJMICopdG9wT3JpZ2luIHR5cGU6KE5TU3RyaW5nICopZGF0YVR5cGUgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyAgICBhdXRvIHdlYnNpdGVEYXRhVHlwZSA9IFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGUoZGF0
YVR5cGUpOworICAgIGlmICghd2Vic2l0ZURhdGFUeXBlKQorICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIobmlsKTsKKworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+b3Jp
Z2luRGlyZWN0b3J5Rm9yVGVzdGluZyhvcmlnaW4sIHRvcE9yaWdpbiwgKndlYnNpdGVEYXRhVHlw
ZSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0oYXV0byByZXN1bHQpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXJDb3B5KHJlc3VsdCk7CisgICAgfSk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlUHJpdmF0ZS5oCmluZGV4IDBlOTczNmIxMzI0M2Y4ODk1MzdlYTc2Zjg2ZDZiMDI1NzI0ZjJj
YzQuLjY3MDZmMzI4MzkxN2EyZjkyMGFhZWVlMGEzZDU0NDhlMGYzNzU3Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZVByaXZhdGUuaApAQCAtNTksNyArNTksNiBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNV
SW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0QWxsb3dzVExTRmFsbGJhY2s6KSBCT09MIF9hbGxvd3NUTFNG
YWxsYmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkwgKl9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkiLCBtYWNvcygxMC4x
MSwgMTEuMCksIGlvcyg5LjAsIDE0LjApKTsKIAotCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOihudWxsYWJsZSB2b2lkICheKShXS1dlYnNpdGVEYXRh
U3RvcmUgKiwgTlNTdHJpbmcgKikpY2FsbGJhY2sgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
MyksIGlvcygxMS4wKSk7CiAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zvcjoo
V0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxO
U1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xNCksIGlvcygxMi4wKSk7CiAtICh2b2lkKV9sb2FkZWRTdWJyZXNvdXJjZURvbWFp
bnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CkBAIC0xMTYsNiArMTE1LDcgQEAgdHlwZWRl
ZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMp
IHsKIC0odm9pZClfZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbjooV0tTZWN1
cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
RXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0odm9pZClfZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90
aWZpY2F0aW9uUGVybWlzc2lvbnM6KHZvaWQoXikoTlNTZXQ8V0tTZWN1cml0eU9yaWdpbiAqPiAq
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogLSh2b2lkKV9zY29wZVVSTDooTlNVUkwgKilzY29wZVVSTCBoYXNQ
dXNoU3Vic2NyaXB0aW9uRm9yVGVzdGluZzoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
LSh2b2lkKV9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOihOU1VSTCAqKW9yaWdpbiB0b3BPcmln
aW46KE5TVVJMICopdG9wT3JpZ2luIHR5cGU6KE5TU3RyaW5nICopZGF0YVR5cGUgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBlbmQKIAogTlNf
QVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzODg1ZTRkZjZhYjA4YzJkOWY0
YTdjOWM1M2U4MGYyOGFhNGExOTVkLi5jOWM1Mzk2ZTBjNmUwNjY2ODVmYjVlYzkyMjRmYzQ1MzVk
MmE1YTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTQyNyw2ICs0MjcsMTEgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY28KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpSZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKHNlc3Npb25JRCwgb2xkTmFtZSwgbmV3TmFt
ZSwgZGF0YVR5cGVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OndlYnNpdGVEYXRhT3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCYmIG9yaWdpbiwgVVJMJiYgdG9wT3JpZ2luLCBX
ZWJzaXRlRGF0YVR5cGUgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpXZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRlc3Rpbmco
c2Vzc2lvbklELCBXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUodG9wT3JpZ2luKSwgdHlwZSksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiB7
CiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBlMGFlZTJm
N2IzNmFiZGNlNjM0ODU3NzVjMTU0MmJjNzU0YmQyNTIzLi4zYmFkODJmYmMyZjY1MjA1ZjQ4ZWNj
OTVmM2E0NDgwZDcyNDgyZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTM1LDYgKzEzNSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdp
bnMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBIU1RTQ2FjaGVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVuYW1lT3JpZ2lu
SW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCB3ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQsIFVSTCYmLCBVUkwmJiwgV2Vic2l0ZURhdGFUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFN0cmluZyYpPiYmKTsKIAogICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlRGV0YWlscyhQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
aW5kZXggNTBjOTM1MmI2NjljNTg2OWM3NzQ4YzM5OWJhMjFjOGI3ZDU5MGExMy4uNzFhZTkyNjU0
OGJjYjkxZjVjYTIwYjkwMTYyNzA2MjE3ODM3YTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE5
ODgsNiArMTk4OCwxMSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbmFtZU9yaWdpbkluV2Vi
c2l0ZURhdGEoVVJMJiYgb2xkTmFtZSwgVVJMJiYgbmV3TmFtZSwgTwogICAgIG5ldHdvcmtQcm9j
ZXNzKCkucmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShtX3Nlc3Npb25JRCwgb2xkTmFtZSwgbmV3
TmFtZSwgZGF0YVR5cGVzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6b3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZyhVUkwmJiBvcmlnaW4s
IFVSTCYmIHRvcE9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlIHR5cGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbmV0d29y
a1Byb2Nlc3MoKS53ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcobV9zZXNzaW9u
SUQsIFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0eXBlLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Cit9CisKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhhc0FwcEJvdW5kU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmlu
ZGV4IGIxMjlhYmYzNzc1ZjVjM2E4NzZiZmZkZjMzMmVhYzFjOGU4YzI0YTEuLjZlZjk1NTAxNzI2
NjhmNTY4MTg1OWJiNzUzMDMyNDM1N2Y3ZTlhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTMyMCw2ICsz
MjAsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6TG9jYWxXZWJMb2NrUmVnaXN0cnkmIHdlYkxv
Y2tSZWdpc3RyeSgpIHsgcmV0dXJuIG1fd2ViTG9ja1JlZ2lzdHJ5LmdldCgpOyB9CiAKICAgICB2
b2lkIHJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoVVJMJiYsIFVSTCYmLCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG9y
aWdpbkRpcmVjdG9yeUZvclRlc3RpbmcoVVJMJiYsIFVSTCYmLCBXZWJzaXRlRGF0YVR5cGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogCiAgICAgYm9vbCBuZXR3
b3JrUHJvY2Vzc0hhc0VudGl0bGVtZW50Rm9yVGVzdGluZyhjb25zdCBTdHJpbmcmKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIzZTZhZDRi
MjNkZmU2NTRhOTJlYzNlZDdiZWM3NTcxN2E4Nzk0ZTYuLjQ0NWM1OWNhZGJiYTUyMzQxZWYxNThj
MzQ5ZDViYWVhYmE3OWI4OTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wMy0yMyAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYW4gU1BJIHRvIGdldCB3ZWJz
aXRlIGRhdGEgZGlyZWN0b3J5IGZvciBvcmlnaW4gYW5kIHVzZSBpdCBpbiBBUEkgdGVzdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODI2OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJDaGVja3BvaW50V0FMLm1tOgorICAgICAgICAoVEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJJbmRleFVw
Z3JhZGVUb1YyLm1tOgorICAgICAgICAocnVuTXVsdGlwbGVJbmRpY2VzVGVzdFdpdGhEYXRhYmFz
ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJG
aWxlTmFtZS5tbToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAoVEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5t
bToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlRl
bXBGaWxlU2l6ZS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbToKKyAgICAgICAgKFRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzLm1tOgorICAgICAgICAocnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBh
dGhzKToKKwogMjAyMi0wMy0yMiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+
CiAKICAgICAgICAgW01lcmdlLVF1ZXVlXSBBZGQgVmFsaWRhdGVTcXVhc2hlZApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJDaGVja3BvaW50V0FM
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJDaGVja3BvaW50
V0FMLm1tCmluZGV4IDcxMDA1Mjk4NjFjOTFjMDVlYThkMjYwNDJlNjg2ODYzZmQ0ODNiMDAuLmYy
MzAyZWY2OGVjZGMxZmJjMmIwNWViNjkyODQ2ODA3ZjYwZjhmNDEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCQ2hlY2twb2ludFdBTC5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQkNoZWNrcG9pbnRXQUwu
bW0KQEAgLTI1LDYgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKKyNpbXBvcnQgIkRl
cHJlY2F0ZWRHbG9iYWxWYWx1ZXMuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1NRTGl0ZUZpbGVTeXN0ZW0uaD4KQEAg
LTc0LDM2ICs3NSw0MCBAQCBsb25nIGxvbmcgZmlsZVNpemVBdFBhdGgoTlNTdHJpbmcgKnBhdGgp
CiAKIFRFU1QoSW5kZXhlZERCLCBDaGVja3BvaW50c1dBTEF1dG9tYXRpY2FsbHkpCiB7Ci0gICAg
TlNTdHJpbmcgKmhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZv
ckZpbGVOYW1lKCJ0ZXN0LXdhbC1jaGVja3BvaW50Iik7Ci0gICAgTlNTdHJpbmcgKmJhc2VQYXRo
ID0gW0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvV2Vi
c2l0ZURhdGEvSW5kZXhlZERCL3YxL2ZpbGVfXzAiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBh
dGhdOwotICAgIGJhc2VQYXRoID0gW2Jhc2VQYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpoYXNoXTsKLQotICAgIGlmIChbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZp
bGVFeGlzdHNBdFBhdGg6YmFzZVBhdGhdKSB7Ci0gICAgICAgIEJPT0wgc3VjY2VzcyA9IFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpiYXNlUGF0aCBlcnJv
cjpuaWxdOwotICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKLSAgICB9Ci0KLSAgICBSZXRh
aW5QdHI8SURCQ2hlY2twb2ludFdBTE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhb
W0lEQkNoZWNrcG9pbnRXQUxNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwotICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtbSURCQ2hlY2twb2ludFdBTE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Cisg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxl
ciJdOworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0
YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmll
ZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOwogCiAgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vi
c2l0ZURhdGFTdG9yZSBfdGVybWluYXRlTmV0d29ya1Byb2Nlc3NdOwogCi0gICAgUmV0YWluUHRy
PFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7Ci0KKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAIklEQkNoZWNrcG9pbnRXQUwiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpyZXF1ZXN0XTsKLQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bihbaGFuZGxlciBy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2VQb2ludGVyXSk7Ci0KICAgICBFWFBFQ1RfU1RSRVEoW1tbaGFu
ZGxlciBsYXN0U2NyaXB0TWVzc2FnZV0gYm9keV0gVVRGOFN0cmluZ10sICJTdWNjZXNzIik7CiAK
KyAgICBOU1VSTCAqb3JpZ2luVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmaWxlOi8vIl07
CisgICAgX19ibG9jayBOU1N0cmluZyAqaW5kZXhlZERCRGlyZWN0b3J5U3RyaW5nID0gbmlsOwor
ICAgIFtjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgX29yaWdpbkRpcmVjdG9y
eUZvclRlc3Rpbmc6b3JpZ2luVVJMIHRvcE9yaWdpbjpvcmlnaW5VUkwgdHlwZTpXS1dlYnNpdGVE
YXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICpy
ZXN1bHQpIHsKKyAgICAgICAgaW5kZXhlZERCRGlyZWN0b3J5U3RyaW5nID0gcmVzdWx0OworICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworICAgIE5TVVJMICppbmRleGVkREJEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOmluZGV4ZWREQkRpcmVjdG9yeVN0cmluZyBpc0RpcmVjdG9yeTpZRVNdOworICAgIE5T
U3RyaW5nICpkYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRl
SGFzaEZvckZpbGVOYW1lKCJ0ZXN0LXdhbC1jaGVja3BvaW50Iik7CisgICAgTlNVUkwgKmluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gW2luZGV4ZWREQkRpcmVjdG9yeSBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6ZGF0YWJhc2VIYXNoXTsKKyAgICBOU1VSTCAqaW5kZXhlZERCRGF0YWJh
c2VGaWxlID0gW2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl07CisgICAgTlNVUkwgKmluZGV4ZWREQkRhdGFi
YXNlV0FMID0gW2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzLXdhbCJdOworCiAgICAgLy8gV2UgaW5zZXJ0ZWQg
YSBzaW5nbGUgNSBNQiByb3csIHdoaWNoIGlzIGdyZWF0ZXIgdGhhbiB0aGUgV0FMIGF1dG8tY2hl
Y2twb2ludAogICAgIC8vIHRocmVzaG9sZCBvZiA0TUIsIHNvIHRoZSBXQUwgc2hvdWxkIGJlIG9m
IG1pbmltYWwgc2l6ZSBub3cuCi0gICAgTlNTdHJpbmcgKndhbFBhdGggPSBbYmFzZVBhdGggc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMtd2FsIl07Ci0g
ICAgRVhQRUNUX0xUKGZpbGVTaXplQXRQYXRoKHdhbFBhdGgpLCAxMjggKiAxMDI0KTsKKyAgICBF
WFBFQ1RfTFQoZmlsZVNpemVBdFBhdGgoaW5kZXhlZERCRGF0YWJhc2VXQUwucGF0aCksIDEyOCAq
IDEwMjQpOwogCiAgICAgLy8gU2luY2UgdGhlIHNpbmdsZSA1IE1CIHJvdyB3YXMgY2hlY2twb2lu
dGVkIHRvIHRoZSBtYWluIERCIGZpbGUsIGl0IHNob3VsZCBiZSBhdCBsZWFzdCB0aGF0IGxhcmdl
LgotICAgIE5TU3RyaW5nICpkYlBhdGggPSBbYmFzZVBhdGggc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXTsKLSAgICBFWFBFQ1RfR1QoZmlsZVNpemVB
dFBhdGgoZGJQYXRoKSwgNSAqIDEwMjQgKiAxMDI0KTsKKyAgICBFWFBFQ1RfR1QoZmlsZVNpemVB
dFBhdGgoaW5kZXhlZERCRGF0YWJhc2VGaWxlLnBhdGgpLCA1ICogMTAyNCAqIDEwMjQpOwogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJJbmRl
eFVwZ3JhZGVUb1YyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
REJJbmRleFVwZ3JhZGVUb1YyLm1tCmluZGV4IGI4YjI3NTU5NzVhODg0MGJiZDdlNTU3ZGRkZjdj
MTkxOWZkYjQzZTAuLjFmNzVmMjUyMTA4MjNjNGVmMWZhNTAzMTJhNGFlMzc0M2M3MmI3YjcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCSW5kZXhV
cGdyYWRlVG9WMi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0lEQkluZGV4VXBncmFkZVRvVjIubW0KQEAgLTg1LDI4ICs4NSwyOCBAQCBURVNUKEluZGV4ZWRE
QiwgSW5kZXhVcGdyYWRlVG9WMikKIAogc3RhdGljIHZvaWQgcnVuTXVsdGlwbGVJbmRpY2VzVGVz
dFdpdGhEYXRhYmFzZShOU1N0cmluZyogZGF0YWJhc2VOYW1lKQogewotICAgIFJldGFpblB0cjxJ
REJJbmRleFVwZ3JhZGVUb1YyTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbSURC
SW5kZXhVcGdyYWRlVG9WMk1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWlu
UHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gaGFuZGxlciA9IGFk
b3B0TlMoW1tJREJJbmRleFVwZ3JhZGVUb1YyTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5k
bGVyIl07Ci0KICAgICBbY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlIF90ZXJt
aW5hdGVOZXR3b3JrUHJvY2Vzc107CiAKICAgICBOU1VSTCAqdXJsID0gW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpkYXRhYmFzZU5hbWUgd2l0aEV4dGVuc2lvbjpAInNxbGl0
ZTMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Ci0KICAgICBOU1N0
cmluZyAqaGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmls
ZU5hbWUoImluZGV4LXVwZ3JhZGUtdGVzdCIpOwotICAgIE5TU3RyaW5nICpvcmlnaW5EaXJlY3Rv
cnkgPSBAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL1dl
YnNpdGVEYXRhL0luZGV4ZWREQi92MS9maWxlX18wLyI7Ci0gICAgTlNTdHJpbmcgKmRhdGFiYXNl
RGlyZWN0b3J5ID0gW1tvcmlnaW5EaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6aGFz
aF0gc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF07Ci0gICAgTlNVUkwgKnRhcmdldFVSTCA9
IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGF0YWJhc2VEaXJlY3RvcnldOwotICAgIFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnRhcmdldFVSTCBlcnJvcjpu
aWxdOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5
QXRVUkw6dGFyZ2V0VVJMIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRl
czpuaWwgZXJyb3I6bmlsXTsKLQotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
Y29weUl0ZW1BdFVSTDp1cmwgdG9VUkw6W3RhcmdldFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJdIGVycm9yOm5pbF07Ci0KLSAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKLQorICAgIE5TVVJMICpvcmlnaW5VUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImZpbGU6Ly8iXTsKKyAgICBfX2Jsb2NrIE5TU3RyaW5nICpvcmlnaW5EaXJlY3RvcnlTdHJp
bmcgPSBuaWw7CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSBfb3Jp
Z2luRGlyZWN0b3J5Rm9yVGVzdGluZzpvcmlnaW5VUkwgdG9wT3JpZ2luOm9yaWdpblVSTCB0eXBl
OldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIGNvbXBsZXRpb25IYW5kbGVyOl4o
TlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICBvcmlnaW5EaXJlY3RvcnlTdHJpbmcgPSByZXN1
bHQ7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisgICAgTlNVUkwgKmRhdGFiYXNlRGlyZWN0b3J5ID0gW1tOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6b3JpZ2luRGlyZWN0b3J5U3RyaW5nIGlzRGlyZWN0b3J5OllFU10gVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50Omhhc2hdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmRhdGFiYXNlRGlyZWN0b3J5IGVycm9yOm5pbF07
CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVS
TDpkYXRhYmFzZURpcmVjdG9yeSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJp
YnV0ZXM6bmlsIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBjb3B5SXRlbUF0VVJMOnVybCB0b1VSTDpbZGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXSBlcnJvcjpuaWxdOworCisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJREJJbmRleFVw
Z3JhZGVUb1YyV2l0aE11bHRpcGxlSW5kaWNlcyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnJlcXVlc3RdOwotCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZl
ZFNjcmlwdE1lc3NhZ2UpOwogCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAiR2V0IG9iamVjdDoge1wi
bmFtZVwiOlwiYXBwbGVcIixcImNvbG9yXCI6XCJyZWRcIn0iLCBbbGFzdFNjcmlwdE1lc3NhZ2Ug
Ym9keV0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbmRleGVkREJGaWxlTmFtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KaW5kZXggNDEwMjIyNGU0NTI3NGQzNjM3OWU0YmIw
MDJhMGZlZTg5ODMyZjViYy4uMzljYWVhYzgwNDUyNGQ1ZGRkYjA4YmYxY2E4MzY2N2RiZjk3NzU1
MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJGaWxlTmFtZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1NRTGl0ZUZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQv
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogQGludGVyZmFjZSBJbmRleGVkREJGaWxlTmFtZU1lc3NhZ2VIYW5kbGVyIDogTlNP
YmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CkBAIC01MCw2ICs1MSwxMiBAQCBzdGF0aWMg
dm9pZCBydW5UZXN0KCkKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbSW5kZXhlZERC
RmlsZU5hbWVNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgLy8gV2UgbmVlZCB0byBjcmVhdGUgY3VzdG9tIFdlYnNpdGVEYXRhU3RvcmUgdGhhdCB1c2Vz
IGN1c3RvbSBJbmRleGVkREIgcGF0aHMgdG8gdGVzdCBvbGQgbWlncmF0aW9uIGNvZGUuCisgICAg
YXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmdldCgpLnNob3VsZFVzZUN1c3RvbVN0b3JhZ2VQYXRocyA9IHRydWU7
CisgICAgLy8gQ3VzdG9tIFdlYnNpdGVEYXRhU3RvcmUgbXVzdCBoYXZlIGEgZGlmZmVyZW50IGdl
bmVyYWwgc3RvcmFnZSBkaXJlY3RvcnkgdGhhbiBkZWZhdWx0IFdlYnNpdGVEYXRhU3RvcmUuCisg
ICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuZ2VuZXJhbFN0b3JhZ2VEaXJl
Y3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFw
cGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVEYXRhL0RlZmF1bHQiIHN0cmlu
Z0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllFU107CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFs
bG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmdldCgpXSkuZ2V0KCldOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5k
bGVyIl07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKICAgICAKQEAgLTc5LDcgKzg2LDcgQEAgc3RhdGljIHZvaWQgcnVu
VGVzdCgpCiAgICAgTlNTdHJpbmcgKmV4aXN0aW5nRGF0YmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxp
dGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGV4aXN0aW5nRGF0YWJhc2VOYW1l
KTsKICAgICBOU1N0cmluZyAqY3JlYXRlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZp
bGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY3JlYXRlZERhdGFiYXNlTmFtZSk7CiAg
ICAgTlNTdHJpbmcgKnVudXNlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0
ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY3JlYXRlZERhdGFiYXNlTmFtZSk7Ci0gICAgTlNV
UkwgKmlkYlJvb3RVUkwgPSBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBf
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnldOworICAgIE5TVVJMICppZGJSb290VVJMID0gW3dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV07CiAgICAgTlNVUkwgKm9sZFZlcnNpb25EaXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MCJdOwogICAgIE5TVVJMICpuZXdWZXJzaW9u
RGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
djEiXTsKICAgICBOU1VSTCAqb2xkVmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCA9IFtvbGRWZXJz
aW9uRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogQCJmaWxlX18wIl07
CkBAIC0xNzMsMTUgKzE4MCwyMCBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCRmlsZU5hbWVB
UEkpCiB7CiAgICAgY3JlYXRlRGlyZWN0b3JpZXMoIkFQSSIpOwogICAgIAotICAgIFJldGFpblB0
cjxOU1NldD4gdHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpX
S1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcywgbmlsXSk7Ci0gICAgW1tXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6dHlw
ZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQg
Kj4gKiByZWNvcmRzKSB7CisgICAgYXV0byB0eXBlcyA9IGFkb3B0TlMoW1tOU1NldCBhbGxvY10g
aW5pdFdpdGhPYmplY3RzOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBuaWxd
KTsKKyAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgd2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuc2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBhdGhz
ID0gdHJ1ZTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5nZW5lcmFs
U3RvcmFnZURpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dl
YktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURhdGEvRGVm
YXVsdCIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAg
ICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKworICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6dHlwZXMuZ2V0KCkg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKiByZWNv
cmRzKSB7CiAgICAgICAgIEVYUEVDVF9FUSgzVSwgW3JlY29yZHMgY291bnRdKTsKICAgICAgICAg
cmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKICAgICB9XTsKICAgICByZWFkeVRvQ29udGludWUgPSBm
YWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CiAK
LSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZU
eXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRh
YmFzZXMsIG5pbF0gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgeworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W05TU2V0IHNl
dFdpdGhPYmplY3RzOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBuaWxdIG1v
ZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsK
ICAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKICAgICB9XTsKICAgICByZWFkeVRvQ29u
dGludWUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCmluZGV4IDMxMTYzYTMwOWY3
NDRjY2ViMzBhNmI5MTBlNTVkYmFlMTgzNzZjNjQuLjFmNDc4ZGUwNmMzMzgzNDg0YzQ2Yzg1ZTQy
M2I3MzE1MTM4Mzk3ZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQpAQCAtMzI2LDI1ICsz
MjYsMzQgQEAgVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlRoaXJkUGFydHlEYXRhUmVtb3ZhbCkK
IAogVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlRoaXJkUGFydHlTdG9yYWdlTGF5b3V0KQogewot
ICAgIE5TVVJMICpyZXNvdXJjZVNhbHQgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJl
c291cmNlOkAiZ2VuZXJhbC1zdG9yYWdlLWRpcmVjdG9yeSIgd2l0aEV4dGVuc2lvbjpAInNhbHQi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Ci0gICAgTlNVUkwgKmdl
bmVyYWxTdG9yYWdlRGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJh
cnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0
YS9EZWZhdWx0IiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpZRVNd
OwotICAgIE5TVVJMICp3ZWJraXRPcmlnaW5GaWxlID0gW2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkVBTzY2czhKdkNXTm40RDNZUXV0NXBYZmlH
Rl9VWE5aR3ZNR042YUtJTGcvRUFPNjZzOEp2Q1dObjREM1lRdXQ1cFhmaUdGX1VYTlpHdk1HTjZh
S0lMZy9vcmlnaW4iXTsKLSAgICBOU1VSTCAqd2Via2l0SWZyYW1lT3JpZ2luRmlsZSA9IFtnZW5l
cmFsU3RvcmFnZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJFQU82NnM4
SnZDV05uNEQzWVF1dDVwWGZpR0ZfVVhOWkd2TUdONmFLSUxnL3Z1ZHZiTWxLWGoxbTZSaWJuVnZj
OFBkQWRjWFpzTkU2T05fQWw3eXFPc2cvb3JpZ2luIl07Ci0gICAgTlNVUkwgKmlmcmFtZVdlYktp
dE9yaWdpbkZpbGUgPSBbZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAidnVkdmJNbEtYajFtNlJpYm5WdmM4UGRBZGNYWnNORTZPTl9BbDd5cU9zZy9F
QU82NnM4SnZDV05uNEQzWVF1dDVwWGZpR0ZfVVhOWkd2TUdONmFLSUxnL29yaWdpbiJdOwotICAg
IE5TVVJMICppZGJEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFy
eS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVEYXRh
L0luZGV4ZWREQiIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVT
XTsKLSAgICBOU1N0cmluZyAqaGFzaGVkRGF0YWJhc2VOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmls
ZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZSgiSW5kZXhlZERCVGhpcmRQYXJ0eUZyYW1l
SGFzQWNjZXNzIik7Ci0gICAgTlNVUkwgKndlYmtpdElmcmFtZURhdGFiYXNlRmlsZSA9IFtOU1VS
TCBmaWxlVVJMV2l0aFBhdGg6W05TU3RyaW5nIHBhdGhXaXRoQ29tcG9uZW50czpAW2lkYkRpcmVj
dG9yeS5wYXRoLCBAInYxL2h0dHBfd2Via2l0Lm9yZ18wL2lmcmFtZV9fMC8iLCBoYXNoZWREYXRh
YmFzZU5hbWUsIEAiSW5kZXhlZERCLnNxbGl0ZTMiXV1dOworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
TlNTdHJpbmcgKmRhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1
dGVIYXNoRm9yRmlsZU5hbWUoIkluZGV4ZWREQlRoaXJkUGFydHlGcmFtZUhhc0FjY2VzcyIpOwor
ICAgIE5TVVJMICp3ZWJraXRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJr
aXQub3JnIl07CisgICAgTlNVUkwgKmlmcmFtZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aWZyYW1lOi8vIl07CisgICAgX19ibG9jayBOU1N0cmluZyAqZGlyZWN0b3J5U3RyaW5nID0gbmls
OworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0
YVN0b3JlIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOmlmcmFtZVVSTCB0b3BPcmlnaW46d2Vi
a2l0VVJMIHR5cGU6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgY29tcGxldGlv
bkhhbmRsZXI6XihOU1N0cmluZyAqcmVzdWx0KSB7CisgICAgICAgIGRpcmVjdG9yeVN0cmluZyA9
IHJlc3VsdDsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBOU1VSTCAqd2Via2l0SWZyYW1lUm9vdERpcmVjdG9y
eSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGlyZWN0b3J5U3RyaW5nIGlzRGlyZWN0b3J5OllF
U107CisgICAgTlNVUkwgKndlYmtpdElmcmFtZURhdGFiYXNlRGlyZWN0b3J5ID0gW3dlYmtpdElm
cmFtZVJvb3REaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRhdGFiYXNlSGFz
aF07CisgICAgTlNVUkwgKndlYmtpdElmcmFtZURhdGFiYXNlRmlsZSA9IFt3ZWJraXRJZnJhbWVE
YXRhYmFzZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIu
c3FsaXRlMyJdOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFtjb25maWd1cmF0aW9uLmdldCgp
LndlYnNpdGVEYXRhU3RvcmUgX29yaWdpbkRpcmVjdG9yeUZvclRlc3Rpbmc6d2Via2l0VVJMIHRv
cE9yaWdpbjppZnJhbWVVUkwgdHlwZTpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNl
cyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICpyZXN1bHQpIHsKKyAgICAgICAgZGlyZWN0
b3J5U3RyaW5nID0gcmVzdWx0OworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIE5TVVJMICppZnJhbWVXZWJLaXRS
b290RGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkaXJlY3RvcnlTdHJpbmcgaXNE
aXJlY3Rvcnk6WUVTXTsKKwogICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOwotICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRV
Ukw6Z2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgZXJyb3I6bmlsXTsKLSAgICBbZmlsZU1hbmFnZXIg
Y3JlYXRlRGlyZWN0b3J5QXRVUkw6Z2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnkgd2l0aEludGVybWVk
aWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwotICAgIFtmaWxl
TWFuYWdlciBjb3B5SXRlbUF0VVJMOnJlc291cmNlU2FsdCB0b1VSTDpbZ2VuZXJhbFN0b3JhZ2VE
aXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAic2FsdCJdIGVycm9yOm5pbF07
Ci0gICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDppZGJEaXJlY3RvcnkgZXJyb3I6bmls
XTsKKyAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOndlYmtpdElmcmFtZVJvb3REaXJl
Y3RvcnkgZXJyb3I6bmlsXTsKKyAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOndlYmtp
dFJvb3REaXJlY3RvcnkgZXJyb3I6bmlsXTsKKyAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0
VVJMOmlmcmFtZVdlYktpdFJvb3REaXJlY3RvcnkgZXJyb3I6bmlsXTsKIAotICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7Ci0gICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSA9IGlkYkRpcmVjdG9yeTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQo
KS5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeSA9IGdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5OwotICAg
IFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURh
dGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpXTsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtb
SW5kZXhlZERCTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRp
b24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVy
LmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwogICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFk
b3B0TlMoW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwpAQCAtMzYwLDEwICsz
NjksOSBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eVN0b3JhZ2VMYXlvdXQp
CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOwogICAgIGxvYWRUaGlyZFBhcnR5UGFnZUluV2ViVmlldyh3ZWJWaWV3Lmdl
dCgpLCBAImRhdGFiYXNlIGlzIGNyZWF0ZWQgLSBwdXQgaXRlbSBzdWNjZXNzIik7Ci0gICAgRVhQ
RUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6d2Via2l0T3JpZ2luRmlsZS5w
YXRoXSk7Ci0gICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6d2Vi
a2l0SWZyYW1lT3JpZ2luRmlsZS5wYXRoXSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFtmaWxlTWFuYWdl
ciBmaWxlRXhpc3RzQXRQYXRoOmlmcmFtZVdlYktpdE9yaWdpbkZpbGUucGF0aF0pOworICAgIEVY
UEVDVF9UUlVFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOndlYmtpdElmcmFtZVJvb3RE
aXJlY3RvcnkucGF0aF0pOwogICAgIEVYUEVDVF9UUlVFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3Rz
QXRQYXRoOndlYmtpdElmcmFtZURhdGFiYXNlRmlsZS5wYXRoXSk7CisgICAgRVhQRUNUX0ZBTFNF
KFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmlmcmFtZVdlYktpdFJvb3REaXJlY3Rvcnku
cGF0aF0pOwogfQogCiBURVNUKEluZGV4ZWREQiwgTWlncmF0ZVRoaXJkUGFydHlEYXRhVG9HZW5l
cmFsU3RvcmFnZURpcmVjdG9yeSkKQEAgLTU4NCwxMSArNTkyLDM1IEBAIFRFU1QoSW5kZXhlZERC
LCBJbmRleGVkREJHZXREYXRhYmFzZXMpCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAibWFpbiBmcmFt
ZSBkYXRhYmFzZXM6IFtdIiwgW2dldE5leHRNZXNzYWdlKCkgYm9keV0pOwogCiAgICAgLy8gR2V0
dGluZyBkYXRhYmFzZXMgc2hvdWxkIG5vdCBjcmVhdGUgZmlsZXMgb24gZGlzay4KLSAgICBOU1VS
TCAqaWRiRGlyZWN0b3J5VVJMID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9y
ZV0gX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5XTsKLSAgICBOU1VSTCAqdmVyc2lvbkRpcmVj
dG9yeVVSTCA9IFtpZGJEaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
djEiXTsKLSAgICBOU1VSTCAqYXBwbGVEaXJlY3RvcnlVUkwgPSBbdmVyc2lvbkRpcmVjdG9yeVVS
TCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6IEAiaHR0cF9hcHBsZS5jb21fMCJdOwotICAg
IE5TVVJMICphcHBsZVdlYmtpdERpcmVjdG9yeVVSTCA9IFthcHBsZURpcmVjdG9yeVVSTCBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6IEAid2Via2l0X18wIl07Ci0gICAgTlNVUkwgKndlYmtp
dERpcmVjdG9yeVVSTCA9IFt2ZXJzaW9uRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDogQCJ3ZWJraXRfXzAiXTsKKyAgICBOU1VSTCAqYXBwbGVVUkwgPSBbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImh0dHA6Ly9hcHBsZS5jb20iXTsKKyAgICBOU1VSTCAqd2Via2l0VVJMID0g
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6Ly8iXTsKKyAgICBfX2Jsb2NrIE5TU3RyaW5n
ICphcHBsZURpcmVjdG9yeVN0cmluZyA9IG5pbDsKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxz
ZTsKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBfb3JpZ2luRGly
ZWN0b3J5Rm9yVGVzdGluZzphcHBsZVVSTCB0b3BPcmlnaW46YXBwbGVVUkwgdHlwZTpXS1dlYnNp
dGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5n
ICpyZXN1bHQpIHsKKyAgICAgICAgYXBwbGVEaXJlY3RvcnlTdHJpbmcgPSByZXN1bHQ7CisgICAg
ICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworICAgIE5TVVJMICphcHBsZURpcmVjdG9yeVVS
TCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6YXBwbGVEaXJlY3RvcnlTdHJpbmcgaXNEaXJlY3Rv
cnk6WUVTXTsKKworICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOworICAgIF9fYmxvY2sgTlNT
dHJpbmcgKndlYmtpdERpcmVjdG9yeVN0cmluZyA9IG5pbDsKKyAgICBbW1dLV2Vic2l0ZURhdGFT
dG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBfb3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZzp3ZWJraXRV
UkwgdG9wT3JpZ2luOndlYmtpdFVSTCB0eXBlOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0
YWJhc2VzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICB3
ZWJraXREaXJlY3RvcnlTdHJpbmcgPSByZXN1bHQ7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29u
dGludWUpOworICAgIE5TVVJMICp3ZWJraXREaXJlY3RvcnlVUkwgPSBbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOndlYmtpdERpcmVjdG9yeVN0cmluZyBpc0RpcmVjdG9yeTpZRVNdOworCisgICAgX19i
bG9jayBOU1N0cmluZyAqYXBwbGVXZWJraXREaXJlY3RvcnlTdHJpbmcgPSBuaWw7CisgICAgcmVh
ZHlUb0NvbnRpbnVlID0gZmFsc2U7CisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERh
dGFTdG9yZV0gX29yaWdpbkRpcmVjdG9yeUZvclRlc3Rpbmc6d2Via2l0VVJMIHRvcE9yaWdpbjph
cHBsZVVSTCB0eXBlOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIGNvbXBsZXRp
b25IYW5kbGVyOl4oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICBhcHBsZVdlYmtpdERpcmVj
dG9yeVN0cmluZyA9IHJlc3VsdDsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7Cisg
ICAgTlNVUkwgKmFwcGxlV2Via2l0RGlyZWN0b3J5VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDphcHBsZVdlYmtpdERpcmVjdG9yeVN0cmluZyBpc0RpcmVjdG9yeTpZRVNdOworCiAgICAgYXV0
byBkZWZhdWx0RmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CiAg
ICAgRVhQRUNUX1RSVUUoW2RlZmF1bHRGaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmFwcGxl
RGlyZWN0b3J5VVJMLnBhdGhdKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlZmF1bHRGaWxlTWFuYWdl
ciBmaWxlRXhpc3RzQXRQYXRoOmFwcGxlV2Via2l0RGlyZWN0b3J5VVJMLnBhdGhdKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCVGVt
cEZpbGVTaXplLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJUZW1wRmlsZVNpemUubW0KaW5kZXggY2JhZDcyNDRlZTEzNThkNjg2MGIzMmFjMDIyZjNl
YTZhZWIzMTEzYy4uZDY3NjRlYzIyNzQ0ZWY0ZDAwOTdiNmEzMDRkZWY2NjM1OTUwYmQ3YSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJU
ZW1wRmlsZVNpemUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbmRleGVkREJUZW1wRmlsZVNpemUubW0KQEAgLTU5LDE4ICs1OSwyMCBAQCBURVNUKEluZGV4
ZWREQiwgSW5kZXhlZERCVGVtcEZpbGVTaXplKQogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25m
aWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6
aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKIAorICAgIE5TVVJMICpvcmlnaW5V
UkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZpbGU6Ly8iXTsKKyAgICBfX2Jsb2NrIE5TU3Ry
aW5nICpkYXRhYmFzZVJvb3REaXJlY3RvcnlTdHJpbmcgPSBuaWw7CisgICAgcmVhZHlUb0NvbnRp
bnVlID0gZmFsc2U7CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSBf
b3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZzpvcmlnaW5VUkwgdG9wT3JpZ2luOm9yaWdpblVSTCB0
eXBlOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICBkYXRhYmFzZVJvb3REaXJlY3RvcnlTdHJp
bmcgPSByZXN1bHQ7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworICAgIE5TVVJM
ICpkYXRhYmFzZVJvb3REaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmRhdGFiYXNl
Um9vdERpcmVjdG9yeVN0cmluZyBpc0RpcmVjdG9yeTpZRVNdOwogICAgIE5TU3RyaW5nICpoYXNo
ID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZSgiSW5k
ZXhlZERCVGVtcEZpbGVTaXplIik7Ci0gICAgTlNTdHJpbmcgKmRhdGFiYXNlUm9vdERpcmVjdG9y
eSA9IFtAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1
c3RvbVdlYnNpdGVEYXRhL0luZGV4ZWREQi8iIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhd
OwotICAgIE5TU3RyaW5nICpkYXRhYmFzZURpcmVjdG9yeSA9IFtbW2RhdGFiYXNlUm9vdERpcmVj
dG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJdIHN0cmluZ0J5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAImZpbGVfXzAiXSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6aGFzaF07Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBpZGJQYXRoID0gW05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpkYXRhYmFzZVJvb3REaXJlY3RvcnkgaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICBSZXRh
aW5QdHI8TlNVUkw+IHdhbEZpbGVQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbZGF0YWJh
c2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNx
bGl0ZTMtd2FsIl0gaXNEaXJlY3Rvcnk6Tk9dOwotCi0gICAgYXV0byB3ZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwotICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgp
Ll9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGlkYlBhdGguZ2V0KCk7CisgICAgTlNVUkwg
KmRhdGFiYXNlRGlyZWN0b3J5ID0gW2RhdGFiYXNlUm9vdERpcmVjdG9yeSBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6aGFzaF07CisgICAgTlNVUkwgKndhbEZpbGVQYXRoID0gW2RhdGFiYXNl
RGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUz
LXdhbCJdOwogCi0gICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gYWRv
cHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpOwogICAgIGF1dG8gdHlw
ZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpXS1dlYnNpdGVEYXRh
VHlwZUluZGV4ZWREQkRhdGFiYXNlcywgbmlsXSk7Ci0KICAgICBbY29uZmlndXJhdGlvbi5nZXQo
KS53ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzLmdldCgpIG1vZGlmaWVk
U2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAg
ICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKICAgICB9XTsKQEAgLTk0LDggKzk2LDggQEAgVEVT
VChJbmRleGVkREIsIEluZGV4ZWREQlRlbXBGaWxlU2l6ZSkKICAgICB3ZWJWaWV3ID0gbmlsOwog
ICAgIFtjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgX3Rlcm1pbmF0ZU5ldHdv
cmtQcm9jZXNzXTsKIAotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDp3YWxGaWxlUGF0aC5nZXQoKS5wYXRoXSk7Ci0gICAgUmV0
YWluUHRyPE5TRGljdGlvbmFyeT4gZmlsZUF0dHJpYnV0ZXMgPSBbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIGF0dHJpYnV0ZXNPZkl0ZW1BdFBhdGg6d2FsRmlsZVBhdGguZ2V0KCkucGF0
aCBlcnJvcjpuaWxdOworICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDp3YWxGaWxlUGF0aC5wYXRoXSk7CisgICAgYXV0byBmaWxl
QXR0cmlidXRlcyA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gYXR0cmlidXRlc09m
SXRlbUF0UGF0aDp3YWxGaWxlUGF0aC5wYXRoIGVycm9yOm5pbF07CiAgICAgTlNOdW1iZXIgKmZp
bGVTaXplQmVmb3JlID0gW2ZpbGVBdHRyaWJ1dGVzIG9iamVjdEZvcktleTpOU0ZpbGVTaXplXTsK
IAogICAgIC8vIE9wZW4gdGhlIHNhbWUgZGF0YWJhc2UgYWdhaW4uCkBAIC0xMDcsNyArMTA5LDcg
QEAgVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlRlbXBGaWxlU2l6ZSkKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBzdHJpbmczID0gKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOwog
Ci0gICAgZmlsZUF0dHJpYnV0ZXMgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGF0
dHJpYnV0ZXNPZkl0ZW1BdFBhdGg6d2FsRmlsZVBhdGguZ2V0KCkucGF0aCBlcnJvcjpuaWxdOwor
ICAgIGZpbGVBdHRyaWJ1dGVzID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRy
aWJ1dGVzT2ZJdGVtQXRQYXRoOndhbEZpbGVQYXRoLnBhdGggZXJyb3I6bmlsXTsKICAgICBOU051
bWJlciAqZmlsZVNpemVBZnRlciA9IFtmaWxlQXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNGaWxl
U2l6ZV07CiAgICAgRVhQRUNUX0dUKFtmaWxlU2l6ZUJlZm9yZSBsb25nTG9uZ1ZhbHVlXSwgW2Zp
bGVTaXplQWZ0ZXIgbG9uZ0xvbmdWYWx1ZV0pOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0KaW5k
ZXggOGU4NWE0MGE1ZTgzYmEwMzQzMjFlN2U3OTY5ZDgzNTVlMzJjMjQ2NS4uZDA4ZGMyN2M1ODQ5
NzVjZDA4ODQwMTcxMGM2MDljOTdjN2U2MmMyZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQpA
QCAtNTIsMTIgKzUyLDEwIEBACiAKIFRFU1QoSW5kZXhlZERCLCBTdG9yZUJsb2JUaGVuUmVtb3Zl
RGF0YSkKIHsKLSAgICBSZXRhaW5QdHI8U3RvcmVCbG9iTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIg
PSBhZG9wdE5TKFtbU3RvcmVCbG9iTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKLSAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVy
ID0gYWRvcHROUyhbW1N0b3JlQmxvYk1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJd
OwotCi0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0KKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIlN0b3JlQmxvYlRvQmVEZWxldGVkIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07
CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAKQEAgLTY1LDE0ICs2MywyMiBA
QCBURVNUKEluZGV4ZWREQiwgU3RvcmVCbG9iVGhlblJlbW92ZURhdGEpCiAgICAgRVhQRUNUX1dL
X1NUUkVRKEAiU3VjY2VzcyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7
CiAKICAgICBOU1N0cmluZyAqaGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1
dGVIYXNoRm9yRmlsZU5hbWUoIlN0b3JlQmxvYlRvQmVEZWxldGVkIik7Ci0gICAgTlNTdHJpbmcg
Km9yaWdpbkRpcmVjdG9yeSA9IEAifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRl
c3RXZWJLaXRBUEkvV2Vic2l0ZURhdGEvSW5kZXhlZERCL3YxL2ZpbGVfXzAvIjsKLSAgICBOU1N0
cmluZyAqZGF0YWJhc2VEaXJlY3RvcnkgPSBbW29yaWdpbkRpcmVjdG9yeSBzdHJpbmdCeUFwcGVu
ZGluZ1N0cmluZzpoYXNoXSBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXTsKLSAgICBOU1N0
cmluZyAqYmxvYkZpbGVQYXRoID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIjEuYmxvYiJdOwotICAgIE5TU3RyaW5nICpkYXRhYmFzZUZpbGVQYXRo
ID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIklu
ZGV4ZWREQi5zcWxpdGUzIl07CisgICAgTlNVUkwgKm9yaWdpblVSTCA9IFtOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiZmlsZTovLyJdOworICAgIF9fYmxvY2sgTlNTdHJpbmcgKm9yaWdpbkRpcmVjdG9y
eVN0cmluZyA9IG5pbDsKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKyAgICBbY29uZmln
dXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5n
Om9yaWdpblVSTCB0b3BPcmlnaW46b3JpZ2luVVJMIHR5cGU6V0tXZWJzaXRlRGF0YVR5cGVJbmRl
eGVkREJEYXRhYmFzZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqcmVzdWx0KSB7Cisg
ICAgICAgIG9yaWdpbkRpcmVjdG9yeVN0cmluZyA9IHJlc3VsdDsKKyAgICAgICAgcmVhZHlUb0Nv
bnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJl
YWR5VG9Db250aW51ZSk7CisgICAgTlNVUkwgKm9yaWdpbkRpcmVjdG9yeSA9IFtOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6b3JpZ2luRGlyZWN0b3J5U3RyaW5nIGlzRGlyZWN0b3J5OllFU107CisgICAg
TlNVUkwgKmRhdGFiYXNlRGlyZWN0b3J5ID0gW29yaWdpbkRpcmVjdG9yeSBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6aGFzaF07CisgICAgTlNVUkwgKmJsb2JGaWxlVVJMID0gW2RhdGFiYXNl
RGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIjEuYmxvYiJdOworICAgIE5T
VVJMICpkYXRhYmFzZUZpbGVVUkwgPSBbZGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXTsKIAogICAgIC8vIFRoZSBkYXRhYmFz
ZSBmaWxlIGFuZCBibG9iIGZpbGUgc2hvdWxkIGRlZmluaXRlbHkgYmUgdGhlcmUgcmlnaHQgbm93
LgotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4
aXN0c0F0UGF0aDpibG9iRmlsZVBhdGhdKTsKLSAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGF0YWJhc2VGaWxlUGF0aF0pOwor
ICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0
c0F0UGF0aDpibG9iRmlsZVVSTC5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRhdGFiYXNlRmlsZVVSTC5wYXRo
XSk7CiAKICAgICAvLyBUbyBtYWtlIHN1cmUgdGhhdCB0aGUgLXdhbCBhbmQgLXNobSBmaWxlcyBm
b3IgYSBkYXRhYmFzZSBhcmUgZGVsZXRlZCBldmVuIGlmIHRoZSBzcWxpdGUzIGZpbGUgaXMgYWxy
ZWFkeSBtaXNzaW5nLAogICAgIC8vIHdlIG5lZWQgdG86CkBAIC04MCw0NCArODYsNDQgQEAgVEVT
VChJbmRleGVkREIsIFN0b3JlQmxvYlRoZW5SZW1vdmVEYXRhKQogICAgIC8vIDIgLSBNb3ZlIC13
YWwgYW5kIC1zaG0gZmlsZXMgaW50byB0aGF0IGRpcmVjdG9yeQogICAgIC8vIDMgLSBNYWtlIHN1
cmUgdGhlIGVudGlyZSBkaXJlY3RvcnkgaXMgZGVsZXRlZAogICAgIE5TU3RyaW5nICpmYWtlSGFz
aCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoIkZh
a2VEYXRhYmFzZVBhdGgiKTsKLSAgICBOU1N0cmluZyAqZmFrZURhdGFiYXNlRGlyZWN0b3J5ID0g
W1tvcmlnaW5EaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6ZmFrZUhhc2hdIHN0cmlu
Z0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdOwotICAgIE5TU3RyaW5nICpmYWtlU2htUGF0aCA9IFtm
YWtlRGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5k
ZXhlZERCLnNxbGl0ZTMtd2FsIl07Ci0gICAgTlNTdHJpbmcgKmZha2VXYWxQYXRoID0gW2Zha2VE
YXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVk
REIuc3FsaXRlMy1zaG0iXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNy
ZWF0ZURpcmVjdG9yeUF0UGF0aDpmYWtlRGF0YWJhc2VEaXJlY3Rvcnkgd2l0aEludGVybWVkaWF0
ZURpcmVjdG9yaWVzOk5PIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0UGF0aDpkYXRhYmFzZUZpbGVQYXRoIHRv
UGF0aDpmYWtlU2htUGF0aCBlcnJvcjpuaWxdOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gY29weUl0ZW1BdFBhdGg6ZGF0YWJhc2VGaWxlUGF0aCB0b1BhdGg6ZmFrZVdhbFBh
dGggZXJyb3I6bmlsXTsKKyAgICBOU1VSTCAqZmFrZURhdGFiYXNlRGlyZWN0b3J5ID0gW29yaWdp
bkRpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZmFrZUhhc2hdOworICAgIE5T
VVJMICpmYWtlU2htVVJMID0gW2Zha2VEYXRhYmFzZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMy13YWwiXTsKKyAgICBOU1VSTCAqZmFrZVdh
bFVSTCA9IFtmYWtlRGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiSW5kZXhlZERCLnNxbGl0ZTMtc2htIl07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpmYWtlRGF0YWJhc2VEaXJlY3Rvcnkgd2l0aElu
dGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOworICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDpibG9iRmlsZVVS
TCB0b1VSTDpmYWtlU2htVVJMIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOmRhdGFiYXNlRmlsZVVSTCB0b1VSTDpmYWtlV2FsVVJM
IGVycm9yOm5pbF07CiAKICAgICAvLyBNYWtlIHNvbWUgb3RoZXIgLmJsb2IgZmlsZXMgaW4gdGhl
IGRhdGFiYXNlIGRpcmVjdG9yeSB0byBsYXRlciB2YWxpZGF0ZSBhbGwgYmxvYiBmaWxlcyBpbiB0
aGUgZGlyZWN0b3J5IGFyZSBkZWxldGVkLgotICAgIE5TU3RyaW5nICpvdGhlckJsb2IxID0gW2Rh
dGFiYXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIjcxODIuYmxv
YiJdOwotICAgIE5TU3RyaW5nICpvdGhlckJsb2IyID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0cmlu
Z0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIjFhLmJsb2IiXTsKLSAgICBOU1N0cmluZyAqb3Ro
ZXJCbG9iMyA9IFtkYXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJhMS5ibG9iIl07Ci0gICAgTlNTdHJpbmcgKm90aGVyQmxvYjQgPSBbZGF0YWJhc2VEaXJl
Y3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiLmJsb2IiXTsKLSAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmJsb2JGaWxlUGF0aCB0
b1BhdGg6b3RoZXJCbG9iMSBlcnJvcjpuaWxdOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gY29weUl0ZW1BdFBhdGg6YmxvYkZpbGVQYXRoIHRvUGF0aDpvdGhlckJsb2IyIGVy
cm9yOm5pbF07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0
UGF0aDpibG9iRmlsZVBhdGggdG9QYXRoOm90aGVyQmxvYjMgZXJyb3I6bmlsXTsKLSAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmJsb2JGaWxlUGF0aCB0
b1BhdGg6b3RoZXJCbG9iNCBlcnJvcjpuaWxdOworICAgIE5TVVJMICpvdGhlckJsb2IxID0gW2Rh
dGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIjcxODIuYmxvYiJd
OworICAgIE5TVVJMICpvdGhlckJsb2IyID0gW2RhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIjFhLmJsb2IiXTsKKyAgICBOU1VSTCAqb3RoZXJCbG9iMyA9IFtk
YXRhYmFzZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJhMS5ibG9iIl07
CisgICAgTlNVUkwgKm90aGVyQmxvYjQgPSBbZGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiLmJsb2IiXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGNvcHlJdGVtQXRVUkw6YmxvYkZpbGVVUkwgdG9VUkw6b3RoZXJCbG9iMSBlcnJvcjpu
aWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDpi
bG9iRmlsZVVSTCB0b1VSTDpvdGhlckJsb2IyIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOmJsb2JGaWxlVVJMIHRvVVJMOm90aGVy
QmxvYjMgZXJyb3I6bmlsXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNv
cHlJdGVtQXRVUkw6YmxvYkZpbGVVUkwgdG9VUkw6b3RoZXJCbG9iNCBlcnJvcjpuaWxdOwogCiAg
ICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CiAgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVm
YXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxX
ZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBs
ZXRpb25IYW5kbGVyOl4oKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6YmxvYkZpbGVQYXRoXSk7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNB
dFBhdGg6ZGF0YWJhc2VGaWxlUGF0aF0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmJsb2JGaWxlVVJMLnBhdGhd
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpkYXRhYmFzZUZpbGVVUkwucGF0aF0pOwogCiAgICAgICAgIC8vIE1h
a2Ugc3VyZSBhbGwgZmFrZSBibG9iIGZpbGUgYXJlIGdvbmUuCi0gICAgICAgIEVYUEVDVF9GQUxT
RShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJC
bG9iMV0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjEucGF0aF0pOwogCi0gICAgICAgIEVYUEVD
VF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6
b3RoZXJCbG9iMl0pOwotICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjNdKTsKLSAgICAgICAgRVhQRUNU
X0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpv
dGhlckJsb2I0XSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iMi5wYXRoXSk7CisgICAgICAgIEVY
UEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6b3RoZXJCbG9iMy5wYXRoXSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iNC5wYXRoXSk7CiAK
ICAgICAgICAgLy8gTWFrZSBzdXJlIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGUgZmFrZSBkYXRh
YmFzZSBpcyBnb25lLgotICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZha2VTaG1QYXRoXSk7Ci0gICAgICAgIEVYUEVD
VF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6
ZmFrZVdhbFBhdGhdKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmYWtlRGF0YWJhc2VEaXJlY3RvcnldKTsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4
aXN0c0F0UGF0aDpmYWtlU2htVVJMLnBhdGhdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmYWtlV2FsVVJMLnBh
dGhdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpmYWtlRGF0YWJhc2VEaXJlY3RvcnkucGF0aF0pOwogCiAgICAg
ICAgIC8vIE5vdyBkZWxldGUgdGhlbSBzbyB3ZSdyZSBub3QgbGVhdmluZyBmaWxlcyBhcm91bmQu
Ci0gICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0
aDpvdGhlckJsb2IyIGVycm9yOm5pbF07Ci0gICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpvdGhlckJsb2IzIGVycm9yOm5pbF07Ci0gICAgICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpvdGhlckJs
b2I0IGVycm9yOm5pbF07CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
cmVtb3ZlSXRlbUF0VVJMOm90aGVyQmxvYjIgZXJyb3I6bmlsXTsKKyAgICAgICAgW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6b3RoZXJCbG9iMyBlcnJvcjpu
aWxdOworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1B
dFVSTDpvdGhlckJsb2I0IGVycm9yOm5pbF07CiAKICAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0g
dHJ1ZTsKICAgICB9XTsKQEAgLTEzNiwyNCArMTQyLDMyIEBAIFRFU1QoSW5kZXhlZERCLCBTdG9y
ZUJsb2JUaGVuRGVsZXRlRGF0YWJhc2UpCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAiU3VjY2VzcyIs
IChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAKICAgICBOU1N0cmluZyAq
aGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUo
IlN0b3JlQmxvYlRvQmVEZWxldGVkIik7Ci0gICAgTlNTdHJpbmcgKm9yaWdpbkRpcmVjdG9yeSA9
IEAifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvV2Vic2l0
ZURhdGEvSW5kZXhlZERCL3YxL2ZpbGVfXzAvIjsKLSAgICBOU1N0cmluZyAqZGF0YWJhc2VEaXJl
Y3RvcnkgPSBbW29yaWdpbkRpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpoYXNoXSBz
dHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXTsKLSAgICBOU1N0cmluZyAqYmxvYkZpbGVQYXRo
ID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIjEu
YmxvYiJdOwotICAgIE5TU3RyaW5nICpkYXRhYmFzZUZpbGVQYXRoID0gW2RhdGFiYXNlRGlyZWN0
b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl07
CisgICAgTlNVUkwgKm9yaWdpblVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZmlsZTovLyJd
OworICAgIF9fYmxvY2sgTlNTdHJpbmcgKm9yaWdpbkRpcmVjdG9yeVN0cmluZyA9IG5pbDsKKyAg
ICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS53ZWJz
aXRlRGF0YVN0b3JlIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOm9yaWdpblVSTCB0b3BPcmln
aW46b3JpZ2luVVJMIHR5cGU6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgY29t
cGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqcmVzdWx0KSB7CisgICAgICAgIG9yaWdpbkRpcmVj
dG9yeVN0cmluZyA9IHJlc3VsdDsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7Cisg
ICAgTlNVUkwgKm9yaWdpbkRpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6b3JpZ2lu
RGlyZWN0b3J5U3RyaW5nIGlzRGlyZWN0b3J5OllFU107CisgICAgTlNVUkwgKmRhdGFiYXNlRGly
ZWN0b3J5ID0gW29yaWdpbkRpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6aGFz
aF07CisgICAgTlNVUkwgKmJsb2JGaWxlVVJMID0gW2RhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIjEuYmxvYiJdOworICAgIE5TVVJMICpkYXRhYmFzZUZpbGVV
UkwgPSBbZGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5k
ZXhlZERCLnNxbGl0ZTMiXTsKIAotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVBhdGhdKTsKLSAgICBFWFBFQ1Rf
VFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGF0
YWJhc2VGaWxlUGF0aF0pOworICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVVSTC5wYXRoXSk7CisgICAgRVhQRUNU
X1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRh
dGFiYXNlRmlsZVVSTC5wYXRoXSk7CiAKICAgICAvLyBBZGQgYSAuYmxvYiBmaWxlIHRoYXQgaXMg
bm90IGNyZWF0ZWQgYnkgSW5kZXhlZERCIEFQSS4KLSAgICBOU1N0cmluZyAqYW5vdGhlckJsb2JG
aWxlUGF0aCA9IFtkYXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCI3MTgyLmJsb2IiXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNv
cHlJdGVtQXRQYXRoOmJsb2JGaWxlUGF0aCB0b1BhdGg6YW5vdGhlckJsb2JGaWxlUGF0aCBlcnJv
cjpuaWxdOworICAgIE5TVVJMICphbm90aGVyQmxvYkZpbGVVUkwgPSBbZGF0YWJhc2VEaXJlY3Rv
cnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiNzE4Mi5ibG9iIl07CisgICAgW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0UGF0aDpibG9iRmlsZVVSTC5wYXRo
IHRvUGF0aDphbm90aGVyQmxvYkZpbGVVUkwucGF0aCBlcnJvcjpuaWxdOwogCiAgICAgcmVhZHlU
b0NvbnRpbnVlID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZGVs
ZXRlRGF0YWJhc2UoKCkgPT4geyBzZW5kTWVzc2FnZSgnRGVsZXRlIHN1Y2Nlc3MnKTsgfSkiIGNv
bXBsZXRpb25IYW5kbGVyOm5pbF07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFk
eVRvQ29udGludWUpOwogICAgIEVYUEVDVF9XS19TVFJFUShAIkRlbGV0ZSBzdWNjZXNzIiwgKE5T
U3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKIAotICAgIEVYUEVDVF9GQUxTRShb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6YmxvYkZpbGVQ
YXRoXSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpkYXRhYmFzZUZpbGVQYXRoXSk7Ci0gICAgRVhQRUNUX1RSVUUoW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmFub3RoZXJCbG9i
RmlsZVBhdGhdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBmaWxlRXhpc3RzQXRQYXRoOmJsb2JGaWxlVVJMLnBhdGhdKTsKKyAgICBFWFBFQ1RfRkFM
U0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRhdGFi
YXNlRmlsZVVSTC5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmFub3RoZXJCbG9iRmlsZVVSTC5wYXRoXSk7CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNp
dGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCmluZGV4IDhlNDdhYjk4MGFj
ZGZjNmUxNTM4MDg4YjNlYzc5NzFlZTBiOWM3MzMuLjY2ZjkyNWFjNjRkNjgwZjk5ZWYzZTM2MmVj
YmU1MzIzNmVjZGFjODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1t
CkBAIC03Nyw4ICs3Nyw4IEBAIHN0YXRpYyB2b2lkIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21Q
YXRocyhTaG91bGRFbmFibGVQcm9jZXNzUHJld2FybWluZyBzaG91bGRFCiAgICAgcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmdldCgpLnByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseSA9IHNo
b3VsZEVuYWJsZVByb2Nlc3NQcmV3YXJtaW5nID09IFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3YXJt
aW5nOjpZZXMgPyBZRVMgOiBOTzsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dL
UHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBSZXRhaW5QdHI8V2Vic2l0ZURhdGFTdG9yZUN1c3Rv
bVBhdGhzTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbV2Vic2l0ZURhdGFTdG9y
ZUN1c3RvbVBhdGhzTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHRO
UyhbW1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRoc01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0
SGFuZGxlciJdOwogCiAgICAgTlNVUkwgKnNxbFBhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3Rv
bVdlYnNpdGVEYXRhL1dlYlNRTC8iIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGly
ZWN0b3J5OllFU107CkBAIC04Niw3ICs4Niw2IEBAIHN0YXRpYyB2b2lkIHJ1bldlYnNpdGVEYXRh
U3RvcmVDdXN0b21QYXRocyhTaG91bGRFbmFibGVQcm9jZXNzUHJld2FybWluZyBzaG91bGRFCiAg
ICAgTlNVUkwgKmxvY2FsU3RvcmFnZVBhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4v
TGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNp
dGVEYXRhL0xvY2FsU3RvcmFnZS8iIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGly
ZWN0b3J5OllFU107CiAgICAgTlNVUkwgKmNvb2tpZVN0b3JhZ2VGaWxlID0gW05TVVJMIGZpbGVV
UkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktp
dEFQSS9DdXN0b21XZWJzaXRlRGF0YS9Db29raWVTdG9yYWdlL0Nvb2tpZS5GaWxlIiBzdHJpbmdC
eUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpOT107CiAgICAgTlNVUkwgKnJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJh
cnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0
YS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0g
aXNEaXJlY3Rvcnk6WUVTXTsKLQogICAgIE5TVVJMICpkZWZhdWx0U1FMUGF0aCA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RX
ZWJLaXRBUEkvV2Vic2l0ZURhdGEvV2ViU1FMLyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0
aF0gaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBOU1VSTCAqZGVmYXVsdElEQlBhdGggPSBbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0
V2ViS2l0QVBJL1dlYnNpdGVEYXRhL0luZGV4ZWREQi8iIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJ
blBhdGhdIGlzRGlyZWN0b3J5OllFU107CiAgICAgTlNVUkwgKmRlZmF1bHRMb2NhbFN0b3JhZ2VQ
YXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBs
ZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9XZWJzaXRlRGF0YS9Mb2NhbFN0b3JhZ2UvIiBzdHJpbmdC
eUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpZRVNdOwpAQCAtMTEyLDcgKzExMSw3
IEBAIHN0YXRpYyB2b2lkIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyhTaG91bGRFbmFi
bGVQcm9jZXNzUHJld2FybWluZyBzaG91bGRFCiAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0TG9jYWxTdG9yYWdl
UGF0aC5wYXRoXSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhdGgu
cGF0aF0pOwogCi0gICAgUmV0YWluUHRyPF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
PiB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5n
ZXQoKS5fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBzcWxQYXRoOwogICAgIHdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGlk
YlBhdGg7CiAgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3dlYlN0b3Jh
Z2VEaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VQYXRoOwpAQCAtMTIyLDcgKzEyMSw3IEBAIHN0YXRp
YyB2b2lkIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyhTaG91bGRFbmFibGVQcm9jZXNz
UHJld2FybWluZyBzaG91bGRFCiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0
b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpOwogICAg
IGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgPSBwcm9jZXNzUG9vbC5nZXQoKTsKIAot
ICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2
aWdhdGlvbkRlbGVnYXRlOmhhbmRsZXIuZ2V0KCldOwogCiAgICAgYXV0byBwcmVmZXJlbmNlcyA9
IChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcmVm
ZXJlbmNlc107CkBAIC0xNDUsNiArMTQ0LDE3IEBAIHN0YXRpYyB2b2lkIHJ1bldlYnNpdGVEYXRh
U3RvcmVDdXN0b21QYXRocyhTaG91bGRFbmFibGVQcm9jZXNzUHJld2FybWluZyBzaG91bGRFCiAg
ICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmbHVzaGVkKTsKIAorICAgIC8v
IEdldCB0aGUgSW5kZXhlZERCIGRhdGFiYXNlIHBhdGggaW4gdXNlLgorICAgIE5TVVJMICpmaWxl
VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmaWxlOi8vIl07CisgICAgX19ibG9jayBOU1N0
cmluZyAqZmlsZUlEQlBhdGhTdHJpbmcgPSBuaWw7CisgICAgZG9uZSA9IGZhbHNlOworICAgIFtj
b25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgX29yaWdpbkRpcmVjdG9yeUZvclRl
c3Rpbmc6ZmlsZVVSTCB0b3BPcmlnaW46ZmlsZVVSTCB0eXBlOldLV2Vic2l0ZURhdGFUeXBlSW5k
ZXhlZERCRGF0YWJhc2VzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKnJlc3VsdCkgewor
ICAgICAgICBmaWxlSURCUGF0aFN0cmluZyA9IHJlc3VsdDsKKyAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBOU1VS
TCAqZmlsZUlEQlBhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVJREJQYXRoU3RyaW5n
IGlzRGlyZWN0b3J5OllFU107CisKICAgICAvLyBGb3JjaWJseSBzaHV0IGRvd24gZXZlcnl0aGlu
ZyBvZiBXZWJLaXQgdGhhdCB3ZSBjYW4uCiAgICAgYXV0byBwaWQgPSBbd2ViVmlldyBfd2ViUHJv
Y2Vzc0lkZW50aWZpZXJdOwogICAgIGlmIChwaWQpCkBAIC0xODQsMzEgKzE5NCw0NSBAQCBzdGF0
aWMgdm9pZCBydW5XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vz
c1ByZXdhcm1pbmcgc2hvdWxkRQogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmlkYlBhdGgucGF0aF0pOwogICAgIEVYUEVD
VF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpk
ZWZhdWx0SURCUGF0aC5wYXRoXSk7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBmaWxlSURCUGF0aCA9
IFtbaWRiUGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJdIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAImZpbGVfXzAiXTsKLSAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZUlEQlBhdGguZ2V0KCku
cGF0aF0pOworICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpmaWxlSURCUGF0aC5wYXRoXSk7CiAKICAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKICAgICAgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmdldCgpXSk7Ci0gICAgICAgIFJldGFpblB0cjxOU1NldD4gdHlwZXMgPSBhZG9wdE5T
KFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWRE
QkRhdGFiYXNlcywgbmlsXSk7CisgICAgICAgIGF1dG8gdHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNl
cywgbmlsXSk7CisgICAgICAgIAorICAgICAgICBOU1VSTCAqYXBwbGVVUkwgPSBbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImh0dHBzOi8vYXBwbGUuY29tIl07CisgICAgICAgIF9fYmxvY2sgTlNTdHJp
bmcgKmlkYlBhdGhTdHJpbmcgPSBuaWw7CisgICAgICAgIGRvbmUgPSBmYWxzZTsKKyAgICAgICAg
W2RhdGFTdG9yZSBfb3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZzphcHBsZVVSTCB0b3BPcmlnaW46
ZmlsZVVSTCB0eXBlOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIGNvbXBsZXRp
b25IYW5kbGVyOl4oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICAgICAgaWRiUGF0aFN0cmlu
ZyA9IHJlc3VsdDsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICAgICAgTlNVUkwgKmZpbGVB
cHBsZUlEQlBhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmlkYlBhdGhTdHJpbmcgaXNEaXJl
Y3Rvcnk6WUVTXTsKKworICAgICAgICBOU1VSTCAqd2Via2l0VVJMID0gW05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmciXTsKKyAgICAgICAgZG9uZSA9IGZhbHNlOworICAg
ICAgICBbZGF0YVN0b3JlIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOndlYmtpdFVSTCB0b3BP
cmlnaW46ZmlsZVVSTCB0eXBlOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICAgICAgaWRiUGF0
aFN0cmluZyA9IHJlc3VsdDsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsK
KyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICAgICAgTlNVUkwg
KmZpbGVXZWJLaXRJREJQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDppZGJQYXRoU3RyaW5n
IGlzRGlyZWN0b3J5OllFU107CiAKICAgICAgICAgLy8gU3ViZnJhbWUgb2YgZGlmZmVyZW50IG9y
aWdpbnMgbWF5IGFsc28gY3JlYXRlIEluZGV4ZWREQiBmaWxlcy4KICAgICAgICAgUmV0YWluUHRy
PE5TVVJMPiB1cmwxID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIklu
ZGV4ZWREQiIgd2l0aEV4dGVuc2lvbjpAInNxbGl0ZTMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl07CiAgICAgICAgIFJldGFpblB0cjxOU1VSTD4gdXJsMiA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJbmRleGVkREIiIHdpdGhFeHRlbnNp
b246QCJzcWxpdGUzLXNobSIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKICAgICAgICAgUmV0YWluUHRyPE5TVVJMPiB1cmwzID0gW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAIkluZGV4ZWREQiIgd2l0aEV4dGVuc2lvbjpAInNxbGl0ZTMtd2Fs
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCi0gICAgICAgIFJl
dGFpblB0cjxOU1VSTD4gZnJhbWVJREJQYXRoID0gW1tmaWxlSURCUGF0aCBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJodHRwc19hcHBsZS5jb21fMCJdIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyJdOwotICAgICAgICBbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOmZyYW1lSURCUGF0
aC5nZXQoKSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVy
cm9yOm5pbF07Ci0KLSAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5
SXRlbUF0VVJMOnVybDEuZ2V0KCkgdG9VUkw6W2ZyYW1lSURCUGF0aC5nZXQoKSBVUkxCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJdIGVycm9yOm5pbF07Ci0gICAg
ICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwyLmdl
dCgpIHRvVVJMOltmcmFtZUlEQlBhdGguZ2V0KCkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiSW5kZXhlZERCLnNxbGl0ZTMtc2htIl0gZXJyb3I6bmlsXTsKLSAgICAgICAgW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDMuZ2V0KCkgdG9VUkw6W2Zy
YW1lSURCUGF0aC5nZXQoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIu
c3FsaXRlMy13YWwiXSBlcnJvcjpuaWxdOwotCi0gICAgICAgIFJldGFpblB0cjxOU1VSTD4gZnJh
bWVJREJQYXRoMiA9IFtbZmlsZUlEQlBhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
aHR0cHNfd2Via2l0Lm9yZ18wIl0gVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vic2l0
ZURhdGFTdG9yZUN1c3RvbVBhdGhzIl07Ci0gICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6ZnJhbWVJREJQYXRoMi5nZXQoKSB3aXRoSW50
ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07CisgICAg
ICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6
ZmlsZUFwcGxlSURCUGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0
ZXM6bmlsIGVycm9yOm5pbF07CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gY29weUl0ZW1BdFVSTDp1cmwxLmdldCgpIHRvVVJMOltmaWxlQXBwbGVJREJQYXRoIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl0gZXJyb3I6bmlsXTsK
KyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVy
bDIuZ2V0KCkgdG9VUkw6W2ZpbGVBcHBsZUlEQlBhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMtc2htIl0gZXJyb3I6bmlsXTsKKyAgICAgICAgW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDMuZ2V0KCkgdG9VUkw6
W2ZpbGVBcHBsZUlEQlBhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERC
LnNxbGl0ZTMtd2FsIl0gZXJyb3I6bmlsXTsKIAotICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMS5nZXQoKSB0b1VSTDpbZnJhbWVJREJQYXRo
Mi5nZXQoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJd
IGVycm9yOm5pbF07Ci0gICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29w
eUl0ZW1BdFVSTDp1cmwyLmdldCgpIHRvVVJMOltmcmFtZUlEQlBhdGgyLmdldCgpIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzLXNobSJdIGVycm9yOm5pbF07
Ci0gICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1
cmwzLmdldCgpIHRvVVJMOltmcmFtZUlEQlBhdGgyLmdldCgpIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzLXdhbCJdIGVycm9yOm5pbF07CisgICAgICAgIFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6ZmlsZVdl
YktpdElEQlBhdGggd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5p
bCBlcnJvcjpuaWxdOworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNv
cHlJdGVtQXRVUkw6dXJsMS5nZXQoKSB0b1VSTDpbZmlsZVdlYktpdElEQlBhdGggVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXSBlcnJvcjpuaWxdOworICAg
ICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMi5n
ZXQoKSB0b1VSTDpbZmlsZVdlYktpdElEQlBhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiSW5kZXhlZERCLnNxbGl0ZTMtc2htIl0gZXJyb3I6bmlsXTsKKyAgICAgICAgW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDMuZ2V0KCkgdG9VUkw6W2Zp
bGVXZWJLaXRJREJQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5z
cWxpdGUzLXdhbCJdIGVycm9yOm5pbF07CiAKICAgICAgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFS
ZWNvcmRzT2ZUeXBlczp0eXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tX
ZWJzaXRlRGF0YVJlY29yZCAqPiAqIHJlY29yZHMpIHsKICAgICAgICAgICAgIEVYUEVDVF9FUShb
cmVjb3JkcyBjb3VudF0sICh1bnNpZ25lZCBsb25nKTMpOwpAQCAtMjE2LDcgKzI0MCw3IEBAIHN0
YXRpYyB2b2lkIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyhTaG91bGRFbmFibGVQcm9j
ZXNzUHJld2FybWluZyBzaG91bGRFCiAgICAgICAgICAgICAgICAgaWYgKFtbcmVjb3JkIGRpc3Bs
YXlOYW1lXSBpc0VxdWFsOiBAImFwcGxlLmNvbSJdKSB7CiAgICAgICAgICAgICAgICAgICAgIFtk
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMuZ2V0KCkgZm9yRGF0YVJlY29yZHM6QFty
ZWNvcmRdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgRVhQ
RUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDpmcmFtZUlEQlBhdGguZ2V0KCkucGF0aF0pOworICAgICAgICAgICAgICAgICAgICAgICAgRVhQ
RUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDpmaWxlQXBwbGVJREJQYXRoLnBhdGhdKTsKICAgICAgICAgICAgICAgICAgICAgfV07CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjMwLDcgKzI1NCw3IEBAIHN0YXRpYyB2
b2lkIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyhTaG91bGRFbmFibGVQcm9jZXNzUHJl
d2FybWluZyBzaG91bGRFCiAgICAgICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwog
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7
CiAKLSAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpmaWxlSURCUGF0aC5nZXQoKS5wYXRoXSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6
ZmlsZVdlYktpdElEQlBhdGgucGF0aF0pOwogCiAgICAgICAgIC8vIE5vdywgd2l0aCBicmFuZCBu
ZXcgV0tXZWJzaXRlRGF0YVN0b3JlcyBwb2ludGluZyBhdCB0aGUgc2FtZSBjdXN0b20gY29va2ll
IHN0b3JhZ2UgbG9jYXRpb24sCiAgICAgICAgIC8vIGluIG5ld2x5IGZpcmVkIHVwIE5ldHdvcmtQ
cm9jZXNzZXMsIHZlcmlmeSB0aGF0IHRoZSBmZXRjaCBhbmQgZGVsZXRlIEFQSXMgd29yayBhcyBl
eHBlY3RlZC4K
</data>
<flag name="commit-queue"
          id="483551"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455523</attachid>
            <date>2022-03-23 11:14:56 -0700</date>
            <delta_ts>2022-03-24 22:58:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238269-20220323111454.patch</filename>
            <type>text/plain</type>
            <size>72162</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAzYjU2MThlYjY3Yjc2NTcx
MDVlZWIwMGY3Y2EzYjRhMjFkMWMwMmIuLjU4NzM2OGQxODkxMGM0ODYwMDgxYzc3NGRmODJkNmZh
YmFhNjQwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjItMDMtMjMgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGFuIFNQSSB0byBn
ZXQgd2Vic2l0ZSBkYXRhIGRpcmVjdG9yeSBmb3Igb3JpZ2luIGFuZCB1c2UgaXQgaW4gQVBJIHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgy
NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVy
ZSBhcmUgYSBmZXcgdGVzdHMgdXNpbmcgaGFyZGNvZGVkIHdlYnNpdGUgZGF0YSBwYXRocyB0byBj
aGVjayBpZiBmaWxlcyBhcmUgY29ycmVjbHkgbW9kaWZpZWQgYnkgQVBJLgorICAgICAgICBFdmVy
eXRpbWUgd2UgbWlncmF0ZSB3ZWJzaXRlIGRhdGEgKGZvciBleGFtcGxlLCBpZiB3ZSBzdGFydCB1
c2luZyBnZW5lcmFsIHN0b3JhZ2UgZGlyZWN0b3J5IGZvciBJbmRleGVkREIgCisgICAgICAgIHN0
b3JhZ2UpLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGVzZSB0ZXN0cyB3aXRoIG5ldyBwYXRocywgb3Ro
ZXJ3aXNlIHRoZSB0ZXN0cyB3aWxsIGNoZWNrIHRoZSB3cm9uZyBwYXRocy4gTGV0J3MgCisgICAg
ICAgIGp1c3QgYWRkIGFuIFNQSSBzbyB0aGVzZSB0ZXN0cyBjYW4gZ2V0IHRoZSBwYXRocyBpbiB1
c2UgZHluYW1pY2FsbHksIHdoaWNoIHdvdWxkIGF2b2lkIHRlc3QgYnJlYWthZ2Ugd2hlbgorICAg
ICAgICB3ZSBkbyB3ZWJzaXRlIGRhdGEgbWlncmF0aW9uLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6d2Vic2l0ZURhdGFPcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Z2V0T3JpZ2luRGlyZWN0b3J5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpPcmln
aW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6dG9TdG9yYWdlVHlwZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpyZXNv
bHZlZExvY2FsU3RvcmFnZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFu
YWdlcjo6U3RvcmFnZUJ1Y2tldDo6cmVzb2x2ZWRJREJTdG9yYWdlUGF0aCk6CisgICAgICAgIChX
ZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpyZXNvbHZlZFBhdGgp
OgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6cmVzb2x2ZWRQYXRoKToK
KyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OnJlc29sdmVkTG9jYWxTdG9y
YWdlUGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2Vy
OjpyZXNvbHZlZElEQlN0b3JhZ2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1b
V0tXZWJzaXRlRGF0YVN0b3JlIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOnRvcE9yaWdpbjp0
eXBlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp3ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6Om9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMjItMDMtMjIg
IFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU11b
V1BdIEFkZCB0ZWxlbWV0cnkgZm9yIHN5c2NhbGxzIHVzZWQgZHVyaW5nIGxhdW5jaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA4MzRk
MTlhNWI2M2QwZTUzYThiZjIzNzJhOTUzMWM0YTFjZWY2OGYyLi41ODlkMTY2MzQxMmNmMzRlMzBj
ZTAxNjAzNGViYTNhZjg2NDQyZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjI1OSw2ICsyMjU5LDE2IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBVCiAgICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkubW92ZURhdGEo
ZGF0YVR5cGVzLCBXVEZNb3ZlKG9sZE9yaWdpbiksIFdURk1vdmUobmV3T3JpZ2luKSwgW2FnZ3Jl
Z2F0b3JdIHsgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYnNpdGVEYXRhT3JpZ2lu
RGlyZWN0b3J5Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYg
b3JpZ2luLCBjb25zdCBVUkwmIHRvcE9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlIGRhdGFUeXBlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAg
IGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisK
KyAgICBhdXRvIGNsaWVudE9yaWdpbiA9IFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTCh0b3BPcmlnaW4pLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21VUkwob3JpZ2luKSB9OworICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5h
Z2VyKCkuZ2V0T3JpZ2luRGlyZWN0b3J5KFdURk1vdmUoY2xpZW50T3JpZ2luKSwgZGF0YVR5cGUs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGQ5MzVmNDZjY2M5OWNh
ODY3ODRmNWYxNGU4MGRkNzBiNTAzODNiMjkuLmJmYTMyZGZlNzRiNzllNmE4ZDUwYTY1NzE1ZDUx
MGE0MWI4ZTIzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKQEAgLTI5Miw2ICsyOTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclN0b3Jh
Z2UoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBkaWRJbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
JiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBuZXdRdW90YSk7CiAgICAgdm9pZCByZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHdlYnNpdGVEYXRhT3Jp
Z2luRGlyZWN0b3J5Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3Qg
VVJMJiwgV2Vic2l0ZURhdGFUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBwYXJlbnRQcm9j
ZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCA2Nzg4ZDY1Y2M2YThjY2QzZjExZjkwYjJkNjc3OWUyMWFiZDFjZGM2Li5mYTc5YzViNWRiMTQ0
NTllMzY2NjE5MTJkYTJjYmY4OTllM2Q2NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTQ2LDYgKzQ2
LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIERl
bGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYktp
dDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlKSAtPiAoKQogICAgIERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURh
dGFUeXBlcywgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucywgVmVj
dG9yPFN0cmluZz4gY29va2llSG9zdE5hbWVzLCBWZWN0b3I8U3RyaW5nPiBIU1RTQ2FjaGVIb3N0
TmFtZXMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gcmVnaXN0cmFibGVEb21h
aW5zKSAtPiAoKQogICAgIFJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwgb2xkRG9tYWluLCBVUkwgbmV3RG9tYWluLCBPcHRpb25TZXQ8V2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMpIC0+ICgpCisgICAgV2Vic2l0ZURh
dGFPcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJM
IG9yaWdpbiwgVVJMIHRvcE9yaWdpbiwgZW51bTp1aW50MzJfdCBXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZSB3ZWJzaXRlRGF0YVR5cGUpIC0+IChTdHJpbmcgZGlyZWN0b3J5KQogCiAgICAgRG93bmxv
YWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wgc3Rk
OjpvcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgUmVzdW1l
RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBlbnVt
OmJvb2wgV2ViS2l0OjpDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMDBhZDkxOGZkYzQ4ODVhZWRjOGU1YWJi
NzExODExNmFmYTE2YTg3Ny4uZDBmOTI5MzA2MGE3OTM2MjVmNGQzNzY4NDJlMmM5YTVjYzlhMGI0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTYzMiw3ICs2MzIsNyBAQCB2b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gdHlwZXMsIFdlYkNvcmU6OgogICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHRh
cmdldE9yaWdpbikuZGVsZXRlRGF0YSh0eXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpKTsKIAog
ICAgICAgICAvLyBNb3ZlIGRhdGEgZnJvbSBzb3VyY2Ugb3JpZ2luIHRvIHRhcmdldCBvcmlnaW4u
Ci0gICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoc291cmNlT3JpZ2luKS5tb3ZlRGF0
YSh0eXBlcywgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcih0YXJnZXRPcmlnaW4pLnJlc29sdmVk
TG9jYWxTdG9yYWdlUGF0aCgpLCBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHRhcmdldE9yaWdp
bikucmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgpKTsKKyAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdl
TWFuYWdlcihzb3VyY2VPcmlnaW4pLm1vdmVEYXRhKHR5cGVzLCBsb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2VyKHRhcmdldE9yaWdpbikucmVzb2x2ZWRQYXRoKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxT
dG9yYWdlKSwgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcih0YXJnZXRPcmlnaW4pLnJlc29sdmVk
UGF0aChXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpOwogCiAgICAgICAgIHJl
bW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZSh0YXJnZXRPcmlnaW4pOwogICAgICAg
ICByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUoc291cmNlT3JpZ2luKTsKQEAg
LTY0MSw2ICs2NDEsMTkgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBXZWJDb3JlOjoKICAgICB9KTsKIH0KIAor
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldE9yaWdpbkRpcmVjdG9yeShXZWJDb3JlOjpD
bGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYnNpdGVEYXRhVHlwZSB0eXBlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUKCFtX2Nsb3NlZCk7CisKKyAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHR5
cGUsIG9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG9yaWdpbikpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGRpcmVjdG9yeSA9IGNyb3NzVGhyZWFkQ29weShsb2NhbE9yaWdp
blN0b3JhZ2VNYW5hZ2VyKG9yaWdpbikucmVzb2x2ZWRQYXRoKHR5cGUpKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZGlyZWN0b3J5KSk7CisgICAg
ICAgIH0pOworICAgICAgICByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUob3Jp
Z2luKTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnN1c3BlbmQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggMmFi
YjBmYjBlMzk4ZTc0ZjYwMTU4MmFlODVjNWU3OWMzMjU1OWU5OC4uODJlYjZjMjgyZjUwNTJlZjYx
MWQ3ZTJjZDFjMDhkODM2NGY4MDY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAtODYs
NiArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVEYXRhTW9kaWZpZWRTaW5jZShPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBkZWxldGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBtb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc291cmNlLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBnZXRPcmlnaW5EaXJlY3RvcnkoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYnNp
dGVEYXRhVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAg
ICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBy
ZXN1bWUoKTsKICAgICB2b2lkIGhhbmRsZUxvd01lbW9yeVdhcm5pbmcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFn
ZU1hbmFnZXIuY3BwCmluZGV4IDJmYjhhYzU3OGYzZGY5MTIxMTlmNDVjYmNiY2EwYWE1YzY1MDEx
NmQuLjcyNWJiZWEzNTBiODJlYWU0MWYxMDZhYzI4NTFhZjUxZTlkYzY4YzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0
b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNlc3Np
b25TdG9yYWdlLAogICAgICAgICBJbmRleGVkREIsCiAgICAgfTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0b3JhZ2VUeXBlPiB0b1N0b3JhZ2VUeXBlKFdlYnNpdGVEYXRhVHlwZSkgY29uc3Q7CiAgICAg
U3RyaW5nIHRvU3RvcmFnZUlkZW50aWZpZXIoU3RvcmFnZVR5cGUpIGNvbnN0OwogICAgIFN0b3Jh
Z2VCdWNrZXQoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFn
ZVBhdGgsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUGF0aHMpOwogICAgIFN0b3JhZ2VCdWNrZXRNb2Rl
IG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KQEAgLTczLDYgKzc0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFN0
cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCk7CiAg
ICAgU3RyaW5nIHJlc29sdmVkTG9jYWxTdG9yYWdlUGF0aCgpOwogICAgIFN0cmluZyByZXNvbHZl
ZElEQlN0b3JhZ2VQYXRoKCk7CisgICAgU3RyaW5nIHJlc29sdmVkUGF0aChXZWJzaXRlRGF0YVR5
cGUpOwogCiBwcml2YXRlOgogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGZldGNoRGF0
YVR5cGVzSW5MaXN0RnJvbU1lbW9yeShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPik7CkBAIC0x
MTcsNiArMTE5LDI1IEBAIHZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6
OmNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxCiAgICAgICAgIG1fc2Vzc2lv
blN0b3JhZ2VNYW5hZ2VyLT5jb25uZWN0aW9uQ2xvc2VkKGNvbm5lY3Rpb24pOwogfQogCitzdGQ6
Om9wdGlvbmFsPE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpTdG9yYWdlVHlw
ZT4gT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnRvU3RvcmFnZVR5cGUoV2Vi
c2l0ZURhdGFUeXBlIHdlYnNpdGVEYXRhVHlwZSkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHdlYnNp
dGVEYXRhVHlwZSkgeworICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtOgorICAg
ICAgICByZXR1cm4gU3RvcmFnZVR5cGU6OkZpbGVTeXN0ZW07CisgICAgY2FzZSBXZWJzaXRlRGF0
YVR5cGU6OkxvY2FsU3RvcmFnZToKKyAgICAgICAgcmV0dXJuIFN0b3JhZ2VUeXBlOjpMb2NhbFN0
b3JhZ2U7CisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlOgorICAgICAg
ICByZXR1cm4gU3RvcmFnZVR5cGU6OlNlc3Npb25TdG9yYWdlOworICAgIGNhc2UgV2Vic2l0ZURh
dGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM6CisgICAgICAgIHJldHVybiBTdG9yYWdlVHlwZTo6
SW5kZXhlZERCOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIFN0cmlu
ZyBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6dG9TdG9yYWdlSWRlbnRpZmll
cihTdG9yYWdlVHlwZSB0eXBlKSBjb25zdAogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMzUx
LDEwICszNzIsMTEgQEAgU3RyaW5nIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0
OjpyZXNvbHZlZExvY2FsU3RvcmFnZVBhdGgoKQogICAgICAgICBtX3Jlc29sdmVkTG9jYWxTdG9y
YWdlUGF0aCA9IG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aDsKICAgICB9IGVsc2UgaWYgKCFtX3Jv
b3RQYXRoLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9
IHR5cGVTdG9yYWdlUGF0aChTdG9yYWdlVHlwZTo6TG9jYWxTdG9yYWdlKTsKLSAgICAgICAgRmls
ZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CiAgICAg
ICAgIGF1dG8gbG9jYWxTdG9yYWdlUGF0aCA9IExvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3Rv
cmFnZUZpbGVQYXRoKGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7Ci0gICAgICAgIGlmICghbV9jdXN0
b21Mb2NhbFN0b3JhZ2VQYXRoLmlzRW1wdHkoKSAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhs
b2NhbFN0b3JhZ2VQYXRoKSAmJiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fY3VzdG9tTG9jYWxT
dG9yYWdlUGF0aCkpCisgICAgICAgIGlmICghbV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLmlzRW1w
dHkoKSAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhsb2NhbFN0b3JhZ2VQYXRoKSAmJiBGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCkpIHsKKyAgICAgICAg
ICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyhsb2NhbFN0b3JhZ2VEaXJlY3Rvcnkp
OwogICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmls
ZShtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBhdGgpOworICAgICAgICB9
CiAKICAgICAgICAgbV9yZXNvbHZlZExvY2FsU3RvcmFnZVBhdGggPSBsb2NhbFN0b3JhZ2VQYXRo
OwogICAgIH0gZWxzZQpAQCAtMzg0LDExICs0MDYsMjcgQEAgU3RyaW5nIE9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpyZXNvbHZlZElEQlN0b3JhZ2VQYXRoKCkKICAgICAgICAg
SURCU3RvcmFnZU1hbmFnZXI6Om1pZ3JhdGVPcmlnaW5EYXRhKG1fY3VzdG9tSURCU3RvcmFnZVBh
dGgsIGlkYlN0b3JhZ2VQYXRoKTsKICAgICAgICAgbV9yZXNvbHZlZElEQlN0b3JhZ2VQYXRoID0g
aWRiU3RvcmFnZVBhdGg7CiAgICAgfQotICAgIAogICAgIEFTU0VSVCghbV9yZXNvbHZlZElEQlN0
b3JhZ2VQYXRoLmlzTnVsbCgpKTsKICAgICByZXR1cm4gbV9yZXNvbHZlZElEQlN0b3JhZ2VQYXRo
OwogfQogCitTdHJpbmcgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnJlc29s
dmVkUGF0aChXZWJzaXRlRGF0YVR5cGUgd2ViaXN0ZURhdGFUeXBlKQoreworICAgIGF1dG8gdHlw
ZSA9IHRvU3RvcmFnZVR5cGUod2ViaXN0ZURhdGFUeXBlKTsKKyAgICBpZiAoIXR5cGUpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBzd2l0Y2ggKCp0eXBlKSB7CisgICAgY2FzZSBTdG9yYWdl
VHlwZTo6TG9jYWxTdG9yYWdlOgorICAgICAgICByZXR1cm4gcmVzb2x2ZWRMb2NhbFN0b3JhZ2VQ
YXRoKCk7CisgICAgY2FzZSBTdG9yYWdlVHlwZTo6SW5kZXhlZERCOgorICAgICAgICByZXR1cm4g
cmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgpOworICAgIGNhc2UgU3RvcmFnZVR5cGU6OlNlc3Npb25T
dG9yYWdlOgorICAgIGNhc2UgU3RvcmFnZVR5cGU6OkZpbGVTeXN0ZW06CisgICAgICAgIHJldHVy
biB0eXBlU3RvcmFnZVBhdGgoKnR5cGUpOworICAgIH0KK30KKwogU3RyaW5nIE9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpvcmlnaW5GaWxlSWRlbnRpZmllcigpCiB7CiAgICAgcmV0dXJuIG9yaWdpbkZp
bGVOYW1lOwpAQCAtNDgyLDE0ICs1MjAsOSBAQCBJREJTdG9yYWdlTWFuYWdlciogT3JpZ2luU3Rv
cmFnZU1hbmFnZXI6OmV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKQogICAgIHJldHVybiBkZWZh
dWx0QnVja2V0KCkuZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigpOwogfQogCi1TdHJpbmcgT3Jp
Z2luU3RvcmFnZU1hbmFnZXI6OnJlc29sdmVkTG9jYWxTdG9yYWdlUGF0aCgpCi17Ci0gICAgcmV0
dXJuIGRlZmF1bHRCdWNrZXQoKS5yZXNvbHZlZExvY2FsU3RvcmFnZVBhdGgoKTsKLX0KLQotU3Ry
aW5nIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpyZXNvbHZlZElEQlN0b3JhZ2VQYXRoKCkKK1N0cmlu
ZyBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6cmVzb2x2ZWRQYXRoKFdlYnNpdGVEYXRhVHlwZSB0eXBl
KQogewotICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkucmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgp
OworICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkucmVzb2x2ZWRQYXRoKHR5cGUpOwogfQogCiBi
b29sIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5o
CmluZGV4IGQ4ODJiMTdlNjQ1NjU5ZThkMTcxZDUwODg1YTc1Nzg0MTcyYTM2MGIuLjU5OGU2YjFh
YjE1MWI2NmE1ZjZiYjUxNGY4ODgxMmNlZTZkMDZmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5o
CkBAIC01OSw4ICs1OSw3IEBAIHB1YmxpYzoKICAgICBTZXNzaW9uU3RvcmFnZU1hbmFnZXIqIGV4
aXN0aW5nU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCk7CiAgICAgSURCU3RvcmFnZU1hbmFnZXImIGlk
YlN0b3JhZ2VNYW5hZ2VyKElEQlN0b3JhZ2VSZWdpc3RyeSYpOwogICAgIElEQlN0b3JhZ2VNYW5h
Z2VyKiBleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCk7Ci0gICAgU3RyaW5nIHJlc29sdmVkTG9j
YWxTdG9yYWdlUGF0aCgpOwotICAgIFN0cmluZyByZXNvbHZlZElEQlN0b3JhZ2VQYXRoKCk7Cisg
ICAgU3RyaW5nIHJlc29sdmVkUGF0aChXZWJzaXRlRGF0YVR5cGUpOwogICAgIGJvb2wgaXNBY3Rp
dmUoKTsKICAgICBib29sIGlzRW1wdHkoKTsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiBmZXRjaERhdGFUeXBlc0luTGlzdChPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA4MjU3MTIxMjlmYzI0MTg1
OTFmMTViZDdkOTlmYWI1MWI0YmNmNGExLi43MTJlNjdiYjM5MDA3ZjBhYjhhMzcxOGJlMzAxYjA0
MmJjYzRjNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAg
LTk2Miw2ICs5NjIsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dl
YktpdDo6V2ViR1BVOjpWZXJ0ZXhBdHRyaWJ1dGUnOiBbJyJXZWJHUFVWZXJ0ZXhBdHRyaWJ1dGUu
aCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViR1BVOjpWZXJ0ZXhCdWZmZXJMYXlvdXQnOiBbJyJX
ZWJHUFVWZXJ0ZXhCdWZmZXJMYXlvdXQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViR1BVOjpW
ZXJ0ZXhTdGF0ZSc6IFsnIldlYkdQVVZlcnRleFN0YXRlLmgiJ10sCisgICAgICAgICdXZWJLaXQ6
OldlYnNpdGVEYXRhVHlwZSc6IFsnIldlYnNpdGVEYXRhVHlwZS5oIiddLAogICAgICAgICAnc3Ry
dWN0IFdlYkNvcmU6OkNvb2tpZSc6IFsnPFdlYkNvcmUvQ29va2llLmg+J10sCiAgICAgICAgICdz
dHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQnOiBbJzxXZWJDb3JlL0VsZW1lbnRDb250ZXh0
Lmg+J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViQ29yZTo6VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRy
aWNzJzogWyc8V2ViQ29yZS9WaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MuaD4nXSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tCmluZGV4IGI3Y2YwNjViYWJjYTFjNDkxYWEzZWEzODQxZDI0Njg2MzFhYWVkYWMuLjFm
MzM2OTUxNDhiZTFmYjAxZGI2MjEyOGY3OTVhOTYxMGFhMjJjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpA
QCAtODQ0LDQgKzg0NCwxNiBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNv
cmQ+IHRvV2Vic2l0ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogICAgICAgICB9KTsK
IH0KIAorLSh2b2lkKV9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOihOU1VSTCAqKW9yaWdpbiB0
b3BPcmlnaW46KE5TVVJMICopdG9wT3JpZ2luIHR5cGU6KE5TU3RyaW5nICopZGF0YVR5cGUgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyAgICBhdXRvIHdlYnNpdGVEYXRhVHlwZSA9IFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGUoZGF0
YVR5cGUpOworICAgIGlmICghd2Vic2l0ZURhdGFUeXBlKQorICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIobmlsKTsKKworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+b3Jp
Z2luRGlyZWN0b3J5Rm9yVGVzdGluZyhvcmlnaW4sIHRvcE9yaWdpbiwgKndlYnNpdGVEYXRhVHlw
ZSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0oYXV0byByZXN1bHQpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXJDb3B5KHJlc3VsdCk7CisgICAgfSk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlUHJpdmF0ZS5oCmluZGV4IDBlOTczNmIxMzI0M2Y4ODk1MzdlYTc2Zjg2ZDZiMDI1NzI0ZjJj
YzQuLjY3MDZmMzI4MzkxN2EyZjkyMGFhZWVlMGEzZDU0NDhlMGYzNzU3Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZVByaXZhdGUuaApAQCAtNTksNyArNTksNiBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNV
SW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0QWxsb3dzVExTRmFsbGJhY2s6KSBCT09MIF9hbGxvd3NUTFNG
YWxsYmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkwgKl9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkiLCBtYWNvcygxMC4x
MSwgMTEuMCksIGlvcyg5LjAsIDE0LjApKTsKIAotCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOihudWxsYWJsZSB2b2lkICheKShXS1dlYnNpdGVEYXRh
U3RvcmUgKiwgTlNTdHJpbmcgKikpY2FsbGJhY2sgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
MyksIGlvcygxMS4wKSk7CiAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zvcjoo
V0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxO
U1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xNCksIGlvcygxMi4wKSk7CiAtICh2b2lkKV9sb2FkZWRTdWJyZXNvdXJjZURvbWFp
bnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CkBAIC0xMTYsNiArMTE1LDcgQEAgdHlwZWRl
ZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMp
IHsKIC0odm9pZClfZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbjooV0tTZWN1
cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
RXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0odm9pZClfZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90
aWZpY2F0aW9uUGVybWlzc2lvbnM6KHZvaWQoXikoTlNTZXQ8V0tTZWN1cml0eU9yaWdpbiAqPiAq
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogLSh2b2lkKV9zY29wZVVSTDooTlNVUkwgKilzY29wZVVSTCBoYXNQ
dXNoU3Vic2NyaXB0aW9uRm9yVGVzdGluZzoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
LSh2b2lkKV9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOihOU1VSTCAqKW9yaWdpbiB0b3BPcmln
aW46KE5TVVJMICopdG9wT3JpZ2luIHR5cGU6KE5TU3RyaW5nICopZGF0YVR5cGUgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBlbmQKIAogTlNf
QVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzODg1ZTRkZjZhYjA4YzJkOWY0
YTdjOWM1M2U4MGYyOGFhNGExOTVkLi5jOWM1Mzk2ZTBjNmUwNjY2ODVmYjVlYzkyMjRmYzQ1MzVk
MmE1YTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTQyNyw2ICs0MjcsMTEgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY28KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpSZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKHNlc3Npb25JRCwgb2xkTmFtZSwgbmV3TmFt
ZSwgZGF0YVR5cGVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OndlYnNpdGVEYXRhT3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCYmIG9yaWdpbiwgVVJMJiYgdG9wT3JpZ2luLCBX
ZWJzaXRlRGF0YVR5cGUgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpXZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRlc3Rpbmco
c2Vzc2lvbklELCBXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUodG9wT3JpZ2luKSwgdHlwZSksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiB7
CiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBlMGFlZTJm
N2IzNmFiZGNlNjM0ODU3NzVjMTU0MmJjNzU0YmQyNTIzLi4zYmFkODJmYmMyZjY1MjA1ZjQ4ZWNj
OTVmM2E0NDgwZDcyNDgyZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTM1LDYgKzEzNSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdp
bnMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBIU1RTQ2FjaGVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVuYW1lT3JpZ2lu
SW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCB3ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQsIFVSTCYmLCBVUkwmJiwgV2Vic2l0ZURhdGFUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFN0cmluZyYpPiYmKTsKIAogICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlRGV0YWlscyhQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
aW5kZXggNTBjOTM1MmI2NjljNTg2OWM3NzQ4YzM5OWJhMjFjOGI3ZDU5MGExMy4uNzFhZTkyNjU0
OGJjYjkxZjVjYTIwYjkwMTYyNzA2MjE3ODM3YTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE5
ODgsNiArMTk4OCwxMSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbmFtZU9yaWdpbkluV2Vi
c2l0ZURhdGEoVVJMJiYgb2xkTmFtZSwgVVJMJiYgbmV3TmFtZSwgTwogICAgIG5ldHdvcmtQcm9j
ZXNzKCkucmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShtX3Nlc3Npb25JRCwgb2xkTmFtZSwgbmV3
TmFtZSwgZGF0YVR5cGVzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6b3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZyhVUkwmJiBvcmlnaW4s
IFVSTCYmIHRvcE9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlIHR5cGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbmV0d29y
a1Byb2Nlc3MoKS53ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcobV9zZXNzaW9u
SUQsIFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0eXBlLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Cit9CisKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhhc0FwcEJvdW5kU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmlu
ZGV4IGIxMjlhYmYzNzc1ZjVjM2E4NzZiZmZkZjMzMmVhYzFjOGU4YzI0YTEuLjZlZjk1NTAxNzI2
NjhmNTY4MTg1OWJiNzUzMDMyNDM1N2Y3ZTlhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTMyMCw2ICsz
MjAsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6TG9jYWxXZWJMb2NrUmVnaXN0cnkmIHdlYkxv
Y2tSZWdpc3RyeSgpIHsgcmV0dXJuIG1fd2ViTG9ja1JlZ2lzdHJ5LmdldCgpOyB9CiAKICAgICB2
b2lkIHJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoVVJMJiYsIFVSTCYmLCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG9y
aWdpbkRpcmVjdG9yeUZvclRlc3RpbmcoVVJMJiYsIFVSTCYmLCBXZWJzaXRlRGF0YVR5cGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogCiAgICAgYm9vbCBuZXR3
b3JrUHJvY2Vzc0hhc0VudGl0bGVtZW50Rm9yVGVzdGluZyhjb25zdCBTdHJpbmcmKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIzZTZhZDRi
MjNkZmU2NTRhOTJlYzNlZDdiZWM3NTcxN2E4Nzk0ZTYuLjQ0NWM1OWNhZGJiYTUyMzQxZWYxNThj
MzQ5ZDViYWVhYmE3OWI4OTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wMy0yMyAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYW4gU1BJIHRvIGdldCB3ZWJz
aXRlIGRhdGEgZGlyZWN0b3J5IGZvciBvcmlnaW4gYW5kIHVzZSBpdCBpbiBBUEkgdGVzdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODI2OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJDaGVja3BvaW50V0FMLm1tOgorICAgICAgICAoVEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJJbmRleFVw
Z3JhZGVUb1YyLm1tOgorICAgICAgICAocnVuTXVsdGlwbGVJbmRpY2VzVGVzdFdpdGhEYXRhYmFz
ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJG
aWxlTmFtZS5tbToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAoVEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5t
bToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlRl
bXBGaWxlU2l6ZS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbToKKyAgICAgICAgKFRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzLm1tOgorICAgICAgICAocnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBh
dGhzKToKKwogMjAyMi0wMy0yMiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+
CiAKICAgICAgICAgW01lcmdlLVF1ZXVlXSBBZGQgVmFsaWRhdGVTcXVhc2hlZApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJDaGVja3BvaW50V0FM
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJDaGVja3BvaW50
V0FMLm1tCmluZGV4IDcxMDA1Mjk4NjFjOTFjMDVlYThkMjYwNDJlNjg2ODYzZmQ0ODNiMDAuLmYy
MzAyZWY2OGVjZGMxZmJjMmIwNWViNjkyODQ2ODA3ZjYwZjhmNDEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCQ2hlY2twb2ludFdBTC5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQkNoZWNrcG9pbnRXQUwu
bW0KQEAgLTI1LDYgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKKyNpbXBvcnQgIkRl
cHJlY2F0ZWRHbG9iYWxWYWx1ZXMuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1NRTGl0ZUZpbGVTeXN0ZW0uaD4KQEAg
LTc0LDM2ICs3NSw0MCBAQCBsb25nIGxvbmcgZmlsZVNpemVBdFBhdGgoTlNTdHJpbmcgKnBhdGgp
CiAKIFRFU1QoSW5kZXhlZERCLCBDaGVja3BvaW50c1dBTEF1dG9tYXRpY2FsbHkpCiB7Ci0gICAg
TlNTdHJpbmcgKmhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZv
ckZpbGVOYW1lKCJ0ZXN0LXdhbC1jaGVja3BvaW50Iik7Ci0gICAgTlNTdHJpbmcgKmJhc2VQYXRo
ID0gW0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvV2Vi
c2l0ZURhdGEvSW5kZXhlZERCL3YxL2ZpbGVfXzAiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBh
dGhdOwotICAgIGJhc2VQYXRoID0gW2Jhc2VQYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpoYXNoXTsKLQotICAgIGlmIChbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZp
bGVFeGlzdHNBdFBhdGg6YmFzZVBhdGhdKSB7Ci0gICAgICAgIEJPT0wgc3VjY2VzcyA9IFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpiYXNlUGF0aCBlcnJv
cjpuaWxdOwotICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKLSAgICB9Ci0KLSAgICBSZXRh
aW5QdHI8SURCQ2hlY2twb2ludFdBTE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhb
W0lEQkNoZWNrcG9pbnRXQUxNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwotICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtbSURCQ2hlY2twb2ludFdBTE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Cisg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxl
ciJdOworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0
YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmll
ZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOwogCiAgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vi
c2l0ZURhdGFTdG9yZSBfdGVybWluYXRlTmV0d29ya1Byb2Nlc3NdOwogCi0gICAgUmV0YWluUHRy
PFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7Ci0KKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAIklEQkNoZWNrcG9pbnRXQUwiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpyZXF1ZXN0XTsKLQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bihbaGFuZGxlciBy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2VQb2ludGVyXSk7Ci0KICAgICBFWFBFQ1RfU1RSRVEoW1tbaGFu
ZGxlciBsYXN0U2NyaXB0TWVzc2FnZV0gYm9keV0gVVRGOFN0cmluZ10sICJTdWNjZXNzIik7CiAK
KyAgICBOU1VSTCAqb3JpZ2luVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmaWxlOi8vIl07
CisgICAgX19ibG9jayBOU1N0cmluZyAqaW5kZXhlZERCRGlyZWN0b3J5U3RyaW5nID0gbmlsOwor
ICAgIFtjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgX29yaWdpbkRpcmVjdG9y
eUZvclRlc3Rpbmc6b3JpZ2luVVJMIHRvcE9yaWdpbjpvcmlnaW5VUkwgdHlwZTpXS1dlYnNpdGVE
YXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICpy
ZXN1bHQpIHsKKyAgICAgICAgaW5kZXhlZERCRGlyZWN0b3J5U3RyaW5nID0gcmVzdWx0OworICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworICAgIE5TVVJMICppbmRleGVkREJEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOmluZGV4ZWREQkRpcmVjdG9yeVN0cmluZyBpc0RpcmVjdG9yeTpZRVNdOworICAgIE5T
U3RyaW5nICpkYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRl
SGFzaEZvckZpbGVOYW1lKCJ0ZXN0LXdhbC1jaGVja3BvaW50Iik7CisgICAgTlNVUkwgKmluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gW2luZGV4ZWREQkRpcmVjdG9yeSBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6ZGF0YWJhc2VIYXNoXTsKKyAgICBOU1VSTCAqaW5kZXhlZERCRGF0YWJh
c2VGaWxlID0gW2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl07CisgICAgTlNVUkwgKmluZGV4ZWREQkRhdGFi
YXNlV0FMID0gW2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzLXdhbCJdOworCiAgICAgLy8gV2UgaW5zZXJ0ZWQg
YSBzaW5nbGUgNSBNQiByb3csIHdoaWNoIGlzIGdyZWF0ZXIgdGhhbiB0aGUgV0FMIGF1dG8tY2hl
Y2twb2ludAogICAgIC8vIHRocmVzaG9sZCBvZiA0TUIsIHNvIHRoZSBXQUwgc2hvdWxkIGJlIG9m
IG1pbmltYWwgc2l6ZSBub3cuCi0gICAgTlNTdHJpbmcgKndhbFBhdGggPSBbYmFzZVBhdGggc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMtd2FsIl07Ci0g
ICAgRVhQRUNUX0xUKGZpbGVTaXplQXRQYXRoKHdhbFBhdGgpLCAxMjggKiAxMDI0KTsKKyAgICBF
WFBFQ1RfTFQoZmlsZVNpemVBdFBhdGgoaW5kZXhlZERCRGF0YWJhc2VXQUwucGF0aCksIDEyOCAq
IDEwMjQpOwogCiAgICAgLy8gU2luY2UgdGhlIHNpbmdsZSA1IE1CIHJvdyB3YXMgY2hlY2twb2lu
dGVkIHRvIHRoZSBtYWluIERCIGZpbGUsIGl0IHNob3VsZCBiZSBhdCBsZWFzdCB0aGF0IGxhcmdl
LgotICAgIE5TU3RyaW5nICpkYlBhdGggPSBbYmFzZVBhdGggc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXTsKLSAgICBFWFBFQ1RfR1QoZmlsZVNpemVB
dFBhdGgoZGJQYXRoKSwgNSAqIDEwMjQgKiAxMDI0KTsKKyAgICBFWFBFQ1RfR1QoZmlsZVNpemVB
dFBhdGgoaW5kZXhlZERCRGF0YWJhc2VGaWxlLnBhdGgpLCA1ICogMTAyNCAqIDEwMjQpOwogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJJbmRl
eFVwZ3JhZGVUb1YyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
REJJbmRleFVwZ3JhZGVUb1YyLm1tCmluZGV4IGI4YjI3NTU5NzVhODg0MGJiZDdlNTU3ZGRkZjdj
MTkxOWZkYjQzZTAuLjFmNzVmMjUyMTA4MjNjNGVmMWZhNTAzMTJhNGFlMzc0M2M3MmI3YjcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCSW5kZXhV
cGdyYWRlVG9WMi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0lEQkluZGV4VXBncmFkZVRvVjIubW0KQEAgLTg1LDI4ICs4NSwyOCBAQCBURVNUKEluZGV4ZWRE
QiwgSW5kZXhVcGdyYWRlVG9WMikKIAogc3RhdGljIHZvaWQgcnVuTXVsdGlwbGVJbmRpY2VzVGVz
dFdpdGhEYXRhYmFzZShOU1N0cmluZyogZGF0YWJhc2VOYW1lKQogewotICAgIFJldGFpblB0cjxJ
REJJbmRleFVwZ3JhZGVUb1YyTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbSURC
SW5kZXhVcGdyYWRlVG9WMk1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWlu
UHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gaGFuZGxlciA9IGFk
b3B0TlMoW1tJREJJbmRleFVwZ3JhZGVUb1YyTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5k
bGVyIl07Ci0KICAgICBbY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlIF90ZXJt
aW5hdGVOZXR3b3JrUHJvY2Vzc107CiAKICAgICBOU1VSTCAqdXJsID0gW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpkYXRhYmFzZU5hbWUgd2l0aEV4dGVuc2lvbjpAInNxbGl0
ZTMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Ci0KICAgICBOU1N0
cmluZyAqaGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmls
ZU5hbWUoImluZGV4LXVwZ3JhZGUtdGVzdCIpOwotICAgIE5TU3RyaW5nICpvcmlnaW5EaXJlY3Rv
cnkgPSBAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL1dl
YnNpdGVEYXRhL0luZGV4ZWREQi92MS9maWxlX18wLyI7Ci0gICAgTlNTdHJpbmcgKmRhdGFiYXNl
RGlyZWN0b3J5ID0gW1tvcmlnaW5EaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6aGFz
aF0gc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF07Ci0gICAgTlNVUkwgKnRhcmdldFVSTCA9
IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGF0YWJhc2VEaXJlY3RvcnldOwotICAgIFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnRhcmdldFVSTCBlcnJvcjpu
aWxdOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5
QXRVUkw6dGFyZ2V0VVJMIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRl
czpuaWwgZXJyb3I6bmlsXTsKLQotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
Y29weUl0ZW1BdFVSTDp1cmwgdG9VUkw6W3RhcmdldFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJdIGVycm9yOm5pbF07Ci0KLSAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKLQorICAgIE5TVVJMICpvcmlnaW5VUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImZpbGU6Ly8iXTsKKyAgICBfX2Jsb2NrIE5TU3RyaW5nICpvcmlnaW5EaXJlY3RvcnlTdHJp
bmcgPSBuaWw7CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSBfb3Jp
Z2luRGlyZWN0b3J5Rm9yVGVzdGluZzpvcmlnaW5VUkwgdG9wT3JpZ2luOm9yaWdpblVSTCB0eXBl
OldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIGNvbXBsZXRpb25IYW5kbGVyOl4o
TlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICBvcmlnaW5EaXJlY3RvcnlTdHJpbmcgPSByZXN1
bHQ7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisgICAgTlNVUkwgKmRhdGFiYXNlRGlyZWN0b3J5ID0gW1tOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6b3JpZ2luRGlyZWN0b3J5U3RyaW5nIGlzRGlyZWN0b3J5OllFU10gVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50Omhhc2hdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmRhdGFiYXNlRGlyZWN0b3J5IGVycm9yOm5pbF07
CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVS
TDpkYXRhYmFzZURpcmVjdG9yeSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJp
YnV0ZXM6bmlsIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBjb3B5SXRlbUF0VVJMOnVybCB0b1VSTDpbZGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXSBlcnJvcjpuaWxdOworCisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJREJJbmRleFVw
Z3JhZGVUb1YyV2l0aE11bHRpcGxlSW5kaWNlcyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnJlcXVlc3RdOwotCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZl
ZFNjcmlwdE1lc3NhZ2UpOwogCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAiR2V0IG9iamVjdDoge1wi
bmFtZVwiOlwiYXBwbGVcIixcImNvbG9yXCI6XCJyZWRcIn0iLCBbbGFzdFNjcmlwdE1lc3NhZ2Ug
Ym9keV0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbmRleGVkREJGaWxlTmFtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KaW5kZXggNDEwMjIyNGU0NTI3NGQzNjM3OWU0YmIw
MDJhMGZlZTg5ODMyZjViYy4uMzljYWVhYzgwNDUyNGQ1ZGRkYjA4YmYxY2E4MzY2N2RiZjk3NzU1
MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJGaWxlTmFtZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1NRTGl0ZUZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQv
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogQGludGVyZmFjZSBJbmRleGVkREJGaWxlTmFtZU1lc3NhZ2VIYW5kbGVyIDogTlNP
YmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CkBAIC01MCw2ICs1MSwxMiBAQCBzdGF0aWMg
dm9pZCBydW5UZXN0KCkKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbSW5kZXhlZERC
RmlsZU5hbWVNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgLy8gV2UgbmVlZCB0byBjcmVhdGUgY3VzdG9tIFdlYnNpdGVEYXRhU3RvcmUgdGhhdCB1c2Vz
IGN1c3RvbSBJbmRleGVkREIgcGF0aHMgdG8gdGVzdCBvbGQgbWlncmF0aW9uIGNvZGUuCisgICAg
YXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmdldCgpLnNob3VsZFVzZUN1c3RvbVN0b3JhZ2VQYXRocyA9IHRydWU7
CisgICAgLy8gQ3VzdG9tIFdlYnNpdGVEYXRhU3RvcmUgbXVzdCBoYXZlIGEgZGlmZmVyZW50IGdl
bmVyYWwgc3RvcmFnZSBkaXJlY3RvcnkgdGhhbiBkZWZhdWx0IFdlYnNpdGVEYXRhU3RvcmUuCisg
ICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuZ2VuZXJhbFN0b3JhZ2VEaXJl
Y3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFw
cGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVEYXRhL0RlZmF1bHQiIHN0cmlu
Z0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllFU107CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFs
bG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmdldCgpXSkuZ2V0KCldOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5k
bGVyIl07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKICAgICAKQEAgLTc5LDcgKzg2LDcgQEAgc3RhdGljIHZvaWQgcnVu
VGVzdCgpCiAgICAgTlNTdHJpbmcgKmV4aXN0aW5nRGF0YmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxp
dGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGV4aXN0aW5nRGF0YWJhc2VOYW1l
KTsKICAgICBOU1N0cmluZyAqY3JlYXRlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZp
bGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY3JlYXRlZERhdGFiYXNlTmFtZSk7CiAg
ICAgTlNTdHJpbmcgKnVudXNlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0
ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY3JlYXRlZERhdGFiYXNlTmFtZSk7Ci0gICAgTlNV
UkwgKmlkYlJvb3RVUkwgPSBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBf
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnldOworICAgIE5TVVJMICppZGJSb290VVJMID0gW3dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV07CiAgICAgTlNVUkwgKm9sZFZlcnNpb25EaXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MCJdOwogICAgIE5TVVJMICpuZXdWZXJzaW9u
RGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
djEiXTsKICAgICBOU1VSTCAqb2xkVmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCA9IFtvbGRWZXJz
aW9uRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogQCJmaWxlX18wIl07
CkBAIC0xNzMsMTUgKzE4MCwyMCBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCRmlsZU5hbWVB
UEkpCiB7CiAgICAgY3JlYXRlRGlyZWN0b3JpZXMoIkFQSSIpOwogICAgIAotICAgIFJldGFpblB0
cjxOU1NldD4gdHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpX
S1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcywgbmlsXSk7Ci0gICAgW1tXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6dHlw
ZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQg
Kj4gKiByZWNvcmRzKSB7CisgICAgYXV0byB0eXBlcyA9IGFkb3B0TlMoW1tOU1NldCBhbGxvY10g
aW5pdFdpdGhPYmplY3RzOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBuaWxd
KTsKKyAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgd2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuc2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBhdGhz
ID0gdHJ1ZTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5nZW5lcmFs
U3RvcmFnZURpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dl
YktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURhdGEvRGVm
YXVsdCIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAg
ICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKworICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6dHlwZXMuZ2V0KCkg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKiByZWNv
cmRzKSB7CiAgICAgICAgIEVYUEVDVF9FUSgzVSwgW3JlY29yZHMgY291bnRdKTsKICAgICAgICAg
cmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKICAgICB9XTsKICAgICByZWFkeVRvQ29udGludWUgPSBm
YWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CiAK
LSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZU
eXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRh
YmFzZXMsIG5pbF0gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgeworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W05TU2V0IHNl
dFdpdGhPYmplY3RzOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBuaWxdIG1v
ZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsK
ICAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKICAgICB9XTsKICAgICByZWFkeVRvQ29u
dGludWUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCmluZGV4IDMxMTYzYTMwOWY3
NDRjY2ViMzBhNmI5MTBlNTVkYmFlMTgzNzZjNjQuLjA3ZjBjZTI4MTU2MDE4ZmQ1ZTQ0ZjRlYjQ3
ZGFiNjU2NzI0N2I3ZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQpAQCAtMzI2LDI1ICsz
MjYsMzMgQEAgVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlRoaXJkUGFydHlEYXRhUmVtb3ZhbCkK
IAogVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlRoaXJkUGFydHlTdG9yYWdlTGF5b3V0KQogewot
ICAgIE5TVVJMICpyZXNvdXJjZVNhbHQgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJl
c291cmNlOkAiZ2VuZXJhbC1zdG9yYWdlLWRpcmVjdG9yeSIgd2l0aEV4dGVuc2lvbjpAInNhbHQi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Ci0gICAgTlNVUkwgKmdl
bmVyYWxTdG9yYWdlRGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJh
cnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0
YS9EZWZhdWx0IiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpZRVNd
OwotICAgIE5TVVJMICp3ZWJraXRPcmlnaW5GaWxlID0gW2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkVBTzY2czhKdkNXTm40RDNZUXV0NXBYZmlH
Rl9VWE5aR3ZNR042YUtJTGcvRUFPNjZzOEp2Q1dObjREM1lRdXQ1cFhmaUdGX1VYTlpHdk1HTjZh
S0lMZy9vcmlnaW4iXTsKLSAgICBOU1VSTCAqd2Via2l0SWZyYW1lT3JpZ2luRmlsZSA9IFtnZW5l
cmFsU3RvcmFnZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJFQU82NnM4
SnZDV05uNEQzWVF1dDVwWGZpR0ZfVVhOWkd2TUdONmFLSUxnL3Z1ZHZiTWxLWGoxbTZSaWJuVnZj
OFBkQWRjWFpzTkU2T05fQWw3eXFPc2cvb3JpZ2luIl07Ci0gICAgTlNVUkwgKmlmcmFtZVdlYktp
dE9yaWdpbkZpbGUgPSBbZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAidnVkdmJNbEtYajFtNlJpYm5WdmM4UGRBZGNYWnNORTZPTl9BbDd5cU9zZy9F
QU82NnM4SnZDV05uNEQzWVF1dDVwWGZpR0ZfVVhOWkd2TUdONmFLSUxnL29yaWdpbiJdOwotICAg
IE5TVVJMICppZGJEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFy
eS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVEYXRh
L0luZGV4ZWREQiIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVT
XTsKLSAgICBOU1N0cmluZyAqaGFzaGVkRGF0YWJhc2VOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmls
ZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZSgiSW5kZXhlZERCVGhpcmRQYXJ0eUZyYW1l
SGFzQWNjZXNzIik7Ci0gICAgTlNVUkwgKndlYmtpdElmcmFtZURhdGFiYXNlRmlsZSA9IFtOU1VS
TCBmaWxlVVJMV2l0aFBhdGg6W05TU3RyaW5nIHBhdGhXaXRoQ29tcG9uZW50czpAW2lkYkRpcmVj
dG9yeS5wYXRoLCBAInYxL2h0dHBfd2Via2l0Lm9yZ18wL2lmcmFtZV9fMC8iLCBoYXNoZWREYXRh
YmFzZU5hbWUsIEAiSW5kZXhlZERCLnNxbGl0ZTMiXV1dOworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
TlNTdHJpbmcgKmRhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1
dGVIYXNoRm9yRmlsZU5hbWUoIkluZGV4ZWREQlRoaXJkUGFydHlGcmFtZUhhc0FjY2VzcyIpOwor
ICAgIE5TVVJMICp3ZWJraXRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJr
aXQub3JnIl07CisgICAgTlNVUkwgKmlmcmFtZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aWZyYW1lOi8vIl07CisgICAgX19ibG9jayBOU1N0cmluZyAqZGlyZWN0b3J5U3RyaW5nID0gbmls
OworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0
YVN0b3JlIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOmlmcmFtZVVSTCB0b3BPcmlnaW46d2Vi
a2l0VVJMIHR5cGU6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgY29tcGxldGlv
bkhhbmRsZXI6XihOU1N0cmluZyAqcmVzdWx0KSB7CisgICAgICAgIGRpcmVjdG9yeVN0cmluZyA9
IHJlc3VsdDsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBOU1VSTCAqd2Via2l0SWZyYW1lUm9vdERpcmVjdG9y
eSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGlyZWN0b3J5U3RyaW5nIGlzRGlyZWN0b3J5OllF
U107CisgICAgTlNVUkwgKndlYmtpdElmcmFtZURhdGFiYXNlRGlyZWN0b3J5ID0gW3dlYmtpdElm
cmFtZVJvb3REaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRhdGFiYXNlSGFz
aF07CisgICAgTlNVUkwgKndlYmtpdElmcmFtZURhdGFiYXNlRmlsZSA9IFt3ZWJraXRJZnJhbWVE
YXRhYmFzZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIu
c3FsaXRlMyJdOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFtjb25maWd1cmF0aW9uLmdldCgp
LndlYnNpdGVEYXRhU3RvcmUgX29yaWdpbkRpcmVjdG9yeUZvclRlc3Rpbmc6d2Via2l0VVJMIHRv
cE9yaWdpbjppZnJhbWVVUkwgdHlwZTpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNl
cyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICpyZXN1bHQpIHsKKyAgICAgICAgZGlyZWN0
b3J5U3RyaW5nID0gcmVzdWx0OworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIE5TVVJMICppZnJhbWVXZWJLaXRS
b290RGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkaXJlY3RvcnlTdHJpbmcgaXNE
aXJlY3Rvcnk6WUVTXTsKKwogICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOwotICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRV
Ukw6Z2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgZXJyb3I6bmlsXTsKLSAgICBbZmlsZU1hbmFnZXIg
Y3JlYXRlRGlyZWN0b3J5QXRVUkw6Z2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnkgd2l0aEludGVybWVk
aWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwotICAgIFtmaWxl
TWFuYWdlciBjb3B5SXRlbUF0VVJMOnJlc291cmNlU2FsdCB0b1VSTDpbZ2VuZXJhbFN0b3JhZ2VE
aXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAic2FsdCJdIGVycm9yOm5pbF07
Ci0gICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDppZGJEaXJlY3RvcnkgZXJyb3I6bmls
XTsKKyAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOndlYmtpdElmcmFtZVJvb3REaXJl
Y3RvcnkgZXJyb3I6bmlsXTsKKyAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmlmcmFt
ZVdlYktpdFJvb3REaXJlY3RvcnkgZXJyb3I6bmlsXTsKIAotICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAg
YXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmdldCgpLl9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGlkYkRp
cmVjdG9yeTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5nZW5lcmFs
U3RvcmFnZURpcmVjdG9yeSA9IGdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIFtjb25maWd1
cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5nZXQoKV0pLmdldCgpXTsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbSW5kZXhlZERC
TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5h
bWU6QCJ0ZXN0SGFuZGxlciJdOwogICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tU
ZXN0VVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwpAQCAtMzYwLDEwICszNjgsOSBAQCBU
RVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eVN0b3JhZ2VMYXlvdXQpCiAKICAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOwogICAgIGxvYWRUaGlyZFBhcnR5UGFnZUluV2ViVmlldyh3ZWJWaWV3LmdldCgpLCBAImRh
dGFiYXNlIGlzIGNyZWF0ZWQgLSBwdXQgaXRlbSBzdWNjZXNzIik7Ci0gICAgRVhQRUNUX1RSVUUo
W2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6d2Via2l0T3JpZ2luRmlsZS5wYXRoXSk7Ci0g
ICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6d2Via2l0SWZyYW1l
T3JpZ2luRmlsZS5wYXRoXSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFtmaWxlTWFuYWdlciBmaWxlRXhp
c3RzQXRQYXRoOmlmcmFtZVdlYktpdE9yaWdpbkZpbGUucGF0aF0pOworICAgIEVYUEVDVF9UUlVF
KFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOndlYmtpdElmcmFtZVJvb3REaXJlY3Rvcnku
cGF0aF0pOwogICAgIEVYUEVDVF9UUlVFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOndl
YmtpdElmcmFtZURhdGFiYXNlRmlsZS5wYXRoXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtmaWxlTWFu
YWdlciBmaWxlRXhpc3RzQXRQYXRoOmlmcmFtZVdlYktpdFJvb3REaXJlY3RvcnkucGF0aF0pOwog
fQogCiBURVNUKEluZGV4ZWREQiwgTWlncmF0ZVRoaXJkUGFydHlEYXRhVG9HZW5lcmFsU3RvcmFn
ZURpcmVjdG9yeSkKQEAgLTU4NCwxMSArNTkxLDM1IEBAIFRFU1QoSW5kZXhlZERCLCBJbmRleGVk
REJHZXREYXRhYmFzZXMpCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAibWFpbiBmcmFtZSBkYXRhYmFz
ZXM6IFtdIiwgW2dldE5leHRNZXNzYWdlKCkgYm9keV0pOwogCiAgICAgLy8gR2V0dGluZyBkYXRh
YmFzZXMgc2hvdWxkIG5vdCBjcmVhdGUgZmlsZXMgb24gZGlzay4KLSAgICBOU1VSTCAqaWRiRGly
ZWN0b3J5VVJMID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gX2luZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5XTsKLSAgICBOU1VSTCAqdmVyc2lvbkRpcmVjdG9yeVVSTCA9
IFtpZGJEaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidjEiXTsKLSAg
ICBOU1VSTCAqYXBwbGVEaXJlY3RvcnlVUkwgPSBbdmVyc2lvbkRpcmVjdG9yeVVSTCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6IEAiaHR0cF9hcHBsZS5jb21fMCJdOwotICAgIE5TVVJMICph
cHBsZVdlYmtpdERpcmVjdG9yeVVSTCA9IFthcHBsZURpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6IEAid2Via2l0X18wIl07Ci0gICAgTlNVUkwgKndlYmtpdERpcmVjdG9y
eVVSTCA9IFt2ZXJzaW9uRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDog
QCJ3ZWJraXRfXzAiXTsKKyAgICBOU1VSTCAqYXBwbGVVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImh0dHA6Ly9hcHBsZS5jb20iXTsKKyAgICBOU1VSTCAqd2Via2l0VVJMID0gW05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJ3ZWJraXQ6Ly8iXTsKKyAgICBfX2Jsb2NrIE5TU3RyaW5nICphcHBsZURp
cmVjdG9yeVN0cmluZyA9IG5pbDsKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKyAgICBb
W1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBfb3JpZ2luRGlyZWN0b3J5Rm9y
VGVzdGluZzphcHBsZVVSTCB0b3BPcmlnaW46YXBwbGVVUkwgdHlwZTpXS1dlYnNpdGVEYXRhVHlw
ZUluZGV4ZWREQkRhdGFiYXNlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICpyZXN1bHQp
IHsKKyAgICAgICAgYXBwbGVEaXJlY3RvcnlTdHJpbmcgPSByZXN1bHQ7CisgICAgICAgIHJlYWR5
VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZyZWFkeVRvQ29udGludWUpOworICAgIE5TVVJMICphcHBsZURpcmVjdG9yeVVSTCA9IFtOU1VS
TCBmaWxlVVJMV2l0aFBhdGg6YXBwbGVEaXJlY3RvcnlTdHJpbmcgaXNEaXJlY3Rvcnk6WUVTXTsK
KworICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOworICAgIF9fYmxvY2sgTlNTdHJpbmcgKndl
YmtpdERpcmVjdG9yeVN0cmluZyA9IG5pbDsKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZh
dWx0RGF0YVN0b3JlXSBfb3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZzp3ZWJraXRVUkwgdG9wT3Jp
Z2luOndlYmtpdFVSTCB0eXBlOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICB3ZWJraXREaXJl
Y3RvcnlTdHJpbmcgPSByZXN1bHQ7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwor
ICAgIE5TVVJMICp3ZWJraXREaXJlY3RvcnlVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOndl
YmtpdERpcmVjdG9yeVN0cmluZyBpc0RpcmVjdG9yeTpZRVNdOworCisgICAgX19ibG9jayBOU1N0
cmluZyAqYXBwbGVXZWJraXREaXJlY3RvcnlTdHJpbmcgPSBuaWw7CisgICAgcmVhZHlUb0NvbnRp
bnVlID0gZmFsc2U7CisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0g
X29yaWdpbkRpcmVjdG9yeUZvclRlc3Rpbmc6d2Via2l0VVJMIHRvcE9yaWdpbjphcHBsZVVSTCB0
eXBlOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICBhcHBsZVdlYmtpdERpcmVjdG9yeVN0cmlu
ZyA9IHJlc3VsdDsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CisgICAgTlNVUkwg
KmFwcGxlV2Via2l0RGlyZWN0b3J5VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDphcHBsZVdl
YmtpdERpcmVjdG9yeVN0cmluZyBpc0RpcmVjdG9yeTpZRVNdOworCiAgICAgYXV0byBkZWZhdWx0
RmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CiAgICAgRVhQRUNU
X1RSVUUoW2RlZmF1bHRGaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmFwcGxlRGlyZWN0b3J5
VVJMLnBhdGhdKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlZmF1bHRGaWxlTWFuYWdlciBmaWxlRXhp
c3RzQXRQYXRoOmFwcGxlV2Via2l0RGlyZWN0b3J5VVJMLnBhdGhdKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCVGVtcEZpbGVTaXpl
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJUZW1w
RmlsZVNpemUubW0KaW5kZXggY2JhZDcyNDRlZTEzNThkNjg2MGIzMmFjMDIyZjNlYTZhZWIzMTEz
Yy4uZDY3NjRlYzIyNzQ0ZWY0ZDAwOTdiNmEzMDRkZWY2NjM1OTUwYmQ3YSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJUZW1wRmlsZVNp
emUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVk
REJUZW1wRmlsZVNpemUubW0KQEAgLTU5LDE4ICs1OSwyMCBAQCBURVNUKEluZGV4ZWREQiwgSW5k
ZXhlZERCVGVtcEZpbGVTaXplKQogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5n
ZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKIAorICAgIE5TVVJMICpvcmlnaW5VUkwgPSBbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImZpbGU6Ly8iXTsKKyAgICBfX2Jsb2NrIE5TU3RyaW5nICpkYXRh
YmFzZVJvb3REaXJlY3RvcnlTdHJpbmcgPSBuaWw7CisgICAgcmVhZHlUb0NvbnRpbnVlID0gZmFs
c2U7CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSBfb3JpZ2luRGly
ZWN0b3J5Rm9yVGVzdGluZzpvcmlnaW5VUkwgdG9wT3JpZ2luOm9yaWdpblVSTCB0eXBlOldLV2Vi
c2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJp
bmcgKnJlc3VsdCkgeworICAgICAgICBkYXRhYmFzZVJvb3REaXJlY3RvcnlTdHJpbmcgPSByZXN1
bHQ7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworICAgIE5TVVJMICpkYXRhYmFz
ZVJvb3REaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmRhdGFiYXNlUm9vdERpcmVj
dG9yeVN0cmluZyBpc0RpcmVjdG9yeTpZRVNdOwogICAgIE5TU3RyaW5nICpoYXNoID0gV2ViQ29y
ZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZSgiSW5kZXhlZERCVGVt
cEZpbGVTaXplIik7Ci0gICAgTlNTdHJpbmcgKmRhdGFiYXNlUm9vdERpcmVjdG9yeSA9IFtAIn4v
TGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNp
dGVEYXRhL0luZGV4ZWREQi8iIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdOwotICAgIE5T
U3RyaW5nICpkYXRhYmFzZURpcmVjdG9yeSA9IFtbW2RhdGFiYXNlUm9vdERpcmVjdG9yeSBzdHJp
bmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJdIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAImZpbGVfXzAiXSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6aGFzaF07
Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBpZGJQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpk
YXRhYmFzZVJvb3REaXJlY3RvcnkgaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICBSZXRhaW5QdHI8TlNV
Ukw+IHdhbEZpbGVQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbZGF0YWJhc2VEaXJlY3Rv
cnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMtd2Fs
Il0gaXNEaXJlY3Rvcnk6Tk9dOwotCi0gICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9pbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSA9IGlkYlBhdGguZ2V0KCk7CisgICAgTlNVUkwgKmRhdGFiYXNl
RGlyZWN0b3J5ID0gW2RhdGFiYXNlUm9vdERpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6aGFzaF07CisgICAgTlNVUkwgKndhbEZpbGVQYXRoID0gW2RhdGFiYXNlRGlyZWN0b3J5
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzLXdhbCJdOwog
Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gYWRvcHROUyhbW1dL
V2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpOwogICAgIGF1dG8gdHlwZXMgPSBhZG9w
dE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpXS1dlYnNpdGVEYXRhVHlwZUluZGV4
ZWREQkRhdGFiYXNlcywgbmlsXSk7Ci0KICAgICBbY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRl
RGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzLmdldCgpIG1vZGlmaWVkU2luY2U6W05T
RGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAgICAgcmVhZHlU
b0NvbnRpbnVlID0gdHJ1ZTsKICAgICB9XTsKQEAgLTk0LDggKzk2LDggQEAgVEVTVChJbmRleGVk
REIsIEluZGV4ZWREQlRlbXBGaWxlU2l6ZSkKICAgICB3ZWJWaWV3ID0gbmlsOwogICAgIFtjb25m
aWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNz
XTsKIAotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmls
ZUV4aXN0c0F0UGF0aDp3YWxGaWxlUGF0aC5nZXQoKS5wYXRoXSk7Ci0gICAgUmV0YWluUHRyPE5T
RGljdGlvbmFyeT4gZmlsZUF0dHJpYnV0ZXMgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGF0dHJpYnV0ZXNPZkl0ZW1BdFBhdGg6d2FsRmlsZVBhdGguZ2V0KCkucGF0aCBlcnJvcjpu
aWxdOworICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmls
ZUV4aXN0c0F0UGF0aDp3YWxGaWxlUGF0aC5wYXRoXSk7CisgICAgYXV0byBmaWxlQXR0cmlidXRl
cyA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gYXR0cmlidXRlc09mSXRlbUF0UGF0
aDp3YWxGaWxlUGF0aC5wYXRoIGVycm9yOm5pbF07CiAgICAgTlNOdW1iZXIgKmZpbGVTaXplQmVm
b3JlID0gW2ZpbGVBdHRyaWJ1dGVzIG9iamVjdEZvcktleTpOU0ZpbGVTaXplXTsKIAogICAgIC8v
IE9wZW4gdGhlIHNhbWUgZGF0YWJhc2UgYWdhaW4uCkBAIC0xMDcsNyArMTA5LDcgQEAgVEVTVChJ
bmRleGVkREIsIEluZGV4ZWREQlRlbXBGaWxlU2l6ZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBz
dHJpbmczID0gKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOwogCi0gICAgZmls
ZUF0dHJpYnV0ZXMgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGF0dHJpYnV0ZXNP
Zkl0ZW1BdFBhdGg6d2FsRmlsZVBhdGguZ2V0KCkucGF0aCBlcnJvcjpuaWxdOworICAgIGZpbGVB
dHRyaWJ1dGVzID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVzT2ZJ
dGVtQXRQYXRoOndhbEZpbGVQYXRoLnBhdGggZXJyb3I6bmlsXTsKICAgICBOU051bWJlciAqZmls
ZVNpemVBZnRlciA9IFtmaWxlQXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNGaWxlU2l6ZV07CiAg
ICAgRVhQRUNUX0dUKFtmaWxlU2l6ZUJlZm9yZSBsb25nTG9uZ1ZhbHVlXSwgW2ZpbGVTaXplQWZ0
ZXIgbG9uZ0xvbmdWYWx1ZV0pOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0KaW5kZXggOGU4NWE0
MGE1ZTgzYmEwMzQzMjFlN2U3OTY5ZDgzNTVlMzJjMjQ2NS4uZDA4ZGMyN2M1ODQ5NzVjZDA4ODQw
MTcxMGM2MDljOTdjN2U2MmMyZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQpAQCAtNTIsMTIg
KzUyLDEwIEBACiAKIFRFU1QoSW5kZXhlZERCLCBTdG9yZUJsb2JUaGVuUmVtb3ZlRGF0YSkKIHsK
LSAgICBSZXRhaW5QdHI8U3RvcmVCbG9iTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5T
KFtbU3RvcmVCbG9iTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHRO
UyhbW1N0b3JlQmxvYk1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRN
ZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwotCi0gICAg
UmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7Ci0KKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAIlN0b3JlQmxvYlRvQmVEZWxldGVkIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAKQEAgLTY1LDE0ICs2MywyMiBAQCBURVNUKElu
ZGV4ZWREQiwgU3RvcmVCbG9iVGhlblJlbW92ZURhdGEpCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAi
U3VjY2VzcyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAKICAgICBO
U1N0cmluZyAqaGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9y
RmlsZU5hbWUoIlN0b3JlQmxvYlRvQmVEZWxldGVkIik7Ci0gICAgTlNTdHJpbmcgKm9yaWdpbkRp
cmVjdG9yeSA9IEAifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRB
UEkvV2Vic2l0ZURhdGEvSW5kZXhlZERCL3YxL2ZpbGVfXzAvIjsKLSAgICBOU1N0cmluZyAqZGF0
YWJhc2VEaXJlY3RvcnkgPSBbW29yaWdpbkRpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1N0cmlu
ZzpoYXNoXSBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXTsKLSAgICBOU1N0cmluZyAqYmxv
YkZpbGVQYXRoID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIjEuYmxvYiJdOwotICAgIE5TU3RyaW5nICpkYXRhYmFzZUZpbGVQYXRoID0gW2RhdGFi
YXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5z
cWxpdGUzIl07CisgICAgTlNVUkwgKm9yaWdpblVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
ZmlsZTovLyJdOworICAgIF9fYmxvY2sgTlNTdHJpbmcgKm9yaWdpbkRpcmVjdG9yeVN0cmluZyA9
IG5pbDsKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKyAgICBbY29uZmlndXJhdGlvbi5n
ZXQoKS53ZWJzaXRlRGF0YVN0b3JlIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOm9yaWdpblVS
TCB0b3BPcmlnaW46b3JpZ2luVVJMIHR5cGU6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRh
YmFzZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqcmVzdWx0KSB7CisgICAgICAgIG9y
aWdpbkRpcmVjdG9yeVN0cmluZyA9IHJlc3VsdDsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250
aW51ZSk7CisgICAgTlNVUkwgKm9yaWdpbkRpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6b3JpZ2luRGlyZWN0b3J5U3RyaW5nIGlzRGlyZWN0b3J5OllFU107CisgICAgTlNVUkwgKmRh
dGFiYXNlRGlyZWN0b3J5ID0gW29yaWdpbkRpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6aGFzaF07CisgICAgTlNVUkwgKmJsb2JGaWxlVVJMID0gW2RhdGFiYXNlRGlyZWN0b3J5
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIjEuYmxvYiJdOworICAgIE5TVVJMICpkYXRh
YmFzZUZpbGVVUkwgPSBbZGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXTsKIAogICAgIC8vIFRoZSBkYXRhYmFzZSBmaWxlIGFu
ZCBibG9iIGZpbGUgc2hvdWxkIGRlZmluaXRlbHkgYmUgdGhlcmUgcmlnaHQgbm93LgotICAgIEVY
UEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDpibG9iRmlsZVBhdGhdKTsKLSAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGF0YWJhc2VGaWxlUGF0aF0pOworICAgIEVYUEVD
VF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpi
bG9iRmlsZVVSTC5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRhdGFiYXNlRmlsZVVSTC5wYXRoXSk7CiAKICAg
ICAvLyBUbyBtYWtlIHN1cmUgdGhhdCB0aGUgLXdhbCBhbmQgLXNobSBmaWxlcyBmb3IgYSBkYXRh
YmFzZSBhcmUgZGVsZXRlZCBldmVuIGlmIHRoZSBzcWxpdGUzIGZpbGUgaXMgYWxyZWFkeSBtaXNz
aW5nLAogICAgIC8vIHdlIG5lZWQgdG86CkBAIC04MCw0NCArODYsNDQgQEAgVEVTVChJbmRleGVk
REIsIFN0b3JlQmxvYlRoZW5SZW1vdmVEYXRhKQogICAgIC8vIDIgLSBNb3ZlIC13YWwgYW5kIC1z
aG0gZmlsZXMgaW50byB0aGF0IGRpcmVjdG9yeQogICAgIC8vIDMgLSBNYWtlIHN1cmUgdGhlIGVu
dGlyZSBkaXJlY3RvcnkgaXMgZGVsZXRlZAogICAgIE5TU3RyaW5nICpmYWtlSGFzaCA9IFdlYkNv
cmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoIkZha2VEYXRhYmFz
ZVBhdGgiKTsKLSAgICBOU1N0cmluZyAqZmFrZURhdGFiYXNlRGlyZWN0b3J5ID0gW1tvcmlnaW5E
aXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6ZmFrZUhhc2hdIHN0cmluZ0J5RXhwYW5k
aW5nVGlsZGVJblBhdGhdOwotICAgIE5TU3RyaW5nICpmYWtlU2htUGF0aCA9IFtmYWtlRGF0YWJh
c2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNx
bGl0ZTMtd2FsIl07Ci0gICAgTlNTdHJpbmcgKmZha2VXYWxQYXRoID0gW2Zha2VEYXRhYmFzZURp
cmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRl
My1zaG0iXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVj
dG9yeUF0UGF0aDpmYWtlRGF0YWJhc2VEaXJlY3Rvcnkgd2l0aEludGVybWVkaWF0ZURpcmVjdG9y
aWVzOk5PIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0UGF0aDpkYXRhYmFzZUZpbGVQYXRoIHRvUGF0aDpmYWtl
U2htUGF0aCBlcnJvcjpuaWxdOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
Y29weUl0ZW1BdFBhdGg6ZGF0YWJhc2VGaWxlUGF0aCB0b1BhdGg6ZmFrZVdhbFBhdGggZXJyb3I6
bmlsXTsKKyAgICBOU1VSTCAqZmFrZURhdGFiYXNlRGlyZWN0b3J5ID0gW29yaWdpbkRpcmVjdG9y
eSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZmFrZUhhc2hdOworICAgIE5TVVJMICpmYWtl
U2htVVJMID0gW2Zha2VEYXRhYmFzZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJJbmRleGVkREIuc3FsaXRlMy13YWwiXTsKKyAgICBOU1VSTCAqZmFrZVdhbFVSTCA9IFtm
YWtlRGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhl
ZERCLnNxbGl0ZTMtc2htIl07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBj
cmVhdGVEaXJlY3RvcnlBdFVSTDpmYWtlRGF0YWJhc2VEaXJlY3Rvcnkgd2l0aEludGVybWVkaWF0
ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDpibG9iRmlsZVVSTCB0b1VSTDpm
YWtlU2htVVJMIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBjb3B5SXRlbUF0VVJMOmRhdGFiYXNlRmlsZVVSTCB0b1VSTDpmYWtlV2FsVVJMIGVycm9yOm5p
bF07CiAKICAgICAvLyBNYWtlIHNvbWUgb3RoZXIgLmJsb2IgZmlsZXMgaW4gdGhlIGRhdGFiYXNl
IGRpcmVjdG9yeSB0byBsYXRlciB2YWxpZGF0ZSBhbGwgYmxvYiBmaWxlcyBpbiB0aGUgZGlyZWN0
b3J5IGFyZSBkZWxldGVkLgotICAgIE5TU3RyaW5nICpvdGhlckJsb2IxID0gW2RhdGFiYXNlRGly
ZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIjcxODIuYmxvYiJdOwotICAg
IE5TU3RyaW5nICpvdGhlckJsb2IyID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIjFhLmJsb2IiXTsKLSAgICBOU1N0cmluZyAqb3RoZXJCbG9iMyA9
IFtkYXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJhMS5i
bG9iIl07Ci0gICAgTlNTdHJpbmcgKm90aGVyQmxvYjQgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiLmJsb2IiXTsKLSAgICBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmJsb2JGaWxlUGF0aCB0b1BhdGg6b3Ro
ZXJCbG9iMSBlcnJvcjpuaWxdOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
Y29weUl0ZW1BdFBhdGg6YmxvYkZpbGVQYXRoIHRvUGF0aDpvdGhlckJsb2IyIGVycm9yOm5pbF07
Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0UGF0aDpibG9i
RmlsZVBhdGggdG9QYXRoOm90aGVyQmxvYjMgZXJyb3I6bmlsXTsKLSAgICBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmJsb2JGaWxlUGF0aCB0b1BhdGg6b3Ro
ZXJCbG9iNCBlcnJvcjpuaWxdOworICAgIE5TVVJMICpvdGhlckJsb2IxID0gW2RhdGFiYXNlRGly
ZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIjcxODIuYmxvYiJdOworICAgIE5T
VVJMICpvdGhlckJsb2IyID0gW2RhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIjFhLmJsb2IiXTsKKyAgICBOU1VSTCAqb3RoZXJCbG9iMyA9IFtkYXRhYmFzZURp
cmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJhMS5ibG9iIl07CisgICAgTlNV
UkwgKm90aGVyQmxvYjQgPSBbZGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiLmJsb2IiXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNv
cHlJdGVtQXRVUkw6YmxvYkZpbGVVUkwgdG9VUkw6b3RoZXJCbG9iMSBlcnJvcjpuaWxdOworICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDpibG9iRmlsZVVS
TCB0b1VSTDpvdGhlckJsb2IyIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOmJsb2JGaWxlVVJMIHRvVVJMOm90aGVyQmxvYjMgZXJy
b3I6bmlsXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRV
Ukw6YmxvYkZpbGVVUkwgdG9VUkw6b3RoZXJCbG9iNCBlcnJvcjpuaWxdOwogCiAgICAgcmVhZHlU
b0NvbnRpbnVlID0gZmFsc2U7CiAgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFT
dG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0
YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5k
bGVyOl4oKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6YmxvYkZpbGVQYXRoXSk7Ci0gICAgICAgIEVYUEVDVF9G
QUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGF0
YWJhc2VGaWxlUGF0aF0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmJsb2JGaWxlVVJMLnBhdGhdKTsKKyAgICAg
ICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0
c0F0UGF0aDpkYXRhYmFzZUZpbGVVUkwucGF0aF0pOwogCiAgICAgICAgIC8vIE1ha2Ugc3VyZSBh
bGwgZmFrZSBibG9iIGZpbGUgYXJlIGdvbmUuCi0gICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iMV0pOwor
ICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOm90aGVyQmxvYjEucGF0aF0pOwogCi0gICAgICAgIEVYUEVDVF9GQUxTRShb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9i
Ml0pOwotICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjNdKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2I0
XSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iMi5wYXRoXSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJC
bG9iMy5wYXRoXSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iNC5wYXRoXSk7CiAKICAgICAgICAg
Ly8gTWFrZSBzdXJlIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGUgZmFrZSBkYXRhYmFzZSBpcyBn
b25lLgotICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBmaWxlRXhpc3RzQXRQYXRoOmZha2VTaG1QYXRoXSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmFrZVdhbFBh
dGhdKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpmYWtlRGF0YWJhc2VEaXJlY3RvcnldKTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDpmYWtlU2htVVJMLnBhdGhdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmYWtlV2FsVVJMLnBhdGhdKTsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4
aXN0c0F0UGF0aDpmYWtlRGF0YWJhc2VEaXJlY3RvcnkucGF0aF0pOwogCiAgICAgICAgIC8vIE5v
dyBkZWxldGUgdGhlbSBzbyB3ZSdyZSBub3QgbGVhdmluZyBmaWxlcyBhcm91bmQuCi0gICAgICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpvdGhlckJs
b2IyIGVycm9yOm5pbF07Ci0gICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
cmVtb3ZlSXRlbUF0UGF0aDpvdGhlckJsb2IzIGVycm9yOm5pbF07Ci0gICAgICAgIFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpvdGhlckJsb2I0IGVycm9y
Om5pbF07CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRl
bUF0VVJMOm90aGVyQmxvYjIgZXJyb3I6bmlsXTsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6b3RoZXJCbG9iMyBlcnJvcjpuaWxdOworICAg
ICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpvdGhl
ckJsb2I0IGVycm9yOm5pbF07CiAKICAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKICAg
ICB9XTsKQEAgLTEzNiwyNCArMTQyLDMyIEBAIFRFU1QoSW5kZXhlZERCLCBTdG9yZUJsb2JUaGVu
RGVsZXRlRGF0YWJhc2UpCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAiU3VjY2VzcyIsIChOU1N0cmlu
ZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAKICAgICBOU1N0cmluZyAqaGFzaCA9IFdl
YkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoIlN0b3JlQmxv
YlRvQmVEZWxldGVkIik7Ci0gICAgTlNTdHJpbmcgKm9yaWdpbkRpcmVjdG9yeSA9IEAifi9MaWJy
YXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvV2Vic2l0ZURhdGEvSW5k
ZXhlZERCL3YxL2ZpbGVfXzAvIjsKLSAgICBOU1N0cmluZyAqZGF0YWJhc2VEaXJlY3RvcnkgPSBb
W29yaWdpbkRpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpoYXNoXSBzdHJpbmdCeUV4
cGFuZGluZ1RpbGRlSW5QYXRoXTsKLSAgICBOU1N0cmluZyAqYmxvYkZpbGVQYXRoID0gW2RhdGFi
YXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIjEuYmxvYiJdOwot
ICAgIE5TU3RyaW5nICpkYXRhYmFzZUZpbGVQYXRoID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0cmlu
Z0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl07CisgICAgTlNV
UkwgKm9yaWdpblVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZmlsZTovLyJdOworICAgIF9f
YmxvY2sgTlNTdHJpbmcgKm9yaWdpbkRpcmVjdG9yeVN0cmluZyA9IG5pbDsKKyAgICByZWFkeVRv
Q29udGludWUgPSBmYWxzZTsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0
b3JlIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOm9yaWdpblVSTCB0b3BPcmlnaW46b3JpZ2lu
VVJMIHR5cGU6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgY29tcGxldGlvbkhh
bmRsZXI6XihOU1N0cmluZyAqcmVzdWx0KSB7CisgICAgICAgIG9yaWdpbkRpcmVjdG9yeVN0cmlu
ZyA9IHJlc3VsdDsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CisgICAgTlNVUkwg
Km9yaWdpbkRpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6b3JpZ2luRGlyZWN0b3J5
U3RyaW5nIGlzRGlyZWN0b3J5OllFU107CisgICAgTlNVUkwgKmRhdGFiYXNlRGlyZWN0b3J5ID0g
W29yaWdpbkRpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6aGFzaF07CisgICAg
TlNVUkwgKmJsb2JGaWxlVVJMID0gW2RhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIjEuYmxvYiJdOworICAgIE5TVVJMICpkYXRhYmFzZUZpbGVVUkwgPSBbZGF0
YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNx
bGl0ZTMiXTsKIAotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVBhdGhdKTsKLSAgICBFWFBFQ1RfVFJVRShbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGF0YWJhc2VGaWxl
UGF0aF0pOworICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVVSTC5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRhdGFiYXNlRmls
ZVVSTC5wYXRoXSk7CiAKICAgICAvLyBBZGQgYSAuYmxvYiBmaWxlIHRoYXQgaXMgbm90IGNyZWF0
ZWQgYnkgSW5kZXhlZERCIEFQSS4KLSAgICBOU1N0cmluZyAqYW5vdGhlckJsb2JGaWxlUGF0aCA9
IFtkYXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCI3MTgy
LmJsb2IiXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQ
YXRoOmJsb2JGaWxlUGF0aCB0b1BhdGg6YW5vdGhlckJsb2JGaWxlUGF0aCBlcnJvcjpuaWxdOwor
ICAgIE5TVVJMICphbm90aGVyQmxvYkZpbGVVUkwgPSBbZGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiNzE4Mi5ibG9iIl07CisgICAgW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0UGF0aDpibG9iRmlsZVVSTC5wYXRoIHRvUGF0aDph
bm90aGVyQmxvYkZpbGVVUkwucGF0aCBlcnJvcjpuaWxdOwogCiAgICAgcmVhZHlUb0NvbnRpbnVl
ID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZGVsZXRlRGF0YWJh
c2UoKCkgPT4geyBzZW5kTWVzc2FnZSgnRGVsZXRlIHN1Y2Nlc3MnKTsgfSkiIGNvbXBsZXRpb25I
YW5kbGVyOm5pbF07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGlu
dWUpOwogICAgIEVYUEVDVF9XS19TVFJFUShAIkRlbGV0ZSBzdWNjZXNzIiwgKE5TU3RyaW5nICop
W2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKIAotICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6YmxvYkZpbGVQYXRoXSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0
c0F0UGF0aDpkYXRhYmFzZUZpbGVQYXRoXSk7Ci0gICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmFub3RoZXJCbG9iRmlsZVBhdGhd
KTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOmJsb2JGaWxlVVJMLnBhdGhdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRhdGFiYXNlRmlsZVVS
TC5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBmaWxlRXhpc3RzQXRQYXRoOmFub3RoZXJCbG9iRmlsZVVSTC5wYXRoXSk7CiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDdXN0b21QYXRocy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCmluZGV4IDhlNDdhYjk4MGFjZGZjNmUxNTM4
MDg4YjNlYzc5NzFlZTBiOWM3MzMuLjY2ZjkyNWFjNjRkNjgwZjk5ZWYzZTM2MmVjYmU1MzIzNmVj
ZGFjODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCkBAIC03Nyw4
ICs3Nyw4IEBAIHN0YXRpYyB2b2lkIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyhTaG91
bGRFbmFibGVQcm9jZXNzUHJld2FybWluZyBzaG91bGRFCiAgICAgcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmdldCgpLnByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseSA9IHNob3VsZEVuYWJs
ZVByb2Nlc3NQcmV3YXJtaW5nID09IFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3YXJtaW5nOjpZZXMg
PyBZRVMgOiBOTzsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bv
b2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmdldCgpXSk7CiAKLSAgICBSZXRhaW5QdHI8V2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzTWVz
c2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBh
dGhzTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1dlYnNp
dGVEYXRhU3RvcmVDdXN0b21QYXRoc01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJd
OwogCiAgICAgTlNVUkwgKnNxbFBhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGli
cmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVE
YXRhL1dlYlNRTC8iIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllF
U107CkBAIC04Niw3ICs4Niw2IEBAIHN0YXRpYyB2b2lkIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocyhTaG91bGRFbmFibGVQcm9jZXNzUHJld2FybWluZyBzaG91bGRFCiAgICAgTlNVUkwg
KmxvY2FsU3RvcmFnZVBhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9X
ZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVEYXRhL0xv
Y2FsU3RvcmFnZS8iIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllF
U107CiAgICAgTlNVUkwgKmNvb2tpZVN0b3JhZ2VGaWxlID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0
b21XZWJzaXRlRGF0YS9Db29raWVTdG9yYWdlL0Nvb2tpZS5GaWxlIiBzdHJpbmdCeUV4cGFuZGlu
Z1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpOT107CiAgICAgTlNVUkwgKnJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0
L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0YS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rv
cnk6WUVTXTsKLQogICAgIE5TVVJMICpkZWZhdWx0U1FMUGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkv
V2Vic2l0ZURhdGEvV2ViU1FMLyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJl
Y3Rvcnk6WUVTXTsKICAgICBOU1VSTCAqZGVmYXVsdElEQlBhdGggPSBbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJ
L1dlYnNpdGVEYXRhL0luZGV4ZWREQi8iIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlz
RGlyZWN0b3J5OllFU107CiAgICAgTlNVUkwgKmRlZmF1bHRMb2NhbFN0b3JhZ2VQYXRoID0gW05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQu
VGVzdFdlYktpdEFQSS9XZWJzaXRlRGF0YS9Mb2NhbFN0b3JhZ2UvIiBzdHJpbmdCeUV4cGFuZGlu
Z1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpZRVNdOwpAQCAtMTEyLDcgKzExMSw3IEBAIHN0YXRp
YyB2b2lkIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyhTaG91bGRFbmFibGVQcm9jZXNz
UHJld2FybWluZyBzaG91bGRFCiAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0TG9jYWxTdG9yYWdlUGF0aC5wYXRo
XSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmls
ZUV4aXN0c0F0UGF0aDpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhdGgucGF0aF0pOwog
Ci0gICAgUmV0YWluUHRyPF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiB3ZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKICAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fd2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBzcWxQYXRoOwogICAgIHdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmdldCgpLl9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGlkYlBhdGg7CiAg
ICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3dlYlN0b3JhZ2VEaXJlY3Rv
cnkgPSBsb2NhbFN0b3JhZ2VQYXRoOwpAQCAtMTIyLDcgKzEyMSw3IEBAIHN0YXRpYyB2b2lkIHJ1
bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyhTaG91bGRFbmFibGVQcm9jZXNzUHJld2FybWlu
ZyBzaG91bGRFCiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gYWRv
cHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpOwogICAgIGNvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgPSBwcm9jZXNzUG9vbC5nZXQoKTsKIAotICAgIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRl
bGVnYXRlOmhhbmRsZXIuZ2V0KCldOwogCiAgICAgYXV0byBwcmVmZXJlbmNlcyA9IChfX2JyaWRn
ZSBXS1ByZWZlcmVuY2VzUmVmKVtbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcmVmZXJlbmNlc107
CkBAIC0xNDUsNiArMTQ0LDE3IEBAIHN0YXRpYyB2b2lkIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocyhTaG91bGRFbmFibGVQcm9jZXNzUHJld2FybWluZyBzaG91bGRFCiAgICAgfV07CiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmbHVzaGVkKTsKIAorICAgIC8vIEdldCB0aGUg
SW5kZXhlZERCIGRhdGFiYXNlIHBhdGggaW4gdXNlLgorICAgIE5TVVJMICpmaWxlVVJMID0gW05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJmaWxlOi8vIl07CisgICAgX19ibG9jayBOU1N0cmluZyAqZmls
ZUlEQlBhdGhTdHJpbmcgPSBuaWw7CisgICAgZG9uZSA9IGZhbHNlOworICAgIFtjb25maWd1cmF0
aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgX29yaWdpbkRpcmVjdG9yeUZvclRlc3Rpbmc6Zmls
ZVVSTCB0b3BPcmlnaW46ZmlsZVVSTCB0eXBlOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0
YWJhc2VzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICBm
aWxlSURCUGF0aFN0cmluZyA9IHJlc3VsdDsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBOU1VSTCAqZmlsZUlE
QlBhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVJREJQYXRoU3RyaW5nIGlzRGlyZWN0
b3J5OllFU107CisKICAgICAvLyBGb3JjaWJseSBzaHV0IGRvd24gZXZlcnl0aGluZyBvZiBXZWJL
aXQgdGhhdCB3ZSBjYW4uCiAgICAgYXV0byBwaWQgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50
aWZpZXJdOwogICAgIGlmIChwaWQpCkBAIC0xODQsMzEgKzE5NCw0NSBAQCBzdGF0aWMgdm9pZCBy
dW5XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1p
bmcgc2hvdWxkRQogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBmaWxlRXhpc3RzQXRQYXRoOmlkYlBhdGgucGF0aF0pOwogICAgIEVYUEVDVF9UUlVFKFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0SURC
UGF0aC5wYXRoXSk7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBmaWxlSURCUGF0aCA9IFtbaWRiUGF0
aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJdIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAImZpbGVfXzAiXTsKLSAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZUlEQlBhdGguZ2V0KCkucGF0aF0pOwor
ICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0
c0F0UGF0aDpmaWxlSURCUGF0aC5wYXRoXSk7CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAg
ICAgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdl
dCgpXSk7Ci0gICAgICAgIFJldGFpblB0cjxOU1NldD4gdHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNl
cywgbmlsXSk7CisgICAgICAgIGF1dG8gdHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0czpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcywgbmlsXSk7
CisgICAgICAgIAorICAgICAgICBOU1VSTCAqYXBwbGVVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImh0dHBzOi8vYXBwbGUuY29tIl07CisgICAgICAgIF9fYmxvY2sgTlNTdHJpbmcgKmlkYlBh
dGhTdHJpbmcgPSBuaWw7CisgICAgICAgIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgW2RhdGFTdG9y
ZSBfb3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZzphcHBsZVVSTCB0b3BPcmlnaW46ZmlsZVVSTCB0
eXBlOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICAgICAgaWRiUGF0aFN0cmluZyA9IHJlc3Vs
dDsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICAgICAgTlNVUkwgKmZpbGVBcHBsZUlEQlBh
dGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmlkYlBhdGhTdHJpbmcgaXNEaXJlY3Rvcnk6WUVT
XTsKKworICAgICAgICBOU1VSTCAqd2Via2l0VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwczovL3dlYmtpdC5vcmciXTsKKyAgICAgICAgZG9uZSA9IGZhbHNlOworICAgICAgICBbZGF0
YVN0b3JlIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOndlYmtpdFVSTCB0b3BPcmlnaW46Zmls
ZVVSTCB0eXBlOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIGNvbXBsZXRpb25I
YW5kbGVyOl4oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICAgICAgaWRiUGF0aFN0cmluZyA9
IHJlc3VsdDsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICAgICAgTlNVUkwgKmZpbGVXZWJL
aXRJREJQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDppZGJQYXRoU3RyaW5nIGlzRGlyZWN0
b3J5OllFU107CiAKICAgICAgICAgLy8gU3ViZnJhbWUgb2YgZGlmZmVyZW50IG9yaWdpbnMgbWF5
IGFsc28gY3JlYXRlIEluZGV4ZWREQiBmaWxlcy4KICAgICAgICAgUmV0YWluUHRyPE5TVVJMPiB1
cmwxID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIkluZGV4ZWREQiIg
d2l0aEV4dGVuc2lvbjpAInNxbGl0ZTMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CiAgICAgICAgIFJldGFpblB0cjxOU1VSTD4gdXJsMiA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJbmRleGVkREIiIHdpdGhFeHRlbnNpb246QCJzcWxp
dGUzLXNobSIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICAg
ICAgUmV0YWluUHRyPE5TVVJMPiB1cmwzID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAIkluZGV4ZWREQiIgd2l0aEV4dGVuc2lvbjpAInNxbGl0ZTMtd2FsIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCi0gICAgICAgIFJldGFpblB0cjxO
U1VSTD4gZnJhbWVJREJQYXRoID0gW1tmaWxlSURCUGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCJodHRwc19hcHBsZS5jb21fMCJdIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyJdOwotICAgICAgICBbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOmZyYW1lSURCUGF0aC5nZXQoKSB3
aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07
Ci0KLSAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJM
OnVybDEuZ2V0KCkgdG9VUkw6W2ZyYW1lSURCUGF0aC5nZXQoKSBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJdIGVycm9yOm5pbF07Ci0gICAgICAgIFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwyLmdldCgpIHRvVVJM
OltmcmFtZUlEQlBhdGguZ2V0KCkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhl
ZERCLnNxbGl0ZTMtc2htIl0gZXJyb3I6bmlsXTsKLSAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDMuZ2V0KCkgdG9VUkw6W2ZyYW1lSURCUGF0
aC5nZXQoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMy13
YWwiXSBlcnJvcjpuaWxdOwotCi0gICAgICAgIFJldGFpblB0cjxOU1VSTD4gZnJhbWVJREJQYXRo
MiA9IFtbZmlsZUlEQlBhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiaHR0cHNfd2Vi
a2l0Lm9yZ18wIl0gVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vic2l0ZURhdGFTdG9y
ZUN1c3RvbVBhdGhzIl07Ci0gICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
Y3JlYXRlRGlyZWN0b3J5QXRVUkw6ZnJhbWVJREJQYXRoMi5nZXQoKSB3aXRoSW50ZXJtZWRpYXRl
RGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07CisgICAgICAgIFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6ZmlsZUFwcGxl
SURCUGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVy
cm9yOm5pbF07CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0
ZW1BdFVSTDp1cmwxLmdldCgpIHRvVVJMOltmaWxlQXBwbGVJREJQYXRoIFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKKyAgICAgICAg
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDIuZ2V0KCkg
dG9VUkw6W2ZpbGVBcHBsZUlEQlBhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5k
ZXhlZERCLnNxbGl0ZTMtc2htIl0gZXJyb3I6bmlsXTsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDMuZ2V0KCkgdG9VUkw6W2ZpbGVBcHBs
ZUlEQlBhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMt
d2FsIl0gZXJyb3I6bmlsXTsKIAotICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGNvcHlJdGVtQXRVUkw6dXJsMS5nZXQoKSB0b1VSTDpbZnJhbWVJREJQYXRoMi5nZXQoKSBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJdIGVycm9yOm5p
bF07Ci0gICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVS
TDp1cmwyLmdldCgpIHRvVVJMOltmcmFtZUlEQlBhdGgyLmdldCgpIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzLXNobSJdIGVycm9yOm5pbF07Ci0gICAgICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwzLmdldCgp
IHRvVVJMOltmcmFtZUlEQlBhdGgyLmdldCgpIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IkluZGV4ZWREQi5zcWxpdGUzLXdhbCJdIGVycm9yOm5pbF07CisgICAgICAgIFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6ZmlsZVdlYktpdElEQlBh
dGggd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpu
aWxdOworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRV
Ukw6dXJsMS5nZXQoKSB0b1VSTDpbZmlsZVdlYktpdElEQlBhdGggVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXSBlcnJvcjpuaWxdOworICAgICAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMi5nZXQoKSB0b1VS
TDpbZmlsZVdlYktpdElEQlBhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhl
ZERCLnNxbGl0ZTMtc2htIl0gZXJyb3I6bmlsXTsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDMuZ2V0KCkgdG9VUkw6W2ZpbGVXZWJLaXRJ
REJQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzLXdh
bCJdIGVycm9yOm5pbF07CiAKICAgICAgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZU
eXBlczp0eXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0
YVJlY29yZCAqPiAqIHJlY29yZHMpIHsKICAgICAgICAgICAgIEVYUEVDVF9FUShbcmVjb3JkcyBj
b3VudF0sICh1bnNpZ25lZCBsb25nKTMpOwpAQCAtMjE2LDcgKzI0MCw3IEBAIHN0YXRpYyB2b2lk
IHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyhTaG91bGRFbmFibGVQcm9jZXNzUHJld2Fy
bWluZyBzaG91bGRFCiAgICAgICAgICAgICAgICAgaWYgKFtbcmVjb3JkIGRpc3BsYXlOYW1lXSBp
c0VxdWFsOiBAImFwcGxlLmNvbSJdKSB7CiAgICAgICAgICAgICAgICAgICAgIFtkYXRhU3RvcmUg
cmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMuZ2V0KCkgZm9yRGF0YVJlY29yZHM6QFtyZWNvcmRdIGNv
bXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZFNj
cmlwdE1lc3NhZ2UgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmcmFtZUlE
QlBhdGguZ2V0KCkucGF0aF0pOworICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxlQXBw
bGVJREJQYXRoLnBhdGhdKTsKICAgICAgICAgICAgICAgICAgICAgfV07CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpAQCAtMjMwLDcgKzI1NCw3IEBAIHN0YXRpYyB2b2lkIHJ1bldl
YnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyhTaG91bGRFbmFibGVQcm9jZXNzUHJld2FybWluZyBz
aG91bGRFCiAgICAgICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwogICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAKLSAgICAg
ICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0
c0F0UGF0aDpmaWxlSURCUGF0aC5nZXQoKS5wYXRoXSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZVdlYktp
dElEQlBhdGgucGF0aF0pOwogCiAgICAgICAgIC8vIE5vdywgd2l0aCBicmFuZCBuZXcgV0tXZWJz
aXRlRGF0YVN0b3JlcyBwb2ludGluZyBhdCB0aGUgc2FtZSBjdXN0b20gY29va2llIHN0b3JhZ2Ug
bG9jYXRpb24sCiAgICAgICAgIC8vIGluIG5ld2x5IGZpcmVkIHVwIE5ldHdvcmtQcm9jZXNzZXMs
IHZlcmlmeSB0aGF0IHRoZSBmZXRjaCBhbmQgZGVsZXRlIEFQSXMgd29yayBhcyBleHBlY3RlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455727</attachid>
            <date>2022-03-24 22:58:43 -0700</date>
            <delta_ts>2022-03-24 23:49:20 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238269-20220324225842.patch</filename>
            <type>text/plain</type>
            <size>71308</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkyMDMxZTc2NzI0ZWJhMDQw
YjVlMDQ1N2FiMjlkNjc2NWIxNjczNzAuLjBkMWFmM2RlM2Y3OGU4NWE3MjQxMGRlNGMxM2E3NGNk
OThkM2VjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjItMDMtMjQgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGFuIFNQSSB0byBn
ZXQgd2Vic2l0ZSBkYXRhIGRpcmVjdG9yeSBmb3Igb3JpZ2luIGFuZCB1c2UgaXQgaW4gQVBJIHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgy
NjkKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFRo
ZXJlIGFyZSBhIGZldyB0ZXN0cyB1c2luZyBoYXJkY29kZWQgd2Vic2l0ZSBkYXRhIHBhdGhzIHRv
IGNoZWNrIGlmIGZpbGVzIGFyZSBjb3JyZWNseSBtb2RpZmllZCBieSBBUEkuCisgICAgICAgIEV2
ZXJ5dGltZSB3ZSBtaWdyYXRlIHdlYnNpdGUgZGF0YSAoZm9yIGV4YW1wbGUsIGlmIHdlIHN0YXJ0
IHVzaW5nIGdlbmVyYWwgc3RvcmFnZSBkaXJlY3RvcnkgZm9yIEluZGV4ZWREQiAKKyAgICAgICAg
c3RvcmFnZSksIHdlIG5lZWQgdG8gdXBkYXRlIHRoZXNlIHRlc3RzIHdpdGggbmV3IHBhdGhzLCBv
dGhlcndpc2UgdGhlIHRlc3RzIHdpbGwgY2hlY2sgdGhlIHdyb25nIHBhdGhzLiBMZXQncyAKKyAg
ICAgICAganVzdCBhZGQgYW4gU1BJIHNvIHRoZXNlIHRlc3RzIGNhbiBnZXQgdGhlIHBhdGhzIGlu
IHVzZSBkeW5hbWljYWxseSwgd2hpY2ggd291bGQgYXZvaWQgdGVzdCBicmVha2FnZSB3aGVuCisg
ICAgICAgIHdlIGRvIHdlYnNpdGUgZGF0YSBtaWdyYXRpb24uCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjp3ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpnZXRPcmlnaW5EaXJlY3RvcnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojp0b1N0b3JhZ2VUeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnJl
c29sdmVkTG9jYWxTdG9yYWdlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpyZXNvbHZlZElEQlN0b3JhZ2VQYXRoKToKKyAgICAgICAg
KFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnJlc29sdmVkUGF0
aCk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpyZXNvbHZlZFBhdGgp
OgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6cmVzb2x2ZWRMb2NhbFN0
b3JhZ2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OnJlc29sdmVkSURCU3RvcmFnZVBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRl
RGF0YVN0b3JlIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOnRvcE9yaWdpbjp0eXBlOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3
ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6Om9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMjItMDMtMjMgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBNaW5pQnJvd3Nl
ciBzaG93cyB0aGUgR1BVIFByb2Nlc3MgcGlkIGluIGl0cyB0aXRsZSBiYXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggODM0ZDE5YTVi
NjNkMGU1M2E4YmYyMzcyYTk1MzFjNGExY2VmNjhmMi4uNTg5ZDE2NjM0MTJjZjM0ZTMwY2UwMTYw
MzRlYmEzYWY4NjQ0MmVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIyNTksNiArMjI1OSwxNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVQogICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLm1vdmVEYXRhKGRhdGFU
eXBlcywgV1RGTW92ZShvbGRPcmlnaW4pLCBXVEZNb3ZlKG5ld09yaWdpbiksIFthZ2dyZWdhdG9y
XSB7IH0pOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJzaXRlRGF0YU9yaWdpbkRpcmVj
dG9yeUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIG9yaWdp
biwgY29uc3QgVVJMJiB0b3BPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZSBkYXRhVHlwZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAo
IXNlc3Npb24pCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworCisgICAg
YXV0byBjbGllbnRPcmlnaW4gPSBXZWJDb3JlOjpDbGllbnRPcmlnaW4geyBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21VUkwodG9wT3JpZ2luKSwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tVVJMKG9yaWdpbikgfTsKKyAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigp
LmdldE9yaWdpbkRpcmVjdG9yeShXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGRhdGFUeXBlLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBkOTM1ZjQ2Y2NjOTljYTg2Nzg0
ZjVmMTRlODBkZDcwYjUwMzgzYjI5Li5iZmEzMmRmZTc0Yjc5ZTZhOGQ1MGE2NTcxNWQ1MTBhNDFi
OGUyMzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0yOTIsNiArMjkyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJTdG9yYWdlKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGlk
SW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFF1
b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3
UXVvdGEpOwogICAgIHZvaWQgcmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCB3ZWJzaXRlRGF0YU9yaWdpbkRp
cmVjdG9yeUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYs
IFdlYnNpdGVEYXRhVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4m
Jik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgcGFyZW50UHJvY2Vzc0hh
c1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNjc4
OGQ2NWNjNmE4Y2NkM2YxMWY5MGIyZDY3NzllMjFhYmQxY2RjNi4uZmE3OWM1YjVkYjE0NDU5ZTM2
NjYxOTEyZGEyY2JmODk5ZTNkNjYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC00Niw2ICs0Niw3IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEZWxldGVX
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6Oldl
YnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkg
LT4gKCkKICAgICBEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlw
ZXMsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMsIFZlY3RvcjxT
dHJpbmc+IGNvb2tpZUhvc3ROYW1lcywgVmVjdG9yPFN0cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVz
LCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHJlZ2lzdHJhYmxlRG9tYWlucykg
LT4gKCkKICAgICBSZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVVJMIG9sZERvbWFpbiwgVVJMIG5ld0RvbWFpbiwgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzKSAtPiAoKQorICAgIFdlYnNpdGVEYXRhT3Jp
Z2luRGlyZWN0b3J5Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBvcmln
aW4sIFVSTCB0b3BPcmlnaW4sIGVudW06dWludDMyX3QgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGUg
d2Vic2l0ZURhdGFUeXBlKSAtPiAoU3RyaW5nIGRpcmVjdG9yeSkKIAogICAgIERvd25sb2FkUmVx
dWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9h
ZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgZW51bTpib29sIHN0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQogICAgIFJlc3VtZURvd25s
b2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2Fk
SUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgZW51bTpib29s
IFdlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQgY2FsbERvd25sb2FkRGlkU3RhcnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3
b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGU1MjBjOGFjYjRlMjYxZWMxN2ZiYjYwZGYwNjE4
ODJlMTNmNDVkZTkuLmYxZWVjYjRhYzA0ZmIxODhhNzY1MzAwYTU2M2FkODgwZDljMDg3MjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC02MzIsNyArNjMyLDcgQEAgdm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5
cGVzLCBXZWJDb3JlOjoKICAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcih0YXJnZXRP
cmlnaW4pLmRlbGV0ZURhdGEodHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSk7CiAKICAgICAg
ICAgLy8gTW92ZSBkYXRhIGZyb20gc291cmNlIG9yaWdpbiB0byB0YXJnZXQgb3JpZ2luLgotICAg
ICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHNvdXJjZU9yaWdpbikubW92ZURhdGEodHlw
ZXMsIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIodGFyZ2V0T3JpZ2luKS5yZXNvbHZlZExvY2Fs
U3RvcmFnZVBhdGgoKSwgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcih0YXJnZXRPcmlnaW4pLnJl
c29sdmVkSURCU3RvcmFnZVBhdGgoKSk7CisgICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFn
ZXIoc291cmNlT3JpZ2luKS5tb3ZlRGF0YSh0eXBlcywgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdl
cih0YXJnZXRPcmlnaW4pLnJlc29sdmVkUGF0aChXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFn
ZSksIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIodGFyZ2V0T3JpZ2luKS5yZXNvbHZlZFBhdGgo
V2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKTsKIAogICAgICAgICByZW1vdmVP
cmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUodGFyZ2V0T3JpZ2luKTsKICAgICAgICAgcmVt
b3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKHNvdXJjZU9yaWdpbik7CkBAIC02NDEs
NiArNjQxLDE5IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgV2ViQ29yZTo6CiAgICAgfSk7CiB9CiAKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRPcmlnaW5EaXJlY3RvcnkoV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiYgb3JpZ2luLCBXZWJzaXRlRGF0YVR5cGUgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghbV9jbG9zZWQpOworCisgICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0eXBlLCBv
cmlnaW4gPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShvcmlnaW4pKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBkaXJlY3RvcnkgPSBjcm9zc1RocmVhZENvcHkobG9jYWxPcmlnaW5TdG9y
YWdlTWFuYWdlcihvcmlnaW4pLnJlc29sdmVkUGF0aCh0eXBlKSldKCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRpcmVjdG9yeSkpOworICAgICAgICB9
KTsKKyAgICAgICAgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKG9yaWdpbik7
CisgICAgfSk7Cit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzdXNwZW5kKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCmluZGV4IDRlOWNkMjA3
OGYwYmIwY2QxMWZkNTllOGRlZjc3MWEyY2Y1NjJmMzEuLjExYWQyODgyMGYyZWZiYmEyMTA3MTI4
MzY3MTE5OTVmMmY3YjRiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTg2LDYgKzg2
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgZGVsZXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4mJik+JiYpOwogICAgIHZvaWQgbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNvdXJjZSwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgZ2V0T3JpZ2luRGlyZWN0b3J5KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJzaXRlRGF0
YVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZv
aWQgc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzdW1l
KCk7CiAgICAgdm9pZCBoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5h
Z2VyLmNwcAppbmRleCAyZmI4YWM1NzhmM2RmOTEyMTE5ZjQ1Y2JjYmNhMGFhNWM2NTAxMTZkLi43
MjViYmVhMzUwYjgyZWFlNDFmMTA2YWMyODUxYWY1MWU5ZGM2OGMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgICAgICBTZXNzaW9uU3Rv
cmFnZSwKICAgICAgICAgSW5kZXhlZERCLAogICAgIH07CisgICAgc3RkOjpvcHRpb25hbDxTdG9y
YWdlVHlwZT4gdG9TdG9yYWdlVHlwZShXZWJzaXRlRGF0YVR5cGUpIGNvbnN0OwogICAgIFN0cmlu
ZyB0b1N0b3JhZ2VJZGVudGlmaWVyKFN0b3JhZ2VUeXBlKSBjb25zdDsKICAgICBTdG9yYWdlQnVj
a2V0KGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRo
LCBib29sIHNob3VsZFVzZUN1c3RvbVBhdGhzKTsKICAgICBTdG9yYWdlQnVja2V0TW9kZSBtb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CkBAIC03Myw2ICs3NCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIG1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBTdHJpbmcm
IGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpOwogICAgIFN0
cmluZyByZXNvbHZlZExvY2FsU3RvcmFnZVBhdGgoKTsKICAgICBTdHJpbmcgcmVzb2x2ZWRJREJT
dG9yYWdlUGF0aCgpOworICAgIFN0cmluZyByZXNvbHZlZFBhdGgoV2Vic2l0ZURhdGFUeXBlKTsK
IAogcHJpdmF0ZToKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBmZXRjaERhdGFUeXBl
c0luTGlzdEZyb21NZW1vcnkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4pOwpAQCAtMTE3LDYg
KzExOSwyNSBAQCB2b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojpjb25u
ZWN0aW9uQ2xvc2VkKElQQzo6Q29ubmVjdGlvbjo6VW5pcQogICAgICAgICBtX3Nlc3Npb25TdG9y
YWdlTWFuYWdlci0+Y29ubmVjdGlvbkNsb3NlZChjb25uZWN0aW9uKTsKIH0KIAorc3RkOjpvcHRp
b25hbDxPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6U3RvcmFnZVR5cGU+IE9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojp0b1N0b3JhZ2VUeXBlKFdlYnNpdGVE
YXRhVHlwZSB3ZWJzaXRlRGF0YVR5cGUpIGNvbnN0Cit7CisgICAgc3dpdGNoICh3ZWJzaXRlRGF0
YVR5cGUpIHsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbToKKyAgICAgICAg
cmV0dXJuIFN0b3JhZ2VUeXBlOjpGaWxlU3lzdGVtOworICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBl
OjpMb2NhbFN0b3JhZ2U6CisgICAgICAgIHJldHVybiBTdG9yYWdlVHlwZTo6TG9jYWxTdG9yYWdl
OworICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZToKKyAgICAgICAgcmV0
dXJuIFN0b3JhZ2VUeXBlOjpTZXNzaW9uU3RvcmFnZTsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlw
ZTo6SW5kZXhlZERCRGF0YWJhc2VzOgorICAgICAgICByZXR1cm4gU3RvcmFnZVR5cGU6OkluZGV4
ZWREQjsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiBTdHJpbmcgT3Jp
Z2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnRvU3RvcmFnZUlkZW50aWZpZXIoU3Rv
cmFnZVR5cGUgdHlwZSkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTM1MSwxMCAr
MzcyLDExIEBAIFN0cmluZyBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6cmVz
b2x2ZWRMb2NhbFN0b3JhZ2VQYXRoKCkKICAgICAgICAgbV9yZXNvbHZlZExvY2FsU3RvcmFnZVBh
dGggPSBtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGg7CiAgICAgfSBlbHNlIGlmICghbV9yb290UGF0
aC5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0eXBl
U3RvcmFnZVBhdGgoU3RvcmFnZVR5cGU6OkxvY2FsU3RvcmFnZSk7Ci0gICAgICAgIEZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyhsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogICAgICAgICBh
dXRvIGxvY2FsU3RvcmFnZVBhdGggPSBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VG
aWxlUGF0aChsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwotICAgICAgICBpZiAoIW1fY3VzdG9tTG9j
YWxTdG9yYWdlUGF0aC5pc0VtcHR5KCkgJiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobG9jYWxT
dG9yYWdlUGF0aCkgJiYgRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2N1c3RvbUxvY2FsU3RvcmFn
ZVBhdGgpKQorICAgICAgICBpZiAoIW1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aC5pc0VtcHR5KCkg
JiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobG9jYWxTdG9yYWdlUGF0aCkgJiYgRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgpKSB7CisgICAgICAgICAgICBG
aWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAg
ICAgICAgICAgIFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06Om1vdmVEYXRhYmFzZUZpbGUobV9j
dXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIG1fcmVzb2x2ZWRMb2NhbFN0b3JhZ2VQYXRoID0gbG9jYWxTdG9yYWdlUGF0aDsKICAg
ICB9IGVsc2UKQEAgLTM4NCwxMSArNDA2LDI3IEBAIFN0cmluZyBPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUJ1Y2tldDo6cmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgpCiAgICAgICAgIElEQlN0
b3JhZ2VNYW5hZ2VyOjptaWdyYXRlT3JpZ2luRGF0YShtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoLCBp
ZGJTdG9yYWdlUGF0aCk7CiAgICAgICAgIG1fcmVzb2x2ZWRJREJTdG9yYWdlUGF0aCA9IGlkYlN0
b3JhZ2VQYXRoOwogICAgIH0KLSAgICAKICAgICBBU1NFUlQoIW1fcmVzb2x2ZWRJREJTdG9yYWdl
UGF0aC5pc051bGwoKSk7CiAgICAgcmV0dXJuIG1fcmVzb2x2ZWRJREJTdG9yYWdlUGF0aDsKIH0K
IAorU3RyaW5nIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpyZXNvbHZlZFBh
dGgoV2Vic2l0ZURhdGFUeXBlIHdlYmlzdGVEYXRhVHlwZSkKK3sKKyAgICBhdXRvIHR5cGUgPSB0
b1N0b3JhZ2VUeXBlKHdlYmlzdGVEYXRhVHlwZSk7CisgICAgaWYgKCF0eXBlKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgc3dpdGNoICgqdHlwZSkgeworICAgIGNhc2UgU3RvcmFnZVR5cGU6
OkxvY2FsU3RvcmFnZToKKyAgICAgICAgcmV0dXJuIHJlc29sdmVkTG9jYWxTdG9yYWdlUGF0aCgp
OworICAgIGNhc2UgU3RvcmFnZVR5cGU6OkluZGV4ZWREQjoKKyAgICAgICAgcmV0dXJuIHJlc29s
dmVkSURCU3RvcmFnZVBhdGgoKTsKKyAgICBjYXNlIFN0b3JhZ2VUeXBlOjpTZXNzaW9uU3RvcmFn
ZToKKyAgICBjYXNlIFN0b3JhZ2VUeXBlOjpGaWxlU3lzdGVtOgorICAgICAgICByZXR1cm4gdHlw
ZVN0b3JhZ2VQYXRoKCp0eXBlKTsKKyAgICB9Cit9CisKIFN0cmluZyBPcmlnaW5TdG9yYWdlTWFu
YWdlcjo6b3JpZ2luRmlsZUlkZW50aWZpZXIoKQogewogICAgIHJldHVybiBvcmlnaW5GaWxlTmFt
ZTsKQEAgLTQ4MiwxNCArNTIwLDkgQEAgSURCU3RvcmFnZU1hbmFnZXIqIE9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpleGlzdGluZ0lEQlN0b3JhZ2VNYW5hZ2VyKCkKICAgICByZXR1cm4gZGVmYXVsdEJ1
Y2tldCgpLmV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKTsKIH0KIAotU3RyaW5nIE9yaWdpblN0
b3JhZ2VNYW5hZ2VyOjpyZXNvbHZlZExvY2FsU3RvcmFnZVBhdGgoKQotewotICAgIHJldHVybiBk
ZWZhdWx0QnVja2V0KCkucmVzb2x2ZWRMb2NhbFN0b3JhZ2VQYXRoKCk7Ci19Ci0KLVN0cmluZyBP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6cmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgpCitTdHJpbmcgT3Jp
Z2luU3RvcmFnZU1hbmFnZXI6OnJlc29sdmVkUGF0aChXZWJzaXRlRGF0YVR5cGUgdHlwZSkKIHsK
LSAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLnJlc29sdmVkSURCU3RvcmFnZVBhdGgoKTsKKyAg
ICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLnJlc29sdmVkUGF0aCh0eXBlKTsKIH0KIAogYm9vbCBP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAppbmRl
eCBkODgyYjE3ZTY0NTY1OWU4ZDE3MWQ1MDg4NWE3NTc4NDE3MmEzNjBiLi41OThlNmIxYWIxNTFi
NjZhNWY2YmI1MTRmODg4MTJjZWU2ZDA2ZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaApAQCAt
NTksOCArNTksNyBAQCBwdWJsaWM6CiAgICAgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKiBleGlzdGlu
Z1Nlc3Npb25TdG9yYWdlTWFuYWdlcigpOwogICAgIElEQlN0b3JhZ2VNYW5hZ2VyJiBpZGJTdG9y
YWdlTWFuYWdlcihJREJTdG9yYWdlUmVnaXN0cnkmKTsKICAgICBJREJTdG9yYWdlTWFuYWdlciog
ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigpOwotICAgIFN0cmluZyByZXNvbHZlZExvY2FsU3Rv
cmFnZVBhdGgoKTsKLSAgICBTdHJpbmcgcmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgpOworICAgIFN0
cmluZyByZXNvbHZlZFBhdGgoV2Vic2l0ZURhdGFUeXBlKTsKICAgICBib29sIGlzQWN0aXZlKCk7
CiAgICAgYm9vbCBpc0VtcHR5KCk7CiAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmV0
Y2hEYXRhVHlwZXNJbkxpc3QoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW0KaW5kZXggYjdjZjA2NWJhYmNhMWM0OTFhYTNlYTM4NDFkMjQ2ODYzMWFhZWRhYy4uMDgxNzEw
YThjNzEzNzBiY2I5MWQ4NWI0MzUxMzljZDU4ZGE1ZTE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC04
NDQsNCArODQ0LDE2IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4g
dG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAgICAgICAgIH0pOwogfQog
CistKHZvaWQpX29yaWdpbkRpcmVjdG9yeUZvclRlc3Rpbmc6KE5TVVJMICopb3JpZ2luIHRvcE9y
aWdpbjooTlNVUkwgKil0b3BPcmlnaW4gdHlwZTooTlNTdHJpbmcgKilkYXRhVHlwZSBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAg
IGF1dG8gd2Vic2l0ZURhdGFUeXBlID0gV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZShkYXRhVHlw
ZSk7CisgICAgaWYgKCF3ZWJzaXRlRGF0YVR5cGUpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihuaWwpOworCisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5vcmlnaW5E
aXJlY3RvcnlGb3JUZXN0aW5nKG9yaWdpbiwgdG9wT3JpZ2luLCAqd2Vic2l0ZURhdGFUeXBlLCBb
Y29tcGxldGlvbkhhbmRsZXJDb3B5ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlckNvcHkpXShh
dXRvIHJlc3VsdCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkocmVzdWx0KTsKKyAg
ICB9KTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggMGU5NzM2YjEz
MjQzZjg4OTUzN2VhNzZmODZkNmIwMjU3MjRmMmNjNC4uNjcwNmYzMjgzOTE3YTJmOTIwYWFlZWUw
YTNkNTQ0OGUwZjM3NTdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC01OSw3ICs1
OSw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3Jl
RmV0Y2hPcHRpb25zKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd3NU
TFNGYWxsYmFjazopIEJPT0wgX2FsbG93c1RMU0ZhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBO
U1VSTCAqX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhf
UkVQTEFDRU1FTlQoIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLl9pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSIsIG1hY29zKDEwLjExLCAxMS4wKSwgaW9zKDkuMCwgMTQuMCkpOwog
Ci0KIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2s6KG51
bGxhYmxlIHZvaWQgKF4pKFdLV2Vic2l0ZURhdGFTdG9yZSAqLCBOU1N0cmluZyAqKSljYWxsYmFj
ayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKTsKIC0gKHZvaWQpX2dl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKIC0g
KHZvaWQpX2xvYWRlZFN1YnJlc291cmNlRG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjAp
KTsKQEAgLTExNiw2ICsxMTUsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dL
V2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogLSh2b2lkKV9kZWxldGVQdXNoQW5kTm90
aWZpY2F0aW9uUmVnaXN0cmF0aW9uOihXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4g
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSh2
b2lkKV9nZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9uczoodm9pZChe
KShOU1NldDxXS1NlY3VyaXR5T3JpZ2luICo+ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtKHZvaWQpX3Nj
b3BlVVJMOihOU1VSTCAqKXNjb3BlVVJMIGhhc1B1c2hTdWJzY3JpcHRpb25Gb3JUZXN0aW5nOih2
b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistKHZvaWQpX29yaWdpbkRpcmVjdG9yeUZvclRl
c3Rpbmc6KE5TVVJMICopb3JpZ2luIHRvcE9yaWdpbjooTlNVUkwgKil0b3BPcmlnaW4gdHlwZToo
TlNTdHJpbmcgKilkYXRhVHlwZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU1N0cmluZyAq
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCmluZGV4IDVhYjQ0ODliMzBjYjFmZTgxY2FhMTAxZjlhNTk2ZmI3ZTkyODVmY2IuLjI0Y2Yy
MGQ3MzIwMzk0MWQ1Y2EzMGQ4YTM1NTIxNzEwMTJlMTIxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAt
NDI3LDYgKzQyNywxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlbmFtZU9yaWdpbklu
V2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjbwogICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlbmFtZU9yaWdpbkluV2Vic2l0ZURh
dGEoc2Vzc2lvbklELCBvbGROYW1lLCBuZXdOYW1lLCBkYXRhVHlwZXMpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6d2Vic2l0ZURh
dGFPcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJM
JiYgb3JpZ2luLCBVUkwmJiB0b3BPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZSB0eXBlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OldlYnNpdGVE
YXRhT3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZyhzZXNzaW9uSUQsIFdURk1vdmUob3JpZ2luKSwg
V1RGTW92ZSh0b3BPcmlnaW4pLCB0eXBlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
fQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRl
KFRlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIHsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0
aGlzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCmluZGV4IDk1YmJjY2E1MTllYTVkNDI3OGJkMzA3YjVmMmNhZGEwZWRk
MzI2N2IuLjFlODZmMzQyNjNlMDhlMDBiNGMwOGY5NzM4N2JmMDg5ODliODFkMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCkBAIC0xMzUsNiArMTM1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBt
b2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNv
b2tpZUhvc3ROYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIEhTVFNDYWNoZUhvc3ROYW1lcywg
Y29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCByZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHdlYnNpdGVEYXRhT3JpZ2luRGly
ZWN0b3J5Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgVVJMJiYsIFVSTCYmLCBXZWJzaXRlRGF0
YVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogCiAgICAg
dm9pZCBnZXRMb2NhbFN0b3JhZ2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFp
bHM+JiYpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA1MGM5MzUyYjY2OWM1ODY5Yzc3NDhj
Mzk5YmEyMWM4YjdkNTkwYTEzLi43MWFlOTI2NTQ4YmNiOTFmNWNhMjBiOTAxNjI3MDYyMTc4Mzdh
N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTk4OCw2ICsxOTg4LDExIEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShVUkwmJiBvbGROYW1lLCBVUkwm
JiBuZXdOYW1lLCBPCiAgICAgbmV0d29ya1Byb2Nlc3MoKS5yZW5hbWVPcmlnaW5JbldlYnNpdGVE
YXRhKG1fc2Vzc2lvbklELCBvbGROYW1lLCBuZXdOYW1lLCBkYXRhVHlwZXMsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpvcmlnaW5EaXJl
Y3RvcnlGb3JUZXN0aW5nKFVSTCYmIG9yaWdpbiwgVVJMJiYgdG9wT3JpZ2luLCBXZWJzaXRlRGF0
YVR5cGUgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBuZXR3b3JrUHJvY2VzcygpLndlYnNpdGVEYXRhT3JpZ2lu
RGlyZWN0b3J5Rm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgV1RGTW92ZShvcmlnaW4pLCBXVEZNb3Zl
KHRvcE9yaWdpbiksIHR5cGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aGFzQXBw
Qm91bmRTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggYjEyOWFiZjM3NzVmNWMzYTg3NmJmZmRm
MzMyZWFjMWM4ZThjMjRhMS4uNmVmOTU1MDE3MjY2OGY1NjgxODU5YmI3NTMwMzI0MzU3ZjdlOWFk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaApAQCAtMzIwLDYgKzMyMCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3Jl
OjpMb2NhbFdlYkxvY2tSZWdpc3RyeSYgd2ViTG9ja1JlZ2lzdHJ5KCkgeyByZXR1cm4gbV93ZWJM
b2NrUmVnaXN0cnkuZ2V0KCk7IH0KIAogICAgIHZvaWQgcmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0
YShVUkwmJiwgVVJMJiYsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgb3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZyhVUkwm
JiwgVVJMJiYsIFdlYnNpdGVEYXRhVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmKT4mJik7CiAKICAgICBib29sIG5ldHdvcmtQcm9jZXNzSGFzRW50aXRsZW1lbnRGb3JU
ZXN0aW5nKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggMjEzZDJiNDY3YWVkNDYwZTZjNzY3M2E5ZTk4MGFiMjFlMTk2
NDBiZC4uZjJkOWFjZjA3ODU4ZmE5YTA2NTU4ZDIyZmQ3NjVkODMzODE2YjM4MyAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDIyLTAzLTI0ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAg
IEludHJvZHVjZSBhbiBTUEkgdG8gZ2V0IHdlYnNpdGUgZGF0YSBkaXJlY3RvcnkgZm9yIG9yaWdp
biBhbmQgdXNlIGl0IGluIEFQSSB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJp
c3RlbnNlbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURC
Q2hlY2twb2ludFdBTC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCSW5kZXhVcGdyYWRlVG9WMi5tbToKKyAgICAgICAgKHJ1
bk11bHRpcGxlSW5kaWNlc1Rlc3RXaXRoRGF0YWJhc2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW06CisgICAgICAgIChydW5U
ZXN0KToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW06CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJUZW1wRmlsZVNpemUubW06CisgICAgICAgIChU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxv
YlRoZW5EZWxldGUubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbToKKyAgICAg
ICAgKHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyk6CisKIDIwMjItMDMtMjMgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBNaW5pQnJv
d3NlciBzaG93cyB0aGUgR1BVIFByb2Nlc3MgcGlkIGluIGl0cyB0aXRsZSBiYXIKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCQ2hlY2twb2ludFdB
TC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCQ2hlY2twb2lu
dFdBTC5tbQppbmRleCA3MTAwNTI5ODYxYzkxYzA1ZWE4ZDI2MDQyZTY4Njg2M2ZkNDgzYjAwLi5m
MjMwMmVmNjhlY2RjMWZiYzJiMDVlYjY5Mjg0NjgwN2Y2MGY4ZjQxIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQkNoZWNrcG9pbnRXQUwubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJDaGVja3BvaW50V0FM
Lm1tCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisjaW1wb3J0ICJE
ZXByZWNhdGVkR2xvYmFsVmFsdWVzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgog
I2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCA8V2ViQ29yZS9TUUxpdGVGaWxlU3lzdGVtLmg+CkBA
IC03NCwzNiArNzUsNDAgQEAgbG9uZyBsb25nIGZpbGVTaXplQXRQYXRoKE5TU3RyaW5nICpwYXRo
KQogCiBURVNUKEluZGV4ZWREQiwgQ2hlY2twb2ludHNXQUxBdXRvbWF0aWNhbGx5KQogewotICAg
IE5TU3RyaW5nICpoYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hG
b3JGaWxlTmFtZSgidGVzdC13YWwtY2hlY2twb2ludCIpOwotICAgIE5TU3RyaW5nICpiYXNlUGF0
aCA9IFtAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL1dl
YnNpdGVEYXRhL0luZGV4ZWREQi92MS9maWxlX18wIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5Q
YXRoXTsKLSAgICBiYXNlUGF0aCA9IFtiYXNlUGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6aGFzaF07Ci0KLSAgICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBm
aWxlRXhpc3RzQXRQYXRoOmJhc2VQYXRoXSkgewotICAgICAgICBCT09MIHN1Y2Nlc3MgPSBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFBhdGg6YmFzZVBhdGggZXJy
b3I6bmlsXTsKLSAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7Ci0gICAgfQotCi0gICAgUmV0
YWluUHRyPElEQkNoZWNrcG9pbnRXQUxNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMo
W1tJREJDaGVja3BvaW50V0FMTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0g
YWRvcHROUyhbW0lEQkNoZWNrcG9pbnRXQUxNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwor
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRs
ZXIiXTsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURh
dGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZp
ZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKIAogICAgIFtjb25maWd1cmF0aW9uLmdldCgpLndl
YnNpdGVEYXRhU3RvcmUgX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzXTsKIAotICAgIFJldGFpblB0
cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOwotCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJJREJDaGVja3BvaW50V0FMIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6cmVxdWVzdF07Ci0KICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oW2hhbmRsZXIg
cmVjZWl2ZWRTY3JpcHRNZXNzYWdlUG9pbnRlcl0pOwotCiAgICAgRVhQRUNUX1NUUkVRKFtbW2hh
bmRsZXIgbGFzdFNjcmlwdE1lc3NhZ2VdIGJvZHldIFVURjhTdHJpbmddLCAiU3VjY2VzcyIpOwog
CisgICAgTlNVUkwgKm9yaWdpblVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZmlsZTovLyJd
OworICAgIF9fYmxvY2sgTlNTdHJpbmcgKmluZGV4ZWREQkRpcmVjdG9yeVN0cmluZyA9IG5pbDsK
KyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlIF9vcmlnaW5EaXJlY3Rv
cnlGb3JUZXN0aW5nOm9yaWdpblVSTCB0b3BPcmlnaW46b3JpZ2luVVJMIHR5cGU6V0tXZWJzaXRl
RGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAq
cmVzdWx0KSB7CisgICAgICAgIGluZGV4ZWREQkRpcmVjdG9yeVN0cmluZyA9IHJlc3VsdDsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKyAgICBOU1VSTCAqaW5kZXhlZERCRGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxX
aXRoUGF0aDppbmRleGVkREJEaXJlY3RvcnlTdHJpbmcgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBO
U1N0cmluZyAqZGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0
ZUhhc2hGb3JGaWxlTmFtZSgidGVzdC13YWwtY2hlY2twb2ludCIpOworICAgIE5TVVJMICppbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IFtpbmRleGVkREJEaXJlY3RvcnkgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OmRhdGFiYXNlSGFzaF07CisgICAgTlNVUkwgKmluZGV4ZWREQkRhdGFi
YXNlRmlsZSA9IFtpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJdOworICAgIE5TVVJMICppbmRleGVkREJEYXRh
YmFzZVdBTCA9IFtpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMy13YWwiXTsKKwogICAgIC8vIFdlIGluc2VydGVk
IGEgc2luZ2xlIDUgTUIgcm93LCB3aGljaCBpcyBncmVhdGVyIHRoYW4gdGhlIFdBTCBhdXRvLWNo
ZWNrcG9pbnQKICAgICAvLyB0aHJlc2hvbGQgb2YgNE1CLCBzbyB0aGUgV0FMIHNob3VsZCBiZSBv
ZiBtaW5pbWFsIHNpemUgbm93LgotICAgIE5TU3RyaW5nICp3YWxQYXRoID0gW2Jhc2VQYXRoIHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzLXdhbCJdOwot
ICAgIEVYUEVDVF9MVChmaWxlU2l6ZUF0UGF0aCh3YWxQYXRoKSwgMTI4ICogMTAyNCk7CisgICAg
RVhQRUNUX0xUKGZpbGVTaXplQXRQYXRoKGluZGV4ZWREQkRhdGFiYXNlV0FMLnBhdGgpLCAxMjgg
KiAxMDI0KTsKIAogICAgIC8vIFNpbmNlIHRoZSBzaW5nbGUgNSBNQiByb3cgd2FzIGNoZWNrcG9p
bnRlZCB0byB0aGUgbWFpbiBEQiBmaWxlLCBpdCBzaG91bGQgYmUgYXQgbGVhc3QgdGhhdCBsYXJn
ZS4KLSAgICBOU1N0cmluZyAqZGJQYXRoID0gW2Jhc2VQYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl07Ci0gICAgRVhQRUNUX0dUKGZpbGVTaXpl
QXRQYXRoKGRiUGF0aCksIDUgKiAxMDI0ICogMTAyNCk7CisgICAgRVhQRUNUX0dUKGZpbGVTaXpl
QXRQYXRoKGluZGV4ZWREQkRhdGFiYXNlRmlsZS5wYXRoKSwgNSAqIDEwMjQgKiAxMDI0KTsKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCSW5k
ZXhVcGdyYWRlVG9WMi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SURCSW5kZXhVcGdyYWRlVG9WMi5tbQppbmRleCBiOGIyNzU1OTc1YTg4NDBiYmQ3ZTU1N2RkZGY3
YzE5MTlmZGI0M2UwLi4xZjc1ZjI1MjEwODIzYzRlZjFmYTUwMzEyYTRhZTM3NDNjNzJiN2I3IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQkluZGV4
VXBncmFkZVRvVjIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JREJJbmRleFVwZ3JhZGVUb1YyLm1tCkBAIC04NSwyOCArODUsMjggQEAgVEVTVChJbmRleGVk
REIsIEluZGV4VXBncmFkZVRvVjIpCiAKIHN0YXRpYyB2b2lkIHJ1bk11bHRpcGxlSW5kaWNlc1Rl
c3RXaXRoRGF0YWJhc2UoTlNTdHJpbmcqIGRhdGFiYXNlTmFtZSkKIHsKLSAgICBSZXRhaW5QdHI8
SURCSW5kZXhVcGdyYWRlVG9WMk1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW0lE
QkluZGV4VXBncmFkZVRvVjJNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwotICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtbSURCSW5kZXhVcGdyYWRlVG9WMk1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9s
bGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFu
ZGxlciJdOwotCiAgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSBfdGVy
bWluYXRlTmV0d29ya1Byb2Nlc3NdOwogCiAgICAgTlNVUkwgKnVybCA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6ZGF0YWJhc2VOYW1lIHdpdGhFeHRlbnNpb246QCJzcWxp
dGUzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwotCiAgICAgTlNT
dHJpbmcgKmhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZp
bGVOYW1lKCJpbmRleC11cGdyYWRlLXRlc3QiKTsKLSAgICBOU1N0cmluZyAqb3JpZ2luRGlyZWN0
b3J5ID0gQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9X
ZWJzaXRlRGF0YS9JbmRleGVkREIvdjEvZmlsZV9fMC8iOwotICAgIE5TU3RyaW5nICpkYXRhYmFz
ZURpcmVjdG9yeSA9IFtbb3JpZ2luRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOmhh
c2hdIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdOwotICAgIE5TVVJMICp0YXJnZXRVUkwg
PSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmRhdGFiYXNlRGlyZWN0b3J5XTsKLSAgICBbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDp0YXJnZXRVUkwgZXJyb3I6
bmlsXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9y
eUF0VVJMOnRhcmdldFVSTCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0
ZXM6bmlsIGVycm9yOm5pbF07Ci0KLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGNvcHlJdGVtQXRVUkw6dXJsIHRvVVJMOlt0YXJnZXRVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXSBlcnJvcjpuaWxdOwotCi0gICAgUmV0YWluUHRy
PFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7Ci0KKyAgICBOU1VSTCAqb3JpZ2luVVJMID0gW05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJmaWxlOi8vIl07CisgICAgX19ibG9jayBOU1N0cmluZyAqb3JpZ2luRGlyZWN0b3J5U3Ry
aW5nID0gbmlsOworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgX29y
aWdpbkRpcmVjdG9yeUZvclRlc3Rpbmc6b3JpZ2luVVJMIHRvcE9yaWdpbjpvcmlnaW5VUkwgdHlw
ZTpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TU3RyaW5nICpyZXN1bHQpIHsKKyAgICAgICAgb3JpZ2luRGlyZWN0b3J5U3RyaW5nID0gcmVz
dWx0OworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworICAgIE5TVVJMICpkYXRhYmFzZURpcmVjdG9yeSA9IFtbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOm9yaWdpbkRpcmVjdG9yeVN0cmluZyBpc0RpcmVjdG9yeTpZRVNdIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpoYXNoXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpkYXRhYmFzZURpcmVjdG9yeSBlcnJvcjpuaWxd
OworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRV
Ukw6ZGF0YWJhc2VEaXJlY3Rvcnkgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRy
aWJ1dGVzOm5pbCBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gY29weUl0ZW1BdFVSTDp1cmwgdG9VUkw6W2RhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKKworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiSURCSW5kZXhV
cGdyYWRlVG9WMldpdGhNdWx0aXBsZUluZGljZXMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpyZXF1ZXN0XTsKLQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlKTsKIAogICAgIEVYUEVDVF9XS19TVFJFUShAIkdldCBvYmplY3Q6IHtc
Im5hbWVcIjpcImFwcGxlXCIsXCJjb2xvclwiOlwicmVkXCJ9IiwgW2xhc3RTY3JpcHRNZXNzYWdl
IGJvZHldKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5kZXhlZERCRmlsZU5hbWUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCmluZGV4IDQxMDIyMjRlNDUyNzRkMzYzNzllNGJi
MDAyYTBmZWU4OTgzMmY1YmMuLjM5Y2FlYWM4MDQ1MjRkNWRkZGIwOGJmMWNhODM2NjdkYmY5Nzc1
NTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5k
ZXhlZERCRmlsZU5hbWUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9TUUxpdGVGaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0
b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0
L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKIEBpbnRlcmZhY2UgSW5kZXhlZERCRmlsZU5hbWVNZXNzYWdlSGFuZGxlciA6IE5T
T2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgpAQCAtNTAsNiArNTEsMTIgQEAgc3RhdGlj
IHZvaWQgcnVuVGVzdCgpCiB7CiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0luZGV4ZWRE
QkZpbGVOYW1lTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIGN1c3RvbSBXZWJzaXRlRGF0YVN0b3JlIHRoYXQgdXNl
cyBjdXN0b20gSW5kZXhlZERCIHBhdGhzIHRvIHRlc3Qgb2xkIG1pZ3JhdGlvbiBjb2RlLgorICAg
IGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICB3ZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5zaG91bGRVc2VDdXN0b21TdG9yYWdlUGF0aHMgPSB0cnVl
OworICAgIC8vIEN1c3RvbSBXZWJzaXRlRGF0YVN0b3JlIG11c3QgaGF2ZSBhIGRpZmZlcmVudCBn
ZW5lcmFsIHN0b3JhZ2UgZGlyZWN0b3J5IHRoYW4gZGVmYXVsdCBXZWJzaXRlRGF0YVN0b3JlLgor
ICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLmdlbmVyYWxTdG9yYWdlRGly
ZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5h
cHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0YS9EZWZhdWx0IiBzdHJp
bmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpZRVNdOworICAgIFtjb25maWd1
cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5nZXQoKV0pLmdldCgpXTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9s
bGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFu
ZGxlciJdOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAgICAgCkBAIC03OSw3ICs4Niw3IEBAIHN0YXRpYyB2b2lkIHJ1
blRlc3QoKQogICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FM
aXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShleGlzdGluZ0RhdGFiYXNlTmFt
ZSk7CiAgICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVG
aWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOwog
ICAgIE5TU3RyaW5nICp1bnVzZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lz
dGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOwotICAgIE5T
VVJMICppZGJSb290VVJMID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0g
X2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5XTsKKyAgICBOU1VSTCAqaWRiUm9vdFVSTCA9IFt3
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKSBfaW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnldOwogICAgIE5TVVJMICpvbGRWZXJzaW9uRGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidjAiXTsKICAgICBOU1VSTCAqbmV3VmVyc2lv
bkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
InYxIl07CiAgICAgTlNVUkwgKm9sZFZlcnNpb25PcmlnaW5EaXJlY3RvcnlVUkwgPSBbb2xkVmVy
c2lvbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6IEAiZmlsZV9fMCJd
OwpAQCAtMTczLDE1ICsxODAsMjAgQEAgVEVTVChJbmRleGVkREIsIEluZGV4ZWREQkZpbGVOYW1l
QVBJKQogewogICAgIGNyZWF0ZURpcmVjdG9yaWVzKCJBUEkiKTsKICAgICAKLSAgICBSZXRhaW5Q
dHI8TlNTZXQ+IHR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6
V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMsIG5pbF0pOwotICAgIFtbV0tXZWJz
aXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOnR5
cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3Jk
ICo+ICogcmVjb3JkcykgeworICAgIGF1dG8gdHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2Nd
IGluaXRXaXRoT2JqZWN0czpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcywgbmls
XSk7CisgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLnNob3VsZFVzZUN1c3RvbVN0b3JhZ2VQYXRo
cyA9IHRydWU7CisgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuZ2VuZXJh
bFN0b3JhZ2VEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9X
ZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVEYXRhL0Rl
ZmF1bHQiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllFU107Cisg
ICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgp
XSk7CisKKyAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOnR5cGVzLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICogcmVj
b3JkcykgewogICAgICAgICBFWFBFQ1RfRVEoM1UsIFtyZWNvcmRzIGNvdW50XSk7CiAgICAgICAg
IHJlYWR5VG9Db250aW51ZSA9IHRydWU7CiAgICAgfV07CiAgICAgcmVhZHlUb0NvbnRpbnVlID0g
ZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwog
Ci0gICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9m
VHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0
YWJhc2VzLCBuaWxdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlv
bkhhbmRsZXI6XigpIHsKKyAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltOU1NldCBz
ZXRXaXRoT2JqZWN0czpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcywgbmlsXSBt
b2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7
CiAgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CiAgICAgfV07CiAgICAgcmVhZHlUb0Nv
bnRpbnVlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQppbmRleCAzMTE2M2EzMDlm
NzQ0Y2NlYjMwYTZiOTEwZTU1ZGJhZTE4Mzc2YzY0Li4wN2YwY2UyODE1NjAxOGZkNWU0NGY0ZWI0
N2RhYjY1NjcyNDdiN2U2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KQEAgLTMyNiwyNSAr
MzI2LDMzIEBAIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJUaGlyZFBhcnR5RGF0YVJlbW92YWwp
CiAKIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJUaGlyZFBhcnR5U3RvcmFnZUxheW91dCkKIHsK
LSAgICBOU1VSTCAqcmVzb3VyY2VTYWx0ID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAImdlbmVyYWwtc3RvcmFnZS1kaXJlY3RvcnkiIHdpdGhFeHRlbnNpb246QCJzYWx0
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwotICAgIE5TVVJMICpn
ZW5lcmFsU3RvcmFnZURpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJy
YXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURh
dGEvRGVmYXVsdCIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVT
XTsKLSAgICBOU1VSTCAqd2Via2l0T3JpZ2luRmlsZSA9IFtnZW5lcmFsU3RvcmFnZURpcmVjdG9y
eSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJFQU82NnM4SnZDV05uNEQzWVF1dDVwWGZp
R0ZfVVhOWkd2TUdONmFLSUxnL0VBTzY2czhKdkNXTm40RDNZUXV0NXBYZmlHRl9VWE5aR3ZNR042
YUtJTGcvb3JpZ2luIl07Ci0gICAgTlNVUkwgKndlYmtpdElmcmFtZU9yaWdpbkZpbGUgPSBbZ2Vu
ZXJhbFN0b3JhZ2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRUFPNjZz
OEp2Q1dObjREM1lRdXQ1cFhmaUdGX1VYTlpHdk1HTjZhS0lMZy92dWR2Yk1sS1hqMW02UmliblZ2
YzhQZEFkY1hac05FNk9OX0FsN3lxT3NnL29yaWdpbiJdOwotICAgIE5TVVJMICppZnJhbWVXZWJL
aXRPcmlnaW5GaWxlID0gW2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAInZ1ZHZiTWxLWGoxbTZSaWJuVnZjOFBkQWRjWFpzTkU2T05fQWw3eXFPc2cv
RUFPNjZzOEp2Q1dObjREM1lRdXQ1cFhmaUdGX1VYTlpHdk1HTjZhS0lMZy9vcmlnaW4iXTsKLSAg
ICBOU1VSTCAqaWRiRGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJh
cnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0
YS9JbmRleGVkREIiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllF
U107Ci0gICAgTlNTdHJpbmcgKmhhc2hlZERhdGFiYXNlTmFtZSA9IFdlYkNvcmU6OlNRTGl0ZUZp
bGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoIkluZGV4ZWREQlRoaXJkUGFydHlGcmFt
ZUhhc0FjY2VzcyIpOwotICAgIE5TVVJMICp3ZWJraXRJZnJhbWVEYXRhYmFzZUZpbGUgPSBbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOltOU1N0cmluZyBwYXRoV2l0aENvbXBvbmVudHM6QFtpZGJEaXJl
Y3RvcnkucGF0aCwgQCJ2MS9odHRwX3dlYmtpdC5vcmdfMC9pZnJhbWVfXzAvIiwgaGFzaGVkRGF0
YWJhc2VOYW1lLCBAIkluZGV4ZWREQi5zcWxpdGUzIl1dXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IE5TU3RyaW5nICpkYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21w
dXRlSGFzaEZvckZpbGVOYW1lKCJJbmRleGVkREJUaGlyZFBhcnR5RnJhbWVIYXNBY2Nlc3MiKTsK
KyAgICBOU1VSTCAqd2Via2l0VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Vi
a2l0Lm9yZyJdOworICAgIE5TVVJMICppZnJhbWVVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpA
ImlmcmFtZTovLyJdOworICAgIF9fYmxvY2sgTlNTdHJpbmcgKmRpcmVjdG9yeVN0cmluZyA9IG5p
bDsKKyAgICBkb25lID0gZmFsc2U7CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURh
dGFTdG9yZSBfb3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZzppZnJhbWVVUkwgdG9wT3JpZ2luOndl
YmtpdFVSTCB0eXBlOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIGNvbXBsZXRp
b25IYW5kbGVyOl4oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICBkaXJlY3RvcnlTdHJpbmcg
PSByZXN1bHQ7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgTlNVUkwgKndlYmtpdElmcmFtZVJvb3REaXJlY3Rv
cnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmRpcmVjdG9yeVN0cmluZyBpc0RpcmVjdG9yeTpZ
RVNdOworICAgIE5TVVJMICp3ZWJraXRJZnJhbWVEYXRhYmFzZURpcmVjdG9yeSA9IFt3ZWJraXRJ
ZnJhbWVSb290RGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkYXRhYmFzZUhh
c2hdOworICAgIE5TVVJMICp3ZWJraXRJZnJhbWVEYXRhYmFzZUZpbGUgPSBbd2Via2l0SWZyYW1l
RGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERC
LnNxbGl0ZTMiXTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQo
KS53ZWJzaXRlRGF0YVN0b3JlIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOndlYmtpdFVSTCB0
b3BPcmlnaW46aWZyYW1lVVJMIHR5cGU6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFz
ZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqcmVzdWx0KSB7CisgICAgICAgIGRpcmVj
dG9yeVN0cmluZyA9IHJlc3VsdDsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBOU1VSTCAqaWZyYW1lV2ViS2l0
Um9vdERpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGlyZWN0b3J5U3RyaW5nIGlz
RGlyZWN0b3J5OllFU107CisKICAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKLSAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0
VVJMOmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5IGVycm9yOm5pbF07Ci0gICAgW2ZpbGVNYW5hZ2Vy
IGNyZWF0ZURpcmVjdG9yeUF0VVJMOmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5IHdpdGhJbnRlcm1l
ZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBbZmls
ZU1hbmFnZXIgY29weUl0ZW1BdFVSTDpyZXNvdXJjZVNhbHQgdG9VUkw6W2dlbmVyYWxTdG9yYWdl
RGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInNhbHQiXSBlcnJvcjpuaWxd
OwotICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6aWRiRGlyZWN0b3J5IGVycm9yOm5p
bF07CisgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDp3ZWJraXRJZnJhbWVSb290RGly
ZWN0b3J5IGVycm9yOm5pbF07CisgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDppZnJh
bWVXZWJLaXRSb290RGlyZWN0b3J5IGVycm9yOm5pbF07CiAKLSAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAg
IGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBpZGJE
aXJlY3Rvcnk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuZ2VuZXJh
bFN0b3JhZ2VEaXJlY3RvcnkgPSBnZW5lcmFsU3RvcmFnZURpcmVjdG9yeTsKLSAgICBbY29uZmln
dXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uZ2V0KCldKS5nZXQoKV07CiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0luZGV4ZWRE
Qk1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJD
b250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBu
YW1lOkAidGVzdEhhbmRsZXIiXTsKICAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtb
VGVzdFVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKQEAgLTM2MCwxMCArMzY4LDkgQEAg
VEVTVChJbmRleGVkREIsIEluZGV4ZWREQlRoaXJkUGFydHlTdG9yYWdlTGF5b3V0KQogCiAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKICAgICBsb2FkVGhpcmRQYXJ0eVBhZ2VJbldlYlZpZXcod2ViVmlldy5nZXQoKSwgQCJk
YXRhYmFzZSBpcyBjcmVhdGVkIC0gcHV0IGl0ZW0gc3VjY2VzcyIpOwotICAgIEVYUEVDVF9UUlVF
KFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOndlYmtpdE9yaWdpbkZpbGUucGF0aF0pOwot
ICAgIEVYUEVDVF9UUlVFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOndlYmtpdElmcmFt
ZU9yaWdpbkZpbGUucGF0aF0pOwotICAgIEVYUEVDVF9GQUxTRShbZmlsZU1hbmFnZXIgZmlsZUV4
aXN0c0F0UGF0aDppZnJhbWVXZWJLaXRPcmlnaW5GaWxlLnBhdGhdKTsKKyAgICBFWFBFQ1RfVFJV
RShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDp3ZWJraXRJZnJhbWVSb290RGlyZWN0b3J5
LnBhdGhdKTsKICAgICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDp3
ZWJraXRJZnJhbWVEYXRhYmFzZUZpbGUucGF0aF0pOworICAgIEVYUEVDVF9GQUxTRShbZmlsZU1h
bmFnZXIgZmlsZUV4aXN0c0F0UGF0aDppZnJhbWVXZWJLaXRSb290RGlyZWN0b3J5LnBhdGhdKTsK
IH0KIAogVEVTVChJbmRleGVkREIsIE1pZ3JhdGVUaGlyZFBhcnR5RGF0YVRvR2VuZXJhbFN0b3Jh
Z2VEaXJlY3RvcnkpCkBAIC01ODQsMTEgKzU5MSwzNSBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhl
ZERCR2V0RGF0YWJhc2VzKQogICAgIEVYUEVDVF9XS19TVFJFUShAIm1haW4gZnJhbWUgZGF0YWJh
c2VzOiBbXSIsIFtnZXROZXh0TWVzc2FnZSgpIGJvZHldKTsKIAogICAgIC8vIEdldHRpbmcgZGF0
YWJhc2VzIHNob3VsZCBub3QgY3JlYXRlIGZpbGVzIG9uIGRpc2suCi0gICAgTlNVUkwgKmlkYkRp
cmVjdG9yeVVSTCA9IFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIF9pbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeV07Ci0gICAgTlNVUkwgKnZlcnNpb25EaXJlY3RvcnlVUkwg
PSBbaWRiRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYxIl07Ci0g
ICAgTlNVUkwgKmFwcGxlRGlyZWN0b3J5VVJMID0gW3ZlcnNpb25EaXJlY3RvcnlVUkwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImh0dHBfYXBwbGUuY29tXzAiXTsKLSAgICBOU1VSTCAq
YXBwbGVXZWJraXREaXJlY3RvcnlVUkwgPSBbYXBwbGVEaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OiBAIndlYmtpdF9fMCJdOwotICAgIE5TVVJMICp3ZWJraXREaXJlY3Rv
cnlVUkwgPSBbdmVyc2lvbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
IEAid2Via2l0X18wIl07CisgICAgTlNVUkwgKmFwcGxlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwOi8vYXBwbGUuY29tIl07CisgICAgTlNVUkwgKndlYmtpdFVSTCA9IFtOU1VSTCBV
UkxXaXRoU3RyaW5nOkAid2Via2l0Oi8vIl07CisgICAgX19ibG9jayBOU1N0cmluZyAqYXBwbGVE
aXJlY3RvcnlTdHJpbmcgPSBuaWw7CisgICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CisgICAg
W1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gX29yaWdpbkRpcmVjdG9yeUZv
clRlc3Rpbmc6YXBwbGVVUkwgdG9wT3JpZ2luOmFwcGxlVVJMIHR5cGU6V0tXZWJzaXRlRGF0YVR5
cGVJbmRleGVkREJEYXRhYmFzZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqcmVzdWx0
KSB7CisgICAgICAgIGFwcGxlRGlyZWN0b3J5U3RyaW5nID0gcmVzdWx0OworICAgICAgICByZWFk
eVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICBOU1VSTCAqYXBwbGVEaXJlY3RvcnlVUkwgPSBbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOmFwcGxlRGlyZWN0b3J5U3RyaW5nIGlzRGlyZWN0b3J5OllFU107
CisKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKyAgICBfX2Jsb2NrIE5TU3RyaW5nICp3
ZWJraXREaXJlY3RvcnlTdHJpbmcgPSBuaWw7CisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVm
YXVsdERhdGFTdG9yZV0gX29yaWdpbkRpcmVjdG9yeUZvclRlc3Rpbmc6d2Via2l0VVJMIHRvcE9y
aWdpbjp3ZWJraXRVUkwgdHlwZTpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyBj
b21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICpyZXN1bHQpIHsKKyAgICAgICAgd2Via2l0RGly
ZWN0b3J5U3RyaW5nID0gcmVzdWx0OworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsK
KyAgICBOU1VSTCAqd2Via2l0RGlyZWN0b3J5VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDp3
ZWJraXREaXJlY3RvcnlTdHJpbmcgaXNEaXJlY3Rvcnk6WUVTXTsKKworICAgIF9fYmxvY2sgTlNT
dHJpbmcgKmFwcGxlV2Via2l0RGlyZWN0b3J5U3RyaW5nID0gbmlsOworICAgIHJlYWR5VG9Db250
aW51ZSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVd
IF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOndlYmtpdFVSTCB0b3BPcmlnaW46YXBwbGVVUkwg
dHlwZTpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TU3RyaW5nICpyZXN1bHQpIHsKKyAgICAgICAgYXBwbGVXZWJraXREaXJlY3RvcnlTdHJp
bmcgPSByZXN1bHQ7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworICAgIE5TVVJM
ICphcHBsZVdlYmtpdERpcmVjdG9yeVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6YXBwbGVX
ZWJraXREaXJlY3RvcnlTdHJpbmcgaXNEaXJlY3Rvcnk6WUVTXTsKKwogICAgIGF1dG8gZGVmYXVs
dEZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOwogICAgIEVYUEVD
VF9UUlVFKFtkZWZhdWx0RmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDphcHBsZURpcmVjdG9y
eVVSTC5wYXRoXSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWZhdWx0RmlsZU1hbmFnZXIgZmlsZUV4
aXN0c0F0UGF0aDphcHBsZVdlYmtpdERpcmVjdG9yeVVSTC5wYXRoXSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlRlbXBGaWxlU2l6
ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCVGVt
cEZpbGVTaXplLm1tCmluZGV4IGNiYWQ3MjQ0ZWUxMzU4ZDY4NjBiMzJhYzAyMmYzZWE2YWViMzEx
M2MuLmQ2NzY0ZWMyMjc0NGVmNGQwMDk3YjZhMzA0ZGVmNjYzNTk1MGJkN2EgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCVGVtcEZpbGVT
aXplLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCVGVtcEZpbGVTaXplLm1tCkBAIC01OSwxOCArNTksMjAgQEAgVEVTVChJbmRleGVkREIsIElu
ZGV4ZWREQlRlbXBGaWxlU2l6ZSkKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIu
Z2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CiAKKyAgICBOU1VSTCAqb3JpZ2luVVJMID0gW05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJmaWxlOi8vIl07CisgICAgX19ibG9jayBOU1N0cmluZyAqZGF0
YWJhc2VSb290RGlyZWN0b3J5U3RyaW5nID0gbmlsOworICAgIHJlYWR5VG9Db250aW51ZSA9IGZh
bHNlOworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgX29yaWdpbkRp
cmVjdG9yeUZvclRlc3Rpbmc6b3JpZ2luVVJMIHRvcE9yaWdpbjpvcmlnaW5VUkwgdHlwZTpXS1dl
YnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3Ry
aW5nICpyZXN1bHQpIHsKKyAgICAgICAgZGF0YWJhc2VSb290RGlyZWN0b3J5U3RyaW5nID0gcmVz
dWx0OworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICBOU1VSTCAqZGF0YWJh
c2VSb290RGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkYXRhYmFzZVJvb3REaXJl
Y3RvcnlTdHJpbmcgaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBOU1N0cmluZyAqaGFzaCA9IFdlYkNv
cmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoIkluZGV4ZWREQlRl
bXBGaWxlU2l6ZSIpOwotICAgIE5TU3RyaW5nICpkYXRhYmFzZVJvb3REaXJlY3RvcnkgPSBbQCJ+
L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJz
aXRlRGF0YS9JbmRleGVkREIvIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXTsKLSAgICBO
U1N0cmluZyAqZGF0YWJhc2VEaXJlY3RvcnkgPSBbW1tkYXRhYmFzZVJvb3REaXJlY3Rvcnkgc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidjEiXSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJmaWxlX18wIl0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50Omhhc2hd
OwotICAgIFJldGFpblB0cjxOU1VSTD4gaWRiUGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6
ZGF0YWJhc2VSb290RGlyZWN0b3J5IGlzRGlyZWN0b3J5OllFU107Ci0gICAgUmV0YWluUHRyPE5T
VVJMPiB3YWxGaWxlUGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W2RhdGFiYXNlRGlyZWN0
b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzLXdh
bCJdIGlzRGlyZWN0b3J5Ok5PXTsKLQotICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5faW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBpZGJQYXRoLmdldCgpOworICAgIE5TVVJMICpkYXRhYmFz
ZURpcmVjdG9yeSA9IFtkYXRhYmFzZVJvb3REaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50Omhhc2hdOworICAgIE5TVVJMICp3YWxGaWxlUGF0aCA9IFtkYXRhYmFzZURpcmVjdG9y
eSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMy13YWwiXTsK
IAotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0TlMoW1tX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5nZXQoKTsKICAgICBhdXRvIHR5cGVzID0gYWRv
cHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVJbmRl
eGVkREJEYXRhYmFzZXMsIG5pbF0pOwotCiAgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0
ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczp0eXBlcy5nZXQoKSBtb2RpZmllZFNpbmNlOltO
U0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIHJlYWR5
VG9Db250aW51ZSA9IHRydWU7CiAgICAgfV07CkBAIC05NCw4ICs5Niw4IEBAIFRFU1QoSW5kZXhl
ZERCLCBJbmRleGVkREJUZW1wRmlsZVNpemUpCiAgICAgd2ViVmlldyA9IG5pbDsKICAgICBbY29u
ZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlIF90ZXJtaW5hdGVOZXR3b3JrUHJvY2Vz
c107CiAKLSAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZp
bGVFeGlzdHNBdFBhdGg6d2FsRmlsZVBhdGguZ2V0KCkucGF0aF0pOwotICAgIFJldGFpblB0cjxO
U0RpY3Rpb25hcnk+IGZpbGVBdHRyaWJ1dGVzID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBhdHRyaWJ1dGVzT2ZJdGVtQXRQYXRoOndhbEZpbGVQYXRoLmdldCgpLnBhdGggZXJyb3I6
bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZp
bGVFeGlzdHNBdFBhdGg6d2FsRmlsZVBhdGgucGF0aF0pOworICAgIGF1dG8gZmlsZUF0dHJpYnV0
ZXMgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGF0dHJpYnV0ZXNPZkl0ZW1BdFBh
dGg6d2FsRmlsZVBhdGgucGF0aCBlcnJvcjpuaWxdOwogICAgIE5TTnVtYmVyICpmaWxlU2l6ZUJl
Zm9yZSA9IFtmaWxlQXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNGaWxlU2l6ZV07CiAKICAgICAv
LyBPcGVuIHRoZSBzYW1lIGRhdGFiYXNlIGFnYWluLgpAQCAtMTA3LDcgKzEwOSw3IEBAIFRFU1Qo
SW5kZXhlZERCLCBJbmRleGVkREJUZW1wRmlsZVNpemUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4g
c3RyaW5nMyA9IChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XTsKIAotICAgIGZp
bGVBdHRyaWJ1dGVzID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVz
T2ZJdGVtQXRQYXRoOndhbEZpbGVQYXRoLmdldCgpLnBhdGggZXJyb3I6bmlsXTsKKyAgICBmaWxl
QXR0cmlidXRlcyA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gYXR0cmlidXRlc09m
SXRlbUF0UGF0aDp3YWxGaWxlUGF0aC5wYXRoIGVycm9yOm5pbF07CiAgICAgTlNOdW1iZXIgKmZp
bGVTaXplQWZ0ZXIgPSBbZmlsZUF0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TRmlsZVNpemVdOwog
ICAgIEVYUEVDVF9HVChbZmlsZVNpemVCZWZvcmUgbG9uZ0xvbmdWYWx1ZV0sIFtmaWxlU2l6ZUFm
dGVyIGxvbmdMb25nVmFsdWVdKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tCmluZGV4IDhlODVh
NDBhNWU4M2JhMDM0MzIxZTdlNzk2OWQ4MzU1ZTMyYzI0NjUuLmQwOGRjMjdjNTg0OTc1Y2QwODg0
MDE3MTBjNjA5Yzk3YzdlNjJjMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0KQEAgLTUyLDEy
ICs1MiwxMCBAQAogCiBURVNUKEluZGV4ZWREQiwgU3RvcmVCbG9iVGhlblJlbW92ZURhdGEpCiB7
Ci0gICAgUmV0YWluUHRyPFN0b3JlQmxvYk1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHRO
UyhbW1N0b3JlQmxvYk1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWluUHRy
PFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0
TlMoW1tTdG9yZUJsb2JNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKLQotICAg
IFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBOU1VSTFJlcXVlc3QgKnJl
cXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJTdG9yZUJsb2JUb0JlRGVsZXRlZCIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogCkBAIC02NSwxNCArNjMsMjIgQEAgVEVTVChJ
bmRleGVkREIsIFN0b3JlQmxvYlRoZW5SZW1vdmVEYXRhKQogICAgIEVYUEVDVF9XS19TVFJFUShA
IlN1Y2Nlc3MiLCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwogCiAgICAg
TlNTdHJpbmcgKmhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZv
ckZpbGVOYW1lKCJTdG9yZUJsb2JUb0JlRGVsZXRlZCIpOwotICAgIE5TU3RyaW5nICpvcmlnaW5E
aXJlY3RvcnkgPSBAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0
QVBJL1dlYnNpdGVEYXRhL0luZGV4ZWREQi92MS9maWxlX18wLyI7Ci0gICAgTlNTdHJpbmcgKmRh
dGFiYXNlRGlyZWN0b3J5ID0gW1tvcmlnaW5EaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdTdHJp
bmc6aGFzaF0gc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF07Ci0gICAgTlNTdHJpbmcgKmJs
b2JGaWxlUGF0aCA9IFtkYXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCIxLmJsb2IiXTsKLSAgICBOU1N0cmluZyAqZGF0YWJhc2VGaWxlUGF0aCA9IFtkYXRh
YmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIu
c3FsaXRlMyJdOworICAgIE5TVVJMICpvcmlnaW5VUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpA
ImZpbGU6Ly8iXTsKKyAgICBfX2Jsb2NrIE5TU3RyaW5nICpvcmlnaW5EaXJlY3RvcnlTdHJpbmcg
PSBuaWw7CisgICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CisgICAgW2NvbmZpZ3VyYXRpb24u
Z2V0KCkud2Vic2l0ZURhdGFTdG9yZSBfb3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZzpvcmlnaW5V
UkwgdG9wT3JpZ2luOm9yaWdpblVSTCB0eXBlOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0
YWJhc2VzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICBv
cmlnaW5EaXJlY3RvcnlTdHJpbmcgPSByZXN1bHQ7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29u
dGludWUpOworICAgIE5TVVJMICpvcmlnaW5EaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOm9yaWdpbkRpcmVjdG9yeVN0cmluZyBpc0RpcmVjdG9yeTpZRVNdOworICAgIE5TVVJMICpk
YXRhYmFzZURpcmVjdG9yeSA9IFtvcmlnaW5EaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50Omhhc2hdOworICAgIE5TVVJMICpibG9iRmlsZVVSTCA9IFtkYXRhYmFzZURpcmVjdG9y
eSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCIxLmJsb2IiXTsKKyAgICBOU1VSTCAqZGF0
YWJhc2VGaWxlVVJMID0gW2RhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl07CiAKICAgICAvLyBUaGUgZGF0YWJhc2UgZmlsZSBh
bmQgYmxvYiBmaWxlIHNob3VsZCBkZWZpbml0ZWx5IGJlIHRoZXJlIHJpZ2h0IG5vdy4KLSAgICBF
WFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6YmxvYkZpbGVQYXRoXSk7Ci0gICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGhdKTsKKyAgICBFWFBF
Q1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6
YmxvYkZpbGVVUkwucGF0aF0pOworICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkYXRhYmFzZUZpbGVVUkwucGF0aF0pOwogCiAg
ICAgLy8gVG8gbWFrZSBzdXJlIHRoYXQgdGhlIC13YWwgYW5kIC1zaG0gZmlsZXMgZm9yIGEgZGF0
YWJhc2UgYXJlIGRlbGV0ZWQgZXZlbiBpZiB0aGUgc3FsaXRlMyBmaWxlIGlzIGFscmVhZHkgbWlz
c2luZywKICAgICAvLyB3ZSBuZWVkIHRvOgpAQCAtODAsNDQgKzg2LDQ0IEBAIFRFU1QoSW5kZXhl
ZERCLCBTdG9yZUJsb2JUaGVuUmVtb3ZlRGF0YSkKICAgICAvLyAyIC0gTW92ZSAtd2FsIGFuZCAt
c2htIGZpbGVzIGludG8gdGhhdCBkaXJlY3RvcnkKICAgICAvLyAzIC0gTWFrZSBzdXJlIHRoZSBl
bnRpcmUgZGlyZWN0b3J5IGlzIGRlbGV0ZWQKICAgICBOU1N0cmluZyAqZmFrZUhhc2ggPSBXZWJD
b3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKCJGYWtlRGF0YWJh
c2VQYXRoIik7Ci0gICAgTlNTdHJpbmcgKmZha2VEYXRhYmFzZURpcmVjdG9yeSA9IFtbb3JpZ2lu
RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOmZha2VIYXNoXSBzdHJpbmdCeUV4cGFu
ZGluZ1RpbGRlSW5QYXRoXTsKLSAgICBOU1N0cmluZyAqZmFrZVNobVBhdGggPSBbZmFrZURhdGFi
YXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5z
cWxpdGUzLXdhbCJdOwotICAgIE5TU3RyaW5nICpmYWtlV2FsUGF0aCA9IFtmYWtlRGF0YWJhc2VE
aXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0
ZTMtc2htIl07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJl
Y3RvcnlBdFBhdGg6ZmFrZURhdGFiYXNlRGlyZWN0b3J5IHdpdGhJbnRlcm1lZGlhdGVEaXJlY3Rv
cmllczpOTyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwotICAgIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFBhdGg6ZGF0YWJhc2VGaWxlUGF0aCB0b1BhdGg6ZmFr
ZVNobVBhdGggZXJyb3I6bmlsXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGNvcHlJdGVtQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGggdG9QYXRoOmZha2VXYWxQYXRoIGVycm9y
Om5pbF07CisgICAgTlNVUkwgKmZha2VEYXRhYmFzZURpcmVjdG9yeSA9IFtvcmlnaW5EaXJlY3Rv
cnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZha2VIYXNoXTsKKyAgICBOU1VSTCAqZmFr
ZVNobVVSTCA9IFtmYWtlRGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMtd2FsIl07CisgICAgTlNVUkwgKmZha2VXYWxVUkwgPSBb
ZmFrZURhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4
ZWREQi5zcWxpdGUzLXNobSJdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
Y3JlYXRlRGlyZWN0b3J5QXRVUkw6ZmFrZURhdGFiYXNlRGlyZWN0b3J5IHdpdGhJbnRlcm1lZGlh
dGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKKyAgICBbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6YmxvYkZpbGVVUkwgdG9VUkw6
ZmFrZVNobVVSTCBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gY29weUl0ZW1BdFVSTDpkYXRhYmFzZUZpbGVVUkwgdG9VUkw6ZmFrZVdhbFVSTCBlcnJvcjpu
aWxdOwogCiAgICAgLy8gTWFrZSBzb21lIG90aGVyIC5ibG9iIGZpbGVzIGluIHRoZSBkYXRhYmFz
ZSBkaXJlY3RvcnkgdG8gbGF0ZXIgdmFsaWRhdGUgYWxsIGJsb2IgZmlsZXMgaW4gdGhlIGRpcmVj
dG9yeSBhcmUgZGVsZXRlZC4KLSAgICBOU1N0cmluZyAqb3RoZXJCbG9iMSA9IFtkYXRhYmFzZURp
cmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCI3MTgyLmJsb2IiXTsKLSAg
ICBOU1N0cmluZyAqb3RoZXJCbG9iMiA9IFtkYXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCIxYS5ibG9iIl07Ci0gICAgTlNTdHJpbmcgKm90aGVyQmxvYjMg
PSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiYTEu
YmxvYiJdOwotICAgIE5TU3RyaW5nICpvdGhlckJsb2I0ID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIi5ibG9iIl07Ci0gICAgW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0UGF0aDpibG9iRmlsZVBhdGggdG9QYXRoOm90
aGVyQmxvYjEgZXJyb3I6bmlsXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGNvcHlJdGVtQXRQYXRoOmJsb2JGaWxlUGF0aCB0b1BhdGg6b3RoZXJCbG9iMiBlcnJvcjpuaWxd
OwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFBhdGg6Ymxv
YkZpbGVQYXRoIHRvUGF0aDpvdGhlckJsb2IzIGVycm9yOm5pbF07Ci0gICAgW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0UGF0aDpibG9iRmlsZVBhdGggdG9QYXRoOm90
aGVyQmxvYjQgZXJyb3I6bmlsXTsKKyAgICBOU1VSTCAqb3RoZXJCbG9iMSA9IFtkYXRhYmFzZURp
cmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCI3MTgyLmJsb2IiXTsKKyAgICBO
U1VSTCAqb3RoZXJCbG9iMiA9IFtkYXRhYmFzZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCIxYS5ibG9iIl07CisgICAgTlNVUkwgKm90aGVyQmxvYjMgPSBbZGF0YWJhc2VE
aXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiYTEuYmxvYiJdOworICAgIE5T
VVJMICpvdGhlckJsb2I0ID0gW2RhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIi5ibG9iIl07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBj
b3B5SXRlbUF0VVJMOmJsb2JGaWxlVVJMIHRvVVJMOm90aGVyQmxvYjEgZXJyb3I6bmlsXTsKKyAg
ICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6YmxvYkZpbGVV
UkwgdG9VUkw6b3RoZXJCbG9iMiBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDpibG9iRmlsZVVSTCB0b1VSTDpvdGhlckJsb2IzIGVy
cm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0
VVJMOmJsb2JGaWxlVVJMIHRvVVJMOm90aGVyQmxvYjQgZXJyb3I6bmlsXTsKIAogICAgIHJlYWR5
VG9Db250aW51ZSA9IGZhbHNlOwogICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRh
U3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURh
dGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFu
ZGxlcjpeKCkgewotICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmJsb2JGaWxlUGF0aF0pOwotICAgICAgICBFWFBFQ1Rf
RkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRh
dGFiYXNlRmlsZVBhdGhdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVVSTC5wYXRoXSk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlz
dHNBdFBhdGg6ZGF0YWJhc2VGaWxlVVJMLnBhdGhdKTsKIAogICAgICAgICAvLyBNYWtlIHN1cmUg
YWxsIGZha2UgYmxvYiBmaWxlIGFyZSBnb25lLgotICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjFdKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmls
ZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IxLnBhdGhdKTsKIAotICAgICAgICBFWFBFQ1RfRkFMU0Uo
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxv
YjJdKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IzXSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9i
NF0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjIucGF0aF0pOworICAgICAgICBFWFBFQ1RfRkFM
U0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVy
QmxvYjMucGF0aF0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVyQmxvYjQucGF0aF0pOwogCiAgICAgICAg
IC8vIE1ha2Ugc3VyZSBldmVyeXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGZha2UgZGF0YWJhc2UgaXMg
Z29uZS4KLSAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpmYWtlU2htUGF0aF0pOwotICAgICAgICBFWFBFQ1RfRkFMU0Uo
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZha2VXYWxQ
YXRoXSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmFrZURhdGFiYXNlRGlyZWN0b3J5XSk7CisgICAgICAgIEVY
UEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6ZmFrZVNobVVSTC5wYXRoXSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmFrZVdhbFVSTC5wYXRoXSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVF
eGlzdHNBdFBhdGg6ZmFrZURhdGFiYXNlRGlyZWN0b3J5LnBhdGhdKTsKIAogICAgICAgICAvLyBO
b3cgZGVsZXRlIHRoZW0gc28gd2UncmUgbm90IGxlYXZpbmcgZmlsZXMgYXJvdW5kLgotICAgICAg
ICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFBhdGg6b3RoZXJC
bG9iMiBlcnJvcjpuaWxdOwotICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IHJlbW92ZUl0ZW1BdFBhdGg6b3RoZXJCbG9iMyBlcnJvcjpuaWxdOwotICAgICAgICBbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFBhdGg6b3RoZXJCbG9iNCBlcnJv
cjpuaWxdOworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0
ZW1BdFVSTDpvdGhlckJsb2IyIGVycm9yOm5pbF07CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOm90aGVyQmxvYjMgZXJyb3I6bmlsXTsKKyAg
ICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6b3Ro
ZXJCbG9iNCBlcnJvcjpuaWxdOwogCiAgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CiAg
ICAgfV07CkBAIC0xMzYsMjQgKzE0MiwzMiBAQCBURVNUKEluZGV4ZWREQiwgU3RvcmVCbG9iVGhl
bkRlbGV0ZURhdGFiYXNlKQogICAgIEVYUEVDVF9XS19TVFJFUShAIlN1Y2Nlc3MiLCAoTlNTdHJp
bmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwogCiAgICAgTlNTdHJpbmcgKmhhc2ggPSBX
ZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKCJTdG9yZUJs
b2JUb0JlRGVsZXRlZCIpOwotICAgIE5TU3RyaW5nICpvcmlnaW5EaXJlY3RvcnkgPSBAIn4vTGli
cmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL1dlYnNpdGVEYXRhL0lu
ZGV4ZWREQi92MS9maWxlX18wLyI7Ci0gICAgTlNTdHJpbmcgKmRhdGFiYXNlRGlyZWN0b3J5ID0g
W1tvcmlnaW5EaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6aGFzaF0gc3RyaW5nQnlF
eHBhbmRpbmdUaWxkZUluUGF0aF07Ci0gICAgTlNTdHJpbmcgKmJsb2JGaWxlUGF0aCA9IFtkYXRh
YmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCIxLmJsb2IiXTsK
LSAgICBOU1N0cmluZyAqZGF0YWJhc2VGaWxlUGF0aCA9IFtkYXRhYmFzZURpcmVjdG9yeSBzdHJp
bmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJdOworICAgIE5T
VVJMICpvcmlnaW5VUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZpbGU6Ly8iXTsKKyAgICBf
X2Jsb2NrIE5TU3RyaW5nICpvcmlnaW5EaXJlY3RvcnlTdHJpbmcgPSBuaWw7CisgICAgcmVhZHlU
b0NvbnRpbnVlID0gZmFsc2U7CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFT
dG9yZSBfb3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZzpvcmlnaW5VUkwgdG9wT3JpZ2luOm9yaWdp
blVSTCB0eXBlOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIGNvbXBsZXRpb25I
YW5kbGVyOl4oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICBvcmlnaW5EaXJlY3RvcnlTdHJp
bmcgPSByZXN1bHQ7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworICAgIE5TVVJM
ICpvcmlnaW5EaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOm9yaWdpbkRpcmVjdG9y
eVN0cmluZyBpc0RpcmVjdG9yeTpZRVNdOworICAgIE5TVVJMICpkYXRhYmFzZURpcmVjdG9yeSA9
IFtvcmlnaW5EaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50Omhhc2hdOworICAg
IE5TVVJMICpibG9iRmlsZVVSTCA9IFtkYXRhYmFzZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCIxLmJsb2IiXTsKKyAgICBOU1VSTCAqZGF0YWJhc2VGaWxlVVJMID0gW2Rh
dGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5z
cWxpdGUzIl07CiAKLSAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGZpbGVFeGlzdHNBdFBhdGg6YmxvYkZpbGVQYXRoXSk7Ci0gICAgRVhQRUNUX1RSVUUoW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRhdGFiYXNlRmls
ZVBhdGhdKTsKKyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGZpbGVFeGlzdHNBdFBhdGg6YmxvYkZpbGVVUkwucGF0aF0pOworICAgIEVYUEVDVF9UUlVFKFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkYXRhYmFzZUZp
bGVVUkwucGF0aF0pOwogCiAgICAgLy8gQWRkIGEgLmJsb2IgZmlsZSB0aGF0IGlzIG5vdCBjcmVh
dGVkIGJ5IEluZGV4ZWREQiBBUEkuCi0gICAgTlNTdHJpbmcgKmFub3RoZXJCbG9iRmlsZVBhdGgg
PSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiNzE4
Mi5ibG9iIl07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0
UGF0aDpibG9iRmlsZVBhdGggdG9QYXRoOmFub3RoZXJCbG9iRmlsZVBhdGggZXJyb3I6bmlsXTsK
KyAgICBOU1VSTCAqYW5vdGhlckJsb2JGaWxlVVJMID0gW2RhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIjcxODIuYmxvYiJdOworICAgIFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFBhdGg6YmxvYkZpbGVVUkwucGF0aCB0b1BhdGg6
YW5vdGhlckJsb2JGaWxlVVJMLnBhdGggZXJyb3I6bmlsXTsKIAogICAgIHJlYWR5VG9Db250aW51
ZSA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRlbGV0ZURhdGFi
YXNlKCgpID0+IHsgc2VuZE1lc3NhZ2UoJ0RlbGV0ZSBzdWNjZXNzJyk7IH0pIiBjb21wbGV0aW9u
SGFuZGxlcjpuaWxdOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRp
bnVlKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJEZWxldGUgc3VjY2VzcyIsIChOU1N0cmluZyAq
KVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAKLSAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmJsb2JGaWxlUGF0aF0pOwot
ICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlz
dHNBdFBhdGg6ZGF0YWJhc2VGaWxlUGF0aF0pOwotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDphbm90aGVyQmxvYkZpbGVQYXRo
XSk7CisgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmls
ZUV4aXN0c0F0UGF0aDpibG9iRmlsZVVSTC5wYXRoXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkYXRhYmFzZUZpbGVV
UkwucGF0aF0pOworICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDphbm90aGVyQmxvYkZpbGVVUkwucGF0aF0pOwogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ3VzdG9tUGF0aHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQppbmRleCA4ZTQ3YWI5ODBhY2RmYzZlMTUz
ODA4OGIzZWM3OTcxZWUwYjljNzMzLi42NmY5MjVhYzY0ZDY4MGY5OWVmM2UzNjJlY2JlNTMyMzZl
Y2RhYzg0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQpAQCAtNzcs
OCArNzcsOCBAQCBzdGF0aWMgdm9pZCBydW5XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMoU2hv
dWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1pbmcgc2hvdWxkRQogICAgIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKS5wcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkgPSBzaG91bGRFbmFi
bGVQcm9jZXNzUHJld2FybWluZyA9PSBTaG91bGRFbmFibGVQcm9jZXNzUHJld2FybWluZzo6WWVz
ID8gWUVTIDogTk87CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQ
b29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKV0pOwogCi0gICAgUmV0YWluUHRyPFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRoc01l
c3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1dlYnNpdGVEYXRhU3RvcmVDdXN0b21Q
YXRoc01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmll
d0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tXZWJz
aXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHNNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0g
YWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIi
XTsKIAogICAgIE5TVVJMICpzcWxQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xp
YnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRl
RGF0YS9XZWJTUUwvIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpZ
RVNdOwpAQCAtODYsNyArODYsNiBAQCBzdGF0aWMgdm9pZCBydW5XZWJzaXRlRGF0YVN0b3JlQ3Vz
dG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1pbmcgc2hvdWxkRQogICAgIE5TVVJM
ICpsb2NhbFN0b3JhZ2VQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkv
V2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0YS9M
b2NhbFN0b3JhZ2UvIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpZ
RVNdOwogICAgIE5TVVJMICpjb29raWVTdG9yYWdlRmlsZSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvQ3Vz
dG9tV2Vic2l0ZURhdGEvQ29va2llU3RvcmFnZS9Db29raWUuRmlsZSIgc3RyaW5nQnlFeHBhbmRp
bmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6Tk9dOwogICAgIE5TVVJMICpyZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktp
dC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURhdGEvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy8iIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0
b3J5OllFU107Ci0KICAgICBOU1VSTCAqZGVmYXVsdFNRTFBhdGggPSBbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJ
L1dlYnNpdGVEYXRhL1dlYlNRTC8iIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGly
ZWN0b3J5OllFU107CiAgICAgTlNVUkwgKmRlZmF1bHRJREJQYXRoID0gW05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQ
SS9XZWJzaXRlRGF0YS9JbmRleGVkREIvIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBp
c0RpcmVjdG9yeTpZRVNdOwogICAgIE5TVVJMICpkZWZhdWx0TG9jYWxTdG9yYWdlUGF0aCA9IFtO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0
LlRlc3RXZWJLaXRBUEkvV2Vic2l0ZURhdGEvTG9jYWxTdG9yYWdlLyIgc3RyaW5nQnlFeHBhbmRp
bmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKQEAgLTExMiw3ICsxMTEsNyBAQCBzdGF0
aWMgdm9pZCBydW5XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vz
c1ByZXdhcm1pbmcgc2hvdWxkRQogICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGVmYXVsdExvY2FsU3RvcmFnZVBhdGgucGF0
aF0pOwogICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZp
bGVFeGlzdHNBdFBhdGg6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXRoLnBhdGhdKTsK
IAotICAgIFJldGFpblB0cjxfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gd2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CiAgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3dl
YlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gc3FsUGF0aDsKICAgICB3ZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5nZXQoKS5faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBpZGJQYXRoOwog
ICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl93ZWJTdG9yYWdlRGlyZWN0
b3J5ID0gbG9jYWxTdG9yYWdlUGF0aDsKQEAgLTEyMiw3ICsxMjEsNyBAQCBzdGF0aWMgdm9pZCBy
dW5XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1p
bmcgc2hvdWxkRQogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGFk
b3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5nZXQoKTsKICAgICBjb25maWd1
cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gcHJvY2Vzc1Bvb2wuZ2V0KCk7CiAKLSAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25E
ZWxlZ2F0ZTpoYW5kbGVyLmdldCgpXTsKIAogICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAoX19icmlk
Z2UgV0tQcmVmZXJlbmNlc1JlZilbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJlZmVyZW5jZXNd
OwpAQCAtMTQ1LDYgKzE0NCwxNyBAQCBzdGF0aWMgdm9pZCBydW5XZWJzaXRlRGF0YVN0b3JlQ3Vz
dG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1pbmcgc2hvdWxkRQogICAgIH1dOwog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmx1c2hlZCk7CiAKKyAgICAvLyBHZXQgdGhl
IEluZGV4ZWREQiBkYXRhYmFzZSBwYXRoIGluIHVzZS4KKyAgICBOU1VSTCAqZmlsZVVSTCA9IFtO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiZmlsZTovLyJdOworICAgIF9fYmxvY2sgTlNTdHJpbmcgKmZp
bGVJREJQYXRoU3RyaW5nID0gbmlsOworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbY29uZmlndXJh
dGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOmZp
bGVVUkwgdG9wT3JpZ2luOmZpbGVVUkwgdHlwZTpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRh
dGFiYXNlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICpyZXN1bHQpIHsKKyAgICAgICAg
ZmlsZUlEQlBhdGhTdHJpbmcgPSByZXN1bHQ7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgTlNVUkwgKmZpbGVJ
REJQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlSURCUGF0aFN0cmluZyBpc0RpcmVj
dG9yeTpZRVNdOworCiAgICAgLy8gRm9yY2libHkgc2h1dCBkb3duIGV2ZXJ5dGhpbmcgb2YgV2Vi
S2l0IHRoYXQgd2UgY2FuLgogICAgIGF1dG8gcGlkID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVu
dGlmaWVyXTsKICAgICBpZiAocGlkKQpAQCAtMTg0LDMxICsxOTQsNDUgQEAgc3RhdGljIHZvaWQg
cnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzKFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3YXJt
aW5nIHNob3VsZEUKIAogICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDppZGJQYXRoLnBhdGhdKTsKICAgICBFWFBFQ1RfVFJVRShb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGVmYXVsdElE
QlBhdGgucGF0aF0pOwotICAgIFJldGFpblB0cjxOU1VSTD4gZmlsZUlEQlBhdGggPSBbW2lkYlBh
dGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidjEiXSBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJmaWxlX18wIl07Ci0gICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVJREJQYXRoLmdldCgpLnBhdGhdKTsK
KyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlz
dHNBdFBhdGg6ZmlsZUlEQlBhdGgucGF0aF0pOwogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAg
ICAgICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5n
ZXQoKV0pOwotICAgICAgICBSZXRhaW5QdHI8TlNTZXQ+IHR5cGVzID0gYWRvcHROUyhbW05TU2V0
IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFz
ZXMsIG5pbF0pOworICAgICAgICBhdXRvIHR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBp
bml0V2l0aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMsIG5pbF0p
OworICAgICAgICAKKyAgICAgICAgTlNVUkwgKmFwcGxlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwczovL2FwcGxlLmNvbSJdOworICAgICAgICBfX2Jsb2NrIE5TU3RyaW5nICppZGJQ
YXRoU3RyaW5nID0gbmlsOworICAgICAgICBkb25lID0gZmFsc2U7CisgICAgICAgIFtkYXRhU3Rv
cmUgX29yaWdpbkRpcmVjdG9yeUZvclRlc3Rpbmc6YXBwbGVVUkwgdG9wT3JpZ2luOmZpbGVVUkwg
dHlwZTpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TU3RyaW5nICpyZXN1bHQpIHsKKyAgICAgICAgICAgIGlkYlBhdGhTdHJpbmcgPSByZXN1
bHQ7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgICAgIE5TVVJMICpmaWxlQXBwbGVJREJQ
YXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDppZGJQYXRoU3RyaW5nIGlzRGlyZWN0b3J5OllF
U107CisKKyAgICAgICAgTlNVUkwgKndlYmtpdFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aHR0cHM6Ly93ZWJraXQub3JnIl07CisgICAgICAgIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgW2Rh
dGFTdG9yZSBfb3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZzp3ZWJraXRVUkwgdG9wT3JpZ2luOmZp
bGVVUkwgdHlwZTpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TU3RyaW5nICpyZXN1bHQpIHsKKyAgICAgICAgICAgIGlkYlBhdGhTdHJpbmcg
PSByZXN1bHQ7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgICAgIE5TVVJMICpmaWxlV2Vi
S2l0SURCUGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6aWRiUGF0aFN0cmluZyBpc0RpcmVj
dG9yeTpZRVNdOwogCiAgICAgICAgIC8vIFN1YmZyYW1lIG9mIGRpZmZlcmVudCBvcmlnaW5zIG1h
eSBhbHNvIGNyZWF0ZSBJbmRleGVkREIgZmlsZXMuCiAgICAgICAgIFJldGFpblB0cjxOU1VSTD4g
dXJsMSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJbmRleGVkREIi
IHdpdGhFeHRlbnNpb246QCJzcWxpdGUzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdOwogICAgICAgICBSZXRhaW5QdHI8TlNVUkw+IHVybDIgPSBbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiSW5kZXhlZERCIiB3aXRoRXh0ZW5zaW9uOkAic3Fs
aXRlMy1zaG0iIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAg
ICAgIFJldGFpblB0cjxOU1VSTD4gdXJsMyA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJJbmRleGVkREIiIHdpdGhFeHRlbnNpb246QCJzcWxpdGUzLXdhbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIAotICAgICAgICBSZXRhaW5QdHI8
TlNVUkw+IGZyYW1lSURCUGF0aCA9IFtbZmlsZUlEQlBhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiaHR0cHNfYXBwbGUuY29tXzAiXSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
QCJXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMiXTsKLSAgICAgICAgW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpmcmFtZUlEQlBhdGguZ2V0KCkg
d2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxd
OwotCi0gICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVS
TDp1cmwxLmdldCgpIHRvVVJMOltmcmFtZUlEQlBhdGguZ2V0KCkgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXSBlcnJvcjpuaWxdOwotICAgICAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMi5nZXQoKSB0b1VS
TDpbZnJhbWVJREJQYXRoLmdldCgpIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4
ZWREQi5zcWxpdGUzLXNobSJdIGVycm9yOm5pbF07Ci0gICAgICAgIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwzLmdldCgpIHRvVVJMOltmcmFtZUlEQlBh
dGguZ2V0KCkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMt
d2FsIl0gZXJyb3I6bmlsXTsKLQotICAgICAgICBSZXRhaW5QdHI8TlNVUkw+IGZyYW1lSURCUGF0
aDIgPSBbW2ZpbGVJREJQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImh0dHBzX3dl
YmtpdC5vcmdfMCJdIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYnNpdGVEYXRhU3Rv
cmVDdXN0b21QYXRocyJdOwotICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGNyZWF0ZURpcmVjdG9yeUF0VVJMOmZyYW1lSURCUGF0aDIuZ2V0KCkgd2l0aEludGVybWVkaWF0
ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOworICAgICAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOmZpbGVBcHBs
ZUlEQlBhdGggd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBl
cnJvcjpuaWxdOworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJ
dGVtQXRVUkw6dXJsMS5nZXQoKSB0b1VSTDpbZmlsZUFwcGxlSURCUGF0aCBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJdIGVycm9yOm5pbF07CisgICAgICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwyLmdldCgp
IHRvVVJMOltmaWxlQXBwbGVJREJQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIklu
ZGV4ZWREQi5zcWxpdGUzLXNobSJdIGVycm9yOm5pbF07CisgICAgICAgIFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwzLmdldCgpIHRvVVJMOltmaWxlQXBw
bGVJREJQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUz
LXdhbCJdIGVycm9yOm5pbF07CiAKLSAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjb3B5SXRlbUF0VVJMOnVybDEuZ2V0KCkgdG9VUkw6W2ZyYW1lSURCUGF0aDIuZ2V0KCkg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXSBlcnJvcjpu
aWxdOwotICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRV
Ukw6dXJsMi5nZXQoKSB0b1VSTDpbZnJhbWVJREJQYXRoMi5nZXQoKSBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMy1zaG0iXSBlcnJvcjpuaWxdOwotICAgICAg
ICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMy5nZXQo
KSB0b1VSTDpbZnJhbWVJREJQYXRoMi5nZXQoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
QCJJbmRleGVkREIuc3FsaXRlMy13YWwiXSBlcnJvcjpuaWxdOworICAgICAgICBbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOmZpbGVXZWJLaXRJREJQ
YXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6
bmlsXTsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0
VVJMOnVybDEuZ2V0KCkgdG9VUkw6W2ZpbGVXZWJLaXRJREJQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKKyAgICAgICAgW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDIuZ2V0KCkgdG9V
Ukw6W2ZpbGVXZWJLaXRJREJQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4
ZWREQi5zcWxpdGUzLXNobSJdIGVycm9yOm5pbF07CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwzLmdldCgpIHRvVVJMOltmaWxlV2ViS2l0
SURCUGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMy13
YWwiXSBlcnJvcjpuaWxdOwogCiAgICAgICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09m
VHlwZXM6dHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURh
dGFSZWNvcmQgKj4gKiByZWNvcmRzKSB7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoW3JlY29yZHMg
Y291bnRdLCAodW5zaWduZWQgbG9uZykzKTsKQEAgLTIxNiw3ICsyNDAsNyBAQCBzdGF0aWMgdm9p
ZCBydW5XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdh
cm1pbmcgc2hvdWxkRQogICAgICAgICAgICAgICAgIGlmIChbW3JlY29yZCBkaXNwbGF5TmFtZV0g
aXNFcXVhbDogQCJhcHBsZS5jb20iXSkgewogICAgICAgICAgICAgICAgICAgICBbZGF0YVN0b3Jl
IHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzLmdldCgpIGZvckRhdGFSZWNvcmRzOkBbcmVjb3JkXSBj
b21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRT
Y3JpcHRNZXNzYWdlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxT
RShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZnJhbWVJ
REJQYXRoLmdldCgpLnBhdGhdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxT
RShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZUFw
cGxlSURCUGF0aC5wYXRoXSk7CiAgICAgICAgICAgICAgICAgICAgIH1dOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIzMCw3ICsyNTQsNyBAQCBzdGF0aWMgdm9pZCBydW5X
ZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1pbmcg
c2hvdWxkRQogICAgICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKICAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogCi0gICAg
ICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlz
dHNBdFBhdGg6ZmlsZUlEQlBhdGguZ2V0KCkucGF0aF0pOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVXZWJL
aXRJREJQYXRoLnBhdGhdKTsKIAogICAgICAgICAvLyBOb3csIHdpdGggYnJhbmQgbmV3IFdLV2Vi
c2l0ZURhdGFTdG9yZXMgcG9pbnRpbmcgYXQgdGhlIHNhbWUgY3VzdG9tIGNvb2tpZSBzdG9yYWdl
IGxvY2F0aW9uLAogICAgICAgICAvLyBpbiBuZXdseSBmaXJlZCB1cCBOZXR3b3JrUHJvY2Vzc2Vz
LCB2ZXJpZnkgdGhhdCB0aGUgZmV0Y2ggYW5kIGRlbGV0ZSBBUElzIHdvcmsgYXMgZXhwZWN0ZWQu
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455730</attachid>
            <date>2022-03-24 23:49:23 -0700</date>
            <delta_ts>2022-03-25 01:55:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238269-20220324234922.patch</filename>
            <type>text/plain</type>
            <size>71369</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExN2M3OTQzZjE3MGU2NmE4
MjY3NzI2YzE2YWFiMmI4NzU1YmFhNDMuLjM5MGE2YjU0YWJmNjQxMWMyZDlkYzA5NjM3NjBmOTEx
NGFlNzc2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjItMDMtMjQgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGFuIFNQSSB0byBn
ZXQgd2Vic2l0ZSBkYXRhIGRpcmVjdG9yeSBmb3Igb3JpZ2luIGFuZCB1c2UgaXQgaW4gQVBJIHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgy
NjkKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFRo
ZXJlIGFyZSBhIGZldyB0ZXN0cyB1c2luZyBoYXJkY29kZWQgd2Vic2l0ZSBkYXRhIHBhdGhzIHRv
IGNoZWNrIGlmIGZpbGVzIGFyZSBjb3JyZWNseSBtb2RpZmllZCBieSBBUEkuCisgICAgICAgIEV2
ZXJ5dGltZSB3ZSBtaWdyYXRlIHdlYnNpdGUgZGF0YSAoZm9yIGV4YW1wbGUsIGlmIHdlIHN0YXJ0
IHVzaW5nIGdlbmVyYWwgc3RvcmFnZSBkaXJlY3RvcnkgZm9yIEluZGV4ZWREQiAKKyAgICAgICAg
c3RvcmFnZSksIHdlIG5lZWQgdG8gdXBkYXRlIHRoZXNlIHRlc3RzIHdpdGggbmV3IHBhdGhzLCBv
dGhlcndpc2UgdGhlIHRlc3RzIHdpbGwgY2hlY2sgdGhlIHdyb25nIHBhdGhzLiBMZXQncyAKKyAg
ICAgICAganVzdCBhZGQgYW4gU1BJIHNvIHRoZXNlIHRlc3RzIGNhbiBnZXQgdGhlIHBhdGhzIGlu
IHVzZSBkeW5hbWljYWxseSwgd2hpY2ggd291bGQgYXZvaWQgdGVzdCBicmVha2FnZSB3aGVuCisg
ICAgICAgIHdlIGRvIHdlYnNpdGUgZGF0YSBtaWdyYXRpb24uCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjp3ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpnZXRPcmlnaW5EaXJlY3RvcnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojp0b1N0b3JhZ2VUeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnJl
c29sdmVkTG9jYWxTdG9yYWdlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpyZXNvbHZlZElEQlN0b3JhZ2VQYXRoKToKKyAgICAgICAg
KFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnJlc29sdmVkUGF0
aCk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpyZXNvbHZlZFBhdGgp
OgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6cmVzb2x2ZWRMb2NhbFN0
b3JhZ2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OnJlc29sdmVkSURCU3RvcmFnZVBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRl
RGF0YVN0b3JlIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOnRvcE9yaWdpbjp0eXBlOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3
ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6Om9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMjItMDMtMjQgIERvbiBPbG1z
dGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBOb24tdW5pZmllZCBidWls
ZCBmaXhlcywgbGF0ZSBNYXJjaCAyMDIyIGVkaXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggODM0ZDE5YTViNjNkMGU1M2E4YmYy
MzcyYTk1MzFjNGExY2VmNjhmMi4uNTg5ZDE2NjM0MTJjZjM0ZTMwY2UwMTYwMzRlYmEzYWY4NjQ0
MmVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTIyNTksNiArMjI1OSwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW5hbWVP
cmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVQogICAg
ICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLm1vdmVEYXRhKGRhdGFUeXBlcywgV1RGTW92
ZShvbGRPcmlnaW4pLCBXVEZNb3ZlKG5ld09yaWdpbiksIFthZ2dyZWdhdG9yXSB7IH0pOwogfQog
Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIG9yaWdpbiwgY29uc3QgVVJM
JiB0b3BPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZSBkYXRhVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworCisgICAgYXV0byBjbGllbnRP
cmlnaW4gPSBXZWJDb3JlOjpDbGllbnRPcmlnaW4geyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21VUkwodG9wT3JpZ2luKSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
VVJMKG9yaWdpbikgfTsKKyAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmdldE9yaWdpbkRp
cmVjdG9yeShXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGRhdGFUeXBlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAjaWYgRU5BQkxF
KEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBkOTM1ZjQ2Y2NjOTljYTg2Nzg0ZjVmMTRlODBkZDcw
YjUwMzgzYjI5Li5iZmEzMmRmZTc0Yjc5ZTZhOGQ1MGE2NTcxNWQ1MTBhNDFiOGUyMzdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yOTIs
NiArMjkyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJTdG9yYWdlKFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGlkSW5jcmVhc2VRdW90
YShQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFF1b3RhSW5jcmVhc2VS
ZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpOwogICAg
IHZvaWQgcmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJM
JiwgY29uc3QgVVJMJiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCB3ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIFdlYnNpdGVEYXRh
VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNjc4OGQ2NWNjNmE4Y2Nk
M2YxMWY5MGIyZDY3NzllMjFhYmQxY2RjNi4uZmE3OWM1YjVkYjE0NDU5ZTM2NjYxOTEyZGEyY2Jm
ODk5ZTNkNjYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC00Niw2ICs0Niw3IEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEZWxldGVXZWJzaXRlRGF0YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlw
ZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkgLT4gKCkKICAgICBE
ZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
b25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMsIFZlY3RvcjxTdHJpbmc+IGNvb2tp
ZUhvc3ROYW1lcywgVmVjdG9yPFN0cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVzLCBWZWN0b3I8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IHJlZ2lzdHJhYmxlRG9tYWlucykgLT4gKCkKICAgICBS
ZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIG9s
ZERvbWFpbiwgVVJMIG5ld0RvbWFpbiwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBl
PiB3ZWJzaXRlRGF0YVR5cGVzKSAtPiAoKQorICAgIFdlYnNpdGVEYXRhT3JpZ2luRGlyZWN0b3J5
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBvcmlnaW4sIFVSTCB0b3BP
cmlnaW4sIGVudW06dWludDMyX3QgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGUgd2Vic2l0ZURhdGFU
eXBlKSAtPiAoU3RyaW5nIGRpcmVjdG9yeSkKIAogICAgIERvd25sb2FkUmVxdWVzdChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgZW51bTpib29sIHN0ZDo6b3B0aW9uYWw8V2ViS2l0
OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQogICAgIFJlc3VtZURvd25sb2FkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIElQQzo6RGF0
YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgZW51bTpib29sIFdlYktpdDo6Q2Fs
bERvd25sb2FkRGlkU3RhcnQgY2FsbERvd25sb2FkRGlkU3RhcnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuY3BwCmluZGV4IGU1MjBjOGFjYjRlMjYxZWMxN2ZiYjYwZGYwNjE4ODJlMTNmNDVkZTku
LmYxZWVjYjRhYzA0ZmIxODhhNzY1MzAwYTU2M2FkODgwZDljMDg3MjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIuY3BwCkBAIC02MzIsNyArNjMyLDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6Om1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBXZWJDb3Jl
OjoKICAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcih0YXJnZXRPcmlnaW4pLmRlbGV0
ZURhdGEodHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSk7CiAKICAgICAgICAgLy8gTW92ZSBk
YXRhIGZyb20gc291cmNlIG9yaWdpbiB0byB0YXJnZXQgb3JpZ2luLgotICAgICAgICBsb2NhbE9y
aWdpblN0b3JhZ2VNYW5hZ2VyKHNvdXJjZU9yaWdpbikubW92ZURhdGEodHlwZXMsIGxvY2FsT3Jp
Z2luU3RvcmFnZU1hbmFnZXIodGFyZ2V0T3JpZ2luKS5yZXNvbHZlZExvY2FsU3RvcmFnZVBhdGgo
KSwgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcih0YXJnZXRPcmlnaW4pLnJlc29sdmVkSURCU3Rv
cmFnZVBhdGgoKSk7CisgICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoc291cmNlT3Jp
Z2luKS5tb3ZlRGF0YSh0eXBlcywgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcih0YXJnZXRPcmln
aW4pLnJlc29sdmVkUGF0aChXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSksIGxvY2FsT3Jp
Z2luU3RvcmFnZU1hbmFnZXIodGFyZ2V0T3JpZ2luKS5yZXNvbHZlZFBhdGgoV2Vic2l0ZURhdGFU
eXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKTsKIAogICAgICAgICByZW1vdmVPcmlnaW5TdG9yYWdl
TWFuYWdlcklmUG9zc2libGUodGFyZ2V0T3JpZ2luKTsKICAgICAgICAgcmVtb3ZlT3JpZ2luU3Rv
cmFnZU1hbmFnZXJJZlBvc3NpYmxlKHNvdXJjZU9yaWdpbik7CkBAIC02NDEsNiArNjQxLDE5IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiB0eXBlcywgV2ViQ29yZTo6CiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpnZXRPcmlnaW5EaXJlY3RvcnkoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3Jp
Z2luLCBXZWJzaXRlRGF0YVR5cGUgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIEFTU0VSVCghbV9jbG9zZWQpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0eXBlLCBvcmlnaW4gPSBjcm9z
c1RocmVhZENvcHkoV1RGTW92ZShvcmlnaW4pKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBkaXJlY3RvcnkgPSBjcm9zc1RocmVhZENvcHkobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihv
cmlnaW4pLnJlc29sdmVkUGF0aCh0eXBlKSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRpcmVjdG9yeSkpOworICAgICAgICB9KTsKKyAgICAgICAg
cmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKG9yaWdpbik7CisgICAgfSk7Cit9
CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L05ldHdvcmtTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCmluZGV4IDRlOWNkMjA3OGYwYmIwY2QxMWZk
NTllOGRlZjc3MWEyY2Y1NjJmMzEuLjExYWQyODgyMGYyZWZiYmEyMTA3MTI4MzY3MTE5OTVmMmY3
YjRiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTg2LDYgKzg2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFdhbGxUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
ZGVsZXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwog
ICAgIHZvaWQgbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYmIHNvdXJjZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
dGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZ2V0T3JpZ2lu
RGlyZWN0b3J5KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJzaXRlRGF0YVR5cGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgc3VzcGVuZChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAgICAgdm9p
ZCBoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRl
eCBhMDk0OGZjZGRkOTY0YzBjMGNjOWYyNTRlODhhMTRhZjg1MGJkY2Q4Li4yM2NiZTEzNjU1N2Zk
YWJlZTdkZDY3ZTQwZDEyMDJkMThhNGUxOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAK
QEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgICAgICBTZXNzaW9uU3RvcmFnZSwKICAgICAg
ICAgSW5kZXhlZERCLAogICAgIH07CisgICAgc3RkOjpvcHRpb25hbDxTdG9yYWdlVHlwZT4gdG9T
dG9yYWdlVHlwZShXZWJzaXRlRGF0YVR5cGUpIGNvbnN0OwogICAgIFN0cmluZyB0b1N0b3JhZ2VJ
ZGVudGlmaWVyKFN0b3JhZ2VUeXBlKSBjb25zdDsKICAgICBTdG9yYWdlQnVja2V0KGNvbnN0IFN0
cmluZyYgcm9vdFBhdGgsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBs
b2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoLCBib29sIHNob3Vs
ZFVzZUN1c3RvbVBhdGhzKTsKICAgICBTdG9yYWdlQnVja2V0TW9kZSBtb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2RlOyB9CkBAIC03NCw2ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmVE
YXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFn
ZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgpOwogICAgIFN0cmluZyByZXNvbHZl
ZExvY2FsU3RvcmFnZVBhdGgoKTsKICAgICBTdHJpbmcgcmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgp
OworICAgIFN0cmluZyByZXNvbHZlZFBhdGgoV2Vic2l0ZURhdGFUeXBlKTsKIAogcHJpdmF0ZToK
ICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBmZXRjaERhdGFUeXBlc0luTGlzdEZyb21N
ZW1vcnkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4pOwpAQCAtMTE4LDYgKzEyMCwyNSBAQCB2
b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojpjb25uZWN0aW9uQ2xvc2Vk
KElQQzo6Q29ubmVjdGlvbjo6VW5pcQogICAgICAgICBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlci0+
Y29ubmVjdGlvbkNsb3NlZChjb25uZWN0aW9uKTsKIH0KIAorc3RkOjpvcHRpb25hbDxPcmlnaW5T
dG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6U3RvcmFnZVR5cGU+IE9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojp0b1N0b3JhZ2VUeXBlKFdlYnNpdGVEYXRhVHlwZSB3ZWJz
aXRlRGF0YVR5cGUpIGNvbnN0Cit7CisgICAgc3dpdGNoICh3ZWJzaXRlRGF0YVR5cGUpIHsKKyAg
ICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbToKKyAgICAgICAgcmV0dXJuIFN0b3Jh
Z2VUeXBlOjpGaWxlU3lzdGVtOworICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3Jh
Z2U6CisgICAgICAgIHJldHVybiBTdG9yYWdlVHlwZTo6TG9jYWxTdG9yYWdlOworICAgIGNhc2Ug
V2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZToKKyAgICAgICAgcmV0dXJuIFN0b3JhZ2VU
eXBlOjpTZXNzaW9uU3RvcmFnZTsKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERC
RGF0YWJhc2VzOgorICAgICAgICByZXR1cm4gU3RvcmFnZVR5cGU6OkluZGV4ZWREQjsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiBTdHJpbmcgT3JpZ2luU3RvcmFnZU1h
bmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnRvU3RvcmFnZUlkZW50aWZpZXIoU3RvcmFnZVR5cGUgdHlw
ZSkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTM1MiwxMCArMzczLDEwIEBAIFN0
cmluZyBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6cmVzb2x2ZWRMb2NhbFN0
b3JhZ2VQYXRoKCkKICAgICAgICAgbV9yZXNvbHZlZExvY2FsU3RvcmFnZVBhdGggPSBtX2N1c3Rv
bUxvY2FsU3RvcmFnZVBhdGg7CiAgICAgfSBlbHNlIGlmICghbV9yb290UGF0aC5pc0VtcHR5KCkp
IHsKICAgICAgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0eXBlU3RvcmFnZVBhdGgo
U3RvcmFnZVR5cGU6OkxvY2FsU3RvcmFnZSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxE
aXJlY3Rvcmllcyhsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogICAgICAgICBhdXRvIGxvY2FsU3Rv
cmFnZVBhdGggPSBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VGaWxlUGF0aChsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkpOwogICAgICAgICBpZiAoIW1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0
aC5pc0VtcHR5KCkgJiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobG9jYWxTdG9yYWdlUGF0aCkg
JiYgRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgpKSB7CiAg
ICAgICAgICAgICBSRUxFQVNFX0xPRyhTdG9yYWdlLCAiJXAgLSBTdG9yYWdlQnVja2V0OjpyZXNv
bHZlZExvY2FsU3RvcmFnZVBhdGggTmV3IHBhdGggJyV7cHVibGljfXMnIiwgdGhpcywgbG9jYWxT
dG9yYWdlUGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VB
bGxEaXJlY3Rvcmllcyhsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogICAgICAgICAgICAgYXV0byBt
b3ZlZCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06Om1vdmVEYXRhYmFzZUZpbGUobV9jdXN0
b21Mb2NhbFN0b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoKTsKICAgICAgICAgICAgIGlmICgh
bW92ZWQgJiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobG9jYWxTdG9yYWdlUGF0aCkpCiAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIiVwIC0gU3RvcmFnZUJ1Y2tl
dDo6cmVzb2x2ZWRMb2NhbFN0b3JhZ2VQYXRoIEZhaWxzIHRvIG1pZ3JhdGUgZmlsZSB0byBuZXcg
cGF0aCIsIHRoaXMpOwpAQCAtMzk1LDExICs0MTYsMjcgQEAgU3RyaW5nIE9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpyZXNvbHZlZElEQlN0b3JhZ2VQYXRoKCkKICAgICAgICAg
fQogICAgICAgICBtX3Jlc29sdmVkSURCU3RvcmFnZVBhdGggPSBpZGJTdG9yYWdlUGF0aDsKICAg
ICB9Ci0gICAgCiAgICAgQVNTRVJUKCFtX3Jlc29sdmVkSURCU3RvcmFnZVBhdGguaXNOdWxsKCkp
OwogICAgIHJldHVybiBtX3Jlc29sdmVkSURCU3RvcmFnZVBhdGg7CiB9CiAKK1N0cmluZyBPcmln
aW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6cmVzb2x2ZWRQYXRoKFdlYnNpdGVEYXRh
VHlwZSB3ZWJpc3RlRGF0YVR5cGUpCit7CisgICAgYXV0byB0eXBlID0gdG9TdG9yYWdlVHlwZSh3
ZWJpc3RlRGF0YVR5cGUpOworICAgIGlmICghdHlwZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIHN3aXRjaCAoKnR5cGUpIHsKKyAgICBjYXNlIFN0b3JhZ2VUeXBlOjpMb2NhbFN0b3JhZ2U6
CisgICAgICAgIHJldHVybiByZXNvbHZlZExvY2FsU3RvcmFnZVBhdGgoKTsKKyAgICBjYXNlIFN0
b3JhZ2VUeXBlOjpJbmRleGVkREI6CisgICAgICAgIHJldHVybiByZXNvbHZlZElEQlN0b3JhZ2VQ
YXRoKCk7CisgICAgY2FzZSBTdG9yYWdlVHlwZTo6U2Vzc2lvblN0b3JhZ2U6CisgICAgY2FzZSBT
dG9yYWdlVHlwZTo6RmlsZVN5c3RlbToKKyAgICAgICAgcmV0dXJuIHR5cGVTdG9yYWdlUGF0aCgq
dHlwZSk7CisgICAgfQorfQorCiBTdHJpbmcgT3JpZ2luU3RvcmFnZU1hbmFnZXI6Om9yaWdpbkZp
bGVJZGVudGlmaWVyKCkKIHsKICAgICByZXR1cm4gb3JpZ2luRmlsZU5hbWU7CkBAIC00OTMsMTQg
KzUzMCw5IEBAIElEQlN0b3JhZ2VNYW5hZ2VyKiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZXhpc3Rp
bmdJREJTdG9yYWdlTWFuYWdlcigpCiAgICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5leGlzdGlu
Z0lEQlN0b3JhZ2VNYW5hZ2VyKCk7CiB9CiAKLVN0cmluZyBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6
cmVzb2x2ZWRMb2NhbFN0b3JhZ2VQYXRoKCkKLXsKLSAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgp
LnJlc29sdmVkTG9jYWxTdG9yYWdlUGF0aCgpOwotfQotCi1TdHJpbmcgT3JpZ2luU3RvcmFnZU1h
bmFnZXI6OnJlc29sdmVkSURCU3RvcmFnZVBhdGgoKQorU3RyaW5nIE9yaWdpblN0b3JhZ2VNYW5h
Z2VyOjpyZXNvbHZlZFBhdGgoV2Vic2l0ZURhdGFUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIGRl
ZmF1bHRCdWNrZXQoKS5yZXNvbHZlZElEQlN0b3JhZ2VQYXRoKCk7CisgICAgcmV0dXJuIGRlZmF1
bHRCdWNrZXQoKS5yZXNvbHZlZFBhdGgodHlwZSk7CiB9CiAKIGJvb2wgT3JpZ2luU3RvcmFnZU1h
bmFnZXI6OmlzQWN0aXZlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggZDg4MmIxN2U2NDU2
NTllOGQxNzFkNTA4ODVhNzU3ODQxNzJhMzYwYi4uNTk4ZTZiMWFiMTUxYjY2YTVmNmJiNTE0Zjg4
ODEyY2VlNmQwNmZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTU5LDggKzU5LDcgQEAg
cHVibGljOgogICAgIFNlc3Npb25TdG9yYWdlTWFuYWdlciogZXhpc3RpbmdTZXNzaW9uU3RvcmFn
ZU1hbmFnZXIoKTsKICAgICBJREJTdG9yYWdlTWFuYWdlciYgaWRiU3RvcmFnZU1hbmFnZXIoSURC
U3RvcmFnZVJlZ2lzdHJ5Jik7CiAgICAgSURCU3RvcmFnZU1hbmFnZXIqIGV4aXN0aW5nSURCU3Rv
cmFnZU1hbmFnZXIoKTsKLSAgICBTdHJpbmcgcmVzb2x2ZWRMb2NhbFN0b3JhZ2VQYXRoKCk7Ci0g
ICAgU3RyaW5nIHJlc29sdmVkSURCU3RvcmFnZVBhdGgoKTsKKyAgICBTdHJpbmcgcmVzb2x2ZWRQ
YXRoKFdlYnNpdGVEYXRhVHlwZSk7CiAgICAgYm9vbCBpc0FjdGl2ZSgpOwogICAgIGJvb2wgaXNF
bXB0eSgpOwogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGZldGNoRGF0YVR5cGVzSW5M
aXN0KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IGI3Y2Yw
NjViYWJjYTFjNDkxYWEzZWEzODQxZDI0Njg2MzFhYWVkYWMuLjA4MTcxMGE4YzcxMzcwYmNiOTFk
ODViNDM1MTM5Y2Q1OGRhNWUxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtODQ0LDQgKzg0NCwxNiBA
QCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0ZURhdGFS
ZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogICAgICAgICB9KTsKIH0KIAorLSh2b2lkKV9vcmln
aW5EaXJlY3RvcnlGb3JUZXN0aW5nOihOU1VSTCAqKW9yaWdpbiB0b3BPcmlnaW46KE5TVVJMICop
dG9wT3JpZ2luIHR5cGU6KE5TU3RyaW5nICopZGF0YVR5cGUgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIHdlYnNpdGVE
YXRhVHlwZSA9IFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGUoZGF0YVR5cGUpOworICAgIGlmICgh
d2Vic2l0ZURhdGFUeXBlKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobmlsKTsK
KworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+b3JpZ2luRGlyZWN0b3J5Rm9yVGVz
dGluZyhvcmlnaW4sIHRvcE9yaWdpbiwgKndlYnNpdGVEYXRhVHlwZSwgW2NvbXBsZXRpb25IYW5k
bGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXJDb3B5KV0oYXV0byByZXN1bHQpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KHJlc3VsdCk7CisgICAgfSk7Cit9CisKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDBlOTczNmIxMzI0M2Y4ODk1MzdlYTc2
Zjg2ZDZiMDI1NzI0ZjJjYzQuLjY3MDZmMzI4MzkxN2EyZjkyMGFhZWVlMGEzZDU0NDhlMGYzNzU3
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtNTksNyArNTksNiBAQCB0eXBlZGVm
IE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykg
ewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWxsb3dzVExTRmFsbGJhY2s6KSBC
T09MIF9hbGxvd3NUTFNGYWxsYmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9z
KDEzLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkwgKl9pbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnkiLCBtYWNvcygxMC4xMSwgMTEuMCksIGlvcyg5LjAsIDE0LjApKTsKIAotCiAtICh2b2lkKV9z
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOihudWxsYWJsZSB2b2lkIChe
KShXS1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNTdHJpbmcgKikpY2FsbGJhY2sgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CiAtICh2b2lkKV9sb2FkZWRT
dWJyZXNvdXJjZURvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5k
bGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CkBAIC0xMTYsNiAr
MTE1LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3Rv
cmVGZXRjaE9wdGlvbnMpIHsKIC0odm9pZClfZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lz
dHJhdGlvbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0odm9pZClfZ2V0T3JpZ2lu
c1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnM6KHZvaWQoXikoTlNTZXQ8V0tTZWN1
cml0eU9yaWdpbiAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSh2b2lkKV9zY29wZVVSTDooTlNVUkwg
KilzY29wZVVSTCBoYXNQdXNoU3Vic2NyaXB0aW9uRm9yVGVzdGluZzoodm9pZCheKShCT09MKSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworLSh2b2lkKV9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOihOU1VSTCAq
KW9yaWdpbiB0b3BPcmlnaW46KE5TVVJMICopdG9wT3JpZ2luIHR5cGU6KE5TU3RyaW5nICopZGF0
YVR5cGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1YWI0
NDg5YjMwY2IxZmU4MWNhYTEwMWY5YTU5NmZiN2U5Mjg1ZmNiLi4yNGNmMjBkNzMyMDM5NDFkNWNh
MzBkOGEzNTUyMTcxMDEyZTEyMWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTQyNyw2ICs0MjcsMTEg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY28KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKHNlc3Npb25JRCwg
b2xkTmFtZSwgbmV3TmFtZSwgZGF0YVR5cGVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OndlYnNpdGVEYXRhT3JpZ2luRGlyZWN0
b3J5Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCYmIG9yaWdpbiwgVVJM
JiYgdG9wT3JpZ2luLCBXZWJzaXRlRGF0YVR5cGUgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpXZWJzaXRlRGF0YU9yaWdpbkRpcmVj
dG9yeUZvclRlc3Rpbmcoc2Vzc2lvbklELCBXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUodG9wT3Jp
Z2luKSwgdHlwZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShUZXJtaW5hdGlvblJl
YXNvbiByZWFzb24pCiB7CiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAppbmRleCA5NWJiY2NhNTE5ZWE1ZDQyNzhiZDMwN2I1ZjJjYWRhMGVkZDMyNjdiLi4xZTg2ZjM0
MjYzZTA4ZTAwYjRjMDhmOTczODdiZjA4OTg5YjgxZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTM1LDYg
KzEzNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lv
bklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lk
IGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YktpdDo6V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mIG9yaWdpbnMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBIU1RTQ2FjaGVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgcmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwg
Y29uc3QgVVJMJiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisgICAgdm9pZCB3ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIFVSTCYmLCBVUkwmJiwgV2Vic2l0ZURhdGFUeXBlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKIAogICAgIHZvaWQgZ2V0TG9jYWxT
dG9yYWdlRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKaW5kZXggNTBjOTM1MmI2NjljNTg2OWM3NzQ4YzM5OWJhMjFjOGI3ZDU5
MGExMy4uNzFhZTkyNjU0OGJjYjkxZjVjYTIwYjkwMTYyNzA2MjE3ODM3YTdhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKQEAgLTE5ODgsNiArMTk4OCwxMSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJl
bmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoVVJMJiYgb2xkTmFtZSwgVVJMJiYgbmV3TmFtZSwgTwog
ICAgIG5ldHdvcmtQcm9jZXNzKCkucmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShtX3Nlc3Npb25J
RCwgb2xkTmFtZSwgbmV3TmFtZSwgZGF0YVR5cGVzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6b3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGlu
ZyhVUkwmJiBvcmlnaW4sIFVSTCYmIHRvcE9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlIHR5cGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgbmV0d29ya1Byb2Nlc3MoKS53ZWJzaXRlRGF0YU9yaWdpbkRpcmVjdG9yeUZvclRl
c3RpbmcobV9zZXNzaW9uSUQsIFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0
eXBlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKICNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhhc0FwcEJvdW5kU2Vzc2lvbihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCmluZGV4IGIxMjlhYmYzNzc1ZjVjM2E4NzZiZmZkZjMzMmVhYzFjOGU4YzI0
YTEuLjZlZjk1NTAxNzI2NjhmNTY4MTg1OWJiNzUzMDMyNDM1N2Y3ZTlhZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKQEAgLTMyMCw2ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6TG9jYWxXZWJMb2Nr
UmVnaXN0cnkmIHdlYkxvY2tSZWdpc3RyeSgpIHsgcmV0dXJuIG1fd2ViTG9ja1JlZ2lzdHJ5Lmdl
dCgpOyB9CiAKICAgICB2b2lkIHJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoVVJMJiYsIFVSTCYm
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIG9yaWdpbkRpcmVjdG9yeUZvclRlc3RpbmcoVVJMJiYsIFVSTCYmLCBXZWJz
aXRlRGF0YVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwog
CiAgICAgYm9vbCBuZXR3b3JrUHJvY2Vzc0hhc0VudGl0bGVtZW50Rm9yVGVzdGluZyhjb25zdCBT
dHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGQ3MjUwMmY0MGIyOWZiNzQ1ZGYyNzJhNzc2YmE5N2FlNDYxZTE2MTEuLmE2ZDE3ZWU1
ZGVkMWVkZDkxZWExNjI4OWRiODUxODQ4NTk3ZGI0MjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wMy0yNCAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYW4g
U1BJIHRvIGdldCB3ZWJzaXRlIGRhdGEgZGlyZWN0b3J5IGZvciBvcmlnaW4gYW5kIHVzZSBpdCBp
biBBUEkgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzODI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQkNoZWNrcG9pbnRXQUwu
bW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0lEQkluZGV4VXBncmFkZVRvVjIubW06CisgICAgICAgIChydW5NdWx0aXBsZUluZGlj
ZXNUZXN0V2l0aERhdGFiYXNlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAg
IChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4
ZWREQlBlcnNpc3RlbmNlLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5kZXhlZERCVGVtcEZpbGVTaXplLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1t
OgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW06CisgICAgICAgIChydW5XZWJzaXRl
RGF0YVN0b3JlQ3VzdG9tUGF0aHMpOgorCiAyMDIyLTAzLTI0ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KCkgc2hvdWxkIHRha2UgaW4gU3RyaW5nVmlld3MgaW5zdGVhZCBvZiBTdHJpbmdzCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQkNoZWNrcG9p
bnRXQUwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQkNoZWNr
cG9pbnRXQUwubW0KaW5kZXggNzEwMDUyOTg2MWM5MWMwNWVhOGQyNjA0MmU2ODY4NjNmZDQ4M2Iw
MC4uZjIzMDJlZjY4ZWNkYzFmYmMyYjA1ZWI2OTI4NDY4MDdmNjBmOGY0MSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJDaGVja3BvaW50V0FMLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCQ2hlY2twb2lu
dFdBTC5tbQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAorI2ltcG9y
dCAiRGVwcmVjYXRlZEdsb2JhbFZhbHVlcy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5o
PgpAQCAtNzQsMzYgKzc1LDQwIEBAIGxvbmcgbG9uZyBmaWxlU2l6ZUF0UGF0aChOU1N0cmluZyAq
cGF0aCkKIAogVEVTVChJbmRleGVkREIsIENoZWNrcG9pbnRzV0FMQXV0b21hdGljYWxseSkKIHsK
LSAgICBOU1N0cmluZyAqaGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVI
YXNoRm9yRmlsZU5hbWUoInRlc3Qtd2FsLWNoZWNrcG9pbnQiKTsKLSAgICBOU1N0cmluZyAqYmFz
ZVBhdGggPSBbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQ
SS9XZWJzaXRlRGF0YS9JbmRleGVkREIvdjEvZmlsZV9fMCIgc3RyaW5nQnlFeHBhbmRpbmdUaWxk
ZUluUGF0aF07Ci0gICAgYmFzZVBhdGggPSBbYmFzZVBhdGggc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50Omhhc2hdOwotCi0gICAgaWYgKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpiYXNlUGF0aF0pIHsKLSAgICAgICAgQk9PTCBzdWNjZXNzID0g
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOmJhc2VQYXRo
IGVycm9yOm5pbF07Ci0gICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwotICAgIH0KLQotICAg
IFJldGFpblB0cjxJREJDaGVja3BvaW50V0FMTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9w
dE5TKFtbSURCQ2hlY2twb2ludFdBTE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAg
UmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gaGFuZGxl
ciA9IGFkb3B0TlMoW1tJREJDaGVja3BvaW50V0FMTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRd
KTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RI
YW5kbGVyIl07CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSByZW1v
dmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1v
ZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsK
KyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CiAKICAgICBbY29uZmlndXJhdGlvbi5nZXQo
KS53ZWJzaXRlRGF0YVN0b3JlIF90ZXJtaW5hdGVOZXR3b3JrUHJvY2Vzc107CiAKLSAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKLQorICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0
ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAiSURCQ2hlY2twb2ludFdBTCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOwotCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKFtoYW5k
bGVyIHJlY2VpdmVkU2NyaXB0TWVzc2FnZVBvaW50ZXJdKTsKLQogICAgIEVYUEVDVF9TVFJFUShb
W1toYW5kbGVyIGxhc3RTY3JpcHRNZXNzYWdlXSBib2R5XSBVVEY4U3RyaW5nXSwgIlN1Y2Nlc3Mi
KTsKIAorICAgIE5TVVJMICpvcmlnaW5VUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZpbGU6
Ly8iXTsKKyAgICBfX2Jsb2NrIE5TU3RyaW5nICppbmRleGVkREJEaXJlY3RvcnlTdHJpbmcgPSBu
aWw7CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSBfb3JpZ2luRGly
ZWN0b3J5Rm9yVGVzdGluZzpvcmlnaW5VUkwgdG9wT3JpZ2luOm9yaWdpblVSTCB0eXBlOldLV2Vi
c2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJp
bmcgKnJlc3VsdCkgeworICAgICAgICBpbmRleGVkREJEaXJlY3RvcnlTdHJpbmcgPSByZXN1bHQ7
CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CisgICAgTlNVUkwgKmluZGV4ZWREQkRpcmVjdG9yeSA9IFtOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6aW5kZXhlZERCRGlyZWN0b3J5U3RyaW5nIGlzRGlyZWN0b3J5OllFU107Cisg
ICAgTlNTdHJpbmcgKmRhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNv
bXB1dGVIYXNoRm9yRmlsZU5hbWUoInRlc3Qtd2FsLWNoZWNrcG9pbnQiKTsKKyAgICBOU1VSTCAq
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBbaW5kZXhlZERCRGlyZWN0b3J5IFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpkYXRhYmFzZUhhc2hdOworICAgIE5TVVJMICppbmRleGVkREJE
YXRhYmFzZUZpbGUgPSBbaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXTsKKyAgICBOU1VSTCAqaW5kZXhlZERC
RGF0YWJhc2VXQUwgPSBbaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMtd2FsIl07CisKICAgICAvLyBXZSBpbnNl
cnRlZCBhIHNpbmdsZSA1IE1CIHJvdywgd2hpY2ggaXMgZ3JlYXRlciB0aGFuIHRoZSBXQUwgYXV0
by1jaGVja3BvaW50CiAgICAgLy8gdGhyZXNob2xkIG9mIDRNQiwgc28gdGhlIFdBTCBzaG91bGQg
YmUgb2YgbWluaW1hbCBzaXplIG5vdy4KLSAgICBOU1N0cmluZyAqd2FsUGF0aCA9IFtiYXNlUGF0
aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMy13YWwi
XTsKLSAgICBFWFBFQ1RfTFQoZmlsZVNpemVBdFBhdGgod2FsUGF0aCksIDEyOCAqIDEwMjQpOwor
ICAgIEVYUEVDVF9MVChmaWxlU2l6ZUF0UGF0aChpbmRleGVkREJEYXRhYmFzZVdBTC5wYXRoKSwg
MTI4ICogMTAyNCk7CiAKICAgICAvLyBTaW5jZSB0aGUgc2luZ2xlIDUgTUIgcm93IHdhcyBjaGVj
a3BvaW50ZWQgdG8gdGhlIG1haW4gREIgZmlsZSwgaXQgc2hvdWxkIGJlIGF0IGxlYXN0IHRoYXQg
bGFyZ2UuCi0gICAgTlNTdHJpbmcgKmRiUGF0aCA9IFtiYXNlUGF0aCBzdHJpbmdCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJdOwotICAgIEVYUEVDVF9HVChmaWxl
U2l6ZUF0UGF0aChkYlBhdGgpLCA1ICogMTAyNCAqIDEwMjQpOworICAgIEVYUEVDVF9HVChmaWxl
U2l6ZUF0UGF0aChpbmRleGVkREJEYXRhYmFzZUZpbGUucGF0aCksIDUgKiAxMDI0ICogMTAyNCk7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lE
QkluZGV4VXBncmFkZVRvVjIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0lEQkluZGV4VXBncmFkZVRvVjIubW0KaW5kZXggYjhiMjc1NTk3NWE4ODQwYmJkN2U1NTdk
ZGRmN2MxOTE5ZmRiNDNlMC4uMWY3NWYyNTIxMDgyM2M0ZWYxZmE1MDMxMmE0YWUzNzQzYzcyYjdi
NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJJ
bmRleFVwZ3JhZGVUb1YyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSURCSW5kZXhVcGdyYWRlVG9WMi5tbQpAQCAtODUsMjggKzg1LDI4IEBAIFRFU1QoSW5k
ZXhlZERCLCBJbmRleFVwZ3JhZGVUb1YyKQogCiBzdGF0aWMgdm9pZCBydW5NdWx0aXBsZUluZGlj
ZXNUZXN0V2l0aERhdGFiYXNlKE5TU3RyaW5nKiBkYXRhYmFzZU5hbWUpCiB7Ci0gICAgUmV0YWlu
UHRyPElEQkluZGV4VXBncmFkZVRvVjJNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMo
W1tJREJJbmRleFVwZ3JhZGVUb1YyTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKLSAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVy
ID0gYWRvcHROUyhbW0lEQkluZGV4VXBncmFkZVRvVjJNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5p
dF0pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVz
dEhhbmRsZXIiXTsKLQogICAgIFtjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUg
X3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzXTsKIAogICAgIE5TVVJMICp1cmwgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOmRhdGFiYXNlTmFtZSB3aXRoRXh0ZW5zaW9uOkAi
c3FsaXRlMyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKLQogICAg
IE5TU3RyaW5nICpoYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hG
b3JGaWxlTmFtZSgiaW5kZXgtdXBncmFkZS10ZXN0Iik7Ci0gICAgTlNTdHJpbmcgKm9yaWdpbkRp
cmVjdG9yeSA9IEAifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRB
UEkvV2Vic2l0ZURhdGEvSW5kZXhlZERCL3YxL2ZpbGVfXzAvIjsKLSAgICBOU1N0cmluZyAqZGF0
YWJhc2VEaXJlY3RvcnkgPSBbW29yaWdpbkRpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1N0cmlu
ZzpoYXNoXSBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXTsKLSAgICBOU1VSTCAqdGFyZ2V0
VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkYXRhYmFzZURpcmVjdG9yeV07Ci0gICAgW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6dGFyZ2V0VVJMIGVy
cm9yOm5pbF07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJl
Y3RvcnlBdFVSTDp0YXJnZXRVUkwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRy
aWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwotCi0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjb3B5SXRlbUF0VVJMOnVybCB0b1VSTDpbdGFyZ2V0VVJMIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKLQotICAgIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwotCisgICAgTlNVUkwgKm9yaWdpblVSTCA9IFtOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiZmlsZTovLyJdOworICAgIF9fYmxvY2sgTlNTdHJpbmcgKm9yaWdpbkRpcmVjdG9y
eVN0cmluZyA9IG5pbDsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3Jl
IF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOm9yaWdpblVSTCB0b3BPcmlnaW46b3JpZ2luVVJM
IHR5cGU6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgY29tcGxldGlvbkhhbmRs
ZXI6XihOU1N0cmluZyAqcmVzdWx0KSB7CisgICAgICAgIG9yaWdpbkRpcmVjdG9yeVN0cmluZyA9
IHJlc3VsdDsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBOU1VSTCAqZGF0YWJhc2VEaXJlY3RvcnkgPSBbW05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpvcmlnaW5EaXJlY3RvcnlTdHJpbmcgaXNEaXJlY3Rvcnk6WUVT
XSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6aGFzaF07CisgICAgW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZGF0YWJhc2VEaXJlY3RvcnkgZXJyb3I6
bmlsXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9y
eUF0VVJMOmRhdGFiYXNlRGlyZWN0b3J5IHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMg
YXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsIHRvVVJMOltkYXRhYmFzZURpcmVjdG9yeSBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJdIGVycm9yOm5pbF07CisK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIklEQklu
ZGV4VXBncmFkZVRvVjJXaXRoTXVsdGlwbGVJbmRpY2VzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0KICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJHZXQgb2JqZWN0
OiB7XCJuYW1lXCI6XCJhcHBsZVwiLFwiY29sb3JcIjpcInJlZFwifSIsIFtsYXN0U2NyaXB0TWVz
c2FnZSBib2R5XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbQppbmRleCA0MTAyMjI0ZTQ1Mjc0ZDM2Mzc5
ZTRiYjAwMmEwZmVlODk4MzJmNWJjLi4zOWNhZWFjODA0NTI0ZDVkZGRiMDhiZjFjYTgzNjY3ZGJm
OTc3NTUwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luZGV4ZWREQkZpbGVOYW1lLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURh
dGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdl
YktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCiBAaW50ZXJmYWNlIEluZGV4ZWREQkZpbGVOYW1lTWVzc2FnZUhhbmRsZXIg
OiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KQEAgLTUwLDYgKzUxLDEyIEBAIHN0
YXRpYyB2b2lkIHJ1blRlc3QoKQogewogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tJbmRl
eGVkREJGaWxlTmFtZU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICAvLyBXZSBuZWVkIHRvIGNyZWF0ZSBjdXN0b20gV2Vic2l0ZURhdGFTdG9yZSB0aGF0
IHVzZXMgY3VzdG9tIEluZGV4ZWREQiBwYXRocyB0byB0ZXN0IG9sZCBtaWdyYXRpb24gY29kZS4K
KyAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgd2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuc2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBhdGhzID0g
dHJ1ZTsKKyAgICAvLyBDdXN0b20gV2Vic2l0ZURhdGFTdG9yZSBtdXN0IGhhdmUgYSBkaWZmZXJl
bnQgZ2VuZXJhbCBzdG9yYWdlIGRpcmVjdG9yeSB0aGFuIGRlZmF1bHQgV2Vic2l0ZURhdGFTdG9y
ZS4KKyAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5nZW5lcmFsU3RvcmFn
ZURpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9j
b20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURhdGEvRGVmYXVsdCIg
c3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uZ2V0KCldKS5nZXQoKV07CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVz
dEhhbmRsZXIiXTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIApAQCAtNzksNyArODYsNyBAQCBzdGF0aWMgdm9p
ZCBydW5UZXN0KCkKICAgICBOU1N0cmluZyAqZXhpc3RpbmdEYXRiYXNlSGFzaCA9IFdlYkNvcmU6
OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoZXhpc3RpbmdEYXRhYmFz
ZU5hbWUpOwogICAgIE5TU3RyaW5nICpjcmVhdGVkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FM
aXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjcmVhdGVkRGF0YWJhc2VOYW1l
KTsKICAgICBOU1N0cmluZyAqdW51c2VkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmls
ZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjcmVhdGVkRGF0YWJhc2VOYW1lKTsKLSAg
ICBOU1VSTCAqaWRiUm9vdFVSTCA9IFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3Rv
cmVdIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeV07CisgICAgTlNVUkwgKmlkYlJvb3RVUkwg
PSBbd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkgX2luZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5XTsKICAgICBOU1VSTCAqb2xkVmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJSb290
VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYwIl07CiAgICAgTlNVUkwgKm5ld1Zl
cnNpb25EaXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJ2MSJdOwogICAgIE5TVVJMICpvbGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMID0gW29s
ZFZlcnNpb25EaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImZpbGVf
XzAiXTsKQEAgLTE3MywxNSArMTgwLDIwIEBAIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJGaWxl
TmFtZUFQSSkKIHsKICAgICBjcmVhdGVEaXJlY3RvcmllcygiQVBJIik7CiAgICAgCi0gICAgUmV0
YWluUHRyPE5TU2V0PiB0eXBlcyA9IGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhPYmpl
Y3RzOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBuaWxdKTsKLSAgICBbW1dL
V2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBl
czp0eXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJl
Y29yZCAqPiAqIHJlY29yZHMpIHsKKyAgICBhdXRvIHR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFs
bG9jXSBpbml0V2l0aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMs
IG5pbF0pOworICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICB3
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5zaG91bGRVc2VDdXN0b21TdG9yYWdl
UGF0aHMgPSB0cnVlOworICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLmdl
bmVyYWxTdG9yYWdlRGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJh
cnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0
YS9EZWZhdWx0IiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpZRVNd
OworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5n
ZXQoKV0pOworCisgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcy5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAq
IHJlY29yZHMpIHsKICAgICAgICAgRVhQRUNUX0VRKDNVLCBbcmVjb3JkcyBjb3VudF0pOwogICAg
ICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwogICAgIH1dOwogICAgIHJlYWR5VG9Db250aW51
ZSA9IGZhbHNlOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVl
KTsKIAotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURh
dGFPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0czpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWRE
QkRhdGFiYXNlcywgbmlsXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBs
ZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbTlNT
ZXQgc2V0V2l0aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMsIG5p
bF0gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpe
KCkgewogICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwogICAgIH1dOwogICAgIHJlYWR5
VG9Db250aW51ZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KaW5kZXggMzExNjNh
MzA5Zjc0NGNjZWIzMGE2YjkxMGU1NWRiYWUxODM3NmM2NC4uMDdmMGNlMjgxNTYwMThmZDVlNDRm
NGViNDdkYWI2NTY3MjQ3YjdlNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0zMjYs
MjUgKzMyNiwzMyBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFSZW1v
dmFsKQogCiBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eVN0b3JhZ2VMYXlvdXQp
CiB7Ci0gICAgTlNVUkwgKnJlc291cmNlU2FsdCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJnZW5lcmFsLXN0b3JhZ2UtZGlyZWN0b3J5IiB3aXRoRXh0ZW5zaW9uOkAi
c2FsdCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKLSAgICBOU1VS
TCAqZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4v
TGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNp
dGVEYXRhL0RlZmF1bHQiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5
OllFU107Ci0gICAgTlNVUkwgKndlYmtpdE9yaWdpbkZpbGUgPSBbZ2VuZXJhbFN0b3JhZ2VEaXJl
Y3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRUFPNjZzOEp2Q1dObjREM1lRdXQ1
cFhmaUdGX1VYTlpHdk1HTjZhS0lMZy9FQU82NnM4SnZDV05uNEQzWVF1dDVwWGZpR0ZfVVhOWkd2
TUdONmFLSUxnL29yaWdpbiJdOwotICAgIE5TVVJMICp3ZWJraXRJZnJhbWVPcmlnaW5GaWxlID0g
W2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkVB
TzY2czhKdkNXTm40RDNZUXV0NXBYZmlHRl9VWE5aR3ZNR042YUtJTGcvdnVkdmJNbEtYajFtNlJp
Ym5WdmM4UGRBZGNYWnNORTZPTl9BbDd5cU9zZy9vcmlnaW4iXTsKLSAgICBOU1VSTCAqaWZyYW1l
V2ViS2l0T3JpZ2luRmlsZSA9IFtnZW5lcmFsU3RvcmFnZURpcmVjdG9yeSBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJ2dWR2Yk1sS1hqMW02UmliblZ2YzhQZEFkY1hac05FNk9OX0FsN3lx
T3NnL0VBTzY2czhKdkNXTm40RDNZUXV0NXBYZmlHRl9VWE5aR3ZNR042YUtJTGcvb3JpZ2luIl07
Ci0gICAgTlNVUkwgKmlkYkRpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9M
aWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vic2l0
ZURhdGEvSW5kZXhlZERCIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9y
eTpZRVNdOwotICAgIE5TU3RyaW5nICpoYXNoZWREYXRhYmFzZU5hbWUgPSBXZWJDb3JlOjpTUUxp
dGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKCJJbmRleGVkREJUaGlyZFBhcnR5
RnJhbWVIYXNBY2Nlc3MiKTsKLSAgICBOU1VSTCAqd2Via2l0SWZyYW1lRGF0YWJhc2VGaWxlID0g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNTdHJpbmcgcGF0aFdpdGhDb21wb25lbnRzOkBbaWRi
RGlyZWN0b3J5LnBhdGgsIEAidjEvaHR0cF93ZWJraXQub3JnXzAvaWZyYW1lX18wLyIsIGhhc2hl
ZERhdGFiYXNlTmFtZSwgQCJJbmRleGVkREIuc3FsaXRlMyJdXV07CisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBOU1N0cmluZyAqZGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6
Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZSgiSW5kZXhlZERCVGhpcmRQYXJ0eUZyYW1lSGFzQWNjZXNz
Iik7CisgICAgTlNVUkwgKndlYmtpdFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDov
L3dlYmtpdC5vcmciXTsKKyAgICBOU1VSTCAqaWZyYW1lVVJMID0gW05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJpZnJhbWU6Ly8iXTsKKyAgICBfX2Jsb2NrIE5TU3RyaW5nICpkaXJlY3RvcnlTdHJpbmcg
PSBuaWw7CisgICAgZG9uZSA9IGZhbHNlOworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLndlYnNp
dGVEYXRhU3RvcmUgX29yaWdpbkRpcmVjdG9yeUZvclRlc3Rpbmc6aWZyYW1lVVJMIHRvcE9yaWdp
bjp3ZWJraXRVUkwgdHlwZTpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyBjb21w
bGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICpyZXN1bHQpIHsKKyAgICAgICAgZGlyZWN0b3J5U3Ry
aW5nID0gcmVzdWx0OworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIE5TVVJMICp3ZWJraXRJZnJhbWVSb290RGly
ZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkaXJlY3RvcnlTdHJpbmcgaXNEaXJlY3Rv
cnk6WUVTXTsKKyAgICBOU1VSTCAqd2Via2l0SWZyYW1lRGF0YWJhc2VEaXJlY3RvcnkgPSBbd2Vi
a2l0SWZyYW1lUm9vdERpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGF0YWJh
c2VIYXNoXTsKKyAgICBOU1VSTCAqd2Via2l0SWZyYW1lRGF0YWJhc2VGaWxlID0gW3dlYmtpdElm
cmFtZURhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4
ZWREQi5zcWxpdGUzIl07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW2NvbmZpZ3VyYXRpb24u
Z2V0KCkud2Vic2l0ZURhdGFTdG9yZSBfb3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZzp3ZWJraXRV
UkwgdG9wT3JpZ2luOmlmcmFtZVVSTCB0eXBlOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0
YWJhc2VzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgICAgICBk
aXJlY3RvcnlTdHJpbmcgPSByZXN1bHQ7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgTlNVUkwgKmlmcmFtZVdl
YktpdFJvb3REaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmRpcmVjdG9yeVN0cmlu
ZyBpc0RpcmVjdG9yeTpZRVNdOworCiAgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFnZXIgPSBb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07Ci0gICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0
ZW1BdFVSTDpnZW5lcmFsU3RvcmFnZURpcmVjdG9yeSBlcnJvcjpuaWxdOwotICAgIFtmaWxlTWFu
YWdlciBjcmVhdGVEaXJlY3RvcnlBdFVSTDpnZW5lcmFsU3RvcmFnZURpcmVjdG9yeSB3aXRoSW50
ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAg
W2ZpbGVNYW5hZ2VyIGNvcHlJdGVtQXRVUkw6cmVzb3VyY2VTYWx0IHRvVVJMOltnZW5lcmFsU3Rv
cmFnZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJzYWx0Il0gZXJyb3I6
bmlsXTsKLSAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmlkYkRpcmVjdG9yeSBlcnJv
cjpuaWxdOworICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6d2Via2l0SWZyYW1lUm9v
dERpcmVjdG9yeSBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6
aWZyYW1lV2ViS2l0Um9vdERpcmVjdG9yeSBlcnJvcjpuaWxdOwogCi0gICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
LSAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgd2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0g
aWRiRGlyZWN0b3J5OwotICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLmdl
bmVyYWxTdG9yYWdlRGlyZWN0b3J5ID0gZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgW2Nv
bmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmdldCgpXSkuZ2V0KCldOwogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tJbmRl
eGVkREJNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1
c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0
KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CiAgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHRO
UyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CkBAIC0zNjAsMTAgKzM2OCw5
IEBAIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJUaGlyZFBhcnR5U3RvcmFnZUxheW91dCkKIAog
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CiAgICAgbG9hZFRoaXJkUGFydHlQYWdlSW5XZWJWaWV3KHdlYlZpZXcuZ2V0KCks
IEAiZGF0YWJhc2UgaXMgY3JlYXRlZCAtIHB1dCBpdGVtIHN1Y2Nlc3MiKTsKLSAgICBFWFBFQ1Rf
VFJVRShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDp3ZWJraXRPcmlnaW5GaWxlLnBhdGhd
KTsKLSAgICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDp3ZWJraXRJ
ZnJhbWVPcmlnaW5GaWxlLnBhdGhdKTsKLSAgICBFWFBFQ1RfRkFMU0UoW2ZpbGVNYW5hZ2VyIGZp
bGVFeGlzdHNBdFBhdGg6aWZyYW1lV2ViS2l0T3JpZ2luRmlsZS5wYXRoXSk7CisgICAgRVhQRUNU
X1RSVUUoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6d2Via2l0SWZyYW1lUm9vdERpcmVj
dG9yeS5wYXRoXSk7CiAgICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBh
dGg6d2Via2l0SWZyYW1lRGF0YWJhc2VGaWxlLnBhdGhdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW2Zp
bGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6aWZyYW1lV2ViS2l0Um9vdERpcmVjdG9yeS5wYXRo
XSk7CiB9CiAKIFRFU1QoSW5kZXhlZERCLCBNaWdyYXRlVGhpcmRQYXJ0eURhdGFUb0dlbmVyYWxT
dG9yYWdlRGlyZWN0b3J5KQpAQCAtNTg0LDExICs1OTEsMzUgQEAgVEVTVChJbmRleGVkREIsIElu
ZGV4ZWREQkdldERhdGFiYXNlcykKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJtYWluIGZyYW1lIGRh
dGFiYXNlczogW10iLCBbZ2V0TmV4dE1lc3NhZ2UoKSBib2R5XSk7CiAKICAgICAvLyBHZXR0aW5n
IGRhdGFiYXNlcyBzaG91bGQgbm90IGNyZWF0ZSBmaWxlcyBvbiBkaXNrLgotICAgIE5TVVJMICpp
ZGJEaXJlY3RvcnlVUkwgPSBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBf
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnldOwotICAgIE5TVVJMICp2ZXJzaW9uRGlyZWN0b3J5
VVJMID0gW2lkYkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJd
OwotICAgIE5TVVJMICphcHBsZURpcmVjdG9yeVVSTCA9IFt2ZXJzaW9uRGlyZWN0b3J5VVJMIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogQCJodHRwX2FwcGxlLmNvbV8wIl07Ci0gICAgTlNV
UkwgKmFwcGxlV2Via2l0RGlyZWN0b3J5VVJMID0gW2FwcGxlRGlyZWN0b3J5VVJMIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDogQCJ3ZWJraXRfXzAiXTsKLSAgICBOU1VSTCAqd2Via2l0RGly
ZWN0b3J5VVJMID0gW3ZlcnNpb25EaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OiBAIndlYmtpdF9fMCJdOworICAgIE5TVVJMICphcHBsZVVSTCA9IFtOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cDovL2FwcGxlLmNvbSJdOworICAgIE5TVVJMICp3ZWJraXRVUkwgPSBbTlNV
UkwgVVJMV2l0aFN0cmluZzpAIndlYmtpdDovLyJdOworICAgIF9fYmxvY2sgTlNTdHJpbmcgKmFw
cGxlRGlyZWN0b3J5U3RyaW5nID0gbmlsOworICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOwor
ICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIF9vcmlnaW5EaXJlY3Rv
cnlGb3JUZXN0aW5nOmFwcGxlVVJMIHRvcE9yaWdpbjphcHBsZVVSTCB0eXBlOldLV2Vic2l0ZURh
dGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKnJl
c3VsdCkgeworICAgICAgICBhcHBsZURpcmVjdG9yeVN0cmluZyA9IHJlc3VsdDsKKyAgICAgICAg
cmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJnJlYWR5VG9Db250aW51ZSk7CisgICAgTlNVUkwgKmFwcGxlRGlyZWN0b3J5VVJMID0g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDphcHBsZURpcmVjdG9yeVN0cmluZyBpc0RpcmVjdG9yeTpZ
RVNdOworCisgICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CisgICAgX19ibG9jayBOU1N0cmlu
ZyAqd2Via2l0RGlyZWN0b3J5U3RyaW5nID0gbmlsOworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3Jl
IGRlZmF1bHREYXRhU3RvcmVdIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOndlYmtpdFVSTCB0
b3BPcmlnaW46d2Via2l0VVJMIHR5cGU6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFz
ZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqcmVzdWx0KSB7CisgICAgICAgIHdlYmtp
dERpcmVjdG9yeVN0cmluZyA9IHJlc3VsdDsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51
ZSk7CisgICAgTlNVUkwgKndlYmtpdERpcmVjdG9yeVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6d2Via2l0RGlyZWN0b3J5U3RyaW5nIGlzRGlyZWN0b3J5OllFU107CisKKyAgICBfX2Jsb2Nr
IE5TU3RyaW5nICphcHBsZVdlYmtpdERpcmVjdG9yeVN0cmluZyA9IG5pbDsKKyAgICByZWFkeVRv
Q29udGludWUgPSBmYWxzZTsKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXSBfb3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGluZzp3ZWJraXRVUkwgdG9wT3JpZ2luOmFwcGxl
VVJMIHR5cGU6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgY29tcGxldGlvbkhh
bmRsZXI6XihOU1N0cmluZyAqcmVzdWx0KSB7CisgICAgICAgIGFwcGxlV2Via2l0RGlyZWN0b3J5
U3RyaW5nID0gcmVzdWx0OworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICBO
U1VSTCAqYXBwbGVXZWJraXREaXJlY3RvcnlVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmFw
cGxlV2Via2l0RGlyZWN0b3J5U3RyaW5nIGlzRGlyZWN0b3J5OllFU107CisKICAgICBhdXRvIGRl
ZmF1bHRGaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKICAgICBF
WFBFQ1RfVFJVRShbZGVmYXVsdEZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6YXBwbGVEaXJl
Y3RvcnlVUkwucGF0aF0pOwogICAgIEVYUEVDVF9GQUxTRShbZGVmYXVsdEZpbGVNYW5hZ2VyIGZp
bGVFeGlzdHNBdFBhdGg6YXBwbGVXZWJraXREaXJlY3RvcnlVUkwucGF0aF0pOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJUZW1wRmls
ZVNpemUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWRE
QlRlbXBGaWxlU2l6ZS5tbQppbmRleCBjYmFkNzI0NGVlMTM1OGQ2ODYwYjMyYWMwMjJmM2VhNmFl
YjMxMTNjLi5kNjc2NGVjMjI3NDRlZjRkMDA5N2I2YTMwNGRlZjY2MzU5NTBiZDdhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlRlbXBG
aWxlU2l6ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
ZGV4ZWREQlRlbXBGaWxlU2l6ZS5tbQpAQCAtNTksMTggKzU5LDIwIEBAIFRFU1QoSW5kZXhlZERC
LCBJbmRleGVkREJUZW1wRmlsZVNpemUpCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5k
bGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwogCisgICAgTlNVUkwgKm9yaWdpblVSTCA9
IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZmlsZTovLyJdOworICAgIF9fYmxvY2sgTlNTdHJpbmcg
KmRhdGFiYXNlUm9vdERpcmVjdG9yeVN0cmluZyA9IG5pbDsKKyAgICByZWFkeVRvQ29udGludWUg
PSBmYWxzZTsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlIF9vcmln
aW5EaXJlY3RvcnlGb3JUZXN0aW5nOm9yaWdpblVSTCB0b3BPcmlnaW46b3JpZ2luVVJMIHR5cGU6
V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgY29tcGxldGlvbkhhbmRsZXI6XihO
U1N0cmluZyAqcmVzdWx0KSB7CisgICAgICAgIGRhdGFiYXNlUm9vdERpcmVjdG9yeVN0cmluZyA9
IHJlc3VsdDsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CisgICAgTlNVUkwgKmRh
dGFiYXNlUm9vdERpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGF0YWJhc2VSb290
RGlyZWN0b3J5U3RyaW5nIGlzRGlyZWN0b3J5OllFU107CiAgICAgTlNTdHJpbmcgKmhhc2ggPSBX
ZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKCJJbmRleGVk
REJUZW1wRmlsZVNpemUiKTsKLSAgICBOU1N0cmluZyAqZGF0YWJhc2VSb290RGlyZWN0b3J5ID0g
W0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvQ3VzdG9t
V2Vic2l0ZURhdGEvSW5kZXhlZERCLyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF07Ci0g
ICAgTlNTdHJpbmcgKmRhdGFiYXNlRGlyZWN0b3J5ID0gW1tbZGF0YWJhc2VSb290RGlyZWN0b3J5
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYxIl0gc3RyaW5nQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiZmlsZV9fMCJdIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpo
YXNoXTsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IGlkYlBhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOmRhdGFiYXNlUm9vdERpcmVjdG9yeSBpc0RpcmVjdG9yeTpZRVNdOwotICAgIFJldGFpblB0
cjxOU1VSTD4gd2FsRmlsZVBhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltkYXRhYmFzZURp
cmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRl
My13YWwiXSBpc0RpcmVjdG9yeTpOT107Ci0KLSAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX2lu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaWRiUGF0aC5nZXQoKTsKKyAgICBOU1VSTCAqZGF0
YWJhc2VEaXJlY3RvcnkgPSBbZGF0YWJhc2VSb290RGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpoYXNoXTsKKyAgICBOU1VSTCAqd2FsRmlsZVBhdGggPSBbZGF0YWJhc2VEaXJl
Y3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMtd2Fs
Il07CiAKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBhZG9wdE5T
KFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuZ2V0KCk7CiAgICAgYXV0byB0eXBlcyA9
IGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOldLV2Vic2l0ZURhdGFUeXBl
SW5kZXhlZERCRGF0YWJhc2VzLCBuaWxdKTsKLQogICAgIFtjb25maWd1cmF0aW9uLmdldCgpLndl
YnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMuZ2V0KCkgbW9kaWZpZWRTaW5j
ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAgICBy
ZWFkeVRvQ29udGludWUgPSB0cnVlOwogICAgIH1dOwpAQCAtOTQsOCArOTYsOCBAQCBURVNUKElu
ZGV4ZWREQiwgSW5kZXhlZERCVGVtcEZpbGVTaXplKQogICAgIHdlYlZpZXcgPSBuaWw7CiAgICAg
W2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSBfdGVybWluYXRlTmV0d29ya1By
b2Nlc3NdOwogCi0gICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBmaWxlRXhpc3RzQXRQYXRoOndhbEZpbGVQYXRoLmdldCgpLnBhdGhdKTsKLSAgICBSZXRhaW5Q
dHI8TlNEaWN0aW9uYXJ5PiBmaWxlQXR0cmlidXRlcyA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gYXR0cmlidXRlc09mSXRlbUF0UGF0aDp3YWxGaWxlUGF0aC5nZXQoKS5wYXRoIGVy
cm9yOm5pbF07CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBmaWxlRXhpc3RzQXRQYXRoOndhbEZpbGVQYXRoLnBhdGhdKTsKKyAgICBhdXRvIGZpbGVBdHRy
aWJ1dGVzID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVzT2ZJdGVt
QXRQYXRoOndhbEZpbGVQYXRoLnBhdGggZXJyb3I6bmlsXTsKICAgICBOU051bWJlciAqZmlsZVNp
emVCZWZvcmUgPSBbZmlsZUF0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TRmlsZVNpemVdOwogCiAg
ICAgLy8gT3BlbiB0aGUgc2FtZSBkYXRhYmFzZSBhZ2Fpbi4KQEAgLTEwNyw3ICsxMDksNyBAQCBU
RVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGVtcEZpbGVTaXplKQogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IHN0cmluZzMgPSAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV07CiAKLSAg
ICBmaWxlQXR0cmlidXRlcyA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gYXR0cmli
dXRlc09mSXRlbUF0UGF0aDp3YWxGaWxlUGF0aC5nZXQoKS5wYXRoIGVycm9yOm5pbF07CisgICAg
ZmlsZUF0dHJpYnV0ZXMgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGF0dHJpYnV0
ZXNPZkl0ZW1BdFBhdGg6d2FsRmlsZVBhdGgucGF0aCBlcnJvcjpuaWxdOwogICAgIE5TTnVtYmVy
ICpmaWxlU2l6ZUFmdGVyID0gW2ZpbGVBdHRyaWJ1dGVzIG9iamVjdEZvcktleTpOU0ZpbGVTaXpl
XTsKICAgICBFWFBFQ1RfR1QoW2ZpbGVTaXplQmVmb3JlIGxvbmdMb25nVmFsdWVdLCBbZmlsZVNp
emVBZnRlciBsb25nTG9uZ1ZhbHVlXSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbQppbmRleCA4
ZTg1YTQwYTVlODNiYTAzNDMyMWU3ZTc5NjlkODM1NWUzMmMyNDY1Li5kMDhkYzI3YzU4NDk3NWNk
MDg4NDAxNzEwYzYwOWM5N2M3ZTYyYzJlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1N0b3JlQmxvYlRoZW5EZWxldGUubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yZUJsb2JUaGVuRGVsZXRlLm1tCkBAIC01
MiwxMiArNTIsMTAgQEAKIAogVEVTVChJbmRleGVkREIsIFN0b3JlQmxvYlRoZW5SZW1vdmVEYXRh
KQogewotICAgIFJldGFpblB0cjxTdG9yZUJsb2JNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFk
b3B0TlMoW1tTdG9yZUJsb2JNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwotICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtbU3RvcmVCbG9iTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNj
cmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07Ci0K
LSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLQorICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAiU3RvcmVCbG9iVG9CZURlbGV0ZWQiIHdpdGhFeHRlbnNp
b246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKIApAQCAtNjUsMTQgKzYzLDIyIEBAIFRF
U1QoSW5kZXhlZERCLCBTdG9yZUJsb2JUaGVuUmVtb3ZlRGF0YSkKICAgICBFWFBFQ1RfV0tfU1RS
RVEoQCJTdWNjZXNzIiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKIAog
ICAgIE5TU3RyaW5nICpoYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhh
c2hGb3JGaWxlTmFtZSgiU3RvcmVCbG9iVG9CZURlbGV0ZWQiKTsKLSAgICBOU1N0cmluZyAqb3Jp
Z2luRGlyZWN0b3J5ID0gQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdl
YktpdEFQSS9XZWJzaXRlRGF0YS9JbmRleGVkREIvdjEvZmlsZV9fMC8iOwotICAgIE5TU3RyaW5n
ICpkYXRhYmFzZURpcmVjdG9yeSA9IFtbb3JpZ2luRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5n
U3RyaW5nOmhhc2hdIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdOwotICAgIE5TU3RyaW5n
ICpibG9iRmlsZVBhdGggPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiMS5ibG9iIl07Ci0gICAgTlNTdHJpbmcgKmRhdGFiYXNlRmlsZVBhdGggPSBb
ZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhl
ZERCLnNxbGl0ZTMiXTsKKyAgICBOU1VSTCAqb3JpZ2luVVJMID0gW05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJmaWxlOi8vIl07CisgICAgX19ibG9jayBOU1N0cmluZyAqb3JpZ2luRGlyZWN0b3J5U3Ry
aW5nID0gbmlsOworICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOworICAgIFtjb25maWd1cmF0
aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgX29yaWdpbkRpcmVjdG9yeUZvclRlc3Rpbmc6b3Jp
Z2luVVJMIHRvcE9yaWdpbjpvcmlnaW5VUkwgdHlwZTpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWRE
QkRhdGFiYXNlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICpyZXN1bHQpIHsKKyAgICAg
ICAgb3JpZ2luRGlyZWN0b3J5U3RyaW5nID0gcmVzdWx0OworICAgICAgICByZWFkeVRvQ29udGlu
dWUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlU
b0NvbnRpbnVlKTsKKyAgICBOU1VSTCAqb3JpZ2luRGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpvcmlnaW5EaXJlY3RvcnlTdHJpbmcgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBOU1VS
TCAqZGF0YWJhc2VEaXJlY3RvcnkgPSBbb3JpZ2luRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpoYXNoXTsKKyAgICBOU1VSTCAqYmxvYkZpbGVVUkwgPSBbZGF0YWJhc2VEaXJl
Y3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiMS5ibG9iIl07CisgICAgTlNVUkwg
KmRhdGFiYXNlRmlsZVVSTCA9IFtkYXRhYmFzZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJdOwogCiAgICAgLy8gVGhlIGRhdGFiYXNlIGZp
bGUgYW5kIGJsb2IgZmlsZSBzaG91bGQgZGVmaW5pdGVseSBiZSB0aGVyZSByaWdodCBub3cuCi0g
ICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3Rz
QXRQYXRoOmJsb2JGaWxlUGF0aF0pOwotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkYXRhYmFzZUZpbGVQYXRoXSk7CisgICAg
RVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQ
YXRoOmJsb2JGaWxlVVJMLnBhdGhdKTsKKyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGF0YWJhc2VGaWxlVVJMLnBhdGhdKTsK
IAogICAgIC8vIFRvIG1ha2Ugc3VyZSB0aGF0IHRoZSAtd2FsIGFuZCAtc2htIGZpbGVzIGZvciBh
IGRhdGFiYXNlIGFyZSBkZWxldGVkIGV2ZW4gaWYgdGhlIHNxbGl0ZTMgZmlsZSBpcyBhbHJlYWR5
IG1pc3NpbmcsCiAgICAgLy8gd2UgbmVlZCB0bzoKQEAgLTgwLDQ0ICs4Niw0NCBAQCBURVNUKElu
ZGV4ZWREQiwgU3RvcmVCbG9iVGhlblJlbW92ZURhdGEpCiAgICAgLy8gMiAtIE1vdmUgLXdhbCBh
bmQgLXNobSBmaWxlcyBpbnRvIHRoYXQgZGlyZWN0b3J5CiAgICAgLy8gMyAtIE1ha2Ugc3VyZSB0
aGUgZW50aXJlIGRpcmVjdG9yeSBpcyBkZWxldGVkCiAgICAgTlNTdHJpbmcgKmZha2VIYXNoID0g
V2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZSgiRmFrZURh
dGFiYXNlUGF0aCIpOwotICAgIE5TU3RyaW5nICpmYWtlRGF0YWJhc2VEaXJlY3RvcnkgPSBbW29y
aWdpbkRpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpmYWtlSGFzaF0gc3RyaW5nQnlF
eHBhbmRpbmdUaWxkZUluUGF0aF07Ci0gICAgTlNTdHJpbmcgKmZha2VTaG1QYXRoID0gW2Zha2VE
YXRhYmFzZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVk
REIuc3FsaXRlMy13YWwiXTsKLSAgICBOU1N0cmluZyAqZmFrZVdhbFBhdGggPSBbZmFrZURhdGFi
YXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5z
cWxpdGUzLXNobSJdOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRl
RGlyZWN0b3J5QXRQYXRoOmZha2VEYXRhYmFzZURpcmVjdG9yeSB3aXRoSW50ZXJtZWRpYXRlRGly
ZWN0b3JpZXM6Tk8gYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGggdG9QYXRo
OmZha2VTaG1QYXRoIGVycm9yOm5pbF07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjb3B5SXRlbUF0UGF0aDpkYXRhYmFzZUZpbGVQYXRoIHRvUGF0aDpmYWtlV2FsUGF0aCBl
cnJvcjpuaWxdOworICAgIE5TVVJMICpmYWtlRGF0YWJhc2VEaXJlY3RvcnkgPSBbb3JpZ2luRGly
ZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmYWtlSGFzaF07CisgICAgTlNVUkwg
KmZha2VTaG1VUkwgPSBbZmFrZURhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzLXdhbCJdOworICAgIE5TVVJMICpmYWtlV2FsVVJM
ID0gW2Zha2VEYXRhYmFzZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJ
bmRleGVkREIuc3FsaXRlMy1zaG0iXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOmZha2VEYXRhYmFzZURpcmVjdG9yeSB3aXRoSW50ZXJt
ZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07CisgICAgW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOmJsb2JGaWxlVVJMIHRv
VVJMOmZha2VTaG1VUkwgZXJyb3I6bmlsXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGNvcHlJdGVtQXRVUkw6ZGF0YWJhc2VGaWxlVVJMIHRvVVJMOmZha2VXYWxVUkwgZXJy
b3I6bmlsXTsKIAogICAgIC8vIE1ha2Ugc29tZSBvdGhlciAuYmxvYiBmaWxlcyBpbiB0aGUgZGF0
YWJhc2UgZGlyZWN0b3J5IHRvIGxhdGVyIHZhbGlkYXRlIGFsbCBibG9iIGZpbGVzIGluIHRoZSBk
aXJlY3RvcnkgYXJlIGRlbGV0ZWQuCi0gICAgTlNTdHJpbmcgKm90aGVyQmxvYjEgPSBbZGF0YWJh
c2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiNzE4Mi5ibG9iIl07
Ci0gICAgTlNTdHJpbmcgKm90aGVyQmxvYjIgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiMWEuYmxvYiJdOwotICAgIE5TU3RyaW5nICpvdGhlckJs
b2IzID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
ImExLmJsb2IiXTsKLSAgICBOU1N0cmluZyAqb3RoZXJCbG9iNCA9IFtkYXRhYmFzZURpcmVjdG9y
eSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCIuYmxvYiJdOwotICAgIFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFBhdGg6YmxvYkZpbGVQYXRoIHRvUGF0
aDpvdGhlckJsb2IxIGVycm9yOm5pbF07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjb3B5SXRlbUF0UGF0aDpibG9iRmlsZVBhdGggdG9QYXRoOm90aGVyQmxvYjIgZXJyb3I6
bmlsXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRo
OmJsb2JGaWxlUGF0aCB0b1BhdGg6b3RoZXJCbG9iMyBlcnJvcjpuaWxdOwotICAgIFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFBhdGg6YmxvYkZpbGVQYXRoIHRvUGF0
aDpvdGhlckJsb2I0IGVycm9yOm5pbF07CisgICAgTlNVUkwgKm90aGVyQmxvYjEgPSBbZGF0YWJh
c2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiNzE4Mi5ibG9iIl07Cisg
ICAgTlNVUkwgKm90aGVyQmxvYjIgPSBbZGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiMWEuYmxvYiJdOworICAgIE5TVVJMICpvdGhlckJsb2IzID0gW2RhdGFi
YXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImExLmJsb2IiXTsKKyAg
ICBOU1VSTCAqb3RoZXJCbG9iNCA9IFtkYXRhYmFzZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCIuYmxvYiJdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gY29weUl0ZW1BdFVSTDpibG9iRmlsZVVSTCB0b1VSTDpvdGhlckJsb2IxIGVycm9yOm5pbF07
CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOmJsb2JG
aWxlVVJMIHRvVVJMOm90aGVyQmxvYjIgZXJyb3I6bmlsXTsKKyAgICBbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6YmxvYkZpbGVVUkwgdG9VUkw6b3RoZXJCbG9i
MyBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0
ZW1BdFVSTDpibG9iRmlsZVVSTCB0b1VSTDpvdGhlckJsb2I0IGVycm9yOm5pbF07CiAKICAgICBy
ZWFkeVRvQ29udGludWUgPSBmYWxzZTsKICAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0
RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNp
dGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlv
bkhhbmRsZXI6XigpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVBhdGhdKTsKLSAgICAgICAgRVhQ
RUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDpkYXRhYmFzZUZpbGVQYXRoXSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6YmxvYkZpbGVVUkwucGF0aF0pOwor
ICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOmRhdGFiYXNlRmlsZVVSTC5wYXRoXSk7CiAKICAgICAgICAgLy8gTWFrZSBz
dXJlIGFsbCBmYWtlIGJsb2IgZmlsZSBhcmUgZ29uZS4KLSAgICAgICAgRVhQRUNUX0ZBTFNFKFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2Ix
XSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iMS5wYXRoXSk7CiAKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhl
ckJsb2IyXSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6b3RoZXJCbG9iM10pOwotICAgICAgICBFWFBFQ1RfRkFM
U0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm90aGVy
QmxvYjRdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2IyLnBhdGhdKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpv
dGhlckJsb2IzLnBhdGhdKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpvdGhlckJsb2I0LnBhdGhdKTsKIAogICAg
ICAgICAvLyBNYWtlIHN1cmUgZXZlcnl0aGluZyByZWxhdGVkIHRvIHRoZSBmYWtlIGRhdGFiYXNl
IGlzIGdvbmUuCi0gICAgICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmFrZVNobVBhdGhdKTsKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmYWtl
V2FsUGF0aF0pOwotICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZha2VEYXRhYmFzZURpcmVjdG9yeV0pOworICAgICAg
ICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3Rz
QXRQYXRoOmZha2VTaG1VUkwucGF0aF0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZha2VXYWxVUkwucGF0aF0p
OworICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBm
aWxlRXhpc3RzQXRQYXRoOmZha2VEYXRhYmFzZURpcmVjdG9yeS5wYXRoXSk7CiAKICAgICAgICAg
Ly8gTm93IGRlbGV0ZSB0aGVtIHNvIHdlJ3JlIG5vdCBsZWF2aW5nIGZpbGVzIGFyb3VuZC4KLSAg
ICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOm90
aGVyQmxvYjIgZXJyb3I6bmlsXTsKLSAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSByZW1vdmVJdGVtQXRQYXRoOm90aGVyQmxvYjMgZXJyb3I6bmlsXTsKLSAgICAgICAgW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOm90aGVyQmxvYjQg
ZXJyb3I6bmlsXTsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1v
dmVJdGVtQXRVUkw6b3RoZXJCbG9iMiBlcnJvcjpuaWxdOworICAgICAgICBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpvdGhlckJsb2IzIGVycm9yOm5pbF07
CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJM
Om90aGVyQmxvYjQgZXJyb3I6bmlsXTsKIAogICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVl
OwogICAgIH1dOwpAQCAtMTM2LDI0ICsxNDIsMzIgQEAgVEVTVChJbmRleGVkREIsIFN0b3JlQmxv
YlRoZW5EZWxldGVEYXRhYmFzZSkKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJTdWNjZXNzIiwgKE5T
U3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKIAogICAgIE5TU3RyaW5nICpoYXNo
ID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZSgiU3Rv
cmVCbG9iVG9CZURlbGV0ZWQiKTsKLSAgICBOU1N0cmluZyAqb3JpZ2luRGlyZWN0b3J5ID0gQCJ+
L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9XZWJzaXRlRGF0
YS9JbmRleGVkREIvdjEvZmlsZV9fMC8iOwotICAgIE5TU3RyaW5nICpkYXRhYmFzZURpcmVjdG9y
eSA9IFtbb3JpZ2luRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOmhhc2hdIHN0cmlu
Z0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdOwotICAgIE5TU3RyaW5nICpibG9iRmlsZVBhdGggPSBb
ZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiMS5ibG9i
Il07Ci0gICAgTlNTdHJpbmcgKmRhdGFiYXNlRmlsZVBhdGggPSBbZGF0YWJhc2VEaXJlY3Rvcnkg
c3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXTsKKyAg
ICBOU1VSTCAqb3JpZ2luVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmaWxlOi8vIl07Cisg
ICAgX19ibG9jayBOU1N0cmluZyAqb3JpZ2luRGlyZWN0b3J5U3RyaW5nID0gbmlsOworICAgIHJl
YWR5VG9Db250aW51ZSA9IGZhbHNlOworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVE
YXRhU3RvcmUgX29yaWdpbkRpcmVjdG9yeUZvclRlc3Rpbmc6b3JpZ2luVVJMIHRvcE9yaWdpbjpv
cmlnaW5VUkwgdHlwZTpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TU3RyaW5nICpyZXN1bHQpIHsKKyAgICAgICAgb3JpZ2luRGlyZWN0b3J5
U3RyaW5nID0gcmVzdWx0OworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICBO
U1VSTCAqb3JpZ2luRGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpvcmlnaW5EaXJl
Y3RvcnlTdHJpbmcgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBOU1VSTCAqZGF0YWJhc2VEaXJlY3Rv
cnkgPSBbb3JpZ2luRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpoYXNoXTsK
KyAgICBOU1VSTCAqYmxvYkZpbGVVUkwgPSBbZGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiMS5ibG9iIl07CisgICAgTlNVUkwgKmRhdGFiYXNlRmlsZVVSTCA9
IFtkYXRhYmFzZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVk
REIuc3FsaXRlMyJdOwogCi0gICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmJsb2JGaWxlUGF0aF0pOwotICAgIEVYUEVDVF9UUlVF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkYXRhYmFz
ZUZpbGVQYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBmaWxlRXhpc3RzQXRQYXRoOmJsb2JGaWxlVVJMLnBhdGhdKTsKKyAgICBFWFBFQ1RfVFJV
RShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGF0YWJh
c2VGaWxlVVJMLnBhdGhdKTsKIAogICAgIC8vIEFkZCBhIC5ibG9iIGZpbGUgdGhhdCBpcyBub3Qg
Y3JlYXRlZCBieSBJbmRleGVkREIgQVBJLgotICAgIE5TU3RyaW5nICphbm90aGVyQmxvYkZpbGVQ
YXRoID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IjcxODIuYmxvYiJdOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0
ZW1BdFBhdGg6YmxvYkZpbGVQYXRoIHRvUGF0aDphbm90aGVyQmxvYkZpbGVQYXRoIGVycm9yOm5p
bF07CisgICAgTlNVUkwgKmFub3RoZXJCbG9iRmlsZVVSTCA9IFtkYXRhYmFzZURpcmVjdG9yeSBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCI3MTgyLmJsb2IiXTsKKyAgICBbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRQYXRoOmJsb2JGaWxlVVJMLnBhdGggdG9Q
YXRoOmFub3RoZXJCbG9iRmlsZVVSTC5wYXRoIGVycm9yOm5pbF07CiAKICAgICByZWFkeVRvQ29u
dGludWUgPSBmYWxzZTsKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkZWxldGVE
YXRhYmFzZSgoKSA9PiB7IHNlbmRNZXNzYWdlKCdEZWxldGUgc3VjY2VzcycpOyB9KSIgY29tcGxl
dGlvbkhhbmRsZXI6bmlsXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9D
b250aW51ZSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKEAiRGVsZXRlIHN1Y2Nlc3MiLCAoTlNTdHJp
bmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwogCi0gICAgRVhQRUNUX0ZBTFNFKFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpibG9iRmlsZVBhdGhd
KTsKLSAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOmRhdGFiYXNlRmlsZVBhdGhdKTsKLSAgICBFWFBFQ1RfVFJVRShbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6YW5vdGhlckJsb2JGaWxl
UGF0aF0pOworICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGZpbGVFeGlzdHNBdFBhdGg6YmxvYkZpbGVVUkwucGF0aF0pOworICAgIEVYUEVDVF9GQUxTRShb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGF0YWJhc2VG
aWxlVVJMLnBhdGhdKTsKKyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6YW5vdGhlckJsb2JGaWxlVVJMLnBhdGhdKTsKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURh
dGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXggOGU0N2FiOTgwYWNkZmM2
ZTE1MzgwODhiM2VjNzk3MWVlMGI5YzczMy4uNjZmOTI1YWM2NGQ2ODBmOTllZjNlMzYyZWNiZTUz
MjM2ZWNkYWM4NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KQEAg
LTc3LDggKzc3LDggQEAgc3RhdGljIHZvaWQgcnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhz
KFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3YXJtaW5nIHNob3VsZEUKICAgICBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCkucHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5ID0gc2hvdWxk
RW5hYmxlUHJvY2Vzc1ByZXdhcm1pbmcgPT0gU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1pbmc6
OlllcyA/IFlFUyA6IE5POwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9j
ZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKIAotICAgIFJldGFpblB0cjxXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0
aHNNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tXZWJzaXRlRGF0YVN0b3JlQ3Vz
dG9tUGF0aHNNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwotICAgIFJldGFpblB0cjxXS1dl
YlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtb
V2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5k
bGVyIl07CiAKICAgICBOU1VSTCAqc3FsUGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Ai
fi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vi
c2l0ZURhdGEvV2ViU1FMLyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rv
cnk6WUVTXTsKQEAgLTg2LDcgKzg2LDYgQEAgc3RhdGljIHZvaWQgcnVuV2Vic2l0ZURhdGFTdG9y
ZUN1c3RvbVBhdGhzKFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3YXJtaW5nIHNob3VsZEUKICAgICBO
U1VSTCAqbG9jYWxTdG9yYWdlUGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJy
YXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURh
dGEvTG9jYWxTdG9yYWdlLyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rv
cnk6WUVTXTsKICAgICBOU1VSTCAqY29va2llU3RvcmFnZUZpbGUgPSBbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJ
L0N1c3RvbVdlYnNpdGVEYXRhL0Nvb2tpZVN0b3JhZ2UvQ29va2llLkZpbGUiIHN0cmluZ0J5RXhw
YW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5Ok5PXTsKICAgICBOU1VSTCAqcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9X
ZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVEYXRhL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0Rp
cmVjdG9yeTpZRVNdOwotCiAgICAgTlNVUkwgKmRlZmF1bHRTUUxQYXRoID0gW05TVVJMIGZpbGVV
UkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktp
dEFQSS9XZWJzaXRlRGF0YS9XZWJTUUwvIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBp
c0RpcmVjdG9yeTpZRVNdOwogICAgIE5TVVJMICpkZWZhdWx0SURCUGF0aCA9IFtOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJL
aXRBUEkvV2Vic2l0ZURhdGEvSW5kZXhlZERCLyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0
aF0gaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBOU1VSTCAqZGVmYXVsdExvY2FsU3RvcmFnZVBhdGgg
PSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldl
YktpdC5UZXN0V2ViS2l0QVBJL1dlYnNpdGVEYXRhL0xvY2FsU3RvcmFnZS8iIHN0cmluZ0J5RXhw
YW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllFU107CkBAIC0xMTIsNyArMTExLDcgQEAg
c3RhdGljIHZvaWQgcnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzKFNob3VsZEVuYWJsZVBy
b2Nlc3NQcmV3YXJtaW5nIHNob3VsZEUKICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRlZmF1bHRMb2NhbFN0b3JhZ2VQYXRo
LnBhdGhdKTsKICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBmaWxlRXhpc3RzQXRQYXRoOmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGF0aC5wYXRo
XSk7CiAKLSAgICBSZXRhaW5QdHI8X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IHdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwogICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgp
Ll93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHNxbFBhdGg7CiAgICAgd2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaWRiUGF0
aDsKICAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fd2ViU3RvcmFnZURp
cmVjdG9yeSA9IGxvY2FsU3RvcmFnZVBhdGg7CkBAIC0xMjIsNyArMTIxLDcgQEAgc3RhdGljIHZv
aWQgcnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzKFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3
YXJtaW5nIHNob3VsZEUKICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUg
PSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0
aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuZ2V0KCk7CiAgICAgY29u
ZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29sLmdldCgpOwogCi0gICAg
UmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0
aW9uRGVsZWdhdGU6aGFuZGxlci5nZXQoKV07CiAKICAgICBhdXRvIHByZWZlcmVuY2VzID0gKF9f
YnJpZGdlIFdLUHJlZmVyZW5jZXNSZWYpW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByZWZlcmVu
Y2VzXTsKQEAgLTE0NSw2ICsxNDQsMTcgQEAgc3RhdGljIHZvaWQgcnVuV2Vic2l0ZURhdGFTdG9y
ZUN1c3RvbVBhdGhzKFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3YXJtaW5nIHNob3VsZEUKICAgICB9
XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZsdXNoZWQpOwogCisgICAgLy8gR2V0
IHRoZSBJbmRleGVkREIgZGF0YWJhc2UgcGF0aCBpbiB1c2UuCisgICAgTlNVUkwgKmZpbGVVUkwg
PSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZpbGU6Ly8iXTsKKyAgICBfX2Jsb2NrIE5TU3RyaW5n
ICpmaWxlSURCUGF0aFN0cmluZyA9IG5pbDsKKyAgICBkb25lID0gZmFsc2U7CisgICAgW2NvbmZp
Z3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSBfb3JpZ2luRGlyZWN0b3J5Rm9yVGVzdGlu
ZzpmaWxlVVJMIHRvcE9yaWdpbjpmaWxlVVJMIHR5cGU6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVk
REJEYXRhYmFzZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqcmVzdWx0KSB7CisgICAg
ICAgIGZpbGVJREJQYXRoU3RyaW5nID0gcmVzdWx0OworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIE5TVVJMICpm
aWxlSURCUGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZUlEQlBhdGhTdHJpbmcgaXNE
aXJlY3Rvcnk6WUVTXTsKKwogICAgIC8vIEZvcmNpYmx5IHNodXQgZG93biBldmVyeXRoaW5nIG9m
IFdlYktpdCB0aGF0IHdlIGNhbi4KICAgICBhdXRvIHBpZCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNz
SWRlbnRpZmllcl07CiAgICAgaWYgKHBpZCkKQEAgLTE4NCwzMSArMTk0LDQ1IEBAIHN0YXRpYyB2
b2lkIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyhTaG91bGRFbmFibGVQcm9jZXNzUHJl
d2FybWluZyBzaG91bGRFCiAKICAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6aWRiUGF0aC5wYXRoXSk7CiAgICAgRVhQRUNUX1RS
VUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRlZmF1
bHRJREJQYXRoLnBhdGhdKTsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IGZpbGVJREJQYXRoID0gW1tp
ZGJQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYxIl0gVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiZmlsZV9fMCJdOwotICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxlSURCUGF0aC5nZXQoKS5wYXRo
XSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOmZpbGVJREJQYXRoLnBhdGhdKTsKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wg
ewogICAgICAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKLSAgICAgICAgUmV0YWluUHRyPE5TU2V0PiB0eXBlcyA9IGFkb3B0TlMoW1tO
U1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0
YWJhc2VzLCBuaWxdKTsKKyAgICAgICAgYXV0byB0eXBlcyA9IGFkb3B0TlMoW1tOU1NldCBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBu
aWxdKTsKKyAgICAgICAgCisgICAgICAgIE5TVVJMICphcHBsZVVSTCA9IFtOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cHM6Ly9hcHBsZS5jb20iXTsKKyAgICAgICAgX19ibG9jayBOU1N0cmluZyAq
aWRiUGF0aFN0cmluZyA9IG5pbDsKKyAgICAgICAgZG9uZSA9IGZhbHNlOworICAgICAgICBbZGF0
YVN0b3JlIF9vcmlnaW5EaXJlY3RvcnlGb3JUZXN0aW5nOmFwcGxlVVJMIHRvcE9yaWdpbjpmaWxl
VVJMIHR5cGU6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgY29tcGxldGlvbkhh
bmRsZXI6XihOU1N0cmluZyAqcmVzdWx0KSB7CisgICAgICAgICAgICBpZGJQYXRoU3RyaW5nID0g
cmVzdWx0OworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgICAgICBOU1VSTCAqZmlsZUFwcGxl
SURCUGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6aWRiUGF0aFN0cmluZyBpc0RpcmVjdG9y
eTpZRVNdOworCisgICAgICAgIE5TVVJMICp3ZWJraXRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImh0dHBzOi8vd2Via2l0Lm9yZyJdOworICAgICAgICBkb25lID0gZmFsc2U7CisgICAgICAg
IFtkYXRhU3RvcmUgX29yaWdpbkRpcmVjdG9yeUZvclRlc3Rpbmc6d2Via2l0VVJMIHRvcE9yaWdp
bjpmaWxlVVJMIHR5cGU6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgY29tcGxl
dGlvbkhhbmRsZXI6XihOU1N0cmluZyAqcmVzdWx0KSB7CisgICAgICAgICAgICBpZGJQYXRoU3Ry
aW5nID0gcmVzdWx0OworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgICAgICBOU1VSTCAqZmls
ZVdlYktpdElEQlBhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmlkYlBhdGhTdHJpbmcgaXNE
aXJlY3Rvcnk6WUVTXTsKIAogICAgICAgICAvLyBTdWJmcmFtZSBvZiBkaWZmZXJlbnQgb3JpZ2lu
cyBtYXkgYWxzbyBjcmVhdGUgSW5kZXhlZERCIGZpbGVzLgogICAgICAgICBSZXRhaW5QdHI8TlNV
Ukw+IHVybDEgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiSW5kZXhl
ZERCIiB3aXRoRXh0ZW5zaW9uOkAic3FsaXRlMyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQ
SS5yZXNvdXJjZXMiXTsKICAgICAgICAgUmV0YWluUHRyPE5TVVJMPiB1cmwyID0gW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIkluZGV4ZWREQiIgd2l0aEV4dGVuc2lvbjpA
InNxbGl0ZTMtc2htIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwog
ICAgICAgICBSZXRhaW5QdHI8TlNVUkw+IHVybDMgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAiSW5kZXhlZERCIiB3aXRoRXh0ZW5zaW9uOkAic3FsaXRlMy13YWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKLSAgICAgICAgUmV0YWlu
UHRyPE5TVVJMPiBmcmFtZUlEQlBhdGggPSBbW2ZpbGVJREJQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAImh0dHBzX2FwcGxlLmNvbV8wIl0gVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzIl07Ci0gICAgICAgIFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6ZnJhbWVJREJQYXRoLmdl
dCgpIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6
bmlsXTsKLQotICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVt
QXRVUkw6dXJsMS5nZXQoKSB0b1VSTDpbZnJhbWVJREJQYXRoLmdldCgpIFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKLSAgICAgICAg
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDIuZ2V0KCkg
dG9VUkw6W2ZyYW1lSURCUGF0aC5nZXQoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJ
bmRleGVkREIuc3FsaXRlMy1zaG0iXSBlcnJvcjpuaWxdOwotICAgICAgICBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMy5nZXQoKSB0b1VSTDpbZnJhbWVJ
REJQYXRoLmdldCgpIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxp
dGUzLXdhbCJdIGVycm9yOm5pbF07Ci0KLSAgICAgICAgUmV0YWluUHRyPE5TVVJMPiBmcmFtZUlE
QlBhdGgyID0gW1tmaWxlSURCUGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJodHRw
c193ZWJraXQub3JnXzAiXSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJzaXRlRGF0
YVN0b3JlQ3VzdG9tUGF0aHMiXTsKLSAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpmcmFtZUlEQlBhdGgyLmdldCgpIHdpdGhJbnRlcm1l
ZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKKyAgICAgICAg
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpmaWxl
QXBwbGVJREJQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpu
aWwgZXJyb3I6bmlsXTsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBj
b3B5SXRlbUF0VVJMOnVybDEuZ2V0KCkgdG9VUkw6W2ZpbGVBcHBsZUlEQlBhdGggVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXSBlcnJvcjpuaWxdOworICAg
ICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMi5n
ZXQoKSB0b1VSTDpbZmlsZUFwcGxlSURCUGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
QCJJbmRleGVkREIuc3FsaXRlMy1zaG0iXSBlcnJvcjpuaWxdOworICAgICAgICBbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMy5nZXQoKSB0b1VSTDpbZmls
ZUFwcGxlSURCUGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3Fs
aXRlMy13YWwiXSBlcnJvcjpuaWxdOwogCi0gICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwxLmdldCgpIHRvVVJMOltmcmFtZUlEQlBhdGgyLmdl
dCgpIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl0gZXJy
b3I6bmlsXTsKLSAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRl
bUF0VVJMOnVybDIuZ2V0KCkgdG9VUkw6W2ZyYW1lSURCUGF0aDIuZ2V0KCkgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMtc2htIl0gZXJyb3I6bmlsXTsKLSAg
ICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDMu
Z2V0KCkgdG9VUkw6W2ZyYW1lSURCUGF0aDIuZ2V0KCkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMtd2FsIl0gZXJyb3I6bmlsXTsKKyAgICAgICAgW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpmaWxlV2ViS2l0
SURCUGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVy
cm9yOm5pbF07CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0
ZW1BdFVSTDp1cmwxLmdldCgpIHRvVVJMOltmaWxlV2ViS2l0SURCUGF0aCBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJdIGVycm9yOm5pbF07CisgICAgICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwyLmdldCgp
IHRvVVJMOltmaWxlV2ViS2l0SURCUGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJ
bmRleGVkREIuc3FsaXRlMy1zaG0iXSBlcnJvcjpuaWxdOworICAgICAgICBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMy5nZXQoKSB0b1VSTDpbZmlsZVdl
YktpdElEQlBhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0
ZTMtd2FsIl0gZXJyb3I6bmlsXTsKIAogICAgICAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29y
ZHNPZlR5cGVzOnR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNp
dGVEYXRhUmVjb3JkICo+ICogcmVjb3JkcykgewogICAgICAgICAgICAgRVhQRUNUX0VRKFtyZWNv
cmRzIGNvdW50XSwgKHVuc2lnbmVkIGxvbmcpMyk7CkBAIC0yMTYsNyArMjQwLDcgQEAgc3RhdGlj
IHZvaWQgcnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzKFNob3VsZEVuYWJsZVByb2Nlc3NQ
cmV3YXJtaW5nIHNob3VsZEUKICAgICAgICAgICAgICAgICBpZiAoW1tyZWNvcmQgZGlzcGxheU5h
bWVdIGlzRXF1YWw6IEAiYXBwbGUuY29tIl0pIHsKICAgICAgICAgICAgICAgICAgICAgW2RhdGFT
dG9yZSByZW1vdmVEYXRhT2ZUeXBlczp0eXBlcy5nZXQoKSBmb3JEYXRhUmVjb3JkczpAW3JlY29y
ZF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1Rf
RkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZy
YW1lSURCUGF0aC5nZXQoKS5wYXRoXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1Rf
RkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZp
bGVBcHBsZUlEQlBhdGgucGF0aF0pOwogICAgICAgICAgICAgICAgICAgICB9XTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMzAsNyArMjU0LDcgQEAgc3RhdGljIHZvaWQg
cnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzKFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3YXJt
aW5nIHNob3VsZEUKICAgICAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CiAgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKIAot
ICAgICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOmZpbGVJREJQYXRoLmdldCgpLnBhdGhdKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxl
V2ViS2l0SURCUGF0aC5wYXRoXSk7CiAKICAgICAgICAgLy8gTm93LCB3aXRoIGJyYW5kIG5ldyBX
S1dlYnNpdGVEYXRhU3RvcmVzIHBvaW50aW5nIGF0IHRoZSBzYW1lIGN1c3RvbSBjb29raWUgc3Rv
cmFnZSBsb2NhdGlvbiwKICAgICAgICAgLy8gaW4gbmV3bHkgZmlyZWQgdXAgTmV0d29ya1Byb2Nl
c3NlcywgdmVyaWZ5IHRoYXQgdGhlIGZldGNoIGFuZCBkZWxldGUgQVBJcyB3b3JrIGFzIGV4cGVj
dGVkLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>