<?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>221125</bug_id>
          
          <creation_ts>2021-01-29 00:41:21 -0800</creation_ts>
          <short_desc>[WebAuthn] Optimize _WKWebAuthenticationPanelDelegate for native API</short_desc>
          <delta_ts>2021-02-01 18:50:07 -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>1723644</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-01-29 00:41:21 -0800</bug_when>
    <thetext>Optimize _WKWebAuthenticationPanelDelegate for native API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723645</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-01-29 00:41:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/71509141&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723651</commentid>
    <comment_count>2</comment_count>
      <attachid>418711</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-01-29 00:54:46 -0800</bug_when>
    <thetext>Created attachment 418711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723963</commentid>
    <comment_count>3</comment_count>
      <attachid>418789</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-01-29 17:05:08 -0800</bug_when>
    <thetext>Created attachment 418789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724016</commentid>
    <comment_count>4</comment_count>
      <attachid>418808</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-01-29 22:19:02 -0800</bug_when>
    <thetext>Created attachment 418808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724017</commentid>
    <comment_count>5</comment_count>
      <attachid>418809</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-01-29 22:26:38 -0800</bug_when>
    <thetext>Created attachment 418809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724446</commentid>
    <comment_count>6</comment_count>
      <attachid>418809</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-02-01 15:38:24 -0800</bug_when>
    <thetext>Comment on attachment 418809
Patch

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

r=me

&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:509
&gt; +    RunLoop::main().dispatch([weakPanel, call = WTFMove(call)] () {

Should we WTFMove() the weakPanel? We don&apos;t use it again outside the dispatch.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:155
&gt; +        [responses[0] setLAContext:laContext.get()];

Why not responses.firstObject?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724455</commentid>
    <comment_count>7</comment_count>
      <attachid>418809</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-02-01 15:47:24 -0800</bug_when>
    <thetext>Comment on attachment 418809
Patch

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

Thanks Brent for r+ this patch.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:509
&gt;&gt; +    RunLoop::main().dispatch([weakPanel, call = WTFMove(call)] () {
&gt; 
&gt; Should we WTFMove() the weakPanel? We don&apos;t use it again outside the dispatch.

Good catch. We can totally move that.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:155
&gt;&gt; +        [responses[0] setLAContext:laContext.get()];
&gt; 
&gt; Why not responses.firstObject?

Sure, it&apos;s totally doable. Since we check the count before, [0] shouldn&apos;t cause any issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724457</commentid>
    <comment_count>8</comment_count>
      <attachid>418937</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-02-01 16:02:15 -0800</bug_when>
    <thetext>Created attachment 418937
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724501</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-01 18:50:06 -0800</bug_when>
    <thetext>Committed r272184: &lt;https://trac.webkit.org/changeset/272184&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418937.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418711</attachid>
            <date>2021-01-29 00:54:46 -0800</date>
            <delta_ts>2021-01-29 17:05:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221125-20210129005446.patch</filename>
            <type>text/plain</type>
            <size>38345</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEzY2Q0NzMzYWY3MDk4Mzg0
ZjBjMGE3MWIxM2QzNDIzNDQ4MTRjZjMuLjNhZjA0MmJlOTdlMDIwNjk2NmNlZTUyMzg0N2NhNzAx
M2UxMzAyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMjEtMDEtMjkgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIE9wdGltaXpl
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBmb3IgbmF0aXZlIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMTI1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83MTUwOTE0MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1haW5seSBkb2VzIHRoZSBmb2xsb3dpbmcg
ZmV3IHRoaW5nczoKKyAgICAgICAgMS4gSXQgY29ubmVjdHMgdGhlIG5ldyBTUEkgd2l0aCB0aGUg
ZXhpc3RpbmcgbW9jayB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIHN1Y2ggdGhhdCB3ZSBjYW4gbW9j
ayB0ZXN0IGl0LgorICAgICAgICAyLiBJdCBhZGRzIGEgbmV3IG1vZGUgaW4gQXV0aGVudGljYXRv
ck1hbmFnZXIgdG8gY29ubmVjdCBpdCB0byB0aGUgbmV3IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxEZWxlZ2F0ZSBvYmplY3QuCisgICAgICAgIDMuIEl0IGFkc3MgYSBuZXcgU1BJIHRvIF9XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZTogLVtwYW5lbDpyZXF1ZXN0TEFDb250ZXh0Rm9y
VXNlclZlcmlmaWNhdGlvbldpdGhDb21wbGV0aW9uSGFuZGxlcjpdLAorICAgICAgICBhbmQgYWRk
cyBhIG5ldyBtZXRob2Qgd2l0aGluIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UgdG8gYWNjZXB0IGFuIExBQ29udGV4dCBmcm9tIHRoZSBjYWxsZXIgdG8gdW5sb2NrCisgICAg
ICAgIHRoZSBrZXljaGFpbi4KKyAgICAgICAgNC4gSXQgZW5hYmxlcyAtW19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwgY2FuY2VsXSB0byB1c2UgdGhlIG5ldyBjYW5jZWwgbWV0aG9kLgorCisgICAg
ICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmg6CisgICAgICAgIEFjY2VwdHMgYSBM
QUNvbnRleHQgb2JqZWN0LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50
aWNhdGlvblBhbmVsLmNwcDoKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbCk6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWw6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNhdGlvblBh
bmVsOjpjYW5jZWwgY29uc3QpOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVs
OjpzZXRNb2NrQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJB
dXRoZW50aWNhdGlvblBhbmVsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQ6OnJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uIGNvbnN0KToK
KyAgICAgICAgQWRkcyBuZXcgU1BJIGFuZCBtb2NraW5nLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLm1tOgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlIHNldExBQ29udGV4dDpdKToKKyAgICAgICAgQWNjZXB0cyBhIExBQ29udGV4dCBvYmplY3Qu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW06CisgICAgICAgICgtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgc2V0TW9ja0Nv
bmZpZ3VyYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsRm9yVGVzdGluZy5oOgorICAgICAgICBBZGRzIG5ldyBTUEkgYW5kIG1v
Y2tpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6
aGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpl
bmFibGVNb2Rlcm5XZWJBdXRoZW50aWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRp
Y2F0b3JNYW5hZ2VyOjplbmFibGVOYXRpdmVTdXBwb3J0KToKKyAgICAgICAgKFdlYktpdDo6QXV0
aGVudGljYXRvck1hbmFnZXI6OmF1dGhlbnRpY2F0b3JBZGRlZCk6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QcmVzZW50ZXIp
OgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6ZGlzcGF0Y2hQYW5lbENs
aWVudENhbGwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5oOgorICAgICAgICBBZGRzIGEgbmV3IG1vZGUgdG8gcG93ZXIg
dGhlIG5hdGl2ZSBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudDo6cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24gY29uc3Qp
OgorICAgICAgICBBY2NlcHRzIGEgTEFDb250ZXh0IG9iamVjdC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpNb2NrTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2VyKToK
KyAgICAgICAgQWRkcyBuZXcgbW9ja2luZyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oOgorICAg
ICAgICBBZGRzIHRoZSBuZXcgd2VhayBwYW5lbC4KKwogMjAyMS0wMS0yMiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGUgd2ViIHByb2Nlc3Mgc2hv
dWxkIGJlIGtpbGxlZCBhZnRlciBmYWlsaW5nIHRvIGRlY29kZSBkaXNwbGF5IGxpc3QgaXRlbXMg
aW4gdGhlIEdQVSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaApp
bmRleCAwMTcwMDgxODYxNzk2MjI2NGY4YTQwZGNhOWM2NDIzMjZkYTBmZmQ1Li41MjMzNTM0ODFl
MmI2ZGFkZTgwMzhmZGRjODJkZWEwODM0ZGJjMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlLmgKQEAgLTQzLDYgKzQzLDggQEAgcHVibGljOgogICAgIGNvbnN0IFdURjo6
U3RyaW5nJiBkaXNwbGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UtPmRpc3BsYXlO
YW1lKCk7IH0KICAgICBSZWZQdHI8RGF0YT4gdXNlckhhbmRsZSgpIGNvbnN0OwogCisgICAgdm9p
ZCBzZXRMQUNvbnRleHQoTEFDb250ZXh0ICpjb250ZXh0KSB7IG1fcmVzcG9uc2UtPnNldExBQ29u
dGV4dChjb250ZXh0KTsgfQorCiAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlKiByZXNwb25zZSgpIHsgcmV0dXJuIG1fcmVzcG9uc2UucHRyKCk7IH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50
aWNhdGlvblBhbmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLmNwcAppbmRleCBmZmYzMzAxOGEyMGExYzg3ZTBjMDdkNDg5NDhjNzc3
MzRhNjdhNWU4Li4zZmFhYzg5ZTVkNWRmZjkyNmM0OGRkZDVlMDcyZTE3ZmQ0OWY0M2Q0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBUElXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIu
aCIKKyNpbmNsdWRlICJNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmg+CiAKIG5hbWVzcGFjZSBBUEkgewpAQCAt
NDUsNiArNDYsNyBAQCBXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpXZWJBdXRoZW50aWNhdGlvblBh
bmVsKCkKICAgICA6IG1fbWFuYWdlcihtYWtlVW5pcXVlPEF1dGhlbnRpY2F0b3JNYW5hZ2VyPigp
KQogICAgICwgbV9jbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50PigpKQogeworICAgIG1fbWFuYWdlci0+ZW5hYmxlTmF0aXZlU3VwcG9ydCgpOwogfQogCiBX
ZWJBdXRoZW50aWNhdGlvblBhbmVsOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsKGNvbnN0IEF1dGhl
bnRpY2F0b3JNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXVEY6OlN0cmluZyYgcnBJZCwgY29uc3Qg
VHJhbnNwb3J0U2V0JiB0cmFuc3BvcnRzLCBDbGllbnREYXRhVHlwZSB0eXBlKQpAQCAtNjgsMTMg
KzcwLDMwIEBAIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6On5XZWJBdXRoZW50aWNhdGlvblBhbmVs
KCkgPSBkZWZhdWx0Owogdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpoYW5kbGVSZXF1ZXN0
KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiByZXF1ZXN0LCBDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogICAgIEFTU0VSVChtX21hbmFnZXIpOworICAgIHJlcXVlc3Qud2Vha1BhbmVsID0g
bWFrZVdlYWtQdHIoKnRoaXMpOwogICAgIG1fbWFuYWdlci0+aGFuZGxlUmVxdWVzdChXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV2ViQXV0aGVudGljYXRp
b25QYW5lbDo6Y2FuY2VsKCkgY29uc3QKIHsKLSAgICBpZiAobV93ZWFrTWFuYWdlcikKKyAgICBp
ZiAobV93ZWFrTWFuYWdlcikgewogICAgICAgICBtX3dlYWtNYW5hZ2VyLT5jYW5jZWxSZXF1ZXN0
KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbWFuYWdlci0+Y2FuY2Vs
KCk7Cit9CisKK3ZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbDo6c2V0TW9ja0NvbmZpZ3VyYXRp
b24oV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3Vy
YXRpb24pCit7CisgICAgQVNTRVJUKG1fbWFuYWdlcik7CisKKyAgICBpZiAoIW1fbWFuYWdlci0+
aXNNb2NrKCkpIHsKKyAgICAgICAgbV9tYW5hZ2VyID0gbWFrZVVuaXF1ZTxNb2NrQXV0aGVudGlj
YXRvck1hbmFnZXI+KFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAgICAgICBtX21hbmFnZXIt
PmVuYWJsZU5hdGl2ZVN1cHBvcnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzdGF0
aWNfY2FzdDxNb2NrQXV0aGVudGljYXRvck1hbmFnZXIqPihtX21hbmFnZXIuZ2V0KCkpLT5zZXRU
ZXN0Q29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIH0KIAogdm9pZCBXZWJB
dXRoZW50aWNhdGlvblBhbmVsOjpzZXRDbGllbnQoVW5pcXVlUmVmPFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQ+JiYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKaW5kZXggODM2MjBkYjRiMWVjNmZl
MjczM2M2NjlhZjIxMmU4OTYzZGE1MWYwYy4uMzJjYTVmNjlmOTlhY2IxYTFhYzg4NDNjZjM1MjA0
OWNiYWU3YTI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCkBAIC0zOSw2ICszOSw3IEBAIGVudW0gY2xhc3Mg
Q2xpZW50RGF0YVR5cGUgOiBib29sOwogY2xhc3MgQXV0aGVudGljYXRvclJlc3BvbnNlOwogCiBz
dHJ1Y3QgRXhjZXB0aW9uRGF0YTsKK3N0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYxLDYgKzYyLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25SZXF1
ZXN0RGF0YSYmLCBDYWxsYmFjayYmKTsKICAgICB2b2lkIGNhbmNlbCgpIGNvbnN0OworICAgIHZv
aWQgc2V0TW9ja0NvbmZpZ3VyYXRpb24oV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbiYmKTsKIAogICAgIGNvbnN0IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQm
IGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CiAgICAgdm9pZCBzZXRD
bGllbnQoVW5pcXVlUmVmPFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNh
dGlvblBhbmVsQ2xpZW50LmgKaW5kZXggYTM2OGMzN2FlZWZkZTMxOTMwZWUxODNiNmU1ZjE4Y2Fi
ZDAyZGM1NS4uNDBmMjdlNzMyY2ZlODFmNjM4YThlNzM2MTIwNmVkNjg2MTQ4OGQzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudC5oCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25I
YW5kbGVyKFdURjo6U3RyaW5nKCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdEFzc2VydGlv
blJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPj4mJiwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblNvdXJjZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UqKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3IoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvclBvbGljeSk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpMb2NhbEF1dGhl
bnRpY2F0b3JQb2xpY3k6OkRpc2FsbG93KTsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TEFD
b250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExBQ29udGV4
dCAqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaAppbmRleCAzOTM0ODY5YzM2MzcxMDdhYmI3NjgzZjcy
NGZiMGNlNTdkNWJkMmU0Li41ZTZhMGVmODU2NGMyYzFmMzBmNDRhYjFkYWUzYmUxNzY5ZWUxYTYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgKQEAg
LTI4LDYgKzI4LDggQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAorQGNsYXNzIExBQ29u
dGV4dDsKKwogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpCiBAaW50ZXJmYWNlIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Ug
OiBOU09iamVjdAogCkBAIC0zNSw2ICszNyw4IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBOU1N0cmluZyAqZGlzcGxheU5hbWU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHksIGNvcHkpIE5TRGF0YSAqdXNlckhhbmRsZTsKIAorLSAodm9pZClzZXRMQUNvbnRl
eHQ6KExBQ29udGV4dCAqKWNvbnRleHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UubW0KaW5kZXggOTcx
ZjIzNjY0MDMwNTgzOTAzNGUwOTE4NDg0N2I5N2NlMWQ5YWFhMS4uYTMyYTJhZmNlYzVmZGNkZGM3
ZWQ3MTc1NDM1YTU1YzBhMTZlYjFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UubW0KQEAgLTU0LDYgKzU0LDExIEBAIC0gKE5TRGF0YSAqKXVzZXJI
YW5kbGUKICAgICByZXR1cm4gd3JhcHBlcihfcmVzcG9uc2UtPnVzZXJIYW5kbGUoKSk7CiB9CiAK
Ky0gKHZvaWQpc2V0TEFDb250ZXh0OihMQUNvbnRleHQgKiljb250ZXh0Cit7CisgICAgX3Jlc3Bv
bnNlLT5zZXRMQUNvbnRleHQoY29udGV4dCk7Cit9CisKICNwcmFnbWEgbWFyayBXS09iamVjdCBw
cm90b2NvbCBpbXBsZW1lbnRhdGlvbgogCiAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLmgKaW5kZXggNDVjZTI3MjY2NjE1NGEyYmY1YTEwYmU4OTcyNjZj
Y2JjMWM4ZDhkNi4uZWFkZDI3OGFiOTU0MGZkNjI5NmQwMjYzZmFiNTE4NDM4NDE3ZTQ4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5oCkBAIC0zNCw2ICszNCw3IEBAIE5TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCiBAY2xhc3MgX1dLUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwog
QGNsYXNzIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U7CiBAY2xhc3MgX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbDsKK0BjbGFzcyBMQUNvbnRleHQ7CiAKIHR5cGVkZWYgTlNf
RU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpIHsKICAgICBf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0VW5hdmFpbGFibGUsCkBAIC03OCwxNyArNzks
MTggQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRpb25Tb3Vy
Y2UpIHsKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblNvdXJjZUV4dGVybmFsLAogfSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCi0vLyBGSVhN
RTogPHJkYXI6Ly9wcm9ibGVtLzcxNTA5MTQxPiBPcHRpbWl6ZSB0aGUgZGVsZWdhdGUgZm9yIHRo
ZSBBdXRoZW50aWNhdGlvblNlcnZpY2UuZnJhbWV3b3JrLgogQHByb3RvY29sIF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSA8TlNPYmplY3Q+CiAKIEBvcHRpb25hbAogCiAtICh2b2lk
KXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgdXBkYXRlV2ViQXV0aGVu
dGljYXRpb25QYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZSl1cGRhdGUgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZv
aWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBkaXNtaXNzV2ViQXV0
aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQ6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KXJl
c3VsdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHJlcXVl
c3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczooTlNVSW50ZWdlcilyZXRyaWVzIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClwYW5l
bDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHNlbGVjdEFzc2VydGlvblJlc3Bv
bnNlOihOU0FycmF5IDwgX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqPiAq
KXJlc3BvbnNlcyBzb3VyY2U6KF9XS1dlYkF1dGhlbnRpY2F0aW9uU291cmNlKXNvdXJjZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZSAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbCAqKXBhbmVsIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcldpdGhDb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5IHBvbGlj
eSkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwgKilwYW5lbCByZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbldpdGhDb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICpjb250ZXh0KSljb21wbGV0aW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
CisvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzcxNTA5ODQ4PiBEZXByZWNhdGUgdGhlIGZvbGxv
d2luZyBkZWxlZ2F0ZXMuCistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
ICopcGFuZWwgZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgcG9saWN5KSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBh
bmVsIGRpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0aGVu
dGljYXRpb25SZXN1bHQpcmVzdWx0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiBAZW5kCiAKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRl
eCAzMmYxMGUyMzg0Mjg3ZGQwYWRmYmYzNmQ1ZjRmYmFjYTg3MmJiYmQxLi5lNGI4NjE4OGJkYjJm
Zjk0MDJkNTkyMTFhYzE5NjJjMDg1NWZkMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bQpAQCAtNDQsNiArNDQsNyBAQAogI2ltcG9ydCAiX1dLUHVibGljS2V5Q3JlZGVudGlhbFVzZXJF
bnRpdHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRvclJlc3BvbnNlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgpAQCAtNDA3LDYgKzQwOCwyMSBAQCArIChCT09M
KWlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZQogI2VuZGlmCiB9
CiAKKy0gKHZvaWQpc2V0TW9ja0NvbmZpZ3VyYXRpb246KE5TRGljdGlvbmFyeSAqKWNvbmZpZ3Vy
YXRpb24KK3sKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsQ29uZmlndXJhdGlvbiBsb2NhbENvbmZpZ3Vy
YXRpb247CisgICAgbG9jYWxDb25maWd1cmF0aW9uLnVzZXJWZXJpZmljYXRpb24gPSBXZWJDb3Jl
OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpVc2VyVmVyaWZpY2F0aW9uOjpZ
ZXM7CisgICAgaWYgKGNvbmZpZ3VyYXRpb25bQCJwcml2YXRlS2V5QmFzZTY0Il0pCisgICAgICAg
IGxvY2FsQ29uZmlndXJhdGlvbi5wcml2YXRlS2V5QmFzZTY0ID0gY29uZmlndXJhdGlvbltAInBy
aXZhdGVLZXlCYXNlNjQiXTsKKworICAgIFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24gbW9ja0NvbmZpZ3VyYXRpb247CisgICAgbW9ja0NvbmZpZ3VyYXRpb24ubG9j
YWwgPSBXVEZNb3ZlKGxvY2FsQ29uZmlndXJhdGlvbik7CisKKyAgICBfcGFuZWwtPnNldE1vY2tD
b25maWd1cmF0aW9uKFdURk1vdmUobW9ja0NvbmZpZ3VyYXRpb24pKTsKKyNlbmRpZgorfQorCiAj
aWYgRU5BQkxFKFdFQl9BVVRITikKICNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBs
ZW1lbnRhdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRm9yVGVzdGluZy5o
CmluZGV4IDE5YjhiN2Y3MjI5NTZkMDVjMGEwMTIxMGE1Y2JkYWI2NGZmNjRlZWIuLjE0ZWJmZTFl
NmNjMzY5YjMxZTZmYjk3N2FiYzQ4MzI2YzJhYTg1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRm9yVGVzdGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsRm9yVGVzdGluZy5oCkBAIC0zNSw4ICszNSwxMCBAQCBzdHJ1Y3QgUHVibGlj
S2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwgKFdLVGVzdGluZykKIAotLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS83MTUwOTcx
ND4gSW50cm9kdWNlcyBtb2NrIHRlc3RpbmcuCiArIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zKWNvbnZlcnRUb0NvcmVDcmVhdGlvbk9wdGlvbnNXaXRoT3B0aW9u
czooX1dLUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyAqKW9wdGlvbnMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKICsgKFdlYkNv
cmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyljb252ZXJ0VG9Db3JlUmVxdWVz
dE9wdGlvbnNXaXRoT3B0aW9uczooX1dLUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
ICopb3B0aW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogCisvLyBGb3IgZGV0YWlscyBvZiBjb25maWd1cmF0aW9uLCByZWZlciB0byBNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmguCitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgTlNEaWN0aW9uYXJ5ICptb2NrQ29uZmlndXJhdGlvbjsKKwogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRv
ck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRvck1hbmFnZXIuY3BwCmluZGV4IGRiN2FiMjEzY2RmNDQ3OWQ3MDFjNWY1MTM5
NWE2YzhjY2JiMTBhYTYuLjVhNjA5NzYwODEzYzgzYzc5ZTNlMDg4OTA5Mzg0MWU3MWNhNTgzZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKQEAgLTE2NSwxMCArMTY1LDkg
QEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNh
dGlvblJlcXVlc3REYXRhJiYgZGF0YSwgQ2EKICAgICAvLyAyLiBBc2sgY2xpZW50cyB0byBzaG93
IGFwcHJvcHJpYXRlIFVJIGlmIGFueSBhbmQgdGhlbiBzdGFydCB0aGUgcmVxdWVzdC4KICAgICBp
bml0VGltZU91dFRpbWVyKCk7CiAKLSAgICAvLyBGSVhNRTxyZGFyOi8vcHJvYmxlbS83MDgyMjgz
ND46IFRoZSBtX3dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCBpcyB1c2VkIHRvIGRldGVy
bWluZQotICAgIC8vIHdoZXRoZXIgb3Igbm90IHdlIGFyZSBpbiB0aGUgVUlQcm9jZXNzLgorICAg
IC8vIEZJWE1FPHJkYXI6Ly9wcm9ibGVtLzcwODIyODM0PjogVGhlIG1fbW9kZSBpcyB1c2VkIHRv
IGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB3ZSBhcmUgaW4gdGhlIFVJUHJvY2Vzcy4KICAgICAv
LyBJZiBzbywgY29udGludWUgdG8gdGhlIG9sZCByb3V0ZS4gT3RoZXJ3aXNlLCB1c2UgdGhlIG1v
ZGVybiBXZWJBdXRobiBwcm9jZXNzIHdheS4KLSAgICBpZiAoIW1fd2ViQXV0aGVudGljYXRpb25N
b2Rlcm5FbmFibGVkKSB7CisgICAgaWYgKG1fbW9kZSA9PSBNb2RlOjpDb21wYXRpYmxlKSB7CiAg
ICAgICAgIHJ1blBhbmVsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMDksNyArMjA4
LDEyIEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmNhbmNlbCgpCiAKIHZvaWQgQXV0aGVu
dGljYXRvck1hbmFnZXI6OmVuYWJsZU1vZGVybldlYkF1dGhlbnRpY2F0aW9uKCkKIHsKLSAgICBt
X3dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCA9IHRydWU7CisgICAgbV9tb2RlID0gTW9k
ZTo6TW9kZXJuOworfQorCit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjplbmFibGVOYXRpdmVT
dXBwb3J0KCkKK3sKKyAgICBtX21vZGUgPSBNb2RlOjpOYXRpdmU7CiB9CiAKIHZvaWQgQXV0aGVu
dGljYXRvck1hbmFnZXI6OmNsZWFyU3RhdGVBc3luYygpCkBAIC0yMzYsNyArMjQwLDcgQEAgdm9p
ZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6YXV0aGVudGljYXRvckFkZGVkKFJlZjxBdXRoZW50aWNh
dG9yPiYmIGF1dGhlbnRpY2F0b3IKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAg
IGF1dGhlbnRpY2F0b3ItPnNldE9ic2VydmVyKCp0aGlzKTsKICAgICBhdXRoZW50aWNhdG9yLT5o
YW5kbGVSZXF1ZXN0KG1fcGVuZGluZ1JlcXVlc3REYXRhKTsKLSAgICBhdXRoZW50aWNhdG9yLT5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQobV93ZWJBdXRoZW50aWNhdGlvbk1vZGVy
bkVuYWJsZWQpOworICAgIGF1dGhlbnRpY2F0b3ItPnNldFdlYkF1dGhlbnRpY2F0aW9uTW9kZXJu
RW5hYmxlZChtX21vZGUgIT0gTW9kZTo6Q29tcGF0aWJsZSk7CiAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2F1dGhlbnRpY2F0b3JzLmFkZChXVEZNb3ZlKGF1dGhlbnRpY2F0b3IpKTsKICAgICBBU1NF
UlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQpAQCAtMzU0LDEy
ICszNTgsMTQgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6ZGVjaWRlUG9saWN5Rm9yTG9j
YWxBdXRoZW50aWNhdG9yKENvbXBsZXRpb25IYW5kbGVyPHYKIAogdm9pZCBBdXRoZW50aWNhdG9y
TWFuYWdlcjo6cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24oQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYg
KCFtX3ByZXNlbnRlcikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAg
ICBpZiAobV9wcmVzZW50ZXIpIHsKKyAgICAgICAgbV9wcmVzZW50ZXItPnJlcXVlc3RMQUNvbnRl
eHRGb3JVc2VyVmVyaWZpY2F0aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJlc2VudGVyLT5yZXF1ZXN0TEFDb250ZXh0Rm9y
VXNlclZlcmlmaWNhdGlvbihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZGlzcGF0
Y2hQYW5lbENsaWVudENhbGwoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsKSBtdXRh
YmxlIHsKKyAgICAgICAgcGFuZWwuY2xpZW50KCkucmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJp
ZmljYXRpb24oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOwogfQogCiB2b2lk
IEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KCkKQEAgLTQ0NCwxMCArNDUwLDE0
IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnJ1blBhbmVsKCkKIHZvaWQgQXV0aGVudGlj
YXRvck1hbmFnZXI6OnJ1blByZXNlbnRlcigpCiB7CiAgICAgLy8gR2V0IGF2YWlsYWJsZSB0cmFu
c3BvcnRzIGFuZCBzdGFydCBkaXNjb3ZlcmluZyBhdXRoZW50aWNhdG9ycyBvbiB0aGVtLgotICAg
IGF1dG8mIG9wdGlvbnMgPSBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5vcHRpb25zOwogICAgIGF1dG8g
dHJhbnNwb3J0cyA9IGdldFRyYW5zcG9ydHMoKTsKICAgICBzdGFydERpc2NvdmVyeSh0cmFuc3Bv
cnRzKTsKIAorICAgIC8vIEZvciBuYXRpdmUgQVBJIHN1cHBvcnQsIHdlIHNraXAgdGhlIFVJIHBh
cnQuIFRoZSBuYXRpdmUgQVBJIHdpbGwgaGFuZGxlIHRoYXQuCisgICAgaWYgKG1fbW9kZSA9PSBN
b2RlOjpOYXRpdmUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIG9wdGlvbnMgPSBtX3Bl
bmRpbmdSZXF1ZXN0RGF0YS5vcHRpb25zOwogICAgIG1fcHJlc2VudGVyID0gbWFrZVVuaXF1ZTxB
dXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I+KCp0aGlzLCBnZXRScElkKG9wdGlvbnMp
LCB0cmFuc3BvcnRzLCBnZXRDbGllbnREYXRhVHlwZShvcHRpb25zKSk7CiB9CiAKQEAgLTQ4OCwx
NSArNDk4LDE5IEBAIGF1dG8gQXV0aGVudGljYXRvck1hbmFnZXI6OmdldFRyYW5zcG9ydHMoKSBj
b25zdCAtPiBUcmFuc3BvcnRTZXQKIAogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6ZGlzcGF0
Y2hQYW5lbENsaWVudENhbGwoRnVuY3Rpb248dm9pZChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0
aW9uUGFuZWwmKT4mJiBjYWxsKSBjb25zdAogewotICAgIGlmIChhdXRvKiBwYW5lbCA9IG1fcGVu
ZGluZ1JlcXVlc3REYXRhLnBhbmVsLmdldCgpKSB7Ci0gICAgICAgIC8vIENhbGwgZGVsZWdhdGVz
IGluIHRoZSBuZXh0IHJ1biBsb29wIHRvIHByZXZlbnQgY2xpZW50cycgcmVlbnRyYW5jZSB0aGF0
IHdvdWxkIHBvdGVudGlhbGx5IG1vZGlmeSB0aGUgc3RhdGUKLSAgICAgICAgLy8gb2YgdGhlIGN1
cnJlbnQgcnVuIGxvb3AgaW4gdW5leHBlY3RlZCB3YXlzLgotICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3dlYWtQYW5lbCA9IG1ha2VXZWFrUHRyKCpwYW5lbCksIGNhbGwgPSBXVEZN
b3ZlKGNhbGwpXSAoKSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtQYW5lbCkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBjYWxsKCp3ZWFrUGFuZWwpOwotICAgICAgICB9KTsK
LSAgICB9CisgICAgYXV0byB3ZWFrUGFuZWwgPSBtX3BlbmRpbmdSZXF1ZXN0RGF0YS53ZWFrUGFu
ZWw7CisgICAgaWYgKCF3ZWFrUGFuZWwpCisgICAgICAgIHdlYWtQYW5lbCA9IG1ha2VXZWFrUHRy
KCptX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5lbC5nZXQoKSk7CisgICAgaWYgKCF3ZWFrUGFuZWwp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIENhbGwgZGVsZWdhdGVzIGluIHRoZSBuZXh0IHJ1
biBsb29wIHRvIHByZXZlbnQgY2xpZW50cycgcmVlbnRyYW5jZSB0aGF0IHdvdWxkIHBvdGVudGlh
bGx5IG1vZGlmeSB0aGUgc3RhdGUKKyAgICAvLyBvZiB0aGUgY3VycmVudCBydW4gbG9vcCBpbiB1
bmV4cGVjdGVkIHdheXMuCisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrUGFuZWws
IGNhbGwgPSBXVEZNb3ZlKGNhbGwpXSAoKSB7CisgICAgICAgIGlmICghd2Vha1BhbmVsKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBjYWxsKCp3ZWFrUGFuZWwpOworICAgIH0pOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmlu
ZGV4IDFlZTRhYjQ5NTMxYmVlOTc0MTQ1YzU0ODc4NTQyMDQxNjdlZTM2MWUuLjQxODI5NWJlM2Q2
YzNiMjlkMjQzMjc1MWE0MTJlMzU2ZjgxMjU1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1h
bmFnZXIuaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzTW9j
aygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIGVuYWJsZU1vZGVybldlYkF1
dGhlbnRpY2F0aW9uKCk7CisgICAgdm9pZCBlbmFibGVOYXRpdmVTdXBwb3J0KCk7CiAKIHByb3Rl
Y3RlZDoKICAgICBSdW5Mb29wOjpUaW1lcjxBdXRoZW50aWNhdG9yTWFuYWdlcj4mIHJlcXVlc3RU
aW1lT3V0VGltZXIoKSB7IHJldHVybiBtX3JlcXVlc3RUaW1lT3V0VGltZXI7IH0KQEAgLTc5LDYg
KzgwLDEyIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGludm9rZVBlbmRpbmdDb21wbGV0aW9uSGFu
ZGxlcihSZXNwb25kJiYpOwogCiBwcml2YXRlOgorICAgIGVudW0gY2xhc3MgTW9kZSB7CisgICAg
ICAgIENvbXBhdGlibGUsCisgICAgICAgIE1vZGVybiwKKyAgICAgICAgTmF0aXZlLAorICAgIH07
CisKICAgICAvLyBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXIKICAgICB2
b2lkIGF1dGhlbnRpY2F0b3JBZGRlZChSZWY8QXV0aGVudGljYXRvcj4mJikgZmluYWw7CiAgICAg
dm9pZCBzZXJ2aWNlU3RhdHVzVXBkYXRlZChXZWJBdXRoZW50aWNhdGlvblN0YXR1cykgZmluYWw7
CkBAIC0xMTcsNyArMTI0LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8VW5pcXVlUmVmPEF1dGhl
bnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPj4gbV9zZXJ2aWNlczsKICAgICBIYXNoU2V0PFJlZjxB
dXRoZW50aWNhdG9yPj4gbV9hdXRoZW50aWNhdG9yczsKIAotICAgIGJvb2wgbV93ZWJBdXRoZW50
aWNhdGlvbk1vZGVybkVuYWJsZWQgeyBmYWxzZSB9OworICAgIE1vZGUgbV9tb2RlIHsgTW9kZTo6
Q29tcGF0aWJsZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50
aWNhdGlvblBhbmVsQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKaW5kZXggOTc2Y2E2
OWQwYWY4MWM0NWJmYWY4NjI3NTM3Mzk0OWRiN2Q2YmM0ZS4uMWJlNmE1NjJkYzU4Y2I2OTFmNmFh
Mzk2ZTAyYWVjM2U0OWMxNGRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaApAQCAtNTIsNiArNTIsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBX
VEY6OlN0cmluZyYpPiYmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNlbGVjdEFzc2VydGlvblJl
c3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
Pj4mJiwgV2ViQXV0aGVudGljYXRpb25Tb3VyY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKik+JiYpIGNvbnN0IGZpbmFsOwog
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5KT4mJikgY29uc3QgZmluYWw7CisgICAg
dm9pZCByZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKExBQ29udGV4dCAqKT4mJikgY29uc3QgZmluYWw7CiAKICAgICBfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsICptX3BhbmVsOwogICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKQEAgLTYyLDYgKzYzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgYm9vbCBwYW5lbFJlcXVlc3RQaW5XaXRoUmVtYWluaW5nUmV0cmllc0Nv
bXBsZXRpb25IYW5kbGVyIDogMTsKICAgICAgICAgYm9vbCBwYW5lbFNlbGVjdEFzc2VydGlvblJl
c3BvbnNlU291cmNlQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAgICAgICBib29sIHBhbmVsRGVj
aWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yQ29tcGxldGlvbkhhbmRsZXIgOiAxOworICAg
ICAgICBib29sIHBhbmVsUmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb25Db21wbGV0
aW9uSGFuZGxlciA6IDE7CiAgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCmluZGV4
IDgzNzY5NzJjMzU3Njc2OWIxMTA1YjI4NTBiNGM2YzJjMWVhNGEyNjYuLmEwODk0YTIwZjkxZmZj
Mzc3YzQ0NTM2MGU2ZjEzODk4MjBhOWIzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQpAQCAtNTAsNiArNTAsNyBAQCBXZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50KF9X
S1dlYkF1dGhlbnRpY2F0aW9uUAogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsUmVxdWVzdFBp
bldpdGhSZW1haW5pbmdSZXRyaWVzQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpyZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJp
ZXM6Y29tcGxldGlvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxTZWxl
Y3RBc3NlcnRpb25SZXNwb25zZVNvdXJjZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6
c291cmNlOmNvbXBsZXRpb25IYW5kbGVyOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVs
RGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpkZWNpZGVQb2xpY3lGb3JM
b2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMucGFuZWxSZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbkNvbXBsZXRp
b25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6
cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6
KV07CiB9CiAKIFJldGFpblB0cjxpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRl
PiA+IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OmRlbGVnYXRlKCkKQEAgLTIxNyw2ICsy
MTgsMjggQEAgdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JMb2NhbEF1dGhlbnRpY2F0b3IoQ29tcGxldGlvbkgKICAgICB9KS5nZXQoKV07CiB9CiAKK3Zv
aWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6cmVxdWVzdExBQ29udGV4dEZvclVzZXJW
ZXJpZmljYXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFJl
cXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uQ29tcGxldGlvbkhhbmRsZXIpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVn
YXRlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IocGFuZWw6cmVxdWVzdExBQ29u
dGV4dEZvclVzZXJWZXJpZmljYXRpb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6KSk7CisgICAgW2Rl
bGVnYXRlIHBhbmVsOm1fcGFuZWwgcmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb25X
aXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oTEFD
b250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRp
b25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBj
aGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoY29udGV4dCk7CisgICAgfSkuZ2V0KCldOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xv
Y2FsQ29ubmVjdGlvbi5oCmluZGV4IGZmOTBkM2RlNDM0OWM5YTMzODVjMjBjMDU5NzI5YjhlMjJl
YmUyZTUuLjk0ZTRhNGQ3ZTRmOGUxNmYyMGVjYjk0YTdlYjA0OGZlNjI5MzU4YmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xv
Y2FsQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oCkBAIC0zOCw2ICszOCw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHZlcmlmeVVzZXIoY29uc3QgU3RyaW5nJiwgV2ViQ29y
ZTo6Q2xpZW50RGF0YVR5cGUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJWZXJpZmljYXRpb25D
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHZlcmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJl
ZiwgTEFDb250ZXh0ICosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlclZlcmlmaWNhdGlvbik+
JiYpIGZpbmFsOwogICAgIFJldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZUNyZWRlbnRpYWxQcml2
YXRlS2V5KExBQ29udGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNl
Y0F0dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0IGZpbmFsOwog
ICAgIHZvaWQgZ2V0QXR0ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKmF1dGhEYXRhLCBOU0Rh
dGEgKmhhc2gsIEF0dGVzdGF0aW9uQ2FsbGJhY2smJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBm
aWx0ZXJSZXNwb25zZXMoVmVjdG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U+PiYpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25u
ZWN0aW9uLm1tCmluZGV4IDJmYmFhMzQxNTBmNWUwZjNlMmFjNjJlYWFmNjY2N2UzNzZkZmYxYmEu
LjYyMmU4Y2E5NThjNWRkOTdkNTkxNzllYzZhODMxN2M4NGNhNjYyNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29u
bmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KQEAgLTY3LDYgKzY3LDI3IEBAIHZvaWQgTW9j
a0xvY2FsQ29ubmVjdGlvbjo6dmVyaWZ5VXNlcihjb25zdCBTdHJpbmcmLCBDbGllbnREYXRhVHlw
ZSwgU2VjQWNjZXNzQ29uCiAgICAgfSk7CiB9CiAKK3ZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6
dmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmLCBMQUNvbnRleHQgKiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChVc2VyVmVyaWZpY2F0aW9uKT4mJiBjYWxsYmFjaykKK3sKKyAgICAvLyBNb2Nr
IGFzeW5jIG9wZXJhdGlvbnMuCisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25maWd1
cmF0aW9uID0gbV9jb25maWd1cmF0aW9uLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgeworICAgICAgICBBU1NFUlQoY29uZmlndXJhdGlvbi5sb2NhbCk7CisKKyAgICAg
ICAgVXNlclZlcmlmaWNhdGlvbiB1c2VyVmVyaWZpY2F0aW9uID0gVXNlclZlcmlmaWNhdGlvbjo6
Tm87CisgICAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbi5sb2NhbC0+dXNlclZlcmlmaWNhdGlv
bikgeworICAgICAgICBjYXNlIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OlVz
ZXJWZXJpZmljYXRpb246Ok5vOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6VXNlclZlcmlmaWNhdGlvbjo6WWVzOgor
ICAgICAgICAgICAgdXNlclZlcmlmaWNhdGlvbiA9IFVzZXJWZXJpZmljYXRpb246OlllczsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246OlVzZXJWZXJpZmljYXRpb246OkNhbmNlbDoKKyAgICAgICAgICAgIHVzZXJWZXJp
ZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uOjpDYW5jZWw7CisgICAgICAgIH0KKworICAgICAg
ICBjYWxsYmFjayh1c2VyVmVyaWZpY2F0aW9uKTsKKyAgICB9KTsKK30KKwogUmV0YWluUHRyPFNl
Y0tleVJlZj4gTW9ja0xvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXko
TEFDb250ZXh0ICosIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxh
YmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QKIHsKICAgICBBU1NFUlQo
bV9jb25maWd1cmF0aW9uLmxvY2FsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9u
UmVxdWVzdERhdGEuaAppbmRleCBkMzg2MzdlNjY4NzI3NDAzMjc4NTZlODkyOTI3ODIyMjRjZDEy
Y2I2Li4xNjc1YmYwYmZjYzBjYjYyNjU1NmQ2N2IyMDg2MDhiMTA0ZTVkYmVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dGlvblJlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCkBAIC01NSw2ICs1NSw3IEBA
IHN0cnVjdCBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhIHsKIAogICAgIGJvb2wgcHJvY2Vz
c2luZ1VzZXJHZXN0dXJlOwogICAgIFN0cmluZyBjYWNoZWRQaW47IC8vIE9ubHkgdXNlZCB0byBp
bXByb3ZlIE5GQyBDbGllbnQgUElOIGV4cGVyaWVuY2UuCisgICAgV2Vha1B0cjxBUEk6OldlYkF1
dGhlbnRpY2F0aW9uUGFuZWw+IHdlYWtQYW5lbDsKIH07CiAKIFdlYkNvcmU6OkNsaWVudERhdGFU
eXBlIGdldENsaWVudERhdGFUeXBlKGNvbnN0IFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucywgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zPiYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGQwYzYyZGZmNTU2MjQ3ZGQ0YTk4YWJiZmNjOWZhNzUxNWM0YmM0OGUuLmY3YWQz
MzQ0ODRiNWJhYjdjMWMzNjkxYzBiNjA5ZTcwM2RmZTEyZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wMS0y
OSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRo
bl0gT3B0aW1pemUgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIGZvciBuYXRpdmUg
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEx
MjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxNTA5MTQxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAgICAoLVtUZXN0V2Vi
QXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOnNlbGVjdEFzc2VydGlvblJlc3BvbnNl
OnNvdXJjZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxEZWxlZ2F0ZSBwYW5lbDpyZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNh
dGlvbldpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Oldl
YkNvcmU6OnJlc2V0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTAx
LTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMjY2MTQ4KSBDYW5jZWxsaW5nIGEgbmF2aWdhdGlvbiBpbiBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIHNob3VsZCBub3Qgc3VzcGVuZCB0aGUgcHJldmlvdXMg
ZG9jdW1lbnQncyBmb250IGxvYWRpbmcgdGltZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbQppbmRleCAwNWRiNGZmMWU0NWE3ODBlZGY2NjEyMjJiYjY4NTc3ZDY3NGY3N2UyLi4z
M2FjOTU5YzE4ZTM1ZjRhNDI5Y2QxNDg2Njg3M2UzMjE3YTY0Y2E1IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC03OCw2ICs3OCw3IEBAIHN0YXRpYyBTdHJpbmcgdGVz
dEVTMjU2UHJpdmF0ZUtleUJhc2U2NCA9CiAgICAgIlJRPT0iOwogc3RhdGljIFN0cmluZyB0ZXN0
VXNlckVudGl0eUJ1bmRsZUJhc2U2NCA9ICJvbUpwWkVvQUFRSURCQVVHQndnSlpHNWhiV1ZrU205
b2JnPT0iOyAvLyB7ICJpZCI6IGgnMDAwMTAyMDMwNDA1MDYwNzA4MDknLCAibmFtZSI6ICJKb2hu
IiB9CiBzdGF0aWMgU3RyaW5nIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxTZWxlY3RlZENyZWRlbnRp
YWxOYW1lOworc3RhdGljIGJvb2wgbGFDb250ZXh0UmVxdWVzdGVkID0gZmFsc2U7CiAKIEBpbnRl
cmZhY2UgVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+CiBAZW5kCkBAIC0xNTAsNiArMTUxLDkgQEAg
LSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHJlcXVlc3RQ
SU5XaXRoUmVtYWluaW5nUmV0cmllczoKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgc291cmNlOihf
V0tXZWJBdXRoZW50aWNhdGlvblNvdXJjZSlzb3VyY2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKICAgICBpZiAocmVzcG9uc2VzLmNvdW50ID09IDEpIHsKKyAgICAgICAgYXV0byBs
YUNvbnRleHQgPSBhZG9wdE5TKFtbTEFDb250ZXh0IGFsbG9jXSBpbml0XSk7CisgICAgICAgIFty
ZXNwb25zZXNbMF0gc2V0TEFDb250ZXh0OmxhQ29udGV4dC5nZXQoKV07CisKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmVzcG9uc2VzWzBdKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTE1Nyw4ICsxNjEsMTMgQEAgLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bCAqKXBhbmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlOihOU0FycmEKICAgICAvLyBSZXNwb25z
ZXMgcmV0dXJuZWQgZnJvbSBMb2NhbEF1dGhlbnRpY2F0b3IgaXMgaW4gdGhlIG9yZGVyIG9mIExS
VS4gVGhlcmVmb3JlLCB3ZSB1c2UgdGhlIGxhc3QgaXRlbSB0byBwb3B1bGF0ZSBpdCB0bwogICAg
IC8vIHRoZSBmaXJzdCB0byB0ZXN0IGl0cyBjb3JyZWN0bmVzcy4KICAgICBpZiAoc291cmNlID09
IF9XS1dlYkF1dGhlbnRpY2F0aW9uU291cmNlTG9jYWwpIHsKLSAgICAgICAgd2ViQXV0aGVudGlj
YXRpb25QYW5lbFNlbGVjdGVkQ3JlZGVudGlhbE5hbWUgPSByZXNwb25zZXMubGFzdE9iamVjdC5u
YW1lOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXMubGFzdE9iamVjdCk7Cisg
ICAgICAgIGF1dG8gKm9iamVjdCA9IHJlc3BvbnNlcy5sYXN0T2JqZWN0OworCisgICAgICAgIGF1
dG8gbGFDb250ZXh0ID0gYWRvcHROUyhbW0xBQ29udGV4dCBhbGxvY10gaW5pdF0pOworICAgICAg
ICBbb2JqZWN0IHNldExBQ29udGV4dDpsYUNvbnRleHQuZ2V0KCldOworCisgICAgICAgIHdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxTZWxlY3RlZENyZWRlbnRpYWxOYW1lID0gb2JqZWN0Lm5hbWU7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG9iamVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTE4MCw2ICsxODksMTIgQEAgLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbCAqKXBhbmVsIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXQKICAgICBjb21w
bGV0aW9uSGFuZGxlcihsb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpOwogfQogCistICh2b2lkKXBh
bmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgcmVxdWVzdExBQ29udGV4dEZv
clVzZXJWZXJpZmljYXRpb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKExBQ29udGV4
dCAqY29udGV4dCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBsYUNvbnRleHRSZXF1ZXN0ZWQg
PSB0cnVlOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7Cit9CisKIEBlbmQKIAogQGludGVy
ZmFjZSBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbEZha2VEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+CkBAIC0zMjMsNiArMzM4LDcgQEAgc3Rh
dGljIHZvaWQgcmVzZXQoKQogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxOdWxsVXNlckhhbmRs
ZSA9IE5POwogICAgIGxvY2FsQXV0aGVudGljYXRvclBvbGljeSA9IF9XS0xvY2FsQXV0aGVudGlj
YXRvclBvbGljeURpc2FsbG93OwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxTZWxlY3RlZENy
ZWRlbnRpYWxOYW1lID0gZW1wdHlTdHJpbmcoKTsKKyAgICBsYUNvbnRleHRSZXF1ZXN0ZWQgPSBm
YWxzZTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tQYW5lbChfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsICpwYW5lbCwgTlNTdHJpbmcgKnJlbHlpbmdQYXJ0eUlELCBOU0FycmF5ICp0cmFuc3BvcnRz
LCBfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUgdHlwZSkKQEAgLTE3NjAsNyArMTc3Niw3IEBAIFRF
U1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTWFrZUNyZWRlbnRpYWxTUElUaW1lb3V0KQogICAg
IGF1dG8gdXNlciA9IGFkb3B0TlMoW1tfV0tQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eSBh
bGxvY10gaW5pdFdpdGhOYW1lOkAiamFwcGxlc2VlZEBleGFtcGxlLmNvbSIgaWRlbnRpZmllcjpu
c0lkZW50aWZpZXIgZGlzcGxheU5hbWU6QCJKIEFwcGxlc2VlZCJdKTsKICAgICBOU0FycmF5PF9X
S1B1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzICo+ICpwdWJsaWNLZXlDcmVkZW50aWFsUGFy
YW1hdGVycyA9IEBbIHBhcmFtZXRlcnMuZ2V0KCkgXTsKICAgICBhdXRvIG9wdGlvbnMgPSBhZG9w
dE5TKFtbX1dLUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBhbGxvY10gaW5pdFdp
dGhSZWx5aW5nUGFydHk6cnAuZ2V0KCkgdXNlcjp1c2VyLmdldCgpIHB1YmxpY0tleUNyZWRlbnRp
YWxQYXJhbWF0ZXJzOnB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWF0ZXJzXSk7Ci0gICAgW29wdGlv
bnMgc2V0VGltZW91dDpAMTIwXTsKKyAgICBbb3B0aW9ucyBzZXRUaW1lb3V0OkAxMF07CiAKICAg
ICBhdXRvIHBhbmVsID0gYWRvcHROUyhbW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgYWxsb2Nd
IGluaXRdKTsKICAgICBbcGFuZWwgbWFrZUNyZWRlbnRpYWxXaXRoSGFzaDpuc0hhc2ggb3B0aW9u
czpvcHRpb25zLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLQXV0aGVudGljYXRvckF0dGVz
dGF0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBOU0Vycm9yICplcnJvcikgewpAQCAtMTc3Myw2ICsx
Nzg5LDQyIEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTWFrZUNyZWRlbnRpYWxTUElU
aW1lb3V0KQogICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7CiB9CiAK
K1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTWFrZUNyZWRlbnRpYWxMQSkKK3sKKyAgICBy
ZXNldCgpOworCisgICAgdWludDhfdCBpZGVudGlmaWVyW10gPSB7IDB4MDEsIDB4MDIsIDB4MDMs
IDB4MDQgfTsKKyAgICB1aW50OF90IGhhc2hbXSA9IHsgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwg
MHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgw
MiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywg
MHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCB9Owor
ICAgIE5TRGF0YSAqbnNJZGVudGlmaWVyID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmlkZW50aWZp
ZXIgbGVuZ3RoOnNpemVvZihpZGVudGlmaWVyKV07CisgICAgTlNEYXRhICpuc0hhc2ggPSBbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6aGFzaCBsZW5ndGg6c2l6ZW9mKGhhc2gpXTsKKyAgICBhdXRvIHBh
cmFtZXRlcnMgPSBhZG9wdE5TKFtbX1dLUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnMgYWxs
b2NdIGluaXRXaXRoQWxnb3JpdGhtOkAtN10pOworCisgICAgYXV0byBycCA9IGFkb3B0TlMoW1tf
V0tQdWJsaWNLZXlDcmVkZW50aWFsUmVseWluZ1BhcnR5RW50aXR5IGFsbG9jXSBpbml0V2l0aE5h
bWU6QCJleGFtcGxlLmNvbSJdKTsKKyAgICBbcnAgc2V0SWRlbnRpZmllcjpAImV4YW1wbGUuY29t
Il07CisgICAgYXV0byB1c2VyID0gYWRvcHROUyhbW19XS1B1YmxpY0tleUNyZWRlbnRpYWxVc2Vy
RW50aXR5IGFsbG9jXSBpbml0V2l0aE5hbWU6QCJqYXBwbGVzZWVkQGV4YW1wbGUuY29tIiBpZGVu
dGlmaWVyOm5zSWRlbnRpZmllciBkaXNwbGF5TmFtZTpAIkogQXBwbGVzZWVkIl0pOworICAgIE5T
QXJyYXk8X1dLUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnMgKj4gKnB1YmxpY0tleUNyZWRl
bnRpYWxQYXJhbWF0ZXJzID0gQFsgcGFyYW1ldGVycy5nZXQoKSBdOworICAgIGF1dG8gb3B0aW9u
cyA9IGFkb3B0TlMoW1tfV0tQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIGFsbG9j
XSBpbml0V2l0aFJlbHlpbmdQYXJ0eTpycC5nZXQoKSB1c2VyOnVzZXIuZ2V0KCkgcHVibGljS2V5
Q3JlZGVudGlhbFBhcmFtYXRlcnM6cHVibGljS2V5Q3JlZGVudGlhbFBhcmFtYXRlcnNdKTsKKwor
ICAgIGF1dG8gcGFuZWwgPSBhZG9wdE5TKFtbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBhbGxv
Y10gaW5pdF0pOworICAgIFtwYW5lbCBzZXRNb2NrQ29uZmlndXJhdGlvbjpAeyBAInByaXZhdGVL
ZXlCYXNlNjQiOiB0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0IH1dOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIFtwYW5lbCBzZXREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBb
cGFuZWwgbWFrZUNyZWRlbnRpYWxXaXRoSGFzaDpuc0hhc2ggb3B0aW9uczpvcHRpb25zLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Ug
KnJlc3BvbnNlLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICB3ZWJBdXRoZW50aWNhdGlvblBh
bmVsUmFuID0gdHJ1ZTsKKyAgICAgICAgY2xlYW5VcEtleWNoYWluKCJleGFtcGxlLmNvbSIpOwor
CisgICAgICAgIEVYUEVDVF9UUlVFKGxhQ29udGV4dFJlcXVlc3RlZCk7CisgICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKKworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzcG9uc2UpOworICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoW3Jlc3BvbnNlLnJhd0lkIGJhc2U2NEVuY29kZWRTdHJpbmdX
aXRoT3B0aW9uczowXSwgIlNNU1hIbmdGN2hFT3NFbEE3M0MzUlkrOGJSND0iKTsKKyAgICAgICAg
RVhQRUNUX05VTEwocmVzcG9uc2UuZXh0ZW5zaW9ucyk7CisgICAgICAgIEVYUEVDVF9XS19TVFJF
UShbcmVzcG9uc2UuYXR0ZXN0YXRpb25PYmplY3QgYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRp
b25zOjBdLCAibzJObWJYUmtibTl1WldkaGRIUlRkRzEwb0doaGRYUm9SR0YwWVZpWW8zbW05dTZ2
dWFWZU40d1JnRFRpZFI1b0w2dWZMVENyRTlJU1ZZYk9HVWRGQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUZFakVseDU0QmU0UkRyQkpRTzl3dDBXUHZHMGVwUUVDQXlZZ0FTRllJRGovenhTa3pL
Z2FCdVMzY2RXREY1NThvZjhBYUlwZ0Zwc2pGL1FtMTc0OUlsZ2dWQkpQZ3FVSXdmaFdISjkxbmI3
VVBINzZjMCtXRk96WktzbFB5eUZzZTRnPSIpOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmd2Vi
QXV0aGVudGljYXRpb25QYW5lbFJhbik7Cit9CisKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5l
bCwgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zTWluaW11bikKIHsKICAgICBhdXRv
IG9wdGlvbnMgPSBhZG9wdE5TKFtbX1dLUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
IGFsbG9jXSBpbml0XSk7CkBAIC0xODcwLDYgKzE5MjIsMzkgQEAgVEVTVChXZWJBdXRoZW50aWNh
dGlvblBhbmVsLCBHZXRBc3NlcnRpb25TUElUaW1lb3V0KQogICAgIFV0aWw6OnJ1bigmd2ViQXV0
aGVudGljYXRpb25QYW5lbFJhbik7CiB9CiAKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwg
R2V0QXNzZXJ0aW9uTEEpCit7CisgICAgcmVzZXQoKTsKKworICAgIEFTU0VSVF9UUlVFKGFkZEtl
eVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwgIiIsIHRlc3RVc2VyRW50aXR5
QnVuZGxlQmFzZTY0KSk7CisKKyAgICB1aW50OF90IGhhc2hbXSA9IHsgMHgwMSwgMHgwMiwgMHgw
MywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwg
MHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgw
MiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywg
MHgwNCB9OworICAgIE5TRGF0YSAqbnNIYXNoID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmhhc2gg
bGVuZ3RoOnNpemVvZihoYXNoKV07CisKKyAgICBhdXRvIG9wdGlvbnMgPSBhZG9wdE5TKFtbX1dL
UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIGFsbG9jXSBpbml0XSk7CisgICAgW29w
dGlvbnMgc2V0UmVseWluZ1BhcnR5SWRlbnRpZmllcjpAIiJdOworCisgICAgYXV0byBwYW5lbCA9
IGFkb3B0TlMoW1tfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGFsbG9jXSBpbml0XSk7CisgICAg
W3BhbmVsIHNldE1vY2tDb25maWd1cmF0aW9uOkB7IH1dOworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OworICAgIFtwYW5lbCBzZXREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbcGFuZWwg
Z2V0QXNzZXJ0aW9uV2l0aEhhc2g6bnNIYXNoIG9wdGlvbnM6b3B0aW9ucy5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpeKF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSAqcmVzcG9uc2Us
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4gPSB0
cnVlOworICAgICAgICBjbGVhblVwS2V5Y2hhaW4oIiIpOworCisgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzcG9uc2UpOworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoW3Jlc3BvbnNlLnJhd0lkIGJhc2U2NEVuY29kZWRTdHJpbmdXaXRoT3B0
aW9uczowXSwgIlNNU1hIbmdGN2hFT3NFbEE3M0MzUlkrOGJSND0iKTsKKyAgICAgICAgRVhQRUNU
X05VTEwocmVzcG9uc2UuZXh0ZW5zaW9ucyk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbcmVz
cG9uc2UuYXV0aGVudGljYXRvckRhdGEgYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBd
LCAiNDdERVFwajhIQlNhKy9USW1XKzVKQ2V1UWVSa201Tk1wSldaRzNoU3VGVUZBQUFBQUE9PSIp
OworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzcG9uc2Uuc2lnbmF0dXJlKTsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKFtyZXNwb25zZS51c2VySGFuZGxlIGJhc2U2NEVuY29kZWRTdHJpbmdX
aXRoT3B0aW9uczowXSwgIkFBRUNBd1FGQmdjSUNRPT0iKTsKKyAgICB9XTsKKyAgICBVdGlsOjpy
dW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4pOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418789</attachid>
            <date>2021-01-29 17:05:08 -0800</date>
            <delta_ts>2021-01-29 22:19:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221125-20210129170507.patch</filename>
            <type>text/plain</type>
            <size>38444</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE1MWY0MmY2ZDE4YWM2NWY2
ZGM1MmVlY2VkZGVlMGZiMDM1ZTU1YTYuLmJiZmQ4ZGE3OGY3MzBjNTNiYjYwZDFhZmI3NDk2Y2Q4
OGQzZDkyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMjEtMDEtMjkgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIE9wdGltaXpl
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBmb3IgbmF0aXZlIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMTI1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83MTUwOTE0MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1haW5seSBkb2VzIHRoZSBmb2xsb3dpbmcg
ZmV3IHRoaW5nczoKKyAgICAgICAgMS4gSXQgY29ubmVjdHMgdGhlIG5ldyBTUEkgd2l0aCB0aGUg
ZXhpc3RpbmcgbW9jayB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIHN1Y2ggdGhhdCB3ZSBjYW4gbW9j
ayB0ZXN0IGl0LgorICAgICAgICAyLiBJdCBhZGRzIGEgbmV3IG1vZGUgaW4gQXV0aGVudGljYXRv
ck1hbmFnZXIgdG8gY29ubmVjdCBpdCB0byB0aGUgbmV3IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxEZWxlZ2F0ZSBvYmplY3QuCisgICAgICAgIDMuIEl0IGFkc3MgYSBuZXcgU1BJIHRvIF9XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZTogLVtwYW5lbDpyZXF1ZXN0TEFDb250ZXh0Rm9y
VXNlclZlcmlmaWNhdGlvbldpdGhDb21wbGV0aW9uSGFuZGxlcjpdLAorICAgICAgICBhbmQgYWRk
cyBhIG5ldyBtZXRob2Qgd2l0aGluIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UgdG8gYWNjZXB0IGFuIExBQ29udGV4dCBmcm9tIHRoZSBjYWxsZXIgdG8gdW5sb2NrCisgICAg
ICAgIHRoZSBrZXljaGFpbi4KKyAgICAgICAgNC4gSXQgZW5hYmxlcyAtW19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwgY2FuY2VsXSB0byB1c2UgdGhlIG5ldyBjYW5jZWwgbWV0aG9kLgorCisgICAg
ICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmg6CisgICAgICAgIEFjY2VwdHMgYSBM
QUNvbnRleHQgb2JqZWN0LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50
aWNhdGlvblBhbmVsLmNwcDoKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbCk6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWw6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNhdGlvblBh
bmVsOjpjYW5jZWwgY29uc3QpOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVs
OjpzZXRNb2NrQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJB
dXRoZW50aWNhdGlvblBhbmVsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQ6OnJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uIGNvbnN0KToK
KyAgICAgICAgQWRkcyBuZXcgU1BJIGFuZCBtb2NraW5nLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLm1tOgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlIHNldExBQ29udGV4dDpdKToKKyAgICAgICAgQWNjZXB0cyBhIExBQ29udGV4dCBvYmplY3Qu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW06CisgICAgICAgICgtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgc2V0TW9ja0Nv
bmZpZ3VyYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsRm9yVGVzdGluZy5oOgorICAgICAgICBBZGRzIG5ldyBTUEkgYW5kIG1v
Y2tpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6
aGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpl
bmFibGVNb2Rlcm5XZWJBdXRoZW50aWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRp
Y2F0b3JNYW5hZ2VyOjplbmFibGVOYXRpdmVTdXBwb3J0KToKKyAgICAgICAgKFdlYktpdDo6QXV0
aGVudGljYXRvck1hbmFnZXI6OmF1dGhlbnRpY2F0b3JBZGRlZCk6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QcmVzZW50ZXIp
OgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6ZGlzcGF0Y2hQYW5lbENs
aWVudENhbGwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5oOgorICAgICAgICBBZGRzIGEgbmV3IG1vZGUgdG8gcG93ZXIg
dGhlIG5hdGl2ZSBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudDo6cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24gY29uc3Qp
OgorICAgICAgICBBY2NlcHRzIGEgTEFDb250ZXh0IG9iamVjdC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpNb2NrTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2VyKToK
KyAgICAgICAgQWRkcyBuZXcgbW9ja2luZyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oOgorICAg
ICAgICBBZGRzIHRoZSBuZXcgd2VhayBwYW5lbC4KKwogMjAyMS0wMS0yOSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBjb20uYXBwbGUucHJp
dmF0ZS5zZWN1cmVqaXQgZW50aXRsZW1lbnQgZm9yIEpJVENhZ2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25B
c3NlcnRpb25SZXNwb25zZS5oCmluZGV4IDAxNzAwODE4NjE3OTYyMjY0ZjhhNDBkY2E5YzY0MjMy
NmRhMGZmZDUuLjUyMzM1MzQ4MWUyYjZkYWRlODAzOGZkZGM4MmRlYTA4MzRkYmMwMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFz
c2VydGlvblJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtNDMsNiArNDMsOCBAQCBwdWJs
aWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZS0+ZGlzcGxheU5hbWUoKTsgfQogICAgIFJlZlB0cjxEYXRhPiB1c2VySGFuZGxl
KCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldExBQ29udGV4dChMQUNvbnRleHQgKmNvbnRleHQpIHsg
bV9yZXNwb25zZS0+c2V0TEFDb250ZXh0KGNvbnRleHQpOyB9CisKICAgICBXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UqIHJlc3BvbnNlKCkgeyByZXR1cm4gbV9yZXNwb25z
ZS5wdHIoKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwCmluZGV4IGZmZjMzMDE4YTIw
YTFjODdlMGMwN2Q0ODk0OGM3NzczNGE2N2E1ZTguLjNmYWFjODllNWQ1ZGZmOTI2YzQ4ZGRkNWUw
NzJlMTdmZDQ5ZjQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAog
I2luY2x1ZGUgIkFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCIKICNpbmNsdWRlICJB
dXRoZW50aWNhdG9yTWFuYWdlci5oIgorI2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9yTWFuYWdl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KIAog
bmFtZXNwYWNlIEFQSSB7CkBAIC00NSw2ICs0Niw3IEBAIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKQogICAgIDogbV9tYW5hZ2VyKG1ha2VVbmlxdWU8QXV0
aGVudGljYXRvck1hbmFnZXI+KCkpCiAgICAgLCBtX2NsaWVudChtYWtlVW5pcXVlUmVmPFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ+KCkpCiB7CisgICAgbV9tYW5hZ2VyLT5lbmFibGVOYXRp
dmVTdXBwb3J0KCk7CiB9CiAKIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OldlYkF1dGhlbnRpY2F0
aW9uUGFuZWwoY29uc3QgQXV0aGVudGljYXRvck1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdURjo6
U3RyaW5nJiBycElkLCBjb25zdCBUcmFuc3BvcnRTZXQmIHRyYW5zcG9ydHMsIENsaWVudERhdGFU
eXBlIHR5cGUpCkBAIC02OCwxMyArNzAsMzAgQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbDo6fldl
YkF1dGhlbnRpY2F0aW9uUGFuZWwoKSA9IGRlZmF1bHQ7CiB2b2lkIFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWw6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmIHJlcXVl
c3QsIENhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKG1fbWFuYWdlcik7CisgICAg
cmVxdWVzdC53ZWFrUGFuZWwgPSBtYWtlV2Vha1B0cigqdGhpcyk7CiAgICAgbV9tYW5hZ2VyLT5o
YW5kbGVSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAog
dm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpjYW5jZWwoKSBjb25zdAogewotICAgIGlmICht
X3dlYWtNYW5hZ2VyKQorICAgIGlmIChtX3dlYWtNYW5hZ2VyKSB7CiAgICAgICAgIG1fd2Vha01h
bmFnZXItPmNhbmNlbFJlcXVlc3QoKnRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV9tYW5hZ2VyLT5jYW5jZWwoKTsKK30KKwordm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVs
OjpzZXRNb2NrQ29uZmlndXJhdGlvbihXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBBU1NFUlQobV9tYW5hZ2VyKTsKKwor
ICAgIGlmICghbV9tYW5hZ2VyLT5pc01vY2soKSkgeworICAgICAgICBtX21hbmFnZXIgPSBtYWtl
VW5pcXVlPE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlcj4oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7
CisgICAgICAgIG1fbWFuYWdlci0+ZW5hYmxlTmF0aXZlU3VwcG9ydCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIHN0YXRpY19jYXN0PE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlcio+KG1f
bWFuYWdlci5nZXQoKSktPnNldFRlc3RDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlv
bikpOwogfQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OnNldENsaWVudChVbmlxdWVS
ZWY8V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudD4mJiBjbGllbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaApp
bmRleCA4MzYyMGRiNGIxZWM2ZmUyNzMzYzY2OWFmMjEyZTg5NjNkYTUxZjBjLi4zMmNhNWY2OWY5
OWFjYjFhMWFjODg0M2NmMzUyMDQ5Y2JhZTdhMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKQEAgLTM5LDYg
KzM5LDcgQEAgZW51bSBjbGFzcyBDbGllbnREYXRhVHlwZSA6IGJvb2w7CiBjbGFzcyBBdXRoZW50
aWNhdG9yUmVzcG9uc2U7CiAKIHN0cnVjdCBFeGNlcHRpb25EYXRhOworc3RydWN0IE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NjEsNiArNjIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViS2l0OjpX
ZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYsIENhbGxiYWNrJiYpOwogICAgIHZvaWQgY2Fu
Y2VsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNb2NrQ29uZmlndXJhdGlvbihXZWJDb3JlOjpNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYpOwogCiAgICAgY29uc3QgV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQuZ2V0
KCk7IH0KICAgICB2b2lkIHNldENsaWVudChVbmlxdWVSZWY8V2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAppbmRleCBhMzY4YzM3YWVlZmRl
MzE5MzBlZTE4M2I2ZTVmMThjYWJkMDJkYzU1Li40MGYyN2U3MzJjZmU4MWY2MzhhOGU3MzYxMjA2
ZWQ2ODYxNDg4ZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKQEAgLTUyLDYgKzUyLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGNvbnN0IHsgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpTdHJpbmcoKSk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uU291
cmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZSopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5k
bGVyKG51bGxwdHIpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0
aGVudGljYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6TG9jYWxBdXRoZW50aWNh
dG9yUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxl
cihXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvclBvbGljeTo6RGlzYWxsb3cpOyB9CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNv
bXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oCmluZGV4IDU2ODhh
ZjQxYmE1YjRkZDllMmRiOGJmOTdiOWM5MGUxNTFhY2E2NGIuLjY5YTA0MTAzZjdmNWI1NmE3ODll
ZjQ1Y2NlMjk1ZjY4M2I4YzU4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UuaApAQCAtMjgsNiArMjgsOCBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9C
RUdJTgogCitAY2xhc3MgTEFDb250ZXh0OworCiBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTEu
MCksIGlvcygxNC4wKSkKIEBpbnRlcmZhY2UgX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25S
ZXNwb25zZSA6IE5TT2JqZWN0CiAKQEAgLTM1LDYgKzM3LDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxF
KG1hY29zKDExLjApLCBpb3MoMTQuMCkpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IGNvcHkpIE5TU3RyaW5nICpkaXNwbGF5TmFtZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgY29weSkgTlNEYXRhICp1c2VySGFuZGxlOwogCistICh2b2lkKXNldExBQ29udGV4dDoo
TEFDb250ZXh0ICopY29udGV4dCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbQppbmRleCA5NzFmMjM2
NjQwMzA1ODM5MDM0ZTA5MTg0ODQ3Yjk3Y2UxZDlhYWExLi5hMzJhMmFmY2VjNWZkY2RkYzdlZDcx
NzU0MzVhNTVjMGExNmViMWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5tbQpAQCAtNTQsNiArNTQsMTEgQEAgLSAoTlNEYXRhICopdXNlckhhbmRs
ZQogICAgIHJldHVybiB3cmFwcGVyKF9yZXNwb25zZS0+dXNlckhhbmRsZSgpKTsKIH0KIAorLSAo
dm9pZClzZXRMQUNvbnRleHQ6KExBQ29udGV4dCAqKWNvbnRleHQKK3sKKyAgICBfcmVzcG9uc2Ut
PnNldExBQ29udGV4dChjb250ZXh0KTsKK30KKwogI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3Rv
Y29sIGltcGxlbWVudGF0aW9uCiAKIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwuaAppbmRleCAzYTcyYzU1ZjY2ODk0YTcwOGYwYWRkYWM3ODQ0YTFmMTRl
NzRhMGU4Li44NGZiY2NkZmY3YTk3MWNmNTc0Mjc4MTI1MzA4NWRlYmZiZmExNDZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLmgKQEAgLTM0LDYgKzM0LDcgQEAgTlNfQVNTVU1FX05PTk5VTExf
QkVHSU4KIEBjbGFzcyBfV0tQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiBAY2xh
c3MgX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTsKIEBjbGFzcyBfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsOworQGNsYXNzIExBQ29udGV4dDsKIAogdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCkgewogICAgIF9XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHRVbmF2YWlsYWJsZSwKQEAgLTc4LDE3ICs3OSwxOCBA
QCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblNvdXJjZSkg
ewogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uU291cmNlRXh0ZXJuYWwsCiB9IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiAKLS8vIEZJWE1FOiA8cmRhcjovL3Byb2Js
ZW0vNzE1MDkxNDE+IE9wdGltaXplIHRoZSBkZWxlZ2F0ZSBmb3IgdGhlIEF1dGhlbnRpY2F0aW9u
U2VydmljZS5mcmFtZXdvcmsuCiBAcHJvdG9jb2wgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERl
bGVnYXRlIDxOU09iamVjdD4KIAogQG9wdGlvbmFsCiAKLS0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB1cGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVsOihf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKXVwZGF0ZSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjE1LjQpLCBpb3MoMTMuNCkpOwotLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbCAqKXBhbmVsIGRpc21pc3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3Vs
dDooX1dLV2ViQXV0aGVudGljYXRpb25SZXN1bHQpcmVzdWx0IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTUuNCksIGlvcygxMy40KSk7Ci0tICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsICopcGFuZWwgcmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOihOU1VJbnRl
Z2VyKXJldHJpZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSk7
CistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgdXBkYXRl
V2ViQXV0aGVudGljYXRpb25QYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZSl1
cGRhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsKKy0gKHZvaWQp
cGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCByZXF1ZXN0UElOV2l0aFJl
bWFpbmluZ1JldHJpZXM6KE5TVUludGVnZXIpcmV0cmllcyBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMS4wKSwgaW9zKDE0LjApKTsKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwgKilwYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgc291cmNlOihfV0tX
ZWJBdXRoZW50aWNhdGlvblNvdXJjZSlzb3VyY2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsKLS0gKHZvaWQpcGFu
ZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBkZWNpZGVQb2xpY3lGb3JMb2Nh
bEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS0xvY2FsQXV0
aGVudGljYXRvclBvbGljeSBwb2xpY3kpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsICopcGFuZWwgcmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb25X
aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKExBQ29udGV4dCAqY29udGV4dCkpY29tcGxl
dGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIAorLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS83MTUwOTg0OD4gRGVwcmVjYXRl
IHRoZSBmb2xsb3dpbmcgZGVsZWdhdGVzLgorLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbCAqKXBhbmVsIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcldpdGhD
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5IHBv
bGljeSkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9z
KDE0LjApKTsKKy0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5l
bCBkaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQ6KF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUmVzdWx0KXJlc3VsdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQu
MCkpOwogQGVuZAogCiBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggMzJmMTBlMjM4NDI4N2RkMGFkZmJm
MzZkNWY0ZmJhY2E4NzJiYmJkMS4uZTRiODYxODhiZGIyZmY5NDAyZDU5MjExYWMxOTYyYzA4NTVm
ZDBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTQ0LDYgKzQ0LDcgQEAKICNp
bXBvcnQgIl9XS1B1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5LmgiCiAjaW1wb3J0IDxXZWJD
b3JlL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNh
dG9yUmVzcG9uc2VEYXRhLmg+CisjaW1wb3J0IDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFu
dHMuaD4KQEAgLTQwNyw2ICs0MDgsMjEgQEAgKyAoQk9PTClpc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGUKICNlbmRpZgogfQogCistICh2b2lkKXNldE1vY2tDb25m
aWd1cmF0aW9uOihOU0RpY3Rpb25hcnkgKiljb25maWd1cmF0aW9uCit7CisjaWYgRU5BQkxFKFdF
Ql9BVVRITikKKyAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpMb2NhbENvbmZpZ3VyYXRpb24gbG9jYWxDb25maWd1cmF0aW9uOworICAgIGxvY2FsQ29uZmln
dXJhdGlvbi51c2VyVmVyaWZpY2F0aW9uID0gV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6VXNlclZlcmlmaWNhdGlvbjo6WWVzOworICAgIGlmIChjb25maWd1cmF0
aW9uW0AicHJpdmF0ZUtleUJhc2U2NCJdKQorICAgICAgICBsb2NhbENvbmZpZ3VyYXRpb24ucHJp
dmF0ZUtleUJhc2U2NCA9IGNvbmZpZ3VyYXRpb25bQCJwcml2YXRlS2V5QmFzZTY0Il07CisKKyAg
ICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1vY2tDb25maWd1
cmF0aW9uOworICAgIG1vY2tDb25maWd1cmF0aW9uLmxvY2FsID0gV1RGTW92ZShsb2NhbENvbmZp
Z3VyYXRpb24pOworCisgICAgX3BhbmVsLT5zZXRNb2NrQ29uZmlndXJhdGlvbihXVEZNb3ZlKG1v
Y2tDb25maWd1cmF0aW9uKSk7CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAj
cHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxGb3JUZXN0aW5nLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbEZvclRlc3RpbmcuaAppbmRleCAxOWI4YjdmNzIyOTU2ZDA1
YzBhMDEyMTBhNWNiZGFiNjRmZjY0ZWViLi4xNGViZmUxZTZjYzM2OWIzMWU2ZmI5NzdhYmM0ODMy
NmMyYWE4NThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEZvclRlc3RpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEZvclRlc3Rpbmcu
aApAQCAtMzUsOCArMzUsMTAgQEAgc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9uczsKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKQogQGludGVyZmFjZSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIChXS1Rlc3RpbmcpCiAK
LS8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNzE1MDk3MTQ+IEludHJvZHVjZXMgbW9jayB0ZXN0
aW5nLgogKyAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyljb252
ZXJ0VG9Db3JlQ3JlYXRpb25PcHRpb25zV2l0aE9wdGlvbnM6KF9XS1B1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMgKilvcHRpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiArIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMpY29udmVydFRvQ29yZVJlcXVlc3RPcHRpb25zV2l0aE9wdGlvbnM6KF9X
S1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyAqKW9wdGlvbnMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLy8gRm9yIGRldGFp
bHMgb2YgY29uZmlndXJhdGlvbiwgcmVmZXIgdG8gTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oLgorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TRGljdGlvbmFyeSAqbW9j
a0NvbmZpZ3VyYXRpb247CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNw
cAppbmRleCBkYjdhYjIxM2NkZjQ0NzlkNzAxYzVmNTEzOTVhNmM4Y2NiYjEwYWE2Li41YTYwOTc2
MDgxM2M4M2M3OWUzZTA4ODkwOTM4NDFlNzFjYTU4M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwCkBAIC0xNjUsMTAgKzE2NSw5IEBAIHZvaWQgQXV0aGVudGljYXRvck1h
bmFnZXI6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmIGRhdGEs
IENhCiAgICAgLy8gMi4gQXNrIGNsaWVudHMgdG8gc2hvdyBhcHByb3ByaWF0ZSBVSSBpZiBhbnkg
YW5kIHRoZW4gc3RhcnQgdGhlIHJlcXVlc3QuCiAgICAgaW5pdFRpbWVPdXRUaW1lcigpOwogCi0g
ICAgLy8gRklYTUU8cmRhcjovL3Byb2JsZW0vNzA4MjI4MzQ+OiBUaGUgbV93ZWJBdXRoZW50aWNh
dGlvbk1vZGVybkVuYWJsZWQgaXMgdXNlZCB0byBkZXRlcm1pbmUKLSAgICAvLyB3aGV0aGVyIG9y
IG5vdCB3ZSBhcmUgaW4gdGhlIFVJUHJvY2Vzcy4KKyAgICAvLyBGSVhNRTxyZGFyOi8vcHJvYmxl
bS83MDgyMjgzND46IFRoZSBtX21vZGUgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBu
b3Qgd2UgYXJlIGluIHRoZSBVSVByb2Nlc3MuCiAgICAgLy8gSWYgc28sIGNvbnRpbnVlIHRvIHRo
ZSBvbGQgcm91dGUuIE90aGVyd2lzZSwgdXNlIHRoZSBtb2Rlcm4gV2ViQXV0aG4gcHJvY2VzcyB3
YXkuCi0gICAgaWYgKCFtX3dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCkgeworICAgIGlm
IChtX21vZGUgPT0gTW9kZTo6Q29tcGF0aWJsZSkgewogICAgICAgICBydW5QYW5lbCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMjA5LDcgKzIwOCwxMiBAQCB2b2lkIEF1dGhlbnRpY2F0
b3JNYW5hZ2VyOjpjYW5jZWwoKQogCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjplbmFibGVN
b2Rlcm5XZWJBdXRoZW50aWNhdGlvbigpCiB7Ci0gICAgbV93ZWJBdXRoZW50aWNhdGlvbk1vZGVy
bkVuYWJsZWQgPSB0cnVlOworICAgIG1fbW9kZSA9IE1vZGU6Ok1vZGVybjsKK30KKwordm9pZCBB
dXRoZW50aWNhdG9yTWFuYWdlcjo6ZW5hYmxlTmF0aXZlU3VwcG9ydCgpCit7CisgICAgbV9tb2Rl
ID0gTW9kZTo6TmF0aXZlOwogfQogCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjbGVhclN0
YXRlQXN5bmMoKQpAQCAtMjM2LDcgKzI0MCw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6
OmF1dGhlbnRpY2F0b3JBZGRlZChSZWY8QXV0aGVudGljYXRvcj4mJiBhdXRoZW50aWNhdG9yCiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBhdXRoZW50aWNhdG9yLT5zZXRPYnNl
cnZlcigqdGhpcyk7CiAgICAgYXV0aGVudGljYXRvci0+aGFuZGxlUmVxdWVzdChtX3BlbmRpbmdS
ZXF1ZXN0RGF0YSk7Ci0gICAgYXV0aGVudGljYXRvci0+c2V0V2ViQXV0aGVudGljYXRpb25Nb2Rl
cm5FbmFibGVkKG1fd2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkKTsKKyAgICBhdXRoZW50
aWNhdG9yLT5zZXRXZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQobV9tb2RlICE9IE1vZGU6
OkNvbXBhdGlibGUpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9hdXRoZW50aWNhdG9ycy5hZGQo
V1RGTW92ZShhdXRoZW50aWNhdG9yKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KQEAgLTM1NCwxMiArMzU4LDE0IEBAIHZvaWQgQXV0aGVu
dGljYXRvck1hbmFnZXI6OmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihDb21wbGV0
aW9uSGFuZGxlcjx2CiAKIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnJlcXVlc3RMQUNvbnRl
eHRGb3JVc2VyVmVyaWZpY2F0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICop
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICghbV9wcmVzZW50ZXIpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgaWYgKG1fcHJlc2VudGVyKSB7Cisg
ICAgICAgIG1fcHJlc2VudGVyLT5yZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX3ByZXNlbnRlci0+cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24oV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgQVBJOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCkgbXV0YWJsZSB7CisgICAgICAgIHBhbmVsLmNs
aWVudCgpLnJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6
Y2FuY2VsUmVxdWVzdCgpCkBAIC00NDQsMTAgKzQ1MCwxNCBAQCB2b2lkIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyOjpydW5QYW5lbCgpCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QcmVzZW50
ZXIoKQogewogICAgIC8vIEdldCBhdmFpbGFibGUgdHJhbnNwb3J0cyBhbmQgc3RhcnQgZGlzY292
ZXJpbmcgYXV0aGVudGljYXRvcnMgb24gdGhlbS4KLSAgICBhdXRvJiBvcHRpb25zID0gbV9wZW5k
aW5nUmVxdWVzdERhdGEub3B0aW9uczsKICAgICBhdXRvIHRyYW5zcG9ydHMgPSBnZXRUcmFuc3Bv
cnRzKCk7CiAgICAgc3RhcnREaXNjb3ZlcnkodHJhbnNwb3J0cyk7CiAKKyAgICAvLyBGb3IgbmF0
aXZlIEFQSSBzdXBwb3J0LCB3ZSBza2lwIHRoZSBVSSBwYXJ0LiBUaGUgbmF0aXZlIEFQSSB3aWxs
IGhhbmRsZSB0aGF0LgorICAgIGlmIChtX21vZGUgPT0gTW9kZTo6TmF0aXZlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvJiBvcHRpb25zID0gbV9wZW5kaW5nUmVxdWVzdERhdGEub3B0aW9u
czsKICAgICBtX3ByZXNlbnRlciA9IG1ha2VVbmlxdWU8QXV0aGVudGljYXRvclByZXNlbnRlckNv
b3JkaW5hdG9yPigqdGhpcywgZ2V0UnBJZChvcHRpb25zKSwgdHJhbnNwb3J0cywgZ2V0Q2xpZW50
RGF0YVR5cGUob3B0aW9ucykpOwogfQogCkBAIC00ODgsMTUgKzQ5OCwxOSBAQCBhdXRvIEF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjpnZXRUcmFuc3BvcnRzKCkgY29uc3QgLT4gVHJhbnNwb3J0U2V0CiAK
IHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKEZ1bmN0
aW9uPHZvaWQoY29uc3QgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJik+JiYgY2FsbCkgY29u
c3QKIHsKLSAgICBpZiAoYXV0byogcGFuZWwgPSBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5lbC5n
ZXQoKSkgewotICAgICAgICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0aGUgbmV4dCBydW4gbG9vcCB0
byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFuY2UgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBtb2Rp
ZnkgdGhlIHN0YXRlCi0gICAgICAgIC8vIG9mIHRoZSBjdXJyZW50IHJ1biBsb29wIGluIHVuZXhw
ZWN0ZWQgd2F5cy4KLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrUGFuZWwg
PSBtYWtlV2Vha1B0cigqcGFuZWwpLCBjYWxsID0gV1RGTW92ZShjYWxsKV0gKCkgewotICAgICAg
ICAgICAgaWYgKCF3ZWFrUGFuZWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgY2FsbCgqd2Vha1BhbmVsKTsKLSAgICAgICAgfSk7Ci0gICAgfQorICAgIGF1dG8gd2Vha1Bh
bmVsID0gbV9wZW5kaW5nUmVxdWVzdERhdGEud2Vha1BhbmVsOworICAgIGlmICghd2Vha1BhbmVs
KQorICAgICAgICB3ZWFrUGFuZWwgPSBtYWtlV2Vha1B0cigqbV9wZW5kaW5nUmVxdWVzdERhdGEu
cGFuZWwuZ2V0KCkpOworICAgIGlmICghd2Vha1BhbmVsKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0aGUgbmV4dCBydW4gbG9vcCB0byBwcmV2ZW50IGNsaWVu
dHMnIHJlZW50cmFuY2UgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBtb2RpZnkgdGhlIHN0YXRlCisg
ICAgLy8gb2YgdGhlIGN1cnJlbnQgcnVuIGxvb3AgaW4gdW5leHBlY3RlZCB3YXlzLgorICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1BhbmVsLCBjYWxsID0gV1RGTW92ZShjYWxsKV0g
KCkgeworICAgICAgICBpZiAoIXdlYWtQYW5lbCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgY2FsbCgqd2Vha1BhbmVsKTsKKyAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAppbmRleCAxZWU0YWI0OTUzMWJlZTk3NDE0
NWM1NDg3ODU0MjA0MTY3ZWUzNjFlLi40MTgyOTViZTNkNmMzYjI5ZDI0MzI3NTFhNDEyZTM1NmY4
MTI1NTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKQEAgLTcxLDYgKzcxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc01vY2soKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiAgICAgdm9pZCBlbmFibGVNb2Rlcm5XZWJBdXRoZW50aWNhdGlvbigpOworICAgIHZv
aWQgZW5hYmxlTmF0aXZlU3VwcG9ydCgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgUnVuTG9vcDo6VGlt
ZXI8QXV0aGVudGljYXRvck1hbmFnZXI+JiByZXF1ZXN0VGltZU91dFRpbWVyKCkgeyByZXR1cm4g
bV9yZXF1ZXN0VGltZU91dFRpbWVyOyB9CkBAIC03OSw2ICs4MCwxMiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBpbnZva2VQZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIoUmVzcG9uZCYmKTsKIAogcHJp
dmF0ZToKKyAgICBlbnVtIGNsYXNzIE1vZGUgeworICAgICAgICBDb21wYXRpYmxlLAorICAgICAg
ICBNb2Rlcm4sCisgICAgICAgIE5hdGl2ZSwKKyAgICB9OworCiAgICAgLy8gQXV0aGVudGljYXRv
clRyYW5zcG9ydFNlcnZpY2U6Ok9ic2VydmVyCiAgICAgdm9pZCBhdXRoZW50aWNhdG9yQWRkZWQo
UmVmPEF1dGhlbnRpY2F0b3I+JiYpIGZpbmFsOwogICAgIHZvaWQgc2VydmljZVN0YXR1c1VwZGF0
ZWQoV2ViQXV0aGVudGljYXRpb25TdGF0dXMpIGZpbmFsOwpAQCAtMTE3LDcgKzEyNCw3IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2Vydmlj
ZT4+IG1fc2VydmljZXM7CiAgICAgSGFzaFNldDxSZWY8QXV0aGVudGljYXRvcj4+IG1fYXV0aGVu
dGljYXRvcnM7CiAKLSAgICBib29sIG1fd2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkIHsg
ZmFsc2UgfTsKKyAgICBNb2RlIG1fbW9kZSB7IE1vZGU6OkNvbXBhdGlibGUgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4IDk3NmNhNjlkMGFmODFjNDViZmFmODYyNzUzNzM5
NDlkYjdkNmJjNGUuLjFiZTZhNTYyZGM1OGNiNjkxZjZhYTM5NmUwMmFlYzNlNDljMTRkYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
LmgKQEAgLTUyLDYgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RQaW4odWludDY0
X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJikgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiYsIFdlYkF1dGhlbnRpY2F0aW9u
U291cmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZSopPiYmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ckxvY2FsQXV0aGVudGljYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExvY2FsQXV0aGVudGlj
YXRvclBvbGljeSk+JiYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExBQ29udGV4dEZv
clVzZXJWZXJpZmljYXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYp
IGNvbnN0IGZpbmFsOwogCiAgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqbV9wYW5lbDsK
ICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiA+
IG1fZGVsZWdhdGU7CkBAIC02Miw2ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgcGFu
ZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJpZXNDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAg
ICAgICAgIGJvb2wgcGFuZWxTZWxlY3RBc3NlcnRpb25SZXNwb25zZVNvdXJjZUNvbXBsZXRpb25I
YW5kbGVyIDogMTsKICAgICAgICAgYm9vbCBwYW5lbERlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVu
dGljYXRvckNvbXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCBwYW5lbFJlcXVlc3RM
QUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAgIH0g
bV9kZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2Vi
QXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQppbmRleCA4Mzc2OTcyYzM1NzY3NjliMTEwNWIy
ODUwYjRjNmMyYzFlYTRhMjY2Li5hMDg5NGEyMGY5MWZmYzM3N2M0NDUzNjBlNmYxMzg5ODIwYTli
M2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQubW0KQEAgLTUwLDYgKzUwLDcgQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudChfV0tXZWJBdXRoZW50aWNhdGlvblAKICAg
ICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFJlcXVlc3RQaW5XaXRoUmVtYWluaW5nUmV0cmllc0Nv
bXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
cGFuZWw6cmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOmNvbXBsZXRpb25IYW5kbGVyOild
OwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VTb3Vy
Y2VDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHBhbmVsOnNlbGVjdEFzc2VydGlvblJlc3BvbnNlOnNvdXJjZTpjb21wbGV0aW9uSGFuZGxl
cjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbERlY2lkZVBvbGljeUZvckxvY2FsQXV0
aGVudGljYXRvckNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IocGFuZWw6ZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENv
bXBsZXRpb25IYW5kbGVyOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsUmVxdWVzdExB
Q29udGV4dEZvclVzZXJWZXJpZmljYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnJlcXVlc3RMQUNvbnRleHRGb3JVc2Vy
VmVyaWZpY2F0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOildOwogfQogCiBSZXRhaW5QdHI8aWQg
PF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4gPiBXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50OjpkZWxlZ2F0ZSgpCkBAIC0yMTcsNiArMjE4LDI4IEBAIHZvaWQgV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yKENv
bXBsZXRpb25ICiAgICAgfSkuZ2V0KCldOwogfQogCit2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQ6OnJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAorewor
ICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxSZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZl
cmlmaWNhdGlvbkNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG51bGxwdHIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBkZWxlZ2F0ZSA9
IG1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
Y2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5n
ZXQoKSwgQHNlbGVjdG9yKHBhbmVsOnJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9u
V2l0aENvbXBsZXRpb25IYW5kbGVyOikpOworICAgIFtkZWxlZ2F0ZSBwYW5lbDptX3BhbmVsIHJl
cXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOm1h
a2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKExBQ29udGV4dCAqY29udGV4dCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworICAgIH0p
LmdldCgpXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaAppbmRleCBm
ZjkwZDNkZTQzNDljOWEzMzg1YzIwYzA1OTcyOWI4ZTIyZWJlMmU1Li45NGU0YTRkN2U0ZjhlMTZm
MjBlY2I5NGE3ZWIwNDhmZTYyOTM1OGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENv
bm5lY3Rpb24uaApAQCAtMzgsNiArMzgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCB2ZXJpZnlVc2VyKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkNsaWVudERhdGFUeXBlLCBTZWNB
Y2Nlc3NDb250cm9sUmVmLCBVc2VyVmVyaWZpY2F0aW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYsIExBQ29udGV4dCAqLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFVzZXJWZXJpZmljYXRpb24pPiYmKSBmaW5hbDsKICAgICBSZXRhaW5Q
dHI8U2VjS2V5UmVmPiBjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShMQUNvbnRleHQgKiwgU2Vj
QWNjZXNzQ29udHJvbFJlZiwgY29uc3QgU3RyaW5nJiBzZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2Vj
QXR0ckFwcGxpY2F0aW9uVGFnKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGdldEF0dGVzdGF0aW9u
KFNlY0tleVJlZiwgTlNEYXRhICphdXRoRGF0YSwgTlNEYXRhICpoYXNoLCBBdHRlc3RhdGlvbkNh
bGxiYWNrJiYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZmlsdGVyUmVzcG9uc2VzKFZlY3RvcjxS
ZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mKSBjb25zdCBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQppbmRleCAyZmJhYTM0
MTUwZjVlMGYzZTJhYzYyZWFhZjY2NjdlMzc2ZGZmMWJhLi42MjJlOGNhOTU4YzVkZDk3ZDU5MTc5
ZWM2YTgzMTdjODRjYTY2MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0
aW9uLm1tCkBAIC02Nyw2ICs2NywyNyBAQCB2b2lkIE1vY2tMb2NhbENvbm5lY3Rpb246OnZlcmlm
eVVzZXIoY29uc3QgU3RyaW5nJiwgQ2xpZW50RGF0YVR5cGUsIFNlY0FjY2Vzc0NvbgogICAgIH0p
OwogfQogCit2b2lkIE1vY2tMb2NhbENvbm5lY3Rpb246OnZlcmlmeVVzZXIoU2VjQWNjZXNzQ29u
dHJvbFJlZiwgTEFDb250ZXh0ICosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlclZlcmlmaWNh
dGlvbik+JiYgY2FsbGJhY2spCit7CisgICAgLy8gTW9jayBhc3luYyBvcGVyYXRpb25zLgorICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29uZmlndXJhdGlvbiA9IG1fY29uZmlndXJhdGlv
biwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgQVNT
RVJUKGNvbmZpZ3VyYXRpb24ubG9jYWwpOworCisgICAgICAgIFVzZXJWZXJpZmljYXRpb24gdXNl
clZlcmlmaWNhdGlvbiA9IFVzZXJWZXJpZmljYXRpb246Ok5vOworICAgICAgICBzd2l0Y2ggKGNv
bmZpZ3VyYXRpb24ubG9jYWwtPnVzZXJWZXJpZmljYXRpb24pIHsKKyAgICAgICAgY2FzZSBNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpVc2VyVmVyaWZpY2F0aW9uOjpObzoKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246OlVzZXJWZXJpZmljYXRpb246OlllczoKKyAgICAgICAgICAgIHVzZXJWZXJpZmlj
YXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uOjpZZXM7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpVc2VyVmVyaWZpY2F0
aW9uOjpDYW5jZWw6CisgICAgICAgICAgICB1c2VyVmVyaWZpY2F0aW9uID0gVXNlclZlcmlmaWNh
dGlvbjo6Q2FuY2VsOworICAgICAgICB9CisKKyAgICAgICAgY2FsbGJhY2sodXNlclZlcmlmaWNh
dGlvbik7CisgICAgfSk7Cit9CisKIFJldGFpblB0cjxTZWNLZXlSZWY+IE1vY2tMb2NhbENvbm5l
Y3Rpb246OmNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExBQ29udGV4dCAqLCBTZWNBY2Nlc3ND
b250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRyQXBw
bGljYXRpb25UYWcpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fY29uZmlndXJhdGlvbi5sb2NhbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKaW5kZXggZDM4
NjM3ZTY2ODcyNzQwMzI3ODU2ZTg5MjkyNzgyMjI0Y2QxMmNiNi4uMTY3NWJmMGJmY2MwY2I2MjY1
NTZkNjdiMjA4NjA4YjEwNGU1ZGJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
aW9uUmVxdWVzdERhdGEuaApAQCAtNTUsNiArNTUsNyBAQCBzdHJ1Y3QgV2ViQXV0aGVudGljYXRp
b25SZXF1ZXN0RGF0YSB7CiAKICAgICBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZTsKICAgICBT
dHJpbmcgY2FjaGVkUGluOyAvLyBPbmx5IHVzZWQgdG8gaW1wcm92ZSBORkMgQ2xpZW50IFBJTiBl
eHBlcmllbmNlLgorICAgIFdlYWtQdHI8QVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsPiB3ZWFr
UGFuZWw7CiB9OwogCiBXZWJDb3JlOjpDbGllbnREYXRhVHlwZSBnZXRDbGllbnREYXRhVHlwZShj
b25zdCBWYXJpYW50PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMs
IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4mKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZDFjZTMyNGNhMWIz
OWUxNGY4MDE3N2FjZmEzOTlmMWU0ZWY0MGQyLi5iYzU4MjBjMTViMzc0ZWZhMGFhMjhkZjdjN2E4
MzViZTFiMTI5NTQxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDEtMjkgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIE9wdGltaXplIF9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBmb3IgbmF0aXZlIEFQSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMTI1CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83MTUwOTE0MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbToKKyAgICAgICAgKC1bVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxl
Z2F0ZSBwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZTpzb3VyY2U6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgcGFu
ZWw6cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb25XaXRoQ29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJDb3JlOjpyZXNldCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0wMS0yOSAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZ3JhZGUgbW90aW9ubWFyazEuMS5w
bGFuIHRvIHIyNzIwNDQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAw
NWRiNGZmMWU0NWE3ODBlZGY2NjEyMjJiYjY4NTc3ZDY3NGY3N2UyLi4zM2FjOTU5YzE4ZTM1ZjRh
NDI5Y2QxNDg2Njg3M2UzMjE3YTY0Y2E1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCkBAIC03OCw2ICs3OCw3IEBAIHN0YXRpYyBTdHJpbmcgdGVzdEVTMjU2UHJpdmF0ZUtl
eUJhc2U2NCA9CiAgICAgIlJRPT0iOwogc3RhdGljIFN0cmluZyB0ZXN0VXNlckVudGl0eUJ1bmRs
ZUJhc2U2NCA9ICJvbUpwWkVvQUFRSURCQVVHQndnSlpHNWhiV1ZrU205b2JnPT0iOyAvLyB7ICJp
ZCI6IGgnMDAwMTAyMDMwNDA1MDYwNzA4MDknLCAibmFtZSI6ICJKb2huIiB9CiBzdGF0aWMgU3Ry
aW5nIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxTZWxlY3RlZENyZWRlbnRpYWxOYW1lOworc3RhdGlj
IGJvb2wgbGFDb250ZXh0UmVxdWVzdGVkID0gZmFsc2U7CiAKIEBpbnRlcmZhY2UgVGVzdFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsRGVsZWdhdGU+CiBAZW5kCkBAIC0xNTAsNiArMTUxLDkgQEAgLSAodm9pZClwYW5lbDoo
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHJlcXVlc3RQSU5XaXRoUmVtYWluaW5n
UmV0cmllczoKIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5l
bCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UgKj4gKilyZXNwb25zZXMgc291cmNlOihfV0tXZWJBdXRoZW50aWNh
dGlvblNvdXJjZSlzb3VyY2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhl
bnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBp
ZiAocmVzcG9uc2VzLmNvdW50ID09IDEpIHsKKyAgICAgICAgYXV0byBsYUNvbnRleHQgPSBhZG9w
dE5TKFtbTEFDb250ZXh0IGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtyZXNwb25zZXNbMF0gc2V0
TEFDb250ZXh0OmxhQ29udGV4dC5nZXQoKV07CisKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzcG9uc2VzWzBdKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1Nyw4ICsxNjEsMTMg
QEAgLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHNlbGVj
dEFzc2VydGlvblJlc3BvbnNlOihOU0FycmEKICAgICAvLyBSZXNwb25zZXMgcmV0dXJuZWQgZnJv
bSBMb2NhbEF1dGhlbnRpY2F0b3IgaXMgaW4gdGhlIG9yZGVyIG9mIExSVS4gVGhlcmVmb3JlLCB3
ZSB1c2UgdGhlIGxhc3QgaXRlbSB0byBwb3B1bGF0ZSBpdCB0bwogICAgIC8vIHRoZSBmaXJzdCB0
byB0ZXN0IGl0cyBjb3JyZWN0bmVzcy4KICAgICBpZiAoc291cmNlID09IF9XS1dlYkF1dGhlbnRp
Y2F0aW9uU291cmNlTG9jYWwpIHsKLSAgICAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFNlbGVj
dGVkQ3JlZGVudGlhbE5hbWUgPSByZXNwb25zZXMubGFzdE9iamVjdC5uYW1lOwotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXMubGFzdE9iamVjdCk7CisgICAgICAgIGF1dG8gKm9i
amVjdCA9IHJlc3BvbnNlcy5sYXN0T2JqZWN0OworCisgICAgICAgIGF1dG8gbGFDb250ZXh0ID0g
YWRvcHROUyhbW0xBQ29udGV4dCBhbGxvY10gaW5pdF0pOworICAgICAgICBbb2JqZWN0IHNldExB
Q29udGV4dDpsYUNvbnRleHQuZ2V0KCldOworCisgICAgICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxTZWxlY3RlZENyZWRlbnRpYWxOYW1lID0gb2JqZWN0Lm5hbWU7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG9iamVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4MCw2ICsx
ODksMTIgQEAgLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVs
IGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXQKICAgICBjb21wbGV0aW9uSGFuZGxlcihs
b2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kpOwogfQogCistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsICopcGFuZWwgcmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRp
b25XaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKExBQ29udGV4dCAqY29udGV4dCkpY29t
cGxldGlvbkhhbmRsZXIKK3sKKyAgICBsYUNvbnRleHRSZXF1ZXN0ZWQgPSB0cnVlOworICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5pbCk7Cit9CisKIEBlbmQKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0
aGVudGljYXRpb25QYW5lbEZha2VEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsRGVsZWdhdGU+CkBAIC0zMjMsNiArMzM4LDcgQEAgc3RhdGljIHZvaWQgcmVzZXQo
KQogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxOdWxsVXNlckhhbmRsZSA9IE5POwogICAgIGxv
Y2FsQXV0aGVudGljYXRvclBvbGljeSA9IF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeURpc2Fs
bG93OwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxTZWxlY3RlZENyZWRlbnRpYWxOYW1lID0g
ZW1wdHlTdHJpbmcoKTsKKyAgICBsYUNvbnRleHRSZXF1ZXN0ZWQgPSBmYWxzZTsKIH0KIAogc3Rh
dGljIHZvaWQgY2hlY2tQYW5lbChfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICpwYW5lbCwgTlNT
dHJpbmcgKnJlbHlpbmdQYXJ0eUlELCBOU0FycmF5ICp0cmFuc3BvcnRzLCBfV0tXZWJBdXRoZW50
aWNhdGlvblR5cGUgdHlwZSkKQEAgLTE3NjAsNyArMTc3Niw3IEBAIFRFU1QoV2ViQXV0aGVudGlj
YXRpb25QYW5lbCwgTWFrZUNyZWRlbnRpYWxTUElUaW1lb3V0KQogICAgIGF1dG8gdXNlciA9IGFk
b3B0TlMoW1tfV0tQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eSBhbGxvY10gaW5pdFdpdGhO
YW1lOkAiamFwcGxlc2VlZEBleGFtcGxlLmNvbSIgaWRlbnRpZmllcjpuc0lkZW50aWZpZXIgZGlz
cGxheU5hbWU6QCJKIEFwcGxlc2VlZCJdKTsKICAgICBOU0FycmF5PF9XS1B1YmxpY0tleUNyZWRl
bnRpYWxQYXJhbWV0ZXJzICo+ICpwdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1hdGVycyA9IEBbIHBh
cmFtZXRlcnMuZ2V0KCkgXTsKICAgICBhdXRvIG9wdGlvbnMgPSBhZG9wdE5TKFtbX1dLUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBhbGxvY10gaW5pdFdpdGhSZWx5aW5nUGFydHk6
cnAuZ2V0KCkgdXNlcjp1c2VyLmdldCgpIHB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWF0ZXJzOnB1
YmxpY0tleUNyZWRlbnRpYWxQYXJhbWF0ZXJzXSk7Ci0gICAgW29wdGlvbnMgc2V0VGltZW91dDpA
MTIwXTsKKyAgICBbb3B0aW9ucyBzZXRUaW1lb3V0OkAxMF07CiAKICAgICBhdXRvIHBhbmVsID0g
YWRvcHROUyhbW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgYWxsb2NdIGluaXRdKTsKICAgICBb
cGFuZWwgbWFrZUNyZWRlbnRpYWxXaXRoSGFzaDpuc0hhc2ggb3B0aW9uczpvcHRpb25zLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Ug
KnJlc3BvbnNlLCBOU0Vycm9yICplcnJvcikgewpAQCAtMTc3Myw2ICsxNzg5LDQyIEBAIFRFU1Qo
V2ViQXV0aGVudGljYXRpb25QYW5lbCwgTWFrZUNyZWRlbnRpYWxTUElUaW1lb3V0KQogICAgIFV0
aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7CiB9CiAKK1RFU1QoV2ViQXV0aGVu
dGljYXRpb25QYW5lbCwgTWFrZUNyZWRlbnRpYWxMQSkKK3sKKyAgICByZXNldCgpOworCisgICAg
dWludDhfdCBpZGVudGlmaWVyW10gPSB7IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQgfTsKKyAgICB1
aW50OF90IGhhc2hbXSA9IHsgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgw
MywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwg
MHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgw
MiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCB9OworICAgIE5TRGF0YSAqbnNJ
ZGVudGlmaWVyID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmlkZW50aWZpZXIgbGVuZ3RoOnNpemVv
ZihpZGVudGlmaWVyKV07CisgICAgTlNEYXRhICpuc0hhc2ggPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6aGFzaCBsZW5ndGg6c2l6ZW9mKGhhc2gpXTsKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBhZG9w
dE5TKFtbX1dLUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnMgYWxsb2NdIGluaXRXaXRoQWxn
b3JpdGhtOkAtN10pOworCisgICAgYXV0byBycCA9IGFkb3B0TlMoW1tfV0tQdWJsaWNLZXlDcmVk
ZW50aWFsUmVseWluZ1BhcnR5RW50aXR5IGFsbG9jXSBpbml0V2l0aE5hbWU6QCJleGFtcGxlLmNv
bSJdKTsKKyAgICBbcnAgc2V0SWRlbnRpZmllcjpAImV4YW1wbGUuY29tIl07CisgICAgYXV0byB1
c2VyID0gYWRvcHROUyhbW19XS1B1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5IGFsbG9jXSBp
bml0V2l0aE5hbWU6QCJqYXBwbGVzZWVkQGV4YW1wbGUuY29tIiBpZGVudGlmaWVyOm5zSWRlbnRp
ZmllciBkaXNwbGF5TmFtZTpAIkogQXBwbGVzZWVkIl0pOworICAgIE5TQXJyYXk8X1dLUHVibGlj
S2V5Q3JlZGVudGlhbFBhcmFtZXRlcnMgKj4gKnB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWF0ZXJz
ID0gQFsgcGFyYW1ldGVycy5nZXQoKSBdOworICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMoW1tf
V0tQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIGFsbG9jXSBpbml0V2l0aFJlbHlp
bmdQYXJ0eTpycC5nZXQoKSB1c2VyOnVzZXIuZ2V0KCkgcHVibGljS2V5Q3JlZGVudGlhbFBhcmFt
YXRlcnM6cHVibGljS2V5Q3JlZGVudGlhbFBhcmFtYXRlcnNdKTsKKworICAgIGF1dG8gcGFuZWwg
PSBhZG9wdE5TKFtbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBhbGxvY10gaW5pdF0pOworICAg
IFtwYW5lbCBzZXRNb2NrQ29uZmlndXJhdGlvbjpAeyBAInByaXZhdGVLZXlCYXNlNjQiOiB0ZXN0
RVMyNTZQcml2YXRlS2V5QmFzZTY0IH1dOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
VGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtw
YW5lbCBzZXREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbcGFuZWwgbWFrZUNyZWRl
bnRpYWxXaXRoSGFzaDpuc0hhc2ggb3B0aW9uczpvcHRpb25zLmdldCgpIGNvbXBsZXRpb25IYW5k
bGVyOl4oX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBOU0Vy
cm9yICplcnJvcikgeworICAgICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuID0gdHJ1ZTsK
KyAgICAgICAgY2xlYW5VcEtleWNoYWluKCJleGFtcGxlLmNvbSIpOworCisgICAgICAgIEVYUEVD
VF9UUlVFKGxhQ29udGV4dFJlcXVlc3RlZCk7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
KworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzcG9uc2UpOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoW3Jlc3BvbnNlLnJhd0lkIGJhc2U2NEVuY29kZWRTdHJpbmdXaXRoT3B0aW9uczowXSwg
IlNNU1hIbmdGN2hFT3NFbEE3M0MzUlkrOGJSND0iKTsKKyAgICAgICAgRVhQRUNUX05VTEwocmVz
cG9uc2UuZXh0ZW5zaW9ucyk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbcmVzcG9uc2UuYXR0
ZXN0YXRpb25PYmplY3QgYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdLCAibzJObWJY
UmtibTl1WldkaGRIUlRkRzEwb0doaGRYUm9SR0YwWVZpWW8zbW05dTZ2dWFWZU40d1JnRFRpZFI1
b0w2dWZMVENyRTlJU1ZZYk9HVWRGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZFakVseDU0
QmU0UkRyQkpRTzl3dDBXUHZHMGVwUUVDQXlZZ0FTRllJRGovenhTa3pLZ2FCdVMzY2RXREY1NThv
ZjhBYUlwZ0Zwc2pGL1FtMTc0OUlsZ2dWQkpQZ3FVSXdmaFdISjkxbmI3VVBINzZjMCtXRk96Wktz
bFB5eUZzZTRnPSIpOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25Q
YW5lbFJhbik7Cit9CisKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zTWluaW11bikKIHsKICAgICBhdXRvIG9wdGlvbnMgPSBhZG9w
dE5TKFtbX1dLUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIGFsbG9jXSBpbml0XSk7
CkBAIC0xODcwLDYgKzE5MjIsMzkgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBHZXRB
c3NlcnRpb25TUElUaW1lb3V0KQogICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5l
bFJhbik7CiB9CiAKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgR2V0QXNzZXJ0aW9uTEEp
Cit7CisgICAgcmVzZXQoKTsKKworICAgIEFTU0VSVF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVz
dEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwgIiIsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KSk7
CisKKyAgICB1aW50OF90IGhhc2hbXSA9IHsgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwg
MHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgw
MywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwg
MHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCB9OworICAgIE5T
RGF0YSAqbnNIYXNoID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmhhc2ggbGVuZ3RoOnNpemVvZiho
YXNoKV07CisKKyAgICBhdXRvIG9wdGlvbnMgPSBhZG9wdE5TKFtbX1dLUHVibGljS2V5Q3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zIGFsbG9jXSBpbml0XSk7CisgICAgW29wdGlvbnMgc2V0UmVseWlu
Z1BhcnR5SWRlbnRpZmllcjpAIiJdOworCisgICAgYXV0byBwYW5lbCA9IGFkb3B0TlMoW1tfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsIGFsbG9jXSBpbml0XSk7CisgICAgW3BhbmVsIHNldE1vY2tD
b25maWd1cmF0aW9uOkB7IH1dOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtwYW5lbCBz
ZXREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbcGFuZWwgZ2V0QXNzZXJ0aW9uV2l0
aEhhc2g6bnNIYXNoIG9wdGlvbnM6b3B0aW9ucy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9X
S0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSAqcmVzcG9uc2UsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4gPSB0cnVlOworICAgICAgICBj
bGVhblVwS2V5Y2hhaW4oIiIpOworCisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKworICAg
ICAgICBFWFBFQ1RfTk9UX05VTEwocmVzcG9uc2UpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
W3Jlc3BvbnNlLnJhd0lkIGJhc2U2NEVuY29kZWRTdHJpbmdXaXRoT3B0aW9uczowXSwgIlNNU1hI
bmdGN2hFT3NFbEE3M0MzUlkrOGJSND0iKTsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzcG9uc2Uu
ZXh0ZW5zaW9ucyk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbcmVzcG9uc2UuYXV0aGVudGlj
YXRvckRhdGEgYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdLCAiNDdERVFwajhIQlNh
Ky9USW1XKzVKQ2V1UWVSa201Tk1wSldaRzNoU3VGVUZBQUFBQUE9PSIpOworICAgICAgICBFWFBF
Q1RfTk9UX05VTEwocmVzcG9uc2Uuc2lnbmF0dXJlKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KFtyZXNwb25zZS51c2VySGFuZGxlIGJhc2U2NEVuY29kZWRTdHJpbmdXaXRoT3B0aW9uczowXSwg
IkFBRUNBd1FGQmdjSUNRPT0iKTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxSYW4pOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418808</attachid>
            <date>2021-01-29 22:19:02 -0800</date>
            <delta_ts>2021-01-29 22:40:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221125-20210129221901.patch</filename>
            <type>text/plain</type>
            <size>44068</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE1MWY0MmY2ZDE4YWM2NWY2
ZGM1MmVlY2VkZGVlMGZiMDM1ZTU1YTYuLmJiZmQ4ZGE3OGY3MzBjNTNiYjYwZDFhZmI3NDk2Y2Q4
OGQzZDkyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMjEtMDEtMjkgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIE9wdGltaXpl
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBmb3IgbmF0aXZlIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMTI1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83MTUwOTE0MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1haW5seSBkb2VzIHRoZSBmb2xsb3dpbmcg
ZmV3IHRoaW5nczoKKyAgICAgICAgMS4gSXQgY29ubmVjdHMgdGhlIG5ldyBTUEkgd2l0aCB0aGUg
ZXhpc3RpbmcgbW9jayB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIHN1Y2ggdGhhdCB3ZSBjYW4gbW9j
ayB0ZXN0IGl0LgorICAgICAgICAyLiBJdCBhZGRzIGEgbmV3IG1vZGUgaW4gQXV0aGVudGljYXRv
ck1hbmFnZXIgdG8gY29ubmVjdCBpdCB0byB0aGUgbmV3IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxEZWxlZ2F0ZSBvYmplY3QuCisgICAgICAgIDMuIEl0IGFkc3MgYSBuZXcgU1BJIHRvIF9XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZTogLVtwYW5lbDpyZXF1ZXN0TEFDb250ZXh0Rm9y
VXNlclZlcmlmaWNhdGlvbldpdGhDb21wbGV0aW9uSGFuZGxlcjpdLAorICAgICAgICBhbmQgYWRk
cyBhIG5ldyBtZXRob2Qgd2l0aGluIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UgdG8gYWNjZXB0IGFuIExBQ29udGV4dCBmcm9tIHRoZSBjYWxsZXIgdG8gdW5sb2NrCisgICAg
ICAgIHRoZSBrZXljaGFpbi4KKyAgICAgICAgNC4gSXQgZW5hYmxlcyAtW19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwgY2FuY2VsXSB0byB1c2UgdGhlIG5ldyBjYW5jZWwgbWV0aG9kLgorCisgICAg
ICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmg6CisgICAgICAgIEFjY2VwdHMgYSBM
QUNvbnRleHQgb2JqZWN0LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50
aWNhdGlvblBhbmVsLmNwcDoKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbCk6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWw6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNhdGlvblBh
bmVsOjpjYW5jZWwgY29uc3QpOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVs
OjpzZXRNb2NrQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJB
dXRoZW50aWNhdGlvblBhbmVsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQ6OnJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uIGNvbnN0KToK
KyAgICAgICAgQWRkcyBuZXcgU1BJIGFuZCBtb2NraW5nLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLm1tOgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlIHNldExBQ29udGV4dDpdKToKKyAgICAgICAgQWNjZXB0cyBhIExBQ29udGV4dCBvYmplY3Qu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW06CisgICAgICAgICgtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgc2V0TW9ja0Nv
bmZpZ3VyYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsRm9yVGVzdGluZy5oOgorICAgICAgICBBZGRzIG5ldyBTUEkgYW5kIG1v
Y2tpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6
aGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpl
bmFibGVNb2Rlcm5XZWJBdXRoZW50aWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRp
Y2F0b3JNYW5hZ2VyOjplbmFibGVOYXRpdmVTdXBwb3J0KToKKyAgICAgICAgKFdlYktpdDo6QXV0
aGVudGljYXRvck1hbmFnZXI6OmF1dGhlbnRpY2F0b3JBZGRlZCk6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QcmVzZW50ZXIp
OgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6ZGlzcGF0Y2hQYW5lbENs
aWVudENhbGwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5oOgorICAgICAgICBBZGRzIGEgbmV3IG1vZGUgdG8gcG93ZXIg
dGhlIG5hdGl2ZSBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudDo6cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24gY29uc3Qp
OgorICAgICAgICBBY2NlcHRzIGEgTEFDb250ZXh0IG9iamVjdC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpNb2NrTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2VyKToK
KyAgICAgICAgQWRkcyBuZXcgbW9ja2luZyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oOgorICAg
ICAgICBBZGRzIHRoZSBuZXcgd2VhayBwYW5lbC4KKwogMjAyMS0wMS0yOSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBjb20uYXBwbGUucHJp
dmF0ZS5zZWN1cmVqaXQgZW50aXRsZW1lbnQgZm9yIEpJVENhZ2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25B
c3NlcnRpb25SZXNwb25zZS5oCmluZGV4IDAxNzAwODE4NjE3OTYyMjY0ZjhhNDBkY2E5YzY0MjMy
NmRhMGZmZDUuLjUyMzM1MzQ4MWUyYjZkYWRlODAzOGZkZGM4MmRlYTA4MzRkYmMwMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFz
c2VydGlvblJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtNDMsNiArNDMsOCBAQCBwdWJs
aWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZS0+ZGlzcGxheU5hbWUoKTsgfQogICAgIFJlZlB0cjxEYXRhPiB1c2VySGFuZGxl
KCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldExBQ29udGV4dChMQUNvbnRleHQgKmNvbnRleHQpIHsg
bV9yZXNwb25zZS0+c2V0TEFDb250ZXh0KGNvbnRleHQpOyB9CisKICAgICBXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UqIHJlc3BvbnNlKCkgeyByZXR1cm4gbV9yZXNwb25z
ZS5wdHIoKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwCmluZGV4IGZmZjMzMDE4YTIw
YTFjODdlMGMwN2Q0ODk0OGM3NzczNGE2N2E1ZTguLjNmYWFjODllNWQ1ZGZmOTI2YzQ4ZGRkNWUw
NzJlMTdmZDQ5ZjQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAog
I2luY2x1ZGUgIkFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCIKICNpbmNsdWRlICJB
dXRoZW50aWNhdG9yTWFuYWdlci5oIgorI2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9yTWFuYWdl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KIAog
bmFtZXNwYWNlIEFQSSB7CkBAIC00NSw2ICs0Niw3IEBAIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKQogICAgIDogbV9tYW5hZ2VyKG1ha2VVbmlxdWU8QXV0
aGVudGljYXRvck1hbmFnZXI+KCkpCiAgICAgLCBtX2NsaWVudChtYWtlVW5pcXVlUmVmPFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ+KCkpCiB7CisgICAgbV9tYW5hZ2VyLT5lbmFibGVOYXRp
dmVTdXBwb3J0KCk7CiB9CiAKIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OldlYkF1dGhlbnRpY2F0
aW9uUGFuZWwoY29uc3QgQXV0aGVudGljYXRvck1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdURjo6
U3RyaW5nJiBycElkLCBjb25zdCBUcmFuc3BvcnRTZXQmIHRyYW5zcG9ydHMsIENsaWVudERhdGFU
eXBlIHR5cGUpCkBAIC02OCwxMyArNzAsMzAgQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbDo6fldl
YkF1dGhlbnRpY2F0aW9uUGFuZWwoKSA9IGRlZmF1bHQ7CiB2b2lkIFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWw6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmIHJlcXVl
c3QsIENhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKG1fbWFuYWdlcik7CisgICAg
cmVxdWVzdC53ZWFrUGFuZWwgPSBtYWtlV2Vha1B0cigqdGhpcyk7CiAgICAgbV9tYW5hZ2VyLT5o
YW5kbGVSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAog
dm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpjYW5jZWwoKSBjb25zdAogewotICAgIGlmICht
X3dlYWtNYW5hZ2VyKQorICAgIGlmIChtX3dlYWtNYW5hZ2VyKSB7CiAgICAgICAgIG1fd2Vha01h
bmFnZXItPmNhbmNlbFJlcXVlc3QoKnRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV9tYW5hZ2VyLT5jYW5jZWwoKTsKK30KKwordm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVs
OjpzZXRNb2NrQ29uZmlndXJhdGlvbihXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBBU1NFUlQobV9tYW5hZ2VyKTsKKwor
ICAgIGlmICghbV9tYW5hZ2VyLT5pc01vY2soKSkgeworICAgICAgICBtX21hbmFnZXIgPSBtYWtl
VW5pcXVlPE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlcj4oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7
CisgICAgICAgIG1fbWFuYWdlci0+ZW5hYmxlTmF0aXZlU3VwcG9ydCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIHN0YXRpY19jYXN0PE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlcio+KG1f
bWFuYWdlci5nZXQoKSktPnNldFRlc3RDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlv
bikpOwogfQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OnNldENsaWVudChVbmlxdWVS
ZWY8V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudD4mJiBjbGllbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaApp
bmRleCA4MzYyMGRiNGIxZWM2ZmUyNzMzYzY2OWFmMjEyZTg5NjNkYTUxZjBjLi4zMmNhNWY2OWY5
OWFjYjFhMWFjODg0M2NmMzUyMDQ5Y2JhZTdhMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKQEAgLTM5LDYg
KzM5LDcgQEAgZW51bSBjbGFzcyBDbGllbnREYXRhVHlwZSA6IGJvb2w7CiBjbGFzcyBBdXRoZW50
aWNhdG9yUmVzcG9uc2U7CiAKIHN0cnVjdCBFeGNlcHRpb25EYXRhOworc3RydWN0IE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NjEsNiArNjIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViS2l0OjpX
ZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYsIENhbGxiYWNrJiYpOwogICAgIHZvaWQgY2Fu
Y2VsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNb2NrQ29uZmlndXJhdGlvbihXZWJDb3JlOjpNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYpOwogCiAgICAgY29uc3QgV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQuZ2V0
KCk7IH0KICAgICB2b2lkIHNldENsaWVudChVbmlxdWVSZWY8V2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAppbmRleCBhMzY4YzM3YWVlZmRl
MzE5MzBlZTE4M2I2ZTVmMThjYWJkMDJkYzU1Li40MGYyN2U3MzJjZmU4MWY2MzhhOGU3MzYxMjA2
ZWQ2ODYxNDg4ZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKQEAgLTUyLDYgKzUyLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGNvbnN0IHsgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpTdHJpbmcoKSk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uU291
cmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZSopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5k
bGVyKG51bGxwdHIpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0
aGVudGljYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6TG9jYWxBdXRoZW50aWNh
dG9yUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxl
cihXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvclBvbGljeTo6RGlzYWxsb3cpOyB9CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNv
bXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oCmluZGV4IDU2ODhh
ZjQxYmE1YjRkZDllMmRiOGJmOTdiOWM5MGUxNTFhY2E2NGIuLjY5YTA0MTAzZjdmNWI1NmE3ODll
ZjQ1Y2NlMjk1ZjY4M2I4YzU4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UuaApAQCAtMjgsNiArMjgsOCBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9C
RUdJTgogCitAY2xhc3MgTEFDb250ZXh0OworCiBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTEu
MCksIGlvcygxNC4wKSkKIEBpbnRlcmZhY2UgX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25S
ZXNwb25zZSA6IE5TT2JqZWN0CiAKQEAgLTM1LDYgKzM3LDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxF
KG1hY29zKDExLjApLCBpb3MoMTQuMCkpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IGNvcHkpIE5TU3RyaW5nICpkaXNwbGF5TmFtZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgY29weSkgTlNEYXRhICp1c2VySGFuZGxlOwogCistICh2b2lkKXNldExBQ29udGV4dDoo
TEFDb250ZXh0ICopY29udGV4dCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbQppbmRleCA5NzFmMjM2
NjQwMzA1ODM5MDM0ZTA5MTg0ODQ3Yjk3Y2UxZDlhYWExLi5mMjIyYTVhY2EwNTRjZjBlZWEzNGVi
NWEyOGQzNjNkMjkyYjdmY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5tbQpAQCAtNTQsNiArNTQsMTYgQEAgLSAoTlNEYXRhICopdXNlckhhbmRs
ZQogICAgIHJldHVybiB3cmFwcGVyKF9yZXNwb25zZS0+dXNlckhhbmRsZSgpKTsKIH0KIAorI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCisKKy0gKHZvaWQpc2V0TEFDb250ZXh0OihMQUNvbnRl
eHQgKiljb250ZXh0Cit7CisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBfcmVzcG9uc2UtPnNl
dExBQ29udGV4dChjb250ZXh0KTsKKyNlbmRpZgorfQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikK
ICNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgogCiAtIChBUEk6
Ok9iamVjdCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKaW5kZXggM2E3MmM1
NWY2Njg5NGE3MDhmMGFkZGFjNzg0NGExZjE0ZTc0YTBlOC4uODRmYmNjZGZmN2E5NzFjZjU3NDI3
ODEyNTMwODVkZWJmYmZhMTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCkBAIC0zNCw2
ICszNCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBAY2xhc3MgX1dLUHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zOwogQGNsYXNzIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2U7CiBAY2xhc3MgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbDsKK0BjbGFzcyBM
QUNvbnRleHQ7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxSZXN1bHQpIHsKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0VW5h
dmFpbGFibGUsCkBAIC03OCwxNyArNzksMTggQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
X1dLV2ViQXV0aGVudGljYXRpb25Tb3VyY2UpIHsKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblNv
dXJjZUV4dGVybmFsLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkp
OwogCi0vLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzcxNTA5MTQxPiBPcHRpbWl6ZSB0aGUgZGVs
ZWdhdGUgZm9yIHRoZSBBdXRoZW50aWNhdGlvblNlcnZpY2UuZnJhbWV3b3JrLgogQHByb3RvY29s
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSA8TlNPYmplY3Q+CiAKIEBvcHRpb25h
bAogCi0tICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgdXBk
YXRlV2ViQXV0aGVudGljYXRpb25QYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZSl1cGRhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwgaW9zKDEzLjQpKTsKLS0g
KHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBkaXNtaXNzV2Vi
QXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQ6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0
KXJlc3VsdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1LjQpLCBpb3MoMTMuNCkpOwotLSAo
dm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHJlcXVlc3RQSU5X
aXRoUmVtYWluaW5nUmV0cmllczooTlNVSW50ZWdlcilyZXRyaWVzIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjE1LjQpLCBpb3MoMTMuNCkpOworLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbCAqKXBhbmVsIHVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6KF9XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGUpdXBkYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTEuMCksIGlvcygxNC4wKSk7CistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsICopcGFuZWwgcmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOihOU1VJbnRlZ2VyKXJl
dHJpZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25I
YW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiAtICh2b2lk
KXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9u
UmVzcG9uc2U6KE5TQXJyYXkgPCBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
ICo+ICopcmVzcG9uc2VzIHNvdXJjZTooX1dLV2ViQXV0aGVudGljYXRpb25Tb3VyY2Upc291cmNl
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlv
blJlc3BvbnNlICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEu
MCksIGlvcygxNC4wKSk7Ci0tICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
ICopcGFuZWwgZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgcG9saWN5KSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpOwor
LSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHJlcXVlc3RM
QUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShMQUNvbnRleHQgKmNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy8vIEZJWE1FOiA8cmRhcjov
L3Byb2JsZW0vNzE1MDk4NDg+IERlcHJlY2F0ZSB0aGUgZm9sbG93aW5nIGRlbGVnYXRlcy4KKy0g
KHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBkZWNpZGVQb2xp
Y3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9X
S0xvY2FsQXV0aGVudGljYXRvclBvbGljeSBwb2xpY3kpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CistICh2b2lkKXBhbmVsOihfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxXaXRoUmVzdWx0OihfV0tXZWJBdXRoZW50aWNhdGlvblJlc3VsdClyZXN1bHQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsKIEBlbmQKIAogV0tfQ0xBU1NfQVZBSUxB
QkxFKG1hY29zKDEwLjE1LjQpLCBpb3MoMTMuNCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
CmluZGV4IDMyZjEwZTIzODQyODdkZDBhZGZiZjM2ZDVmNGZiYWNhODcyYmJiZDEuLjk3MDZkNWIy
MWFiYTM4OGUwZGJmY2ZiYmVhY2M5NzBkMmE4NDE5ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCkBAIC00NCw2ICs0NCw3IEBACiAjaW1wb3J0ICJfV0tQdWJsaWNLZXlDcmVkZW50aWFs
VXNlckVudGl0eS5oIgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5oPgorI2ltcG9ydCA8
V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmg+CkBAIC0zNDcsNyArMzQ4LDcgQEAgLSAo
dm9pZCltYWtlQ3JlZGVudGlhbFdpdGhIYXNoOihOU0RhdGEgKiloYXNoIG9wdGlvbnM6KF9XS1B1
YmxpY0tleUNyZWRlbnRpYWxDcmUKICAgICAgICAgICAgIGhhbmRsZXIobmlsLCBbTlNFcnJvciBl
cnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZv
Om5pbF0pOwogICAgICAgICB9KTsKICAgICB9OwotICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7
IHZlY3RvckZyb21OU0RhdGEoaGFzaCksIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZl
cnRUb0NvcmVDcmVhdGlvbk9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2Vi
S2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwg
V1RGOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygpIH0sIFdURk1vdmUoY2FsbGJhY2spKTsK
KyAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyB2ZWN0b3JGcm9tTlNEYXRhKGhhc2gpLCBbX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlQ3JlYXRpb25PcHRpb25zV2l0aE9w
dGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgeyB9LCB0cnVlLCBTdHJp
bmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAjZW5kaWYKIH0KIApAQCAtMzk0
LDcgKzM5NSw3IEBAIC0gKHZvaWQpZ2V0QXNzZXJ0aW9uV2l0aEhhc2g6KE5TRGF0YSAqKWhhc2gg
b3B0aW9uczooX1dLUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlCiAgICAgICAgICAgICBoYW5kbGVy
KG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9y
VW5rbm93biB1c2VySW5mbzpuaWxdKTsKICAgICAgICAgfSk7CiAgICAgfTsKLSAgICBfcGFuZWwt
PmhhbmRsZVJlcXVlc3QoeyB2ZWN0b3JGcm9tTlNEYXRhKGhhc2gpLCBbX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlUmVxdWVzdE9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25z
XSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWls
YWJsZSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygpIH0sIFdURk1v
dmUoY2FsbGJhY2spKTsKKyAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyB2ZWN0b3JGcm9tTlNE
YXRhKGhhc2gpLCBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlUmVxdWVz
dE9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCB7
IH0sIHRydWUsIFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKICNlbmRp
ZgogfQogCkBAIC00MDcsNiArNDA4LDIxIEBAICsgKEJPT0wpaXNVc2VyVmVyaWZ5aW5nUGxhdGZv
cm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlCiAjZW5kaWYKIH0KIAorLSAodm9pZClzZXRNb2NrQ29u
ZmlndXJhdGlvbjooTlNEaWN0aW9uYXJ5ICopY29uZmlndXJhdGlvbgoreworI2lmIEVOQUJMRShX
RUJfQVVUSE4pCisgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjo6TG9jYWxDb25maWd1cmF0aW9uIGxvY2FsQ29uZmlndXJhdGlvbjsKKyAgICBsb2NhbENvbmZp
Z3VyYXRpb24udXNlclZlcmlmaWNhdGlvbiA9IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb246OlVzZXJWZXJpZmljYXRpb246OlllczsKKyAgICBpZiAoY29uZmlndXJh
dGlvbltAInByaXZhdGVLZXlCYXNlNjQiXSkKKyAgICAgICAgbG9jYWxDb25maWd1cmF0aW9uLnBy
aXZhdGVLZXlCYXNlNjQgPSBjb25maWd1cmF0aW9uW0AicHJpdmF0ZUtleUJhc2U2NCJdOworCisg
ICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtb2NrQ29uZmln
dXJhdGlvbjsKKyAgICBtb2NrQ29uZmlndXJhdGlvbi5sb2NhbCA9IFdURk1vdmUobG9jYWxDb25m
aWd1cmF0aW9uKTsKKworICAgIF9wYW5lbC0+c2V0TW9ja0NvbmZpZ3VyYXRpb24oV1RGTW92ZSht
b2NrQ29uZmlndXJhdGlvbikpOworI2VuZGlmCit9CisKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQog
I3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsRm9yVGVzdGluZy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxGb3JUZXN0aW5nLmgKaW5kZXggMTliOGI3ZjcyMjk1NmQw
NWMwYTAxMjEwYTVjYmRhYjY0ZmY2NGVlYi4uMTRlYmZlMWU2Y2MzNjliMzFlNmZiOTc3YWJjNDgz
MjZjMmFhODU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxGb3JUZXN0aW5nLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxGb3JUZXN0aW5n
LmgKQEAgLTM1LDggKzM1LDEwIEBAIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnM7CiBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSkKIEBpbnRlcmZhY2UgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAoV0tUZXN0aW5nKQog
Ci0vLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzcxNTA5NzE0PiBJbnRyb2R1Y2VzIG1vY2sgdGVz
dGluZy4KICsgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMpY29u
dmVydFRvQ29yZUNyZWF0aW9uT3B0aW9uc1dpdGhPcHRpb25zOihfV0tQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zICopb3B0aW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogKyAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zKWNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9uc1dpdGhPcHRpb25zOihf
V0tQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgKilvcHRpb25zIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy8vIEZvciBkZXRh
aWxzIG9mIGNvbmZpZ3VyYXRpb24sIHJlZmVyIHRvIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uaC4KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0RpY3Rpb25hcnkgKm1v
Y2tDb25maWd1cmF0aW9uOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5j
cHAKaW5kZXggZGI3YWIyMTNjZGY0NDc5ZDcwMWM1ZjUxMzk1YTZjOGNjYmIxMGFhNi4uNWE2MDk3
NjA4MTNjODNjNzllM2UwODg5MDkzODQxZTcxY2E1ODNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmNwcApAQCAtMTY1LDEwICsxNjUsOSBAQCB2b2lkIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyOjpoYW5kbGVSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiBkYXRh
LCBDYQogICAgIC8vIDIuIEFzayBjbGllbnRzIHRvIHNob3cgYXBwcm9wcmlhdGUgVUkgaWYgYW55
IGFuZCB0aGVuIHN0YXJ0IHRoZSByZXF1ZXN0LgogICAgIGluaXRUaW1lT3V0VGltZXIoKTsKIAot
ICAgIC8vIEZJWE1FPHJkYXI6Ly9wcm9ibGVtLzcwODIyODM0PjogVGhlIG1fd2ViQXV0aGVudGlj
YXRpb25Nb2Rlcm5FbmFibGVkIGlzIHVzZWQgdG8gZGV0ZXJtaW5lCi0gICAgLy8gd2hldGhlciBv
ciBub3Qgd2UgYXJlIGluIHRoZSBVSVByb2Nlc3MuCisgICAgLy8gRklYTUU8cmRhcjovL3Byb2Js
ZW0vNzA4MjI4MzQ+OiBUaGUgbV9tb2RlIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Ig
bm90IHdlIGFyZSBpbiB0aGUgVUlQcm9jZXNzLgogICAgIC8vIElmIHNvLCBjb250aW51ZSB0byB0
aGUgb2xkIHJvdXRlLiBPdGhlcndpc2UsIHVzZSB0aGUgbW9kZXJuIFdlYkF1dGhuIHByb2Nlc3Mg
d2F5LgotICAgIGlmICghbV93ZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQpIHsKKyAgICBp
ZiAobV9tb2RlID09IE1vZGU6OkNvbXBhdGlibGUpIHsKICAgICAgICAgcnVuUGFuZWwoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwOSw3ICsyMDgsMTIgQEAgdm9pZCBBdXRoZW50aWNh
dG9yTWFuYWdlcjo6Y2FuY2VsKCkKIAogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6ZW5hYmxl
TW9kZXJuV2ViQXV0aGVudGljYXRpb24oKQogewotICAgIG1fd2ViQXV0aGVudGljYXRpb25Nb2Rl
cm5FbmFibGVkID0gdHJ1ZTsKKyAgICBtX21vZGUgPSBNb2RlOjpNb2Rlcm47Cit9CisKK3ZvaWQg
QXV0aGVudGljYXRvck1hbmFnZXI6OmVuYWJsZU5hdGl2ZVN1cHBvcnQoKQoreworICAgIG1fbW9k
ZSA9IE1vZGU6Ok5hdGl2ZTsKIH0KIAogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y2xlYXJT
dGF0ZUFzeW5jKCkKQEAgLTIzNiw3ICsyNDAsNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjphdXRoZW50aWNhdG9yQWRkZWQoUmVmPEF1dGhlbnRpY2F0b3I+JiYgYXV0aGVudGljYXRvcgog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgYXV0aGVudGljYXRvci0+c2V0T2Jz
ZXJ2ZXIoKnRoaXMpOwogICAgIGF1dGhlbnRpY2F0b3ItPmhhbmRsZVJlcXVlc3QobV9wZW5kaW5n
UmVxdWVzdERhdGEpOwotICAgIGF1dGhlbnRpY2F0b3ItPnNldFdlYkF1dGhlbnRpY2F0aW9uTW9k
ZXJuRW5hYmxlZChtX3dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCk7CisgICAgYXV0aGVu
dGljYXRvci0+c2V0V2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkKG1fbW9kZSAhPSBNb2Rl
OjpDb21wYXRpYmxlKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXV0aGVudGljYXRvcnMuYWRk
KFdURk1vdmUoYXV0aGVudGljYXRvcikpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBh
ZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zNTQsMTIgKzM1OCwxNCBAQCB2b2lkIEF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjpkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3IoQ29tcGxl
dGlvbkhhbmRsZXI8dgogCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1ZXN0TEFDb250
ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExBQ29udGV4dCAq
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoIW1fcHJlc2VudGVyKSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgIGlmIChtX3ByZXNlbnRlcikgewor
ICAgICAgICBtX3ByZXNlbnRlci0+cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24o
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9wcmVzZW50ZXItPnJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBkaXNwYXRjaFBhbmVsQ2xpZW50Q2FsbChbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IEFQSTo6
V2ViQXV0aGVudGljYXRpb25QYW5lbCYgcGFuZWwpIG11dGFibGUgeworICAgICAgICBwYW5lbC5j
bGllbnQoKS5yZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbihXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6
OmNhbmNlbFJlcXVlc3QoKQpAQCAtNDQ0LDEwICs0NTAsMTQgQEAgdm9pZCBBdXRoZW50aWNhdG9y
TWFuYWdlcjo6cnVuUGFuZWwoKQogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cnVuUHJlc2Vu
dGVyKCkKIHsKICAgICAvLyBHZXQgYXZhaWxhYmxlIHRyYW5zcG9ydHMgYW5kIHN0YXJ0IGRpc2Nv
dmVyaW5nIGF1dGhlbnRpY2F0b3JzIG9uIHRoZW0uCi0gICAgYXV0byYgb3B0aW9ucyA9IG1fcGVu
ZGluZ1JlcXVlc3REYXRhLm9wdGlvbnM7CiAgICAgYXV0byB0cmFuc3BvcnRzID0gZ2V0VHJhbnNw
b3J0cygpOwogICAgIHN0YXJ0RGlzY292ZXJ5KHRyYW5zcG9ydHMpOwogCisgICAgLy8gRm9yIG5h
dGl2ZSBBUEkgc3VwcG9ydCwgd2Ugc2tpcCB0aGUgVUkgcGFydC4gVGhlIG5hdGl2ZSBBUEkgd2ls
bCBoYW5kbGUgdGhhdC4KKyAgICBpZiAobV9tb2RlID09IE1vZGU6Ok5hdGl2ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byYgb3B0aW9ucyA9IG1fcGVuZGluZ1JlcXVlc3REYXRhLm9wdGlv
bnM7CiAgICAgbV9wcmVzZW50ZXIgPSBtYWtlVW5pcXVlPEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJD
b29yZGluYXRvcj4oKnRoaXMsIGdldFJwSWQob3B0aW9ucyksIHRyYW5zcG9ydHMsIGdldENsaWVu
dERhdGFUeXBlKG9wdGlvbnMpKTsKIH0KIApAQCAtNDg4LDE1ICs0OTgsMTkgQEAgYXV0byBBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6Z2V0VHJhbnNwb3J0cygpIGNvbnN0IC0+IFRyYW5zcG9ydFNldAog
CiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpkaXNwYXRjaFBhbmVsQ2xpZW50Q2FsbChGdW5j
dGlvbjx2b2lkKGNvbnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYpPiYmIGNhbGwpIGNv
bnN0CiB7Ci0gICAgaWYgKGF1dG8qIHBhbmVsID0gbV9wZW5kaW5nUmVxdWVzdERhdGEucGFuZWwu
Z2V0KCkpIHsKLSAgICAgICAgLy8gQ2FsbCBkZWxlZ2F0ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3Ag
dG8gcHJldmVudCBjbGllbnRzJyByZWVudHJhbmNlIHRoYXQgd291bGQgcG90ZW50aWFsbHkgbW9k
aWZ5IHRoZSBzdGF0ZQotICAgICAgICAvLyBvZiB0aGUgY3VycmVudCBydW4gbG9vcCBpbiB1bmV4
cGVjdGVkIHdheXMuCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1BhbmVs
ID0gbWFrZVdlYWtQdHIoKnBhbmVsKSwgY2FsbCA9IFdURk1vdmUoY2FsbCldICgpIHsKLSAgICAg
ICAgICAgIGlmICghd2Vha1BhbmVsKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIGNhbGwoKndlYWtQYW5lbCk7Ci0gICAgICAgIH0pOwotICAgIH0KKyAgICBhdXRvIHdlYWtQ
YW5lbCA9IG1fcGVuZGluZ1JlcXVlc3REYXRhLndlYWtQYW5lbDsKKyAgICBpZiAoIXdlYWtQYW5l
bCkKKyAgICAgICAgd2Vha1BhbmVsID0gbWFrZVdlYWtQdHIoKm1fcGVuZGluZ1JlcXVlc3REYXRh
LnBhbmVsLmdldCgpKTsKKyAgICBpZiAoIXdlYWtQYW5lbCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gQ2FsbCBkZWxlZ2F0ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3AgdG8gcHJldmVudCBjbGll
bnRzJyByZWVudHJhbmNlIHRoYXQgd291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBzdGF0ZQor
ICAgIC8vIG9mIHRoZSBjdXJyZW50IHJ1biBsb29wIGluIHVuZXhwZWN0ZWQgd2F5cy4KKyAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtQYW5lbCwgY2FsbCA9IFdURk1vdmUoY2FsbCld
ICgpIHsKKyAgICAgICAgaWYgKCF3ZWFrUGFuZWwpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGNhbGwoKndlYWtQYW5lbCk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRvck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKaW5kZXggMWVlNGFiNDk1MzFiZWU5NzQx
NDVjNTQ4Nzg1NDIwNDE2N2VlMzYxZS4uNDE4Mjk1YmUzZDZjM2IyOWQyNDMyNzUxYTQxMmUzNTZm
ODEyNTU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCkBAIC03MSw2ICs3MSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNNb2NrKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIHZvaWQgZW5hYmxlTW9kZXJuV2ViQXV0aGVudGljYXRpb24oKTsKKyAgICB2
b2lkIGVuYWJsZU5hdGl2ZVN1cHBvcnQoKTsKIAogcHJvdGVjdGVkOgogICAgIFJ1bkxvb3A6OlRp
bWVyPEF1dGhlbnRpY2F0b3JNYW5hZ2VyPiYgcmVxdWVzdFRpbWVPdXRUaW1lcigpIHsgcmV0dXJu
IG1fcmVxdWVzdFRpbWVPdXRUaW1lcjsgfQpAQCAtNzksNiArODAsMTIgQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgaW52b2tlUGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKFJlc3BvbmQmJik7CiAKIHBy
aXZhdGU6CisgICAgZW51bSBjbGFzcyBNb2RlIHsKKyAgICAgICAgQ29tcGF0aWJsZSwKKyAgICAg
ICAgTW9kZXJuLAorICAgICAgICBOYXRpdmUsCisgICAgfTsKKwogICAgIC8vIEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlOjpPYnNlcnZlcgogICAgIHZvaWQgYXV0aGVudGljYXRvckFkZGVk
KFJlZjxBdXRoZW50aWNhdG9yPiYmKSBmaW5hbDsKICAgICB2b2lkIHNlcnZpY2VTdGF0dXNVcGRh
dGVkKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKSBmaW5hbDsKQEAgLTExNyw3ICsxMjQsNyBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZp
Y2U+PiBtX3NlcnZpY2VzOwogICAgIEhhc2hTZXQ8UmVmPEF1dGhlbnRpY2F0b3I+PiBtX2F1dGhl
bnRpY2F0b3JzOwogCi0gICAgYm9vbCBtX3dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCB7
IGZhbHNlIH07CisgICAgTW9kZSBtX21vZGUgeyBNb2RlOjpDb21wYXRpYmxlIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQuaAppbmRleCA5NzZjYTY5ZDBhZjgxYzQ1YmZhZjg2Mjc1Mzcz
OTQ5ZGI3ZDZiYzRlLi4xYmU2YTU2MmRjNThjYjY5MWY2YWEzOTZlMDJhZWMzZTQ5YzE0ZGJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dC5oCkBAIC01Miw2ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0UGluKHVpbnQ2
NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGNvbnN0
IGZpbmFsOwogICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBXZWJBdXRoZW50aWNhdGlv
blNvdXJjZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UqKT4mJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JMb2NhbEF1dGhlbnRpY2F0b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMb2NhbEF1dGhlbnRp
Y2F0b3JQb2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMQUNvbnRleHRG
b3JVc2VyVmVyaWZpY2F0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYm
KSBjb25zdCBmaW5hbDsKIAogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKm1fcGFuZWw7
CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4g
PiBtX2RlbGVnYXRlOwpAQCAtNjIsNiArNjMsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHBh
bmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdSZXRyaWVzQ29tcGxldGlvbkhhbmRsZXIgOiAxOwog
ICAgICAgICBib29sIHBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VTb3VyY2VDb21wbGV0aW9u
SGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgcGFuZWxEZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhl
bnRpY2F0b3JDb21wbGV0aW9uSGFuZGxlciA6IDE7CisgICAgICAgIGJvb2wgcGFuZWxSZXF1ZXN0
TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbkNvbXBsZXRpb25IYW5kbGVyIDogMTsKICAgICB9
IG1fZGVsZWdhdGVNZXRob2RzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0KaW5kZXggODM3Njk3MmMzNTc2NzY5YjExMDVi
Mjg1MGI0YzZjMmMxZWE0YTI2Ni4uYTA4OTRhMjBmOTFmZmMzNzdjNDQ1MzYwZTZmMTM4OTgyMGE5
YjNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50Lm1tCkBAIC01MCw2ICs1MCw3IEBAIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQoX1dLV2ViQXV0aGVudGljYXRpb25QCiAg
ICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJpZXND
b21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHBhbmVsOnJlcXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczpjb21wbGV0aW9uSGFuZGxlcjop
XTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFNlbGVjdEFzc2VydGlvblJlc3BvbnNlU291
cmNlQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZTpzb3VyY2U6Y29tcGxldGlvbkhhbmRs
ZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxEZWNpZGVQb2xpY3lGb3JMb2NhbEF1
dGhlbnRpY2F0b3JDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHBhbmVsOmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcldpdGhD
b21wbGV0aW9uSGFuZGxlcjopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFJlcXVlc3RM
QUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpyZXF1ZXN0TEFDb250ZXh0Rm9yVXNl
clZlcmlmaWNhdGlvbldpdGhDb21wbGV0aW9uSGFuZGxlcjopXTsKIH0KIAogUmV0YWluUHRyPGlk
IDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudDo6ZGVsZWdhdGUoKQpAQCAtMjE3LDYgKzIxOCwyOCBAQCB2b2lkIFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQ6OmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihD
b21wbGV0aW9uSAogICAgIH0pLmdldCgpXTsKIH0KIAordm9pZCBXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50OjpyZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKExBQ29udGV4dCAqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sK
KyAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnBhbmVsUmVxdWVzdExBQ29udGV4dEZvclVzZXJW
ZXJpZmljYXRpb25Db21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZGVsZWdhdGUg
PSBtX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUu
Z2V0KCksIEBzZWxlY3RvcihwYW5lbDpyZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlv
bldpdGhDb21wbGV0aW9uSGFuZGxlcjopKTsKKyAgICBbZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCBy
ZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbldpdGhDb21wbGV0aW9uSGFuZGxlcjpt
YWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShMQUNvbnRleHQgKmNvbnRleHQpIG11dGFi
bGUgeworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVk
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyAgICB9
KS5nZXQoKV07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgKaW5kZXgg
ZmY5MGQzZGU0MzQ5YzlhMzM4NWMyMGMwNTk3MjliOGUyMmViZTJlNS4uOTRlNGE0ZDdlNGY4ZTE2
ZjIwZWNiOTRhN2ViMDQ4ZmU2MjkzNThiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxD
b25uZWN0aW9uLmgKQEAgLTM4LDYgKzM4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZv
aWQgdmVyaWZ5VXNlcihjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpDbGllbnREYXRhVHlwZSwgU2Vj
QWNjZXNzQ29udHJvbFJlZiwgVXNlclZlcmlmaWNhdGlvbkNhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgdmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmLCBMQUNvbnRleHQgKiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChVc2VyVmVyaWZpY2F0aW9uKT4mJikgZmluYWw7CiAgICAgUmV0YWlu
UHRyPFNlY0tleVJlZj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNl
Y0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNl
Y0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QgZmluYWw7CiAgICAgdm9pZCBnZXRBdHRlc3RhdGlv
bihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5TRGF0YSAqaGFzaCwgQXR0ZXN0YXRpb25D
YWxsYmFjayYmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGZpbHRlclJlc3BvbnNlcyhWZWN0b3I8
UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JikgY29uc3QgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KaW5kZXggMmZiYWEz
NDE1MGY1ZTBmM2UyYWM2MmVhYWY2NjY3ZTM3NmRmZjFiYS4uNjIyZThjYTk1OGM1ZGQ5N2Q1OTE3
OWVjNmE4MzE3Yzg0Y2E2NjI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVj
dGlvbi5tbQpAQCAtNjcsNiArNjcsMjcgQEAgdm9pZCBNb2NrTG9jYWxDb25uZWN0aW9uOjp2ZXJp
ZnlVc2VyKGNvbnN0IFN0cmluZyYsIENsaWVudERhdGFUeXBlLCBTZWNBY2Nlc3NDb24KICAgICB9
KTsKIH0KIAordm9pZCBNb2NrTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2VyKFNlY0FjY2Vzc0Nv
bnRyb2xSZWYsIExBQ29udGV4dCAqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJWZXJpZmlj
YXRpb24pPiYmIGNhbGxiYWNrKQoreworICAgIC8vIE1vY2sgYXN5bmMgb3BlcmF0aW9ucy4KKyAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbmZpZ3VyYXRpb24gPSBtX2NvbmZpZ3VyYXRp
b24sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIEFT
U0VSVChjb25maWd1cmF0aW9uLmxvY2FsKTsKKworICAgICAgICBVc2VyVmVyaWZpY2F0aW9uIHVz
ZXJWZXJpZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uOjpObzsKKyAgICAgICAgc3dpdGNoIChj
b25maWd1cmF0aW9uLmxvY2FsLT51c2VyVmVyaWZpY2F0aW9uKSB7CisgICAgICAgIGNhc2UgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6VXNlclZlcmlmaWNhdGlvbjo6Tm86Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpVc2VyVmVyaWZpY2F0aW9uOjpZZXM6CisgICAgICAgICAgICB1c2VyVmVyaWZp
Y2F0aW9uID0gVXNlclZlcmlmaWNhdGlvbjo6WWVzOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6VXNlclZlcmlmaWNh
dGlvbjo6Q2FuY2VsOgorICAgICAgICAgICAgdXNlclZlcmlmaWNhdGlvbiA9IFVzZXJWZXJpZmlj
YXRpb246OkNhbmNlbDsKKyAgICAgICAgfQorCisgICAgICAgIGNhbGxiYWNrKHVzZXJWZXJpZmlj
YXRpb24pOworICAgIH0pOworfQorCiBSZXRhaW5QdHI8U2VjS2V5UmVmPiBNb2NrTG9jYWxDb25u
ZWN0aW9uOjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShMQUNvbnRleHQgKiwgU2VjQWNjZXNz
Q29udHJvbFJlZiwgY29uc3QgU3RyaW5nJiBzZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFw
cGxpY2F0aW9uVGFnKSBjb25zdAogewogICAgIEFTU0VSVChtX2NvbmZpZ3VyYXRpb24ubG9jYWwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCmluZGV4IGQz
ODYzN2U2Njg3Mjc0MDMyNzg1NmU4OTI5Mjc4MjIyNGNkMTJjYjYuLjE2NzViZjBiZmNjMGNiNjI2
NTU2ZDY3YjIwODYwOGIxMDRlNWRiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dGlvblJlcXVlc3REYXRhLmgKQEAgLTU1LDYgKzU1LDcgQEAgc3RydWN0IFdlYkF1dGhlbnRpY2F0
aW9uUmVxdWVzdERhdGEgewogCiAgICAgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmU7CiAgICAg
U3RyaW5nIGNhY2hlZFBpbjsgLy8gT25seSB1c2VkIHRvIGltcHJvdmUgTkZDIENsaWVudCBQSU4g
ZXhwZXJpZW5jZS4KKyAgICBXZWFrUHRyPEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbD4gd2Vh
a1BhbmVsOwogfTsKIAogV2ViQ29yZTo6Q2xpZW50RGF0YVR5cGUgZ2V0Q2xpZW50RGF0YVR5cGUo
Y29uc3QgVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
LCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXgg
YzJiZmM0N2Y2YTc3OTBhYWU4ZjMwN2QzYzU4MGRmNTkwYWIyZjk5OS4uYWYzZjkxOTY2YzM3MWYw
OGVmNGRlODEwMTc1MGM4OGU0ZWYyM2E2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcApAQCAtNTcsMTIgKzU3LDEyIEBAIFdlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojp+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkoKQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjptYWtlQ3Jl
ZGVudGlhbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJZCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5m
bywgVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyYmIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxl
dGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewotICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhh
c2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBtYWtlV2Vha1B0cihtX3dlYlBhZ2VQcm94eSksIFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBHbG9iYWxGcmFt
ZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJhbWVJZCB9LCBXVEZN
b3ZlKGZyYW1lSW5mbyksIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCkgfSwgV1RGTW92
ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUo
b3B0aW9ucyksIG1ha2VXZWFrUHRyKG1fd2ViUGFnZVByb3h5KSwgV2ViQXV0aGVudGljYXRpb25Q
YW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEdsb2JhbEZyYW1lSWRlbnRpZmllciB7
IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlkIH0sIFdURk1vdmUoZnJhbWVJbmZv
KSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGhh
bmRsZXIpKTsKIH0KIAogdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0
QXNzZXJ0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlkLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJ
bmZvLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMmJiBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKLSAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZSho
YXNoKSwgV1RGTW92ZShvcHRpb25zKSwgbWFrZVdlYWtQdHIobV93ZWJQYWdlUHJveHkpLCBXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgR2xvYmFsRnJh
bWVJZGVudGlmaWVyIHsgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksIGZyYW1lSWQgfSwgV1RG
TW92ZShmcmFtZUluZm8pLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0cmluZygpIH0sIFdURk1v
dmUoaGFuZGxlcikpOworICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3Zl
KG9wdGlvbnMpLCBtYWtlV2Vha1B0cihtX3dlYlBhZ2VQcm94eSksIFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIg
eyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJhbWVJZCB9LCBXVEZNb3ZlKGZyYW1lSW5m
byksIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZSho
YW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Omhh
bmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmIGRhdGEsIFJlcXVlc3RD
b21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAppbmRleCA5ZDA4OGU3MDIwN2VkYjYxMzA4Yzg1YzcxMTJkMzVkZWNiOTk5ZjA2Li41MWU3M2E2
ZjJmOTcyYzc2NjNlMjg2MDAyZDQ5YTQ3ZDM4YzFkZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTY5LDEyICs2OSwxMiBAQCB2b2lkIFdlYkF1dGhuQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgYwog
CiB2b2lkIFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWFrZUNyZWRlbnRpYWwoVmVj
dG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYm
IG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhh
bmRsZXImJiBoYW5kbGVyKQogewotICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBX
VEZNb3ZlKG9wdGlvbnMpLCBudWxscHRyLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpV
bmF2YWlsYWJsZSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCB7IH0sIHByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSwgU3RyaW5nKCkgfSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7
IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG51bGxwdHIsIFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIHsgfSwg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGhhbmRs
ZXIpKTsKIH0KIAogdm9pZCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldEFzc2Vy
dGlvbihWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMmJiBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKLSAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZSho
YXNoKSwgV1RGTW92ZShvcHRpb25zKSwgbnVsbHB0ciwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgeyB9LCBwcm9jZXNzaW5n
VXNlckdlc3R1cmUsIFN0cmluZygpIH0sIFdURk1vdmUoaGFuZGxlcikpOworICAgIGhhbmRsZVJl
cXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBudWxscHRyLCBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0
LCB7IH0sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92
ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpo
YW5kbGVSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiBkYXRhLCBSZXF1ZXN0
Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJkMWNlMzI0Y2ExYjM5ZTE0ZjgwMTc3YWNmYTM5OWYx
ZTRlZjQwZDIuLmJjNTgyMGMxNWIzNzRlZmEwYWEyOGRmN2M3YTgzNWJlMWIxMjk1NDEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAyMS0wMS0yOSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJBdXRobl0gT3B0aW1pemUgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVn
YXRlIGZvciBuYXRpdmUgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjExMjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxNTA5MTQxPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAg
ICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOnNlbGVjdEFz
c2VydGlvblJlc3BvbnNlOnNvdXJjZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1b
VGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBwYW5lbDpyZXF1ZXN0TEFDb250ZXh0
Rm9yVXNlclZlcmlmaWNhdGlvbldpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OldlYkNvcmU6OnJlc2V0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorCiAyMDIxLTAxLTI5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CiAKICAgICAgICAgVXBncmFkZSBtb3Rpb25tYXJrMS4xLnBsYW4gdG8gcjI3MjA0NApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDA1ZGI0ZmYxZTQ1YTc4MGVkZjY2
MTIyMmJiNjg1NzdkNjc0Zjc3ZTIuLjMzYWM5NTljMThlMzVmNGE0MjljZDE0ODY2ODczZTMyMTdh
NjRjYTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTc4LDYgKzc4
LDcgQEAgc3RhdGljIFN0cmluZyB0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0ID0KICAgICAiUlE9
PSI7CiBzdGF0aWMgU3RyaW5nIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0ID0gIm9tSnBaRW9B
QVFJREJBVUdCd2dKWkc1aGJXVmtTbTlvYmc9PSI7IC8vIHsgImlkIjogaCcwMDAxMDIwMzA0MDUw
NjA3MDgwOScsICJuYW1lIjogIkpvaG4iIH0KIHN0YXRpYyBTdHJpbmcgd2ViQXV0aGVudGljYXRp
b25QYW5lbFNlbGVjdGVkQ3JlZGVudGlhbE5hbWU7CitzdGF0aWMgYm9vbCBsYUNvbnRleHRSZXF1
ZXN0ZWQgPSBmYWxzZTsKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERl
bGVnYXRlIDogTlNPYmplY3QgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4KIEBl
bmQKQEAgLTE1MCw2ICsxNTEsOSBAQCAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsICopcGFuZWwgcmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOgogLSAodm9pZClw
YW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHNlbGVjdEFzc2VydGlvblJl
c3BvbnNlOihOU0FycmF5IDwgX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAq
PiAqKXJlc3BvbnNlcyBzb3VyY2U6KF9XS1dlYkF1dGhlbnRpY2F0aW9uU291cmNlKXNvdXJjZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25S
ZXNwb25zZSAqKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGlmIChyZXNwb25zZXMuY291bnQg
PT0gMSkgeworICAgICAgICBhdXRvIGxhQ29udGV4dCA9IGFkb3B0TlMoW1tMQUNvbnRleHQgYWxs
b2NdIGluaXRdKTsKKyAgICAgICAgW3Jlc3BvbnNlc1swXSBzZXRMQUNvbnRleHQ6bGFDb250ZXh0
LmdldCgpXTsKKwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXNbMF0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTU3LDggKzE2MSwxMyBAQCAtICh2b2lkKXBhbmVsOihf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6
KE5TQXJyYQogICAgIC8vIFJlc3BvbnNlcyByZXR1cm5lZCBmcm9tIExvY2FsQXV0aGVudGljYXRv
ciBpcyBpbiB0aGUgb3JkZXIgb2YgTFJVLiBUaGVyZWZvcmUsIHdlIHVzZSB0aGUgbGFzdCBpdGVt
IHRvIHBvcHVsYXRlIGl0IHRvCiAgICAgLy8gdGhlIGZpcnN0IHRvIHRlc3QgaXRzIGNvcnJlY3Ru
ZXNzLgogICAgIGlmIChzb3VyY2UgPT0gX1dLV2ViQXV0aGVudGljYXRpb25Tb3VyY2VMb2NhbCkg
ewotICAgICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsU2VsZWN0ZWRDcmVkZW50aWFsTmFtZSA9
IHJlc3BvbnNlcy5sYXN0T2JqZWN0Lm5hbWU7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
c3BvbnNlcy5sYXN0T2JqZWN0KTsKKyAgICAgICAgYXV0byAqb2JqZWN0ID0gcmVzcG9uc2VzLmxh
c3RPYmplY3Q7CisKKyAgICAgICAgYXV0byBsYUNvbnRleHQgPSBhZG9wdE5TKFtbTEFDb250ZXh0
IGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtvYmplY3Qgc2V0TEFDb250ZXh0OmxhQ29udGV4dC5n
ZXQoKV07CisKKyAgICAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFNlbGVjdGVkQ3JlZGVudGlh
bE5hbWUgPSBvYmplY3QubmFtZTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIob2JqZWN0KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTgwLDYgKzE4OSwxMiBAQCAtICh2b2lkKXBh
bmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgZGVjaWRlUG9saWN5Rm9yTG9j
YWxBdXRoZW50aWNhdAogICAgIGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsQXV0aGVudGljYXRvclBv
bGljeSk7CiB9CiAKKy0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilw
YW5lbCByZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbldpdGhDb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICpjb250ZXh0KSljb21wbGV0aW9uSGFuZGxlcgorewor
ICAgIGxhQ29udGV4dFJlcXVlc3RlZCA9IHRydWU7CisgICAgY29tcGxldGlvbkhhbmRsZXIobmls
KTsKK30KKwogQGVuZAogCiBAaW50ZXJmYWNlIFRlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRmFr
ZURlbGVnYXRlIDogTlNPYmplY3QgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4K
QEAgLTMyMyw2ICszMzgsNyBAQCBzdGF0aWMgdm9pZCByZXNldCgpCiAgICAgd2ViQXV0aGVudGlj
YXRpb25QYW5lbE51bGxVc2VySGFuZGxlID0gTk87CiAgICAgbG9jYWxBdXRoZW50aWNhdG9yUG9s
aWN5ID0gX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5RGlzYWxsb3c7CiAgICAgd2ViQXV0aGVu
dGljYXRpb25QYW5lbFNlbGVjdGVkQ3JlZGVudGlhbE5hbWUgPSBlbXB0eVN0cmluZygpOworICAg
IGxhQ29udGV4dFJlcXVlc3RlZCA9IGZhbHNlOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja1BhbmVs
KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKnBhbmVsLCBOU1N0cmluZyAqcmVseWluZ1BhcnR5
SUQsIE5TQXJyYXkgKnRyYW5zcG9ydHMsIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSB0eXBlKQpA
QCAtMTc2MCw3ICsxNzc2LDcgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBNYWtlQ3Jl
ZGVudGlhbFNQSVRpbWVvdXQpCiAgICAgYXV0byB1c2VyID0gYWRvcHROUyhbW19XS1B1YmxpY0tl
eUNyZWRlbnRpYWxVc2VyRW50aXR5IGFsbG9jXSBpbml0V2l0aE5hbWU6QCJqYXBwbGVzZWVkQGV4
YW1wbGUuY29tIiBpZGVudGlmaWVyOm5zSWRlbnRpZmllciBkaXNwbGF5TmFtZTpAIkogQXBwbGVz
ZWVkIl0pOwogICAgIE5TQXJyYXk8X1dLUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnMgKj4g
KnB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWF0ZXJzID0gQFsgcGFyYW1ldGVycy5nZXQoKSBdOwog
ICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMoW1tfV0tQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zIGFsbG9jXSBpbml0V2l0aFJlbHlpbmdQYXJ0eTpycC5nZXQoKSB1c2VyOnVzZXIu
Z2V0KCkgcHVibGljS2V5Q3JlZGVudGlhbFBhcmFtYXRlcnM6cHVibGljS2V5Q3JlZGVudGlhbFBh
cmFtYXRlcnNdKTsKLSAgICBbb3B0aW9ucyBzZXRUaW1lb3V0OkAxMjBdOworICAgIFtvcHRpb25z
IHNldFRpbWVvdXQ6QDEwXTsKIAogICAgIGF1dG8gcGFuZWwgPSBhZG9wdE5TKFtbX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbCBhbGxvY10gaW5pdF0pOwogICAgIFtwYW5lbCBtYWtlQ3JlZGVudGlh
bFdpdGhIYXNoOm5zSGFzaCBvcHRpb25zOm9wdGlvbnMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6
XihfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIE5TRXJyb3Ig
KmVycm9yKSB7CkBAIC0xNzczLDYgKzE3ODksNDIgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBh
bmVsLCBNYWtlQ3JlZGVudGlhbFNQSVRpbWVvdXQpCiAgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50
aWNhdGlvblBhbmVsUmFuKTsKIH0KIAorVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBNYWtl
Q3JlZGVudGlhbExBKQoreworICAgIHJlc2V0KCk7CisKKyAgICB1aW50OF90IGlkZW50aWZpZXJb
XSA9IHsgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCB9OworICAgIHVpbnQ4X3QgaGFzaFtdID0geyAw
eDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAy
LCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAw
eDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAx
LCAweDAyLCAweDAzLCAweDA0IH07CisgICAgTlNEYXRhICpuc0lkZW50aWZpZXIgPSBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6aWRlbnRpZmllciBsZW5ndGg6c2l6ZW9mKGlkZW50aWZpZXIpXTsKKyAg
ICBOU0RhdGEgKm5zSGFzaCA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpoYXNoIGxlbmd0aDpzaXpl
b2YoaGFzaCldOworICAgIGF1dG8gcGFyYW1ldGVycyA9IGFkb3B0TlMoW1tfV0tQdWJsaWNLZXlD
cmVkZW50aWFsUGFyYW1ldGVycyBhbGxvY10gaW5pdFdpdGhBbGdvcml0aG06QC03XSk7CisKKyAg
ICBhdXRvIHJwID0gYWRvcHROUyhbW19XS1B1YmxpY0tleUNyZWRlbnRpYWxSZWx5aW5nUGFydHlF
bnRpdHkgYWxsb2NdIGluaXRXaXRoTmFtZTpAImV4YW1wbGUuY29tIl0pOworICAgIFtycCBzZXRJ
ZGVudGlmaWVyOkAiZXhhbXBsZS5jb20iXTsKKyAgICBhdXRvIHVzZXIgPSBhZG9wdE5TKFtbX1dL
UHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRpdHkgYWxsb2NdIGluaXRXaXRoTmFtZTpAImphcHBs
ZXNlZWRAZXhhbXBsZS5jb20iIGlkZW50aWZpZXI6bnNJZGVudGlmaWVyIGRpc3BsYXlOYW1lOkAi
SiBBcHBsZXNlZWQiXSk7CisgICAgTlNBcnJheTxfV0tQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1l
dGVycyAqPiAqcHVibGljS2V5Q3JlZGVudGlhbFBhcmFtYXRlcnMgPSBAWyBwYXJhbWV0ZXJzLmdl
dCgpIF07CisgICAgYXV0byBvcHRpb25zID0gYWRvcHROUyhbW19XS1B1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMgYWxsb2NdIGluaXRXaXRoUmVseWluZ1BhcnR5OnJwLmdldCgpIHVz
ZXI6dXNlci5nZXQoKSBwdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1hdGVyczpwdWJsaWNLZXlDcmVk
ZW50aWFsUGFyYW1hdGVyc10pOworCisgICAgYXV0byBwYW5lbCA9IGFkb3B0TlMoW1tfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsIGFsbG9jXSBpbml0XSk7CisgICAgW3BhbmVsIHNldE1vY2tDb25m
aWd1cmF0aW9uOkB7IEAicHJpdmF0ZUtleUJhc2U2NCI6IHRlc3RFUzI1NlByaXZhdGVLZXlCYXNl
NjQgfV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRp
b25QYW5lbERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3BhbmVsIHNldERlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKKworICAgIFtwYW5lbCBtYWtlQ3JlZGVudGlhbFdpdGhIYXNoOm5zSGFz
aCBvcHRpb25zOm9wdGlvbnMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIE5TRXJyb3IgKmVycm9yKSB7CisgICAg
ICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4gPSB0cnVlOworICAgICAgICBjbGVhblVwS2V5
Y2hhaW4oImV4YW1wbGUuY29tIik7CisKKyAgICAgICAgRVhQRUNUX1RSVUUobGFDb250ZXh0UmVx
dWVzdGVkKTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworCisgICAgICAgIEVYUEVDVF9O
T1RfTlVMTChyZXNwb25zZSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbcmVzcG9uc2UucmF3
SWQgYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdLCAiU01TWEhuZ0Y3aEVPc0VsQTcz
QzNSWSs4YlI0PSIpOworICAgICAgICBFWFBFQ1RfTlVMTChyZXNwb25zZS5leHRlbnNpb25zKTsK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFtyZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCBiYXNl
NjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0sICJvMk5tYlhSa2JtOXVaV2RoZEhSVGRHMTBv
R2hoZFhSb1JHRjBZVmlZbzNtbTl1NnZ1YVZlTjR3UmdEVGlkUjVvTDZ1ZkxUQ3JFOUlTVlliT0dV
ZEZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkVqRWx4NTRCZTRSRHJCSlFPOXd0MFdQdkcw
ZXBRRUNBeVlnQVNGWUlEai96eFNrektnYUJ1UzNjZFdERjU1OG9mOEFhSXBnRnBzakYvUW0xNzQ5
SWxnZ1ZCSlBncVVJd2ZoV0hKOTFuYjdVUEg3NmMwK1dGT3paS3NsUHl5RnNlNGc9Iik7CisgICAg
fV07CisgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuKTsKK30KKwogVEVT
VChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnNNaW5pbXVuKQogewogICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMoW1tfV0tQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgYWxsb2NdIGluaXRdKTsKQEAgLTE4NzAsNiArMTkyMiwz
OSBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIEdldEFzc2VydGlvblNQSVRpbWVvdXQp
CiAgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuKTsKIH0KIAorVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBHZXRBc3NlcnRpb25MQSkKK3sKKyAgICByZXNldCgpOwor
CisgICAgQVNTRVJUX1RSVUUoYWRkS2V5VG9LZXljaGFpbih0ZXN0RVMyNTZQcml2YXRlS2V5QmFz
ZTY0LCAiIiwgdGVzdFVzZXJFbnRpdHlCdW5kbGVCYXNlNjQpKTsKKworICAgIHVpbnQ4X3QgaGFz
aFtdID0geyAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAw
eDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAy
LCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAw
eDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0IH07CisgICAgTlNEYXRhICpuc0hhc2ggPSBbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6aGFzaCBsZW5ndGg6c2l6ZW9mKGhhc2gpXTsKKworICAgIGF1dG8g
b3B0aW9ucyA9IGFkb3B0TlMoW1tfV0tQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMg
YWxsb2NdIGluaXRdKTsKKyAgICBbb3B0aW9ucyBzZXRSZWx5aW5nUGFydHlJZGVudGlmaWVyOkAi
Il07CisKKyAgICBhdXRvIHBhbmVsID0gYWRvcHROUyhbW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwgYWxsb2NdIGluaXRdKTsKKyAgICBbcGFuZWwgc2V0TW9ja0NvbmZpZ3VyYXRpb246QHsgfV07
CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5l
bERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3BhbmVsIHNldERlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKKworICAgIFtwYW5lbCBnZXRBc3NlcnRpb25XaXRoSGFzaDpuc0hhc2ggb3B0aW9u
czpvcHRpb25zLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlICpyZXNwb25zZSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgd2ViQXV0
aGVudGljYXRpb25QYW5lbFJhbiA9IHRydWU7CisgICAgICAgIGNsZWFuVXBLZXljaGFpbigiIik7
CisKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworCisgICAgICAgIEVYUEVDVF9OT1RfTlVM
TChyZXNwb25zZSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbcmVzcG9uc2UucmF3SWQgYmFz
ZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdLCAiU01TWEhuZ0Y3aEVPc0VsQTczQzNSWSs4
YlI0PSIpOworICAgICAgICBFWFBFQ1RfTlVMTChyZXNwb25zZS5leHRlbnNpb25zKTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKFtyZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSBiYXNlNjRFbmNv
ZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0sICI0N0RFUXBqOEhCU2ErL1RJbVcrNUpDZXVRZVJrbTVO
TXBKV1pHM2hTdUZVRkFBQUFBQT09Iik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChyZXNwb25z
ZS5zaWduYXR1cmUpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3Jlc3BvbnNlLnVzZXJIYW5k
bGUgYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdLCAiQUFFQ0F3UUZCZ2NJQ1E9PSIp
OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCg==
</data>
<flag name="commit-queue"
          id="436880"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418809</attachid>
            <date>2021-01-29 22:26:38 -0800</date>
            <delta_ts>2021-02-01 15:38:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221125-20210129222637.patch</filename>
            <type>text/plain</type>
            <size>44424</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE1MWY0MmY2ZDE4YWM2NWY2
ZGM1MmVlY2VkZGVlMGZiMDM1ZTU1YTYuLmJiZmQ4ZGE3OGY3MzBjNTNiYjYwZDFhZmI3NDk2Y2Q4
OGQzZDkyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMjEtMDEtMjkgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIE9wdGltaXpl
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBmb3IgbmF0aXZlIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMTI1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83MTUwOTE0MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1haW5seSBkb2VzIHRoZSBmb2xsb3dpbmcg
ZmV3IHRoaW5nczoKKyAgICAgICAgMS4gSXQgY29ubmVjdHMgdGhlIG5ldyBTUEkgd2l0aCB0aGUg
ZXhpc3RpbmcgbW9jayB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIHN1Y2ggdGhhdCB3ZSBjYW4gbW9j
ayB0ZXN0IGl0LgorICAgICAgICAyLiBJdCBhZGRzIGEgbmV3IG1vZGUgaW4gQXV0aGVudGljYXRv
ck1hbmFnZXIgdG8gY29ubmVjdCBpdCB0byB0aGUgbmV3IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxEZWxlZ2F0ZSBvYmplY3QuCisgICAgICAgIDMuIEl0IGFkc3MgYSBuZXcgU1BJIHRvIF9XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZTogLVtwYW5lbDpyZXF1ZXN0TEFDb250ZXh0Rm9y
VXNlclZlcmlmaWNhdGlvbldpdGhDb21wbGV0aW9uSGFuZGxlcjpdLAorICAgICAgICBhbmQgYWRk
cyBhIG5ldyBtZXRob2Qgd2l0aGluIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UgdG8gYWNjZXB0IGFuIExBQ29udGV4dCBmcm9tIHRoZSBjYWxsZXIgdG8gdW5sb2NrCisgICAg
ICAgIHRoZSBrZXljaGFpbi4KKyAgICAgICAgNC4gSXQgZW5hYmxlcyAtW19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwgY2FuY2VsXSB0byB1c2UgdGhlIG5ldyBjYW5jZWwgbWV0aG9kLgorCisgICAg
ICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmg6CisgICAgICAgIEFjY2VwdHMgYSBM
QUNvbnRleHQgb2JqZWN0LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50
aWNhdGlvblBhbmVsLmNwcDoKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbCk6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWw6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNhdGlvblBh
bmVsOjpjYW5jZWwgY29uc3QpOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVs
OjpzZXRNb2NrQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJB
dXRoZW50aWNhdGlvblBhbmVsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWxDbGllbnQ6OnJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uIGNvbnN0KToK
KyAgICAgICAgQWRkcyBuZXcgU1BJIGFuZCBtb2NraW5nLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLm1tOgorICAgICAgICAoLVtfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlIHNldExBQ29udGV4dDpdKToKKyAgICAgICAgQWNjZXB0cyBhIExBQ29udGV4dCBvYmplY3Qu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW06CisgICAgICAgICgtW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgc2V0TW9ja0Nv
bmZpZ3VyYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsRm9yVGVzdGluZy5oOgorICAgICAgICBBZGRzIG5ldyBTUEkgYW5kIG1v
Y2tpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6
aGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpl
bmFibGVNb2Rlcm5XZWJBdXRoZW50aWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRp
Y2F0b3JNYW5hZ2VyOjplbmFibGVOYXRpdmVTdXBwb3J0KToKKyAgICAgICAgKFdlYktpdDo6QXV0
aGVudGljYXRvck1hbmFnZXI6OmF1dGhlbnRpY2F0b3JBZGRlZCk6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QcmVzZW50ZXIp
OgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6ZGlzcGF0Y2hQYW5lbENs
aWVudENhbGwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5oOgorICAgICAgICBBZGRzIGEgbmV3IG1vZGUgdG8gcG93ZXIg
dGhlIG5hdGl2ZSBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudDo6cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24gY29uc3Qp
OgorICAgICAgICBBY2NlcHRzIGEgTEFDb250ZXh0IG9iamVjdC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpNb2NrTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2VyKToK
KyAgICAgICAgQWRkcyBuZXcgbW9ja2luZyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oOgorICAg
ICAgICBBZGRzIHRoZSBuZXcgd2VhayBwYW5lbC4KKwogMjAyMS0wMS0yOSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBjb20uYXBwbGUucHJp
dmF0ZS5zZWN1cmVqaXQgZW50aXRsZW1lbnQgZm9yIEpJVENhZ2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25B
c3NlcnRpb25SZXNwb25zZS5oCmluZGV4IDAxNzAwODE4NjE3OTYyMjY0ZjhhNDBkY2E5YzY0MjMy
NmRhMGZmZDUuLjUyMzM1MzQ4MWUyYjZkYWRlODAzOGZkZGM4MmRlYTA4MzRkYmMwMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFz
c2VydGlvblJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtNDMsNiArNDMsOCBAQCBwdWJs
aWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZS0+ZGlzcGxheU5hbWUoKTsgfQogICAgIFJlZlB0cjxEYXRhPiB1c2VySGFuZGxl
KCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldExBQ29udGV4dChMQUNvbnRleHQgKmNvbnRleHQpIHsg
bV9yZXNwb25zZS0+c2V0TEFDb250ZXh0KGNvbnRleHQpOyB9CisKICAgICBXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UqIHJlc3BvbnNlKCkgeyByZXR1cm4gbV9yZXNwb25z
ZS5wdHIoKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwCmluZGV4IGZmZjMzMDE4YTIw
YTFjODdlMGMwN2Q0ODk0OGM3NzczNGE2N2E1ZTguLjNmYWFjODllNWQ1ZGZmOTI2YzQ4ZGRkNWUw
NzJlMTdmZDQ5ZjQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAog
I2luY2x1ZGUgIkFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCIKICNpbmNsdWRlICJB
dXRoZW50aWNhdG9yTWFuYWdlci5oIgorI2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9yTWFuYWdl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KIAog
bmFtZXNwYWNlIEFQSSB7CkBAIC00NSw2ICs0Niw3IEBAIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKQogICAgIDogbV9tYW5hZ2VyKG1ha2VVbmlxdWU8QXV0
aGVudGljYXRvck1hbmFnZXI+KCkpCiAgICAgLCBtX2NsaWVudChtYWtlVW5pcXVlUmVmPFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ+KCkpCiB7CisgICAgbV9tYW5hZ2VyLT5lbmFibGVOYXRp
dmVTdXBwb3J0KCk7CiB9CiAKIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OldlYkF1dGhlbnRpY2F0
aW9uUGFuZWwoY29uc3QgQXV0aGVudGljYXRvck1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdURjo6
U3RyaW5nJiBycElkLCBjb25zdCBUcmFuc3BvcnRTZXQmIHRyYW5zcG9ydHMsIENsaWVudERhdGFU
eXBlIHR5cGUpCkBAIC02OCwxMyArNzAsMzAgQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbDo6fldl
YkF1dGhlbnRpY2F0aW9uUGFuZWwoKSA9IGRlZmF1bHQ7CiB2b2lkIFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWw6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmIHJlcXVl
c3QsIENhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKG1fbWFuYWdlcik7CisgICAg
cmVxdWVzdC53ZWFrUGFuZWwgPSBtYWtlV2Vha1B0cigqdGhpcyk7CiAgICAgbV9tYW5hZ2VyLT5o
YW5kbGVSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAog
dm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpjYW5jZWwoKSBjb25zdAogewotICAgIGlmICht
X3dlYWtNYW5hZ2VyKQorICAgIGlmIChtX3dlYWtNYW5hZ2VyKSB7CiAgICAgICAgIG1fd2Vha01h
bmFnZXItPmNhbmNlbFJlcXVlc3QoKnRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV9tYW5hZ2VyLT5jYW5jZWwoKTsKK30KKwordm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVs
OjpzZXRNb2NrQ29uZmlndXJhdGlvbihXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBBU1NFUlQobV9tYW5hZ2VyKTsKKwor
ICAgIGlmICghbV9tYW5hZ2VyLT5pc01vY2soKSkgeworICAgICAgICBtX21hbmFnZXIgPSBtYWtl
VW5pcXVlPE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlcj4oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7
CisgICAgICAgIG1fbWFuYWdlci0+ZW5hYmxlTmF0aXZlU3VwcG9ydCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIHN0YXRpY19jYXN0PE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlcio+KG1f
bWFuYWdlci5nZXQoKSktPnNldFRlc3RDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlv
bikpOwogfQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OnNldENsaWVudChVbmlxdWVS
ZWY8V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudD4mJiBjbGllbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaApp
bmRleCA4MzYyMGRiNGIxZWM2ZmUyNzMzYzY2OWFmMjEyZTg5NjNkYTUxZjBjLi4zMmNhNWY2OWY5
OWFjYjFhMWFjODg0M2NmMzUyMDQ5Y2JhZTdhMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKQEAgLTM5LDYg
KzM5LDcgQEAgZW51bSBjbGFzcyBDbGllbnREYXRhVHlwZSA6IGJvb2w7CiBjbGFzcyBBdXRoZW50
aWNhdG9yUmVzcG9uc2U7CiAKIHN0cnVjdCBFeGNlcHRpb25EYXRhOworc3RydWN0IE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NjEsNiArNjIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViS2l0OjpX
ZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYsIENhbGxiYWNrJiYpOwogICAgIHZvaWQgY2Fu
Y2VsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNb2NrQ29uZmlndXJhdGlvbihXZWJDb3JlOjpNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYpOwogCiAgICAgY29uc3QgV2ViQXV0aGVu
dGljYXRpb25QYW5lbENsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQuZ2V0
KCk7IH0KICAgICB2b2lkIHNldENsaWVudChVbmlxdWVSZWY8V2ViQXV0aGVudGljYXRpb25QYW5l
bENsaWVudD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAppbmRleCBhMzY4YzM3YWVlZmRl
MzE5MzBlZTE4M2I2ZTVmMThjYWJkMDJkYzU1Li40MGYyN2U3MzJjZmU4MWY2MzhhOGU3MzYxMjA2
ZWQ2ODYxNDg4ZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKQEAgLTUyLDYgKzUyLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGNvbnN0IHsgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpTdHJpbmcoKSk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uU291
cmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZSopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5k
bGVyKG51bGxwdHIpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0
aGVudGljYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6TG9jYWxBdXRoZW50aWNh
dG9yUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxl
cihXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvclBvbGljeTo6RGlzYWxsb3cpOyB9CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNv
bXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oCmluZGV4IDU2ODhh
ZjQxYmE1YjRkZDllMmRiOGJmOTdiOWM5MGUxNTFhY2E2NGIuLjY5YTA0MTAzZjdmNWI1NmE3ODll
ZjQ1Y2NlMjk1ZjY4M2I4YzU4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UuaApAQCAtMjgsNiArMjgsOCBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9C
RUdJTgogCitAY2xhc3MgTEFDb250ZXh0OworCiBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTEu
MCksIGlvcygxNC4wKSkKIEBpbnRlcmZhY2UgX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25S
ZXNwb25zZSA6IE5TT2JqZWN0CiAKQEAgLTM1LDYgKzM3LDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxF
KG1hY29zKDExLjApLCBpb3MoMTQuMCkpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IGNvcHkpIE5TU3RyaW5nICpkaXNwbGF5TmFtZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgY29weSkgTlNEYXRhICp1c2VySGFuZGxlOwogCistICh2b2lkKXNldExBQ29udGV4dDoo
TEFDb250ZXh0ICopY29udGV4dCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0
aW9uQXNzZXJ0aW9uUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbQppbmRleCA5NzFmMjM2
NjQwMzA1ODM5MDM0ZTA5MTg0ODQ3Yjk3Y2UxZDlhYWExLi5mMjIyYTVhY2EwNTRjZjBlZWEzNGVi
NWEyOGQzNjNkMjkyYjdmY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5tbQpAQCAtNTQsNiArNTQsMTYgQEAgLSAoTlNEYXRhICopdXNlckhhbmRs
ZQogICAgIHJldHVybiB3cmFwcGVyKF9yZXNwb25zZS0+dXNlckhhbmRsZSgpKTsKIH0KIAorI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCisKKy0gKHZvaWQpc2V0TEFDb250ZXh0OihMQUNvbnRl
eHQgKiljb250ZXh0Cit7CisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBfcmVzcG9uc2UtPnNl
dExBQ29udGV4dChjb250ZXh0KTsKKyNlbmRpZgorfQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikK
ICNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgogCiAtIChBUEk6
Ok9iamVjdCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKaW5kZXggM2E3MmM1
NWY2Njg5NGE3MDhmMGFkZGFjNzg0NGExZjE0ZTc0YTBlOC4uODRmYmNjZGZmN2E5NzFjZjU3NDI3
ODEyNTMwODVkZWJmYmZhMTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCkBAIC0zNCw2
ICszNCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBAY2xhc3MgX1dLUHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zOwogQGNsYXNzIF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2U7CiBAY2xhc3MgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbDsKK0BjbGFzcyBM
QUNvbnRleHQ7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxSZXN1bHQpIHsKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0VW5h
dmFpbGFibGUsCkBAIC03OCwxNyArNzksMTggQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
X1dLV2ViQXV0aGVudGljYXRpb25Tb3VyY2UpIHsKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblNv
dXJjZUV4dGVybmFsLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkp
OwogCi0vLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzcxNTA5MTQxPiBPcHRpbWl6ZSB0aGUgZGVs
ZWdhdGUgZm9yIHRoZSBBdXRoZW50aWNhdGlvblNlcnZpY2UuZnJhbWV3b3JrLgogQHByb3RvY29s
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSA8TlNPYmplY3Q+CiAKIEBvcHRpb25h
bAogCi0tICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgdXBk
YXRlV2ViQXV0aGVudGljYXRpb25QYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZSl1cGRhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwgaW9zKDEzLjQpKTsKLS0g
KHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBkaXNtaXNzV2Vi
QXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQ6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0
KXJlc3VsdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1LjQpLCBpb3MoMTMuNCkpOwotLSAo
dm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHJlcXVlc3RQSU5X
aXRoUmVtYWluaW5nUmV0cmllczooTlNVSW50ZWdlcilyZXRyaWVzIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjE1LjQpLCBpb3MoMTMuNCkpOworLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbCAqKXBhbmVsIHVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6KF9XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGUpdXBkYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTEuMCksIGlvcygxNC4wKSk7CistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsICopcGFuZWwgcmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOihOU1VJbnRlZ2VyKXJl
dHJpZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25I
YW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiAtICh2b2lk
KXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9u
UmVzcG9uc2U6KE5TQXJyYXkgPCBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
ICo+ICopcmVzcG9uc2VzIHNvdXJjZTooX1dLV2ViQXV0aGVudGljYXRpb25Tb3VyY2Upc291cmNl
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlv
blJlc3BvbnNlICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEu
MCksIGlvcygxNC4wKSk7Ci0tICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
ICopcGFuZWwgZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgcG9saWN5KSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpOwor
LSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHJlcXVlc3RM
QUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShMQUNvbnRleHQgKmNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy8vIEZJWE1FOiA8cmRhcjov
L3Byb2JsZW0vNzE1MDk4NDg+IERlcHJlY2F0ZSB0aGUgZm9sbG93aW5nIGRlbGVnYXRlcy4KKy0g
KHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBkZWNpZGVQb2xp
Y3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9X
S0xvY2FsQXV0aGVudGljYXRvclBvbGljeSBwb2xpY3kpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CistICh2b2lkKXBhbmVsOihfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxXaXRoUmVzdWx0OihfV0tXZWJBdXRoZW50aWNhdGlvblJlc3VsdClyZXN1bHQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsKIEBlbmQKIAogV0tfQ0xBU1NfQVZBSUxB
QkxFKG1hY29zKDEwLjE1LjQpLCBpb3MoMTMuNCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
CmluZGV4IDMyZjEwZTIzODQyODdkZDBhZGZiZjM2ZDVmNGZiYWNhODcyYmJiZDEuLjk3MDZkNWIy
MWFiYTM4OGUwZGJmY2ZiYmVhY2M5NzBkMmE4NDE5ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCkBAIC00NCw2ICs0NCw3IEBACiAjaW1wb3J0ICJfV0tQdWJsaWNLZXlDcmVkZW50aWFs
VXNlckVudGl0eS5oIgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5oPgorI2ltcG9ydCA8
V2ViQ29yZS9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmg+CkBAIC0zNDcsNyArMzQ4LDcgQEAgLSAo
dm9pZCltYWtlQ3JlZGVudGlhbFdpdGhIYXNoOihOU0RhdGEgKiloYXNoIG9wdGlvbnM6KF9XS1B1
YmxpY0tleUNyZWRlbnRpYWxDcmUKICAgICAgICAgICAgIGhhbmRsZXIobmlsLCBbTlNFcnJvciBl
cnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZv
Om5pbF0pOwogICAgICAgICB9KTsKICAgICB9OwotICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7
IHZlY3RvckZyb21OU0RhdGEoaGFzaCksIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZl
cnRUb0NvcmVDcmVhdGlvbk9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2Vi
S2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwg
V1RGOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygpIH0sIFdURk1vdmUoY2FsbGJhY2spKTsK
KyAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyB2ZWN0b3JGcm9tTlNEYXRhKGhhc2gpLCBbX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlQ3JlYXRpb25PcHRpb25zV2l0aE9w
dGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgeyB9LCB0cnVlLCBTdHJp
bmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAjZW5kaWYKIH0KIApAQCAtMzk0
LDcgKzM5NSw3IEBAIC0gKHZvaWQpZ2V0QXNzZXJ0aW9uV2l0aEhhc2g6KE5TRGF0YSAqKWhhc2gg
b3B0aW9uczooX1dLUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlCiAgICAgICAgICAgICBoYW5kbGVy
KG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9y
VW5rbm93biB1c2VySW5mbzpuaWxdKTsKICAgICAgICAgfSk7CiAgICAgfTsKLSAgICBfcGFuZWwt
PmhhbmRsZVJlcXVlc3QoeyB2ZWN0b3JGcm9tTlNEYXRhKGhhc2gpLCBbX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlUmVxdWVzdE9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25z
XSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWls
YWJsZSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygpIH0sIFdURk1v
dmUoY2FsbGJhY2spKTsKKyAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyB2ZWN0b3JGcm9tTlNE
YXRhKGhhc2gpLCBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlUmVxdWVz
dE9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCB7
IH0sIHRydWUsIFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKICNlbmRp
ZgogfQogCkBAIC00MDcsNiArNDA4LDIxIEBAICsgKEJPT0wpaXNVc2VyVmVyaWZ5aW5nUGxhdGZv
cm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlCiAjZW5kaWYKIH0KIAorLSAodm9pZClzZXRNb2NrQ29u
ZmlndXJhdGlvbjooTlNEaWN0aW9uYXJ5ICopY29uZmlndXJhdGlvbgoreworI2lmIEVOQUJMRShX
RUJfQVVUSE4pCisgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bjo6TG9jYWxDb25maWd1cmF0aW9uIGxvY2FsQ29uZmlndXJhdGlvbjsKKyAgICBsb2NhbENvbmZp
Z3VyYXRpb24udXNlclZlcmlmaWNhdGlvbiA9IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb246OlVzZXJWZXJpZmljYXRpb246OlllczsKKyAgICBpZiAoY29uZmlndXJh
dGlvbltAInByaXZhdGVLZXlCYXNlNjQiXSkKKyAgICAgICAgbG9jYWxDb25maWd1cmF0aW9uLnBy
aXZhdGVLZXlCYXNlNjQgPSBjb25maWd1cmF0aW9uW0AicHJpdmF0ZUtleUJhc2U2NCJdOworCisg
ICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtb2NrQ29uZmln
dXJhdGlvbjsKKyAgICBtb2NrQ29uZmlndXJhdGlvbi5sb2NhbCA9IFdURk1vdmUobG9jYWxDb25m
aWd1cmF0aW9uKTsKKworICAgIF9wYW5lbC0+c2V0TW9ja0NvbmZpZ3VyYXRpb24oV1RGTW92ZSht
b2NrQ29uZmlndXJhdGlvbikpOworI2VuZGlmCit9CisKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQog
I3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsRm9yVGVzdGluZy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxGb3JUZXN0aW5nLmgKaW5kZXggMTliOGI3ZjcyMjk1NmQw
NWMwYTAxMjEwYTVjYmRhYjY0ZmY2NGVlYi4uMTRlYmZlMWU2Y2MzNjliMzFlNmZiOTc3YWJjNDgz
MjZjMmFhODU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxGb3JUZXN0aW5nLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxGb3JUZXN0aW5n
LmgKQEAgLTM1LDggKzM1LDEwIEBAIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnM7CiBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSkKIEBpbnRlcmZhY2UgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAoV0tUZXN0aW5nKQog
Ci0vLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzcxNTA5NzE0PiBJbnRyb2R1Y2VzIG1vY2sgdGVz
dGluZy4KICsgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMpY29u
dmVydFRvQ29yZUNyZWF0aW9uT3B0aW9uc1dpdGhPcHRpb25zOihfV0tQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zICopb3B0aW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogKyAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zKWNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9uc1dpdGhPcHRpb25zOihf
V0tQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgKilvcHRpb25zIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy8vIEZvciBkZXRh
aWxzIG9mIGNvbmZpZ3VyYXRpb24sIHJlZmVyIHRvIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uaC4KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0RpY3Rpb25hcnkgKm1v
Y2tDb25maWd1cmF0aW9uOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5j
cHAKaW5kZXggZGI3YWIyMTNjZGY0NDc5ZDcwMWM1ZjUxMzk1YTZjOGNjYmIxMGFhNi4uNWE2MDk3
NjA4MTNjODNjNzllM2UwODg5MDkzODQxZTcxY2E1ODNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmNwcApAQCAtMTY1LDEwICsxNjUsOSBAQCB2b2lkIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyOjpoYW5kbGVSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiBkYXRh
LCBDYQogICAgIC8vIDIuIEFzayBjbGllbnRzIHRvIHNob3cgYXBwcm9wcmlhdGUgVUkgaWYgYW55
IGFuZCB0aGVuIHN0YXJ0IHRoZSByZXF1ZXN0LgogICAgIGluaXRUaW1lT3V0VGltZXIoKTsKIAot
ICAgIC8vIEZJWE1FPHJkYXI6Ly9wcm9ibGVtLzcwODIyODM0PjogVGhlIG1fd2ViQXV0aGVudGlj
YXRpb25Nb2Rlcm5FbmFibGVkIGlzIHVzZWQgdG8gZGV0ZXJtaW5lCi0gICAgLy8gd2hldGhlciBv
ciBub3Qgd2UgYXJlIGluIHRoZSBVSVByb2Nlc3MuCisgICAgLy8gRklYTUU8cmRhcjovL3Byb2Js
ZW0vNzA4MjI4MzQ+OiBUaGUgbV9tb2RlIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Ig
bm90IHdlIGFyZSBpbiB0aGUgVUlQcm9jZXNzLgogICAgIC8vIElmIHNvLCBjb250aW51ZSB0byB0
aGUgb2xkIHJvdXRlLiBPdGhlcndpc2UsIHVzZSB0aGUgbW9kZXJuIFdlYkF1dGhuIHByb2Nlc3Mg
d2F5LgotICAgIGlmICghbV93ZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQpIHsKKyAgICBp
ZiAobV9tb2RlID09IE1vZGU6OkNvbXBhdGlibGUpIHsKICAgICAgICAgcnVuUGFuZWwoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwOSw3ICsyMDgsMTIgQEAgdm9pZCBBdXRoZW50aWNh
dG9yTWFuYWdlcjo6Y2FuY2VsKCkKIAogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6ZW5hYmxl
TW9kZXJuV2ViQXV0aGVudGljYXRpb24oKQogewotICAgIG1fd2ViQXV0aGVudGljYXRpb25Nb2Rl
cm5FbmFibGVkID0gdHJ1ZTsKKyAgICBtX21vZGUgPSBNb2RlOjpNb2Rlcm47Cit9CisKK3ZvaWQg
QXV0aGVudGljYXRvck1hbmFnZXI6OmVuYWJsZU5hdGl2ZVN1cHBvcnQoKQoreworICAgIG1fbW9k
ZSA9IE1vZGU6Ok5hdGl2ZTsKIH0KIAogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y2xlYXJT
dGF0ZUFzeW5jKCkKQEAgLTIzNiw3ICsyNDAsNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjphdXRoZW50aWNhdG9yQWRkZWQoUmVmPEF1dGhlbnRpY2F0b3I+JiYgYXV0aGVudGljYXRvcgog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgYXV0aGVudGljYXRvci0+c2V0T2Jz
ZXJ2ZXIoKnRoaXMpOwogICAgIGF1dGhlbnRpY2F0b3ItPmhhbmRsZVJlcXVlc3QobV9wZW5kaW5n
UmVxdWVzdERhdGEpOwotICAgIGF1dGhlbnRpY2F0b3ItPnNldFdlYkF1dGhlbnRpY2F0aW9uTW9k
ZXJuRW5hYmxlZChtX3dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCk7CisgICAgYXV0aGVu
dGljYXRvci0+c2V0V2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkKG1fbW9kZSAhPSBNb2Rl
OjpDb21wYXRpYmxlKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXV0aGVudGljYXRvcnMuYWRk
KFdURk1vdmUoYXV0aGVudGljYXRvcikpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBh
ZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zNTQsMTIgKzM1OCwxNCBAQCB2b2lkIEF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjpkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3IoQ29tcGxl
dGlvbkhhbmRsZXI8dgogCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1ZXN0TEFDb250
ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExBQ29udGV4dCAq
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoIW1fcHJlc2VudGVyKSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgIGlmIChtX3ByZXNlbnRlcikgewor
ICAgICAgICBtX3ByZXNlbnRlci0+cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24o
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9wcmVzZW50ZXItPnJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBkaXNwYXRjaFBhbmVsQ2xpZW50Q2FsbChbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IEFQSTo6
V2ViQXV0aGVudGljYXRpb25QYW5lbCYgcGFuZWwpIG11dGFibGUgeworICAgICAgICBwYW5lbC5j
bGllbnQoKS5yZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbihXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6
OmNhbmNlbFJlcXVlc3QoKQpAQCAtNDQ0LDEwICs0NTAsMTQgQEAgdm9pZCBBdXRoZW50aWNhdG9y
TWFuYWdlcjo6cnVuUGFuZWwoKQogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cnVuUHJlc2Vu
dGVyKCkKIHsKICAgICAvLyBHZXQgYXZhaWxhYmxlIHRyYW5zcG9ydHMgYW5kIHN0YXJ0IGRpc2Nv
dmVyaW5nIGF1dGhlbnRpY2F0b3JzIG9uIHRoZW0uCi0gICAgYXV0byYgb3B0aW9ucyA9IG1fcGVu
ZGluZ1JlcXVlc3REYXRhLm9wdGlvbnM7CiAgICAgYXV0byB0cmFuc3BvcnRzID0gZ2V0VHJhbnNw
b3J0cygpOwogICAgIHN0YXJ0RGlzY292ZXJ5KHRyYW5zcG9ydHMpOwogCisgICAgLy8gRm9yIG5h
dGl2ZSBBUEkgc3VwcG9ydCwgd2Ugc2tpcCB0aGUgVUkgcGFydC4gVGhlIG5hdGl2ZSBBUEkgd2ls
bCBoYW5kbGUgdGhhdC4KKyAgICBpZiAobV9tb2RlID09IE1vZGU6Ok5hdGl2ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byYgb3B0aW9ucyA9IG1fcGVuZGluZ1JlcXVlc3REYXRhLm9wdGlv
bnM7CiAgICAgbV9wcmVzZW50ZXIgPSBtYWtlVW5pcXVlPEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJD
b29yZGluYXRvcj4oKnRoaXMsIGdldFJwSWQob3B0aW9ucyksIHRyYW5zcG9ydHMsIGdldENsaWVu
dERhdGFUeXBlKG9wdGlvbnMpKTsKIH0KIApAQCAtNDg4LDE1ICs0OTgsMTkgQEAgYXV0byBBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6Z2V0VHJhbnNwb3J0cygpIGNvbnN0IC0+IFRyYW5zcG9ydFNldAog
CiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpkaXNwYXRjaFBhbmVsQ2xpZW50Q2FsbChGdW5j
dGlvbjx2b2lkKGNvbnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYpPiYmIGNhbGwpIGNv
bnN0CiB7Ci0gICAgaWYgKGF1dG8qIHBhbmVsID0gbV9wZW5kaW5nUmVxdWVzdERhdGEucGFuZWwu
Z2V0KCkpIHsKLSAgICAgICAgLy8gQ2FsbCBkZWxlZ2F0ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3Ag
dG8gcHJldmVudCBjbGllbnRzJyByZWVudHJhbmNlIHRoYXQgd291bGQgcG90ZW50aWFsbHkgbW9k
aWZ5IHRoZSBzdGF0ZQotICAgICAgICAvLyBvZiB0aGUgY3VycmVudCBydW4gbG9vcCBpbiB1bmV4
cGVjdGVkIHdheXMuCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1BhbmVs
ID0gbWFrZVdlYWtQdHIoKnBhbmVsKSwgY2FsbCA9IFdURk1vdmUoY2FsbCldICgpIHsKLSAgICAg
ICAgICAgIGlmICghd2Vha1BhbmVsKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIGNhbGwoKndlYWtQYW5lbCk7Ci0gICAgICAgIH0pOwotICAgIH0KKyAgICBhdXRvIHdlYWtQ
YW5lbCA9IG1fcGVuZGluZ1JlcXVlc3REYXRhLndlYWtQYW5lbDsKKyAgICBpZiAoIXdlYWtQYW5l
bCkKKyAgICAgICAgd2Vha1BhbmVsID0gbWFrZVdlYWtQdHIoKm1fcGVuZGluZ1JlcXVlc3REYXRh
LnBhbmVsLmdldCgpKTsKKyAgICBpZiAoIXdlYWtQYW5lbCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gQ2FsbCBkZWxlZ2F0ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3AgdG8gcHJldmVudCBjbGll
bnRzJyByZWVudHJhbmNlIHRoYXQgd291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBzdGF0ZQor
ICAgIC8vIG9mIHRoZSBjdXJyZW50IHJ1biBsb29wIGluIHVuZXhwZWN0ZWQgd2F5cy4KKyAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtQYW5lbCwgY2FsbCA9IFdURk1vdmUoY2FsbCld
ICgpIHsKKyAgICAgICAgaWYgKCF3ZWFrUGFuZWwpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGNhbGwoKndlYWtQYW5lbCk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRvck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKaW5kZXggMWVlNGFiNDk1MzFiZWU5NzQx
NDVjNTQ4Nzg1NDIwNDE2N2VlMzYxZS4uNDE4Mjk1YmUzZDZjM2IyOWQyNDMyNzUxYTQxMmUzNTZm
ODEyNTU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCkBAIC03MSw2ICs3MSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNNb2NrKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIHZvaWQgZW5hYmxlTW9kZXJuV2ViQXV0aGVudGljYXRpb24oKTsKKyAgICB2
b2lkIGVuYWJsZU5hdGl2ZVN1cHBvcnQoKTsKIAogcHJvdGVjdGVkOgogICAgIFJ1bkxvb3A6OlRp
bWVyPEF1dGhlbnRpY2F0b3JNYW5hZ2VyPiYgcmVxdWVzdFRpbWVPdXRUaW1lcigpIHsgcmV0dXJu
IG1fcmVxdWVzdFRpbWVPdXRUaW1lcjsgfQpAQCAtNzksNiArODAsMTIgQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgaW52b2tlUGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKFJlc3BvbmQmJik7CiAKIHBy
aXZhdGU6CisgICAgZW51bSBjbGFzcyBNb2RlIHsKKyAgICAgICAgQ29tcGF0aWJsZSwKKyAgICAg
ICAgTW9kZXJuLAorICAgICAgICBOYXRpdmUsCisgICAgfTsKKwogICAgIC8vIEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlOjpPYnNlcnZlcgogICAgIHZvaWQgYXV0aGVudGljYXRvckFkZGVk
KFJlZjxBdXRoZW50aWNhdG9yPiYmKSBmaW5hbDsKICAgICB2b2lkIHNlcnZpY2VTdGF0dXNVcGRh
dGVkKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKSBmaW5hbDsKQEAgLTExNyw3ICsxMjQsNyBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZp
Y2U+PiBtX3NlcnZpY2VzOwogICAgIEhhc2hTZXQ8UmVmPEF1dGhlbnRpY2F0b3I+PiBtX2F1dGhl
bnRpY2F0b3JzOwogCi0gICAgYm9vbCBtX3dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCB7
IGZhbHNlIH07CisgICAgTW9kZSBtX21vZGUgeyBNb2RlOjpDb21wYXRpYmxlIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQuaAppbmRleCA5NzZjYTY5ZDBhZjgxYzQ1YmZhZjg2Mjc1Mzcz
OTQ5ZGI3ZDZiYzRlLi4xYmU2YTU2MmRjNThjYjY5MWY2YWEzOTZlMDJhZWMzZTQ5YzE0ZGJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dC5oCkBAIC01Miw2ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0UGluKHVpbnQ2
NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGNvbnN0
IGZpbmFsOwogICAgIHZvaWQgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBXZWJBdXRoZW50aWNhdGlv
blNvdXJjZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UqKT4mJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JMb2NhbEF1dGhlbnRpY2F0b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMb2NhbEF1dGhlbnRp
Y2F0b3JQb2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMQUNvbnRleHRG
b3JVc2VyVmVyaWZpY2F0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYm
KSBjb25zdCBmaW5hbDsKIAogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKm1fcGFuZWw7
CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4g
PiBtX2RlbGVnYXRlOwpAQCAtNjIsNiArNjMsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHBh
bmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdSZXRyaWVzQ29tcGxldGlvbkhhbmRsZXIgOiAxOwog
ICAgICAgICBib29sIHBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VTb3VyY2VDb21wbGV0aW9u
SGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgcGFuZWxEZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhl
bnRpY2F0b3JDb21wbGV0aW9uSGFuZGxlciA6IDE7CisgICAgICAgIGJvb2wgcGFuZWxSZXF1ZXN0
TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbkNvbXBsZXRpb25IYW5kbGVyIDogMTsKICAgICB9
IG1fZGVsZWdhdGVNZXRob2RzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0KaW5kZXggODM3Njk3MmMzNTc2NzY5YjExMDVi
Mjg1MGI0YzZjMmMxZWE0YTI2Ni4uYTA4OTRhMjBmOTFmZmMzNzdjNDQ1MzYwZTZmMTM4OTgyMGE5
YjNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50Lm1tCkBAIC01MCw2ICs1MCw3IEBAIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQoX1dLV2ViQXV0aGVudGljYXRpb25QCiAg
ICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJpZXND
b21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHBhbmVsOnJlcXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczpjb21wbGV0aW9uSGFuZGxlcjop
XTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFNlbGVjdEFzc2VydGlvblJlc3BvbnNlU291
cmNlQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZTpzb3VyY2U6Y29tcGxldGlvbkhhbmRs
ZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxEZWNpZGVQb2xpY3lGb3JMb2NhbEF1
dGhlbnRpY2F0b3JDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHBhbmVsOmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcldpdGhD
b21wbGV0aW9uSGFuZGxlcjopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFJlcXVlc3RM
QUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYW5lbDpyZXF1ZXN0TEFDb250ZXh0Rm9yVXNl
clZlcmlmaWNhdGlvbldpdGhDb21wbGV0aW9uSGFuZGxlcjopXTsKIH0KIAogUmV0YWluUHRyPGlk
IDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudDo6ZGVsZWdhdGUoKQpAQCAtMjE3LDYgKzIxOCwyOCBAQCB2b2lkIFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQ6OmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihD
b21wbGV0aW9uSAogICAgIH0pLmdldCgpXTsKIH0KIAordm9pZCBXZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2xpZW50OjpyZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKExBQ29udGV4dCAqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sK
KyAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnBhbmVsUmVxdWVzdExBQ29udGV4dEZvclVzZXJW
ZXJpZmljYXRpb25Db21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZGVsZWdhdGUg
PSBtX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUu
Z2V0KCksIEBzZWxlY3RvcihwYW5lbDpyZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlv
bldpdGhDb21wbGV0aW9uSGFuZGxlcjopKTsKKyAgICBbZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCBy
ZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbldpdGhDb21wbGV0aW9uSGFuZGxlcjpt
YWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShMQUNvbnRleHQgKmNvbnRleHQpIG11dGFi
bGUgeworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVk
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyAgICB9
KS5nZXQoKV07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgKaW5kZXgg
ZmY5MGQzZGU0MzQ5YzlhMzM4NWMyMGMwNTk3MjliOGUyMmViZTJlNS4uOTRlNGE0ZDdlNGY4ZTE2
ZjIwZWNiOTRhN2ViMDQ4ZmU2MjkzNThiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxD
b25uZWN0aW9uLmgKQEAgLTM4LDYgKzM4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZv
aWQgdmVyaWZ5VXNlcihjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpDbGllbnREYXRhVHlwZSwgU2Vj
QWNjZXNzQ29udHJvbFJlZiwgVXNlclZlcmlmaWNhdGlvbkNhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgdmVyaWZ5VXNlcihTZWNBY2Nlc3NDb250cm9sUmVmLCBMQUNvbnRleHQgKiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChVc2VyVmVyaWZpY2F0aW9uKT4mJikgZmluYWw7CiAgICAgUmV0YWlu
UHRyPFNlY0tleVJlZj4gY3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNl
Y0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNl
Y0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QgZmluYWw7CiAgICAgdm9pZCBnZXRBdHRlc3RhdGlv
bihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5TRGF0YSAqaGFzaCwgQXR0ZXN0YXRpb25D
YWxsYmFjayYmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGZpbHRlclJlc3BvbnNlcyhWZWN0b3I8
UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JikgY29uc3QgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KaW5kZXggMmZiYWEz
NDE1MGY1ZTBmM2UyYWM2MmVhYWY2NjY3ZTM3NmRmZjFiYS4uNjIyZThjYTk1OGM1ZGQ5N2Q1OTE3
OWVjNmE4MzE3Yzg0Y2E2NjI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVj
dGlvbi5tbQpAQCAtNjcsNiArNjcsMjcgQEAgdm9pZCBNb2NrTG9jYWxDb25uZWN0aW9uOjp2ZXJp
ZnlVc2VyKGNvbnN0IFN0cmluZyYsIENsaWVudERhdGFUeXBlLCBTZWNBY2Nlc3NDb24KICAgICB9
KTsKIH0KIAordm9pZCBNb2NrTG9jYWxDb25uZWN0aW9uOjp2ZXJpZnlVc2VyKFNlY0FjY2Vzc0Nv
bnRyb2xSZWYsIExBQ29udGV4dCAqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJWZXJpZmlj
YXRpb24pPiYmIGNhbGxiYWNrKQoreworICAgIC8vIE1vY2sgYXN5bmMgb3BlcmF0aW9ucy4KKyAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbmZpZ3VyYXRpb24gPSBtX2NvbmZpZ3VyYXRp
b24sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIEFT
U0VSVChjb25maWd1cmF0aW9uLmxvY2FsKTsKKworICAgICAgICBVc2VyVmVyaWZpY2F0aW9uIHVz
ZXJWZXJpZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uOjpObzsKKyAgICAgICAgc3dpdGNoIChj
b25maWd1cmF0aW9uLmxvY2FsLT51c2VyVmVyaWZpY2F0aW9uKSB7CisgICAgICAgIGNhc2UgTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6VXNlclZlcmlmaWNhdGlvbjo6Tm86Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpVc2VyVmVyaWZpY2F0aW9uOjpZZXM6CisgICAgICAgICAgICB1c2VyVmVyaWZp
Y2F0aW9uID0gVXNlclZlcmlmaWNhdGlvbjo6WWVzOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6VXNlclZlcmlmaWNh
dGlvbjo6Q2FuY2VsOgorICAgICAgICAgICAgdXNlclZlcmlmaWNhdGlvbiA9IFVzZXJWZXJpZmlj
YXRpb246OkNhbmNlbDsKKyAgICAgICAgfQorCisgICAgICAgIGNhbGxiYWNrKHVzZXJWZXJpZmlj
YXRpb24pOworICAgIH0pOworfQorCiBSZXRhaW5QdHI8U2VjS2V5UmVmPiBNb2NrTG9jYWxDb25u
ZWN0aW9uOjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShMQUNvbnRleHQgKiwgU2VjQWNjZXNz
Q29udHJvbFJlZiwgY29uc3QgU3RyaW5nJiBzZWNBdHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFw
cGxpY2F0aW9uVGFnKSBjb25zdAogewogICAgIEFTU0VSVChtX2NvbmZpZ3VyYXRpb24ubG9jYWwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCmluZGV4IGQz
ODYzN2U2Njg3Mjc0MDMyNzg1NmU4OTI5Mjc4MjIyNGNkMTJjYjYuLjE2NzViZjBiZmNjMGNiNjI2
NTU2ZDY3YjIwODYwOGIxMDRlNWRiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dGlvblJlcXVlc3REYXRhLmgKQEAgLTU1LDYgKzU1LDcgQEAgc3RydWN0IFdlYkF1dGhlbnRpY2F0
aW9uUmVxdWVzdERhdGEgewogCiAgICAgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmU7CiAgICAg
U3RyaW5nIGNhY2hlZFBpbjsgLy8gT25seSB1c2VkIHRvIGltcHJvdmUgTkZDIENsaWVudCBQSU4g
ZXhwZXJpZW5jZS4KKyAgICBXZWFrUHRyPEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbD4gd2Vh
a1BhbmVsOwogfTsKIAogV2ViQ29yZTo6Q2xpZW50RGF0YVR5cGUgZ2V0Q2xpZW50RGF0YVR5cGUo
Y29uc3QgVmFyaWFudDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
LCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXgg
YzJiZmM0N2Y2YTc3OTBhYWU4ZjMwN2QzYzU4MGRmNTkwYWIyZjk5OS4uYWYzZjkxOTY2YzM3MWYw
OGVmNGRlODEwMTc1MGM4OGU0ZWYyM2E2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcApAQCAtNTcsMTIgKzU3LDEyIEBAIFdlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojp+V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkoKQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjptYWtlQ3Jl
ZGVudGlhbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJZCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5m
bywgVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyYmIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxl
dGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewotICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhh
c2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBtYWtlV2Vha1B0cihtX3dlYlBhZ2VQcm94eSksIFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBHbG9iYWxGcmFt
ZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJhbWVJZCB9LCBXVEZN
b3ZlKGZyYW1lSW5mbyksIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCkgfSwgV1RGTW92
ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUo
b3B0aW9ucyksIG1ha2VXZWFrUHRyKG1fd2ViUGFnZVByb3h5KSwgV2ViQXV0aGVudGljYXRpb25Q
YW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEdsb2JhbEZyYW1lSWRlbnRpZmllciB7
IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlkIH0sIFdURk1vdmUoZnJhbWVJbmZv
KSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGhh
bmRsZXIpKTsKIH0KIAogdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0
QXNzZXJ0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlkLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJ
bmZvLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMmJiBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKLSAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZSho
YXNoKSwgV1RGTW92ZShvcHRpb25zKSwgbWFrZVdlYWtQdHIobV93ZWJQYWdlUHJveHkpLCBXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgR2xvYmFsRnJh
bWVJZGVudGlmaWVyIHsgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksIGZyYW1lSWQgfSwgV1RG
TW92ZShmcmFtZUluZm8pLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0cmluZygpIH0sIFdURk1v
dmUoaGFuZGxlcikpOworICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3Zl
KG9wdGlvbnMpLCBtYWtlV2Vha1B0cihtX3dlYlBhZ2VQcm94eSksIFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIg
eyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJhbWVJZCB9LCBXVEZNb3ZlKGZyYW1lSW5m
byksIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZSho
YW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Omhh
bmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmIGRhdGEsIFJlcXVlc3RD
b21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAppbmRleCA5ZDA4OGU3MDIwN2VkYjYxMzA4Yzg1YzcxMTJkMzVkZWNiOTk5ZjA2Li41MWU3M2E2
ZjJmOTcyYzc2NjNlMjg2MDAyZDQ5YTQ3ZDM4YzFkZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTY5LDEyICs2OSwxMiBAQCB2b2lkIFdlYkF1dGhuQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgYwog
CiB2b2lkIFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWFrZUNyZWRlbnRpYWwoVmVj
dG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYm
IG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhh
bmRsZXImJiBoYW5kbGVyKQogewotICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBX
VEZNb3ZlKG9wdGlvbnMpLCBudWxscHRyLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpV
bmF2YWlsYWJsZSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCB7IH0sIHByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSwgU3RyaW5nKCkgfSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7
IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG51bGxwdHIsIFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIHsgfSwg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGhhbmRs
ZXIpKTsKIH0KIAogdm9pZCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldEFzc2Vy
dGlvbihWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMmJiBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKLSAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZSho
YXNoKSwgV1RGTW92ZShvcHRpb25zKSwgbnVsbHB0ciwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgeyB9LCBwcm9jZXNzaW5n
VXNlckdlc3R1cmUsIFN0cmluZygpIH0sIFdURk1vdmUoaGFuZGxlcikpOworICAgIGhhbmRsZVJl
cXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBudWxscHRyLCBXZWJBdXRo
ZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0
LCB7IH0sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92
ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpo
YW5kbGVSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiBkYXRhLCBSZXF1ZXN0
Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJkMWNlMzI0Y2ExYjM5ZTE0ZjgwMTc3YWNmYTM5OWYx
ZTRlZjQwZDIuLmJjNTgyMGMxNWIzNzRlZmEwYWEyOGRmN2M3YTgzNWJlMWIxMjk1NDEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAyMS0wMS0yOSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJBdXRobl0gT3B0aW1pemUgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVn
YXRlIGZvciBuYXRpdmUgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjExMjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxNTA5MTQxPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAg
ICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOnNlbGVjdEFz
c2VydGlvblJlc3BvbnNlOnNvdXJjZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1b
VGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBwYW5lbDpyZXF1ZXN0TEFDb250ZXh0
Rm9yVXNlclZlcmlmaWNhdGlvbldpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OldlYkNvcmU6OnJlc2V0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorCiAyMDIxLTAxLTI5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CiAKICAgICAgICAgVXBncmFkZSBtb3Rpb25tYXJrMS4xLnBsYW4gdG8gcjI3MjA0NApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDA1ZGI0ZmYxZTQ1YTc4MGVkZjY2
MTIyMmJiNjg1NzdkNjc0Zjc3ZTIuLjNjMjdkOGQxOTI5ZDRmNjI0YjkyNGI0ZGI5NDI0MjRlNDZj
MTFmYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTc4LDYgKzc4
LDcgQEAgc3RhdGljIFN0cmluZyB0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0ID0KICAgICAiUlE9
PSI7CiBzdGF0aWMgU3RyaW5nIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0ID0gIm9tSnBaRW9B
QVFJREJBVUdCd2dKWkc1aGJXVmtTbTlvYmc9PSI7IC8vIHsgImlkIjogaCcwMDAxMDIwMzA0MDUw
NjA3MDgwOScsICJuYW1lIjogIkpvaG4iIH0KIHN0YXRpYyBTdHJpbmcgd2ViQXV0aGVudGljYXRp
b25QYW5lbFNlbGVjdGVkQ3JlZGVudGlhbE5hbWU7CitzdGF0aWMgYm9vbCBsYUNvbnRleHRSZXF1
ZXN0ZWQgPSBmYWxzZTsKIAogQGludGVyZmFjZSBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbERl
bGVnYXRlIDogTlNPYmplY3QgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4KIEBl
bmQKQEAgLTE1MCw2ICsxNTEsOSBAQCAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsICopcGFuZWwgcmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOgogLSAodm9pZClw
YW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHNlbGVjdEFzc2VydGlvblJl
c3BvbnNlOihOU0FycmF5IDwgX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAq
PiAqKXJlc3BvbnNlcyBzb3VyY2U6KF9XS1dlYkF1dGhlbnRpY2F0aW9uU291cmNlKXNvdXJjZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25S
ZXNwb25zZSAqKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGlmIChyZXNwb25zZXMuY291bnQg
PT0gMSkgeworICAgICAgICBhdXRvIGxhQ29udGV4dCA9IGFkb3B0TlMoW1tMQUNvbnRleHQgYWxs
b2NdIGluaXRdKTsKKyAgICAgICAgW3Jlc3BvbnNlc1swXSBzZXRMQUNvbnRleHQ6bGFDb250ZXh0
LmdldCgpXTsKKwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXNbMF0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTU3LDggKzE2MSwxMyBAQCAtICh2b2lkKXBhbmVsOihf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6
KE5TQXJyYQogICAgIC8vIFJlc3BvbnNlcyByZXR1cm5lZCBmcm9tIExvY2FsQXV0aGVudGljYXRv
ciBpcyBpbiB0aGUgb3JkZXIgb2YgTFJVLiBUaGVyZWZvcmUsIHdlIHVzZSB0aGUgbGFzdCBpdGVt
IHRvIHBvcHVsYXRlIGl0IHRvCiAgICAgLy8gdGhlIGZpcnN0IHRvIHRlc3QgaXRzIGNvcnJlY3Ru
ZXNzLgogICAgIGlmIChzb3VyY2UgPT0gX1dLV2ViQXV0aGVudGljYXRpb25Tb3VyY2VMb2NhbCkg
ewotICAgICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsU2VsZWN0ZWRDcmVkZW50aWFsTmFtZSA9
IHJlc3BvbnNlcy5sYXN0T2JqZWN0Lm5hbWU7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
c3BvbnNlcy5sYXN0T2JqZWN0KTsKKyAgICAgICAgYXV0byAqb2JqZWN0ID0gcmVzcG9uc2VzLmxh
c3RPYmplY3Q7CisKKyAgICAgICAgYXV0byBsYUNvbnRleHQgPSBhZG9wdE5TKFtbTEFDb250ZXh0
IGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtvYmplY3Qgc2V0TEFDb250ZXh0OmxhQ29udGV4dC5n
ZXQoKV07CisKKyAgICAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFNlbGVjdGVkQ3JlZGVudGlh
bE5hbWUgPSBvYmplY3QubmFtZTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIob2JqZWN0KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTgwLDYgKzE4OSwxMiBAQCAtICh2b2lkKXBh
bmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgZGVjaWRlUG9saWN5Rm9yTG9j
YWxBdXRoZW50aWNhdAogICAgIGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsQXV0aGVudGljYXRvclBv
bGljeSk7CiB9CiAKKy0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilw
YW5lbCByZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbldpdGhDb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTEFDb250ZXh0ICpjb250ZXh0KSljb21wbGV0aW9uSGFuZGxlcgorewor
ICAgIGxhQ29udGV4dFJlcXVlc3RlZCA9IHRydWU7CisgICAgY29tcGxldGlvbkhhbmRsZXIobmls
KTsKK30KKwogQGVuZAogCiBAaW50ZXJmYWNlIFRlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRmFr
ZURlbGVnYXRlIDogTlNPYmplY3QgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4K
QEAgLTMyMyw2ICszMzgsNyBAQCBzdGF0aWMgdm9pZCByZXNldCgpCiAgICAgd2ViQXV0aGVudGlj
YXRpb25QYW5lbE51bGxVc2VySGFuZGxlID0gTk87CiAgICAgbG9jYWxBdXRoZW50aWNhdG9yUG9s
aWN5ID0gX1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5RGlzYWxsb3c7CiAgICAgd2ViQXV0aGVu
dGljYXRpb25QYW5lbFNlbGVjdGVkQ3JlZGVudGlhbE5hbWUgPSBlbXB0eVN0cmluZygpOworICAg
IGxhQ29udGV4dFJlcXVlc3RlZCA9IGZhbHNlOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja1BhbmVs
KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKnBhbmVsLCBOU1N0cmluZyAqcmVseWluZ1BhcnR5
SUQsIE5TQXJyYXkgKnRyYW5zcG9ydHMsIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSB0eXBlKQpA
QCAtMTc2MCw3ICsxNzc2LDcgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBNYWtlQ3Jl
ZGVudGlhbFNQSVRpbWVvdXQpCiAgICAgYXV0byB1c2VyID0gYWRvcHROUyhbW19XS1B1YmxpY0tl
eUNyZWRlbnRpYWxVc2VyRW50aXR5IGFsbG9jXSBpbml0V2l0aE5hbWU6QCJqYXBwbGVzZWVkQGV4
YW1wbGUuY29tIiBpZGVudGlmaWVyOm5zSWRlbnRpZmllciBkaXNwbGF5TmFtZTpAIkogQXBwbGVz
ZWVkIl0pOwogICAgIE5TQXJyYXk8X1dLUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnMgKj4g
KnB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWF0ZXJzID0gQFsgcGFyYW1ldGVycy5nZXQoKSBdOwog
ICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMoW1tfV0tQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zIGFsbG9jXSBpbml0V2l0aFJlbHlpbmdQYXJ0eTpycC5nZXQoKSB1c2VyOnVzZXIu
Z2V0KCkgcHVibGljS2V5Q3JlZGVudGlhbFBhcmFtYXRlcnM6cHVibGljS2V5Q3JlZGVudGlhbFBh
cmFtYXRlcnNdKTsKLSAgICBbb3B0aW9ucyBzZXRUaW1lb3V0OkAxMjBdOworICAgIFtvcHRpb25z
IHNldFRpbWVvdXQ6QDEwXTsKIAogICAgIGF1dG8gcGFuZWwgPSBhZG9wdE5TKFtbX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbCBhbGxvY10gaW5pdF0pOwogICAgIFtwYW5lbCBtYWtlQ3JlZGVudGlh
bFdpdGhIYXNoOm5zSGFzaCBvcHRpb25zOm9wdGlvbnMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6
XihfV0tBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIE5TRXJyb3Ig
KmVycm9yKSB7CkBAIC0xNzczLDYgKzE3ODksNDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBh
bmVsLCBNYWtlQ3JlZGVudGlhbFNQSVRpbWVvdXQpCiAgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50
aWNhdGlvblBhbmVsUmFuKTsKIH0KIAorLy8gRm9yIG1hY09TLCBvbmx5IGludGVybmFsIGJ1aWxk
cyBjYW4gc2lnbiBrZXljaGFpbiBlbnRpdGxlbW5ldHMKKy8vIHdoaWNoIGFyZSByZXF1aXJlZCB0
byBydW4gbG9jYWwgYXV0aGVudGljYXRvciB0ZXN0cy4KKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKSB8fCBQTEFURk9STShJT1MpCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE1ha2VD
cmVkZW50aWFsTEEpCit7CisgICAgcmVzZXQoKTsKKworICAgIHVpbnQ4X3QgaWRlbnRpZmllcltd
ID0geyAweDAxLCAweDAyLCAweDAzLCAweDA0IH07CisgICAgdWludDhfdCBoYXNoW10gPSB7IDB4
MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDEsIDB4MDIs
IDB4MDMsIDB4MDQsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDEsIDB4MDIsIDB4MDMsIDB4
MDQsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDEs
IDB4MDIsIDB4MDMsIDB4MDQgfTsKKyAgICBOU0RhdGEgKm5zSWRlbnRpZmllciA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczppZGVudGlmaWVyIGxlbmd0aDpzaXplb2YoaWRlbnRpZmllcildOworICAg
IE5TRGF0YSAqbnNIYXNoID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmhhc2ggbGVuZ3RoOnNpemVv
ZihoYXNoKV07CisgICAgYXV0byBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW19XS1B1YmxpY0tleUNy
ZWRlbnRpYWxQYXJhbWV0ZXJzIGFsbG9jXSBpbml0V2l0aEFsZ29yaXRobTpALTddKTsKKworICAg
IGF1dG8gcnAgPSBhZG9wdE5TKFtbX1dLUHVibGljS2V5Q3JlZGVudGlhbFJlbHlpbmdQYXJ0eUVu
dGl0eSBhbGxvY10gaW5pdFdpdGhOYW1lOkAiZXhhbXBsZS5jb20iXSk7CisgICAgW3JwIHNldElk
ZW50aWZpZXI6QCJleGFtcGxlLmNvbSJdOworICAgIGF1dG8gdXNlciA9IGFkb3B0TlMoW1tfV0tQ
dWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eSBhbGxvY10gaW5pdFdpdGhOYW1lOkAiamFwcGxl
c2VlZEBleGFtcGxlLmNvbSIgaWRlbnRpZmllcjpuc0lkZW50aWZpZXIgZGlzcGxheU5hbWU6QCJK
IEFwcGxlc2VlZCJdKTsKKyAgICBOU0FycmF5PF9XS1B1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0
ZXJzICo+ICpwdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1hdGVycyA9IEBbIHBhcmFtZXRlcnMuZ2V0
KCkgXTsKKyAgICBhdXRvIG9wdGlvbnMgPSBhZG9wdE5TKFtbX1dLUHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucyBhbGxvY10gaW5pdFdpdGhSZWx5aW5nUGFydHk6cnAuZ2V0KCkgdXNl
cjp1c2VyLmdldCgpIHB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWF0ZXJzOnB1YmxpY0tleUNyZWRl
bnRpYWxQYXJhbWF0ZXJzXSk7CisKKyAgICBhdXRvIHBhbmVsID0gYWRvcHROUyhbW19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwgYWxsb2NdIGluaXRdKTsKKyAgICBbcGFuZWwgc2V0TW9ja0NvbmZp
Z3VyYXRpb246QHsgQCJwcml2YXRlS2V5QmFzZTY0IjogdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2
NCB9XTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlv
blBhbmVsRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbcGFuZWwgc2V0RGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOworCisgICAgW3BhbmVsIG1ha2VDcmVkZW50aWFsV2l0aEhhc2g6bnNIYXNo
IG9wdGlvbnM6b3B0aW9ucy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAg
ICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbiA9IHRydWU7CisgICAgICAgIGNsZWFuVXBLZXlj
aGFpbigiZXhhbXBsZS5jb20iKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShsYUNvbnRleHRSZXF1
ZXN0ZWQpOworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisKKyAgICAgICAgRVhQRUNUX05P
VF9OVUxMKHJlc3BvbnNlKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFtyZXNwb25zZS5yYXdJ
ZCBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0sICJTTVNYSG5nRjdoRU9zRWxBNzND
M1JZKzhiUjQ9Iik7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3BvbnNlLmV4dGVuc2lvbnMpOwor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3Jlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0IGJhc2U2
NEVuY29kZWRTdHJpbmdXaXRoT3B0aW9uczowXSwgIm8yTm1iWFJrYm05dVpXZGhkSFJUZEcxMG9H
aGhkWFJvUkdGMFlWaVlvM21tOXU2dnVhVmVONHdSZ0RUaWRSNW9MNnVmTFRDckU5SVNWWWJPR1Vk
RkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGRWpFbHg1NEJlNFJEckJKUU85d3QwV1B2RzBl
cFFFQ0F5WWdBU0ZZSURqL3p4U2t6S2dhQnVTM2NkV0RGNTU4b2Y4QWFJcGdGcHNqRi9RbTE3NDlJ
bGdnVkJKUGdxVUl3ZmhXSEo5MW5iN1VQSDc2YzArV0ZPelpLc2xQeXlGc2U0Zz0iKTsKKyAgICB9
XTsKKyAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4pOworfQorI2VuZGlm
CisKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zTWluaW11bikKIHsKICAgICBhdXRvIG9wdGlvbnMgPSBhZG9wdE5TKFtbX1dLUHVi
bGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIGFsbG9jXSBpbml0XSk7CkBAIC0xODcwLDYg
KzE5MjYsNDMgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBHZXRBc3NlcnRpb25TUElU
aW1lb3V0KQogICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7CiB9CiAK
Ky8vIEZvciBtYWNPUywgb25seSBpbnRlcm5hbCBidWlsZHMgY2FuIHNpZ24ga2V5Y2hhaW4gZW50
aXRsZW1uZXRzCisvLyB3aGljaCBhcmUgcmVxdWlyZWQgdG8gcnVuIGxvY2FsIGF1dGhlbnRpY2F0
b3IgdGVzdHMuCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgUExBVEZPUk0oSU9TKQor
VEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBHZXRBc3NlcnRpb25MQSkKK3sKKyAgICByZXNl
dCgpOworCisgICAgQVNTRVJUX1RSVUUoYWRkS2V5VG9LZXljaGFpbih0ZXN0RVMyNTZQcml2YXRl
S2V5QmFzZTY0LCAiIiwgdGVzdFVzZXJFbnRpdHlCdW5kbGVCYXNlNjQpKTsKKworICAgIHVpbnQ4
X3QgaGFzaFtdID0geyAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAw
eDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAx
LCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAw
eDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0IH07CisgICAgTlNEYXRhICpuc0hhc2gg
PSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6aGFzaCBsZW5ndGg6c2l6ZW9mKGhhc2gpXTsKKworICAg
IGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMoW1tfV0tQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMgYWxsb2NdIGluaXRdKTsKKyAgICBbb3B0aW9ucyBzZXRSZWx5aW5nUGFydHlJZGVudGlm
aWVyOkAiIl07CisKKyAgICBhdXRvIHBhbmVsID0gYWRvcHROUyhbW19XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwgYWxsb2NdIGluaXRdKTsKKyAgICBbcGFuZWwgc2V0TW9ja0NvbmZpZ3VyYXRpb246
QHsgfV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRp
b25QYW5lbERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3BhbmVsIHNldERlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKKworICAgIFtwYW5lbCBnZXRBc3NlcnRpb25XaXRoSGFzaDpuc0hhc2gg
b3B0aW9uczpvcHRpb25zLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlICpyZXNwb25zZSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAg
d2ViQXV0aGVudGljYXRpb25QYW5lbFJhbiA9IHRydWU7CisgICAgICAgIGNsZWFuVXBLZXljaGFp
bigiIik7CisKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworCisgICAgICAgIEVYUEVDVF9O
T1RfTlVMTChyZXNwb25zZSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbcmVzcG9uc2UucmF3
SWQgYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdLCAiU01TWEhuZ0Y3aEVPc0VsQTcz
QzNSWSs4YlI0PSIpOworICAgICAgICBFWFBFQ1RfTlVMTChyZXNwb25zZS5leHRlbnNpb25zKTsK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFtyZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSBiYXNl
NjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0sICI0N0RFUXBqOEhCU2ErL1RJbVcrNUpDZXVR
ZVJrbTVOTXBKV1pHM2hTdUZVRkFBQUFBQT09Iik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChy
ZXNwb25zZS5zaWduYXR1cmUpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3Jlc3BvbnNlLnVz
ZXJIYW5kbGUgYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdLCAiQUFFQ0F3UUZCZ2NJ
Q1E9PSIpOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJh
bik7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9BVVRITikK
</data>
<flag name="review"
          id="436879"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418937</attachid>
            <date>2021-02-01 16:02:15 -0800</date>
            <delta_ts>2021-02-01 18:50:07 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-221125-20210201160214.patch</filename>
            <type>text/plain</type>
            <size>44405</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE1MWY0MmY2ZDE4YWM2NWY2
ZGM1MmVlY2VkZGVlMGZiMDM1ZTU1YTYuLjFjMTEzMTY2ZDc0ZjRhN2UxY2Q4ZWYwOWRkZTNlMWI1
Zjc1ODdkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMjEtMDEtMjkgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIE9wdGltaXpl
IF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBmb3IgbmF0aXZlIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMTI1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83MTUwOTE0MT4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBG
dWxnaGFtLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFpbmx5IGRvZXMgdGhlIGZvbGxvd2luZyBm
ZXcgdGhpbmdzOgorICAgICAgICAxLiBJdCBjb25uZWN0cyB0aGUgbmV3IFNQSSB3aXRoIHRoZSBl
eGlzdGluZyBtb2NrIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgc3VjaCB0aGF0IHdlIGNhbiBtb2Nr
IHRlc3QgaXQuCisgICAgICAgIDIuIEl0IGFkZHMgYSBuZXcgbW9kZSBpbiBBdXRoZW50aWNhdG9y
TWFuYWdlciB0byBjb25uZWN0IGl0IHRvIHRoZSBuZXcgX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bERlbGVnYXRlIG9iamVjdC4KKyAgICAgICAgMy4gSXQgYWRzcyBhIG5ldyBTUEkgdG8gX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlOiAtW3BhbmVsOnJlcXVlc3RMQUNvbnRleHRGb3JV
c2VyVmVyaWZpY2F0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOl0sCisgICAgICAgIGFuZCBhZGRz
IGEgbmV3IG1ldGhvZCB3aXRoaW4gX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZSB0byBhY2NlcHQgYW4gTEFDb250ZXh0IGZyb20gdGhlIGNhbGxlciB0byB1bmxvY2sKKyAgICAg
ICAgdGhlIGtleWNoYWluLgorICAgICAgICA0LiBJdCBlbmFibGVzIC1bX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbCBjYW5jZWxdIHRvIHVzZSB0aGUgbmV3IGNhbmNlbCBtZXRob2QuCisKKyAgICAg
ICAgQ292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAgICAgQWNjZXB0cyBhIExB
Q29udGV4dCBvYmplY3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuY3BwOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsKToKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25Q
YW5lbDo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWw6OmNhbmNlbCBjb25zdCk6CisgICAgICAgIChBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6
OnNldE1vY2tDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudDo6cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24gY29uc3QpOgor
ICAgICAgICBBZGRzIG5ldyBTUEkgYW5kIG1vY2tpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2UubW06CisgICAgICAgICgtW19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2Ugc2V0TEFDb250ZXh0Ol0pOgorICAgICAgICBBY2NlcHRzIGEgTEFDb250ZXh0IG9iamVjdC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbToKKyAgICAgICAgKC1bX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBzZXRNb2NrQ29u
ZmlndXJhdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxGb3JUZXN0aW5nLmg6CisgICAgICAgIEFkZHMgbmV3IFNQSSBhbmQgbW9j
a2luZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpo
YW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXI6OmVu
YWJsZU1vZGVybldlYkF1dGhlbnRpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGlj
YXRvck1hbmFnZXI6OmVuYWJsZU5hdGl2ZVN1cHBvcnQpOgorICAgICAgICAoV2ViS2l0OjpBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6YXV0aGVudGljYXRvckFkZGVkKToKKyAgICAgICAgKFdlYktpdDo6
QXV0aGVudGljYXRvck1hbmFnZXI6OnJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXI6OnJ1blByZXNlbnRlcik6
CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpkaXNwYXRjaFBhbmVsQ2xp
ZW50Q2FsbCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmg6CisgICAgICAgIEFkZHMgYSBuZXcgbW9kZSB0byBwb3dlciB0
aGUgbmF0aXZlIEFQSS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW06
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OldlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2xpZW50OjpyZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbiBjb25zdCk6
CisgICAgICAgIEFjY2VwdHMgYSBMQUNvbnRleHQgb2JqZWN0LgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24u
bW06CisgICAgICAgIChXZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OnZlcmlmeVVzZXIpOgor
ICAgICAgICBBZGRzIG5ldyBtb2NraW5nIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmg6CisgICAg
ICAgIEFkZHMgdGhlIG5ldyB3ZWFrIHBhbmVsLgorCiAyMDIxLTAxLTI5ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQWRkIGNvbS5hcHBsZS5wcml2
YXRlLnNlY3VyZWppdCBlbnRpdGxlbWVudCBmb3IgSklUQ2FnZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFz
c2VydGlvblJlc3BvbnNlLmgKaW5kZXggMDE3MDA4MTg2MTc5NjIyNjRmOGE0MGRjYTljNjQyMzI2
ZGEwZmZkNS4uNTIzMzUzNDgxZTJiNmRhZGU4MDM4ZmRkYzgyZGVhMDgzNGRiYzAzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5oCkBAIC00Myw2ICs0Myw4IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBXVEY6OlN0cmluZyYgZGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3BvbnNlLT5kaXNwbGF5TmFtZSgpOyB9CiAgICAgUmVmUHRyPERhdGE+IHVzZXJIYW5kbGUo
KSBjb25zdDsKIAorICAgIHZvaWQgc2V0TEFDb250ZXh0KExBQ29udGV4dCAqY29udGV4dCkgeyBt
X3Jlc3BvbnNlLT5zZXRMQUNvbnRleHQoY29udGV4dCk7IH0KKwogICAgIFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSogcmVzcG9uc2UoKSB7IHJldHVybiBtX3Jlc3BvbnNl
LnB0cigpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHAKaW5kZXggZmZmMzMwMThhMjBh
MWM4N2UwYzA3ZDQ4OTQ4Yzc3NzM0YTY3YTVlOC4uM2ZhYWM4OWU1ZDVkZmY5MjZjNDhkZGQ1ZTA3
MmUxN2ZkNDlmNDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIgogI2luY2x1ZGUgIkF1
dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCisjaW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgogCiBu
YW1lc3BhY2UgQVBJIHsKQEAgLTQ1LDYgKzQ2LDcgQEAgV2ViQXV0aGVudGljYXRpb25QYW5lbDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbCgpCiAgICAgOiBtX21hbmFnZXIobWFrZVVuaXF1ZTxBdXRo
ZW50aWNhdG9yTWFuYWdlcj4oKSkKICAgICAsIG1fY2xpZW50KG1ha2VVbmlxdWVSZWY8V2ViQXV0
aGVudGljYXRpb25QYW5lbENsaWVudD4oKSkKIHsKKyAgICBtX21hbmFnZXItPmVuYWJsZU5hdGl2
ZVN1cHBvcnQoKTsKIH0KIAogV2ViQXV0aGVudGljYXRpb25QYW5lbDo6V2ViQXV0aGVudGljYXRp
b25QYW5lbChjb25zdCBBdXRoZW50aWNhdG9yTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV1RGOjpT
dHJpbmcmIHJwSWQsIGNvbnN0IFRyYW5zcG9ydFNldCYgdHJhbnNwb3J0cywgQ2xpZW50RGF0YVR5
cGUgdHlwZSkKQEAgLTY4LDEzICs3MCwzMCBAQCBXZWJBdXRoZW50aWNhdGlvblBhbmVsOjp+V2Vi
QXV0aGVudGljYXRpb25QYW5lbCgpID0gZGVmYXVsdDsKIHZvaWQgV2ViQXV0aGVudGljYXRpb25Q
YW5lbDo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYgcmVxdWVz
dCwgQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQobV9tYW5hZ2VyKTsKKyAgICBy
ZXF1ZXN0LndlYWtQYW5lbCA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKICAgICBtX21hbmFnZXItPmhh
bmRsZVJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2
b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6OmNhbmNlbCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1f
d2Vha01hbmFnZXIpCisgICAgaWYgKG1fd2Vha01hbmFnZXIpIHsKICAgICAgICAgbV93ZWFrTWFu
YWdlci0+Y2FuY2VsUmVxdWVzdCgqdGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX21hbmFnZXItPmNhbmNlbCgpOworfQorCit2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWw6
OnNldE1vY2tDb25maWd1cmF0aW9uKFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIEFTU0VSVChtX21hbmFnZXIpOworCisg
ICAgaWYgKCFtX21hbmFnZXItPmlzTW9jaygpKSB7CisgICAgICAgIG1fbWFuYWdlciA9IG1ha2VV
bmlxdWU8TW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyPihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsK
KyAgICAgICAgbV9tYW5hZ2VyLT5lbmFibGVOYXRpdmVTdXBwb3J0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgc3RhdGljX2Nhc3Q8TW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyKj4obV9t
YW5hZ2VyLmdldCgpKS0+c2V0VGVzdENvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9u
KSk7CiB9CiAKIHZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbDo6c2V0Q2xpZW50KFVuaXF1ZVJl
ZjxXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCmlu
ZGV4IDgzNjIwZGI0YjFlYzZmZTI3MzNjNjY5YWYyMTJlODk2M2RhNTFmMGMuLjMyY2E1ZjY5Zjk5
YWNiMWExYWM4ODQzY2YzNTIwNDljYmFlN2EyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaApAQCAtMzksNiAr
MzksNyBAQCBlbnVtIGNsYXNzIENsaWVudERhdGFUeXBlIDogYm9vbDsKIGNsYXNzIEF1dGhlbnRp
Y2F0b3JSZXNwb25zZTsKIAogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1Y3QgTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02
MSw2ICs2Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaGFuZGxlUmVxdWVzdChXZWJLaXQ6Oldl
YkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiwgQ2FsbGJhY2smJik7CiAgICAgdm9pZCBjYW5j
ZWwoKSBjb25zdDsKKyAgICB2b2lkIHNldE1vY2tDb25maWd1cmF0aW9uKFdlYkNvcmU6Ok1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJik7CiAKICAgICBjb25zdCBXZWJBdXRoZW50
aWNhdGlvblBhbmVsQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC5nZXQo
KTsgfQogICAgIHZvaWQgc2V0Q2xpZW50KFVuaXF1ZVJlZjxXZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2xpZW50PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4IGEzNjhjMzdhZWVmZGUz
MTkzMGVlMTgzYjZlNWYxOGNhYmQwMmRjNTUuLjQwZjI3ZTczMmNmZTgxZjYzOGE4ZTczNjEyMDZl
ZDY4NjE0ODhkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElX
ZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaApAQCAtNTIsNiArNTIsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQaW4odWludDY0X3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
Y29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihXVEY6OlN0cmluZygpKTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiYsIFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25Tb3Vy
Y2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlKik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlvbkhhbmRs
ZXIobnVsbHB0cik7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRo
ZW50aWNhdG9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0
b3JQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVy
KFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yUG9saWN5OjpEaXNhbGxvdyk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24oQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29t
cGxldGlvbkhhbmRsZXIobnVsbHB0cik7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgKaW5kZXggNTY4OGFm
NDFiYTViNGRkOWUyZGI4YmY5N2I5YzkwZTE1MWFjYTY0Yi4uNjlhMDQxMDNmN2Y1YjU2YTc4OWVm
NDVjY2UyOTVmNjgzYjhjNTg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Bc3Nl
cnRpb25SZXNwb25zZS5oCkBAIC0yOCw2ICsyOCw4IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCiAKK0BjbGFzcyBMQUNvbnRleHQ7CisKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMS4w
KSwgaW9zKDE0LjApKQogQGludGVyZmFjZSBfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlIDogTlNPYmplY3QKIApAQCAtMzUsNiArMzcsOCBAQCBXS19DTEFTU19BVkFJTEFCTEUo
bWFjb3MoMTEuMCksIGlvcygxNC4wKSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwg
Y29weSkgTlNTdHJpbmcgKmRpc3BsYXlOYW1lOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBOU0RhdGEgKnVzZXJIYW5kbGU7CiAKKy0gKHZvaWQpc2V0TEFDb250ZXh0OihM
QUNvbnRleHQgKiljb250ZXh0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLm1tCmluZGV4IDk3MWYyMzY2
NDAzMDU4MzkwMzRlMDkxODQ4NDdiOTdjZTFkOWFhYTEuLmYyMjJhNWFjYTA1NGNmMGVlYTM0ZWI1
YTI4ZDM2M2QyOTJiN2ZjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlLm1tCkBAIC01NCw2ICs1NCwxNiBAQCAtIChOU0RhdGEgKil1c2VySGFuZGxl
CiAgICAgcmV0dXJuIHdyYXBwZXIoX3Jlc3BvbnNlLT51c2VySGFuZGxlKCkpOwogfQogCisjZW5k
aWYgLy8gRU5BQkxFKFdFQl9BVVRITikKKworLSAodm9pZClzZXRMQUNvbnRleHQ6KExBQ29udGV4
dCAqKWNvbnRleHQKK3sKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIF9yZXNwb25zZS0+c2V0
TEFDb250ZXh0KGNvbnRleHQpOworI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQog
I3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCiAKIC0gKEFQSTo6
T2JqZWN0JilfYXBpT2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAppbmRleCAzYTcyYzU1
ZjY2ODk0YTcwOGYwYWRkYWM3ODQ0YTFmMTRlNzRhMGU4Li44NGZiY2NkZmY3YTk3MWNmNTc0Mjc4
MTI1MzA4NWRlYmZiZmExNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKQEAgLTM0LDYg
KzM0LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIEBjbGFzcyBfV0tQdWJsaWNLZXlDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnM7CiBAY2xhc3MgX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRp
b25SZXNwb25zZTsKIEBjbGFzcyBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsOworQGNsYXNzIExB
Q29udGV4dDsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbFJlc3VsdCkgewogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHRVbmF2
YWlsYWJsZSwKQEAgLTc4LDE3ICs3OSwxOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBf
V0tXZWJBdXRoZW50aWNhdGlvblNvdXJjZSkgewogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uU291
cmNlRXh0ZXJuYWwsCiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7
CiAKLS8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNzE1MDkxNDE+IE9wdGltaXplIHRoZSBkZWxl
Z2F0ZSBmb3IgdGhlIEF1dGhlbnRpY2F0aW9uU2VydmljZS5mcmFtZXdvcmsuCiBAcHJvdG9jb2wg
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlIDxOU09iamVjdD4KIAogQG9wdGlvbmFs
CiAKLS0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCB1cGRh
dGVXZWJBdXRoZW50aWNhdGlvblBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRl
KXVwZGF0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1LjQpLCBpb3MoMTMuNCkpOwotLSAo
dm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRpc21pc3NXZWJB
dXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdDooX1dLV2ViQXV0aGVudGljYXRpb25SZXN1bHQp
cmVzdWx0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSk7Ci0tICh2
b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgcmVxdWVzdFBJTldp
dGhSZW1haW5pbmdSZXRyaWVzOihOU1VJbnRlZ2VyKXJldHJpZXMgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSk7CistICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsICopcGFuZWwgdXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5lbDooX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZSl1cGRhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MS4wKSwgaW9zKDE0LjApKTsKKy0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwgKilwYW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6KE5TVUludGVnZXIpcmV0
cmllcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsKIC0gKHZvaWQp
cGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3NlcnRpb25S
ZXNwb25zZTooTlNBcnJheSA8IF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Ug
Kj4gKilyZXNwb25zZXMgc291cmNlOihfV0tXZWJBdXRoZW50aWNhdGlvblNvdXJjZSlzb3VyY2Ug
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9u
UmVzcG9uc2UgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4w
KSwgaW9zKDE0LjApKTsKLS0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwg
KilwYW5lbCBkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0b3JXaXRoQ29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeSBwb2xpY3kpKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7Cist
ICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgcmVxdWVzdExB
Q29udGV4dEZvclVzZXJWZXJpZmljYXRpb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KExBQ29udGV4dCAqY29udGV4dCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLy8gRklYTUU6IDxyZGFyOi8v
cHJvYmxlbS83MTUwOTg0OD4gRGVwcmVjYXRlIHRoZSBmb2xsb3dpbmcgZGVsZWdhdGVzLgorLSAo
dm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGRlY2lkZVBvbGlj
eUZvckxvY2FsQXV0aGVudGljYXRvcldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dL
TG9jYWxBdXRoZW50aWNhdG9yUG9saWN5IHBvbGljeSkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsKKy0gKHZvaWQpcGFuZWw6KF9XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwgKilwYW5lbCBkaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5l
bFdpdGhSZXN1bHQ6KF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0KXJlc3VsdCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpOwogQGVuZAogCiBXS19DTEFTU19BVkFJTEFC
TEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0K
aW5kZXggMzJmMTBlMjM4NDI4N2RkMGFkZmJmMzZkNWY0ZmJhY2E4NzJiYmJkMS4uOTcwNmQ1YjIx
YWJhMzg4ZTBkYmZjZmJiZWFjYzk3MGQyYTg0MTllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwubW0KQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbXBvcnQgIl9XS1B1YmxpY0tleUNyZWRlbnRpYWxV
c2VyRW50aXR5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdl
YkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KQEAgLTM0Nyw3ICszNDgsNyBAQCAtICh2
b2lkKW1ha2VDcmVkZW50aWFsV2l0aEhhc2g6KE5TRGF0YSAqKWhhc2ggb3B0aW9uczooX1dLUHVi
bGljS2V5Q3JlZGVudGlhbENyZQogICAgICAgICAgICAgaGFuZGxlcihuaWwsIFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
bmlsXSk7CiAgICAgICAgIH0pOwogICAgIH07Ci0gICAgX3BhbmVsLT5oYW5kbGVSZXF1ZXN0KHsg
dmVjdG9yRnJvbU5TRGF0YShoYXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVy
dFRvQ29yZUNyZWF0aW9uT3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJL
aXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBX
VEY6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5nKCkgfSwgV1RGTW92ZShjYWxsYmFjaykpOwor
ICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7IHZlY3RvckZyb21OU0RhdGEoaGFzaCksIFtfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVDcmVhdGlvbk9wdGlvbnNXaXRoT3B0
aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVz
dWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmlu
ZygpLCBudWxscHRyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKICNlbmRpZgogfQogCkBAIC0zOTQs
NyArMzk1LDcgQEAgLSAodm9pZClnZXRBc3NlcnRpb25XaXRoSGFzaDooTlNEYXRhICopaGFzaCBv
cHRpb25zOihfV0tQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWUKICAgICAgICAgICAgIGhhbmRsZXIo
bmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JV
bmtub3duIHVzZXJJbmZvOm5pbF0pOwogICAgICAgICB9KTsKICAgICB9OwotICAgIF9wYW5lbC0+
aGFuZGxlUmVxdWVzdCh7IHZlY3RvckZyb21OU0RhdGEoaGFzaCksIFtfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsIGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNd
LCBudWxscHRyLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxh
YmxlLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5nKCkgfSwgV1RGTW92
ZShjYWxsYmFjaykpOworICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7IHZlY3RvckZyb21OU0Rh
dGEoaGFzaCksIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVSZXF1ZXN0
T3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJLaXQ6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIHsg
fSwgdHJ1ZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogI2VuZGlm
CiB9CiAKQEAgLTQwNyw2ICs0MDgsMjEgQEAgKyAoQk9PTClpc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGUKICNlbmRpZgogfQogCistICh2b2lkKXNldE1vY2tDb25m
aWd1cmF0aW9uOihOU0RpY3Rpb25hcnkgKiljb25maWd1cmF0aW9uCit7CisjaWYgRU5BQkxFKFdF
Ql9BVVRITikKKyAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpMb2NhbENvbmZpZ3VyYXRpb24gbG9jYWxDb25maWd1cmF0aW9uOworICAgIGxvY2FsQ29uZmln
dXJhdGlvbi51c2VyVmVyaWZpY2F0aW9uID0gV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6VXNlclZlcmlmaWNhdGlvbjo6WWVzOworICAgIGlmIChjb25maWd1cmF0
aW9uW0AicHJpdmF0ZUtleUJhc2U2NCJdKQorICAgICAgICBsb2NhbENvbmZpZ3VyYXRpb24ucHJp
dmF0ZUtleUJhc2U2NCA9IGNvbmZpZ3VyYXRpb25bQCJwcml2YXRlS2V5QmFzZTY0Il07CisKKyAg
ICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1vY2tDb25maWd1
cmF0aW9uOworICAgIG1vY2tDb25maWd1cmF0aW9uLmxvY2FsID0gV1RGTW92ZShsb2NhbENvbmZp
Z3VyYXRpb24pOworCisgICAgX3BhbmVsLT5zZXRNb2NrQ29uZmlndXJhdGlvbihXVEZNb3ZlKG1v
Y2tDb25maWd1cmF0aW9uKSk7CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAj
cHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxGb3JUZXN0aW5nLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbEZvclRlc3RpbmcuaAppbmRleCAxOWI4YjdmNzIyOTU2ZDA1
YzBhMDEyMTBhNWNiZGFiNjRmZjY0ZWViLi4xNGViZmUxZTZjYzM2OWIzMWU2ZmI5NzdhYmM0ODMy
NmMyYWE4NThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEZvclRlc3RpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEZvclRlc3Rpbmcu
aApAQCAtMzUsOCArMzUsMTAgQEAgc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9uczsKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKQogQGludGVyZmFjZSBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIChXS1Rlc3RpbmcpCiAK
LS8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNzE1MDk3MTQ+IEludHJvZHVjZXMgbW9jayB0ZXN0
aW5nLgogKyAoV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyljb252
ZXJ0VG9Db3JlQ3JlYXRpb25PcHRpb25zV2l0aE9wdGlvbnM6KF9XS1B1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMgKilvcHRpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiArIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMpY29udmVydFRvQ29yZVJlcXVlc3RPcHRpb25zV2l0aE9wdGlvbnM6KF9X
S1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyAqKW9wdGlvbnMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLy8gRm9yIGRldGFp
bHMgb2YgY29uZmlndXJhdGlvbiwgcmVmZXIgdG8gTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oLgorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TRGljdGlvbmFyeSAqbW9j
a0NvbmZpZ3VyYXRpb247CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNw
cAppbmRleCBkYjdhYjIxM2NkZjQ0NzlkNzAxYzVmNTEzOTVhNmM4Y2NiYjEwYWE2Li4wODU4ODBl
OGUxYjU4N2EzOGJjMDI4ZmYwZDZmNzA0YTIzNDk5M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwCkBAIC0xNjUsMTAgKzE2NSw5IEBAIHZvaWQgQXV0aGVudGljYXRvck1h
bmFnZXI6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmIGRhdGEs
IENhCiAgICAgLy8gMi4gQXNrIGNsaWVudHMgdG8gc2hvdyBhcHByb3ByaWF0ZSBVSSBpZiBhbnkg
YW5kIHRoZW4gc3RhcnQgdGhlIHJlcXVlc3QuCiAgICAgaW5pdFRpbWVPdXRUaW1lcigpOwogCi0g
ICAgLy8gRklYTUU8cmRhcjovL3Byb2JsZW0vNzA4MjI4MzQ+OiBUaGUgbV93ZWJBdXRoZW50aWNh
dGlvbk1vZGVybkVuYWJsZWQgaXMgdXNlZCB0byBkZXRlcm1pbmUKLSAgICAvLyB3aGV0aGVyIG9y
IG5vdCB3ZSBhcmUgaW4gdGhlIFVJUHJvY2Vzcy4KKyAgICAvLyBGSVhNRTxyZGFyOi8vcHJvYmxl
bS83MDgyMjgzND46IFRoZSBtX21vZGUgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBu
b3Qgd2UgYXJlIGluIHRoZSBVSVByb2Nlc3MuCiAgICAgLy8gSWYgc28sIGNvbnRpbnVlIHRvIHRo
ZSBvbGQgcm91dGUuIE90aGVyd2lzZSwgdXNlIHRoZSBtb2Rlcm4gV2ViQXV0aG4gcHJvY2VzcyB3
YXkuCi0gICAgaWYgKCFtX3dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCkgeworICAgIGlm
IChtX21vZGUgPT0gTW9kZTo6Q29tcGF0aWJsZSkgewogICAgICAgICBydW5QYW5lbCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMjA5LDcgKzIwOCwxMiBAQCB2b2lkIEF1dGhlbnRpY2F0
b3JNYW5hZ2VyOjpjYW5jZWwoKQogCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjplbmFibGVN
b2Rlcm5XZWJBdXRoZW50aWNhdGlvbigpCiB7Ci0gICAgbV93ZWJBdXRoZW50aWNhdGlvbk1vZGVy
bkVuYWJsZWQgPSB0cnVlOworICAgIG1fbW9kZSA9IE1vZGU6Ok1vZGVybjsKK30KKwordm9pZCBB
dXRoZW50aWNhdG9yTWFuYWdlcjo6ZW5hYmxlTmF0aXZlU3VwcG9ydCgpCit7CisgICAgbV9tb2Rl
ID0gTW9kZTo6TmF0aXZlOwogfQogCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjbGVhclN0
YXRlQXN5bmMoKQpAQCAtMjM2LDcgKzI0MCw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6
OmF1dGhlbnRpY2F0b3JBZGRlZChSZWY8QXV0aGVudGljYXRvcj4mJiBhdXRoZW50aWNhdG9yCiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBhdXRoZW50aWNhdG9yLT5zZXRPYnNl
cnZlcigqdGhpcyk7CiAgICAgYXV0aGVudGljYXRvci0+aGFuZGxlUmVxdWVzdChtX3BlbmRpbmdS
ZXF1ZXN0RGF0YSk7Ci0gICAgYXV0aGVudGljYXRvci0+c2V0V2ViQXV0aGVudGljYXRpb25Nb2Rl
cm5FbmFibGVkKG1fd2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkKTsKKyAgICBhdXRoZW50
aWNhdG9yLT5zZXRXZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQobV9tb2RlICE9IE1vZGU6
OkNvbXBhdGlibGUpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9hdXRoZW50aWNhdG9ycy5hZGQo
V1RGTW92ZShhdXRoZW50aWNhdG9yKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KQEAgLTM1NCwxMiArMzU4LDE0IEBAIHZvaWQgQXV0aGVu
dGljYXRvck1hbmFnZXI6OmRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihDb21wbGV0
aW9uSGFuZGxlcjx2CiAKIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnJlcXVlc3RMQUNvbnRl
eHRGb3JVc2VyVmVyaWZpY2F0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICop
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICghbV9wcmVzZW50ZXIpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgaWYgKG1fcHJlc2VudGVyKSB7Cisg
ICAgICAgIG1fcHJlc2VudGVyLT5yZXF1ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX3ByZXNlbnRlci0+cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24oV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgQVBJOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCkgbXV0YWJsZSB7CisgICAgICAgIHBhbmVsLmNs
aWVudCgpLnJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6
Y2FuY2VsUmVxdWVzdCgpCkBAIC00NDQsMTAgKzQ1MCwxNCBAQCB2b2lkIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyOjpydW5QYW5lbCgpCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QcmVzZW50
ZXIoKQogewogICAgIC8vIEdldCBhdmFpbGFibGUgdHJhbnNwb3J0cyBhbmQgc3RhcnQgZGlzY292
ZXJpbmcgYXV0aGVudGljYXRvcnMgb24gdGhlbS4KLSAgICBhdXRvJiBvcHRpb25zID0gbV9wZW5k
aW5nUmVxdWVzdERhdGEub3B0aW9uczsKICAgICBhdXRvIHRyYW5zcG9ydHMgPSBnZXRUcmFuc3Bv
cnRzKCk7CiAgICAgc3RhcnREaXNjb3ZlcnkodHJhbnNwb3J0cyk7CiAKKyAgICAvLyBGb3IgbmF0
aXZlIEFQSSBzdXBwb3J0LCB3ZSBza2lwIHRoZSBVSSBwYXJ0LiBUaGUgbmF0aXZlIEFQSSB3aWxs
IGhhbmRsZSB0aGF0LgorICAgIGlmIChtX21vZGUgPT0gTW9kZTo6TmF0aXZlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvJiBvcHRpb25zID0gbV9wZW5kaW5nUmVxdWVzdERhdGEub3B0aW9u
czsKICAgICBtX3ByZXNlbnRlciA9IG1ha2VVbmlxdWU8QXV0aGVudGljYXRvclByZXNlbnRlckNv
b3JkaW5hdG9yPigqdGhpcywgZ2V0UnBJZChvcHRpb25zKSwgdHJhbnNwb3J0cywgZ2V0Q2xpZW50
RGF0YVR5cGUob3B0aW9ucykpOwogfQogCkBAIC00ODgsMTUgKzQ5OCwxOSBAQCBhdXRvIEF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjpnZXRUcmFuc3BvcnRzKCkgY29uc3QgLT4gVHJhbnNwb3J0U2V0CiAK
IHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKEZ1bmN0
aW9uPHZvaWQoY29uc3QgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJik+JiYgY2FsbCkgY29u
c3QKIHsKLSAgICBpZiAoYXV0byogcGFuZWwgPSBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5lbC5n
ZXQoKSkgewotICAgICAgICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0aGUgbmV4dCBydW4gbG9vcCB0
byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFuY2UgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBtb2Rp
ZnkgdGhlIHN0YXRlCi0gICAgICAgIC8vIG9mIHRoZSBjdXJyZW50IHJ1biBsb29wIGluIHVuZXhw
ZWN0ZWQgd2F5cy4KLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrUGFuZWwg
PSBtYWtlV2Vha1B0cigqcGFuZWwpLCBjYWxsID0gV1RGTW92ZShjYWxsKV0gKCkgewotICAgICAg
ICAgICAgaWYgKCF3ZWFrUGFuZWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgY2FsbCgqd2Vha1BhbmVsKTsKLSAgICAgICAgfSk7Ci0gICAgfQorICAgIGF1dG8gd2Vha1Bh
bmVsID0gbV9wZW5kaW5nUmVxdWVzdERhdGEud2Vha1BhbmVsOworICAgIGlmICghd2Vha1BhbmVs
KQorICAgICAgICB3ZWFrUGFuZWwgPSBtYWtlV2Vha1B0cigqbV9wZW5kaW5nUmVxdWVzdERhdGEu
cGFuZWwuZ2V0KCkpOworICAgIGlmICghd2Vha1BhbmVsKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0aGUgbmV4dCBydW4gbG9vcCB0byBwcmV2ZW50IGNsaWVu
dHMnIHJlZW50cmFuY2UgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBtb2RpZnkgdGhlIHN0YXRlCisg
ICAgLy8gb2YgdGhlIGN1cnJlbnQgcnVuIGxvb3AgaW4gdW5leHBlY3RlZCB3YXlzLgorICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1BhbmVsID0gV1RGTW92ZSh3ZWFrUGFuZWwpLCBj
YWxsID0gV1RGTW92ZShjYWxsKV0gKCkgeworICAgICAgICBpZiAoIXdlYWtQYW5lbCkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgY2FsbCgqd2Vha1BhbmVsKTsKKyAgICB9KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAppbmRl
eCAxZWU0YWI0OTUzMWJlZTk3NDE0NWM1NDg3ODU0MjA0MTY3ZWUzNjFlLi40MTgyOTViZTNkNmMz
YjI5ZDI0MzI3NTFhNDEyZTM1NmY4MTI1NTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5h
Z2VyLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc01vY2so
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBlbmFibGVNb2Rlcm5XZWJBdXRo
ZW50aWNhdGlvbigpOworICAgIHZvaWQgZW5hYmxlTmF0aXZlU3VwcG9ydCgpOwogCiBwcm90ZWN0
ZWQ6CiAgICAgUnVuTG9vcDo6VGltZXI8QXV0aGVudGljYXRvck1hbmFnZXI+JiByZXF1ZXN0VGlt
ZU91dFRpbWVyKCkgeyByZXR1cm4gbV9yZXF1ZXN0VGltZU91dFRpbWVyOyB9CkBAIC03OSw2ICs4
MCwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbnZva2VQZW5kaW5nQ29tcGxldGlvbkhhbmRs
ZXIoUmVzcG9uZCYmKTsKIAogcHJpdmF0ZToKKyAgICBlbnVtIGNsYXNzIE1vZGUgeworICAgICAg
ICBDb21wYXRpYmxlLAorICAgICAgICBNb2Rlcm4sCisgICAgICAgIE5hdGl2ZSwKKyAgICB9Owor
CiAgICAgLy8gQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6Ok9ic2VydmVyCiAgICAgdm9p
ZCBhdXRoZW50aWNhdG9yQWRkZWQoUmVmPEF1dGhlbnRpY2F0b3I+JiYpIGZpbmFsOwogICAgIHZv
aWQgc2VydmljZVN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRpb25TdGF0dXMpIGZpbmFsOwpA
QCAtMTE3LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBdXRoZW50
aWNhdG9yVHJhbnNwb3J0U2VydmljZT4+IG1fc2VydmljZXM7CiAgICAgSGFzaFNldDxSZWY8QXV0
aGVudGljYXRvcj4+IG1fYXV0aGVudGljYXRvcnM7CiAKLSAgICBib29sIG1fd2ViQXV0aGVudGlj
YXRpb25Nb2Rlcm5FbmFibGVkIHsgZmFsc2UgfTsKKyAgICBNb2RlIG1fbW9kZSB7IE1vZGU6OkNv
bXBhdGlibGUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGlj
YXRpb25QYW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCmluZGV4IDk3NmNhNjlk
MGFmODFjNDViZmFmODYyNzUzNzM5NDlkYjdkNmJjNGUuLjFiZTZhNTYyZGM1OGNiNjkxZjZhYTM5
NmUwMmFlYzNlNDljMTRkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKQEAgLTUyLDYgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlcXVlc3RQaW4odWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RG
OjpTdHJpbmcmKT4mJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNw
b25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+
JiYsIFdlYkF1dGhlbnRpY2F0aW9uU291cmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSopPiYmKSBjb25zdCBmaW5hbDsKICAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKExvY2FsQXV0aGVudGljYXRvclBvbGljeSk+JiYpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgcmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24oQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChMQUNvbnRleHQgKik+JiYpIGNvbnN0IGZpbmFsOwogCiAgICAgX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbCAqbV9wYW5lbDsKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbERlbGVnYXRlPiA+IG1fZGVsZWdhdGU7CkBAIC02Miw2ICs2Myw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGJvb2wgcGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJpZXNDb21w
bGV0aW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgcGFuZWxTZWxlY3RBc3NlcnRpb25SZXNw
b25zZVNvdXJjZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKICAgICAgICAgYm9vbCBwYW5lbERlY2lk
ZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvckNvbXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAg
ICAgYm9vbCBwYW5lbFJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uQ29tcGxldGlv
bkhhbmRsZXIgOiAxOwogICAgIH0gbV9kZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRo
ZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQppbmRleCA4
Mzc2OTcyYzM1NzY3NjliMTEwNWIyODUwYjRjNmMyYzFlYTRhMjY2Li5hMDg5NGEyMGY5MWZmYzM3
N2M0NDUzNjBlNmYxMzg5ODIwYTliM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0KQEAgLTUwLDYgKzUwLDcgQEAgV2ViQXV0
aGVudGljYXRpb25QYW5lbENsaWVudDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudChfV0tX
ZWJBdXRoZW50aWNhdGlvblAKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFJlcXVlc3RQaW5X
aXRoUmVtYWluaW5nUmV0cmllc0NvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6cmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVz
OmNvbXBsZXRpb25IYW5kbGVyOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnBhbmVsU2VsZWN0
QXNzZXJ0aW9uUmVzcG9uc2VTb3VyY2VDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnNlbGVjdEFzc2VydGlvblJlc3BvbnNlOnNv
dXJjZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbERl
Y2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvckNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFuZWw6ZGVjaWRlUG9saWN5Rm9yTG9j
YWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5kbGVyOildOworICAgIG1fZGVsZWdhdGVN
ZXRob2RzLnBhbmVsUmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb25Db21wbGV0aW9u
SGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhbmVsOnJl
cXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOild
OwogfQogCiBSZXRhaW5QdHI8aWQgPF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZT4g
PiBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpkZWxlZ2F0ZSgpCkBAIC0yMTcsNiArMjE4
LDI4IEBAIHZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGVjaWRlUG9saWN5Rm9y
TG9jYWxBdXRoZW50aWNhdG9yKENvbXBsZXRpb25ICiAgICAgfSkuZ2V0KCldOwogfQogCit2b2lk
IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVy
aWZpY2F0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBjb25zdAoreworICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxSZXF1
ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbkNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0
ZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNr
ZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHBhbmVsOnJlcXVlc3RMQUNvbnRl
eHRGb3JVc2VyVmVyaWZpY2F0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOikpOworICAgIFtkZWxl
Z2F0ZSBwYW5lbDptX3BhbmVsIHJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uV2l0
aENvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKExBQ29u
dGV4dCAqY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9u
SGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2hl
Y2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGNvbnRleHQpOworICAgIH0pLmdldCgpXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2Nh
bENvbm5lY3Rpb24uaAppbmRleCBmZjkwZDNkZTQzNDljOWEzMzg1YzIwYzA1OTcyOWI4ZTIyZWJl
MmU1Li45NGU0YTRkN2U0ZjhlMTZmMjBlY2I5NGE3ZWIwNDhmZTYyOTM1OGJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2Nh
bENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaApAQCAtMzgsNiArMzgsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgdm9pZCB2ZXJpZnlVc2VyKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6
OkNsaWVudERhdGFUeXBlLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2VyVmVyaWZpY2F0aW9uQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCB2ZXJpZnlVc2VyKFNlY0FjY2Vzc0NvbnRyb2xSZWYs
IExBQ29udGV4dCAqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJWZXJpZmljYXRpb24pPiYm
KSBmaW5hbDsKICAgICBSZXRhaW5QdHI8U2VjS2V5UmVmPiBjcmVhdGVDcmVkZW50aWFsUHJpdmF0
ZUtleShMQUNvbnRleHQgKiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgY29uc3QgU3RyaW5nJiBzZWNB
dHRyTGFiZWwsIE5TRGF0YSAqc2VjQXR0ckFwcGxpY2F0aW9uVGFnKSBjb25zdCBmaW5hbDsKICAg
ICB2b2lkIGdldEF0dGVzdGF0aW9uKFNlY0tleVJlZiwgTlNEYXRhICphdXRoRGF0YSwgTlNEYXRh
ICpoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZmls
dGVyUmVzcG9uc2VzKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPj4mKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVj
dGlvbi5tbQppbmRleCAyZmJhYTM0MTUwZjVlMGYzZTJhYzYyZWFhZjY2NjdlMzc2ZGZmMWJhLi42
MjJlOGNhOTU4YzVkZDk3ZDU5MTc5ZWM2YTgzMTdjODRjYTY2MjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5l
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCkBAIC02Nyw2ICs2NywyNyBAQCB2b2lkIE1vY2tM
b2NhbENvbm5lY3Rpb246OnZlcmlmeVVzZXIoY29uc3QgU3RyaW5nJiwgQ2xpZW50RGF0YVR5cGUs
IFNlY0FjY2Vzc0NvbgogICAgIH0pOwogfQogCit2b2lkIE1vY2tMb2NhbENvbm5lY3Rpb246OnZl
cmlmeVVzZXIoU2VjQWNjZXNzQ29udHJvbFJlZiwgTEFDb250ZXh0ICosIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVXNlclZlcmlmaWNhdGlvbik+JiYgY2FsbGJhY2spCit7CisgICAgLy8gTW9jayBh
c3luYyBvcGVyYXRpb25zLgorICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29uZmlndXJh
dGlvbiA9IG1fY29uZmlndXJhdGlvbiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGNvbmZpZ3VyYXRpb24ubG9jYWwpOworCisgICAgICAg
IFVzZXJWZXJpZmljYXRpb24gdXNlclZlcmlmaWNhdGlvbiA9IFVzZXJWZXJpZmljYXRpb246Ok5v
OworICAgICAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24ubG9jYWwtPnVzZXJWZXJpZmljYXRpb24p
IHsKKyAgICAgICAgY2FzZSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpVc2Vy
VmVyaWZpY2F0aW9uOjpObzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OlVzZXJWZXJpZmljYXRpb246OlllczoKKyAg
ICAgICAgICAgIHVzZXJWZXJpZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uOjpZZXM7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uOjpVc2VyVmVyaWZpY2F0aW9uOjpDYW5jZWw6CisgICAgICAgICAgICB1c2VyVmVyaWZp
Y2F0aW9uID0gVXNlclZlcmlmaWNhdGlvbjo6Q2FuY2VsOworICAgICAgICB9CisKKyAgICAgICAg
Y2FsbGJhY2sodXNlclZlcmlmaWNhdGlvbik7CisgICAgfSk7Cit9CisKIFJldGFpblB0cjxTZWNL
ZXlSZWY+IE1vY2tMb2NhbENvbm5lY3Rpb246OmNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExB
Q29udGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0dHJMYWJl
bCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1f
Y29uZmlndXJhdGlvbi5sb2NhbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJl
cXVlc3REYXRhLmgKaW5kZXggZDM4NjM3ZTY2ODcyNzQwMzI3ODU2ZTg5MjkyNzgyMjI0Y2QxMmNi
Ni4uMTY3NWJmMGJmY2MwY2I2MjY1NTZkNjdiMjA4NjA4YjEwNGU1ZGJlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRp
b25SZXF1ZXN0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaApAQCAtNTUsNiArNTUsNyBAQCBz
dHJ1Y3QgV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSB7CiAKICAgICBib29sIHByb2Nlc3Np
bmdVc2VyR2VzdHVyZTsKICAgICBTdHJpbmcgY2FjaGVkUGluOyAvLyBPbmx5IHVzZWQgdG8gaW1w
cm92ZSBORkMgQ2xpZW50IFBJTiBleHBlcmllbmNlLgorICAgIFdlYWtQdHI8QVBJOjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsPiB3ZWFrUGFuZWw7CiB9OwogCiBXZWJDb3JlOjpDbGllbnREYXRhVHlw
ZSBnZXRDbGllbnREYXRhVHlwZShjb25zdCBWYXJpYW50PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMsIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5LmNwcAppbmRleCBjMmJmYzQ3ZjZhNzc5MGFhZThmMzA3ZDNjNTgwZGY1OTBhYjJm
OTk5Li5hZjNmOTE5NjZjMzcxZjA4ZWY0ZGU4MTAxNzUwYzg4ZTRlZjIzYTZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC01
NywxMiArNTcsMTIgQEAgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6On5XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSgpCiAKIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHk6Om1ha2VDcmVkZW50aWFsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlkLCBGcmFt
ZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBQdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiYgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdl
c3R1cmUsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0gICAgaGFuZGxl
UmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG1ha2VXZWFrUHRyKG1f
d2ViUGFnZVByb3h5KSwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUs
IG51bGxwdHIsIEdsb2JhbEZyYW1lSWRlbnRpZmllciB7IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJ
RCgpLCBmcmFtZUlkIH0sIFdURk1vdmUoZnJhbWVJbmZvKSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJl
LCBTdHJpbmcoKSB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICBoYW5kbGVSZXF1ZXN0KHsgV1RG
TW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25zKSwgbWFrZVdlYWtQdHIobV93ZWJQYWdlUHJveHkp
LCBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgR2xv
YmFsRnJhbWVJZGVudGlmaWVyIHsgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksIGZyYW1lSWQg
fSwgV1RGTW92ZShmcmFtZUluZm8pLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0cmluZygpLCBu
dWxscHRyIH0sIFdURk1vdmUoaGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5OjpnZXRBc3NlcnRpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSWQsIEZy
YW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFB1YmxpY0tl
eUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewotICAgIGhhbmRs
ZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBtYWtlV2Vha1B0ciht
X3dlYlBhZ2VQcm94eSksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxl
LCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdl
SUQoKSwgZnJhbWVJZCB9LCBXVEZNb3ZlKGZyYW1lSW5mbyksIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSwgU3RyaW5nKCkgfSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7IFdU
Rk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG1ha2VXZWFrUHRyKG1fd2ViUGFnZVByb3h5
KSwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEds
b2JhbEZyYW1lSWRlbnRpZmllciB7IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlk
IH0sIFdURk1vdmUoZnJhbWVJbmZvKSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwg
bnVsbHB0ciB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eTo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3RE
YXRhJiYgZGF0YSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDlkMDg4ZTcwMjA3ZWRiNjEzMDhjODVjNzExMmQz
NWRlY2I5OTlmMDYuLjUxZTczYTZmMmY5NzJjNzY2M2UyODYwMDJkNDlhNDdkMzhjMWRmMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2Vi
QXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjksMTIgKzY5LDEyIEBAIHZvaWQg
V2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjCiAKIHZvaWQgV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNz
OjptYWtlQ3JlZGVudGlhbChWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zJiYgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUs
IFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0gICAgaGFuZGxlUmVxdWVz
dCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG51bGxwdHIsIFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIHsg
fSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsK
KyAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25zKSwgbnVs
bHB0ciwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIs
IFdURjo6bnVsbG9wdCwgeyB9LCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0cmluZygpLCBudWxs
cHRyIH0sIFdURk1vdmUoaGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dGhuQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Z2V0QXNzZXJ0aW9uKFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFB1YmxpY0tl
eUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewotICAgIGhhbmRs
ZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBudWxscHRyLCBXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgV1RGOjpudWxs
b3B0LCB7IH0sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCkgfSwgV1RGTW92ZShoYW5k
bGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9u
cyksIG51bGxwdHIsIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBu
dWxscHRyLCBXVEY6Om51bGxvcHQsIHsgfSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmco
KSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJBdXRobkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0
RGF0YSYmIGRhdGEsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmQxY2UzMjRjYTFi
MzllMTRmODAxNzdhY2ZhMzk5ZjFlNGVmNDBkMi4uMGNkOTY4MjhlMThjMDYzYTA3ODA3NDUwMjZm
MzcxNGNiODcwMjQ4MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTAxLTI5ICBKaWV3ZW4gVGFuICA8amlld2Vu
X3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBPcHRpbWl6ZSBfV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgZm9yIG5hdGl2ZSBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTEyNQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNzE1MDkxNDE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbToKKyAgICAgICAgKC1bVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxl
Z2F0ZSBwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZTpzb3VyY2U6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgcGFu
ZWw6cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb25XaXRoQ29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJDb3JlOjpyZXNldCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0wMS0yOSAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZ3JhZGUgbW90aW9ubWFyazEuMS5w
bGFuIHRvIHIyNzIwNDQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAw
NWRiNGZmMWU0NWE3ODBlZGY2NjEyMjJiYjY4NTc3ZDY3NGY3N2UyLi5mMjE4ZDkyMjY5NjFiMTli
MWI5NGU3MmUyYmY5MjE0NGI1ZmU0MWZhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCkBAIC03OCw2ICs3OCw3IEBAIHN0YXRpYyBTdHJpbmcgdGVzdEVTMjU2UHJpdmF0ZUtl
eUJhc2U2NCA9CiAgICAgIlJRPT0iOwogc3RhdGljIFN0cmluZyB0ZXN0VXNlckVudGl0eUJ1bmRs
ZUJhc2U2NCA9ICJvbUpwWkVvQUFRSURCQVVHQndnSlpHNWhiV1ZrU205b2JnPT0iOyAvLyB7ICJp
ZCI6IGgnMDAwMTAyMDMwNDA1MDYwNzA4MDknLCAibmFtZSI6ICJKb2huIiB9CiBzdGF0aWMgU3Ry
aW5nIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxTZWxlY3RlZENyZWRlbnRpYWxOYW1lOworc3RhdGlj
IGJvb2wgbGFDb250ZXh0UmVxdWVzdGVkID0gZmFsc2U7CiAKIEBpbnRlcmZhY2UgVGVzdFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsRGVsZWdhdGU+CiBAZW5kCkBAIC0xNTAsMTUgKzE1MSwyMyBAQCAtICh2b2lkKXBhbmVs
OihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgcmVxdWVzdFBJTldpdGhSZW1haW5p
bmdSZXRyaWVzOgogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBh
bmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlOihOU0FycmF5IDwgX1dLV2ViQXV0aGVudGljYXRp
b25Bc3NlcnRpb25SZXNwb25zZSAqPiAqKXJlc3BvbnNlcyBzb3VyY2U6KF9XS1dlYkF1dGhlbnRp
Y2F0aW9uU291cmNlKXNvdXJjZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqKSljb21wbGV0aW9uSGFuZGxlcgogewogICAg
IGlmIChyZXNwb25zZXMuY291bnQgPT0gMSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXNwb25zZXNbMF0pOworICAgICAgICBhdXRvIGxhQ29udGV4dCA9IGFkb3B0TlMoW1tMQUNvbnRl
eHQgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW3Jlc3BvbnNlcy5maXJzdE9iamVjdCBzZXRMQUNv
bnRleHQ6bGFDb250ZXh0LmdldCgpXTsKKworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNw
b25zZXMuZmlyc3RPYmplY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gUmVz
cG9uc2VzIHJldHVybmVkIGZyb20gTG9jYWxBdXRoZW50aWNhdG9yIGlzIGluIHRoZSBvcmRlciBv
ZiBMUlUuIFRoZXJlZm9yZSwgd2UgdXNlIHRoZSBsYXN0IGl0ZW0gdG8gcG9wdWxhdGUgaXQgdG8K
ICAgICAvLyB0aGUgZmlyc3QgdG8gdGVzdCBpdHMgY29ycmVjdG5lc3MuCiAgICAgaWYgKHNvdXJj
ZSA9PSBfV0tXZWJBdXRoZW50aWNhdGlvblNvdXJjZUxvY2FsKSB7Ci0gICAgICAgIHdlYkF1dGhl
bnRpY2F0aW9uUGFuZWxTZWxlY3RlZENyZWRlbnRpYWxOYW1lID0gcmVzcG9uc2VzLmxhc3RPYmpl
Y3QubmFtZTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2VzLmxhc3RPYmplY3Qp
OworICAgICAgICBhdXRvICpvYmplY3QgPSByZXNwb25zZXMubGFzdE9iamVjdDsKKworICAgICAg
ICBhdXRvIGxhQ29udGV4dCA9IGFkb3B0TlMoW1tMQUNvbnRleHQgYWxsb2NdIGluaXRdKTsKKyAg
ICAgICAgW29iamVjdCBzZXRMQUNvbnRleHQ6bGFDb250ZXh0LmdldCgpXTsKKworICAgICAgICB3
ZWJBdXRoZW50aWNhdGlvblBhbmVsU2VsZWN0ZWRDcmVkZW50aWFsTmFtZSA9IG9iamVjdC5uYW1l
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihvYmplY3QpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xODAsNiArMTg5LDEyIEBAIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwgKilwYW5lbCBkZWNpZGVQb2xpY3lGb3JMb2NhbEF1dGhlbnRpY2F0CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIobG9jYWxBdXRoZW50aWNhdG9yUG9saWN5KTsKIH0KIAorLSAodm9p
ZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHJlcXVlc3RMQUNvbnRl
eHRGb3JVc2VyVmVyaWZpY2F0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShMQUNv
bnRleHQgKmNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgbGFDb250ZXh0UmVxdWVz
dGVkID0gdHJ1ZTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworfQorCiBAZW5kCiAKIEBp
bnRlcmZhY2UgVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxGYWtlRGVsZWdhdGUgOiBOU09iamVj
dCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPgpAQCAtMzIzLDYgKzMzOCw3IEBA
IHN0YXRpYyB2b2lkIHJlc2V0KCkKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsTnVsbFVzZXJI
YW5kbGUgPSBOTzsKICAgICBsb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgPSBfV0tMb2NhbEF1dGhl
bnRpY2F0b3JQb2xpY3lEaXNhbGxvdzsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsU2VsZWN0
ZWRDcmVkZW50aWFsTmFtZSA9IGVtcHR5U3RyaW5nKCk7CisgICAgbGFDb250ZXh0UmVxdWVzdGVk
ID0gZmFsc2U7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrUGFuZWwoX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbCAqcGFuZWwsIE5TU3RyaW5nICpyZWx5aW5nUGFydHlJRCwgTlNBcnJheSAqdHJhbnNw
b3J0cywgX1dLV2ViQXV0aGVudGljYXRpb25UeXBlIHR5cGUpCkBAIC0xNzYwLDcgKzE3NzYsNyBA
QCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE1ha2VDcmVkZW50aWFsU1BJVGltZW91dCkK
ICAgICBhdXRvIHVzZXIgPSBhZG9wdE5TKFtbX1dLUHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRp
dHkgYWxsb2NdIGluaXRXaXRoTmFtZTpAImphcHBsZXNlZWRAZXhhbXBsZS5jb20iIGlkZW50aWZp
ZXI6bnNJZGVudGlmaWVyIGRpc3BsYXlOYW1lOkAiSiBBcHBsZXNlZWQiXSk7CiAgICAgTlNBcnJh
eTxfV0tQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVycyAqPiAqcHVibGljS2V5Q3JlZGVudGlh
bFBhcmFtYXRlcnMgPSBAWyBwYXJhbWV0ZXJzLmdldCgpIF07CiAgICAgYXV0byBvcHRpb25zID0g
YWRvcHROUyhbW19XS1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgYWxsb2NdIGlu
aXRXaXRoUmVseWluZ1BhcnR5OnJwLmdldCgpIHVzZXI6dXNlci5nZXQoKSBwdWJsaWNLZXlDcmVk
ZW50aWFsUGFyYW1hdGVyczpwdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1hdGVyc10pOwotICAgIFtv
cHRpb25zIHNldFRpbWVvdXQ6QDEyMF07CisgICAgW29wdGlvbnMgc2V0VGltZW91dDpAMTBdOwog
CiAgICAgYXV0byBwYW5lbCA9IGFkb3B0TlMoW1tfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGFs
bG9jXSBpbml0XSk7CiAgICAgW3BhbmVsIG1ha2VDcmVkZW50aWFsV2l0aEhhc2g6bnNIYXNoIG9w
dGlvbnM6b3B0aW9ucy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgTlNFcnJvciAqZXJyb3IpIHsKQEAgLTE3NzMs
NiArMTc4OSw0NiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE1ha2VDcmVkZW50aWFs
U1BJVGltZW91dCkKICAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4pOwog
fQogCisvLyBGb3IgbWFjT1MsIG9ubHkgaW50ZXJuYWwgYnVpbGRzIGNhbiBzaWduIGtleWNoYWlu
IGVudGl0bGVtbmV0cworLy8gd2hpY2ggYXJlIHJlcXVpcmVkIHRvIHJ1biBsb2NhbCBhdXRoZW50
aWNhdG9yIHRlc3RzLgorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspIHx8IFBMQVRGT1JNKElP
UykKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTWFrZUNyZWRlbnRpYWxMQSkKK3sKKyAg
ICByZXNldCgpOworCisgICAgdWludDhfdCBpZGVudGlmaWVyW10gPSB7IDB4MDEsIDB4MDIsIDB4
MDMsIDB4MDQgfTsKKyAgICB1aW50OF90IGhhc2hbXSA9IHsgMHgwMSwgMHgwMiwgMHgwMywgMHgw
NCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwg
MHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgw
MywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCB9
OworICAgIE5TRGF0YSAqbnNJZGVudGlmaWVyID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmlkZW50
aWZpZXIgbGVuZ3RoOnNpemVvZihpZGVudGlmaWVyKV07CisgICAgTlNEYXRhICpuc0hhc2ggPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6aGFzaCBsZW5ndGg6c2l6ZW9mKGhhc2gpXTsKKyAgICBhdXRv
IHBhcmFtZXRlcnMgPSBhZG9wdE5TKFtbX1dLUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnMg
YWxsb2NdIGluaXRXaXRoQWxnb3JpdGhtOkAtN10pOworCisgICAgYXV0byBycCA9IGFkb3B0TlMo
W1tfV0tQdWJsaWNLZXlDcmVkZW50aWFsUmVseWluZ1BhcnR5RW50aXR5IGFsbG9jXSBpbml0V2l0
aE5hbWU6QCJleGFtcGxlLmNvbSJdKTsKKyAgICBbcnAgc2V0SWRlbnRpZmllcjpAImV4YW1wbGUu
Y29tIl07CisgICAgYXV0byB1c2VyID0gYWRvcHROUyhbW19XS1B1YmxpY0tleUNyZWRlbnRpYWxV
c2VyRW50aXR5IGFsbG9jXSBpbml0V2l0aE5hbWU6QCJqYXBwbGVzZWVkQGV4YW1wbGUuY29tIiBp
ZGVudGlmaWVyOm5zSWRlbnRpZmllciBkaXNwbGF5TmFtZTpAIkogQXBwbGVzZWVkIl0pOworICAg
IE5TQXJyYXk8X1dLUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnMgKj4gKnB1YmxpY0tleUNy
ZWRlbnRpYWxQYXJhbWF0ZXJzID0gQFsgcGFyYW1ldGVycy5nZXQoKSBdOworICAgIGF1dG8gb3B0
aW9ucyA9IGFkb3B0TlMoW1tfV0tQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIGFs
bG9jXSBpbml0V2l0aFJlbHlpbmdQYXJ0eTpycC5nZXQoKSB1c2VyOnVzZXIuZ2V0KCkgcHVibGlj
S2V5Q3JlZGVudGlhbFBhcmFtYXRlcnM6cHVibGljS2V5Q3JlZGVudGlhbFBhcmFtYXRlcnNdKTsK
KworICAgIGF1dG8gcGFuZWwgPSBhZG9wdE5TKFtbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBh
bGxvY10gaW5pdF0pOworICAgIFtwYW5lbCBzZXRNb2NrQ29uZmlndXJhdGlvbjpAeyBAInByaXZh
dGVLZXlCYXNlNjQiOiB0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0IH1dOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOworICAgIFtwYW5lbCBzZXREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAg
ICBbcGFuZWwgbWFrZUNyZWRlbnRpYWxXaXRoSGFzaDpuc0hhc2ggb3B0aW9uczpvcHRpb25zLmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UgKnJlc3BvbnNlLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICB3ZWJBdXRoZW50aWNhdGlv
blBhbmVsUmFuID0gdHJ1ZTsKKyAgICAgICAgY2xlYW5VcEtleWNoYWluKCJleGFtcGxlLmNvbSIp
OworCisgICAgICAgIEVYUEVDVF9UUlVFKGxhQ29udGV4dFJlcXVlc3RlZCk7CisgICAgICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzcG9uc2UpOwor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3Jlc3BvbnNlLnJhd0lkIGJhc2U2NEVuY29kZWRTdHJp
bmdXaXRoT3B0aW9uczowXSwgIlNNU1hIbmdGN2hFT3NFbEE3M0MzUlkrOGJSND0iKTsKKyAgICAg
ICAgRVhQRUNUX05VTEwocmVzcG9uc2UuZXh0ZW5zaW9ucyk7CisgICAgICAgIEVYUEVDVF9XS19T
VFJFUShbcmVzcG9uc2UuYXR0ZXN0YXRpb25PYmplY3QgYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhP
cHRpb25zOjBdLCAibzJObWJYUmtibTl1WldkaGRIUlRkRzEwb0doaGRYUm9SR0YwWVZpWW8zbW05
dTZ2dWFWZU40d1JnRFRpZFI1b0w2dWZMVENyRTlJU1ZZYk9HVWRGQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUZFakVseDU0QmU0UkRyQkpRTzl3dDBXUHZHMGVwUUVDQXlZZ0FTRllJRGovenhT
a3pLZ2FCdVMzY2RXREY1NThvZjhBYUlwZ0Zwc2pGL1FtMTc0OUlsZ2dWQkpQZ3FVSXdmaFdISjkx
bmI3VVBINzZjMCtXRk96WktzbFB5eUZzZTRnPSIpOworICAgIH1dOworICAgIFV0aWw6OnJ1bigm
d2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7Cit9CisjZW5kaWYKKwogVEVTVChXZWJBdXRoZW50
aWNhdGlvblBhbmVsLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNNaW5pbXVuKQog
ewogICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMoW1tfV0tQdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnMgYWxsb2NdIGluaXRdKTsKQEAgLTE4NzAsNiArMTkyNiw0MyBAQCBURVNUKFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwsIEdldEFzc2VydGlvblNQSVRpbWVvdXQpCiAgICAgVXRpbDo6
cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuKTsKIH0KIAorLy8gRm9yIG1hY09TLCBvbmx5
IGludGVybmFsIGJ1aWxkcyBjYW4gc2lnbiBrZXljaGFpbiBlbnRpdGxlbW5ldHMKKy8vIHdoaWNo
IGFyZSByZXF1aXJlZCB0byBydW4gbG9jYWwgYXV0aGVudGljYXRvciB0ZXN0cy4KKyNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKSB8fCBQTEFURk9STShJT1MpCitURVNUKFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwsIEdldEFzc2VydGlvbkxBKQoreworICAgIHJlc2V0KCk7CisKKyAgICBBU1NFUlRf
VFJVRShhZGRLZXlUb0tleWNoYWluKHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsICIiLCB0ZXN0
VXNlckVudGl0eUJ1bmRsZUJhc2U2NCkpOworCisgICAgdWludDhfdCBoYXNoW10gPSB7IDB4MDEs
IDB4MDIsIDB4MDMsIDB4MDQsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDEsIDB4MDIsIDB4
MDMsIDB4MDQsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQs
IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDEsIDB4
MDIsIDB4MDMsIDB4MDQgfTsKKyAgICBOU0RhdGEgKm5zSGFzaCA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczpoYXNoIGxlbmd0aDpzaXplb2YoaGFzaCldOworCisgICAgYXV0byBvcHRpb25zID0gYWRv
cHROUyhbW19XS1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBhbGxvY10gaW5pdF0p
OworICAgIFtvcHRpb25zIHNldFJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6QCIiXTsKKworICAgIGF1
dG8gcGFuZWwgPSBhZG9wdE5TKFtbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBhbGxvY10gaW5p
dF0pOworICAgIFtwYW5lbCBzZXRNb2NrQ29uZmlndXJhdGlvbjpAeyB9XTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKKyAgICBbcGFuZWwgc2V0RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisg
ICAgW3BhbmVsIGdldEFzc2VydGlvbldpdGhIYXNoOm5zSGFzaCBvcHRpb25zOm9wdGlvbnMuZ2V0
KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Ug
KnJlc3BvbnNlLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICB3ZWJBdXRoZW50aWNhdGlvblBh
bmVsUmFuID0gdHJ1ZTsKKyAgICAgICAgY2xlYW5VcEtleWNoYWluKCIiKTsKKworICAgICAgICBF
WFBFQ1RfTlVMTChlcnJvcik7CisKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJlc3BvbnNlKTsK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFtyZXNwb25zZS5yYXdJZCBiYXNlNjRFbmNvZGVkU3Ry
aW5nV2l0aE9wdGlvbnM6MF0sICJTTVNYSG5nRjdoRU9zRWxBNzNDM1JZKzhiUjQ9Iik7CisgICAg
ICAgIEVYUEVDVF9OVUxMKHJlc3BvbnNlLmV4dGVuc2lvbnMpOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoW3Jlc3BvbnNlLmF1dGhlbnRpY2F0b3JEYXRhIGJhc2U2NEVuY29kZWRTdHJpbmdXaXRo
T3B0aW9uczowXSwgIjQ3REVRcGo4SEJTYSsvVEltVys1SkNldVFlUmttNU5NcEpXWkczaFN1RlVG
QUFBQUFBPT0iKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJlc3BvbnNlLnNpZ25hdHVyZSk7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbcmVzcG9uc2UudXNlckhhbmRsZSBiYXNlNjRFbmNv
ZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0sICJBQUVDQXdRRkJnY0lDUT09Iik7CisgICAgfV07Cisg
ICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuKTsKK30KKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhO
KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>