<?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>75989</bug_id>
          
          <creation_ts>2012-01-10 13:27:22 -0800</creation_ts>
          <short_desc>Hang opening movie that requires authentication</short_desc>
          <delta_ts>2012-01-10 14:51:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>levin+threading</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>533343</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-01-10 13:27:22 -0800</bug_when>
    <thetext>Hang opening movie that requires authentication</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533354</commentid>
    <comment_count>1</comment_count>
      <attachid>121901</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-01-10 13:54:14 -0800</bug_when>
    <thetext>Created attachment 121901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533390</commentid>
    <comment_count>2</comment_count>
      <attachid>121901</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-01-10 14:36:46 -0800</bug_when>
    <thetext>Comment on attachment 121901
Patch

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

&gt; Source/WebKit2/ChangeLog:10
&gt; +        1. When a keychain call is made, the web process send an asynchronous request message to the UI process,

Typo: send -&gt; sends.

&gt; Source/WebKit2/ChangeLog:13
&gt; +           avoiding the need to bounce calls to the main thread (since CoreIPC only allows sending
&gt; +           synchronous messages from the main thread). Incidentally, this fixes &lt;rdar://problem/9428041&gt;.
&gt; +        2. The Web Process now waits (on a condition variable) for a reply message to come in.

This could be made clearer that it is happening off the main thread.

&gt; Source/WebKit2/Shared/mac/SecKeychainItemRequestData.h:81
&gt; +    struct Attributes : public RefCounted&lt;Attributes&gt; {

This should be ThreadSafeRefCounted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533401</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-01-10 14:51:00 -0800</bug_when>
    <thetext>Committed r104633: &lt;http://trac.webkit.org/changeset/104633&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121901</attachid>
            <date>2012-01-10 13:54:14 -0800</date>
            <delta_ts>2012-01-10 14:36:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75989-20120110135412.patch</filename>
            <type>text/plain</type>
            <size>77066</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MjFjNWNiZWQ5NTY2ZjU0M2IwYWY4ODMyY2EzODU3NzczYTYwY2U2Li5jZGRlNzIwODQ3YWRmZGJm
N2I3M2I2YTg4YzNjMjFjMTAyZTI0M2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wMS0xMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIEhhbmcgb3BlbmluZyBtb3ZpZSB0aGF0IHJlcXVpcmVzIGF1dGhlbnRp
Y2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NTk4OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTYwMTkxNT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GdW5jdGlvbmFsLmg6CisgICAg
ICAgIEFkZCBmdW5jdGlvbiB3cmFwcGVyIGZvciBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhyZWUg
cGFyYW1ldGVycy4KKwogMjAxMi0wMS0xMCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3Vn
aEBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4IGZvbGxvd2luZyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5MzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyMDJmNzMzMDYx
MDE3OTE1YjI3NzJlMzg1ZWIxMjRmZTIzZTljNjVjLi41YjAyNWZlMzc0NjJiNTBhMWY2MTE1YTkx
NjUyYTkwZmI4YzI1YmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTg3IEBACiAyMDEyLTAxLTEw
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgSGFuZyBv
cGVuaW5nIG1vdmllIHRoYXQgcmVxdWlyZXMgYXV0aGVudGljYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTg5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIHRoZSB3YXkgdGhlIGtleWNo
YWluIGNhbGxzIGFyZSBwcm9jZXNzZWQgdG8gYXZvaWQgZGVhZGxvY2tzOgorCisgICAgICAgIDEu
IFdoZW4gYSBrZXljaGFpbiBjYWxsIGlzIG1hZGUsIHRoZSB3ZWIgcHJvY2VzcyBzZW5kIGFuIGFz
eW5jaHJvbm91cyByZXF1ZXN0IG1lc3NhZ2UgdG8gdGhlIFVJIHByb2Nlc3MsCisgICAgICAgICAg
IGF2b2lkaW5nIHRoZSBuZWVkIHRvIGJvdW5jZSBjYWxscyB0byB0aGUgbWFpbiB0aHJlYWQgKHNp
bmNlIENvcmVJUEMgb25seSBhbGxvd3Mgc2VuZGluZworICAgICAgICAgICBzeW5jaHJvbm91cyBt
ZXNzYWdlcyBmcm9tIHRoZSBtYWluIHRocmVhZCkuIEluY2lkZW50YWxseSwgdGhpcyBmaXhlcyA8
cmRhcjovL3Byb2JsZW0vOTQyODA0MT4uCisgICAgICAgIDIuIFRoZSBXZWIgUHJvY2VzcyBub3cg
d2FpdHMgKG9uIGEgY29uZGl0aW9uIHZhcmlhYmxlKSBmb3IgYSByZXBseSBtZXNzYWdlIHRvIGNv
bWUgaW4uCisgICAgICAgIDMuIFRoZSBVSSBwcm9jZXNzIGhhbmRsZXMgdGhlIGluY29taW5nIG1l
c3NhZ2UgcmVxdWVzdCBtZXNzYWdlIG9uIHRoZSBjb25uZWN0aW9uIHdvcmsgcXVldWUgYW5kIHVz
ZXMKKyAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMgdG8gYSBnbG9iYWwgZGlzcGF0Y2ggcXVldWUg
d2hlcmUgdGhlIGtleWNoYWluIGNhbGwgaXMgbWFkZS4KKyAgICAgICAgICAgV2UgdXNlIGEgZ2xv
YmFsIHF1ZXVlIHRvIHByZXZlbnQgdGhlIGNvbm5lY3Rpb24gd29yayBxdWV1ZSBmcm9tIGJsb2Nr
aW5nIG9uIHRoZSBjYWxsLgorICAgICAgICA0LiBUaGUgVUkgcHJvY2VzcyB0aGVuIHNlbmRzIGFu
IGFzeW5jaHJvbm91cyByZXBseSBtZXNzYWdlIGJhY2sgdG8gdGhlIHdlYiBwcm9jZXNzLiBUaGlz
IG1lc3NhZ2UgaXMgc2VudCBmcm9tCisgICAgICAgICAgIHRoZSBnbG9iYWwgZGlzcGF0Y2ggcXVl
dWUuCisgICAgICAgIDUuIFRoZSBXZWIgUHJvY2VzcyBoYW5kbGVzIHRoZSByZXBseSBtZXNzYWdl
IG9uIHRoZSBjb25uZWN0aW9uIHF1ZXVlLCBhZGRzIHRoZSByZXBseSB0byBhIG1hcCBhbmQgc2ln
bmFscworICAgICAgICAgICB0aGUgY29uZGl0aW9uIHZhcmlhYmxlIHRoYXQgdGhlIHdlYiBwcm9j
ZXNzIGlzIHdhaXRpbmcgb24gYW5kIHRoZSB0aHJlYWQgdGhhdCBtYWRlIHRoZSBrZXljaGFpbiBj
YWxsCisgICAgICAgICAgIGNhbiByZXN1bWUgZXhlY3V0aW9uLgorCisgICAgICAgICogU2hhcmVk
L21hYy9TZWNJdGVtUmVxdWVzdERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZWNJdGVtUmVx
dWVzdERhdGE6OlNlY0l0ZW1SZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNlY0l0ZW1S
ZXF1ZXN0RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2VjSXRlbVJlcXVlc3REYXRh
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMvU2VjSXRlbVJlcXVlc3REYXRhLmg6Cisg
ICAgICAgIChXZWJLaXQ6OlNlY0l0ZW1SZXF1ZXN0RGF0YTo6dHlwZSk6CisgICAgICAgIEFkZCBh
IHR5cGUgdG8gU2VjSXRlbVJlcXVlc3REYXRhIGFuZCBlbmNvZGUvZGVjb2RlIGl0LgorCisgICAg
ICAgICogU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VEYXRhLmg6CisgICAgICAgIChXZWJLaXQ6
OlNlY0l0ZW1SZXNwb25zZURhdGE6OnJlc3VsdE9iamVjdCk6CisgICAgICAgIE1ha2UgdGhpcyBy
ZXR1cm4gYSByZWZlcmVuY2Ugc28gd2UgY2FuIGNhbGwgbGVha1JlZigpIG9uIGl0LgorCisgICAg
ICAgICogU2hhcmVkL21hYy9TZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhOjpTZWNLZXljaGFpbkl0ZW1SZXF1
ZXN0RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhOjp+
U2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZWNLZXljaGFp
bkl0ZW1SZXF1ZXN0RGF0YTo6YXR0cmlidXRlTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlNlY0tl
eWNoYWluSXRlbVJlcXVlc3REYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpTZWNLZXlj
aGFpbkl0ZW1SZXF1ZXN0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1NlY0tl
eWNoYWluSXRlbVJlcXVlc3REYXRhLmg6CisgICAgICAgIChXZWJLaXQ6OlNlY0tleWNoYWluSXRl
bVJlcXVlc3REYXRhOjp0eXBlKToKKyAgICAgICAgQWRkIGEgdHlwZSwgYW5kIHB1dCB0aGUgT3du
UHRyIGFuZCBPd25BcnJheVB0ciBpbiBhIFJlZkNvdW50ZWQgc3RydWN0IHNvIHdlIGNhbgorICAg
ICAgICBjb3JyZWN0bHkgY29weSB0aGlzIG9iamVjdC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIERv
bid0IG9wZW4gdGhlIGNvbm5lY3Rpb24gaGVyZSwgdGhlIFdlYlByb2Nlc3NQcm94eSBvYmplY3Qg
bmVlZHMgdG8gYWRkIGl0c2VsZiBhcyBhIHF1ZXVlIGNsaWVudCBiZWZvcmUgb3BlbmluZy4KKyAg
ICAKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaXNjb25uZWN0KToKKyAgICAgICAgUmVtb3ZlIHRoZSBX
ZWJQcm9jZXNzUHJveHkgb2JqZWN0IGZyb20gdGhlIGxpc3Qgb2YgY29ubmVjdGlvbiBxdWV1ZSBj
bGllbnRzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1l
c3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUpOgorICAgICAgICBDYWxsIGRpZFJlY2VpdmVXZWJQ
cm9jZXNzUHJveHlNZXNzYWdlT25Db25uZWN0aW9uV29ya1F1ZXVlLgorCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgQWRkIHRo
ZSBXZWJQcm9jZXNzUHJveHkgYXMgYSBxdWV1ZSBjbGllbnQgYW5kIG9wZW4gdGhlIGNvbm5lY3Rp
b24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIFdl
YlByb2Nlc3NQcm94eSBzaG91bGQgaW5oZXJpdCBmcm9tIENvcmVJUEM6OkNvbm5lY3Rpb246OlF1
ZXVlQ2xpZW50LiBSZXBsYWNlIGFsbCBpbmRpdmlkdWFsIGtleWNoYWluCisgICAgICAgIGhhbmRs
ZXIgZnVuY3Rpb25zIHdpdGggdHdvIGdlbmVyaWMgZnVuY3Rpb25zLCBzZWNJdGVtUmVxdWVzdCBh
bmQgc2VjS2V5Y2hhaW5JdGVtUmVxdWVzdC4KKyAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICBSZXBsYWNlIGluZGl2aWR1YWwga2V5
Y2hhaW4gbWVzc2FnZXMgd2l0aCBTZWNJdGVtUmVxdWVzdCBhbmQgU2VjS2V5Y2hhaW5JdGVtUmVx
dWVzdCBtZXNzYWdlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpoYW5kbGVTZWNJdGVtUmVxdWVzdCk6CisgICAgICAg
IENhbGwgdGhlIHJpZ2h0IFNlY0l0ZW0gZnVuY3Rpb24gZGVwZW5kaW5nIG9uIHRoZSByZXF1ZXN0
IHR5cGUgYW5kIHNlbmQgYmFjayB0aGUgcmVzdWx0LgorCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6c2VjSXRlbVJlcXVlc3QpOgorICAgICAgICBEaXNwYXRjaCBoYW5kbGVTZWNJ
dGVtUmVxdWVzdCBvbiBhIGdsb2JhbCBkaXNwYXRjaCBxdWV1ZS4KKworICAgICAgICAoV2ViS2l0
OjpoYW5kbGVTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0KToKKyAgICAgICAgQ2FsbCB0aGUgcmlnaHQg
U2VjS2V5Y2hhaW5JdGVtIGZ1bmN0aW9uIGRlcGVuZGluZyBvbiB0aGUgcmVxdWVzdCB0eXBlIGFu
ZCBzZW5kIGJhY2sgdGhlIHJlc3VsdC4KKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6c2VjS2V5Y2hhaW5JdGVtUmVxdWVzdCk6CisgICAgICAgIERpc3BhdGNoIGhh
bmRsZVNlY0tleWNoYWluSXRlbVJlcXVlc3Qgb24gYSBnbG9iYWwgZGlzcGF0Y2ggcXVldWUuCisg
ICAgICAgIAorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgVXBkYXRlIGZvciBhZGRlZC9yZW1vdmVkIGZpbGVzLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIEFkZCBzZWNJdGVtUmVzcG9uc2UgYW5kIHNlY0tl
eWNoYWluSXRlbVJlc3BvbnNlIG1lc3NhZ2UgaGFuZGxlcnMuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgIEFkZCBTZWNJdGVtUmVzcG9uc2Ug
YW5kIFNlY0tleWNoYWluSXRlbVJlc3BvbnNlIG1lc3NhZ2VzLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9tYWMvQ29yZUlQQ0NsaWVudFJ1bkxvb3AuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL21h
Yy9Db3JlSVBDQ2xpZW50UnVuTG9vcC5tbToKKyAgICAgICAgVGhpcyBpcyBubyBsb25nZXIgbmVl
ZGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvS2V5Y2hhaW5JdGVtU2hpbU1ldGhvZHMu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9LZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5tbToK
KyAgICAgICAgKFdlYktpdDo6bWFuYWdlZEF0dHJpYnV0ZUxpc3RzKToKKyAgICAgICAgTWFrZSB0
aGlzIGFuIGF0b21pY2FsbHkgaW5pdGlhbGl6ZWQgc3RhdGljLgorCisgICAgICAgIChXZWJLaXQ6
Om1hbmFnZWRBdHRyaWJ1dGVMaXN0c011dGV4KToKKyAgICAgICAgQWRkIGFuIGF0b21pY2FsbHkg
aW5pdGlhbGl6ZWQgbXV0ZXguCisKKyAgICAgICAgKFdlYktpdDo6YWxsb2NhdGVBdHRyaWJ1dGVM
aXN0Q29udGVudHMpOgorICAgICAgICBVc2UgdGhlIG1hbmFnZWRBdHRyaWJ1dGVMaXN0c011dGV4
IHRvIG1ha2UgdGhpcyBmdW5jdGlvbiBjYWxsYWJsZSBmcm9tIGFueSB0aHJlYWQuCisKKyAgICAg
ICAgKFdlYktpdDo6bWFuYWdlZEtleWNoYWluSXRlbUNvbnRlbnRzKToKKyAgICAgICAgTWFrZSB0
aGlzIGFuIGF0b21pY2FsbHkgaW5pdGlhbGl6ZWQgc3RhdGljLgorICAgICAgICAKKyAgICAgICAg
KFdlYktpdDo6bWFuYWdlZEtleWNoYWluSXRlbUNvbnRlbnRzTXV0ZXgpOgorICAgICAgICBBZGQg
YW4gYXRvbWljYWxseSBpbml0aWFsaXplZCBtdXRleC4KKworICAgICAgICAoV2ViS2l0OjphbGxv
Y2F0ZUtleWNoYWluSXRlbUNvbnRlbnREYXRhKToKKyAgICAgICAgVXNlIHRoZSBtYW5hZ2VkQXR0
cmlidXRlTGlzdHNNdXRleCB0byBtYWtlIHRoaXMgZnVuY3Rpb24gY2FsbGFibGUgZnJvbSBhbnkg
dGhyZWFkLgorCisgICAgICAgIChXZWJLaXQ6OndlYkZyZWVBdHRyaWJ1dGVMaXN0Q29udGVudCk6
CisgICAgICAgIFVzZSBsb2NraW5nIHNvIHRoaXMgY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJl
YWQuCisKKyAgICAgICAgKFdlYktpdDo6d2ViRnJlZUtleWNoYWluSXRlbUNvbnRlbnQpOgorICAg
ICAgICBEaXR0by4KKworICAgICAgICAoV2ViS2l0OjpyZXNwb25zZU1hcCk6CisgICAgICAgIEFk
ZCByZXNwb25zZU1hcCB0aHJlYWQtc2FmZSBzaW5nbGV0b24gZm9yIGhvbGRpbmcgaW5jb21pbmcg
cmVzcG9uc2VzLgorCisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlU2VjS2V5Y2hhaW5JdGVtUmVx
dWVzdElEKToKKyAgICAgICAgUmV0dXJuIGEgdW5pcXVlIGl0ZW0gcmVxdWVzdCBpZCwgdXNpbmcg
T1NBdG9taWNJbmNyZW1lbnQ2NEJhcnJpZXIgZm9yIGF0b21pY2l0eS4KKworICAgICAgICAoV2Vi
S2l0OjpkaWRSZWNlaXZlU2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2UpOgorICAgICAgICBQYXNzIHRo
ZSByZXNwb25zZSBvdmVyIHRoZSByZXNwb25zZSBtYXAuCisKKyAgICAgICAgKFdlYktpdDo6c2Vu
ZFNlcUtleWNoYWluSXRlbVJlcXVlc3QpOgorICAgICAgICBTZW5kIGEgcmVxdWVzdCBtZXNzYWdl
IGFuZCB3YWl0IGZvciBhIHJlc3BvbnNlIHVzaW5nIFJlc3BvbnNlTWFwOjp3YWl0Rm9yUmVzcG9u
c2UuCisKKyAgICAgICAgKFdlYktpdDo6d2ViU2VjS2V5Y2hhaW5JdGVtQ29weUNvbnRlbnQpOgor
ICAgICAgICBTZW5kIGEgcmVxdWVzdCB1c2luZyBzZW5kU2VxS2V5Y2hhaW5JdGVtUmVxdWVzdC4K
KworICAgICAgICAoV2ViS2l0Ojp3ZWJTZWNLZXljaGFpbkl0ZW1DcmVhdGVGcm9tQ29udGVudCk6
CisgICAgICAgIERpdHRvLgorCisgICAgICAgIChXZWJLaXQ6OndlYlNlY0tleWNoYWluSXRlbU1v
ZGlmeUNvbnRlbnQpOgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvbWFj
L0tleWNoYWluU2hpbVJlc3BvbnNlTWFwLmg6CisgICAgICAgIE5ldyB0aHJlYWQtc2FmZSBoZWxw
ZXIgY2xhc3MgdGhhdCBzdG9yZXMgYSBtYXAgb2YgcmVzcG9uc2VzIGFuZCBsZXRzIGNsaWVudCB3
YWl0IGZvciBhIHJlc3BvbnNlCisgICAgICAgIHdpdGggYSBnaXZlbiBJRC4KKworICAgICAgICAo
S2V5Y2hhaW5TaGltUmVzcG9uc2VNYXA6OndhaXRGb3JSZXNwb25zZSk6CisgICAgICAgIFdhaXQg
dW50aWwgdGhlIHJlc3BvbnNlIGlzIGF2YWlsYWJsZSBpbiB0aGUgaGFzaCBtYXAsIHRoZW4gcmV0
dXJuIGl0LgorCisgICAgICAgIChLZXljaGFpblNoaW1SZXNwb25zZU1hcDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgQWRkIHRoZSByZXNwb25zZSB0byB0aGUgaGFzaCBtYXAgYW5kIHNp
Z25hbCB0aGUgY29uZGl0aW9uIHZhcmlhYmxlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMv
U2VjSXRlbVNoaW1NZXRob2RzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvU2VjSXRlbVNo
aW1NZXRob2RzLm1tOgorICAgICAgICAoV2ViS2l0OjpyZXNwb25zZU1hcCk6CisgICAgICAgIEFk
ZCByZXNwb25zZU1hcCB0aHJlYWQtc2FmZSBzaW5nbGV0b24gZm9yIGhvbGRpbmcgaW5jb21pbmcg
cmVzcG9uc2VzLgorCisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlU2VjSXRlbVJlcXVlc3RJRCk6
CisgICAgICAgIFJldHVybiBhIHVuaXF1ZSBpdGVtIHJlcXVlc3QgaWQsIHVzaW5nIE9TQXRvbWlj
SW5jcmVtZW50NjRCYXJyaWVyIGZvciBhdG9taWNpdHkuCisKKyAgICAgICAgKFdlYktpdDo6ZGlk
UmVjZWl2ZVNlY0l0ZW1SZXNwb25zZSk6CisgICAgICAgIFBhc3MgdGhlIHJlc3BvbnNlIG92ZXIg
dGhlIHJlc3BvbnNlIG1hcC4KKworICAgICAgICAoV2ViS2l0OjpzZW5kU2VxSXRlbVJlcXVlc3Qp
OgorICAgICAgICBTZW5kIGEgcmVxdWVzdCBtZXNzYWdlIGFuZCB3YWl0IGZvciBhIHJlc3BvbnNl
IHVzaW5nIFJlc3BvbnNlTWFwOjp3YWl0Rm9yUmVzcG9uc2UuCisKKyAgICAgICAgKFdlYktpdDo6
d2ViU2VjSXRlbUNvcHlNYXRjaGluZyk6CisgICAgICAgIFNlbmQgYSByZXF1ZXN0IHVzaW5nIHNl
bmRTZXFJdGVtUmVxdWVzdC4KKworICAgICAgICAoV2ViS2l0Ojp3ZWJTZWNJdGVtQWRkKToKKyAg
ICAgICAgRGl0dG8uCisKKyAgICAgICAgKFdlYktpdDo6d2ViU2VjSXRlbVVwZGF0ZSk6CisgICAg
ICAgIERpdHRvLgorCisgICAgICAgIChXZWJLaXQ6OndlYlNlY0l0ZW1EZWxldGUpOgorICAgICAg
ICBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNlY0l0ZW1SZXNwb25zZSk6CisgICAgICAgIENh
bGwgZGlkUmVjZWl2ZVNlY0l0ZW1SZXNwb25zZS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpzZWNLZXljaGFpbkl0ZW1SZXNwb25zZSk6CisgICAgICAgIENhbGwgZGlkUmVjZWl2ZVNl
Y0tleWNoYWluSXRlbVJlc3BvbnNlLgorCisyMDEyLTAxLTEwICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CisKICAgICAgICAgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZSBt
ZXNzYWdlcyBzaG91bGQgaGF2ZSBhIENvbm5lY3Rpb24gcGFyYW1ldGVyCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk4NgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Z1bmN0aW9uYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvRnVuY3Rpb25hbC5oCmluZGV4IDg2ZDYyMDNjZjE1ODc3YjhmNzcwMDFmZDc3YzM3
ZDgwNTI3MDVhZWMuLmJkMGYzZTI4Mjk3NjQzYjQ3MmQ1YzlmYTQwMDE4NmEzYTU1NmM0ODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRnVuY3Rpb25hbC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRnVuY3Rpb25hbC5oCkBAIC0xMzYsNiArMTM2LDI2IEBA
IHByaXZhdGU6CiAgICAgUiAoKm1fZnVuY3Rpb24pKFAxLCBQMik7CiB9OwogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBSLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzPgorY2xhc3Mg
RnVuY3Rpb25XcmFwcGVyPFIgKCopKFAxLCBQMiwgUDMpPiB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBSIFJlc3VsdFR5cGU7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJh
bWV0ZXIgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihSICgqZnVuY3Rp
b24pKFAxLCBQMiwgUDMpKQorICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgewor
ICAgIH0KKworICAgIFIgb3BlcmF0b3IoKShQMSBwMSwgUDIgcDIsIFAzIHAzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fZnVuY3Rpb24ocDEsIHAyLCBwMyk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFIgKCptX2Z1bmN0aW9uKShQMSwgUDIsIFAzKTsKK307CisKIHRlbXBsYXRlPHR5cGVuYW1l
IFIsIHR5cGVuYW1lIEM+CiBjbGFzcyBGdW5jdGlvbldyYXBwZXI8UiAoQzo6KikoKT4gewogcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVxdWVz
dERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVxdWVzdERhdGEu
Y3BwCmluZGV4IDRhYTQwNjZhN2E1NGM1OTI5ZDMzMDViMTNjMWEyMWY0YWY0YjkxOGMuLmFhMWM0
NTkzMmIwNjFiODk3YzVlOTdlNTgzMmM3NmUyNmY1NGJhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJlcXVlc3REYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAKQEAgLTMyLDIyICszMiwyNyBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFNlY0l0ZW1SZXF1ZXN0RGF0YTo6U2VjSXRlbVJlcXVl
c3REYXRhKCkKKyAgICA6IG1fdHlwZShJbnZhbGlkKQogewogfQogCi1TZWNJdGVtUmVxdWVzdERh
dGE6OlNlY0l0ZW1SZXF1ZXN0RGF0YShDRkRpY3Rpb25hcnlSZWYgcXVlcnkpCi0gICAgOiBtX3F1
ZXJ5RGljdGlvbmFyeShxdWVyeSkKK1NlY0l0ZW1SZXF1ZXN0RGF0YTo6U2VjSXRlbVJlcXVlc3RE
YXRhKFR5cGUgdHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5KQorICAgIDogbV90eXBlKHR5cGUp
CisgICAgLCBtX3F1ZXJ5RGljdGlvbmFyeShxdWVyeSkKIHsKIH0KIAotU2VjSXRlbVJlcXVlc3RE
YXRhOjpTZWNJdGVtUmVxdWVzdERhdGEoQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5LCBDRkRpY3Rpb25h
cnlSZWYgYXR0cmlidXRlc1RvTWF0Y2gpCi0gICAgOiBtX3F1ZXJ5RGljdGlvbmFyeShxdWVyeSkK
K1NlY0l0ZW1SZXF1ZXN0RGF0YTo6U2VjSXRlbVJlcXVlc3REYXRhKFR5cGUgdHlwZSwgQ0ZEaWN0
aW9uYXJ5UmVmIHF1ZXJ5LCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlc1RvTWF0Y2gpCisgICAg
OiBtX3R5cGUodHlwZSkKKyAgICAsIG1fcXVlcnlEaWN0aW9uYXJ5KHF1ZXJ5KQogICAgICwgbV9h
dHRyaWJ1dGVzVG9NYXRjaChhdHRyaWJ1dGVzVG9NYXRjaCkKIHsKIH0KIAogdm9pZCBTZWNJdGVt
UmVxdWVzdERhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNv
bnN0CiB7CisgICAgZW5jb2Rlci0+ZW5jb2RlRW51bShtX3R5cGUpOworCiAgICAgQ29yZUlQQzo6
ZW5jb2RlKGVuY29kZXIsIG1fcXVlcnlEaWN0aW9uYXJ5LmdldCgpKTsKIAogICAgIGVuY29kZXIt
PmVuY29kZUJvb2wobV9hdHRyaWJ1dGVzVG9NYXRjaC5nZXQoKSk7CkBAIC01Nyw2ICs2Miw5IEBA
IHZvaWQgU2VjSXRlbVJlcXVlc3REYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyKSBjb25zdAogCiBib29sIFNlY0l0ZW1SZXF1ZXN0RGF0YTo6ZGVjb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgU2VjSXRlbVJlcXVlc3REYXRhJiBzZWNJdGVt
UmVxdWVzdERhdGEpCiB7ICAgIAorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShzZWNJdGVt
UmVxdWVzdERhdGEubV90eXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFD
b3JlSVBDOjpkZWNvZGUoZGVjb2Rlciwgc2VjSXRlbVJlcXVlc3REYXRhLm1fcXVlcnlEaWN0aW9u
YXJ5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvU2VjSXRlbVJlcXVlc3REYXRhLmgKaW5kZXggMWUyMWQ1ODNmZTU1YjMwOGU5ODhk
YTI1OWFiMTYxZGQyMTAxN2EwYi4uNTdiMThjZmM2NzI0ZTk0NjVkNjhkMjI0YjgxOTlkOGQ4MjUx
ZjI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVxdWVz
dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1SZXF1ZXN0RGF0
YS5oCkBAIC0zNywxNyArMzcsMjkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCiBjbGFzcyBT
ZWNJdGVtUmVxdWVzdERhdGEgewogcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIElu
dmFsaWQsCisgICAgICAgIENvcHlNYXRjaGluZywKKyAgICAgICAgQWRkLAorICAgICAgICBVcGRh
dGUsCisgICAgICAgIERlbGV0ZSwKKyAgICAgICAgQ29weUNvbnRlbnQsCisgICAgfTsKKwogICAg
IFNlY0l0ZW1SZXF1ZXN0RGF0YSgpOwotICAgIFNlY0l0ZW1SZXF1ZXN0RGF0YShDRkRpY3Rpb25h
cnlSZWYgcXVlcnkpOwotICAgIFNlY0l0ZW1SZXF1ZXN0RGF0YShDRkRpY3Rpb25hcnlSZWYgcXVl
cnksIENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzVG9NYXRjaCk7CisgICAgU2VjSXRlbVJlcXVl
c3REYXRhKFR5cGUsIENGRGljdGlvbmFyeVJlZiBxdWVyeSk7CisgICAgU2VjSXRlbVJlcXVlc3RE
YXRhKFR5cGUsIENGRGljdGlvbmFyeVJlZiBxdWVyeSwgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0
ZXNUb01hdGNoKTsKIAogICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlciop
IGNvbnN0OwogICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
LCBTZWNJdGVtUmVxdWVzdERhdGEmKTsKIAorICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5KCkgY29uc3QgeyByZXR1cm4g
bV9xdWVyeURpY3Rpb25hcnkuZ2V0KCk7IH0KICAgICBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRl
c1RvTWF0Y2goKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXNUb01hdGNoLmdldCgpOyB9CiAK
IHByaXZhdGU6CisgICAgVHlwZSBtX3R5cGU7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gbV9xdWVyeURpY3Rpb25hcnk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gbV9h
dHRyaWJ1dGVzVG9NYXRjaDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1NlY0l0ZW1SZXNwb25zZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2Vj
SXRlbVJlc3BvbnNlRGF0YS5oCmluZGV4IDdkN2ZiOTU0OTNlYjM3Y2FjMmJiYjE5NTE1Njg1Nzg3
N2U5NDkzZjYuLjVjOTQzMzY5MjcyNDMyZGY4NjRkNjFmMWUxMGQ3MTdlOWRmZTQ2NjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5oCkBAIC00
Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXIqKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiwgU2VjSXRlbVJlc3BvbnNlRGF0YSYpOwogCi0gICAgUmV0YWluUHRyPENGVHlwZVJl
Zj4gcmVzdWx0T2JqZWN0KCkgeyByZXR1cm4gbV9yZXN1bHRPYmplY3Q7IH0KKyAgICBSZXRhaW5Q
dHI8Q0ZUeXBlUmVmPiYgcmVzdWx0T2JqZWN0KCkgeyByZXR1cm4gbV9yZXN1bHRPYmplY3Q7IH0K
ICAgICBPU1N0YXR1cyByZXN1bHRDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRDb2RlOyB9
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0tl
eWNoYWluSXRlbVJlcXVlc3REYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2Vj
S2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEuY3BwCmluZGV4IDdmOTg4ZmZiZTczYTRkZTU2ZjFmOTU1
YTNmYTVkYjkzNjBmNjMyZmMuLjFiNmEzYzI1YzMzYzJiZjU4ZTVhYjhjZDk5NjIyZDVmODdkMGZm
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjS2V5Y2hhaW5JdGVt
UmVxdWVzdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjS2V5Y2hh
aW5JdGVtUmVxdWVzdERhdGEuY3BwCkBAIC0zMiwyOSArMzIsMzYgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YTo6U2VjS2V5Y2hhaW5JdGVtUmVxdWVz
dERhdGEoKQotICAgIDogbV9pdGVtQ2xhc3MoMCkKKyAgICA6IG1fdHlwZShJbnZhbGlkKQorICAg
ICwgbV9pdGVtQ2xhc3MoMCkKKyAgICAsIG1fYXR0cnMoYWRvcHRSZWYobmV3IEF0dHJpYnV0ZXMp
KQogewogfQogCi1TZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YTo6U2VjS2V5Y2hhaW5JdGVtUmVx
dWVzdERhdGEoU2VjS2V5Y2hhaW5JdGVtUmVmIGl0ZW0sIFNlY0tleWNoYWluQXR0cmlidXRlTGlz
dCogYXR0ckxpc3QpCi0gICAgOiBtX2tleWNoYWluSXRlbShpdGVtKQorU2VjS2V5Y2hhaW5JdGVt
UmVxdWVzdERhdGE6OlNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhKFR5cGUgdHlwZSwgU2VjS2V5
Y2hhaW5JdGVtUmVmIGl0ZW0sIFNlY0tleWNoYWluQXR0cmlidXRlTGlzdCogYXR0ckxpc3QpCisg
ICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fa2V5Y2hhaW5JdGVtKGl0ZW0pCiAgICAgLCBtX2l0
ZW1DbGFzcygwKQorICAgICwgbV9hdHRycyhhZG9wdFJlZihuZXcgQXR0cmlidXRlcykpCiB7CiAg
ICAgaW5pdGlhbGl6ZVdpdGhBdHRyaWJ1dGVMaXN0KGF0dHJMaXN0KTsKIH0KIAotU2VjS2V5Y2hh
aW5JdGVtUmVxdWVzdERhdGE6OlNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhKFNlY0tleWNoYWlu
SXRlbVJlZiBpdGVtLCBTZWNLZXljaGFpbkF0dHJpYnV0ZUxpc3QqIGF0dHJMaXN0LCBVSW50MzIg
bGVuZ3RoLCBjb25zdCB2b2lkKiBkYXRhKQotICAgIDogbV9rZXljaGFpbkl0ZW0oaXRlbSkKK1Nl
Y0tleWNoYWluSXRlbVJlcXVlc3REYXRhOjpTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YShUeXBl
IHR5cGUsIFNlY0tleWNoYWluSXRlbVJlZiBpdGVtLCBTZWNLZXljaGFpbkF0dHJpYnV0ZUxpc3Qq
IGF0dHJMaXN0LCBVSW50MzIgbGVuZ3RoLCBjb25zdCB2b2lkKiBkYXRhKQorICAgIDogbV90eXBl
KHR5cGUpCisgICAgLCBtX2tleWNoYWluSXRlbShpdGVtKQogICAgICwgbV9pdGVtQ2xhc3MoMCkK
ICAgICAsIG1fZGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IGxlbmd0aCkKKyAgICAsIG1fYXR0cnMoYWRvcHRSZWYobmV3IEF0dHJpYnV0ZXMpKQogewogICAg
IGluaXRpYWxpemVXaXRoQXR0cmlidXRlTGlzdChhdHRyTGlzdCk7CiB9CiAKLQotU2VjS2V5Y2hh
aW5JdGVtUmVxdWVzdERhdGE6OlNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhKFNlY0l0ZW1DbGFz
cyBpdGVtQ2xhc3MsIFNlY0tleWNoYWluQXR0cmlidXRlTGlzdCogYXR0ckxpc3QsIFVJbnQzMiBs
ZW5ndGgsIGNvbnN0IHZvaWQqIGRhdGEpCi0gICAgOiBtX2l0ZW1DbGFzcyhpdGVtQ2xhc3MpCitT
ZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YTo6U2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEoVHlw
ZSB0eXBlLCBTZWNJdGVtQ2xhc3MgaXRlbUNsYXNzLCBTZWNLZXljaGFpbkF0dHJpYnV0ZUxpc3Qq
IGF0dHJMaXN0LCBVSW50MzIgbGVuZ3RoLCBjb25zdCB2b2lkKiBkYXRhKQorICAgIDogbV90eXBl
KHR5cGUpCisgICAgLCBtX2l0ZW1DbGFzcyhpdGVtQ2xhc3MpCiAgICAgLCBtX2RhdGFSZWZlcmVu
Y2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpCisgICAgLCBtX2F0
dHJzKGFkb3B0UmVmKG5ldyBBdHRyaWJ1dGVzKSkKIHsKICAgICBpbml0aWFsaXplV2l0aEF0dHJp
YnV0ZUxpc3QoYXR0ckxpc3QpOwogfQpAQCAtNzEsNyArNzgsNyBAQCB2b2lkIFNlY0tleWNoYWlu
SXRlbVJlcXVlc3REYXRhOjppbml0aWFsaXplV2l0aEF0dHJpYnV0ZUxpc3QoU2VjS2V5Y2hhaW5B
dHRyaWJ1dAogU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGE6On5TZWNLZXljaGFpbkl0ZW1SZXF1
ZXN0RGF0YSgpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIGlmICghbV9hdHRyaWJ1dGVMaXN0KQor
ICAgIGlmICghbV9hdHRycy0+bV9hdHRyaWJ1dGVMaXN0KQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBJZiB0aGlzIHJlcXVlc3Qgd2FzIGZvciBTZWNLZXljaGFpbkl0ZW1Nb2RpZnlDb250ZW50
OgpAQCAtODAsNDIgKzg3LDQ0IEBAIFNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhOjp+U2VjS2V5
Y2hhaW5JdGVtUmVxdWVzdERhdGEoKQogICAgIC8vIElmIHRoaXMgcmVxdWVzdCB3YXMgZm9yIFNl
Y0tleWNoYWluSXRlbUNvcHlDb250ZW50OgogICAgIC8vICAgLSBTZWN1cml0eSBBUElzIHNob3Vs
ZCd2ZSBmaWxsZWQgaW4gdGhlIGRhdGEgaW4gdGhlIEF0dHJpYnV0ZUxpc3QgYW5kIHRoYXQgZGF0
YSAKICAgICAvLyAgICAgc2hvdWxkJ3ZlIGJlZW4gZnJlZWQgYnkgU2VjS2V5Y2hhaW5JdGVtRnJl
ZUNvbnRlbnQuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2F0dHJpYnV0ZUxpc3QtPmNv
dW50OyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXR0cnMtPm1fYXR0cmli
dXRlTGlzdC0+Y291bnQ7ICsraSkgewogICAgICAgICBpZiAobV9rZXljaGFpbkF0dHJpYnV0ZXNb
aV0uZGF0YSkKLSAgICAgICAgICAgIEFTU0VSVChtX2F0dHJpYnV0ZUxpc3QtPmF0dHJbaV0uZGF0
YSA9PSBDRkRhdGFHZXRCeXRlUHRyKG1fa2V5Y2hhaW5BdHRyaWJ1dGVzW2ldLmRhdGEuZ2V0KCkp
KTsKKyAgICAgICAgICAgIEFTU0VSVChtX2F0dHJzLT5tX2F0dHJpYnV0ZUxpc3QtPmF0dHJbaV0u
ZGF0YSA9PSBDRkRhdGFHZXRCeXRlUHRyKG1fa2V5Y2hhaW5BdHRyaWJ1dGVzW2ldLmRhdGEuZ2V0
KCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgQVNTRVJUKCFtX2F0dHJpYnV0ZUxpc3Qt
PmF0dHJbaV0uZGF0YSk7CisgICAgICAgICAgICBBU1NFUlQoIW1fYXR0cnMtPm1fYXR0cmlidXRl
TGlzdC0+YXR0cltpXS5kYXRhKTsKICAgICB9CiAjZW5kaWYKIH0KIAogU2VjS2V5Y2hhaW5BdHRy
aWJ1dGVMaXN0KiBTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YTo6YXR0cmlidXRlTGlzdCgpIGNv
bnN0CiB7Ci0gICAgaWYgKG1fYXR0cmlidXRlTGlzdCB8fCBtX2tleWNoYWluQXR0cmlidXRlcy5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZUxpc3QuZ2V0KCk7CisgICAgaWYg
KG1fYXR0cnMtPm1fYXR0cmlidXRlTGlzdCB8fCBtX2tleWNoYWluQXR0cmlidXRlcy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBtX2F0dHJzLT5tX2F0dHJpYnV0ZUxpc3QuZ2V0KCk7CiAgICAg
Ci0gICAgbV9hdHRyaWJ1dGVMaXN0ID0gYWRvcHRQdHIobmV3IFNlY0tleWNoYWluQXR0cmlidXRl
TGlzdCk7Ci0gICAgbV9hdHRyaWJ1dGVMaXN0LT5jb3VudCA9IG1fa2V5Y2hhaW5BdHRyaWJ1dGVz
LnNpemUoKTsKLSAgICBtX2F0dHJpYnV0ZXMgPSBhZG9wdEFycmF5UHRyKG5ldyBTZWNLZXljaGFp
bkF0dHJpYnV0ZVttX2F0dHJpYnV0ZUxpc3QtPmNvdW50XSk7Ci0gICAgbV9hdHRyaWJ1dGVMaXN0
LT5hdHRyID0gbV9hdHRyaWJ1dGVzLmdldCgpOworICAgIG1fYXR0cnMtPm1fYXR0cmlidXRlTGlz
dCA9IGFkb3B0UHRyKG5ldyBTZWNLZXljaGFpbkF0dHJpYnV0ZUxpc3QpOworICAgIG1fYXR0cnMt
Pm1fYXR0cmlidXRlTGlzdC0+Y291bnQgPSBtX2tleWNoYWluQXR0cmlidXRlcy5zaXplKCk7Cisg
ICAgbV9hdHRycy0+bV9hdHRyaWJ1dGVzID0gYWRvcHRBcnJheVB0cihuZXcgU2VjS2V5Y2hhaW5B
dHRyaWJ1dGVbbV9hdHRycy0+bV9hdHRyaWJ1dGVMaXN0LT5jb3VudF0pOworICAgIG1fYXR0cnMt
Pm1fYXR0cmlidXRlTGlzdC0+YXR0ciA9IG1fYXR0cnMtPm1fYXR0cmlidXRlcy5nZXQoKTsKIAot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hdHRyaWJ1dGVMaXN0LT5jb3VudDsgKytpKSB7
Ci0gICAgICAgIG1fYXR0cmlidXRlTGlzdC0+YXR0cltpXS50YWcgPSBtX2tleWNoYWluQXR0cmli
dXRlc1tpXS50YWc7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2F0dHJzLT5tX2F0dHJp
YnV0ZUxpc3QtPmNvdW50OyArK2kpIHsKKyAgICAgICAgbV9hdHRycy0+bV9hdHRyaWJ1dGVMaXN0
LT5hdHRyW2ldLnRhZyA9IG1fa2V5Y2hhaW5BdHRyaWJ1dGVzW2ldLnRhZzsKICAgICAgICAgaWYg
KCFtX2tleWNoYWluQXR0cmlidXRlc1tpXS5kYXRhKSB7Ci0gICAgICAgICAgICBtX2F0dHJpYnV0
ZUxpc3QtPmF0dHJbaV0ubGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fYXR0cmlidXRlTGlzdC0+
YXR0cltpXS5kYXRhID0gMDsKKyAgICAgICAgICAgIG1fYXR0cnMtPm1fYXR0cmlidXRlTGlzdC0+
YXR0cltpXS5sZW5ndGggPSAwOworICAgICAgICAgICAgbV9hdHRycy0+bV9hdHRyaWJ1dGVMaXN0
LT5hdHRyW2ldLmRhdGEgPSAwOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIG1fYXR0cmlidXRlTGlzdC0+YXR0cltpXS5sZW5ndGggPSBDRkRhdGFH
ZXRMZW5ndGgobV9rZXljaGFpbkF0dHJpYnV0ZXNbaV0uZGF0YS5nZXQoKSk7Ci0gICAgICAgIG1f
YXR0cmlidXRlTGlzdC0+YXR0cltpXS5kYXRhID0gY29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nh
c3Q8Y29uc3Qgdm9pZCo+KENGRGF0YUdldEJ5dGVQdHIobV9rZXljaGFpbkF0dHJpYnV0ZXNbaV0u
ZGF0YS5nZXQoKSkpKTsKKyAgICAgICAgbV9hdHRycy0+bV9hdHRyaWJ1dGVMaXN0LT5hdHRyW2ld
Lmxlbmd0aCA9IENGRGF0YUdldExlbmd0aChtX2tleWNoYWluQXR0cmlidXRlc1tpXS5kYXRhLmdl
dCgpKTsKKyAgICAgICAgbV9hdHRycy0+bV9hdHRyaWJ1dGVMaXN0LT5hdHRyW2ldLmRhdGEgPSBj
b25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oQ0ZEYXRhR2V0Qnl0ZVB0
cihtX2tleWNoYWluQXR0cmlidXRlc1tpXS5kYXRhLmdldCgpKSkpOwogICAgIH0KICAgICAKLSAg
ICByZXR1cm4gbV9hdHRyaWJ1dGVMaXN0LmdldCgpOworICAgIHJldHVybiBtX2F0dHJzLT5tX2F0
dHJpYnV0ZUxpc3QuZ2V0KCk7CiB9CiAKIHZvaWQgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGE6
OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiB7CisgICAg
ZW5jb2Rlci0+ZW5jb2RlRW51bShtX3R5cGUpOworCiAgICAgZW5jb2Rlci0+ZW5jb2RlQm9vbCht
X2tleWNoYWluSXRlbSk7CiAgICAgaWYgKG1fa2V5Y2hhaW5JdGVtKQogICAgICAgICBDb3JlSVBD
OjplbmNvZGUoZW5jb2RlciwgbV9rZXljaGFpbkl0ZW0uZ2V0KCkpOwpAQCAtMTMwLDYgKzEzOSw5
IEBAIHZvaWQgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgU2VjS2V5Y2hhaW5JdGVtUmVxdWVz
dERhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFNlY0tleWNo
YWluSXRlbVJlcXVlc3REYXRhJiBzZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YSkKIHsKKyAgICBp
ZiAoIWRlY29kZXItPmRlY29kZUVudW0oc2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEubV90eXBl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgYm9vbCBoYXNLZXljaGFpbkl0ZW07CiAg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVCb29sKGhhc0tleWNoYWluSXRlbSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjS2V5
Y2hhaW5JdGVtUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjS2V5
Y2hhaW5JdGVtUmVxdWVzdERhdGEuaAppbmRleCBjYTcyYjM2ZmJkYThkYmVmNGM5NDBlM2Q0ZjJl
YTVhZTkxOGI5NTY1Li5lZjc3ZTIzNmEyY2M4MjUzZDg1MWQ1NDFkYjJhY2FlNTBhMmE1ZmZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0tleWNoYWluSXRlbVJlcXVl
c3REYXRhLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNLZXljaGFpbkl0ZW1S
ZXF1ZXN0RGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiS2V5Y2hhaW5BdHRyaWJ1
dGUuaCIKICNpbmNsdWRlIDxTZWN1cml0eS9TZWN1cml0eS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25B
cnJheVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDIsMTUgKzQzLDI0IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogICAgIAogY2xhc3MgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERh
dGEgewogcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIEludmFsaWQsCisgICAgICAg
IENvcHlDb250ZW50LAorICAgICAgICBDcmVhdGVGcm9tQ29udGVudCwKKyAgICAgICAgTW9kaWZ5
Q29udGVudCwKKyAgICB9OworCiAgICAgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEoKTsKLSAg
ICBTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YShTZWNLZXljaGFpbkl0ZW1SZWYsIFNlY0tleWNo
YWluQXR0cmlidXRlTGlzdCopOwotICAgIFNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhKFNlY0tl
eWNoYWluSXRlbVJlZiwgU2VjS2V5Y2hhaW5BdHRyaWJ1dGVMaXN0KiwgVUludDMyIGxlbmd0aCwg
Y29uc3Qgdm9pZCogZGF0YSk7Ci0gICAgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEoU2VjSXRl
bUNsYXNzLCBTZWNLZXljaGFpbkF0dHJpYnV0ZUxpc3QqLCBVSW50MzIgbGVuZ3RoLCBjb25zdCB2
b2lkKiBkYXRhKTsKKyAgICBTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YShUeXBlLCBTZWNLZXlj
aGFpbkl0ZW1SZWYsIFNlY0tleWNoYWluQXR0cmlidXRlTGlzdCopOworICAgIFNlY0tleWNoYWlu
SXRlbVJlcXVlc3REYXRhKFR5cGUsIFNlY0tleWNoYWluSXRlbVJlZiwgU2VjS2V5Y2hhaW5BdHRy
aWJ1dGVMaXN0KiwgVUludDMyIGxlbmd0aCwgY29uc3Qgdm9pZCogZGF0YSk7CisgICAgU2VjS2V5
Y2hhaW5JdGVtUmVxdWVzdERhdGEoVHlwZSwgU2VjSXRlbUNsYXNzLCBTZWNLZXljaGFpbkF0dHJp
YnV0ZUxpc3QqLCBVSW50MzIgbGVuZ3RoLCBjb25zdCB2b2lkKiBkYXRhKTsKICAgICB+U2VjS2V5
Y2hhaW5JdGVtUmVxdWVzdERhdGEoKTsKIAogICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RW5jb2RlciopIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqLCBTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YSYpOwogCisgICAgVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKICAgICBTZWNLZXljaGFpbkl0ZW1SZWYg
a2V5Y2hhaW5JdGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXljaGFpbkl0ZW0uZ2V0KCk7IH0KICAg
ICBTZWNJdGVtQ2xhc3MgaXRlbUNsYXNzKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtQ2xhc3M7IH0K
ICAgICBVSW50MzIgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhUmVmZXJlbmNlLnNpemUo
KTsgfQpAQCAtNjAsMTQgKzcwLDE5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGlu
aXRpYWxpemVXaXRoQXR0cmlidXRlTGlzdChTZWNLZXljaGFpbkF0dHJpYnV0ZUxpc3QqKTsKLSAg
ICAKKworICAgIFR5cGUgbV90eXBlOwogICAgIFJldGFpblB0cjxTZWNLZXljaGFpbkl0ZW1SZWY+
IG1fa2V5Y2hhaW5JdGVtOwogICAgIFNlY0l0ZW1DbGFzcyBtX2l0ZW1DbGFzczsKICAgICBDb3Jl
SVBDOjpEYXRhUmVmZXJlbmNlIG1fZGF0YVJlZmVyZW5jZTsKICAgICAKICAgICBWZWN0b3I8S2V5
Y2hhaW5BdHRyaWJ1dGU+IG1fa2V5Y2hhaW5BdHRyaWJ1dGVzOwotICAgIG11dGFibGUgT3duUHRy
PFNlY0tleWNoYWluQXR0cmlidXRlTGlzdD4gbV9hdHRyaWJ1dGVMaXN0OwotICAgIG11dGFibGUg
T3duQXJyYXlQdHI8U2VjS2V5Y2hhaW5BdHRyaWJ1dGU+IG1fYXR0cmlidXRlczsKKworICAgIHN0
cnVjdCBBdHRyaWJ1dGVzIDogcHVibGljIFJlZkNvdW50ZWQ8QXR0cmlidXRlcz4geworICAgICAg
ICBtdXRhYmxlIE93blB0cjxTZWNLZXljaGFpbkF0dHJpYnV0ZUxpc3Q+IG1fYXR0cmlidXRlTGlz
dDsKKyAgICAgICAgbXV0YWJsZSBPd25BcnJheVB0cjxTZWNLZXljaGFpbkF0dHJpYnV0ZT4gbV9h
dHRyaWJ1dGVzOworICAgIH07CisgICAgUmVmUHRyPEF0dHJpYnV0ZXM+IG1fYXR0cnM7CiB9Owog
ICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMThmNzRhOTlmZWQw
ODEyZGJmNGU0NzA5NWM2NDRjYjUzMjlkODc1Ni4uYjFkMTAzZmJjZTFkMmY1OWQxMjllZmZlMjFk
ZjA4Mjk2OGNiYjA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDYsOCArNDYsNiBAQCBXZWJDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYlByb2Nlc3NQcm94
eSogcHJvY2VzcywgQwogI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgbV9jb25uZWN0aW9uLT5zZXRT
aG91bGRDbG9zZUNvbm5lY3Rpb25PblByb2Nlc3NUZXJtaW5hdGlvbihwcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpKTsKICNlbmRpZgotCi0gICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CiB9CiAK
IHZvaWQgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aW52YWxpZGF0ZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDBjMTFjYWE1YjliODVm
ZTJjNTg0MzA3YjI5Yjk5NTU3ZDIwMjc1ZjMuLjhjOTliNGVmYTdlMGJjM2Y0YzM1NGMxOTBmYTg4
NGRjZjY4YjA3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCkBAIC0xMTcsNiArMTE3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNvbm5lY3Qo
KQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2Nvbm5lY3QoKQogewogICAgIGlmIChtX2Nvbm5l
Y3Rpb24pIHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnJlbW92ZVF1ZXVl
Q2xpZW50KHRoaXMpOwogICAgICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKICAgICAg
ICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKICAgICB9CkBAIC0zNDksNiArMzUwLDEyIEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiogY29ubmVjdGlvbiwgQ29yCiAgICAgcGFnZVByb3h5LT5kaWRSZWNlaXZlU3luY01lc3Nh
Z2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMsIHJlcGx5KTsKIH0KIAordm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlT25Db25uZWN0aW9uV29ya1F1ZXVlKENv
cmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdl
SUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzLCBib29sJiBkaWRIYW5kbGVN
ZXNzYWdlKQoreworICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2Vi
UHJvY2Vzc1Byb3h5PigpKQorICAgICAgICBkaWRSZWNlaXZlV2ViUHJvY2Vzc1Byb3h5TWVzc2Fn
ZU9uQ29ubmVjdGlvbldvcmtRdWV1ZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cywg
ZGlkSGFuZGxlTWVzc2FnZSk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShD
b3JlSVBDOjpDb25uZWN0aW9uKikKIHsKICAgICAvLyBQcm90ZWN0IG91cnNlbHZlcywgYXMgdGhl
IGNhbGwgdG8gZGlzY29ubmVjdCgpIGJlbG93IG1heSBvdGhlcndpc2UgY2F1c2UgdXMKQEAgLTQw
OSw3ICs0MTYsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKENv
cmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdAogICAgIEFTU0VSVCghbV9jb25u
ZWN0aW9uKTsKICAgICAKICAgICBtX2Nvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjcmVhdGUodGhpcywgY29ubmVjdGlvbklkZW50aWZpZXIsIFJ1bkxvb3A6Om1haW4oKSk7
Ci0gICAgCisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPmFkZFF1ZXVlQ2xpZW50KHRo
aXMpOworICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5vcGVuKCk7CisKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fcGVuZGluZ01lc3NhZ2VzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIENvcmVJUEM6OkNvbm5lY3Rpb246Ok91dGdvaW5nTWVzc2FnZSYgb3V0Z29pbmdNZXNzYWdl
ID0gbV9wZW5kaW5nTWVzc2FnZXNbaV0uZmlyc3Q7CiAgICAgICAgIHVuc2lnbmVkIG1lc3NhZ2VT
ZW5kRmxhZ3MgPSBtX3BlbmRpbmdNZXNzYWdlc1tpXS5zZWNvbmQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggMTI5ZTBlYTFiYTcxNTUyYWQzYWNkYjM1
NzE5YzAyOGIzMWViZGI0ZC4uMTFjZmE1YjI3NjhkYzc3ZjdjNzc0OTAxNDNmNTI1ZWZhZDg0YzRh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNTcs
NyArNTcsNyBAQCBjbGFzcyBXZWJDb250ZXh0OwogY2xhc3MgV2ViUGFnZUdyb3VwOwogc3RydWN0
IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiAKLWNsYXNzIFdlYlByb2Nlc3NQcm94eSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dCwgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudCwg
VGhyZWFkTGF1bmNoZXI6OkNsaWVudCB7CitjbGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJQcm9jZXNzUHJveHk+LCBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQs
IFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVudCwgUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQsIFRo
cmVhZExhdW5jaGVyOjpDbGllbnQsIENvcmVJUEM6OkNvbm5lY3Rpb246OlF1ZXVlQ2xpZW50IHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJGcmFtZVBy
b3h5PiA+IFdlYkZyYW1lUHJveHlNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFw
OwpAQCAtMTM5LDEzICsxMzksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGx1Z2luU3luY01lc3Nh
Z2VTZW5kVGltZWRPdXQoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICB2b2lkIHNlY0l0ZW1Db3B5TWF0Y2hpbmcoY29uc3QgU2VjSXRlbVJl
cXVlc3REYXRhJiwgU2VjSXRlbVJlc3BvbnNlRGF0YSYpOwotICAgIHZvaWQgc2VjSXRlbUFkZChj
b25zdCBTZWNJdGVtUmVxdWVzdERhdGEmLCBTZWNJdGVtUmVzcG9uc2VEYXRhJik7Ci0gICAgdm9p
ZCBzZWNJdGVtVXBkYXRlKGNvbnN0IFNlY0l0ZW1SZXF1ZXN0RGF0YSYsIFNlY0l0ZW1SZXNwb25z
ZURhdGEmKTsKLSAgICB2b2lkIHNlY0l0ZW1EZWxldGUoY29uc3QgU2VjSXRlbVJlcXVlc3REYXRh
JiwgU2VjSXRlbVJlc3BvbnNlRGF0YSYpOwotICAgIHZvaWQgc2VjS2V5Y2hhaW5JdGVtQ29weUNv
bnRlbnQoY29uc3QgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEmLCBTZWNLZXljaGFpbkl0ZW1S
ZXNwb25zZURhdGEmKTsKLSAgICB2b2lkIHNlY0tleWNoYWluSXRlbUNyZWF0ZUZyb21Db250ZW50
KGNvbnN0IFNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhJiwgU2VjS2V5Y2hhaW5JdGVtUmVzcG9u
c2VEYXRhJik7Ci0gICAgdm9pZCBzZWNLZXljaGFpbkl0ZW1Nb2RpZnlDb250ZW50KGNvbnN0IFNl
Y0tleWNoYWluSXRlbVJlcXVlc3REYXRhJiwgU2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhJik7
CisgICAgdm9pZCBzZWNJdGVtUmVxdWVzdChDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmKTsKKyAgICB2b2lkIHNlY0tleWNo
YWluSXRlbVJlcXVlc3QoQ29yZUlQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHJlcXVlc3RJRCwg
Y29uc3QgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEmKTsKICNlbmRpZgogCiAgICAgLy8gQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CkBAIC0xNTksNiArMTU0LDkgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIFZlY3RvcjxIV05EPiB3aW5kb3dzVG9SZWNlaXZlU2VudE1lc3NhZ2VzV2hpbGVX
YWl0aW5nRm9yU3luY1JlcGx5KCk7CiAjZW5kaWYKIAorICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rp
b246OlF1ZXVlQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlT25Db25u
ZWN0aW9uV29ya1F1ZXVlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQs
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2UpOworCiAg
ICAgLy8gUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50CiAgICAgdm9pZCBkaWRCZWNvbWVVbnJl
c3BvbnNpdmUoUmVzcG9uc2l2ZW5lc3NUaW1lciopOwogICAgIHZvaWQgZGlkQmVjb21lUmVzcG9u
c2l2ZShSZXNwb25zaXZlbmVzc1RpbWVyKik7CkBAIC0xNzQsNiArMTcyLDcgQEAgcHJpdmF0ZToK
ICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NQcm94eU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlByb2Nlc3NQcm94eU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKiBhcmd1bWVudHMsIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+JiBy
ZXBseSk7CisgICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZU9uQ29ubmVj
dGlvbldvcmtRdWV1ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgYm9vbCYgZGlkSGFuZGxlTWVzc2Fn
ZSk7CiAKICAgICBSZXNwb25zaXZlbmVzc1RpbWVyIG1fcmVzcG9uc2l2ZW5lc3NUaW1lcjsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDg5NDNmZmM3MDY1MWQzZTY3MzdlYjg1YjdjMzlkODU0ZGYzNjg5YTAu
LjkzOTYxZGE0NGEwMWY1NjI5OWExNTg3Mzc1MzNkNGRmOWEwYTYwMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAt
MzMsMTQgKzMzLDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IHsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIFNlY0l0ZW1Db3B5TWF0Y2hpbmcoV2ViS2l0OjpTZWNJdGVt
UmVxdWVzdERhdGEgcXVlcnkpIC0+IChXZWJLaXQ6OlNlY0l0ZW1SZXNwb25zZURhdGEgcmVzdWx0
KQotICAgIFNlY0l0ZW1BZGQoV2ViS2l0OjpTZWNJdGVtUmVxdWVzdERhdGEgcXVlcnkpIC0+IChX
ZWJLaXQ6OlNlY0l0ZW1SZXNwb25zZURhdGEgcmVzdWx0KQotICAgIFNlY0l0ZW1VcGRhdGUoV2Vi
S2l0OjpTZWNJdGVtUmVxdWVzdERhdGEgcXVlcnkpIC0+IChXZWJLaXQ6OlNlY0l0ZW1SZXNwb25z
ZURhdGEgcmVzdWx0KQotICAgIFNlY0l0ZW1EZWxldGUoV2ViS2l0OjpTZWNJdGVtUmVxdWVzdERh
dGEgcXVlcnkpIC0+IChXZWJLaXQ6OlNlY0l0ZW1SZXNwb25zZURhdGEgcmVzdWx0KQotICAgIAot
ICAgIFNlY0tleWNoYWluSXRlbUNvcHlDb250ZW50KFdlYktpdDo6U2VjS2V5Y2hhaW5JdGVtUmVx
dWVzdERhdGEgcXVlcnkpIC0+IChXZWJLaXQ6OlNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YSBy
ZXN1bHQpCi0gICAgU2VjS2V5Y2hhaW5JdGVtQ3JlYXRlRnJvbUNvbnRlbnQoV2ViS2l0OjpTZWNL
ZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YSBxdWVyeSkgLT4gKFdlYktpdDo6U2VjS2V5Y2hhaW5JdGVt
UmVzcG9uc2VEYXRhIHJlc3VsdCkKLSAgICBTZWNLZXljaGFpbkl0ZW1Nb2RpZnlDb250ZW50KFdl
YktpdDo6U2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEgcXVlcnkpIC0+IChXZWJLaXQ6OlNlY0tl
eWNoYWluSXRlbVJlc3BvbnNlRGF0YSByZXN1bHQpCisgICAgU2VjSXRlbVJlcXVlc3QodWludDY0
X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNlY0l0ZW1SZXF1ZXN0RGF0YSByZXF1ZXN0KSBEaXNwYXRj
aE9uQ29ubmVjdGlvblF1ZXVlCisgICAgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdCh1aW50NjRfdCBy
ZXF1ZXN0SUQsIFdlYktpdDo6U2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEgcmVxdWVzdCkgRGlz
cGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQogI2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0KaW5kZXggNDY3MTU1ZTkyMzZk
NGZhYTQ1YjYyZGFlODE3ZGFjNzA5N2NiMDQxNC4uMzdlOGNhYWUwYmQ5ZDM4NjUwMmVjNjFlODhk
OTUwMzc4OGQ0OTBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJQcm9jZXNzUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJQcm9jZXNzUHJveHlNYWMubW0KQEAgLTMwLDgyICszMCwxMDUgQEAKICNpbXBvcnQgIlNlY0l0
ZW1SZXNwb25zZURhdGEuaCIKICNpbXBvcnQgIlNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhLmgi
CiAjaW1wb3J0ICJTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEuaCIKKyNpbXBvcnQgIldlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmgi
CiAjaW1wb3J0IDxTZWN1cml0eS9TZWNJdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12
b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VjSXRlbUNvcHlNYXRjaGluZyhjb25zdCBTZWNJdGVtUmVx
dWVzdERhdGEmIHF1ZXJ5RGF0YSwgU2VjSXRlbVJlc3BvbnNlRGF0YSYgcmVzdWx0KQorc3RhdGlj
IHZvaWQgaGFuZGxlU2VjSXRlbVJlcXVlc3QoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
biwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmIHJlcXVlc3Qp
CiB7Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5ID0gcXVlcnlEYXRhLnF1ZXJ5KCk7Ci0gICAg
Q0ZUeXBlUmVmIHJlc3VsdE9iamVjdFJlZjsKLSAgICBPU1N0YXR1cyByZXN1bHRDb2RlID0gU2Vj
SXRlbUNvcHlNYXRjaGluZyhxdWVyeSwgJnJlc3VsdE9iamVjdFJlZik7Ci0KLSAgICBSZXRhaW5Q
dHI8Q0ZUeXBlUmVmPiByZXN1bHRPYmplY3QoQWRvcHRDRiwgcmVzdWx0T2JqZWN0UmVmKTsKLSAg
ICByZXN1bHQgPSBTZWNJdGVtUmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIHJlc3VsdE9iamVjdC5n
ZXQoKSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZWNJdGVtQWRkKGNvbnN0IFNlY0l0
ZW1SZXF1ZXN0RGF0YSYgcXVlcnlEYXRhLCBTZWNJdGVtUmVzcG9uc2VEYXRhJiByZXN1bHQpCi17
Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5ID0gcXVlcnlEYXRhLnF1ZXJ5KCk7Ci0gICAgQ0ZU
eXBlUmVmIHJlc3VsdE9iamVjdFJlZjsKLSAgICBPU1N0YXR1cyByZXN1bHRDb2RlID0gU2VjSXRl
bUFkZChxdWVyeSwgJnJlc3VsdE9iamVjdFJlZik7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZUeXBlUmVm
PiByZXN1bHRPYmplY3QoQWRvcHRDRiwgcmVzdWx0T2JqZWN0UmVmKTsKLSAgICByZXN1bHQgPSBT
ZWNJdGVtUmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIHJlc3VsdE9iamVjdC5nZXQoKSk7Ci19Ci0K
LXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZWNJdGVtVXBkYXRlKGNvbnN0IFNlY0l0ZW1SZXF1ZXN0
RGF0YSYgcXVlcnlEYXRhLCBTZWNJdGVtUmVzcG9uc2VEYXRhJiByZXN1bHQpCi17Ci0gICAgQ0ZE
aWN0aW9uYXJ5UmVmIHF1ZXJ5ID0gcXVlcnlEYXRhLnF1ZXJ5KCk7Ci0gICAgQ0ZEaWN0aW9uYXJ5
UmVmIGF0dHJpYnV0ZXNUb01hdGNoID0gcXVlcnlEYXRhLmF0dHJpYnV0ZXNUb01hdGNoKCk7Ci0g
ICAgT1NTdGF0dXMgcmVzdWx0Q29kZTsKLQotICAgIHJlc3VsdENvZGUgPSBTZWNJdGVtVXBkYXRl
KHF1ZXJ5LCBhdHRyaWJ1dGVzVG9NYXRjaCk7Ci0KLSAgICByZXN1bHQgPSBTZWNJdGVtUmVzcG9u
c2VEYXRhKHJlc3VsdENvZGUsIDApOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VjSXRl
bURlbGV0ZShjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmIHF1ZXJ5RGF0YSwgU2VjSXRlbVJlc3Bv
bnNlRGF0YSYgcmVzdWx0KQotewotICAgIENGRGljdGlvbmFyeVJlZiBxdWVyeSA9IHF1ZXJ5RGF0
YS5xdWVyeSgpOwotICAgIE9TU3RhdHVzIHJlc3VsdENvZGU7Ci0KLSAgICByZXN1bHRDb2RlID0g
U2VjSXRlbURlbGV0ZShxdWVyeSk7Ci0KLSAgICByZXN1bHQgPSBTZWNJdGVtUmVzcG9uc2VEYXRh
KHJlc3VsdENvZGUsIDApOworICAgIFNlY0l0ZW1SZXNwb25zZURhdGEgcmVzcG9uc2U7CisKKyAg
ICBzd2l0Y2ggKHJlcXVlc3QudHlwZSgpKSB7CisgICAgICAgIGNhc2UgU2VjSXRlbVJlcXVlc3RE
YXRhOjpDb3B5TWF0Y2hpbmc6IHsKKyAgICAgICAgICAgIENGVHlwZVJlZiByZXN1bHRPYmplY3Qg
PSAwOworICAgICAgICAgICAgT1NTdGF0dXMgcmVzdWx0Q29kZSA9IFNlY0l0ZW1Db3B5TWF0Y2hp
bmcocmVxdWVzdC5xdWVyeSgpLCAmcmVzdWx0T2JqZWN0KTsKKyAgICAgICAgICAgIHJlc3BvbnNl
ID0gU2VjSXRlbVJlc3BvbnNlRGF0YShyZXN1bHRDb2RlLCBhZG9wdENGKHJlc3VsdE9iamVjdCku
Z2V0KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFNl
Y0l0ZW1SZXF1ZXN0RGF0YTo6QWRkOiB7CisgICAgICAgICAgICBDRlR5cGVSZWYgcmVzdWx0T2Jq
ZWN0ID0gMDsKKyAgICAgICAgICAgIE9TU3RhdHVzIHJlc3VsdENvZGUgPSBTZWNJdGVtQWRkKHJl
cXVlc3QucXVlcnkoKSwgJnJlc3VsdE9iamVjdCk7CisgICAgICAgICAgICByZXNwb25zZSA9IFNl
Y0l0ZW1SZXNwb25zZURhdGEocmVzdWx0Q29kZSwgYWRvcHRDRihyZXN1bHRPYmplY3QpLmdldCgp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBTZWNJdGVt
UmVxdWVzdERhdGE6OlVwZGF0ZTogeworICAgICAgICAgICAgT1NTdGF0dXMgcmVzdWx0Q29kZSA9
IFNlY0l0ZW1VcGRhdGUocmVxdWVzdC5xdWVyeSgpLCByZXF1ZXN0LmF0dHJpYnV0ZXNUb01hdGNo
KCkpOworICAgICAgICAgICAgcmVzcG9uc2UgPSBTZWNJdGVtUmVzcG9uc2VEYXRhKHJlc3VsdENv
ZGUsIDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFNl
Y0l0ZW1SZXF1ZXN0RGF0YTo6RGVsZXRlOiB7CisgICAgICAgICAgICBPU1N0YXR1cyByZXN1bHRD
b2RlID0gU2VjSXRlbURlbGV0ZShyZXF1ZXN0LnF1ZXJ5KCkpOworICAgICAgICAgICAgcmVzcG9u
c2UgPSBTZWNJdGVtUmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIDApOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNlY0l0
ZW1SZXNwb25zZShyZXF1ZXN0SUQsIHJlc3BvbnNlKSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpzZWNLZXljaGFpbkl0ZW1Db3B5Q29udGVudChjb25zdCBTZWNLZXljaGFpbkl0ZW1S
ZXF1ZXN0RGF0YSYgcmVxdWVzdCwgU2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhJiByZXNwb25z
ZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZWNJdGVtUmVxdWVzdChDb3JlSVBDOjpDb25uZWN0
aW9uKiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFNlY0l0ZW1SZXF1ZXN0
RGF0YSYgcmVxdWVzdCkKIHsKLSAgICBTZWNLZXljaGFpbkl0ZW1SZWYgaXRlbSA9IHJlcXVlc3Qu
a2V5Y2hhaW5JdGVtKCk7Ci0gICAgU2VjSXRlbUNsYXNzIGl0ZW1DbGFzczsKLSAgICBTZWNLZXlj
aGFpbkF0dHJpYnV0ZUxpc3QqIGF0dHJMaXN0ID0gcmVxdWVzdC5hdHRyaWJ1dGVMaXN0KCk7ICAg
IAotICAgIFVJbnQzMiBsZW5ndGggPSAwOwotICAgIHZvaWQqIG91dERhdGEgPSAwOwotCi0gICAg
T1NTdGF0dXMgcmVzdWx0Q29kZSA9IFNlY0tleWNoYWluSXRlbUNvcHlDb250ZW50KGl0ZW0sICZp
dGVtQ2xhc3MsIGF0dHJMaXN0LCAmbGVuZ3RoLCAmb3V0RGF0YSk7Ci0gICAgCi0gICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gZGF0YShBZG9wdENGLCBDRkRhdGFDcmVhdGUoMCwgc3RhdGljX2Nhc3Q8
Y29uc3QgVUludDgqPihvdXREYXRhKSwgbGVuZ3RoKSk7Ci0gICAgcmVzcG9uc2UgPSBTZWNLZXlj
aGFpbkl0ZW1SZXNwb25zZURhdGEocmVzdWx0Q29kZSwgaXRlbUNsYXNzLCBhdHRyTGlzdCwgZGF0
YS5nZXQoKSk7Ci0gICAgCi0gICAgU2VjS2V5Y2hhaW5JdGVtRnJlZUNvbnRlbnQoYXR0ckxpc3Qs
IG91dERhdGEpOworICAgIC8vIFNpbmNlIHdlIGRvbid0IHdhbnQgdGhlIGNvbm5lY3Rpb24gd29y
ayBxdWV1ZSB0byBiZSBoZWxkIHVwLCB3ZSBkbyBhbGwKKyAgICAvLyBrZXljaGFpbiBpbnRlcmFj
dGlvbiB3b3JrIG9uIGEgZ2xvYmFsIGRpc3BhdGNoIHF1ZXVlLgorICAgIGRpc3BhdGNoX3F1ZXVl
X3Qga2V5Y2hhaW5Xb3JrUXVldWUgPSBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENI
X1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApOworICAgIGRpc3BhdGNoX2FzeW5jKGtleWNoYWlu
V29ya1F1ZXVlLCBiaW5kKGhhbmRsZVNlY0l0ZW1SZXF1ZXN0LCBSZWZQdHI8Q29yZUlQQzo6Q29u
bmVjdGlvbj4oY29ubmVjdGlvbiksIHJlcXVlc3RJRCwgcmVxdWVzdCkpOwogfQogCi12b2lkIFdl
YlByb2Nlc3NQcm94eTo6c2VjS2V5Y2hhaW5JdGVtQ3JlYXRlRnJvbUNvbnRlbnQoY29uc3QgU2Vj
S2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEmIHJlcXVlc3QsIFNlY0tleWNoYWluSXRlbVJlc3BvbnNl
RGF0YSYgcmVzcG9uc2UpCitzdGF0aWMgdm9pZCBoYW5kbGVTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0
KENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEmIHJlcXVlc3QpCiB7Ci0gICAgU2VjS2V5Y2hh
aW5JdGVtUmVmIGtleWNoYWluSXRlbTsKLSAgICAKLSAgICBPU1N0YXR1cyByZXN1bHRDb2RlID0g
U2VjS2V5Y2hhaW5JdGVtQ3JlYXRlRnJvbUNvbnRlbnQocmVxdWVzdC5pdGVtQ2xhc3MoKSwgcmVx
dWVzdC5hdHRyaWJ1dGVMaXN0KCksIHJlcXVlc3QubGVuZ3RoKCksIHJlcXVlc3QuZGF0YSgpLCAw
LCAwLCAma2V5Y2hhaW5JdGVtKTsKLQotICAgIHJlc3BvbnNlID0gU2VjS2V5Y2hhaW5JdGVtUmVz
cG9uc2VEYXRhKHJlc3VsdENvZGUsIFJldGFpblB0cjxTZWNLZXljaGFpbkl0ZW1SZWY+KEFkb3B0
Q0YsIGtleWNoYWluSXRlbSkpOworICAgIFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YSByZXNw
b25zZTsKKworICAgIHN3aXRjaCAocmVxdWVzdC50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBTZWNL
ZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YTo6Q29weUNvbnRlbnQ6IHsKKyAgICAgICAgICAgIFNlY0tl
eWNoYWluSXRlbVJlZiBpdGVtID0gcmVxdWVzdC5rZXljaGFpbkl0ZW0oKTsKKyAgICAgICAgICAg
IFNlY0l0ZW1DbGFzcyBpdGVtQ2xhc3M7CisgICAgICAgICAgICBTZWNLZXljaGFpbkF0dHJpYnV0
ZUxpc3QqIGF0dHJMaXN0ID0gcmVxdWVzdC5hdHRyaWJ1dGVMaXN0KCk7ICAgIAorICAgICAgICAg
ICAgVUludDMyIGxlbmd0aCA9IDA7CisgICAgICAgICAgICB2b2lkKiBvdXREYXRhID0gMDsKKwor
ICAgICAgICAgICAgT1NTdGF0dXMgcmVzdWx0Q29kZSA9IFNlY0tleWNoYWluSXRlbUNvcHlDb250
ZW50KGl0ZW0sICZpdGVtQ2xhc3MsIGF0dHJMaXN0LCAmbGVuZ3RoLCAmb3V0RGF0YSk7CisgICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhKEFkb3B0Q0YsIENGRGF0YUNyZWF0ZSgw
LCBzdGF0aWNfY2FzdDxjb25zdCBVSW50OCo+KG91dERhdGEpLCBsZW5ndGgpKTsKKyAgICAgICAg
ICAgIHJlc3BvbnNlID0gU2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIGl0
ZW1DbGFzcywgYXR0ckxpc3QsIGRhdGEuZ2V0KCkpOworCisgICAgICAgICAgICBTZWNLZXljaGFp
bkl0ZW1GcmVlQ29udGVudChhdHRyTGlzdCwgb3V0RGF0YSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGNhc2UgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGE6OkNy
ZWF0ZUZyb21Db250ZW50OiB7CisgICAgICAgICAgICBTZWNLZXljaGFpbkl0ZW1SZWYga2V5Y2hh
aW5JdGVtOworCisgICAgICAgICAgICBPU1N0YXR1cyByZXN1bHRDb2RlID0gU2VjS2V5Y2hhaW5J
dGVtQ3JlYXRlRnJvbUNvbnRlbnQocmVxdWVzdC5pdGVtQ2xhc3MoKSwgcmVxdWVzdC5hdHRyaWJ1
dGVMaXN0KCksIHJlcXVlc3QubGVuZ3RoKCksIHJlcXVlc3QuZGF0YSgpLCAwLCAwLCAma2V5Y2hh
aW5JdGVtKTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gU2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VE
YXRhKHJlc3VsdENvZGUsICBhZG9wdENGKGtleWNoYWluSXRlbSkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRh
OjpNb2RpZnlDb250ZW50OiB7CisgICAgICAgICAgICBPU1N0YXR1cyByZXN1bHRDb2RlID0gU2Vj
S2V5Y2hhaW5JdGVtTW9kaWZ5Q29udGVudChyZXF1ZXN0LmtleWNoYWluSXRlbSgpLCByZXF1ZXN0
LmF0dHJpYnV0ZUxpc3QoKSwgcmVxdWVzdC5sZW5ndGgoKSwgcmVxdWVzdC5kYXRhKCkpOworICAg
ICAgICAgICAgcmVzcG9uc2UgPSByZXN1bHRDb2RlOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNlY0tleWNoYWluSXRl
bVJlc3BvbnNlKHJlcXVlc3RJRCwgcmVzcG9uc2UpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnNlY0tleWNoYWluSXRlbU1vZGlmeUNvbnRlbnQoY29uc3QgU2VjS2V5Y2hhaW5JdGVt
UmVxdWVzdERhdGEmIHJlcXVlc3QsIFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YSYgcmVzcG9u
c2UpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VjS2V5Y2hhaW5JdGVtUmVxdWVzdChDb3JlSVBD
OjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFNlY0tl
eWNoYWluSXRlbVJlcXVlc3REYXRhJiByZXF1ZXN0KQogewotICAgIE9TU3RhdHVzIHJlc3VsdENv
ZGUgPSBTZWNLZXljaGFpbkl0ZW1Nb2RpZnlDb250ZW50KHJlcXVlc3Qua2V5Y2hhaW5JdGVtKCks
IHJlcXVlc3QuYXR0cmlidXRlTGlzdCgpLCByZXF1ZXN0Lmxlbmd0aCgpLCByZXF1ZXN0LmRhdGEo
KSk7Ci0gICAgCi0gICAgcmVzcG9uc2UgPSByZXN1bHRDb2RlOworICAgIC8vIFNpbmNlIHdlIGRv
bid0IHdhbnQgdGhlIGNvbm5lY3Rpb24gd29yayBxdWV1ZSB0byBiZSBoZWxkIHVwLCB3ZSBkbyBh
bGwKKyAgICAvLyBrZXljaGFpbiBpbnRlcmFjdGlvbiB3b3JrIG9uIGEgZ2xvYmFsIGRpc3BhdGNo
IHF1ZXVlLgorICAgIGRpc3BhdGNoX3F1ZXVlX3Qga2V5Y2hhaW5Xb3JrUXVldWUgPSBkaXNwYXRj
aF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApOwor
ICAgIGRpc3BhdGNoX2FzeW5jKGtleWNoYWluV29ya1F1ZXVlLCBiaW5kKGhhbmRsZVNlY0tleWNo
YWluSXRlbVJlcXVlc3QsIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPihjb25uZWN0aW9uKSwg
cmVxdWVzdElELCByZXF1ZXN0KSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5
Ym9hcmRBY2Nlc3NFbmFibGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZTA3MjA0Y2RiZDU1YzEzNTIxZmQyNmY1ZDJhNDgx
MmJjZmNkYmFkLi5mODUxZWRjNzRhNjI1ZTUzYmU2OTNmMGJhMjBlNGU3M2M0ZDJkZThkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yMDQsNiArMjA0LDcgQEAKIAkJMUFBRjBDNEIxMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50
Q29kZXJzQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFBRjBDNDkxMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0YuY3BwICovOyB9
OwogCQkxQUFGMjYzODE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUFGMjYzNjE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0gKi87IH07CiAJCTFBQUYyNjM5MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFBRjI2MzcxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLmggKi87IH07CisJCTFBQjQyRTg3MTRCQkJCQjIwMDQyNzJGNyAvKiBLZXljaGFpblNo
aW1SZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFCNDJFODYxNEJCQkJCMjAwNDI3MkY3IC8qIEtleWNoYWluU2hpbVJlc3BvbnNlTWFw
LmggKi87IH07CiAJCTFBQjdENENBMTI4OEFBQTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDRDODEy
ODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5oICovOyB9OwogCQkxQUI3RDRDQjEyODhB
QUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDRDOTEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxv
YWRQcm94eS5jcHAgKi87IH07CiAJCTFBQjdENjE5MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9h
ZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQjdENjE3MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAgLTQ1NSw4ICs0NTYsNiBAQAogCQk5MzkxRjJD
QTEyMUI2NzlBMDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTFGMjg0MTIxQjM4RjUw
MEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tICovOyB9OwogCQk5MzkxRjJD
QjEyMUI2N0FEMDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MUYyODMxMjFCMzhGNTAw
RUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCAqLzsgfTsKIAkJOTM5QUU3NjYx
MzE2RTk5QzAwQUUwNkE2IC8qIFdlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzlBRTc2NTEzMTZFOTlDMDBBRTA2
QTYgLyogV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCAqLzsgfTsKLQkJOTNDMDFEQUMxMzlBQzkx
NzAwRUQ1MUQ3IC8qIENvcmVJUENDbGllbnRSdW5Mb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0MwMURBQTEzOUFDOTE3MDBFRDUxRDcgLyogQ29y
ZUlQQ0NsaWVudFJ1bkxvb3AuaCAqLzsgfTsKLQkJOTNDMDFEQUQxMzlBQzkxNzAwRUQ1MUQ3IC8q
IENvcmVJUENDbGllbnRSdW5Mb29wLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNDMDFEQUIxMzlBQzkxNzAwRUQ1MUQ3IC8qIENvcmVJUENDbGllbnRS
dW5Mb29wLm1tICovOyB9OwogCQk5M0ZDNjdCRDEyRDNDQ0YyMDBBNjA2MTAgLyogRGVjb2RlckFk
YXB0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNGQzY3OUQxMkQzQ0M3NDAwQTYwNjEwIC8qIERlY29kZXJBZGFwdGVyLmNwcCAqLzsgfTsKIAkJ
OTNGQzY3QkUxMkQzQ0NGMjAwQTYwNjEwIC8qIERlY29kZXJBZGFwdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDNjc5RTEyRDNDQzc0MDBBNjA2
MTAgLyogRGVjb2RlckFkYXB0ZXIuaCAqLzsgfTsKIAkJOTNGQzY3QkYxMkQzQ0NGMjAwQTYwNjEw
IC8qIEVuY29kZXJBZGFwdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRkM2NzlGMTJEM0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5j
cHAgKi87IH07CkBAIC0xMTk3LDYgKzExOTYsNyBAQAogCQkxQUFGMEM0OTEyQjE2MzM0MDA4RTQ5
RTIgLyogQXJndW1lbnRDb2RlcnNDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0g
NDsgcGF0aCA9IEFyZ3VtZW50Q29kZXJzQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQUFGMjYzNjE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUFBRjI2MzcxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQjQyRTg2MTRCQkJC
QjIwMDQyNzJGNyAvKiBLZXljaGFpblNoaW1SZXNwb25zZU1hcC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBLZXljaGFpblNoaW1SZXNwb25zZU1hcC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQUI3RDRDODEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb3dubG9hZFByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdENEM5MTI4OEFBQTcwMENGRDA4QyAvKiBE
b3dubG9hZFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERv
d25sb2FkUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI3RDVFOTEy
ODhCOEMwMDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBEb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTQ3Miw4ICsxNDcyLDYgQEAKIAkJOTM5MUYyODMxMjFCMzhGNTAwRUJGN0U4
IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzkxRjI4NDEyMUIzOEY1MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
OUFFNzY1MTMxNkU5OUMwMEFFMDZBNiAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTNDMDFEQUExMzlBQzkxNzAwRUQ1MUQ3
IC8qIENvcmVJUENDbGllbnRSdW5Mb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvcmVJUENDbGllbnRSdW5Mb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTkzQzAxREFCMTM5QUM5MTcwMEVENTFENyAvKiBDb3JlSVBDQ2xpZW50UnVuTG9vcC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvcmVJUENDbGllbnRSdW5Mb29w
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0ZDNjc5RDEyRDNDQzc0MDBBNjA2
MTAgLyogRGVjb2RlckFkYXB0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGVjb2RlckFkYXB0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0ZDNjc5RTEyRDNDQzc0MDBBNjA2MTAgLyogRGVjb2RlckFkYXB0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RlckFkYXB0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNGQzY3OUYxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVuY29kZXJBZGFwdGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxODcsMTAgKzIxODUsOSBAQAogCQkx
QTZGQTAxQzExRTE1MjYzMDBEQjEzNzEgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk5M0MwMURBQTEzOUFDOTE3MDBFRDUxRDcgLyogQ29yZUlQ
Q0NsaWVudFJ1bkxvb3AuaCAqLywKLQkJCQk5M0MwMURBQjEzOUFDOTE3MDBFRDUxRDcgLyogQ29y
ZUlQQ0NsaWVudFJ1bkxvb3AubW0gKi8sCiAJCQkJNTEyREY2RDYxMzhDMTgxQTAwQTIyRkM2IC8q
IEtleWNoYWluSXRlbVNoaW1NZXRob2RzLmggKi8sCiAJCQkJNTEyREY2RDcxMzhDMTgxQTAwQTIy
RkM2IC8qIEtleWNoYWluSXRlbVNoaW1NZXRob2RzLm1tICovLAorCQkJCTFBQjQyRTg2MTRCQkJC
QjIwMDQyNzJGNyAvKiBLZXljaGFpblNoaW1SZXNwb25zZU1hcC5oICovLAogCQkJCTUxMUY4QTdE
MTM4QjQ2RkUwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbU1ldGhvZHMuaCAqLywKIAkJCQk1MTFGOEE3
RTEzOEI0NkZFMDBBOTVGNDQgLyogU2VjSXRlbVNoaW1NZXRob2RzLm1tICovLAogCQkJCUJDMzA2
NUMzMTI1OTJGODkwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWFjLm1tICovLApAQCAtMzcyOCw3ICsz
NzI1LDYgQEAKIAkJCQkzN0M0RTlGNjEzMUM2RTdFMDAyOUJENUEgLyogY29uZmlnLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzAzMkRBQjEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEyQzMwNzExMkQ1NTU0NTAwNjNEQUEyIC8qIENvbnRleHRNZW51
U3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzQzAxREFDMTM5QUM5MTcwMEVENTFENyAvKiBD
b3JlSVBDQ2xpZW50UnVuTG9vcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMzFCQzkxMTcyNkMy
ODAwQjY5NzI3IC8qIENvcmVJUENNZXNzYWdlS2luZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUI4
NzhCNjE1MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBOEVGREZBMTI1M0NBQTIwMEY3MDY3RiAvKiBEYXRhUmVmZXJlbmNlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTQxNDAsNiArNDEzNiw3IEBACiAJCQkJQkM4Njk5QjcxMTZBQURBQTAwMkE5
MjVCIC8qIFdLVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRkE2MTc5RjEyRjBC
OTlEMDAzM0UwQ0EgLyogV0tWaWV3UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyRTZF
OEUxMTQxOTcxNTAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUFC
NDJFODcxNEJCQkJCMjAwNDI3MkY3IC8qIEtleWNoYWluU2hpbVJlc3BvbnNlTWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTQ0NjMsNyArNDQ2MCw2IEBACiAJCQkJMUE2RjlGQjcxMUUxNDA4NTAwREIx
MzcxIC8qIENvbW1hbmRMaW5lTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDMyREFBMTBG
NDM3RDEwMDU4QzE1QSAvKiBDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMzBF
QUM2MTE1RDdEQTMwMDUzRTkzNyAvKiBDb25uZWN0aW9uTWFjLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTkzQzAxREFEMTM5QUM5MTcwMEVENTFENyAvKiBDb3JlSVBDQ2xpZW50UnVuTG9vcC5tbSBp
biBTb3VyY2VzICovLAogCQkJCUI4NzhCNjE2MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9u
UGFuZWwubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQThFRkRGRTEyNTNDQjZFMDBGNzA2N0YgLyog
RGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0ZDNjdCRDEyRDNDQ0YyMDBB
NjA2MTAgLyogRGVjb2RlckFkYXB0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDEwZDg2MTJhZWY5ZDk2OTU1ZGYwZDQ0OTUwNDFl
YjEyNzcyMjE0ODEuLjFlNTAyODRjMGJiZWJjODI5ZjYxNzI5YmRmYTBiZTgwOGVhZGQ2YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC03Myw2ICs3MywxMSBAQCBz
dHJ1Y3QgV2ViUGFnZUdyb3VwRGF0YTsKIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogc3Ry
dWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKKyNpZiBQTEFURk9STShNQUMpCitj
bGFzcyBTZWNJdGVtUmVzcG9uc2VEYXRhOworY2xhc3MgU2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VE
YXRhOworI2VuZGlmCisKIGNsYXNzIFdlYlByb2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzLCBw
cml2YXRlIENvcmVJUEM6OkNvbm5lY3Rpb246OlF1ZXVlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgV2ViUHJvY2VzcyYgc2hhcmVkKCk7CkBAIC0xOTksNiArMjA0LDExIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBnZXRXZWJDb3JlU3RhdGlzdGljcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKICAg
ICB2b2lkIGdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKTsKIAorI2lmIFBMQVRGT1JN
KE1BQykKKyAgICB2b2lkIHNlY0l0ZW1SZXNwb25zZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBTZWNJdGVtUmVzcG9uc2VEYXRhJik7CisgICAgdm9pZCBz
ZWNLZXljaGFpbkl0ZW1SZXNwb25zZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEmKTsKKyNlbmRpZgorCiAg
ICAgLy8gQ2hpbGRQcm9jZXNzCiAgICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1pbmF0ZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBiOTkxZjQ0YzU0MjY0YWY1MGEwNjFi
YzIxYTYyZDk3MzhjYTRkNTk3Li42NDFjYzdkZjFjOWQ0M2FkMjBiMTg0ZGY1MmI4NzVmNGJmMDNi
MGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC03NSw0ICs3NSw5IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogCiAgICAg
R2V0V2ViQ29yZVN0YXRpc3RpY3ModWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBHYXJiYWdlQ29s
bGVjdEphdmFTY3JpcHRPYmplY3RzKCkKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBTZWNJdGVt
UmVzcG9uc2UodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNlY0l0ZW1SZXNwb25zZURhdGEg
cmVzcG9uc2UpIERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKKyAgICBTZWNLZXljaGFpbkl0ZW1S
ZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYktpdDo6U2VjS2V5Y2hhaW5JdGVtUmVzcG9u
c2VEYXRhIHJlc3BvbnNlKSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlCisjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL0NvcmVJUENDbGllbnRSdW5M
b29wLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9Db3JlSVBDQ2xpZW50UnVuTG9v
cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGYzZjQ3OTcyN2RiNmI5MTE4Njlk
NjY5YTc0YmRiYmE1MzVjN2E2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL0NvcmVJUENDbGllbnRSdW5M
b29wLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLXR5cGVkZWYgdm9pZCAoKkZ1bmN0aW9uV2l0aENvbnRleHQpKHZvaWQq
IGNvbnRleHQpOwotCi0vLyBDYWxsIHRoZSBmdW5jdGlvbiBvbiBhIHRocmVhZCB3aGVyZSBpdCdz
IHNhZmUgdG8gc2VuZCBhIHN5bmNocm9ub3VzIENvcmVJUEMgbWVzc2FnZS4KLS8vIFdlIGNhbid0
IHVzZSBXVEYncyBjYWxsT25NYWluVGhyZWFkQW5kV2FpdCBiZWNhdXNlIGl0IGRvZXNuJ3Qgc3Vw
cG9ydCBlbm91Z2ggcnVuIGxvb3AgbW9kZXMuCi12b2lkIGNhbGxPbkNvcmVJUENDbGllbnRSdW5M
b29wQW5kV2FpdChGdW5jdGlvbldpdGhDb250ZXh0LCB2b2lkKiBjb250ZXh0KTsKLQotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvQ29yZUlQQ0NsaWVudFJ1bkxv
b3AubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9Db3JlSVBDQ2xpZW50UnVuTG9v
cC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I1MDQ2NWY5NWFjYjA3NDVhOGZh
NzEwNDcyMWQwNzYwNGQyMGZjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9Db3JlSVBDQ2xpZW50UnVu
TG9vcC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkNvcmVJUENDbGllbnRSdW5Mb29wLmgiCi0KLSNpbXBv
cnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
LQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLUBpbnRlcmZhY2UgV0tGdW5jdGlvbkFkYXB0
ZXIgOiBOU09iamVjdAotewotQHB1YmxpYwotICAgIFdlYktpdDo6RnVuY3Rpb25XaXRoQ29udGV4
dCBmdW5jdGlvbjsKLSAgICB2b2lkKiBjb250ZXh0OwotfQotLSAodm9pZClwZXJmb3JtOwotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gV0tGdW5jdGlvbkFkYXB0ZXIKLQotLSAodm9pZClwZXJmb3Jt
Ci17Ci0gICAgZnVuY3Rpb24oY29udGV4dCk7Ci19Ci0KLUBlbmQKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLXN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNvcmVJUENSdW5Mb29wTW9kZXNBcnJheSgp
Ci17Ci0gICAgLy8gSWRlYWxseSB3ZSdkIGxpa2UgdG8gbGlzdCBhbGwgbW9kZXMgaGVyZSB0aGF0
IG1pZ2h0IGJlIHVzZWQgZm9yIHJ1biBsb29wcyB3aGlsZSB3ZSBhcmUgaGFuZGxpbmcgbmV0d29y
a2luZy4KLSAgICAvLyBXZSBoYXZlIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSB0aGUgcnVuIGxvb3Ag
bW9kZSB1c2VkIGZvciBzeW5jaHJvbm91cyBsb2FkcyBpbiBXZWJDb3JlIHNvIHdlIGRvbid0IGdl
dCBkZWFkbG9jawotICAgIC8vIHdoZW4gdGhvc2UgbG9hZHMgY2FsbCBzZWN1cml0eSBmdW5jdGlv
bnMgdGhhdCBhcmUgc2hpbW1lZC4KLSAgICBjb25zdCB2b2lkKiB2YWx1ZXNbMl0gPSB7IGtDRlJ1
bkxvb3BDb21tb25Nb2RlcywgUmVzb3VyY2VIYW5kbGU6OnN5bmNocm9ub3VzTG9hZFJ1bkxvb3BN
b2RlKCkgfTsKLSAgICByZXR1cm4gQ0ZBcnJheUNyZWF0ZSgwLCB2YWx1ZXMsIDIsICZrQ0ZUeXBl
QXJyYXlDYWxsQmFja3MpOwotfQotCi1zdGF0aWMgTlNBcnJheSAqY29yZUlQQ1J1bkxvb3BNb2Rl
c0FycmF5KCkKLXsKLSAgICBzdGF0aWMgQ0ZBcnJheVJlZiBtb2RlcyA9IGNyZWF0ZUNvcmVJUENS
dW5Mb29wTW9kZXNBcnJheSgpOwotICAgIHJldHVybiAoTlNBcnJheSAqKW1vZGVzOwotfQotCi12
b2lkIGNhbGxPbkNvcmVJUENDbGllbnRSdW5Mb29wQW5kV2FpdChGdW5jdGlvbldpdGhDb250ZXh0
IGZ1bmN0aW9uLCB2b2lkKiBjb250ZXh0KQotewotICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBmaXQg
YmV0dGVyIHdpdGggV2ViS2l0MiBjb2Rpbmcgc3R5bGUgdG8gdXNlIGEgV1RGIEZ1bmN0aW9uIGhl
cmUuCi0gICAgLy8gVG8gZG8gdGhhdCB3ZSdkIG5lZWQgdG8gbWFrZSBkaXNwYXRjaCBoYXZlIGFu
IG92ZXJsb2FkIHRoYXQgdGFrZXMgYW4gYXJyYXkgb2YgcnVuIGxvb3AgbW9kZXMgb3IgZmluZCBz
b21lCi0gICAgLy8gb3RoZXIgd2F5IHRvIHNwZWNpZnkgdGhhdCB3ZSB3YW50IHRvIGluY2x1ZGUg
dGhlIHN5bmNocm9ub3VzIGxvYWQgcnVuIGxvb3AgbW9kZS4KLSAgICBSZXRhaW5QdHI8V0tGdW5j
dGlvbkFkYXB0ZXI+IGFkYXB0ZXIoQWRvcHROUywgW1tXS0Z1bmN0aW9uQWRhcHRlciBhbGxvY10g
aW5pdF0pOwotICAgIGFkYXB0ZXItPmZ1bmN0aW9uID0gZnVuY3Rpb247Ci0gICAgYWRhcHRlci0+
Y29udGV4dCA9IGNvbnRleHQ7Ci0gICAgW2FkYXB0ZXIuZ2V0KCkgcGVyZm9ybVNlbGVjdG9yT25N
YWluVGhyZWFkOkBzZWxlY3RvcihwZXJmb3JtKSB3aXRoT2JqZWN0Om5pbCB3YWl0VW50aWxEb25l
OllFUyBtb2Rlczpjb3JlSVBDUnVuTG9vcE1vZGVzQXJyYXkoKV07Ci19Ci0KLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL0tleWNoYWluSXRlbVNoaW1NZXRob2Rz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpbkl0ZW1TaGltTWV0aG9k
cy5oCmluZGV4IGFlODAxMzBhZDRlNDcwM2ZkY2QzZDAyYzc0ZTM2NjUzZjUxY2E2M2UuLjFjN2Zl
MzNjNjM5Y2FhYTA1ODFmOTBjOWIwMGQzY2Y2NmVkMDUzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvbWFjL0tleWNoYWluSXRlbVNoaW1NZXRob2RzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvS2V5Y2hhaW5JdGVtU2hpbU1ldGhvZHMuaApAQCAt
MzAsNiArMzAsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBpbml0aWFsaXplS2V5Y2hh
aW5JdGVtU2hpbSgpOwogCitjbGFzcyBTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGE7Cit2b2lk
IGRpZFJlY2VpdmVTZWNLZXljaGFpbkl0ZW1SZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNv
bnN0IFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YSYpOworCiB9CiAKICNlbmRpZiAvLyBLZXlj
aGFpbkl0ZW1TaGltTWV0aG9kc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL21hYy9LZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvbWFjL0tleWNoYWluSXRlbVNoaW1NZXRob2RzLm1tCmluZGV4IDBmMWFjOTMxN2IyMTFi
MmEyNGU5ZDIwNGYyODIyMzI1OTViZjNmNzkuLjVmNzFhZTQ2YjZjNGVkMDNkZDk5YzQ3ZTQ1M2Ni
MWQ0ZjYxYjAzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL0tl
eWNoYWluSXRlbVNoaW1NZXRob2RzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
bWFjL0tleWNoYWluSXRlbVNoaW1NZXRob2RzLm1tCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBk
ZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKIAotI2ltcG9ydCAiQ29yZUlQQ0NsaWVu
dFJ1bkxvb3AuaCIKKyNpbXBvcnQgIktleWNoYWluU2hpbVJlc3BvbnNlTWFwLmgiCiAjaW1wb3J0
ICJTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YS5oIgogI2ltcG9ydCAiU2VjS2V5Y2hhaW5JdGVt
UmVzcG9uc2VEYXRhLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCkBAIC00MCwzNCArNDAsMzAg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBNZXRob2RzIHRvIGFsbG93IHRoZSBzaGltIHRv
IG1hbmFnZSBtZW1vcnkgZm9yIGl0cyBvd24gQXR0cmlidXRlTGlzdCBjb250ZW50cy4KLXN0YXRp
YyBIYXNoU2V0PFNlY0tleWNoYWluQXR0cmlidXRlTGlzdCo+JiBzaGltTWFuYWdlZEF0dHJpYnV0
ZUxpc3RzKCkKK3N0YXRpYyBIYXNoU2V0PFNlY0tleWNoYWluQXR0cmlidXRlTGlzdCo+JiBtYW5h
Z2VkQXR0cmlidXRlTGlzdHMoKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxT
ZWNLZXljaGFpbkF0dHJpYnV0ZUxpc3QqPiwgc2V0LCAoKSk7Ci0gICAgcmV0dXJuIHNldDsKKyAg
ICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoSGFzaFNldDxTZWNLZXljaGFpbkF0dHJpYnV0
ZUxpc3QqPiYsIG1hbmFnZWRBdHRyaWJ1dGVMaXN0cyA9ICpuZXcgSGFzaFNldDxTZWNLZXljaGFp
bkF0dHJpYnV0ZUxpc3QqPik7CisKKyAgICByZXR1cm4gbWFuYWdlZEF0dHJpYnV0ZUxpc3RzOwog
fQogCi1zdGF0aWMgdm9pZCBmcmVlQXR0cmlidXRlTGlzdENvbnRlbnRzKFNlY0tleWNoYWluQXR0
cmlidXRlTGlzdCogYXR0ckxpc3QpCitzdGF0aWMgTXV0ZXgmIG1hbmFnZWRBdHRyaWJ1dGVMaXN0
c011dGV4KCkKIHsKLSAgICBBU1NFUlQoc2hpbU1hbmFnZWRBdHRyaWJ1dGVMaXN0cygpLmNvbnRh
aW5zKGF0dHJMaXN0KSk7Ci0gICAgQVNTRVJUKGF0dHJMaXN0KTsKLSAgICAKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGF0dHJMaXN0LT5jb3VudDsgKytpKQotICAgICAgICBmcmVlKGF0dHJM
aXN0LT5hdHRyW2ldLmRhdGEpOwotCi0gICAgc2hpbU1hbmFnZWRBdHRyaWJ1dGVMaXN0cygpLnJl
bW92ZShhdHRyTGlzdCk7CisgICAgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljKE11dGV4Jiwg
bWFuYWdlZEF0dHJpYnV0ZUxpc3RzTXV0ZXggPSAqbmV3IE11dGV4KTsKKyAgICByZXR1cm4gbWFu
YWdlZEF0dHJpYnV0ZUxpc3RzTXV0ZXg7CiB9CiAKIHN0YXRpYyB2b2lkIGFsbG9jYXRlQXR0cmli
dXRlTGlzdENvbnRlbnRzKGNvbnN0IFZlY3RvcjxLZXljaGFpbkF0dHJpYnV0ZT4mIGF0dHJpYnV0
ZXMsIFNlY0tleWNoYWluQXR0cmlidXRlTGlzdCogYXR0ckxpc3QpCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICAKICAgICBpZiAoIWF0dHJMaXN0KQogICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgQVNTRVJUKCFzaGltTWFuYWdlZEF0dHJpYnV0ZUxpc3RzKCkuY29udGFpbnMo
YXR0ckxpc3QpKTsKKworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtYW5hZ2VkQXR0cmlidXRlTGlz
dHNNdXRleCgpKTsKKworICAgIEFTU0VSVCghbWFuYWdlZEF0dHJpYnV0ZUxpc3RzKCkuY29udGFp
bnMoYXR0ckxpc3QpKTsKICAgICBBU1NFUlQoYXR0cmlidXRlcy5zaXplKCkgPT0gYXR0ckxpc3Qt
PmNvdW50KTsKICAgICAKLSAgICBzaGltTWFuYWdlZEF0dHJpYnV0ZUxpc3RzKCkuYWRkKGF0dHJM
aXN0KTsKKyAgICBtYW5hZ2VkQXR0cmlidXRlTGlzdHMoKS5hZGQoYXR0ckxpc3QpOwogICAgIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0ckxpc3QtPmNvdW50OyArK2kpIHsKICAgICAg
ICAgQVNTRVJUKGF0dHJpYnV0ZXNbaV0udGFnID09IGF0dHJMaXN0LT5hdHRyW2ldLnRhZyk7CkBA
IC04NywxNSArODMsMjAgQEAgc3RhdGljIHZvaWQgYWxsb2NhdGVBdHRyaWJ1dGVMaXN0Q29udGVu
dHMoY29uc3QgVmVjdG9yPEtleWNoYWluQXR0cmlidXRlPiYgYXR0cmkKIH0KIAogLy8gTWV0aG9k
cyB0byBhbGxvdyB0aGUgc2hpbSB0byBtYW5hZ2UgbWVtb3J5IGZvciBpdHMgb3duIEtleWNoYWlu
SXRlbSBjb250ZW50IGRhdGEuCi1zdGF0aWMgSGFzaFNldDx2b2lkKj4mIHNoaW1NYW5hZ2VkS2V5
Y2hhaW5JdGVtQ29udGVudHMoKQorc3RhdGljIEhhc2hTZXQ8dm9pZCo+JiBtYW5hZ2VkS2V5Y2hh
aW5JdGVtQ29udGVudHMoKQoreworICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhIYXNo
U2V0PHZvaWQqPiYsIG1hbmFnZWRLZXljaGFpbkl0ZW1Db250ZW50cyA9ICpuZXcgSGFzaFNldDx2
b2lkKj4pOworICAgIHJldHVybiBtYW5hZ2VkS2V5Y2hhaW5JdGVtQ29udGVudHM7Cit9CisKK3N0
YXRpYyBNdXRleCYgbWFuYWdlZEtleWNoYWluSXRlbUNvbnRlbnRzTXV0ZXgoKQogewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDx2b2lkKj4sIHNldCwgKCkpOwotICAgIHJldHVybiBz
ZXQ7CisgICAgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljKE11dGV4JiwgbWFuYWdlZEtleWNo
YWluSXRlbUNvbnRlbnRzTXV0ZXggPSAqbmV3IE11dGV4KTsKKyAgICByZXR1cm4gbWFuYWdlZEtl
eWNoYWluSXRlbUNvbnRlbnRzTXV0ZXg7CiB9CiAKIHN0YXRpYyB2b2lkIGFsbG9jYXRlS2V5Y2hh
aW5JdGVtQ29udGVudERhdGEoQ0ZEYXRhUmVmIGNmRGF0YSwgVUludDMyKiBsZW5ndGgsIHZvaWQq
KiBkYXRhKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKChsZW5n
dGggJiYgZGF0YSkgfHwgKCFsZW5ndGggJiYgIWRhdGEpKTsKICAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybjsKQEAgLTEwOSwxODQgKzExMCwxMDcgQEAgc3RhdGljIHZvaWQgYWxsb2NhdGVL
ZXljaGFpbkl0ZW1Db250ZW50RGF0YShDRkRhdGFSZWYgY2ZEYXRhLCBVSW50MzIqIGxlbmd0aCwg
dm8KICAgICAqbGVuZ3RoID0gQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YSk7CiAgICAgKmRhdGEgPSBt
YWxsb2MoKmxlbmd0aCk7CiAgICAgQ0ZEYXRhR2V0Qnl0ZXMoY2ZEYXRhLCBDRlJhbmdlTWFrZSgw
LCAqbGVuZ3RoKSwgKFVJbnQ4KikqZGF0YSk7Ci0gICAgc2hpbU1hbmFnZWRLZXljaGFpbkl0ZW1D
b250ZW50cygpLmFkZCgqZGF0YSk7CisKKyAgICBNdXRleExvY2tlciBsb2NrZXIobWFuYWdlZEtl
eWNoYWluSXRlbUNvbnRlbnRzTXV0ZXgoKSk7CisgICAgbWFuYWdlZEtleWNoYWluSXRlbUNvbnRl
bnRzKCkuYWRkKCpkYXRhKTsKIH0KIAotLy8gRklYTUUgKGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MDk3NSkgLSBPbmNlIENvcmVJUEMgc3VwcG9ydHMgc3luYyBtZXNz
YWdpbmcgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsCi0vLyB3ZSBjYW4gcmVtb3ZlIEZyZWVBdHRy
aWJ1dGVMaXN0Q29udGV4dCwgRnJlZUtleWNoYWluSXRlbURhdGFDb250ZXh0LCBLZXljaGFpbkl0
ZW1BUElDb250ZXh0LCBhbmQgdGhlc2UgNSBtYWluLXRocmVhZCBtZXRob2RzLCAKLS8vIGFuZCB3
ZSBjYW4gaGF2ZSB0aGUgc2hpbSBtZXRob2RzIGNhbGwgb3V0IGRpcmVjdGx5IGZyb20gd2hhdGV2
ZXIgdGhyZWFkIHRoZXkncmUgY2FsbGVkIG9uLgorc3RhdGljIGJvb2wgd2ViRnJlZUF0dHJpYnV0
ZUxpc3RDb250ZW50KFNlY0tleWNoYWluQXR0cmlidXRlTGlzdCogYXR0ckxpc3QpCit7CisgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1hbmFnZWRBdHRyaWJ1dGVMaXN0c011dGV4KCkpOwogCi1zdHJ1
Y3QgRnJlZUF0dHJpYnV0ZUxpc3RDb250ZXh0IHsKLSAgICBTZWNLZXljaGFpbkF0dHJpYnV0ZUxp
c3QqIGF0dHJMaXN0OwotICAgIGJvb2wgZnJlZWQ7Ci19OworICAgIGlmICghbWFuYWdlZEF0dHJp
YnV0ZUxpc3RzKCkuY29udGFpbnMoYXR0ckxpc3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LXN0YXRpYyB2b2lkIHdlYkZyZWVBdHRyaWJ1dGVMaXN0Q29udGVudE9uTWFpblRocmVhZCh2b2lk
KiB2b2lkQ29udGV4dCkKLXsKLSAgICBGcmVlQXR0cmlidXRlTGlzdENvbnRleHQqIGNvbnRleHQg
PSAoRnJlZUF0dHJpYnV0ZUxpc3RDb250ZXh0Kil2b2lkQ29udGV4dDsKLSAgICAKLSAgICBpZiAo
IXNoaW1NYW5hZ2VkQXR0cmlidXRlTGlzdHMoKS5jb250YWlucyhjb250ZXh0LT5hdHRyTGlzdCkp
IHsKLSAgICAgICAgY29udGV4dC0+ZnJlZWQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dHJMaXN0LT5jb3VudDsgKytpKQorICAg
ICAgICBmcmVlKGF0dHJMaXN0LT5hdHRyW2ldLmRhdGEpOwogICAgIAotICAgIGZyZWVBdHRyaWJ1
dGVMaXN0Q29udGVudHMoY29udGV4dC0+YXR0ckxpc3QpOwotICAgIGNvbnRleHQtPmZyZWVkID0g
dHJ1ZTsKKyAgICBtYW5hZ2VkQXR0cmlidXRlTGlzdHMoKS5yZW1vdmUoYXR0ckxpc3QpOworICAg
IHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCB3ZWJGcmVlQXR0cmlidXRlTGlzdENvbnRl
bnQoU2VjS2V5Y2hhaW5BdHRyaWJ1dGVMaXN0KiBhdHRyTGlzdCkKK3N0YXRpYyBib29sIHdlYkZy
ZWVLZXljaGFpbkl0ZW1Db250ZW50KHZvaWQqIGRhdGEpCiB7Ci0gICAgRnJlZUF0dHJpYnV0ZUxp
c3RDb250ZXh0IGNvbnRleHQ7Ci0gICAgY29udGV4dC5hdHRyTGlzdCA9IGF0dHJMaXN0OwotICAg
IAotICAgIGNhbGxPbkNvcmVJUENDbGllbnRSdW5Mb29wQW5kV2FpdCh3ZWJGcmVlQXR0cmlidXRl
TGlzdENvbnRlbnRPbk1haW5UaHJlYWQsICZjb250ZXh0KTsKKyAgICBNdXRleExvY2tlciBsb2Nr
ZXIobWFuYWdlZEtleWNoYWluSXRlbUNvbnRlbnRzTXV0ZXgoKSk7CiAKLSAgICByZXR1cm4gY29u
dGV4dC5mcmVlZDsKLX0KKyAgICBIYXNoU2V0PHZvaWQqPjo6aXRlcmF0b3IgaXQgPSBtYW5hZ2Vk
S2V5Y2hhaW5JdGVtQ29udGVudHMoKS5maW5kKGRhdGEpOworICAgIGlmIChpdCA9PSBtYW5hZ2Vk
S2V5Y2hhaW5JdGVtQ29udGVudHMoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1z
dHJ1Y3QgRnJlZUtleWNoYWluSXRlbURhdGFDb250ZXh0IHsKLSAgICB2b2lkKiBkYXRhOwotICAg
IGJvb2wgZnJlZWQ7Ci19OworICAgIG1hbmFnZWRLZXljaGFpbkl0ZW1Db250ZW50cygpLnJlbW92
ZShpdCk7CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLXN0YXRpYyB2b2lkIHdlYkZyZWVLZXljaGFp
bkl0ZW1Db250ZW50T25NYWluVGhyZWFkKHZvaWQqIHZvaWRDb250ZXh0KQorc3RhdGljIEtleWNo
YWluU2hpbVJlc3BvbnNlTWFwPFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YT4mIHJlc3BvbnNl
TWFwKCkKIHsKLSAgICBGcmVlS2V5Y2hhaW5JdGVtRGF0YUNvbnRleHQqIGNvbnRleHQgPSAoRnJl
ZUtleWNoYWluSXRlbURhdGFDb250ZXh0Kil2b2lkQ29udGV4dDsKLSAgICAKLSAgICBpZiAoIXNo
aW1NYW5hZ2VkS2V5Y2hhaW5JdGVtQ29udGVudHMoKS5jb250YWlucyhjb250ZXh0LT5kYXRhKSkg
ewotICAgICAgICBjb250ZXh0LT5mcmVlZCA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgICAgICAKLSAgICBzaGltTWFuYWdlZEtleWNoYWluSXRlbUNvbnRlbnRzKCkucmVtb3Zl
KGNvbnRleHQtPmRhdGEpOwotICAgIGZyZWUoY29udGV4dC0+ZGF0YSk7Ci0gICAgY29udGV4dC0+
ZnJlZWQgPSB0cnVlOworICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhLZXljaGFpblNo
aW1SZXNwb25zZU1hcDxTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGE+JiwgcmVzcG9uc2VNYXAg
PSAqbmV3IEtleWNoYWluU2hpbVJlc3BvbnNlTWFwPFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0
YT4pOworICAgIHJldHVybiByZXNwb25zZU1hcDsKIH0KIAotc3RhdGljIGJvb2wgd2ViRnJlZUtl
eWNoYWluSXRlbUNvbnRlbnQodm9pZCogZGF0YSkKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVNl
Y0tleWNoYWluSXRlbVJlcXVlc3RJRCgpCiB7Ci0gICAgRnJlZUtleWNoYWluSXRlbURhdGFDb250
ZXh0IGNvbnRleHQ7Ci0gICAgY29udGV4dC5kYXRhID0gZGF0YTsKLSAgICAKLSAgICBjYWxsT25D
b3JlSVBDQ2xpZW50UnVuTG9vcEFuZFdhaXQod2ViRnJlZUtleWNoYWluSXRlbUNvbnRlbnRPbk1h
aW5UaHJlYWQsICZjb250ZXh0KTsKLQotICAgIHJldHVybiBjb250ZXh0LmZyZWVkOworICAgIHN0
YXRpYyBpbnQ2NF90IHVuaXF1ZVNlY0tleWNoYWluSXRlbVJlcXVlc3RJRDsKKyAgICByZXR1cm4g
T1NBdG9taWNJbmNyZW1lbnQ2NEJhcnJpZXIoJnVuaXF1ZVNlY0tleWNoYWluSXRlbVJlcXVlc3RJ
RCk7CiB9CiAKLXN0cnVjdCBTZWNLZXljaGFpbkl0ZW1Db250ZXh0IHsKLSAgICBTZWNLZXljaGFp
bkl0ZW1SZWYgaXRlbTsKLSAgICAKLSAgICBTZWNLZXljaGFpbkF0dHJpYnV0ZUxpc3QqIGF0dHJp
YnV0ZUxpc3Q7Ci0gICAgU2VjSXRlbUNsYXNzIGluaXRpYWxJdGVtQ2xhc3M7Ci0gICAgVUludDMy
IGxlbmd0aDsKLSAgICBjb25zdCB2b2lkKiBkYXRhOwotICAgIAotICAgIFNlY0l0ZW1DbGFzcyog
cmVzdWx0SXRlbUNsYXNzOwotICAgIFVJbnQzMiogcmVzdWx0TGVuZ3RoOwotICAgIHZvaWQqKiBy
ZXN1bHREYXRhOwotCi0gICAgT1NTdGF0dXMgcmVzdWx0Q29kZTsKLX07Cit2b2lkIGRpZFJlY2Vp
dmVTZWNLZXljaGFpbkl0ZW1SZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFNlY0tl
eWNoYWluSXRlbVJlc3BvbnNlRGF0YSYgcmVzcG9uc2UpCit7CisgICAgcmVzcG9uc2VNYXAoKS5k
aWRSZWNlaXZlUmVzcG9uc2UocmVxdWVzdElELCBhZG9wdFB0cihuZXcgU2VjS2V5Y2hhaW5JdGVt
UmVzcG9uc2VEYXRhKHJlc3BvbnNlKSkpOworfQogCi1zdGF0aWMgdm9pZCB3ZWJTZWNLZXljaGFp
bkl0ZW1Db3B5Q29udGVudE9uTWFpblRocmVhZCh2b2lkKiB2b2lkQ29udGV4dCkKK3N0YXRpYyBQ
YXNzT3duUHRyPFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YT4gc2VuZFNlcUtleWNoYWluSXRl
bVJlcXVlc3QoY29uc3QgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEmIHJlcXVlc3QpCiB7Ci0g
ICAgU2VjS2V5Y2hhaW5JdGVtQ29udGV4dCogY29udGV4dCA9IChTZWNLZXljaGFpbkl0ZW1Db250
ZXh0Kil2b2lkQ29udGV4dDsKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBnZW5lcmF0ZVNlY0tl
eWNoYWluSXRlbVJlcXVlc3RJRCgpOworICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlNlY0tleWNoYWluSXRl
bVJlcXVlc3QocmVxdWVzdElELCByZXF1ZXN0KSwgMCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEgcmVxdWVzdERhdGEoY29udGV4dC0+
aXRlbSwgY29udGV4dC0+YXR0cmlidXRlTGlzdCk7Ci0gICAgU2VjS2V5Y2hhaW5JdGVtUmVzcG9u
c2VEYXRhIHJlc3BvbnNlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlv
bigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpTZWNLZXljaGFpbkl0ZW1D
b3B5Q29udGVudChyZXF1ZXN0RGF0YSksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlNlY0tl
eWNoYWluSXRlbUNvcHlDb250ZW50OjpSZXBseShyZXNwb25zZSksIDApKSB7Ci0gICAgICAgIGNv
bnRleHQtPnJlc3VsdENvZGUgPSBlcnJTZWNJbnRlcmFjdGlvbk5vdEFsbG93ZWQ7Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICAgICAK
LSAgICBhbGxvY2F0ZUF0dHJpYnV0ZUxpc3RDb250ZW50cyhyZXNwb25zZS5hdHRyaWJ1dGVzKCks
IGNvbnRleHQtPmF0dHJpYnV0ZUxpc3QpOwotICAgIGFsbG9jYXRlS2V5Y2hhaW5JdGVtQ29udGVu
dERhdGEocmVzcG9uc2UuZGF0YSgpLCBjb250ZXh0LT5yZXN1bHRMZW5ndGgsIGNvbnRleHQtPnJl
c3VsdERhdGEpOwotICAgIGlmIChjb250ZXh0LT5yZXN1bHRJdGVtQ2xhc3MpCi0gICAgICAgICpj
b250ZXh0LT5yZXN1bHRJdGVtQ2xhc3MgPSByZXNwb25zZS5pdGVtQ2xhc3MoKTsKLSAgICBjb250
ZXh0LT5yZXN1bHRDb2RlID0gcmVzcG9uc2UucmVzdWx0Q29kZSgpOworICAgIHJldHVybiByZXNw
b25zZU1hcCgpLndhaXRGb3JSZXNwb25zZShyZXF1ZXN0SUQpOwogfQogCiBzdGF0aWMgT1NTdGF0
dXMgd2ViU2VjS2V5Y2hhaW5JdGVtQ29weUNvbnRlbnQoU2VjS2V5Y2hhaW5JdGVtUmVmIGl0ZW0s
IFNlY0l0ZW1DbGFzcyogaXRlbUNsYXNzLCBTZWNLZXljaGFpbkF0dHJpYnV0ZUxpc3QqIGF0dHJM
aXN0LCBVSW50MzIqIGxlbmd0aCwgdm9pZCoqIG91dERhdGEpCiB7Ci0gICAgU2VjS2V5Y2hhaW5J
dGVtQ29udGV4dCBjb250ZXh0OwotICAgIG1lbXNldCgmY29udGV4dCwgMCwgc2l6ZW9mKFNlY0tl
eWNoYWluSXRlbUNvbnRleHQpKTsKLSAgICBjb250ZXh0Lml0ZW0gPSBpdGVtOwotICAgIGNvbnRl
eHQucmVzdWx0SXRlbUNsYXNzID0gaXRlbUNsYXNzOwotICAgIGNvbnRleHQuYXR0cmlidXRlTGlz
dCA9IGF0dHJMaXN0OwotICAgIGNvbnRleHQucmVzdWx0TGVuZ3RoID0gbGVuZ3RoOwotICAgIGNv
bnRleHQucmVzdWx0RGF0YSA9IG91dERhdGE7CisgICAgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERh
dGEgcmVxdWVzdChTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YTo6Q29weUNvbnRlbnQsIGl0ZW0s
IGF0dHJMaXN0KTsKKyAgICBPd25QdHI8U2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhPiByZXNw
b25zZSA9IHNlbmRTZXFLZXljaGFpbkl0ZW1SZXF1ZXN0KHJlcXVlc3QpOworICAgIGlmICghcmVz
cG9uc2UpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBl
cnJTZWNJbnRlcmFjdGlvbk5vdEFsbG93ZWQ7CisgICAgfQogCi0gICAgY2FsbE9uQ29yZUlQQ0Ns
aWVudFJ1bkxvb3BBbmRXYWl0KHdlYlNlY0tleWNoYWluSXRlbUNvcHlDb250ZW50T25NYWluVGhy
ZWFkLCAmY29udGV4dCk7CisgICAgaWYgKGl0ZW1DbGFzcykKKyAgICAgICAgKml0ZW1DbGFzcyA9
IHJlc3BvbnNlLT5pdGVtQ2xhc3MoKTsKKyAgICBhbGxvY2F0ZUF0dHJpYnV0ZUxpc3RDb250ZW50
cyhyZXNwb25zZS0+YXR0cmlidXRlcygpLCBhdHRyTGlzdCk7CisgICAgYWxsb2NhdGVLZXljaGFp
bkl0ZW1Db250ZW50RGF0YShyZXNwb25zZS0+ZGF0YSgpLCBsZW5ndGgsIG91dERhdGEpOwogCi0g
ICAgLy8gRklYTUU6IHNob3VsZCByZXR1cm4gY29udGV4dC5yZXN1bHRDb2RlLiBSZXR1cm5pbmcg
bm9FcnIgaXMgYSB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vOTUyMDg4Nj47CisgICAg
Ly8gRklYTUU6IHNob3VsZCByZXR1cm4gcmVzcG9uc2UtPnJlc3VsdENvZGUoKS4gUmV0dXJuaW5n
IG5vRXJyIGlzIGEgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzk1MjA4ODY+OwogICAg
IC8vIHRoZSBhdXRoZW50aWNhdGlvbiBzaG91bGQgZmFpbCBhbnl3YXksIHNpbmNlIG9uIGVycm9y
IG5vIGRhdGEgd2lsbCBiZSByZXR1cm5lZC4KICAgICByZXR1cm4gbm9FcnI7CiB9CiAKLXN0YXRp
YyB2b2lkIHdlYlNlY0tleWNoYWluSXRlbUNyZWF0ZUZyb21Db250ZW50T25NYWluVGhyZWFkKHZv
aWQqIHZvaWRDb250ZXh0KQorc3RhdGljIE9TU3RhdHVzIHdlYlNlY0tleWNoYWluSXRlbUNyZWF0
ZUZyb21Db250ZW50KFNlY0l0ZW1DbGFzcyBpdGVtQ2xhc3MsIFNlY0tleWNoYWluQXR0cmlidXRl
TGlzdCogYXR0ckxpc3QsIFVJbnQzMiBsZW5ndGgsIGNvbnN0IHZvaWQqIGRhdGEsIFNlY0tleWNo
YWluSXRlbVJlZiAqaXRlbSkKIHsKLSAgICBTZWNLZXljaGFpbkl0ZW1Db250ZXh0KiBjb250ZXh0
ID0gKFNlY0tleWNoYWluSXRlbUNvbnRleHQqKXZvaWRDb250ZXh0OwotCi0gICAgU2VjS2V5Y2hh
aW5JdGVtUmVxdWVzdERhdGEgcmVxdWVzdERhdGEoY29udGV4dC0+aW5pdGlhbEl0ZW1DbGFzcywg
Y29udGV4dC0+YXR0cmlidXRlTGlzdCwgY29udGV4dC0+bGVuZ3RoLCBjb250ZXh0LT5kYXRhKTsK
LSAgICBTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEgcmVzcG9uc2U7Ci0gICAgaWYgKCFXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OlNlY0tleWNoYWluSXRlbUNyZWF0ZUZyb21Db250ZW50KHJlcXVlc3REYXRhKSwg
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U2VjS2V5Y2hhaW5JdGVtQ3JlYXRlRnJvbUNvbnRl
bnQ6OlJlcGx5KHJlc3BvbnNlKSwgMCkpIHsKLSAgICAgICAgY29udGV4dC0+cmVzdWx0Q29kZSA9
IGVyclNlY0ludGVyYWN0aW9uTm90QWxsb3dlZDsKKyAgICBTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0
RGF0YSByZXF1ZXN0KFNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhOjpDcmVhdGVGcm9tQ29udGVu
dCwgaXRlbUNsYXNzLCBhdHRyTGlzdCwgbGVuZ3RoLCBkYXRhKTsKKyAgICBPd25QdHI8U2VjS2V5
Y2hhaW5JdGVtUmVzcG9uc2VEYXRhPiByZXNwb25zZSA9IHNlbmRTZXFLZXljaGFpbkl0ZW1SZXF1
ZXN0KHJlcXVlc3QpOworICAgIGlmICghcmVzcG9uc2UpIHsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGVyclNlY0ludGVyYWN0
aW9uTm90QWxsb3dlZDsKICAgICB9CiAKLSAgICBpZiAocmVzcG9uc2Uua2V5Y2hhaW5JdGVtKCkp
Ci0gICAgICAgIENGUmV0YWluKHJlc3BvbnNlLmtleWNoYWluSXRlbSgpKTsKLSAgICBjb250ZXh0
LT5pdGVtID0gcmVzcG9uc2Uua2V5Y2hhaW5JdGVtKCk7Ci0gICAgY29udGV4dC0+cmVzdWx0Q29k
ZSA9IHJlc3BvbnNlLnJlc3VsdENvZGUoKTsKLX0KLQotc3RhdGljIE9TU3RhdHVzIHdlYlNlY0tl
eWNoYWluSXRlbUNyZWF0ZUZyb21Db250ZW50KFNlY0l0ZW1DbGFzcyBpdGVtQ2xhc3MsIFNlY0tl
eWNoYWluQXR0cmlidXRlTGlzdCogYXR0ckxpc3QsIFVJbnQzMiBsZW5ndGgsIGNvbnN0IHZvaWQq
IGRhdGEsIFNlY0tleWNoYWluSXRlbVJlZiAqaXRlbSkKLXsKLSAgICBTZWNLZXljaGFpbkl0ZW1D
b250ZXh0IGNvbnRleHQ7Ci0gICAgbWVtc2V0KCZjb250ZXh0LCAwLCBzaXplb2YoU2VjS2V5Y2hh
aW5JdGVtQ29udGV4dCkpOwotICAgIGNvbnRleHQuaW5pdGlhbEl0ZW1DbGFzcyA9IGl0ZW1DbGFz
czsKLSAgICBjb250ZXh0LmF0dHJpYnV0ZUxpc3QgPSBhdHRyTGlzdDsKLSAgICBjb250ZXh0Lmxl
bmd0aCA9IGxlbmd0aDsKLSAgICBjb250ZXh0LmRhdGEgPSBkYXRhOwotICAgIAotICAgIGNhbGxP
bkNvcmVJUENDbGllbnRSdW5Mb29wQW5kV2FpdCh3ZWJTZWNLZXljaGFpbkl0ZW1DcmVhdGVGcm9t
Q29udGVudE9uTWFpblRocmVhZCwgJmNvbnRleHQpOwotICAgIAogICAgIGlmIChpdGVtKQotICAg
ICAgICAqaXRlbSA9IGNvbnRleHQuaXRlbTsKLSAgICBlbHNlCi0gICAgICAgIENGUmVsZWFzZShj
b250ZXh0Lml0ZW0pOworICAgICAgICAqaXRlbSA9IFJldGFpblB0cjxTZWNLZXljaGFpbkl0ZW1S
ZWY+KHJlc3BvbnNlLT5rZXljaGFpbkl0ZW0oKSkubGVha1JlZigpOwogCi0gICAgcmV0dXJuIGNv
bnRleHQucmVzdWx0Q29kZTsKKyAgICByZXR1cm4gcmVzcG9uc2UtPnJlc3VsdENvZGUoKTsKIH0K
IAotc3RhdGljIHZvaWQgd2ViU2VjS2V5Y2hhaW5JdGVtTW9kaWZ5Q29udGVudE9uTWFpblRocmVh
ZCh2b2lkKiB2b2lkQ29udGV4dCkKK3N0YXRpYyBPU1N0YXR1cyB3ZWJTZWNLZXljaGFpbkl0ZW1N
b2RpZnlDb250ZW50KFNlY0tleWNoYWluSXRlbVJlZiBpdGVtUmVmLCBjb25zdCBTZWNLZXljaGFp
bkF0dHJpYnV0ZUxpc3QqIGF0dHJMaXN0LCBVSW50MzIgbGVuZ3RoLCBjb25zdCB2b2lkKiBkYXRh
KQogewotICAgIFNlY0tleWNoYWluSXRlbUNvbnRleHQqIGNvbnRleHQgPSAoU2VjS2V5Y2hhaW5J
dGVtQ29udGV4dCopdm9pZENvbnRleHQ7Ci0KLSAgICBTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0
YSByZXF1ZXN0RGF0YShjb250ZXh0LT5pdGVtLCBjb250ZXh0LT5hdHRyaWJ1dGVMaXN0LCBjb250
ZXh0LT5sZW5ndGgsIGNvbnRleHQtPmRhdGEpOwotICAgIFNlY0tleWNoYWluSXRlbVJlc3BvbnNl
RGF0YSByZXNwb25zZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U2VjS2V5Y2hhaW5JdGVtTW9k
aWZ5Q29udGVudChyZXF1ZXN0RGF0YSksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlNlY0tl
eWNoYWluSXRlbU1vZGlmeUNvbnRlbnQ6OlJlcGx5KHJlc3BvbnNlKSwgMCkpIHsKLSAgICAgICAg
Y29udGV4dC0+cmVzdWx0Q29kZSA9IGVyclNlY0ludGVyYWN0aW9uTm90QWxsb3dlZDsKKyAgICBT
ZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YSByZXF1ZXN0KFNlY0tleWNoYWluSXRlbVJlcXVlc3RE
YXRhOjpNb2RpZnlDb250ZW50LCBpdGVtUmVmLCAoU2VjS2V5Y2hhaW5BdHRyaWJ1dGVMaXN0Kilh
dHRyTGlzdCwgbGVuZ3RoLCBkYXRhKTsKKyAgICBPd25QdHI8U2VjS2V5Y2hhaW5JdGVtUmVzcG9u
c2VEYXRhPiByZXNwb25zZSA9IHNlbmRTZXFLZXljaGFpbkl0ZW1SZXF1ZXN0KHJlcXVlc3QpOwor
ICAgIGlmICghcmVzcG9uc2UpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGVyclNlY0ludGVyYWN0aW9uTm90QWxsb3dlZDsK
ICAgICB9Ci0gICAgICAgIAotICAgIGNvbnRleHQtPnJlc3VsdENvZGUgPSByZXNwb25zZS5yZXN1
bHRDb2RlKCk7Ci19CiAKLXN0YXRpYyBPU1N0YXR1cyB3ZWJTZWNLZXljaGFpbkl0ZW1Nb2RpZnlD
b250ZW50KFNlY0tleWNoYWluSXRlbVJlZiBpdGVtUmVmLCBjb25zdCBTZWNLZXljaGFpbkF0dHJp
YnV0ZUxpc3QqIGF0dHJMaXN0LCBVSW50MzIgbGVuZ3RoLCBjb25zdCB2b2lkKiBkYXRhKQotewot
ICAgIFNlY0tleWNoYWluSXRlbUNvbnRleHQgY29udGV4dDsKLSAgICBjb250ZXh0Lml0ZW0gPSBp
dGVtUmVmOwotICAgIGNvbnRleHQuYXR0cmlidXRlTGlzdCA9IChTZWNLZXljaGFpbkF0dHJpYnV0
ZUxpc3QqKWF0dHJMaXN0OwotICAgIGNvbnRleHQubGVuZ3RoID0gbGVuZ3RoOwotICAgIGNvbnRl
eHQuZGF0YSA9IGRhdGE7Ci0gICAgCi0gICAgY2FsbE9uQ29yZUlQQ0NsaWVudFJ1bkxvb3BBbmRX
YWl0KHdlYlNlY0tleWNoYWluSXRlbU1vZGlmeUNvbnRlbnRPbk1haW5UaHJlYWQsICZjb250ZXh0
KTsKLSAgICAKLSAgICByZXR1cm4gY29udGV4dC5yZXN1bHRDb2RlOworICAgIHJldHVybiByZXNw
b25zZS0+cmVzdWx0Q29kZSgpOwogfQogCiB2b2lkIGluaXRpYWxpemVLZXljaGFpbkl0ZW1TaGlt
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL0tleWNoYWluU2hp
bVJlc3BvbnNlTWFwLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpblNo
aW1SZXNwb25zZU1hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0YTc4ZTY0ODJlZDJkNTJiYjg3M2I1NTA2MWJk
NmY2Y2VhNzkwZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L21hYy9LZXljaGFpblNoaW1SZXNwb25zZU1hcC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEtleWNoYWluU2hpbVJlc3BvbnNlTWFwX2gKKyNkZWZpbmUgS2V5Y2hhaW5T
aGltUmVzcG9uc2VNYXBfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgS2V5
Y2hhaW5TaGltUmVzcG9uc2VNYXAgeworcHVibGljOgorICAgIFBhc3NPd25QdHI8VD4gd2FpdEZv
clJlc3BvbnNlKHVpbnQ2NF90IHJlcXVlc3RJRCkKKyAgICB7CisgICAgICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisKKyAgICAgICAg
ICAgIGlmIChPd25QdHI8VD4gcmVzcG9uc2UgPSBtX3Jlc3BvbnNlcy50YWtlKHJlcXVlc3RJRCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnJlbGVhc2UoKTsKKworICAgICAgICAg
ICAgbV9jb25kaXRpb24ud2FpdChtX211dGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90
IHJlcXVlc3RJRCwgUGFzc093blB0cjxUPiByZXNwb25zZSkKKyAgICB7CisgICAgICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICAgICAgQVNTRVJUKCFtX3Jlc3BvbnNlcy5jb250
YWlucyhyZXF1ZXN0SUQpKTsKKworICAgICAgICBtX3Jlc3BvbnNlcy5zZXQocmVxdWVzdElELCBy
ZXNwb25zZSk7CisgICAgICAgIG1fY29uZGl0aW9uLnNpZ25hbCgpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBNdXRleCBtX211dGV4OworICAgIFRocmVhZENvbmRpdGlvbiBtX2NvbmRpdGlvbjsK
KworICAgIEhhc2hNYXA8dWludDY0X3QsIE93blB0cjxUPiA+IG1fcmVzcG9uc2VzOworfTsKKwor
CisKKyNlbmRpZiAvLyBLZXljaGFpblNoaW1SZXNwb25zZU1hcF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9TZWNJdGVtU2hpbU1ldGhvZHMuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltTWV0aG9kcy5oCmluZGV4IDlkNjdlZDk4
MjhjNjQ4OWIyNTE0MzRkNzRjMzI4ZDU1NzhmOGZhZTMuLjdjOGQ0NzkxZGNiMDdmNGMxYzRhMWQw
YjY2NzFlN2VkYmQxY2E4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
bWFjL1NlY0l0ZW1TaGltTWV0aG9kcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
bWFjL1NlY0l0ZW1TaGltTWV0aG9kcy5oCkBAIC0zMCw2ICszMCw5IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiB2b2lkIGluaXRpYWxpemVTZWNJdGVtU2hpbSgpOwogCitjbGFzcyBTZWNJdGVtUmVz
cG9uc2VEYXRhOwordm9pZCBkaWRSZWNlaXZlU2VjSXRlbVJlc3BvbnNlKHVpbnQ2NF90IHJlcXVl
c3RJRCwgY29uc3QgU2VjSXRlbVJlc3BvbnNlRGF0YSYpOworCiB9CiAKICNlbmRpZiAvLyBTZWNJ
dGVtU2hpbU1ldGhvZHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9t
YWMvU2VjSXRlbVNoaW1NZXRob2RzLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMv
U2VjSXRlbVNoaW1NZXRob2RzLm1tCmluZGV4IDViMmI3NWNlOGE4MjE5NzQ0NjNhYzJhNDE2ZjU0
ZjdhMzc1ZjVjMzQuLmMzNTc1NzQ0Zjg2YTM4ZjFiMWU4MjNmM2Y3YWU2N2I2Yjk3ODQ2NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltTWV0aG9k
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9TZWNJdGVtU2hpbU1ldGhv
ZHMubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1df
TEVPUEFSRCkKIAotI2ltcG9ydCAiQ29yZUlQQ0NsaWVudFJ1bkxvb3AuaCIKKyNpbXBvcnQgIktl
eWNoYWluU2hpbVJlc3BvbnNlTWFwLmgiCiAjaW1wb3J0ICJTZWNJdGVtUmVxdWVzdERhdGEuaCIK
ICNpbXBvcnQgIlNlY0l0ZW1SZXNwb25zZURhdGEuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIK
QEAgLTM5LDEyMiArMzksNjggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLS8vIEZJWE1FICho
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA5NzUpIC0gT25jZSBDb3Jl
SVBDIHN1cHBvcnRzIHN5bmMgbWVzc2FnaW5nIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLAotLy8g
d2UgY2FuIHJlbW92ZSBTZWNJdGVtQVBJQ29udGV4dCBhbmQgdGhlc2UgNCBtYWluLXRocmVhZCBt
ZXRob2RzLCBhbmQgd2UgY2FuIGhhdmUgdGhlIHNoaW0gbWV0aG9kcyBjYWxsIG91dCBkaXJlY3Rs
eSAKLS8vIGZyb20gd2hhdGV2ZXIgdGhyZWFkIHRoZXkncmUgb24uCi0KLXN0cnVjdCBTZWNJdGVt
QVBJQ29udGV4dCB7Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5OwotICAgIENGRGljdGlvbmFy
eVJlZiBhdHRyaWJ1dGVzVG9VcGRhdGU7Ci0gICAgQ0ZUeXBlUmVmIHJlc3VsdE9iamVjdDsKLSAg
ICBPU1N0YXR1cyByZXN1bHRDb2RlOwotfTsKLQotc3RhdGljIHZvaWQgd2ViU2VjSXRlbUNvcHlN
YXRjaGluZ01haW5UaHJlYWQodm9pZCogdm9pZENvbnRleHQpCitzdGF0aWMgS2V5Y2hhaW5TaGlt
UmVzcG9uc2VNYXA8U2VjSXRlbVJlc3BvbnNlRGF0YT4mIHJlc3BvbnNlTWFwKCkKIHsKLSAgICBT
ZWNJdGVtQVBJQ29udGV4dCogY29udGV4dCA9IChTZWNJdGVtQVBJQ29udGV4dCopdm9pZENvbnRl
eHQ7Ci0gICAgCi0gICAgU2VjSXRlbVJlcXVlc3REYXRhIHJlcXVlc3REYXRhKGNvbnRleHQtPnF1
ZXJ5KTsKLSAgICBTZWNJdGVtUmVzcG9uc2VEYXRhIHJlc3BvbnNlOwotICAgIGlmICghV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpTZWNJdGVtQ29weU1hdGNoaW5nKHJlcXVlc3REYXRhKSwgTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6U2VjSXRlbUNvcHlNYXRjaGluZzo6UmVwbHkocmVzcG9uc2UpLCAwKSkgewot
ICAgICAgICBjb250ZXh0LT5yZXN1bHRDb2RlID0gZXJyU2VjSW50ZXJhY3Rpb25Ob3RBbGxvd2Vk
OwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICAKLSAgICBjb250ZXh0LT5yZXN1bHRPYmplY3QgPSByZXNwb25zZS5yZXN1bHRPYmplY3Qo
KS5sZWFrUmVmKCk7Ci0gICAgY29udGV4dC0+cmVzdWx0Q29kZSA9IHJlc3BvbnNlLnJlc3VsdENv
ZGUoKTsKKyAgICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoS2V5Y2hhaW5TaGltUmVzcG9u
c2VNYXA8U2VjSXRlbVJlc3BvbnNlRGF0YT4mLCByZXNwb25zZU1hcCA9ICpuZXcgS2V5Y2hhaW5T
aGltUmVzcG9uc2VNYXA8U2VjSXRlbVJlc3BvbnNlRGF0YT4pOworICAgIHJldHVybiByZXNwb25z
ZU1hcDsKIH0KIAotc3RhdGljIE9TU3RhdHVzIHdlYlNlY0l0ZW1Db3B5TWF0Y2hpbmcoQ0ZEaWN0
aW9uYXJ5UmVmIHF1ZXJ5LCBDRlR5cGVSZWYqIHJlc3VsdCkKK3N0YXRpYyB1aW50NjRfdCBnZW5l
cmF0ZVNlY0l0ZW1SZXF1ZXN0SUQoKQogewotICAgIFNlY0l0ZW1BUElDb250ZXh0IGNvbnRleHQ7
Ci0gICAgY29udGV4dC5xdWVyeSA9IHF1ZXJ5OwotICAgIAotICAgIGNhbGxPbkNvcmVJUENDbGll
bnRSdW5Mb29wQW5kV2FpdCh3ZWJTZWNJdGVtQ29weU1hdGNoaW5nTWFpblRocmVhZCwgJmNvbnRl
eHQpOwotICAgIAotICAgIGlmIChyZXN1bHQpCi0gICAgICAgICpyZXN1bHQgPSBjb250ZXh0LnJl
c3VsdE9iamVjdDsKLSAgICByZXR1cm4gY29udGV4dC5yZXN1bHRDb2RlOworICAgIHN0YXRpYyBp
bnQ2NF90IHVuaXF1ZVNlY0l0ZW1SZXF1ZXN0SUQ7CisgICAgcmV0dXJuIE9TQXRvbWljSW5jcmVt
ZW50NjRCYXJyaWVyKCZ1bmlxdWVTZWNJdGVtUmVxdWVzdElEKTsKIH0KIAotc3RhdGljIHZvaWQg
d2ViU2VjSXRlbUFkZE9uTWFpblRocmVhZCh2b2lkKiB2b2lkQ29udGV4dCkKK3ZvaWQgZGlkUmVj
ZWl2ZVNlY0l0ZW1SZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFNlY0l0ZW1SZXNw
b25zZURhdGEmIHJlc3BvbnNlKQogewotICAgIFNlY0l0ZW1BUElDb250ZXh0KiBjb250ZXh0ID0g
KFNlY0l0ZW1BUElDb250ZXh0Kil2b2lkQ29udGV4dDsKLSAgICAKLSAgICBTZWNJdGVtUmVxdWVz
dERhdGEgcmVxdWVzdERhdGEoY29udGV4dC0+cXVlcnkpOwotICAgIFNlY0l0ZW1SZXNwb25zZURh
dGEgcmVzcG9uc2U7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlNlY0l0ZW1BZGQocmVxdWVzdERh
dGEpLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpTZWNJdGVtQWRkOjpSZXBseShyZXNwb25z
ZSksIDApKSB7Ci0gICAgICAgIGNvbnRleHQtPnJlc3VsdENvZGUgPSBlcnJTZWNJbnRlcmFjdGlv
bk5vdEFsbG93ZWQ7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIGNvbnRleHQtPnJlc3VsdE9iamVjdCA9IHJlc3BvbnNlLnJl
c3VsdE9iamVjdCgpLmxlYWtSZWYoKTsKLSAgICBjb250ZXh0LT5yZXN1bHRDb2RlID0gcmVzcG9u
c2UucmVzdWx0Q29kZSgpOworICAgIHJlc3BvbnNlTWFwKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHJl
cXVlc3RJRCwgYWRvcHRQdHIobmV3IFNlY0l0ZW1SZXNwb25zZURhdGEocmVzcG9uc2UpKSk7CiB9
CiAKLXN0YXRpYyBPU1N0YXR1cyB3ZWJTZWNJdGVtQWRkKENGRGljdGlvbmFyeVJlZiBxdWVyeSwg
Q0ZUeXBlUmVmKiByZXN1bHQpCitzdGF0aWMgUGFzc093blB0cjxTZWNJdGVtUmVzcG9uc2VEYXRh
PiBzZW5kU2VxSXRlbVJlcXVlc3QoU2VjSXRlbVJlcXVlc3REYXRhOjpUeXBlIHJlcXVlc3RUeXBl
LCBDRkRpY3Rpb25hcnlSZWYgcXVlcnksIENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzVG9NYXRj
aCA9IDApCiB7Ci0gICAgU2VjSXRlbUFQSUNvbnRleHQgY29udGV4dDsKLSAgICBjb250ZXh0LnF1
ZXJ5ID0gcXVlcnk7Ci0gICAgCi0gICAgY2FsbE9uQ29yZUlQQ0NsaWVudFJ1bkxvb3BBbmRXYWl0
KHdlYlNlY0l0ZW1BZGRPbk1haW5UaHJlYWQsICZjb250ZXh0KTsKLSAgICAKLSAgICBpZiAocmVz
dWx0KQotICAgICAgICAqcmVzdWx0ID0gY29udGV4dC5yZXN1bHRPYmplY3Q7Ci0gICAgcmV0dXJu
IGNvbnRleHQucmVzdWx0Q29kZTsKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBnZW5lcmF0ZVNl
Y0l0ZW1SZXF1ZXN0SUQoKTsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpTZWNJdGVtUmVxdWVzdChyZXF1
ZXN0SUQsIFNlY0l0ZW1SZXF1ZXN0RGF0YShyZXF1ZXN0VHlwZSwgcXVlcnksIGF0dHJpYnV0ZXNU
b01hdGNoKSksIDApKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiByZXNw
b25zZU1hcCgpLndhaXRGb3JSZXNwb25zZShyZXF1ZXN0SUQpOwogfQogCi1zdGF0aWMgdm9pZCB3
ZWJTZWNJdGVtVXBkYXRlT25NYWluVGhyZWFkKHZvaWQqIHZvaWRDb250ZXh0KQorc3RhdGljIE9T
U3RhdHVzIHdlYlNlY0l0ZW1Db3B5TWF0Y2hpbmcoQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5LCBDRlR5
cGVSZWYqIHJlc3VsdCkKIHsKLSAgICBTZWNJdGVtQVBJQ29udGV4dCogY29udGV4dCA9IChTZWNJ
dGVtQVBJQ29udGV4dCopdm9pZENvbnRleHQ7Ci0gICAgCi0gICAgU2VjSXRlbVJlcXVlc3REYXRh
IHJlcXVlc3REYXRhKGNvbnRleHQtPnF1ZXJ5LCBjb250ZXh0LT5hdHRyaWJ1dGVzVG9VcGRhdGUp
OwotICAgIFNlY0l0ZW1SZXNwb25zZURhdGEgcmVzcG9uc2U7Ci0gICAgaWYgKCFXZWJQcm9jZXNz
OjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OlNlY0l0ZW1VcGRhdGUocmVxdWVzdERhdGEpLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpTZWNJdGVtVXBkYXRlOjpSZXBseShyZXNwb25zZSksIDApKSB7Ci0gICAgICAgIGNvbnRleHQt
PnJlc3VsdENvZGUgPSBlcnJTZWNJbnRlcmFjdGlvbk5vdEFsbG93ZWQ7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGNvbnRl
eHQtPnJlc3VsdENvZGUgPSByZXNwb25zZS5yZXN1bHRDb2RlKCk7CisgICAgT3duUHRyPFNlY0l0
ZW1SZXNwb25zZURhdGE+IHJlc3BvbnNlID0gc2VuZFNlcUl0ZW1SZXF1ZXN0KFNlY0l0ZW1SZXF1
ZXN0RGF0YTo6Q29weU1hdGNoaW5nLCBxdWVyeSk7CisgICAgaWYgKCFyZXNwb25zZSkKKyAgICAg
ICAgcmV0dXJuIGVyclNlY0ludGVyYWN0aW9uTm90QWxsb3dlZDsKKworICAgICpyZXN1bHQgPSBy
ZXNwb25zZS0+cmVzdWx0T2JqZWN0KCkubGVha1JlZigpOworICAgIHJldHVybiByZXNwb25zZS0+
cmVzdWx0Q29kZSgpOwogfQogCi1zdGF0aWMgT1NTdGF0dXMgd2ViU2VjSXRlbVVwZGF0ZShDRkRp
Y3Rpb25hcnlSZWYgcXVlcnksIENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzVG9VcGRhdGUpCitz
dGF0aWMgT1NTdGF0dXMgd2ViU2VjSXRlbUFkZChDRkRpY3Rpb25hcnlSZWYgcXVlcnksIENGVHlw
ZVJlZiogcmVzdWx0KQogewotICAgIFNlY0l0ZW1BUElDb250ZXh0IGNvbnRleHQ7Ci0gICAgY29u
dGV4dC5xdWVyeSA9IHF1ZXJ5OwotICAgIGNvbnRleHQuYXR0cmlidXRlc1RvVXBkYXRlID0gYXR0
cmlidXRlc1RvVXBkYXRlOwotICAgIAotICAgIGNhbGxPbkNvcmVJUENDbGllbnRSdW5Mb29wQW5k
V2FpdCh3ZWJTZWNJdGVtVXBkYXRlT25NYWluVGhyZWFkLCAmY29udGV4dCk7CisgICAgT3duUHRy
PFNlY0l0ZW1SZXNwb25zZURhdGE+IHJlc3BvbnNlID0gc2VuZFNlcUl0ZW1SZXF1ZXN0KFNlY0l0
ZW1SZXF1ZXN0RGF0YTo6QWRkLCBxdWVyeSk7CisgICAgaWYgKCFyZXNwb25zZSkKKyAgICAgICAg
cmV0dXJuIGVyclNlY0ludGVyYWN0aW9uTm90QWxsb3dlZDsKICAgICAKLSAgICByZXR1cm4gY29u
dGV4dC5yZXN1bHRDb2RlOworICAgICpyZXN1bHQgPSByZXNwb25zZS0+cmVzdWx0T2JqZWN0KCku
bGVha1JlZigpOworICAgIHJldHVybiByZXNwb25zZS0+cmVzdWx0Q29kZSgpOwogfQogCi1zdGF0
aWMgdm9pZCB3ZWJTZWNJdGVtRGVsZXRlT25NYWluVGhyZWFkKHZvaWQqIHZvaWRDb250ZXh0KQor
c3RhdGljIE9TU3RhdHVzIHdlYlNlY0l0ZW1VcGRhdGUoQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5LCBD
RkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlc1RvVXBkYXRlKQogewotICAgIFNlY0l0ZW1BUElDb250
ZXh0KiBjb250ZXh0ID0gKFNlY0l0ZW1BUElDb250ZXh0Kil2b2lkQ29udGV4dDsKKyAgICBPd25Q
dHI8U2VjSXRlbVJlc3BvbnNlRGF0YT4gcmVzcG9uc2UgPSBzZW5kU2VxSXRlbVJlcXVlc3QoU2Vj
SXRlbVJlcXVlc3REYXRhOjpVcGRhdGUsIHF1ZXJ5LCBhdHRyaWJ1dGVzVG9VcGRhdGUpOworICAg
IGlmICghcmVzcG9uc2UpCisgICAgICAgIHJldHVybiBlcnJTZWNJbnRlcmFjdGlvbk5vdEFsbG93
ZWQ7CiAgICAgCi0gICAgU2VjSXRlbVJlcXVlc3REYXRhIHJlcXVlc3REYXRhKGNvbnRleHQtPnF1
ZXJ5KTsKLSAgICBTZWNJdGVtUmVzcG9uc2VEYXRhIHJlc3BvbnNlOwotICAgIGlmICghV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpTZWNJdGVtRGVsZXRlKHJlcXVlc3REYXRhKSwgTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6U2VjSXRlbURlbGV0ZTo6UmVwbHkocmVzcG9uc2UpLCAwKSkgewotICAgICAgICBjb250
ZXh0LT5yZXN1bHRDb2RlID0gZXJyU2VjSW50ZXJhY3Rpb25Ob3RBbGxvd2VkOwotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBj
b250ZXh0LT5yZXN1bHRDb2RlID0gcmVzcG9uc2UucmVzdWx0Q29kZSgpOworICAgIHJldHVybiBy
ZXNwb25zZS0+cmVzdWx0Q29kZSgpOwogfQogCiBzdGF0aWMgT1NTdGF0dXMgd2ViU2VjSXRlbURl
bGV0ZShDRkRpY3Rpb25hcnlSZWYgcXVlcnkpCiB7Ci0gICAgU2VjSXRlbUFQSUNvbnRleHQgY29u
dGV4dDsKLSAgICBjb250ZXh0LnF1ZXJ5ID0gcXVlcnk7CisgICAgT3duUHRyPFNlY0l0ZW1SZXNw
b25zZURhdGE+IHJlc3BvbnNlID0gc2VuZFNlcUl0ZW1SZXF1ZXN0KFNlY0l0ZW1SZXF1ZXN0RGF0
YTo6RGVsZXRlLCBxdWVyeSk7CisgICAgaWYgKCFyZXNwb25zZSkKKyAgICAgICAgcmV0dXJuIGVy
clNlY0ludGVyYWN0aW9uTm90QWxsb3dlZDsKICAgICAKLSAgICBjYWxsT25Db3JlSVBDQ2xpZW50
UnVuTG9vcEFuZFdhaXQod2ViU2VjSXRlbURlbGV0ZU9uTWFpblRocmVhZCwgJmNvbnRleHQpOwot
Ci0gICAgcmV0dXJuIGNvbnRleHQucmVzdWx0Q29kZTsKKyAgICByZXR1cm4gcmVzcG9uc2UtPnJl
c3VsdENvZGUoKTsKIH0KIAogdm9pZCBpbml0aWFsaXplU2VjSXRlbVNoaW0oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KaW5kZXggZTk2YWI0ODM0
NmIxMjRjMzgwODljNjE3MGM5YWRkMjc5NDExYTIxNy4uN2Q2N2UxZTY4NWVlYzhjZWVjZjg2N2Ji
YjllMTk2OWZkYmNmZDRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9t
YWMvV2ViUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9X
ZWJQcm9jZXNzTWFjLm1tCkBAIC0yNzIsNCArMjcyLDE4IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxh
dGZvcm1UZXJtaW5hdGUoKQogewogfQogCit2b2lkIFdlYlByb2Nlc3M6OnNlY0l0ZW1SZXNwb25z
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTZWNJdGVt
UmVzcG9uc2VEYXRhJiByZXNwb25zZSkKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9X
X0xFT1BBUkQpCisgICAgZGlkUmVjZWl2ZVNlY0l0ZW1SZXNwb25zZShyZXF1ZXN0SUQsIHJlc3Bv
bnNlKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlByb2Nlc3M6OnNlY0tleWNoYWluSXRlbVJlc3Bv
bnNlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFNlY0tl
eWNoYWluSXRlbVJlc3BvbnNlRGF0YSYgcmVzcG9uc2UpCit7CisjaWYgZGVmaW5lZChCVUlMRElO
R19PTl9TTk9XX0xFT1BBUkQpCisgICAgZGlkUmVjZWl2ZVNlY0tleWNoYWluSXRlbVJlc3BvbnNl
KHJlcXVlc3RJRCwgcmVzcG9uc2UpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAo=
</data>
<flag name="review"
          id="122545"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>