<?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>193509</bug_id>
          
          <creation_ts>2019-01-16 14:09:01 -0800</creation_ts>
          <short_desc>Regression(r240046) Several API tests are crashing</short_desc>
          <delta_ts>2019-01-16 15:18:30 -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>WebKit2</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>193361</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>ggaren</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1495224</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-16 14:09:01 -0800</bug_when>
    <thetext>Several API tests are crashing since r240046:
Crashed

    TestWebKitAPI.WebKit.ResizeWindowAfterCrash
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        libc++abi.dylib: Pure virtual function called!

    TestWebKitAPI.WebKit.LoadPageAfterCrash
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        libc++abi.dylib: Pure virtual function called!

    TestWebKitAPI.WebKit.EnumerateDevices
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        libc++abi.dylib: Pure virtual function called!

    TestWebKitAPI.WKNavigation.FailureToStartWebProcessAfterCrashRecovery
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        libc++abi.dylib: Pure virtual function called!

    TestWebKitAPI.WebKit.ReloadPageAfterCrash
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        libc++abi.dylib: Pure virtual function called!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495228</commentid>
    <comment_count>1</comment_count>
      <attachid>359309</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-16 14:19:05 -0800</bug_when>
    <thetext>Created attachment 359309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495258</commentid>
    <comment_count>2</comment_count>
      <attachid>359309</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-01-16 15:07:18 -0800</bug_when>
    <thetext>Comment on attachment 359309
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495270</commentid>
    <comment_count>3</comment_count>
      <attachid>359309</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-16 15:17:09 -0800</bug_when>
    <thetext>Comment on attachment 359309
Patch

Clearing flags on attachment: 359309

Committed r240055: &lt;https://trac.webkit.org/changeset/240055&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495271</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-16 15:17:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495272</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-16 15:18:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/47331764&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359309</attachid>
            <date>2019-01-16 14:19:05 -0800</date>
            <delta_ts>2019-01-16 15:17:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193509-20190116141904.patch</filename>
            <type>text/plain</type>
            <size>82713</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiYTUxZWU3YWY5MTAwM2Y1
MDY1NzI2MWM5MDA3YjdhY2ExMDRjMDAuLmZjNjg1NzA4ZGI4NzFhOGU5MWU2MTY5MWQwNDU0NjA2
NDAyMDZiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAzIEBACisyMDE5LTAxLTE2ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVncmVzc2lvbihyMjQwMDQ2KSBT
ZXZlcmFsIEFQSSB0ZXN0cyBhcmUgY3Jhc2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjcmFzaGVzIHdvdWxkIGhhcHBlbiBiZWNhdXNlIGxv
YWRSZXF1ZXN0U2hhcmVkKCkgd291bGQgdGFrZSBhIFdlYlByb2Nlc3NQcm94eSYgaW4gcGFyYW1l
dGVyIGJ1dAorICAgICAgICB0aGVuIGNhbGwgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKSBpZiB0aGUg
cGFnZSBpcyBub3QgdmFsaWQsIHdoaWNoIHdvdWxkIHJlcGxhY2UgbV9wcm9jZXNzIGFuZCBpbnZh
bGlkYXRlCisgICAgICAgIG91ciBwcm9jZXNzIHJlZmVyZW5jZS4KKworICAgICAgICBUbyBhZGRy
ZXNzIHRoZSBpc3N1ZSwgbW92ZSB0aGUgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKSBjYWxsIHRvIGxv
YWRSZXF1ZXN0KCksIGJlZm9yZSBjYWxsaW5nCisgICAgICAgIGxvYWRSZXF1ZXN0U2hhcmVkKCku
IEFsc28sIHVwZGF0ZSAqU2hhcmVkKCkgbWV0aG9kcyB0byB0YWtlIGEgUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBpbnN0ZWFkCisgICAgICAgIG9mIGEgV2ViUHJvY2Vzc1Byb3h5JiBpbiBwYXJhbWV0
ZXIuIFNpbmNlIHdlIGNhbGwgY2xpZW50IGRlbGVnYXRlcywgd2UgbmVlZCB0byBtYWtlIHN1cmUK
KyAgICAgICAgb3VyIHByb2Nlc3Mgc3RheXMgYWxpdmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGlkQ3JlYXRlTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lv
bmFsUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWROYXZpZ2F0
ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3lu
Yyk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpzdGFy
dFVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6
YmFja0ZvcndhcmRHb1RvSXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFy
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRD
YW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29t
bWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aWRGYWlsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnRG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZnJhbWVEaWRCZWNvbWVG
cmFtZVNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbkFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25TeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWROYXZp
Z2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6dW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cHJpbnRGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YmFj
a0ZvcndhcmRHb1RvSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YmFja0Zv
cndhcmRHb1RvSXRlbVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bGVh
cm5Xb3JkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppZ25vcmVXb3JkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmVkaXRpbmdSYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpyZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9jdXNlZEZyYW1lQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZnJhbWVTZXRMYXJnZXN0RnJhbWVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25G
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJNZWRp
YVBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZW51
bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnN0YXJ0VVJMU2NoZW1lVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzdG9wVVJMU2NoZW1lVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9h
ZFN5bmNocm9ub3VzVVJMU2NoZW1lVGFzayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorCiAyMDE5LTAxLTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVncmVzc2lvbihQU09OKSBWaWV3IGJlY29tZXMgYmxhbmsgYWZ0ZXIgY2xpY2sg
YSBjcm9zcy1zaXRlIGRvd25sb2FkIGxpbmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCAxNGZiYWM4ZDA4MDcwYzdjYTRjNDEwN2Rm
ZDljNDA4Y2NkM2QyZTRjLi5lMGZjNThiODFmODljOGY1NDFkMDBhZWI2MWMzYzliYzk1YWM2YWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwCkBAIC0xNDcsMTQgKzE0NywxNCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2Fk
RGF0YShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YQogewogICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6IHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKIAotICAgIG1fcGFnZS5sb2FkRGF0YVdp
dGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2VzcywgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUs
IGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgbV9wYWdlLmxv
YWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbmF2aWdhdGlv
biwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgV2ViQ29yZTo6
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVz
KSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2
aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
V2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdl
LnBhZ2VJRCgpKTsKIAotICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVk
KG1fcHJvY2VzcywgbmF2aWdhdGlvbiwgV1RGTW92ZShyZXF1ZXN0KSwgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgIG1fcGFnZS5sb2FkUmVx
dWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24s
IFdURk1vdmUocmVxdWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRh
LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJz
aXRlUG9saWNpZXMpKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tG
b3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0mIGl0ZW0sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGlj
aWVzKQpAQCAtMTk2LDEzICsxOTYsMTMgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlk
Q3JlYXRlTWFpbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiAgICAgLy8gSW4gdGhpcyBjYXNlIHdl
IGhhdmUgdGhlIFVJUHJvY2VzcyBzeW50aGVzaXplIHRoZSByZWRpcmVjdCBub3RpZmljYXRpb24g
YXQgdGhlIGFwcHJvcHJpYXRlIHRpbWUuCiAgICAgaWYgKG1faXNTZXJ2ZXJSZWRpcmVjdCkgewog
ICAgICAgICBtX21haW5GcmFtZS0+ZnJhbWVMb2FkU3RhdGUoKS5kaWRTdGFydFByb3Zpc2lvbmFs
TG9hZChtX3JlcXVlc3QudXJsKCkpOwotICAgICAgICBtX3BhZ2UuZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLCBtX21haW5G
cmFtZS0+ZnJhbWVJRCgpLCBtX25hdmlnYXRpb25JRCwgV1RGTW92ZShtX3JlcXVlc3QpLCB7IH0p
OworICAgICAgICBtX3BhZ2UuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV9tYWluRnJhbWUtPmZyYW1l
SUQoKSwgbV9uYXZpZ2F0aW9uSUQsIFdURk1vdmUobV9yZXF1ZXN0KSwgeyB9KTsKICAgICB9CiB9
CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVS
TFN0cmluZywgdWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBtX3BhZ2UuZGlkUGVyZm9ybUNsaWVu
dFJlZGlyZWN0U2hhcmVkKG1fcHJvY2Vzcywgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVS
TFN0cmluZywgZnJhbWVJRCk7CisgICAgbV9wYWdlLmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNo
YXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJM
U3RyaW5nLCBmcmFtZUlEKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIFVSTCYmIHVybCwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbgog
ICAgIGlmIChhdXRvKiBwYWdlTWFpbkZyYW1lID0gbV9wYWdlLm1haW5GcmFtZSgpKQogICAgICAg
ICBwYWdlTWFpbkZyYW1lLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZCh1cmwpOwogCi0gICAgbV9w
YWdlLmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLCBmcmFt
ZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh1bnJlYWNoYWJsZVVSTCks
IHVzZXJEYXRhKTsKKyAgICBtX3BhZ2UuZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNo
YXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUo
dXJsKSwgV1RGTW92ZSh1bnJlYWNoYWJsZVVSTCksIHVzZXJEYXRhKTsKIH0KIAogdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFs
VVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zCiAg
ICAgaWYgKGF1dG8qIHBhZ2VNYWluRnJhbWUgPSBtX3BhZ2UubWFpbkZyYW1lKCkpCiAgICAgICAg
IHBhZ2VNYWluRnJhbWUtPmRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKIAotICAgIG1fcGFnZS5k
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLCBmcmFtZUlELCBm
cmFtZVNlY3VyaXR5T3JpZ2luLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwg
dXNlckRhdGEpOyAvLyBXaWxsIGRlbGV0ZSB8dGhpc3wuCisgICAgbV9wYWdlLmRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBm
cmFtZVNlY3VyaXR5T3JpZ2luLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwg
dXNlckRhdGEpOyAvLyBXaWxsIGRlbGV0ZSB8dGhpc3wuCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0
b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9j
dW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5z
ZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0yNTQsMzIgKzI1NCwz
MiBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0
b3JlJiBzdG9yZSwgdWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBtX3BhZ2UuZGlkTmF2aWdhdGVX
aXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQobV9wcm9jZXNzLCBzdG9yZSwgZnJhbWVJRCk7CisgICAg
bV9wYWdlLmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksIHN0b3JlLCBmcmFtZUlEKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFVSTCYmIHVybCkKIHsKLSAgICBtX3BhZ2UuZGlkQ2hhbmdlUHJvdmlz
aW9uYWxVUkxGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MsIGZyYW1lSUQsIG5hdmlnYXRpb25JRCwg
V1RGTW92ZSh1cmwpKTsKKyAgICBtX3BhZ2UuZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFt
ZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1v
dmUodXJsKSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKLSAgICBtX3BhZ2UuZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2VzcywgZnJhbWVJRCwg
V1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmln
YXRpb25BY3Rpb25EYXRhKSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdl
SUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9k
eSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBsaXN0ZW5lcklEKTsKKyAg
ICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJv
Y2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5h
dmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUoZnJhbWVJ
bmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1
c2VyRGF0YSwgbGlzdGVuZXJJRCk7CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIG1fcGFn
ZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MsIGZyYW1lSUQsIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dN
SU1FVHlwZSwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOworICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5
cGUsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6c3RhcnRVUkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKIHsKLSAgICBtX3BhZ2Uuc3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVkKG1fcHJvY2VzcywgV1RG
TW92ZShwYXJhbWV0ZXJzKSk7CisgICAgbV9wYWdlLnN0YXJ0VVJMU2NoZW1lVGFza1NoYXJlZCht
X3Byb2Nlc3MuY29weVJlZigpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIH0KIAogdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6YmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmIGhhbmRsZSkKIHsKLSAgICBtX3BhZ2UuYmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChtX3By
b2Nlc3MsIGlkZW50aWZpZXIsIGhhbmRsZSk7CisgICAgbV9wYWdlLmJhY2tGb3J3YXJkR29Ub0l0
ZW1TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgaWRlbnRpZmllciwgaGFuZGxlKTsKIH0KIAog
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAzYmJmNjhjZGJjMzRjMDk0YjI5M2ZkN2MxMTI4
ZWFhN2JhY2MwY2Q5Li5iOTFmYWFmNzQ0OTNiYzk4NTlmNGMxZDZiNDM3ZjE1MGU1MzI4ZjVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTIzNyw4ICsyMzcs
OCBAQAogLy8gVGhpcyBjb250cm9scyB3aGF0IHN0cmF0ZWd5IHdlIHVzZSBmb3IgbW91c2Ugd2hl
ZWwgY29hbGVzY2luZy4KICNkZWZpbmUgTUVSR0VfV0hFRUxfRVZFTlRTIDEKIAotI2RlZmluZSBN
RVNTQUdFX0NIRUNLKHByb2Nlc3MsIGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2Vy
dGlvbiwgcHJvY2Vzcy5jb25uZWN0aW9uKCkpCi0jZGVmaW5lIE1FU1NBR0VfQ0hFQ0tfVVJMKHBy
b2Nlc3MsIHVybCkgTUVTU0FHRV9DSEVDS19CQVNFKGNoZWNrVVJMUmVjZWl2ZWRGcm9tQ3VycmVu
dE9yUHJldmlvdXNXZWJQcm9jZXNzKHByb2Nlc3MsIHVybCksIHByb2Nlc3MuY29ubmVjdGlvbigp
KQorI2RlZmluZSBNRVNTQUdFX0NIRUNLKHByb2Nlc3MsIGFzc2VydGlvbikgTUVTU0FHRV9DSEVD
S19CQVNFKGFzc2VydGlvbiwgcHJvY2Vzcy0+Y29ubmVjdGlvbigpKQorI2RlZmluZSBNRVNTQUdF
X0NIRUNLX1VSTChwcm9jZXNzLCB1cmwpIE1FU1NBR0VfQ0hFQ0tfQkFTRShjaGVja1VSTFJlY2Vp
dmVkRnJvbUN1cnJlbnRPclByZXZpb3VzV2ViUHJvY2Vzcyhwcm9jZXNzLCB1cmwpLCBwcm9jZXNz
LT5jb25uZWN0aW9uKCkpCiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVs
LCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNo
YW5uZWwsICIlcCAtIFdlYlBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAK
QEAgLTEwNTksMTYgKzEwNTksMTkgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KIAogICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlEKTsKIAorICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2Vz
cygpOworCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxv
YWRSZXF1ZXN0TmF2aWdhdGlvbihSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIG1fYmFja0Zvcndh
cmRMaXN0LT5jdXJyZW50SXRlbSgpKTsKLSAgICBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hh
cmVkKG1fcHJvY2VzcywgbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZDo6Tm8pOworICAgIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNz
LmNvcHlSZWYoKSwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZDo6Tm8pOwogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0
V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNp
dGVQb2xpY2llcykKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCi0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbjogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVl
c3RXaXRoTmF2aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwogCiAgICAgYXV0byB0cmFuc2FjdGlv
biA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC0xMDc2LDE0ICsxMDc5LDEx
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcywgQVBJCiAgICAgaWYgKHNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCAhPSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcykKICAgICAgICAgbV9w
YWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCB1cmwpOwog
Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7Ci0K
ICAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKICAgICBsb2FkUGFyYW1ldGVycy5u
YXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpOwogICAgIGxvYWRQYXJhbWV0
ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSAodWludDY0X3Qpc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeTsKLSAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3Mu
dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOworICAgIGxvYWRQYXJh
bWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2Vzcy0+dHJhbnNmb3JtT2JqZWN0c1RvSGFu
ZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCA9IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA9PSBTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQ6OlllczsKICAgICBsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNp
ZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyk7CiAgICAgbG9hZFBhcmFtZXRlcnMubG9ja0hp
c3RvcnkgPSBuYXZpZ2F0aW9uLmxvY2tIaXN0b3J5KCk7CkBAIC0xMDk0LDggKzEwOTQsOCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MsIEFQSQogICAgICAgICB3aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVS
ZWFkU2FuZGJveEV4dGVuc2lvbihwcm9jZXNzKTsKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0
ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7Ci0gICAgcHJvY2Vzcy5y
ZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKKyAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBw
cm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIAogUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkKQEAgLTExNTksMTQgKzExNTksMTcgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEsIGMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKCFpc1ZhbGlk
KCkpCisgICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CisKICAgICBhdXRvIG5hdmlnYXRp
b24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZERhdGFOYXZpZ2F0aW9uKHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpTdWJzdGl0dXRlRGF0YT4oZGF0YS52ZWN0b3IoKSwgTUlNRVR5cGUsIGVu
Y29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSkpOwotICAgIGxvYWREYXRhV2l0aE5hdmlnYXRpb25T
aGFyZWQobV9wcm9jZXNzLCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJh
c2VVUkwsIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKKyAgICBs
b2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRp
b24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZDo6Tm8pOwogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24p
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGFXaXRoTmF2
aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibG9hZERhdGFXaXRoTmF2aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwogCiAgICAgQVNT
RVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAtMTE3NCw5ICsxMTc3LDYgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
LCBBUEk6Ok4KIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0
cmFuc2FjdGlvbiwgIWJhc2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IFdURjo6YmxhbmtVUkwo
KS5zdHJpbmcoKSk7CiAKLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmVhdHRhY2hUb1dl
YlByb2Nlc3MoKTsKLQogICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwogICAgIGxv
YWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCk7CiAg
ICAgbG9hZFBhcmFtZXRlcnMuZGF0YSA9IGRhdGE7CkBAIC0xMTg0LDEzICsxMTg0LDEzIEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFdlYlByb2Nlc3NQ
cm94eSYgcHJvY2VzcywgQVBJOjpOCiAgICAgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lID0g
ZW5jb2Rpbmc7CiAgICAgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZyA9IGJhc2VVUkw7CiAg
ICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkID0gc2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkID09IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzOwot
ICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2Vzcy50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7CisgICAgbG9hZFBhcmFtZXRlcnMudXNl
ckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzLT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhKS5nZXQoKSk7CiAgICAgbG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzID0gV1RGTW92
ZSh3ZWJzaXRlUG9saWNpZXMpOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBh
cmFtZXRlcnMpOwogCi0gICAgcHJvY2Vzcy5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlz
LCBiYXNlVVJMKTsKLSAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRh
KGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwotICAgIHByb2Nlc3MucmVzcG9uc2l2ZW5lc3NU
aW1lcigpLnN0YXJ0KCk7CisgICAgcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgq
dGhpcywgYmFzZVVSTCk7CisgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9h
ZERhdGEobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJu
YXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkws
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKQEAgLTIwOTQsNyArMjA5NCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24g
YWN0aW9uLCBEcmFnCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24odWludDY0X3QgZHJhZ09wZXJhdGlvbiwgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0
aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWdu
ZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgSW50UmVjdCYgaW5zZXJ0aW9uUmVj
dCwgY29uc3QgSW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCkKIHsKLSAgICBNRVNTQUdFX0NI
RUNLKG1fcHJvY2Vzcy5nZXQoKSwgZHJhZ09wZXJhdGlvbiA8PSBEcmFnT3BlcmF0aW9uRGVsZXRl
KTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZHJhZ09wZXJhdGlvbiA8PSBEcmFnT3Bl
cmF0aW9uRGVsZXRlKTsKIAogICAgIG1fY3VycmVudERyYWdPcGVyYXRpb24gPSBzdGF0aWNfY2Fz
dDxEcmFnT3BlcmF0aW9uPihkcmFnT3BlcmF0aW9uKTsKICAgICBtX2N1cnJlbnREcmFnSGFuZGxp
bmdNZXRob2QgPSBkcmFnSGFuZGxpbmdNZXRob2Q7CkBAIC0yNDA3LDcgKzI0MDcsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCB1aW50MzJf
dCBwcm9jZXNzVHlwZSwgY29ucwogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9y
KHBhZ2VDbGllbnQoKSk7CiAKLSAgICBNRVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzKCksIHVybFN0
cmluZyk7CisgICAgTUVTU0FHRV9DSEVDS19VUkwobV9wcm9jZXNzLCB1cmxTdHJpbmcpOwogCiAg
ICAgVVJMIHBsdWdpblVSTCA9IFVSTCB7IFVSTCgpLCB1cmxTdHJpbmcgfTsKICAgICBTdHJpbmcg
bmV3TWltZVR5cGUgPSBtaW1lVHlwZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwpAQCAtMzY3
MSw4ICszNjcxLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSh1aW50
NjRfdCBmcmFtZUlEKQogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNs
aWVudCgpKTsKIAotICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLmdldCgpLCAhbV9tYWluRnJh
bWUpOwotICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLmdldCgpLCBtX3Byb2Nlc3MtPmNhbkNy
ZWF0ZUZyYW1lKGZyYW1lSUQpKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgIW1fbWFp
bkZyYW1lKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcm9jZXNzLT5jYW5DcmVh
dGVGcmFtZShmcmFtZUlEKSk7CiAKICAgICBtX21haW5GcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNy
ZWF0ZSgqdGhpcywgZnJhbWVJRCk7CiAKQEAgLTM2ODQsNyArMzY4NCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogewogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKLSAgICBNRVNTQUdFX0NI
RUNLKG1fcHJvY2Vzcy5nZXQoKSwgbV9tYWluRnJhbWUpOworICAgIE1FU1NBR0VfQ0hFQ0sobV9w
cm9jZXNzLCBtX21haW5GcmFtZSk7CiAKICAgICAvLyBUaGUgRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmMgSVBDIGlzIHN5bmNocm9ub3VzIGFuZCBtYXkgdGhlcmVmb3JlIGdldCBw
cm9jZXNzZWQgYmVmb3JlIHRoZSBEaWRDcmVhdGVTdWJmcmFtZSBvbmUuCiAgICAgLy8gV2hlbiB0
aGlzIGhhcHBlbnMsIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKCkgY2FsbHMg
ZGlkQ3JlYXRlU3ViZnJhbWUoKSBhbmQgd2UgbmVlZCB0byBpZ25vcmUgdGhlIERpZENyZWF0ZVN1
YmZyYW1lCkBAIC0zNjkyLDcgKzM2OTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRl
U3ViZnJhbWUodWludDY0X3QgZnJhbWVJRCkKICAgICBpZiAobV9wcm9jZXNzLT53ZWJGcmFtZShm
cmFtZUlEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3Mu
Z2V0KCksIG1fcHJvY2Vzcy0+Y2FuQ3JlYXRlRnJhbWUoZnJhbWVJRCkpOworICAgIE1FU1NBR0Vf
Q0hFQ0sobV9wcm9jZXNzLCBtX3Byb2Nlc3MtPmNhbkNyZWF0ZUZyYW1lKGZyYW1lSUQpKTsKICAg
ICAKICAgICBhdXRvIHN1YkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKCp0aGlzLCBmcmFt
ZUlEKTsKIApAQCAtMzc2NCwxNCArMzc2NCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGVz
dHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmIHVybCwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lU2hhcmVkKG1fcHJvY2VzcywgZnJhbWVJRCwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKHVybCks
IFdURk1vdmUodW5yZWFjaGFibGVVUkwpLCB1c2VyRGF0YSk7CisgICAgZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBuYXZp
Z2F0aW9uSUQsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh1bnJlYWNoYWJsZVVSTCksIHVzZXJEYXRh
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWVTaGFyZWQoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmIHVybCwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiB1cmwsIFVSTCYmIHVu
cmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgUGFnZUNsaWVu
dFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIAotICAgIFdlYkZyYW1lUHJveHkq
IGZyYW1lID0gcHJvY2Vzcy53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZVByb3h5KiBm
cmFtZSA9IHByb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0socHJv
Y2VzcywgZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MsIHVybCk7CiAKQEAg
LTM3ODAsOCArMzc4MCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lU2hhcmVkKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzCiAgICAgaWYgKGZyYW1l
LT5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkKICAgICAgICAgbmF2aWdhdGlvbiA9IG5h
dmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIAotICAgIExPRyhMb2Fk
aW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHByb2Nlc3MgcGlkICVpIGRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlv
bklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBtX3BhZ2VJRCwgcHJvY2Vzcy5wcm9jZXNzSWRlbnRp
ZmllcigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZy
YW1lSUQpOworICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHBy
b2Nlc3MgcGlkICVpIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAl
IiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBtX3BhZ2VJRCwg
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1cmwu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0g
bV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTM4MDAsMjQgKzM4MDAsMjQgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQo
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXMKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFu
Z2VzKCk7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQotICAgICAgICBtX2xvYWRlckNsaWVudC0+
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9u
LmdldCgpLCBwcm9jZXNzLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgcHJvY2Vzcy0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogICAgIGVs
c2UgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQt
PmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uLmdldCgpLCBw
cm9jZXNzLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgp
KTsKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdh
dGlvbigqdGhpcywgbmF2aWdhdGlvbi5nZXQoKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1Rv
T2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLCBmcmFt
ZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUocmVxdWVzdCksIHVzZXJEYXRhKTsKKyAgICBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3By
b2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUocmVxdWVzdCks
IHVzZXJEYXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcywgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJ
RCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBmcmFtZUlE
LCBuYXZpZ2F0aW9uSUQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOwogCiAgICAgUGFn
ZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIAotICAgIFdlYkZyYW1l
UHJveHkqIGZyYW1lID0gcHJvY2Vzcy53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZVBy
b3h5KiBmcmFtZSA9IHByb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hF
Q0socHJvY2VzcywgZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MsIHJlcXVl
c3QudXJsKCkpOwogCkBAIC0zODM1LDkgKzM4MzUsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoV2Vi
UAogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKICAgICBpZiAobV9sb2Fk
ZXJDbGllbnQpCi0gICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBmcmFtZS0+aXNNYWlu
RnJhbWUoKSA/IG5hdmlnYXRpb24uZ2V0KCkgOiBudWxscHRyLCBwcm9jZXNzLnRyYW5zZm9ybUhh
bmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICAgICAgbV9sb2Fk
ZXJDbGllbnQtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKCp0aGlzLCAqZnJhbWUsIGZyYW1lLT5pc01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5nZXQo
KSA6IG51bGxwdHIsIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKICAgICBlbHNlIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbE5hdmlnYXRpb24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIHByb2Nlc3MudHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgICAgICBt
X25hdmlnYXRpb25DbGllbnQtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TmF2aWdhdGlvbigqdGhpcywgbmF2aWdhdGlvbi5nZXQoKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgdXJsLCBkb3VibGUgZGVsYXksIFdlYkNvcmU6OkxvY2tCYWNrRm9y
d2FyZExpc3QpCkBAIC0zODQ3LDcgKzM4NDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cgog
ICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKICAgICBX
ZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7Ci0gICAg
TUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MuZ2V0KCksIGZyYW1lKTsKKyAgICBNRVNTQUdFX0NIRUNL
KG1fcHJvY2VzcywgZnJhbWUpOwogCiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQogICAg
ICAgICBtX25hdmlnYXRpb25DbGllbnQtPndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoKnRoaXMs
IHVybCwgZGVsYXkpOwpAQCAtMzg2MCw3ICszODYwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCiAgICAgV2ViRnJhbWVQ
cm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwotICAgIE1FU1NBR0Vf
Q0hFQ0sobV9wcm9jZXNzLmdldCgpLCBmcmFtZSk7CisgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nl
c3MsIGZyYW1lKTsKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgbV9u
YXZpZ2F0aW9uQ2xpZW50LT5kaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgqdGhpcyk7CkBAIC0zODY4
LDE0ICszODY4LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVj
dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFu
Z2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgVVJMJiYgdXJsKQogewotICAgIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJh
bWVTaGFyZWQobV9wcm9jZXNzLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUodXJsKSk7
CisgICAgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29w
eVJlZigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUodXJsKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIFVSTCYmIHVy
bCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QsIFVSTCYmIHVybCkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rvcihw
YWdlQ2xpZW50KCkpOwogCi0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzLndlYkZy
YW1lKGZyYW1lSUQpOworICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2Vzcy0+d2ViRnJh
bWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhwcm9jZXNzLCBmcmFtZSk7CiAgICAgTUVT
U0FHRV9DSEVDSyhwcm9jZXNzLCBmcmFtZS0+ZnJhbWVMb2FkU3RhdGUoKS5zdGF0ZSgpID09IEZy
YW1lTG9hZFN0YXRlOjpTdGF0ZTo6UHJvdmlzaW9uYWwpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJM
KHByb2Nlc3MsIHVybCk7CkBAIC0zODk3LDIxICszODk3LDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U2VjdXJpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLCBmcmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwgdXNlckRhdGEpOworICAgIGRp
ZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBm
cmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJM
LCBlcnJvciwgdXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgTE9HKExvYWRpbmcsICIoTG9hZGlu
ZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHdlYiBwcm9jZXNzIHBpZCAlaSBkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJvdmlzaW9uYWxVUkwgJXMiLCBtX3BhZ2VJRCwg
cHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCBwcm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgp
KTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgcHJvY2Vzcy5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRh
dGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdl
YlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdlSUQsIHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBwcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEo
KSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0
b3IocGFnZUNsaWVudCgpKTsKIAotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2Vzcy53
ZWJGcmFtZShmcmFtZUlEKTsKLSAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcy5nZXQoKSwgZnJh
bWUpOworICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJ
RCk7CisgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKIAogICAgIGlmIChtX2Nv
bnRyb2xsZWRCeUF1dG9tYXRpb24pIHsKLSAgICAgICAgaWYgKGF1dG8qIGF1dG9tYXRpb25TZXNz
aW9uID0gcHJvY2Vzcy5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9uKCkpCisgICAgICAg
IGlmIChhdXRvKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IHByb2Nlc3MtPnByb2Nlc3NQb29sKCkuYXV0
b21hdGlvblNlc3Npb24oKSkKICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT5uYXZpZ2F0
aW9uT2NjdXJyZWRGb3JGcmFtZSgqZnJhbWUpOwogICAgIH0KIApAQCAtMzkzNiwxMiArMzkzNiwx
MiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hh
cmVkKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogICAgIG1fZmFpbGluZ1Byb3Zpc2lvbmFsTG9h
ZFVSTCA9IHByb3Zpc2lvbmFsVVJMOwogCiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQotICAgICAg
ICBtX2xvYWRlckNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1l
KCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBwcm9jZXNzLnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICAgICAgbV9s
b2FkZXJDbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSgqdGhp
cywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogICAgIGVsc2UgaWYgKGZy
YW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQ
cm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5n
ZXQoKSwgZXJyb3IsIHByb2Nlc3MudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOworICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92
aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQo
KSwgZXJyb3IsIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IEdldCB0aGUgbWFp
biBmcmFtZSdzIGN1cnJlbnQgbmF2aWdhdGlvbi4KLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcigqdGhpcywgKmZyYW1l
LCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBudWxscHRyLCBlcnJvciwgcHJvY2Vzcy50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgICAgIG1fbmF2
aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3Io
KnRoaXMsICpmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbiwgbnVsbHB0ciwgZXJyb3IsIHByb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsK
ICAgICB9CiAKICAgICBtX2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkwgPSB7IH07CkBAIC0zOTY5
LDcgKzM5NjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogICAgIFBhZ2VDbGllbnRQcm90
ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKICAgICBXZWJGcmFtZVByb3h5KiBmcmFt
ZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3By
b2Nlc3MuZ2V0KCksIGZyYW1lKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUp
OwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBtZXNzYWdlIGNoZWNrIHRoYXQgbmF2aWdhdGlv
bklEIGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJvIGZvciBzb21lIG5h
dmlnYXRpb25zIHRocm91Z2ggdGhlIHBhZ2UgY2FjaGUuCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gbmF2aWdhdGlvbjsKQEAgLTQwNjMsNyArNDA2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsK
IAogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlE
KTsKLSAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcy5nZXQoKSwgZnJhbWUpOworICAgIE1FU1NB
R0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CiAKICAgICBpZiAobV9jb250cm9sbGVkQnlBdXRv
bWF0aW9uKSB7CiAgICAgICAgIGlmIChhdXRvKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IHByb2Nlc3Mo
KS5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9uKCkpCkBAIC00MDg3LDcgKzQwODcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vz
cy0+d2ViRnJhbWUoZnJhbWVJRCk7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MuZ2V0KCks
IGZyYW1lKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogCiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBtZXNzYWdlIGNoZWNrIHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6
ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJvIGZvciBzb21lIG5hdmlnYXRpb25zIHRo
cm91Z2ggdGhlIHBhZ2UgY2FjaGUuCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdh
dGlvbjsKQEAgLTQxMzIsNyArNDEzMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKICAgICBQ
YWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCiAgICAgV2ViRnJh
bWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwotICAgIE1FU1NB
R0VfQ0hFQ0sobV9wcm9jZXNzLmdldCgpLCBmcmFtZSk7CisgICAgTUVTU0FHRV9DSEVDSyhtX3By
b2Nlc3MsIGZyYW1lKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbWVzc2FnZSBjaGVjayB0
aGF0IG5hdmlnYXRpb25JRCBpcyBub3QgemVybyBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgemVy
byBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBwYWdlIGNhY2hlLgogICAgIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb247CkBAIC00MTc0LDggKzQxNzQsOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFn
ZUNsaWVudCgpKTsKIAogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShmcmFtZUlEKTsKLSAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcy5nZXQoKSwgZnJhbWUp
OwotICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MoKSwgdXJsKTsKKyAgICBNRVNTQUdFX0NI
RUNLKG1fcHJvY2VzcywgZnJhbWUpOworICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKG1fcHJvY2Vzcywg
dXJsKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbWVzc2FnZSBjaGVjayB0aGF0IG5hdmln
YXRpb25JRCBpcyBub3QgemVybyBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgemVybyBmb3Igc29t
ZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBwYWdlIGNhY2hlLgogICAgIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IG5hdmlnYXRpb247CkBAIC00MjI3LDcgKzQyMjcsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiB0aXRsZQogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQo
KSk7CiAKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJh
bWVJRCk7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MuZ2V0KCksIGZyYW1lKTsKKyAgICBN
RVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC00MjUzLDcgKzQyNTMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgY29ucwogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9y
KHBhZ2VDbGllbnQoKSk7CiAKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+
d2ViRnJhbWUoZnJhbWVJRCk7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MuZ2V0KCksIGZy
YW1lKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogCiAgICAgaWYgKG1f
bG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CkBAIC00Mjg0LDcgKzQy
ODQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFVzZQogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3Ig
cHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1f
cHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3Mu
Z2V0KCksIGZyYW1lKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogCiAg
ICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAg
IG1fcGFnZUxvYWRTdGF0ZS5kaWREaXNwbGF5T3JSdW5JbnNlY3VyZUNvbnRlbnQodHJhbnNhY3Rp
b24pOwpAQCAtNDI5OCw3ICs0Mjk4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJ1bkluc2Vj
dXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFVzZXJEYXQKICAgICBQ
YWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCiAgICAgV2ViRnJh
bWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwotICAgIE1FU1NB
R0VfQ0hFQ0sobV9wcm9jZXNzLmdldCgpLCBmcmFtZSk7CisgICAgTUVTU0FHRV9DSEVDSyhtX3By
b2Nlc3MsIGZyYW1lKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUu
dHJhbnNhY3Rpb24oKTsKICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkRGlzcGxheU9yUnVuSW5zZWN1
cmVDb250ZW50KHRyYW5zYWN0aW9uKTsKQEAgLTQzMjEsNyArNDMyMSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpmcmFtZURpZEJlY29tZUZyYW1lU2V0KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgdmFs
dWUpCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIAog
ICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsK
LSAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcy5nZXQoKSwgZnJhbWUpOworICAgIE1FU1NBR0Vf
Q0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CiAKICAgICBmcmFtZS0+c2V0SXNGcmFtZVNldCh2YWx1
ZSk7CiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQpAQCAtNDMzNywyMCArNDMzNywyMCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBi
b29sLCBXZWJGcmFtZVBvbGljeUxpc3RlbgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RC
b2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQogewotICAgIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChtX3Byb2Nlc3MsIGZyYW1lSUQsIFdU
Rk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0
aW9uQWN0aW9uRGF0YSksIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlE
LCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkp
LCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7CisgICAg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRpb25J
RCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUoZnJhbWVJbmZvRGF0YSks
IG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdU
Rk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwg
bGlzdGVuZXJJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRf
dCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
ZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVu
ZXJJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
QXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkK
IHsKLSAgICBhdXRvKiBmcmFtZSA9IHByb2Nlc3Mud2ViRnJhbWUoZnJhbWVJRCk7CisgICAgYXV0
byogZnJhbWUgPSBwcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNL
KHByb2Nlc3MsIGZyYW1lKTsKIAotICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
cHJvY2VzcywgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9u
SUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEp
LCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEs
IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IG1ha2VSZWYocHJvY2Vz
cyldIChhdXRvLi4uIGFyZ3MpIHsKKyAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KHByb2Nlc3MuY29weVJlZigpLCAqZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiks
IG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUoZnJh
bWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUo
cmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2Up
LCB1c2VyRGF0YSwgUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gcHJv
Y2Vzcy5jb3B5UmVmKCldIChhdXRvLi4uIGFyZ3MpIHsKICAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3Rl
bmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7CiAgICAgfSkpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyKQordm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9E
YXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBy
ZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNl
bmRlcikKIHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbiAtIE9yaWdpbmFsIFVSTCAlcywgY3VycmVudCB0YXJnZXQgVVJMICVz
Iiwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTQzOTIsNyArNDM5Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgV2ViCiAgICAgfQogCiAgICAgdWludDY0X3QgbmV3TmF2aWdhdGlv
bklEID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7Ci0gICAgbmF2aWdhdGlvbi0+c2V0Q3Vy
cmVudFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBwcm9jZXNzLmNvcmVQcm9jZXNz
SWRlbnRpZmllcigpKTsKKyAgICBuYXZpZ2F0aW9uLT5zZXRDdXJyZW50UmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QocmVxdWVzdCksIHByb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAg
ICBuYXZpZ2F0aW9uLT5zZXRMYXN0TmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uRGF0
YSk7CiAgICAgbmF2aWdhdGlvbi0+c2V0T3JpZ2luYXRpbmdGcmFtZUluZm8ob3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhKTsKICAgICBuYXZpZ2F0aW9uLT5zZXREZXN0aW5hdGlvbkZyYW1lU2VjdXJp
dHlPcmlnaW4oZnJhbWVTZWN1cml0eU9yaWdpbik7CkBAIC00NDUxLDcgKzQ0NTEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQcm9jZXNz
UHJveHkmIHByb2Nlc3MsIFdlYgogICAgICAgICBiZWdpblNhZmVCcm93c2luZ0NoZWNrKHJlcXVl
c3QudXJsKCksIGZyYW1lLmlzTWFpbkZyYW1lKCksIGxpc3RlbmVyKTsKIAogICAgIEFQSTo6TmF2
aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbiA9IGZyYW1lLmlzTWFpbkZyYW1lKCkgPyBuYXZp
Z2F0aW9uLmdldCgpIDogbnVsbHB0cjsKLSAgICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0Zy
YW1lID0gcHJvY2Vzcy53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCk7
CisgICAgV2ViRnJhbWVQcm94eSogb3JpZ2luYXRpbmdGcmFtZSA9IHByb2Nlc3MtPndlYkZyYW1l
KG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEKTsKIAogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSA9IHdlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCkBAIC00
NDYwLDIxICs0NDYwLDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViCiAjZW5kaWYKIAogICAg
IGlmIChtX3BvbGljeUNsaWVudCkKLSAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsICZmcmFtZSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0
aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgJmZyYW1lLCBXVEZNb3ZlKG5hdmln
YXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdGcmFtZSwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogICAgIGVsc2UgewogICAgICAg
ICBhdXRvIGRlc3RpbmF0aW9uRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShmcmFt
ZSwgZnJhbWVTZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKTsKICAgICAgICAgUmVmUHRy
PEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87CiAgICAgICAgIGlmICghZnJvbUFQSSAm
JiBvcmlnaW5hdGluZ0ZyYW1lID09ICZmcmFtZSkKICAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5m
byA9IGRlc3RpbmF0aW9uRnJhbWVJbmZvLmNvcHlSZWYoKTsKICAgICAgICAgZWxzZSBpZiAoIWZy
b21BUEkpCi0gICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3Jl
YXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9jZXNz
LndlYlBhZ2Uob3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7CisgICAgICAgICAgICBzb3Vy
Y2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFn
ZUlEKSA6IG51bGxwdHIpOwogCi0gICAgICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0g
cHJvY2Vzcy51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdl
c3R1cmVUb2tlbklkZW50aWZpZXIpOworICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0
eSA9IHByb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51
c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExp
bmtzID0gIW1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbiAmJiBkZXN0aW5hdGlvbkZyYW1lSW5mby0+aXNNYWluRnJhbWUoKSAmJiAhaG9zdHNBcmVF
cXVhbChVUkwoeyB9LCBtX21haW5GcmFtZS0+dXJsKCkpLCByZXF1ZXN0LnVybCgpKSAmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSAhPSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlw
ZTo6QmFja0ZvcndhcmQ7CiAKICAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpO
YXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNv
dXJjZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUluZm8ucHRyKCksIFdURjo6bnVs
bG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLCBzaG91bGRPcGVu
QXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSwgbWFpbkZyYW1lTmF2aWdh
dGlvbik7CiAKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKCp0aGlzLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKGxp
c3RlbmVyKSwgcHJvY2Vzcy50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVj
dCgpKS5nZXQoKSk7CisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbigqdGhpcywgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92
ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKICAgICB9CiAKICAgICBtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJ
bk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBmYWxzZTsKQEAgLTQ1MjgsNyArNDUyOCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Yyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZyYW1l
KTsKICAgICB9CiAKLSAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKG1fcHJvY2Vz
cywgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdU
Rk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmln
aW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNlbmRl
ci5jb3B5UmVmKCkpOworICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24obV9wcm9j
ZXNzLmNvcHlSZWYoKSwgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZp
Z2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5m
b0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNl
ckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOwogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBkaWQgbm90
IHJlc3BvbmQgc3luY2hyb25vdXNseSwgcHJvY2VlZCB3aXRoIHRoZSBsb2FkLgogICAgIHNlbmRl
ci0+c2VuZChXZWJQb2xpY3lBY3Rpb246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCks
IFdURjo6bnVsbG9wdCk7CkBAIC00NTM5LDggKzQ1MzksOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNl
Y3VyaQogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAK
ICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7
Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MuZ2V0KCksIGZyYW1lKTsKLSAgICBNRVNTQUdF
X0NIRUNLX1VSTChwcm9jZXNzKCksIHJlcXVlc3QudXJsKCkpOworICAgIE1FU1NBR0VfQ0hFQ0so
bV9wcm9jZXNzLCBmcmFtZSk7CisgICAgTUVTU0FHRV9DSEVDS19VUkwobV9wcm9jZXNzLCByZXF1
ZXN0LnVybCgpKTsKIAogICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBv
bGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
bGlzdGVuZXJJRCwgZnJhbWVJRF0gKFdlYlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6
V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJv
d3NpbmdXYXJuaW5nKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IEFzc2VydCB0aGUgQVBJ
OjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNsaWVudHMgb2YgV0tGcmFt
ZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCkBAIC00NTcwLDIyICs0NTcw
LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKIHsKLSAgICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3By
b2Nlc3MsIGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25JRCwgcmVzcG9u
c2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOworICAg
IGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1l
SUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3Qs
IGNhblNob3dNSU1FVHlwZSwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5T
aG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKICAgICBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVz
dCA9IHJlcXVlc3Q7CiAKLSAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3Mud2ViRnJh
bWUoZnJhbWVJRCk7CisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzLT53ZWJGcmFt
ZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKHByb2Nlc3MsIGZyYW1lKTsKICAgICBNRVNT
QUdFX0NIRUNLX1VSTChwcm9jZXNzLCByZXF1ZXN0LnVybCgpKTsKICAgICBNRVNTQUdFX0NIRUNL
X1VSTChwcm9jZXNzLCByZXNwb25zZS51cmwoKSk7CiAKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvbklEID8gbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmln
YXRpb24obmF2aWdhdGlvbklEKSA6IG51bGxwdHI7Ci0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VS
ZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uID0gV1RGTW92
ZShuYXZpZ2F0aW9uKSwgcHJvY2VzcyA9IG1ha2VSZWYocHJvY2VzcyldIChXZWJQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93
c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZykgbXV0YWJsZSB7CisgICAgYXV0byBs
aXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBuYXZp
Z2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwgcHJvY2VzcyA9IHByb2Nlc3MuY29weVJlZigp
XSAoV2ViUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQ
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQs
IFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcpIG11dGFi
bGUgewogICAgICAgICAvLyBGSVhNRTogQXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyog
aXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VX
aXRoUG9saWNpZXMgZ28gYXdheS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dh
cm5pbmcpOwpAQCAtNDU5NSwxMCArNDU5NSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50Ngog
ICAgIH0sIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm8pKTsKIAogICAgIGlmICht
X3BvbGljeUNsaWVudCkKLSAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvclJl
c3BvbnNlKCp0aGlzLCAqZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUs
IFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBv
bGljeUZvclJlc3BvbnNlKCp0aGlzLCAqZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93
TUlNRVR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9P
YmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1
dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbi5zZWN1cml0
eU9yaWdpbigpKS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSk7Ci0g
ICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlKCp0aGlzLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUobGlzdGVuZXIp
LCBwcm9jZXNzLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdl
dCgpKTsKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uUmVzcG9uc2UoKnRoaXMsIFdURk1vdmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92ZShs
aXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTQ2MDcsNyArNDYwNyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBSZXNvdXJjZUVycm9yCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNs
aWVudCgpKTsKIAogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFt
ZShmcmFtZUlEKTsKLSAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcy5nZXQoKSwgZnJhbWUpOwor
ICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CiAKICAgICBpZiAoIW1fcG9saWN5
Q2xpZW50KQogICAgICAgICByZXR1cm47CkBAIC00NjE5LDEwICs0NjE5LDEwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBSZXNvdXJjZUVycm9yCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFN1Ym1pdEZvcm0odWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4+JiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9
IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nl
c3MuZ2V0KCksIGZyYW1lKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwog
CiAgICAgV2ViRnJhbWVQcm94eSogc291cmNlRnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKHNv
dXJjZUZyYW1lSUQpOwotICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLmdldCgpLCBzb3VyY2VG
cmFtZSk7CisgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIHNvdXJjZUZyYW1lKTsKIAogICAg
IG1fZm9ybUNsaWVudC0+d2lsbFN1Ym1pdEZvcm0oKnRoaXMsICpmcmFtZSwgKnNvdXJjZUZyYW1l
LCB0ZXh0RmllbGRWYWx1ZXMsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1
c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURdKCkgewogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0oZnJhbWVJRCwgbGlzdGVu
ZXJJRCksIG1fcGFnZUlEKTsKQEAgLTQ2MzYsMzkgKzQ2MzYsMzkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+
JiYgaWRlbnQKICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0
aW9uRGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzdG9yZSwgdWludDY0X3QgZnJh
bWVJRCkgCiB7Ci0gICAgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQobV9wcm9j
ZXNzLCBzdG9yZSwgZnJhbWVJRCk7CisgICAgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFT
aGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgc3RvcmUsIGZyYW1lSUQpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQoV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzdG9yZSwgdWlu
dDY0X3QgZnJhbWVJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0
aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFdlYk5h
dmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCB1aW50NjRfdCBmcmFtZUlEKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRh
U2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQp
OwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIAot
ICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2Vzcy53ZWJGcmFtZShmcmFtZUlEKTsKKyAg
ICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAg
IE1FU1NBR0VfQ0hFQ0socHJvY2VzcywgZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0socHJvY2Vz
cywgZnJhbWUtPnBhZ2UoKSA9PSB0aGlzKTsKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUo
KSkKICAgICAgICAgbV9oaXN0b3J5Q2xpZW50LT5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0
YSgqdGhpcywgc3RvcmUpOwotICAgIHByb2Nlc3MucHJvY2Vzc1Bvb2woKS5oaXN0b3J5Q2xpZW50
KCkuZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEocHJvY2Vzcy5wcm9jZXNzUG9vbCgpLCAq
dGhpcywgc3RvcmUsICpmcmFtZSk7CisgICAgcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5oaXN0b3J5
Q2xpZW50KCkuZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEocHJvY2Vzcy0+cHJvY2Vzc1Bv
b2woKSwgKnRoaXMsIHN0b3JlLCAqZnJhbWUpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCB1aW50NjRfdCBmcmFtZUlEKQogewotICAg
IGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZChtX3Byb2Nlc3MsIHNvdXJjZVVSTFN0cmlu
ZywgZGVzdGluYXRpb25VUkxTdHJpbmcsIGZyYW1lSUQpOworICAgIGRpZFBlcmZvcm1DbGllbnRS
ZWRpcmVjdFNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3Rp
bmF0aW9uVVJMU3RyaW5nLCBmcmFtZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBl
cmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZChXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3Ry
aW5nLCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGll
bnRSZWRpcmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5n
LCB1aW50NjRfdCBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3Rv
ciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIAogICAgIGlmIChzb3VyY2VVUkxTdHJpbmcuaXNF
bXB0eSgpIHx8IGRlc3RpbmF0aW9uVVJMU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2Vzcy53ZWJGcmFtZShmcmFt
ZUlEKTsKKyAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MtPndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIE1FU1NBR0VfQ0hFQ0socHJvY2VzcywgZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hF
Q0socHJvY2VzcywgZnJhbWUtPnBhZ2UoKSA9PSB0aGlzKTsKICAgICBNRVNTQUdFX0NIRUNLX1VS
TChwcm9jZXNzLCBzb3VyY2VVUkxTdHJpbmcpOwpAQCAtNDY3OCw3ICs0Njc4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZChXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsIGNvbnMKICAgICAgICAgbV9oaXN0b3J5Q2xpZW50LT5kaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QoKnRoaXMsIHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcp
OwogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCgq
dGhpcywgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZyk7CiAgICAgfQotICAg
IHByb2Nlc3MucHJvY2Vzc1Bvb2woKS5oaXN0b3J5Q2xpZW50KCkuZGlkUGVyZm9ybUNsaWVudFJl
ZGlyZWN0KHByb2Nlc3MucHJvY2Vzc1Bvb2woKSwgKnRoaXMsIHNvdXJjZVVSTFN0cmluZywgZGVz
dGluYXRpb25VUkxTdHJpbmcsICpmcmFtZSk7CisgICAgcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5o
aXN0b3J5Q2xpZW50KCkuZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KHByb2Nlc3MtPnByb2Nlc3NQ
b29sKCksICp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCAqZnJh
bWUpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNv
bnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJM
U3RyaW5nLCB1aW50NjRfdCBmcmFtZUlEKQpAQCAtNDY5MSwxMSArNDY5MSwxMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNl
VVJMU3RyaW5nLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgV2ViRnJhbWVQcm94
eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwotICAgIE1FU1NBR0VfQ0hF
Q0sobV9wcm9jZXNzLmdldCgpLCBmcmFtZSk7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3Mu
Z2V0KCksIGZyYW1lLT5wYWdlKCkgPT0gdGhpcyk7CisgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nl
c3MsIGZyYW1lKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUtPnBhZ2UoKSA9
PSB0aGlzKTsKIAotICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MoKSwgc291cmNlVVJMU3Ry
aW5nKTsKLSAgICBNRVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzKCksIGRlc3RpbmF0aW9uVVJMU3Ry
aW5nKTsKKyAgICBNRVNTQUdFX0NIRUNLX1VSTChtX3Byb2Nlc3MsIHNvdXJjZVVSTFN0cmluZyk7
CisgICAgTUVTU0FHRV9DSEVDS19VUkwobV9wcm9jZXNzLCBkZXN0aW5hdGlvblVSTFN0cmluZyk7
CiAKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIG1faGlzdG9yeUNsaWVu
dC0+ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KCp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3Rp
bmF0aW9uVVJMU3RyaW5nKTsKQEAgLTQ3MDcsMTAgKzQ3MDcsMTAgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJp
bmcmIHVybCwKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkp
OwogCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1l
SUQpOwotICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLmdldCgpLCBmcmFtZSk7Ci0gICAgTUVT
U0FHRV9DSEVDSyhtX3Byb2Nlc3MuZ2V0KCksIGZyYW1lLT5wYWdlKCkgPT0gdGhpcyk7CisgICAg
TUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJv
Y2VzcywgZnJhbWUtPnBhZ2UoKSA9PSB0aGlzKTsKIAotICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHBy
b2Nlc3MoKSwgdXJsKTsKKyAgICBNRVNTQUdFX0NIRUNLX1VSTChtX3Byb2Nlc3MsIHVybCk7CiAK
ICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIG1faGlzdG9yeUNsaWVudC0+
ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKCp0aGlzLCB0aXRsZSwgdXJsKTsKQEAgLTQ3MjEsNyArNDcy
MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUoY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVh
dGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwg
dWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdp
bmRvd0ZlYXR1cmVzJiYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLmdl
dCgpLCBtX3Byb2Nlc3MtPndlYkZyYW1lKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlE
KSk7CisgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIG1fcHJvY2Vzcy0+d2ViRnJhbWUob3Jp
Z2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpKTsKICAgICBhdXRvIG9yaWdpbmF0aW5nRnJh
bWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEs
IG1fcHJvY2Vzcy0+d2ViUGFnZShvcmlnaW5hdGluZ1BhZ2VJRCkpOwogCiAgICAgYXV0byBtYWlu
RnJhbWVVUkwgPSBtX21haW5GcmFtZS0+dXJsKCk7CkBAIC00Nzg2LDcgKzQ3ODYsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2xvc2VQYWdlKGJvb2wgc3RvcFJlc3BvbnNpdmVuZXNzVGltZXIpCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVk
UmVwbHkmJiByZXBseSkKIHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+
d2ViRnJhbWUoZnJhbWVJRCk7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MuZ2V0KCksIGZy
YW1lKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBleGl0RnVsbHNjcmVlbkltbWVkaWF0ZWx5KCk7CkBAIC00ODA1
LDcgKzQ4MDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YQogdm9pZCBXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBseSYmIHJlcGx5
KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFt
ZUlEKTsKLSAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcy5nZXQoKSwgZnJhbWUpOworICAgIE1F
U1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGV4aXRGdWxsc2NyZWVuSW1tZWRpYXRlbHkoKTsKQEAgLTQ4MjUsNyArNDgyNSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybSh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dFByb21wdCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZh
bHVlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpEZWxheWVk
UmVwbHkmJiByZXBseSkKIHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+
d2ViRnJhbWUoZnJhbWVJRCk7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MuZ2V0KCksIGZy
YW1lKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBleGl0RnVsbHNjcmVlbkltbWVkaWF0ZWx5KCk7CkBAIC00ODc2
LDEwICs0ODc2LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNo
aW5nKCkKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIHZvaWQgV2ViUGFnZVByb3h5
Ojp1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQodWludDMyX3Qgb3BhcXVlUGx1Z2luVW5h
dmFpbGFiaWxpdHlSZWFzb24sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
cGx1Z2luVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxT
dHJpbmcpCiB7Ci0gICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcygpLCBwbHVnaW5VUkxTdHJp
bmcpOwotICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MoKSwgcGx1Z2luc3BhZ2VBdHRyaWJ1
dGVVUkxTdHJpbmcpOwotICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MoKSwgZnJhbWVVUkxT
dHJpbmcpOwotICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MoKSwgcGFnZVVSTFN0cmluZyk7
CisgICAgTUVTU0FHRV9DSEVDS19VUkwobV9wcm9jZXNzLCBwbHVnaW5VUkxTdHJpbmcpOworICAg
IE1FU1NBR0VfQ0hFQ0tfVVJMKG1fcHJvY2VzcywgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJp
bmcpOworICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKG1fcHJvY2VzcywgZnJhbWVVUkxTdHJpbmcpOwor
ICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKG1fcHJvY2VzcywgcGFnZVVSTFN0cmluZyk7CiAKICAgICBT
dHJpbmcgbmV3TWltZVR5cGUgPSBtaW1lVHlwZTsKICAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdp
biA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wbHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2lu
KG5ld01pbWVUeXBlLCBVUkwoVVJMKCksIHBsdWdpblVSTFN0cmluZykpOwpAQCAtNTAwNSw3ICs1
MDA1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVu
KGNvbnN0IEludFJlY3QmIHZpZXdSZWN0LCBJbnRSZWMKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw6OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShmcmFtZUlEKTsKLSAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcy5nZXQoKSwgZnJhbWUp
OworICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CiAKICAgICAvLyBQZXIgwqcx
OCBVc2VyIFByb21wdHMgaW4gdGhlIFdlYkRyaXZlciBzcGVjLCAiVXNlciBwcm9tcHRzIHRoYXQg
YXJlIHNwYXduZWQgZnJvbSBiZWZvcmV1bmxvYWQKICAgICAvLyBldmVudCBoYW5kbGVycywgYXJl
IGRpc21pc3NlZCBpbXBsaWNpdGx5IHVwb24gbmF2aWdhdGlvbiBvciBjbG9zZSB3aW5kb3csIHJl
Z2FyZGxlc3Mgb2YgdGhlCkBAIC01MDUwLDcgKzUwNTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
ZnJhbQogICAgIH0KIAogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShmcmFtZUlEKTsKLSAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcy5nZXQoKSwgZnJhbWUp
OworICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CiAKICAgICBSZWY8QVBJOjpP
cGVuUGFuZWxQYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJz
OjpjcmVhdGUoc2V0dGluZ3MpOwogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjcmVhdGUodGhpcyk7CkBAIC01MDg3LDcgKzUw
ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJpbnRGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQog
ICAgIG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24gPSB0cnVlOwogCiAgICAgV2ViRnJh
bWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwotICAgIE1FU1NB
R0VfQ0hFQ0sobV9wcm9jZXNzLmdldCgpLCBmcmFtZSk7CisgICAgTUVTU0FHRV9DSEVDSyhtX3By
b2Nlc3MsIGZyYW1lKTsKIAogICAgIG1fdWlDbGllbnQtPnByaW50RnJhbWUoKnRoaXMsICpmcmFt
ZSk7CiAKQEAgLTUzNzYsMTAgKzUzNzYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3
YXJkQWRkSXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBpdGVtU3RhdGUpCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXImIGl0ZW1JRCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKQogewotICAgIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQobV9wcm9jZXNzLCBp
dGVtSUQsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIGJhY2tGb3J3YXJkR29Ub0l0ZW1T
aGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgaXRlbUlELCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBp
dGVtSUQsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRl
bUlELCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7
CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1fYmFja0ZvcndhcmRMaXN0LT5p
dGVtRm9ySUQoaXRlbUlEKTsKICAgICBpZiAoIWl0ZW0pCkBAIC01ODY2LDcgKzU4NjYsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBj
b25zdCBTdHJpbmcmIGNvbnRleHQsCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpsZWFybldvcmQoY29u
c3QgU3RyaW5nJiB3b3JkKQogewotICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLmdldCgpLCBt
X3BlbmRpbmdMZWFybk9ySWdub3JlV29yZE1lc3NhZ2VDb3VudCk7CisgICAgTUVTU0FHRV9DSEVD
SyhtX3Byb2Nlc3MsIG1fcGVuZGluZ0xlYXJuT3JJZ25vcmVXb3JkTWVzc2FnZUNvdW50KTsKICAg
ICAtLW1fcGVuZGluZ0xlYXJuT3JJZ25vcmVXb3JkTWVzc2FnZUNvdW50OwogCiAgICAgVGV4dENo
ZWNrZXI6OmxlYXJuV29yZChzcGVsbERvY3VtZW50VGFnKCksIHdvcmQpOwpAQCAtNTg3NCw3ICs1
ODc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxlYXJuV29yZChjb25zdCBTdHJpbmcmIHdvcmQp
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppZ25vcmVXb3JkKGNvbnN0IFN0cmluZyYgd29yZCkKIHsK
LSAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcy5nZXQoKSwgbV9wZW5kaW5nTGVhcm5Pcklnbm9y
ZVdvcmRNZXNzYWdlQ291bnQpOworICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBtX3BlbmRp
bmdMZWFybk9ySWdub3JlV29yZE1lc3NhZ2VDb3VudCk7CiAgICAgLS1tX3BlbmRpbmdMZWFybk9y
SWdub3JlV29yZE1lc3NhZ2VDb3VudDsKIAogICAgIFRleHRDaGVja2VyOjppZ25vcmVXb3JkKHNw
ZWxsRG9jdW1lbnRUYWcoKSwgd29yZCk7CkBAIC01OTc1LDkgKzU5NzUsOSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxl
ZCkKICAgICAgICAgTE9HKE1vdXNlSGFuZGxpbmcsICJXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVF
dmVudDogJXMgKHF1ZXVlIHNpemUgJXp1KSIsIHdlYk1vdXNlRXZlbnRUeXBlU3RyaW5nKHR5cGUp
LCBtX21vdXNlRXZlbnRRdWV1ZS5zaXplKCkpOwogCiAgICAgICAgIC8vIFJldGlyZSB0aGUgbGFz
dCBzZW50IGV2ZW50IG5vdyB0aGF0IFdlYlByb2Nlc3MgaXMgZG9uZSBoYW5kbGluZyBpdC4KLSAg
ICAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MuZ2V0KCksICFtX21vdXNlRXZlbnRRdWV1ZS5p
c0VtcHR5KCkpOworICAgICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgIW1fbW91c2VFdmVu
dFF1ZXVlLmlzRW1wdHkoKSk7CiAgICAgICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQgZXZlbnQgPSBt
X21vdXNlRXZlbnRRdWV1ZS50YWtlRmlyc3QoKTsKLSAgICAgICAgTUVTU0FHRV9DSEVDSyhtX3By
b2Nlc3MuZ2V0KCksIHR5cGUgPT0gZXZlbnQudHlwZSgpKTsKKyAgICAgICAgTUVTU0FHRV9DSEVD
SyhtX3Byb2Nlc3MsIHR5cGUgPT0gZXZlbnQudHlwZSgpKTsKIAogICAgICAgICBpZiAoIW1fbW91
c2VFdmVudFF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgTE9HKE1vdXNlSGFuZGxpbmcs
ICIgVUlQcm9jZXNzOiBoYW5kbGluZyBhIHF1ZXVlZCBtb3VzZSBldmVudCBmcm9tIGRpZFJlY2Vp
dmVFdmVudCIpOwpAQCAtNTk5Miw3ICs1OTkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJl
Y2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRsZWQpCiAgICAgfQogCiAg
ICAgY2FzZSBXZWJFdmVudDo6V2hlZWw6IHsKLSAgICAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nl
c3MuZ2V0KCksICFtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRzLmlzRW1wdHkoKSk7Cisg
ICAgICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCAhbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVl
bEV2ZW50cy5pc0VtcHR5KCkpOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8TmF0
aXZlV2ViV2hlZWxFdmVudD4+IG9sZGVzdENvYWxlc2NlZEV2ZW50ID0gbV9jdXJyZW50bHlQcm9j
ZXNzZWRXaGVlbEV2ZW50cy50YWtlRmlyc3QoKTsKIApAQCAtNjAxMywxMCArNjAxMywxMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJv
b2wgaGFuZGxlZCkKICAgICBjYXNlIFdlYkV2ZW50OjpDaGFyOiB7CiAgICAgICAgIExPRyhLZXlI
YW5kbGluZywgIldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50OiAlcyAocXVldWUgZW1wdHkg
JWQpIiwgd2ViS2V5Ym9hcmRFdmVudFR5cGVTdHJpbmcodHlwZSksIG1fa2V5RXZlbnRRdWV1ZS5p
c0VtcHR5KCkpOwogCi0gICAgICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLmdldCgpLCAhbV9r
ZXlFdmVudFF1ZXVlLmlzRW1wdHkoKSk7CisgICAgICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNz
LCAhbV9rZXlFdmVudFF1ZXVlLmlzRW1wdHkoKSk7CiAgICAgICAgIE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQgZXZlbnQgPSBtX2tleUV2ZW50UXVldWUudGFrZUZpcnN0KCk7CiAKLSAgICAgICAgTUVT
U0FHRV9DSEVDSyhtX3Byb2Nlc3MuZ2V0KCksIHR5cGUgPT0gZXZlbnQudHlwZSgpKTsKKyAgICAg
ICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIHR5cGUgPT0gZXZlbnQudHlwZSgpKTsKIAogICAg
ICAgICBib29sIGNhblByb2Nlc3NNb3JlS2V5RXZlbnRzID0gIW1fa2V5RXZlbnRRdWV1ZS5pc0Vt
cHR5KCk7CiAgICAgICAgIGlmIChjYW5Qcm9jZXNzTW9yZUtleUV2ZW50cykgewpAQCAtNjA0Mywx
MCArNjA0MywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90
IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxlZCkKICAgICBjYXNlIFdlYkV2ZW50OjpHZXN0dXJlU3Rh
cnQ6CiAgICAgY2FzZSBXZWJFdmVudDo6R2VzdHVyZUNoYW5nZToKICAgICBjYXNlIFdlYkV2ZW50
OjpHZXN0dXJlRW5kOiB7Ci0gICAgICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLmdldCgpLCAh
bV9nZXN0dXJlRXZlbnRRdWV1ZS5pc0VtcHR5KCkpOworICAgICAgICBNRVNTQUdFX0NIRUNLKG1f
cHJvY2VzcywgIW1fZ2VzdHVyZUV2ZW50UXVldWUuaXNFbXB0eSgpKTsKICAgICAgICAgTmF0aXZl
V2ViR2VzdHVyZUV2ZW50IGV2ZW50ID0gbV9nZXN0dXJlRXZlbnRRdWV1ZS50YWtlRmlyc3QoKTsK
IAotICAgICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcy5nZXQoKSwgdHlwZSA9PSBldmVudC50
eXBlKCkpOworICAgICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgdHlwZSA9PSBldmVudC50
eXBlKCkpOwogCiAgICAgICAgIGlmICghaGFuZGxlZCkKICAgICAgICAgICAgIHBhZ2VDbGllbnQo
KS5nZXN0dXJlRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGV2ZW50KTsKQEAgLTYwNjUsMTAg
KzYwNjUsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBv
cGFxdWVUeXBlLCBib29sIGhhbmRsZWQpCiAgICAgY2FzZSBXZWJFdmVudDo6VG91Y2hNb3ZlOgog
ICAgIGNhc2UgV2ViRXZlbnQ6OlRvdWNoRW5kOgogICAgIGNhc2UgV2ViRXZlbnQ6OlRvdWNoQ2Fu
Y2VsOiB7Ci0gICAgICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLmdldCgpLCAhbV90b3VjaEV2
ZW50UXVldWUuaXNFbXB0eSgpKTsKKyAgICAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsICFt
X3RvdWNoRXZlbnRRdWV1ZS5pc0VtcHR5KCkpOwogICAgICAgICBRdWV1ZWRUb3VjaEV2ZW50cyBx
dWV1ZWRFdmVudHMgPSBtX3RvdWNoRXZlbnRRdWV1ZS50YWtlRmlyc3QoKTsKIAotICAgICAgICBN
RVNTQUdFX0NIRUNLKG1fcHJvY2Vzcy5nZXQoKSwgdHlwZSA9PSBxdWV1ZWRFdmVudHMuZm9yd2Fy
ZGVkRXZlbnQudHlwZSgpKTsKKyAgICAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIHR5cGUg
PT0gcXVldWVkRXZlbnRzLmZvcndhcmRlZEV2ZW50LnR5cGUoKSk7CiAKICAgICAgICAgcGFnZUNs
aWVudCgpLmRvbmVXaXRoVG91Y2hFdmVudChxdWV1ZWRFdmVudHMuZm9yd2FyZGVkRXZlbnQsIGhh
bmRsZWQpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1ZXVlZEV2ZW50cy5kZWZl
cnJlZFRvdWNoRXZlbnRzLnNpemUoKTsgKytpKSB7CkBAIC02MTk2LDcgKzYxOTYsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmVkaXRpbmdSYW5nZUNhbGxiYWNr
KGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAg
ICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcy5nZXQoKSwgcmFuZ2UuaXNWYWxpZCgpKTsKKyAgICBN
RVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgcmFuZ2UuaXNWYWxpZCgpKTsKIAogICAgIGF1dG8gY2Fs
bGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPEVkaXRpbmdSYW5nZUNhbGxiYWNrPihjYWxsYmFja0lE
KTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC02Mjk3LDcgKzYyOTcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9nU2Nyb2xsaW5nRXZlbnQodWludDMyX3QgZXZlbnRUeXBlLCBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjdEZvckNoYXJhY3RlclJhbmdl
Q2FsbGJhY2soY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgRWRpdGluZ1JhbmdlJiBhY3R1YWxS
YW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9j
ZXNzLmdldCgpLCBhY3R1YWxSYW5nZS5pc1ZhbGlkKCkpOworICAgIE1FU1NBR0VfQ0hFQ0sobV9w
cm9jZXNzLCBhY3R1YWxSYW5nZS5pc1ZhbGlkKCkpOwogCiAgICAgYXV0byBjYWxsYmFjayA9IG1f
Y2FsbGJhY2tzLnRha2U8UmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2s+KGNhbGxiYWNrSUQp
OwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTYzMzAsNyArNjMzMCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpmb2N1c2VkRnJhbWVDaGFuZ2VkKHVpbnQ2NF90IGZyYW1lSUQpCiAgICAgfQogCiAg
ICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwot
ICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLmdldCgpLCBmcmFtZSk7CisgICAgTUVTU0FHRV9D
SEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKIAogICAgIG1fZm9jdXNlZEZyYW1lID0gZnJhbWU7CiB9
CkBAIC02MzQzLDcgKzYzNDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnJhbWVTZXRMYXJnZXN0
RnJhbWVDaGFuZ2VkKHVpbnQ2NF90IGZyYW1lSUQpCiAgICAgfQogCiAgICAgV2ViRnJhbWVQcm94
eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwotICAgIE1FU1NBR0VfQ0hF
Q0sobV9wcm9jZXNzLmdldCgpLCBmcmFtZSk7CisgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3Ms
IGZyYW1lKTsKIAogICAgIG1fZnJhbWVTZXRMYXJnZXN0RnJhbWUgPSBmcmFtZTsKIH0KQEAgLTY4
ODksNyArNjg4OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JCiAgICAgRXhjZWVkZWREYXRh
YmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkKiByZWNvcmQgPSByZWNvcmRzLm5leHQoKTsKICAgICB3
aGlsZSAocmVjb3JkKSB7CiAgICAgICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNz
LT53ZWJGcmFtZShyZWNvcmQtPmZyYW1lSUQpOwotICAgICAgICBNRVNTQUdFX0NIRUNLKG1fcHJv
Y2Vzcy5nZXQoKSwgZnJhbWUpOworICAgICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJh
bWUpOwogCiAgICAgICAgIGF1dG8gb3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihyZWNvcmQtPm9yaWdp
bklkZW50aWZpZXIpLT5zZWN1cml0eU9yaWdpbigpKTsKICAgICAgICAgbV91aUNsaWVudC0+ZXhj
ZWVkZWREYXRhYmFzZVF1b3RhKHRoaXMsIGZyYW1lLCBvcmlnaW4ucHRyKCksIHJlY29yZC0+ZGF0
YWJhc2VOYW1lLCByZWNvcmQtPmRpc3BsYXlOYW1lLCByZWNvcmQtPmN1cnJlbnRRdW90YSwgcmVj
b3JkLT5jdXJyZW50T3JpZ2luVXNhZ2UsIHJlY29yZC0+Y3VycmVudERhdGFiYXNlVXNhZ2UsIHJl
Y29yZC0+ZXhwZWN0ZWRVc2FnZSwgV1RGTW92ZShyZWNvcmQtPnJlcGx5KSk7CkBAIC02OTA2LDcg
KzY5MDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aQogdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBXZWJG
cmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7Ci0gICAgTUVT
U0FHRV9DSEVDSyhtX3Byb2Nlc3MuZ2V0KCksIGZyYW1lKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1f
cHJvY2VzcywgZnJhbWUpOwogCiAgICAgLy8gRklYTUU6IEdlb2xvY2F0aW9uIHNob3VsZCBwcm9i
YWJseSBiZSB1c2luZyB0b1N0cmluZygpIGFzIGl0cyBzdHJpbmcgcmVwcmVzZW50YXRpb24gaW5z
dGVhZCBvZiBkYXRhYmFzZUlkZW50aWZpZXIoKS4KICAgICBhdXRvIG9yaWdpbiA9IEFQSTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50
aWZpZXIob3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOwpAQCAtNjk0NSw3ICs2
OTQ1LDcgQEAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIFdlYlBhZ2VQ
cm94eTo6dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1
ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmICB1c2VyTWVk
aWFEb2N1bWVudE9yaWdpbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
dG9wTGV2ZWxEb2N1bWVudE9yaWdpbkRhdGEsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVx
dWVzdCYgcmVxdWVzdCkKIHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIE1FU1NBR0Vf
Q0hFQ0sobV9wcm9jZXNzLmdldCgpLCBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpKTsKKyAg
ICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKSk7
CiAKICAgICB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5yZXF1ZXN0VXNlck1l
ZGlhUGVybWlzc2lvbkZvckZyYW1lKHVzZXJNZWRpYUlELCBmcmFtZUlELCB1c2VyTWVkaWFEb2N1
bWVudE9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbkRh
dGEuc2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdCk7CiAjZWxzZQpAQCAtNjk2MSw3ICs2OTYxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2
NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdAogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwot
ICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLmdldCgpLCBmcmFtZSk7CisgICAgTUVTU0FHRV9D
SEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKIAogICAgIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcigpLmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVzZXJNZWRpYUlELCBmcmFt
ZUlELCB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSwgdG9wTGV2
ZWxEb2N1bWVudE9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CiAjZWxzZQpAQCAtODE3OCwx
MyArODE3OCwxMyBAQCBXZWJVUkxTY2hlbWVIYW5kbGVyKiBXZWJQYWdlUHJveHk6OnVybFNjaGVt
ZUhhbmRsZXJGb3JTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c3RhcnRVUkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKIHsKLSAgICBzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQobV9wcm9jZXNzLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpKTsKKyAgICBzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQobV9wcm9jZXNzLmNvcHlS
ZWYoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzdGFy
dFVSTFNjaGVtZVRhc2tTaGFyZWQoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBVUkxTY2hlbWVU
YXNrUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRVUkxT
Y2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgVVJMU2NoZW1l
VGFza1BhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Vy
bFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmZpbmQocGFyYW1ldGVycy5oYW5kbGVySWRlbnRp
Zmllcik7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MuZ2V0KCksIGl0ZXJhdG9yICE9IG1f
dXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIuZW5kKCkpOworICAgIE1FU1NBR0VfQ0hFQ0so
cHJvY2VzcywgaXRlcmF0b3IgIT0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5lbmQo
KSk7CiAKICAgICBpdGVyYXRvci0+dmFsdWUtPnN0YXJ0VGFzaygqdGhpcywgcHJvY2VzcywgcGFy
YW1ldGVycy50YXNrSWRlbnRpZmllciwgV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpLCBudWxs
cHRyKTsKIH0KQEAgLTgxOTIsNyArODE5Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdGFydFVS
TFNjaGVtZVRhc2tTaGFyZWQoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBVUkxTY2hlbWVUCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c3RvcFVSTFNjaGVtZVRhc2sodWludDY0X3QgaGFuZGxlcklkZW50
aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyKQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBt
X3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmZpbmQoaGFuZGxlcklkZW50aWZpZXIpOwot
ICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLmdldCgpLCBpdGVyYXRvciAhPSBtX3VybFNjaGVt
ZUhhbmRsZXJzQnlJZGVudGlmaWVyLmVuZCgpKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vz
cywgaXRlcmF0b3IgIT0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5lbmQoKSk7CiAK
ICAgICBpdGVyYXRvci0+dmFsdWUtPnN0b3BUYXNrKCp0aGlzLCB0YXNrSWRlbnRpZmllcik7CiB9
CkBAIC04MjAwLDcgKzgyMDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcFVSTFNjaGVtZVRh
c2sodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZAogdm9pZCBXZWJQ
YWdlUHJveHk6OmxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2FkU3luY2hyb25v
dXNVUkxTY2hlbWVUYXNrOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBhdXRvIGl0ZXJh
dG9yID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5maW5kKHBhcmFtZXRlcnMuaGFu
ZGxlcklkZW50aWZpZXIpOwotICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLmdldCgpLCBpdGVy
YXRvciAhPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmVuZCgpKTsKKyAgICBNRVNT
QUdFX0NIRUNLKG1fcHJvY2VzcywgaXRlcmF0b3IgIT0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRl
bnRpZmllci5lbmQoKSk7CiAKICAgICBpdGVyYXRvci0+dmFsdWUtPnN0YXJ0VGFzaygqdGhpcywg
bV9wcm9jZXNzLCBwYXJhbWV0ZXJzLnRhc2tJZGVudGlmaWVyLCBXVEZNb3ZlKHBhcmFtZXRlcnMu
cmVxdWVzdCksIFdURk1vdmUocmVwbHkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggZDFkODkwNDBkNDZhZmRkYmI0YzYxZTBmYzdkYWRkMjMyZDYyODY5MS4u
MjI4NmIzNWM5ZmI5Nzk0YTllM2Q3ZDQzN2I0OWMzODg2MmRmZmZlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE0MjMsMTggKzE0MjMsMTggQEAgcHVibGljOgog
ICAgIHZvaWQgY29tbWl0UHJvdmlzaW9uYWxQYWdlKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3Rv
bUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxX
ZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29u
c3QgVXNlckRhdGEmKTsKIAogICAgIC8vIExvZ2ljIHNoYXJlZCBiZXR3ZWVuIHRoZSBXZWJQYWdl
UHJveHkgYW5kIHRoZSBQcm92aXNpb25hbFBhZ2VQcm94eS4KLSAgICB2b2lkIGRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5yZWFjaGFibGVVUkws
IGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWVTaGFyZWQoV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoV2ViUHJvY2Vzc1Byb3h5
JiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRpZFBlcmZvcm1DbGll
bnRSZWRpcmVjdFNoYXJlZChXZWJQcm9jZXNzUHJveHkmLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgdWludDY0X3QgZnJh
bWVJRCk7Ci0gICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChXZWJQ
cm9jZXNzUHJveHkmLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgdWludDY0X3QgZnJh
bWVJRCk7Ci0gICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKFdl
YlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
VVJMJiYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hh
cmVkKFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwg
dWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIHN0YXJ0VVJM
U2NoZW1lVGFza1NoYXJlZChXZWJQcm9jZXNzUHJveHkmLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVy
cyYmKTsKLSAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoV2ViUHJvY2Vzc1By
b3h5JiwgQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBi
YXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9w
dCk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFdlYlByb2Nlc3NQ
cm94eSYsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJD
b3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEs
IFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9J
dGVtU2hhcmVkKFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXImLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5y
ZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkws
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZv
aWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVXNlckRhdGEmKTsK
KyAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblVSTFN0cmluZywgdWludDY0X3QgZnJhbWVJRCk7CisgICAgdm9pZCBkaWROYXZpZ2F0
ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBX
ZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgdWludDY0X3QgZnJhbWVJRCk7CisgICAgdm9pZCBkaWRD
aGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOworICAgIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBV
c2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIHN0YXJ0VVJMU2No
ZW1lVGFza1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBVUkxTY2hlbWVUYXNrUGFyYW1l
dGVycyYmKTsKKyAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdU
Rjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBi
YWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdl
YkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLy8gSW1wbGVtZW50ZWQg
aW4gZ2VuZXJhdGVkIFdlYlBhZ2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTE1MTYsNyAr
MTUxNiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCk7CiAKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBjb25zdCBVc2VyRGF0YSYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CisgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYs
IEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBSZWY8
UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVz
dEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25z
dCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFt
ZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRh
JiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYm
KTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmln
aW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRh
dGEmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>