<?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>219709</bug_id>
          
          <creation_ts>2020-12-09 14:57:13 -0800</creation_ts>
          <short_desc>[WebAuthn] Adopt new UI for the Platform Authenticator makeCredential flow</short_desc>
          <delta_ts>2020-12-11 17:07:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1713313</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-09 14:57:13 -0800</bug_when>
    <thetext>Adopt new UI for the Platform Authenticator makeCredential flow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713314</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-09 14:57:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/72154774&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713820</commentid>
    <comment_count>2</comment_count>
      <attachid>415966</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-10 21:49:49 -0800</bug_when>
    <thetext>Created attachment 415966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713827</commentid>
    <comment_count>3</comment_count>
      <attachid>415970</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-10 22:26:33 -0800</bug_when>
    <thetext>Created attachment 415970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713984</commentid>
    <comment_count>4</comment_count>
      <attachid>415970</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-12-11 11:23:02 -0800</bug_when>
    <thetext>Comment on attachment 415970
Patch

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

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:237
&gt; +    // This is for the new UI.

I don&apos;t think you need this comment since the next line is conditional on the new UI.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:315
&gt; +    SecAccessControlRef accessControlRef = accessControl.get();

Does accessControlRef need to be retained in some fashion? Will calling &apos;verifyUser&apos; with this be safe?

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:119
&gt; +    [context evaluateAccessControl:accessControl operation:LAAccessControlOperationUseKeySign options:options.get() reply:reply.get()];

This method call seems to use &apos;accessControl&apos;, which is not guaranteed to still live since you moved the underlying object in the calling method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713990</commentid>
    <comment_count>5</comment_count>
      <attachid>415970</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-11 11:29:45 -0800</bug_when>
    <thetext>Comment on attachment 415970
Patch

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

Thanks Brent for reviewing this patch.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:237
&gt;&gt; +    // This is for the new UI.
&gt; 
&gt; I don&apos;t think you need this comment since the next line is conditional on the new UI.

Removed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:315
&gt;&gt; +    SecAccessControlRef accessControlRef = accessControl.get();
&gt; 
&gt; Does accessControlRef need to be retained in some fashion? Will calling &apos;verifyUser&apos; with this be safe?

Yes, it is retained in the callback.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:119
&gt;&gt; +    [context evaluateAccessControl:accessControl operation:LAAccessControlOperationUseKeySign options:options.get() reply:reply.get()];
&gt; 
&gt; This method call seems to use &apos;accessControl&apos;, which is not guaranteed to still live since you moved the underlying object in the calling method.

accessControl is held by the completionHandler, which is the held by reply. As long as the callee doesn&apos;t destruct the reply before verifying the accessControl, it should be safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713998</commentid>
    <comment_count>6</comment_count>
      <attachid>415970</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-12-11 11:41:25 -0800</bug_when>
    <thetext>Comment on attachment 415970
Patch

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

r=me

&gt;&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:315
&gt;&gt;&gt; +    SecAccessControlRef accessControlRef = accessControl.get();
&gt;&gt; 
&gt;&gt; Does accessControlRef need to be retained in some fashion? Will calling &apos;verifyUser&apos; with this be safe?
&gt; 
&gt; Yes, it is retained in the callback.

Ah! Gotcha, My mistake!

&gt;&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:119
&gt;&gt;&gt; +    [context evaluateAccessControl:accessControl operation:LAAccessControlOperationUseKeySign options:options.get() reply:reply.get()];
&gt;&gt; 
&gt;&gt; This method call seems to use &apos;accessControl&apos;, which is not guaranteed to still live since you moved the underlying object in the calling method.
&gt; 
&gt; accessControl is held by the completionHandler, which is the held by reply. As long as the callee doesn&apos;t destruct the reply before verifying the accessControl, it should be safe.

Got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714001</commentid>
    <comment_count>7</comment_count>
      <attachid>415970</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-11 11:43:42 -0800</bug_when>
    <thetext>Comment on attachment 415970
Patch

Thanks Brent for r+ this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714004</commentid>
    <comment_count>8</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-11 11:47:14 -0800</bug_when>
    <thetext>Committed r270694: &lt;https://trac.webkit.org/changeset/270694&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714188</commentid>
    <comment_count>9</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-11 17:07:01 -0800</bug_when>
    <thetext>A build fix:
Committed r270721: &lt;https://trac.webkit.org/changeset/270721&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415966</attachid>
            <date>2020-12-10 21:49:49 -0800</date>
            <delta_ts>2020-12-10 22:35:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219709-20201210214948.patch</filename>
            <type>text/plain</type>
            <size>28929</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRjMThiYTdiZGVlNzIzMTJm
MGZmMWNjOGNmNTM1MDBmMjM5ZjQ3NzIuLjc0YjdlZWZhMTk1M2UyMTgxMmQyNzU2MmU3Y2NkMWEx
YzgyNmJkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjAtMTItMTAgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFkb3B0IG5l
dyBVSSBmb3IgdGhlIFBsYXRmb3JtIEF1dGhlbnRpY2F0b3IgbWFrZUNyZWRlbnRpYWwgZmxvdwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NzA5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjE1NDc3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkb3B0cyB0aGUgbmV3IFVJIGZv
ciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvciBtYWtlQ3JlZGVudGlhbCBmbG93LiBJbiB0aGlz
IG5ldyBkZXNpZ24sCisgICAgICAgIHRoZSBVSSB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBjcmVh
dGluZyB0aGUgTEFDb250ZXh0IGFuZCBnZXQgaXQgdmVyaWZpZWQgYnkgdGhlIHVzZXIuIFRoZXJl
Zm9yZSwgV2ViS2l0CisgICAgICAgIGp1c3QgbmVlZHMgdG8gcmV2ZXJpZnkgdGhlIExBQ29udGV4
dCBpbiBub24tVUkgbW9kZSBhZ2FpbnN0IHRoZSBTZWNBY2Nlc3NDb250cm9sUmVmIHdpdGhvdXQg
aGFuZGxpbmcgYW55CisgICAgICAgIExBIFVJIGFueW1vcmUuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBtYW51YWwgdGVzdHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGlj
YXRpb25TZXJ2aWNlc0NvcmVTUEkuaDoKKyAgICAgICAgQWRkcyBhIG5ldyBjbGFzcyB3aGljaCBy
ZXByZXNlbnRzIGEgc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisKKyAgICAgICAgKiBSZXNvdXJjZXMv
U2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkF1dGhuLnNiOgorICAgICAg
ICBBZGRzIHJ1bGUgdG8gYWxsb3cgdGhlIFdlYkF1dGhuIHByb2Nlc3MgdG8gYWNjZXNzIEtleWNo
YWluIGFuZCBTRVAuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRvci5oOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yOjpzZXRXZWJBdXRo
ZW50aWNhdGlvbk1vZGVybkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9y
Ojp3ZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQgY29uc3QpOgorICAgICAgICBBZGRzIGEg
ZmxhZyB0byBrbm93IHdoaWNoIFVJIHRvIGNhbGwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjplbmFibGVNb2Rlcm5XZWJBdXRoZW50aWNhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjphdXRoZW50aWNhdG9yQWRkZWQp
OgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6cmVxdWVzdExBQ29udGV4
dEZvclVzZXJWZXJpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFu
YWdlcjo6aW52b2tlUGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAgQWRk
cyBwbHVtYmluZyB0byB0aGUgbmV3IFVJIG1ldGhvZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRMaW5r
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRp
Y2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsubW06CisgICAgICAgIFBhcGVyd29yay4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJl
c2VudGVyQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclByZXNl
bnRlckNvb3JkaW5hdG9yOjpzZXRDcmVkZW50aWFsUmVxdWVzdEhhbmRsZXIpOgorICAgICAgICBU
aGlzIGhhbmRsZXIgaXMgZnJvbSB0aGUgVUkgZGVsZWdhdGUgd2hpY2ggaXMgc3VwcG9zZWQgdG8g
Y2FsbCBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRzLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW06
CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6QXV0
aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVu
dGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpyZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlm
aWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGlu
YXRvcjo6ZGltaXNzUHJlc2VudGVyKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclBy
ZXNlbnRlckNvb3JkaW5hdG9yOjpzZXRMQUNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tOgor
ICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAg
ICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJSZWNlaXZpbmdMQUNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbENvbm5lY3Rpb246OnZlcmlmeVVzZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5t
bToKKyAgICAgICAgKC1bV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUgYXV0aG9y
aXphdGlvblByZXNlbnRlcjpjcmVkZW50aWFsUmVxdWVzdGVkRm9yTG9naW5DaG9pY2U6YXV0aGVu
dGljYXRlZENvbnRleHQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLQVNDQXV0
aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlIGRpc3BhdGNoQ29vcmRpbmF0b3JDYWxsYmFjazpd
KToKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgbmV3IFVJIGxvZ2ljLgorCiAyMDIwLTEyLTEwICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
YnVpbGQgZml4IGFmdGVyIHIyNzA2MTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oCmlu
ZGV4IDExMjJhMjQ5ZWVlMTVmZDNhMWNmYjA2MDkyOGJmMWY4Zjk3NjEyNDUuLjdmY2RkZDcxYzVj
MjAyN2ViMDcwZmQ5OGQ5NTk1ZTVjNzc1ZDU3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0Nv
cmVTUEkuaApAQCAtMjksNiArMjksOCBAQAogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
IAorLy8gRklYTUUoMjE5NzY3KTogUmVtb3ZlIEFTQ0FwcGxlSURDcmVkZW50aWFsLmguCisjaW1w
b3J0IDxBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZS9BU0NBcHBsZUlEQ3JlZGVudGlhbC5oPgog
I2ltcG9ydCA8QXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmUvQVNDQXV0aG9yaXphdGlvblByZXNl
bnRhdGlvbkNvbnRleHQuaD4KICNpbXBvcnQgPEF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlL0FT
Q0F1dGhvcml6YXRpb25QcmVzZW50ZXIuaD4KICNpbXBvcnQgPEF1dGhlbnRpY2F0aW9uU2Vydmlj
ZXNDb3JlL0FTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlLmg+CkBAIC0x
MzAsNiArMTMyLDIzIEBAIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEFTQ0F1dGhvcml6YXRpb25Q
cmVzZW50YXRpb25Db250ZXh0RGF0YUtleTsKIAogQGVuZAogCitAcHJvdG9jb2wgQVNDQ3JlZGVu
dGlhbFByb3RvY29sIDxOU09iamVjdCwgTlNTZWN1cmVDb2Rpbmc+CisKK0BlbmQKKworLy8gRklY
TUUoMjE5NzY3KTogUmVtb3ZlIEFTQ0FwcGxlSURDcmVkZW50aWFsLgorQGludGVyZmFjZSBBU0NB
cHBsZUlEQ3JlZGVudGlhbCA6IE5TT2JqZWN0IDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+CisKKy0g
KGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworKyAoaW5zdGFuY2V0eXBlKW5ldyBO
U19VTkFWQUlMQUJMRTsKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVXNlcjooTlNTdHJpbmcg
Kil1c2VyIGlkZW50aXR5VG9rZW46KE5TRGF0YSAqKWlkZW50aXR5VG9rZW47CisKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKnVzZXI7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHksIG51bGxhYmxlKSBOU0RhdGEgKmlkZW50aXR5VG9r
ZW47CisKK0BlbmQKKwogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKICNlbmRpZiAvLyBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2Fu
ZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkF1dGhuLnNiIGIvU291cmNlL1dl
YktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkF1
dGhuLnNiCmluZGV4IDg1MmVkNmMwYTVmOGM3NTY1MWI3YTZhNzEyZGI2NWI2ZjI4M2FiYmIuLjg1
MjI3ZTNkNmVkNGEyZDRmMzYwMTk5NDYyNjU4NTliZjhiNTYxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5X
ZWJBdXRobi5zYgorKysgYi9Tb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMv
aW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQXV0aG4uc2IKQEAgLTY0NSwzICs2NDUsMTcgQEAKIDs7
IEFsbG93IGFjY2Vzc2VzIHRvIHRoZSBTcHJpbmdib2FyZCB2aWV3IHNlcnZpY2VzLgogKGFsbG93
IG1hY2gtbG9va3VwCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0
ZW1hcHBzZXJ2aWNlcyIpKQorCis7OyBBbGxvdyBhY2Nlc3NlcyB0byB0aGUgS2V5Y2hhaW4gc2Vy
dmljZQorKGFsbG93IG1hY2gtbG9va3VwCisgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuc2Vj
dXJpdHlkIikpCisKKyhhbGxvdyBmaWxlLXJlYWQqIGZpbGUtd3JpdGUqIChob21lLXN1YnBhdGgg
Ii9MaWJyYXJ5L0tleWNoYWlucyIpKSA7OyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCB3
aGVuIDxyZGFyOi8vcHJvYmxlbS8xMDQ3OTY4NT4gaXMgZml4ZWQuCisKKyhhbGxvdyBmaWxlLXJl
YWQqCisgICAgICAgKHN1YnBhdGggIi9MaWJyYXJ5L0tleWNoYWlucyIpCisgICAgICAgKGhvbWUt
bGl0ZXJhbCAiL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9TeW5jU2VydmljZXMvTG9jYWwv
Q2xpZW50c1dpdGhDaGFuZ2VzL2NvbS5hcHBsZS5LZXljaGFpbiIpKQorCis7OyBBbGxvdyBhY2Nl
c3NlcyB0byB0aGUgU0VQCisoYWxsb3cgbWFjaC1sb29rdXAKKyAgICAoZ2xvYmFsLW5hbWUgImNv
bS5hcHBsZS5jdGtkLnRva2VuLWNsaWVudCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oCmluZGV4IGE1ZDE4
ZjJhOGY5NWRiMWNiZTYxNTdhODUxYzAzMjY5ZDA2MjYyMjMuLjYwOTk1NTg4ODc4ODFjMjBkYjNh
NTZiYjhhOTQ5YzIxZWE2MjVmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKQEAgLTU3LDYgKzU3LDcg
QEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCByZXRy
aWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8
V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mJiwgV2ViQXV0aGVudGlj
YXRpb25Tb3VyY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlKik+JiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRlY2lk
ZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExvY2Fs
QXV0aGVudGljYXRvclBvbGljeSk+JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFD
b250ZXh0ICopPiYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0KCkg
PSAwOwogICAgIH07CiAKQEAgLTY3LDExICs2OCwxNCBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBv
cGVyYXRpb24gaXMgZ3VhcmFudGVlZCB0byBleGVjdXRlIGFzeW5jaHJvbm91c2x5LgogICAgIHZv
aWQgaGFuZGxlUmVxdWVzdChjb25zdCBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJik7CiAK
KyAgICB2b2lkIHNldFdlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZChib29sIHdlYkF1dGhl
bnRpY2F0aW9uTW9kZXJuRW5hYmxlZCkgeyBtX3dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxl
ZCA9IHdlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAg
QXV0aGVudGljYXRvcigpID0gZGVmYXVsdDsKIAogICAgIE9ic2VydmVyKiBvYnNlcnZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZXIuZ2V0KCk7IH0KICAgICBjb25zdCBXZWJBdXRoZW50aWNh
dGlvblJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ1Jl
cXVlc3REYXRhOyB9CisgICAgYm9vbCB3ZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX3dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZDsgfQogCiAgICAg
dm9pZCByZWNlaXZlUmVzcG9uZChSZXNwb25kJiYpIGNvbnN0OwogCkBAIC04MSw2ICs4NSw3IEBA
IHByaXZhdGU6CiAKICAgICBXZWFrUHRyPE9ic2VydmVyPiBtX29ic2VydmVyOwogICAgIFdlYkF1
dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEgbV9wZW5kaW5nUmVxdWVzdERhdGE7CisgICAgYm9vbCBt
X3dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCAz
NmEwYTFmZGM2ZWYyNzQwYjk2ZDlhNjI3MmZlNjU0YzIwM2Y4ZjJmLi5kYjdhYjIxM2NkZjQ0Nzlk
NzAxYzVmNTEzOTVhNmM4Y2NiYjEwYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFn
ZXIuY3BwCkBAIC0xNjUsMTAgKzE2NSwxMCBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpo
YW5kbGVSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiBkYXRhLCBDYQogICAg
IC8vIDIuIEFzayBjbGllbnRzIHRvIHNob3cgYXBwcm9wcmlhdGUgVUkgaWYgYW55IGFuZCB0aGVu
IHN0YXJ0IHRoZSByZXF1ZXN0LgogICAgIGluaXRUaW1lT3V0VGltZXIoKTsKIAotICAgIC8vIEZJ
WE1FPHJkYXI6Ly9wcm9ibGVtLzcwODIyODM0PjogVGhlIG1faXNXZWJBdXRoZW50aWNhdGlvbk1v
ZGVybkVuYWJsZWQgaXMgdXNlZCB0byBkZXRlcm1pbmUKKyAgICAvLyBGSVhNRTxyZGFyOi8vcHJv
YmxlbS83MDgyMjgzND46IFRoZSBtX3dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCBpcyB1
c2VkIHRvIGRldGVybWluZQogICAgIC8vIHdoZXRoZXIgb3Igbm90IHdlIGFyZSBpbiB0aGUgVUlQ
cm9jZXNzLgogICAgIC8vIElmIHNvLCBjb250aW51ZSB0byB0aGUgb2xkIHJvdXRlLiBPdGhlcndp
c2UsIHVzZSB0aGUgbW9kZXJuIFdlYkF1dGhuIHByb2Nlc3Mgd2F5LgotICAgIGlmICghbV9pc1dl
YkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCkgeworICAgIGlmICghbV93ZWJBdXRoZW50aWNh
dGlvbk1vZGVybkVuYWJsZWQpIHsKICAgICAgICAgcnVuUGFuZWwoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpj
YW5jZWwoKQogCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjplbmFibGVNb2Rlcm5XZWJBdXRo
ZW50aWNhdGlvbigpCiB7Ci0gICAgbV9pc1dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCA9
IHRydWU7CisgICAgbV93ZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQgPSB0cnVlOwogfQog
CiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjbGVhclN0YXRlQXN5bmMoKQpAQCAtMjM2LDYg
KzIzNiw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmF1dGhlbnRpY2F0b3JBZGRlZChS
ZWY8QXV0aGVudGljYXRvcj4mJiBhdXRoZW50aWNhdG9yCiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICBhdXRoZW50aWNhdG9yLT5zZXRPYnNlcnZlcigqdGhpcyk7CiAgICAgYXV0
aGVudGljYXRvci0+aGFuZGxlUmVxdWVzdChtX3BlbmRpbmdSZXF1ZXN0RGF0YSk7CisgICAgYXV0
aGVudGljYXRvci0+c2V0V2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkKG1fd2ViQXV0aGVu
dGljYXRpb25Nb2Rlcm5FbmFibGVkKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXV0aGVudGlj
YXRvcnMuYWRkKFdURk1vdmUoYXV0aGVudGljYXRvcikpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRk
UmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zNTEsNiArMzUyLDE2IEBAIHZv
aWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRv
cihDb21wbGV0aW9uSGFuZGxlcjx2CiAgICAgfSk7CiB9CiAKK3ZvaWQgQXV0aGVudGljYXRvck1h
bmFnZXI6OnJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICgh
bV9wcmVzZW50ZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3ByZXNlbnRlci0+cmVxdWVzdExBQ29udGV4dEZv
clVzZXJWZXJpZmljYXRpb24oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lk
IEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KCkKIHsKICAgICBpbnZva2VQZW5k
aW5nQ29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRo
aXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgdGhlIHVzZXIuIl9zIH0pOwpAQCAtNDQy
LDExICs0NTMsMTMgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cnVuUHJlc2VudGVyKCkK
IAogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6aW52b2tlUGVuZGluZ0NvbXBsZXRpb25IYW5k
bGVyKFJlc3BvbmQmJiByZXNwb25kKQogeworICAgIGF1dG8gcmVzdWx0ID0gV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPj4ocmVzcG9uZCkgPyBXZWJBdXRo
ZW50aWNhdGlvblJlc3VsdDo6U3VjY2VlZGVkIDogV2ViQXV0aGVudGljYXRpb25SZXN1bHQ6OkZh
aWxlZDsKKwogICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBuZXcgVUkuCiAgICAgaWYgKG1fcHJlc2Vu
dGVyKQotICAgICAgICBtX3ByZXNlbnRlci0+ZGltaXNzUHJlc2VudGVyKCk7CisgICAgICAgIG1f
cHJlc2VudGVyLT5kaW1pc3NQcmVzZW50ZXIocmVzdWx0KTsKICAgICBlbHNlIHsKLSAgICAgICAg
ZGlzcGF0Y2hQYW5lbENsaWVudENhbGwoW3Jlc3VsdCA9IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPEF1dGhlbnRpY2F0b3JSZXNwb25zZT4+KHJlc3BvbmQpID8gV2ViQXV0aGVudGljYXRpb25S
ZXN1bHQ6OlN1Y2NlZWRlZCA6IFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0OjpGYWlsZWRdIChjb25z
dCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsKSB7CisgICAgICAgIGRpc3BhdGNo
UGFuZWxDbGllbnRDYWxsKFtyZXN1bHRdIChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwmIHBhbmVsKSB7CiAgICAgICAgICAgICBwYW5lbC5jbGllbnQoKS5kaXNtaXNzUGFuZWwocmVz
dWx0KTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgK
aW5kZXggYjVhMTJiNDk2OTkyYzIxMzg2NzJhMTZjN2Q5MTkxMjhhNGIyOTBmOS4uMWVlNGFiNDk1
MzFiZWU5NzQxNDVjNTQ4Nzg1NDIwNDE2N2VlMzYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9y
TWFuYWdlci5oCkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK09CSkNfQ0xBU1MgTEFDb250ZXh0OworCiBuYW1lc3Bh
Y2UgQVBJIHsKIGNsYXNzIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw7CiB9CkBAIC04OCw2ICs5MCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikgZmluYWw7CiAgICAgdm9p
ZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4+JiYsIFdlYkF1dGhlbnRpY2F0aW9uU291cmNlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSop
PiYmKSBmaW5hbDsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKExvY2FsQXV0aGVudGljYXRvclBvbGljeSk+JiYpIGZpbmFs
OworICAgIHZvaWQgcmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24oQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUmVx
dWVzdCgpIGZpbmFsOwogCiAgICAgLy8gT3ZlcnJpZGVuIGJ5IE1vY2tBdXRoZW50aWNhdG9yTWFu
YWdlci4KQEAgLTExNCw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxVbmlxdWVSZWY8
QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+PiBtX3NlcnZpY2VzOwogICAgIEhhc2hTZXQ8
UmVmPEF1dGhlbnRpY2F0b3I+PiBtX2F1dGhlbnRpY2F0b3JzOwogCi0gICAgYm9vbCBtX2lzV2Vi
QXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fd2ViQXV0
aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRpb25T
ZXJ2aWNlc0NvcmVTb2Z0TGluay5oCmluZGV4IGFlYzdkOTkyM2VhZjNmY2Q4ZmEzOTZhNmIwMzdm
MDAwNDBmYTE4OWEuLmJlOTIxMjAxZjU4NjI2Y2MwNDQyNDg5ODI4M2ZjNDI5OTg3NTIzYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2Vz
Q29yZVNvZnRMaW5rLmgKQEAgLTM2LDUgKzM2LDYgQEAgU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFE
RVIoV2ViS2l0LCBBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyKTsKIFNPRlRfTElOS19DTEFTU19G
T1JfSEVBREVSKFdlYktpdCwgQVNDQXV0aG9yaXphdGlvblByZXNlbnRhdGlvbkNvbnRleHQpOwog
U09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViS2l0LCBBU0NQbGF0Zm9ybVB1YmxpY0tleUNy
ZWRlbnRpYWxMb2dpbkNob2ljZSk7CiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihXZWJLaXQs
IEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlKTsKK1NPRlRfTElO
S19DTEFTU19GT1JfSEVBREVSKFdlYktpdCwgQVNDQXBwbGVJRENyZWRlbnRpYWwpOwogCiAjZW5k
aWYgLy8gSEFWRShBU0NfQVVUSF9VSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29m
dExpbmsubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLm1tCmluZGV4IGU4MDNiMTBhMjkz
YzBjZTVkMzM5ZTlmZjcwNGMxMjc3ZTcyMWY2MzkuLjg3ZTU0NjAyMjdmNDgxOTE2NTc2YzA5Njg0
ODM5MDBjZmRhN2M5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0
aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5tbQpAQCAtMzYsNSArMzYsNiBAQCBTT0ZU
X0xJTktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQsIEF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3Jl
LCBBU0NBdXRob3JpemF0aW9uUAogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2ViS2l0LCBB
dXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZSwgQVNDQXV0aG9yaXphdGlvblByZXNlbnRhdGlvbkNv
bnRleHQpOwogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2ViS2l0LCBBdXRoZW50aWNhdGlv
blNlcnZpY2VzQ29yZSwgQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2Up
OwogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2ViS2l0LCBBdXRoZW50aWNhdGlvblNlcnZp
Y2VzQ29yZSwgQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2UpOwor
U09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2ViS2l0LCBBdXRoZW50aWNhdGlvblNlcnZpY2Vz
Q29yZSwgQVNDQXBwbGVJRENyZWRlbnRpYWwpOwogCiAjZW5kaWYgLy8gSEFWRShBU0NfQVVUSF9V
SSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0F1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRl
ckNvb3JkaW5hdG9yLmgKaW5kZXggYTBhYzZmODg2MzUxNWUwMjk0ZWVmMzQ3YmFiNjBjNmY3ZGNh
MTEzYi4uY2MzMTg0N2Y4OTNjNTQ0YjI2M2QyMmNhYzVjODYxMzI5ZjRkZjJkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVu
dGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5h
dG9yLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBPQkpD
X0NMQVNTIEFTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXI7CitPQkpDX0NMQVNTIExBQ29udGV4dDsK
IE9CSkNfQ0xBU1MgV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGU7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTUwLDE4ICs1MSwyOCBAQCBjbGFzcyBBdXRoZW50aWNhdG9yUHJl
c2VudGVyQ29vcmRpbmF0b3IgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXV0aGVudGljYXRvclBy
ZQogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGlu
YXRvcik7CiBwdWJsaWM6CiAgICAgdXNpbmcgVHJhbnNwb3J0U2V0ID0gSGFzaFNldDxXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0LCBXVEY6OkludEhhc2g8V2ViQ29yZTo6QXV0aGVudGlj
YXRvclRyYW5zcG9ydD4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8V2ViQ29yZTo6QXV0aGVu
dGljYXRvclRyYW5zcG9ydD4+OworICAgIHVzaW5nIENyZWRlbnRpYWxSZXF1ZXN0SGFuZGxlciA9
IEZ1bmN0aW9uPHZvaWQoKT47CiAKICAgICBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0
b3IoY29uc3QgQXV0aGVudGljYXRvck1hbmFnZXImLCBjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0
IFRyYW5zcG9ydFNldCYsIFdlYkNvcmU6OkNsaWVudERhdGFUeXBlKTsKIAogICAgIHZvaWQgdXBk
YXRlUHJlc2VudGVyKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKTsKICAgICB2b2lkIHJlcXVlc3RQ
aW4odWludDY0X3QgcmV0cmllcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJik7CiAgICAgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiYsIFdlYkF1dGhlbnRpY2F0aW9u
U291cmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZSopPiYmKTsKLSAgICB2b2lkIGRpbWlzc1ByZXNlbnRlcigpOworICAgIHZv
aWQgcmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24oQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChMQUNvbnRleHQgKik+JiYpOworICAgIHZvaWQgZGltaXNzUHJlc2VudGVyKFdlYkF1dGhl
bnRpY2F0aW9uUmVzdWx0KTsKKworICAgIHZvaWQgc2V0Q3JlZGVudGlhbFJlcXVlc3RIYW5kbGVy
KENyZWRlbnRpYWxSZXF1ZXN0SGFuZGxlciYmIGhhbmRsZXIpIHsgbV9jcmVkZW50aWFsUmVxdWVz
dEhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpOyB9CisgICAgdm9pZCBzZXRMQUNvbnRleHQoTEFD
b250ZXh0ICopOwogCiBwcml2YXRlOgogICAgIFdlYWtQdHI8QXV0aGVudGljYXRvck1hbmFnZXI+
IG1fbWFuYWdlcjsKICAgICBSZXRhaW5QdHI8QVNDQXV0aG9yaXphdGlvblByZXNlbnRlcj4gbV9w
cmVzZW50ZXI7CiAgICAgUmV0YWluUHRyPFdLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVn
YXRlPiBtX3ByZXNlbnRlckRlbGVnYXRlOworCisgICAgQ3JlZGVudGlhbFJlcXVlc3RIYW5kbGVy
IG1fY3JlZGVudGlhbFJlcXVlc3RIYW5kbGVyOworCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChMQUNvbnRleHQgKik+IG1fbGFDb250ZXh0SGFuZGxlcjsKKyAgICBSZXRhaW5QdHI8TEFDb250
ZXh0PiBtX2xhQ29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVu
dGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9y
Lm1tCmluZGV4IDNkMjJkZThhMzk3ZDRhMThmMWIwNGNiYTdkYzQ1MjY0OThlMGRhY2EuLjYwYWNi
ZjA4NTc3MjM4MTY0ZTI4MDY0OGVhN2Q3NGI1MWY0YmRhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQcmVz
ZW50ZXJDb29yZGluYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW0KQEAg
LTY0LDggKzY0LDkgQEAgQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpBdXRoZW50
aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IoY29uc3QgQXV0aGUKICAgICBtX3ByZXNlbnRlciA9
IFthbGxvY0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJJbnN0YW5jZSgpIGluaXRdOwogICAgIFtt
X3ByZXNlbnRlciBzZXREZWxlZ2F0ZTptX3ByZXNlbnRlckRlbGVnYXRlLmdldCgpXTsKIAotICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW21hbmFnZXIgPSBtX21hbmFn
ZXJdIChpZDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
Ci0gICAgICAgIGlmICghZXJyb3IpCisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihbbWFuYWdlciA9IG1fbWFuYWdlcl0gKGlkPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4g
Y3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYgKGNyZWRlbnRpYWwgfHwgIWVycm9yKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgY29tcGxldGUg
dGhlIGF1dGhlbnRpY2F0b3IgcHJlc2VudGF0aW9uIGNvbnRleHQ6ICVAIiwgZXJyb3IpOwpAQCAt
OTUsMTEgKzk2LDM1IEBAIHZvaWQgQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpz
ZWxlY3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPEF1dGhlCiAgICAgLy8gRklYTUUoMjE5
NzExKTogQWRvcHQgbmV3IFVJIGZvciB0aGUgU2VjdXJpdHkgS2V5IGdldEFzc2VydGlvbiBmbG93
LgogfQogCi12b2lkIEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6ZGltaXNzUHJl
c2VudGVyKCkKK3ZvaWQgQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpyZXF1ZXN0
TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExBQ29u
dGV4dCAqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBpZiAobV9sYUNvbnRleHQpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobV9sYUNvbnRleHQuZ2V0KCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9sYUNvbnRleHRIYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcik7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9y
OjpkaW1pc3NQcmVzZW50ZXIoV2ViQXV0aGVudGljYXRpb25SZXN1bHQgcmVzdWx0KQoreworICAg
IGlmIChyZXN1bHQgPT0gV2ViQXV0aGVudGljYXRpb25SZXN1bHQ6OlN1Y2NlZWRlZCAmJiBtX2Ny
ZWRlbnRpYWxSZXF1ZXN0SGFuZGxlcikgeworICAgICAgICBtX2NyZWRlbnRpYWxSZXF1ZXN0SGFu
ZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIC8vIEZJWE1FKDIxOTcxNik6IEFk
b3B0IG5ldyBVSSBmb3IgdGhlIGRpc21pc3MgZmxvdy4KIH0KIAordm9pZCBBdXRoZW50aWNhdG9y
UHJlc2VudGVyQ29vcmRpbmF0b3I6OnNldExBQ29udGV4dChMQUNvbnRleHQgKmNvbnRleHQpCit7
CisgICAgaWYgKG1fbGFDb250ZXh0SGFuZGxlcikgeworICAgICAgICBtX2xhQ29udGV4dEhhbmRs
ZXIoY29udGV4dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2xhQ29udGV4dCA9
IGNvbnRleHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKaW5kZXgg
NTg0NzlkNDljOWRkNmMwNDllNjdmNjJkYzA3OTU1Yjc1Y2IzMTM5Zi4uYjY2MWY1YWYyNTRiNTc5
ZTFkODRjNWUwZDFjODFmMDVjYjY3YzQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRo
ZW50aWNhdG9yLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFrZUNy
ZWRlbnRpYWwoKSBmaW5hbDsKICAgICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckRl
Y2lkZVBvbGljeShMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpOworICAgIHZvaWQgY29udGludWVN
YWtlQ3JlZGVudGlhbEFmdGVyUmVjZWl2aW5nTEFDb250ZXh0KExBQ29udGV4dCAqKTsKICAgICB2
b2lkIGNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24oU2VjQWNjZXNz
Q29udHJvbFJlZiwgTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uLCBMQUNvbnRleHQg
Kik7CiAgICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChWZWN0b3I8
dWludDhfdD4mJiBjcmVkZW50aWFsSWQsIFZlY3Rvcjx1aW50OF90PiYmIGF1dGhEYXRhLCBOU0Fy
cmF5ICpjZXJ0aWZpY2F0ZXMsIE5TRXJyb3IgKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2Fs
QXV0aGVudGljYXRvci5tbQppbmRleCBkZDVmZmE3YjYyZGZlY2Y1MDVmNGM1NjU5MTM0NTAzOWZk
NTVlZGYyLi4xMTA0NzU1NzExMzk2ODFhNThkMzQxMDFjMjU2NzljMzEzMTlmNWNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0yMzQsNiArMjM0LDIyIEBA
IHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAKICAgICAvLyBTdGVw
IDYuCiAgICAgLy8gR2V0IHVzZXIgY29uc2VudC4KKyAgICAvLyBUaGlzIGlzIGZvciB0aGUgbmV3
IFVJLgorICAgIGlmICh3ZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQoKSkgeworICAgICAg
ICBpZiAoYXV0byogb2JzZXJ2ZXIgPSB0aGlzLT5vYnNlcnZlcigpKSB7CisgICAgICAgICAgICBh
dXRvIGNhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoTEFDb250ZXh0
ICpjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3JlZGVudGlhbEFm
dGVyUmVjZWl2aW5nTEFDb250ZXh0KGNvbnRleHQpOworICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgIG9ic2VydmVyLT5yZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbihXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
aWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkgewogICAgICAgICBhdXRvIGNh
bGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoTG9jYWxBdXRoZW50aWNh
dG9yUG9saWN5IHBvbGljeSkgewogICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKQEAgLTI4MCw2ICsyOTYsMzMgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVl
TWFrZUNyZWRlbnRpYWxBZnRlckRlY2lkZVBvbGljeShMb2NhbEF1dGhlbnRpY2EKICAgICBtX2Nv
bm5lY3Rpb24tPnZlcmlmeVVzZXIoY3JlYXRpb25PcHRpb25zLnJwLmlkLCBnZXRDbGllbnREYXRh
VHlwZShyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpLCBhY2Nlc3NDb250cm9sUmVmLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiB9CiAKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVk
ZW50aWFsQWZ0ZXJSZWNlaXZpbmdMQUNvbnRleHQoTEFDb250ZXh0ICpjb250ZXh0KQoreworICAg
IEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOworICAgIG1fc3RhdGUg
PSBTdGF0ZTo6UG9saWN5RGVjaWRlZDsKKworICAgIFJldGFpblB0cjxTZWNBY2Nlc3NDb250cm9s
UmVmPiBhY2Nlc3NDb250cm9sOworICAgIHsKKyAgICAgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9
IG51bGxwdHI7CisgICAgICAgIGFjY2Vzc0NvbnRyb2wgPSBhZG9wdENGKFNlY0FjY2Vzc0NvbnRy
b2xDcmVhdGVXaXRoRmxhZ3MoTlVMTCwga1NlY0F0dHJBY2Nlc3NpYmxlV2hlblBhc3Njb2RlU2V0
VGhpc0RldmljZU9ubHksIGtTZWNBY2Nlc3NDb250cm9sUHJpdmF0ZUtleVVzYWdlIHwga1NlY0Fj
Y2Vzc0NvbnRyb2xVc2VyUHJlc2VuY2UsICZlcnJvclJlZikpOworICAgICAgICBhdXRvIHJldGFp
bkVycm9yID0gYWRvcHRDRihlcnJvclJlZik7CisgICAgICAgIGlmIChlcnJvclJlZikgeworICAg
ICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291
bGRuJ3QgY3JlYXRlIGFjY2VzcyBjb250cm9sOiAiLCBTdHJpbmcoKChOU0Vycm9yKillcnJvclJl
ZikubG9jYWxpemVkRGVzY3JpcHRpb24pKSB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiA9
IGFjY2Vzc0NvbnRyb2wuZ2V0KCk7CisgICAgYXV0byBjYWxsYmFjayA9IFthY2Nlc3NDb250cm9s
ID0gV1RGTW92ZShhY2Nlc3NDb250cm9sKSwgY29udGV4dCA9IHJldGFpblB0cihjb250ZXh0KSwg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChMb2NhbENvbm5lY3Rpb246OlVzZXJWZXJp
ZmljYXRpb24gdmVyaWZpY2F0aW9uKSB7CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgd2Vha1RoaXMtPmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24o
YWNjZXNzQ29udHJvbC5nZXQoKSwgdmVyaWZpY2F0aW9uLCBjb250ZXh0LmdldCgpKTsKKyAgICB9
OworICAgIG1fY29ubmVjdGlvbi0+dmVyaWZ5VXNlcihhY2Nlc3NDb250cm9sUmVmLCBjb250ZXh0
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250
aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFNlY0FjY2Vzc0NvbnRyb2xS
ZWYgYWNjZXNzQ29udHJvbFJlZiwgTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uIHZl
cmlmaWNhdGlvbiwgTEFDb250ZXh0ICpjb250ZXh0KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBM
b2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9u
LmgKaW5kZXggODA1MWMxMzcxOGQ3ZjQxOTM5NWMyNjM2NjAyNTQ5N2IyZDE4ZTg2Mi4uODkzZTUz
OGI4OWRiOTY2YTBlMDU5YjRhYjY1NzQ1ZTY1MzJlMmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxDb25uZWN0aW9uLmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogCiAgICAgLy8gT3ZlcnJp
ZGVkIGJ5IE1vY2tMb2NhbENvbm5lY3Rpb24uCiAgICAgdmlydHVhbCB2b2lkIHZlcmlmeVVzZXIo
Y29uc3QgU3RyaW5nJiBycElkLCBXZWJDb3JlOjpDbGllbnREYXRhVHlwZSwgU2VjQWNjZXNzQ29u
dHJvbFJlZiwgVXNlclZlcmlmaWNhdGlvbkNhbGxiYWNrJiYpOworICAgIHZpcnR1YWwgdm9pZCB2
ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIExBQ29udGV4dCAqLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFVzZXJWZXJpZmljYXRpb24pPiYmKTsKICAgICB2aXJ0dWFsIFJldGFpblB0cjxT
ZWNLZXlSZWY+IGNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExBQ29udGV4dCAqLCBTZWNBY2Nl
c3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRy
QXBwbGljYXRpb25UYWcpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRlc3RhdGlvbihT
ZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5TRGF0YSAqaGFzaCwgQXR0ZXN0YXRpb25DYWxs
YmFjayYmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZmlsdGVyUmVzcG9uc2VzKFZlY3RvcjxS
ZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mKSBjb25zdCB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KaW5kZXggZjc5OGIwYjdmN2MzN2Y3
MDQzZjk4NzNkM2ZhNjM2ZGQyY2Q3ZWU5ZS4uMGI5NGY5ZmFhNTg3NTJkNjE3MGFlYTIxNjUwZmNk
NDk3MDM2YTcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQpAQCAtOTYs
NiArOTYsMjkgQEAgdm9pZCBMb2NhbENvbm5lY3Rpb246OnZlcmlmeVVzZXIoY29uc3QgU3RyaW5n
JiBycElkLCBDbGllbnREYXRhVHlwZSB0eXBlLCBTZWNBY2MKICAgICBbbV9jb250ZXh0IGV2YWx1
YXRlQWNjZXNzQ29udHJvbDphY2Nlc3NDb250cm9sIG9wZXJhdGlvbjpMQUFjY2Vzc0NvbnRyb2xP
cGVyYXRpb25Vc2VLZXlTaWduIG9wdGlvbnM6b3B0aW9ucy5nZXQoKSByZXBseTpyZXBseS5nZXQo
KV07CiB9CiAKK3ZvaWQgTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRy
b2xSZWYgYWNjZXNzQ29udHJvbCwgTEFDb250ZXh0ICpjb250ZXh0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFVzZXJWZXJpZmljYXRpb24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1
dG8gb3B0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7
CisgICAgW29wdGlvbnMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OkAoTEFPcHRpb25Ob3RJbnRlcmFj
dGl2ZSldOworCisgICAgYXV0byByZXBseSA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5TRGljdGlvbmFyeSAqLCBOU0Vycm9y
ICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIFVzZXJWZXJpZmljYXRpb24gdmVyaWZpY2F0aW9u
ID0gVXNlclZlcmlmaWNhdGlvbjo6WWVzOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAg
ICAgIExPR19FUlJPUigiQ291bGRuJ3QgYXV0aGVudGljYXRlIHdpdGggYmlvbWV0cmljczogJUAi
LCBlcnJvcik7CisgICAgICAgICAgICB2ZXJpZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uOjpO
bzsKKyAgICAgICAgICAgIGlmIChlcnJvci5jb2RlID09IExBRXJyb3JVc2VyQ2FuY2VsKQorICAg
ICAgICAgICAgICAgIHZlcmlmaWNhdGlvbiA9IFVzZXJWZXJpZmljYXRpb246OkNhbmNlbDsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFRoaXMgYmxvY2sgY2FuIGJlIGV4ZWN1dGVkIGluIGFub3Ro
ZXIgdGhyZWFkLgorICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHZlcmlmaWNhdGlvbl0gKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih2ZXJpZmljYXRpb24pOworICAg
ICAgICB9KTsKKyAgICB9KTsKKworICAgIFtjb250ZXh0IGV2YWx1YXRlQWNjZXNzQ29udHJvbDph
Y2Nlc3NDb250cm9sIG9wZXJhdGlvbjpMQUFjY2Vzc0NvbnRyb2xPcGVyYXRpb25Vc2VLZXlTaWdu
IG9wdGlvbnM6b3B0aW9ucy5nZXQoKSByZXBseTpyZXBseS5nZXQoKV07Cit9CisKIFJldGFpblB0
cjxTZWNLZXlSZWY+IExvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXko
TEFDb250ZXh0ICpjb250ZXh0LCBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYs
IGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRh
ZykgY29uc3QKIHsKICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBAewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tBU0NB
dXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxl
Z2F0ZS5tbQppbmRleCA3NGYzMDA2NzAzMjZkNDQyMTBhODNkZGM2ZjkzZGFjN2ZlZmZkMmZiLi5l
MWVmN2YyNDA3M2ZiOWIxOTUyODk2NDlhNmZiMDc4MGM2NjJjZGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS0FTQ0F1dGhvcml6
YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0
ZS5tbQpAQCAtMzAsNiArMzAsOCBAQAogCiAjaW1wb3J0ICJBdXRoZW50aWNhdG9yUHJlc2VudGVy
Q29vcmRpbmF0b3IuaCIKIAorI2ltcG9ydCAiQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0
TGluay5oIgorCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAaW1wbGVtZW50YXRpb24gV0tB
U0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUgewpAQCAtNDUsNyArNDcsMjQgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoQ29vcmRpbmF0b3I6KFdlYktpdDo6QXV0aGVudGljYXRvclBy
ZXNlbnRlckNvb3JkaW5hdG9yJikKIAogLSAodm9pZClhdXRob3JpemF0aW9uUHJlc2VudGVyOihB
U0NBdXRob3JpemF0aW9uUHJlc2VudGVyICopcHJlc2VudGVyIGNyZWRlbnRpYWxSZXF1ZXN0ZWRG
b3JMb2dpbkNob2ljZTooaWQgPEFTQ0xvZ2luQ2hvaWNlUHJvdG9jb2w+KWxvZ2luQ2hvaWNlIGF1
dGhlbnRpY2F0ZWRDb250ZXh0OihudWxsYWJsZSBMQUNvbnRleHQgKiljb250ZXh0IGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBfTnVsbGFibGUg
Y3JlZGVudGlhbCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXIK
IHsKLSAgICAvLyBGSVhNRSgyMTk3MDkpOiBBZG9wdCBuZXcgVUkgZm9yIHRoZSBQbGF0Zm9ybSBB
dXRoZW50aWNhdG9yIG1ha2VDcmVkZW50aWFsIGZsb3cuCisgICAgYXV0byByZXF1ZXN0SGFuZGxl
ciA9IFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IHsKKyAgICAgICAgLy8gRklYTUUoMjE5NzY3KTogUmVwbGFjZSB0aGUgQVNDQXBwbGVJRENyZWRl
bnRpYWwgd2l0aCB0aGUgdXBjb21pbmcgV2ViQXV0aG4gY3JlZGVudGlhbHMgb25lLgorICAgICAg
ICAvLyBUaGlzIGlzIGp1c3QgYSBwbGFjZSBob2xkZXIgdG8gdGVsbCB0aGUgVUkgdGhhdCB0aGUg
Y2VyZW1vbnkgc3VjY2VlZHMuCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0TlMoW1dl
YktpdDo6YWxsb2NBU0NBcHBsZUlEQ3JlZGVudGlhbEluc3RhbmNlKCkgaW5pdFdpdGhVc2VyOkAi
IiBpZGVudGl0eVRva2VuOmFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRdKS5nZXQoKV0pLmdl
dCgpLCBuaWwpOworICAgIH07CisgICAgW3NlbGYgZGlzcGF0Y2hDb29yZGluYXRvckNhbGxiYWNr
OltyZXF1ZXN0SGFuZGxlciA9IFdURk1vdmUocmVxdWVzdEhhbmRsZXIpXSAoV2ViS2l0OjpBdXRo
ZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3ImIGNvb3JkaW5hdG9yKSBtdXRhYmxlIHsKKyAg
ICAgICAgY29vcmRpbmF0b3Iuc2V0Q3JlZGVudGlhbFJlcXVlc3RIYW5kbGVyKFdURk1vdmUocmVx
dWVzdEhhbmRsZXIpKTsKKyAgICB9XTsKKworICAgIGlmIChbbG9naW5DaG9pY2UgaXNLaW5kT2ZD
bGFzczpXZWJLaXQ6OmdldEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNl
Q2xhc3MoKV0pIHsKKyAgICAgICAgaWYgKFsoQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50aWFs
TG9naW5DaG9pY2UgKilsb2dpbkNob2ljZSBpc1JlZ2lzdHJhdGlvblJlcXVlc3RdKSB7CisgICAg
ICAgICAgICBbc2VsZiBkaXNwYXRjaENvb3JkaW5hdG9yQ2FsbGJhY2s6W2NvbnRleHQgPSByZXRh
aW5QdHIoY29udGV4dCldIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRv
ciYgY29vcmRpbmF0b3IpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNvb3JkaW5hdG9yLnNl
dExBQ29udGV4dChjb250ZXh0LmdldCgpKTsKKyAgICAgICAgICAgIH1dOworCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiB9CiAKIC0gKHZvaWQpYXV0aG9yaXphdGlvblBy
ZXNlbnRlcjooQVNDQXV0aG9yaXphdGlvblByZXNlbnRlciAqKXByZXNlbnRlciB2YWxpZGF0ZVVz
ZXJFbnRlcmVkUElOOihOU1N0cmluZyAqKXBpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
aWQgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpKWNv
bXBsZXRpb25IYW5kbGVyCkBAIC01Myw2ICs3MiwxNiBAQCAtICh2b2lkKWF1dGhvcml6YXRpb25Q
cmVzZW50ZXI6KEFTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXIgKilwcmVzZW50ZXIgdmFsaWRhdGVV
cwogICAgIC8vIEZJWE1FKDIxOTcxMik6IEFkb3B0IG5ldyBVSSBmb3IgdGhlIENsaWVudCBQSU4g
Zmxvdy4KIH0KIAorLSAodm9pZClkaXNwYXRjaENvb3JkaW5hdG9yQ2FsbGJhY2s6KEZ1bmN0aW9u
PHZvaWQoV2ViS2l0OjpBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3ImKT4mJiljYWxs
YmFjaworeworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbY29vcmRpbmF0b3IgPSBfY29vcmRpbmF0b3IsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldIHsKKyAgICAgICAgaWYgKCFjb29yZGluYXRvcikKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgY2FsbGJhY2soKmNvb3JkaW5hdG9yKTsKKyAgICB9KTsKK30KKwog
QGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQK
</data>
<flag name="commit-queue"
          id="433347"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415970</attachid>
            <date>2020-12-10 22:26:33 -0800</date>
            <delta_ts>2020-12-11 11:41:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219709-20201210222632.patch</filename>
            <type>text/plain</type>
            <size>29478</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg0YzYyZmQzM2QyODAyNzE0
NTNkMzQxMzBkOWRlNjg2ZmQ2MDcxYzQuLjA4YTkwZmM0ZDFiZTQ3MjIxODQ0NzNjZmFhODY5ZGMw
NTk3YzcxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjAtMTItMTAgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFkb3B0IG5l
dyBVSSBmb3IgdGhlIFBsYXRmb3JtIEF1dGhlbnRpY2F0b3IgbWFrZUNyZWRlbnRpYWwgZmxvdwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NzA5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjE1NDc3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkb3B0cyB0aGUgbmV3IFVJIGZv
ciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvciBtYWtlQ3JlZGVudGlhbCBmbG93LiBJbiB0aGlz
IG5ldyBkZXNpZ24sCisgICAgICAgIHRoZSBVSSB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBjcmVh
dGluZyB0aGUgTEFDb250ZXh0IGFuZCBnZXQgaXQgdmVyaWZpZWQgYnkgdGhlIHVzZXIuIFRoZXJl
Zm9yZSwgV2ViS2l0CisgICAgICAgIGp1c3QgbmVlZHMgdG8gcmV2ZXJpZnkgdGhlIExBQ29udGV4
dCBpbiBub24tVUkgbW9kZSBhZ2FpbnN0IHRoZSBTZWNBY2Nlc3NDb250cm9sUmVmIHdpdGhvdXQg
aGFuZGxpbmcgYW55CisgICAgICAgIExBIFVJIGFueW1vcmUuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBtYW51YWwgdGVzdHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGlj
YXRpb25TZXJ2aWNlc0NvcmVTUEkuaDoKKyAgICAgICAgQWRkcyBhIG5ldyBjbGFzcyB3aGljaCBy
ZXByZXNlbnRzIGEgc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisKKyAgICAgICAgKiBSZXNvdXJjZXMv
U2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkF1dGhuLnNiOgorICAgICAg
ICBBZGRzIHJ1bGUgdG8gYWxsb3cgdGhlIFdlYkF1dGhuIHByb2Nlc3MgdG8gYWNjZXNzIEtleWNo
YWluIGFuZCBTRVAuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRvci5oOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yOjpzZXRXZWJBdXRo
ZW50aWNhdGlvbk1vZGVybkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9y
Ojp3ZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQgY29uc3QpOgorICAgICAgICBBZGRzIGEg
ZmxhZyB0byBrbm93IHdoaWNoIFVJIHRvIGNhbGwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjplbmFibGVNb2Rlcm5XZWJBdXRoZW50aWNhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjphdXRoZW50aWNhdG9yQWRkZWQp
OgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6cmVxdWVzdExBQ29udGV4
dEZvclVzZXJWZXJpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFu
YWdlcjo6aW52b2tlUGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAgQWRk
cyBwbHVtYmluZyB0byB0aGUgbmV3IFVJIG1ldGhvZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRMaW5r
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRp
Y2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsubW06CisgICAgICAgIFBhcGVyd29yay4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJl
c2VudGVyQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclByZXNl
bnRlckNvb3JkaW5hdG9yOjpzZXRDcmVkZW50aWFsUmVxdWVzdEhhbmRsZXIpOgorICAgICAgICBU
aGlzIGhhbmRsZXIgaXMgZnJvbSB0aGUgVUkgZGVsZWdhdGUgd2hpY2ggaXMgc3VwcG9zZWQgdG8g
Y2FsbCBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRzLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW06
CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6QXV0
aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVu
dGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpyZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlm
aWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGlu
YXRvcjo6ZGltaXNzUHJlc2VudGVyKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclBy
ZXNlbnRlckNvb3JkaW5hdG9yOjpzZXRMQUNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tOgor
ICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAg
ICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJSZWNlaXZpbmdMQUNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbENvbm5lY3Rpb246OnZlcmlmeVVzZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5t
bToKKyAgICAgICAgKC1bV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUgYXV0aG9y
aXphdGlvblByZXNlbnRlcjpjcmVkZW50aWFsUmVxdWVzdGVkRm9yTG9naW5DaG9pY2U6YXV0aGVu
dGljYXRlZENvbnRleHQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLQVNDQXV0
aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlIGRpc3BhdGNoQ29vcmRpbmF0b3JDYWxsYmFjazpd
KToKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgbmV3IFVJIGxvZ2ljLgorCiAyMDIwLTEyLTEwICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBDcmVhdGUgYSBm
b3JtYXQgcmVhZGVyIHBsdWctaW4gZm9yIFdlYk0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQ
SS5oCmluZGV4IDExMjJhMjQ5ZWVlMTVmZDNhMWNmYjA2MDkyOGJmMWY4Zjk3NjEyNDUuLjdmY2Rk
ZDcxYzVjMjAyN2ViMDcwZmQ5OGQ5NTk1ZTVjNzc1ZDU3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2
aWNlc0NvcmVTUEkuaApAQCAtMjksNiArMjksOCBAQAogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKIAorLy8gRklYTUUoMjE5NzY3KTogUmVtb3ZlIEFTQ0FwcGxlSURDcmVkZW50aWFsLmgu
CisjaW1wb3J0IDxBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZS9BU0NBcHBsZUlEQ3JlZGVudGlh
bC5oPgogI2ltcG9ydCA8QXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmUvQVNDQXV0aG9yaXphdGlv
blByZXNlbnRhdGlvbkNvbnRleHQuaD4KICNpbXBvcnQgPEF1dGhlbnRpY2F0aW9uU2VydmljZXND
b3JlL0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXIuaD4KICNpbXBvcnQgPEF1dGhlbnRpY2F0aW9u
U2VydmljZXNDb3JlL0FTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlLmg+
CkBAIC0xMzAsNiArMTMyLDIzIEBAIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEFTQ0F1dGhvcml6
YXRpb25QcmVzZW50YXRpb25Db250ZXh0RGF0YUtleTsKIAogQGVuZAogCitAcHJvdG9jb2wgQVND
Q3JlZGVudGlhbFByb3RvY29sIDxOU09iamVjdCwgTlNTZWN1cmVDb2Rpbmc+CisKK0BlbmQKKwor
Ly8gRklYTUUoMjE5NzY3KTogUmVtb3ZlIEFTQ0FwcGxlSURDcmVkZW50aWFsLgorQGludGVyZmFj
ZSBBU0NBcHBsZUlEQ3JlZGVudGlhbCA6IE5TT2JqZWN0IDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+
CisKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworKyAoaW5zdGFuY2V0eXBl
KW5ldyBOU19VTkFWQUlMQUJMRTsKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVXNlcjooTlNT
dHJpbmcgKil1c2VyIGlkZW50aXR5VG9rZW46KE5TRGF0YSAqKWlkZW50aXR5VG9rZW47CisKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKnVzZXI7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHksIG51bGxhYmxlKSBOU0RhdGEgKmlkZW50
aXR5VG9rZW47CisKK0BlbmQKKwogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKICNlbmRpZiAvLyBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9zcGkvQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oCmluZGV4IDY3YWYyNmE4NzI0
NzEzNTFmNWRiYmRkYTQ5YjgxZDkxMjY2ZGU4MDkuLjRiZDc1NWFmMmMxZjU5YzcwYTQ5ZTg3MjI1
ODU4YzI2MWZjM2QzMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0Nv
Y29hL0xvY2FsQXV0aGVudGljYXRpb25TUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNl
bHNlCiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIExBT3B0aW9uKSB7CisgICAgTEFPcHRp
b25Ob3RJbnRlcmFjdGl2ZSwKICAgICBMQU9wdGlvbkF1dGhlbnRpY2F0aW9uVGl0bGUsCiAgICAg
TEFPcHRpb25QYXNzY29kZVRpdGxlLAogICAgIExBT3B0aW9uRmFsbGJhY2tWaXNpYmxlLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20u
YXBwbGUuV2ViS2l0LldlYkF1dGhuLnNiIGIvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJv
eFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkF1dGhuLnNiCmluZGV4IDg1MmVkNmMw
YTVmOGM3NTY1MWI3YTZhNzEyZGI2NWI2ZjI4M2FiYmIuLjg1MjI3ZTNkNmVkNGEyZDRmMzYwMTk5
NDYyNjU4NTliZjhiNTYxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1Nh
bmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJBdXRobi5zYgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQu
V2ViQXV0aG4uc2IKQEAgLTY0NSwzICs2NDUsMTcgQEAKIDs7IEFsbG93IGFjY2Vzc2VzIHRvIHRo
ZSBTcHJpbmdib2FyZCB2aWV3IHNlcnZpY2VzLgogKGFsbG93IG1hY2gtbG9va3VwCiAgICAgKGds
b2JhbC1uYW1lICJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyIpKQorCis7
OyBBbGxvdyBhY2Nlc3NlcyB0byB0aGUgS2V5Y2hhaW4gc2VydmljZQorKGFsbG93IG1hY2gtbG9v
a3VwCisgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuc2VjdXJpdHlkIikpCisKKyhhbGxvdyBm
aWxlLXJlYWQqIGZpbGUtd3JpdGUqIChob21lLXN1YnBhdGggIi9MaWJyYXJ5L0tleWNoYWlucyIp
KSA7OyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS8x
MDQ3OTY4NT4gaXMgZml4ZWQuCisKKyhhbGxvdyBmaWxlLXJlYWQqCisgICAgICAgKHN1YnBhdGgg
Ii9MaWJyYXJ5L0tleWNoYWlucyIpCisgICAgICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJhcnkvQXBw
bGljYXRpb24gU3VwcG9ydC9TeW5jU2VydmljZXMvTG9jYWwvQ2xpZW50c1dpdGhDaGFuZ2VzL2Nv
bS5hcHBsZS5LZXljaGFpbiIpKQorCis7OyBBbGxvdyBhY2Nlc3NlcyB0byB0aGUgU0VQCisoYWxs
b3cgbWFjaC1sb29rdXAKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jdGtkLnRva2VuLWNs
aWVudCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvci5oCmluZGV4IGE1ZDE4ZjJhOGY5NWRiMWNiZTYxNTdhODUx
YzAzMjY5ZDA2MjYyMjMuLjYwOTk1NTg4ODc4ODFjMjBkYjNhNTZiYjhhOTQ5YzIxZWE2MjVmYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdG9yLmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IHNlbGVjdEFzc2VydGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPj4mJiwgV2ViQXV0aGVudGljYXRpb25Tb3VyY2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKik+
JiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVu
dGljYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExvY2FsQXV0aGVudGljYXRvclBvbGljeSk+
JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVy
aWZpY2F0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0KCkgPSAwOwogICAgIH07CiAKQEAgLTY3
LDExICs2OCwxNCBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBvcGVyYXRpb24gaXMgZ3VhcmFudGVl
ZCB0byBleGVjdXRlIGFzeW5jaHJvbm91c2x5LgogICAgIHZvaWQgaGFuZGxlUmVxdWVzdChjb25z
dCBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJik7CiAKKyAgICB2b2lkIHNldFdlYkF1dGhl
bnRpY2F0aW9uTW9kZXJuRW5hYmxlZChib29sIHdlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxl
ZCkgeyBtX3dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCA9IHdlYkF1dGhlbnRpY2F0aW9u
TW9kZXJuRW5hYmxlZDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgQXV0aGVudGljYXRvcigpID0gZGVm
YXVsdDsKIAogICAgIE9ic2VydmVyKiBvYnNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2
ZXIuZ2V0KCk7IH0KICAgICBjb25zdCBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ1JlcXVlc3REYXRhOyB9CisgICAgYm9v
bCB3ZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3dlYkF1
dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZDsgfQogCiAgICAgdm9pZCByZWNlaXZlUmVzcG9uZChS
ZXNwb25kJiYpIGNvbnN0OwogCkBAIC04MSw2ICs4NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWFr
UHRyPE9ic2VydmVyPiBtX29ic2VydmVyOwogICAgIFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERh
dGEgbV9wZW5kaW5nUmVxdWVzdERhdGE7CisgICAgYm9vbCBtX3dlYkF1dGhlbnRpY2F0aW9uTW9k
ZXJuRW5hYmxlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCAzNmEwYTFmZGM2ZWYyNzQwYjk2ZDlh
NjI3MmZlNjU0YzIwM2Y4ZjJmLi5kYjdhYjIxM2NkZjQ0NzlkNzAxYzVmNTEzOTVhNmM4Y2NiYjEw
YWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC0xNjUsMTAgKzE2
NSwxMCBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpoYW5kbGVSZXF1ZXN0KFdlYkF1dGhl
bnRpY2F0aW9uUmVxdWVzdERhdGEmJiBkYXRhLCBDYQogICAgIC8vIDIuIEFzayBjbGllbnRzIHRv
IHNob3cgYXBwcm9wcmlhdGUgVUkgaWYgYW55IGFuZCB0aGVuIHN0YXJ0IHRoZSByZXF1ZXN0Lgog
ICAgIGluaXRUaW1lT3V0VGltZXIoKTsKIAotICAgIC8vIEZJWE1FPHJkYXI6Ly9wcm9ibGVtLzcw
ODIyODM0PjogVGhlIG1faXNXZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQgaXMgdXNlZCB0
byBkZXRlcm1pbmUKKyAgICAvLyBGSVhNRTxyZGFyOi8vcHJvYmxlbS83MDgyMjgzND46IFRoZSBt
X3dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCBpcyB1c2VkIHRvIGRldGVybWluZQogICAg
IC8vIHdoZXRoZXIgb3Igbm90IHdlIGFyZSBpbiB0aGUgVUlQcm9jZXNzLgogICAgIC8vIElmIHNv
LCBjb250aW51ZSB0byB0aGUgb2xkIHJvdXRlLiBPdGhlcndpc2UsIHVzZSB0aGUgbW9kZXJuIFdl
YkF1dGhuIHByb2Nlc3Mgd2F5LgotICAgIGlmICghbV9pc1dlYkF1dGhlbnRpY2F0aW9uTW9kZXJu
RW5hYmxlZCkgeworICAgIGlmICghbV93ZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQpIHsK
ICAgICAgICAgcnVuUGFuZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwOSw3ICsy
MDksNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjYW5jZWwoKQogCiB2b2lkIEF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjplbmFibGVNb2Rlcm5XZWJBdXRoZW50aWNhdGlvbigpCiB7Ci0gICAg
bV9pc1dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCA9IHRydWU7CisgICAgbV93ZWJBdXRo
ZW50aWNhdGlvbk1vZGVybkVuYWJsZWQgPSB0cnVlOwogfQogCiB2b2lkIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyOjpjbGVhclN0YXRlQXN5bmMoKQpAQCAtMjM2LDYgKzIzNiw3IEBAIHZvaWQgQXV0aGVu
dGljYXRvck1hbmFnZXI6OmF1dGhlbnRpY2F0b3JBZGRlZChSZWY8QXV0aGVudGljYXRvcj4mJiBh
dXRoZW50aWNhdG9yCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBhdXRoZW50
aWNhdG9yLT5zZXRPYnNlcnZlcigqdGhpcyk7CiAgICAgYXV0aGVudGljYXRvci0+aGFuZGxlUmVx
dWVzdChtX3BlbmRpbmdSZXF1ZXN0RGF0YSk7CisgICAgYXV0aGVudGljYXRvci0+c2V0V2ViQXV0
aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkKG1fd2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVk
KTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXV0aGVudGljYXRvcnMuYWRkKFdURk1vdmUoYXV0
aGVudGljYXRvcikpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7CiB9CkBAIC0zNTEsNiArMzUyLDE2IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFn
ZXI6OmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2
CiAgICAgfSk7CiB9CiAKK3ZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnJlcXVlc3RMQUNvbnRl
eHRGb3JVc2VyVmVyaWZpY2F0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICop
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9wcmVzZW50ZXIpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX3ByZXNlbnRlci0+cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24oV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpjYW5jZWxSZXF1ZXN0KCkKIHsKICAgICBpbnZva2VQZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIo
RXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBj
YW5jZWxsZWQgYnkgdGhlIHVzZXIuIl9zIH0pOwpAQCAtNDQyLDExICs0NTMsMTMgQEAgdm9pZCBB
dXRoZW50aWNhdG9yTWFuYWdlcjo6cnVuUHJlc2VudGVyKCkKIAogdm9pZCBBdXRoZW50aWNhdG9y
TWFuYWdlcjo6aW52b2tlUGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKFJlc3BvbmQmJiByZXNwb25k
KQogeworICAgIGF1dG8gcmVzdWx0ID0gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QXV0aGVu
dGljYXRvclJlc3BvbnNlPj4ocmVzcG9uZCkgPyBXZWJBdXRoZW50aWNhdGlvblJlc3VsdDo6U3Vj
Y2VlZGVkIDogV2ViQXV0aGVudGljYXRpb25SZXN1bHQ6OkZhaWxlZDsKKwogICAgIC8vIFRoaXMg
aXMgZm9yIHRoZSBuZXcgVUkuCiAgICAgaWYgKG1fcHJlc2VudGVyKQotICAgICAgICBtX3ByZXNl
bnRlci0+ZGltaXNzUHJlc2VudGVyKCk7CisgICAgICAgIG1fcHJlc2VudGVyLT5kaW1pc3NQcmVz
ZW50ZXIocmVzdWx0KTsKICAgICBlbHNlIHsKLSAgICAgICAgZGlzcGF0Y2hQYW5lbENsaWVudENh
bGwoW3Jlc3VsdCA9IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEF1dGhlbnRpY2F0b3JSZXNw
b25zZT4+KHJlc3BvbmQpID8gV2ViQXV0aGVudGljYXRpb25SZXN1bHQ6OlN1Y2NlZWRlZCA6IFdl
YkF1dGhlbnRpY2F0aW9uUmVzdWx0OjpGYWlsZWRdIChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0
aW9uUGFuZWwmIHBhbmVsKSB7CisgICAgICAgIGRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKFtyZXN1
bHRdIChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsKSB7CiAgICAgICAg
ICAgICBwYW5lbC5jbGllbnQoKS5kaXNtaXNzUGFuZWwocmVzdWx0KTsKICAgICAgICAgfSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKaW5kZXggYjVhMTJiNDk2OTkyYzIx
Mzg2NzJhMTZjN2Q5MTkxMjhhNGIyOTBmOS4uMWVlNGFiNDk1MzFiZWU5NzQxNDVjNTQ4Nzg1NDIw
NDE2N2VlMzYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCkBAIC0zOSw2ICsz
OSw4IEBACiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKK09CSkNfQ0xBU1MgTEFDb250ZXh0OworCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWw7CiB9CkBAIC04OCw2ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV1RGOjpTdHJpbmcmKT4mJikgZmluYWw7CiAgICAgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNw
b25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+
JiYsIFdlYkF1dGhlbnRpY2F0aW9uU291cmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSopPiYmKSBmaW5hbDsKICAgICB2b2lk
IGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KExvY2FsQXV0aGVudGljYXRvclBvbGljeSk+JiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExB
Q29udGV4dEZvclVzZXJWZXJpZmljYXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRl
eHQgKik+JiYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUmVxdWVzdCgpIGZpbmFsOwogCiAgICAg
Ly8gT3ZlcnJpZGVuIGJ5IE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci4KQEAgLTExNCw3ICsxMTcs
NyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9y
dFNlcnZpY2U+PiBtX3NlcnZpY2VzOwogICAgIEhhc2hTZXQ8UmVmPEF1dGhlbnRpY2F0b3I+PiBt
X2F1dGhlbnRpY2F0b3JzOwogCi0gICAgYm9vbCBtX2lzV2ViQXV0aGVudGljYXRpb25Nb2Rlcm5F
bmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fd2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFi
bGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGlj
YXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5o
CmluZGV4IGFlYzdkOTkyM2VhZjNmY2Q4ZmEzOTZhNmIwMzdmMDAwNDBmYTE4OWEuLmJlOTIxMjAx
ZjU4NjI2Y2MwNDQyNDg5ODI4M2ZjNDI5OTg3NTIzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0aW9uU2Vydmlj
ZXNDb3JlU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLmgKQEAgLTM2
LDUgKzM2LDYgQEAgU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViS2l0LCBBU0NBdXRob3Jp
emF0aW9uUHJlc2VudGVyKTsKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktpdCwgQVND
QXV0aG9yaXphdGlvblByZXNlbnRhdGlvbkNvbnRleHQpOwogU09GVF9MSU5LX0NMQVNTX0ZPUl9I
RUFERVIoV2ViS2l0LCBBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRpYWxMb2dpbkNob2ljZSk7
CiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihXZWJLaXQsIEFTQ1NlY3VyaXR5S2V5UHVibGlj
S2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdl
YktpdCwgQVNDQXBwbGVJRENyZWRlbnRpYWwpOwogCiAjZW5kaWYgLy8gSEFWRShBU0NfQVVUSF9V
SSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZp
Y2VzQ29yZVNvZnRMaW5rLm1tCmluZGV4IGU4MDNiMTBhMjkzYzBjZTVkMzM5ZTlmZjcwNGMxMjc3
ZTcyMWY2MzkuLjg3ZTU0NjAyMjdmNDgxOTE2NTc2YzA5Njg0ODM5MDBjZmRhN2M5ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1
dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0Nv
cmVTb2Z0TGluay5tbQpAQCAtMzYsNSArMzYsNiBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJD
RShXZWJLaXQsIEF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlLCBBU0NBdXRob3JpemF0aW9uUAog
U09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2ViS2l0LCBBdXRoZW50aWNhdGlvblNlcnZpY2Vz
Q29yZSwgQVNDQXV0aG9yaXphdGlvblByZXNlbnRhdGlvbkNvbnRleHQpOwogU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0UoV2ViS2l0LCBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZSwgQVNDUGxh
dGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2UpOwogU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0UoV2ViS2l0LCBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZSwgQVNDU2VjdXJpdHlL
ZXlQdWJsaWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2UpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9T
T1VSQ0UoV2ViS2l0LCBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZSwgQVNDQXBwbGVJRENyZWRl
bnRpYWwpOwogCiAjZW5kaWYgLy8gSEFWRShBU0NfQVVUSF9VSSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQ
cmVzZW50ZXJDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmgKaW5kZXgg
YTBhYzZmODg2MzUxNWUwMjk0ZWVmMzQ3YmFiNjBjNmY3ZGNhMTEzYi4uY2MzMTg0N2Y4OTNjNTQ0
YjI2M2QyMmNhYzVjODYxMzI5ZjRkZjJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmgKQEAgLTM1LDYgKzM1LDcg
QEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBPQkpDX0NMQVNTIEFTQ0F1dGhvcml6YXRp
b25QcmVzZW50ZXI7CitPQkpDX0NMQVNTIExBQ29udGV4dDsKIE9CSkNfQ0xBU1MgV0tBU0NBdXRo
b3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUw
LDE4ICs1MSwyOCBAQCBjbGFzcyBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXV0aGVudGljYXRvclByZQogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcik7CiBwdWJsaWM6CiAgICAg
dXNpbmcgVHJhbnNwb3J0U2V0ID0gSGFzaFNldDxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNw
b3J0LCBXVEY6OkludEhhc2g8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4sIFdURjo6
U3Ryb25nRW51bUhhc2hUcmFpdHM8V2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydD4+Owor
ICAgIHVzaW5nIENyZWRlbnRpYWxSZXF1ZXN0SGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoKT47CiAK
ICAgICBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IoY29uc3QgQXV0aGVudGljYXRv
ck1hbmFnZXImLCBjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFRyYW5zcG9ydFNldCYsIFdlYkNv
cmU6OkNsaWVudERhdGFUeXBlKTsKIAogICAgIHZvaWQgdXBkYXRlUHJlc2VudGVyKFdlYkF1dGhl
bnRpY2F0aW9uU3RhdHVzKTsKICAgICB2b2lkIHJlcXVlc3RQaW4odWludDY0X3QgcmV0cmllcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBzZWxl
Y3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4+JiYsIFdlYkF1dGhlbnRpY2F0aW9uU291cmNlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSopPiYmKTsK
LSAgICB2b2lkIGRpbWlzc1ByZXNlbnRlcigpOworICAgIHZvaWQgcmVxdWVzdExBQ29udGV4dEZv
clVzZXJWZXJpZmljYXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYp
OworICAgIHZvaWQgZGltaXNzUHJlc2VudGVyKFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KTsKKwor
ICAgIHZvaWQgc2V0Q3JlZGVudGlhbFJlcXVlc3RIYW5kbGVyKENyZWRlbnRpYWxSZXF1ZXN0SGFu
ZGxlciYmIGhhbmRsZXIpIHsgbV9jcmVkZW50aWFsUmVxdWVzdEhhbmRsZXIgPSBXVEZNb3ZlKGhh
bmRsZXIpOyB9CisgICAgdm9pZCBzZXRMQUNvbnRleHQoTEFDb250ZXh0ICopOwogCiBwcml2YXRl
OgogICAgIFdlYWtQdHI8QXV0aGVudGljYXRvck1hbmFnZXI+IG1fbWFuYWdlcjsKICAgICBSZXRh
aW5QdHI8QVNDQXV0aG9yaXphdGlvblByZXNlbnRlcj4gbV9wcmVzZW50ZXI7CiAgICAgUmV0YWlu
UHRyPFdLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlPiBtX3ByZXNlbnRlckRlbGVn
YXRlOworCisgICAgQ3JlZGVudGlhbFJlcXVlc3RIYW5kbGVyIG1fY3JlZGVudGlhbFJlcXVlc3RI
YW5kbGVyOworCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+IG1fbGFD
b250ZXh0SGFuZGxlcjsKKyAgICBSZXRhaW5QdHI8TEFDb250ZXh0PiBtX2xhQ29udGV4dDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3Jk
aW5hdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLm1tCmluZGV4IDNkMjJkZThhMzk3
ZDRhMThmMWIwNGNiYTdkYzQ1MjY0OThlMGRhY2EuLjYwYWNiZjA4NTc3MjM4MTY0ZTI4MDY0OGVh
N2Q3NGI1MWY0YmRhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRo
ZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW0KQEAgLTY0LDggKzY0LDkgQEAgQXV0aGVu
dGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRp
bmF0b3IoY29uc3QgQXV0aGUKICAgICBtX3ByZXNlbnRlciA9IFthbGxvY0FTQ0F1dGhvcml6YXRp
b25QcmVzZW50ZXJJbnN0YW5jZSgpIGluaXRdOwogICAgIFttX3ByZXNlbnRlciBzZXREZWxlZ2F0
ZTptX3ByZXNlbnRlckRlbGVnYXRlLmdldCgpXTsKIAotICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoW21hbmFnZXIgPSBtX21hbmFnZXJdIChpZDxBU0NDcmVkZW50aWFs
UHJvdG9jb2w+LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghZXJyb3Ip
CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbbWFuYWdlciA9IG1f
bWFuYWdlcl0gKGlkPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAq
ZXJyb3IpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAg
ICAgICAgaWYgKGNyZWRlbnRpYWwgfHwgIWVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgY29tcGxldGUgdGhlIGF1dGhlbnRpY2F0b3IgcHJl
c2VudGF0aW9uIGNvbnRleHQ6ICVAIiwgZXJyb3IpOwpAQCAtOTUsMTEgKzk2LDM1IEBAIHZvaWQg
QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpzZWxlY3RBc3NlcnRpb25SZXNwb25z
ZShWZWN0b3I8UmVmPEF1dGhlCiAgICAgLy8gRklYTUUoMjE5NzExKTogQWRvcHQgbmV3IFVJIGZv
ciB0aGUgU2VjdXJpdHkgS2V5IGdldEFzc2VydGlvbiBmbG93LgogfQogCi12b2lkIEF1dGhlbnRp
Y2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6ZGltaXNzUHJlc2VudGVyKCkKK3ZvaWQgQXV0aGVu
dGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpyZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlm
aWNhdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExBQ29udGV4dCAqKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKKyAgICBpZiAobV9sYUNvbnRleHQpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobV9sYUNvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9sYUNvbnRleHRIYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKK3Zv
aWQgQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpkaW1pc3NQcmVzZW50ZXIoV2Vi
QXV0aGVudGljYXRpb25SZXN1bHQgcmVzdWx0KQoreworICAgIGlmIChyZXN1bHQgPT0gV2ViQXV0
aGVudGljYXRpb25SZXN1bHQ6OlN1Y2NlZWRlZCAmJiBtX2NyZWRlbnRpYWxSZXF1ZXN0SGFuZGxl
cikgeworICAgICAgICBtX2NyZWRlbnRpYWxSZXF1ZXN0SGFuZGxlcigpOworICAgICAgICByZXR1
cm47CisgICAgfQogICAgIC8vIEZJWE1FKDIxOTcxNik6IEFkb3B0IG5ldyBVSSBmb3IgdGhlIGRp
c21pc3MgZmxvdy4KIH0KIAordm9pZCBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6
OnNldExBQ29udGV4dChMQUNvbnRleHQgKmNvbnRleHQpCit7CisgICAgaWYgKG1fbGFDb250ZXh0
SGFuZGxlcikgeworICAgICAgICBtX2xhQ29udGV4dEhhbmRsZXIoY29udGV4dCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX2xhQ29udGV4dCA9IGNvbnRleHQ7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2Fs
QXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKaW5kZXggNTg0NzlkNDljOWRkNmMwNDllNjdm
NjJkYzA3OTU1Yjc1Y2IzMTM5Zi4uYjY2MWY1YWYyNTRiNTc5ZTFkODRjNWUwZDFjODFmMDVjYjY3
YzQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKQEAgLTYxLDYg
KzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoKSBmaW5hbDsKICAg
ICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckRlY2lkZVBvbGljeShMb2NhbEF1dGhl
bnRpY2F0b3JQb2xpY3kpOworICAgIHZvaWQgY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyUmVj
ZWl2aW5nTEFDb250ZXh0KExBQ29udGV4dCAqKTsKICAgICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRl
bnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24oU2VjQWNjZXNzQ29udHJvbFJlZiwgTG9jYWxDb25u
ZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uLCBMQUNvbnRleHQgKik7CiAgICAgdm9pZCBjb250aW51
ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChWZWN0b3I8dWludDhfdD4mJiBjcmVkZW50aWFs
SWQsIFZlY3Rvcjx1aW50OF90PiYmIGF1dGhEYXRhLCBOU0FycmF5ICpjZXJ0aWZpY2F0ZXMsIE5T
RXJyb3IgKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRl
eCBkZDVmZmE3YjYyZGZlY2Y1MDVmNGM1NjU5MTM0NTAzOWZkNTVlZGYyLi4xMTA0NzU1NzExMzk2
ODFhNThkMzQxMDFjMjU2NzljMzEzMTlmNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxB
dXRoZW50aWNhdG9yLm1tCkBAIC0yMzQsNiArMjM0LDIyIEBAIHZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjptYWtlQ3JlZGVudGlhbCgpCiAKICAgICAvLyBTdGVwIDYuCiAgICAgLy8gR2V0IHVzZXIg
Y29uc2VudC4KKyAgICAvLyBUaGlzIGlzIGZvciB0aGUgbmV3IFVJLgorICAgIGlmICh3ZWJBdXRo
ZW50aWNhdGlvbk1vZGVybkVuYWJsZWQoKSkgeworICAgICAgICBpZiAoYXV0byogb2JzZXJ2ZXIg
PSB0aGlzLT5vYnNlcnZlcigpKSB7CisgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0gW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoTEFDb250ZXh0ICpjb250ZXh0KSB7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAg
ICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyUmVjZWl2aW5nTEFDb250ZXh0
KGNvbnRleHQpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIG9ic2VydmVyLT5yZXF1ZXN0
TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbihXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKGF1dG8qIG9ic2VydmVyID0g
dGhpcy0+b2JzZXJ2ZXIoKSkgewogICAgICAgICBhdXRvIGNhbGxiYWNrID0gW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpXSAoTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5IHBvbGljeSkgewog
ICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTI4MCw2ICsyOTYsMzMg
QEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckRl
Y2lkZVBvbGljeShMb2NhbEF1dGhlbnRpY2EKICAgICBtX2Nvbm5lY3Rpb24tPnZlcmlmeVVzZXIo
Y3JlYXRpb25PcHRpb25zLnJwLmlkLCBnZXRDbGllbnREYXRhVHlwZShyZXF1ZXN0RGF0YSgpLm9w
dGlvbnMpLCBhY2Nlc3NDb250cm9sUmVmLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKK3ZvaWQg
TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZWNlaXZpbmdM
QUNvbnRleHQoTEFDb250ZXh0ICpjb250ZXh0KQoreworICAgIEFTU0VSVChtX3N0YXRlID09IFN0
YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6UG9saWN5RGVjaWRl
ZDsKKworICAgIFJldGFpblB0cjxTZWNBY2Nlc3NDb250cm9sUmVmPiBhY2Nlc3NDb250cm9sOwor
ICAgIHsKKyAgICAgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxwdHI7CisgICAgICAgIGFj
Y2Vzc0NvbnRyb2wgPSBhZG9wdENGKFNlY0FjY2Vzc0NvbnRyb2xDcmVhdGVXaXRoRmxhZ3MoTlVM
TCwga1NlY0F0dHJBY2Nlc3NpYmxlV2hlblBhc3Njb2RlU2V0VGhpc0RldmljZU9ubHksIGtTZWNB
Y2Nlc3NDb250cm9sUHJpdmF0ZUtleVVzYWdlIHwga1NlY0FjY2Vzc0NvbnRyb2xVc2VyUHJlc2Vu
Y2UsICZlcnJvclJlZikpOworICAgICAgICBhdXRvIHJldGFpbkVycm9yID0gYWRvcHRDRihlcnJv
clJlZik7CisgICAgICAgIGlmIChlcnJvclJlZikgeworICAgICAgICAgICAgcmVjZWl2ZUV4Y2Vw
dGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgY3JlYXRlIGFjY2VzcyBj
b250cm9sOiAiLCBTdHJpbmcoKChOU0Vycm9yKillcnJvclJlZikubG9jYWxpemVkRGVzY3JpcHRp
b24pKSB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIFNl
Y0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiA9IGFjY2Vzc0NvbnRyb2wuZ2V0KCk7
CisgICAgYXV0byBjYWxsYmFjayA9IFthY2Nlc3NDb250cm9sID0gV1RGTW92ZShhY2Nlc3NDb250
cm9sKSwgY29udGV4dCA9IHJldGFpblB0cihjb250ZXh0KSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyldIChMb2NhbENvbm5lY3Rpb246OlVzZXJWZXJpZmljYXRpb24gdmVyaWZpY2F0aW9u
KSB7CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGlmICghd2Vh
a1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVl
TWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24oYWNjZXNzQ29udHJvbC5nZXQoKSwg
dmVyaWZpY2F0aW9uLCBjb250ZXh0LmdldCgpKTsKKyAgICB9OworICAgIG1fY29ubmVjdGlvbi0+
dmVyaWZ5VXNlcihhY2Nlc3NDb250cm9sUmVmLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSk7
Cit9CisKIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0
ZXJVc2VyVmVyaWZpY2F0aW9uKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbFJlZiwg
TG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0aW9uIHZlcmlmaWNhdGlvbiwgTEFDb250ZXh0
ICpjb250ZXh0KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRl
cm5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLmgKaW5kZXggODA1MWMxMzcxOGQ3
ZjQxOTM5NWMyNjM2NjAyNTQ5N2IyZDE4ZTg2Mi4uODkzZTUzOGI4OWRiOTY2YTBlMDU5YjRhYjY1
NzQ1ZTY1MzJlMmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLmgKQEAgLTY1
LDYgKzY1LDcgQEAgcHVibGljOgogCiAgICAgLy8gT3ZlcnJpZGVkIGJ5IE1vY2tMb2NhbENvbm5l
Y3Rpb24uCiAgICAgdmlydHVhbCB2b2lkIHZlcmlmeVVzZXIoY29uc3QgU3RyaW5nJiBycElkLCBX
ZWJDb3JlOjpDbGllbnREYXRhVHlwZSwgU2VjQWNjZXNzQ29udHJvbFJlZiwgVXNlclZlcmlmaWNh
dGlvbkNhbGxiYWNrJiYpOworICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vzc0Nv
bnRyb2xSZWYsIExBQ29udGV4dCAqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJWZXJpZmlj
YXRpb24pPiYmKTsKICAgICB2aXJ0dWFsIFJldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZUNyZWRl
bnRpYWxQcml2YXRlS2V5KExBQ29udGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBjb25zdCBT
dHJpbmcmIHNlY0F0dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0
aERhdGEsIE5TRGF0YSAqaGFzaCwgQXR0ZXN0YXRpb25DYWxsYmFjayYmKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgZmlsdGVyUmVzcG9uc2VzKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPj4mKSBjb25zdCB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bENvbm5lY3Rpb24ubW0KaW5kZXggZjc5OGIwYjdmN2MzN2Y3MDQzZjk4NzNkM2ZhNjM2ZGQyY2Q3
ZWU5ZS4uMGI5NGY5ZmFhNTg3NTJkNjE3MGFlYTIxNjUwZmNkNDk3MDM2YTcwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxD
b25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQpAQCAtOTYsNiArOTYsMjkgQEAgdm9pZCBMb2Nh
bENvbm5lY3Rpb246OnZlcmlmeVVzZXIoY29uc3QgU3RyaW5nJiBycElkLCBDbGllbnREYXRhVHlw
ZSB0eXBlLCBTZWNBY2MKICAgICBbbV9jb250ZXh0IGV2YWx1YXRlQWNjZXNzQ29udHJvbDphY2Nl
c3NDb250cm9sIG9wZXJhdGlvbjpMQUFjY2Vzc0NvbnRyb2xPcGVyYXRpb25Vc2VLZXlTaWduIG9w
dGlvbnM6b3B0aW9ucy5nZXQoKSByZXBseTpyZXBseS5nZXQoKV07CiB9CiAKK3ZvaWQgTG9jYWxD
b25uZWN0aW9uOjp2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbCwg
TEFDb250ZXh0ICpjb250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJWZXJpZmljYXRp
b24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMo
W1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgW29wdGlvbnMgc2V0T2Jq
ZWN0OkBZRVMgZm9yS2V5OkAoTEFPcHRpb25Ob3RJbnRlcmFjdGl2ZSldOworCisgICAgYXV0byBy
ZXBseSA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKE5TRGljdGlvbmFyeSAqLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7Cisg
ICAgICAgIFVzZXJWZXJpZmljYXRpb24gdmVyaWZpY2F0aW9uID0gVXNlclZlcmlmaWNhdGlvbjo6
WWVzOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRu
J3QgYXV0aGVudGljYXRlIHdpdGggYmlvbWV0cmljczogJUAiLCBlcnJvcik7CisgICAgICAgICAg
ICB2ZXJpZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uOjpObzsKKyAgICAgICAgICAgIGlmIChl
cnJvci5jb2RlID09IExBRXJyb3JVc2VyQ2FuY2VsKQorICAgICAgICAgICAgICAgIHZlcmlmaWNh
dGlvbiA9IFVzZXJWZXJpZmljYXRpb246OkNhbmNlbDsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IFRoaXMgYmxvY2sgY2FuIGJlIGV4ZWN1dGVkIGluIGFub3RoZXIgdGhyZWFkLgorICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIHZlcmlmaWNhdGlvbl0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih2ZXJpZmljYXRpb24pOworICAgICAgICB9KTsKKyAgICB9KTsKKwor
ICAgIFtjb250ZXh0IGV2YWx1YXRlQWNjZXNzQ29udHJvbDphY2Nlc3NDb250cm9sIG9wZXJhdGlv
bjpMQUFjY2Vzc0NvbnRyb2xPcGVyYXRpb25Vc2VLZXlTaWduIG9wdGlvbnM6b3B0aW9ucy5nZXQo
KSByZXBseTpyZXBseS5nZXQoKV07Cit9CisKIFJldGFpblB0cjxTZWNLZXlSZWY+IExvY2FsQ29u
bmVjdGlvbjo6Y3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICpjb250ZXh0LCBT
ZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0
ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QKIHsKICAgICBOU0Rp
Y3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBAewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVy
RGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5tbQppbmRleCA3NGYzMDA2
NzAzMjZkNDQyMTBhODNkZGM2ZjkzZGFjN2ZlZmZkMmZiLi5lMWVmN2YyNDA3M2ZiOWIxOTUyODk2
NDlhNmZiMDc4MGM2NjJjZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9XS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5tbQpAQCAtMzAsNiArMzAsOCBA
QAogCiAjaW1wb3J0ICJBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IuaCIKIAorI2lt
cG9ydCAiQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5oIgorCiBOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgogCiBAaW1wbGVtZW50YXRpb24gV0tBU0NBdXRob3JpemF0aW9uUHJlc2Vu
dGVyRGVsZWdhdGUgewpAQCAtNDUsNyArNDcsMjQgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q29vcmRpbmF0b3I6KFdlYktpdDo6QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yJikK
IAogLSAodm9pZClhdXRob3JpemF0aW9uUHJlc2VudGVyOihBU0NBdXRob3JpemF0aW9uUHJlc2Vu
dGVyICopcHJlc2VudGVyIGNyZWRlbnRpYWxSZXF1ZXN0ZWRGb3JMb2dpbkNob2ljZTooaWQgPEFT
Q0xvZ2luQ2hvaWNlUHJvdG9jb2w+KWxvZ2luQ2hvaWNlIGF1dGhlbnRpY2F0ZWRDb250ZXh0Oihu
dWxsYWJsZSBMQUNvbnRleHQgKiljb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShp
ZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBfTnVsbGFibGUgY3JlZGVudGlhbCwgTlNFcnJvciAq
IF9OdWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICAvLyBGSVhNRSgyMTk3
MDkpOiBBZG9wdCBuZXcgVUkgZm9yIHRoZSBQbGF0Zm9ybSBBdXRoZW50aWNhdG9yIG1ha2VDcmVk
ZW50aWFsIGZsb3cuCisgICAgYXV0byByZXF1ZXN0SGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxl
ciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgLy8gRklYTUUo
MjE5NzY3KTogUmVwbGFjZSB0aGUgQVNDQXBwbGVJRENyZWRlbnRpYWwgd2l0aCB0aGUgdXBjb21p
bmcgV2ViQXV0aG4gY3JlZGVudGlhbHMgb25lLgorICAgICAgICAvLyBUaGlzIGlzIGp1c3QgYSBw
bGFjZSBob2xkZXIgdG8gdGVsbCB0aGUgVUkgdGhhdCB0aGUgY2VyZW1vbnkgc3VjY2VlZHMuCisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0TlMoW1dlYktpdDo6YWxsb2NBU0NBcHBsZUlE
Q3JlZGVudGlhbEluc3RhbmNlKCkgaW5pdFdpdGhVc2VyOkAiIiBpZGVudGl0eVRva2VuOmFkb3B0
TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRdKS5nZXQoKV0pLmdldCgpLCBuaWwpOworICAgIH07Cisg
ICAgW3NlbGYgZGlzcGF0Y2hDb29yZGluYXRvckNhbGxiYWNrOltyZXF1ZXN0SGFuZGxlciA9IFdU
Rk1vdmUocmVxdWVzdEhhbmRsZXIpXSAoV2ViS2l0OjpBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29v
cmRpbmF0b3ImIGNvb3JkaW5hdG9yKSBtdXRhYmxlIHsKKyAgICAgICAgY29vcmRpbmF0b3Iuc2V0
Q3JlZGVudGlhbFJlcXVlc3RIYW5kbGVyKFdURk1vdmUocmVxdWVzdEhhbmRsZXIpKTsKKyAgICB9
XTsKKworICAgIGlmIChbbG9naW5DaG9pY2UgaXNLaW5kT2ZDbGFzczpXZWJLaXQ6OmdldEFTQ1Bs
YXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlQ2xhc3MoKV0pIHsKKyAgICAgICAg
aWYgKFsoQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2UgKilsb2dpbkNo
b2ljZSBpc1JlZ2lzdHJhdGlvblJlcXVlc3RdKSB7CisgICAgICAgICAgICBbc2VsZiBkaXNwYXRj
aENvb3JkaW5hdG9yQ2FsbGJhY2s6W2NvbnRleHQgPSByZXRhaW5QdHIoY29udGV4dCldIChXZWJL
aXQ6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvciYgY29vcmRpbmF0b3IpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgIGNvb3JkaW5hdG9yLnNldExBQ29udGV4dChjb250ZXh0Lmdl
dCgpKTsKKyAgICAgICAgICAgIH1dOworCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CiB9CiAKIC0gKHZvaWQpYXV0aG9yaXphdGlvblByZXNlbnRlcjooQVNDQXV0aG9yaXph
dGlvblByZXNlbnRlciAqKXByZXNlbnRlciB2YWxpZGF0ZVVzZXJFbnRlcmVkUElOOihOU1N0cmlu
ZyAqKXBpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQgPEFTQ0NyZWRlbnRpYWxQcm90
b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCkBAIC01
Myw2ICs3MiwxNiBAQCAtICh2b2lkKWF1dGhvcml6YXRpb25QcmVzZW50ZXI6KEFTQ0F1dGhvcml6
YXRpb25QcmVzZW50ZXIgKilwcmVzZW50ZXIgdmFsaWRhdGVVcwogICAgIC8vIEZJWE1FKDIxOTcx
Mik6IEFkb3B0IG5ldyBVSSBmb3IgdGhlIENsaWVudCBQSU4gZmxvdy4KIH0KIAorLSAodm9pZClk
aXNwYXRjaENvb3JkaW5hdG9yQ2FsbGJhY2s6KEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpBdXRoZW50
aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3ImKT4mJiljYWxsYmFjaworeworICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29vcmRp
bmF0b3IgPSBfY29vcmRpbmF0b3IsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIHsKKyAg
ICAgICAgaWYgKCFjb29yZGluYXRvcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2Fs
bGJhY2soKmNvb3JkaW5hdG9yKTsKKyAgICB9KTsKK30KKwogQGVuZAogCiBOU19BU1NVTUVfTk9O
TlVMTF9FTkQK
</data>
<flag name="review"
          id="433345"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>