<?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>226541</bug_id>
          
          <creation_ts>2021-06-02 09:54:43 -0700</creation_ts>
          <short_desc>All CodeBlocks should be asynchronously sweepable.</short_desc>
          <delta_ts>2021-06-05 18:39:44 -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>NEW</bug_status>
          <resolution></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>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <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>1766048</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-06-02 09:54:43 -0700</bug_when>
    <thetext>All CodeBlocks should be asynchronously sweepable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766049</commentid>
    <comment_count>1</comment_count>
      <attachid>430370</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-06-02 09:55:02 -0700</bug_when>
    <thetext>Created attachment 430370
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766149</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-02 14:06:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/78782125&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767177</commentid>
    <comment_count>3</comment_count>
      <attachid>430668</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-06-05 18:38:40 -0700</bug_when>
    <thetext>Created attachment 430668
LastPatch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767178</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-06-05 18:39:44 -0700</bug_when>
    <thetext>Seems to be a 1-2% Speedo regression. I couldn&apos;t figure out where the regression came from. It doesn&apos;t seem to come from iterating the codeblock set with Subspace::forEachLiveObject instead of the CodeBlockSet. We also don&apos;t spend more than .3% of our time in CodeBlock destructors so it&apos;s not that the code blocks themselves got slower.

My assumption is that the regression came from lost cache locality when destroying the code blocks.

I&apos;m gonna give up on this for now since I can&apos;t identify the reasoning for the slowdown.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430370</attachid>
            <date>2021-06-02 09:55:02 -0700</date>
            <delta_ts>2021-06-05 18:38:37 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-226541-20210602125501.patch</filename>
            <type>text/plain</type>
            <size>26736</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi5jMmQ0OWYyYWExM2MzMjFk
ZjRjZGUwMTM2Njc5MDAyMmM4NGM2ZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAyMS0wNi0wMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBbGwgQ29kZUJsb2NrcyBzaG91bGQgYmUgYXN5bmNocm9ub3VzbHkg
c3dlZXBhYmxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI2NTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNv
ZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNJZGVu
dGlmaWVyKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjp1bmxpbmtlZENvZGVCbG9jayBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6bnVtVG1wcyBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aXNDb25zdHJ1
Y3RvciBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y29kZVR5cGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNjcmlwdE1vZGUgY29uc3QpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Omluc3RydWN0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dGhpc1Jl
Z2lzdGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1c2VzQ2FsbEV2YWwgY29u
c3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mSnVtcFRhcmdldHMgY29uc3Qp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omp1bXBUYXJnZXQgY29uc3QpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6Omhhc0V4cHJlc3Npb25JbmZvKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpudW1iZXJPZklkZW50aWZpZXJzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb25zdGFudFNv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
Yml0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxl
cyBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5rZWRTd2l0Y2hKdW1wVGFi
bGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0
Y2hKdW1wVGFibGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtlZFN0
cmluZ1N3aXRjaEp1bXBUYWJsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6d2FzQ29tcGls
ZWRXaXRoRGVidWdnaW5nT3Bjb2RlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
aGFzVGFpbENhbGxzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjptZXRhZGF0YVNp
emVJbkJ5dGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsb29wSGludHNBcmVFbGlnaWJs
ZUZvckZ1enppbmdFYXJseVJldHVybik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6flVubGlua2VkQ29k
ZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aW5jb21pbmdDb2RlQmxvY2tzKToKKyAgICAgICAg
KiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpkZWxldGVVbm1hcmtlZENvbXBp
bGVkQ29kZSk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorCiAyMDIxLTA2LTAx
ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAg
W1dQRV1bR1RLXSBTdXBwb3J0IGJ1aWxkaW5nIGFnYWluc3QgdUNsaWJjCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRjOWRiNzVl
YzU4ZGFhODgzZmRhOGZmNjZlNGU5Yzg4ZTMxYTVmMGUuLmUxYWNiNjZhNTllMGMyNjcxZGYxNTU5
MTQxODJhZmVkMWIyMjZlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDYtMDIgIEtlaXRo
IE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsIENvZGVCbG9j
a3Mgc2hvdWxkIGJlIGFzeW5jaHJvbm91c2x5IHN3ZWVwYWJsZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjU0MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5o
OgorICAgICAgICAoV1RGOjpQYWNrZWRSYXdTZW50aW5lbE5vZGVNZW1iZXI6OlBhY2tlZFJhd1Nl
bnRpbmVsTm9kZU1lbWJlcik6CisgICAgICAgIChXVEY6OlBhY2tlZFJhd1NlbnRpbmVsTm9kZU1l
bWJlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UGFja2VkUmF3U2VudGluZWxOb2RlTWVt
YmVyOjpvcGVyYXRvci0+KToKKyAgICAgICAgKFdURjo6UGFja2VkUmF3U2VudGluZWxOb2RlTWVt
YmVyOjpvcGVyYXRvci0+IGNvbnN0KToKKwogMjAyMS0wNi0wMSAgQWRyaWFuIFBlcmV6IGRlIENh
c3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdW0dUS10gU3VwcG9ydCBi
dWlsZGluZyBhZ2FpbnN0IHVDbGliYwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCBhODU0NDUyYjllODE5NGVlYWJiM2RjM2M0MzMxYWI5Y2EyNDMx
YjdmLi5lN2I1ZGZiN2Y1MTM2OTkxZWU2NDhjNDI2OGZmOTlkYzg0OWU0YmUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMjkxLDcgKzI5MSw3
IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENv
cHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrCiAgICAgLCBtX2J5dGVjb2RlQ29zdChvdGhlci5t
X2J5dGVjb2RlQ29zdCkKICAgICAsIG1fc2NvcGVSZWdpc3RlcihvdGhlci5tX3Njb3BlUmVnaXN0
ZXIpCiAgICAgLCBtX2hhc2gob3RoZXIubV9oYXNoKQotICAgICwgbV91bmxpbmtlZENvZGUob3Ro
ZXIudm0oKSwgdGhpcywgb3RoZXIubV91bmxpbmtlZENvZGUuZ2V0KCkpCisgICAgLCBtX3VubGlu
a2VkQ29kZShvdGhlci52bSgpLCB0aGlzLCBvdGhlci51bmxpbmtlZENvZGVCbG9jaygpKQogICAg
ICwgbV9vd25lckV4ZWN1dGFibGUob3RoZXIudm0oKSwgdGhpcywgb3RoZXIubV9vd25lckV4ZWN1
dGFibGUuZ2V0KCkpCiAgICAgLCBtX3ZtKG90aGVyLm1fdm0pCiAgICAgLCBtX2luc3RydWN0aW9u
c1Jhd1BvaW50ZXIob3RoZXIubV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyKQpAQCAtMzA0LDYgKzMw
NCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrCiAgICAgLCBtX21ldGFkYXRhKG90aGVyLm1f
bWV0YWRhdGEpCiAgICAgLCBtX2NyZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKIHsK
KyAgICBtX3VubGlua2VkQ29kZS0+aW5jb21pbmdDb2RlQmxvY2tzKCkuYXBwZW5kKCZtX3VubGlu
a2VkQ29kZSk7CiAgICAgQVNTRVJUKGhlYXAoKS0+aXNEZWZlcnJlZCgpKTsKICAgICBBU1NFUlQo
bV9zY29wZVJlZ2lzdGVyLmlzTG9jYWwoKSk7CiAKQEAgLTMyNSw2ICszMjYsOCBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVC
bG9jayYgb3RoZXIpCiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycyA9IG90aGVyLm1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnM7CiAgICAgfQorCisgICAgQVNTRVJUKHVubGlua2VkQ29kZUJsb2Nr
KCkpOwogfQogCiBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2Nr
KiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29wZSogc2NvcGUpCkBAIC0zNTUsNiArMzU4LDcgQEAg
Q29kZUJsb2NrOjpDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXQKICAgICAsIG1fbWV0YWRhdGEodW5saW5rZWRDb2RlQmxv
Y2stPm1ldGFkYXRhKCkubGluaygpKQogICAgICwgbV9jcmVhdGlvblRpbWUoTW9ub3RvbmljVGlt
ZTo6bm93KCkpCiB7CisgICAgbV91bmxpbmtlZENvZGUtPmluY29taW5nQ29kZUJsb2NrcygpLmFw
cGVuZCgmbV91bmxpbmtlZENvZGUpOwogICAgIEFTU0VSVChoZWFwKCktPmlzRGVmZXJyZWQoKSk7
CiAgICAgQVNTRVJUKG1fc2NvcGVSZWdpc3Rlci5pc0xvY2FsKCkpOwogCkBAIC03OTYsMTAgKzgw
MCwxMiBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogICAgIC8vIFRoaXMgYXNzZXJ0aW9uIGlz
IGNvcnJlY3Qgc2luY2UgZGVzdHJ1Y3Rpb24gb3JkZXIgb2YgY2VsbHMgaXMgbm90IGd1YXJhbnRl
ZWQsIGFuZCBtZW1iZXIgY2VsbHMgY291bGQgYWxyZWFkeSBiZSBkZXN0cm95ZWQuCiAgICAgLy8g
QnV0IGZvciBDb2RlQmxvY2ssIHdlIGFyZSBlbnN1cmluZyB0aGUgb3JkZXI6IENvZGVCbG9jayBn
ZXRzIGRlc3Ryb3llZCBiZWZvcmUgVW5saW5rZWRDb2RlQmxvY2sgZ2V0cyBkZXN0cm95ZWQuCiAg
ICAgLy8gU28sIHdlIGNhbiBhY2Nlc3MgbWVtYmVyIFVubGlua2VkQ29kZUJsb2NrIHNhZmVseSBo
ZXJlLiBXZSBieXBhc3MgdGhlIGFzc2VydGlvbiBieSB1c2luZyB1bnZhbGlkYXRlZEdldC4KLSAg
ICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX3VubGlua2VkQ29kZS51
bnZhbGlkYXRlZEdldCgpOworICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGUgPSBt
X3VubGlua2VkQ29kZS5kYXRhLnVudmFsaWRhdGVkR2V0KCk7CisgICAgaWYgKG1fdW5saW5rZWRD
b2RlLmlzT25MaXN0KCkpCisgICAgICAgIG1fdW5saW5rZWRDb2RlLnJlbW92ZSgpOwogCi0gICAg
aWYgKFVOTElLRUxZKE9wdGlvbnM6OnJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6
aW5nKCkgJiYgSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSgpKSkpIHsKLSAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBpbnN0cnVjdGlvbiA6IHVubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKSkgeworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXR1cm5FYXJseUZyb21JbmZp
bml0ZUxvb3BzRm9yRnV6emluZygpICYmIEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUo
KSkgJiYgdW5saW5rZWRDb2RlKSkgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0
aW9uIDogdW5saW5rZWRDb2RlLT5pbnN0cnVjdGlvbnMoKSkgewogICAgICAgICAgICAgaWYgKGlu
c3RydWN0aW9uLT5pczxPcExvb3BIaW50PigpKQogICAgICAgICAgICAgICAgIHZtLnJlbW92ZUxv
b3BIaW50RXhlY3V0aW9uQ291bnRlcihpbnN0cnVjdGlvbi5wdHIoKSk7CiAgICAgICAgIH0KQEAg
LTgzOSw4ICs4NDUsOCBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogICAgIGlmIChVTkxJS0VM
WSh2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpKQogICAgICAgICB2bS5tX3BlckJ5dGVjb2RlUHJv
ZmlsZXItPm5vdGlmeURlc3RydWN0aW9uKHRoaXMpOwogCi0gICAgaWYgKCF2bS5oZWFwLmlzU2h1
dHRpbmdEb3duKCkgJiYgdW5saW5rZWRDb2RlQmxvY2stPmRpZE9wdGltaXplKCkgPT0gVHJpU3Rh
dGU6OkluZGV0ZXJtaW5hdGUpCi0gICAgICAgIHVubGlua2VkQ29kZUJsb2NrLT5zZXREaWRPcHRp
bWl6ZShUcmlTdGF0ZTo6RmFsc2UpOworICAgIGlmIChVTkxJS0VMWSghdm0uaGVhcC5pc1NodXR0
aW5nRG93bigpKSAmJiB1bmxpbmtlZENvZGUgJiYgdW5saW5rZWRDb2RlLT5kaWRPcHRpbWl6ZSgp
ID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICB1bmxpbmtlZENvZGUtPnNldERp
ZE9wdGltaXplKFRyaVN0YXRlOjpGYWxzZSk7CiAKICNpZiBFTkFCTEUoVkVSQk9TRV9WQUxVRV9Q
Uk9GSUxFKQogICAgIGR1bXBWYWx1ZVByb2ZpbGVzKCk7CkBAIC04NTQsMTIgKzg2MCwxNyBAQCBD
b2RlQmxvY2s6On5Db2RlQmxvY2soKQogICAgIC8vIGRlc3RydWN0b3Igd2lsbCB0cnkgdG8gcmVt
b3ZlIG5vZGVzIGZyb20gb3VyIChubyBsb25nZXIgdmFsaWQpIGxpbmtlZCBsaXN0LgogICAgIHVu
bGlua0luY29taW5nQ2FsbHMoKTsKICAgICAKLSAgICAvLyBOb3RlIHRoYXQgb3VyIG91dGdvaW5n
IGNhbGxzIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIG90aGVyIENvZGVCbG9ja3MnCi0gICAgLy8gbV9p
bmNvbWluZ0NhbGxzIGxpbmtlZCBsaXN0cyB0aHJvdWdoIHRoZSBleGVjdXRpb24gb2YgdGhlIH5D
YWxsTGlua0luZm8KLSAgICAvLyBkZXN0cnVjdG9ycy4KLQogI2lmIEVOQUJMRShKSVQpCiAgICAg
aWYgKGF1dG8qIGppdERhdGEgPSBtX2ppdERhdGEuZ2V0KCkpIHsKKyAgICAgICAgZm9yIChDYWxs
TGlua0luZm8qIGluZm8gOiBqaXREYXRhLT5tX2NhbGxMaW5rSW5mb3MpIHsKKyAgICAgICAgICAg
IC8vIEknbSBub3Qgc3VyZSB0aGlzIGlzIHN0cmljdGx5IG5lY2Vzc2FyeSBzaW5jZSBkZXN0cnVj
dGluZyB0aGUgQ2FsbExpbmtJbmZvIHdoZW4gd2UgZnJlZSB0aGUgQmFnIHNob3VsZCByZW1vdmUg
dGhpcyBmcm9tIHRoZSBjYWxsZWUncyBsaXN0LgorICAgICAgICAgICAgaWYgKGluZm8tPnN0dWIo
KSkKKyAgICAgICAgICAgICAgICBpbmZvLT5jbGVhclN0dWIoKTsKKworICAgICAgICAgICAgLy8g
VGhpcyB3b3JrcyBiZWNhdXNlIGVpdGhlciB3ZSBoYXZlIG5vdCBzd2VwdCB0aGUgY2FsbGVlJ3Mg
Q29kZUJsb2NrIHRodXMgdGhlIFNlbnRpbmVsTGlua0xpc3Qgb24gaXQncyBKSVQgZGF0YSBpcyBh
bGl2ZSBvciBpdCB3aWxsIGhhdmUgYWxyZWFkeSByZW1vdmVkIHVzIGZyb20gdGhlIGxpc3QgZHVy
aW5nIHRoZSB1bmxpbmtJbmNvbW1pbmdDYWxscygpIGFib3ZlLgorICAgICAgICAgICAgaW5mby0+
dW5saW5rKHZtKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZvciAoU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsKICAgICAgICAgICAgIHN0dWJJbmZv
LT5hYm91dFRvRGllKCk7CiAgICAgICAgICAgICBzdHViSW5mby0+ZGVyZWYoKTsKQEAgLTE4MTIs
NyArMTgyMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNl
cyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwKICAgICAKICAgICB2aXNpdG9yLmFw
cGVuZChtX2dsb2JhbE9iamVjdCk7CiAgICAgdmlzaXRvci5hcHBlbmQobV9vd25lckV4ZWN1dGFi
bGUpOyAvLyBUaGlzIGlzIGV4dHJhIGltcG9ydGFudCBzaW5jZSBpdCBjYXVzZXMgdGhlIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2UgdG8gYmUgbWFya2VkLgotICAgIHZpc2l0b3IuYXBwZW5kKG1f
dW5saW5rZWRDb2RlKTsKKyAgICB2aXNpdG9yLmFwcGVuZChtX3VubGlua2VkQ29kZS5kYXRhKTsK
ICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgbV9yYXJlRGF0YS0+bV9kaXJlY3RFdmFsQ29k
ZUNhY2hlLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVz
KG1fY29uc3RhbnRSZWdpc3RlcnMuZGF0YSgpLCBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUoKSk7
CkBAIC0yODQyLDcgKzI4NTMsNyBAQCBzaXplX3QgQ29kZUJsb2NrOjpudW1iZXJPZkRGR0lkZW50
aWZpZXJzKCkgY29uc3QKIAogY29uc3QgSWRlbnRpZmllciYgQ29kZUJsb2NrOjppZGVudGlmaWVy
KGludCBpbmRleCkgY29uc3QKIHsKLSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2Rl
ID0gbV91bmxpbmtlZENvZGUuZ2V0KCk7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2Vk
Q29kZSA9IHVubGlua2VkQ29kZUJsb2NrKCk7CiAgICAgc2l6ZV90IHVubGlua2VkSWRlbnRpZmll
cnMgPSB1bmxpbmtlZENvZGUtPm51bWJlck9mSWRlbnRpZmllcnMoKTsKICAgICBpZiAoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSA8IHVubGlua2VkSWRlbnRpZmllcnMpCiAgICAgICAgIHJl
dHVybiB1bmxpbmtlZENvZGUtPmlkZW50aWZpZXIoaW5kZXgpOwpAQCAtMjg1NCw3ICsyODY1LDcg
QEAgY29uc3QgSWRlbnRpZmllciYgQ29kZUJsb2NrOjppZGVudGlmaWVyKGludCBpbmRleCkgY29u
c3QKICNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBDb2RlQmxvY2s6Omhhc0lkZW50aWZpZXIoVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKLSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRD
b2RlID0gbV91bmxpbmtlZENvZGUuZ2V0KCk7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlu
a2VkQ29kZSA9IHVubGlua2VkQ29kZUJsb2NrKCk7CiAgICAgc2l6ZV90IHVubGlua2VkSWRlbnRp
ZmllcnMgPSB1bmxpbmtlZENvZGUtPm51bWJlck9mSWRlbnRpZmllcnMoKTsKICNpZiBFTkFCTEUo
REZHX0pJVCkKICAgICBzaXplX3QgbnVtYmVyT2ZERkdJZGVudGlmaWVycyA9IHRoaXMtPm51bWJl
ck9mREZHSWRlbnRpZmllcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAppbmRleCBhMzY5ZTExMDA5MTBhNzZiM2UyZGNiODhjNzkyNTA2ZmMwMDc0ZTU0Li42
YzJiNDMwMzJjYWIzOGNlZWU2NzBjY2Y2ZTQ3OWY3ODE5MWMyMTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJvdGVj
dGVkOgogcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5Db2RlQmxvY2soKTsKIAotICAg
IFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1f
dW5saW5rZWRDb2RlLmdldCgpOyB9CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29k
ZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUuZGF0YS5nZXQoKTsgfQogCiAg
ICAgQ1N0cmluZyBpbmZlcnJlZE5hbWUoKSBjb25zdDsKICAgICBDb2RlQmxvY2tIYXNoIGhhc2go
KSBjb25zdDsKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbnVtQ2Fs
bGVlTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsZWVMb2NhbHM7IH0KIAogICAgIHVu
c2lnbmVkIG51bVZhcnMoKSBjb25zdCB7IHJldHVybiBtX251bVZhcnM7IH0KLSAgICB1bnNpZ25l
ZCBudW1UbXBzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmhhc0NoZWNrcG9pbnRz
KCkgKiBtYXhOdW1DaGVja3BvaW50VG1wczsgfQorICAgIHVuc2lnbmVkIG51bVRtcHMoKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkQ29kZS5kYXRhLT5oYXNDaGVja3BvaW50cygpICogbWF4TnVt
Q2hlY2twb2ludFRtcHM7IH0KIAogICAgIHVuc2lnbmVkKiBhZGRyZXNzT2ZOdW1QYXJhbWV0ZXJz
KCkgeyByZXR1cm4gJm1fbnVtUGFyYW1ldGVyczsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZOdW1QYXJhbWV0ZXJzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvZGVCbG9jaywg
bV9udW1QYXJhbWV0ZXJzKTsgfQpAQCAtMjI1LDEwICsyMjUsMTAgQEAgcHVibGljOgogCiAgICAg
dm9pZCBkdW1wTWF0aElDU3RhdHMoKTsKIAotICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5pc0NvbnN0cnVjdG9yKCk7IH0KLSAgICBDb2RlVHlw
ZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5jb2RlVHlwZSgpOyB9
CisgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUu
ZGF0YS0+aXNDb25zdHJ1Y3RvcigpOyB9CisgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkQ29kZS5kYXRhLT5jb2RlVHlwZSgpOyB9CiAKLSAgICBKU1BhcnNl
clNjcmlwdE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5z
Y3JpcHRNb2RlKCk7IH0KKyAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLmRhdGEtPnNjcmlwdE1vZGUoKTsgfQogCiAgICAgYm9v
bCBoYXNJbnN0YWxsZWRWTVRyYXBCcmVha3BvaW50cygpIGNvbnN0OwogICAgIGJvb2wgaW5zdGFs
bFZNVHJhcEJyZWFrcG9pbnRzKCk7CkBAIC0zNjUsNyArMzY1LDcgQEAgcHVibGljOgogICAgIGNv
bnN0IEluc3RydWN0aW9uKiBvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IEluc3RydWN0aW9uKiBw
Yyk7CiAgICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCBvZmZzZXQpCiAgICAgewotICAgICAgICByZXR1cm4gbV91bmxpbmtlZENvZGUtPm91dE9mTGlu
ZUp1bXBPZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG1fdW5saW5rZWRDb2RlLmRhdGEt
Pm91dE9mTGluZUp1bXBPZmZzZXQob2Zmc2V0KTsKICAgICB9CiAgICAgaW50IG91dE9mTGluZUp1
bXBPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKTsKICAgICBpbnQgb3V0T2ZMaW5lSnVtcE9m
ZnNldChjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKQEAgLTM4Niw3
ICszODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBCeXRlY29kZUluZGV4KGJ5dGVjb2Rl
T2Zmc2V0KHJldHVybkFkZHJlc3MpKTsKICAgICB9CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0
cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmluc3Ry
dWN0aW9ucygpOyB9CisgICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLmRhdGEtPmluc3RydWN0aW9ucygpOyB9CiAg
ICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uQXQoQnl0ZWNvZGVJbmRleCBpbmRleCkg
Y29uc3QgeyByZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQoaW5kZXgpLnB0cigpOyB9CiAKICAgICBz
aXplX3QgcHJlZGljdGVkTWFjaGluZUNvZGVTaXplKCk7CkBAIC00NDIsOSArNDQyLDkgQEAgcHVi
bGljOgogCiAgICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gKm1fdm07IH0KIAotICAgIFZpcnR1
YWxSZWdpc3RlciB0aGlzUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+
dGhpc1JlZ2lzdGVyKCk7IH0KKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc1JlZ2lzdGVyKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUuZGF0YS0+dGhpc1JlZ2lzdGVyKCk7IH0KIAotICAg
IGJvb2wgdXNlc0NhbGxFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPnVzZXND
YWxsRXZhbCgpOyB9CisgICAgYm9vbCB1c2VzQ2FsbEV2YWwoKSBjb25zdCB7IHJldHVybiBtX3Vu
bGlua2VkQ29kZS5kYXRhLT51c2VzQ2FsbEV2YWwoKTsgfQogCiAgICAgdm9pZCBzZXRTY29wZVJl
Z2lzdGVyKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyKQogICAgIHsKQEAgLTQ2OCw4ICs0
NjgsOCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc291cmNlT2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7IH0KICAgICB1bnNp
Z25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX293bmVyRXhlY3V0
YWJsZS0+c3RhcnRDb2x1bW4oKTsgfQogCi0gICAgc2l6ZV90IG51bWJlck9mSnVtcFRhcmdldHMo
KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpOyB9
Ci0gICAgdW5zaWduZWQganVtcFRhcmdldChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRDb2RlLT5qdW1wVGFyZ2V0KGluZGV4KTsgfQorICAgIHNpemVfdCBudW1iZXJPZkp1bXBU
YXJnZXRzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUuZGF0YS0+bnVtYmVyT2ZKdW1w
VGFyZ2V0cygpOyB9CisgICAgdW5zaWduZWQganVtcFRhcmdldChpbnQgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5saW5rZWRDb2RlLmRhdGEtPmp1bXBUYXJnZXQoaW5kZXgpOyB9CiAKICAgICBT
dHJpbmcgbmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcik7CiAKQEAgLTUxMCw3ICs1MTAs
NyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG51bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycy5z
aXplKCkgOiAwOyB9CiAgICAgSGFuZGxlckluZm8mIGV4Y2VwdGlvbkhhbmRsZXIoaW50IGluZGV4
KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9leGNl
cHRpb25IYW5kbGVyc1tpbmRleF07IH0KIAotICAgIGJvb2wgaGFzRXhwcmVzc2lvbkluZm8oKSB7
IHJldHVybiBtX3VubGlua2VkQ29kZS0+aGFzRXhwcmVzc2lvbkluZm8oKTsgfQorICAgIGJvb2wg
aGFzRXhwcmVzc2lvbkluZm8oKSB7IHJldHVybiBtX3VubGlua2VkQ29kZS5kYXRhLT5oYXNFeHBy
ZXNzaW9uSW5mbygpOyB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBERkc6OkNvZGVPcmln
aW5Qb29sJiBjb2RlT3JpZ2lucygpOwpAQCAtNTQxLDEyICs1NDEsMTIgQEAgcHVibGljOgogCiAg
ICAgLy8gQ29uc3RhbnQgUG9vbAogI2lmIEVOQUJMRShERkdfSklUKQotICAgIHNpemVfdCBudW1i
ZXJPZklkZW50aWZpZXJzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm51bWJlck9m
SWRlbnRpZmllcnMoKSArIG51bWJlck9mREZHSWRlbnRpZmllcnMoKTsgfQorICAgIHNpemVfdCBu
dW1iZXJPZklkZW50aWZpZXJzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUuZGF0YS0+
bnVtYmVyT2ZJZGVudGlmaWVycygpICsgbnVtYmVyT2ZERkdJZGVudGlmaWVycygpOyB9CiAgICAg
c2l6ZV90IG51bWJlck9mREZHSWRlbnRpZmllcnMoKSBjb25zdDsKICAgICBjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKGludCBpbmRleCkgY29uc3Q7CiAjZWxzZQotICAgIHNpemVfdCBudW1i
ZXJPZklkZW50aWZpZXJzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm51bWJlck9m
SWRlbnRpZmllcnMoKTsgfQotICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoaW50IGlu
ZGV4KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aWRlbnRpZmllcihpbmRleCk7IH0K
KyAgICBzaXplX3QgbnVtYmVyT2ZJZGVudGlmaWVycygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5r
ZWRDb2RlLmRhdGEtPm51bWJlck9mSWRlbnRpZmllcnMoKTsgfQorICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS5k
YXRhLT5pZGVudGlmaWVyKGluZGV4KTsgfQogI2VuZGlmCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICBib29sIGhhc0lkZW50aWZpZXIoVW5pcXVlZFN0cmluZ0ltcGwqKTsKQEAgLTU3MSwxNCArNTcx
LDE0IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiYg
Y29uc3RhbnRSZWdpc3RlcnMoKSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzOyB9CiAgICAg
V3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciBy
ZWcpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbcmVnLnRvQ29uc3RhbnRJbmRleCgpXTsg
fQogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRDb25zdGFudChWaXJ0dWFsUmVnaXN0ZXIg
cmVnKSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW3JlZy50b0NvbnN0YW50SW5k
ZXgoKV0uZ2V0KCk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlv
biBjb25zdGFudFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbihWaXJ0dWFsUmVnaXN0ZXIgcmVnKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+Y29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24ocmVnKTsgfQotICAgIEFMV0FZU19JTkxJTkUgU291cmNlQ29kZVJlcHJlc2VudGF0aW9u
IGNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9uKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkQ29kZS0+Y29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24o
aW5kZXgpOyB9CisgICAgQUxXQVlTX0lOTElORSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gY29u
c3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oVmlydHVhbFJlZ2lzdGVyIHJlZykgY29uc3Qg
eyByZXR1cm4gbV91bmxpbmtlZENvZGUuZGF0YS0+Y29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24ocmVnKTsgfQorICAgIEFMV0FZU19JTkxJTkUgU291cmNlQ29kZVJlcHJlc2VudGF0aW9u
IGNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9uKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkQ29kZS5kYXRhLT5jb25zdGFudFNvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbihpbmRleCk7IH0KIAogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25EZWNsKGlu
dCBpbmRleCkgeyByZXR1cm4gbV9mdW5jdGlvbkRlY2xzW2luZGV4XS5nZXQoKTsgfQogICAgIGlu
dCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgp
OyB9CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4cHIoaW50IGluZGV4KSB7IHJl
dHVybiBtX2Z1bmN0aW9uRXhwcnNbaW5kZXhdLmdldCgpOyB9CiAgICAgCi0gICAgY29uc3QgQml0
VmVjdG9yJiBiaXRWZWN0b3Ioc2l6ZV90IGkpIHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5iaXRW
ZWN0b3IoaSk7IH0KKyAgICBjb25zdCBCaXRWZWN0b3ImIGJpdFZlY3RvcihzaXplX3QgaSkgeyBy
ZXR1cm4gbV91bmxpbmtlZENvZGUuZGF0YS0+Yml0VmVjdG9yKGkpOyB9CiAKICAgICBIZWFwKiBo
ZWFwKCkgY29uc3QgeyByZXR1cm4gJm1fdm0tPmhlYXA7IH0KICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH0KQEAgLTU4OSw3
ICs1ODksNyBAQCBwdWJsaWM6CiAKICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGxpdmVu
ZXNzQW5hbHlzaXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5saXZl
bmVzc0FuYWx5c2lzKHRoaXMpOworICAgICAgICByZXR1cm4gbV91bmxpbmtlZENvZGUuZGF0YS0+
bGl2ZW5lc3NBbmFseXNpcyh0aGlzKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB2YWxpZGF0ZSgp
OwpAQCAtNjAzLDggKzYwMyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1faml0RGF0YS0+
bV9zd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOwogICAgIH0KICNlbmRpZgotICAgIHNpemVf
dCBudW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRDb2RlLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpOyB9Ci0gICAgY29u
c3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGludCB0
YWJsZUluZGV4KSB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+dW5saW5rZWRTd2l0Y2hKdW1wVGFi
bGUodGFibGVJbmRleCk7IH0KKyAgICBzaXplX3QgbnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBU
YWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS5kYXRhLT5udW1iZXJPZlVubGlu
a2VkU3dpdGNoSnVtcFRhYmxlcygpOyB9CisgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFi
bGUmIHVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IHJldHVybiBtX3Vu
bGlua2VkQ29kZS5kYXRhLT51bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsgfQog
CiAjaWYgRU5BQkxFKEpJVCkKICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1bXBU
YWJsZShpbnQgdGFibGVJbmRleCkKQEAgLTYxMyw4ICs2MTMsOCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX2ppdERhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsK
ICAgICB9CiAjZW5kaWYKLSAgICBzaXplX3QgbnVtYmVyT2ZVbmxpbmtlZFN0cmluZ1N3aXRjaEp1
bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+bnVtYmVyT2ZVbmxpbmtl
ZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKTsgfQotICAgIGNvbnN0IFVubGlua2VkU3RyaW5nSnVt
cFRhYmxlJiB1bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBy
ZXR1cm4gbV91bmxpbmtlZENvZGUtPnVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKHRhYmxl
SW5kZXgpOyB9CisgICAgc2l6ZV90IG51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUuZGF0YS0+bnVtYmVyT2ZVbmxpbmtl
ZFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKTsgfQorICAgIGNvbnN0IFVubGlua2VkU3RyaW5nSnVt
cFRhYmxlJiB1bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBy
ZXR1cm4gbV91bmxpbmtlZENvZGUuZGF0YS0+dW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGUo
dGFibGVJbmRleCk7IH0KIAogICAgIERpcmVjdEV2YWxDb2RlQ2FjaGUmIGRpcmVjdEV2YWxDb2Rl
Q2FjaGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgcmV0dXJuIG1fcmFyZURhdGEt
Pm1fZGlyZWN0RXZhbENvZGVDYWNoZTsgfQogCkBAIC04MTgsNyArODE4LDcgQEAgcHVibGljOgog
ICAgICAgICBtX251bUJyZWFrcG9pbnRzID0gMDsKICAgICB9CiAKLSAgICBib29sIHdhc0NvbXBp
bGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+
d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpOyB9CisgICAgYm9vbCB3YXNDb21waWxl
ZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUuZGF0
YS0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpOyB9CiAgICAgCiAgICAgLy8gVGhp
cyBpcyBpbnRlbnRpb25hbGx5IHB1YmxpYzsgaXQncyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgYW55
b25lIGRvaW5nIGFueQogICAgIC8vIG9mIHRoZSBmb2xsb3dpbmcgdG8gaG9sZCB0aGUgbG9jazoK
QEAgLTg4MSw3ICs4ODEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVuc3VyZUNhdGNoTGl2ZW5l
c3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKIAotICAgIGJvb2wg
aGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmhhc1RhaWxDYWxs
cygpOyB9CisgICAgYm9vbCBoYXNUYWlsQ2FsbHMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2Vk
Q29kZS5kYXRhLT5oYXNUYWlsQ2FsbHMoKTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0
YWRhdGE+CiAgICAgTWV0YWRhdGEmIG1ldGFkYXRhKE9wY29kZUlEIG9wY29kZUlELCB1bnNpZ25l
ZCBtZXRhZGF0YUlEKQpAQCAtODk4LDcgKzg5OCw3IEBAIHB1YmxpYzoKIAogICAgIHNpemVfdCBt
ZXRhZGF0YVNpemVJbkJ5dGVzKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3VubGlua2VkQ29k
ZS0+bWV0YWRhdGFTaXplSW5CeXRlcygpOworICAgICAgICByZXR1cm4gbV91bmxpbmtlZENvZGUu
ZGF0YS0+bWV0YWRhdGFTaXplSW5CeXRlcygpOwogICAgIH0KIAogICAgIE1ldGFkYXRhVGFibGUq
IG1ldGFkYXRhVGFibGUoKSB7IHJldHVybiBtX21ldGFkYXRhLmdldCgpOyB9CkBAIC05MTAsNyAr
OTEwLDcgQEAgcHVibGljOgogICAgIGJvb2wgbG9vcEhpbnRzQXJlRWxpZ2libGVGb3JGdXp6aW5n
RWFybHlSZXR1cm4oKQogICAgIHsKICAgICAgICAgLy8gU29tZSBidWlsdGlucyBhcmUgcmVxdWly
ZWQgdG8gYWx3YXlzIGNvbXBsZXRlIHRoZSBsb29wcyB0aGV5IHJ1bi4KLSAgICAgICAgcmV0dXJu
ICFtX3VubGlua2VkQ29kZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsKKyAgICAgICAgcmV0dXJuICFt
X3VubGlua2VkQ29kZS5kYXRhLT5pc0J1aWx0aW5GdW5jdGlvbigpOwogICAgIH0KIAogcHJvdGVj
dGVkOgpAQCAtOTk3LDcgKzk5Nyw4IEBAIHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1f
c2NvcGVSZWdpc3RlcjsKICAgICBtdXRhYmxlIENvZGVCbG9ja0hhc2ggbV9oYXNoOwogCi0gICAg
V3JpdGVCYXJyaWVyPFVubGlua2VkQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZTsKKyAgICB1c2lu
ZyBVbmxpbmtlZENvZGVOb2RlID0gUGFja2VkUmF3U2VudGluZWxOb2RlTWVtYmVyPFdyaXRlQmFy
cmllcjxVbmxpbmtlZENvZGVCbG9jaz4+OworICAgIFVubGlua2VkQ29kZU5vZGUgbV91bmxpbmtl
ZENvZGU7CiAgICAgV3JpdGVCYXJyaWVyPFNjcmlwdEV4ZWN1dGFibGU+IG1fb3duZXJFeGVjdXRh
YmxlOwogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX293bmVy
RWRnZTsKICAgICAvLyBtX3ZtIG11c3QgYmUgYSBwb2ludGVyIChpbnN0ZWFkIG9mIGEgcmVmZXJl
bmNlKSBiZWNhdXNlIHRoZSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDRk
MjJlYzJhYzVkN2FhOWQ3YmQ1NzZlOWIwNDhmYzBkYTZlZTA4YjUuLjJhOWY4MmYwODgwMzUxYTQz
OWFmNzlhMjQ1NDdlMjU2ZmU1NTY3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMjY3LDYgKzI2NywxMCBAQCBi
b29sIFVubGlua2VkQ29kZUJsb2NrOjp0eXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mb0ZvckJ5dGVj
b2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dAogCiBVbmxpbmtlZENvZGVCbG9jazo6flVubGlua2VkQ29k
ZUJsb2NrKCkKIHsKKyAgICBtX2luY29taW5nQ29kZUJsb2Nrcy5mb3JFYWNoKFsmXSAoYXV0byog
Y29kZUJsb2NrTm9kZSkgeworICAgICAgICBjb2RlQmxvY2tOb2RlLT5kYXRhLmNsZWFyKCk7Cisg
ICAgICAgIGNvZGVCbG9ja05vZGUtPnJlbW92ZSgpOworICAgIH0pOwogfQogCiBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYgVW5saW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
CmluZGV4IDExMzdlOWMzYThiYzcyZWMxYmVmZTE0NWVmNmYxNDgyODYyMzVjNDYuLjQ1YTQwYzVm
ZGNhYzk1NzUyODJmZWJiMDk0YmFhZWUxOTI0YmRkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0zMzIsNiArMzMyLDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9tZXRhZGF0YS0+c2l6ZUluQnl0ZXMoKTsKICAg
ICB9CiAKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8UGFja2VkUmF3U2VudGluZWxOb2RlTWVtYmVy
PFdyaXRlQmFycmllcjxVbmxpbmtlZENvZGVCbG9jaz4+PiYgaW5jb21pbmdDb2RlQmxvY2tzKCkg
eyByZXR1cm4gbV9pbmNvbWluZ0NvZGVCbG9ja3M7IH0KIAogcHJvdGVjdGVkOgogICAgIFVubGlu
a2VkQ29kZUJsb2NrKFZNJiwgU3RydWN0dXJlKiwgQ29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFibGVJ
bmZvJiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4pOwpAQCAtNDA2LDYgKzQwNyw4IEBA
IHByaXZhdGU6CiAgICAgUmVmPFVubGlua2VkTWV0YWRhdGFUYWJsZT4gbV9tZXRhZGF0YTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IG1fbGl2ZW5lc3M7Cisg
ICAgLy8gVGhpcyBleGlzdHMgc28gd2UgY2FuIHJlbW92ZSByZWZlcmVuY2VzIHRvIHVzIGlmIHdl
IGdldCBzd2VwdCBiZWZvcmUgY29kZWJsb2NrcyB0aGF0IHJlZmVyIHRvIHVzLgorICAgIFNlbnRp
bmVsTGlua2VkTGlzdDxQYWNrZWRSYXdTZW50aW5lbE5vZGVNZW1iZXI8V3JpdGVCYXJyaWVyPFVu
bGlua2VkQ29kZUJsb2NrPj4+IG1faW5jb21pbmdDb2RlQmxvY2tzOwogCiAKICNpZiBFTkFCTEUo
REZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggY2IwNzliZjc1YTFk
NzQ4NGM4YjI4NzdiNDI0ODM1ZDQ2NzJjMDk4YS4uZmNiMTFkZDgzMGFmOTAxMTg5ZWRiMTZkNDA5
Nzk3MzY5YTYxZTZiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTk3Miw3
ICs5NzIsNiBAQCB2b2lkIEhlYXA6OmRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCkKICAgICB2
bSgpLmZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNl
LnNwYWNlLnN3ZWVwKCk7IH0pOwogICAgIC8vIFN3ZWVwaW5nIG11c3Qgb2NjdXIgYmVmb3JlIGRl
bGV0aW5nIHN0dWJzLCBvdGhlcndpc2UgdGhlIHN0dWJzIG1pZ2h0IHN0aWxsIHRoaW5rIHRoZXkn
cmUgYWxpdmUgYXMgdGhleSBnZXQgZGVsZXRlZC4KICAgICAvLyBBbmQgQ29kZUJsb2NrIGRlc3Ry
dWN0b3IgaXMgYXNzdW1pbmcgdGhhdCBDb2RlQmxvY2sgZ2V0cyBkZXN0cm95ZWQgYmVmb3JlIFVu
bGlua2VkQ29kZUJsb2NrIGdldHMgZGVzdHJveWVkLgotICAgIHZtKCkuZm9yRWFjaENvZGVCbG9j
a1NwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgpOyB9KTsKICAgICBp
ZiAobWF5SGF2ZUpJVFN0dWJSb3V0aW5lc1RvRGVsZXRlKCkpCiAgICAgICAgIGRlbGV0ZURlYWRK
SVRTdHViUm91dGluZXMoNV9tcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGU0MmI4YjI1ZGNi
NzhhN2YxY2NmYzkwN2ZkZmE4MTI3OWE2ODZlZWYuLmE3YmNjMzVhMDBhOTY1YmFjNmJkNjA1YjVm
ODdjOGZlNTQ1ZjNkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMDMzLDcgKzIwMzMsNyBAQCBs
bGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2ltbSwgT3BTd2l0Y2hJbW0sIG1hY3JvIChzaXplLCBn
ZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgIGdldHUoc2l6ZSwgT3BTd2l0Y2hJbW0sIG1fdGFibGVJ
bmRleCwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDEsIHQwKQog
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxp
bmtlZENvZGVbdDJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGUgKyBD
b2RlQmxvY2s6OlVubGlua2VkQ29kZU5vZGU6OmRhdGFbdDJdLCB0MgogICAgIGxvYWRwIFVubGlu
a2VkQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKICAgICBtdWxpIHNpemVvZiBVbmxpbmtl
ZFNpbXBsZUp1bXBUYWJsZSwgdDMKICAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURh
dGE6Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSAr
IFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKQEAgLTIwNjMsNyArMjA2Myw3IEBAIGxs
aW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwg
Z2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBnZXR1KHNpemUsIE9wU3dpdGNoQ2hhciwgbV90YWJs
ZUluZGV4LCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MSwgdDAp
CiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX3Vu
bGlua2VkQ29kZVt0Ml0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3VubGlua2VkQ29kZSAr
IENvZGVCbG9jazo6VW5saW5rZWRDb2RlTm9kZTo6ZGF0YVt0Ml0sIHQyCiAgICAgbG9hZHAgVW5s
aW5rZWRDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgogICAgIG11bGkgc2l6ZW9mIFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlLCB0MwogICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjpSYXJl
RGF0YTo6bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdl
ICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCAxNGFkMmE0
OTdmYjBhN2FmOTM3YjI3M2E3MGQwYTlmYmFlM2JkMmE0Li4yMWQxZGNkNDE4MzZmMDM4MjYyZTFh
ZTEzZThmZGZlNTY0ZjRjZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMjE3OCw3ICsyMTc4LDcgQEAgbGxp
bnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9pbW0sIE9wU3dpdGNoSW1tLCBtYWNybyAoc2l6ZSwgZ2V0
LCBqdW1wLCBkaXNwYXRjaCkKICAgICBnZXR1KHNpemUsIE9wU3dpdGNoSW1tLCBtX3RhYmxlSW5k
ZXgsIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQxKQogICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENv
ZGVbdDJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGUgKyBDb2RlQmxv
Y2s6OlVubGlua2VkQ29kZU5vZGU6OmRhdGFbdDJdLCB0MgogICAgIGxvYWRwIFVubGlua2VkQ29k
ZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKICAgICBtdWxpIHNpemVvZiBVbmxpbmtlZFNpbXBs
ZUp1bXBUYWJsZSwgdDMKICAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6Om1f
dW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNv
dW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKQEAgLTIyMDgsNyArMjIwOCw3IEBAIGxsaW50T3BX
aXRoSnVtcChvcF9zd2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0LCBq
dW1wLCBkaXNwYXRjaCkKICAgICBnZXR1KHNpemUsIE9wU3dpdGNoQ2hhciwgbV90YWJsZUluZGV4
LCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MSkKICAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2Rl
W3QyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlICsgQ29kZUJsb2Nr
OjpVbmxpbmtlZENvZGVOb2RlOjpkYXRhW3QyXSwgdDIKICAgICBsb2FkcCBVbmxpbmtlZENvZGVC
bG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCiAgICAgbXVsaSBzaXplb2YgVW5saW5rZWRTaW1wbGVK
dW1wVGFibGUsIHQzCiAgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3Vu
bGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3Vu
dGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TZW50
aW5lbExpbmtlZExpc3QuaCBiL1NvdXJjZS9XVEYvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCmlu
ZGV4IDRmNDBmMGVjMDdhN2ZiNmM3NWVkY2YzMmNjZGE4N2MwYzk5ZDc1ZjkuLjM1ODM5MGY0OGYz
MDQwM2EwYzVlNzYyOGZmNjNmYTYzZDYzNzk1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1NlbnRpbmVsTGlua2VkTGlzdC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NlbnRpbmVsTGlua2Vk
TGlzdC5oCkBAIC0yNzIsOCArMjcyLDI4IEBAIGlubGluZSB2b2lkIFNlbnRpbmVsTGlua2VkTGlz
dDxULCBSYXdOb2RlPjo6dGFrZUZyb20oU2VudGluZWxMaW5rZWRMaXN0PFQsIFJhd05vCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogdXNpbmcgUGFja2VkUmF3U2VudGluZWxOb2RlID0gQmFzaWNSYXdT
ZW50aW5lbE5vZGU8VCwgUGFja2VkUHRyVHJhaXRzPFQ+PjsKIAorCisvLyBBIGNvbnZlbmllbmNl
IHN0cnVjdCBmb3IgZW1iZWRkaW5nIGEgU2VudGluZWxMaW5rTGlzdCBub2RlIGluc2lkZSBhIGNs
YXNzIGFzIGEgbWVtYmVyLgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBQYWNrZWRSYXdT
ZW50aW5lbE5vZGVNZW1iZXIgOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPFBhY2tlZFJh
d1NlbnRpbmVsTm9kZU1lbWJlcjxUPj4KK3sKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdz
PgorICAgIFBhY2tlZFJhd1NlbnRpbmVsTm9kZU1lbWJlcihBcmdzJiYuLi4gYXJncykgOiBkYXRh
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikgeyB9CisgICAgUGFja2VkUmF3U2VudGluZWxO
b2RlTWVtYmVyKFNlbnRpbmVsVGFnKSB7IH0KKyAgICB+UGFja2VkUmF3U2VudGluZWxOb2RlTWVt
YmVyKCkgPSBkZWZhdWx0OworCisgICAgUGFja2VkUmF3U2VudGluZWxOb2RlTWVtYmVyJiBvcGVy
YXRvcj0oVCYgdmFsdWUpIHsgZGF0YSA9IHZhbHVlOyByZXR1cm4gKnRoaXM7IH0KKyAgICBQYWNr
ZWRSYXdTZW50aW5lbE5vZGVNZW1iZXImIG9wZXJhdG9yPShUJiYgdmFsdWUpIHsgZGF0YSA9IFdU
Rk1vdmUodmFsdWUpOyByZXR1cm4gKnRoaXM7IH0KKworICAgIFQmIG9wZXJhdG9yLT4oKSB7IHJl
dHVybiBkYXRhOyB9CisgICAgY29uc3QgVCYgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGRh
dGE7IH0KKworICAgIFQgZGF0YTsKK307CisKIH0KIAogdXNpbmcgV1RGOjpCYXNpY1Jhd1NlbnRp
bmVsTm9kZTsKIHVzaW5nIFdURjo6UGFja2VkUmF3U2VudGluZWxOb2RlOwordXNpbmcgV1RGOjpQ
YWNrZWRSYXdTZW50aW5lbE5vZGVNZW1iZXI7CiB1c2luZyBXVEY6OlNlbnRpbmVsTGlua2VkTGlz
dDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430668</attachid>
            <date>2021-06-05 18:38:40 -0700</date>
            <delta_ts>2021-06-05 18:38:40 -0700</delta_ts>
            <desc>LastPatch</desc>
            <filename>bug-226541-20210605213839.patch</filename>
            <type>text/plain</type>
            <size>36072</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi43ODc2YzhmZDEyNDhhZGJj
ZTRlMzhmNzk5YjBmZGNkOWFiMTI3NTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NiBAQAorMjAyMS0wNi0wMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBbGwgQ29kZUJsb2NrcyBzaG91bGQgYmUgYXN5bmNocm9ub3VzbHkg
c3dlZXBhYmxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI2NTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2VlbXMgdG8gYmUgYSAxLTIlIFNwZWVkbyByZWdyZXNzaW9uLiBJIGNvdWxkbid0IGZpZ3Vy
ZSBvdXQgd2hlcmUgdGhlIHJlZ3Jlc3Npb24gY2FtZSBmcm9tLiBJdCBkb2Vzbid0IHNlZW0gdG8g
Y29tZSBmcm9tIGl0ZXJhdGluZyB0aGUgY29kZWJsb2NrIHNldCB3aXRoIFN1YnNwYWNlOjpmb3JF
YWNoTGl2ZU9iamVjdCBpbnN0ZWFkIG9mIHRoZSBDb2RlQmxvY2tTZXQuIFdlIGFsc28gZG9uJ3Qg
c3BlbmQgbW9yZSB0aGFuIC4zJSBvZiBvdXIgdGltZSBpbiBDb2RlQmxvY2sgZGVzdHJ1Y3RvcnMg
c28gaXQncyBub3QgdGhhdCB0aGUgY29kZSBibG9ja3MgdGhlbXNlbHZlcyBnb3Qgc2xvd2VyLgor
CisgICAgICAgIE15IGFzc3VtcHRpb24gaXMgdGhhdCB0aGUgcmVncmVzc2lvbiBjYW1lIGZyb20g
bG9zdCBjYWNoZSBsb2NhbGl0eSB3aGVuIGRlc3Ryb3lpbmcgdGhlIGNvZGUgYmxvY2tzLgorCisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFz
SWRlbnRpZmllcik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6dW5saW5rZWRDb2RlQmxvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6Om51bVRtcHMgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzQ29u
c3RydWN0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNvZGVUeXBlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzY3JpcHRNb2RlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjppbnN0cnVjdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRo
aXNSZWdpc3RlciBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXNlc0NhbGxFdmFs
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZkp1bXBUYXJnZXRzIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqdW1wVGFyZ2V0IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNFeHByZXNzaW9uSW5mbyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6bnVtYmVyT2ZJZGVudGlmaWVycyBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y29uc3Rh
bnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmJpdFZlY3Rvcik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBU
YWJsZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua2VkU3dpdGNoSnVt
cFRhYmxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZlVubGlua2VkU3RyaW5n
U3dpdGNoSnVtcFRhYmxlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5r
ZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Ondhc0Nv
bXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Omhhc1RhaWxDYWxscyBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bWV0YWRh
dGFTaXplSW5CeXRlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bG9vcEhpbnRzQXJlRWxp
Z2libGVGb3JGdXp6aW5nRWFybHlSZXR1cm4pOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6On5Vbmxpbmtl
ZENvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmluY29taW5nQ29kZUJsb2Nrcyk6CisgICAg
ICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVsZXRlVW5tYXJrZWRD
b21waWxlZENvZGUpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKwogMjAyMS0w
Ni0wMSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtXUEVdW0dUS10gU3VwcG9ydCBidWlsZGluZyBhZ2FpbnN0IHVDbGliYwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0Yzlk
Yjc1ZWM1OGRhYTg4M2ZkYThmZjY2ZTRlOWM4OGUzMWE1ZjBlLi5lMWFjYjY2YTU5ZTBjMjY3MWRm
MTU1OTE0MTgyYWZlZDFiMjI2ZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA2LTAyICBL
ZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBDb2Rl
QmxvY2tzIHNob3VsZCBiZSBhc3luY2hyb25vdXNseSBzd2VlcGFibGUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1NDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9TZW50aW5lbExpbmtlZExp
c3QuaDoKKyAgICAgICAgKFdURjo6UGFja2VkUmF3U2VudGluZWxOb2RlTWVtYmVyOjpQYWNrZWRS
YXdTZW50aW5lbE5vZGVNZW1iZXIpOgorICAgICAgICAoV1RGOjpQYWNrZWRSYXdTZW50aW5lbE5v
ZGVNZW1iZXI6Om9wZXJhdG9yPSk6CisgICAgICAgIChXVEY6OlBhY2tlZFJhd1NlbnRpbmVsTm9k
ZU1lbWJlcjo6b3BlcmF0b3ItPik6CisgICAgICAgIChXVEY6OlBhY2tlZFJhd1NlbnRpbmVsTm9k
ZU1lbWJlcjo6b3BlcmF0b3ItPiBjb25zdCk6CisKIDIwMjEtMDYtMDEgIEFkcmlhbiBQZXJleiBk
ZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtHVEtdIFN1cHBv
cnQgYnVpbGRpbmcgYWdhaW5zdCB1Q2xpYmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYTg1NDQ1MmI5ZTgxOTRlZWFiYjNkYzNjNDMzMWFiOWNh
MjQzMWI3Zi4uMzY5ZjM4MzZjYmJkYjQ4MDE1N2ExODlhOTk4MTdmNTAzY2UxYjc5MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTI5MSw3ICsy
OTEsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jawogICAgICwgbV9ieXRlY29kZUNvc3Qob3Ro
ZXIubV9ieXRlY29kZUNvc3QpCiAgICAgLCBtX3Njb3BlUmVnaXN0ZXIob3RoZXIubV9zY29wZVJl
Z2lzdGVyKQogICAgICwgbV9oYXNoKG90aGVyLm1faGFzaCkKLSAgICAsIG1fdW5saW5rZWRDb2Rl
KG90aGVyLnZtKCksIHRoaXMsIG90aGVyLm1fdW5saW5rZWRDb2RlLmdldCgpKQorICAgICwgbV91
bmxpbmtlZENvZGUob3RoZXIudm0oKSwgdGhpcywgb3RoZXIudW5saW5rZWRDb2RlQmxvY2soKSkK
ICAgICAsIG1fb3duZXJFeGVjdXRhYmxlKG90aGVyLnZtKCksIHRoaXMsIG90aGVyLm1fb3duZXJF
eGVjdXRhYmxlLmdldCgpKQogICAgICwgbV92bShvdGhlci5tX3ZtKQogICAgICwgbV9pbnN0cnVj
dGlvbnNSYXdQb2ludGVyKG90aGVyLm1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcikKQEAgLTMwNCw2
ICszMDQsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jawogICAgICwgbV9tZXRhZGF0YShvdGhl
ci5tX21ldGFkYXRhKQogICAgICwgbV9jcmVhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkp
CiB7CisgICAgbV91bmxpbmtlZENvZGUtPmluY29taW5nQ29kZUJsb2NrcygpLmFwcGVuZCgmbV91
bmxpbmtlZENvZGUpOwogICAgIEFTU0VSVChoZWFwKCktPmlzRGVmZXJyZWQoKSk7CiAgICAgQVNT
RVJUKG1fc2NvcGVSZWdpc3Rlci5pc0xvY2FsKCkpOwogCkBAIC0zMjUsNiArMzI2LDggQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBD
b2RlQmxvY2smIG90aGVyKQogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CiAg
ICAgICAgIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMgPSBvdGhlci5tX3JhcmVEYXRh
LT5tX2V4Y2VwdGlvbkhhbmRsZXJzOwogICAgIH0KKworICAgIEFTU0VSVCh1bmxpbmtlZENvZGVC
bG9jaygpKTsKIH0KIAogQ29kZUJsb2NrOjpDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlKQpAQCAtMzU1LDYgKzM1OCw3
IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0CiAgICAgLCBtX21ldGFkYXRhKHVubGlua2VkQ29k
ZUJsb2NrLT5tZXRhZGF0YSgpLmxpbmsoKSkKICAgICAsIG1fY3JlYXRpb25UaW1lKE1vbm90b25p
Y1RpbWU6Om5vdygpKQogeworICAgIG1fdW5saW5rZWRDb2RlLT5pbmNvbWluZ0NvZGVCbG9ja3Mo
KS5hcHBlbmQoJm1fdW5saW5rZWRDb2RlKTsKICAgICBBU1NFUlQoaGVhcCgpLT5pc0RlZmVycmVk
KCkpOwogICAgIEFTU0VSVChtX3Njb3BlUmVnaXN0ZXIuaXNMb2NhbCgpKTsKIApAQCAtNzk2LDEw
ICs4MDAsMTAgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICAgICAvLyBUaGlzIGFzc2VydGlv
biBpcyBjb3JyZWN0IHNpbmNlIGRlc3RydWN0aW9uIG9yZGVyIG9mIGNlbGxzIGlzIG5vdCBndWFy
YW50ZWVkLCBhbmQgbWVtYmVyIGNlbGxzIGNvdWxkIGFscmVhZHkgYmUgZGVzdHJveWVkLgogICAg
IC8vIEJ1dCBmb3IgQ29kZUJsb2NrLCB3ZSBhcmUgZW5zdXJpbmcgdGhlIG9yZGVyOiBDb2RlQmxv
Y2sgZ2V0cyBkZXN0cm95ZWQgYmVmb3JlIFVubGlua2VkQ29kZUJsb2NrIGdldHMgZGVzdHJveWVk
LgogICAgIC8vIFNvLCB3ZSBjYW4gYWNjZXNzIG1lbWJlciBVbmxpbmtlZENvZGVCbG9jayBzYWZl
bHkgaGVyZS4gV2UgYnlwYXNzIHRoZSBhc3NlcnRpb24gYnkgdXNpbmcgdW52YWxpZGF0ZWRHZXQu
Ci0gICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbV91bmxpbmtlZENv
ZGUudW52YWxpZGF0ZWRHZXQoKTsKKyAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2Rl
ID0gbV91bmxpbmtlZENvZGUuZGF0YS51bnZhbGlkYXRlZEdldCgpOwogCi0gICAgaWYgKFVOTElL
RUxZKE9wdGlvbnM6OnJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nKCkgJiYg
SklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSgpKSkpIHsKLSAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBpbnN0cnVjdGlvbiA6IHVubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKSkg
eworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3Bz
Rm9yRnV6emluZygpICYmIEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUoKSkgJiYgdW5s
aW5rZWRDb2RlKSkgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uIDogdW5s
aW5rZWRDb2RlLT5pbnN0cnVjdGlvbnMoKSkgewogICAgICAgICAgICAgaWYgKGluc3RydWN0aW9u
LT5pczxPcExvb3BIaW50PigpKQogICAgICAgICAgICAgICAgIHZtLnJlbW92ZUxvb3BIaW50RXhl
Y3V0aW9uQ291bnRlcihpbnN0cnVjdGlvbi5wdHIoKSk7CiAgICAgICAgIH0KQEAgLTgzOSw4ICs4
NDMsOCBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogICAgIGlmIChVTkxJS0VMWSh2bS5tX3Bl
ckJ5dGVjb2RlUHJvZmlsZXIpKQogICAgICAgICB2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPm5v
dGlmeURlc3RydWN0aW9uKHRoaXMpOwogCi0gICAgaWYgKCF2bS5oZWFwLmlzU2h1dHRpbmdEb3du
KCkgJiYgdW5saW5rZWRDb2RlQmxvY2stPmRpZE9wdGltaXplKCkgPT0gVHJpU3RhdGU6OkluZGV0
ZXJtaW5hdGUpCi0gICAgICAgIHVubGlua2VkQ29kZUJsb2NrLT5zZXREaWRPcHRpbWl6ZShUcmlT
dGF0ZTo6RmFsc2UpOworICAgIGlmICghdm0uaGVhcC5pc1NodXR0aW5nRG93bigpICYmIHVubGlu
a2VkQ29kZSAmJiB1bmxpbmtlZENvZGUtPmRpZE9wdGltaXplKCkgPT0gVHJpU3RhdGU6OkluZGV0
ZXJtaW5hdGUpCisgICAgICAgIHVubGlua2VkQ29kZS0+c2V0RGlkT3B0aW1pemUoVHJpU3RhdGU6
OkZhbHNlKTsKIAogI2lmIEVOQUJMRShWRVJCT1NFX1ZBTFVFX1BST0ZJTEUpCiAgICAgZHVtcFZh
bHVlUHJvZmlsZXMoKTsKQEAgLTg1NCwxOCArODU4LDIyIEBAIENvZGVCbG9jazo6fkNvZGVCbG9j
aygpCiAgICAgLy8gZGVzdHJ1Y3RvciB3aWxsIHRyeSB0byByZW1vdmUgbm9kZXMgZnJvbSBvdXIg
KG5vIGxvbmdlciB2YWxpZCkgbGlua2VkIGxpc3QuCiAgICAgdW5saW5rSW5jb21pbmdDYWxscygp
OwogICAgIAotICAgIC8vIE5vdGUgdGhhdCBvdXIgb3V0Z29pbmcgY2FsbHMgd2lsbCBiZSByZW1v
dmVkIGZyb20gb3RoZXIgQ29kZUJsb2NrcycKLSAgICAvLyBtX2luY29taW5nQ2FsbHMgbGlua2Vk
IGxpc3RzIHRocm91Z2ggdGhlIGV4ZWN1dGlvbiBvZiB0aGUgfkNhbGxMaW5rSW5mbwotICAgIC8v
IGRlc3RydWN0b3JzLgotCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoYXV0byogaml0RGF0YSA9
IG1faml0RGF0YS5nZXQoKSkgeworICAgICAgICBmb3IgKENhbGxMaW5rSW5mbyogaW5mbyA6IGpp
dERhdGEtPm1fY2FsbExpbmtJbmZvcykgeworICAgICAgICAgICAgLy8gVGhpcyB3b3JrcyBiZWNh
dXNlIGVpdGhlciB3ZSBoYXZlIG5vdCBzd2VwdCB0aGUgY2FsbGVlJ3MgQ29kZUJsb2NrIHRodXMg
dGhlIFNlbnRpbmVsTGlua0xpc3Qgb24gaXQncyBKSVQgZGF0YSBpcyBhbGl2ZSBvciBpdCB3aWxs
IGhhdmUgYWxyZWFkeSByZW1vdmVkIHVzIGZyb20gdGhlIGxpc3QgZHVyaW5nIHRoZSB1bmxpbmtJ
bmNvbW1pbmdDYWxscygpIGFib3ZlLgorICAgICAgICAgICAgaW5mby0+dW5saW5rKHZtKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIGZvciAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvIDogaml0
RGF0YS0+bV9zdHViSW5mb3MpIHsKICAgICAgICAgICAgIHN0dWJJbmZvLT5hYm91dFRvRGllKCk7
CiAgICAgICAgICAgICBzdHViSW5mby0+ZGVyZWYoKTsKICAgICAgICAgfQogICAgIH0KICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQorCisgICAgaWYgKG1fdW5saW5rZWRDb2RlLmlzT25MaXN0KCkpCisg
ICAgICAgIG1fdW5saW5rZWRDb2RlLnJlbW92ZSgpOwogfQogCiB2b2lkIENvZGVCbG9jazo6c2V0
Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+
PiYgY29uc3RhbnRzLCBjb25zdCBGaXhlZFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+
JiBjb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24sIFNjcmlwdEV4ZWN1dGFibGUqIHRv
cExldmVsRXhlY3V0YWJsZSkKQEAgLTE2MTIsNiArMTYyMCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpm
aW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCiAKIHZvaWQgQ29kZUJsb2NrOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzY29wZSh0cnVlKTsKICAg
ICBzdGF0aWNfY2FzdDxDb2RlQmxvY2sqPihjZWxsKS0+fkNvZGVCbG9jaygpOwogfQogCkBAIC0x
ODEyLDcgKzE4MjEsNyBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVy
ZW5jZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsCiAgICAgCiAgICAgdmlzaXRv
ci5hcHBlbmQobV9nbG9iYWxPYmplY3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKG1fb3duZXJFeGVj
dXRhYmxlKTsgLy8gVGhpcyBpcyBleHRyYSBpbXBvcnRhbnQgc2luY2UgaXQgY2F1c2VzIHRoZSBF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlIHRvIGJlIG1hcmtlZC4KLSAgICB2aXNpdG9yLmFwcGVu
ZChtX3VubGlua2VkQ29kZSk7CisgICAgdmlzaXRvci5hcHBlbmQobV91bmxpbmtlZENvZGUuZGF0
YSk7CiAgICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgIG1fcmFyZURhdGEtPm1fZGlyZWN0RXZh
bENvZGVDYWNoZS52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZFZh
bHVlcyhtX2NvbnN0YW50UmVnaXN0ZXJzLmRhdGEoKSwgbV9jb25zdGFudFJlZ2lzdGVycy5zaXpl
KCkpOwpAQCAtMjg0Miw3ICsyODUxLDcgQEAgc2l6ZV90IENvZGVCbG9jazo6bnVtYmVyT2ZERkdJ
ZGVudGlmaWVycygpIGNvbnN0CiAKIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRp
ZmllcihpbnQgaW5kZXgpIGNvbnN0CiB7Ci0gICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2Vk
Q29kZSA9IG1fdW5saW5rZWRDb2RlLmdldCgpOworICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxp
bmtlZENvZGUgPSB1bmxpbmtlZENvZGVCbG9jaygpOwogICAgIHNpemVfdCB1bmxpbmtlZElkZW50
aWZpZXJzID0gdW5saW5rZWRDb2RlLT5udW1iZXJPZklkZW50aWZpZXJzKCk7CiAgICAgaWYgKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkgPCB1bmxpbmtlZElkZW50aWZpZXJzKQogICAgICAg
ICByZXR1cm4gdW5saW5rZWRDb2RlLT5pZGVudGlmaWVyKGluZGV4KTsKQEAgLTI4NTQsNyArMjg2
Myw3IEBAIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcihpbnQgaW5kZXgp
IGNvbnN0CiAjaWYgQVNTRVJUX0VOQUJMRUQKIGJvb2wgQ29kZUJsb2NrOjpoYXNJZGVudGlmaWVy
KFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7Ci0gICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlu
a2VkQ29kZSA9IG1fdW5saW5rZWRDb2RlLmdldCgpOworICAgIFVubGlua2VkQ29kZUJsb2NrKiB1
bmxpbmtlZENvZGUgPSB1bmxpbmtlZENvZGVCbG9jaygpOwogICAgIHNpemVfdCB1bmxpbmtlZElk
ZW50aWZpZXJzID0gdW5saW5rZWRDb2RlLT5udW1iZXJPZklkZW50aWZpZXJzKCk7CiAjaWYgRU5B
QkxFKERGR19KSVQpCiAgICAgc2l6ZV90IG51bWJlck9mREZHSWRlbnRpZmllcnMgPSB0aGlzLT5u
dW1iZXJPZkRGR0lkZW50aWZpZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKaW5kZXggYTM2OWUxMTAwOTEwYTc2YjNlMmRjYjg4Yzc5MjUwNmZjMDA3NGU1
NC4uNmMyYjQzMDMyY2FiMzhjZWVlNjcwY2NmNmU0NzlmNzgxOTFjMjE2OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHBy
b3RlY3RlZDoKIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSB+Q29kZUJsb2NrKCk7CiAK
LSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2soKSBjb25zdCB7IHJldHVy
biBtX3VubGlua2VkQ29kZS5nZXQoKTsgfQorICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLmRhdGEuZ2V0KCk7IH0K
IAogICAgIENTdHJpbmcgaW5mZXJyZWROYW1lKCkgY29uc3Q7CiAgICAgQ29kZUJsb2NrSGFzaCBo
YXNoKCkgY29uc3Q7CkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG51
bUNhbGxlZUxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxzOyB9CiAKICAg
ICB1bnNpZ25lZCBudW1WYXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1WYXJzOyB9Ci0gICAgdW5z
aWduZWQgbnVtVG1wcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5oYXNDaGVja3Bv
aW50cygpICogbWF4TnVtQ2hlY2twb2ludFRtcHM7IH0KKyAgICB1bnNpZ25lZCBudW1UbXBzKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUuZGF0YS0+aGFzQ2hlY2twb2ludHMoKSAqIG1h
eE51bUNoZWNrcG9pbnRUbXBzOyB9CiAKICAgICB1bnNpZ25lZCogYWRkcmVzc09mTnVtUGFyYW1l
dGVycygpIHsgcmV0dXJuICZtX251bVBhcmFtZXRlcnM7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mTnVtUGFyYW1ldGVycygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxv
Y2ssIG1fbnVtUGFyYW1ldGVycyk7IH0KQEAgLTIyNSwxMCArMjI1LDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZHVtcE1hdGhJQ1N0YXRzKCk7CiAKLSAgICBib29sIGlzQ29uc3RydWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aXNDb25zdHJ1Y3RvcigpOyB9Ci0gICAgQ29k
ZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+Y29kZVR5cGUo
KTsgfQorICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRD
b2RlLmRhdGEtPmlzQ29uc3RydWN0b3IoKTsgfQorICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUuZGF0YS0+Y29kZVR5cGUoKTsgfQogCi0gICAgSlNQ
YXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29k
ZS0+c2NyaXB0TW9kZSgpOyB9CisgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS5kYXRhLT5zY3JpcHRNb2RlKCk7IH0KIAogICAg
IGJvb2wgaGFzSW5zdGFsbGVkVk1UcmFwQnJlYWtwb2ludHMoKSBjb25zdDsKICAgICBib29sIGlu
c3RhbGxWTVRyYXBCcmVha3BvaW50cygpOwpAQCAtMzY1LDcgKzM2NSw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBJbnN0cnVjdGlvbiogb3V0T2ZMaW5lSnVtcFRhcmdldChjb25zdCBJbnN0cnVjdGlv
biogcGMpOwogICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQgb2Zmc2V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5vdXRP
ZkxpbmVKdW1wT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIHJldHVybiBtX3VubGlua2VkQ29kZS5k
YXRhLT5vdXRPZkxpbmVKdW1wT2Zmc2V0KG9mZnNldCk7CiAgICAgfQogICAgIGludCBvdXRPZkxp
bmVKdW1wT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYyk7CiAgICAgaW50IG91dE9mTGluZUp1
bXBPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24pCkBAIC0z
ODYsNyArMzg2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldChyZXR1cm5BZGRyZXNzKSk7CiAgICAgfQogCi0gICAgY29uc3QgSW5zdHJ1Y3Rp
b25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5p
bnN0cnVjdGlvbnMoKTsgfQorICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS5kYXRhLT5pbnN0cnVjdGlvbnMoKTsg
fQogICAgIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbkF0KEJ5dGVjb2RlSW5kZXggaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIGluc3RydWN0aW9ucygpLmF0KGluZGV4KS5wdHIoKTsgfQogCiAg
ICAgc2l6ZV90IHByZWRpY3RlZE1hY2hpbmVDb2RlU2l6ZSgpOwpAQCAtNDQyLDkgKzQ0Miw5IEBA
IHB1YmxpYzoKIAogICAgIFZNJiB2bSgpIGNvbnN0IHsgcmV0dXJuICptX3ZtOyB9CiAKLSAgICBW
aXJ0dWFsUmVnaXN0ZXIgdGhpc1JlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUtPnRoaXNSZWdpc3RlcigpOyB9CisgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNSZWdpc3Rlcigp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLmRhdGEtPnRoaXNSZWdpc3RlcigpOyB9CiAK
LSAgICBib29sIHVzZXNDYWxsRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT51
c2VzQ2FsbEV2YWwoKTsgfQorICAgIGJvb2wgdXNlc0NhbGxFdmFsKCkgY29uc3QgeyByZXR1cm4g
bV91bmxpbmtlZENvZGUuZGF0YS0+dXNlc0NhbGxFdmFsKCk7IH0KIAogICAgIHZvaWQgc2V0U2Nv
cGVSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlcikKICAgICB7CkBAIC00Njgs
OCArNDY4LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHNvdXJjZU9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydE9mZnNldCgpOyB9CiAgICAg
dW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vd25lckV4
ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCk7IH0KIAotICAgIHNpemVfdCBudW1iZXJPZkp1bXBUYXJn
ZXRzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm51bWJlck9mSnVtcFRhcmdldHMo
KTsgfQotICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkQ29kZS0+anVtcFRhcmdldChpbmRleCk7IH0KKyAgICBzaXplX3QgbnVtYmVyT2ZK
dW1wVGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLmRhdGEtPm51bWJlck9m
SnVtcFRhcmdldHMoKTsgfQorICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkQ29kZS5kYXRhLT5qdW1wVGFyZ2V0KGluZGV4KTsgfQogCiAg
ICAgU3RyaW5nIG5hbWVGb3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIpOwogCkBAIC01MTAsNyAr
NTEwLDcgQEAgcHVibGljOgogICAgIHNpemVfdCBudW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxl
cnMuc2l6ZSgpIDogMDsgfQogICAgIEhhbmRsZXJJbmZvJiBleGNlcHRpb25IYW5kbGVyKGludCBp
bmRleCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnNbaW5kZXhdOyB9CiAKLSAgICBib29sIGhhc0V4cHJlc3Npb25JbmZv
KCkgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmhhc0V4cHJlc3Npb25JbmZvKCk7IH0KKyAgICBi
b29sIGhhc0V4cHJlc3Npb25JbmZvKCkgeyByZXR1cm4gbV91bmxpbmtlZENvZGUuZGF0YS0+aGFz
RXhwcmVzc2lvbkluZm8oKTsgfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgREZHOjpDb2Rl
T3JpZ2luUG9vbCYgY29kZU9yaWdpbnMoKTsKQEAgLTU0MSwxMiArNTQxLDEyIEBAIHB1YmxpYzoK
IAogICAgIC8vIENvbnN0YW50IFBvb2wKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBzaXplX3Qg
bnVtYmVyT2ZJZGVudGlmaWVycygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5udW1i
ZXJPZklkZW50aWZpZXJzKCkgKyBudW1iZXJPZkRGR0lkZW50aWZpZXJzKCk7IH0KKyAgICBzaXpl
X3QgbnVtYmVyT2ZJZGVudGlmaWVycygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLmRh
dGEtPm51bWJlck9mSWRlbnRpZmllcnMoKSArIG51bWJlck9mREZHSWRlbnRpZmllcnMoKTsgfQog
ICAgIHNpemVfdCBudW1iZXJPZkRGR0lkZW50aWZpZXJzKCkgY29uc3Q7CiAgICAgY29uc3QgSWRl
bnRpZmllciYgaWRlbnRpZmllcihpbnQgaW5kZXgpIGNvbnN0OwogI2Vsc2UKLSAgICBzaXplX3Qg
bnVtYmVyT2ZJZGVudGlmaWVycygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5udW1i
ZXJPZklkZW50aWZpZXJzKCk7IH0KLSAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKGlu
dCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmlkZW50aWZpZXIoaW5kZXgp
OyB9CisgICAgc2l6ZV90IG51bWJlck9mSWRlbnRpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX3Vu
bGlua2VkQ29kZS5kYXRhLT5udW1iZXJPZklkZW50aWZpZXJzKCk7IH0KKyAgICBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUuZGF0YS0+aWRlbnRpZmllcihpbmRleCk7IH0KICNlbmRpZgogI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgYm9vbCBoYXNJZGVudGlmaWVyKFVuaXF1ZWRTdHJpbmdJbXBsKik7CkBAIC01NzEsMTQg
KzU3MSwxNCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3du
Pj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyczsgfQog
ICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3RhbnRSZWdpc3RlcihWaXJ0dWFsUmVnaXN0
ZXIgcmVnKSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW3JlZy50b0NvbnN0YW50SW5kZXgo
KV07IH0KICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0Q29uc3RhbnQoVmlydHVhbFJlZ2lz
dGVyIHJlZykgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tyZWcudG9Db25zdGFu
dEluZGV4KCldLmdldCgpOyB9Ci0gICAgQUxXQVlTX0lOTElORSBTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24gY29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oVmlydHVhbFJlZ2lzdGVyIHJl
ZykgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmNvbnN0YW50U291cmNlQ29kZVJlcHJl
c2VudGF0aW9uKHJlZyk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIFNvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbiBjb25zdGFudFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbih1bnNpZ25lZCBpbmRleCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0
aW9uKGluZGV4KTsgfQorICAgIEFMV0FZU19JTkxJTkUgU291cmNlQ29kZVJlcHJlc2VudGF0aW9u
IGNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9uKFZpcnR1YWxSZWdpc3RlciByZWcpIGNv
bnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLmRhdGEtPmNvbnN0YW50U291cmNlQ29kZVJlcHJl
c2VudGF0aW9uKHJlZyk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFNvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbiBjb25zdGFudFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbih1bnNpZ25lZCBpbmRleCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUuZGF0YS0+Y29uc3RhbnRTb3VyY2VDb2RlUmVwcmVz
ZW50YXRpb24oaW5kZXgpOyB9CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRGVj
bChpbnQgaW5kZXgpIHsgcmV0dXJuIG1fZnVuY3Rpb25EZWNsc1tpbmRleF0uZ2V0KCk7IH0KICAg
ICBpbnQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV9mdW5jdGlvbkRlY2xzLnNp
emUoKTsgfQogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeHByKGludCBpbmRleCkg
eyByZXR1cm4gbV9mdW5jdGlvbkV4cHJzW2luZGV4XS5nZXQoKTsgfQogICAgIAotICAgIGNvbnN0
IEJpdFZlY3RvciYgYml0VmVjdG9yKHNpemVfdCBpKSB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+
Yml0VmVjdG9yKGkpOyB9CisgICAgY29uc3QgQml0VmVjdG9yJiBiaXRWZWN0b3Ioc2l6ZV90IGkp
IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLmRhdGEtPmJpdFZlY3RvcihpKTsgfQogCiAgICAgSGVh
cCogaGVhcCgpIGNvbnN0IHsgcmV0dXJuICZtX3ZtLT5oZWFwOyB9CiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCgpIHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9CkBAIC01
ODksNyArNTg5LDcgQEAgcHVibGljOgogCiAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBs
aXZlbmVzc0FuYWx5c2lzKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3VubGlua2VkQ29kZS0+
bGl2ZW5lc3NBbmFseXNpcyh0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1fdW5saW5rZWRDb2RlLmRh
dGEtPmxpdmVuZXNzQW5hbHlzaXModGhpcyk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdmFsaWRh
dGUoKTsKQEAgLTYwMyw4ICs2MDMsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2ppdERh
dGEtPm1fc3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsKICAgICB9CiAjZW5kaWYKLSAgICBz
aXplX3QgbnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkQ29kZS0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKTsgfQotICAg
IGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFN3aXRjaEp1bXBUYWJsZShp
bnQgdGFibGVJbmRleCkgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPnVubGlua2VkU3dpdGNoSnVt
cFRhYmxlKHRhYmxlSW5kZXgpOyB9CisgICAgc2l6ZV90IG51bWJlck9mVW5saW5rZWRTd2l0Y2hK
dW1wVGFibGVzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUuZGF0YS0+bnVtYmVyT2ZV
bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKTsgfQorICAgIGNvbnN0IFVubGlua2VkU2ltcGxlSnVt
cFRhYmxlJiB1bmxpbmtlZFN3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyByZXR1cm4g
bV91bmxpbmtlZENvZGUuZGF0YS0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7
IH0KIAogI2lmIEVOQUJMRShKSVQpCiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hK
dW1wVGFibGUoaW50IHRhYmxlSW5kZXgpCkBAIC02MTMsOCArNjEzLDggQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbV9qaXREYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRl
eF07CiAgICAgfQogI2VuZGlmCi0gICAgc2l6ZV90IG51bWJlck9mVW5saW5rZWRTdHJpbmdTd2l0
Y2hKdW1wVGFibGVzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm51bWJlck9mVW5s
aW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCk7IH0KLSAgICBjb25zdCBVbmxpbmtlZFN0cmlu
Z0p1bXBUYWJsZSYgdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgp
IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT51bmxpbmtlZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSh0
YWJsZUluZGV4KTsgfQorICAgIHNpemVfdCBudW1iZXJPZlVubGlua2VkU3RyaW5nU3dpdGNoSnVt
cFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLmRhdGEtPm51bWJlck9mVW5s
aW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCk7IH0KKyAgICBjb25zdCBVbmxpbmtlZFN0cmlu
Z0p1bXBUYWJsZSYgdW5saW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgp
IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLmRhdGEtPnVubGlua2VkU3RyaW5nU3dpdGNoSnVtcFRh
YmxlKHRhYmxlSW5kZXgpOyB9CiAKICAgICBEaXJlY3RFdmFsQ29kZUNhY2hlJiBkaXJlY3RFdmFs
Q29kZUNhY2hlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVybiBtX3JhcmVE
YXRhLT5tX2RpcmVjdEV2YWxDb2RlQ2FjaGU7IH0KIApAQCAtODE4LDcgKzgxOCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9udW1CcmVha3BvaW50cyA9IDA7CiAgICAgfQogCi0gICAgYm9vbCB3YXND
b21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUtPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKTsgfQorICAgIGJvb2wgd2FzQ29t
cGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2Rl
LmRhdGEtPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKTsgfQogICAgIAogICAgIC8v
IFRoaXMgaXMgaW50ZW50aW9uYWxseSBwdWJsaWM7IGl0J3MgdGhlIHJlc3BvbnNpYmlsaXR5IG9m
IGFueW9uZSBkb2luZyBhbnkKICAgICAvLyBvZiB0aGUgZm9sbG93aW5nIHRvIGhvbGQgdGhlIGxv
Y2s6CkBAIC04ODEsNyArODgxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBlbnN1cmVDYXRjaExp
dmVuZXNzSXNDb21wdXRlZEZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7CiAKLSAgICBi
b29sIGhhc1RhaWxDYWxscygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5oYXNUYWls
Q2FsbHMoKTsgfQorICAgIGJvb2wgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZENvZGUuZGF0YS0+aGFzVGFpbENhbGxzKCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE1ldGFkYXRhPgogICAgIE1ldGFkYXRhJiBtZXRhZGF0YShPcGNvZGVJRCBvcGNvZGVJRCwgdW5z
aWduZWQgbWV0YWRhdGFJRCkKQEAgLTg5OCw3ICs4OTgsNyBAQCBwdWJsaWM6CiAKICAgICBzaXpl
X3QgbWV0YWRhdGFTaXplSW5CeXRlcygpCiAgICAgewotICAgICAgICByZXR1cm4gbV91bmxpbmtl
ZENvZGUtPm1ldGFkYXRhU2l6ZUluQnl0ZXMoKTsKKyAgICAgICAgcmV0dXJuIG1fdW5saW5rZWRD
b2RlLmRhdGEtPm1ldGFkYXRhU2l6ZUluQnl0ZXMoKTsKICAgICB9CiAKICAgICBNZXRhZGF0YVRh
YmxlKiBtZXRhZGF0YVRhYmxlKCkgeyByZXR1cm4gbV9tZXRhZGF0YS5nZXQoKTsgfQpAQCAtOTEw
LDcgKzkxMCw3IEBAIHB1YmxpYzoKICAgICBib29sIGxvb3BIaW50c0FyZUVsaWdpYmxlRm9yRnV6
emluZ0Vhcmx5UmV0dXJuKCkKICAgICB7CiAgICAgICAgIC8vIFNvbWUgYnVpbHRpbnMgYXJlIHJl
cXVpcmVkIHRvIGFsd2F5cyBjb21wbGV0ZSB0aGUgbG9vcHMgdGhleSBydW4uCi0gICAgICAgIHJl
dHVybiAhbV91bmxpbmtlZENvZGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgICAgIHJldHVy
biAhbV91bmxpbmtlZENvZGUuZGF0YS0+aXNCdWlsdGluRnVuY3Rpb24oKTsKICAgICB9CiAKIHBy
b3RlY3RlZDoKQEAgLTk5Nyw3ICs5OTcsOCBAQCBwcml2YXRlOgogICAgIFZpcnR1YWxSZWdpc3Rl
ciBtX3Njb3BlUmVnaXN0ZXI7CiAgICAgbXV0YWJsZSBDb2RlQmxvY2tIYXNoIG1faGFzaDsKIAot
ICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZENvZGVCbG9jaz4gbV91bmxpbmtlZENvZGU7CisgICAg
dXNpbmcgVW5saW5rZWRDb2RlTm9kZSA9IFBhY2tlZFJhd1NlbnRpbmVsTm9kZU1lbWJlcjxXcml0
ZUJhcnJpZXI8VW5saW5rZWRDb2RlQmxvY2s+PjsKKyAgICBVbmxpbmtlZENvZGVOb2RlIG1fdW5s
aW5rZWRDb2RlOwogICAgIFdyaXRlQmFycmllcjxTY3JpcHRFeGVjdXRhYmxlPiBtX293bmVyRXhl
Y3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9v
d25lckVkZ2U7CiAgICAgLy8gbV92bSBtdXN0IGJlIGEgcG9pbnRlciAoaW5zdGVhZCBvZiBhIHJl
ZmVyZW5jZSkgYmVjYXVzZSB0aGUgSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCmluZGV4IGM3Nzc1M2Vi
MWM3MmY0ZmJhY2E5ODRlZGI0ZDg4MmEyNWVmMDJiMjQuLmQxYmM3M2ZlYTFlZmE4MGZiZGM4NTQy
NTczM2Q2Mzk2OTBlZTJkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdXBlclNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdXBlclNhbXBsZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0RhdGFM
b2cuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC04NCw3
ICs4NSw3IEBAIHZvaWQgcHJpbnRTdXBlclNhbXBsZXJTdGF0ZSgpCiAgICAgZG91YmxlIHBlcmNl
bnRhZ2UgPSAxMDAuMCAqIGluIC8gKGluICsgb3V0KTsKICAgICBpZiAocGVyY2VudGFnZSAhPSBw
ZXJjZW50YWdlKQogICAgICAgICBwZXJjZW50YWdlID0gMC4wOwotICAgIGRhdGFMb2coIlBlcmNl
bnQgdGltZSBiZWhpbmQgc3VwZXIgc2FtcGxlciBmbGFnOiAiLCBwZXJjZW50YWdlLCAiXG4iKTsK
KyAgICBkYXRhTG9nKCJQZXJjZW50IHRpbWUgYmVoaW5kIHN1cGVyIHNhbXBsZXIgZmxhZzogIiwg
cGVyY2VudGFnZSwgIiBmb3IgIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiKGluOiAiLCBpbiwg
Iiwgb3V0OiAiLCBvdXQsICIpXG4iKTsKIH0KIAogdm9pZCBlbmFibGVTdXBlclNhbXBsZXIoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKaW5kZXggNGQyMmVjMmFjNWQ3YWE5ZDdiZDU3NmU5YjA0OGZjMGRhNmVlMDhiNS4uMmE5
ZjgyZjA4ODAzNTFhNDM5YWY3OWEyNDU0N2UyNTZmZTU1Njc5MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC0yNjcs
NiArMjY3LDEwIEBAIGJvb2wgVW5saW5rZWRDb2RlQmxvY2s6OnR5cGVQcm9maWxlckV4cHJlc3Np
b25JbmZvRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0CiAKIFVubGlua2VkQ29kZUJsb2Nr
Ojp+VW5saW5rZWRDb2RlQmxvY2soKQogeworICAgIG1faW5jb21pbmdDb2RlQmxvY2tzLmZvckVh
Y2goWyZdIChhdXRvKiBjb2RlQmxvY2tOb2RlKSB7CisgICAgICAgIGNvZGVCbG9ja05vZGUtPmRh
dGEuY2xlYXIoKTsKKyAgICAgICAgY29kZUJsb2NrTm9kZS0+cmVtb3ZlKCk7CisgICAgfSk7CiB9
CiAKIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBVbmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rp
b25zKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgKaW5kZXggMTEzN2U5YzNhOGJjNzJlYzFiZWZlMTQ1ZWY2ZjE0ODI4NjIz
NWM0Ni4uNDVhNDBjNWZkY2FjOTU3NTI4MmZlYmIwOTRiYWFlZTE5MjRiZGQ3MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAg
LTMzMiw2ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX21ldGFkYXRhLT5zaXpl
SW5CeXRlcygpOwogICAgIH0KIAorICAgIFNlbnRpbmVsTGlua2VkTGlzdDxQYWNrZWRSYXdTZW50
aW5lbE5vZGVNZW1iZXI8V3JpdGVCYXJyaWVyPFVubGlua2VkQ29kZUJsb2NrPj4+JiBpbmNvbWlu
Z0NvZGVCbG9ja3MoKSB7IHJldHVybiBtX2luY29taW5nQ29kZUJsb2NrczsgfQogCiBwcm90ZWN0
ZWQ6CiAgICAgVW5saW5rZWRDb2RlQmxvY2soVk0mLCBTdHJ1Y3R1cmUqLCBDb2RlVHlwZSwgY29u
c3QgRXhlY3V0YWJsZUluZm8mLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPik7CkBAIC00
MDYsNiArNDA3LDggQEAgcHJpdmF0ZToKICAgICBSZWY8VW5saW5rZWRNZXRhZGF0YVRhYmxlPiBt
X21ldGFkYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gbV9pbnN0
cnVjdGlvbnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4g
bV9saXZlbmVzczsKKyAgICAvLyBUaGlzIGV4aXN0cyBzbyB3ZSBjYW4gcmVtb3ZlIHJlZmVyZW5j
ZXMgdG8gdXMgaWYgd2UgZ2V0IHN3ZXB0IGJlZm9yZSBjb2RlYmxvY2tzIHRoYXQgcmVmZXIgdG8g
dXMuCisgICAgU2VudGluZWxMaW5rZWRMaXN0PFBhY2tlZFJhd1NlbnRpbmVsTm9kZU1lbWJlcjxX
cml0ZUJhcnJpZXI8VW5saW5rZWRDb2RlQmxvY2s+Pj4gbV9pbmNvbWluZ0NvZGVCbG9ja3M7CiAK
IAogI2lmIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRXZhbENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRFdmFsQ29kZUJsb2NrLmNwcAppbmRleCBlNDcxMmQ4NjhkZWJj
ZWZlNzQ2MzQ1NjY0NDYyMzgwZjg2MGYxY2E4Li5iNDhmMTUxYzVlN2IyZWUwOWM3MzM2Y2ZlYjNk
ZWJhODFmOGZhN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRFdmFsQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRFdmFsQ29kZUJsb2NrLmNwcApAQCAtMzQsNiArMzQsNyBAQCBjb25zdCBD
bGFzc0luZm8gVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEV2YWxD
b2RlQmxvY2siLCAmQmFzZQogCiB2b2lkIFVubGlua2VkRXZhbENvZGVCbG9jazo6ZGVzdHJveShK
U0NlbGwqIGNlbGwpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc2NvcGUodHJ1ZSk7CiAgICAg
c3RhdGljX2Nhc3Q8VW5saW5rZWRFdmFsQ29kZUJsb2NrKj4oY2VsbCktPn5VbmxpbmtlZEV2YWxD
b2RlQmxvY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25Db2RlQmxvY2suY3BwCmluZGV4IDNkYWVmMDNmYTY3
YWViN2NiMTY3MTQxMmFjZmRkYzI5NGRmNjAxOGIuLjg1OGRlYmU4NjZkODlhZTEwZTA4MTZkYTg5
MDY1MWVhYjEwMDEyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jay5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAgY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OnNfaW5mbyA9IHsg
IlVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sKIAogdm9pZCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzY29w
ZSh0cnVlKTsKICAgICBzdGF0aWNfY2FzdDxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKj4oY2Vs
bCktPn5VbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jay5jcHAKaW5kZXggYzlkNGJjNDYxMzU1ZWI3Y2IxYWFmZDcyZWY3MjJmYTEwNGU5
MzBlMi4uZGNjNmUyNWM2NzkyZGIwNjZkNGI5ZmRhNWIzY2RhNmQ1ZDk2ZGQ2NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5jcHAKQEAgLTM0LDYgKzM0LDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRN
b2R1bGVQcm9ncmEKIAogdm9pZCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQogeworICAgIFN1cGVyU2FtcGxlclNjb3BlIHNjb3BlKHRydWUpOwog
ICAgIHN0YXRpY19jYXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpLT5+
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZFByb2dyYW1Db2RlQmxvY2suY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5j
cHAKaW5kZXggMjllYzlkYjBkOGY5Y2JlOGVkZjlhNDhjYmNkMmE3ZGY5NmJjMTE4Zi4uZjRiZGQz
ZTE1YjY2YjNiMmFiMWU4M2E5YTMxMjBhMWQxZjc3MGFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jazo6c19pbmZvID0geyAiVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrIiwKIAogdm9pZCBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2s6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIFN1cGVy
U2FtcGxlclNjb3BlIHNjb3BlKHRydWUpOwogICAgIHN0YXRpY19jYXN0PFVubGlua2VkUHJvZ3Jh
bUNvZGVCbG9jayo+KGNlbGwpLT5+VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuY3BwCmluZGV4IGM3ZWE4MjQy
ODcyYzNkYzM3YzNlY2QzZTMyZmY2MTRmNzVmMzdjNTYuLjQ1YzAxMzNkMTljMTRhODhlZDY0NzRm
YzQzNDhlOWE2NWJjNGFmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvZGVCbG9ja1NldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJs
b2NrU2V0LmNwcApAQCAtMzksMTMgKzM5LDEwIEBAIENvZGVCbG9ja1NldDo6fkNvZGVCbG9ja1Nl
dCgpCiB7CiB9CiAKLWJvb2wgQ29kZUJsb2NrU2V0Ojpjb250YWlucyhjb25zdCBBYnN0cmFjdExv
Y2tlciYsIHZvaWQqIGNhbmRpZGF0ZUNvZGVCbG9jaykKK2Jvb2wgQ29kZUJsb2NrU2V0Ojpjb250
YWlucyhjb25zdCBBYnN0cmFjdExvY2tlciYsIHZvaWQqKQogewotICAgIFJFTEVBU0VfQVNTRVJU
KG1fbG9jay5pc0xvY2tlZCgpKTsKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19j
YXN0PENvZGVCbG9jayo+KGNhbmRpZGF0ZUNvZGVCbG9jayk7Ci0gICAgaWYgKCFIYXNoU2V0PENv
ZGVCbG9jayo+Ojppc1ZhbGlkVmFsdWUoY29kZUJsb2NrKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBtX2NvZGVCbG9ja3MuY29udGFpbnMoY29kZUJsb2NrKTsKKyAgICBpZiAo
dHJ1ZSkKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBD
b2RlQmxvY2tTZXQ6OmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgKaW5kZXggYWJkYjE5NzI0YTAyNTI2OTkyMDRhYzBiZjBj
NzRiY2ViNDI3ODY5ZS4uMDRkY2RlM2I5MWRlNGMyNzA3YjgyOWRmOTQ4NGQwY2VlMzY2ZGJkYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgKQEAgLTYzLDggKzYz
LDggQEAgcHVibGljOgogICAgIC8vIFZpc2l0cyBlYWNoIENvZGVCbG9jayBpbiB0aGUgaGVhcCB1
bnRpbCB0aGUgdmlzaXRvciBmdW5jdGlvbiByZXR1cm5zIHRydWUKICAgICAvLyB0byBpbmRpY2F0
ZSB0aGF0IGl0IGlzIGRvbmUgaXRlcmF0aW5nLCBvciB1bnRpbCBldmVyeSBDb2RlQmxvY2sgaGFz
IGJlZW4KICAgICAvLyB2aXNpdGVkLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZv
aWQgaXRlcmF0ZShjb25zdCBGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4gdm9pZCBpdGVyYXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgY29uc3QgRnVuY3RvciYpOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZShWTSYsIGNvbnN0IEZ1
bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGUoY29u
c3QgQWJzdHJhY3RMb2NrZXImLCBWTSYsIGNvbnN0IEZ1bmN0b3ImKTsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZVZpYVN1YnNwYWNlcyhWTSYsIGNvbnN0IEZ1
bmN0b3ImKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
ZGVCbG9ja1NldElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9j
a1NldElubGluZXMuaAppbmRleCA1NzU0NTA4MmEyMGJkMzlmOTM1ZGQyMzQxYmNmN2VlMTc4N2My
NzM4Li4xZmNkNDliMWY2NWYzMTAzNTU4YTJiNjdlY2ZmYzljMGUzNWY5YzY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCkBAIC0zMCw2
ICszMCw3IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQmxvY2tT
ZXQuaCIKKyNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
QEAgLTQ2LDIxICs0NywxNCBAQCBpbmxpbmUgdm9pZCBDb2RlQmxvY2tTZXQ6Om1hcmsoY29uc3Qg
QWJzdHJhY3RMb2NrZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KLXZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlKGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpCit2b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZShWTSYgdm0sIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwotICAgIGl0ZXJh
dGUobG9ja2VyLCBmdW5jdG9yKTsKKyAgICBpdGVyYXRlKGxvY2tlciwgdm0sIGZ1bmN0b3IpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJh
dGUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAg
IGZvciAoQ29kZUJsb2NrKiBjb2RlQmxvY2sgOiBtX2NvZGVCbG9ja3MpCi0gICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgQ29k
ZUJsb2NrU2V0OjppdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKK3ZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
Vk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIHZtLmZvckVhY2hDb2RlQmxv
Y2tTcGFjZSgKICAgICAgICAgWyZdIChhdXRvJiBzcGFjZUFuZFNldCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAppbmRleCBjYjA3OWJmNzVhMWQ3NDg0YzhiMjg3N2I0MjQ4MzVkNDY3
MmMwOThhLi44YzZmMGFkMjhiYWFhM2M4YzA1ZjFjZGE2MjQxZjk3NGFlMjQ3NzVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtOTY5LDEwICs5NjksOCBAQCB2b2lkIEhlYXA6
OmRlbGV0ZUFsbFVubGlua2VkQ29kZUJsb2NrcyhEZWxldGVBbGxDb2RlRWZmb3J0IGVmZm9ydCkK
IAogdm9pZCBIZWFwOjpkZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSgpCiB7Ci0gICAgdm0oKS5m
b3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFj
ZS5zd2VlcCgpOyB9KTsKICAgICAvLyBTd2VlcGluZyBtdXN0IG9jY3VyIGJlZm9yZSBkZWxldGlu
ZyBzdHVicywgb3RoZXJ3aXNlIHRoZSBzdHVicyBtaWdodCBzdGlsbCB0aGluayB0aGV5J3JlIGFs
aXZlIGFzIHRoZXkgZ2V0IGRlbGV0ZWQuCiAgICAgLy8gQW5kIENvZGVCbG9jayBkZXN0cnVjdG9y
IGlzIGFzc3VtaW5nIHRoYXQgQ29kZUJsb2NrIGdldHMgZGVzdHJveWVkIGJlZm9yZSBVbmxpbmtl
ZENvZGVCbG9jayBnZXRzIGRlc3Ryb3llZC4KLSAgICB2bSgpLmZvckVhY2hDb2RlQmxvY2tTcGFj
ZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CiAgICAgaWYgKG1h
eUhhdmVKSVRTdHViUm91dGluZXNUb0RlbGV0ZSgpKQogICAgICAgICBkZWxldGVEZWFkSklUU3R1
YlJvdXRpbmVzKDVfbXMpOwogfQpAQCAtMjUyMiwxMiArMjUyMCwxMiBAQCB2b2lkIEhlYXA6OmZv
ckVhY2hDb2RlQmxvY2tJbXBsKGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKENvZGVCbG9jayopPiYg
ZnVuYykKICAgICAvLyBXZSBkb24ndCBrbm93IHRoZSBmdWxsIHNldCBvZiBDb2RlQmxvY2tzIHVu
dGlsIGNvbXBpbGF0aW9uIGhhcyB0ZXJtaW5hdGVkLgogICAgIGNvbXBsZXRlQWxsSklUUGxhbnMo
KTsKIAotICAgIHJldHVybiBtX2NvZGVCbG9ja3MtPml0ZXJhdGUoZnVuYyk7CisgICAgcmV0dXJu
IG1fY29kZUJsb2Nrcy0+aXRlcmF0ZSh2bSgpLCBmdW5jKTsKIH0KIAogdm9pZCBIZWFwOjpmb3JF
YWNoQ29kZUJsb2NrSWdub3JpbmdKSVRQbGFuc0ltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxv
Y2tlciwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQ29kZUJsb2NrKik+JiBmdW5jKQogewotICAg
IHJldHVybiBtX2NvZGVCbG9ja3MtPml0ZXJhdGUobG9ja2VyLCBmdW5jKTsKKyAgICByZXR1cm4g
bV9jb2RlQmxvY2tzLT5pdGVyYXRlKGxvY2tlciwgdm0oKSwgZnVuYyk7CiB9CiAKIHZvaWQgSGVh
cDo6d3JpdGVCYXJyaWVyU2xvd1BhdGgoY29uc3QgSlNDZWxsKiBmcm9tKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQppbmRleCBlNDJiOGIyNWRjYjc4YTdmMWNjZmM5MDdmZGZhODEyNzlhNjg2ZWVmLi5hN2JjYzM1
YTAwYTk2NWJhYzZiZDYwNWI1Zjg3YzhmZTU0NWYzZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAt
MjAzMyw3ICsyMDMzLDcgQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9pbW0sIE9wU3dpdGNo
SW1tLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBnZXR1KHNpemUsIE9w
U3dpdGNoSW1tLCBtX3RhYmxlSW5kZXgsIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDIsIHQxLCB0MCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3QyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fdW5saW5rZWRDb2RlICsgQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVOb2RlOjpkYXRhW3QyXSwg
dDIKICAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCiAgICAg
bXVsaSBzaXplb2YgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUsIHQzCiAgICAgbG9hZHAgVW5saW5r
ZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIEZpeGVk
VmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCkBAIC0y
MDYzLDcgKzIwNjMsNyBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNo
Q2hhciwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgZ2V0dShzaXplLCBP
cFN3aXRjaENoYXIsIG1fdGFibGVJbmRleCwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzaXplLCB0MiwgdDEsIHQwKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAgIGxv
YWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9j
azo6bV91bmxpbmtlZENvZGUgKyBDb2RlQmxvY2s6OlVubGlua2VkQ29kZU5vZGU6OmRhdGFbdDJd
LCB0MgogICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKICAg
ICBtdWxpIHNpemVvZiBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSwgdDMKICAgICBsb2FkcCBVbmxp
bmtlZENvZGVCbG9jazo6UmFyZURhdGE6Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4
ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KaW5kZXggMTRhZDJhNDk3ZmIwYTdhZjkzN2IyNzNhNzBkMGE5ZmJhZTNiZDJhNC4uMjFk
MWRjZDQxODM2ZjAzODI2MmUxYWUxM2U4ZmRmZTU2NGY0Y2RjMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIx
NzgsNyArMjE3OCw3IEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfaW1tLCBPcFN3aXRjaElt
bSwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgZ2V0dShzaXplLCBPcFN3
aXRjaEltbSwgbV90YWJsZUluZGV4LCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNp
emUsIHQyLCB0MSkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fdW5saW5rZWRDb2RlW3QyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5s
aW5rZWRDb2RlICsgQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVOb2RlOjpkYXRhW3QyXSwgdDIKICAg
ICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCiAgICAgbXVsaSBz
aXplb2YgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUsIHQzCiAgICAgbG9hZHAgVW5saW5rZWRDb2Rl
QmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIEZpeGVkVmVjdG9y
OjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCkBAIC0yMjA4LDcg
KzIyMDgsNyBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoQ2hhciwg
bWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgZ2V0dShzaXplLCBPcFN3aXRj
aENoYXIsIG1fdGFibGVJbmRleCwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXpl
LCB0MiwgdDEpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCi0gICAgbG9hZHAgQ29kZUJs
b2NrOjptX3VubGlua2VkQ29kZVt0Ml0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3VubGlu
a2VkQ29kZSArIENvZGVCbG9jazo6VW5saW5rZWRDb2RlTm9kZTo6ZGF0YVt0Ml0sIHQyCiAgICAg
bG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgogICAgIG11bGkgc2l6
ZW9mIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlLCB0MwogICAgIGxvYWRwIFVubGlua2VkQ29kZUJs
b2NrOjpSYXJlRGF0YTo6bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMgKyBGaXhlZFZlY3Rvcjo6
bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDNkNDIwNWYy
ZTg5MDU1ZTUxNjE1Yjk1NWU0YjQ4ZWYyZjE0MjI0NDIuLjEyZTZlZTYzOThhYzcwNGIxZTAxOWI5
MGQxZWUwMzI1ZDViNjcyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTI0NDIsNyArMjQ0Miw3IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OmJ1bXBHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKFZNJiB2bSkKICAgICBpZiAoKytt
X2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2ggPT0gT3B0aW9uczo6dGhyZXNob2xkRm9yR2xvYmFs
TGV4aWNhbEJpbmRpbmdFcG9jaCgpKSB7CiAgICAgICAgIC8vIFNpbmNlIHRoZSBlcG9jaCBvdmVy
Zmxvd3MsIHdlIHNob3VsZCByZXdyaXRlIGFsbCB0aGUgQ29kZUJsb2NrIHRvIGFkanVzdCB0byB0
aGUgbmV3bHkgc3RhcnRlZCBnZW5lcmF0aW9uLgogICAgICAgICBtX2dsb2JhbExleGljYWxCaW5k
aW5nRXBvY2ggPSAxOwotICAgICAgICB2bS5oZWFwLmNvZGVCbG9ja1NldCgpLml0ZXJhdGUoWyZd
IChDb2RlQmxvY2sqIGNvZGVCbG9jaykgeworICAgICAgICB2bS5oZWFwLmNvZGVCbG9ja1NldCgp
Lml0ZXJhdGUodm0sIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsKICAgICAgICAgICAgIGlm
IChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpICE9IHRoaXMpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgY29kZUJsb2NrLT5ub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGJlYWM4NmViMGViOGNmNTEz
OGVmYmZkYzM4MjM0NzQyYjhjYmRlMTEuLjE1Njg5ZDVhNGM1ZWNmOGY5MTFiM2M2ZDhmNTgxYzA3
Nzc0ZmMyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQxMiw2ICs0
MTIsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVu
TG9vcCogcnVuTG9vcCwgYm9vbCogc3VjY2VzcykKICAgICAsIG1fcHJpbWl0aXZlR2lnYWNhZ2VF
bmFibGVkKElzV2F0Y2hlZCkKICAgICAsIG1fY29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRDb3Vu
dCgwKQogeworICAgIGVuYWJsZVN1cGVyU2FtcGxlcigpOwogICAgIGlmIChVTkxJS0VMWSh2bUNy
ZWF0aW9uU2hvdWxkQ3Jhc2gpKQogICAgICAgICBDUkFTSF9XSVRIX0lORk8oMHg0MjQyNDI0MjIw
MjAyMDIwLCAweGJhZGJlZWYwYmFkYmVlZiwgMHgxMjM0MTIzNDEyMzQxMjM0LCAweDEzMzcxMzM3
MTMzNzEzMzcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TZW50aW5lbExpbmtlZExp
c3QuaCBiL1NvdXJjZS9XVEYvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCmluZGV4IDRmNDBmMGVj
MDdhN2ZiNmM3NWVkY2YzMmNjZGE4N2MwYzk5ZDc1ZjkuLjM1ODM5MGY0OGYzMDQwM2EwYzVlNzYy
OGZmNjNmYTYzZDYzNzk1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NlbnRpbmVsTGlu
a2VkTGlzdC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCkBAIC0y
NzIsOCArMjcyLDI4IEBAIGlubGluZSB2b2lkIFNlbnRpbmVsTGlua2VkTGlzdDxULCBSYXdOb2Rl
Pjo6dGFrZUZyb20oU2VudGluZWxMaW5rZWRMaXN0PFQsIFJhd05vCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogdXNpbmcgUGFja2VkUmF3U2VudGluZWxOb2RlID0gQmFzaWNSYXdTZW50aW5lbE5vZGU8
VCwgUGFja2VkUHRyVHJhaXRzPFQ+PjsKIAorCisvLyBBIGNvbnZlbmllbmNlIHN0cnVjdCBmb3Ig
ZW1iZWRkaW5nIGEgU2VudGluZWxMaW5rTGlzdCBub2RlIGluc2lkZSBhIGNsYXNzIGFzIGEgbWVt
YmVyLgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBQYWNrZWRSYXdTZW50aW5lbE5vZGVN
ZW1iZXIgOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPFBhY2tlZFJhd1NlbnRpbmVsTm9k
ZU1lbWJlcjxUPj4KK3sKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFBhY2tl
ZFJhd1NlbnRpbmVsTm9kZU1lbWJlcihBcmdzJiYuLi4gYXJncykgOiBkYXRhKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikgeyB9CisgICAgUGFja2VkUmF3U2VudGluZWxOb2RlTWVtYmVyKFNl
bnRpbmVsVGFnKSB7IH0KKyAgICB+UGFja2VkUmF3U2VudGluZWxOb2RlTWVtYmVyKCkgPSBkZWZh
dWx0OworCisgICAgUGFja2VkUmF3U2VudGluZWxOb2RlTWVtYmVyJiBvcGVyYXRvcj0oVCYgdmFs
dWUpIHsgZGF0YSA9IHZhbHVlOyByZXR1cm4gKnRoaXM7IH0KKyAgICBQYWNrZWRSYXdTZW50aW5l
bE5vZGVNZW1iZXImIG9wZXJhdG9yPShUJiYgdmFsdWUpIHsgZGF0YSA9IFdURk1vdmUodmFsdWUp
OyByZXR1cm4gKnRoaXM7IH0KKworICAgIFQmIG9wZXJhdG9yLT4oKSB7IHJldHVybiBkYXRhOyB9
CisgICAgY29uc3QgVCYgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0KKworICAg
IFQgZGF0YTsKK307CisKIH0KIAogdXNpbmcgV1RGOjpCYXNpY1Jhd1NlbnRpbmVsTm9kZTsKIHVz
aW5nIFdURjo6UGFja2VkUmF3U2VudGluZWxOb2RlOwordXNpbmcgV1RGOjpQYWNrZWRSYXdTZW50
aW5lbE5vZGVNZW1iZXI7CiB1c2luZyBXVEY6OlNlbnRpbmVsTGlua2VkTGlzdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>