<?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>219898</bug_id>
          
          <creation_ts>2020-12-15 10:21:50 -0800</creation_ts>
          <short_desc>Convert remaining FrameLoaderType enums to enum classes</short_desc>
          <delta_ts>2020-12-20 08:31:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</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="Rob Buis">rbuis</reporter>
          <assigned_to name="Rob Buis">rbuis</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1714801</commentid>
    <comment_count>0</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-15 10:21:50 -0800</bug_when>
    <thetext>Convert remaining FrameLoaderType enums to enum classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714810</commentid>
    <comment_count>1</comment_count>
      <attachid>416262</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-15 10:33:57 -0800</bug_when>
    <thetext>Created attachment 416262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714886</commentid>
    <comment_count>2</comment_count>
      <attachid>416282</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-15 13:07:38 -0800</bug_when>
    <thetext>Created attachment 416282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715933</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-19 23:19:05 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 416282 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715938</commentid>
    <comment_count>4</comment_count>
      <attachid>416582</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-20 06:54:00 -0800</bug_when>
    <thetext>Created attachment 416582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715945</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-20 08:29:40 -0800</bug_when>
    <thetext>Committed r271013: &lt;https://trac.webkit.org/changeset/271013&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416582.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715946</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-20 08:31:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/72528965&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416262</attachid>
            <date>2020-12-15 10:33:57 -0800</date>
            <delta_ts>2020-12-15 13:07:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219898-20201215193356.patch</filename>
            <type>text/plain</type>
            <size>36712</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDAwMzkyMTJmM2YwMzhj
MThmZGQ1NDM1ZTNhYTBmMzM0MTExZjNhMS4uZmY2YmQxMGFiNmJiMzI3MTI1YzAzOTViMzgzZDUz
ZmNkMzVjNmQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTEyLTE1ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgQ29udmVydCByZW1haW5pbmcgRnJh
bWVMb2FkZXJUeXBlIGVudW1zIHRvIGVudW0gY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5ODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCByZW1haW5pbmcgRnJhbWVMb2FkZXJU
eXBlIGVudW1zIHRvIGVudW0gY2xhc3Nlcy4KKyAgICAgICAgTm90IGNvbnZlcnRlZCBpcyBTaG91
bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwKKyAgICAgICAgc2luY2UgaXQgc2hvdWxk
IGJlIHJlbW92ZWQgZXZlbnR1YWxseS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6b3Blbik6CisgICAgICAgICogaGlzdG9yeS9CYWNr
Rm9yd2FyZENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkNhY2hlRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6ZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseSk6CisgICAgICAgICog
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpzdG9wTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aXNM
b2FkaW5nSW5BUElTZW5zZSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpjbG9zZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6c2V0dXBGb3JSZXBsYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdG9w
QWxsTG9hZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6YWN0aXZlRG9jdW1l
bnRMb2FkZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjbGVhclByb3Zpc2lvbmFsTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGV0YWNoRnJvbVBhcmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVjZWl2ZWRNYWluUmVzb3VyY2VFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hVbmxvYWRFdmVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdh
dGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmV0cnlBZnRlckZh
aWxlZENhY2hlT25seU1haW5SZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnNob3VsZFN1cHByZXNzVGV4dElucHV0RnJvbUVkaXRpbmcgY29uc3QpOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5
cGVzLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGUpOgorICAgICAgICAqIGxv
YWRlci9TdWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
U3ViZnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpsb2Fk
KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OnNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zIGNvbnN0KToKKwogMjAyMC0xMi0x
NSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSB3b3Jr
ZXIgUlRDIGluc2VydGFibGUgc3RyZWFtcyBjb25zdHJ1Y3RzIGNvbnRyb2xsZWQgYnkgd2VicnRj
IGluc2VydGFibGUgc3RyZWFtcyBmZWF0dXJlIHNldHRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGQxMzY3ZTk2
NWU0MzU0MGJiMjVhOTg1MDlmZDVlMGJjOGNhODEyYi4uMWI2YTgyYmRlOThkYjNlNWQyZTY2YzEw
Zjk1MTYyZDczMjUyMzk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0xMi0xNSAg
Um9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIENvbnZlcnQgcmVtYWluaW5n
IEZyYW1lTG9hZGVyVHlwZSBlbnVtcyB0byBlbnVtIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTg5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkYXB0IHRvIGVudW0gY2xhc3MgY2hhbmdl
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZy
YW1lLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlRnJhbWVHZXRGcmFtZUxvYWRTdGF0ZSk6CisKIDIw
MjAtMTItMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBhbGVydE1lc3NhZ2VUZXh0IHJlZ3Jlc3Npb24gZnJvbSBodHRwczovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMjY5OTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAwYzYzMDI3M2E5
NjgwNjkyODliYWVmYmVjMzcyNGFkNGQwOTE3NWYwLi41ZjViNDQ2NTY5MTU3ZGMzMDY5Mzc2Y2E1
YzQ4YmY3OTA3NDEwM2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI4ODQsNyArMjg4
NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50OjpvcGVuKERvY3VtZW50KiByZXNwb25z
aWJsZURvY3VtZW50KQogCiAgICAgICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS5wb2xpY3lDaGVj
a2VyKCkuZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeSgpKQogICAgICAgICAgICAg
bV9mcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLnN0b3BDaGVjaygpOwotICAgICAgICBp
ZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5sb2FkZXIoKS5zdGF0ZSgpID09IEZyYW1lU3RhdGVQcm92
aXNpb25hbCkKKyAgICAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+bG9hZGVyKCkuc3RhdGUo
KSA9PSBGcmFtZVN0YXRlOjpQcm92aXNpb25hbCkKICAgICAgICAgICAgIG1fZnJhbWUtPmxvYWRl
cigpLnN0b3BBbGxMb2FkZXJzKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9C
YWNrRm9yd2FyZENhY2hlLmNwcAppbmRleCA5Y2NmNWRlYTU3OTlhNGNjNDQyNTBlOWMxZGFiNWRl
ZGQ1NDI5MDRmLi4yN2VkNzRjZDIxZDM2YWU3MGMzNWE4ZjBiMjA5MWIwYjVhNDc3YjkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAgLTgwLDcgKzgw
LDcgQEAgc3RhdGljIGJvb2wgY2FuQ2FjaGVGcmFtZShGcmFtZSYgZnJhbWUsIERpYWdub3N0aWNM
b2dnaW5nQ2xpZW50JiBkaWFnbm9zdGljTG9nZ2kKIAogICAgIC8vIFByZXZlbnQgcGFnZSBjYWNo
aW5nIGlmIGEgc3ViZnJhbWUgaXMgc3RpbGwgaW4gcHJvdmlzaW9uYWwgbG9hZCBzdGFnZS4KICAg
ICAvLyBXZSBvbmx5IGRvIHRoaXMgY2hlY2sgZm9yIHN1YmZyYW1lcyBiZWNhdXNlIHRoZSBtYWlu
IGZyYW1lIGlzIHJldXNlZCB3aGVuIG5hdmlnYXRpbmcgdG8gYSBuZXcgcGFnZS4KLSAgICBpZiAo
IWZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgZnJhbWVMb2FkZXIuc3RhdGUoKSA9PSBGcmFtZVN0YXRl
UHJvdmlzaW9uYWwpIHsKKyAgICBpZiAoIWZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgZnJhbWVMb2Fk
ZXIuc3RhdGUoKSA9PSBGcmFtZVN0YXRlOjpQcm92aXNpb25hbCkgewogICAgICAgICBQQ0xPRygi
ICAgLUZyYW1lIGlzIGluIHByb3Zpc2lvbmFsIGxvYWQgc3RhZ2UiKTsKICAgICAgICAgbG9nQmFj
a0ZvcndhcmRDYWNoZUZhaWx1cmVEaWFnbm9zdGljTWVzc2FnZShkaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpwcm92aXNpb25hbExvYWRLZXkoKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTQyMCw3ICs0MjAsNyBAQCBzdGF0aWMgdm9pZCBmaXJlUGFn
ZUhpZGVFdmVudFJlY3Vyc2l2ZWx5KEZyYW1lJiBmcmFtZSkKICAgICAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2Vycy5odG1sI3VubG9hZC1hLWRvY3VtZW50
CiAgICAgSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyIGlnbm9yZU9wZW5z
RHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlcihkb2N1bWVudCk7CiAKLSAgICBmcmFtZS5sb2Fk
ZXIoKS5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeVVubG9hZEFuZFBhZ2VIaWRlKTsKKyAg
ICBmcmFtZS5sb2FkZXIoKS5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeTo6VW5sb2FkQW5k
UGFnZUhpZGUpOwogCiAgICAgZm9yIChSZWZQdHI8RnJhbWU+IGNoaWxkID0gZnJhbWUudHJlZSgp
LmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygp
KQogICAgICAgICBmaXJlUGFnZUhpZGVFdmVudFJlY3Vyc2l2ZWx5KCpjaGlsZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAyNjg5NGYzOWY0ZTY5ZmU4Yjcz
MDA3OGRiNzgxZWIyZGVmZDhmZjU1Li5kYmE4YTQ0M2ZmOWRkYzMzMzBhOTgwYzY0NzRiMGRkM2Fh
MWM3ZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTMx
OSw3ICszMTksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiAgICAgICAg
IERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICAKICAgICAgICAg
aWYgKGxvYWRpbmcgfHwgZG9jLT5wYXJzaW5nKCkpCi0gICAgICAgICAgICBtX2ZyYW1lLT5sb2Fk
ZXIoKS5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeU5vbmUpOworICAgICAgICAgICAgbV9m
cmFtZS0+bG9hZGVyKCkuc3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3k6Ok5vbmUpOwogICAg
IH0KIAogICAgIGZvciAoYXV0byBjYWxsYmFja0lkZW50aWZpZXIgOiBtX2ljb25Mb2FkZXJzLnZh
bHVlcygpKQpAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2Fk
aW5nSW5BUElTZW5zZSgpIGNvbnN0CiB7CiAgICAgLy8gT25jZSBhIGZyYW1lIGhhcyBsb2FkZWQs
IHdlIG5vIGxvbmdlciBuZWVkIHRvIGNvbnNpZGVyIHN1YnJlc291cmNlcywKICAgICAvLyBidXQg
d2Ugc3RpbGwgbmVlZCB0byBjb25zaWRlciBzdWJmcmFtZXMuCi0gICAgaWYgKGZyYW1lTG9hZGVy
KCktPnN0YXRlKCkgIT0gRnJhbWVTdGF0ZUNvbXBsZXRlKSB7CisgICAgaWYgKGZyYW1lTG9hZGVy
KCktPnN0YXRlKCkgIT0gRnJhbWVTdGF0ZTo6Q29tcGxldGUpIHsKICAgICAgICAgaWYgKG1fZnJh
bWUtPnNldHRpbmdzKCkubmVlZHNJc0xvYWRpbmdJbkFQSVNlbnNlUXVpcmsoKSAmJiAhbV9zdWJy
ZXNvdXJjZUxvYWRlcnMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGQ0NmY4MmI4MDYyZWQ0MDQwOWE1
ZTYyYWJiZjI1NDIxNmJhNjc1NTguLjYyM2IxOWM1ZmE5MDIyMDEzMjcwOThlMzk2NmZjNGI1Y2Q5
NGNlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjk4LDcgKzI5
OCw3IEBAIEZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcihGcmFtZSYgZnJhbWUsIFVuaXF1ZVJlZjxG
cmFtZUxvYWRlckNsaWVudD4mJiBjbGllbnQpCiAgICAgLCBtX25vdGlmaWVyKGZyYW1lKQogICAg
ICwgbV9zdWJmcmFtZUxvYWRlcihtYWtlVW5pcXVlPFN1YmZyYW1lTG9hZGVyPihmcmFtZSkpCiAg
ICAgLCBtX21peGVkQ29udGVudENoZWNrZXIoZnJhbWUpCi0gICAgLCBtX3N0YXRlKEZyYW1lU3Rh
dGVQcm92aXNpb25hbCkKKyAgICAsIG1fc3RhdGUoRnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWwpCiAg
ICAgLCBtX2xvYWRUeXBlKEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkKQogICAgICwgbV9xdWlja1Jl
ZGlyZWN0Q29taW5nKGZhbHNlKQogICAgICwgbV9zZW50UmVkaXJlY3ROb3RpZmljYXRpb24oZmFs
c2UpCkBAIC0zNjgsNyArMzY4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNp
emVkRG9jdW1lbnQoY29uc3QgVVJMJikKIAogICAgIG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2UgPSB0
cnVlOwogICAgIG1faXNDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9zdGF0ZSA9IEZyYW1lU3RhdGVD
b21wbGV0ZTsKKyAgICBtX3N0YXRlID0gRnJhbWVTdGF0ZTo6Q29tcGxldGU7CiAgICAgbV9uZWVk
c0NsZWFyID0gdHJ1ZTsKIAogICAgIG1fbmV0d29ya2luZ0NvbnRleHQgPSBtX2NsaWVudC0+Y3Jl
YXRlTmV0d29ya2luZ0NvbnRleHQoKTsKQEAgLTUyMyw3ICs1MjMsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpzdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeSB1bmxvYWRFdmVudFBvbGljeSkKICAg
ICBpZiAobV9mcmFtZS5kb2N1bWVudCgpICYmIG1fZnJhbWUuZG9jdW1lbnQoKS0+cGFyc2VyKCkp
CiAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+cGFyc2VyKCktPnN0b3BQYXJzaW5nKCk7CiAK
LSAgICBpZiAodW5sb2FkRXZlbnRQb2xpY3kgIT0gVW5sb2FkRXZlbnRQb2xpY3lOb25lKQorICAg
IGlmICh1bmxvYWRFdmVudFBvbGljeSAhPSBVbmxvYWRFdmVudFBvbGljeTo6Tm9uZSkKICAgICAg
ICAgZGlzcGF0Y2hVbmxvYWRFdmVudHModW5sb2FkRXZlbnRQb2xpY3kpOwogCiAgICAgbV9pc0Nv
bXBsZXRlID0gdHJ1ZTsgLy8gdG8gYXZvaWQgY2FsbGluZyBjb21wbGV0ZWQoKSBpbiBmaW5pc2hl
ZFBhcnNpbmcoKQpAQCAtNTY1LDEwICs1NjUsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xvc2VV
UkwoKQogICAgIFVubG9hZEV2ZW50UG9saWN5IHVubG9hZEV2ZW50UG9saWN5OwogICAgIGlmICht
X2ZyYW1lLnBhZ2UoKSAmJiBtX2ZyYW1lLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuaXNTVkdJ
bWFnZUNocm9tZUNsaWVudCgpKSB7CiAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhlIFNWR0RvY3Vt
ZW50IG9mIGFuIFNWR0ltYWdlLCBubyBuZWVkIHRvIGRpc3BhdGNoIGV2ZW50cyBvciByZWNhbGNT
dHlsZS4KLSAgICAgICAgdW5sb2FkRXZlbnRQb2xpY3kgPSBVbmxvYWRFdmVudFBvbGljeU5vbmU7
CisgICAgICAgIHVubG9hZEV2ZW50UG9saWN5ID0gVW5sb2FkRXZlbnRQb2xpY3k6Ok5vbmU7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgLy8gU2hvdWxkIG9ubHkgc2VuZCB0aGUgcGFnZWhpZGUgZXZl
bnQgaGVyZSBpZiB0aGUgY3VycmVudCBkb2N1bWVudCBleGlzdHMgYW5kIGhhcyBub3QgYmVlbiBw
bGFjZWQgaW4gdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4KLSAgICAgICAgdW5sb2FkRXZlbnRQb2xp
Y3kgPSBjdXJyZW50RG9jdW1lbnQgJiYgY3VycmVudERvY3VtZW50LT5iYWNrRm9yd2FyZENhY2hl
U3RhdGUoKSA9PSBEb2N1bWVudDo6Tm90SW5CYWNrRm9yd2FyZENhY2hlID8gVW5sb2FkRXZlbnRQ
b2xpY3lVbmxvYWRBbmRQYWdlSGlkZSA6IFVubG9hZEV2ZW50UG9saWN5VW5sb2FkT25seTsKKyAg
ICAgICAgdW5sb2FkRXZlbnRQb2xpY3kgPSBjdXJyZW50RG9jdW1lbnQgJiYgY3VycmVudERvY3Vt
ZW50LT5iYWNrRm9yd2FyZENhY2hlU3RhdGUoKSA9PSBEb2N1bWVudDo6Tm90SW5CYWNrRm9yd2Fy
ZENhY2hlID8gVW5sb2FkRXZlbnRQb2xpY3k6OlVubG9hZEFuZFBhZ2VIaWRlIDogVW5sb2FkRXZl
bnRQb2xpY3k6OlVubG9hZE9ubHk7CiAgICAgfQogCiAgICAgc3RvcExvYWRpbmcodW5sb2FkRXZl
bnRQb2xpY3kpOwpAQCAtMTIzMyw3ICsxMjMzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cHJlcGFy
ZUZvckxvYWRTdGFydCgpCiB2b2lkIEZyYW1lTG9hZGVyOjpzZXR1cEZvclJlcGxhY2UoKQogewog
ICAgIG1fY2xpZW50LT5yZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUobV9kb2N1bWVudExvYWRlci5n
ZXQoKSk7Ci0gICAgc2V0U3RhdGUoRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKTsKKyAgICBzZXRTdGF0
ZShGcmFtZVN0YXRlOjpQcm92aXNpb25hbCk7CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyID0gbV9kb2N1bWVudExvYWRlcjsKICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9B
TExPV0VEKFJlc291cmNlTG9hZGluZywgInNldHVwRm9yUmVwbGFjZTogU2V0dGluZyBwcm92aXNp
b25hbCBkb2N1bWVudCBsb2FkZXIgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBt
X3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogICAgIG1fZG9jdW1lbnRMb2FkZXIg
PSBudWxscHRyOwpAQCAtMTc4OSw3ICsxNzg5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2Fk
KE9wdGlvblNldDxSZWxvYWRPcHRpb24+IG9wdGlvbnMpCiAgICAgbG9hZFdpdGhEb2N1bWVudExv
YWRlcihsb2FkZXIucHRyKCksIGZyYW1lTG9hZFR5cGVGb3JSZWxvYWRPcHRpb25zKG9wdGlvbnMp
LCB7IH0sIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kgY2xlYXJQ
cm92aXNpb25hbEl0ZW1Qb2xpY3ksIFN0b3BMb2FkaW5nUG9saWN5IHN0b3BMb2FkaW5nUG9saWN5
KQordm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW0g
Y2xlYXJQcm92aXNpb25hbEl0ZW0sIFN0b3BMb2FkaW5nUG9saWN5IHN0b3BMb2FkaW5nUG9saWN5
KQogewogICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkgJiYgbV9mcmFtZS5kb2N1bWVudCgpLT5i
YWNrRm9yd2FyZENhY2hlU3RhdGUoKSA9PSBEb2N1bWVudDo6SW5CYWNrRm9yd2FyZENhY2hlKQog
ICAgICAgICByZXR1cm47CkBAIC0xODE0LDExICsxODE0LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnN0b3BBbGxMb2FkZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5IGNsZWFyUHJvdmlzaW9u
YWxJdGVtCiAKICAgICAvLyBJZiBubyBuZXcgbG9hZCBpcyBpbiBwcm9ncmVzcywgd2Ugc2hvdWxk
IGNsZWFyIHRoZSBwcm92aXNpb25hbCBpdGVtIGZyb20gaGlzdG9yeQogICAgIC8vIGJlZm9yZSB3
ZSBjYWxsIHN0b3BMb2FkaW5nLgotICAgIGlmIChjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSA9
PSBTaG91bGRDbGVhclByb3Zpc2lvbmFsSXRlbSkKKyAgICBpZiAoY2xlYXJQcm92aXNpb25hbEl0
ZW0gPT0gQ2xlYXJQcm92aXNpb25hbEl0ZW06OlllcykKICAgICAgICAgaGlzdG9yeSgpLnNldFBy
b3Zpc2lvbmFsSXRlbShudWxscHRyKTsKIAogICAgIGZvciAoUmVmUHRyPEZyYW1lPiBjaGlsZCA9
IG1fZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUo
KS5uZXh0U2libGluZygpKQotICAgICAgICBjaGlsZC0+bG9hZGVyKCkuc3RvcEFsbExvYWRlcnMo
Y2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kpOworICAgICAgICBjaGlsZC0+bG9hZGVyKCkuc3Rv
cEFsbExvYWRlcnMoY2xlYXJQcm92aXNpb25hbEl0ZW0pOwogCiAgICAgRlJBTUVMT0FERVJfUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJzdG9wQWxsTG9hZGVyczogbV9w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwLCBtX2RvY3VtZW50TG9hZGVyPSVwIiwgbV9wcm92
aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpKTsKIApA
QCAtMTg5NCw3ICsxODk0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEZvclVzZXJDYW5jZWwo
Ym9vbCBkZWZlckNoZWNrTG9hZENvbXBsZXRlKQogCiBEb2N1bWVudExvYWRlciogRnJhbWVMb2Fk
ZXI6OmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgY29uc3QKIHsKLSAgICBpZiAobV9zdGF0ZSA9PSBG
cmFtZVN0YXRlUHJvdmlzaW9uYWwpCisgICAgaWYgKG1fc3RhdGUgPT0gRnJhbWVTdGF0ZTo6UHJv
dmlzaW9uYWwpCiAgICAgICAgIHJldHVybiBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0
KCk7CiAgICAgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCk7CiB9CkBAIC0xOTc4LDkgKzE5
NzgsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRTdGF0ZShGcmFtZVN0YXRlIG5ld1N0YXRlKQog
ICAgIEZyYW1lU3RhdGUgb2xkU3RhdGUgPSBtX3N0YXRlOwogICAgIG1fc3RhdGUgPSBuZXdTdGF0
ZTsKICAgICAKLSAgICBpZiAobmV3U3RhdGUgPT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQorICAg
IGlmIChuZXdTdGF0ZSA9PSBGcmFtZVN0YXRlOjpQcm92aXNpb25hbCkKICAgICAgICAgcHJvdmlz
aW9uYWxMb2FkU3RhcnRlZCgpOwotICAgIGVsc2UgaWYgKG5ld1N0YXRlID09IEZyYW1lU3RhdGVD
b21wbGV0ZSkgeworICAgIGVsc2UgaWYgKG5ld1N0YXRlID09IEZyYW1lU3RhdGU6OkNvbXBsZXRl
KSB7CiAgICAgICAgIGZyYW1lTG9hZENvbXBsZXRlZCgpOwogICAgICAgICBpZiAobV9kb2N1bWVu
dExvYWRlcikKICAgICAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnN0b3BSZWNvcmRpbmdSZXNw
b25zZXMoKTsKQEAgLTE5OTYsNyArMTk5Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsZWFyUHJv
dmlzaW9uYWxMb2FkKCkKICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJl
c291cmNlTG9hZGluZywgImNsZWFyUHJvdmlzaW9uYWxMb2FkOiBDbGVhcmluZyBwcm92aXNpb25h
bCBkb2N1bWVudCBsb2FkZXIgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3By
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIobnVsbHB0cik7CiAgICAgbV9wcm9ncmVzc1RyYWNrZXItPnByb2dyZXNzQ29tcGxl
dGVkKCk7Ci0gICAgc2V0U3RhdGUoRnJhbWVTdGF0ZUNvbXBsZXRlKTsKKyAgICBzZXRTdGF0ZShG
cmFtZVN0YXRlOjpDb21wbGV0ZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zp
c2lvbmFsTG9hZCgpCkBAIC0yMTQyLDkgKzIxNDIsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21t
aXRQcm92aXNpb25hbExvYWQoKQogdm9pZCBGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0
dGVkKENhY2hlZFBhZ2UqIGNhY2hlZFBhZ2UpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50LT5oYXNX
ZWJWaWV3KCkpOwotICAgIEFTU0VSVChtX3N0YXRlID09IEZyYW1lU3RhdGVQcm92aXNpb25hbCk7
CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gRnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWwpOwogCi0gICAg
aWYgKG1fc3RhdGUgIT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQorICAgIGlmIChtX3N0YXRlICE9
IEZyYW1lU3RhdGU6OlByb3Zpc2lvbmFsKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoRnJh
bWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKQEAgLTIxNzksNyArMjE3OSw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZChDYWNoZWRQYWdlKiBjYWNoZWRQ
YWdlKQogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAKICAgICAv
LyBOb3RoaW5nIGVsc2UgY2FuIGludGVycnVwdCB0aGlzIGNvbW1pdCAtIHNldCB0aGUgUHJvdmlz
aW9uYWwtPkNvbW1pdHRlZCB0cmFuc2l0aW9uIGluIHN0b25lCi0gICAgc2V0U3RhdGUoRnJhbWVT
dGF0ZUNvbW1pdHRlZFBhZ2UpOworICAgIHNldFN0YXRlKEZyYW1lU3RhdGU6OkNvbW1pdHRlZFBh
Z2UpOwogCiAgICAgLy8gSGFuZGxlIGFkZGluZyB0aGUgVVJMIHRvIHRoZSBiYWNrL2ZvcndhcmQg
bGlzdC4KICAgICBhdXRvIGRvY3VtZW50TG9hZGVyID0gbV9kb2N1bWVudExvYWRlcjsKQEAgLTI0
OTEsMTM0ICsyNDkxLDEzNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZv
clRoaXNGcmFtZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN3aXRjaCAobV9zdGF0ZSkgewot
ICAgICAgICBjYXNlIEZyYW1lU3RhdGVQcm92aXNpb25hbDogewotICAgICAgICAgICAgLy8gRklY
TUU6IFByb2hpYml0aW5nIGFueSBwcm92aXNpb25hbCBsb2FkIGZhaWx1cmVzIGZyb20gYmVpbmcg
c2VudCB0byBjbGllbnRzCi0gICAgICAgICAgICAvLyB3aGlsZSBoYW5kbGluZyBwcm92aXNpb25h
bCBsb2FkIGZhaWx1cmVzIGlzIHRvbyBoZWF2eS4gRm9yIGV4YW1wbGUsIHRoZSBjdXJyZW50Ci0g
ICAgICAgICAgICAvLyBsb2FkIHdpbGwgZmFpbCB0byBjYW5jZWwgYW5vdGhlciBvbmdvaW5nIGxv
YWQuIFRoYXQgbWlnaHQgcHJldmVudCBjbGllbnRzJyBwYWdlCi0gICAgICAgICAgICAvLyBsb2Fk
IHN0YXRlIGJlaW5nIGhhbmRsZWQgcHJvcGVybHkuCi0gICAgICAgICAgICBpZiAoIW1fcHJvdmlz
aW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIEZyYW1lU3RhdGU6OlByb3Zpc2lvbmFsOiB7CisgICAgICAgIC8v
IEZJWE1FOiBQcm9oaWJpdGluZyBhbnkgcHJvdmlzaW9uYWwgbG9hZCBmYWlsdXJlcyBmcm9tIGJl
aW5nIHNlbnQgdG8gY2xpZW50cworICAgICAgICAvLyB3aGlsZSBoYW5kbGluZyBwcm92aXNpb25h
bCBsb2FkIGZhaWx1cmVzIGlzIHRvbyBoZWF2eS4gRm9yIGV4YW1wbGUsIHRoZSBjdXJyZW50Cisg
ICAgICAgIC8vIGxvYWQgd2lsbCBmYWlsIHRvIGNhbmNlbCBhbm90aGVyIG9uZ29pbmcgbG9hZC4g
VGhhdCBtaWdodCBwcmV2ZW50IGNsaWVudHMnIHBhZ2UKKyAgICAgICAgLy8gbG9hZCBzdGF0ZSBi
ZWluZyBoYW5kbGVkIHByb3Blcmx5LgorICAgICAgICBpZiAoIW1fcHJvdmlzaW9uYWxMb2FkRXJy
b3JCZWluZ0hhbmRsZWRVUkwuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IHBkbCA9IG1fcHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlcjsKLSAgICAgICAgICAgIGlmICghcGRsKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIElmIHdlJ3ZlIHJlY2VpdmVkIGFueSBl
cnJvcnMgd2UgbWF5IGJlIHN0dWNrIGluIHRoZSBwcm92aXNpb25hbCBzdGF0ZSBhbmQgYWN0dWFs
bHkgY29tcGxldGUuCi0gICAgICAgICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciA9IHBk
bC0+bWFpbkRvY3VtZW50RXJyb3IoKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4g
cHJvdGVjdG9yID0gbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyOworICAgICAgICBpZiAoIXBy
b3RlY3RvcikKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgLy8gQ2hlY2sgYWxs
IGNoaWxkcmVuIGZpcnN0LgotICAgICAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtOwot
ICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKLSAgICAgICAgICAg
ICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKGxvYWRUeXBlKCkpKQotICAgICAgICAgICAg
ICAgICAgICAvLyBSZXNldCB0aGUgYmFjayBmb3J3YXJkIGxpc3QgdG8gdGhlIGxhc3QgY29tbWl0
dGVkIGhpc3RvcnkgaXRlbSBhdCB0aGUgdG9wIGxldmVsLgotICAgICAgICAgICAgICAgICAgICBp
dGVtID0gcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCk7
CisgICAgICAgIC8vIElmIHdlJ3ZlIHJlY2VpdmVkIGFueSBlcnJvcnMgd2UgbWF5IGJlIHN0dWNr
IGluIHRoZSBwcm92aXNpb25hbCBzdGF0ZSBhbmQgYWN0dWFsbHkgY29tcGxldGUuCisgICAgICAg
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yID0gcHJvdGVjdG9yLT5tYWluRG9jdW1lbnRFcnJv
cigpOworICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgLy8gQ2hlY2sgYWxsIGNoaWxkcmVuIGZpcnN0LgorICAgICAgICBSZWZQdHI8SGlz
dG9yeUl0ZW0+IGl0ZW07CisgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkp
IHsKKyAgICAgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobG9hZFR5cGUoKSkpIHsK
KyAgICAgICAgICAgICAgICAvLyBSZXNldCB0aGUgYmFjayBmb3J3YXJkIGxpc3QgdG8gdGhlIGxh
c3QgY29tbWl0dGVkIGhpc3RvcnkgaXRlbSBhdCB0aGUgdG9wIGxldmVsLgorICAgICAgICAgICAg
ICAgIGl0ZW0gPSBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5oaXN0b3J5KCkuY3VycmVudEl0
ZW0oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgLy8gT25seSByZXNldCBpZiB3ZSBhcmVuJ3QgYWxyZWFkeSBnb2luZyB0byBhIG5ldyBw
cm92aXNpb25hbCBpdGVtLgotICAgICAgICAgICAgYm9vbCBzaG91bGRSZXNldCA9ICFoaXN0b3J5
KCkucHJvdmlzaW9uYWxJdGVtKCk7Ci0gICAgICAgICAgICBpZiAoIXBkbC0+aXNMb2FkaW5nSW5B
UElTZW5zZSgpIHx8IHBkbC0+aXNTdG9wcGluZygpKSB7Ci0gICAgICAgICAgICAgICAgRlJBTUVM
T0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJjaGVja0xvYWRD
b21wbGV0ZUZvclRoaXNGcmFtZTogRmFpbGVkIHByb3Zpc2lvbmFsIGxvYWQgKGlzVGltZW91dCA9
ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBlcnJvckNvZGUgPSAlZCkiLCBlcnJvci5pc1RpbWVv
dXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwotCi0gICAg
ICAgICAgICAgICAgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKCpwZGwsIGVycm9yKTsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoIXBkbC0+aXNMb2FkaW5nKCkpOwotCi0gICAgICAgICAg
ICAgICAgLy8gSWYgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBsb2FkaW5nIG11bHRpcGFydCBkYXRh
LCB3ZSBuZWVkIHRvIHJlc3RvcmUgdGhlIGRvY3VtZW50IGxvYWRlci4KLSAgICAgICAgICAgICAg
ICBpZiAoaXNSZXBsYWNpbmcoKSAmJiAhbV9kb2N1bWVudExvYWRlci5nZXQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgc2V0RG9jdW1lbnRMb2FkZXIobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVy
LmdldCgpKTsKLQotICAgICAgICAgICAgICAgIC8vIEZpbmlzaCByZXNldHRpbmcgdGhlIGxvYWQg
c3RhdGUsIGJ1dCBvbmx5IGlmIGFub3RoZXIgbG9hZCBoYXNuJ3QgYmVlbiBzdGFydGVkIGJ5IHRo
ZQotICAgICAgICAgICAgICAgIC8vIGRlbGVnYXRlIGNhbGxiYWNrLgotICAgICAgICAgICAgICAg
IGlmIChwZGwgPT0gbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKQotICAgICAgICAgICAgICAg
ICAgICBjbGVhclByb3Zpc2lvbmFsTG9hZCgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFj
dGl2ZURvY3VtZW50TG9hZGVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgVVJMIHVucmVhY2hh
YmxlVVJMID0gYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+dW5yZWFjaGFibGVVUkwoKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkgJiYgdW5yZWFjaGFi
bGVVUkwgPT0gcGRsLT5yZXF1ZXN0KCkudXJsKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBz
aG91bGRSZXNldCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgLy8gT25seSBy
ZXNldCBpZiB3ZSBhcmVuJ3QgYWxyZWFkeSBnb2luZyB0byBhIG5ldyBwcm92aXNpb25hbCBpdGVt
LgorICAgICAgICBib29sIHNob3VsZFJlc2V0ID0gIWhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0o
KTsKKyAgICAgICAgaWYgKCFwcm90ZWN0b3ItPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSB8fCBwcm90
ZWN0b3ItPmlzU3RvcHBpbmcoKSkgeworICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNG
cmFtZTogRmFpbGVkIHByb3Zpc2lvbmFsIGxvYWQgKGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxh
dGlvbiA9ICVkLCBlcnJvckNvZGUgPSAlZCkiLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXND
YW5jZWxsYXRpb24oKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworCisgICAgICAgICAgICBkaXNwYXRj
aERpZEZhaWxQcm92aXNpb25hbExvYWQoKnByb3RlY3RvciwgZXJyb3IpOworICAgICAgICAgICAg
QVNTRVJUKCFwcm90ZWN0b3ItPmlzTG9hZGluZygpKTsKKworICAgICAgICAgICAgLy8gSWYgd2Un
cmUgaW4gdGhlIG1pZGRsZSBvZiBsb2FkaW5nIG11bHRpcGFydCBkYXRhLCB3ZSBuZWVkIHRvIHJl
c3RvcmUgdGhlIGRvY3VtZW50IGxvYWRlci4KKyAgICAgICAgICAgIGlmIChpc1JlcGxhY2luZygp
ICYmICFtX2RvY3VtZW50TG9hZGVyLmdldCgpKQorICAgICAgICAgICAgICAgIHNldERvY3VtZW50
TG9hZGVyKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CisKKyAgICAgICAgICAg
IC8vIEZpbmlzaCByZXNldHRpbmcgdGhlIGxvYWQgc3RhdGUsIGJ1dCBvbmx5IGlmIGFub3RoZXIg
bG9hZCBoYXNuJ3QgYmVlbiBzdGFydGVkIGJ5IHRoZQorICAgICAgICAgICAgLy8gZGVsZWdhdGUg
Y2FsbGJhY2suCisgICAgICAgICAgICBpZiAocHJvdGVjdG9yID09IG1fcHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcikKKyAgICAgICAgICAgICAgICBjbGVhclByb3Zpc2lvbmFsTG9hZCgpOworICAg
ICAgICAgICAgZWxzZSBpZiAoYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkgeworICAgICAgICAgICAg
ICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9IGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnVucmVhY2hh
YmxlVVJMKCk7CisgICAgICAgICAgICAgICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkg
JiYgdW5yZWFjaGFibGVVUkwgPT0gcHJvdGVjdG9yLT5yZXF1ZXN0KCkudXJsKCkpCisgICAgICAg
ICAgICAgICAgICAgIHNob3VsZFJlc2V0ID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoc2hvdWxkUmVzZXQgJiYgaXRlbSkKLSAgICAgICAgICAgICAgICBpZiAoUGFnZSog
cGFnZSA9IG1fZnJhbWUucGFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhZ2UtPmJhY2tG
b3J3YXJkKCkuc2V0Q3VycmVudEl0ZW0oKml0ZW0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY2FzZSBGcmFtZVN0
YXRlQ29tbWl0dGVkUGFnZTogewotICAgICAgICAgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChtX2RvY3VtZW50TG9hZGVy
LT5pc0xvYWRpbmdJbkFQSVNlbnNlKCkgJiYgIW1fZG9jdW1lbnRMb2FkZXItPmlzU3RvcHBpbmco
KSAmJiAhbV9jaGVja2luZ0xvYWRDb21wbGV0ZUZvckRldGFjaG1lbnQpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBpZiAoc2hvdWxkUmVzZXQgJiYgaXRlbSkgeworICAgICAgICAg
ICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKKyAgICAgICAgICAgICAgICBwYWdl
LT5iYWNrRm9yd2FyZCgpLnNldEN1cnJlbnRJdGVtKCppdGVtKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBGcmFtZVN0YXRlOjpDb21taXR0ZWRQYWdlOiB7
CisgICAgICAgIGlmICghbV9kb2N1bWVudExvYWRlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXItPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSAmJiAhbV9k
b2N1bWVudExvYWRlci0+aXNTdG9wcGluZygpICYmICFtX2NoZWNraW5nTG9hZENvbXBsZXRlRm9y
RGV0YWNobWVudCkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgc2V0U3RhdGUo
RnJhbWVTdGF0ZUNvbXBsZXRlKTsKKyAgICAgICAgc2V0U3RhdGUoRnJhbWVTdGF0ZTo6Q29tcGxl
dGUpOwogCi0gICAgICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBzdWJzZXF1ZW50IHdvcmsgaW1w
b3J0YW50IGlmIHdlIGFscmVhZHkgbmF2aWdhdGVkIGF3YXk/Ci0gICAgICAgICAgICAvLyBNYXli
ZSB0aGVyZSBhcmUgYnVncyBiZWNhdXNlIG9mIHRoYXQsIG9yIGV4dHJhIHdvcmsgd2UgY2FuIHNr
aXAgYmVjYXVzZQotICAgICAgICAgICAgLy8gdGhlIG5ldyBwYWdlIGlzIHJlYWR5LgorICAgICAg
ICAvLyBGSVhNRTogSXMgdGhpcyBzdWJzZXF1ZW50IHdvcmsgaW1wb3J0YW50IGlmIHdlIGFscmVh
ZHkgbmF2aWdhdGVkIGF3YXk/CisgICAgICAgIC8vIE1heWJlIHRoZXJlIGFyZSBidWdzIGJlY2F1
c2Ugb2YgdGhhdCwgb3IgZXh0cmEgd29yayB3ZSBjYW4gc2tpcCBiZWNhdXNlCisgICAgICAgIC8v
IHRoZSBuZXcgcGFnZSBpcyByZWFkeS4KIAotICAgICAgICAgICAgbV9jbGllbnQtPmZvcmNlTGF5
b3V0Rm9yTm9uSFRNTCgpOworICAgICAgICBtX2NsaWVudC0+Zm9yY2VMYXlvdXRGb3JOb25IVE1M
KCk7CiAgICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBJZiB0aGUgdXNlciBoYWQgYSBzY3Jv
bGwgcG9pbnQsIHNjcm9sbCB0byBpdCwgb3ZlcnJpZGluZyB0aGUgYW5jaG9yIHBvaW50IGlmIGFu
eS4KLSAgICAgICAgICAgIGlmIChtX2ZyYW1lLnBhZ2UoKSkgewotICAgICAgICAgICAgICAgIGlm
IChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkgfHwgaXNSZWxvYWQobV9sb2FkVHlw
ZSkpCi0gICAgICAgICAgICAgICAgICAgIGhpc3RvcnkoKS5yZXN0b3JlU2Nyb2xsUG9zaXRpb25B
bmRWaWV3U3RhdGUoKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgLy8gSWYgdGhlIHVzZXIgaGFk
IGEgc2Nyb2xsIHBvaW50LCBzY3JvbGwgdG8gaXQsIG92ZXJyaWRpbmcgdGhlIGFuY2hvciBwb2lu
dCBpZiBhbnkuCisgICAgICAgIGlmIChtX2ZyYW1lLnBhZ2UoKSkgeworICAgICAgICAgICAgaWYg
KGlzQmFja0ZvcndhcmRMb2FkVHlwZShtX2xvYWRUeXBlKSB8fCBpc1JlbG9hZChtX2xvYWRUeXBl
KSkKKyAgICAgICAgICAgICAgICBoaXN0b3J5KCkucmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmll
d1N0YXRlKCk7CisgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG1fc3RhdGVNYWNoaW5lLmNy
ZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSB8fCAhbV9zdGF0ZU1hY2hpbmUuY29tbWl0dGVk
Rmlyc3RSZWFsRG9jdW1lbnRMb2FkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAobV9zdGF0ZU1hY2hpbmUuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpIHx8ICFt
X3N0YXRlTWFjaGluZS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICAgICAgbV9wcm9ncmVzc1RyYWNrZXItPnByb2dyZXNzQ29t
cGxldGVkKCk7Ci0gICAgICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7Ci0gICAg
ICAgICAgICBpZiAocGFnZSkgewotICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZy
YW1lKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgdHJhY2VQb2ludChNYWluUmVzb3VyY2VMb2Fk
RGlkRW5kKTsKLSAgICAgICAgICAgICAgICAgICAgcGFnZS0+ZGlkRmluaXNoTG9hZCgpOwotICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgbV9wcm9ncmVzc1RyYWNrZXItPnByb2dyZXNzQ29tcGxl
dGVkKCk7CisgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKKyAgICAgICAgaWYg
KHBhZ2UpIHsKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAg
ICAgICAgICAgICB0cmFjZVBvaW50KE1haW5SZXNvdXJjZUxvYWREaWRFbmQpOworICAgICAgICAg
ICAgICAgIHBhZ2UtPmRpZEZpbmlzaExvYWQoKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfQog
Ci0gICAgICAgICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciA9IG1fZG9jdW1lbnRMb2Fk
ZXItPm1haW5Eb2N1bWVudEVycm9yKCk7CisgICAgICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yID0gbV9kb2N1bWVudExvYWRlci0+bWFpbkRvY3VtZW50RXJyb3IoKTsKIAotICAgICAgICAg
ICAgQVhPYmplY3RDYWNoZTo6QVhMb2FkaW5nRXZlbnQgbG9hZGluZ0V2ZW50OwotICAgICAgICAg
ICAgaWYgKCFlcnJvci5pc051bGwoKSkgewotICAgICAgICAgICAgICAgIEZSQU1FTE9BREVSX1JF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY2hlY2tMb2FkQ29tcGxldGVG
b3JUaGlzRnJhbWU6IEZpbmlzaGVkIGZyYW1lIGxvYWQgd2l0aCBlcnJvciAoaXNUaW1lb3V0ID0g
JWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGVycm9yQ29kZSA9ICVkKSIsIGVycm9yLmlzVGltZW91
dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5lcnJvckNvZGUoKSk7Ci0gICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkRmFpbExvYWQoZXJyb3IpOwotICAgICAgICAg
ICAgICAgIGxvYWRpbmdFdmVudCA9IEFYT2JqZWN0Q2FjaGU6OkFYTG9hZGluZ0ZhaWxlZDsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNG
cmFtZTogRmluaXNoZWQgZnJhbWUgbG9hZCIpOworICAgICAgICBBWE9iamVjdENhY2hlOjpBWExv
YWRpbmdFdmVudCBsb2FkaW5nRXZlbnQ7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsK
KyAgICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VM
b2FkaW5nLCAiY2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWU6IEZpbmlzaGVkIGZyYW1lIGxv
YWQgd2l0aCBlcnJvciAoaXNUaW1lb3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGVycm9y
Q29kZSA9ICVkKSIsIGVycm9yLmlzVGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBl
cnJvci5lcnJvckNvZGUoKSk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGYWls
TG9hZChlcnJvcik7CisgICAgICAgICAgICBsb2FkaW5nRXZlbnQgPSBBWE9iamVjdENhY2hlOjpB
WExvYWRpbmdGYWlsZWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBGUkFNRUxPQURF
Ul9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNoZWNrTG9hZENvbXBs
ZXRlRm9yVGhpc0ZyYW1lOiBGaW5pc2hlZCBmcmFtZSBsb2FkIik7CiAjaWYgRU5BQkxFKERBVEFf
REVURUNUSU9OKQotICAgICAgICAgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3Vt
ZW50KCk7Ci0gICAgICAgICAgICAgICAgYXV0byB0eXBlcyA9IE9wdGlvblNldDxEYXRhRGV0ZWN0
b3JUeXBlPiB7IG1fZnJhbWUuc2V0dGluZ3MoKS5kYXRhRGV0ZWN0b3JUeXBlcygpIH07Ci0gICAg
ICAgICAgICAgICAgaWYgKGRvY3VtZW50ICYmIHR5cGVzKSB7Ci0gICAgICAgICAgICAgICAgICAg
IG1fZnJhbWUuc2V0RGF0YURldGVjdGlvblJlc3VsdHMoRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29u
dGVudEluUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpkb2N1bWVudCksIHR5
cGVzLCBtX2NsaWVudC0+ZGF0YURldGVjdGlvbkNvbnRleHQoKSkpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
bV9jbGllbnQtPmRpc3BhdGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihtX2ZyYW1lLmRhdGFEZXRl
Y3Rpb25SZXN1bHRzKCkpOwotICAgICAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgICAg
ICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKLSAgICAgICAgICAgICAgICBs
b2FkaW5nRXZlbnQgPSBBWE9iamVjdENhY2hlOjpBWExvYWRpbmdGaW5pc2hlZDsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgLy8gTm90aWZ5IGFjY2Vzc2liaWxpdHkuCi0gICAgICAgICAg
ICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1bWVudC0+ZXhpc3RpbmdBWE9iamVj
dENhY2hlKCkpCi0gICAgICAgICAgICAgICAgICAgIGNhY2hlLT5mcmFtZUxvYWRpbmdFdmVudE5v
dGlmaWNhdGlvbigmbV9mcmFtZSwgbG9hZGluZ0V2ZW50KTsKKyAgICAgICAgICAgIGF1dG8gZG9j
dW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CisgICAgICAgICAgICBhdXRvIHR5cGVzID0gT3B0
aW9uU2V0PERhdGFEZXRlY3RvclR5cGU+IHsgbV9mcmFtZS5zZXR0aW5ncygpLmRhdGFEZXRlY3Rv
clR5cGVzKCkgfTsKKyAgICAgICAgICAgIGlmIChkb2N1bWVudCAmJiB0eXBlcykgeworICAgICAg
ICAgICAgICAgIG1fZnJhbWUuc2V0RGF0YURldGVjdGlvblJlc3VsdHMoRGF0YURldGVjdGlvbjo6
ZGV0ZWN0Q29udGVudEluUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpkb2N1
bWVudCksIHR5cGVzLCBtX2NsaWVudC0+ZGF0YURldGVjdGlvbkNvbnRleHQoKSkpOworICAgICAg
ICAgICAgICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICAgICAgICAg
IG1fY2xpZW50LT5kaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24obV9mcmFtZS5kYXRhRGV0
ZWN0aW9uUmVzdWx0cygpKTsKICAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgbV9j
bGllbnQtPmRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOworICAgICAgICAgICAgbG9hZGluZ0V2ZW50
ID0gQVhPYmplY3RDYWNoZTo6QVhMb2FkaW5nRmluaXNoZWQ7CisgICAgICAgIH0KIAotICAgICAg
ICAgICAgLy8gVGhlIGFib3ZlIGNhbGxzIHRvIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpIG1pZ2h0
IGhhdmUgZGV0YWNoZWQgdGhlIEZyYW1lCi0gICAgICAgICAgICAvLyBmcm9tIGl0cyBQYWdlIGFu
ZCBhbHNvIG1pZ2h0IGhhdmUgY2F1c2VkIFBhZ2UgdG8gYmUgZGVsZXRlZC4KLSAgICAgICAgICAg
IC8vIERvbid0IGFzc3VtZSAncGFnZScgaXMgc3RpbGwgYXZhaWxhYmxlIHRvIHVzZS4KLSAgICAg
ICAgICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgbV9mcmFtZS5wYWdlKCkpIHsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQoJm1fZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKSA9PSAmbV9m
cmFtZSk7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZS5wYWdlKCktPmRpYWdub3N0aWNMb2dnaW5n
Q2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KERpYWdub3N0aWNMb2dnaW5n
S2V5czo6cGFnZUxvYWRlZEtleSgpLCBlbXB0eVN0cmluZygpLCBlcnJvci5pc051bGwoKSA/IERp
YWdub3N0aWNMb2dnaW5nUmVzdWx0UGFzcyA6IERpYWdub3N0aWNMb2dnaW5nUmVzdWx0RmFpbCwg
U2hvdWxkU2FtcGxlOjpZZXMpOwotICAgICAgICAgICAgfQorICAgICAgICAvLyBOb3RpZnkgYWNj
ZXNzaWJpbGl0eS4KKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVu
dCgpKSB7CisgICAgICAgICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1bWVudC0+
ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCisgICAgICAgICAgICAgICAgY2FjaGUtPmZyYW1lTG9h
ZGluZ0V2ZW50Tm90aWZpY2F0aW9uKCZtX2ZyYW1lLCBsb2FkaW5nRXZlbnQpOworICAgICAgICB9
CiAKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gVGhlIGFib3ZlIGNhbGxzIHRvIGRp
c3BhdGNoRGlkRmluaXNoTG9hZCgpIG1pZ2h0IGhhdmUgZGV0YWNoZWQgdGhlIEZyYW1lCisgICAg
ICAgIC8vIGZyb20gaXRzIFBhZ2UgYW5kIGFsc28gbWlnaHQgaGF2ZSBjYXVzZWQgUGFnZSB0byBi
ZSBkZWxldGVkLgorICAgICAgICAvLyBEb24ndCBhc3N1bWUgJ3BhZ2UnIGlzIHN0aWxsIGF2YWls
YWJsZSB0byB1c2UuCisgICAgICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgbV9mcmFt
ZS5wYWdlKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCgmbV9mcmFtZS5wYWdlKCktPm1haW5GcmFt
ZSgpID09ICZtX2ZyYW1lKTsKKyAgICAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5kaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6OnBhZ2VMb2FkZWRLZXkoKSwgZW1wdHlTdHJpbmcoKSwgZXJyb3IuaXNOdWxs
KCkgPyBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MgOiBEaWFnbm9zdGljTG9nZ2luZ1Jlc3Vs
dEZhaWwsIFNob3VsZFNhbXBsZTo6WWVzKTsKICAgICAgICAgfQorCisgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAgICAgIAotICAgICAgICBjYXNlIEZyYW1lU3RhdGVDb21wbGV0ZToKLSAgICAg
ICAgICAgIG1fbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZDsKLSAgICAgICAgICAg
IGZyYW1lTG9hZENvbXBsZXRlZCgpOwotICAgICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRnJh
bWVTdGF0ZTo6Q29tcGxldGU6CisgICAgICAgIG1fbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlOjpT
dGFuZGFyZDsKKyAgICAgICAgZnJhbWVMb2FkQ29tcGxldGVkKCk7CisgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI4MzEsNyArMjgzMyw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmRldGFjaEZyb21QYXJlbnQoKQogICAgICAgICAvLyBzdG9wQWxs
TG9hZGVycygpIG5lZWRzIHRvIGJlIGNhbGxlZCBhZnRlciBkZXRhY2hDaGlsZHJlbigpIGlmIHRo
ZSBkb2N1bWVudCBpcyBub3QgaW4gdGhlIGJhY2svZm9yd2FyZCBjYWNoZSwKICAgICAgICAgLy8g
YmVjYXVzZSBkZXRhY2hlZENoaWxkcmVuKCkgd2lsbCB0cmlnZ2VyIHRoZSB1bmxvYWQgZXZlbnQg
aGFuZGxlcnMgb2YgYW55IGNoaWxkIGZyYW1lcywgYW5kIHRob3NlIGV2ZW50CiAgICAgICAgIC8v
IGhhbmRsZXJzIG1pZ2h0IHN0YXJ0IGEgbmV3IHN1YnJlc291cmNlIGxvYWQgaW4gdGhpcyBmcmFt
ZS4KLSAgICAgICAgc3RvcEFsbExvYWRlcnMoU2hvdWxkQ2xlYXJQcm92aXNpb25hbEl0ZW0sIFN0
b3BMb2FkaW5nUG9saWN5OjpBbHdheXNTdG9wTG9hZGluZyk7CisgICAgICAgIHN0b3BBbGxMb2Fk
ZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtOjpZZXMsIFN0b3BMb2FkaW5nUG9saWN5OjpBbHdheXNT
dG9wTG9hZGluZyk7CiAgICAgfQogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFt
ZURldGFjaGVkRnJvbVBhcmVudChtX2ZyYW1lKTsKQEAgLTMxNDYsNyArMzE0OCw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OnJlY2VpdmVkTWFpblJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiAgICAgICAgICAgICBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oKm93bmVy
KS5yZW5kZXJGYWxsYmFja0NvbnRlbnQoKTsKICAgICB9CiAKLSAgICBpZiAobV9zdGF0ZSA9PSBG
cmFtZVN0YXRlUHJvdmlzaW9uYWwgJiYgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKSB7Cisg
ICAgaWYgKG1fc3RhdGUgPT0gRnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWwgJiYgbV9wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKSB7CiAgICAgICAgIGlmIChtX3N1Ym1pdHRlZEZvcm1VUkwgPT0gbV9w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5vcmlnaW5hbFJlcXVlc3RDb3B5KCkudXJsKCkpCiAg
ICAgICAgICAgICBtX3N1Ym1pdHRlZEZvcm1VUkwgPSBVUkwoKTsKICAgICAgICAgICAgIApAQCAt
MzI5Miw3ICszMjk0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hVbmxvYWRFdmVudHMo
VW5sb2FkRXZlbnRQb2xpY3kgdW5sb2FkRXZlbnRQb2xpY3kpCiAgICAgICAgIGlmIChpczxIVE1M
SW5wdXRFbGVtZW50PihjdXJyZW50Rm9jdXNlZEVsZW1lbnQpKQogICAgICAgICAgICAgZG93bmNh
c3Q8SFRNTElucHV0RWxlbWVudD4oKmN1cnJlbnRGb2N1c2VkRWxlbWVudCkuZW5kRWRpdGluZygp
OwogICAgICAgICBpZiAobV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgPT0gUGFn
ZURpc21pc3NhbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgICAgIGlmICh1bmxvYWRFdmVudFBvbGlj
eSA9PSBVbmxvYWRFdmVudFBvbGljeVVubG9hZEFuZFBhZ2VIaWRlKSB7CisgICAgICAgICAgICBp
ZiAodW5sb2FkRXZlbnRQb2xpY3kgPT0gVW5sb2FkRXZlbnRQb2xpY3k6OlVubG9hZEFuZFBhZ2VI
aWRlKSB7CiAgICAgICAgICAgICAgICAgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNo
ZWQgPSBQYWdlRGlzbWlzc2FsVHlwZTo6UGFnZUhpZGU7CiAgICAgICAgICAgICAgICAgbV9mcmFt
ZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+ZGlzcGF0Y2hFdmVudChQYWdlVHJhbnNpdGlvbkV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnBhZ2VoaWRlRXZlbnQsIG1fZnJhbWUuZG9jdW1lbnQo
KS0+YmFja0ZvcndhcmRDYWNoZVN0YXRlKCkgPT0gRG9jdW1lbnQ6OkFib3V0VG9FbnRlckJhY2tG
b3J3YXJkQ2FjaGUpLCBtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgICAgICAgICAgfQpAQCAtMzQ2
NCw3ICszNDY2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0
aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKIAogICAgIEZyYW1lTG9hZFR5
cGUgdHlwZSA9IHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpOwogICAgIC8vIEEgbmV3IG5hdmln
YXRpb24gaXMgaW4gcHJvZ3Jlc3MsIHNvIGRvbid0IGNsZWFyIHRoZSBoaXN0b3J5J3MgcHJvdmlz
aW9uYWwgaXRlbS4KLSAgICBzdG9wQWxsTG9hZGVycyhTaG91bGROb3RDbGVhclByb3Zpc2lvbmFs
SXRlbSk7CisgICAgc3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW06Ok5vKTsKICAg
ICAKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNjI1MDg1Nj4gLSBJbiBjZXJ0YWluIGNpcmN1bXN0
YW5jZXMgb24gcGFnZXMgd2l0aCBtdWx0aXBsZSBmcmFtZXMsIHN0b3BBbGxMb2FkZXJzKCkKICAg
ICAvLyBtaWdodCBkZXRhY2ggdGhlIGN1cnJlbnQgRnJhbWVMb2FkZXIsIGluIHdoaWNoIGNhc2Ug
d2Ugc2hvdWxkIGJhaWwgb24gdGhpcyBuZXdseSBkZWZ1bmN0IGxvYWQuIApAQCAtMzQ3Niw3ICsz
NDc4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9s
aWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKICAgICBzZXRQcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogICAgIEZSQU1FTE9BREVS
X1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVMb2FkQWZ0
ZXJOYXZpZ2F0aW9uUG9saWN5OiBTZXR0aW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAo
bV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlci5nZXQoKSk7CiAgICAgbV9sb2FkVHlwZSA9IHR5cGU7Ci0gICAgc2V0U3RhdGUoRnJhbWVT
dGF0ZVByb3Zpc2lvbmFsKTsKKyAgICBzZXRTdGF0ZShGcmFtZVN0YXRlOjpQcm92aXNpb25hbCk7
CiAKICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihudWxscHRyKTsKIApAQCAtMzg2MCw3ICsz
ODYyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhp
c3RvcnlJdGVtKiBmcm9tSXRlbSwgRnJhbWVMb2FkVHkKIAogdm9pZCBGcmFtZUxvYWRlcjo6cmV0
cnlBZnRlckZhaWxlZENhY2hlT25seU1haW5SZXNvdXJjZUxvYWQoKQogewotICAgIEFTU0VSVCht
X3N0YXRlID09IEZyYW1lU3RhdGVQcm92aXNpb25hbCk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0g
RnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWwpOwogICAgIEFTU0VSVCghbV9sb2FkaW5nRnJvbUNhY2hl
ZFBhZ2UpOwogICAgIEFTU0VSVChoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpOwogICAgIEFT
U0VSVChoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCktPmZvcm1EYXRhKCkpOwpAQCAtMzg2OSw3
ICszODcxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmV0cnlBZnRlckZhaWxlZENhY2hlT25seU1h
aW5SZXNvdXJjZUxvYWQoKQogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUgPSBtX2xvYWRUeXBl
OwogICAgIEhpc3RvcnlJdGVtKiBpdGVtID0gaGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgpOwog
Ci0gICAgc3RvcEFsbExvYWRlcnMoU2hvdWxkTm90Q2xlYXJQcm92aXNpb25hbEl0ZW0pOworICAg
IHN0b3BBbGxMb2FkZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtOjpObyk7CiAgICAgaWYgKGl0ZW0p
CiAgICAgICAgIGxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oKml0ZW0sIGhpc3RvcnkoKS5jdXJy
ZW50SXRlbSgpLCBsb2FkVHlwZSwgTWF5Tm90QXR0ZW1wdENhY2hlT25seUxvYWRGb3JGb3JtU3Vi
bWlzc2lvbkl0ZW0sIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8pOwogICAgIGVsc2Ug
ewpAQCAtNDE4OSw3ICs0MTkxLDcgQEAgUmVmUHRyPEZyYW1lPiBjcmVhdGVXaW5kb3coRnJhbWUm
IG9wZW5lckZyYW1lLCBGcmFtZSYgbG9va3VwRnJhbWUsIEZyYW1lTG9hZFJlcXUKIAogYm9vbCBG
cmFtZUxvYWRlcjo6c2hvdWxkU3VwcHJlc3NUZXh0SW5wdXRGcm9tRWRpdGluZygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fZnJhbWUuc2V0dGluZ3MoKS5zaG91bGRTdXBwcmVzc1RleHRJbnB1dEZy
b21FZGl0aW5nRHVyaW5nUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCkgJiYgbV9zdGF0ZSA9PSBGcmFt
ZVN0YXRlUHJvdmlzaW9uYWw7CisgICAgcmV0dXJuIG1fZnJhbWUuc2V0dGluZ3MoKS5zaG91bGRT
dXBwcmVzc1RleHRJbnB1dEZyb21FZGl0aW5nRHVyaW5nUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKCkg
JiYgbV9zdGF0ZSA9PSBGcmFtZVN0YXRlOjpQcm92aXNpb25hbDsKIH0KIAogYm9vbCBGcmFtZUxv
YWRlcjo6YXJlUGx1Z2luc0VuYWJsZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApp
bmRleCA5YmVhNmI1ZmE0Nzg4OThjNWI3ZGFlM2VmZGVkMzg0NDJkMTljYzlhLi4xY2ZhNjYzMWI5
MzEzMTgzYjYzYTc1NTdlYjgwYzA3YTI4ZjFhZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaApAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBUaGVz
ZSBhcmUgYWxsIGZ1bmN0aW9ucyB3aGljaCBzdG9wIGxvYWRzLiBXZSBoYXZlIHRvbyBtYW55Lgog
ICAgIHZvaWQgc3RvcEFsbExvYWRlcnNBbmRDaGVja0NvbXBsZXRlbmVzcygpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kg
PSBTaG91bGRDbGVhclByb3Zpc2lvbmFsSXRlbSwgU3RvcExvYWRpbmdQb2xpY3kgPSBTdG9wTG9h
ZGluZ1BvbGljeTo6UHJldmVudER1cmluZ1VubG9hZEV2ZW50cyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdG9wQWxsTG9hZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbSA9IENsZWFyUHJvdmlz
aW9uYWxJdGVtOjpZZXMsIFN0b3BMb2FkaW5nUG9saWN5ID0gU3RvcExvYWRpbmdQb2xpY3k6OlBy
ZXZlbnREdXJpbmdVbmxvYWRFdmVudHMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEZv
clVzZXJDYW5jZWwoYm9vbCBkZWZlckNoZWNrTG9hZENvbXBsZXRlID0gZmFsc2UpOwogICAgIHZv
aWQgc3RvcEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsKICAgICB2b2lkIHN0b3AoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCmluZGV4IDhiNGMwNTQxZmQ0OWI0NGI3ZWYw
NWRiZTI5OGYyNGMzNTNmYmUwNGMuLjM1NzE2NzVmMjdkMDE3ZGQ1ZjIxZGJmN2RiMjdmOWQ2MzM4
MWE5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaApAQCAtMzUs
MTIgKzM1LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBGcmFtZVN0YXRlIHsK
LSAgICBGcmFtZVN0YXRlUHJvdmlzaW9uYWwsCitlbnVtIGNsYXNzIEZyYW1lU3RhdGUgOiB1aW50
OF90IHsKKyAgICBQcm92aXNpb25hbCwKICAgICAvLyBUaGlzIHN0YXRlIGluZGljYXRlcyB3ZSBh
cmUgcmVhZHkgdG8gY29tbWl0IHRvIGEgcGFnZSwKICAgICAvLyB3aGljaCBtZWFucyB0aGUgdmll
dyB3aWxsIHRyYW5zaXRpb24gdG8gdXNlIHRoZSBuZXcgZGF0YSBzb3VyY2UuCi0gICAgRnJhbWVT
dGF0ZUNvbW1pdHRlZFBhZ2UsCi0gICAgRnJhbWVTdGF0ZUNvbXBsZXRlCisgICAgQ29tbWl0dGVk
UGFnZSwKKyAgICBDb21wbGV0ZQogfTsKIAogZW51bSBjbGFzcyBQb2xpY3lBY3Rpb24gOiB1aW50
OF90IHsKQEAgLTE0Myw5ICsxNDMsOSBAQCBlbnVtIGNsYXNzIEluaXRpYXRlZEJ5TWFpbkZyYW1l
IDogdWludDhfdCB7CiAgICAgVW5rbm93biwKIH07CiAKLWVudW0gQ2xlYXJQcm92aXNpb25hbEl0
ZW1Qb2xpY3kgewotICAgIFNob3VsZENsZWFyUHJvdmlzaW9uYWxJdGVtLAotICAgIFNob3VsZE5v
dENsZWFyUHJvdmlzaW9uYWxJdGVtCitlbnVtIGNsYXNzIENsZWFyUHJvdmlzaW9uYWxJdGVtIDog
Ym9vbCB7CisgICAgWWVzLAorICAgIE5vCiB9OwogCiBlbnVtIGNsYXNzIFN0b3BMb2FkaW5nUG9s
aWN5IHsKQEAgLTE2MCwxMCArMTYwLDEwIEBAIGVudW0gY2xhc3MgT2JqZWN0Q29udGVudFR5cGUg
OiB1aW50OF90IHsKICAgICBQbHVnSW4sCiB9OwogCi1lbnVtIFVubG9hZEV2ZW50UG9saWN5IHsK
LSAgICBVbmxvYWRFdmVudFBvbGljeU5vbmUsCi0gICAgVW5sb2FkRXZlbnRQb2xpY3lVbmxvYWRP
bmx5LAotICAgIFVubG9hZEV2ZW50UG9saWN5VW5sb2FkQW5kUGFnZUhpZGUKK2VudW0gY2xhc3Mg
VW5sb2FkRXZlbnRQb2xpY3kgeworICAgIE5vbmUsCisgICAgVW5sb2FkT25seSwKKyAgICBVbmxv
YWRBbmRQYWdlSGlkZQogfTsKIAogLy8gUGFzc2VkIHRvIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3Rl
ZCgpIGFuZCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAppbmRleCA1M2RlMjIz
MzQzMTEyMWFiMjVhZmQ3ZmUyYzk4NmU1YTdhZWNkNGIwLi40MjIwMjYwOTlhYWE4OGExNDMyOTlm
ZDQ5NjhjYTNiNGMzMmQ2NTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuY3BwCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1
bGVyOjpzY2hlZHVsZShzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkTmF2aWdhdGlvbj4gcmVkaXJl
Y3QKICAgICBpZiAocmVkaXJlY3QtPndhc0R1cmluZ0xvYWQoKSkgewogICAgICAgICBpZiAoRG9j
dW1lbnRMb2FkZXIqIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigp
LnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIHByb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXItPnN0b3BMb2FkaW5nKCk7Ci0gICAgICAgIG1fZnJhbWUubG9hZGVyKCkuc3Rv
cExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3lVbmxvYWRBbmRQYWdlSGlkZSk7CisgICAgICAgIG1f
ZnJhbWUubG9hZGVyKCkuc3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3k6OlVubG9hZEFuZFBh
Z2VIaWRlKTsKICAgICB9CiAKICAgICBjYW5jZWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
ZnJhbWVMb2FkZXIuY3BwCmluZGV4IDFiMWNlNjIwYzAyOTQwMzIxMDljMGNhMDMwMTA1MmQ1NWQ2
MjdiNGMuLmMxYWYzNTBmNWRhNDY4ZDQ4NmQzN2YyMzU0MjJkMWI1ZTNkY2VkM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIFJl
ZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXI6OlN1YmZyYW1lTG9hZGVyOjpsb2FkU3ViZnJhbWUoSFRN
TEZyYW1lT3duZXJFbGVtZW50JiBvCiAgICAgLy8gRklYTUU6IEluIHRoaXMgY2FzZSB0aGUgRnJh
bWUgd2lsbCBoYXZlIGZpbmlzaGVkIGxvYWRpbmcgYmVmb3JlIAogICAgIC8vIGl0J3MgYmVpbmcg
YWRkZWQgdG8gdGhlIGNoaWxkIGxpc3QuIEl0IHdvdWxkIGJlIGEgZ29vZCBpZGVhIHRvCiAgICAg
Ly8gY3JlYXRlIHRoZSBjaGlsZCBmaXJzdCwgdGhlbiBpbnZva2UgdGhlIGxvYWRlciBzZXBhcmF0
ZWx5LgotICAgIGlmIChmcmFtZS0+bG9hZGVyKCkuc3RhdGUoKSA9PSBGcmFtZVN0YXRlQ29tcGxl
dGUgJiYgIWZyYW1lLT5sb2FkZXIoKS5wb2xpY3lEb2N1bWVudExvYWRlcigpKQorICAgIGlmIChm
cmFtZS0+bG9hZGVyKCkuc3RhdGUoKSA9PSBGcmFtZVN0YXRlOjpDb21wbGV0ZSAmJiAhZnJhbWUt
PmxvYWRlcigpLnBvbGljeURvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgIGZyYW1lLT5sb2FkZXIo
KS5jaGVja0NvbXBsZXRlZCgpOwogCiAgICAgaWYgKCFmcmFtZS0+dHJlZSgpLnBhcmVudCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXgg
MzFiZTUxMGUyMmNkYWYwOTMzOWU4OTU3MWViNDUwYzYxMmY3ZTU1MC4uNjVhOTczZmFkOWIzN2Fl
M2U4MGRiYmE5ZTI3YjRjYjQxZjk1MDhhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIp
CiAgICAgRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gZnJhbWUubG9hZGVyKCk7CiAgICAgaWYg
KG1fb3B0aW9ucy5zZWN1cml0eUNoZWNrID09IFNlY3VyaXR5Q2hlY2tQb2xpY3k6OkRvU2VjdXJp
dHlDaGVjayAmJiAhbV9vcHRpb25zLmtlZXBBbGl2ZSAmJiAhc2hvdWxkVXNlUGluZ0xvYWQodHlw
ZSgpKSkgewogICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgaWYgKGZyYW1lTG9h
ZGVyLnN0YXRlKCkgPT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQorICAgICAgICAgICAgaWYgKGZy
YW1lTG9hZGVyLnN0YXRlKCkgPT0gRnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWwpCiAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FKCJsb2FkOiBGYWlsZWQgc2Vj
dXJpdHkgY2hlY2sgLS0gc3RhdGUgaXMgcHJvdmlzaW9uYWwiLCBmcmFtZSk7CiAgICAgICAgICAg
ICBlbHNlIGlmICghZnJhbWVMb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJBTUUoImxvYWQ6IEZhaWxlZCBz
ZWN1cml0eSBjaGVjayAtLSBub3QgYWN0aXZlIGRvY3VtZW50IiwgZnJhbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCmluZGV4IDBkZTUwYTQ2MWIxMmI5NzM4Yzk4NzRiNzZhYTExZGUxNmJh
ODM3NjMuLjNlOGY4MDczZmExYjA2NTY0OWNjNzY3Y2I5ODM0MmRhZGZmNGNiYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTM5NDYsNyArMzk0Niw3IEBAIHZvaWQgRnJhbWVWaWV3
Ojp1cGRhdGVTY3JvbGxhYmxlQXJlYVNldCgpCiAKIGJvb2wgRnJhbWVWaWV3OjpzaG91bGRTdXNw
ZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZyYW1lKCkubG9hZGVy
KCkuc3RhdGUoKSAhPSBGcmFtZVN0YXRlQ29tcGxldGU7CisgICAgcmV0dXJuIGZyYW1lKCkubG9h
ZGVyKCkuc3RhdGUoKSAhPSBGcmFtZVN0YXRlOjpDb21wbGV0ZTsKIH0KIAogdm9pZCBGcmFtZVZp
ZXc6OnNjcm9sbGJhclN0eWxlQ2hhbmdlZChTY3JvbGxiYXJTdHlsZSBuZXdTdHlsZSwgYm9vbCBm
b3JjZVVwZGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAppbmRleCBhOWNlYjZkMTcy
ZTNkOGZmZjU4YWQ3MTZlMDI1NzVlMWE4NmVkODMxLi5jMWU3YjYyMzdkODFjNDViNWQ5ZjAyNzJi
ZDI0MGVjOWQ0NzBiZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCkBAIC03Nywx
MSArNzcsMTEgQEAgV0tGcmFtZUxvYWRTdGF0ZSBXS0J1bmRsZUZyYW1lR2V0RnJhbWVMb2FkU3Rh
dGUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKICAgICAgICAgcmV0dXJuIGtXS0ZyYW1lTG9h
ZFN0YXRlRmluaXNoZWQ7CiAKICAgICBzd2l0Y2ggKGNvcmVGcmFtZS0+bG9hZGVyKCkuc3RhdGUo
KSkgewotICAgIGNhc2UgV2ViQ29yZTo6RnJhbWVTdGF0ZVByb3Zpc2lvbmFsOgorICAgIGNhc2Ug
V2ViQ29yZTo6RnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWw6CiAgICAgICAgIHJldHVybiBrV0tGcmFt
ZUxvYWRTdGF0ZVByb3Zpc2lvbmFsOwotICAgIGNhc2UgV2ViQ29yZTo6RnJhbWVTdGF0ZUNvbW1p
dHRlZFBhZ2U6CisgICAgY2FzZSBXZWJDb3JlOjpGcmFtZVN0YXRlOjpDb21taXR0ZWRQYWdlOgog
ICAgICAgICByZXR1cm4ga1dLRnJhbWVMb2FkU3RhdGVDb21taXR0ZWQ7Ci0gICAgY2FzZSBXZWJD
b3JlOjpGcmFtZVN0YXRlQ29tcGxldGU6CisgICAgY2FzZSBXZWJDb3JlOjpGcmFtZVN0YXRlOjpD
b21wbGV0ZToKICAgICAgICAgcmV0dXJuIGtXS0ZyYW1lTG9hZFN0YXRlRmluaXNoZWQ7CiAgICAg
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416282</attachid>
            <date>2020-12-15 13:07:38 -0800</date>
            <delta_ts>2020-12-20 06:53:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219898-20201215220735.patch</filename>
            <type>text/plain</type>
            <size>38060</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc0NDg0YWYwY2JlNDI4
NTRhZjI0MDU3YWNjNTU5NWNmNTU5ZGE5NS4uYTc1N2U0YjNjOGU2NTc4NjYyZDYxMDZkNjYzMWEx
NDBlODYyMmI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTEyLTE1ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgQ29udmVydCByZW1haW5pbmcgRnJh
bWVMb2FkZXJUeXBlIGVudW1zIHRvIGVudW0gY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5ODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCByZW1haW5pbmcgRnJhbWVMb2FkZXJU
eXBlIGVudW1zIHRvIGVudW0gY2xhc3Nlcy4KKyAgICAgICAgTm90IGNvbnZlcnRlZCBpcyBTaG91
bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwKKyAgICAgICAgc2luY2UgaXQgc2hvdWxk
IGJlIHJlbW92ZWQgZXZlbnR1YWxseS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6b3Blbik6CisgICAgICAgICogaGlzdG9yeS9CYWNr
Rm9yd2FyZENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkNhY2hlRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6ZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseSk6CisgICAgICAgICog
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpzdG9wTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aXNM
b2FkaW5nSW5BUElTZW5zZSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpjbG9zZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6c2V0dXBGb3JSZXBsYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdG9w
QWxsTG9hZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6YWN0aXZlRG9jdW1l
bnRMb2FkZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjbGVhclByb3Zpc2lvbmFsTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGV0YWNoRnJvbVBhcmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVjZWl2ZWRNYWluUmVzb3VyY2VFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hVbmxvYWRFdmVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdh
dGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmV0cnlBZnRlckZh
aWxlZENhY2hlT25seU1haW5SZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnNob3VsZFN1cHByZXNzVGV4dElucHV0RnJvbUVkaXRpbmcgY29uc3QpOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5
cGVzLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGUpOgorICAgICAgICAqIGxv
YWRlci9TdWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
U3ViZnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpsb2Fk
KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OnNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zIGNvbnN0KToKKwogMjAyMC0xMi0x
NSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OIChyMjU5MTM3KTogQ2xpcC1wYXRoIHJlbmRlcmluZyByZWdyZXNzaW9uIHdoZW4gZWxl
bWVudCBjb250YWlucyB0cmFuc2Zvcm1lZCBjaGlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkYzUyYmQ2MGY2ZGE5
MWVmMTRmODkyNThmNDVkOWI2OWQ5YmRjMTYxLi42ZDgzYTFiYjQ3NjBjNzc0MGRiZWEyYTI4MWU0
YjI3ZjYyNzg4ODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEyLTE1ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgQ29udmVydCByZW1haW5pbmcgRnJh
bWVMb2FkZXJUeXBlIGVudW1zIHRvIGVudW0gY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5ODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRhcHQgdG8gZW51bSBjbGFzcyBjaGFuZ2VzLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1l
LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlRnJhbWVHZXRGcmFtZUxvYWRTdGF0ZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6CisKIDIwMjAtMTItMTUgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW1hZ2UgZXh0cmFjdGlv
biBpbnRlcmFjdGlvbiBzaG91bGQgcmVtYWluIGFjdGl2ZSB3aGlsZSBzY3JvbGxpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDBjNjMwMjczYTk2ODA2OTI4OWJhZWZiZWMzNzI0YWQ0ZDA5
MTc1ZjAuLjVmNWI0NDY1NjkxNTdkYzMwNjkzNzZjYTVjNDhiZjc5MDc0MTAzYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMjg4NCw3ICsyODg0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
RG9jdW1lbnQ6Om9wZW4oRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQpCiAKICAgICAgICAg
aWYgKG1fZnJhbWUtPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS5kZWxlZ2F0ZUlzRGVjaWRpbmdO
YXZpZ2F0aW9uUG9saWN5KCkpCiAgICAgICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5wb2xpY3lD
aGVja2VyKCkuc3RvcENoZWNrKCk7Ci0gICAgICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmxv
YWRlcigpLnN0YXRlKCkgPT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQorICAgICAgICBpZiAobV9m
cmFtZSAmJiBtX2ZyYW1lLT5sb2FkZXIoKS5zdGF0ZSgpID09IEZyYW1lU3RhdGU6OlByb3Zpc2lv
bmFsKQogICAgICAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCkuc3RvcEFsbExvYWRlcnMoKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCmluZGV4
IDljY2Y1ZGVhNTc5OWE0Y2M0NDI1MGU5YzFkYWI1ZGVkZDU0MjkwNGYuLjI3ZWQ3NGNkMjFkMzZh
ZTcwYzM1YThmMGIyMDkxYjBiNWE0NzdiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9C
YWNrRm9yd2FyZENhY2hlLmNwcApAQCAtODAsNyArODAsNyBAQCBzdGF0aWMgYm9vbCBjYW5DYWNo
ZUZyYW1lKEZyYW1lJiBmcmFtZSwgRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQmIGRpYWdub3N0aWNM
b2dnaQogCiAgICAgLy8gUHJldmVudCBwYWdlIGNhY2hpbmcgaWYgYSBzdWJmcmFtZSBpcyBzdGls
bCBpbiBwcm92aXNpb25hbCBsb2FkIHN0YWdlLgogICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBjaGVj
ayBmb3Igc3ViZnJhbWVzIGJlY2F1c2UgdGhlIG1haW4gZnJhbWUgaXMgcmV1c2VkIHdoZW4gbmF2
aWdhdGluZyB0byBhIG5ldyBwYWdlLgotICAgIGlmICghZnJhbWUuaXNNYWluRnJhbWUoKSAmJiBm
cmFtZUxvYWRlci5zdGF0ZSgpID09IEZyYW1lU3RhdGVQcm92aXNpb25hbCkgeworICAgIGlmICgh
ZnJhbWUuaXNNYWluRnJhbWUoKSAmJiBmcmFtZUxvYWRlci5zdGF0ZSgpID09IEZyYW1lU3RhdGU6
OlByb3Zpc2lvbmFsKSB7CiAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgaXMgaW4gcHJvdmlzaW9u
YWwgbG9hZCBzdGFnZSIpOwogICAgICAgICBsb2dCYWNrRm9yd2FyZENhY2hlRmFpbHVyZURpYWdu
b3N0aWNNZXNzYWdlKGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LCBEaWFnbm9zdGljTG9nZ2luZ0tl
eXM6OnByb3Zpc2lvbmFsTG9hZEtleSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDIw
LDcgKzQyMCw3IEBAIHN0YXRpYyB2b2lkIGZpcmVQYWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkoRnJh
bWUmIGZyYW1lKQogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L2Jyb3dzZXJzLmh0bWwjdW5sb2FkLWEtZG9jdW1lbnQKICAgICBJZ25vcmVPcGVuc0R1cmluZ1Vu
bG9hZENvdW50SW5jcmVtZW50ZXIgaWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVu
dGVyKGRvY3VtZW50KTsKIAotICAgIGZyYW1lLmxvYWRlcigpLnN0b3BMb2FkaW5nKFVubG9hZEV2
ZW50UG9saWN5VW5sb2FkQW5kUGFnZUhpZGUpOworICAgIGZyYW1lLmxvYWRlcigpLnN0b3BMb2Fk
aW5nKFVubG9hZEV2ZW50UG9saWN5OjpVbmxvYWRBbmRQYWdlSGlkZSk7CiAKICAgICBmb3IgKFJl
ZlB0cjxGcmFtZT4gY2hpbGQgPSBmcmFtZS50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGZpcmVQYWdlSGlkZUV2
ZW50UmVjdXJzaXZlbHkoKmNoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCmluZGV4IDI2ODk0ZjM5ZjRlNjlmZThiNzMwMDc4ZGI3ODFlYjJkZWZkOGZmNTUuLmRi
YThhNDQzZmY5ZGRjMzMzMGE5ODBjNjQ3NGIwZGQzYWExYzdkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OnN0b3BMb2FkaW5nKCkKICAgICAgICAgRG9jdW1lbnQqIGRvYyA9IG1fZnJhbWUt
PmRvY3VtZW50KCk7CiAgICAgICAgIAogICAgICAgICBpZiAobG9hZGluZyB8fCBkb2MtPnBhcnNp
bmcoKSkKLSAgICAgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLnN0b3BMb2FkaW5nKFVubG9hZEV2
ZW50UG9saWN5Tm9uZSk7CisgICAgICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5zdG9wTG9hZGlu
ZyhVbmxvYWRFdmVudFBvbGljeTo6Tm9uZSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvIGNhbGxi
YWNrSWRlbnRpZmllciA6IG1faWNvbkxvYWRlcnMudmFsdWVzKCkpCkBAIC0xNDYzLDcgKzE0NjMs
NyBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmdJbkFQSVNlbnNlKCkgY29uc3QKIHsK
ICAgICAvLyBPbmNlIGEgZnJhbWUgaGFzIGxvYWRlZCwgd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gY29u
c2lkZXIgc3VicmVzb3VyY2VzLAogICAgIC8vIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIGNvbnNpZGVy
IHN1YmZyYW1lcy4KLSAgICBpZiAoZnJhbWVMb2FkZXIoKS0+c3RhdGUoKSAhPSBGcmFtZVN0YXRl
Q29tcGxldGUpIHsKKyAgICBpZiAoZnJhbWVMb2FkZXIoKS0+c3RhdGUoKSAhPSBGcmFtZVN0YXRl
OjpDb21wbGV0ZSkgewogICAgICAgICBpZiAobV9mcmFtZS0+c2V0dGluZ3MoKS5uZWVkc0lzTG9h
ZGluZ0luQVBJU2Vuc2VRdWlyaygpICYmICFtX3N1YnJlc291cmNlTG9hZGVycy5pc0VtcHR5KCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKaW5kZXggZDQ2ZjgyYjgwNjJlZDQwNDA5YTVlNjJhYmJmMjU0MjE2YmE2NzU1OC4uODZj
OGNlZTA0YzZmMjFiMjZhODM0MWZlNWQxYmU1YmY1ZDRhYzk0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgRnJhbWVMb2FkZXI6OkZyYW1l
TG9hZGVyKEZyYW1lJiBmcmFtZSwgVW5pcXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50PiYmIGNsaWVu
dCkKICAgICAsIG1fbm90aWZpZXIoZnJhbWUpCiAgICAgLCBtX3N1YmZyYW1lTG9hZGVyKG1ha2VV
bmlxdWU8U3ViZnJhbWVMb2FkZXI+KGZyYW1lKSkKICAgICAsIG1fbWl4ZWRDb250ZW50Q2hlY2tl
cihmcmFtZSkKLSAgICAsIG1fc3RhdGUoRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQorICAgICwgbV9z
dGF0ZShGcmFtZVN0YXRlOjpQcm92aXNpb25hbCkKICAgICAsIG1fbG9hZFR5cGUoRnJhbWVMb2Fk
VHlwZTo6U3RhbmRhcmQpCiAgICAgLCBtX3F1aWNrUmVkaXJlY3RDb21pbmcoZmFsc2UpCiAgICAg
LCBtX3NlbnRSZWRpcmVjdE5vdGlmaWNhdGlvbihmYWxzZSkKQEAgLTM2OCw3ICszNjgsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudChjb25zdCBVUkwmKQog
CiAgICAgbV9kaWRDYWxsSW1wbGljaXRDbG9zZSA9IHRydWU7CiAgICAgbV9pc0NvbXBsZXRlID0g
dHJ1ZTsKLSAgICBtX3N0YXRlID0gRnJhbWVTdGF0ZUNvbXBsZXRlOworICAgIG1fc3RhdGUgPSBG
cmFtZVN0YXRlOjpDb21wbGV0ZTsKICAgICBtX25lZWRzQ2xlYXIgPSB0cnVlOwogCiAgICAgbV9u
ZXR3b3JraW5nQ29udGV4dCA9IG1fY2xpZW50LT5jcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwpA
QCAtNTIzLDcgKzUyMyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKFVubG9hZEV2
ZW50UG9saWN5IHVubG9hZEV2ZW50UG9saWN5KQogICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkg
JiYgbV9mcmFtZS5kb2N1bWVudCgpLT5wYXJzZXIoKSkKICAgICAgICAgbV9mcmFtZS5kb2N1bWVu
dCgpLT5wYXJzZXIoKS0+c3RvcFBhcnNpbmcoKTsKIAotICAgIGlmICh1bmxvYWRFdmVudFBvbGlj
eSAhPSBVbmxvYWRFdmVudFBvbGljeU5vbmUpCisgICAgaWYgKHVubG9hZEV2ZW50UG9saWN5ICE9
IFVubG9hZEV2ZW50UG9saWN5OjpOb25lKQogICAgICAgICBkaXNwYXRjaFVubG9hZEV2ZW50cyh1
bmxvYWRFdmVudFBvbGljeSk7CiAKICAgICBtX2lzQ29tcGxldGUgPSB0cnVlOyAvLyB0byBhdm9p
ZCBjYWxsaW5nIGNvbXBsZXRlZCgpIGluIGZpbmlzaGVkUGFyc2luZygpCkBAIC01NjUsMTAgKzU2
NSwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbG9zZVVSTCgpCiAgICAgVW5sb2FkRXZlbnRQb2xp
Y3kgdW5sb2FkRXZlbnRQb2xpY3k7CiAgICAgaWYgKG1fZnJhbWUucGFnZSgpICYmIG1fZnJhbWUu
cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5pc1NWR0ltYWdlQ2hyb21lQ2xpZW50KCkpIHsKICAg
ICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgU1ZHRG9jdW1lbnQgb2YgYW4gU1ZHSW1hZ2UsIG5vIG5l
ZWQgdG8gZGlzcGF0Y2ggZXZlbnRzIG9yIHJlY2FsY1N0eWxlLgotICAgICAgICB1bmxvYWRFdmVu
dFBvbGljeSA9IFVubG9hZEV2ZW50UG9saWN5Tm9uZTsKKyAgICAgICAgdW5sb2FkRXZlbnRQb2xp
Y3kgPSBVbmxvYWRFdmVudFBvbGljeTo6Tm9uZTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBT
aG91bGQgb25seSBzZW5kIHRoZSBwYWdlaGlkZSBldmVudCBoZXJlIGlmIHRoZSBjdXJyZW50IGRv
Y3VtZW50IGV4aXN0cyBhbmQgaGFzIG5vdCBiZWVuIHBsYWNlZCBpbiB0aGUgYmFjay9mb3J3YXJk
IGNhY2hlLgotICAgICAgICB1bmxvYWRFdmVudFBvbGljeSA9IGN1cnJlbnREb2N1bWVudCAmJiBj
dXJyZW50RG9jdW1lbnQtPmJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgpID09IERvY3VtZW50OjpOb3RJ
bkJhY2tGb3J3YXJkQ2FjaGUgPyBVbmxvYWRFdmVudFBvbGljeVVubG9hZEFuZFBhZ2VIaWRlIDog
VW5sb2FkRXZlbnRQb2xpY3lVbmxvYWRPbmx5OworICAgICAgICB1bmxvYWRFdmVudFBvbGljeSA9
IGN1cnJlbnREb2N1bWVudCAmJiBjdXJyZW50RG9jdW1lbnQtPmJhY2tGb3J3YXJkQ2FjaGVTdGF0
ZSgpID09IERvY3VtZW50OjpOb3RJbkJhY2tGb3J3YXJkQ2FjaGUgPyBVbmxvYWRFdmVudFBvbGlj
eTo6VW5sb2FkQW5kUGFnZUhpZGUgOiBVbmxvYWRFdmVudFBvbGljeTo6VW5sb2FkT25seTsKICAg
ICB9CiAKICAgICBzdG9wTG9hZGluZyh1bmxvYWRFdmVudFBvbGljeSk7CkBAIC0xMjMzLDcgKzEy
MzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpwcmVwYXJlRm9yTG9hZFN0YXJ0KCkKIHZvaWQgRnJh
bWVMb2FkZXI6OnNldHVwRm9yUmVwbGFjZSgpCiB7CiAgICAgbV9jbGllbnQtPnJldmVydFRvUHJv
dmlzaW9uYWxTdGF0ZShtX2RvY3VtZW50TG9hZGVyLmdldCgpKTsKLSAgICBzZXRTdGF0ZShGcmFt
ZVN0YXRlUHJvdmlzaW9uYWwpOworICAgIHNldFN0YXRlKEZyYW1lU3RhdGU6OlByb3Zpc2lvbmFs
KTsKICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgPSBtX2RvY3VtZW50TG9hZGVyOwog
ICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAi
c2V0dXBGb3JSZXBsYWNlOiBTZXR0aW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
ci5nZXQoKSk7CiAgICAgbV9kb2N1bWVudExvYWRlciA9IG51bGxwdHI7CkBAIC0xNzg5LDcgKzE3
ODksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4g
b3B0aW9ucykKICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgZnJhbWVM
b2FkVHlwZUZvclJlbG9hZE9wdGlvbnMob3B0aW9ucyksIHsgfSwgQWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMOjpZZXMpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyhD
bGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSBjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSwgU3Rv
cExvYWRpbmdQb2xpY3kgc3RvcExvYWRpbmdQb2xpY3kpCit2b2lkIEZyYW1lTG9hZGVyOjpzdG9w
QWxsTG9hZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbSBjbGVhclByb3Zpc2lvbmFsSXRlbSwgU3Rv
cExvYWRpbmdQb2xpY3kgc3RvcExvYWRpbmdQb2xpY3kpCiB7CiAgICAgaWYgKG1fZnJhbWUuZG9j
dW1lbnQoKSAmJiBtX2ZyYW1lLmRvY3VtZW50KCktPmJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgpID09
IERvY3VtZW50OjpJbkJhY2tGb3J3YXJkQ2FjaGUpCiAgICAgICAgIHJldHVybjsKQEAgLTE4MTQs
MTEgKzE4MTQsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92
aXNpb25hbEl0ZW1Qb2xpY3kgY2xlYXJQcm92aXNpb25hbEl0ZW0KIAogICAgIC8vIElmIG5vIG5l
dyBsb2FkIGlzIGluIHByb2dyZXNzLCB3ZSBzaG91bGQgY2xlYXIgdGhlIHByb3Zpc2lvbmFsIGl0
ZW0gZnJvbSBoaXN0b3J5CiAgICAgLy8gYmVmb3JlIHdlIGNhbGwgc3RvcExvYWRpbmcuCi0gICAg
aWYgKGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5ID09IFNob3VsZENsZWFyUHJvdmlzaW9uYWxJ
dGVtKQorICAgIGlmIChjbGVhclByb3Zpc2lvbmFsSXRlbSA9PSBDbGVhclByb3Zpc2lvbmFsSXRl
bTo6WWVzKQogICAgICAgICBoaXN0b3J5KCkuc2V0UHJvdmlzaW9uYWxJdGVtKG51bGxwdHIpOwog
CiAgICAgZm9yIChSZWZQdHI8RnJhbWU+IGNoaWxkID0gbV9mcmFtZS50cmVlKCkuZmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCi0gICAgICAg
IGNoaWxkLT5sb2FkZXIoKS5zdG9wQWxsTG9hZGVycyhjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGlj
eSk7CisgICAgICAgIGNoaWxkLT5sb2FkZXIoKS5zdG9wQWxsTG9hZGVycyhjbGVhclByb3Zpc2lv
bmFsSXRlbSk7CiAKICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291
cmNlTG9hZGluZywgInN0b3BBbGxMb2FkZXJzOiBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9
JXAsIG1fZG9jdW1lbnRMb2FkZXI9JXAiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0
KCksIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogCkBAIC0xODk0LDcgKzE4OTQsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpzdG9wRm9yVXNlckNhbmNlbChib29sIGRlZmVyQ2hlY2tMb2FkQ29tcGxl
dGUpCiAKIERvY3VtZW50TG9hZGVyKiBGcmFtZUxvYWRlcjo6YWN0aXZlRG9jdW1lbnRMb2FkZXIo
KSBjb25zdAogewotICAgIGlmIChtX3N0YXRlID09IEZyYW1lU3RhdGVQcm92aXNpb25hbCkKKyAg
ICBpZiAobV9zdGF0ZSA9PSBGcmFtZVN0YXRlOjpQcm92aXNpb25hbCkKICAgICAgICAgcmV0dXJu
IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKTsKICAgICByZXR1cm4gbV9kb2N1bWVu
dExvYWRlci5nZXQoKTsKIH0KQEAgLTE5NzgsOSArMTk3OCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnNldFN0YXRlKEZyYW1lU3RhdGUgbmV3U3RhdGUpCiAgICAgRnJhbWVTdGF0ZSBvbGRTdGF0ZSA9
IG1fc3RhdGU7CiAgICAgbV9zdGF0ZSA9IG5ld1N0YXRlOwogICAgIAotICAgIGlmIChuZXdTdGF0
ZSA9PSBGcmFtZVN0YXRlUHJvdmlzaW9uYWwpCisgICAgaWYgKG5ld1N0YXRlID09IEZyYW1lU3Rh
dGU6OlByb3Zpc2lvbmFsKQogICAgICAgICBwcm92aXNpb25hbExvYWRTdGFydGVkKCk7Ci0gICAg
ZWxzZSBpZiAobmV3U3RhdGUgPT0gRnJhbWVTdGF0ZUNvbXBsZXRlKSB7CisgICAgZWxzZSBpZiAo
bmV3U3RhdGUgPT0gRnJhbWVTdGF0ZTo6Q29tcGxldGUpIHsKICAgICAgICAgZnJhbWVMb2FkQ29t
cGxldGVkKCk7CiAgICAgICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKQogICAgICAgICAgICAgbV9k
b2N1bWVudExvYWRlci0+c3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpOwpAQCAtMTk5Niw3ICsxOTk2
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXJQcm92aXNpb25hbExvYWQoKQogICAgIEZSQU1F
TE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY2xlYXJQcm92
aXNpb25hbExvYWQ6IENsZWFyaW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92
aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5n
ZXQoKSk7CiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihudWxscHRyKTsKICAgICBt
X3Byb2dyZXNzVHJhY2tlci0+cHJvZ3Jlc3NDb21wbGV0ZWQoKTsKLSAgICBzZXRTdGF0ZShGcmFt
ZVN0YXRlQ29tcGxldGUpOworICAgIHNldFN0YXRlKEZyYW1lU3RhdGU6OkNvbXBsZXRlKTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKQEAgLTIxNDIsOSAr
MjE0Miw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiB2b2lk
IEZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQoQ2FjaGVkUGFnZSogY2FjaGVkUGFn
ZSkKIHsKICAgICBBU1NFUlQobV9jbGllbnQtPmhhc1dlYlZpZXcoKSk7Ci0gICAgQVNTRVJUKG1f
c3RhdGUgPT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKTsKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBG
cmFtZVN0YXRlOjpQcm92aXNpb25hbCk7CiAKLSAgICBpZiAobV9zdGF0ZSAhPSBGcmFtZVN0YXRl
UHJvdmlzaW9uYWwpCisgICAgaWYgKG1fc3RhdGUgIT0gRnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWwp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZp
ZXcoKSkgewpAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dHJhbnNpdGlv
blRvQ29tbWl0dGVkKENhY2hlZFBhZ2UqIGNhY2hlZFBhZ2UpCiAgICAgc2V0UHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlcihudWxscHRyKTsKIAogICAgIC8vIE5vdGhpbmcgZWxzZSBjYW4gaW50ZXJy
dXB0IHRoaXMgY29tbWl0IC0gc2V0IHRoZSBQcm92aXNpb25hbC0+Q29tbWl0dGVkIHRyYW5zaXRp
b24gaW4gc3RvbmUKLSAgICBzZXRTdGF0ZShGcmFtZVN0YXRlQ29tbWl0dGVkUGFnZSk7CisgICAg
c2V0U3RhdGUoRnJhbWVTdGF0ZTo6Q29tbWl0dGVkUGFnZSk7CiAKICAgICAvLyBIYW5kbGUgYWRk
aW5nIHRoZSBVUkwgdG8gdGhlIGJhY2svZm9yd2FyZCBsaXN0LgogICAgIGF1dG8gZG9jdW1lbnRM
b2FkZXIgPSBtX2RvY3VtZW50TG9hZGVyOwpAQCAtMjQ5MSwxMzQgKzI0OTEsMTM2IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgICAgIGNhc2UgRnJhbWVTdGF0ZVBy
b3Zpc2lvbmFsOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogUHJvaGliaXRpbmcgYW55IHByb3Zp
c2lvbmFsIGxvYWQgZmFpbHVyZXMgZnJvbSBiZWluZyBzZW50IHRvIGNsaWVudHMKLSAgICAgICAg
ICAgIC8vIHdoaWxlIGhhbmRsaW5nIHByb3Zpc2lvbmFsIGxvYWQgZmFpbHVyZXMgaXMgdG9vIGhl
YXZ5LiBGb3IgZXhhbXBsZSwgdGhlIGN1cnJlbnQKLSAgICAgICAgICAgIC8vIGxvYWQgd2lsbCBm
YWlsIHRvIGNhbmNlbCBhbm90aGVyIG9uZ29pbmcgbG9hZC4gVGhhdCBtaWdodCBwcmV2ZW50IGNs
aWVudHMnIHBhZ2UKLSAgICAgICAgICAgIC8vIGxvYWQgc3RhdGUgYmVpbmcgaGFuZGxlZCBwcm9w
ZXJseS4KLSAgICAgICAgICAgIGlmICghbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxl
ZFVSTC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRnJhbWVT
dGF0ZTo6UHJvdmlzaW9uYWw6IHsKKyAgICAgICAgLy8gRklYTUU6IFByb2hpYml0aW5nIGFueSBw
cm92aXNpb25hbCBsb2FkIGZhaWx1cmVzIGZyb20gYmVpbmcgc2VudCB0byBjbGllbnRzCisgICAg
ICAgIC8vIHdoaWxlIGhhbmRsaW5nIHByb3Zpc2lvbmFsIGxvYWQgZmFpbHVyZXMgaXMgdG9vIGhl
YXZ5LiBGb3IgZXhhbXBsZSwgdGhlIGN1cnJlbnQKKyAgICAgICAgLy8gbG9hZCB3aWxsIGZhaWwg
dG8gY2FuY2VsIGFub3RoZXIgb25nb2luZyBsb2FkLiBUaGF0IG1pZ2h0IHByZXZlbnQgY2xpZW50
cycgcGFnZQorICAgICAgICAvLyBsb2FkIHN0YXRlIGJlaW5nIGhhbmRsZWQgcHJvcGVybHkuCisg
ICAgICAgIGlmICghbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTC5pc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIFJlZlB0cjxEb2N1bWVudExv
YWRlcj4gcGRsID0gbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyOwotICAgICAgICAgICAgaWYg
KCFwZGwpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgLy8gSWYgd2UndmUgcmVjZWl2ZWQgYW55IGVycm9ycyB3ZSBtYXkgYmUgc3R1Y2sgaW4g
dGhlIHByb3Zpc2lvbmFsIHN0YXRlIGFuZCBhY3R1YWxseSBjb21wbGV0ZS4KLSAgICAgICAgICAg
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yID0gcGRsLT5tYWluRG9jdW1lbnRFcnJvcigpOwot
ICAgICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0b3IgPSBtX3Byb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXI7CisgICAgICAgIGlmICghcHJvdGVjdG9yKQorICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgICAgICAvLyBDaGVjayBhbGwgY2hpbGRyZW4gZmlyc3QuCi0gICAgICAg
ICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW07Ci0gICAgICAgICAgICBpZiAoUGFnZSogcGFn
ZSA9IG1fZnJhbWUucGFnZSgpKQotICAgICAgICAgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9h
ZFR5cGUobG9hZFR5cGUoKSkpCi0gICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBiYWNr
IGZvcndhcmQgbGlzdCB0byB0aGUgbGFzdCBjb21taXR0ZWQgaGlzdG9yeSBpdGVtIGF0IHRoZSB0
b3AgbGV2ZWwuCi0gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBwYWdlLT5tYWluRnJhbWUoKS5s
b2FkZXIoKS5oaXN0b3J5KCkuY3VycmVudEl0ZW0oKTsKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIC8vIE9ubHkgcmVzZXQgaWYgd2UgYXJlbid0IGFscmVhZHkgZ29pbmcgdG8gYSBuZXcg
cHJvdmlzaW9uYWwgaXRlbS4KLSAgICAgICAgICAgIGJvb2wgc2hvdWxkUmVzZXQgPSAhaGlzdG9y
eSgpLnByb3Zpc2lvbmFsSXRlbSgpOwotICAgICAgICAgICAgaWYgKCFwZGwtPmlzTG9hZGluZ0lu
QVBJU2Vuc2UoKSB8fCBwZGwtPmlzU3RvcHBpbmcoKSkgewotICAgICAgICAgICAgICAgIEZSQU1F
TE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY2hlY2tMb2Fk
Q29tcGxldGVGb3JUaGlzRnJhbWU6IEZhaWxlZCBwcm92aXNpb25hbCBsb2FkIChpc1RpbWVvdXQg
PSAlZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgZXJyb3JDb2RlID0gJWQpIiwgZXJyb3IuaXNUaW1l
b3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmVycm9yQ29kZSgpKTsKLQotICAg
ICAgICAgICAgICAgIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgqcGRsLCBlcnJvcik7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFwZGwtPmlzTG9hZGluZygpKTsKLQotICAgICAgICAg
ICAgICAgIC8vIElmIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgbG9hZGluZyBtdWx0aXBhcnQgZGF0
YSwgd2UgbmVlZCB0byByZXN0b3JlIHRoZSBkb2N1bWVudCBsb2FkZXIuCi0gICAgICAgICAgICAg
ICAgaWYgKGlzUmVwbGFjaW5nKCkgJiYgIW1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpCisgICAgICAg
IC8vIElmIHdlJ3ZlIHJlY2VpdmVkIGFueSBlcnJvcnMgd2UgbWF5IGJlIHN0dWNrIGluIHRoZSBw
cm92aXNpb25hbCBzdGF0ZSBhbmQgYWN0dWFsbHkgY29tcGxldGUuCisgICAgICAgIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yID0gcHJvdGVjdG9yLT5tYWluRG9jdW1lbnRFcnJvcigpOworICAg
ICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
Ly8gQ2hlY2sgYWxsIGNoaWxkcmVuIGZpcnN0LgorICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+
IGl0ZW07CisgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKKyAgICAg
ICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobG9hZFR5cGUoKSkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBSZXNldCB0aGUgYmFjayBmb3J3YXJkIGxpc3QgdG8gdGhlIGxhc3QgY29tbWl0
dGVkIGhpc3RvcnkgaXRlbSBhdCB0aGUgdG9wIGxldmVsLgorICAgICAgICAgICAgICAgIGl0ZW0g
PSBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5oaXN0b3J5KCkuY3VycmVudEl0ZW0oKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIE9ubHkgcmVzZXQgaWYgd2UgYXJl
bid0IGFscmVhZHkgZ29pbmcgdG8gYSBuZXcgcHJvdmlzaW9uYWwgaXRlbS4KKyAgICAgICAgYm9v
bCBzaG91bGRSZXNldCA9ICFoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCk7CisgICAgICAgIGlm
ICghcHJvdGVjdG9yLT5pc0xvYWRpbmdJbkFQSVNlbnNlKCkgfHwgcHJvdGVjdG9yLT5pc1N0b3Bw
aW5nKCkpIHsKKyAgICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UmVzb3VyY2VMb2FkaW5nLCAiY2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWU6IEZhaWxlZCBw
cm92aXNpb25hbCBsb2FkIChpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgZXJy
b3JDb2RlID0gJWQpIiwgZXJyb3IuaXNUaW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCks
IGVycm9yLmVycm9yQ29kZSgpKTsKKworICAgICAgICAgICAgZGlzcGF0Y2hEaWRGYWlsUHJvdmlz
aW9uYWxMb2FkKCpwcm90ZWN0b3IsIGVycm9yKTsKKyAgICAgICAgICAgIEFTU0VSVCghcHJvdGVj
dG9yLT5pc0xvYWRpbmcoKSk7CisKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIGluIHRoZSBtaWRk
bGUgb2YgbG9hZGluZyBtdWx0aXBhcnQgZGF0YSwgd2UgbmVlZCB0byByZXN0b3JlIHRoZSBkb2N1
bWVudCBsb2FkZXIuCisgICAgICAgICAgICBpZiAoaXNSZXBsYWNpbmcoKSAmJiAhbV9kb2N1bWVu
dExvYWRlci5nZXQoKSkKICAgICAgICAgICAgICAgICAgICAgc2V0RG9jdW1lbnRMb2FkZXIobV9w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKIAotICAgICAgICAgICAgICAgIC8vIEZp
bmlzaCByZXNldHRpbmcgdGhlIGxvYWQgc3RhdGUsIGJ1dCBvbmx5IGlmIGFub3RoZXIgbG9hZCBo
YXNuJ3QgYmVlbiBzdGFydGVkIGJ5IHRoZQotICAgICAgICAgICAgICAgIC8vIGRlbGVnYXRlIGNh
bGxiYWNrLgotICAgICAgICAgICAgICAgIGlmIChwZGwgPT0gbV9wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyKQotICAgICAgICAgICAgICAgICAgICBjbGVhclByb3Zpc2lvbmFsTG9hZCgpOwotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGFjdGl2ZURvY3VtZW50TG9hZGVyKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgVVJMIHVucmVhY2hhYmxlVVJMID0gYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+
dW5yZWFjaGFibGVVUkwoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF1bnJlYWNoYWJsZVVS
TC5pc0VtcHR5KCkgJiYgdW5yZWFjaGFibGVVUkwgPT0gcGRsLT5yZXF1ZXN0KCkudXJsKCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRSZXNldCA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC8vIEZpbmlzaCByZXNldHRpbmcgdGhlIGxvYWQgc3RhdGUsIGJ1
dCBvbmx5IGlmIGFub3RoZXIgbG9hZCBoYXNuJ3QgYmVlbiBzdGFydGVkIGJ5IHRoZQorICAgICAg
ICAgICAgLy8gZGVsZWdhdGUgY2FsbGJhY2suCisgICAgICAgICAgICBpZiAocHJvdGVjdG9yID09
IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikKKyAgICAgICAgICAgICAgICBjbGVhclByb3Zp
c2lvbmFsTG9hZCgpOworICAgICAgICAgICAgZWxzZSBpZiAoYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KSkgeworICAgICAgICAgICAgICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9IGFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPnVucmVhY2hhYmxlVVJMKCk7CisgICAgICAgICAgICAgICAgaWYgKCF1bnJlYWNo
YWJsZVVSTC5pc0VtcHR5KCkgJiYgdW5yZWFjaGFibGVVUkwgPT0gcHJvdGVjdG9yLT5yZXF1ZXN0
KCkudXJsKCkpCisgICAgICAgICAgICAgICAgICAgIHNob3VsZFJlc2V0ID0gZmFsc2U7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc2hvdWxkUmVzZXQgJiYgaXRlbSkKLSAgICAgICAg
ICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHBhZ2UtPmJhY2tGb3J3YXJkKCkuc2V0Q3VycmVudEl0ZW0oKml0ZW0pOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBpZiAo
c2hvdWxkUmVzZXQgJiYgaXRlbSkgeworICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLnBhZ2UoKSkKKyAgICAgICAgICAgICAgICBwYWdlLT5iYWNrRm9yd2FyZCgpLnNldEN1cnJl
bnRJdGVtKCppdGVtKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQogICAgICAg
ICAKLSAgICAgICAgY2FzZSBGcmFtZVN0YXRlQ29tbWl0dGVkUGFnZTogewotICAgICAgICAgICAg
aWYgKCFtX2RvY3VtZW50TG9hZGVyKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIGlmIChtX2RvY3VtZW50TG9hZGVyLT5pc0xvYWRpbmdJbkFQSVNlbnNlKCkgJiYgIW1fZG9j
dW1lbnRMb2FkZXItPmlzU3RvcHBpbmcoKSAmJiAhbV9jaGVja2luZ0xvYWRDb21wbGV0ZUZvckRl
dGFjaG1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRnJhbWVTdGF0ZTo6
Q29tbWl0dGVkUGFnZTogeworICAgICAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGlmIChtX2RvY3VtZW50TG9hZGVyLT5pc0xvYWRpbmdJbkFQ
SVNlbnNlKCkgJiYgIW1fZG9jdW1lbnRMb2FkZXItPmlzU3RvcHBpbmcoKSAmJiAhbV9jaGVja2lu
Z0xvYWRDb21wbGV0ZUZvckRldGFjaG1lbnQpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgICAgIHNldFN0YXRlKEZyYW1lU3RhdGVDb21wbGV0ZSk7CisgICAgICAgIHNldFN0YXRlKEZy
YW1lU3RhdGU6OkNvbXBsZXRlKTsKIAotICAgICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgc3Vi
c2VxdWVudCB3b3JrIGltcG9ydGFudCBpZiB3ZSBhbHJlYWR5IG5hdmlnYXRlZCBhd2F5PwotICAg
ICAgICAgICAgLy8gTWF5YmUgdGhlcmUgYXJlIGJ1Z3MgYmVjYXVzZSBvZiB0aGF0LCBvciBleHRy
YSB3b3JrIHdlIGNhbiBza2lwIGJlY2F1c2UKLSAgICAgICAgICAgIC8vIHRoZSBuZXcgcGFnZSBp
cyByZWFkeS4KKyAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgc3Vic2VxdWVudCB3b3JrIGltcG9y
dGFudCBpZiB3ZSBhbHJlYWR5IG5hdmlnYXRlZCBhd2F5PworICAgICAgICAvLyBNYXliZSB0aGVy
ZSBhcmUgYnVncyBiZWNhdXNlIG9mIHRoYXQsIG9yIGV4dHJhIHdvcmsgd2UgY2FuIHNraXAgYmVj
YXVzZQorICAgICAgICAvLyB0aGUgbmV3IHBhZ2UgaXMgcmVhZHkuCiAKLSAgICAgICAgICAgIG1f
Y2xpZW50LT5mb3JjZUxheW91dEZvck5vbkhUTUwoKTsKKyAgICAgICAgbV9jbGllbnQtPmZvcmNl
TGF5b3V0Rm9yTm9uSFRNTCgpOwogICAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gSWYgdGhl
IHVzZXIgaGFkIGEgc2Nyb2xsIHBvaW50LCBzY3JvbGwgdG8gaXQsIG92ZXJyaWRpbmcgdGhlIGFu
Y2hvciBwb2ludCBpZiBhbnkuCi0gICAgICAgICAgICBpZiAobV9mcmFtZS5wYWdlKCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5cGUpIHx8IGlz
UmVsb2FkKG1fbG9hZFR5cGUpKQotICAgICAgICAgICAgICAgICAgICBoaXN0b3J5KCkucmVzdG9y
ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIC8v
IElmIHRoZSB1c2VyIGhhZCBhIHNjcm9sbCBwb2ludCwgc2Nyb2xsIHRvIGl0LCBvdmVycmlkaW5n
IHRoZSBhbmNob3IgcG9pbnQgaWYgYW55LgorICAgICAgICBpZiAobV9mcmFtZS5wYWdlKCkpIHsK
KyAgICAgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkgfHwgaXNS
ZWxvYWQobV9sb2FkVHlwZSkpCisgICAgICAgICAgICAgICAgaGlzdG9yeSgpLnJlc3RvcmVTY3Jv
bGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgpOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICht
X3N0YXRlTWFjaGluZS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgfHwgIW1fc3RhdGVN
YWNoaW5lLmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpKQotICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKG1fc3RhdGVNYWNoaW5lLmNyZWF0aW5nSW5pdGlhbEVtcHR5
RG9jdW1lbnQoKSB8fCAhbV9zdGF0ZU1hY2hpbmUuY29tbWl0dGVkRmlyc3RSZWFsRG9jdW1lbnRM
b2FkKCkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIG1fcHJvZ3Jlc3NUcmFj
a2VyLT5wcm9ncmVzc0NvbXBsZXRlZCgpOwotICAgICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJh
bWUucGFnZSgpOwotICAgICAgICAgICAgaWYgKHBhZ2UpIHsKLSAgICAgICAgICAgICAgICBpZiAo
bV9mcmFtZS5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyYWNlUG9pbnQo
TWFpblJlc291cmNlTG9hZERpZEVuZCk7Ci0gICAgICAgICAgICAgICAgICAgIHBhZ2UtPmRpZEZp
bmlzaExvYWQoKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgIG1fcHJvZ3Jlc3NUcmFja2Vy
LT5wcm9ncmVzc0NvbXBsZXRlZCgpOworICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdl
KCk7CisgICAgICAgIGlmIChwYWdlKSB7CisgICAgICAgICAgICBpZiAobV9mcmFtZS5pc01haW5G
cmFtZSgpKSB7CisgICAgICAgICAgICAgICAgdHJhY2VQb2ludChNYWluUmVzb3VyY2VMb2FkRGlk
RW5kKTsKKyAgICAgICAgICAgICAgICBwYWdlLT5kaWRGaW5pc2hMb2FkKCk7CiAgICAgICAgICAg
ICB9CisgICAgICAgIH0KIAotICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ig
PSBtX2RvY3VtZW50TG9hZGVyLT5tYWluRG9jdW1lbnRFcnJvcigpOworICAgICAgICBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvciA9IG1fZG9jdW1lbnRMb2FkZXItPm1haW5Eb2N1bWVudEVycm9y
KCk7CiAKLSAgICAgICAgICAgIEFYT2JqZWN0Q2FjaGU6OkFYTG9hZGluZ0V2ZW50IGxvYWRpbmdF
dmVudDsKLSAgICAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAg
ICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNo
ZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lOiBGaW5pc2hlZCBmcmFtZSBsb2FkIHdpdGggZXJy
b3IgKGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBlcnJvckNvZGUgPSAlZCki
LCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3IuZXJyb3JD
b2RlKCkpOwotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZEZhaWxMb2FkKGVy
cm9yKTsKLSAgICAgICAgICAgICAgICBsb2FkaW5nRXZlbnQgPSBBWE9iamVjdENhY2hlOjpBWExv
YWRpbmdGYWlsZWQ7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIEZSQU1F
TE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY2hlY2tMb2Fk
Q29tcGxldGVGb3JUaGlzRnJhbWU6IEZpbmlzaGVkIGZyYW1lIGxvYWQiKTsKKyAgICAgICAgQVhP
YmplY3RDYWNoZTo6QVhMb2FkaW5nRXZlbnQgbG9hZGluZ0V2ZW50OworICAgICAgICBpZiAoIWVy
cm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9B
TExPV0VEKFJlc291cmNlTG9hZGluZywgImNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lOiBG
aW5pc2hlZCBmcmFtZSBsb2FkIHdpdGggZXJyb3IgKGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxh
dGlvbiA9ICVkLCBlcnJvckNvZGUgPSAlZCkiLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXND
YW5jZWxsYXRpb24oKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgICAgICAgICAgbV9jbGllbnQt
PmRpc3BhdGNoRGlkRmFpbExvYWQoZXJyb3IpOworICAgICAgICAgICAgbG9hZGluZ0V2ZW50ID0g
QVhPYmplY3RDYWNoZTo6QVhMb2FkaW5nRmFpbGVkOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcs
ICJjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZTogRmluaXNoZWQgZnJhbWUgbG9hZCIpOwog
I2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKLSAgICAgICAgICAgICAgICBhdXRvIGRvY3VtZW50
ID0gbV9mcmFtZS5kb2N1bWVudCgpOwotICAgICAgICAgICAgICAgIGF1dG8gdHlwZXMgPSBPcHRp
b25TZXQ8RGF0YURldGVjdG9yVHlwZT4geyBtX2ZyYW1lLnNldHRpbmdzKCkuZGF0YURldGVjdG9y
VHlwZXMoKSB9OwotICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudCAmJiB0eXBlcykgewotICAg
ICAgICAgICAgICAgICAgICBtX2ZyYW1lLnNldERhdGFEZXRlY3Rpb25SZXN1bHRzKERhdGFEZXRl
Y3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50
cygqZG9jdW1lbnQpLCB0eXBlcywgbV9jbGllbnQtPmRhdGFEZXRlY3Rpb25Db250ZXh0KCkpKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24o
bV9mcmFtZS5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpKTsKLSAgICAgICAgICAgICAgICB9Ci0jZW5k
aWYKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7Ci0g
ICAgICAgICAgICAgICAgbG9hZGluZ0V2ZW50ID0gQVhPYmplY3RDYWNoZTo6QVhMb2FkaW5nRmlu
aXNoZWQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE5vdGlmeSBhY2Nlc3NpYmls
aXR5LgotICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQt
PmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQotICAgICAgICAgICAgICAgICAgICBjYWNoZS0+ZnJh
bWVMb2FkaW5nRXZlbnROb3RpZmljYXRpb24oJm1fZnJhbWUsIGxvYWRpbmdFdmVudCk7CisgICAg
ICAgICAgICBhdXRvIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpOworICAgICAgICAgICAg
YXV0byB0eXBlcyA9IE9wdGlvblNldDxEYXRhRGV0ZWN0b3JUeXBlPiB7IG1fZnJhbWUuc2V0dGlu
Z3MoKS5kYXRhRGV0ZWN0b3JUeXBlcygpIH07CisgICAgICAgICAgICBpZiAoZG9jdW1lbnQgJiYg
dHlwZXMpIHsKKyAgICAgICAgICAgICAgICBtX2ZyYW1lLnNldERhdGFEZXRlY3Rpb25SZXN1bHRz
KERhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05v
ZGVDb250ZW50cygqZG9jdW1lbnQpLCB0eXBlcywgbV9jbGllbnQtPmRhdGFEZXRlY3Rpb25Db250
ZXh0KCkpKTsKKyAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQorICAg
ICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9u
KG1fZnJhbWUuZGF0YURldGVjdGlvblJlc3VsdHMoKSk7CiAgICAgICAgICAgICB9CisjZW5kaWYK
KyAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKKyAgICAgICAg
ICAgIGxvYWRpbmdFdmVudCA9IEFYT2JqZWN0Q2FjaGU6OkFYTG9hZGluZ0ZpbmlzaGVkOworICAg
ICAgICB9CiAKLSAgICAgICAgICAgIC8vIFRoZSBhYm92ZSBjYWxscyB0byBkaXNwYXRjaERpZEZp
bmlzaExvYWQoKSBtaWdodCBoYXZlIGRldGFjaGVkIHRoZSBGcmFtZQotICAgICAgICAgICAgLy8g
ZnJvbSBpdHMgUGFnZSBhbmQgYWxzbyBtaWdodCBoYXZlIGNhdXNlZCBQYWdlIHRvIGJlIGRlbGV0
ZWQuCi0gICAgICAgICAgICAvLyBEb24ndCBhc3N1bWUgJ3BhZ2UnIGlzIHN0aWxsIGF2YWlsYWJs
ZSB0byB1c2UuCi0gICAgICAgICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpICYmIG1fZnJh
bWUucGFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCZtX2ZyYW1lLnBhZ2UoKS0+bWFp
bkZyYW1lKCkgPT0gJm1fZnJhbWUpOwotICAgICAgICAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5k
aWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OnBhZ2VMb2FkZWRLZXkoKSwgZW1wdHlTdHJpbmcoKSwgZXJy
b3IuaXNOdWxsKCkgPyBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MgOiBEaWFnbm9zdGljTG9n
Z2luZ1Jlc3VsdEZhaWwsIFNob3VsZFNhbXBsZTo6WWVzKTsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgLy8gTm90aWZ5IGFjY2Vzc2liaWxpdHkuCisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkgeworICAgICAgICAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNh
Y2hlID0gZG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQorICAgICAgICAgICAgICAg
IGNhY2hlLT5mcmFtZUxvYWRpbmdFdmVudE5vdGlmaWNhdGlvbigmbV9mcmFtZSwgbG9hZGluZ0V2
ZW50KTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8vIFRoZSBh
Ym92ZSBjYWxscyB0byBkaXNwYXRjaERpZEZpbmlzaExvYWQoKSBtaWdodCBoYXZlIGRldGFjaGVk
IHRoZSBGcmFtZQorICAgICAgICAvLyBmcm9tIGl0cyBQYWdlIGFuZCBhbHNvIG1pZ2h0IGhhdmUg
Y2F1c2VkIFBhZ2UgdG8gYmUgZGVsZXRlZC4KKyAgICAgICAgLy8gRG9uJ3QgYXNzdW1lICdwYWdl
JyBpcyBzdGlsbCBhdmFpbGFibGUgdG8gdXNlLgorICAgICAgICBpZiAobV9mcmFtZS5pc01haW5G
cmFtZSgpICYmIG1fZnJhbWUucGFnZSgpKSB7CisgICAgICAgICAgICBBU1NFUlQoJm1fZnJhbWUu
cGFnZSgpLT5tYWluRnJhbWUoKSA9PSAmbV9mcmFtZSk7CisgICAgICAgICAgICBtX2ZyYW1lLnBh
Z2UoKS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhS
ZXN1bHQoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpwYWdlTG9hZGVkS2V5KCksIGVtcHR5U3RyaW5n
KCksIGVycm9yLmlzTnVsbCgpID8gRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRQYXNzIDogRGlhZ25v
c3RpY0xvZ2dpbmdSZXN1bHRGYWlsLCBTaG91bGRTYW1wbGU6Olllcyk7CiAgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm47CisgICAgfQogICAgICAgICAKLSAgICAgICAgY2FzZSBGcmFtZVN0YXRl
Q29tcGxldGU6Ci0gICAgICAgICAgICBtX2xvYWRUeXBlID0gRnJhbWVMb2FkVHlwZTo6U3RhbmRh
cmQ7Ci0gICAgICAgICAgICBmcmFtZUxvYWRDb21wbGV0ZWQoKTsKLSAgICAgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIEZyYW1lU3RhdGU6OkNvbXBsZXRlOgorICAgICAgICBtX2xvYWRUeXBlID0g
RnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQ7CisgICAgICAgIGZyYW1lTG9hZENvbXBsZXRlZCgpOwor
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0y
ODMxLDcgKzI4MzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkZXRhY2hGcm9tUGFyZW50KCkKICAg
ICAgICAgLy8gc3RvcEFsbExvYWRlcnMoKSBuZWVkcyB0byBiZSBjYWxsZWQgYWZ0ZXIgZGV0YWNo
Q2hpbGRyZW4oKSBpZiB0aGUgZG9jdW1lbnQgaXMgbm90IGluIHRoZSBiYWNrL2ZvcndhcmQgY2Fj
aGUsCiAgICAgICAgIC8vIGJlY2F1c2UgZGV0YWNoZWRDaGlsZHJlbigpIHdpbGwgdHJpZ2dlciB0
aGUgdW5sb2FkIGV2ZW50IGhhbmRsZXJzIG9mIGFueSBjaGlsZCBmcmFtZXMsIGFuZCB0aG9zZSBl
dmVudAogICAgICAgICAvLyBoYW5kbGVycyBtaWdodCBzdGFydCBhIG5ldyBzdWJyZXNvdXJjZSBs
b2FkIGluIHRoaXMgZnJhbWUuCi0gICAgICAgIHN0b3BBbGxMb2FkZXJzKFNob3VsZENsZWFyUHJv
dmlzaW9uYWxJdGVtLCBTdG9wTG9hZGluZ1BvbGljeTo6QWx3YXlzU3RvcExvYWRpbmcpOworICAg
ICAgICBzdG9wQWxsTG9hZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbTo6WWVzLCBTdG9wTG9hZGlu
Z1BvbGljeTo6QWx3YXlzU3RvcExvYWRpbmcpOwogICAgIH0KIAogICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQobV9mcmFtZSk7CkBAIC0zMTQ2LDcg
KzMxNDgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWNlaXZlZE1haW5SZXNvdXJjZUVycm9yKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgICAgICAgICAgZG93bmNhc3Q8SFRNTE9iamVj
dEVsZW1lbnQ+KCpvd25lcikucmVuZGVyRmFsbGJhY2tDb250ZW50KCk7CiAgICAgfQogCi0gICAg
aWYgKG1fc3RhdGUgPT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsICYmIG1fcHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcikgeworICAgIGlmIChtX3N0YXRlID09IEZyYW1lU3RhdGU6OlByb3Zpc2lvbmFs
ICYmIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikgewogICAgICAgICBpZiAobV9zdWJtaXR0
ZWRGb3JtVVJMID09IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+b3JpZ2luYWxSZXF1ZXN0
Q29weSgpLnVybCgpKQogICAgICAgICAgICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gVVJMKCk7CiAg
ICAgICAgICAgICAKQEAgLTMyOTIsNyArMzI5NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3Bh
dGNoVW5sb2FkRXZlbnRzKFVubG9hZEV2ZW50UG9saWN5IHVubG9hZEV2ZW50UG9saWN5KQogICAg
ICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oY3VycmVudEZvY3VzZWRFbGVtZW50KSkKICAg
ICAgICAgICAgIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpjdXJyZW50Rm9jdXNlZEVsZW1l
bnQpLmVuZEVkaXRpbmcoKTsKICAgICAgICAgaWYgKG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdE
aXNwYXRjaGVkID09IFBhZ2VEaXNtaXNzYWxUeXBlOjpOb25lKSB7Ci0gICAgICAgICAgICBpZiAo
dW5sb2FkRXZlbnRQb2xpY3kgPT0gVW5sb2FkRXZlbnRQb2xpY3lVbmxvYWRBbmRQYWdlSGlkZSkg
eworICAgICAgICAgICAgaWYgKHVubG9hZEV2ZW50UG9saWN5ID09IFVubG9hZEV2ZW50UG9saWN5
OjpVbmxvYWRBbmRQYWdlSGlkZSkgewogICAgICAgICAgICAgICAgIG1fcGFnZURpc21pc3NhbEV2
ZW50QmVpbmdEaXNwYXRjaGVkID0gUGFnZURpc21pc3NhbFR5cGU6OlBhZ2VIaWRlOwogICAgICAg
ICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmRpc3BhdGNoRXZlbnQo
UGFnZVRyYW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5wYWdlaGlkZUV2ZW50LCBt
X2ZyYW1lLmRvY3VtZW50KCktPmJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgpID09IERvY3VtZW50OjpB
Ym91dFRvRW50ZXJCYWNrRm9yd2FyZENhY2hlKSwgbV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICAg
ICAgICAgIH0KQEAgLTM0NjQsNyArMzQ2Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVl
TG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAK
ICAgICBGcmFtZUxvYWRUeXBlIHR5cGUgPSBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKTsKICAg
ICAvLyBBIG5ldyBuYXZpZ2F0aW9uIGlzIGluIHByb2dyZXNzLCBzbyBkb24ndCBjbGVhciB0aGUg
aGlzdG9yeSdzIHByb3Zpc2lvbmFsIGl0ZW0uCi0gICAgc3RvcEFsbExvYWRlcnMoU2hvdWxkTm90
Q2xlYXJQcm92aXNpb25hbEl0ZW0pOworICAgIHN0b3BBbGxMb2FkZXJzKENsZWFyUHJvdmlzaW9u
YWxJdGVtOjpObyk7CiAgICAgCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzYyNTA4NTY+IC0gSW4g
Y2VydGFpbiBjaXJjdW1zdGFuY2VzIG9uIHBhZ2VzIHdpdGggbXVsdGlwbGUgZnJhbWVzLCBzdG9w
QWxsTG9hZGVycygpCiAgICAgLy8gbWlnaHQgZGV0YWNoIHRoZSBjdXJyZW50IEZyYW1lTG9hZGVy
LCBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCBiYWlsIG9uIHRoaXMgbmV3bHkgZGVmdW5jdCBsb2Fk
LiAKQEAgLTM0NzYsNyArMzQ3OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFm
dGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgc2V0
UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihtX3BvbGljeURvY3VtZW50TG9hZGVyLmdldCgpKTsK
ICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywg
ImNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeTogU2V0dGluZyBwcm92aXNpb25hbCBk
b2N1bWVudCBsb2FkZXIgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogICAgIG1fbG9hZFR5cGUgPSB0eXBlOwotICAg
IHNldFN0YXRlKEZyYW1lU3RhdGVQcm92aXNpb25hbCk7CisgICAgc2V0U3RhdGUoRnJhbWVTdGF0
ZTo6UHJvdmlzaW9uYWwpOwogCiAgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobnVsbHB0cik7
CiAKQEAgLTM4NjAsNyArMzg2Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJdGVtKEhpc3Rv
cnlJdGVtJiBpdGVtLCBIaXN0b3J5SXRlbSogZnJvbUl0ZW0sIEZyYW1lTG9hZFR5CiAKIHZvaWQg
RnJhbWVMb2FkZXI6OnJldHJ5QWZ0ZXJGYWlsZWRDYWNoZU9ubHlNYWluUmVzb3VyY2VMb2FkKCkK
IHsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBGcmFtZVN0YXRlUHJvdmlzaW9uYWwpOworICAgIEFT
U0VSVChtX3N0YXRlID09IEZyYW1lU3RhdGU6OlByb3Zpc2lvbmFsKTsKICAgICBBU1NFUlQoIW1f
bG9hZGluZ0Zyb21DYWNoZWRQYWdlKTsKICAgICBBU1NFUlQoaGlzdG9yeSgpLnByb3Zpc2lvbmFs
SXRlbSgpKTsKICAgICBBU1NFUlQoaGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgpLT5mb3JtRGF0
YSgpKTsKQEAgLTM4NjksNyArMzg3MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJldHJ5QWZ0ZXJG
YWlsZWRDYWNoZU9ubHlNYWluUmVzb3VyY2VMb2FkKCkKICAgICBGcmFtZUxvYWRUeXBlIGxvYWRU
eXBlID0gbV9sb2FkVHlwZTsKICAgICBIaXN0b3J5SXRlbSogaXRlbSA9IGhpc3RvcnkoKS5wcm92
aXNpb25hbEl0ZW0oKTsKIAotICAgIHN0b3BBbGxMb2FkZXJzKFNob3VsZE5vdENsZWFyUHJvdmlz
aW9uYWxJdGVtKTsKKyAgICBzdG9wQWxsTG9hZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbTo6Tm8p
OwogICAgIGlmIChpdGVtKQogICAgICAgICBsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKCppdGVt
LCBoaXN0b3J5KCkuY3VycmVudEl0ZW0oKSwgbG9hZFR5cGUsIE1heU5vdEF0dGVtcHRDYWNoZU9u
bHlMb2FkRm9yRm9ybVN1Ym1pc3Npb25JdGVtLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6
Ok5vKTsKICAgICBlbHNlIHsKQEAgLTQxODksNyArNDE5MSw3IEBAIFJlZlB0cjxGcmFtZT4gY3Jl
YXRlV2luZG93KEZyYW1lJiBvcGVuZXJGcmFtZSwgRnJhbWUmIGxvb2t1cEZyYW1lLCBGcmFtZUxv
YWRSZXF1CiAKIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZFN1cHByZXNzVGV4dElucHV0RnJvbUVk
aXRpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lLnNldHRpbmdzKCkuc2hvdWxkU3Vw
cHJlc3NUZXh0SW5wdXRGcm9tRWRpdGluZ0R1cmluZ1Byb3Zpc2lvbmFsTmF2aWdhdGlvbigpICYm
IG1fc3RhdGUgPT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsOworICAgIHJldHVybiBtX2ZyYW1lLnNl
dHRpbmdzKCkuc2hvdWxkU3VwcHJlc3NUZXh0SW5wdXRGcm9tRWRpdGluZ0R1cmluZ1Byb3Zpc2lv
bmFsTmF2aWdhdGlvbigpICYmIG1fc3RhdGUgPT0gRnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWw7CiB9
CiAKIGJvb2wgRnJhbWVMb2FkZXI6OmFyZVBsdWdpbnNFbmFibGVkKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKaW5kZXggOWJlYTZiNWZhNDc4ODk4YzViN2RhZTNlZmRlZDM4NDQyZDE5
Y2M5YS4uMWNmYTY2MzFiOTMxMzE4M2I2M2E3NTU3ZWI4MGMwN2EyOGYxYWY0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBGSVhNRTogVGhlc2UgYXJlIGFsbCBmdW5jdGlvbnMgd2hpY2ggc3RvcCBsb2Fkcy4gV2Ug
aGF2ZSB0b28gbWFueS4KICAgICB2b2lkIHN0b3BBbGxMb2FkZXJzQW5kQ2hlY2tDb21wbGV0ZW5l
c3MoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BBbGxMb2FkZXJzKENsZWFyUHJvdmlz
aW9uYWxJdGVtUG9saWN5ID0gU2hvdWxkQ2xlYXJQcm92aXNpb25hbEl0ZW0sIFN0b3BMb2FkaW5n
UG9saWN5ID0gU3RvcExvYWRpbmdQb2xpY3k6OlByZXZlbnREdXJpbmdVbmxvYWRFdmVudHMpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0
ZW0gPSBDbGVhclByb3Zpc2lvbmFsSXRlbTo6WWVzLCBTdG9wTG9hZGluZ1BvbGljeSA9IFN0b3BM
b2FkaW5nUG9saWN5OjpQcmV2ZW50RHVyaW5nVW5sb2FkRXZlbnRzKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHN0b3BGb3JVc2VyQ2FuY2VsKGJvb2wgZGVmZXJDaGVja0xvYWRDb21wbGV0ZSA9
IGZhbHNlKTsKICAgICB2b2lkIHN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CiAgICAgdm9pZCBz
dG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBl
cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAppbmRleCA4YjRj
MDU0MWZkNDliNDRiN2VmMDVkYmUyOThmMjRjMzUzZmJlMDRjLi4zNTcxNjc1ZjI3ZDAxN2RkNWYy
MWRiZjdkYjI3ZjlkNjMzODFhOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
clR5cGVzLmgKQEAgLTM1LDEyICszNSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVu
dW0gRnJhbWVTdGF0ZSB7Ci0gICAgRnJhbWVTdGF0ZVByb3Zpc2lvbmFsLAorZW51bSBjbGFzcyBG
cmFtZVN0YXRlIDogdWludDhfdCB7CisgICAgUHJvdmlzaW9uYWwsCiAgICAgLy8gVGhpcyBzdGF0
ZSBpbmRpY2F0ZXMgd2UgYXJlIHJlYWR5IHRvIGNvbW1pdCB0byBhIHBhZ2UsCiAgICAgLy8gd2hp
Y2ggbWVhbnMgdGhlIHZpZXcgd2lsbCB0cmFuc2l0aW9uIHRvIHVzZSB0aGUgbmV3IGRhdGEgc291
cmNlLgotICAgIEZyYW1lU3RhdGVDb21taXR0ZWRQYWdlLAotICAgIEZyYW1lU3RhdGVDb21wbGV0
ZQorICAgIENvbW1pdHRlZFBhZ2UsCisgICAgQ29tcGxldGUKIH07CiAKIGVudW0gY2xhc3MgUG9s
aWN5QWN0aW9uIDogdWludDhfdCB7CkBAIC0xNDMsOSArMTQzLDkgQEAgZW51bSBjbGFzcyBJbml0
aWF0ZWRCeU1haW5GcmFtZSA6IHVpbnQ4X3QgewogICAgIFVua25vd24sCiB9OwogCi1lbnVtIENs
ZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5IHsKLSAgICBTaG91bGRDbGVhclByb3Zpc2lvbmFsSXRl
bSwKLSAgICBTaG91bGROb3RDbGVhclByb3Zpc2lvbmFsSXRlbQorZW51bSBjbGFzcyBDbGVhclBy
b3Zpc2lvbmFsSXRlbSA6IGJvb2wgeworICAgIFllcywKKyAgICBObwogfTsKIAogZW51bSBjbGFz
cyBTdG9wTG9hZGluZ1BvbGljeSB7CkBAIC0xNjAsMTAgKzE2MCwxMCBAQCBlbnVtIGNsYXNzIE9i
amVjdENvbnRlbnRUeXBlIDogdWludDhfdCB7CiAgICAgUGx1Z0luLAogfTsKIAotZW51bSBVbmxv
YWRFdmVudFBvbGljeSB7Ci0gICAgVW5sb2FkRXZlbnRQb2xpY3lOb25lLAotICAgIFVubG9hZEV2
ZW50UG9saWN5VW5sb2FkT25seSwKLSAgICBVbmxvYWRFdmVudFBvbGljeVVubG9hZEFuZFBhZ2VI
aWRlCitlbnVtIGNsYXNzIFVubG9hZEV2ZW50UG9saWN5IHsKKyAgICBOb25lLAorICAgIFVubG9h
ZE9ubHksCisgICAgVW5sb2FkQW5kUGFnZUhpZGUKIH07CiAKIC8vIFBhc3NlZCB0byBGcmFtZUxv
YWRlcjo6dXJsU2VsZWN0ZWQoKSBhbmQgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNj
cmlwdFVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNj
aGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5j
cHAKaW5kZXggNTNkZTIyMzM0MzExMjFhYjI1YWZkN2ZlMmM5ODZlNWE3YWVjZDRiMC4uNDIyMDI2
MDk5YWFhODhhMTQzMjk5ZmQ0OTY4Y2EzYjRjMzJkNjU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQg
TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGUoc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZE5h
dmlnYXRpb24+IHJlZGlyZWN0CiAgICAgaWYgKHJlZGlyZWN0LT53YXNEdXJpbmdMb2FkKCkpIHsK
ICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyID0g
bV9mcmFtZS5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAg
ICBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdG9wTG9hZGluZygpOwotICAgICAgICBtX2Zy
YW1lLmxvYWRlcigpLnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5VW5sb2FkQW5kUGFnZUhp
ZGUpOworICAgICAgICBtX2ZyYW1lLmxvYWRlcigpLnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9s
aWN5OjpVbmxvYWRBbmRQYWdlSGlkZSk7CiAgICAgfQogCiAgICAgY2FuY2VsKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAppbmRleCAxYjFjZTYyMGMwMjk0MDMyMTA5
YzBjYTAzMDEwNTJkNTVkNjI3YjRjLi5jMWFmMzUwZjVkYTQ2OGQ0ODZkMzdmMjM1NDIyZDFiNWUz
ZGNlZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKQEAgLTMx
Nyw3ICszMTcsNyBAQCBSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyOjpTdWJmcmFtZUxvYWRlcjo6
bG9hZFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgbwogICAgIC8vIEZJWE1FOiBJbiB0
aGlzIGNhc2UgdGhlIEZyYW1lIHdpbGwgaGF2ZSBmaW5pc2hlZCBsb2FkaW5nIGJlZm9yZSAKICAg
ICAvLyBpdCdzIGJlaW5nIGFkZGVkIHRvIHRoZSBjaGlsZCBsaXN0LiBJdCB3b3VsZCBiZSBhIGdv
b2QgaWRlYSB0bwogICAgIC8vIGNyZWF0ZSB0aGUgY2hpbGQgZmlyc3QsIHRoZW4gaW52b2tlIHRo
ZSBsb2FkZXIgc2VwYXJhdGVseS4KLSAgICBpZiAoZnJhbWUtPmxvYWRlcigpLnN0YXRlKCkgPT0g
RnJhbWVTdGF0ZUNvbXBsZXRlICYmICFmcmFtZS0+bG9hZGVyKCkucG9saWN5RG9jdW1lbnRMb2Fk
ZXIoKSkKKyAgICBpZiAoZnJhbWUtPmxvYWRlcigpLnN0YXRlKCkgPT0gRnJhbWVTdGF0ZTo6Q29t
cGxldGUgJiYgIWZyYW1lLT5sb2FkZXIoKS5wb2xpY3lEb2N1bWVudExvYWRlcigpKQogICAgICAg
ICBmcmFtZS0+bG9hZGVyKCkuY2hlY2tDb21wbGV0ZWQoKTsKIAogICAgIGlmICghZnJhbWUtPnRy
ZWUoKS5wYXJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCmluZGV4IDMxYmU1MTBlMjJjZGFmMDkzMzllODk1NzFlYjQ1MGM2MTJmN2U1NTAu
LjY1YTk3M2ZhZDliMzdhZTNlODBkYmJhOWUyN2I0Y2I0MWY5NTA4YWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMjQ0LDcgKzI0NCw3
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hl
ZFJlc291cmNlTG9hZGVyKQogICAgIEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IGZyYW1lLmxv
YWRlcigpOwogICAgIGlmIChtX29wdGlvbnMuc2VjdXJpdHlDaGVjayA9PSBTZWN1cml0eUNoZWNr
UG9saWN5OjpEb1NlY3VyaXR5Q2hlY2sgJiYgIW1fb3B0aW9ucy5rZWVwQWxpdmUgJiYgIXNob3Vs
ZFVzZVBpbmdMb2FkKHR5cGUoKSkpIHsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAg
ICAgIGlmIChmcmFtZUxvYWRlci5zdGF0ZSgpID09IEZyYW1lU3RhdGVQcm92aXNpb25hbCkKKyAg
ICAgICAgICAgIGlmIChmcmFtZUxvYWRlci5zdGF0ZSgpID09IEZyYW1lU3RhdGU6OlByb3Zpc2lv
bmFsKQogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRURfV0lUSF9GUkFNRSgi
bG9hZDogRmFpbGVkIHNlY3VyaXR5IGNoZWNrIC0tIHN0YXRlIGlzIHByb3Zpc2lvbmFsIiwgZnJh
bWUpOwogICAgICAgICAgICAgZWxzZSBpZiAoIWZyYW1lTG9hZGVyLmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1F
KCJsb2FkOiBGYWlsZWQgc2VjdXJpdHkgY2hlY2sgLS0gbm90IGFjdGl2ZSBkb2N1bWVudCIsIGZy
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAwZGU1MGE0NjFiMTJiOTczOGM5
ODc0Yjc2YWExMWRlMTZiYTgzNzYzLi4zZThmODA3M2ZhMWIwNjU2NDljYzc2N2NiOTgzNDJkYWRm
ZjRjYmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zOTQ2LDcgKzM5NDYsNyBA
QCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsYWJsZUFyZWFTZXQoKQogCiBib29sIEZyYW1l
Vmlldzo6c2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdAogewotICAgIHJldHVy
biBmcmFtZSgpLmxvYWRlcigpLnN0YXRlKCkgIT0gRnJhbWVTdGF0ZUNvbXBsZXRlOworICAgIHJl
dHVybiBmcmFtZSgpLmxvYWRlcigpLnN0YXRlKCkgIT0gRnJhbWVTdGF0ZTo6Q29tcGxldGU7CiB9
CiAKIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxiYXJTdHlsZUNoYW5nZWQoU2Nyb2xsYmFyU3R5bGUg
bmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAK
aW5kZXggYTljZWI2ZDE3MmUzZDhmZmY1OGFkNzE2ZTAyNTc1ZTFhODZlZDgzMS4uYzFlN2I2MjM3
ZDgxYzQ1YjVkOWYwMjcyYmQyNDBlYzlkNDcwYmZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZy
YW1lLmNwcApAQCAtNzcsMTEgKzc3LDExIEBAIFdLRnJhbWVMb2FkU3RhdGUgV0tCdW5kbGVGcmFt
ZUdldEZyYW1lTG9hZFN0YXRlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCiAgICAgICAgIHJl
dHVybiBrV0tGcmFtZUxvYWRTdGF0ZUZpbmlzaGVkOwogCiAgICAgc3dpdGNoIChjb3JlRnJhbWUt
PmxvYWRlcigpLnN0YXRlKCkpIHsKLSAgICBjYXNlIFdlYkNvcmU6OkZyYW1lU3RhdGVQcm92aXNp
b25hbDoKKyAgICBjYXNlIFdlYkNvcmU6OkZyYW1lU3RhdGU6OlByb3Zpc2lvbmFsOgogICAgICAg
ICByZXR1cm4ga1dLRnJhbWVMb2FkU3RhdGVQcm92aXNpb25hbDsKLSAgICBjYXNlIFdlYkNvcmU6
OkZyYW1lU3RhdGVDb21taXR0ZWRQYWdlOgorICAgIGNhc2UgV2ViQ29yZTo6RnJhbWVTdGF0ZTo6
Q29tbWl0dGVkUGFnZToKICAgICAgICAgcmV0dXJuIGtXS0ZyYW1lTG9hZFN0YXRlQ29tbWl0dGVk
OwotICAgIGNhc2UgV2ViQ29yZTo6RnJhbWVTdGF0ZUNvbXBsZXRlOgorICAgIGNhc2UgV2ViQ29y
ZTo6RnJhbWVTdGF0ZTo6Q29tcGxldGU6CiAgICAgICAgIHJldHVybiBrV0tGcmFtZUxvYWRTdGF0
ZUZpbmlzaGVkOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
M2YzZGQ2M2IyMzM4YTUzN2QxZDUzNmU2NThjOTAzM2RiODRkMmM1ZS4uNzI4NGQxMzkzZjFhMGJh
NTY1ODE4MDg2YzgxMTM3YTA3YmY5OTdhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKQogCiAgICAgV2Vi
RG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRM
b2FkZXIqPihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlcigpKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKSB7Ci0gICAgICAgIFdFQkZSQU1F
TE9BREVSQ0xJRU5UX1JFTEVBU0VfTE9HX0ZBVUxUKExvYWRpbmcsICJkaXNwYXRjaERpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZDogQ2FsbGVkIHdpdGggbm8gcHJvdmlz
aW9uYWwgRG9jdW1lbnRMb2FkZXIgKGZyYW1lU3RhdGU9JWksIHN0YXRlRm9yRGVidWdnaW5nPSVp
KSIsIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zdGF0ZSgpLCBtX2ZyYW1lLT5jb3Jl
RnJhbWUoKS0+bG9hZGVyKCkuc3RhdGVNYWNoaW5lKCkuc3RhdGVGb3JEZWJ1Z2dpbmcoKSk7Cisg
ICAgICAgIFdFQkZSQU1FTE9BREVSQ0xJRU5UX1JFTEVBU0VfTE9HX0ZBVUxUKExvYWRpbmcsICJk
aXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZDogQ2FsbGVk
IHdpdGggbm8gcHJvdmlzaW9uYWwgRG9jdW1lbnRMb2FkZXIgKGZyYW1lU3RhdGU9JWhodSwgc3Rh
dGVGb3JEZWJ1Z2dpbmc9JWkpIiwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnN0YXRl
KCksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zdGF0ZU1hY2hpbmUoKS5zdGF0ZUZv
ckRlYnVnZ2luZygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416582</attachid>
            <date>2020-12-20 06:54:00 -0800</date>
            <delta_ts>2020-12-20 08:29:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219898-20201220155358.patch</filename>
            <type>text/plain</type>
            <size>37967</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk3MGRhMjNmM2ZhMzVm
MzQzY2YzNzQyNjc1YzU2ZGQ0MmM2MDViMC4uZWFkOWU5OGQyOTg1MzBlMThlMWFiMDczMmU0OTU3
ZWYyN2IzOWVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTEyLTIwICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgQ29udmVydCByZW1haW5pbmcgRnJh
bWVMb2FkZXJUeXBlIGVudW1zIHRvIGVudW0gY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5ODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2FtIFdlaW5pZy4KKworICAgICAgICBDb252ZXJ0IHJlbWFpbmluZyBGcmFtZUxvYWRlclR5cGUg
ZW51bXMgdG8gZW51bSBjbGFzc2VzLgorICAgICAgICBOb3QgY29udmVydGVkIGlzIFNob3VsZFJl
cGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTAorICAgICAgICBzaW5jZSBpdCBzaG91bGQgYmUg
cmVtb3ZlZCBldmVudHVhbGx5LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpvcGVuKToKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3
YXJkQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FuQ2FjaGVGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpmaXJlUGFnZUhpZGVFdmVudFJlY3Vyc2l2ZWx5KToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppc0xvYWRp
bmdJbkFQSVNlbnNlIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmNsb3NlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpz
ZXR1cEZvclJlcGxhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BBbGxM
b2FkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjphY3RpdmVEb2N1bWVudExv
YWRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyUHJvdmlzaW9uYWxMb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkZXRhY2hGcm9tUGFyZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNlaXZlZE1haW5SZXNvdXJjZUVycm9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaFVubG9hZEV2ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9u
UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZXRyeUFmdGVyRmFpbGVk
Q2FjaGVPbmx5TWFpblJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6c2hvdWxkU3VwcHJlc3NUZXh0SW5wdXRGcm9tRWRpdGluZyBjb25zdCk6CisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMu
aDoKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZSk6CisgICAgICAgICogbG9hZGVy
L1N1YmZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpTdWJm
cmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWQpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMgY29uc3QpOgorCiAyMDIwLTEyLTE5ICBS
b2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgTW92ZSBGcmFtZUxvYWRlcjo6
YXJlUGx1Z2luc0VuYWJsZWQgdG8gRnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmEyZjlhM2U0ZmEyOWYzNDkw
MjVmNDY3YjhmNDhiN2QyYzk0YzVkYy4uYTU4ZTNmZjQzNzY2OTk2MGY0MDM5MjEyMjBmM2JlNTg1
YTBiYmU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0xMi0yMCAgUm9iIEJ1aXMg
IDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIENvbnZlcnQgcmVtYWluaW5nIEZyYW1lTG9h
ZGVyVHlwZSBlbnVtcyB0byBlbnVtIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTg5OAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBX
ZWluaWcuCisKKyAgICAgICAgQWRhcHQgdG8gZW51bSBjbGFzcyBjaGFuZ2VzLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcDoKKyAg
ICAgICAgKFdLQnVuZGxlRnJhbWVHZXRGcmFtZUxvYWRTdGF0ZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6CisKIDIwMjAtMTItMTkgIFJvYiBCdWlzICA8cmJ1aXNA
aWdhbGlhLmNvbT4KIAogICAgICAgICBNb3ZlIEZyYW1lTG9hZGVyOjphcmVQbHVnaW5zRW5hYmxl
ZCB0byBGcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzBhZDZjMmM1MTUyYTNhYTUy
ZTYyMjAwOGUyMGQ2ODVjYWQ5ODFmZi4uNmU2M2NhNGQyMWNlNDM3NzYxZmY1YjQ1MmQ3MzNlZjZi
YmQwMzU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yODg5LDcgKzI4ODksNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6b3BlbihEb2N1bWVudCogcmVzcG9uc2libGVEb2N1
bWVudCkKIAogICAgICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLmRl
bGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3koKSkKICAgICAgICAgICAgIG1fZnJhbWUt
PmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS5zdG9wQ2hlY2soKTsKLSAgICAgICAgaWYgKG1fZnJh
bWUgJiYgbV9mcmFtZS0+bG9hZGVyKCkuc3RhdGUoKSA9PSBGcmFtZVN0YXRlUHJvdmlzaW9uYWwp
CisgICAgICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmxvYWRlcigpLnN0YXRlKCkgPT0gRnJh
bWVTdGF0ZTo6UHJvdmlzaW9uYWwpCiAgICAgICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5zdG9w
QWxsTG9hZGVycygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRDYWNoZS5jcHAKaW5kZXggOWNjZjVkZWE1Nzk5YTRjYzQ0MjUwZTljMWRhYjVkZWRkNTQyOTA0
Zi4uMjdlZDc0Y2QyMWQzNmFlNzBjMzVhOGYwYjIwOTFiMGI1YTQ3N2I5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0
YXRpYyBib29sIGNhbkNhY2hlRnJhbWUoRnJhbWUmIGZyYW1lLCBEaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudCYgZGlhZ25vc3RpY0xvZ2dpCiAKICAgICAvLyBQcmV2ZW50IHBhZ2UgY2FjaGluZyBpZiBh
IHN1YmZyYW1lIGlzIHN0aWxsIGluIHByb3Zpc2lvbmFsIGxvYWQgc3RhZ2UuCiAgICAgLy8gV2Ug
b25seSBkbyB0aGlzIGNoZWNrIGZvciBzdWJmcmFtZXMgYmVjYXVzZSB0aGUgbWFpbiBmcmFtZSBp
cyByZXVzZWQgd2hlbiBuYXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2UuCi0gICAgaWYgKCFmcmFtZS5p
c01haW5GcmFtZSgpICYmIGZyYW1lTG9hZGVyLnN0YXRlKCkgPT0gRnJhbWVTdGF0ZVByb3Zpc2lv
bmFsKSB7CisgICAgaWYgKCFmcmFtZS5pc01haW5GcmFtZSgpICYmIGZyYW1lTG9hZGVyLnN0YXRl
KCkgPT0gRnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWwpIHsKICAgICAgICAgUENMT0coIiAgIC1GcmFt
ZSBpcyBpbiBwcm92aXNpb25hbCBsb2FkIHN0YWdlIik7CiAgICAgICAgIGxvZ0JhY2tGb3J3YXJk
Q2FjaGVGYWlsdXJlRGlhZ25vc3RpY01lc3NhZ2UoZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQsIERp
YWdub3N0aWNMb2dnaW5nS2V5czo6cHJvdmlzaW9uYWxMb2FkS2V5KCkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC00MjAsNyArNDIwLDcgQEAgc3RhdGljIHZvaWQgZmlyZVBhZ2VIaWRlRXZl
bnRSZWN1cnNpdmVseShGcmFtZSYgZnJhbWUpCiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NlcnMuaHRtbCN1bmxvYWQtYS1kb2N1bWVudAogICAgIEln
bm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlciBpZ25vcmVPcGVuc0R1cmluZ1Vu
bG9hZENvdW50SW5jcmVtZW50ZXIoZG9jdW1lbnQpOwogCi0gICAgZnJhbWUubG9hZGVyKCkuc3Rv
cExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3lVbmxvYWRBbmRQYWdlSGlkZSk7CisgICAgZnJhbWUu
bG9hZGVyKCkuc3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3k6OlVubG9hZEFuZFBhZ2VIaWRl
KTsKIAogICAgIGZvciAoUmVmUHRyPEZyYW1lPiBjaGlsZCA9IGZyYW1lLnRyZWUoKS5maXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKICAgICAg
ICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseSgqY2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggZGE4NTI1YWFhNTkwZWViM2FhODg0NDhiY2Yy
YmQ5NzFkNTU5MTczNS4uOGI3MDI0OWQ1ZjU5NjQ0NDY2NDUxMzNkM2JmMzE3ZTM1MGFhZTM1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0zMjAsNyArMzIw
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcoKQogICAgICAgICBEb2N1bWVu
dCogZG9jID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgCiAgICAgICAgIGlmIChsb2Fk
aW5nIHx8IGRvYy0+cGFyc2luZygpKQotICAgICAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCkuc3Rv
cExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3lOb25lKTsKKyAgICAgICAgICAgIG1fZnJhbWUtPmxv
YWRlcigpLnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5OjpOb25lKTsKICAgICB9CiAKICAg
ICBmb3IgKGF1dG8gY2FsbGJhY2tJZGVudGlmaWVyIDogbV9pY29uTG9hZGVycy52YWx1ZXMoKSkK
QEAgLTE0NjQsNyArMTQ2NCw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmlzTG9hZGluZ0luQVBJ
U2Vuc2UoKSBjb25zdAogewogICAgIC8vIE9uY2UgYSBmcmFtZSBoYXMgbG9hZGVkLCB3ZSBubyBs
b25nZXIgbmVlZCB0byBjb25zaWRlciBzdWJyZXNvdXJjZXMsCiAgICAgLy8gYnV0IHdlIHN0aWxs
IG5lZWQgdG8gY29uc2lkZXIgc3ViZnJhbWVzLgotICAgIGlmIChmcmFtZUxvYWRlcigpLT5zdGF0
ZSgpICE9IEZyYW1lU3RhdGVDb21wbGV0ZSkgeworICAgIGlmIChmcmFtZUxvYWRlcigpLT5zdGF0
ZSgpICE9IEZyYW1lU3RhdGU6OkNvbXBsZXRlKSB7CiAgICAgICAgIGlmIChtX2ZyYW1lLT5zZXR0
aW5ncygpLm5lZWRzSXNMb2FkaW5nSW5BUElTZW5zZVF1aXJrKCkgJiYgIW1fc3VicmVzb3VyY2VM
b2FkZXJzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAwZjhjZTMwMWE1YTMyZjhmMjk2NWIwYjYyM2M1
OTUyZjM4NzJiNTk2Li4yMTU4MjI3ODJjNGU1MDU3ODhkNTllOTk4YzE0MWVmNzExNGVkODEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI5Nyw3ICsyOTcsNyBAQCBG
cmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIoRnJhbWUmIGZyYW1lLCBVbmlxdWVSZWY8RnJhbWVMb2Fk
ZXJDbGllbnQ+JiYgY2xpZW50KQogICAgICwgbV9oaXN0b3J5KG1ha2VVbmlxdWU8SGlzdG9yeUNv
bnRyb2xsZXI+KGZyYW1lKSkKICAgICAsIG1fbm90aWZpZXIoZnJhbWUpCiAgICAgLCBtX3N1YmZy
YW1lTG9hZGVyKG1ha2VVbmlxdWU8U3ViZnJhbWVMb2FkZXI+KGZyYW1lKSkKLSAgICAsIG1fc3Rh
dGUoRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQorICAgICwgbV9zdGF0ZShGcmFtZVN0YXRlOjpQcm92
aXNpb25hbCkKICAgICAsIG1fbG9hZFR5cGUoRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQpCiAgICAg
LCBtX3F1aWNrUmVkaXJlY3RDb21pbmcoZmFsc2UpCiAgICAgLCBtX3NlbnRSZWRpcmVjdE5vdGlm
aWNhdGlvbihmYWxzZSkKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjppbml0
Rm9yU3ludGhlc2l6ZWREb2N1bWVudChjb25zdCBVUkwmKQogCiAgICAgbV9kaWRDYWxsSW1wbGlj
aXRDbG9zZSA9IHRydWU7CiAgICAgbV9pc0NvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX3N0YXRlID0g
RnJhbWVTdGF0ZUNvbXBsZXRlOworICAgIG1fc3RhdGUgPSBGcmFtZVN0YXRlOjpDb21wbGV0ZTsK
ICAgICBtX25lZWRzQ2xlYXIgPSB0cnVlOwogCiAgICAgbV9uZXR3b3JraW5nQ29udGV4dCA9IG1f
Y2xpZW50LT5jcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwpAQCAtNTIyLDcgKzUyMiw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5IHVubG9hZEV2ZW50
UG9saWN5KQogICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkgJiYgbV9mcmFtZS5kb2N1bWVudCgp
LT5wYXJzZXIoKSkKICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5wYXJzZXIoKS0+c3RvcFBh
cnNpbmcoKTsKIAotICAgIGlmICh1bmxvYWRFdmVudFBvbGljeSAhPSBVbmxvYWRFdmVudFBvbGlj
eU5vbmUpCisgICAgaWYgKHVubG9hZEV2ZW50UG9saWN5ICE9IFVubG9hZEV2ZW50UG9saWN5OjpO
b25lKQogICAgICAgICBkaXNwYXRjaFVubG9hZEV2ZW50cyh1bmxvYWRFdmVudFBvbGljeSk7CiAK
ICAgICBtX2lzQ29tcGxldGUgPSB0cnVlOyAvLyB0byBhdm9pZCBjYWxsaW5nIGNvbXBsZXRlZCgp
IGluIGZpbmlzaGVkUGFyc2luZygpCkBAIC01NjQsMTAgKzU2NCwxMCBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpjbG9zZVVSTCgpCiAgICAgVW5sb2FkRXZlbnRQb2xpY3kgdW5sb2FkRXZlbnRQb2xpY3k7
CiAgICAgaWYgKG1fZnJhbWUucGFnZSgpICYmIG1fZnJhbWUucGFnZSgpLT5jaHJvbWUoKS5jbGll
bnQoKS5pc1NWR0ltYWdlQ2hyb21lQ2xpZW50KCkpIHsKICAgICAgICAgLy8gSWYgdGhpcyBpcyB0
aGUgU1ZHRG9jdW1lbnQgb2YgYW4gU1ZHSW1hZ2UsIG5vIG5lZWQgdG8gZGlzcGF0Y2ggZXZlbnRz
IG9yIHJlY2FsY1N0eWxlLgotICAgICAgICB1bmxvYWRFdmVudFBvbGljeSA9IFVubG9hZEV2ZW50
UG9saWN5Tm9uZTsKKyAgICAgICAgdW5sb2FkRXZlbnRQb2xpY3kgPSBVbmxvYWRFdmVudFBvbGlj
eTo6Tm9uZTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBTaG91bGQgb25seSBzZW5kIHRoZSBw
YWdlaGlkZSBldmVudCBoZXJlIGlmIHRoZSBjdXJyZW50IGRvY3VtZW50IGV4aXN0cyBhbmQgaGFz
IG5vdCBiZWVuIHBsYWNlZCBpbiB0aGUgYmFjay9mb3J3YXJkIGNhY2hlLgotICAgICAgICB1bmxv
YWRFdmVudFBvbGljeSA9IGN1cnJlbnREb2N1bWVudCAmJiBjdXJyZW50RG9jdW1lbnQtPmJhY2tG
b3J3YXJkQ2FjaGVTdGF0ZSgpID09IERvY3VtZW50OjpOb3RJbkJhY2tGb3J3YXJkQ2FjaGUgPyBV
bmxvYWRFdmVudFBvbGljeVVubG9hZEFuZFBhZ2VIaWRlIDogVW5sb2FkRXZlbnRQb2xpY3lVbmxv
YWRPbmx5OworICAgICAgICB1bmxvYWRFdmVudFBvbGljeSA9IGN1cnJlbnREb2N1bWVudCAmJiBj
dXJyZW50RG9jdW1lbnQtPmJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgpID09IERvY3VtZW50OjpOb3RJ
bkJhY2tGb3J3YXJkQ2FjaGUgPyBVbmxvYWRFdmVudFBvbGljeTo6VW5sb2FkQW5kUGFnZUhpZGUg
OiBVbmxvYWRFdmVudFBvbGljeTo6VW5sb2FkT25seTsKICAgICB9CiAKICAgICBzdG9wTG9hZGlu
Zyh1bmxvYWRFdmVudFBvbGljeSk7CkBAIC0xMjIwLDcgKzEyMjAsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpwcmVwYXJlRm9yTG9hZFN0YXJ0KCkKIHZvaWQgRnJhbWVMb2FkZXI6OnNldHVwRm9yUmVw
bGFjZSgpCiB7CiAgICAgbV9jbGllbnQtPnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShtX2RvY3Vt
ZW50TG9hZGVyLmdldCgpKTsKLSAgICBzZXRTdGF0ZShGcmFtZVN0YXRlUHJvdmlzaW9uYWwpOwor
ICAgIHNldFN0YXRlKEZyYW1lU3RhdGU6OlByb3Zpc2lvbmFsKTsKICAgICBtX3Byb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXIgPSBtX2RvY3VtZW50TG9hZGVyOwogICAgIEZSQU1FTE9BREVSX1JFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAic2V0dXBGb3JSZXBsYWNlOiBTZXR0
aW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgbV9kb2N1
bWVudExvYWRlciA9IG51bGxwdHI7CkBAIC0xNzc2LDcgKzE3NzYsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpyZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gb3B0aW9ucykKICAgICBsb2FkV2l0
aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgZnJhbWVMb2FkVHlwZUZvclJlbG9hZE9wdGlv
bnMob3B0aW9ucyksIHsgfSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMpOwogfQog
Ci12b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbVBv
bGljeSBjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSwgU3RvcExvYWRpbmdQb2xpY3kgc3RvcExv
YWRpbmdQb2xpY3kpCit2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyhDbGVhclByb3Zp
c2lvbmFsSXRlbSBjbGVhclByb3Zpc2lvbmFsSXRlbSwgU3RvcExvYWRpbmdQb2xpY3kgc3RvcExv
YWRpbmdQb2xpY3kpCiB7CiAgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKSAmJiBtX2ZyYW1lLmRv
Y3VtZW50KCktPmJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgpID09IERvY3VtZW50OjpJbkJhY2tGb3J3
YXJkQ2FjaGUpCiAgICAgICAgIHJldHVybjsKQEAgLTE4MDEsMTEgKzE4MDEsMTEgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kgY2xl
YXJQcm92aXNpb25hbEl0ZW0KIAogICAgIC8vIElmIG5vIG5ldyBsb2FkIGlzIGluIHByb2dyZXNz
LCB3ZSBzaG91bGQgY2xlYXIgdGhlIHByb3Zpc2lvbmFsIGl0ZW0gZnJvbSBoaXN0b3J5CiAgICAg
Ly8gYmVmb3JlIHdlIGNhbGwgc3RvcExvYWRpbmcuCi0gICAgaWYgKGNsZWFyUHJvdmlzaW9uYWxJ
dGVtUG9saWN5ID09IFNob3VsZENsZWFyUHJvdmlzaW9uYWxJdGVtKQorICAgIGlmIChjbGVhclBy
b3Zpc2lvbmFsSXRlbSA9PSBDbGVhclByb3Zpc2lvbmFsSXRlbTo6WWVzKQogICAgICAgICBoaXN0
b3J5KCkuc2V0UHJvdmlzaW9uYWxJdGVtKG51bGxwdHIpOwogCiAgICAgZm9yIChSZWZQdHI8RnJh
bWU+IGNoaWxkID0gbV9mcmFtZS50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBj
aGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCi0gICAgICAgIGNoaWxkLT5sb2FkZXIoKS5zdG9w
QWxsTG9hZGVycyhjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSk7CisgICAgICAgIGNoaWxkLT5s
b2FkZXIoKS5zdG9wQWxsTG9hZGVycyhjbGVhclByb3Zpc2lvbmFsSXRlbSk7CiAKICAgICBGUkFN
RUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInN0b3BBbGxM
b2FkZXJzOiBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9JXAsIG1fZG9jdW1lbnRMb2FkZXI9
JXAiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1fZG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOwogCkBAIC0xODgxLDcgKzE4ODEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wRm9y
VXNlckNhbmNlbChib29sIGRlZmVyQ2hlY2tMb2FkQ29tcGxldGUpCiAKIERvY3VtZW50TG9hZGVy
KiBGcmFtZUxvYWRlcjo6YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSBjb25zdAogewotICAgIGlmICht
X3N0YXRlID09IEZyYW1lU3RhdGVQcm92aXNpb25hbCkKKyAgICBpZiAobV9zdGF0ZSA9PSBGcmFt
ZVN0YXRlOjpQcm92aXNpb25hbCkKICAgICAgICAgcmV0dXJuIG1fcHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlci5nZXQoKTsKICAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlci5nZXQoKTsKIH0KQEAg
LTE5NjUsOSArMTk2NSw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldFN0YXRlKEZyYW1lU3RhdGUg
bmV3U3RhdGUpCiAgICAgRnJhbWVTdGF0ZSBvbGRTdGF0ZSA9IG1fc3RhdGU7CiAgICAgbV9zdGF0
ZSA9IG5ld1N0YXRlOwogICAgIAotICAgIGlmIChuZXdTdGF0ZSA9PSBGcmFtZVN0YXRlUHJvdmlz
aW9uYWwpCisgICAgaWYgKG5ld1N0YXRlID09IEZyYW1lU3RhdGU6OlByb3Zpc2lvbmFsKQogICAg
ICAgICBwcm92aXNpb25hbExvYWRTdGFydGVkKCk7Ci0gICAgZWxzZSBpZiAobmV3U3RhdGUgPT0g
RnJhbWVTdGF0ZUNvbXBsZXRlKSB7CisgICAgZWxzZSBpZiAobmV3U3RhdGUgPT0gRnJhbWVTdGF0
ZTo6Q29tcGxldGUpIHsKICAgICAgICAgZnJhbWVMb2FkQ29tcGxldGVkKCk7CiAgICAgICAgIGlm
IChtX2RvY3VtZW50TG9hZGVyKQogICAgICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+c3RvcFJl
Y29yZGluZ1Jlc3BvbnNlcygpOwpAQCAtMTk4Myw3ICsxOTgzLDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6Y2xlYXJQcm92aXNpb25hbExvYWQoKQogICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY2xlYXJQcm92aXNpb25hbExvYWQ6IENsZWFyaW5n
IHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVy
PSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgc2V0UHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcihudWxscHRyKTsKICAgICBtX3Byb2dyZXNzVHJhY2tlci0+cHJv
Z3Jlc3NDb21wbGV0ZWQoKTsKLSAgICBzZXRTdGF0ZShGcmFtZVN0YXRlQ29tcGxldGUpOworICAg
IHNldFN0YXRlKEZyYW1lU3RhdGU6OkNvbXBsZXRlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6
Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKQEAgLTIxMjksOSArMjEyOSw5IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiB2b2lkIEZyYW1lTG9hZGVyOjp0cmFuc2l0
aW9uVG9Db21taXR0ZWQoQ2FjaGVkUGFnZSogY2FjaGVkUGFnZSkKIHsKICAgICBBU1NFUlQobV9j
bGllbnQtPmhhc1dlYlZpZXcoKSk7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gRnJhbWVTdGF0ZVBy
b3Zpc2lvbmFsKTsKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBGcmFtZVN0YXRlOjpQcm92aXNpb25h
bCk7CiAKLSAgICBpZiAobV9zdGF0ZSAhPSBGcmFtZVN0YXRlUHJvdmlzaW9uYWwpCisgICAgaWYg
KG1fc3RhdGUgIT0gRnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWwpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkgewpAQCAtMjE2Niw3ICsy
MTY2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVkKENhY2hlZFBh
Z2UqIGNhY2hlZFBhZ2UpCiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihudWxscHRy
KTsKIAogICAgIC8vIE5vdGhpbmcgZWxzZSBjYW4gaW50ZXJydXB0IHRoaXMgY29tbWl0IC0gc2V0
IHRoZSBQcm92aXNpb25hbC0+Q29tbWl0dGVkIHRyYW5zaXRpb24gaW4gc3RvbmUKLSAgICBzZXRT
dGF0ZShGcmFtZVN0YXRlQ29tbWl0dGVkUGFnZSk7CisgICAgc2V0U3RhdGUoRnJhbWVTdGF0ZTo6
Q29tbWl0dGVkUGFnZSk7CiAKICAgICAvLyBIYW5kbGUgYWRkaW5nIHRoZSBVUkwgdG8gdGhlIGJh
Y2svZm9yd2FyZCBsaXN0LgogICAgIGF1dG8gZG9jdW1lbnRMb2FkZXIgPSBtX2RvY3VtZW50TG9h
ZGVyOwpAQCAtMjQ3OCwxMzQgKzI0NzgsMTM2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9h
ZENvbXBsZXRlRm9yVGhpc0ZyYW1lKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc3dpdGNoICht
X3N0YXRlKSB7Ci0gICAgICAgIGNhc2UgRnJhbWVTdGF0ZVByb3Zpc2lvbmFsOiB7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogUHJvaGliaXRpbmcgYW55IHByb3Zpc2lvbmFsIGxvYWQgZmFpbHVyZXMg
ZnJvbSBiZWluZyBzZW50IHRvIGNsaWVudHMKLSAgICAgICAgICAgIC8vIHdoaWxlIGhhbmRsaW5n
IHByb3Zpc2lvbmFsIGxvYWQgZmFpbHVyZXMgaXMgdG9vIGhlYXZ5LiBGb3IgZXhhbXBsZSwgdGhl
IGN1cnJlbnQKLSAgICAgICAgICAgIC8vIGxvYWQgd2lsbCBmYWlsIHRvIGNhbmNlbCBhbm90aGVy
IG9uZ29pbmcgbG9hZC4gVGhhdCBtaWdodCBwcmV2ZW50IGNsaWVudHMnIHBhZ2UKLSAgICAgICAg
ICAgIC8vIGxvYWQgc3RhdGUgYmVpbmcgaGFuZGxlZCBwcm9wZXJseS4KLSAgICAgICAgICAgIGlm
ICghbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTC5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWw6IHsK
KyAgICAgICAgLy8gRklYTUU6IFByb2hpYml0aW5nIGFueSBwcm92aXNpb25hbCBsb2FkIGZhaWx1
cmVzIGZyb20gYmVpbmcgc2VudCB0byBjbGllbnRzCisgICAgICAgIC8vIHdoaWxlIGhhbmRsaW5n
IHByb3Zpc2lvbmFsIGxvYWQgZmFpbHVyZXMgaXMgdG9vIGhlYXZ5LiBGb3IgZXhhbXBsZSwgdGhl
IGN1cnJlbnQKKyAgICAgICAgLy8gbG9hZCB3aWxsIGZhaWwgdG8gY2FuY2VsIGFub3RoZXIgb25n
b2luZyBsb2FkLiBUaGF0IG1pZ2h0IHByZXZlbnQgY2xpZW50cycgcGFnZQorICAgICAgICAvLyBs
b2FkIHN0YXRlIGJlaW5nIGhhbmRsZWQgcHJvcGVybHkuCisgICAgICAgIGlmICghbV9wcm92aXNp
b25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gcGRsID0gbV9wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyOwotICAgICAgICAgICAgaWYgKCFwZGwpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gSWYgd2UndmUgcmVj
ZWl2ZWQgYW55IGVycm9ycyB3ZSBtYXkgYmUgc3R1Y2sgaW4gdGhlIHByb3Zpc2lvbmFsIHN0YXRl
IGFuZCBhY3R1YWxseSBjb21wbGV0ZS4KLSAgICAgICAgICAgIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yID0gcGRsLT5tYWluRG9jdW1lbnRFcnJvcigpOwotICAgICAgICAgICAgaWYgKGVycm9y
LmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgUmVmUHRyPERvY3Vt
ZW50TG9hZGVyPiBwcm90ZWN0b3IgPSBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI7CisgICAg
ICAgIGlmICghcHJvdGVjdG9yKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICAv
LyBDaGVjayBhbGwgY2hpbGRyZW4gZmlyc3QuCi0gICAgICAgICAgICBSZWZQdHI8SGlzdG9yeUl0
ZW0+IGl0ZW07Ci0gICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQot
ICAgICAgICAgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobG9hZFR5cGUoKSkpCi0g
ICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBiYWNrIGZvcndhcmQgbGlzdCB0byB0aGUg
bGFzdCBjb21taXR0ZWQgaGlzdG9yeSBpdGVtIGF0IHRoZSB0b3AgbGV2ZWwuCi0gICAgICAgICAg
ICAgICAgICAgIGl0ZW0gPSBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5oaXN0b3J5KCkuY3Vy
cmVudEl0ZW0oKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIE9ubHkgcmVzZXQg
aWYgd2UgYXJlbid0IGFscmVhZHkgZ29pbmcgdG8gYSBuZXcgcHJvdmlzaW9uYWwgaXRlbS4KLSAg
ICAgICAgICAgIGJvb2wgc2hvdWxkUmVzZXQgPSAhaGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgp
OwotICAgICAgICAgICAgaWYgKCFwZGwtPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSB8fCBwZGwtPmlz
U3RvcHBpbmcoKSkgewotICAgICAgICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWU6
IEZhaWxlZCBwcm92aXNpb25hbCBsb2FkIChpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRpb24g
PSAlZCwgZXJyb3JDb2RlID0gJWQpIiwgZXJyb3IuaXNUaW1lb3V0KCksIGVycm9yLmlzQ2FuY2Vs
bGF0aW9uKCksIGVycm9yLmVycm9yQ29kZSgpKTsKLQotICAgICAgICAgICAgICAgIGRpc3BhdGNo
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgqcGRsLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKCFwZGwtPmlzTG9hZGluZygpKTsKLQotICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGlu
IHRoZSBtaWRkbGUgb2YgbG9hZGluZyBtdWx0aXBhcnQgZGF0YSwgd2UgbmVlZCB0byByZXN0b3Jl
IHRoZSBkb2N1bWVudCBsb2FkZXIuCi0gICAgICAgICAgICAgICAgaWYgKGlzUmVwbGFjaW5nKCkg
JiYgIW1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpCisgICAgICAgIC8vIElmIHdlJ3ZlIHJlY2VpdmVk
IGFueSBlcnJvcnMgd2UgbWF5IGJlIHN0dWNrIGluIHRoZSBwcm92aXNpb25hbCBzdGF0ZSBhbmQg
YWN0dWFsbHkgY29tcGxldGUuCisgICAgICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yID0g
cHJvdGVjdG9yLT5tYWluRG9jdW1lbnRFcnJvcigpOworICAgICAgICBpZiAoZXJyb3IuaXNOdWxs
KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gQ2hlY2sgYWxsIGNoaWxkcmVu
IGZpcnN0LgorICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW07CisgICAgICAgIGlmIChQ
YWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKKyAgICAgICAgICAgIGlmIChpc0JhY2tGb3J3
YXJkTG9hZFR5cGUobG9hZFR5cGUoKSkpIHsKKyAgICAgICAgICAgICAgICAvLyBSZXNldCB0aGUg
YmFjayBmb3J3YXJkIGxpc3QgdG8gdGhlIGxhc3QgY29tbWl0dGVkIGhpc3RvcnkgaXRlbSBhdCB0
aGUgdG9wIGxldmVsLgorICAgICAgICAgICAgICAgIGl0ZW0gPSBwYWdlLT5tYWluRnJhbWUoKS5s
b2FkZXIoKS5oaXN0b3J5KCkuY3VycmVudEl0ZW0oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIC8vIE9ubHkgcmVzZXQgaWYgd2UgYXJlbid0IGFscmVhZHkgZ29pbmcgdG8g
YSBuZXcgcHJvdmlzaW9uYWwgaXRlbS4KKyAgICAgICAgYm9vbCBzaG91bGRSZXNldCA9ICFoaXN0
b3J5KCkucHJvdmlzaW9uYWxJdGVtKCk7CisgICAgICAgIGlmICghcHJvdGVjdG9yLT5pc0xvYWRp
bmdJbkFQSVNlbnNlKCkgfHwgcHJvdGVjdG9yLT5pc1N0b3BwaW5nKCkpIHsKKyAgICAgICAgICAg
IEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY2hl
Y2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWU6IEZhaWxlZCBwcm92aXNpb25hbCBsb2FkIChpc1Rp
bWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgZXJyb3JDb2RlID0gJWQpIiwgZXJyb3Iu
aXNUaW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmVycm9yQ29kZSgpKTsK
KworICAgICAgICAgICAgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKCpwcm90ZWN0b3Is
IGVycm9yKTsKKyAgICAgICAgICAgIEFTU0VSVCghcHJvdGVjdG9yLT5pc0xvYWRpbmcoKSk7CisK
KyAgICAgICAgICAgIC8vIElmIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgbG9hZGluZyBtdWx0aXBh
cnQgZGF0YSwgd2UgbmVlZCB0byByZXN0b3JlIHRoZSBkb2N1bWVudCBsb2FkZXIuCisgICAgICAg
ICAgICBpZiAoaXNSZXBsYWNpbmcoKSAmJiAhbV9kb2N1bWVudExvYWRlci5nZXQoKSkKICAgICAg
ICAgICAgICAgICAgICAgc2V0RG9jdW1lbnRMb2FkZXIobV9wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyLmdldCgpKTsKIAotICAgICAgICAgICAgICAgIC8vIEZpbmlzaCByZXNldHRpbmcgdGhlIGxv
YWQgc3RhdGUsIGJ1dCBvbmx5IGlmIGFub3RoZXIgbG9hZCBoYXNuJ3QgYmVlbiBzdGFydGVkIGJ5
IHRoZQotICAgICAgICAgICAgICAgIC8vIGRlbGVnYXRlIGNhbGxiYWNrLgotICAgICAgICAgICAg
ICAgIGlmIChwZGwgPT0gbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKQotICAgICAgICAgICAg
ICAgICAgICBjbGVhclByb3Zpc2lvbmFsTG9hZCgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGFjdGl2ZURvY3VtZW50TG9hZGVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgVVJMIHVucmVh
Y2hhYmxlVVJMID0gYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+dW5yZWFjaGFibGVVUkwoKTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkgJiYgdW5yZWFj
aGFibGVVUkwgPT0gcGRsLT5yZXF1ZXN0KCkudXJsKCkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBzaG91bGRSZXNldCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8v
IEZpbmlzaCByZXNldHRpbmcgdGhlIGxvYWQgc3RhdGUsIGJ1dCBvbmx5IGlmIGFub3RoZXIgbG9h
ZCBoYXNuJ3QgYmVlbiBzdGFydGVkIGJ5IHRoZQorICAgICAgICAgICAgLy8gZGVsZWdhdGUgY2Fs
bGJhY2suCisgICAgICAgICAgICBpZiAocHJvdGVjdG9yID09IG1fcHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlcikKKyAgICAgICAgICAgICAgICBjbGVhclByb3Zpc2lvbmFsTG9hZCgpOworICAgICAg
ICAgICAgZWxzZSBpZiAoYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkgeworICAgICAgICAgICAgICAg
IFVSTCB1bnJlYWNoYWJsZVVSTCA9IGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnVucmVhY2hhYmxl
VVJMKCk7CisgICAgICAgICAgICAgICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkgJiYg
dW5yZWFjaGFibGVVUkwgPT0gcHJvdGVjdG9yLT5yZXF1ZXN0KCkudXJsKCkpCisgICAgICAgICAg
ICAgICAgICAgIHNob3VsZFJlc2V0ID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAoc2hvdWxkUmVzZXQgJiYgaXRlbSkKLSAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFn
ZSA9IG1fZnJhbWUucGFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhZ2UtPmJhY2tGb3J3
YXJkKCkuc2V0Q3VycmVudEl0ZW0oKml0ZW0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBpZiAoc2hvdWxkUmVzZXQgJiYgaXRlbSkg
eworICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKKyAgICAgICAg
ICAgICAgICBwYWdlLT5iYWNrRm9yd2FyZCgpLnNldEN1cnJlbnRJdGVtKCppdGVtKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm47CisgICAgfQogICAgICAgICAKLSAgICAgICAgY2FzZSBGcmFt
ZVN0YXRlQ29tbWl0dGVkUGFnZTogewotICAgICAgICAgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVy
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChtX2RvY3VtZW50TG9h
ZGVyLT5pc0xvYWRpbmdJbkFQSVNlbnNlKCkgJiYgIW1fZG9jdW1lbnRMb2FkZXItPmlzU3RvcHBp
bmcoKSAmJiAhbV9jaGVja2luZ0xvYWRDb21wbGV0ZUZvckRldGFjaG1lbnQpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgRnJhbWVTdGF0ZTo6Q29tbWl0dGVkUGFnZTogeworICAg
ICAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGlmIChtX2RvY3VtZW50TG9hZGVyLT5pc0xvYWRpbmdJbkFQSVNlbnNlKCkgJiYgIW1fZG9jdW1l
bnRMb2FkZXItPmlzU3RvcHBpbmcoKSAmJiAhbV9jaGVja2luZ0xvYWRDb21wbGV0ZUZvckRldGFj
aG1lbnQpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHNldFN0YXRlKEZyYW1l
U3RhdGVDb21wbGV0ZSk7CisgICAgICAgIHNldFN0YXRlKEZyYW1lU3RhdGU6OkNvbXBsZXRlKTsK
IAotICAgICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgc3Vic2VxdWVudCB3b3JrIGltcG9ydGFu
dCBpZiB3ZSBhbHJlYWR5IG5hdmlnYXRlZCBhd2F5PwotICAgICAgICAgICAgLy8gTWF5YmUgdGhl
cmUgYXJlIGJ1Z3MgYmVjYXVzZSBvZiB0aGF0LCBvciBleHRyYSB3b3JrIHdlIGNhbiBza2lwIGJl
Y2F1c2UKLSAgICAgICAgICAgIC8vIHRoZSBuZXcgcGFnZSBpcyByZWFkeS4KKyAgICAgICAgLy8g
RklYTUU6IElzIHRoaXMgc3Vic2VxdWVudCB3b3JrIGltcG9ydGFudCBpZiB3ZSBhbHJlYWR5IG5h
dmlnYXRlZCBhd2F5PworICAgICAgICAvLyBNYXliZSB0aGVyZSBhcmUgYnVncyBiZWNhdXNlIG9m
IHRoYXQsIG9yIGV4dHJhIHdvcmsgd2UgY2FuIHNraXAgYmVjYXVzZQorICAgICAgICAvLyB0aGUg
bmV3IHBhZ2UgaXMgcmVhZHkuCiAKLSAgICAgICAgICAgIG1fY2xpZW50LT5mb3JjZUxheW91dEZv
ck5vbkhUTUwoKTsKKyAgICAgICAgbV9jbGllbnQtPmZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpOwog
ICAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgaGFkIGEgc2Nyb2xsIHBv
aW50LCBzY3JvbGwgdG8gaXQsIG92ZXJyaWRpbmcgdGhlIGFuY2hvciBwb2ludCBpZiBhbnkuCi0g
ICAgICAgICAgICBpZiAobV9mcmFtZS5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNC
YWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5cGUpIHx8IGlzUmVsb2FkKG1fbG9hZFR5cGUpKQot
ICAgICAgICAgICAgICAgICAgICBoaXN0b3J5KCkucmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmll
d1N0YXRlKCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIC8vIElmIHRoZSB1c2VyIGhhZCBhIHNj
cm9sbCBwb2ludCwgc2Nyb2xsIHRvIGl0LCBvdmVycmlkaW5nIHRoZSBhbmNob3IgcG9pbnQgaWYg
YW55LgorICAgICAgICBpZiAobV9mcmFtZS5wYWdlKCkpIHsKKyAgICAgICAgICAgIGlmIChpc0Jh
Y2tGb3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkgfHwgaXNSZWxvYWQobV9sb2FkVHlwZSkpCisg
ICAgICAgICAgICAgICAgaGlzdG9yeSgpLnJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0
ZSgpOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX3N0YXRlTWFjaGluZS5jcmVhdGlu
Z0luaXRpYWxFbXB0eURvY3VtZW50KCkgfHwgIW1fc3RhdGVNYWNoaW5lLmNvbW1pdHRlZEZpcnN0
UmVhbERvY3VtZW50TG9hZCgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYg
KG1fc3RhdGVNYWNoaW5lLmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSB8fCAhbV9zdGF0
ZU1hY2hpbmUuY29tbWl0dGVkRmlyc3RSZWFsRG9jdW1lbnRMb2FkKCkpCisgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgICAgIG1fcHJvZ3Jlc3NUcmFja2VyLT5wcm9ncmVzc0NvbXBsZXRl
ZCgpOwotICAgICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwotICAgICAgICAg
ICAgaWYgKHBhZ2UpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyYWNlUG9pbnQoTWFpblJlc291cmNlTG9hZERpZEVu
ZCk7Ci0gICAgICAgICAgICAgICAgICAgIHBhZ2UtPmRpZEZpbmlzaExvYWQoKTsKLSAgICAgICAg
ICAgICAgICB9CisgICAgICAgIG1fcHJvZ3Jlc3NUcmFja2VyLT5wcm9ncmVzc0NvbXBsZXRlZCgp
OworICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CisgICAgICAgIGlmIChwYWdl
KSB7CisgICAgICAgICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKSB7CisgICAgICAgICAg
ICAgICAgdHJhY2VQb2ludChNYWluUmVzb3VyY2VMb2FkRGlkRW5kKTsKKyAgICAgICAgICAgICAg
ICBwYWdlLT5kaWRGaW5pc2hMb2FkKCk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0KIAotICAg
ICAgICAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IgPSBtX2RvY3VtZW50TG9hZGVyLT5t
YWluRG9jdW1lbnRFcnJvcigpOworICAgICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciA9
IG1fZG9jdW1lbnRMb2FkZXItPm1haW5Eb2N1bWVudEVycm9yKCk7CiAKLSAgICAgICAgICAgIEFY
T2JqZWN0Q2FjaGU6OkFYTG9hZGluZ0V2ZW50IGxvYWRpbmdFdmVudDsKLSAgICAgICAgICAgIGlm
ICghZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNF
X0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNoZWNrTG9hZENvbXBsZXRlRm9yVGhp
c0ZyYW1lOiBGaW5pc2hlZCBmcmFtZSBsb2FkIHdpdGggZXJyb3IgKGlzVGltZW91dCA9ICVkLCBp
c0NhbmNlbGxhdGlvbiA9ICVkLCBlcnJvckNvZGUgPSAlZCkiLCBlcnJvci5pc1RpbWVvdXQoKSwg
ZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwotICAgICAgICAgICAg
ICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZEZhaWxMb2FkKGVycm9yKTsKLSAgICAgICAgICAgICAg
ICBsb2FkaW5nRXZlbnQgPSBBWE9iamVjdENhY2hlOjpBWExvYWRpbmdGYWlsZWQ7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWU6
IEZpbmlzaGVkIGZyYW1lIGxvYWQiKTsKKyAgICAgICAgQVhPYmplY3RDYWNoZTo6QVhMb2FkaW5n
RXZlbnQgbG9hZGluZ0V2ZW50OworICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAg
ICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGlu
ZywgImNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lOiBGaW5pc2hlZCBmcmFtZSBsb2FkIHdp
dGggZXJyb3IgKGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBlcnJvckNvZGUg
PSAlZCkiLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3Iu
ZXJyb3JDb2RlKCkpOworICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkRmFpbExvYWQo
ZXJyb3IpOworICAgICAgICAgICAgbG9hZGluZ0V2ZW50ID0gQVhPYmplY3RDYWNoZTo6QVhMb2Fk
aW5nRmFpbGVkOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJjaGVja0xvYWRDb21wbGV0ZUZv
clRoaXNGcmFtZTogRmluaXNoZWQgZnJhbWUgbG9hZCIpOwogI2lmIEVOQUJMRShEQVRBX0RFVEVD
VElPTikKLSAgICAgICAgICAgICAgICBhdXRvIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgp
OwotICAgICAgICAgICAgICAgIGF1dG8gdHlwZXMgPSBPcHRpb25TZXQ8RGF0YURldGVjdG9yVHlw
ZT4geyBtX2ZyYW1lLnNldHRpbmdzKCkuZGF0YURldGVjdG9yVHlwZXMoKSB9OwotICAgICAgICAg
ICAgICAgIGlmIChkb2N1bWVudCAmJiB0eXBlcykgewotICAgICAgICAgICAgICAgICAgICBtX2Zy
YW1lLnNldERhdGFEZXRlY3Rpb25SZXN1bHRzKERhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJ
blJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZG9jdW1lbnQpLCB0eXBlcywg
bV9jbGllbnQtPmRhdGFEZXRlY3Rpb25Db250ZXh0KCkpKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24obV9mcmFtZS5kYXRhRGV0ZWN0aW9u
UmVzdWx0cygpKTsKLSAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBt
X2NsaWVudC0+ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7Ci0gICAgICAgICAgICAgICAgbG9hZGlu
Z0V2ZW50ID0gQVhPYmplY3RDYWNoZTo6QVhMb2FkaW5nRmluaXNoZWQ7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIC8vIE5vdGlmeSBhY2Nlc3NpYmlsaXR5LgotICAgICAgICAgICAgaWYg
KGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RDYWNo
ZSgpKQotICAgICAgICAgICAgICAgICAgICBjYWNoZS0+ZnJhbWVMb2FkaW5nRXZlbnROb3RpZmlj
YXRpb24oJm1fZnJhbWUsIGxvYWRpbmdFdmVudCk7CisgICAgICAgICAgICBhdXRvIGRvY3VtZW50
ID0gbV9mcmFtZS5kb2N1bWVudCgpOworICAgICAgICAgICAgYXV0byB0eXBlcyA9IE9wdGlvblNl
dDxEYXRhRGV0ZWN0b3JUeXBlPiB7IG1fZnJhbWUuc2V0dGluZ3MoKS5kYXRhRGV0ZWN0b3JUeXBl
cygpIH07CisgICAgICAgICAgICBpZiAoZG9jdW1lbnQgJiYgdHlwZXMpIHsKKyAgICAgICAgICAg
ICAgICBtX2ZyYW1lLnNldERhdGFEZXRlY3Rpb25SZXN1bHRzKERhdGFEZXRlY3Rpb246OmRldGVj
dENvbnRlbnRJblJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZG9jdW1lbnQp
LCB0eXBlcywgbV9jbGllbnQtPmRhdGFEZXRlY3Rpb25Db250ZXh0KCkpKTsKKyAgICAgICAgICAg
ICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQorICAgICAgICAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKG1fZnJhbWUuZGF0YURldGVjdGlv
blJlc3VsdHMoKSk7CiAgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIG1fY2xpZW50
LT5kaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKKyAgICAgICAgICAgIGxvYWRpbmdFdmVudCA9IEFY
T2JqZWN0Q2FjaGU6OkFYTG9hZGluZ0ZpbmlzaGVkOworICAgICAgICB9CiAKLSAgICAgICAgICAg
IC8vIFRoZSBhYm92ZSBjYWxscyB0byBkaXNwYXRjaERpZEZpbmlzaExvYWQoKSBtaWdodCBoYXZl
IGRldGFjaGVkIHRoZSBGcmFtZQotICAgICAgICAgICAgLy8gZnJvbSBpdHMgUGFnZSBhbmQgYWxz
byBtaWdodCBoYXZlIGNhdXNlZCBQYWdlIHRvIGJlIGRlbGV0ZWQuCi0gICAgICAgICAgICAvLyBE
b24ndCBhc3N1bWUgJ3BhZ2UnIGlzIHN0aWxsIGF2YWlsYWJsZSB0byB1c2UuCi0gICAgICAgICAg
ICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpICYmIG1fZnJhbWUucGFnZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKCZtX2ZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1lKCkgPT0gJm1fZnJhbWUp
OwotICAgICAgICAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChEaWFnbm9zdGljTG9nZ2luZ0tleXM6
OnBhZ2VMb2FkZWRLZXkoKSwgZW1wdHlTdHJpbmcoKSwgZXJyb3IuaXNOdWxsKCkgPyBEaWFnbm9z
dGljTG9nZ2luZ1Jlc3VsdFBhc3MgOiBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdEZhaWwsIFNob3Vs
ZFNhbXBsZTo6WWVzKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgLy8gTm90aWZ5IGFjY2Vzc2li
aWxpdHkuCisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkg
eworICAgICAgICAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQtPmV4aXN0
aW5nQVhPYmplY3RDYWNoZSgpKQorICAgICAgICAgICAgICAgIGNhY2hlLT5mcmFtZUxvYWRpbmdF
dmVudE5vdGlmaWNhdGlvbigmbV9mcmFtZSwgbG9hZGluZ0V2ZW50KTsKKyAgICAgICAgfQogCi0g
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8vIFRoZSBhYm92ZSBjYWxscyB0byBkaXNwYXRj
aERpZEZpbmlzaExvYWQoKSBtaWdodCBoYXZlIGRldGFjaGVkIHRoZSBGcmFtZQorICAgICAgICAv
LyBmcm9tIGl0cyBQYWdlIGFuZCBhbHNvIG1pZ2h0IGhhdmUgY2F1c2VkIFBhZ2UgdG8gYmUgZGVs
ZXRlZC4KKyAgICAgICAgLy8gRG9uJ3QgYXNzdW1lICdwYWdlJyBpcyBzdGlsbCBhdmFpbGFibGUg
dG8gdXNlLgorICAgICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpICYmIG1fZnJhbWUucGFn
ZSgpKSB7CisgICAgICAgICAgICBBU1NFUlQoJm1fZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKSA9
PSAmbV9mcmFtZSk7CisgICAgICAgICAgICBtX2ZyYW1lLnBhZ2UoKS0+ZGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoRGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjpwYWdlTG9hZGVkS2V5KCksIGVtcHR5U3RyaW5nKCksIGVycm9yLmlzTnVsbCgpID8g
RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRQYXNzIDogRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRGYWls
LCBTaG91bGRTYW1wbGU6Olllcyk7CiAgICAgICAgIH0KKworICAgICAgICByZXR1cm47CisgICAg
fQogICAgICAgICAKLSAgICAgICAgY2FzZSBGcmFtZVN0YXRlQ29tcGxldGU6Ci0gICAgICAgICAg
ICBtX2xvYWRUeXBlID0gRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQ7Ci0gICAgICAgICAgICBmcmFt
ZUxvYWRDb21wbGV0ZWQoKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZyYW1lU3Rh
dGU6OkNvbXBsZXRlOgorICAgICAgICBtX2xvYWRUeXBlID0gRnJhbWVMb2FkVHlwZTo6U3RhbmRh
cmQ7CisgICAgICAgIGZyYW1lTG9hZENvbXBsZXRlZCgpOworICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yODE4LDcgKzI4MjAsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpkZXRhY2hGcm9tUGFyZW50KCkKICAgICAgICAgLy8gc3RvcEFsbExvYWRl
cnMoKSBuZWVkcyB0byBiZSBjYWxsZWQgYWZ0ZXIgZGV0YWNoQ2hpbGRyZW4oKSBpZiB0aGUgZG9j
dW1lbnQgaXMgbm90IGluIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUsCiAgICAgICAgIC8vIGJlY2F1
c2UgZGV0YWNoZWRDaGlsZHJlbigpIHdpbGwgdHJpZ2dlciB0aGUgdW5sb2FkIGV2ZW50IGhhbmRs
ZXJzIG9mIGFueSBjaGlsZCBmcmFtZXMsIGFuZCB0aG9zZSBldmVudAogICAgICAgICAvLyBoYW5k
bGVycyBtaWdodCBzdGFydCBhIG5ldyBzdWJyZXNvdXJjZSBsb2FkIGluIHRoaXMgZnJhbWUuCi0g
ICAgICAgIHN0b3BBbGxMb2FkZXJzKFNob3VsZENsZWFyUHJvdmlzaW9uYWxJdGVtLCBTdG9wTG9h
ZGluZ1BvbGljeTo6QWx3YXlzU3RvcExvYWRpbmcpOworICAgICAgICBzdG9wQWxsTG9hZGVycyhD
bGVhclByb3Zpc2lvbmFsSXRlbTo6WWVzLCBTdG9wTG9hZGluZ1BvbGljeTo6QWx3YXlzU3RvcExv
YWRpbmcpOwogICAgIH0KIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVEZXRh
Y2hlZEZyb21QYXJlbnQobV9mcmFtZSk7CkBAIC0zMTMzLDcgKzMxMzUsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpyZWNlaXZlZE1haW5SZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogICAgICAgICAgICAgZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+KCpvd25lcikucmVu
ZGVyRmFsbGJhY2tDb250ZW50KCk7CiAgICAgfQogCi0gICAgaWYgKG1fc3RhdGUgPT0gRnJhbWVT
dGF0ZVByb3Zpc2lvbmFsICYmIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikgeworICAgIGlm
IChtX3N0YXRlID09IEZyYW1lU3RhdGU6OlByb3Zpc2lvbmFsICYmIG1fcHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcikgewogICAgICAgICBpZiAobV9zdWJtaXR0ZWRGb3JtVVJMID09IG1fcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlci0+b3JpZ2luYWxSZXF1ZXN0Q29weSgpLnVybCgpKQogICAgICAg
ICAgICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gVVJMKCk7CiAgICAgICAgICAgICAKQEAgLTMyNzks
NyArMzI4MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoVW5sb2FkRXZlbnRzKFVubG9h
ZEV2ZW50UG9saWN5IHVubG9hZEV2ZW50UG9saWN5KQogICAgICAgICBpZiAoaXM8SFRNTElucHV0
RWxlbWVudD4oY3VycmVudEZvY3VzZWRFbGVtZW50KSkKICAgICAgICAgICAgIGRvd25jYXN0PEhU
TUxJbnB1dEVsZW1lbnQ+KCpjdXJyZW50Rm9jdXNlZEVsZW1lbnQpLmVuZEVkaXRpbmcoKTsKICAg
ICAgICAgaWYgKG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID09IFBhZ2VEaXNt
aXNzYWxUeXBlOjpOb25lKSB7Ci0gICAgICAgICAgICBpZiAodW5sb2FkRXZlbnRQb2xpY3kgPT0g
VW5sb2FkRXZlbnRQb2xpY3lVbmxvYWRBbmRQYWdlSGlkZSkgeworICAgICAgICAgICAgaWYgKHVu
bG9hZEV2ZW50UG9saWN5ID09IFVubG9hZEV2ZW50UG9saWN5OjpVbmxvYWRBbmRQYWdlSGlkZSkg
ewogICAgICAgICAgICAgICAgIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID0g
UGFnZURpc21pc3NhbFR5cGU6OlBhZ2VIaWRlOwogICAgICAgICAgICAgICAgIG1fZnJhbWUuZG9j
dW1lbnQoKS0+ZG9tV2luZG93KCktPmRpc3BhdGNoRXZlbnQoUGFnZVRyYW5zaXRpb25FdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5wYWdlaGlkZUV2ZW50LCBtX2ZyYW1lLmRvY3VtZW50KCktPmJh
Y2tGb3J3YXJkQ2FjaGVTdGF0ZSgpID09IERvY3VtZW50OjpBYm91dFRvRW50ZXJCYWNrRm9yd2Fy
ZENhY2hlKSwgbV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICAgICAgICAgIH0KQEAgLTM0NTEsNyAr
MzQ1Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBv
bGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAKICAgICBGcmFtZUxvYWRUeXBlIHR5
cGUgPSBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKTsKICAgICAvLyBBIG5ldyBuYXZpZ2F0aW9u
IGlzIGluIHByb2dyZXNzLCBzbyBkb24ndCBjbGVhciB0aGUgaGlzdG9yeSdzIHByb3Zpc2lvbmFs
IGl0ZW0uCi0gICAgc3RvcEFsbExvYWRlcnMoU2hvdWxkTm90Q2xlYXJQcm92aXNpb25hbEl0ZW0p
OworICAgIHN0b3BBbGxMb2FkZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtOjpObyk7CiAgICAgCiAg
ICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzYyNTA4NTY+IC0gSW4gY2VydGFpbiBjaXJjdW1zdGFuY2Vz
IG9uIHBhZ2VzIHdpdGggbXVsdGlwbGUgZnJhbWVzLCBzdG9wQWxsTG9hZGVycygpCiAgICAgLy8g
bWlnaHQgZGV0YWNoIHRoZSBjdXJyZW50IEZyYW1lTG9hZGVyLCBpbiB3aGljaCBjYXNlIHdlIHNo
b3VsZCBiYWlsIG9uIHRoaXMgbmV3bHkgZGVmdW5jdCBsb2FkLiAKQEAgLTM0NjMsNyArMzQ2NSw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlcihtX3BvbGljeURvY3VtZW50TG9hZGVyLmdldCgpKTsKICAgICBGUkFNRUxPQURFUl9SRUxF
QVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNvbnRpbnVlTG9hZEFmdGVyTmF2
aWdhdGlvblBvbGljeTogU2V0dGluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgKG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOwogICAgIG1fbG9hZFR5cGUgPSB0eXBlOwotICAgIHNldFN0YXRlKEZyYW1lU3RhdGVQ
cm92aXNpb25hbCk7CisgICAgc2V0U3RhdGUoRnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWwpOwogCiAg
ICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAKQEAgLTM4NDcsNyArMzg0OSw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5
SXRlbSogZnJvbUl0ZW0sIEZyYW1lTG9hZFR5CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnJldHJ5QWZ0
ZXJGYWlsZWRDYWNoZU9ubHlNYWluUmVzb3VyY2VMb2FkKCkKIHsKLSAgICBBU1NFUlQobV9zdGF0
ZSA9PSBGcmFtZVN0YXRlUHJvdmlzaW9uYWwpOworICAgIEFTU0VSVChtX3N0YXRlID09IEZyYW1l
U3RhdGU6OlByb3Zpc2lvbmFsKTsKICAgICBBU1NFUlQoIW1fbG9hZGluZ0Zyb21DYWNoZWRQYWdl
KTsKICAgICBBU1NFUlQoaGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgpKTsKICAgICBBU1NFUlQo
aGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgpLT5mb3JtRGF0YSgpKTsKQEAgLTM4NTYsNyArMzg1
OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJldHJ5QWZ0ZXJGYWlsZWRDYWNoZU9ubHlNYWluUmVz
b3VyY2VMb2FkKCkKICAgICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlID0gbV9sb2FkVHlwZTsKICAg
ICBIaXN0b3J5SXRlbSogaXRlbSA9IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKTsKIAotICAg
IHN0b3BBbGxMb2FkZXJzKFNob3VsZE5vdENsZWFyUHJvdmlzaW9uYWxJdGVtKTsKKyAgICBzdG9w
QWxsTG9hZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbTo6Tm8pOwogICAgIGlmIChpdGVtKQogICAg
ICAgICBsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKCppdGVtLCBoaXN0b3J5KCkuY3VycmVudEl0
ZW0oKSwgbG9hZFR5cGUsIE1heU5vdEF0dGVtcHRDYWNoZU9ubHlMb2FkRm9yRm9ybVN1Ym1pc3Np
b25JdGVtLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKICAgICBlbHNlIHsKQEAg
LTQxNzYsNyArNDE3OCw3IEBAIFJlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KEZyYW1lJiBvcGVu
ZXJGcmFtZSwgRnJhbWUmIGxvb2t1cEZyYW1lLCBGcmFtZUxvYWRSZXF1CiAKIGJvb2wgRnJhbWVM
b2FkZXI6OnNob3VsZFN1cHByZXNzVGV4dElucHV0RnJvbUVkaXRpbmcoKSBjb25zdAogewotICAg
IHJldHVybiBtX2ZyYW1lLnNldHRpbmdzKCkuc2hvdWxkU3VwcHJlc3NUZXh0SW5wdXRGcm9tRWRp
dGluZ0R1cmluZ1Byb3Zpc2lvbmFsTmF2aWdhdGlvbigpICYmIG1fc3RhdGUgPT0gRnJhbWVTdGF0
ZVByb3Zpc2lvbmFsOworICAgIHJldHVybiBtX2ZyYW1lLnNldHRpbmdzKCkuc2hvdWxkU3VwcHJl
c3NUZXh0SW5wdXRGcm9tRWRpdGluZ0R1cmluZ1Byb3Zpc2lvbmFsTmF2aWdhdGlvbigpICYmIG1f
c3RhdGUgPT0gRnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWw7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggNGM0OTRjOTAwOGIzNDQw
YzZiNzFjZjIwMWJiY2ZiMTE5ODJiZDdmZS4uNzQxMDQ5NWQ2ZDMxZGI0MGVmZTI1Zjk3OTYyZDI1
NzUwOWM3Y2Y4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTE0NCw3ICsx
NDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIGFsbCBmdW5jdGlvbnMg
d2hpY2ggc3RvcCBsb2Fkcy4gV2UgaGF2ZSB0b28gbWFueS4KICAgICB2b2lkIHN0b3BBbGxMb2Fk
ZXJzQW5kQ2hlY2tDb21wbGV0ZW5lc3MoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BB
bGxMb2FkZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5ID0gU2hvdWxkQ2xlYXJQcm92aXNp
b25hbEl0ZW0sIFN0b3BMb2FkaW5nUG9saWN5ID0gU3RvcExvYWRpbmdQb2xpY3k6OlByZXZlbnRE
dXJpbmdVbmxvYWRFdmVudHMpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEFsbExvYWRl
cnMoQ2xlYXJQcm92aXNpb25hbEl0ZW0gPSBDbGVhclByb3Zpc2lvbmFsSXRlbTo6WWVzLCBTdG9w
TG9hZGluZ1BvbGljeSA9IFN0b3BMb2FkaW5nUG9saWN5OjpQcmV2ZW50RHVyaW5nVW5sb2FkRXZl
bnRzKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BGb3JVc2VyQ2FuY2VsKGJvb2wgZGVm
ZXJDaGVja0xvYWRDb21wbGV0ZSA9IGZhbHNlKTsKICAgICB2b2lkIHN0b3BGb3JCYWNrRm9yd2Fy
ZENhY2hlKCk7CiAgICAgdm9pZCBzdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyVHlwZXMuaAppbmRleCA4YjRjMDU0MWZkNDliNDRiN2VmMDVkYmUyOThmMjRjMzUzZmJlMDRj
Li4zNTcxNjc1ZjI3ZDAxN2RkNWYyMWRiZjdkYjI3ZjlkNjMzODFhOWQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKQEAgLTM1LDEyICszNSwxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gRnJhbWVTdGF0ZSB7Ci0gICAgRnJhbWVTdGF0ZVByb3Zp
c2lvbmFsLAorZW51bSBjbGFzcyBGcmFtZVN0YXRlIDogdWludDhfdCB7CisgICAgUHJvdmlzaW9u
YWwsCiAgICAgLy8gVGhpcyBzdGF0ZSBpbmRpY2F0ZXMgd2UgYXJlIHJlYWR5IHRvIGNvbW1pdCB0
byBhIHBhZ2UsCiAgICAgLy8gd2hpY2ggbWVhbnMgdGhlIHZpZXcgd2lsbCB0cmFuc2l0aW9uIHRv
IHVzZSB0aGUgbmV3IGRhdGEgc291cmNlLgotICAgIEZyYW1lU3RhdGVDb21taXR0ZWRQYWdlLAot
ICAgIEZyYW1lU3RhdGVDb21wbGV0ZQorICAgIENvbW1pdHRlZFBhZ2UsCisgICAgQ29tcGxldGUK
IH07CiAKIGVudW0gY2xhc3MgUG9saWN5QWN0aW9uIDogdWludDhfdCB7CkBAIC0xNDMsOSArMTQz
LDkgQEAgZW51bSBjbGFzcyBJbml0aWF0ZWRCeU1haW5GcmFtZSA6IHVpbnQ4X3QgewogICAgIFVu
a25vd24sCiB9OwogCi1lbnVtIENsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5IHsKLSAgICBTaG91
bGRDbGVhclByb3Zpc2lvbmFsSXRlbSwKLSAgICBTaG91bGROb3RDbGVhclByb3Zpc2lvbmFsSXRl
bQorZW51bSBjbGFzcyBDbGVhclByb3Zpc2lvbmFsSXRlbSA6IGJvb2wgeworICAgIFllcywKKyAg
ICBObwogfTsKIAogZW51bSBjbGFzcyBTdG9wTG9hZGluZ1BvbGljeSB7CkBAIC0xNjAsMTAgKzE2
MCwxMCBAQCBlbnVtIGNsYXNzIE9iamVjdENvbnRlbnRUeXBlIDogdWludDhfdCB7CiAgICAgUGx1
Z0luLAogfTsKIAotZW51bSBVbmxvYWRFdmVudFBvbGljeSB7Ci0gICAgVW5sb2FkRXZlbnRQb2xp
Y3lOb25lLAotICAgIFVubG9hZEV2ZW50UG9saWN5VW5sb2FkT25seSwKLSAgICBVbmxvYWRFdmVu
dFBvbGljeVVubG9hZEFuZFBhZ2VIaWRlCitlbnVtIGNsYXNzIFVubG9hZEV2ZW50UG9saWN5IHsK
KyAgICBOb25lLAorICAgIFVubG9hZE9ubHksCisgICAgVW5sb2FkQW5kUGFnZUhpZGUKIH07CiAK
IC8vIFBhc3NlZCB0byBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoKSBhbmQgU2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXggNTNkZTIyMzM0MzExMjFhYjI1YWZkN2ZlMmM5
ODZlNWE3YWVjZDRiMC4uNDIyMDI2MDk5YWFhODhhMTQzMjk5ZmQ0OTY4Y2EzYjRjMzJkNjU3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAt
NTYzLDcgKzU2Myw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGUoc3RkOjp1
bmlxdWVfcHRyPFNjaGVkdWxlZE5hdmlnYXRpb24+IHJlZGlyZWN0CiAgICAgaWYgKHJlZGlyZWN0
LT53YXNEdXJpbmdMb2FkKCkpIHsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBwcm92aXNp
b25hbERvY3VtZW50TG9hZGVyID0gbV9mcmFtZS5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyKCkpCiAgICAgICAgICAgICBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdG9wTG9h
ZGluZygpOwotICAgICAgICBtX2ZyYW1lLmxvYWRlcigpLnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50
UG9saWN5VW5sb2FkQW5kUGFnZUhpZGUpOworICAgICAgICBtX2ZyYW1lLmxvYWRlcigpLnN0b3BM
b2FkaW5nKFVubG9hZEV2ZW50UG9saWN5OjpVbmxvYWRBbmRQYWdlSGlkZSk7CiAgICAgfQogCiAg
ICAgY2FuY2VsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAppbmRl
eCA2OTUzZDQ1YzE1MTdkNGEzNjFhZjgwYzBiNTUxYzlkNmM4ZWZlNDA1Li5mNDMxNWIzODJlYzhh
YWU0ZTEwNjhlZjIyNGFhYWQ3YTljYTE5ZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJm
cmFtZUxvYWRlci5jcHAKQEAgLTMxNyw3ICszMTcsNyBAQCBSZWZQdHI8RnJhbWU+IEZyYW1lTG9h
ZGVyOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYg
bwogICAgIC8vIEZJWE1FOiBJbiB0aGlzIGNhc2UgdGhlIEZyYW1lIHdpbGwgaGF2ZSBmaW5pc2hl
ZCBsb2FkaW5nIGJlZm9yZSAKICAgICAvLyBpdCdzIGJlaW5nIGFkZGVkIHRvIHRoZSBjaGlsZCBs
aXN0LiBJdCB3b3VsZCBiZSBhIGdvb2QgaWRlYSB0bwogICAgIC8vIGNyZWF0ZSB0aGUgY2hpbGQg
Zmlyc3QsIHRoZW4gaW52b2tlIHRoZSBsb2FkZXIgc2VwYXJhdGVseS4KLSAgICBpZiAoZnJhbWUt
PmxvYWRlcigpLnN0YXRlKCkgPT0gRnJhbWVTdGF0ZUNvbXBsZXRlICYmICFmcmFtZS0+bG9hZGVy
KCkucG9saWN5RG9jdW1lbnRMb2FkZXIoKSkKKyAgICBpZiAoZnJhbWUtPmxvYWRlcigpLnN0YXRl
KCkgPT0gRnJhbWVTdGF0ZTo6Q29tcGxldGUgJiYgIWZyYW1lLT5sb2FkZXIoKS5wb2xpY3lEb2N1
bWVudExvYWRlcigpKQogICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2hlY2tDb21wbGV0ZWQoKTsK
IAogICAgIGlmICghZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDMxYmU1MTBlMjJjZGFmMDkzMzll
ODk1NzFlYjQ1MGM2MTJmN2U1NTAuLjY1YTk3M2ZhZDliMzdhZTNlODBkYmJhOWUyN2I0Y2I0MWY5
NTA4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcApAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVk
UmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyKQogICAgIEZyYW1lTG9hZGVyJiBm
cmFtZUxvYWRlciA9IGZyYW1lLmxvYWRlcigpOwogICAgIGlmIChtX29wdGlvbnMuc2VjdXJpdHlD
aGVjayA9PSBTZWN1cml0eUNoZWNrUG9saWN5OjpEb1NlY3VyaXR5Q2hlY2sgJiYgIW1fb3B0aW9u
cy5rZWVwQWxpdmUgJiYgIXNob3VsZFVzZVBpbmdMb2FkKHR5cGUoKSkpIHsKICAgICAgICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmIChmcmFtZUxvYWRlci5zdGF0ZSgpID09IEZyYW1l
U3RhdGVQcm92aXNpb25hbCkKKyAgICAgICAgICAgIGlmIChmcmFtZUxvYWRlci5zdGF0ZSgpID09
IEZyYW1lU3RhdGU6OlByb3Zpc2lvbmFsKQogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRURfV0lUSF9GUkFNRSgibG9hZDogRmFpbGVkIHNlY3VyaXR5IGNoZWNrIC0tIHN0YXRl
IGlzIHByb3Zpc2lvbmFsIiwgZnJhbWUpOwogICAgICAgICAgICAgZWxzZSBpZiAoIWZyYW1lTG9h
ZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRF9XSVRIX0ZSQU1FKCJsb2FkOiBGYWlsZWQgc2VjdXJpdHkgY2hlY2sgLS0gbm90
IGFjdGl2ZSBkb2N1bWVudCIsIGZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRl
eCBmMzg2MjFjNjE5MDcxMjNkODFlN2QxMTUzMTQzNjBmZWYzNzE3ZTJlLi5iMmM3NjY5ODc1ODhk
OGM2MjA0YzdmMjM0MzAzN2FkOTk2NDlkNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CkBAIC0zOTQ2LDcgKzM5NDYsNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsYWJsZUFy
ZWFTZXQoKQogCiBib29sIEZyYW1lVmlldzo6c2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMo
KSBjb25zdAogewotICAgIHJldHVybiBmcmFtZSgpLmxvYWRlcigpLnN0YXRlKCkgIT0gRnJhbWVT
dGF0ZUNvbXBsZXRlOworICAgIHJldHVybiBmcmFtZSgpLmxvYWRlcigpLnN0YXRlKCkgIT0gRnJh
bWVTdGF0ZTo6Q29tcGxldGU7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxiYXJTdHlsZUNo
YW5nZWQoU2Nyb2xsYmFyU3R5bGUgbmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVGcmFtZS5jcHAKaW5kZXggYTljZWI2ZDE3MmUzZDhmZmY1OGFkNzE2ZTAyNTc1
ZTFhODZlZDgzMS4uYzFlN2I2MjM3ZDgxYzQ1YjVkOWYwMjcyYmQyNDBlYzlkNDcwYmZjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcApAQCAtNzcsMTEgKzc3LDExIEBAIFdLRnJhbWVM
b2FkU3RhdGUgV0tCdW5kbGVGcmFtZUdldEZyYW1lTG9hZFN0YXRlKFdLQnVuZGxlRnJhbWVSZWYg
ZnJhbWVSZWYpCiAgICAgICAgIHJldHVybiBrV0tGcmFtZUxvYWRTdGF0ZUZpbmlzaGVkOwogCiAg
ICAgc3dpdGNoIChjb3JlRnJhbWUtPmxvYWRlcigpLnN0YXRlKCkpIHsKLSAgICBjYXNlIFdlYkNv
cmU6OkZyYW1lU3RhdGVQcm92aXNpb25hbDoKKyAgICBjYXNlIFdlYkNvcmU6OkZyYW1lU3RhdGU6
OlByb3Zpc2lvbmFsOgogICAgICAgICByZXR1cm4ga1dLRnJhbWVMb2FkU3RhdGVQcm92aXNpb25h
bDsKLSAgICBjYXNlIFdlYkNvcmU6OkZyYW1lU3RhdGVDb21taXR0ZWRQYWdlOgorICAgIGNhc2Ug
V2ViQ29yZTo6RnJhbWVTdGF0ZTo6Q29tbWl0dGVkUGFnZToKICAgICAgICAgcmV0dXJuIGtXS0Zy
YW1lTG9hZFN0YXRlQ29tbWl0dGVkOwotICAgIGNhc2UgV2ViQ29yZTo6RnJhbWVTdGF0ZUNvbXBs
ZXRlOgorICAgIGNhc2UgV2ViQ29yZTo6RnJhbWVTdGF0ZTo6Q29tcGxldGU6CiAgICAgICAgIHJl
dHVybiBrV0tGcmFtZUxvYWRTdGF0ZUZpbmlzaGVkOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggMzY4ZGNjN2Q5YzBiMjhmNGRlMWFiMDhiMDdhMTI2YmJmOWE0
MTZmYS4uYjBiNGY1NzNiMDUxYWY4MzVmNjU2ODQyN2E1ZmI4NDU5NDEwYWNmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWQoKQogCiAgICAgV2ViRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gc3Rh
dGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXIqPihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVy
KCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVy
KSB7Ci0gICAgICAgIFdFQkZSQU1FTE9BREVSQ0xJRU5UX1JFTEVBU0VfTE9HX0ZBVUxUKExvYWRp
bmcsICJkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZDog
Q2FsbGVkIHdpdGggbm8gcHJvdmlzaW9uYWwgRG9jdW1lbnRMb2FkZXIgKGZyYW1lU3RhdGU9JWks
IHN0YXRlRm9yRGVidWdnaW5nPSVpKSIsIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5z
dGF0ZSgpLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc3RhdGVNYWNoaW5lKCkuc3Rh
dGVGb3JEZWJ1Z2dpbmcoKSk7CisgICAgICAgIFdFQkZSQU1FTE9BREVSQ0xJRU5UX1JFTEVBU0Vf
TE9HX0ZBVUxUKExvYWRpbmcsICJkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZDogQ2FsbGVkIHdpdGggbm8gcHJvdmlzaW9uYWwgRG9jdW1lbnRMb2FkZXIg
KGZyYW1lU3RhdGU9JWhodSwgc3RhdGVGb3JEZWJ1Z2dpbmc9JWkpIiwgbV9mcmFtZS0+Y29yZUZy
YW1lKCktPmxvYWRlcigpLnN0YXRlKCksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5z
dGF0ZU1hY2hpbmUoKS5zdGF0ZUZvckRlYnVnZ2luZygpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>