<?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>231582</bug_id>
          
          <creation_ts>2021-10-12 08:59:30 -0700</creation_ts>
          <short_desc>Use STL instead of WTF::get_if, WTF::Monostate, WTF::visit, and WTF::holds_alternative</short_desc>
          <delta_ts>2021-10-12 13:45:19 -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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1803152</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-12 08:59:30 -0700</bug_when>
    <thetext>Use STL instead of WTF::get_if, WTF::Monostate, WTF::visit, and WTF::holds_alternative</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803153</commentid>
    <comment_count>1</comment_count>
      <attachid>440942</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-12 09:00:14 -0700</bug_when>
    <thetext>Created attachment 440942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803156</commentid>
    <comment_count>2</comment_count>
      <attachid>440942</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-12 09:04:26 -0700</bug_when>
    <thetext>Comment on attachment 440942
Patch

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

r=me assuming compile succeeds (which I assume it will since this was done with global replace, I hope)

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        Use STL instead of WTF::get_if, WTF::Monostate, WTF::visit, and WTF::holds_alternative

Pedantic terminology nitpick: The term &quot;STL&quot; is a bit archaic and I don’t think it applies here; you just mean the C++ standard library.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803340</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-12 13:43:58 -0700</bug_when>
    <thetext>Committed r284016 (242853@main): &lt;https://commits.webkit.org/242853@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440942.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803341</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-12 13:45:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/84164480&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440942</attachid>
            <date>2021-10-12 09:00:14 -0700</date>
            <delta_ts>2021-10-12 13:44:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231582-20211012100013.patch</filename>
            <type>text/plain</type>
            <size>169842</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzOTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YWM3NWM5NzQ3OWQ2NGZkMzU4MDZmNjRhY2M5MzFhMTQ4MWU4ZWZhLi4xNDIzMzlkYzMxNzI2OWQz
Zjg5ZTNiY2Q4MDgyMzk2MzAyZjVmYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMS0xMC0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBTVEwgaW5zdGVhZCBvZiBXVEY6OmdldF9pZiwgV1RG
OjpNb25vc3RhdGUsIFdURjo6dmlzaXQsIGFuZCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE1ODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFs
dWUpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04pOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+
OjpsZXhXaXRob3V0Q2xlYXJpbmdMaW5lVGVybWluYXRvcik6CisgICAgICAgICogcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6Q29tcGFjdFREWkVudmlyb25tZW50
Ojp0b1REWkVudmlyb25tZW50IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlVXBkYXRl
LmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVVcGRhdGU6OmlzR2xvYmFsIGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29tcGFj
dFREWkVudmlyb25tZW50OjplbmNvZGUpOgorICAgICAgICAqIHdhc20vV2FzbUxMSW50R2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OkNvbnRyb2xUeXBl
Ojppc0xvb3ApOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Q29udHJvbFR5
cGU6OmlzVG9wTGV2ZWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Q29u
dHJvbFR5cGU6OmlzQmxvY2spOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6
Q29udHJvbFR5cGU6OmlzSWYpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6
Q29udHJvbFR5cGU6OmlzVHJ5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6
OkNvbnRyb2xUeXBlOjppc0FueUNhdGNoKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5l
cmF0b3I6OkNvbnRyb2xUeXBlOjppc0NhdGNoKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRH
ZW5lcmF0b3I6OkNvbnRyb2xUeXBlOjp0YXJnZXRMYWJlbEZvckJyYW5jaCBjb25zdCk6CisgICAg
ICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjpDb250cm9sVHlwZTo6YnJhbmNoVGFyZ2V0
QXJpdHkgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Q29udHJv
bFR5cGU6OmJyYW5jaFRhcmdldFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTElu
dEdlbmVyYXRvcjo6YWRkRWxzZSk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9y
OjphZGRDYXRjaFRvVW5yZWFjaGFibGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVy
YXRvcjo6YWRkQ2F0Y2hBbGxUb1VucmVhY2hhYmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJ
bnRHZW5lcmF0b3I6OmFkZFJldGhyb3cpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVy
YXRvcjo6YWRkRW5kVG9VbnJlYWNoYWJsZSk6CisKIDIwMjEtMTAtMTIgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBCZWdpbiBtaWdyYXRpb24g
ZnJvbSBXVEY6OlZhcmlhbnQgdG8gc3RkOjp2YXJpYW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE0ZmRiZjZkMGYxMDQyMTky
MDU2MjM0ZjI4Mjk1NTBmMWEwZTQ0MmQuLjVjYzAxNjhkMDIyMGYxNzk3NDJhYzMyYTI1ZTY4MDcx
Mjg3NTA0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTAtMTIgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgU1RMIGluc3RlYWQg
b2YgV1RGOjpnZXRfaWYsIFdURjo6TW9ub3N0YXRlLCBXVEY6OnZpc2l0LCBhbmQgV1RGOjpob2xk
c19hbHRlcm5hdGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMxNTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvVmFyaWFudC5oOgorICAgICAgICAoV1RGOjpzd2l0Y2hPbik6CisgICAgICAg
ICgpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjp2aXNpdCk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OmdldF9pZik6IERlbGV0ZWQuCisKIDIwMjEtMTAtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBCZWdpbiBtaWdyYXRpb24gZnJvbSBX
VEY6OlZhcmlhbnQgdG8gc3RkOjp2YXJpYW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGViYTZlNzRkN2I4NjRh
YWQ4OWE4MzNjMDIwYjA3OWIyNmZlNWViNy4uZGRiNGY1M2Y4YjUzMDg3MDcyMjlhY2FkOTg3ZWM1
MjQ3ZTkxYjc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0MSBAQAorMjAyMS0xMC0xMiAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBT
VEwgaW5zdGVhZCBvZiBXVEY6OmdldF9pZiwgV1RGOjpNb25vc3RhdGUsIFdURjo6dmlzaXQsIGFu
ZCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzE1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQ
YXlQYXltZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRI
YW5kbGVyOjpoYW5kbGVzSWRlbnRpZmllcik6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjppbnZva2VDb21wbGV0aW9uSGFu
ZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
OjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAg
ICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2Fj
aGU6OnJlcXVlc3RGcm9tSW5mbyk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
aDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6aXNCbG9iIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keTo6aXNGb3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmlzQXJyYXlCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Ojppc0FycmF5QnVmZmVyVmlldyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmlzVVJMU2VhcmNoUGFyYW1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keTo6aXNUZXh0IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVy
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWxsSGVhZGVyTWFwKToKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlcXVl
c3Q6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6Y29udGludWVQcmltYXJ5S2V5KToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2U6OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSURCS2V5UGF0aFZhbGlkKToKKyAgICAg
ICAgKFdlYkNvcmU6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpsb2dnaW5nU3Ry
aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVxdWVzdDo6cmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXJpYWxpemVJREJLZXlQYXRoKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJv
bHMvTWVkaWFDb250cm9sc0hvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
c0hvc3Q6OmRpc3BsYXlOYW1lRm9yVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sc0hvc3Q6OnNob3dNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnUpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNl
cnRpZmljYXRlVHlwZUZyb21BbGdvcml0aG1JZGVudGlmaWVyKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAgICAqIE1v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUldlYkdMTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJXZWJHTExheWVy
OjpjcmVhdGUpOgorICAgICAgICAqIGFuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uRWZmZWN0Ojp1cGRhdGVUaW1pbmcpOgorICAgICAgICAq
IGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNz
SXRlcmFibGVLZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc1Byb3BlcnR5SW5k
ZXhlZEtleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6Y3JlYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9CdWZmZXJTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkJ1ZmZlclNvdXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCdWZmZXJT
b3VyY2U6Omxlbmd0aCBjb25zdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0
aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RJREJLZXlJbnRvU2NyaXB0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6bWF5YmVDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVB
bmRLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbkluamVjdElEQktleUludG9TY3JpcHRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVLZXlQYXRoQXJyYXkpOgorICAgICAgICAo
V2ViQ29yZTo6ZGVzZXJpYWxpemVJREJWYWx1ZVdpdGhLZXlJbmplY3Rpb24pOgorICAgICAgICAq
IGNyeXB0by9TdWJ0bGVDcnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycyk6CisgICAgICAgICogY3NzL0NTU0N1c3RvbVByb3BlcnR5
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3Jl
YXRlRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6ZXF1
YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmN1
c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZTo6dG9rZW5zIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZS5oOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKiBjc3MvdHlwZWRvbS9D
U1NVbnBhcnNlZFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1VucGFyc2VkVmFsdWU6
OnNlcmlhbGl6ZSBjb25zdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6ZGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbElu
dG9WaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFuaW1hdGUpOgorICAgICAgICAq
IGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6YWRk
RXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0
OjpyZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MpOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxs
aW5nKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc01lZGlhU3RyZWFtU3JjT2JqZWN0IGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL1VSTFNlYXJjaFBhcmFtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVUkxT
ZWFyY2hQYXJhbXM6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudENvbG9yIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnQgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNTdHlsZTo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNT
dHlsZTo6aXNDdXJyZW50Q29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5
bGU6OmNhbnZhc0dyYWRpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxl
OjpjYW52YXNQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclNjb3BlZFNo
YWRlclByb2dyYW1IaWdobGlnaHQ6OnNhdmVCbGVuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclNjb3BlZFNoYWRlclByb2dyYW1IaWdobGlnaHQ6Omhhc0J1ZmZlckJpbmRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2NvcGVkU2hhZGVyUHJvZ3JhbUhpZ2hsaWdo
dDo6aGFzRnJhbWVidWZmZXJQYXJhbWV0ZXJBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRUZXhJbWFnZVNvdXJjZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VT
b3VyY2VIZWxwZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlZUVEN1ZTo6c2V0TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWU6OnNl
dFBvc2l0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6Y2FudmFzQ29udGV4dCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0VsZW1lbnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6cmVzb2x2ZUNvbnRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNhbnZhczo6YnVpbGRPYmplY3RGb3JDYW52YXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJv
Z3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpwcm9n
cmFtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclNoYWRlclByb2dyYW06OnJl
cXVlc3RTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2hhZGVyUHJv
Z3JhbTo6dXBkYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclNoYWRlclBy
b2dyYW06OmJ1aWxkT2JqZWN0Rm9yU2hhZGVyUHJvZ3JhbSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclNoYWRlclByb2dyYW0uaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6
a2V5UGF0aEZyb21JREJLZXlQYXRoKToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5s
aW5lSXRlcmF0b3JCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3g6
OmxlZ2FjeUlubGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6Qm94OjppbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRTdHJpbmcgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9y
bVN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnRha2VE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29u
dGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFy
ZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZUNG
RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlO
b3ROZWVkZWRTb29uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVj
b2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6
Z2V0UG9pbnRlckZyb21EaWN0aW9uYXJ5U3RhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0RlY29kaW5nT3B0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25z
OjpoYXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9u
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhbGl6ZU5leHRGYWxsYmFjayk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW5saW5lUGF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpoYXNJbmxpbmVEYXRh
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGF0aDo6Y3JlYXRlQ0dQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhdGg6OmVuc3VyZVBsYXRmb3JtUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OnRyYW5zZm9ybSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXRoOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6c2FmZUNvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OmRpc3BsYXlMaXN0SXRlbVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6ZGVsZXRlQWxsRm9udHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6Z2V0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OnJlbW92ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNETVByb3h5Q2xlYXJLZXk6OmNlbmNTZXREZWNyeXB0aW9uS2V5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5VGh1
bmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcm94eVRodW5kZXI6OmdldERlY3J5cHRp
b25TZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0
aW9uTGlzdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svTW9ja01lZGlhRGV2aWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFEZXZpY2U6
OmlzTWljcm9waG9uZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFEZXZpY2U6
OmlzU3BlYWtlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFEZXZpY2U6Omlz
Q2FtZXJhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYURldmljZTo6aXNEaXNw
bGF5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjptb2Nr
RGlzcGxheVR5cGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNl
Ojptb2NrQ2FtZXJhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjptb2NrRGlzcGxheSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9E
TlMuaDoKKyAgICAgICAgKFdlYkNvcmU6OklQQWRkcmVzczo6aXNJUHY0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklQQWRkcmVzczo6aXNJUHY2IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjppbWFn
ZU9yTWVkaWFGaWxlc0NvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjph
cHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRNdWx0aVBhcnRL
ZXlWYWx1ZVBhaXJJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kTm9u
TXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6
OmZsYXR0ZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmNvbnRhaW5zQmxv
YkVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OnByZXBhcmVGb3JV
cGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphc0Jsb2JVUkwgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpoYXNVcGxvYWQgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRIVFRQQm9keSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OmVuYWJsZVNTTEZv
ckhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTU0xIYW5kbGU6OmNsZWFyQ0FDZXJ0SW5mbyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsU1NMVmVyaWZpZXI6OkN1cmxTU0xWZXJpZmllcik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZUJvZHkgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9XZWJLaXRGb3JtRGF0YUlucHV0U3Ry
ZWFtLmNwcDoKKyAgICAgICAgKHdlYmtpdEZvcm1EYXRhSW5wdXRTdHJlYW1OZXcpOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlZpZXc6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnNldENoaWxkcmVuSW5saW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZGVsZXRlTGluZXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjppbnZhbGlkYXRlTGluZUxheW91dFBhdGgpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrRmxvdzo6aGFzTGluZUxheW91dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6Omhhc0xlZ2FjeUxpbmVMYXlvdXQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93OjpoYXNNb2Rlcm5MaW5lTGF5b3V0IGNvbnN0KToKKyAgICAg
ICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXI6OmFwcGx5Q3VzdG9tUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXI6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YTo6c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvUG9zdE1lc3NhZ2UpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpjYW5jZWxKb2JzRnJvbVNlcnZpY2VXb3JrZXIp
OgorCiAyMDIxLTEwLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQmVnaW4gbWlncmF0aW9uIGZyb20gV1RGOjpWYXJpYW50IHRvIHN0ZDo6
dmFyaWFudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBhNGYyMWE5YjViYWNmNmRkYjk5NmFmY2I5ZTY4MDg1OWVlNDlj
ZmM2Li40MDg0NmY4OTZjNmNlYmRiZWZmZDNiOTlhZDI2ODBmNTAwOTQxMzExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDY0IEBACisyMDIxLTEwLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFNUTCBpbnN0ZWFkIG9mIFdURjo6Z2V0X2lm
LCBXVEY6Ok1vbm9zdGF0ZSwgV1RGOjp2aXNpdCwgYW5kIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTU4Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb2x2ZUJsb2JSZWZlcmVuY2Vz
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZURhdGFDdXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhOjpEYXRh
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxzdGQ6Om1vbm9zdGF0ZT46OmVuY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8c3RkOjptb25vc3RhdGU+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPE1vbm9zdGF0ZT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8TW9ub3N0YXRlPjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VS
ZWNlaXZlUXVldWVNYXAuY3BwOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFw
OjpnZXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmVuY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8SURCS2V5UGF0aD46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtlck9yQ2xpZW50RGF0YT46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmll
cj46OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViS2l0Ojp2YWx1ZUZvcktleSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nl
c3NUaHJvdHRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjppc1Zh
bGlkQmFja2dyb3VuZEFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxl
cjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NU
aHJvdHRsZXI6OlRpbWVkQWN0aXZpdHk6OnVwZGF0ZVRpbWVyKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0b3I6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvcmU6OmdldFJwSWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb3JlOjpnZXRVc2VyTmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXNwb25kUmVjZWl2
ZWQpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6aW52b2tlUGVuZGlu
Z0NvbXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6Omdl
dENsaWVudERhdGFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6Z2V0VXNlclZlcmlmaWNhdGlvblJl
cXVpcmVtZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21E
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6
Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9n
dGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xp
ZW50OjpleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tOgorICAgICAgICAo
V2ViS2l0OjpUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OnJlbW92ZUFubm90YXRpb25SZWxh
dGl2ZVRvU2VsZWN0aW9uKToKKwogMjAyMS0xMC0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJlZ2luIG1pZ3JhdGlvbiBmcm9tIFdURjo6
VmFyaWFudCB0byBzdGQ6OnZhcmlhbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcAppbmRleCA2YTE3OTU0ODcwZDEwNzYxN2Y1NDE3N2VmNzhhNzlkMDUx
NWU4YThkLi5mNGYyZjc0YjFmMjI4ZDFjMTk2NDRlZmQwMzI4YTFiNzk0MWM5MjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC05NjAsNyAr
OTYwLDcgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5j
aElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKICAgICAgICAgSnVtcExpc3QgaXNOb3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkOwogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQuYXBwZW5kKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBK
U0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKSkpOwogICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZSh2bSwgdmFsdWUucGF5bG9h
ZEdQUigpLCBzY3JhdGNoLCBzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQpOwotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0dsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEpTR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSkKICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihXVEY6OmdldDxKU0dsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpLCBzY3JhdGNoSWZTaG91
bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtb3ZlKFdURjo6Z2V0PEdQUlJlZz4oZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaElmU2hvdWxkQ2hl
Y2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggOTlkN2I2
ZmZiY2NkNjYwOTc1MDkxNDZiZWNkMTk5MWYzZjdmNzk0Yi4uMzUwZThmOTViOGVkZGE2MjBkZDRl
YWNkN2UxMmI1OTMyZDgxZjFhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTIxNDgsMTMgKzIx
NDgsMTMgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNl
aXZlQnJvYWRjYXN0LCAoSlNHbG9iYWxPYmplY3QqIGcKIAogICAgIGF1dG8gY29udGVudCA9IG1l
c3NhZ2UtPnJlbGVhc2VDb250ZW50cygpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gKFsmXSgpIC0+
IEpTVmFsdWUgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBcnJheUJ1ZmZl
ckNvbnRlbnRzPihjb250ZW50KSkgeworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxBcnJheUJ1ZmZlckNvbnRlbnRzPihjb250ZW50KSkgewogICAgICAgICAgICAgYXV0byBuYXRp
dmVCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFdURjo6Z2V0PEFycmF5QnVmZmVyQ29udGVu
dHM+KFdURk1vdmUoY29udGVudCkpKTsKICAgICAgICAgICAgIEFycmF5QnVmZmVyU2hhcmluZ01v
ZGUgc2hhcmluZ01vZGUgPSBuYXRpdmVCdWZmZXItPnNoYXJpbmdNb2RlKCk7CiAgICAgICAgICAg
ICByZXR1cm4gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5QnVm
ZmVyU3RydWN0dXJlKHNoYXJpbmdNb2RlKSwgV1RGTW92ZShuYXRpdmVCdWZmZXIpKTsKICAgICAg
ICAgfQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFdhc206Ok1lbW9yeUhhbmRsZT4+KGNvbnRlbnQpKSB7CisgICAgICAgIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxXYXNtOjpNZW1vcnlIYW5kbGU+Pihjb250ZW50
KSkgewogICAgICAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSoganNNZW1vcnkgPSBKU0M6OkpT
V2ViQXNzZW1ibHlNZW1vcnk6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9iYWxPYmpl
Y3QtPndlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgc2NvcGUucmVs
ZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBSZWY8V2FzbTo6TWVtb3J5PiBt
ZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmNyZWF0ZShXVEY6OmdldDxSZWY8V2FzbTo6TWVtb3J5SGFu
ZGxlPj4oV1RGTW92ZShjb250ZW50KSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCmluZGV4IDJhOGE2N2FmM2YyMmNiNWZjMjU0MjgyNTJmMjZmZGEyMzk0ZjgzNWIuLjEwNmJi
ZmNiYTQwNWQwZTVhYTNkMDMwMzA2NjJmN2JiZWMzNzhiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0yMjk3LDcgKzIyOTcsNyBAQCBzdGFydDoKICAgICAgICAg
ICAgIGF1dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZUhleCgpOwogICAgICAgICAgICAgaWYg
KCFwYXJzZU51bWJlclJlc3VsdCkKICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlID0gMDsKLSAgICAgICAgICAgIGVsc2UgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91
YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpKQorICAgICAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCkpCiAgICAgICAgICAgICAg
ICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4oKnBhcnNlTnVtYmVy
UmVzdWx0KTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHRva2VuID0gQklH
SU5UOwpAQCAtMjMzNiw3ICsyMzM2LDcgQEAgc3RhcnQ6CiAgICAgICAgICAgICBhdXRvIHBhcnNl
TnVtYmVyUmVzdWx0ID0gcGFyc2VCaW5hcnkoKTsKICAgICAgICAgICAgIGlmICghcGFyc2VOdW1i
ZXJSZXN1bHQpCiAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IDA7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNl
TnVtYmVyUmVzdWx0KSkKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpKQogICAgICAgICAgICAgICAgIHRva2VuRGF0
YS0+ZG91YmxlVmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCk7CiAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB0b2tlbiA9IEJJR0lOVDsKQEAgLTIz
NzYsNyArMjM3Niw3IEBAIHN0YXJ0OgogICAgICAgICAgICAgYXV0byBwYXJzZU51bWJlclJlc3Vs
dCA9IHBhcnNlT2N0YWwoKTsKICAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJSZXN1bHQpCiAg
ICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IDA7Ci0gICAgICAgICAgICBl
bHNlIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0
KSkKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPigq
cGFyc2VOdW1iZXJSZXN1bHQpKQogICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFs
dWUgPSBXVEY6OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCk7CiAgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICB0b2tlbiA9IEJJR0lOVDsKQEAgLTI0MTcsNyArMjQxNyw3
IEBAIHN0YXJ0OgogICAgICAgICB9CiAgICAgICAgIGlmIChpc0FTQ0lJT2N0YWxEaWdpdChtX2N1
cnJlbnQpKSB7CiAgICAgICAgICAgICBhdXRvIHBhcnNlTnVtYmVyUmVzdWx0ID0gcGFyc2VPY3Rh
bCgpOwotICAgICAgICAgICAgaWYgKHBhcnNlTnVtYmVyUmVzdWx0ICYmIFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpKSB7CisgICAgICAgICAgICBpZiAo
cGFyc2VOdW1iZXJSZXN1bHQgJiYgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KCpwYXJz
ZU51bWJlclJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVl
ID0gV1RGOjpnZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpOwogICAgICAgICAgICAgICAg
IHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlKTsKICAgICAgICAgICAgIH0KQEAgLTI0MjcsNyArMjQyNyw3IEBAIHN0YXJ0OgogICAgICAg
ICBpZiAoTElLRUxZKHRva2VuICE9IElOVEVHRVIgJiYgdG9rZW4gIT0gRE9VQkxFKSkgewogICAg
ICAgICAgICAgYXV0byBwYXJzZU51bWJlclJlc3VsdCA9IHBhcnNlRGVjaW1hbCgpOwogICAgICAg
ICAgICAgaWYgKHBhcnNlTnVtYmVyUmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPigqcGFyc2VOdW1iZXJS
ZXN1bHQpKSB7CiAgICAgICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBX
VEY6OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAg
IHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAppbmRleCBlNWQ1N2MyZmZjM2IzMjI4
ZmJhMTI5NTc2YzE4MDBiZGU4ZDMyMzY5Li4yOTY4OTA3MDI1ZTVhMzc4N2NhNzRkYzkwZWNlZjVm
OGQ3OGMxMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zhcmlh
YmxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zhcmlh
YmxlRW52aXJvbm1lbnQuaApAQCAtMzU1LDcgKzM1NSw3IEBAIHB1YmxpYzoKIAogICAgIFREWkVu
dmlyb25tZW50JiB0b1REWkVudmlyb25tZW50KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEluZmxhdGVkPihtX3ZhcmlhYmxlcykpCisgICAgICAgIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEluZmxhdGVkPihtX3ZhcmlhYmxlcykpCiAgICAgICAg
ICAgICByZXR1cm4gY29uc3RfY2FzdDxURFpFbnZpcm9ubWVudCY+KFdURjo6Z2V0PEluZmxhdGVk
PihtX3ZhcmlhYmxlcykpOwogICAgICAgICByZXR1cm4gdG9URFpFbnZpcm9ubWVudFNsb3coKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVVw
ZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVVwZGF0ZS5jcHAK
aW5kZXggNjViNDEwOTRkNWFjOTY5OWIyMmUyMzY5NDkzMTcxNzk2YzZmOTMzMC4uMWNmZGY3MmMx
YzgyMGEwNmVkNTY1ODk3ODc4ZTMzMjNlZjEzZGQxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVVcGRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlVXBkYXRlLmNwcApAQCAtNDgsNyArNDgsNyBAQCBDYWNoZVVwZGF0
ZSYgQ2FjaGVVcGRhdGU6Om9wZXJhdG9yPShDYWNoZVVwZGF0ZSYmIG90aGVyKQogCiBib29sIENh
Y2hlVXBkYXRlOjppc0dsb2JhbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8R2xvYmFsVXBkYXRlPihtX3VwZGF0ZSk7CisgICAgcmV0dXJuIHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8R2xvYmFsVXBkYXRlPihtX3VwZGF0ZSk7CiB9CiAKIGNvbnN0IENhY2hlVXBk
YXRlOjpHbG9iYWxVcGRhdGUmIENhY2hlVXBkYXRlOjphc0dsb2JhbCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggOGIzZmY4ODFm
ZmM2YTY1YWM3ZWZiZDUyNmRiNWJmNmUzYjRjOWNmNi4uZGU4MjE0YmEyNmE0YWU0NDk1OWNmZTRk
NzA5Yjk5NjYyMTg0YTVkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcApAQCAtMTAzNyw3ICsxMDM3LDcgQEAgY2xhc3MgQ2FjaGVkQ29tcGFjdFRE
WkVudmlyb25tZW50IDogcHVibGljIENhY2hlZE9iamVjdDxDb21wYWN0VERaRW52aXJvbm1lbnQ+
IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDb21w
YWN0VERaRW52aXJvbm1lbnQmIGVudikKICAgICB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPENvbXBhY3RURFpFbnZpcm9ubWVudDo6Q29tcGFjdD4oZW52Lm1fdmFyaWFibGVz
KSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29tcGFjdFREWkVudmlyb25t
ZW50OjpDb21wYWN0PihlbnYubV92YXJpYWJsZXMpKQogICAgICAgICAgICAgbV92YXJpYWJsZXMu
ZW5jb2RlKGVuY29kZXIsIFdURjo6Z2V0PENvbXBhY3RURFpFbnZpcm9ubWVudDo6Q29tcGFjdD4o
ZW52Lm1fdmFyaWFibGVzKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQ29tcGFjdFRE
WkVudmlyb25tZW50OjpDb21wYWN0IGNvbXBhY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAppbmRleCAzNTc2NjZiZGMzZDY1ZGU0NTcw
ZmQ1NWU4OTljNjZlZWQxMjgzYzExLi5iOTM4ZmQ1N2E1YTJlNGY4YzJjNGVjOGQzMDZkMDJiMDNk
NDQ4OGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdl
bmVyYXRvci5jcHAKQEAgLTExOCwxNSArMTE4LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIHN0YWNrU2l6ZSAtIHNpZ25hdHVyZS0+YXJndW1l
bnRDb3VudCgpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xDYXRjaCB7IENhdGNoS2lu
ZDo6Q2F0Y2gsIFdURk1vdmUodHJ5U3RhcnQpLCBXVEZNb3ZlKHRyeUVuZCksIHRyeURlcHRoLCBl
eGNlcHRpb24gfSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgYm9vbCBpc0xvb3AoY29u
c3QgQ29udHJvbFR5cGUmIGNvbnRyb2wpIHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
Q29udHJvbExvb3A+KGNvbnRyb2wpOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGlzVG9wTGV2ZWwo
Y29uc3QgQ29udHJvbFR5cGUmIGNvbnRyb2wpIHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8Q29udHJvbFRvcExldmVsPihjb250cm9sKTsgfQotICAgICAgICBzdGF0aWMgYm9vbCBpc0Js
b2NrKGNvbnN0IENvbnRyb2xUeXBlJiBjb250cm9sKSB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPENvbnRyb2xCbG9jaz4oY29udHJvbCk7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgaXNJ
Zihjb25zdCBDb250cm9sVHlwZSYgY29udHJvbCkgeyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxDb250cm9sSWY+KGNvbnRyb2wpOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGlzVHJ5KGNv
bnN0IENvbnRyb2xUeXBlJiBjb250cm9sKSB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PENvbnRyb2xUcnk+KGNvbnRyb2wpOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGlzQW55Q2F0Y2go
Y29uc3QgQ29udHJvbFR5cGUmIGNvbnRyb2wpIHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8Q29udHJvbENhdGNoPihjb250cm9sKTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBpc0xvb3Ao
Y29uc3QgQ29udHJvbFR5cGUmIGNvbnRyb2wpIHsgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8Q29udHJvbExvb3A+KGNvbnRyb2wpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzVG9wTGV2
ZWwoY29uc3QgQ29udHJvbFR5cGUmIGNvbnRyb2wpIHsgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8Q29udHJvbFRvcExldmVsPihjb250cm9sKTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBp
c0Jsb2NrKGNvbnN0IENvbnRyb2xUeXBlJiBjb250cm9sKSB7IHJldHVybiBzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPENvbnRyb2xCbG9jaz4oY29udHJvbCk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wg
aXNJZihjb25zdCBDb250cm9sVHlwZSYgY29udHJvbCkgeyByZXR1cm4gc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxDb250cm9sSWY+KGNvbnRyb2wpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzVHJ5
KGNvbnN0IENvbnRyb2xUeXBlJiBjb250cm9sKSB7IHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPENvbnRyb2xUcnk+KGNvbnRyb2wpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzQW55Q2F0
Y2goY29uc3QgQ29udHJvbFR5cGUmIGNvbnRyb2wpIHsgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8Q29udHJvbENhdGNoPihjb250cm9sKTsgfQogICAgICAgICBzdGF0aWMgYm9vbCBpc0Nh
dGNoKGNvbnN0IENvbnRyb2xUeXBlJiBjb250cm9sKQogICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29udHJvbENhdGNoPihjb250cm9sKSkKKyAgICAg
ICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxDb250cm9sQ2F0Y2g+KGNvbnRyb2wp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIENvbnRyb2xDYXRj
aCBjYXRjaERhdGEgPSBXVEY6OmdldDxDb250cm9sQ2F0Y2g+KGNvbnRyb2wpOwogICAgICAgICAg
ICAgcmV0dXJuIGNhdGNoRGF0YS5tX2tpbmQgPT0gQ2F0Y2hLaW5kOjpDYXRjaDsKQEAgLTEzNywx
NCArMTM3LDE0IEBAIHB1YmxpYzoKIAogICAgICAgICBSZWZQdHI8TGFiZWw+IHRhcmdldExhYmVs
Rm9yQnJhbmNoKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8Q29udHJvbExvb3A+KCp0aGlzKSkKKyAgICAgICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPENvbnRyb2xMb29wPigqdGhpcykpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6Z2V0PENvbnRyb2xMb29wPigqdGhpcykubV9ib2R5LnB0cigpOwogICAgICAgICAg
ICAgcmV0dXJuIG1fY29udGludWF0aW9uOwogICAgICAgICB9CiAKICAgICAgICAgU2lnbmF0dXJl
QXJnQ291bnQgYnJhbmNoVGFyZ2V0QXJpdHkoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxDb250cm9sTG9vcD4oKnRoaXMpKQorICAgICAg
ICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29udHJvbExvb3A+KCp0aGlzKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbV9zaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKTsKICAgICAg
ICAgICAgIHJldHVybiBtX3NpZ25hdHVyZS0+cmV0dXJuQ291bnQoKTsKICAgICAgICAgfQpAQCAt
MTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgVHlwZSBicmFuY2hUYXJnZXRUeXBlKHVu
c2lnbmVkIGkpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChpIDwgYnJhbmNo
VGFyZ2V0QXJpdHkoKSk7Ci0gICAgICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxD
b250cm9sTG9vcD4oKnRoaXMpKQorICAgICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8Q29udHJvbExvb3A+KCp0aGlzKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbV9zaWduYXR1
cmUtPmFyZ3VtZW50KGkpOwogICAgICAgICAgICAgcmV0dXJuIG1fc2lnbmF0dXJlLT5yZXR1cm5U
eXBlKGkpOwogICAgICAgICB9CkBAIC0xMDQxLDcgKzEwNDEsNyBAQCBhdXRvIExMSW50R2VuZXJh
dG9yOjphZGRJZihFeHByZXNzaW9uVHlwZSBjb25kaXRpb24sIEJsb2NrU2lnbmF0dXJlIHNpZ25h
dHVyZSwgUwogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRFbHNlKENvbnRyb2xUeXBlJiBkYXRh
LCBTdGFjayYgZXhwcmVzc2lvblN0YWNrKSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgQVNTRVJU
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29udHJvbElmPihkYXRhKSk7CisgICAgQVNTRVJUKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29udHJvbElmPihkYXRhKSk7CiAgICAgbWF0ZXJpYWxpemVD
b25zdGFudHNBbmRMb2NhbHMoZXhwcmVzc2lvblN0YWNrKTsKICAgICBXYXNtSm1wOjplbWl0KHRo
aXMsIGRhdGEubV9jb250aW51YXRpb24tPmJpbmQodGhpcykpOwogICAgIHJldHVybiBhZGRFbHNl
VG9VbnJlYWNoYWJsZShkYXRhKTsKQEAgLTExMDAsNyArMTEwMCw3IEBAIGF1dG8gTExJbnRHZW5l
cmF0b3I6OmFkZENhdGNoVG9VbnJlYWNoYWJsZSh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgY29u
c3QgU2lnbmF0CiAKICAgICBtX3N0YWNrU2l6ZSA9IGRhdGEuc3RhY2tTaXplKCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGV4Y2VwdGlvbiA9IHB1c2goKTsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxDb250cm9sVHJ5PihkYXRhKSkgeworICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPENvbnRyb2xUcnk+KGRhdGEpKSB7CiAgICAgICAgIENvbnRyb2xUcnkmIHRyeURhdGEgPSBX
VEY6OmdldDxDb250cm9sVHJ5PihkYXRhKTsKICAgICAgICAgZGF0YSA9IENvbnRyb2xUeXBlOjpj
cmVhdGVDYXRjaChkYXRhLm1fc2lnbmF0dXJlLCBkYXRhLnN0YWNrU2l6ZSgpLCBXVEZNb3ZlKHRy
eURhdGEubV90cnkpLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRpb24pLCBjYXRjaExhYmVsLCB0
cnlEYXRhLm1fdHJ5RGVwdGgsIGV4Y2VwdGlvbik7CiAgICAgfQpAQCAtMTE1Myw3ICsxMTUzLDcg
QEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQ2F0Y2hBbGxUb1VucmVhY2hhYmxlKENvbnRyb2xU
eXBlJiBkYXRhKSAtPiBQYXJ0aWFsUmVzdWwKICAgICBSZWY8TGFiZWw+IGNhdGNoTGFiZWwgPSBu
ZXdFbWl0dGVkTGFiZWwoKTsKICAgICBtX3N0YWNrU2l6ZSA9IGRhdGEuc3RhY2tTaXplKCk7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGV4Y2VwdGlvbiA9IHB1c2goKTsKLSAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxDb250cm9sVHJ5PihkYXRhKSkgeworICAgIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPENvbnRyb2xUcnk+KGRhdGEpKSB7CiAgICAgICAgIENvbnRyb2xUcnkmIHRyeURh
dGEgPSBXVEY6OmdldDxDb250cm9sVHJ5PihkYXRhKTsKICAgICAgICAgZGF0YSA9IENvbnRyb2xU
eXBlOjpjcmVhdGVDYXRjaChkYXRhLm1fc2lnbmF0dXJlLCBkYXRhLnN0YWNrU2l6ZSgpLCBXVEZN
b3ZlKHRyeURhdGEubV90cnkpLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRpb24pLCBjYXRjaExh
YmVsLCB0cnlEYXRhLm1fdHJ5RGVwdGgsIGV4Y2VwdGlvbik7CiAgICAgfQpAQCAtMTIwNCw3ICsx
MjA0LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9u
SW5kZXgsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGEKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFk
ZFJldGhyb3codW5zaWduZWQsIENvbnRyb2xUeXBlJiBkYXRhKSAtPiBQYXJ0aWFsUmVzdWx0CiB7
CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8Q29udHJvbENhdGNoPihkYXRhKSk7CisgICAgQVNTRVJUKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8Q29udHJvbENhdGNoPihkYXRhKSk7CiAgICAgQ29udHJvbENhdGNoIGNhdGNoRGF0
YSA9IFdURjo6Z2V0PENvbnRyb2xDYXRjaD4oZGF0YSk7CiAgICAgV2FzbVJldGhyb3c6OmVtaXQo
dGhpcywgY2F0Y2hEYXRhLm1fZXhjZXB0aW9uKTsKICAgICByZXR1cm4geyB9OwpAQCAtMTMwMCw3
ICsxMzAwLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkRW5kVG9VbnJlYWNoYWJsZShDb250
cm9sRW50cnkmIGVudHJ5LCBTdGFjayYgZXhwcmVzc2lvblMKIAogICAgIG1fc3RhY2tTaXplID0g
ZGF0YS5zdGFja1NpemUoKTsKIAotICAgIGlmIChDb250cm9sVHlwZTo6aXNUcnkoZGF0YSkgfHwg
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxDb250cm9sQ2F0Y2g+KGRhdGEpKQorICAgIGlmIChDb250
cm9sVHlwZTo6aXNUcnkoZGF0YSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxDb250cm9sQ2F0
Y2g+KGRhdGEpKQogICAgICAgICAtLW1fdHJ5RGVwdGg7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZGF0YS5tX3NpZ25hdHVyZS0+cmV0dXJuQ291bnQoKTsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9WYXJpYW50LmggYi9Tb3VyY2UvV1RGL3d0Zi9WYXJpYW50LmgK
aW5kZXggZTJhNTUxYjBkN2JkYWU4NjU5NDRlMmE4ZDJjY2ViOTVlNTI5MmUxZC4uNGVmMTU2ZWM2
MGE0YzNmZjg4NzFjN2JmNjg0OWM4N2VjMmFjMmZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVmFyaWFudC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZhcmlhbnQuaApAQCAtNTMsMjYgKzUz
LDkgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLSNpZiBDT01QSUxFUl9TVVBQT1JUUyhFWENFUFRJ
T05TKQotI2RlZmluZSBfX1RIUk9XX0VYQ0VQVElPTihfX2V4Y2VwdGlvbikgdGhyb3cgX19leGNl
cHRpb247Ci0jZGVmaW5lIF9fTk9FWENFUFQgbm9leGNlcHQKLSNkZWZpbmUgX19OT0VYQ0VQVF8o
X19leGNlcHRpb24pIG5vZXhjZXB0KF9fZXhjZXB0aW9uKQotI2Vsc2UKLSNkZWZpbmUgX19USFJP
V19FWENFUFRJT04oX19leGNlcHRpb24pIGRvIHsgKHZvaWQpX19leGNlcHRpb247IENSQVNIKCk7
IH0gd2hpbGUgKDApOwotI2RlZmluZSBfX05PRVhDRVBUCi0jZGVmaW5lIF9fTk9FWENFUFRfKC4u
LikKLSNlbmRpZgotCi11c2luZyBNb25vc3RhdGUgPSBzdGQ6Om1vbm9zdGF0ZTsKIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIFR5cGVzPgogdXNpbmcgVmFyaWFudCA9IHN0ZDo6dmFyaWFudDxUeXBlcy4u
Lj47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlLHR5cGVuYW1lIC4uLiBfVHlwZXM+Ci1jb25z
dGV4cHIgYm9vbCBob2xkc19hbHRlcm5hdGl2ZShWYXJpYW50PF9UeXBlcy4uLj4gY29uc3QmIF9f
dikgX19OT0VYQ0VQVAotewotICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPF9UeXBl
PihfX3YpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZSx0eXBlbmFtZSAuLi4gX1R5cGVz
PgogY29uc3RleHByIF9UeXBlJiBnZXQoVmFyaWFudDxfVHlwZXMuLi4+JiBfX3YpCiB7CkBAIC05
Nyw0NiArODAsMTQgQEAgY29uc3RleHByIGNvbnN0IF9UeXBlJiYgZ2V0KFZhcmlhbnQ8X1R5cGVz
Li4uPiBjb25zdCYmIF9fdikKICAgICByZXR1cm4gc3RkOjpnZXQ8X1R5cGU+KFdURk1vdmUoX192
KSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBWaXNpdG9yLCB0eXBlbmFtZS4uLiBWYXJpYW50
cz4KLWNvbnN0ZXhwciBhdXRvIHZpc2l0KFZpc2l0b3ImJiB2aXNpdG9yLCBWYXJpYW50cyYmLi4u
IHZhcmlhbnRzKSAtPiBkZWNsdHlwZShzdGQ6OnZpc2l0KHN0ZDo6Zm9yd2FyZDxWaXNpdG9yPih2
aXNpdG9yKSwgc3RkOjpmb3J3YXJkPFZhcmlhbnRzPih2YXJpYW50cykuLi4pKQotewotICAgIHJl
dHVybiBzdGQ6OnZpc2l0KHN0ZDo6Zm9yd2FyZDxWaXNpdG9yPih2aXNpdG9yKSwgc3RkOjpmb3J3
YXJkPFZhcmlhbnRzPih2YXJpYW50cykuLi4pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBfVHlw
ZSx0eXBlbmFtZSAuLi4gX1R5cGVzPgotY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlw
ZT4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiogdmFyaWFudCkKLXsKLSAgICByZXR1cm4gc3Rk
OjpnZXRfaWY8X1R5cGU+KHZhcmlhbnQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZSx0
eXBlbmFtZSAuLi4gX1R5cGVzPgotY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlwZSBj
b25zdD4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCogdmFyaWFudCkKLXsKLSAgICBy
ZXR1cm4gc3RkOjpnZXRfaWY8X1R5cGU+KHZhcmlhbnQpOwotfQotCi10ZW1wbGF0ZTxwdHJkaWZm
X3QgX0luZGV4LHR5cGVuYW1lIC4uLiBfVHlwZXM+Ci1jb25zdGV4cHIgdHlwZW5hbWUgc3RkOjph
ZGRfcG9pbnRlcl90PHN0ZDo6dmFyaWFudF9hbHRlcm5hdGl2ZV90PF9JbmRleCwgc3RkOjp2YXJp
YW50PF9UeXBlcy4uLj4+Pjo6X190eXBlIGdldF9pZihWYXJpYW50PF9UeXBlcy4uLj4qIHZhcmlh
bnQpCi17Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0X2lmPF9JbmRleD4odmFyaWFudCk7Ci19Ci0KLXRl
bXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9UeXBlcz4KLWNvbnN0ZXhwciB0
eXBlbmFtZSBzdGQ6OmFkZF9wb2ludGVyX3Q8c3RkOjp2YXJpYW50X2FsdGVybmF0aXZlX3Q8X0lu
ZGV4LCBzdGQ6OnZhcmlhbnQ8X1R5cGVzLi4uPj4+OjpfX3R5cGUgY29uc3QgZ2V0X2lmKAotICAg
IFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCogdmFyaWFudCkKLXsKLSAgICByZXR1cm4gc3RkOjpn
ZXRfaWY8X0luZGV4Pih2YXJpYW50KTsKLX0KLQogLy8gLS0gV2ViS2l0IEFkZGl0aW9ucyAtLQog
CiB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcy4uLiBGPgotYXV0byBzd2l0Y2hPbihWJiYgdiwgRiYm
Li4uIGYpIC0+IGRlY2x0eXBlKFdURjo6dmlzaXQobWFrZVZpc2l0b3Ioc3RkOjpmb3J3YXJkPEY+
KGYpLi4uKSwgc3RkOjpmb3J3YXJkPFY+KHYpKSkKK2F1dG8gc3dpdGNoT24oViYmIHYsIEYmJi4u
LiBmKSAtPiBkZWNsdHlwZShzdGQ6OnZpc2l0KG1ha2VWaXNpdG9yKHN0ZDo6Zm9yd2FyZDxGPihm
KS4uLiksIHN0ZDo6Zm9yd2FyZDxWPih2KSkpCiB7Ci0gICAgcmV0dXJuIFdURjo6dmlzaXQobWFr
ZVZpc2l0b3Ioc3RkOjpmb3J3YXJkPEY+KGYpLi4uKSwgc3RkOjpmb3J3YXJkPFY+KHYpKTsKKyAg
ICByZXR1cm4gc3RkOjp2aXNpdChtYWtlVmlzaXRvcihzdGQ6OmZvcndhcmQ8Rj4oZikuLi4pLCBz
dGQ6OmZvcndhcmQ8Vj4odikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RG
OjpNb25vc3RhdGU7CiB1c2luZyBXVEY6OlZhcmlhbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9B
cHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcAppbmRleCBkMWZlY2ZkM2NmN2JmMjMwNWQwZWJlMzE1
ZjIwMjAyNTBiYTI4MjFlLi5lYTM4NWNiMTcwNjhmZWU2MjgzZDg2ZGNlZDIzMmI0OTFiMzk5Mzcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1
ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKQEAg
LTEwMiw3ICsxMDIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVy
Ojp2YWxpZGF0ZURhdGEoRG9jdW1lbnQmIGRvY3VtZW50LCBKU0M6OgogCiBib29sIEFwcGxlUGF5
UGF5bWVudEhhbmRsZXI6OmhhbmRsZXNJZGVudGlmaWVyKGNvbnN0IFBheW1lbnRSZXF1ZXN0OjpN
ZXRob2RJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewotICAgIGlmICghV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxVUkw+KGlkZW50aWZpZXIpKQorICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxVUkw+KGlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiB1
cmwgPSBXVEY6OmdldDxVUkw+KGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkNzFkOTEzODgxMGQxZjM2YjkyNzkxMjc3
NTUwNWJmMzRjMGNmNDFlLi42ZWZiMzkxMTk4YWNlMGVlYmU5MTkzNWVlNzUyZDE1NjNhMDI3NjIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApA
QCAtMjEyLDkgKzIxMiw5IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6
aW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKQogICAgIGZvciAoYXV0byYgaXRlbVR5cGVMb2FkZXIg
OiBpdGVtVHlwZUxvYWRlcnMpIHsKICAgICAgICAgYXV0byB0eXBlID0gaXRlbVR5cGVMb2FkZXIt
PnR5cGUoKTsKICAgICAgICAgYXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVyLT5kYXRhKCk7Ci0g
ICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgISFXVEY6
OmdldDxTdHJpbmc+KGRhdGEpKQorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxT
dHJpbmc+KGRhdGEpICYmICEhV1RGOjpnZXQ8U3RyaW5nPihkYXRhKSkKICAgICAgICAgICAgIGN1
c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgV1RGOjpnZXQ8U3RyaW5nPihkYXRhKSk7Ci0gICAg
ICAgIGVsc2UgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRh
dGEpKQorICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRC
dWZmZXI+PihkYXRhKSkKICAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdU
Rjo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CkBAIC0yNjMs
MTAgKzI2MywxMCBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBi
b2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogewogICAgIGlmIChtX3R5cGUg
PT0gInRleHQvaHRtbCJfcykgewogICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKLSAg
ICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0
YSkpIHsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZl
cj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IFdURjo6Z2V0PFJlZjxT
aGFyZWRCdWZmZXI+PihtX2RhdGEpOwogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0
cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAg
fSBlbHNlIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKKyAgICAg
ICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAg
ICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBXVEY6OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAK
ICAgICAgICAgaWYgKG1hcmt1cFRvU2FuaXRpemUuaXNFbXB0eSgpKQpAQCAtMjc3LDkgKzI3Nyw5
IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5
cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAKICAgICBpZiAobV90eXBlID09ICJpbWFnZS9w
bmciX3MpIHsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsK
LSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1f
ZGF0YSkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZm
ZXI+PihtX2RhdGEpKQogICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IFdURjo6Z2V0PFJl
ZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpLnB0cigpOwotICAgICAgICBlbHNlIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKKyAgICAgICAgZWxzZSBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBidWZmZXJUb1Nh
bml0aXplID0gdXRmOEJ1ZmZlcihXVEY6OmdldDxTdHJpbmc+KG1fZGF0YSkpOwogCiAgICAgICAg
IGlmICghYnVmZmVyVG9TYW5pdGl6ZSB8fCBidWZmZXJUb1Nhbml0aXplLT5pc0VtcHR5KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDRjZmFmZDc3NzJk
OTNlYjMwMzQ5ZTRiNzUxMzYzY2FjYTU2YWY3Y2QuLmEyZGE5OTg2YmMwN2I3NDg4ZDg2YTk2ZGNk
NzM1ODdhNGZlMjQ3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
Y3BwCkBAIC0yMDYsNyArMjA2LDcgQEAgcHJpdmF0ZToKIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJl
cXVlc3Q+PiBET01DYWNoZTo6cmVxdWVzdEZyb21JbmZvKFJlcXVlc3RJbmZvJiYgaW5mbywgYm9v
bCBpZ25vcmVNZXRob2QpCiB7CiAgICAgUmVmUHRyPEZldGNoUmVxdWVzdD4gcmVxdWVzdDsKLSAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4oaW5mbykp
IHsKKyAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4o
aW5mbykpIHsKICAgICAgICAgcmVxdWVzdCA9IFdURjo6Z2V0PFJlZlB0cjxGZXRjaFJlcXVlc3Q+
PihpbmZvKS5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICBpZiAocmVxdWVzdC0+bWV0aG9kKCkg
IT0gIkdFVCIgJiYgIWlnbm9yZU1ldGhvZCkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBUeXBlRXJyb3IsICJSZXF1ZXN0IG1ldGhvZCBpcyBub3QgR0VUIl9zIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCAxOGYyN2Q1ZWU2MjY5MDkyZDUxMDE4
MTVhMDMwNDY1ZmIwZmM0YTZhLi42ZGNmNTUxOGVmYzQ3MWNmMWE5YTZhODc0ZGRmYjNhZTNmZDQ3
MmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTg0LDgg
Kzg0LDggQEAgcHVibGljOgogICAgICAgICBtX3JlYWRhYmxlU3RyZWFtID0gV1RGTW92ZShzdHJl
YW0pOwogICAgIH0KIAotICAgIGJvb2wgaXNCbG9iKCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8Y29uc3QgQmxvYj4+KG1fZGF0YSk7IH0KLSAgICBib29sIGlzRm9y
bURhdGEoKSBjb25zdCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGb3JtRGF0
YT4+KG1fZGF0YSk7IH0KKyAgICBib29sIGlzQmxvYigpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPGNvbnN0IEJsb2I+PihtX2RhdGEpOyB9CisgICAgYm9vbCBpc0Zv
cm1EYXRhKCkgY29uc3QgeyByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Rm9ybURh
dGE+PihtX2RhdGEpOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRmV0Y2hCb2R5KFJlZjxj
b25zdCBCbG9iPiYmIGRhdGEpIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpIHsgfQpAQCAtMTA1LDEw
ICsxMDUsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVy
JiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9pZCBjb25zdW1lRm9ybURhdGEoRmV0
Y2hCb2R5T3duZXImLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAotICAgIGJvb2wgaXNBcnJh
eUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPGNvbnN0
IEFycmF5QnVmZmVyPj4obV9kYXRhKTsgfQotICAgIGJvb2wgaXNBcnJheUJ1ZmZlclZpZXcoKSBj
b25zdCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxjb25zdCBBcnJheUJ1ZmZl
clZpZXc+PihtX2RhdGEpOyB9Ci0gICAgYm9vbCBpc1VSTFNlYXJjaFBhcmFtcygpIGNvbnN0IHsg
cmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPGNvbnN0IFVSTFNlYXJjaFBhcmFtcz4+
KG1fZGF0YSk7IH0KLSAgICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpOyB9CisgICAgYm9vbCBpc0FycmF5QnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Y29uc3QgQXJyYXlCdWZm
ZXI+PihtX2RhdGEpOyB9CisgICAgYm9vbCBpc0FycmF5QnVmZmVyVmlldygpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPGNvbnN0IEFycmF5QnVmZmVyVmlldz4+KG1f
ZGF0YSk7IH0KKyAgICBib29sIGlzVVJMU2VhcmNoUGFyYW1zKCkgY29uc3QgeyByZXR1cm4gc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Y29uc3QgVVJMU2VhcmNoUGFyYW1zPj4obV9kYXRhKTsg
fQorICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxTdHJpbmc+KG1fZGF0YSk7IH0KIAogICAgIGNvbnN0IEJsb2ImIGJsb2JCb2R5KCkgY29uc3Qg
eyByZXR1cm4gV1RGOjpnZXQ8UmVmPGNvbnN0IEJsb2I+PihtX2RhdGEpLmdldCgpOyB9CiAgICAg
Rm9ybURhdGEmIGZvcm1EYXRhQm9keSgpIHsgcmV0dXJuIFdURjo6Z2V0PFJlZjxGb3JtRGF0YT4+
KG1fZGF0YSkuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hIZWFkZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hI
ZWFkZXJzLmNwcAppbmRleCBjM2RhY2M3YjkwMDJjODlkYzIzNTIyYTVhOGVlMWUzMGFjZTMzYTlm
Li5iMmVmMGE5NGRjNzNiMGU1YTU1MjlmZmIwMjdkOWZhYjI3N2EwOWJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwCkBAIC05OCw3ICs5OCw3IEBA
IHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBhcHBlbmRUb0hlYWRlck1hcChjb25zdCBIVFRQSGVh
ZGVyTWFwOjpIVFRQSGVhZGVyTWFwQ29uCiAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9y
Zy8jY29uY2VwdC1oZWFkZXJzLWZpbGwKIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBmaWxsSGVh
ZGVyTWFwKEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGNvbnN0IEZldGNoSGVhZGVyczo6SW5pdCYg
aGVhZGVyc0luaXQsIEZldGNoSGVhZGVyczo6R3VhcmQgZ3VhcmQpCiB7Ci0gICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPFZlY3RvcjxTdHJpbmc+Pj4oaGVhZGVyc0luaXQpKSB7
CisgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPFZlY3RvcjxTdHJpbmc+Pj4o
aGVhZGVyc0luaXQpKSB7CiAgICAgICAgIGF1dG8mIHNlcXVlbmNlID0gV1RGOjpnZXQ8VmVjdG9y
PFZlY3RvcjxTdHJpbmc+Pj4oaGVhZGVyc0luaXQpOwogICAgICAgICBmb3IgKGF1dG8mIGhlYWRl
ciA6IHNlcXVlbmNlKSB7CiAgICAgICAgICAgICBpZiAoaGVhZGVyLnNpemUoKSAhPSAyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCmluZGV4IGZkNTkx
MzgxZDMyZWVjYmRlZGI2YjQwMWFmMzc4OTUxYjQyOTIwYTQuLjAxMTEwN2RmYjZhMGRlZDZhZTI3
Y2RmNTc1MmU5YzIxMGFkMTU1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVxdWVzdC5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmV0
Y2hSZXF1ZXN0Pj4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udAogewogICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNv
bnRleHQsIHN0ZDo6bnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpH
dWFyZDo6UmVxdWVzdCksIHsgfSwgeyB9LCB7IH0pKTsKIAotICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPFN0cmluZz4oaW5wdXQpKSB7CisgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U3RyaW5nPihpbnB1dCkpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSByZXF1ZXN0LT5pbml0
aWFsaXplV2l0aChXVEY6OmdldDxTdHJpbmc+KGlucHV0KSwgV1RGTW92ZShpbml0KSk7CiAgICAg
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuY3BwCmluZGV4IGFhYWRlMzAxNjE3OTJmMDBjNDJiZWEzZWRlMGVkM2RlYTI0
ZTJjNzEuLjg3MzdkNzY5MDkwYmEyNjY3MDkwMTE3YmFlOTgwZDYxYzNiZTc1ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMTkxLDcg
KzE5MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkN1cnNvcjo6Y29udGludWVQcmltYXJ5S2V5
KEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSlNWYWx1ZSBrCiAgICAgaWYgKHNvdXJjZXNEZWxldGVk
KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkZhaWxl
ZCB0byBleGVjdXRlICdjb250aW51ZVByaW1hcnlLZXknIG9uICdJREJDdXJzb3InOiBUaGUgY3Vy
c29yJ3Mgc291cmNlIG9yIGVmZmVjdGl2ZSBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4i
X3MgfTsKIAotICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8SURCSW5kZXg+
PihtX3NvdXJjZSkpCisgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxJREJJ
bmRleD4+KG1fc291cmNlKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nl
c3NFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdjb250aW51ZVByaW1hcnlLZXknIG9uICdJREJD
dXJzb3InOiBUaGUgY3Vyc29yJ3Mgc291cmNlIGlzIG5vdCBhbiBpbmRleC4iX3MgfTsKIAogICAg
IGF1dG8gZGlyZWN0aW9uID0gbV9pbmZvLmN1cnNvckRpcmVjdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IDkzZDZlY2Zh
NTI2Y2U0NzFhZmUyMGQ4NGZmNWQ4NWY0YThjZjA0ZjQuLmM1YzI0NGYzNzQ2MGQwMDRhNGVkMThi
MDNiMzlmMzVlZjlmNWYwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBFeGNlcHRpb25PcjxSZWY8
SURCT2JqZWN0U3RvcmU+PiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYQogICAgIGlmIChtX2luZm8uaGFzT2JqZWN0U3RvcmUobmFtZSkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBDb25zdHJhaW50RXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnY3Jl
YXRlT2JqZWN0U3RvcmUnIG9uICdJREJEYXRhYmFzZSc6IEFuIG9iamVjdCBzdG9yZSB3aXRoIHRo
ZSBzcGVjaWZpZWQgbmFtZSBhbHJlYWR5IGV4aXN0cy4iX3MgfTsKIAotICAgIGlmIChrZXlQYXRo
ICYmIHBhcmFtZXRlcnMuYXV0b0luY3JlbWVudCAmJiAoKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
U3RyaW5nPihrZXlQYXRoLnZhbHVlKCkpICYmIFdURjo6Z2V0PFN0cmluZz4oa2V5UGF0aC52YWx1
ZSgpKS5pc0VtcHR5KCkpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPFN0cmluZz4+
KGtleVBhdGgudmFsdWUoKSkpKQorICAgIGlmIChrZXlQYXRoICYmIHBhcmFtZXRlcnMuYXV0b0lu
Y3JlbWVudCAmJiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihrZXlQYXRoLnZhbHVl
KCkpICYmIFdURjo6Z2V0PFN0cmluZz4oa2V5UGF0aC52YWx1ZSgpKS5pc0VtcHR5KCkpIHx8IHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPFN0cmluZz4+KGtleVBhdGgudmFsdWUoKSkpKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiRmFpbGVkIHRv
IGV4ZWN1dGUgJ2NyZWF0ZU9iamVjdFN0b3JlJyBvbiAnSURCRGF0YWJhc2UnOiBUaGUgYXV0b0lu
Y3JlbWVudCBvcHRpb24gd2FzIHNldCBidXQgdGhlIGtleVBhdGggb3B0aW9uIHdhcyBlbXB0eSBv
ciBhbiBhcnJheS4iX3MgfTsKIAogICAgIC8vIEluc3RhbGwgdGhlIG5ldyBPYmplY3RTdG9yZSBp
bnRvIHRoZSBjb25uZWN0aW9uJ3MgbWV0YWRhdGEuCkBAIC0xNzUsNyArMTc1LDcgQEAgRXhjZXB0
aW9uT3I8UmVmPElEQlRyYW5zYWN0aW9uPj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFN0cmlu
Z09yVmVjdG9yT2ZTdHJpbmcKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ3RyYW5zYWN0aW9uJyBvbiAnSURCRGF0YWJhc2Un
OiBUaGUgZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBjbG9zaW5nLiJfcyB9OwogCiAgICAgVmVjdG9y
PFN0cmluZz4gb2JqZWN0U3RvcmVzOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFZl
Y3RvcjxTdHJpbmc+PihzdG9yZU5hbWVzKSkKKyAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxWZWN0b3I8U3RyaW5nPj4oc3RvcmVOYW1lcykpCiAgICAgICAgIG9iamVjdFN0b3JlcyA9IFdU
Rk1vdmUoV1RGOjpnZXQ8VmVjdG9yPFN0cmluZz4+KHN0b3JlTmFtZXMpKTsKICAgICBlbHNlCiAg
ICAgICAgIG9iamVjdFN0b3Jlcy5hcHBlbmQoV1RGTW92ZShXVEY6OmdldDxTdHJpbmc+KHN0b3Jl
TmFtZXMpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBh
dGguY3BwCmluZGV4IDc0YTlkOWY4NjM1MWM1YWVjYjcyYmRjZTIwMGM0ZDc1MDA4MmViYTcuLmZk
NmQ1YTM5OWIzZmNhNjYyNGZmMzQ5NGRiYWU4NzdmNThiNDE0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwCkBAIC0yMDMsNyArMjAzLDcg
QEAgYm9vbCBpc0lEQktleVBhdGhWYWxpZChjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0pOwotICAgIHJldHVybiBXVEY6OnZp
c2l0KHZpc2l0b3IsIGtleVBhdGgpOworICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIGtl
eVBhdGgpOwogfQogCiBJREJLZXlQYXRoIGlzb2xhdGVkQ29weShjb25zdCBJREJLZXlQYXRoJiBr
ZXlQYXRoKQpAQCAtMjE4LDcgKzIxOCw3IEBAIElEQktleVBhdGggaXNvbGF0ZWRDb3B5KGNvbnN0
IElEQktleVBhdGgmIGtleVBhdGgpCiAgICAgICAgIHJldHVybiB2ZWN0b3JDb3B5OwogICAgIH0p
OwogCi0gICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwga2V5UGF0aCk7CisgICAgcmV0dXJu
IHN0ZDo6dmlzaXQodmlzaXRvciwga2V5UGF0aCk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECkBA
IC0yNDIsNyArMjQyLDcgQEAgU3RyaW5nIGxvZ2dpbmdTdHJpbmcoY29uc3QgSURCS2V5UGF0aCYg
cGF0aCkKICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9KTsKIAotICAg
IHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIHBhdGgpOworICAgIHJldHVybiBzdGQ6OnZpc2l0
KHZpc2l0b3IsIHBhdGgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCAwYjc1NWM4ODdiODBhZmI2
MDMxYmU4OTEzMmRkMDJiMDA1MmI1YmNjLi42MTQ4NjdlNGE4ZWUyNDlmYmFlYjFlN2JhYmQxMWQ1
ZjZmZGY5MDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwCkBAIC00NzksNyArNDc5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElE
QkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KEpTR2xvYmFsT2JqZWN0JiwgY29u
c3QgU3QKICAgICBpZiAobmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciB9OwogCi0gICAgaWYgKHBhcmFtZXRlcnMubXVsdGlFbnRyeSAmJiBXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPFZlY3RvcjxTdHJpbmc+PihrZXlQYXRoKSkKKyAgICBpZiAocGFyYW1l
dGVycy5tdWx0aUVudHJ5ICYmIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPFN0cmluZz4+
KGtleVBhdGgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9y
LCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2NyZWF0ZUluZGV4JyBvbiAnSURCT2JqZWN0U3RvcmUnOiBU
aGUga2V5UGF0aCBhcmd1bWVudCB3YXMgYW4gYXJyYXkgYW5kIHRoZSBtdWx0aUVudHJ5IG9wdGlv
biBpcyB0cnVlLiJfcyB9OwogCiAgICAgLy8gSW5zdGFsbCB0aGUgbmV3IEluZGV4IGludG8gdGhl
IE9iamVjdFN0b3JlJ3MgaW5mby4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggOWFmZGQ5ZTBjMGJjY2MwNWVlY2NhYWQ1NDliMGE3Yzc1
YzlkMGUzNy4uNzgzZDU4NTU1NmMyZmUzNTQwMTFlZjllNTFmZGEwNDZlMjY1Y2M3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTIz
Nyw3ICsyMzcsNyBAQCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSBJREJSZXF1ZXN0OjpyZXF1
ZXN0ZWRJbmRleFJlY29yZFR5cGUoKSBjb25zdAogewogICAgIEFTU0VSVChjYW5DdXJyZW50VGhy
ZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG9yaWdpblRocmVhZCgpKSk7CiAgICAgQVNTRVJUKG1f
c291cmNlKTsKLSAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8SURCSW5k
ZXg+PihtX3NvdXJjZS52YWx1ZSgpKSk7CisgICAgQVNTRVJUKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmUHRyPElEQkluZGV4Pj4obV9zb3VyY2UudmFsdWUoKSkpOwogCiAgICAgcmV0dXJuIG1f
cmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4
IDRjOWE5NTZjMjBlYzI0Yjg2NGJlMWY3NjIzZGQ1YjBlMjQwMmU0ZTQuLjJhMmMxZmMzMjk1ODA1
ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAg
LTUzLDcgKzUzLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChj
b25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXQKICAgICAgICAgICAgICAgICBl
bmNvZGVyLmVuY29kZVN0cmluZygic3RyaW5nIiwgc3RyaW5nKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9KTsKLSAgICAgICAgV1RGOjp2aXNpdCh2aXNpdG9yLCBrZXlQYXRoLnZhbHVlKCkp
OworICAgICAgICBzdGQ6OnZpc2l0KHZpc2l0b3IsIGtleVBhdGgudmFsdWUoKSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0oInR5cGUiLCBLZXlQYXRoVHlwZTo6TnVs
bCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9N
ZWRpYUNvbnRyb2xzSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJv
bHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCmluZGV4IGQyYWUwMDUzMGEyNDVhNGQyYjJjNTY0YzE5
NjY1NTdhODUxZWNmYzMuLjdhNWU0ODQ2YzQwMDIyMDA3Y2Y4NDQ0NzQ3ZmVmYmViZmE5ZTI0ZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNv
bnRyb2xzSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L01lZGlhQ29udHJvbHNIb3N0LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIFN0cmluZyBNZWRpYUNv
bnRyb2xzSG9zdDo6ZGlzcGxheU5hbWVGb3JUcmFjayhjb25zdCBzdGQ6Om9wdGlvbmFsPFRleHRP
ckF1ZGlvVHJhCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAotICAgIHJldHVybiBXVEY6OnZpc2l0KFtwYWdlXSAoYXV0byYgdHJhY2spIHsKKyAgICByZXR1
cm4gc3RkOjp2aXNpdChbcGFnZV0gKGF1dG8mIHRyYWNrKSB7CiAgICAgICAgIHJldHVybiBwYWdl
LT5ncm91cCgpLmVuc3VyZUNhcHRpb25QcmVmZXJlbmNlcygpLmRpc3BsYXlOYW1lRm9yVHJhY2so
dHJhY2suZ2V0KCkpOwogICAgIH0sIHRyYWNrLnZhbHVlKCkpOwogfQpAQCAtNjgxLDEzICs2ODEs
MTMgQEAgYm9vbCBNZWRpYUNvbnRyb2xzSG9zdDo6c2hvd01lZGlhQ29udHJvbHNDb250ZXh0TWVu
dShIVE1MRWxlbWVudCYgdGFyZ2V0LCBTdHJpbmcKICNlbmRpZiAvLyBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpCiAgICAgICAgICAgICBbJl0gKFJlZlB0cjxBdWRpb1RyYWNrPiYgc2Vs
ZWN0ZWRBdWRpb1RyYWNrKSB7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiB0cmFjayA6IGlk
TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBhdWRpb1RyYWNr
ID0gV1RGOjpnZXRfaWY8UmVmUHRyPEF1ZGlvVHJhY2s+PigmdHJhY2spKQorICAgICAgICAgICAg
ICAgICAgICBpZiAoYXV0byogYXVkaW9UcmFjayA9IHN0ZDo6Z2V0X2lmPFJlZlB0cjxBdWRpb1Ry
YWNrPj4oJnRyYWNrKSkKICAgICAgICAgICAgICAgICAgICAgICAgICgqYXVkaW9UcmFjayktPnNl
dEVuYWJsZWQoKmF1ZGlvVHJhY2sgPT0gc2VsZWN0ZWRBdWRpb1RyYWNrKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgWyZdIChSZWZQdHI8VGV4dFRyYWNr
PiYgc2VsZWN0ZWRUZXh0VHJhY2spIHsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHRyYWNr
IDogaWRNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHRleHRU
cmFjayA9IFdURjo6Z2V0X2lmPFJlZlB0cjxUZXh0VHJhY2s+PigmdHJhY2spKQorICAgICAgICAg
ICAgICAgICAgICBpZiAoYXV0byogdGV4dFRyYWNrID0gc3RkOjpnZXRfaWY8UmVmUHRyPFRleHRU
cmFjaz4+KCZ0cmFjaykpCiAgICAgICAgICAgICAgICAgICAgICAgICAoKnRleHRUcmFjayktPnNl
dE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIG1lZGlhRWxlbWVudC5zZXRTZWxlY3RlZFRleHRUcmFjayhzZWxlY3RlZFRl
eHRUcmFjay5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGZlMWEwMWVkY2RmOWQ4MGFlMGU1
Mjc4MjhjYzY5MWJkMjkyMzU0NzQuLjAzNTIyZDNiMzRjMjUxYWI2OTA1MDFiM2M2MjJhOTQwMzE5
MTVmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgRXhjZXB0aW9uT3I8
UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYW5zY2VpdmVy
KEFkZFRyYW5zY2UKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4od2l0aFRyYWNrKSkgeworICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4od2l0aFRyYWNrKSkgewogICAgICAgICBjb25zdCBT
dHJpbmcmIGtpbmQgPSBXVEY6OmdldDxTdHJpbmc+KHdpdGhUcmFjayk7CiAgICAgICAgIGlmIChr
aW5kICE9ICJhdWRpbyJfcyAmJiBraW5kICE9ICJ2aWRlbyJfcykKICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKQEAgLTg0Myw3ICs4NDMsNyBAQCB2b2lkIFJUQ1Bl
ZXJDb25uZWN0aW9uOjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKIAogc3RhdGljIGlubGlu
ZSBFeGNlcHRpb25PcjxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkNlcnRpZmljYXRlSW5mb3JtYXRp
b24+IGNlcnRpZmljYXRlVHlwZUZyb21BbGdvcml0aG1JZGVudGlmaWVyKEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFJUQ1BlZXJDb25uZWN0aW9uOjpBbGdvcml0aG1J
ZGVudGlmaWVyJiYgYWxnb3JpdGhtSWRlbnRpZmllcikKIHsKLSAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxTdHJpbmc+KGFsZ29yaXRobUlkZW50aWZpZXIpKQorICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFN0cmluZz4oYWxnb3JpdGhtSWRlbnRpZmllcikpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIkFsZ29yaXRobSBpcyBub3Qgc3Vw
cG9ydGVkIl9zIH07CiAKICAgICBhdXRvJiB2YWx1ZSA9IFdURjo6Z2V0PEpTQzo6U3Ryb25nPEpT
Qzo6SlNPYmplY3Q+PihhbGdvcml0aG1JZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNw
cAppbmRleCAwZjA0MzZlZjJjZmMzZDBhODE3YTY1Yjc4ODFkOTZlYjNjNzgxMDNlLi5kZDVhMDJj
YmVhMTY1OTA5YWYyMjdhODNlY2MyYjlmN2QwN2Y3MDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0u
Y3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6flJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybSgpCiB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6c2V0RW5jcnlwdGlvbktl
eShDcnlwdG9LZXkmIGtleSwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4ga2V5SWQsIERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgYXV0byBhbGdvcml0aG0gPSBrZXku
YWxnb3JpdGhtKCk7Ci0gICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENyeXB0b0tleUFs
Z29yaXRobT4oYWxnb3JpdGhtKSkgeworICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxD
cnlwdG9LZXlBbGdvcml0aG0+KGFsZ29yaXRobSkpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3Qo
RXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiSW52YWxpZCBrZXkiX3MgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAKaW5kZXggOWE5YTdkOTIwNjk2NTVjNDU3MTYwN2Rk
YTE4YzRlNmIzMzBmNzJkNS4uMjQ3ZTk3ZWY5YjBkOTE2ZmZlZDZlZDIwODRlM2Y4NTgxMGQ0ZWQz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25VcGRhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uVXBkYXRlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBTdHJpbmcgY29udmVydEVu
dW1lcmF0aW9uVG9TdHJpbmcoU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIGVudW1lcmF0aW9u
VmFsdWUpCiAKIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
OjpjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGll
bnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgdHlwZSkKIHsKLSAgICBy
ZXR1cm4gU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgeyBjbGllbnRJZGVudGlmaWVyLCB0eXBlLCBX
VEY6Ok1vbm9zdGF0ZSgpIH07CisgICAgcmV0dXJuIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIHsg
Y2xpZW50SWRlbnRpZmllciwgdHlwZSwgc3RkOjptb25vc3RhdGUoKSB9OwogfQogCiBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
LCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCmluZGV4
IDEyNzBjYjg4NDNiY2Y0NzhhMWUxYzVkYTJjZGMwOTAyOTJkNjA4OGYuLjFlMjgxMTZlODJmNjk0
ZDRkZTU5M2Y0MGU0YmQxYzdmMTI1NDgxZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaApAQCAtNjQsNyArNjQs
NyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8U3BlZWNoUmVjb2duaXRpb25VcGRhdGU+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZh
dGU6Ci0gICAgdXNpbmcgQ29udGVudCA9IFZhcmlhbnQ8V1RGOjpNb25vc3RhdGUsIFNwZWVjaFJl
Y29nbml0aW9uRXJyb3IsIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PjsKKyAg
ICB1c2luZyBDb250ZW50ID0gVmFyaWFudDxzdGQ6Om1vbm9zdGF0ZSwgU3BlZWNoUmVjb2duaXRp
b25FcnJvciwgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+OwogICAgIFdFQkNP
UkVfRVhQT1JUIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgQ29udGVu
dCk7CiAKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIG1f
Y2xpZW50SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJXZWJHTExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJXZWJHTExheWVyLmNwcAppbmRleCBmM2FiN2UxYjE5M2FiN2E4ZTg4N2FhNmRhMWU1YWU0YjZk
NzU5ZDg1Li44MjZkZTE2YTcwNjkxZDQyMGM1OTQ2N2RjNGE3MWRlZGZiMGI2NWM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCkBAIC0x
NTIsNyArMTUyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFdlYlhSV2ViR0xMYXllcj4+IFdlYlhSV2Vi
R0xMYXllcjo6Y3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYgc2UKICAgICAgICAgICAgIC8vIDEw
LiBSZXR1cm4gbGF5ZXIuCiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUldl
YkdMTGF5ZXIoV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb250ZXh0KSwgV1RGTW92ZShmcmFt
ZWJ1ZmZlciksIGFudGlhbGlhcywgaWdub3JlRGVwdGhWYWx1ZXMsIGlzQ29tcG9zaXRpb25FbmFi
bGVkKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFtdKFdURjo6TW9ub3N0YXRlKSB7CisgICAgICAg
IFtdKHN0ZDo6bW9ub3N0YXRlKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZm
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCmlu
ZGV4IDhiYjNiZmFiZTU5OGUzMGVlYWExYzU1MWVjNTA1MWEyODIwOTg1YTMuLmQ3NjJhM2U2ZGFk
ZWE1NzI5ZmJlOWI1YWVhZDI3OGNiNTJhZjE0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCkBAIC0zODQsNyArMzg0LDcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQW5pbWF0aW9uRWZmZWN0Ojp1cGRhdGVUaW1pbmcoc3RkOjpvcHRpb25hbDxPcHRpb25h
bEVmZmVjdFRpbWkKICAgICAvLyAzLiBJZiB0aGUgZHVyYXRpb24gbWVtYmVyIG9mIGlucHV0IGlz
IHByZXNlbnQsIGFuZCBsZXNzIHRoYW4gemVybyBvciBpcyB0aGUgdmFsdWUgTmFOLCB0aHJvdyBh
IFR5cGVFcnJvciBhbmQgYWJvcnQgdGhpcyBwcm9jZWR1cmUuCiAgICAgLy8gRklYTUU6IHNob3Vs
ZCBpdCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uIG9uIGEgc3RyaW5nIG90aGVyIHRoYW4gImF1dG8i
PwogICAgIGlmICh0aW1pbmctPmR1cmF0aW9uKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPGRvdWJsZT4odGltaW5nLT5kdXJhdGlvbi52YWx1ZSgpKSkgeworICAgICAgICBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KHRpbWluZy0+ZHVyYXRpb24udmFsdWUo
KSkpIHsKICAgICAgICAgICAgIGF1dG8gZHVyYXRpb25Bc0RvdWJsZSA9IFdURjo6Z2V0PGRvdWJs
ZT4odGltaW5nLT5kdXJhdGlvbi52YWx1ZSgpKTsKICAgICAgICAgICAgIGlmIChkdXJhdGlvbkFz
RG91YmxlIDwgMCB8fCBzdGQ6OmlzbmFuKGR1cmF0aW9uQXNEb3VibGUpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKQEAgLTQyOSw3ICs0MjksNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBBbmltYXRpb25FZmZlY3Q6OnVwZGF0ZVRpbWluZyhzdGQ6Om9wdGlv
bmFsPE9wdGlvbmFsRWZmZWN0VGltaQogICAgICAgICBtX2l0ZXJhdGlvbnMgPSB0aW1pbmctPml0
ZXJhdGlvbnMudmFsdWUoKTsKIAogICAgIGlmICh0aW1pbmctPmR1cmF0aW9uKQotICAgICAgICBt
X2l0ZXJhdGlvbkR1cmF0aW9uID0gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KHRpbWlu
Zy0+ZHVyYXRpb24udmFsdWUoKSkgPyBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKFdURjo6Z2V0
PGRvdWJsZT4odGltaW5nLT5kdXJhdGlvbi52YWx1ZSgpKSkgOiAwX3M7CisgICAgICAgIG1faXRl
cmF0aW9uRHVyYXRpb24gPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4odGltaW5nLT5k
dXJhdGlvbi52YWx1ZSgpKSA/IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoV1RGOjpnZXQ8ZG91
YmxlPih0aW1pbmctPmR1cmF0aW9uLnZhbHVlKCkpKSA6IDBfczsKIAogICAgIGlmICh0aW1pbmct
PmRpcmVjdGlvbikKICAgICAgICAgbV9kaXJlY3Rpb24gPSB0aW1pbmctPmRpcmVjdGlvbi52YWx1
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKaW5kZXgg
YjQ5MTA4YjBjYmMzYTE1NzJhN2UyOWQ1OTliYjAzZDc4ODIzZjVlMi4uY2Q3MGU5YzA0OGZmNzQ5
OGI0MjhjYTY3MTQ5ODJhY2Y0NTEyODM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
S2V5ZnJhbWVFZmZlY3QuY3BwCkBAIC0zMjMsMjAgKzMyMywyMCBAQCBzdGF0aWMgaW5saW5lIEV4
Y2VwdGlvbk9yPHZvaWQ+IHByb2Nlc3NJdGVyYWJsZUtleWZyYW1lcyhKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbAogCiAgICAgICAgIC8vIFdoZW4gY2FsbGluZyBwcm9jZXNzS2V5ZnJhbWVMaWtlT2Jq
ZWN0KCkgd2l0aCB0aGUgImFsbG93IGxpc3RzIiBmbGFnIHNldCB0byBmYWxzZSwgdGhlIG9ubHkg
b2Zmc2V0CiAgICAgICAgIC8vIGFsdGVybmF0aXZlcyB3ZSBzaG91bGQgZXhwZWN0IGFyZSBkb3Vi
bGUgYW5kIG51bGxwdHIuCi0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJs
ZT4oa2V5ZnJhbWVMaWtlT2JqZWN0LmJhc2VQcm9wZXJ0aWVzLm9mZnNldCkpCisgICAgICAgIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oa2V5ZnJhbWVMaWtlT2JqZWN0LmJhc2VQ
cm9wZXJ0aWVzLm9mZnNldCkpCiAgICAgICAgICAgICBrZXlmcmFtZU91dHB1dC5vZmZzZXQgPSBX
VEY6OmdldDxkb3VibGU+KGtleWZyYW1lTGlrZU9iamVjdC5iYXNlUHJvcGVydGllcy5vZmZzZXQp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxzdGQ6Om51bGxwdHJfdD4oa2V5ZnJhbWVMaWtlT2JqZWN0LmJhc2VQcm9wZXJ0aWVzLm9mZnNl
dCkpOworICAgICAgICAgICAgQVNTRVJUKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpudWxs
cHRyX3Q+KGtleWZyYW1lTGlrZU9iamVjdC5iYXNlUHJvcGVydGllcy5vZmZzZXQpKTsKIAogICAg
ICAgICAvLyBXaGVuIGNhbGxpbmcgcHJvY2Vzc0tleWZyYW1lTGlrZU9iamVjdCgpIHdpdGggdGhl
ICJhbGxvdyBsaXN0cyIgZmxhZyBzZXQgdG8gZmFsc2UsIHRoZSBvbmx5IGVhc2luZwogICAgICAg
ICAvLyBhbHRlcm5hdGl2ZSB3ZSBzaG91bGQgZXhwZWN0IGlzIFN0cmluZy4KLSAgICAgICAgQVNT
RVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihrZXlmcmFtZUxpa2VPYmplY3QuYmFz
ZVByb3BlcnRpZXMuZWFzaW5nKSk7CisgICAgICAgIEFTU0VSVChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4oa2V5ZnJhbWVMaWtlT2JqZWN0LmJhc2VQcm9wZXJ0aWVzLmVhc2luZykpOwog
ICAgICAgICBrZXlmcmFtZU91dHB1dC5lYXNpbmcgPSBXVEY6OmdldDxTdHJpbmc+KGtleWZyYW1l
TGlrZU9iamVjdC5iYXNlUHJvcGVydGllcy5lYXNpbmcpOwogCiAgICAgICAgIC8vIFdoZW4gY2Fs
bGluZyBwcm9jZXNzS2V5ZnJhbWVMaWtlT2JqZWN0KCkgd2l0aCB0aGUgImFsbG93IGxpc3RzIiBm
bGFnIHNldCB0byBmYWxzZSwgdGhlIG9ubHkgY29tcG9zaXRlCiAgICAgICAgIC8vIGFsdGVybmF0
aXZlcyB3ZSBzaG91bGQgZXhwZWN0IGlzIENvbXBvc2l0ZU9wZXJhdGlvbkF1dG8uCiAgICAgICAg
IGlmIChkb2N1bWVudC5zZXR0aW5ncygpLndlYkFuaW1hdGlvbnNDb21wb3NpdGVPcGVyYXRpb25z
RW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxD
b21wb3NpdGVPcGVyYXRpb25PckF1dG8+KGtleWZyYW1lTGlrZU9iamVjdC5iYXNlUHJvcGVydGll
cy5jb21wb3NpdGUpKTsKKyAgICAgICAgICAgIEFTU0VSVChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PENvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0bz4oa2V5ZnJhbWVMaWtlT2JqZWN0LmJhc2VQcm9wZXJ0
aWVzLmNvbXBvc2l0ZSkpOwogICAgICAgICAgICAga2V5ZnJhbWVPdXRwdXQuY29tcG9zaXRlID0g
V1RGOjpnZXQ8Q29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvPihrZXlmcmFtZUxpa2VPYmplY3QuYmFz
ZVByb3BlcnRpZXMuY29tcG9zaXRlKTsKICAgICAgICAgfQogCkBAIC00MzcsMTEgKzQzNywxMSBA
QCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbk9yPHZvaWQ+IHByb2Nlc3NQcm9wZXJ0eUluZGV4ZWRL
ZXlmcmFtZXMoSlNHbG9iYWxPYmplY3QmCiAgICAgLy8gICAgLSBzZXF1ZW5jZTxkb3VibGU/Piwg
dGhlIHZhbHVlIG9mIOKAnG9mZnNldOKAnSBhcy1pcy4KICAgICAvLyAgICAtIGRvdWJsZT8sIGEg
c2VxdWVuY2Ugb2YgbGVuZ3RoIG9uZSB3aXRoIHRoZSB2YWx1ZSBvZiDigJxvZmZzZXTigJ0gYXMg
aXRzIHNpbmdsZSBpdGVtLCBpLmUuIMKrIG9mZnNldCDCuywKICAgICBWZWN0b3I8c3RkOjpvcHRp
b25hbDxkb3VibGU+PiBvZmZzZXRzOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFZl
Y3RvcjxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4+Pihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNl
UHJvcGVydGllcy5vZmZzZXQpKQorICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rv
cjxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4+Pihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJv
cGVydGllcy5vZmZzZXQpKQogICAgICAgICBvZmZzZXRzID0gV1RGOjpnZXQ8VmVjdG9yPHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPj4+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVz
Lm9mZnNldCk7Ci0gICAgZWxzZSBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KHBy
b3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLm9mZnNldCkpCisgICAgZWxzZSBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1l
LmJhc2VQcm9wZXJ0aWVzLm9mZnNldCkpCiAgICAgICAgIG9mZnNldHMuYXBwZW5kKFdURjo6Z2V0
PGRvdWJsZT4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSk7
Ci0gICAgZWxzZSBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6Om51bGxwdHJfdD4ocHJv
cGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSkKKyAgICBlbHNlIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6bnVsbHB0cl90Pihwcm9wZXJ0eUluZGV4ZWRL
ZXlmcmFtZS5iYXNlUHJvcGVydGllcy5vZmZzZXQpKQogICAgICAgICBvZmZzZXRzLmFwcGVuZChz
dGQ6Om51bGxvcHQpOwogCiAgICAgLy8gNi4gQXNzaWduIGVhY2ggdmFsdWUgaW4gb2Zmc2V0cyB0
byB0aGUga2V5ZnJhbWUgb2Zmc2V0IG9mIHRoZSBrZXlmcmFtZSB3aXRoIGNvcnJlc3BvbmRpbmcg
cG9zaXRpb24gaW4gcHJvcGVydHkga2V5ZnJhbWVzIHVudGlsIHRoZSBlbmQgb2YgZWl0aGVyIHNl
cXVlbmNlIGlzIHJlYWNoZWQuCkBAIC00NTIsOSArNDUyLDkgQEAgc3RhdGljIGlubGluZSBFeGNl
cHRpb25Pcjx2b2lkPiBwcm9jZXNzUHJvcGVydHlJbmRleGVkS2V5ZnJhbWVzKEpTR2xvYmFsT2Jq
ZWN0JgogICAgIC8vICAgIC0gc2VxdWVuY2U8RE9NU3RyaW5nPiwgdGhlIHZhbHVlIG9mIOKAnGVh
c2luZ+KAnSBhcy1pcy4KICAgICAvLyAgICAtIERPTVN0cmluZywgYSBzZXF1ZW5jZSBvZiBsZW5n
dGggb25lIHdpdGggdGhlIHZhbHVlIG9mIOKAnGVhc2luZ+KAnSBhcyBpdHMgc2luZ2xlIGl0ZW0s
IGkuZS4gwqsgZWFzaW5nIMK7LAogICAgIFZlY3RvcjxTdHJpbmc+IGVhc2luZ3M7Ci0gICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPFN0cmluZz4+KHByb3BlcnR5SW5kZXhlZEtl
eWZyYW1lLmJhc2VQcm9wZXJ0aWVzLmVhc2luZykpCisgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8VmVjdG9yPFN0cmluZz4+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0
aWVzLmVhc2luZykpCiAgICAgICAgIGVhc2luZ3MgPSBXVEY6OmdldDxWZWN0b3I8U3RyaW5nPj4o
cHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMuZWFzaW5nKTsKLSAgICBlbHNl
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4ocHJvcGVydHlJbmRleGVkS2V5ZnJh
bWUuYmFzZVByb3BlcnRpZXMuZWFzaW5nKSkKKyAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFN0cmluZz4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMuZWFz
aW5nKSkKICAgICAgICAgZWFzaW5ncy5hcHBlbmQoV1RGOjpnZXQ8U3RyaW5nPihwcm9wZXJ0eUlu
ZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5lYXNpbmcpKTsKIAogICAgIC8vIDguIElmIGVh
c2luZ3MgaXMgYW4gZW1wdHkgc2VxdWVuY2UsIGxldCBpdCBiZSBhIHNlcXVlbmNlIG9mIGxlbmd0
aCBvbmUgY29udGFpbmluZyB0aGUgc2luZ2xlIHZhbHVlIOKAnGxpbmVhcuKAnSwgaS5lLiDCqyAi
bGluZWFyIiDCuy4KQEAgLTQ4MSw5ICs0ODEsOSBAQCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbk9y
PHZvaWQ+IHByb2Nlc3NQcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZXMoSlNHbG9iYWxPYmplY3QmCiAg
ICAgLy8gMTIuIElmIHRoZSDigJxjb21wb3NpdGXigJ0gbWVtYmVyIG9mIHRoZSBwcm9wZXJ0eS1p
bmRleGVkIGtleWZyYW1lIGlzIG5vdCBhbiBlbXB0eSBzZXF1ZW5jZToKICAgICBpZiAoZG9jdW1l
bnQuc2V0dGluZ3MoKS53ZWJBbmltYXRpb25zQ29tcG9zaXRlT3BlcmF0aW9uc0VuYWJsZWQoKSkg
ewogICAgICAgICBWZWN0b3I8Q29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvPiBjb21wb3NpdGVNb2Rl
czsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPENvbXBvc2l0ZU9w
ZXJhdGlvbk9yQXV0bz4+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLmNv
bXBvc2l0ZSkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3RvcjxDb21w
b3NpdGVPcGVyYXRpb25PckF1dG8+Pihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVy
dGllcy5jb21wb3NpdGUpKQogICAgICAgICAgICAgY29tcG9zaXRlTW9kZXMgPSBXVEY6OmdldDxW
ZWN0b3I8Q29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvPj4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUu
YmFzZVByb3BlcnRpZXMuY29tcG9zaXRlKTsKLSAgICAgICAgZWxzZSBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxDb21wb3NpdGVPcGVyYXRpb25PckF1dG8+KHByb3BlcnR5SW5kZXhlZEtleWZy
YW1lLmJhc2VQcm9wZXJ0aWVzLmNvbXBvc2l0ZSkpCisgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8Q29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvPihwcm9wZXJ0eUluZGV4ZWRL
ZXlmcmFtZS5iYXNlUHJvcGVydGllcy5jb21wb3NpdGUpKQogICAgICAgICAgICAgY29tcG9zaXRl
TW9kZXMuYXBwZW5kKFdURjo6Z2V0PENvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0bz4ocHJvcGVydHlJ
bmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMuY29tcG9zaXRlKSk7CiAgICAgICAgIGlmICgh
Y29tcG9zaXRlTW9kZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyAxLiBMZXQgY29tcG9z
aXRlIG1vZGVzIGJlIGEgc2VxdWVuY2Ugb2YgQ29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvIHZhbHVl
cyBhc3NpZ25lZCBmcm9tIHRoZSDigJxjb21wb3NpdGXigJ0gbWVtYmVyIG9mIHByb3BlcnR5LWlu
ZGV4ZWQga2V5ZnJhbWUuIElmIHRoYXQgbWVtYmVyIGlzIGEgc2luZ2xlCkBAIC01MTQsNyArNTE0
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPEtleWZyYW1lRWZmZWN0Pj4gS2V5ZnJhbWVFZmZlY3Q6OmNy
ZWF0ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEcKICAgICBpZiAob3B0aW9ucykgewogICAgICAg
ICBPcHRpb25hbEVmZmVjdFRpbWluZyB0aW1pbmc7CiAgICAgICAgIGF1dG8gb3B0aW9uc1ZhbHVl
ID0gb3B0aW9ucy52YWx1ZSgpOwotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxk
b3VibGU+KG9wdGlvbnNWYWx1ZSkpIHsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8ZG91YmxlPihvcHRpb25zVmFsdWUpKSB7CiAgICAgICAgICAgICBWYXJpYW50PGRvdWJsZSwg
U3RyaW5nPiBkdXJhdGlvbiA9IFdURjo6Z2V0PGRvdWJsZT4ob3B0aW9uc1ZhbHVlKTsKICAgICAg
ICAgICAgIHRpbWluZy5kdXJhdGlvbiA9IGR1cmF0aW9uOwogICAgICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQnVmZmVyU291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9CdWZmZXJTb3VyY2UuaAppbmRleCA5MGU0N2M5ZWU1MDRk
ZjY0YjMzNDMzZDc1MDVjODRmYjc0MzBmZmI4Li5iMmYxYzYzNWZiZjc3ZDQ0Y2Q2MjIyYzA0NDEw
OGMxMzUxNWZiNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9CdWZm
ZXJTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9CdWZmZXJTb3VyY2Uu
aApAQCAtNDUsMTQgKzQ1LDE0IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQoW10oYXV0byYgYnVmZmVy
KSAtPiBjb25zdCB1aW50OF90KiB7CisgICAgICAgIHJldHVybiBzdGQ6OnZpc2l0KFtdKGF1dG8m
IGJ1ZmZlcikgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlciA/
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSkgOiBudWxscHRyOwog
ICAgICAgICB9LCBtX3ZhcmlhbnQpOwogICAgIH0KIAogICAgIHNpemVfdCBsZW5ndGgoKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQoW10oYXV0byYgYnVmZmVyKSAtPiBz
aXplX3QgeworICAgICAgICByZXR1cm4gc3RkOjp2aXNpdChbXShhdXRvJiBidWZmZXIpIC0+IHNp
emVfdCB7CiAgICAgICAgICAgICByZXR1cm4gYnVmZmVyID8gYnVmZmVyLT5ieXRlTGVuZ3RoKCkg
OiAwOwogICAgICAgICB9LCBtX3ZhcmlhbnQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggYmFlZGQwYzA2OWNh
MjgxYjI5ODQ3MWUzMGI2OTc0YjUyNTZkMzMwZS4uMzhiNDVkYmZiMzU5NjhlN2NjNmFmMTBiM2Yy
MWJlYWM5NDA1MmI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTMyNyw3ICszMjcsNyBAQCBib29sIGluamVjdElEQktl
eUludG9TY3JpcHRWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29u
c3QgSURCSwogewogICAgIExPRyhJbmRleGVkREIsICJpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFs
dWUiKTsKIAotICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oa2V5UGF0
aCkpOworICAgIEFTU0VSVChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oa2V5UGF0aCkp
OwogCiAgICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0aEVsZW1lbnRzOwogICAgIElEQktleVBhdGhQ
YXJzZUVycm9yIGVycm9yOwpAQCAtMzU4LDcgKzM1OCw3IEBAIGJvb2wgaW5qZWN0SURCS2V5SW50
b1NjcmlwdFZhbHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBJ
REJLCiAKIFJlZlB0cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5k
S2V5UGF0aChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1
ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxWZWN0b3I8U3RyaW5nPj4oa2V5UGF0aCkpIHsKKyAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxWZWN0b3I8U3RyaW5nPj4oa2V5UGF0aCkpIHsKICAgICAgICAgYXV0byYgYXJy
YXkgPSBXVEY6OmdldDxWZWN0b3I8U3RyaW5nPj4oa2V5UGF0aCk7CiAgICAgICAgIFZlY3RvcjxS
ZWZQdHI8SURCS2V5Pj4gcmVzdWx0OwogICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShhcnJheS5zaXplKCkpOwpAQCAtMzc4LDcgKzM3OCw3IEBAIGJvb2wgY2FuSW5qZWN0SURC
S2V5SW50b1NjcmlwdFZhbHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1ZhbHVlCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0
VmFsdWUiKTsKIAotICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oa2V5
UGF0aCkpOworICAgIEFTU0VSVChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oa2V5UGF0
aCkpOwogICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50czsKICAgICBJREJLZXlQYXRo
UGFyc2VFcnJvciBlcnJvcjsKICAgICBJREJQYXJzZUtleVBhdGgoV1RGOjpnZXQ8U3RyaW5nPihr
ZXlQYXRoKSwga2V5UGF0aEVsZW1lbnRzLCBlcnJvcik7CkBAIC00NDAsNyArNDQwLDcgQEAgc3Rh
dGljIFZlY3RvcjxJREJLZXlEYXRhPiBjcmVhdGVLZXlQYXRoQXJyYXkoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNp
dG9yKFsmXShjb25zdCBTdHJpbmcmIHN0cmluZykgLT4gVmVjdG9yPElEQktleURhdGE+IHsKICAg
ICAgICAgLy8gVmFsdWUgZG9lc24ndCBjb250YWluIGF1dG8tZ2VuZXJhdGVkIGtleSwgc28gd2Ug
bmVlZCB0byBtYW51YWxseSBhZGQga2V5IGlmIGl0IGlzIHBvc3NpYmx5IGF1dG8tZ2VuZXJhdGVk
LgotICAgICAgICBpZiAob2JqZWN0U3RvcmVLZXlQYXRoICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8U3RyaW5nPihvYmplY3RTdG9yZUtleVBhdGgudmFsdWUoKSkgJiYgSURCS2V5UGF0aChzdHJp
bmcpID09IG9iamVjdFN0b3JlS2V5UGF0aC52YWx1ZSgpKQorICAgICAgICBpZiAob2JqZWN0U3Rv
cmVLZXlQYXRoICYmIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihvYmplY3RTdG9yZUtl
eVBhdGgudmFsdWUoKSkgJiYgSURCS2V5UGF0aChzdHJpbmcpID09IG9iamVjdFN0b3JlS2V5UGF0
aC52YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0U3RvcmVLZXkgfTsKIAogICAg
ICAgICBhdXRvIGlkYktleSA9IGludGVybmFsQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5k
S2V5UGF0aChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3RyaW5nKTsKQEAgLTQ1Nyw3ICs0
NTcsNyBAQCBzdGF0aWMgVmVjdG9yPElEQktleURhdGE+IGNyZWF0ZUtleVBhdGhBcnJheShKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdAogICAgIH0sIFsmXShjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdmVjdG9yKSAtPiBWZWN0b3I8SURCS2V5RGF0YT4gewogICAgICAgICBWZWN0b3I8
SURCS2V5RGF0YT4ga2V5czsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IHZlY3Rvcikgewot
ICAgICAgICAgICAgaWYgKG9iamVjdFN0b3JlS2V5UGF0aCAmJiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4ob2JqZWN0U3RvcmVLZXlQYXRoLnZhbHVlKCkpICYmIElEQktleVBhdGgoZW50
cnkpID09IG9iamVjdFN0b3JlS2V5UGF0aC52YWx1ZSgpKQorICAgICAgICAgICAgaWYgKG9iamVj
dFN0b3JlS2V5UGF0aCAmJiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4ob2JqZWN0U3Rv
cmVLZXlQYXRoLnZhbHVlKCkpICYmIElEQktleVBhdGgoZW50cnkpID09IG9iamVjdFN0b3JlS2V5
UGF0aC52YWx1ZSgpKQogICAgICAgICAgICAgICAgIGtleXMuYXBwZW5kKG9iamVjdFN0b3JlS2V5
KTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGF1dG8ga2V5ID0gaW50ZXJu
YWxDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlLCBlbnRyeSk7CkBAIC00NjksNyArNDY5LDcgQEAgc3RhdGljIFZlY3RvcjxJREJL
ZXlEYXRhPiBjcmVhdGVLZXlQYXRoQXJyYXkoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QKICAgICAgICAgcmV0dXJuIGtleXM7CiAgICAgfSk7CiAKLSAgICByZXR1cm4gV1RGOjp2
aXNpdCh2aXNpdG9yLCBpbmZvLmtleVBhdGgoKSk7CisgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlz
aXRvciwgaW5mby5rZXlQYXRoKCkpOwogfQogCiB2b2lkIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1
ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSURCSW5kZXhJbmZv
JiBpbmZvLCBKU1ZhbHVlIHZhbHVlLCBJbmRleEtleSYgb3V0S2V5LCBjb25zdCBzdGQ6Om9wdGlv
bmFsPElEQktleVBhdGg+JiBvYmplY3RTdG9yZUtleVBhdGgsIGNvbnN0IElEQktleURhdGEmIG9i
amVjdFN0b3JlS2V5KQpAQCAtNTEyLDcgKzUxMiw3IEBAIEluZGV4SURUb0luZGV4S2V5TWFwIGdl
bmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
CiBzdGQ6Om9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gZGVzZXJpYWxpemVJREJWYWx1ZVdpdGhLZXlJ
bmplY3Rpb24oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IElEQlZh
bHVlJiB2YWx1ZSwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8ganNWYWx1ZSA9IGRlc2VyaWFsaXplSURC
VmFsdWVUb0pTVmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwotICAgIGlmIChqc1Zh
bHVlLmlzVW5kZWZpbmVkKCkgfHwgIWtleVBhdGggfHwgIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
U3RyaW5nPihrZXlQYXRoLnZhbHVlKCkpIHx8ICFpc0lEQktleVBhdGhWYWxpZChrZXlQYXRoLnZh
bHVlKCkpKQorICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIWtleVBhdGggfHwgIXN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihrZXlQYXRoLnZhbHVlKCkpIHx8ICFpc0lEQktl
eVBhdGhWYWxpZChrZXlQYXRoLnZhbHVlKCkpKQogICAgICAgICByZXR1cm4ganNWYWx1ZTsKIAog
ICAgIEpTTG9ja0hvbGRlciBsb2NrZXIobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKaW5kZXggY2EzOTQzYTNjOTUzNTBhNDFkNzM4
YzhhMjFkNTExNjllYTc0ODc2OS4uZWQ0ZTg5MTgyYjEwMWMxYWI2MjU5ZTlhN2I2YzE5NmJlMWI0
NWU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKQEAgLTkzLDcgKzkz
LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oYWxnb3JpdGhtSWRlbnRpZmllcikpIHsKKyAgICBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGFsZ29yaXRobUlkZW50aWZpZXIpKSB7
CiAgICAgICAgIGF1dG8gbmV3UGFyYW1zID0gU3Ryb25nPEpTT2JqZWN0Pih2bSwgY29uc3RydWN0
RW1wdHlPYmplY3QoJnN0YXRlKSk7CiAgICAgICAgIG5ld1BhcmFtcy0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZSIpLCBqc1N0cmluZyh2bSwgV1RGOjpnZXQ8
U3RyaW5nPihhbGdvcml0aG1JZGVudGlmaWVyKSkpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcAppbmRleCA4MjBlMGRlM2Q4MWY3ZTY2
YTJjOTEwMmFhYTgwMGE5NmZlMjBjMmRlLi4wNjdhOGE2ZTk3ZjFjOTUwOTM2NjgwNjI4ZWUzNjFm
NjhmZjY4OGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFs
dWUuY3BwCkBAIC0zMiwxNCArMzIsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZT4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlRW1wdHko
Y29uc3QgQXRvbVN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIE1vbm9zdGF0ZSB7IH0pKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHN0ZDo6bW9ub3N0YXRlIHsg
fSkpOwogfQogCiBib29sIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmVxdWFscyhjb25zdCBDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAobV9uYW1lICE9IG90
aGVyLm1fbmFtZSB8fCBtX3ZhbHVlLmluZGV4KCkgIT0gb3RoZXIubV92YWx1ZS5pbmRleCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV92YWx1ZSwg
WyZdKGNvbnN0IE1vbm9zdGF0ZSYpIHsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3ZhbHVl
LCBbJl0oY29uc3Qgc3RkOjptb25vc3RhdGUmKSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4mIHZhbHVlKSB7CiAg
ICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKSA9PSBXVEY6OmdldDxSZWY8Q1NTVmFyaWFibGVSZWZl
cmVuY2VWYWx1ZT4+KG90aGVyLm1fdmFsdWUpLmdldCgpOwpAQCAtNTcsNyArNTcsNyBAQCBib29s
IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmVxdWFscyhjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlJiBvdGhlcikgY29uc3QKIFN0cmluZyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjdXN0b21D
U1NUZXh0KCkgY29uc3QKIHsKICAgICBpZiAobV9zdHJpbmdWYWx1ZS5pc051bGwoKSkgewotICAg
ICAgICBXVEY6OnN3aXRjaE9uKG1fdmFsdWUsIFsmXShjb25zdCBNb25vc3RhdGUmKSB7CisgICAg
ICAgIFdURjo6c3dpdGNoT24obV92YWx1ZSwgWyZdKGNvbnN0IHN0ZDo6bW9ub3N0YXRlJikgewog
ICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIH0sIFsm
XShjb25zdCBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4mIHZhbHVlKSB7CiAgICAgICAg
ICAgICBtX3N0cmluZ1ZhbHVlID0gdmFsdWUtPmNzc1RleHQoKTsKQEAgLTc3LDcgKzc3LDcgQEAg
U3RyaW5nIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogVmVj
dG9yPENTU1BhcnNlclRva2VuPiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjp0b2tlbnMoKSBjb25z
dAogewogICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzdWx0OwotICAgIFdURjo6c3dpdGNo
T24obV92YWx1ZSwgWyZdKGNvbnN0IE1vbm9zdGF0ZSYpIHsKKyAgICBXVEY6OnN3aXRjaE9uKG1f
dmFsdWUsIFsmXShjb25zdCBzdGQ6Om1vbm9zdGF0ZSYpIHsKICAgICAgICAgLy8gRG8gbm90aGlu
Zy4KICAgICB9LCBbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+Jikgewog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZS5oCmluZGV4IDNhNjc3Njg1YjQ0ZWU0ZmUyOGM5YjdhM2MxNTMzMTNj
M2ZmMmQxZTcuLjM0MzgyYTAwMmM3ZTVhOWM5ZTYyNzc0ZWZmOTU5M2I2NzM1NWEyMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaApAQCAtMzgsNyArMzgs
NyBAQCBjbGFzcyBDU1NQYXJzZXJUb2tlbjsKIAogY2xhc3MgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZSBmaW5hbCA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgVmFyaWFudFZh
bHVlID0gVmFyaWFudDxNb25vc3RhdGUsIFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiwg
Q1NTVmFsdWVJRCwgUmVmPENTU1ZhcmlhYmxlRGF0YT4sIExlbmd0aCwgUmVmPFN0eWxlSW1hZ2U+
PjsKKyAgICB1c2luZyBWYXJpYW50VmFsdWUgPSBWYXJpYW50PHN0ZDo6bW9ub3N0YXRlLCBSZWY8
Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4sIENTU1ZhbHVlSUQsIFJlZjxDU1NWYXJpYWJsZURh
dGE+LCBMZW5ndGgsIFJlZjxTdHlsZUltYWdlPj47CiAKICAgICBzdGF0aWMgUmVmPENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+IGNyZWF0ZUVtcHR5KGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOwogCkBA
IC04Myw5ICs4Myw5IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0
OwogCiAgICAgY29uc3QgQXRvbVN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsg
fQotICAgIGJvb2wgaXNSZXNvbHZlZCgpIGNvbnN0IHsgcmV0dXJuICFXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPj4obV92YWx1ZSk7IH0KLSAgICBi
b29sIGlzVW5zZXQoKSBjb25zdCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENTU1Zh
bHVlSUQ+KG1fdmFsdWUpICYmIFdURjo6Z2V0PENTU1ZhbHVlSUQ+KG1fdmFsdWUpID09IENTU1Zh
bHVlVW5zZXQ7IH0KLSAgICBib29sIGlzSW52YWxpZCgpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8Q1NTVmFsdWVJRD4obV92YWx1ZSkgJiYgV1RGOjpnZXQ8Q1NTVmFsdWVJ
RD4obV92YWx1ZSkgPT0gQ1NTVmFsdWVJbnZhbGlkOyB9CisgICAgYm9vbCBpc1Jlc29sdmVkKCkg
Y29uc3QgeyByZXR1cm4gIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENTU1ZhcmlhYmxlUmVm
ZXJlbmNlVmFsdWU+PihtX3ZhbHVlKTsgfQorICAgIGJvb2wgaXNVbnNldCgpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q1NTVmFsdWVJRD4obV92YWx1ZSkgJiYgV1RGOjpn
ZXQ8Q1NTVmFsdWVJRD4obV92YWx1ZSkgPT0gQ1NTVmFsdWVVbnNldDsgfQorICAgIGJvb2wgaXNJ
bnZhbGlkKCkgY29uc3QgeyByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxDU1NWYWx1ZUlE
PihtX3ZhbHVlKSAmJiBXVEY6OmdldDxDU1NWYWx1ZUlEPihtX3ZhbHVlKSA9PSBDU1NWYWx1ZUlu
dmFsaWQ7IH0KIAogICAgIGNvbnN0IFZhcmlhbnRWYWx1ZSYgdmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRleCA0MzM4YzVmMmM1Y2QwMjll
ZTJkOTA5NzZjZDkxNGI4Y2E5MWJkMWI3Li4xZTJhMTdlOWQ0ZDRjNWVkYjhjZDg4MzA1NjI3OTdm
MDdkOGM4NjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCkBAIC0yOTgsNyArMjk4LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlTGF5ZXI+IGNyZWF0ZUJsb2NrKENhc2NhZGVM
YXllck5hbWUmJiwgc3RkOjp1bmlxdWVfcHRyPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PiYm
KTsKICAgICBSZWY8U3R5bGVSdWxlTGF5ZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0eWxlUnVsZUxheWVyKCp0aGlzKSk7IH0KIAotICAgIGJvb2wgaXNTdGF0ZW1lbnQo
KSBjb25zdCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3RvcjxDYXNjYWRlTGF5
ZXJOYW1lPj4obV9uYW1lVmFyaWFudCk7IH0KKyAgICBib29sIGlzU3RhdGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8Q2FzY2FkZUxheWVyTmFtZT4+
KG1fbmFtZVZhcmlhbnQpOyB9CiAKICAgICBhdXRvJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gV1RG
OjpnZXQ8Q2FzY2FkZUxheWVyTmFtZT4obV9uYW1lVmFyaWFudCk7IH0KICAgICBhdXRvJiBuYW1l
TGlzdCgpIGNvbnN0IHsgcmV0dXJuIFdURjo6Z2V0PFZlY3RvcjxDYXNjYWRlTGF5ZXJOYW1lPj4o
bV9uYW1lVmFyaWFudCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9t
L0NTU1VucGFyc2VkVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTVW5w
YXJzZWRWYWx1ZS5jcHAKaW5kZXggODYyZjY5YzUwYjljYWYyOWE1MDg4OGM1YWYzYTcxYWJkN2I5
NTljOC4uZTc2MWJlYmRmZmY1YzU3YjBlZjY4MDllMjZkZjEyZGJlZDM3YzBjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTVW5wYXJzZWRWYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTVW5wYXJzZWRWYWx1ZS5jcHAKQEAgLTEzMCw3
ICsxMzAsNyBAQCBTdHJpbmcgQ1NTVW5wYXJzZWRWYWx1ZTo6dG9TdHJpbmcoKSBjb25zdAogdm9p
ZCBDU1NVbnBhcnNlZFZhbHVlOjpzZXJpYWxpemUoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29u
c3QKIHsKICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKSB7Ci0gICAgICAgIFdU
Rjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0gKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsKKyAg
ICAgICAgc3RkOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXSAoY29uc3QgU3RyaW5nJiB2YWx1
ZSkgewogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWUpOwogICAgICAgICB9LCBbJl0g
KGNvbnN0IFJlZlB0cjxDU1NPTVZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JiB2YWx1ZSkgewogICAg
ICAgICAgICAgdmFsdWUtPnNlcmlhbGl6ZShidWlsZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
TWFya2VyLmgKaW5kZXggYTgxNzYxZDdjYWU1N2RjNWJkMzg5NTViMTE3MWY4MTExNDZmOGI5NS4u
M2FmY2E2YTI1YmM2Y2U5ZmQzMTNhZDlhYjI2OTI0NmIwZDk0NmQyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50TWFya2VyLmgKQEAgLTE3NSw3ICsxNzUsNyBAQCBpbmxpbmUgdm9pZCBEb2N1bWVu
dE1hcmtlcjo6c2hpZnRPZmZzZXRzKGludCBkZWx0YSkKIAogaW5saW5lIGNvbnN0IFN0cmluZyYg
RG9jdW1lbnRNYXJrZXI6OmRlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkgPyBXVEY6OmdldDxTdHJpbmc+KG1fZGF0
YSkgOiBlbXB0eVN0cmluZygpOworICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0
cmluZz4obV9kYXRhKSA/IFdURjo6Z2V0PFN0cmluZz4obV9kYXRhKSA6IGVtcHR5U3RyaW5nKCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA0
YWJhZjJhZTNmMDY3NWYzZGZmNjAwZjRhMjE1NmExY2JmMzBlOTFhLi5mMmFkYjY2NWE1NDI1Y2E4
ZmNlOTViNjg4ZGFiMjQwZGM4Nzg3MDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC05MTks
NyArOTE5LDcgQEAgdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlldyhzdGQ6Om9wdGlvbmFsPFZh
cmlhbnQ8Ym9vbCwgU2Nyb2xsSW50b1ZpZXdPcHRpb25zPj4KICAgICBTY3JvbGxJbnRvVmlld09w
dGlvbnMgb3B0aW9uczsKICAgICBpZiAoYXJnKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSBhcmcu
dmFsdWUoKTsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U2Nyb2xsSW50b1Zp
ZXdPcHRpb25zPih2YWx1ZSkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNj
cm9sbEludG9WaWV3T3B0aW9ucz4odmFsdWUpKQogICAgICAgICAgICAgb3B0aW9ucyA9IFdURjo6
Z2V0PFNjcm9sbEludG9WaWV3T3B0aW9ucz4odmFsdWUpOwogICAgICAgICBlbHNlIGlmICghV1RG
OjpnZXQ8Ym9vbD4odmFsdWUpKQogICAgICAgICAgICAgb3B0aW9ucy5ibG9ja1Bvc2l0aW9uID0g
U2Nyb2xsTG9naWNhbFBvc2l0aW9uOjpFbmQ7CkBAIC00NjI4LDcgKzQ2MjgsNyBAQCBFeGNlcHRp
b25PcjxSZWY8V2ViQW5pbWF0aW9uPj4gRWxlbWVudDo6YW5pbWF0ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYgogICAgIGlmIChvcHRpb25zKSB7CiAgICAgICAgIGF1dG8gb3B0aW9u
c1ZhbHVlID0gb3B0aW9ucy52YWx1ZSgpOwogICAgICAgICBWYXJpYW50PGRvdWJsZSwgS2V5ZnJh
bWVFZmZlY3RPcHRpb25zPiBrZXlmcmFtZUVmZmVjdE9wdGlvbnNWYXJpYW50OwotICAgICAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KG9wdGlvbnNWYWx1ZSkpCisgICAgICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4ob3B0aW9uc1ZhbHVlKSkKICAgICAg
ICAgICAgIGtleWZyYW1lRWZmZWN0T3B0aW9uc1ZhcmlhbnQgPSBXVEY6OmdldDxkb3VibGU+KG9w
dGlvbnNWYWx1ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXV0byBrZXlmcmFtZUVm
ZmVjdE9wdGlvbnMgPSBXVEY6OmdldDxLZXlmcmFtZUFuaW1hdGlvbk9wdGlvbnM+KG9wdGlvbnNW
YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCBjZmRjMTkxY2Q1ZGNhMjE4
NTViZDFjYWQxY2JiZGY5MGZhOGMyNzc5Li44MjJhZTBkMWI3YTY4Y2M5NjFjOGI5ZWFlODM5NjYy
NzdjZWQ1MzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTEyNSw3ICsxMjUs
NyBAQCB2b2lkIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyRm9yQmluZGluZ3MoY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWZQdAogICAgICAgICBhZGRFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgbGlzdGVuZXIucmVsZWFzZU5vbk51bGwoKSwgY2FwdHVyZSk7CiAgICAgfSk7CiAK
LSAgICBXVEY6OnZpc2l0KHZpc2l0b3IsIHZhcmlhbnQpOworICAgIHN0ZDo6dmlzaXQodmlzaXRv
ciwgdmFyaWFudCk7CiB9CiAKIHZvaWQgRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXJG
b3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3Rl
bmVyPiYmIGxpc3RlbmVyLCBFdmVudExpc3RlbmVyT3B0aW9uc09yQm9vbGVhbiYmIHZhcmlhbnQp
CkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBFdmVudFRhcmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5l
ckZvckJpbmRpbmdzKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmUKICAgICAgICAgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICpsaXN0ZW5lciwgY2FwdHVyZSk7CiAgICAgfSk7
CiAKLSAgICBXVEY6OnZpc2l0KHZpc2l0b3IsIHZhcmlhbnQpOworICAgIHN0ZDo6dmlzaXQodmlz
aXRvciwgdmFyaWFudCk7CiB9CiAKIGJvb2wgRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwg
Y29uc3QgRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKaW5kZXggZjE0ZTkzYmY2Yjc1YjAxZDU5YjFmNDI1Y2VlZWEwY2I2ZWU5ODBkNC4uOTUw
MTk0MGMwMTI3MjQzYzU5ZjI2Y2U3ODk1NWEzOWMxNTUyMGI4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcApAQCAtMjI3Myw3ICsyMjczLDcgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05l
eHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogCiAgICAgaWYgKHVuaWZp
ZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSkgewogICAgICAgICBhdXRvIGZvdW5kSXRlbSA9IFRleHRD
aGVja2luZ0hlbHBlcigqY2xpZW50KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdE1p
c3NwZWxsZWRXb3JkT3JVbmdyYW1tYXRpY2FsUGhyYXNlKGlzR3JhbW1hckNoZWNraW5nRW5hYmxl
ZCgpKTsKLSAgICAgICAgaWYgKGF1dG8qIHdvcmQgPSBXVEY6OmdldF9pZjxUZXh0Q2hlY2tpbmdI
ZWxwZXI6Ok1pc3NwZWxsZWRXb3JkPigmZm91bmRJdGVtKSkKKyAgICAgICAgaWYgKGF1dG8qIHdv
cmQgPSBzdGQ6OmdldF9pZjxUZXh0Q2hlY2tpbmdIZWxwZXI6Ok1pc3NwZWxsZWRXb3JkPigmZm91
bmRJdGVtKSkKICAgICAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gV1RGTW92ZSgqd29yZCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHVuZ3JhbW1hdGljYWxQaHJhc2UgPSBXVEY6OmdldDxU
ZXh0Q2hlY2tpbmdIZWxwZXI6OlVuZ3JhbW1hdGljYWxQaHJhc2U+KFdURk1vdmUoZm91bmRJdGVt
KSk7CkBAIC0yMzAwLDcgKzIzMDAsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3Nw
ZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIAogICAgICAgICBpZiAo
dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICBhdXRvIGZvdW5kSXRl
bSA9IFRleHRDaGVja2luZ0hlbHBlcigqY2xpZW50KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2UpLmZp
bmRGaXJzdE1pc3NwZWxsZWRXb3JkT3JVbmdyYW1tYXRpY2FsUGhyYXNlKGlzR3JhbW1hckNoZWNr
aW5nRW5hYmxlZCgpKTsKLSAgICAgICAgICAgIGlmIChhdXRvKiB3b3JkID0gV1RGOjpnZXRfaWY8
VGV4dENoZWNraW5nSGVscGVyOjpNaXNzcGVsbGVkV29yZD4oJmZvdW5kSXRlbSkpCisgICAgICAg
ICAgICBpZiAoYXV0byogd29yZCA9IHN0ZDo6Z2V0X2lmPFRleHRDaGVja2luZ0hlbHBlcjo6TWlz
c3BlbGxlZFdvcmQ+KCZmb3VuZEl0ZW0pKQogICAgICAgICAgICAgICAgIG1pc3NwZWxsZWRXb3Jk
ID0gV1RGTW92ZSgqd29yZCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdW5n
cmFtbWF0aWNhbFBocmFzZSA9IFdURjo6Z2V0PFRleHRDaGVja2luZ0hlbHBlcjo6VW5ncmFtbWF0
aWNhbFBocmFzZT4oV1RGTW92ZShmb3VuZEl0ZW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKaW5kZXggZTk4YWI3YzE0ZjAyYjAzYmJmZjQ1ZjEyZmVmY2EzM2E2NTM1MTk2
MS4uMWRmNjc2YWYzZDE5NGFlYjE5YWVlMDQ2NzE3NjYxMGIzYmE1YTFmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTU1Niw3ICs1NTYsNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIHZvaWQgbWVkaWFTdHJlYW1DYXB0dXJlU3Rh
cnRlZCgpOwotICAgIGJvb2wgaGFzTWVkaWFTdHJlYW1TcmNPYmplY3QoKSBjb25zdCB7IHJldHVy
biBtX21lZGlhUHJvdmlkZXIgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8TWVkaWFT
dHJlYW0+PigqbV9tZWRpYVByb3ZpZGVyKTsgfQorICAgIGJvb2wgaGFzTWVkaWFTdHJlYW1TcmNP
YmplY3QoKSBjb25zdCB7IHJldHVybiBtX21lZGlhUHJvdmlkZXIgJiYgc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWZQdHI8TWVkaWFTdHJlYW0+PigqbV9tZWRpYVByb3ZpZGVyKTsgfQogI2VuZGlm
CiAKICAgICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCmluZGV4IDM0ZjVjOTE1OWFiZGMzYzVmZjcyMjA4
ZmYzNzUxZDFhNzcyMzE1NzQuLmY1NGY0MWUxOWNmN2E3ZTRkNTU0MGM2NDY2NjJmOGVjNWZiZDNk
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAKQEAgLTU2LDcgKzU2
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFVSTFNlYXJjaFBhcmFtcz4+IFVSTFNlYXJjaFBhcmFtczo6
Y3JlYXRlKFZhcmlhbnQ8VmVjdG9yPFZlY3RvcjwKICAgICB9LCBbJl0oY29uc3QgU3RyaW5nJiBz
dHJpbmcpIC0+IEV4Y2VwdGlvbk9yPFJlZjxVUkxTZWFyY2hQYXJhbXM+PiB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFVSTFNlYXJjaFBhcmFtcyhzdHJpbmcsIG51bGxwdHIpKTsKICAg
ICB9KTsKLSAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCB2YXJpYW50KTsKKyAgICByZXR1
cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCB2YXJpYW50KTsKIH0KIAogU3RyaW5nIFVSTFNlYXJjaFBh
cmFtczo6Z2V0KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1N0eWxlLmNwcAppbmRleCA4ZDdhNmFhMjE2MGMwZWVmZjViZDQzMjg4NDRm
YTIzYTdiYWMxZmEzLi5hYWJkZGEwM2EwMGY3NGQ0YjVhNmJkY2MyMjRmNmFhMzJiMjc1MzFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCkBAIC0xNDIsNyAr
MTQyLDcgQEAgQ2FudmFzU3R5bGUgQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21TdHJpbmdXaXRoT3Zl
cnJpZGVBbHBoYShjb25zdCBTdHJpbmcmIGNvbG9yU3QKIAogYm9vbCBDYW52YXNTdHlsZTo6aXNF
cXVpdmFsZW50Q29sb3IoY29uc3QgQ2FudmFzU3R5bGUmIG90aGVyKSBjb25zdAogewotICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENvbG9yPihtX3N0eWxlKSAmJiBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPENvbG9yPihvdGhlci5tX3N0eWxlKSkKKyAgICBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxDb2xvcj4obV9zdHlsZSkgJiYgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxDb2xvcj4o
b3RoZXIubV9zdHlsZSkpCiAgICAgICAgIHJldHVybiBXVEY6OmdldDxDb2xvcj4obV9zdHlsZSkg
PT0gV1RGOjpnZXQ8Q29sb3I+KG90aGVyLm1fc3R5bGUpOwogCiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTUwLDcgKzE1MCw3IEBAIGJvb2wgQ2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudENvbG9yKGNv
bnN0IENhbnZhc1N0eWxlJiBvdGhlcikgY29uc3QKIAogYm9vbCBDYW52YXNTdHlsZTo6aXNFcXVp
dmFsZW50KGNvbnN0IFNSR0JBPGZsb2F0PiYgY29tcG9uZW50cykgY29uc3QKIHsKLSAgICByZXR1
cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxDb2xvcj4obV9zdHlsZSkgJiYgV1RGOjpnZXQ8Q29s
b3I+KG1fc3R5bGUpID09IGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oY29tcG9uZW50cyk7
CisgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29sb3I+KG1fc3R5bGUpICYmIFdU
Rjo6Z2V0PENvbG9yPihtX3N0eWxlKSA9PSBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KGNv
bXBvbmVudHMpOwogfQogCiB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1N0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNTdHlsZS5oCmluZGV4IGEyODM2M2Y5MmI4MTc1ZmRhOWRhZDc4N2NhZTg5NWU4OTE3ZWM2YzUu
LmE1NDAyODBlMjhkNmRkMTA3NjFkMzlhM2U0ODY1ODg4ODM5Nzg2OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaApAQCAtNDksOCArNDksOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIENhbnZhc1N0eWxlIGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBjb2xv
ciwgQ2FudmFzQmFzZSYpOwogICAgIHN0YXRpYyBDYW52YXNTdHlsZSBjcmVhdGVGcm9tU3RyaW5n
V2l0aE92ZXJyaWRlQWxwaGEoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEsIENhbnZh
c0Jhc2UmKTsKIAotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICFXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEludmFsaWQ+KG1fc3R5bGUpOyB9Ci0gICAgYm9vbCBpc0N1cnJlbnRDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q3VycmVudENvbG9yPiht
X3N0eWxlKTsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICFzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPEludmFsaWQ+KG1fc3R5bGUpOyB9CisgICAgYm9vbCBpc0N1cnJlbnRDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q3VycmVudENvbG9yPiht
X3N0eWxlKTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG92ZXJyaWRlQWxwaGEoKSBjb25z
dCB7IHJldHVybiBXVEY6OmdldDxDdXJyZW50Q29sb3I+KG1fc3R5bGUpLm92ZXJyaWRlQWxwaGE7
IH0KIAogICAgIFN0cmluZyBjb2xvcigpIGNvbnN0OwpAQCAtODgsMTQgKzg4LDE0IEBAIGlubGlu
ZSBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoKQogCiBpbmxpbmUgUmVmUHRyPENhbnZhc0dyYWRp
ZW50PiBDYW52YXNTdHlsZTo6Y2FudmFzR3JhZGllbnQoKSBjb25zdAogewotICAgIGlmICghV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8Q2FudmFzR3JhZGllbnQ+PihtX3N0eWxlKSkKKyAg
ICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPENhbnZhc0dyYWRpZW50Pj4obV9z
dHlsZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBXVEY6OmdldDxSZWZQ
dHI8Q2FudmFzR3JhZGllbnQ+PihtX3N0eWxlKTsKIH0KIAogaW5saW5lIFJlZlB0cjxDYW52YXNQ
YXR0ZXJuPiBDYW52YXNTdHlsZTo6Y2FudmFzUGF0dGVybigpIGNvbnN0CiB7Ci0gICAgaWYgKCFX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4obV9zdHlsZSkpCisg
ICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4obV9z
dHlsZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBXVEY6OmdldDxSZWZQ
dHI8Q2FudmFzUGF0dGVybj4+KG1fc3R5bGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAzNWNj
NzcxYzljZmFkMmFiNTk0MDFmZTUzMTNhNGVhNjY0MTRhZmFmLi5kNmRlZjUyY2RkZmIxNjIwYmVj
ZGRiYmUwNzJjZmI5NmRjYjYzYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNzMwLDcgKzczMCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzYXZlQmxlbmRWYWx1ZShHQ0dMZW51bSBhdHRhY2htZW50
LCBUJiBkZXN0aW5hdGlvbikKICAgICB7CiAgICAgICAgIFdlYkdMQW55IHBhcmFtID0gbV9jb250
ZXh0LmdldFBhcmFtZXRlcihhdHRhY2htZW50KTsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8VD4ocGFyYW0pKQorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxU
PihwYXJhbSkpCiAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IFdURjo6Z2V0PFQ+KHBhcmFtKTsK
ICAgICB9CiAKQEAgLTczOCwxNiArNzM4LDE2IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBX
ZWJHTEFueSBiaW5kaW5nID0gbV9jb250ZXh0LmdldFBhcmFtZXRlcihwbmFtZSk7CiAgICAgICAg
IGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQklORElORykKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxXZWJHTEZyYW1l
YnVmZmVyPj4oYmluZGluZykgJiYgV1RGOjpnZXQ8UmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+Pihi
aW5kaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0
cjxXZWJHTEZyYW1lYnVmZmVyPj4oYmluZGluZykgJiYgV1RGOjpnZXQ8UmVmUHRyPFdlYkdMRnJh
bWVidWZmZXI+PihiaW5kaW5nKTsKICAgICAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4
dEdMOjpSRU5ERVJCVUZGRVJfQklORElORykKLSAgICAgICAgICAgIHJldHVybiBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4+KGJpbmRpbmcpICYmIFdURjo6
Z2V0PFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4+KGJpbmRpbmcpOworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPj4oYmlu
ZGluZykgJiYgV1RGOjpnZXQ8UmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPj4oYmluZGluZyk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBib29sIGhhc0ZyYW1lYnVmZmVyUGFy
YW1ldGVyQXR0YWNobWVudChHQ0dMZW51bSBhdHRhY2htZW50KQogICAgIHsKICAgICAgICAgV2Vi
R0xBbnkgYXR0YWNobWVudFBhcmFtZXRlciA9IG1fY29udGV4dC5nZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXIoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBhdHRhY2htZW50
LCBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSk7
Ci0gICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTx1bnNpZ25lZD4oYXR0YWNobWVu
dFBhcmFtZXRlcikpCisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTx1bnNpZ25l
ZD4oYXR0YWNobWVudFBhcmFtZXRlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGlmIChXVEY6OmdldDx1bnNpZ25lZD4oYXR0YWNobWVudFBhcmFtZXRlcikgIT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVIpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc1OCw3ICsxNzU4LDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgc3RkOjpvcHRpb25h
bDxCdWZmZXIKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgV1RGOjp2
aXNpdChbJl0oYXV0byYgZGF0YSkgeworICAgIHN0ZDo6dmlzaXQoWyZdKGF1dG8mIGRhdGEpIHsK
ICAgICAgICAgaWYgKCFidWZmZXItPmFzc29jaWF0ZUJ1ZmZlckRhdGEoZGF0YS5nZXQoKSkpIHsK
ICAgICAgICAgICAgIHRoaXMtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCAiYnVmZmVyRGF0YSIsICJpbnZhbGlkIGJ1ZmZlciIpOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTc4NSw3ICsxNzg1LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFdURjo6dmlzaXQoWyZdKGF1dG8mIGRhdGEp
IHsKKyAgICBzdGQ6OnZpc2l0KFsmXShhdXRvJiBkYXRhKSB7CiAgICAgICAgIGlmICghYnVmZmVy
LT5hc3NvY2lhdGVCdWZmZXJTdWJEYXRhKHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCks
IGRhdGEuZ2V0KCkpKSB7CiAgICAgICAgICAgICB0aGlzLT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImJ1ZmZlclN1YkRhdGEiLCAib2Zmc2V0IG91
dCBvZiByYW5nZSIpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDgxMyw3ICs0ODEzLDcgQEAg
SW50UmVjdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRUZXhJbWFnZVNvdXJjZVNpemUo
VGV4SW1hZ2VTb3VyY2UmIHNvdXJjZSkKICAgICB9CiAgICAgKTsKIAotICAgIEV4Y2VwdGlvbk9y
PEludFJlY3Q+IHJlc3VsdCA9IFdURjo6dmlzaXQodmlzaXRvciwgc291cmNlKTsKKyAgICBFeGNl
cHRpb25PcjxJbnRSZWN0PiByZXN1bHQgPSBzdGQ6OnZpc2l0KHZpc2l0b3IsIHNvdXJjZSk7CiAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHNlbnRpbmVsRW1w
dHlSZWN0KCk7CiAgICAgcmV0dXJuIHJlc3VsdC5yZXR1cm5WYWx1ZSgpOwpAQCAtNTA3NCw3ICs1
MDc0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4
SW1hZ2VTb3VyY2VIZWxwZXIoVGV4SW1hZ2VGdW5jdGkKICNlbmRpZiAvLyBFTkFCTEUoVklERU8p
CiAgICAgKTsKIAotICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIHNvdXJjZSk7CisgICAg
cmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgc291cmNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZUFycmF5QnVmZmVyVmlld0hlbHBlcihUZXhJbWFnZUZ1
bmN0aW9uSUQgZnVuY3Rpb25JRCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwg
UmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJiBwaXhlbHMsIE51bGxEaXNwb3NpdGlvbiBudWxsRGlz
cG9zaXRpb24sIEdDR0x1aW50IHNyY09mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmNwcAppbmRleCA4ODQ0Nzc5ODQwZDYzOGM4OTgwYTY5ODljYmJjNDU0NTY3MTAyZjY5Li40OGI4
NjE1YjA3ZjRhMjM5ZDJhODIyMWM4MWEzMTA1NjcyMDc1NDk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WVFRDdWUuY3BwCkBAIC0zOTMsNyArMzkzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gVlRU
Q3VlOjpzZXRMaW5lKGNvbnN0IExpbmVBbmRQb3NpdGlvblNldHRpbmcmIHBvc2l0aW9uKQogewog
ICAgIGRvdWJsZSBsaW5lUG9zaXRpb24gPSAwOwogCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8QXV0b0tleXdvcmQ+KHBvc2l0aW9uKSkgeworICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPEF1dG9LZXl3b3JkPihwb3NpdGlvbikpIHsKICAgICAgICAgaWYgKHN0ZDo6aXNuYW4o
bV9saW5lUG9zaXRpb24pKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgbGluZVBv
c2l0aW9uID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKQEAgLTQ2
NSw3ICs0NjUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldFBvc2l0aW9uKGNvbnN0
IExpbmVBbmRQb3NpdGlvblNldHRpbmcmIHBvc2l0aW9uKQogICAgIC8vIHBvc2l0aW9uIG11c3Qg
YmUgc2V0IHRvIHRoZSBuZXcgdmFsdWU7IGlmIHRoZSBuZXcgdmFsdWUgaXMgdGhlIHN0cmluZwog
ICAgIC8vICJhdXRvIiwgdGhlbiBpdCBtdXN0IGJlIGludGVycHJldGVkIGFzIHRoZSBzcGVjaWFs
IHZhbHVlIGF1dG8uCiAgICAgZG91YmxlIHRleHRQb3NpdGlvbiA9IDA7Ci0gICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8QXV0b0tleXdvcmQ+KHBvc2l0aW9uKSkgeworICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPEF1dG9LZXl3b3JkPihwb3NpdGlvbikpIHsKICAgICAgICAgaWYg
KHRleHRQb3NpdGlvbklzQXV0bygpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAg
dGV4dFBvc2l0aW9uID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKaW5kZXggNDc2
MWNkNTI4NWM4MGY1ZTE1ZDM3NmQ2YjNmODE0MWQ3MTY5ZWZiOC4uNWIzODQ2YjJiYTVlOTgxZWY0
NmIzNjhkZjU3MTQ2NTQwYmZjZjAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBJbnNwZWN0b3JDYW52YXM6Oklu
c3BlY3RvckNhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogCiBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0KiBJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0NvbnRleHQoKSBjb25zdAog
ewotICAgIGlmIChhdXRvKiBjb250ZXh0V3JhcHBlciA9IFdURjo6Z2V0X2lmPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dD4+KCZtX2NvbnRleHQpKQorICAgIGlm
IChhdXRvKiBjb250ZXh0V3JhcHBlciA9IHN0ZDo6Z2V0X2lmPHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dD4+KCZtX2NvbnRleHQpKQogICAgICAgICByZXR1cm4g
JmNvbnRleHRXcmFwcGVyLT5nZXQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTEyNCw3
ICsxMjQsNyBAQCBIVE1MQ2FudmFzRWxlbWVudCogSW5zcGVjdG9yQ2FudmFzOjpjYW52YXNFbGVt
ZW50KCkgY29uc3QKICAgICAgICAgICAgIGlmIChpczxIVE1MQ2FudmFzRWxlbWVudD4oY29udGV4
dC5jYW52YXNCYXNlKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTENh
bnZhc0VsZW1lbnQ+KGNvbnRleHQuY2FudmFzQmFzZSgpKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICB9LCBbXSAoTW9ub3N0YXRlKSAtPiBIVE1MQ2FudmFzRWxlbWVudCog
eworICAgICAgICB9LCBbXSAoc3RkOjptb25vc3RhdGUpIC0+IEhUTUxDYW52YXNFbGVtZW50KiB7
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9CkBAIC0xMzgsNyArMTM4LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogSW5zcGVjdG9yQ2FudmFzOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAg
ICAgICAgW10gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dD4g
Y29udGV4dFdyYXBwZXIpIHsKICAgICAgICAgICAgIGF1dG8mIGNvbnRleHQgPSBjb250ZXh0V3Jh
cHBlci5nZXQoKTsKICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNhbnZhc0Jhc2UoKS5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgIH0sIFtdIChNb25vc3RhdGUpIC0+IFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHsKKyAgICAgICAgfSwgW10gKHN0ZDo6bW9ub3N0YXRlKSAtPiBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CkBAIC0xNjgsNyArMTY4
LDcgQEAgSlNDOjpKU1ZhbHVlIEluc3BlY3RvckNhbnZhczo6cmVzb2x2ZUNvbnRleHQoSlNDOjpK
U0dsb2JhbE9iamVjdCogZXhlYykgY29uc3QKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIEpT
Qzo6SlNWYWx1ZSgpOwogICAgICAgICB9LAotICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CisgICAg
ICAgIFtdIChzdGQ6Om1vbm9zdGF0ZSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlKCk7CiAgICAgICAgIH0KQEAgLTE4
Miw3ICsxODIsNyBAQCBIYXNoU2V0PEVsZW1lbnQqPiBJbnNwZWN0b3JDYW52YXM6OmNsaWVudE5v
ZGVzKCkgY29uc3QKICAgICAgICAgICAgIGF1dG8mIGNvbnRleHQgPSBjb250ZXh0V3JhcHBlci5n
ZXQoKTsKICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNhbnZhc0Jhc2UoKS5jc3NDYW52YXND
bGllbnRzKCk7CiAgICAgICAgIH0sCi0gICAgICAgIFtdIChNb25vc3RhdGUpIHsKKyAgICAgICAg
W10gKHN0ZDo6bW9ub3N0YXRlKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgIHJldHVybiBIYXNoU2V0PEVsZW1lbnQqPigpOwogICAgICAgICB9CkBAIC04
OTEsNyArODkxLDcgQEAgUmVmPFByb3RvY29sOjpDYW52YXM6OkNhbnZhcz4gSW5zcGVjdG9yQ2Fu
dmFzOjpidWlsZE9iamVjdEZvckNhbnZhcyhib29sIGNhcHR1cmUKICAgICAgICAgICAgICAgICBy
ZXR1cm4gUHJvdG9jb2w6OkNhbnZhczo6Q29udGV4dFR5cGU6OldlYkdMMjsKICNlbmRpZgogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfSwgW10gKE1vbm9zdGF0ZSkg
LT4gQ29udGV4dFR5cGVUeXBlIHsKKyAgICAgICAgfSwgW10gKHN0ZDo6bW9ub3N0YXRlKSAtPiBD
b250ZXh0VHlwZVR5cGUgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CkBAIC05MTcsNyArOTE3LDcg
QEAgUmVmPFByb3RvY29sOjpDYW52YXM6OkNhbnZhcz4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZE9i
amVjdEZvckNhbnZhcyhib29sIGNhcHR1cmUKICAgICBhdXRvIGNvbnRleHRBdHRyaWJ1dGVzID0g
V1RGOjpzd2l0Y2hPbihtX2NvbnRleHQsCiAgICAgICAgIFtdIChzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPENhbnZhc1JlbmRlcmluZ0NvbnRleHQ+IGNvbnRleHRXcmFwcGVyKSB7CiAgICAgICAgICAg
ICByZXR1cm4gYnVpbGRPYmplY3RGb3JDYW52YXNDb250ZXh0QXR0cmlidXRlcyhjb250ZXh0V3Jh
cHBlcik7Ci0gICAgICAgIH0sIFtdIChNb25vc3RhdGUpIC0+IFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDYW52YXM6OkNvbnRleHRBdHRyaWJ1dGVzPiB7CisgICAgICAgIH0sIFtdIChzdGQ6
Om1vbm9zdGF0ZSkgLT4gUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6Q29udGV4
dEF0dHJpYnV0ZXM+IHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KQEAgLTEwMzYsOCArMTAzNiw4IEBAIGlu
dCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFyaWFudCBkYXRh
KQogICAgICAgICBpZiAoZGF0YSA9PSBpdGVtKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICAgICAgYXV0byB0cmFjZUEgPSBXVEY6OmdldF9pZjxSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
Pj4oJmRhdGEpOwotICAgICAgICBhdXRvIHRyYWNlQiA9IFdURjo6Z2V0X2lmPFJlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+PigmaXRlbSk7CisgICAgICAgIGF1dG8gdHJhY2VBID0gc3RkOjpnZXRfaWY8
UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4+KCZkYXRhKTsKKyAgICAgICAgYXV0byB0cmFjZUIgPSBz
dGQ6OmdldF9pZjxSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPj4oJml0ZW0pOwogICAgICAgICBpZiAo
dHJhY2VBICYmICp0cmFjZUEgJiYgdHJhY2VCICYmICp0cmFjZUIpCiAgICAgICAgICAgICByZXR1
cm4gKCp0cmFjZUEpLT5pc0VxdWFsKCgqdHJhY2VCKS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaAppbmRleCA0OWFhZWM1MzQ2ZTQ3OTc3ZmJkNGVi
ZGU2ZTc1NjIyMjliYWI3MmZhLi4yODgxZjFhMDRmODY4ZDlkMWU5M2EzOTBkZTk2NjFlZTA2ZWY1
Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oCkBAIC0x
NDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKIAogICAgIFZhcmlhbnQ8CiAgICAgICAgIHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dD4sCi0gICAgICAgIE1vbm9zdGF0
ZQorICAgICAgICBzdGQ6Om1vbm9zdGF0ZQogICAgID4gbV9jb250ZXh0OwogCiAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBtX2luaXRpYWxT
dGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFk
ZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQ
cm9ncmFtLmNwcAppbmRleCA4NDQ0YjQ3MTY2NzY1Y2M4M2Y1NjU4Y2ZjODljZGI1NDBkZWNkNDYx
Li43ZTEzMzQwOTk2MWRhZTQ1MTkwZmI5ZTQ1YTM5ZGI4MmY2MDFlNDQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCkBAIC02
Niw3ICs2Niw3IEBAIEluc3BlY3RvclNoYWRlclByb2dyYW06Okluc3BlY3RvclNoYWRlclByb2dy
YW0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBJbnNwZWN0b3JDCiAjaWYgRU5BQkxFKFdFQkdMKQog
V2ViR0xQcm9ncmFtKiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpwcm9ncmFtKCkgY29uc3QKIHsK
LSAgICBpZiAoYXV0byogcHJvZ3JhbVdyYXBwZXIgPSBXVEY6OmdldF9pZjxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPFdlYkdMUHJvZ3JhbT4+KCZtX3Byb2dyYW0pKQorICAgIGlmIChhdXRvKiBwcm9n
cmFtV3JhcHBlciA9IHN0ZDo6Z2V0X2lmPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR0xQcm9n
cmFtPj4oJm1fcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiAmcHJvZ3JhbVdyYXBwZXItPmdldCgp
OwogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtMTAzLDcgKzEwMyw3IEBAIFN0cmluZyBJbnNw
ZWN0b3JTaGFkZXJQcm9ncmFtOjpyZXF1ZXN0U2hhZGVyU291cmNlKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNhbnZhczo6CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH0sCiAj
ZW5kaWYKLSAgICAgICAgWyZdIChNb25vc3RhdGUpIHsKKyAgICAgICAgWyZdIChzdGQ6Om1vbm9z
dGF0ZSkgewogI2lmIEVOQUJMRShXRUJHTCkKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogI2VuZGlmCkBAIC0xMzQsNyArMTM0LDcgQEAgYm9vbCBJbnNwZWN0b3JTaGFkZXJQcm9n
cmFtOjp1cGRhdGVTaGFkZXIoSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXAK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBb
Jl0gKE1vbm9zdGF0ZSkgeworICAgICAgICBbJl0gKHN0ZDo6bW9ub3N0YXRlKSB7CiAjaWYgRU5B
QkxFKFdFQkdMKQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKQEAg
LTE1Miw3ICsxNTIsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJQ
cm9ncmFtPiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpidWlsZE9iagogICAgICAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbVR5cGU6OlJlbmRlcjsKICAg
ICAgICAgfSwKICNlbmRpZgotICAgICAgICBbJl0gKE1vbm9zdGF0ZSkgLT4gUHJvZ3JhbVR5cGVU
eXBlIHsKKyAgICAgICAgWyZdIChzdGQ6Om1vbm9zdGF0ZSkgLT4gUHJvZ3JhbVR5cGVUeXBlIHsK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRl
clByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9n
cmFtLmgKaW5kZXggYzkyZGViYjc3Y2M0NTE4YzQxNWJkM2FmYjMwM2IyZjM3MTRjMjhhNy4uOGRk
OTgyYWQyMGM3N2MwNGExZWI4ZDRhYjhhZTRiNGExYWNlYTQ4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oCkBAIC03Nyw3ICs3Nyw3
IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICBzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFdlYkdMUHJvZ3JhbT4sCiAjZW5kaWYKLSAgICAgICAgV1RGOjpNb25vc3RhdGUKKyAg
ICAgICAgc3RkOjptb25vc3RhdGUKICAgICA+IG1fcHJvZ3JhbTsKIAogICAgIGJvb2wgbV9kaXNh
YmxlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDdmODA2ZDRmYzgxY2Qy
YjA0MzIyYjNkMGQ4MGJlNDQ0MDRiYmQwNmUuLjcxZTlhZDYxMTg1ZjRjYzJlNWM3NzA5NjkxMDYx
ZTVlYzJhYTVmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAg
cHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgYXV0byByZXN1bHRWYWx1ZSA9IHJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZlB0cjxJREJEYXRhYmFzZT4+KHJlc3VsdFZhbHVlKSkgeworICAgICAgICBpZiAoIXN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPElEQkRhdGFiYXNlPj4ocmVzdWx0VmFsdWUpKSB7CiAg
ICAgICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2UtPnJlcXVlc3RDYWxsYmFjaygpLnNl
bmRGYWlsdXJlKCJVbmV4cGVjdGVkIHJlc3VsdCB0eXBlLiIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0xNjcsNyArMTY3LDcgQEAgc3RhdGljIFJlZjxQcm90b2NvbDo6SW5k
ZXhlZERCOjpLZXlQYXRoPiBrZXlQYXRoRnJvbUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb24K
ICAgICAgICAga2V5UGF0aC0+c2V0QXJyYXkoV1RGTW92ZShhcnJheSkpOwogICAgICAgICByZXR1
cm4ga2V5UGF0aDsKICAgICB9KTsKLSAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBpZGJL
ZXlQYXRoLnZhbHVlKCkpOworICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIGlkYktleVBh
dGgudmFsdWUoKSk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0
aW9uRm9yRGF0YWJhc2UoSURCRGF0YWJhc2UqIGlkYkRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG9i
amVjdFN0b3JlTmFtZSwgSURCVHJhbnNhY3Rpb25Nb2RlIG1vZGUgPSBJREJUcmFuc2FjdGlvbk1v
ZGU6OlJlYWRvbmx5KQpAQCAtMzYyLDcgKzM2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgYXV0byByZXN1bHRWYWx1ZSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxJREJDdXJz
b3I+PihyZXN1bHRWYWx1ZSkpIHsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZlB0cjxJREJDdXJzb3I+PihyZXN1bHRWYWx1ZSkpIHsKICAgICAgICAgICAgIGVuZChmYWxz
ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKaW5kZXggNjZmYTE3
YWRmN2FkY2YyMDFkZGZhYzc3N2M4NjljNDNlMDBjY2EzMC4uZTA2ZGU4MjUyNGNhNjRiYmY1NzA5
MWViYjg0MDdkY2NlZWZiYzgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKQEAgLTI0NCw3ICsyNDQsNyBAQCBpbmxp
bmUgY29uc3QgUmVuZGVyT2JqZWN0JiBCb3g6OnJlbmRlcmVyKCkgY29uc3QKIAogaW5saW5lIGNv
bnN0IExlZ2FjeUlubGluZUJveCogQm94OjpsZWdhY3lJbmxpbmVCb3goKSBjb25zdAogewotICAg
IGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxCb3hMZWdhY3lQYXRoPihtX3BhdGhWYXJpYW50
KSkKKyAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Qm94TGVnYWN5UGF0aD4obV9wYXRo
VmFyaWFudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBXVEY6OmdldDxC
b3hMZWdhY3lQYXRoPihtX3BhdGhWYXJpYW50KS5sZWdhY3lJbmxpbmVCb3goKTsKIH0KQEAgLTI1
Miw3ICsyNTIsNyBAQCBpbmxpbmUgY29uc3QgTGVnYWN5SW5saW5lQm94KiBCb3g6OmxlZ2FjeUlu
bGluZUJveCgpIGNvbnN0CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiBp
bmxpbmUgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94KiBCb3g6OmlubGluZUJveCgpIGNvbnN0CiB7
Ci0gICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEJveE1vZGVyblBhdGg+KG1fcGF0aFZh
cmlhbnQpKQorICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxCb3hNb2Rlcm5QYXRoPiht
X3BhdGhWYXJpYW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuICZXVEY6
OmdldDxCb3hNb2Rlcm5QYXRoPihtX3BhdGhWYXJpYW50KS5ib3goKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCBkZTk0MDA2
MTlmNTJiYjE3N2YxYTdhYWYxMjc1NTU1YzVlZmE4MTQ4Li41MzZmZmY5YTNhOTljYjA2NmEwNGM5
YjhhNzRkYmQ2YjgxYjhmMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC0zNSwxMCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgVmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiBjb3B5UGxh
dGZvcm1EYXRhKGNvbnN0IFZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIG90aGVy
KQogewotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4ob3RoZXIpKQorICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4ob3RoZXIpKQogICAgICAgICByZXR1
cm4geyBXVEY6OmdldDxTdHJpbmc+KG90aGVyKSB9OwogCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG90aGVyKSkKKyAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpKQogICAgICAgICByZXR1cm4geyBX
VEY6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OwogCiAgICAgcmV0
dXJuIHsgfTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAg
ICAgIGlmIChlbnRyeS50eXBlICE9IHR5cGUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZW50cnku
cGxhdGZvcm1EYXRhKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNo
YXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gV1RG
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigpOwog
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjIyLDcgKzIyMiw3IEBAIFN0cmluZyBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAg
ICAgICAgIGlmIChlbnRyeS50eXBlICE9IHR5cGUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGVudHJ5LnBsYXRmb3Jt
RGF0YSkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZW50cnku
cGxhdGZvcm1EYXRhKSkKICAgICAgICAgICAgIHJldHVybiBXVEY6OmdldDxTdHJpbmc+KGVudHJ5
LnBsYXRmb3JtRGF0YSk7CiAKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTI0OCw3ICsyNDgsNyBA
QCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoVHlwZShGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIGZ1bmN0aW9uKQogdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9y
RWFjaFBsYXRmb3JtU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZW50
cnkgOiBtX2RhdGEpIHsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmlu
Zz4oZW50cnkucGxhdGZvcm1EYXRhKSkKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4oZW50cnkucGxhdGZvcm1EYXRhKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIGF1dG8gc3RyaW5nID0gV1RGOjpnZXQ8U3RyaW5nPihlbnRyeS5wbGF0Zm9ybURh
dGEpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVh
Y2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyCiB7CiAgICAg
Zm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBhdXRvJiBkYXRhID0gZW50cnku
cGxhdGZvcm1EYXRhOwotICAgICAgICBpZiAoKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihkYXRhKSAmJiAhV1RGOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgIGlmICgoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICFXVEY6OmdldDxTdHJpbmc+KGRh
dGEpLmlzTnVsbCgpKSB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihkYXRhKSkKICAgICAgICAgICAgIGZ1bmN0aW9uKGVudHJ5LnR5cGUsIGRhdGEpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGM3OTQ0NjFh
MjNjMzQwYWNiYjczMzE1MGMyNmI1MDg1MTY1YjRkYzUuLmVhMDUyYWY0ZmU5ZThhZWVmMTRmZjZj
NTczMjMyZWI3ZDQ2ZjkyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnRh
a2VEYXRhKCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb21i
aW5lZERhdGE7Ci0gICAgaWYgKGhhc09uZVNlZ21lbnQoKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPFZlY3Rvcjx1aW50OF90Pj4obV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURh
dGEpKQorICAgIGlmIChoYXNPbmVTZWdtZW50KCkgJiYgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxW
ZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkK
ICAgICAgICAgY29tYmluZWREYXRhID0gc3RkOjpleGNoYW5nZShXVEY6OmdldDxWZWN0b3I8dWlu
dDhfdD4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSwgVmVjdG9yPHVp
bnQ4X3Q+KCkpOwogICAgIGVsc2UKICAgICAgICAgY29tYmluZWREYXRhID0gY29tYmluZVNlZ21l
bnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwpAQCAtMzU1LDEyICszNTUsMTIgQEAgY29uc3Qg
dWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAgICAgICAg
IFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50
OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9
LAogICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3Qq
IHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQogICAgICk7Ci0gICAgcmV0dXJuIFdURjo6dmlz
aXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKKyAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNp
dG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCiBib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURh
dGEpOworICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOwogfQogCiAjaWYgIVVTRShDRikKQEAgLTQzOSw3
ICs0MzksNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0
CiAgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBz
aXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCiAgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVy
JiBwcm92aWRlcikgLT4gc2l6ZV90IHsgcmV0dXJuIHByb3ZpZGVyLnNpemUoKTsgfQogICAgICk7
Ci0gICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKKyAgICBy
ZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCiBTaGFyZWRC
dWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAppbmRleCA3OGUxY2I0
Y2U4NzE5N2U0NjdjMTZjMTRjYmU2MjEzNmIwZmU2OWQ5Li42YjY2MjE3ZmYxNjFkZTM3NGYxY2Uz
MWQ1ZDM0NjM0MGJiMmZjYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hh
cmVkQnVmZmVyQ0YuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKENGRGF0YVJlZiBkYXRhKQogUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVDRkRhdGEoKSBjb25zdAogewogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7
Ci0gICAgICAgIGlmIChhdXRvKiBkYXRhID0gV1RGOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJl
Zj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCisgICAgICAgIGlm
IChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21l
bnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gKmRh
dGE7CiAgICAgfQogICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxl
KG51bGxwdHIsIHNpemUoKSkpOwpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogICAgIGZvciAoY29uc3QgYXV0byYg
ZW50cnkgOiBtX3NlZ21lbnRzKSB7CiAgICAgICAgIGlmIChlbnRyeS5zZWdtZW50LT5oYXNPbmVS
ZWYoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBXVEY6OmdldF9pZjxSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPj4oJmVudHJ5LnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCisgICAgICAg
ICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+Pigm
ZW50cnkuc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgICAgICBPU0FsbG9j
YXRvcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oY29uc3RfY2FzdDxVSW50OCo+KENGRGF0YUdl
dEJ5dGVQdHIoZGF0YS0+Z2V0KCkpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEtPmdldCgpKSk7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAppbmRleCBlNTU1MWM0OTNjNDVmMjA1MDEzNzRm
NGQ4YWQ5MmNmOGQyMmRhYjlmLi5kNjQ1MDYzODFkNmZiZTk2YmM2NDE5NDVkNzNkMWI4ZDcwOGU1
ZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVj
b2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWREZWNvZGVyR2VuZXJpYy5jcHAKQEAgLTIyMyw3ICsyMjMsNyBAQCBjb25zdCBUKiBLZXllZERl
Y29kZXJHZW5lcmljOjpnZXRQb2ludGVyRnJvbURpY3Rpb25hcnlTdGFjayhjb25zdCBTdHJpbmcm
IGtleSkKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIFdURjo6Z2V0X2lmPFQ+KG5vZGUpOworICAgIHJldHVybiBzdGQ6OmdldF9pZjxUPihub2Rl
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgKaW5kZXggMDM3OGU4ZDU1YmU3MGFlMTRm
ZDk3YjQxMzA4OWNhMDNkYTUzMDliOC4uY2EwNjVjMzYyMWU2YzZkMmU1MTUwNTk4ODg2YTExMDIz
YWUxNTQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVj
b2RpbmdPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVj
b2RpbmdPcHRpb25zLmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiAgICAgYm9vbCBoYXMoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8VD4obV9kZWNvZGluZ01vZGVPclNpemUpOworICAgICAg
ICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxUPihtX2RlY29kaW5nTW9kZU9yU2l6ZSk7
CiAgICAgfQogCiAgICAgYm9vbCBoYXNEZWNvZGluZ01vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAppbmRl
eCBjZGY4YmE1MTY0NmVjOTA2ZGRmMDA1YTAxZmY2ZjY4ZWZlYmY0MmI3Li5hMjQyZDM2NWY4OWRi
YTljN2RhZDgwZjY5ODdjYjQ1ZGZjZjRhZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcApAQCAtMTYxLDcgKzE2MSw3
IEBAIHN0YXRpYyBGb250UmFuZ2VzIHJlYWxpemVOZXh0RmFsbGJhY2soY29uc3QgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICByZXR1cm4gZm9udEZhbWls
eVNwZWNpZmljYXRpb24uZm9udFJhbmdlcyhkZXNjcmlwdGlvbik7CiAgICAgICAgIH0pOwogICAg
ICAgICBjb25zdCBhdXRvJiBjdXJyZW50RmFtaWx5ID0gZGVzY3JpcHRpb24uZWZmZWN0aXZlRmFt
aWx5QXQoaW5kZXgrKyk7Ci0gICAgICAgIGF1dG8gcmFuZ2VzID0gV1RGOjp2aXNpdCh2aXNpdG9y
LCBjdXJyZW50RmFtaWx5KTsKKyAgICAgICAgYXV0byByYW5nZXMgPSBzdGQ6OnZpc2l0KHZpc2l0
b3IsIGN1cnJlbnRGYW1pbHkpOwogICAgICAgICBpZiAoIXJhbmdlcy5pc051bGwoKSkKICAgICAg
ICAgICAgIHJldHVybiByYW5nZXM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW5saW5lUGF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0lubGluZVBhdGhEYXRhLmgKaW5kZXggMGVmYzk4ZTMyNzcwMmEzNDVmYWM2
Yjc5Nzc1ODMxZmZmYjc4YTZjNS4uMDMyYmJhODljMDFjOThjMzM5YjRhNzVjMWVhNThhOTRiNGNk
ZTBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5saW5l
UGF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmxpbmVQ
YXRoRGF0YS5oCkBAIC0yMDIsNyArMjAyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rk
OjpvcHRpb25hbDxCZXppZXJDdXJ2ZURhdGE+IEJlemllckN1cnZlRGF0YTo6ZGVjb2RlKEQKICAg
ICByZXR1cm4gZGF0YTsKIH0KIAotdXNpbmcgSW5saW5lUGF0aERhdGEgPSBWYXJpYW50PE1vbm9z
dGF0ZSwgTW92ZURhdGEsIExpbmVEYXRhLCBBcmNEYXRhLCBRdWFkQ3VydmVEYXRhLCBCZXppZXJD
dXJ2ZURhdGE+OwordXNpbmcgSW5saW5lUGF0aERhdGEgPSBWYXJpYW50PHN0ZDo6bW9ub3N0YXRl
LCBNb3ZlRGF0YSwgTGluZURhdGEsIEFyY0RhdGEsIFF1YWRDdXJ2ZURhdGEsIEJlemllckN1cnZl
RGF0YT47CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aC5oCmluZGV4IDA2YTJjNGM3ZjJjYjk0YjVmYmIyZmU2MmM3MzViYmQ5ZjQ1
MDE4ZTguLjJkMDFjNTZhZGU5MGIzZWU4ZGQxMDliNWE5Nzg1ZTE5OTJiOTc3N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKQEAgLTQxOSw3ICs0MTksNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFBhdGg+IFBhdGg6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGF0YVR5cGU+IGlubGluZSBib29s
IFBhdGg6Omhhc0lubGluZURhdGEoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPERhdGFUeXBlPihtX2lubGluZURhdGEpOworICAgIHJldHVybiBzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPERhdGFUeXBlPihtX2lubGluZURhdGEpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBEYXRhVHlwZT4gaW5saW5lIGNvbnN0IERhdGFUeXBlJiBQYXRoOjppbmxpbmVEYXRhKCkg
Y29uc3QKQEAgLTQzNCw3ICs0MzQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4gaW5s
aW5lIERhdGFUeXBlJiBQYXRoOjppbmxpbmVEYXRhKCkKIAogaW5saW5lIGJvb2wgUGF0aDo6aGFz
SW5saW5lRGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFoYXNJbmxpbmVEYXRhPE1vbm9zdGF0
ZT4oKTsKKyAgICByZXR1cm4gIWhhc0lubGluZURhdGE8c3RkOjptb25vc3RhdGU+KCk7CiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0aENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5j
cHAKaW5kZXggZjMzZGNlOTE2ZGViMzZlOWIyNTJhMjViODI4NGVkNWQxYThhYjFkNy4uZDY4OWE1
MWE4OTEwMmE1MDkwNDU1OWI0NDIyMzY5ZGUxNDcwMzMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQg
UGF0aDo6Y3JlYXRlQ0dQYXRoKCkgY29uc3QKICAgICBtX3BhdGggPSBhZG9wdENGKENHUGF0aENy
ZWF0ZU11dGFibGUoKSk7CiAKICAgICBXVEY6OnN3aXRjaE9uKG1faW5saW5lRGF0YSwKLSAgICAg
ICAgWyZdKE1vbm9zdGF0ZSkgeyB9LCAvLyBTdGFydCB3aXRoIGFuIGVtcHR5IHBhdGguCisgICAg
ICAgIFsmXShzdGQ6Om1vbm9zdGF0ZSkgeyB9LCAvLyBTdGFydCB3aXRoIGFuIGVtcHR5IHBhdGgu
CiAgICAgICAgIFsmXShjb25zdCBNb3ZlRGF0YSYgbW92ZSkgewogICAgICAgICAgICAgQ0dQYXRo
TW92ZVRvUG9pbnQobV9wYXRoLmdldCgpLCBudWxscHRyLCBtb3ZlLmxvY2F0aW9uLngoKSwgbW92
ZS5sb2NhdGlvbi55KCkpOwogICAgICAgICB9LApAQCAtMTM3LDcgKzEzNyw3IEBAIFBsYXRmb3Jt
UGF0aFB0ciBQYXRoOjplbnN1cmVQbGF0Zm9ybVBhdGgoKQogICAgICAgICAgICAgbV9wYXRoID0g
YWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlQ29weShtX3BhdGguZ2V0KCkpKTsKICAgICAgICAg
bV9jb3B5UGF0aEJlZm9yZU11dGF0aW9uID0gZmFsc2U7CiAgICAgfQotICAgIG1faW5saW5lRGF0
YSA9IE1vbm9zdGF0ZSB7IH07CisgICAgbV9pbmxpbmVEYXRhID0gc3RkOjptb25vc3RhdGUgeyB9
OwogICAgIHJldHVybiBtX3BhdGguZ2V0KCk7CiB9CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBQYXRo
OjpQYXRoKGNvbnN0IFBhdGgmIG90aGVyKQogCiBQYXRoOjpQYXRoKFBhdGgmJiBvdGhlcikKICAg
ICA6IG1fcGF0aChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fcGF0aCwgbnVsbHB0cikpCi0gICAgLCBt
X2lubGluZURhdGEoc3RkOjpleGNoYW5nZShvdGhlci5tX2lubGluZURhdGEsIE1vbm9zdGF0ZSB7
IH0pKQorICAgICwgbV9pbmxpbmVEYXRhKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pbmxpbmVEYXRh
LCBzdGQ6Om1vbm9zdGF0ZSB7IH0pKQogICAgICwgbV9jb3B5UGF0aEJlZm9yZU11dGF0aW9uKHN0
ZDo6ZXhjaGFuZ2Uob3RoZXIubV9jb3B5UGF0aEJlZm9yZU11dGF0aW9uLCBmYWxzZSkpCiB7CiB9
CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBQYXRoOjp0cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiB0cmFuc2Zvcm0pCiAjZW5kaWYKICAgICBtX3BhdGggPSBXVEZNb3ZlKHBhdGgpOwog
ICAgIG1fY29weVBhdGhCZWZvcmVNdXRhdGlvbiA9IGZhbHNlOwotICAgIG1faW5saW5lRGF0YSA9
IE1vbm9zdGF0ZSB7IH07CisgICAgbV9pbmxpbmVEYXRhID0gc3RkOjptb25vc3RhdGUgeyB9Owog
fQogCiBzdGF0aWMgaW5saW5lIEZsb2F0UmVjdCB6ZXJvUmVjdElmTnVsbChDR1JlY3QgcmVjdCkK
QEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIFBhdGg6OmNsZWFyKCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9wYXRoLmNsZWFyKCk7Ci0gICAgbV9pbmxpbmVEYXRhID0gTW9ub3N0YXRlIHsgfTsK
KyAgICBtX2lubGluZURhdGEgPSBzdGQ6Om1vbm9zdGF0ZSB7IH07CiAgICAgbV9jb3B5UGF0aEJl
Zm9yZU11dGF0aW9uID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKaW5kZXggYWMxY2NkZGE2OWU1M2VkNmY5NDZhZTM2MTM3NTZhN2VmZjNj
MzA3My4uYzEzOWU1MDk0ODUxODBiOWViZDkwMTcyNzJiZTk2YWE1MjI2NzVmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTY0Miw3ICs2NDIsNyBA
QCBib29sIEl0ZW1IYW5kbGU6OnNhZmVDb3B5KEl0ZW1UeXBlIGl0ZW1UeXBlLCBJdGVtSGFuZGxl
IGRlc3RpbmF0aW9uKSBjb25zdAogCiBib29sIHNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGluYXRp
b24sIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgc291cmNlKQogewotICAgIHJldHVybiBXVEY6OnZp
c2l0KFsmXShjb25zdCBhdXRvJiBzb3VyY2UpIHsKKyAgICByZXR1cm4gc3RkOjp2aXNpdChbJl0o
Y29uc3QgYXV0byYgc291cmNlKSB7CiAgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0SXRlbVR5cGUg
PSB0eXBlbmFtZSBXVEY6OlJlbW92ZUNWQW5kUmVmZXJlbmNlPGRlY2x0eXBlKHNvdXJjZSk+Ojp0
eXBlOwogICAgICAgICBjb25zdGV4cHIgYXV0byBpdGVtVHlwZSA9IERpc3BsYXlMaXN0SXRlbVR5
cGU6Oml0ZW1UeXBlOwogICAgICAgICBkZXN0aW5hdGlvbi5kYXRhWzBdID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oaXRlbVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUu
Y3BwCmluZGV4IDQyNjQ0ZTE2NDJjZTJkYWIwNzVlMmFjN2Q0OTUxYzA3OWMyZGE3ODAuLjI0NGUw
ZTM1YzEyNzU2MjA5NjljNWFiYTU4NjQyMDUxOGFlNGVkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBzaXplX3QgcGFkZGVk
U2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5cGUpCiAKIHNpemVfdCBwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlz
dEl0ZW0pCiB7Ci0gICAgYXV0byBpdGVtU2l6ZSA9IFdURjo6dmlzaXQoW10oY29uc3QgYXV0byYg
aXRlbSkgeworICAgIGF1dG8gaXRlbVNpemUgPSBzdGQ6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGl0
ZW0pIHsKICAgICAgICAgcmV0dXJuIHNpemVvZihpdGVtKTsKICAgICB9LCBkaXNwbGF5TGlzdEl0
ZW0pOwogICAgIHJldHVybiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihh
bGlnbm9mKHVpbnQ2NF90KSwgaXRlbVNpemUpOwpAQCAtMjgxLDcgKzI4MSw3IEBAIHNpemVfdCBw
YWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNw
bGF5TGlzdEl0ZW0pCiAKIEl0ZW1UeXBlIGRpc3BsYXlMaXN0SXRlbVR5cGUoY29uc3QgRGlzcGxh
eUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pCiB7Ci0gICAgcmV0dXJuIFdURjo6dmlzaXQoW10o
Y29uc3QgYXV0byYgaXRlbSkgeworICAgIHJldHVybiBzdGQ6OnZpc2l0KFtdKGNvbnN0IGF1dG8m
IGl0ZW0pIHsKICAgICAgICAgcmV0dXJuIGl0ZW0uaXRlbVR5cGU7CiAgICAgfSwgZGlzcGxheUxp
c3RJdGVtKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgK
aW5kZXggOTVlMTg1NWM3NTIzNTk2M2MzMThjM2Q0NTE4NzA0ZTk4OWNjMDMyOC4uNDM2NjQ5YTI3
YmY0OGYyMWMwZTljZWFjOWNkYWUwNGY4YWZhZjIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFw
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkZWxldGVBbGxGb250cygpCiAgICAgewogICAgICAgICBtX3Jlc291cmNlcy5yZW1vdmVJ
ZihbXSAoY29uc3QgYXV0byYgcmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZlB0cjxGb250Pj4ocmVzb3VyY2UudmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPEZvbnQ+PihyZXNvdXJjZS52
YWx1ZSk7CiAgICAgICAgIH0pOwogICAgICAgICBtX2ZvbnRDb3VudCA9IDA7CiAgICAgfQpAQCAt
MTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291
cmNlcy5maW5kKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChpdGVy
YXRvciA9PSBtX3Jlc291cmNlcy5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFQ+PihpdGVyYXRvci0+
dmFsdWUpKQorICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFQ+Pihp
dGVyYXRvci0+dmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJl
dHVybiBXVEY6OmdldDxSZWZQdHI8VD4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7CiAgICAgfQpA
QCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jl
c291cmNlcy5maW5kKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChp
dGVyYXRvciA9PSBtX3Jlc291cmNlcy5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxUPj4oaXRlcmF0b3It
PnZhbHVlKSkKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxUPj4o
aXRlcmF0b3ItPnZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYXV0
byByZXN1bHQgPSBtX3Jlc291cmNlcy5yZW1vdmUoaXRlcmF0b3IpOwogICAgICAgICBBU1NFUlQo
cmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuY3BwCmluZGV4IGNmODIw
ZDE2NWIzZDBkMGU1YjhkMDU4YTU2MmIzNDkxNDEzODgyMGEuLmFlNzU3ZDFiNzRlMjY5NjY5OWNk
OWVlN2M2ZDc3YzcwZmQ0ZDdkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5
LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIGJvb2wgQ0RNUHJveHlDbGVhcktleTo6Y2VuY1NldERl
Y3J5cHRpb25LZXkoY2VuY0RlY3J5cHRDb250ZXh0JiBpbikKICAgICBpZiAoIWtleURhdGEpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PFZlY3Rvcjx1aW50OF90Pj4oa2V5RGF0YS52YWx1ZSgpKSk7CisgICAgQVNTRVJUKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihrZXlEYXRhLnZhbHVlKCkpKTsKICAgICBh
dXRvJiBrZXlEYXRhVmFsdWUgPSBXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGtleURhdGEudmFs
dWUoKSk7CiAKICAgICBpZiAoZ2NyeV9lcnJvcl90IGNpcGhlckVycm9yID0gZ2NyeV9jaXBoZXJf
c2V0a2V5KGdDcnlwdEhhbmRsZSgpLCBrZXlEYXRhVmFsdWUuZGF0YSgpLCBrZXlEYXRhVmFsdWUu
c2l6ZSgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1Qcm94eVRodW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eVRodW5kZXIuY3BwCmluZGV4IDBlOTFk
ZjFkMmU2ZTY3NDIwYWI5OWZiYzliMjU3ZTBiZDVkY2NjZGEuLjM1OGZmYzlhN2E1Yjc5YmMwNzNi
MWIyZWVlYmQ0M2JhNDQ2YzE4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5VGh1bmRlci5j
cHAKQEAgLTU5LDcgKzU5LDcgQEAgQm94UHRyPE9wZW5DRE1TZXNzaW9uPiBDRE1Qcm94eVRodW5k
ZXI6OmdldERlY3J5cHRpb25TZXNzaW9uKERlY3J5cHRpb25Db250ZXh0JgogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIEtleUhhbmRsZVZhbHVlVmFyaWFudCBrZXlEYXRhID0ga2V5SGFu
ZGxlLnZhbHVlKCktPnZhbHVlKCk7Ci0gICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
Qm94UHRyPE9wZW5DRE1TZXNzaW9uPj4oa2V5RGF0YSkpOworICAgIEFTU0VSVChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPEJveFB0cjxPcGVuQ0RNU2Vzc2lvbj4+KGtleURhdGEpKTsKIAogICAgIEJv
eFB0cjxPcGVuQ0RNU2Vzc2lvbj4ga2V5VmFsdWUgPSBXVEY6OmdldDxCb3hQdHI8T3BlbkNETVNl
c3Npb24+PihrZXlEYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggZGNjYTc2OTE0OTUxZmI4ODg1MWQwODJi
YzQ4NzEyOWQ5NGE4ZjBlMS4uNjY0ZmMxOTQ2MmRhMjJkMjViMWY4YTVjOGViMTZkOThlMmRlNmE3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tCkBAIC02NTYsNyArNjU2LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVt
UHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEK
ICAgICAgICAgaWYgKGNvY29hVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPih2YWx1ZSkpIHsKKyAg
ICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPih2YWx1ZSkpIHsKICAgICAg
ICAgICAgIGlmIChXVEY6OmdldDxTdHJpbmc+KHZhbHVlKS5pc051bGwoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDc5MzA4YjcwNzhkMjUzNmJkNTU0YTYxNDBmZTFm
MjRkYTU2MmY5NTUuLmI1ZDBkMjJiODZmOTI2OTNiODhhM2EwM2UwNDk1NThlYjIzNzI4ZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2Fy
ZE1hYy5tbQpAQCAtMjYzLDEwICsyNjMsMTAgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICBpZiAocGxh
dGZvcm1UeXBlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIp
KSB7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9
IFdURjo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0
YSgpKQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEu
Z2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwotICAgICAgICB9IGVsc2UgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAgICAgfSBlbHNl
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAg
ICAgICAgICAgICBhdXRvIHN0cmluZyA9IFdURjo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIp
OwogICAgICAgICAgICAgaWYgKCEhc3RyaW5nKQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9h
cmQgc2V0U3RyaW5nOnN0cmluZyBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CkBAIC01MDUsMTAgKzUw
NSwxMCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9h
cmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICBpZiAoIXBsYXRmb3JtVHlw
ZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikp
IHsKICAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IFdURjo6Z2V0PFJlZjxTaGFy
ZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAg
ICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBl
XTsKLSAgICAgICAgfSBlbHNlIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3Ry
aW5nT3JCdWZmZXIpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBX
VEY6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKICAgICAgICAgICAgIGlmICghIXN0cmlu
ZykKICAgICAgICAgICAgICAgICBbaXRlbSBzZXRTdHJpbmc6c3RyaW5nIGZvclR5cGU6cGxhdGZv
cm1UeXBlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01l
ZGlhRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmlj
ZS5oCmluZGV4IGEyM2Q3MDEzMjViZjU3ODdjMDAzZjk5N2JiMTJkMGQ0NzlmYzU0NGUuLjQyNDA2
OTI4ZWU5NWRiMDY1OGVkYmRhZjgyNzdjNzZhNzcwNDRlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaApAQCAtMTYwLDEwICsxNjAsMTAgQEAg
c3RydWN0IE1vY2tEaXNwbGF5UHJvcGVydGllcyB7CiB9OwogCiBzdHJ1Y3QgTW9ja01lZGlhRGV2
aWNlIHsKLSAgICBib29sIGlzTWljcm9waG9uZSgpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzPihwcm9wZXJ0aWVzKTsgfQotICAg
IGJvb2wgaXNTcGVha2VyKCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxN
b2NrU3BlYWtlclByb3BlcnRpZXM+KHByb3BlcnRpZXMpOyB9Ci0gICAgYm9vbCBpc0NhbWVyYSgp
IGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TW9ja0NhbWVyYVByb3BlcnRp
ZXM+KHByb3BlcnRpZXMpOyB9Ci0gICAgYm9vbCBpc0Rpc3BsYXkoKSBjb25zdCB7IHJldHVybiBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPE1vY2tEaXNwbGF5UHJvcGVydGllcz4ocHJvcGVydGllcyk7
IH0KKyAgICBib29sIGlzTWljcm9waG9uZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzPihwcm9wZXJ0aWVzKTsgfQorICAgIGJv
b2wgaXNTcGVha2VyKCkgY29uc3QgeyByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxNb2Nr
U3BlYWtlclByb3BlcnRpZXM+KHByb3BlcnRpZXMpOyB9CisgICAgYm9vbCBpc0NhbWVyYSgpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8TW9ja0NhbWVyYVByb3BlcnRpZXM+
KHByb3BlcnRpZXMpOyB9CisgICAgYm9vbCBpc0Rpc3BsYXkoKSBjb25zdCB7IHJldHVybiBzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPE1vY2tEaXNwbGF5UHJvcGVydGllcz4ocHJvcGVydGllcyk7IH0K
IAogICAgIENhcHR1cmVEZXZpY2UgY2FwdHVyZURldmljZSgpIGNvbnN0CiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcAppbmRleCBmODEyZWY0MzllYzIxZDYzODViYjUyYmUxMjQ4OTFiYzllZjI4YmFiLi41
NjdiNThlYzI1MjJhNGEzOTEwNjAyYmI4ZjcxMzFlMmUwM2FmYTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cApAQCAtNDg1LDcgKzQ4NSw3IEBAIEltYWdlQnVmZmVyKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6aW1hZ2VCdWZmZXIoKSBjb25zdAogCiBib29sIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpt
b2NrRGlzcGxheVR5cGUoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlKSBjb25zdAogewot
ICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNb2NrRGlzcGxheVByb3BlcnRpZXM+KG1f
ZGV2aWNlLnByb3BlcnRpZXMpKQorICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxNb2Nr
RGlzcGxheVByb3BlcnRpZXM+KG1fZGV2aWNlLnByb3BlcnRpZXMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICByZXR1cm4gV1RGOjpnZXQ8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihtX2Rl
dmljZS5wcm9wZXJ0aWVzKS50eXBlID09IHR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXggMzAyMDRhNTI1
OTkxYjJmMGZmZjUyOGJjMDUxYzM2MDc3Njk1MTkxZC4uOTM1YzZkZGVjYjhkNDU4YzkxNjZmNWIy
NjdhYzVjNDk0ZmYzNDNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtOTUsOCArOTUsOCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBkZWxheVNhbXBsZXMoU2Vjb25kcykgZmluYWw7CiAKLSAgICBib29sIG1v
Y2tDYW1lcmEoKSBjb25zdCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1vY2tDYW1l
cmFQcm9wZXJ0aWVzPihtX2RldmljZS5wcm9wZXJ0aWVzKTsgfQotICAgIGJvb2wgbW9ja0Rpc3Bs
YXkoKSBjb25zdCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1vY2tEaXNwbGF5UHJv
cGVydGllcz4obV9kZXZpY2UucHJvcGVydGllcyk7IH0KKyAgICBib29sIG1vY2tDYW1lcmEoKSBj
b25zdCB7IHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPE1vY2tDYW1lcmFQcm9wZXJ0aWVz
PihtX2RldmljZS5wcm9wZXJ0aWVzKTsgfQorICAgIGJvb2wgbW9ja0Rpc3BsYXkoKSBjb25zdCB7
IHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPE1vY2tEaXNwbGF5UHJvcGVydGllcz4obV9k
ZXZpY2UucHJvcGVydGllcyk7IH0KICAgICBib29sIG1vY2tTY3JlZW4oKSBjb25zdCB7IHJldHVy
biBtb2NrRGlzcGxheVR5cGUoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuKTsgfQog
ICAgIGJvb2wgbW9ja1dpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1vY2tEaXNwbGF5VHlwZShDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpXaW5kb3cpOyB9CiAgICAgYm9vbCBtb2NrRGlzcGxheVR5
cGUoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ETlMuaAppbmRleCAzNWJkN2EwMDk0ZjU0NzNkMjlhZjFiYWVmYWZhZGY0YzRjYTk3
ZDM3Li4zNDNmNmU3Y2RiMTUyZmE3N2ZmNDg5MmQ1NWU2ZTNlYjhhMzdiMTA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAg
IHsKICAgICB9CiAKLSAgICBib29sIGlzSVB2NCgpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8c3RydWN0IGluX2FkZHI+KG1fYWRkcmVzcyk7IH0KLSAgICBib29sIGlzSVB2
NigpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RydWN0IGluNl9hZGRy
PihtX2FkZHJlc3MpOyB9CisgICAgYm9vbCBpc0lQdjQoKSBjb25zdCB7IHJldHVybiBzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPHN0cnVjdCBpbl9hZGRyPihtX2FkZHJlc3MpOyB9CisgICAgYm9vbCBp
c0lQdjYoKSBjb25zdCB7IHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0cnVjdCBpbjZf
YWRkcj4obV9hZGRyZXNzKTsgfQogCiAgICAgY29uc3Qgc3RydWN0IGluX2FkZHImIGlwdjRBZGRy
ZXNzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpnZXQ8c3RydWN0IGluX2FkZHI+KG1fYWRkcmVzcyk7
IH0KICAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHImIGlwdjZBZGRyZXNzKCkgY29uc3QgeyByZXR1
cm4gV1RGOjpnZXQ8c3RydWN0IGluNl9hZGRyPihtX2FkZHJlc3MpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGFhNWZhYWI0ZTU3N2M2YmJm
Nzg3Nzk5OTViN2UxZjkxNzZhZWZlOWEuLmIxMDRlN2IxN2ZmMmNkNWQwMjBhNjY4YmJiMDFhYzAw
N2U0YzIxNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgdW5zaWduZWQgRm9ybURhdGE6OmltYWdlT3JNZWRpYUZp
bGVzQ291bnQoKSBjb25zdAogewogICAgIHVuc2lnbmVkIGltYWdlT3JNZWRpYUZpbGVzQ291bnQg
PSAwOwogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKLSAgICAgICAgYXV0
byogZW5jb2RlZEZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVk
RmlsZURhdGE+KCZlbGVtZW50LmRhdGEpOworICAgICAgICBhdXRvKiBlbmNvZGVkRmlsZURhdGEg
PSBzdGQ6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oJmVsZW1lbnQu
ZGF0YSk7CiAgICAgICAgIGlmICghZW5jb2RlZEZpbGVEYXRhKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmREYXRhKGNvbnN0
IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIG1fbGVuZ3RoSW5CeXRlcyA9IHN0ZDo6
bnVsbG9wdDsKICAgICBpZiAoIW1fZWxlbWVudHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8dWludDhfdD4+KCZtX2VsZW1lbnRzLmxh
c3QoKS5kYXRhKSkgeworICAgICAgICBpZiAoYXV0byogdmVjdG9yID0gc3RkOjpnZXRfaWY8VmVj
dG9yPHVpbnQ4X3Q+PigmbV9lbGVtZW50cy5sYXN0KCkuZGF0YSkpIHsKICAgICAgICAgICAgIHZl
Y3Rvci0+YXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIEZv
cm1EYXRhOjphcHBlbmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBET01Gb3JtRGF0
YSYgZm9ybURhdGEpCiAgICAgICAgIFZlY3RvcjxjaGFyPiBoZWFkZXI7CiAgICAgICAgIEZvcm1E
YXRhQnVpbGRlcjo6YmVnaW5NdWx0aVBhcnRIZWFkZXIoaGVhZGVyLCBtX2JvdW5kYXJ5LmRhdGEo
KSwgbm9ybWFsaXplZE5hbWUpOwogCi0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZlB0cjxGaWxlPj4oaXRlbS5kYXRhKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmUHRyPEZpbGU+PihpdGVtLmRhdGEpKQogICAgICAgICAgICAgYXBwZW5kTXVsdGlQ
YXJ0RmlsZVZhbHVlKCpXVEY6OmdldDxSZWZQdHI8RmlsZT4+KGl0ZW0uZGF0YSksIGhlYWRlciwg
ZW5jb2RpbmcpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcHBlbmRNdWx0aVBhcnRTdHJp
bmdWYWx1ZShXVEY6OmdldDxTdHJpbmc+KGl0ZW0uZGF0YSksIGhlYWRlciwgZW5jb2RpbmcpOwpA
QCAtMjc1LDEwICsyNzUsMTAgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kTm9uTXVsdGlQYXJ0S2V5
VmFsdWVQYWlySXRlbXMoY29uc3QgRE9NRm9ybURhdGEmIGZvcm1EYXRhLAogICAgIGZvciAoYXV0
byYgaXRlbSA6IGZvcm1EYXRhLml0ZW1zKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFRoZSBleHBl
Y3RlZCBiZWhhdmlvciBpcyB0byBjb252ZXJ0IGZpbGVzIHRvIHN0cmluZyBmb3IgZW5jdHlwZSAi
dGV4dC9wbGFpbiIuIENvbnZlcnNpb24gbWF5IGJlIGFkZGVkIGF0ICJ2b2lkIERPTUZvcm1EYXRh
OjpzZXQoY29uc3QgU3RyaW5nJiBuYW1lLCBCbG9iJiBibG9iLCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lKSIgb3IgaGVyZS4KICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgZm9sbG93aW5nIGlm
IHN0YXRlbWVudCB3aGVuIGZpeGVkLgotICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8U3RyaW5nPihpdGVtLmRhdGEpKQorICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U3RyaW5nPihpdGVtLmRhdGEpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAot
ICAgICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGl0ZW0uZGF0YSkp
OworICAgICAgICBBU1NFUlQoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGl0ZW0uZGF0
YSkpOwogCiAgICAgICAgIGF1dG8gbm9ybWFsaXplZE5hbWUgPSBub3JtYWxpemVTdHJpbmdEYXRh
KGVuY29kaW5nLCBpdGVtLm5hbWUpOwogICAgICAgICBhdXRvIG5vcm1hbGl6ZWRTdHJpbmdEYXRh
ID0gbm9ybWFsaXplU3RyaW5nRGF0YShlbmNvZGluZywgV1RGOjpnZXQ8U3RyaW5nPihpdGVtLmRh
dGEpKTsKQEAgLTI5Myw3ICsyOTMsNyBAQCBWZWN0b3I8dWludDhfdD4gRm9ybURhdGE6OmZsYXR0
ZW4oKSBjb25zdAogICAgIC8vIENvbmNhdGVuYXRlIGFsbCB0aGUgYnl0ZSBhcnJheXMsIGJ1dCBv
bWl0IGFueSBmaWxlcy4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBmb3IgKGF1dG8m
IGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7Ci0gICAgICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6
OmdldF9pZjxWZWN0b3I8dWludDhfdD4+KCZlbGVtZW50LmRhdGEpKQorICAgICAgICBpZiAoYXV0
byogdmVjdG9yID0gc3RkOjpnZXRfaWY8VmVjdG9yPHVpbnQ4X3Q+PigmZWxlbWVudC5kYXRhKSkK
ICAgICAgICAgICAgIGRhdGEuYXBwZW5kKHZlY3Rvci0+ZGF0YSgpLCB2ZWN0b3ItPnNpemUoKSk7
CiAgICAgfQogICAgIHJldHVybiBkYXRhOwpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lk
IGFwcGVuZEJsb2JSZXNvbHZlZChCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0cnksIEZvcm1E
YXRhJiBmb3JtRGF0CiBib29sIEZvcm1EYXRhOjpjb250YWluc0Jsb2JFbGVtZW50KCkgY29uc3QK
IHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7Ci0gICAgICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhPihl
bGVtZW50LmRhdGEpKQorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGb3JtRGF0
YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YT4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNjcsNyArMzY3LDcgQEAg
Rm9ybURhdGFGb3JVcGxvYWQgRm9ybURhdGE6OnByZXBhcmVGb3JVcGxvYWQoKQogewogICAgIFZl
Y3RvcjxTdHJpbmc+IGdlbmVyYXRlZEZpbGVzOwogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1f
ZWxlbWVudHMpIHsKLSAgICAgICAgYXV0byogZmlsZURhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0
YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oJmVsZW1lbnQuZGF0YSk7CisgICAgICAgIGF1dG8q
IGZpbGVEYXRhID0gc3RkOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+
KCZlbGVtZW50LmRhdGEpOwogICAgICAgICBpZiAoIWZpbGVEYXRhKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtz
KGZpbGVEYXRhLT5maWxlbmFtZSkgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkK
QEAgLTQxNCw3ICs0MTQsNyBAQCB1aW50NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNv
bnN0CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25z
dAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKLSAgICAgICAgaWYg
KCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkK
KyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxl
bWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKQEAgLTQyNSw3ICs0MjUsNyBAQCBV
UkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CiAgICAgaWYgKG1fZWxlbWVudHMuc2l6ZSgp
ICE9IDEpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAoYXV0byogYmxvYkRhdGEgPSBX
VEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YT4oJm1fZWxlbWVudHMu
Zmlyc3QoKS5kYXRhKSkKKyAgICBpZiAoYXV0byogYmxvYkRhdGEgPSBzdGQ6OmdldF9pZjxGb3Jt
RGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YT4oJm1fZWxlbWVudHMuZmlyc3QoKS5kYXRhKSkK
ICAgICAgICAgcmV0dXJuIGJsb2JEYXRhLT51cmw7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuY3BwCmluZGV4IDkyZGY1MmFhZTZlNmMxOGQ4M2FjNmZkMzM3NWZmODRlYWRkMGFhN2UuLjZj
NWY4NjVjNWMyN2I3MjQ3OTE0MTE5OTQ2ZTY4MWM4M2VkMTkxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApA
QCAtNTAyLDcgKzUwMiw3IEBAIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aGFzVXBsb2FkKCkg
Y29uc3QKIHsKICAgICBpZiAoYXV0byogYm9keSA9IGh0dHBCb2R5KCkpIHsKICAgICAgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogYm9keS0+ZWxlbWVudHMoKSkgewotICAgICAgICAgICAgaWYgKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8V2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmls
ZURhdGE+KGVsZW1lbnQuZGF0YSkgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxXZWJDb3JlOjpG
b3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YT4oZWxlbWVudC5kYXRhKSkKKyAgICAgICAg
ICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6
RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50LmRhdGEpIHx8IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
V2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGE+KGVsZW1lbnQuZGF0YSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZO
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVh
bUNGTmV0LmNwcAppbmRleCA0MmExNmZlMzYwY2FjNjcwZmQ4MzJmMmY3ZDIyODhmZmVhYTRmMjQ5
Li5iOTAyOWJjZTY1NDA5MmQ5YjkxNzJiMzkxNjEzMDZmNGE3NmJjZTM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHAKQEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVS
TFJlcXVlc3RSZWYgcmVxdWVzdCwgRm9ybURhdGEqIGZvcm1EYXRhKQogICAgIC8vIEhhbmRsZSB0
aGUgY29tbW9uIHNwZWNpYWwgY2FzZSBvZiBvbmUgcGllY2Ugb2YgZm9ybSBkYXRhLCB3aXRoIG5v
IGZpbGVzLgogICAgIGF1dG8mIGVsZW1lbnRzID0gZm9ybURhdGEtPmVsZW1lbnRzKCk7CiAgICAg
aWYgKGVsZW1lbnRzLnNpemUoKSA9PSAxICYmICFmb3JtRGF0YS0+YWx3YXlzU3RyZWFtKCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4o
JmVsZW1lbnRzWzBdLmRhdGEpKSB7CisgICAgICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBzdGQ6Omdl
dF9pZjxWZWN0b3I8dWludDhfdD4+KCZlbGVtZW50c1swXS5kYXRhKSkgewogICAgICAgICAgICAg
YXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgdmVjdG9yLT5kYXRhKCks
IHZlY3Rvci0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVz
dEJvZHkocmVxdWVzdCwgZGF0YS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA1YjVlMjgyMGVlMDEyMDQ1YzNmNmY1Y2I2MWYyYzk0NjU1MjMxYzI0Li5jMmVkMTNjYzFi
OWNmMDgyZDA0N2YwN2U0ZTU1OGVkZjZmZTNiMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTM1MSw3ICszNTEs
NyBAQCB2b2lkIEN1cmxIYW5kbGU6OmVuYWJsZVNTTEZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0
KQogI2lmIE9TKFdJTkRPV1MpCiAgICAgY3VybF9lYXN5X3NldG9wdChtX2hhbmRsZSwgQ1VSTE9Q
VF9TU0xfT1BUSU9OUywgQ1VSTFNTTE9QVF9OQVRJVkVfQ0EpOwogI2Vsc2UKLSAgICBpZiAoYXV0
byogcGF0aCA9IFdURjo6Z2V0X2lmPFN0cmluZz4oJnNzbEhhbmRsZS5nZXRDQUNlcnRJbmZvKCkp
KQorICAgIGlmIChhdXRvKiBwYXRoID0gc3RkOjpnZXRfaWY8U3RyaW5nPigmc3NsSGFuZGxlLmdl
dENBQ2VydEluZm8oKSkpCiAgICAgICAgIHNldENBQ2VydFBhdGgocGF0aC0+dXRmOCgpLmRhdGEo
KSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsU1NMSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsU1NMSGFuZGxlLmNwcAppbmRleCA2M2Y4MTRhNWJkOGE0MWE0YmFjMmEwNzkx
MzA1MTg1YWQxMWRiNGVmLi4xNzg5ZTExMzU3M2Y0ZTY4MjU3MTAwMmZlYWE4YTkxZTRiMGUwNjU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNT
TEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxTU0xIYW5kbGUuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgQ3VybFNTTEhhbmRsZTo6c2V0
Q0FDZXJ0RGF0YShDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlJiYgY2FDZXJ0RGF0YSkKIAog
dm9pZCBDdXJsU1NMSGFuZGxlOjpjbGVhckNBQ2VydEluZm8oKQogewotICAgIG1fY2FDZXJ0SW5m
byA9IFdURjo6TW9ub3N0YXRlIHsgfTsKKyAgICBtX2NhQ2VydEluZm8gPSBzdGQ6Om1vbm9zdGF0
ZSB7IH07CiB9CiAKIHZvaWQgQ3VybFNTTEhhbmRsZTo6YWxsb3dBbnlIVFRQU0NlcnRpZmljYXRl
c0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxlLmgKaW5kZXggZTA3NjhhMTJlNzI4ZDMy
NzBhZWY0MjFmZTA3MzA3ZGZjNjAyYzQ3MS4uY2ZmZmQwNTVmOGFmOWFkNDQ0ZDA5MWMxZmRiYmI4
YmQ5NzFiZWY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxTU0xIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFNTTEhhbmRsZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEN1cmxTU0xIYW5k
bGUgewogICAgIHVzaW5nIENsaWVudENlcnRpZmljYXRlID0gc3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPjsKIAogcHVibGljOgotICAgIHVzaW5nIENBQ2VydEluZm8gPSBWYXJpYW50PE1vbm9zdGF0
ZSwgU3RyaW5nLCBDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlPjsKKyAgICB1c2luZyBDQUNl
cnRJbmZvID0gVmFyaWFudDxzdGQ6Om1vbm9zdGF0ZSwgU3RyaW5nLCBDZXJ0aWZpY2F0ZUluZm86
OkNlcnRpZmljYXRlPjsKIAogICAgIEN1cmxTU0xIYW5kbGUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmNwcApp
bmRleCBmYmIwZjVlOTU2Y2U4Y2FmYjRhYzE0OTRkNmYxNDFmNzA4NjhhZWY5Li41NGY5YTY0YjQx
Nzk5N2VkYTZmNjk2YzJiNmQzZmEyY2IxYjM3Y2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmNwcApAQCAtNDQs
NyArNDQsNyBAQCBDdXJsU1NMVmVyaWZpZXI6OkN1cmxTU0xWZXJpZmllcih2b2lkKiBzc2xDdHgp
CiAgICAgU1NMX0NUWF9zZXRfdmVyaWZ5KGN0eCwgU1NMX0NUWF9nZXRfdmVyaWZ5X21vZGUoY3R4
KSwgdmVyaWZ5Q2FsbGJhY2spOwogCiAjaWYgZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJF
UikKLSAgICBpZiAoYXV0byBkYXRhID0gV1RGOjpnZXRfaWY8Q2VydGlmaWNhdGVJbmZvOjpDZXJ0
aWZpY2F0ZT4oJnNzbEhhbmRsZS5nZXRDQUNlcnRJbmZvKCkpKQorICAgIGlmIChhdXRvIGRhdGEg
PSBzdGQ6OmdldF9pZjxDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlPigmc3NsSGFuZGxlLmdl
dENBQ2VydEluZm8oKSkpCiAgICAgICAgIFNTTF9DVFhfbG9hZF92ZXJpZnlfbWVtKGN0eCwgc3Rh
dGljX2Nhc3Q8dm9pZCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KGRhdGEtPmRhdGEoKSkpLCBkYXRh
LT5zaXplKCkpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRleCAzODMyZWY1
YWI5MTQ4YjhjYzdiMzBkN2NhYTg2YmUyNjk2Yzg4NThkLi45Mzk1OGUyNGRhNjA1ZjNlNWE0N2Nk
NmM2NWZhYmU3NGFjY2NlZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCkBAIC0xMDEsNyAr
MTAxLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9keShTb3Vw
TWVzc2FnZSogc291cE1lc3NhZ2UsIEJsb2JSZWdpc3QKICAgICAvLyBIYW5kbGUgdGhlIGNvbW1v
biBzcGVjaWFsIGNhc2Ugb2Ygb25lIHBpZWNlIG9mIGZvcm0gZGF0YSwgd2l0aCBubyBmaWxlcy4K
ICAgICBhdXRvJiBlbGVtZW50cyA9IGZvcm1EYXRhLT5lbGVtZW50cygpOwogICAgIGlmIChlbGVt
ZW50cy5zaXplKCkgPT0gMSAmJiAhZm9ybURhdGEtPmFsd2F5c1N0cmVhbSgpKSB7Ci0gICAgICAg
IGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8dWludDhfdD4+KCZlbGVtZW50
c1swXS5kYXRhKSkgeworICAgICAgICBpZiAoYXV0byogdmVjdG9yID0gc3RkOjpnZXRfaWY8VmVj
dG9yPHVpbnQ4X3Q+PigmZWxlbWVudHNbMF0uZGF0YSkpIHsKICNpZiBVU0UoU09VUDIpCiAgICAg
ICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQoc291cE1lc3NhZ2UtPnJlcXVlc3RfYm9k
eSwgU09VUF9NRU1PUllfVEVNUE9SQVJZLCB2ZWN0b3ItPmRhdGEoKSwgdmVjdG9yLT5zaXplKCkp
OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9XZWJLaXRGb3JtRGF0YUlucHV0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9XZWJLaXRGb3JtRGF0YUlucHV0U3RyZWFtLmNwcAppbmRleCA0OTNiMTM4
YzI2ZDMwNjYzNGVjYjI1NTU3YmUyMjYwY2FhMTM2NzNhLi4wNDFiMmNkMjIzMGRkYTVhMjUzZDI2
M2EwODJjZDYyMmE5OWI0ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvV2ViS2l0Rm9ybURhdGFJbnB1dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1dlYktpdEZvcm1EYXRhSW5wdXRTdHJlYW0uY3Bw
CkBAIC0xMzcsNyArMTM3LDcgQEAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IHdlYmtpdEZvcm1EYXRh
SW5wdXRTdHJlYW1OZXcoUmVmPEZvcm1EYXRhPiYmIGZvcm1EYXRhKQogICAgIC8vIEdGaWxlSW5w
dXRTdHJlYW0gaXMgbm90IHBvbGxhYmxlLCBzbyB0aGUgc3RyZWFtIGlzIG9ubHkgcG9sbGFibGUg
aWYgRm9ybURhdGEgZG9lc24ndCBjb250YWluIEVuY29kZWRGaWxlRGF0YSBlbGVtZW50cy4KICAg
ICBzdHJlYW0tPnByaXYtPmNhblBvbGwgPSB0cnVlOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxl
bWVudCA6IHN0cmVhbS0+cHJpdi0+Zm9ybURhdGEtPmVsZW1lbnRzKCkpIHsKLSAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+
KGVsZW1lbnQuZGF0YSkpIHsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Rm9y
bURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSkpIHsKICAgICAgICAg
ICAgIHN0cmVhbS0+cHJpdi0+Y2FuUG9sbCA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cAppbmRleCAxYmQwZWE3ZGY0NDUxM2NmYzE5MjM1NDVkMjA1MTIxZDMwMDlmMzc5Li5mMzE5NjQx
YzBhZjQwNDg4NDU0MWQwOTA5YzM5MmQ1NjNkZjhhOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0xMTM4LDcgKzExMzgsNyBAQCB2b2lk
IFBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3Rv
bURhdGE+JiBkYXRhKQogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAg
ICAgY29uc3QgYXV0byYgY3VzdG9tRGF0YSA9IGRhdGEuZmlyc3QoKTsKICAgICAgICAgY3VzdG9t
RGF0YS5mb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihbXShhdXRvJiB0eXBlLCBhdXRvJiBz
dHJpbmdPckJ1ZmZlcikgewotICAgICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICAgICAgQ2xp
cGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKHR5cGUp
OwogCiAgICAgICAgICAgICAgICAgU3RyaW5nIHN0ciA9IFdURjo6Z2V0PFN0cmluZz4oc3RyaW5n
T3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCmluZGV4IGZj
MjRmOGE0ZjYxZjgxMzQ4ZGE2NjRhMTBkYWQ0ODBhN2VjMjkzMjguLjdkMjU4MmQ4YzYwN2Y2MTE3
YTI5M2NiNzgzNmIyOGEwZDU0MjgzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL1BsYXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0
Zm9ybVhSLmgKQEAgLTM2MiwxNCArMzYyLDE0IEBAIHZvaWQgRGV2aWNlOjpGcmFtZURhdGE6OlZp
ZXc6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgb2Zm
c2V0OwogCi0gICAgYm9vbCBoYXNGb3YgPSBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFBsYXRmb3Jt
WFI6OkRldmljZTo6RnJhbWVEYXRhOjpGb3Y+KHByb2plY3Rpb24pOworICAgIGJvb2wgaGFzRm92
ID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6
Rm92Pihwcm9qZWN0aW9uKTsKICAgICBlbmNvZGVyIDw8IGhhc0ZvdjsKICAgICBpZiAoaGFzRm92
KSB7CiAgICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGE6OkZvdj4ocHJvamVjdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBi
b29sIGhhc1Byb2plY3Rpb25NYXRyaXggPSBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFBsYXRmb3Jt
WFI6OkRldmljZTo6RnJhbWVEYXRhOjpQcm9qZWN0aW9uTWF0cml4Pihwcm9qZWN0aW9uKTsKKyAg
ICBib29sIGhhc1Byb2plY3Rpb25NYXRyaXggPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQcm9qZWN0aW9uTWF0cml4Pihwcm9qZWN0aW9uKTsK
ICAgICBlbmNvZGVyIDw8IGhhc1Byb2plY3Rpb25NYXRyaXg7CiAgICAgaWYgKGhhc1Byb2plY3Rp
b25NYXRyaXgpIHsKICAgICAgICAgZm9yIChmbG9hdCBmIDogV1RGOjpnZXQ8UGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OlByb2plY3Rpb25NYXRyaXg+KHByb2plY3Rpb24pKQpAQCAtMzc3
LDcgKzM3Nyw3IEBAIHZvaWQgRGV2aWNlOjpGcmFtZURhdGE6OlZpZXc6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpudWxscHRyX3Q+KHByb2plY3Rpb24pKTsKKyAgICBB
U1NFUlQoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6Om51bGxwdHJfdD4ocHJvamVjdGlvbikp
OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCAwYTQ4OTYwNjIzM2E4ZGI1ZTQxODA1ODExMjJl
N2U0ZmI1ZTkwZDIzLi43YTRkZWI1YmEyMjE0NDdmYWNlZjA2YzBhNWQ3NDRlYzkwM2Y4ODRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtNDY3
LDcgKzQ2Nyw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpzZXRDaGlsZHJlbklubGluZShib29s
IHZhbHVlKQogewogICAgIGlmIChjaGlsZHJlbklubGluZSgpICYmICF2YWx1ZSkgewogICAgICAg
ICBzZXRMaW5lTGF5b3V0UGF0aChVbmRldGVybWluZWRQYXRoKTsKLSAgICAgICAgbV9saW5lTGF5
b3V0ID0gV1RGOjpNb25vc3RhdGUoKTsKKyAgICAgICAgbV9saW5lTGF5b3V0ID0gc3RkOjptb25v
c3RhdGUoKTsKICAgICB9CiAKICAgICBSZW5kZXJCbG9jazo6c2V0Q2hpbGRyZW5JbmxpbmUodmFs
dWUpOwpAQCAtMjE4MSw3ICsyMTgxLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnN0eWxlV2ls
bENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG4KIAogdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OmRlbGV0ZUxpbmVzKCkKIHsKLSAgICBtX2xpbmVMYXlvdXQgPSBX
VEY6Ok1vbm9zdGF0ZSgpOworICAgIG1fbGluZUxheW91dCA9IHN0ZDo6bW9ub3N0YXRlKCk7CiAK
ICAgICBSZW5kZXJCbG9jazo6ZGVsZXRlTGluZXMoKTsKIH0KQEAgLTM3NDAsNyArMzc0MCw3IEBA
IHZvaWQgUmVuZGVyQmxvY2tGbG93OjppbnZhbGlkYXRlTGluZUxheW91dFBhdGgoKQogICAgICAg
ICBpZiAobW9kZXJuTGluZUxheW91dCgpICYmIG1vZGVybkxpbmVMYXlvdXQoKS0+c2hvdWxkU3dp
dGNoVG9MZWdhY3lPbkludmFsaWRhdGlvbigpKQogICAgICAgICAgICAgcGF0aCA9IEZvcmNlZExl
Z2FjeVBhdGg7CiAjZW5kaWYKLSAgICAgICAgbV9saW5lTGF5b3V0ID0gV1RGOjpNb25vc3RhdGUo
KTsKKyAgICAgICAgbV9saW5lTGF5b3V0ID0gc3RkOjptb25vc3RhdGUoKTsKICAgICAgICAgc2V0
TGluZUxheW91dFBhdGgocGF0aCk7CiAgICAgICAgIGlmIChuZWVkc0xheW91dCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5o
CmluZGV4IDk3ZjE0OTAyNmY3MWM2YTllZGI0YzYwNjA1MmM3YjczNjE0OWIwMjUuLjRkZjRjNGI0
ZWI4ZjIyM2Q2Y2YwYjZmZGVmY2EwZjg4NTVjODk1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKQEAgLTU4NCw3ICs1ODQsNyBAQCBwcm90ZWN0ZWQ6CiAK
IHByaXZhdGU6CiAgICAgVmFyaWFudDwKLSAgICAgICAgV1RGOjpNb25vc3RhdGUsCisgICAgICAg
IHN0ZDo6bW9ub3N0YXRlLAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQog
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ+LAog
I2VuZGlmCkBAIC01OTgsMTIgKzU5OCwxMiBAQCBwcml2YXRlOgogCiBpbmxpbmUgYm9vbCBSZW5k
ZXJCbG9ja0Zsb3c6Omhhc0xpbmVMYXlvdXQoKSBjb25zdAogewotICAgIHJldHVybiAhV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxXVEY6Ok1vbm9zdGF0ZT4obV9saW5lTGF5b3V0KTsKKyAgICByZXR1
cm4gIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjptb25vc3RhdGU+KG1fbGluZUxheW91dCk7
CiB9CiAKIGlubGluZSBib29sIFJlbmRlckJsb2NrRmxvdzo6aGFzTGVnYWN5TGluZUxheW91dCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjp1bmlxdWVf
cHRyPExlZ2FjeUxpbmVMYXlvdXQ+PihtX2xpbmVMYXlvdXQpOworICAgIHJldHVybiBzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lMaW5lTGF5b3V0Pj4obV9saW5l
TGF5b3V0KTsKIH0KIAogaW5saW5lIGNvbnN0IExlZ2FjeUxpbmVMYXlvdXQqIFJlbmRlckJsb2Nr
Rmxvdzo6bGVnYWN5TGluZUxheW91dCgpIGNvbnN0CkBAIC02MTksNyArNjE5LDcgQEAgaW5saW5l
IExlZ2FjeUxpbmVMYXlvdXQqIFJlbmRlckJsb2NrRmxvdzo6bGVnYWN5TGluZUxheW91dCgpCiAj
aWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiBpbmxpbmUgYm9vbCBSZW5kZXJC
bG9ja0Zsb3c6Omhhc01vZGVybkxpbmVMYXlvdXQoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6dW5pcXVlX3B0cjxMYXlvdXRJbnRlZ3JhdGlvbjo6TGlu
ZUxheW91dD4+KG1fbGluZUxheW91dCk7CisgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8c3RkOjp1bmlxdWVfcHRyPExheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Pj4obV9saW5l
TGF5b3V0KTsKIH0KIAogaW5saW5lIGNvbnN0IExheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0
KiBSZW5kZXJCbG9ja0Zsb3c6Om1vZGVybkxpbmVMYXlvdXQoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlQnVpbGRlci5jcHAKaW5kZXggOWIxY2VkNDlmMDRkZDQ3YWM3MmM1NDM5NTU5M2Y1
ZDY2OWM5NDEwYi4uMDRlNzg3NjU1OWQ1NDUzNDc3N2EyZjBlMmQ1NmY4ZDQ4YmRmNzcxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9p
ZCBCdWlsZGVyOjphcHBseUN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkKIAogICAg
ICAgICBtX3N0YXRlLm1faW5Qcm9ncmVzc1Byb3BlcnRpZXNDdXN0b20uYWRkKG5hbWUpOwogCi0g
ICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5j
ZVZhbHVlPj4odmFsdWVUb0FwcGx5LT52YWx1ZSgpKSkgeworICAgICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KHZhbHVlVG9BcHBs
eS0+dmFsdWUoKSkpIHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVmFsdWUg
PSByZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NTUHJvcGVydHlDdXN0b20sIHZhbHVlVG9BcHBseS5n
ZXQoKSk7CiAKICAgICAgICAgICAgIGlmIChtX3N0YXRlLm1fYXBwbGllZEN1c3RvbVByb3BlcnRp
ZXMuY29udGFpbnMobmFtZSkpCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBCdWlsZGVyOjphcHBs
eUN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkKIAogICAgICAgICBSZWYgdmFsdWVU
b0FwcGx5ID0gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnByb3BlcnR5LmNzc1Zh
bHVlW2luZGV4XSk7CiAKLSAgICAgICAgaWYgKGluQ3ljbGUgJiYgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KHZhbHVlVG9BcHBseS0+dmFsdWUo
KSkpIHsKKyAgICAgICAgaWYgKGluQ3ljbGUgJiYgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KHZhbHVlVG9BcHBseS0+dmFsdWUoKSkpIHsKICAg
ICAgICAgICAgIC8vIFJlc29sdmUgdGhpcyB2YWx1ZSBzbyB0aGF0IHdlIHJlc2V0IGl0cyBkZXBl
bmRlbmNpZXMuCiAgICAgICAgICAgICByZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NTUHJvcGVydHlD
dXN0b20sIHZhbHVlVG9BcHBseS5nZXQoKSk7CiAgICAgICAgIH0KQEAgLTI4Myw3ICsyODMsNyBA
QCB2b2lkIEJ1aWxkZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUm
IHZhbHVlLCBTZWxlY3RvckNoZWNrZXI6OgogICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eUN1c3Rv
bSkgewogICAgICAgICBjdXN0b21Qcm9wZXJ0eVZhbHVlID0gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZT4odmFsdWVUb0FwcGx5LnB0cigpKTsKICAgICAgICAgQVNTRVJUKGN1c3RvbVBy
b3BlcnR5VmFsdWUtPmlzUmVzb2x2ZWQoKSk7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPENTU1ZhbHVlSUQ+KGN1c3RvbVByb3BlcnR5VmFsdWUtPnZhbHVlKCkpKQorICAgICAg
ICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxDU1NWYWx1ZUlEPihjdXN0b21Qcm9wZXJ0eVZh
bHVlLT52YWx1ZSgpKSkKICAgICAgICAgICAgIGN1c3RvbVByb3BlcnR5VmFsdWVJRCA9IFdURjo6
Z2V0PENTU1ZhbHVlSUQ+KGN1c3RvbVByb3BlcnR5VmFsdWUtPnZhbHVlKCkpOwogICAgICAgICBh
dXRvJiBuYW1lID0gY3VzdG9tUHJvcGVydHlWYWx1ZS0+bmFtZSgpOwogICAgICAgICBjdXN0b21Q
cm9wZXJ0eVJlZ2lzdGVyZWQgPSBtX3N0YXRlLmRvY3VtZW50KCkuZ2V0Q1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5U2V0KCkuZ2V0KG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAKaW5kZXggYmE4NzFmNDJm
NWNmYTg0MmI4ODU1OGZhODVjNDkwMTljMzFlN2YyYS4uNjQwZWRiZTVhOTA5M2U0Y2U2ZTRkMzYw
M2FmYmZhYzdmNzAyYWI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgU2VydmljZVdvcmtlckpvYkRhdGE6OnJlZ2lzdHJhdGlv
bktleSgpIGNvbnN0CiAKIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI+IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBj
b25zdAogewotICAgIGlmIChpc0Zyb21TZXJ2aWNlV29ya2VyUGFnZSAmJiBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPihzb3VyY2VDb250ZXh0KSkK
KyAgICBpZiAoaXNGcm9tU2VydmljZVdvcmtlclBhZ2UgJiYgc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4oc291cmNlQ29udGV4dCkpCiAgICAgICAg
IHJldHVybiBXVEY6OmdldDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4oc291cmNlQ29u
dGV4dCk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5jcHAKaW5kZXggYmRjMmE2M2NmYTI1MDQzOTUwZjEyNjhiYjM1NDc2ZmJjNzEyYjQxNS4uZDg0
YzU5NmJiOGY5OWMxNjU0NjkwYjk2NTk4MGM5YTdiZTcwNjlkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZC5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6
OnF1ZXVlVGFza1RvUG9zdE1lc3NhZ2UoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYQog
ICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tT
b3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHNvdXJj
ZURhdGEgPSBXVEZNb3ZlKHNvdXJjZURhdGEpXSgpIG11dGFibGUgewogICAgICAgICBVUkwgc291
cmNlVVJMOwogICAgICAgICBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNlIHNvdXJjZTsKLSAg
ICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U2VydmljZVdvcmtlckNsaWVudERhdGE+
KHNvdXJjZURhdGEpKSB7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPihzb3VyY2VEYXRhKSkgewogICAgICAgICAgICAgUmVmUHRyPFNl
cnZpY2VXb3JrZXJDbGllbnQ+IHNvdXJjZUNsaWVudCA9IFNlcnZpY2VXb3JrZXJDbGllbnQ6Omdl
dE9yQ3JlYXRlKHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShXVEY6OmdldDxTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4oc291cmNlRGF0YSkpKTsKIAogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIXNvdXJjZUNsaWVudC0+dXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8
ICFzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSB8fCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LT51cmwoKSwgc291cmNlQ2xpZW50LT51cmwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXgg
NGMyZGZlMGY3ZjUwYjFiZTYwZjNmNmQ1ZDg0MDMwNTYzZDY1NDgyNC4uODlhN2Y0ZmQ3MDg3ZTFm
M2U4NjM5OTdjMGI0YWU0N2RkOTE4M2M2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCkBAIC00MDMs
NyArNDAzLDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpjYW5jZWxKb2JzRnJvbUNvbm5lY3Rp
b24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb24KIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1
ZTo6Y2FuY2VsSm9ic0Zyb21TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKQogewogICAgIHJlbW92ZUFsbEpvYnNNYXRjaGluZyhbc2Vy
dmljZVdvcmtlcklkZW50aWZpZXJdKGF1dG8mIGpvYikgewotICAgICAgICByZXR1cm4gV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxTZXJ2aWNlV29ya2VySWRlbnRpZmllcj4oam9iLnNvdXJjZUNvbnRl
eHQpICYmIFdURjo6Z2V0PFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPihqb2Iuc291cmNlQ29udGV4
dCkgPT0gc2VydmljZVdvcmtlcklkZW50aWZpZXI7CisgICAgICAgIHJldHVybiBzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPihqb2Iuc291cmNlQ29udGV4dCkg
JiYgV1RGOjpnZXQ8U2VydmljZVdvcmtlcklkZW50aWZpZXI+KGpvYi5zb3VyY2VDb250ZXh0KSA9
PSBzZXJ2aWNlV29ya2VySWRlbnRpZmllcjsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCAxYzY0NWY2ZmM4NDlmYzc0N2QyNWM4ZTU1ODE1MWVmYjYxZjQ3NWQz
Li43ZWZmMmU4OTg1MjA1N2EyNzczOWQ2MTI2YWZhMjA0YzMyOWU0YjE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnJlCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBm
aWxlczsKICAgICBpZiAoYXV0byogYm9keSA9IGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QuaHR0cEJv
ZHkoKSkgewogICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBib2R5LT5lbGVtZW50cygpKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byogYmxvYkRhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVs
ZW1lbnQ6OkVuY29kZWRCbG9iRGF0YT4oJmVsZW1lbnQuZGF0YSkpCisgICAgICAgICAgICBpZiAo
YXV0byogYmxvYkRhdGEgPSBzdGQ6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9i
RGF0YT4oJmVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICAgICAgZmlsZXMuYXBwZW5kVmVjdG9y
KGJsb2JSZWdpc3RyeS5maWxlc0luQmxvYihibG9iRGF0YS0+dXJsKSk7CiAgICAgICAgIH0KICAg
ICAgICAgY29uc3RfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmPihsb2FkUGFyYW1ldGVy
cy5yZXF1ZXN0KS5zZXRIVFRQQm9keShib2R5LT5yZXNvbHZlQmxvYlJlZmVyZW5jZXMoJmJsb2JS
ZWdpc3RyeSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCA0ZTBmYmNkNGU4N2Uz
ZjBkMGZmYzY2MjNlMDk1MTJlM2NmZjdjYjY3Li42YmIwYmU4NDQ2YTA5ZmQ0NWQ1YzA4NzhjODBm
NjZhZTViMTZkMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtNTMsNyArNTMs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgICAgIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnM7CiAgICAgICAgIGZvciAoY29uc3Qg
Rm9ybURhdGFFbGVtZW50JiBlbGVtZW50IDogcmVxdWVzdC5odHRwQm9keSgpLT5lbGVtZW50cygp
KSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZmlsZURhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0
YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oJmVsZW1lbnQuZGF0YSkpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvKiBmaWxlRGF0YSA9IHN0ZDo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2Rl
ZEZpbGVEYXRhPigmZWxlbWVudC5kYXRhKSkgewogICAgICAgICAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgcGF0aCA9IGZpbGVEYXRhLT5maWxlbmFtZTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBo
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZTo6UmVhZE9ubHkpKQogICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keVNh
bmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3Vy
bC5jcHAKaW5kZXggZWUwOTJmYzNmM2UxMTM3YzkxYzE2MjE2YWIwMjkzZTJmOTU1NDQzMS4uM2Jk
ODkwOGExNDJmMDUyYTY2NzhmMWY5MjNlM2NlMzcxYzIxNzIyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3Vy
bC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgRGF0YTo6RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkKIAogRGF0YTo6RGF0YShWYXJpYW50PFZlY3Rvcjx1aW50OF90PiwgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGE+JiYgZGF0YSkKICAgICA6IG1fYnVmZmVyKEJveDxWYXJpYW50
PFZlY3Rvcjx1aW50OF90PiwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+Pjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpKQotICAgICwgbV9pc01hcChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhPigqbV9idWZmZXIpKQorICAgICwgbV9pc01hcChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPigqbV9idWZmZXIpKQog
ewogICAgIG1fc2l6ZSA9IFdURjo6c3dpdGNoT24oKm1fYnVmZmVyLAogICAgICAgICBbXShjb25z
dCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikgLT4gc2l6ZV90IHsgcmV0dXJuIGJ1ZmZlci5zaXpl
KCk7IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRl
eCBmNzNmZTk3ZTdlYWM3YWJmMDhiYjhhNmY2YzZkYTk5NWY3MDg5MTgxLi4xYjdlMjJmZmI1NDYz
YzkyNmE3NmVhNTI3ZWJjZjVhZGFkZGMyMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTgzNCwxNCArODM0LDE0IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8YXVkaXRfdG9rZW5fdD4gewogfTsKICNlbmRpZgogCi10ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPE1vbm9zdGF0ZT4gewordGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxzdGQ6Om1vbm9zdGF0ZT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVu
Y29kZXI+Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBNb25vc3RhdGUm
KSB7IH0KKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IHN0ZDo6bW9ub3N0
YXRlJikgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgotICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPE1vbm9zdGF0ZT4gZGVjb2RlKERlY29kZXImKQorICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPHN0ZDo6bW9ub3N0YXRlPiBkZWNvZGUoRGVjb2RlciYpCiAgICAgewotICAgICAg
ICByZXR1cm4gTW9ub3N0YXRlIHsgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bW9ub3N0YXRlIHsg
fTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9G
b3JtRGF0YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFS
ZWZlcmVuY2UuaAppbmRleCBiNDMxMWYzNWE4YzM4MDY2Zjg1MzFhZGEyMzg5ZmI4OWE4ODFmMTIy
Li5iY2RiMTcwMDdiYzJmMGU1OWNkNmQwOGZlYjRlMjZkM2VmOGQ2ZTcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogCiAgICAgICAgIFZlY3RvcjxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgICAgIGZvciAoYXV0byYgZWxlbWVu
dCA6IG1fZGF0YS0+ZWxlbWVudHMoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRh
ID0gV1RGOjpnZXRfaWY8V2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+
KCZlbGVtZW50LmRhdGEpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogZmlsZURhdGEgPSBzdGQ6
OmdldF9pZjxXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oJmVsZW1l
bnQuZGF0YSkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0
YS0+ZmlsZW5hbWU7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkT25seSkpCiAgICAgICAgICAgICAgICAgICAgIHNhbmRib3hFeHRlbnNp
b25IYW5kbGVzLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAKaW5kZXggNDZmZTBl
ODA0NTM5ZGZmZjE1NWZkY2FmNDBlM2EwOGIwNTA5YjJiYS4uZWRmNTYyZjIzNzRkNmZhZTE1NWM0
MDRlYTc5MGE0ZDY4MmE1ZWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgTWVzc2Fn
ZVJlY2VpdmVRdWV1ZSogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6Z2V0KGNvbnN0IERlY29kZXIm
IG1lc3NhZ2UpIGNvbnN0CiAgICAgfQogICAgIGlmIChpdCA9PSBtX3F1ZXVlcy5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFdURjo6dmlzaXQoCisgICAgcmV0dXJu
IHN0ZDo6dmlzaXQoCiAgICAgICAgIFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgICAgICBbXShj
b25zdCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVJlY2VpdmVRdWV1ZT4mIHF1ZXVlKSB7IHJldHVy
biBxdWV1ZS5nZXQoKTsgfSwKICAgICAgICAgICAgIFtdKE1lc3NhZ2VSZWNlaXZlUXVldWUqIHF1
ZXVlKSB7IHJldHVybiBxdWV1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCBiMDQwNjg2MDIwMmMwYjU4YWIyMDY1MjA1
NDVhMWRmZTZlMzg5OWZhLi4wNjk4MDM5NjZkYmMxOTg1MTc3OTkxZTg4Y2FlZDJkNDA5YzhlZjE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1dE1l
c3NhZ2UoVW5peE1lc3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAgICAgaWYgKGhhc0N1c3RvbVdyaXRl
ckF0dGFjaG1lbnRzKSB7CiAgICAgICAgIGZvciAoYXV0byYgYXR0YWNobWVudCA6IGF0dGFjaG1l
bnRzKSB7CiAgICAgICAgICAgICBpZiAoYXR0YWNobWVudC50eXBlKCkgPT0gQXR0YWNobWVudDo6
Q3VzdG9tV3JpdGVyVHlwZSkgewotICAgICAgICAgICAgICAgIEFTU0VSVChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEF0dGFjaG1lbnQ6OkN1c3RvbVdyaXRlckZ1bmM+KGF0dGFjaG1lbnQuY3VzdG9t
V3JpdGVyKCkpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxBdHRhY2htZW50OjpDdXN0b21Xcml0ZXJGdW5jPihhdHRhY2htZW50LmN1c3RvbVdyaXRlcigp
KSk7CiAgICAgICAgICAgICAgICAgV1RGOjpnZXQ8QXR0YWNobWVudDo6Q3VzdG9tV3JpdGVyRnVu
Yz4oYXR0YWNobWVudC5jdXN0b21Xcml0ZXIoKSkobV9zb2NrZXREZXNjcmlwdG9yKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKaW5kZXggMDMyZWY0NzNiNWQyMDYzNTIzNzk3OTk1MDg2OWI4MTFmMGJm
MGRhMy4uMWRiNTZlNmY0YTBhODJiYzFlOTIyZTg2OTIyNDkwNDk3OWJjZDQ1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xNTQxLDEy
ICsxNTQxLDEyIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50
cnk+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICBlbmNvZGVyIDw8IGRhdGEu
dHlwZSA8PCBkYXRhLmN1c3RvbURhdGE7CiAKICAgICBhdXRvJiBwbGF0Zm9ybURhdGEgPSBkYXRh
LnBsYXRmb3JtRGF0YTsKLSAgICBib29sIGhhc1N0cmluZyA9IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8U3RyaW5nPihwbGF0Zm9ybURhdGEpOworICAgIGJvb2wgaGFzU3RyaW5nID0gc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTdHJpbmc+KHBsYXRmb3JtRGF0YSk7CiAgICAgZW5jb2RlciA8PCBoYXNT
dHJpbmc7CiAgICAgaWYgKGhhc1N0cmluZykKICAgICAgICAgZW5jb2RlciA8PCBXVEY6OmdldDxT
dHJpbmc+KHBsYXRmb3JtRGF0YSk7CiAKLSAgICBib29sIGhhc0J1ZmZlciA9IFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7CisgICAgYm9vbCBo
YXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0
Zm9ybURhdGEpOwogICAgIGVuY29kZXIgPDwgaGFzQnVmZmVyOwogICAgIGlmIChoYXNCdWZmZXIp
CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBXVEY6OmdldDxSZWY8U2hhcmVk
QnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7CkBAIC0yNzQyLDcgKzI3NDIsNyBAQCBib29s
IEFyZ3VtZW50Q29kZXI8TWVkaWFDb25zdHJhaW50cz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBXZWJDb3JlOjpNZWRpYUNvbgogCiB2b2lkIEFyZ3VtZW50Q29kZXI8SURCS2V5UGF0aD46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewotICAg
IGJvb2wgaXNTdHJpbmcgPSBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oa2V5UGF0aCk7
CisgICAgYm9vbCBpc1N0cmluZyA9IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihrZXlQ
YXRoKTsKICAgICBlbmNvZGVyIDw8IGlzU3RyaW5nOwogICAgIGlmIChpc1N0cmluZykKICAgICAg
ICAgZW5jb2RlciA8PCBXVEY6OmdldDxTdHJpbmc+KGtleVBhdGgpOwpAQCAtMjc3Miw3ICsyNzcy
LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPElEQktleVBhdGg+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgSURCS2V5UGF0aCYga2V5UGF0aCkKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2
b2lkIEFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtlck9yQ2xpZW50RGF0YT46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiBkYXRhKQogewot
ICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyRGF0YSA9IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U2Vy
dmljZVdvcmtlckRhdGE+KGRhdGEpOworICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyRGF0YSA9IHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2VydmljZVdvcmtlckRhdGE+KGRhdGEpOwogICAgIGVuY29k
ZXIgPDwgaXNTZXJ2aWNlV29ya2VyRGF0YTsKICAgICBpZiAoaXNTZXJ2aWNlV29ya2VyRGF0YSkK
ICAgICAgICAgZW5jb2RlciA8PCBXVEY6OmdldDxTZXJ2aWNlV29ya2VyRGF0YT4oZGF0YSk7CkBA
IC0yODA1LDcgKzI4MDUsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtlck9yQ2xp
ZW50RGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTZXJ2aWNlVwogCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJiBpZGVudGlm
aWVyKQogewotICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8U2VydmljZVdvcmtlcklkZW50aWZpZXI+KGlkZW50aWZpZXIpOworICAgIGJv
b2wgaXNTZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2Vy
dmljZVdvcmtlcklkZW50aWZpZXI+KGlkZW50aWZpZXIpOwogICAgIGVuY29kZXIgPDwgaXNTZXJ2
aWNlV29ya2VySWRlbnRpZmllcjsKICAgICBpZiAoaXNTZXJ2aWNlV29ya2VySWRlbnRpZmllcikK
ICAgICAgICAgZW5jb2RlciA8PCBXVEY6OmdldDxTZXJ2aWNlV29ya2VySWRlbnRpZmllcj4oaWRl
bnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNl
c1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3Bw
CmluZGV4IDlkNmZkMTllZWE3ZDYwNjIzYjJhNDYwYzFjOWI3MmFmYjg0ODY4NmUuLjc4ZmY3MzIw
OTFlNWUzNTZlNDIyOWE1MzNmNDlhMTgzNTJlZDU2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCkBAIC04MCwxNiArODAsMTYgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgTWFwcGVkVHlwZT4KIHN0YXRpYyBNYXBwZWRUeXBlIHZhbHVlRm9yS2V5KGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwJiB2YWx1ZXMsIGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmU6OlZhbHVlTWFwJiBvdmVycmlkZGVuRGVmYXVsdHMsIGNvbnN0IFN0cmluZyYga2V5
KQogewogICAgIGF1dG8gdmFsdWVzSXQgPSB2YWx1ZXMuZmluZChrZXkpOwotICAgIGlmICh2YWx1
ZXNJdCAhPSB2YWx1ZXMuZW5kKCkgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNYXBwZWRUeXBl
Pih2YWx1ZXNJdC0+dmFsdWUpKQorICAgIGlmICh2YWx1ZXNJdCAhPSB2YWx1ZXMuZW5kKCkgJiYg
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxNYXBwZWRUeXBlPih2YWx1ZXNJdC0+dmFsdWUpKQogICAg
ICAgICByZXR1cm4gV1RGOjpnZXQ8TWFwcGVkVHlwZT4odmFsdWVzSXQtPnZhbHVlKTsKIAogICAg
IGF1dG8gb3ZlcnJpZGRlbkRlZmF1bHRzSXQgPSBvdmVycmlkZGVuRGVmYXVsdHMuZmluZChrZXkp
OwotICAgIGlmIChvdmVycmlkZGVuRGVmYXVsdHNJdCAhPSBvdmVycmlkZGVuRGVmYXVsdHMuZW5k
KCkgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNYXBwZWRUeXBlPihvdmVycmlkZGVuRGVmYXVs
dHNJdC0+dmFsdWUpKQorICAgIGlmIChvdmVycmlkZGVuRGVmYXVsdHNJdCAhPSBvdmVycmlkZGVu
RGVmYXVsdHMuZW5kKCkgJiYgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxNYXBwZWRUeXBlPihvdmVy
cmlkZGVuRGVmYXVsdHNJdC0+dmFsdWUpKQogICAgICAgICByZXR1cm4gV1RGOjpnZXQ8TWFwcGVk
VHlwZT4ob3ZlcnJpZGRlbkRlZmF1bHRzSXQtPnZhbHVlKTsKIAogICAgIGF1dG8mIGRlZmF1bHRz
TWFwID0gV2ViUHJlZmVyZW5jZXNTdG9yZTo6ZGVmYXVsdHMoKTsKICAgICBhdXRvIGRlZmF1bHRz
SXQgPSBkZWZhdWx0c01hcC5maW5kKGtleSk7Ci0gICAgaWYgKGRlZmF1bHRzSXQgIT0gZGVmYXVs
dHNNYXAuZW5kKCkgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNYXBwZWRUeXBlPihkZWZhdWx0
c0l0LT52YWx1ZSkpCisgICAgaWYgKGRlZmF1bHRzSXQgIT0gZGVmYXVsdHNNYXAuZW5kKCkgJiYg
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxNYXBwZWRUeXBlPihkZWZhdWx0c0l0LT52YWx1ZSkpCiAg
ICAgICAgIHJldHVybiBXVEY6OmdldDxNYXBwZWRUeXBlPihkZWZhdWx0c0l0LT52YWx1ZSk7CiAK
ICAgICByZXR1cm4gTWFwcGVkVHlwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9j
ZXNzVGhyb3R0bGVyLmNwcAppbmRleCA3MmNlOWVmNzYyZDk5N2M2YTc4ZDFjNTQ5YmQ4ZGJlNTFj
Y2IyZDY5Li42ZTIwNTdjZTAwYmYzMTRmNmFkNmMxMTkxOWZhZTk1ZGIyOTBiOGQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApAQCAtMjQ1LDE0ICsy
NDUsMTQgQEAgdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjphc3NlcnRpb25XYXNJbnZhbGlkYXRlZCgp
CiAKIGJvb2wgUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eShjb25z
dCBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0eVZhcmlhbnQmIGFjdGl2aXR5KQogewotICAgIGlm
ICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxVbmlxdWVSZWY8UHJvY2Vzc1Rocm90dGxlcjo6QmFj
a2dyb3VuZEFjdGl2aXR5Pj4oYWN0aXZpdHkpKQorICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxVbmlxdWVSZWY8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5Pj4oYWN0
aXZpdHkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIFdURjo6Z2V0PFVuaXF1
ZVJlZjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+PihhY3Rpdml0eSktPmlz
VmFsaWQoKTsKIH0KIAogYm9vbCBQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFj
dGl2aXR5KGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5VmFyaWFudCYgYWN0aXZpdHkp
CiB7Ci0gICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFVuaXF1ZVJlZjxQcm9jZXNzVGhy
b3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+PihhY3Rpdml0eSkpCisgICAgaWYgKCFzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFVuaXF1ZVJlZjxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0
aXZpdHk+PihhY3Rpdml0eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gV1RG
OjpnZXQ8VW5pcXVlUmVmPFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eT4+KGFj
dGl2aXR5KS0+aXNWYWxpZCgpOwogfQpAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgUHJvY2Vzc1Ro
cm90dGxlcjo6VGltZWRBY3Rpdml0eTo6YWN0aXZpdHlUaW1lZE91dCgpCiAKIHZvaWQgUHJvY2Vz
c1Rocm90dGxlcjo6VGltZWRBY3Rpdml0eTo6dXBkYXRlVGltZXIoKQogewotICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6bnVsbHB0cl90PihtX2FjdGl2aXR5KSkKKyAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6Om51bGxwdHJfdD4obV9hY3Rpdml0eSkpCiAgICAg
ICAgIG1fdGltZXIuc3RvcCgpOwogICAgIGVsc2UKICAgICAgICAgbV90aW1lci5zdGFydE9uZVNo
b3QobV90aW1lb3V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5jcHAKaW5kZXggZmM2N2Y3N2M2ZDJkYzc5
NTc3MWEwMGRlNGQ5OTFmOTZlOTgyOTBkYy4uM2I3ODc5ZjAyOWJhZWZlZjFkZDEzNDc1YjVmYTlh
ZmJkZGZkYjI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9p
ZCBBdXRoZW50aWNhdG9yOjpoYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkF1dGhlbnRpY2F0aW9uUmVx
dWVzdERhdGEmIGRhdGEpCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxXZWJD
b3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihtX3BlbmRpbmdSZXF1ZXN0
RGF0YS5vcHRpb25zKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8V2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4obV9wZW5kaW5nUmVxdWVzdERh
dGEub3B0aW9ucykpCiAgICAgICAgICAgICBtYWtlQ3JlZGVudGlhbCgpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBnZXRBc3NlcnRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5h
Z2VyLmNwcAppbmRleCBiOTQ4ZWZiMGVmZThkZWFhZDNkZjRhNWIxM2Q5N2RhYzZhZWQzOWZiLi40
ZjdhYjY0MjkwYzg3MWVlOWJlMDFiYzQ4OWVlNDEzNzk3ZDRlNzUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC0xNDksMTQgKzE0OSwxNCBAQCBzdGF0aWMgdm9pZCBw
cm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8QXV0aGVudAogCiBzdGF0aWMgU3RyaW5nIGdldFJwSWQoY29uc3QgVmFyaWFudDxQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnM+JiBvcHRpb25zKQogewotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KG9wdGlvbnMpKQorICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KG9wdGlv
bnMpKQogICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9u
T3B0aW9ucz4ob3B0aW9ucykucnAuaWQ7CiAgICAgcmV0dXJuIFdURjo6Z2V0PFB1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4ob3B0aW9ucykucnBJZDsKIH0KIAogc3RhdGljIFN0cmlu
ZyBnZXRVc2VyTmFtZShjb25zdCBWYXJpYW50PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMsIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4mIG9wdGlvbnMpCiB7Ci0g
ICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9u
T3B0aW9ucz4ob3B0aW9ucykpCisgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ob3B0aW9ucykpCiAgICAgICAgIHJldHVybiBX
VEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihvcHRpb25zKS51c2Vy
Lm5hbWU7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CkBAIC0yODUsNyArMjg1LDcgQEAg
dm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cmVzcG9uZFJlY2VpdmVkKFJlc3BvbmQmJiByZXNw
b25kKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1fcGVuZGluZ0NvbXBsZXRpb25IYW5k
bGVyKTsKIAotICAgIGF1dG8gc2hvdWxkQ29tcGxldGUgPSBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+PihyZXNwb25kKTsKKyAgICBhdXRvIHNob3VsZENv
bXBsZXRlID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QXV0aGVudGljYXRvclJlc3BvbnNl
Pj4ocmVzcG9uZCk7CiAgICAgaWYgKCFzaG91bGRDb21wbGV0ZSkKICAgICAgICAgc2hvdWxkQ29t
cGxldGUgPSBXVEY6OmdldDxFeGNlcHRpb25EYXRhPihyZXNwb25kKS5jb2RlID09IEludmFsaWRT
dGF0ZUVycm9yOwogICAgIGlmIChzaG91bGRDb21wbGV0ZSkgewpAQCAtNDk4LDcgKzQ5OCw3IEBA
IHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnJ1blByZXNlbnRlckludGVybmFsKGNvbnN0IFRy
YW5zcG9ydFNldCYgdHJhbnNwb3J0cykKIAogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6aW52
b2tlUGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKFJlc3BvbmQmJiByZXNwb25kKQogewotICAgIGF1
dG8gcmVzdWx0ID0gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QXV0aGVudGljYXRvclJlc3Bv
bnNlPj4ocmVzcG9uZCkgPyBXZWJBdXRoZW50aWNhdGlvblJlc3VsdDo6U3VjY2VlZGVkIDogV2Vi
QXV0aGVudGljYXRpb25SZXN1bHQ6OkZhaWxlZDsKKyAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPEF1dGhlbnRpY2F0b3JSZXNwb25zZT4+KHJlc3BvbmQpID8gV2Vi
QXV0aGVudGljYXRpb25SZXN1bHQ6OlN1Y2NlZWRlZCA6IFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0
OjpGYWlsZWQ7CiAKICAgICAvLyBUaGlzIGlzIGZvciB0aGUgbmV3IFVJLgogICAgIGlmIChtX3By
ZXNlbnRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5j
cHAKaW5kZXggNWIwYzZjMmYxN2EwYzYxZTQwMmMwNzA4M2FlNTU3OTEwYmJmNDRjMS4uZmNkODBl
MTkxOWQ3MmIwYTBjNTZiMDkxNTE5NGJhYTkzNTEwZGU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5jcHAKQEAgLTM1LDE0ICszNSwxNCBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQ2xpZW50RGF0YVR5cGUgZ2V0Q2xpZW50RGF0YVR5cGUo
Y29uc3QgVmFyaWFudDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLCBQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+JiBvcHRpb25zKQogewotICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KG9wdGlv
bnMpKQorICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnM+KG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gQ2xpZW50RGF0YVR5cGU6
OkNyZWF0ZTsKICAgICByZXR1cm4gQ2xpZW50RGF0YVR5cGU6OkdldDsKIH0KIAogVXNlclZlcmlm
aWNhdGlvblJlcXVpcmVtZW50IGdldFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudChjb25zdCBW
YXJpYW50PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMsIFB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucz4mIG9wdGlvbnMpCiB7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ob3B0aW9ucykpIHsK
KyAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zPihvcHRpb25zKSkgewogICAgICAgICBpZiAoYXV0byBhdXRoZW50aWNhdG9yU2Vs
ZWN0aW9uID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ob3B0
aW9ucykuYXV0aGVudGljYXRvclNlbGVjdGlvbikKICAgICAgICAgICAgIHJldHVybiBhdXRoZW50
aWNhdG9yU2VsZWN0aW9uLT51c2VyVmVyaWZpY2F0aW9uOwogICAgICAgICByZXR1cm4gVXNlclZl
cmlmaWNhdGlvblJlcXVpcmVtZW50OjpQcmVmZXJyZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCmluZGV4IDJmMWMzYjVl
NzEyMmMzNmViMmFhMGVlZDUwNDFjZTg0NzI2MzMyOGMuLjU0NDJhOWU5NzVkZmFjZDQwZGQyYzQx
NDU4NmRhN2NmODMwYTlhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBWZWN0b3I8UGFzdGVib2EKICAgICBTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbkRhdGE7CiAgICAg
Y29uc3QgYXV0byYgY3VzdG9tRGF0YSA9IGRhdGFbMF07CiAgICAgY3VzdG9tRGF0YS5mb3JFYWNo
UGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihbJnNlbGVjdGlvbkRhdGFdIChhdXRvJiB0eXBlLCBhdXRv
JiBzdHJpbmdPckJ1ZmZlcikgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxT
dHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgaWYgKHR5cGUgPT0g
InRleHQvcGxhaW4iX3MpCiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uRGF0YS5zZXRUZXh0KFdU
Rjo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHR5
cGUgPT0gInRleHQvaHRtbCJfcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcAppbmRleCA0NDg4NmFlOTU5OTZkZjk0MDQyMzc0N2MzZTBjNjE5YzQ4
YTc1NmQzLi5iMTZhNWQ3YzBlMmFkOTkxMmU4MTFjY2JmOGM3OTVkNDI5OWFhN2YxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC05OCw3
ICs5OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFjCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBoYW5kbGUpCiB7Ci0gICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPihoYW5kbGUpKSB7CisgICAgaWYgKCFzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPihoYW5kbGUpKSB7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDhjZWM5MjQyNjg3NTE0YzZjMmM3N2I3ODk4
YzBhMzRjOTA3ZDViYzQuLjg3NTVmYmFkZjNiZjE2MDg3OWM2M2I3OTQ2ODY2M2M1ZTUyMzczNTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0zMzksNyArMzM5LDcgQEAgcHJvdGVj
dGVkOgogCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9m
TGluZShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtJiBpdGVtKSBj
b25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQoW10oY29uc3QgYXV0
byYgZGlzcGxheUxpc3RJdGVtKSAtPiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB7Cisg
ICAgICAgIHJldHVybiBzdGQ6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSkg
LT4gUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gewogICAgICAgICAgICAgdXNpbmcgRGlz
cGxheUxpc3RJdGVtVHlwZSA9IHR5cGVuYW1lIFdURjo6UmVtb3ZlQ1ZBbmRSZWZlcmVuY2U8ZGVj
bHR5cGUoZGlzcGxheUxpc3RJdGVtKT46OnR5cGU7CiAgICAgICAgICAgICBpZiBjb25zdGV4cHIg
KCFEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0lubGluZUl0ZW0pCiAgICAgICAgICAgICAgICAgcmV0
dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PERpc3BsYXlMaXN0SXRlbVR5cGU+
KGRpc3BsYXlMaXN0SXRlbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNjBlODllMTQ2MDlkZmNlMGRm
MWRhZDM2ODVkYWZkODQ4ODUyYzIzNS4uNmQzMzk1MzA2YTE2OGZiNTFjMWNlY2ZhMmViMmQzMzAw
ODlkNjFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzaXplX3QgSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVFeHRlcm5hbE1lbW9yeUNv
c3QoY29uc3QgUAogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFu
ZGxlKQogewotICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNYWNoU2VuZFJpZ2h0Piho
YW5kbGUpKSB7CisgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hTZW5kUmlnaHQ+
KGhhbmRsZSkpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3Vy
ZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4
IDc1NzJlMDdlNDRhOTdkNDZiOTAyYzFlYTY3NGJjMjVmNzhlYzY4NTMuLjEwMGQ2NGI1Zjk3Mjgw
OGEwMTdkZWIzY2IzNzkyYmI2ZTI1ZDhlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1
cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAK
QEAgLTYwLDcgKzYwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFw
cGVkSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGUKIAogc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZm
ZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKIHsKLSAgICBp
ZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSkgeworICAg
IGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSB7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGY5NThmZTZk
NGIyMGYyNGM0ODJiMzU2NjYxNmQ5ZTI1NjM2OGU5NjcuLmM5ZTJjY2Y3MDlmYWYzYjQzYWUzY2U1
OWYzMWIyZTQxMjg2YWU3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1l
c3NhZ2UpIHsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRC
dWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQogICAgICAgICAgICAgbV9y
ZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
V1RGOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKaW5kZXggMWNj
ZWRkOWM1ODE2OTE1YjFlZGFiMzg3ZTY3ZmMwNjZhZWQ1ZGU0Ny4uMGQ5OWFkZTE0OGY2NjAzMzI3
NGE5ZDVkMTcwNWVmMzljNWYwZjEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3Rr
LmNwcApAQCAtNjUsNyArNjUsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6ZXhlY3V0ZVBlbmRp
bmdFZGl0b3JDb21tYW5kcyhGcmFtZSYgZnJhbWUsIGNvbnN0IFZlY3RvcjxXVAogICAgIH0KIAog
ICAgIGZvciAoYXV0byYgY29tbWFuZFZhcmlhbnQgOiBjb21tYW5kcykgewotICAgICAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGNvbW1hbmRWYXJpYW50KSkgeworICAgICAg
ICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGNvbW1hbmRWYXJpYW50KSkgewog
ICAgICAgICAgICAgaWYgKCFoYW5kbGVHdGtFZGl0b3JDb21tYW5kKGZyYW1lLCBXVEY6OmdldDxT
dHJpbmc+KGNvbW1hbmRWYXJpYW50KSwgYWxsb3dUZXh0SW5zZXJ0aW9uKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJv
eHkubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tp
bmdDb250cm9sbGVyUHJveHkubW0KaW5kZXggYzBmODdlNTRlYWE4MTlmM2IzYTE3ZjE3YWI4NTVl
OTE0YzU4YTZmOC4uNjY0ZTk4MTUyODc0N2FjM2MxYWYzNGEzNDEzY2U3ZTllYTEzZTQyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNr
aW5nQ29udHJvbGxlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQpAQCAtMTU3LDcgKzE1Nyw3
IEBAIHZvaWQgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpyZW1vdmVBbm5vdGF0aW9uUmVs
YXRpdmVUb1NlbGVjdGlvbihjb25zdCBTdHJpCiAgICAgYXV0byB0eXBlcyA9IHJlbW92ZUNvcmVT
cGVsbGluZ01hcmtlcnMgPyByZWxldmFudE1hcmtlclR5cGVzKCkgOiBXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlcjo6UGxhdGZvcm1UZXh0Q2hlY2tpbmc7CiAgICAgUmVmUHRyIGRvY3VtZW50ID0gQ2hl
Y2tlZFJlZihtX3BhZ2UuY29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKS5kb2N1bWVudCgpOwogICAgIGRvY3VtZW50LT5tYXJrZXJzKCkuZmlsdGVyTWFy
a2VycyhyYW5nZUFuZE9mZnNldC0+cmFuZ2UsIFsmXSAoY29uc3QgRG9jdW1lbnRNYXJrZXImIG1h
cmtlcikgewotICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8V2ViQ29yZTo6RG9j
dW1lbnRNYXJrZXI6OlBsYXRmb3JtVGV4dENoZWNraW5nRGF0YT4obWFya2VyLmRhdGEoKSkpCisg
ICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxXZWJDb3JlOjpEb2N1bWVudE1hcmtl
cjo6UGxhdGZvcm1UZXh0Q2hlY2tpbmdEYXRhPihtYXJrZXIuZGF0YSgpKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFdlYkNvcmU6OkRvY3VtZW50
TWFya2VyOjpQbGF0Zm9ybVRleHRDaGVja2luZ0RhdGE+KG1hcmtlci5kYXRhKCkpLmtleSAhPSBh
bm5vdGF0aW9uOwogICAgIH0sIHR5cGVzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNDE5Y2U3NjQ1YzYwZGI5ZDdhMjY2NTA3NzQxMjRlN2Zk
ODI3YTdhLi4yMGJhZTAyMGRlNWQ3MGVjZGQxZTAzMzE1ODlkOGI2MDZhOTU1N2Y4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMjEtMTAtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBVc2UgU1RMIGluc3RlYWQgb2YgV1RGOjpnZXRfaWYsIFdURjo6TW9ub3N0
YXRlLCBXVEY6OnZpc2l0LCBhbmQgV1RGOjpob2xkc19hbHRlcm5hdGl2ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNTgyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9WYXJpYW50LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQubW06CisgICAgICAgIChhZGRWYWx1ZXNUb1RhYmxlKToKKwogMjAyMS0xMC0xMSAgRGllZ28g
UGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVucmV2aWV3
ZWQgYnVpbGQgZml4LiBGaXggYnVpbGQgZm9yIERlYmlhbiAxMCAoQnVzdGVyKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcAppbmRleCAyODQ0YmZkMzg2MTExMTMzZjAx
MjlmOTc2ZTg4MDVlN2Q2MTM4YjRjLi42MWRiYjk0YTk0MWVkMTllMGJjYWQ4MTFhZTYwODg2MjZm
NmUwZjIzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcApAQCAt
NTYsMTggKzU2LDE4IEBAIFRFU1QoV1RGX1ZhcmlhbnQsIEJhc2ljKQogICAgIFZhcmlhbnQ8aW50
LCBkb3VibGU+IHZhcmlhbnQgPSAxOwogICAgIEVYUEVDVF9UUlVFKHZhcmlhbnQuaW5kZXgoKSA9
PSAwKTsKICAgICBFWFBFQ1RfVFJVRShXVEY6OmdldDxpbnQ+KHZhcmlhbnQpID09IDEpOwotICAg
IEVYUEVDVF9FUSgqV1RGOjpnZXRfaWY8aW50PigmdmFyaWFudCksIDEpOwotICAgIEVYUEVDVF9F
UShXVEY6OmdldF9pZjxkb3VibGU+KCZ2YXJpYW50KSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX1RS
VUUoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxpbnQ+KHZhcmlhbnQpKTsKLSAgICBFWFBFQ1RfRkFM
U0UoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KHZhcmlhbnQpKTsKKyAgICBFWFBFQ1Rf
RVEoKnN0ZDo6Z2V0X2lmPGludD4oJnZhcmlhbnQpLCAxKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpn
ZXRfaWY8ZG91YmxlPigmdmFyaWFudCksIG51bGxwdHIpOworICAgIEVYUEVDVF9UUlVFKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8aW50Pih2YXJpYW50KSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPih2YXJpYW50KSk7CiAKICAgICB2YXJpYW50ID0gMS4w
OwogICAgIEVYUEVDVF9UUlVFKHZhcmlhbnQuaW5kZXgoKSA9PSAxKTsKICAgICBFWFBFQ1RfVFJV
RShXVEY6OmdldDxkb3VibGU+KHZhcmlhbnQpID09IDEpOwotICAgIEVYUEVDVF9FUSgqV1RGOjpn
ZXRfaWY8ZG91YmxlPigmdmFyaWFudCksIDEuMCk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Z2V0X2lm
PGludD4oJnZhcmlhbnQpLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfVFJVRShXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPGRvdWJsZT4odmFyaWFudCkpOwotICAgIEVYUEVDVF9GQUxTRShXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPGludD4odmFyaWFudCkpOworICAgIEVYUEVDVF9FUSgqc3RkOjpnZXRfaWY8
ZG91YmxlPigmdmFyaWFudCksIDEuMCk7CisgICAgRVhQRUNUX0VRKHN0ZDo6Z2V0X2lmPGludD4o
JnZhcmlhbnQpLCBudWxscHRyKTsKKyAgICBFWFBFQ1RfVFJVRShzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPGRvdWJsZT4odmFyaWFudCkpOworICAgIEVYUEVDVF9GQUxTRShzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPGludD4odmFyaWFudCkpOwogfQogCiBURVNUKFdURl9WYXJpYW50LCBCYXNpY1Zpc2l0
b3IpCkBAIC05NSwxNyArOTUsMTcgQEAgVEVTVChXVEZfVmFyaWFudCwgQmFzaWNWaXNpdG9yKQog
ICAgIFR5cGUgdHlwZSA9IFR5cGU6Ok5vbmU7CiAKICAgICBWYXJpYW50PGludCwgZmxvYXQsIFN0
cmluZz4gdmFyaWFudCA9IDg7Ci0gICAgV1RGOjp2aXNpdChWaXNpdG9yKHR5cGUpLCB2YXJpYW50
KTsKKyAgICBzdGQ6OnZpc2l0KFZpc2l0b3IodHlwZSksIHZhcmlhbnQpOwogICAgIEVYUEVDVF9U
UlVFKFR5cGU6OkludCA9PSB0eXBlKTsKIAogCiAgICAgdmFyaWFudCA9IDEuMGY7Ci0gICAgV1RG
Ojp2aXNpdChWaXNpdG9yKHR5cGUpLCB2YXJpYW50KTsKKyAgICBzdGQ6OnZpc2l0KFZpc2l0b3Io
dHlwZSksIHZhcmlhbnQpOwogICAgIEVYUEVDVF9UUlVFKFR5cGU6OkZsb2F0ID09IHR5cGUpOwog
CiAKICAgICB2YXJpYW50ID0gImhlbGxvIjsKLSAgICBXVEY6OnZpc2l0KFZpc2l0b3IodHlwZSks
IHZhcmlhbnQpOworICAgIHN0ZDo6dmlzaXQoVmlzaXRvcih0eXBlKSwgdmFyaWFudCk7CiAgICAg
RVhQRUNUX1RSVUUoVHlwZTo6U3RyaW5nID09IHR5cGUpOwogfQogCkBAIC0xMjgsMTEgKzEyOCwx
MSBAQCBURVNUKFdURl9WYXJpYW50LCBSZXRhaW5QdHIpCiAgICAgUmVmUHRyPFJlZkxvZ2dlcj4g
cmVmUHRyOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJldGFpblB0cjsKICAgICBWYXJpYW50
PFJlZlB0cjxSZWZMb2dnZXI+LCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4gdmFyaWFudChXVEZNb3Zl
KHJlZlB0cikpOwotICAgIFdURjo6dmlzaXQodmlzaXRvciwgdmFyaWFudCk7CisgICAgc3RkOjp2
aXNpdCh2aXNpdG9yLCB2YXJpYW50KTsKICAgICBFWFBFQ1RfVFJVRShUeXBlOjpSZWZQdHIgPT0g
dHlwZSk7CiAgICAgCiAgICAgdmFyaWFudCA9IFdURk1vdmUocmV0YWluUHRyKTsKLSAgICBXVEY6
OnZpc2l0KHZpc2l0b3IsIHZhcmlhbnQpOworICAgIHN0ZDo6dmlzaXQodmlzaXRvciwgdmFyaWFu
dCk7CiAgICAgRVhQRUNUX1RSVUUoVHlwZTo6UmV0YWluUHRyID09IHR5cGUpOwogfQogI2VuZGlm
CkBAIC0xNTUsMTcgKzE1NSwxNyBAQCBURVNUKFdURl9WYXJpYW50LCBWaXNpdG9yVXNpbmdNYWtl
VmlzaXRvcikKICAgICApOwogCiAgICAgVmFyaWFudDxpbnQsIGZsb2F0LCBTdHJpbmc+IHZhcmlh
bnQgPSA4OwotICAgIFdURjo6dmlzaXQodmlzaXRvciwgdmFyaWFudCk7CisgICAgc3RkOjp2aXNp
dCh2aXNpdG9yLCB2YXJpYW50KTsKICAgICBFWFBFQ1RfVFJVRShUeXBlOjpJbnQgPT0gdHlwZSk7
CiAKIAogICAgIHZhcmlhbnQgPSAxLjBmOwotICAgIFdURjo6dmlzaXQodmlzaXRvciwgdmFyaWFu
dCk7CisgICAgc3RkOjp2aXNpdCh2aXNpdG9yLCB2YXJpYW50KTsKICAgICBFWFBFQ1RfVFJVRShU
eXBlOjpGbG9hdCA9PSB0eXBlKTsKIAogCiAgICAgdmFyaWFudCA9ICJoZWxsbyI7Ci0gICAgV1RG
Ojp2aXNpdCh2aXNpdG9yLCB2YXJpYW50KTsKKyAgICBzdGQ6OnZpc2l0KHZpc2l0b3IsIHZhcmlh
bnQpOwogICAgIEVYUEVDVF9UUlVFKFR5cGU6OlN0cmluZyA9PSB0eXBlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQubW0KaW5kZXggN2ZiYmYyMmQ4NmFiNDQ1NzlmMTVlNzc4Njdk
NmM5NGUyZjA5ZjE4MS4uYjQ3MGRmNzQ5MTA2Y2IwZWEyMDE2MDQ1MTg4ZTI4YjgyOWEzNjY4NyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1tCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQg
YWRkVmFsdWVzVG9UYWJsZShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UsIEFTQ0lJ
TGl0ZXJhbCBxdWVyeSwgc3RkCiAgICAgICAgIH0sIFsmXSAoZG91YmxlIHJlYWwpIHsKICAgICAg
ICAgICAgIHJldHVybiBzdGF0ZW1lbnQtPmJpbmREb3VibGUoaSArIDEsIHJlYWwpOwogICAgICAg
ICB9KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBXVEY6OnZpc2l0KHZpc2l0b3IsIHZhbHVlc1tp
XSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gc3RkOjp2aXNpdCh2aXNpdG9yLCB2YWx1ZXNbaV0p
OwogICAgICAgICBFWFBFQ1RfRVEocmVzdWx0LCBTUUxJVEVfT0spOwogICAgIH0KICAgICBFWFBF
Q1RfRVEoc3RhdGVtZW50LT5zdGVwKCksIFNRTElURV9ET05FKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>