<?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>224995</bug_id>
          
          <creation_ts>2021-04-23 14:15:12 -0700</creation_ts>
          <short_desc>numCalleeLocals, numParameters, and numVars should be unsigned</short_desc>
          <delta_ts>2021-04-26 13:21:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1753720</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-04-23 14:15:12 -0700</bug_when>
    <thetext>numCalleeLocals and numVars should be unsigned</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753874</commentid>
    <comment_count>1</comment_count>
      <attachid>426986</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-04-24 12:14:54 -0700</bug_when>
    <thetext>Created attachment 426986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754180</commentid>
    <comment_count>2</comment_count>
      <attachid>427042</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-04-26 07:33:21 -0700</bug_when>
    <thetext>Created attachment 427042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754265</commentid>
    <comment_count>3</comment_count>
      <attachid>427064</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-04-26 11:07:53 -0700</bug_when>
    <thetext>Created attachment 427064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754272</commentid>
    <comment_count>4</comment_count>
      <attachid>427064</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-26 11:21:32 -0700</bug_when>
    <thetext>Comment on attachment 427064
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754322</commentid>
    <comment_count>5</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-04-26 12:53:28 -0700</bug_when>
    <thetext>Crashes on EWS seem unlikely to be related. I&apos;m gonna CQ+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754328</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-26 13:20:23 -0700</bug_when>
    <thetext>Committed r276609 (237038@main): &lt;https://commits.webkit.org/237038@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427064.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754332</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-26 13:21:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/77172859&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426986</attachid>
            <date>2021-04-24 12:14:54 -0700</date>
            <delta_ts>2021-04-26 07:33:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224995-20210424151452.patch</filename>
            <type>text/plain</type>
            <size>37199</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTMzMGQyMzZhMjljN2Y1NzQ0NWIyMjU1NGE5ZjUwYjY5ODNhODU5Li5iOGFmMGEzOGVlZTFkMjdm
NjVkNmIwNTRlNTU0N2FlMDI2MWE0ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNC0yNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBudW1DYWxsZWVMb2NhbHMsIG51bVBhcmFtZXRlcnMsIGFuZCBudW1W
YXJzIHNob3VsZCBiZSB1bnNpZ25lZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWxsIG9mIHRoZSB2YXJpb3VzIENvZGVCbG9jayBjbGFzc2VzIGN1cnJl
bnRseSBoYXZlIHRoZQorICAgICAgICBudW1DYWxsZWVMb2NhbHMgYW5kIG51bVZhcnMgbWFya2Vk
IGFzIGludHMuIEkgYmVsaWV2ZSB0aGlzIGlzIGp1c3QKKyAgICAgICAgYSBoaXN0b3JpY2FsIGFy
dGlmYWN0IG9yIGJlY2F1c2UgVmlydHVhbFJlZ2lzdGVyJ3Mgb2Zmc2V0IGlzIGFuCisgICAgICAg
IGludCB0byBtYWtlIGhhbmRsaW5nIGNvbnN0YW50cyBlYXNpZXIuIFJlZ2FyZGxlc3MsIGl0J3Mg
YSBiaXQKKyAgICAgICAgc3RyYW5nZSB0byBub3QgaGFuZGxlIHRoZSBzaWduIGNvbnZlcnNpb24g
YXQgdGhlIHBvaW50IG9mCisgICAgICAgIGNvbXBhcmlzb24gYmV0d2VlbiBhIFZpcnR1YWxSZWdp
c3RlciBvZmZzZXQgYW5kIHRoZSBsb2NhbC92YXIKKyAgICAgICAgY291bnQuIFRoaXMgZG9lc24n
dCBjb21wbGV0ZWx5IGZpeCBldmVyeSBwbGFjZSB3ZSB1c2UgaW50cyBmb3IKKyAgICAgICAgdGhl
c2UgdmFsdWVzIGJ1dCBzdGFydHMgb24gdGhlIHJpZ2h0IHRyYWNrLiBMYXN0bHksIEkgYWxzbyBh
ZGRlZAorICAgICAgICBzb21lIENoZWNrPHVuc2lnbmVkPnMgdG8gdGhlIHdhc20gcGFyc2VyIGZv
ciBzYW5pdHkgY2hlY2tpbmcuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldE51bVBhcmFtZXRlcnMpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVJbmRl
eFNsb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6Om51bVBhcmFtZXRlcnMgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
Om51bWJlck9mQXJndW1lbnRzVG9Ta2lwIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpudW1DYWxsZWVMb2NhbHMgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bVZh
cnMgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bVRtcHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZHJlc3NPZk51bVBhcmFtZXRlcnMpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmlzVGVtcG9yYXJ5UmVnaXN0ZXIpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpu
dW1DYWxsZWVMb2NhbHMgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
bnVtVmFycyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6Om51bUNh
bGxlZUxvY2FscyBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yOjpudW1WYXJzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3I6OnNldE51bUNhbGxlZUxvY2Fscyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yOjpzZXROdW1WYXJzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3I6OnNldE51bVBhcmFtZXRlcnMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaEZ1bmN0
aW9uTmFtZVNjb3BlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JC
YXNlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRz
Pjo6bmV3UmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJlY3Vyc2l2ZVRhaWxDYWxs
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICog
ZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVj
a0FyZ3VtZW50VHlwZXMpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dlcik6CisgICAgICAgICogZnRs
L0ZUTE9TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpwcmVwYXJlT1NSRW50cnkpOgor
ICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZUNsb3N1cmUuaDoKKyAgICAgICAgKiBpbnRl
cnByZXRlci9Qcm90b0NhbGxGcmFtZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxs
RnJhbWU6OmluaXQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmNvbXBpbGVXaXRob3V0TGlua2luZyk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpudW1iZXJPZlN0YWNrUGFkZGlu
Z1Nsb3RzKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpudW1iZXJPZlN0YWNrUGFk
ZGluZ1Nsb3RzV2l0aEV4dHJhU2xvdHMpOgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrOjpudW1WYXJz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2s6Om51bUNhbGxl
ZUxvY2FscyBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrOjpz
ZXROdW1WYXJzKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2s6OnNldE51
bUNhbGxlZUxvY2Fscyk6CisgICAgICAgICogd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6cHVzaCk6CisgICAgICAgIChKU0M6
Oldhc206OkxMSW50R2VuZXJhdG9yOjpnZXREcm9wS2VlcENvdW50KToKKyAgICAgICAgKEpTQzo6
V2FzbTo6TExJbnRHZW5lcmF0b3I6OndhbGtFeHByZXNzaW9uU3RhY2spOgorICAgICAgICAoSlND
OjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgIChKU0M6
Oldhc206OkxMSW50R2VuZXJhdG9yOjptYXRlcmlhbGl6ZUNvbnN0YW50c0FuZExvY2Fscyk6Cisg
ICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjpzcGxpdFN0YWNrKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6TExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcik6CisgICAgICAgIChK
U0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRMb29wKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
TExJbnRHZW5lcmF0b3I6OmFkZFRvcExldmVsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRH
ZW5lcmF0b3I6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6
OmFkZElmKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZEVsc2VUb1Vu
cmVhY2hhYmxlKToKKwogMjAyMS0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzY0ODYuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGRlOWNiNWUx
YzM5MjZmYTU4Njk3MGMzOWMxZDUxNGY4NjNkNmU1NGMuLmZjNWFmYWZjNDMxZDYzMDYzOTIzMzcz
NGFhNzc5YWRlNDhiYTkwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnNldEFsdGVy
bmF0aXZlKFZNJiB2bSwgQ29kZUJsb2NrKiBhbHRlcm5hdGl2ZSkKICAgICBtX2FsdGVybmF0aXZl
LnNldCh2bSwgdGhpcywgYWx0ZXJuYXRpdmUpOwogfQogCi12b2lkIENvZGVCbG9jazo6c2V0TnVt
UGFyYW1ldGVycyhpbnQgbmV3VmFsdWUpCit2b2lkIENvZGVCbG9jazo6c2V0TnVtUGFyYW1ldGVy
cyh1bnNpZ25lZCBuZXdWYWx1ZSkKIHsKICAgICBtX251bVBhcmFtZXRlcnMgPSBuZXdWYWx1ZTsK
IApAQCAtMjAxNSw3ICsyMDE1LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5l
c3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVJbmRleFNsb3coY29uc3QgT3BDYXRjaCYKICAgICAgICAg
bGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsaXZlTG9jYWwpKTsK
ICAgICB9KTsKIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyArK2kp
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhcmFtZXRlcnMoKTsgKytpKQogICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVk
aW5nVGhpcyhpKSk7CiAKICAgICBhdXRvKiBwcm9maWxlcyA9IFZhbHVlUHJvZmlsZUFuZFZpcnR1
YWxSZWdpc3RlckJ1ZmZlcjo6Y3JlYXRlKGxpdmVPcGVyYW5kcy5zaXplKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDE2ZThkNTFlMzI3YzYyNzQ3
NDhjMjUwZGFmNjc0NmFhN2ViNmQ3Y2YuLjU3NDhkMTM5ZDljYjU1ODdhNzFlZGQxMDVjMTU4NTJh
NmIyNjU0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
QEAgLTE1NiwxNyArMTU2LDE3IEBAIHB1YmxpYzoKIAogICAgIE1ldGFkYXRhVGFibGUqIG1ldGFk
YXRhVGFibGUoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmdldCgpOyB9CiAKLSAgICBpbnQg
bnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyYW1ldGVyczsgfQotICAgIHZv
aWQgc2V0TnVtUGFyYW1ldGVycyhpbnQgbmV3VmFsdWUpOworICAgIHVuc2lnbmVkIG51bVBhcmFt
ZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX251bVBhcmFtZXRlcnM7IH0KKyAgICB2b2lkIHNldE51
bVBhcmFtZXRlcnModW5zaWduZWQgbmV3VmFsdWUpOwogCi0gICAgaW50IG51bWJlck9mQXJndW1l
bnRzVG9Ta2lwKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgfQor
ICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCkgY29uc3QgeyByZXR1cm4gbV9u
dW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgfQogCi0gICAgaW50IG51bUNhbGxlZUxvY2FscygpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxzOyB9CisgICAgdW5zaWduZWQgbnVtQ2FsbGVl
TG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsZWVMb2NhbHM7IH0KIAotICAgIGludCBu
dW1WYXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1WYXJzOyB9Ci0gICAgaW50IG51bVRtcHMoKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aGFzQ2hlY2twb2ludHMoKSAqIG1heE51bUNo
ZWNrcG9pbnRUbXBzOyB9CisgICAgdW5zaWduZWQgbnVtVmFycygpIGNvbnN0IHsgcmV0dXJuIG1f
bnVtVmFyczsgfQorICAgIHVuc2lnbmVkIG51bVRtcHMoKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkQ29kZS0+aGFzQ2hlY2twb2ludHMoKSAqIG1heE51bUNoZWNrcG9pbnRUbXBzOyB9CiAKLSAg
ICBpbnQqIGFkZHJlc3NPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiAmbV9udW1QYXJhbWV0ZXJz
OyB9CisgICAgdW5zaWduZWQqIGFkZHJlc3NPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiAmbV9u
dW1QYXJhbWV0ZXJzOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk51bVBhcmFtZXRl
cnMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX251bVBhcmFtZXRlcnMp
OyB9CiAKICAgICBDb2RlQmxvY2sqIGFsdGVybmF0aXZlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q29kZUJsb2NrKj4obV9hbHRlcm5hdGl2ZS5nZXQoKSk7IH0KQEAgLTI0Myw3ICsyNDMs
NyBAQCBwdWJsaWM6CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNUZW1wb3JhcnlSZWdpc3Rl
cihWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlZy5vZmZzZXQo
KSA+PSBtX251bVZhcnM7CisgICAgICAgIHJldHVybiByZWcub2Zmc2V0KCkgPj0gc3RhdGljX2Nh
c3Q8aW50PihtX251bVZhcnMpOwogICAgIH0KIAogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9y
Qnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4LCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhh
bmRsZXI6OkFueUhhbmRsZXIpOwpAQCAtOTg5LDEwICs5ODksMTAgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcigpOwog
ICAgIHZvaWQgZW5zdXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZUluZGV4U2xv
dyhjb25zdCBPcENhdGNoJiwgQnl0ZWNvZGVJbmRleCk7CiAKLSAgICBpbnQgbV9udW1DYWxsZWVM
b2NhbHM7Ci0gICAgaW50IG1fbnVtVmFyczsKLSAgICBpbnQgbV9udW1QYXJhbWV0ZXJzOwotICAg
IGludCBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwIHsgMCB9OworICAgIHVuc2lnbmVkIG1fbnVt
Q2FsbGVlTG9jYWxzOworICAgIHVuc2lnbmVkIG1fbnVtVmFyczsKKyAgICB1bnNpZ25lZCBtX251
bVBhcmFtZXRlcnM7CisgICAgdW5zaWduZWQgbV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCB7IDAg
fTsKICAgICB1bnNpZ25lZCBtX251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIHsgMCB9
OwogICAgIHVuaW9uIHsKICAgICAgICAgdW5zaWduZWQgbV9kZWJ1Z2dlclJlcXVlc3RzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApp
bmRleCBiNDIxMDQ2N2NlMmQ3Zjk5ZmUzMmU1OGEzMDc0OTMyMzA1NDY4NTcxLi4zMTZlYmNhODQy
ZTNjOWUyN2M1ZGY5YzI4MGU1ODdhODQyY2QzZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMjA5LDggKzIwOSw4IEBA
IHB1YmxpYzoKIAogICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBj
b25zdDsKIAotICAgIGludCBudW1DYWxsZWVMb2NhbHMoKSBjb25zdCB7IHJldHVybiBtX251bUNh
bGxlZUxvY2FsczsgfQotICAgIGludCBudW1WYXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1WYXJz
OyB9CisgICAgdW5zaWduZWQgbnVtQ2FsbGVlTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1D
YWxsZWVMb2NhbHM7IH0KKyAgICB1bnNpZ25lZCBudW1WYXJzKCkgY29uc3QgeyByZXR1cm4gbV9u
dW1WYXJzOyB9CiAKICAgICAvLyBKdW1wIFRhYmxlcwogCkBAIC0zOTYsOSArMzk2LDkgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2Vu
ZENvbHVtbiB7IFVJTlRfTUFYIH07CiAKLSAgICBpbnQgbV9udW1WYXJzIHsgMCB9OwotICAgIGlu
dCBtX251bUNhbGxlZUxvY2FscyB7IDAgfTsKLSAgICBpbnQgbV9udW1QYXJhbWV0ZXJzIHsgMCB9
OworICAgIHVuc2lnbmVkIG1fbnVtVmFycyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX251bUNhbGxl
ZUxvY2FscyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX251bVBhcmFtZXRlcnMgeyAwIH07CiAKICAg
ICBQYWNrZWRSZWZQdHI8U3RyaW5nSW1wbD4gbV9zb3VyY2VVUkxEaXJlY3RpdmU7CiAgICAgUGFj
a2VkUmVmUHRyPFN0cmluZ0ltcGw+IG1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yLmgKaW5kZXggNDlhYmJhYTFjNzNiNjUyNTBhYzVmZGU5NTIyMzE4MTA4OGM2
NTZkNy4uY2UzMzBkNmEyNTljYWViMDBmZDc0NjM2YTFkNTkwNGQ0NGVhMDUyOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yLmgKQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogICAgIEV2YWxDb250ZXh0
VHlwZSBldmFsQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+ZXZhbENv
bnRleHRUeXBlKCk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpOyB9CiAgICAgYm9v
bCBpc0NsYXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NsYXNzQ29u
dGV4dCgpOyB9Ci0gICAgaW50IG51bUNhbGxlZUxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsgfQotICAgIGludCBudW1WYXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPm1fbnVtVmFyczsgfQorICAgIHVuc2lnbmVkIG51bUNhbGxlZUxv
Y2FscygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsgfQor
ICAgIHVuc2lnbmVkIG51bVZhcnMoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+bV9udW1W
YXJzOyB9CiAgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7IH0KICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc1JlZ2lz
dGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpOyB9CiAgICAg
VmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9j
ay0+c2NvcGVSZWdpc3RlcigpOyB9CkBAIC03MSwxMSArNzEsMTEgQEAgcHVibGljOgogICAgIC8v
IFVwZGF0aW5nIFVubGlua2VkQ29kZUJsb2NrLgogICAgIHZvaWQgc2V0SGFzQ2hlY2twb2ludHMo
KSB7IG1fY29kZUJsb2NrLT5zZXRIYXNDaGVja3BvaW50cygpOyB9CiAgICAgdm9pZCBzZXRIYXNU
YWlsQ2FsbHMoKSB7IG1fY29kZUJsb2NrLT5zZXRIYXNUYWlsQ2FsbHMoKTsgfQotICAgIHZvaWQg
c2V0TnVtQ2FsbGVlTG9jYWxzKGludCBudW1DYWxsZWVMb2NhbHMpIHsgbV9jb2RlQmxvY2stPm1f
bnVtQ2FsbGVlTG9jYWxzID0gbnVtQ2FsbGVlTG9jYWxzOyB9Ci0gICAgdm9pZCBzZXROdW1WYXJz
KGludCBudW1WYXJzKSB7IG1fY29kZUJsb2NrLT5tX251bVZhcnMgPSBudW1WYXJzOyB9CisgICAg
dm9pZCBzZXROdW1DYWxsZWVMb2NhbHModW5zaWduZWQgbnVtQ2FsbGVlTG9jYWxzKSB7IG1fY29k
ZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscyA9IG51bUNhbGxlZUxvY2FsczsgfQorICAgIHZvaWQg
c2V0TnVtVmFycyh1bnNpZ25lZCBudW1WYXJzKSB7IG1fY29kZUJsb2NrLT5tX251bVZhcnMgPSBu
dW1WYXJzOyB9CiAgICAgdm9pZCBzZXRUaGlzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHRoaXNS
ZWdpc3RlcikgeyBtX2NvZGVCbG9jay0+c2V0VGhpc1JlZ2lzdGVyKHRoaXNSZWdpc3Rlcik7IH0K
ICAgICB2b2lkIHNldFNjb3BlUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHRoaXNSZWdpc3Rlcikg
eyBtX2NvZGVCbG9jay0+c2V0U2NvcGVSZWdpc3Rlcih0aGlzUmVnaXN0ZXIpOyB9Ci0gICAgdm9p
ZCBzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1ZSkgeyBtX2NvZGVCbG9jay0+c2V0TnVtUGFy
YW1ldGVycyhuZXdWYWx1ZSk7IH0KKyAgICB2b2lkIHNldE51bVBhcmFtZXRlcnModW5zaWduZWQg
bmV3VmFsdWUpIHsgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMobmV3VmFsdWUpOyB9CiAK
ICAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGUmIG1ldGFkYXRhKCkgeyByZXR1cm4gbV9jb2RlQmxv
Y2stPm1ldGFkYXRhKCk7IH0KICAgICB2b2lkIGFkZEV4cHJlc3Npb25JbmZvKHVuc2lnbmVkIGlu
c3RydWN0aW9uT2Zmc2V0LCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNl
dCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXgg
NDI2MDkzZjExNzY4MGI1MTdkN2NiODY0MTE3YzM0NjAwMDRmYjMzNC4uZjliMGZiZjNjZWMyYWJi
MDAxMzQ4ZjYwNGU5MTBkYTQ0OTFmMjQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI4Miw3ICsy
ODIsNyBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIGlm
IChtX2lzQXN5bmMpCiAgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oKnRoaXMsIG1f
Y29kZUJsb2NrLmdldCgpLCBtX3dyaXRlciwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdl
dCgpLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CiAKLSAgICBSRUxFQVNFX0FT
U0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxvY2stPm51bUNhbGxlZUxvY2Fscygp
KSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKG1fY29kZUJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKSA8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkpOwogICAgIG1fY29k
ZUJsb2NrLT5maW5hbGl6ZShtX3dyaXRlci5maW5hbGl6ZSgpKTsKICAgICBpZiAobV9leHByZXNz
aW9uVG9vRGVlcCkKICAgICAgICAgcmV0dXJuIFBhcnNlckVycm9yKFBhcnNlckVycm9yOjpPdXRP
Zk1lbW9yeSk7CkBAIC0zOTg3LDcgKzM5ODcsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZQog
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2V0SXNDb25zdCgpOyAvLyBUaGUgZnVuY3Rp
b24gbmFtZSBzY29wZSBuYW1lIGFjdHMgbGlrZSBhIGNvbnN0IHZhcmlhYmxlLgogICAgIHVuc2ln
bmVkIG51bVZhcnMgPSBtX2NvZGVCbG9jay0+bnVtVmFycygpOwogICAgIHB1c2hMZXhpY2FsU2Nv
cGVJbnRlcm5hbChuYW1lU2NvcGVFbnZpcm9ubWVudCwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9w
dGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBURFpSZXF1aXJl
bWVudDo6Tm90VW5kZXJURFosIFNjb3BlVHlwZTo6RnVuY3Rpb25OYW1lU2NvcGUsIFNjb3BlUmVn
aXN0ZXJUeXBlOjpWYXIpOwotICAgIEFTU0VSVF9VTlVTRUQobnVtVmFycywgbV9jb2RlQmxvY2st
Pm51bVZhcnMoKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KG51bVZhcnMgKyAxKSk7IC8vIFNob3VsZCBo
YXZlIG9ubHkgY3JlYXRlZCBvbmUgbmV3ICJ2YXIiIGZvciB0aGUgZnVuY3Rpb24gbmFtZSBzY29w
ZS4KKyAgICBBU1NFUlRfVU5VU0VEKG51bVZhcnMsIG1fY29kZUJsb2NrLT5udW1WYXJzKCkgPT0g
bnVtVmFycyArIDEpOyAvLyBTaG91bGQgaGF2ZSBvbmx5IGNyZWF0ZWQgb25lIG5ldyAidmFyIiBm
b3IgdGhlIGZ1bmN0aW9uIG5hbWUgc2NvcGUuCiAgICAgYm9vbCBzaG91bGRUcmVhdEFzTGV4aWNh
bFZhcmlhYmxlID0gZWNtYU1vZGUoKS5pc1N0cmljdCgpOwogICAgIFZhcmlhYmxlIGZ1bmN0aW9u
VmFyID0gdmFyaWFibGVGb3JMb2NhbEVudHJ5KHByb3BlcnR5LCBtX2xleGljYWxTY29wZVN0YWNr
Lmxhc3QoKS5tX3N5bWJvbFRhYmxlLT5nZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBwcm9wZXJ0eS5p
bXBsKCkpLCBtX2xleGljYWxTY29wZVN0YWNrLmxhc3QoKS5tX3N5bWJvbFRhYmxlQ29uc3RhbnRJ
bmRleCwgc2hvdWxkVHJlYXRBc0xleGljYWxWYXJpYWJsZSk7CiAgICAgZW1pdFB1dFRvU2NvcGUo
bV9sZXhpY2FsU2NvcGVTdGFjay5sYXN0KCkubV9zY29wZSwgZnVuY3Rpb25WYXIsIGNhbGxlZSwg
VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3JCYXNlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgKaW5kZXggMWJkOTI0ZmNiMDAxODc4NGE2
Zjg1OGJlZjFiYjNlZmU2YzhmYjAwMS4uZWJmMGE4ZGMzMzQzODUxMmU2ZTcyOGM5ZGVlMTliODI2
ZTBjNzA2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgKQEAgLTE2MSw5ICsx
NjEsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzPgogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3JCYXNlPFRyYWl0cz46Om5ld1JlZ2lzdGVyKCkKIHsKICAgICBtX2NhbGxlZUxvY2Fs
cy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jYWxsZWVMb2NhbHMuc2l6ZSgpKSk7
Ci0gICAgaW50IG51bUNhbGxlZUxvY2FscyA9IHN0ZDo6bWF4PGludD4obV9jb2RlQmxvY2stPm51
bUNhbGxlZUxvY2FscygpLCBtX2NhbGxlZUxvY2Fscy5zaXplKCkpOworICAgIHVpbnQ2NF90IG51
bUNhbGxlZUxvY2FscyA9IHN0ZDo6bWF4PHVpbnQ2NF90PihtX2NvZGVCbG9jay0+bnVtQ2FsbGVl
TG9jYWxzKCksIG1fY2FsbGVlTG9jYWxzLnNpemUoKSk7CiAgICAgbnVtQ2FsbGVlTG9jYWxzID0g
V1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG51bUNh
bGxlZUxvY2Fscyk7CiAgICAgbV9jb2RlQmxvY2stPnNldE51bUNhbGxlZUxvY2FscyhudW1DYWxs
ZWVMb2NhbHMpOworICAgIFJFTEVBU0VfQVNTRVJUKG51bUNhbGxlZUxvY2FscyA9PSBtX2NvZGVC
bG9jay0+bnVtQ2FsbGVlTG9jYWxzKCkpOwogICAgIHJldHVybiAmbV9jYWxsZWVMb2NhbHMubGFz
dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCmluZGV4IDQwOGRjMDhjMTQzMDgzZjgxODQ5MjdiMmE4ZTU5NTJkN2FiMDhkZmEuLmJh
ZWFjNmNiNzA1YzBkOWU0MWQ0Zjg5MjE2N2FmOWMzMmEzZmMyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xNDk0LDcgKzE0OTQs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQgYwogCiAgICAgICAgICAgICAvLyBTb21lIGNvZGUg
bWF5IHN0YXRpY2FsbHkgdXNlIHRoZSBhcmd1bWVudCBjb3VudCBmcm9tIHRoZSBJbmxpbmVDYWxs
RnJhbWUsIHNvIGl0IHdvdWxkIGJlIGludmFsaWQgdG8gbG9vcCBiYWNrIGlmIGl0IGRvZXMgbm90
IG1hdGNoLgogICAgICAgICAgICAgLy8gV2UgImNvbnRpbnVlIiBpbnN0ZWFkIG9mIHJldHVybmlu
ZyBmYWxzZSBpbiBjYXNlIGFub3RoZXIgc3RhY2sgZW50cnkgZnVydGhlciBvbiB0aGUgc3RhY2sg
aGFzIHRoZSByaWdodCBudW1iZXIgb2YgYXJndW1lbnRzLgotICAgICAgICAgICAgaWYgKGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IHN0YXRpY19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpCisgICAgICAgICAgICBpZiAoYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgIT0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIC8vIElmIHRoZSB0YXJnZXQgSW5s
aW5lQ2FsbEZyYW1lIGlzIFZhcmFyZ3MsIHdlIGRvIG5vdCBrbm93IGhvdyBtYW55IGFyZ3VtZW50
cyBhcmUgYWN0dWFsbHkgZmlsbGVkIGJ5IExvYWRWYXJhcmdzLiBWYXJhcmdzIElubGluZUNhbGxG
cmFtZSdzCiAgICAgICAgICAgICAvLyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyBpcyBtYXhp
bXVtIG51bWJlciBvZiBwb3RlbnRpYWxseSBmaWxsZWQgYXJndW1lbnRzIGJ5IHhrTG9hZFZhcmFy
Z3MuIFdlICJjb250aW51ZSIgdG8gdGhlIHVwcGVyIGZyYW1lIHdoaWNoIG1heSBiZQpAQCAtMTUw
NCw3ICsxNTA0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUmVjdXJzaXZlVGFpbENh
bGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIENhbGxWYXJpYW50IGMKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIC8vIFdlIGFyZSBpbiB0aGUgbWFjaGluZSBjb2RlIGVudHJ5IChpLmUuIHRo
ZSBvcmlnaW5hbCBjYWxsZXIpLgogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBtb3JlIGFyZ3Vt
ZW50cyB0aGFuIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyB0byB0aGUgZnVuY3Rpb24sIGl0IGlz
IG5vdCBjbGVhciB3aGVyZSB3ZSBjb3VsZCBwdXQgdGhlbSBvbiB0aGUgc3RhY2suCi0gICAgICAg
ICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPiBtX2NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpKQorICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykgPiBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC0xNTMwLDggKzE1MzAs
OCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQgYwogICAgICAgICAvLyBXZSBtdXN0IHNldCB0aGUg
YXJndW1lbnRzIHRvIHRoZSByaWdodCB2YWx1ZXMKICAgICAgICAgaWYgKCFzdGFja0VudHJ5LT5t
X2lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIGFkZFRvR3JhcGgoU2V0QXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIE9wSW5mbyhhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotICAg
ICAgICBpbnQgYXJnSW5kZXggPSAwOwotICAgICAgICBmb3IgKDsgYXJnSW5kZXggPCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpczsgKythcmdJbmRleCkgeworICAgICAgICB1bnNpZ25lZCBhcmdJ
bmRleCA9IDA7CisgICAgICAgIGZvciAoOyBhcmdJbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7ICsrYXJnSW5kZXgpIHsKICAgICAgICAgICAg
IE5vZGUqIHZhbHVlID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhp
cyhhcmdJbmRleCwgcmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgIHNldERpcmVjdChzdGFj
a0VudHJ5LT5yZW1hcE9wZXJhbmQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdU
aGlzKGFyZ0luZGV4KSksIHZhbHVlLCBOb3JtYWxTZXQpOwogICAgICAgICB9CkBAIC0xNTQxLDcg
KzE1NDEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChO
b2RlKiBjYWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQgYwogCiAgICAgICAgIC8vIFdlIG11c3Qg
cmVwZWF0IHRoZSB3b3JrIG9mIG9wX2VudGVyIGhlcmUgYXMgd2Ugd2lsbCBqdW1wIHJpZ2h0IGFm
dGVyIGl0LgogICAgICAgICAvLyBXZSBqdW1wIHJpZ2h0IGFmdGVyIGl0IGFuZCBub3QgYmVmb3Jl
IGl0LCBiZWNhdXNlIG9mIHNvbWUgaW52YXJpYW50IHNheWluZyB0aGF0IGEgQ0ZHIHJvb3QgY2Fu
bm90IGhhdmUgcHJlZGVjZXNzb3JzIGluIHRoZSBJUi4KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBzdGFja0VudHJ5LT5tX2NvZGVCbG9jay0+bnVtVmFycygpOyArK2kpCisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdGFja0VudHJ5LT5tX2NvZGVCbG9jay0+bnVtVmFycygp
OyArK2kpCiAgICAgICAgICAgICBzZXREaXJlY3Qoc3RhY2tFbnRyeS0+cmVtYXBPcGVyYW5kKHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKSwgdW5kZWZpbmVkLCBOb3JtYWxTZXQpOwogCiAgICAg
ICAgIC8vIFdlIHdhbnQgdG8gZW1pdCB0aGUgU2V0TG9jYWxzIHdpdGggYW4gZXhpdCBvcmlnaW4g
dGhhdCBwb2ludHMgdG8gdGhlIHBsYWNlIHdlIGFyZSBqdW1waW5nIHRvLgpAQCAtMTU5Nyw3ICsx
NTk3LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFu
dCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHUKICAgICB9CiAKICAgICBpZiAoIU9wdGlv
bnM6OnVzZUFyaXR5Rml4dXBJbmxpbmluZygpKSB7Ci0gICAgICAgIGlmIChjb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSA+IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CisgICAgICAgIGlm
IChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpIHsKICAgICAgICAgICAgIFZFUkJPU0VfTE9HKCIgICAg
RmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNoLlxuIik7CiAgICAgICAgICAgICByZXR1
cm4gVUlOVF9NQVg7CiAgICAgICAgIH0KQEAgLTU0MTgsNyArNTQxOCw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfZW50
ZXI6IHsKICAgICAgICAgICAgIE5vZGUqIHVuZGVmaW5lZCA9IGFkZFRvR3JhcGgoSlNDb25zdGFu
dCwgT3BJbmZvKG1fY29uc3RhbnRVbmRlZmluZWQpKTsKICAgICAgICAgICAgIC8vIEluaXRpYWxp
emUgYWxsIGxvY2FscyB0byB1bmRlZmluZWQuCi0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5udW1WYXJzKCk7ICsraSkKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVC
bG9jay0+bnVtVmFycygpOyArK2kpCiAgICAgICAgICAgICAgICAgc2V0KHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKGkpLCB1bmRlZmluZWQsIEltbWVkaWF0ZU5ha2VkU2V0KTsKIAogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfZW50ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAppbmRleCA3Mjdk
NTgyNzY3NDE3ZGU2YTk3Mzg5YmRmMzM1ZDRhYzEzZmQ1YzljLi44ZWFlODFmNDk1YWRkODhkM2Zh
NzNlZGE4MmFlNWRiNDZkNzMyNGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcApAQCAtOTQsNyAr
OTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gTm9kZU9yaWdpbihD
b2RlT3JpZ2luKEJ5dGVjb2RlSW5kZXgoMCkpLCBDb2RlT3JpZ2luKEJ5dGVjb2RlSW5kZXgoMCkp
LCBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8Tm9kZSo+IGxvY2FscyhiYXNlbGlu
ZS0+bnVtQ2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2Fs
IDwgYmFzZWxpbmUtPm51bUNhbGxlZUxvY2FscygpOyArK2xvY2FsKSB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5udW1DYWxsZWVMb2NhbHMoKTsg
Kytsb2NhbCkgewogICAgICAgICAgICAgTm9kZSogcHJldmlvdXNIZWFkID0gdGFyZ2V0LT52YXJp
YWJsZXNBdEhlYWQubG9jYWwobG9jYWwpOwogICAgICAgICAgICAgaWYgKCFwcmV2aW91c0hlYWQp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgog
ICAgICAgICBvcmlnaW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47CiAgICAgICAgIAogICAgICAg
ICBBcmd1bWVudHNWZWN0b3IgbmV3QXJndW1lbnRzID0gbV9ncmFwaC5tX3Jvb3RUb0FyZ3VtZW50
cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKLSAgICAgICAgZm9yIChpbnQgYXJndW1l
bnQgPSAwOyBhcmd1bWVudCA8IGJhc2VsaW5lLT5udW1QYXJhbWV0ZXJzKCk7ICsrYXJndW1lbnQp
IHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxp
bmUtPm51bVBhcmFtZXRlcnMoKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xk
Tm9kZSA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAg
ICAgICAgIGlmICghb2xkTm9kZSkgewogICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0
eSwgYWx3YXlzIGhhdmUgYSBTZXRBcmd1bWVudERlZmluaXRlbHkgZXZlbiBpZiBpdCdzIG5vdCBu
ZWVkZWQuCkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbmV3QXJndW1l
bnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBsb2Nh
bCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm51bUNhbGxlZUxvY2FscygpOyArK2xvY2FsKSB7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5udW1DYWxs
ZWVMb2NhbHMoKTsgKytsb2NhbCkgewogICAgICAgICAgICAgTm9kZSogcHJldmlvdXNIZWFkID0g
dGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQubG9jYWwobG9jYWwpOwogICAgICAgICAgICAgaWYgKCFw
cmV2aW91c0hlYWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGIyYmY0ZDBiMzI3Y2Jh
YmY0YmE3MGM2NzgxNmMxMzlhNTFmODkyOTAuLjkwN2E0YzJhYWY0NWYwYjRlODE3ZDIyZGQzMjQ1
M2QzMmYxOGJhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCkBAIC0yMDc5LDcgKzIwNzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
aGVja0FyZ3VtZW50VHlwZXMoKQogICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2lu
KEJ5dGVjb2RlSW5kZXgoMCkpLCBDb2RlT3JpZ2luKEJ5dGVjb2RlSW5kZXgoMCkpLCB0cnVlKTsK
IAogICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1faml0LmdyYXBoKCkubV9yb290VG9Bcmd1bWVudHMu
ZmluZChtX2ppdC5ncmFwaCgpLmJsb2NrKDApKS0+dmFsdWU7Ci0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpIHsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9qaXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsg
KytpKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAgIGlmICgh
bm9kZSkgewogICAgICAgICAgICAgLy8gVGhlIGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRvbid0IGRv
IGFueSBjaGVja3MgZm9yIHN1Y2ggYXJndW1lbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDYyMTBiOTYwMWI2MGI4YzMxNTllODI1NWRk
MDI5YjMxNzAyYzYyNmUuLjIwNzg2OTFiMTA0YWZmNjIwNDFiMTMzNjVmODFkOGEzZDFiZDFlNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAg
LTM2Miw3ICszNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3BsYW4u
bW9kZSgpID09IEZUTEZvck9TUkVudHJ5TW9kZSkgewogICAgICAgICAgICAgICAgIGF1dG8qIGpp
dENvZGUgPSBtX2Z0bFN0YXRlLmppdENvZGUtPmZ0bEZvck9TUkVudHJ5KCk7CiAgICAgICAgICAg
ICAgICAgRml4ZWRWZWN0b3I8REZHOjpGbHVzaEZvcm1hdD4gYXJndW1lbnRGbHVzaEZvcm1hdHMo
Y29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpCisgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJz
KCk7ICsraSkKICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGbHVzaEZvcm1hdHNbaV0gPSBt
X2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzWzBdW2ldOwogICAgICAgICAgICAgICAgIGppdENvZGUt
PnNldEFyZ3VtZW50Rmx1c2hGb3JtYXRzKFdURk1vdmUoYXJndW1lbnRGbHVzaEZvcm1hdHMpKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkVudHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50
cnkuY3BwCmluZGV4IGRmMDg1MDU0MDYzNTUzODRkMTRjMTJiMjczMzBhM2I1ODM5ODA1NjYuLjA0
MWFjZGZmNzQxOTAzODEyNjYzODMxZTk5ZWE1ZmY0ODQ4MGNjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCkBAIC0xMTMsOCArMTEzLDcgQEAgdm9pZCogcHJl
cGFyZU9TUkVudHJ5KAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KICAgICAKLSAgICBSRUxFQVNFX0FTU0VSVCgKLSAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pih2
YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSkgPT0gYmFzZWxpbmUtPm51bUNhbGxlZUxvY2FscygpKTsK
KyAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNlbGluZS0+
bnVtQ2FsbGVlTG9jYWxzKCkpOwogICAgIAogICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0g
c3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPigKICAgICAgICAgZW50cnlDb2RlLT5lbnRyeUJ1
ZmZlcigpLT5kYXRhQnVmZmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZUNsb3N1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWVDbG9zdXJlLmgKaW5kZXggYTYyNWNhZjliNjI4OWJlYzgyNzdi
MjZkMTE5NjNiMDc0NDI1MzY4NS4uYWU3YTY4MGU1ZDRjNzU0OTMyNGYwODQwNzAzYzhmZDc1ZmZj
ODk0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxG
cmFtZUNsb3N1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lQ2xvc3VyZS5oCkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBDYWxsRnJhbWVDbG9zdXJl
IHsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBWTSog
dm07CiAgICAgSlNTY29wZSogc2NvcGU7Ci0gICAgaW50IHBhcmFtZXRlckNvdW50SW5jbHVkaW5n
VGhpczsKKyAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogICAgIAogICAgIHZvaWQgc2V0VGhpcyhKU1Zh
bHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1Byb3RvQ2FsbEZyYW1lSW5saW5lcy5oCmluZGV4IGU3MzU1NmUzNTVmNGQ3ZTA5ODlkMmI5
ZGUxOGYwZDZjYWQ3ODcwYWYuLjkyZTNmZjY0ODBlMjBmNjM5OWEwZGEzNTk0YTQ1YjYyYjkwODRh
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0Nh
bGxGcmFtZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UHJvdG9DYWxsRnJhbWVJbmxpbmVzLmgKQEAgLTM3LDcgKzM3LDcgQEAgaW5saW5lIHZvaWQgUHJv
dG9DYWxsRnJhbWU6OmluaXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmoKICAgICB0aGlzLT5zZXRDYWxsZWUoY2FsbGVlKTsKICAgICB0aGlzLT5zZXRHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICB0aGlzLT5zZXRBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyhhcmdDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGlmIChjb2RlQmxvY2sgJiYgYXJn
Q291bnRJbmNsdWRpbmdUaGlzIDwgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCisgICAgaWYg
KGNvZGVCbG9jayAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXJnQ291bnRJbmNsdWRpbmdUaGlz
KSA8IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKQogICAgICAgICB0aGlzLT5oYXNBcml0eU1p
c21hdGNoID0gdHJ1ZTsKICAgICBlbHNlCiAgICAgICAgIHRoaXMtPmhhc0FyaXR5TWlzbWF0Y2gg
PSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA2NmFkODRiMGQ2MjBlMTYx
NDA5ODAzNmUyYTQyZmQ0YmFlMDgxM2VhLi43NmQxYTUxN2Q5Yzg4ZDIwOTcwMjVmODQ0NWY2OWM5
ZWQ2M2NmZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC03NjksNyArNzY5LDcg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCBl
ZmZvcnQpCiAgICAgaWYgKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkg
ewogICAgICAgICBBU1NFUlQoIW1fYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGlmIChzaG91bGRF
bWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsgYXJn
dW1lbnQgPCBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBtX2NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICAgICAgLy8gSWYg
dGhpcyBpcyBhIGNvbnN0cnVjdG9yLCB0aGVuIHdlIHdhbnQgdG8gcHV0IGluIGEgZHVtbXkgcHJv
ZmlsaW5nIHNpdGUgKHRvCiAgICAgICAgICAgICAgICAgLy8ga2VlcCB0aGluZ3MgY29uc2lzdGVu
dCkgYnV0IHdlIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gcmVjb3JkIHRoZSBkdW1teSB2YWx1ZS4K
ICAgICAgICAgICAgICAgICBpZiAobV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSAmJiAhYXJn
dW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCmluZGV4IGM3NmIxNjEwZjk5N2E0ODJjNDBjZTc3ZTdjMjhhNjYzY2JlMzhkMmEuLjg0ZTJk
YTVmN2FiNjhhNjI2MjQ4NWNiOGNjNDNmODA1NzE0OGM0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC01Nyw3ICs1Nyw3IEBAIEFM
V0FZU19JTkxJTkUgaW50IG51bWJlck9mRXh0cmFTbG90cyhpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpCiAKIEFMV0FZU19JTkxJTkUgaW50IG51bWJlck9mU3RhY2tQYWRkaW5nU2xvdHMo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKIHsK
LSAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPj0gY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpCisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykgPj0gY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCiAgICAgICAgIHJldHVy
biAwOwogICAgIGludCBhbGlnbmVkRnJhbWVTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
KHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
Q2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpOwogICAgIGludCBhbGlnbmVkRnJhbWVT
aXplRm9yUGFyYW1ldGVycyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVu
dFJlZ2lzdGVycygpLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIENhbGxGcmFtZTo6aGVh
ZGVyU2l6ZUluUmVnaXN0ZXJzKTsKQEAgLTY2LDcgKzY2LDcgQEAgQUxXQVlTX0lOTElORSBpbnQg
bnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgaW50IGFyZ3Vt
ZW50Q28KIAogQUxXQVlTX0lOTElORSBpbnQgbnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90c1dpdGhF
eHRyYVNsb3RzKENvZGVCbG9jayogY29kZUJsb2NrLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpCiB7Ci0gICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID49IGNvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpKQorICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpID49IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90cyhjb2Rl
QmxvY2ssIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSArIG51bWJlck9mRXh0cmFTbG90cyhh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9jay5oCmluZGV4IDdkNjdjZTE5YzM1N2M2YjM5
ZDM5ZDE2NGMwNTAwMTBkYWIzMzUyNmYuLmVhNzVmZTJmNmIwZjlhM2YxNGU3OTNlZDExMjc4ZWZk
MGUwOWFjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5j
dGlvbkNvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5j
dGlvbkNvZGVCbG9jay5oCkBAIC02NSwxNSArNjUsMTUgQEAgcHVibGljOgogICAgIH0KIAogICAg
IHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uSW5kZXg7
IH0KLSAgICBpbnQgbnVtVmFycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtVmFyczsgfQotICAgIGlu
dCBudW1DYWxsZWVMb2NhbHMoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxlZUxvY2FsczsgfQor
ICAgIHVuc2lnbmVkIG51bVZhcnMoKSBjb25zdCB7IHJldHVybiBtX251bVZhcnM7IH0KKyAgICB1
bnNpZ25lZCBudW1DYWxsZWVMb2NhbHMoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxlZUxvY2Fs
czsgfQogICAgIHVpbnQzMl90IG51bUFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQXJn
dW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPFR5cGU+JiBjb25zdGFudFR5cGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9jb25zdGFudFR5cGVzOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYg
Y29uc3RhbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHM7IH0KICAgICBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gKm1faW5zdHJ1Y3Rp
b25zOyB9CiAKLSAgICB2b2lkIHNldE51bVZhcnMoaW50IG51bVZhcnMpIHsgbV9udW1WYXJzID0g
bnVtVmFyczsgfQotICAgIHZvaWQgc2V0TnVtQ2FsbGVlTG9jYWxzKGludCBudW1DYWxsZWVMb2Nh
bHMpIHsgbV9udW1DYWxsZWVMb2NhbHMgPSBudW1DYWxsZWVMb2NhbHM7IH0KKyAgICB2b2lkIHNl
dE51bVZhcnModW5zaWduZWQgbnVtVmFycykgeyBtX251bVZhcnMgPSBudW1WYXJzOyB9CisgICAg
dm9pZCBzZXROdW1DYWxsZWVMb2NhbHModW5zaWduZWQgbnVtQ2FsbGVlTG9jYWxzKSB7IG1fbnVt
Q2FsbGVlTG9jYWxzID0gbnVtQ2FsbGVlTG9jYWxzOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHVp
bnQ2NF90IGdldENvbnN0YW50KFZpcnR1YWxSZWdpc3RlciByZWcpIGNvbnN0IHsgcmV0dXJuIG1f
Y29uc3RhbnRzW3JlZy50b0NvbnN0YW50SW5kZXgoKV07IH0KICAgICBBTFdBWVNfSU5MSU5FIFR5
cGUgZ2V0Q29uc3RhbnRUeXBlKFZpcnR1YWxSZWdpc3RlciByZWcpIGNvbnN0CkBAIC0xMjYsOSAr
MTI2LDkgQEAgcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX2Z1bmN0aW9uSW5kZXg7CiAKICAgICAv
LyBVc2VkIGZvciB0aGUgbnVtYmVyIG9mIFdlYkFzc2VtYmx5IGxvY2FscywgYXMgaW4gaHR0cHM6
Ly93ZWJhc3NlbWJseS5naXRodWIuaW8vc3BlYy9jb3JlL3N5bnRheC9tb2R1bGVzLmh0bWwjc3lu
dGF4LWxvY2FsCi0gICAgaW50IG1fbnVtVmFycyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX251bVZh
cnMgeyAwIH07CiAgICAgLy8gTnVtYmVyIG9mIFZpcnR1YWxSZWdpc3Rlci4gVGhlIG5hbWluZyBp
cyB1bmZvcnR1bmF0ZSwgYnV0IGhhcyB0byBtYXRjaCBVbmxpbmtlZENvZGVCbG9jawotICAgIGlu
dCBtX251bUNhbGxlZUxvY2FscyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX251bUNhbGxlZUxvY2Fs
cyB7IDAgfTsKICAgICB1aW50MzJfdCBtX251bUFyZ3VtZW50cyB7IDAgfTsKICAgICBWZWN0b3I8
VHlwZT4gbV9jb25zdGFudFR5cGVzOwogICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9jb25zdGFudHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNw
cAppbmRleCAwNTRlMzFlZDZiYTRhMjg5ZThlY2M1ZTZkNjcxOGFlZTY3NjEwNWU4Li5mNzA4OTNi
NzE1ZmQwY2I5NjA4MzllOGVhYjdhMjZlY2Q2Y2MyOGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKQEAgLTE2OSw3ICsxNjksNyBA
QCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvblR5cGUgcHVzaChOb0NvbnNpc3RlbmN5Q2hlY2tUYWcp
CiAgICAgewogICAgICAgICBtX21heFN0YWNrU2l6ZSA9IHN0ZDo6bWF4KG1fbWF4U3RhY2tTaXpl
LCArK21fc3RhY2tTaXplKTsKLSAgICAgICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KG1fc3RhY2tTaXplIC0gMSk7CisgICAgICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bCgobV9zdGFja1NpemUgLSAxKS51bnNhZmVHZXQoKSk7CiAgICAgfQogCiAgICAgRXhwcmVzc2lv
blR5cGUgcHVzaCgpCkBAIC0zMTUsNyArMzE1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IHN0YXJ0T2Zmc2V0ID0gdGFyZ2V0LnN0YWNrU2l6ZSgpICsgMTsKICAgICAgICAga2VlcCA9IHRh
cmdldC5icmFuY2hUYXJnZXRBcml0eSgpOwotICAgICAgICBkcm9wID0gbV9zdGFja1NpemUgLSB0
YXJnZXQuc3RhY2tTaXplKCkgLSB0YXJnZXQuYnJhbmNoVGFyZ2V0QXJpdHkoKTsKKyAgICAgICAg
ZHJvcCA9IChtX3N0YWNrU2l6ZSAtIHRhcmdldC5zdGFja1NpemUoKSAtIHRhcmdldC5icmFuY2hU
YXJnZXRBcml0eSgpKS51bnNhZmVHZXQoKTsKICAgICB9CiAKICAgICB2b2lkIGRyb3BLZWVwKFN0
YWNrJiB2YWx1ZXMsIGNvbnN0IENvbnRyb2xUeXBlJiB0YXJnZXQsIGJvb2wgZHJvcFZhbHVlcykK
QEAgLTM0OCw3ICszNDgsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+CiAgICAgdm9pZCB3YWxrRXhwcmVzc2lvblN0YWNrKFN0YWNrJiBleHByZXNzaW9uU3RhY2ss
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewotICAgICAgICB3YWxrRXhwcmVzc2lvblN0
YWNrKGV4cHJlc3Npb25TdGFjaywgbV9zdGFja1NpemUsIGZ1bmN0b3IpOworICAgICAgICB3YWxr
RXhwcmVzc2lvblN0YWNrKGV4cHJlc3Npb25TdGFjaywgbV9zdGFja1NpemUudW5zYWZlR2V0KCks
IGZ1bmN0b3IpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CkBAIC0z
NzMsNyArMzczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAg
ICAgIHdhbGtFeHByZXNzaW9uU3RhY2sobV9wYXJzZXItPmV4cHJlc3Npb25TdGFjaygpLCBbJl0o
VmlydHVhbFJlZ2lzdGVyIGV4cHJlc3Npb24sIFZpcnR1YWxSZWdpc3RlciBzbG90KSB7Ci0gICAg
ICAgICAgICBBU1NFUlQoZXhwcmVzc2lvbiA9PSBzbG90IHx8IGV4cHJlc3Npb24uaXNDb25zdGFu
dCgpIHx8IGV4cHJlc3Npb24uaXNBcmd1bWVudCgpIHx8IGV4cHJlc3Npb24udG9Mb2NhbCgpIDwg
bV9jb2RlQmxvY2stPm1fbnVtVmFycyk7CisgICAgICAgICAgICBBU1NFUlQoZXhwcmVzc2lvbiA9
PSBzbG90IHx8IGV4cHJlc3Npb24uaXNDb25zdGFudCgpIHx8IGV4cHJlc3Npb24uaXNBcmd1bWVu
dCgpIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihleHByZXNzaW9uLnRvTG9jYWwoKSkgPCBtX2Nv
ZGVCbG9jay0+bV9udW1WYXJzKTsKICAgICAgICAgfSk7CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJM
RUQKICAgICB9CkBAIC0zODUsNyArMzg1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBjaGVja0Nv
bnNpc3RlbmN5KCk7CiAgICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2soZXhwcmVzc2lvblN0YWNr
LCBbJl0oVHlwZWRFeHByZXNzaW9uJiBleHByZXNzaW9uLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkg
ewotICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24udmFsdWUoKSA9PSBzbG90IHx8IGV4cHJl
c3Npb24udmFsdWUoKS5pc0NvbnN0YW50KCkgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQXJndW1l
bnQoKSB8fCBleHByZXNzaW9uLnZhbHVlKCkudG9Mb2NhbCgpIDwgbV9jb2RlQmxvY2stPm1fbnVt
VmFycyk7CisgICAgICAgICAgICBBU1NFUlQoZXhwcmVzc2lvbi52YWx1ZSgpID09IHNsb3QgfHwg
ZXhwcmVzc2lvbi52YWx1ZSgpLmlzQ29uc3RhbnQoKSB8fCBleHByZXNzaW9uLnZhbHVlKCkuaXNB
cmd1bWVudCgpIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihleHByZXNzaW9uLnZhbHVlKCkudG9M
b2NhbCgpKSA8IG1fY29kZUJsb2NrLT5tX251bVZhcnMpOwogICAgICAgICAgICAgaWYgKGV4cHJl
c3Npb24udmFsdWUoKSA9PSBzbG90KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgc2xvdCwgZXhwcmVzc2lvbik7CkBAIC00MDEsNyArNDAx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9zdGFja1NpemUgLT0gbmV3U3RhY2suc2l6ZSgpOwog
ICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2so
ZW5jbG9zaW5nU3RhY2ssIFsmXShUeXBlZEV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFZpcnR1YWxS
ZWdpc3RlciBzbG90KSB7Ci0gICAgICAgICAgICBBU1NFUlQoZXhwcmVzc2lvbi52YWx1ZSgpID09
IHNsb3QgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQ29uc3RhbnQoKSB8fCBleHByZXNzaW9uLnZh
bHVlKCkuaXNBcmd1bWVudCgpIHx8IGV4cHJlc3Npb24udmFsdWUoKS50b0xvY2FsKCkgPCBtX2Nv
ZGVCbG9jay0+bV9udW1WYXJzKTsKKyAgICAgICAgICAgIEFTU0VSVChleHByZXNzaW9uLnZhbHVl
KCkgPT0gc2xvdCB8fCBleHByZXNzaW9uLnZhbHVlKCkuaXNDb25zdGFudCgpIHx8IGV4cHJlc3Np
b24udmFsdWUoKS5pc0FyZ3VtZW50KCkgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV4cHJlc3Np
b24udmFsdWUoKS50b0xvY2FsKCkpIDwgbV9jb2RlQmxvY2stPm1fbnVtVmFycyk7CiAgICAgICAg
ICAgICBpZiAoZXhwcmVzc2lvbi52YWx1ZSgpID09IHNsb3QgfHwgZXhwcmVzc2lvbi52YWx1ZSgp
LmlzQ29uc3RhbnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBXYXNt
TW92OjplbWl0KHRoaXMsIHNsb3QsIGV4cHJlc3Npb24pOwpAQCAtNDMyLDggKzQzMiw4IEBAIHBy
aXZhdGU6CiAgICAgUmVzdWx0TGlzdCBtX3VuaXRpYWxpemVkTG9jYWxzOwogICAgIEhhc2hNYXA8
RW5jb2RlZEpTVmFsdWUsIFZpcnR1YWxSZWdpc3RlciwgV1RGOjpJbnRIYXNoPEVuY29kZWRKU1Zh
bHVlPiwgQ29uc3RhbnRNYXBIYXNoVHJhaXRzPiBtX2NvbnN0YW50TWFwOwogICAgIFZlY3RvcjxW
aXJ0dWFsUmVnaXN0ZXIsIDI+IG1fcmVzdWx0czsKLSAgICB1bnNpZ25lZCBtX3N0YWNrU2l6ZSB7
IDAgfTsKLSAgICB1bnNpZ25lZCBtX21heFN0YWNrU2l6ZSB7IDAgfTsKKyAgICBDaGVja2VkPHVu
c2lnbmVkPiBtX3N0YWNrU2l6ZSB7IDAgfTsKKyAgICBDaGVja2VkPHVuc2lnbmVkPiBtX21heFN0
YWNrU2l6ZSB7IDAgfTsKIH07CiAKIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNv
ZGVCbG9jaz4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlQnl0ZWNvZGUoY29uc3QgdWludDhfdCog
ZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoLCBjb25zdCBTaWduYXR1cmUmIHNp
Z25hdHVyZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIHVpbnQzMl90IGZ1bmN0aW9u
SW5kZXgpCkBAIC00ODIsNyArNDgyLDkgQEAgTExJbnRHZW5lcmF0b3I6OkxMSW50R2VuZXJhdG9y
KGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCB1bnNpZ25lZCBmdW5jdGlvbkkKIHN0ZDo6
dW5pcXVlX3B0cjxGdW5jdGlvbkNvZGVCbG9jaz4gTExJbnRHZW5lcmF0b3I6OmZpbmFsaXplKCkK
IHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2NvZGVCbG9jayk7Ci0gICAgbV9jb2RlQmxvY2stPm1f
bnVtQ2FsbGVlTG9jYWxzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50
UmVnaXN0ZXJzKCksIG1fbWF4U3RhY2tTaXplKTsKKyAgICB1aW50NjRfdCBudW1DYWxsZWVMb2Nh
bHMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fbWF4U3RhY2tTaXplLnVuc2FmZUdldCgpKSk7CisgICAg
bV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzID0gbnVtQ2FsbGVlTG9jYWxzOworICAgIFJF
TEVBU0VfQVNTRVJUKG51bUNhbGxlZUxvY2FscyA9PSBtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVM
b2NhbHMpOwogCiAgICAgYXV0byYgdGhyZWFkU3BlY2lmaWMgPSB0aHJlYWRTcGVjaWZpY0J1ZmZl
cigpOwogICAgIEJ1ZmZlciB1c2VkQnVmZmVyOwpAQCAtNTcxLDcgKzU3Myw3IEBAIGF1dG8gTExJ
bnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWduYXR1cmUmIHNp
Z25hdHVyZSkgLT4gTExJCiAgICAgLy8gRklYTUU6IHdlIGFyZSBhbGxvY2F0aW5nIHRoZSBleHRy
YSBzcGFjZSBmb3IgdGhlIGFyZ3VtZW50L3JldHVybiBjb3VudCBpbiBvcmRlciB0byBhdm9pZCBp
bnRlcmZlcmVuY2UsIGJ1dCB3ZSBjb3VsZCBkbyBiZXR0ZXIKICAgICAvLyBOT1RFOiBXZSBpbmNy
ZWFzZSBhcmcgY291bnQgYnkgMSBmb3IgdGhlIGNhc2Ugb2YgaW5kaXJlY3QgY2FsbHMKICAgICBt
X3N0YWNrU2l6ZSArPSBzdGQ6Om1heChzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMSwgc2ln
bmF0dXJlLnJldHVybkNvdW50KCkpICsgZ3ByQ291bnQgKyBmcHJDb3VudCArIHN0YWNrQ291bnQg
KyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsKLSAgICBpZiAobV9zdGFja1NpemUg
JSBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpKQorICAgIGlmIChtX3N0YWNrU2l6ZS51bnNhZmVH
ZXQoKSAlIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkpCiAgICAgICAgICsrbV9zdGFja1NpemU7
CiAgICAgaWYgKG1fbWF4U3RhY2tTaXplIDwgbV9zdGFja1NpemUpCiAgICAgICAgIG1fbWF4U3Rh
Y2tTaXplID0gbV9zdGFja1NpemU7CkBAIC01ODAsNyArNTgyLDcgQEAgYXV0byBMTEludEdlbmVy
YXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJl
KSAtPiBMTEkKICAgICBSZXN1bHRMaXN0IGFyZ3VtZW50cyhzaWduYXR1cmUuYXJndW1lbnRDb3Vu
dCgpKTsKICAgICBSZXN1bHRMaXN0IHRlbXBvcmFyeVJlc3VsdHMoc2lnbmF0dXJlLnJldHVybkNv
dW50KCkpOwogCi0gICAgY29uc3QgdW5zaWduZWQgc3RhY2tPZmZzZXQgPSBtX3N0YWNrU2l6ZTsK
KyAgICBjb25zdCB1bnNpZ25lZCBzdGFja09mZnNldCA9IG1fc3RhY2tTaXplLnVuc2FmZUdldCgp
OwogICAgIGNvbnN0IHVuc2lnbmVkIGJhc2UgPSBzdGFja09mZnNldCAtIENhbGxGcmFtZTo6aGVh
ZGVyU2l6ZUluUmVnaXN0ZXJzOwogCiAgICAgY29uc3QgdWludDMyX3QgZ3ByTGltaXQgPSBiYXNl
IC0gc3RhY2tDb3VudCAtIGdwckNvdW50OwpAQCAtODczLDcgKzg3NSw3IEBAIGF1dG8gTExJbnRH
ZW5lcmF0b3I6OmFkZExvb3AoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTdGFjayYgZW5jbG9z
aW5nU3RhY2ssIENvCiAgICAgUmVmPExhYmVsPiBib2R5ID0gbmV3RW1pdHRlZExhYmVsKCk7CiAg
ICAgUmVmPExhYmVsPiBjb250aW51YXRpb24gPSBuZXdMYWJlbCgpOwogCi0gICAgYmxvY2sgPSBD
b250cm9sVHlwZTo6bG9vcChzaWduYXR1cmUsIG1fc3RhY2tTaXplLCBXVEZNb3ZlKGJvZHkpLCBX
VEZNb3ZlKGNvbnRpbnVhdGlvbikpOworICAgIGJsb2NrID0gQ29udHJvbFR5cGU6Omxvb3Aoc2ln
bmF0dXJlLCBtX3N0YWNrU2l6ZS51bnNhZmVHZXQoKSwgV1RGTW92ZShib2R5KSwgV1RGTW92ZShj
b250aW51YXRpb24pKTsKIAogICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IG9zckVudHJ5RGF0
YTsKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9jb2RlQmxvY2stPm1fbnVtQXJndW1l
bnRzOyBpKyspCkBAIC04ODIsNyArODg0LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkTG9v
cChCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ28KICAg
ICBjb25zdCBhdXRvJiBjYWxsaW5nQ29udmVudGlvbiA9IHdhc21DYWxsaW5nQ29udmVudGlvbigp
OwogICAgIGNvbnN0IHVpbnQzMl90IGdwckNvdW50ID0gY2FsbGluZ0NvbnZlbnRpb24uZ3ByQXJn
cy5zaXplKCk7CiAgICAgY29uc3QgdWludDMyX3QgZnByQ291bnQgPSBjYWxsaW5nQ29udmVudGlv
bi5mcHJBcmdzLnNpemUoKTsKLSAgICBmb3IgKGludDMyX3QgaSA9IGdwckNvdW50ICsgZnByQ291
bnQgKyBudW1iZXJPZkxMSW50Q2FsbGVlU2F2ZVJlZ2lzdGVyczsgaSA8IG1fY29kZUJsb2NrLT5t
X251bVZhcnM7IGkrKykKKyAgICBmb3IgKHVpbnQzMl90IGkgPSBncHJDb3VudCArIGZwckNvdW50
ICsgbnVtYmVyT2ZMTEludENhbGxlZVNhdmVSZWdpc3RlcnM7IGkgPCBtX2NvZGVCbG9jay0+bV9u
dW1WYXJzOyBpKyspCiAgICAgICAgIG9zckVudHJ5RGF0YS5hcHBlbmQodmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoaSkpOwogICAgIGZvciAodW5zaWduZWQgY29udHJvbEluZGV4ID0gMDsgY29udHJv
bEluZGV4IDwgbV9wYXJzZXItPmNvbnRyb2xTdGFjaygpLnNpemUoKTsgKytjb250cm9sSW5kZXgp
IHsKICAgICAgICAgU3RhY2smIGV4cHJlc3Npb25TdGFjayA9IG1fcGFyc2VyLT5jb250cm9sU3Rh
Y2soKVtjb250cm9sSW5kZXhdLmVuY2xvc2VkRXhwcmVzc2lvblN0YWNrOwpAQCAtOTAxLDEzICs5
MDMsMTMgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkTG9vcChCbG9ja1NpZ25hdHVyZSBzaWdu
YXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ28KIAogYXV0byBMTEludEdlbmVyYXRvcjo6
YWRkVG9wTGV2ZWwoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlKSAtPiBDb250cm9sVHlwZQogewot
ICAgIHJldHVybiBDb250cm9sVHlwZTo6dG9wTGV2ZWwoc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwg
bmV3TGFiZWwoKSk7CisgICAgcmV0dXJuIENvbnRyb2xUeXBlOjp0b3BMZXZlbChzaWduYXR1cmUs
IG1fc3RhY2tTaXplLnVuc2FmZUdldCgpLCBuZXdMYWJlbCgpKTsKIH0KIAogYXV0byBMTEludEdl
bmVyYXRvcjo6YWRkQmxvY2soQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTdGFjayYgZW5jbG9z
aW5nU3RhY2ssIENvbnRyb2xUeXBlJiBuZXdCbG9jaywgU3RhY2smIG5ld1N0YWNrKSAtPiBQYXJ0
aWFsUmVzdWx0CiB7CiAgICAgc3BsaXRTdGFjayhzaWduYXR1cmUsIGVuY2xvc2luZ1N0YWNrLCBu
ZXdTdGFjayk7Ci0gICAgbmV3QmxvY2sgPSBDb250cm9sVHlwZTo6YmxvY2soc2lnbmF0dXJlLCBt
X3N0YWNrU2l6ZSwgbmV3TGFiZWwoKSk7CisgICAgbmV3QmxvY2sgPSBDb250cm9sVHlwZTo6Ymxv
Y2soc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZS51bnNhZmVHZXQoKSwgbmV3TGFiZWwoKSk7CiAgICAg
cmV0dXJuIHsgfTsKIH0KIApAQCAtOTIwLDcgKzkyMiw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6
OmFkZElmKEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwgQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJl
LCBTCiAKICAgICBXYXNtSmZhbHNlOjplbWl0KHRoaXMsIGNvbmRpdGlvbiwgYWx0ZXJuYXRlLT5i
aW5kKHRoaXMpKTsKIAotICAgIHJlc3VsdCA9IENvbnRyb2xUeXBlOjppZl8oc2lnbmF0dXJlLCBt
X3N0YWNrU2l6ZSwgV1RGTW92ZShhbHRlcm5hdGUpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwor
ICAgIHJlc3VsdCA9IENvbnRyb2xUeXBlOjppZl8oc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZS51bnNh
ZmVHZXQoKSwgV1RGTW92ZShhbHRlcm5hdGUpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwogICAg
IHJldHVybiB7IH07CiB9CiAKQEAgLTkzOCw3ICs5NDAsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9y
OjphZGRFbHNlVG9VbnJlYWNoYWJsZShDb250cm9sVHlwZSYgZGF0YSkgLT4gUGFydGlhbFJlc3Vs
dAogCiAgICAgQ29udHJvbElmJiBjb250cm9sID0gV1RGOjpnZXQ8Q29udHJvbElmPihkYXRhKTsK
ICAgICBlbWl0TGFiZWwoY29udHJvbC5tX2FsdGVybmF0ZS5nZXQoKSk7Ci0gICAgZGF0YSA9IENv
bnRyb2xUeXBlOjpibG9jayhkYXRhLm1fc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgV1RGTW92ZShk
YXRhLm1fY29udGludWF0aW9uKSk7CisgICAgZGF0YSA9IENvbnRyb2xUeXBlOjpibG9jayhkYXRh
Lm1fc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZS51bnNhZmVHZXQoKSwgV1RGTW92ZShkYXRhLm1fY29u
dGludWF0aW9uKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427042</attachid>
            <date>2021-04-26 07:33:21 -0700</date>
            <delta_ts>2021-04-26 11:07:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224995-20210426103320.patch</filename>
            <type>text/plain</type>
            <size>37915</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTMzMGQyMzZhMjljN2Y1NzQ0NWIyMjU1NGE5ZjUwYjY5ODNhODU5Li5iOGFmMGEzOGVlZTFkMjdm
NjVkNmIwNTRlNTU0N2FlMDI2MWE0ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNC0yNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBudW1DYWxsZWVMb2NhbHMsIG51bVBhcmFtZXRlcnMsIGFuZCBudW1W
YXJzIHNob3VsZCBiZSB1bnNpZ25lZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWxsIG9mIHRoZSB2YXJpb3VzIENvZGVCbG9jayBjbGFzc2VzIGN1cnJl
bnRseSBoYXZlIHRoZQorICAgICAgICBudW1DYWxsZWVMb2NhbHMgYW5kIG51bVZhcnMgbWFya2Vk
IGFzIGludHMuIEkgYmVsaWV2ZSB0aGlzIGlzIGp1c3QKKyAgICAgICAgYSBoaXN0b3JpY2FsIGFy
dGlmYWN0IG9yIGJlY2F1c2UgVmlydHVhbFJlZ2lzdGVyJ3Mgb2Zmc2V0IGlzIGFuCisgICAgICAg
IGludCB0byBtYWtlIGhhbmRsaW5nIGNvbnN0YW50cyBlYXNpZXIuIFJlZ2FyZGxlc3MsIGl0J3Mg
YSBiaXQKKyAgICAgICAgc3RyYW5nZSB0byBub3QgaGFuZGxlIHRoZSBzaWduIGNvbnZlcnNpb24g
YXQgdGhlIHBvaW50IG9mCisgICAgICAgIGNvbXBhcmlzb24gYmV0d2VlbiBhIFZpcnR1YWxSZWdp
c3RlciBvZmZzZXQgYW5kIHRoZSBsb2NhbC92YXIKKyAgICAgICAgY291bnQuIFRoaXMgZG9lc24n
dCBjb21wbGV0ZWx5IGZpeCBldmVyeSBwbGFjZSB3ZSB1c2UgaW50cyBmb3IKKyAgICAgICAgdGhl
c2UgdmFsdWVzIGJ1dCBzdGFydHMgb24gdGhlIHJpZ2h0IHRyYWNrLiBMYXN0bHksIEkgYWxzbyBh
ZGRlZAorICAgICAgICBzb21lIENoZWNrPHVuc2lnbmVkPnMgdG8gdGhlIHdhc20gcGFyc2VyIGZv
ciBzYW5pdHkgY2hlY2tpbmcuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldE51bVBhcmFtZXRlcnMpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVJbmRl
eFNsb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6Om51bVBhcmFtZXRlcnMgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
Om51bWJlck9mQXJndW1lbnRzVG9Ta2lwIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpudW1DYWxsZWVMb2NhbHMgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bVZh
cnMgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bVRtcHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZHJlc3NPZk51bVBhcmFtZXRlcnMpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmlzVGVtcG9yYXJ5UmVnaXN0ZXIpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpu
dW1DYWxsZWVMb2NhbHMgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
bnVtVmFycyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6Om51bUNh
bGxlZUxvY2FscyBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yOjpudW1WYXJzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3I6OnNldE51bUNhbGxlZUxvY2Fscyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yOjpzZXROdW1WYXJzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3I6OnNldE51bVBhcmFtZXRlcnMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaEZ1bmN0
aW9uTmFtZVNjb3BlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JC
YXNlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRz
Pjo6bmV3UmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJlY3Vyc2l2ZVRhaWxDYWxs
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICog
ZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVj
a0FyZ3VtZW50VHlwZXMpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dlcik6CisgICAgICAgICogZnRs
L0ZUTE9TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpwcmVwYXJlT1NSRW50cnkpOgor
ICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZUNsb3N1cmUuaDoKKyAgICAgICAgKiBpbnRl
cnByZXRlci9Qcm90b0NhbGxGcmFtZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxs
RnJhbWU6OmluaXQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmNvbXBpbGVXaXRob3V0TGlua2luZyk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpudW1iZXJPZlN0YWNrUGFkZGlu
Z1Nsb3RzKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpudW1iZXJPZlN0YWNrUGFk
ZGluZ1Nsb3RzV2l0aEV4dHJhU2xvdHMpOgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrOjpudW1WYXJz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2s6Om51bUNhbGxl
ZUxvY2FscyBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrOjpz
ZXROdW1WYXJzKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2s6OnNldE51
bUNhbGxlZUxvY2Fscyk6CisgICAgICAgICogd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6cHVzaCk6CisgICAgICAgIChKU0M6
Oldhc206OkxMSW50R2VuZXJhdG9yOjpnZXREcm9wS2VlcENvdW50KToKKyAgICAgICAgKEpTQzo6
V2FzbTo6TExJbnRHZW5lcmF0b3I6OndhbGtFeHByZXNzaW9uU3RhY2spOgorICAgICAgICAoSlND
OjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgIChKU0M6
Oldhc206OkxMSW50R2VuZXJhdG9yOjptYXRlcmlhbGl6ZUNvbnN0YW50c0FuZExvY2Fscyk6Cisg
ICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjpzcGxpdFN0YWNrKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6TExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcik6CisgICAgICAgIChK
U0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRMb29wKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
TExJbnRHZW5lcmF0b3I6OmFkZFRvcExldmVsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRH
ZW5lcmF0b3I6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6
OmFkZElmKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZEVsc2VUb1Vu
cmVhY2hhYmxlKToKKwogMjAyMS0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzY0ODYuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGRlOWNiNWUx
YzM5MjZmYTU4Njk3MGMzOWMxZDUxNGY4NjNkNmU1NGMuLmZjNWFmYWZjNDMxZDYzMDYzOTIzMzcz
NGFhNzc5YWRlNDhiYTkwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnNldEFsdGVy
bmF0aXZlKFZNJiB2bSwgQ29kZUJsb2NrKiBhbHRlcm5hdGl2ZSkKICAgICBtX2FsdGVybmF0aXZl
LnNldCh2bSwgdGhpcywgYWx0ZXJuYXRpdmUpOwogfQogCi12b2lkIENvZGVCbG9jazo6c2V0TnVt
UGFyYW1ldGVycyhpbnQgbmV3VmFsdWUpCit2b2lkIENvZGVCbG9jazo6c2V0TnVtUGFyYW1ldGVy
cyh1bnNpZ25lZCBuZXdWYWx1ZSkKIHsKICAgICBtX251bVBhcmFtZXRlcnMgPSBuZXdWYWx1ZTsK
IApAQCAtMjAxNSw3ICsyMDE1LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5l
c3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVJbmRleFNsb3coY29uc3QgT3BDYXRjaCYKICAgICAgICAg
bGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsaXZlTG9jYWwpKTsK
ICAgICB9KTsKIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyArK2kp
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhcmFtZXRlcnMoKTsgKytpKQogICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVk
aW5nVGhpcyhpKSk7CiAKICAgICBhdXRvKiBwcm9maWxlcyA9IFZhbHVlUHJvZmlsZUFuZFZpcnR1
YWxSZWdpc3RlckJ1ZmZlcjo6Y3JlYXRlKGxpdmVPcGVyYW5kcy5zaXplKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDE2ZThkNTFlMzI3YzYyNzQ3
NDhjMjUwZGFmNjc0NmFhN2ViNmQ3Y2YuLjU3NDhkMTM5ZDljYjU1ODdhNzFlZGQxMDVjMTU4NTJh
NmIyNjU0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
QEAgLTE1NiwxNyArMTU2LDE3IEBAIHB1YmxpYzoKIAogICAgIE1ldGFkYXRhVGFibGUqIG1ldGFk
YXRhVGFibGUoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmdldCgpOyB9CiAKLSAgICBpbnQg
bnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyYW1ldGVyczsgfQotICAgIHZv
aWQgc2V0TnVtUGFyYW1ldGVycyhpbnQgbmV3VmFsdWUpOworICAgIHVuc2lnbmVkIG51bVBhcmFt
ZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX251bVBhcmFtZXRlcnM7IH0KKyAgICB2b2lkIHNldE51
bVBhcmFtZXRlcnModW5zaWduZWQgbmV3VmFsdWUpOwogCi0gICAgaW50IG51bWJlck9mQXJndW1l
bnRzVG9Ta2lwKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgfQor
ICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCkgY29uc3QgeyByZXR1cm4gbV9u
dW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgfQogCi0gICAgaW50IG51bUNhbGxlZUxvY2FscygpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxzOyB9CisgICAgdW5zaWduZWQgbnVtQ2FsbGVl
TG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsZWVMb2NhbHM7IH0KIAotICAgIGludCBu
dW1WYXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1WYXJzOyB9Ci0gICAgaW50IG51bVRtcHMoKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aGFzQ2hlY2twb2ludHMoKSAqIG1heE51bUNo
ZWNrcG9pbnRUbXBzOyB9CisgICAgdW5zaWduZWQgbnVtVmFycygpIGNvbnN0IHsgcmV0dXJuIG1f
bnVtVmFyczsgfQorICAgIHVuc2lnbmVkIG51bVRtcHMoKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkQ29kZS0+aGFzQ2hlY2twb2ludHMoKSAqIG1heE51bUNoZWNrcG9pbnRUbXBzOyB9CiAKLSAg
ICBpbnQqIGFkZHJlc3NPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiAmbV9udW1QYXJhbWV0ZXJz
OyB9CisgICAgdW5zaWduZWQqIGFkZHJlc3NPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiAmbV9u
dW1QYXJhbWV0ZXJzOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk51bVBhcmFtZXRl
cnMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX251bVBhcmFtZXRlcnMp
OyB9CiAKICAgICBDb2RlQmxvY2sqIGFsdGVybmF0aXZlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q29kZUJsb2NrKj4obV9hbHRlcm5hdGl2ZS5nZXQoKSk7IH0KQEAgLTI0Myw3ICsyNDMs
NyBAQCBwdWJsaWM6CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNUZW1wb3JhcnlSZWdpc3Rl
cihWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlZy5vZmZzZXQo
KSA+PSBtX251bVZhcnM7CisgICAgICAgIHJldHVybiByZWcub2Zmc2V0KCkgPj0gc3RhdGljX2Nh
c3Q8aW50PihtX251bVZhcnMpOwogICAgIH0KIAogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9y
Qnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4LCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhh
bmRsZXI6OkFueUhhbmRsZXIpOwpAQCAtOTg5LDEwICs5ODksMTAgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcigpOwog
ICAgIHZvaWQgZW5zdXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZUluZGV4U2xv
dyhjb25zdCBPcENhdGNoJiwgQnl0ZWNvZGVJbmRleCk7CiAKLSAgICBpbnQgbV9udW1DYWxsZWVM
b2NhbHM7Ci0gICAgaW50IG1fbnVtVmFyczsKLSAgICBpbnQgbV9udW1QYXJhbWV0ZXJzOwotICAg
IGludCBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwIHsgMCB9OworICAgIHVuc2lnbmVkIG1fbnVt
Q2FsbGVlTG9jYWxzOworICAgIHVuc2lnbmVkIG1fbnVtVmFyczsKKyAgICB1bnNpZ25lZCBtX251
bVBhcmFtZXRlcnM7CisgICAgdW5zaWduZWQgbV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCB7IDAg
fTsKICAgICB1bnNpZ25lZCBtX251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIHsgMCB9
OwogICAgIHVuaW9uIHsKICAgICAgICAgdW5zaWduZWQgbV9kZWJ1Z2dlclJlcXVlc3RzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApp
bmRleCBiNDIxMDQ2N2NlMmQ3Zjk5ZmUzMmU1OGEzMDc0OTMyMzA1NDY4NTcxLi4zMTZlYmNhODQy
ZTNjOWUyN2M1ZGY5YzI4MGU1ODdhODQyY2QzZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMjA5LDggKzIwOSw4IEBA
IHB1YmxpYzoKIAogICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBj
b25zdDsKIAotICAgIGludCBudW1DYWxsZWVMb2NhbHMoKSBjb25zdCB7IHJldHVybiBtX251bUNh
bGxlZUxvY2FsczsgfQotICAgIGludCBudW1WYXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1WYXJz
OyB9CisgICAgdW5zaWduZWQgbnVtQ2FsbGVlTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1D
YWxsZWVMb2NhbHM7IH0KKyAgICB1bnNpZ25lZCBudW1WYXJzKCkgY29uc3QgeyByZXR1cm4gbV9u
dW1WYXJzOyB9CiAKICAgICAvLyBKdW1wIFRhYmxlcwogCkBAIC0zOTYsOSArMzk2LDkgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2Vu
ZENvbHVtbiB7IFVJTlRfTUFYIH07CiAKLSAgICBpbnQgbV9udW1WYXJzIHsgMCB9OwotICAgIGlu
dCBtX251bUNhbGxlZUxvY2FscyB7IDAgfTsKLSAgICBpbnQgbV9udW1QYXJhbWV0ZXJzIHsgMCB9
OworICAgIHVuc2lnbmVkIG1fbnVtVmFycyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX251bUNhbGxl
ZUxvY2FscyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX251bVBhcmFtZXRlcnMgeyAwIH07CiAKICAg
ICBQYWNrZWRSZWZQdHI8U3RyaW5nSW1wbD4gbV9zb3VyY2VVUkxEaXJlY3RpdmU7CiAgICAgUGFj
a2VkUmVmUHRyPFN0cmluZ0ltcGw+IG1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yLmgKaW5kZXggNDlhYmJhYTFjNzNiNjUyNTBhYzVmZGU5NTIyMzE4MTA4OGM2
NTZkNy4uY2UzMzBkNmEyNTljYWViMDBmZDc0NjM2YTFkNTkwNGQ0NGVhMDUyOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yLmgKQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogICAgIEV2YWxDb250ZXh0
VHlwZSBldmFsQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+ZXZhbENv
bnRleHRUeXBlKCk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpOyB9CiAgICAgYm9v
bCBpc0NsYXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NsYXNzQ29u
dGV4dCgpOyB9Ci0gICAgaW50IG51bUNhbGxlZUxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsgfQotICAgIGludCBudW1WYXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPm1fbnVtVmFyczsgfQorICAgIHVuc2lnbmVkIG51bUNhbGxlZUxv
Y2FscygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsgfQor
ICAgIHVuc2lnbmVkIG51bVZhcnMoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+bV9udW1W
YXJzOyB9CiAgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7IH0KICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc1JlZ2lz
dGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpOyB9CiAgICAg
VmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9j
ay0+c2NvcGVSZWdpc3RlcigpOyB9CkBAIC03MSwxMSArNzEsMTEgQEAgcHVibGljOgogICAgIC8v
IFVwZGF0aW5nIFVubGlua2VkQ29kZUJsb2NrLgogICAgIHZvaWQgc2V0SGFzQ2hlY2twb2ludHMo
KSB7IG1fY29kZUJsb2NrLT5zZXRIYXNDaGVja3BvaW50cygpOyB9CiAgICAgdm9pZCBzZXRIYXNU
YWlsQ2FsbHMoKSB7IG1fY29kZUJsb2NrLT5zZXRIYXNUYWlsQ2FsbHMoKTsgfQotICAgIHZvaWQg
c2V0TnVtQ2FsbGVlTG9jYWxzKGludCBudW1DYWxsZWVMb2NhbHMpIHsgbV9jb2RlQmxvY2stPm1f
bnVtQ2FsbGVlTG9jYWxzID0gbnVtQ2FsbGVlTG9jYWxzOyB9Ci0gICAgdm9pZCBzZXROdW1WYXJz
KGludCBudW1WYXJzKSB7IG1fY29kZUJsb2NrLT5tX251bVZhcnMgPSBudW1WYXJzOyB9CisgICAg
dm9pZCBzZXROdW1DYWxsZWVMb2NhbHModW5zaWduZWQgbnVtQ2FsbGVlTG9jYWxzKSB7IG1fY29k
ZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscyA9IG51bUNhbGxlZUxvY2FsczsgfQorICAgIHZvaWQg
c2V0TnVtVmFycyh1bnNpZ25lZCBudW1WYXJzKSB7IG1fY29kZUJsb2NrLT5tX251bVZhcnMgPSBu
dW1WYXJzOyB9CiAgICAgdm9pZCBzZXRUaGlzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHRoaXNS
ZWdpc3RlcikgeyBtX2NvZGVCbG9jay0+c2V0VGhpc1JlZ2lzdGVyKHRoaXNSZWdpc3Rlcik7IH0K
ICAgICB2b2lkIHNldFNjb3BlUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHRoaXNSZWdpc3Rlcikg
eyBtX2NvZGVCbG9jay0+c2V0U2NvcGVSZWdpc3Rlcih0aGlzUmVnaXN0ZXIpOyB9Ci0gICAgdm9p
ZCBzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1ZSkgeyBtX2NvZGVCbG9jay0+c2V0TnVtUGFy
YW1ldGVycyhuZXdWYWx1ZSk7IH0KKyAgICB2b2lkIHNldE51bVBhcmFtZXRlcnModW5zaWduZWQg
bmV3VmFsdWUpIHsgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMobmV3VmFsdWUpOyB9CiAK
ICAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGUmIG1ldGFkYXRhKCkgeyByZXR1cm4gbV9jb2RlQmxv
Y2stPm1ldGFkYXRhKCk7IH0KICAgICB2b2lkIGFkZEV4cHJlc3Npb25JbmZvKHVuc2lnbmVkIGlu
c3RydWN0aW9uT2Zmc2V0LCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNl
dCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXgg
NDI2MDkzZjExNzY4MGI1MTdkN2NiODY0MTE3YzM0NjAwMDRmYjMzNC4uZjliMGZiZjNjZWMyYWJi
MDAxMzQ4ZjYwNGU5MTBkYTQ0OTFmMjQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI4Miw3ICsy
ODIsNyBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIGlm
IChtX2lzQXN5bmMpCiAgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oKnRoaXMsIG1f
Y29kZUJsb2NrLmdldCgpLCBtX3dyaXRlciwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdl
dCgpLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CiAKLSAgICBSRUxFQVNFX0FT
U0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxvY2stPm51bUNhbGxlZUxvY2Fscygp
KSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKG1fY29kZUJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKSA8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkpOwogICAgIG1fY29k
ZUJsb2NrLT5maW5hbGl6ZShtX3dyaXRlci5maW5hbGl6ZSgpKTsKICAgICBpZiAobV9leHByZXNz
aW9uVG9vRGVlcCkKICAgICAgICAgcmV0dXJuIFBhcnNlckVycm9yKFBhcnNlckVycm9yOjpPdXRP
Zk1lbW9yeSk7CkBAIC0zOTg3LDcgKzM5ODcsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZQog
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2V0SXNDb25zdCgpOyAvLyBUaGUgZnVuY3Rp
b24gbmFtZSBzY29wZSBuYW1lIGFjdHMgbGlrZSBhIGNvbnN0IHZhcmlhYmxlLgogICAgIHVuc2ln
bmVkIG51bVZhcnMgPSBtX2NvZGVCbG9jay0+bnVtVmFycygpOwogICAgIHB1c2hMZXhpY2FsU2Nv
cGVJbnRlcm5hbChuYW1lU2NvcGVFbnZpcm9ubWVudCwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9w
dGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBURFpSZXF1aXJl
bWVudDo6Tm90VW5kZXJURFosIFNjb3BlVHlwZTo6RnVuY3Rpb25OYW1lU2NvcGUsIFNjb3BlUmVn
aXN0ZXJUeXBlOjpWYXIpOwotICAgIEFTU0VSVF9VTlVTRUQobnVtVmFycywgbV9jb2RlQmxvY2st
Pm51bVZhcnMoKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KG51bVZhcnMgKyAxKSk7IC8vIFNob3VsZCBo
YXZlIG9ubHkgY3JlYXRlZCBvbmUgbmV3ICJ2YXIiIGZvciB0aGUgZnVuY3Rpb24gbmFtZSBzY29w
ZS4KKyAgICBBU1NFUlRfVU5VU0VEKG51bVZhcnMsIG1fY29kZUJsb2NrLT5udW1WYXJzKCkgPT0g
bnVtVmFycyArIDEpOyAvLyBTaG91bGQgaGF2ZSBvbmx5IGNyZWF0ZWQgb25lIG5ldyAidmFyIiBm
b3IgdGhlIGZ1bmN0aW9uIG5hbWUgc2NvcGUuCiAgICAgYm9vbCBzaG91bGRUcmVhdEFzTGV4aWNh
bFZhcmlhYmxlID0gZWNtYU1vZGUoKS5pc1N0cmljdCgpOwogICAgIFZhcmlhYmxlIGZ1bmN0aW9u
VmFyID0gdmFyaWFibGVGb3JMb2NhbEVudHJ5KHByb3BlcnR5LCBtX2xleGljYWxTY29wZVN0YWNr
Lmxhc3QoKS5tX3N5bWJvbFRhYmxlLT5nZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBwcm9wZXJ0eS5p
bXBsKCkpLCBtX2xleGljYWxTY29wZVN0YWNrLmxhc3QoKS5tX3N5bWJvbFRhYmxlQ29uc3RhbnRJ
bmRleCwgc2hvdWxkVHJlYXRBc0xleGljYWxWYXJpYWJsZSk7CiAgICAgZW1pdFB1dFRvU2NvcGUo
bV9sZXhpY2FsU2NvcGVTdGFjay5sYXN0KCkubV9zY29wZSwgZnVuY3Rpb25WYXIsIGNhbGxlZSwg
VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3JCYXNlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgKaW5kZXggMWJkOTI0ZmNiMDAxODc4NGE2
Zjg1OGJlZjFiYjNlZmU2YzhmYjAwMS4uZWJmMGE4ZGMzMzQzODUxMmU2ZTcyOGM5ZGVlMTliODI2
ZTBjNzA2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgKQEAgLTE2MSw5ICsx
NjEsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzPgogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3JCYXNlPFRyYWl0cz46Om5ld1JlZ2lzdGVyKCkKIHsKICAgICBtX2NhbGxlZUxvY2Fs
cy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jYWxsZWVMb2NhbHMuc2l6ZSgpKSk7
Ci0gICAgaW50IG51bUNhbGxlZUxvY2FscyA9IHN0ZDo6bWF4PGludD4obV9jb2RlQmxvY2stPm51
bUNhbGxlZUxvY2FscygpLCBtX2NhbGxlZUxvY2Fscy5zaXplKCkpOworICAgIHVpbnQ2NF90IG51
bUNhbGxlZUxvY2FscyA9IHN0ZDo6bWF4PHVpbnQ2NF90PihtX2NvZGVCbG9jay0+bnVtQ2FsbGVl
TG9jYWxzKCksIG1fY2FsbGVlTG9jYWxzLnNpemUoKSk7CiAgICAgbnVtQ2FsbGVlTG9jYWxzID0g
V1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG51bUNh
bGxlZUxvY2Fscyk7CiAgICAgbV9jb2RlQmxvY2stPnNldE51bUNhbGxlZUxvY2FscyhudW1DYWxs
ZWVMb2NhbHMpOworICAgIFJFTEVBU0VfQVNTRVJUKG51bUNhbGxlZUxvY2FscyA9PSBtX2NvZGVC
bG9jay0+bnVtQ2FsbGVlTG9jYWxzKCkpOwogICAgIHJldHVybiAmbV9jYWxsZWVMb2NhbHMubGFz
dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCmluZGV4IDQwOGRjMDhjMTQzMDgzZjgxODQ5MjdiMmE4ZTU5NTJkN2FiMDhkZmEuLmJh
ZWFjNmNiNzA1YzBkOWU0MWQ0Zjg5MjE2N2FmOWMzMmEzZmMyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xNDk0LDcgKzE0OTQs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQgYwogCiAgICAgICAgICAgICAvLyBTb21lIGNvZGUg
bWF5IHN0YXRpY2FsbHkgdXNlIHRoZSBhcmd1bWVudCBjb3VudCBmcm9tIHRoZSBJbmxpbmVDYWxs
RnJhbWUsIHNvIGl0IHdvdWxkIGJlIGludmFsaWQgdG8gbG9vcCBiYWNrIGlmIGl0IGRvZXMgbm90
IG1hdGNoLgogICAgICAgICAgICAgLy8gV2UgImNvbnRpbnVlIiBpbnN0ZWFkIG9mIHJldHVybmlu
ZyBmYWxzZSBpbiBjYXNlIGFub3RoZXIgc3RhY2sgZW50cnkgZnVydGhlciBvbiB0aGUgc3RhY2sg
aGFzIHRoZSByaWdodCBudW1iZXIgb2YgYXJndW1lbnRzLgotICAgICAgICAgICAgaWYgKGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IHN0YXRpY19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpCisgICAgICAgICAgICBpZiAoYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgIT0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIC8vIElmIHRoZSB0YXJnZXQgSW5s
aW5lQ2FsbEZyYW1lIGlzIFZhcmFyZ3MsIHdlIGRvIG5vdCBrbm93IGhvdyBtYW55IGFyZ3VtZW50
cyBhcmUgYWN0dWFsbHkgZmlsbGVkIGJ5IExvYWRWYXJhcmdzLiBWYXJhcmdzIElubGluZUNhbGxG
cmFtZSdzCiAgICAgICAgICAgICAvLyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyBpcyBtYXhp
bXVtIG51bWJlciBvZiBwb3RlbnRpYWxseSBmaWxsZWQgYXJndW1lbnRzIGJ5IHhrTG9hZFZhcmFy
Z3MuIFdlICJjb250aW51ZSIgdG8gdGhlIHVwcGVyIGZyYW1lIHdoaWNoIG1heSBiZQpAQCAtMTUw
NCw3ICsxNTA0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUmVjdXJzaXZlVGFpbENh
bGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIENhbGxWYXJpYW50IGMKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIC8vIFdlIGFyZSBpbiB0aGUgbWFjaGluZSBjb2RlIGVudHJ5IChpLmUuIHRo
ZSBvcmlnaW5hbCBjYWxsZXIpLgogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBtb3JlIGFyZ3Vt
ZW50cyB0aGFuIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyB0byB0aGUgZnVuY3Rpb24sIGl0IGlz
IG5vdCBjbGVhciB3aGVyZSB3ZSBjb3VsZCBwdXQgdGhlbSBvbiB0aGUgc3RhY2suCi0gICAgICAg
ICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPiBtX2NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpKQorICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykgPiBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC0xNTMwLDggKzE1MzAs
OCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQgYwogICAgICAgICAvLyBXZSBtdXN0IHNldCB0aGUg
YXJndW1lbnRzIHRvIHRoZSByaWdodCB2YWx1ZXMKICAgICAgICAgaWYgKCFzdGFja0VudHJ5LT5t
X2lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIGFkZFRvR3JhcGgoU2V0QXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIE9wSW5mbyhhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotICAg
ICAgICBpbnQgYXJnSW5kZXggPSAwOwotICAgICAgICBmb3IgKDsgYXJnSW5kZXggPCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpczsgKythcmdJbmRleCkgeworICAgICAgICB1bnNpZ25lZCBhcmdJ
bmRleCA9IDA7CisgICAgICAgIGZvciAoOyBhcmdJbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7ICsrYXJnSW5kZXgpIHsKICAgICAgICAgICAg
IE5vZGUqIHZhbHVlID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhp
cyhhcmdJbmRleCwgcmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgIHNldERpcmVjdChzdGFj
a0VudHJ5LT5yZW1hcE9wZXJhbmQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdU
aGlzKGFyZ0luZGV4KSksIHZhbHVlLCBOb3JtYWxTZXQpOwogICAgICAgICB9CkBAIC0xNTQxLDcg
KzE1NDEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChO
b2RlKiBjYWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQgYwogCiAgICAgICAgIC8vIFdlIG11c3Qg
cmVwZWF0IHRoZSB3b3JrIG9mIG9wX2VudGVyIGhlcmUgYXMgd2Ugd2lsbCBqdW1wIHJpZ2h0IGFm
dGVyIGl0LgogICAgICAgICAvLyBXZSBqdW1wIHJpZ2h0IGFmdGVyIGl0IGFuZCBub3QgYmVmb3Jl
IGl0LCBiZWNhdXNlIG9mIHNvbWUgaW52YXJpYW50IHNheWluZyB0aGF0IGEgQ0ZHIHJvb3QgY2Fu
bm90IGhhdmUgcHJlZGVjZXNzb3JzIGluIHRoZSBJUi4KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBzdGFja0VudHJ5LT5tX2NvZGVCbG9jay0+bnVtVmFycygpOyArK2kpCisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdGFja0VudHJ5LT5tX2NvZGVCbG9jay0+bnVtVmFycygp
OyArK2kpCiAgICAgICAgICAgICBzZXREaXJlY3Qoc3RhY2tFbnRyeS0+cmVtYXBPcGVyYW5kKHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKSwgdW5kZWZpbmVkLCBOb3JtYWxTZXQpOwogCiAgICAg
ICAgIC8vIFdlIHdhbnQgdG8gZW1pdCB0aGUgU2V0TG9jYWxzIHdpdGggYW4gZXhpdCBvcmlnaW4g
dGhhdCBwb2ludHMgdG8gdGhlIHBsYWNlIHdlIGFyZSBqdW1waW5nIHRvLgpAQCAtMTU5Nyw3ICsx
NTk3LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFu
dCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHUKICAgICB9CiAKICAgICBpZiAoIU9wdGlv
bnM6OnVzZUFyaXR5Rml4dXBJbmxpbmluZygpKSB7Ci0gICAgICAgIGlmIChjb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSA+IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CisgICAgICAgIGlm
IChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpIHsKICAgICAgICAgICAgIFZFUkJPU0VfTE9HKCIgICAg
RmFpbGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNoLlxuIik7CiAgICAgICAgICAgICByZXR1
cm4gVUlOVF9NQVg7CiAgICAgICAgIH0KQEAgLTU0MTgsNyArNTQxOCw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfZW50
ZXI6IHsKICAgICAgICAgICAgIE5vZGUqIHVuZGVmaW5lZCA9IGFkZFRvR3JhcGgoSlNDb25zdGFu
dCwgT3BJbmZvKG1fY29uc3RhbnRVbmRlZmluZWQpKTsKICAgICAgICAgICAgIC8vIEluaXRpYWxp
emUgYWxsIGxvY2FscyB0byB1bmRlZmluZWQuCi0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5udW1WYXJzKCk7ICsraSkKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVC
bG9jay0+bnVtVmFycygpOyArK2kpCiAgICAgICAgICAgICAgICAgc2V0KHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKGkpLCB1bmRlZmluZWQsIEltbWVkaWF0ZU5ha2VkU2V0KTsKIAogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfZW50ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAppbmRleCA3Mjdk
NTgyNzY3NDE3ZGU2YTk3Mzg5YmRmMzM1ZDRhYzEzZmQ1YzljLi44ZWFlODFmNDk1YWRkODhkM2Zh
NzNlZGE4MmFlNWRiNDZkNzMyNGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcApAQCAtOTQsNyAr
OTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gTm9kZU9yaWdpbihD
b2RlT3JpZ2luKEJ5dGVjb2RlSW5kZXgoMCkpLCBDb2RlT3JpZ2luKEJ5dGVjb2RlSW5kZXgoMCkp
LCBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8Tm9kZSo+IGxvY2FscyhiYXNlbGlu
ZS0+bnVtQ2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2Fs
IDwgYmFzZWxpbmUtPm51bUNhbGxlZUxvY2FscygpOyArK2xvY2FsKSB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5udW1DYWxsZWVMb2NhbHMoKTsg
Kytsb2NhbCkgewogICAgICAgICAgICAgTm9kZSogcHJldmlvdXNIZWFkID0gdGFyZ2V0LT52YXJp
YWJsZXNBdEhlYWQubG9jYWwobG9jYWwpOwogICAgICAgICAgICAgaWYgKCFwcmV2aW91c0hlYWQp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgog
ICAgICAgICBvcmlnaW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47CiAgICAgICAgIAogICAgICAg
ICBBcmd1bWVudHNWZWN0b3IgbmV3QXJndW1lbnRzID0gbV9ncmFwaC5tX3Jvb3RUb0FyZ3VtZW50
cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKLSAgICAgICAgZm9yIChpbnQgYXJndW1l
bnQgPSAwOyBhcmd1bWVudCA8IGJhc2VsaW5lLT5udW1QYXJhbWV0ZXJzKCk7ICsrYXJndW1lbnQp
IHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxp
bmUtPm51bVBhcmFtZXRlcnMoKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xk
Tm9kZSA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAg
ICAgICAgIGlmICghb2xkTm9kZSkgewogICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0
eSwgYWx3YXlzIGhhdmUgYSBTZXRBcmd1bWVudERlZmluaXRlbHkgZXZlbiBpZiBpdCdzIG5vdCBu
ZWVkZWQuCkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbmV3QXJndW1l
bnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBsb2Nh
bCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm51bUNhbGxlZUxvY2FscygpOyArK2xvY2FsKSB7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5udW1DYWxs
ZWVMb2NhbHMoKTsgKytsb2NhbCkgewogICAgICAgICAgICAgTm9kZSogcHJldmlvdXNIZWFkID0g
dGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQubG9jYWwobG9jYWwpOwogICAgICAgICAgICAgaWYgKCFw
cmV2aW91c0hlYWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGIyYmY0ZDBiMzI3Y2Jh
YmY0YmE3MGM2NzgxNmMxMzlhNTFmODkyOTAuLjkwN2E0YzJhYWY0NWYwYjRlODE3ZDIyZGQzMjQ1
M2QzMmYxOGJhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCkBAIC0yMDc5LDcgKzIwNzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
aGVja0FyZ3VtZW50VHlwZXMoKQogICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2lu
KEJ5dGVjb2RlSW5kZXgoMCkpLCBDb2RlT3JpZ2luKEJ5dGVjb2RlSW5kZXgoMCkpLCB0cnVlKTsK
IAogICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1faml0LmdyYXBoKCkubV9yb290VG9Bcmd1bWVudHMu
ZmluZChtX2ppdC5ncmFwaCgpLmJsb2NrKDApKS0+dmFsdWU7Ci0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpIHsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9qaXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsg
KytpKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAgIGlmICgh
bm9kZSkgewogICAgICAgICAgICAgLy8gVGhlIGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRvbid0IGRv
IGFueSBjaGVja3MgZm9yIHN1Y2ggYXJndW1lbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDYyMTBiOTYwMWI2MGI4YzMxNTllODI1NWRk
MDI5YjMxNzAyYzYyNmUuLjIwNzg2OTFiMTA0YWZmNjIwNDFiMTMzNjVmODFkOGEzZDFiZDFlNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAg
LTM2Miw3ICszNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3BsYW4u
bW9kZSgpID09IEZUTEZvck9TUkVudHJ5TW9kZSkgewogICAgICAgICAgICAgICAgIGF1dG8qIGpp
dENvZGUgPSBtX2Z0bFN0YXRlLmppdENvZGUtPmZ0bEZvck9TUkVudHJ5KCk7CiAgICAgICAgICAg
ICAgICAgRml4ZWRWZWN0b3I8REZHOjpGbHVzaEZvcm1hdD4gYXJndW1lbnRGbHVzaEZvcm1hdHMo
Y29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpCisgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJz
KCk7ICsraSkKICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGbHVzaEZvcm1hdHNbaV0gPSBt
X2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzWzBdW2ldOwogICAgICAgICAgICAgICAgIGppdENvZGUt
PnNldEFyZ3VtZW50Rmx1c2hGb3JtYXRzKFdURk1vdmUoYXJndW1lbnRGbHVzaEZvcm1hdHMpKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkVudHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50
cnkuY3BwCmluZGV4IGRmMDg1MDU0MDYzNTUzODRkMTRjMTJiMjczMzBhM2I1ODM5ODA1NjYuLjA0
MWFjZGZmNzQxOTAzODEyNjYzODMxZTk5ZWE1ZmY0ODQ4MGNjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCkBAIC0xMTMsOCArMTEzLDcgQEAgdm9pZCogcHJl
cGFyZU9TUkVudHJ5KAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KICAgICAKLSAgICBSRUxFQVNFX0FTU0VSVCgKLSAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pih2
YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSkgPT0gYmFzZWxpbmUtPm51bUNhbGxlZUxvY2FscygpKTsK
KyAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNlbGluZS0+
bnVtQ2FsbGVlTG9jYWxzKCkpOwogICAgIAogICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0g
c3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPigKICAgICAgICAgZW50cnlDb2RlLT5lbnRyeUJ1
ZmZlcigpLT5kYXRhQnVmZmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZUNsb3N1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWVDbG9zdXJlLmgKaW5kZXggYTYyNWNhZjliNjI4OWJlYzgyNzdi
MjZkMTE5NjNiMDc0NDI1MzY4NS4uYWU3YTY4MGU1ZDRjNzU0OTMyNGYwODQwNzAzYzhmZDc1ZmZj
ODk0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxG
cmFtZUNsb3N1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lQ2xvc3VyZS5oCkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBDYWxsRnJhbWVDbG9zdXJl
IHsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBWTSog
dm07CiAgICAgSlNTY29wZSogc2NvcGU7Ci0gICAgaW50IHBhcmFtZXRlckNvdW50SW5jbHVkaW5n
VGhpczsKKyAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogICAgIAogICAgIHZvaWQgc2V0VGhpcyhKU1Zh
bHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1Byb3RvQ2FsbEZyYW1lSW5saW5lcy5oCmluZGV4IGU3MzU1NmUzNTVmNGQ3ZTA5ODlkMmI5
ZGUxOGYwZDZjYWQ3ODcwYWYuLjkyZTNmZjY0ODBlMjBmNjM5OWEwZGEzNTk0YTQ1YjYyYjkwODRh
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0Nh
bGxGcmFtZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UHJvdG9DYWxsRnJhbWVJbmxpbmVzLmgKQEAgLTM3LDcgKzM3LDcgQEAgaW5saW5lIHZvaWQgUHJv
dG9DYWxsRnJhbWU6OmluaXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmoKICAgICB0aGlzLT5zZXRDYWxsZWUoY2FsbGVlKTsKICAgICB0aGlzLT5zZXRHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICB0aGlzLT5zZXRBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyhhcmdDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGlmIChjb2RlQmxvY2sgJiYgYXJn
Q291bnRJbmNsdWRpbmdUaGlzIDwgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCisgICAgaWYg
KGNvZGVCbG9jayAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXJnQ291bnRJbmNsdWRpbmdUaGlz
KSA8IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKQogICAgICAgICB0aGlzLT5oYXNBcml0eU1p
c21hdGNoID0gdHJ1ZTsKICAgICBlbHNlCiAgICAgICAgIHRoaXMtPmhhc0FyaXR5TWlzbWF0Y2gg
PSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA2NmFkODRiMGQ2MjBlMTYx
NDA5ODAzNmUyYTQyZmQ0YmFlMDgxM2VhLi43NmQxYTUxN2Q5Yzg4ZDIwOTcwMjVmODQ0NWY2OWM5
ZWQ2M2NmZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC03NjksNyArNzY5LDcg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCBl
ZmZvcnQpCiAgICAgaWYgKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkg
ewogICAgICAgICBBU1NFUlQoIW1fYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGlmIChzaG91bGRF
bWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsgYXJn
dW1lbnQgPCBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBtX2NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICAgICAgLy8gSWYg
dGhpcyBpcyBhIGNvbnN0cnVjdG9yLCB0aGVuIHdlIHdhbnQgdG8gcHV0IGluIGEgZHVtbXkgcHJv
ZmlsaW5nIHNpdGUgKHRvCiAgICAgICAgICAgICAgICAgLy8ga2VlcCB0aGluZ3MgY29uc2lzdGVu
dCkgYnV0IHdlIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gcmVjb3JkIHRoZSBkdW1teSB2YWx1ZS4K
ICAgICAgICAgICAgICAgICBpZiAobV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSAmJiAhYXJn
dW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCmluZGV4IGM3NmIxNjEwZjk5N2E0ODJjNDBjZTc3ZTdjMjhhNjYzY2JlMzhkMmEuLjg0ZTJk
YTVmN2FiNjhhNjI2MjQ4NWNiOGNjNDNmODA1NzE0OGM0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC01Nyw3ICs1Nyw3IEBAIEFM
V0FZU19JTkxJTkUgaW50IG51bWJlck9mRXh0cmFTbG90cyhpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpCiAKIEFMV0FZU19JTkxJTkUgaW50IG51bWJlck9mU3RhY2tQYWRkaW5nU2xvdHMo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKIHsK
LSAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPj0gY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpCisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykgPj0gY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCiAgICAgICAgIHJldHVy
biAwOwogICAgIGludCBhbGlnbmVkRnJhbWVTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
KHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
Q2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpOwogICAgIGludCBhbGlnbmVkRnJhbWVT
aXplRm9yUGFyYW1ldGVycyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVu
dFJlZ2lzdGVycygpLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIENhbGxGcmFtZTo6aGVh
ZGVyU2l6ZUluUmVnaXN0ZXJzKTsKQEAgLTY2LDcgKzY2LDcgQEAgQUxXQVlTX0lOTElORSBpbnQg
bnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgaW50IGFyZ3Vt
ZW50Q28KIAogQUxXQVlTX0lOTElORSBpbnQgbnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90c1dpdGhF
eHRyYVNsb3RzKENvZGVCbG9jayogY29kZUJsb2NrLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpCiB7Ci0gICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID49IGNvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpKQorICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpID49IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbnVtYmVyT2ZTdGFja1BhZGRpbmdTbG90cyhjb2Rl
QmxvY2ssIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSArIG51bWJlck9mRXh0cmFTbG90cyhh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL1ZNSW5zcGVjdG9yLmNwcAppbmRleCAxZDA5Y2E0MzJlZjNiODNjODJmZjdjODgzYWQ1ODUy
ZjdmZmZhY2M2Li5iYmJjMjM2ZDIxN2ExNTBkNWE4NmVkZjgwNGY1YjdmMzk2MjA4ZDllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKQEAgLTQ2Nyw3ICs0
NjcsNyBAQCB2b2lkIFZNSW5zcGVjdG9yOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtZSogY2FsbEZy
YW1lKQogICAgICAgICBlbmQgPSBpdDsgLy8gU3RvcCB0aGUgZHVtcAogICAgIH0gZWxzZSB7CiAg
ICAgICAgIGVuZCA9IGJpdHdpc2VfY2FzdDxjb25zdCBSZWdpc3Rlcio+KG5leHRDYWxsRnJhbWUp
OwotICAgICAgICBSRUxFQVNFX0FTU0VSVChpdCAtIGVuZCA8IGNvZGVCbG9jay0+bnVtQ2FsbGVl
TG9jYWxzKCkgLSBjb2RlQmxvY2stPm51bVZhcnMoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihpdCAtIGVuZCkgPCBjb2RlQmxvY2stPm51bUNhbGxlZUxv
Y2FscygpIC0gY29kZUJsb2NrLT5udW1WYXJzKCkpOwogICAgIH0KIAogICAgIGlmIChpdCAhPSBl
bmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlv
bkNvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29k
ZUJsb2NrLmgKaW5kZXggN2Q2N2NlMTljMzU3YzZiMzlkMzlkMTY0YzA1MDAxMGRhYjMzNTI2Zi4u
ZWE3NWZlMmY2YjBmOWEzZjE0ZTc5M2VkMTEyNzhlZmQwZTA5YWM3MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrLmgKQEAgLTY1LDE1
ICs2NSwxNSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleCgp
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25JbmRleDsgfQotICAgIGludCBudW1WYXJzKCkgY29u
c3QgeyByZXR1cm4gbV9udW1WYXJzOyB9Ci0gICAgaW50IG51bUNhbGxlZUxvY2FscygpIGNvbnN0
IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxzOyB9CisgICAgdW5zaWduZWQgbnVtVmFycygpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtVmFyczsgfQorICAgIHVuc2lnbmVkIG51bUNhbGxlZUxvY2Fscygp
IGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxzOyB9CiAgICAgdWludDMyX3QgbnVtQXJn
dW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1Bcmd1bWVudHM7IH0KICAgICBjb25zdCBWZWN0
b3I8VHlwZT4mIGNvbnN0YW50VHlwZXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50VHlwZXM7
IH0KICAgICBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBjb25zdGFudHMoKSBjb25zdCB7IHJldHVy
biBtX2NvbnN0YW50czsgfQogICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
bnMoKSBjb25zdCB7IHJldHVybiAqbV9pbnN0cnVjdGlvbnM7IH0KIAotICAgIHZvaWQgc2V0TnVt
VmFycyhpbnQgbnVtVmFycykgeyBtX251bVZhcnMgPSBudW1WYXJzOyB9Ci0gICAgdm9pZCBzZXRO
dW1DYWxsZWVMb2NhbHMoaW50IG51bUNhbGxlZUxvY2FscykgeyBtX251bUNhbGxlZUxvY2FscyA9
IG51bUNhbGxlZUxvY2FsczsgfQorICAgIHZvaWQgc2V0TnVtVmFycyh1bnNpZ25lZCBudW1WYXJz
KSB7IG1fbnVtVmFycyA9IG51bVZhcnM7IH0KKyAgICB2b2lkIHNldE51bUNhbGxlZUxvY2Fscyh1
bnNpZ25lZCBudW1DYWxsZWVMb2NhbHMpIHsgbV9udW1DYWxsZWVMb2NhbHMgPSBudW1DYWxsZWVM
b2NhbHM7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdWludDY0X3QgZ2V0Q29uc3RhbnQoVmlydHVh
bFJlZ2lzdGVyIHJlZykgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHNbcmVnLnRvQ29uc3RhbnRJ
bmRleCgpXTsgfQogICAgIEFMV0FZU19JTkxJTkUgVHlwZSBnZXRDb25zdGFudFR5cGUoVmlydHVh
bFJlZ2lzdGVyIHJlZykgY29uc3QKQEAgLTEyNiw5ICsxMjYsOSBAQCBwcml2YXRlOgogICAgIHVp
bnQzMl90IG1fZnVuY3Rpb25JbmRleDsKIAogICAgIC8vIFVzZWQgZm9yIHRoZSBudW1iZXIgb2Yg
V2ViQXNzZW1ibHkgbG9jYWxzLCBhcyBpbiBodHRwczovL3dlYmFzc2VtYmx5LmdpdGh1Yi5pby9z
cGVjL2NvcmUvc3ludGF4L21vZHVsZXMuaHRtbCNzeW50YXgtbG9jYWwKLSAgICBpbnQgbV9udW1W
YXJzIHsgMCB9OworICAgIHVuc2lnbmVkIG1fbnVtVmFycyB7IDAgfTsKICAgICAvLyBOdW1iZXIg
b2YgVmlydHVhbFJlZ2lzdGVyLiBUaGUgbmFtaW5nIGlzIHVuZm9ydHVuYXRlLCBidXQgaGFzIHRv
IG1hdGNoIFVubGlua2VkQ29kZUJsb2NrCi0gICAgaW50IG1fbnVtQ2FsbGVlTG9jYWxzIHsgMCB9
OworICAgIHVuc2lnbmVkIG1fbnVtQ2FsbGVlTG9jYWxzIHsgMCB9OwogICAgIHVpbnQzMl90IG1f
bnVtQXJndW1lbnRzIHsgMCB9OwogICAgIFZlY3RvcjxUeXBlPiBtX2NvbnN0YW50VHlwZXM7CiAg
ICAgVmVjdG9yPHVpbnQ2NF90PiBtX2NvbnN0YW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCmluZGV4IDA1NGUzMWVkNmJhNGEyODll
OGVjYzVlNmQ2NzE4YWVlNjc2MTA1ZTguLmY3MDg5M2I3MTVmZDBjYjk2MDgzOWU4ZWFiN2EyNmVj
ZDZjYzI4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTElu
dEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50
R2VuZXJhdG9yLmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIHB1YmxpYzoKICAgICBFeHByZXNzaW9u
VHlwZSBwdXNoKE5vQ29uc2lzdGVuY3lDaGVja1RhZykKICAgICB7CiAgICAgICAgIG1fbWF4U3Rh
Y2tTaXplID0gc3RkOjptYXgobV9tYXhTdGFja1NpemUsICsrbV9zdGFja1NpemUpOwotICAgICAg
ICByZXR1cm4gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9zdGFja1NpemUgLSAxKTsKKyAgICAg
ICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKChtX3N0YWNrU2l6ZSAtIDEpLnVuc2Fm
ZUdldCgpKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uVHlwZSBwdXNoKCkKQEAgLTMxNSw3ICsz
MTUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgc3RhcnRPZmZzZXQgPSB0YXJnZXQuc3Rh
Y2tTaXplKCkgKyAxOwogICAgICAgICBrZWVwID0gdGFyZ2V0LmJyYW5jaFRhcmdldEFyaXR5KCk7
Ci0gICAgICAgIGRyb3AgPSBtX3N0YWNrU2l6ZSAtIHRhcmdldC5zdGFja1NpemUoKSAtIHRhcmdl
dC5icmFuY2hUYXJnZXRBcml0eSgpOworICAgICAgICBkcm9wID0gKG1fc3RhY2tTaXplIC0gdGFy
Z2V0LnN0YWNrU2l6ZSgpIC0gdGFyZ2V0LmJyYW5jaFRhcmdldEFyaXR5KCkpLnVuc2FmZUdldCgp
OwogICAgIH0KIAogICAgIHZvaWQgZHJvcEtlZXAoU3RhY2smIHZhbHVlcywgY29uc3QgQ29udHJv
bFR5cGUmIHRhcmdldCwgYm9vbCBkcm9wVmFsdWVzKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHByaXZh
dGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIHdhbGtFeHByZXNz
aW9uU3RhY2soU3RhY2smIGV4cHJlc3Npb25TdGFjaywgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
ICAgICB7Ci0gICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2soZXhwcmVzc2lvblN0YWNrLCBtX3N0
YWNrU2l6ZSwgZnVuY3Rvcik7CisgICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2soZXhwcmVzc2lv
blN0YWNrLCBtX3N0YWNrU2l6ZS51bnNhZmVHZXQoKSwgZnVuY3Rvcik7CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KQEAgLTM3Myw3ICszNzMsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgd2Fsa0V4cHJlc3Npb25TdGFjayht
X3BhcnNlci0+ZXhwcmVzc2lvblN0YWNrKCksIFsmXShWaXJ0dWFsUmVnaXN0ZXIgZXhwcmVzc2lv
biwgVmlydHVhbFJlZ2lzdGVyIHNsb3QpIHsKLSAgICAgICAgICAgIEFTU0VSVChleHByZXNzaW9u
ID09IHNsb3QgfHwgZXhwcmVzc2lvbi5pc0NvbnN0YW50KCkgfHwgZXhwcmVzc2lvbi5pc0FyZ3Vt
ZW50KCkgfHwgZXhwcmVzc2lvbi50b0xvY2FsKCkgPCBtX2NvZGVCbG9jay0+bV9udW1WYXJzKTsK
KyAgICAgICAgICAgIEFTU0VSVChleHByZXNzaW9uID09IHNsb3QgfHwgZXhwcmVzc2lvbi5pc0Nv
bnN0YW50KCkgfHwgZXhwcmVzc2lvbi5pc0FyZ3VtZW50KCkgfHwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGV4cHJlc3Npb24udG9Mb2NhbCgpKSA8IG1fY29kZUJsb2NrLT5tX251bVZhcnMpOwogICAg
ICAgICB9KTsKICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogICAgIH0KQEAgLTM4NSw3ICszODUs
NyBAQCBwcml2YXRlOgogCiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgd2Fs
a0V4cHJlc3Npb25TdGFjayhleHByZXNzaW9uU3RhY2ssIFsmXShUeXBlZEV4cHJlc3Npb24mIGV4
cHJlc3Npb24sIFZpcnR1YWxSZWdpc3RlciBzbG90KSB7Ci0gICAgICAgICAgICBBU1NFUlQoZXhw
cmVzc2lvbi52YWx1ZSgpID09IHNsb3QgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQ29uc3RhbnQo
KSB8fCBleHByZXNzaW9uLnZhbHVlKCkuaXNBcmd1bWVudCgpIHx8IGV4cHJlc3Npb24udmFsdWUo
KS50b0xvY2FsKCkgPCBtX2NvZGVCbG9jay0+bV9udW1WYXJzKTsKKyAgICAgICAgICAgIEFTU0VS
VChleHByZXNzaW9uLnZhbHVlKCkgPT0gc2xvdCB8fCBleHByZXNzaW9uLnZhbHVlKCkuaXNDb25z
dGFudCgpIHx8IGV4cHJlc3Npb24udmFsdWUoKS5pc0FyZ3VtZW50KCkgfHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGV4cHJlc3Npb24udmFsdWUoKS50b0xvY2FsKCkpIDwgbV9jb2RlQmxvY2stPm1f
bnVtVmFycyk7CiAgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbi52YWx1ZSgpID09IHNsb3QpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCBz
bG90LCBleHByZXNzaW9uKTsKQEAgLTQwMSw3ICs0MDEsNyBAQCBwcml2YXRlOgogICAgICAgICBt
X3N0YWNrU2l6ZSAtPSBuZXdTdGFjay5zaXplKCk7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3ko
KTsKICAgICAgICAgd2Fsa0V4cHJlc3Npb25TdGFjayhlbmNsb3NpbmdTdGFjaywgWyZdKFR5cGVk
RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgVmlydHVhbFJlZ2lzdGVyIHNsb3QpIHsKLSAgICAgICAg
ICAgIEFTU0VSVChleHByZXNzaW9uLnZhbHVlKCkgPT0gc2xvdCB8fCBleHByZXNzaW9uLnZhbHVl
KCkuaXNDb25zdGFudCgpIHx8IGV4cHJlc3Npb24udmFsdWUoKS5pc0FyZ3VtZW50KCkgfHwgZXhw
cmVzc2lvbi52YWx1ZSgpLnRvTG9jYWwoKSA8IG1fY29kZUJsb2NrLT5tX251bVZhcnMpOworICAg
ICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24udmFsdWUoKSA9PSBzbG90IHx8IGV4cHJlc3Npb24u
dmFsdWUoKS5pc0NvbnN0YW50KCkgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQXJndW1lbnQoKSB8
fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZXhwcmVzc2lvbi52YWx1ZSgpLnRvTG9jYWwoKSkgPCBt
X2NvZGVCbG9jay0+bV9udW1WYXJzKTsKICAgICAgICAgICAgIGlmIChleHByZXNzaW9uLnZhbHVl
KCkgPT0gc2xvdCB8fCBleHByZXNzaW9uLnZhbHVlKCkuaXNDb25zdGFudCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgc2xvdCwgZXhw
cmVzc2lvbik7CkBAIC00MzIsOCArNDMyLDggQEAgcHJpdmF0ZToKICAgICBSZXN1bHRMaXN0IG1f
dW5pdGlhbGl6ZWRMb2NhbHM7CiAgICAgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwgVmlydHVhbFJl
Z2lzdGVyLCBXVEY6OkludEhhc2g8RW5jb2RlZEpTVmFsdWU+LCBDb25zdGFudE1hcEhhc2hUcmFp
dHM+IG1fY29uc3RhbnRNYXA7CiAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3RlciwgMj4gbV9yZXN1
bHRzOwotICAgIHVuc2lnbmVkIG1fc3RhY2tTaXplIHsgMCB9OwotICAgIHVuc2lnbmVkIG1fbWF4
U3RhY2tTaXplIHsgMCB9OworICAgIENoZWNrZWQ8dW5zaWduZWQ+IG1fc3RhY2tTaXplIHsgMCB9
OworICAgIENoZWNrZWQ8dW5zaWduZWQ+IG1fbWF4U3RhY2tTaXplIHsgMCB9OwogfTsKIAogRXhw
ZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiwgU3RyaW5nPiBwYXJzZUFu
ZENvbXBpbGVCeXRlY29kZShjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVu
Y3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBNb2R1bGVJbmZv
cm1hdGlvbiYgaW5mbywgdWludDMyX3QgZnVuY3Rpb25JbmRleCkKQEAgLTQ4Miw3ICs0ODIsOSBA
QCBMTEludEdlbmVyYXRvcjo6TExJbnRHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24m
IGluZm8sIHVuc2lnbmVkIGZ1bmN0aW9uSQogc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29kZUJs
b2NrPiBMTEludEdlbmVyYXRvcjo6ZmluYWxpemUoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1f
Y29kZUJsb2NrKTsKLSAgICBtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMgPSBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbV9tYXhTdGFja1Np
emUpOworICAgIHVpbnQ2NF90IG51bUNhbGxlZUxvY2FscyA9IFdURjo6cm91bmRVcFRvTXVsdGlw
bGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9t
YXhTdGFja1NpemUudW5zYWZlR2V0KCkpKTsKKyAgICBtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVM
b2NhbHMgPSBudW1DYWxsZWVMb2NhbHM7CisgICAgUkVMRUFTRV9BU1NFUlQobnVtQ2FsbGVlTG9j
YWxzID09IG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fscyk7CiAKICAgICBhdXRvJiB0aHJl
YWRTcGVjaWZpYyA9IHRocmVhZFNwZWNpZmljQnVmZmVyKCk7CiAgICAgQnVmZmVyIHVzZWRCdWZm
ZXI7CkBAIC01NzEsNyArNTczLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0
aW9uRm9yQ2FsbGVyKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEkKICAgICAvLyBG
SVhNRTogd2UgYXJlIGFsbG9jYXRpbmcgdGhlIGV4dHJhIHNwYWNlIGZvciB0aGUgYXJndW1lbnQv
cmV0dXJuIGNvdW50IGluIG9yZGVyIHRvIGF2b2lkIGludGVyZmVyZW5jZSwgYnV0IHdlIGNvdWxk
IGRvIGJldHRlcgogICAgIC8vIE5PVEU6IFdlIGluY3JlYXNlIGFyZyBjb3VudCBieSAxIGZvciB0
aGUgY2FzZSBvZiBpbmRpcmVjdCBjYWxscwogICAgIG1fc3RhY2tTaXplICs9IHN0ZDo6bWF4KHNp
Z25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxLCBzaWduYXR1cmUucmV0dXJuQ291bnQoKSkgKyBn
cHJDb3VudCArIGZwckNvdW50ICsgc3RhY2tDb3VudCArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUlu
UmVnaXN0ZXJzOwotICAgIGlmIChtX3N0YWNrU2l6ZSAlIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCkpCisgICAgaWYgKG1fc3RhY2tTaXplLnVuc2FmZUdldCgpICUgc3RhY2tBbGlnbm1lbnRSZWdp
c3RlcnMoKSkKICAgICAgICAgKyttX3N0YWNrU2l6ZTsKICAgICBpZiAobV9tYXhTdGFja1NpemUg
PCBtX3N0YWNrU2l6ZSkKICAgICAgICAgbV9tYXhTdGFja1NpemUgPSBtX3N0YWNrU2l6ZTsKQEAg
LTU4MCw3ICs1ODIsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JD
YWxsZXIoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IExMSQogICAgIFJlc3VsdExpc3Qg
YXJndW1lbnRzKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkpOwogICAgIFJlc3VsdExpc3QgdGVt
cG9yYXJ5UmVzdWx0cyhzaWduYXR1cmUucmV0dXJuQ291bnQoKSk7CiAKLSAgICBjb25zdCB1bnNp
Z25lZCBzdGFja09mZnNldCA9IG1fc3RhY2tTaXplOworICAgIGNvbnN0IHVuc2lnbmVkIHN0YWNr
T2Zmc2V0ID0gbV9zdGFja1NpemUudW5zYWZlR2V0KCk7CiAgICAgY29uc3QgdW5zaWduZWQgYmFz
ZSA9IHN0YWNrT2Zmc2V0IC0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7CiAKICAg
ICBjb25zdCB1aW50MzJfdCBncHJMaW1pdCA9IGJhc2UgLSBzdGFja0NvdW50IC0gZ3ByQ291bnQ7
CkBAIC04NzMsNyArODc1LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkTG9vcChCbG9ja1Np
Z25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ28KICAgICBSZWY8TGFi
ZWw+IGJvZHkgPSBuZXdFbWl0dGVkTGFiZWwoKTsKICAgICBSZWY8TGFiZWw+IGNvbnRpbnVhdGlv
biA9IG5ld0xhYmVsKCk7CiAKLSAgICBibG9jayA9IENvbnRyb2xUeXBlOjpsb29wKHNpZ25hdHVy
ZSwgbV9zdGFja1NpemUsIFdURk1vdmUoYm9keSksIFdURk1vdmUoY29udGludWF0aW9uKSk7Cisg
ICAgYmxvY2sgPSBDb250cm9sVHlwZTo6bG9vcChzaWduYXR1cmUsIG1fc3RhY2tTaXplLnVuc2Fm
ZUdldCgpLCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwogCiAgICAgVmVj
dG9yPFZpcnR1YWxSZWdpc3Rlcj4gb3NyRW50cnlEYXRhOwogICAgIGZvciAodWludDMyX3QgaSA9
IDA7IGkgPCBtX2NvZGVCbG9jay0+bV9udW1Bcmd1bWVudHM7IGkrKykKQEAgLTg4Miw3ICs4ODQs
NyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRMb29wKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVy
ZSwgU3RhY2smIGVuY2xvc2luZ1N0YWNrLCBDbwogICAgIGNvbnN0IGF1dG8mIGNhbGxpbmdDb252
ZW50aW9uID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCk7CiAgICAgY29uc3QgdWludDMyX3QgZ3By
Q291bnQgPSBjYWxsaW5nQ29udmVudGlvbi5ncHJBcmdzLnNpemUoKTsKICAgICBjb25zdCB1aW50
MzJfdCBmcHJDb3VudCA9IGNhbGxpbmdDb252ZW50aW9uLmZwckFyZ3Muc2l6ZSgpOwotICAgIGZv
ciAoaW50MzJfdCBpID0gZ3ByQ291bnQgKyBmcHJDb3VudCArIG51bWJlck9mTExJbnRDYWxsZWVT
YXZlUmVnaXN0ZXJzOyBpIDwgbV9jb2RlQmxvY2stPm1fbnVtVmFyczsgaSsrKQorICAgIGZvciAo
dWludDMyX3QgaSA9IGdwckNvdW50ICsgZnByQ291bnQgKyBudW1iZXJPZkxMSW50Q2FsbGVlU2F2
ZVJlZ2lzdGVyczsgaSA8IG1fY29kZUJsb2NrLT5tX251bVZhcnM7IGkrKykKICAgICAgICAgb3Ny
RW50cnlEYXRhLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSk7CiAgICAgZm9yICh1
bnNpZ25lZCBjb250cm9sSW5kZXggPSAwOyBjb250cm9sSW5kZXggPCBtX3BhcnNlci0+Y29udHJv
bFN0YWNrKCkuc2l6ZSgpOyArK2NvbnRyb2xJbmRleCkgewogICAgICAgICBTdGFjayYgZXhwcmVz
c2lvblN0YWNrID0gbV9wYXJzZXItPmNvbnRyb2xTdGFjaygpW2NvbnRyb2xJbmRleF0uZW5jbG9z
ZWRFeHByZXNzaW9uU3RhY2s7CkBAIC05MDEsMTMgKzkwMywxMyBAQCBhdXRvIExMSW50R2VuZXJh
dG9yOjphZGRMb29wKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgU3RhY2smIGVuY2xvc2luZ1N0
YWNrLCBDbwogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRUb3BMZXZlbChCbG9ja1NpZ25hdHVy
ZSBzaWduYXR1cmUpIC0+IENvbnRyb2xUeXBlCiB7Ci0gICAgcmV0dXJuIENvbnRyb2xUeXBlOjp0
b3BMZXZlbChzaWduYXR1cmUsIG1fc3RhY2tTaXplLCBuZXdMYWJlbCgpKTsKKyAgICByZXR1cm4g
Q29udHJvbFR5cGU6OnRvcExldmVsKHNpZ25hdHVyZSwgbV9zdGFja1NpemUudW5zYWZlR2V0KCks
IG5ld0xhYmVsKCkpOwogfQogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRCbG9jayhCbG9ja1Np
Z25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29udHJvbFR5cGUmIG5l
d0Jsb2NrLCBTdGFjayYgbmV3U3RhY2spIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBzcGxpdFN0
YWNrKHNpZ25hdHVyZSwgZW5jbG9zaW5nU3RhY2ssIG5ld1N0YWNrKTsKLSAgICBuZXdCbG9jayA9
IENvbnRyb2xUeXBlOjpibG9jayhzaWduYXR1cmUsIG1fc3RhY2tTaXplLCBuZXdMYWJlbCgpKTsK
KyAgICBuZXdCbG9jayA9IENvbnRyb2xUeXBlOjpibG9jayhzaWduYXR1cmUsIG1fc3RhY2tTaXpl
LnVuc2FmZUdldCgpLCBuZXdMYWJlbCgpKTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC05MjAs
NyArOTIyLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkSWYoRXhwcmVzc2lvblR5cGUgY29u
ZGl0aW9uLCBCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFMKIAogICAgIFdhc21KZmFsc2U6OmVt
aXQodGhpcywgY29uZGl0aW9uLCBhbHRlcm5hdGUtPmJpbmQodGhpcykpOwogCi0gICAgcmVzdWx0
ID0gQ29udHJvbFR5cGU6OmlmXyhzaWduYXR1cmUsIG1fc3RhY2tTaXplLCBXVEZNb3ZlKGFsdGVy
bmF0ZSksIFdURk1vdmUoY29udGludWF0aW9uKSk7CisgICAgcmVzdWx0ID0gQ29udHJvbFR5cGU6
OmlmXyhzaWduYXR1cmUsIG1fc3RhY2tTaXplLnVuc2FmZUdldCgpLCBXVEZNb3ZlKGFsdGVybmF0
ZSksIFdURk1vdmUoY29udGludWF0aW9uKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtOTM4
LDcgKzk0MCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEVsc2VUb1VucmVhY2hhYmxlKENv
bnRyb2xUeXBlJiBkYXRhKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICBDb250cm9sSWYmIGNvbnRy
b2wgPSBXVEY6OmdldDxDb250cm9sSWY+KGRhdGEpOwogICAgIGVtaXRMYWJlbChjb250cm9sLm1f
YWx0ZXJuYXRlLmdldCgpKTsKLSAgICBkYXRhID0gQ29udHJvbFR5cGU6OmJsb2NrKGRhdGEubV9z
aWduYXR1cmUsIG1fc3RhY2tTaXplLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRpb24pKTsKKyAg
ICBkYXRhID0gQ29udHJvbFR5cGU6OmJsb2NrKGRhdGEubV9zaWduYXR1cmUsIG1fc3RhY2tTaXpl
LnVuc2FmZUdldCgpLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRpb24pKTsKICAgICByZXR1cm4g
eyB9OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427064</attachid>
            <date>2021-04-26 11:07:53 -0700</date>
            <delta_ts>2021-04-26 13:20:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224995-20210426140752.patch</filename>
            <type>text/plain</type>
            <size>37964</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTMzMGQyMzZhMjljN2Y1NzQ0NWIyMjU1NGE5ZjUwYjY5ODNhODU5Li5iOGFmMGEzOGVlZTFkMjdm
NjVkNmIwNTRlNTU0N2FlMDI2MWE0ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNC0yNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBudW1DYWxsZWVMb2NhbHMsIG51bVBhcmFtZXRlcnMsIGFuZCBudW1W
YXJzIHNob3VsZCBiZSB1bnNpZ25lZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWxsIG9mIHRoZSB2YXJpb3VzIENvZGVCbG9jayBjbGFzc2VzIGN1cnJl
bnRseSBoYXZlIHRoZQorICAgICAgICBudW1DYWxsZWVMb2NhbHMgYW5kIG51bVZhcnMgbWFya2Vk
IGFzIGludHMuIEkgYmVsaWV2ZSB0aGlzIGlzIGp1c3QKKyAgICAgICAgYSBoaXN0b3JpY2FsIGFy
dGlmYWN0IG9yIGJlY2F1c2UgVmlydHVhbFJlZ2lzdGVyJ3Mgb2Zmc2V0IGlzIGFuCisgICAgICAg
IGludCB0byBtYWtlIGhhbmRsaW5nIGNvbnN0YW50cyBlYXNpZXIuIFJlZ2FyZGxlc3MsIGl0J3Mg
YSBiaXQKKyAgICAgICAgc3RyYW5nZSB0byBub3QgaGFuZGxlIHRoZSBzaWduIGNvbnZlcnNpb24g
YXQgdGhlIHBvaW50IG9mCisgICAgICAgIGNvbXBhcmlzb24gYmV0d2VlbiBhIFZpcnR1YWxSZWdp
c3RlciBvZmZzZXQgYW5kIHRoZSBsb2NhbC92YXIKKyAgICAgICAgY291bnQuIFRoaXMgZG9lc24n
dCBjb21wbGV0ZWx5IGZpeCBldmVyeSBwbGFjZSB3ZSB1c2UgaW50cyBmb3IKKyAgICAgICAgdGhl
c2UgdmFsdWVzIGJ1dCBzdGFydHMgb24gdGhlIHJpZ2h0IHRyYWNrLiBMYXN0bHksIEkgYWxzbyBh
ZGRlZAorICAgICAgICBzb21lIENoZWNrPHVuc2lnbmVkPnMgdG8gdGhlIHdhc20gcGFyc2VyIGZv
ciBzYW5pdHkgY2hlY2tpbmcuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldE51bVBhcmFtZXRlcnMpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVJbmRl
eFNsb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6Om51bVBhcmFtZXRlcnMgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
Om51bWJlck9mQXJndW1lbnRzVG9Ta2lwIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpudW1DYWxsZWVMb2NhbHMgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bVZh
cnMgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bVRtcHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZHJlc3NPZk51bVBhcmFtZXRlcnMpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmlzVGVtcG9yYXJ5UmVnaXN0ZXIpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpu
dW1DYWxsZWVMb2NhbHMgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
bnVtVmFycyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6Om51bUNh
bGxlZUxvY2FscyBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yOjpudW1WYXJzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3I6OnNldE51bUNhbGxlZUxvY2Fscyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yOjpzZXROdW1WYXJzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3I6OnNldE51bVBhcmFtZXRlcnMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaEZ1bmN0
aW9uTmFtZVNjb3BlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3JC
YXNlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvckJhc2U8VHJhaXRz
Pjo6bmV3UmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJlY3Vyc2l2ZVRhaWxDYWxs
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICog
ZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVj
a0FyZ3VtZW50VHlwZXMpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dlcik6CisgICAgICAgICogZnRs
L0ZUTE9TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpwcmVwYXJlT1NSRW50cnkpOgor
ICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZUNsb3N1cmUuaDoKKyAgICAgICAgKiBpbnRl
cnByZXRlci9Qcm90b0NhbGxGcmFtZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxs
RnJhbWU6OmluaXQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmNvbXBpbGVXaXRob3V0TGlua2luZyk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpudW1iZXJPZlN0YWNrUGFkZGlu
Z1Nsb3RzKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpudW1iZXJPZlN0YWNrUGFk
ZGluZ1Nsb3RzV2l0aEV4dHJhU2xvdHMpOgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrOjpudW1WYXJz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2s6Om51bUNhbGxl
ZUxvY2FscyBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uQ29kZUJsb2NrOjpz
ZXROdW1WYXJzKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2s6OnNldE51
bUNhbGxlZUxvY2Fscyk6CisgICAgICAgICogd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6cHVzaCk6CisgICAgICAgIChKU0M6
Oldhc206OkxMSW50R2VuZXJhdG9yOjpnZXREcm9wS2VlcENvdW50KToKKyAgICAgICAgKEpTQzo6
V2FzbTo6TExJbnRHZW5lcmF0b3I6OndhbGtFeHByZXNzaW9uU3RhY2spOgorICAgICAgICAoSlND
OjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgIChKU0M6
Oldhc206OkxMSW50R2VuZXJhdG9yOjptYXRlcmlhbGl6ZUNvbnN0YW50c0FuZExvY2Fscyk6Cisg
ICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjpzcGxpdFN0YWNrKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6TExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcik6CisgICAgICAgIChK
U0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRMb29wKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
TExJbnRHZW5lcmF0b3I6OmFkZFRvcExldmVsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRH
ZW5lcmF0b3I6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6
OmFkZElmKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZEVsc2VUb1Vu
cmVhY2hhYmxlKToKKwogMjAyMS0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzY0ODYuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGRlOWNiNWUx
YzM5MjZmYTU4Njk3MGMzOWMxZDUxNGY4NjNkNmU1NGMuLmZjNWFmYWZjNDMxZDYzMDYzOTIzMzcz
NGFhNzc5YWRlNDhiYTkwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnNldEFsdGVy
bmF0aXZlKFZNJiB2bSwgQ29kZUJsb2NrKiBhbHRlcm5hdGl2ZSkKICAgICBtX2FsdGVybmF0aXZl
LnNldCh2bSwgdGhpcywgYWx0ZXJuYXRpdmUpOwogfQogCi12b2lkIENvZGVCbG9jazo6c2V0TnVt
UGFyYW1ldGVycyhpbnQgbmV3VmFsdWUpCit2b2lkIENvZGVCbG9jazo6c2V0TnVtUGFyYW1ldGVy
cyh1bnNpZ25lZCBuZXdWYWx1ZSkKIHsKICAgICBtX251bVBhcmFtZXRlcnMgPSBuZXdWYWx1ZTsK
IApAQCAtMjAxNSw3ICsyMDE1LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5l
c3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVJbmRleFNsb3coY29uc3QgT3BDYXRjaCYKICAgICAgICAg
bGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsaXZlTG9jYWwpKTsK
ICAgICB9KTsKIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyArK2kp
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhcmFtZXRlcnMoKTsgKytpKQogICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVk
aW5nVGhpcyhpKSk7CiAKICAgICBhdXRvKiBwcm9maWxlcyA9IFZhbHVlUHJvZmlsZUFuZFZpcnR1
YWxSZWdpc3RlckJ1ZmZlcjo6Y3JlYXRlKGxpdmVPcGVyYW5kcy5zaXplKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDE2ZThkNTFlMzI3YzYyNzQ3
NDhjMjUwZGFmNjc0NmFhN2ViNmQ3Y2YuLjU3NDhkMTM5ZDljYjU1ODdhNzFlZGQxMDVjMTU4NTJh
NmIyNjU0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
QEAgLTE1NiwxNyArMTU2LDE3IEBAIHB1YmxpYzoKIAogICAgIE1ldGFkYXRhVGFibGUqIG1ldGFk
YXRhVGFibGUoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmdldCgpOyB9CiAKLSAgICBpbnQg
bnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyYW1ldGVyczsgfQotICAgIHZv
aWQgc2V0TnVtUGFyYW1ldGVycyhpbnQgbmV3VmFsdWUpOworICAgIHVuc2lnbmVkIG51bVBhcmFt
ZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX251bVBhcmFtZXRlcnM7IH0KKyAgICB2b2lkIHNldE51
bVBhcmFtZXRlcnModW5zaWduZWQgbmV3VmFsdWUpOwogCi0gICAgaW50IG51bWJlck9mQXJndW1l
bnRzVG9Ta2lwKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgfQor
ICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCkgY29uc3QgeyByZXR1cm4gbV9u
dW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgfQogCi0gICAgaW50IG51bUNhbGxlZUxvY2FscygpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxzOyB9CisgICAgdW5zaWduZWQgbnVtQ2FsbGVl
TG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsZWVMb2NhbHM7IH0KIAotICAgIGludCBu
dW1WYXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1WYXJzOyB9Ci0gICAgaW50IG51bVRtcHMoKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aGFzQ2hlY2twb2ludHMoKSAqIG1heE51bUNo
ZWNrcG9pbnRUbXBzOyB9CisgICAgdW5zaWduZWQgbnVtVmFycygpIGNvbnN0IHsgcmV0dXJuIG1f
bnVtVmFyczsgfQorICAgIHVuc2lnbmVkIG51bVRtcHMoKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkQ29kZS0+aGFzQ2hlY2twb2ludHMoKSAqIG1heE51bUNoZWNrcG9pbnRUbXBzOyB9CiAKLSAg
ICBpbnQqIGFkZHJlc3NPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiAmbV9udW1QYXJhbWV0ZXJz
OyB9CisgICAgdW5zaWduZWQqIGFkZHJlc3NPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiAmbV9u
dW1QYXJhbWV0ZXJzOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk51bVBhcmFtZXRl
cnMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX251bVBhcmFtZXRlcnMp
OyB9CiAKICAgICBDb2RlQmxvY2sqIGFsdGVybmF0aXZlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q29kZUJsb2NrKj4obV9hbHRlcm5hdGl2ZS5nZXQoKSk7IH0KQEAgLTI0Myw3ICsyNDMs
NyBAQCBwdWJsaWM6CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNUZW1wb3JhcnlSZWdpc3Rl
cihWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlZy5vZmZzZXQo
KSA+PSBtX251bVZhcnM7CisgICAgICAgIHJldHVybiByZWcub2Zmc2V0KCkgPj0gc3RhdGljX2Nh
c3Q8aW50PihtX251bVZhcnMpOwogICAgIH0KIAogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9y
Qnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4LCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhh
bmRsZXI6OkFueUhhbmRsZXIpOwpAQCAtOTg5LDEwICs5ODksMTAgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcigpOwog
ICAgIHZvaWQgZW5zdXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZUluZGV4U2xv
dyhjb25zdCBPcENhdGNoJiwgQnl0ZWNvZGVJbmRleCk7CiAKLSAgICBpbnQgbV9udW1DYWxsZWVM
b2NhbHM7Ci0gICAgaW50IG1fbnVtVmFyczsKLSAgICBpbnQgbV9udW1QYXJhbWV0ZXJzOwotICAg
IGludCBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwIHsgMCB9OworICAgIHVuc2lnbmVkIG1fbnVt
Q2FsbGVlTG9jYWxzOworICAgIHVuc2lnbmVkIG1fbnVtVmFyczsKKyAgICB1bnNpZ25lZCBtX251
bVBhcmFtZXRlcnM7CisgICAgdW5zaWduZWQgbV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCB7IDAg
fTsKICAgICB1bnNpZ25lZCBtX251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIHsgMCB9
OwogICAgIHVuaW9uIHsKICAgICAgICAgdW5zaWduZWQgbV9kZWJ1Z2dlclJlcXVlc3RzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApp
bmRleCBiNDIxMDQ2N2NlMmQ3Zjk5ZmUzMmU1OGEzMDc0OTMyMzA1NDY4NTcxLi4zMTZlYmNhODQy
ZTNjOWUyN2M1ZGY5YzI4MGU1ODdhODQyY2QzZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMjA5LDggKzIwOSw4IEBA
IHB1YmxpYzoKIAogICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBj
b25zdDsKIAotICAgIGludCBudW1DYWxsZWVMb2NhbHMoKSBjb25zdCB7IHJldHVybiBtX251bUNh
bGxlZUxvY2FsczsgfQotICAgIGludCBudW1WYXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1WYXJz
OyB9CisgICAgdW5zaWduZWQgbnVtQ2FsbGVlTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1D
YWxsZWVMb2NhbHM7IH0KKyAgICB1bnNpZ25lZCBudW1WYXJzKCkgY29uc3QgeyByZXR1cm4gbV9u
dW1WYXJzOyB9CiAKICAgICAvLyBKdW1wIFRhYmxlcwogCkBAIC0zOTYsOSArMzk2LDkgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2Vu
ZENvbHVtbiB7IFVJTlRfTUFYIH07CiAKLSAgICBpbnQgbV9udW1WYXJzIHsgMCB9OwotICAgIGlu
dCBtX251bUNhbGxlZUxvY2FscyB7IDAgfTsKLSAgICBpbnQgbV9udW1QYXJhbWV0ZXJzIHsgMCB9
OworICAgIHVuc2lnbmVkIG1fbnVtVmFycyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX251bUNhbGxl
ZUxvY2FscyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX251bVBhcmFtZXRlcnMgeyAwIH07CiAKICAg
ICBQYWNrZWRSZWZQdHI8U3RyaW5nSW1wbD4gbV9zb3VyY2VVUkxEaXJlY3RpdmU7CiAgICAgUGFj
a2VkUmVmUHRyPFN0cmluZ0ltcGw+IG1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yLmgKaW5kZXggNDlhYmJhYTFjNzNiNjUyNTBhYzVmZGU5NTIyMzE4MTA4OGM2
NTZkNy4uY2UzMzBkNmEyNTljYWViMDBmZDc0NjM2YTFkNTkwNGQ0NGVhMDUyOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yLmgKQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogICAgIEV2YWxDb250ZXh0
VHlwZSBldmFsQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+ZXZhbENv
bnRleHRUeXBlKCk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpOyB9CiAgICAgYm9v
bCBpc0NsYXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NsYXNzQ29u
dGV4dCgpOyB9Ci0gICAgaW50IG51bUNhbGxlZUxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsgfQotICAgIGludCBudW1WYXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPm1fbnVtVmFyczsgfQorICAgIHVuc2lnbmVkIG51bUNhbGxlZUxv
Y2FscygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsgfQor
ICAgIHVuc2lnbmVkIG51bVZhcnMoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+bV9udW1W
YXJzOyB9CiAgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7IH0KICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc1JlZ2lz
dGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpOyB9CiAgICAg
VmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9j
ay0+c2NvcGVSZWdpc3RlcigpOyB9CkBAIC03MSwxMSArNzEsMTEgQEAgcHVibGljOgogICAgIC8v
IFVwZGF0aW5nIFVubGlua2VkQ29kZUJsb2NrLgogICAgIHZvaWQgc2V0SGFzQ2hlY2twb2ludHMo
KSB7IG1fY29kZUJsb2NrLT5zZXRIYXNDaGVja3BvaW50cygpOyB9CiAgICAgdm9pZCBzZXRIYXNU
YWlsQ2FsbHMoKSB7IG1fY29kZUJsb2NrLT5zZXRIYXNUYWlsQ2FsbHMoKTsgfQotICAgIHZvaWQg
c2V0TnVtQ2FsbGVlTG9jYWxzKGludCBudW1DYWxsZWVMb2NhbHMpIHsgbV9jb2RlQmxvY2stPm1f
bnVtQ2FsbGVlTG9jYWxzID0gbnVtQ2FsbGVlTG9jYWxzOyB9Ci0gICAgdm9pZCBzZXROdW1WYXJz
KGludCBudW1WYXJzKSB7IG1fY29kZUJsb2NrLT5tX251bVZhcnMgPSBudW1WYXJzOyB9CisgICAg
dm9pZCBzZXROdW1DYWxsZWVMb2NhbHModW5zaWduZWQgbnVtQ2FsbGVlTG9jYWxzKSB7IG1fY29k
ZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscyA9IG51bUNhbGxlZUxvY2FsczsgfQorICAgIHZvaWQg
c2V0TnVtVmFycyh1bnNpZ25lZCBudW1WYXJzKSB7IG1fY29kZUJsb2NrLT5tX251bVZhcnMgPSBu
dW1WYXJzOyB9CiAgICAgdm9pZCBzZXRUaGlzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHRoaXNS
ZWdpc3RlcikgeyBtX2NvZGVCbG9jay0+c2V0VGhpc1JlZ2lzdGVyKHRoaXNSZWdpc3Rlcik7IH0K
ICAgICB2b2lkIHNldFNjb3BlUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHRoaXNSZWdpc3Rlcikg
eyBtX2NvZGVCbG9jay0+c2V0U2NvcGVSZWdpc3Rlcih0aGlzUmVnaXN0ZXIpOyB9Ci0gICAgdm9p
ZCBzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1ZSkgeyBtX2NvZGVCbG9jay0+c2V0TnVtUGFy
YW1ldGVycyhuZXdWYWx1ZSk7IH0KKyAgICB2b2lkIHNldE51bVBhcmFtZXRlcnModW5zaWduZWQg
bmV3VmFsdWUpIHsgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMobmV3VmFsdWUpOyB9CiAK
ICAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGUmIG1ldGFkYXRhKCkgeyByZXR1cm4gbV9jb2RlQmxv
Y2stPm1ldGFkYXRhKCk7IH0KICAgICB2b2lkIGFkZEV4cHJlc3Npb25JbmZvKHVuc2lnbmVkIGlu
c3RydWN0aW9uT2Zmc2V0LCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNl
dCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXgg
NDI2MDkzZjExNzY4MGI1MTdkN2NiODY0MTE3YzM0NjAwMDRmYjMzNC4uZjliMGZiZjNjZWMyYWJi
MDAxMzQ4ZjYwNGU5MTBkYTQ0OTFmMjQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI4Miw3ICsy
ODIsNyBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIGlm
IChtX2lzQXN5bmMpCiAgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oKnRoaXMsIG1f
Y29kZUJsb2NrLmdldCgpLCBtX3dyaXRlciwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdl
dCgpLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CiAKLSAgICBSRUxFQVNFX0FT
U0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxvY2stPm51bUNhbGxlZUxvY2Fscygp
KSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKG1fY29kZUJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKSA8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkpOwogICAgIG1fY29k
ZUJsb2NrLT5maW5hbGl6ZShtX3dyaXRlci5maW5hbGl6ZSgpKTsKICAgICBpZiAobV9leHByZXNz
aW9uVG9vRGVlcCkKICAgICAgICAgcmV0dXJuIFBhcnNlckVycm9yKFBhcnNlckVycm9yOjpPdXRP
Zk1lbW9yeSk7CkBAIC0zOTg3LDcgKzM5ODcsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZQog
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2V0SXNDb25zdCgpOyAvLyBUaGUgZnVuY3Rp
b24gbmFtZSBzY29wZSBuYW1lIGFjdHMgbGlrZSBhIGNvbnN0IHZhcmlhYmxlLgogICAgIHVuc2ln
bmVkIG51bVZhcnMgPSBtX2NvZGVCbG9jay0+bnVtVmFycygpOwogICAgIHB1c2hMZXhpY2FsU2Nv
cGVJbnRlcm5hbChuYW1lU2NvcGVFbnZpcm9ubWVudCwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9w
dGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBURFpSZXF1aXJl
bWVudDo6Tm90VW5kZXJURFosIFNjb3BlVHlwZTo6RnVuY3Rpb25OYW1lU2NvcGUsIFNjb3BlUmVn
aXN0ZXJUeXBlOjpWYXIpOwotICAgIEFTU0VSVF9VTlVTRUQobnVtVmFycywgbV9jb2RlQmxvY2st
Pm51bVZhcnMoKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KG51bVZhcnMgKyAxKSk7IC8vIFNob3VsZCBo
YXZlIG9ubHkgY3JlYXRlZCBvbmUgbmV3ICJ2YXIiIGZvciB0aGUgZnVuY3Rpb24gbmFtZSBzY29w
ZS4KKyAgICBBU1NFUlRfVU5VU0VEKG51bVZhcnMsIG1fY29kZUJsb2NrLT5udW1WYXJzKCkgPT0g
bnVtVmFycyArIDEpOyAvLyBTaG91bGQgaGF2ZSBvbmx5IGNyZWF0ZWQgb25lIG5ldyAidmFyIiBm
b3IgdGhlIGZ1bmN0aW9uIG5hbWUgc2NvcGUuCiAgICAgYm9vbCBzaG91bGRUcmVhdEFzTGV4aWNh
bFZhcmlhYmxlID0gZWNtYU1vZGUoKS5pc1N0cmljdCgpOwogICAgIFZhcmlhYmxlIGZ1bmN0aW9u
VmFyID0gdmFyaWFibGVGb3JMb2NhbEVudHJ5KHByb3BlcnR5LCBtX2xleGljYWxTY29wZVN0YWNr
Lmxhc3QoKS5tX3N5bWJvbFRhYmxlLT5nZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBwcm9wZXJ0eS5p
bXBsKCkpLCBtX2xleGljYWxTY29wZVN0YWNrLmxhc3QoKS5tX3N5bWJvbFRhYmxlQ29uc3RhbnRJ
bmRleCwgc2hvdWxkVHJlYXRBc0xleGljYWxWYXJpYWJsZSk7CiAgICAgZW1pdFB1dFRvU2NvcGUo
bV9sZXhpY2FsU2NvcGVTdGFjay5sYXN0KCkubV9zY29wZSwgZnVuY3Rpb25WYXIsIGNhbGxlZSwg
VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3JCYXNlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgKaW5kZXggMWJkOTI0ZmNiMDAxODc4NGE2
Zjg1OGJlZjFiYjNlZmU2YzhmYjAwMS4uMGY0ZTQwNzU3OWY5MDcxNjQ1MGZhMDM1ODY4MjI1Yzdk
ZmNmOWFiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgKQEAgLTE2MSw5ICsx
NjEsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzPgogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3JCYXNlPFRyYWl0cz46Om5ld1JlZ2lzdGVyKCkKIHsKICAgICBtX2NhbGxlZUxvY2Fs
cy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jYWxsZWVMb2NhbHMuc2l6ZSgpKSk7
Ci0gICAgaW50IG51bUNhbGxlZUxvY2FscyA9IHN0ZDo6bWF4PGludD4obV9jb2RlQmxvY2stPm51
bUNhbGxlZUxvY2FscygpLCBtX2NhbGxlZUxvY2Fscy5zaXplKCkpOworICAgIHNpemVfdCBudW1D
YWxsZWVMb2NhbHMgPSBzdGQ6Om1heDxzaXplX3Q+KG1fY29kZUJsb2NrLT5udW1DYWxsZWVMb2Nh
bHMoKSwgbV9jYWxsZWVMb2NhbHMuc2l6ZSgpKTsKICAgICBudW1DYWxsZWVMb2NhbHMgPSBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbnVtQ2FsbGVl
TG9jYWxzKTsKLSAgICBtX2NvZGVCbG9jay0+c2V0TnVtQ2FsbGVlTG9jYWxzKG51bUNhbGxlZUxv
Y2Fscyk7CisgICAgbV9jb2RlQmxvY2stPnNldE51bUNhbGxlZUxvY2FscyhzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obnVtQ2FsbGVlTG9jYWxzKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobnVtQ2FsbGVl
TG9jYWxzID09IG1fY29kZUJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKSk7CiAgICAgcmV0dXJuICZt
X2NhbGxlZUxvY2Fscy5sYXN0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNDA4ZGMwOGMxNDMwODNmODE4NDkyN2IyYThl
NTk1MmQ3YWIwOGRmYS4uYmFlYWM2Y2I3MDVjMGQ5ZTQxZDRmODkyMTY3YWY5YzMyYTNmYzJkZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
QEAgLTE0OTQsNyArMTQ5NCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJlY3Vyc2l2
ZVRhaWxDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBDYWxsVmFyaWFudCBjCiAKICAgICAgICAg
ICAgIC8vIFNvbWUgY29kZSBtYXkgc3RhdGljYWxseSB1c2UgdGhlIGFyZ3VtZW50IGNvdW50IGZy
b20gdGhlIElubGluZUNhbGxGcmFtZSwgc28gaXQgd291bGQgYmUgaW52YWxpZCB0byBsb29wIGJh
Y2sgaWYgaXQgZG9lcyBub3QgbWF0Y2guCiAgICAgICAgICAgICAvLyBXZSAiY29udGludWUiIGlu
c3RlYWQgb2YgcmV0dXJuaW5nIGZhbHNlIGluIGNhc2UgYW5vdGhlciBzdGFjayBlbnRyeSBmdXJ0
aGVyIG9uIHRoZSBzdGFjayBoYXMgdGhlIHJpZ2h0IG51bWJlciBvZiBhcmd1bWVudHMuCi0gICAg
ICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gc3RhdGljX2Nhc3Q8aW50
PihjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkKKyAgICAgICAgICAgIGlm
IChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgLy8g
SWYgdGhlIHRhcmdldCBJbmxpbmVDYWxsRnJhbWUgaXMgVmFyYXJncywgd2UgZG8gbm90IGtub3cg
aG93IG1hbnkgYXJndW1lbnRzIGFyZSBhY3R1YWxseSBmaWxsZWQgYnkgTG9hZFZhcmFyZ3MuIFZh
cmFyZ3MgSW5saW5lQ2FsbEZyYW1lJ3MKICAgICAgICAgICAgIC8vIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzIGlzIG1heGltdW0gbnVtYmVyIG9mIHBvdGVudGlhbGx5IGZpbGxlZCBhcmd1bWVu
dHMgYnkgeGtMb2FkVmFyYXJncy4gV2UgImNvbnRpbnVlIiB0byB0aGUgdXBwZXIgZnJhbWUgd2hp
Y2ggbWF5IGJlCkBAIC0xNTA0LDcgKzE1MDQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVSZWN1cnNpdmVUYWlsQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQgYwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gV2UgYXJlIGluIHRoZSBtYWNoaW5lIGNv
ZGUgZW50cnkgKGkuZS4gdGhlIG9yaWdpbmFsIGNhbGxlcikuCiAgICAgICAgICAgICAvLyBJZiB3
ZSBoYXZlIG1vcmUgYXJndW1lbnRzIHRoYW4gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzIHRvIHRo
ZSBmdW5jdGlvbiwgaXQgaXMgbm90IGNsZWFyIHdoZXJlIHdlIGNvdWxkIHB1dCB0aGVtIG9uIHRo
ZSBzdGFjay4KLSAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+IG1f
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSA+IG1fY29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAK
QEAgLTE1MzAsOCArMTUzMCw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJlY3Vyc2l2
ZVRhaWxDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBDYWxsVmFyaWFudCBjCiAgICAgICAgIC8v
IFdlIG11c3Qgc2V0IHRoZSBhcmd1bWVudHMgdG8gdGhlIHJpZ2h0IHZhbHVlcwogICAgICAgICBp
ZiAoIXN0YWNrRW50cnktPm1faW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgYWRkVG9HcmFw
aChTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgT3BJbmZvKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSk7Ci0gICAgICAgIGludCBhcmdJbmRleCA9IDA7Ci0gICAgICAgIGZvciAoOyBh
cmdJbmRleCA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2FyZ0luZGV4KSB7CisgICAg
ICAgIHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsKKyAgICAgICAgZm9yICg7IGFyZ0luZGV4IDwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsgKythcmdJbmRl
eCkgewogICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnRJbmNsdWRpbmdUaGlzKGFyZ0luZGV4LCByZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAg
ICAgc2V0RGlyZWN0KHN0YWNrRW50cnktPnJlbWFwT3BlcmFuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudEluY2x1ZGluZ1RoaXMoYXJnSW5kZXgpKSwgdmFsdWUsIE5vcm1hbFNldCk7CiAgICAg
ICAgIH0KQEAgLTE1NDEsNyArMTU0MSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJl
Y3Vyc2l2ZVRhaWxDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBDYWxsVmFyaWFudCBjCiAKICAg
ICAgICAgLy8gV2UgbXVzdCByZXBlYXQgdGhlIHdvcmsgb2Ygb3BfZW50ZXIgaGVyZSBhcyB3ZSB3
aWxsIGp1bXAgcmlnaHQgYWZ0ZXIgaXQuCiAgICAgICAgIC8vIFdlIGp1bXAgcmlnaHQgYWZ0ZXIg
aXQgYW5kIG5vdCBiZWZvcmUgaXQsIGJlY2F1c2Ugb2Ygc29tZSBpbnZhcmlhbnQgc2F5aW5nIHRo
YXQgYSBDRkcgcm9vdCBjYW5ub3QgaGF2ZSBwcmVkZWNlc3NvcnMgaW4gdGhlIElSLgotICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHN0YWNrRW50cnktPm1fY29kZUJsb2NrLT5udW1WYXJzKCk7
ICsraSkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0YWNrRW50cnktPm1fY29k
ZUJsb2NrLT5udW1WYXJzKCk7ICsraSkKICAgICAgICAgICAgIHNldERpcmVjdChzdGFja0VudHJ5
LT5yZW1hcE9wZXJhbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpLCB1bmRlZmluZWQsIE5v
cm1hbFNldCk7CiAKICAgICAgICAgLy8gV2Ugd2FudCB0byBlbWl0IHRoZSBTZXRMb2NhbHMgd2l0
aCBhbiBleGl0IG9yaWdpbiB0aGF0IHBvaW50cyB0byB0aGUgcGxhY2Ugd2UgYXJlIGp1bXBpbmcg
dG8uCkBAIC0xNTk3LDcgKzE1OTcsNyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5p
bmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQogICAgIH0K
IAogICAgIGlmICghT3B0aW9uczo6dXNlQXJpdHlGaXh1cElubGluaW5nKCkpIHsKLSAgICAgICAg
aWYgKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpIHsKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID4gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkgewogICAgICAgICAgICAg
VkVSQk9TRV9MT0coIiAgICBGYWlsaW5nIGJlY2F1c2Ugb2YgYXJpdHkgbWlzbWF0Y2guXG4iKTsK
ICAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICAgICAgfQpAQCAtNTQxOCw3ICs1NDE4
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgY2FzZSBvcF9lbnRlcjogewogICAgICAgICAgICAgTm9kZSogdW5kZWZpbmVkID0gYWRk
VG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9jb25zdGFudFVuZGVmaW5lZCkpOwogICAgICAg
ICAgICAgLy8gSW5pdGlhbGl6ZSBhbGwgbG9jYWxzIHRvIHVuZGVmaW5lZC4KLSAgICAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPm51bVZh
cnMoKTsgKytpKQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrLT5udW1WYXJzKCk7ICsraSkKICAgICAgICAgICAgICAgICBz
ZXQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSksIHVuZGVmaW5lZCwgSW1tZWRpYXRlTmFrZWRT
ZXQpOwogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9lbnRlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhh
c2UuY3BwCmluZGV4IDcyN2Q1ODI3Njc0MTdkZTZhOTczODliZGYzMzVkNGFjMTNmZDVjOWMuLjhl
YWU4MWY0OTVhZGQ4OGQzZmE3M2VkYTgyYWU1ZGI0NmQ3MzI0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhh
c2UuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgTm9kZU9yaWdpbiBvcmln
aW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oQnl0ZWNvZGVJbmRleCgwKSksIENvZGVPcmlnaW4o
Qnl0ZWNvZGVJbmRleCgwKSksIGZhbHNlKTsKICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxOb2Rl
Kj4gbG9jYWxzKGJhc2VsaW5lLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIGZvciAoaW50
IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bnVtQ2FsbGVlTG9jYWxzKCk7ICsrbG9jYWwp
IHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm51
bUNhbGxlZUxvY2FscygpOyArK2xvY2FsKSB7CiAgICAgICAgICAgICBOb2RlKiBwcmV2aW91c0hl
YWQgPSB0YXJnZXQtPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChsb2NhbCk7CiAgICAgICAgICAgICBp
ZiAoIXByZXZpb3VzSGVhZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTExMyw3ICsx
MTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG9yaWdpbiA9IHRhcmdldC0+YXQoMCktPm9yaWdpbjsK
ICAgICAgICAgCiAgICAgICAgIEFyZ3VtZW50c1ZlY3RvciBuZXdBcmd1bWVudHMgPSBtX2dyYXBo
Lm1fcm9vdFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwotICAgICAg
ICBmb3IgKGludCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRl
cnMoKTsgKythcmd1bWVudCkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsg
YXJndW1lbnQgPCBiYXNlbGluZS0+bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAgICAg
ICAgICAgICBOb2RlKiBvbGROb2RlID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQo
YXJndW1lbnQpOwogICAgICAgICAgICAgaWYgKCFvbGROb2RlKSB7CiAgICAgICAgICAgICAgICAg
Ly8gSnVzdCBmb3Igc2FuaXR5LCBhbHdheXMgaGF2ZSBhIFNldEFyZ3VtZW50RGVmaW5pdGVseSBl
dmVuIGlmIGl0J3Mgbm90IG5lZWRlZC4KQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBuZXdBcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKICAgICAgICAgfQogCi0gICAg
ICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bnVtQ2FsbGVlTG9jYWxz
KCk7ICsrbG9jYWwpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb2NhbCA9IDA7IGxvY2FsIDwg
YmFzZWxpbmUtPm51bUNhbGxlZUxvY2FscygpOyArK2xvY2FsKSB7CiAgICAgICAgICAgICBOb2Rl
KiBwcmV2aW91c0hlYWQgPSB0YXJnZXQtPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChsb2NhbCk7CiAg
ICAgICAgICAgICBpZiAoIXByZXZpb3VzSGVhZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggYjJiZjRkMGIzMjdjYmFiZjRiYTcwYzY3ODE2YzEzOWE1MWY4OTI5MC4uOTA3YTRjMmFhZjQ1
ZjBiNGU4MTdkMjJkZDMyNDUzZDMyZjE4YmE5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTIwNzksNyArMjA3OSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygpCiAgICAgbV9vcmlnaW4gPSBOb2Rl
T3JpZ2luKENvZGVPcmlnaW4oQnl0ZWNvZGVJbmRleCgwKSksIENvZGVPcmlnaW4oQnl0ZWNvZGVJ
bmRleCgwKSksIHRydWUpOwogCiAgICAgYXV0byYgYXJndW1lbnRzID0gbV9qaXQuZ3JhcGgoKS5t
X3Jvb3RUb0FyZ3VtZW50cy5maW5kKG1faml0LmdyYXBoKCkuYmxvY2soMCkpLT52YWx1ZTsKLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7
ICsraSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ppdC5jb2RlQmxvY2soKS0+
bnVtUGFyYW1ldGVycygpOyArK2kpIHsKICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tp
XTsKICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgYXJndW1lbnQgaXMg
ZGVhZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1bWVudHMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNjIxMGI5NjAx
YjYwYjhjMzE1OWU4MjU1ZGQwMjliMzE3MDJjNjI2ZS4uMjA3ODY5MWIxMDRhZmY2MjA0MWIxMzM2
NWY4MWQ4YTNkMWJkMWU3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlm
IChtX2dyYXBoLm1fcGxhbi5tb2RlKCkgPT0gRlRMRm9yT1NSRW50cnlNb2RlKSB7CiAgICAgICAg
ICAgICAgICAgYXV0byogaml0Q29kZSA9IG1fZnRsU3RhdGUuaml0Q29kZS0+ZnRsRm9yT1NSRW50
cnkoKTsKICAgICAgICAgICAgICAgICBGaXhlZFZlY3RvcjxERkc6OkZsdXNoRm9ybWF0PiBhcmd1
bWVudEZsdXNoRm9ybWF0cyhjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsKLSAgICAgICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7
ICsraSkKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2Nr
KCktPm51bVBhcmFtZXRlcnMoKTsgKytpKQogICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZs
dXNoRm9ybWF0c1tpXSA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbMF1baV07CiAgICAgICAg
ICAgICAgICAgaml0Q29kZS0+c2V0QXJndW1lbnRGbHVzaEZvcm1hdHMoV1RGTW92ZShhcmd1bWVu
dEZsdXNoRm9ybWF0cykpOwogICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKaW5kZXggZGYwODUwNTQwNjM1NTM4NGQxNGMxMmIyNzMz
MGEzYjU4Mzk4MDU2Ni4uMDQxYWNkZmY3NDE5MDM4MTI2NjM4MzFlOTllYTVmZjQ4NDgwY2M0MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKQEAgLTExMyw4ICsx
MTMsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKAotICAgICAgICBz
dGF0aWNfY2FzdDxpbnQ+KHZhbHVlcy5udW1iZXJPZkxvY2FscygpKSA9PSBiYXNlbGluZS0+bnVt
Q2FsbGVlTG9jYWxzKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlcy5udW1iZXJPZkxvY2Fs
cygpID09IGJhc2VsaW5lLT5udW1DYWxsZWVMb2NhbHMoKSk7CiAgICAgCiAgICAgRW5jb2RlZEpT
VmFsdWUqIHNjcmF0Y2ggPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KAogICAgICAgICBl
bnRyeUNvZGUtPmVudHJ5QnVmZmVyKCktPmRhdGFCdWZmZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lQ2xvc3VyZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZUNsb3N1cmUuaAppbmRleCBhNjI1
Y2FmOWI2Mjg5YmVjODI3N2IyNmQxMTk2M2IwNzQ0MjUzNjg1Li5hZTdhNjgwZTVkNGM3NTQ5MzI0
ZjA4NDA3MDNjOGZkNzVmZmM4OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lQ2xvc3VyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWVDbG9zdXJlLmgKQEAgLTM2LDcgKzM2LDcgQEAgc3RydWN0
IENhbGxGcmFtZUNsb3N1cmUgewogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVj
dXRhYmxlOwogICAgIFZNKiB2bTsKICAgICBKU1Njb3BlKiBzY29wZTsKLSAgICBpbnQgcGFyYW1l
dGVyQ291bnRJbmNsdWRpbmdUaGlzOworICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50SW5jbHVk
aW5nVGhpczsKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgCiAgICAg
dm9pZCBzZXRUaGlzKEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWVJbmxpbmVzLmgKaW5kZXggZTczNTU2
ZTM1NWY0ZDdlMDk4OWQyYjlkZTE4ZjBkNmNhZDc4NzBhZi4uOTJlM2ZmNjQ4MGUyMGY2Mzk5YTBk
YTM1OTRhNDViNjJiOTA4NGE2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZUlubGluZXMuaApAQCAtMzcsNyArMzcsNyBA
QCBpbmxpbmUgdm9pZCBQcm90b0NhbGxGcmFtZTo6aW5pdChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIHRoaXMtPnNldENhbGxlZShjYWxsZWUpOwog
ICAgIHRoaXMtPnNldEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIHRoaXMtPnNldEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ0NvdW50SW5jbHVkaW5nVGhpcyk7Ci0gICAgaWYg
KGNvZGVCbG9jayAmJiBhcmdDb3VudEluY2x1ZGluZ1RoaXMgPCBjb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSkKKyAgICBpZiAoY29kZUJsb2NrICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihhcmdD
b3VudEluY2x1ZGluZ1RoaXMpIDwgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCiAgICAgICAg
IHRoaXMtPmhhc0FyaXR5TWlzbWF0Y2ggPSB0cnVlOwogICAgIGVsc2UKICAgICAgICAgdGhpcy0+
aGFzQXJpdHlNaXNtYXRjaCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4
IDY2YWQ4NGIwZDYyMGUxNjE0MDk4MDM2ZTJhNDJmZDRiYWUwODEzZWEuLjc2ZDFhNTE3ZDljODhk
MjA5NzAyNWY4NDQ1ZjY5YzllZDYzY2ZkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
QEAgLTc2OSw3ICs3NjksNyBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENv
bXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkg
PT0gRnVuY3Rpb25Db2RlKSB7CiAgICAgICAgIEFTU0VSVCghbV9ieXRlY29kZUluZGV4KTsKICAg
ICAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewotICAgICAgICAgICAgZm9yIChpbnQg
YXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7ICsr
YXJndW1lbnQpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1
bWVudCA8IG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7ICsrYXJndW1lbnQpIHsKICAgICAg
ICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgY29uc3RydWN0b3IsIHRoZW4gd2Ugd2FudCB0byBw
dXQgaW4gYSBkdW1teSBwcm9maWxpbmcgc2l0ZSAodG8KICAgICAgICAgICAgICAgICAvLyBrZWVw
IHRoaW5ncyBjb25zaXN0ZW50KSBidXQgd2UgZG9uJ3QgYWN0dWFsbHkgd2FudCB0byByZWNvcmQg
dGhlIGR1bW15IHZhbHVlLgogICAgICAgICAgICAgICAgIGlmIChtX2NvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpICYmICFhcmd1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYzc2YjE2MTBmOTk3YTQ4MmM0MGNlNzdlN2MyOGE2
NjNjYmUzOGQyYS4uODRlMmRhNWY3YWI2OGE2MjYyNDg1Y2I4Y2M0M2Y4MDU3MTQ4YzQ3MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAg
LTU3LDcgKzU3LDcgQEAgQUxXQVlTX0lOTElORSBpbnQgbnVtYmVyT2ZFeHRyYVNsb3RzKGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKIAogQUxXQVlTX0lOTElORSBpbnQgbnVtYmVyT2ZT
dGFja1BhZGRpbmdTbG90cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKQogewotICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+PSBj
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSA+PSBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaW50IGFsaWduZWRGcmFtZVNpemUgPSBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyk7CiAgICAg
aW50IGFsaWduZWRGcmFtZVNpemVGb3JQYXJhbWV0ZXJzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
ICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpOwpAQCAtNjYsNyArNjYsNyBAQCBB
TFdBWVNfSU5MSU5FIGludCBudW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3RzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBpbnQgYXJndW1lbnRDbwogCiBBTFdBWVNfSU5MSU5FIGludCBudW1iZXJPZlN0YWNr
UGFkZGluZ1Nsb3RzV2l0aEV4dHJhU2xvdHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykKIHsKLSAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPj0gY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCisgICAgaWYgKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgPj0gY29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBudW1iZXJPZlN0YWNr
UGFkZGluZ1Nsb3RzKGNvZGVCbG9jaywgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpICsgbnVt
YmVyT2ZFeHRyYVNsb3RzKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCmluZGV4IDFkMDljYTQzMmVmM2I4
M2M4MmZmN2M4ODNhZDU4NTJmN2ZmZmFjYzYuLmJiYmMyMzZkMjE3YTE1MGQ1YTg2ZWRmODA0ZjVi
N2YzOTYyMDhkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUlu
c3BlY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9y
LmNwcApAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgVk1JbnNwZWN0b3I6OmR1bXBSZWdpc3RlcnMo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAgIGVuZCA9IGl0OyAvLyBTdG9wIHRoZSBkdW1w
CiAgICAgfSBlbHNlIHsKICAgICAgICAgZW5kID0gYml0d2lzZV9jYXN0PGNvbnN0IFJlZ2lzdGVy
Kj4obmV4dENhbGxGcmFtZSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGl0IC0gZW5kIDwgY29k
ZUJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKSAtIGNvZGVCbG9jay0+bnVtVmFycygpKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGl0IC0gZW5kKSA8IGNvZGVC
bG9jay0+bnVtQ2FsbGVlTG9jYWxzKCkgLSBjb2RlQmxvY2stPm51bVZhcnMoKSk7CiAgICAgfQog
CiAgICAgaWYgKGl0ICE9IGVuZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRnVuY3Rpb25Db2RlQmxvY2suaAppbmRleCA3ZDY3Y2UxOWMzNTdjNmIzOWQzOWQxNjRj
MDUwMDEwZGFiMzM1MjZmLi5lYTc1ZmUyZjZiMGY5YTNmMTRlNzkzZWQxMTI3OGVmZDBlMDlhYzcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2Rl
QmxvY2suaApAQCAtNjUsMTUgKzY1LDE1IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB1aW50MzJf
dCBmdW5jdGlvbkluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbkluZGV4OyB9Ci0gICAg
aW50IG51bVZhcnMoKSBjb25zdCB7IHJldHVybiBtX251bVZhcnM7IH0KLSAgICBpbnQgbnVtQ2Fs
bGVlTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsZWVMb2NhbHM7IH0KKyAgICB1bnNp
Z25lZCBudW1WYXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1WYXJzOyB9CisgICAgdW5zaWduZWQg
bnVtQ2FsbGVlTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsZWVMb2NhbHM7IH0KICAg
ICB1aW50MzJfdCBudW1Bcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX251bUFyZ3VtZW50czsg
fQogICAgIGNvbnN0IFZlY3RvcjxUeXBlPiYgY29uc3RhbnRUeXBlcygpIGNvbnN0IHsgcmV0dXJu
IG1fY29uc3RhbnRUeXBlczsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNvbnN0YW50
cygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzOyB9CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb25T
dHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuICptX2luc3RydWN0aW9uczsgfQog
Ci0gICAgdm9pZCBzZXROdW1WYXJzKGludCBudW1WYXJzKSB7IG1fbnVtVmFycyA9IG51bVZhcnM7
IH0KLSAgICB2b2lkIHNldE51bUNhbGxlZUxvY2FscyhpbnQgbnVtQ2FsbGVlTG9jYWxzKSB7IG1f
bnVtQ2FsbGVlTG9jYWxzID0gbnVtQ2FsbGVlTG9jYWxzOyB9CisgICAgdm9pZCBzZXROdW1WYXJz
KHVuc2lnbmVkIG51bVZhcnMpIHsgbV9udW1WYXJzID0gbnVtVmFyczsgfQorICAgIHZvaWQgc2V0
TnVtQ2FsbGVlTG9jYWxzKHVuc2lnbmVkIG51bUNhbGxlZUxvY2FscykgeyBtX251bUNhbGxlZUxv
Y2FscyA9IG51bUNhbGxlZUxvY2FsczsgfQogCiAgICAgQUxXQVlTX0lOTElORSB1aW50NjRfdCBn
ZXRDb25zdGFudChWaXJ0dWFsUmVnaXN0ZXIgcmVnKSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50
c1tyZWcudG9Db25zdGFudEluZGV4KCldOyB9CiAgICAgQUxXQVlTX0lOTElORSBUeXBlIGdldENv
bnN0YW50VHlwZShWaXJ0dWFsUmVnaXN0ZXIgcmVnKSBjb25zdApAQCAtMTI2LDkgKzEyNiw5IEBA
IHByaXZhdGU6CiAgICAgdWludDMyX3QgbV9mdW5jdGlvbkluZGV4OwogCiAgICAgLy8gVXNlZCBm
b3IgdGhlIG51bWJlciBvZiBXZWJBc3NlbWJseSBsb2NhbHMsIGFzIGluIGh0dHBzOi8vd2ViYXNz
ZW1ibHkuZ2l0aHViLmlvL3NwZWMvY29yZS9zeW50YXgvbW9kdWxlcy5odG1sI3N5bnRheC1sb2Nh
bAotICAgIGludCBtX251bVZhcnMgeyAwIH07CisgICAgdW5zaWduZWQgbV9udW1WYXJzIHsgMCB9
OwogICAgIC8vIE51bWJlciBvZiBWaXJ0dWFsUmVnaXN0ZXIuIFRoZSBuYW1pbmcgaXMgdW5mb3J0
dW5hdGUsIGJ1dCBoYXMgdG8gbWF0Y2ggVW5saW5rZWRDb2RlQmxvY2sKLSAgICBpbnQgbV9udW1D
YWxsZWVMb2NhbHMgeyAwIH07CisgICAgdW5zaWduZWQgbV9udW1DYWxsZWVMb2NhbHMgeyAwIH07
CiAgICAgdWludDMyX3QgbV9udW1Bcmd1bWVudHMgeyAwIH07CiAgICAgVmVjdG9yPFR5cGU+IG1f
Y29uc3RhbnRUeXBlczsKICAgICBWZWN0b3I8dWludDY0X3Q+IG1fY29uc3RhbnRzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKaW5kZXgg
MDU0ZTMxZWQ2YmE0YTI4OWU4ZWNjNWU2ZDY3MThhZWU2NzYxMDVlOC4uMmExODExMTY4YTA2ZGIw
OTc3ZDE3NDBmZjQwZmI4NDExZTA2MDZkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgcHVibGlj
OgogICAgIEV4cHJlc3Npb25UeXBlIHB1c2goTm9Db25zaXN0ZW5jeUNoZWNrVGFnKQogICAgIHsK
ICAgICAgICAgbV9tYXhTdGFja1NpemUgPSBzdGQ6Om1heChtX21heFN0YWNrU2l6ZSwgKyttX3N0
YWNrU2l6ZSk7Ci0gICAgICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX3N0YWNr
U2l6ZSAtIDEpOworICAgICAgICByZXR1cm4gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoKG1fc3Rh
Y2tTaXplIC0gMSkudW5zYWZlR2V0KCkpOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25UeXBlIHB1
c2goKQpAQCAtMzE1LDcgKzMxNSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBzdGFydE9m
ZnNldCA9IHRhcmdldC5zdGFja1NpemUoKSArIDE7CiAgICAgICAgIGtlZXAgPSB0YXJnZXQuYnJh
bmNoVGFyZ2V0QXJpdHkoKTsKLSAgICAgICAgZHJvcCA9IG1fc3RhY2tTaXplIC0gdGFyZ2V0LnN0
YWNrU2l6ZSgpIC0gdGFyZ2V0LmJyYW5jaFRhcmdldEFyaXR5KCk7CisgICAgICAgIGRyb3AgPSAo
bV9zdGFja1NpemUgLSB0YXJnZXQuc3RhY2tTaXplKCkgLSB0YXJnZXQuYnJhbmNoVGFyZ2V0QXJp
dHkoKSkudW5zYWZlR2V0KCk7CiAgICAgfQogCiAgICAgdm9pZCBkcm9wS2VlcChTdGFjayYgdmFs
dWVzLCBjb25zdCBDb250cm9sVHlwZSYgdGFyZ2V0LCBib29sIGRyb3BWYWx1ZXMpCkBAIC0zNDgs
NyArMzQ4LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAg
IHZvaWQgd2Fsa0V4cHJlc3Npb25TdGFjayhTdGFjayYgZXhwcmVzc2lvblN0YWNrLCBjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQogICAgIHsKLSAgICAgICAgd2Fsa0V4cHJlc3Npb25TdGFjayhleHBy
ZXNzaW9uU3RhY2ssIG1fc3RhY2tTaXplLCBmdW5jdG9yKTsKKyAgICAgICAgd2Fsa0V4cHJlc3Np
b25TdGFjayhleHByZXNzaW9uU3RhY2ssIG1fc3RhY2tTaXplLnVuc2FmZUdldCgpLCBmdW5jdG9y
KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgpAQCAtMzczLDcgKzM3
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICB3YWxr
RXhwcmVzc2lvblN0YWNrKG1fcGFyc2VyLT5leHByZXNzaW9uU3RhY2soKSwgWyZdKFZpcnR1YWxS
ZWdpc3RlciBleHByZXNzaW9uLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgewotICAgICAgICAgICAg
QVNTRVJUKGV4cHJlc3Npb24gPT0gc2xvdCB8fCBleHByZXNzaW9uLmlzQ29uc3RhbnQoKSB8fCBl
eHByZXNzaW9uLmlzQXJndW1lbnQoKSB8fCBleHByZXNzaW9uLnRvTG9jYWwoKSA8IG1fY29kZUJs
b2NrLT5tX251bVZhcnMpOworICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24gPT0gc2xvdCB8
fCBleHByZXNzaW9uLmlzQ29uc3RhbnQoKSB8fCBleHByZXNzaW9uLmlzQXJndW1lbnQoKSB8fCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZXhwcmVzc2lvbi50b0xvY2FsKCkpIDwgbV9jb2RlQmxvY2st
Pm1fbnVtVmFycyk7CiAgICAgICAgIH0pOwogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAgICAg
fQpAQCAtMzg1LDcgKzM4NSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgY2hlY2tDb25zaXN0ZW5j
eSgpOwogICAgICAgICB3YWxrRXhwcmVzc2lvblN0YWNrKGV4cHJlc3Npb25TdGFjaywgWyZdKFR5
cGVkRXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgVmlydHVhbFJlZ2lzdGVyIHNsb3QpIHsKLSAgICAg
ICAgICAgIEFTU0VSVChleHByZXNzaW9uLnZhbHVlKCkgPT0gc2xvdCB8fCBleHByZXNzaW9uLnZh
bHVlKCkuaXNDb25zdGFudCgpIHx8IGV4cHJlc3Npb24udmFsdWUoKS5pc0FyZ3VtZW50KCkgfHwg
ZXhwcmVzc2lvbi52YWx1ZSgpLnRvTG9jYWwoKSA8IG1fY29kZUJsb2NrLT5tX251bVZhcnMpOwor
ICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24udmFsdWUoKSA9PSBzbG90IHx8IGV4cHJlc3Np
b24udmFsdWUoKS5pc0NvbnN0YW50KCkgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQXJndW1lbnQo
KSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZXhwcmVzc2lvbi52YWx1ZSgpLnRvTG9jYWwoKSkg
PCBtX2NvZGVCbG9jay0+bV9udW1WYXJzKTsKICAgICAgICAgICAgIGlmIChleHByZXNzaW9uLnZh
bHVlKCkgPT0gc2xvdCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBXYXNt
TW92OjplbWl0KHRoaXMsIHNsb3QsIGV4cHJlc3Npb24pOwpAQCAtNDAxLDcgKzQwMSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIG1fc3RhY2tTaXplIC09IG5ld1N0YWNrLnNpemUoKTsKICAgICAgICAg
Y2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgICB3YWxrRXhwcmVzc2lvblN0YWNrKGVuY2xvc2lu
Z1N0YWNrLCBbJl0oVHlwZWRFeHByZXNzaW9uJiBleHByZXNzaW9uLCBWaXJ0dWFsUmVnaXN0ZXIg
c2xvdCkgewotICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24udmFsdWUoKSA9PSBzbG90IHx8
IGV4cHJlc3Npb24udmFsdWUoKS5pc0NvbnN0YW50KCkgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlz
QXJndW1lbnQoKSB8fCBleHByZXNzaW9uLnZhbHVlKCkudG9Mb2NhbCgpIDwgbV9jb2RlQmxvY2st
Pm1fbnVtVmFycyk7CisgICAgICAgICAgICBBU1NFUlQoZXhwcmVzc2lvbi52YWx1ZSgpID09IHNs
b3QgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQ29uc3RhbnQoKSB8fCBleHByZXNzaW9uLnZhbHVl
KCkuaXNBcmd1bWVudCgpIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihleHByZXNzaW9uLnZhbHVl
KCkudG9Mb2NhbCgpKSA8IG1fY29kZUJsb2NrLT5tX251bVZhcnMpOwogICAgICAgICAgICAgaWYg
KGV4cHJlc3Npb24udmFsdWUoKSA9PSBzbG90IHx8IGV4cHJlc3Npb24udmFsdWUoKS5pc0NvbnN0
YW50KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgV2FzbU1vdjo6ZW1p
dCh0aGlzLCBzbG90LCBleHByZXNzaW9uKTsKQEAgLTQzMiw4ICs0MzIsOCBAQCBwcml2YXRlOgog
ICAgIFJlc3VsdExpc3QgbV91bml0aWFsaXplZExvY2FsczsKICAgICBIYXNoTWFwPEVuY29kZWRK
U1ZhbHVlLCBWaXJ0dWFsUmVnaXN0ZXIsIFdURjo6SW50SGFzaDxFbmNvZGVkSlNWYWx1ZT4sIENv
bnN0YW50TWFwSGFzaFRyYWl0cz4gbV9jb25zdGFudE1hcDsKICAgICBWZWN0b3I8VmlydHVhbFJl
Z2lzdGVyLCAyPiBtX3Jlc3VsdHM7Ci0gICAgdW5zaWduZWQgbV9zdGFja1NpemUgeyAwIH07Ci0g
ICAgdW5zaWduZWQgbV9tYXhTdGFja1NpemUgeyAwIH07CisgICAgQ2hlY2tlZDx1bnNpZ25lZD4g
bV9zdGFja1NpemUgeyAwIH07CisgICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV9tYXhTdGFja1NpemUg
eyAwIH07CiB9OwogCiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Db2RlQmxvY2s+
LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZUJ5dGVjb2RlKGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9u
U3RhcnQsIHNpemVfdCBmdW5jdGlvbkxlbmd0aCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUs
IGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4KQpA
QCAtNDgyLDcgKzQ4Miw5IEBAIExMSW50R2VuZXJhdG9yOjpMTEludEdlbmVyYXRvcihjb25zdCBN
b2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgdW5zaWduZWQgZnVuY3Rpb25JCiBzdGQ6OnVuaXF1ZV9w
dHI8RnVuY3Rpb25Db2RlQmxvY2s+IExMSW50R2VuZXJhdG9yOjpmaW5hbGl6ZSgpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQobV9jb2RlQmxvY2spOwotICAgIG1fY29kZUJsb2NrLT5tX251bUNhbGxl
ZUxvY2FscyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVy
cygpLCBtX21heFN0YWNrU2l6ZSk7CisgICAgc2l6ZV90IG51bUNhbGxlZUxvY2FscyA9IFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBtX21heFN0YWNr
U2l6ZS51bnNhZmVHZXQoKSk7CisgICAgbV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzID0g
bnVtQ2FsbGVlTG9jYWxzOworICAgIFJFTEVBU0VfQVNTRVJUKG51bUNhbGxlZUxvY2FscyA9PSBt
X2NvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpOwogCiAgICAgYXV0byYgdGhyZWFkU3BlY2lm
aWMgPSB0aHJlYWRTcGVjaWZpY0J1ZmZlcigpOwogICAgIEJ1ZmZlciB1c2VkQnVmZmVyOwpAQCAt
NTcxLDcgKzU3Myw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNh
bGxlcihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gTExJCiAgICAgLy8gRklYTUU6IHdl
IGFyZSBhbGxvY2F0aW5nIHRoZSBleHRyYSBzcGFjZSBmb3IgdGhlIGFyZ3VtZW50L3JldHVybiBj
b3VudCBpbiBvcmRlciB0byBhdm9pZCBpbnRlcmZlcmVuY2UsIGJ1dCB3ZSBjb3VsZCBkbyBiZXR0
ZXIKICAgICAvLyBOT1RFOiBXZSBpbmNyZWFzZSBhcmcgY291bnQgYnkgMSBmb3IgdGhlIGNhc2Ug
b2YgaW5kaXJlY3QgY2FsbHMKICAgICBtX3N0YWNrU2l6ZSArPSBzdGQ6Om1heChzaWduYXR1cmUu
YXJndW1lbnRDb3VudCgpICsgMSwgc2lnbmF0dXJlLnJldHVybkNvdW50KCkpICsgZ3ByQ291bnQg
KyBmcHJDb3VudCArIHN0YWNrQ291bnQgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVy
czsKLSAgICBpZiAobV9zdGFja1NpemUgJSBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpKQorICAg
IGlmIChtX3N0YWNrU2l6ZS51bnNhZmVHZXQoKSAlIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkp
CiAgICAgICAgICsrbV9zdGFja1NpemU7CiAgICAgaWYgKG1fbWF4U3RhY2tTaXplIDwgbV9zdGFj
a1NpemUpCiAgICAgICAgIG1fbWF4U3RhY2tTaXplID0gbV9zdGFja1NpemU7CkBAIC01ODAsNyAr
NTgyLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNv
bnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEkKICAgICBSZXN1bHRMaXN0IGFyZ3VtZW50
cyhzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpKTsKICAgICBSZXN1bHRMaXN0IHRlbXBvcmFyeVJl
c3VsdHMoc2lnbmF0dXJlLnJldHVybkNvdW50KCkpOwogCi0gICAgY29uc3QgdW5zaWduZWQgc3Rh
Y2tPZmZzZXQgPSBtX3N0YWNrU2l6ZTsKKyAgICBjb25zdCB1bnNpZ25lZCBzdGFja09mZnNldCA9
IG1fc3RhY2tTaXplLnVuc2FmZUdldCgpOwogICAgIGNvbnN0IHVuc2lnbmVkIGJhc2UgPSBzdGFj
a09mZnNldCAtIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwogCiAgICAgY29uc3Qg
dWludDMyX3QgZ3ByTGltaXQgPSBiYXNlIC0gc3RhY2tDb3VudCAtIGdwckNvdW50OwpAQCAtODcz
LDcgKzg3NSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZExvb3AoQmxvY2tTaWduYXR1cmUg
c2lnbmF0dXJlLCBTdGFjayYgZW5jbG9zaW5nU3RhY2ssIENvCiAgICAgUmVmPExhYmVsPiBib2R5
ID0gbmV3RW1pdHRlZExhYmVsKCk7CiAgICAgUmVmPExhYmVsPiBjb250aW51YXRpb24gPSBuZXdM
YWJlbCgpOwogCi0gICAgYmxvY2sgPSBDb250cm9sVHlwZTo6bG9vcChzaWduYXR1cmUsIG1fc3Rh
Y2tTaXplLCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOworICAgIGJsb2Nr
ID0gQ29udHJvbFR5cGU6Omxvb3Aoc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZS51bnNhZmVHZXQoKSwg
V1RGTW92ZShib2R5KSwgV1RGTW92ZShjb250aW51YXRpb24pKTsKIAogICAgIFZlY3RvcjxWaXJ0
dWFsUmVnaXN0ZXI+IG9zckVudHJ5RGF0YTsKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwg
bV9jb2RlQmxvY2stPm1fbnVtQXJndW1lbnRzOyBpKyspCkBAIC04ODIsNyArODg0LDcgQEAgYXV0
byBMTEludEdlbmVyYXRvcjo6YWRkTG9vcChCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNr
JiBlbmNsb3NpbmdTdGFjaywgQ28KICAgICBjb25zdCBhdXRvJiBjYWxsaW5nQ29udmVudGlvbiA9
IHdhc21DYWxsaW5nQ29udmVudGlvbigpOwogICAgIGNvbnN0IHVpbnQzMl90IGdwckNvdW50ID0g
Y2FsbGluZ0NvbnZlbnRpb24uZ3ByQXJncy5zaXplKCk7CiAgICAgY29uc3QgdWludDMyX3QgZnBy
Q291bnQgPSBjYWxsaW5nQ29udmVudGlvbi5mcHJBcmdzLnNpemUoKTsKLSAgICBmb3IgKGludDMy
X3QgaSA9IGdwckNvdW50ICsgZnByQ291bnQgKyBudW1iZXJPZkxMSW50Q2FsbGVlU2F2ZVJlZ2lz
dGVyczsgaSA8IG1fY29kZUJsb2NrLT5tX251bVZhcnM7IGkrKykKKyAgICBmb3IgKHVpbnQzMl90
IGkgPSBncHJDb3VudCArIGZwckNvdW50ICsgbnVtYmVyT2ZMTEludENhbGxlZVNhdmVSZWdpc3Rl
cnM7IGkgPCBtX2NvZGVCbG9jay0+bV9udW1WYXJzOyBpKyspCiAgICAgICAgIG9zckVudHJ5RGF0
YS5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOwogICAgIGZvciAodW5zaWduZWQg
Y29udHJvbEluZGV4ID0gMDsgY29udHJvbEluZGV4IDwgbV9wYXJzZXItPmNvbnRyb2xTdGFjaygp
LnNpemUoKTsgKytjb250cm9sSW5kZXgpIHsKICAgICAgICAgU3RhY2smIGV4cHJlc3Npb25TdGFj
ayA9IG1fcGFyc2VyLT5jb250cm9sU3RhY2soKVtjb250cm9sSW5kZXhdLmVuY2xvc2VkRXhwcmVz
c2lvblN0YWNrOwpAQCAtOTAxLDEzICs5MDMsMTMgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRk
TG9vcChCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ28K
IAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkVG9wTGV2ZWwoQmxvY2tTaWduYXR1cmUgc2lnbmF0
dXJlKSAtPiBDb250cm9sVHlwZQogewotICAgIHJldHVybiBDb250cm9sVHlwZTo6dG9wTGV2ZWwo
c2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgbmV3TGFiZWwoKSk7CisgICAgcmV0dXJuIENvbnRyb2xU
eXBlOjp0b3BMZXZlbChzaWduYXR1cmUsIG1fc3RhY2tTaXplLnVuc2FmZUdldCgpLCBuZXdMYWJl
bCgpKTsKIH0KIAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQmxvY2soQmxvY2tTaWduYXR1cmUg
c2lnbmF0dXJlLCBTdGFjayYgZW5jbG9zaW5nU3RhY2ssIENvbnRyb2xUeXBlJiBuZXdCbG9jaywg
U3RhY2smIG5ld1N0YWNrKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgc3BsaXRTdGFjayhzaWdu
YXR1cmUsIGVuY2xvc2luZ1N0YWNrLCBuZXdTdGFjayk7Ci0gICAgbmV3QmxvY2sgPSBDb250cm9s
VHlwZTo6YmxvY2soc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgbmV3TGFiZWwoKSk7CisgICAgbmV3
QmxvY2sgPSBDb250cm9sVHlwZTo6YmxvY2soc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZS51bnNhZmVH
ZXQoKSwgbmV3TGFiZWwoKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtOTIwLDcgKzkyMiw3
IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZElmKEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwg
QmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTCiAKICAgICBXYXNtSmZhbHNlOjplbWl0KHRoaXMs
IGNvbmRpdGlvbiwgYWx0ZXJuYXRlLT5iaW5kKHRoaXMpKTsKIAotICAgIHJlc3VsdCA9IENvbnRy
b2xUeXBlOjppZl8oc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgV1RGTW92ZShhbHRlcm5hdGUpLCBX
VEZNb3ZlKGNvbnRpbnVhdGlvbikpOworICAgIHJlc3VsdCA9IENvbnRyb2xUeXBlOjppZl8oc2ln
bmF0dXJlLCBtX3N0YWNrU2l6ZS51bnNhZmVHZXQoKSwgV1RGTW92ZShhbHRlcm5hdGUpLCBXVEZN
b3ZlKGNvbnRpbnVhdGlvbikpOwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTkzOCw3ICs5NDAs
NyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRFbHNlVG9VbnJlYWNoYWJsZShDb250cm9sVHlw
ZSYgZGF0YSkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgQ29udHJvbElmJiBjb250cm9sID0gV1RG
OjpnZXQ8Q29udHJvbElmPihkYXRhKTsKICAgICBlbWl0TGFiZWwoY29udHJvbC5tX2FsdGVybmF0
ZS5nZXQoKSk7Ci0gICAgZGF0YSA9IENvbnRyb2xUeXBlOjpibG9jayhkYXRhLm1fc2lnbmF0dXJl
LCBtX3N0YWNrU2l6ZSwgV1RGTW92ZShkYXRhLm1fY29udGludWF0aW9uKSk7CisgICAgZGF0YSA9
IENvbnRyb2xUeXBlOjpibG9jayhkYXRhLm1fc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZS51bnNhZmVH
ZXQoKSwgV1RGTW92ZShkYXRhLm1fY29udGludWF0aW9uKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>