<?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>188692</bug_id>
          
          <creation_ts>2018-08-16 22:34:39 -0700</creation_ts>
          <short_desc>Replace canBubble and cancelable booleans in Event by enum classes</short_desc>
          <delta_ts>2018-08-21 15:23:31 -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>UI Events</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>188720</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1451030</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-16 22:34:39 -0700</bug_when>
    <thetext>Event::Event and Event::create take two booleans to indicate whether an event can bubble and whether it&apos;s cancelable.
Replace these booleans by enum classes to make the call sites more readable than Event::create(~, false, false).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451031</commentid>
    <comment_count>1</comment_count>
      <attachid>347351</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-16 22:40:54 -0700</bug_when>
    <thetext>Created attachment 347351
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451032</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-16 22:44:11 -0700</bug_when>
    <thetext>Attachment 347351 did not pass style-queue:


ERROR: Source/WebCore/dom/KeyboardEvent.cpp:97:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:98:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 2 in 164 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451035</commentid>
    <comment_count>3</comment_count>
      <attachid>347352</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-16 23:11:24 -0700</bug_when>
    <thetext>Created attachment 347352
GTK build fix attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451036</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-16 23:14:50 -0700</bug_when>
    <thetext>Attachment 347352 did not pass style-queue:


ERROR: Source/WebCore/dom/KeyboardEvent.cpp:97:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:98:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:41:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:41:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:42:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:44:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 7 in 165 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451037</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-16 23:36:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/43411944&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451220</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-17 14:24:43 -0700</bug_when>
    <thetext>Committed r234995: &lt;https://trac.webkit.org/changeset/234995&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451287</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-17 17:00:27 -0700</bug_when>
    <thetext>Committed r234999: &lt;https://trac.webkit.org/changeset/234999&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347351</attachid>
            <date>2018-08-16 22:40:54 -0700</date>
            <delta_ts>2018-08-16 23:11:23 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-188692-20180816224053.patch</filename>
            <type>text/plain</type>
            <size>193899</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3NCBAQAorMjAxOC0wOC0xNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXBsYWNlIGNhbkJ1YmJsZSBh
bmQgY2FuY2VsYWJsZSBib29sZWFucyBpbiBFdmVudCBieSBlbnVtIGNsYXNzZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODY5MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2VkIGJvb2xlYW5z
IGluZGljYXRpbmcgd2hldGhlciBhbiBldmVudCBjYW4gYnViYmxlIGFuZCBhbiBldmVudCBpcyBj
YW5jZWxhYmxlCisgICAgICAgIGJ5IHR3byBlbnVtIGNsYXNzZXM6IENhbkJ1YmJsZSBhbmQgSXND
YW5jZWxhYmxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBzaG91bGQgYmUg
bm8gYmVoYXZpb3JhbCBjaGFuZ2VzLgorCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1dlYktp
dFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudDo6V2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVBheW1lbnRBdXRob3JpemVkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQ
YXltZW50QXV0aG9yaXplZEV2ZW50OjpBcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQpOgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3Rl
ZEV2ZW50OjpBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50KToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb246OmRpZENhbmNlbFBheW1lbnRTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQ6OkFw
cGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudDo6QXBwbGVQYXlT
aGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQ6OkFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKToK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleU1l
c3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtleU1lc3NhZ2VF
dmVudDo6V2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudDo6V2ViS2l0TWVkaWFLZXlOZWVk
ZWRFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0
TWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE1lZGlhS2V5U2Vz
c2lvbjo6YWRkS2V5VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtl
eVNlc3Npb246OnNlbmRFcnJvcik6CisgICAgICAgICogTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRXZlbnQ6OkdhbWVwYWRFdmVudCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2U6OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT3BlbkRCUmVxdWVzdDo6b25FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVu
REJSZXF1ZXN0OjpmaXJlU3VjY2Vzc0FmdGVyVmVyc2lvbkNoYW5nZUNvbW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpmaXJlRXJyb3JBZnRlclZlcnNpb25DaGFuZ2VD
b21wbGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2Vz
cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJSZXF1ZXN0OjpvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
cXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dENvbXBsZXRpb25FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Q29tcGxl
dGlvbkV2ZW50OjpJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpmaXJlT25Db21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6ZmlyZU9uQWJvcnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25D
aGFuZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6
OklEQlZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6c2tpcFRv
TmV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6c2tpcFRvUHJldmlv
dXNUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2NoZWR1bGVFdmVudCk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyOjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyTGlzdDo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpzY2hlZHVs
ZWRFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmludGVybmFsQWRkVHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmludGVybmFsUmVtb3ZlVHJhY2sp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1FdmVudDo6TWVkaWFTdHJlYW1FdmVudCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6OnRyYWNrRW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1U
cmFjazo6dHJhY2tNdXRlZENoYW5nZWQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
VHJhY2tFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tF
dmVudDo6TWVkaWFTdHJlYW1UcmFja0V2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vT3ZlcmNvbnN0cmFpbmVkRXJyb3JFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6T3ZlcmNv
bnN0cmFpbmVkRXJyb3JFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok92ZXJjb25z
dHJhaW5lZEVycm9yRXZlbnQ6Ok92ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZmlyZUlDRUNhbmRpZGF0ZUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9uZUdhdGhlcmluZ0Nh
bmRpZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjp1cGRh
dGVTaWduYWxpbmdTdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1G
VG9uZUNoYW5nZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQ6OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWw6OmRpZENoYW5nZVJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWw6OmRpZERldGVjdEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpi
dWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEV2ZW50
OjpSVENEYXRhQ2hhbm5lbEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsRXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjp1
cGRhdGVJY2VHYXRoZXJpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVj
dGlvbjo6dXBkYXRlSWNlQ29ubmVjdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1Bl
ZXJDb25uZWN0aW9uOjp1cGRhdGVDb25uZWN0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUGVlckNvbm5lY3Rpb246OnNjaGVkdWxlTmVnb3RpYXRpb25OZWVkZWRFdmVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50OjpSVENQZWVyQ29ubmVj
dGlvbkljZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uSWNlRXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNr
RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDVHJhY2tFdmVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1RyYWNrRXZlbnQ6OlJUQ1RyYWNrRXZlbnQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC5oOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlU3RyZWFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZERhdGFDaGFubmVs
KToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNrRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQpOgorICAgICAgICAqIE1vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQ6Ok1lcmNoYW50VmFsaWRhdGlvbkV2ZW50
KToKKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRl
RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudDo6
UGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQ6OnBvc3RFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhl
c2lzRXZlbnQ6OlNwZWVjaFN5bnRoZXNpc0V2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnNl
dFN0YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUHJvY2Vzc2luZ0V2ZW50OjpBdWRpb1Byb2Nl
c3NpbmdFdmVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
OjpmaW5pc2gpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxl
dGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudDo6T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvQ2xvc2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xvc2VFdmVudDo6Q2xv
c2VFdmVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0OjpkaXNwYXRjaE9yUXVldWVFcnJvckV2ZW50KToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnZyL1ZSRGlzcGxheUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZSRGlzcGxh
eUV2ZW50OjpWUkRpc3BsYXlFdmVudCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmRpc3BhdGNoQWNjZXNzaWJpbGl0eUV2ZW50V2l0aFR5cGUgY29uc3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJsZVNldFZhbHVlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJsZVNldFZhbHVlRXZlbnQ6OkFjY2Vzc2libGVTZXRWYWx1ZUV2ZW50KToKKyAg
ICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBbmltYXRpb25QbGF5YmFja0V2ZW50OjpBbmltYXRpb25QbGF5YmFja0V2ZW50KToK
KyAgICAgICAgKiBkb20vQWJvcnRTaWduYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJvcnRT
aWduYWw6OmFib3J0KToKKyAgICAgICAgKiBkb20vQW5pbWF0aW9uRXZlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QW5pbWF0aW9uRXZlbnQ6OkFuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKiBk
b20vQmVmb3JlTG9hZEV2ZW50Lmg6CisgICAgICAgICogZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJlZm9yZVRleHRJbnNlcnRlZEV2ZW50OjpCZWZv
cmVUZXh0SW5zZXJ0ZWRFdmVudCk6CisgICAgICAgICogZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJlZm9yZVVubG9hZEV2ZW50OjpCZWZvcmVVbmxvYWRFdmVu
dCk6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KToKKyAgICAgICAgKiBkb20vQ29t
cG9zaXRpb25FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpD
b21wb3NpdGlvbkV2ZW50KToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OmRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKToKKyAgICAgICAgKiBkb20vRGV2aWNl
TW90aW9uRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90aW9uRXZlbnQ6OkRl
dmljZU1vdGlvbkV2ZW50KToKKyAgICAgICAgKiBkb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpEZXZpY2VPcmll
bnRhdGlvbkV2ZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmZpbmlzaGVkUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlzcGF0Y2hG
dWxsU2NyZWVuQ2hhbmdlT3JFcnJvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpvcmllbnRhdGlvbkNoYW5nZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlT3JEaXNw
YXRjaFNjcm9sbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6
ZW5xdWV1ZVNjcm9sbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1
ZTo6ZW5xdWV1ZVJlc2l6ZUV2ZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRFdmVudFF1ZXVl
Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6ZGlzcGF0Y2hNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3Bh
dGNoRm9jdXNJbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoRm9j
dXNPdXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0Y2hXZWJLaXRJbWFnZVJlYWR5RXZlbnRGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBkb20vRXJyb3JFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFcnJvckV2ZW50OjpFcnJvckV2ZW50KToKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnQ6OkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Ojpj
cmVhdGUpOgorICAgICAgICAqIGRvbS9FdmVudC5oOgorICAgICAgICAqIGRvbS9Gb2N1c0V2ZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQpOgorICAgICAg
ICAqIGRvbS9Gb2N1c0V2ZW50Lmg6CisgICAgICAgICogZG9tL0hhc2hDaGFuZ2VFdmVudC5oOgor
ICAgICAgICAqIGRvbS9JbnB1dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RXZl
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEV2ZW50OjpJbnB1dEV2ZW50KToK
KyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQpOgor
ICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZUV2ZW50OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIGRvbS9Nb3VzZUV2ZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b3VzZUV2ZW50OjpNb3VzZUV2ZW50KToKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5oOgorICAg
ICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3Vz
ZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQpOgorICAgICAgICAqIGRvbS9Nb3VzZVJl
bGF0ZWRFdmVudC5oOgorICAgICAgICAqIGRvbS9NdXRhdGlvbkV2ZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uRXZlbnQ6Ok11dGF0aW9uRXZlbnQpOgorICAgICAgICAqIGRvbS9N
dXRhdGlvbkV2ZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6ZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpkaXNwYXRjaERPTUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6ZGlzcGF0Y2hJbnB1dEV2ZW50KToKKyAgICAgICAgKiBkb20vT3ZlcmZsb3dFdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPdmVyZmxvd0V2ZW50OjpPdmVyZmxvd0V2ZW50KToKKyAgICAg
ICAgKiBkb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
VHJhbnNpdGlvbkV2ZW50OjpQYWdlVHJhbnNpdGlvbkV2ZW50KToKKyAgICAgICAgKiBkb20vUG9w
U3RhdGVFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2ZW50OjpQb3BTdGF0
ZUV2ZW50KToKKyAgICAgICAgKiBkb20vUHJvZ3Jlc3NFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQcm9ncmVzc0V2ZW50OjpQcm9ncmVzc0V2ZW50KToKKyAgICAgICAgKiBkb20vU2NyaXB0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpkaXNwYXRjaEVy
cm9yRXZlbnQpOgorICAgICAgICAqIGRvbS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg6
CisgICAgICAgICogZG9tL1NpbXVsYXRlZENsaWNrLmNwcDoKKyAgICAgICAgKiBkb20vVGV4dEV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVudDo6VGV4dEV2ZW50KToKKyAgICAg
ICAgKiBkb20vVHJhbnNpdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zaXRp
b25FdmVudDo6VHJhbnNpdGlvbkV2ZW50KToKKyAgICAgICAgKiBkb20vVUlFdmVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpVSUV2ZW50OjpVSUV2ZW50KToKKyAgICAgICAgKiBkb20vVUlFdmVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6VUlFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBkb20v
VUlFdmVudFdpdGhLZXlTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VUlFdmVudFdpdGhLZXlT
dGF0ZTo6VUlFdmVudFdpdGhLZXlTdGF0ZSk6CisgICAgICAgICogZG9tL1dlYktpdEFuaW1hdGlv
bkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEFuaW1hdGlvbkV2ZW50OjpXZWJL
aXRBbmltYXRpb25FdmVudCk6CisgICAgICAgICogZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRUcmFuc2l0aW9uRXZlbnQ6OldlYktpdFRyYW5z
aXRpb25FdmVudCk6CisgICAgICAgICogZG9tL1doZWVsRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2hlZWxFdmVudDo6V2hlZWxFdmVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OmRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp3aWxsQXBwbHlFZGl0aW5nIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRT
ZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdBcHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZWxlY3RBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246OmRpc3BhdGNoU2VsZWN0U3RhcnQpOgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxzRWxlbWVudDo6ZGlzcGF0Y2hQ
ZW5kaW5nRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaENoYW5n
ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNoZWNr
VmFsaWRpdHkpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6cHJlcGFyZUZvclN1Ym1pc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpyZXNldCk6CisgICAgICAgICogaHRtbC9IVE1M
SW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlTG9hZGVyOjpkaXNw
YXRjaExvYWRFdmVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6Om9uU2VhcmNoKToKKyAgICAgICAgKiBo
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1l
bnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpub3RpZnlBYm91dFBsYXlp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4
dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRT
aXplQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNoZWNrU25hcHNob3RT
dGF0dXMpOgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxTbG90RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2xvdEVs
ZW1lbnQ6OmRpc3BhdGNoU2xvdENoYW5nZUV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxTb3Vy
Y2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVtZW50OjplcnJv
ckV2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50
KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rpb25DaGFuZ2Vk
KToKKyAgICAgICAgKiBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyYWNrRWxlbWVudDo6ZGlkQ29tcGxldGVMb2FkKToKKyAgICAgICAgKiBodG1sL01l
ZGlhQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnNj
aGVkdWxlRXZlbnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29udGV4dEV2ZW50OjpXZWJHTENvbnRleHRFdmVu
dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkaXNwYXRjaENvbnRleHRMb3N0RXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0
b3JlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkRXZlbnQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxTY3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0TG9hZEV2
ZW50KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhY2tFdmVudDo6VHJhY2tFdmVudCk6CisgICAgICAgICogaHRtbC90cmFjay9UcmFj
a0V2ZW50Lmg6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OnNjaGVkdWxlVHJhY2tFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpzY2hlZHVsZUNoYW5nZUV2ZW50KToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xp
Y3lEZW5pZWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hVbmxvYWRFdmVudHMpOgorICAgICAgICAqIGxv
YWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZGlz
cGF0Y2hQZW5kaW5nRXJyb3JFdmVudCk6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXBwbGljYXRpb25DYWNoZUV2ZW50KToKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmRp
c3BhdGNoQWxsUGVuZGluZ1VubG9hZEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5k
b3c6Omxhbmd1YWdlc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNw
YXRjaExvYWRFdmVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZGlzcGF0Y2hTZWxlY3RTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0V2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpzY2hlZHVsZVJlY29ubmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjphYm9ydENvbm5lY3Rpb25BdHRlbXB0KToKKyAg
ICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXNw
YXRjaEV2ZW50c09uV2luZG93QW5kRm9jdXNlZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRnJhbWUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2VuZFJlc2l6ZUV2ZW50SWZO
ZWVkZWQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXR3
b3JrU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlOjpyZXNvdXJjZVRpbWluZ0J1ZmZlckZ1bGxUaW1lckZp
cmVkKToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmVucXVldWVFdmVudCk6CisgICAgICAg
ICogcGFnZS9WaXN1YWxWaWV3cG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3
cG9ydDo6ZW5xdWV1ZVJlc2l6ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZpZXdw
b3J0OjplbnF1ZXVlU2Nyb2xsRXZlbnQpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUV2ZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VFdmVudDo6U3RvcmFnZUV2ZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjpzZW5kU1ZHTG9hZEV2ZW50SWZQb3NzaWJsZSk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRF
dmVudCk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVXNlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHN2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6
OmRpc3BhdGNoUGVuZGluZ0V2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1l
c3NhZ2luZ1Byb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UpOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5k
YWJsZUV2ZW50OjpFeHRlbmRhYmxlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9F
eHRlbmRhYmxlRXZlbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1l
c3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRhYmxlTWVzc2FnZUV2ZW50
OjpFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyOjpzY2hlZHVs
ZVRhc2tUb1VwZGF0ZVN0YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpzY2hlZHVsZVRhc2tUb0ZpcmVDb250cm9sbGVyQ2hhbmdlRXZlbnQpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnNjaGVkdWxlVGFza1RvRmlyZVVw
ZGF0ZUZvdW5kRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZSk6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjYWxs
UmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKToKKwogMjAxOC0wOC0xNSAgQmVuIFJpY2hhcmRzICA8
YmVudG9uX3JpY2hhcmRzQGFwcGxlLmNvbT4KIAogICAgICAgICBXZSBzaG91bGQgY2FjaGUgdGhl
IGNvbXBpbGVkIHNhbmRib3ggcHJvZmlsZSBpbiBhIGRhdGEgdmF1bHQKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmdGb3JQbGF5CiB9CiAKIFdlYktpdFBsYXliYWNr
VGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6OldlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgYXZhaWxhYmxlKQotICAg
IDogRXZlbnQoZXZlbnRUeXBlLCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVudChldmVudFR5cGUs
IENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2F2YWlsYWJpbGl0eShz
dHJpbmdGb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eShhdmFpbGFibGUpKQogewogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRBdXRob3Jp
emVkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRBdXRob3Jp
emVkRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIEFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudDo6QXBwbGVQYXlQYXlt
ZW50QXV0aG9yaXplZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgdW5zaWduZWQgdmVy
c2lvbiwgY29uc3QgUGF5bWVudCYgcGF5bWVudCkKLSAgICA6IEV2ZW50KHR5cGUsIGZhbHNlLCBm
YWxzZSkKKyAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8p
CiAgICAgLCBtX3BheW1lbnQocGF5bWVudC50b0FwcGxlUGF5UGF5bWVudCh2ZXJzaW9uKSkKIHsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
TWV0aG9kU2VsZWN0ZWRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcAkocmV2
aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyAr
MzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBcHBsZVBheVBheW1lbnRNZXRob2RTZWxl
Y3RlZEV2ZW50OjpBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgY29uc3QgUGF5bWVudE1ldGhvZCYgcGF5bWVudE1ldGhvZCkKLSAgICA6
IEV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSkKKyAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6
Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX3BheW1lbnRNZXRob2QocGF5bWVudE1ldGhv
ZC50b0FwcGxlUGF5UGF5bWVudE1ldGhvZCgpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAkocmV2aXNpb24g
MjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Np
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBBcHBsZVBheVNl
c3Npb246OmRpZENhbmNlbFBheW1lbnRTZQogCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpDYW5jZWxl
ZDsKIAotICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jYW5jZWxF
dmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuY2FuY2VsRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpObyk7CiAgICAgZGlzcGF0Y2hFdmVudChldmVudC5nZXQoKSk7CiAKICAgICBkaWRS
ZWFjaEZpbmFsU3RhdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2Vs
ZWN0ZWRFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBcHBs
ZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQ6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0
U2VsZWN0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIHVuc2lnbmVkIHZlcnNpb24s
IGNvbnN0IFBheW1lbnRDb250YWN0JiBzaGlwcGluZ0NvbnRhY3QpCi0gICAgOiBFdmVudCh0eXBl
LCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNl
bGFibGU6Ok5vKQogICAgICwgbV9zaGlwcGluZ0NvbnRhY3Qoc2hpcHBpbmdDb250YWN0LnRvQXBw
bGVQYXlQYXltZW50Q29udGFjdCh2ZXJzaW9uKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlT
aGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3Rl
ZEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgaW5saW5l
IEFwcGxlUGF5U2hpcHBpbmdNZXRob2QgY29uCiB9CiAKIEFwcGxlUGF5U2hpcHBpbmdNZXRob2RT
ZWxlY3RlZEV2ZW50OjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpT
aGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCi0gICAgOiBFdmVudCh0eXBlLCBmYWxzZSwg
ZmFsc2UpCisgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5v
KQogICAgICwgbV9zaGlwcGluZ01ldGhvZChjb252ZXJ0KHNoaXBwaW5nTWV0aG9kKSkKIHsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1l
cmNoYW50RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJj
aGFudEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBBcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudDo6QXBwbGVQYXlWYWxp
ZGF0ZU1lcmNoYW50RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBVUkwmIHZh
bGlkYXRpb25VUkwpCi0gICAgOiBFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVu
dCh0eXBlLCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQogICAgICwgbV92YWxpZGF0
aW9uVVJMKHZhbGlkYXRpb25VUkwpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCShyZXZp
c2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MSw3ICs2NDEsNyBAQCB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMoCiAgICAgICAgIG1fc3RhdHVzZXMu
dW5jaGVja2VkQXBwZW5kKHsgV1RGTW92ZShzdGF0dXMuZmlyc3QpLCB0b01lZGlhS2V5U3RhdHVz
KHN0YXR1cy5zZWNvbmQpIH0pOwogCiAgICAgLy8gNS4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBz
aW1wbGUgZXZlbnQgbmFtZWQga2V5c3RhdHVzZXNjaGFuZ2UgYXQgdGhlIHNlc3Npb24uCi0gICAg
bV9ldmVudFF1ZXVlLmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlz
dGF0dXNlc2NoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBtX2V2ZW50UXVldWUuZW5x
dWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleXN0YXR1c2VzY2hhbmdlRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogCiAg
ICAgLy8gNi4gUXVldWUgYSB0YXNrIHRvIHJ1biB0aGUgQXR0ZW1wdCB0byBSZXN1bWUgUGxheWJh
Y2sgSWYgTmVjZXNzYXJ5IGFsZ29yaXRobSBvbiBlYWNoIG9mIHRoZSBtZWRpYSBlbGVtZW50KHMp
IHdob3NlIG1lZGlhS2V5cyBhdHRyaWJ1dGUgaXMgdGhlIE1lZGlhS2V5cyBvYmplY3QgdGhhdCBj
cmVhdGVkIHRoZSBzZXNzaW9uLgogICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFL
ZXlNZXNzYWdlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcAkocmV2
aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdlYktpdE1lZGlhS2V5TWVzc2Fn
ZUV2ZW50OjpXZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIFVpbnQ4QXJyYXkqIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkwpCi0g
ICAgOiBFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJi
bGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQogICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpCiAgICAg
LCBtX2Rlc3RpbmF0aW9uVVJMKGRlc3RpbmF0aW9uVVJMKQogewpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1l
ZGlhS2V5TmVlZGVkRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQ6OldlYktpdE1l
ZGlhS2V5TmVlZGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBVaW50OEFycmF5KiBp
bml0RGF0YSkKLSAgICA6IEV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSkKKyAgICA6IEV2ZW50KHR5
cGUsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2luaXREYXRhKGlu
aXREYXRhKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Np
b24uY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBXZWJLaXRNZWRpYUtleVNlc3Npb246OmFkZEtleVRp
bWVyRgogCiAgICAgICAgIC8vIDIuNy4gSWYgZGlkIHN0b3JlIGtleSBpcyB0cnVlLCBxdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXlhZGRlZCBhdCB0aGUgTWVkaWFL
ZXlTZXNzaW9uIG9iamVjdC4KICAgICAgICAgaWYgKGRpZFN0b3JlS2V5KSB7Ci0gICAgICAgICAg
ICBhdXRvIGtleWFkZGVkRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRr
ZXlhZGRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgYXV0byBrZXlhZGRlZEV2
ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0a2V5YWRkZWRFdmVudCwgRXZl
bnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICAgICAgICAg
IGtleWFkZGVkRXZlbnQtPnNldFRhcmdldCh0aGlzKTsKICAgICAgICAgICAgIG1fYXN5bmNFdmVu
dFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGtleWFkZGVkRXZlbnQpKTsKIApAQCAtMjEyLDcg
KzIxMiw3IEBAIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IoTWUKIHsKICAg
ICBtX2Vycm9yID0gV2ViS2l0TWVkaWFLZXlFcnJvcjo6Y3JlYXRlKGVycm9yQ29kZSwgc3lzdGVt
Q29kZSk7CiAKLSAgICBhdXRvIGtleWVycm9yRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgIGF1dG8ga2V5ZXJy
b3JFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleWVycm9yRXZlbnQs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAga2V5
ZXJyb3JFdmVudC0+c2V0VGFyZ2V0KHRoaXMpOwogICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVl
dWVFdmVudChXVEZNb3ZlKGtleWVycm9yRXZlbnQpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZEV2ZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBHYW1l
cGFkRXZlbnQ6OkdhbWVwYWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgR2Ft
ZXBhZCYgZ2FtZXBhZCkKLSAgICA6IEV2ZW50KGV2ZW50VHlwZSwgZmFsc2UsIGZhbHNlKQorICAg
IDogRXZlbnQoZXZlbnRUeXBlLCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQogICAg
ICwgbV9nYW1lcGFkKCZnYW1lcGFkKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjcsMTMgKzI2NywxMyBAQCB2b2lkIElEQkRhdGFiYXNlOjpjb25uZWN0aW9u
VG9TZXJ2ZXJMb3N0CiAgICAgZm9yIChhdXRvJiB0cmFuc2FjdGlvbiA6IG1fYWN0aXZlVHJhbnNh
Y3Rpb25zLnZhbHVlcygpKQogICAgICAgICB0cmFuc2FjdGlvbi0+Y29ubmVjdGlvbkNsb3NlZEZy
b21TZXJ2ZXIoZXJyb3IpOwogCi0gICAgYXV0byBlcnJvckV2ZW50ID0gRXZlbnQ6OmNyZWF0ZSht
X2V2ZW50TmFtZXMuZXJyb3JFdmVudCwgdHJ1ZSwgZmFsc2UpOworICAgIGF1dG8gZXJyb3JFdmVu
dCA9IEV2ZW50OjpjcmVhdGUobV9ldmVudE5hbWVzLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgIGVycm9yRXZlbnQtPnNldFRh
cmdldCh0aGlzKTsKIAogICAgIGlmIChhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKQogICAgICAgICBjb250ZXh0LT5ldmVudFF1ZXVlKCkuZW5xdWV1ZUV2ZW50KFdURk1v
dmUoZXJyb3JFdmVudCkpOwogCi0gICAgYXV0byBjbG9zZUV2ZW50ID0gRXZlbnQ6OmNyZWF0ZSht
X2V2ZW50TmFtZXMuY2xvc2VFdmVudCwgdHJ1ZSwgZmFsc2UpOworICAgIGF1dG8gY2xvc2VFdmVu
dCA9IEV2ZW50OjpjcmVhdGUobV9ldmVudE5hbWVzLmNsb3NlRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgIGNsb3NlRXZlbnQtPnNldFRh
cmdldCh0aGlzKTsKIAogICAgIGlmIChhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25FcnJvcihjb25zdCBJ
REIKICAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAK
ICAgICBtX2RvbUVycm9yID0gZGF0YS5lcnJvcigpLnRvRE9NRXhjZXB0aW9uKCk7Ci0gICAgZW5x
dWV1ZUV2ZW50KElEQlJlcXVlc3RDb21wbGV0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgdHJ1ZSwgdHJ1ZSwgKnRoaXMpKTsKKyAgICBlbnF1ZXVlRXZlbnQoSURCUmVx
dWVzdENvbXBsZXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgKnRoaXMpKTsKIH0K
IAogdm9pZCBJREJPcGVuREJSZXF1ZXN0Ojp2ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb25EaWRGaW5p
c2goKQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OmZpcmVTdWNjZXNz
QWZ0ZXJWCiAgICAgQVNTRVJUKGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKICAgICBtX3RyYW5zYWN0
aW9uLT5hZGRSZXF1ZXN0KCp0aGlzKTsKIAotICAgIGF1dG8gZXZlbnQgPSBJREJSZXF1ZXN0Q29t
cGxldGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCwgZmFsc2UsIGZh
bHNlLCAqdGhpcyk7CisgICAgYXV0byBldmVudCA9IElEQlJlcXVlc3RDb21wbGV0aW9uRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sICp0aGlzKTsKICAgICBtX29wZW5EYXRhYmFzZVN1Y2Nl
c3NFdmVudCA9ICZldmVudC5nZXQoKTsKIAogICAgIGVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50
KSk7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpmaXJlRXJyb3JB
ZnRlclZlcgogICAgIHNldFJlc3VsdFRvVW5kZWZpbmVkKCk7CiAKICAgICBtX3RyYW5zYWN0aW9u
LT5hZGRSZXF1ZXN0KCp0aGlzKTsKLSAgICBlbnF1ZXVlRXZlbnQoSURCUmVxdWVzdENvbXBsZXRp
b25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCB0cnVlLCB0cnVlLCAqdGhp
cykpOworICAgIGVucXVldWVFdmVudChJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6WWVzLCAqdGhpcykpOwogfQogCiB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OmNh
bmNlbEZvclN0b3AoKQpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6
b25TdWNjZXNzKGNvbnN0IEkKICAgICBzZXRSZXN1bHQoSURCRGF0YWJhc2U6OmNyZWF0ZSgqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjb25uZWN0aW9uUHJveHkoKSwgcmVzdWx0RGF0YSkpOwog
ICAgIG1fcmVhZHlTdGF0ZSA9IFJlYWR5U3RhdGU6OkRvbmU7CiAKLSAgICBlbnF1ZXVlRXZlbnQo
SURCUmVxdWVzdENvbXBsZXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZl
bnQsIGZhbHNlLCBmYWxzZSwgKnRoaXMpKTsKKyAgICBlbnF1ZXVlRXZlbnQoSURCUmVxdWVzdENv
bXBsZXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIEV2ZW50OjpD
YW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgKnRoaXMpKTsKIH0KIAogdm9p
ZCBJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQoY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJl
cXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI4LDE1ICs1
MjgsMTQgQEAgdm9pZCBJREJSZXF1ZXN0OjpvbkVycm9yKCkKICAgICBBU1NFUlQoIW1faWRiRXJy
b3IuaXNOdWxsKCkpOwogCiAgICAgbV9kb21FcnJvciA9IG1faWRiRXJyb3IudG9ET01FeGNlcHRp
b24oKTsKLSAgICBlbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JF
dmVudCwgdHJ1ZSwgdHJ1ZSkpOworICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNl
bGFibGU6OlllcykpOwogfQogCiB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcygpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyIpOwogICAgIEFTU0VSVCgmb3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLQotICAgIGVucXVldWVFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwor
ICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiB2
b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChSZWY8SURCRGF0YWJhc2U+JiYgZGF0YWJhc2UpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0Q29tcGxldGlv
bkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdENvbXBsZXRpb25FdmVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1JREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50OjpJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgSURCUmVxdWVzdCYgcmVxdWVzdCkKK0lEQlJlcXVlc3RDb21wbGV0aW9uRXZlbnQ6OklEQlJl
cXVlc3RDb21wbGV0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUg
Y2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgSURCUmVxdWVzdCYgcmVxdWVzdCkK
ICAgICA6IEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAsIG1fcmVxdWVz
dChyZXF1ZXN0KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdENvbXBsZXRpb25FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3RDb21wbGV0aW9uRXZlbnQuaAkocmV2aXNpb24gMjM0
OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdENvbXBs
ZXRpb25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMyArMzQsMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50IDogcHVibGljIEV2
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBJREJSZXF1ZXN0
JiByZXF1ZXN0KQorICAgIHN0YXRpYyBSZWY8RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBJ
REJSZXF1ZXN0JiByZXF1ZXN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SURCUmVxdWVzdENvbXBsZXRpb25FdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHJl
cXVlc3QpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgSURCUmVxdWVzdENvbXBsZXRpb25FdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIElEQlJlcXVlc3QmKTsKKyAgICBJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIElEQlJlcXVlc3QmKTsK
IAogICAgIFJlZjxJREJSZXF1ZXN0PiBtX3JlcXVlc3Q7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkocmV2aXNp
b24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTEsMTQgKzU5MSwxNCBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSIpOwogICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSAgICBlbnF1ZXVlRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cisg
ICAgZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBsZXRlRXZlbnQs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjpmaXJlT25BYm9ydCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQlRyYW5zYWN0aW9uOjpmaXJlT25BYm9ydCIpOwogICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSAgICBlbnF1ZXVlRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKKyAg
ICBlbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgRXZl
bnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiB2b2lk
IElEQlRyYW5zYWN0aW9uOjplbnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJz
aW9uQ2hhbmdlRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElEQlZlcnNpb25DaGFu
Z2VFdmVudDo6SURCVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1Zl
cnNpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKLSAgICA6IEV2ZW50KG5hbWUsIGZhbHNl
IC8qY2FuQnViYmxlKi8sIGZhbHNlIC8qY2FuY2VsYWJsZSovKQorICAgIDogRXZlbnQobmFtZSwg
Q2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fcmVxdWVzdElkZW50aWZp
ZXIocmVxdWVzdElkZW50aWZpZXIpCiAgICAgLCBtX29sZFZlcnNpb24ob2xkVmVyc2lvbikKIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDEz
ICsyNTMsMTMgQEAgdm9pZCBNZWRpYVNlc3Npb246OnNhZmVseUl0ZXJhdGVBY3RpdmVNZQogdm9p
ZCBNZWRpYVNlc3Npb246OnNraXBUb05leHRUcmFjaygpCiB7CiAgICAgaWYgKG1fY29udHJvbHMg
JiYgbV9jb250cm9scy0+bmV4dFRyYWNrRW5hYmxlZCgpKQotICAgICAgICBtX2NvbnRyb2xzLT5k
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm5leHR0cmFja0V2ZW50LCBm
YWxzZSwgZmFsc2UpKTsKKyAgICAgICAgbV9jb250cm9scy0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5uZXh0dHJhY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgTWVkaWFTZXNzaW9uOjpza2lw
VG9QcmV2aW91c1RyYWNrKCkKIHsKICAgICBpZiAobV9jb250cm9scyAmJiBtX2NvbnRyb2xzLT5w
cmV2aW91c1RyYWNrRW5hYmxlZCgpKQotICAgICAgICBtX2NvbnRyb2xzLT5kaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnByZXZpb3VzdHJhY2tFdmVudCwgZmFsc2UsIGZh
bHNlKSk7CisgICAgICAgIG1fY29udHJvbHMtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkucHJldmlvdXN0cmFja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb246OmNvbnRyb2xJ
c0VuYWJsZWREaWRDaGFuZ2UoKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBFeGNlcHRpb25PcjxSZWY8U291cmNlQnVmZmVyUHJp
dmF0ZT4+IE1lCiAKIHZvaWQgTWVkaWFTb3VyY2U6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudE5hbWUpCiB7Ci0gICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lLCBmYWxzZSwgZmFsc2UpOworICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsK
ICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwogCiAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5x
dWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAJKHJldmlzaW9uIDIzNDkxMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTAxLDcgKzUwMSw3IEBAIGJvb2wgU291cmNlQnVmZmVyOjppc1Jl
bW92ZWQoKSBjb25zdAogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c2NoZWR1bGVFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWUsIGZhbHNlLCBmYWxzZSk7CisgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8pOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAKICAgICBtX2FzeW5jRXZlbnRRdWV1
ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCShyZXZp
c2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlckxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgU291
cmNlQnVmZmVyTGlzdDo6c3dhcChWZWN0b3I8UmVmUHQKIAogdm9pZCBTb3VyY2VCdWZmZXJMaXN0
OjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIGF1
dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBh
dXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5v
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsK
IAogICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMs
NyBAQCBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMgTWVkaWFEZXZpCiB2b2lkIE1lZGlh
RGV2aWNlczo6c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKCkKIHsKICAgICBpZiAoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmRldmljZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kZXZpY2VjaGFuZ2VFdmVudCwg
RXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIGJv
b2wgTWVkaWFEZXZpY2VzOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHJl
dmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNyArMjI3LDcgQEAgYm9vbCBNZWRp
YVN0cmVhbTo6aW50ZXJuYWxBZGRUcmFjayhSZWY8TQogICAgIGlmIChzdHJlYW1Nb2RpZmllciA9
PSBTdHJlYW1Nb2RpZmllcjo6RG9tQVBJKQogICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrKCZ0
cmFjay5wcml2YXRlVHJhY2soKSwgTWVkaWFTdHJlYW1Qcml2YXRlOjpOb3RpZnlDbGllbnRPcHRp
b246OkRvbnROb3RpZnkpOwogICAgIGVsc2UKLSAgICAgICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0
cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVudCwgZmFsc2Us
IGZhbHNlLCAmdHJhY2spKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNr
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCAmdHJhY2spKTsKIAogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtMjQ1LDcgKzI0NSw3IEBAIGJvb2wgTWVkaWFTdHJlYW06OmludGVybmFsUmVt
b3ZlVHJhY2soY28KICAgICBpZiAoc3RyZWFtTW9kaWZpZXIgPT0gU3RyZWFtTW9kaWZpZXI6OkRv
bUFQSSkKICAgICAgICAgbV9wcml2YXRlLT5yZW1vdmVUcmFjayh0cmFjay0+cHJpdmF0ZVRyYWNr
KCksIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Tm90aWZ5Q2xpZW50T3B0aW9uOjpEb250Tm90aWZ5KTsK
ICAgICBlbHNlCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgV1RGTW92
ZSh0cmFjaykpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6
Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBXVEZNb3ZlKHRyYWNrKSkpOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZWY8TWVkaWFTdHJlYW1FdmVudD4gTWVkaWFTdHJlYW1FdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPE1l
ZGlhU3RyZWFtPiYmIHN0cmVhbSkKK1JlZjxNZWRpYVN0cmVhbUV2ZW50PiBNZWRpYVN0cmVhbUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxl
LCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgUmVmUHRyPE1lZGlhU3RyZWFtPiYmIHN0cmVhbSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0cmVhbUV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZShzdHJlYW0pKSk7CiB9CkBAIC00MSw3ICs0MSw3IEBA
IFJlZjxNZWRpYVN0cmVhbUV2ZW50PiBNZWRpYVN0cmVhbUV2ZW50OjoKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYVN0cmVhbUV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQp
KTsKIH0KIAotTWVkaWFTdHJlYW1FdmVudDo6TWVkaWFTdHJlYW1FdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxNZWRp
YVN0cmVhbT4mJiBzdHJlYW0pCitNZWRpYVN0cmVhbUV2ZW50OjpNZWRpYVN0cmVhbUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxl
IGNhbmNlbGFibGUsIFJlZlB0cjxNZWRpYVN0cmVhbT4mJiBzdHJlYW0pCiAgICAgOiBFdmVudCh0
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX3N0cmVhbShXVEZNb3ZlKHN0cmVh
bSkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtRXZlbnQuaAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1FdmVudCA6IHB1YmxpYyBFdmVudCB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1FdmVudCgpOwogCi0gICAgc3RhdGlj
IFJlZjxNZWRpYVN0cmVhbUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8TWVkaWFTdHJlYW0+JiYpOwor
ICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIFJlZlB0cjxNZWRpYVN0cmVhbT4mJik7
CiAKICAgICBzdHJ1Y3QgSW5pdCA6IEV2ZW50SW5pdCB7CiAgICAgICAgIFJlZlB0cjxNZWRpYVN0
cmVhbT4gc3RyZWFtOwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFdmVu
dEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIE1lZGlh
U3RyZWFtRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBSZWZQdHI8TWVkaWFTdHJlYW0+JiYpOworICAgIE1lZGlhU3RyZWFtRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgUmVm
UHRyPE1lZGlhU3RyZWFtPiYmKTsKICAgICBNZWRpYVN0cmVhbUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBSZWZQdHI8TWVkaWFT
dHJlYW0+IG1fc3RyZWFtOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCShyZXZpc2lvbiAyMzQ5MTApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNr
Ojp0cmFja0VuZGVkKE1lZGlhUwogCiAgICAgLy8gMy4gTm90aWZ5IHRyYWNrJ3Mgc291cmNlIHRo
YXQgdHJhY2sgaXMgZW5kZWQgc28gdGhhdCB0aGUgc291cmNlIG1heSBiZSBzdG9wcGVkLCB1bmxl
c3Mgb3RoZXIgTWVkaWFTdHJlYW1UcmFjayBvYmplY3RzIGRlcGVuZCBvbiBpdC4KICAgICAvLyA0
LiBGaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGVuZGVkIGF0IHRoZSBvYmplY3QuCi0gICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBmYWxzZSwg
ZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVu
ZGVkRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykp
OwogCiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAgICAgICBvYnNl
cnZlci0+dHJhY2tEaWRFbmQoKTsKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIE1lZGlhU3RyZWFt
VHJhY2s6OnRyYWNrTXV0ZWRDaGFuZ2VkCiAgICAgICAgIHJldHVybjsKIAogICAgIEF0b21pY1N0
cmluZyBldmVudFR5cGUgPSBtdXRlZCgpID8gZXZlbnROYW1lcygpLm11dGVFdmVudCA6IGV2ZW50
TmFtZXMoKS51bm11dGVFdmVudDsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnRUeXBlLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnRUeXBlLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
KTsKIAogICAgIGNvbmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TWVkaWFTdHJlYW1U
cmFja0V2ZW50PiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrPiYmIHRyYWNrKQorUmVmPE1lZGlhU3RyZWFtVHJhY2tFdmVudD4gTWVkaWFTdHJl
YW1UcmFja0V2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUg
Y2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+JiYgdHJhY2spCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW1UcmFj
a0V2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh0cmFjaykpKTsKIH0K
QEAgLTQxLDcgKzQxLDcgQEAgUmVmPE1lZGlhU3RyZWFtVHJhY2tFdmVudD4gTWVkaWFTdHJlYW1U
cgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3RyZWFtVHJhY2tFdmVudCh0eXBlLCBp
bml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9CiAKLU1lZGlhU3RyZWFtVHJhY2tFdmVudDo6TWVk
aWFTdHJlYW1UcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2spCitN
ZWRpYVN0cmVhbVRyYWNrRXZlbnQ6Ok1lZGlhU3RyZWFtVHJhY2tFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxl
LCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaykKICAgICA6IEV2ZW50KHR5cGUsIGNh
bkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAsIG1fdHJhY2soV1RGTW92ZSh0cmFjaykpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tF
dmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja0V2ZW50LmgJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1UcmFja0V2ZW50IDogcHVi
bGljIEV2ZQogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtVHJhY2tFdmVudCgpOwog
Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbVRyYWNrRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiYmKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtVHJhY2tFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFi
bGUsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmKTsKIAogICAgIHN0cnVjdCBJbml0IDogRXZl
bnRJbml0IHsKICAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrOwpAQCAtNTAs
NyArNTAsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBj
b25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbVRyYWNrRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJik7CisgICAgTWVkaWFTdHJlYW1UcmFja0V2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiYmKTsKICAgICBNZWRpYVN0cmVhbVRyYWNrRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiBtX3RyYWNrOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9PdmVyY29uc3RyYWluZWRFcnJvckV2ZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9PdmVyY29uc3RyYWluZWRFcnJvckV2ZW50
LmgJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vT3ZlcmNvbnN0cmFpbmVkRXJyb3JFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBAIGNsYXNzIE92ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQgOiBwdWJsaWMKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5PdmVyY29uc3RyYWluZWRFcnJvckV2ZW50KCkgPSBkZWZhdWx0OwogCi0g
ICAgc3RhdGljIFJlZjxPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBPdmVyY29u
c3RyYWluZWRFcnJvciogZXJyb3IpCisgICAgc3RhdGljIFJlZjxPdmVyY29uc3RyYWluZWRFcnJv
ckV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgT3ZlcmNvbnN0cmFpbmVkRXJyb3IqIGVycm9y
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3ZlcmNvbnN0cmFpbmVkRXJy
b3JFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGVycm9yKSk7CiAgICAgfQpAQCAt
NTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50SW50ZXJm
YWNlVHlwZTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE92ZXJjb25zdHJhaW5lZEVycm9y
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBPdmVyY29uc3RyYWluZWRFcnJvciogZXJyb3IpCisgICAgZXhwbGljaXQgT3ZlcmNv
bnN0cmFpbmVkRXJyb3JFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBj
YW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBPdmVyY29uc3RyYWluZWRFcnJvciog
ZXJyb3IpCiAgICAgICAgIDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAg
ICAgICAsIG1fZXJyb3IoZXJyb3IpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNyArMzU2
LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmZpcmVJQ0VDYW5kaQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX3BlZXJDb25uZWN0aW9uLmZpcmVFdmVudChS
VENQZWVyQ29ubmVjdGlvbkljZUV2ZW50OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCBXVEZNb3ZlKGNh
bmRpZGF0ZSksIFdURk1vdmUoc2VydmVyVVJMKSkpOworICAgIG1fcGVlckNvbm5lY3Rpb24uZmly
ZUV2ZW50KFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQ6OmNyZWF0ZShFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIFdURk1vdmUoY2FuZGlkYXRlKSwgV1RGTW92
ZShzZXJ2ZXJVUkwpKSk7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjplbmFibGVJ
Q0VDYW5kaWRhdGVGaWx0ZXJpbmcoKQpAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpkb25lR2F0aGVyaW4KICAgICBpZiAobV93YWl0aW5nRm9yTUROU1JlZ2lz
dHJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wZWVyQ29ubmVjdGlvbi5maXJlRXZl
bnQoUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgbnVsbHB0
ciwgeyB9KSk7CisgICAgbV9wZWVyQ29ubmVjdGlvbi5maXJlRXZlbnQoUlRDUGVlckNvbm5lY3Rp
b25JY2VFdmVudDo6Y3JlYXRlKEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpObywgbnVsbHB0ciwgeyB9KSk7CiAgICAgbV9wZWVyQ29ubmVjdGlvbi51cGRhdGVJY2VH
YXRoZXJpbmdTdGF0ZShSVENJY2VHYXRoZXJpbmdTdGF0ZTo6Q29tcGxldGUpOwogICAgIG1fcGVu
ZGluZ0lDRUNhbmRpZGF0ZXMuY2xlYXIoKTsKIH0KQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIFBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6dXBkYXRlU2lnbmFsCiAKICAgICBpZiAobmV3U2lnbmFsaW5n
U3RhdGUgIT0gbV9wZWVyQ29ubmVjdGlvbi5zaWduYWxpbmdTdGF0ZSgpKSB7CiAgICAgICAgIG1f
cGVlckNvbm5lY3Rpb24uc2V0U2lnbmFsaW5nU3RhdGUobmV3U2lnbmFsaW5nU3RhdGUpOwotICAg
ICAgICBtX3BlZXJDb25uZWN0aW9uLmZpcmVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5zaWduYWxpbmdzdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbi5maXJlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2lnbmFs
aW5nc3RhdGVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6Ok5vKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAJ
KHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcg
QEAgUmVmPFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ+IFJUQ0RUTUZUb25lQwogfQogCiBSVENEVE1G
VG9uZUNoYW5nZUV2ZW50OjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgdG9u
ZSkKLSAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS50b25lY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxz
ZSkKKyAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS50b25lY2hhbmdlRXZlbnQsIENhbkJ1YmJsZTo6
Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX3RvbmUodG9uZSkKIHsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDEwICsxNzEs
MTAgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkQ2hhbmdlUmVhZHlTdGF0ZQogCiAgICAgc3dp
dGNoIChtX3JlYWR5U3RhdGUpIHsKICAgICBjYXNlIFJUQ0RhdGFDaGFubmVsU3RhdGU6Ok9wZW46
Ci0gICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkub3BlbkV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBSVENEYXRhQ2hhbm5lbFN0YXRlOjpDbG9zZWQ6Ci0gICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFsc2Up
KTsKKyAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmNsb3NlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpObykpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAg
LTIxMSw3ICsyMTEsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWREZXRlY3RFcnJvcigpCiAg
ICAgaWYgKG1fc3RvcHBlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2NoZWR1bGVEaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOworICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8pKTsKIH0KIAogdm9pZCBSVENEYXRhQ2hhbm5lbDo6YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNp
bmcoc2l6ZV90IGFtb3VudCkKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVs
OjpidWZmZXJlZEFtb3VudElzRGVjCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhbW91bnQg
PD0gbV9idWZmZXJlZEFtb3VudExvd1RocmVzaG9sZCkKLSAgICAgICAgc2NoZWR1bGVEaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJ1ZmZlcmVkYW1vdW50bG93RXZlbnQs
IGZhbHNlLCBmYWxzZSkpOworICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuYnVmZmVyZWRhbW91bnRsb3dFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgUlRDRGF0YUNoYW5u
ZWw6OnN0b3AoKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVmPFJUQ0RhdGFDaGFubmVsRXZlbnQ+IFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIFJlZjxSVENEYXRhQ2hhbm5lbD4mJiBjaGFubmVsKQorUmVmPFJUQ0RhdGFDaGFubmVsRXZl
bnQ+IFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBSZWY8UlRDRGF0
YUNoYW5uZWw+JiYgY2hhbm5lbCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENEYXRh
Q2hhbm5lbEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZShjaGFubmVs
KSkpOwogfQpAQCAtNDIsNyArNDIsNyBAQCBSZWY8UlRDRGF0YUNoYW5uZWxFdmVudD4gUlRDRGF0
YUNoYW5uZWxFCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDRGF0YUNoYW5uZWxFdmVudCh0
eXBlLCBXVEZNb3ZlKGluaXRpYWxpemVyKSwgaXNUcnVzdGVkKSk7CiB9CiAKLVJUQ0RhdGFDaGFu
bmVsRXZlbnQ6OlJUQ0RhdGFDaGFubmVsRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWY8UlRDRGF0YUNoYW5uZWw+JiYgY2hh
bm5lbCkKK1JUQ0RhdGFDaGFubmVsRXZlbnQ6OlJUQ0RhdGFDaGFubmVsRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2Vs
YWJsZSwgUmVmPFJUQ0RhdGFDaGFubmVsPiYmIGNoYW5uZWwpCiAgICAgOiBFdmVudCh0eXBlLCBj
YW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX2NoYW5uZWwoV1RGTW92ZShjaGFubmVsKSkK
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxFdmVudC5oCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxSVENEYXRhQ2hh
bm5lbD4gY2hhbm5lbDsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxSVENEYXRhQ2hhbm5lbEV2
ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBSZWY8UlRDRGF0YUNoYW5uZWw+JiYpOworICAgIHN0YXRpYyBSZWY8UlRD
RGF0YUNoYW5uZWxFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUsIFJlZjxSVENEYXRhQ2hhbm5lbD4mJik7CiAgICAgc3RhdGljIFJl
ZjxSVENEYXRhQ2hhbm5lbEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBJ
bml0JiYsIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOwogCiAgICAgUlRDRGF0YUNoYW5uZWwm
IGNoYW5uZWwoKTsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZlbnRJ
bnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBSVENEYXRh
Q2hhbm5lbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgUmVmPFJUQ0RhdGFDaGFubmVsPiYmKTsKKyAgICBSVENEYXRhQ2hhbm5l
bEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUs
IFJlZjxSVENEYXRhQ2hhbm5lbD4mJik7CiAgICAgUlRDRGF0YUNoYW5uZWxFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIEluaXQmJiwgSXNUcnVzdGVkKTsKIAogICAgIFJlZjxSVENEYXRh
Q2hhbm5lbD4gbV9jaGFubmVsOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDIzNDkx
MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDMsNyArNTAzLDcgQEAgdm9pZCBSVENQZWVyQ29u
bmVjdGlvbjo6dXBkYXRlSWNlR2F0aGVyaQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHByb3RlY3RlZFRoaXMtPm1faWNlR2F0aGVyaW5nU3RhdGUgPSBuZXdTdGF0ZTsKLSAgICAgICAg
cHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5p
Y2VnYXRoZXJpbmdzdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgcHJv
dGVjdGVkVGhpcy0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pY2Vn
YXRoZXJpbmdzdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+dXBkYXRlQ29ubmVjdGlv
blN0YXRlKCk7CiAgICAgfSk7CiB9CkBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCBSVENQZWVyQ29u
bmVjdGlvbjo6dXBkYXRlSWNlQ29ubmVjdAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHByb3RlY3RlZFRoaXMtPm1faWNlQ29ubmVjdGlvblN0YXRlID0gbmV3U3RhdGU7Ci0gICAgICAg
IHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
aWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmlj
ZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+dXBkYXRlQ29ubmVj
dGlvblN0YXRlKCk7CiAgICAgfSk7CiB9CkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBSVENQZWVy
Q29ubmVjdGlvbjo6dXBkYXRlQ29ubmVjdGlvbgogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIs
ICJzdGF0ZSBjaGFuZ2VkIGZyb206ICIgLCBtX2Nvbm5lY3Rpb25TdGF0ZSwgIiB0byAiLCBzdGF0
ZSk7CiAKICAgICBtX2Nvbm5lY3Rpb25TdGF0ZSA9IHN0YXRlOwotICAgIGRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29ubmVjdGlvbnN0YXRlY2hhbmdlRXZlbnQsIGZh
bHNlLCBmYWxzZSkpOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY29ubmVjdGlvbnN0YXRlY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVu
dDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpzY2hl
ZHVsZU5lZ290aWF0aW9uTmVlZGVkRXZlbnQoKQpAQCAtNTU4LDcgKzU1OCw3IEBAIHZvaWQgUlRD
UGVlckNvbm5lY3Rpb246OnNjaGVkdWxlTmVnb3RpYXQKICAgICAgICAgaWYgKCFwcm90ZWN0ZWRU
aGlzLT5tX2JhY2tlbmQtPmlzTmVnb3RpYXRpb25OZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9iYWNrZW5kLT5jbGVhck5lZ290aWF0aW9uTmVl
ZGVkU3RhdGUoKTsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5uZWdvdGlhdGlvbm5lZWRlZEV2ZW50LCBmYWxzZSwgZmFsc2Up
KTsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5uZWdvdGlhdGlvbm5lZWRlZEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uSWNlRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwxNyArMzIsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZWY8UlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudD4gUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudDo6
Y3JlYXRlKGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxSVENJY2VDYW5k
aWRhdGU+JiYgY2FuZGlkYXRlLCBTdHJpbmcmJiBzZXJ2ZXJVUkwpCitSZWY8UlRDUGVlckNvbm5l
Y3Rpb25JY2VFdmVudD4gUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudDo6Y3JlYXRlKENhbkJ1YmJs
ZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBSZWZQdHI8UlRDSWNlQ2FuZGlk
YXRlPiYmIGNhbmRpZGF0ZSwgU3RyaW5nJiYgc2VydmVyVVJMKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQoZXZlbnROYW1lcygpLmljZWNhbmRp
ZGF0ZUV2ZW50LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUoY2FuZGlkYXRlKSwgV1RG
TW92ZShzZXJ2ZXJVUkwpKSk7CiB9CiAKIFJlZjxSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50PiBS
VENQZWVyQ29ubmVjdGlvbkljZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBJbml0JiYgaW5pdCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENQZWVyQ29ubmVj
dGlvbkljZUV2ZW50KHR5cGUsIGluaXQuYnViYmxlcywgaW5pdC5jYW5jZWxhYmxlLCBXVEZNb3Zl
KGluaXQuY2FuZGlkYXRlKSwgV1RGTW92ZShpbml0LnVybCkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KHR5cGUsIGluaXQuYnViYmxlcyA/IENh
bkJ1YmJsZTo6WWVzIDogQ2FuQnViYmxlOjpObywKKyAgICAgICAgaW5pdC5jYW5jZWxhYmxlID8g
SXNDYW5jZWxhYmxlOjpZZXMgOiBJc0NhbmNlbGFibGU6Ok5vLCBXVEZNb3ZlKGluaXQuY2FuZGlk
YXRlKSwgV1RGTW92ZShpbml0LnVybCkpKTsKIH0KIAotUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVu
dDo6UlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxSVENJY2VDYW5kaWRhdGU+JiYg
Y2FuZGlkYXRlLCBTdHJpbmcmJiBzZXJ2ZXJVUkwpCitSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50
OjpSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2Fu
QnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIFJlZlB0cjxSVENJY2VD
YW5kaWRhdGU+JiYgY2FuZGlkYXRlLCBTdHJpbmcmJiBzZXJ2ZXJVUkwpCiAgICAgOiBFdmVudCh0
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX2NhbmRpZGF0ZShXVEZNb3ZlKGNh
bmRpZGF0ZSkpCiAgICAgLCBtX3VybChXVEZNb3ZlKHNlcnZlclVSTCkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uSWNlRXZlbnQuaAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBzdGF0aWMgUmVm
PFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIEluaXQmJik7Ci0gICAgc3RhdGljIFJlZjxSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50PiBj
cmVhdGUoYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFJUQ0ljZUNhbmRp
ZGF0ZT4mJiwgU3RyaW5nJiYgc2VydmVyVVJMKTsKKyAgICBzdGF0aWMgUmVmPFJUQ1BlZXJDb25u
ZWN0aW9uSWNlRXZlbnQ+IGNyZWF0ZShDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgUmVmUHRyPFJU
Q0ljZUNhbmRpZGF0ZT4mJiwgU3RyaW5nJiYgc2VydmVyVVJMKTsKIAogICAgIFJUQ0ljZUNhbmRp
ZGF0ZSogY2FuZGlkYXRlKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7
IHJldHVybiBtX3VybDsgfQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBF
dmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFJU
Q1BlZXJDb25uZWN0aW9uSWNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlPiYmLCBTdHJp
bmcmJiBzZXJ2ZXJVUkwpOworICAgIFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgUmVmUHRyPFJUQ0ljZUNh
bmRpZGF0ZT4mJiwgU3RyaW5nJiYgc2VydmVyVVJMKTsKIAogICAgIFJlZlB0cjxSVENJY2VDYW5k
aWRhdGU+IG1fY2FuZGlkYXRlOwogICAgIFN0cmluZyBtX3VybDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmNwcAkocmV2
aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENU
cmFja0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxSVENUcmFja0V2ZW50PiBSVENUcmFja0V2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+JiYgcmVjZWl2ZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPiYmIHRyYWNrLCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4mJiBzdHJlYW1zLCBSZWZQ
dHI8UlRDUnRwVHJhbnNjZWl2ZXI+JiYgdHJhbnNjZWl2ZXIpCitSZWY8UlRDVHJhY2tFdmVudD4g
UlRDVHJhY2tFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxl
IGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIFJlZlB0cjxSVENSdHBSZWNlaXZl
cj4mJiByZWNlaXZlciwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIFZlY3RvcjxS
ZWZQdHI8TWVkaWFTdHJlYW0+PiYmIHN0cmVhbXMsIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4m
JiB0cmFuc2NlaXZlcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENUcmFja0V2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZShyZWNlaXZlciksIFdURk1vdmUo
dHJhY2spLCBXVEZNb3ZlKHN0cmVhbXMpLCBXVEZNb3ZlKHRyYW5zY2VpdmVyKSkpOwogfQpAQCAt
NDksNyArNDksNyBAQCBSZWY8UlRDVHJhY2tFdmVudD4gUlRDVHJhY2tFdmVudDo6Y3JlYXRlCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDVHJhY2tFdmVudCh0eXBlLCBpbml0aWFsaXplciwg
aXNUcnVzdGVkKSk7CiB9CiAKLVJUQ1RyYWNrRXZlbnQ6OlJUQ1RyYWNrRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
UlRDUnRwUmVjZWl2ZXI+JiYgcmVjZWl2ZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRy
YWNrLCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4mJiBzdHJlYW1zLCBSZWZQdHI8UlRDUnRw
VHJhbnNjZWl2ZXI+JiYgdHJhbnNjZWl2ZXIpCitSVENUcmFja0V2ZW50OjpSVENUcmFja0V2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxh
YmxlIGNhbmNlbGFibGUsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4mJiByZWNlaXZlciwgUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PiYm
IHN0cmVhbXMsIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4mJiB0cmFuc2NlaXZlcikKICAgICA6
IEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAsIG1fcmVjZWl2ZXIoV1RG
TW92ZShyZWNlaXZlcikpCiAgICAgLCBtX3RyYWNrKFdURk1vdmUodHJhY2spKQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmgJ
KHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDVHJhY2tFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+IE1lZGkKIAogY2xhc3MgUlRDVHJhY2tFdmVudCA6
IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSVENUcmFja0V2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+JiYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
PiYmLCBNZWRpYVN0cmVhbUFycmF5JiYsIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4mJik7Cisg
ICAgc3RhdGljIFJlZjxSVENUcmFja0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgUmVmUHRyPFJUQ1J0cFJlY2VpdmVyPiYmLCBS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgTWVkaWFTdHJlYW1BcnJheSYmLCBSZWZQdHI8UlRD
UnRwVHJhbnNjZWl2ZXI+JiYpOwogCiAgICAgc3RydWN0IEluaXQgOiBFdmVudEluaXQgewogICAg
ICAgICBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyOwpAQCAtNjQsNyArNjQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0
IHsgcmV0dXJuIFJUQ1RyYWNrRXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAKIHByaXZhdGU6Ci0gICAg
UlRDVHJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4mJiwgUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYsIE1lZGlhU3RyZWFtQXJyYXkmJiwgUmVmUHRyPFJUQ1J0cFRyYW5zY2VpdmVy
PiYmKTsKKyAgICBSVENUcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4mJiwgUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+JiYsIE1lZGlhU3RyZWFtQXJyYXkmJiwgUmVmUHRyPFJUQ1J0cFRyYW5zY2Vp
dmVyPiYmKTsKICAgICBSVENUcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29u
c3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+IG1fcmVj
ZWl2ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNw
cAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYzNCw3ICs2MzQsOCBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVN0
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIG1lZGlhU3RyZWFtID0gbWVkaWFTdHJlYW1G
cm9tUlRDU3RyZWFtKHJ0Y1N0cmVhbSk7Ci0gICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29u
bmVjdGlvbigpLmZpcmVFdmVudChNZWRpYVN0cmVhbUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmFkZHN0cmVhbUV2ZW50LCBmYWxzZSwgZmFsc2UsICZtZWRpYVN0cmVhbSkpOworICAgIG1fcGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5maXJlRXZlbnQoTWVkaWFTdHJlYW1FdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGRzdHJlYW1FdmVudCwKKyAgICAgICAgRXZlbnQ6OkNh
bkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCAmbWVkaWFTdHJlYW0pKTsKIH0K
IAogY2xhc3MgUlRDUnRwUmVjZWl2ZXJCYWNrZW5kIGZpbmFsIDogcHVibGljIFJUQ1J0cFJlY2Vp
dmVyOjpCYWNrZW5kIHsKQEAgLTY4Nyw3ICs2ODgsOCBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OmFkZFJlbW90ZVRyCiAgICAgICAgIHN0cmVhbXMuYXBwZW5kKCZtZWRpYVN0cmVhbSk7
CiAgICAgICAgIG1lZGlhU3RyZWFtLmFkZFRyYWNrRnJvbVBsYXRmb3JtKCp0cmFjayk7CiAgICAg
fQotICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5maXJlRXZlbnQoUlRD
VHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS50cmFja0V2ZW50LCBmYWxzZSwgZmFsc2Us
IFdURk1vdmUocmVjZWl2ZXIpLCB0cmFjaywgV1RGTW92ZShzdHJlYW1zKSwgbnVsbHB0cikpOwor
ICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5maXJlRXZlbnQoUlRDVHJh
Y2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS50cmFja0V2ZW50LAorICAgICAgICBFdmVudDo6
Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIFdURk1vdmUocmVjZWl2ZXIp
LCB0cmFjaywgV1RGTW92ZShzdHJlYW1zKSwgbnVsbHB0cikpOwogfQogCiB2b2lkIExpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OnJlbW92ZVJlbW90ZVN0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50
ZXJmYWNlJiBydGNTdHJlYW0pCkBAIC03NzcsNyArNzc5LDggQEAgdm9pZCBMaWJXZWJSVENNZWRp
YUVuZHBvaW50OjphZGREYXRhQ2hhbgogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBtX3BlZXJD
b25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuZmlyZUV2ZW50KFJUQ0RhdGFDaGFubmVsRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0YWNoYW5uZWxFdmVudCwgZmFsc2UsIGZhbHNlLCBX
VEZNb3ZlKGNoYW5uZWwpKSk7CisgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlv
bigpLmZpcmVFdmVudChSVENEYXRhQ2hhbm5lbEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRh
dGFjaGFubmVsRXZlbnQsCisgICAgICAgIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpObywgV1RGTW92ZShjaGFubmVsKSkpOwogfQogCiB2b2lkIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6Ok9uRGF0YUNoYW5uZWwocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0
YUNoYW5uZWxJbnRlcmZhY2U+IGRhdGFDaGFubmVsKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHJldmlzaW9u
IDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsMjQgKzE0MSwyNCBAQCB2b2lkIE5vdGlm
aWNhdGlvbjo6ZmluYWxpemUoKQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZl
bnQoKQogewotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2hv
d0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnNob3dFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNrRXZl
bnQoKQogewogICAgIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvciB3aW5kb3dGb2N1c0FsbG93
ZWQ7Ci0gICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpObykpOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50
KCkKIHsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3Nl
RXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY2xvc2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKSk7CiAgICAgZmluYWxpemUoKTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb246
OmRpc3BhdGNoRXJyb3JFdmVudCgpCiB7Ci0gICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiBhdXRvIE5vdGlmaWNhdGlv
bjo6cGVybWlzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQpIC0+IFBlcm1pc3Npb24KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVl
c3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBSZWY8TWVyY2hhbnRWYWxpZGF0
aW9uRXZlbnQ+IE1lcmNoYW50VmFsCiB9CiAKIE1lcmNoYW50VmFsaWRhdGlvbkV2ZW50OjpNZXJj
aGFudFZhbGlkYXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFVSTCYg
dmFsaWRhdGlvblVSTCwgUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQotICAgIDogRXZl
bnQgeyB0eXBlLCBmYWxzZSwgZmFsc2UgfQorICAgIDogRXZlbnQgeyB0eXBlLCBFdmVudDo6Q2Fu
QnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8gfQogICAgICwgbV92YWxpZGF0aW9u
VVJMIHsgdmFsaWRhdGlvblVSTCB9CiAgICAgLCBtX3BheW1lbnRSZXF1ZXN0IHsgcGF5bWVudFJl
cXVlc3QgfQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuY3BwCShy
ZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQ6OlBheW1lbnRSZXF1ZXMKIH0KIAogUGF5
bWVudFJlcXVlc3RVcGRhdGVFdmVudDo6UGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIFBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCkKLSAgICA6
IEV2ZW50IHsgdHlwZSwgZmFsc2UsIGZhbHNlIH0KKyAgICA6IEV2ZW50IHsgdHlwZSwgQ2FuQnVi
YmxlOjpObywgSXNDYW5jZWxhYmxlOjpObyB9CiAgICAgLCBtX3BheW1lbnRSZXF1ZXN0IHsgJnBh
eW1lbnRSZXF1ZXN0IH0KIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0JKHJldmlz
aW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUwLDcgKzI1MCw3IEBAIHVu
c2lnbmVkIGxvbmcgbG9uZyBRdWlja1RpbWVQbHVnaW5SZXBsYWMKIHZvaWQgUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQ6OnBvc3RFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKIHsKICAg
ICBSZWY8SFRNTFBsdWdJbkVsZW1lbnQ+IHByb3RlY3QoKm1fcGFyZW50RWxlbWVudCk7Ci0gICAg
UmVmPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgdHJ1ZSk7
CisgICAgUmVmPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6
Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsKICAgICBtX3BhcmVudEVs
ZW1lbnQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwCShyZXZp
c2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXNFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgUmVmPFNwZWVj
aFN5bnRoZXNpc0V2ZW50PiBTcGVlY2hTeW50aGVzaQogfQogCiBTcGVlY2hTeW50aGVzaXNFdmVu
dDo6U3BlZWNoU3ludGhlc2lzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCB1bnNpZ25l
ZCBjaGFySW5kZXgsIGZsb2F0IGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAg
OiBFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6
Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQogICAgICwgbV9jaGFySW5kZXgoY2hhckluZGV4KQogICAg
ICwgbV9lbGFwc2VkVGltZShlbGFwc2VkVGltZSkKICAgICAsIG1fbmFtZShuYW1lKQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAko
cmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBBdWRp
b0NvbnRleHQ6OnNldFN0YXRlKFN0YXRlIHN0YXRlKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X3N0YXRlID0gc3RhdGU7Ci0gICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuc3RhdGVjaGFuZ2VFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKKyAgICBt
X2V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGF0
ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6
Ok5vKSk7CiAKICAgICBzaXplX3Qgc3RhdGVJbmRleCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc3Rh
dGUpOwogICAgIGlmIChzdGF0ZUluZGV4ID49IG1fc3RhdGVSZWFjdGlvbnMuc2l6ZSgpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1By
b2Nlc3NpbmdFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEF1ZGlvUHJvY2Vzc2luZ0V2ZW50
OjpBdWRpb1Byb2Nlc3NpbmdFdmVudCgpID0gZGVmYXVsdDsKIAogQXVkaW9Qcm9jZXNzaW5nRXZl
bnQ6OkF1ZGlvUHJvY2Vzc2luZ0V2ZW50KFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiBpbnB1dEJ1ZmZl
ciwgUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIG91dHB1dEJ1ZmZlciwgZG91YmxlIHBsYXliYWNrVGlt
ZSkKLSAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5hdWRpb3Byb2Nlc3NFdmVudCwgdHJ1ZSwgZmFs
c2UpCisgICAgOiBFdmVudChldmVudE5hbWVzKCkuYXVkaW9wcm9jZXNzRXZlbnQsIENhbkJ1YmJs
ZTo6WWVzLCBJc0NhbmNlbGFibGU6Ok5vKQogICAgICwgbV9pbnB1dEJ1ZmZlcihXVEZNb3ZlKGlu
cHV0QnVmZmVyKSkKICAgICAsIG1fb3V0cHV0QnVmZmVyKFdURk1vdmUob3V0cHV0QnVmZmVyKSkK
ICAgICAsIG1fcGxheWJhY2tUaW1lKHBsYXliYWNrVGltZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5
LDcgKzE3OSw3IEBAIHZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKQogICAg
ICAgICBpZiAoIXRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICB0aGlzLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmVuZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICB0aGlzLT5kaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogICAgIH0pOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgUmVmPE9mZmxpbmVBdWRpb0NvbXBs
ZXRpb25FdmVudD4gT2ZmbGluZQogfQogCiBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQ6Ok9m
ZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudChSZWZQdHI8QXVkaW9CdWZmZXI+JiYgcmVuZGVyZWRC
dWZmZXIpCi0gICAgOiBFdmVudChldmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgdHJ1ZSwgZmFs
c2UpCisgICAgOiBFdmVudChldmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgQ2FuQnViYmxlOjpZ
ZXMsIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX3JlbmRlcmVkQnVmZmVyKFdURk1vdmUocmVu
ZGVyZWRCdWZmZXIpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL0Nsb3NlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvQ2xvc2VFdmVudC5oCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3
ICs2Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBDbG9zZUV2ZW50KGJvb2wgd2FzQ2xl
YW4sIGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKLSAgICAgICAgOiBFdmVudChldmVu
dE5hbWVzKCkuY2xvc2VFdmVudCwgZmFsc2UsIGZhbHNlKQorICAgICAgICA6IEV2ZW50KGV2ZW50
TmFtZXMoKS5jbG9zZUV2ZW50LCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQogICAg
ICAgICAsIG1fd2FzQ2xlYW4od2FzQ2xlYW4pCiAgICAgICAgICwgbV9jb2RlKGNvZGUpCiAgICAg
ICAgICwgbV9yZWFzb24ocmVhc29uKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NjMsNyArNTYzLDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZENvbm5lY3QoKQogICAgIG1fc3Rh
dGUgPSBPUEVOOwogICAgIG1fc3VicHJvdG9jb2wgPSBtX2NoYW5uZWwtPnN1YnByb3RvY29sKCk7
CiAgICAgbV9leHRlbnNpb25zID0gbV9jaGFubmVsLT5leHRlbnNpb25zKCk7Ci0gICAgZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkub3BlbkV2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0K
IAogdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKQpA
QCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE9yUXVldWVFcnJvckV2
ZW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kaXNwYXRjaGVkRXJyb3JFdmVudCA9IHRydWU7
Ci0gICAgZGlzcGF0Y2hPclF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJy
b3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgZGlzcGF0Y2hPclF1ZXVlRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE9y
UXVldWVFdmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnZyL1ZSRGlzcGxheUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlFdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgVlJEaXNwbGF5RXZlbnQ6OlZSRGlzcGxheUV2ZW50KGNv
bnN0IEF0bwogfQogCiBWUkRpc3BsYXlFdmVudDo6VlJEaXNwbGF5RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBSZWZQdHI8VlJEaXNwbGF5PiYgZGlzcGxheSwgc3RkOjpvcHRp
b25hbDxWUkRpc3BsYXlFdmVudFJlYXNvbj4mJiByZWFzb24pCi0gICAgOiBFdmVudChuYW1lLCBm
YWxzZSAvKmNhbkJ1YmJsZSovLCBmYWxzZSAvKmNhbmNlbGFibGUqLykKKyAgICA6IEV2ZW50KG5h
bWUsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2Rpc3BsYXkoZGlz
cGxheSkKICAgICAsIG1fcmVhc29uKFdURk1vdmUocmVhc29uKSkKIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAko
cmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxNiw3ICsyMjE2LDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkaXNwYXRjaEFjY2VzcwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIAotICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7CiAgICAg
cmV0dXJuIGRpc3BhdGNoQWNjZXNzaWJpbGl0eUV2ZW50KGV2ZW50KTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmxlU2V0VmFsdWVFdmVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmxlU2V0VmFs
dWVFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJsZVNldFZhbHVlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFjY2Vzc2libGVTZXRWYWx1ZUV2ZW50
OjpBY2Nlc3NpYmxlU2V0VmFsdWVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpCi0gICAgOiBFdmVudCh0eXBlLCB0cnVlLCB0cnVlKQorICAg
IDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpZZXMsIElzQ2FuY2VsYWJsZTo6WWVzKQogICAgICwg
bV92YWx1ZSh2YWx1ZSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Bbmlt
YXRpb25QbGF5YmFja0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBBbmltYXRpb25QbGF5YmFja0V2ZW50OjpBbmltYXRp
b25QbGF5YmFjCiB9CiAKIEFuaW1hdGlvblBsYXliYWNrRXZlbnQ6OkFuaW1hdGlvblBsYXliYWNr
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGN1
cnJlbnRUaW1lLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkKLSAgICA6IEV2
ZW50KHR5cGUsIHRydWUsIGZhbHNlKQorICAgIDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpZZXMs
IElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2N1cnJlbnRUaW1lKGN1cnJlbnRUaW1lKQogICAg
ICwgbV90aW1lbGluZVRpbWUodGltZWxpbmVUaW1lKQogewpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0Fib3J0U2lnbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQWJv
cnRTaWduYWwuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQWJv
cnRTaWduYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgQWJvcnRT
aWduYWw6OmFib3J0KCkKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yICdhYm9ydCBhbGdv
cml0aG1zJyAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jYWJvcnRzaWduYWwtYWJvcnQt
YWxnb3JpdGhtcwogCiAgICAgLy8gNS4gRmlyZSBhbiBldmVudCBuYW1lZCBhYm9ydCBhdCBzaWdu
YWwuCi0gICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hYm9ydEV2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmFib3J0RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpObykpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQW5pbWF0aW9u
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BbmltYXRpb25FdmVu
dC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BbmltYXRpb25F
dmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgQW5pbWF0aW9uRXZlbnQ6
OkFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0bwogfQogCiBBbmltYXRpb25FdmVudDo6QW5pbWF0aW9u
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5h
bWUsIGRvdWJsZSBlbGFwc2VkVGltZSkKLSAgICA6IEV2ZW50KHR5cGUsIHRydWUsIGZhbHNlKQor
ICAgIDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpZZXMsIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAg
LCBtX2FuaW1hdGlvbk5hbWUoYW5pbWF0aW9uTmFtZSkKICAgICAsIG1fZWxhcHNlZFRpbWUoZWxh
cHNlZFRpbWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQmVmb3JlTG9hZEV2ZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVudC5oCShyZXZp
c2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQmVmb3JlTG9hZEV2ZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBFdmVu
dChldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBmYWxzZSwgdHJ1ZSkKKyAgICAgICAgOiBF
dmVudChldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNl
bGFibGU6OlllcykKICAgICAgICAgLCBtX3VybCh1cmwpCiAgICAgewogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcAkocmV2aXNp
b24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudDo6QmVmb3JlVGV4dEluc2VydGVkRXZlbnQoY29u
c3QgU3RyaW5nJiB0ZXh0KQotICAgIDogRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdEJlZm9yZVRl
eHRJbnNlcnRlZEV2ZW50LCBmYWxzZSwgdHJ1ZSksIG1fdGV4dCh0ZXh0KQorICAgIDogRXZlbnQo
ZXZlbnROYW1lcygpLndlYmtpdEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LCBDYW5CdWJibGU6Ok5v
LCBJc0NhbmNlbGFibGU6OlllcyksIG1fdGV4dCh0ZXh0KQogewogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vQmVmb3JlVW5sb2FkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9CZWZvcmVVbmxvYWRFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVVbmxvYWRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQmVmb3JlVW5sb2FkRXZlbnQ6
OkJlZm9yZVVubG9hZEV2ZW50KCkKLSAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5iZWZvcmV1bmxv
YWRFdmVudCwgZmFsc2UsIHRydWUpCisgICAgOiBFdmVudChldmVudE5hbWVzKCkuYmVmb3JldW5s
b2FkRXZlbnQsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6WWVzKQogewogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
Nyw3ICsyMjcsNyBAQCB2b2lkIENoYXJhY3RlckRhdGE6OmRpc3BhdGNoTW9kaWZpZWRFdmVuCiAK
ICAgICBpZiAoIWlzSW5TaGFkb3dUcmVlKCkpIHsKICAgICAgICAgaWYgKGRvY3VtZW50KCkuaGFz
TGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01DSEFSQUNURVJEQVRBTU9ESUZJRURfTElTVEVORVIp
KQotICAgICAgICAgICAgZGlzcGF0Y2hTY29wZWRFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZEV2ZW50LCB0cnVlLCBudWxscHRy
LCBvbGREYXRhLCBtX2RhdGEpKTsKKyAgICAgICAgICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0
YXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWRF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBudWxscHRyLCBvbGREYXRhLCBtX2RhdGEpKTsK
ICAgICAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogICAgIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIENvbXBvc2l0aW9uRXZlbnQ6
OkNvbXBvc2l0aW9uRXZlbnQoKSA9IGRlZmF1bHQ7CiAKIENvbXBvc2l0aW9uRXZlbnQ6OkNvbXBv
c2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQotICAgIDogVUlFdmVudCh0eXBlLCB0cnVlLCB0
cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQorICAgIDogVUlFdmVudCh0eXBlLCBDYW5CdWJibGU6Olll
cywgSXNDYW5jZWxhYmxlOjpZZXMsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2RhdGEoZGF0
YSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9u
IDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzc1LDEyICs3NzUsMTIgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGlsZElu
c2VydGlvbkV2ZW50cwogICAgIFJlZjxEb2N1bWVudD4gZG9jdW1lbnQoY2hpbGQuZG9jdW1lbnQo
KSk7CiAKICAgICBpZiAoYy0+cGFyZW50Tm9kZSgpICYmIGRvY3VtZW50LT5oYXNMaXN0ZW5lclR5
cGUoRG9jdW1lbnQ6OkRPTU5PREVJTlNFUlRFRF9MSVNURU5FUikpCi0gICAgICAgIGMtPmRpc3Bh
dGNoU2NvcGVkRXZlbnQoTXV0YXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Ob2Rl
SW5zZXJ0ZWRFdmVudCwgdHJ1ZSwgYy0+cGFyZW50Tm9kZSgpKSk7CisgICAgICAgIGMtPmRpc3Bh
dGNoU2NvcGVkRXZlbnQoTXV0YXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Ob2Rl
SW5zZXJ0ZWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBjLT5wYXJlbnROb2RlKCkpKTsK
IAogICAgIC8vIGRpc3BhdGNoIHRoZSBET01Ob2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQgZXZlbnQg
dG8gYWxsIGRlc2NlbmRhbnRzCiAgICAgaWYgKGMtPmlzQ29ubmVjdGVkKCkgJiYgZG9jdW1lbnQt
Pmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NTk9ERUlOU0VSVEVESU5UT0RPQ1VNRU5UX0xJ
U1RFTkVSKSkgewogICAgICAgICBmb3IgKDsgYzsgYyA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKmMs
ICZjaGlsZCkpCi0gICAgICAgICAgICBjLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NTm9kZUluc2VydGVkSW50b0RvY3VtZW50RXZlbnQs
IGZhbHNlKSk7CisgICAgICAgICAgICBjLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NTm9kZUluc2VydGVkSW50b0RvY3VtZW50RXZlbnQs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vKSk7CiAgICAgfQogfQogCkBAIC04MDAsMTIgKzgwMCwxMiBA
QCBzdGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhSCiAKICAgICAvLyBkaXNw
YXRjaCBwcmUtcmVtb3ZhbCBtdXRhdGlvbiBldmVudHMKICAgICBpZiAoY2hpbGQtPnBhcmVudE5v
ZGUoKSAmJiBkb2N1bWVudC0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01OT0RFUkVNT1ZF
RF9MSVNURU5FUikpCi0gICAgICAgIGNoaWxkLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRFdmVudCwgdHJ1ZSwgY2hp
bGQtPnBhcmVudE5vZGUoKSkpOworICAgICAgICBjaGlsZC0+ZGlzcGF0Y2hTY29wZWRFdmVudChN
dXRhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6OlllcywgY2hpbGQtPnBhcmVudE5vZGUoKSkpOwogCiAgICAgLy8gZGlz
cGF0Y2ggdGhlIERPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50IGV2ZW50IHRvIGFsbCBkZXNjZW5k
YW50cwogICAgIGlmIChjaGlsZC0+aXNDb25uZWN0ZWQoKSAmJiBkb2N1bWVudC0+aGFzTGlzdGVu
ZXJUeXBlKERvY3VtZW50OjpET01OT0RFUkVNT1ZFREZST01ET0NVTUVOVF9MSVNURU5FUikpIHsK
ICAgICAgICAgZm9yIChSZWZQdHI8Tm9kZT4gY3VycmVudE5vZGUgPSBjaGlsZC5jb3B5UmVmKCk7
IGN1cnJlbnROb2RlOyBjdXJyZW50Tm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKmN1cnJlbnRO
b2RlLCBjaGlsZC5wdHIoKSkpCi0gICAgICAgICAgICBjdXJyZW50Tm9kZS0+ZGlzcGF0Y2hTY29w
ZWRFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVk
RnJvbURvY3VtZW50RXZlbnQsIGZhbHNlKSk7CisgICAgICAgICAgICBjdXJyZW50Tm9kZS0+ZGlz
cGF0Y2hTY29wZWRFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTU5v
ZGVSZW1vdmVkRnJvbURvY3VtZW50RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vKSk7CiAgICAg
fQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAJKHJl
dmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgRGV2aWNlTW90aW9uRXZlbnQ6OkRl
dmljZU1vdGlvbkV2ZW50KCkKIH0KIAogRGV2aWNlTW90aW9uRXZlbnQ6OkRldmljZU1vdGlvbkV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBEZXZpY2VNb3Rpb25EYXRhKiBkZXZp
Y2VNb3Rpb25EYXRhKQotICAgIDogRXZlbnQoZXZlbnRUeXBlLCBmYWxzZSwgZmFsc2UpIC8vIENh
bid0IGJ1YmJsZSwgbm90IGNhbmNlbGFibGUKKyAgICA6IEV2ZW50KGV2ZW50VHlwZSwgQ2FuQnVi
YmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fZGV2aWNlTW90aW9uRGF0YShkZXZp
Y2VNb3Rpb25EYXRhKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVu
dGF0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VP
cmllbnRhdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIERldmljZU9yaWVudGF0aW9uRXZlbnQ6OkRldmljZU9yaWVudGF0aW8KIH0KIAogRGV2
aWNlT3JpZW50YXRpb25FdmVudDo6RGV2aWNlT3JpZW50YXRpb25FdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRGV2aWNlT3JpZW50YXRpb25EYXRhKiBvcmllbnRhdGlvbikKLSAg
ICA6IEV2ZW50KGV2ZW50VHlwZSwgZmFsc2UsIGZhbHNlKSAvLyBDYW4ndCBidWJibGUsIG5vdCBj
YW5jZWxhYmxlCisgICAgOiBFdmVudChldmVudFR5cGUsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2Vs
YWJsZTo6Tm8pCiAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQogewogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjE2LDcgKzEyMTYsNyBAQCB2
b2lkIERvY3VtZW50OjpzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUgCiAgICAgfQogCiAgICAgbV9y
ZWFkeVN0YXRlID0gcmVhZHlTdGF0ZTsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnJlYWR5c3RhdGVjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAg
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZWFkeXN0YXRlY2hhbmdl
RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwog
CiAgICAgaWYgKHNldHRpbmdzKCkuc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nKCkpCiAg
ICAgICAgIHNldFZpc3VhbFVwZGF0ZXNBbGxvd2VkKHJlYWR5U3RhdGUpOwpAQCAtMTYzMCw3ICsx
NjMwLDcgQEAgdm9pZCBEb2N1bWVudDo6dW5yZWdpc3RlckZvclZpc2liaWxpdHlTdAogCiB2b2lk
IERvY3VtZW50Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkKIHsKLSAgICBlbnF1ZXVlRG9jdW1l
bnRFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS52aXNpYmlsaXR5Y2hhbmdlRXZlbnQs
IGZhbHNlLCBmYWxzZSkpOworICAgIGVucXVldWVEb2N1bWVudEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnZpc2liaWxpdHljaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX3Zp
c2liaWxpdHlTdGF0ZUNhbGxiYWNrQ2xpZW50cykKICAgICAgICAgY2xpZW50LT52aXNpYmlsaXR5
U3RhdGVDaGFuZ2VkKCk7CiAKQEAgLTU0MjcsNyArNTQyNyw3IEBAIHZvaWQgRG9jdW1lbnQ6OmZp
bmlzaGVkUGFyc2luZygpCiAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2Fk
ZWRFdmVudFN0YXJ0KQogICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRF
dmVudFN0YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKLSAgICBkaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTUNvbnRlbnRMb2FkZWRFdmVudCwgdHJ1ZSwgZmFs
c2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTUNv
bnRlbnRMb2FkZWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpObykpOwogCiAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRF
dmVudEVuZCkKICAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZlbnRF
bmQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKQEAgLTY0MDEsNyArNjQwMSw3IEBAIHZvaWQgRG9j
dW1lbnQ6OmRpc3BhdGNoRnVsbFNjcmVlbkNoYW5nZU8KICAgICAgICAgaWYgKHNob3VsZE5vdGlm
eU1lZGlhRWxlbWVudCAmJiBpczxIVE1MTWVkaWFFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgICAg
ICBkb3duY2FzdDxIVE1MTWVkaWFFbGVtZW50Pigqbm9kZSkuZW50ZXJlZE9yRXhpdGVkRnVsbHNj
cmVlbigpOwogI2VuZGlmCi0gICAgICAgIG5vZGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWUsIHRydWUsIGZhbHNlKSk7CisgICAgICAgIG5vZGUtPmRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKICAgICB9CiB9CiAKQEAgLTc0NDksNyArNzQ0OSw3IEBAIHZvaWQg
RG9jdW1lbnQ6OmRpZFJlbW92ZUluRG9jdW1lbnRTaGFkb3cKIHZvaWQgRG9jdW1lbnQ6Om9yaWVu
dGF0aW9uQ2hhbmdlZChpbnQgb3JpZW50YXRpb24pCiB7CiAgICAgTE9HKEV2ZW50cywgIkRvY3Vt
ZW50ICVwIG9yaWVudGF0aW9uQ2hhbmdlZCAtIG9yaWVudGF0aW9uICVkIiwgdGhpcywgb3JpZW50
YXRpb24pOwotICAgIGRpc3BhdGNoV2luZG93RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkub3JpZW50YXRpb25jaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgZGlzcGF0Y2hX
aW5kb3dFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5vcmllbnRhdGlvbmNoYW5nZUV2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAg
ICBtX29yaWVudGF0aW9uTm90aWZpZXIub3JpZW50YXRpb25DaGFuZ2VkKG9yaWVudGF0aW9uKTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAJKHJl
dmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NiwxMiArODYsMTAgQEAgdm9pZCBEb2N1bWVudEV2ZW50
UXVldWU6OmVucXVldWVPckRpc3BhdAogICAgIEFTU0VSVCgmdGFyZ2V0LmRvY3VtZW50KCkgPT0g
Jm1fZG9jdW1lbnQpOwogCiAgICAgLy8gUGVyIHRoZSBXM0MgQ1NTT00gVmlldyBNb2R1bGUsIHNj
cm9sbCBldmVudHMgZmlyZWQgYXQgdGhlIGRvY3VtZW50IHNob3VsZCBidWJibGUsIG90aGVycyBz
aG91bGQgbm90LgotICAgIGJvb2wgYnViYmxlcyA9IHRhcmdldC5pc0RvY3VtZW50Tm9kZSgpOwot
ICAgIGJvb2wgY2FuY2VsYWJsZSA9IGZhbHNlOwotICAgIGVucXVldWVTY3JvbGxFdmVudCh0YXJn
ZXQsIGJ1YmJsZXMsIGNhbmNlbGFibGUpOworICAgIGVucXVldWVTY3JvbGxFdmVudCh0YXJnZXQs
IHRhcmdldC5pc0RvY3VtZW50Tm9kZSgpID8gRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzIDogRXZlbnQ6
OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKIH0KIAotdm9pZCBEb2N1
bWVudEV2ZW50UXVldWU6OmVucXVldWVTY3JvbGxFdmVudChFdmVudFRhcmdldCYgdGFyZ2V0LCBi
b29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSkKK3ZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjpl
bnF1ZXVlU2Nyb2xsRXZlbnQoRXZlbnRUYXJnZXQmIHRhcmdldCwgRXZlbnQ6OkNhbkJ1YmJsZSBj
YW5CdWJibGUsIEV2ZW50OjpJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSkKIHsKICAgICBpZiAobV9p
c0Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTAyLDEyICsxMDAsMTIgQEAgdm9pZCBEb2N1
bWVudEV2ZW50UXVldWU6OmVucXVldWVTY3JvbGxFdgogICAgIGlmICghbV90YXJnZXRzV2l0aFF1
ZXVlZFNjcm9sbEV2ZW50cy5hZGQoJnRhcmdldCkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVmPEV2ZW50PiBzY3JvbGxFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLnNjcm9sbEV2ZW50LCBidWJibGVzLCBjYW5jZWxhYmxlKTsKKyAgICBSZWY8RXZlbnQ+IHNj
cm9sbEV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSk7CiAgICAgc2Nyb2xsRXZlbnQtPnNldFRhcmdldCgmdGFyZ2V0KTsK
ICAgICBlbnF1ZXVlRXZlbnQoV1RGTW92ZShzY3JvbGxFdmVudCkpOwogfQogCi12b2lkIERvY3Vt
ZW50RXZlbnRRdWV1ZTo6ZW5xdWV1ZVJlc2l6ZUV2ZW50KEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGJv
b2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlKQordm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmVu
cXVldWVSZXNpemVFdmVudChFdmVudFRhcmdldCYgdGFyZ2V0LCBFdmVudDo6Q2FuQnViYmxlIGNh
bkJ1YmJsZSwgRXZlbnQ6OklzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlKQogewogICAgIGlmIChtX2lz
Q2xvc2VkKQogICAgICAgICByZXR1cm47CkBAIC0xMTgsNyArMTE2LDcgQEAgdm9pZCBEb2N1bWVu
dEV2ZW50UXVldWU6OmVucXVldWVSZXNpemVFdgogICAgIGlmICghbV90YXJnZXRzV2l0aFF1ZXVl
ZFJlc2l6ZUV2ZW50cy5hZGQoJnRhcmdldCkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVmPEV2ZW50PiByZXNpemVFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LnJlc2l6ZUV2ZW50LCBidWJibGVzLCBjYW5jZWxhYmxlKTsKKyAgICBSZWY8RXZlbnQ+IHJlc2l6
ZUV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVzaXplRXZlbnQsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSk7CiAgICAgcmVzaXplRXZlbnQtPnNldFRhcmdldCgmdGFyZ2V0KTsKICAg
ICBlbnF1ZXVlRXZlbnQoV1RGTW92ZShyZXNpemVFdmVudCkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRl
ICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CkBAIC0zNSw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3Vt
ZW50OwotY2xhc3MgRXZlbnQ7CiBjbGFzcyBOb2RlOwogCiBjbGFzcyBEb2N1bWVudEV2ZW50UXVl
dWUgZmluYWwgOiBwdWJsaWMgRXZlbnRRdWV1ZSB7CkBAIC00OCw4ICs0OCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNsb3NlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVucXVldWVPckRpc3BhdGNo
U2Nyb2xsRXZlbnQoTm9kZSYpOwotICAgIHZvaWQgZW5xdWV1ZVNjcm9sbEV2ZW50KEV2ZW50VGFy
Z2V0JiwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUpOwotICAgIHZvaWQgZW5xdWV1ZVJl
c2l6ZUV2ZW50KEV2ZW50VGFyZ2V0JiwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUpOwor
ICAgIHZvaWQgZW5xdWV1ZVNjcm9sbEV2ZW50KEV2ZW50VGFyZ2V0JiwgRXZlbnQ6OkNhbkJ1YmJs
ZSwgRXZlbnQ6OklzQ2FuY2VsYWJsZSk7CisgICAgdm9pZCBlbnF1ZXVlUmVzaXplRXZlbnQoRXZl
bnRUYXJnZXQmLCBFdmVudDo6Q2FuQnViYmxlLCBFdmVudDo6SXNDYW5jZWxhYmxlKTsKIAogcHJp
dmF0ZToKICAgICB2b2lkIHBlbmRpbmdFdmVudFRpbWVyRmlyZWQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkxLDcgKzI5MSw4IEBAIGJvb2wgRWxlbWVudDo6
ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IFAKICAgICAgICAgLy8gb2YgdGhlIERPTSBzcGVjcywg
YnV0IGlzIHVzZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb25kYmxjbGljaz0iIiBhdHRy
aWJ1dGUuIFRoaXMgaXMgdHJlYXRlZAogICAgICAgICAvLyBhcyBhIHNlcGFyYXRlIGV2ZW50IGlu
IG90aGVyIERPTS1jb21wbGlhbnQgYnJvd3NlcnMgbGlrZSBGaXJlZm94LCBhbmQgc28gd2UgZG8g
dGhlIHNhbWUuCiAgICAgICAgIFJlZjxNb3VzZUV2ZW50PiBkb3VibGVDbGlja0V2ZW50ID0gTW91
c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYmxjbGlja0V2ZW50LAotICAgICAgICAgICAg
bW91c2VFdmVudC0+YnViYmxlcygpLCBtb3VzZUV2ZW50LT5jYW5jZWxhYmxlKCksIG1vdXNlRXZl
bnQtPnZpZXcoKSwgbW91c2VFdmVudC0+ZGV0YWlsKCksCisgICAgICAgICAgICBtb3VzZUV2ZW50
LT5idWJibGVzKCkgPyBFdmVudDo6Q2FuQnViYmxlOjpZZXMgOiBFdmVudDo6Q2FuQnViYmxlOjpO
bywgbW91c2VFdmVudC0+Y2FuY2VsYWJsZSgpID8gRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzIDog
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sCisgICAgICAgICAgICBtb3VzZUV2ZW50LT52aWV3KCks
IG1vdXNlRXZlbnQtPmRldGFpbCgpLAogICAgICAgICAgICAgbW91c2VFdmVudC0+c2NyZWVuWCgp
LCBtb3VzZUV2ZW50LT5zY3JlZW5ZKCksIG1vdXNlRXZlbnQtPmNsaWVudFgoKSwgbW91c2VFdmVu
dC0+Y2xpZW50WSgpLAogICAgICAgICAgICAgbW91c2VFdmVudC0+Y3RybEtleSgpLCBtb3VzZUV2
ZW50LT5hbHRLZXkoKSwgbW91c2VFdmVudC0+c2hpZnRLZXkoKSwgbW91c2VFdmVudC0+bWV0YUtl
eSgpLAogICAgICAgICAgICAgbW91c2VFdmVudC0+YnV0dG9uKCksIG1vdXNlRXZlbnQtPmJ1dHRv
bnMoKSwgbW91c2VFdmVudC0+c3ludGhldGljQ2xpY2tUeXBlKCksIHJlbGF0ZWRUYXJnZXQpOwpA
QCAtMjU3OSwzNCArMjU4MCwzNCBAQCB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNJbkV2ZW50
KGNvbnN0CiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzU2NyaXB0QWxsb3dlZCgpKTsKICAgICBBU1NF
UlQoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5mb2N1c2luRXZlbnQgfHwgZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMoKS5ET01Gb2N1c0luRXZlbnQpOwotICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQo
Rm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZmFsc2UsIGRvY3VtZW50KCkud2lu
ZG93UHJveHkoKSwgMCwgV1RGTW92ZShvbGRGb2N1c2VkRWxlbWVudCkpKTsKKyAgICBkaXNwYXRj
aFNjb3BlZEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIEV2ZW50OjpDYW5CdWJi
bGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIGRvY3VtZW50KCkud2luZG93UHJveHko
KSwgMCwgV1RGTW92ZShvbGRGb2N1c2VkRWxlbWVudCkpKTsKIH0KIAogdm9pZCBFbGVtZW50Ojpk
aXNwYXRjaEZvY3VzT3V0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0
cjxFbGVtZW50PiYmIG5ld0ZvY3VzZWRFbGVtZW50KQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc1Nj
cmlwdEFsbG93ZWQoKSk7CiAgICAgQVNTRVJUKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZm9j
dXNvdXRFdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLkRPTUZvY3VzT3V0RXZlbnQp
OwotICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwg
dHJ1ZSwgZmFsc2UsIGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgMCwgV1RGTW92ZShuZXdGb2N1
c2VkRWxlbWVudCkpKTsKKyAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0
ZShldmVudFR5cGUsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8sIGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgMCwgV1RGTW92ZShuZXdGb2N1c2VkRWxlbWVu
dCkpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoUmVmUHRyPEVsZW1l
bnQ+JiYgb2xkRm9jdXNlZEVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uKQogewogICAgIGlmIChhdXRv
KiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpLmVsZW1lbnREaWRGb2N1cygqdGhpcyk7Ci0gICAgZGlzcGF0Y2hFdmVudChGb2N1c0V2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIGZhbHNlLCBmYWxzZSwgZG9jdW1lbnQo
KS53aW5kb3dQcm94eSgpLCAwLCBXVEZNb3ZlKG9sZEZvY3VzZWRFbGVtZW50KSkpOworICAgIGRp
c3BhdGNoRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBF
dmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIGRvY3VtZW50KCku
d2luZG93UHJveHkoKSwgMCwgV1RGTW92ZShvbGRGb2N1c2VkRWxlbWVudCkpKTsKIH0KIAogdm9p
ZCBFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudChSZWZQdHI8RWxlbWVudD4mJiBuZXdGb2N1c2Vk
RWxlbWVudCkKIHsKICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQogICAg
ICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5lbGVtZW50RGlkQmx1cigqdGhpcyk7Ci0gICAg
ZGlzcGF0Y2hFdmVudChGb2N1c0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwg
ZmFsc2UsIGZhbHNlLCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIDAsIFdURk1vdmUobmV3Rm9j
dXNlZEVsZW1lbnQpKSk7CisgICAgZGlzcGF0Y2hFdmVudChGb2N1c0V2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6Ok5vLCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIDAsIFdURk1vdmUobmV3Rm9jdXNl
ZEVsZW1lbnQpKSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hXZWJLaXRJbWFnZVJlYWR5
RXZlbnRGb3JUZXN0aW5nKCkKIHsKICAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLndlYmtp
dEltYWdlUmVhZHlFdmVudEVuYWJsZWQoKSkKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiLCB0cnVlLCB0cnVlKSk7CisgICAgICAgIGRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZSgid2Via2l0SW1hZ2VGcmFtZVJlYWR5IiwgRXZlbnQ6
OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKIH0KIAogYm9vbCBF
bGVtZW50OjpkaXNwYXRjaE1vdXNlRm9yY2VXaWxsQmVnaW4oKQpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0Vycm9yRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
cnJvckV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vy
cm9yRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIEVycm9yRXZlbnQ6
OkVycm9yRXZlbnQoY29uc3QgQXRvbWljU3RyaW4KIH0KIAogRXJyb3JFdmVudDo6RXJyb3JFdmVu
dChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgSlNDOjpTdHJvbmc8SlNDOjpVbmtu
b3duPiBlcnJvcikKLSAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwg
dHJ1ZSkKKyAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBDYW5CdWJibGU6Ok5v
LCBJc0NhbmNlbGFibGU6OlllcykKICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQogICAgICwgbV9m
aWxlTmFtZShmaWxlTmFtZSkKICAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwyMSArNDAsMjEgQEAgRXZlbnQ6OkV2ZW50
KElzVHJ1c3RlZCBpc1RydXN0ZWQpCiB7CiB9CiAKLUV2ZW50OjpFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZykK
K0V2ZW50OjpFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQ2FuQnViYmxlIGNh
bkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGlzQ2FuY2VsYWJsZSkKICAgICA6IG1fdHlwZShldmVudFR5
cGUpCiAgICAgLCBtX2lzSW5pdGlhbGl6ZWQodHJ1ZSkKLSAgICAsIG1fY2FuQnViYmxlKGNhbkJ1
YmJsZUFyZykKLSAgICAsIG1fY2FuY2VsYWJsZShjYW5jZWxhYmxlQXJnKQorICAgICwgbV9jYW5C
dWJibGUoY2FuQnViYmxlID09IENhbkJ1YmJsZTo6WWVzKQorICAgICwgbV9jYW5jZWxhYmxlKGlz
Q2FuY2VsYWJsZSA9PSBJc0NhbmNlbGFibGU6OlllcykKICAgICAsIG1faXNUcnVzdGVkKHRydWUp
CiAgICAgLCBtX2NyZWF0ZVRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpCiB7CiB9CiAKLUV2ZW50
OjpFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGVBcmcs
IGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0aW1lc3RhbXApCitFdmVudDo6RXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElz
Q2FuY2VsYWJsZSBpc0NhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wKQogICAgIDog
bV90eXBlKGV2ZW50VHlwZSkKICAgICAsIG1faXNJbml0aWFsaXplZCh0cnVlKQotICAgICwgbV9j
YW5CdWJibGUoY2FuQnViYmxlQXJnKQotICAgICwgbV9jYW5jZWxhYmxlKGNhbmNlbGFibGVBcmcp
CisgICAgLCBtX2NhbkJ1YmJsZShjYW5CdWJibGUgPT0gQ2FuQnViYmxlOjpZZXMpCisgICAgLCBt
X2NhbmNlbGFibGUoaXNDYW5jZWxhYmxlID09IElzQ2FuY2VsYWJsZTo6WWVzKQogICAgICwgbV9p
c1RydXN0ZWQodHJ1ZSkKICAgICAsIG1fY3JlYXRlVGltZSh0aW1lc3RhbXApCiB7CkBAIC03Myw5
ICs3Myw5IEBAIEV2ZW50OjpFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHkKIAogRXZl
bnQ6On5FdmVudCgpID0gZGVmYXVsdDsKIAotUmVmPEV2ZW50PiBFdmVudDo6Y3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSkKK1Jl
ZjxFdmVudD4gRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1YmJs
ZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBpc0NhbmNlbGFibGUpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRXZlbnQodHlwZSwgY2FuQnViYmxlLCBpc0NhbmNlbGFibGUpKTsK
IH0KIAogUmVmPEV2ZW50PiBFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50LmgJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiBjbGFzcyBFdmVudCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3Vu
dGVkPEV2ZW50PiB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBJc1RydXN0ZWQgeyBObywgWWVz
IH07CisgICAgZW51bSBjbGFzcyBDYW5CdWJibGUgeyBObywgWWVzIH07CisgICAgZW51bSBjbGFz
cyBJc0NhbmNlbGFibGUgeyBObywgWWVzIH07CiAKICAgICBlbnVtIFBoYXNlVHlwZSB7IAogICAg
ICAgICBOT05FID0gMCwKQEAgLTQ5LDcgKzUxLDcgQEAgcHVibGljOgogICAgICAgICBCVUJCTElO
R19QSEFTRSA9IDMKICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUpOwogICAg
IHN0YXRpYyBSZWY8RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAgICAgc3RhdGljIFJlZjxF
dmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgRXZlbnRJbml0Jiwg
SXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKQEAgLTEzOSw4ICsxNDEsOCBAQCBwdWJsaWM6
CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBFdmVudChJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6
Ok5vKTsKLSAgICBFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUpOwotICAgIEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAp
OworICAgIEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNl
bGFibGUpOworICAgIEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJ
c0NhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wKTsKICAgICBFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEV2ZW50SW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcmVjZWl2ZWRUYXJnZXQoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Gb2N1c0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNF
dmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBib29sIEZvY3VzRXZlbnQ6
OmlzRm9jdXNFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUZvY3VzRXZlbnQ6
OkZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVm
UHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCitGb2N1c0V2ZW50OjpGb2N1c0V2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxh
YmxlIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBS
ZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkKICAgICA6IFVJRXZlbnQodHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgLCBtX3Jl
bGF0ZWRUYXJnZXQoV1RGTW92ZShyZWxhdGVkVGFyZ2V0KSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Gb2N1c0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Zv
Y3VzRXZlbnQuaAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0ZvY3Vz
RXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBOb2RlOwogCiBj
bGFzcyBGb2N1c0V2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8Rm9jdXNFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGludCBkZXRhaWwsIFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxhdGVkVGFyZ2V0KQorICAgIHN0
YXRpYyBSZWY8Rm9jdXNFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2Fu
QnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRh
cmdldCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvY3VzRXZlbnQodHlw
ZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIFdURk1vdmUo
cmVsYXRlZFRhcmdldCkpKTsKICAgICB9CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBGb2N1c0V2ZW50KCkgPSBkZWZhdWx0OwotICAgIEZvY3VzRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGludCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsKKyAgICBGb2N1
c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50LCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYpOwogICAg
IEZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVz
dGVkKTsKIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oCShyZXZpc2lvbiAyMzQ5MTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBIYXNoQ2hhbmdlRXZlbnQo
Y29uc3QgU3RyaW5nJiBvbGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMKQotICAgICAgICA6IEV2
ZW50KGV2ZW50TmFtZXMoKS5oYXNoY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkKKyAgICAgICAg
OiBFdmVudChldmVudE5hbWVzKCkuaGFzaGNoYW5nZUV2ZW50LCBDYW5CdWJibGU6Ok5vLCBJc0Nh
bmNlbGFibGU6Ok5vKQogICAgICAgICAsIG1fb2xkVVJMKG9sZFVSTCkKICAgICAgICAgLCBtX25l
d1VSTChuZXdVUkwpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcAkocmV2
aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZWY8SW5wdXRFdmVudD4gSW5wdXRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwg
UmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKQorUmVmPElucHV0RXZlbnQ+
IElucHV0RXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBpbnB1dFR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5j
ZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBS
ZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3QgVmVjdG9yPFJlZlB0cjxT
dGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW5wdXRFdmVudChldmVudFR5cGUsIGlucHV0VHlwZSwgY2FuQnViYmxlLCBj
YW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhLCBXVEZNb3ZlKGRhdGFUcmFuc2ZlciksIHRh
cmdldFJhbmdlcywgZGV0YWlsKSk7CiB9CiAKLUlucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwp
CitJbnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIGlucHV0VHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxl
IGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVm
UHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRldGFpbCkKICAgICA6IFVJRXZl
bnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFp
bCkKICAgICAsIG1faW5wdXRUeXBlKGlucHV0VHlwZSkKICAgICAsIG1fZGF0YShkYXRhKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vSW5wdXRFdmVudC5oCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vSW5wdXRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMyArMzksMTUgQEAg
cHVibGljOgogICAgICAgICBTdHJpbmcgZGF0YTsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxJ
bnB1dEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0
cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5z
ZmVyPiYmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcywg
aW50IGRldGFpbCk7CisgICAgc3RhdGljIFJlZjxJbnB1dEV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBDYW5CdWJibGUs
IElzQ2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCisgICAgICAgIGNvbnN0
IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOworCiAgICAgc3RhdGlj
IFJlZjxJbnB1dEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJ
bml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnB1dEV2ZW50KHR5cGUsIGluaXRp
YWxpemVyLCBpc1RydXN0ZWQpKTsKICAgICB9CiAKLSAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcm
IGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGlj
UmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKKyAgICBJbnB1dEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgQ2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBk
YXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1Jh
bmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRldGFpbCk7CiAgICAgSW5wdXRFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBi
b29sIGlzSW5wdXRFdmVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQs
NyArOTQsOSBAQCBzdGF0aWMgaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleUxvY2F0aW9uCiBpbmxp
bmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIAogaW5saW5lIEtl
eWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBr
ZXksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3KQotICAgIDogVUlFdmVudFdpdGhLZXlTdGF0
ZShldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgdHJ1ZSwgdHJ1ZSwg
a2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LmNvcHlSZWYo
KSwgMCwga2V5LmN0cmxLZXkoKSwga2V5LmFsdEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1l
dGFLZXkoKSwgZmFsc2UsIGtleS5tb2RpZmllcnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpN
b2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQorICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5
cGVGb3JLZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgQ2FuQnViYmxlOjpZZXMsIElzQ2Fu
Y2VsYWJsZTo6WWVzLAorICAgICAgICBrZXkudGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9u
aWNUaW1lKCksIHZpZXcuY29weVJlZigpLCAwLCBrZXkuY3RybEtleSgpLCBrZXkuYWx0S2V5KCks
IGtleS5zaGlmdEtleSgpLCBrZXkubWV0YUtleSgpLAorICAgICAgICBmYWxzZSwga2V5Lm1vZGlm
aWVycygpLmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBzTG9ja0tleSkpCiAg
ICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1L
ZXlib2FyZEV2ZW50PihrZXkpKQogI2lmIEVOQUJMRShLRVlCT0FSRF9LRVlfQVRUUklCVVRFKQog
ICAgICwgbV9rZXkoa2V5LmtleSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5j
cHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIGlubGluZSBNZXNzYWdlRXZlbnQ6
Ok1lc3NhZ2VFdmVudChjb25zdCAKIH0KIAogaW5saW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2
ZW50KERhdGFUeXBlJiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYg
bGFzdEV2ZW50SWQsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSwg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCi0gICAgOiBFdmVudChldmVudE5h
bWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVudChldmVudE5hbWVz
KCkubWVzc2FnZUV2ZW50LCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQogICAgICwg
bV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgLCBtX2xh
c3RFdmVudElkKGxhc3RFdmVudElkKQpAQCAtNTksNyArNTksNyBAQCBpbmxpbmUgTWVzc2FnZUV2
ZW50OjpNZXNzYWdlRXZlbnQoRGF0YVR5CiB9CiAKIGlubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3Nh
Z2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQpCi0gICAgOiBFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVudCh0eXBlLCBD
YW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQogICAgICwgbV9kYXRhKFdURk1vdmUoZGF0
YSkpCiAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgLCBtX2xhc3RFdmVudElkKGxhc3RFdmVu
dElkKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw4ICs0Nyw4IEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QKIFJl
ZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50LCBpbnQgZGV0YWlsLCBOb2RlKiByZWxhdGVkVGFyZ2V0KQogewogICAgIGJvb2wg
aXNNb3VzZUVudGVyT3JMZWF2ZSA9IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VlbnRl
ckV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VsZWF2ZUV2ZW50OwotICAg
IGJvb2wgaXNDYW5jZWxhYmxlID0gZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVF
dmVudCAmJiAhaXNNb3VzZUVudGVyT3JMZWF2ZTsKLSAgICBib29sIGNhbkJ1YmJsZSA9ICFpc01v
dXNlRW50ZXJPckxlYXZlOworICAgIGF1dG8gaXNDYW5jZWxhYmxlID0gZXZlbnRUeXBlICE9IGV2
ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCAmJiAhaXNNb3VzZUVudGVyT3JMZWF2ZSA/IElzQ2Fu
Y2VsYWJsZTo6WWVzIDogSXNDYW5jZWxhYmxlOjpObzsKKyAgICBhdXRvIGNhbkJ1YmJsZSA9ICFp
c01vdXNlRW50ZXJPckxlYXZlID8gQ2FuQnViYmxlOjpZZXMgOiBDYW5CdWJibGU6Ok5vOwogCiAg
ICAgcmV0dXJuIE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGNhbkJ1YmJsZSwgaXNDYW5j
ZWxhYmxlLCBldmVudC50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgV1RG
TW92ZSh2aWV3KSwKICAgICAgICAgZGV0YWlsLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLngoKSwg
ZXZlbnQuZ2xvYmFsUG9zaXRpb24oKS55KCksIGV2ZW50LnBvc2l0aW9uKCkueCgpLCBldmVudC5w
b3NpdGlvbigpLnkoKSwKQEAgLTU5LDcgKzU5LDcgQEAgUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZl
bnQ6OmNyZWF0ZShjb25zdAogICAgICAgICByZWxhdGVkVGFyZ2V0LCBldmVudC5mb3JjZSgpLCBl
dmVudC5zeW50aGV0aWNDbGlja1R5cGUoKSk7CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VY
LCBpbnQgcGFnZVksCitSZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmll
dywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBw
YWdlWSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIGludCBtb3ZlbWVudFgsIGludCBt
b3ZlbWVudFksCiAjZW5kaWYKQEAgLTczLDE0ICs3MywxNCBAQCBSZWY8TW91c2VFdmVudD4gTW91
c2VFdmVudDo6Y3JlYXRlKGNvbnN0CiAgICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXks
IG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywgcmVsYXRlZFRhcmdldCwgZm9yY2UsIHN5bnRoZXRp
Y0NsaWNrVHlwZSwgZGF0YVRyYW5zZmVyLCBpc1NpbXVsYXRlZCkpOwogfQogCi1SZWY8TW91c2VF
dmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmll
dywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50
IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wg
bWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1
bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFy
Z2V0KQorUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFi
bGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwg
aW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29s
IGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0
b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNr
VHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTW91c2VFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92
ZSh2aWV3KSwgZGV0YWlsLCB7IHNjcmVlblgsIHNjcmVlblkgfSwgeyBjbGllbnRYLCBjbGllbnRZ
IH0sIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywg
c3ludGhldGljQ2xpY2tUeXBlLCByZWxhdGVkVGFyZ2V0KSk7CiB9CiAKIE1vdXNlRXZlbnQ6Ok1v
dXNlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLU1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1v
bm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRl
dGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2lu
ZG93TG9jYXRpb24sCitNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwg
TW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQg
ZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50JiB3
aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBjb25zdCBJ
bnRQb2ludCYgbW92ZW1lbnREZWx0YSwKICNlbmRpZgpAQCAtMTAwLDcgKzEwMCw3IEBAIE1vdXNl
RXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW4KIHsKIH0KIAotTW91c2VFdmVudDo6
TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRhaWws
IGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExv
Y2F0aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1l
dGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5z
aWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdl
dCkKK01vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0
aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24sIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5
cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KQogICAgIDogTW91c2VSZWxhdGVkRXZlbnQo
ZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWU6Om5vdygpLCBX
VEZNb3ZlKHZpZXcpLCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB7IH0sCiAjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKICAgICAgICAgeyB9LApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01vdXNl
RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCShy
ZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMTkgQEAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50Owog
CiBjbGFzcyBNb3VzZUV2ZW50IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50IHsKIHB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90
b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWwsIGlu
dCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAs
CisgICAgICAgIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgs
IGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQogICAgICAgICBpbnQgbW92ZW1lbnRYLCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCi0gICAg
ICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtl
eSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBFdmVudFRh
cmdldCogcmVsYXRlZFRhcmdldCwgZG91YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0
aWNDbGlja1R5cGUsIERhdGFUcmFuc2ZlciogPSBudWxscHRyLCBib29sIGlzU2ltdWxhdGVkID0g
ZmFsc2UpOworICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0
dG9ucywKKyAgICAgICAgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwg
dW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqID0gbnVsbHB0
ciwgYm9vbCBpc1NpbXVsYXRlZCA9IGZhbHNlKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRh
aWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpOwogCi0gICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVl
blgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQg
YnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWND
bGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKKyAgICBzdGF0aWMgUmVmPE1v
dXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQ2FuQnViYmxl
LCBJc0NhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKKyAgICAgICAgaW50IGRldGFp
bCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJv
b2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwKKyAg
ICAgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNp
Z25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0
KTsKIAogICAgIHN0YXRpYyBSZWY8TW91c2VFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQpOyB9CiAKQEAgLTUwLDggKzU0LDEzIEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgfk1vdXNlRXZlbnQoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWws
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOwotICAgIHZvaWQg
aW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCBKU0M6OkpTVmFsdWUgcmVsYXRlZFRhcmdldCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBp
bml0TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKKyAgICAgICAgaW50IGRldGFp
bCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJv
b2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwKKyAg
ICAgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCk7
CisKKyAgICB2b2lkIGluaXRNb3VzZUV2ZW50UXVpcmsoSlNDOjpFeGVjU3RhdGUmLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCisgICAgICAgIGludCBk
ZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZ
LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXks
CisgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgSlNDOjpKU1ZhbHVlIHJlbGF0ZWRUYXJn
ZXQpOwogCiAgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9idXR0
b247IH0KICAgICB1bnNpZ25lZCBzaG9ydCBidXR0b25zKCkgY29uc3QgeyByZXR1cm4gbV9idXR0
b25zOyB9CkBAIC03MSw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBpbnQgd2hpY2goKSBjb25zdCBm
aW5hbDsKIAogcHJvdGVjdGVkOgotICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVz
dGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAorICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1l
c3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAgICAgICAgaW50IGRldGFpbCwgY29uc3Qg
SW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRpb24s
CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgY29uc3QgSW50UG9pbnQmIG1vdmVt
ZW50RGVsdGEsCkBAIC03OSw3ICs4OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBz
aG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsCiAgICAgICAgIEV2ZW50VGFyZ2V0
KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0Ns
aWNrVHlwZSwgRGF0YVRyYW5zZmVyKiwgYm9vbCBpc1NpbXVsYXRlZCk7CiAKLSAgICBNb3VzZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAorICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmLAogICAgICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24s
IGNvbnN0IEludFBvaW50JiBjbGllbnRMb2NhdGlvbiwKICAgICAgICAgYm9vbCBjdHJsS2V5LCBi
b29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LAogICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5
bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTW91c2VSZWxhdGVk
RXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCitNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxh
dGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIENhbkJ1YmJsZSBjYW5CdWJi
bGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJ
bnRQb2ludCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnRE
ZWx0YSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oCShyZXZpc2lv
biAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBN
b3VzZVJlbGF0ZWRFdmVudCgpID0gZGVmYXVsdDsKLSAgICBNb3VzZVJlbGF0ZWRFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1v
bm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCisgICAgTW91c2VS
ZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2Vs
YWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAg
ICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJ
bnRQb2ludCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAg
ICAgY29uc3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1NdXRhdGlvbkV2ZW50OjpNdXRhdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTm9kZSog
cmVsYXRlZE5vZGUsIGNvbnN0IFN0cmluZyYgcHJldlZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1Zh
bHVlKQorTXV0YXRpb25FdmVudDo6TXV0YXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBOb2RlKiBy
ZWxhdGVkTm9kZSwgY29uc3QgU3RyaW5nJiBwcmV2VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFs
dWUpCiAgICAgOiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX3Jl
bGF0ZWROb2RlKHJlbGF0ZWROb2RlKQogICAgICwgbV9wcmV2VmFsdWUocHJldlZhbHVlKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5oCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICsz
Niw5IEBAIHB1YmxpYzoKICAgICAgICAgUkVNT1ZBTCA9IDMKICAgICB9OwogCi0gICAgc3RhdGlj
IFJlZjxNdXRhdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgTm9kZSogcmVsYXRlZE5vZGUgPSBudWxscHRyLCBjb25zdCBTdHJpbmcmIHBy
ZXZWYWx1ZSA9IFN0cmluZygpLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlID0gU3RyaW5nKCkpCisg
ICAgc3RhdGljIFJlZjxNdXRhdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBOb2RlKiByZWxhdGVkTm9kZSA9IG51bGxwdHIsIGNv
bnN0IFN0cmluZyYgcHJldlZhbHVlID0gU3RyaW5nKCksIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUg
PSBTdHJpbmcoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE11dGF0aW9u
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBmYWxzZSwgcmVsYXRlZE5vZGUsIHByZXZWYWx1ZSwgbmV3
VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTXV0YXRpb25FdmVudCh0eXBl
LCBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZTo6Tm8sIHJlbGF0ZWROb2RlLCBwcmV2VmFsdWUsIG5l
d1ZhbHVlKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxNdXRhdGlvbkV2ZW50PiBjcmVhdGVG
b3JCaW5kaW5ncygpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBN
dXRhdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwotICAgIE11dGF0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBOb2RlKiByZWxh
dGVkTm9kZSwgY29uc3QgU3RyaW5nJiBwcmV2VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUp
OworICAgIE11dGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUs
IElzQ2FuY2VsYWJsZSwgTm9kZSogcmVsYXRlZE5vZGUsIGNvbnN0IFN0cmluZyYgcHJldlZhbHVl
LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKTsKIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50
ZXJmYWNlKCkgY29uc3QgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDIz
NDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjM0MiwxNCArMjM0MiwxNCBAQCB2b2lkIE5vZGU6OmRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZl
bnQoCiAgICAgaWYgKCFwYXJlbnROb2RlKCkgJiYgIWhhc0V2ZW50TGlzdGVuZXJzKHN1YnRyZWVN
b2RpZmllZEV2ZW50TmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoU2NvcGVk
RXZlbnQoTXV0YXRpb25FdmVudDo6Y3JlYXRlKHN1YnRyZWVNb2RpZmllZEV2ZW50TmFtZSwgdHJ1
ZSkpOworICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0YXRpb25FdmVudDo6Y3JlYXRlKHN1YnRy
ZWVNb2RpZmllZEV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzKSk7CiB9CiAKIHZvaWQg
Tm9kZTo6ZGlzcGF0Y2hET01BY3RpdmF0ZUV2ZW50KEV2ZW50JiB1bmRlcmx5aW5nQ2xpY2tFdmVu
dCkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihTY3JpcHREaXNhbGxv
d2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNTY3JpcHRBbGxvd2VkKCkpOwogICAgIGludCBkZXRh
aWwgPSBpczxVSUV2ZW50Pih1bmRlcmx5aW5nQ2xpY2tFdmVudCkgPyBkb3duY2FzdDxVSUV2ZW50
Pih1bmRlcmx5aW5nQ2xpY2tFdmVudCkuZGV0YWlsKCkgOiAwOwotICAgIGF1dG8gZXZlbnQgPSBV
SUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTUFjdGl2YXRlRXZlbnQsIHRydWUsIHRydWUs
IGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgZGV0YWlsKTsKKyAgICBhdXRvIGV2ZW50ID0gVUlF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01BY3RpdmF0ZUV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgZG9jdW1lbnQoKS53aW5kb3dQcm94
eSgpLCBkZXRhaWwpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQoJnVuZGVybHlpbmdD
bGlja0V2ZW50KTsKICAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KGV2ZW50KTsKICAgICBpZiAoZXZl
bnQtPmRlZmF1bHRIYW5kbGVkKCkpCkBAIC0yMzY5LDcgKzIzNjksNyBAQCBib29sIE5vZGU6OmRp
c3BhdGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0CiAKIHZvaWQgTm9kZTo6ZGlzcGF0Y2hJbnB1dEV2
ZW50KCkKIHsKLSAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmlucHV0RXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgZGlzcGF0Y2hTY29wZWRFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZ
ZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgTm9kZTo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vT3ZlcmZs
b3dFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZl
bnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vT3ZlcmZsb3dF
dmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgT3ZlcmZsb3dFdmVudDo6
T3ZlcmZsb3dFdmVudCgpCiB9CiAKIE92ZXJmbG93RXZlbnQ6Ok92ZXJmbG93RXZlbnQoYm9vbCBo
b3Jpem9udGFsT3ZlcmZsb3dDaGFuZ2VkLCBib29sIGhvcml6b250YWxPdmVyZmxvdywgYm9vbCB2
ZXJ0aWNhbE92ZXJmbG93Q2hhbmdlZCwgYm9vbCB2ZXJ0aWNhbE92ZXJmbG93KQotICAgIDogRXZl
bnQoZXZlbnROYW1lcygpLm92ZXJmbG93Y2hhbmdlZEV2ZW50LCBmYWxzZSwgZmFsc2UpCisgICAg
OiBFdmVudChldmVudE5hbWVzKCkub3ZlcmZsb3djaGFuZ2VkRXZlbnQsIENhbkJ1YmJsZTo6Tm8s
IElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2hvcml6b250YWxPdmVyZmxvdyhob3Jpem9udGFs
T3ZlcmZsb3cpCiAgICAgLCBtX3ZlcnRpY2FsT3ZlcmZsb3codmVydGljYWxPdmVyZmxvdykKIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAJKHJldmlz
aW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBQYWdlVHJhbnNpdGlvbkV2ZW50OjpQYWdlVHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBwZXJzaXN0ZWQpCi0gICAgOiBFdmVudCh0eXBlLCB0cnVlLCB0cnVl
KQorICAgIDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpZZXMsIElzQ2FuY2VsYWJsZTo6WWVzKQog
ICAgICwgbV9wZXJzaXN0ZWQocGVyc2lzdGVkKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1BvcFN0YXRlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Q
b3BTdGF0ZUV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L1BvcFN0YXRlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIFBvcFN0
YXRlRXZlbnQ6OlBvcFN0YXRlRXZlbnQoY29uc3QgQXRvbWkKIH0KIAogUG9wU3RhdGVFdmVudDo6
UG9wU3RhdGVFdmVudChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIHNlcmlhbGl6ZWRT
dGF0ZSwgSGlzdG9yeSogaGlzdG9yeSkKLSAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5wb3BzdGF0
ZUV2ZW50LCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVudChldmVudE5hbWVzKCkucG9wc3RhdGVF
dmVudCwgQ2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fc2VyaWFsaXpl
ZFN0YXRlKFdURk1vdmUoc2VyaWFsaXplZFN0YXRlKSkKICAgICAsIG1faGlzdG9yeShoaXN0b3J5
KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmNwcAkocmV2aXNpb24gMjM0
OTEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw3ICszNyw3IEBAIFByb2dyZXNzRXZlbnQ6OlByb2dyZXNzRXZlbnQoY29uc3Qg
QXRvbWkKIH0KIAogUHJvZ3Jlc3NFdmVudDo6UHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgbGVuZ3RoQ29tcHV0YWJsZSwgdW5zaWduZWQgbG9uZyBsb25nIGxvYWRl
ZCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsKQotICAgIDogRXZlbnQodHlwZSwgZmFsc2UsIGZh
bHNlKQorICAgIDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykK
ICAgICAsIG1fbGVuZ3RoQ29tcHV0YWJsZShsZW5ndGhDb21wdXRhYmxlKQogICAgICwgbV9sb2Fk
ZWQobG9hZGVkKQogICAgICwgbV90b3RhbCh0b3RhbCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRp
YyBib29sIGlzTGVnYWN5U3VwcG9ydGVkSmF2YVNjcmlwdEwKIAogdm9pZCBTY3JpcHRFbGVtZW50
OjpkaXNwYXRjaEVycm9yRXZlbnQoKQogewotICAgIG1fZWxlbWVudC5kaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAg
IG1fZWxlbWVudC5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9y
RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwog
fQogCiBzdGQ6Om9wdGlvbmFsPFNjcmlwdEVsZW1lbnQ6OlNjcmlwdFR5cGU+IFNjcmlwdEVsZW1l
bnQ6OmRldGVybWluZVNjcmlwdFR5cGUoTGVnYWN5VHlwZVN1cHBvcnQgc3VwcG9ydExlZ2FjeVR5
cGVzKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5UG9saWN5VmlvbGF0
aW9uRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlQb2xp
Y3lWaW9sYXRpb25FdmVudC5oCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VjdXJpdHlQb2xpY3lWaW9s
YXRpb25FdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRv
Y3VtZW50VVJJLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIGJsb2NrZWRV
UkksIGNvbnN0IFN0cmluZyYgdmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgZWZmZWN0
aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsUG9saWN5LCBjb25zdCBTdHJpbmcm
IHNvdXJjZUZpbGUsIHVuc2lnbmVkIHNob3J0IHN0YXR1c0NvZGUsIGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyKQorICAgIHN0YXRpYyBSZWY8U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25F
dmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJs
ZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkksIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmluZyYgYmxvY2tlZFVSSSwgY29uc3QgU3Ry
aW5nJiB2aW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUs
IGNvbnN0IFN0cmluZyYgb3JpZ2luYWxQb2xpY3ksIGNvbnN0IFN0cmluZyYgc291cmNlRmlsZSwg
dW5zaWduZWQgc2hvcnQgc3RhdHVzQ29kZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWN1cml0eVBvbGljeVZp
b2xhdGlvbkV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgZG9jdW1lbnRVUkksIHJl
ZmVycmVyLCBibG9ja2VkVVJJLCB2aW9sYXRlZERpcmVjdGl2ZSwgZWZmZWN0aXZlRGlyZWN0aXZl
LCBvcmlnaW5hbFBvbGljeSwgc291cmNlRmlsZSwgc3RhdHVzQ29kZSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyKSk7CiAgICAgfQpAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICB9CiAKLSAgICBTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBk
b2N1bWVudFVSSSwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiBibG9ja2Vk
VVJJLCBjb25zdCBTdHJpbmcmIHZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGVmZmVj
dGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFBvbGljeSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VGaWxlLCB1bnNpZ25lZCBzaG9ydCBzdGF0dXNDb2RlLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlcikKKyAgICBTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNh
bmNlbGFibGUsIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkksIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGNvbnN0IFN0cmluZyYgYmxvY2tlZFVSSSwgY29uc3QgU3RyaW5nJiB2aW9sYXRlZERpcmVj
dGl2ZSwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxQb2xpY3ksIGNvbnN0IFN0cmluZyYgc291cmNlRmlsZSwgdW5zaWduZWQgc2hvcnQgc3Rh
dHVzQ29kZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiAgICAgICAgIDogRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAgICAgICAsIG1fZG9jdW1lbnRVUkko
ZG9jdW1lbnRVUkkpCiAgICAgICAgICwgbV9yZWZlcnJlcihyZWZlcnJlcikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU2ltdWxhdGVkTW91c2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIFJl
ZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVk
Q2xpY2tTb3VyY2Ugc291cmNlKQotICAgICAgICA6IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCB0cnVl
LCB0cnVlLCB1bmRlcmx5aW5nRXZlbnQgPyB1bmRlcmx5aW5nRXZlbnQtPnRpbWVTdGFtcCgpIDog
TW9ub3RvbmljVGltZTo6bm93KCksIFdURk1vdmUodmlldyksIDAsIHsgfSwgeyB9LAorICAgICAg
ICA6IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpZ
ZXMsIHVuZGVybHlpbmdFdmVudCA/IHVuZGVybHlpbmdFdmVudC0+dGltZVN0YW1wKCkgOiBNb25v
dG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgMCwgeyB9LCB7IH0sCiAjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKICAgICAgICAgICAgIHsgfSwKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1RleHRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1RleHRFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIFRleHRFdmVudDo6
VGV4dEV2ZW50KCkKIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucHV0VHlw
ZSkKLSAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVl
LCBXVEZNb3ZlKHZpZXcpLCAwKQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0
RXZlbnQsIENhbkJ1YmJsZTo6WWVzLCBJc0NhbmNlbGFibGU6OlllcywgV1RGTW92ZSh2aWV3KSwg
MCkKICAgICAsIG1faW5wdXRUeXBlKGlucHV0VHlwZSkKICAgICAsIG1fZGF0YShkYXRhKQogICAg
ICwgbV9zaG91bGRTbWFydFJlcGxhY2UoZmFsc2UpCkBAIC04Miw3ICs4Miw3IEBAIFRleHRFdmVu
dDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4KIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZl
bnQoUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNob3VsZFNtYXJ0UmVw
bGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxC
bG9ja3F1b3RlSGFuZGxpbmcpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRF
dmVudCwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCkKKyAgICA6IFVJRXZlbnQoZXZlbnRO
YW1lcygpLnRleHRJbnB1dEV2ZW50LCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpZZXMs
IFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dFBhc3Rl
KQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBh
c3RpbmdGcmFnbWVudCkpCkBAIC05Myw3ICs5Myw3IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KFJl
ZlB0cjxXaW5kb3dQcm94eT4KIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoUmVmUHRyPFdpbmRv
d1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgVmVjdG9yPERpY3RhdGlv
bkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKQotICAgIDogVUlFdmVudChldmVu
dE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdURk1vdmUodmlldyksIDApCisg
ICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgQ2FuQnViYmxlOjpZZXMs
IElzQ2FuY2VsYWJsZTo6WWVzLCBXVEZNb3ZlKHZpZXcpLCAwKQogICAgICwgbV9pbnB1dFR5cGUo
VGV4dEV2ZW50SW5wdXREaWN0YXRpb24pCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fc2hv
dWxkU21hcnRSZXBsYWNlKGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zaXRp
b25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zaXRpb25F
dmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0
aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFRyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFwc2Vk
VGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50KQotICAgIDogRXZlbnQodHlwZSwgdHJ1
ZSwgdHJ1ZSkKKyAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6WWVzLCBJc0NhbmNlbGFibGU6
OlllcykKICAgICAsIG1fcHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkKICAgICAsIG1fZWxhcHNl
ZFRpbWUoZWxhcHNlZFRpbWUpCiAgICAgLCBtX3BzZXVkb0VsZW1lbnQocHNldWRvRWxlbWVudCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9VSUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDE1IEBA
IFVJRXZlbnQ6OlVJRXZlbnQoKQogewogfQogCi1VSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJn
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKLSAgICA6IEV2
ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnKQorVUlFdmVudDo6VUlF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwg
SXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3QXJnLCBp
bnQgZGV0YWlsQXJnKQorICAgIDogRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUpCiAgICAgLCBtX3ZpZXcoV1RGTW92ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFp
bEFyZykKIHsKIH0KIAotVUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGlt
ZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJn
KQotICAgIDogRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIHRp
bWVzdGFtcCkKK1VJRXZlbnQ6OlVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXdBcmcsIGludCBkZXRhaWxB
cmcpCisgICAgOiBFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0
YW1wKQogICAgICwgbV92aWV3KFdURk1vdmUodmlld0FyZykpCiAgICAgLCBtX2RldGFpbChkZXRh
aWxBcmcpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcg
QEAgdHlwZWRlZiBXaW5kb3dQcm94eSBBYnN0cmFjdFZpZXc7CiAKIGNsYXNzIFVJRXZlbnQgOiBw
dWJsaWMgRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRhaWwpCisgICAgc3RhdGljIFJlZjxV
SUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGludCBkZXRhaWwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKSk7CiAg
ICAgfQpAQCAtNjUsOCArNjUsOCBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVSUV2ZW50
KCk7Ci0gICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7Ci0g
ICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+
JiYsIGludCBkZXRhaWwpOworICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBD
YW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgZGV0YWls
KTsKKyAgICBVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0Nh
bmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYs
IGludCBkZXRhaWwpOwogICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVUlF
dmVudEluaXQmLCBJc1RydXN0ZWQpOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vVUlFdmVudFdpdGhLZXlTdGF0ZS5oCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBVSUV2ZW50V2l0aEtleVN0YXRlKCkgPSBk
ZWZhdWx0OwogCi0gICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3LCBpbnQgZGV0YWlsLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0
S2V5LCBib29sIG1ldGFLZXkpCisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxl
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBi
b29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQogICAgICAgICA6IFVJRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAg
ICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQpA
QCAtNDksNyArNDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAotICAgIFVJRXZlbnRX
aXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsCisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBNb25vdG9u
aWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgIGlu
dCBkZXRhaWwsIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wg
bWV0YUtleSwgYm9vbCBhbHRHcmFwaEtleSwgYm9vbCBjYXBzTG9ja0tleSkKICAgICAgICAgICAg
IDogVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RGTW92
ZSh2aWV3KSwgZGV0YWlsKQogICAgICAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAkocmV2aXNpb24g
MjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBXZWJLaXRBbmltYXRpb25FdmVudDo6V2Vi
S2l0QW5pbWF0aW9uRXZlCiB9CiAKIFdlYktpdEFuaW1hdGlvbkV2ZW50OjpXZWJLaXRBbmltYXRp
b25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lKQotICAgIDogRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSkK
KyAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6WWVzLCBJc0NhbmNlbGFibGU6OlllcykKICAg
ICAsIG1fYW5pbWF0aW9uTmFtZShhbmltYXRpb25OYW1lKQogICAgICwgbV9lbGFwc2VkVGltZShl
bGFwc2VkVGltZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9u
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0
aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2Vi
S2l0VHJhbnNpdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQ6OldlYktpdFRyYW5z
aXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcHJvcGVy
dHlOYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCkK
LSAgICA6IEV2ZW50KHR5cGUsIHRydWUsIHRydWUpCisgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJi
bGU6OlllcywgSXNDYW5jZWxhYmxlOjpZZXMpCiAgICAgLCBtX3Byb3BlcnR5TmFtZShwcm9wZXJ0
eU5hbWUpCiAgICAgLCBtX2VsYXBzZWRUaW1lKGVsYXBzZWRUaW1lKQogICAgICwgbV9wc2V1ZG9F
bGVtZW50KHBzZXVkb0VsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCShy
ZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgaW5saW5lIFdoZWVsRXZlbnQ6OldoZWVsRXZl
bnQoY29uc3QgQXRvbQogfQogCiBpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKLSAg
ICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2ZW50
LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCBXVEZNb3ZlKHZpZXcpLCAw
LCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCisgICAgOiBNb3VzZUV2
ZW50KGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50LCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxl
OjpZZXMsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCBXVEZN
b3ZlKHZpZXcpLCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgLCB7IH0KICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsMTIgKzExMCwxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGRpc3BhdGNoQmVmb3JlSW5w
dXRFdmVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0VHlwZSwg
Y29uc3QgU3RyaW5nJiBkYXRhID0geyB9LCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFu
c2ZlciA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0
UmFuZ2VzID0geyB9LCBib29sIGNhbmNlbGFibGUgPSB0cnVlKQorc3RhdGljIGJvb2wgZGlzcGF0
Y2hCZWZvcmVJbnB1dEV2ZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmIGRhdGEgPSB7IH0sIFJlZlB0cjxEYXRhVHJhbnNmZXI+
JiYgZGF0YVRyYW5zZmVyID0gbnVsbHB0ciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5n
ZT4+JiB0YXJnZXRSYW5nZXMgPSB7IH0sIEV2ZW50OjpJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSA9
IEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykKIHsKICAgICBpZiAoIWVsZW1lbnQuZG9jdW1lbnQo
KS5zZXR0aW5ncygpLmlucHV0RXZlbnRzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIGF1dG8gZXZlbnQgPSBJbnB1dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJlZm9y
ZWlucHV0RXZlbnQsIGlucHV0VHlwZSwgdHJ1ZSwgY2FuY2VsYWJsZSwgZWxlbWVudC5kb2N1bWVu
dCgpLndpbmRvd1Byb3h5KCksIGRhdGEsIFdURk1vdmUoZGF0YVRyYW5zZmVyKSwgdGFyZ2V0UmFu
Z2VzLCAwKTsKKyAgICBhdXRvIGV2ZW50ID0gSW5wdXRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5iZWZvcmVpbnB1dEV2ZW50LCBpbnB1dFR5cGUsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgY2Fu
Y2VsYWJsZSwgZWxlbWVudC5kb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIGRhdGEsIFdURk1vdmUo
ZGF0YVRyYW5zZmVyKSwgdGFyZ2V0UmFuZ2VzLCAwKTsKICAgICBlbGVtZW50LmRpc3BhdGNoRXZl
bnQoZXZlbnQpOwogICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KQEAg
LTEyNyw3ICsxMjcsOCBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaElucHV0RXZlbnQoRWxlbWVudCYg
CiAgICAgICAgIC8vIGJ1dCBUeXBpbmdDb21tYW5kcyBhcmUgc3BlY2lhbCBpbiB0aGF0IGV4aXN0
aW5nIFR5cGluZ0NvbW1hbmRzIHRoYXQgYXJlIGFwcGxpZWQgYWdhaW4gZmlyZSBpbnB1dCBldmVu
dHMgKmZyb20gd2l0aGluKiB0aGUgc2NvcGUgYnkgY2FsbGluZyB0eXBpbmdBZGRlZFRvT3BlbkNv
bW1hbmQuCiAgICAgICAgIC8vIEluc3RlYWQsIFR5cGluZ0NvbW1hbmRzIHNob3VsZCBhbHdheXMg
ZGlzcGF0Y2ggZXZlbnRzIHN5bmNocm9ub3VzbHkgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc2NvcGVk
IHF1ZXVlIGluIENvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBseS4gVG8gd29yayBhcm91bmQgdGhp
cyBmb3IgdGhlCiAgICAgICAgIC8vIHRpbWUgYmVpbmcsIGp1c3QgcmV2ZXJ0IGJhY2sgdG8gY2Fs
bGluZyBkaXNwYXRjaFNjb3BlZEV2ZW50LgotICAgICAgICBlbGVtZW50LmRpc3BhdGNoU2NvcGVk
RXZlbnQoSW5wdXRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50LCBpbnB1dFR5
cGUsIHRydWUsIGZhbHNlLCBlbGVtZW50LmRvY3VtZW50KCkud2luZG93UHJveHkoKSwgZGF0YSwg
V1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5nZXMsIDApKTsKKyAgICAgICAgZWxlbWVu
dC5kaXNwYXRjaFNjb3BlZEV2ZW50KElucHV0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW5w
dXRFdmVudCwgaW5wdXRUeXBlLCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNl
bGFibGU6Ok5vLAorICAgICAgICAgICAgZWxlbWVudC5kb2N1bWVudCgpLndpbmRvd1Byb3h5KCks
IGRhdGEsIFdURk1vdmUoZGF0YVRyYW5zZmVyKSwgdGFyZ2V0UmFuZ2VzLCAwKSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIGVsZW1lbnQuZGlzcGF0Y2hJbnB1dEV2ZW50KCk7CiB9CkBAIC0xMDI5LDcg
KzEwMzAsNyBAQCBzdGF0aWMgdm9pZCBub3RpZnlUZXh0RnJvbUNvbnRyb2xzKEVsZW1lCiAgICAg
ICAgIGVuZGluZ1RleHRDb250cm9sLT5kaWRFZGl0SW5uZXJUZXh0VmFsdWUoKTsKIH0KIAotc3Rh
dGljIGJvb2wgZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhSZWZQdHI8RWxlbWVudD4gc3RhcnRS
b290LCBSZWZQdHI8RWxlbWVudD4gZW5kUm9vdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dFR5
cGVOYW1lLCBjb25zdCBTdHJpbmcmIGRhdGEgPSB7IH0sIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYg
ZGF0YVRyYW5zZmVyID0gbnVsbHB0ciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+
JiB0YXJnZXRSYW5nZXMgPSB7IH0sIGJvb2wgY2FuY2VsYWJsZSA9IHRydWUpCitzdGF0aWMgYm9v
bCBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKFJlZlB0cjxFbGVtZW50PiBzdGFydFJvb3QsIFJl
ZlB0cjxFbGVtZW50PiBlbmRSb290LCBjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0VHlwZU5hbWUs
IGNvbnN0IFN0cmluZyYgZGF0YSA9IHsgfSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJh
bnNmZXIgPSBudWxscHRyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdl
dFJhbmdlcyA9IHsgfSwgRXZlbnQ6OklzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlID0gRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6WWVzKQogewogICAgIGJvb2wgY29udGludWVXaXRoRGVmYXVsdEJlaGF2aW9y
ID0gdHJ1ZTsKICAgICBpZiAoc3RhcnRSb290KQpAQCAtMTA1Niw3ICsxMDU3LDggQEAgYm9vbCBF
ZGl0b3I6OndpbGxBcHBseUVkaXRpbmcoQ29tcG9zaXRlRQogICAgIGlmICghY29tcG9zaXRpb24p
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGRpc3BhdGNoQmVmb3JlSW5wdXRF
dmVudHMoY29tcG9zaXRpb24tPnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3Np
dGlvbi0+ZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21tYW5kLmlucHV0RXZlbnRUeXBl
TmFtZSgpLCBjb21tYW5kLmlucHV0RXZlbnREYXRhKCksIGNvbW1hbmQuaW5wdXRFdmVudERhdGFU
cmFuc2ZlcigpLCB0YXJnZXRSYW5nZXMsIGNvbW1hbmQuaXNCZWZvcmVJbnB1dEV2ZW50Q2FuY2Vs
YWJsZSgpKTsKKyAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhjb21wb3NpdGlv
bi0+c3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNvbXBvc2l0aW9uLT5lbmRpbmdSb290
RWRpdGFibGVFbGVtZW50KCksIGNvbW1hbmQuaW5wdXRFdmVudFR5cGVOYW1lKCksCisgICAgICAg
IGNvbW1hbmQuaW5wdXRFdmVudERhdGEoKSwgY29tbWFuZC5pbnB1dEV2ZW50RGF0YVRyYW5zZmVy
KCksIHRhcmdldFJhbmdlcywgY29tbWFuZC5pc0JlZm9yZUlucHV0RXZlbnRDYW5jZWxhYmxlKCkg
PyBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMgOiBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiB9
CiAKIHZvaWQgRWRpdG9yOjphcHBsaWVkRWRpdGluZyhDb21wb3NpdGVFZGl0Q29tbWFuZCYgY29t
bWFuZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShy
ZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rp
b246OnNldFNlbGVjdGlvbldpdGhvdXQKICAgICBtX3hQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdh
dGlvbiA9IE5vWFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKCk7CiAgICAgc2VsZWN0RnJh
bWVFbGVtZW50SW5QYXJlbnRJZkZ1bGx5U2VsZWN0ZWQoKTsKICAgICBtX2ZyYW1lLT5lZGl0b3Io
KS5yZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG9sZFNlbGVjdGlvbiwgb3B0aW9ucyk7Ci0gICAg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZURvY3VtZW50RXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuc2VsZWN0aW9uY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgIG1f
ZnJhbWUtPmRvY3VtZW50KCktPmVucXVldWVEb2N1bWVudEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLnNlbGVjdGlvbmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTk2NSw3
ICsxOTY1LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2VsZWN0QWxsKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKHNlbGVjdFN0YXJ0VGFyZ2V0KSB7Ci0gICAgICAgIGF1dG8gZXZlbnQg
PSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zZWxlY3RzdGFydEV2ZW50LCB0cnVlLCB0cnVl
KTsKKyAgICAgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlbGVj
dHN0YXJ0RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
WWVzKTsKICAgICAgICAgc2VsZWN0U3RhcnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwog
ICAgICAgICBpZiAoZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTI0MjUsNyArMjQyNSw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OmRpc3BhdGNoU2Vs
ZWN0U3RhcnQKICAgICBpZiAoIXNlbGVjdFN0YXJ0VGFyZ2V0KQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zZWxlY3Rz
dGFydEV2ZW50LCB0cnVlLCB0cnVlKTsKKyAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuc2VsZWN0c3RhcnRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVu
dDo6SXNDYW5jZWxhYmxlOjpZZXMpOwogICAgIHNlbGVjdFN0YXJ0VGFyZ2V0LT5kaXNwYXRjaEV2
ZW50KGV2ZW50KTsKICAgICByZXR1cm4gIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCShyZXZpc2lv
biAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIEhUTUxEZXRhaWxzRWxlbWVu
dDo6aXNBY3RpdmVTdW1tYXJ5CiB2b2lkIEhUTUxEZXRhaWxzRWxlbWVudDo6ZGlzcGF0Y2hQZW5k
aW5nRXZlbnQoRGV0YWlsRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKQogewogICAgIEFTU0VSVF9V
TlVTRUQoZXZlbnRTZW5kZXIsIGV2ZW50U2VuZGVyID09ICZkZXRhaWxUb2dnbGVFdmVudFNlbmRl
cigpKTsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnRvZ2ds
ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnRvZ2dsZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogdm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldENoYW5nZWRTCiAKIHZvaWQgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6ZGlzcGF0Y2hDaGFuZ2VFdmVudCgpCiB7Ci0gICAgZGlzcGF0Y2hTY29wZWRF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgdHJ1ZSwgZmFsc2Up
KTsKKyAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNo
YW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb3JtQ29udHJv
bENoYW5nZUV2ZW50KCkKQEAgLTQ3NCw3ICs0NzQsNyBAQCBib29sIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OmNoZWNrVmFsaWRpCiAgICAgLy8gQW4gZXZlbnQgaGFuZGxlciBjYW4gZGVyZWYgdGhp
cyBvYmplY3QuCiAgICAgUmVmPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogICAgIFJlZjxEb2N1bWVudD4gb3JpZ2luYWxEb2N1bWVudChkb2N1bWVudCgpKTsK
LSAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW52YWxpZEV2ZW50
LCBmYWxzZSwgdHJ1ZSk7CisgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmludmFsaWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6Olllcyk7CiAgICAgZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgaWYgKCFldmVudC0+ZGVm
YXVsdFByZXZlbnRlZCgpICYmIHVuaGFuZGxlZEludmFsaWRDb250cm9scyAmJiBpc0Nvbm5lY3Rl
ZCgpICYmIG9yaWdpbmFsRG9jdW1lbnQucHRyKCkgPT0gJmRvY3VtZW50KCkpCiAgICAgICAgIHVu
aGFuZGxlZEludmFsaWRDb250cm9scy0+YXBwZW5kKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODMsNyAr
MjgzLDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnByZXBhcmVGb3JTdWJtaXNzaQogCiAgICAg
YXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAKLSAgICBhdXRvIHN1Ym1pdEV2
ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3VibWl0RXZlbnQsIHRydWUsIHRydWUp
OworICAgIGF1dG8gc3VibWl0RXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWJt
aXRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMp
OwogICAgIGRpc3BhdGNoRXZlbnQoc3VibWl0RXZlbnQpOwogCiAgICAgLy8gRXZlbnQgaGFuZGxp
bmcgY291bGQgaGF2ZSByZXN1bHRlZCBpbiBtX3Nob3VsZFN1Ym1pdCBiZWNvbWluZyB0cnVlIGFz
IGEgc2lkZSBlZmZlY3QsIHRvby4KQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEhUTUxGb3JtRWxl
bWVudDo6cmVzZXQoKQogCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNJblJlc2V0RnVuY3Rpb25S
ZXN0b3JlcihtX2lzSW5SZXNldEZ1bmN0aW9uLCB0cnVlKTsKIAotICAgIGF1dG8gZXZlbnQgPSBF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZXNldEV2ZW50LCB0cnVlLCB0cnVlKTsKKyAgICBh
dXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVzZXRFdmVudCwgRXZlbnQ6
OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpOwogICAgIGRpc3BhdGNo
RXZlbnQoZXZlbnQpOwogICAgIGlmICghZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKSkKICAgICAg
ICAgcmVzZXRBc3NvY2lhdGVkRm9ybUNvbnRyb2xFbGVtZW50cygpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3
ICs1OCw3IEBAIHZvaWQgSFRNTEltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCgKICAgICBi
b29sIGVycm9yT2NjdXJyZWQgPSBpbWFnZSgpLT5lcnJvck9jY3VycmVkKCk7CiAgICAgaWYgKCFl
cnJvck9jY3VycmVkICYmIGltYWdlKCktPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0
MDApCiAgICAgICAgIGVycm9yT2NjdXJyZWQgPSBpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVu
dCgpKTsgLy8gQW4gPG9iamVjdD4gY29uc2lkZXJzIGEgNDA0IHRvIGJlIGFuIGVycm9yIGFuZCBz
aG91bGQgZmlyZSBvbmVycm9yLgotICAgIGVsZW1lbnQoKS5kaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXJyb3JPY2N1cnJlZCA/IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IDogZXZlbnROYW1l
cygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgZWxlbWVudCgpLmRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShlcnJvck9jY3VycmVkID8gZXZlbnROYW1lcygpLmVycm9yRXZlbnQg
OiBldmVudE5hbWVzKCkubG9hZEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogU3RyaW5nIEhUTUxJbWFnZUxvYWRlcjo6c291cmNlVVJJ
KGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4NCw3ICsx
NDg0LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpvblNlYXJjaCgpCiAKICAgICBpZiAobV9p
bnB1dFR5cGUpCiAgICAgICAgIGRvd25jYXN0PFNlYXJjaElucHV0VHlwZT4oKm1faW5wdXRUeXBl
LmdldCgpKS5zdG9wU2VhcmNoRXZlbnRUaW1lcigpOwotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuc2VhcmNoRXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zZWFyY2hFdmVudCwgRXZlbnQ6
OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiB2b2lkIEhU
TUxJbnB1dEVsZW1lbnQ6OnJlc3VtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oKQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OTUsOSArNDk1LDkgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2
ZQogewogICAgIEFTU0VSVF9VTlVTRUQoZXZlbnRTZW5kZXIsIGV2ZW50U2VuZGVyID09ICZsaW5r
TG9hZEV2ZW50U2VuZGVyKCkgfHwgZXZlbnRTZW5kZXIgPT0gJmxpbmtFcnJvckV2ZW50U2VuZGVy
KCkpOwogICAgIGlmIChtX2xvYWRlZFJlc291cmNlKQotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAg
ICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBF
dmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICBlbHNl
Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JF
dmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIERPTVRva2VuTGlzdCYgSFRNTExpbmtFbGVtZW50Ojpy
ZWxMaXN0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAko
cmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5MSw3ICsxMDkxLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckFjdGl2ZQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVk
dWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7Ci0gICAgUmVmUHRyPEV2
ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgdHJ1ZSk7CisgICAg
UmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2Fu
QnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsKIAogICAgIC8vIERvbid0IHNl
dCB0aGUgZXZlbnQgdGFyZ2V0LCB0aGUgZXZlbnQgcXVldWUgd2lsbCBzZXQgaXQgaW4gR2VuZXJp
Y0V2ZW50UXVldWU6OnRpbWVyRmlyZWQgYW5kIHNldHRpbmcgaXQgaGVyZQogICAgIC8vIHdpbGwg
dHJpZ2dlciBhbiBBU1NFUlQgaWYgdGhpcyBlbGVtZW50IGhhcyBiZWVuIG1hcmtlZCBmb3IgZGVs
ZXRpb24uCkBAIC0xMTM3LDcgKzExMzcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om5vdGlm
eUFib3V0UGxheWluCiAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOyAvLyBUaGUgJ3BsYXlpbmcnIGV2ZW50IGNhbiBtYWtlIGFyYml0cmFyeSBET00gbXV0YXRp
b25zLgogICAgIG1fcGxheWJhY2tTdGFydGVkVGltZSA9IGN1cnJlbnRNZWRpYVRpbWUoKS50b0Rv
dWJsZSgpOwogICAgIG1faGFzRXZlck5vdGlmaWVkQWJvdXRQbGF5aW5nID0gdHJ1ZTsKLSAgICBk
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCwgZmFs
c2UsIHRydWUpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LnBsYXlpbmdFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6
OlllcykpOwogICAgIHJlc29sdmVQZW5kaW5nUGxheVByb21pc2VzKFdURk1vdmUocGVuZGluZ1Bs
YXlQcm9taXNlcykpOwogCiAgICAgc2NoZWR1bGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0
ZSgpOwpAQCAtMTg5NywxOSArMTg5NywxOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZUFjdGl2ZVRleHRUCiAgICAgICAgIC8vIGNvcnJlY3RseSBpZGVudGlmaWVzIHRoZSB0eXBlIG9m
IHRoZSBldmVudCwgaWYgdGhlIHN0YXJ0VGltZSBpcwogICAgICAgICAvLyBsZXNzIHRoYW4gdGhl
IGVuZFRpbWUgaW4gdGhlIGN1ZS4KICAgICAgICAgaWYgKGV2ZW50VGFzay5zZWNvbmQtPnN0YXJ0
VGltZSgpID49IGV2ZW50VGFzay5zZWNvbmQtPmVuZFRpbWUoKSkgewotICAgICAgICAgICAgYXV0
byBlbnRlckV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW50ZXJFdmVudCwgZmFs
c2UsIGZhbHNlKTsKKyAgICAgICAgICAgIGF1dG8gZW50ZXJFdmVudCA9IEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmVudGVyRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBlbnRlckV2ZW50LT5zZXRUYXJnZXQoZXZlbnRU
YXNrLnNlY29uZCk7CiAgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQo
V1RGTW92ZShlbnRlckV2ZW50KSk7CiAKLSAgICAgICAgICAgIGF1dG8gZXhpdEV2ZW50ID0gRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXhpdEV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAg
ICAgICAgYXV0byBleGl0RXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5leGl0RXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAg
ICAgICAgICBleGl0RXZlbnQtPnNldFRhcmdldChldmVudFRhc2suc2Vjb25kKTsKICAgICAgICAg
ICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV4aXRFdmVudCkpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVudDsKICAgICAg
ICAgICAgIGlmIChldmVudFRhc2suZmlyc3QgPT0gZXZlbnRUYXNrLnNlY29uZC0+c3RhcnRNZWRp
YVRpbWUoKSkKLSAgICAgICAgICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmVudGVyRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZXZlbnQgPSBF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbnRlckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpO
bywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXhpdEV2ZW50LCBmYWxz
ZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuZXhpdEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8pOwogICAgICAgICAgICAgZXZlbnQtPnNldFRhcmdldChldmVudFRhc2suc2Vjb25kKTsK
ICAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50
KSk7CiAgICAgICAgIH0KQEAgLTE5MjIsMTQgKzE5MjIsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVBY3RpdmVUZXh0VAogICAgIC8vIDE1IC0gRm9yIGVhY2ggdGV4dCB0cmFjayBp
biBhZmZlY3RlZCB0cmFja3MsIGluIHRoZSBsaXN0IG9yZGVyLCBxdWV1ZSBhCiAgICAgLy8gdGFz
ayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGN1ZWNoYW5nZSBhdCB0aGUgVGV4dFRyYWNr
IG9iamVjdCwgYW5kLCAuLi4KICAgICBmb3IgKGF1dG8mIGFmZmVjdGVkVHJhY2sgOiBhZmZlY3Rl
ZFRyYWNrcykgewotICAgICAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY3VlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIGF1dG8gZXZlbnQgPSBF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICAgICAgZXZlbnQtPnNldFRhcmdl
dChhZmZlY3RlZFRyYWNrKTsKICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50
KFdURk1vdmUoZXZlbnQpKTsKIAogICAgICAgICAvLyAuLi4gaWYgdGhlIHRleHQgdHJhY2sgaGFz
IGEgY29ycmVzcG9uZGluZyB0cmFjayBlbGVtZW50LCB0byB0aGVuIGZpcmUgYQogICAgICAgICAv
LyBzaW1wbGUgZXZlbnQgbmFtZWQgY3VlY2hhbmdlIGF0IHRoZSB0cmFjayBlbGVtZW50IGFzIHdl
bGwuCiAgICAgICAgIGlmIChpczxMb2FkYWJsZVRleHRUcmFjaz4oKmFmZmVjdGVkVHJhY2spKSB7
Ci0gICAgICAgICAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY3Vl
Y2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBhdXRvIGV2ZW50ID0gRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY3VlY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6
Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBhdXRvIHRyYWNrRWxl
bWVudCA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8TG9hZGFibGVUZXh0VHJhY2s+KCphZmZlY3RlZFRy
YWNrKS50cmFja0VsZW1lbnQoKSk7CiAgICAgICAgICAgICBBU1NFUlQodHJhY2tFbGVtZW50KTsK
ICAgICAgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodHJhY2tFbGVtZW50KTsKQEAgLTQzOTUsNyAr
NDM5NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bGF5b3V0U2l6ZUNoYW5nZWQKICAgICBp
ZiAoYXV0byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCkudmlldygpKSkgewogICAg
ICAgICBhdXRvIHRhc2sgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7
CiAgICAgICAgICAgICBpZiAoYXV0byByb290ID0gdXNlckFnZW50U2hhZG93Um9vdCgpKQotICAg
ICAgICAgICAgICAgIHJvb3QtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZSgicmVzaXplIiwg
ZmFsc2UsIGZhbHNlKSk7CisgICAgICAgICAgICAgICAgcm9vdC0+ZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKCJyZXNpemUiLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKICAgICAgICAgfTsKICAgICAgICAgZnJhbWVWaWV3LT5xdWV1ZVBvc3RMYXlv
dXRDYWxsYmFjayhXVEZNb3ZlKHRhc2spKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYxMiw3ICs2MTIsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNo
ZWNrU25hcHNoCiAgICAgfQogICAgIAogICAgIC8vIE5vdGlmeSB0aGUgc2hhZG93IHJvb3QgdGhh
dCB0aGUgc2l6ZSBjaGFuZ2VkIHNvIHRoYXQgd2UgbWF5IHVwZGF0ZSB0aGUgb3ZlcmxheSBsYXlv
dXQuCi0gICAgZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpLmRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkucmVzaXplRXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgZW5z
dXJlVXNlckFnZW50U2hhZG93Um9vdCgpLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkucmVzaXplRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKIH0KICAgICAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3Vi
ZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IFVSTCYgdXJsKQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2Fk
RXZlbgogICAgIEFTU0VSVCghaGF2ZUZpcmVkTG9hZEV2ZW50KCkpOwogICAgIHNldEhhdmVGaXJl
ZExvYWRFdmVudCh0cnVlKTsKIAotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIFJlZjxFbGVtZW50PiBIVE1MU2NyaXB0
RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihEb2N1bWVu
dCYgdGFyZ2V0RG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw5ICsxNDIsNyBAQCB2b2lkIEhUTUxT
bG90RWxlbWVudDo6ZGlzcGF0Y2hTbG90Q2hhbmdlCiB7CiAgICAgbV9pblNpZ25hbFNsb3RMaXN0
ID0gZmFsc2U7CiAKLSAgICBib29sIGJ1YmJsZXMgPSB0cnVlOwotICAgIGJvb2wgY2FuY2VsYWJs
ZSA9IGZhbHNlOwotICAgIFJlZjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5zbG90Y2hhbmdlRXZlbnQsIGJ1YmJsZXMsIGNhbmNlbGFibGUpOworICAgIFJlZjxFdmVu
dD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zbG90Y2hhbmdlRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgIGV2ZW50
LT5zZXRUYXJnZXQodGhpcyk7CiAgICAgZGlzcGF0Y2hFdmVudChldmVudCk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0OTEw
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIEhUTUxTb3VyY2VFbGVtZW50OjpjYW5jZWxQ
ZW5kaW5nRXJyCiB2b2lkIEhUTUxTb3VyY2VFbGVtZW50OjplcnJvckV2ZW50VGltZXJGaXJlZCgp
CiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTFNvdXJjZUVsZW1lbnQ6OmVycm9yRXZlbnRUaW1lckZp
cmVkIC0gJXAiLCB0aGlzKTsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlKSk7CisgICAgZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CiB9CiAKIGJvb2wgSFRNTFNvdXJjZUVsZW1lbnQ6
OmlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzAsOSArMTMwLDkgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBl
bmRpbmdFdgogewogICAgIEFTU0VSVF9VTlVTRUQoZXZlbnRTZW5kZXIsIGV2ZW50U2VuZGVyID09
ICZzdHlsZUxvYWRFdmVudFNlbmRlcigpKTsKICAgICBpZiAobV9sb2FkZWRTaGVldCkKLSAgICAg
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZh
bHNlLCBmYWxzZSkpOworICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmxvYWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6Ok5vKSk7CiAgICAgZWxzZQotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBkaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiB2b2lkIEhUTUxTdHls
ZUVsZW1lbnQ6Om5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNvdXJjZXMoYm9v
bCBlcnJvck9jY3VycmVkKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2Vs
ZWN0aQogICAgIGNhY2hlU2VsZWN0aW9uKGNvbXB1dGVTZWxlY3Rpb25TdGFydCgpLCBjb21wdXRl
U2VsZWN0aW9uRW5kKCksIGNvbXB1dGVTZWxlY3Rpb25EaXJlY3Rpb24oKSk7CiAgICAgCiAgICAg
aWYgKHNob3VsZEZpcmVTZWxlY3RFdmVudCAmJiBtX2NhY2hlZFNlbGVjdGlvblN0YXJ0ICE9IG1f
Y2FjaGVkU2VsZWN0aW9uRW5kKQotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnNlbGVjdEV2ZW50LCB0cnVlLCBmYWxzZSkpOworICAgICAgICBkaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlbGVjdEV2ZW50LCBFdmVudDo6Q2Fu
QnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw3ICsy
NDcsNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmRpZENvbXBsZXRlTG9hZChMCiAKICAgICBp
ZiAoc3RhdHVzID09IEZhaWx1cmUpIHsKICAgICAgICAgc2V0UmVhZHlTdGF0ZShIVE1MVHJhY2tF
bGVtZW50OjpUUkFDS19FUlJPUik7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGRpc3Bh
dGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNh
bkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmRpZENv
bXBsZXRlTG9hZChMCiAKICAgICAvLyAgICAgMi4gSWYgdGhlIGZpbGUgd2FzIHN1Y2Nlc3NmdWxs
eSBwcm9jZXNzZWQsIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgbG9hZCBhdCB0aGUgCiAgICAg
Ly8gICAgICAgIHRyYWNrIGVsZW1lbnQuCi0gICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgIGRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogLy8gTk9URTogVGhlIHZhbHVl
cyBpbiB0aGUgVGV4dFRyYWNrOjpSZWFkaW5lc3NTdGF0ZSBlbnVtIG11c3Qgc3RheSBpbiBzeW5j
IHdpdGggdGhvc2UgaW4gSFRNTFRyYWNrRWxlbWVudDo6UmVhZHlTdGF0ZS4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTMyLDcgKzUzMiw3IEBAIGJvb2wgTWVkaWFDb250cm9sbGVyOjpoYXNFbmRlZCgpIGNvbnN0CiAK
IHZvaWQgTWVkaWFDb250cm9sbGVyOjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnROYW1lKQogewotICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWUsIGZhbHNlLCB0cnVlKSk7CisgICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6OlllcykpOwogICAgIGlmICghbV9hc3luY0V2ZW50VGltZXIuaXNBY3RpdmUoKSkKICAg
ICAgICAgbV9hc3luY0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwCShyZXZp
c2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRF
dmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1XZWJHTENvbnRleHRFdmVudDo6V2ViR0xDb250ZXh0RXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBT
dHJpbmcmIHN0YXR1c01lc3NhZ2UpCitXZWJHTENvbnRleHRFdmVudDo6V2ViR0xDb250ZXh0RXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNl
bGFibGUgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBzdGF0dXNNZXNzYWdlKQogICAgIDogRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAgICwgbV9zdGF0dXNNZXNzYWdlKHN0
YXR1c01lc3NhZ2UpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bnRleHRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29udGV4dEV2ZW50LmgJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMx
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJHTENvbnRleHRFdmVudCBmaW5h
bCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHTENvbnRleHRF
dmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBzdGF0dXNNZXNzYWdlKQorICAgIHN0YXRpYyBS
ZWY8V2ViR0xDb250ZXh0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENh
bkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcm
IHN0YXR1c01lc3NhZ2UpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJH
TENvbnRleHRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHN0YXR1c01lc3NhZ2Up
KTsKICAgICB9CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBFdmVudEludGVyZmFjZSBl
dmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFdlYkdMQ29u
dGV4dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBzdGF0dXNNZXNzYWdlKTsKKyAgICBXZWJHTENvbnRl
eHRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxl
LCBjb25zdCBTdHJpbmcmIHN0YXR1c01lc3NhZ2UpOwogICAgIFdlYkdMQ29udGV4dEV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgU3RyaW5n
IG1fc3RhdHVzTWVzc2FnZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCShyZXZpc2lvbiAyMzQ5MTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM4LDcgKzUzOCw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXMKICAgICAgICAgLy8gVGhlIEZyYW1lTG9hZGVyQ2xpZW50
IG1pZ2h0IGJsb2NrIGNyZWF0aW9uIG9mIGEgbmV3IFdlYkdMIGNvbnRleHQgZGVzcGl0ZSB0aGUg
cGFnZSBzZXR0aW5nczsgaW4KICAgICAgICAgLy8gcGFydGljdWxhciwgaWYgV2ViR0wgY29udGV4
dHMgd2VyZSBsb3N0IG9uZSBvciBtb3JlIHRpbWVzIHZpYSB0aGUgR0xfQVJCX3JvYnVzdG5lc3Mg
ZXh0ZW5zaW9uLgogICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hbGxvd1dl
YkdMKGZyYW1lLT5zZXR0aW5ncygpLndlYkdMRW5hYmxlZCgpKSkgewotICAgICAgICAgICAgY2Fu
dmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlLCAiV2Vi
IHBhZ2Ugd2FzIG5vdCBhbGxvd2VkIHRvIGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIikpOworICAg
ICAgICAgICAgY2FudmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yRXZlbnQsCisgICAg
ICAgICAgICAgICAgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olll
cywgIldlYiBwYWdlIHdhcyBub3QgYWxsb3dlZCB0byBjcmVhdGUgYSBXZWJHTCBjb250ZXh0LiIp
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKQEAgLTYwMSw4ICs2
MDIsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhcwogCiAgICAg
YXV0byBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0
V2luZG93KTsKICAgICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKSB7Ci0gICAgICAgIGlmIChjYW52YXNFbGVtZW50KQotICAgICAgICAgICAgY2FudmFzRWxl
bWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlLCAiQ291bGQgbm90
IGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIikpOworICAgICAgICBpZiAoY2FudmFzRWxlbWVudCkg
eworICAgICAgICAgICAgY2FudmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yRXZlbnQs
CisgICAgICAgICAgICAgICAgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6OlllcywgIkNvdWxkIG5vdCBjcmVhdGUgYSBXZWJHTCBjb250ZXh0LiIpKTsKKyAgICAgICAg
fQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTYwMTcsNyArNjAyMCw3IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGlzcGF0Y2gKICAgICBpZiAoIWNhbnZh
cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmPFdlYkdMQ29udGV4dEV2ZW50PiBldmVudCA9
IFdlYkdMQ29udGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGxvc3RF
dmVudCwgZmFsc2UsIHRydWUsIGVtcHR5U3RyaW5nKCkpOworICAgIFJlZjxXZWJHTENvbnRleHRF
dmVudD4gZXZlbnQgPSBXZWJHTENvbnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJn
bGNvbnRleHRsb3N0RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpZZXMsIGVtcHR5U3RyaW5nKCkpOwogICAgIGNhbnZhcy0+ZGlzcGF0Y2hFdmVudChldmVu
dCk7CiAgICAgbV9yZXN0b3JlQWxsb3dlZCA9IGV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CiAg
ICAgaWYgKG1fY29udGV4dExvc3RNb2RlID09IFJlYWxMb3N0Q29udGV4dCAmJiBtX3Jlc3RvcmVB
bGxvd2VkKQpAQCAtNjEwMyw3ICs2MTA2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjptYXliZVJlcwogICAgIHNldHVwRmxhZ3MoKTsKICAgICBpbml0aWFsaXplTmV3Q29udGV4
dCgpOwogICAgIGluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMoKTsKLSAgICBjYW52YXMtPmRp
c3BhdGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xj
b250ZXh0cmVzdG9yZWRFdmVudCwgZmFsc2UsIHRydWUsIGVtcHR5U3RyaW5nKCkpKTsKKyAgICBj
YW52YXMtPmRpc3BhdGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkud2ViZ2xjb250ZXh0cmVzdG9yZWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50
OjpJc0NhbmNlbGFibGU6OlllcywgZW1wdHlTdHJpbmcoKSkpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmRpc3BhdGNoQ29udGV4dENoYW5nZWRFdmVudCgpCkBAIC02MTEy
LDcgKzYxMTUsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpc3BhdGNoCiAg
ICAgaWYgKCFjYW52YXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhbnZhcy0+ZGlzcGF0Y2hF
dmVudChXZWJHTENvbnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRj
aGFuZ2VkRXZlbnQsIGZhbHNlLCB0cnVlLCBlbXB0eVN0cmluZygpKSk7CisgICAgY2FudmFzLT5k
aXNwYXRjaEV2ZW50KFdlYkdMQ29udGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmds
Y29udGV4dGNoYW5nZWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6OlllcywgZW1wdHlTdHJpbmcoKSkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAJKHJldmlzaW9uIDIzNDkxMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBVUkwgZG9jdW1lbnRVUkxGb3JTY3Jp
cHRFeGVjdXRpb24KIAogaW5saW5lIFJlZjxFdmVudD4gY3JlYXRlU2NyaXB0TG9hZEV2ZW50KCkK
IHsKLSAgICByZXR1cm4gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxz
ZSwgZmFsc2UpOworICAgIHJldHVybiBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiB9CiAK
IGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHkoY29uc3QgUGVuZGlu
Z1NjcmlwdCYgc2NyaXB0KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZl
bnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Ry
YWNrRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBpbmxp
bmUgc3RkOjpvcHRpb25hbDxUcmFja0V2ZW50OjoKICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCi1UcmFja0V2ZW50OjpUcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmPFRyYWNrQmFzZT4mJiB0cmFjaykKK1Ry
YWNrRXZlbnQ6OlRyYWNrRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUg
Y2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgUmVmPFRyYWNrQmFzZT4mJiB0cmFj
aykKICAgICA6IEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAsIG1fdHJh
Y2soY29udmVydFRvVHJhY2tFdmVudFRyYWNrKFdURk1vdmUodHJhY2spKSkKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5oCShyZXZpc2lvbiAyMzQ5MTApCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNyArMzgsNyBAQCBjbGFzcyBUcmFja0V2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5UcmFja0V2ZW50KCk7CiAKLSAgICBzdGF0aWMgUmVmPFRyYWNr
RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFJlZjxUcmFja0Jhc2U+JiYgdHJhY2spCisgICAgc3RhdGljIFJlZjxU
cmFja0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2Fu
QnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgUmVmPFRyYWNrQmFzZT4mJiB0cmFjaykK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYWNrRXZlbnQodHlwZSwgY2Fu
QnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHRyYWNrKSkpOwogICAgIH0KQEAgLTU3LDcgKzU3
LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8VHJhY2tFdmVudFRyYWNrPiB0cmFjaygp
IGNvbnN0IHsgcmV0dXJuIG1fdHJhY2s7IH0KIAogcHJpdmF0ZToKLSAgICBUcmFja0V2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
UmVmPFRyYWNrQmFzZT4mJik7CisgICAgVHJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlLCBSZWY8VHJhY2tCYXNlPiYmKTsKICAgICBUcmFj
a0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW5pdCYmIGluaXRpYWxpemVyLCBJc1Ry
dXN0ZWQpOwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNw
cAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xp
c3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBib29sIFRyYWNrTGlz
dEJhc2U6OmNvbnRhaW5zKFRyYWNrQmFzZSYgCiAKIHZvaWQgVHJhY2tMaXN0QmFzZTo6c2NoZWR1
bGVUcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBSZWY8VHJhY2tCYXNl
PiYmIHRyYWNrKQogewotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChUcmFja0V2
ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgZmFsc2UsIFdURk1vdmUodHJhY2spKSk7Cisg
ICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFRyYWNrRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgV1RG
TW92ZSh0cmFjaykpKTsKIH0KIAogdm9pZCBUcmFja0xpc3RCYXNlOjpzY2hlZHVsZUFkZFRyYWNr
RXZlbnQoUmVmPFRyYWNrQmFzZT4mJiB0cmFjaykKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFRy
YWNrTGlzdEJhc2U6OnNjaGVkdWxlQ2hhbmdlRXZlbnQoCiAgICAgLy8gV2hlbmV2ZXIgYSB0cmFj
ayBpbiBhIFZpZGVvVHJhY2tMaXN0IHRoYXQgd2FzIHByZXZpb3VzbHkgbm90IHNlbGVjdGVkIGlz
CiAgICAgLy8gc2VsZWN0ZWQsIHRoZSB1c2VyIGFnZW50IG11c3QgcXVldWUgYSB0YXNrIHRvIGZp
cmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQKICAgICAvLyBjaGFuZ2UgYXQgdGhlIFZpZGVvVHJhY2tM
aXN0IG9iamVjdC4KLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgIG1fYXN5
bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jaGFu
Z2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7
CiB9CiAKIGJvb2wgVHJhY2tMaXN0QmFzZTo6aXNDaGFuZ2VFdmVudFNjaGVkdWxlZCgpIGNvbnN0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9u
IDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTczMSw3ICs3MzEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9w
TG9hZGluZ0FmdGVyWEZyCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFm
dGVyWEZyYW1lT3B0aW9uc0RlbmllZCgqbV9mcmFtZSwgaWRlbnRpZmllciwgKnRoaXMsIHJlc3Bv
bnNlKTsKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5lbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRi
b3hPcmlnaW4pOwogICAgIGlmIChIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9
IG1fZnJhbWUtPm93bmVyRWxlbWVudCgpKQotICAgICAgICBvd25lckVsZW1lbnQtPmRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2Up
KTsKKyAgICAgICAgb3duZXJFbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmxvYWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6Ok5vKSk7CiAKICAgICAvLyBUaGUgbG9hZCBldmVudCBtaWdodCBoYXZlIGRldGFjaGVk
IHRoaXMgZnJhbWUuIEluIHRoYXQgY2FzZSwgdGhlIGxvYWQgd2lsbCBhbHJlYWR5IGhhdmUgYmVl
biBjYW5jZWxsZWQgZHVyaW5nIGRldGFjaC4KICAgICBpZiAoRnJhbWVMb2FkZXIqIGZyYW1lTG9h
ZGVyID0gdGhpcy0+ZnJhbWVMb2FkZXIoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1NSw3ICszMTU1LDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hVbmxvYWRFdmVudHMoVQogICAgICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjc3MAogCiAgICAgICAgICAgICBp
ZiAobV9mcmFtZS5kb2N1bWVudCgpLT5wYWdlQ2FjaGVTdGF0ZSgpID09IERvY3VtZW50OjpOb3RJ
blBhZ2VDYWNoZSkgewotICAgICAgICAgICAgICAgIFJlZjxFdmVudD4gdW5sb2FkRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkudW5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAg
ICAgICAgICAgICAgIFJlZjxFdmVudD4gdW5sb2FkRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkudW5sb2FkRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpObykpOwogICAgICAgICAgICAgICAgIC8vIFRoZSBEb2N1bWVudExvYWRlciAoYW5kIHRo
dXMgaXRzIExvYWRUaW1pbmcpIG1pZ2h0IGdldCBkZXN0cm95ZWQKICAgICAgICAgICAgICAgICAv
LyB3aGlsZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQsIHNvIHByb3RlY3QgaXQgdG8gcHJldmVudCB3
cml0aW5nIHRoZSBlbmQKICAgICAgICAgICAgICAgICAvLyB0aW1lIGludG8gZnJlZWQgbWVtb3J5
LgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMzQ5
MTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5n
RXJyb3JFdgogICAgICAgICByZXR1cm47CiAgICAgbV9oYXNQZW5kaW5nRXJyb3JFdmVudCA9IGZh
bHNlOwogICAgIGlmIChlbGVtZW50KCkuZG9jdW1lbnQoKS5oYXNMaXZpbmdSZW5kZXJUcmVlKCkp
Ci0gICAgICAgIGVsZW1lbnQoKS5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBlbGVtZW50KCkuZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2Fu
QnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIAogICAgIC8vIE9ubHkgY29u
c2lkZXIgdXBkYXRpbmcgdGhlIHByb3RlY3Rpb24gcmVmLWNvdW50IG9mIHRoZSBFbGVtZW50IGlt
bWVkaWF0ZWx5IGJlZm9yZSByZXR1cm5pbmcKICAgICAvLyBmcm9tIHRoaXMgZnVuY3Rpb24gYXMg
ZG9pbmcgc28gbWlnaHQgcmVzdWx0IGluIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGlzIEltYWdlTG9h
ZGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2aXNp
b24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVj
a05hdmlnYXRpb25Qb2xpYwogICAgICAgICBpZiAobV9mcmFtZS5vd25lckVsZW1lbnQoKSkgewog
ICAgICAgICAgICAgLy8gRmlyZSBhIGxvYWQgZXZlbnQgKGV2ZW4gdGhvdWdoIHdlIHdlcmUgYmxv
Y2tlZCBieSBDU1ApIGFzIHRpbWluZyBhdHRhY2tzIHdvdWxkIG90aGVyd2lzZQogICAgICAgICAg
ICAgLy8gcmV2ZWFsIHRoYXQgdGhlIGZyYW1lIHdhcyBibG9ja2VkLiBUaGlzIHdheSwgaXQgbG9v
a3MgbGlrZSBhbnkgb3RoZXIgY3Jvc3Mtb3JpZ2luIHBhZ2UgbG9hZC4KLSAgICAgICAgICAgIG1f
ZnJhbWUub3duZXJFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgICAgIG1fZnJhbWUub3du
ZXJFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9h
ZEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsK
ICAgICAgICAgfQogICAgICAgICBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCB7IH0sIFNob3Vs
ZENvbnRpbnVlOjpObyk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2
aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDcgKzM3NCw3IEBAIHN0YXRp
YyBSZWY8RXZlbnQ+IGNyZWF0ZUFwcGxpY2F0aW9uQ2FjaGUKIHsKICAgICBpZiAoZXZlbnRUeXBl
ID09IGV2ZW50TmFtZXMoKS5wcm9ncmVzc0V2ZW50KQogICAgICAgICByZXR1cm4gUHJvZ3Jlc3NF
dmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZG9uZSwgdG90YWwpOwotICAgIHJldHVybiBF
dmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgZmFsc2UsIGZhbHNlKTsKKyAgICByZXR1cm4gRXZlbnQ6
OmNyZWF0ZShldmVudFR5cGUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpObyk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmRpc3BhdGNoRE9NRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGludCB0b3RhbCwgaW50IGRvbmUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw3ICsz
MDcsNyBAQCB2b2lkIERPTVdpbmRvdzo6ZGlzcGF0Y2hBbGxQZW5kaW5nVW5sb2FkCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICB3aW5kb3ctPmRpc3BhdGNoRXZlbnQoUGFnZVRyYW5z
aXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5wYWdlaGlkZUV2ZW50LCBmYWxzZSksIHdp
bmRvdy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgIHdpbmRvdy0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSwgd2luZG93LT5k
b2N1bWVudCgpKTsKKyAgICAgICAgd2luZG93LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnVubG9hZEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pLCB3aW5kb3ctPmRvY3VtZW50KCkpOwogCiAgICAgICAgIHdpbmRvdy0+
ZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKTsKICAgICB9CkBAIC0xOTkxLDcgKzE5OTEsNyBAQCBi
b29sIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zCiB2b2lkIERPTVdpbmRvdzo6
bGFuZ3VhZ2VzQ2hhbmdlZCgpCiB7CiAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9j
dW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQtPmVucXVldWVXaW5kb3dFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5sYW5ndWFnZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAg
ICAgICAgZG9jdW1lbnQtPmVucXVldWVXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5sYW5ndWFnZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogdm9pZCBET01XaW5kb3c6OmRpc3BhdGNoTG9hZEV2ZW50
KCkKQEAgLTIwMDUsNyArMjAwNSw3IEBAIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaExvYWRFdmVu
dCgpCiAgICAgaWYgKHNob3VsZE1hcmtMb2FkRXZlbnRUaW1lcykKICAgICAgICAgcHJvdGVjdGVk
TG9hZGVyLT50aW1pbmcoKS5tYXJrTG9hZEV2ZW50U3RhcnQoKTsKIAotICAgIGRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpLCBk
b2N1bWVudCgpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmxvYWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSwgZG9jdW1lbnQoKSk7CiAKICAgICBpZiAoc2hvdWxkTWFya0xvYWRFdmVudFRpbWVzKQogICAg
ICAgICBwcm90ZWN0ZWRMb2FkZXItPnRpbWluZygpLm1hcmtMb2FkRXZlbnRFbmQoKTsKQEAgLTIw
MTMsNyArMjAxMyw3IEBAIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaExvYWRFdmVudCgpCiAgICAg
Ly8gU2VuZCBhIHNlcGFyYXRlIGxvYWQgZXZlbnQgdG8gdGhlIGVsZW1lbnQgdGhhdCBvd25zIHRo
aXMgZnJhbWUuCiAgICAgaWYgKGZyYW1lKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIG93bmVyID0g
ZnJhbWUoKS0+b3duZXJFbGVtZW50KCkpCi0gICAgICAgICAgICBvd25lci0+ZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwor
ICAgICAgICAgICAgb3duZXItPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkubG9hZEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8pKTsKICAgICB9CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvYWRFdmVudEZp
cmVkKGZyYW1lKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2
aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NzIsNyArNDcyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGRpc3Bh
dGNoU2VsZWN0U3RhcnQoTgogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+cmVuZGVyZXIoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuc2VsZWN0c3RhcnRFdmVudCwgdHJ1ZSwgdHJ1ZSk7CisgICAgYXV0byBldmVudCA9
IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlbGVjdHN0YXJ0RXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsKICAgICBub2RlLT5kaXNwYXRj
aEV2ZW50KGV2ZW50KTsKICAgICByZXR1cm4gIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CiB9
CkBAIC0yMjEzLDcgKzIyMTMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRXZl
bnQoY29uCiAKICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJGbHVzaFRocm90dGxpbmdUZW1wb3Jhcmls
eUZvckludGVyYWN0aW9uKCk7CiAgICAgUmVmPE1vdXNlRXZlbnQ+IG1lID0gTW91c2VFdmVudDo6
Y3JlYXRlKGV2ZW50VHlwZSwKLSAgICAgICAgdHJ1ZSwgdHJ1ZSwgZXZlbnQudGltZXN0YW1wKCku
YXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksICZtX2ZyYW1lLndpbmRvd1Byb3h5KCksCisgICAg
ICAgIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBldmVu
dC50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgJm1fZnJhbWUud2luZG93
UHJveHkoKSwKICAgICAgICAgMCwgZXZlbnQuZ2xvYmFsUG9zaXRpb24oKS54KCksIGV2ZW50Lmds
b2JhbFBvc2l0aW9uKCkueSgpLCBldmVudC5wb3NpdGlvbigpLngoKSwgZXZlbnQucG9zaXRpb24o
KS55KCksCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgZXZlbnQubW92ZW1lbnRE
ZWx0YSgpLngoKSwgZXZlbnQubW92ZW1lbnREZWx0YSgpLnkoKSwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZv
aWQgRXZlbnRTb3VyY2U6OnNjaGVkdWxlUmVjb25uZWN0KCkKIHsKICAgICBtX3N0YXRlID0gQ09O
TkVDVElORzsKICAgICBtX2Nvbm5lY3RUaW1lci5zdGFydE9uZVNob3QoMV9tcyAqIG1fcmVjb25u
ZWN0RGVsYXkpOwotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogdm9pZCBFdmVudFNvdXJjZTo6Y2xvc2UoKQpAQCAt
MTk2LDEzICsxOTYsMTMgQEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVu
cwogCiAgICAgaWYgKCFyZXNwb25zZUlzVmFsaWQocmVzcG9uc2UpKSB7CiAgICAgICAgIG1fbG9h
ZGVyLT5jYW5jZWwoKTsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIG1fZXZlbnRTdHJlYW1PcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwo
cmVzcG9uc2UudXJsKCkpLnRvU3RyaW5nKCk7CiAgICAgbV9zdGF0ZSA9IE9QRU47Ci0gICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5vcGVuRXZlbnQsIGZhbHNlLCBm
YWxzZSkpOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkub3Bl
bkV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsK
IH0KIAogdm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwg
aW50IGxlbmd0aCkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEV2ZW50U291cmNlOjphYm9ydENv
bm5lY3Rpb25BdHRlbXB0CiAgICAgfQogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gQ0xPU0VEKTsK
LSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQs
IGZhbHNlLCBmYWxzZSkpOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6Ok5vKSk7CiB9CiAKIHZvaWQgRXZlbnRTb3VyY2U6OnBhcnNlRXZlbnRTdHJlYW0oKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjM0OTEw
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzgsNyArMjc4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRpc3BhdGNoRXZlbnRz
T25XaW5kbwogCiAgICAgaWYgKCFmb2N1c2VkICYmIGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgp
KQogICAgICAgICBkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKS0+ZGlzcGF0Y2hCbHVyRXZlbnQo
bnVsbHB0cik7Ci0gICAgZG9jdW1lbnQtPmRpc3BhdGNoV2luZG93RXZlbnQoRXZlbnQ6OmNyZWF0
ZShmb2N1c2VkID8gZXZlbnROYW1lcygpLmZvY3VzRXZlbnQgOiBldmVudE5hbWVzKCkuYmx1ckV2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkb2N1bWVudC0+ZGlzcGF0Y2hXaW5kb3dFdmVudChF
dmVudDo6Y3JlYXRlKGZvY3VzZWQgPyBldmVudE5hbWVzKCkuZm9jdXNFdmVudCA6IGV2ZW50TmFt
ZXMoKS5ibHVyRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpObykpOwogICAgIGlmIChmb2N1c2VkICYmIGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpKQog
ICAgICAgICBkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKS0+ZGlzcGF0Y2hGb2N1c0V2ZW50KG51
bGxwdHIsIEZvY3VzRGlyZWN0aW9uTm9uZSk7CiB9CkBAIC0zMzEsMTIgKzMzMSwxMiBAQCB2b2lk
IEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEZyYW1lKEZyCiAgICAgLy8gTm93IHRoYXQgdGhl
IGZyYW1lIGlzIHVwZGF0ZWQsIGZpcmUgZXZlbnRzIGFuZCB1cGRhdGUgdGhlIHNlbGVjdGlvbiBm
b2N1c2VkIHN0YXRlcyBvZiBib3RoIGZyYW1lcy4KICAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJh
bWUtPnZpZXcoKSkgewogICAgICAgICBvbGRGcmFtZS0+c2VsZWN0aW9uKCkuc2V0Rm9jdXNlZChm
YWxzZSk7Ci0gICAgICAgIG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cisg
ICAgICAgIG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50
OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgfQogCiAgICAgaWYgKG5ld0ZyYW1lICYmIG5ld0Zy
YW1lLT52aWV3KCkgJiYgaXNGb2N1c2VkKCkpIHsKICAgICAgICAgbmV3RnJhbWUtPnNlbGVjdGlv
bigpLnNldEZvY3VzZWQodHJ1ZSk7Ci0gICAgICAgIG5ld0ZyYW1lLT5kb2N1bWVudCgpLT5kaXNw
YXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIGZh
bHNlLCBmYWxzZSkpOworICAgICAgICBuZXdGcmFtZS0+ZG9jdW1lbnQoKS0+ZGlzcGF0Y2hXaW5k
b3dFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBFdmVudDo6Q2Fu
QnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICB9CiAKICAgICBtX3Bh
Z2UuY2hyb21lKCkuZm9jdXNlZEZyYW1lQ2hhbmdlZChuZXdGcmFtZS5nZXQoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMjMsNyArMzMyMyw3
IEBAIHZvaWQgRnJhbWVWaWV3OjpzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCgKIAogICAgIExPRyhF
dmVudHMsICJGcmFtZVZpZXcgJXAgc2VuZFJlc2l6ZUV2ZW50SWZOZWVkZWQgc2VuZGluZyByZXNp
emUgZXZlbnQsIHNpemUgJWR4JWQgKGNhblNlbmRSZXNpemVFdmVudFN5bmNocm9ub3VzbHkgJWQp
IiwgdGhpcywgY3VycmVudFNpemUud2lkdGgoKSwgY3VycmVudFNpemUuaGVpZ2h0KCksIGNhblNl
bmRSZXNpemVFdmVudFN5bmNocm9ub3VzbHkpOwogCi0gICAgUmVmPEV2ZW50PiByZXNpemVFdmVu
dCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50LCBmYWxzZSwgZmFsc2Up
OworICAgIFJlZjxFdmVudD4gcmVzaXplRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5yZXNpemVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6
Ok5vKTsKICAgICBpZiAoY2FuU2VuZFJlc2l6ZUV2ZW50U3luY2hyb25vdXNseSkKICAgICAgICAg
ZnJhbWUoKS5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50KHJlc2l6ZUV2ZW50KTsKICAg
ICBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDcgKzE4OCw3
IEBAIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc08KICAgICBmb3IgKGF1
dG8mIGZyYW1lIDogZnJhbWVzKSB7CiAgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmRpc3BhdGNo
V2luZG93RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCBmYWxzZSkpOworICAg
ICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGlzcGF0Y2hXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAkocmV2
aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFBlcmZvcm1hbmNlOjpyZXNvdXJj
ZVRpbWluZ0J1ZmZlckZ1CiAgICAgICAgIEFTU0VSVChtX2JhY2t1cFJlc291cmNlVGltaW5nQnVm
ZmVyLmlzRW1wdHkoKSk7CiAKICAgICAgICAgbV9yZXNvdXJjZVRpbWluZ0J1ZmZlckZ1bGxGbGFn
ID0gdHJ1ZTsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5yZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGxFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKKyAgICAgICAg
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZXNvdXJjZXRpbWluZ2J1
ZmZlcmZ1bGxFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpObykpOwogCiAgICAgICAgIGlmIChtX3Jlc291cmNlVGltaW5nQnVmZmVyRnVsbEZsYWcpIHsK
ICAgICAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBiYWNrdXBCdWZmZXIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAy
MzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIFBvaW50ZXJMb2NrQ29udHJv
bGxlcjo6ZW5xdWV1ZUV2ZW50CiB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZW5xdWV1ZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAg
IGlmIChkb2N1bWVudCkKLSAgICAgICAgZG9jdW1lbnQtPmVucXVldWVEb2N1bWVudEV2ZW50KEV2
ZW50OjpjcmVhdGUodHlwZSwgdHJ1ZSwgZmFsc2UpKTsKKyAgICAgICAgZG9jdW1lbnQtPmVucXVl
dWVEb2N1bWVudEV2ZW50KEV2ZW50OjpjcmVhdGUodHlwZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVz
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmNwcAkocmV2aXNpb24gMjM0
OTEwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4MCw5ICsxODAsNyBAQCB2b2lkIFZpc3VhbFZpZXdwb3J0OjplbnF1ZXVlUmVz
aXplRXZlbnQoCiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29s
IGJ1YmJsZXMgPSBmYWxzZTsKLSAgICBib29sIGNhbmNlbGFibGUgPSBmYWxzZTsKLSAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCkuZW5xdWV1ZVJlc2l6ZUV2ZW50KCp0aGlzLCBi
dWJibGVzLCBjYW5jZWxhYmxlKTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVl
KCkuZW5xdWV1ZVJlc2l6ZUV2ZW50KCp0aGlzLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6Tm8pOwogfQogCiB2b2lkIFZpc3VhbFZpZXdwb3J0OjplbnF1ZXVlU2Ny
b2xsRXZlbnQoKQpAQCAtMTkwLDkgKzE4OCw3IEBAIHZvaWQgVmlzdWFsVmlld3BvcnQ6OmVucXVl
dWVTY3JvbGxFdmVudCgKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGJvb2wgYnViYmxlcyA9IGZhbHNlOwotICAgIGJvb2wgY2FuY2VsYWJsZSA9IGZhbHNlOwotICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPmV2ZW50UXVldWUoKS5lbnF1ZXVlU2Nyb2xsRXZlbnQoKnRo
aXMsIGJ1YmJsZXMsIGNhbmNlbGFibGUpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmV2ZW50
UXVldWUoKS5lbnF1ZXVlU2Nyb2xsRXZlbnQoKnRoaXMsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkx
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNyArNTAsNyBAQCBSZWY8U3RvcmFnZUV2ZW50PiBTdG9yYWdlRXZlbnQ6OmNy
ZWF0ZShjCiB9CiAKIFN0b3JhZ2VFdmVudDo6U3RvcmFnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0
IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBTdG9yYWdlKiBzdG9yYWdlQXJl
YSkKLSAgICA6IEV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSkKKyAgICA6IEV2ZW50KHR5cGUsIENh
bkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2tleShrZXkpCiAgICAgLCBt
X29sZFZhbHVlKG9sZFZhbHVlKQogICAgICwgbV9uZXdWYWx1ZShuZXdWYWx1ZSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAzLDcgKzYwMyw3IEBA
IHZvaWQgU1ZHRWxlbWVudDo6c2VuZFNWR0xvYWRFdmVudElmUG9zc2kKICAgICAgICAgaWYgKHNl
bmRQYXJlbnRMb2FkRXZlbnRzKQogICAgICAgICAgICAgcGFyZW50ID0gY3VycmVudFRhcmdldC0+
cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpOyAvLyBzYXZlIHRoZSBuZXh0IHBhcmVudCB0byBk
aXNwYXRjaCB0b28gaW5jYXNlIGRpc3BhdGNoaW5nIHRoZSBldmVudCBjaGFuZ2VzIHRoZSB0cmVl
CiAgICAgICAgIGlmIChoYXNMb2FkTGlzdGVuZXIoY3VycmVudFRhcmdldC5nZXQoKSkpCi0gICAg
ICAgICAgICBjdXJyZW50VGFyZ2V0LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgICAgICBjdXJyZW50VGFy
Z2V0LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwg
RXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgICAg
IGN1cnJlbnRUYXJnZXQgPSAocGFyZW50ICYmIHBhcmVudC0+aXNTVkdFbGVtZW50KCkpID8gc3Rh
dGljX3BvaW50ZXJfY2FzdDxTVkdFbGVtZW50PihwYXJlbnQpIDogUmVmUHRyPFNWR0VsZW1lbnQ+
KCk7CiAgICAgICAgIFNWR0VsZW1lbnQqIGVsZW1lbnQgPSBjdXJyZW50VGFyZ2V0LmdldCgpOwog
ICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmlzT3V0ZXJtb3N0U1ZHU1ZHRWxlbWVu
dCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAy
MzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIFNWR0ltYWdlTG9hZGVyOjp+U1ZHSW1hZ2VMb2FkZXIo
KSA9IGRlZmEKIHZvaWQgU1ZHSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2ZW50KCkKIHsKICAg
ICBpZiAoaW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICBlbGVtZW50KCkuZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFs
c2UpKTsKKyAgICAgICAgZWxlbWVudCgpLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6Ok5vKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChkb3duY2FzdDxTVkdJbWFnZUVs
ZW1lbnQ+KGVsZW1lbnQoKSkuZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpKQogICAgICAgICAg
ICAgZG93bmNhc3Q8U1ZHSW1hZ2VFbGVtZW50PihJbWFnZUxvYWRlcjo6ZWxlbWVudCgpKS5zZW5k
U1ZHTG9hZEV2ZW50SWZQb3NzaWJsZSh0cnVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgU1ZH
VXNlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGUKICAgICBBU1NFUlQoU2NyaXB0RGlzYWxs
b3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzU2NyaXB0QWxsb3dlZCgpKTsKICAgICBpbnZhbGlk
YXRlU2hhZG93VHJlZSgpOwogICAgIGlmIChyZXNvdXJjZS5lcnJvck9jY3VycmVkKCkpCi0gICAg
ICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwg
ZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6Ok5vKSk7CiAgICAgZWxzZSBpZiAoIXJlc291cmNlLndhc0NhbmNlbGVkKCkpCiAgICAg
ICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmRpc3BhdGNoTG9hZEV2ZW50KCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50
LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9T
VkdTTUlMRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMjIsNyArMTIyMiw3IEBAIHZv
aWQgU1ZHU01JTEVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW4KIHsKICAgICBBU1NFUlQoZXZl
bnRTZW5kZXIgPT0gJnNtaWxCZWdpbkV2ZW50U2VuZGVyKCkgfHwgZXZlbnRTZW5kZXIgPT0gJnNt
aWxFbmRFdmVudFNlbmRlcigpKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9
IGV2ZW50U2VuZGVyLT5ldmVudFR5cGUoKTsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVh
dGUoZXZlbnRUeXBlLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnRUeXBlLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8pKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAkocmV2aXNp
b24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKCkK
ICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQgPSBjb250ZXh0ID8gY29udGV4dC0+c2Vzc2lv
bklEKCkgOiBQQUw6OlNlc3Npb25JRCgpOwogCiAgICAgaWYgKG1fc2NyaXB0TG9hZGVyLT5mYWls
ZWQoKSB8fCAhc2Vzc2lvbklELmlzVmFsaWQoKSkKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgdHJ1ZSkpOworICAgICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKICAgICBlbHNl
IHsKICAgICAgICAgYm9vbCBpc09ubGluZSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJT
dHJhdGVneSgpLT5pc09uTGluZSgpOwogICAgICAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyA9
IG1fY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzID8gbV9jb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMudmFsdWUoKSA6IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPnJlc3BvbnNlSGVhZGVycygpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAJKHJldmlz
aW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6bm90aWZ5TmV0d29yawogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCku
cG9zdFRhc2soW2lzT25saW5lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewog
ICAgICAgICBhdXRvJiBnbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihj
b250ZXh0KTsKICAgICAgICAgZ2xvYmFsU2NvcGUuc2V0SXNPbmxpbmUoaXNPbmxpbmUpOwotICAg
ICAgICBnbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBl
dmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBmYWxz
ZSwgZmFsc2UpKTsKKyAgICAgICAgZ2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChFdmVudDo6Y3Jl
YXRlKGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9m
ZmxpbmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSk7CiAgICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9F
eHRlbmRhYmxlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksOCArMzksOCBAQCBFeHRlbmRhYmxlRXZlbnQ6OkV4dGVuZGFibGVFdmVudChjb25z
dCBBCiB7CiB9CiAKLUV4dGVuZGFibGVFdmVudDo6RXh0ZW5kYWJsZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUpCi0gICAgOiBFdmVu
dCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlKQorRXh0ZW5kYWJsZUV2ZW50OjpFeHRlbmRhYmxl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0Nh
bmNlbGFibGUgY2FuY2VsYWJsZSkKKyAgICA6IEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVu
ZGFibGVFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9FeHRlbmRhYmxlRXZlbnQuaAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3
ICs1Myw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIEV4dGVu
ZGFibGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBFeHRlbmRhYmxlRXZlbnRJbml0
JiwgSXNUcnVzdGVkKTsKLSAgICBFeHRlbmRhYmxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwg
Ym9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUpOworICAgIEV4dGVuZGFibGVFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSk7CiAKICAgICB2b2lkIGFk
ZEV4dGVuZExpZmV0aW1lUHJvbWlzZShSZWY8RE9NUHJvbWlzZT4mJik7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3Nh
Z2VFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgs
NyArNDgsNyBAQCBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50OjpFeHRlbmRhYmxlTWVzc2FnCiB9CiAK
IEV4dGVuZGFibGVNZXNzYWdlRXZlbnQ6OkV4dGVuZGFibGVNZXNzYWdlRXZlbnQoUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50
U291cmNlPiYmIHNvdXJjZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCi0g
ICAgOiBFeHRlbmRhYmxlRXZlbnQoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwgZmFsc2UsIGZh
bHNlKQorICAgIDogRXh0ZW5kYWJsZUV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIENh
bkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRh
KSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAsIG1fbGFzdEV2ZW50SWQobGFzdEV2ZW50
SWQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXIuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyOjpzY2hlZHVsZVRhc2tUb1VwZGF0ZQogICAgICAgICBtX2RhdGEu
c3RhdGUgPSBzdGF0ZTsKICAgICAgICAgaWYgKHN0YXRlICE9IFN0YXRlOjpJbnN0YWxsaW5nICYm
ICFtX2lzU3RvcHBlZCkgewogICAgICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0FjdGl2aXR5Rm9y
RXZlbnREaXNwYXRjaCk7Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnN0YXRlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICAg
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHVwZGF0ZVBlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0Y2go
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
c2NoZWR1bGVUYXMKICAgICAgICAgaWYgKG1faXNTdG9wcGVkKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29u
dHJvbGxlcmNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb250cm9sbGVyY2hhbmdlRXZlbnQsIEV2ZW50
OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogICAgIH0pOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb246OnNjaGVkdWxlCiAgICAgICAgIFJFR0lTVFJBVElPTl9SRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzY2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2ZW50OiBGaXJpbmcgdXBkYXRl
Zm91bmQgZXZlbnQgZm9yIHJlZ2lzdHJhdGlvbiAlbGx1IiwgaWRlbnRpZmllcigpLnRvVUludDY0
KCkpOwogCiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0Y2gp
OwotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnVwZGF0
ZWZvdW5kRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLnVwZGF0ZWZvdW5kRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6
Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogICAgIH0pOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eTo6bm90aWZ5TmV0CiAgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJH
bG9iYWxTY29wZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgIGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpOwogICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Ci0g
ICAgICAgIGdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/
IGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIGZh
bHNlLCBmYWxzZSkpOworICAgICAgICBnbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCku
b2ZmbGluZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8pKTsKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBT
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MDIsOCArMzAyLDEwIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNhbGxSZWFkeVN0YXRlQ2hhbmcK
ICAgICAvLyBDaGVjayB3aGV0aGVyIHNlbmRpbmcgbG9hZCBhbmQgbG9hZGVuZCBldmVudHMgYmVm
b3JlIHNlbmRpbmcgcmVhZHlzdGF0ZWNoYW5nZSBldmVudCwgYXMgaXQgbWF5IGNoYW5nZSBtX2Vy
cm9yL21fc3RhdGUgdmFsdWVzLgogICAgIGJvb2wgc2hvdWxkU2VuZExvYWRFdmVudCA9IChtX3N0
YXRlID09IERPTkUgJiYgIW1fZXJyb3IpOwogCi0gICAgaWYgKG1fYXN5bmMgfHwgKG1fc3RhdGUg
PD0gT1BFTkVEIHx8IG1fc3RhdGUgPT0gRE9ORSkpCi0gICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRo
cm90dGxlLmRpc3BhdGNoUmVhZHlTdGF0ZUNoYW5nZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnJlYWR5c3RhdGVjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSwgbV9zdGF0ZSA9PSBE
T05FID8gRmx1c2hQcm9ncmVzc0V2ZW50IDogRG9Ob3RGbHVzaFByb2dyZXNzRXZlbnQpOworICAg
IGlmIChtX2FzeW5jIHx8IChtX3N0YXRlIDw9IE9QRU5FRCB8fCBtX3N0YXRlID09IERPTkUpKSB7
CisgICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlLmRpc3BhdGNoUmVhZHlTdGF0ZUNoYW5n
ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlYWR5c3RhdGVjaGFuZ2VFdmVudCwg
RXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSwKKyAgICAgICAg
ICAgIG1fc3RhdGUgPT0gRE9ORSA/IEZsdXNoUHJvZ3Jlc3NFdmVudCA6IERvTm90Rmx1c2hQcm9n
cmVzc0V2ZW50KTsKKyAgICB9CiAKICAgICBpZiAoc2hvdWxkU2VuZExvYWRFdmVudCkgewogICAg
ICAgICBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZS5kaXNwYXRjaFByb2dyZXNzRXZlbnQoZXZlbnRO
YW1lcygpLmxvYWRFdmVudCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM0OTc2KQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAx
OC0wOC0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXBs
YWNlIGNhbkJ1YmJsZSBhbmQgY2FuY2VsYWJsZSBib29sZWFucyBpbiBFdmVudCBieSBlbnVtIGNs
YXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
ODY5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayk6CisKIDIwMTgtMDgtMTYgIENv
bW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIyMzQ5NTguCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNTUs
NyArMTM1NSw4IEBAIHZvaWQgV2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWwKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgaW50IHNpbmdsZUNsaWNrID0gMTsKLSAgICBSZWZQ
dHI8TW91c2VFdmVudD4gbW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY2xpY2tFdmVudCwgdHJ1ZSwgdHJ1ZSwgTW9ub3RvbmljVGltZTo6bm93KCksIG51bGxwdHIs
IHNpbmdsZUNsaWNrLCBzY3JlZW5Qb2ludC54KCksIHNjcmVlblBvaW50LnkoKSwgZG9jdW1lbnRQ
b2ludC54KCksIGRvY3VtZW50UG9pbnQueSgpLAorICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBtb3Vz
ZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywKKyAgICAgICAgTW9u
b3RvbmljVGltZTo6bm93KCksIG51bGxwdHIsIHNpbmdsZUNsaWNrLCBzY3JlZW5Qb2ludC54KCks
IHNjcmVlblBvaW50LnkoKSwgZG9jdW1lbnRQb2ludC54KCksIGRvY3VtZW50UG9pbnQueSgpLAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIDAsIDAsCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDE4LTA4LTE2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
cGxhY2UgY2FuQnViYmxlIGFuZCBjYW5jZWxhYmxlIGJvb2xlYW5zIGluIEV2ZW50IGJ5IGVudW0g
Y2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg4NjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbToKKyAgICAgICAgKC1bV2ViUERGVmll
d1BsYWNlaG9sZGVyIHNpbXVsYXRlQ2xpY2tPbkxpbmtUb1VSTDpdKToKKwogMjAxOC0wOC0xMyAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVz
ZSBhIDEtYnl0ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRl
ci5tbQkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmll
dy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3OSw3ICs0Nzks
NyBAQCAtICh2b2lkKXNpbXVsYXRlQ2xpY2tPbkxpbmtUb1VSTDooTlNVUkwgCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIENvbnN0cnVjdCBhbiBldmVudCB0byBzaW11bGF0ZSBhIGNsaWNrLgot
ICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQsIHRydWUsIHRydWUsIE1vbm90b25pY1RpbWU6Om5vdygpLCAwLCAxLCAwLCAw
LCAwLCAwLAorICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6WWVzLCBNb25vdG9uaWNUaW1lOjpub3coKSwgMCwgMSwgMCwgMCwgMCwgMCwKICNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICAwLCAwLAogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
OC0wOC0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXBs
YWNlIGNhbkJ1YmJsZSBhbmQgY2FuY2VsYWJsZSBib29sZWFucyBpbiBFdmVudCBieSBlbnVtIGNs
YXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
ODY5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViVmlldy9XZWJQREZWaWV3Lm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3IFBERlZpZXdXaWxs
Q2xpY2tPbkxpbms6d2l0aFVSTDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dlYlZpZXcgX2Rpc3BhdGNoVW5sb2FkRXZlbnRdKToKKwogMjAxOC0wOC0xNSAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaGVz
IGluIFF1aXAgdW5kZXIgX2RpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZSwgaW4gc2V0T2JqZWN0
OmZvcktleToKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBE
RlZpZXcubW0JKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUERGVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAzMCw3ICsxMDMwLDcgQEAg
LSAodm9pZClQREZWaWV3V2lsbENsaWNrT25MaW5rOihQREZWaWV3IAogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgaWYgKGJ1dHRvbiAhPSBub0J1dHRvbikgewotICAgICAgICBldmVudCA9IE1v
dXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgdHJ1ZSwgdHJ1ZSwgTW9u
b3RvbmljVGltZTo6bm93KCksIDAsIFtuc0V2ZW50IGNsaWNrQ291bnRdLCAwLCAwLCAwLCAwLAor
ICAgICAgICBldmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVu
dCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsIE1vbm90
b25pY1RpbWU6Om5vdygpLCAwLCBbbnNFdmVudCBjbGlja0NvdW50XSwgMCwgMCwgMCwgMCwKICNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICAgICAgMCwgMCwKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjM0
OTEwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTQ0LDcgKzIxNDQsNyBAQCAtICh2b2lkKV9kaXNwYXRjaFVubG9hZEV2
ZW50CiAgICAgICAgIGlmIChjb3JlTWFpbkZyYW1lKSB7CiAgICAgICAgICAgICBEb2N1bWVudCAq
ZG9jdW1lbnQgPSBjb3JlTWFpbkZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICAgICAgaWYgKGRv
Y3VtZW50KQotICAgICAgICAgICAgICAgIGRvY3VtZW50LT5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAg
ICAgICAgICAgICAgICBkb2N1bWVudC0+ZGlzcGF0Y2hXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgICAgIH0KICAgICB9KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347352</attachid>
            <date>2018-08-16 23:11:24 -0700</date>
            <delta_ts>2018-08-17 09:28:20 -0700</delta_ts>
            <desc>GTK build fix attempt</desc>
            <filename>bug-188692-20180816231123.patch</filename>
            <type>text/plain</type>
            <size>195378</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3NCBAQAorMjAxOC0wOC0xNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXBsYWNlIGNhbkJ1YmJsZSBh
bmQgY2FuY2VsYWJsZSBib29sZWFucyBpbiBFdmVudCBieSBlbnVtIGNsYXNzZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODY5MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2VkIGJvb2xlYW5z
IGluZGljYXRpbmcgd2hldGhlciBhbiBldmVudCBjYW4gYnViYmxlIGFuZCBhbiBldmVudCBpcyBj
YW5jZWxhYmxlCisgICAgICAgIGJ5IHR3byBlbnVtIGNsYXNzZXM6IENhbkJ1YmJsZSBhbmQgSXND
YW5jZWxhYmxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBzaG91bGQgYmUg
bm8gYmVoYXZpb3JhbCBjaGFuZ2VzLgorCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1dlYktp
dFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudDo6V2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVBheW1lbnRBdXRob3JpemVkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQ
YXltZW50QXV0aG9yaXplZEV2ZW50OjpBcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQpOgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3Rl
ZEV2ZW50OjpBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50KToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb246OmRpZENhbmNlbFBheW1lbnRTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQ6OkFw
cGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudDo6QXBwbGVQYXlT
aGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQ6OkFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKToK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleU1l
c3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtleU1lc3NhZ2VF
dmVudDo6V2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudDo6V2ViS2l0TWVkaWFLZXlOZWVk
ZWRFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0
TWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE1lZGlhS2V5U2Vz
c2lvbjo6YWRkS2V5VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtl
eVNlc3Npb246OnNlbmRFcnJvcik6CisgICAgICAgICogTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRXZlbnQ6OkdhbWVwYWRFdmVudCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2U6OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT3BlbkRCUmVxdWVzdDo6b25FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVu
REJSZXF1ZXN0OjpmaXJlU3VjY2Vzc0FmdGVyVmVyc2lvbkNoYW5nZUNvbW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpmaXJlRXJyb3JBZnRlclZlcnNpb25DaGFuZ2VD
b21wbGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2Vz
cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJSZXF1ZXN0OjpvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
cXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dENvbXBsZXRpb25FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Q29tcGxl
dGlvbkV2ZW50OjpJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpmaXJlT25Db21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6ZmlyZU9uQWJvcnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25D
aGFuZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6
OklEQlZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6c2tpcFRv
TmV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6c2tpcFRvUHJldmlv
dXNUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2NoZWR1bGVFdmVudCk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyOjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyTGlzdDo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpzY2hlZHVs
ZWRFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmludGVybmFsQWRkVHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmludGVybmFsUmVtb3ZlVHJhY2sp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1FdmVudDo6TWVkaWFTdHJlYW1FdmVudCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6OnRyYWNrRW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1U
cmFjazo6dHJhY2tNdXRlZENoYW5nZWQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
VHJhY2tFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tF
dmVudDo6TWVkaWFTdHJlYW1UcmFja0V2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vT3ZlcmNvbnN0cmFpbmVkRXJyb3JFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6T3ZlcmNv
bnN0cmFpbmVkRXJyb3JFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok92ZXJjb25z
dHJhaW5lZEVycm9yRXZlbnQ6Ok92ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZmlyZUlDRUNhbmRpZGF0ZUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9uZUdhdGhlcmluZ0Nh
bmRpZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjp1cGRh
dGVTaWduYWxpbmdTdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1G
VG9uZUNoYW5nZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQ6OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWw6OmRpZENoYW5nZVJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWw6OmRpZERldGVjdEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpi
dWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEV2ZW50
OjpSVENEYXRhQ2hhbm5lbEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsRXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjp1
cGRhdGVJY2VHYXRoZXJpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVj
dGlvbjo6dXBkYXRlSWNlQ29ubmVjdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1Bl
ZXJDb25uZWN0aW9uOjp1cGRhdGVDb25uZWN0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUGVlckNvbm5lY3Rpb246OnNjaGVkdWxlTmVnb3RpYXRpb25OZWVkZWRFdmVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50OjpSVENQZWVyQ29ubmVj
dGlvbkljZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uSWNlRXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNr
RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDVHJhY2tFdmVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1RyYWNrRXZlbnQ6OlJUQ1RyYWNrRXZlbnQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC5oOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlU3RyZWFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZERhdGFDaGFubmVs
KToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNrRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQpOgorICAgICAgICAqIE1vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQ6Ok1lcmNoYW50VmFsaWRhdGlvbkV2ZW50
KToKKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRl
RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudDo6
UGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQ6OnBvc3RFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhl
c2lzRXZlbnQ6OlNwZWVjaFN5bnRoZXNpc0V2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnNl
dFN0YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUHJvY2Vzc2luZ0V2ZW50OjpBdWRpb1Byb2Nl
c3NpbmdFdmVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
OjpmaW5pc2gpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxl
dGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudDo6T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvQ2xvc2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xvc2VFdmVudDo6Q2xv
c2VFdmVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0OjpkaXNwYXRjaE9yUXVldWVFcnJvckV2ZW50KToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnZyL1ZSRGlzcGxheUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZSRGlzcGxh
eUV2ZW50OjpWUkRpc3BsYXlFdmVudCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmRpc3BhdGNoQWNjZXNzaWJpbGl0eUV2ZW50V2l0aFR5cGUgY29uc3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJsZVNldFZhbHVlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJsZVNldFZhbHVlRXZlbnQ6OkFjY2Vzc2libGVTZXRWYWx1ZUV2ZW50KToKKyAg
ICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBbmltYXRpb25QbGF5YmFja0V2ZW50OjpBbmltYXRpb25QbGF5YmFja0V2ZW50KToK
KyAgICAgICAgKiBkb20vQWJvcnRTaWduYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJvcnRT
aWduYWw6OmFib3J0KToKKyAgICAgICAgKiBkb20vQW5pbWF0aW9uRXZlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QW5pbWF0aW9uRXZlbnQ6OkFuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKiBk
b20vQmVmb3JlTG9hZEV2ZW50Lmg6CisgICAgICAgICogZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJlZm9yZVRleHRJbnNlcnRlZEV2ZW50OjpCZWZv
cmVUZXh0SW5zZXJ0ZWRFdmVudCk6CisgICAgICAgICogZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJlZm9yZVVubG9hZEV2ZW50OjpCZWZvcmVVbmxvYWRFdmVu
dCk6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KToKKyAgICAgICAgKiBkb20vQ29t
cG9zaXRpb25FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpD
b21wb3NpdGlvbkV2ZW50KToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OmRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKToKKyAgICAgICAgKiBkb20vRGV2aWNl
TW90aW9uRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90aW9uRXZlbnQ6OkRl
dmljZU1vdGlvbkV2ZW50KToKKyAgICAgICAgKiBkb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpEZXZpY2VPcmll
bnRhdGlvbkV2ZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmZpbmlzaGVkUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlzcGF0Y2hG
dWxsU2NyZWVuQ2hhbmdlT3JFcnJvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpvcmllbnRhdGlvbkNoYW5nZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlT3JEaXNw
YXRjaFNjcm9sbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6
ZW5xdWV1ZVNjcm9sbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1
ZTo6ZW5xdWV1ZVJlc2l6ZUV2ZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRFdmVudFF1ZXVl
Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6ZGlzcGF0Y2hNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3Bh
dGNoRm9jdXNJbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoRm9j
dXNPdXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0Y2hXZWJLaXRJbWFnZVJlYWR5RXZlbnRGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBkb20vRXJyb3JFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFcnJvckV2ZW50OjpFcnJvckV2ZW50KToKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnQ6OkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Ojpj
cmVhdGUpOgorICAgICAgICAqIGRvbS9FdmVudC5oOgorICAgICAgICAqIGRvbS9Gb2N1c0V2ZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQpOgorICAgICAg
ICAqIGRvbS9Gb2N1c0V2ZW50Lmg6CisgICAgICAgICogZG9tL0hhc2hDaGFuZ2VFdmVudC5oOgor
ICAgICAgICAqIGRvbS9JbnB1dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RXZl
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEV2ZW50OjpJbnB1dEV2ZW50KToK
KyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQpOgor
ICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZUV2ZW50OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIGRvbS9Nb3VzZUV2ZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b3VzZUV2ZW50OjpNb3VzZUV2ZW50KToKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5oOgorICAg
ICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3Vz
ZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQpOgorICAgICAgICAqIGRvbS9Nb3VzZVJl
bGF0ZWRFdmVudC5oOgorICAgICAgICAqIGRvbS9NdXRhdGlvbkV2ZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uRXZlbnQ6Ok11dGF0aW9uRXZlbnQpOgorICAgICAgICAqIGRvbS9N
dXRhdGlvbkV2ZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6ZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpkaXNwYXRjaERPTUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6ZGlzcGF0Y2hJbnB1dEV2ZW50KToKKyAgICAgICAgKiBkb20vT3ZlcmZsb3dFdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPdmVyZmxvd0V2ZW50OjpPdmVyZmxvd0V2ZW50KToKKyAgICAg
ICAgKiBkb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
VHJhbnNpdGlvbkV2ZW50OjpQYWdlVHJhbnNpdGlvbkV2ZW50KToKKyAgICAgICAgKiBkb20vUG9w
U3RhdGVFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2ZW50OjpQb3BTdGF0
ZUV2ZW50KToKKyAgICAgICAgKiBkb20vUHJvZ3Jlc3NFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQcm9ncmVzc0V2ZW50OjpQcm9ncmVzc0V2ZW50KToKKyAgICAgICAgKiBkb20vU2NyaXB0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpkaXNwYXRjaEVy
cm9yRXZlbnQpOgorICAgICAgICAqIGRvbS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg6
CisgICAgICAgICogZG9tL1NpbXVsYXRlZENsaWNrLmNwcDoKKyAgICAgICAgKiBkb20vVGV4dEV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVudDo6VGV4dEV2ZW50KToKKyAgICAg
ICAgKiBkb20vVHJhbnNpdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zaXRp
b25FdmVudDo6VHJhbnNpdGlvbkV2ZW50KToKKyAgICAgICAgKiBkb20vVUlFdmVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpVSUV2ZW50OjpVSUV2ZW50KToKKyAgICAgICAgKiBkb20vVUlFdmVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6VUlFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBkb20v
VUlFdmVudFdpdGhLZXlTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VUlFdmVudFdpdGhLZXlT
dGF0ZTo6VUlFdmVudFdpdGhLZXlTdGF0ZSk6CisgICAgICAgICogZG9tL1dlYktpdEFuaW1hdGlv
bkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEFuaW1hdGlvbkV2ZW50OjpXZWJL
aXRBbmltYXRpb25FdmVudCk6CisgICAgICAgICogZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRUcmFuc2l0aW9uRXZlbnQ6OldlYktpdFRyYW5z
aXRpb25FdmVudCk6CisgICAgICAgICogZG9tL1doZWVsRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2hlZWxFdmVudDo6V2hlZWxFdmVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OmRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp3aWxsQXBwbHlFZGl0aW5nIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRT
ZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdBcHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZWxlY3RBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246OmRpc3BhdGNoU2VsZWN0U3RhcnQpOgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxzRWxlbWVudDo6ZGlzcGF0Y2hQ
ZW5kaW5nRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaENoYW5n
ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNoZWNr
VmFsaWRpdHkpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6cHJlcGFyZUZvclN1Ym1pc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpyZXNldCk6CisgICAgICAgICogaHRtbC9IVE1M
SW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlTG9hZGVyOjpkaXNw
YXRjaExvYWRFdmVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6Om9uU2VhcmNoKToKKyAgICAgICAgKiBo
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1l
bnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpub3RpZnlBYm91dFBsYXlp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4
dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRT
aXplQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNoZWNrU25hcHNob3RT
dGF0dXMpOgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxTbG90RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2xvdEVs
ZW1lbnQ6OmRpc3BhdGNoU2xvdENoYW5nZUV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxTb3Vy
Y2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVtZW50OjplcnJv
ckV2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50
KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rpb25DaGFuZ2Vk
KToKKyAgICAgICAgKiBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyYWNrRWxlbWVudDo6ZGlkQ29tcGxldGVMb2FkKToKKyAgICAgICAgKiBodG1sL01l
ZGlhQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnNj
aGVkdWxlRXZlbnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29udGV4dEV2ZW50OjpXZWJHTENvbnRleHRFdmVu
dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkaXNwYXRjaENvbnRleHRMb3N0RXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0
b3JlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkRXZlbnQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxTY3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0TG9hZEV2
ZW50KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhY2tFdmVudDo6VHJhY2tFdmVudCk6CisgICAgICAgICogaHRtbC90cmFjay9UcmFj
a0V2ZW50Lmg6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OnNjaGVkdWxlVHJhY2tFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpzY2hlZHVsZUNoYW5nZUV2ZW50KToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xp
Y3lEZW5pZWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hVbmxvYWRFdmVudHMpOgorICAgICAgICAqIGxv
YWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZGlz
cGF0Y2hQZW5kaW5nRXJyb3JFdmVudCk6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXBwbGljYXRpb25DYWNoZUV2ZW50KToKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmRp
c3BhdGNoQWxsUGVuZGluZ1VubG9hZEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5k
b3c6Omxhbmd1YWdlc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNw
YXRjaExvYWRFdmVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZGlzcGF0Y2hTZWxlY3RTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0V2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpzY2hlZHVsZVJlY29ubmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjphYm9ydENvbm5lY3Rpb25BdHRlbXB0KToKKyAg
ICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXNw
YXRjaEV2ZW50c09uV2luZG93QW5kRm9jdXNlZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRnJhbWUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2VuZFJlc2l6ZUV2ZW50SWZO
ZWVkZWQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXR3
b3JrU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlOjpyZXNvdXJjZVRpbWluZ0J1ZmZlckZ1bGxUaW1lckZp
cmVkKToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmVucXVldWVFdmVudCk6CisgICAgICAg
ICogcGFnZS9WaXN1YWxWaWV3cG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3
cG9ydDo6ZW5xdWV1ZVJlc2l6ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZpZXdw
b3J0OjplbnF1ZXVlU2Nyb2xsRXZlbnQpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUV2ZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VFdmVudDo6U3RvcmFnZUV2ZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjpzZW5kU1ZHTG9hZEV2ZW50SWZQb3NzaWJsZSk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRF
dmVudCk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVXNlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHN2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6
OmRpc3BhdGNoUGVuZGluZ0V2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1l
c3NhZ2luZ1Byb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UpOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5k
YWJsZUV2ZW50OjpFeHRlbmRhYmxlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9F
eHRlbmRhYmxlRXZlbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1l
c3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRhYmxlTWVzc2FnZUV2ZW50
OjpFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyOjpzY2hlZHVs
ZVRhc2tUb1VwZGF0ZVN0YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpzY2hlZHVsZVRhc2tUb0ZpcmVDb250cm9sbGVyQ2hhbmdlRXZlbnQpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnNjaGVkdWxlVGFza1RvRmlyZVVw
ZGF0ZUZvdW5kRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZSk6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjYWxs
UmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKToKKwogMjAxOC0wOC0xNSAgQmVuIFJpY2hhcmRzICA8
YmVudG9uX3JpY2hhcmRzQGFwcGxlLmNvbT4KIAogICAgICAgICBXZSBzaG91bGQgY2FjaGUgdGhl
IGNvbXBpbGVkIHNhbmRib3ggcHJvZmlsZSBpbiBhIGRhdGEgdmF1bHQKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmdGb3JQbGF5CiB9CiAKIFdlYktpdFBsYXliYWNr
VGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6OldlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgYXZhaWxhYmxlKQotICAg
IDogRXZlbnQoZXZlbnRUeXBlLCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVudChldmVudFR5cGUs
IENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2F2YWlsYWJpbGl0eShz
dHJpbmdGb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eShhdmFpbGFibGUpKQogewogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRBdXRob3Jp
emVkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRBdXRob3Jp
emVkRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIEFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudDo6QXBwbGVQYXlQYXlt
ZW50QXV0aG9yaXplZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgdW5zaWduZWQgdmVy
c2lvbiwgY29uc3QgUGF5bWVudCYgcGF5bWVudCkKLSAgICA6IEV2ZW50KHR5cGUsIGZhbHNlLCBm
YWxzZSkKKyAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8p
CiAgICAgLCBtX3BheW1lbnQocGF5bWVudC50b0FwcGxlUGF5UGF5bWVudCh2ZXJzaW9uKSkKIHsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
TWV0aG9kU2VsZWN0ZWRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcAkocmV2
aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyAr
MzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBcHBsZVBheVBheW1lbnRNZXRob2RTZWxl
Y3RlZEV2ZW50OjpBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgY29uc3QgUGF5bWVudE1ldGhvZCYgcGF5bWVudE1ldGhvZCkKLSAgICA6
IEV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSkKKyAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6
Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX3BheW1lbnRNZXRob2QocGF5bWVudE1ldGhv
ZC50b0FwcGxlUGF5UGF5bWVudE1ldGhvZCgpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAkocmV2aXNpb24g
MjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Np
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBBcHBsZVBheVNl
c3Npb246OmRpZENhbmNlbFBheW1lbnRTZQogCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpDYW5jZWxl
ZDsKIAotICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jYW5jZWxF
dmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuY2FuY2VsRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpObyk7CiAgICAgZGlzcGF0Y2hFdmVudChldmVudC5nZXQoKSk7CiAKICAgICBkaWRS
ZWFjaEZpbmFsU3RhdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2Vs
ZWN0ZWRFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBcHBs
ZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQ6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0
U2VsZWN0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIHVuc2lnbmVkIHZlcnNpb24s
IGNvbnN0IFBheW1lbnRDb250YWN0JiBzaGlwcGluZ0NvbnRhY3QpCi0gICAgOiBFdmVudCh0eXBl
LCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNl
bGFibGU6Ok5vKQogICAgICwgbV9zaGlwcGluZ0NvbnRhY3Qoc2hpcHBpbmdDb250YWN0LnRvQXBw
bGVQYXlQYXltZW50Q29udGFjdCh2ZXJzaW9uKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlT
aGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3Rl
ZEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgaW5saW5l
IEFwcGxlUGF5U2hpcHBpbmdNZXRob2QgY29uCiB9CiAKIEFwcGxlUGF5U2hpcHBpbmdNZXRob2RT
ZWxlY3RlZEV2ZW50OjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpT
aGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCi0gICAgOiBFdmVudCh0eXBlLCBmYWxzZSwg
ZmFsc2UpCisgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5v
KQogICAgICwgbV9zaGlwcGluZ01ldGhvZChjb252ZXJ0KHNoaXBwaW5nTWV0aG9kKSkKIHsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1l
cmNoYW50RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJj
aGFudEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBBcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudDo6QXBwbGVQYXlWYWxp
ZGF0ZU1lcmNoYW50RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBVUkwmIHZh
bGlkYXRpb25VUkwpCi0gICAgOiBFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVu
dCh0eXBlLCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQogICAgICwgbV92YWxpZGF0
aW9uVVJMKHZhbGlkYXRpb25VUkwpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCShyZXZp
c2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MSw3ICs2NDEsNyBAQCB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMoCiAgICAgICAgIG1fc3RhdHVzZXMu
dW5jaGVja2VkQXBwZW5kKHsgV1RGTW92ZShzdGF0dXMuZmlyc3QpLCB0b01lZGlhS2V5U3RhdHVz
KHN0YXR1cy5zZWNvbmQpIH0pOwogCiAgICAgLy8gNS4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBz
aW1wbGUgZXZlbnQgbmFtZWQga2V5c3RhdHVzZXNjaGFuZ2UgYXQgdGhlIHNlc3Npb24uCi0gICAg
bV9ldmVudFF1ZXVlLmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlz
dGF0dXNlc2NoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBtX2V2ZW50UXVldWUuZW5x
dWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleXN0YXR1c2VzY2hhbmdlRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogCiAg
ICAgLy8gNi4gUXVldWUgYSB0YXNrIHRvIHJ1biB0aGUgQXR0ZW1wdCB0byBSZXN1bWUgUGxheWJh
Y2sgSWYgTmVjZXNzYXJ5IGFsZ29yaXRobSBvbiBlYWNoIG9mIHRoZSBtZWRpYSBlbGVtZW50KHMp
IHdob3NlIG1lZGlhS2V5cyBhdHRyaWJ1dGUgaXMgdGhlIE1lZGlhS2V5cyBvYmplY3QgdGhhdCBj
cmVhdGVkIHRoZSBzZXNzaW9uLgogICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFL
ZXlNZXNzYWdlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcAkocmV2
aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdlYktpdE1lZGlhS2V5TWVzc2Fn
ZUV2ZW50OjpXZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIFVpbnQ4QXJyYXkqIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkwpCi0g
ICAgOiBFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJi
bGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQogICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpCiAgICAg
LCBtX2Rlc3RpbmF0aW9uVVJMKGRlc3RpbmF0aW9uVVJMKQogewpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1l
ZGlhS2V5TmVlZGVkRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQ6OldlYktpdE1l
ZGlhS2V5TmVlZGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBVaW50OEFycmF5KiBp
bml0RGF0YSkKLSAgICA6IEV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSkKKyAgICA6IEV2ZW50KHR5
cGUsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2luaXREYXRhKGlu
aXREYXRhKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Np
b24uY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBXZWJLaXRNZWRpYUtleVNlc3Npb246OmFkZEtleVRp
bWVyRgogCiAgICAgICAgIC8vIDIuNy4gSWYgZGlkIHN0b3JlIGtleSBpcyB0cnVlLCBxdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXlhZGRlZCBhdCB0aGUgTWVkaWFL
ZXlTZXNzaW9uIG9iamVjdC4KICAgICAgICAgaWYgKGRpZFN0b3JlS2V5KSB7Ci0gICAgICAgICAg
ICBhdXRvIGtleWFkZGVkRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRr
ZXlhZGRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgYXV0byBrZXlhZGRlZEV2
ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0a2V5YWRkZWRFdmVudCwgRXZl
bnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICAgICAgICAg
IGtleWFkZGVkRXZlbnQtPnNldFRhcmdldCh0aGlzKTsKICAgICAgICAgICAgIG1fYXN5bmNFdmVu
dFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGtleWFkZGVkRXZlbnQpKTsKIApAQCAtMjEyLDcg
KzIxMiw3IEBAIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IoTWUKIHsKICAg
ICBtX2Vycm9yID0gV2ViS2l0TWVkaWFLZXlFcnJvcjo6Y3JlYXRlKGVycm9yQ29kZSwgc3lzdGVt
Q29kZSk7CiAKLSAgICBhdXRvIGtleWVycm9yRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgIGF1dG8ga2V5ZXJy
b3JFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleWVycm9yRXZlbnQs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAga2V5
ZXJyb3JFdmVudC0+c2V0VGFyZ2V0KHRoaXMpOwogICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVl
dWVFdmVudChXVEZNb3ZlKGtleWVycm9yRXZlbnQpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZEV2ZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBHYW1l
cGFkRXZlbnQ6OkdhbWVwYWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgR2Ft
ZXBhZCYgZ2FtZXBhZCkKLSAgICA6IEV2ZW50KGV2ZW50VHlwZSwgZmFsc2UsIGZhbHNlKQorICAg
IDogRXZlbnQoZXZlbnRUeXBlLCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQogICAg
ICwgbV9nYW1lcGFkKCZnYW1lcGFkKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjcsMTMgKzI2NywxMyBAQCB2b2lkIElEQkRhdGFiYXNlOjpjb25uZWN0aW9u
VG9TZXJ2ZXJMb3N0CiAgICAgZm9yIChhdXRvJiB0cmFuc2FjdGlvbiA6IG1fYWN0aXZlVHJhbnNh
Y3Rpb25zLnZhbHVlcygpKQogICAgICAgICB0cmFuc2FjdGlvbi0+Y29ubmVjdGlvbkNsb3NlZEZy
b21TZXJ2ZXIoZXJyb3IpOwogCi0gICAgYXV0byBlcnJvckV2ZW50ID0gRXZlbnQ6OmNyZWF0ZSht
X2V2ZW50TmFtZXMuZXJyb3JFdmVudCwgdHJ1ZSwgZmFsc2UpOworICAgIGF1dG8gZXJyb3JFdmVu
dCA9IEV2ZW50OjpjcmVhdGUobV9ldmVudE5hbWVzLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgIGVycm9yRXZlbnQtPnNldFRh
cmdldCh0aGlzKTsKIAogICAgIGlmIChhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKQogICAgICAgICBjb250ZXh0LT5ldmVudFF1ZXVlKCkuZW5xdWV1ZUV2ZW50KFdURk1v
dmUoZXJyb3JFdmVudCkpOwogCi0gICAgYXV0byBjbG9zZUV2ZW50ID0gRXZlbnQ6OmNyZWF0ZSht
X2V2ZW50TmFtZXMuY2xvc2VFdmVudCwgdHJ1ZSwgZmFsc2UpOworICAgIGF1dG8gY2xvc2VFdmVu
dCA9IEV2ZW50OjpjcmVhdGUobV9ldmVudE5hbWVzLmNsb3NlRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgIGNsb3NlRXZlbnQtPnNldFRh
cmdldCh0aGlzKTsKIAogICAgIGlmIChhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25FcnJvcihjb25zdCBJ
REIKICAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAK
ICAgICBtX2RvbUVycm9yID0gZGF0YS5lcnJvcigpLnRvRE9NRXhjZXB0aW9uKCk7Ci0gICAgZW5x
dWV1ZUV2ZW50KElEQlJlcXVlc3RDb21wbGV0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgdHJ1ZSwgdHJ1ZSwgKnRoaXMpKTsKKyAgICBlbnF1ZXVlRXZlbnQoSURCUmVx
dWVzdENvbXBsZXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgKnRoaXMpKTsKIH0K
IAogdm9pZCBJREJPcGVuREJSZXF1ZXN0Ojp2ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb25EaWRGaW5p
c2goKQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OmZpcmVTdWNjZXNz
QWZ0ZXJWCiAgICAgQVNTRVJUKGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKICAgICBtX3RyYW5zYWN0
aW9uLT5hZGRSZXF1ZXN0KCp0aGlzKTsKIAotICAgIGF1dG8gZXZlbnQgPSBJREJSZXF1ZXN0Q29t
cGxldGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCwgZmFsc2UsIGZh
bHNlLCAqdGhpcyk7CisgICAgYXV0byBldmVudCA9IElEQlJlcXVlc3RDb21wbGV0aW9uRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sICp0aGlzKTsKICAgICBtX29wZW5EYXRhYmFzZVN1Y2Nl
c3NFdmVudCA9ICZldmVudC5nZXQoKTsKIAogICAgIGVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50
KSk7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpmaXJlRXJyb3JB
ZnRlclZlcgogICAgIHNldFJlc3VsdFRvVW5kZWZpbmVkKCk7CiAKICAgICBtX3RyYW5zYWN0aW9u
LT5hZGRSZXF1ZXN0KCp0aGlzKTsKLSAgICBlbnF1ZXVlRXZlbnQoSURCUmVxdWVzdENvbXBsZXRp
b25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCB0cnVlLCB0cnVlLCAqdGhp
cykpOworICAgIGVucXVldWVFdmVudChJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6WWVzLCAqdGhpcykpOwogfQogCiB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OmNh
bmNlbEZvclN0b3AoKQpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6
b25TdWNjZXNzKGNvbnN0IEkKICAgICBzZXRSZXN1bHQoSURCRGF0YWJhc2U6OmNyZWF0ZSgqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjb25uZWN0aW9uUHJveHkoKSwgcmVzdWx0RGF0YSkpOwog
ICAgIG1fcmVhZHlTdGF0ZSA9IFJlYWR5U3RhdGU6OkRvbmU7CiAKLSAgICBlbnF1ZXVlRXZlbnQo
SURCUmVxdWVzdENvbXBsZXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZl
bnQsIGZhbHNlLCBmYWxzZSwgKnRoaXMpKTsKKyAgICBlbnF1ZXVlRXZlbnQoSURCUmVxdWVzdENv
bXBsZXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIEV2ZW50OjpD
YW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgKnRoaXMpKTsKIH0KIAogdm9p
ZCBJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQoY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJl
cXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI4LDE1ICs1
MjgsMTQgQEAgdm9pZCBJREJSZXF1ZXN0OjpvbkVycm9yKCkKICAgICBBU1NFUlQoIW1faWRiRXJy
b3IuaXNOdWxsKCkpOwogCiAgICAgbV9kb21FcnJvciA9IG1faWRiRXJyb3IudG9ET01FeGNlcHRp
b24oKTsKLSAgICBlbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JF
dmVudCwgdHJ1ZSwgdHJ1ZSkpOworICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNl
bGFibGU6OlllcykpOwogfQogCiB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcygpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyIpOwogICAgIEFTU0VSVCgmb3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLQotICAgIGVucXVldWVFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwor
ICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiB2
b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChSZWY8SURCRGF0YWJhc2U+JiYgZGF0YWJhc2UpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0Q29tcGxldGlv
bkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdENvbXBsZXRpb25FdmVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1JREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50OjpJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgSURCUmVxdWVzdCYgcmVxdWVzdCkKK0lEQlJlcXVlc3RDb21wbGV0aW9uRXZlbnQ6OklEQlJl
cXVlc3RDb21wbGV0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUg
Y2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgSURCUmVxdWVzdCYgcmVxdWVzdCkK
ICAgICA6IEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAsIG1fcmVxdWVz
dChyZXF1ZXN0KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdENvbXBsZXRpb25FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3RDb21wbGV0aW9uRXZlbnQuaAkocmV2aXNpb24gMjM0
OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdENvbXBs
ZXRpb25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMyArMzQsMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50IDogcHVibGljIEV2
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBJREJSZXF1ZXN0
JiByZXF1ZXN0KQorICAgIHN0YXRpYyBSZWY8RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBJ
REJSZXF1ZXN0JiByZXF1ZXN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SURCUmVxdWVzdENvbXBsZXRpb25FdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHJl
cXVlc3QpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgSURCUmVxdWVzdENvbXBsZXRpb25FdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIElEQlJlcXVlc3QmKTsKKyAgICBJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIElEQlJlcXVlc3QmKTsK
IAogICAgIFJlZjxJREJSZXF1ZXN0PiBtX3JlcXVlc3Q7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkocmV2aXNp
b24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTEsMTQgKzU5MSwxNCBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSIpOwogICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSAgICBlbnF1ZXVlRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cisg
ICAgZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBsZXRlRXZlbnQs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjpmaXJlT25BYm9ydCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQlRyYW5zYWN0aW9uOjpmaXJlT25BYm9ydCIpOwogICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSAgICBlbnF1ZXVlRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKKyAg
ICBlbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgRXZl
bnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiB2b2lk
IElEQlRyYW5zYWN0aW9uOjplbnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJz
aW9uQ2hhbmdlRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElEQlZlcnNpb25DaGFu
Z2VFdmVudDo6SURCVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1Zl
cnNpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKLSAgICA6IEV2ZW50KG5hbWUsIGZhbHNl
IC8qY2FuQnViYmxlKi8sIGZhbHNlIC8qY2FuY2VsYWJsZSovKQorICAgIDogRXZlbnQobmFtZSwg
Q2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fcmVxdWVzdElkZW50aWZp
ZXIocmVxdWVzdElkZW50aWZpZXIpCiAgICAgLCBtX29sZFZlcnNpb24ob2xkVmVyc2lvbikKIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDEz
ICsyNTMsMTMgQEAgdm9pZCBNZWRpYVNlc3Npb246OnNhZmVseUl0ZXJhdGVBY3RpdmVNZQogdm9p
ZCBNZWRpYVNlc3Npb246OnNraXBUb05leHRUcmFjaygpCiB7CiAgICAgaWYgKG1fY29udHJvbHMg
JiYgbV9jb250cm9scy0+bmV4dFRyYWNrRW5hYmxlZCgpKQotICAgICAgICBtX2NvbnRyb2xzLT5k
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm5leHR0cmFja0V2ZW50LCBm
YWxzZSwgZmFsc2UpKTsKKyAgICAgICAgbV9jb250cm9scy0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5uZXh0dHJhY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgTWVkaWFTZXNzaW9uOjpza2lw
VG9QcmV2aW91c1RyYWNrKCkKIHsKICAgICBpZiAobV9jb250cm9scyAmJiBtX2NvbnRyb2xzLT5w
cmV2aW91c1RyYWNrRW5hYmxlZCgpKQotICAgICAgICBtX2NvbnRyb2xzLT5kaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnByZXZpb3VzdHJhY2tFdmVudCwgZmFsc2UsIGZh
bHNlKSk7CisgICAgICAgIG1fY29udHJvbHMtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkucHJldmlvdXN0cmFja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb246OmNvbnRyb2xJ
c0VuYWJsZWREaWRDaGFuZ2UoKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBFeGNlcHRpb25PcjxSZWY8U291cmNlQnVmZmVyUHJp
dmF0ZT4+IE1lCiAKIHZvaWQgTWVkaWFTb3VyY2U6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudE5hbWUpCiB7Ci0gICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lLCBmYWxzZSwgZmFsc2UpOworICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsK
ICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwogCiAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5x
dWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAJKHJldmlzaW9uIDIzNDkxMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTAxLDcgKzUwMSw3IEBAIGJvb2wgU291cmNlQnVmZmVyOjppc1Jl
bW92ZWQoKSBjb25zdAogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c2NoZWR1bGVFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWUsIGZhbHNlLCBmYWxzZSk7CisgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8pOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAKICAgICBtX2FzeW5jRXZlbnRRdWV1
ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCShyZXZp
c2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlckxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgU291
cmNlQnVmZmVyTGlzdDo6c3dhcChWZWN0b3I8UmVmUHQKIAogdm9pZCBTb3VyY2VCdWZmZXJMaXN0
OjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIGF1
dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBh
dXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5v
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsK
IAogICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMs
NyBAQCBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMgTWVkaWFEZXZpCiB2b2lkIE1lZGlh
RGV2aWNlczo6c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKCkKIHsKICAgICBpZiAoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmRldmljZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kZXZpY2VjaGFuZ2VFdmVudCwg
RXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIGJv
b2wgTWVkaWFEZXZpY2VzOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHJl
dmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNyArMjI3LDcgQEAgYm9vbCBNZWRp
YVN0cmVhbTo6aW50ZXJuYWxBZGRUcmFjayhSZWY8TQogICAgIGlmIChzdHJlYW1Nb2RpZmllciA9
PSBTdHJlYW1Nb2RpZmllcjo6RG9tQVBJKQogICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrKCZ0
cmFjay5wcml2YXRlVHJhY2soKSwgTWVkaWFTdHJlYW1Qcml2YXRlOjpOb3RpZnlDbGllbnRPcHRp
b246OkRvbnROb3RpZnkpOwogICAgIGVsc2UKLSAgICAgICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0
cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVudCwgZmFsc2Us
IGZhbHNlLCAmdHJhY2spKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNr
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCAmdHJhY2spKTsKIAogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtMjQ1LDcgKzI0NSw3IEBAIGJvb2wgTWVkaWFTdHJlYW06OmludGVybmFsUmVt
b3ZlVHJhY2soY28KICAgICBpZiAoc3RyZWFtTW9kaWZpZXIgPT0gU3RyZWFtTW9kaWZpZXI6OkRv
bUFQSSkKICAgICAgICAgbV9wcml2YXRlLT5yZW1vdmVUcmFjayh0cmFjay0+cHJpdmF0ZVRyYWNr
KCksIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Tm90aWZ5Q2xpZW50T3B0aW9uOjpEb250Tm90aWZ5KTsK
ICAgICBlbHNlCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgV1RGTW92
ZSh0cmFjaykpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6
Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBXVEZNb3ZlKHRyYWNrKSkpOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZWY8TWVkaWFTdHJlYW1FdmVudD4gTWVkaWFTdHJlYW1FdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPE1l
ZGlhU3RyZWFtPiYmIHN0cmVhbSkKK1JlZjxNZWRpYVN0cmVhbUV2ZW50PiBNZWRpYVN0cmVhbUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxl
LCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgUmVmUHRyPE1lZGlhU3RyZWFtPiYmIHN0cmVhbSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0cmVhbUV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZShzdHJlYW0pKSk7CiB9CkBAIC00MSw3ICs0MSw3IEBA
IFJlZjxNZWRpYVN0cmVhbUV2ZW50PiBNZWRpYVN0cmVhbUV2ZW50OjoKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYVN0cmVhbUV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQp
KTsKIH0KIAotTWVkaWFTdHJlYW1FdmVudDo6TWVkaWFTdHJlYW1FdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxNZWRp
YVN0cmVhbT4mJiBzdHJlYW0pCitNZWRpYVN0cmVhbUV2ZW50OjpNZWRpYVN0cmVhbUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxl
IGNhbmNlbGFibGUsIFJlZlB0cjxNZWRpYVN0cmVhbT4mJiBzdHJlYW0pCiAgICAgOiBFdmVudCh0
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX3N0cmVhbShXVEZNb3ZlKHN0cmVh
bSkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtRXZlbnQuaAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1FdmVudCA6IHB1YmxpYyBFdmVudCB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1FdmVudCgpOwogCi0gICAgc3RhdGlj
IFJlZjxNZWRpYVN0cmVhbUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8TWVkaWFTdHJlYW0+JiYpOwor
ICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIFJlZlB0cjxNZWRpYVN0cmVhbT4mJik7
CiAKICAgICBzdHJ1Y3QgSW5pdCA6IEV2ZW50SW5pdCB7CiAgICAgICAgIFJlZlB0cjxNZWRpYVN0
cmVhbT4gc3RyZWFtOwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFdmVu
dEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIE1lZGlh
U3RyZWFtRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBSZWZQdHI8TWVkaWFTdHJlYW0+JiYpOworICAgIE1lZGlhU3RyZWFtRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgUmVm
UHRyPE1lZGlhU3RyZWFtPiYmKTsKICAgICBNZWRpYVN0cmVhbUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBSZWZQdHI8TWVkaWFT
dHJlYW0+IG1fc3RyZWFtOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCShyZXZpc2lvbiAyMzQ5MTApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNr
Ojp0cmFja0VuZGVkKE1lZGlhUwogCiAgICAgLy8gMy4gTm90aWZ5IHRyYWNrJ3Mgc291cmNlIHRo
YXQgdHJhY2sgaXMgZW5kZWQgc28gdGhhdCB0aGUgc291cmNlIG1heSBiZSBzdG9wcGVkLCB1bmxl
c3Mgb3RoZXIgTWVkaWFTdHJlYW1UcmFjayBvYmplY3RzIGRlcGVuZCBvbiBpdC4KICAgICAvLyA0
LiBGaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGVuZGVkIGF0IHRoZSBvYmplY3QuCi0gICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBmYWxzZSwg
ZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVu
ZGVkRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykp
OwogCiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAgICAgICBvYnNl
cnZlci0+dHJhY2tEaWRFbmQoKTsKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIE1lZGlhU3RyZWFt
VHJhY2s6OnRyYWNrTXV0ZWRDaGFuZ2VkCiAgICAgICAgIHJldHVybjsKIAogICAgIEF0b21pY1N0
cmluZyBldmVudFR5cGUgPSBtdXRlZCgpID8gZXZlbnROYW1lcygpLm11dGVFdmVudCA6IGV2ZW50
TmFtZXMoKS51bm11dGVFdmVudDsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnRUeXBlLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnRUeXBlLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
KTsKIAogICAgIGNvbmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TWVkaWFTdHJlYW1U
cmFja0V2ZW50PiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrPiYmIHRyYWNrKQorUmVmPE1lZGlhU3RyZWFtVHJhY2tFdmVudD4gTWVkaWFTdHJl
YW1UcmFja0V2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUg
Y2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+JiYgdHJhY2spCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW1UcmFj
a0V2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh0cmFjaykpKTsKIH0K
QEAgLTQxLDcgKzQxLDcgQEAgUmVmPE1lZGlhU3RyZWFtVHJhY2tFdmVudD4gTWVkaWFTdHJlYW1U
cgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3RyZWFtVHJhY2tFdmVudCh0eXBlLCBp
bml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9CiAKLU1lZGlhU3RyZWFtVHJhY2tFdmVudDo6TWVk
aWFTdHJlYW1UcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2spCitN
ZWRpYVN0cmVhbVRyYWNrRXZlbnQ6Ok1lZGlhU3RyZWFtVHJhY2tFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxl
LCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaykKICAgICA6IEV2ZW50KHR5cGUsIGNh
bkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAsIG1fdHJhY2soV1RGTW92ZSh0cmFjaykpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tF
dmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja0V2ZW50LmgJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1UcmFja0V2ZW50IDogcHVi
bGljIEV2ZQogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtVHJhY2tFdmVudCgpOwog
Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbVRyYWNrRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiYmKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtVHJhY2tFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFi
bGUsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmKTsKIAogICAgIHN0cnVjdCBJbml0IDogRXZl
bnRJbml0IHsKICAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrOwpAQCAtNTAs
NyArNTAsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBj
b25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbVRyYWNrRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJik7CisgICAgTWVkaWFTdHJlYW1UcmFja0V2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiYmKTsKICAgICBNZWRpYVN0cmVhbVRyYWNrRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiBtX3RyYWNrOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9PdmVyY29uc3RyYWluZWRFcnJvckV2ZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9PdmVyY29uc3RyYWluZWRFcnJvckV2ZW50
LmgJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vT3ZlcmNvbnN0cmFpbmVkRXJyb3JFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBAIGNsYXNzIE92ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQgOiBwdWJsaWMKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5PdmVyY29uc3RyYWluZWRFcnJvckV2ZW50KCkgPSBkZWZhdWx0OwogCi0g
ICAgc3RhdGljIFJlZjxPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBPdmVyY29u
c3RyYWluZWRFcnJvciogZXJyb3IpCisgICAgc3RhdGljIFJlZjxPdmVyY29uc3RyYWluZWRFcnJv
ckV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgT3ZlcmNvbnN0cmFpbmVkRXJyb3IqIGVycm9y
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3ZlcmNvbnN0cmFpbmVkRXJy
b3JFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGVycm9yKSk7CiAgICAgfQpAQCAt
NTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50SW50ZXJm
YWNlVHlwZTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE92ZXJjb25zdHJhaW5lZEVycm9y
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBPdmVyY29uc3RyYWluZWRFcnJvciogZXJyb3IpCisgICAgZXhwbGljaXQgT3ZlcmNv
bnN0cmFpbmVkRXJyb3JFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBj
YW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBPdmVyY29uc3RyYWluZWRFcnJvciog
ZXJyb3IpCiAgICAgICAgIDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAg
ICAgICAsIG1fZXJyb3IoZXJyb3IpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNyArMzU2
LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmZpcmVJQ0VDYW5kaQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX3BlZXJDb25uZWN0aW9uLmZpcmVFdmVudChS
VENQZWVyQ29ubmVjdGlvbkljZUV2ZW50OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCBXVEZNb3ZlKGNh
bmRpZGF0ZSksIFdURk1vdmUoc2VydmVyVVJMKSkpOworICAgIG1fcGVlckNvbm5lY3Rpb24uZmly
ZUV2ZW50KFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQ6OmNyZWF0ZShFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIFdURk1vdmUoY2FuZGlkYXRlKSwgV1RGTW92
ZShzZXJ2ZXJVUkwpKSk7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjplbmFibGVJ
Q0VDYW5kaWRhdGVGaWx0ZXJpbmcoKQpAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpkb25lR2F0aGVyaW4KICAgICBpZiAobV93YWl0aW5nRm9yTUROU1JlZ2lz
dHJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wZWVyQ29ubmVjdGlvbi5maXJlRXZl
bnQoUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgbnVsbHB0
ciwgeyB9KSk7CisgICAgbV9wZWVyQ29ubmVjdGlvbi5maXJlRXZlbnQoUlRDUGVlckNvbm5lY3Rp
b25JY2VFdmVudDo6Y3JlYXRlKEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpObywgbnVsbHB0ciwgeyB9KSk7CiAgICAgbV9wZWVyQ29ubmVjdGlvbi51cGRhdGVJY2VH
YXRoZXJpbmdTdGF0ZShSVENJY2VHYXRoZXJpbmdTdGF0ZTo6Q29tcGxldGUpOwogICAgIG1fcGVu
ZGluZ0lDRUNhbmRpZGF0ZXMuY2xlYXIoKTsKIH0KQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIFBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6dXBkYXRlU2lnbmFsCiAKICAgICBpZiAobmV3U2lnbmFsaW5n
U3RhdGUgIT0gbV9wZWVyQ29ubmVjdGlvbi5zaWduYWxpbmdTdGF0ZSgpKSB7CiAgICAgICAgIG1f
cGVlckNvbm5lY3Rpb24uc2V0U2lnbmFsaW5nU3RhdGUobmV3U2lnbmFsaW5nU3RhdGUpOwotICAg
ICAgICBtX3BlZXJDb25uZWN0aW9uLmZpcmVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5zaWduYWxpbmdzdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbi5maXJlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2lnbmFs
aW5nc3RhdGVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6Ok5vKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAJ
KHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcg
QEAgUmVmPFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ+IFJUQ0RUTUZUb25lQwogfQogCiBSVENEVE1G
VG9uZUNoYW5nZUV2ZW50OjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgdG9u
ZSkKLSAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS50b25lY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxz
ZSkKKyAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS50b25lY2hhbmdlRXZlbnQsIENhbkJ1YmJsZTo6
Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX3RvbmUodG9uZSkKIHsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDEwICsxNzEs
MTAgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkQ2hhbmdlUmVhZHlTdGF0ZQogCiAgICAgc3dp
dGNoIChtX3JlYWR5U3RhdGUpIHsKICAgICBjYXNlIFJUQ0RhdGFDaGFubmVsU3RhdGU6Ok9wZW46
Ci0gICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkub3BlbkV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBSVENEYXRhQ2hhbm5lbFN0YXRlOjpDbG9zZWQ6Ci0gICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFsc2Up
KTsKKyAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmNsb3NlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpObykpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAg
LTIxMSw3ICsyMTEsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWREZXRlY3RFcnJvcigpCiAg
ICAgaWYgKG1fc3RvcHBlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2NoZWR1bGVEaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOworICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8pKTsKIH0KIAogdm9pZCBSVENEYXRhQ2hhbm5lbDo6YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNp
bmcoc2l6ZV90IGFtb3VudCkKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVs
OjpidWZmZXJlZEFtb3VudElzRGVjCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhbW91bnQg
PD0gbV9idWZmZXJlZEFtb3VudExvd1RocmVzaG9sZCkKLSAgICAgICAgc2NoZWR1bGVEaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJ1ZmZlcmVkYW1vdW50bG93RXZlbnQs
IGZhbHNlLCBmYWxzZSkpOworICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuYnVmZmVyZWRhbW91bnRsb3dFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgUlRDRGF0YUNoYW5u
ZWw6OnN0b3AoKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVmPFJUQ0RhdGFDaGFubmVsRXZlbnQ+IFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIFJlZjxSVENEYXRhQ2hhbm5lbD4mJiBjaGFubmVsKQorUmVmPFJUQ0RhdGFDaGFubmVsRXZl
bnQ+IFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBSZWY8UlRDRGF0
YUNoYW5uZWw+JiYgY2hhbm5lbCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENEYXRh
Q2hhbm5lbEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZShjaGFubmVs
KSkpOwogfQpAQCAtNDIsNyArNDIsNyBAQCBSZWY8UlRDRGF0YUNoYW5uZWxFdmVudD4gUlRDRGF0
YUNoYW5uZWxFCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDRGF0YUNoYW5uZWxFdmVudCh0
eXBlLCBXVEZNb3ZlKGluaXRpYWxpemVyKSwgaXNUcnVzdGVkKSk7CiB9CiAKLVJUQ0RhdGFDaGFu
bmVsRXZlbnQ6OlJUQ0RhdGFDaGFubmVsRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWY8UlRDRGF0YUNoYW5uZWw+JiYgY2hh
bm5lbCkKK1JUQ0RhdGFDaGFubmVsRXZlbnQ6OlJUQ0RhdGFDaGFubmVsRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2Vs
YWJsZSwgUmVmPFJUQ0RhdGFDaGFubmVsPiYmIGNoYW5uZWwpCiAgICAgOiBFdmVudCh0eXBlLCBj
YW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX2NoYW5uZWwoV1RGTW92ZShjaGFubmVsKSkK
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxFdmVudC5oCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxSVENEYXRhQ2hh
bm5lbD4gY2hhbm5lbDsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxSVENEYXRhQ2hhbm5lbEV2
ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBSZWY8UlRDRGF0YUNoYW5uZWw+JiYpOworICAgIHN0YXRpYyBSZWY8UlRD
RGF0YUNoYW5uZWxFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUsIFJlZjxSVENEYXRhQ2hhbm5lbD4mJik7CiAgICAgc3RhdGljIFJl
ZjxSVENEYXRhQ2hhbm5lbEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBJ
bml0JiYsIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOwogCiAgICAgUlRDRGF0YUNoYW5uZWwm
IGNoYW5uZWwoKTsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZlbnRJ
bnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBSVENEYXRh
Q2hhbm5lbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgUmVmPFJUQ0RhdGFDaGFubmVsPiYmKTsKKyAgICBSVENEYXRhQ2hhbm5l
bEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUs
IFJlZjxSVENEYXRhQ2hhbm5lbD4mJik7CiAgICAgUlRDRGF0YUNoYW5uZWxFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIEluaXQmJiwgSXNUcnVzdGVkKTsKIAogICAgIFJlZjxSVENEYXRh
Q2hhbm5lbD4gbV9jaGFubmVsOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDIzNDkx
MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDMsNyArNTAzLDcgQEAgdm9pZCBSVENQZWVyQ29u
bmVjdGlvbjo6dXBkYXRlSWNlR2F0aGVyaQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHByb3RlY3RlZFRoaXMtPm1faWNlR2F0aGVyaW5nU3RhdGUgPSBuZXdTdGF0ZTsKLSAgICAgICAg
cHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5p
Y2VnYXRoZXJpbmdzdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgcHJv
dGVjdGVkVGhpcy0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pY2Vn
YXRoZXJpbmdzdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+dXBkYXRlQ29ubmVjdGlv
blN0YXRlKCk7CiAgICAgfSk7CiB9CkBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCBSVENQZWVyQ29u
bmVjdGlvbjo6dXBkYXRlSWNlQ29ubmVjdAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHByb3RlY3RlZFRoaXMtPm1faWNlQ29ubmVjdGlvblN0YXRlID0gbmV3U3RhdGU7Ci0gICAgICAg
IHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
aWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmlj
ZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+dXBkYXRlQ29ubmVj
dGlvblN0YXRlKCk7CiAgICAgfSk7CiB9CkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBSVENQZWVy
Q29ubmVjdGlvbjo6dXBkYXRlQ29ubmVjdGlvbgogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIs
ICJzdGF0ZSBjaGFuZ2VkIGZyb206ICIgLCBtX2Nvbm5lY3Rpb25TdGF0ZSwgIiB0byAiLCBzdGF0
ZSk7CiAKICAgICBtX2Nvbm5lY3Rpb25TdGF0ZSA9IHN0YXRlOwotICAgIGRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29ubmVjdGlvbnN0YXRlY2hhbmdlRXZlbnQsIGZh
bHNlLCBmYWxzZSkpOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY29ubmVjdGlvbnN0YXRlY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVu
dDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpzY2hl
ZHVsZU5lZ290aWF0aW9uTmVlZGVkRXZlbnQoKQpAQCAtNTU4LDcgKzU1OCw3IEBAIHZvaWQgUlRD
UGVlckNvbm5lY3Rpb246OnNjaGVkdWxlTmVnb3RpYXQKICAgICAgICAgaWYgKCFwcm90ZWN0ZWRU
aGlzLT5tX2JhY2tlbmQtPmlzTmVnb3RpYXRpb25OZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9iYWNrZW5kLT5jbGVhck5lZ290aWF0aW9uTmVl
ZGVkU3RhdGUoKTsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5uZWdvdGlhdGlvbm5lZWRlZEV2ZW50LCBmYWxzZSwgZmFsc2Up
KTsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5uZWdvdGlhdGlvbm5lZWRlZEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uSWNlRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwxNyArMzIsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZWY8UlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudD4gUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudDo6
Y3JlYXRlKGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxSVENJY2VDYW5k
aWRhdGU+JiYgY2FuZGlkYXRlLCBTdHJpbmcmJiBzZXJ2ZXJVUkwpCitSZWY8UlRDUGVlckNvbm5l
Y3Rpb25JY2VFdmVudD4gUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudDo6Y3JlYXRlKENhbkJ1YmJs
ZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBSZWZQdHI8UlRDSWNlQ2FuZGlk
YXRlPiYmIGNhbmRpZGF0ZSwgU3RyaW5nJiYgc2VydmVyVVJMKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQoZXZlbnROYW1lcygpLmljZWNhbmRp
ZGF0ZUV2ZW50LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUoY2FuZGlkYXRlKSwgV1RG
TW92ZShzZXJ2ZXJVUkwpKSk7CiB9CiAKIFJlZjxSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50PiBS
VENQZWVyQ29ubmVjdGlvbkljZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBJbml0JiYgaW5pdCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENQZWVyQ29ubmVj
dGlvbkljZUV2ZW50KHR5cGUsIGluaXQuYnViYmxlcywgaW5pdC5jYW5jZWxhYmxlLCBXVEZNb3Zl
KGluaXQuY2FuZGlkYXRlKSwgV1RGTW92ZShpbml0LnVybCkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KHR5cGUsIGluaXQuYnViYmxlcyA/IENh
bkJ1YmJsZTo6WWVzIDogQ2FuQnViYmxlOjpObywKKyAgICAgICAgaW5pdC5jYW5jZWxhYmxlID8g
SXNDYW5jZWxhYmxlOjpZZXMgOiBJc0NhbmNlbGFibGU6Ok5vLCBXVEZNb3ZlKGluaXQuY2FuZGlk
YXRlKSwgV1RGTW92ZShpbml0LnVybCkpKTsKIH0KIAotUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVu
dDo6UlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxSVENJY2VDYW5kaWRhdGU+JiYg
Y2FuZGlkYXRlLCBTdHJpbmcmJiBzZXJ2ZXJVUkwpCitSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50
OjpSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2Fu
QnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIFJlZlB0cjxSVENJY2VD
YW5kaWRhdGU+JiYgY2FuZGlkYXRlLCBTdHJpbmcmJiBzZXJ2ZXJVUkwpCiAgICAgOiBFdmVudCh0
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX2NhbmRpZGF0ZShXVEZNb3ZlKGNh
bmRpZGF0ZSkpCiAgICAgLCBtX3VybChXVEZNb3ZlKHNlcnZlclVSTCkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uSWNlRXZlbnQuaAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBzdGF0aWMgUmVm
PFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIEluaXQmJik7Ci0gICAgc3RhdGljIFJlZjxSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50PiBj
cmVhdGUoYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFJUQ0ljZUNhbmRp
ZGF0ZT4mJiwgU3RyaW5nJiYgc2VydmVyVVJMKTsKKyAgICBzdGF0aWMgUmVmPFJUQ1BlZXJDb25u
ZWN0aW9uSWNlRXZlbnQ+IGNyZWF0ZShDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgUmVmUHRyPFJU
Q0ljZUNhbmRpZGF0ZT4mJiwgU3RyaW5nJiYgc2VydmVyVVJMKTsKIAogICAgIFJUQ0ljZUNhbmRp
ZGF0ZSogY2FuZGlkYXRlKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7
IHJldHVybiBtX3VybDsgfQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBF
dmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFJU
Q1BlZXJDb25uZWN0aW9uSWNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlPiYmLCBTdHJp
bmcmJiBzZXJ2ZXJVUkwpOworICAgIFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgUmVmUHRyPFJUQ0ljZUNh
bmRpZGF0ZT4mJiwgU3RyaW5nJiYgc2VydmVyVVJMKTsKIAogICAgIFJlZlB0cjxSVENJY2VDYW5k
aWRhdGU+IG1fY2FuZGlkYXRlOwogICAgIFN0cmluZyBtX3VybDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmNwcAkocmV2
aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENU
cmFja0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxSVENUcmFja0V2ZW50PiBSVENUcmFja0V2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+JiYgcmVjZWl2ZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPiYmIHRyYWNrLCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4mJiBzdHJlYW1zLCBSZWZQ
dHI8UlRDUnRwVHJhbnNjZWl2ZXI+JiYgdHJhbnNjZWl2ZXIpCitSZWY8UlRDVHJhY2tFdmVudD4g
UlRDVHJhY2tFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxl
IGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIFJlZlB0cjxSVENSdHBSZWNlaXZl
cj4mJiByZWNlaXZlciwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIFZlY3RvcjxS
ZWZQdHI8TWVkaWFTdHJlYW0+PiYmIHN0cmVhbXMsIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4m
JiB0cmFuc2NlaXZlcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENUcmFja0V2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZShyZWNlaXZlciksIFdURk1vdmUo
dHJhY2spLCBXVEZNb3ZlKHN0cmVhbXMpLCBXVEZNb3ZlKHRyYW5zY2VpdmVyKSkpOwogfQpAQCAt
NDksNyArNDksNyBAQCBSZWY8UlRDVHJhY2tFdmVudD4gUlRDVHJhY2tFdmVudDo6Y3JlYXRlCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDVHJhY2tFdmVudCh0eXBlLCBpbml0aWFsaXplciwg
aXNUcnVzdGVkKSk7CiB9CiAKLVJUQ1RyYWNrRXZlbnQ6OlJUQ1RyYWNrRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
UlRDUnRwUmVjZWl2ZXI+JiYgcmVjZWl2ZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRy
YWNrLCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4mJiBzdHJlYW1zLCBSZWZQdHI8UlRDUnRw
VHJhbnNjZWl2ZXI+JiYgdHJhbnNjZWl2ZXIpCitSVENUcmFja0V2ZW50OjpSVENUcmFja0V2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxh
YmxlIGNhbmNlbGFibGUsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4mJiByZWNlaXZlciwgUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PiYm
IHN0cmVhbXMsIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4mJiB0cmFuc2NlaXZlcikKICAgICA6
IEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAsIG1fcmVjZWl2ZXIoV1RG
TW92ZShyZWNlaXZlcikpCiAgICAgLCBtX3RyYWNrKFdURk1vdmUodHJhY2spKQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmgJ
KHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDVHJhY2tFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+IE1lZGkKIAogY2xhc3MgUlRDVHJhY2tFdmVudCA6
IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSVENUcmFja0V2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+JiYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
PiYmLCBNZWRpYVN0cmVhbUFycmF5JiYsIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4mJik7Cisg
ICAgc3RhdGljIFJlZjxSVENUcmFja0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgUmVmUHRyPFJUQ1J0cFJlY2VpdmVyPiYmLCBS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgTWVkaWFTdHJlYW1BcnJheSYmLCBSZWZQdHI8UlRD
UnRwVHJhbnNjZWl2ZXI+JiYpOwogCiAgICAgc3RydWN0IEluaXQgOiBFdmVudEluaXQgewogICAg
ICAgICBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyOwpAQCAtNjQsNyArNjQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0
IHsgcmV0dXJuIFJUQ1RyYWNrRXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAKIHByaXZhdGU6Ci0gICAg
UlRDVHJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4mJiwgUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYsIE1lZGlhU3RyZWFtQXJyYXkmJiwgUmVmUHRyPFJUQ1J0cFRyYW5zY2VpdmVy
PiYmKTsKKyAgICBSVENUcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4mJiwgUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+JiYsIE1lZGlhU3RyZWFtQXJyYXkmJiwgUmVmUHRyPFJUQ1J0cFRyYW5zY2Vp
dmVyPiYmKTsKICAgICBSVENUcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29u
c3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+IG1fcmVj
ZWl2ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNw
cAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYzNCw3ICs2MzQsOCBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVN0
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIG1lZGlhU3RyZWFtID0gbWVkaWFTdHJlYW1G
cm9tUlRDU3RyZWFtKHJ0Y1N0cmVhbSk7Ci0gICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29u
bmVjdGlvbigpLmZpcmVFdmVudChNZWRpYVN0cmVhbUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmFkZHN0cmVhbUV2ZW50LCBmYWxzZSwgZmFsc2UsICZtZWRpYVN0cmVhbSkpOworICAgIG1fcGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5maXJlRXZlbnQoTWVkaWFTdHJlYW1FdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGRzdHJlYW1FdmVudCwKKyAgICAgICAgRXZlbnQ6OkNh
bkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCAmbWVkaWFTdHJlYW0pKTsKIH0K
IAogY2xhc3MgUlRDUnRwUmVjZWl2ZXJCYWNrZW5kIGZpbmFsIDogcHVibGljIFJUQ1J0cFJlY2Vp
dmVyOjpCYWNrZW5kIHsKQEAgLTY4Nyw3ICs2ODgsOCBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OmFkZFJlbW90ZVRyCiAgICAgICAgIHN0cmVhbXMuYXBwZW5kKCZtZWRpYVN0cmVhbSk7
CiAgICAgICAgIG1lZGlhU3RyZWFtLmFkZFRyYWNrRnJvbVBsYXRmb3JtKCp0cmFjayk7CiAgICAg
fQotICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5maXJlRXZlbnQoUlRD
VHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS50cmFja0V2ZW50LCBmYWxzZSwgZmFsc2Us
IFdURk1vdmUocmVjZWl2ZXIpLCB0cmFjaywgV1RGTW92ZShzdHJlYW1zKSwgbnVsbHB0cikpOwor
ICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5maXJlRXZlbnQoUlRDVHJh
Y2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS50cmFja0V2ZW50LAorICAgICAgICBFdmVudDo6
Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIFdURk1vdmUocmVjZWl2ZXIp
LCB0cmFjaywgV1RGTW92ZShzdHJlYW1zKSwgbnVsbHB0cikpOwogfQogCiB2b2lkIExpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OnJlbW92ZVJlbW90ZVN0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50
ZXJmYWNlJiBydGNTdHJlYW0pCkBAIC03NzcsNyArNzc5LDggQEAgdm9pZCBMaWJXZWJSVENNZWRp
YUVuZHBvaW50OjphZGREYXRhQ2hhbgogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBtX3BlZXJD
b25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuZmlyZUV2ZW50KFJUQ0RhdGFDaGFubmVsRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0YWNoYW5uZWxFdmVudCwgZmFsc2UsIGZhbHNlLCBX
VEZNb3ZlKGNoYW5uZWwpKSk7CisgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlv
bigpLmZpcmVFdmVudChSVENEYXRhQ2hhbm5lbEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRh
dGFjaGFubmVsRXZlbnQsCisgICAgICAgIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpObywgV1RGTW92ZShjaGFubmVsKSkpOwogfQogCiB2b2lkIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6Ok9uRGF0YUNoYW5uZWwocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0
YUNoYW5uZWxJbnRlcmZhY2U+IGRhdGFDaGFubmVsKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHJldmlzaW9u
IDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsMjQgKzE0MSwyNCBAQCB2b2lkIE5vdGlm
aWNhdGlvbjo6ZmluYWxpemUoKQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZl
bnQoKQogewotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2hv
d0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnNob3dFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNrRXZl
bnQoKQogewogICAgIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvciB3aW5kb3dGb2N1c0FsbG93
ZWQ7Ci0gICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpObykpOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50
KCkKIHsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3Nl
RXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY2xvc2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKSk7CiAgICAgZmluYWxpemUoKTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb246
OmRpc3BhdGNoRXJyb3JFdmVudCgpCiB7Ci0gICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiBhdXRvIE5vdGlmaWNhdGlv
bjo6cGVybWlzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQpIC0+IFBlcm1pc3Npb24KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVl
c3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBSZWY8TWVyY2hhbnRWYWxpZGF0
aW9uRXZlbnQ+IE1lcmNoYW50VmFsCiB9CiAKIE1lcmNoYW50VmFsaWRhdGlvbkV2ZW50OjpNZXJj
aGFudFZhbGlkYXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFVSTCYg
dmFsaWRhdGlvblVSTCwgUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQotICAgIDogRXZl
bnQgeyB0eXBlLCBmYWxzZSwgZmFsc2UgfQorICAgIDogRXZlbnQgeyB0eXBlLCBFdmVudDo6Q2Fu
QnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8gfQogICAgICwgbV92YWxpZGF0aW9u
VVJMIHsgdmFsaWRhdGlvblVSTCB9CiAgICAgLCBtX3BheW1lbnRSZXF1ZXN0IHsgcGF5bWVudFJl
cXVlc3QgfQogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuY3BwCShy
ZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQ6OlBheW1lbnRSZXF1ZXMKIH0KIAogUGF5
bWVudFJlcXVlc3RVcGRhdGVFdmVudDo6UGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIFBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCkKLSAgICA6
IEV2ZW50IHsgdHlwZSwgZmFsc2UsIGZhbHNlIH0KKyAgICA6IEV2ZW50IHsgdHlwZSwgQ2FuQnVi
YmxlOjpObywgSXNDYW5jZWxhYmxlOjpObyB9CiAgICAgLCBtX3BheW1lbnRSZXF1ZXN0IHsgJnBh
eW1lbnRSZXF1ZXN0IH0KIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0JKHJldmlz
aW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUwLDcgKzI1MCw3IEBAIHVu
c2lnbmVkIGxvbmcgbG9uZyBRdWlja1RpbWVQbHVnaW5SZXBsYWMKIHZvaWQgUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQ6OnBvc3RFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKIHsKICAg
ICBSZWY8SFRNTFBsdWdJbkVsZW1lbnQ+IHByb3RlY3QoKm1fcGFyZW50RWxlbWVudCk7Ci0gICAg
UmVmPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgdHJ1ZSk7
CisgICAgUmVmPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6
Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsKICAgICBtX3BhcmVudEVs
ZW1lbnQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwCShyZXZp
c2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXNFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgUmVmPFNwZWVj
aFN5bnRoZXNpc0V2ZW50PiBTcGVlY2hTeW50aGVzaQogfQogCiBTcGVlY2hTeW50aGVzaXNFdmVu
dDo6U3BlZWNoU3ludGhlc2lzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCB1bnNpZ25l
ZCBjaGFySW5kZXgsIGZsb2F0IGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAg
OiBFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6
Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQogICAgICwgbV9jaGFySW5kZXgoY2hhckluZGV4KQogICAg
ICwgbV9lbGFwc2VkVGltZShlbGFwc2VkVGltZSkKICAgICAsIG1fbmFtZShuYW1lKQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAko
cmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBBdWRp
b0NvbnRleHQ6OnNldFN0YXRlKFN0YXRlIHN0YXRlKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X3N0YXRlID0gc3RhdGU7Ci0gICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuc3RhdGVjaGFuZ2VFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKKyAgICBt
X2V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGF0
ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6
Ok5vKSk7CiAKICAgICBzaXplX3Qgc3RhdGVJbmRleCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc3Rh
dGUpOwogICAgIGlmIChzdGF0ZUluZGV4ID49IG1fc3RhdGVSZWFjdGlvbnMuc2l6ZSgpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1By
b2Nlc3NpbmdFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEF1ZGlvUHJvY2Vzc2luZ0V2ZW50
OjpBdWRpb1Byb2Nlc3NpbmdFdmVudCgpID0gZGVmYXVsdDsKIAogQXVkaW9Qcm9jZXNzaW5nRXZl
bnQ6OkF1ZGlvUHJvY2Vzc2luZ0V2ZW50KFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiBpbnB1dEJ1ZmZl
ciwgUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIG91dHB1dEJ1ZmZlciwgZG91YmxlIHBsYXliYWNrVGlt
ZSkKLSAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5hdWRpb3Byb2Nlc3NFdmVudCwgdHJ1ZSwgZmFs
c2UpCisgICAgOiBFdmVudChldmVudE5hbWVzKCkuYXVkaW9wcm9jZXNzRXZlbnQsIENhbkJ1YmJs
ZTo6WWVzLCBJc0NhbmNlbGFibGU6Ok5vKQogICAgICwgbV9pbnB1dEJ1ZmZlcihXVEZNb3ZlKGlu
cHV0QnVmZmVyKSkKICAgICAsIG1fb3V0cHV0QnVmZmVyKFdURk1vdmUob3V0cHV0QnVmZmVyKSkK
ICAgICAsIG1fcGxheWJhY2tUaW1lKHBsYXliYWNrVGltZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5
LDcgKzE3OSw3IEBAIHZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKQogICAg
ICAgICBpZiAoIXRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICB0aGlzLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmVuZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICB0aGlzLT5kaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogICAgIH0pOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgUmVmPE9mZmxpbmVBdWRpb0NvbXBs
ZXRpb25FdmVudD4gT2ZmbGluZQogfQogCiBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQ6Ok9m
ZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudChSZWZQdHI8QXVkaW9CdWZmZXI+JiYgcmVuZGVyZWRC
dWZmZXIpCi0gICAgOiBFdmVudChldmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgdHJ1ZSwgZmFs
c2UpCisgICAgOiBFdmVudChldmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgQ2FuQnViYmxlOjpZ
ZXMsIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX3JlbmRlcmVkQnVmZmVyKFdURk1vdmUocmVu
ZGVyZWRCdWZmZXIpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL0Nsb3NlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvQ2xvc2VFdmVudC5oCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3
ICs2Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBDbG9zZUV2ZW50KGJvb2wgd2FzQ2xl
YW4sIGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKLSAgICAgICAgOiBFdmVudChldmVu
dE5hbWVzKCkuY2xvc2VFdmVudCwgZmFsc2UsIGZhbHNlKQorICAgICAgICA6IEV2ZW50KGV2ZW50
TmFtZXMoKS5jbG9zZUV2ZW50LCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQogICAg
ICAgICAsIG1fd2FzQ2xlYW4od2FzQ2xlYW4pCiAgICAgICAgICwgbV9jb2RlKGNvZGUpCiAgICAg
ICAgICwgbV9yZWFzb24ocmVhc29uKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NjMsNyArNTYzLDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZENvbm5lY3QoKQogICAgIG1fc3Rh
dGUgPSBPUEVOOwogICAgIG1fc3VicHJvdG9jb2wgPSBtX2NoYW5uZWwtPnN1YnByb3RvY29sKCk7
CiAgICAgbV9leHRlbnNpb25zID0gbV9jaGFubmVsLT5leHRlbnNpb25zKCk7Ci0gICAgZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkub3BlbkV2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0K
IAogdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKQpA
QCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE9yUXVldWVFcnJvckV2
ZW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kaXNwYXRjaGVkRXJyb3JFdmVudCA9IHRydWU7
Ci0gICAgZGlzcGF0Y2hPclF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJy
b3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgZGlzcGF0Y2hPclF1ZXVlRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE9y
UXVldWVFdmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnZyL1ZSRGlzcGxheUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlFdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgVlJEaXNwbGF5RXZlbnQ6OlZSRGlzcGxheUV2ZW50KGNv
bnN0IEF0bwogfQogCiBWUkRpc3BsYXlFdmVudDo6VlJEaXNwbGF5RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBSZWZQdHI8VlJEaXNwbGF5PiYgZGlzcGxheSwgc3RkOjpvcHRp
b25hbDxWUkRpc3BsYXlFdmVudFJlYXNvbj4mJiByZWFzb24pCi0gICAgOiBFdmVudChuYW1lLCBm
YWxzZSAvKmNhbkJ1YmJsZSovLCBmYWxzZSAvKmNhbmNlbGFibGUqLykKKyAgICA6IEV2ZW50KG5h
bWUsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2Rpc3BsYXkoZGlz
cGxheSkKICAgICAsIG1fcmVhc29uKFdURk1vdmUocmVhc29uKSkKIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAko
cmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxNiw3ICsyMjE2LDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkaXNwYXRjaEFjY2VzcwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIAotICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7CiAgICAg
cmV0dXJuIGRpc3BhdGNoQWNjZXNzaWJpbGl0eUV2ZW50KGV2ZW50KTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmxlU2V0VmFsdWVFdmVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmxlU2V0VmFs
dWVFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJsZVNldFZhbHVlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFjY2Vzc2libGVTZXRWYWx1ZUV2ZW50
OjpBY2Nlc3NpYmxlU2V0VmFsdWVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpCi0gICAgOiBFdmVudCh0eXBlLCB0cnVlLCB0cnVlKQorICAg
IDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpZZXMsIElzQ2FuY2VsYWJsZTo6WWVzKQogICAgICwg
bV92YWx1ZSh2YWx1ZSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Bbmlt
YXRpb25QbGF5YmFja0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBBbmltYXRpb25QbGF5YmFja0V2ZW50OjpBbmltYXRp
b25QbGF5YmFjCiB9CiAKIEFuaW1hdGlvblBsYXliYWNrRXZlbnQ6OkFuaW1hdGlvblBsYXliYWNr
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGN1
cnJlbnRUaW1lLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkKLSAgICA6IEV2
ZW50KHR5cGUsIHRydWUsIGZhbHNlKQorICAgIDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpZZXMs
IElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2N1cnJlbnRUaW1lKGN1cnJlbnRUaW1lKQogICAg
ICwgbV90aW1lbGluZVRpbWUodGltZWxpbmVUaW1lKQogewpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0Fib3J0U2lnbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQWJv
cnRTaWduYWwuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQWJv
cnRTaWduYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgQWJvcnRT
aWduYWw6OmFib3J0KCkKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yICdhYm9ydCBhbGdv
cml0aG1zJyAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jYWJvcnRzaWduYWwtYWJvcnQt
YWxnb3JpdGhtcwogCiAgICAgLy8gNS4gRmlyZSBhbiBldmVudCBuYW1lZCBhYm9ydCBhdCBzaWdu
YWwuCi0gICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hYm9ydEV2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmFib3J0RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpObykpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQW5pbWF0aW9u
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BbmltYXRpb25FdmVu
dC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BbmltYXRpb25F
dmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgQW5pbWF0aW9uRXZlbnQ6
OkFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0bwogfQogCiBBbmltYXRpb25FdmVudDo6QW5pbWF0aW9u
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5h
bWUsIGRvdWJsZSBlbGFwc2VkVGltZSkKLSAgICA6IEV2ZW50KHR5cGUsIHRydWUsIGZhbHNlKQor
ICAgIDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpZZXMsIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAg
LCBtX2FuaW1hdGlvbk5hbWUoYW5pbWF0aW9uTmFtZSkKICAgICAsIG1fZWxhcHNlZFRpbWUoZWxh
cHNlZFRpbWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQmVmb3JlTG9hZEV2ZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVudC5oCShyZXZp
c2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQmVmb3JlTG9hZEV2ZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBFdmVu
dChldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBmYWxzZSwgdHJ1ZSkKKyAgICAgICAgOiBF
dmVudChldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNl
bGFibGU6OlllcykKICAgICAgICAgLCBtX3VybCh1cmwpCiAgICAgewogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcAkocmV2aXNp
b24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudDo6QmVmb3JlVGV4dEluc2VydGVkRXZlbnQoY29u
c3QgU3RyaW5nJiB0ZXh0KQotICAgIDogRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdEJlZm9yZVRl
eHRJbnNlcnRlZEV2ZW50LCBmYWxzZSwgdHJ1ZSksIG1fdGV4dCh0ZXh0KQorICAgIDogRXZlbnQo
ZXZlbnROYW1lcygpLndlYmtpdEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LCBDYW5CdWJibGU6Ok5v
LCBJc0NhbmNlbGFibGU6OlllcyksIG1fdGV4dCh0ZXh0KQogewogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vQmVmb3JlVW5sb2FkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9CZWZvcmVVbmxvYWRFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVVbmxvYWRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQmVmb3JlVW5sb2FkRXZlbnQ6
OkJlZm9yZVVubG9hZEV2ZW50KCkKLSAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5iZWZvcmV1bmxv
YWRFdmVudCwgZmFsc2UsIHRydWUpCisgICAgOiBFdmVudChldmVudE5hbWVzKCkuYmVmb3JldW5s
b2FkRXZlbnQsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6WWVzKQogewogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
Nyw3ICsyMjcsNyBAQCB2b2lkIENoYXJhY3RlckRhdGE6OmRpc3BhdGNoTW9kaWZpZWRFdmVuCiAK
ICAgICBpZiAoIWlzSW5TaGFkb3dUcmVlKCkpIHsKICAgICAgICAgaWYgKGRvY3VtZW50KCkuaGFz
TGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01DSEFSQUNURVJEQVRBTU9ESUZJRURfTElTVEVORVIp
KQotICAgICAgICAgICAgZGlzcGF0Y2hTY29wZWRFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZEV2ZW50LCB0cnVlLCBudWxscHRy
LCBvbGREYXRhLCBtX2RhdGEpKTsKKyAgICAgICAgICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0
YXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWRF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBudWxscHRyLCBvbGREYXRhLCBtX2RhdGEpKTsK
ICAgICAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogICAgIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIENvbXBvc2l0aW9uRXZlbnQ6
OkNvbXBvc2l0aW9uRXZlbnQoKSA9IGRlZmF1bHQ7CiAKIENvbXBvc2l0aW9uRXZlbnQ6OkNvbXBv
c2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQotICAgIDogVUlFdmVudCh0eXBlLCB0cnVlLCB0
cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQorICAgIDogVUlFdmVudCh0eXBlLCBDYW5CdWJibGU6Olll
cywgSXNDYW5jZWxhYmxlOjpZZXMsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2RhdGEoZGF0
YSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9u
IDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzc1LDEyICs3NzUsMTIgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGlsZElu
c2VydGlvbkV2ZW50cwogICAgIFJlZjxEb2N1bWVudD4gZG9jdW1lbnQoY2hpbGQuZG9jdW1lbnQo
KSk7CiAKICAgICBpZiAoYy0+cGFyZW50Tm9kZSgpICYmIGRvY3VtZW50LT5oYXNMaXN0ZW5lclR5
cGUoRG9jdW1lbnQ6OkRPTU5PREVJTlNFUlRFRF9MSVNURU5FUikpCi0gICAgICAgIGMtPmRpc3Bh
dGNoU2NvcGVkRXZlbnQoTXV0YXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Ob2Rl
SW5zZXJ0ZWRFdmVudCwgdHJ1ZSwgYy0+cGFyZW50Tm9kZSgpKSk7CisgICAgICAgIGMtPmRpc3Bh
dGNoU2NvcGVkRXZlbnQoTXV0YXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Ob2Rl
SW5zZXJ0ZWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBjLT5wYXJlbnROb2RlKCkpKTsK
IAogICAgIC8vIGRpc3BhdGNoIHRoZSBET01Ob2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQgZXZlbnQg
dG8gYWxsIGRlc2NlbmRhbnRzCiAgICAgaWYgKGMtPmlzQ29ubmVjdGVkKCkgJiYgZG9jdW1lbnQt
Pmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NTk9ERUlOU0VSVEVESU5UT0RPQ1VNRU5UX0xJ
U1RFTkVSKSkgewogICAgICAgICBmb3IgKDsgYzsgYyA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKmMs
ICZjaGlsZCkpCi0gICAgICAgICAgICBjLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NTm9kZUluc2VydGVkSW50b0RvY3VtZW50RXZlbnQs
IGZhbHNlKSk7CisgICAgICAgICAgICBjLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NTm9kZUluc2VydGVkSW50b0RvY3VtZW50RXZlbnQs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vKSk7CiAgICAgfQogfQogCkBAIC04MDAsMTIgKzgwMCwxMiBA
QCBzdGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhSCiAKICAgICAvLyBkaXNw
YXRjaCBwcmUtcmVtb3ZhbCBtdXRhdGlvbiBldmVudHMKICAgICBpZiAoY2hpbGQtPnBhcmVudE5v
ZGUoKSAmJiBkb2N1bWVudC0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01OT0RFUkVNT1ZF
RF9MSVNURU5FUikpCi0gICAgICAgIGNoaWxkLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRFdmVudCwgdHJ1ZSwgY2hp
bGQtPnBhcmVudE5vZGUoKSkpOworICAgICAgICBjaGlsZC0+ZGlzcGF0Y2hTY29wZWRFdmVudChN
dXRhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6OlllcywgY2hpbGQtPnBhcmVudE5vZGUoKSkpOwogCiAgICAgLy8gZGlz
cGF0Y2ggdGhlIERPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50IGV2ZW50IHRvIGFsbCBkZXNjZW5k
YW50cwogICAgIGlmIChjaGlsZC0+aXNDb25uZWN0ZWQoKSAmJiBkb2N1bWVudC0+aGFzTGlzdGVu
ZXJUeXBlKERvY3VtZW50OjpET01OT0RFUkVNT1ZFREZST01ET0NVTUVOVF9MSVNURU5FUikpIHsK
ICAgICAgICAgZm9yIChSZWZQdHI8Tm9kZT4gY3VycmVudE5vZGUgPSBjaGlsZC5jb3B5UmVmKCk7
IGN1cnJlbnROb2RlOyBjdXJyZW50Tm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKmN1cnJlbnRO
b2RlLCBjaGlsZC5wdHIoKSkpCi0gICAgICAgICAgICBjdXJyZW50Tm9kZS0+ZGlzcGF0Y2hTY29w
ZWRFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVk
RnJvbURvY3VtZW50RXZlbnQsIGZhbHNlKSk7CisgICAgICAgICAgICBjdXJyZW50Tm9kZS0+ZGlz
cGF0Y2hTY29wZWRFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTU5v
ZGVSZW1vdmVkRnJvbURvY3VtZW50RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vKSk7CiAgICAg
fQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAJKHJl
dmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgRGV2aWNlTW90aW9uRXZlbnQ6OkRl
dmljZU1vdGlvbkV2ZW50KCkKIH0KIAogRGV2aWNlTW90aW9uRXZlbnQ6OkRldmljZU1vdGlvbkV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBEZXZpY2VNb3Rpb25EYXRhKiBkZXZp
Y2VNb3Rpb25EYXRhKQotICAgIDogRXZlbnQoZXZlbnRUeXBlLCBmYWxzZSwgZmFsc2UpIC8vIENh
bid0IGJ1YmJsZSwgbm90IGNhbmNlbGFibGUKKyAgICA6IEV2ZW50KGV2ZW50VHlwZSwgQ2FuQnVi
YmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fZGV2aWNlTW90aW9uRGF0YShkZXZp
Y2VNb3Rpb25EYXRhKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVu
dGF0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VP
cmllbnRhdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIERldmljZU9yaWVudGF0aW9uRXZlbnQ6OkRldmljZU9yaWVudGF0aW8KIH0KIAogRGV2
aWNlT3JpZW50YXRpb25FdmVudDo6RGV2aWNlT3JpZW50YXRpb25FdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRGV2aWNlT3JpZW50YXRpb25EYXRhKiBvcmllbnRhdGlvbikKLSAg
ICA6IEV2ZW50KGV2ZW50VHlwZSwgZmFsc2UsIGZhbHNlKSAvLyBDYW4ndCBidWJibGUsIG5vdCBj
YW5jZWxhYmxlCisgICAgOiBFdmVudChldmVudFR5cGUsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2Vs
YWJsZTo6Tm8pCiAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQogewogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjE2LDcgKzEyMTYsNyBAQCB2
b2lkIERvY3VtZW50OjpzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUgCiAgICAgfQogCiAgICAgbV9y
ZWFkeVN0YXRlID0gcmVhZHlTdGF0ZTsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnJlYWR5c3RhdGVjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAg
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZWFkeXN0YXRlY2hhbmdl
RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwog
CiAgICAgaWYgKHNldHRpbmdzKCkuc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nKCkpCiAg
ICAgICAgIHNldFZpc3VhbFVwZGF0ZXNBbGxvd2VkKHJlYWR5U3RhdGUpOwpAQCAtMTYzMCw3ICsx
NjMwLDcgQEAgdm9pZCBEb2N1bWVudDo6dW5yZWdpc3RlckZvclZpc2liaWxpdHlTdAogCiB2b2lk
IERvY3VtZW50Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkKIHsKLSAgICBlbnF1ZXVlRG9jdW1l
bnRFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS52aXNpYmlsaXR5Y2hhbmdlRXZlbnQs
IGZhbHNlLCBmYWxzZSkpOworICAgIGVucXVldWVEb2N1bWVudEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnZpc2liaWxpdHljaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX3Zp
c2liaWxpdHlTdGF0ZUNhbGxiYWNrQ2xpZW50cykKICAgICAgICAgY2xpZW50LT52aXNpYmlsaXR5
U3RhdGVDaGFuZ2VkKCk7CiAKQEAgLTU0MjcsNyArNTQyNyw3IEBAIHZvaWQgRG9jdW1lbnQ6OmZp
bmlzaGVkUGFyc2luZygpCiAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2Fk
ZWRFdmVudFN0YXJ0KQogICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRF
dmVudFN0YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKLSAgICBkaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTUNvbnRlbnRMb2FkZWRFdmVudCwgdHJ1ZSwgZmFs
c2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTUNv
bnRlbnRMb2FkZWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpObykpOwogCiAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRF
dmVudEVuZCkKICAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZlbnRF
bmQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKQEAgLTY0MDEsNyArNjQwMSw3IEBAIHZvaWQgRG9j
dW1lbnQ6OmRpc3BhdGNoRnVsbFNjcmVlbkNoYW5nZU8KICAgICAgICAgaWYgKHNob3VsZE5vdGlm
eU1lZGlhRWxlbWVudCAmJiBpczxIVE1MTWVkaWFFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgICAg
ICBkb3duY2FzdDxIVE1MTWVkaWFFbGVtZW50Pigqbm9kZSkuZW50ZXJlZE9yRXhpdGVkRnVsbHNj
cmVlbigpOwogI2VuZGlmCi0gICAgICAgIG5vZGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWUsIHRydWUsIGZhbHNlKSk7CisgICAgICAgIG5vZGUtPmRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKICAgICB9CiB9CiAKQEAgLTc0NDksNyArNzQ0OSw3IEBAIHZvaWQg
RG9jdW1lbnQ6OmRpZFJlbW92ZUluRG9jdW1lbnRTaGFkb3cKIHZvaWQgRG9jdW1lbnQ6Om9yaWVu
dGF0aW9uQ2hhbmdlZChpbnQgb3JpZW50YXRpb24pCiB7CiAgICAgTE9HKEV2ZW50cywgIkRvY3Vt
ZW50ICVwIG9yaWVudGF0aW9uQ2hhbmdlZCAtIG9yaWVudGF0aW9uICVkIiwgdGhpcywgb3JpZW50
YXRpb24pOwotICAgIGRpc3BhdGNoV2luZG93RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkub3JpZW50YXRpb25jaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgZGlzcGF0Y2hX
aW5kb3dFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5vcmllbnRhdGlvbmNoYW5nZUV2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAg
ICBtX29yaWVudGF0aW9uTm90aWZpZXIub3JpZW50YXRpb25DaGFuZ2VkKG9yaWVudGF0aW9uKTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAJKHJl
dmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NiwxMiArODYsMTAgQEAgdm9pZCBEb2N1bWVudEV2ZW50
UXVldWU6OmVucXVldWVPckRpc3BhdAogICAgIEFTU0VSVCgmdGFyZ2V0LmRvY3VtZW50KCkgPT0g
Jm1fZG9jdW1lbnQpOwogCiAgICAgLy8gUGVyIHRoZSBXM0MgQ1NTT00gVmlldyBNb2R1bGUsIHNj
cm9sbCBldmVudHMgZmlyZWQgYXQgdGhlIGRvY3VtZW50IHNob3VsZCBidWJibGUsIG90aGVycyBz
aG91bGQgbm90LgotICAgIGJvb2wgYnViYmxlcyA9IHRhcmdldC5pc0RvY3VtZW50Tm9kZSgpOwot
ICAgIGJvb2wgY2FuY2VsYWJsZSA9IGZhbHNlOwotICAgIGVucXVldWVTY3JvbGxFdmVudCh0YXJn
ZXQsIGJ1YmJsZXMsIGNhbmNlbGFibGUpOworICAgIGVucXVldWVTY3JvbGxFdmVudCh0YXJnZXQs
IHRhcmdldC5pc0RvY3VtZW50Tm9kZSgpID8gRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzIDogRXZlbnQ6
OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKIH0KIAotdm9pZCBEb2N1
bWVudEV2ZW50UXVldWU6OmVucXVldWVTY3JvbGxFdmVudChFdmVudFRhcmdldCYgdGFyZ2V0LCBi
b29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSkKK3ZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjpl
bnF1ZXVlU2Nyb2xsRXZlbnQoRXZlbnRUYXJnZXQmIHRhcmdldCwgRXZlbnQ6OkNhbkJ1YmJsZSBj
YW5CdWJibGUsIEV2ZW50OjpJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSkKIHsKICAgICBpZiAobV9p
c0Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTAyLDEyICsxMDAsMTIgQEAgdm9pZCBEb2N1
bWVudEV2ZW50UXVldWU6OmVucXVldWVTY3JvbGxFdgogICAgIGlmICghbV90YXJnZXRzV2l0aFF1
ZXVlZFNjcm9sbEV2ZW50cy5hZGQoJnRhcmdldCkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVmPEV2ZW50PiBzY3JvbGxFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLnNjcm9sbEV2ZW50LCBidWJibGVzLCBjYW5jZWxhYmxlKTsKKyAgICBSZWY8RXZlbnQ+IHNj
cm9sbEV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSk7CiAgICAgc2Nyb2xsRXZlbnQtPnNldFRhcmdldCgmdGFyZ2V0KTsK
ICAgICBlbnF1ZXVlRXZlbnQoV1RGTW92ZShzY3JvbGxFdmVudCkpOwogfQogCi12b2lkIERvY3Vt
ZW50RXZlbnRRdWV1ZTo6ZW5xdWV1ZVJlc2l6ZUV2ZW50KEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGJv
b2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlKQordm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmVu
cXVldWVSZXNpemVFdmVudChFdmVudFRhcmdldCYgdGFyZ2V0LCBFdmVudDo6Q2FuQnViYmxlIGNh
bkJ1YmJsZSwgRXZlbnQ6OklzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlKQogewogICAgIGlmIChtX2lz
Q2xvc2VkKQogICAgICAgICByZXR1cm47CkBAIC0xMTgsNyArMTE2LDcgQEAgdm9pZCBEb2N1bWVu
dEV2ZW50UXVldWU6OmVucXVldWVSZXNpemVFdgogICAgIGlmICghbV90YXJnZXRzV2l0aFF1ZXVl
ZFJlc2l6ZUV2ZW50cy5hZGQoJnRhcmdldCkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVmPEV2ZW50PiByZXNpemVFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LnJlc2l6ZUV2ZW50LCBidWJibGVzLCBjYW5jZWxhYmxlKTsKKyAgICBSZWY8RXZlbnQ+IHJlc2l6
ZUV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVzaXplRXZlbnQsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSk7CiAgICAgcmVzaXplRXZlbnQtPnNldFRhcmdldCgmdGFyZ2V0KTsKICAg
ICBlbnF1ZXVlRXZlbnQoV1RGTW92ZShyZXNpemVFdmVudCkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRl
ICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CkBAIC0zNSw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3Vt
ZW50OwotY2xhc3MgRXZlbnQ7CiBjbGFzcyBOb2RlOwogCiBjbGFzcyBEb2N1bWVudEV2ZW50UXVl
dWUgZmluYWwgOiBwdWJsaWMgRXZlbnRRdWV1ZSB7CkBAIC00OCw4ICs0OCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNsb3NlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVucXVldWVPckRpc3BhdGNo
U2Nyb2xsRXZlbnQoTm9kZSYpOwotICAgIHZvaWQgZW5xdWV1ZVNjcm9sbEV2ZW50KEV2ZW50VGFy
Z2V0JiwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUpOwotICAgIHZvaWQgZW5xdWV1ZVJl
c2l6ZUV2ZW50KEV2ZW50VGFyZ2V0JiwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUpOwor
ICAgIHZvaWQgZW5xdWV1ZVNjcm9sbEV2ZW50KEV2ZW50VGFyZ2V0JiwgRXZlbnQ6OkNhbkJ1YmJs
ZSwgRXZlbnQ6OklzQ2FuY2VsYWJsZSk7CisgICAgdm9pZCBlbnF1ZXVlUmVzaXplRXZlbnQoRXZl
bnRUYXJnZXQmLCBFdmVudDo6Q2FuQnViYmxlLCBFdmVudDo6SXNDYW5jZWxhYmxlKTsKIAogcHJp
dmF0ZToKICAgICB2b2lkIHBlbmRpbmdFdmVudFRpbWVyRmlyZWQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkxLDcgKzI5MSw4IEBAIGJvb2wgRWxlbWVudDo6
ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IFAKICAgICAgICAgLy8gb2YgdGhlIERPTSBzcGVjcywg
YnV0IGlzIHVzZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb25kYmxjbGljaz0iIiBhdHRy
aWJ1dGUuIFRoaXMgaXMgdHJlYXRlZAogICAgICAgICAvLyBhcyBhIHNlcGFyYXRlIGV2ZW50IGlu
IG90aGVyIERPTS1jb21wbGlhbnQgYnJvd3NlcnMgbGlrZSBGaXJlZm94LCBhbmQgc28gd2UgZG8g
dGhlIHNhbWUuCiAgICAgICAgIFJlZjxNb3VzZUV2ZW50PiBkb3VibGVDbGlja0V2ZW50ID0gTW91
c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYmxjbGlja0V2ZW50LAotICAgICAgICAgICAg
bW91c2VFdmVudC0+YnViYmxlcygpLCBtb3VzZUV2ZW50LT5jYW5jZWxhYmxlKCksIG1vdXNlRXZl
bnQtPnZpZXcoKSwgbW91c2VFdmVudC0+ZGV0YWlsKCksCisgICAgICAgICAgICBtb3VzZUV2ZW50
LT5idWJibGVzKCkgPyBFdmVudDo6Q2FuQnViYmxlOjpZZXMgOiBFdmVudDo6Q2FuQnViYmxlOjpO
bywgbW91c2VFdmVudC0+Y2FuY2VsYWJsZSgpID8gRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzIDog
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sCisgICAgICAgICAgICBtb3VzZUV2ZW50LT52aWV3KCks
IG1vdXNlRXZlbnQtPmRldGFpbCgpLAogICAgICAgICAgICAgbW91c2VFdmVudC0+c2NyZWVuWCgp
LCBtb3VzZUV2ZW50LT5zY3JlZW5ZKCksIG1vdXNlRXZlbnQtPmNsaWVudFgoKSwgbW91c2VFdmVu
dC0+Y2xpZW50WSgpLAogICAgICAgICAgICAgbW91c2VFdmVudC0+Y3RybEtleSgpLCBtb3VzZUV2
ZW50LT5hbHRLZXkoKSwgbW91c2VFdmVudC0+c2hpZnRLZXkoKSwgbW91c2VFdmVudC0+bWV0YUtl
eSgpLAogICAgICAgICAgICAgbW91c2VFdmVudC0+YnV0dG9uKCksIG1vdXNlRXZlbnQtPmJ1dHRv
bnMoKSwgbW91c2VFdmVudC0+c3ludGhldGljQ2xpY2tUeXBlKCksIHJlbGF0ZWRUYXJnZXQpOwpA
QCAtMjU3OSwzNCArMjU4MCwzNCBAQCB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNJbkV2ZW50
KGNvbnN0CiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzU2NyaXB0QWxsb3dlZCgpKTsKICAgICBBU1NF
UlQoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5mb2N1c2luRXZlbnQgfHwgZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMoKS5ET01Gb2N1c0luRXZlbnQpOwotICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQo
Rm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZmFsc2UsIGRvY3VtZW50KCkud2lu
ZG93UHJveHkoKSwgMCwgV1RGTW92ZShvbGRGb2N1c2VkRWxlbWVudCkpKTsKKyAgICBkaXNwYXRj
aFNjb3BlZEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIEV2ZW50OjpDYW5CdWJi
bGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIGRvY3VtZW50KCkud2luZG93UHJveHko
KSwgMCwgV1RGTW92ZShvbGRGb2N1c2VkRWxlbWVudCkpKTsKIH0KIAogdm9pZCBFbGVtZW50Ojpk
aXNwYXRjaEZvY3VzT3V0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0
cjxFbGVtZW50PiYmIG5ld0ZvY3VzZWRFbGVtZW50KQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc1Nj
cmlwdEFsbG93ZWQoKSk7CiAgICAgQVNTRVJUKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZm9j
dXNvdXRFdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLkRPTUZvY3VzT3V0RXZlbnQp
OwotICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwg
dHJ1ZSwgZmFsc2UsIGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgMCwgV1RGTW92ZShuZXdGb2N1
c2VkRWxlbWVudCkpKTsKKyAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0
ZShldmVudFR5cGUsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8sIGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgMCwgV1RGTW92ZShuZXdGb2N1c2VkRWxlbWVu
dCkpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoUmVmUHRyPEVsZW1l
bnQ+JiYgb2xkRm9jdXNlZEVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uKQogewogICAgIGlmIChhdXRv
KiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpLmVsZW1lbnREaWRGb2N1cygqdGhpcyk7Ci0gICAgZGlzcGF0Y2hFdmVudChGb2N1c0V2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIGZhbHNlLCBmYWxzZSwgZG9jdW1lbnQo
KS53aW5kb3dQcm94eSgpLCAwLCBXVEZNb3ZlKG9sZEZvY3VzZWRFbGVtZW50KSkpOworICAgIGRp
c3BhdGNoRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBF
dmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIGRvY3VtZW50KCku
d2luZG93UHJveHkoKSwgMCwgV1RGTW92ZShvbGRGb2N1c2VkRWxlbWVudCkpKTsKIH0KIAogdm9p
ZCBFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudChSZWZQdHI8RWxlbWVudD4mJiBuZXdGb2N1c2Vk
RWxlbWVudCkKIHsKICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQogICAg
ICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5lbGVtZW50RGlkQmx1cigqdGhpcyk7Ci0gICAg
ZGlzcGF0Y2hFdmVudChGb2N1c0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwg
ZmFsc2UsIGZhbHNlLCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIDAsIFdURk1vdmUobmV3Rm9j
dXNlZEVsZW1lbnQpKSk7CisgICAgZGlzcGF0Y2hFdmVudChGb2N1c0V2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6Ok5vLCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIDAsIFdURk1vdmUobmV3Rm9jdXNl
ZEVsZW1lbnQpKSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hXZWJLaXRJbWFnZVJlYWR5
RXZlbnRGb3JUZXN0aW5nKCkKIHsKICAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLndlYmtp
dEltYWdlUmVhZHlFdmVudEVuYWJsZWQoKSkKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiLCB0cnVlLCB0cnVlKSk7CisgICAgICAgIGRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZSgid2Via2l0SW1hZ2VGcmFtZVJlYWR5IiwgRXZlbnQ6
OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKIH0KIAogYm9vbCBF
bGVtZW50OjpkaXNwYXRjaE1vdXNlRm9yY2VXaWxsQmVnaW4oKQpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0Vycm9yRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
cnJvckV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vy
cm9yRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIEVycm9yRXZlbnQ6
OkVycm9yRXZlbnQoY29uc3QgQXRvbWljU3RyaW4KIH0KIAogRXJyb3JFdmVudDo6RXJyb3JFdmVu
dChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgSlNDOjpTdHJvbmc8SlNDOjpVbmtu
b3duPiBlcnJvcikKLSAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwg
dHJ1ZSkKKyAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBDYW5CdWJibGU6Ok5v
LCBJc0NhbmNlbGFibGU6OlllcykKICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQogICAgICwgbV9m
aWxlTmFtZShmaWxlTmFtZSkKICAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwyMSArNDAsMjEgQEAgRXZlbnQ6OkV2ZW50
KElzVHJ1c3RlZCBpc1RydXN0ZWQpCiB7CiB9CiAKLUV2ZW50OjpFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZykK
K0V2ZW50OjpFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQ2FuQnViYmxlIGNh
bkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGlzQ2FuY2VsYWJsZSkKICAgICA6IG1fdHlwZShldmVudFR5
cGUpCiAgICAgLCBtX2lzSW5pdGlhbGl6ZWQodHJ1ZSkKLSAgICAsIG1fY2FuQnViYmxlKGNhbkJ1
YmJsZUFyZykKLSAgICAsIG1fY2FuY2VsYWJsZShjYW5jZWxhYmxlQXJnKQorICAgICwgbV9jYW5C
dWJibGUoY2FuQnViYmxlID09IENhbkJ1YmJsZTo6WWVzKQorICAgICwgbV9jYW5jZWxhYmxlKGlz
Q2FuY2VsYWJsZSA9PSBJc0NhbmNlbGFibGU6OlllcykKICAgICAsIG1faXNUcnVzdGVkKHRydWUp
CiAgICAgLCBtX2NyZWF0ZVRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpCiB7CiB9CiAKLUV2ZW50
OjpFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGVBcmcs
IGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0aW1lc3RhbXApCitFdmVudDo6RXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElz
Q2FuY2VsYWJsZSBpc0NhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wKQogICAgIDog
bV90eXBlKGV2ZW50VHlwZSkKICAgICAsIG1faXNJbml0aWFsaXplZCh0cnVlKQotICAgICwgbV9j
YW5CdWJibGUoY2FuQnViYmxlQXJnKQotICAgICwgbV9jYW5jZWxhYmxlKGNhbmNlbGFibGVBcmcp
CisgICAgLCBtX2NhbkJ1YmJsZShjYW5CdWJibGUgPT0gQ2FuQnViYmxlOjpZZXMpCisgICAgLCBt
X2NhbmNlbGFibGUoaXNDYW5jZWxhYmxlID09IElzQ2FuY2VsYWJsZTo6WWVzKQogICAgICwgbV9p
c1RydXN0ZWQodHJ1ZSkKICAgICAsIG1fY3JlYXRlVGltZSh0aW1lc3RhbXApCiB7CkBAIC03Myw5
ICs3Myw5IEBAIEV2ZW50OjpFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHkKIAogRXZl
bnQ6On5FdmVudCgpID0gZGVmYXVsdDsKIAotUmVmPEV2ZW50PiBFdmVudDo6Y3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSkKK1Jl
ZjxFdmVudD4gRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1YmJs
ZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBpc0NhbmNlbGFibGUpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRXZlbnQodHlwZSwgY2FuQnViYmxlLCBpc0NhbmNlbGFibGUpKTsK
IH0KIAogUmVmPEV2ZW50PiBFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50LmgJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiBjbGFzcyBFdmVudCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3Vu
dGVkPEV2ZW50PiB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBJc1RydXN0ZWQgeyBObywgWWVz
IH07CisgICAgZW51bSBjbGFzcyBDYW5CdWJibGUgeyBObywgWWVzIH07CisgICAgZW51bSBjbGFz
cyBJc0NhbmNlbGFibGUgeyBObywgWWVzIH07CiAKICAgICBlbnVtIFBoYXNlVHlwZSB7IAogICAg
ICAgICBOT05FID0gMCwKQEAgLTQ5LDcgKzUxLDcgQEAgcHVibGljOgogICAgICAgICBCVUJCTElO
R19QSEFTRSA9IDMKICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUpOwogICAg
IHN0YXRpYyBSZWY8RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAgICAgc3RhdGljIFJlZjxF
dmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgRXZlbnRJbml0Jiwg
SXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKQEAgLTEzOSw4ICsxNDEsOCBAQCBwdWJsaWM6
CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBFdmVudChJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6
Ok5vKTsKLSAgICBFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUpOwotICAgIEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAp
OworICAgIEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNl
bGFibGUpOworICAgIEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJ
c0NhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wKTsKICAgICBFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEV2ZW50SW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcmVjZWl2ZWRUYXJnZXQoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Gb2N1c0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNF
dmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBib29sIEZvY3VzRXZlbnQ6
OmlzRm9jdXNFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUZvY3VzRXZlbnQ6
OkZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVm
UHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCitGb2N1c0V2ZW50OjpGb2N1c0V2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxh
YmxlIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBS
ZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkKICAgICA6IFVJRXZlbnQodHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgLCBtX3Jl
bGF0ZWRUYXJnZXQoV1RGTW92ZShyZWxhdGVkVGFyZ2V0KSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Gb2N1c0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Zv
Y3VzRXZlbnQuaAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0ZvY3Vz
RXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBOb2RlOwogCiBj
bGFzcyBGb2N1c0V2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8Rm9jdXNFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGludCBkZXRhaWwsIFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxhdGVkVGFyZ2V0KQorICAgIHN0
YXRpYyBSZWY8Rm9jdXNFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2Fu
QnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRh
cmdldCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvY3VzRXZlbnQodHlw
ZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIFdURk1vdmUo
cmVsYXRlZFRhcmdldCkpKTsKICAgICB9CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBGb2N1c0V2ZW50KCkgPSBkZWZhdWx0OwotICAgIEZvY3VzRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGludCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsKKyAgICBGb2N1
c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50LCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYpOwogICAg
IEZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVz
dGVkKTsKIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oCShyZXZpc2lvbiAyMzQ5MTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBIYXNoQ2hhbmdlRXZlbnQo
Y29uc3QgU3RyaW5nJiBvbGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMKQotICAgICAgICA6IEV2
ZW50KGV2ZW50TmFtZXMoKS5oYXNoY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkKKyAgICAgICAg
OiBFdmVudChldmVudE5hbWVzKCkuaGFzaGNoYW5nZUV2ZW50LCBDYW5CdWJibGU6Ok5vLCBJc0Nh
bmNlbGFibGU6Ok5vKQogICAgICAgICAsIG1fb2xkVVJMKG9sZFVSTCkKICAgICAgICAgLCBtX25l
d1VSTChuZXdVUkwpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcAkocmV2
aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZWY8SW5wdXRFdmVudD4gSW5wdXRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwg
UmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKQorUmVmPElucHV0RXZlbnQ+
IElucHV0RXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBpbnB1dFR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5j
ZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBS
ZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3QgVmVjdG9yPFJlZlB0cjxT
dGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW5wdXRFdmVudChldmVudFR5cGUsIGlucHV0VHlwZSwgY2FuQnViYmxlLCBj
YW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhLCBXVEZNb3ZlKGRhdGFUcmFuc2ZlciksIHRh
cmdldFJhbmdlcywgZGV0YWlsKSk7CiB9CiAKLUlucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwp
CitJbnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIGlucHV0VHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxl
IGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVm
UHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRldGFpbCkKICAgICA6IFVJRXZl
bnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFp
bCkKICAgICAsIG1faW5wdXRUeXBlKGlucHV0VHlwZSkKICAgICAsIG1fZGF0YShkYXRhKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vSW5wdXRFdmVudC5oCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vSW5wdXRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMyArMzksMTUgQEAg
cHVibGljOgogICAgICAgICBTdHJpbmcgZGF0YTsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxJ
bnB1dEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0
cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5z
ZmVyPiYmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcywg
aW50IGRldGFpbCk7CisgICAgc3RhdGljIFJlZjxJbnB1dEV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBDYW5CdWJibGUs
IElzQ2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCisgICAgICAgIGNvbnN0
IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOworCiAgICAgc3RhdGlj
IFJlZjxJbnB1dEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJ
bml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnB1dEV2ZW50KHR5cGUsIGluaXRp
YWxpemVyLCBpc1RydXN0ZWQpKTsKICAgICB9CiAKLSAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcm
IGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGlj
UmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKKyAgICBJbnB1dEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgQ2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBk
YXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1Jh
bmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRldGFpbCk7CiAgICAgSW5wdXRFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBi
b29sIGlzSW5wdXRFdmVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQs
NyArOTQsOSBAQCBzdGF0aWMgaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleUxvY2F0aW9uCiBpbmxp
bmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIAogaW5saW5lIEtl
eWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBr
ZXksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3KQotICAgIDogVUlFdmVudFdpdGhLZXlTdGF0
ZShldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgdHJ1ZSwgdHJ1ZSwg
a2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LmNvcHlSZWYo
KSwgMCwga2V5LmN0cmxLZXkoKSwga2V5LmFsdEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1l
dGFLZXkoKSwgZmFsc2UsIGtleS5tb2RpZmllcnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpN
b2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQorICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5
cGVGb3JLZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgQ2FuQnViYmxlOjpZZXMsIElzQ2Fu
Y2VsYWJsZTo6WWVzLAorICAgICAgICBrZXkudGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9u
aWNUaW1lKCksIHZpZXcuY29weVJlZigpLCAwLCBrZXkuY3RybEtleSgpLCBrZXkuYWx0S2V5KCks
IGtleS5zaGlmdEtleSgpLCBrZXkubWV0YUtleSgpLAorICAgICAgICBmYWxzZSwga2V5Lm1vZGlm
aWVycygpLmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBzTG9ja0tleSkpCiAg
ICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1L
ZXlib2FyZEV2ZW50PihrZXkpKQogI2lmIEVOQUJMRShLRVlCT0FSRF9LRVlfQVRUUklCVVRFKQog
ICAgICwgbV9rZXkoa2V5LmtleSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5j
cHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIGlubGluZSBNZXNzYWdlRXZlbnQ6
Ok1lc3NhZ2VFdmVudChjb25zdCAKIH0KIAogaW5saW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2
ZW50KERhdGFUeXBlJiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYg
bGFzdEV2ZW50SWQsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSwg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCi0gICAgOiBFdmVudChldmVudE5h
bWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVudChldmVudE5hbWVz
KCkubWVzc2FnZUV2ZW50LCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQogICAgICwg
bV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgLCBtX2xh
c3RFdmVudElkKGxhc3RFdmVudElkKQpAQCAtNTksNyArNTksNyBAQCBpbmxpbmUgTWVzc2FnZUV2
ZW50OjpNZXNzYWdlRXZlbnQoRGF0YVR5CiB9CiAKIGlubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3Nh
Z2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQpCi0gICAgOiBFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVudCh0eXBlLCBD
YW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQogICAgICwgbV9kYXRhKFdURk1vdmUoZGF0
YSkpCiAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgLCBtX2xhc3RFdmVudElkKGxhc3RFdmVu
dElkKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw4ICs0Nyw4IEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QKIFJl
ZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50LCBpbnQgZGV0YWlsLCBOb2RlKiByZWxhdGVkVGFyZ2V0KQogewogICAgIGJvb2wg
aXNNb3VzZUVudGVyT3JMZWF2ZSA9IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VlbnRl
ckV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VsZWF2ZUV2ZW50OwotICAg
IGJvb2wgaXNDYW5jZWxhYmxlID0gZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVF
dmVudCAmJiAhaXNNb3VzZUVudGVyT3JMZWF2ZTsKLSAgICBib29sIGNhbkJ1YmJsZSA9ICFpc01v
dXNlRW50ZXJPckxlYXZlOworICAgIGF1dG8gaXNDYW5jZWxhYmxlID0gZXZlbnRUeXBlICE9IGV2
ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCAmJiAhaXNNb3VzZUVudGVyT3JMZWF2ZSA/IElzQ2Fu
Y2VsYWJsZTo6WWVzIDogSXNDYW5jZWxhYmxlOjpObzsKKyAgICBhdXRvIGNhbkJ1YmJsZSA9ICFp
c01vdXNlRW50ZXJPckxlYXZlID8gQ2FuQnViYmxlOjpZZXMgOiBDYW5CdWJibGU6Ok5vOwogCiAg
ICAgcmV0dXJuIE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGNhbkJ1YmJsZSwgaXNDYW5j
ZWxhYmxlLCBldmVudC50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgV1RG
TW92ZSh2aWV3KSwKICAgICAgICAgZGV0YWlsLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLngoKSwg
ZXZlbnQuZ2xvYmFsUG9zaXRpb24oKS55KCksIGV2ZW50LnBvc2l0aW9uKCkueCgpLCBldmVudC5w
b3NpdGlvbigpLnkoKSwKQEAgLTU5LDcgKzU5LDcgQEAgUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZl
bnQ6OmNyZWF0ZShjb25zdAogICAgICAgICByZWxhdGVkVGFyZ2V0LCBldmVudC5mb3JjZSgpLCBl
dmVudC5zeW50aGV0aWNDbGlja1R5cGUoKSk7CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VY
LCBpbnQgcGFnZVksCitSZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmll
dywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBw
YWdlWSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIGludCBtb3ZlbWVudFgsIGludCBt
b3ZlbWVudFksCiAjZW5kaWYKQEAgLTczLDE0ICs3MywxNCBAQCBSZWY8TW91c2VFdmVudD4gTW91
c2VFdmVudDo6Y3JlYXRlKGNvbnN0CiAgICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXks
IG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywgcmVsYXRlZFRhcmdldCwgZm9yY2UsIHN5bnRoZXRp
Y0NsaWNrVHlwZSwgZGF0YVRyYW5zZmVyLCBpc1NpbXVsYXRlZCkpOwogfQogCi1SZWY8TW91c2VF
dmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmll
dywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50
IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wg
bWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1
bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFy
Z2V0KQorUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFi
bGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwg
aW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29s
IGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0
b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNr
VHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTW91c2VFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92
ZSh2aWV3KSwgZGV0YWlsLCB7IHNjcmVlblgsIHNjcmVlblkgfSwgeyBjbGllbnRYLCBjbGllbnRZ
IH0sIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywg
c3ludGhldGljQ2xpY2tUeXBlLCByZWxhdGVkVGFyZ2V0KSk7CiB9CiAKIE1vdXNlRXZlbnQ6Ok1v
dXNlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLU1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1v
bm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRl
dGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2lu
ZG93TG9jYXRpb24sCitNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwg
TW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQg
ZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50JiB3
aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBjb25zdCBJ
bnRQb2ludCYgbW92ZW1lbnREZWx0YSwKICNlbmRpZgpAQCAtMTAwLDcgKzEwMCw3IEBAIE1vdXNl
RXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW4KIHsKIH0KIAotTW91c2VFdmVudDo6
TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRhaWws
IGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExv
Y2F0aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1l
dGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5z
aWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdl
dCkKK01vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0
aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24sIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5
cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KQogICAgIDogTW91c2VSZWxhdGVkRXZlbnQo
ZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWU6Om5vdygpLCBX
VEZNb3ZlKHZpZXcpLCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB7IH0sCiAjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKICAgICAgICAgeyB9LApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01vdXNl
RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCShy
ZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMTkgQEAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50Owog
CiBjbGFzcyBNb3VzZUV2ZW50IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50IHsKIHB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90
b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWwsIGlu
dCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAs
CisgICAgICAgIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgs
IGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQogICAgICAgICBpbnQgbW92ZW1lbnRYLCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCi0gICAg
ICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtl
eSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBFdmVudFRh
cmdldCogcmVsYXRlZFRhcmdldCwgZG91YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0
aWNDbGlja1R5cGUsIERhdGFUcmFuc2ZlciogPSBudWxscHRyLCBib29sIGlzU2ltdWxhdGVkID0g
ZmFsc2UpOworICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0
dG9ucywKKyAgICAgICAgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwg
dW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqID0gbnVsbHB0
ciwgYm9vbCBpc1NpbXVsYXRlZCA9IGZhbHNlKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRh
aWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpOwogCi0gICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVl
blgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQg
YnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWND
bGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKKyAgICBzdGF0aWMgUmVmPE1v
dXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQ2FuQnViYmxl
LCBJc0NhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKKyAgICAgICAgaW50IGRldGFp
bCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJv
b2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwKKyAg
ICAgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNp
Z25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0
KTsKIAogICAgIHN0YXRpYyBSZWY8TW91c2VFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQpOyB9CiAKQEAgLTUwLDggKzU0LDEzIEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgfk1vdXNlRXZlbnQoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWws
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOwotICAgIHZvaWQg
aW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCBKU0M6OkpTVmFsdWUgcmVsYXRlZFRhcmdldCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBp
bml0TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKKyAgICAgICAgaW50IGRldGFp
bCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJv
b2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwKKyAg
ICAgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCk7
CisKKyAgICB2b2lkIGluaXRNb3VzZUV2ZW50UXVpcmsoSlNDOjpFeGVjU3RhdGUmLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCisgICAgICAgIGludCBk
ZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZ
LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXks
CisgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgSlNDOjpKU1ZhbHVlIHJlbGF0ZWRUYXJn
ZXQpOwogCiAgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9idXR0
b247IH0KICAgICB1bnNpZ25lZCBzaG9ydCBidXR0b25zKCkgY29uc3QgeyByZXR1cm4gbV9idXR0
b25zOyB9CkBAIC03MSw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBpbnQgd2hpY2goKSBjb25zdCBm
aW5hbDsKIAogcHJvdGVjdGVkOgotICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVz
dGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAorICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1l
c3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAgICAgICAgaW50IGRldGFpbCwgY29uc3Qg
SW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRpb24s
CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgY29uc3QgSW50UG9pbnQmIG1vdmVt
ZW50RGVsdGEsCkBAIC03OSw3ICs4OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBz
aG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsCiAgICAgICAgIEV2ZW50VGFyZ2V0
KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0Ns
aWNrVHlwZSwgRGF0YVRyYW5zZmVyKiwgYm9vbCBpc1NpbXVsYXRlZCk7CiAKLSAgICBNb3VzZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAorICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmLAogICAgICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24s
IGNvbnN0IEludFBvaW50JiBjbGllbnRMb2NhdGlvbiwKICAgICAgICAgYm9vbCBjdHJsS2V5LCBi
b29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LAogICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5
bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTW91c2VSZWxhdGVk
RXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCitNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxh
dGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIENhbkJ1YmJsZSBjYW5CdWJi
bGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJ
bnRQb2ludCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnRE
ZWx0YSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oCShyZXZpc2lv
biAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBN
b3VzZVJlbGF0ZWRFdmVudCgpID0gZGVmYXVsdDsKLSAgICBNb3VzZVJlbGF0ZWRFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1v
bm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCisgICAgTW91c2VS
ZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2Vs
YWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAg
ICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJ
bnRQb2ludCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAg
ICAgY29uc3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1NdXRhdGlvbkV2ZW50OjpNdXRhdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTm9kZSog
cmVsYXRlZE5vZGUsIGNvbnN0IFN0cmluZyYgcHJldlZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1Zh
bHVlKQorTXV0YXRpb25FdmVudDo6TXV0YXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBOb2RlKiBy
ZWxhdGVkTm9kZSwgY29uc3QgU3RyaW5nJiBwcmV2VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFs
dWUpCiAgICAgOiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX3Jl
bGF0ZWROb2RlKHJlbGF0ZWROb2RlKQogICAgICwgbV9wcmV2VmFsdWUocHJldlZhbHVlKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5oCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICsz
Niw5IEBAIHB1YmxpYzoKICAgICAgICAgUkVNT1ZBTCA9IDMKICAgICB9OwogCi0gICAgc3RhdGlj
IFJlZjxNdXRhdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgTm9kZSogcmVsYXRlZE5vZGUgPSBudWxscHRyLCBjb25zdCBTdHJpbmcmIHBy
ZXZWYWx1ZSA9IFN0cmluZygpLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlID0gU3RyaW5nKCkpCisg
ICAgc3RhdGljIFJlZjxNdXRhdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBOb2RlKiByZWxhdGVkTm9kZSA9IG51bGxwdHIsIGNv
bnN0IFN0cmluZyYgcHJldlZhbHVlID0gU3RyaW5nKCksIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUg
PSBTdHJpbmcoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE11dGF0aW9u
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBmYWxzZSwgcmVsYXRlZE5vZGUsIHByZXZWYWx1ZSwgbmV3
VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTXV0YXRpb25FdmVudCh0eXBl
LCBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZTo6Tm8sIHJlbGF0ZWROb2RlLCBwcmV2VmFsdWUsIG5l
d1ZhbHVlKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxNdXRhdGlvbkV2ZW50PiBjcmVhdGVG
b3JCaW5kaW5ncygpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBN
dXRhdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwotICAgIE11dGF0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBOb2RlKiByZWxh
dGVkTm9kZSwgY29uc3QgU3RyaW5nJiBwcmV2VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUp
OworICAgIE11dGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUs
IElzQ2FuY2VsYWJsZSwgTm9kZSogcmVsYXRlZE5vZGUsIGNvbnN0IFN0cmluZyYgcHJldlZhbHVl
LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKTsKIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50
ZXJmYWNlKCkgY29uc3QgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDIz
NDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjM0MiwxNCArMjM0MiwxNCBAQCB2b2lkIE5vZGU6OmRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZl
bnQoCiAgICAgaWYgKCFwYXJlbnROb2RlKCkgJiYgIWhhc0V2ZW50TGlzdGVuZXJzKHN1YnRyZWVN
b2RpZmllZEV2ZW50TmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoU2NvcGVk
RXZlbnQoTXV0YXRpb25FdmVudDo6Y3JlYXRlKHN1YnRyZWVNb2RpZmllZEV2ZW50TmFtZSwgdHJ1
ZSkpOworICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0YXRpb25FdmVudDo6Y3JlYXRlKHN1YnRy
ZWVNb2RpZmllZEV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzKSk7CiB9CiAKIHZvaWQg
Tm9kZTo6ZGlzcGF0Y2hET01BY3RpdmF0ZUV2ZW50KEV2ZW50JiB1bmRlcmx5aW5nQ2xpY2tFdmVu
dCkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihTY3JpcHREaXNhbGxv
d2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNTY3JpcHRBbGxvd2VkKCkpOwogICAgIGludCBkZXRh
aWwgPSBpczxVSUV2ZW50Pih1bmRlcmx5aW5nQ2xpY2tFdmVudCkgPyBkb3duY2FzdDxVSUV2ZW50
Pih1bmRlcmx5aW5nQ2xpY2tFdmVudCkuZGV0YWlsKCkgOiAwOwotICAgIGF1dG8gZXZlbnQgPSBV
SUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTUFjdGl2YXRlRXZlbnQsIHRydWUsIHRydWUs
IGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgZGV0YWlsKTsKKyAgICBhdXRvIGV2ZW50ID0gVUlF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01BY3RpdmF0ZUV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgZG9jdW1lbnQoKS53aW5kb3dQcm94
eSgpLCBkZXRhaWwpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQoJnVuZGVybHlpbmdD
bGlja0V2ZW50KTsKICAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KGV2ZW50KTsKICAgICBpZiAoZXZl
bnQtPmRlZmF1bHRIYW5kbGVkKCkpCkBAIC0yMzY5LDcgKzIzNjksNyBAQCBib29sIE5vZGU6OmRp
c3BhdGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0CiAKIHZvaWQgTm9kZTo6ZGlzcGF0Y2hJbnB1dEV2
ZW50KCkKIHsKLSAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmlucHV0RXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgZGlzcGF0Y2hTY29wZWRFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZ
ZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgTm9kZTo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vT3ZlcmZs
b3dFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZl
bnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vT3ZlcmZsb3dF
dmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgT3ZlcmZsb3dFdmVudDo6
T3ZlcmZsb3dFdmVudCgpCiB9CiAKIE92ZXJmbG93RXZlbnQ6Ok92ZXJmbG93RXZlbnQoYm9vbCBo
b3Jpem9udGFsT3ZlcmZsb3dDaGFuZ2VkLCBib29sIGhvcml6b250YWxPdmVyZmxvdywgYm9vbCB2
ZXJ0aWNhbE92ZXJmbG93Q2hhbmdlZCwgYm9vbCB2ZXJ0aWNhbE92ZXJmbG93KQotICAgIDogRXZl
bnQoZXZlbnROYW1lcygpLm92ZXJmbG93Y2hhbmdlZEV2ZW50LCBmYWxzZSwgZmFsc2UpCisgICAg
OiBFdmVudChldmVudE5hbWVzKCkub3ZlcmZsb3djaGFuZ2VkRXZlbnQsIENhbkJ1YmJsZTo6Tm8s
IElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2hvcml6b250YWxPdmVyZmxvdyhob3Jpem9udGFs
T3ZlcmZsb3cpCiAgICAgLCBtX3ZlcnRpY2FsT3ZlcmZsb3codmVydGljYWxPdmVyZmxvdykKIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAJKHJldmlz
aW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBQYWdlVHJhbnNpdGlvbkV2ZW50OjpQYWdlVHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBwZXJzaXN0ZWQpCi0gICAgOiBFdmVudCh0eXBlLCB0cnVlLCB0cnVl
KQorICAgIDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpZZXMsIElzQ2FuY2VsYWJsZTo6WWVzKQog
ICAgICwgbV9wZXJzaXN0ZWQocGVyc2lzdGVkKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1BvcFN0YXRlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Q
b3BTdGF0ZUV2ZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L1BvcFN0YXRlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIFBvcFN0
YXRlRXZlbnQ6OlBvcFN0YXRlRXZlbnQoY29uc3QgQXRvbWkKIH0KIAogUG9wU3RhdGVFdmVudDo6
UG9wU3RhdGVFdmVudChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIHNlcmlhbGl6ZWRT
dGF0ZSwgSGlzdG9yeSogaGlzdG9yeSkKLSAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5wb3BzdGF0
ZUV2ZW50LCBmYWxzZSwgZmFsc2UpCisgICAgOiBFdmVudChldmVudE5hbWVzKCkucG9wc3RhdGVF
dmVudCwgQ2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fc2VyaWFsaXpl
ZFN0YXRlKFdURk1vdmUoc2VyaWFsaXplZFN0YXRlKSkKICAgICAsIG1faGlzdG9yeShoaXN0b3J5
KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmNwcAkocmV2aXNpb24gMjM0
OTEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw3ICszNyw3IEBAIFByb2dyZXNzRXZlbnQ6OlByb2dyZXNzRXZlbnQoY29uc3Qg
QXRvbWkKIH0KIAogUHJvZ3Jlc3NFdmVudDo6UHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgbGVuZ3RoQ29tcHV0YWJsZSwgdW5zaWduZWQgbG9uZyBsb25nIGxvYWRl
ZCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsKQotICAgIDogRXZlbnQodHlwZSwgZmFsc2UsIGZh
bHNlKQorICAgIDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykK
ICAgICAsIG1fbGVuZ3RoQ29tcHV0YWJsZShsZW5ndGhDb21wdXRhYmxlKQogICAgICwgbV9sb2Fk
ZWQobG9hZGVkKQogICAgICwgbV90b3RhbCh0b3RhbCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRp
YyBib29sIGlzTGVnYWN5U3VwcG9ydGVkSmF2YVNjcmlwdEwKIAogdm9pZCBTY3JpcHRFbGVtZW50
OjpkaXNwYXRjaEVycm9yRXZlbnQoKQogewotICAgIG1fZWxlbWVudC5kaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAg
IG1fZWxlbWVudC5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9y
RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwog
fQogCiBzdGQ6Om9wdGlvbmFsPFNjcmlwdEVsZW1lbnQ6OlNjcmlwdFR5cGU+IFNjcmlwdEVsZW1l
bnQ6OmRldGVybWluZVNjcmlwdFR5cGUoTGVnYWN5VHlwZVN1cHBvcnQgc3VwcG9ydExlZ2FjeVR5
cGVzKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5UG9saWN5VmlvbGF0
aW9uRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlQb2xp
Y3lWaW9sYXRpb25FdmVudC5oCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VjdXJpdHlQb2xpY3lWaW9s
YXRpb25FdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRv
Y3VtZW50VVJJLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIGJsb2NrZWRV
UkksIGNvbnN0IFN0cmluZyYgdmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgZWZmZWN0
aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsUG9saWN5LCBjb25zdCBTdHJpbmcm
IHNvdXJjZUZpbGUsIHVuc2lnbmVkIHNob3J0IHN0YXR1c0NvZGUsIGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyKQorICAgIHN0YXRpYyBSZWY8U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25F
dmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJs
ZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkksIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmluZyYgYmxvY2tlZFVSSSwgY29uc3QgU3Ry
aW5nJiB2aW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUs
IGNvbnN0IFN0cmluZyYgb3JpZ2luYWxQb2xpY3ksIGNvbnN0IFN0cmluZyYgc291cmNlRmlsZSwg
dW5zaWduZWQgc2hvcnQgc3RhdHVzQ29kZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWN1cml0eVBvbGljeVZp
b2xhdGlvbkV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgZG9jdW1lbnRVUkksIHJl
ZmVycmVyLCBibG9ja2VkVVJJLCB2aW9sYXRlZERpcmVjdGl2ZSwgZWZmZWN0aXZlRGlyZWN0aXZl
LCBvcmlnaW5hbFBvbGljeSwgc291cmNlRmlsZSwgc3RhdHVzQ29kZSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyKSk7CiAgICAgfQpAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICB9CiAKLSAgICBTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBk
b2N1bWVudFVSSSwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiBibG9ja2Vk
VVJJLCBjb25zdCBTdHJpbmcmIHZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGVmZmVj
dGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFBvbGljeSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VGaWxlLCB1bnNpZ25lZCBzaG9ydCBzdGF0dXNDb2RlLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlcikKKyAgICBTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNh
bmNlbGFibGUsIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkksIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGNvbnN0IFN0cmluZyYgYmxvY2tlZFVSSSwgY29uc3QgU3RyaW5nJiB2aW9sYXRlZERpcmVj
dGl2ZSwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxQb2xpY3ksIGNvbnN0IFN0cmluZyYgc291cmNlRmlsZSwgdW5zaWduZWQgc2hvcnQgc3Rh
dHVzQ29kZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiAgICAgICAgIDogRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAgICAgICAsIG1fZG9jdW1lbnRVUkko
ZG9jdW1lbnRVUkkpCiAgICAgICAgICwgbV9yZWZlcnJlcihyZWZlcnJlcikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU2ltdWxhdGVkTW91c2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIFJl
ZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVk
Q2xpY2tTb3VyY2Ugc291cmNlKQotICAgICAgICA6IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCB0cnVl
LCB0cnVlLCB1bmRlcmx5aW5nRXZlbnQgPyB1bmRlcmx5aW5nRXZlbnQtPnRpbWVTdGFtcCgpIDog
TW9ub3RvbmljVGltZTo6bm93KCksIFdURk1vdmUodmlldyksIDAsIHsgfSwgeyB9LAorICAgICAg
ICA6IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpZ
ZXMsIHVuZGVybHlpbmdFdmVudCA/IHVuZGVybHlpbmdFdmVudC0+dGltZVN0YW1wKCkgOiBNb25v
dG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgMCwgeyB9LCB7IH0sCiAjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKICAgICAgICAgICAgIHsgfSwKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1RleHRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1RleHRFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIFRleHRFdmVudDo6
VGV4dEV2ZW50KCkKIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucHV0VHlw
ZSkKLSAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVl
LCBXVEZNb3ZlKHZpZXcpLCAwKQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0
RXZlbnQsIENhbkJ1YmJsZTo6WWVzLCBJc0NhbmNlbGFibGU6OlllcywgV1RGTW92ZSh2aWV3KSwg
MCkKICAgICAsIG1faW5wdXRUeXBlKGlucHV0VHlwZSkKICAgICAsIG1fZGF0YShkYXRhKQogICAg
ICwgbV9zaG91bGRTbWFydFJlcGxhY2UoZmFsc2UpCkBAIC04Miw3ICs4Miw3IEBAIFRleHRFdmVu
dDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4KIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZl
bnQoUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNob3VsZFNtYXJ0UmVw
bGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxC
bG9ja3F1b3RlSGFuZGxpbmcpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRF
dmVudCwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCkKKyAgICA6IFVJRXZlbnQoZXZlbnRO
YW1lcygpLnRleHRJbnB1dEV2ZW50LCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpZZXMs
IFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dFBhc3Rl
KQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBh
c3RpbmdGcmFnbWVudCkpCkBAIC05Myw3ICs5Myw3IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KFJl
ZlB0cjxXaW5kb3dQcm94eT4KIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoUmVmUHRyPFdpbmRv
d1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgVmVjdG9yPERpY3RhdGlv
bkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKQotICAgIDogVUlFdmVudChldmVu
dE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdURk1vdmUodmlldyksIDApCisg
ICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgQ2FuQnViYmxlOjpZZXMs
IElzQ2FuY2VsYWJsZTo6WWVzLCBXVEZNb3ZlKHZpZXcpLCAwKQogICAgICwgbV9pbnB1dFR5cGUo
VGV4dEV2ZW50SW5wdXREaWN0YXRpb24pCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fc2hv
dWxkU21hcnRSZXBsYWNlKGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcAko
cmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiwxNiArMzYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBU
b3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkgPSBkZWZhdWx0OwogCi1Ub3VjaEV2ZW50OjpUb3VjaEV2
ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hMaXN0KiB0YXJnZXRUb3VjaGVzLAotICAgICAg
ICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAot
ICAgICAgICBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IHNjcmVlblgsIGludCBzY3Jl
ZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKLSAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFs
dEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQotICAgIDogTW91c2VSZWxhdGVkRXZl
bnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgTW9ub3RvbmljVGltZTo6bm93KCksIFdURk1vdmUodmlldyks
IDAsIEludFBvaW50KHNjcmVlblgsIHNjcmVlblkpLAotICAgICAgICAgICAgICAgICAgICAgICAg
SW50UG9pbnQocGFnZVgsIHBhZ2VZKSwKK1RvdWNoRXZlbnQ6OlRvdWNoRXZlbnQoVG91Y2hMaXN0
KiB0b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsIFRvdWNoTGlzdCogY2hhbmdlZFRv
dWNoZXMsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwKKyAgICBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldywgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwg
Ym9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQor
ICAgIDogTW91c2VSZWxhdGVkRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpZZXMsIElzQ2FuY2VsYWJs
ZTo6WWVzLCBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgMCwgSW50UG9pbnQo
c2NyZWVuWCwgc2NyZWVuWSksCisgICAgICAgIEludFBvaW50KHBhZ2VYLCBwYWdlWSksCiAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKLSAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KDAs
IDApLAorICAgICAgICBJbnRQb2ludCgwLCAwKSwKICNlbmRpZgotICAgICAgICAgICAgICAgICAg
ICAgICAgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSkKKyAgICAgICAgY3RybEtl
eSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSkKICAgICAsIG1fdG91Y2hlcyh0b3VjaGVzKQog
ICAgICwgbV90YXJnZXRUb3VjaGVzKHRhcmdldFRvdWNoZXMpCiAgICAgLCBtX2NoYW5nZWRUb3Vj
aGVzKGNoYW5nZWRUb3VjaGVzKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zaXRpb25F
dmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVu
dC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0aW9u
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFRyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFwc2VkVGlt
ZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50KQotICAgIDogRXZlbnQodHlwZSwgdHJ1ZSwg
dHJ1ZSkKKyAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6WWVzLCBJc0NhbmNlbGFibGU6Olll
cykKICAgICAsIG1fcHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkKICAgICAsIG1fZWxhcHNlZFRp
bWUoZWxhcHNlZFRpbWUpCiAgICAgLCBtX3BzZXVkb0VsZW1lbnQocHNldWRvRWxlbWVudCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vVUlFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDE1IEBAIFVJ
RXZlbnQ6OlVJRXZlbnQoKQogewogfQogCi1VSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKLSAgICA6IEV2ZW50
KGV2ZW50VHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnKQorVUlFdmVudDo6VUlFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXND
YW5jZWxhYmxlIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3QXJnLCBpbnQg
ZGV0YWlsQXJnKQorICAgIDogRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUp
CiAgICAgLCBtX3ZpZXcoV1RGTW92ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFpbEFy
ZykKIHsKIH0KIAotVUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0
aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQot
ICAgIDogRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIHRpbWVz
dGFtcCkKK1VJRXZlbnQ6OlVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIENh
bkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1l
IHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXdBcmcsIGludCBkZXRhaWxBcmcp
CisgICAgOiBFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1w
KQogICAgICwgbV92aWV3KFdURk1vdmUodmlld0FyZykpCiAgICAgLCBtX2RldGFpbChkZXRhaWxB
cmcpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAg
dHlwZWRlZiBXaW5kb3dQcm94eSBBYnN0cmFjdFZpZXc7CiAKIGNsYXNzIFVJRXZlbnQgOiBwdWJs
aWMgRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRhaWwpCisgICAgc3RhdGljIFJlZjxVSUV2
ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxl
LCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGlu
dCBkZXRhaWwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKSk7CiAgICAg
fQpAQCAtNjUsOCArNjUsOCBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVSUV2ZW50KCk7
Ci0gICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7Ci0gICAg
VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYs
IGludCBkZXRhaWwpOworICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5C
dWJibGUsIElzQ2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgZGV0YWlsKTsK
KyAgICBVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGlu
dCBkZXRhaWwpOwogICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVUlFdmVu
dEluaXQmLCBJc1RydXN0ZWQpOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L1VJRXZlbnRXaXRoS2V5U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
VUlFdmVudFdpdGhLZXlTdGF0ZS5oCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBVSUV2ZW50V2l0aEtleVN0YXRlKCkgPSBkZWZh
dWx0OwogCi0gICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3LCBpbnQgZGV0YWlsLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXkpCisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBib29s
IGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQogICAgICAgICA6IFVJRXZlbnQo
dHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAg
ICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQpAQCAt
NDksNyArNDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAotICAgIFVJRXZlbnRXaXRo
S2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYm
IHZpZXcsCisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgIGludCBk
ZXRhaWwsIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0
YUtleSwgYm9vbCBhbHRHcmFwaEtleSwgYm9vbCBjYXBzTG9ja0tleSkKICAgICAgICAgICAgIDog
VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RGTW92ZSh2
aWV3KSwgZGV0YWlsKQogICAgICAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMjM0
OTEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBXZWJLaXRBbmltYXRpb25FdmVudDo6V2ViS2l0
QW5pbWF0aW9uRXZlCiB9CiAKIFdlYktpdEFuaW1hdGlvbkV2ZW50OjpXZWJLaXRBbmltYXRpb25F
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFt
ZSwgZG91YmxlIGVsYXBzZWRUaW1lKQotICAgIDogRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSkKKyAg
ICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6WWVzLCBJc0NhbmNlbGFibGU6OlllcykKICAgICAs
IG1fYW5pbWF0aW9uTmFtZShhbmltYXRpb25OYW1lKQogICAgICwgbV9lbGFwc2VkVGltZShlbGFw
c2VkVGltZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9u
RXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0
VHJhbnNpdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQ6OldlYktpdFRyYW5zaXRp
b25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCkKLSAg
ICA6IEV2ZW50KHR5cGUsIHRydWUsIHRydWUpCisgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6
OlllcywgSXNDYW5jZWxhYmxlOjpZZXMpCiAgICAgLCBtX3Byb3BlcnR5TmFtZShwcm9wZXJ0eU5h
bWUpCiAgICAgLCBtX2VsYXBzZWRUaW1lKGVsYXBzZWRUaW1lKQogICAgICwgbV9wc2V1ZG9FbGVt
ZW50KHBzZXVkb0VsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCShyZXZp
c2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgaW5saW5lIFdoZWVsRXZlbnQ6OldoZWVsRXZlbnQo
Y29uc3QgQXRvbQogfQogCiBpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKLSAgICA6
IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2ZW50LnRp
bWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCBXVEZNb3ZlKHZpZXcpLCAwLCBl
dmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCisgICAgOiBNb3VzZUV2ZW50
KGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50LCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpZ
ZXMsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCBXVEZNb3Zl
KHZpZXcpLCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCiAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgLCB7IH0KICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsMTIgKzExMCwxMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGRpc3BhdGNoQmVmb3JlSW5wdXRF
dmVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0VHlwZSwgY29u
c3QgU3RyaW5nJiBkYXRhID0geyB9LCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2Zl
ciA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFu
Z2VzID0geyB9LCBib29sIGNhbmNlbGFibGUgPSB0cnVlKQorc3RhdGljIGJvb2wgZGlzcGF0Y2hC
ZWZvcmVJbnB1dEV2ZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5w
dXRUeXBlLCBjb25zdCBTdHJpbmcmIGRhdGEgPSB7IH0sIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYg
ZGF0YVRyYW5zZmVyID0gbnVsbHB0ciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+
JiB0YXJnZXRSYW5nZXMgPSB7IH0sIEV2ZW50OjpJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSA9IEV2
ZW50OjpJc0NhbmNlbGFibGU6OlllcykKIHsKICAgICBpZiAoIWVsZW1lbnQuZG9jdW1lbnQoKS5z
ZXR0aW5ncygpLmlucHV0RXZlbnRzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIGF1dG8gZXZlbnQgPSBJbnB1dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJlZm9yZWlu
cHV0RXZlbnQsIGlucHV0VHlwZSwgdHJ1ZSwgY2FuY2VsYWJsZSwgZWxlbWVudC5kb2N1bWVudCgp
LndpbmRvd1Byb3h5KCksIGRhdGEsIFdURk1vdmUoZGF0YVRyYW5zZmVyKSwgdGFyZ2V0UmFuZ2Vz
LCAwKTsKKyAgICBhdXRvIGV2ZW50ID0gSW5wdXRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5i
ZWZvcmVpbnB1dEV2ZW50LCBpbnB1dFR5cGUsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgY2FuY2Vs
YWJsZSwgZWxlbWVudC5kb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIGRhdGEsIFdURk1vdmUoZGF0
YVRyYW5zZmVyKSwgdGFyZ2V0UmFuZ2VzLCAwKTsKICAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQo
ZXZlbnQpOwogICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KQEAgLTEy
Nyw3ICsxMjcsOCBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaElucHV0RXZlbnQoRWxlbWVudCYgCiAg
ICAgICAgIC8vIGJ1dCBUeXBpbmdDb21tYW5kcyBhcmUgc3BlY2lhbCBpbiB0aGF0IGV4aXN0aW5n
IFR5cGluZ0NvbW1hbmRzIHRoYXQgYXJlIGFwcGxpZWQgYWdhaW4gZmlyZSBpbnB1dCBldmVudHMg
KmZyb20gd2l0aGluKiB0aGUgc2NvcGUgYnkgY2FsbGluZyB0eXBpbmdBZGRlZFRvT3BlbkNvbW1h
bmQuCiAgICAgICAgIC8vIEluc3RlYWQsIFR5cGluZ0NvbW1hbmRzIHNob3VsZCBhbHdheXMgZGlz
cGF0Y2ggZXZlbnRzIHN5bmNocm9ub3VzbHkgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc2NvcGVkIHF1
ZXVlIGluIENvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBseS4gVG8gd29yayBhcm91bmQgdGhpcyBm
b3IgdGhlCiAgICAgICAgIC8vIHRpbWUgYmVpbmcsIGp1c3QgcmV2ZXJ0IGJhY2sgdG8gY2FsbGlu
ZyBkaXNwYXRjaFNjb3BlZEV2ZW50LgotICAgICAgICBlbGVtZW50LmRpc3BhdGNoU2NvcGVkRXZl
bnQoSW5wdXRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50LCBpbnB1dFR5cGUs
IHRydWUsIGZhbHNlLCBlbGVtZW50LmRvY3VtZW50KCkud2luZG93UHJveHkoKSwgZGF0YSwgV1RG
TW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5nZXMsIDApKTsKKyAgICAgICAgZWxlbWVudC5k
aXNwYXRjaFNjb3BlZEV2ZW50KElucHV0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW5wdXRF
dmVudCwgaW5wdXRUeXBlLCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFi
bGU6Ok5vLAorICAgICAgICAgICAgZWxlbWVudC5kb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIGRh
dGEsIFdURk1vdmUoZGF0YVRyYW5zZmVyKSwgdGFyZ2V0UmFuZ2VzLCAwKSk7CiAgICAgfSBlbHNl
CiAgICAgICAgIGVsZW1lbnQuZGlzcGF0Y2hJbnB1dEV2ZW50KCk7CiB9CkBAIC0xMDI5LDcgKzEw
MzAsNyBAQCBzdGF0aWMgdm9pZCBub3RpZnlUZXh0RnJvbUNvbnRyb2xzKEVsZW1lCiAgICAgICAg
IGVuZGluZ1RleHRDb250cm9sLT5kaWRFZGl0SW5uZXJUZXh0VmFsdWUoKTsKIH0KIAotc3RhdGlj
IGJvb2wgZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhSZWZQdHI8RWxlbWVudD4gc3RhcnRSb290
LCBSZWZQdHI8RWxlbWVudD4gZW5kUm9vdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dFR5cGVO
YW1lLCBjb25zdCBTdHJpbmcmIGRhdGEgPSB7IH0sIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYgZGF0
YVRyYW5zZmVyID0gbnVsbHB0ciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0
YXJnZXRSYW5nZXMgPSB7IH0sIGJvb2wgY2FuY2VsYWJsZSA9IHRydWUpCitzdGF0aWMgYm9vbCBk
aXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKFJlZlB0cjxFbGVtZW50PiBzdGFydFJvb3QsIFJlZlB0
cjxFbGVtZW50PiBlbmRSb290LCBjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0VHlwZU5hbWUsIGNv
bnN0IFN0cmluZyYgZGF0YSA9IHsgfSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNm
ZXIgPSBudWxscHRyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJh
bmdlcyA9IHsgfSwgRXZlbnQ6OklzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlID0gRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6WWVzKQogewogICAgIGJvb2wgY29udGludWVXaXRoRGVmYXVsdEJlaGF2aW9yID0g
dHJ1ZTsKICAgICBpZiAoc3RhcnRSb290KQpAQCAtMTA1Niw3ICsxMDU3LDggQEAgYm9vbCBFZGl0
b3I6OndpbGxBcHBseUVkaXRpbmcoQ29tcG9zaXRlRQogICAgIGlmICghY29tcG9zaXRpb24pCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVu
dHMoY29tcG9zaXRpb24tPnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlv
bi0+ZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21tYW5kLmlucHV0RXZlbnRUeXBlTmFt
ZSgpLCBjb21tYW5kLmlucHV0RXZlbnREYXRhKCksIGNvbW1hbmQuaW5wdXRFdmVudERhdGFUcmFu
c2ZlcigpLCB0YXJnZXRSYW5nZXMsIGNvbW1hbmQuaXNCZWZvcmVJbnB1dEV2ZW50Q2FuY2VsYWJs
ZSgpKTsKKyAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi0+
c3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNvbXBvc2l0aW9uLT5lbmRpbmdSb290RWRp
dGFibGVFbGVtZW50KCksIGNvbW1hbmQuaW5wdXRFdmVudFR5cGVOYW1lKCksCisgICAgICAgIGNv
bW1hbmQuaW5wdXRFdmVudERhdGEoKSwgY29tbWFuZC5pbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCks
IHRhcmdldFJhbmdlcywgY29tbWFuZC5pc0JlZm9yZUlucHV0RXZlbnRDYW5jZWxhYmxlKCkgPyBF
dmVudDo6SXNDYW5jZWxhYmxlOjpZZXMgOiBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiB9CiAK
IHZvaWQgRWRpdG9yOjphcHBsaWVkRWRpdGluZyhDb21wb3NpdGVFZGl0Q29tbWFuZCYgY29tbWFu
ZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZp
c2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246
OnNldFNlbGVjdGlvbldpdGhvdXQKICAgICBtX3hQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlv
biA9IE5vWFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKCk7CiAgICAgc2VsZWN0RnJhbWVF
bGVtZW50SW5QYXJlbnRJZkZ1bGx5U2VsZWN0ZWQoKTsKICAgICBtX2ZyYW1lLT5lZGl0b3IoKS5y
ZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG9sZFNlbGVjdGlvbiwgb3B0aW9ucyk7Ci0gICAgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZURvY3VtZW50RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuc2VsZWN0aW9uY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPmVucXVldWVEb2N1bWVudEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnNlbGVjdGlvbmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTk2NSw3ICsx
OTY1LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2VsZWN0QWxsKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKHNlbGVjdFN0YXJ0VGFyZ2V0KSB7Ci0gICAgICAgIGF1dG8gZXZlbnQgPSBF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zZWxlY3RzdGFydEV2ZW50LCB0cnVlLCB0cnVlKTsK
KyAgICAgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlbGVjdHN0
YXJ0RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVz
KTsKICAgICAgICAgc2VsZWN0U3RhcnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogICAg
ICAgICBpZiAoZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTI0MjUsNyArMjQyNSw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OmRpc3BhdGNoU2VsZWN0
U3RhcnQKICAgICBpZiAoIXNlbGVjdFN0YXJ0VGFyZ2V0KQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zZWxlY3RzdGFy
dEV2ZW50LCB0cnVlLCB0cnVlKTsKKyAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuc2VsZWN0c3RhcnRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpZZXMpOwogICAgIHNlbGVjdFN0YXJ0VGFyZ2V0LT5kaXNwYXRjaEV2ZW50
KGV2ZW50KTsKICAgICByZXR1cm4gIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIEhUTUxEZXRhaWxzRWxlbWVudDo6
aXNBY3RpdmVTdW1tYXJ5CiB2b2lkIEhUTUxEZXRhaWxzRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5n
RXZlbnQoRGV0YWlsRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKQogewogICAgIEFTU0VSVF9VTlVT
RUQoZXZlbnRTZW5kZXIsIGV2ZW50U2VuZGVyID09ICZkZXRhaWxUb2dnbGVFdmVudFNlbmRlcigp
KTsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnRvZ2dsZUV2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLnRvZ2dsZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKIH0KIAogdm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldENoYW5nZWRTCiAKIHZvaWQgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6ZGlzcGF0Y2hDaGFuZ2VFdmVudCgpCiB7Ci0gICAgZGlzcGF0Y2hTY29wZWRFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgdHJ1ZSwgZmFsc2UpKTsK
KyAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNoYW5n
ZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7
CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb3JtQ29udHJvbENo
YW5nZUV2ZW50KCkKQEAgLTQ3NCw3ICs0NzQsNyBAQCBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OmNoZWNrVmFsaWRpCiAgICAgLy8gQW4gZXZlbnQgaGFuZGxlciBjYW4gZGVyZWYgdGhpcyBv
YmplY3QuCiAgICAgUmVmPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogICAgIFJlZjxEb2N1bWVudD4gb3JpZ2luYWxEb2N1bWVudChkb2N1bWVudCgpKTsKLSAg
ICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW52YWxpZEV2ZW50LCBm
YWxzZSwgdHJ1ZSk7CisgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmludmFsaWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6
Olllcyk7CiAgICAgZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgaWYgKCFldmVudC0+ZGVmYXVs
dFByZXZlbnRlZCgpICYmIHVuaGFuZGxlZEludmFsaWRDb250cm9scyAmJiBpc0Nvbm5lY3RlZCgp
ICYmIG9yaWdpbmFsRG9jdW1lbnQucHRyKCkgPT0gJmRvY3VtZW50KCkpCiAgICAgICAgIHVuaGFu
ZGxlZEludmFsaWRDb250cm9scy0+YXBwZW5kKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODMsNyArMjgz
LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnByZXBhcmVGb3JTdWJtaXNzaQogCiAgICAgYXV0
byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAKLSAgICBhdXRvIHN1Ym1pdEV2ZW50
ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3VibWl0RXZlbnQsIHRydWUsIHRydWUpOwor
ICAgIGF1dG8gc3VibWl0RXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWJtaXRF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpOwog
ICAgIGRpc3BhdGNoRXZlbnQoc3VibWl0RXZlbnQpOwogCiAgICAgLy8gRXZlbnQgaGFuZGxpbmcg
Y291bGQgaGF2ZSByZXN1bHRlZCBpbiBtX3Nob3VsZFN1Ym1pdCBiZWNvbWluZyB0cnVlIGFzIGEg
c2lkZSBlZmZlY3QsIHRvby4KQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVu
dDo6cmVzZXQoKQogCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNJblJlc2V0RnVuY3Rpb25SZXN0
b3JlcihtX2lzSW5SZXNldEZ1bmN0aW9uLCB0cnVlKTsKIAotICAgIGF1dG8gZXZlbnQgPSBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZXNldEV2ZW50LCB0cnVlLCB0cnVlKTsKKyAgICBhdXRv
IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVzZXRFdmVudCwgRXZlbnQ6OkNh
bkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpOwogICAgIGRpc3BhdGNoRXZl
bnQoZXZlbnQpOwogICAgIGlmICghZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKSkKICAgICAgICAg
cmVzZXRBc3NvY2lhdGVkRm9ybUNvbnRyb2xFbGVtZW50cygpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1
OCw3IEBAIHZvaWQgSFRNTEltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCgKICAgICBib29s
IGVycm9yT2NjdXJyZWQgPSBpbWFnZSgpLT5lcnJvck9jY3VycmVkKCk7CiAgICAgaWYgKCFlcnJv
ck9jY3VycmVkICYmIGltYWdlKCktPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAp
CiAgICAgICAgIGVycm9yT2NjdXJyZWQgPSBpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCgp
KTsgLy8gQW4gPG9iamVjdD4gY29uc2lkZXJzIGEgNDA0IHRvIGJlIGFuIGVycm9yIGFuZCBzaG91
bGQgZmlyZSBvbmVycm9yLgotICAgIGVsZW1lbnQoKS5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVh
dGUoZXJyb3JPY2N1cnJlZCA/IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IDogZXZlbnROYW1lcygp
LmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgZWxlbWVudCgpLmRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShlcnJvck9jY3VycmVkID8gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgOiBl
dmVudE5hbWVzKCkubG9hZEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKIH0KIAogU3RyaW5nIEhUTUxJbWFnZUxvYWRlcjo6c291cmNlVVJJKGNv
bnN0IEF0b21pY1N0cmluZyYgYXR0cikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4NCw3ICsxNDg0
LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpvblNlYXJjaCgpCiAKICAgICBpZiAobV9pbnB1
dFR5cGUpCiAgICAgICAgIGRvd25jYXN0PFNlYXJjaElucHV0VHlwZT4oKm1faW5wdXRUeXBlLmdl
dCgpKS5zdG9wU2VhcmNoRXZlbnRUaW1lcigpOwotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuc2VhcmNoRXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zZWFyY2hFdmVudCwgRXZlbnQ6OkNh
bkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiB2b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OnJlc3VtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oKQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OTUsOSArNDk1LDkgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZQog
ewogICAgIEFTU0VSVF9VTlVTRUQoZXZlbnRTZW5kZXIsIGV2ZW50U2VuZGVyID09ICZsaW5rTG9h
ZEV2ZW50U2VuZGVyKCkgfHwgZXZlbnRTZW5kZXIgPT0gJmxpbmtFcnJvckV2ZW50U2VuZGVyKCkp
OwogICAgIGlmIChtX2xvYWRlZFJlc291cmNlKQotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAg
IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICBlbHNlCi0g
ICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVu
dCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKSk7CiB9CiAKIERPTVRva2VuTGlzdCYgSFRNTExpbmtFbGVtZW50OjpyZWxM
aXN0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2
aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA5MSw3ICsxMDkxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckFjdGl2ZQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7Ci0gICAgUmVmUHRyPEV2ZW50
PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgdHJ1ZSk7CisgICAgUmVm
UHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsKIAogICAgIC8vIERvbid0IHNldCB0
aGUgZXZlbnQgdGFyZ2V0LCB0aGUgZXZlbnQgcXVldWUgd2lsbCBzZXQgaXQgaW4gR2VuZXJpY0V2
ZW50UXVldWU6OnRpbWVyRmlyZWQgYW5kIHNldHRpbmcgaXQgaGVyZQogICAgIC8vIHdpbGwgdHJp
Z2dlciBhbiBBU1NFUlQgaWYgdGhpcyBlbGVtZW50IGhhcyBiZWVuIG1hcmtlZCBmb3IgZGVsZXRp
b24uCkBAIC0xMTM3LDcgKzExMzcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om5vdGlmeUFi
b3V0UGxheWluCiAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OyAvLyBUaGUgJ3BsYXlpbmcnIGV2ZW50IGNhbiBtYWtlIGFyYml0cmFyeSBET00gbXV0YXRpb25z
LgogICAgIG1fcGxheWJhY2tTdGFydGVkVGltZSA9IGN1cnJlbnRNZWRpYVRpbWUoKS50b0RvdWJs
ZSgpOwogICAgIG1faGFzRXZlck5vdGlmaWVkQWJvdXRQbGF5aW5nID0gdHJ1ZTsKLSAgICBkaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCwgZmFsc2Us
IHRydWUpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnBs
YXlpbmdFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olll
cykpOwogICAgIHJlc29sdmVQZW5kaW5nUGxheVByb21pc2VzKFdURk1vdmUocGVuZGluZ1BsYXlQ
cm9taXNlcykpOwogCiAgICAgc2NoZWR1bGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZSgp
OwpAQCAtMTg5NywxOSArMTg5NywxOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFj
dGl2ZVRleHRUCiAgICAgICAgIC8vIGNvcnJlY3RseSBpZGVudGlmaWVzIHRoZSB0eXBlIG9mIHRo
ZSBldmVudCwgaWYgdGhlIHN0YXJ0VGltZSBpcwogICAgICAgICAvLyBsZXNzIHRoYW4gdGhlIGVu
ZFRpbWUgaW4gdGhlIGN1ZS4KICAgICAgICAgaWYgKGV2ZW50VGFzay5zZWNvbmQtPnN0YXJ0VGlt
ZSgpID49IGV2ZW50VGFzay5zZWNvbmQtPmVuZFRpbWUoKSkgewotICAgICAgICAgICAgYXV0byBl
bnRlckV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW50ZXJFdmVudCwgZmFsc2Us
IGZhbHNlKTsKKyAgICAgICAgICAgIGF1dG8gZW50ZXJFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmVudGVyRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBlbnRlckV2ZW50LT5zZXRUYXJnZXQoZXZlbnRUYXNr
LnNlY29uZCk7CiAgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RG
TW92ZShlbnRlckV2ZW50KSk7CiAKLSAgICAgICAgICAgIGF1dG8gZXhpdEV2ZW50ID0gRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXhpdEV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAgICAg
ICAgYXV0byBleGl0RXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5leGl0RXZlbnQs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgICAg
ICAgICBleGl0RXZlbnQtPnNldFRhcmdldChldmVudFRhc2suc2Vjb25kKTsKICAgICAgICAgICAg
IG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV4aXRFdmVudCkpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVudDsKICAgICAgICAg
ICAgIGlmIChldmVudFRhc2suZmlyc3QgPT0gZXZlbnRUYXNrLnNlY29uZC0+c3RhcnRNZWRpYVRp
bWUoKSkKLSAgICAgICAgICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmVudGVyRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZXZlbnQgPSBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbnRlckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXhpdEV2ZW50LCBmYWxzZSwg
ZmFsc2UpOworICAgICAgICAgICAgICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuZXhpdEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8pOwogICAgICAgICAgICAgZXZlbnQtPnNldFRhcmdldChldmVudFRhc2suc2Vjb25kKTsKICAg
ICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7
CiAgICAgICAgIH0KQEAgLTE5MjIsMTQgKzE5MjIsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp1cGRhdGVBY3RpdmVUZXh0VAogICAgIC8vIDE1IC0gRm9yIGVhY2ggdGV4dCB0cmFjayBpbiBh
ZmZlY3RlZCB0cmFja3MsIGluIHRoZSBsaXN0IG9yZGVyLCBxdWV1ZSBhCiAgICAgLy8gdGFzayB0
byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGN1ZWNoYW5nZSBhdCB0aGUgVGV4dFRyYWNrIG9i
amVjdCwgYW5kLCAuLi4KICAgICBmb3IgKGF1dG8mIGFmZmVjdGVkVHJhY2sgOiBhZmZlY3RlZFRy
YWNrcykgewotICAgICAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y3VlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIGF1dG8gZXZlbnQgPSBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6
Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICAgICAgZXZlbnQtPnNldFRhcmdldChh
ZmZlY3RlZFRyYWNrKTsKICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdU
Rk1vdmUoZXZlbnQpKTsKIAogICAgICAgICAvLyAuLi4gaWYgdGhlIHRleHQgdHJhY2sgaGFzIGEg
Y29ycmVzcG9uZGluZyB0cmFjayBlbGVtZW50LCB0byB0aGVuIGZpcmUgYQogICAgICAgICAvLyBz
aW1wbGUgZXZlbnQgbmFtZWQgY3VlY2hhbmdlIGF0IHRoZSB0cmFjayBlbGVtZW50IGFzIHdlbGwu
CiAgICAgICAgIGlmIChpczxMb2FkYWJsZVRleHRUcmFjaz4oKmFmZmVjdGVkVHJhY2spKSB7Ci0g
ICAgICAgICAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY3VlY2hh
bmdlRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuY3VlY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5v
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBhdXRvIHRyYWNrRWxlbWVu
dCA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8TG9hZGFibGVUZXh0VHJhY2s+KCphZmZlY3RlZFRyYWNr
KS50cmFja0VsZW1lbnQoKSk7CiAgICAgICAgICAgICBBU1NFUlQodHJhY2tFbGVtZW50KTsKICAg
ICAgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodHJhY2tFbGVtZW50KTsKQEAgLTQzOTUsNyArNDM5
NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bGF5b3V0U2l6ZUNoYW5nZWQKICAgICBpZiAo
YXV0byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCkudmlldygpKSkgewogICAgICAg
ICBhdXRvIHRhc2sgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAg
ICAgICAgICAgICBpZiAoYXV0byByb290ID0gdXNlckFnZW50U2hhZG93Um9vdCgpKQotICAgICAg
ICAgICAgICAgIHJvb3QtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZSgicmVzaXplIiwgZmFs
c2UsIGZhbHNlKSk7CisgICAgICAgICAgICAgICAgcm9vdC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKCJyZXNpemUiLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8pKTsKICAgICAgICAgfTsKICAgICAgICAgZnJhbWVWaWV3LT5xdWV1ZVBvc3RMYXlvdXRD
YWxsYmFjayhXVEZNb3ZlKHRhc2spKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYxMiw3ICs2MTIsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNoZWNr
U25hcHNoCiAgICAgfQogICAgIAogICAgIC8vIE5vdGlmeSB0aGUgc2hhZG93IHJvb3QgdGhhdCB0
aGUgc2l6ZSBjaGFuZ2VkIHNvIHRoYXQgd2UgbWF5IHVwZGF0ZSB0aGUgb3ZlcmxheSBsYXlvdXQu
Ci0gICAgZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkucmVzaXplRXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgZW5zdXJl
VXNlckFnZW50U2hhZG93Um9vdCgpLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkucmVzaXplRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKIH0KICAgICAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJh
bWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IFVSTCYgdXJsKQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzYsNyArMTc2LDcgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZl
bgogICAgIEFTU0VSVCghaGF2ZUZpcmVkTG9hZEV2ZW50KCkpOwogICAgIHNldEhhdmVGaXJlZExv
YWRFdmVudCh0cnVlKTsKIAotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIFJlZjxFbGVtZW50PiBIVE1MU2NyaXB0RWxl
bWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihEb2N1bWVudCYg
dGFyZ2V0RG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw5ICsxNDIsNyBAQCB2b2lkIEhUTUxTbG90
RWxlbWVudDo6ZGlzcGF0Y2hTbG90Q2hhbmdlCiB7CiAgICAgbV9pblNpZ25hbFNsb3RMaXN0ID0g
ZmFsc2U7CiAKLSAgICBib29sIGJ1YmJsZXMgPSB0cnVlOwotICAgIGJvb2wgY2FuY2VsYWJsZSA9
IGZhbHNlOwotICAgIFJlZjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5zbG90Y2hhbmdlRXZlbnQsIGJ1YmJsZXMsIGNhbmNlbGFibGUpOworICAgIFJlZjxFdmVudD4g
ZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zbG90Y2hhbmdlRXZlbnQsIEV2ZW50
OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgIGV2ZW50LT5z
ZXRUYXJnZXQodGhpcyk7CiAgICAgZGlzcGF0Y2hFdmVudChldmVudCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0OTEwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIEhUTUxTb3VyY2VFbGVtZW50OjpjYW5jZWxQZW5k
aW5nRXJyCiB2b2lkIEhUTUxTb3VyY2VFbGVtZW50OjplcnJvckV2ZW50VGltZXJGaXJlZCgpCiB7
CiAgICAgTE9HKE1lZGlhLCAiSFRNTFNvdXJjZUVsZW1lbnQ6OmVycm9yRXZlbnRUaW1lckZpcmVk
IC0gJXAiLCB0aGlzKTsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlKSk7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CiB9CiAKIGJvb2wgSFRNTFNvdXJjZUVsZW1lbnQ6Omlz
VVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzAsOSArMTMwLDkgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBlbmRp
bmdFdgogewogICAgIEFTU0VSVF9VTlVTRUQoZXZlbnRTZW5kZXIsIGV2ZW50U2VuZGVyID09ICZz
dHlsZUxvYWRFdmVudFNlbmRlcigpKTsKICAgICBpZiAobV9sb2FkZWRTaGVldCkKLSAgICAgICAg
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNl
LCBmYWxzZSkpOworICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmxvYWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6
Ok5vKSk7CiAgICAgZWxzZQotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBkaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiB2b2lkIEhUTUxTdHlsZUVs
ZW1lbnQ6Om5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNvdXJjZXMoYm9vbCBl
cnJvck9jY3VycmVkKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OTAsNyArNDkwLDcgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0
aQogICAgIGNhY2hlU2VsZWN0aW9uKGNvbXB1dGVTZWxlY3Rpb25TdGFydCgpLCBjb21wdXRlU2Vs
ZWN0aW9uRW5kKCksIGNvbXB1dGVTZWxlY3Rpb25EaXJlY3Rpb24oKSk7CiAgICAgCiAgICAgaWYg
KHNob3VsZEZpcmVTZWxlY3RFdmVudCAmJiBtX2NhY2hlZFNlbGVjdGlvblN0YXJ0ICE9IG1fY2Fj
aGVkU2VsZWN0aW9uRW5kKQotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLnNlbGVjdEV2ZW50LCB0cnVlLCBmYWxzZSkpOworICAgICAgICBkaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlbGVjdEV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUcmFja0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRyYWNrRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw3ICsyNDcs
NyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmRpZENvbXBsZXRlTG9hZChMCiAKICAgICBpZiAo
c3RhdHVzID09IEZhaWx1cmUpIHsKICAgICAgICAgc2V0UmVhZHlTdGF0ZShIVE1MVHJhY2tFbGVt
ZW50OjpUUkFDS19FUlJPUik7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmRpZENvbXBs
ZXRlTG9hZChMCiAKICAgICAvLyAgICAgMi4gSWYgdGhlIGZpbGUgd2FzIHN1Y2Nlc3NmdWxseSBw
cm9jZXNzZWQsIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgbG9hZCBhdCB0aGUgCiAgICAgLy8g
ICAgICAgIHRyYWNrIGVsZW1lbnQuCi0gICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgIGRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpO
bywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogLy8gTk9URTogVGhlIHZhbHVlcyBp
biB0aGUgVGV4dFRyYWNrOjpSZWFkaW5lc3NTdGF0ZSBlbnVtIG11c3Qgc3RheSBpbiBzeW5jIHdp
dGggdGhvc2UgaW4gSFRNTFRyYWNrRWxlbWVudDo6UmVhZHlTdGF0ZS4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMy
LDcgKzUzMiw3IEBAIGJvb2wgTWVkaWFDb250cm9sbGVyOjpoYXNFbmRlZCgpIGNvbnN0CiAKIHZv
aWQgTWVkaWFDb250cm9sbGVyOjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnROYW1lKQogewotICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWUsIGZhbHNlLCB0cnVlKSk7CisgICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6OlllcykpOwogICAgIGlmICghbV9hc3luY0V2ZW50VGltZXIuaXNBY3RpdmUoKSkKICAgICAg
ICAgbV9hc3luY0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwCShyZXZpc2lv
biAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1XZWJHTENvbnRleHRFdmVudDo6V2ViR0xDb250ZXh0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJp
bmcmIHN0YXR1c01lc3NhZ2UpCitXZWJHTENvbnRleHRFdmVudDo6V2ViR0xDb250ZXh0RXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFi
bGUgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBzdGF0dXNNZXNzYWdlKQogICAgIDogRXZlbnQo
dHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAgICwgbV9zdGF0dXNNZXNzYWdlKHN0YXR1
c01lc3NhZ2UpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRl
eHRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29udGV4dEV2ZW50LmgJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJHTENvbnRleHRFdmVudCBmaW5hbCA6
IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHTENvbnRleHRFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBzdGF0dXNNZXNzYWdlKQorICAgIHN0YXRpYyBSZWY8
V2ViR0xDb250ZXh0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1
YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIHN0
YXR1c01lc3NhZ2UpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHTENv
bnRleHRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHN0YXR1c01lc3NhZ2UpKTsK
ICAgICB9CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBFdmVudEludGVyZmFjZSBldmVu
dEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFdlYkdMQ29udGV4
dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgY29uc3QgU3RyaW5nJiBzdGF0dXNNZXNzYWdlKTsKKyAgICBXZWJHTENvbnRleHRF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlLCBj
b25zdCBTdHJpbmcmIHN0YXR1c01lc3NhZ2UpOwogICAgIFdlYkdMQ29udGV4dEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgU3RyaW5nIG1f
c3RhdHVzTWVzc2FnZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTM4LDcgKzUzOCw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXMKICAgICAgICAgLy8gVGhlIEZyYW1lTG9hZGVyQ2xpZW50IG1p
Z2h0IGJsb2NrIGNyZWF0aW9uIG9mIGEgbmV3IFdlYkdMIGNvbnRleHQgZGVzcGl0ZSB0aGUgcGFn
ZSBzZXR0aW5nczsgaW4KICAgICAgICAgLy8gcGFydGljdWxhciwgaWYgV2ViR0wgY29udGV4dHMg
d2VyZSBsb3N0IG9uZSBvciBtb3JlIHRpbWVzIHZpYSB0aGUgR0xfQVJCX3JvYnVzdG5lc3MgZXh0
ZW5zaW9uLgogICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hbGxvd1dlYkdM
KGZyYW1lLT5zZXR0aW5ncygpLndlYkdMRW5hYmxlZCgpKSkgewotICAgICAgICAgICAgY2FudmFz
RWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlLCAiV2ViIHBh
Z2Ugd2FzIG5vdCBhbGxvd2VkIHRvIGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIikpOworICAgICAg
ICAgICAgY2FudmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yRXZlbnQsCisgICAgICAg
ICAgICAgICAgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcywg
IldlYiBwYWdlIHdhcyBub3QgYWxsb3dlZCB0byBjcmVhdGUgYSBXZWJHTCBjb250ZXh0LiIpKTsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKQEAgLTYwMSw4ICs2MDIs
MTAgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhcwogCiAgICAgYXV0
byBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRyaWJ1dGVzLCBob3N0V2lu
ZG93KTsKICAgICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KSB7Ci0gICAgICAgIGlmIChjYW52YXNFbGVtZW50KQotICAgICAgICAgICAgY2FudmFzRWxlbWVu
dC0+ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53
ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlLCAiQ291bGQgbm90IGNy
ZWF0ZSBhIFdlYkdMIGNvbnRleHQuIikpOworICAgICAgICBpZiAoY2FudmFzRWxlbWVudCkgewor
ICAgICAgICAgICAgY2FudmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yRXZlbnQsCisg
ICAgICAgICAgICAgICAgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6
OlllcywgIkNvdWxkIG5vdCBjcmVhdGUgYSBXZWJHTCBjb250ZXh0LiIpKTsKKyAgICAgICAgfQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTYwMTcsNyArNjAyMCw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGlzcGF0Y2gKICAgICBpZiAoIWNhbnZhcykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmPFdlYkdMQ29udGV4dEV2ZW50PiBldmVudCA9IFdl
YkdMQ29udGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGxvc3RFdmVu
dCwgZmFsc2UsIHRydWUsIGVtcHR5U3RyaW5nKCkpOworICAgIFJlZjxXZWJHTENvbnRleHRFdmVu
dD4gZXZlbnQgPSBXZWJHTENvbnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNv
bnRleHRsb3N0RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpZZXMsIGVtcHR5U3RyaW5nKCkpOwogICAgIGNhbnZhcy0+ZGlzcGF0Y2hFdmVudChldmVudCk7
CiAgICAgbV9yZXN0b3JlQWxsb3dlZCA9IGV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CiAgICAg
aWYgKG1fY29udGV4dExvc3RNb2RlID09IFJlYWxMb3N0Q29udGV4dCAmJiBtX3Jlc3RvcmVBbGxv
d2VkKQpAQCAtNjEwMyw3ICs2MTA2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjptYXliZVJlcwogICAgIHNldHVwRmxhZ3MoKTsKICAgICBpbml0aWFsaXplTmV3Q29udGV4dCgp
OwogICAgIGluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMoKTsKLSAgICBjYW52YXMtPmRpc3Bh
dGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250
ZXh0cmVzdG9yZWRFdmVudCwgZmFsc2UsIHRydWUsIGVtcHR5U3RyaW5nKCkpKTsKKyAgICBjYW52
YXMtPmRpc3BhdGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
d2ViZ2xjb250ZXh0cmVzdG9yZWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6OlllcywgZW1wdHlTdHJpbmcoKSkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmRpc3BhdGNoQ29udGV4dENoYW5nZWRFdmVudCgpCkBAIC02MTEyLDcg
KzYxMTUsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpc3BhdGNoCiAgICAg
aWYgKCFjYW52YXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhbnZhcy0+ZGlzcGF0Y2hFdmVu
dChXZWJHTENvbnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjaGFu
Z2VkRXZlbnQsIGZhbHNlLCB0cnVlLCBlbXB0eVN0cmluZygpKSk7CisgICAgY2FudmFzLT5kaXNw
YXRjaEV2ZW50KFdlYkdMQ29udGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29u
dGV4dGNoYW5nZWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6OlllcywgZW1wdHlTdHJpbmcoKSkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBVUkwgZG9jdW1lbnRVUkxGb3JTY3JpcHRF
eGVjdXRpb24KIAogaW5saW5lIFJlZjxFdmVudD4gY3JlYXRlU2NyaXB0TG9hZEV2ZW50KCkKIHsK
LSAgICByZXR1cm4gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwg
ZmFsc2UpOworICAgIHJldHVybiBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiB9CiAKIGJv
b2wgSFRNTFNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHkoY29uc3QgUGVuZGluZ1Nj
cmlwdCYgc2NyaXB0KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQu
Y3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNr
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBpbmxpbmUg
c3RkOjpvcHRpb25hbDxUcmFja0V2ZW50OjoKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
Ci1UcmFja0V2ZW50OjpUcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmPFRyYWNrQmFzZT4mJiB0cmFjaykKK1RyYWNr
RXZlbnQ6OlRyYWNrRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2Fu
QnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgUmVmPFRyYWNrQmFzZT4mJiB0cmFjaykK
ICAgICA6IEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAsIG1fdHJhY2so
Y29udmVydFRvVHJhY2tFdmVudFRyYWNrKFdURk1vdmUodHJhY2spKSkKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5oCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNyBAQCBjbGFzcyBUcmFja0V2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5UcmFja0V2ZW50KCk7CiAKLSAgICBzdGF0aWMgUmVmPFRyYWNrRXZl
bnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFJlZjxUcmFja0Jhc2U+JiYgdHJhY2spCisgICAgc3RhdGljIFJlZjxUcmFj
a0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgUmVmPFRyYWNrQmFzZT4mJiB0cmFjaykKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYWNrRXZlbnQodHlwZSwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHRyYWNrKSkpOwogICAgIH0KQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8VHJhY2tFdmVudFRyYWNrPiB0cmFjaygpIGNv
bnN0IHsgcmV0dXJuIG1fdHJhY2s7IH0KIAogcHJpdmF0ZToKLSAgICBUcmFja0V2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVm
PFRyYWNrQmFzZT4mJik7CisgICAgVHJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlLCBSZWY8VHJhY2tCYXNlPiYmKTsKICAgICBUcmFja0V2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW5pdCYmIGluaXRpYWxpemVyLCBJc1RydXN0
ZWQpOwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlk
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcAko
cmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBib29sIFRyYWNrTGlzdEJh
c2U6OmNvbnRhaW5zKFRyYWNrQmFzZSYgCiAKIHZvaWQgVHJhY2tMaXN0QmFzZTo6c2NoZWR1bGVU
cmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBSZWY8VHJhY2tCYXNlPiYm
IHRyYWNrKQogewotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChUcmFja0V2ZW50
OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgZmFsc2UsIFdURk1vdmUodHJhY2spKSk7CisgICAg
bV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgV1RGTW92
ZSh0cmFjaykpKTsKIH0KIAogdm9pZCBUcmFja0xpc3RCYXNlOjpzY2hlZHVsZUFkZFRyYWNrRXZl
bnQoUmVmPFRyYWNrQmFzZT4mJiB0cmFjaykKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFRyYWNr
TGlzdEJhc2U6OnNjaGVkdWxlQ2hhbmdlRXZlbnQoCiAgICAgLy8gV2hlbmV2ZXIgYSB0cmFjayBp
biBhIFZpZGVvVHJhY2tMaXN0IHRoYXQgd2FzIHByZXZpb3VzbHkgbm90IHNlbGVjdGVkIGlzCiAg
ICAgLy8gc2VsZWN0ZWQsIHRoZSB1c2VyIGFnZW50IG11c3QgcXVldWUgYSB0YXNrIHRvIGZpcmUg
YSBzaW1wbGUgZXZlbnQgbmFtZWQKICAgICAvLyBjaGFuZ2UgYXQgdGhlIFZpZGVvVHJhY2tMaXN0
IG9iamVjdC4KLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgIG1fYXN5bmNF
dmVudFF1ZXVlLmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jaGFuZ2VF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9
CiAKIGJvb2wgVHJhY2tMaXN0QmFzZTo6aXNDaGFuZ2VFdmVudFNjaGVkdWxlZCgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDIz
NDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTczMSw3ICs3MzEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9h
ZGluZ0FmdGVyWEZyCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFmdGVy
WEZyYW1lT3B0aW9uc0RlbmllZCgqbV9mcmFtZSwgaWRlbnRpZmllciwgKnRoaXMsIHJlc3BvbnNl
KTsKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5lbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hP
cmlnaW4pOwogICAgIGlmIChIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1f
ZnJhbWUtPm93bmVyRWxlbWVudCgpKQotICAgICAgICBvd25lckVsZW1lbnQtPmRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsK
KyAgICAgICAgb3duZXJFbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmxvYWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6Ok5vKSk7CiAKICAgICAvLyBUaGUgbG9hZCBldmVudCBtaWdodCBoYXZlIGRldGFjaGVkIHRo
aXMgZnJhbWUuIEluIHRoYXQgY2FzZSwgdGhlIGxvYWQgd2lsbCBhbHJlYWR5IGhhdmUgYmVlbiBj
YW5jZWxsZWQgZHVyaW5nIGRldGFjaC4KICAgICBpZiAoRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVy
ID0gdGhpcy0+ZnJhbWVMb2FkZXIoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1NSw3ICszMTU1LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6ZGlzcGF0Y2hVbmxvYWRFdmVudHMoVQogICAgICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjc3MAogCiAgICAgICAgICAgICBpZiAo
bV9mcmFtZS5kb2N1bWVudCgpLT5wYWdlQ2FjaGVTdGF0ZSgpID09IERvY3VtZW50OjpOb3RJblBh
Z2VDYWNoZSkgewotICAgICAgICAgICAgICAgIFJlZjxFdmVudD4gdW5sb2FkRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkudW5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAg
ICAgICAgICAgIFJlZjxFdmVudD4gdW5sb2FkRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkudW5sb2FkRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpObykpOwogICAgICAgICAgICAgICAgIC8vIFRoZSBEb2N1bWVudExvYWRlciAoYW5kIHRodXMg
aXRzIExvYWRUaW1pbmcpIG1pZ2h0IGdldCBkZXN0cm95ZWQKICAgICAgICAgICAgICAgICAvLyB3
aGlsZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQsIHNvIHByb3RlY3QgaXQgdG8gcHJldmVudCB3cml0
aW5nIHRoZSBlbmQKICAgICAgICAgICAgICAgICAvLyB0aW1lIGludG8gZnJlZWQgbWVtb3J5LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMzQ5MTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJy
b3JFdgogICAgICAgICByZXR1cm47CiAgICAgbV9oYXNQZW5kaW5nRXJyb3JFdmVudCA9IGZhbHNl
OwogICAgIGlmIChlbGVtZW50KCkuZG9jdW1lbnQoKS5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCi0g
ICAgICAgIGVsZW1lbnQoKS5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBlbGVtZW50KCkuZGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIAogICAgIC8vIE9ubHkgY29uc2lk
ZXIgdXBkYXRpbmcgdGhlIHByb3RlY3Rpb24gcmVmLWNvdW50IG9mIHRoZSBFbGVtZW50IGltbWVk
aWF0ZWx5IGJlZm9yZSByZXR1cm5pbmcKICAgICAvLyBmcm9tIHRoaXMgZnVuY3Rpb24gYXMgZG9p
bmcgc28gbWlnaHQgcmVzdWx0IGluIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGlzIEltYWdlTG9hZGVy
LgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2aXNpb24g
MjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05h
dmlnYXRpb25Qb2xpYwogICAgICAgICBpZiAobV9mcmFtZS5vd25lckVsZW1lbnQoKSkgewogICAg
ICAgICAgICAgLy8gRmlyZSBhIGxvYWQgZXZlbnQgKGV2ZW4gdGhvdWdoIHdlIHdlcmUgYmxvY2tl
ZCBieSBDU1ApIGFzIHRpbWluZyBhdHRhY2tzIHdvdWxkIG90aGVyd2lzZQogICAgICAgICAgICAg
Ly8gcmV2ZWFsIHRoYXQgdGhlIGZyYW1lIHdhcyBibG9ja2VkLiBUaGlzIHdheSwgaXQgbG9va3Mg
bGlrZSBhbnkgb3RoZXIgY3Jvc3Mtb3JpZ2luIHBhZ2UgbG9hZC4KLSAgICAgICAgICAgIG1fZnJh
bWUub3duZXJFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgICAgIG1fZnJhbWUub3duZXJF
bGVtZW50KCktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAg
ICAgICAgfQogICAgICAgICBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCB7IH0sIFNob3VsZENv
bnRpbnVlOjpObyk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2aXNp
b24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDcgKzM3NCw3IEBAIHN0YXRpYyBS
ZWY8RXZlbnQ+IGNyZWF0ZUFwcGxpY2F0aW9uQ2FjaGUKIHsKICAgICBpZiAoZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMoKS5wcm9ncmVzc0V2ZW50KQogICAgICAgICByZXR1cm4gUHJvZ3Jlc3NFdmVu
dDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZG9uZSwgdG90YWwpOwotICAgIHJldHVybiBFdmVu
dDo6Y3JlYXRlKGV2ZW50VHlwZSwgZmFsc2UsIGZhbHNlKTsKKyAgICByZXR1cm4gRXZlbnQ6OmNy
ZWF0ZShldmVudFR5cGUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpObyk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmRpc3BhdGNoRE9NRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGludCB0b3RhbCwgaW50IGRvbmUpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw3ICszMDcs
NyBAQCB2b2lkIERPTVdpbmRvdzo6ZGlzcGF0Y2hBbGxQZW5kaW5nVW5sb2FkCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICB3aW5kb3ctPmRpc3BhdGNoRXZlbnQoUGFnZVRyYW5zaXRp
b25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5wYWdlaGlkZUV2ZW50LCBmYWxzZSksIHdpbmRv
dy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgIHdpbmRvdy0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSwgd2luZG93LT5kb2N1
bWVudCgpKTsKKyAgICAgICAgd2luZG93LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLnVubG9hZEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pLCB3aW5kb3ctPmRvY3VtZW50KCkpOwogCiAgICAgICAgIHdpbmRvdy0+ZW5h
YmxlU3VkZGVuVGVybWluYXRpb24oKTsKICAgICB9CkBAIC0xOTkxLDcgKzE5OTEsNyBAQCBib29s
IERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zCiB2b2lkIERPTVdpbmRvdzo6bGFu
Z3VhZ2VzQ2hhbmdlZCgpCiB7CiAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1l
bnQoKSkKLSAgICAgICAgZG9jdW1lbnQtPmVucXVldWVXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5sYW5ndWFnZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAg
ICAgZG9jdW1lbnQtPmVucXVldWVXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5sYW5ndWFnZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKIH0KIAogdm9pZCBET01XaW5kb3c6OmRpc3BhdGNoTG9hZEV2ZW50KCkK
QEAgLTIwMDUsNyArMjAwNSw3IEBAIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaExvYWRFdmVudCgp
CiAgICAgaWYgKHNob3VsZE1hcmtMb2FkRXZlbnRUaW1lcykKICAgICAgICAgcHJvdGVjdGVkTG9h
ZGVyLT50aW1pbmcoKS5tYXJrTG9hZEV2ZW50U3RhcnQoKTsKIAotICAgIGRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpLCBkb2N1
bWVudCgpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxv
YWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSwg
ZG9jdW1lbnQoKSk7CiAKICAgICBpZiAoc2hvdWxkTWFya0xvYWRFdmVudFRpbWVzKQogICAgICAg
ICBwcm90ZWN0ZWRMb2FkZXItPnRpbWluZygpLm1hcmtMb2FkRXZlbnRFbmQoKTsKQEAgLTIwMTMs
NyArMjAxMyw3IEBAIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaExvYWRFdmVudCgpCiAgICAgLy8g
U2VuZCBhIHNlcGFyYXRlIGxvYWQgZXZlbnQgdG8gdGhlIGVsZW1lbnQgdGhhdCBvd25zIHRoaXMg
ZnJhbWUuCiAgICAgaWYgKGZyYW1lKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIG93bmVyID0gZnJh
bWUoKS0+b3duZXJFbGVtZW50KCkpCi0gICAgICAgICAgICBvd25lci0+ZGlzcGF0Y2hFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAg
ICAgICAgICAgb3duZXItPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
bG9hZEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
KTsKICAgICB9CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvYWRFdmVudEZpcmVk
KGZyYW1lKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNp
b24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NzIsNyArNDcyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGRpc3BhdGNo
U2VsZWN0U3RhcnQoTgogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+cmVuZGVyZXIoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuc2VsZWN0c3RhcnRFdmVudCwgdHJ1ZSwgdHJ1ZSk7CisgICAgYXV0byBldmVudCA9IEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlbGVjdHN0YXJ0RXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsKICAgICBub2RlLT5kaXNwYXRjaEV2
ZW50KGV2ZW50KTsKICAgICByZXR1cm4gIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CiB9CkBA
IC0yMjEzLDcgKzIyMTMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRXZlbnQo
Y29uCiAKICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJGbHVzaFRocm90dGxpbmdUZW1wb3JhcmlseUZv
ckludGVyYWN0aW9uKCk7CiAgICAgUmVmPE1vdXNlRXZlbnQ+IG1lID0gTW91c2VFdmVudDo6Y3Jl
YXRlKGV2ZW50VHlwZSwKLSAgICAgICAgdHJ1ZSwgdHJ1ZSwgZXZlbnQudGltZXN0YW1wKCkuYXBw
cm94aW1hdGVNb25vdG9uaWNUaW1lKCksICZtX2ZyYW1lLndpbmRvd1Byb3h5KCksCisgICAgICAg
IEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBldmVudC50
aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgJm1fZnJhbWUud2luZG93UHJv
eHkoKSwKICAgICAgICAgMCwgZXZlbnQuZ2xvYmFsUG9zaXRpb24oKS54KCksIGV2ZW50Lmdsb2Jh
bFBvc2l0aW9uKCkueSgpLCBldmVudC5wb3NpdGlvbigpLngoKSwgZXZlbnQucG9zaXRpb24oKS55
KCksCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgZXZlbnQubW92ZW1lbnREZWx0
YSgpLngoKSwgZXZlbnQubW92ZW1lbnREZWx0YSgpLnkoKSwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50U291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQg
RXZlbnRTb3VyY2U6OnNjaGVkdWxlUmVjb25uZWN0KCkKIHsKICAgICBtX3N0YXRlID0gQ09OTkVD
VElORzsKICAgICBtX2Nvbm5lY3RUaW1lci5zdGFydE9uZVNob3QoMV9tcyAqIG1fcmVjb25uZWN0
RGVsYXkpOwotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJy
b3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogdm9pZCBFdmVudFNvdXJjZTo6Y2xvc2UoKQpAQCAtMTk2
LDEzICsxOTYsMTMgQEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVucwog
CiAgICAgaWYgKCFyZXNwb25zZUlzVmFsaWQocmVzcG9uc2UpKSB7CiAgICAgICAgIG1fbG9hZGVy
LT5jYW5jZWwoKTsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpO
bywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIG1fZXZlbnRTdHJlYW1PcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwocmVz
cG9uc2UudXJsKCkpLnRvU3RyaW5nKCk7CiAgICAgbV9zdGF0ZSA9IE9QRU47Ci0gICAgZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkub3BlbkV2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0K
IAogdm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEV2ZW50U291cmNlOjphYm9ydENvbm5l
Y3Rpb25BdHRlbXB0CiAgICAgfQogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gQ0xPU0VEKTsKLSAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZh
bHNlLCBmYWxzZSkpOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6
Ok5vKSk7CiB9CiAKIHZvaWQgRXZlbnRTb3VyY2U6OnBhcnNlRXZlbnRTdHJlYW0oKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjM0OTEwKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzgsNyArMjc4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRpc3BhdGNoRXZlbnRzT25X
aW5kbwogCiAgICAgaWYgKCFmb2N1c2VkICYmIGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpKQog
ICAgICAgICBkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKS0+ZGlzcGF0Y2hCbHVyRXZlbnQobnVs
bHB0cik7Ci0gICAgZG9jdW1lbnQtPmRpc3BhdGNoV2luZG93RXZlbnQoRXZlbnQ6OmNyZWF0ZShm
b2N1c2VkID8gZXZlbnROYW1lcygpLmZvY3VzRXZlbnQgOiBldmVudE5hbWVzKCkuYmx1ckV2ZW50
LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkb2N1bWVudC0+ZGlzcGF0Y2hXaW5kb3dFdmVudChFdmVu
dDo6Y3JlYXRlKGZvY3VzZWQgPyBldmVudE5hbWVzKCkuZm9jdXNFdmVudCA6IGV2ZW50TmFtZXMo
KS5ibHVyRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpO
bykpOwogICAgIGlmIChmb2N1c2VkICYmIGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpKQogICAg
ICAgICBkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKS0+ZGlzcGF0Y2hGb2N1c0V2ZW50KG51bGxw
dHIsIEZvY3VzRGlyZWN0aW9uTm9uZSk7CiB9CkBAIC0zMzEsMTIgKzMzMSwxMiBAQCB2b2lkIEZv
Y3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEZyYW1lKEZyCiAgICAgLy8gTm93IHRoYXQgdGhlIGZy
YW1lIGlzIHVwZGF0ZWQsIGZpcmUgZXZlbnRzIGFuZCB1cGRhdGUgdGhlIHNlbGVjdGlvbiBmb2N1
c2VkIHN0YXRlcyBvZiBib3RoIGZyYW1lcy4KICAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUt
PnZpZXcoKSkgewogICAgICAgICBvbGRGcmFtZS0+c2VsZWN0aW9uKCkuc2V0Rm9jdXNlZChmYWxz
ZSk7Ci0gICAgICAgIG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAg
ICAgIG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgfQogCiAgICAgaWYgKG5ld0ZyYW1lICYmIG5ld0ZyYW1l
LT52aWV3KCkgJiYgaXNGb2N1c2VkKCkpIHsKICAgICAgICAgbmV3RnJhbWUtPnNlbGVjdGlvbigp
LnNldEZvY3VzZWQodHJ1ZSk7Ci0gICAgICAgIG5ld0ZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRj
aFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIGZhbHNl
LCBmYWxzZSkpOworICAgICAgICBuZXdGcmFtZS0+ZG9jdW1lbnQoKS0+ZGlzcGF0Y2hXaW5kb3dF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICB9CiAKICAgICBtX3BhZ2Uu
Y2hyb21lKCkuZm9jdXNlZEZyYW1lQ2hhbmdlZChuZXdGcmFtZS5nZXQoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMjMsNyArMzMyMyw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCgKIAogICAgIExPRyhFdmVu
dHMsICJGcmFtZVZpZXcgJXAgc2VuZFJlc2l6ZUV2ZW50SWZOZWVkZWQgc2VuZGluZyByZXNpemUg
ZXZlbnQsIHNpemUgJWR4JWQgKGNhblNlbmRSZXNpemVFdmVudFN5bmNocm9ub3VzbHkgJWQpIiwg
dGhpcywgY3VycmVudFNpemUud2lkdGgoKSwgY3VycmVudFNpemUuaGVpZ2h0KCksIGNhblNlbmRS
ZXNpemVFdmVudFN5bmNocm9ub3VzbHkpOwogCi0gICAgUmVmPEV2ZW50PiByZXNpemVFdmVudCA9
IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50LCBmYWxzZSwgZmFsc2UpOwor
ICAgIFJlZjxFdmVudD4gcmVzaXplRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5y
ZXNpemVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KTsKICAgICBpZiAoY2FuU2VuZFJlc2l6ZUV2ZW50U3luY2hyb25vdXNseSkKICAgICAgICAgZnJh
bWUoKS5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50KHJlc2l6ZUV2ZW50KTsKICAgICBl
bHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDcgKzE4OCw3IEBA
IHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc08KICAgICBmb3IgKGF1dG8m
IGZyYW1lIDogZnJhbWVzKSB7CiAgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmRpc3BhdGNoV2lu
ZG93RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCBmYWxzZSkpOworICAgICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGlzcGF0Y2hXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7
CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAkocmV2aXNp
b24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFBlcmZvcm1hbmNlOjpyZXNvdXJjZVRp
bWluZ0J1ZmZlckZ1CiAgICAgICAgIEFTU0VSVChtX2JhY2t1cFJlc291cmNlVGltaW5nQnVmZmVy
LmlzRW1wdHkoKSk7CiAKICAgICAgICAgbV9yZXNvdXJjZVRpbWluZ0J1ZmZlckZ1bGxGbGFnID0g
dHJ1ZTsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5y
ZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGxFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKKyAgICAgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZXNvdXJjZXRpbWluZ2J1ZmZl
cmZ1bGxFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpO
bykpOwogCiAgICAgICAgIGlmIChtX3Jlc291cmNlVGltaW5nQnVmZmVyRnVsbEZsYWcpIHsKICAg
ICAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBiYWNrdXBCdWZmZXIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzQ5
MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxl
cjo6ZW5xdWV1ZUV2ZW50CiB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZW5xdWV1ZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGlm
IChkb2N1bWVudCkKLSAgICAgICAgZG9jdW1lbnQtPmVucXVldWVEb2N1bWVudEV2ZW50KEV2ZW50
OjpjcmVhdGUodHlwZSwgdHJ1ZSwgZmFsc2UpKTsKKyAgICAgICAgZG9jdW1lbnQtPmVucXVldWVE
b2N1bWVudEV2ZW50KEV2ZW50OjpjcmVhdGUodHlwZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmNwcAkocmV2aXNpb24gMjM0OTEw
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4MCw5ICsxODAsNyBAQCB2b2lkIFZpc3VhbFZpZXdwb3J0OjplbnF1ZXVlUmVzaXpl
RXZlbnQoCiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGJ1
YmJsZXMgPSBmYWxzZTsKLSAgICBib29sIGNhbmNlbGFibGUgPSBmYWxzZTsKLSAgICBtX2ZyYW1l
LT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCkuZW5xdWV1ZVJlc2l6ZUV2ZW50KCp0aGlzLCBidWJi
bGVzLCBjYW5jZWxhYmxlKTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCku
ZW5xdWV1ZVJlc2l6ZUV2ZW50KCp0aGlzLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pOwogfQogCiB2b2lkIFZpc3VhbFZpZXdwb3J0OjplbnF1ZXVlU2Nyb2xs
RXZlbnQoKQpAQCAtMTkwLDkgKzE4OCw3IEBAIHZvaWQgVmlzdWFsVmlld3BvcnQ6OmVucXVldWVT
Y3JvbGxFdmVudCgKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJv
b2wgYnViYmxlcyA9IGZhbHNlOwotICAgIGJvb2wgY2FuY2VsYWJsZSA9IGZhbHNlOwotICAgIG1f
ZnJhbWUtPmRvY3VtZW50KCktPmV2ZW50UXVldWUoKS5lbnF1ZXVlU2Nyb2xsRXZlbnQoKnRoaXMs
IGJ1YmJsZXMsIGNhbmNlbGFibGUpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmV2ZW50UXVl
dWUoKS5lbnF1ZXVlU2Nyb2xsRXZlbnQoKnRoaXMsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVu
dDo6SXNDYW5jZWxhYmxlOjpObyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNyBAQCBSZWY8U3RvcmFnZUV2ZW50PiBTdG9yYWdlRXZlbnQ6OmNyZWF0
ZShjCiB9CiAKIFN0b3JhZ2VFdmVudDo6U3RvcmFnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0
cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBTdG9yYWdlKiBzdG9yYWdlQXJlYSkK
LSAgICA6IEV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSkKKyAgICA6IEV2ZW50KHR5cGUsIENhbkJ1
YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2tleShrZXkpCiAgICAgLCBtX29s
ZFZhbHVlKG9sZFZhbHVlKQogICAgICwgbV9uZXdWYWx1ZShuZXdWYWx1ZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAzLDcgKzYwMyw3IEBAIHZv
aWQgU1ZHRWxlbWVudDo6c2VuZFNWR0xvYWRFdmVudElmUG9zc2kKICAgICAgICAgaWYgKHNlbmRQ
YXJlbnRMb2FkRXZlbnRzKQogICAgICAgICAgICAgcGFyZW50ID0gY3VycmVudFRhcmdldC0+cGFy
ZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpOyAvLyBzYXZlIHRoZSBuZXh0IHBhcmVudCB0byBkaXNw
YXRjaCB0b28gaW5jYXNlIGRpc3BhdGNoaW5nIHRoZSBldmVudCBjaGFuZ2VzIHRoZSB0cmVlCiAg
ICAgICAgIGlmIChoYXNMb2FkTGlzdGVuZXIoY3VycmVudFRhcmdldC5nZXQoKSkpCi0gICAgICAg
ICAgICBjdXJyZW50VGFyZ2V0LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgICAgICBjdXJyZW50VGFyZ2V0
LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgRXZl
bnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgICAgIGN1
cnJlbnRUYXJnZXQgPSAocGFyZW50ICYmIHBhcmVudC0+aXNTVkdFbGVtZW50KCkpID8gc3RhdGlj
X3BvaW50ZXJfY2FzdDxTVkdFbGVtZW50PihwYXJlbnQpIDogUmVmUHRyPFNWR0VsZW1lbnQ+KCk7
CiAgICAgICAgIFNWR0VsZW1lbnQqIGVsZW1lbnQgPSBjdXJyZW50VGFyZ2V0LmdldCgpOwogICAg
ICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmlzT3V0ZXJtb3N0U1ZHU1ZHRWxlbWVudCgp
KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMzQ5
MTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw3ICszOSw3IEBAIFNWR0ltYWdlTG9hZGVyOjp+U1ZHSW1hZ2VMb2FkZXIoKSA9
IGRlZmEKIHZvaWQgU1ZHSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2ZW50KCkKIHsKICAgICBp
ZiAoaW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICBlbGVtZW50KCkuZGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2Up
KTsKKyAgICAgICAgZWxlbWVudCgpLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6Ok5vKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChkb3duY2FzdDxTVkdJbWFnZUVsZW1l
bnQ+KGVsZW1lbnQoKSkuZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpKQogICAgICAgICAgICAg
ZG93bmNhc3Q8U1ZHSW1hZ2VFbGVtZW50PihJbWFnZUxvYWRlcjo6ZWxlbWVudCgpKS5zZW5kU1ZH
TG9hZEV2ZW50SWZQb3NzaWJsZSh0cnVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgU1ZHVXNl
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGUKICAgICBBU1NFUlQoU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzU2NyaXB0QWxsb3dlZCgpKTsKICAgICBpbnZhbGlkYXRl
U2hhZG93VHJlZSgpOwogICAgIGlmIChyZXNvdXJjZS5lcnJvck9jY3VycmVkKCkpCi0gICAgICAg
IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFs
c2UsIGZhbHNlKSk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6Ok5vKSk7CiAgICAgZWxzZSBpZiAoIXJlc291cmNlLndhc0NhbmNlbGVkKCkpCiAgICAgICAg
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmRpc3BhdGNoTG9hZEV2ZW50KCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNw
cAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdT
TUlMRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMjIsNyArMTIyMiw3IEBAIHZvaWQg
U1ZHU01JTEVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW4KIHsKICAgICBBU1NFUlQoZXZlbnRT
ZW5kZXIgPT0gJnNtaWxCZWdpbkV2ZW50U2VuZGVyKCkgfHwgZXZlbnRTZW5kZXIgPT0gJnNtaWxF
bmRFdmVudFNlbmRlcigpKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9IGV2
ZW50U2VuZGVyLT5ldmVudFR5cGUoKTsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnRUeXBlLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVh
dGUoZXZlbnRUeXBlLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8pKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAkocmV2aXNpb24g
MjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKCkKICAg
ICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQgPSBjb250ZXh0ID8gY29udGV4dC0+c2Vzc2lvbklE
KCkgOiBQQUw6OlNlc3Npb25JRCgpOwogCiAgICAgaWYgKG1fc2NyaXB0TG9hZGVyLT5mYWlsZWQo
KSB8fCAhc2Vzc2lvbklELmlzVmFsaWQoKSkKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgdHJ1ZSkpOworICAgICAgICBk
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50
OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKICAgICBlbHNlIHsK
ICAgICAgICAgYm9vbCBpc09ubGluZSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJh
dGVneSgpLT5pc09uTGluZSgpOwogICAgICAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyA9IG1f
Y29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzID8gbV9jb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMudmFsdWUoKSA6IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
Y29udGVudFNlY3VyaXR5UG9saWN5KCktPnJlc3BvbnNlSGVhZGVycygpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAJKHJldmlzaW9u
IDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdp
bmdQcm94eTo6bm90aWZ5TmV0d29yawogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dFRhc2soW2lzT25saW5lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAg
ICAgICBhdXRvJiBnbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KTsKICAgICAgICAgZ2xvYmFsU2NvcGUuc2V0SXNPbmxpbmUoaXNPbmxpbmUpOwotICAgICAg
ICBnbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVu
dE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBmYWxzZSwg
ZmFsc2UpKTsKKyAgICAgICAgZ2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxp
bmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7
CiAgICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRl
bmRhYmxlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksOCArMzksOCBAQCBFeHRlbmRhYmxlRXZlbnQ6OkV4dGVuZGFibGVFdmVudChjb25zdCBB
CiB7CiB9CiAKLUV4dGVuZGFibGVFdmVudDo6RXh0ZW5kYWJsZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUpCi0gICAgOiBFdmVudCh0
eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlKQorRXh0ZW5kYWJsZUV2ZW50OjpFeHRlbmRhYmxlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNl
bGFibGUgY2FuY2VsYWJsZSkKKyAgICA6IEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFi
bGVFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9F
eHRlbmRhYmxlRXZlbnQuaAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIEV4dGVuZGFi
bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBFeHRlbmRhYmxlRXZlbnRJbml0Jiwg
SXNUcnVzdGVkKTsKLSAgICBFeHRlbmRhYmxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgYm9v
bCBidWJibGVzLCBib29sIGNhbmNlbGFibGUpOworICAgIEV4dGVuZGFibGVFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSk7CiAKICAgICB2b2lkIGFkZEV4
dGVuZExpZmV0aW1lUHJvbWlzZShSZWY8RE9NUHJvbWlzZT4mJik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VF
dmVudC5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyAr
NDgsNyBAQCBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50OjpFeHRlbmRhYmxlTWVzc2FnCiB9CiAKIEV4
dGVuZGFibGVNZXNzYWdlRXZlbnQ6OkV4dGVuZGFibGVNZXNzYWdlRXZlbnQoUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291
cmNlPiYmIHNvdXJjZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCi0gICAg
OiBFeHRlbmRhYmxlRXZlbnQoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwgZmFsc2UsIGZhbHNl
KQorICAgIDogRXh0ZW5kYWJsZUV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIENhbkJ1
YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkK
ICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAsIG1fbGFzdEV2ZW50SWQobGFzdEV2ZW50SWQp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXIuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyOjpzY2hlZHVsZVRhc2tUb1VwZGF0ZQogICAgICAgICBtX2RhdGEuc3Rh
dGUgPSBzdGF0ZTsKICAgICAgICAgaWYgKHN0YXRlICE9IFN0YXRlOjpJbnN0YWxsaW5nICYmICFt
X2lzU3RvcHBlZCkgewogICAgICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0FjdGl2aXR5Rm9yRXZl
bnREaXNwYXRjaCk7Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLnN0YXRlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICAgICAg
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50
LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHVwZGF0ZVBlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0Y2goKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2No
ZWR1bGVUYXMKICAgICAgICAgaWYgKG1faXNTdG9wcGVkKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29udHJv
bGxlcmNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb250cm9sbGVyY2hhbmdlRXZlbnQsIEV2ZW50OjpD
YW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogICAgIH0pOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb246OnNjaGVkdWxlCiAgICAgICAgIFJFR0lTVFJBVElPTl9SRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzY2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2ZW50OiBGaXJpbmcgdXBkYXRlZm91
bmQgZXZlbnQgZm9yIHJlZ2lzdHJhdGlvbiAlbGx1IiwgaWRlbnRpZmllcigpLnRvVUludDY0KCkp
OwogCiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0Y2gpOwot
ICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnVwZGF0ZWZv
dW5kRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLnVwZGF0ZWZvdW5kRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5v
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6bm90aWZ5TmV0CiAgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAg
ICAgICAgIGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpOwogICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Ci0gICAg
ICAgIGdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2
ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIGZhbHNl
LCBmYWxzZSkpOworICAgICAgICBnbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVh
dGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2Zm
bGluZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
KTsKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDIs
OCArMzAyLDEwIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNhbGxSZWFkeVN0YXRlQ2hhbmcKICAg
ICAvLyBDaGVjayB3aGV0aGVyIHNlbmRpbmcgbG9hZCBhbmQgbG9hZGVuZCBldmVudHMgYmVmb3Jl
IHNlbmRpbmcgcmVhZHlzdGF0ZWNoYW5nZSBldmVudCwgYXMgaXQgbWF5IGNoYW5nZSBtX2Vycm9y
L21fc3RhdGUgdmFsdWVzLgogICAgIGJvb2wgc2hvdWxkU2VuZExvYWRFdmVudCA9IChtX3N0YXRl
ID09IERPTkUgJiYgIW1fZXJyb3IpOwogCi0gICAgaWYgKG1fYXN5bmMgfHwgKG1fc3RhdGUgPD0g
T1BFTkVEIHx8IG1fc3RhdGUgPT0gRE9ORSkpCi0gICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRocm90
dGxlLmRpc3BhdGNoUmVhZHlTdGF0ZUNoYW5nZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLnJlYWR5c3RhdGVjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSwgbV9zdGF0ZSA9PSBET05F
ID8gRmx1c2hQcm9ncmVzc0V2ZW50IDogRG9Ob3RGbHVzaFByb2dyZXNzRXZlbnQpOworICAgIGlm
IChtX2FzeW5jIHx8IChtX3N0YXRlIDw9IE9QRU5FRCB8fCBtX3N0YXRlID09IERPTkUpKSB7Cisg
ICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlLmRpc3BhdGNoUmVhZHlTdGF0ZUNoYW5nZUV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlYWR5c3RhdGVjaGFuZ2VFdmVudCwgRXZl
bnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSwKKyAgICAgICAgICAg
IG1fc3RhdGUgPT0gRE9ORSA/IEZsdXNoUHJvZ3Jlc3NFdmVudCA6IERvTm90Rmx1c2hQcm9ncmVz
c0V2ZW50KTsKKyAgICB9CiAKICAgICBpZiAoc2hvdWxkU2VuZExvYWRFdmVudCkgewogICAgICAg
ICBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZS5kaXNwYXRjaFByb2dyZXNzRXZlbnQoZXZlbnROYW1l
cygpLmxvYWRFdmVudCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM0OTc2KQorKysgU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0w
OC0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXBsYWNl
IGNhbkJ1YmJsZSBhbmQgY2FuY2VsYWJsZSBib29sZWFucyBpbiBFdmVudCBieSBlbnVtIGNsYXNz
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODY5
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpu
YXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayk6CisKIDIwMTgtMDgtMTYgIENvbW1p
dCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIyMzQ5NTguCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNTUsNyAr
MTM1NSw4IEBAIHZvaWQgV2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWwKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgY29uc3QgaW50IHNpbmdsZUNsaWNrID0gMTsKLSAgICBSZWZQdHI8
TW91c2VFdmVudD4gbW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y2xpY2tFdmVudCwgdHJ1ZSwgdHJ1ZSwgTW9ub3RvbmljVGltZTo6bm93KCksIG51bGxwdHIsIHNp
bmdsZUNsaWNrLCBzY3JlZW5Qb2ludC54KCksIHNjcmVlblBvaW50LnkoKSwgZG9jdW1lbnRQb2lu
dC54KCksIGRvY3VtZW50UG9pbnQueSgpLAorICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBtb3VzZUV2
ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6
Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywKKyAgICAgICAgTW9ub3Rv
bmljVGltZTo6bm93KCksIG51bGxwdHIsIHNpbmdsZUNsaWNrLCBzY3JlZW5Qb2ludC54KCksIHNj
cmVlblBvaW50LnkoKSwgZG9jdW1lbnRQb2ludC54KCksIGRvY3VtZW50UG9pbnQueSgpLAogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIDAsIDAsCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE4
LTA4LTE2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxh
Y2UgY2FuQnViYmxlIGFuZCBjYW5jZWxhYmxlIGJvb2xlYW5zIGluIEV2ZW50IGJ5IGVudW0gY2xh
c3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4
NjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbToKKyAgICAgICAgKC1bV2ViUERGVmlld1Bs
YWNlaG9sZGVyIHNpbXVsYXRlQ2xpY2tPbkxpbmtUb1VSTDpdKToKKwogMjAxOC0wOC0xMyAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBh
IDEtYnl0ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5t
bQkocmV2aXNpb24gMjM0OTEwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9X
ZWJQREZWaWV3UGxhY2Vob2xkZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3OSw3ICs0NzksNyBA
QCAtICh2b2lkKXNpbXVsYXRlQ2xpY2tPbkxpbmtUb1VSTDooTlNVUkwgCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIENvbnN0cnVjdCBhbiBldmVudCB0byBzaW11bGF0ZSBhIGNsaWNrLgotICAg
IFJlZlB0cjxFdmVudD4gZXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNs
aWNrRXZlbnQsIHRydWUsIHRydWUsIE1vbm90b25pY1RpbWU6Om5vdygpLCAwLCAxLCAwLCAwLCAw
LCAwLAorICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6WWVzLCBNb25vdG9uaWNUaW1lOjpub3coKSwgMCwgMSwgMCwgMCwgMCwgMCwKICNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICAwLCAwLAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ5MTApCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0w
OC0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXBsYWNl
IGNhbkJ1YmJsZSBhbmQgY2FuY2VsYWJsZSBib29sZWFucyBpbiBFdmVudCBieSBlbnVtIGNsYXNz
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODY5
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJQREZWaWV3Lm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3IFBERlZpZXdXaWxsQ2xp
Y2tPbkxpbms6d2l0aFVSTDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dlYlZpZXcgX2Rpc3BhdGNoVW5sb2FkRXZlbnRdKToKKwogMjAxOC0wOC0xNSAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaGVzIGlu
IFF1aXAgdW5kZXIgX2RpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZSwgaW4gc2V0T2JqZWN0OmZv
cktleToKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZp
ZXcubW0JKHJldmlzaW9uIDIzNDkxMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUERGVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAzMCw3ICsxMDMwLDcgQEAgLSAo
dm9pZClQREZWaWV3V2lsbENsaWNrT25MaW5rOihQREZWaWV3IAogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgaWYgKGJ1dHRvbiAhPSBub0J1dHRvbikgewotICAgICAgICBldmVudCA9IE1vdXNl
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgdHJ1ZSwgdHJ1ZSwgTW9ub3Rv
bmljVGltZTo6bm93KCksIDAsIFtuc0V2ZW50IGNsaWNrQ291bnRdLCAwLCAwLCAwLCAwLAorICAg
ICAgICBldmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwg
RXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsIE1vbm90b25p
Y1RpbWU6Om5vdygpLCAwLCBbbnNFdmVudCBjbGlja0NvdW50XSwgMCwgMCwgMCwgMCwKICNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICAgICAgMCwgMCwKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjM0OTEw
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTQ0LDcgKzIxNDQsNyBAQCAtICh2b2lkKV9kaXNwYXRjaFVubG9hZEV2ZW50
CiAgICAgICAgIGlmIChjb3JlTWFpbkZyYW1lKSB7CiAgICAgICAgICAgICBEb2N1bWVudCAqZG9j
dW1lbnQgPSBjb3JlTWFpbkZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50KQotICAgICAgICAgICAgICAgIGRvY3VtZW50LT5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudC0+ZGlzcGF0Y2hXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS51bmxvYWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKSk7CiAgICAgICAgIH0KICAgICB9KTsKIH0K
</data>
<flag name="review"
          id="365151"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>