<?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>195383</bug_id>
          
          <creation_ts>2019-03-06 16:00:39 -0800</creation_ts>
          <short_desc>Resource Load Statistics: Make it possible to purge only script-accessible cookies</short_desc>
          <delta_ts>2019-03-07 09:22:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>berto</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1513246</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-06 16:00:39 -0800</bug_when>
    <thetext>We need the ability to purge all script-accessible cookies while leaving HttpOnly cookies in place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513247</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-06 16:01:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/48570136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513255</commentid>
    <comment_count>2</comment_count>
      <attachid>363806</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-06 16:10:03 -0800</bug_when>
    <thetext>Created attachment 363806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513271</commentid>
    <comment_count>3</comment_count>
      <attachid>363806</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-06 16:21:14 -0800</bug_when>
    <thetext>Comment on attachment 363806
Patch

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

&gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:503
&gt; +    deleteCookiesForHostnames(hostnames, true);

enum class IncludeHTTPOnlyCookies : bool { No, Yes };

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1603
&gt; +    static NeverDestroyed&lt;OptionSet&lt;WebsiteDataType&gt;&gt; cookieType(std::initializer_list&lt;WebsiteDataType&gt;({ WebsiteDataType::Cookies }));

OptionSet fits in one register, so this is a little overkill.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513339</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-06 18:55:05 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 363806 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=363806&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:503
&gt; &gt; +    deleteCookiesForHostnames(hostnames, true);
&gt; 
&gt; enum class IncludeHTTPOnlyCookies : bool { No, Yes };
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1603
&gt; &gt; +    static NeverDestroyed&lt;OptionSet&lt;WebsiteDataType&gt;&gt; cookieType(std::initializer_list&lt;WebsiteDataType&gt;({ WebsiteDataType::Cookies }));
&gt; 
&gt; OptionSet fits in one register, so this is a little overkill.

Thanks! Will fix both of these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513340</commentid>
    <comment_count>5</comment_count>
      <attachid>363830</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-06 18:56:08 -0800</bug_when>
    <thetext>Created attachment 363830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513344</commentid>
    <comment_count>6</comment_count>
      <attachid>363832</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-06 19:06:57 -0800</bug_when>
    <thetext>Created attachment 363832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513346</commentid>
    <comment_count>7</comment_count>
      <attachid>363833</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-06 19:10:49 -0800</bug_when>
    <thetext>Created attachment 363833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513347</commentid>
    <comment_count>8</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-06 19:11:36 -0800</bug_when>
    <thetext>Added build fixes for ports that use soup and curl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513529</commentid>
    <comment_count>9</comment_count>
      <attachid>363833</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-03-07 09:14:34 -0800</bug_when>
    <thetext>Comment on attachment 363833
Patch

Looks good. r=me. Please keep an eye on the test system after landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513531</commentid>
    <comment_count>10</comment_count>
      <attachid>363833</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-07 09:15:35 -0800</bug_when>
    <thetext>Comment on attachment 363833
Patch

Thanks, Brent!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513536</commentid>
    <comment_count>11</comment_count>
      <attachid>363833</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-07 09:22:33 -0800</bug_when>
    <thetext>Comment on attachment 363833
Patch

Clearing flags on attachment: 363833

Committed r242598: &lt;https://trac.webkit.org/changeset/242598&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513537</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-07 09:22:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363806</attachid>
            <date>2019-03-06 16:10:03 -0800</date>
            <delta_ts>2019-03-06 18:56:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195383-20190306161003.patch</filename>
            <type>text/plain</type>
            <size>41658</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZkNWQxNmQwNDRhNTk5
ZWVkYzZjNjJkNmMyOGNmNTYwNTc2Y2QyMi4uMWFkZDk5ZTQ0OWNkYWZkOGQ1MWYyMjBkYmUyY2I0
MzhjOGRlMzI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTAzLTA2ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogTWFrZSBpdCBwb3NzaWJsZSB0byBwdXJnZSBvbmx5IHNjcmlwdC1hY2Nlc3Np
YmxlIGNvb2tpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTM4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg1NzAxMzY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RlbGV0ZS1zY3JpcHQtYWNjZXNzaWJsZS1jb29raWVzLmh0
bWwKKworICAgICAgICBUaGlzIHBhdGNoIHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIHB1cmdlIGFs
bCBzY3JpcHQtYWNjZXNzaWJsZSBjb29raWVzIHdoaWxlIGxlYXZpbmcKKyAgICAgICAgSHR0cE9u
bHkgY29va2llcyBpbiBwbGFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyk6CisgICAgICAgICAgICBTdXBw
b3J0IGZvciBhIG5ldyBib29sZWFuIGZsYWcgb24gd2hldGhlciBvciBub3QgdG8gaW5jbHVkZSBI
dHRwT25seSBDb29raWVzLgorCiAyMDE5LTAzLTA2ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5j
b20+CiAKICAgICAgICAgQ29uc2lkZXIgc3VwcG9ydGluZyB0aGUgYHJlZmVycmVycG9saWN5YCBh
dHRyaWJ1dGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc4Y2U1ZjNhZjZhNGRmMzhmN2ZmODkyZmE1MjAxMjliOTQ3
NDUzYzkuLjFhODc0NzU0MzkyYTAxNzZhMDczNzNhMGU4NGM1ZjVjMWE4MjBiODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDQgQEAKKzIwMTktMDMtMDYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBNYWtlIGl0IHBv
c3NpYmxlIHRvIHB1cmdlIG9ubHkgc2NyaXB0LWFjY2Vzc2libGUgY29va2llcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzgzCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80ODU3MDEzNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIHB1cmdl
IGFsbCBzY3JpcHQtYWNjZXNzaWJsZSBjb29raWVzIHdoaWxlIGxlYXZpbmcKKyAgICAgICAgSHR0
cE9ubHkgY29va2llcyBpbiBwbGFjZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3Jkcyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0
YVN0b3Jlcyk6CisgICAgICAgICAgICBTdXBwb3J0IGZvciBhIG5ldyBib29sZWFuIGZsYWcgb24g
d2hldGhlciBvciBub3QgdG8gaW5jbHVkZSBIdHRwT25seSBDb29raWVzLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURv
bWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKToKKyAgICAgICAgICAgIFN1cHBvcnQgZm9y
IGEgbmV3IGJvb2xlYW4gZmxhZyBvbiB3aGV0aGVyIG9yIG5vdCB0byBpbmNsdWRlIEh0dHBPbmx5
IENvb2tpZXMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVDb29raWVz
Rm9yVGVzdGluZyk6CisgICAgICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZGVs
ZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3Rv
cmVzKToKKyAgICAgICAgICAgIFN1cHBvcnQgZm9yIGEgbmV3IGJvb2xlYW4gZmxhZyBvbiB3aGV0
aGVyIG9yIG5vdCB0byBpbmNsdWRlIEh0dHBPbmx5IENvb2tpZXMuCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyk6CisgICAgICAgICAgICBUZXN0IGluZnJhc3Ry
dWN0dXJlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlQ29va2llc0ZvclRl
c3RpbmcpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWxldGVDb29raWVzRm9yVGVzdGluZyk6CisgICAgICAgICAgICBUZXN0
IGluZnJhc3RydWN0dXJlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmg6CisKIDIwMTktMDMtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRnJlcXVlbnQgMSBzZWNvbmQgSVBDIGRlYWRsb2Nr
cyB3aGVuIHNob3dpbmcgYSBwYXN0ZSBjYWxsb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCA4ZGU0MjQ5
MjQ3NGU1MjA2MTk0NDU4MzYyYjE4NjAyYzM1ZDE0YTg4Li5lNzc2OGM3MDI0YTcxOGY5NWFkYmYz
OTQzNmU2ODY3NzQ5MWRmODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTEzMCw2ICsxMzAsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVBbGxDb29raWVzKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXYWxsVGlt
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29v
a2llSG9zdE5hbWVzLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwogICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3RvcjxDb29raWU+IGdldEFsbENvb2tpZXMoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8Q29va2llPiBnZXRDb29raWVzKGNvbnN0IFVSTCYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXggMzE4ZjUzZTE3NDcyYmVkZmQyYTQwN2YwY2Fl
ZGUxNjFlOGY5YzhmZC4uYzQ0ZGQ4M2I2ZGE0MzBmZjViODhkYjc4NjAyYWQ1YmFkYjc2Y2IyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC00OTksNiArNDk5LDEx
IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKCkKIH0KIAog
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1lcykKK3sKKyAgICBkZWxldGVDb29raWVzRm9ySG9z
dG5hbWVzKGhvc3RuYW1lcywgdHJ1ZSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFt
ZXMsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcykKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vz
c1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CiAKQEAg
LTUxMSw3ICs1MTYsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdAogCiAgICAgSGFzaE1hcDxT
dHJpbmcsIFZlY3RvcjxSZXRhaW5QdHI8TlNIVFRQQ29va2llPj4+IGNvb2tpZXNCeURvbWFpbjsK
ICAgICBmb3IgKE5TSFRUUENvb2tpZSAqY29va2llIGluIGNvb2tpZXMpIHsKLSAgICAgICAgaWYg
KCFjb29raWUuZG9tYWluKQorICAgICAgICBpZiAoIWNvb2tpZS5kb21haW4gfHwgKCFpbmNsdWRl
SHR0cE9ubHlDb29raWVzICYmIGNvb2tpZS5pc0hUVFBPbmx5KSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBjb29raWVzQnlEb21haW4uZW5zdXJlKGNvb2tpZS5kb21haW4sIFtdIHsK
ICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8UmV0YWluUHRyPE5TSFRUUENvb2tpZT4+KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDFmOTIzMjQ1
NWY2NWVjODY4ODQzN2FjMTc4MzJiODBiZDBiZjczNGYuLjQ5ODA3MjBhYmVkZjY3MWZmOWE1N2Zm
Mzg5ZmViYTYzMjBlZDA2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJgogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgd2Vha1RoaXMtPm1fc3RvcmUu
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRh
U3RvcmVzKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVz
KCksIFdURk1vdmUocHJldmFsZW50UmVzb3VyY2VEb21haW5zKSwgc2hvdWxkTm90aWZ5UGFnZXNX
aGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHdvcmtRdWV1ZSA9IHdvcmtRdWV1ZS5jb3B5
UmVmKCldKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0aERlbGV0
ZWRXZWJzaXRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAgIHdlYWtUaGlzLT5tX3N0b3JlLmRlbGV0
ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3Jl
cyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUeXBlcygpLCBX
VEZNb3ZlKHByZXZhbGVudFJlc291cmNlRG9tYWlucyksIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQsIHRydWUsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB3b3JrUXVldWUgPSB3b3JrUXVldWUuY29w
eVJlZigpXShjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluc1dpdGhEZWxl
dGVkV2Vic2l0ZURhdGEpIG11dGFibGUgewogICAgICAgICAgICAgd29ya1F1ZXVlLT5kaXNwYXRj
aChbZG9tYWluc1dpdGhEZWxldGVkV2Vic2l0ZURhdGEgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlu
c1dpdGhEZWxldGVkV2Vic2l0ZURhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDM3MTNm
OWIxNzFjMWI1MTk4MDk3NzJmMWIwOTIxYjE1MjdiNzkxNmEuLmQxNTdmMjMwZDgwMTVjYjZmN2Zl
ZTYyZGJjNmEyZjNmY2I4M2I5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCkBAIC05ODgsMTIgKzk4OCwxMiBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6bm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3Nl
ZCgpCiAgICAgICAgIG1fbmV0d29ya1Nlc3Npb24tPm5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQcm9jZXNzZWQoKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0
YVN0b3JlcyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFZlY3RvcjxSZWdp
c3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWxl
dGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9y
ZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBWZWN0b3I8UmVnaXN0cmFi
bGVEb21haW4+JiYgZG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBib29sIGluY2x1ZGVI
dHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogICAgIAogICAgIGlmIChtX25ldHdvcmtTZXNzaW9uKSB7Ci0gICAg
ICAgIG1fbmV0d29ya1Nlc3Npb24tPmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21h
aW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhkYXRhVHlwZXMsIFdURk1vdmUoZG9tYWlucyks
IHNob3VsZE5vdGlmeVBhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAg
bV9uZXR3b3JrU2Vzc2lvbi0+ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJ
bkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKGRhdGFUeXBlcywgV1RGTW92ZShkb21haW5zKSwgc2hv
dWxkTm90aWZ5UGFnZSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMGExYTMwM2NkZjg2NTMyNmQyODFjOTE1
YmJmNDJkZmRjNWY3ZWU1Ny4uNTVhNWUxODlmMDIyMjVjZGYwMGQ4OWMxMzQ4YjIyNzU5NTE2ZDQx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAt
MTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhj
b25zdCBTdWJSZXNvdXJjZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgV2FsbFRpbWUg
bGFzdFNlZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBsb2dTdWJy
ZXNvdXJjZVJlZGlyZWN0KGNvbnN0IFJlZGlyZWN0ZWRGcm9tRG9tYWluJiwgY29uc3QgUmVkaXJl
Y3RlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNs
ZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVE
b21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYmLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4m
Jik7CisgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxs
UGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBib29sIGluY2x1ZGVI
dHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mKT4mJik7CiAgICAgdm9pZCByZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vi
c2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGJvb2wgc2hvdWxkTm90aWZ5UGFn
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4m
Jik7CiAgICAgYm9vbCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQpOwogICAgIHZv
aWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDFlNjQyZWFjNzA4MmYwYTY2MWMzNGZlOGI4
NjlkNzE5MThlMGVmZDMuLmI3MjU4ZTA0YWQyZTIyMmE2ZWZmZTVkMWU0OGU1YTJiMmVkM2Q4YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CkBAIC0xNDY2LDcgKzE0NjYsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4g
ZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGNvbnN0IFZlY3RvcjxSZWdpcwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9y
UmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMs
IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCBib29sIHNob3VsZE5vdGlmeVBh
Z2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFp
bj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNp
dGVEYXRhVHlwZXMsIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCBib29sIHNo
b3VsZE5vdGlmeVBhZ2UsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRj
aE9wdGlvbnMgPSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpEb05vdENyZWF0ZVByb2Nlc3NlczsK
IApAQCAtMTUxMyw3ICsxNTEzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3QKICAgICAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25J
RCkpIHsKICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVzV2l0
aENvb2tpZXMod2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CiAgICAgICAg
ICAgICBob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVE
b21haW5zKGRvbWFpbnMsIHdlYnNpdGVEYXRhU3RvcmUuaG9zdE5hbWVzV2l0aENvb2tpZXMpOwot
ICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5h
bWVzKGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUpOworICAgICAgICAgICAgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhvc3RuYW1lc1dpdGhDb29r
aWVzVG9EZWxldGUsIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0xNTk4LDYgKzE1OTgsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3QKICAgICB9CiB9
CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVI
dHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4+IGNvb2tpZVR5cGUoc3RkOjppbml0aWFsaXplcl9saXN0PFdlYnNpdGVEYXRhVHlwZT4o
eyBXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMgfSkpOworICAgIGRlbGV0ZVdlYnNpdGVEYXRhRm9y
UmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhzZXNzaW9uSUQsIGNv
b2tpZVR5cGUsIHsgZG9tYWluIH0sIHRydWUsIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgSGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNEZWxldGVkRm9yKSBtdXRhYmxlIHsKKyAgICAg
ICAgVU5VU0VEX1BBUkFNKGRvbWFpbnNEZWxldGVkRm9yKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVE
b21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgYm9vbCBzaG91bGROb3RpZnlQYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0
aW9uPiBmZXRjaE9wdGlvbnMgPSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpEb05vdENyZWF0ZVBy
b2Nlc3NlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAppbmRleCBjNGU3MjBlY2Y3MzNjN2FhNTNkYzU3MDJjYmZjYzYwMjZjNmFhN2Y0Li5kZDU5NTVj
MTM1NDA3ODRiOGM4NmEzMDcyODFmZWZmN2YyZWViNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yMDIsNyArMjAyLDggQEAgcHVibGlj
OgogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBjbGVhclBy
ZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFj
dGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3Ry
YWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKFBBTDo6U2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYmLCBib29s
IHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mKT4mJik7CisgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJl
Z2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoUEFMOjpTZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYs
IGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYp
OworICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFJlZ2lz
dHJhYmxlRG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKTsKICAgICB2b2lk
IHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluc1RvQmxvY2ssIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA4Y2Q0MDIwNGRlZmRjMTdiOTk5MDJiOTNmM2I5
ODQ3NWI5ODJhYzI3Li40MTMwZDhlNzI1YWVlNWZlY2FmY2MwZWUyZGFkZWE1MmQ2ODIwMTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTEzNCw2ICsxMzQsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgQ29t
bWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZyb21Eb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQpCiAgICAgUmVzZXRDcm9z
c1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKSAtPiAoKSBBc3luYworICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29s
IGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldFNl
c3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBi
b29sIGNvbnRyb2xsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcAppbmRleCAzMjgxMzBkNWUzOTNkZjc2MWU0MzRjZmVlZWZhNDM0Nzk0ZWFm
YzFkLi5jYTkyN2NhZTY1YTI0MGNlNzA0ODllYjI2NTJhMmQxNGZiYzA5NGU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMTE3LDE2
ICsxMTcsMTYgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxl
bWV0cnlGaW5pc2hlZCh1bnNpZ25lZCB0b3RhbFByZXZhbGUKICAgICBtX25ldHdvcmtQcm9jZXNz
LT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpOb3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQodG90
YWxQcmV2YWxlbnRSZXNvdXJjZXMsIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRl
cmFjdGlvbiwgdG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpLCAwKTsKIH0KIAotdm9p
ZCBOZXR3b3JrU2Vzc2lvbjo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJ
bkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFU
eXBlcywgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMsIGJvb2wgc2hvdWxkTm90
aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrU2Vzc2lvbjo6ZGVs
ZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3Rv
cmVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgVmVjdG9yPFJlZ2lzdHJh
YmxlRG9tYWluPiYmIGRvbWFpbnMsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgYm9vbCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVn
aXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNp
c3RlbnREYXRhU3RvcmVzKG1fc2Vzc2lvbklELCBkYXRhVHlwZXMsIFdURk1vdmUoZG9tYWlucyks
IHNob3VsZE5vdGlmeVBhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX25l
dHdvcmtQcm9jZXNzLT5kZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxs
UGVyc2lzdGVudERhdGFTdG9yZXMobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgV1RGTW92ZShkb21h
aW5zKSwgc2hvdWxkTm90aWZ5UGFnZSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpyZWdpc3RyYWJs
ZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5
cGVzLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9u
ZXR3b3JrUHJvY2Vzcy0+cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKG1fc2Vzc2lv
bklELCBkYXRhVHlwZXMsIHNob3VsZE5vdGlmeVBhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OnN0b3JlQWRDbGlja0F0dHJpYnV0aW9uKFdlYkNv
cmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbiYmIGFkQ2xpY2tBdHRyaWJ1dGlvbikKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCAwODUyZDZiNjVm
NGM1ZjMzYTBlOTIxN2MyZjk4NDY1NTY2ODI0Mzc1Li5iMWZlMTE1YjkwM2E1ZmVkMzg3ODlkMmUy
ZDExMTI4ZmE3ZjU1NWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgbm90aWZ5UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1Byb2Nlc3NlZCgpOwotICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdp
c3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYsIGJvb2wgc2hv
dWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmLCBi
b29sIHNob3VsZE5vdGlmeVBhZ2UsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsK
ICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdW5zaWduZWQgdmFsdWUsIHVuc2lnbmVk
IHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKICAgICB2b2lkIG5v
dGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQodW5zaWduZWQgdG90YWxQcmV2YWxl
bnRSZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRl
cmFjdGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5jcHAKaW5kZXggYzBlYmI4NzI2N2JiNzIxYWJjZTUzYzUwYmFlNmYzZmRjNmM5OTU3Zi4u
NDFlNWE0ZTdhMzU1MzkxYjZhMjBhODVlMzNiZmNjMjA0ZWUxZjM2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
CkBAIC00MDgsNiArNDA4LDE3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0Ns
ZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvCiAgICAgfSk7CiB9
CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0
aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2sp
Cit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGVsZXRlQ29va2llc0ZvclRl
c3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICAgICAgY2FsbGJhY2so
Y29udGV4dCk7CisgICAgfSk7CisjZWxzZQorICAgIGNhbGxiYWNrKGNvbnRleHQpOworI2VuZGlm
Cit9CisKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2Fw
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBG
dW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuaAppbmRleCA5M2U1MjE4NWI1YmQ3NjQ1MjE2NTIyNDYxZTU4ODc0YzMxZTg5NzFl
Li41Yjg4YjY3NTBmY2E0YmE3MDRiZTRjM2NmZGVlNTY1OGZiYWVhYTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApA
QCAtOTEsNiArOTEsOCBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaQogV0tfRVhQT1JUIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3Rv
cmVNb2RpZmllZFNpbmNlSG91cnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
dW5zaWduZWQgaG91cnMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzRnVuY3Rp
b24gY2FsbGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNv
bnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFy
VGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJv
dWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spOwordHlwZWRlZiB2b2lkICgq
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rp
b24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlD
b29raWVzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRl
Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjayk7CiB0eXBlZGVmIHZvaWQgKCpXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbikodm9pZCog
ZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NDYWNoZU1heEFnZUNhcChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc0NhY2hlTWF4QWdlQ2FwRnVuY3Rpb24pOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbikodm9pZCog
ZnVuY3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGExZjkxNzIzOWI4NTYwMGI3Mjhj
MmRmMDViMDcxYThlNGRjMjliOTAuLmZmZWIwYzFiNzAyOWM0ZjkwMjE4ZGUyNTBjYjMwMzNlMmMz
MmIzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtOTQxLDYgKzk0MSwxNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0
aW5nKFBBTDo6UwogICAgIAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KKwordm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGJvb2wgaW5jbHVkZUh0
dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5n
KHNlc3Npb25JRCwgZG9tYWluLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NXaWxsU3VzcGVu
ZEltbWluZW50bHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAwY2ZhMWYwMTAyYzYyYjIxYzhhZGM1NzA4NmI4
NzE5MDA4NTA4OTk2Li41NmNmM2ZhYjgwZGY5MGEyZmM0NGNiNGNkNTlmNGY0NGJhMDhjMDJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMTQ1LDYgKzE0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3Vs
ZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklE
LCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlu
a0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHByb2Nl
c3NSZWFkeVRvU3VzcGVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBlZGQ3NjYzOGNiOGExYjM5
YjZhZTdjMDJiYmRlNGViOGI1MzFjNDRkLi44ZjhmMzlmNzRjMGIzMjIxZDk2YWQ4MWJjMjMzYjQ0
OWEzZGY1MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTc2NSw2ICsxNzY1LDE2IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6cmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZv
clRlc3RpbmcoQ29tcGxldGlvCiAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cmVzZXRDcm9z
c1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFtjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAg
IH0KIH0KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhj
b25zdCBVUkwmIHVybCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29s
cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5u
ZXR3b3JrUHJvY2VzcygpKQorICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmRlbGV0ZUNvb2tp
ZXNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBpbmNs
dWRlSHR0cE9ubHlDb29raWVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICB9Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBlMzc1ZDE1
NWNjNjViNGExOTczZTQzM2FiZWFiMDQyMzJiYjE5ZjdhLi5mNjE0OWRiOGIxY2I0MmQyMzVkMDFj
OTcyZjlkNzljODVhZDNkNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xNjgsNiArMTY4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwg
U3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbihjb25zdCBVUkwmIHN1YmZy
YW1lLCBjb25zdCBVUkwmIHRvcEZyYW1lKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNX
aXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBkZWxldGVDb29raWVzRm9yVGVzdGluZyhjb25zdCBVUkwmLCBib29sIGluY2x1
ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYK
ICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ExNTVl
ODI5MjZhZjE3NzQxOWVhMzUwNDRiMWYxOGU3MTUwZDZkYy4uYzZhY2RlNjIxM2MxM2FkOGUxZDM3
YTZhYTYyNzEzMGI2ZjFmZGMxMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTAzLTA2ICBKb2huIFdpbGFuZGVy
ICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGlj
czogTWFrZSBpdCBwb3NzaWJsZSB0byBwdXJnZSBvbmx5IHNjcmlwdC1hY2Nlc3NpYmxlIGNvb2tp
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM4
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg1NzAxMzY+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRlc3QgaW5mcmFz
dHJ1Y3R1cmUgdG8gcHVyZ2Ugb25seSBzY3JpcHQtYWNjZXNzaWJsZSBjb29raWVzLAorICAgICAg
ICBpbmNsdWRpbmcgYSBuZXcgdGVzdFJ1bm5lciBmdW5jdGlvbiBjYWxsZWQgc3RhdGlzdGljc0Rl
bGV0ZUNvb2tpZXNGb3JIb3N0KCkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RS
dW5uZXI6OnN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9ySG9zdCk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpzdGF0aXN0aWNzRGVsZXRlQ29va2llc0Zvckhvc3QpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE5LTAzLTA2ICBS
b2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQ29uc2lkZXIgc3VwcG9ydGlu
ZyB0aGUgYHJlZmVycmVycG9saWN5YCBhdHRyaWJ1dGUuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bAppbmRleCAwZTc5ZDgwYjYwMWYzMjk1ZThiODE1YmExMDA4Yjk5N2QxYjgwYzZmLi45Y2Y0NDkz
ZTYwZTc4NjMzOGIxM2VhZjBhYjY1MDdjNDM1YzMxMzc4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwKQEAgLTMxNSw2ICszMTUsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9p
ZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShvYmplY3QgY2FsbGJh
Y2spOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVN
b2RpZmllZFNpbmNlSG91cnModW5zaWduZWQgbG9uZyBob3Vycywgb2JqZWN0IGNhbGxiYWNrKTsK
ICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwob2JqZWN0
IGNhbGxiYWNrKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9ySG9zdChET01T
dHJpbmcgaG9zdE5hbWUsIGJvb2xlYW4gaW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAgICAgdm9p
ZCBzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQg
c3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUob2JqZWN0IGNvbXBsZXRpb25IYW5kbGVy
KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAKaW5kZXggZDQ2MjI0NmNkYjljMThmNzdjZTQ1ZDczMTM3MjgwNGE2NTFkZDMw
Mi4uODI0YTVmNjg0MzE2OTM3MDM0ZTg2YzE0OTAzMTc3YmJjY2I2ZmVkNiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBA
IC0yMDA3LDYgKzIwMDcsMzIgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2xlYXJUaHJv
dWdoV2Vic2l0ZURhdGFSZW1vdmFsKEpTVmFsdWVSZWYgY2FsbGJhY2spCiAgICAgV0tCdW5kbGVQ
b3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUo
KSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogfQogCit2b2lkIFRlc3RS
dW5uZXI6OnN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9ySG9zdChKU1N0cmluZ1JlZiBob3N0TmFt
ZSwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKQoreworICAgIFZlY3RvcjxXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4+IGtleXM7CisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+
IHZhbHVlczsKKworICAgIGtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIkhvc3ROYW1lIikgfSk7CisgICAgdmFsdWVzLmFwcGVuZCh7IEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKGhvc3ROYW1lKSB9KTsKKworICAgIGtleXMuYXBw
ZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkluY2x1ZGVIdHRw
T25seUNvb2tpZXMiKSB9KTsKKyAgICB2YWx1ZXMuYXBwZW5kKHsgQWRvcHRXSywgV0tCb29sZWFu
Q3JlYXRlKGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIH0pOworCisgICAgVmVjdG9yPFdLU3RyaW5n
UmVmPiByYXdLZXlzOworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd1ZhbHVlczsKKyAgICByYXdL
ZXlzLnJlc2l6ZShrZXlzLnNpemUoKSk7CisgICAgcmF3VmFsdWVzLnJlc2l6ZSh2YWx1ZXMuc2l6
ZSgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5cy5zaXplKCk7ICsraSkgewor
ICAgICAgICByYXdLZXlzW2ldID0ga2V5c1tpXS5nZXQoKTsKKyAgICAgICAgcmF3VmFsdWVzW2ld
ID0gdmFsdWVzW2ldLmdldCgpOworICAgIH0KKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3Rh
dGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0IikpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlv
bmFyeVJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0tleXMu
ZGF0YSgpLCByYXdWYWx1ZXMuZGF0YSgpLCByYXdLZXlzLnNpemUoKSkpOworICAgIFdLQnVuZGxl
UG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxl
KCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CisK
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNv
bmRzKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdl
Q2FwIikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaAppbmRleCA3MTNhOTQzMzYzOTA1ZjBjOWI3NjBkNTc0YWM4ZjMyNGQ4ZDUxNmZj
Li42ZDExNjQ4YmJjOTQ2ZmE4NjY1NjQwN2ZmMzEyMjc0NzFiYjMzMjQ4IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDI2
LDYgKzQyNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudFN0b3JlKEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGlj
c0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWdu
ZWQgaG91cnMsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFy
VGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKKyAgICB2b2lk
IHN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9ySG9zdChKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9v
bCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsQ2xlYXJU
aHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsQ2FsbGJhY2soKTsKICAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNDU1OGJhMmNmOTVmMzVl
YzhiNjAyYzlkN2FkNDYyOWNkMWY0ZTEyMy4uNTU0ZTAzYTZmYWI4M2Q0M2EyNzhhNTNmNzY0ZWE0
NTMzZDA0NmFmZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
QEAgLTMzMzIsNiArMzMzMiwxNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzQ2xl
YXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCkKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5k
aWRDbGVhclN0YXRpc3RpY3NUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCk7CiB9CiAKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9ySG9zdChXS1N0cmluZ1Jl
ZiBob3N0LCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpCit7CisgICAgYXV0byogZGF0YVN0
b3JlID0gV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7Cisg
ICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAg
IFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyhkYXRh
U3RvcmUsIGhvc3QsIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsICZjb250ZXh0LCByZXNvdXJjZVN0
YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwg
bm9UaW1lb3V0KTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0NhY2hl
TWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKQogewogICAgIGF1dG8qIGRhdGFTdG9yZSA9IFdLQ29u
dGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDFkMTNiNTUyMzczOTBiNzZmYjkyZTEwYWY5
MzVkNzlmMGI2MzEwYjQuLjRiMzUzZGI0MmI1NTJlODk4MjYxMjQyZTNhNWQwN2EwNDBmM2U1NjYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTIzNSw2ICsyMzUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnRTdG9yZSgpOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWduZWQpOwogICAgIHZvaWQgc3RhdGlzdGljc0Ns
ZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbCgpOworICAgIHZvaWQgc3RhdGlzdGljc0RlbGV0
ZUNvb2tpZXNGb3JIb3N0KFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29v
a2llcyk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29u
ZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA2NjYwY2RjOTIxZjg5
N2NjZTJmNzcxZDhkNTNhNWMyNmYyMTI0OGY5Li4wYmRjNDE3NmFlMTIxNjY1MDI5OGQ4ZDQ4NDRk
ZWI5NjY2MWIyZDBmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtMTM4NCw3ICsxMzg0LDIxIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9j
YXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAg
IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0
ZURhdGFSZW1vdmFsKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKwor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU3RhdGlz
dGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0IikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlE
KG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CisgICAgICAgIAorICAg
ICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8
V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBob3N0TmFtZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiSG9zdE5hbWUiKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB2YWx1ZUtl
eShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSW5jbHVkZUh0dHBPbmx5
Q29va2llcyIpKTsKKyAgICAgICAgCisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3Rh
dGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJv
ZHlEaWN0aW9uYXJ5LCBob3N0TmFtZUtleS5nZXQoKSkpOworICAgICAgICBXS0Jvb2xlYW5SZWYg
aW5jbHVkZUh0dHBPbmx5Q29va2llcyA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0
aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHZhbHVlS2V5LmdldCgp
KSk7CisgICAgICAgIAorICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc3RhdGlz
dGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KGhvc3ROYW1lLCBXS0Jvb2xlYW5HZXRWYWx1ZShpbmNs
dWRlSHR0cE9ubHlDb29raWVzKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwog
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3Rh
dGlzdGljc0NhY2hlTWF4QWdlQ2FwIikpIHsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1l
c3NhZ2VCb2R5KSA9PSBXS0RvdWJsZUdldFR5cGVJRCgpKTsKICAgICAgICAgV0tEb3VibGVSZWYg
c2Vjb25kcyA9IHN0YXRpY19jYXN0PFdLRG91YmxlUmVmPihtZXNzYWdlQm9keSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZWQ3OGQyMDQwYTg2YmYzNzM0NGNiZTMwMDk5NDgwNjNiZjgzN2U5Mi4uMTgzYzcxYjRkZWQyMmJl
N2RlM2JmOWM3OThkOGJhM2YwNzU5ODg0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAz
LTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291
cmNlIExvYWQgU3RhdGlzdGljczogTWFrZSBpdCBwb3NzaWJsZSB0byBwdXJnZSBvbmx5IHNjcmlw
dC1hY2Nlc3NpYmxlIGNvb2tpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NTM4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg1NzAxMzY+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29va2llLnBocDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RlbGV0ZS1zY3JpcHQt
YWNjZXNzaWJsZS1jb29raWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RlbGV0ZS1zY3JpcHQtYWNjZXNzaWJsZS1jb29r
aWVzLmh0bWw6IEFkZGVkLgorCiAyMDE5LTAzLTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEZyZXF1ZW50IDEgc2Vjb25kIElQQyBkZWFk
bG9ja3Mgd2hlbiBzaG93aW5nIGEgcGFzdGUgY2FsbG91dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5waHAg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHkt
Y29va2llLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTBlNmZlMWQ1NGM2MmExMGJhYTgwNDVmMGY0OWFlNGFi
MzRjZWRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVz
L3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5waHAKQEAgLTAsMCArMSwxMCBAQAorPD9w
aHAKK2lmICgkX0dFVFsnY29va2llTmFtZSddKSB7CisgIHNldGNvb2tpZSgkX0dFVFsnY29va2ll
TmFtZSddLCAiMSIsIHRpbWUoKSArIDg2NDAwLCAiLyIsICIiLCBGQUxTRSwgVFJVRSk7CisgIGVj
aG8gIlllYWgiOworfSBlbHNlIHsKKyAgaGVhZGVyKCJIVFRQLzEuMCAyMDAgT0siKTsKKyAgZWNo
byAiRkFJTEVEOiBObyBjb29raWVOYW1lIHBhcmFtZXRlciBmb3VuZC5cbiI7Cit9CisKKz8+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
ZGVsZXRlLXNjcmlwdC1hY2Nlc3NpYmxlLWNvb2tpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RlbGV0ZS1zY3JpcHQtYWNjZXNz
aWJsZS1jb29raWVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzQwN2RjZjNlZGVlYjYwZWM5
NjQ5Mjg1MDE0NTFhMDUxOTI4NDc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RlbGV0ZS1zY3JpcHQtYWNjZXNzaWJsZS1j
b29raWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitDaGVjayB0aGF0IG9ubHkgSHR0
cE9ubHkgY29va2llcyByZW1haW4gaWYgYWxsIHNjcmlwdC1hY2Nlc3NpYmxlIGNvb2tpZXMgYXJl
IGRlbGV0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEJlZm9yZSBz
Y3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4KK1BB
U1MgQmVmb3JlIHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUgZXhp
c3RzLgorUEFTUyBCZWZvcmUgc2NyaXB0LWFjY2Vzc2libGUgZGVsZXRpb246IFJlZ3VsYXIgc2Vy
dmVyLXNpZGUgY29va2llIGV4aXN0cy4KK1BBU1MgQWZ0ZXIgc2NyaXB0LWFjY2Vzc2libGUgZGVs
ZXRpb246ICBIdHRwT25seSBjb29raWUgZXhpc3RzLgorUEFTUyBBZnRlciBmdWxsIGRlbGV0aW9u
OiAgICAgICAgICAgICAgIEFsbCBjb29raWVzIGFyZSBnb25lLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kZWxldGUtc2NyaXB0LWFjY2Vzc2li
bGUtY29va2llcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2RlbGV0ZS1zY3JpcHQtYWNjZXNzaWJsZS1jb29raWVzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODVmZWFkYWRiMDdjMGVkZTVlYjQ2MDc0ZmViN2E0OGU4YjFmZTlmNgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kZWxldGUt
c2NyaXB0LWFjY2Vzc2libGUtY29va2llcy5odG1sCkBAIC0wLDAgKzEsNzMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiQ2hlY2sgdGhhdCBvbmx5IEh0dHBPbmx5
IGNvb2tpZXMgcmVtYWluIGlmIGFsbCBzY3JpcHQtYWNjZXNzaWJsZSBjb29raWVzIGFyZSBkZWxl
dGVkLiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgY29uc3QgaHR0cE9ubHlD
b29raWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNvbnN0IHNlcnZlclNpZGVDb29r
aWVOYW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29uc3QgY2xpZW50U2lkZUNvb2tp
ZU5hbWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdB
cnJheShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIGIgPSBi
LnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEg
OiAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llcyhpc0FmdGVyU2NyaXB0QWNj
ZXNzaWJsZURlbGV0aW9uKSB7CisgICAgICAgIGxldCB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdl
cyA9IFtdOworICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRDb29raWVzKCk7Cisg
ICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKChpc0Fm
dGVyU2NyaXB0QWNjZXNzaWJsZURlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc2Ny
aXB0LWFjY2Vzc2libGUgZGVsZXRpb246IE5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAgIGZv
ciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNvb2tpZS5u
YW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSBodHRwT25seUNvb2tpZU5hbWU6CisgICAgICAg
ICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJTY3Jp
cHRBY2Nlc3NpYmxlRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzY3JpcHQtYWNj
ZXNzaWJsZSBkZWxldGlvbjogIiArIChpc0FmdGVyU2NyaXB0QWNjZXNzaWJsZURlbGV0aW9uID8g
IiAiIDogIiIpICsgIkh0dHBPbmx5IGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ugc2VydmVyU2lkZUNvb2tpZU5hbWU6Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0FmdGVyU2NyaXB0QWNjZXNzaWJsZURlbGV0aW9uKQor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiQWZ0ZXIgc2NyaXB0LWFjY2Vzc2li
bGUgZGVsZXRpb246ICBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVz
dFBhc3NlZE1lc3NhZ2VzLnB1c2goIkJlZm9yZSBzY3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjog
UmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGNsaWVudFNpZGVDb29raWVOYW1lOgorICAg
ICAgICAgICAgICAgICAgICBpZiAoaXNBZnRlclNjcmlwdEFjY2Vzc2libGVEZWxldGlvbikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkFmdGVyIHNjcmlwdC1hY2Nlc3NpYmxl
IGRlbGV0aW9uOiAgQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVz
c2FnZXMucHVzaCgiQmVmb3JlIHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0aW9uOiBDbGllbnQtc2lk
ZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQgc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0g
dW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMuc29ydChzb3J0U3RyaW5nQXJyYXkpOworICAgICAg
ICBmb3IgKGxldCB0ZXN0UGFzc2VkTWVzc2FnZSBvZiBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMp
CisgICAgICAgICAgICB0ZXN0UGFzc2VkKHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAgICB9CisKKyAg
ICBhc3luYyBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBpZiAoIXRlc3RSdW5uZXIgfHwg
IWludGVybmFscykgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gdGVzdFJ1bm5lciBvciBu
byBpbnRlcm5hbHMuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29va2llLnBo
cD9jb29raWVOYW1lPSIgKyBodHRwT25seUNvb2tpZU5hbWUsIHsgY3JlZGVudGlhbHM6ICJzYW1l
LW9yaWdpbiIgfSk7CisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0
Q29va2llcy5jZ2kiLCB7IGhlYWRlcnM6IHsgIlNldC1Db29raWUiOiBzZXJ2ZXJTaWRlQ29va2ll
TmFtZSArICI9MTsgcGF0aD0vOyIgfSwgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7Cisg
ICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNsaWVudFNpZGVDb29raWVOYW1lICsgIj0xIjsKKyAg
ICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNz
RGVsZXRlQ29va2llc0Zvckhvc3QoImh0dHA6Ly8xMjcuMC4wLjEiLCBmYWxzZSk7CisgICAgICAg
IGNoZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzRGVsZXRl
Q29va2llc0Zvckhvc3QoImh0dHA6Ly8xMjcuMC4wLjEiLCB0cnVlKTsKKyAgICAgICAgbGV0IGNv
b2tpZXNMZWZ0ID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKS5sZW5ndGg7CisgICAgICAgIGlmIChj
b29raWVzTGVmdCA9PT0gMCkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkFmdGVyIGZ1bGwgZGVs
ZXRpb246ICAgICAgICAgICAgICAgQWxsIGNvb2tpZXMgYXJlIGdvbmUuIik7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkFmdGVyIGZ1bGwgZGVsZXRpb246ICAgICAgICAg
ICAgICAiICsgY29va2llc0xlZnQgKyAiIGNvb2tpZShzKSBsZWZ0LiIpOworICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363830</attachid>
            <date>2019-03-06 18:56:08 -0800</date>
            <delta_ts>2019-03-06 19:06:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195383-20190306185607.patch</filename>
            <type>text/plain</type>
            <size>44399</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZkNWQxNmQwNDRhNTk5
ZWVkYzZjNjJkNmMyOGNmNTYwNTc2Y2QyMi4uM2JmNTBiMTY1NzgyNmRjNGQyNTJlMDJiNDQ0MjZm
NDJjNDIzM2MyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTAzLTA2ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogTWFrZSBpdCBwb3NzaWJsZSB0byBwdXJnZSBvbmx5IHNjcmlwdC1hY2Nlc3Np
YmxlIGNvb2tpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTM4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg1NzAxMzY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RlbGV0ZS1zY3JpcHQtYWNjZXNzaWJsZS1jb29raWVzLmh0
bWwKKworICAgICAgICBUaGlzIHBhdGNoIHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIHB1cmdlIGFs
bCBzY3JpcHQtYWNjZXNzaWJsZSBjb29raWVzIHdoaWxlIGxlYXZpbmcKKyAgICAgICAgSHR0cE9u
bHkgY29va2llcyBpbiBwbGFjZS4KKworICAgICAgICAqIGxvYWRlci9Db29raWVKYXIuaDoKKyAg
ICAgICAgICAgIEFkZGVkIGJvb2xlYW4gZW51bSBJbmNsdWRlSHR0cE9ubHlDb29raWVzIGZvciB1
c2UgYXMgZnVuY3Rpb24gcGFyYW1ldGVyLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyk6CisgICAgICAgICAgICBT
dXBwb3J0IGZvciB0aGUgbmV3IEluY2x1ZGVIdHRwT25seUNvb2tpZXMgZmxhZy4KKwogMjAxOS0w
My0wNiAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIENvbnNpZGVyIHN1
cHBvcnRpbmcgdGhlIGByZWZlcnJlcnBvbGljeWAgYXR0cmlidXRlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3OGNl
NWYzYWY2YTRkZjM4ZjdmZjg5MmZhNTIwMTI5Yjk0NzQ1M2M5Li4xYTg3NDc1NDM5MmEwMTc2YTA3
MzczYTBlODRjNWY1YzFhODIwYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE5LTAz
LTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291
cmNlIExvYWQgU3RhdGlzdGljczogTWFrZSBpdCBwb3NzaWJsZSB0byBwdXJnZSBvbmx5IHNjcmlw
dC1hY2Nlc3NpYmxlIGNvb2tpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NTM4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg1NzAxMzY+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBwdXJnZSBhbGwgc2NyaXB0LWFjY2Vzc2libGUgY29v
a2llcyB3aGlsZSBsZWF2aW5nCisgICAgICAgIEh0dHBPbmx5IGNvb2tpZXMgaW4gcGxhY2UuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cmVtb3ZlRGF0YVJlY29yZHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMpOgorICAgICAgICAgICAgU3Vw
cG9ydCBmb3IgYSBuZXcgYm9vbGVhbiBmbGFnIG9uIHdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUg
SHR0cE9ubHkgQ29va2llcy4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0
b3Jlcyk6CisgICAgICAgICAgICBTdXBwb3J0IGZvciBhIG5ldyBib29sZWFuIGZsYWcgb24gd2hl
dGhlciBvciBub3QgdG8gaW5jbHVkZSBIdHRwT25seSBDb29raWVzLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAgICAg
VGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFi
bGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3Jlcyk6CisgICAgICAgICAgICBTdXBwb3J0
IGZvciBhIG5ldyBib29sZWFuIGZsYWcgb24gd2hldGhlciBvciBub3QgdG8gaW5jbHVkZSBIdHRw
T25seSBDb29raWVzLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6Cisg
ICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3Rp
bmcpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgICAgIFRlc3Qg
aW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlQ29va2ll
c0ZvclRlc3RpbmcpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE5LTAzLTA2
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IEZyZXF1ZW50IDEgc2Vjb25kIElQQyBkZWFkbG9ja3Mgd2hlbiBzaG93aW5nIGEgcGFzdGUgY2Fs
bG91dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IGQ0YjUwZTkzNjYzODgwNmJlMWQy
YzUyMThhNzg3YmJkZTlmMTdjNTEuLjBkYjA3YzZkMTJlOGQ5YmRhZmMzYzBhYmE2ZWU3MWE4OWJj
MTk5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xh
c3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEluY2x1ZGVT
ZWN1cmVDb29raWVzIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3MgSW5jbHVkZUh0dHBP
bmx5Q29va2llcyA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIFNlY3VyZUNvb2tpZXNB
Y2Nlc3NlZCA6IGJvb2wgeyBObywgWWVzIH07CiAKIGNsYXNzIERvY3VtZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgKaW5kZXggOGRlNDI0OTI0NzRlNTIwNjE5NDQ1ODM2MmIxODYwMmMzNWQxNGE4OC4uMDMwMjAw
ZGY5YzQ0ZmQ0YmNmMmY1ODcyZGRkZmRhNTYzMjU5ODUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC03
MSw2ICs3MSw3IEBAIHN0cnVjdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eTsKIHN0cnVj
dCBTYW1lU2l0ZUluZm87CiAKIGVudW0gY2xhc3MgSW5jbHVkZVNlY3VyZUNvb2tpZXMgOiBib29s
OworZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlDb29raWVzIDogYm9vbDsKIAogY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrU3Rv
cmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEzMCw2ICsxMzEsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVBbGxDb29raWVzKCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXYWxs
VGltZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
Y29va2llSG9zdE5hbWVzLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8Q29va2llPiBnZXRBbGxDb29raWVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPENvb2tpZT4gZ2V0Q29va2llcyhjb25zdCBVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDMxOGY1M2UxNzQ3MmJlZGZkMmE0MDdmMGNhZWRl
MTYxZThmOWM4ZmQuLjYzNzQwMzUyYzRhNjI3ZWQ2ZmVlZDY5ZmZlYjA5ZDE5N2E4ODc0YzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtNDk5LDYgKzQ5OSwxMSBA
QCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcygpCiB9CiAKIHZv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCit7CisgICAgZGVsZXRlQ29va2llc0Zvckhvc3Ru
YW1lcyhob3N0bmFtZXMsIEluY2x1ZGVIdHRwT25seUNvb2tpZXM6Olllcyk7Cit9CisKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5jbHVkZUh0
dHBPbmx5Q29va2llcykKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNz
UHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CiAKQEAgLTUxMSw3ICs1MTYsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaG9zdAogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZXRh
aW5QdHI8TlNIVFRQQ29va2llPj4+IGNvb2tpZXNCeURvbWFpbjsKICAgICBmb3IgKE5TSFRUUENv
b2tpZSAqY29va2llIGluIGNvb2tpZXMpIHsKLSAgICAgICAgaWYgKCFjb29raWUuZG9tYWluKQor
ICAgICAgICBpZiAoIWNvb2tpZS5kb21haW4gfHwgKGluY2x1ZGVIdHRwT25seUNvb2tpZXMgPT0g
SW5jbHVkZUh0dHBPbmx5Q29va2llczo6Tm8gJiYgY29va2llLmlzSFRUUE9ubHkpKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGNvb2tpZXNCeURvbWFpbi5lbnN1cmUoY29va2llLmRv
bWFpbiwgW10gewogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxSZXRhaW5QdHI8TlNIVFRQQ29v
a2llPj4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5k
ZXggMWY5MjMyNDU1ZjY1ZWM4Njg4NDM3YWMxNzgzMmI4MGJkMGJmNzM0Zi4uMDRjNDc5MGY2OTIw
NmQyM2MxZjJhZWFmN2JhMjBlOWZkZGQwNDY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXllZENvZGluZy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmg+CkBAIC0xNzUsNyArMTc2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgd2Vha1RoaXMt
Pm1fc3RvcmUuZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNp
c3RlbnREYXRhU3RvcmVzKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVk
RGF0YVR5cGVzKCksIFdURk1vdmUocHJldmFsZW50UmVzb3VyY2VEb21haW5zKSwgc2hvdWxkTm90
aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHdvcmtRdWV1ZSA9IHdvcmtR
dWV1ZS5jb3B5UmVmKCldKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5z
V2l0aERlbGV0ZWRXZWJzaXRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAgIHdlYWtUaGlzLT5tX3N0
b3JlLmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50
RGF0YVN0b3JlcyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERhdGFU
eXBlcygpLCBXVEZNb3ZlKHByZXZhbGVudFJlc291cmNlRG9tYWlucyksIHNob3VsZE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIEluY2x1ZGVIdHRwT25seUNvb2tpZXM6Olll
cywgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIHdvcmtRdWV1ZSA9IHdvcmtRdWV1ZS5jb3B5UmVmKCldKGNvbnN0IEhhc2hTZXQ8UmVn
aXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSkgbXV0YWJsZSB7
CiAgICAgICAgICAgICB3b3JrUXVldWUtPmRpc3BhdGNoKFtkb21haW5zV2l0aERlbGV0ZWRXZWJz
aXRlRGF0YSA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhp
cyldICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggMzcxM2Y5YjE3MWMxYjUxOTgwOTc3MmYxYjA5MjFi
MTUyN2I3OTE2YS4uNjg5NDlkZGUyODQ3OWY4MDRiMWZhOTMwZDRmNWRmZWEzNmJkNGQ3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9D
b29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgpAQCAtOTg4LDEyICs5ODksMTIgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om5vdGlmeVJlc291cmNlTG9hZFN0YXRp
c3RpY3NQcm9jZXNzZWQoKQogICAgICAgICBtX25ldHdvcmtTZXNzaW9uLT5ub3RpZnlSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxs
UGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVz
LCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQ
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNp
c3RlbnREYXRhU3RvcmVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwg
SW5jbHVkZUh0dHBPbmx5Q29va2llcyBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKICAg
ICBpZiAobV9uZXR3b3JrU2Vzc2lvbikgewotICAgICAgICBtX25ldHdvcmtTZXNzaW9uLT5kZWxl
dGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9y
ZXMoZGF0YVR5cGVzLCBXVEZNb3ZlKGRvbWFpbnMpLCBzaG91bGROb3RpZnlQYWdlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIG1fbmV0d29ya1Nlc3Npb24tPmRlbGV0ZVdl
YnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3Jlcyhk
YXRhVHlwZXMsIFdURk1vdmUoZG9tYWlucyksIHNob3VsZE5vdGlmeVBhZ2UsIGluY2x1ZGVIdHRw
T25seUNvb2tpZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CmluZGV4IDBhMWEzMDNjZGY4NjUzMjZkMjgxYzkxNWJiZjQyZGZkYzVmN2VlNTcuLjZhNTY1MGQ4
YzM3YzY1MTBiYzJiNWFiMjQzYjUxZTVlOTU3NWM2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owogc3RydWN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3M7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJvb2w7CitlbnVtIGNsYXNzIEluY2x1
ZGVIdHRwT25seUNvb2tpZXMgOiBib29sOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEw
Myw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29u
c3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFdhbGxUaW1lIGxh
c3RTZWVuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgbG9nU3VicmVz
b3VyY2VSZWRpcmVjdChjb25zdCBSZWRpcmVjdGVkRnJvbURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0
ZWRUb0RvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVh
clVzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYp
OworICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBl
cnNpc3RlbnREYXRhU3RvcmVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBWZWN0b3I8UmVn
aXN0cmFibGVEb21haW4+JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgV2ViQ29yZTo6SW5jbHVk
ZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhX
ZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQ
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYp
PiYmKTsKICAgICBib29sIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CiAgICAg
dm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMWU2NDJlYWM3MDgyZjBhNjYxYzM0ZmU4
Yjg2OWQ3MTkxOGUwZWZkMy4uMWEzYTIzOTI3MTY0Mjk0OTk3NmY4Mjk4YWJlZTAxYjgzYTk3NTcy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0
YVR5cGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRE5TLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CkBAIC0xNDY2LDcg
KzE0NjcsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4gZmlsdGVyRm9yUmVn
aXN0cmFibGVEb21haW5zKGNvbnN0IFZlY3RvcjxSZWdpcwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVE
b21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxSZWdp
c3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9y
UmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMs
IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCBib29sIHNob3VsZE5vdGlmeVBh
Z2UsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9u
PiBmZXRjaE9wdGlvbnMgPSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpEb05vdENyZWF0ZVByb2Nl
c3NlczsKIApAQCAtMTUxMyw3ICsxNTE0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3QKICAg
ICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCkpIHsKICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMod2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CiAg
ICAgICAgICAgICBob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0
cmFibGVEb21haW5zKGRvbWFpbnMsIHdlYnNpdGVEYXRhU3RvcmUuaG9zdE5hbWVzV2l0aENvb2tp
ZXMpOwotICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9y
SG9zdG5hbWVzKGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUpOworICAgICAgICAgICAgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhvc3RuYW1lc1dp
dGhDb29raWVzVG9EZWxldGUsIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0xNTk4LDYgKzE1OTksMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3QKICAg
ICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGlu
Y2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBjb29raWVUeXBl
ID0gV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzOworCisgICAgZGVsZXRlV2Vic2l0ZURhdGFGb3JS
ZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKHNlc3Npb25JRCwgY29v
a2llVHlwZSwgeyBkb21haW4gfSwgdHJ1ZSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcyA/IEluY2x1
ZGVIdHRwT25seUNvb2tpZXM6OlllcyA6IEluY2x1ZGVIdHRwT25seUNvb2tpZXM6Ok5vLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zRGVsZXRlZEZvcikgbXV0YWJsZSB7CisgICAg
ICAgIFVOVVNFRF9QQVJBTShkb21haW5zRGVsZXRlZEZvcik7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxl
RG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIGJvb2wgc2hvdWxkTm90aWZ5UGFn
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9w
dGlvbj4gZmV0Y2hPcHRpb25zID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6RG9Ob3RDcmVhdGVQ
cm9jZXNzZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKaW5kZXggYzRlNzIwZWNmNzMzYzdhYTUzZGM1NzAyY2JmY2M2MDI2YzZhYTdmNC4uMGVjNTAw
ZWE4NTM3ODAwODNlYWNlNzNjYTRhMTA4ODJhODg5MmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtNzIsNiArNzIsNyBAQCBjbGFzcyBE
b3dubG9hZElEOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFNXU2VydmVyOworZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlDb29raWVz
IDogYm9vbDsKIGVudW0gY2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgOiBib29sOwogc3Ry
dWN0IENsaWVudE9yaWdpbjsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKQEAgLTIw
Miw3ICsyMDMsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkZWxldGVX
ZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMo
UEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBWZWN0b3I8UmVnaXN0
cmFibGVEb21haW4+JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKKyAgICB2b2lkIGRl
bGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0
b3JlcyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBXZWJDb3JlOjpJbmNs
dWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25s
eUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkdW1wUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29v
a2llc0ZvcihQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYg
ZG9tYWluc1RvQmxvY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBp
c0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA4Y2Q0
MDIwNGRlZmRjMTdiOTk5MDJiOTNmM2I5ODQ3NWI5ODJhYzI3Li40MTMwZDhlNzI1YWVlNWZlY2Fm
Y2MwZWUyZGFkZWE1MmQ2ODIwMTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEzNCw2ICsxMzQsNyBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpIC0+ICgpIEFzeW5jCiAgICAgQ29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IGZyb21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvRG9tYWluLCB1aW50NjRf
dCBwYWdlSUQpCiAgICAgUmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIERlbGV0ZUNv
b2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFz
eW5jCiAjZW5kaWYKIAogICAgIFNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGNvbnRyb2xsZWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCAzMjgxMzBkNWUzOTNk
Zjc2MWU0MzRjZmVlZWZhNDM0Nzk0ZWFmYzFkLi5kODU0MTEzM2JlZjllOTQwOWMwNzAzNzVlOWIx
YzU3Y2RkNGYzMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQWRDbGlja0F0dHJpYnV0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db29r
aWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMTcsMTYgKzExOCwxNiBAQCB2b2lkIE5ldHdvcmtTZXNz
aW9uOjpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFs
UHJldmFsZQogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5vdGlmeVJlc291cmNlTG9hZFN0
YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh0b3RhbFByZXZhbGVudFJlc291cmNlcywgdG90YWxQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB0b3AzU3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2lucyksIDApOwogfQogCi12b2lkIE5ldHdvcmtTZXNzaW9uOjpkZWxldGVXZWJz
aXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aW4+JiYgZG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtTZXNzaW9uOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzLCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucywgYm9vbCBz
aG91bGROb3RpZnlQYWdlLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzIGluY2x1ZGVIdHRwT25seUNv
b2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5k
ZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFT
dG9yZXMobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgV1RGTW92ZShkb21haW5zKSwgc2hvdWxkTm90
aWZ5UGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50
RGF0YVN0b3JlcyhtX3Nlc3Npb25JRCwgZGF0YVR5cGVzLCBXVEZNb3ZlKGRvbWFpbnMpLCBzaG91
bGROb3RpZnlQYWdlLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OnJlZ2lzdHJhYmxlRG9tYWluc1dp
dGhXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGJvb2wg
c2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX25ldHdvcmtQcm9j
ZXNzLT5yZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEobV9zZXNzaW9uSUQsIGRhdGFU
eXBlcywgc2hvdWxkTm90aWZ5UGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQot
I2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9p
ZCBOZXR3b3JrU2Vzc2lvbjo6c3RvcmVBZENsaWNrQXR0cmlidXRpb24oV2ViQ29yZTo6QWRDbGlj
a0F0dHJpYnV0aW9uJiYgYWRDbGlja0F0dHJpYnV0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDA4NTJkNmI2NWY0YzVmMzNhMGU5
MjE3YzJmOTg0NjU1NjY4MjQzNzUuLjg3MjNkNjM0N2NmZjJjZTA2N2E5ODVkNTdlMDA5ZWQ5ODYy
MTQ0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmgKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFkQ2xpY2tB
dHRyaWJ1dGlvbjsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK2VudW0gY2xhc3MgSW5j
bHVkZUh0dHBPbmx5Q29va2llcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJv
b2w7CiB9CiAKQEAgLTcyLDcgKzczLDcgQEAgcHVibGljOgogICAgIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSogcmVzb3VyY2VMb2FkU3RhdGlzdGljcygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy5nZXQoKTsgfQogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUHJvY2Vzc2VkKCk7Ci0gICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJh
YmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgYm9vbCBzaG91bGRO
b3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOworICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JS
ZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYsIGJvb2wg
c2hvdWxkTm90aWZ5UGFnZSwgV2ViQ29yZTo6SW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsK
ICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdW5zaWduZWQgdmFsdWUsIHVuc2lnbmVk
IHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKICAgICB2b2lkIG5v
dGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQodW5zaWduZWQgdG90YWxQcmV2YWxl
bnRSZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRl
cmFjdGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5jcHAKaW5kZXggYzBlYmI4NzI2N2JiNzIxYWJjZTUzYzUwYmFlNmYzZmRjNmM5OTU3Zi4u
NDFlNWE0ZTdhMzU1MzkxYjZhMjBhODVlMzNiZmNjMjA0ZWUxZjM2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
CkBAIC00MDgsNiArNDA4LDE3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0Ns
ZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvCiAgICAgfSk7CiB9
CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0
aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2sp
Cit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGVsZXRlQ29va2llc0ZvclRl
c3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICAgICAgY2FsbGJhY2so
Y29udGV4dCk7CisgICAgfSk7CisjZWxzZQorICAgIGNhbGxiYWNrKGNvbnRleHQpOworI2VuZGlm
Cit9CisKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2Fw
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBG
dW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuaAppbmRleCA5M2U1MjE4NWI1YmQ3NjQ1MjE2NTIyNDYxZTU4ODc0YzMxZTg5NzFl
Li41Yjg4YjY3NTBmY2E0YmE3MDRiZTRjM2NmZGVlNTY1OGZiYWVhYTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApA
QCAtOTEsNiArOTEsOCBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaQogV0tfRVhQT1JUIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3Rv
cmVNb2RpZmllZFNpbmNlSG91cnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
dW5zaWduZWQgaG91cnMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzRnVuY3Rp
b24gY2FsbGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNv
bnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFy
VGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJv
dWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spOwordHlwZWRlZiB2b2lkICgq
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rp
b24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlD
b29raWVzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRl
Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjayk7CiB0eXBlZGVmIHZvaWQgKCpXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbikodm9pZCog
ZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NDYWNoZU1heEFnZUNhcChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc0NhY2hlTWF4QWdlQ2FwRnVuY3Rpb24pOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbikodm9pZCog
ZnVuY3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGExZjkxNzIzOWI4NTYwMGI3Mjhj
MmRmMDViMDcxYThlNGRjMjliOTAuLmZmZWIwYzFiNzAyOWM0ZjkwMjE4ZGUyNTBjYjMwMzNlMmMz
MmIzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtOTQxLDYgKzk0MSwxNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0
aW5nKFBBTDo6UwogICAgIAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KKwordm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGJvb2wgaW5jbHVkZUh0
dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5n
KHNlc3Npb25JRCwgZG9tYWluLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NXaWxsU3VzcGVu
ZEltbWluZW50bHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAwY2ZhMWYwMTAyYzYyYjIxYzhhZGM1NzA4NmI4
NzE5MDA4NTA4OTk2Li41NmNmM2ZhYjgwZGY5MGEyZmM0NGNiNGNkNTlmNGY0NGJhMDhjMDJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMTQ1LDYgKzE0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3Vs
ZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklE
LCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlu
a0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHByb2Nl
c3NSZWFkeVRvU3VzcGVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBlZGQ3NjYzOGNiOGExYjM5
YjZhZTdjMDJiYmRlNGViOGI1MzFjNDRkLi44ZjhmMzlmNzRjMGIzMjIxZDk2YWQ4MWJjMjMzYjQ0
OWEzZGY1MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTc2NSw2ICsxNzY1LDE2IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6cmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZv
clRlc3RpbmcoQ29tcGxldGlvCiAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cmVzZXRDcm9z
c1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFtjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAg
IH0KIH0KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhj
b25zdCBVUkwmIHVybCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29s
cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5u
ZXR3b3JrUHJvY2VzcygpKQorICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmRlbGV0ZUNvb2tp
ZXNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBpbmNs
dWRlSHR0cE9ubHlDb29raWVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICB9Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBlMzc1ZDE1
NWNjNjViNGExOTczZTQzM2FiZWFiMDQyMzJiYjE5ZjdhLi5mNjE0OWRiOGIxY2I0MmQyMzVkMDFj
OTcyZjlkNzljODVhZDNkNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xNjgsNiArMTY4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwg
U3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbihjb25zdCBVUkwmIHN1YmZy
YW1lLCBjb25zdCBVUkwmIHRvcEZyYW1lKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNX
aXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBkZWxldGVDb29raWVzRm9yVGVzdGluZyhjb25zdCBVUkwmLCBib29sIGluY2x1
ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYK
ICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ExNTVl
ODI5MjZhZjE3NzQxOWVhMzUwNDRiMWYxOGU3MTUwZDZkYy4uNjQ1ZTc1NTAxZDAzODRhYjEyNWU0
NmFkMmRiYWJiMzI0NzgxZTk4NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTAzLTA2ICBKb2huIFdpbGFuZGVy
ICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGlj
czogTWFrZSBpdCBwb3NzaWJsZSB0byBwdXJnZSBvbmx5IHNjcmlwdC1hY2Nlc3NpYmxlIGNvb2tp
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM4
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg1NzAxMzY+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRlc3QgaW5mcmFz
dHJ1Y3R1cmUgdG8gcHVyZ2Ugb25seSBzY3JpcHQtYWNjZXNzaWJsZSBjb29raWVzLAorICAgICAg
ICBpbmNsdWRpbmcgYSBuZXcgdGVzdFJ1bm5lciBmdW5jdGlvbiBjYWxsZWQgc3RhdGlzdGljc0Rl
bGV0ZUNvb2tpZXNGb3JIb3N0KCkuZ2l0IGEKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6c3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9ySG9zdCk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTktMDMt
MDYgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBDb25zaWRlciBzdXBw
b3J0aW5nIHRoZSBgcmVmZXJyZXJwb2xpY3lgIGF0dHJpYnV0ZS4KZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsCmluZGV4IDBlNzlkODBiNjAxZjMyOTVlOGI4MTViYTEwMDhiOTk3ZDFiODBjNmYuLjlj
ZjQ0OTNlNjBlNzg2MzM4YjEzZWFmMGFiNjUwN2M0MzVjMzEzNzggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbApAQCAtMzE1LDYgKzMxNSw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAg
ICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKG9iamVjdCBj
YWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBsb25nIGhvdXJzLCBvYmplY3QgY2FsbGJh
Y2spOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChv
YmplY3QgY2FsbGJhY2spOworICAgIHZvaWQgc3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0
KERPTVN0cmluZyBob3N0TmFtZSwgYm9vbGVhbiBpbmNsdWRlSHR0cE9ubHlDb29raWVzKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CiAgICAg
dm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShvYmplY3QgY29tcGxldGlvbkhh
bmRsZXIpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAppbmRleCBkNDYyMjQ2Y2RiOWMxOGY3N2NlNDVkNzMxMzcyODA0YTY1
MWRkMzAyLi44MjRhNWY2ODQzMTY5MzcwMzRlODZjMTQ5MDMxNzdiYmNjYjZmZWQ2IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHAKQEAgLTIwMDcsNiArMjAwNywzMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDbGVh
clRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAgICBXS0J1
bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1
bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiB9CiAKK3ZvaWQg
VGVzdFJ1bm5lcjo6c3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhv
c3ROYW1lLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpCit7CisgICAgVmVjdG9yPFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPj4ga2V5czsKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBl
UmVmPj4gdmFsdWVzOworCisgICAga2V5cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWUiKSB9KTsKKyAgICB2YWx1ZXMuYXBwZW5kKHsgQWRv
cHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoaG9zdE5hbWUpIH0pOworCisgICAga2V5
cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSW5jbHVk
ZUh0dHBPbmx5Q29va2llcyIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBXS0Jv
b2xlYW5DcmVhdGUoaW5jbHVkZUh0dHBPbmx5Q29va2llcykgfSk7CisKKyAgICBWZWN0b3I8V0tT
dHJpbmdSZWY+IHJhd0tleXM7CisgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3VmFsdWVzOworICAg
IHJhd0tleXMucmVzaXplKGtleXMuc2l6ZSgpKTsKKyAgICByYXdWYWx1ZXMucmVzaXplKHZhbHVl
cy5zaXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIHJhd0tleXNbaV0gPSBrZXlzW2ldLmdldCgpOworICAgICAgICByYXdWYWx1
ZXNbaV0gPSB2YWx1ZXNbaV0uZ2V0KCk7CisgICAgfQorCisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJTdGF0aXN0aWNzRGVsZXRlQ29va2llc0Zvckhvc3QiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tE
aWN0aW9uYXJ5UmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0RpY3Rpb25hcnlDcmVhdGUocmF3
S2V5cy5kYXRhKCksIHJhd1ZhbHVlcy5kYXRhKCksIHJhd0tleXMuc2l6ZSgpKSk7CisgICAgV0tC
dW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5i
dW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsK
K30KKwogdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91Ymxl
IHNlY29uZHMpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNzQ2FjaGVN
YXhBZ2VDYXAiKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCmluZGV4IDcxM2E5NDMzNjM5MDVmMGM5Yjc2MGQ1NzRhYzhmMzI0ZDhk
NTE2ZmMuLjZkMTE2NDhiYmM5NDZmYTg2NjU2NDA3ZmYzMTIyNzQ3MWJiMzMyNDggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBA
IC00MjYsNiArNDI2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50U3RvcmUoSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0
aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1
bnNpZ25lZCBob3VycywgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNz
Q2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAg
IHZvaWQgc3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1l
LCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxD
bGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFjaygpOwogICAgIHZvaWQgc2V0U3Rh
dGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3Rp
Y3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA0NTU4YmEyY2Y5
NWYzNWVjOGI2MDJjOWQ3YWQ0NjI5Y2QxZjRlMTIzLi41NTRlMDNhNmZhYjgzZDQzYTI3OGE1M2Y3
NjRlYTQ1MzNkMDQ2YWZkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcApAQCAtMzMzMiw2ICszMzMyLDE0IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3Rp
Y3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoKQogICAgIG1fY3VycmVudEludm9jYXRp
b24tPmRpZENsZWFyU3RhdGlzdGljc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoKTsKIH0KIAor
dm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KFdLU3Ry
aW5nUmVmIGhvc3QsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcykKK3sKKyAgICBhdXRvKiBk
YXRhU3RvcmUgPSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgp
KTsKKyAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7
CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5n
KGRhdGFTdG9yZSwgaG9zdCwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgJmNvbnRleHQsIHJlc291
cmNlU3RhdGlzdGljc1ZvaWRSZXN1bHRDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5k
b25lLCBub1RpbWVvdXQpOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNz
Q2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpCiB7CiAgICAgYXV0byogZGF0YVN0b3JlID0g
V0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMWQxM2I1NTIzNzM5MGI3NmZiOTJl
MTBhZjkzNWQ3OWYwYjYzMTBiNC4uNGIzNTNkYjQyYjU1MmU4OTgyNjEyNDJlM2E1ZDA3YTA0MGYz
ZTU2NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjM1LDYg
KzIzNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudFN0b3JlKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCk7CiAgICAgdm9pZCBzdGF0aXN0
aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCk7CisgICAgdm9pZCBzdGF0aXN0aWNz
RGVsZXRlQ29va2llc0Zvckhvc3QoV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRlSHR0cE9u
bHlDb29raWVzKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUg
c2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwog
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDY2NjBjZGM5
MjFmODk3Y2NlMmY3NzFkOGQ1M2E1YzI2ZjIxMjQ4ZjkuLjBiZGM0MTc2YWUxMjE2NjUwMjk4ZDhk
NDg0NGRlYjk2NjYxYjJkMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCkBAIC0xMzg0LDcgKzEzODQsMjEgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0
SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAg
ICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnN0YXRpc3RpY3NDbGVhclRocm91Z2hX
ZWJzaXRlRGF0YVJlbW92YWwoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAg
IAorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJT
dGF0aXN0aWNzRGVsZXRlQ29va2llc0Zvckhvc3QiKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRU
eXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAgICAgICAg
CisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNf
Y2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IGhvc3ROYW1lS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJIb3N0TmFtZSIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHZh
bHVlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJbmNsdWRlSHR0
cE9ubHlDb29raWVzIikpOworICAgICAgICAKKyAgICAgICAgV0tTdHJpbmdSZWYgaG9zdE5hbWUg
PSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNz
YWdlQm9keURpY3Rpb25hcnksIGhvc3ROYW1lS2V5LmdldCgpKSk7CisgICAgICAgIFdLQm9vbGVh
blJlZiBpbmNsdWRlSHR0cE9ubHlDb29raWVzID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihX
S0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdmFsdWVLZXku
Z2V0KCkpKTsKKyAgICAgICAgCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5z
dGF0aXN0aWNzRGVsZXRlQ29va2llc0Zvckhvc3QoaG9zdE5hbWUsIFdLQm9vbGVhbkdldFZhbHVl
KGluY2x1ZGVIdHRwT25seUNvb2tpZXMpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJT
ZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAiKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBl
SUQobWVzc2FnZUJvZHkpID09IFdLRG91YmxlR2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RvdWJs
ZVJlZiBzZWNvbmRzID0gc3RhdGljX2Nhc3Q8V0tEb3VibGVSZWY+KG1lc3NhZ2VCb2R5KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBlZDc4ZDIwNDBhODZiZjM3MzQ0Y2JlMzAwOTk0ODA2M2JmODM3ZTkyLi4xODNjNzFiNGRl
ZDIyYmU3ZGUzYmY5Yzc5OGQ4YmEzZjA3NTk4ODRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTktMDMtMDYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHB1cmdlIG9ubHkg
c2NyaXB0LWFjY2Vzc2libGUgY29va2llcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODU3MDEz
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0
dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZGVsZXRlLXNj
cmlwdC1hY2Nlc3NpYmxlLWNvb2tpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZGVsZXRlLXNjcmlwdC1hY2Nlc3NpYmxl
LWNvb2tpZXMuaHRtbDogQWRkZWQuCisKIDIwMTktMDMtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRnJlcXVlbnQgMSBzZWNvbmQgSVBD
IGRlYWRsb2NrcyB3aGVuIHNob3dpbmcgYSBwYXN0ZSBjYWxsb3V0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29va2ll
LnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAt
b25seS1jb29raWUucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxMGU2ZmUxZDU0YzYyYTEwYmFhODA0NWYwZjQ5
YWU0YWIzNGNlZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nv
b2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29va2llLnBocApAQCAtMCwwICsxLDEwIEBA
Cis8P3BocAoraWYgKCRfR0VUWydjb29raWVOYW1lJ10pIHsKKyAgc2V0Y29va2llKCRfR0VUWydj
b29raWVOYW1lJ10sICIxIiwgdGltZSgpICsgODY0MDAsICIvIiwgIiIsIEZBTFNFLCBUUlVFKTsK
KyAgZWNobyAiWWVhaCI7Cit9IGVsc2UgeworICBoZWFkZXIoIkhUVFAvMS4wIDIwMCBPSyIpOwor
ICBlY2hvICJGQUlMRUQ6IE5vIGNvb2tpZU5hbWUgcGFyYW1ldGVyIGZvdW5kLlxuIjsKK30KKwor
Pz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9kZWxldGUtc2NyaXB0LWFjY2Vzc2libGUtY29va2llcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZGVsZXRlLXNjcmlwdC1h
Y2Nlc3NpYmxlLWNvb2tpZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzNDA3ZGNmM2VkZWVi
NjBlYzk2NDkyODUwMTQ1MWEwNTE5Mjg0NzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZGVsZXRlLXNjcmlwdC1hY2Nlc3Np
YmxlLWNvb2tpZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK0NoZWNrIHRoYXQgb25s
eSBIdHRwT25seSBjb29raWVzIHJlbWFpbiBpZiBhbGwgc2NyaXB0LWFjY2Vzc2libGUgY29va2ll
cyBhcmUgZGVsZXRlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgQmVm
b3JlIHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3Rz
LgorUEFTUyBCZWZvcmUgc2NyaXB0LWFjY2Vzc2libGUgZGVsZXRpb246IEh0dHBPbmx5IGNvb2tp
ZSBleGlzdHMuCitQQVNTIEJlZm9yZSBzY3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjogUmVndWxh
ciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgorUEFTUyBBZnRlciBzY3JpcHQtYWNjZXNzaWJs
ZSBkZWxldGlvbjogIEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitQQVNTIEFmdGVyIGZ1bGwgZGVs
ZXRpb246ICAgICAgICAgICAgICAgQWxsIGNvb2tpZXMgYXJlIGdvbmUuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RlbGV0ZS1zY3JpcHQtYWNj
ZXNzaWJsZS1jb29raWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvZGVsZXRlLXNjcmlwdC1hY2Nlc3NpYmxlLWNvb2tpZXMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NWZlYWRhZGIwN2MwZWRlNWViNDYwNzRmZWI3YTQ4ZThiMWZlOWY2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Rl
bGV0ZS1zY3JpcHQtYWNjZXNzaWJsZS1jb29raWVzLmh0bWwKQEAgLTAsMCArMSw3MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJDaGVjayB0aGF0IG9ubHkgSHR0
cE9ubHkgY29va2llcyByZW1haW4gaWYgYWxsIHNjcmlwdC1hY2Nlc3NpYmxlIGNvb2tpZXMgYXJl
IGRlbGV0ZWQuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBodHRw
T25seUNvb2tpZU5hbWUgPSAiaHR0cC1vbmx5LWNvb2tpZSI7CisgICAgY29uc3Qgc2VydmVyU2lk
ZUNvb2tpZU5hbWUgPSAic2VydmVyLXNpZGUtY29va2llIjsKKyAgICBjb25zdCBjbGllbnRTaWRl
Q29va2llTmFtZSA9ICJjbGllbnQtc2lkZS1jb29raWUiOworCisgICAgZnVuY3Rpb24gc29ydFN0
cmluZ0FycmF5KGEsIGIpIHsKKyAgICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTsKKyAgICAgICAg
YiA9IGIudG9Mb3dlckNhc2UoKTsKKworICAgICAgICByZXR1cm4gYSA+IGIgPyAxIDogYiA+IGEg
PyAtMSA6IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0ZXJTY3Jp
cHRBY2Nlc3NpYmxlRGVsZXRpb24pIHsKKyAgICAgICAgbGV0IHVuc29ydGVkVGVzdFBhc3NlZE1l
c3NhZ2VzID0gW107CisgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMo
KTsKKyAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
KGlzQWZ0ZXJTY3JpcHRBY2Nlc3NpYmxlRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsg
IiBzY3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjogTm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAg
ICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29v
a2llLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGh0dHBPbmx5Q29va2llTmFtZToKKyAg
ICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRl
clNjcmlwdEFjY2Vzc2libGVEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHNjcmlw
dC1hY2Nlc3NpYmxlIGRlbGV0aW9uOiAiICsgKGlzQWZ0ZXJTY3JpcHRBY2Nlc3NpYmxlRGVsZXRp
b24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2ZXJTaWRlQ29va2llTmFt
ZToKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzQWZ0ZXJTY3JpcHRBY2Nlc3NpYmxlRGVsZXRp
b24pCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJBZnRlciBzY3JpcHQtYWNj
ZXNzaWJsZSBkZWxldGlvbjogIFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgdW5zb3J0
ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgiQmVmb3JlIHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0
aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgY2xpZW50U2lkZUNvb2tpZU5hbWU6
CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0FmdGVyU2NyaXB0QWNjZXNzaWJsZURlbGV0aW9u
KQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiQWZ0ZXIgc2NyaXB0LWFjY2Vz
c2libGUgZGVsZXRpb246ICBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNz
ZWRNZXNzYWdlcy5wdXNoKCJCZWZvcmUgc2NyaXB0LWFjY2Vzc2libGUgZGVsZXRpb246IENsaWVu
dC1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVzc2Fn
ZXMgPSB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7Cisg
ICAgICAgIGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNz
YWdlcykKKyAgICAgICAgICAgIHRlc3RQYXNzZWQodGVzdFBhc3NlZE1lc3NhZ2UpOworICAgIH0K
KworICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGlmICghdGVzdFJ1bm5l
ciB8fCAhaW50ZXJuYWxzKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyB0ZXN0UnVubmVy
IG9yIG5vIGludGVybmFscy4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29r
aWUucGhwP2Nvb2tpZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFsczog
InNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNl
cy9zZXRDb29raWVzLmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZlclNpZGVD
b29raWVOYW1lICsgIj0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9
KTsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUgKyAiPTEi
OworICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRp
c3RpY3NEZWxldGVDb29raWVzRm9ySG9zdCgiaHR0cDovLzEyNy4wLjAuMSIsIGZhbHNlKTsKKyAg
ICAgICAgY2hlY2tDb29raWVzKHRydWUpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NE
ZWxldGVDb29raWVzRm9ySG9zdCgiaHR0cDovLzEyNy4wLjAuMSIsIHRydWUpOworICAgICAgICBs
ZXQgY29va2llc0xlZnQgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpLmxlbmd0aDsKKyAgICAgICAg
aWYgKGNvb2tpZXNMZWZ0ID09PSAwKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQWZ0ZXIgZnVs
bCBkZWxldGlvbjogICAgICAgICAgICAgICBBbGwgY29va2llcyBhcmUgZ29uZS4iKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiQWZ0ZXIgZnVsbCBkZWxldGlvbjogICAg
ICAgICAgICAgICIgKyBjb29raWVzTGVmdCArICIgY29va2llKHMpIGxlZnQuIik7CisgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363832</attachid>
            <date>2019-03-06 19:06:57 -0800</date>
            <delta_ts>2019-03-06 19:10:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195383-20190306190657.patch</filename>
            <type>text/plain</type>
            <size>45596</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZkNWQxNmQwNDRhNTk5
ZWVkYzZjNjJkNmMyOGNmNTYwNTc2Y2QyMi4uNjNlMGQ2ZDQwNDU0MjhjZTUwM2ViYmFhMzA3NDAx
NGYwMDE3Y2ZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTAzLTA2ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogTWFrZSBpdCBwb3NzaWJsZSB0byBwdXJnZSBvbmx5IHNjcmlwdC1hY2Nlc3Np
YmxlIGNvb2tpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTM4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg1NzAxMzY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RlbGV0ZS1zY3JpcHQtYWNjZXNzaWJsZS1jb29raWVzLmh0
bWwKKworICAgICAgICBUaGlzIHBhdGNoIHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIHB1cmdlIGFs
bCBzY3JpcHQtYWNjZXNzaWJsZSBjb29raWVzIHdoaWxlIGxlYXZpbmcKKyAgICAgICAgSHR0cE9u
bHkgY29va2llcyBpbiBwbGFjZS4KKworICAgICAgICAqIGxvYWRlci9Db29raWVKYXIuaDoKKyAg
ICAgICAgICAgIEFkZGVkIGJvb2xlYW4gZW51bSBJbmNsdWRlSHR0cE9ubHlDb29raWVzIGZvciB1
c2UgYXMgZnVuY3Rpb24gcGFyYW1ldGVyLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyk6CisgICAgICAgICAgICBT
dXBwb3J0IGZvciB0aGUgbmV3IEluY2x1ZGVIdHRwT25seUNvb2tpZXMgZmxhZy4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZXMpOgorICAgICAgICAgICAgU3R1YmJlZCBvdXQgdGhlIG5ldyBmdW5jdGlvbiBhbmQg
YWRkZWQgYSBGSVhNRSBjb21tZW50LgorCiAyMDE5LTAzLTA2ICBSb2IgQnVpcyAgPHJidWlzQGln
YWxpYS5jb20+CiAKICAgICAgICAgQ29uc2lkZXIgc3VwcG9ydGluZyB0aGUgYHJlZmVycmVycG9s
aWN5YCBhdHRyaWJ1dGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc4Y2U1ZjNhZjZhNGRmMzhmN2ZmODkyZmE1MjAx
MjliOTQ3NDUzYzkuLjFhODc0NzU0MzkyYTAxNzZhMDczNzNhMGU4NGM1ZjVjMWE4MjBiODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTktMDMtMDYgIEpvaG4gV2lsYW5kZXIgIDx3aWxh
bmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBNYWtl
IGl0IHBvc3NpYmxlIHRvIHB1cmdlIG9ubHkgc2NyaXB0LWFjY2Vzc2libGUgY29va2llcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzgzCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80ODU3MDEzNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRv
IHB1cmdlIGFsbCBzY3JpcHQtYWNjZXNzaWJsZSBjb29raWVzIHdoaWxlIGxlYXZpbmcKKyAgICAg
ICAgSHR0cE9ubHkgY29va2llcyBpbiBwbGFjZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3Jkcyk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0
ZW50RGF0YVN0b3Jlcyk6CisgICAgICAgICAgICBTdXBwb3J0IGZvciBhIG5ldyBib29sZWFuIGZs
YWcgb24gd2hldGhlciBvciBub3QgdG8gaW5jbHVkZSBIdHRwT25seSBDb29raWVzLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3Ry
YWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKToKKyAgICAgICAgICAgIFN1cHBv
cnQgZm9yIGEgbmV3IGJvb2xlYW4gZmxhZyBvbiB3aGV0aGVyIG9yIG5vdCB0byBpbmNsdWRlIEh0
dHBPbmx5IENvb2tpZXMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVD
b29raWVzRm9yVGVzdGluZyk6CisgICAgICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnRE
YXRhU3RvcmVzKToKKyAgICAgICAgICAgIFN1cHBvcnQgZm9yIGEgbmV3IGJvb2xlYW4gZmxhZyBv
biB3aGV0aGVyIG9yIG5vdCB0byBpbmNsdWRlIEh0dHBPbmx5IENvb2tpZXMuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyk6CisgICAgICAgICAgICBUZXN0IGlu
ZnJhc3RydWN0dXJlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlQ29va2ll
c0ZvclRlc3RpbmcpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAg
KiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVDb29raWVzRm9yVGVzdGluZyk6CisgICAgICAgICAg
ICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMTktMDMtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRnJlcXVlbnQgMSBzZWNvbmQgSVBDIGRl
YWRsb2NrcyB3aGVuIHNob3dpbmcgYSBwYXN0ZSBjYWxsb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2ll
SmFyLmgKaW5kZXggZDRiNTBlOTM2NjM4ODA2YmUxZDJjNTIxOGE3ODdiYmRlOWYxN2M1MS4uMGRi
MDdjNmQxMmU4ZDliZGFmYzNjMGFiYTZlZTcxYTg5YmMxOTk0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b29raWVKYXIuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgSW5jbHVkZVNlY3VyZUNvb2tpZXMgOiBib29sIHsgTm8s
IFllcyB9OworZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlDb29raWVzIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKIGVudW0gY2xhc3MgU2VjdXJlQ29va2llc0FjY2Vzc2VkIDogYm9vbCB7IE5vLCBZZXMg
fTsKIAogY2xhc3MgRG9jdW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCA4ZGU0MjQ5MjQ3NGU1MjA2
MTk0NDU4MzYyYjE4NjAyYzM1ZDE0YTg4Li4wMzAyMDBkZjljNDRmZDRiY2YyZjU4NzJkZGRmZGE1
NjMyNTk4NTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTcxLDYgKzcxLDcgQEAgc3RydWN0IENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Owogc3RydWN0IFNhbWVTaXRlSW5mbzsKIAogZW51bSBj
bGFzcyBJbmNsdWRlU2VjdXJlQ29va2llcyA6IGJvb2w7CitlbnVtIGNsYXNzIEluY2x1ZGVIdHRw
T25seUNvb2tpZXMgOiBib29sOwogCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtMTMwLDYgKzEzMSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRl
bGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1lKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGNv
b2tpZUhvc3ROYW1lcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWVzRm9y
SG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIEluY2x1ZGVI
dHRwT25seUNvb2tpZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldEFs
bENvb2tpZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29va2llPiBnZXRDb29raWVz
KGNvbnN0IFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3Q29va2llcyhjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8
Q29va2llPiYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5k
ZXggMzE4ZjUzZTE3NDcyYmVkZmQyYTQwN2YwY2FlZGUxNjFlOGY5YzhmZC4uNjM3NDAzNTJjNGE2
MjdlZDZmZWVkNjlmZmViMDlkMTk3YTg4NzRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tCkBAIC00OTksNiArNDk5LDExIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpkZWxldGVBbGxDb29raWVzKCkKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1l
cykKK3sKKyAgICBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhvc3RuYW1lcywgSW5jbHVkZUh0
dHBPbmx5Q29va2llczo6WWVzKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1lcywg
SW5jbHVkZUh0dHBPbmx5Q29va2llcyBpbmNsdWRlSHR0cE9ubHlDb29raWVzKQogewogICAgIEFT
U0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nv
b2tpZXMpKTsKIApAQCAtNTExLDcgKzUxNiw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0CiAK
ICAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJldGFpblB0cjxOU0hUVFBDb29raWU+Pj4gY29v
a2llc0J5RG9tYWluOwogICAgIGZvciAoTlNIVFRQQ29va2llICpjb29raWUgaW4gY29va2llcykg
ewotICAgICAgICBpZiAoIWNvb2tpZS5kb21haW4pCisgICAgICAgIGlmICghY29va2llLmRvbWFp
biB8fCAoaW5jbHVkZUh0dHBPbmx5Q29va2llcyA9PSBJbmNsdWRlSHR0cE9ubHlDb29raWVzOjpO
byAmJiBjb29raWUuaXNIVFRQT25seSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
Y29va2llc0J5RG9tYWluLmVuc3VyZShjb29raWUuZG9tYWluLCBbXSB7CiAgICAgICAgICAgICBy
ZXR1cm4gVmVjdG9yPFJldGFpblB0cjxOU0hUVFBDb29raWU+PigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9y
YWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IDNkYWUxYjA0NTFjZTUxM2Y3MWM0NTE3YjFiZjZhN2Jk
M2VkNDAwNmYuLjFmNzU4NzdhODJiMzE4Mzk0NzYxMTIzYmU2ZjU4NWE0NzYxY2Y4OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTM4Nyw2ICszODcsMTMgQEAgdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdh
bGxUaW1lIHRpbWVzdGFtcCkKICAgICAgICAgZ193YXJuaW5nKCJEZWxldGluZyBjb29raWVzIG1v
ZGlmaWVkIHNpbmNlIGEgZ2l2ZW4gdGltZSBzcGFuIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Iik7CiB9
CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMg
aW5jbHVkZUh0dHBPbmx5Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1l
bnRlZC4KKyAgICBVTlVTRURfUEFSQU0oaW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CisgICAgZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lcyhob3N0bmFtZXMpOworfQorCiB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgaG9zdG5hbWVzKQogewogICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tpZVN0
b3JhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5k
ZXggMWY5MjMyNDU1ZjY1ZWM4Njg4NDM3YWMxNzgzMmI4MGJkMGJmNzM0Zi4uMDRjNDc5MGY2OTIw
NmQyM2MxZjJhZWFmN2JhMjBlOWZkZGQwNDY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXllZENvZGluZy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmg+CkBAIC0xNzUsNyArMTc2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgd2Vha1RoaXMt
Pm1fc3RvcmUuZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNp
c3RlbnREYXRhU3RvcmVzKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVk
RGF0YVR5cGVzKCksIFdURk1vdmUocHJldmFsZW50UmVzb3VyY2VEb21haW5zKSwgc2hvdWxkTm90
aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHdvcmtRdWV1ZSA9IHdvcmtR
dWV1ZS5jb3B5UmVmKCldKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5z
V2l0aERlbGV0ZWRXZWJzaXRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAgIHdlYWtUaGlzLT5tX3N0
b3JlLmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50
RGF0YVN0b3JlcyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERhdGFU
eXBlcygpLCBXVEZNb3ZlKHByZXZhbGVudFJlc291cmNlRG9tYWlucyksIHNob3VsZE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIEluY2x1ZGVIdHRwT25seUNvb2tpZXM6Olll
cywgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIHdvcmtRdWV1ZSA9IHdvcmtRdWV1ZS5jb3B5UmVmKCldKGNvbnN0IEhhc2hTZXQ8UmVn
aXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSkgbXV0YWJsZSB7
CiAgICAgICAgICAgICB3b3JrUXVldWUtPmRpc3BhdGNoKFtkb21haW5zV2l0aERlbGV0ZWRXZWJz
aXRlRGF0YSA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhp
cyldICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggMzcxM2Y5YjE3MWMxYjUxOTgwOTc3MmYxYjA5MjFi
MTUyN2I3OTE2YS4uNjg5NDlkZGUyODQ3OWY4MDRiMWZhOTMwZDRmNWRmZWEzNmJkNGQ3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9D
b29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgpAQCAtOTg4LDEyICs5ODksMTIgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om5vdGlmeVJlc291cmNlTG9hZFN0YXRp
c3RpY3NQcm9jZXNzZWQoKQogICAgICAgICBtX25ldHdvcmtTZXNzaW9uLT5ub3RpZnlSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxs
UGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVz
LCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQ
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNp
c3RlbnREYXRhU3RvcmVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwg
SW5jbHVkZUh0dHBPbmx5Q29va2llcyBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKICAg
ICBpZiAobV9uZXR3b3JrU2Vzc2lvbikgewotICAgICAgICBtX25ldHdvcmtTZXNzaW9uLT5kZWxl
dGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9y
ZXMoZGF0YVR5cGVzLCBXVEZNb3ZlKGRvbWFpbnMpLCBzaG91bGROb3RpZnlQYWdlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIG1fbmV0d29ya1Nlc3Npb24tPmRlbGV0ZVdl
YnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3Jlcyhk
YXRhVHlwZXMsIFdURk1vdmUoZG9tYWlucyksIHNob3VsZE5vdGlmeVBhZ2UsIGluY2x1ZGVIdHRw
T25seUNvb2tpZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CmluZGV4IDBhMWEzMDNjZGY4NjUzMjZkMjgxYzkxNWJiZjQyZGZkYzVmN2VlNTcuLjZhNTY1MGQ4
YzM3YzY1MTBiYzJiNWFiMjQzYjUxZTVlOTU3NWM2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owogc3RydWN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3M7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJvb2w7CitlbnVtIGNsYXNzIEluY2x1
ZGVIdHRwT25seUNvb2tpZXMgOiBib29sOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEw
Myw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29u
c3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFdhbGxUaW1lIGxh
c3RTZWVuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgbG9nU3VicmVz
b3VyY2VSZWRpcmVjdChjb25zdCBSZWRpcmVjdGVkRnJvbURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0
ZWRUb0RvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVh
clVzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYp
OworICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBl
cnNpc3RlbnREYXRhU3RvcmVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBWZWN0b3I8UmVn
aXN0cmFibGVEb21haW4+JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgV2ViQ29yZTo6SW5jbHVk
ZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhX
ZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQ
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYp
PiYmKTsKICAgICBib29sIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CiAgICAg
dm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMWU2NDJlYWM3MDgyZjBhNjYxYzM0ZmU4
Yjg2OWQ3MTkxOGUwZWZkMy4uMWEzYTIzOTI3MTY0Mjk0OTk3NmY4Mjk4YWJlZTAxYjgzYTk3NTcy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0
YVR5cGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRE5TLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CkBAIC0xNDY2LDcg
KzE0NjcsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4gZmlsdGVyRm9yUmVn
aXN0cmFibGVEb21haW5zKGNvbnN0IFZlY3RvcjxSZWdpcwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVE
b21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxSZWdp
c3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9y
UmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMs
IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCBib29sIHNob3VsZE5vdGlmeVBh
Z2UsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9u
PiBmZXRjaE9wdGlvbnMgPSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpEb05vdENyZWF0ZVByb2Nl
c3NlczsKIApAQCAtMTUxMyw3ICsxNTE0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3QKICAg
ICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCkpIHsKICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMod2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CiAg
ICAgICAgICAgICBob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0
cmFibGVEb21haW5zKGRvbWFpbnMsIHdlYnNpdGVEYXRhU3RvcmUuaG9zdE5hbWVzV2l0aENvb2tp
ZXMpOwotICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9y
SG9zdG5hbWVzKGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUpOworICAgICAgICAgICAgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhvc3RuYW1lc1dp
dGhDb29raWVzVG9EZWxldGUsIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0xNTk4LDYgKzE1OTksMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3QKICAg
ICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGlu
Y2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBjb29raWVUeXBl
ID0gV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzOworCisgICAgZGVsZXRlV2Vic2l0ZURhdGFGb3JS
ZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKHNlc3Npb25JRCwgY29v
a2llVHlwZSwgeyBkb21haW4gfSwgdHJ1ZSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcyA/IEluY2x1
ZGVIdHRwT25seUNvb2tpZXM6OlllcyA6IEluY2x1ZGVIdHRwT25seUNvb2tpZXM6Ok5vLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zRGVsZXRlZEZvcikgbXV0YWJsZSB7CisgICAg
ICAgIFVOVVNFRF9QQVJBTShkb21haW5zRGVsZXRlZEZvcik7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxl
RG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIGJvb2wgc2hvdWxkTm90aWZ5UGFn
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9w
dGlvbj4gZmV0Y2hPcHRpb25zID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6RG9Ob3RDcmVhdGVQ
cm9jZXNzZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKaW5kZXggYzRlNzIwZWNmNzMzYzdhYTUzZGM1NzAyY2JmY2M2MDI2YzZhYTdmNC4uMGVjNTAw
ZWE4NTM3ODAwODNlYWNlNzNjYTRhMTA4ODJhODg5MmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtNzIsNiArNzIsNyBAQCBjbGFzcyBE
b3dubG9hZElEOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFNXU2VydmVyOworZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlDb29raWVz
IDogYm9vbDsKIGVudW0gY2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgOiBib29sOwogc3Ry
dWN0IENsaWVudE9yaWdpbjsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKQEAgLTIw
Miw3ICsyMDMsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkZWxldGVX
ZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMo
UEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBWZWN0b3I8UmVnaXN0
cmFibGVEb21haW4+JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKKyAgICB2b2lkIGRl
bGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0
b3JlcyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBXZWJDb3JlOjpJbmNs
dWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25s
eUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkdW1wUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29v
a2llc0ZvcihQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYg
ZG9tYWluc1RvQmxvY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBp
c0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA4Y2Q0
MDIwNGRlZmRjMTdiOTk5MDJiOTNmM2I5ODQ3NWI5ODJhYzI3Li40MTMwZDhlNzI1YWVlNWZlY2Fm
Y2MwZWUyZGFkZWE1MmQ2ODIwMTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEzNCw2ICsxMzQsNyBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpIC0+ICgpIEFzeW5jCiAgICAgQ29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IGZyb21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvRG9tYWluLCB1aW50NjRf
dCBwYWdlSUQpCiAgICAgUmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIERlbGV0ZUNv
b2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFz
eW5jCiAjZW5kaWYKIAogICAgIFNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGNvbnRyb2xsZWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCAzMjgxMzBkNWUzOTNk
Zjc2MWU0MzRjZmVlZWZhNDM0Nzk0ZWFmYzFkLi5kODU0MTEzM2JlZjllOTQwOWMwNzAzNzVlOWIx
YzU3Y2RkNGYzMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQWRDbGlja0F0dHJpYnV0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db29r
aWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMTcsMTYgKzExOCwxNiBAQCB2b2lkIE5ldHdvcmtTZXNz
aW9uOjpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFs
UHJldmFsZQogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5vdGlmeVJlc291cmNlTG9hZFN0
YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh0b3RhbFByZXZhbGVudFJlc291cmNlcywgdG90YWxQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB0b3AzU3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2lucyksIDApOwogfQogCi12b2lkIE5ldHdvcmtTZXNzaW9uOjpkZWxldGVXZWJz
aXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aW4+JiYgZG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtTZXNzaW9uOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzLCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucywgYm9vbCBz
aG91bGROb3RpZnlQYWdlLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzIGluY2x1ZGVIdHRwT25seUNv
b2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5k
ZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFT
dG9yZXMobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgV1RGTW92ZShkb21haW5zKSwgc2hvdWxkTm90
aWZ5UGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50
RGF0YVN0b3JlcyhtX3Nlc3Npb25JRCwgZGF0YVR5cGVzLCBXVEZNb3ZlKGRvbWFpbnMpLCBzaG91
bGROb3RpZnlQYWdlLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OnJlZ2lzdHJhYmxlRG9tYWluc1dp
dGhXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGJvb2wg
c2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX25ldHdvcmtQcm9j
ZXNzLT5yZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEobV9zZXNzaW9uSUQsIGRhdGFU
eXBlcywgc2hvdWxkTm90aWZ5UGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQot
I2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9p
ZCBOZXR3b3JrU2Vzc2lvbjo6c3RvcmVBZENsaWNrQXR0cmlidXRpb24oV2ViQ29yZTo6QWRDbGlj
a0F0dHJpYnV0aW9uJiYgYWRDbGlja0F0dHJpYnV0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDA4NTJkNmI2NWY0YzVmMzNhMGU5
MjE3YzJmOTg0NjU1NjY4MjQzNzUuLjg3MjNkNjM0N2NmZjJjZTA2N2E5ODVkNTdlMDA5ZWQ5ODYy
MTQ0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmgKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFkQ2xpY2tB
dHRyaWJ1dGlvbjsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK2VudW0gY2xhc3MgSW5j
bHVkZUh0dHBPbmx5Q29va2llcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJv
b2w7CiB9CiAKQEAgLTcyLDcgKzczLDcgQEAgcHVibGljOgogICAgIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSogcmVzb3VyY2VMb2FkU3RhdGlzdGljcygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy5nZXQoKTsgfQogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUHJvY2Vzc2VkKCk7Ci0gICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJh
YmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgYm9vbCBzaG91bGRO
b3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOworICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JS
ZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYsIGJvb2wg
c2hvdWxkTm90aWZ5UGFnZSwgV2ViQ29yZTo6SW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsK
ICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdW5zaWduZWQgdmFsdWUsIHVuc2lnbmVk
IHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKICAgICB2b2lkIG5v
dGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQodW5zaWduZWQgdG90YWxQcmV2YWxl
bnRSZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRl
cmFjdGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5jcHAKaW5kZXggYzBlYmI4NzI2N2JiNzIxYWJjZTUzYzUwYmFlNmYzZmRjNmM5OTU3Zi4u
NDFlNWE0ZTdhMzU1MzkxYjZhMjBhODVlMzNiZmNjMjA0ZWUxZjM2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
CkBAIC00MDgsNiArNDA4LDE3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0Ns
ZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvCiAgICAgfSk7CiB9
CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0
aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2sp
Cit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGVsZXRlQ29va2llc0ZvclRl
c3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICAgICAgY2FsbGJhY2so
Y29udGV4dCk7CisgICAgfSk7CisjZWxzZQorICAgIGNhbGxiYWNrKGNvbnRleHQpOworI2VuZGlm
Cit9CisKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2Fw
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBG
dW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuaAppbmRleCA5M2U1MjE4NWI1YmQ3NjQ1MjE2NTIyNDYxZTU4ODc0YzMxZTg5NzFl
Li41Yjg4YjY3NTBmY2E0YmE3MDRiZTRjM2NmZGVlNTY1OGZiYWVhYTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApA
QCAtOTEsNiArOTEsOCBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaQogV0tfRVhQT1JUIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3Rv
cmVNb2RpZmllZFNpbmNlSG91cnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
dW5zaWduZWQgaG91cnMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzRnVuY3Rp
b24gY2FsbGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNv
bnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFy
VGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJv
dWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spOwordHlwZWRlZiB2b2lkICgq
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rp
b24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlD
b29raWVzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRl
Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjayk7CiB0eXBlZGVmIHZvaWQgKCpXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbikodm9pZCog
ZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NDYWNoZU1heEFnZUNhcChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc0NhY2hlTWF4QWdlQ2FwRnVuY3Rpb24pOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbikodm9pZCog
ZnVuY3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGExZjkxNzIzOWI4NTYwMGI3Mjhj
MmRmMDViMDcxYThlNGRjMjliOTAuLmZmZWIwYzFiNzAyOWM0ZjkwMjE4ZGUyNTBjYjMwMzNlMmMz
MmIzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtOTQxLDYgKzk0MSwxNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0
aW5nKFBBTDo6UwogICAgIAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KKwordm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGJvb2wgaW5jbHVkZUh0
dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5n
KHNlc3Npb25JRCwgZG9tYWluLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NXaWxsU3VzcGVu
ZEltbWluZW50bHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAwY2ZhMWYwMTAyYzYyYjIxYzhhZGM1NzA4NmI4
NzE5MDA4NTA4OTk2Li41NmNmM2ZhYjgwZGY5MGEyZmM0NGNiNGNkNTlmNGY0NGJhMDhjMDJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMTQ1LDYgKzE0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3Vs
ZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklE
LCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlu
a0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHByb2Nl
c3NSZWFkeVRvU3VzcGVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBlZGQ3NjYzOGNiOGExYjM5
YjZhZTdjMDJiYmRlNGViOGI1MzFjNDRkLi44ZjhmMzlmNzRjMGIzMjIxZDk2YWQ4MWJjMjMzYjQ0
OWEzZGY1MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTc2NSw2ICsxNzY1LDE2IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6cmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZv
clRlc3RpbmcoQ29tcGxldGlvCiAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cmVzZXRDcm9z
c1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFtjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAg
IH0KIH0KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhj
b25zdCBVUkwmIHVybCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29s
cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5u
ZXR3b3JrUHJvY2VzcygpKQorICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmRlbGV0ZUNvb2tp
ZXNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBpbmNs
dWRlSHR0cE9ubHlDb29raWVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICB9Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBlMzc1ZDE1
NWNjNjViNGExOTczZTQzM2FiZWFiMDQyMzJiYjE5ZjdhLi5mNjE0OWRiOGIxY2I0MmQyMzVkMDFj
OTcyZjlkNzljODVhZDNkNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xNjgsNiArMTY4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwg
U3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbihjb25zdCBVUkwmIHN1YmZy
YW1lLCBjb25zdCBVUkwmIHRvcEZyYW1lKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNX
aXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBkZWxldGVDb29raWVzRm9yVGVzdGluZyhjb25zdCBVUkwmLCBib29sIGluY2x1
ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYK
ICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ExNTVl
ODI5MjZhZjE3NzQxOWVhMzUwNDRiMWYxOGU3MTUwZDZkYy4uNjQ1ZTc1NTAxZDAzODRhYjEyNWU0
NmFkMmRiYWJiMzI0NzgxZTk4NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTAzLTA2ICBKb2huIFdpbGFuZGVy
ICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGlj
czogTWFrZSBpdCBwb3NzaWJsZSB0byBwdXJnZSBvbmx5IHNjcmlwdC1hY2Nlc3NpYmxlIGNvb2tp
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM4
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg1NzAxMzY+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRlc3QgaW5mcmFz
dHJ1Y3R1cmUgdG8gcHVyZ2Ugb25seSBzY3JpcHQtYWNjZXNzaWJsZSBjb29raWVzLAorICAgICAg
ICBpbmNsdWRpbmcgYSBuZXcgdGVzdFJ1bm5lciBmdW5jdGlvbiBjYWxsZWQgc3RhdGlzdGljc0Rl
bGV0ZUNvb2tpZXNGb3JIb3N0KCkuZ2l0IGEKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6c3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9ySG9zdCk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTktMDMt
MDYgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBDb25zaWRlciBzdXBw
b3J0aW5nIHRoZSBgcmVmZXJyZXJwb2xpY3lgIGF0dHJpYnV0ZS4KZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsCmluZGV4IDBlNzlkODBiNjAxZjMyOTVlOGI4MTViYTEwMDhiOTk3ZDFiODBjNmYuLjlj
ZjQ0OTNlNjBlNzg2MzM4YjEzZWFmMGFiNjUwN2M0MzVjMzEzNzggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbApAQCAtMzE1LDYgKzMxNSw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAg
ICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKG9iamVjdCBj
YWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBsb25nIGhvdXJzLCBvYmplY3QgY2FsbGJh
Y2spOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChv
YmplY3QgY2FsbGJhY2spOworICAgIHZvaWQgc3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0
KERPTVN0cmluZyBob3N0TmFtZSwgYm9vbGVhbiBpbmNsdWRlSHR0cE9ubHlDb29raWVzKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CiAgICAg
dm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShvYmplY3QgY29tcGxldGlvbkhh
bmRsZXIpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAppbmRleCBkNDYyMjQ2Y2RiOWMxOGY3N2NlNDVkNzMxMzcyODA0YTY1
MWRkMzAyLi44MjRhNWY2ODQzMTY5MzcwMzRlODZjMTQ5MDMxNzdiYmNjYjZmZWQ2IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHAKQEAgLTIwMDcsNiArMjAwNywzMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDbGVh
clRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAgICBXS0J1
bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1
bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiB9CiAKK3ZvaWQg
VGVzdFJ1bm5lcjo6c3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhv
c3ROYW1lLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpCit7CisgICAgVmVjdG9yPFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPj4ga2V5czsKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBl
UmVmPj4gdmFsdWVzOworCisgICAga2V5cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWUiKSB9KTsKKyAgICB2YWx1ZXMuYXBwZW5kKHsgQWRv
cHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoaG9zdE5hbWUpIH0pOworCisgICAga2V5
cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSW5jbHVk
ZUh0dHBPbmx5Q29va2llcyIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBXS0Jv
b2xlYW5DcmVhdGUoaW5jbHVkZUh0dHBPbmx5Q29va2llcykgfSk7CisKKyAgICBWZWN0b3I8V0tT
dHJpbmdSZWY+IHJhd0tleXM7CisgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3VmFsdWVzOworICAg
IHJhd0tleXMucmVzaXplKGtleXMuc2l6ZSgpKTsKKyAgICByYXdWYWx1ZXMucmVzaXplKHZhbHVl
cy5zaXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIHJhd0tleXNbaV0gPSBrZXlzW2ldLmdldCgpOworICAgICAgICByYXdWYWx1
ZXNbaV0gPSB2YWx1ZXNbaV0uZ2V0KCk7CisgICAgfQorCisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJTdGF0aXN0aWNzRGVsZXRlQ29va2llc0Zvckhvc3QiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tE
aWN0aW9uYXJ5UmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0RpY3Rpb25hcnlDcmVhdGUocmF3
S2V5cy5kYXRhKCksIHJhd1ZhbHVlcy5kYXRhKCksIHJhd0tleXMuc2l6ZSgpKSk7CisgICAgV0tC
dW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5i
dW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsK
K30KKwogdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91Ymxl
IHNlY29uZHMpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNzQ2FjaGVN
YXhBZ2VDYXAiKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCmluZGV4IDcxM2E5NDMzNjM5MDVmMGM5Yjc2MGQ1NzRhYzhmMzI0ZDhk
NTE2ZmMuLjZkMTE2NDhiYmM5NDZmYTg2NjU2NDA3ZmYzMTIyNzQ3MWJiMzMyNDggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBA
IC00MjYsNiArNDI2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50U3RvcmUoSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0
aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1
bnNpZ25lZCBob3VycywgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNz
Q2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAg
IHZvaWQgc3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1l
LCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxD
bGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFjaygpOwogICAgIHZvaWQgc2V0U3Rh
dGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3Rp
Y3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA0NTU4YmEyY2Y5
NWYzNWVjOGI2MDJjOWQ3YWQ0NjI5Y2QxZjRlMTIzLi41NTRlMDNhNmZhYjgzZDQzYTI3OGE1M2Y3
NjRlYTQ1MzNkMDQ2YWZkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcApAQCAtMzMzMiw2ICszMzMyLDE0IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3Rp
Y3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoKQogICAgIG1fY3VycmVudEludm9jYXRp
b24tPmRpZENsZWFyU3RhdGlzdGljc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoKTsKIH0KIAor
dm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KFdLU3Ry
aW5nUmVmIGhvc3QsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcykKK3sKKyAgICBhdXRvKiBk
YXRhU3RvcmUgPSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgp
KTsKKyAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7
CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5n
KGRhdGFTdG9yZSwgaG9zdCwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgJmNvbnRleHQsIHJlc291
cmNlU3RhdGlzdGljc1ZvaWRSZXN1bHRDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5k
b25lLCBub1RpbWVvdXQpOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNz
Q2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpCiB7CiAgICAgYXV0byogZGF0YVN0b3JlID0g
V0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMWQxM2I1NTIzNzM5MGI3NmZiOTJl
MTBhZjkzNWQ3OWYwYjYzMTBiNC4uNGIzNTNkYjQyYjU1MmU4OTgyNjEyNDJlM2E1ZDA3YTA0MGYz
ZTU2NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjM1LDYg
KzIzNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudFN0b3JlKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCk7CiAgICAgdm9pZCBzdGF0aXN0
aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCk7CisgICAgdm9pZCBzdGF0aXN0aWNz
RGVsZXRlQ29va2llc0Zvckhvc3QoV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRlSHR0cE9u
bHlDb29raWVzKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUg
c2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwog
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDY2NjBjZGM5
MjFmODk3Y2NlMmY3NzFkOGQ1M2E1YzI2ZjIxMjQ4ZjkuLjBiZGM0MTc2YWUxMjE2NjUwMjk4ZDhk
NDg0NGRlYjk2NjYxYjJkMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCkBAIC0xMzg0LDcgKzEzODQsMjEgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0
SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAg
ICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnN0YXRpc3RpY3NDbGVhclRocm91Z2hX
ZWJzaXRlRGF0YVJlbW92YWwoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAg
IAorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJT
dGF0aXN0aWNzRGVsZXRlQ29va2llc0Zvckhvc3QiKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRU
eXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAgICAgICAg
CisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNf
Y2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IGhvc3ROYW1lS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJIb3N0TmFtZSIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHZh
bHVlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJbmNsdWRlSHR0
cE9ubHlDb29raWVzIikpOworICAgICAgICAKKyAgICAgICAgV0tTdHJpbmdSZWYgaG9zdE5hbWUg
PSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNz
YWdlQm9keURpY3Rpb25hcnksIGhvc3ROYW1lS2V5LmdldCgpKSk7CisgICAgICAgIFdLQm9vbGVh
blJlZiBpbmNsdWRlSHR0cE9ubHlDb29raWVzID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihX
S0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdmFsdWVLZXku
Z2V0KCkpKTsKKyAgICAgICAgCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5z
dGF0aXN0aWNzRGVsZXRlQ29va2llc0Zvckhvc3QoaG9zdE5hbWUsIFdLQm9vbGVhbkdldFZhbHVl
KGluY2x1ZGVIdHRwT25seUNvb2tpZXMpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJT
ZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAiKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBl
SUQobWVzc2FnZUJvZHkpID09IFdLRG91YmxlR2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RvdWJs
ZVJlZiBzZWNvbmRzID0gc3RhdGljX2Nhc3Q8V0tEb3VibGVSZWY+KG1lc3NhZ2VCb2R5KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBlZDc4ZDIwNDBhODZiZjM3MzQ0Y2JlMzAwOTk0ODA2M2JmODM3ZTkyLi4xODNjNzFiNGRl
ZDIyYmU3ZGUzYmY5Yzc5OGQ4YmEzZjA3NTk4ODRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTktMDMtMDYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHB1cmdlIG9ubHkg
c2NyaXB0LWFjY2Vzc2libGUgY29va2llcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODU3MDEz
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0
dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZGVsZXRlLXNj
cmlwdC1hY2Nlc3NpYmxlLWNvb2tpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZGVsZXRlLXNjcmlwdC1hY2Nlc3NpYmxl
LWNvb2tpZXMuaHRtbDogQWRkZWQuCisKIDIwMTktMDMtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRnJlcXVlbnQgMSBzZWNvbmQgSVBD
IGRlYWRsb2NrcyB3aGVuIHNob3dpbmcgYSBwYXN0ZSBjYWxsb3V0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29va2ll
LnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAt
b25seS1jb29raWUucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxMGU2ZmUxZDU0YzYyYTEwYmFhODA0NWYwZjQ5
YWU0YWIzNGNlZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nv
b2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29va2llLnBocApAQCAtMCwwICsxLDEwIEBA
Cis8P3BocAoraWYgKCRfR0VUWydjb29raWVOYW1lJ10pIHsKKyAgc2V0Y29va2llKCRfR0VUWydj
b29raWVOYW1lJ10sICIxIiwgdGltZSgpICsgODY0MDAsICIvIiwgIiIsIEZBTFNFLCBUUlVFKTsK
KyAgZWNobyAiWWVhaCI7Cit9IGVsc2UgeworICBoZWFkZXIoIkhUVFAvMS4wIDIwMCBPSyIpOwor
ICBlY2hvICJGQUlMRUQ6IE5vIGNvb2tpZU5hbWUgcGFyYW1ldGVyIGZvdW5kLlxuIjsKK30KKwor
Pz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9kZWxldGUtc2NyaXB0LWFjY2Vzc2libGUtY29va2llcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZGVsZXRlLXNjcmlwdC1h
Y2Nlc3NpYmxlLWNvb2tpZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzNDA3ZGNmM2VkZWVi
NjBlYzk2NDkyODUwMTQ1MWEwNTE5Mjg0NzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZGVsZXRlLXNjcmlwdC1hY2Nlc3Np
YmxlLWNvb2tpZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK0NoZWNrIHRoYXQgb25s
eSBIdHRwT25seSBjb29raWVzIHJlbWFpbiBpZiBhbGwgc2NyaXB0LWFjY2Vzc2libGUgY29va2ll
cyBhcmUgZGVsZXRlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgQmVm
b3JlIHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3Rz
LgorUEFTUyBCZWZvcmUgc2NyaXB0LWFjY2Vzc2libGUgZGVsZXRpb246IEh0dHBPbmx5IGNvb2tp
ZSBleGlzdHMuCitQQVNTIEJlZm9yZSBzY3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjogUmVndWxh
ciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgorUEFTUyBBZnRlciBzY3JpcHQtYWNjZXNzaWJs
ZSBkZWxldGlvbjogIEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitQQVNTIEFmdGVyIGZ1bGwgZGVs
ZXRpb246ICAgICAgICAgICAgICAgQWxsIGNvb2tpZXMgYXJlIGdvbmUuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RlbGV0ZS1zY3JpcHQtYWNj
ZXNzaWJsZS1jb29raWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvZGVsZXRlLXNjcmlwdC1hY2Nlc3NpYmxlLWNvb2tpZXMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NWZlYWRhZGIwN2MwZWRlNWViNDYwNzRmZWI3YTQ4ZThiMWZlOWY2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Rl
bGV0ZS1zY3JpcHQtYWNjZXNzaWJsZS1jb29raWVzLmh0bWwKQEAgLTAsMCArMSw3MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJDaGVjayB0aGF0IG9ubHkgSHR0
cE9ubHkgY29va2llcyByZW1haW4gaWYgYWxsIHNjcmlwdC1hY2Nlc3NpYmxlIGNvb2tpZXMgYXJl
IGRlbGV0ZWQuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBodHRw
T25seUNvb2tpZU5hbWUgPSAiaHR0cC1vbmx5LWNvb2tpZSI7CisgICAgY29uc3Qgc2VydmVyU2lk
ZUNvb2tpZU5hbWUgPSAic2VydmVyLXNpZGUtY29va2llIjsKKyAgICBjb25zdCBjbGllbnRTaWRl
Q29va2llTmFtZSA9ICJjbGllbnQtc2lkZS1jb29raWUiOworCisgICAgZnVuY3Rpb24gc29ydFN0
cmluZ0FycmF5KGEsIGIpIHsKKyAgICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTsKKyAgICAgICAg
YiA9IGIudG9Mb3dlckNhc2UoKTsKKworICAgICAgICByZXR1cm4gYSA+IGIgPyAxIDogYiA+IGEg
PyAtMSA6IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0ZXJTY3Jp
cHRBY2Nlc3NpYmxlRGVsZXRpb24pIHsKKyAgICAgICAgbGV0IHVuc29ydGVkVGVzdFBhc3NlZE1l
c3NhZ2VzID0gW107CisgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMo
KTsKKyAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
KGlzQWZ0ZXJTY3JpcHRBY2Nlc3NpYmxlRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsg
IiBzY3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjogTm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAg
ICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29v
a2llLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGh0dHBPbmx5Q29va2llTmFtZToKKyAg
ICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRl
clNjcmlwdEFjY2Vzc2libGVEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHNjcmlw
dC1hY2Nlc3NpYmxlIGRlbGV0aW9uOiAiICsgKGlzQWZ0ZXJTY3JpcHRBY2Nlc3NpYmxlRGVsZXRp
b24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2ZXJTaWRlQ29va2llTmFt
ZToKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzQWZ0ZXJTY3JpcHRBY2Nlc3NpYmxlRGVsZXRp
b24pCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJBZnRlciBzY3JpcHQtYWNj
ZXNzaWJsZSBkZWxldGlvbjogIFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgdW5zb3J0
ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgiQmVmb3JlIHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0
aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgY2xpZW50U2lkZUNvb2tpZU5hbWU6
CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0FmdGVyU2NyaXB0QWNjZXNzaWJsZURlbGV0aW9u
KQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiQWZ0ZXIgc2NyaXB0LWFjY2Vz
c2libGUgZGVsZXRpb246ICBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNz
ZWRNZXNzYWdlcy5wdXNoKCJCZWZvcmUgc2NyaXB0LWFjY2Vzc2libGUgZGVsZXRpb246IENsaWVu
dC1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVzc2Fn
ZXMgPSB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7Cisg
ICAgICAgIGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNz
YWdlcykKKyAgICAgICAgICAgIHRlc3RQYXNzZWQodGVzdFBhc3NlZE1lc3NhZ2UpOworICAgIH0K
KworICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGlmICghdGVzdFJ1bm5l
ciB8fCAhaW50ZXJuYWxzKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyB0ZXN0UnVubmVy
IG9yIG5vIGludGVybmFscy4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29r
aWUucGhwP2Nvb2tpZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFsczog
InNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNl
cy9zZXRDb29raWVzLmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZlclNpZGVD
b29raWVOYW1lICsgIj0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9
KTsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUgKyAiPTEi
OworICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRp
c3RpY3NEZWxldGVDb29raWVzRm9ySG9zdCgiaHR0cDovLzEyNy4wLjAuMSIsIGZhbHNlKTsKKyAg
ICAgICAgY2hlY2tDb29raWVzKHRydWUpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NE
ZWxldGVDb29raWVzRm9ySG9zdCgiaHR0cDovLzEyNy4wLjAuMSIsIHRydWUpOworICAgICAgICBs
ZXQgY29va2llc0xlZnQgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpLmxlbmd0aDsKKyAgICAgICAg
aWYgKGNvb2tpZXNMZWZ0ID09PSAwKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQWZ0ZXIgZnVs
bCBkZWxldGlvbjogICAgICAgICAgICAgICBBbGwgY29va2llcyBhcmUgZ29uZS4iKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiQWZ0ZXIgZnVsbCBkZWxldGlvbjogICAg
ICAgICAgICAgICIgKyBjb29raWVzTGVmdCArICIgY29va2llKHMpIGxlZnQuIik7CisgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363833</attachid>
            <date>2019-03-06 19:10:49 -0800</date>
            <delta_ts>2019-03-07 09:22:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195383-20190306191048.patch</filename>
            <type>text/plain</type>
            <size>46790</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZkNWQxNmQwNDRhNTk5
ZWVkYzZjNjJkNmMyOGNmNTYwNTc2Y2QyMi4uN2Y5NjgzODQ4N2MyZDY5ZDgyMTgxNjg4MTcyMzRj
Nzk5M2M1MzljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTAzLTA2ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogTWFrZSBpdCBwb3NzaWJsZSB0byBwdXJnZSBvbmx5IHNjcmlwdC1hY2Nlc3Np
YmxlIGNvb2tpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTM4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg1NzAxMzY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RlbGV0ZS1zY3JpcHQtYWNjZXNzaWJsZS1jb29raWVzLmh0
bWwKKworICAgICAgICBUaGlzIHBhdGNoIHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIHB1cmdlIGFs
bCBzY3JpcHQtYWNjZXNzaWJsZSBjb29raWVzIHdoaWxlIGxlYXZpbmcKKyAgICAgICAgSHR0cE9u
bHkgY29va2llcyBpbiBwbGFjZS4KKworICAgICAgICAqIGxvYWRlci9Db29raWVKYXIuaDoKKyAg
ICAgICAgICAgIEFkZGVkIGJvb2xlYW4gZW51bSBJbmNsdWRlSHR0cE9ubHlDb29raWVzIGZvciB1
c2UgYXMgZnVuY3Rpb24gcGFyYW1ldGVyLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyk6CisgICAgICAgICAgICBT
dXBwb3J0IGZvciB0aGUgbmV3IEluY2x1ZGVIdHRwT25seUNvb2tpZXMgZmxhZy4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZXMpOgorICAgICAgICAgICAgU3R1YmJlZCBvdXQgdGhlIG5ldyBmdW5jdGlvbiBhbmQg
YWRkZWQgYSBGSVhNRSBjb21tZW50LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyk6CisgICAgICAgICAgICBT
dHViYmVkIG91dCB0aGUgbmV3IGZ1bmN0aW9uIGFuZCBhZGRlZCBhIEZJWE1FIGNvbW1lbnQuCisK
IDIwMTktMDMtMDYgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBDb25z
aWRlciBzdXBwb3J0aW5nIHRoZSBgcmVmZXJyZXJwb2xpY3lgIGF0dHJpYnV0ZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggNzhjZTVmM2FmNmE0ZGYzOGY3ZmY4OTJmYTUyMDEyOWI5NDc0NTNjOS4uMWE4NzQ3NTQzOTJh
MDE3NmEwNzM3M2EwZTg0YzVmNWMxYTgyMGI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAor
MjAxOS0wMy0wNiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IE1ha2UgaXQgcG9zc2libGUgdG8gcHVyZ2Ugb25s
eSBzY3JpcHQtYWNjZXNzaWJsZSBjb29raWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUzODMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NTcw
MTM2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gcHVyZ2UgYWxsIHNjcmlwdC1hY2Nlc3Np
YmxlIGNvb2tpZXMgd2hpbGUgbGVhdmluZworICAgICAgICBIdHRwT25seSBjb29raWVzIGluIHBs
YWNlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGVsZXRlV2Vic2l0ZURhdGFG
b3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKToKKyAgICAgICAg
ICAgIFN1cHBvcnQgZm9yIGEgbmV3IGJvb2xlYW4gZmxhZyBvbiB3aGV0aGVyIG9yIG5vdCB0byBp
bmNsdWRlIEh0dHBPbmx5IENvb2tpZXMuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVu
dERhdGFTdG9yZXMpOgorICAgICAgICAgICAgU3VwcG9ydCBmb3IgYSBuZXcgYm9vbGVhbiBmbGFn
IG9uIHdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgSHR0cE9ubHkgQ29va2llcy4KKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAg
ICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpkZWxldGVXZWJzaXRlRGF0YUZvclJl
Z2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMpOgorICAgICAgICAgICAg
U3VwcG9ydCBmb3IgYSBuZXcgYm9vbGVhbiBmbGFnIG9uIHdoZXRoZXIgb3Igbm90IHRvIGluY2x1
ZGUgSHR0cE9ubHkgQ29va2llcy4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNG
b3JUZXN0aW5nKToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVDb29raWVzRm9yVGVzdGluZyk6CisgICAgICAgICAg
ICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0
ZUNvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwogMjAx
OS0wMy0wNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBGcmVxdWVudCAxIHNlY29uZCBJUEMgZGVhZGxvY2tzIHdoZW4gc2hvd2luZyBhIHBh
c3RlIGNhbGxvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAppbmRleCBkNGI1MGU5MzY2Mzg4
MDZiZTFkMmM1MjE4YTc4N2JiZGU5ZjE3YzUxLi4wZGIwN2M2ZDEyZThkOWJkYWZjM2MwYWJhNmVl
NzFhODliYzE5OTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCkBAIC0zNSw2ICszNSw3
IEBAIGNsYXNzIFNlc3Npb25JRDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBJ
bmNsdWRlU2VjdXJlQ29va2llcyA6IGJvb2wgeyBObywgWWVzIH07CitlbnVtIGNsYXNzIEluY2x1
ZGVIdHRwT25seUNvb2tpZXMgOiBib29sIHsgTm8sIFllcyB9OwogZW51bSBjbGFzcyBTZWN1cmVD
b29raWVzQWNjZXNzZWQgOiBib29sIHsgTm8sIFllcyB9OwogCiBjbGFzcyBEb2N1bWVudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oCmluZGV4IDhkZTQyNDkyNDc0ZTUyMDYxOTQ0NTgzNjJiMTg2MDJjMzVkMTRhODgu
LjAzMDIwMGRmOWM0NGZkNGJjZjJmNTg3MmRkZGZkYTU2MzI1OTg1MGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aApAQCAtNzEsNiArNzEsNyBAQCBzdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk7
CiBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwogCiBlbnVtIGNsYXNzIEluY2x1ZGVTZWN1cmVDb29raWVz
IDogYm9vbDsKK2VudW0gY2xhc3MgSW5jbHVkZUh0dHBPbmx5Q29va2llcyA6IGJvb2w7CiAKIGNs
YXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0
d29ya1N0b3JhZ2VTZXNzaW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMzAsNiAr
MTMxLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQWxsQ29va2ll
cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2UoV2FsbFRpbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCAzMThmNTNlMTc0NzJiZWRmZDJhNDA3
ZjBjYWVkZTE2MWU4ZjljOGZkLi42Mzc0MDM1MmM0YTYyN2VkNmZlZWQ2OWZmZWIwOWQxOTdhODg3
NGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTQ5OSw2ICs0
OTksMTEgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMoKQog
fQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzKQoreworICAgIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZXMoaG9zdG5hbWVzLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzOjpZZXMpOworfQor
Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzIGlu
Y2x1ZGVIdHRwT25seUNvb2tpZXMpCiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogCkBAIC01MTEsNyArNTE2
LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFt
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3QKIAogICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0
b3I8UmV0YWluUHRyPE5TSFRUUENvb2tpZT4+PiBjb29raWVzQnlEb21haW47CiAgICAgZm9yIChO
U0hUVFBDb29raWUgKmNvb2tpZSBpbiBjb29raWVzKSB7Ci0gICAgICAgIGlmICghY29va2llLmRv
bWFpbikKKyAgICAgICAgaWYgKCFjb29raWUuZG9tYWluIHx8IChpbmNsdWRlSHR0cE9ubHlDb29r
aWVzID09IEluY2x1ZGVIdHRwT25seUNvb2tpZXM6Ok5vICYmIGNvb2tpZS5pc0hUVFBPbmx5KSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBjb29raWVzQnlEb21haW4uZW5zdXJlKGNv
b2tpZS5kb21haW4sIFtdIHsKICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8UmV0YWluUHRyPE5T
SFRUUENvb2tpZT4+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKaW5kZXgg
MWFjNGUwMmI3Y2IwNzUyZGYyMmU2Y2JiMzg5NDRmMWFjZjg2MTI5Mi4uODk0Yzg2YWZlOGY3NDBh
ZWRkMjhhZDk3MjcyNzUxZWViYTM4NDMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
dXJsLmNwcApAQCAtMTI1LDYgKzEyNSwxMyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgc2luY2UpCiAgICAgY29va2ll
U3RvcmFnZSgpLmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKCp0aGlzLCBzaW5jZSk7CiB9
CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMg
aW5jbHVkZUh0dHBPbmx5Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1l
bnRlZC4KKyAgICBVTlVTRURfUEFSQU0oaW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CisgICAgZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lcyhob3N0bmFtZXMpOworfQorCiB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgY29va2llSG9zdE5hbWVzKQogewogICAgIGNvb2tpZVN0b3JhZ2UoKS5kZWxldGVDb29raWVz
Rm9ySG9zdG5hbWVzKCp0aGlzLCBjb29raWVIb3N0TmFtZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdl
U2Vzc2lvblNvdXAuY3BwCmluZGV4IDNkYWUxYjA0NTFjZTUxM2Y3MWM0NTE3YjFiZjZhN2JkM2Vk
NDAwNmYuLjFmNzU4NzdhODJiMzE4Mzk0NzYxMTIzYmU2ZjU4NWE0NzYxY2Y4OTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTM4Nyw2ICszODcsMTMgQEAgdm9pZCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdhbGxU
aW1lIHRpbWVzdGFtcCkKICAgICAgICAgZ193YXJuaW5nKCJEZWxldGluZyBjb29raWVzIG1vZGlm
aWVkIHNpbmNlIGEgZ2l2ZW4gdGltZSBzcGFuIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Iik7CiB9CiAK
K3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5j
bHVkZUh0dHBPbmx5Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRl
ZC4KKyAgICBVTlVTRURfUEFSQU0oaW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CisgICAgZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lcyhob3N0bmFtZXMpOworfQorCiB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
aG9zdG5hbWVzKQogewogICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tpZVN0b3Jh
Z2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXgg
MWY5MjMyNDU1ZjY1ZWM4Njg4NDM3YWMxNzgzMmI4MGJkMGJmNzM0Zi4uMDRjNDc5MGY2OTIwNmQy
M2MxZjJhZWFmN2JhMjBlOWZkZGQwNDY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5Lmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2ll
SmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXllZENvZGluZy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmg+CkBAIC0xNzUsNyArMTc2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgd2Vha1RoaXMtPm1f
c3RvcmUuZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3Rl
bnREYXRhU3RvcmVzKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0
YVR5cGVzKCksIFdURk1vdmUocHJldmFsZW50UmVzb3VyY2VEb21haW5zKSwgc2hvdWxkTm90aWZ5
UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHdvcmtRdWV1ZSA9IHdvcmtRdWV1
ZS5jb3B5UmVmKCldKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0
aERlbGV0ZWRXZWJzaXRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAgIHdlYWtUaGlzLT5tX3N0b3Jl
LmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0
YVN0b3JlcyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUeXBl
cygpLCBXVEZNb3ZlKHByZXZhbGVudFJlc291cmNlRG9tYWlucyksIHNob3VsZE5vdGlmeVBhZ2Vz
V2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIEluY2x1ZGVIdHRwT25seUNvb2tpZXM6Olllcywg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhp
cyksIHdvcmtRdWV1ZSA9IHdvcmtRdWV1ZS5jb3B5UmVmKCldKGNvbnN0IEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+JiBkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICB3b3JrUXVldWUtPmRpc3BhdGNoKFtkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRl
RGF0YSA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyld
ICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAgICAg
ICAgICAgICAgICAgY2FsbGJhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggMzcxM2Y5YjE3MWMxYjUxOTgwOTc3MmYxYjA5MjFiMTUy
N2I3OTE2YS4uNjg5NDlkZGUyODQ3OWY4MDRiMWZhOTMwZDRmNWRmZWEzNmJkNGQ3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTQ1LDYg
KzQ1LDcgQEAKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCIKICNp
bmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db29r
aWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgpAQCAtOTg4LDEyICs5ODksMTIgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQcm9jZXNzZWQoKQogICAgICAgICBtX25ldHdvcmtTZXNzaW9uLT5ub3RpZnlSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVy
c2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBW
ZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3Rl
bnREYXRhU3RvcmVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgVmVjdG9y
PFJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgSW5j
bHVkZUh0dHBPbmx5Q29va2llcyBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKICAgICBp
ZiAobV9uZXR3b3JrU2Vzc2lvbikgewotICAgICAgICBtX25ldHdvcmtTZXNzaW9uLT5kZWxldGVX
ZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMo
ZGF0YVR5cGVzLCBXVEZNb3ZlKGRvbWFpbnMpLCBzaG91bGROb3RpZnlQYWdlLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIG1fbmV0d29ya1Nlc3Npb24tPmRlbGV0ZVdlYnNp
dGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhkYXRh
VHlwZXMsIFdURk1vdmUoZG9tYWlucyksIHNob3VsZE5vdGlmeVBhZ2UsIGluY2x1ZGVIdHRwT25s
eUNvb2tpZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmlu
ZGV4IDBhMWEzMDNjZGY4NjUzMjZkMjgxYzkxNWJiZjQyZGZkYzVmN2VlNTcuLjZhNTY1MGQ4YzM3
YzY1MTBiYzJiNWFiMjQzYjUxZTVlOTU3NWM2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJvb2w7CitlbnVtIGNsYXNzIEluY2x1ZGVI
dHRwT25seUNvb2tpZXMgOiBib29sOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEwMyw3
ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3Qg
U3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFdhbGxUaW1lIGxhc3RT
ZWVuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgbG9nU3VicmVzb3Vy
Y2VSZWRpcmVjdChjb25zdCBSZWRpcmVjdGVkRnJvbURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0ZWRU
b0RvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclVz
ZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7Ci0gICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlu
c0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwor
ICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNp
c3RlbnREYXRhU3RvcmVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBWZWN0b3I8UmVnaXN0
cmFibGVEb21haW4+JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgV2ViQ29yZTo6SW5jbHVkZUh0
dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJz
aXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYm
KTsKICAgICBib29sIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNv
bnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CiAgICAgdm9p
ZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMWU2NDJlYWM3MDgyZjBhNjYxYzM0ZmU4Yjg2
OWQ3MTkxOGUwZWZkMy4uMWEzYTIzOTI3MTY0Mjk0OTk3NmY4Mjk4YWJlZTAxYjgzYTk3NTcyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
QEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5
cGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RE5TLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CkBAIC0xNDY2LDcgKzE0
NjcsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4gZmlsdGVyRm9yUmVnaXN0
cmFibGVEb21haW5zKGNvbnN0IFZlY3RvcjxSZWdpcwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21h
aW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxSZWdpc3Ry
YWJsZURvbWFpbj4mJiBkb21haW5zLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVn
aXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zLCBib29sIHNob3VsZE5vdGlmeVBhZ2Us
IEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBm
ZXRjaE9wdGlvbnMgPSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpEb05vdENyZWF0ZVByb2Nlc3Nl
czsKIApAQCAtMTUxMyw3ICsxNTE0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vi
c2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3QKICAgICAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpIHsKICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMod2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CiAgICAg
ICAgICAgICBob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFi
bGVEb21haW5zKGRvbWFpbnMsIHdlYnNpdGVEYXRhU3RvcmUuaG9zdE5hbWVzV2l0aENvb2tpZXMp
OwotICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9z
dG5hbWVzKGhvc3RuYW1lc1dpdGhDb29raWVzVG9EZWxldGUpOworICAgICAgICAgICAgbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhvc3RuYW1lc1dpdGhD
b29raWVzVG9EZWxldGUsIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC0xNTk4LDYgKzE1OTksMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vi
c2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3QKICAgICB9
CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1
ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBjb29raWVUeXBlID0g
V2Vic2l0ZURhdGFUeXBlOjpDb29raWVzOworCisgICAgZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdp
c3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKHNlc3Npb25JRCwgY29va2ll
VHlwZSwgeyBkb21haW4gfSwgdHJ1ZSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcyA/IEluY2x1ZGVI
dHRwT25seUNvb2tpZXM6OlllcyA6IEluY2x1ZGVIdHRwT25seUNvb2tpZXM6Ok5vLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zRGVsZXRlZEZvcikgbXV0YWJsZSB7CisgICAgICAg
IFVOVVNFRF9QQVJBTShkb21haW5zRGVsZXRlZEZvcik7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgfSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9t
YWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlv
bj4gZmV0Y2hPcHRpb25zID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6RG9Ob3RDcmVhdGVQcm9j
ZXNzZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
aW5kZXggYzRlNzIwZWNmNzMzYzdhYTUzZGM1NzAyY2JmY2M2MDI2YzZhYTdmNC4uMGVjNTAwZWE4
NTM3ODAwODNlYWNlNzNjYTRhMTA4ODJhODg5MmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtNzIsNiArNzIsNyBAQCBjbGFzcyBEb3du
bG9hZElEOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFNXU2VydmVyOworZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlDb29raWVzIDog
Ym9vbDsKIGVudW0gY2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgOiBib29sOwogc3RydWN0
IENsaWVudE9yaWdpbjsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKQEAgLTIwMiw3
ICsyMDMsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IGNsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkZWxldGVXZWJz
aXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoUEFM
OjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBWZWN0b3I8UmVnaXN0cmFi
bGVEb21haW4+JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKKyAgICB2b2lkIGRlbGV0
ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3Jl
cyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFZlY3RvcjxSZWdp
c3RyYWJsZURvbWFpbj4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBXZWJDb3JlOjpJbmNsdWRl
SHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVn
aXN0cmFibGVEb21haW4+Jik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNv
b2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkdW1wUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2ll
c0ZvcihQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9t
YWluc1RvQmxvY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBpc0dy
YW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA4Y2Q0MDIw
NGRlZmRjMTdiOTk5MDJiOTNmM2I5ODQ3NWI5ODJhYzI3Li40MTMwZDhlNzI1YWVlNWZlY2FmY2Mw
ZWUyZGFkZWE1MmQ2ODIwMTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEzNCw2ICsxMzQsNyBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+ICgpIEFzeW5jCiAgICAgQ29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZy
b21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvRG9tYWluLCB1aW50NjRfdCBw
YWdlSUQpCiAgICAgUmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIERlbGV0ZUNvb2tp
ZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFzeW5j
CiAjZW5kaWYKIAogICAgIFNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGNvbnRyb2xsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCAzMjgxMzBkNWUzOTNkZjc2
MWU0MzRjZmVlZWZhNDM0Nzk0ZWFmYzFkLi5kODU0MTEzM2JlZjllOTQwOWMwNzAzNzVlOWIxYzU3
Y2RkNGYzMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5o
IgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQWRDbGlja0F0dHJpYnV0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVK
YXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCkBAIC0xMTcsMTYgKzExOCwxNiBAQCB2b2lkIE5ldHdvcmtTZXNzaW9u
Ojpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJl
dmFsZQogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5vdGlmeVJlc291cmNlTG9hZFN0YXRp
c3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh0b3RhbFByZXZhbGVudFJlc291cmNlcywgdG90YWxQcmV2
YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB0b3AzU3ViZnJhbWVVbmRlclRvcEZy
YW1lT3JpZ2lucyksIDApOwogfQogCi12b2lkIE5ldHdvcmtTZXNzaW9uOjpkZWxldGVXZWJzaXRl
RGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
JiYgZG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtTZXNzaW9uOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
ZGF0YVR5cGVzLCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucywgYm9vbCBzaG91
bGROb3RpZnlQYWdlLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzIGluY2x1ZGVIdHRwT25seUNvb2tp
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFp
bj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5kZWxl
dGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9y
ZXMobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgV1RGTW92ZShkb21haW5zKSwgc2hvdWxkTm90aWZ5
UGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0
YVN0b3JlcyhtX3Nlc3Npb25JRCwgZGF0YVR5cGVzLCBXVEZNb3ZlKGRvbWFpbnMpLCBzaG91bGRO
b3RpZnlQYWdlLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhX
ZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGJvb2wgc2hv
dWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX25ldHdvcmtQcm9jZXNz
LT5yZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEobV9zZXNzaW9uSUQsIGRhdGFUeXBl
cywgc2hvdWxkTm90aWZ5UGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQotI2Vu
ZGlmCisjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBO
ZXR3b3JrU2Vzc2lvbjo6c3RvcmVBZENsaWNrQXR0cmlidXRpb24oV2ViQ29yZTo6QWRDbGlja0F0
dHJpYnV0aW9uJiYgYWRDbGlja0F0dHJpYnV0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDA4NTJkNmI2NWY0YzVmMzNhMGU5MjE3
YzJmOTg0NjU1NjY4MjQzNzUuLjg3MjNkNjM0N2NmZjJjZTA2N2E5ODVkNTdlMDA5ZWQ5ODYyMTQ0
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgK
QEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFkQ2xpY2tBdHRy
aWJ1dGlvbjsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK2VudW0gY2xhc3MgSW5jbHVk
ZUh0dHBPbmx5Q29va2llcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJvb2w7
CiB9CiAKQEAgLTcyLDcgKzczLDcgQEAgcHVibGljOgogICAgIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZSogcmVzb3VyY2VMb2FkU3RhdGlzdGljcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5nZXQoKTsgfQogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUHJvY2Vzc2VkKCk7Ci0gICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgYm9vbCBzaG91bGROb3Rp
ZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+Jik+JiYpOworICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdp
c3RyYWJsZURvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYsIGJvb2wgc2hv
dWxkTm90aWZ5UGFnZSwgV2ViQ29yZTo6SW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYp
PiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKICAg
ICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdW5zaWduZWQgdmFsdWUsIHVuc2lnbmVkIHNp
Z25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKICAgICB2b2lkIG5vdGlm
eVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQodW5zaWduZWQgdG90YWxQcmV2YWxlbnRS
ZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFj
dGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5jcHAKaW5kZXggYzBlYmI4NzI2N2JiNzIxYWJjZTUzYzUwYmFlNmYzZmRjNmM5OTU3Zi4uNDFl
NWE0ZTdhMzU1MzkxYjZhMjBhODVlMzNiZmNjMjA0ZWUxZjM2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBA
IC00MDgsNiArNDA4LDE3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFy
VGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvCiAgICAgfSk7CiB9CiAK
K3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5n
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJv
b2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2spCit7
CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGVsZXRlQ29va2llc0ZvclRlc3Rp
bmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBpbmNsdWRlSHR0
cE9ubHlDb29raWVzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICAgICAgY2FsbGJhY2soY29u
dGV4dCk7CisgICAgfSk7CisjZWxzZQorICAgIGNhbGxiYWNrKGNvbnRleHQpOworI2VuZGlmCit9
CisKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5j
dGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaAppbmRleCA5M2U1MjE4NWI1YmQ3NjQ1MjE2NTIyNDYxZTU4ODc0YzMxZTg5NzFlLi41
Yjg4YjY3NTBmY2E0YmE3MDRiZTRjM2NmZGVlNTY1OGZiYWVhYTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAt
OTEsNiArOTEsOCBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaQogV0tfRVhQT1JUIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVN
b2RpZmllZFNpbmNlSG91cnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdW5z
aWduZWQgaG91cnMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3ND
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzRnVuY3Rpb24g
Y2FsbGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0Ns
ZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRl
eHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhy
b3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdo
V2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spOwordHlwZWRlZiB2b2lkICgqV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24p
KHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29r
aWVzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29v
a2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjayk7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbikodm9pZCogZnVu
Y3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NDYWNoZU1heEFnZUNhcChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBk
b3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc0NhY2hlTWF4QWdlQ2FwRnVuY3Rpb24pOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbikodm9pZCogZnVu
Y3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGExZjkxNzIzOWI4NTYwMGI3MjhjMmRm
MDViMDcxYThlNGRjMjliOTAuLmZmZWIwYzFiNzAyOWM0ZjkwMjE4ZGUyNTBjYjMwMzNlMmMzMmIz
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtOTQxLDYgKzk0MSwxNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KFBBTDo6UwogICAgIAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OlJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKHNl
c3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KKwordm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGJvb2wgaW5jbHVkZUh0dHBP
bmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKHNl
c3Npb25JRCwgZG9tYWluLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NXaWxsU3VzcGVuZElt
bWluZW50bHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAwY2ZhMWYwMTAyYzYyYjIxYzhhZGM1NzA4NmI4NzE5
MDA4NTA4OTk2Li41NmNmM2ZhYjgwZGY5MGEyZmM0NGNiNGNkNTlmNGY0NGJhMDhjMDJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtMTQ1LDYgKzE0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZENs
YXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklELCBi
b29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0Rl
Y29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NS
ZWFkeVRvU3VzcGVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBlZGQ3NjYzOGNiOGExYjM5YjZh
ZTdjMDJiYmRlNGViOGI1MzFjNDRkLi44ZjhmMzlmNzRjMGIzMjIxZDk2YWQ4MWJjMjMzYjQ0OWEz
ZGY1MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTc2NSw2ICsxNzY1LDE2IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6cmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRl
c3RpbmcoQ29tcGxldGlvCiAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cmVzZXRDcm9zc1Np
dGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFtjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIH0K
IH0KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhjb25z
dCBVUkwmIHVybCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygp
KSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3
b3JrUHJvY2VzcygpKQorICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmRlbGV0ZUNvb2tpZXNG
b3JUZXN0aW5nKG1fc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9y
LmNvcHlSZWYoKV0geyB9KTsKKyAgICB9Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBlMzc1ZDE1NWNj
NjViNGExOTczZTQzM2FiZWFiMDQyMzJiYjE5ZjdhLi5mNjE0OWRiOGIxY2I0MmQyMzVkMDFjOTcy
ZjlkNzljODVhZDNkNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xNjgsNiArMTY4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3Ry
aW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJv
b2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbihjb25zdCBVUkwmIHN1YmZyYW1l
LCBjb25zdCBVUkwmIHRvcEZyYW1lKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRo
TGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBkZWxldGVDb29raWVzRm9yVGVzdGluZyhjb25zdCBVUkwmLCBib29sIGluY2x1ZGVI
dHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKICAg
ICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2Fw
Rm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ExNTVlODI5
MjZhZjE3NzQxOWVhMzUwNDRiMWYxOGU3MTUwZDZkYy4uNjQ1ZTc1NTAxZDAzODRhYjEyNWU0NmFk
MmRiYWJiMzI0NzgxZTk4NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTAzLTA2ICBKb2huIFdpbGFuZGVyICA8
d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczog
TWFrZSBpdCBwb3NzaWJsZSB0byBwdXJnZSBvbmx5IHNjcmlwdC1hY2Nlc3NpYmxlIGNvb2tpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM4Mwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg1NzAxMzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRlc3QgaW5mcmFzdHJ1
Y3R1cmUgdG8gcHVyZ2Ugb25seSBzY3JpcHQtYWNjZXNzaWJsZSBjb29raWVzLAorICAgICAgICBp
bmNsdWRpbmcgYSBuZXcgdGVzdFJ1bm5lciBmdW5jdGlvbiBjYWxsZWQgc3RhdGlzdGljc0RlbGV0
ZUNvb2tpZXNGb3JIb3N0KCkuZ2l0IGEKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVz
dFJ1bm5lcjo6c3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9ySG9zdCk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTktMDMtMDYg
IFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBDb25zaWRlciBzdXBwb3J0
aW5nIHRoZSBgcmVmZXJyZXJwb2xpY3lgIGF0dHJpYnV0ZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCmluZGV4IDBlNzlkODBiNjAxZjMyOTVlOGI4MTViYTEwMDhiOTk3ZDFiODBjNmYuLjljZjQ0
OTNlNjBlNzg2MzM4YjEzZWFmMGFiNjUwN2M0MzVjMzEzNzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbApAQCAtMzE1LDYgKzMxNSw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2
b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKG9iamVjdCBjYWxs
YmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBsb25nIGhvdXJzLCBvYmplY3QgY2FsbGJhY2sp
OwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChvYmpl
Y3QgY2FsbGJhY2spOworICAgIHZvaWQgc3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KERP
TVN0cmluZyBob3N0TmFtZSwgYm9vbGVhbiBpbmNsdWRlSHR0cE9ubHlDb29raWVzKTsKICAgICB2
b2lkIHNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9p
ZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShvYmplY3QgY29tcGxldGlvbkhhbmRs
ZXIpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAppbmRleCBkNDYyMjQ2Y2RiOWMxOGY3N2NlNDVkNzMxMzcyODA0YTY1MWRk
MzAyLi44MjRhNWY2ODQzMTY5MzcwMzRlODZjMTQ5MDMxNzdiYmNjYjZmZWQ2IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
QEAgLTIwMDcsNiArMjAwNywzMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDbGVhclRo
cm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAgICBXS0J1bmRs
ZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRs
ZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiB9CiAKK3ZvaWQgVGVz
dFJ1bm5lcjo6c3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3RO
YW1lLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpCit7CisgICAgVmVjdG9yPFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPj4ga2V5czsKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVm
Pj4gdmFsdWVzOworCisgICAga2V5cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiSG9zdE5hbWUiKSB9KTsKKyAgICB2YWx1ZXMuYXBwZW5kKHsgQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoaG9zdE5hbWUpIH0pOworCisgICAga2V5cy5h
cHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSW5jbHVkZUh0
dHBPbmx5Q29va2llcyIpIH0pOworICAgIHZhbHVlcy5hcHBlbmQoeyBBZG9wdFdLLCBXS0Jvb2xl
YW5DcmVhdGUoaW5jbHVkZUh0dHBPbmx5Q29va2llcykgfSk7CisKKyAgICBWZWN0b3I8V0tTdHJp
bmdSZWY+IHJhd0tleXM7CisgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3VmFsdWVzOworICAgIHJh
d0tleXMucmVzaXplKGtleXMuc2l6ZSgpKTsKKyAgICByYXdWYWx1ZXMucmVzaXplKHZhbHVlcy5z
aXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIHJhd0tleXNbaV0gPSBrZXlzW2ldLmdldCgpOworICAgICAgICByYXdWYWx1ZXNb
aV0gPSB2YWx1ZXNbaV0uZ2V0KCk7CisgICAgfQorCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJT
dGF0aXN0aWNzRGVsZXRlQ29va2llc0Zvckhvc3QiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tEaWN0
aW9uYXJ5UmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0RpY3Rpb25hcnlDcmVhdGUocmF3S2V5
cy5kYXRhKCksIHJhd1ZhbHVlcy5kYXRhKCksIHJhd0tleXMuc2l6ZSgpKSk7CisgICAgV0tCdW5k
bGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5k
bGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30K
Kwogdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNl
Y29uZHMpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0
V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNzQ2FjaGVNYXhB
Z2VDYXAiKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oCmluZGV4IDcxM2E5NDMzNjM5MDVmMGM5Yjc2MGQ1NzRhYzhmMzI0ZDhkNTE2
ZmMuLjZkMTE2NDhiYmM5NDZmYTg2NjU2NDA3ZmYzMTIyNzQ3MWJiMzMyNDggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00
MjYsNiArNDI2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50U3RvcmUoSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0
aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNp
Z25lZCBob3VycywgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xl
YXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAgIHZv
aWQgc3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBi
b29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxDbGVh
clRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFjaygpOwogICAgIHZvaWQgc2V0U3RhdGlz
dGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NS
ZXNldFRvQ29uc2lzdGVudFN0YXRlKEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA0NTU4YmEyY2Y5NWYz
NWVjOGI2MDJjOWQ3YWQ0NjI5Y2QxZjRlMTIzLi41NTRlMDNhNmZhYjgzZDQzYTI3OGE1M2Y3NjRl
YTQ1MzNkMDQ2YWZkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cApAQCAtMzMzMiw2ICszMzMyLDE0IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3ND
bGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoKQogICAgIG1fY3VycmVudEludm9jYXRpb24t
PmRpZENsZWFyU3RhdGlzdGljc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoKTsKIH0KIAordm9p
ZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JIb3N0KFdLU3RyaW5n
UmVmIGhvc3QsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcykKK3sKKyAgICBhdXRvKiBkYXRh
U3RvcmUgPSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsK
KyAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7Cisg
ICAgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKGRh
dGFTdG9yZSwgaG9zdCwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgJmNvbnRleHQsIHJlc291cmNl
U3RhdGlzdGljc1ZvaWRSZXN1bHRDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25l
LCBub1RpbWVvdXQpOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzQ2Fj
aGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpCiB7CiAgICAgYXV0byogZGF0YVN0b3JlID0gV0tD
b250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMWQxM2I1NTIzNzM5MGI3NmZiOTJlMTBh
ZjkzNWQ3OWYwYjYzMTBiNC4uNGIzNTNkYjQyYjU1MmU4OTgyNjEyNDJlM2E1ZDA3YTA0MGYzZTU2
NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjM1LDYgKzIz
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudFN0b3JlKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCk7CiAgICAgdm9pZCBzdGF0aXN0aWNz
Q2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCk7CisgICAgdm9pZCBzdGF0aXN0aWNzRGVs
ZXRlQ29va2llc0Zvckhvc3QoV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlD
b29raWVzKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vj
b25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDY2NjBjZGM5MjFm
ODk3Y2NlMmY3NzFkOGQ1M2E1YzI2ZjIxMjQ4ZjkuLjBiZGM0MTc2YWUxMjE2NjUwMjk4ZDhkNDg0
NGRlYjk2NjYxYjJkMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCkBAIC0xMzg0LDcgKzEzODQsMjEgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAg
ICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJz
aXRlRGF0YVJlbW92YWwoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAor
CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTdGF0
aXN0aWNzRGVsZXRlQ29va2llc0Zvckhvc3QiKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBl
SUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAgICAgICAgCisg
ICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2Fz
dDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IGhvc3ROYW1lS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJIb3N0TmFtZSIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHZhbHVl
S2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJbmNsdWRlSHR0cE9u
bHlDb29raWVzIikpOworICAgICAgICAKKyAgICAgICAgV0tTdHJpbmdSZWYgaG9zdE5hbWUgPSBz
dGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdl
Qm9keURpY3Rpb25hcnksIGhvc3ROYW1lS2V5LmdldCgpKSk7CisgICAgICAgIFdLQm9vbGVhblJl
ZiBpbmNsdWRlSHR0cE9ubHlDb29raWVzID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdmFsdWVLZXkuZ2V0
KCkpKTsKKyAgICAgICAgCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zdGF0
aXN0aWNzRGVsZXRlQ29va2llc0Zvckhvc3QoaG9zdE5hbWUsIFdLQm9vbGVhbkdldFZhbHVlKGlu
Y2x1ZGVIdHRwT25seUNvb2tpZXMpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRT
dGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAiKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQo
bWVzc2FnZUJvZHkpID09IFdLRG91YmxlR2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RvdWJsZVJl
ZiBzZWNvbmRzID0gc3RhdGljX2Nhc3Q8V0tEb3VibGVSZWY+KG1lc3NhZ2VCb2R5KTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBlZDc4ZDIwNDBhODZiZjM3MzQ0Y2JlMzAwOTk0ODA2M2JmODM3ZTkyLi4xODNjNzFiNGRlZDIy
YmU3ZGUzYmY5Yzc5OGQ4YmEzZjA3NTk4ODRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTkt
MDMtMDYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVz
b3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHB1cmdlIG9ubHkgc2Ny
aXB0LWFjY2Vzc2libGUgY29va2llcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk1MzgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODU3MDEzNj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAv
dGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZGVsZXRlLXNjcmlw
dC1hY2Nlc3NpYmxlLWNvb2tpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZGVsZXRlLXNjcmlwdC1hY2Nlc3NpYmxlLWNv
b2tpZXMuaHRtbDogQWRkZWQuCisKIDIwMTktMDMtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRnJlcXVlbnQgMSBzZWNvbmQgSVBDIGRl
YWRsb2NrcyB3aGVuIHNob3dpbmcgYSBwYXN0ZSBjYWxsb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29va2llLnBo
cCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25s
eS1jb29raWUucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxMGU2ZmUxZDU0YzYyYTEwYmFhODA0NWYwZjQ5YWU0
YWIzNGNlZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tp
ZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29va2llLnBocApAQCAtMCwwICsxLDEwIEBACis8
P3BocAoraWYgKCRfR0VUWydjb29raWVOYW1lJ10pIHsKKyAgc2V0Y29va2llKCRfR0VUWydjb29r
aWVOYW1lJ10sICIxIiwgdGltZSgpICsgODY0MDAsICIvIiwgIiIsIEZBTFNFLCBUUlVFKTsKKyAg
ZWNobyAiWWVhaCI7Cit9IGVsc2UgeworICBoZWFkZXIoIkhUVFAvMS4wIDIwMCBPSyIpOworICBl
Y2hvICJGQUlMRUQ6IE5vIGNvb2tpZU5hbWUgcGFyYW1ldGVyIGZvdW5kLlxuIjsKK30KKworPz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9kZWxldGUtc2NyaXB0LWFjY2Vzc2libGUtY29va2llcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZGVsZXRlLXNjcmlwdC1hY2Nl
c3NpYmxlLWNvb2tpZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzNDA3ZGNmM2VkZWViNjBl
Yzk2NDkyODUwMTQ1MWEwNTE5Mjg0NzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZGVsZXRlLXNjcmlwdC1hY2Nlc3NpYmxl
LWNvb2tpZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK0NoZWNrIHRoYXQgb25seSBI
dHRwT25seSBjb29raWVzIHJlbWFpbiBpZiBhbGwgc2NyaXB0LWFjY2Vzc2libGUgY29va2llcyBh
cmUgZGVsZXRlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgQmVmb3Jl
IHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgor
UEFTUyBCZWZvcmUgc2NyaXB0LWFjY2Vzc2libGUgZGVsZXRpb246IEh0dHBPbmx5IGNvb2tpZSBl
eGlzdHMuCitQQVNTIEJlZm9yZSBzY3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjogUmVndWxhciBz
ZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgorUEFTUyBBZnRlciBzY3JpcHQtYWNjZXNzaWJsZSBk
ZWxldGlvbjogIEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitQQVNTIEFmdGVyIGZ1bGwgZGVsZXRp
b246ICAgICAgICAgICAgICAgQWxsIGNvb2tpZXMgYXJlIGdvbmUuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RlbGV0ZS1zY3JpcHQtYWNjZXNz
aWJsZS1jb29raWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvZGVsZXRlLXNjcmlwdC1hY2Nlc3NpYmxlLWNvb2tpZXMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NWZlYWRhZGIwN2MwZWRlNWViNDYwNzRmZWI3YTQ4ZThiMWZlOWY2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RlbGV0
ZS1zY3JpcHQtYWNjZXNzaWJsZS1jb29raWVzLmh0bWwKQEAgLTAsMCArMSw3MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJDaGVjayB0aGF0IG9ubHkgSHR0cE9u
bHkgY29va2llcyByZW1haW4gaWYgYWxsIHNjcmlwdC1hY2Nlc3NpYmxlIGNvb2tpZXMgYXJlIGRl
bGV0ZWQuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBodHRwT25s
eUNvb2tpZU5hbWUgPSAiaHR0cC1vbmx5LWNvb2tpZSI7CisgICAgY29uc3Qgc2VydmVyU2lkZUNv
b2tpZU5hbWUgPSAic2VydmVyLXNpZGUtY29va2llIjsKKyAgICBjb25zdCBjbGllbnRTaWRlQ29v
a2llTmFtZSA9ICJjbGllbnQtc2lkZS1jb29raWUiOworCisgICAgZnVuY3Rpb24gc29ydFN0cmlu
Z0FycmF5KGEsIGIpIHsKKyAgICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgYiA9
IGIudG9Mb3dlckNhc2UoKTsKKworICAgICAgICByZXR1cm4gYSA+IGIgPyAxIDogYiA+IGEgPyAt
MSA6IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0ZXJTY3JpcHRB
Y2Nlc3NpYmxlRGVsZXRpb24pIHsKKyAgICAgICAgbGV0IHVuc29ydGVkVGVzdFBhc3NlZE1lc3Nh
Z2VzID0gW107CisgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsK
KyAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoKGlz
QWZ0ZXJTY3JpcHRBY2Nlc3NpYmxlRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBz
Y3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjogTm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAgICAg
Zm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29va2ll
Lm5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGh0dHBPbmx5Q29va2llTmFtZToKKyAgICAg
ICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlclNj
cmlwdEFjY2Vzc2libGVEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHNjcmlwdC1h
Y2Nlc3NpYmxlIGRlbGV0aW9uOiAiICsgKGlzQWZ0ZXJTY3JpcHRBY2Nlc3NpYmxlRGVsZXRpb24g
PyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2ZXJTaWRlQ29va2llTmFtZToK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGlzQWZ0ZXJTY3JpcHRBY2Nlc3NpYmxlRGVsZXRpb24p
CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJBZnRlciBzY3JpcHQtYWNjZXNz
aWJsZSBkZWxldGlvbjogIFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRU
ZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgiQmVmb3JlIHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0aW9u
OiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgY2xpZW50U2lkZUNvb2tpZU5hbWU6Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0FmdGVyU2NyaXB0QWNjZXNzaWJsZURlbGV0aW9uKQor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiQWZ0ZXIgc2NyaXB0LWFjY2Vzc2li
bGUgZGVsZXRpb246ICBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRN
ZXNzYWdlcy5wdXNoKCJCZWZvcmUgc2NyaXB0LWFjY2Vzc2libGUgZGVsZXRpb246IENsaWVudC1z
aWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMg
PSB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7CisgICAg
ICAgIGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdl
cykKKyAgICAgICAgICAgIHRlc3RQYXNzZWQodGVzdFBhc3NlZE1lc3NhZ2UpOworICAgIH0KKwor
ICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGlmICghdGVzdFJ1bm5lciB8
fCAhaW50ZXJuYWxzKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyB0ZXN0UnVubmVyIG9y
IG5vIGludGVybmFscy4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUu
cGhwP2Nvb2tpZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFsczogInNh
bWUtb3JpZ2luIiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9z
ZXRDb29raWVzLmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZlclNpZGVDb29r
aWVOYW1lICsgIj0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsK
KyAgICAgICAgZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUgKyAiPTEiOwor
ICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3Rp
Y3NEZWxldGVDb29raWVzRm9ySG9zdCgiaHR0cDovLzEyNy4wLjAuMSIsIGZhbHNlKTsKKyAgICAg
ICAgY2hlY2tDb29raWVzKHRydWUpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NEZWxl
dGVDb29raWVzRm9ySG9zdCgiaHR0cDovLzEyNy4wLjAuMSIsIHRydWUpOworICAgICAgICBsZXQg
Y29va2llc0xlZnQgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpLmxlbmd0aDsKKyAgICAgICAgaWYg
KGNvb2tpZXNMZWZ0ID09PSAwKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQWZ0ZXIgZnVsbCBk
ZWxldGlvbjogICAgICAgICAgICAgICBBbGwgY29va2llcyBhcmUgZ29uZS4iKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiQWZ0ZXIgZnVsbCBkZWxldGlvbjogICAgICAg
ICAgICAgICIgKyBjb29raWVzTGVmdCArICIgY29va2llKHMpIGxlZnQuIik7CisgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>