<?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>225971</bug_id>
          
          <creation_ts>2021-05-19 09:54:11 -0700</creation_ts>
          <short_desc>Drop &quot;get&quot; prefix from SQLiteStatement member functions as well as out-parameters</short_desc>
          <delta_ts>2021-05-19 14:01:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore 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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>sam</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1761564</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-19 09:54:11 -0700</bug_when>
    <thetext>Drop &quot;get&quot; prefix from SQLiteStatement member functions as well as out-parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761566</commentid>
    <comment_count>1</comment_count>
      <attachid>429056</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-19 09:59:49 -0700</bug_when>
    <thetext>Created attachment 429056
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761568</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-05-19 10:00:38 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761622</commentid>
    <comment_count>3</comment_count>
      <attachid>429056</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-19 11:22:14 -0700</bug_when>
    <thetext>Comment on attachment 429056
Patch

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

&gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:287
&gt; +    Vector&lt;uint8_t&gt; result;

I think we should declare this later and just return { } in earlier return statements.

&gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:304
&gt; +    result.resize(static_cast&lt;size_t&gt;(blobSize));
&gt; +    memcpy(result.data(), blob, static_cast&lt;size_t&gt;(blobSize));
&gt; +    return result;

To construct a vector with a copy of the data, we shouldn’t use resize. I wish there was a suitable Vector constructor so you could write this:

    return { blob, static_cast&lt;size_t&gt;(blobSize) };

But instead we need to write this:

    Vector&lt;uint8_t&gt; result;
    result.reserveInitialCapacity(blobSize);
    result.append(blob, blobSize);
    return result;

Also maybe we should consider having this return FixedVector in the future?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761643</commentid>
    <comment_count>4</comment_count>
      <attachid>429083</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-19 12:03:13 -0700</bug_when>
    <thetext>Created attachment 429083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761644</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-19 12:03:37 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 429056 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429056&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:287
&gt; &gt; +    Vector&lt;uint8_t&gt; result;
&gt; 
&gt; I think we should declare this later and just return { } in earlier return
&gt; statements.

Done.

&gt; &gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:304
&gt; &gt; +    result.resize(static_cast&lt;size_t&gt;(blobSize));
&gt; &gt; +    memcpy(result.data(), blob, static_cast&lt;size_t&gt;(blobSize));
&gt; &gt; +    return result;
&gt; 
&gt; To construct a vector with a copy of the data, we shouldn’t use resize. I
&gt; wish there was a suitable Vector constructor so you could write this:
&gt; 
&gt;     return { blob, static_cast&lt;size_t&gt;(blobSize) };

I added this new Vector constructor and an API test for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761690</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-19 14:00:48 -0700</bug_when>
    <thetext>Committed r277750 (237920@main): &lt;https://commits.webkit.org/237920@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429083.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761692</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-19 14:01:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/78223453&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429056</attachid>
            <date>2021-05-19 09:59:49 -0700</date>
            <delta_ts>2021-05-19 12:03:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225971-20210519095948.patch</filename>
            <type>text/plain</type>
            <size>110384</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmMwNDA0NWZhZDBkMmQ2
ZDVkZWFhY2M1OWRmOGUzNjE0MjRhZDU0Ny4uNDYzMTRlZGZlM2UzMTBmODNhMzZjNWZhNGE4MTBk
OTZjMTQ1ZjRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIxLTA1LTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCAiZ2V0IiBwcmVmaXgg
ZnJvbSBTUUxpdGVTdGF0ZW1lbnQgbWVtYmVyIGZ1bmN0aW9ucyBhcyB3ZWxsIGFzIG91dC1wYXJh
bWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjU5NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
cm9wICJnZXQiIHByZWZpeCBmcm9tIFNRTGl0ZVN0YXRlbWVudCBtZW1iZXIgZnVuY3Rpb25zIGFz
IHdlbGwgYXMgb3V0LXBhcmFtZXRlcnMgdG8KKyAgICAgICAgbW9kZXJuaXplIHRoZSBjb2RlIGEg
Yml0IGFuZCBmb2xsb3cgV2ViS2l0IHN0eWxlLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OmNyZWF0ZU9yTWlncmF0ZVJlY29yZHNUYWJsZUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxp
ZEJsb2JUYWJsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNv
cmRzSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzUmVjb3JkSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkT2JqZWN0
U3RvcmVJbmZvVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6Om1pZ3JhdGVJbmRleEluZm9UYWJsZUZvcklEVXBkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjptaWdyYXRlSW5kZXhS
ZWNvcmRzVGFibGVGb3JJRFVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJh
c2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVVudXNlZEJsb2JGaWxlUmVj
b3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpnZXRCbG9iUmVjb3Jkc0Zvck9iamVjdFN0b3JlUmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dEFsbE9iamVjdFN0b3JlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
Ojp1bmNoZWNrZWRHZXRLZXlHZW5lcmF0b3JWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4
dFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZVRleHRSZXN1bHRGcm9tRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2U6OnBlcmZvcm1HZXRUYWJsZU5hbWVzKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2VOb0xvY2spOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VOYW1lc05vTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZVRyYWNrZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6c2V0RGF0YWJhc2VEZXRhaWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6cXVvdGFOb0xvY2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VUcmFja2VyOjpyZW1vdmVEZWxldGVkT3BlbmVkRGF0YWJhc2VzKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxTdGF0ZW1lbnQ6OmV4ZWN1dGUpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6bG9hZENhY2hlR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmxvYWRNYW5pZmVzdEhvc3RIYXNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FsY3VsYXRlUXVv
dGFGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmNhbGN1bGF0ZVVzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVSZW1haW5pbmdTaXplRm9yT3JpZ2luRXhjbHVkaW5nQ2Fj
aGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnZlcmlmeVNj
aGVtYVZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmxvYWRDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
bWFuaWZlc3RVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpkZWxldGVDYWNoZUdyb3VwUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpjaGVja0ZvckRlbGV0ZWRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZsYXRGaWxlQXJlYVNpemUpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb29raWVKYXJEQjo6dmVyaWZ5U2NoZW1hVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpD
b29raWVKYXJEQjo6Y2hlY2tEYXRhYmFzZVZhbGlkaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b2tpZUphckRCOjpzZWFyY2hDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRC
OjpnZXRBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjphbGxEb21h
aW5zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnVzZVdBTEpvdXJuYWxNb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjptYXhpbXVtU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6cGFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2U6OmZyZWVTcGFjZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6
OnRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xlYXJBbGxU
YWJsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnR1cm5PbkluY3JlbWVu
dGFsQXV0b1ZhY3V1bSk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmNvbHVtbk5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Ojpjb2x1bW5WYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmNvbHVtblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50Ojpjb2x1bW5Eb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50Ojpjb2x1bW5JbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
Ojpjb2x1bW5JbnQ2NCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmNvbHVt
bkJsb2JBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmNvbHVt
bkJsb2IpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VhcmNoUG9wdXBNZW51REI6OmxvYWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTZWFyY2hQb3B1cE1lbnVEQjo6Y2hlY2tEYXRhYmFzZVZhbGlkaXR5KToKKyAgICAgICAg
KFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudURCOjp2ZXJpZnlTY2hlbWFWZXJzaW9uKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjplbnN1cmVWYWxpZFJlY29yZHNU
YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVj
b3Jkcyk6CisKIDIwMjEtMDUtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggZmxha3kgYXNzZXJ0aW9uIGhpdCB1bmRlciBBdWRpb1N1bW1pbmdKdW5jdGlv
bjo6cmVtb3ZlT3V0cHV0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODE2MTViY2Y0NjQ2MTkxZjFiMzBmNjRjN2Q3
YmU2ZDFhNTUyZDE0OS4uYzhiYjNlYjZmYjUxYTljYjE3MjM4ZWQ4MzQwOWMwNWYyZTRmMDEzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAyMS0wNS0xOSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgImdldCIgcHJlZml4IGZyb20gU1FMaXRlU3Rh
dGVtZW50IG1lbWJlciBmdW5jdGlvbnMgYXMgd2VsbCBhcyBvdXQtcGFyYW1ldGVycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTcxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgYmFz
ZSBkdWUgdG8gU1FMaXRlU3RhdGVtZW50IEFQSSBjaGFuZ2VzLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlzc2luZ1VuaXF1ZUluZGljZXMpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y29sdW1u
c0ZvclRhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Om9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJl
bGF0aW9uc2hpcEV4aXN0cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JRCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRUaGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFy
dHlEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnNUaGF0UmVkaXJl
Y3RlZFRvVGhpc0RvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjptYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpmaW5kTm90VmVyeVByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZHVt
cFJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJlZGljYXRlVmFsdWVGb3JEb21haW4gY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0
TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphbGxEb21haW5zIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvb2tpZUFjY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNV
c2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbnNUb0Jsb2NrQW5kRGVs
ZXRlQ29va2llc0ZvciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbnNXaXRo
U3RvcmFnZUFjY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5zIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVk
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmlzQ29ycmVjdFN1YlN0YXRpc3RpY3NDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6YXBwZW5kU3ViU3RhdGlzdGljTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMp
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
YnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphdHRyaWJ1dGlvblRvU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZWFybGllc3RUaW1lc1RvU2VuZCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjppdGVtcyBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjppdGVtIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6OmRhdGFiYXNlSXNFbXB0eSBj
b25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6SWNvbkRhdGFiYXNlKToKKyAgICAgICAgKFdl
YktpdDo6SWNvbkRhdGFiYXNlOjpwb3B1bGF0ZVBhZ2VVUkxUb0ljb25VUkxNYXApOgorICAgICAg
ICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6Omljb25JREZvckljb25VUkwpOgorICAgICAgICAoV2Vi
S2l0OjpJY29uRGF0YWJhc2U6Omljb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFi
YXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuaDoKKwogMjAyMS0wNS0xOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBhbGxvd3NDb250ZW50SmF2YVNjcmlwdCBBUEkgbm90IGFw
cGxpZWQgZnJvbSBkZWZhdWx0V2VicGFnZVByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmlu
ZGV4IGFjOGQ2ZjY2ZDljNTE4N2MyNDNhNWI3NWE2YWEyZDk5NjRlY2YzOGUuLmIzOGE0NThiMDc2
ZjQxMTVkOWYzNGY1Y2Q4MDQ1NGM1ZTUxMThiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMjEtMDUtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBEcm9wICJnZXQiIHByZWZpeCBmcm9tIFNRTGl0ZVN0YXRlbWVudCBtZW1iZXIg
ZnVuY3Rpb25zIGFzIHdlbGwgYXMgb3V0LXBhcmFtZXRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk3MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjb2RlIGJhc2UgZHVlIHRvIFNRTGl0
ZVN0YXRlbWVudCBBUEkgY2hhbmdlcy4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFT
eW5jLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFTeW5jOjpwZXJmb3JtSW1wb3J0
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFTeW5jOjpkZWxldGVFbXB0eURhdGFiYXNl
KToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVRyYWNrZXI6OnN5bmNJbXBvcnRPcmlnaW5JZGVudGlmaWVycyk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucyk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpkYXRhYmFzZVBhdGhGb3JPcmlnaW4pOgorCiAyMDIx
LTA1LTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQg
bW9yZSBTdHJpbmcgY3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0ZW1lbnRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDUyOTg1N2E1YTYzZWM5ZDI0MGQ4
NzE3MjA2MmI4ZmEyODJlMGQwN2IuLjgxYWQ5ZTAwYTRjYjQzMzA4ODM0ZDMyNjM3YzllM2ZjOTRi
OWRiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yODAsNyArMjgw
LDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlT3JNaWdyYXRlUmVjb3Jkc1RhYmxlSWZOZWNlc3Nhcnko
U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAKLSAgICAgICAgY3VycmVudFNjaGVtYSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4
dCgxKTsKKyAgICAgICAgY3VycmVudFNjaGVtYSA9IHN0YXRlbWVudC0+Y29sdW1uVGV4dCgxKTsK
ICAgICB9CiAKICAgICBBU1NFUlQoIWN1cnJlbnRTY2hlbWEuaXNFbXB0eSgpKTsKQEAgLTM1Miw3
ICszNTIsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRCbG9iVGFi
bGVzKCkKICAgICAgICAgICAgIExPR19FUlJPUigiRXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0
byBmZXRjaCBzY2hlbWEgZm9yIHRoZSBCbG9iUmVjb3JkcyB0YWJsZS4iKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjdXJyZW50U2NoZW1h
ID0gc3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDEpOworICAgICAgICAgICAgY3VycmVudFNjaGVt
YSA9IHN0YXRlbWVudC0+Y29sdW1uVGV4dCgxKTsKICAgICB9CiAKICAgICBpZiAoY3VycmVudFNj
aGVtYSAhPSBibG9iUmVjb3Jkc1RhYmxlU2NoZW1hKCkgJiYgY3VycmVudFNjaGVtYSAhPSBibG9i
UmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkpIHsKQEAgLTM4NSw3ICszODUsNyBAQCBib29s
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRCbG9iVGFibGVzKCkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIGN1cnJlbnRTY2hlbWEgPSBz
dGF0ZW1lbnQtPmdldENvbHVtblRleHQoMSk7CisgICAgICAgIGN1cnJlbnRTY2hlbWEgPSBzdGF0
ZW1lbnQtPmNvbHVtblRleHQoMSk7CiAgICAgfQogCiAgICAgaWYgKGN1cnJlbnRTY2hlbWEgIT0g
YmxvYkZpbGVzVGFibGVTY2hlbWEoKSAmJiBjdXJyZW50U2NoZW1hICE9IGJsb2JGaWxlc1RhYmxl
U2NoZW1hQWx0ZXJuYXRlKCkpIHsKQEAgLTQ0NSw3ICs0NDUsNyBAQCBib29sIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNUYWJsZSgpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBjdXJyZW50U2NoZW1hID0gc3RhdGVt
ZW50LT5nZXRDb2x1bW5UZXh0KDEpOworICAgICAgICBjdXJyZW50U2NoZW1hID0gc3RhdGVtZW50
LT5jb2x1bW5UZXh0KDEpOwogICAgIH0KIAogICAgIEFTU0VSVCghY3VycmVudFNjaGVtYS5pc0Vt
cHR5KCkpOwpAQCAtNTIwLDcgKzUyMCw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpl
bnN1cmVWYWxpZEluZGV4UmVjb3Jkc0luZGV4KCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogCi0gICAgICAgIGN1cnJlbnRTY2hlbWEgPSBzdGF0ZW1lbnQtPmdldENvbHVt
blRleHQoMCk7CisgICAgICAgIGN1cnJlbnRTY2hlbWEgPSBzdGF0ZW1lbnQtPmNvbHVtblRleHQo
MCk7CiAgICAgfQogCiAgICAgQVNTRVJUKCFjdXJyZW50U2NoZW1hLmlzRW1wdHkoKSk7CkBAIC01
NzcsNyArNTc3LDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5k
ZXhSZWNvcmRzUmVjb3JkSW5kZXgoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKLSAgICAgICAgY3VycmVudFNjaGVtYSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgw
KTsKKyAgICAgICAgY3VycmVudFNjaGVtYSA9IHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKTsKICAg
ICB9CiAKICAgICBBU1NFUlQoIWN1cnJlbnRTY2hlbWEuaXNFbXB0eSgpKTsKQEAgLTY4MCw3ICs2
ODAsNyBAQCBPcHRpb25hbDxJc1NjaGVtYVVwZ3JhZGVkPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmVuc3VyZVZhbGlkT2JqZWN0U3RvcmVJbmZvVGFibAogICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICAgICAgICAgfQogCi0gICAgICAgIGN1cnJlbnRTY2hlbWEgPSBzdGF0ZW1lbnQt
PmdldENvbHVtblRleHQoMCk7CisgICAgICAgIGN1cnJlbnRTY2hlbWEgPSBzdGF0ZW1lbnQtPmNv
bHVtblRleHQoMCk7CiAgICAgfQogCiAgICAgQVNTRVJUKCFjdXJyZW50U2NoZW1hLmlzRW1wdHko
KSk7CkBAIC03NDEsMTQgKzc0MSwxMyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWln
cmF0ZUluZGV4SW5mb1RhYmxlRm9ySURVcGRhdGUoY29uc3QgSGFzaE1hcDxzdGQ6OgogCiAgICAg
ICAgIGludCByZXN1bHQgPSBzdGF0ZW1lbnQtPnN0ZXAoKTsKICAgICAgICAgd2hpbGUgKHJlc3Vs
dCA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgICAgICB1aW50NjRfdCBpZCA9IHN0YXRlbWVudC0+
Z2V0Q29sdW1uSW50NjQoMCk7Ci0gICAgICAgICAgICBTdHJpbmcgbmFtZSA9IHN0YXRlbWVudC0+
Z2V0Q29sdW1uVGV4dCgxKTsKLSAgICAgICAgICAgIHVpbnQ2NF90IG9iamVjdFN0b3JlSUQgPSBz
dGF0ZW1lbnQtPmdldENvbHVtbkludDY0KDIpOworICAgICAgICAgICAgdWludDY0X3QgaWQgPSBz
dGF0ZW1lbnQtPmNvbHVtbkludDY0KDApOworICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBzdGF0
ZW1lbnQtPmNvbHVtblRleHQoMSk7CisgICAgICAgICAgICB1aW50NjRfdCBvYmplY3RTdG9yZUlE
ID0gc3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKTsKICAgICAgICAgICAgIHVpbnQ2NF90IG5ld0lE
ID0gaW5kZXhJRE1hcC5nZXQoeyBvYmplY3RTdG9yZUlELCBpZCB9KTsKLSAgICAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBrZXlQYXRoQnVmZmVyOwotICAgICAgICAgICAgc3RhdGVtZW50LT5nZXRD
b2x1bW5CbG9iQXNWZWN0b3IoMywga2V5UGF0aEJ1ZmZlcik7Ci0gICAgICAgICAgICBib29sIHVu
aXF1ZSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDQpOwotICAgICAgICAgICAgYm9vbCBtdWx0
aUVudHJ5ID0gc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoNSk7CisgICAgICAgICAgICBhdXRvIGtl
eVBhdGhCdWZmZXIgPSBzdGF0ZW1lbnQtPmNvbHVtbkJsb2IoMyk7CisgICAgICAgICAgICBib29s
IHVuaXF1ZSA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDQpOworICAgICAgICAgICAgYm9vbCBtdWx0
aUVudHJ5ID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoNSk7CiAKICAgICAgICAgICAgIGF1dG8gc3Fs
ID0gY2FjaGVkU3RhdGVtZW50KFNRTDo6Q3JlYXRlVGVtcEluZGV4SW5mbywgIklOU0VSVCBJTlRP
IF9UZW1wX0luZGV4SW5mbyBWQUxVRVMgKD8sID8sID8sID8sID8sID8pOyJfcyk7CiAgICAgICAg
ICAgICBpZiAoIXNxbApAQCAtODA2LDE0ICs4MDUsMTIgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5n
U3RvcmU6Om1pZ3JhdGVJbmRleFJlY29yZHNUYWJsZUZvcklEVXBkYXRlKGNvbnN0IEhhc2hNYXA8
c3QKIAogICAgICAgICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50LT5zdGVwKCk7CiAgICAgICAgIHdo
aWxlIChyZXN1bHQgPT0gU1FMSVRFX1JPVykgewotICAgICAgICAgICAgdWludDY0X3QgaWQgPSBz
dGF0ZW1lbnQtPmdldENvbHVtbkludDY0KDApOwotICAgICAgICAgICAgdWludDY0X3Qgb2JqZWN0
U3RvcmVJRCA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMSk7CisgICAgICAgICAgICB1aW50
NjRfdCBpZCA9IHN0YXRlbWVudC0+Y29sdW1uSW50NjQoMCk7CisgICAgICAgICAgICB1aW50NjRf
dCBvYmplY3RTdG9yZUlEID0gc3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgxKTsKICAgICAgICAgICAg
IHVpbnQ2NF90IG5ld0lEID0gaW5kZXhJRE1hcC5nZXQoeyBvYmplY3RTdG9yZUlELCBpZCB9KTsK
LSAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBrZXlCdWZmZXI7Ci0gICAgICAgICAgICBzdGF0
ZW1lbnQtPmdldENvbHVtbkJsb2JBc1ZlY3RvcigyLCBrZXlCdWZmZXIpOwotICAgICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHZhbHVlQnVmZmVyOwotICAgICAgICAgICAgc3RhdGVtZW50LT5nZXRD
b2x1bW5CbG9iQXNWZWN0b3IoMywgdmFsdWVCdWZmZXIpOwotICAgICAgICAgICAgdWludDY0X3Qg
cmVjb3JkSUQgPSBzdGF0ZW1lbnQtPmdldENvbHVtbkludDY0KDQpOworICAgICAgICAgICAgYXV0
byBrZXlCdWZmZXIgPSBzdGF0ZW1lbnQtPmNvbHVtbkJsb2IoMik7CisgICAgICAgICAgICBhdXRv
IHZhbHVlQnVmZmVyID0gc3RhdGVtZW50LT5jb2x1bW5CbG9iKDMpOworICAgICAgICAgICAgdWlu
dDY0X3QgcmVjb3JkSUQgPSBzdGF0ZW1lbnQtPmNvbHVtbkludDY0KDQpOwogCiAgICAgICAgICAg
ICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudChTUUw6OlB1dFRlbXBJbmRleFJlY29yZCwgIklO
U0VSVCBJTlRPIF9UZW1wX0luZGV4UmVjb3JkcyBWQUxVRVMgKD8sID8sIENBU1QoPyBBUyBURVhU
KSwgQ0FTVCg/IEFTIFRFWFQpLCA/KTsiX3MpOwogICAgICAgICAgICAgaWYgKCFzcWwKQEAgLTkx
NSwxOSArOTEyLDE3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0lu
ZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAKICAgICAgICAgaW50IHJl
c3VsdCA9IHNxbC0+c3RlcCgpOwogICAgICAgICB3aGlsZSAocmVzdWx0ID09IFNRTElURV9ST1cp
IHsKLSAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBrZXlCdWZmZXI7CisgICAgICAgICAgICBh
dXRvIGtleUJ1ZmZlciA9IHNxbC0+Y29sdW1uQmxvYigwKTsKICAgICAgICAgICAgIElEQktleURh
dGEga2V5RGF0YTsKLSAgICAgICAgICAgIHNxbC0+Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDAsIGtl
eUJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlCdWZm
ZXIuZGF0YSgpLCBrZXlCdWZmZXIuc2l6ZSgpLCBrZXlEYXRhKSkgewogICAgICAgICAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGtleSBkYXRhIGZyb20gZGF0YWJhc2Ug
d2hpbGUgZ2V0dGluZyBhbGwgcmVjb3JkcyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlQnVm
ZmVyOwotICAgICAgICAgICAgc3FsLT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMSwgdmFsdWVCdWZm
ZXIpOworICAgICAgICAgICAgYXV0byB2YWx1ZUJ1ZmZlciA9IHNxbC0+Y29sdW1uQmxvYigxKTsK
ICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUodmFsdWVCdWZmZXIpKTsKIAotICAgICAgICAgICAgdWludDY0X3QgcmVjb3JkSUQgPSBz
cWwtPmdldENvbHVtbkludDY0KDIpOworICAgICAgICAgICAgdWludDY0X3QgcmVjb3JkSUQgPSBz
cWwtPmNvbHVtbkludDY0KDIpOwogICAgICAgICAgICAgSURCRXJyb3IgZXJyb3IgPSB1cGRhdGVP
bmVJbmRleEZvckFkZFJlY29yZChvYmplY3RTdG9yZUluZm8sIGluZm8sIGtleURhdGEsIHZhbHVl
LCByZWNvcmRJRCk7CiAgICAgICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk4NCw3ICs5NzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0Rh
dGFiYXNlSQogICAgIFN0cmluZyBkYXRhYmFzZU5hbWU7CiAgICAgewogICAgICAgICBhdXRvIHNx
bCA9IG1fc3FsaXRlREItPnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCB2YWx1ZSBGUk9NIElEQkRh
dGFiYXNlSW5mbyBXSEVSRSBrZXkgPSAnRGF0YWJhc2VOYW1lJzsiX3MpOwotICAgICAgICBkYXRh
YmFzZU5hbWUgPSBzcWwtPmdldENvbHVtblRleHQoMCk7CisgICAgICAgIGRhdGFiYXNlTmFtZSA9
IHNxbC0+Y29sdW1uVGV4dCgwKTsKICAgICAgICAgaWYgKGRhdGFiYXNlTmFtZSAhPSBtX2lkZW50
aWZpZXIuZGF0YWJhc2VOYW1lKCkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiRGF0YWJhc2Ug
bmFtZSBpbiB0aGUgaW5mbyBkYXRhYmFzZSAoJyVzJykgZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVj
dGVkIG5hbWUgKCclcycpIiwgZGF0YWJhc2VOYW1lLnV0ZjgoKS5kYXRhKCksIG1faWRlbnRpZmll
ci5kYXRhYmFzZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtOTkzLDcgKzk4OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAgICAgdWlu
dDY0X3QgZGF0YWJhc2VWZXJzaW9uOwogICAgIHsKICAgICAgICAgYXV0byBzcWwgPSBtX3NxbGl0
ZURCLT5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgdmFsdWUgRlJPTSBJREJEYXRhYmFzZUluZm8g
V0hFUkUga2V5ID0gJ0RhdGFiYXNlVmVyc2lvbic7Il9zKTsKLSAgICAgICAgU3RyaW5nIHN0cmlu
Z1ZlcnNpb24gPSBzcWwtPmdldENvbHVtblRleHQoMCk7CisgICAgICAgIFN0cmluZyBzdHJpbmdW
ZXJzaW9uID0gc3FsLT5jb2x1bW5UZXh0KDApOwogICAgICAgICBhdXRvIHBhcnNlZFZlcnNpb24g
PSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHN0cmluZ1ZlcnNpb24pOwogICAgICAgICBpZiAoIXBh
cnNlZFZlcnNpb24pIHsKICAgICAgICAgICAgIExPR19FUlJPUigiRGF0YWJhc2UgdmVyc2lvbiBv
biBkaXNrICgnJXMnKSBkb2VzIG5vdCBjbGVhbmx5IGNvbnZlcnQgdG8gYW4gdW5zaWduZWQgNjQt
Yml0IGludGVnZXIgdmVyc2lvbiIsIHN0cmluZ1ZlcnNpb24udXRmOCgpLmRhdGEoKSk7CkBAIC0x
MDE3LDE5ICsxMDEyLDE3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAKICAgICAgICAgaW50
IHJlc3VsdCA9IHNxbC0+c3RlcCgpOwogICAgICAgICB3aGlsZSAocmVzdWx0ID09IFNRTElURV9S
T1cpIHsKLSAgICAgICAgICAgIHVpbnQ2NF90IG9iamVjdFN0b3JlSUQgPSBzcWwtPmdldENvbHVt
bkludDY0KDApOwotICAgICAgICAgICAgU3RyaW5nIG9iamVjdFN0b3JlTmFtZSA9IHNxbC0+Z2V0
Q29sdW1uVGV4dCgxKTsKLQotICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGtleVBhdGhCdWZmZXI7
Ci0gICAgICAgICAgICBzcWwtPmdldENvbHVtbkJsb2JBc1ZlY3RvcigyLCBrZXlQYXRoQnVmZmVy
KTsKKyAgICAgICAgICAgIHVpbnQ2NF90IG9iamVjdFN0b3JlSUQgPSBzcWwtPmNvbHVtbkludDY0
KDApOworICAgICAgICAgICAgU3RyaW5nIG9iamVjdFN0b3JlTmFtZSA9IHNxbC0+Y29sdW1uVGV4
dCgxKTsKKyAgICAgICAgICAgIGF1dG8ga2V5UGF0aEJ1ZmZlciA9IHNxbC0+Y29sdW1uQmxvYigy
KTsKIAogICAgICAgICAgICAgT3B0aW9uYWw8SURCS2V5UGF0aD4gb2JqZWN0U3RvcmVLZXlQYXRo
OwotICAgICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleVBhdGgocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oa2V5UGF0aEJ1ZmZlci5kYXRhKCkpLCBrZXlQYXRoQnVmZmVyLnNp
emUoKSwgb2JqZWN0U3RvcmVLZXlQYXRoKSkgeworICAgICAgICAgICAgaWYgKCFkZXNlcmlhbGl6
ZUlEQktleVBhdGgoa2V5UGF0aEJ1ZmZlci5kYXRhKCksIGtleVBhdGhCdWZmZXIuc2l6ZSgpLCBv
YmplY3RTdG9yZUtleVBhdGgpKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gZXh0cmFjdCBrZXkgcGF0aCBmcm9tIGRhdGFiYXNlIik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGJvb2wgYXV0b0luY3Jl
bWVudCA9IHNxbC0+Z2V0Q29sdW1uSW50KDMpOworICAgICAgICAgICAgYm9vbCBhdXRvSW5jcmVt
ZW50ID0gc3FsLT5jb2x1bW5JbnQoMyk7CiAKICAgICAgICAgICAgIGRhdGFiYXNlSW5mby0+YWRk
RXhpc3RpbmdPYmplY3RTdG9yZSh7IG9iamVjdFN0b3JlSUQsIG9iamVjdFN0b3JlTmFtZSwgV1RG
TW92ZShvYmplY3RTdG9yZUtleVBhdGgpLCBhdXRvSW5jcmVtZW50IH0pOwogCkBAIC0xMDU0LDE1
ICsxMDQ3LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAKICAgICAgICAgaW50IHJlc3Vs
dCA9IHNxbC0+c3RlcCgpOwogICAgICAgICB3aGlsZSAocmVzdWx0ID09IFNRTElURV9ST1cpIHsK
LSAgICAgICAgICAgIHVpbnQ2NF90IGluZGV4SUQgPSBzcWwtPmdldENvbHVtbkludDY0KDApOwot
ICAgICAgICAgICAgU3RyaW5nIGluZGV4TmFtZSA9IHNxbC0+Z2V0Q29sdW1uVGV4dCgxKTsKLSAg
ICAgICAgICAgIHVpbnQ2NF90IG9iamVjdFN0b3JlSUQgPSBzcWwtPmdldENvbHVtbkludDY0KDIp
OwotCi0gICAgICAgICAgICBWZWN0b3I8Y2hhcj4ga2V5UGF0aEJ1ZmZlcjsKLSAgICAgICAgICAg
IHNxbC0+Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDMsIGtleVBhdGhCdWZmZXIpOworICAgICAgICAg
ICAgdWludDY0X3QgaW5kZXhJRCA9IHNxbC0+Y29sdW1uSW50NjQoMCk7CisgICAgICAgICAgICBT
dHJpbmcgaW5kZXhOYW1lID0gc3FsLT5jb2x1bW5UZXh0KDEpOworICAgICAgICAgICAgdWludDY0
X3Qgb2JqZWN0U3RvcmVJRCA9IHNxbC0+Y29sdW1uSW50NjQoMik7CisgICAgICAgICAgICBhdXRv
IGtleVBhdGhCdWZmZXIgPSBzcWwtPmNvbHVtbkJsb2IoMyk7CiAKICAgICAgICAgICAgIE9wdGlv
bmFsPElEQktleVBhdGg+IGluZGV4S2V5UGF0aDsKLSAgICAgICAgICAgIGlmICghZGVzZXJpYWxp
emVJREJLZXlQYXRoKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGtleVBhdGhCdWZm
ZXIuZGF0YSgpKSwga2V5UGF0aEJ1ZmZlci5zaXplKCksIGluZGV4S2V5UGF0aCkpIHsKKyAgICAg
ICAgICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlQYXRoKGtleVBhdGhCdWZmZXIuZGF0YSgpLCBr
ZXlQYXRoQnVmZmVyLnNpemUoKSwgaW5kZXhLZXlQYXRoKSkgewogICAgICAgICAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIGV4dHJhY3Qga2V5IHBhdGggZnJvbSBkYXRhYmFzZSIpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQpAQCAtMTA3MSw4ICsx
MDYyLDggQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUkKICAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYm9vbCB1bmlxdWUgPSBzcWwt
PmdldENvbHVtbkludCg0KTsKLSAgICAgICAgICAgIGJvb2wgbXVsdGlFbnRyeSA9IHNxbC0+Z2V0
Q29sdW1uSW50KDUpOworICAgICAgICAgICAgYm9vbCB1bmlxdWUgPSBzcWwtPmNvbHVtbkludCg0
KTsKKyAgICAgICAgICAgIGJvb2wgbXVsdGlFbnRyeSA9IHNxbC0+Y29sdW1uSW50KDUpOwogCiAg
ICAgICAgICAgICBhdXRvIG9iamVjdFN0b3JlID0gZGF0YWJhc2VJbmZvLT5pbmZvRm9yRXhpc3Rp
bmdPYmplY3RTdG9yZShvYmplY3RTdG9yZUlEKTsKICAgICAgICAgICAgIGlmICghb2JqZWN0U3Rv
cmUpIHsKQEAgLTExNTcsMTAgKzExNDgsMTAgQEAgT3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5k
VmVyc2lvbj4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW8KICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgcHJlcGFyZSBzdGF0ZW1lbnQgdG8gZ2V0IGRhdGFi
YXNlIG5hbWUoJWkpIC0gJXMiLCBkYXRhYmFzZS5sYXN0RXJyb3IoKSwgZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KLSAgICBhdXRv
IGRhdGFiYXNlTmFtZSA9IG5hbWVzcWwtPmdldENvbHVtblRleHQoMCk7CisgICAgYXV0byBkYXRh
YmFzZU5hbWUgPSBuYW1lc3FsLT5jb2x1bW5UZXh0KDApOwogCiAgICAgYXV0byB2ZXJzcWwgPSBk
YXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgdmFsdWUgRlJPTSBJREJEYXRhYmFzZUlu
Zm8gV0hFUkUga2V5ID0gJ0RhdGFiYXNlVmVyc2lvbic7Il9zKTsKLSAgICBTdHJpbmcgc3RyaW5n
VmVyc2lvbiA9IHZlcnNxbCA/IHZlcnNxbC0+Z2V0Q29sdW1uVGV4dCgwKSA6IFN0cmluZygpOwor
ICAgIFN0cmluZyBzdHJpbmdWZXJzaW9uID0gdmVyc3FsID8gdmVyc3FsLT5jb2x1bW5UZXh0KDAp
IDogU3RyaW5nKCk7CiAgICAgYXV0byBkYXRhYmFzZVZlcnNpb24gPSBwYXJzZUludGVnZXI8dWlu
dDY0X3Q+KHN0cmluZ1ZlcnNpb24pOwogICAgIGlmICghZGF0YWJhc2VWZXJzaW9uKSB7CiAgICAg
ICAgIExPR19FUlJPUigiRGF0YWJhc2UgdmVyc2lvbiBvbiBkaXNrICgnJXMnKSBkb2VzIG5vdCBj
bGVhbmx5IGNvbnZlcnQgdG8gYW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgdmVyc2lvbiIsIHN0
cmluZ1ZlcnNpb24udXRmOCgpLmRhdGEoKSk7CkBAIC0xOTA1LDcgKzE4OTYsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVVudXNlZEJsb2JGaWxlUmVjb3JkcyhTUUxp
dGVJREJUcmFuc2FjdGlvbgogCiAgICAgICAgIGludCByZXN1bHQgPSBzcWwtPnN0ZXAoKTsKICAg
ICAgICAgd2hpbGUgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgICAgICByZW1vdmVk
QmxvYkZpbGVuYW1lcy5hZGQoc3FsLT5nZXRDb2x1bW5UZXh0KDApKTsKKyAgICAgICAgICAgIHJl
bW92ZWRCbG9iRmlsZW5hbWVzLmFkZChzcWwtPmNvbHVtblRleHQoMCkpOwogICAgICAgICAgICAg
cmVzdWx0ID0gc3FsLT5zdGVwKCk7CiAgICAgICAgIH0KIApAQCAtMTk3MiwxMCArMTk2Myw4IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIkZhaWxlZCB0byBkZWxldGUgcmVjb3JkIGZyb20gb2JqZWN0IHN0b3JlIl9z
IH07CiAgICAgICAgIH0KIAotICAgICAgICByZWNvcmRJRCA9IHNxbC0+Z2V0Q29sdW1uSW50NjQo
MCk7Ci0KLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlQnVmZmVyOwotICAgICAgICBzcWwt
PmdldENvbHVtbkJsb2JBc1ZlY3RvcigxLCB2YWx1ZUJ1ZmZlcik7CisgICAgICAgIHJlY29yZElE
ID0gc3FsLT5jb2x1bW5JbnQ2NCgwKTsKKyAgICAgICAgYXV0byB2YWx1ZUJ1ZmZlciA9IHNxbC0+
Y29sdW1uQmxvYigxKTsKICAgICAgICAgdmFsdWUgPSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUodmFsdWVCdWZmZXIpKTsKICAgICB9CiAKQEAgLTIyNzMsNyArMjI2Miw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QmxvYlJlY29yZHNGb3JPYmplY3RT
dG9yZVJlY29yZChpbnQ2NF90IG9iamVjCiAgICAgICAgIH0KIAogICAgICAgICB3aGlsZSAoc3Fs
UmVzdWx0ID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgICAgIGJsb2JVUkxTZXQuYWRkKHNxbC0+
Z2V0Q29sdW1uVGV4dCgwKSk7CisgICAgICAgICAgICBibG9iVVJMU2V0LmFkZChzcWwtPmNvbHVt
blRleHQoMCkpOwogICAgICAgICAgICAgc3FsUmVzdWx0ID0gc3FsLT5zdGVwKCk7CiAgICAgICAg
IH0KIApAQCAtMjI5OSw3ICsyMjg4LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpnZXRCbG9iUmVjb3Jkc0Zvck9iamVjdFN0b3JlUmVjb3JkKGludDY0X3Qgb2JqZWMKIAogICAg
ICAgICBibG9iVVJMcy5hcHBlbmQoYmxvYlVSTCk7CiAKLSAgICAgICAgU3RyaW5nIGZpbGVOYW1l
ID0gc3FsLT5nZXRDb2x1bW5UZXh0KDApOworICAgICAgICBTdHJpbmcgZmlsZU5hbWUgPSBzcWwt
PmNvbHVtblRleHQoMCk7CiAgICAgICAgIGJsb2JGaWxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2RhdGFiYXNlRGlyZWN0b3J5LCBmaWxlTmFtZSkp
OwogICAgIH0KICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwpAQCAtMjM5MSwxNSArMjM4MCwxMiBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiRXJyb3IgbG9va2luZyB1cCByZWNvcmQgaW4gb2JqZWN0IHN0b3JlIGJ5
IGtleSByYW5nZSJfcyB9OwogICAgICAgICB9CiAKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGtl
eUJ1ZmZlcjsKLSAgICAgICAgc3FsLT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMCwga2V5QnVmZmVy
KTsKLSAgICAgICAga2V5UmVzdWx0QnVmZmVyID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGtleUJ1ZmZlcikpOworICAgICAgICBrZXlSZXN1bHRCdWZmZXIgPSBUaHJlYWRT
YWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKHNxbC0+Y29sdW1uQmxvYigwKSk7CiAKICAgICAgICAgaWYg
KHR5cGUgPT0gSURCR2V0UmVjb3JkRGF0YVR5cGU6OktleUFuZFZhbHVlKSB7Ci0gICAgICAgICAg
ICBWZWN0b3I8dWludDhfdD4gdmFsdWVCdWZmZXI7Ci0gICAgICAgICAgICBzcWwtPmdldENvbHVt
bkJsb2JBc1ZlY3RvcigxLCB2YWx1ZUJ1ZmZlcik7CisgICAgICAgICAgICBhdXRvIHZhbHVlQnVm
ZmVyID0gc3FsLT5jb2x1bW5CbG9iKDEpOwogICAgICAgICAgICAgdmFsdWVSZXN1bHRCdWZmZXIg
PSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmFsdWVCdWZmZXIpKTsKLSAg
ICAgICAgICAgIHJlY29yZElEID0gc3FsLT5nZXRDb2x1bW5JbnQ2NCgyKTsKKyAgICAgICAgICAg
IHJlY29yZElEID0gc3FsLT5jb2x1bW5JbnQ2NCgyKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MjUxNCw5ICsyNTAwLDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxP
YmplY3RTdG9yZVJlY29yZHMoY29uc3QgSURCUmVzb3VyY2VJZGVudGkKICAgICB1aW50MzJfdCBy
ZXR1cm5lZFJlc3VsdHMgPSAwOwogCiAgICAgd2hpbGUgKHNxbFJlc3VsdCA9PSBTUUxJVEVfUk9X
ICYmIHJldHVybmVkUmVzdWx0cyA8IHRhcmdldFJlc3VsdHMpIHsKLSAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGtleUJ1ZmZlcjsKKyAgICAgICAgYXV0byBrZXlCdWZmZXIgPSBzcWwtPmNvbHVtbkJs
b2IoMCk7CiAgICAgICAgIElEQktleURhdGEga2V5RGF0YTsKLSAgICAgICAgc3FsLT5nZXRDb2x1
bW5CbG9iQXNWZWN0b3IoMCwga2V5QnVmZmVyKTsKICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlE
QktleURhdGEoa2V5QnVmZmVyLmRhdGEoKSwga2V5QnVmZmVyLnNpemUoKSwga2V5RGF0YSkpIHsK
ICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGtleSBkYXRhIGZy
b20gZGF0YWJhc2Ugd2hpbGUgZ2V0dGluZyBhbGwgcmVjb3JkcyIpOwogICAgICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGtleSBk
YXRhIHdoaWxlIGdldHRpbmcgYWxsIHJlY29yZHMiX3MgfTsKQEAgLTI1MjQsMTEgKzI1MDksOSBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldEFsbE9iamVjdFN0b3JlUmVjb3Jk
cyhjb25zdCBJREJSZXNvdXJjZUlkZW50aQogICAgICAgICByZXN1bHQuYWRkS2V5KFdURk1vdmUo
a2V5RGF0YSkpOwogCiAgICAgICAgIGlmIChnZXRBbGxSZWNvcmRzRGF0YS5nZXRBbGxUeXBlID09
IEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6VmFsdWVzKSB7Ci0gICAgICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gdmFsdWVCdWZmZXI7Ci0gICAgICAgICAgICBzcWwtPmdldENvbHVtbkJsb2JBc1ZlY3Rv
cigxLCB2YWx1ZUJ1ZmZlcik7Ci0gICAgICAgICAgICBUaHJlYWRTYWZlRGF0YUJ1ZmZlciB2YWx1
ZVJlc3VsdEJ1ZmZlciA9IFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2YWx1
ZUJ1ZmZlcikpOworICAgICAgICAgICAgVGhyZWFkU2FmZURhdGFCdWZmZXIgdmFsdWVSZXN1bHRC
dWZmZXIgPSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKHNxbC0+Y29sdW1uQmxvYigxKSk7
CiAKLSAgICAgICAgICAgIGF1dG8gcmVjb3JkSUQgPSBzcWwtPmdldENvbHVtbkludDY0KDIpOwor
ICAgICAgICAgICAgYXV0byByZWNvcmRJRCA9IHNxbC0+Y29sdW1uSW50NjQoMik7CiAKICAgICAg
ICAgICAgIEFTU0VSVChyZWNvcmRJRCk7CiAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBibG9i
VVJMcywgYmxvYkZpbGVQYXRoczsKQEAgLTI2NzQsOCArMjY1Nyw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW50NjRf
dCBpbmRleElECiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CiAKICAgICBJREJLZXlEYXRh
IG9iamVjdFN0b3JlS2V5OwotICAgIFZlY3Rvcjx1aW50OF90PiBrZXlWZWN0b3I7Ci0gICAgc3Fs
LT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMCwga2V5VmVjdG9yKTsKKyAgICBhdXRvIGtleVZlY3Rv
ciA9IHNxbC0+Y29sdW1uQmxvYigwKTsKIAogICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlEYXRh
KGtleVZlY3Rvci5kYXRhKCksIGtleVZlY3Rvci5zaXplKCksIG9iamVjdFN0b3JlS2V5KSkgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBrZXkgbG9va2luZyB1cCBp
bmRleCByZWNvcmQgaW4gZGF0YWJhc2UiKTsKQEAgLTI2ODcsMTAgKzI2NjksOCBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5
KGludDY0X3QgaW5kZXhJRAogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogICAgIH0KIAot
ICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZVZlY3RvcjsKLSAgICBzcWwtPmdldENvbHVtbkJsb2JB
c1ZlY3RvcigxLCB2YWx1ZVZlY3Rvcik7Ci0KLSAgICBpbnQ2NF90IHJlY29yZElEID0gc3FsLT5n
ZXRDb2x1bW5JbnQ2NCgyKTsKKyAgICBhdXRvIHZhbHVlVmVjdG9yID0gc3FsLT5jb2x1bW5CbG9i
KDEpOworICAgIGludDY0X3QgcmVjb3JkSUQgPSBzcWwtPmNvbHVtbkludDY0KDIpOwogICAgIFZl
Y3RvcjxTdHJpbmc+IGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzOwogICAgIGF1dG8gZXJyb3IgPSBn
ZXRCbG9iUmVjb3Jkc0Zvck9iamVjdFN0b3JlUmVjb3JkKHJlY29yZElELCBibG9iVVJMcywgYmxv
YkZpbGVQYXRocyk7CiAgICAgQVNTRVJUKGJsb2JVUkxzLnNpemUoKSA9PSBibG9iRmlsZVBhdGhz
LnNpemUoKSk7CkBAIC0yNzcxLDcgKzI3NTEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpbwog
ICAgIGlmIChzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKQogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gY291bnQgcmVjb3JkcyJfcyB9Owog
Ci0gICAgb3V0Q291bnQgPSBzdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKKyAgICBvdXRDb3Vu
dCA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDApOwogICAgIHJldHVybiBJREJFcnJvciB7IH07CiB9
CiAKQEAgLTI3ODksNyArMjc2OSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5jaGVja2VkR2V0S2V5R2VuZXJhdG9yVmFsdWUoaW50NjRfdCBvYmplY3RTdG9yCiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkVycm9yIGZpbmRpbmcgY3VycmVudCBr
ZXkgZ2VuZXJhdG9yIHZhbHVlIGluIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgaW50NjRf
dCB2YWx1ZSA9IHNxbC0+Z2V0Q29sdW1uSW50NjQoMCk7CisgICAgaW50NjRfdCB2YWx1ZSA9IHNx
bC0+Y29sdW1uSW50NjQoMCk7CiAgICAgaWYgKHZhbHVlIDwgMCkKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgQ29uc3RyYWludEVycm9yLCAiQ3VycmVudCBrZXkgZ2VuZXJhdG9yIHZhbHVlIGZy
b20gZGF0YWJhc2UgaXMgaW52YWxpZCIgfTsKIApAQCAtMjk4Niw3ICsyOTY2LDcgQEAgdm9pZCBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJhY2tpbmdTdG9yZSgpCiAgICAgICAgICAgICBp
ZiAoc3FsKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlc3VsdCA9IHNxbC0+c3RlcCgpOwogICAg
ICAgICAgICAgICAgIHdoaWxlIChyZXN1bHQgPT0gU1FMSVRFX1JPVykgewotICAgICAgICAgICAg
ICAgICAgICBibG9iRmlsZXMuYXBwZW5kKHNxbC0+Z2V0Q29sdW1uVGV4dCgwKSk7CisgICAgICAg
ICAgICAgICAgICAgIGJsb2JGaWxlcy5hcHBlbmQoc3FsLT5jb2x1bW5UZXh0KDApKTsKICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gc3FsLT5zdGVwKCk7CiAgICAgICAgICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDA1NjdlYTliMzZjMmM2NDE4NDJmNzM3NjljZDZj
MjMwOGI3ZjhkYTMuLjIzN2VjYmIxYjFlMDdkMTQ5M2FkZjI1NzhhNmFmNGY0MjVhM2MxNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC01NTIsMTEgKzU1Miw5IEBAIFNRTGl0ZUlEQkN1cnNv
cjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZChT
UUxpdGVDdXJzCiAgICAgICAgIHN0YXRlbWVudCA9IG1fc3RhdGVtZW50LmdldCgpOwogICAgIH0K
IAotICAgIHJlY29yZC5yb3dJRCA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCk7CisgICAg
cmVjb3JkLnJvd0lEID0gc3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgwKTsKICAgICBBU1NFUlQocmVj
b3JkLnJvd0lEKTsKLQotICAgIFZlY3Rvcjx1aW50OF90PiBrZXlEYXRhOwotICAgIHN0YXRlbWVu
dC0+Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEsIGtleURhdGEpOworICAgIGF1dG8ga2V5RGF0YSA9
IHN0YXRlbWVudC0+Y29sdW1uQmxvYigxKTsKIAogICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlE
YXRhKGtleURhdGEuZGF0YSgpLCBrZXlEYXRhLnNpemUoKSwgcmVjb3JkLnJlY29yZC5rZXkpKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGtleSBkYXRhIGZyb20g
ZGF0YWJhc2Ugd2hpbGUgYWR2YW5jaW5nIGN1cnNvciIpOwpAQCAtNTY0LDcgKzU2Miw3IEBAIFNR
TGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNo
TmV4dFJlY29yZChTUUxpdGVDdXJzCiAgICAgICAgIHJldHVybiBGZXRjaFJlc3VsdDo6RmFpbHVy
ZTsKICAgICB9CiAKLSAgICBzdGF0ZW1lbnQtPmdldENvbHVtbkJsb2JBc1ZlY3RvcigyLCBrZXlE
YXRhKTsKKyAgICBrZXlEYXRhID0gc3RhdGVtZW50LT5jb2x1bW5CbG9iKDIpOwogCiAgICAgLy8g
VGhlIHByaW1hcnlLZXkgb2YgYW4gT2JqZWN0U3RvcmUgY3Vyc29yIGlzIHRoZSBzYW1lIGFzIGl0
cyBrZXkuCiAgICAgaWYgKG1faW5kZXhJRCA9PSBJREJJbmRleEluZm86OkludmFsaWRJZCkgewpA
QCAtNjAyLDEwICs2MDAsOSBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlE
QkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogCiAgICAgICAgIGlu
dCByZXN1bHQgPSBtX2NhY2hlZE9iamVjdFN0b3JlU3RhdGVtZW50LT5zdGVwKCk7CiAKLSAgICAg
ICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgICAgICBtX2NhY2hlZE9iamVj
dFN0b3JlU3RhdGVtZW50LT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMCwga2V5RGF0YSk7Ci0gICAg
ICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0geyBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoa2V5RGF0YSkpIH07Ci0gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNR
TElURV9ET05FKSB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX1JPVykKKyAgICAgICAg
ICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSB7IFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUo
bV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudC0+Y29sdW1uQmxvYigwKSkgfTsKKyAgICAgICAg
ZWxzZSBpZiAocmVzdWx0ID09IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlu
ZGljYXRlcyB0aGF0IHRoZSByZWNvcmQgd2UncmUgdHJ5aW5nIHRvIHJldHJpZXZlIGhhcyBiZWVu
IHJlbW92ZWQgZnJvbSB0aGUgb2JqZWN0IHN0b3JlLgogICAgICAgICAgICAgLy8gU2tpcCBvdmVy
IGl0LgogICAgICAgICAgICAgcmV0dXJuIEZldGNoUmVzdWx0OjpTaG91bGRGZXRjaEFnYWluOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRl
eCA2NjY0MzNiOTg3M2VlODI1MzNlNzJmNDYzZWZiNjU1OTUwZmRjYmEwLi4xMTc0ZTZiY2RkMDYw
ZTY2YzYzMzk4MzJlY2I4ZDFlODFhZDVkODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHN0YXRpYyBi
b29sIHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIsIGNv
bnN0IFN0cmluZyYgcXVlCiAKICAgICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50LT5zdGVwKCk7CiAg
ICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIHJlc3VsdFN0cmluZyA9IHN0
YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgwKTsKKyAgICAgICAgcmVzdWx0U3RyaW5nID0gc3RhdGVt
ZW50LT5jb2x1bW5UZXh0KDApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYg
KHJlc3VsdCA9PSBTUUxJVEVfRE9ORSkgewpAQCAtNzE5LDcgKzcxOSw3IEBAIFZlY3RvcjxTdHJp
bmc+IERhdGFiYXNlOjpwZXJmb3JtR2V0VGFibGVOYW1lcygpCiAgICAgVmVjdG9yPFN0cmluZz4g
dGFibGVOYW1lczsKICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gc3RhdGVt
ZW50LT5zdGVwKCkpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgU3RyaW5nIG5hbWUgPSBzdGF0
ZW1lbnQtPmdldENvbHVtblRleHQoMCk7CisgICAgICAgIFN0cmluZyBuYW1lID0gc3RhdGVtZW50
LT5jb2x1bW5UZXh0KDApOwogICAgICAgICBpZiAobmFtZSAhPSB1bnF1YWxpZmllZEluZm9UYWJs
ZU5hbWUpCiAgICAgICAgICAgICB0YWJsZU5hbWVzLmFwcGVuZChuYW1lKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5jcHAKaW5kZXggM2RhZWYxZmFkNDJhNWFkNGM3NjI2YTcwNzE0MWZhNDIxYmYxOTM4OC4uMjkx
MDgzYjFmMzk3MmQyNjk3Yjk1YmY1ZDRkZTcxZmE5OTExMjAzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAt
MzM2LDcgKzMzNiw3IEBAIFN0cmluZyBEYXRhYmFzZVRyYWNrZXI6OmZ1bGxQYXRoRm9yRGF0YWJh
c2VOb0xvY2soY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnCiAKICAgICAgICAgaW50IHJl
c3VsdCA9IHN0YXRlbWVudC0+c3RlcCgpOwogICAgICAgICBpZiAocmVzdWx0ID09IFNRTElURV9S
T1cpCi0gICAgICAgICAgICByZXR1cm4gU1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VG
aWxlTmFtZVRvUGF0aChvcmlnaW5QYXRoLCBzdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCkpOwor
ICAgICAgICAgICAgcmV0dXJuIFNRTGl0ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmlsZU5h
bWVUb1BhdGgob3JpZ2luUGF0aCwgc3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKTsKICAgICAgICAg
aWYgKCFjcmVhdGVJZk5vdEV4aXN0cykKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApA
QCAtMzgxLDcgKzM4MSw3IEBAIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IERhdGFiYXNlVHJh
Y2tlcjo6b3JpZ2lucygpCiAgICAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsK
ICAgICBpbnQgc3RlcFJlc3VsdDsKICAgICB3aGlsZSAoKHN0ZXBSZXN1bHQgPSBzdGF0ZW1lbnQt
PnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgb3JpZ2lucy5hcHBlbmQoU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4
dCgwKSktPmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgb3JpZ2lucy5hcHBlbmQoU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgw
KSktPmlzb2xhdGVkQ29weSgpKTsKICAgICBvcmlnaW5zLnNocmlua1RvRml0KCk7CiAKICAgICBp
ZiAoc3RlcFJlc3VsdCAhPSBTUUxJVEVfRE9ORSkKQEAgLTQwNiw3ICs0MDYsNyBAQCBWZWN0b3I8
U3RyaW5nPiBEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlTmFtZXNOb0xvY2soY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBvcgogICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwogICAgIGludCByZXN1
bHQ7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQtPnN0ZXAoKSkgPT0gU1FMSVRFX1JP
VykKLSAgICAgICAgbmFtZXMuYXBwZW5kKHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgwKSk7Cisg
ICAgICAgIG5hbWVzLmFwcGVuZChzdGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpOwogICAgIG5hbWVz
LnNocmlua1RvRml0KCk7CiAKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKSB7CkBAIC00
NTQsOCArNDU0LDggQEAgRGF0YWJhc2VEZXRhaWxzIERhdGFiYXNlVHJhY2tlcjo6ZGV0YWlsc0Zv
ck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb24KICAgICAgICAgICAgIExPR19F
UlJPUigiRXJyb3IgcmV0cmlldmluZyBkZXRhaWxzIGZvciBkYXRhYmFzZSAlcyBpbiBvcmlnaW4g
JXMgZnJvbSB0cmFja2VyIGRhdGFiYXNlIiwgbmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW5JZGVu
dGlmaWVyLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuIERhdGFiYXNlRGV0YWls
cygpOwogICAgICAgICB9Ci0gICAgICAgIGRpc3BsYXlOYW1lID0gc3RhdGVtZW50LT5nZXRDb2x1
bW5UZXh0KDApOwotICAgICAgICBleHBlY3RlZFVzYWdlID0gc3RhdGVtZW50LT5nZXRDb2x1bW5J
bnQ2NCgxKTsKKyAgICAgICAgZGlzcGxheU5hbWUgPSBzdGF0ZW1lbnQtPmNvbHVtblRleHQoMCk7
CisgICAgICAgIGV4cGVjdGVkVXNhZ2UgPSBzdGF0ZW1lbnQtPmNvbHVtbkludDY0KDEpOwogICAg
IH0KIAogICAgIFN0cmluZyBwYXRoID0gZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUs
IGZhbHNlKTsKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0RGF0
YWJhc2VEZXRhaWxzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdAogCiAg
ICAgICAgIGludCByZXN1bHQgPSBzdGF0ZW1lbnQtPnN0ZXAoKTsKICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBTUUxJVEVfUk9XKQotICAgICAgICAgICAgZ3VpZCA9IHN0YXRlbWVudC0+Z2V0Q29sdW1u
SW50NjQoMCk7CisgICAgICAgICAgICBndWlkID0gc3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgwKTsK
IAogICAgICAgICBpZiAoIWd1aWQpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gU1FMSVRF
X0RPTkUpCkBAIC02ODEsNyArNjgxLDcgQEAgdWludDY0X3QgRGF0YWJhc2VUcmFja2VyOjpxdW90
YU5vTG9jayhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKICAgICBzdGF0ZW1lbnQt
PmJpbmRUZXh0KDEsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAgICBpZiAoc3Rh
dGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgcXVvdGEgPSBzdGF0ZW1lbnQt
PmdldENvbHVtbkludDY0KDApOworICAgICAgICBxdW90YSA9IHN0YXRlbWVudC0+Y29sdW1uSW50
NjQoMCk7CiAKICAgICByZXR1cm4gcXVvdGE7CiB9CkBAIC0xMjA1LDcgKzEyMDUsNyBAQCB2b2lk
IERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIG9yaWdpbi5kYXRhYmFzZUlk
ZW50aWZpZXIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQtPmJpbmRUZXh0
KDIsIGRhdGFiYXNlTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVtZW50
LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
YmFzZUZpbGVOYW1lID0gc3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDApOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFiYXNlRmlsZU5hbWUgPSBzdGF0ZW1lbnQtPmNvbHVtblRleHQo
MCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgZm91bmREZWxldGVkRGF0YWJhc2UgPSBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAppbmRl
eCAwYzc2ZmNhMDg5NDljN2VlNTU4YTZiMThmNDllMzIxOTM5NDc5YWFkLi5iNzgwNTgyZGM5Nzk1
OTIzMzQ2M2Y4ZmQ4YWMxOWQwMzlhZWI4ODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCkBAIC0xNTQsMTEgKzE1NCwxMSBA
QCBib29sIFNRTFN0YXRlbWVudDo6ZXhlY3V0ZShEYXRhYmFzZSYgZGIpCiAgICAgICAgIGF1dG8m
IHJvd3MgPSByZXN1bHRTZXQtPnJvd3MoKTsKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGNvbHVtbkNvdW50OyBpKyspCi0gICAgICAgICAgICByb3dzLmFkZENvbHVtbihzdGF0ZW1lbnQt
PmdldENvbHVtbk5hbWUoaSkpOworICAgICAgICAgICAgcm93cy5hZGRDb2x1bW4oc3RhdGVtZW50
LT5jb2x1bW5OYW1lKGkpKTsKIAogICAgICAgICBkbyB7CiAgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGNvbHVtbkNvdW50OyBpKyspCi0gICAgICAgICAgICAgICAgcm93cy5hZGRSZXN1
bHQoc3RhdGVtZW50LT5nZXRDb2x1bW5WYWx1ZShpKSk7CisgICAgICAgICAgICAgICAgcm93cy5h
ZGRSZXN1bHQoc3RhdGVtZW50LT5jb2x1bW5WYWx1ZShpKSk7CiAKICAgICAgICAgICAgIHJlc3Vs
dCA9IHN0YXRlbWVudC0+c3RlcCgpOwogICAgICAgICB9IHdoaWxlIChyZXN1bHQgPT0gU1FMSVRF
X1JPVyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAyYjBhNjUzNmY5NGUzNDEzZTM1MzYyYmQz
NGZmYjE1MmU3NjU4MTUwLi44YjI3MTFmYmQ1YzhhNWUyZTc4ZWZkNDQzZTg1MjE5NjQ4N2M1YmRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTExNCwxNCArMTE0LDE0IEBAIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZUdyb3VwKGNvbnN0
IFVSTCYgbWFuaWZlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKLSAgICB1
bnNpZ25lZCBuZXdlc3RDYWNoZVN0b3JhZ2VJRCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0
ZW1lbnQtPmdldENvbHVtbkludDY0KDIpKTsKKyAgICB1bnNpZ25lZCBuZXdlc3RDYWNoZVN0b3Jh
Z2VJRCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQtPmNvbHVtbkludDY0KDIpKTsK
IAogICAgIGF1dG8gY2FjaGUgPSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOwogICAg
IGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAKICAgICBhdXRv
JiBncm91cCA9ICpuZXcgQXBwbGljYXRpb25DYWNoZUdyb3VwKCp0aGlzLCBtYW5pZmVzdFVSTCk7
Ci0gICAgZ3JvdXAuc2V0U3RvcmFnZUlEKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQt
PmdldENvbHVtbkludDY0KDApKSk7CisgICAgZ3JvdXAuc2V0U3RvcmFnZUlEKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdGF0ZW1lbnQtPmNvbHVtbkludDY0KDApKSk7CiAgICAgZ3JvdXAuc2V0TmV3
ZXN0Q2FjaGUoY2FjaGUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgcmV0dXJuICZncm91cDsKIH0g
ICAgCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9h
ZE1hbmlmZXN0SG9zdEhhc2hlcygpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICB3aGlsZSAo
c3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgbV9jYWNoZUhvc3RTZXQu
YWRkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQtPmdldENvbHVtbkludDY0KDApKSk7
CisgICAgICAgIG1fY2FjaGVIb3N0U2V0LmFkZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVt
ZW50LT5jb2x1bW5JbnQ2NCgwKSkpOwogfSAgICAKIAogQXBwbGljYXRpb25DYWNoZUdyb3VwKiBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChjb25zdCBVUkwmIHVybCkK
QEAgLTIxOSw3ICsyMTksNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpjYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgIAogICAgIGlu
dCByZXN1bHQ7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQtPnN0ZXAoKSkgPT0gU1FM
SVRFX1JPVykgewotICAgICAgICBVUkwgbWFuaWZlc3RVUkwgPSBVUkwoeyB9LCBzdGF0ZW1lbnQt
PmdldENvbHVtblRleHQoMSkpOworICAgICAgICBVUkwgbWFuaWZlc3RVUkwgPSBVUkwoeyB9LCBz
dGF0ZW1lbnQtPmNvbHVtblRleHQoMSkpOwogCiAgICAgICAgIGlmIChtX2NhY2hlc0luTWVtb3J5
LmNvbnRhaW5zKG1hbmlmZXN0VVJMLnN0cmluZygpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMjI5LDcgKzIyOSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICAgICAgLy8g
V2UgZm91bmQgYSBjYWNoZSBncm91cCB0aGF0IG1hdGNoZXMuIE5vdyBjaGVjayBpZiB0aGUgbmV3
ZXN0IGNhY2hlIGhhcyBhIHJlc291cmNlIHdpdGgKICAgICAgICAgLy8gYSBtYXRjaGluZyBVUkwu
Ci0gICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c3RhdGVtZW50LT5nZXRDb2x1bW5JbnQ2NCgyKSk7CisgICAgICAgIHVuc2lnbmVkIG5ld2VzdENh
Y2hlSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7
CiAgICAgICAgIGF1dG8gY2FjaGUgPSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVJRCk7CiAgICAgICAg
IGlmICghY2FjaGUpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTI0MSw3ICsyNDEsNyBAQCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3Vw
Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
YXV0byYgZ3JvdXAgPSAqbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgqdGhpcywgbWFuaWZlc3RV
UkwpOwotICAgICAgICBncm91cC5zZXRTdG9yYWdlSUQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0
YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCkpKTsKKyAgICAgICAgZ3JvdXAuc2V0U3RvcmFnZUlE
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQtPmNvbHVtbkludDY0KDApKSk7CiAgICAg
ICAgIGdyb3VwLnNldE5ld2VzdENhY2hlKGNhY2hlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAg
ICBtX2NhY2hlc0luTWVtb3J5LnNldChncm91cC5tYW5pZmVzdFVSTCgpLnN0cmluZygpLCAmZ3Jv
dXApOwogCkBAIC0yODYsNyArMjg2LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICAK
ICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gc3RhdGVtZW50LT5zdGVwKCkp
ID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgVVJMIG1hbmlmZXN0VVJMID0gVVJMKHsgfSwgc3Rh
dGVtZW50LT5nZXRDb2x1bW5UZXh0KDEpKTsKKyAgICAgICAgVVJMIG1hbmlmZXN0VVJMID0gVVJM
KHsgfSwgc3RhdGVtZW50LT5jb2x1bW5UZXh0KDEpKTsKIAogICAgICAgICBpZiAobV9jYWNoZXNJ
bk1lbW9yeS5jb250YWlucyhtYW5pZmVzdFVSTC5zdHJpbmcoKSkpCiAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTI5Nyw3ICsyOTcsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgVQogCiAgICAg
ICAgIC8vIFdlIGZvdW5kIGEgY2FjaGUgZ3JvdXAgdGhhdCBtYXRjaGVzLiBOb3cgY2hlY2sgaWYg
dGhlIG5ld2VzdCBjYWNoZSBoYXMgYSByZXNvdXJjZSB3aXRoCiAgICAgICAgIC8vIGEgbWF0Y2hp
bmcgZmFsbGJhY2sgbmFtZXNwYWNlLgotICAgICAgICB1bnNpZ25lZCBuZXdlc3RDYWNoZUlEID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMikpOworICAg
ICAgICB1bnNpZ25lZCBuZXdlc3RDYWNoZUlEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRl
bWVudC0+Y29sdW1uSW50NjQoMikpOwogICAgICAgICBhdXRvIGNhY2hlID0gbG9hZENhY2hlKG5l
d2VzdENhY2hlSUQpOwogCiAgICAgICAgIFVSTCBmYWxsYmFja1VSTDsKQEAgLTMwOSw3ICszMDks
NyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxs
YmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgVQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgYXV0byYgZ3JvdXAgPSAqbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgqdGhpcywgbWFu
aWZlc3RVUkwpOwotICAgICAgICBncm91cC5zZXRTdG9yYWdlSUQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCkpKTsKKyAgICAgICAgZ3JvdXAuc2V0U3Rv
cmFnZUlEKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQtPmNvbHVtbkludDY0KDApKSk7
CiAgICAgICAgIGdyb3VwLnNldE5ld2VzdENhY2hlKGNhY2hlLnJlbGVhc2VOb25OdWxsKCkpOwog
CiAgICAgICAgIG1fY2FjaGVzSW5NZW1vcnkuc2V0KGdyb3VwLm1hbmlmZXN0VVJMKCkuc3RyaW5n
KCksICZncm91cCk7CkBAIC00MjYsOCArNDI2LDggQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6Y2FsY3VsYXRlUXVvdGFGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWcK
IAogICAgIC8vIFJldHVybiB0aGUgcXVvdGEsIG9yIGlmIGl0IHdhcyBudWxsIHRoZSBkZWZhdWx0
LgogICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBib29sIHdhc05vUmVj
b3JkID0gIXN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCk7Ci0gICAgICAgIHF1b3RhID0gd2Fz
Tm9SZWNvcmQgPyBtX2RlZmF1bHRPcmlnaW5RdW90YSA6IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50
NjQoMSk7CisgICAgICAgIGJvb2wgd2FzTm9SZWNvcmQgPSAhc3RhdGVtZW50LT5jb2x1bW5JbnQ2
NCgwKTsKKyAgICAgICAgcXVvdGEgPSB3YXNOb1JlY29yZCA/IG1fZGVmYXVsdE9yaWdpblF1b3Rh
IDogc3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgxKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2Fs
Y3VsYXRlVXNhZ2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJgogICAgIGludCBy
ZXN1bHQgPSBzdGF0ZW1lbnQtPnN0ZXAoKTsKIAogICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX1JP
VykgewotICAgICAgICB1c2FnZSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCk7CisgICAg
ICAgIHVzYWdlID0gc3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgwKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCkBAIC01MDAsMTEgKzUwMCwxMSBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpjYWxjdWxhdGVSZW1haW5pbmdTaXplRm9yT3JpZ2luRXhjbHVkaW5nQ2FjaGUoY29u
cwogICAgIC8vIElmIHRoZSBjb3VudCB3YXMgMCB0aGF0IHRoZW4gd2UgaGF2ZSB0byBxdWVyeSB0
aGUgb3JpZ2luIHRhYmxlIGRpcmVjdGx5CiAgICAgLy8gZm9yIGl0cyBxdW90YS4gT3RoZXJ3aXNl
IHdlIGNhbiB1c2UgdGhlIGNhbGN1bGF0ZWQgdmFsdWUuCiAgICAgaWYgKHJlc3VsdCA9PSBTUUxJ
VEVfUk9XKSB7Ci0gICAgICAgIGludDY0X3QgbnVtYmVyT2ZDYWNoZXMgPSBzdGF0ZW1lbnQtPmdl
dENvbHVtbkludDY0KDApOworICAgICAgICBpbnQ2NF90IG51bWJlck9mQ2FjaGVzID0gc3RhdGVt
ZW50LT5jb2x1bW5JbnQ2NCgwKTsKICAgICAgICAgaWYgKG51bWJlck9mQ2FjaGVzID09IDApCiAg
ICAgICAgICAgICBjYWxjdWxhdGVRdW90YUZvck9yaWdpbihvcmlnaW4sIHJlbWFpbmluZ1NpemUp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW1haW5pbmdTaXplID0gc3RhdGVtZW50LT5n
ZXRDb2x1bW5JbnQ2NCgxKTsKKyAgICAgICAgICAgIHJlbWFpbmluZ1NpemUgPSBzdGF0ZW1lbnQt
PmNvbHVtbkludDY0KDEpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTU1NSw3
ICs1NTUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp2ZXJpZnlTY2hlbWFWZXJz
aW9uKCkKICAgICBBU1NFUlQoU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpoYXNUcmFuc2FjdGlvbklu
UHJvZ3Jlc3MoKSk7CiAKICAgICBhdXRvIHZlcnNpb25TdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSB1c2VyX3ZlcnNpb24iX3MpOwotICAgIGludCB2ZXJzaW9u
ID0gdmVyc2lvblN0YXRlbWVudCA/IHZlcnNpb25TdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSA6
IDA7CisgICAgaW50IHZlcnNpb24gPSB2ZXJzaW9uU3RhdGVtZW50ID8gdmVyc2lvblN0YXRlbWVu
dC0+Y29sdW1uSW50KDApIDogMDsKICAgICBpZiAodmVyc2lvbiA9PSBzY2hlbWFWZXJzaW9uKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTExMDgsMTggKzExMDgsMTQgQEAgUmVmUHRyPEFwcGxpY2F0
aW9uQ2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3Rv
cmFnZUlEKQogCiAgICAgaW50IHJlc3VsdDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IGNhY2hlU3Rh
dGVtZW50LT5zdGVwKCkpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgVVJMIHVybCh7IH0sIGNh
Y2hlU3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDApKTsKKyAgICAgICAgVVJMIHVybCh7IH0sIGNh
Y2hlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKTsKICAgICAgICAgCi0gICAgICAgIGludCBodHRw
U3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMSk7CisgICAgICAgIGlu
dCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQoMSk7CiAKLSAgICAg
ICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVudC0+
Z2V0Q29sdW1uSW50NjQoMikpOwotCi0gICAgICAgIFZlY3RvcjxjaGFyPiBibG9iOwotICAgICAg
ICBjYWNoZVN0YXRlbWVudC0+Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDYsIGJsb2IpOwotICAgICAg
ICAKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShibG9i
KSk7CisgICAgICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVT
dGF0ZW1lbnQtPmNvbHVtbkludDY0KDIpKTsKKyAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOwogICAgICAgICAKLSAg
ICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCg3KTsKKyAg
ICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uVGV4dCg3KTsKICAgICAg
ICAgbG9uZyBsb25nIHNpemUgPSAwOwogICAgICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBzaXplID0gZGF0YS0+c2l6ZSgpOwpAQCAtMTEyOCwxMyArMTEyNCwxMyBAQCBSZWZQ
dHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1
bnNpZ25lZCBzdG9yYWdlSUQpCiAgICAgICAgICAgICBzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNp
emUocGF0aCkudmFsdWVPcigwKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RyaW5n
IG1pbWVUeXBlID0gY2FjaGVTdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMyk7Ci0gICAgICAgIFN0
cmluZyB0ZXh0RW5jb2RpbmdOYW1lID0gY2FjaGVTdGF0ZW1lbnQtPmdldENvbHVtblRleHQoNCk7
CisgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDMp
OworICAgICAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZSA9IGNhY2hlU3RhdGVtZW50LT5jb2x1
bW5UZXh0KDQpOwogICAgICAgICAKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSh1
cmwsIG1pbWVUeXBlLCBzaXplLCB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUFN0YXR1c0NvZGUoaHR0cFN0YXR1c0NvZGUpOwogCi0gICAgICAgIFN0cmluZyBoZWFk
ZXJzID0gY2FjaGVTdGF0ZW1lbnQtPmdldENvbHVtblRleHQoNSk7CisgICAgICAgIFN0cmluZyBo
ZWFkZXJzID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNSk7CiAgICAgICAgIHBhcnNlSGVh
ZGVycyhoZWFkZXJzLCByZXNwb25zZSk7CiAgICAgICAgIAogICAgICAgICBhdXRvIHJlc291cmNl
ID0gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUodXJsLCByZXNwb25zZSwgdHlwZSwg
V1RGTW92ZShkYXRhKSwgcGF0aCk7CkBAIC0xMTYxLDcgKzExNTcsNyBAQCBSZWZQdHI8QXBwbGlj
YXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBz
dG9yYWdlSUQpCiAgICAgCiAgICAgVmVjdG9yPFVSTD4gYWxsb3dsaXN0OwogICAgIHdoaWxlICgo
cmVzdWx0ID0gYWxsb3dsaXN0U3RhdGVtZW50LT5zdGVwKCkpID09IFNRTElURV9ST1cpCi0gICAg
ICAgIGFsbG93bGlzdC5hcHBlbmQoVVJMKHsgfSwgYWxsb3dsaXN0U3RhdGVtZW50LT5nZXRDb2x1
bW5UZXh0KDApKSk7CisgICAgICAgIGFsbG93bGlzdC5hcHBlbmQoVVJMKHsgfSwgYWxsb3dsaXN0
U3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKSk7CiAKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9E
T05FKQogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBsb2FkIGNhY2hlIG9ubGluZSBhbGxv
d2xpc3QsIGVycm9yIFwiJXNcIiIsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwpAQCAtMTE3
OCw3ICsxMTc0LDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgIGlmIChyZXN1bHQgIT0g
U1FMSVRFX1JPVykKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgbG9hZCBjYWNoZSBvbmxp
bmUgYWxsb3dsaXN0IHdpbGRjYXJkIGZsYWcsIGVycm9yIFwiJXNcIiIsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogCi0gICAgY2FjaGUtPnNldEFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyhh
bGxvd2xpc3RXaWxkY2FyZFN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCkpOworICAgIGNhY2hl
LT5zZXRBbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMoYWxsb3dsaXN0V2lsZGNhcmRTdGF0ZW1lbnQt
PmNvbHVtbkludDY0KDApKTsKIAogICAgIGlmIChhbGxvd2xpc3RXaWxkY2FyZFN0YXRlbWVudC0+
c3RlcCgpICE9IFNRTElURV9ET05FKQogICAgICAgICBMT0dfRVJST1IoIlRvbyBtYW55IHJvd3Mg
Zm9yIG9ubGluZSBhbGxvd2xpc3Qgd2lsZGNhcmQgZmxhZyIpOwpAQCAtMTE5MSw3ICsxMTg3LDcg
QEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2Fk
Q2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgIAogICAgIEZhbGxiYWNrVVJMVmVjdG9yIGZh
bGxiYWNrVVJMczsKICAgICB3aGlsZSAoKHJlc3VsdCA9IGZhbGxiYWNrU3RhdGVtZW50LT5zdGVw
KCkpID09IFNRTElURV9ST1cpCi0gICAgICAgIGZhbGxiYWNrVVJMcy5hcHBlbmQoc3RkOjptYWtl
X3BhaXIoVVJMKHsgfSwgZmFsbGJhY2tTdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCkpLCBVUkwo
eyB9LCBmYWxsYmFja1N0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgxKSkpKTsKKyAgICAgICAgZmFs
bGJhY2tVUkxzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihVUkwoeyB9LCBmYWxsYmFja1N0YXRlbWVu
dC0+Y29sdW1uVGV4dCgwKSksIFVSTCh7IH0sIGZhbGxiYWNrU3RhdGVtZW50LT5jb2x1bW5UZXh0
KDEpKSkpOwogCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfRE9ORSkKICAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZCBub3QgbG9hZCBmYWxsYmFjayBVUkxzLCBlcnJvciBcIiVzXCIiLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKQEAgLTEzMjEsNyArMTMxNyw3IEBAIE9wdGlvbmFsPFZlY3Rv
cjxVUkw+PiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bWFuaWZlc3RVUkxzKCkKIAogICAgIFZl
Y3RvcjxVUkw+IHVybHM7CiAgICAgd2hpbGUgKHNlbGVjdFVSTHMtPnN0ZXAoKSA9PSBTUUxJVEVf
Uk9XKQotICAgICAgICB1cmxzLmFwcGVuZChVUkwoeyB9LCBzZWxlY3RVUkxzLT5nZXRDb2x1bW5U
ZXh0KDApKSk7CisgICAgICAgIHVybHMuYXBwZW5kKFVSTCh7IH0sIHNlbGVjdFVSTHMtPmNvbHVt
blRleHQoMCkpKTsKIAogICAgIHJldHVybiB1cmxzOwogfQpAQCAtMTMzOSw3ICsxMzM1LDcgQEAg
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlQ2FjaGVHcm91cFJlY29yZChjb25z
dCBTdHJpbmcmIG1hbmlmZXN0VVJMKQogICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX1JPVykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50NjRfdCBncm91cElkID0gaWRTdGF0ZW1lbnQt
PmdldENvbHVtbkludDY0KDApOworICAgIGludDY0X3QgZ3JvdXBJZCA9IGlkU3RhdGVtZW50LT5j
b2x1bW5JbnQ2NCgwKTsKIAogICAgIGF1dG8gY2FjaGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnQoIkRFTEVURSBGUk9NIENhY2hlcyBXSEVSRSBjYWNoZUdyb3VwPT8iX3Mp
OwogICAgIGlmICghY2FjaGVTdGF0ZW1lbnQpCkBAIC0xNDIwLDcgKzE0MTYsNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjaGVja0ZvckRlbGV0ZWRSZXNvdXJjZXMoKQogICAgICAg
ICByZXR1cm47CiAgICAgCiAgICAgZG8gewotICAgICAgICBTdHJpbmcgcGF0aCA9IHNlbGVjdFBh
dGhzLT5nZXRDb2x1bW5UZXh0KDApOworICAgICAgICBTdHJpbmcgcGF0aCA9IHNlbGVjdFBhdGhz
LT5jb2x1bW5UZXh0KDApOwogICAgICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgCkBAIC0xNDUzLDcgKzE0NDksNyBAQCBsb25nIGxvbmcgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmZsYXRGaWxlQXJlYVNpemUoKQogICAgIGxvbmcgbG9uZyB0
b3RhbFNpemUgPSAwOwogICAgIFN0cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3Vi
ZGlyZWN0b3J5TmFtZSk7CiAgICAgd2hpbGUgKHNlbGVjdFBhdGhzLT5zdGVwKCkgPT0gU1FMSVRF
X1JPVykgewotICAgICAgICBhdXRvIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBzZWxlY3RQYXRocy0+Z2V0Q29sdW1uVGV4
dCgwKSk7CisgICAgICAgIGF1dG8gZnVsbFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHNlbGVjdFBhdGhzLT5jb2x1bW5UZXh0KDAp
KTsKICAgICAgICAgdG90YWxTaXplICs9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGZ1bGxQYXRoKS52
YWx1ZU9yKDApOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IGExMmYxZTE0NzJlYmZkOWViZTE1
M2JkN2FhY2EyOTQ5NjZlYjZmMmIuLjA1ZDYyNWQwMTYxZGNmNGMyNzAwMTA3MzQ2NWQyNTMxZDRm
MTU5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckRCLmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgQ29va2llSmFyREI6OnZl
cmlmeVNjaGVtYVZlcnNpb24oKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHN0YXRlbWVu
dCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiUFJBR01BIHVzZXJfdmVyc2lvbiJfcyk7
Ci0gICAgaW50IHZlcnNpb24gPSBzdGF0ZW1lbnQgPyBzdGF0ZW1lbnQtPmdldENvbHVtbkludCgw
KSA6IDA7CisgICAgaW50IHZlcnNpb24gPSBzdGF0ZW1lbnQgPyBzdGF0ZW1lbnQtPmNvbHVtbklu
dCgwKSA6IDA7CiAgICAgaWYgKHZlcnNpb24gPT0gc2NoZW1hVmVyc2lvbikKICAgICAgICAgcmV0
dXJuOwogCkBAIC0yOTIsNyArMjkyLDcgQEAgYm9vbCBDb29raWVKYXJEQjo6Y2hlY2tEYXRhYmFz
ZVZhbGlkaXR5KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFN0cmluZyBy
ZXN1bHRUZXh0ID0gaW50ZWdyaXR5LT5nZXRDb2x1bW5UZXh0KDApOworICAgIFN0cmluZyByZXN1
bHRUZXh0ID0gaW50ZWdyaXR5LT5jb2x1bW5UZXh0KDApOwogCiAgICAgaWYgKHJlc3VsdFRleHQg
IT0gIm9rIikgewogICAgICAgICBMT0dfRVJST1IoIkNvb2tpZSBkYXRhYmFzZSBpbnRlZ3JpdHkg
Y2hlY2sgZmFpbGVkIC0gJXMiLCByZXN1bHRUZXh0LmFzY2lpKCkuZGF0YSgpKTsKQEAgLTQxNSwx
NCArNDE1LDE0IEBAIE9wdGlvbmFsPFZlY3RvcjxDb29raWU+PiBDb29raWVKYXJEQjo6c2VhcmNo
Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0CiAgICAgICAgIGlmIChyZXN1bHRz
LnNpemUoKSA+IE1BWF9DT09LSUVfUEVSX0RPTUFJTikKICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgIFN0cmluZyBjb29raWVOYW1lID0gcHN0bXQtPmdldENvbHVtblRleHQoMCk7Ci0gICAg
ICAgIFN0cmluZyBjb29raWVWYWx1ZSA9IHBzdG10LT5nZXRDb2x1bW5UZXh0KDEpOwotICAgICAg
ICBTdHJpbmcgY29va2llRG9tYWluID0gcHN0bXQtPmdldENvbHVtblRleHQoMikuY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKTsKLSAgICAgICAgU3RyaW5nIGNvb2tpZVBhdGggPSBwc3RtdC0+Z2V0
Q29sdW1uVGV4dCgzKTsKLSAgICAgICAgZG91YmxlIGNvb2tpZUV4cGlyZXMgPSAoZG91YmxlKXBz
dG10LT5nZXRDb2x1bW5JbnQ2NCg0KTsKLSAgICAgICAgYm9vbCBjb29raWVIdHRwT25seSA9IChw
c3RtdC0+Z2V0Q29sdW1uSW50KDUpID09IDEpOwotICAgICAgICBib29sIGNvb2tpZVNlY3VyZSA9
IChwc3RtdC0+Z2V0Q29sdW1uSW50KDYpID09IDEpOwotICAgICAgICBib29sIGNvb2tpZVNlc3Np
b24gPSAocHN0bXQtPmdldENvbHVtbkludCg3KSA9PSAxKTsKKyAgICAgICAgU3RyaW5nIGNvb2tp
ZU5hbWUgPSBwc3RtdC0+Y29sdW1uVGV4dCgwKTsKKyAgICAgICAgU3RyaW5nIGNvb2tpZVZhbHVl
ID0gcHN0bXQtPmNvbHVtblRleHQoMSk7CisgICAgICAgIFN0cmluZyBjb29raWVEb21haW4gPSBw
c3RtdC0+Y29sdW1uVGV4dCgyKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgICAgICBT
dHJpbmcgY29va2llUGF0aCA9IHBzdG10LT5jb2x1bW5UZXh0KDMpOworICAgICAgICBkb3VibGUg
Y29va2llRXhwaXJlcyA9IChkb3VibGUpcHN0bXQtPmNvbHVtbkludDY0KDQpOworICAgICAgICBi
b29sIGNvb2tpZUh0dHBPbmx5ID0gKHBzdG10LT5jb2x1bW5JbnQoNSkgPT0gMSk7CisgICAgICAg
IGJvb2wgY29va2llU2VjdXJlID0gKHBzdG10LT5jb2x1bW5JbnQoNikgPT0gMSk7CisgICAgICAg
IGJvb2wgY29va2llU2Vzc2lvbiA9IChwc3RtdC0+Y29sdW1uSW50KDcpID09IDEpOwogCiAgICAg
ICAgIGlmICghQ29va2llVXRpbDo6ZG9tYWluTWF0Y2goY29va2llRG9tYWluLCByZXF1ZXN0SG9z
dCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQ2MywxNiArNDYzLDE2IEBAIFZlY3RvcjxD
b29raWU+IENvb2tpZUphckRCOjpnZXRBbGxDb29raWVzKCkKIAogICAgIHdoaWxlIChwc3RtdC0+
c3RlcCgpID09IFNRTElURV9ST1cpIHsKICAgICAgICAgQ29va2llIGNvb2tpZTsKLSAgICAgICAg
Y29va2llLm5hbWUgPSBwc3RtdC0+Z2V0Q29sdW1uVGV4dCgwKTsKLSAgICAgICAgY29va2llLnZh
bHVlID0gcHN0bXQtPmdldENvbHVtblRleHQoMSk7Ci0gICAgICAgIGNvb2tpZS5kb21haW4gPSBw
c3RtdC0+Z2V0Q29sdW1uVGV4dCgyKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwotICAgICAg
ICBjb29raWUucGF0aCA9IHBzdG10LT5nZXRDb2x1bW5UZXh0KDMpOwotICAgICAgICBkb3VibGUg
Y29va2llRXhwaXJlcyA9IChkb3VibGUpcHN0bXQtPmdldENvbHVtbkludDY0KDQpOworICAgICAg
ICBjb29raWUubmFtZSA9IHBzdG10LT5jb2x1bW5UZXh0KDApOworICAgICAgICBjb29raWUudmFs
dWUgPSBwc3RtdC0+Y29sdW1uVGV4dCgxKTsKKyAgICAgICAgY29va2llLmRvbWFpbiA9IHBzdG10
LT5jb2x1bW5UZXh0KDIpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgICAgIGNvb2tp
ZS5wYXRoID0gcHN0bXQtPmNvbHVtblRleHQoMyk7CisgICAgICAgIGRvdWJsZSBjb29raWVFeHBp
cmVzID0gKGRvdWJsZSlwc3RtdC0+Y29sdW1uSW50NjQoNCk7CiAgICAgICAgIGlmIChjb29raWVF
eHBpcmVzKQogICAgICAgICAgICAgY29va2llLmV4cGlyZXMgPSBjb29raWVFeHBpcmVzOwotICAg
ICAgICBjb29raWUuaHR0cE9ubHkgPSAocHN0bXQtPmdldENvbHVtbkludCg1KSA9PSAxKTsKLSAg
ICAgICAgY29va2llLnNlY3VyZSA9IChwc3RtdC0+Z2V0Q29sdW1uSW50KDYpID09IDEpOwotICAg
ICAgICBjb29raWUuc2Vzc2lvbiA9IChwc3RtdC0+Z2V0Q29sdW1uSW50KDcpID09IDEpOworICAg
ICAgICBjb29raWUuaHR0cE9ubHkgPSAocHN0bXQtPmNvbHVtbkludCg1KSA9PSAxKTsKKyAgICAg
ICAgY29va2llLnNlY3VyZSA9IChwc3RtdC0+Y29sdW1uSW50KDYpID09IDEpOworICAgICAgICBj
b29raWUuc2Vzc2lvbiA9IChwc3RtdC0+Y29sdW1uSW50KDcpID09IDEpOwogICAgICAgICByZXN1
bHQuYXBwZW5kKFdURk1vdmUoY29va2llKSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBA
IC01NjksNyArNTY5LDcgQEAgSGFzaFNldDxTdHJpbmc+IENvb2tpZUphckRCOjphbGxEb21haW5z
KCkKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBkb21haW5zOwogICAgIHdoaWxlIChzdGF0ZW1lbnQt
PnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGF1dG8gZG9tYWluID0gc3RhdGVtZW50
LT5nZXRDb2x1bW5UZXh0KDApOworICAgICAgICBhdXRvIGRvbWFpbiA9IHN0YXRlbWVudC0+Y29s
dW1uVGV4dCgwKTsKICAgICAgICAgZG9tYWlucy5hZGQoZG9tYWluKTsKICAgICB9CiAgICAgcmV0
dXJuIGRvbWFpbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmNwcAppbmRleCA5MDcwZDNkZjBiZDhkYzAyYzA2ZGE4NWZiMjUzY2JlNzY0ZjEyY2I3Li4z
NGRhZjRlZDI5ZWY4MzJmM2FlMDUyY2IyZTU0NTNlMjVkMjI4ZTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTIwMCw3ICsyMDAsNyBA
QCB2b2lkIFNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSgpCiAgICAgICAgIGF1dG8g
d2FsU3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudCgiUFJBR01BIGpvdXJuYWxfbW9kZT1XQUw7
Il9zKTsKICAgICAgICAgaWYgKHdhbFN0YXRlbWVudCAmJiB3YWxTdGF0ZW1lbnQtPnN0ZXAoKSA9
PSBTUUxJVEVfUk9XKSB7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgU3RyaW5nIG1vZGUg
PSB3YWxTdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCk7CisgICAgICAgICAgICBTdHJpbmcgbW9k
ZSA9IHdhbFN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKTsKICAgICAgICAgICAgIGlmICghZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobW9kZSwgIndhbCIpKQogICAgICAgICAgICAgICAgIExP
R19FUlJPUigiam91cm5hbF9tb2RlIG9mIGRhdGFiYXNlIHNob3VsZCBiZSAnV0FMJywgYnV0IGlz
ICclcyciLCBtb2RlLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCkBAIC0yMTIsNyArMjEyLDcgQEAg
dm9pZCBTUUxpdGVEYXRhYmFzZTo6dXNlV0FMSm91cm5hbE1vZGUoKQogICAgICAgICBTUUxpdGVU
cmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CiAgICAg
ICAgIGF1dG8gY2hlY2twb2ludFN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSB3
YWxfY2hlY2twb2ludChUUlVOQ0FURSkiX3MpOwogICAgICAgICBpZiAoY2hlY2twb2ludFN0YXRl
bWVudCAmJiBjaGVja3BvaW50U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAg
ICAgICAgICAgaWYgKGNoZWNrcG9pbnRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSkKKyAgICAg
ICAgICAgIGlmIChjaGVja3BvaW50U3RhdGVtZW50LT5jb2x1bW5JbnQoMCkpCiAgICAgICAgICAg
ICAgICAgTE9HKFNRTERhdGFiYXNlLCAiU1FMaXRlIGRhdGFiYXNlIGNoZWNrcG9pbnQgaXMgYmxv
Y2tlZCIpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIExPR19FUlJPUigiU1FMaXRlIGRh
dGFiYXNlIGZhaWxlZCB0byBjaGVja3BvaW50OiAlcyIsIGxhc3RFcnJvck1zZygpKTsKQEAgLTI3
NSw3ICsyNzUsNyBAQCBpbnQ2NF90IFNRTGl0ZURhdGFiYXNlOjptYXhpbXVtU2l6ZSgpCiAgICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOwogICAgICAgICBlbmFibGVB
dXRob3JpemVyKGZhbHNlKTsKICAgICAgICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVt
ZW50KCJQUkFHTUEgbWF4X3BhZ2VfY291bnQiX3MpOwotICAgICAgICBtYXhQYWdlQ291bnQgPSBz
dGF0ZW1lbnQgPyBzdGF0ZW1lbnQtPmdldENvbHVtbkludDY0KDApIDogMDsKKyAgICAgICAgbWF4
UGFnZUNvdW50ID0gc3RhdGVtZW50ID8gc3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgwKSA6IDA7CiAg
ICAgICAgIGVuYWJsZUF1dGhvcml6ZXIodHJ1ZSk7CiAgICAgfQogCkBAIC0zMTIsNyArMzEyLDcg
QEAgaW50IFNRTGl0ZURhdGFiYXNlOjpwYWdlU2l6ZSgpCiAgICAgICAgIGVuYWJsZUF1dGhvcml6
ZXIoZmFsc2UpOwogICAgICAgICAKICAgICAgICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJlU3Rh
dGVtZW50KCJQUkFHTUEgcGFnZV9zaXplIl9zKTsKLSAgICAgICAgbV9wYWdlU2l6ZSA9IHN0YXRl
bWVudCA/IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApIDogMDsKKyAgICAgICAgbV9wYWdlU2l6
ZSA9IHN0YXRlbWVudCA/IHN0YXRlbWVudC0+Y29sdW1uSW50KDApIDogMDsKICAgICAgICAgCiAg
ICAgICAgIGVuYWJsZUF1dGhvcml6ZXIodHJ1ZSk7CiAgICAgfQpAQCAtMzI5LDcgKzMyOSw3IEBA
IGludDY0X3QgU1FMaXRlRGF0YWJhc2U6OmZyZWVTcGFjZVNpemUoKQogICAgICAgICBlbmFibGVB
dXRob3JpemVyKGZhbHNlKTsKICAgICAgICAgLy8gTm90ZTogZnJlZWxpc3RfY291bnQgd2FzIGFk
ZGVkIGluIFNRTGl0ZSAzLjQuMS4KICAgICAgICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJlU3Rh
dGVtZW50KCJQUkFHTUEgZnJlZWxpc3RfY291bnQiX3MpOwotICAgICAgICBmcmVlbGlzdENvdW50
ID0gc3RhdGVtZW50ID8gc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQ2NCgwKSA6IDA7CisgICAgICAg
IGZyZWVsaXN0Q291bnQgPSBzdGF0ZW1lbnQgPyBzdGF0ZW1lbnQtPmNvbHVtbkludDY0KDApIDog
MDsKICAgICAgICAgZW5hYmxlQXV0aG9yaXplcih0cnVlKTsKICAgICB9CiAKQEAgLTM0NCw3ICsz
NDQsNyBAQCBpbnQ2NF90IFNRTGl0ZURhdGFiYXNlOjp0b3RhbFNpemUoKQogICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKICAgICAgICAgZW5hYmxlQXV0aG9yaXpl
cihmYWxzZSk7CiAgICAgICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudCgiUFJB
R01BIHBhZ2VfY291bnQiX3MpOwotICAgICAgICBwYWdlQ291bnQgPSBzdGF0ZW1lbnQgPyBzdGF0
ZW1lbnQtPmdldENvbHVtbkludDY0KDApIDogMDsKKyAgICAgICAgcGFnZUNvdW50ID0gc3RhdGVt
ZW50ID8gc3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgwKSA6IDA7CiAgICAgICAgIGVuYWJsZUF1dGhv
cml6ZXIodHJ1ZSk7CiAgICAgfQogCkBAIC00MDYsNyArNDA2LDcgQEAgdm9pZCBTUUxpdGVEYXRh
YmFzZTo6Y2xlYXJBbGxUYWJsZXMoKQogICAgIH0KICAgICBWZWN0b3I8U3RyaW5nPiB0YWJsZXM7
CiAgICAgd2hpbGUgKHN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIHRh
Ymxlcy5hcHBlbmQoc3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDApKTsKKyAgICAgICAgdGFibGVz
LmFwcGVuZChzdGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpOwogICAgIGZvciAoYXV0byYgdGFibGUg
OiB0YWJsZXMpIHsKICAgICAgICAgaWYgKCFleGVjdXRlQ29tbWFuZFNsb3coIkRST1AgVEFCTEUg
IiArIHRhYmxlKSkKICAgICAgICAgICAgIExPRyhTUUxEYXRhYmFzZSwgIlVuYWJsZSB0byBkcm9w
IHRhYmxlICVzIiwgdGFibGUuYXNjaWkoKS5kYXRhKCkpOwpAQCAtNTgwLDcgKzU4MCw3IEBAIGJv
b2wgU1FMaXRlRGF0YWJhc2U6OnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpCiB7CiAgICAg
aW50IGF1dG9WYWN1dW1Nb2RlID0gMDsKICAgICBpZiAoYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJl
U3RhdGVtZW50KCJQUkFHTUEgYXV0b192YWN1dW0iX3MpKQotICAgICAgICBhdXRvVmFjdXVtTW9k
ZSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOworICAgICAgICBhdXRvVmFjdXVtTW9kZSA9
IHN0YXRlbWVudC0+Y29sdW1uSW50KDApOwogICAgIGludCBlcnJvciA9IGxhc3RFcnJvcigpOwog
CiAgICAgLy8gQ2hlY2sgaWYgd2UgZ290IGFuIGVycm9yIHdoaWxlIHRyeWluZyB0byBnZXQgdGhl
IHZhbHVlIG9mIHRoZSBhdXRvX3ZhY3V1bSBmbGFnLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCAyMjhkZjA2M2IzODU5ODVjNTUxMDdj
ZjNmMDNiNWYzNmY5ZGU2NmNjLi5hNzcxZjhkNWU1OTg1OTRjZThjMzUyZWNiNzNiOTQyNjllZDUx
OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIGJvb2wgU1FMaXRlU3RhdGVtZW50Ojppc0NvbHVtbkRl
Y2xhcmVkQXNCbG9iKGludCBjb2wpCiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKFN0cmluZ1ZpZXcoc3FsaXRlM19jb2x1bW5fZGVjbHR5cGUobV9zdGF0ZW1lbnQsIGNv
bCkpLCAiYmxvYiIpOwogfQogCi1TdHJpbmcgU1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5OYW1l
KGludCBjb2wpCitTdHJpbmcgU1FMaXRlU3RhdGVtZW50Ojpjb2x1bW5OYW1lKGludCBjb2wpCiB7
CiAgICAgQVNTRVJUKGNvbCA+PSAwKTsKICAgICBpZiAoIWhhc1N0YXJ0ZWRTdGVwcGluZygpICYm
IHN0ZXAoKSAhPSBTUUxJVEVfUk9XKQpAQCAtMTkwLDcgKzE5MCw3IEBAIFN0cmluZyBTUUxpdGVT
dGF0ZW1lbnQ6OmdldENvbHVtbk5hbWUoaW50IGNvbCkKICAgICByZXR1cm4gU3RyaW5nOjpmcm9t
VVRGOChzcWxpdGUzX2NvbHVtbl9uYW1lKG1fc3RhdGVtZW50LCBjb2wpKTsKIH0KIAotU1FMVmFs
dWUgU1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5WYWx1ZShpbnQgY29sKQorU1FMVmFsdWUgU1FM
aXRlU3RhdGVtZW50Ojpjb2x1bW5WYWx1ZShpbnQgY29sKQogewogICAgIEFTU0VSVChjb2wgPj0g
MCk7CiAgICAgaWYgKCFoYXNTdGFydGVkU3RlcHBpbmcoKSAmJiBzdGVwKCkgIT0gU1FMSVRFX1JP
VykKQEAgLTIxOCw3ICsyMTgsNyBAQCBTUUxWYWx1ZSBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVt
blZhbHVlKGludCBjb2wpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVN0cmluZyBTUUxpdGVT
dGF0ZW1lbnQ6OmdldENvbHVtblRleHQoaW50IGNvbCkKK1N0cmluZyBTUUxpdGVTdGF0ZW1lbnQ6
OmNvbHVtblRleHQoaW50IGNvbCkKIHsKICAgICBBU1NFUlQoY29sID49IDApOwogICAgIGlmICgh
aGFzU3RhcnRlZFN0ZXBwaW5nKCkgJiYgc3RlcCgpICE9IFNRTElURV9ST1cpCkBAIC0yMjgsNyAr
MjI4LDcgQEAgU3RyaW5nIFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uVGV4dChpbnQgY29sKQog
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHNxbGl0ZTNfY29sdW1uX3RleHQobV9zdGF0ZW1l
bnQsIGNvbCksIHNxbGl0ZTNfY29sdW1uX2J5dGVzKG1fc3RhdGVtZW50LCBjb2wpKTsKIH0KICAg
ICAKLWRvdWJsZSBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtbkRvdWJsZShpbnQgY29sKQorZG91
YmxlIFNRTGl0ZVN0YXRlbWVudDo6Y29sdW1uRG91YmxlKGludCBjb2wpCiB7CiAgICAgQVNTRVJU
KGNvbCA+PSAwKTsKICAgICBpZiAoIWhhc1N0YXJ0ZWRTdGVwcGluZygpICYmIHN0ZXAoKSAhPSBT
UUxJVEVfUk9XKQpAQCAtMjM4LDcgKzIzOCw3IEBAIGRvdWJsZSBTUUxpdGVTdGF0ZW1lbnQ6Omdl
dENvbHVtbkRvdWJsZShpbnQgY29sKQogICAgIHJldHVybiBzcWxpdGUzX2NvbHVtbl9kb3VibGUo
bV9zdGF0ZW1lbnQsIGNvbCk7CiB9CiAKLWludCBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtbklu
dChpbnQgY29sKQoraW50IFNRTGl0ZVN0YXRlbWVudDo6Y29sdW1uSW50KGludCBjb2wpCiB7CiAg
ICAgQVNTRVJUKGNvbCA+PSAwKTsKICAgICBpZiAoIWhhc1N0YXJ0ZWRTdGVwcGluZygpICYmIHN0
ZXAoKSAhPSBTUUxJVEVfUk9XKQpAQCAtMjQ4LDcgKzI0OCw3IEBAIGludCBTUUxpdGVTdGF0ZW1l
bnQ6OmdldENvbHVtbkludChpbnQgY29sKQogICAgIHJldHVybiBzcWxpdGUzX2NvbHVtbl9pbnQo
bV9zdGF0ZW1lbnQsIGNvbCk7CiB9CiAKLWludDY0X3QgU1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1
bW5JbnQ2NChpbnQgY29sKQoraW50NjRfdCBTUUxpdGVTdGF0ZW1lbnQ6OmNvbHVtbkludDY0KGlu
dCBjb2wpCiB7CiAgICAgQVNTRVJUKGNvbCA+PSAwKTsKICAgICBpZiAoIWhhc1N0YXJ0ZWRTdGVw
cGluZygpICYmIHN0ZXAoKSAhPSBTUUxJVEVfUk9XKQpAQCAtMjU4LDcgKzI1OCw3IEBAIGludDY0
X3QgU1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5JbnQ2NChpbnQgY29sKQogICAgIHJldHVybiBz
cWxpdGUzX2NvbHVtbl9pbnQ2NChtX3N0YXRlbWVudCwgY29sKTsKIH0KIAotU3RyaW5nIFNRTGl0
ZVN0YXRlbWVudDo6Z2V0Q29sdW1uQmxvYkFzU3RyaW5nKGludCBjb2wpCitTdHJpbmcgU1FMaXRl
U3RhdGVtZW50Ojpjb2x1bW5CbG9iQXNTdHJpbmcoaW50IGNvbCkKIHsKICAgICBBU1NFUlQoY29s
ID49IDApOwogCkBAIC0yODAsNTYgKzI4MCwyOCBAQCBTdHJpbmcgU1FMaXRlU3RhdGVtZW50Ojpn
ZXRDb2x1bW5CbG9iQXNTdHJpbmcoaW50IGNvbCkKICAgICByZXR1cm4gU3RyaW5nKHN0YXRpY19j
YXN0PGNvbnN0IFVDaGFyKj4oYmxvYiksIHNpemUgLyBzaXplb2YoVUNoYXIpKTsKIH0KIAotdm9p
ZCBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtbkJsb2JBc1ZlY3RvcihpbnQgY29sLCBWZWN0b3I8
Y2hhcj4mIHJlc3VsdCkKK1ZlY3Rvcjx1aW50OF90PiBTUUxpdGVTdGF0ZW1lbnQ6OmNvbHVtbkJs
b2IoaW50IGNvbCkKIHsKICAgICBBU1NFUlQoY29sID49IDApOwogCi0gICAgaWYgKCFoYXNTdGFy
dGVkU3RlcHBpbmcoKSAmJiBzdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICByZXN1bHQu
Y2xlYXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBWZWN0b3I8dWludDhfdD4gcmVz
dWx0OworICAgIGlmICghaGFzU3RhcnRlZFN0ZXBwaW5nKCkgJiYgc3RlcCgpICE9IFNRTElURV9S
T1cpCisgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBpZiAoY29sdW1uQ291bnQoKSA8PSBj
b2wpIHsKLSAgICAgICAgcmVzdWx0LmNsZWFyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgaWYgKGNvbHVtbkNvdW50KCkgPD0gY29sKQorICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAg
ICAgY29uc3Qgdm9pZCogYmxvYiA9IHNxbGl0ZTNfY29sdW1uX2Jsb2IobV9zdGF0ZW1lbnQsIGNv
bCk7Ci0gICAgaWYgKCFibG9iKSB7Ci0gICAgICAgIHJlc3VsdC5jbGVhcigpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgICAgICAKLSAgICBpbnQgc2l6ZSA9IHNxbGl0ZTNfY29sdW1uX2J5
dGVzKG1fc3RhdGVtZW50LCBjb2wpOwotICAgIHJlc3VsdC5yZXNpemUoKHNpemVfdClzaXplKTsK
LSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgcmVzdWx0W2ldID0g
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihibG9iKSlbaV07Ci19Ci0KLXZvaWQg
U1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5CbG9iQXNWZWN0b3IoaW50IGNvbCwgVmVjdG9yPHVp
bnQ4X3Q+JiByZXN1bHQpCi17Ci0gICAgQVNTRVJUKGNvbCA+PSAwKTsKLQotICAgIGlmICghaGFz
U3RhcnRlZFN0ZXBwaW5nKCkgJiYgc3RlcCgpICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgcmVz
dWx0LmNsZWFyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFibG9iKQorICAg
ICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgaWYgKGNvbHVtbkNvdW50KCkgPD0gY29sKSB7Ci0g
ICAgICAgIHJlc3VsdC5jbGVhcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGludCBi
bG9iU2l6ZSA9IHNxbGl0ZTNfY29sdW1uX2J5dGVzKG1fc3RhdGVtZW50LCBjb2wpOworICAgIGlm
IChibG9iU2l6ZSA8PSAwKQorICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgY29uc3Qgdm9p
ZCogYmxvYiA9IHNxbGl0ZTNfY29sdW1uX2Jsb2IobV9zdGF0ZW1lbnQsIGNvbCk7Ci0gICAgaWYg
KCFibG9iKSB7Ci0gICAgICAgIHJlc3VsdC5jbGVhcigpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgICAgICAKLSAgICBpbnQgc2l6ZSA9IHNxbGl0ZTNfY29sdW1uX2J5dGVzKG1fc3RhdGVt
ZW50LCBjb2wpOwotICAgIHJlc3VsdC5yZXNpemUoKHNpemVfdClzaXplKTsKLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgcmVzdWx0W2ldID0gKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihibG9iKSlbaV07CisgICAgcmVzdWx0LnJlc2l6ZShzdGF0aWNfY2Fz
dDxzaXplX3Q+KGJsb2JTaXplKSk7CisgICAgbWVtY3B5KHJlc3VsdC5kYXRhKCksIGJsb2IsIHN0
YXRpY19jYXN0PHNpemVfdD4oYmxvYlNpemUpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBi
b29sIFNRTGl0ZVN0YXRlbWVudDo6aGFzU3RhcnRlZFN0ZXBwaW5nKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAppbmRleCA4NDBlYThmMDZhMmE4MjAz
NGRmMjFkMmUwMmU1ZTM1MmQ3MWFkNzYxLi5mMDVhODg0ZmRiMjgzNzY5N2UwMDcyNTY0MzU1YjAw
YzhjZDBmYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
U3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRl
bWVudC5oCkBAIC02MywxNSArNjMsMTQgQEAgcHVibGljOgogICAgIGJvb2wgaXNSZWFkT25seSgp
OwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb2x1bW5EZWNsYXJlZEFzQmxvYihp
bnQgY29sKTsKLSAgICBTdHJpbmcgZ2V0Q29sdW1uTmFtZShpbnQgY29sKTsKLSAgICBTUUxWYWx1
ZSBnZXRDb2x1bW5WYWx1ZShpbnQgY29sKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZ2V0
Q29sdW1uVGV4dChpbnQgY29sKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgZ2V0Q29sdW1u
RG91YmxlKGludCBjb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIGludCBnZXRDb2x1bW5JbnQoaW50
IGNvbCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBnZXRDb2x1bW5JbnQ2NChpbnQgY29s
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZ2V0Q29sdW1uQmxvYkFzU3RyaW5nKGludCBj
b2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKGludCBj
b2wsIFZlY3RvcjxjaGFyPiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0Q29sdW1uQmxv
YkFzVmVjdG9yKGludCBjb2wsIFZlY3Rvcjx1aW50OF90PiYpOworICAgIFN0cmluZyBjb2x1bW5O
YW1lKGludCBjb2wpOworICAgIFNRTFZhbHVlIGNvbHVtblZhbHVlKGludCBjb2wpOworICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBjb2x1bW5UZXh0KGludCBjb2wpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGRvdWJsZSBjb2x1bW5Eb3VibGUoaW50IGNvbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50
IGNvbHVtbkludChpbnQgY29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IGNvbHVtbklu
dDY0KGludCBjb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb2x1bW5CbG9iQXNTdHJp
bmcoaW50IGNvbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvbHVtbkJs
b2IoaW50IGNvbCk7CiAKICAgICBTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UoKSB7IHJldHVybiBt
X2RhdGFiYXNlOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudURCLmNwcAppbmRleCBiMDQwZDg2YmJlZGYwZDI0NmZjYWFhMzc3YTUzZjkx
ZDg2MDVkYjQ3Li40Y2I0OGY0ODAzN2YwYzE2MTI5ODFlMWIzNzMxODkwMzg4MWZkMTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAK
QEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudURCOjpsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVjZW50U2VhcgogICAgIG1fbG9hZFNl
YXJjaFRlcm1zRm9yTmFtZVN0YXRlbWVudC0+YmluZFRleHQoMSwgbmFtZSk7CiAgICAgd2hpbGUg
KG1fbG9hZFNlYXJjaFRlcm1zRm9yTmFtZVN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cp
IHsKICAgICAgICAgLy8gV2UgYXJlIGNob29zaW5nIG5vdCB0byB1c2Ugb3Igc3RvcmUgc2VhcmNo
IHRpbWVzIG9uIFdpbmRvd3MgYXQgdGhpcyB0aW1lLCBzbyBmb3Igbm93IGl0J3MgT0sgdG8gdXNl
IGEgImRpc3RhbnQgcGFzdCIgdGltZSBhcyBhIHBsYWNlaG9sZGVyLgotICAgICAgICBzZWFyY2hl
cy5hcHBlbmQoeyBtX2xvYWRTZWFyY2hUZXJtc0Zvck5hbWVTdGF0ZW1lbnQtPmdldENvbHVtblRl
eHQoMCksIC1XYWxsVGltZTo6aW5maW5pdHkoKSB9KTsKKyAgICAgICAgc2VhcmNoZXMuYXBwZW5k
KHsgbV9sb2FkU2VhcmNoVGVybXNGb3JOYW1lU3RhdGVtZW50LT5jb2x1bW5UZXh0KDApLCAtV2Fs
bFRpbWU6OmluZmluaXR5KCkgfSk7CiAgICAgfQogICAgIG1fbG9hZFNlYXJjaFRlcm1zRm9yTmFt
ZVN0YXRlbWVudC0+cmVzZXQoKTsKIH0KQEAgLTE0OCw3ICsxNDgsNyBAQCBib29sIFNlYXJjaFBv
cHVwTWVudURCOjpjaGVja0RhdGFiYXNlVmFsaWRpdHkoKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgU3RyaW5nIHJlc3VsdFRleHQgPSBpbnRlZ3JpdHktPmdldENvbHVtblRl
eHQoMCk7CisgICAgU3RyaW5nIHJlc3VsdFRleHQgPSBpbnRlZ3JpdHktPmNvbHVtblRleHQoMCk7
CiAKICAgICBpZiAocmVzdWx0VGV4dCAhPSAib2siKSB7CiAgICAgICAgIExPR19FUlJPUigiU2Vh
cmNoIGF1dG9zYXZlIGRhdGFiYXNlIGludGVncml0eSBjaGVjayBmYWlsZWQgLSAlcyIsIHJlc3Vs
dFRleHQuYXNjaWkoKS5kYXRhKCkpOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgU2VhcmNoUG9w
dXBNZW51REI6OmNsb3NlRGF0YWJhc2UoKQogdm9pZCBTZWFyY2hQb3B1cE1lbnVEQjo6dmVyaWZ5
U2NoZW1hVmVyc2lvbigpCiB7CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBh
cmVTdGF0ZW1lbnQoIlBSQUdNQSB1c2VyX3ZlcnNpb24iX3MpOwotICAgIGludCB2ZXJzaW9uID0g
c3RhdGVtZW50ID8gc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkgOiAwOworICAgIGludCB2ZXJz
aW9uID0gc3RhdGVtZW50ID8gc3RhdGVtZW50LT5jb2x1bW5JbnQoMCkgOiAwOwogICAgIGlmICh2
ZXJzaW9uID09IHNjaGVtYVZlcnNpb24pCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcAppbmRleCBlZGY4ZWEyZDA0MmJkYzg5MGFkMmVhM2Y5N2M2Mjg3ZWQxYTll
OWNlLi41ZmE5MTFmYjJjMDJmZDI4NThlNzdkNmZmNzc2NzkwZGRhYjgyZDcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIFN0cmluZyBSZWdpc3RyYXRp
b25EYXRhYmFzZTo6ZW5zdXJlVmFsaWRSZWNvcmRzVGFibGUoKQogICAgICAgICBpZiAoc3FsaXRl
UmVzdWx0ICE9IFNRTElURV9ST1cpCiAgICAgICAgICAgICByZXR1cm4gIkVycm9yIGV4ZWN1dGlu
ZyBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0aGUgUmVjb3JkcyB0YWJsZS4iOwogCi0g
ICAgICAgIGN1cnJlbnRTY2hlbWEgPSBzdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMSk7CisgICAg
ICAgIGN1cnJlbnRTY2hlbWEgPSBzdGF0ZW1lbnQtPmNvbHVtblRleHQoMSk7CiAgICAgfQogCiAg
ICAgQVNTRVJUKCFjdXJyZW50U2NoZW1hLmlzRW1wdHkoKSk7CkBAIC01MDQsMTggKzUwNCwxNyBA
QCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMoKQogCiAgICAgZm9y
ICg7IHJlc3VsdCA9PSBTUUxJVEVfUk9XOyByZXN1bHQgPSBzcWwtPnN0ZXAoKSkgewogICAgICAg
ICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9y
dFJlY29yZHM6IEltcG9ydGluZyBhIHJlZ2lzdHJhdGlvbiBmcm9tIHRoZSBkYXRhYmFzZSIpOwot
ICAgICAgICBhdXRvIGtleSA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmZyb21EYXRh
YmFzZUtleShzcWwtPmdldENvbHVtblRleHQoMCkpOwotICAgICAgICBhdXRvIG9yaWdpblVSTCA9
IFVSTCB7IFVSTCgpLCBzcWwtPmdldENvbHVtblRleHQoMSkgfTsKLSAgICAgICAgYXV0byBzY29w
ZVBhdGggPSBzcWwtPmdldENvbHVtblRleHQoMik7CisgICAgICAgIGF1dG8ga2V5ID0gU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFiYXNlS2V5KHNxbC0+Y29sdW1uVGV4dCgw
KSk7CisgICAgICAgIGF1dG8gb3JpZ2luVVJMID0gVVJMIHsgVVJMKCksIHNxbC0+Y29sdW1uVGV4
dCgxKSB9OworICAgICAgICBhdXRvIHNjb3BlUGF0aCA9IHNxbC0+Y29sdW1uVGV4dCgyKTsKICAg
ICAgICAgYXV0byBzY29wZVVSTCA9IFVSTCB7IG9yaWdpblVSTCwgc2NvcGVQYXRoIH07Ci0gICAg
ICAgIGF1dG8gdG9wT3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVu
dGlmaWVyKHNxbC0+Z2V0Q29sdW1uVGV4dCgzKSk7Ci0gICAgICAgIGF1dG8gbGFzdFVwZGF0ZUNo
ZWNrVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzcWwtPmdldENvbHVtbkRvdWJsZSg0
KSk7Ci0gICAgICAgIGF1dG8gdXBkYXRlVmlhQ2FjaGUgPSBzdHJpbmdUb1VwZGF0ZVZpYUNhY2hl
KHNxbC0+Z2V0Q29sdW1uVGV4dCg1KSk7Ci0gICAgICAgIGF1dG8gc2NyaXB0VVJMID0gVVJMIHsg
VVJMKCksIHNxbC0+Z2V0Q29sdW1uVGV4dCg2KSB9OwotICAgICAgICBhdXRvIHdvcmtlclR5cGUg
PSBzdHJpbmdUb1dvcmtlclR5cGUoc3FsLT5nZXRDb2x1bW5UZXh0KDcpKTsKLQotICAgICAgICBW
ZWN0b3I8dWludDhfdD4gY29udGVudFNlY3VyaXR5UG9saWN5RGF0YTsKLSAgICAgICAgc3FsLT5n
ZXRDb2x1bW5CbG9iQXNWZWN0b3IoOCwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7CisgICAg
ICAgIGF1dG8gdG9wT3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVu
dGlmaWVyKHNxbC0+Y29sdW1uVGV4dCgzKSk7CisgICAgICAgIGF1dG8gbGFzdFVwZGF0ZUNoZWNr
VGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzcWwtPmNvbHVtbkRvdWJsZSg0KSk7Cisg
ICAgICAgIGF1dG8gdXBkYXRlVmlhQ2FjaGUgPSBzdHJpbmdUb1VwZGF0ZVZpYUNhY2hlKHNxbC0+
Y29sdW1uVGV4dCg1KSk7CisgICAgICAgIGF1dG8gc2NyaXB0VVJMID0gVVJMIHsgVVJMKCksIHNx
bC0+Y29sdW1uVGV4dCg2KSB9OworICAgICAgICBhdXRvIHdvcmtlclR5cGUgPSBzdHJpbmdUb1dv
cmtlclR5cGUoc3FsLT5jb2x1bW5UZXh0KDcpKTsKKworICAgICAgICBhdXRvIGNvbnRlbnRTZWN1
cml0eVBvbGljeURhdGEgPSBzcWwtPmNvbHVtbkJsb2IoOCk7CiAgICAgICAgIFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhLmRhdGEo
KSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YS5zaXplKCkpOwogICAgICAgICBPcHRpb25hbDxD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IGNvbnRlbnRTZWN1cml0eVBvbGlj
eTsKICAgICAgICAgaWYgKGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEuc2l6ZSgpKSB7CkBAIC01
MjYsMTAgKzUyNSw5IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3Jk
cygpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHJlZmVycmVyUG9s
aWN5ID0gc3FsLT5nZXRDb2x1bW5UZXh0KDkpOworICAgICAgICBhdXRvIHJlZmVycmVyUG9saWN5
ID0gc3FsLT5jb2x1bW5UZXh0KDkpOwogCi0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBzY3JpcHRS
ZXNvdXJjZU1hcERhdGE7Ci0gICAgICAgIHNxbC0+Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEwLCBz
Y3JpcHRSZXNvdXJjZU1hcERhdGEpOworICAgICAgICBhdXRvIHNjcmlwdFJlc291cmNlTWFwRGF0
YSA9IHNxbC0+Y29sdW1uQmxvYigxMCk7CiAgICAgICAgIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiBzY3JpcHRSZXNvdXJjZU1hcDsKIAogICAg
ICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIHNjcmlwdFJlc291cmNlTWFwRGVjb2Rlcihz
Y3JpcHRSZXNvdXJjZU1hcERhdGEuZGF0YSgpLCBzY3JpcHRSZXNvdXJjZU1hcERhdGEuc2l6ZSgp
KTsKQEAgLTU0Myw4ICs1NDEsNyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9y
dFJlY29yZHMoKQogICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXAgPSBwb3B1bGF0ZVNjcmlw
dFNvdXJjZXNGcm9tRGlzayhzY3JpcHRTdG9yYWdlKCksICprZXksIFdURk1vdmUoKnNjcmlwdFJl
c291cmNlTWFwV2l0aG91dFNjcmlwdHMpKTsKICAgICAgICAgfQogCi0gICAgICAgIFZlY3Rvcjx1
aW50OF90PiBjZXJ0aWZpY2F0ZUluZm9EYXRhOwotICAgICAgICBzcWwtPmdldENvbHVtbkJsb2JB
c1ZlY3RvcigxMSwgY2VydGlmaWNhdGVJbmZvRGF0YSk7CisgICAgICAgIGF1dG8gY2VydGlmaWNh
dGVJbmZvRGF0YSA9IHNxbC0+Y29sdW1uQmxvYigxMSk7CiAgICAgICAgIE9wdGlvbmFsPENlcnRp
ZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOwogCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXIgY2VydGlmaWNhdGVJbmZvRGVjb2RlcihjZXJ0aWZpY2F0ZUluZm9EYXRhLmRhdGEo
KSwgY2VydGlmaWNhdGVJbmZvRGF0YS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggODI4NzFjZTQ4YzgzYmY1
NmYyM2MyMGE0ZjRjMjA4Y2UwZjU3MWQzNS4uMzk2ZjVjNzc1MjJkNTJlN2E1MTAyYmYyZWM2OTMz
MGExZTIzN2VjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwCkBAIC00NTUsNyArNDU1LDcgQEAgVGFibGVBbmRJbmRleFBhaXIg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZEluZGV4
UXVlcmkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBTdHJpbmcgY3JlYXRlVGFi
bGVRdWVyeSA9IGdldFRhYmxlU3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDApOworICAgIFN0cmlu
ZyBjcmVhdGVUYWJsZVF1ZXJ5ID0gZ2V0VGFibGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoMCk7CiAK
ICAgICBhdXRvIGdldEluZGV4U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50
KCJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0YmxfbmFtZT0/IEFORCB0eXBl
ID0gJ2luZGV4JyJfcyk7CiAgICAgaWYgKCFnZXRJbmRleFN0YXRlbWVudCkgewpAQCAtNDcyLDcg
KzQ3Miw3IEBAIFRhYmxlQW5kSW5kZXhQYWlyIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpCiAKICAgICBPcHRpb25hbDxTdHJpbmc+
IGluZGV4OwogICAgIGlmIChnZXRJbmRleFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cp
IHsKLSAgICAgICAgYXV0byByYXdJbmRleCA9IFN0cmluZyhnZXRJbmRleFN0YXRlbWVudC0+Z2V0
Q29sdW1uVGV4dCgwKSk7CisgICAgICAgIGF1dG8gcmF3SW5kZXggPSBTdHJpbmcoZ2V0SW5kZXhT
dGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpOwogICAgICAgICBpZiAoIXJhd0luZGV4LmlzRW1wdHko
KSkKICAgICAgICAgICAgIGluZGV4ID0gcmF3SW5kZXg7CiAgICAgfQpAQCAtNTA1LDcgKzUwNSw3
IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pc3NpbmdVbmlx
dWVJbmRpY2VzKCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBpZiAoc3RhdGVt
ZW50LT5nZXRDb2x1bW5JbnQoMCkgPCBleHBlY3RlZEluZGV4Q291bnQpCisgICAgaWYgKHN0YXRl
bWVudC0+Y29sdW1uSW50KDApIDwgZXhwZWN0ZWRJbmRleENvdW50KQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTYxNiw3ICs2MTYsNyBAQCBWZWN0b3I8U3Ry
aW5nPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y29sdW1uc0ZvclRhYmxl
KGNvbnN0IFN0cmluZwogCiAgICAgVmVjdG9yPFN0cmluZz4gY29sdW1uczsKICAgICB3aGlsZSAo
c3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBhdXRvIG5hbWUgPSBz
dGF0ZW1lbnQtPmdldENvbHVtblRleHQoMSk7CisgICAgICAgIGF1dG8gbmFtZSA9IHN0YXRlbWVu
dC0+Y29sdW1uVGV4dCgxKTsKICAgICAgICAgY29sdW1ucy5hcHBlbmQobmFtZSk7CiAgICAgfQog
CkBAIC03MzcsNyArNzM3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGN1cnJlbnRTY2hlbWEgPSBzdGF0ZW1lbnQtPmdldENv
bHVtblRleHQoMSk7CisgICAgICAgIGN1cnJlbnRTY2hlbWEgPSBzdGF0ZW1lbnQtPmNvbHVtblRl
eHQoMSk7CiAgICAgfQogCiAgICAgQVNTRVJUKCFjdXJyZW50U2NoZW1hLmlzRW1wdHkoKSk7CkBA
IC03ODksNyArNzg5LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6aXNFbXB0eSgpIGNvbnN0CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiAhc2NvcGVkU3RhdGVtZW50LT5nZXRD
b2x1bW5JbnQoMCk7CisgICAgcmV0dXJuICFzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkludCgwKTsK
IH0KIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3JlYXRlVW5p
cXVlSW5kaWNlcygpCkBAIC0xMDA3LDcgKzEwMDcsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpyZWxhdGlvbnNoaXBFeGlzdHMoU1FMaXRlU3RhdGVtZW50QXV0
bwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLSAgICByZXR1cm4gISFzdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKKyAgICByZXR1
cm4gISFzdGF0ZW1lbnQtPmNvbHVtbkludCgwKTsKIH0KIAogT3B0aW9uYWw8dW5zaWduZWQ+IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JRChjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluKSBjb25zdApAQCAtMTAyNCw3ICsxMDI0LDcgQEAgT3B0aW9uYWw8
dW5zaWduZWQ+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JRChj
b25zdCBSZWdpc3RyYWIKICAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRF
X1JPVykKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiBzY29wZWRT
dGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKKyAgICByZXR1cm4gc2NvcGVkU3RhdGVtZW50LT5j
b2x1bW5JbnQoMCk7CiB9CiAKIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6ZW5zdXJlQW5kTWFrZURvbWFpbkxpc3QoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4mIGRvbWFpbkxpc3QpCkBAIC0xMTE5LDE0ICsxMTE5LDE0IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dCogY3VycmVuCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRv
IGN1cnJlbnRSZWdpc3RyYWJsZURvbWFpbiA9IGN1cnJlbnQtPmdldENvbHVtblRleHQoUmVnaXN0
cmFibGVEb21haW5JbmRleCk7Ci0gICAgYXV0byBjdXJyZW50TGFzdFNlZW4gPSBjdXJyZW50LT5n
ZXRDb2x1bW5Eb3VibGUoTGFzdFNlZW5JbmRleCk7Ci0gICAgYXV0byBjdXJyZW50TW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvbiA9IGN1cnJlbnQtPmdldENvbHVtbkRvdWJsZShNb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uVGltZUluZGV4KTsKLSAgICBib29sIGN1cnJlbnRHcmFuZGZhdGhlcmVkID0g
Y3VycmVudC0+Z2V0Q29sdW1uSW50KEdyYW5kZmF0aGVyZWRJbmRleCk7Ci0gICAgYm9vbCBjdXJy
ZW50SXNQcmV2YWxlbnQgPSBjdXJyZW50LT5nZXRDb2x1bW5JbnQoSXNQcmV2YWxlbnRJbmRleCk7
Ci0gICAgYm9vbCBjdXJyZW50SXNWZXJ5UHJldmFsZW50ID0gY3VycmVudC0+Z2V0Q29sdW1uSW50
KElzVmVyeVByZXZhbGVudEluZGV4KTsKLSAgICB1bnNpZ25lZCBjdXJyZW50RGF0YVJlY29yZHNS
ZW1vdmVkID0gY3VycmVudC0+Z2V0Q29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4KTsK
LSAgICBib29sIGN1cnJlbnRJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsID0g
Y3VycmVudC0+Z2V0Q29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWxJbmRleCk7CisgICAgYXV0byBjdXJyZW50UmVnaXN0cmFibGVEb21haW4gPSBjdXJyZW50LT5j
b2x1bW5UZXh0KFJlZ2lzdHJhYmxlRG9tYWluSW5kZXgpOworICAgIGF1dG8gY3VycmVudExhc3RT
ZWVuID0gY3VycmVudC0+Y29sdW1uRG91YmxlKExhc3RTZWVuSW5kZXgpOworICAgIGF1dG8gY3Vy
cmVudE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24gPSBjdXJyZW50LT5jb2x1bW5Eb3VibGUoTW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVJbmRleCk7CisgICAgYm9vbCBjdXJyZW50R3JhbmRm
YXRoZXJlZCA9IGN1cnJlbnQtPmNvbHVtbkludChHcmFuZGZhdGhlcmVkSW5kZXgpOworICAgIGJv
b2wgY3VycmVudElzUHJldmFsZW50ID0gY3VycmVudC0+Y29sdW1uSW50KElzUHJldmFsZW50SW5k
ZXgpOworICAgIGJvb2wgY3VycmVudElzVmVyeVByZXZhbGVudCA9IGN1cnJlbnQtPmNvbHVtbklu
dChJc1ZlcnlQcmV2YWxlbnRJbmRleCk7CisgICAgdW5zaWduZWQgY3VycmVudERhdGFSZWNvcmRz
UmVtb3ZlZCA9IGN1cnJlbnQtPmNvbHVtbkludChEYXRhUmVjb3Jkc1JlbW92ZWRJbmRleCk7Cisg
ICAgYm9vbCBjdXJyZW50SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCA9IGN1
cnJlbnQtPmNvbHVtbkludChJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsSW5k
ZXgpOwogCiAgICAgQVNTRVJUKGN1cnJlbnRSZWdpc3RyYWJsZURvbWFpbiA9PSBvdGhlci5yZWdp
c3RyYWJsZURvbWFpbi5zdHJpbmcoKSk7CiAKQEAgLTEyMjIsNyArMTIyMiw3IEBAIFZlY3RvcjxX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNG
aXJzdFBhcnR5PiBSZXNvCiAgICAgfQogICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiB0aGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnM7CiAgICAgd2hpbGUgKHNjb3BlZFN0YXRl
bWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgUmVnaXN0cmFibGVEb21haW4g
Zmlyc3RQYXJ0eURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
UmVnaXN0cmFibGVEb21haW5TdHJpbmcoZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKG1fZ2V0
QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApKSk7CisgICAgICAgIFJl
Z2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKGdldERvbWFpblN0cmluZ0Zy
b21Eb21haW5JRChtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQtPmNvbHVtbkludCgwKSkp
OwogICAgICAgICB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMuYXBw
ZW5kSWZOb3RDb250YWlucyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFy
dHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IHsgZmlyc3RQYXJ0eURvbWFpbiwgaGFzU3RvcmFn
ZUFjY2VzcyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluKSwgZ2V0TW9zdFJlY2Vu
dGx5VXBkYXRlZFRpbWVzdGFtcCh0aGlyZFBhcnR5RG9tYWluLCBmaXJzdFBhcnR5RG9tYWluKSB9
KTsKICAgICB9CiAgICAgcmV0dXJuIHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5
RG9tYWluczsKQEAgLTEyNDgsOCArMTI0OCw4IEBAIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0CiAg
ICAgICAgIHJldHVybiB0aGlyZFBhcnR5RGF0YUxpc3Q7CiAgICAgfQogICAgIHdoaWxlIChzb3J0
ZWRTdGF0aXN0aWNzLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBpZiAoaGFzQmVl
blRoaXJkUGFydHkoc29ydGVkU3RhdGlzdGljcy0+Z2V0Q29sdW1uSW50KDEpKSkgewotICAgICAg
ICAgICAgYXV0byB0aGlyZFBhcnR5RG9tYWluSUQgPSBzb3J0ZWRTdGF0aXN0aWNzLT5nZXRDb2x1
bW5JbnQoMCk7CisgICAgICAgIGlmIChoYXNCZWVuVGhpcmRQYXJ0eShzb3J0ZWRTdGF0aXN0aWNz
LT5jb2x1bW5JbnQoMSkpKSB7CisgICAgICAgICAgICBhdXRvIHRoaXJkUGFydHlEb21haW5JRCA9
IHNvcnRlZFN0YXRpc3RpY3MtPmNvbHVtbkludCgwKTsKICAgICAgICAgICAgIGF1dG8gdGhpcmRQ
YXJ0eURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0
cmFibGVEb21haW5TdHJpbmcoZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHRoaXJkUGFydHlE
b21haW5JRCkpOwogICAgICAgICAgICAgdGhpcmRQYXJ0eURhdGFMaXN0LmFwcGVuZChXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhIHsgdGhpcmRQYXJ0eURvbWFp
biwgZ2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHRoaXJkUGFy
dHlEb21haW5JRCwgdGhpcmRQYXJ0eURvbWFpbikgfSk7CiAgICAgICAgIH0KQEAgLTEzMDIsNyAr
MTMwMiw3IEBAIHVuc2lnbmVkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpy
ZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zCiAgICAgfQogICAgIAogICAgIHdoaWxl
IChmaW5kU3VicmVzb3VyY2VzLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBpbnQg
bmV3RG9tYWluSUQgPSBmaW5kU3VicmVzb3VyY2VzLT5nZXRDb2x1bW5JbnQoMCk7CisgICAgICAg
IGludCBuZXdEb21haW5JRCA9IGZpbmRTdWJyZXNvdXJjZXMtPmNvbHVtbkludCgwKTsKICAgICAg
ICAgYXV0byBpbnNlcnRSZXN1bHQgPSBub25QcmV2YWxlbnRSZWRpcmVjdGlvblNvdXJjZXMuaW5z
ZXJ0KG5ld0RvbWFpbklEKTsKICAgICAgICAgaWYgKGluc2VydFJlc3VsdC5zZWNvbmQpCiAgICAg
ICAgICAgICBuZXdseUlkZW50aWZpZWREb21haW5zLmluc2VydChuZXdEb21haW5JRCk7CkBAIC0x
MzE3LDcgKzEzMTcsNyBAQCB1bnNpZ25lZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6cmVjdXJzaXZlbHlGaW5kTm9uUHJldmFsZW50RG9tYWlucwogICAgIH0KICAgICAKICAg
ICB3aGlsZSAoZmluZFRvcEZyYW1lcy0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAg
aW50IG5ld0RvbWFpbklEID0gZmluZFRvcEZyYW1lcy0+Z2V0Q29sdW1uSW50KDApOworICAgICAg
ICBpbnQgbmV3RG9tYWluSUQgPSBmaW5kVG9wRnJhbWVzLT5jb2x1bW5JbnQoMCk7CiAgICAgICAg
IGF1dG8gaW5zZXJ0UmVzdWx0ID0gbm9uUHJldmFsZW50UmVkaXJlY3Rpb25Tb3VyY2VzLmluc2Vy
dChuZXdEb21haW5JRCk7CiAgICAgICAgIGlmIChpbnNlcnRSZXN1bHQuc2Vjb25kKQogICAgICAg
ICAgICAgbmV3bHlJZGVudGlmaWVkRG9tYWlucy5pbnNlcnQobmV3RG9tYWluSUQpOwpAQCAtMTM1
MiwxMyArMTM1MiwxMyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjptYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbAogICAgIGF1dG8gc3VicmVz
b3VyY2VSZWRpcmVjdFN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiU0VM
RUNUIERJU1RJTkNUIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uc3VicmVzb3VyY2VEb21h
aW5JRCBGUk9NIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gSk9JTiBPYnNlcnZlZERvbWFp
bnMgT04gT2JzZXJ2ZWREb21haW5zLmRvbWFpbklEID0gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNUby50b0RvbWFpbklEIEFORCBPYnNlcnZlZERvbWFpbnMuaXNQcmV2YWxlbnQgPSAxIl9zKTsK
ICAgICBpZiAoc3VicmVzb3VyY2VSZWRpcmVjdFN0YXRlbWVudCkgewogICAgICAgICB3aGlsZSAo
c3VicmVzb3VyY2VSZWRpcmVjdFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCi0gICAg
ICAgICAgICBwcmV2YWxlbnREdWVUb1JlZGlyZWN0Lmluc2VydChzdWJyZXNvdXJjZVJlZGlyZWN0
U3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkpOworICAgICAgICAgICAgcHJldmFsZW50RHVlVG9S
ZWRpcmVjdC5pbnNlcnQoc3VicmVzb3VyY2VSZWRpcmVjdFN0YXRlbWVudC0+Y29sdW1uSW50KDAp
KTsKICAgICB9CiAKICAgICBhdXRvIHRvcEZyYW1lUmVkaXJlY3RTdGF0ZW1lbnQgPSBtX2RhdGFi
YXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCBESVNUSU5DVCBUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvLnNvdXJjZURvbWFpbklEIEZST00gVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyBKT0lO
IE9ic2VydmVkRG9tYWlucyBPTiBPYnNlcnZlZERvbWFpbnMuZG9tYWluSUQgPSBUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c1RvLnRvRG9tYWluSUQgQU5EIE9ic2VydmVkRG9tYWlucy5pc1ByZXZhbGVu
dCA9IDEiX3MpOwogICAgIGlmICh0b3BGcmFtZVJlZGlyZWN0U3RhdGVtZW50KSB7CiAgICAgICAg
IHdoaWxlICh0b3BGcmFtZVJlZGlyZWN0U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykK
LSAgICAgICAgICAgIHByZXZhbGVudER1ZVRvUmVkaXJlY3QuaW5zZXJ0KHRvcEZyYW1lUmVkaXJl
Y3RTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSk7CisgICAgICAgICAgICBwcmV2YWxlbnREdWVU
b1JlZGlyZWN0Lmluc2VydCh0b3BGcmFtZVJlZGlyZWN0U3RhdGVtZW50LT5jb2x1bW5JbnQoMCkp
OwogICAgIH0KIAogICAgIGF1dG8gbWFya1ByZXZhbGVudFN0YXRlbWVudCA9IG1fZGF0YWJhc2Uu
cHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBT
RVQgaXNQcmV2YWxlbnQgPSAxIFdIRVJFIGRvbWFpbklEIElOICgiLCBidWlsZExpc3QoV1RGOjpJ
dGVyYXRvclJhbmdlPFN0ZFNldDx1bnNpZ25lZD46Oml0ZXJhdG9yPihwcmV2YWxlbnREdWVUb1Jl
ZGlyZWN0LmJlZ2luKCksIHByZXZhbGVudER1ZVRvUmVkaXJlY3QuZW5kKCkpKSwgIikiKSk7CkBA
IC0xMzc2LDkgKzEzNzYsOSBAQCBIYXNoTWFwPHVuc2lnbmVkLCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Tm90VmVyeVByZXZhbGVudFJlc291cmNlcwogICAgIGF1dG8gbm90
VmVyeVByZXZhbGVudFJlc291cmNlc1N0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRl
bWVudCgiU0VMRUNUIGRvbWFpbklELCByZWdpc3RyYWJsZURvbWFpbiwgaXNQcmV2YWxlbnQgRlJP
TSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgaXNWZXJ5UHJldmFsZW50ID0gMCJfcyk7CiAgICAgaWYg
KG5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQpIHsKICAgICAgICAgd2hpbGUgKG5v
dFZlcnlQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7
Ci0gICAgICAgICAgICB1bnNpZ25lZCBrZXkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm90VmVy
eVByZXZhbGVudFJlc291cmNlc1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApKTsKLSAgICAgICAg
ICAgIE5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXMgdmFsdWUoeyBSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKG5vdFZlcnlQcmV2YWxl
bnRSZXNvdXJjZXNTdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMSkpCi0gICAgICAgICAgICAgICAg
LCBub3RWZXJ5UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMikgPyBS
ZXNvdXJjZUxvYWRQcmV2YWxlbmNlOjpIaWdoIDogUmVzb3VyY2VMb2FkUHJldmFsZW5jZTo6TG93
CisgICAgICAgICAgICB1bnNpZ25lZCBrZXkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm90VmVy
eVByZXZhbGVudFJlc291cmNlc1N0YXRlbWVudC0+Y29sdW1uSW50KDApKTsKKyAgICAgICAgICAg
IE5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXMgdmFsdWUoeyBSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKG5vdFZlcnlQcmV2YWxlbnRS
ZXNvdXJjZXNTdGF0ZW1lbnQtPmNvbHVtblRleHQoMSkpCisgICAgICAgICAgICAgICAgLCBub3RW
ZXJ5UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50LT5jb2x1bW5JbnQoMikgPyBSZXNvdXJjZUxv
YWRQcmV2YWxlbmNlOjpIaWdoIDogUmVzb3VyY2VMb2FkUHJldmFsZW5jZTo6TG93CiAgICAgICAg
ICAgICAgICAgLCAwLCAwLCAwLCAwIH0pOwogICAgICAgICAgICAgcmVzdWx0cy5hZGQoa2V5LCB2
YWx1ZSk7CiAgICAgICAgIH0KQEAgLTEzOTYsNDAgKzEzOTYsNDAgQEAgSGFzaE1hcDx1bnNpZ25l
ZCwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Ok5vdFZlcnlQcmV2YWxlbnRS
ZXNvdXJjZXMKICAgICBhdXRvIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1l
bnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlNFTEVDVCBz
dWJyZXNvdXJjZURvbWFpbklELCBDT1VOVCh0b3BGcmFtZURvbWFpbklEKSBGUk9NIFN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCBJTiAoIiwg
ZG9tYWluSURzT2ZJbnRlcmVzdCwgIikgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCIpKTsK
ICAgICBpZiAoc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudCkgewogICAg
ICAgICB3aGlsZSAoc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudC0+c3Rl
cCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGRvbWFpbklEID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1l
bnQtPmdldENvbHVtbkludCgwKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBkb21haW5JRCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVt
ZW50LT5jb2x1bW5JbnQoMCkpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSByZXN1bHRzLmZp
bmQoZG9tYWluSUQpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSByZXN1bHRzLmVuZCgpKQot
ICAgICAgICAgICAgICAgIHJlc3VsdC0+dmFsdWUuc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9t
YWluc0NvdW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnNTdGF0ZW1lbnQtPmdldENvbHVtbkludCgxKSk7CisgICAgICAgICAgICAgICAgcmVz
dWx0LT52YWx1ZS5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnQgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudC0+
Y29sdW1uSW50KDEpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGF1dG8gc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVt
ZW50U2xvdyhtYWtlU3RyaW5nKCJTRUxFQ1Qgc3VicmVzb3VyY2VEb21haW5JRCwgQ09VTlQodG9E
b21haW5JRCkgRlJPTSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291
cmNlRG9tYWluSUQgSU4gKCIsIGRvbWFpbklEc09mSW50ZXJlc3QsICIpIEdST1VQIEJZIHN1YnJl
c291cmNlRG9tYWluSUQiKSk7CiAgICAgaWYgKHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9D
b3VudFN0YXRlbWVudCkgewogICAgICAgICB3aGlsZSAoc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNUb0NvdW50U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICAgICAg
dW5zaWduZWQgZG9tYWluSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkpOworICAgICAgICAg
ICAgdW5zaWduZWQgZG9tYWluSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50LT5jb2x1bW5JbnQoMCkpOwogICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSByZXN1bHRzLmZpbmQoZG9tYWluSUQpOwogICAgICAgICAgICAgaWYg
KHJlc3VsdCAhPSByZXN1bHRzLmVuZCgpKQotICAgICAgICAgICAgICAgIHJlc3VsdC0+dmFsdWUu
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudFN0YXRlbWVudC0+Z2V0Q29sdW1uSW50
KDEpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPnZhbHVlLnN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzVG9Db3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQtPmNvbHVtbkludCgxKSk7CiAgICAgICAgIH0KICAgICB9
CiAKICAgICBhdXRvIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudFN0YXRlbWVudCA9
IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiU0VMRUNUIHN1YmZy
YW1lRG9tYWluSUQsIENPVU5UKHRvcEZyYW1lRG9tYWluSUQpIEZST00gU3ViZnJhbWVVbmRlclRv
cEZyYW1lRG9tYWlucyBXSEVSRSBzdWJmcmFtZURvbWFpbklEIElOICgiLCBkb21haW5JRHNPZklu
dGVyZXN0LCAiKSBHUk9VUCBCWSBzdWJmcmFtZURvbWFpbklEIikpOwogICAgIGlmIChzdWJmcmFt
ZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRTdGF0ZW1lbnQpIHsKICAgICAgICAgd2hpbGUgKHN1
YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElU
RV9ST1cpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGRvbWFpbklEID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudFN0YXRlbWVudC0+Z2V0Q29s
dW1uSW50KDApKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGRvbWFpbklEID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudFN0YXRlbWVudC0+Y29s
dW1uSW50KDApKTsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcmVzdWx0cy5maW5kKGRvbWFp
bklEKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gcmVzdWx0cy5lbmQoKSkKLSAgICAgICAg
ICAgICAgICByZXN1bHQtPnZhbHVlLnN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRT
dGF0ZW1lbnQtPmdldENvbHVtbkludCgxKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LT52YWx1
ZS5zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50U3RhdGVtZW50LT5jb2x1bW5JbnQo
MSkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXV0byB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c1RvQ291bnRTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VT
dHJpbmcoIlNFTEVDVCBzb3VyY2VEb21haW5JRCwgQ09VTlQodG9Eb21haW5JRCkgRlJPTSBUb3BG
cmFtZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHNvdXJjZURvbWFpbklEIElOICgiLCBkb21haW5J
RHNPZkludGVyZXN0LCAiKSBHUk9VUCBCWSBzb3VyY2VEb21haW5JRCIpKTsKICAgICBpZiAodG9w
RnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50KSB7CiAgICAgICAgIHdoaWxlICh0
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVf
Uk9XKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBkb21haW5JRCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPih0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQtPmdldENvbHVtbklu
dCgwKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBkb21haW5JRCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPih0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQtPmNvbHVtbkludCgw
KSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHJlc3VsdHMuZmluZChkb21haW5JRCk7CiAg
ICAgICAgICAgICBpZiAocmVzdWx0ICE9IHJlc3VsdHMuZW5kKCkpCi0gICAgICAgICAgICAgICAg
cmVzdWx0LT52YWx1ZS50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnQgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50LT5nZXRD
b2x1bW5JbnQoMSkpOworICAgICAgICAgICAgICAgIHJlc3VsdC0+dmFsdWUudG9wRnJhbWVVbmlx
dWVSZWRpcmVjdHNUb0NvdW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvcEZyYW1lVW5pcXVl
UmVkaXJlY3RzVG9Db3VudFN0YXRlbWVudC0+Y29sdW1uSW50KDEpKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMTg2NCwxMSArMTg2NCwxMSBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24g
PSAhIXNjb3BlZFN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOworICAgIGJvb2wgaGFkVXNlcklu
dGVyYWN0aW9uID0gISFzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkludCgwKTsKICAgICBpZiAoIWhh
ZFVzZXJJbnRlcmFjdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIFdhbGxU
aW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKHNjb3BlZFN0YXRlbWVudC0+Z2V0Q29sdW1uRG91YmxlKDEpKTsKKyAgICBXYWxsVGltZSBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhz
Y29wZWRTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgxKSk7CiAKICAgICBpZiAoaGFzU3RhdGlzdGlj
c0V4cGlyZWQobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUsIG9wZXJhdGluZ0RhdGVzV2lu
ZG93KSkgewogICAgICAgICAvLyBEcm9wIHByaXZhY3kgc2Vuc2l0aXZlIGRhdGEgYmVjYXVzZSB3
ZSBubyBsb25nZXIgbmVlZCBpdC4KQEAgLTE5NDgsNyArMTk0OCw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENv
bXBsZXRpb25ICiAgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gZG9tYWluczsKICAgICB3aGlsZSAo
c2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgZG9tYWlucy5h
cHBlbmQoc2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDApKTsKKyAgICAgICAgZG9tYWlu
cy5hcHBlbmQoc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKTsKICAgICBzdGQ6OnNvcnQo
ZG9tYWlucy5iZWdpbigpLCBkb21haW5zLmVuZCgpLCBXVEY6OmNvZGVQb2ludENvbXBhcmVMZXNz
VGhhbik7CiAKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKQEAgLTE5NzcsNyArMTk3Nyw3IEBA
IGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZWRpY2F0ZVZhbHVl
Rm9yRG9tYWluKFNRTGl0ZVN0YXRlbWVuCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2Fn
ZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gISFwcmVkaWNhdGVT
dGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKKyAgICByZXR1cm4gISFwcmVkaWNhdGVTdGF0ZW1l
bnQtPmNvbHVtbkludCgwKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluKSBjb25zdApAQCAtMjExNCw3ICsyMTE0LDcgQEAgU2Vjb25kcyBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcChjb24K
ICAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykKICAgICAgICAg
cmV0dXJuIFNlY29uZHMgeyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOb0V4aXN0aW5nVGltZXN0
YW1wICB9OwogCi0gICAgcmV0dXJuIFNlY29uZHMgeyBzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVt
bkRvdWJsZSgwKSB9OworICAgIHJldHVybiBTZWNvbmRzIHsgc2NvcGVkU3RhdGVtZW50LT5jb2x1
bW5Eb3VibGUoMCkgfTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6aXNHcmFuZGZhdGhlcmVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNv
bnN0CkBAIC0yMjE4LDcgKzIyMTgsNyBAQCBzdGQ6OnBhaXI8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OkFkZGVkUmVjb3JkLCBPcHRpb25hbDx1bnNpZ25lZD4+CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykg
ewotICAgICAgICAgICAgdW5zaWduZWQgZG9tYWluSUQgPSBzY29wZWRTdGF0ZW1lbnQtPmdldENv
bHVtbkludCgwKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGRvbWFpbklEID0gc2NvcGVkU3RhdGVt
ZW50LT5jb2x1bW5JbnQoMCk7CiAgICAgICAgICAgICByZXR1cm4geyBBZGRlZFJlY29yZDo6Tm8s
IGRvbWFpbklEIH07CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjcxLDcgKzIyNzEsNyBAQCBWZWN0
b3I8UmVnaXN0cmFibGVEb21haW4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjphbGxEb21haW5zKCkgY29ucwogCiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21h
aW5zOwogICAgIHdoaWxlIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQot
ICAgICAgICBkb21haW5zLmFwcGVuZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHNjb3BlZFN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4
dCgwKSkpOworICAgICAgICBkb21haW5zLmFwcGVuZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHNjb3BlZFN0YXRlbWVudC0+Y29s
dW1uVGV4dCgwKSkpOwogICAgIHJldHVybiBkb21haW5zOwogfQogCkBAIC0yMzEzLDggKzIzMTMs
OCBAQCBDb29raWVBY2Nlc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNv
b2tpZUFjY2Vzcyhjb25zdCBTdWJSZXNvdXJjZQogICAgIH0KIAogICAgIGJvb2wgaGFzTm9FbnRy
eSA9IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1c7Ci0gICAgYm9vbCBpc1ByZXZhbGVu
dCA9ICFoYXNOb0VudHJ5ICYmICEhc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7Ci0gICAgYm9v
bCBoYWRVc2VySW50ZXJhY3Rpb24gPSAhaGFzTm9FbnRyeSAmJiBzdGF0ZW1lbnQtPmdldENvbHVt
bkludCgxKSA/IHRydWUgOiBmYWxzZTsKKyAgICBib29sIGlzUHJldmFsZW50ID0gIWhhc05vRW50
cnkgJiYgISFzdGF0ZW1lbnQtPmNvbHVtbkludCgwKTsKKyAgICBib29sIGhhZFVzZXJJbnRlcmFj
dGlvbiA9ICFoYXNOb0VudHJ5ICYmIHN0YXRlbWVudC0+Y29sdW1uSW50KDEpID8gdHJ1ZSA6IGZh
bHNlOwogCiAgICAgaWYgKCFhcmVBbGxUaGlyZFBhcnR5Q29va2llc0Jsb2NrZWRVbmRlcih0b3BG
cmFtZURvbWFpbikgJiYgIWlzUHJldmFsZW50KQogICAgICAgICByZXR1cm4gQ29va2llQWNjZXNz
OjpCYXNlZE9uQ29va2llUG9saWN5OwpAQCAtMjM0NCw3ICsyMzQ0LDcgQEAgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNV
c2VyR3JhbnRlZFMKICAgICAgICAgfHwgc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykK
ICAgICAgICAgcmV0dXJuIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm87CiAKLSAgICBy
ZXR1cm4gISFzdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSA/IFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93bjo6WWVzIDogU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObzsKKyAgICByZXR1
cm4gISFzdGF0ZW1lbnQtPmNvbHVtbkludCgwKSA/IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
bjo6WWVzIDogU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObzsKIH0KIAogVmVjdG9yPFJl
Z2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9t
YWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yKCkgY29uc3QKQEAgLTIzNTcsNyArMjM1Nyw3
IEBAIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmRvbWFpbnNUb0Jsb2NrQW5kCiAgICAgICAgIHJldHVybiByZXN1bHRzOwogICAg
IAogICAgIHdoaWxlIChzdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICBy
ZXN1bHRzLmFwcGVuZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lz
dHJhYmxlRG9tYWluU3RyaW5nKHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgwKSkpOworICAgICAg
ICByZXN1bHRzLmFwcGVuZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJl
Z2lzdHJhYmxlRG9tYWluU3RyaW5nKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSkpOwogICAgIAog
ICAgIHJldHVybiByZXN1bHRzOwogfQpAQCAtMjM3Miw3ICsyMzcyLDcgQEAgVmVjdG9yPFJlZ2lz
dHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWlu
c1RvQmxvY2tCdXQKICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgCiAgICAgd2hpbGUgKHN0
YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIHJlc3VsdHMuYXBwZW5kKFJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJp
bmcoc3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDApKSk7CisgICAgICAgIHJlc3VsdHMuYXBwZW5k
KFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5T
dHJpbmcoc3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKSk7CiAKICAgICByZXR1cm4gcmVzdWx0czsK
IH0KQEAgLTIzODcsNyArMjM4Nyw3IEBAIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbnNXaXRoVXNlckluCiAgICAgICAg
IHJldHVybiByZXN1bHRzOwogICAgIAogICAgIHdoaWxlIChzdGF0ZW1lbnQtPnN0ZXAoKSA9PSBT
UUxJVEVfUk9XKQotICAgICAgICByZXN1bHRzLmFwcGVuZChSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHN0YXRlbWVudC0+Z2V0Q29s
dW1uVGV4dCgwKSkpOworICAgICAgICByZXN1bHRzLmFwcGVuZChSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHN0YXRlbWVudC0+Y29s
dW1uVGV4dCgwKSkpOwogCiAgICAgcmV0dXJuIHJlc3VsdHM7CiB9CkBAIC0yNDAyLDcgKzI0MDIs
NyBAQCBIYXNoTWFwPFRvcEZyYW1lRG9tYWluLCBTdWJSZXNvdXJjZURvbWFpbj4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OgogICAgICAgICByZXR1cm4gcmVzdWx0czsKIAog
ICAgIHdoaWxlIChzdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICByZXN1
bHRzLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxl
RG9tYWluU3RyaW5nKHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgxKSksIFJlZ2lzdHJhYmxlRG9t
YWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoc3RhdGVtZW50
LT5nZXRDb2x1bW5UZXh0KDApKSk7CisgICAgICAgIHJlc3VsdHMuYWRkKFJlZ2lzdHJhYmxlRG9t
YWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoc3RhdGVtZW50
LT5jb2x1bW5UZXh0KDEpKSwgUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21S
ZWdpc3RyYWJsZURvbWFpblN0cmluZyhzdGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpKTsKIAogICAg
IHJldHVybiByZXN1bHRzOwogfQpAQCAtMjQ1MywxMyArMjQ1MywxMyBAQCBWZWN0b3I8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OkRvbWFpbkRhdGE+IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYQogICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAKICAgICB3aGlsZSAoc3Rh
dGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICByZXN1bHRzLmFwcGVuZCh7
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSkKLSAgICAg
ICAgICAgICwgUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJs
ZURvbWFpblN0cmluZyhzdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMSkpCi0gICAgICAgICAgICAs
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0ZW1lbnQtPmdldENvbHVtbkRvdWJsZSgyKSkK
LSAgICAgICAgICAgICwgc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMykgPyB0cnVlIDogZmFsc2UK
LSAgICAgICAgICAgICwgc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoNCkgPyB0cnVlIDogZmFsc2UK
LSAgICAgICAgICAgICwgc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoNSkgPyB0cnVlIDogZmFsc2UK
LSAgICAgICAgICAgICwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC0+Z2V0Q29sdW1u
SW50KDYpKQorICAgICAgICByZXN1bHRzLmFwcGVuZCh7IHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dGF0ZW1lbnQtPmNvbHVtbkludCgwKSkKKyAgICAgICAgICAgICwgUmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhzdGF0ZW1lbnQtPmNv
bHVtblRleHQoMSkpCisgICAgICAgICAgICAsIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0
ZW1lbnQtPmNvbHVtbkRvdWJsZSgyKSkKKyAgICAgICAgICAgICwgc3RhdGVtZW50LT5jb2x1bW5J
bnQoMykgPyB0cnVlIDogZmFsc2UKKyAgICAgICAgICAgICwgc3RhdGVtZW50LT5jb2x1bW5JbnQo
NCkgPyB0cnVlIDogZmFsc2UKKyAgICAgICAgICAgICwgc3RhdGVtZW50LT5jb2x1bW5JbnQoNSkg
PyB0cnVlIDogZmFsc2UKKyAgICAgICAgICAgICwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRl
bWVudC0+Y29sdW1uSW50KDYpKQogICAgICAgICB9KTsKICAgICB9CiAgICAgCkBAIC0yNjA5LDcg
KzI2MDksNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcnVu
ZVN0YXRpc3RpY3NJZk5lZWRlZCgpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoc2Nv
cGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgY291bnQgPSBzY29w
ZWRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKKyAgICAgICAgY291bnQgPSBzY29wZWRTdGF0
ZW1lbnQtPmNvbHVtbkludCgwKTsKIAogICAgIGlmIChjb3VudCA8PSBwYXJhbWV0ZXJzKCkubWF4
U3RhdGlzdGljc0VudHJpZXMpCiAgICAgICAgIHJldHVybjsKQEAgLTI2MjgsNyArMjYyOCw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGlj
c0lmTmVlZGVkKCkKIAogICAgIFZlY3Rvcjx1bnNpZ25lZD4gZW50cmllc1RvUHJ1bmU7CiAgICAg
d2hpbGUgKHJlY29yZHNUb1BydW5lLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgZW50
cmllc1RvUHJ1bmUuYXBwZW5kKHJlY29yZHNUb1BydW5lLT5nZXRDb2x1bW5JbnQoMCkpOworICAg
ICAgICBlbnRyaWVzVG9QcnVuZS5hcHBlbmQocmVjb3Jkc1RvUHJ1bmUtPmNvbHVtbkludCgwKSk7
CiAKICAgICBhdXRvIGxpc3RUb1BydW5lID0gYnVpbGRMaXN0KFdURjo6SXRlcmF0b3JSYW5nZTxW
ZWN0b3I8dW5zaWduZWQ+OjppdGVyYXRvcj4oZW50cmllc1RvUHJ1bmUuYmVnaW4oKSwgZW50cmll
c1RvUHJ1bmUuZW5kKCkpKTsKIApAQCAtMjc0Myw3ICsyNzQzLDcgQEAgYm9vbCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNDb3JyZWN0U3ViU3RhdGlzdGljc0NvdW50KGNv
bnN0IFJlZ2kKICAgICAgICAgfHwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby0+c3RlcCgp
ICE9IFNRTElURV9ST1cpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4g
KHN1YkZyYW1lVW5kZXJUb3BGcmFtZUNvdW50LT5nZXRDb2x1bW5JbnQoMCkgPT0gMSAmJiBzdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVDb3VudC0+Z2V0Q29sdW1uSW50KDApID09IDEgJiYgc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUby0+Z2V0Q29sdW1uSW50KDApID09IDEpOworICAgIHJldHVy
biAoc3ViRnJhbWVVbmRlclRvcEZyYW1lQ291bnQtPmNvbHVtbkludCgwKSA9PSAxICYmIHN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZUNvdW50LT5jb2x1bW5JbnQoMCkgPT0gMSAmJiBzdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvLT5jb2x1bW5JbnQoMCkgPT0gMSk7CiB9CiAKIHN0YXRpYyB2b2lk
IGFwcGVuZEJvb2xlYW4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3RyaW5nJiBsYWJl
bCwgYm9vbCBmbGFnKQpAQCAtMjc3NCw3ICsyNzc0LDcgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQodW5zaWdu
ZWQKICAgICB9CiAgICAgCiAgICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElU
RV9ST1cpCi0gICAgICAgIHJlc3VsdCA9IG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVt
ZW50LT5nZXRDb2x1bW5UZXh0KDApOworICAgICAgICByZXN1bHQgPSBtX2RvbWFpblN0cmluZ0Zy
b21Eb21haW5JRFN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKTsKICAgICAKICAgICByZXR1cm4gcmVz
dWx0OwogfQpAQCAtMjgyNSwxMSArMjgyNSwxMSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJTdGF0aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImCiAg
ICAgYnVpbGRlci5hcHBlbmQodGFibGVOYW1lKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IjpcbiIpOwogICAgIAotICAgIGF1dG8gcmVzdWx0ID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFp
bklEKGRhdGEtPmdldENvbHVtbkludCgwKSk7CisgICAgYXV0byByZXN1bHQgPSBnZXREb21haW5T
dHJpbmdGcm9tRG9tYWluSUQoZGF0YS0+Y29sdW1uSW50KDApKTsKICAgICBhcHBlbmROZXh0RW50
cnkoYnVpbGRlciwgcmVzdWx0KTsKICAgICAKICAgICB3aGlsZSAoZGF0YS0+c3RlcCgpID09IFNR
TElURV9ST1cpIHsKLSAgICAgICAgcmVzdWx0ID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklE
KGRhdGEtPmdldENvbHVtbkludCgwKSk7CisgICAgICAgIHJlc3VsdCA9IGdldERvbWFpblN0cmlu
Z0Zyb21Eb21haW5JRChkYXRhLT5jb2x1bW5JbnQoMCkpOwogICAgICAgICBhcHBlbmROZXh0RW50
cnkoYnVpbGRlciwgcmVzdWx0KTsKICAgICB9CiB9CkBAIC0yODU1LDE1ICsyODU1LDE1IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlc291cmNlVG9TdHJpbmco
U3RyaW5nQnVpbGRlciYgYnVpbGRlCiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgCiAg
ICAgLy8gVXNlciBpbnRlcmFjdGlvbgotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImhhZFVz
ZXJJbnRlcmFjdGlvbiIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5n
ZXRDb2x1bW5JbnQoSGFkVXNlckludGVyYWN0aW9uSW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFu
KGJ1aWxkZXIsICJoYWRVc2VySW50ZXJhY3Rpb24iLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWlu
TmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7CiAgICAg
YnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICAgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvbjogIik7Ci0gICAgaWYgKGhhc0hhZFJlY2VudFVzZXJJbnRl
cmFjdGlvbihTZWNvbmRzKG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5n
ZXRDb2x1bW5Eb3VibGUoTW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVJbmRleCkpKSkKKyAg
ICBpZiAoaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFNlY29uZHMobV9nZXRSZXNvdXJjZURh
dGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZShNb3N0UmVjZW50VXNlckludGVy
YWN0aW9uVGltZUluZGV4KSkpKQogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIndpdGhp
biAyNCBob3VycyIpOwogICAgIGVsc2UKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIt
MSIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRl
ciwgImdyYW5kZmF0aGVyZWQiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVu
dC0+Z2V0Q29sdW1uSW50KEdyYW5kZmF0aGVyZWRJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4o
YnVpbGRlciwgImdyYW5kZmF0aGVyZWQiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0
YXRlbWVudC0+Y29sdW1uSW50KEdyYW5kZmF0aGVyZWRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBw
ZW5kKCdcbicpOwogCiAgICAgLy8gU3RvcmFnZSBhY2Nlc3MKQEAgLTI4NzYsNyArMjg3Niw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlc291cmNlVG9TdHJp
bmcoU3RyaW5nQnVpbGRlciYgYnVpbGRlCiAgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWls
ZGVyLCAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIiwgZG9tYWluKTsKICAgICBhcHBlbmRT
dWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRz
IiwgZG9tYWluKTsKIAotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWwiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0
YXRlbWVudC0+Z2V0Q29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWxJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWwiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRl
bWVudC0+Y29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxJbmRl
eCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCiAgICAgLy8gU3ViZnJhbWUgc3RhdHMK
QEAgLTI4ODgsMTEgKzI4ODgsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGUKICAgICBhcHBl
bmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zy
b20iLCBkb21haW4pOwogCiAgICAgLy8gUHJldmFsZW50IFJlc291cmNlCi0gICAgYXBwZW5kQm9v
bGVhbihidWlsZGVyLCAiaXNQcmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlE
b21haW5OYW1lU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoSXNQcmV2YWxlbnRJbmRleCkpOworICAg
IGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFsZW50UmVzb3VyY2UiLCBtX2dldFJlc291
cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KElzUHJldmFsZW50SW5kZXgp
KTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIs
ICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1l
U3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoSXNWZXJ5UHJldmFsZW50SW5kZXgpKTsKKyAgICBhcHBl
bmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVzb3Vy
Y2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSXNWZXJ5UHJldmFsZW50SW5k
ZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBidWlsZGVyLmFwcGVuZCgiICAg
IGRhdGFSZWNvcmRzUmVtb3ZlZDogIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0
ZW1lbnQtPmdldENvbHVtbkludChEYXRhUmVjb3Jkc1JlbW92ZWRJbmRleCkpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKCIgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAiLCBtX2dldFJlc291cmNlRGF0YUJ5
RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4KSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiB9CiAKQEAgLTI5MzgsNyArMjkzOCw3IEBAIGJv
b2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklERXhpc3RzSW5E
YXRhYmFzZShpbnQgZG9tYWluSUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICByZXR1cm4gbV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDAp
IHx8IG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApIHx8IG1fc3Vi
RnJhbWVFeGlzdHNTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSB8fCBtX3N1YlJlc291cmNlRXhp
c3RzU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0
YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVt
ZW50LT5nZXRDb2x1bW5JbnQoMCk7CisgICAgcmV0dXJuIG1fbGlua0RlY29yYXRpb25FeGlzdHNT
dGF0ZW1lbnQtPmNvbHVtbkludCgwKSB8fCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQtPmNv
bHVtbkludCgwKSB8fCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LT5jb2x1bW5JbnQoMCkgfHwg
bV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudC0+Y29sdW1uSW50KDApIHx8IG1fdW5pcXVlUmVk
aXJlY3RFeGlzdHNTdGF0ZW1lbnQtPmNvbHVtbkludCgwKSB8fCBtX29ic2VydmVkRG9tYWluc0V4
aXN0c1N0YXRlbWVudC0+Y29sdW1uSW50KDApOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMoKQpAQCAt
Mjk1MywxNCArMjk1MywxNCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjp1cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMoKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9vcGVyYXRpbmdEYXRlc1NpemUgPSBjb3VudE9wZXJhdGluZ0RhdGVzU3Rh
dGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CisgICAgbV9vcGVyYXRpbmdEYXRlc1NpemUgPSBjb3Vu
dE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50LT5jb2x1bW5JbnQoMCk7CiAKICAgICBpZiAoIWdldE1v
c3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50IHx8IGdldE1vc3RSZWNlbnRPcGVyYXRpbmdE
YXRlU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlT3BlcmF0aW5nRGF0ZXNQYXJhbWV0ZXJzIGdldEZpcnN0
T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJSIg
UFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
bV9tb3N0UmVjZW50T3BlcmF0aW5nRGF0ZSA9IE9wZXJhdGluZ0RhdGUoZ2V0TW9zdFJlY2VudE9w
ZXJhdGluZ0RhdGVTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSwgZ2V0TW9zdFJlY2VudE9wZXJh
dGluZ0RhdGVTdGF0ZW1lbnQtPmdldENvbHVtbkludCgxKSwgZ2V0TW9zdFJlY2VudE9wZXJhdGlu
Z0RhdGVTdGF0ZW1lbnQtPmdldENvbHVtbkludCgyKSk7CisgICAgbV9tb3N0UmVjZW50T3BlcmF0
aW5nRGF0ZSA9IE9wZXJhdGluZ0RhdGUoZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1l
bnQtPmNvbHVtbkludCgwKSwgZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQtPmNv
bHVtbkludCgxKSwgZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQtPmNvbHVtbklu
dCgyKSk7CiAKICAgICBpZiAoIWdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQpIHsKICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFy
YW1ldGVycyBnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50IGZhaWxlZCBkdXJpbmcgdGhl
IGNhbGwgdG8gcHJlcGFyZSgpIHdpdGggZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RS
SU5HICIuIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CkBAIC0yOTc3LDcgKzI5
NzcsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVP
cGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMoKQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9zaG9ydFdpbmRv
d09wZXJhdGluZ0RhdGUgPSBPcGVyYXRpbmdEYXRlKGdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0
ZW1lbnQtPmdldENvbHVtbkludCgwKSwgZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudC0+
Z2V0Q29sdW1uSW50KDEpLCBnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50LT5nZXRDb2x1
bW5JbnQoMikpOworICAgICAgICBtX3Nob3J0V2luZG93T3BlcmF0aW5nRGF0ZSA9IE9wZXJhdGlu
Z0RhdGUoZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudC0+Y29sdW1uSW50KDApLCBnZXRP
cGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50LT5jb2x1bW5JbnQoMSksIGdldE9wZXJhdGluZ0Rh
dGVXaW5kb3dTdGF0ZW1lbnQtPmNvbHVtbkludCgyKSk7CiAgICAgfQogCiAgICAgaWYgKG1fb3Bl
cmF0aW5nRGF0ZXNTaXplIDw9IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZyAtIDEpCkBAIC0yOTkw
LDcgKzI5OTAsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1
cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMoKQogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9sb25n
V2luZG93T3BlcmF0aW5nRGF0ZSA9IE9wZXJhdGluZ0RhdGUoZ2V0T3BlcmF0aW5nRGF0ZVdpbmRv
d1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApLCBnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVt
ZW50LT5nZXRDb2x1bW5JbnQoMSksIGdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQtPmdl
dENvbHVtbkludCgyKSk7CisgICAgICAgIG1fbG9uZ1dpbmRvd09wZXJhdGluZ0RhdGUgPSBPcGVy
YXRpbmdEYXRlKGdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQtPmNvbHVtbkludCgwKSwg
Z2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudC0+Y29sdW1uSW50KDEpLCBnZXRPcGVyYXRp
bmdEYXRlV2luZG93U3RhdGVtZW50LT5jb2x1bW5JbnQoMikpOwogICAgIH0KIH0KIApAQCAtMzEw
NiwyMSArMzEwNiwyMSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdAogCiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YnVpbGRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQq
IHN0YXRlbWVudCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgYXR0cmli
dXRpb25UeXBlKQogewotICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbiA9IGdldERvbWFpblN0cmlu
Z0Zyb21Eb21haW5JRChzdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSk7Ci0gICAgYXV0byBkZXN0
aW5hdGlvblNpdGVEb21haW4gPSBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoc3RhdGVtZW50
LT5nZXRDb2x1bW5JbnQoMSkpOwotICAgIGF1dG8gc291cmNlSUQgPSBzdGF0ZW1lbnQtPmdldENv
bHVtbkludCgyKTsKLSAgICBhdXRvIHRpbWVPZkFkQ2xpY2sgPSBhdHRyaWJ1dGlvblR5cGUgPT0g
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQgPyBzdGF0
ZW1lbnQtPmdldENvbHVtbkRvdWJsZSg1KSA6IHN0YXRlbWVudC0+Z2V0Q29sdW1uRG91YmxlKDMp
OwotICAgIGF1dG8gdG9rZW4gPSBhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQgPyBzdGF0ZW1lbnQtPmdldENvbHVtblRl
eHQoNykgOiBzdGF0ZW1lbnQtPmdldENvbHVtblRleHQoNCk7Ci0gICAgYXV0byBzaWduYXR1cmUg
PSBhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5
cGU6OkF0dHJpYnV0ZWQgPyBzdGF0ZW1lbnQtPmdldENvbHVtblRleHQoOCkgOiBzdGF0ZW1lbnQt
PmdldENvbHVtblRleHQoNSk7Ci0gICAgYXV0byBrZXlJRCA9IGF0dHJpYnV0aW9uVHlwZSA9PSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/IHN0YXRl
bWVudC0+Z2V0Q29sdW1uVGV4dCg5KSA6IHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCg2KTsKKyAg
ICBhdXRvIHNvdXJjZVNpdGVEb21haW4gPSBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoc3Rh
dGVtZW50LT5jb2x1bW5JbnQoMCkpOworICAgIGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluID0g
Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Y29sdW1uSW50KDEpKTsKKyAg
ICBhdXRvIHNvdXJjZUlEID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMik7CisgICAgYXV0byB0aW1l
T2ZBZENsaWNrID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoNSkgOiBz
dGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgzKTsKKyAgICBhdXRvIHRva2VuID0gYXR0cmlidXRpb25U
eXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVk
ID8gc3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpIDogc3RhdGVtZW50LT5jb2x1bW5UZXh0KDQpOwor
ICAgIGF1dG8gc2lnbmF0dXJlID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5jb2x1bW5UZXh0
KDgpIDogc3RhdGVtZW50LT5jb2x1bW5UZXh0KDUpOworICAgIGF1dG8ga2V5SUQgPSBhdHRyaWJ1
dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJp
YnV0ZWQgPyBzdGF0ZW1lbnQtPmNvbHVtblRleHQoOSkgOiBzdGF0ZW1lbnQtPmNvbHVtblRleHQo
Nik7CiAKICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBhdHRyaWJ1dGlvbihXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlSUQoc291cmNlSUQpLCBXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZShSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHNvdXJjZVNpdGVEb21haW4pKSwg
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25T
aXRlKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21h
aW5TdHJpbmcoZGVzdGluYXRpb25TaXRlRG9tYWluKSksIHsgfSwgeyB9LCBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHModGltZU9mQWRDbGljaykpOwogICAgIAogICAgIGlmIChhdHRyaWJ1dGlvblR5
cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQp
IHsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gc3RhdGVtZW50LT5nZXRD
b2x1bW5JbnQoMyk7Ci0gICAgICAgIGF1dG8gcHJpb3JpdHkgPSBzdGF0ZW1lbnQtPmdldENvbHVt
bkludCg0KTsKLSAgICAgICAgYXV0byBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSA9IHN0
YXRlbWVudC0+Z2V0Q29sdW1uRG91YmxlKDYpOwotICAgICAgICBhdXRvIGRlc3RpbmF0aW9uRWFy
bGllc3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQtPmdldENvbHVtbkRvdWJsZSgxMCk7Cisg
ICAgICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IHN0YXRlbWVudC0+Y29sdW1uSW50
KDMpOworICAgICAgICBhdXRvIHByaW9yaXR5ID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoNCk7Cisg
ICAgICAgIGF1dG8gc291cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQtPmNv
bHVtbkRvdWJsZSg2KTsKKyAgICAgICAgYXV0byBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2Vu
ZFZhbHVlID0gc3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMTApOwogCiAgICAgICAgIGlmIChhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhICE9IC0xKQogICAgICAgICAgICAgYXR0cmlidXRpb24uc2V0QXR0
cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEgeyBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXR0cmlidXRpb25UcmlnZ2VyRGF0YSks
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQcmlvcml0eShwcmlvcml0eSkgfSk7
CkBAIC0zMzk5LDE3ICszMzk5LDE3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKIAogU3RyaW5n
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphdHRyaWJ1dGlvblRvU3RyaW5n
KFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCogc3RhdGVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpCiB7Ci0gICAgYXV0byBzb3VyY2VT
aXRlRG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Z2V0Q29s
dW1uSW50KDApKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbiA9IGdldERvbWFpblN0
cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQtPmdldENvbHVtbkludCgxKSk7Ci0gICAgYXV0byBz
b3VyY2VJRCA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDIpOworICAgIGF1dG8gc291cmNlU2l0
ZURvbWFpbiA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQtPmNvbHVtbklu
dCgwKSk7CisgICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21haW4gPSBnZXREb21haW5TdHJpbmdG
cm9tRG9tYWluSUQoc3RhdGVtZW50LT5jb2x1bW5JbnQoMSkpOworICAgIGF1dG8gc291cmNlSUQg
PSBzdGF0ZW1lbnQtPmNvbHVtbkludCgyKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
ICAgICBidWlsZGVyLmFwcGVuZCgiU291cmNlIHNpdGU6ICIsIHNvdXJjZVNpdGVEb21haW4sICJc
bkF0dHJpYnV0ZSBvbiBzaXRlOiAiLCBkZXN0aW5hdGlvblNpdGVEb21haW4sICJcblNvdXJjZSBJ
RDogIiwgc291cmNlSUQpOwogCiAgICAgaWYgKGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkgewotICAgICAgICBhdXRv
IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBzdGF0ZW1lbnQtPmdldENvbHVtbkludCgzKTsKLSAg
ICAgICAgYXV0byBwcmlvcml0eSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDQpOwotICAgICAg
ICBhdXRvIGVhcmxpZXN0VGltZVRvU2VuZCA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDYpOwor
ICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBzdGF0ZW1lbnQtPmNvbHVtbklu
dCgzKTsKKyAgICAgICAgYXV0byBwcmlvcml0eSA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDQpOwor
ICAgICAgICBhdXRvIGVhcmxpZXN0VGltZVRvU2VuZCA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDYp
OwogCiAgICAgICAgIGlmIChhdHRyaWJ1dGlvblRyaWdnZXJEYXRhICE9IC0xKSB7CiAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiXG5BdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICIsIGF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEsICJcbkF0dHJpYnV0aW9uIHByaW9yaXR5OiAiLCBwcmlvcml0eSwg
IlxuQXR0cmlidXRpb24gZWFybGllc3QgdGltZSB0byBzZW5kOiAiKTsKQEAgLTM0MzcsNyArMzQz
Nyw3IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
Ci0gICAgaWYgKCFwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMtPmdldENvbHVtbklu
dCgwKSAmJiAhcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzLT5nZXRDb2x1bW5JbnQo
MSkpCisgICAgaWYgKCFwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMtPmNvbHVtbklu
dCgwKSAmJiAhcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzLT5jb2x1bW5JbnQoMSkp
CiAgICAgICAgIHJldHVybiAiXG5ObyBzdG9yZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudCBk
YXRhLlxuIl9zOwogCiAgICAgYXV0byB1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlz
LT5zY29wZWRTdGF0ZW1lbnQobV9hbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uc1N0YXRlbWVudCwgYWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBdHRyaWJ1dGlvbnNRdWVyeSwgInByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmci
X3MpOwpAQCAtMzQ5OSwxMSArMzQ5OSwxMSBAQCBzdGQ6OnBhaXI8T3B0aW9uYWw8U291cmNlRWFy
bGllc3RUaW1lVG9TZW5kPiwgT3B0aW9uYWw8RGVzdGluYXRpb25FYXJsaWVzdFRpbWVUbwogICAg
IE9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kPiBlYXJsaWVzdFRpbWVUb1Nl
bmRUb0Rlc3RpbmF0aW9uOwogICAgIAogICAgIC8vIEEgdmFsdWUgb2YgMC4wIGluZGljYXRlcyB0
aGF0IHRoZSByZXBvcnQgaGFzIGJlZW4gc2VudCB0byB0aGUgcmVzcGVjdGl2ZSBzaXRlLgotICAg
IGlmIChzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVtbkRvdWJsZSgwKSA+IDAuMCkKLSAgICAgICAg
ZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgPSBzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVtbkRv
dWJsZSgwKTsKKyAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMCkgPiAwLjAp
CisgICAgICAgIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlID0gc2NvcGVkU3RhdGVtZW50LT5j
b2x1bW5Eb3VibGUoMCk7CiAgICAgCi0gICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+Z2V0Q29sdW1u
RG91YmxlKDEpID4gMC4wKQotICAgICAgICBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9u
ID0gc2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5Eb3VibGUoMSk7CisgICAgaWYgKHNjb3BlZFN0
YXRlbWVudC0+Y29sdW1uRG91YmxlKDEpID4gMC4wKQorICAgICAgICBlYXJsaWVzdFRpbWVUb1Nl
bmRUb0Rlc3RpbmF0aW9uID0gc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMSk7CiAgICAg
CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCBl
YXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2UuY3BwCmluZGV4IDM2ODM2NWZmMWIwODg0M2QzNmFlMDI5NzM2MDhkN2JhYTRjYmZjM2Uu
LjUxODdiYmI1NTI5MmYxNzA5Yjc0YmYyN2YzNGU3Zjk0NmVlYzk5YzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMTQ2LDggKzE0Niw4IEBAIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+IExvY2FsU3RvcmFnZURhdGFiYXNlOjppdGVtcygpIGNvbnN0CiAgICAgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gaXRlbXM7CiAgICAgaW50IHJlc3VsdCA9IHF1ZXJ5LT5zdGVwKCk7CiAg
ICAgd2hpbGUgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFN0cmluZyBrZXkgPSBx
dWVyeS0+Z2V0Q29sdW1uVGV4dCgwKTsKLSAgICAgICAgU3RyaW5nIHZhbHVlID0gcXVlcnktPmdl
dENvbHVtbkJsb2JBc1N0cmluZygxKTsKKyAgICAgICAgU3RyaW5nIGtleSA9IHF1ZXJ5LT5jb2x1
bW5UZXh0KDApOworICAgICAgICBTdHJpbmcgdmFsdWUgPSBxdWVyeS0+Y29sdW1uQmxvYkFzU3Ry
aW5nKDEpOwogICAgICAgICBpZiAoIWtleS5pc051bGwoKSAmJiAhdmFsdWUuaXNOdWxsKCkpCiAg
ICAgICAgICAgICBpdGVtcy5hZGQoV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHZhbHVlKSk7CiAgICAg
ICAgIHJlc3VsdCA9IHF1ZXJ5LT5zdGVwKCk7CkBAIC0yMDYsNyArMjA2LDcgQEAgU3RyaW5nIExv
Y2FsU3RvcmFnZURhdGFiYXNlOjppdGVtKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogCiAgICAg
aW50IHJlc3VsdCA9IHF1ZXJ5LT5zdGVwKCk7CiAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfUk9X
KQotICAgICAgICByZXR1cm4gcXVlcnktPmdldENvbHVtbkJsb2JBc1N0cmluZygwKTsKKyAgICAg
ICAgcmV0dXJuIHF1ZXJ5LT5jb2x1bW5CbG9iQXNTdHJpbmcoMCk7CiAgICAgaWYgKHJlc3VsdCAh
PSBTUUxJVEVfRE9ORSkKICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciBnZXQgaXRlbSBmcm9tIEl0
ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFnZSIpOwogICAgIHJldHVybiB7IH07CkBAIC0zMTMsNyAr
MzEzLDcgQEAgYm9vbCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6ZGF0YWJhc2VJc0VtcHR5KCkgY29u
c3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiAhcXVlcnktPmdl
dENvbHVtbkludCgwKTsKKyAgICByZXR1cm4gIXF1ZXJ5LT5jb2x1bW5JbnQoMCk7CiB9CiAKIHZv
aWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5JZkV4aXN0aW5nKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDVlOTg1OTQz
Nzk2YTQxOTkzNDU3OTBiYjI2NGFhOTlhMTZlZTcyYjAuLmE4YTc4OWZjMTJjNDE4NmEwOWYwMmM5
MmQ0M2VlZDE0NTFlMDQxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtNjcsNyArNjcsNyBAQCBJY29uRGF0YWJhc2U6Oklj
b25EYXRhYmFzZShjb25zdCBTdHJpbmcmIHBhdGgsIEFsbG93RGF0YWJhc2VXcml0ZSBhbGxvd0Rh
dGFiYXNlVwogICAgICAgICB9CiAKICAgICAgICAgYXV0byB2ZXJzaW9uU3RhdGVtZW50ID0gbV9k
Yi5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgdmFsdWUgRlJPTSBJY29uRGF0YWJhc2VJbmZvIFdI
RVJFIGtleSA9ICdWZXJzaW9uJzsiX3MpOwotICAgICAgICBhdXRvIGRhdGFiYXNlVmVyc2lvbk51
bWJlciA9IHZlcnNpb25TdGF0ZW1lbnQgPyB2ZXJzaW9uU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQo
MCkgOiAwOworICAgICAgICBhdXRvIGRhdGFiYXNlVmVyc2lvbk51bWJlciA9IHZlcnNpb25TdGF0
ZW1lbnQgPyB2ZXJzaW9uU3RhdGVtZW50LT5jb2x1bW5JbnQoMCkgOiAwOwogICAgICAgICBpZiAo
ZGF0YWJhc2VWZXJzaW9uTnVtYmVyID4gY3VycmVudERhdGFiYXNlVmVyc2lvbikgewogICAgICAg
ICAgICAgTE9HKEljb25EYXRhYmFzZSwgIkRhdGFiYXNlIHZlcnNpb24gbnVtYmVyICVkIGlzIGdy
ZWF0ZXIgdGhhbiBvdXIgY3VycmVudCB2ZXJzaW9uIG51bWJlciAlZCAtIGNsb3NpbmcgdGhlIGRh
dGFiYXNlIHRvIHByZXZlbnQgb3ZlcndyaXRpbmcgbmV3ZXIgdmVyc2lvbnMiLAogICAgICAgICAg
ICAgICAgIGRhdGFiYXNlVmVyc2lvbk51bWJlciwgY3VycmVudERhdGFiYXNlVmVyc2lvbik7CkBA
IC0xOTAsNyArMTkwLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnBvcHVsYXRlUGFnZVVSTFRvSWNv
blVSTE1hcCgpCiAgICAgYXV0byByZXN1bHQgPSBxdWVyeS0+c3RlcCgpOwogICAgIExvY2tIb2xk
ZXIgbG9ja0hvbGRlcihtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrKTsKICAgICB3aGlsZSAocmVz
dWx0ID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgbV9wYWdlVVJMVG9JY29uVVJMTWFwLnNldChx
dWVyeS0+Z2V0Q29sdW1uVGV4dCgwKSwgcXVlcnktPmdldENvbHVtblRleHQoMSkpOworICAgICAg
ICBtX3BhZ2VVUkxUb0ljb25VUkxNYXAuc2V0KHF1ZXJ5LT5jb2x1bW5UZXh0KDApLCBxdWVyeS0+
Y29sdW1uVGV4dCgxKSk7CiAgICAgICAgIHJlc3VsdCA9IHF1ZXJ5LT5zdGVwKCk7CiAgICAgfQog
CkBAIC0zMDYsOCArMzA2LDggQEAgT3B0aW9uYWw8aW50NjRfdD4gSWNvbkRhdGFiYXNlOjppY29u
SURGb3JJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgYm9vbCYgZXgKIAogICAgIE9wdGlv
bmFsPGludDY0X3Q+IHJlc3VsdDsKICAgICBpZiAobV9pY29uSURGb3JJY29uVVJMU3RhdGVtZW50
LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICByZXN1bHQgPSBtX2ljb25JREZvcklj
b25VUkxTdGF0ZW1lbnQtPmdldENvbHVtbkludDY0KDApOwotICAgICAgICBleHBpcmVkID0gbV9p
Y29uSURGb3JJY29uVVJMU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQ2NCgxKSA8PSBmbG9vcigoV2Fs
bFRpbWU6Om5vdygpIC0gaWNvbkV4cGlyYXRpb25UaW1lKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNl
Y29uZHMoKSk7CisgICAgICAgIHJlc3VsdCA9IG1faWNvbklERm9ySWNvblVSTFN0YXRlbWVudC0+
Y29sdW1uSW50NjQoMCk7CisgICAgICAgIGV4cGlyZWQgPSBtX2ljb25JREZvckljb25VUkxTdGF0
ZW1lbnQtPmNvbHVtbkludDY0KDEpIDw9IGZsb29yKChXYWxsVGltZTo6bm93KCkgLSBpY29uRXhw
aXJhdGlvblRpbWUpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKTsKICAgICB9CiAKICAg
ICBtX2ljb25JREZvckljb25VUkxTdGF0ZW1lbnQtPnJlc2V0KCk7CkBAIC0zNDIsNyArMzQyLDcg
QEAgYm9vbCBJY29uRGF0YWJhc2U6OnNldEljb25JREZvclBhZ2VVUkwoaW50NjRfdCBpY29uSUQs
IGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotVmVjdG9yPGNo
YXI+IEljb25EYXRhYmFzZTo6aWNvbkRhdGEoaW50NjRfdCBpY29uSUQpCitWZWN0b3I8dWludDhf
dD4gSWNvbkRhdGFiYXNlOjppY29uRGF0YShpbnQ2NF90IGljb25JRCkKIHsKICAgICBBU1NFUlQo
IWlzTWFpblJ1bkxvb3AoKSk7CiAgICAgQVNTRVJUKG1fZGIuaXNPcGVuKCkpOwpAQCAtMzYxLDEw
ICszNjEsNyBAQCBWZWN0b3I8Y2hhcj4gSWNvbkRhdGFiYXNlOjppY29uRGF0YShpbnQ2NF90IGlj
b25JRCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBWZWN0b3I8Y2hhcj4gcmVz
dWx0OwotICAgIGlmIChtX2ljb25EYXRhU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykK
LSAgICAgICAgbV9pY29uRGF0YVN0YXRlbWVudC0+Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDAsIHJl
c3VsdCk7Ci0KKyAgICBhdXRvIHJlc3VsdCA9IG1faWNvbkRhdGFTdGF0ZW1lbnQtPmNvbHVtbkJs
b2IoMCk7CiAgICAgbV9pY29uRGF0YVN0YXRlbWVudC0+cmVzZXQoKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQpAQCAtNTQyLDcgKzUzOSw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZv
clBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUKIAogICAg
IG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBwYWdlVVJMID0gcGFnZVVSTC5pc29sYXRlZENvcHkoKSwgYWxsb3dEYXRhYmFzZVdyaXRl
LCB0aW1lc3RhbXAgPSBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgT3B0aW9uYWw8aW50NjRfdD4gaWNvbklEOwotICAgICAgICBWZWN0b3I8Y2hhcj4gaWNv
bkRhdGE7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBpY29uRGF0YTsKICAgICAgICAgU3RyaW5n
IGljb25VUkw7CiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlciht
X3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKaW5kZXggZTIyNTJhMDAwMGQyYmJlNWI2ZjY5Y2QyMjcx
ZDAwYTEyNWM1Nzc0Yi4uYmViMmZiODA2ZWM1NWM2NjM0Y2Q1ZTVhMDBkNTA3ODM2MTVmZWY0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgK
QEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0Q2xlYXJMb2FkZWRJY29u
c1RpbWVyKCk7CiAgICAgT3B0aW9uYWw8aW50NjRfdD4gaWNvbklERm9ySWNvblVSTChjb25zdCBT
dHJpbmcmLCBib29sJiBleHBpcmVkKTsKICAgICBib29sIHNldEljb25JREZvclBhZ2VVUkwoaW50
NjRfdCwgY29uc3QgU3RyaW5nJik7Ci0gICAgVmVjdG9yPGNoYXI+IGljb25EYXRhKGludDY0X3Qp
OworICAgIFZlY3Rvcjx1aW50OF90PiBpY29uRGF0YShpbnQ2NF90KTsKICAgICBPcHRpb25hbDxp
bnQ2NF90PiBhZGRJY29uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxjaGFyPiYpOwogICAg
IHZvaWQgdXBkYXRlSWNvblRpbWVzdGFtcChpbnQ2NF90IGljb25JRCwgaW50NjRfdCB0aW1lc3Rh
bXApOwogICAgIHZvaWQgZGVsZXRlSWNvbihpbnQ2NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKaW5kZXggNWRjMjBiY2YwZGY1YzkwMWI3
ODU3NTc3ODFlNWI3MGYzMDc3M2QxMy4uOTc2YmE1MzQ3ZWY1ODQ1YWFkOGQwYTQ4ZjM0OTBkYTcz
MjdhNjUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VB
cmVhU3luYy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVh
U3luYy5jcHAKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6cGVyZm9y
bUltcG9ydCgpCiAKICAgICBpbnQgcmVzdWx0ID0gcXVlcnktPnN0ZXAoKTsKICAgICB3aGlsZSAo
cmVzdWx0ID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgaXRlbU1hcC5zZXQocXVlcnktPmdldENv
bHVtblRleHQoMCksIHF1ZXJ5LT5nZXRDb2x1bW5CbG9iQXNTdHJpbmcoMSkpOworICAgICAgICBp
dGVtTWFwLnNldChxdWVyeS0+Y29sdW1uVGV4dCgwKSwgcXVlcnktPmNvbHVtbkJsb2JBc1N0cmlu
ZygxKSk7CiAgICAgICAgIHJlc3VsdCA9IHF1ZXJ5LT5zdGVwKCk7CiAgICAgfQogCkBAIC01MTIs
NyArNTEyLDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OmRlbGV0ZUVtcHR5RGF0YWJhc2UoKQog
ICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHF1ZXJ5
LT5nZXRDb2x1bW5JbnQoMCk7CisgICAgICAgIHJldHVybiBxdWVyeS0+Y29sdW1uSW50KDApOwog
ICAgIH0oKTsKICAgICBpZiAoY291bnQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IGExMmVkNDhlNjNiN2Q5
YmIzYWViZDhhN2ZiN2VkYjFmZGEzYTlkYmYuLjQ5YTMzMmUyMWE0ODU5OGRkNDU3NDczZDE1M2Y5
YmVhZjA2ZWQwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9y
YWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VU
cmFja2VyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNJ
bXBvcnRPcmlnaW5JZGVudGlmaWVycygpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
TG9ja0hvbGRlciBsb2NrT3JpZ2lucyhtX29yaWdpblNldE11dGV4KTsKICAgICAgICAgICAgICAg
ICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC0+c3RlcCgpKSA9PSBTUUxJVEVfUk9XKQotICAg
ICAgICAgICAgICAgICAgICBtX29yaWdpblNldC5hZGQoc3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0
KDApLmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9vcmlnaW5TZXQuYWRk
KHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKS5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX0RPTkUpIHsK
QEAgLTQxMiwxNSArNDEyLDE1IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxP
cmlnaW5zKCkKICAgICAKICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gc3Rh
dGVtZW50LT5zdGVwKCkpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgaWYgKCFjYW5EZWxldGVP
cmlnaW4oc3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDApKSkKKyAgICAgICAgaWYgKCFjYW5EZWxl
dGVPcmlnaW4oc3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc3RhdGVtZW50LT5nZXRDb2x1bW5U
ZXh0KDEpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShzdGF0ZW1lbnQtPmNvbHVt
blRleHQoMSkpOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
Y2xpZW50TXV0ZXgpOwogICAgICAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgICAg
IG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihzdGF0ZW1lbnQtPmdldENvbHVtblRl
eHQoMCkpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdp
bihzdGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAt
NjI2LDcgKzYyNiw3IEBAIFN0cmluZyBTdG9yYWdlVHJhY2tlcjo6ZGF0YWJhc2VQYXRoRm9yT3Jp
Z2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKICAgICBpZiAocmVzdWx0ICE9IFNR
TElURV9ST1cpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIHJldHVybiBwYXRoU3Rh
dGVtZW50LT5nZXRDb2x1bW5UZXh0KDApOworICAgIHJldHVybiBwYXRoU3RhdGVtZW50LT5jb2x1
bW5UZXh0KDApOwogfQogICAgIAogdWludDY0X3QgU3RvcmFnZVRyYWNrZXI6OmRpc2tVc2FnZUZv
ck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429083</attachid>
            <date>2021-05-19 12:03:13 -0700</date>
            <delta_ts>2021-05-19 14:00:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225971-20210519120312.patch</filename>
            <type>text/plain</type>
            <size>113161</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZlNTlhYTM4MTM1NGRjZWE5M2MwNjlk
NzAzNDNmNDQ3Y2QyNTI4MzAuLmZjMGEzNGE4ZjRmMWRhMDZlOWUxZDE0OTk5M2IwMzg5MmMzZTAy
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wICJnZXQiIHByZWZpeCBmcm9tIFNRTGl0ZVN0YXRl
bWVudCBtZW1iZXIgZnVuY3Rpb25zIGFzIHdlbGwgYXMgb3V0LXBhcmFtZXRlcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk3MQorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZCBWZWN0b3IgY29uc3RydWN0
b3IgdGhhdCB0YWtlcyBpbiBhbiBhcnJheSBhbmQgYSBzaXplLgorCisgICAgICAgICogd3RmL1Zl
Y3Rvci5oOgorICAgICAgICAoV1RGOjpWZWN0b3I6OlZlY3Rvcik6CisKIDIwMjEtMDUtMTggIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEFpckFs
bG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nIHVzZSBsZXNzIG1lbW9yeQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDZjMDQwNDVmYWQwZDJkNmQ1ZGVhYWNjNTlkZjhlMzYxNDI0YWQ1NDcuLjVkYzdmY2M2ODU3
Zjg4ODJhNWM4MDkxNmM3ZTY3ZTQ4ZjlhZjc2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NSBA
QAorMjAyMS0wNS0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IERyb3AgImdldCIgcHJlZml4IGZyb20gU1FMaXRlU3RhdGVtZW50IG1lbWJlciBmdW5jdGlvbnMg
YXMgd2VsbCBhcyBvdXQtcGFyYW1ldGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgRHJvcCAiZ2V0IiBwcmVmaXggZnJvbSBTUUxpdGVTdGF0ZW1lbnQgbWVt
YmVyIGZ1bmN0aW9ucyBhcyB3ZWxsIGFzIG91dC1wYXJhbWV0ZXJzIHRvCisgICAgICAgIG1vZGVy
bml6ZSB0aGUgY29kZSBhIGJpdCBhbmQgZm9sbG93IFdlYktpdCBzdHlsZS4KKworICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpjcmVhdGVPck1pZ3JhdGVSZWNvcmRzVGFibGVJZk5l
Y2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZW5zdXJlVmFsaWRCbG9iVGFibGVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZEluZGV4UmVjb3Jkc1RhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1
cmVWYWxpZEluZGV4UmVjb3Jkc0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZEluZGV4UmVjb3Jkc1JlY29yZEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpl
bnN1cmVWYWxpZE9iamVjdFN0b3JlSW5mb1RhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjptaWdyYXRlSW5kZXhJbmZvVGFibGVGb3JJRFVw
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6bWlncmF0ZUluZGV4UmVjb3Jkc1RhYmxlRm9ySURVcGRhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJh
Y3RFeGlzdGluZ0RhdGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVV
bnVzZWRCbG9iRmlsZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QmxvYlJlY29yZHNGb3JPYmplY3RTdG9y
ZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpnZXRBbGxPYmplY3RTdG9yZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVj
b3JkRm9yT25lS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0S2V5R2VuZXJhdG9yVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJhY2tp
bmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1
cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6
aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmV0cmlldmVUZXh0UmVzdWx0RnJvbURh
dGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpwZXJmb3JtR2V0VGFibGVOYW1l
cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlTm9M
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6b3JpZ2lucyk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlTmFtZXNOb0xvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNldERhdGFiYXNlRGV0YWlscyk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnF1b3RhTm9Mb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNl
cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMU3RhdGVtZW50OjpleGVjdXRlKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZUdyb3VwKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3VwRm9yVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0Nh
Y2hlR3JvdXBGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OmNhbGN1bGF0ZVF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVVc2FnZUZvck9yaWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FsY3VsYXRlUmVtYWluaW5nU2l6ZUZvck9y
aWdpbkV4Y2x1ZGluZ0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjp2ZXJpZnlTY2hlbWFWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6Om1hbmlmZXN0VVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlQ2FjaGVHcm91cFJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2hlY2tGb3JEZWxldGVkUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmbGF0RmlsZUFyZWFT
aXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnZlcmlmeVNjaGVtYVZlcnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmNoZWNrRGF0YWJhc2VWYWxpZGl0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyk6CisgICAgICAgIChXZWJD
b3JlOjpDb29raWVKYXJEQjo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29r
aWVKYXJEQjo6YWxsRG9tYWlucyk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFs
TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6bWF4aW11bVNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnBhZ2VTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpmcmVlU3BhY2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlOjp0b3RhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2U6OmNsZWFyQWxsVGFibGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
Ojp0dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0pOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9T
UUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Ojpj
b2x1bW5OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6Y29sdW1uVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Ojpjb2x1bW5UZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6Y29sdW1uRG91YmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6Y29sdW1uSW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudDo6Y29sdW1uSW50NjQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50Ojpjb2x1bW5CbG9iQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50Ojpjb2x1bW5CbG9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3Rh
dGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudURCOjpsb2FkUmVjZW50U2VhcmNoZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51REI6OmNoZWNrRGF0YWJhc2VWYWxp
ZGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVEQjo6dmVyaWZ5U2NoZW1h
VmVyc2lvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZW5z
dXJlVmFsaWRSZWNvcmRzVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0
YWJhc2U6OmltcG9ydFJlY29yZHMpOgorCiAyMDIxLTA1LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGZsYWt5IGFzc2VydGlvbiBoaXQgdW5kZXIgQXVk
aW9TdW1taW5nSnVuY3Rpb246OnJlbW92ZU91dHB1dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgxNjE1YmNmNDY0
NjE5MWYxYjMwZjY0YzdkN2JlNmQxYTU1MmQxNDkuLjhlZDU4N2M4MzkzMWEzNWFhZGY2ZWI0Y2Rj
NDg3OTE3ZDBiZTUyYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjEtMDUtMTkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wICJnZXQiIHByZWZp
eCBmcm9tIFNRTGl0ZVN0YXRlbWVudCBtZW1iZXIgZnVuY3Rpb25zIGFzIHdlbGwgYXMgb3V0LXBh
cmFtZXRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNTk3MQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVw
ZGF0ZSBjb2RlIGJhc2UgZHVlIHRvIFNRTGl0ZVN0YXRlbWVudCBBUEkgY2hhbmdlcy4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pc3NpbmdVbmlxdWVJ
bmRpY2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmNvbHVtbnNGb3JUYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNF
bXB0eSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpyZWxhdGlvbnNoaXBFeGlzdHMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSUQgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2Up
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFnZ3Jl
Z2F0ZWRUaGlyZFBhcnR5RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21h
aW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVj
dGVkVG9QcmV2YWxlbnQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6ZmluZE5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlcklu
dGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZWRpY2F0ZVZhbHVlRm9yRG9t
YWluIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmdldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXAgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJlUmVz
b3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWxsRG9tYWlucyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb29r
aWVBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6aGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFByb21wdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5z
VG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29v
a2llc0ZvciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Ojpkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWlucyBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcnVuZVN0YXRp
c3RpY3NJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjppc0NvcnJlY3RTdWJTdGF0aXN0aWNzQ291bnQpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0RG9tYWluU3RyaW5n
RnJvbURvbWFpbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VU
b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlT3BlcmF0aW5nRGF0
ZXNQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXR0
cmlidXRpb25Ub1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVhcmxpZXN0
VGltZXNUb1NlbmQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxT
dG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFz
ZTo6aXRlbXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6
aXRlbSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjpkYXRh
YmFzZUlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6Okljb25EYXRhYmFzZSk6
CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6cG9wdWxhdGVQYWdlVVJMVG9JY29uVVJM
TWFwKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjppY29uSURGb3JJY29uVVJMKToK
KyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjppY29uRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6Okljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmg6CisKIDIwMjEtMDUtMTggIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgYWxsb3dzQ29udGVudEphdmFTY3Jp
cHQgQVBJIG5vdCBhcHBsaWVkIGZyb20gZGVmYXVsdFdlYnBhZ2VQcmVmZXJlbmNlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZwppbmRleCBhYzhkNmY2NmQ5YzUxODdjMjQzYTViNzVhNmFhMmQ5OTY0ZWNmMzhl
Li44ZGUxYTdhMzI1MzU0MWUzZmIyN2ZlYzk2NDkyMjkyYWU0NTg2MjBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA1LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCAiZ2V0IiBwcmVmaXggZnJvbSBTUUxpdGVTdGF0
ZW1lbnQgbWVtYmVyIGZ1bmN0aW9ucyBhcyB3ZWxsIGFzIG91dC1wYXJhbWV0ZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5NzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVcGRhdGUgY29kZSBiYXNlIGR1
ZSB0byBTUUxpdGVTdGF0ZW1lbnQgQVBJIGNoYW5nZXMuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0
b3JhZ2VBcmVhU3luYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhU3luYzo6cGVy
Zm9ybUltcG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhU3luYzo6ZGVsZXRlRW1w
dHlEYXRhYmFzZSk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpzeW5jSW1wb3J0T3JpZ2luSWRlbnRpZmllcnMp
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMp
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6ZGF0YWJhc2VQYXRoRm9yT3JpZ2lu
KToKKwogMjAyMS0wNS0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIEF2b2lkIG1vcmUgU3RyaW5nIGNyZWF0aW9ucyB3aGVuIHByZXBhcmluZyBTUUxpdGUgc3Rh
dGVtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RG
L3d0Zi9WZWN0b3IuaAppbmRleCAyNWRkZTZhZTI5MjM1ZDAzMmIzOTVlMWJhNDA2NjkwODgxMmY0
NmNkLi40ZmY2MzQ1ZTUwYmNkMDA5NTgxYTE4ZWIwOWE2OWE3MThhNmJhYWQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApA
QCAtNjQxLDYgKzY0MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBUeXBlT3BlcmF0aW9uczo6
dW5pbml0aWFsaXplZEZpbGwoYmVnaW4oKSwgZW5kKCksIHZhbCk7CiAgICAgfQogCisgICAgVmVj
dG9yKGNvbnN0IFQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKKyAgICAgICAgOiBCYXNlKGRhdGFT
aXplLCBkYXRhU2l6ZSkKKyAgICB7CisgICAgICAgIGFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRv
KGRhdGFTaXplKTsKKworICAgICAgICBpZiAoYmVnaW4oKSkKKyAgICAgICAgICAgIFR5cGVPcGVy
YXRpb25zOjp1bmluaXRpYWxpemVkQ29weShkYXRhLCBkYXRhICsgZGF0YVNpemUsIGJlZ2luKCkp
OworICAgIH0KKwogICAgIFZlY3RvcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaW5pdGlhbGl6
ZXJMaXN0KQogICAgIHsKICAgICAgICAgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbml0aWFsaXpl
ckxpc3Quc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNTI5
ODU3YTVhNjNlYzlkMjQwZDg3MTcyMDYyYjhmYTI4MmUwZDA3Yi4uODFhZDllMDBhNGNiNDMzMDg4
MzRkMzI2MzdjOWUzZmM5NGI5ZGIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgYm9vbCBjcmVhdGVPck1pZ3JhdGVSZWNvcmRz
VGFibGVJZk5lY2Vzc2FyeShTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBjdXJyZW50U2NoZW1hID0gc3RhdGVt
ZW50LT5nZXRDb2x1bW5UZXh0KDEpOworICAgICAgICBjdXJyZW50U2NoZW1hID0gc3RhdGVtZW50
LT5jb2x1bW5UZXh0KDEpOwogICAgIH0KIAogICAgIEFTU0VSVCghY3VycmVudFNjaGVtYS5pc0Vt
cHR5KCkpOwpAQCAtMzUyLDcgKzM1Miw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpl
bnN1cmVWYWxpZEJsb2JUYWJsZXMoKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciBleGVj
dXRpbmcgc3RhdGVtZW50IHRvIGZldGNoIHNjaGVtYSBmb3IgdGhlIEJsb2JSZWNvcmRzIHRhYmxl
LiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIGN1cnJlbnRTY2hlbWEgPSBzdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMSk7CisgICAgICAg
ICAgICBjdXJyZW50U2NoZW1hID0gc3RhdGVtZW50LT5jb2x1bW5UZXh0KDEpOwogICAgIH0KIAog
ICAgIGlmIChjdXJyZW50U2NoZW1hICE9IGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKSAmJiBjdXJy
ZW50U2NoZW1hICE9IGJsb2JSZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUoKSkgewpAQCAtMzg1
LDcgKzM4NSw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZEJsb2JU
YWJsZXMoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAg
Y3VycmVudFNjaGVtYSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgxKTsKKyAgICAgICAgY3Vy
cmVudFNjaGVtYSA9IHN0YXRlbWVudC0+Y29sdW1uVGV4dCgxKTsKICAgICB9CiAKICAgICBpZiAo
Y3VycmVudFNjaGVtYSAhPSBibG9iRmlsZXNUYWJsZVNjaGVtYSgpICYmIGN1cnJlbnRTY2hlbWEg
IT0gYmxvYkZpbGVzVGFibGVTY2hlbWFBbHRlcm5hdGUoKSkgewpAQCAtNDQ1LDcgKzQ0NSw3IEBA
IGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZEluZGV4UmVjb3Jkc1RhYmxl
KCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIGN1cnJl
bnRTY2hlbWEgPSBzdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMSk7CisgICAgICAgIGN1cnJlbnRT
Y2hlbWEgPSBzdGF0ZW1lbnQtPmNvbHVtblRleHQoMSk7CiAgICAgfQogCiAgICAgQVNTRVJUKCFj
dXJyZW50U2NoZW1hLmlzRW1wdHkoKSk7CkBAIC01MjAsNyArNTIwLDcgQEAgYm9vbCBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzSW5kZXgoKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgY3VycmVudFNjaGVtYSA9IHN0
YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgwKTsKKyAgICAgICAgY3VycmVudFNjaGVtYSA9IHN0YXRl
bWVudC0+Y29sdW1uVGV4dCgwKTsKICAgICB9CiAKICAgICBBU1NFUlQoIWN1cnJlbnRTY2hlbWEu
aXNFbXB0eSgpKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNSZWNvcmRJbmRleCgpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBjdXJyZW50U2NoZW1hID0gc3RhdGVtZW50
LT5nZXRDb2x1bW5UZXh0KDApOworICAgICAgICBjdXJyZW50U2NoZW1hID0gc3RhdGVtZW50LT5j
b2x1bW5UZXh0KDApOwogICAgIH0KIAogICAgIEFTU0VSVCghY3VycmVudFNjaGVtYS5pc0VtcHR5
KCkpOwpAQCAtNjgwLDcgKzY4MCw3IEBAIE9wdGlvbmFsPElzU2NoZW1hVXBncmFkZWQ+IFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRPYmplY3RTdG9yZUluZm9UYWJsCiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICB9CiAKLSAgICAgICAgY3VycmVudFNj
aGVtYSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgwKTsKKyAgICAgICAgY3VycmVudFNjaGVt
YSA9IHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKTsKICAgICB9CiAKICAgICBBU1NFUlQoIWN1cnJl
bnRTY2hlbWEuaXNFbXB0eSgpKTsKQEAgLTc0MSwxNCArNzQxLDEzIEBAIGJvb2wgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjptaWdyYXRlSW5kZXhJbmZvVGFibGVGb3JJRFVwZGF0ZShjb25zdCBIYXNo
TWFwPHN0ZDo6CiAKICAgICAgICAgaW50IHJlc3VsdCA9IHN0YXRlbWVudC0+c3RlcCgpOwogICAg
ICAgICB3aGlsZSAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgICAgIHVpbnQ2NF90
IGlkID0gc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQ2NCgwKTsKLSAgICAgICAgICAgIFN0cmluZyBu
YW1lID0gc3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDEpOwotICAgICAgICAgICAgdWludDY0X3Qg
b2JqZWN0U3RvcmVJRCA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMik7CisgICAgICAgICAg
ICB1aW50NjRfdCBpZCA9IHN0YXRlbWVudC0+Y29sdW1uSW50NjQoMCk7CisgICAgICAgICAgICBT
dHJpbmcgbmFtZSA9IHN0YXRlbWVudC0+Y29sdW1uVGV4dCgxKTsKKyAgICAgICAgICAgIHVpbnQ2
NF90IG9iamVjdFN0b3JlSUQgPSBzdGF0ZW1lbnQtPmNvbHVtbkludDY0KDIpOwogICAgICAgICAg
ICAgdWludDY0X3QgbmV3SUQgPSBpbmRleElETWFwLmdldCh7IG9iamVjdFN0b3JlSUQsIGlkIH0p
OwotICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGtleVBhdGhCdWZmZXI7Ci0gICAgICAgICAg
ICBzdGF0ZW1lbnQtPmdldENvbHVtbkJsb2JBc1ZlY3RvcigzLCBrZXlQYXRoQnVmZmVyKTsKLSAg
ICAgICAgICAgIGJvb2wgdW5pcXVlID0gc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoNCk7Ci0gICAg
ICAgICAgICBib29sIG11bHRpRW50cnkgPSBzdGF0ZW1lbnQtPmdldENvbHVtbkludCg1KTsKKyAg
ICAgICAgICAgIGF1dG8ga2V5UGF0aEJ1ZmZlciA9IHN0YXRlbWVudC0+Y29sdW1uQmxvYigzKTsK
KyAgICAgICAgICAgIGJvb2wgdW5pcXVlID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoNCk7CisgICAg
ICAgICAgICBib29sIG11bHRpRW50cnkgPSBzdGF0ZW1lbnQtPmNvbHVtbkludCg1KTsKIAogICAg
ICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnQoU1FMOjpDcmVhdGVUZW1wSW5kZXhJ
bmZvLCAiSU5TRVJUIElOVE8gX1RlbXBfSW5kZXhJbmZvIFZBTFVFUyAoPywgPywgPywgPywgPywg
Pyk7Il9zKTsKICAgICAgICAgICAgIGlmICghc3FsCkBAIC04MDYsMTQgKzgwNSwxMiBAQCBib29s
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWlncmF0ZUluZGV4UmVjb3Jkc1RhYmxlRm9ySURVcGRh
dGUoY29uc3QgSGFzaE1hcDxzdAogCiAgICAgICAgIGludCByZXN1bHQgPSBzdGF0ZW1lbnQtPnN0
ZXAoKTsKICAgICAgICAgd2hpbGUgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgICAg
ICB1aW50NjRfdCBpZCA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCk7Ci0gICAgICAgICAg
ICB1aW50NjRfdCBvYmplY3RTdG9yZUlEID0gc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQ2NCgxKTsK
KyAgICAgICAgICAgIHVpbnQ2NF90IGlkID0gc3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgwKTsKKyAg
ICAgICAgICAgIHVpbnQ2NF90IG9iamVjdFN0b3JlSUQgPSBzdGF0ZW1lbnQtPmNvbHVtbkludDY0
KDEpOwogICAgICAgICAgICAgdWludDY0X3QgbmV3SUQgPSBpbmRleElETWFwLmdldCh7IG9iamVj
dFN0b3JlSUQsIGlkIH0pOwotICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGtleUJ1ZmZlcjsK
LSAgICAgICAgICAgIHN0YXRlbWVudC0+Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDIsIGtleUJ1ZmZl
cik7Ci0gICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWVCdWZmZXI7Ci0gICAgICAgICAg
ICBzdGF0ZW1lbnQtPmdldENvbHVtbkJsb2JBc1ZlY3RvcigzLCB2YWx1ZUJ1ZmZlcik7Ci0gICAg
ICAgICAgICB1aW50NjRfdCByZWNvcmRJRCA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoNCk7
CisgICAgICAgICAgICBhdXRvIGtleUJ1ZmZlciA9IHN0YXRlbWVudC0+Y29sdW1uQmxvYigyKTsK
KyAgICAgICAgICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzdGF0ZW1lbnQtPmNvbHVtbkJsb2IoMyk7
CisgICAgICAgICAgICB1aW50NjRfdCByZWNvcmRJRCA9IHN0YXRlbWVudC0+Y29sdW1uSW50NjQo
NCk7CiAKICAgICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50KFNRTDo6UHV0VGVt
cEluZGV4UmVjb3JkLCAiSU5TRVJUIElOVE8gX1RlbXBfSW5kZXhSZWNvcmRzIFZBTFVFUyAoPywg
PywgQ0FTVCg/IEFTIFRFWFQpLCBDQVNUKD8gQVMgVEVYVCksID8pOyJfcyk7CiAgICAgICAgICAg
ICBpZiAoIXNxbApAQCAtOTE1LDE5ICs5MTIsMTcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8K
IAogICAgICAgICBpbnQgcmVzdWx0ID0gc3FsLT5zdGVwKCk7CiAgICAgICAgIHdoaWxlIChyZXN1
bHQgPT0gU1FMSVRFX1JPVykgewotICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGtleUJ1ZmZl
cjsKKyAgICAgICAgICAgIGF1dG8ga2V5QnVmZmVyID0gc3FsLT5jb2x1bW5CbG9iKDApOwogICAg
ICAgICAgICAgSURCS2V5RGF0YSBrZXlEYXRhOwotICAgICAgICAgICAgc3FsLT5nZXRDb2x1bW5C
bG9iQXNWZWN0b3IoMCwga2V5QnVmZmVyKTsKICAgICAgICAgICAgIGlmICghZGVzZXJpYWxpemVJ
REJLZXlEYXRhKGtleUJ1ZmZlci5kYXRhKCksIGtleUJ1ZmZlci5zaXplKCksIGtleURhdGEpKSB7
CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJpYWxpemUga2V5IGRh
dGEgZnJvbSBkYXRhYmFzZSB3aGlsZSBnZXR0aW5nIGFsbCByZWNvcmRzIik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBWZWN0b3I8
dWludDhfdD4gdmFsdWVCdWZmZXI7Ci0gICAgICAgICAgICBzcWwtPmdldENvbHVtbkJsb2JBc1Zl
Y3RvcigxLCB2YWx1ZUJ1ZmZlcik7CisgICAgICAgICAgICBhdXRvIHZhbHVlQnVmZmVyID0gc3Fs
LT5jb2x1bW5CbG9iKDEpOwogICAgICAgICAgICAgYXV0byB2YWx1ZSA9IFRocmVhZFNhZmVEYXRh
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZUJ1ZmZlcikpOwogCi0gICAgICAgICAgICB1aW50
NjRfdCByZWNvcmRJRCA9IHNxbC0+Z2V0Q29sdW1uSW50NjQoMik7CisgICAgICAgICAgICB1aW50
NjRfdCByZWNvcmRJRCA9IHNxbC0+Y29sdW1uSW50NjQoMik7CiAgICAgICAgICAgICBJREJFcnJv
ciBlcnJvciA9IHVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKG9iamVjdFN0b3JlSW5mbywgaW5m
bywga2V5RGF0YSwgdmFsdWUsIHJlY29yZElEKTsKICAgICAgICAgICAgIGlmICghZXJyb3IuaXNO
dWxsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTg0LDcgKzk3OSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAgICAgU3RyaW5nIGRhdGFiYXNlTmFtZTsKICAgICB7
CiAgICAgICAgIGF1dG8gc3FsID0gbV9zcWxpdGVEQi0+cHJlcGFyZVN0YXRlbWVudCgiU0VMRUNU
IHZhbHVlIEZST00gSURCRGF0YWJhc2VJbmZvIFdIRVJFIGtleSA9ICdEYXRhYmFzZU5hbWUnOyJf
cyk7Ci0gICAgICAgIGRhdGFiYXNlTmFtZSA9IHNxbC0+Z2V0Q29sdW1uVGV4dCgwKTsKKyAgICAg
ICAgZGF0YWJhc2VOYW1lID0gc3FsLT5jb2x1bW5UZXh0KDApOwogICAgICAgICBpZiAoZGF0YWJh
c2VOYW1lICE9IG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSkgewogICAgICAgICAgICAgTE9H
X0VSUk9SKCJEYXRhYmFzZSBuYW1lIGluIHRoZSBpbmZvIGRhdGFiYXNlICgnJXMnKSBkb2VzIG5v
dCBtYXRjaCB0aGUgZXhwZWN0ZWQgbmFtZSAoJyVzJykiLCBkYXRhYmFzZU5hbWUudXRmOCgpLmRh
dGEoKSwgbV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05OTMsNyArOTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdE
YXRhYmFzZUkKICAgICB1aW50NjRfdCBkYXRhYmFzZVZlcnNpb247CiAgICAgewogICAgICAgICBh
dXRvIHNxbCA9IG1fc3FsaXRlREItPnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCB2YWx1ZSBGUk9N
IElEQkRhdGFiYXNlSW5mbyBXSEVSRSBrZXkgPSAnRGF0YWJhc2VWZXJzaW9uJzsiX3MpOwotICAg
ICAgICBTdHJpbmcgc3RyaW5nVmVyc2lvbiA9IHNxbC0+Z2V0Q29sdW1uVGV4dCgwKTsKKyAgICAg
ICAgU3RyaW5nIHN0cmluZ1ZlcnNpb24gPSBzcWwtPmNvbHVtblRleHQoMCk7CiAgICAgICAgIGF1
dG8gcGFyc2VkVmVyc2lvbiA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4oc3RyaW5nVmVyc2lvbik7
CiAgICAgICAgIGlmICghcGFyc2VkVmVyc2lvbikgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJE
YXRhYmFzZSB2ZXJzaW9uIG9uIGRpc2sgKCclcycpIGRvZXMgbm90IGNsZWFubHkgY29udmVydCB0
byBhbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciB2ZXJzaW9uIiwgc3RyaW5nVmVyc2lvbi51dGY4
KCkuZGF0YSgpKTsKQEAgLTEwMTcsMTkgKzEwMTIsMTcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRh
dGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFz
ZUkKIAogICAgICAgICBpbnQgcmVzdWx0ID0gc3FsLT5zdGVwKCk7CiAgICAgICAgIHdoaWxlIChy
ZXN1bHQgPT0gU1FMSVRFX1JPVykgewotICAgICAgICAgICAgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
RCA9IHNxbC0+Z2V0Q29sdW1uSW50NjQoMCk7Ci0gICAgICAgICAgICBTdHJpbmcgb2JqZWN0U3Rv
cmVOYW1lID0gc3FsLT5nZXRDb2x1bW5UZXh0KDEpOwotCi0gICAgICAgICAgICBWZWN0b3I8Y2hh
cj4ga2V5UGF0aEJ1ZmZlcjsKLSAgICAgICAgICAgIHNxbC0+Z2V0Q29sdW1uQmxvYkFzVmVjdG9y
KDIsIGtleVBhdGhCdWZmZXIpOworICAgICAgICAgICAgdWludDY0X3Qgb2JqZWN0U3RvcmVJRCA9
IHNxbC0+Y29sdW1uSW50NjQoMCk7CisgICAgICAgICAgICBTdHJpbmcgb2JqZWN0U3RvcmVOYW1l
ID0gc3FsLT5jb2x1bW5UZXh0KDEpOworICAgICAgICAgICAgYXV0byBrZXlQYXRoQnVmZmVyID0g
c3FsLT5jb2x1bW5CbG9iKDIpOwogCiAgICAgICAgICAgICBPcHRpb25hbDxJREJLZXlQYXRoPiBv
YmplY3RTdG9yZUtleVBhdGg7Ci0gICAgICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5UGF0
aChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihrZXlQYXRoQnVmZmVyLmRhdGEoKSks
IGtleVBhdGhCdWZmZXIuc2l6ZSgpLCBvYmplY3RTdG9yZUtleVBhdGgpKSB7CisgICAgICAgICAg
ICBpZiAoIWRlc2VyaWFsaXplSURCS2V5UGF0aChrZXlQYXRoQnVmZmVyLmRhdGEoKSwga2V5UGF0
aEJ1ZmZlci5zaXplKCksIG9iamVjdFN0b3JlS2V5UGF0aCkpIHsKICAgICAgICAgICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBleHRyYWN0IGtleSBwYXRoIGZyb20gZGF0YWJhc2UiKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgYm9vbCBhdXRvSW5jcmVtZW50ID0gc3FsLT5nZXRDb2x1bW5JbnQoMyk7CisgICAgICAgICAg
ICBib29sIGF1dG9JbmNyZW1lbnQgPSBzcWwtPmNvbHVtbkludCgzKTsKIAogICAgICAgICAgICAg
ZGF0YWJhc2VJbmZvLT5hZGRFeGlzdGluZ09iamVjdFN0b3JlKHsgb2JqZWN0U3RvcmVJRCwgb2Jq
ZWN0U3RvcmVOYW1lLCBXVEZNb3ZlKG9iamVjdFN0b3JlS2V5UGF0aCksIGF1dG9JbmNyZW1lbnQg
fSk7CiAKQEAgLTEwNTQsMTUgKzEwNDcsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNl
SW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUkKIAog
ICAgICAgICBpbnQgcmVzdWx0ID0gc3FsLT5zdGVwKCk7CiAgICAgICAgIHdoaWxlIChyZXN1bHQg
PT0gU1FMSVRFX1JPVykgewotICAgICAgICAgICAgdWludDY0X3QgaW5kZXhJRCA9IHNxbC0+Z2V0
Q29sdW1uSW50NjQoMCk7Ci0gICAgICAgICAgICBTdHJpbmcgaW5kZXhOYW1lID0gc3FsLT5nZXRD
b2x1bW5UZXh0KDEpOwotICAgICAgICAgICAgdWludDY0X3Qgb2JqZWN0U3RvcmVJRCA9IHNxbC0+
Z2V0Q29sdW1uSW50NjQoMik7Ci0KLSAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBrZXlQYXRoQnVm
ZmVyOwotICAgICAgICAgICAgc3FsLT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMywga2V5UGF0aEJ1
ZmZlcik7CisgICAgICAgICAgICB1aW50NjRfdCBpbmRleElEID0gc3FsLT5jb2x1bW5JbnQ2NCgw
KTsKKyAgICAgICAgICAgIFN0cmluZyBpbmRleE5hbWUgPSBzcWwtPmNvbHVtblRleHQoMSk7Cisg
ICAgICAgICAgICB1aW50NjRfdCBvYmplY3RTdG9yZUlEID0gc3FsLT5jb2x1bW5JbnQ2NCgyKTsK
KyAgICAgICAgICAgIGF1dG8ga2V5UGF0aEJ1ZmZlciA9IHNxbC0+Y29sdW1uQmxvYigzKTsKIAog
ICAgICAgICAgICAgT3B0aW9uYWw8SURCS2V5UGF0aD4gaW5kZXhLZXlQYXRoOwotICAgICAgICAg
ICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleVBhdGgocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oa2V5UGF0aEJ1ZmZlci5kYXRhKCkpLCBrZXlQYXRoQnVmZmVyLnNpemUoKSwgaW5kZXhL
ZXlQYXRoKSkgeworICAgICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleVBhdGgoa2V5UGF0
aEJ1ZmZlci5kYXRhKCksIGtleVBhdGhCdWZmZXIuc2l6ZSgpLCBpbmRleEtleVBhdGgpKSB7CiAg
ICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXh0cmFjdCBrZXkgcGF0aCBmcm9t
IGRhdGFiYXNlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAg
ICB9CkBAIC0xMDcxLDggKzEwNjIsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZv
PiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSQogICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBi
b29sIHVuaXF1ZSA9IHNxbC0+Z2V0Q29sdW1uSW50KDQpOwotICAgICAgICAgICAgYm9vbCBtdWx0
aUVudHJ5ID0gc3FsLT5nZXRDb2x1bW5JbnQoNSk7CisgICAgICAgICAgICBib29sIHVuaXF1ZSA9
IHNxbC0+Y29sdW1uSW50KDQpOworICAgICAgICAgICAgYm9vbCBtdWx0aUVudHJ5ID0gc3FsLT5j
b2x1bW5JbnQoNSk7CiAKICAgICAgICAgICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBkYXRhYmFzZUlu
Zm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVjdFN0b3JlSUQpOwogICAgICAgICAg
ICAgaWYgKCFvYmplY3RTdG9yZSkgewpAQCAtMTE1NywxMCArMTE0OCwxMCBAQCBPcHRpb25hbDxJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNl
TmFtZUFuZFZlcnNpbwogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBwcmVwYXJlIHN0YXRl
bWVudCB0byBnZXQgZGF0YWJhc2UgbmFtZSglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RFcnJvcigp
LCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgfQotICAgIGF1dG8gZGF0YWJhc2VOYW1lID0gbmFtZXNxbC0+Z2V0Q29sdW1uVGV4dCgw
KTsKKyAgICBhdXRvIGRhdGFiYXNlTmFtZSA9IG5hbWVzcWwtPmNvbHVtblRleHQoMCk7CiAKICAg
ICBhdXRvIHZlcnNxbCA9IGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCB2YWx1ZSBG
Uk9NIElEQkRhdGFiYXNlSW5mbyBXSEVSRSBrZXkgPSAnRGF0YWJhc2VWZXJzaW9uJzsiX3MpOwot
ICAgIFN0cmluZyBzdHJpbmdWZXJzaW9uID0gdmVyc3FsID8gdmVyc3FsLT5nZXRDb2x1bW5UZXh0
KDApIDogU3RyaW5nKCk7CisgICAgU3RyaW5nIHN0cmluZ1ZlcnNpb24gPSB2ZXJzcWwgPyB2ZXJz
cWwtPmNvbHVtblRleHQoMCkgOiBTdHJpbmcoKTsKICAgICBhdXRvIGRhdGFiYXNlVmVyc2lvbiA9
IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4oc3RyaW5nVmVyc2lvbik7CiAgICAgaWYgKCFkYXRhYmFz
ZVZlcnNpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJEYXRhYmFzZSB2ZXJzaW9uIG9uIGRpc2sg
KCclcycpIGRvZXMgbm90IGNsZWFubHkgY29udmVydCB0byBhbiB1bnNpZ25lZCA2NC1iaXQgaW50
ZWdlciB2ZXJzaW9uIiwgc3RyaW5nVmVyc2lvbi51dGY4KCkuZGF0YSgpKTsKQEAgLTE5MDUsNyAr
MTg5Niw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlVW51c2VkQmxv
YkZpbGVSZWNvcmRzKFNRTGl0ZUlEQlRyYW5zYWN0aW9uCiAKICAgICAgICAgaW50IHJlc3VsdCA9
IHNxbC0+c3RlcCgpOwogICAgICAgICB3aGlsZSAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKLSAg
ICAgICAgICAgIHJlbW92ZWRCbG9iRmlsZW5hbWVzLmFkZChzcWwtPmdldENvbHVtblRleHQoMCkp
OworICAgICAgICAgICAgcmVtb3ZlZEJsb2JGaWxlbmFtZXMuYWRkKHNxbC0+Y29sdW1uVGV4dCgw
KSk7CiAgICAgICAgICAgICByZXN1bHQgPSBzcWwtPnN0ZXAoKTsKICAgICAgICAgfQogCkBAIC0x
OTcyLDEwICsxOTYzLDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVS
ZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiRmFpbGVkIHRvIGRlbGV0ZSByZWNvcmQgZnJv
bSBvYmplY3Qgc3RvcmUiX3MgfTsKICAgICAgICAgfQogCi0gICAgICAgIHJlY29yZElEID0gc3Fs
LT5nZXRDb2x1bW5JbnQ2NCgwKTsKLQotICAgICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWVCdWZm
ZXI7Ci0gICAgICAgIHNxbC0+Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEsIHZhbHVlQnVmZmVyKTsK
KyAgICAgICAgcmVjb3JkSUQgPSBzcWwtPmNvbHVtbkludDY0KDApOworICAgICAgICBhdXRvIHZh
bHVlQnVmZmVyID0gc3FsLT5jb2x1bW5CbG9iKDEpOwogICAgICAgICB2YWx1ZSA9IFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZUJ1ZmZlcikpOwogICAgIH0KIApAQCAt
MjI3Myw3ICsyMjYyLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRCbG9i
UmVjb3Jkc0Zvck9iamVjdFN0b3JlUmVjb3JkKGludDY0X3Qgb2JqZWMKICAgICAgICAgfQogCiAg
ICAgICAgIHdoaWxlIChzcWxSZXN1bHQgPT0gU1FMSVRFX1JPVykgewotICAgICAgICAgICAgYmxv
YlVSTFNldC5hZGQoc3FsLT5nZXRDb2x1bW5UZXh0KDApKTsKKyAgICAgICAgICAgIGJsb2JVUkxT
ZXQuYWRkKHNxbC0+Y29sdW1uVGV4dCgwKSk7CiAgICAgICAgICAgICBzcWxSZXN1bHQgPSBzcWwt
PnN0ZXAoKTsKICAgICAgICAgfQogCkBAIC0yMjk5LDcgKzIyODgsNyBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmdldEJsb2JSZWNvcmRzRm9yT2JqZWN0U3RvcmVSZWNvcmQoaW50
NjRfdCBvYmplYwogCiAgICAgICAgIGJsb2JVUkxzLmFwcGVuZChibG9iVVJMKTsKIAotICAgICAg
ICBTdHJpbmcgZmlsZU5hbWUgPSBzcWwtPmdldENvbHVtblRleHQoMCk7CisgICAgICAgIFN0cmlu
ZyBmaWxlTmFtZSA9IHNxbC0+Y29sdW1uVGV4dCgwKTsKICAgICAgICAgYmxvYkZpbGVQYXRocy5h
cHBlbmQoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJl
Y3RvcnksIGZpbGVOYW1lKSk7CiAgICAgfQogICAgIHJldHVybiBJREJFcnJvciB7IH07CkBAIC0y
MzkxLDE1ICsyMzgwLDEyIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVj
b3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJFcnJvciBsb29raW5nIHVwIHJlY29yZCBp
biBvYmplY3Qgc3RvcmUgYnkga2V5IHJhbmdlIl9zIH07CiAgICAgICAgIH0KIAotICAgICAgICBW
ZWN0b3I8dWludDhfdD4ga2V5QnVmZmVyOwotICAgICAgICBzcWwtPmdldENvbHVtbkJsb2JBc1Zl
Y3RvcigwLCBrZXlCdWZmZXIpOwotICAgICAgICBrZXlSZXN1bHRCdWZmZXIgPSBUaHJlYWRTYWZl
RGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5QnVmZmVyKSk7CisgICAgICAgIGtleVJlc3Vs
dEJ1ZmZlciA9IFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoc3FsLT5jb2x1bW5CbG9iKDAp
KTsKIAogICAgICAgICBpZiAodHlwZSA9PSBJREJHZXRSZWNvcmREYXRhVHlwZTo6S2V5QW5kVmFs
dWUpIHsKLSAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZUJ1ZmZlcjsKLSAgICAgICAg
ICAgIHNxbC0+Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEsIHZhbHVlQnVmZmVyKTsKKyAgICAgICAg
ICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzcWwtPmNvbHVtbkJsb2IoMSk7CiAgICAgICAgICAgICB2
YWx1ZVJlc3VsdEJ1ZmZlciA9IFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2
YWx1ZUJ1ZmZlcikpOwotICAgICAgICAgICAgcmVjb3JkSUQgPSBzcWwtPmdldENvbHVtbkludDY0
KDIpOworICAgICAgICAgICAgcmVjb3JkSUQgPSBzcWwtPmNvbHVtbkludDY0KDIpOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0yNTE0LDkgKzI1MDAsOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmdldEFsbE9iamVjdFN0b3JlUmVjb3Jkcyhjb25zdCBJREJSZXNvdXJjZUlkZW50
aQogICAgIHVpbnQzMl90IHJldHVybmVkUmVzdWx0cyA9IDA7CiAKICAgICB3aGlsZSAoc3FsUmVz
dWx0ID09IFNRTElURV9ST1cgJiYgcmV0dXJuZWRSZXN1bHRzIDwgdGFyZ2V0UmVzdWx0cykgewot
ICAgICAgICBWZWN0b3I8dWludDhfdD4ga2V5QnVmZmVyOworICAgICAgICBhdXRvIGtleUJ1ZmZl
ciA9IHNxbC0+Y29sdW1uQmxvYigwKTsKICAgICAgICAgSURCS2V5RGF0YSBrZXlEYXRhOwotICAg
ICAgICBzcWwtPmdldENvbHVtbkJsb2JBc1ZlY3RvcigwLCBrZXlCdWZmZXIpOwogICAgICAgICBp
ZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlCdWZmZXIuZGF0YSgpLCBrZXlCdWZmZXIuc2l6
ZSgpLCBrZXlEYXRhKSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJp
YWxpemUga2V5IGRhdGEgZnJvbSBkYXRhYmFzZSB3aGlsZSBnZXR0aW5nIGFsbCByZWNvcmRzIik7
CiAgICAgICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
ZGVzZXJpYWxpemUga2V5IGRhdGEgd2hpbGUgZ2V0dGluZyBhbGwgcmVjb3JkcyJfcyB9OwpAQCAt
MjUyNCwxMSArMjUwOSw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxs
T2JqZWN0U3RvcmVSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpCiAgICAgICAgIHJlc3Vs
dC5hZGRLZXkoV1RGTW92ZShrZXlEYXRhKSk7CiAKICAgICAgICAgaWYgKGdldEFsbFJlY29yZHNE
YXRhLmdldEFsbFR5cGUgPT0gSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpWYWx1ZXMpIHsKLSAgICAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZUJ1ZmZlcjsKLSAgICAgICAgICAgIHNxbC0+Z2V0
Q29sdW1uQmxvYkFzVmVjdG9yKDEsIHZhbHVlQnVmZmVyKTsKLSAgICAgICAgICAgIFRocmVhZFNh
ZmVEYXRhQnVmZmVyIHZhbHVlUmVzdWx0QnVmZmVyID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKHZhbHVlQnVmZmVyKSk7CisgICAgICAgICAgICBUaHJlYWRTYWZlRGF0YUJ1
ZmZlciB2YWx1ZVJlc3VsdEJ1ZmZlciA9IFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoc3Fs
LT5jb2x1bW5CbG9iKDEpKTsKIAotICAgICAgICAgICAgYXV0byByZWNvcmRJRCA9IHNxbC0+Z2V0
Q29sdW1uSW50NjQoMik7CisgICAgICAgICAgICBhdXRvIHJlY29yZElEID0gc3FsLT5jb2x1bW5J
bnQ2NCgyKTsKIAogICAgICAgICAgICAgQVNTRVJUKHJlY29yZElEKTsKICAgICAgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzOwpAQCAtMjY3NCw4ICsyNjU3LDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29y
ZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsK
IAogICAgIElEQktleURhdGEgb2JqZWN0U3RvcmVLZXk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGtl
eVZlY3RvcjsKLSAgICBzcWwtPmdldENvbHVtbkJsb2JBc1ZlY3RvcigwLCBrZXlWZWN0b3IpOwor
ICAgIGF1dG8ga2V5VmVjdG9yID0gc3FsLT5jb2x1bW5CbG9iKDApOwogCiAgICAgaWYgKCFkZXNl
cmlhbGl6ZUlEQktleURhdGEoa2V5VmVjdG9yLmRhdGEoKSwga2V5VmVjdG9yLnNpemUoKSwgb2Jq
ZWN0U3RvcmVLZXkpKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXpl
IGtleSBsb29raW5nIHVwIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSIpOwpAQCAtMjY4NywxMCAr
MjY2OSw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5k
ZXhSZWNvcmRGb3JPbmVLZXkoaW50NjRfdCBpbmRleElECiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IH07CiAgICAgfQogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlVmVjdG9yOwotICAgIHNx
bC0+Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEsIHZhbHVlVmVjdG9yKTsKLQotICAgIGludDY0X3Qg
cmVjb3JkSUQgPSBzcWwtPmdldENvbHVtbkludDY0KDIpOworICAgIGF1dG8gdmFsdWVWZWN0b3Ig
PSBzcWwtPmNvbHVtbkJsb2IoMSk7CisgICAgaW50NjRfdCByZWNvcmRJRCA9IHNxbC0+Y29sdW1u
SW50NjQoMik7CiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHM7CiAg
ICAgYXV0byBlcnJvciA9IGdldEJsb2JSZWNvcmRzRm9yT2JqZWN0U3RvcmVSZWNvcmQocmVjb3Jk
SUQsIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzKTsKICAgICBBU1NFUlQoYmxvYlVSTHMuc2l6ZSgp
ID09IGJsb2JGaWxlUGF0aHMuc2l6ZSgpKTsKQEAgLTI3NzEsNyArMjc1MSw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvCiAgICAgaWYgKHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cp
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBjb3Vu
dCByZWNvcmRzIl9zIH07CiAKLSAgICBvdXRDb3VudCA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50
KDApOworICAgIG91dENvdW50ID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMCk7CiAgICAgcmV0dXJu
IElEQkVycm9yIHsgfTsKIH0KIApAQCAtMjc4OSw3ICsyNzY5LDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRLZXlHZW5lcmF0b3JWYWx1ZShpbnQ2NF90IG9i
amVjdFN0b3IKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiRXJyb3Ig
ZmluZGluZyBjdXJyZW50IGtleSBnZW5lcmF0b3IgdmFsdWUgaW4gZGF0YWJhc2UiX3MgfTsKICAg
ICB9CiAKLSAgICBpbnQ2NF90IHZhbHVlID0gc3FsLT5nZXRDb2x1bW5JbnQ2NCgwKTsKKyAgICBp
bnQ2NF90IHZhbHVlID0gc3FsLT5jb2x1bW5JbnQ2NCgwKTsKICAgICBpZiAodmFsdWUgPCAwKQog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBDb25zdHJhaW50RXJyb3IsICJDdXJyZW50IGtleSBn
ZW5lcmF0b3IgdmFsdWUgZnJvbSBkYXRhYmFzZSBpcyBpbnZhbGlkIiB9OwogCkBAIC0yOTg2LDcg
KzI5NjYsNyBAQCB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0b3Jl
KCkKICAgICAgICAgICAgIGlmIChzcWwpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0g
c3FsLT5zdGVwKCk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKHJlc3VsdCA9PSBTUUxJVEVfUk9X
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGJsb2JGaWxlcy5hcHBlbmQoc3FsLT5nZXRDb2x1bW5U
ZXh0KDApKTsKKyAgICAgICAgICAgICAgICAgICAgYmxvYkZpbGVzLmFwcGVuZChzcWwtPmNvbHVt
blRleHQoMCkpOwogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzcWwtPnN0ZXAoKTsKICAg
ICAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggMDU2N2VhOWIzNmMy
YzY0MTg0MmY3Mzc2OWNkNmMyMzA4YjdmOGRhMy4uMjM3ZWNiYjFiMWUwN2QxNDkzYWRmMjU3OGE2
YWY0ZjQyNWEzYzE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTU1MiwxMSArNTUyLDkg
QEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFs
RmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAgICAgc3RhdGVtZW50ID0gbV9zdGF0ZW1l
bnQuZ2V0KCk7CiAgICAgfQogCi0gICAgcmVjb3JkLnJvd0lEID0gc3RhdGVtZW50LT5nZXRDb2x1
bW5JbnQ2NCgwKTsKKyAgICByZWNvcmQucm93SUQgPSBzdGF0ZW1lbnQtPmNvbHVtbkludDY0KDAp
OwogICAgIEFTU0VSVChyZWNvcmQucm93SUQpOwotCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGtleURh
dGE7Ci0gICAgc3RhdGVtZW50LT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMSwga2V5RGF0YSk7Cisg
ICAgYXV0byBrZXlEYXRhID0gc3RhdGVtZW50LT5jb2x1bW5CbG9iKDEpOwogCiAgICAgaWYgKCFk
ZXNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YS5kYXRhKCksIGtleURhdGEuc2l6ZSgpLCByZWNv
cmQucmVjb3JkLmtleSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJpYWxp
emUga2V5IGRhdGEgZnJvbSBkYXRhYmFzZSB3aGlsZSBhZHZhbmNpbmcgY3Vyc29yIik7CkBAIC01
NjQsNyArNTYyLDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJz
b3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAgICAgcmV0dXJuIEZl
dGNoUmVzdWx0OjpGYWlsdXJlOwogICAgIH0KIAotICAgIHN0YXRlbWVudC0+Z2V0Q29sdW1uQmxv
YkFzVmVjdG9yKDIsIGtleURhdGEpOworICAgIGtleURhdGEgPSBzdGF0ZW1lbnQtPmNvbHVtbkJs
b2IoMik7CiAKICAgICAvLyBUaGUgcHJpbWFyeUtleSBvZiBhbiBPYmplY3RTdG9yZSBjdXJzb3Ig
aXMgdGhlIHNhbWUgYXMgaXRzIGtleS4KICAgICBpZiAobV9pbmRleElEID09IElEQkluZGV4SW5m
bzo6SW52YWxpZElkKSB7CkBAIC02MDIsMTAgKzYwMCw5IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0
Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZChTUUxpdGVD
dXJzCiAKICAgICAgICAgaW50IHJlc3VsdCA9IG1fY2FjaGVkT2JqZWN0U3RvcmVTdGF0ZW1lbnQt
PnN0ZXAoKTsKIAotICAgICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKLSAgICAgICAg
ICAgIG1fY2FjaGVkT2JqZWN0U3RvcmVTdGF0ZW1lbnQtPmdldENvbHVtbkJsb2JBc1ZlY3Rvcigw
LCBrZXlEYXRhKTsKLSAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSB7IFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSkgfTsKLSAgICAgICAgfSBlbHNl
IGlmIChyZXN1bHQgPT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBTUUxJ
VEVfUk9XKQorICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHsgVGhyZWFkU2FmZURh
dGFCdWZmZXI6OmNyZWF0ZShtX2NhY2hlZE9iamVjdFN0b3JlU3RhdGVtZW50LT5jb2x1bW5CbG9i
KDApKSB9OworICAgICAgICBlbHNlIGlmIChyZXN1bHQgPT0gU1FMSVRFX0RPTkUpIHsKICAgICAg
ICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIHJlY29yZCB3ZSdyZSB0cnlpbmcgdG8g
cmV0cmlldmUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBvYmplY3Qgc3RvcmUuCiAgICAgICAg
ICAgICAvLyBTa2lwIG92ZXIgaXQuCiAgICAgICAgICAgICByZXR1cm4gRmV0Y2hSZXN1bHQ6OlNo
b3VsZEZldGNoQWdhaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuY3BwCmluZGV4IDY2NjQzM2I5ODczZWU4MjUzM2U3MmY0NjNlZmI2NTU5NTBmZGNi
YTAuLjExNzRlNmJjZGQwNjBlNjZjNjMzOTgzMmVjYjhkMWU4MWFkNWQ4MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0xMzksNyAr
MTM5LDcgQEAgc3RhdGljIGJvb2wgcmV0cmlldmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKFNRTGl0
ZURhdGFiYXNlJiBkYiwgY29uc3QgU3RyaW5nJiBxdWUKIAogICAgIGludCByZXN1bHQgPSBzdGF0
ZW1lbnQtPnN0ZXAoKTsKICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKLSAgICAgICAg
cmVzdWx0U3RyaW5nID0gc3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDApOworICAgICAgICByZXN1
bHRTdHJpbmcgPSBzdGF0ZW1lbnQtPmNvbHVtblRleHQoMCk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ET05FKSB7CkBAIC03MTksNyArNzE5
LDcgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OnBlcmZvcm1HZXRUYWJsZU5hbWVzKCkKICAg
ICBWZWN0b3I8U3RyaW5nPiB0YWJsZU5hbWVzOwogICAgIGludCByZXN1bHQ7CiAgICAgd2hpbGUg
KChyZXN1bHQgPSBzdGF0ZW1lbnQtPnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBT
dHJpbmcgbmFtZSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgwKTsKKyAgICAgICAgU3RyaW5n
IG5hbWUgPSBzdGF0ZW1lbnQtPmNvbHVtblRleHQoMCk7CiAgICAgICAgIGlmIChuYW1lICE9IHVu
cXVhbGlmaWVkSW5mb1RhYmxlTmFtZSkKICAgICAgICAgICAgIHRhYmxlTmFtZXMuYXBwZW5kKG5h
bWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCAzZGFlZjFmYWQ0MmE1YWQ0Yzc2MjZhNzA3MTQx
ZmE0MjFiZjE5Mzg4Li4yOTEwODNiMWYzOTcyZDI2OTdiOTViZjVkNGRlNzFmYTk5MTEyMDNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgU3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6
ZnVsbFBhdGhGb3JEYXRhYmFzZU5vTG9jayhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWcK
IAogICAgICAgICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50LT5zdGVwKCk7CiAgICAgICAgIGlmIChy
ZXN1bHQgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgICAgIHJldHVybiBTUUxpdGVGaWxlU3lzdGVt
OjphcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKG9yaWdpblBhdGgsIHN0YXRlbWVudC0+Z2V0
Q29sdW1uVGV4dCgwKSk7CisgICAgICAgICAgICByZXR1cm4gU1FMaXRlRmlsZVN5c3RlbTo6YXBw
ZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0aChvcmlnaW5QYXRoLCBzdGF0ZW1lbnQtPmNvbHVtblRl
eHQoMCkpOwogICAgICAgICBpZiAoIWNyZWF0ZUlmTm90RXhpc3RzKQogICAgICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCkBAIC0zODEsNyArMzgxLDcgQEAgVmVjdG9yPFNlY3VyaXR5T3JpZ2lu
RGF0YT4gRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKCkKICAgICBWZWN0b3I8U2VjdXJpdHlPcmln
aW5EYXRhPiBvcmlnaW5zOwogICAgIGludCBzdGVwUmVzdWx0OwogICAgIHdoaWxlICgoc3RlcFJl
c3VsdCA9IHN0YXRlbWVudC0+c3RlcCgpKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICBvcmlnaW5z
LmFwcGVuZChTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoc3RhdGVt
ZW50LT5nZXRDb2x1bW5UZXh0KDApKS0+aXNvbGF0ZWRDb3B5KCkpOworICAgICAgICBvcmlnaW5z
LmFwcGVuZChTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoc3RhdGVt
ZW50LT5jb2x1bW5UZXh0KDApKS0+aXNvbGF0ZWRDb3B5KCkpOwogICAgIG9yaWdpbnMuc2hyaW5r
VG9GaXQoKTsKIAogICAgIGlmIChzdGVwUmVzdWx0ICE9IFNRTElURV9ET05FKQpAQCAtNDA2LDcg
KzQwNiw3IEBAIFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VOYW1lc05v
TG9jayhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yCiAgICAgVmVjdG9yPFN0cmluZz4gbmFt
ZXM7CiAgICAgaW50IHJlc3VsdDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC0+c3Rl
cCgpKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICBuYW1lcy5hcHBlbmQoc3RhdGVtZW50LT5nZXRD
b2x1bW5UZXh0KDApKTsKKyAgICAgICAgbmFtZXMuYXBwZW5kKHN0YXRlbWVudC0+Y29sdW1uVGV4
dCgwKSk7CiAgICAgbmFtZXMuc2hyaW5rVG9GaXQoKTsKIAogICAgIGlmIChyZXN1bHQgIT0gU1FM
SVRFX0RPTkUpIHsKQEAgLTQ1NCw4ICs0NTQsOCBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VU
cmFja2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbgog
ICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciByZXRyaWV2aW5nIGRldGFpbHMgZm9yIGRhdGFi
YXNlICVzIGluIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIgZGF0YWJhc2UiLCBuYW1lLnV0ZjgoKS5k
YXRhKCksIG9yaWdpbklkZW50aWZpZXIudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1
cm4gRGF0YWJhc2VEZXRhaWxzKCk7CiAgICAgICAgIH0KLSAgICAgICAgZGlzcGxheU5hbWUgPSBz
dGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCk7Ci0gICAgICAgIGV4cGVjdGVkVXNhZ2UgPSBzdGF0
ZW1lbnQtPmdldENvbHVtbkludDY0KDEpOworICAgICAgICBkaXNwbGF5TmFtZSA9IHN0YXRlbWVu
dC0+Y29sdW1uVGV4dCgwKTsKKyAgICAgICAgZXhwZWN0ZWRVc2FnZSA9IHN0YXRlbWVudC0+Y29s
dW1uSW50NjQoMSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBhdGggPSBmdWxsUGF0aEZvckRhdGFi
YXNlKG9yaWdpbiwgbmFtZSwgZmFsc2UpOwpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQgRGF0YWJh
c2VUcmFja2VyOjpzZXREYXRhYmFzZURldGFpbHMoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnaW4sIGNvbnN0CiAKICAgICAgICAgaW50IHJlc3VsdCA9IHN0YXRlbWVudC0+c3RlcCgpOwog
ICAgICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cpCi0gICAgICAgICAgICBndWlkID0gc3Rh
dGVtZW50LT5nZXRDb2x1bW5JbnQ2NCgwKTsKKyAgICAgICAgICAgIGd1aWQgPSBzdGF0ZW1lbnQt
PmNvbHVtbkludDY0KDApOwogCiAgICAgICAgIGlmICghZ3VpZCkgewogICAgICAgICAgICAgaWYg
KHJlc3VsdCAhPSBTUUxJVEVfRE9ORSkKQEAgLTY4MSw3ICs2ODEsNyBAQCB1aW50NjRfdCBEYXRh
YmFzZVRyYWNrZXI6OnF1b3RhTm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2lu
KQogICAgIHN0YXRlbWVudC0+YmluZFRleHQoMSwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigp
KTsKIAogICAgIGlmIChzdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICBx
dW90YSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCk7CisgICAgICAgIHF1b3RhID0gc3Rh
dGVtZW50LT5jb2x1bW5JbnQ2NCgwKTsKIAogICAgIHJldHVybiBxdW90YTsKIH0KQEAgLTEyMDUs
NyArMTIwNSw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVEZWxldGVkT3BlbmVkRGF0
YWJhc2VzKCkKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudC0+YmluZFRleHQoMSwg
b3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRlbWVudC0+YmluZFRleHQoMiwgZGF0YWJhc2VOYW1lKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChzdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFiYXNlRmlsZU5hbWUgPSBzdGF0ZW1lbnQtPmdldENvbHVtblRleHQo
MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YWJhc2VGaWxlTmFtZSA9IHN0YXRl
bWVudC0+Y29sdW1uVGV4dCgwKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgYm9vbCBmb3VuZERlbGV0ZWREYXRhYmFzZSA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxTdGF0ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxT
dGF0ZW1lbnQuY3BwCmluZGV4IDBjNzZmY2EwODk0OWM3ZWU1NThhNmIxOGY0OWUzMjE5Mzk0Nzlh
YWQuLmI3ODA1ODJkYzk3OTU5MjMzNDYzZjhmZDhhYzE5ZDAzOWFlYjg4MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAKQEAg
LTE1NCwxMSArMTU0LDExIEBAIGJvb2wgU1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBk
YikKICAgICAgICAgYXV0byYgcm93cyA9IHJlc3VsdFNldC0+cm93cygpOwogCiAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgY29sdW1uQ291bnQ7IGkrKykKLSAgICAgICAgICAgIHJvd3MuYWRk
Q29sdW1uKHN0YXRlbWVudC0+Z2V0Q29sdW1uTmFtZShpKSk7CisgICAgICAgICAgICByb3dzLmFk
ZENvbHVtbihzdGF0ZW1lbnQtPmNvbHVtbk5hbWUoaSkpOwogCiAgICAgICAgIGRvIHsKICAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29sdW1uQ291bnQ7IGkrKykKLSAgICAgICAgICAg
ICAgICByb3dzLmFkZFJlc3VsdChzdGF0ZW1lbnQtPmdldENvbHVtblZhbHVlKGkpKTsKKyAgICAg
ICAgICAgICAgICByb3dzLmFkZFJlc3VsdChzdGF0ZW1lbnQtPmNvbHVtblZhbHVlKGkpKTsKIAog
ICAgICAgICAgICAgcmVzdWx0ID0gc3RhdGVtZW50LT5zdGVwKCk7CiAgICAgICAgIH0gd2hpbGUg
KHJlc3VsdCA9PSBTUUxJVEVfUk9XKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDJiMGE2NTM2
Zjk0ZTM0MTNlMzUzNjJiZDM0ZmZiMTUyZTc2NTgxNTAuLjhiMjcxMWZiZDVjOGE1ZTJlNzhlZmQ0
NDNlODUyMTk2NDg3YzViZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMTE0LDE0ICsxMTQs
MTQgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9h
ZENhY2hlR3JvdXAoY29uc3QgVVJMJiBtYW5pZmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogICAgIAotICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlU3RvcmFnZUlEID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMikpOworICAgIHVuc2lnbmVk
IG5ld2VzdENhY2hlU3RvcmFnZUlEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC0+
Y29sdW1uSW50NjQoMikpOwogCiAgICAgYXV0byBjYWNoZSA9IGxvYWRDYWNoZShuZXdlc3RDYWNo
ZVN0b3JhZ2VJRCk7CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIAogICAgIGF1dG8mIGdyb3VwID0gKm5ldyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAoKnRo
aXMsIG1hbmlmZXN0VVJMKTsKLSAgICBncm91cC5zZXRTdG9yYWdlSUQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCkpKTsKKyAgICBncm91cC5zZXRTdG9y
YWdlSUQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC0+Y29sdW1uSW50NjQoMCkpKTsK
ICAgICBncm91cC5zZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBy
ZXR1cm4gJmdyb3VwOwogfSAgICAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIHdoaWxlIChzdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAg
ICBtX2NhY2hlSG9zdFNldC5hZGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC0+Z2V0
Q29sdW1uSW50NjQoMCkpKTsKKyAgICAgICAgbV9jYWNoZUhvc3RTZXQuYWRkKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdGF0ZW1lbnQtPmNvbHVtbkludDY0KDApKSk7CiB9ICAgIAogCiBBcHBsaWNh
dGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3VwRm9yVVJM
KGNvbnN0IFVSTCYgdXJsKQpAQCAtMjE5LDcgKzIxOSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAgICAgCiAgICAgaW50IHJlc3VsdDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVu
dC0+c3RlcCgpKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFVSTCBtYW5pZmVzdFVSTCA9IFVS
TCh7IH0sIHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgxKSk7CisgICAgICAgIFVSTCBtYW5pZmVz
dFVSTCA9IFVSTCh7IH0sIHN0YXRlbWVudC0+Y29sdW1uVGV4dCgxKSk7CiAKICAgICAgICAgaWYg
KG1fY2FjaGVzSW5NZW1vcnkuY29udGFpbnMobWFuaWZlc3RVUkwuc3RyaW5nKCkpKQogICAgICAg
ICAgICAgY29udGludWU7CkBAIC0yMjksNyArMjI5LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3Vw
KiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChjb25zdCBVUkwmIHVy
bCkKIAogICAgICAgICAvLyBXZSBmb3VuZCBhIGNhY2hlIGdyb3VwIHRoYXQgbWF0Y2hlcy4gTm93
IGNoZWNrIGlmIHRoZSBuZXdlc3QgY2FjaGUgaGFzIGEgcmVzb3VyY2Ugd2l0aAogICAgICAgICAv
LyBhIG1hdGNoaW5nIFVSTC4KLSAgICAgICAgdW5zaWduZWQgbmV3ZXN0Q2FjaGVJRCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQtPmdldENvbHVtbkludDY0KDIpKTsKKyAgICAgICAg
dW5zaWduZWQgbmV3ZXN0Q2FjaGVJRCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQt
PmNvbHVtbkludDY0KDIpKTsKICAgICAgICAgYXV0byBjYWNoZSA9IGxvYWRDYWNoZShuZXdlc3RD
YWNoZUlEKTsKICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
MjQxLDcgKzI0MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBhdXRvJiBncm91cCA9ICpuZXcgQXBwbGljYXRpb25DYWNoZUdyb3Vw
KCp0aGlzLCBtYW5pZmVzdFVSTCk7Ci0gICAgICAgIGdyb3VwLnNldFN0b3JhZ2VJRChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQ2NCgwKSkpOworICAgICAgICBn
cm91cC5zZXRTdG9yYWdlSUQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC0+Y29sdW1u
SW50NjQoMCkpKTsKICAgICAgICAgZ3JvdXAuc2V0TmV3ZXN0Q2FjaGUoY2FjaGUucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgICAgIG1fY2FjaGVzSW5NZW1vcnkuc2V0KGdyb3VwLm1hbmlmZXN0VVJM
KCkuc3RyaW5nKCksICZncm91cCk7CiAKQEAgLTI4Niw3ICsyODYsNyBAQCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JV
UkwoY29uc3QgVQogICAgIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBz
dGF0ZW1lbnQtPnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBVUkwgbWFuaWZlc3RV
UkwgPSBVUkwoeyB9LCBzdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMSkpOworICAgICAgICBVUkwg
bWFuaWZlc3RVUkwgPSBVUkwoeyB9LCBzdGF0ZW1lbnQtPmNvbHVtblRleHQoMSkpOwogCiAgICAg
ICAgIGlmIChtX2NhY2hlc0luTWVtb3J5LmNvbnRhaW5zKG1hbmlmZXN0VVJMLnN0cmluZygpKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjk3LDcgKzI5Nyw3IEBAIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVS
TChjb25zdCBVCiAKICAgICAgICAgLy8gV2UgZm91bmQgYSBjYWNoZSBncm91cCB0aGF0IG1hdGNo
ZXMuIE5vdyBjaGVjayBpZiB0aGUgbmV3ZXN0IGNhY2hlIGhhcyBhIHJlc291cmNlIHdpdGgKICAg
ICAgICAgLy8gYSBtYXRjaGluZyBmYWxsYmFjayBuYW1lc3BhY2UuCi0gICAgICAgIHVuc2lnbmVk
IG5ld2VzdENhY2hlSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LT5nZXRDb2x1
bW5JbnQ2NCgyKSk7CisgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7CiAgICAgICAgIGF1dG8gY2Fj
aGUgPSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVJRCk7CiAKICAgICAgICAgVVJMIGZhbGxiYWNrVVJM
OwpAQCAtMzA5LDcgKzMwOSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBVCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiBncm91cCA9ICpuZXcgQXBwbGljYXRpb25DYWNo
ZUdyb3VwKCp0aGlzLCBtYW5pZmVzdFVSTCk7Ci0gICAgICAgIGdyb3VwLnNldFN0b3JhZ2VJRChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQ2NCgwKSkpOworICAg
ICAgICBncm91cC5zZXRTdG9yYWdlSUQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC0+
Y29sdW1uSW50NjQoMCkpKTsKICAgICAgICAgZ3JvdXAuc2V0TmV3ZXN0Q2FjaGUoY2FjaGUucmVs
ZWFzZU5vbk51bGwoKSk7CiAKICAgICAgICAgbV9jYWNoZXNJbk1lbW9yeS5zZXQoZ3JvdXAubWFu
aWZlc3RVUkwoKS5zdHJpbmcoKSwgJmdyb3VwKTsKQEAgLTQyNiw4ICs0MjYsOCBAQCBib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVRdW90YUZvck9yaWdpbihjb25zdCBTZWN1
cml0eU9yaWdpbiYgb3JpZwogCiAgICAgLy8gUmV0dXJuIHRoZSBxdW90YSwgb3IgaWYgaXQgd2Fz
IG51bGwgdGhlIGRlZmF1bHQuCiAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKSB7Ci0gICAg
ICAgIGJvb2wgd2FzTm9SZWNvcmQgPSAhc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQ2NCgwKTsKLSAg
ICAgICAgcXVvdGEgPSB3YXNOb1JlY29yZCA/IG1fZGVmYXVsdE9yaWdpblF1b3RhIDogc3RhdGVt
ZW50LT5nZXRDb2x1bW5JbnQ2NCgxKTsKKyAgICAgICAgYm9vbCB3YXNOb1JlY29yZCA9ICFzdGF0
ZW1lbnQtPmNvbHVtbkludDY0KDApOworICAgICAgICBxdW90YSA9IHdhc05vUmVjb3JkID8gbV9k
ZWZhdWx0T3JpZ2luUXVvdGEgOiBzdGF0ZW1lbnQtPmNvbHVtbkludDY0KDEpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVVc2FnZUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmCiAgICAgaW50IHJlc3VsdCA9IHN0YXRlbWVudC0+c3RlcCgpOwogCiAgICAgaWYgKHJl
c3VsdCA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIHVzYWdlID0gc3RhdGVtZW50LT5nZXRDb2x1
bW5JbnQ2NCgwKTsKKyAgICAgICAgdXNhZ2UgPSBzdGF0ZW1lbnQtPmNvbHVtbkludDY0KDApOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTUwMCwxMSArNTAwLDExIEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVJlbWFpbmluZ1NpemVGb3JPcmlnaW5F
eGNsdWRpbmdDYWNoZShjb25zCiAgICAgLy8gSWYgdGhlIGNvdW50IHdhcyAwIHRoYXQgdGhlbiB3
ZSBoYXZlIHRvIHF1ZXJ5IHRoZSBvcmlnaW4gdGFibGUgZGlyZWN0bHkKICAgICAvLyBmb3IgaXRz
IHF1b3RhLiBPdGhlcndpc2Ugd2UgY2FuIHVzZSB0aGUgY2FsY3VsYXRlZCB2YWx1ZS4KICAgICBp
ZiAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgaW50NjRfdCBudW1iZXJPZkNhY2hl
cyA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCk7CisgICAgICAgIGludDY0X3QgbnVtYmVy
T2ZDYWNoZXMgPSBzdGF0ZW1lbnQtPmNvbHVtbkludDY0KDApOwogICAgICAgICBpZiAobnVtYmVy
T2ZDYWNoZXMgPT0gMCkKICAgICAgICAgICAgIGNhbGN1bGF0ZVF1b3RhRm9yT3JpZ2luKG9yaWdp
biwgcmVtYWluaW5nU2l6ZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbWFpbmluZ1Np
emUgPSBzdGF0ZW1lbnQtPmdldENvbHVtbkludDY0KDEpOworICAgICAgICAgICAgcmVtYWluaW5n
U2l6ZSA9IHN0YXRlbWVudC0+Y29sdW1uSW50NjQoMSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIApAQCAtNTU1LDcgKzU1NSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnZlcmlmeVNjaGVtYVZlcnNpb24oKQogICAgIEFTU0VSVChTUUxpdGVEYXRhYmFzZVRyYWNrZXI6
Omhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKIAogICAgIGF1dG8gdmVyc2lvblN0YXRlbWVu
dCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiUFJBR01BIHVzZXJfdmVyc2lvbiJfcyk7
Ci0gICAgaW50IHZlcnNpb24gPSB2ZXJzaW9uU3RhdGVtZW50ID8gdmVyc2lvblN0YXRlbWVudC0+
Z2V0Q29sdW1uSW50KDApIDogMDsKKyAgICBpbnQgdmVyc2lvbiA9IHZlcnNpb25TdGF0ZW1lbnQg
PyB2ZXJzaW9uU3RhdGVtZW50LT5jb2x1bW5JbnQoMCkgOiAwOwogICAgIGlmICh2ZXJzaW9uID09
IHNjaGVtYVZlcnNpb24pCiAgICAgICAgIHJldHVybjsKIApAQCAtMTEwOCwxOCArMTEwOCwxNCBA
QCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAKICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgo
cmVzdWx0ID0gY2FjaGVTdGF0ZW1lbnQtPnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgewotICAgICAg
ICBVUkwgdXJsKHsgfSwgY2FjaGVTdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCkpOworICAgICAg
ICBVUkwgdXJsKHsgfSwgY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpOwogICAgICAgICAK
LSAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmdldENvbHVtbklu
dCgxKTsKKyAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVt
bkludCgxKTsKIAotICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGNhY2hlU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQ2NCgyKSk7Ci0KLSAgICAgICAgVmVjdG9yPGNo
YXI+IGJsb2I7Ci0gICAgICAgIGNhY2hlU3RhdGVtZW50LT5nZXRDb2x1bW5CbG9iQXNWZWN0b3Io
NiwgYmxvYik7Ci0gICAgICAgIAotICAgICAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGJsb2IpKTsKKyAgICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50NjQoMikpOworICAgICAgICBhdXRv
IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2
KSk7CiAgICAgICAgIAotICAgICAgICBTdHJpbmcgcGF0aCA9IGNhY2hlU3RhdGVtZW50LT5nZXRD
b2x1bW5UZXh0KDcpOworICAgICAgICBTdHJpbmcgcGF0aCA9IGNhY2hlU3RhdGVtZW50LT5jb2x1
bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxvbmcgc2l6ZSA9IDA7CiAgICAgICAgIGlmIChwYXRo
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHNpemUgPSBkYXRhLT5zaXplKCk7CkBAIC0xMTI4LDEz
ICsxMTI0LDEzIEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgICAgIHNpemUgPSBG
aWxlU3lzdGVtOjpmaWxlU2l6ZShwYXRoKS52YWx1ZU9yKDApOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBjYWNoZVN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4
dCgzKTsKLSAgICAgICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWUgPSBjYWNoZVN0YXRlbWVudC0+
Z2V0Q29sdW1uVGV4dCg0KTsKKyAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gY2FjaGVTdGF0ZW1l
bnQtPmNvbHVtblRleHQoMyk7CisgICAgICAgIFN0cmluZyB0ZXh0RW5jb2RpbmdOYW1lID0gY2Fj
aGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNCk7CiAgICAgICAgIAogICAgICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlKHVybCwgbWltZVR5cGUsIHNpemUsIHRleHRFbmNvZGluZ05hbWUpOwog
ICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShodHRwU3RhdHVzQ29kZSk7CiAKLSAg
ICAgICAgU3RyaW5nIGhlYWRlcnMgPSBjYWNoZVN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCg1KTsK
KyAgICAgICAgU3RyaW5nIGhlYWRlcnMgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uVGV4dCg1KTsK
ICAgICAgICAgcGFyc2VIZWFkZXJzKGhlYWRlcnMsIHJlc3BvbnNlKTsKICAgICAgICAgCiAgICAg
ICAgIGF1dG8gcmVzb3VyY2UgPSBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSh1cmws
IHJlc3BvbnNlLCB0eXBlLCBXVEZNb3ZlKGRhdGEpLCBwYXRoKTsKQEAgLTExNjEsNyArMTE1Nyw3
IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9h
ZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAKICAgICBWZWN0b3I8VVJMPiBhbGxvd2xp
c3Q7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBhbGxvd2xpc3RTdGF0ZW1lbnQtPnN0ZXAoKSkgPT0g
U1FMSVRFX1JPVykKLSAgICAgICAgYWxsb3dsaXN0LmFwcGVuZChVUkwoeyB9LCBhbGxvd2xpc3RT
dGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCkpKTsKKyAgICAgICAgYWxsb3dsaXN0LmFwcGVuZChV
UkwoeyB9LCBhbGxvd2xpc3RTdGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpKTsKIAogICAgIGlmIChy
ZXN1bHQgIT0gU1FMSVRFX0RPTkUpCiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGxvYWQg
Y2FjaGUgb25saW5lIGFsbG93bGlzdCwgZXJyb3IgXCIlc1wiIiwgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CkBAIC0xMTc4LDcgKzExNzQsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4g
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAg
ICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfUk9XKQogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5v
dCBsb2FkIGNhY2hlIG9ubGluZSBhbGxvd2xpc3Qgd2lsZGNhcmQgZmxhZywgZXJyb3IgXCIlc1wi
IiwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAKLSAgICBjYWNoZS0+c2V0QWxsb3dzQWxs
TmV0d29ya1JlcXVlc3RzKGFsbG93bGlzdFdpbGRjYXJkU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQ2
NCgwKSk7CisgICAgY2FjaGUtPnNldEFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyhhbGxvd2xpc3RX
aWxkY2FyZFN0YXRlbWVudC0+Y29sdW1uSW50NjQoMCkpOwogCiAgICAgaWYgKGFsbG93bGlzdFdp
bGRjYXJkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpCiAgICAgICAgIExPR19FUlJP
UigiVG9vIG1hbnkgcm93cyBmb3Igb25saW5lIGFsbG93bGlzdCB3aWxkY2FyZCBmbGFnIik7CkBA
IC0xMTkxLDcgKzExODcsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAgICAgCiAgICAgRmFs
bGJhY2tVUkxWZWN0b3IgZmFsbGJhY2tVUkxzOwogICAgIHdoaWxlICgocmVzdWx0ID0gZmFsbGJh
Y2tTdGF0ZW1lbnQtPnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgZmFsbGJhY2tVUkxz
LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihVUkwoeyB9LCBmYWxsYmFja1N0YXRlbWVudC0+Z2V0Q29s
dW1uVGV4dCgwKSksIFVSTCh7IH0sIGZhbGxiYWNrU3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDEp
KSkpOworICAgICAgICBmYWxsYmFja1VSTHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKFVSTCh7IH0s
IGZhbGxiYWNrU3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKSwgVVJMKHsgfSwgZmFsbGJhY2tTdGF0
ZW1lbnQtPmNvbHVtblRleHQoMSkpKSk7CiAKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05F
KQogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBsb2FkIGZhbGxiYWNrIFVSTHMsIGVycm9y
IFwiJXNcIiIsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwpAQCAtMTMyMSw3ICsxMzE3LDcg
QEAgT3B0aW9uYWw8VmVjdG9yPFVSTD4+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjptYW5pZmVz
dFVSTHMoKQogCiAgICAgVmVjdG9yPFVSTD4gdXJsczsKICAgICB3aGlsZSAoc2VsZWN0VVJMcy0+
c3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIHVybHMuYXBwZW5kKFVSTCh7IH0sIHNlbGVj
dFVSTHMtPmdldENvbHVtblRleHQoMCkpKTsKKyAgICAgICAgdXJscy5hcHBlbmQoVVJMKHsgfSwg
c2VsZWN0VVJMcy0+Y29sdW1uVGV4dCgwKSkpOwogCiAgICAgcmV0dXJuIHVybHM7CiB9CkBAIC0x
MzM5LDcgKzEzMzUsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVDYWNo
ZUdyb3VwUmVjb3JkKGNvbnN0IFN0cmluZyYgbWFuaWZlc3RVUkwpCiAgICAgaWYgKHJlc3VsdCAh
PSBTUUxJVEVfUk9XKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnQ2NF90IGdyb3Vw
SWQgPSBpZFN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCk7CisgICAgaW50NjRfdCBncm91cElk
ID0gaWRTdGF0ZW1lbnQtPmNvbHVtbkludDY0KDApOwogCiAgICAgYXV0byBjYWNoZVN0YXRlbWVu
dCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiREVMRVRFIEZST00gQ2FjaGVzIFdIRVJF
IGNhY2hlR3JvdXA9PyJfcyk7CiAgICAgaWYgKCFjYWNoZVN0YXRlbWVudCkKQEAgLTE0MjAsNyAr
MTQxNiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNoZWNrRm9yRGVsZXRlZFJl
c291cmNlcygpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBkbyB7Ci0gICAgICAgIFN0cmlu
ZyBwYXRoID0gc2VsZWN0UGF0aHMtPmdldENvbHVtblRleHQoMCk7CisgICAgICAgIFN0cmluZyBw
YXRoID0gc2VsZWN0UGF0aHMtPmNvbHVtblRleHQoMCk7CiAgICAgICAgIGlmIChwYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKQEAgLTE0NTMsNyArMTQ0OSw3
IEBAIGxvbmcgbG9uZyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmxhdEZpbGVBcmVhU2l6ZSgp
CiAgICAgbG9uZyBsb25nIHRvdGFsU2l6ZSA9IDA7CiAgICAgU3RyaW5nIGZsYXRGaWxlRGlyZWN0
b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVEaXJlY3Rv
cnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKICAgICB3aGlsZSAoc2VsZWN0UGF0aHMt
PnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGF1dG8gZnVsbFBhdGggPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHNlbGVjdFBh
dGhzLT5nZXRDb2x1bW5UZXh0KDApKTsKKyAgICAgICAgYXV0byBmdWxsUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgc2VsZWN0UGF0
aHMtPmNvbHVtblRleHQoMCkpOwogICAgICAgICB0b3RhbFNpemUgKz0gRmlsZVN5c3RlbTo6Zmls
ZVNpemUoZnVsbFBhdGgpLnZhbHVlT3IoMCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggYTEy
ZjFlMTQ3MmViZmQ5ZWJlMTUzYmQ3YWFjYTI5NDk2NmViNmYyYi4uMDVkNjI1ZDAxNjFkY2Y0YzI3
MDAxMDczNDY1ZDI1MzFkNGYxNTkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9p
ZCBDb29raWVKYXJEQjo6dmVyaWZ5U2NoZW1hVmVyc2lvbigpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEg
dXNlcl92ZXJzaW9uIl9zKTsKLSAgICBpbnQgdmVyc2lvbiA9IHN0YXRlbWVudCA/IHN0YXRlbWVu
dC0+Z2V0Q29sdW1uSW50KDApIDogMDsKKyAgICBpbnQgdmVyc2lvbiA9IHN0YXRlbWVudCA/IHN0
YXRlbWVudC0+Y29sdW1uSW50KDApIDogMDsKICAgICBpZiAodmVyc2lvbiA9PSBzY2hlbWFWZXJz
aW9uKQogICAgICAgICByZXR1cm47CiAKQEAgLTI5Miw3ICsyOTIsNyBAQCBib29sIENvb2tpZUph
ckRCOjpjaGVja0RhdGFiYXNlVmFsaWRpdHkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgU3RyaW5nIHJlc3VsdFRleHQgPSBpbnRlZ3JpdHktPmdldENvbHVtblRleHQoMCk7
CisgICAgU3RyaW5nIHJlc3VsdFRleHQgPSBpbnRlZ3JpdHktPmNvbHVtblRleHQoMCk7CiAKICAg
ICBpZiAocmVzdWx0VGV4dCAhPSAib2siKSB7CiAgICAgICAgIExPR19FUlJPUigiQ29va2llIGRh
dGFiYXNlIGludGVncml0eSBjaGVjayBmYWlsZWQgLSAlcyIsIHJlc3VsdFRleHQuYXNjaWkoKS5k
YXRhKCkpOwpAQCAtNDE1LDE0ICs0MTUsMTQgQEAgT3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENv
b2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QKICAg
ICAgICAgaWYgKHJlc3VsdHMuc2l6ZSgpID4gTUFYX0NPT0tJRV9QRVJfRE9NQUlOKQogICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgU3RyaW5nIGNvb2tpZU5hbWUgPSBwc3RtdC0+Z2V0Q29s
dW1uVGV4dCgwKTsKLSAgICAgICAgU3RyaW5nIGNvb2tpZVZhbHVlID0gcHN0bXQtPmdldENvbHVt
blRleHQoMSk7Ci0gICAgICAgIFN0cmluZyBjb29raWVEb21haW4gPSBwc3RtdC0+Z2V0Q29sdW1u
VGV4dCgyKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwotICAgICAgICBTdHJpbmcgY29va2ll
UGF0aCA9IHBzdG10LT5nZXRDb2x1bW5UZXh0KDMpOwotICAgICAgICBkb3VibGUgY29va2llRXhw
aXJlcyA9IChkb3VibGUpcHN0bXQtPmdldENvbHVtbkludDY0KDQpOwotICAgICAgICBib29sIGNv
b2tpZUh0dHBPbmx5ID0gKHBzdG10LT5nZXRDb2x1bW5JbnQoNSkgPT0gMSk7Ci0gICAgICAgIGJv
b2wgY29va2llU2VjdXJlID0gKHBzdG10LT5nZXRDb2x1bW5JbnQoNikgPT0gMSk7Ci0gICAgICAg
IGJvb2wgY29va2llU2Vzc2lvbiA9IChwc3RtdC0+Z2V0Q29sdW1uSW50KDcpID09IDEpOworICAg
ICAgICBTdHJpbmcgY29va2llTmFtZSA9IHBzdG10LT5jb2x1bW5UZXh0KDApOworICAgICAgICBT
dHJpbmcgY29va2llVmFsdWUgPSBwc3RtdC0+Y29sdW1uVGV4dCgxKTsKKyAgICAgICAgU3RyaW5n
IGNvb2tpZURvbWFpbiA9IHBzdG10LT5jb2x1bW5UZXh0KDIpLmNvbnZlcnRUb0FTQ0lJTG93ZXJj
YXNlKCk7CisgICAgICAgIFN0cmluZyBjb29raWVQYXRoID0gcHN0bXQtPmNvbHVtblRleHQoMyk7
CisgICAgICAgIGRvdWJsZSBjb29raWVFeHBpcmVzID0gKGRvdWJsZSlwc3RtdC0+Y29sdW1uSW50
NjQoNCk7CisgICAgICAgIGJvb2wgY29va2llSHR0cE9ubHkgPSAocHN0bXQtPmNvbHVtbkludCg1
KSA9PSAxKTsKKyAgICAgICAgYm9vbCBjb29raWVTZWN1cmUgPSAocHN0bXQtPmNvbHVtbkludCg2
KSA9PSAxKTsKKyAgICAgICAgYm9vbCBjb29raWVTZXNzaW9uID0gKHBzdG10LT5jb2x1bW5JbnQo
NykgPT0gMSk7CiAKICAgICAgICAgaWYgKCFDb29raWVVdGlsOjpkb21haW5NYXRjaChjb29raWVE
b21haW4sIHJlcXVlc3RIb3N0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDYzLDE2ICs0
NjMsMTYgQEAgVmVjdG9yPENvb2tpZT4gQ29va2llSmFyREI6OmdldEFsbENvb2tpZXMoKQogCiAg
ICAgd2hpbGUgKHBzdG10LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewogICAgICAgICBDb29raWUg
Y29va2llOwotICAgICAgICBjb29raWUubmFtZSA9IHBzdG10LT5nZXRDb2x1bW5UZXh0KDApOwot
ICAgICAgICBjb29raWUudmFsdWUgPSBwc3RtdC0+Z2V0Q29sdW1uVGV4dCgxKTsKLSAgICAgICAg
Y29va2llLmRvbWFpbiA9IHBzdG10LT5nZXRDb2x1bW5UZXh0KDIpLmNvbnZlcnRUb0FTQ0lJTG93
ZXJjYXNlKCk7Ci0gICAgICAgIGNvb2tpZS5wYXRoID0gcHN0bXQtPmdldENvbHVtblRleHQoMyk7
Ci0gICAgICAgIGRvdWJsZSBjb29raWVFeHBpcmVzID0gKGRvdWJsZSlwc3RtdC0+Z2V0Q29sdW1u
SW50NjQoNCk7CisgICAgICAgIGNvb2tpZS5uYW1lID0gcHN0bXQtPmNvbHVtblRleHQoMCk7Cisg
ICAgICAgIGNvb2tpZS52YWx1ZSA9IHBzdG10LT5jb2x1bW5UZXh0KDEpOworICAgICAgICBjb29r
aWUuZG9tYWluID0gcHN0bXQtPmNvbHVtblRleHQoMikuY29udmVydFRvQVNDSUlMb3dlcmNhc2Uo
KTsKKyAgICAgICAgY29va2llLnBhdGggPSBwc3RtdC0+Y29sdW1uVGV4dCgzKTsKKyAgICAgICAg
ZG91YmxlIGNvb2tpZUV4cGlyZXMgPSAoZG91YmxlKXBzdG10LT5jb2x1bW5JbnQ2NCg0KTsKICAg
ICAgICAgaWYgKGNvb2tpZUV4cGlyZXMpCiAgICAgICAgICAgICBjb29raWUuZXhwaXJlcyA9IGNv
b2tpZUV4cGlyZXM7Ci0gICAgICAgIGNvb2tpZS5odHRwT25seSA9IChwc3RtdC0+Z2V0Q29sdW1u
SW50KDUpID09IDEpOwotICAgICAgICBjb29raWUuc2VjdXJlID0gKHBzdG10LT5nZXRDb2x1bW5J
bnQoNikgPT0gMSk7Ci0gICAgICAgIGNvb2tpZS5zZXNzaW9uID0gKHBzdG10LT5nZXRDb2x1bW5J
bnQoNykgPT0gMSk7CisgICAgICAgIGNvb2tpZS5odHRwT25seSA9IChwc3RtdC0+Y29sdW1uSW50
KDUpID09IDEpOworICAgICAgICBjb29raWUuc2VjdXJlID0gKHBzdG10LT5jb2x1bW5JbnQoNikg
PT0gMSk7CisgICAgICAgIGNvb2tpZS5zZXNzaW9uID0gKHBzdG10LT5jb2x1bW5JbnQoNykgPT0g
MSk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShjb29raWUpKTsKICAgICB9CiAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTU2OSw3ICs1NjksNyBAQCBIYXNoU2V0PFN0cmluZz4gQ29va2ll
SmFyREI6OmFsbERvbWFpbnMoKQogCiAgICAgSGFzaFNldDxTdHJpbmc+IGRvbWFpbnM7CiAgICAg
d2hpbGUgKHN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgYXV0byBk
b21haW4gPSBzdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCk7CisgICAgICAgIGF1dG8gZG9tYWlu
ID0gc3RhdGVtZW50LT5jb2x1bW5UZXh0KDApOwogICAgICAgICBkb21haW5zLmFkZChkb21haW4p
OwogICAgIH0KICAgICByZXR1cm4gZG9tYWluczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IDkwNzBkM2RmMGJkOGRjMDJjMDZkYTg1ZmIy
NTNjYmU3NjRmMTJjYjcuLjM0ZGFmNGVkMjllZjgzMmYzYWUwNTJjYjJlNTQ1M2UyNWQyMjhlMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApA
QCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnVzZVdBTEpvdXJuYWxNb2Rl
KCkKICAgICAgICAgYXV0byB3YWxTdGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEg
am91cm5hbF9tb2RlPVdBTDsiX3MpOwogICAgICAgICBpZiAod2FsU3RhdGVtZW50ICYmIHdhbFN0
YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAg
ICAgICBTdHJpbmcgbW9kZSA9IHdhbFN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgwKTsKKyAgICAg
ICAgICAgIFN0cmluZyBtb2RlID0gd2FsU3RhdGVtZW50LT5jb2x1bW5UZXh0KDApOwogICAgICAg
ICAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtb2RlLCAid2FsIikpCiAg
ICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJqb3VybmFsX21vZGUgb2YgZGF0YWJhc2Ugc2hvdWxk
IGJlICdXQUwnLCBidXQgaXMgJyVzJyIsIG1vZGUudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKQEAg
LTIxMiw3ICsyMTIsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSgp
CiAgICAgICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0
aW9uQ291bnRlcjsKICAgICAgICAgYXV0byBjaGVja3BvaW50U3RhdGVtZW50ID0gcHJlcGFyZVN0
YXRlbWVudCgiUFJBR01BIHdhbF9jaGVja3BvaW50KFRSVU5DQVRFKSJfcyk7CiAgICAgICAgIGlm
IChjaGVja3BvaW50U3RhdGVtZW50ICYmIGNoZWNrcG9pbnRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBT
UUxJVEVfUk9XKSB7Ci0gICAgICAgICAgICBpZiAoY2hlY2twb2ludFN0YXRlbWVudC0+Z2V0Q29s
dW1uSW50KDApKQorICAgICAgICAgICAgaWYgKGNoZWNrcG9pbnRTdGF0ZW1lbnQtPmNvbHVtbklu
dCgwKSkKICAgICAgICAgICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJTUUxpdGUgZGF0YWJhc2Ug
Y2hlY2twb2ludCBpcyBibG9ja2VkIik7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgTE9H
X0VSUk9SKCJTUUxpdGUgZGF0YWJhc2UgZmFpbGVkIHRvIGNoZWNrcG9pbnQ6ICVzIiwgbGFzdEVy
cm9yTXNnKCkpOwpAQCAtMjc1LDcgKzI3NSw3IEBAIGludDY0X3QgU1FMaXRlRGF0YWJhc2U6Om1h
eGltdW1TaXplKCkKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7
CiAgICAgICAgIGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogICAgICAgICBhdXRvIHN0YXRlbWVu
dCA9IHByZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBtYXhfcGFnZV9jb3VudCJfcyk7Ci0gICAgICAg
IG1heFBhZ2VDb3VudCA9IHN0YXRlbWVudCA/IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCkg
OiAwOworICAgICAgICBtYXhQYWdlQ291bnQgPSBzdGF0ZW1lbnQgPyBzdGF0ZW1lbnQtPmNvbHVt
bkludDY0KDApIDogMDsKICAgICAgICAgZW5hYmxlQXV0aG9yaXplcih0cnVlKTsKICAgICB9CiAK
QEAgLTMxMiw3ICszMTIsNyBAQCBpbnQgU1FMaXRlRGF0YWJhc2U6OnBhZ2VTaXplKCkKICAgICAg
ICAgZW5hYmxlQXV0aG9yaXplcihmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBhdXRvIHN0YXRl
bWVudCA9IHByZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBwYWdlX3NpemUiX3MpOwotICAgICAgICBt
X3BhZ2VTaXplID0gc3RhdGVtZW50ID8gc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkgOiAwOwor
ICAgICAgICBtX3BhZ2VTaXplID0gc3RhdGVtZW50ID8gc3RhdGVtZW50LT5jb2x1bW5JbnQoMCkg
OiAwOwogICAgICAgICAKICAgICAgICAgZW5hYmxlQXV0aG9yaXplcih0cnVlKTsKICAgICB9CkBA
IC0zMjksNyArMzI5LDcgQEAgaW50NjRfdCBTUUxpdGVEYXRhYmFzZTo6ZnJlZVNwYWNlU2l6ZSgp
CiAgICAgICAgIGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogICAgICAgICAvLyBOb3RlOiBmcmVl
bGlzdF9jb3VudCB3YXMgYWRkZWQgaW4gU1FMaXRlIDMuNC4xLgogICAgICAgICBhdXRvIHN0YXRl
bWVudCA9IHByZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBmcmVlbGlzdF9jb3VudCJfcyk7Ci0gICAg
ICAgIGZyZWVsaXN0Q291bnQgPSBzdGF0ZW1lbnQgPyBzdGF0ZW1lbnQtPmdldENvbHVtbkludDY0
KDApIDogMDsKKyAgICAgICAgZnJlZWxpc3RDb3VudCA9IHN0YXRlbWVudCA/IHN0YXRlbWVudC0+
Y29sdW1uSW50NjQoMCkgOiAwOwogICAgICAgICBlbmFibGVBdXRob3JpemVyKHRydWUpOwogICAg
IH0KIApAQCAtMzQ0LDcgKzM0NCw3IEBAIGludDY0X3QgU1FMaXRlRGF0YWJhc2U6OnRvdGFsU2l6
ZSgpCiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOwogICAgICAg
ICBlbmFibGVBdXRob3JpemVyKGZhbHNlKTsKICAgICAgICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVw
YXJlU3RhdGVtZW50KCJQUkFHTUEgcGFnZV9jb3VudCJfcyk7Ci0gICAgICAgIHBhZ2VDb3VudCA9
IHN0YXRlbWVudCA/IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCkgOiAwOworICAgICAgICBw
YWdlQ291bnQgPSBzdGF0ZW1lbnQgPyBzdGF0ZW1lbnQtPmNvbHVtbkludDY0KDApIDogMDsKICAg
ICAgICAgZW5hYmxlQXV0aG9yaXplcih0cnVlKTsKICAgICB9CiAKQEAgLTQwNiw3ICs0MDYsNyBA
QCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpjbGVhckFsbFRhYmxlcygpCiAgICAgfQogICAgIFZlY3Rv
cjxTdHJpbmc+IHRhYmxlczsKICAgICB3aGlsZSAoc3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRF
X1JPVykKLSAgICAgICAgdGFibGVzLmFwcGVuZChzdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCkp
OworICAgICAgICB0YWJsZXMuYXBwZW5kKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSk7CiAgICAg
Zm9yIChhdXRvJiB0YWJsZSA6IHRhYmxlcykgewogICAgICAgICBpZiAoIWV4ZWN1dGVDb21tYW5k
U2xvdygiRFJPUCBUQUJMRSAiICsgdGFibGUpKQogICAgICAgICAgICAgTE9HKFNRTERhdGFiYXNl
LCAiVW5hYmxlIHRvIGRyb3AgdGFibGUgJXMiLCB0YWJsZS5hc2NpaSgpLmRhdGEoKSk7CkBAIC01
ODAsNyArNTgwLDcgQEAgYm9vbCBTUUxpdGVEYXRhYmFzZTo6dHVybk9uSW5jcmVtZW50YWxBdXRv
VmFjdXVtKCkKIHsKICAgICBpbnQgYXV0b1ZhY3V1bU1vZGUgPSAwOwogICAgIGlmIChhdXRvIHN0
YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBhdXRvX3ZhY3V1bSJfcykpCi0gICAg
ICAgIGF1dG9WYWN1dW1Nb2RlID0gc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CisgICAgICAg
IGF1dG9WYWN1dW1Nb2RlID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMCk7CiAgICAgaW50IGVycm9y
ID0gbGFzdEVycm9yKCk7CiAKICAgICAvLyBDaGVjayBpZiB3ZSBnb3QgYW4gZXJyb3Igd2hpbGUg
dHJ5aW5nIHRvIGdldCB0aGUgdmFsdWUgb2YgdGhlIGF1dG9fdmFjdXVtIGZsYWcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCmluZGV4IDIyOGRm
MDYzYjM4NTk4NWM1NTEwN2NmM2YwM2I1ZjM2ZjlkZTY2Y2MuLmQ4YWQ2YzdjNWRmNzc3MTA0MDA0
ODcwMWQwNDYwZGZlZTgyMWFkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgYm9vbCBTUUxpdGVTdGF0
ZW1lbnQ6OmlzQ29sdW1uRGVjbGFyZWRBc0Jsb2IoaW50IGNvbCkKICAgICByZXR1cm4gZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyhzcWxpdGUzX2NvbHVtbl9kZWNsdHlw
ZShtX3N0YXRlbWVudCwgY29sKSksICJibG9iIik7CiB9CiAKLVN0cmluZyBTUUxpdGVTdGF0ZW1l
bnQ6OmdldENvbHVtbk5hbWUoaW50IGNvbCkKK1N0cmluZyBTUUxpdGVTdGF0ZW1lbnQ6OmNvbHVt
bk5hbWUoaW50IGNvbCkKIHsKICAgICBBU1NFUlQoY29sID49IDApOwogICAgIGlmICghaGFzU3Rh
cnRlZFN0ZXBwaW5nKCkgJiYgc3RlcCgpICE9IFNRTElURV9ST1cpCkBAIC0xOTAsNyArMTkwLDcg
QEAgU3RyaW5nIFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uTmFtZShpbnQgY29sKQogICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KHNxbGl0ZTNfY29sdW1uX25hbWUobV9zdGF0ZW1lbnQsIGNv
bCkpOwogfQogCi1TUUxWYWx1ZSBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtblZhbHVlKGludCBj
b2wpCitTUUxWYWx1ZSBTUUxpdGVTdGF0ZW1lbnQ6OmNvbHVtblZhbHVlKGludCBjb2wpCiB7CiAg
ICAgQVNTRVJUKGNvbCA+PSAwKTsKICAgICBpZiAoIWhhc1N0YXJ0ZWRTdGVwcGluZygpICYmIHN0
ZXAoKSAhPSBTUUxJVEVfUk9XKQpAQCAtMjE4LDcgKzIxOCw3IEBAIFNRTFZhbHVlIFNRTGl0ZVN0
YXRlbWVudDo6Z2V0Q29sdW1uVmFsdWUoaW50IGNvbCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotU3RyaW5nIFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uVGV4dChpbnQgY29sKQorU3RyaW5n
IFNRTGl0ZVN0YXRlbWVudDo6Y29sdW1uVGV4dChpbnQgY29sKQogewogICAgIEFTU0VSVChjb2wg
Pj0gMCk7CiAgICAgaWYgKCFoYXNTdGFydGVkU3RlcHBpbmcoKSAmJiBzdGVwKCkgIT0gU1FMSVRF
X1JPVykKQEAgLTIyOCw3ICsyMjgsNyBAQCBTdHJpbmcgU1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1
bW5UZXh0KGludCBjb2wpCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3FsaXRlM19jb2x1
bW5fdGV4dChtX3N0YXRlbWVudCwgY29sKSwgc3FsaXRlM19jb2x1bW5fYnl0ZXMobV9zdGF0ZW1l
bnQsIGNvbCkpOwogfQogICAgIAotZG91YmxlIFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uRG91
YmxlKGludCBjb2wpCitkb3VibGUgU1FMaXRlU3RhdGVtZW50Ojpjb2x1bW5Eb3VibGUoaW50IGNv
bCkKIHsKICAgICBBU1NFUlQoY29sID49IDApOwogICAgIGlmICghaGFzU3RhcnRlZFN0ZXBwaW5n
KCkgJiYgc3RlcCgpICE9IFNRTElURV9ST1cpCkBAIC0yMzgsNyArMjM4LDcgQEAgZG91YmxlIFNR
TGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uRG91YmxlKGludCBjb2wpCiAgICAgcmV0dXJuIHNxbGl0
ZTNfY29sdW1uX2RvdWJsZShtX3N0YXRlbWVudCwgY29sKTsKIH0KIAotaW50IFNRTGl0ZVN0YXRl
bWVudDo6Z2V0Q29sdW1uSW50KGludCBjb2wpCitpbnQgU1FMaXRlU3RhdGVtZW50Ojpjb2x1bW5J
bnQoaW50IGNvbCkKIHsKICAgICBBU1NFUlQoY29sID49IDApOwogICAgIGlmICghaGFzU3RhcnRl
ZFN0ZXBwaW5nKCkgJiYgc3RlcCgpICE9IFNRTElURV9ST1cpCkBAIC0yNDgsNyArMjQ4LDcgQEAg
aW50IFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uSW50KGludCBjb2wpCiAgICAgcmV0dXJuIHNx
bGl0ZTNfY29sdW1uX2ludChtX3N0YXRlbWVudCwgY29sKTsKIH0KIAotaW50NjRfdCBTUUxpdGVT
dGF0ZW1lbnQ6OmdldENvbHVtbkludDY0KGludCBjb2wpCitpbnQ2NF90IFNRTGl0ZVN0YXRlbWVu
dDo6Y29sdW1uSW50NjQoaW50IGNvbCkKIHsKICAgICBBU1NFUlQoY29sID49IDApOwogICAgIGlm
ICghaGFzU3RhcnRlZFN0ZXBwaW5nKCkgJiYgc3RlcCgpICE9IFNRTElURV9ST1cpCkBAIC0yNTgs
NyArMjU4LDcgQEAgaW50NjRfdCBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtbkludDY0KGludCBj
b2wpCiAgICAgcmV0dXJuIHNxbGl0ZTNfY29sdW1uX2ludDY0KG1fc3RhdGVtZW50LCBjb2wpOwog
fQogCi1TdHJpbmcgU1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5CbG9iQXNTdHJpbmcoaW50IGNv
bCkKK1N0cmluZyBTUUxpdGVTdGF0ZW1lbnQ6OmNvbHVtbkJsb2JBc1N0cmluZyhpbnQgY29sKQog
ewogICAgIEFTU0VSVChjb2wgPj0gMCk7CiAKQEAgLTI4MCw1NiArMjgwLDI1IEBAIFN0cmluZyBT
UUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtbkJsb2JBc1N0cmluZyhpbnQgY29sKQogICAgIHJldHVy
biBTdHJpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihibG9iKSwgc2l6ZSAvIHNpemVvZihV
Q2hhcikpOwogfQogCi12b2lkIFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uQmxvYkFzVmVjdG9y
KGludCBjb2wsIFZlY3RvcjxjaGFyPiYgcmVzdWx0KQorVmVjdG9yPHVpbnQ4X3Q+IFNRTGl0ZVN0
YXRlbWVudDo6Y29sdW1uQmxvYihpbnQgY29sKQogewogICAgIEFTU0VSVChjb2wgPj0gMCk7CiAK
LSAgICBpZiAoIWhhc1N0YXJ0ZWRTdGVwcGluZygpICYmIHN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7
Ci0gICAgICAgIHJlc3VsdC5jbGVhcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
ICghaGFzU3RhcnRlZFN0ZXBwaW5nKCkgJiYgc3RlcCgpICE9IFNRTElURV9ST1cpCisgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICBpZiAoY29sdW1uQ291bnQoKSA8PSBjb2wpIHsKLSAgICAgICAg
cmVzdWx0LmNsZWFyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGNvbHVtbkNv
dW50KCkgPD0gY29sKQorICAgICAgICByZXR1cm4geyB9OwogCiAgICAgY29uc3Qgdm9pZCogYmxv
YiA9IHNxbGl0ZTNfY29sdW1uX2Jsb2IobV9zdGF0ZW1lbnQsIGNvbCk7Ci0gICAgaWYgKCFibG9i
KSB7Ci0gICAgICAgIHJlc3VsdC5jbGVhcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
ICAgICAKLSAgICBpbnQgc2l6ZSA9IHNxbGl0ZTNfY29sdW1uX2J5dGVzKG1fc3RhdGVtZW50LCBj
b2wpOwotICAgIHJlc3VsdC5yZXNpemUoKHNpemVfdClzaXplKTsKLSAgICBmb3IgKGludCBpID0g
MDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgcmVzdWx0W2ldID0gKHN0YXRpY19jYXN0PGNvbnN0
IHVuc2lnbmVkIGNoYXIqPihibG9iKSlbaV07Ci19Ci0KLXZvaWQgU1FMaXRlU3RhdGVtZW50Ojpn
ZXRDb2x1bW5CbG9iQXNWZWN0b3IoaW50IGNvbCwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpCi17
Ci0gICAgQVNTRVJUKGNvbCA+PSAwKTsKLQotICAgIGlmICghaGFzU3RhcnRlZFN0ZXBwaW5nKCkg
JiYgc3RlcCgpICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgcmVzdWx0LmNsZWFyKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFibG9iKQorICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgaWYgKGNvbHVtbkNvdW50KCkgPD0gY29sKSB7Ci0gICAgICAgIHJlc3VsdC5jbGVhcigp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGludCBibG9iU2l6ZSA9IHNxbGl0ZTNfY29s
dW1uX2J5dGVzKG1fc3RhdGVtZW50LCBjb2wpOworICAgIGlmIChibG9iU2l6ZSA8PSAwKQorICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgY29uc3Qgdm9pZCogYmxvYiA9IHNxbGl0ZTNfY29sdW1u
X2Jsb2IobV9zdGF0ZW1lbnQsIGNvbCk7Ci0gICAgaWYgKCFibG9iKSB7Ci0gICAgICAgIHJlc3Vs
dC5jbGVhcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICAgICAKLSAgICBpbnQgc2l6
ZSA9IHNxbGl0ZTNfY29sdW1uX2J5dGVzKG1fc3RhdGVtZW50LCBjb2wpOwotICAgIHJlc3VsdC5y
ZXNpemUoKHNpemVfdClzaXplKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkK
LSAgICAgICAgcmVzdWx0W2ldID0gKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihibG9iKSlb
aV07CisgICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYmxvYiks
IHN0YXRpY19jYXN0PHNpemVfdD4oYmxvYlNpemUpIH07CiB9CiAKIGJvb2wgU1FMaXRlU3RhdGVt
ZW50OjpoYXNTdGFydGVkU3RlcHBpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZVN0YXRlbWVudC5oCmluZGV4IDg0MGVhOGYwNmEyYTgyMDM0ZGYyMWQyZTAyZTVlMzUy
ZDcxYWQ3NjEuLmYwNWE4ODRmZGIyODM3Njk3ZTAwNzI1NjQzNTViMDBjOGNkMGZhNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKQEAgLTYzLDE1
ICs2MywxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1JlYWRPbmx5KCk7CiAgICAgCiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0NvbHVtbkRlY2xhcmVkQXNCbG9iKGludCBjb2wpOwotICAgIFN0
cmluZyBnZXRDb2x1bW5OYW1lKGludCBjb2wpOwotICAgIFNRTFZhbHVlIGdldENvbHVtblZhbHVl
KGludCBjb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBnZXRDb2x1bW5UZXh0KGludCBj
b2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIGRvdWJsZSBnZXRDb2x1bW5Eb3VibGUoaW50IGNvbCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50IGdldENvbHVtbkludChpbnQgY29sKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBpbnQ2NF90IGdldENvbHVtbkludDY0KGludCBjb2wpOwotICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBnZXRDb2x1bW5CbG9iQXNTdHJpbmcoaW50IGNvbCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBnZXRDb2x1bW5CbG9iQXNWZWN0b3IoaW50IGNvbCwgVmVjdG9yPGNoYXI+
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRDb2x1bW5CbG9iQXNWZWN0b3IoaW50IGNv
bCwgVmVjdG9yPHVpbnQ4X3Q+Jik7CisgICAgU3RyaW5nIGNvbHVtbk5hbWUoaW50IGNvbCk7Cisg
ICAgU1FMVmFsdWUgY29sdW1uVmFsdWUoaW50IGNvbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGNvbHVtblRleHQoaW50IGNvbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZG91YmxlIGNvbHVt
bkRvdWJsZShpbnQgY29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY29sdW1uSW50KGludCBj
b2wpOworICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3QgY29sdW1uSW50NjQoaW50IGNvbCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbHVtbkJsb2JBc1N0cmluZyhpbnQgY29sKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29sdW1uQmxvYihpbnQgY29sKTsKIAog
ICAgIFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2U7IH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1l
bnVEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIu
Y3BwCmluZGV4IGIwNDBkODZiYmVkZjBkMjQ2ZmNhYWEzNzdhNTNmOTFkODYwNWRiNDcuLjRjYjQ4
ZjQ4MDM3ZjBjMTYxMjk4MWUxYjM3MzE4OTAzODgxZmQxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcApAQCAtMTE3LDcgKzExNyw3
IEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51REI6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJp
bmcmIG5hbWUsIFZlY3RvcjxSZWNlbnRTZWFyCiAgICAgbV9sb2FkU2VhcmNoVGVybXNGb3JOYW1l
U3RhdGVtZW50LT5iaW5kVGV4dCgxLCBuYW1lKTsKICAgICB3aGlsZSAobV9sb2FkU2VhcmNoVGVy
bXNGb3JOYW1lU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewogICAgICAgICAvLyBX
ZSBhcmUgY2hvb3Npbmcgbm90IHRvIHVzZSBvciBzdG9yZSBzZWFyY2ggdGltZXMgb24gV2luZG93
cyBhdCB0aGlzIHRpbWUsIHNvIGZvciBub3cgaXQncyBPSyB0byB1c2UgYSAiZGlzdGFudCBwYXN0
IiB0aW1lIGFzIGEgcGxhY2Vob2xkZXIuCi0gICAgICAgIHNlYXJjaGVzLmFwcGVuZCh7IG1fbG9h
ZFNlYXJjaFRlcm1zRm9yTmFtZVN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgwKSwgLVdhbGxUaW1l
OjppbmZpbml0eSgpIH0pOworICAgICAgICBzZWFyY2hlcy5hcHBlbmQoeyBtX2xvYWRTZWFyY2hU
ZXJtc0Zvck5hbWVTdGF0ZW1lbnQtPmNvbHVtblRleHQoMCksIC1XYWxsVGltZTo6aW5maW5pdHko
KSB9KTsKICAgICB9CiAgICAgbV9sb2FkU2VhcmNoVGVybXNGb3JOYW1lU3RhdGVtZW50LT5yZXNl
dCgpOwogfQpAQCAtMTQ4LDcgKzE0OCw3IEBAIGJvb2wgU2VhcmNoUG9wdXBNZW51REI6OmNoZWNr
RGF0YWJhc2VWYWxpZGl0eSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBT
dHJpbmcgcmVzdWx0VGV4dCA9IGludGVncml0eS0+Z2V0Q29sdW1uVGV4dCgwKTsKKyAgICBTdHJp
bmcgcmVzdWx0VGV4dCA9IGludGVncml0eS0+Y29sdW1uVGV4dCgwKTsKIAogICAgIGlmIChyZXN1
bHRUZXh0ICE9ICJvayIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJTZWFyY2ggYXV0b3NhdmUgZGF0
YWJhc2UgaW50ZWdyaXR5IGNoZWNrIGZhaWxlZCAtICVzIiwgcmVzdWx0VGV4dC5hc2NpaSgpLmRh
dGEoKSk7CkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVEQjo6Y2xvc2VE
YXRhYmFzZSgpCiB2b2lkIFNlYXJjaFBvcHVwTWVudURCOjp2ZXJpZnlTY2hlbWFWZXJzaW9uKCkK
IHsKICAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiUFJB
R01BIHVzZXJfdmVyc2lvbiJfcyk7Ci0gICAgaW50IHZlcnNpb24gPSBzdGF0ZW1lbnQgPyBzdGF0
ZW1lbnQtPmdldENvbHVtbkludCgwKSA6IDA7CisgICAgaW50IHZlcnNpb24gPSBzdGF0ZW1lbnQg
PyBzdGF0ZW1lbnQtPmNvbHVtbkludCgwKSA6IDA7CiAgICAgaWYgKHZlcnNpb24gPT0gc2NoZW1h
VmVyc2lvbikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmlu
ZGV4IGVkZjhlYTJkMDQyYmRjODkwYWQyZWEzZjk3YzYyODdlZDFhOWU5Y2UuLjVmYTkxMWZiMmMw
MmZkMjg1OGU3N2Q2ZmY3NzY3OTBkZGFiODJkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2Uu
Y3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjplbnN1
cmVWYWxpZFJlY29yZHNUYWJsZSgpCiAgICAgICAgIGlmIChzcWxpdGVSZXN1bHQgIT0gU1FMSVRF
X1JPVykKICAgICAgICAgICAgIHJldHVybiAiRXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBm
ZXRjaCBzY2hlbWEgZm9yIHRoZSBSZWNvcmRzIHRhYmxlLiI7CiAKLSAgICAgICAgY3VycmVudFNj
aGVtYSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgxKTsKKyAgICAgICAgY3VycmVudFNjaGVt
YSA9IHN0YXRlbWVudC0+Y29sdW1uVGV4dCgxKTsKICAgICB9CiAKICAgICBBU1NFUlQoIWN1cnJl
bnRTY2hlbWEuaXNFbXB0eSgpKTsKQEAgLTUwNCwxOCArNTA0LDE3IEBAIFN0cmluZyBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAKICAgICBmb3IgKDsgcmVzdWx0ID09IFNR
TElURV9ST1c7IHJlc3VsdCA9IHNxbC0+c3RlcCgpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNl
cnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogSW1wb3J0
aW5nIGEgcmVnaXN0cmF0aW9uIGZyb20gdGhlIGRhdGFiYXNlIik7Ci0gICAgICAgIGF1dG8ga2V5
ID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFiYXNlS2V5KHNxbC0+Z2V0
Q29sdW1uVGV4dCgwKSk7Ci0gICAgICAgIGF1dG8gb3JpZ2luVVJMID0gVVJMIHsgVVJMKCksIHNx
bC0+Z2V0Q29sdW1uVGV4dCgxKSB9OwotICAgICAgICBhdXRvIHNjb3BlUGF0aCA9IHNxbC0+Z2V0
Q29sdW1uVGV4dCgyKTsKKyAgICAgICAgYXV0byBrZXkgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5Ojpmcm9tRGF0YWJhc2VLZXkoc3FsLT5jb2x1bW5UZXh0KDApKTsKKyAgICAgICAgYXV0
byBvcmlnaW5VUkwgPSBVUkwgeyBVUkwoKSwgc3FsLT5jb2x1bW5UZXh0KDEpIH07CisgICAgICAg
IGF1dG8gc2NvcGVQYXRoID0gc3FsLT5jb2x1bW5UZXh0KDIpOwogICAgICAgICBhdXRvIHNjb3Bl
VVJMID0gVVJMIHsgb3JpZ2luVVJMLCBzY29wZVBhdGggfTsKLSAgICAgICAgYXV0byB0b3BPcmln
aW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoc3FsLT5nZXRD
b2x1bW5UZXh0KDMpKTsKLSAgICAgICAgYXV0byBsYXN0VXBkYXRlQ2hlY2tUaW1lID0gV2FsbFRp
bWU6OmZyb21SYXdTZWNvbmRzKHNxbC0+Z2V0Q29sdW1uRG91YmxlKDQpKTsKLSAgICAgICAgYXV0
byB1cGRhdGVWaWFDYWNoZSA9IHN0cmluZ1RvVXBkYXRlVmlhQ2FjaGUoc3FsLT5nZXRDb2x1bW5U
ZXh0KDUpKTsKLSAgICAgICAgYXV0byBzY3JpcHRVUkwgPSBVUkwgeyBVUkwoKSwgc3FsLT5nZXRD
b2x1bW5UZXh0KDYpIH07Ci0gICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmluZ1RvV29ya2Vy
VHlwZShzcWwtPmdldENvbHVtblRleHQoNykpOwotCi0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBj
b250ZW50U2VjdXJpdHlQb2xpY3lEYXRhOwotICAgICAgICBzcWwtPmdldENvbHVtbkJsb2JBc1Zl
Y3Rvcig4LCBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhKTsKKyAgICAgICAgYXV0byB0b3BPcmln
aW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoc3FsLT5jb2x1
bW5UZXh0KDMpKTsKKyAgICAgICAgYXV0byBsYXN0VXBkYXRlQ2hlY2tUaW1lID0gV2FsbFRpbWU6
OmZyb21SYXdTZWNvbmRzKHNxbC0+Y29sdW1uRG91YmxlKDQpKTsKKyAgICAgICAgYXV0byB1cGRh
dGVWaWFDYWNoZSA9IHN0cmluZ1RvVXBkYXRlVmlhQ2FjaGUoc3FsLT5jb2x1bW5UZXh0KDUpKTsK
KyAgICAgICAgYXV0byBzY3JpcHRVUkwgPSBVUkwgeyBVUkwoKSwgc3FsLT5jb2x1bW5UZXh0KDYp
IH07CisgICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmluZ1RvV29ya2VyVHlwZShzcWwtPmNv
bHVtblRleHQoNykpOworCisgICAgICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSA9
IHNxbC0+Y29sdW1uQmxvYig4KTsKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBj
c3BEZWNvZGVyKGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEuZGF0YSgpLCBjb250ZW50U2VjdXJp
dHlQb2xpY3lEYXRhLnNpemUoKSk7CiAgICAgICAgIE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycz4gY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgICAgICBpZiAo
Y29udGVudFNlY3VyaXR5UG9saWN5RGF0YS5zaXplKCkpIHsKQEAgLTUyNiwxMCArNTI1LDkgQEAg
U3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gcmVmZXJyZXJQb2xpY3kgPSBzcWwtPmdldENv
bHVtblRleHQoOSk7CisgICAgICAgIGF1dG8gcmVmZXJyZXJQb2xpY3kgPSBzcWwtPmNvbHVtblRl
eHQoOSk7CiAKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNjcmlwdFJlc291cmNlTWFwRGF0YTsK
LSAgICAgICAgc3FsLT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMTAsIHNjcmlwdFJlc291cmNlTWFw
RGF0YSk7CisgICAgICAgIGF1dG8gc2NyaXB0UmVzb3VyY2VNYXBEYXRhID0gc3FsLT5jb2x1bW5C
bG9iKDEwKTsKICAgICAgICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFwOwogCiAgICAgICAgIFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyKHNjcmlwdFJlc291cmNlTWFw
RGF0YS5kYXRhKCksIHNjcmlwdFJlc291cmNlTWFwRGF0YS5zaXplKCkpOwpAQCAtNTQzLDggKzU0
MSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAg
ICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcCA9IHBvcHVsYXRlU2NyaXB0U291cmNlc0Zyb21EaXNr
KHNjcmlwdFN0b3JhZ2UoKSwgKmtleSwgV1RGTW92ZSgqc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0
U2NyaXB0cykpOwogICAgICAgICB9CiAKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNlcnRpZmlj
YXRlSW5mb0RhdGE7Ci0gICAgICAgIHNxbC0+Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDExLCBjZXJ0
aWZpY2F0ZUluZm9EYXRhKTsKKyAgICAgICAgYXV0byBjZXJ0aWZpY2F0ZUluZm9EYXRhID0gc3Fs
LT5jb2x1bW5CbG9iKDExKTsKICAgICAgICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0
aWZpY2F0ZUluZm87CiAKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBjZXJ0aWZp
Y2F0ZUluZm9EZWNvZGVyKGNlcnRpZmljYXRlSW5mb0RhdGEuZGF0YSgpLCBjZXJ0aWZpY2F0ZUlu
Zm9EYXRhLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCA4Mjg3MWNlNDhjODNiZjU2ZjIzYzIwYTRmNGMyMDhj
ZTBmNTcxZDM1Li4zOTZmNWM3NzUyMmQ1MmU3YTUxMDJiZjJlYzY5MzMwYTFlMjM3ZWM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAKQEAgLTQ1NSw3ICs0NTUsNyBAQCBUYWJsZUFuZEluZGV4UGFpciBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaQogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIAotICAgIFN0cmluZyBjcmVhdGVUYWJsZVF1ZXJ5ID0gZ2V0VGFi
bGVTdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCk7CisgICAgU3RyaW5nIGNyZWF0ZVRhYmxlUXVl
cnkgPSBnZXRUYWJsZVN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKTsKIAogICAgIGF1dG8gZ2V0SW5k
ZXhTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCBzcWwgRlJP
TSBzcWxpdGVfbWFzdGVyIFdIRVJFIHRibF9uYW1lPT8gQU5EIHR5cGUgPSAnaW5kZXgnIl9zKTsK
ICAgICBpZiAoIWdldEluZGV4U3RhdGVtZW50KSB7CkBAIC00NzIsNyArNDcyLDcgQEAgVGFibGVB
bmRJbmRleFBhaXIgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRU
YWJsZUFuZEluZGV4UXVlcmkKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gaW5kZXg7CiAgICAgaWYg
KGdldEluZGV4U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBhdXRv
IHJhd0luZGV4ID0gU3RyaW5nKGdldEluZGV4U3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDApKTsK
KyAgICAgICAgYXV0byByYXdJbmRleCA9IFN0cmluZyhnZXRJbmRleFN0YXRlbWVudC0+Y29sdW1u
VGV4dCgwKSk7CiAgICAgICAgIGlmICghcmF3SW5kZXguaXNFbXB0eSgpKQogICAgICAgICAgICAg
aW5kZXggPSByYXdJbmRleDsKICAgICB9CkBAIC01MDUsNyArNTA1LDcgQEAgYm9vbCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlzc2luZ1VuaXF1ZUluZGljZXMoKQogICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIGlmIChzdGF0ZW1lbnQtPmdldENvbHVtbklu
dCgwKSA8IGV4cGVjdGVkSW5kZXhDb3VudCkKKyAgICBpZiAoc3RhdGVtZW50LT5jb2x1bW5JbnQo
MCkgPCBleHBlY3RlZEluZGV4Q291bnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNjE2LDcgKzYxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb2x1bW5zRm9yVGFibGUoY29uc3QgU3RyaW5nCiAK
ICAgICBWZWN0b3I8U3RyaW5nPiBjb2x1bW5zOwogICAgIHdoaWxlIChzdGF0ZW1lbnQtPnN0ZXAo
KSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGF1dG8gbmFtZSA9IHN0YXRlbWVudC0+Z2V0Q29s
dW1uVGV4dCgxKTsKKyAgICAgICAgYXV0byBuYW1lID0gc3RhdGVtZW50LT5jb2x1bW5UZXh0KDEp
OwogICAgICAgICBjb2x1bW5zLmFwcGVuZChuYW1lKTsKICAgICB9CiAKQEAgLTczNyw3ICs3Mzcs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuQW5kVXBk
YXRlU2NoZW1hSWZOZWNlc3NhcnkoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgY3VycmVudFNjaGVtYSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgxKTsKKyAg
ICAgICAgY3VycmVudFNjaGVtYSA9IHN0YXRlbWVudC0+Y29sdW1uVGV4dCgxKTsKICAgICB9CiAK
ICAgICBBU1NFUlQoIWN1cnJlbnRTY2hlbWEuaXNFbXB0eSgpKTsKQEAgLTc4OSw3ICs3ODksNyBA
QCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc0VtcHR5KCkgY29u
c3QKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9Ci0gICAgcmV0dXJuICFzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKKyAg
ICByZXR1cm4gIXNjb3BlZFN0YXRlbWVudC0+Y29sdW1uSW50KDApOwogfQogCiBib29sIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVVbmlxdWVJbmRpY2VzKCkKQEAg
LTEwMDcsNyArMTAwNyw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OnJlbGF0aW9uc2hpcEV4aXN0cyhTUUxpdGVTdGF0ZW1lbnRBdXRvCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVy
biAhIXN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOworICAgIHJldHVybiAhIXN0YXRlbWVudC0+
Y29sdW1uSW50KDApOwogfQogCiBPcHRpb25hbDx1bnNpZ25lZD4gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklEKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21h
aW4pIGNvbnN0CkBAIC0xMDI0LDcgKzEwMjQsNyBAQCBPcHRpb25hbDx1bnNpZ25lZD4gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklEKGNvbnN0IFJlZ2lzdHJhYgog
ICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHNjb3BlZFN0YXRlbWVudC0+Z2V0Q29s
dW1uSW50KDApOworICAgIHJldHVybiBzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkludCgwKTsKIH0K
IAogU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVBbmRN
YWtlRG9tYWluTGlzdChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluTGlz
dCkKQEAgLTExMTksMTQgKzExMTksMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6bWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiBjdXJyZW4KIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gY3VycmVudFJlZ2lzdHJh
YmxlRG9tYWluID0gY3VycmVudC0+Z2V0Q29sdW1uVGV4dChSZWdpc3RyYWJsZURvbWFpbkluZGV4
KTsKLSAgICBhdXRvIGN1cnJlbnRMYXN0U2VlbiA9IGN1cnJlbnQtPmdldENvbHVtbkRvdWJsZShM
YXN0U2VlbkluZGV4KTsKLSAgICBhdXRvIGN1cnJlbnRNb3N0UmVjZW50VXNlckludGVyYWN0aW9u
ID0gY3VycmVudC0+Z2V0Q29sdW1uRG91YmxlKE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1l
SW5kZXgpOwotICAgIGJvb2wgY3VycmVudEdyYW5kZmF0aGVyZWQgPSBjdXJyZW50LT5nZXRDb2x1
bW5JbnQoR3JhbmRmYXRoZXJlZEluZGV4KTsKLSAgICBib29sIGN1cnJlbnRJc1ByZXZhbGVudCA9
IGN1cnJlbnQtPmdldENvbHVtbkludChJc1ByZXZhbGVudEluZGV4KTsKLSAgICBib29sIGN1cnJl
bnRJc1ZlcnlQcmV2YWxlbnQgPSBjdXJyZW50LT5nZXRDb2x1bW5JbnQoSXNWZXJ5UHJldmFsZW50
SW5kZXgpOwotICAgIHVuc2lnbmVkIGN1cnJlbnREYXRhUmVjb3Jkc1JlbW92ZWQgPSBjdXJyZW50
LT5nZXRDb2x1bW5JbnQoRGF0YVJlY29yZHNSZW1vdmVkSW5kZXgpOwotICAgIGJvb2wgY3VycmVu
dElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwgPSBjdXJyZW50LT5nZXRDb2x1
bW5JbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4KTsKKyAgICBh
dXRvIGN1cnJlbnRSZWdpc3RyYWJsZURvbWFpbiA9IGN1cnJlbnQtPmNvbHVtblRleHQoUmVnaXN0
cmFibGVEb21haW5JbmRleCk7CisgICAgYXV0byBjdXJyZW50TGFzdFNlZW4gPSBjdXJyZW50LT5j
b2x1bW5Eb3VibGUoTGFzdFNlZW5JbmRleCk7CisgICAgYXV0byBjdXJyZW50TW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvbiA9IGN1cnJlbnQtPmNvbHVtbkRvdWJsZShNb3N0UmVjZW50VXNlckludGVy
YWN0aW9uVGltZUluZGV4KTsKKyAgICBib29sIGN1cnJlbnRHcmFuZGZhdGhlcmVkID0gY3VycmVu
dC0+Y29sdW1uSW50KEdyYW5kZmF0aGVyZWRJbmRleCk7CisgICAgYm9vbCBjdXJyZW50SXNQcmV2
YWxlbnQgPSBjdXJyZW50LT5jb2x1bW5JbnQoSXNQcmV2YWxlbnRJbmRleCk7CisgICAgYm9vbCBj
dXJyZW50SXNWZXJ5UHJldmFsZW50ID0gY3VycmVudC0+Y29sdW1uSW50KElzVmVyeVByZXZhbGVu
dEluZGV4KTsKKyAgICB1bnNpZ25lZCBjdXJyZW50RGF0YVJlY29yZHNSZW1vdmVkID0gY3VycmVu
dC0+Y29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4KTsKKyAgICBib29sIGN1cnJlbnRJ
c1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsID0gY3VycmVudC0+Y29sdW1uSW50
KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxJbmRleCk7CiAKICAgICBBU1NF
UlQoY3VycmVudFJlZ2lzdHJhYmxlRG9tYWluID09IG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluLnN0
cmluZygpKTsKIApAQCAtMTIyMiw3ICsxMjIyLDcgQEAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IFJlc28K
ICAgICB9CiAgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQ
YXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNG
aXJzdFBhcnR5RG9tYWluczsKICAgICB3aGlsZSAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0g
U1FMSVRFX1JPVykgewotICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWlu
ID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFp
blN0cmluZyhnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQobV9nZXRBbGxTdWJTdGF0aXN0aWNz
U3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkpKTsKKyAgICAgICAgUmVnaXN0cmFibGVEb21haW4g
Zmlyc3RQYXJ0eURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
UmVnaXN0cmFibGVEb21haW5TdHJpbmcoZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKG1fZ2V0
QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC0+Y29sdW1uSW50KDApKSk7CiAgICAgICAgIHRoaXJk
UGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucy5hcHBlbmRJZk5vdENvbnRhaW5z
KFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZp
Y0ZpcnN0UGFydHkgeyBmaXJzdFBhcnR5RG9tYWluLCBoYXNTdG9yYWdlQWNjZXNzKGZpcnN0UGFy
dHlEb21haW4sIHRoaXJkUGFydHlEb21haW4pLCBnZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0
YW1wKHRoaXJkUGFydHlEb21haW4sIGZpcnN0UGFydHlEb21haW4pIH0pOwogICAgIH0KICAgICBy
ZXR1cm4gdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zOwpAQCAtMTI0
OCw4ICsxMjQ4LDggQEAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhp
cmRQYXJ0eURhdGE+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXQKICAgICAgICAgcmV0dXJuIHRo
aXJkUGFydHlEYXRhTGlzdDsKICAgICB9CiAgICAgd2hpbGUgKHNvcnRlZFN0YXRpc3RpY3MtPnN0
ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGlmIChoYXNCZWVuVGhpcmRQYXJ0eShzb3J0
ZWRTdGF0aXN0aWNzLT5nZXRDb2x1bW5JbnQoMSkpKSB7Ci0gICAgICAgICAgICBhdXRvIHRoaXJk
UGFydHlEb21haW5JRCA9IHNvcnRlZFN0YXRpc3RpY3MtPmdldENvbHVtbkludCgwKTsKKyAgICAg
ICAgaWYgKGhhc0JlZW5UaGlyZFBhcnR5KHNvcnRlZFN0YXRpc3RpY3MtPmNvbHVtbkludCgxKSkp
IHsKKyAgICAgICAgICAgIGF1dG8gdGhpcmRQYXJ0eURvbWFpbklEID0gc29ydGVkU3RhdGlzdGlj
cy0+Y29sdW1uSW50KDApOwogICAgICAgICAgICAgYXV0byB0aGlyZFBhcnR5RG9tYWluID0gUmVn
aXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmlu
ZyhnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQodGhpcmRQYXJ0eURvbWFpbklEKSk7CiAgICAg
ICAgICAgICB0aGlyZFBhcnR5RGF0YUxpc3QuYXBwZW5kKFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6VGhpcmRQYXJ0eURhdGEgeyB0aGlyZFBhcnR5RG9tYWluLCBnZXRUaGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModGhpcmRQYXJ0eURvbWFpbklELCB0aGly
ZFBhcnR5RG9tYWluKSB9KTsKICAgICAgICAgfQpAQCAtMTMwMiw3ICsxMzAyLDcgQEAgdW5zaWdu
ZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5RmluZE5v
blByZXZhbGVudERvbWFpbnMKICAgICB9CiAgICAgCiAgICAgd2hpbGUgKGZpbmRTdWJyZXNvdXJj
ZXMtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGludCBuZXdEb21haW5JRCA9IGZp
bmRTdWJyZXNvdXJjZXMtPmdldENvbHVtbkludCgwKTsKKyAgICAgICAgaW50IG5ld0RvbWFpbklE
ID0gZmluZFN1YnJlc291cmNlcy0+Y29sdW1uSW50KDApOwogICAgICAgICBhdXRvIGluc2VydFJl
c3VsdCA9IG5vblByZXZhbGVudFJlZGlyZWN0aW9uU291cmNlcy5pbnNlcnQobmV3RG9tYWluSUQp
OwogICAgICAgICBpZiAoaW5zZXJ0UmVzdWx0LnNlY29uZCkKICAgICAgICAgICAgIG5ld2x5SWRl
bnRpZmllZERvbWFpbnMuaW5zZXJ0KG5ld0RvbWFpbklEKTsKQEAgLTEzMTcsNyArMTMxNyw3IEBA
IHVuc2lnbmVkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWN1cnNpdmVs
eUZpbmROb25QcmV2YWxlbnREb21haW5zCiAgICAgfQogICAgIAogICAgIHdoaWxlIChmaW5kVG9w
RnJhbWVzLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBpbnQgbmV3RG9tYWluSUQg
PSBmaW5kVG9wRnJhbWVzLT5nZXRDb2x1bW5JbnQoMCk7CisgICAgICAgIGludCBuZXdEb21haW5J
RCA9IGZpbmRUb3BGcmFtZXMtPmNvbHVtbkludCgwKTsKICAgICAgICAgYXV0byBpbnNlcnRSZXN1
bHQgPSBub25QcmV2YWxlbnRSZWRpcmVjdGlvblNvdXJjZXMuaW5zZXJ0KG5ld0RvbWFpbklEKTsK
ICAgICAgICAgaWYgKGluc2VydFJlc3VsdC5zZWNvbmQpCiAgICAgICAgICAgICBuZXdseUlkZW50
aWZpZWREb21haW5zLmluc2VydChuZXdEb21haW5JRCk7CkBAIC0xMzUyLDEzICsxMzUyLDEzIEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBc1ByZXZhbGVu
dElmSGFzUmVkaXJlY3RlZFRvUHJldmFsCiAgICAgYXV0byBzdWJyZXNvdXJjZVJlZGlyZWN0U3Rh
dGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgRElTVElOQ1QgU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5zdWJyZXNvdXJjZURvbWFpbklEIEZST00gU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBKT0lOIE9ic2VydmVkRG9tYWlucyBPTiBPYnNlcnZlZERv
bWFpbnMuZG9tYWluSUQgPSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLnRvRG9tYWluSUQg
QU5EIE9ic2VydmVkRG9tYWlucy5pc1ByZXZhbGVudCA9IDEiX3MpOwogICAgIGlmIChzdWJyZXNv
dXJjZVJlZGlyZWN0U3RhdGVtZW50KSB7CiAgICAgICAgIHdoaWxlIChzdWJyZXNvdXJjZVJlZGly
ZWN0U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgICAgIHByZXZhbGVu
dER1ZVRvUmVkaXJlY3QuaW5zZXJ0KHN1YnJlc291cmNlUmVkaXJlY3RTdGF0ZW1lbnQtPmdldENv
bHVtbkludCgwKSk7CisgICAgICAgICAgICBwcmV2YWxlbnREdWVUb1JlZGlyZWN0Lmluc2VydChz
dWJyZXNvdXJjZVJlZGlyZWN0U3RhdGVtZW50LT5jb2x1bW5JbnQoMCkpOwogICAgIH0KIAogICAg
IGF1dG8gdG9wRnJhbWVSZWRpcmVjdFN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRl
bWVudCgiU0VMRUNUIERJU1RJTkNUIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8uc291cmNlRG9t
YWluSUQgRlJPTSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIEpPSU4gT2JzZXJ2ZWREb21haW5z
IE9OIE9ic2VydmVkRG9tYWlucy5kb21haW5JRCA9IFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8u
dG9Eb21haW5JRCBBTkQgT2JzZXJ2ZWREb21haW5zLmlzUHJldmFsZW50ID0gMSJfcyk7CiAgICAg
aWYgKHRvcEZyYW1lUmVkaXJlY3RTdGF0ZW1lbnQpIHsKICAgICAgICAgd2hpbGUgKHRvcEZyYW1l
UmVkaXJlY3RTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICAgICAgcHJl
dmFsZW50RHVlVG9SZWRpcmVjdC5pbnNlcnQodG9wRnJhbWVSZWRpcmVjdFN0YXRlbWVudC0+Z2V0
Q29sdW1uSW50KDApKTsKKyAgICAgICAgICAgIHByZXZhbGVudER1ZVRvUmVkaXJlY3QuaW5zZXJ0
KHRvcEZyYW1lUmVkaXJlY3RTdGF0ZW1lbnQtPmNvbHVtbkludCgwKSk7CiAgICAgfQogCiAgICAg
YXV0byBtYXJrUHJldmFsZW50U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50
U2xvdyhtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBpc1ByZXZhbGVudCA9
IDEgV0hFUkUgZG9tYWluSUQgSU4gKCIsIGJ1aWxkTGlzdChXVEY6Okl0ZXJhdG9yUmFuZ2U8U3Rk
U2V0PHVuc2lnbmVkPjo6aXRlcmF0b3I+KHByZXZhbGVudER1ZVRvUmVkaXJlY3QuYmVnaW4oKSwg
cHJldmFsZW50RHVlVG9SZWRpcmVjdC5lbmQoKSkpLCAiKSIpKTsKQEAgLTEzNzYsOSArMTM3Niw5
IEBAIEhhc2hNYXA8dW5zaWduZWQsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpOb3RWZXJ5UHJldmFsZW50UmVzb3VyY2VzCiAgICAgYXV0byBub3RWZXJ5UHJldmFsZW50UmVz
b3VyY2VzU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgZG9t
YWluSUQsIHJlZ2lzdHJhYmxlRG9tYWluLCBpc1ByZXZhbGVudCBGUk9NIE9ic2VydmVkRG9tYWlu
cyBXSEVSRSBpc1ZlcnlQcmV2YWxlbnQgPSAwIl9zKTsKICAgICBpZiAobm90VmVyeVByZXZhbGVu
dFJlc291cmNlc1N0YXRlbWVudCkgewogICAgICAgICB3aGlsZSAobm90VmVyeVByZXZhbGVudFJl
c291cmNlc1N0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgICAgIHVu
c2lnbmVkIGtleSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub3RWZXJ5UHJldmFsZW50UmVzb3Vy
Y2VzU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkpOwotICAgICAgICAgICAgTm90VmVyeVByZXZh
bGVudFJlc291cmNlcyB2YWx1ZSh7IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVG
cm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcobm90VmVyeVByZXZhbGVudFJlc291cmNlc1N0YXRl
bWVudC0+Z2V0Q29sdW1uVGV4dCgxKSkKLSAgICAgICAgICAgICAgICAsIG5vdFZlcnlQcmV2YWxl
bnRSZXNvdXJjZXNTdGF0ZW1lbnQtPmdldENvbHVtbkludCgyKSA/IFJlc291cmNlTG9hZFByZXZh
bGVuY2U6OkhpZ2ggOiBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlOjpMb3cKKyAgICAgICAgICAgIHVu
c2lnbmVkIGtleSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub3RWZXJ5UHJldmFsZW50UmVzb3Vy
Y2VzU3RhdGVtZW50LT5jb2x1bW5JbnQoMCkpOworICAgICAgICAgICAgTm90VmVyeVByZXZhbGVu
dFJlc291cmNlcyB2YWx1ZSh7IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
UmVnaXN0cmFibGVEb21haW5TdHJpbmcobm90VmVyeVByZXZhbGVudFJlc291cmNlc1N0YXRlbWVu
dC0+Y29sdW1uVGV4dCgxKSkKKyAgICAgICAgICAgICAgICAsIG5vdFZlcnlQcmV2YWxlbnRSZXNv
dXJjZXNTdGF0ZW1lbnQtPmNvbHVtbkludCgyKSA/IFJlc291cmNlTG9hZFByZXZhbGVuY2U6Okhp
Z2ggOiBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlOjpMb3cKICAgICAgICAgICAgICAgICAsIDAsIDAs
IDAsIDAgfSk7CiAgICAgICAgICAgICByZXN1bHRzLmFkZChrZXksIHZhbHVlKTsKICAgICAgICAg
fQpAQCAtMTM5Niw0MCArMTM5Niw0MCBAQCBIYXNoTWFwPHVuc2lnbmVkLCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Tm90VmVyeVByZXZhbGVudFJlc291cmNlcwogICAgIGF1
dG8gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudCA9IG1fZGF0YWJhc2Uu
cHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiU0VMRUNUIHN1YnJlc291cmNlRG9tYWlu
SUQsIENPVU5UKHRvcEZyYW1lRG9tYWluSUQpIEZST00gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
RG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEIElOICgiLCBkb21haW5JRHNPZkludGVy
ZXN0LCAiKSBHUk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklEIikpOwogICAgIGlmIChzdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50KSB7CiAgICAgICAgIHdoaWxlIChzdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JP
VykgewotICAgICAgICAgICAgdW5zaWduZWQgZG9tYWluSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50
KDApKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGRvbWFpbklEID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQtPmNvbHVtbkludCgw
KSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHJlc3VsdHMuZmluZChkb21haW5JRCk7CiAg
ICAgICAgICAgICBpZiAocmVzdWx0ICE9IHJlc3VsdHMuZW5kKCkpCi0gICAgICAgICAgICAgICAg
cmVzdWx0LT52YWx1ZS5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnQgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVu
dC0+Z2V0Q29sdW1uSW50KDEpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPnZhbHVlLnN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50LT5jb2x1bW5JbnQoMSkpOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgYXV0byBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
Q291bnRTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJp
bmcoIlNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklELCBDT1VOVCh0b0RvbWFpbklEKSBGUk9NIFN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCBJTiAo
IiwgZG9tYWluSURzT2ZJbnRlcmVzdCwgIikgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCIp
KTsKICAgICBpZiAoc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50KSB7
CiAgICAgICAgIHdoaWxlIChzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1l
bnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBkb21haW5J
RCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvQ291
bnRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBkb21h
aW5JRCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
Q291bnRTdGF0ZW1lbnQtPmNvbHVtbkludCgwKSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IHJlc3VsdHMuZmluZChkb21haW5JRCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IHJlc3Vs
dHMuZW5kKCkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LT52YWx1ZS5zdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvQ291bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMSkpOworICAgICAgICAg
ICAgICAgIHJlc3VsdC0+dmFsdWUuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudFN0
YXRlbWVudC0+Y29sdW1uSW50KDEpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGF1dG8gc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJTRUxFQ1Qgc3ViZnJhbWVEb21haW5JRCwgQ09V
TlQodG9wRnJhbWVEb21haW5JRCkgRlJPTSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdI
RVJFIHN1YmZyYW1lRG9tYWluSUQgSU4gKCIsIGRvbWFpbklEc09mSW50ZXJlc3QsICIpIEdST1VQ
IEJZIHN1YmZyYW1lRG9tYWluSUQiKSk7CiAgICAgaWYgKHN1YmZyYW1lVW5kZXJUb3BGcmFtZURv
bWFpbnNDb3VudFN0YXRlbWVudCkgewogICAgICAgICB3aGlsZSAoc3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWluc0NvdW50U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAg
ICAgICAgdW5zaWduZWQgZG9tYWluSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWluc0NvdW50U3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkpOworICAg
ICAgICAgICAgdW5zaWduZWQgZG9tYWluSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3ViZnJh
bWVVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50U3RhdGVtZW50LT5jb2x1bW5JbnQoMCkpOwogICAg
ICAgICAgICAgYXV0byByZXN1bHQgPSByZXN1bHRzLmZpbmQoZG9tYWluSUQpOwogICAgICAgICAg
ICAgaWYgKHJlc3VsdCAhPSByZXN1bHRzLmVuZCgpKQotICAgICAgICAgICAgICAgIHJlc3VsdC0+
dmFsdWUuc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudFN0YXRlbWVudC0+Z2V0Q29s
dW1uSW50KDEpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPnZhbHVlLnN1YmZyYW1lVW5kZXJU
b3BGcmFtZURvbWFpbnNDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdWJmcmFtZVVuZGVy
VG9wRnJhbWVEb21haW5zQ291bnRTdGF0ZW1lbnQtPmNvbHVtbkludCgxKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBhdXRvIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudFN0YXRlbWVu
dCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiU0VMRUNUIHNv
dXJjZURvbWFpbklELCBDT1VOVCh0b0RvbWFpbklEKSBGUk9NIFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzVG8gV0hFUkUgc291cmNlRG9tYWluSUQgSU4gKCIsIGRvbWFpbklEc09mSW50ZXJlc3QsICIp
IEdST1VQIEJZIHNvdXJjZURvbWFpbklEIikpOwogICAgIGlmICh0b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvQ291bnRTdGF0ZW1lbnQpIHsKICAgICAgICAgd2hpbGUgKHRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzVG9Db3VudFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGRvbWFpbklEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzVG9Db3VudFN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGRvbWFpbklEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzVG9Db3VudFN0YXRlbWVudC0+Y29sdW1uSW50KDApKTsKICAgICAgICAgICAg
IGF1dG8gcmVzdWx0ID0gcmVzdWx0cy5maW5kKGRvbWFpbklEKTsKICAgICAgICAgICAgIGlmIChy
ZXN1bHQgIT0gcmVzdWx0cy5lbmQoKSkKLSAgICAgICAgICAgICAgICByZXN1bHQtPnZhbHVlLnRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0b3BG
cmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgxKSk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LT52YWx1ZS50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291
bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50
U3RhdGVtZW50LT5jb2x1bW5JbnQoMSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xODY0LDEx
ICsxODY0LDExIEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhh
c0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiA9ICEhc2NvcGVkU3RhdGVt
ZW50LT5nZXRDb2x1bW5JbnQoMCk7CisgICAgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24gPSAhIXNj
b3BlZFN0YXRlbWVudC0+Y29sdW1uSW50KDApOwogICAgIGlmICghaGFkVXNlckludGVyYWN0aW9u
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgV2FsbFRpbWUgbW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblRpbWUgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc2NvcGVkU3RhdGVt
ZW50LT5nZXRDb2x1bW5Eb3VibGUoMSkpOworICAgIFdhbGxUaW1lIG1vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHNjb3BlZFN0YXRlbWVudC0+
Y29sdW1uRG91YmxlKDEpKTsKIAogICAgIGlmIChoYXNTdGF0aXN0aWNzRXhwaXJlZChtb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uVGltZSwgb3BlcmF0aW5nRGF0ZXNXaW5kb3cpKSB7CiAgICAgICAg
IC8vIERyb3AgcHJpdmFjeSBzZW5zaXRpdmUgZGF0YSBiZWNhdXNlIHdlIG5vIGxvbmdlciBuZWVk
IGl0LgpAQCAtMTk0OCw3ICsxOTQ4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkgKICAgICAK
ICAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zOwogICAgIHdoaWxlIChzY29wZWRTdGF0ZW1lbnQt
PnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICBkb21haW5zLmFwcGVuZChzY29wZWRTdGF0
ZW1lbnQtPmdldENvbHVtblRleHQoMCkpOworICAgICAgICBkb21haW5zLmFwcGVuZChzY29wZWRT
dGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpOwogICAgIHN0ZDo6c29ydChkb21haW5zLmJlZ2luKCks
IGRvbWFpbnMuZW5kKCksIFdURjo6Y29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKTsKIAogICAgIFN0
cmluZ0J1aWxkZXIgcmVzdWx0OwpAQCAtMTk3Nyw3ICsxOTc3LDcgQEAgYm9vbCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJlZGljYXRlVmFsdWVGb3JEb21haW4oU1FMaXRl
U3RhdGVtZW4KICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25J
RCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZWRpY2F0ZVZh
bHVlRm9yRG9tYWluIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xP
R19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiAhIXByZWRpY2F0ZVN0YXRlbWVudC0+Z2V0Q29s
dW1uSW50KDApOworICAgIHJldHVybiAhIXByZWRpY2F0ZVN0YXRlbWVudC0+Y29sdW1uSW50KDAp
OwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc1ByZXZh
bGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0CkBAIC0y
MTE0LDcgKzIxMTQsNyBAQCBTZWNvbmRzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpnZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wKGNvbgogICAgIGlmIChzY29wZWRT
dGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKQogICAgICAgICByZXR1cm4gU2Vjb25kcyB7
IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5vRXhpc3RpbmdUaW1lc3RhbXAgIH07CiAKLSAgICBy
ZXR1cm4gU2Vjb25kcyB7IHNjb3BlZFN0YXRlbWVudC0+Z2V0Q29sdW1uRG91YmxlKDApIH07Cisg
ICAgcmV0dXJuIFNlY29uZHMgeyBzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgwKSB9Owog
fQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc0dyYW5kZmF0
aGVyZWQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKQEAgLTIyMTgsNyAr
MjIxOCw3IEBAIHN0ZDo6cGFpcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
QWRkZWRSZWNvcmQsIE9wdGlvbmFsPHVuc2lnbmVkPj4KICAgICAgICAgfQogCiAgICAgICAgIGlm
IChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBkb21haW5JRCA9IHNjb3BlZFN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOworICAg
ICAgICAgICAgdW5zaWduZWQgZG9tYWluSUQgPSBzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkludCgw
KTsKICAgICAgICAgICAgIHJldHVybiB7IEFkZGVkUmVjb3JkOjpObywgZG9tYWluSUQgfTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTIyNzEsNyArMjI3MSw3IEBAIFZlY3RvcjxSZWdpc3RyYWJsZURv
bWFpbj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFsbERvbWFpbnMoKSBj
b25zCiAKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnM7CiAgICAgd2hpbGUg
KHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIGRvbWFpbnMu
YXBwZW5kKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVE
b21haW5TdHJpbmcoc2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDApKSk7CisgICAgICAg
IGRvbWFpbnMuYXBwZW5kKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVn
aXN0cmFibGVEb21haW5TdHJpbmcoc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKSk7CiAg
ICAgcmV0dXJuIGRvbWFpbnM7CiB9CiAKQEAgLTIzMTMsOCArMjMxMyw4IEBAIENvb2tpZUFjY2Vz
cyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y29va2llQWNjZXNzKGNvbnN0
IFN1YlJlc291cmNlCiAgICAgfQogCiAgICAgYm9vbCBoYXNOb0VudHJ5ID0gc3RhdGVtZW50LT5z
dGVwKCkgIT0gU1FMSVRFX1JPVzsKLSAgICBib29sIGlzUHJldmFsZW50ID0gIWhhc05vRW50cnkg
JiYgISFzdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKLSAgICBib29sIGhhZFVzZXJJbnRlcmFj
dGlvbiA9ICFoYXNOb0VudHJ5ICYmIHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDEpID8gdHJ1ZSA6
IGZhbHNlOworICAgIGJvb2wgaXNQcmV2YWxlbnQgPSAhaGFzTm9FbnRyeSAmJiAhIXN0YXRlbWVu
dC0+Y29sdW1uSW50KDApOworICAgIGJvb2wgaGFkVXNlckludGVyYWN0aW9uID0gIWhhc05vRW50
cnkgJiYgc3RhdGVtZW50LT5jb2x1bW5JbnQoMSkgPyB0cnVlIDogZmFsc2U7CiAKICAgICBpZiAo
IWFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKHRvcEZyYW1lRG9tYWluKSAmJiAh
aXNQcmV2YWxlbnQpCiAgICAgICAgIHJldHVybiBDb29raWVBY2Nlc3M6OkJhc2VkT25Db29raWVQ
b2xpY3k7CkBAIC0yMzQ0LDcgKzIzNDQsNyBAQCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1VzZXJHcmFudGVkUwogICAg
ICAgICB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKQogICAgICAgICByZXR1cm4g
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObzsKIAotICAgIHJldHVybiAhIXN0YXRlbWVu
dC0+Z2V0Q29sdW1uSW50KDApID8gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMgOiBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vOworICAgIHJldHVybiAhIXN0YXRlbWVudC0+
Y29sdW1uSW50KDApID8gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMgOiBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vOwogfQogCiBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5zVG9CbG9ja0FuZERl
bGV0ZUNvb2tpZXNGb3IoKSBjb25zdApAQCAtMjM1Nyw3ICsyMzU3LDcgQEAgVmVjdG9yPFJlZ2lz
dHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWlu
c1RvQmxvY2tBbmQKICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgCiAgICAgd2hpbGUgKHN0
YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIHJlc3VsdHMuYXBwZW5kKFJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJp
bmcoc3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDApKSk7CisgICAgICAgIHJlc3VsdHMuYXBwZW5k
KFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5T
dHJpbmcoc3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKSk7CiAgICAgCiAgICAgcmV0dXJuIHJlc3Vs
dHM7CiB9CkBAIC0yMzcyLDcgKzIzNzIsNyBAQCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5zVG9CbG9ja0J1dAogICAg
ICAgICByZXR1cm4gcmVzdWx0czsKICAgICAKICAgICB3aGlsZSAoc3RhdGVtZW50LT5zdGVwKCkg
PT0gU1FMSVRFX1JPVykKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQoUmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhzdGF0ZW1lbnQtPmdl
dENvbHVtblRleHQoMCkpKTsKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQoUmVnaXN0cmFibGVEb21h
aW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhzdGF0ZW1lbnQt
PmNvbHVtblRleHQoMCkpKTsKIAogICAgIHJldHVybiByZXN1bHRzOwogfQpAQCAtMjM4Nyw3ICsy
Mzg3LDcgQEAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6ZG9tYWluc1dpdGhVc2VySW4KICAgICAgICAgcmV0dXJuIHJlc3VsdHM7
CiAgICAgCiAgICAgd2hpbGUgKHN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCi0gICAg
ICAgIHJlc3VsdHMuYXBwZW5kKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
UmVnaXN0cmFibGVEb21haW5TdHJpbmcoc3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDApKSk7Cisg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVG
cm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoc3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKSk7CiAK
ICAgICByZXR1cm4gcmVzdWx0czsKIH0KQEAgLTI0MDIsNyArMjQwMiw3IEBAIEhhc2hNYXA8VG9w
RnJhbWVEb21haW4sIFN1YlJlc291cmNlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6CiAgICAgICAgIHJldHVybiByZXN1bHRzOwogCiAgICAgd2hpbGUgKHN0YXRl
bWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIHJlc3VsdHMuYWRkKFJlZ2lzdHJh
YmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoc3Rh
dGVtZW50LT5nZXRDb2x1bW5UZXh0KDEpKSwgUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhzdGF0ZW1lbnQtPmdldENvbHVtblRleHQo
MCkpKTsKKyAgICAgICAgcmVzdWx0cy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhzdGF0ZW1lbnQtPmNvbHVtblRleHQoMSkp
LCBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWlu
U3RyaW5nKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSkpOwogCiAgICAgcmV0dXJuIHJlc3VsdHM7
CiB9CkBAIC0yNDUzLDEzICsyNDUzLDEzIEBAIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6RG9tYWluRGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhCiAgICAg
ICAgIHJldHVybiByZXN1bHRzOwogICAgIAogICAgIHdoaWxlIChzdGF0ZW1lbnQtPnN0ZXAoKSA9
PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIHJlc3VsdHMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApKQotICAgICAgICAgICAgLCBSZWdpc3Ry
YWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHN0
YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgxKSkKLSAgICAgICAgICAgICwgV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKHN0YXRlbWVudC0+Z2V0Q29sdW1uRG91YmxlKDIpKQotICAgICAgICAgICAgLCBz
dGF0ZW1lbnQtPmdldENvbHVtbkludCgzKSA/IHRydWUgOiBmYWxzZQotICAgICAgICAgICAgLCBz
dGF0ZW1lbnQtPmdldENvbHVtbkludCg0KSA/IHRydWUgOiBmYWxzZQotICAgICAgICAgICAgLCBz
dGF0ZW1lbnQtPmdldENvbHVtbkludCg1KSA/IHRydWUgOiBmYWxzZQotICAgICAgICAgICAgLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoNikpCisgICAgICAg
IHJlc3VsdHMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC0+Y29sdW1u
SW50KDApKQorICAgICAgICAgICAgLCBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgxKSkKKyAg
ICAgICAgICAgICwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRlbWVudC0+Y29sdW1uRG91
YmxlKDIpKQorICAgICAgICAgICAgLCBzdGF0ZW1lbnQtPmNvbHVtbkludCgzKSA/IHRydWUgOiBm
YWxzZQorICAgICAgICAgICAgLCBzdGF0ZW1lbnQtPmNvbHVtbkludCg0KSA/IHRydWUgOiBmYWxz
ZQorICAgICAgICAgICAgLCBzdGF0ZW1lbnQtPmNvbHVtbkludCg1KSA/IHRydWUgOiBmYWxzZQor
ICAgICAgICAgICAgLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LT5jb2x1bW5JbnQo
NikpCiAgICAgICAgIH0pOwogICAgIH0KICAgICAKQEAgLTI2MDksNyArMjYwOSw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVl
ZGVkKCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPnN0
ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICBjb3VudCA9IHNjb3BlZFN0YXRlbWVudC0+Z2V0
Q29sdW1uSW50KDApOworICAgICAgICBjb3VudCA9IHNjb3BlZFN0YXRlbWVudC0+Y29sdW1uSW50
KDApOwogCiAgICAgaWYgKGNvdW50IDw9IHBhcmFtZXRlcnMoKS5tYXhTdGF0aXN0aWNzRW50cmll
cykKICAgICAgICAgcmV0dXJuOwpAQCAtMjYyOCw3ICsyNjI4LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQoKQogCiAg
ICAgVmVjdG9yPHVuc2lnbmVkPiBlbnRyaWVzVG9QcnVuZTsKICAgICB3aGlsZSAocmVjb3Jkc1Rv
UHJ1bmUtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICBlbnRyaWVzVG9QcnVuZS5hcHBl
bmQocmVjb3Jkc1RvUHJ1bmUtPmdldENvbHVtbkludCgwKSk7CisgICAgICAgIGVudHJpZXNUb1By
dW5lLmFwcGVuZChyZWNvcmRzVG9QcnVuZS0+Y29sdW1uSW50KDApKTsKIAogICAgIGF1dG8gbGlz
dFRvUHJ1bmUgPSBidWlsZExpc3QoV1RGOjpJdGVyYXRvclJhbmdlPFZlY3Rvcjx1bnNpZ25lZD46
Oml0ZXJhdG9yPihlbnRyaWVzVG9QcnVuZS5iZWdpbigpLCBlbnRyaWVzVG9QcnVuZS5lbmQoKSkp
OwogCkBAIC0yNzQzLDcgKzI3NDMsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjppc0NvcnJlY3RTdWJTdGF0aXN0aWNzQ291bnQoY29uc3QgUmVnaQogICAgICAg
ICB8fCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLT5zdGVwKCkgIT0gU1FMSVRFX1JPVykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiAoc3ViRnJhbWVVbmRlclRv
cEZyYW1lQ291bnQtPmdldENvbHVtbkludCgwKSA9PSAxICYmIHN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZUNvdW50LT5nZXRDb2x1bW5JbnQoMCkgPT0gMSAmJiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvLT5nZXRDb2x1bW5JbnQoMCkgPT0gMSk7CisgICAgcmV0dXJuIChzdWJGcmFtZVVuZGVy
VG9wRnJhbWVDb3VudC0+Y29sdW1uSW50KDApID09IDEgJiYgc3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lQ291bnQtPmNvbHVtbkludCgwKSA9PSAxICYmIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG8tPmNvbHVtbkludCgwKSA9PSAxKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kQm9vbGVhbihT
dHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIGZsYWcpCkBA
IC0yNzc0LDcgKzI3NzQsNyBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRCh1bnNpZ25lZAogICAgIH0KICAgICAK
ICAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAg
cmVzdWx0ID0gbV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQtPmdldENvbHVtblRl
eHQoMCk7CisgICAgICAgIHJlc3VsdCA9IG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVt
ZW50LT5jb2x1bW5UZXh0KDApOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yODI1
LDExICsyODI1LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYKICAgICBidWlsZGVyLmFwcGVu
ZCh0YWJsZU5hbWUpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOlxuIik7CiAgICAgCi0g
ICAgYXV0byByZXN1bHQgPSBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoZGF0YS0+Z2V0Q29s
dW1uSW50KDApKTsKKyAgICBhdXRvIHJlc3VsdCA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5J
RChkYXRhLT5jb2x1bW5JbnQoMCkpOwogICAgIGFwcGVuZE5leHRFbnRyeShidWlsZGVyLCByZXN1
bHQpOwogICAgIAogICAgIHdoaWxlIChkYXRhLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAg
ICAgICByZXN1bHQgPSBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoZGF0YS0+Z2V0Q29sdW1u
SW50KDApKTsKKyAgICAgICAgcmVzdWx0ID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKGRh
dGEtPmNvbHVtbkludCgwKSk7CiAgICAgICAgIGFwcGVuZE5leHRFbnRyeShidWlsZGVyLCByZXN1
bHQpOwogICAgIH0KIH0KQEAgLTI4NTUsMTUgKzI4NTUsMTUgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZyhTdHJpbmdCdWlsZGVyJiBi
dWlsZGUKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICAKICAgICAvLyBVc2VyIGludGVy
YWN0aW9uCi0gICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIiwg
bV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmdldENvbHVtbkludChIYWRV
c2VySW50ZXJhY3Rpb25JbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImhhZFVz
ZXJJbnRlcmFjdGlvbiIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5j
b2x1bW5JbnQoSGFkVXNlckludGVyYWN0aW9uSW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgn
XG4nKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICBtb3N0UmVjZW50VXNlckludGVy
YWN0aW9uOiAiKTsKLSAgICBpZiAoaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFNlY29uZHMo
bV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmdldENvbHVtbkRvdWJsZShN
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4KSkpKQorICAgIGlmIChoYXNIYWRSZWNl
bnRVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyhtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0
YXRlbWVudC0+Y29sdW1uRG91YmxlKE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lSW5kZXgp
KSkpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgid2l0aGluIDI0IGhvdXJzIik7CiAg
ICAgZWxzZQogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi0xIik7CiAgICAgYnVpbGRl
ci5hcHBlbmQoJ1xuJyk7Ci0gICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJl
ZCIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQo
R3JhbmRmYXRoZXJlZEluZGV4KSk7CisgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRm
YXRoZXJlZCIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5J
bnQoR3JhbmRmYXRoZXJlZEluZGV4KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAKICAg
ICAvLyBTdG9yYWdlIGFjY2VzcwpAQCAtMjg3Niw3ICsyODc2LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZyhTdHJpbmdCdWlsZGVy
JiBidWlsZGUKICAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZUxp
bmtEZWNvcmF0aW9uc0Zyb20iLCBkb21haW4pOwogICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3Qo
YnVpbGRlciwgIlRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiLCBkb21haW4pOwogCi0g
ICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRh
UmVtb3ZhbCIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5nZXRDb2x1
bW5JbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4KSk7CisgICAg
YXBwZW5kQm9vbGVhbihidWlsZGVyLCAiSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbCIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQo
SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4KSk7CiAgICAgYnVpbGRl
ci5hcHBlbmQoJ1xuJyk7CiAKICAgICAvLyBTdWJmcmFtZSBzdGF0cwpAQCAtMjg4OCwxMSArMjg4
OCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJj
ZVRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZQogICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xp
c3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIsIGRvbWFpbik7CiAK
ICAgICAvLyBQcmV2YWxlbnQgUmVzb3VyY2UKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJp
c1ByZXZhbGVudFJlc291cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1l
bnQtPmdldENvbHVtbkludChJc1ByZXZhbGVudEluZGV4KSk7CisgICAgYXBwZW5kQm9vbGVhbihi
dWlsZGVyLCAiaXNQcmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5O
YW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSXNQcmV2YWxlbnRJbmRleCkpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKCdcbicpOwotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzVmVyeVByZXZhbGVu
dFJlc291cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmdldENv
bHVtbkludChJc1ZlcnlQcmV2YWxlbnRJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRl
ciwgImlzVmVyeVByZXZhbGVudFJlc291cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5h
bWVTdGF0ZW1lbnQtPmNvbHVtbkludChJc1ZlcnlQcmV2YWxlbnRJbmRleCkpOwogICAgIGJ1aWxk
ZXIuYXBwZW5kKCdcbicpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgZGF0YVJlY29yZHNSZW1v
dmVkOiAiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Z2V0Q29sdW1u
SW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4KSk7CisgICAgYnVpbGRlci5hcHBlbmQoIiAgICBk
YXRhUmVjb3Jkc1JlbW92ZWQ6ICIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVt
ZW50LT5jb2x1bW5JbnQoRGF0YVJlY29yZHNSZW1vdmVkSW5kZXgpKTsKICAgICBidWlsZGVyLmFw
cGVuZCgnXG4nKTsKIH0KIApAQCAtMjkzOCw3ICsyOTM4LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKGludCBkb21h
aW5JRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiBtX2xpbmtE
ZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkgfHwgbV9zY3JpcHRMb2Fk
RXhpc3RzU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkgfHwgbV9zdWJGcmFtZUV4aXN0c1N0YXRl
bWVudC0+Z2V0Q29sdW1uSW50KDApIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQtPmdl
dENvbHVtbkludCgwKSB8fCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50LT5nZXRDb2x1
bW5JbnQoMCkgfHwgbV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0ZW1lbnQtPmdldENvbHVtbklu
dCgwKTsKKyAgICByZXR1cm4gbV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudC0+Y29sdW1u
SW50KDApIHx8IG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudC0+Y29sdW1uSW50KDApIHx8IG1f
c3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQtPmNvbHVtbkludCgwKSB8fCBtX3N1YlJlc291cmNlRXhp
c3RzU3RhdGVtZW50LT5jb2x1bW5JbnQoMCkgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRl
bWVudC0+Y29sdW1uSW50KDApIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50LT5j
b2x1bW5JbnQoMCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFyYW1ldGVycygpCkBAIC0yOTUzLDE0ICsyOTUzLDE0
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJh
dGluZ0RhdGVzUGFyYW1ldGVycygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX29w
ZXJhdGluZ0RhdGVzU2l6ZSA9IGNvdW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQtPmdldENvbHVt
bkludCgwKTsKKyAgICBtX29wZXJhdGluZ0RhdGVzU2l6ZSA9IGNvdW50T3BlcmF0aW5nRGF0ZXNT
dGF0ZW1lbnQtPmNvbHVtbkludCgwKTsKIAogICAgIGlmICghZ2V0TW9zdFJlY2VudE9wZXJhdGlu
Z0RhdGVTdGF0ZW1lbnQgfHwgZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQtPnN0
ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Ojp1cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMgZ2V0Rmlyc3RPcGVyYXRpbmdEYXRlU3Rh
dGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJ
TkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX21vc3RSZWNlbnRPcGVy
YXRpbmdEYXRlID0gT3BlcmF0aW5nRGF0ZShnZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRl
bWVudC0+Z2V0Q29sdW1uSW50KDApLCBnZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVu
dC0+Z2V0Q29sdW1uSW50KDEpLCBnZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC0+
Z2V0Q29sdW1uSW50KDIpKTsKKyAgICBtX21vc3RSZWNlbnRPcGVyYXRpbmdEYXRlID0gT3BlcmF0
aW5nRGF0ZShnZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC0+Y29sdW1uSW50KDAp
LCBnZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpLCBnZXRN
b3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC0+Y29sdW1uSW50KDIpKTsKIAogICAgIGlm
ICghZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudCkgewogICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlT3BlcmF0aW5nRGF0ZXNQYXJhbWV0ZXJzIGdldE9wZXJh
dGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQgZmFpbGVkIGR1cmluZyB0aGUgY2FsbCB0byBwcmVwYXJl
KCkgd2l0aCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcgIi4iLCB0aGlzLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKQEAgLTI5NzcsNyArMjk3Nyw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFy
YW1ldGVycygpCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX3Nob3J0V2luZG93T3BlcmF0aW5nRGF0ZSA9
IE9wZXJhdGluZ0RhdGUoZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudC0+Z2V0Q29sdW1u
SW50KDApLCBnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMSks
IGdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQtPmdldENvbHVtbkludCgyKSk7CisgICAg
ICAgIG1fc2hvcnRXaW5kb3dPcGVyYXRpbmdEYXRlID0gT3BlcmF0aW5nRGF0ZShnZXRPcGVyYXRp
bmdEYXRlV2luZG93U3RhdGVtZW50LT5jb2x1bW5JbnQoMCksIGdldE9wZXJhdGluZ0RhdGVXaW5k
b3dTdGF0ZW1lbnQtPmNvbHVtbkludCgxKSwgZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVu
dC0+Y29sdW1uSW50KDIpKTsKICAgICB9CiAKICAgICBpZiAobV9vcGVyYXRpbmdEYXRlc1NpemUg
PD0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nIC0gMSkKQEAgLTI5OTAsNyArMjk5MCw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0Rh
dGVzUGFyYW1ldGVycygpCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX2xvbmdXaW5kb3dPcGVyYXRpbmdE
YXRlID0gT3BlcmF0aW5nRGF0ZShnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50LT5nZXRD
b2x1bW5JbnQoMCksIGdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQtPmdldENvbHVtbklu
dCgxKSwgZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDIpKTsK
KyAgICAgICAgbV9sb25nV2luZG93T3BlcmF0aW5nRGF0ZSA9IE9wZXJhdGluZ0RhdGUoZ2V0T3Bl
cmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudC0+Y29sdW1uSW50KDApLCBnZXRPcGVyYXRpbmdEYXRl
V2luZG93U3RhdGVtZW50LT5jb2x1bW5JbnQoMSksIGdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0
ZW1lbnQtPmNvbHVtbkludCgyKSk7CiAgICAgfQogfQogCkBAIC0zMTA2LDIxICszMTA2LDIxIEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydEV4cGlyZWRT
dGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0CiAKIFByaXZhdGVDbGlja01lYXN1cmVtZW50IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpidWlsZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RnJvbURhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCogc3RhdGVtZW50LCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpCiB7Ci0g
ICAgYXV0byBzb3VyY2VTaXRlRG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0
YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFp
biA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQtPmdldENvbHVtbkludCgx
KSk7Ci0gICAgYXV0byBzb3VyY2VJRCA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDIpOwotICAg
IGF1dG8gdGltZU9mQWRDbGljayA9IGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/IHN0YXRlbWVudC0+Z2V0Q29sdW1u
RG91YmxlKDUpIDogc3RhdGVtZW50LT5nZXRDb2x1bW5Eb3VibGUoMyk7Ci0gICAgYXV0byB0b2tl
biA9IGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
VHlwZTo6QXR0cmlidXRlZCA/IHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCg3KSA6IHN0YXRlbWVu
dC0+Z2V0Q29sdW1uVGV4dCg0KTsKLSAgICBhdXRvIHNpZ25hdHVyZSA9IGF0dHJpYnV0aW9uVHlw
ZSA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/
IHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCg4KSA6IHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCg1
KTsKLSAgICBhdXRvIGtleUlEID0gYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkID8gc3RhdGVtZW50LT5nZXRDb2x1bW5U
ZXh0KDkpIDogc3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDYpOworICAgIGF1dG8gc291cmNlU2l0
ZURvbWFpbiA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChzdGF0ZW1lbnQtPmNvbHVtbklu
dCgwKSk7CisgICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21haW4gPSBnZXREb21haW5TdHJpbmdG
cm9tRG9tYWluSUQoc3RhdGVtZW50LT5jb2x1bW5JbnQoMSkpOworICAgIGF1dG8gc291cmNlSUQg
PSBzdGF0ZW1lbnQtPmNvbHVtbkludCgyKTsKKyAgICBhdXRvIHRpbWVPZkFkQ2xpY2sgPSBhdHRy
aWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0
dHJpYnV0ZWQgPyBzdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSg1KSA6IHN0YXRlbWVudC0+Y29sdW1u
RG91YmxlKDMpOworICAgIGF1dG8gdG9rZW4gPSBhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQgPyBzdGF0ZW1lbnQtPmNv
bHVtblRleHQoNykgOiBzdGF0ZW1lbnQtPmNvbHVtblRleHQoNCk7CisgICAgYXV0byBzaWduYXR1
cmUgPSBhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blR5cGU6OkF0dHJpYnV0ZWQgPyBzdGF0ZW1lbnQtPmNvbHVtblRleHQoOCkgOiBzdGF0ZW1lbnQt
PmNvbHVtblRleHQoNSk7CisgICAgYXV0byBrZXlJRCA9IGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCA/IHN0YXRlbWVu
dC0+Y29sdW1uVGV4dCg5KSA6IHN0YXRlbWVudC0+Y29sdW1uVGV4dCg2KTsKIAogICAgIFByaXZh
dGVDbGlja01lYXN1cmVtZW50IGF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpTb3VyY2VJRChzb3VyY2VJRCksIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTb3VyY2VTaXRlKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVn
aXN0cmFibGVEb21haW5TdHJpbmcoc291cmNlU2l0ZURvbWFpbikpLCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUoUmVnaXN0cmFibGVE
b21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhkZXN0aW5h
dGlvblNpdGVEb21haW4pKSwgeyB9LCB7IH0sIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1l
T2ZBZENsaWNrKSk7CiAgICAgCiAgICAgaWYgKGF0dHJpYnV0aW9uVHlwZSA9PSBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkgewotICAgICAgICBhdXRv
IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBzdGF0ZW1lbnQtPmdldENvbHVtbkludCgzKTsKLSAg
ICAgICAgYXV0byBwcmlvcml0eSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDQpOwotICAgICAg
ICBhdXRvIHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZFZhbHVlID0gc3RhdGVtZW50LT5nZXRDb2x1
bW5Eb3VibGUoNik7Ci0gICAgICAgIGF1dG8gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmRW
YWx1ZSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uRG91YmxlKDEwKTsKKyAgICAgICAgYXV0byBhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoMyk7CisgICAgICAgIGF1
dG8gcHJpb3JpdHkgPSBzdGF0ZW1lbnQtPmNvbHVtbkludCg0KTsKKyAgICAgICAgYXV0byBzb3Vy
Y2VFYXJsaWVzdFRpbWVUb1NlbmRWYWx1ZSA9IHN0YXRlbWVudC0+Y29sdW1uRG91YmxlKDYpOwor
ICAgICAgICBhdXRvIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1l
bnQtPmNvbHVtbkRvdWJsZSgxMCk7CiAKICAgICAgICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEgIT0gLTEpCiAgICAgICAgICAgICBhdHRyaWJ1dGlvbi5zZXRBdHRyaWJ1dGlvbihXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSB7IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OlByaW9yaXR5KHByaW9yaXR5KSB9KTsKQEAgLTMzOTksMTcgKzMz
OTksMTcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJF
eHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKQogCiBTdHJpbmcgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmF0dHJpYnV0aW9uVG9TdHJpbmcoV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50KiBzdGF0ZW1lbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25U
eXBlIGF0dHJpYnV0aW9uVHlwZSkKIHsKLSAgICBhdXRvIHNvdXJjZVNpdGVEb21haW4gPSBnZXRE
b21haW5TdHJpbmdGcm9tRG9tYWluSUQoc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkpOwotICAg
IGF1dG8gZGVzdGluYXRpb25TaXRlRG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklE
KHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDEpKTsKLSAgICBhdXRvIHNvdXJjZUlEID0gc3RhdGVt
ZW50LT5nZXRDb2x1bW5JbnQoMik7CisgICAgYXV0byBzb3VyY2VTaXRlRG9tYWluID0gZ2V0RG9t
YWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC0+Y29sdW1uSW50KDApKTsKKyAgICBhdXRv
IGRlc3RpbmF0aW9uU2l0ZURvbWFpbiA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChzdGF0
ZW1lbnQtPmNvbHVtbkludCgxKSk7CisgICAgYXV0byBzb3VyY2VJRCA9IHN0YXRlbWVudC0+Y29s
dW1uSW50KDIpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGJ1aWxkZXIuYXBw
ZW5kKCJTb3VyY2Ugc2l0ZTogIiwgc291cmNlU2l0ZURvbWFpbiwgIlxuQXR0cmlidXRlIG9uIHNp
dGU6ICIsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbiwgIlxuU291cmNlIElEOiAiLCBzb3VyY2VJRCk7
CiAKICAgICBpZiAoYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKSB7Ci0gICAgICAgIGF1dG8gYXR0cmlidXRpb25Ucmln
Z2VyRGF0YSA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDMpOwotICAgICAgICBhdXRvIHByaW9y
aXR5ID0gc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoNCk7Ci0gICAgICAgIGF1dG8gZWFybGllc3RU
aW1lVG9TZW5kID0gc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoNik7CisgICAgICAgIGF1dG8gYXR0
cmlidXRpb25UcmlnZ2VyRGF0YSA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDMpOworICAgICAgICBh
dXRvIHByaW9yaXR5ID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoNCk7CisgICAgICAgIGF1dG8gZWFy
bGllc3RUaW1lVG9TZW5kID0gc3RhdGVtZW50LT5jb2x1bW5JbnQoNik7CiAKICAgICAgICAgaWYg
KGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgIT0gLTEpIHsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCJcbkF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogIiwgYXR0cmlidXRpb25UcmlnZ2VyRGF0
YSwgIlxuQXR0cmlidXRpb24gcHJpb3JpdHk6ICIsIHByaW9yaXR5LCAiXG5BdHRyaWJ1dGlvbiBl
YXJsaWVzdCB0aW1lIHRvIHNlbmQ6ICIpOwpAQCAtMzQzNyw3ICszNDM3LDcgQEAgU3RyaW5nIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFRvU3RyaW5nKCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBpZiAoIXByaXZh
dGVDbGlja01lYXN1cmVtZW50RGF0YUV4aXN0cy0+Z2V0Q29sdW1uSW50KDApICYmICFwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMtPmdldENvbHVtbkludCgxKSkKKyAgICBpZiAoIXBy
aXZhdGVDbGlja01lYXN1cmVtZW50RGF0YUV4aXN0cy0+Y29sdW1uSW50KDApICYmICFwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERhdGFFeGlzdHMtPmNvbHVtbkludCgxKSkKICAgICAgICAgcmV0dXJu
ICJcbk5vIHN0b3JlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50IGRhdGEuXG4iX3M7CiAKICAg
ICBhdXRvIHVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVu
dChtX2FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zU3Rh
dGVtZW50LCBhbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
c1F1ZXJ5LCAicHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyJfcyk7CkBAIC0zNDk5LDEx
ICszNDk5LDExIEBAIHN0ZDo6cGFpcjxPcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+
LCBPcHRpb25hbDxEZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvCiAgICAgT3B0aW9uYWw8RGVzdGlu
YXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ+IGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb247
CiAgICAgCiAgICAgLy8gQSB2YWx1ZSBvZiAwLjAgaW5kaWNhdGVzIHRoYXQgdGhlIHJlcG9ydCBo
YXMgYmVlbiBzZW50IHRvIHRoZSByZXNwZWN0aXZlIHNpdGUuCi0gICAgaWYgKHNjb3BlZFN0YXRl
bWVudC0+Z2V0Q29sdW1uRG91YmxlKDApID4gMC4wKQotICAgICAgICBlYXJsaWVzdFRpbWVUb1Nl
bmRUb1NvdXJjZSA9IHNjb3BlZFN0YXRlbWVudC0+Z2V0Q29sdW1uRG91YmxlKDApOworICAgIGlm
IChzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgwKSA+IDAuMCkKKyAgICAgICAgZWFybGll
c3RUaW1lVG9TZW5kVG9Tb3VyY2UgPSBzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgwKTsK
ICAgICAKLSAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5Eb3VibGUoMSkgPiAwLjAp
Ci0gICAgICAgIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gPSBzY29wZWRTdGF0ZW1l
bnQtPmdldENvbHVtbkRvdWJsZSgxKTsKKyAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5E
b3VibGUoMSkgPiAwLjApCisgICAgICAgIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24g
PSBzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZSgxKTsKICAgICAKICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIoZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UsIGVhcmxpZXN0VGltZVRvU2Vu
ZFRvRGVzdGluYXRpb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXgg
MzY4MzY1ZmYxYjA4ODQzZDM2YWUwMjk3MzYwOGQ3YmFhNGNiZmMzZS4uNTE4N2JiYjU1MjkyZjE3
MDliNzRiZjI3ZjM0ZTdmOTQ2ZWVjOTljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2Uu
Y3BwCkBAIC0xNDYsOCArMTQ2LDggQEAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gTG9jYWxTdG9y
YWdlRGF0YWJhc2U6Oml0ZW1zKCkgY29uc3QKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBp
dGVtczsKICAgICBpbnQgcmVzdWx0ID0gcXVlcnktPnN0ZXAoKTsKICAgICB3aGlsZSAocmVzdWx0
ID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgU3RyaW5nIGtleSA9IHF1ZXJ5LT5nZXRDb2x1bW5U
ZXh0KDApOwotICAgICAgICBTdHJpbmcgdmFsdWUgPSBxdWVyeS0+Z2V0Q29sdW1uQmxvYkFzU3Ry
aW5nKDEpOworICAgICAgICBTdHJpbmcga2V5ID0gcXVlcnktPmNvbHVtblRleHQoMCk7CisgICAg
ICAgIFN0cmluZyB2YWx1ZSA9IHF1ZXJ5LT5jb2x1bW5CbG9iQXNTdHJpbmcoMSk7CiAgICAgICAg
IGlmICgha2V5LmlzTnVsbCgpICYmICF2YWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgIGl0ZW1z
LmFkZChXVEZNb3ZlKGtleSksIFdURk1vdmUodmFsdWUpKTsKICAgICAgICAgcmVzdWx0ID0gcXVl
cnktPnN0ZXAoKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJh
c2U6Oml0ZW0oY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CiAKICAgICBpbnQgcmVzdWx0ID0gcXVl
cnktPnN0ZXAoKTsKICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cpCi0gICAgICAgIHJldHVy
biBxdWVyeS0+Z2V0Q29sdW1uQmxvYkFzU3RyaW5nKDApOworICAgICAgICByZXR1cm4gcXVlcnkt
PmNvbHVtbkJsb2JBc1N0cmluZygwKTsKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQog
ICAgICAgICBMT0dfRVJST1IoIkVycm9yIGdldCBpdGVtIGZyb20gSXRlbVRhYmxlIGZvciBsb2Nh
bCBzdG9yYWdlIik7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTMxMyw3ICszMTMsNyBAQCBib29sIExv
Y2FsU3RvcmFnZURhdGFiYXNlOjpkYXRhYmFzZUlzRW1wdHkoKSBjb25zdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuICFxdWVyeS0+Z2V0Q29sdW1uSW50KDApOwor
ICAgIHJldHVybiAhcXVlcnktPmNvbHVtbkludCgwKTsKIH0KIAogdm9pZCBMb2NhbFN0b3JhZ2VE
YXRhYmFzZTo6b3BlbklmRXhpc3RpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggNWU5ODU5NDM3OTZhNDE5OTM0NTc5MGJi
MjY0YWE5OWExNmVlNzJiMC4uYThhNzg5ZmMxMmM0MTg2YTA5ZjAyYzkyZDQzZWVkMTQ1MWUwNDEw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJh
c2UuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIEljb25EYXRhYmFzZTo6SWNvbkRhdGFiYXNlKGNvbnN0
IFN0cmluZyYgcGF0aCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFsbG93RGF0YWJhc2VXCiAgICAgICAg
IH0KIAogICAgICAgICBhdXRvIHZlcnNpb25TdGF0ZW1lbnQgPSBtX2RiLnByZXBhcmVTdGF0ZW1l
bnQoIlNFTEVDVCB2YWx1ZSBGUk9NIEljb25EYXRhYmFzZUluZm8gV0hFUkUga2V5ID0gJ1ZlcnNp
b24nOyJfcyk7Ci0gICAgICAgIGF1dG8gZGF0YWJhc2VWZXJzaW9uTnVtYmVyID0gdmVyc2lvblN0
YXRlbWVudCA/IHZlcnNpb25TdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSA6IDA7CisgICAgICAg
IGF1dG8gZGF0YWJhc2VWZXJzaW9uTnVtYmVyID0gdmVyc2lvblN0YXRlbWVudCA/IHZlcnNpb25T
dGF0ZW1lbnQtPmNvbHVtbkludCgwKSA6IDA7CiAgICAgICAgIGlmIChkYXRhYmFzZVZlcnNpb25O
dW1iZXIgPiBjdXJyZW50RGF0YWJhc2VWZXJzaW9uKSB7CiAgICAgICAgICAgICBMT0coSWNvbkRh
dGFiYXNlLCAiRGF0YWJhc2UgdmVyc2lvbiBudW1iZXIgJWQgaXMgZ3JlYXRlciB0aGFuIG91ciBj
dXJyZW50IHZlcnNpb24gbnVtYmVyICVkIC0gY2xvc2luZyB0aGUgZGF0YWJhc2UgdG8gcHJldmVu
dCBvdmVyd3JpdGluZyBuZXdlciB2ZXJzaW9ucyIsCiAgICAgICAgICAgICAgICAgZGF0YWJhc2VW
ZXJzaW9uTnVtYmVyLCBjdXJyZW50RGF0YWJhc2VWZXJzaW9uKTsKQEAgLTE5MCw3ICsxOTAsNyBA
QCB2b2lkIEljb25EYXRhYmFzZTo6cG9wdWxhdGVQYWdlVVJMVG9JY29uVVJMTWFwKCkKICAgICBh
dXRvIHJlc3VsdCA9IHF1ZXJ5LT5zdGVwKCk7CiAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1f
cGFnZVVSTFRvSWNvblVSTE1hcExvY2spOwogICAgIHdoaWxlIChyZXN1bHQgPT0gU1FMSVRFX1JP
VykgewotICAgICAgICBtX3BhZ2VVUkxUb0ljb25VUkxNYXAuc2V0KHF1ZXJ5LT5nZXRDb2x1bW5U
ZXh0KDApLCBxdWVyeS0+Z2V0Q29sdW1uVGV4dCgxKSk7CisgICAgICAgIG1fcGFnZVVSTFRvSWNv
blVSTE1hcC5zZXQocXVlcnktPmNvbHVtblRleHQoMCksIHF1ZXJ5LT5jb2x1bW5UZXh0KDEpKTsK
ICAgICAgICAgcmVzdWx0ID0gcXVlcnktPnN0ZXAoKTsKICAgICB9CiAKQEAgLTMwNiw4ICszMDYs
OCBAQCBPcHRpb25hbDxpbnQ2NF90PiBJY29uRGF0YWJhc2U6Omljb25JREZvckljb25VUkwoY29u
c3QgU3RyaW5nJiBpY29uVVJMLCBib29sJiBleAogCiAgICAgT3B0aW9uYWw8aW50NjRfdD4gcmVz
dWx0OwogICAgIGlmIChtX2ljb25JREZvckljb25VUkxTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJ
VEVfUk9XKSB7Ci0gICAgICAgIHJlc3VsdCA9IG1faWNvbklERm9ySWNvblVSTFN0YXRlbWVudC0+
Z2V0Q29sdW1uSW50NjQoMCk7Ci0gICAgICAgIGV4cGlyZWQgPSBtX2ljb25JREZvckljb25VUkxT
dGF0ZW1lbnQtPmdldENvbHVtbkludDY0KDEpIDw9IGZsb29yKChXYWxsVGltZTo6bm93KCkgLSBp
Y29uRXhwaXJhdGlvblRpbWUpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKTsKKyAgICAg
ICAgcmVzdWx0ID0gbV9pY29uSURGb3JJY29uVVJMU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgwKTsK
KyAgICAgICAgZXhwaXJlZCA9IG1faWNvbklERm9ySWNvblVSTFN0YXRlbWVudC0+Y29sdW1uSW50
NjQoMSkgPD0gZmxvb3IoKFdhbGxUaW1lOjpub3coKSAtIGljb25FeHBpcmF0aW9uVGltZSkuc2Vj
b25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkpOwogICAgIH0KIAogICAgIG1faWNvbklERm9ySWNv
blVSTFN0YXRlbWVudC0+cmVzZXQoKTsKQEAgLTM0Miw3ICszNDIsNyBAQCBib29sIEljb25EYXRh
YmFzZTo6c2V0SWNvbklERm9yUGFnZVVSTChpbnQ2NF90IGljb25JRCwgY29uc3QgU3RyaW5nJiBw
YWdlVVJMKQogICAgIHJldHVybiB0cnVlOwogfQogCi1WZWN0b3I8Y2hhcj4gSWNvbkRhdGFiYXNl
OjppY29uRGF0YShpbnQ2NF90IGljb25JRCkKK1ZlY3Rvcjx1aW50OF90PiBJY29uRGF0YWJhc2U6
Omljb25EYXRhKGludDY0X3QgaWNvbklEKQogewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgp
KTsKICAgICBBU1NFUlQobV9kYi5pc09wZW4oKSk7CkBAIC0zNjEsMTAgKzM2MSw3IEBAIFZlY3Rv
cjxjaGFyPiBJY29uRGF0YWJhc2U6Omljb25EYXRhKGludDY0X3QgaWNvbklEKQogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7Ci0gICAgaWYgKG1f
aWNvbkRhdGFTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICBtX2ljb25E
YXRhU3RhdGVtZW50LT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMCwgcmVzdWx0KTsKLQorICAgIGF1
dG8gcmVzdWx0ID0gbV9pY29uRGF0YVN0YXRlbWVudC0+Y29sdW1uQmxvYigwKTsKICAgICBtX2lj
b25EYXRhU3RhdGVtZW50LT5yZXNldCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC01NDIs
NyArNTM5LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZQogCiAgICAgbV93b3JrUXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhZ2VVUkwgPSBw
YWdlVVJMLmlzb2xhdGVkQ29weSgpLCBhbGxvd0RhdGFiYXNlV3JpdGUsIHRpbWVzdGFtcCA9IFdh
bGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBPcHRpb25hbDxp
bnQ2NF90PiBpY29uSUQ7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBpY29uRGF0YTsKKyAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGljb25EYXRhOwogICAgICAgICBTdHJpbmcgaWNvblVSTDsKICAgICAg
ICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fcGFnZVVSTFRvSWNvblVS
TE1hcExvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0
YWJhc2UuaAppbmRleCBlMjI1MmEwMDAwZDJiYmU1YjZmNjljZDIyNzFkMDBhMTI1YzU3NzRiLi5i
ZWIyZmI4MDZlYzU1YzY2MzRjZDVlNWEwMGQ1MDc4MzYxNWZlZjRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApAQCAtNjEsNyArNjEsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRDbGVhckxvYWRlZEljb25zVGltZXIoKTsKICAgICBP
cHRpb25hbDxpbnQ2NF90PiBpY29uSURGb3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIGJvb2wmIGV4
cGlyZWQpOwogICAgIGJvb2wgc2V0SWNvbklERm9yUGFnZVVSTChpbnQ2NF90LCBjb25zdCBTdHJp
bmcmKTsKLSAgICBWZWN0b3I8Y2hhcj4gaWNvbkRhdGEoaW50NjRfdCk7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IGljb25EYXRhKGludDY0X3QpOwogICAgIE9wdGlvbmFsPGludDY0X3Q+IGFkZEljb24o
Y29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPGNoYXI+Jik7CiAgICAgdm9pZCB1cGRhdGVJY29u
VGltZXN0YW1wKGludDY0X3QgaWNvbklELCBpbnQ2NF90IHRpbWVzdGFtcCk7CiAgICAgdm9pZCBk
ZWxldGVJY29uKGludDY0X3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZUFyZWFTeW5jLmNwcAppbmRleCA1ZGMyMGJjZjBkZjVjOTAxYjc4NTc1Nzc4MWU1YjcwZjMw
NzczZDEzLi45NzZiYTUzNDdlZjU4NDVhYWQ4ZDBhNDhmMzQ5MGRhNzMyN2E2NTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMzM3
LDcgKzMzNyw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpwZXJmb3JtSW1wb3J0KCkKIAogICAg
IGludCByZXN1bHQgPSBxdWVyeS0+c3RlcCgpOwogICAgIHdoaWxlIChyZXN1bHQgPT0gU1FMSVRF
X1JPVykgewotICAgICAgICBpdGVtTWFwLnNldChxdWVyeS0+Z2V0Q29sdW1uVGV4dCgwKSwgcXVl
cnktPmdldENvbHVtbkJsb2JBc1N0cmluZygxKSk7CisgICAgICAgIGl0ZW1NYXAuc2V0KHF1ZXJ5
LT5jb2x1bW5UZXh0KDApLCBxdWVyeS0+Y29sdW1uQmxvYkFzU3RyaW5nKDEpKTsKICAgICAgICAg
cmVzdWx0ID0gcXVlcnktPnN0ZXAoKTsKICAgICB9CiAKQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lk
IFN0b3JhZ2VBcmVhU3luYzo6ZGVsZXRlRW1wdHlEYXRhYmFzZSgpCiAgICAgICAgICAgICByZXR1
cm4gLTE7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gcXVlcnktPmdldENvbHVtbkludCgw
KTsKKyAgICAgICAgcmV0dXJuIHF1ZXJ5LT5jb2x1bW5JbnQoMCk7CiAgICAgfSgpOwogICAgIGlm
IChjb3VudCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggYTEyZWQ0OGU2M2I3ZDliYjNhZWJkOGE3ZmI3ZWRi
MWZkYTNhOWRiZi4uNDlhMzMyZTIxYTQ4NTk4ZGQ0NTc0NzNkMTUzZjliZWFmMDZlZDA5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0y
MDAsNyArMjAwLDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ltcG9ydE9yaWdpbklkZW50
aWZpZXJzKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tP
cmlnaW5zKG1fb3JpZ2luU2V0TXV0ZXgpOwogICAgICAgICAgICAgICAgIHdoaWxlICgocmVzdWx0
ID0gc3RhdGVtZW50LT5zdGVwKCkpID09IFNRTElURV9ST1cpCi0gICAgICAgICAgICAgICAgICAg
IG1fb3JpZ2luU2V0LmFkZChzdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCkuaXNvbGF0ZWRDb3B5
KCkpOworICAgICAgICAgICAgICAgICAgICBtX29yaWdpblNldC5hZGQoc3RhdGVtZW50LT5jb2x1
bW5UZXh0KDApLmlzb2xhdGVkQ29weSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfRE9ORSkgewpAQCAtNDEyLDE1ICs0MTIs
MTUgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMoKQogICAgIAog
ICAgIGludCByZXN1bHQ7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQtPnN0ZXAoKSkg
PT0gU1FMSVRFX1JPVykgewotICAgICAgICBpZiAoIWNhbkRlbGV0ZU9yaWdpbihzdGF0ZW1lbnQt
PmdldENvbHVtblRleHQoMCkpKQorICAgICAgICBpZiAoIWNhbkRlbGV0ZU9yaWdpbihzdGF0ZW1l
bnQtPmNvbHVtblRleHQoMCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShzdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMSkpOworICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgxKSk7CiAKICAg
ICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9jbGllbnRNdXRleCk7CiAg
ICAgICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luKHN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgwKSk7CisgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKHN0YXRlbWVudC0+Y29s
dW1uVGV4dCgwKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC02MjYsNyArNjI2LDcgQEAg
U3RyaW5nIFN0b3JhZ2VUcmFja2VyOjpkYXRhYmFzZVBhdGhGb3JPcmlnaW4oY29uc3QgU3RyaW5n
JiBvcmlnaW5JZGVudGlmaWVyKQogICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX1JPVykKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIHBhdGhTdGF0ZW1lbnQtPmdldENvbHVt
blRleHQoMCk7CisgICAgcmV0dXJuIHBhdGhTdGF0ZW1lbnQtPmNvbHVtblRleHQoMCk7CiB9CiAg
ICAgCiB1aW50NjRfdCBTdG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4pCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggN2MzMWNlYTcyMTAyNmQyYmQyMjVhYmEwZmJhYmEyOWFjNDEzNjVmZC4uMzdm
ZTQ1NmMxMzliOWI1Mzg3ODZjZTZhMzgzNTQ4NzhkNGNmOGMzYSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA1
LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCAiZ2V0
IiBwcmVmaXggZnJvbSBTUUxpdGVTdGF0ZW1lbnQgbWVtYmVyIGZ1bmN0aW9ucyBhcyB3ZWxsIGFz
IG91dC1wYXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjU5NzEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UgZm9yIG5ldyBWZWN0b3IgY29uc3RydWN0b3IuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMDUtMTkgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc3
NDQ0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKaW5kZXggOGM2MWZk
OWRkY2ViZDk5ODBjYzQ1N2JlNDk5YzczYzY3ZGMwNDk2Yy4uMjJjZWNhNTdlNWEwNGJiZTBhN2Iw
NDdlNDliNmNkMTRjOWEwMWViZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvVmVjdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0
b3IuY3BwCkBAIC0xNDQ0LDUgKzE0NDQsMTkgQEAgVEVTVChXVEZfVmVjdG9yLCBIYXNoS2V5U3Ry
aW5nKQogCiAgICAgRVhQRUNUX1RSVUUoaGFzaC5pc0VtcHR5KCkpOwogfQorCitURVNUKFdURl9W
ZWN0b3IsIENvbnN0cnVjdG9yRnJvbVJhd1BvaW50ZXJBbmRTaXplKQoreworICAgIGNvbnN0ZXhw
ciBzaXplX3QgaW5wdXRTaXplID0gNTsKKyAgICB1aW50OF90IGlucHV0W2lucHV0U2l6ZV0gPSB7
IDEsIDIsIDMsIDQsIDUgfTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgeyBpbnB1dCwg
aW5wdXRTaXplIH07CisgICAgQVNTRVJUX0VRKHZlY3Rvci5zaXplKCksIGlucHV0U2l6ZSk7Cisg
ICAgRVhQRUNUX0VRKHZlY3RvclswXSwgMSk7CisgICAgRVhQRUNUX0VRKHZlY3RvclsxXSwgMik7
CisgICAgRVhQRUNUX0VRKHZlY3RvclsyXSwgMyk7CisgICAgRVhQRUNUX0VRKHZlY3RvclszXSwg
NCk7CisgICAgRVhQRUNUX0VRKHZlY3Rvcls0XSwgNSk7Cit9CiAgICAgCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>