<?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>185290</bug_id>
          
          <creation_ts>2018-05-03 20:48:10 -0700</creation_ts>
          <short_desc>Rename DocumentOrderedMap to TreeScopeOrderedMap</short_desc>
          <delta_ts>2018-05-04 16:53:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1420546</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-05-03 20:48:10 -0700</bug_when>
    <thetext>It&apos;s a mistake to use DocumentOrderedMap in Document. Rename the class to make this clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420547</commentid>
    <comment_count>1</comment_count>
      <attachid>339517</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-05-03 20:52:38 -0700</bug_when>
    <thetext>Created attachment 339517
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420880</commentid>
    <comment_count>2</comment_count>
      <attachid>339595</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-05-04 14:25:41 -0700</bug_when>
    <thetext>Created attachment 339595
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420881</commentid>
    <comment_count>3</comment_count>
      <attachid>339595</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-05-04 14:25:59 -0700</bug_when>
    <thetext>Comment on attachment 339595
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420883</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-04 14:27:56 -0700</bug_when>
    <thetext>Attachment 339595 did not pass style-queue:


ERROR: Source/WebCore/dom/TreeScopeOrderedMap.cpp:53:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/TreeScopeOrderedMap.cpp:63:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/TreeScopeOrderedMap.cpp:84:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/TreeScopeOrderedMap.cpp:111:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/TreeScopeOrderedMap.cpp:121:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
Total errors found: 5 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420958</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-05-04 16:52:46 -0700</bug_when>
    <thetext>Committed r231390: &lt;https://trac.webkit.org/changeset/231390&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420959</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-04 16:53:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/39994362&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339517</attachid>
            <date>2018-05-03 20:52:38 -0700</date>
            <delta_ts>2018-05-04 14:25:38 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-185290-20180503205237.patch</filename>
            <type>text/plain</type>
            <size>11893</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMTM0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE4LTA1LTAzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBEb2N1bWVudE9yZGVy
ZWRNYXAgdG8gVHJlZVNjb3BlT3JkZXJlZE1hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1MjkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lZCB0aGUgY2xhc3Mgc2luY2UgaXQncyBhbG1vc3Qg
YWx3YXlzIGEgbWlzdGFrZSB0byB1c2UgdGhpcyBjbGFzcyBhcyBhIG1lbWJlciB2YXJpYWJsZSBv
ZiBEb2N1bWVudC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vTW91c2VSZWxhdGVkRXZl
bnQuY3BwOiBJbmNsdWRlIHRoZSBmb3Jnb3R0ZW4gRE9NV2luZG93LmguIFVuaWZpZWQgYnVpbGQg
ZmlsZXMgYml0IHVzIGhlcmUuCisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRyZWVTY29wZTo6YWRkRWxlbWVudEJ5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OmFkZEltYWdlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6YWRkSW1hZ2VF
bGVtZW50QnlVc2VtYXApOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpsYWJlbEVsZW1l
bnRGb3JJZCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5oOgorICAgICAgICAqIGRvbS9UcmVl
U2NvcGVPcmRlcmVkTWFwLmNwcDogUmVuYW1lZCBmcm9tIERvY3VtZW50T3JkZXJlZE1hcC5jcHAK
KyAgICAgICAgKiBkb20vVHJlZVNjb3BlT3JkZXJlZE1hcC5oOiBSZW5hbWVkIGZyb20gRG9jdW1l
bnRPcmRlcmVkTWFwLmgKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5oOgorCiAyMDE4LTA1
LTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIGF0dGVtcHQgdG8gZml4IFdpbkNhaXJvIGJ1aWxkIGZhaWx1cmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CShyZXZpc2lvbiAyMzEzNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNzI5LDcgKzcyOSw2IEBAIGRvbS9Eb2N1bWVudC5jcHAKIGRv
bS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCiBkb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKIGRvbS9E
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCi1kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcAog
ZG9tL0RvY3VtZW50UGFyc2VyLmNwcAogZG9tL0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5jcHAK
IGRvbS9Eb2N1bWVudFRvdWNoLmNwcCBAbm8tdW5pZnkKQEAgLTgyNiw2ICs4MjUsNyBAQCBkb20v
VHJhbnNmb3JtU291cmNlTGlieHNsdC5jcHAKIGRvbS9UcmFuc2l0aW9uRXZlbnQuY3BwCiBkb20v
VHJhdmVyc2FsLmNwcAogZG9tL1RyZWVTY29wZS5jcHAKK2RvbS9UcmVlU2NvcGVPcmRlcmVkTWFw
LmNwcAogZG9tL1RyZWVXYWxrZXIuY3BwCiBkb20vVUlFdmVudC5jcHAKIGRvbS9VSUV2ZW50V2l0
aEtleVN0YXRlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjMxMzQ0KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MzIs
NyArNDMyLDcgQEAKIAkJMTQ3OUZBRjAxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlCYXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDc5RkFF
ODEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieUJhc2UuaCAqLzsgfTsKIAkJMTQ3OUZBRjIx
MDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NzlGQUVBMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5k
ZXJSdWJ5UnVuLmggKi87IH07CiAJCTE0NzlGQUY0MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJS
dWJ5VGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTQ3OUZBRUMxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlUZXh0LmggKi87IH07Ci0JCTE0
OTQ3RkZFMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1bWVudE9yZGVyZWRNYXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0OTQ3RkZDMTJGODBDRDIwMEEw
RjYzMSAvKiBEb2N1bWVudE9yZGVyZWRNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkxNDk0N0ZGRTEyRjgwQ0QyMDBBMEY2MzEgLyogVHJlZVNj
b3BlT3JkZXJlZE1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQ5NDdGRkMxMkY4MENEMjAwQTBGNjMxIC8qIFRyZWVTY29wZU9yZGVyZWRNYXAuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDk5M0JF
NjBCMkYyQjFDMDA1MDQ5N0YgLyogRm9jdXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDk5M0JFNDBCMkYyQjFDMDA1MDQ5N0YgLyog
Rm9jdXNDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMTRDRjdCMzQwOUY2RUNENzAwRUIzNjY1IC8qIEpTQ1NTUnVsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRDRjdCMzIwOUY2RUNE
NzAwRUIzNjY1IC8qIEpTQ1NTUnVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTE0RDY0QjVEMTM0QTVCNkIwMEU1OEZEQSAvKiBUcmVlU2NvcGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDY0QjVC
MTM0QTVCNkIwMEU1OEZEQSAvKiBUcmVlU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTgyMSw4ICs1ODIxLDggQEAKIAkJMTQ4MTNCRjMw
OUVERjg4RTAwRjc1N0UxIC8qIElETFBhcnNlci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBl
cmw7IG5hbWUgPSBJRExQYXJzZXIucG07IHBhdGggPSBzY3JpcHRzL0lETFBhcnNlci5wbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ4QjRGRkYxQjY5MDRDNTAwQzk1NEU0IC8qIENv
dW50UXVldWluZ1N0cmF0ZWd5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDb3VudFF1ZXVp
bmdTdHJhdGVneS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0OEI0RkZGMUI2
OTA0QzUwMEM5NTRFNSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMTQ5NDdGRkIxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3Jk
ZXJlZE1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVu
dE9yZGVyZWRNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDk0N0ZGQzEy
RjgwQ0QyMDBBMEY2MzEgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERvY3VtZW50T3JkZXJlZE1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNDk0N0ZGQjEyRjgwQ0QyMDBBMEY2MzEgLyogVHJlZVNjb3BlT3JkZXJlZE1h
cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmVlU2NvcGVPcmRl
cmVkTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ5NDdGRkMxMkY4MENE
MjAwQTBGNjMxIC8qIFRyZWVTY29wZU9yZGVyZWRNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVHJlZVNjb3BlT3JkZXJlZE1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxNDk5M0JFMzBCMkYyQjFDMDA1MDQ5N0YgLyogRm9jdXNDb250cm9sbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb2N1c0NvbnRyb2xsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDk5M0JFNDBCMkYyQjFDMDA1MDQ5N0Yg
LyogRm9jdXNDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b2N1c0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRBOThFMDUx
MzYzODZBMjAwQzlGRUQyIC8qIEJsb2IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJsb2Iu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYwNzQsOCArMjYwNzQsNiBAQAog
CQkJCUVEMkJBODNCMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5oICovLAogCQkJ
CUNFMDU3RkEzMTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3Bw
ICovLAogCQkJCUNFMDU3RkE0MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuaCAqLywKLQkJCQkxNDk0N0ZGQjEyRjgwQ0QyMDBBMEY2MzEgLyogRG9jdW1lbnRPcmRl
cmVkTWFwLmNwcCAqLywKLQkJCQkxNDk0N0ZGQzEyRjgwQ0QyMDBBMEY2MzEgLyogRG9jdW1lbnRP
cmRlcmVkTWFwLmggKi8sCiAJCQkJOUIwRkU4NzMxRDlFMDJERjAwNEE4QUNCIC8qIERvY3VtZW50
T3JTaGFkb3dSb290LmlkbCAqLywKIAkJCQlBOEMyMjgwRDExRDRBNTk3MDBENUE3RDMgLyogRG9j
dW1lbnRQYXJzZXIuY3BwICovLAogCQkJCUJDQ0ZCQUU3MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1
bWVudFBhcnNlci5oICovLApAQCAtMjYzOTksNiArMjYzOTcsOCBAQAogCQkJCTM3RkQ0Mjk3MTE4
MzY4NDYwMDkzQzAyOSAvKiBUcmVlRGVwdGhMaW1pdC5oICovLAogCQkJCTE0RDY0QjVBMTM0QTVC
NkIwMEU1OEZEQSAvKiBUcmVlU2NvcGUuY3BwICovLAogCQkJCTE0RDY0QjVCMTM0QTVCNkIwMEU1
OEZEQSAvKiBUcmVlU2NvcGUuaCAqLywKKwkJCQkxNDk0N0ZGQjEyRjgwQ0QyMDBBMEY2MzEgLyog
VHJlZVNjb3BlT3JkZXJlZE1hcC5jcHAgKi8sCisJCQkJMTQ5NDdGRkMxMkY4MENEMjAwQTBGNjMx
IC8qIFRyZWVTY29wZU9yZGVyZWRNYXAuaCAqLywKIAkJCQk4NTRGRTcyRTBBMjI5N0JFMDA1OEQ3
QUQgLyogVHJlZVdhbGtlci5jcHAgKi8sCiAJCQkJODU0RkU3MkYwQTIyOTdCRTAwNThEN0FEIC8q
IFRyZWVXYWxrZXIuaCAqLywKIAkJCQkxQTc1MEQzQzBBOTBERTM1MDAwRkYyMTUgLyogVHJlZVdh
bGtlci5pZGwgKi8sCkBAIC0yNzYwMSw3ICsyNzYwMSw2IEBACiAJCQkJNjU2RDM3MzYwQURCQTVE
RTAwQTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFRDJCQTgz
QzA5QTI0QjkxMDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNFMDU3RkE2MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTE0OTQ3RkZFMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1bWVudE9y
ZGVyZWRNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAxRjFENyAv
KiBEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjQ4QUExNkIwREZDMDAw
RURCQjI5IC8qIERvY3VtZW50UnVsZVNldHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENkU3MUFE
MTY2ODg5OUQwMDMyMEMxMyAvKiBEb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzA1NzgsNiArMzA1NzcsNyBAQAogCQkJCTg1NEZFNzM3MEEyMjk3QkUwMDU4RDdB
RCAvKiBUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RkQ0Mjk4MTE4MzY4NDYwMDkz
QzAyOSAvKiBUcmVlRGVwdGhMaW1pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRENjRCNUQxMzRB
NUI2QjAwRTU4RkRBIC8qIFRyZWVTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ5NDdGRkUx
MkY4MENEMjAwQTBGNjMxIC8qIFRyZWVTY29wZU9yZGVyZWRNYXAuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg1NEZFNzM5MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMzc1RDdGRTE2NjM5NTE5MDA2MTg0QUIgLyogVHlwZUFoZWFkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNDZBMkIxQzE3Q0E2NUI5MDAwREJDRDggLyogVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9N
b3VzZVJlbGF0ZWRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01v
dXNlUmVsYXRlZEV2ZW50LmNwcAkocmV2aXNpb24gMjMxMzQ0KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1vdXNlUmVsYXRlZEV2ZW50LmgiCiAK
KyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmNwcAkocmV2aXNpb24gMjMxMzQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29w
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCBjb25zdCBWZWN0b3I8RWxl
bWVudCo+KiBUcmVlU2NvcGU6OmdldEFsCiB2b2lkIFRyZWVTY29wZTo6YWRkRWxlbWVudEJ5SWQo
Y29uc3QgQXRvbWljU3RyaW5nSW1wbCYgZWxlbWVudElkLCBFbGVtZW50JiBlbGVtZW50LCBib29s
IG5vdGlmeU9ic2VydmVycykKIHsKICAgICBpZiAoIW1fZWxlbWVudHNCeUlkKQotICAgICAgICBt
X2VsZW1lbnRzQnlJZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRPcmRlcmVkTWFwPigpOwor
ICAgICAgICBtX2VsZW1lbnRzQnlJZCA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJl
ZE1hcD4oKTsKICAgICBtX2VsZW1lbnRzQnlJZC0+YWRkKGVsZW1lbnRJZCwgZWxlbWVudCwgKnRo
aXMpOwogICAgIGlmIChub3RpZnlPYnNlcnZlcnMpCiAgICAgICAgIG1faWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LT5ub3RpZnlPYnNlcnZlcnMoZWxlbWVudElkKTsKQEAgLTE2OCw3ICsxNjgsNyBA
QCBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeU5hbWUoY29uCiB2b2lkIFRyZWVTY29w
ZTo6YWRkRWxlbWVudEJ5TmFtZShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBuYW1lLCBFbGVtZW50
JiBlbGVtZW50KQogewogICAgIGlmICghbV9lbGVtZW50c0J5TmFtZSkKLSAgICAgICAgbV9lbGVt
ZW50c0J5TmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRPcmRlcmVkTWFwPigpOworICAg
ICAgICBtX2VsZW1lbnRzQnlOYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVk
TWFwPigpOwogICAgIG1fZWxlbWVudHNCeU5hbWUtPmFkZChuYW1lLCBlbGVtZW50LCAqdGhpcyk7
CiB9CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFRyZWVTY29wZTo6YWRkSW1hZ2VNYXAoSFRN
TE1hcEVsZW1lCiAgICAgaWYgKCFuYW1lKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2lt
YWdlTWFwc0J5TmFtZSkKLSAgICAgICAgbV9pbWFnZU1hcHNCeU5hbWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPERvY3VtZW50T3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9pbWFnZU1hcHNCeU5hbWUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9pbWFnZU1hcHNC
eU5hbWUtPmFkZCgqbmFtZSwgaW1hZ2VNYXAsICp0aGlzKTsKIH0KIApAQCAtMjYzLDcgKzI2Myw3
IEBAIEhUTUxNYXBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEltYWdlTWFwKGMKIHZvaWQgVHJlZVNj
b3BlOjphZGRJbWFnZUVsZW1lbnRCeVVzZW1hcChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBuYW1l
LCBIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghbV9pbWFnZXNCeVVzZW1h
cCkKLSAgICAgICAgbV9pbWFnZXNCeVVzZW1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRP
cmRlcmVkTWFwPigpOworICAgICAgICBtX2ltYWdlc0J5VXNlbWFwID0gc3RkOjptYWtlX3VuaXF1
ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIHJldHVybiBtX2ltYWdlc0J5VXNlbWFwLT5h
ZGQobmFtZSwgZWxlbWVudCwgKnRoaXMpOwogfQogCkBAIC0zMDAsNyArMzAwLDcgQEAgSFRNTExh
YmVsRWxlbWVudCogVHJlZVNjb3BlOjpsYWJlbEVsZW1lbgogCiAgICAgaWYgKCFtX2xhYmVsc0J5
Rm9yQXR0cmlidXRlKSB7CiAgICAgICAgIC8vIFBvcHVsYXRlIHRoZSBtYXAgb24gZmlyc3QgYWNj
ZXNzLgotICAgICAgICBtX2xhYmVsc0J5Rm9yQXR0cmlidXRlID0gc3RkOjptYWtlX3VuaXF1ZTxE
b2N1bWVudE9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAKICAgICAgICAgZm9yIChh
dXRvJiBsYWJlbCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxMYWJlbEVsZW1lbnQ+KG1fcm9vdE5v
ZGUpKSB7CiAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvclZhbHVlID0gbGFiZWwu
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JBdHRyKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmgJKHJldmlzaW9uIDIzMTM0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkRvY3VtZW50T3JkZXJlZE1hcC5oIgorI2luY2x1ZGUgIlRyZWVTY29wZU9y
ZGVyZWRNYXAuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMjYsMTEgKzEyNiwxMSBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RG9jdW1lbnQ+IG1fZG9jdW1lbnRTY29wZTsKICAg
ICBUcmVlU2NvcGUqIG1fcGFyZW50VHJlZVNjb3BlOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPERv
Y3VtZW50T3JkZXJlZE1hcD4gbV9lbGVtZW50c0J5SWQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERv
Y3VtZW50T3JkZXJlZE1hcD4gbV9lbGVtZW50c0J5TmFtZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RG9jdW1lbnRPcmRlcmVkTWFwPiBtX2ltYWdlTWFwc0J5TmFtZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8RG9jdW1lbnRPcmRlcmVkTWFwPiBtX2ltYWdlc0J5VXNlbWFwOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxEb2N1bWVudE9yZGVyZWRNYXA+IG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGU7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFRyZWVTY29wZU9yZGVyZWRNYXA+IG1fZWxlbWVudHNCeUlkOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxUcmVlU2NvcGVPcmRlcmVkTWFwPiBtX2VsZW1lbnRzQnlOYW1lOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxUcmVlU2NvcGVPcmRlcmVkTWFwPiBtX2ltYWdlTWFwc0J5TmFtZTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJlZVNjb3BlT3JkZXJlZE1hcD4gbV9pbWFnZXNCeVVzZW1h
cDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJlZVNjb3BlT3JkZXJlZE1hcD4gbV9sYWJlbHNCeUZv
ckF0dHJpYnV0ZTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJZFRhcmdldE9ic2VydmVyUmVnaXN0
cnk+IG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRG9jdW1lbnQuaAkocmV2aXNpb24gMjMxMzQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjksOCArNjksOCBAQCBwcml2YXRlOgog
ICAgIFJlZjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CiAgICAgUmVm
PERvY3VtZW50PiBjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3QgZmluYWw7CiAK
LSAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9kb2N1bWVudE5hbWVkSXRlbTsKLSAgICBEb2N1bWVu
dE9yZGVyZWRNYXAgbV93aW5kb3dOYW1lZEl0ZW07CisgICAgVHJlZVNjb3BlT3JkZXJlZE1hcCBt
X2RvY3VtZW50TmFtZWRJdGVtOworICAgIFRyZWVTY29wZU9yZGVyZWRNYXAgbV93aW5kb3dOYW1l
ZEl0ZW07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339595</attachid>
            <date>2018-05-04 14:25:41 -0700</date>
            <delta_ts>2018-05-04 14:25:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-185290-20180504142540.patch</filename>
            <type>text/plain</type>
            <size>46583</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMTM3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE4LTA1LTA0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBEb2N1bWVudE9yZGVy
ZWRNYXAgdG8gVHJlZVNjb3BlT3JkZXJlZE1hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1MjkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4g
QnVqdGFzLgorCisgICAgICAgIFJlbmFtZWQgdGhlIGNsYXNzIHNpbmNlIGl0J3MgYWxtb3N0IGFs
d2F5cyBhIG1pc3Rha2UgdG8gdXNlIHRoaXMgY2xhc3MgYXMgYSBtZW1iZXIgdmFyaWFibGUgb2Yg
RG9jdW1lbnQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50
LmNwcDogSW5jbHVkZSB0aGUgZm9yZ290dGVuIERPTVdpbmRvdy5oLiBVbmlmaWVkIGJ1aWxkIGZp
bGVzIGJpdCB1cyBoZXJlLgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2NvcGU6OmFkZEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3Bl
OjphZGRJbWFnZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEltYWdlRWxl
bWVudEJ5VXNlbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bGFiZWxFbGVtZW50
Rm9ySWQpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuaDoKKyAgICAgICAgKiBkb20vVHJlZVNj
b3BlT3JkZXJlZE1hcC5jcHA6IFJlbmFtZWQgZnJvbSBEb2N1bWVudE9yZGVyZWRNYXAuY3BwCisg
ICAgICAgICogZG9tL1RyZWVTY29wZU9yZGVyZWRNYXAuaDogUmVuYW1lZCBmcm9tIERvY3VtZW50
T3JkZXJlZE1hcC5oCisgICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnQuaDoKKwogMjAxOC0wNS0w
NCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24n
dCB1c2UgR1NGb250KiBpbiBtaW5pbWFsIHNpbXVsYXRvciBtb2RlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAkocmV2aXNpb24gMjMxMzc4KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTcyOSw3ICs3MjksNiBAQCBkb20vRG9jdW1lbnQuY3BwCiBkb20vRG9jdW1l
bnRFdmVudFF1ZXVlLmNwcAogZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCiBkb20vRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyLmNwcAotZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKIGRvbS9Eb2N1
bWVudFBhcnNlci5jcHAKIGRvbS9Eb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuY3BwCiBkb20vRG9j
dW1lbnRUb3VjaC5jcHAgQG5vLXVuaWZ5CkBAIC04MjYsNiArODI1LDcgQEAgZG9tL1RyYW5zZm9y
bVNvdXJjZUxpYnhzbHQuY3BwCiBkb20vVHJhbnNpdGlvbkV2ZW50LmNwcAogZG9tL1RyYXZlcnNh
bC5jcHAKIGRvbS9UcmVlU2NvcGUuY3BwCitkb20vVHJlZVNjb3BlT3JkZXJlZE1hcC5jcHAKIGRv
bS9UcmVlV2Fsa2VyLmNwcAogZG9tL1VJRXZlbnQuY3BwCiBkb20vVUlFdmVudFdpdGhLZXlTdGF0
ZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIzMTM3OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDMyLDcgKzQzMiw3
IEBACiAJCTE0NzlGQUYwMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5QmFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3OUZBRTgxMDlBRTM3
NTAwREVENjU1IC8qIFJlbmRlclJ1YnlCYXNlLmggKi87IH07CiAJCTE0NzlGQUYyMTA5QUUzNzUw
MERFRDY1NSAvKiBSZW5kZXJSdWJ5UnVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDc5RkFFQTEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieVJ1
bi5oICovOyB9OwogCQkxNDc5RkFGNDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieVRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NzlGQUVD
MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5VGV4dC5oICovOyB9OwotCQkxNDk0N0ZGRTEy
RjgwQ0QyMDBBMEY2MzEgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDk0N0ZGQzEyRjgwQ0QyMDBBMEY2MzEgLyog
RG9jdW1lbnRPcmRlcmVkTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMTQ5NDdGRkUxMkY4MENEMjAwQTBGNjMxIC8qIFRyZWVTY29wZU9yZGVy
ZWRNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
OTQ3RkZDMTJGODBDRDIwMEEwRjYzMSAvKiBUcmVlU2NvcGVPcmRlcmVkTWFwLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ5OTNCRTYwQjJGMkIx
QzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ5OTNCRTQwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29u
dHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTE0Q0Y3QjM0MDlGNkVDRDcwMEVCMzY2NSAvKiBKU0NTU1J1bGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0Q0Y3QjMyMDlGNkVDRDcwMEVCMzY2
NSAvKiBKU0NTU1J1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxNEQ2NEI1RDEzNEE1QjZCMDBFNThGREEgLyogVHJlZVNjb3BlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ2NEI1QjEzNEE1QjZC
MDBFNThGREEgLyogVHJlZVNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTU4MjIsOCArNTgyMiw4IEBACiAJCTE0ODEzQkYzMDlFREY4OEUw
MEY3NTdFMSAvKiBJRExQYXJzZXIucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1l
ID0gSURMUGFyc2VyLnBtOyBwYXRoID0gc2NyaXB0cy9JRExQYXJzZXIucG07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTE0OEI0RkZGMUI2OTA0QzUwMEM5NTRFNCAvKiBDb3VudFF1ZXVp
bmdTdHJhdGVneS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ291bnRRdWV1aW5nU3RyYXRl
Z3kuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDhCNEZGRjFCNjkwNEM1MDBD
OTU0RTUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTE0OTQ3RkZCMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1bWVudE9yZGVyZWRNYXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRPcmRlcmVk
TWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTQ5NDdGRkMxMkY4MENEMjAw
QTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEb2N1bWVudE9yZGVyZWRNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMTQ5NDdGRkIxMkY4MENEMjAwQTBGNjMxIC8qIFRyZWVTY29wZU9yZGVyZWRNYXAuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJlZVNjb3BlT3JkZXJlZE1hcC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0OTQ3RkZDMTJGODBDRDIwMEEwRjYz
MSAvKiBUcmVlU2NvcGVPcmRlcmVkTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRyZWVTY29wZU9yZGVyZWRNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQ5OTNCRTMwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9jdXNDb250cm9sbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ5OTNCRTQwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3Vz
Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9jdXNDb250
cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QTk4RTA1MTM2Mzg2QTIw
MEM5RkVEMiAvKiBCbG9iLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCbG9iLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2MDc2LDggKzI2MDc2LDYgQEAKIAkJCQlFRDJC
QTgzQjA5QTI0QjkxMDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCAqLywKIAkJCQlDRTA1N0ZB
MzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLywKIAkJ
CQlDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgg
Ki8sCi0JCQkJMTQ5NDdGRkIxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1hcC5j
cHAgKi8sCi0JCQkJMTQ5NDdGRkMxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1h
cC5oICovLAogCQkJCTlCMEZFODczMUQ5RTAyREYwMDRBOEFDQiAvKiBEb2N1bWVudE9yU2hhZG93
Um9vdC5pZGwgKi8sCiAJCQkJQThDMjI4MEQxMUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50UGFy
c2VyLmNwcCAqLywKIAkJCQlCQ0NGQkFFNzBCNTE1MkVEMDAwMUYxRDcgLyogRG9jdW1lbnRQYXJz
ZXIuaCAqLywKQEAgLTI2NDAxLDYgKzI2Mzk5LDggQEAKIAkJCQkzN0ZENDI5NzExODM2ODQ2MDA5
M0MwMjkgLyogVHJlZURlcHRoTGltaXQuaCAqLywKIAkJCQkxNEQ2NEI1QTEzNEE1QjZCMDBFNThG
REEgLyogVHJlZVNjb3BlLmNwcCAqLywKIAkJCQkxNEQ2NEI1QjEzNEE1QjZCMDBFNThGREEgLyog
VHJlZVNjb3BlLmggKi8sCisJCQkJMTQ5NDdGRkIxMkY4MENEMjAwQTBGNjMxIC8qIFRyZWVTY29w
ZU9yZGVyZWRNYXAuY3BwICovLAorCQkJCTE0OTQ3RkZDMTJGODBDRDIwMEEwRjYzMSAvKiBUcmVl
U2NvcGVPcmRlcmVkTWFwLmggKi8sCiAJCQkJODU0RkU3MkUwQTIyOTdCRTAwNThEN0FEIC8qIFRy
ZWVXYWxrZXIuY3BwICovLAogCQkJCTg1NEZFNzJGMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fs
a2VyLmggKi8sCiAJCQkJMUE3NTBEM0MwQTkwREUzNTAwMEZGMjE1IC8qIFRyZWVXYWxrZXIuaWRs
ICovLApAQCAtMjc2MDMsNyArMjc2MDMsNiBAQAogCQkJCTY1NkQzNzM2MEFEQkE1REUwMEE0NTU0
RCAvKiBEb2N1bWVudExvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUQyQkE4M0MwOUEyNEI5
MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTA1N0ZB
NjEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkxNDk0N0ZGRTEyRjgwQ0QyMDBBMEY2MzEgLyogRG9jdW1lbnRPcmRlcmVkTWFw
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGQkFFODBCNTE1MkVEMDAwMUYxRDcgLyogRG9jdW1l
bnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNEY0OEFBMTZCMERGQzAwMEVEQkIyOSAv
KiBEb2N1bWVudFJ1bGVTZXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDZFNzFBRDE2Njg4OTlE
MDAzMjBDMTMgLyogRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmggaW4gSGVhZGVycyAqLywKQEAg
LTMwNTgwLDYgKzMwNTc5LDcgQEAKIAkJCQk4NTRGRTczNzBBMjI5N0JFMDA1OEQ3QUQgLyogVHJh
dmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0ZENDI5ODExODM2ODQ2MDA5M0MwMjkgLyog
VHJlZURlcHRoTGltaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RDY0QjVEMTM0QTVCNkIwMEU1
OEZEQSAvKiBUcmVlU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0OTQ3RkZFMTJGODBDRDIw
MEEwRjYzMSAvKiBUcmVlU2NvcGVPcmRlcmVkTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTRG
RTczOTBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzM3NUQ3RkUxNjYzOTUxOTAwNjE4NEFCIC8qIFR5cGVBaGVhZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTQ2QTJCMUMxN0NBNjVCOTAwMERCQ0Q4IC8qIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRP
cmRlcmVkTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRP
cmRlcmVkTWFwLmNwcAkocmV2aXNpb24gMjMxMzc4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50T3JkZXJlZE1hcC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMjMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRv
Y3VtZW50T3JkZXJlZE1hcC5oIgotCi0jaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
aCIKLSNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJIVE1MSW1hZ2VFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiSFRNTExhYmVsRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxNYXBF
bGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVDb2xsZWN0aW9uLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQotdm9pZCBEb2N1bWVudE9y
ZGVyZWRNYXA6OmNsZWFyKCkKLXsKLSAgICBtX21hcC5jbGVhcigpOwotfQotCi12b2lkIERvY3Vt
ZW50T3JkZXJlZE1hcDo6YWRkKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgVHJlZVNjb3BlJiB0cmVlU2NvcGUpCi17Ci0gICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmZWxlbWVudC50cmVlU2NvcGUoKSA9PSAmdHJl
ZVNjb3BlKTsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTih0cmVlU2NvcGUu
cm9vdE5vZGUoKS5jb250YWluc0luY2x1ZGluZ1NoYWRvd0RPTSgmZWxlbWVudCkpOwotCi0gICAg
aWYgKCFlbGVtZW50LmlzSW5UcmVlU2NvcGUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIE1hcDo6
QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fbWFwLmVuc3VyZSgma2V5LCBbJmVsZW1lbnRdIHsKLSAg
ICAgICAgcmV0dXJuIE1hcEVudHJ5KCZlbGVtZW50KTsKLSAgICB9KTsKLSAgICBNYXBFbnRyeSYg
ZW50cnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTighZW50cnkucmVnaXN0ZXJlZEVsZW1lbnRzLmNvbnRhaW5zKCZlbGVtZW50
KSk7Ci0gICAgZW50cnkucmVnaXN0ZXJlZEVsZW1lbnRzLmFkZCgmZWxlbWVudCk7Ci0jZW5kaWYK
LQotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihlbnRyeS5jb3VudCk7Ci0g
ICAgZW50cnkuZWxlbWVudCA9IG51bGxwdHI7Ci0gICAgZW50cnkuY291bnQrKzsKLSAgICBlbnRy
eS5vcmRlcmVkTGlzdC5jbGVhcigpOwotfQotCi12b2lkIERvY3VtZW50T3JkZXJlZE1hcDo6cmVt
b3ZlKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgRWxlbWVudCYgZWxlbWVudCkKLXsKLSAg
ICBtX21hcC5jaGVja0NvbnNpc3RlbmN5KCk7Ci0gICAgYXV0byBpdCA9IG1fbWFwLmZpbmQoJmtl
eSk7Ci0KLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGl0ICE9
IG1fbWFwLmVuZCgpKTsKLQotICAgIE1hcEVudHJ5JiBlbnRyeSA9IGl0LT52YWx1ZTsKLSAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihlbnRyeS5yZWdpc3RlcmVkRWxlbWVudHMu
cmVtb3ZlKCZlbGVtZW50KSk7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihlbnRyeS5jb3VudCk7Ci0gICAgaWYgKGVudHJ5LmNvdW50ID09IDEpIHsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZW50cnkuZWxlbWVu
dCB8fCBlbnRyeS5lbGVtZW50ID09ICZlbGVtZW50KTsKLSAgICAgICAgbV9tYXAucmVtb3ZlKGl0
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoZW50cnkuZWxlbWVudCA9PSAmZWxlbWVudCkK
LSAgICAgICAgICAgIGVudHJ5LmVsZW1lbnQgPSBudWxscHRyOwotICAgICAgICBlbnRyeS5jb3Vu
dC0tOwotICAgICAgICBlbnRyeS5vcmRlcmVkTGlzdC5jbGVhcigpOyAvLyBGSVhNRTogUmVtb3Zl
IHRoZSBlbGVtZW50IGluc3RlYWQgaWYgdGhlcmUgYXJlIG9ubHkgZmV3IGl0ZW1zIGxlZnQuCi0g
ICAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5TWF0Y2hpbmdGdW5jdGlvbj4KLWlubGlu
ZSBFbGVtZW50KiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldChjb25zdCBBdG9taWNTdHJpbmdJbXBs
JiBrZXksIGNvbnN0IFRyZWVTY29wZSYgc2NvcGUsIGNvbnN0IEtleU1hdGNoaW5nRnVuY3Rpb24m
IGtleU1hdGNoZXMpIGNvbnN0Ci17Ci0gICAgbV9tYXAuY2hlY2tDb25zaXN0ZW5jeSgpOwotCi0g
ICAgYXV0byBpdCA9IG1fbWFwLmZpbmQoJmtleSk7Ci0gICAgaWYgKGl0ID09IG1fbWFwLmVuZCgp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIE1hcEVudHJ5JiBlbnRyeSA9IGl0LT52
YWx1ZTsKLSAgICBBU1NFUlQoZW50cnkuY291bnQpOwotICAgIGlmIChlbnRyeS5lbGVtZW50KSB7
Ci0gICAgICAgIGF1dG8mIGVsZW1lbnQgPSAqZW50cnkuZWxlbWVudDsKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmZWxlbWVudC50cmVlU2NvcGUoKSA9
PSAmc2NvcGUpOwotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihlbnRy
eS5yZWdpc3RlcmVkRWxlbWVudHMuY29udGFpbnMoJmVsZW1lbnQpKTsKLSAgICAgICAgcmV0dXJu
ICZlbGVtZW50OwotICAgIH0KLQotICAgIC8vIFdlIGtub3cgdGhlcmUncyBhdCBsZWFzdCBvbmUg
bm9kZSB0aGF0IG1hdGNoZXM7IGl0ZXJhdGUgdG8gZmluZCB0aGUgZmlyc3Qgb25lLgotICAgIGZv
ciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KHNjb3BlLnJvb3RO
b2RlKCkpKSB7Ci0gICAgICAgIGlmICgha2V5TWF0Y2hlcyhrZXksIGVsZW1lbnQpKQotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGVudHJ5LmVsZW1lbnQgPSAmZWxlbWVudDsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmZWxlbWVudC50cmVl
U2NvcGUoKSA9PSAmc2NvcGUpOwotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihlbnRyeS5yZWdpc3RlcmVkRWxlbWVudHMuY29udGFpbnMoZW50cnkuZWxlbWVudCkpOwot
ICAgICAgICByZXR1cm4gJmVsZW1lbnQ7Ci0gICAgfQotCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAot
ICAgIC8vIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCBtYXkgY2FsbCBnZXRFbGVtZW50QnlJZCB0byBm
aW5kIGl0cyBvd25lciBmb3JtIGluIHRoZSBtaWRkbGUgb2YgYSB0cmVlIHJlbW92YWwuCi0gICAg
aWYgKGF1dG8qIGN1cnJlbnRTY29wZSA9IENvbnRhaW5lckNoaWxkUmVtb3ZhbFNjb3BlOjpjdXJy
ZW50U2NvcGUoKSkgewotICAgICAgICBBU1NFUlQoJnNjb3BlLnJvb3ROb2RlKCkgPT0gJmN1cnJl
bnRTY29wZS0+cGFyZW50T2ZSZW1vdmVkVHJlZSgpLnJvb3ROb2RlKCkpOwotICAgICAgICBOb2Rl
JiByZW1vdmVkVHJlZSA9IGN1cnJlbnRTY29wZS0+cmVtb3ZlZENoaWxkKCk7Ci0gICAgICAgIEFT
U0VSVChpczxDb250YWluZXJOb2RlPihyZW1vdmVkVHJlZSkpOwotICAgICAgICBmb3IgKGF1dG8m
IGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihkb3duY2FzdDxDb250YWluZXJO
b2RlPihyZW1vdmVkVHJlZSkpKSB7Ci0gICAgICAgICAgICBpZiAoIWtleU1hdGNoZXMoa2V5LCBl
bGVtZW50KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGJvb2wgcmVt
b3ZlZEZyb21BbmNlc3Rvckhhc05vdEJlZW5DYWxsZWRZZXQgPSBlbGVtZW50LmlzQ29ubmVjdGVk
KCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVtb3ZlZEZyb21BbmNlc3Rvckhhc05vdEJlZW5DYWxs
ZWRZZXQpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBudWxscHRyOwot
fQotCi1FbGVtZW50KiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0
b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3QgVHJlZVNjb3BlJiBzY29wZSkgY29uc3QKLXsKLSAg
ICByZXR1cm4gZ2V0KGtleSwgc2NvcGUsIFtdIChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXks
IGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0SWRB
dHRyaWJ1dGUoKS5pbXBsKCkgPT0gJmtleTsKLSAgICB9KTsKLX0KLQotRWxlbWVudCogRG9jdW1l
bnRPcmRlcmVkTWFwOjpnZXRFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtl
eSwgY29uc3QgVHJlZVNjb3BlJiBzY29wZSkgY29uc3QKLXsKLSAgICByZXR1cm4gZ2V0KGtleSwg
c2NvcGUsIFtdIChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQpIHsKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwo
KSA9PSAma2V5OwotICAgIH0pOwotfQotCi1IVE1MTWFwRWxlbWVudCogRG9jdW1lbnRPcmRlcmVk
TWFwOjpnZXRFbGVtZW50QnlNYXBOYW1lKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29u
c3QgVHJlZVNjb3BlJiBzY29wZSkgY29uc3QKLXsKLSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE1h
cEVsZW1lbnQ+KGdldChrZXksIHNjb3BlLCBbXSAoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5
LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7Ci0gICAgICAgIHJldHVybiBpczxIVE1MTWFwRWxl
bWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE1hcEVsZW1lbnQ+KGVsZW1lbnQpLmdldE5h
bWUoKS5pbXBsKCkgPT0gJmtleTsKLSAgICB9KSk7Ci19Ci0KLUhUTUxJbWFnZUVsZW1lbnQqIERv
Y3VtZW50T3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5VXNlbWFwKGNvbnN0IEF0b21pY1N0cmluZ0lt
cGwmIGtleSwgY29uc3QgVHJlZVNjb3BlJiBzY29wZSkgY29uc3QKLXsKLSAgICByZXR1cm4gZG93
bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZ2V0KGtleSwgc2NvcGUsIFtdIChjb25zdCBBdG9taWNT
dHJpbmdJbXBsJiBrZXksIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsKLSAgICAgICAgLy8gRklY
TUU6IEhUTUw1IHNwZWNpZmljYXRpb24gc2F5cyB3ZSBzaG91bGQgbWF0Y2ggYm90aCBpbWFnZSBh
bmQgb2JqZWN0IGVsZW1lbnRzLgotICAgICAgICByZXR1cm4gaXM8SFRNTEltYWdlRWxlbWVudD4o
ZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkubWF0Y2hlc1Vz
ZW1hcChrZXkpOwotICAgIH0pKTsKLX0KLQotSFRNTExhYmVsRWxlbWVudCogRG9jdW1lbnRPcmRl
cmVkTWFwOjpnZXRFbGVtZW50QnlMYWJlbEZvckF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmdJ
bXBsJiBrZXksIGNvbnN0IFRyZWVTY29wZSYgc2NvcGUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGRv
d25jYXN0PEhUTUxMYWJlbEVsZW1lbnQ+KGdldChrZXksIHNjb3BlLCBbXSAoY29uc3QgQXRvbWlj
U3RyaW5nSW1wbCYga2V5LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7Ci0gICAgICAgIHJldHVy
biBpczxIVE1MTGFiZWxFbGVtZW50PihlbGVtZW50KSAmJiBlbGVtZW50LmF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oZm9yQXR0cikuaW1wbCgpID09ICZrZXk7Ci0gICAgfSkpOwotfQot
Ci1FbGVtZW50KiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeVdpbmRvd05hbWVkSXRl
bShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0IFRyZWVTY29wZSYgc2NvcGUpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGdldChrZXksIHNjb3BlLCBbXSAoY29uc3QgQXRvbWljU3RyaW5n
SW1wbCYga2V5LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7Ci0gICAgICAgIHJldHVybiBXaW5k
b3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMoZWxlbWVudCwgJmtleSk7Ci0gICAgfSk7
Ci19Ci0KLUVsZW1lbnQqIERvY3VtZW50T3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5RG9jdW1lbnRO
YW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBUcmVlU2NvcGUmIHNj
b3BlKSBjb25zdAotewotICAgIHJldHVybiBnZXQoa2V5LCBzY29wZSwgW10gKGNvbnN0IEF0b21p
Y1N0cmluZ0ltcGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkgewotICAgICAgICByZXR1
cm4gRG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMoZWxlbWVudCwgJmtleSk7
Ci0gICAgfSk7Ci19Ci0KLWNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIERvY3VtZW50T3JkZXJlZE1h
cDo6Z2V0QWxsRWxlbWVudHNCeUlkKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3Qg
VHJlZVNjb3BlJiBzY29wZSkgY29uc3QKLXsKLSAgICBtX21hcC5jaGVja0NvbnNpc3RlbmN5KCk7
Ci0KLSAgICBhdXRvIGl0ID0gbV9tYXAuZmluZCgma2V5KTsKLSAgICBpZiAoaXQgPT0gbV9tYXAu
ZW5kKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgTWFwRW50cnkmIGVudHJ5ID0g
aXQtPnZhbHVlOwotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
ZW50cnkuY291bnQpOwotCi0gICAgaWYgKGVudHJ5Lm9yZGVyZWRMaXN0LmlzRW1wdHkoKSkgewot
ICAgICAgICBlbnRyeS5vcmRlcmVkTGlzdC5yZXNlcnZlQ2FwYWNpdHkoZW50cnkuY291bnQpOwot
ICAgICAgICBhdXRvIGVsZW1lbnREZXNjYW5kZW50cyA9IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1l
bnQ+KHNjb3BlLnJvb3ROb2RlKCkpOwotICAgICAgICBhdXRvIGl0ID0gZW50cnkuZWxlbWVudCA/
IGVsZW1lbnREZXNjYW5kZW50cy5iZWdpbkF0KCplbnRyeS5lbGVtZW50KSA6IGVsZW1lbnREZXNj
YW5kZW50cy5iZWdpbigpOwotICAgICAgICBhdXRvIGVuZCA9IGVsZW1lbnREZXNjYW5kZW50cy5l
bmQoKTsKLSAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgYXV0
byYgZWxlbWVudCA9ICppdDsKLSAgICAgICAgICAgIGlmIChlbGVtZW50LmdldElkQXR0cmlidXRl
KCkuaW1wbCgpICE9ICZrZXkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICBlbnRyeS5vcmRlcmVkTGlzdC5hcHBlbmQoJmVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZW50cnkub3JkZXJlZExp
c3Quc2l6ZSgpID09IGVudHJ5LmNvdW50KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gJmVudHJ5Lm9y
ZGVyZWRMaXN0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9y
ZGVyZWRNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRl
cmVkTWFwLmgJKHJldmlzaW9uIDIzMTM3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dE9yZGVyZWRNYXAuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwotY2xhc3Mg
SFRNTExhYmVsRWxlbWVudDsKLWNsYXNzIEhUTUxNYXBFbGVtZW50OwotY2xhc3MgVHJlZVNjb3Bl
OwotCi1jbGFzcyBEb2N1bWVudE9yZGVyZWRNYXAgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotcHVibGljOgotICAgIHZvaWQgYWRkKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmLCBFbGVt
ZW50JiwgY29uc3QgVHJlZVNjb3BlJik7Ci0gICAgdm9pZCByZW1vdmUoY29uc3QgQXRvbWljU3Ry
aW5nSW1wbCYsIEVsZW1lbnQmKTsKLSAgICB2b2lkIGNsZWFyKCk7Ci0KLSAgICBib29sIGNvbnRh
aW5zKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmKSBjb25zdDsKLSAgICBib29sIGNvbnRhaW5zU2lu
Z2xlKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmKSBjb25zdDsKLSAgICBib29sIGNvbnRhaW5zTXVs
dGlwbGUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYpIGNvbnN0OwotCi0gICAgLy8gY29uY3JldGUg
aW5zdGFudGlhdGlvbnMgb2YgdGhlIGdldDw+KCkgbWV0aG9kIHRlbXBsYXRlCi0gICAgRWxlbWVu
dCogZ2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYsIGNvbnN0IFRyZWVTY29w
ZSYpIGNvbnN0OwotICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbWljU3Ry
aW5nSW1wbCYsIGNvbnN0IFRyZWVTY29wZSYpIGNvbnN0OwotICAgIEhUTUxNYXBFbGVtZW50KiBn
ZXRFbGVtZW50QnlNYXBOYW1lKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmLCBjb25zdCBUcmVlU2Nv
cGUmKSBjb25zdDsKLSAgICBIVE1MSW1hZ2VFbGVtZW50KiBnZXRFbGVtZW50QnlVc2VtYXAoY29u
c3QgQXRvbWljU3RyaW5nSW1wbCYsIGNvbnN0IFRyZWVTY29wZSYpIGNvbnN0OwotICAgIEhUTUxM
YWJlbEVsZW1lbnQqIGdldEVsZW1lbnRCeUxhYmVsRm9yQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0
cmluZ0ltcGwmLCBjb25zdCBUcmVlU2NvcGUmKSBjb25zdDsKLSAgICBFbGVtZW50KiBnZXRFbGVt
ZW50QnlXaW5kb3dOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nSW1wbCYsIGNvbnN0IFRyZWVT
Y29wZSYpIGNvbnN0OwotICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeURvY3VtZW50TmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmLCBjb25zdCBUcmVlU2NvcGUmKSBjb25zdDsKLQotICAg
IGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIGdldEFsbEVsZW1lbnRzQnlJZChjb25zdCBBdG9taWNT
dHJpbmdJbXBsJiwgY29uc3QgVHJlZVNjb3BlJikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEtleU1hdGNoaW5nRnVuY3Rpb24+Ci0gICAgRWxlbWVudCogZ2V0KGNv
bnN0IEF0b21pY1N0cmluZ0ltcGwmLCBjb25zdCBUcmVlU2NvcGUmLCBjb25zdCBLZXlNYXRjaGlu
Z0Z1bmN0aW9uJikgY29uc3Q7Ci0KLSAgICBzdHJ1Y3QgTWFwRW50cnkgewotICAgICAgICBNYXBF
bnRyeSgpIHsgfQotICAgICAgICBleHBsaWNpdCBNYXBFbnRyeShFbGVtZW50KiBmaXJzdEVsZW1l
bnQpCi0gICAgICAgICAgICA6IGVsZW1lbnQoZmlyc3RFbGVtZW50KQotICAgICAgICAgICAgLCBj
b3VudCgxKQotICAgICAgICB7IH0KLQotICAgICAgICBFbGVtZW50KiBlbGVtZW50IHsgbnVsbHB0
ciB9OwotICAgICAgICB1bnNpZ25lZCBjb3VudCB7IDAgfTsKLSAgICAgICAgVmVjdG9yPEVsZW1l
bnQqPiBvcmRlcmVkTGlzdDsKLSNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklU
WV9BU1NFUlRJT05TKQotICAgICAgICBIYXNoU2V0PEVsZW1lbnQqPiByZWdpc3RlcmVkRWxlbWVu
dHM7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IEF0b21pY1N0
cmluZ0ltcGwqLCBNYXBFbnRyeT4gTWFwOwotCi0gICAgbXV0YWJsZSBNYXAgbV9tYXA7Ci19Owot
Ci1pbmxpbmUgYm9vbCBEb2N1bWVudE9yZGVyZWRNYXA6OmNvbnRhaW5zU2luZ2xlKGNvbnN0IEF0
b21pY1N0cmluZ0ltcGwmIGlkKSBjb25zdAotewotICAgIGF1dG8gaXQgPSBtX21hcC5maW5kKCZp
ZCk7Ci0gICAgcmV0dXJuIGl0ICE9IG1fbWFwLmVuZCgpICYmIGl0LT52YWx1ZS5jb3VudCA9PSAx
OwotfQotCi1pbmxpbmUgYm9vbCBEb2N1bWVudE9yZGVyZWRNYXA6OmNvbnRhaW5zKGNvbnN0IEF0
b21pY1N0cmluZ0ltcGwmIGlkKSBjb25zdAotewotICAgIHJldHVybiBtX21hcC5jb250YWlucygm
aWQpOwotfQotCi1pbmxpbmUgYm9vbCBEb2N1bWVudE9yZGVyZWRNYXA6OmNvbnRhaW5zTXVsdGlw
bGUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYgaWQpIGNvbnN0Ci17Ci0gICAgYXV0byBpdCA9IG1f
bWFwLmZpbmQoJmlkKTsKLSAgICByZXR1cm4gaXQgIT0gbV9tYXAuZW5kKCkgJiYgaXQtPnZhbHVl
LmNvdW50ID4gMTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5oCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRl
ZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVk
RXZlbnQuY3BwCShyZXZpc2lvbiAyMzEzNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VS
ZWxhdGVkRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTW91c2VSZWxhdGVkRXZlbnQuaCIKIAorI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCShy
ZXZpc2lvbiAyMzEzNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIFRy
ZWVTY29wZTo6Z2V0QWwKIHZvaWQgVHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZChjb25zdCBBdG9t
aWNTdHJpbmdJbXBsJiBlbGVtZW50SWQsIEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgbm90aWZ5T2Jz
ZXJ2ZXJzKQogewogICAgIGlmICghbV9lbGVtZW50c0J5SWQpCi0gICAgICAgIG1fZWxlbWVudHNC
eUlkID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudE9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1f
ZWxlbWVudHNCeUlkID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwog
ICAgIG1fZWxlbWVudHNCeUlkLT5hZGQoZWxlbWVudElkLCBlbGVtZW50LCAqdGhpcyk7CiAgICAg
aWYgKG5vdGlmeU9ic2VydmVycykKICAgICAgICAgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkt
Pm5vdGlmeU9ic2VydmVycyhlbGVtZW50SWQpOwpAQCAtMTY4LDcgKzE2OCw3IEBAIEVsZW1lbnQq
IFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5TmFtZShjb24KIHZvaWQgVHJlZVNjb3BlOjphZGRFbGVt
ZW50QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5hbWUsIEVsZW1lbnQmIGVsZW1lbnQp
CiB7CiAgICAgaWYgKCFtX2VsZW1lbnRzQnlOYW1lKQotICAgICAgICBtX2VsZW1lbnRzQnlOYW1l
ID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudE9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1fZWxl
bWVudHNCeU5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAg
ICAgbV9lbGVtZW50c0J5TmFtZS0+YWRkKG5hbWUsIGVsZW1lbnQsICp0aGlzKTsKIH0KIApAQCAt
MjM5LDcgKzIzOSw3IEBAIHZvaWQgVHJlZVNjb3BlOjphZGRJbWFnZU1hcChIVE1MTWFwRWxlbWUK
ICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1faW1hZ2VNYXBzQnlO
YW1lKQotICAgICAgICBtX2ltYWdlTWFwc0J5TmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1l
bnRPcmRlcmVkTWFwPigpOworICAgICAgICBtX2ltYWdlTWFwc0J5TmFtZSA9IHN0ZDo6bWFrZV91
bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICBtX2ltYWdlTWFwc0J5TmFtZS0+YWRk
KCpuYW1lLCBpbWFnZU1hcCwgKnRoaXMpOwogfQogCkBAIC0yNjMsNyArMjYzLDcgQEAgSFRNTE1h
cEVsZW1lbnQqIFRyZWVTY29wZTo6Z2V0SW1hZ2VNYXAoYwogdm9pZCBUcmVlU2NvcGU6OmFkZElt
YWdlRWxlbWVudEJ5VXNlbWFwKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5hbWUsIEhUTUxJbWFn
ZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX2ltYWdlc0J5VXNlbWFwKQotICAgICAg
ICBtX2ltYWdlc0J5VXNlbWFwID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudE9yZGVyZWRNYXA+
KCk7CisgICAgICAgIG1faW1hZ2VzQnlVc2VtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29w
ZU9yZGVyZWRNYXA+KCk7CiAgICAgcmV0dXJuIG1faW1hZ2VzQnlVc2VtYXAtPmFkZChuYW1lLCBl
bGVtZW50LCAqdGhpcyk7CiB9CiAKQEAgLTMwMCw3ICszMDAsNyBAQCBIVE1MTGFiZWxFbGVtZW50
KiBUcmVlU2NvcGU6OmxhYmVsRWxlbWVuCiAKICAgICBpZiAoIW1fbGFiZWxzQnlGb3JBdHRyaWJ1
dGUpIHsKICAgICAgICAgLy8gUG9wdWxhdGUgdGhlIG1hcCBvbiBmaXJzdCBhY2Nlc3MuCi0gICAg
ICAgIG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUgPSBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50T3Jk
ZXJlZE1hcD4oKTsKKyAgICAgICAgbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKIAogICAgICAgICBmb3IgKGF1dG8mIGxhYmVs
IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTExhYmVsRWxlbWVudD4obV9yb290Tm9kZSkpIHsKICAg
ICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9yVmFsdWUgPSBsYWJlbC5hdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGZvckF0dHIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUu
aAkocmV2aXNpb24gMjMxMzc4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiRG9jdW1lbnRPcmRlcmVkTWFwLmgiCisjaW5jbHVkZSAiVHJlZVNjb3BlT3JkZXJlZE1hcC5o
IgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTEyNiwxMSArMTI2LDExIEBAIHByaXZhdGU6CiAgICAgc3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxEb2N1bWVudD4gbV9kb2N1bWVudFNjb3BlOwogICAgIFRyZWVTY29w
ZSogbV9wYXJlbnRUcmVlU2NvcGU7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9jdW1lbnRPcmRl
cmVkTWFwPiBtX2VsZW1lbnRzQnlJZDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9jdW1lbnRPcmRl
cmVkTWFwPiBtX2VsZW1lbnRzQnlOYW1lOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEb2N1bWVudE9y
ZGVyZWRNYXA+IG1faW1hZ2VNYXBzQnlOYW1lOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEb2N1bWVu
dE9yZGVyZWRNYXA+IG1faW1hZ2VzQnlVc2VtYXA7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERvY3Vt
ZW50T3JkZXJlZE1hcD4gbV9sYWJlbHNCeUZvckF0dHJpYnV0ZTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8VHJlZVNjb3BlT3JkZXJlZE1hcD4gbV9lbGVtZW50c0J5SWQ7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFRyZWVTY29wZU9yZGVyZWRNYXA+IG1fZWxlbWVudHNCeU5hbWU7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFRyZWVTY29wZU9yZGVyZWRNYXA+IG1faW1hZ2VNYXBzQnlOYW1lOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxUcmVlU2NvcGVPcmRlcmVkTWFwPiBtX2ltYWdlc0J5VXNlbWFwOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxUcmVlU2NvcGVPcmRlcmVkTWFwPiBtX2xhYmVsc0J5Rm9yQXR0cmlidXRl
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4gbV9pZFRh
cmdldE9ic2VydmVyUmVnaXN0cnk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZU9yZGVyZWRNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGVPcmRlcmVkTWFwLmNwcAkocmV2aXNpb24gMjMxMzc4KQkoZnJvbSBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcDoyMzEzNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlT3JkZXJlZE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJEb2N1bWVudE9yZGVyZWRNYXAuaCIKKworI2luY2x1ZGUgIkNvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSFRNTElt
YWdlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MTWFwRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lQ29sbGVjdGlvbi5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK3ZvaWQgRG9j
dW1lbnRPcmRlcmVkTWFwOjpjbGVhcigpCit7CisgICAgbV9tYXAuY2xlYXIoKTsKK30KKwordm9p
ZCBEb2N1bWVudE9yZGVyZWRNYXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRyZWVTY29wZSYgdHJlZVNjb3BlKQoreworICAgIFJFTEVB
U0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmVsZW1lbnQudHJlZVNjb3BlKCkg
PT0gJnRyZWVTY29wZSk7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04odHJl
ZVNjb3BlLnJvb3ROb2RlKCkuY29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oJmVsZW1lbnQpKTsK
KworICAgIGlmICghZWxlbWVudC5pc0luVHJlZVNjb3BlKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX21hcC5lbnN1cmUoJmtleSwgWyZlbGVtZW50
XSB7CisgICAgICAgIHJldHVybiBNYXBFbnRyeSgmZWxlbWVudCk7CisgICAgfSk7CisgICAgTWFw
RW50cnkmIGVudHJ5ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKworI2lmICFBU1NFUlRf
RElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCisgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oIWVudHJ5LnJlZ2lzdGVyZWRFbGVtZW50cy5jb250YWlucygm
ZWxlbWVudCkpOworICAgIGVudHJ5LnJlZ2lzdGVyZWRFbGVtZW50cy5hZGQoJmVsZW1lbnQpOwor
I2VuZGlmCisKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybjsK
KworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZW50cnkuY291
bnQpOworICAgIGVudHJ5LmVsZW1lbnQgPSBudWxscHRyOworICAgIGVudHJ5LmNvdW50Kys7Cisg
ICAgZW50cnkub3JkZXJlZExpc3QuY2xlYXIoKTsKK30KKwordm9pZCBEb2N1bWVudE9yZGVyZWRN
YXA6OnJlbW92ZShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIEVsZW1lbnQmIGVsZW1lbnQp
Cit7CisgICAgbV9tYXAuY2hlY2tDb25zaXN0ZW5jeSgpOworICAgIGF1dG8gaXQgPSBtX21hcC5m
aW5kKCZrZXkpOworCisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihpdCAhPSBtX21hcC5lbmQoKSk7CisKKyAgICBNYXBFbnRyeSYgZW50cnkgPSBpdC0+dmFsdWU7
CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZW50cnkucmVnaXN0ZXJlZEVs
ZW1lbnRzLnJlbW92ZSgmZWxlbWVudCkpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oZW50cnkuY291bnQpOworICAgIGlmIChlbnRyeS5jb3VudCA9PSAxKSB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWVudHJ5
LmVsZW1lbnQgfHwgZW50cnkuZWxlbWVudCA9PSAmZWxlbWVudCk7CisgICAgICAgIG1fbWFwLnJl
bW92ZShpdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGVudHJ5LmVsZW1lbnQgPT0gJmVs
ZW1lbnQpCisgICAgICAgICAgICBlbnRyeS5lbGVtZW50ID0gbnVsbHB0cjsKKyAgICAgICAgZW50
cnkuY291bnQtLTsKKyAgICAgICAgZW50cnkub3JkZXJlZExpc3QuY2xlYXIoKTsgLy8gRklYTUU6
IFJlbW92ZSB0aGUgZWxlbWVudCBpbnN0ZWFkIGlmIHRoZXJlIGFyZSBvbmx5IGZldyBpdGVtcyBs
ZWZ0LgorICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEtleU1hdGNoaW5nRnVuY3Rpb24+
CitpbmxpbmUgRWxlbWVudCogRG9jdW1lbnRPcmRlcmVkTWFwOjpnZXQoY29uc3QgQXRvbWljU3Ry
aW5nSW1wbCYga2V5LCBjb25zdCBUcmVlU2NvcGUmIHNjb3BlLCBjb25zdCBLZXlNYXRjaGluZ0Z1
bmN0aW9uJiBrZXlNYXRjaGVzKSBjb25zdAoreworICAgIG1fbWFwLmNoZWNrQ29uc2lzdGVuY3ko
KTsKKworICAgIGF1dG8gaXQgPSBtX21hcC5maW5kKCZrZXkpOworICAgIGlmIChpdCA9PSBtX21h
cC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBNYXBFbnRyeSYgZW50cnkg
PSBpdC0+dmFsdWU7CisgICAgQVNTRVJUKGVudHJ5LmNvdW50KTsKKyAgICBpZiAoZW50cnkuZWxl
bWVudCkgeworICAgICAgICBhdXRvJiBlbGVtZW50ID0gKmVudHJ5LmVsZW1lbnQ7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmVsZW1lbnQudHJlZVNj
b3BlKCkgPT0gJnNjb3BlKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oZW50cnkucmVnaXN0ZXJlZEVsZW1lbnRzLmNvbnRhaW5zKCZlbGVtZW50KSk7CisgICAgICAg
IHJldHVybiAmZWxlbWVudDsKKyAgICB9CisKKyAgICAvLyBXZSBrbm93IHRoZXJlJ3MgYXQgbGVh
c3Qgb25lIG5vZGUgdGhhdCBtYXRjaGVzOyBpdGVyYXRlIHRvIGZpbmQgdGhlIGZpcnN0IG9uZS4K
KyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PihzY29w
ZS5yb290Tm9kZSgpKSkgeworICAgICAgICBpZiAoIWtleU1hdGNoZXMoa2V5LCBlbGVtZW50KSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBlbnRyeS5lbGVtZW50ID0gJmVsZW1lbnQ7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmVsZW1l
bnQudHJlZVNjb3BlKCkgPT0gJnNjb3BlKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oZW50cnkucmVnaXN0ZXJlZEVsZW1lbnRzLmNvbnRhaW5zKGVudHJ5LmVsZW1l
bnQpKTsKKyAgICAgICAgcmV0dXJuICZlbGVtZW50OworICAgIH0KKworI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICAvLyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQgbWF5IGNhbGwgZ2V0RWxlbWVudEJ5
SWQgdG8gZmluZCBpdHMgb3duZXIgZm9ybSBpbiB0aGUgbWlkZGxlIG9mIGEgdHJlZSByZW1vdmFs
LgorICAgIGlmIChhdXRvKiBjdXJyZW50U2NvcGUgPSBDb250YWluZXJDaGlsZFJlbW92YWxTY29w
ZTo6Y3VycmVudFNjb3BlKCkpIHsKKyAgICAgICAgQVNTRVJUKCZzY29wZS5yb290Tm9kZSgpID09
ICZjdXJyZW50U2NvcGUtPnBhcmVudE9mUmVtb3ZlZFRyZWUoKS5yb290Tm9kZSgpKTsKKyAgICAg
ICAgTm9kZSYgcmVtb3ZlZFRyZWUgPSBjdXJyZW50U2NvcGUtPnJlbW92ZWRDaGlsZCgpOworICAg
ICAgICBBU1NFUlQoaXM8Q29udGFpbmVyTm9kZT4ocmVtb3ZlZFRyZWUpKTsKKyAgICAgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oZG93bmNhc3Q8Q29u
dGFpbmVyTm9kZT4ocmVtb3ZlZFRyZWUpKSkgeworICAgICAgICAgICAgaWYgKCFrZXlNYXRjaGVz
KGtleSwgZWxlbWVudCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBi
b29sIHJlbW92ZWRGcm9tQW5jZXN0b3JIYXNOb3RCZWVuQ2FsbGVkWWV0ID0gZWxlbWVudC5pc0Nv
bm5lY3RlZCgpOworICAgICAgICAgICAgQVNTRVJUKHJlbW92ZWRGcm9tQW5jZXN0b3JIYXNOb3RC
ZWVuQ2FsbGVkWWV0KTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9Cisg
ICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworRWxlbWVudCogRG9jdW1lbnRPcmRlcmVkTWFwOjpnZXRFbGVtZW50QnlJZChj
b25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0IFRyZWVTY29wZSYgc2NvcGUpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGdldChrZXksIHNjb3BlLCBbXSAoY29uc3QgQXRvbWljU3RyaW5nSW1w
bCYga2V5LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7CisgICAgICAgIHJldHVybiBlbGVtZW50
LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09ICZrZXk7CisgICAgfSk7Cit9CisKK0VsZW1lbnQq
IERvY3VtZW50T3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5TmFtZShjb25zdCBBdG9taWNTdHJpbmdJ
bXBsJiBrZXksIGNvbnN0IFRyZWVTY29wZSYgc2NvcGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdl
dChrZXksIHNjb3BlLCBbXSAoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBFbGVt
ZW50JiBlbGVtZW50KSB7CisgICAgICAgIHJldHVybiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUo
KS5pbXBsKCkgPT0gJmtleTsKKyAgICB9KTsKK30KKworSFRNTE1hcEVsZW1lbnQqIERvY3VtZW50
T3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5TWFwTmFtZShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBr
ZXksIGNvbnN0IFRyZWVTY29wZSYgc2NvcGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRvd25jYXN0
PEhUTUxNYXBFbGVtZW50PihnZXQoa2V5LCBzY29wZSwgW10gKGNvbnN0IEF0b21pY1N0cmluZ0lt
cGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeworICAgICAgICByZXR1cm4gaXM8SFRN
TE1hcEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxNYXBFbGVtZW50PihlbGVtZW50
KS5nZXROYW1lKCkuaW1wbCgpID09ICZrZXk7CisgICAgfSkpOworfQorCitIVE1MSW1hZ2VFbGVt
ZW50KiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeVVzZW1hcChjb25zdCBBdG9taWNT
dHJpbmdJbXBsJiBrZXksIGNvbnN0IFRyZWVTY29wZSYgc2NvcGUpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGdldChrZXksIHNjb3BlLCBbXSAoY29uc3Qg
QXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7CisgICAgICAg
IC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpY2F0aW9uIHNheXMgd2Ugc2hvdWxkIG1hdGNoIGJvdGgg
aW1hZ2UgYW5kIG9iamVjdCBlbGVtZW50cy4KKyAgICAgICAgcmV0dXJuIGlzPEhUTUxJbWFnZUVs
ZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpLm1h
dGNoZXNVc2VtYXAoa2V5KTsKKyAgICB9KSk7Cit9CisKK0hUTUxMYWJlbEVsZW1lbnQqIERvY3Vt
ZW50T3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5TGFiZWxGb3JBdHRyaWJ1dGUoY29uc3QgQXRvbWlj
U3RyaW5nSW1wbCYga2V5LCBjb25zdCBUcmVlU2NvcGUmIHNjb3BlKSBjb25zdAoreworICAgIHJl
dHVybiBkb3duY2FzdDxIVE1MTGFiZWxFbGVtZW50PihnZXQoa2V5LCBzY29wZSwgW10gKGNvbnN0
IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeworICAgICAg
ICByZXR1cm4gaXM8SFRNTExhYmVsRWxlbWVudD4oZWxlbWVudCkgJiYgZWxlbWVudC5hdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZvckF0dHIpLmltcGwoKSA9PSAma2V5OworICAgIH0p
KTsKK30KKworRWxlbWVudCogRG9jdW1lbnRPcmRlcmVkTWFwOjpnZXRFbGVtZW50QnlXaW5kb3dO
YW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBUcmVlU2NvcGUmIHNj
b3BlKSBjb25zdAoreworICAgIHJldHVybiBnZXQoa2V5LCBzY29wZSwgW10gKGNvbnN0IEF0b21p
Y1N0cmluZ0ltcGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeworICAgICAgICByZXR1
cm4gV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGVsZW1lbnQsICZrZXkpOwor
ICAgIH0pOworfQorCitFbGVtZW50KiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeURv
Y3VtZW50TmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3QgVHJlZVNj
b3BlJiBzY29wZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0KGtleSwgc2NvcGUsIFtdIChjb25z
dCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsKKyAgICAg
ICAgcmV0dXJuIERvY3VtZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGVsZW1lbnQs
ICZrZXkpOworICAgIH0pOworfQorCitjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBEb2N1bWVudE9y
ZGVyZWRNYXA6OmdldEFsbEVsZW1lbnRzQnlJZChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXks
IGNvbnN0IFRyZWVTY29wZSYgc2NvcGUpIGNvbnN0Cit7CisgICAgbV9tYXAuY2hlY2tDb25zaXN0
ZW5jeSgpOworCisgICAgYXV0byBpdCA9IG1fbWFwLmZpbmQoJmtleSk7CisgICAgaWYgKGl0ID09
IG1fbWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIE1hcEVudHJ5JiBl
bnRyeSA9IGl0LT52YWx1ZTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGVudHJ5LmNvdW50KTsKKworICAgIGlmIChlbnRyeS5vcmRlcmVkTGlzdC5pc0VtcHR5
KCkpIHsKKyAgICAgICAgZW50cnkub3JkZXJlZExpc3QucmVzZXJ2ZUNhcGFjaXR5KGVudHJ5LmNv
dW50KTsKKyAgICAgICAgYXV0byBlbGVtZW50RGVzY2FuZGVudHMgPSBkZXNjZW5kYW50c09mVHlw
ZTxFbGVtZW50PihzY29wZS5yb290Tm9kZSgpKTsKKyAgICAgICAgYXV0byBpdCA9IGVudHJ5LmVs
ZW1lbnQgPyBlbGVtZW50RGVzY2FuZGVudHMuYmVnaW5BdCgqZW50cnkuZWxlbWVudCkgOiBlbGVt
ZW50RGVzY2FuZGVudHMuYmVnaW4oKTsKKyAgICAgICAgYXV0byBlbmQgPSBlbGVtZW50RGVzY2Fu
ZGVudHMuZW5kKCk7CisgICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
ICAgIGF1dG8mIGVsZW1lbnQgPSAqaXQ7CisgICAgICAgICAgICBpZiAoZWxlbWVudC5nZXRJZEF0
dHJpYnV0ZSgpLmltcGwoKSAhPSAma2V5KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgZW50cnkub3JkZXJlZExpc3QuYXBwZW5kKCZlbGVtZW50KTsKKyAgICAgICAgfQor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGVudHJ5Lm9y
ZGVyZWRMaXN0LnNpemUoKSA9PSBlbnRyeS5jb3VudCk7CisgICAgfQorCisgICAgcmV0dXJuICZl
bnRyeS5vcmRlcmVkTGlzdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZU9yZGVyZWRNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGVPcmRlcmVkTWFwLmNwcAkocmV2aXNpb24gMjMxMzc4KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZU9yZGVyZWRNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRvY3VtZW50T3JkZXJl
ZE1hcC5oIgorI2luY2x1ZGUgIlRyZWVTY29wZU9yZGVyZWRNYXAuaCIKIAogI2luY2x1ZGUgIkNv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCkBA
IC00MiwxMiArNDIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogCi12b2lkIERvY3VtZW50T3JkZXJlZE1hcDo6Y2xlYXIoKQordm9pZCBUcmVl
U2NvcGVPcmRlcmVkTWFwOjpjbGVhcigpCiB7CiAgICAgbV9tYXAuY2xlYXIoKTsKIH0KIAotdm9p
ZCBEb2N1bWVudE9yZGVyZWRNYXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRyZWVTY29wZSYgdHJlZVNjb3BlKQordm9pZCBUcmVlU2Nv
cGVPcmRlcmVkTWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBUcmVlU2NvcGUmIHRyZWVTY29wZSkKIHsKICAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZlbGVtZW50LnRyZWVTY29wZSgpID09ICZ0cmVl
U2NvcGUpOwogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHRyZWVTY29wZS5y
b290Tm9kZSgpLmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKCZlbGVtZW50KSk7CkBAIC03Myw3
ICs3Myw3IEBAIHZvaWQgRG9jdW1lbnRPcmRlcmVkTWFwOjphZGQoY29uc3QgQXRvbWkKICAgICBl
bnRyeS5vcmRlcmVkTGlzdC5jbGVhcigpOwogfQogCi12b2lkIERvY3VtZW50T3JkZXJlZE1hcDo6
cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgRWxlbWVudCYgZWxlbWVudCkKK3Zv
aWQgVHJlZVNjb3BlT3JkZXJlZE1hcDo6cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtl
eSwgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBtX21hcC5jaGVja0NvbnNpc3RlbmN5KCk7CiAg
ICAgYXV0byBpdCA9IG1fbWFwLmZpbmQoJmtleSk7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgRG9j
dW1lbnRPcmRlcmVkTWFwOjpyZW1vdmUoY29uc3QgQXQKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IEtleU1hdGNoaW5nRnVuY3Rpb24+Ci1pbmxpbmUgRWxlbWVudCogRG9jdW1lbnRPcmRlcmVkTWFw
OjpnZXQoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBUcmVlU2NvcGUmIHNjb3Bl
LCBjb25zdCBLZXlNYXRjaGluZ0Z1bmN0aW9uJiBrZXlNYXRjaGVzKSBjb25zdAoraW5saW5lIEVs
ZW1lbnQqIFRyZWVTY29wZU9yZGVyZWRNYXA6OmdldChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBr
ZXksIGNvbnN0IFRyZWVTY29wZSYgc2NvcGUsIGNvbnN0IEtleU1hdGNoaW5nRnVuY3Rpb24mIGtl
eU1hdGNoZXMpIGNvbnN0CiB7CiAgICAgbV9tYXAuY2hlY2tDb25zaXN0ZW5jeSgpOwogCkBAIC0x
NDIsMjggKzE0MiwyOCBAQCBpbmxpbmUgRWxlbWVudCogRG9jdW1lbnRPcmRlcmVkTWFwOjpnZXQo
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUVsZW1lbnQqIERvY3VtZW50T3JkZXJlZE1hcDo6
Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBUcmVlU2Nv
cGUmIHNjb3BlKSBjb25zdAorRWxlbWVudCogVHJlZVNjb3BlT3JkZXJlZE1hcDo6Z2V0RWxlbWVu
dEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBUcmVlU2NvcGUmIHNjb3Bl
KSBjb25zdAogewogICAgIHJldHVybiBnZXQoa2V5LCBzY29wZSwgW10gKGNvbnN0IEF0b21pY1N0
cmluZ0ltcGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkgewogICAgICAgICByZXR1cm4g
ZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSAma2V5OwogICAgIH0pOwogfQogCi1F
bGVtZW50KiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbWlj
U3RyaW5nSW1wbCYga2V5LCBjb25zdCBUcmVlU2NvcGUmIHNjb3BlKSBjb25zdAorRWxlbWVudCog
VHJlZVNjb3BlT3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5TmFtZShjb25zdCBBdG9taWNTdHJpbmdJ
bXBsJiBrZXksIGNvbnN0IFRyZWVTY29wZSYgc2NvcGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdl
dChrZXksIHNjb3BlLCBbXSAoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBFbGVt
ZW50JiBlbGVtZW50KSB7CiAgICAgICAgIHJldHVybiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUo
KS5pbXBsKCkgPT0gJmtleTsKICAgICB9KTsKIH0KIAotSFRNTE1hcEVsZW1lbnQqIERvY3VtZW50
T3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5TWFwTmFtZShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBr
ZXksIGNvbnN0IFRyZWVTY29wZSYgc2NvcGUpIGNvbnN0CitIVE1MTWFwRWxlbWVudCogVHJlZVNj
b3BlT3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5TWFwTmFtZShjb25zdCBBdG9taWNTdHJpbmdJbXBs
JiBrZXksIGNvbnN0IFRyZWVTY29wZSYgc2NvcGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvd25j
YXN0PEhUTUxNYXBFbGVtZW50PihnZXQoa2V5LCBzY29wZSwgW10gKGNvbnN0IEF0b21pY1N0cmlu
Z0ltcGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkgewogICAgICAgICByZXR1cm4gaXM8
SFRNTE1hcEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxNYXBFbGVtZW50PihlbGVt
ZW50KS5nZXROYW1lKCkuaW1wbCgpID09ICZrZXk7CiAgICAgfSkpOwogfQogCi1IVE1MSW1hZ2VF
bGVtZW50KiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeVVzZW1hcChjb25zdCBBdG9t
aWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0IFRyZWVTY29wZSYgc2NvcGUpIGNvbnN0CitIVE1MSW1h
Z2VFbGVtZW50KiBUcmVlU2NvcGVPcmRlcmVkTWFwOjpnZXRFbGVtZW50QnlVc2VtYXAoY29uc3Qg
QXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBUcmVlU2NvcGUmIHNjb3BlKSBjb25zdAogewog
ICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihnZXQoa2V5LCBzY29wZSwgW10g
KGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkgewog
ICAgICAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWNhdGlvbiBzYXlzIHdlIHNob3VsZCBtYXRj
aCBib3RoIGltYWdlIGFuZCBvYmplY3QgZWxlbWVudHMuCkBAIC0xNzEsMjggKzE3MSwyOCBAQCBI
VE1MSW1hZ2VFbGVtZW50KiBEb2N1bWVudE9yZGVyZWRNYXA6OmdlCiAgICAgfSkpOwogfQogCi1I
VE1MTGFiZWxFbGVtZW50KiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeUxhYmVsRm9y
QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3QgVHJlZVNjb3BlJiBz
Y29wZSkgY29uc3QKK0hUTUxMYWJlbEVsZW1lbnQqIFRyZWVTY29wZU9yZGVyZWRNYXA6OmdldEVs
ZW1lbnRCeUxhYmVsRm9yQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29u
c3QgVHJlZVNjb3BlJiBzY29wZSkgY29uc3QKIHsKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTExh
YmVsRWxlbWVudD4oZ2V0KGtleSwgc2NvcGUsIFtdIChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBr
ZXksIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsKICAgICAgICAgcmV0dXJuIGlzPEhUTUxMYWJl
bEVsZW1lbnQ+KGVsZW1lbnQpICYmIGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihmb3JBdHRyKS5pbXBsKCkgPT0gJmtleTsKICAgICB9KSk7CiB9CiAKLUVsZW1lbnQqIERv
Y3VtZW50T3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5V2luZG93TmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZ0ltcGwmIGtleSwgY29uc3QgVHJlZVNjb3BlJiBzY29wZSkgY29uc3QKK0VsZW1lbnQq
IFRyZWVTY29wZU9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeVdpbmRvd05hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0IFRyZWVTY29wZSYgc2NvcGUpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGdldChrZXksIHNjb3BlLCBbXSAoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5
LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7CiAgICAgICAgIHJldHVybiBXaW5kb3dOYW1lQ29s
bGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMoZWxlbWVudCwgJmtleSk7CiAgICAgfSk7CiB9CiAKLUVs
ZW1lbnQqIERvY3VtZW50T3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5RG9jdW1lbnROYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBUcmVlU2NvcGUmIHNjb3BlKSBjb25z
dAorRWxlbWVudCogVHJlZVNjb3BlT3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5RG9jdW1lbnROYW1l
ZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBUcmVlU2NvcGUmIHNjb3Bl
KSBjb25zdAogewogICAgIHJldHVybiBnZXQoa2V5LCBzY29wZSwgW10gKGNvbnN0IEF0b21pY1N0
cmluZ0ltcGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkgewogICAgICAgICByZXR1cm4g
RG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMoZWxlbWVudCwgJmtleSk7CiAg
ICAgfSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIERvY3VtZW50T3JkZXJlZE1hcDo6
Z2V0QWxsRWxlbWVudHNCeUlkKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3QgVHJl
ZVNjb3BlJiBzY29wZSkgY29uc3QKK2NvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIFRyZWVTY29wZU9y
ZGVyZWRNYXA6OmdldEFsbEVsZW1lbnRzQnlJZChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXks
IGNvbnN0IFRyZWVTY29wZSYgc2NvcGUpIGNvbnN0CiB7CiAgICAgbV9tYXAuY2hlY2tDb25zaXN0
ZW5jeSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlT3JkZXJlZE1hcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVPcmRlcmVkTWFwLmgJ
KHJldmlzaW9uIDIzMTM3OCkJKGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJl
ZE1hcC5oOjIzMTM3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVPcmRlcmVkTWFw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgRWxlbWVudDsKK2NsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CitjbGFzcyBIVE1MTGFiZWxF
bGVtZW50OworY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CitjbGFzcyBUcmVlU2NvcGU7CisKK2NsYXNz
IERvY3VtZW50T3JkZXJlZE1hcCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgdm9pZCBhZGQoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYsIEVsZW1lbnQmLCBjb25z
dCBUcmVlU2NvcGUmKTsKKyAgICB2b2lkIHJlbW92ZShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiwg
RWxlbWVudCYpOworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIGJvb2wgY29udGFpbnMoY29uc3Qg
QXRvbWljU3RyaW5nSW1wbCYpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNTaW5nbGUoY29uc3Qg
QXRvbWljU3RyaW5nSW1wbCYpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNNdWx0aXBsZShjb25z
dCBBdG9taWNTdHJpbmdJbXBsJikgY29uc3Q7CisKKyAgICAvLyBjb25jcmV0ZSBpbnN0YW50aWF0
aW9ucyBvZiB0aGUgZ2V0PD4oKSBtZXRob2QgdGVtcGxhdGUKKyAgICBFbGVtZW50KiBnZXRFbGVt
ZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiwgY29uc3QgVHJlZVNjb3BlJikgY29uc3Q7
CisgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5TmFtZShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiwg
Y29uc3QgVHJlZVNjb3BlJikgY29uc3Q7CisgICAgSFRNTE1hcEVsZW1lbnQqIGdldEVsZW1lbnRC
eU1hcE5hbWUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYsIGNvbnN0IFRyZWVTY29wZSYpIGNvbnN0
OworICAgIEhUTUxJbWFnZUVsZW1lbnQqIGdldEVsZW1lbnRCeVVzZW1hcChjb25zdCBBdG9taWNT
dHJpbmdJbXBsJiwgY29uc3QgVHJlZVNjb3BlJikgY29uc3Q7CisgICAgSFRNTExhYmVsRWxlbWVu
dCogZ2V0RWxlbWVudEJ5TGFiZWxGb3JBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYs
IGNvbnN0IFRyZWVTY29wZSYpIGNvbnN0OworICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeVdpbmRv
d05hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiwgY29uc3QgVHJlZVNjb3BlJikgY29u
c3Q7CisgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5RG9jdW1lbnROYW1lZEl0ZW0oY29uc3QgQXRv
bWljU3RyaW5nSW1wbCYsIGNvbnN0IFRyZWVTY29wZSYpIGNvbnN0OworCisgICAgY29uc3QgVmVj
dG9yPEVsZW1lbnQqPiogZ2V0QWxsRWxlbWVudHNCeUlkKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwm
LCBjb25zdCBUcmVlU2NvcGUmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgS2V5TWF0Y2hpbmdGdW5jdGlvbj4KKyAgICBFbGVtZW50KiBnZXQoY29uc3QgQXRvbWlj
U3RyaW5nSW1wbCYsIGNvbnN0IFRyZWVTY29wZSYsIGNvbnN0IEtleU1hdGNoaW5nRnVuY3Rpb24m
KSBjb25zdDsKKworICAgIHN0cnVjdCBNYXBFbnRyeSB7CisgICAgICAgIE1hcEVudHJ5KCkgeyB9
CisgICAgICAgIGV4cGxpY2l0IE1hcEVudHJ5KEVsZW1lbnQqIGZpcnN0RWxlbWVudCkKKyAgICAg
ICAgICAgIDogZWxlbWVudChmaXJzdEVsZW1lbnQpCisgICAgICAgICAgICAsIGNvdW50KDEpCisg
ICAgICAgIHsgfQorCisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgeyBudWxscHRyIH07CisgICAg
ICAgIHVuc2lnbmVkIGNvdW50IHsgMCB9OworICAgICAgICBWZWN0b3I8RWxlbWVudCo+IG9yZGVy
ZWRMaXN0OworI2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElP
TlMpCisgICAgICAgIEhhc2hTZXQ8RWxlbWVudCo+IHJlZ2lzdGVyZWRFbGVtZW50czsKKyNlbmRp
ZgorICAgIH07CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQXRvbWljU3RyaW5nSW1wbCos
IE1hcEVudHJ5PiBNYXA7CisKKyAgICBtdXRhYmxlIE1hcCBtX21hcDsKK307CisKK2lubGluZSBi
b29sIERvY3VtZW50T3JkZXJlZE1hcDo6Y29udGFpbnNTaW5nbGUoY29uc3QgQXRvbWljU3RyaW5n
SW1wbCYgaWQpIGNvbnN0Cit7CisgICAgYXV0byBpdCA9IG1fbWFwLmZpbmQoJmlkKTsKKyAgICBy
ZXR1cm4gaXQgIT0gbV9tYXAuZW5kKCkgJiYgaXQtPnZhbHVlLmNvdW50ID09IDE7Cit9CisKK2lu
bGluZSBib29sIERvY3VtZW50T3JkZXJlZE1hcDo6Y29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5n
SW1wbCYgaWQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKCZpZCk7Cit9CisK
K2lubGluZSBib29sIERvY3VtZW50T3JkZXJlZE1hcDo6Y29udGFpbnNNdWx0aXBsZShjb25zdCBB
dG9taWNTdHJpbmdJbXBsJiBpZCkgY29uc3QKK3sKKyAgICBhdXRvIGl0ID0gbV9tYXAuZmluZCgm
aWQpOworICAgIHJldHVybiBpdCAhPSBtX21hcC5lbmQoKSAmJiBpdC0+dmFsdWUuY291bnQgPiAx
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmgKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3Zu
OmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZU9yZGVyZWRNYXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlT3JkZXJlZE1hcC5oCShy
ZXZpc2lvbiAyMzEzNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlT3JkZXJlZE1h
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEhUTUxMYWJlbEVsZW1l
bnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIGNsYXNzIFRyZWVTY29wZTsKIAotY2xhc3MgRG9j
dW1lbnRPcmRlcmVkTWFwIHsKK2NsYXNzIFRyZWVTY29wZU9yZGVyZWRNYXAgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZvaWQgYWRkKGNvbnN0IEF0b21pY1N0
cmluZ0ltcGwmLCBFbGVtZW50JiwgY29uc3QgVHJlZVNjb3BlJik7CkBAIC04OSwxOCArODksMTgg
QEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIE1hcCBtX21hcDsKIH07CiAKLWlubGluZSBib29sIERv
Y3VtZW50T3JkZXJlZE1hcDo6Y29udGFpbnNTaW5nbGUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYg
aWQpIGNvbnN0CitpbmxpbmUgYm9vbCBUcmVlU2NvcGVPcmRlcmVkTWFwOjpjb250YWluc1Npbmds
ZShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBpZCkgY29uc3QKIHsKICAgICBhdXRvIGl0ID0gbV9t
YXAuZmluZCgmaWQpOwogICAgIHJldHVybiBpdCAhPSBtX21hcC5lbmQoKSAmJiBpdC0+dmFsdWUu
Y291bnQgPT0gMTsKIH0KIAotaW5saW5lIGJvb2wgRG9jdW1lbnRPcmRlcmVkTWFwOjpjb250YWlu
cyhjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBpZCkgY29uc3QKK2lubGluZSBib29sIFRyZWVTY29w
ZU9yZGVyZWRNYXA6OmNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGlkKSBjb25zdAog
ewogICAgIHJldHVybiBtX21hcC5jb250YWlucygmaWQpOwogfQogCi1pbmxpbmUgYm9vbCBEb2N1
bWVudE9yZGVyZWRNYXA6OmNvbnRhaW5zTXVsdGlwbGUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYg
aWQpIGNvbnN0CitpbmxpbmUgYm9vbCBUcmVlU2NvcGVPcmRlcmVkTWFwOjpjb250YWluc011bHRp
cGxlKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGlkKSBjb25zdAogewogICAgIGF1dG8gaXQgPSBt
X21hcC5maW5kKCZpZCk7CiAgICAgcmV0dXJuIGl0ICE9IG1fbWFwLmVuZCgpICYmIGl0LT52YWx1
ZS5jb3VudCA+IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgJKHJldmlzaW9u
IDIzMTM3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY5LDggKzY5LDggQEAgcHJpdmF0ZToKICAgICBSZWY8RG9jdW1lbnRQYXJzZXI+
IGNyZWF0ZVBhcnNlcigpIG92ZXJyaWRlOwogICAgIFJlZjxEb2N1bWVudD4gY2xvbmVEb2N1bWVu
dFdpdGhvdXRDaGlsZHJlbigpIGNvbnN0IGZpbmFsOwogCi0gICAgRG9jdW1lbnRPcmRlcmVkTWFw
IG1fZG9jdW1lbnROYW1lZEl0ZW07Ci0gICAgRG9jdW1lbnRPcmRlcmVkTWFwIG1fd2luZG93TmFt
ZWRJdGVtOworICAgIFRyZWVTY29wZU9yZGVyZWRNYXAgbV9kb2N1bWVudE5hbWVkSXRlbTsKKyAg
ICBUcmVlU2NvcGVPcmRlcmVkTWFwIG1fd2luZG93TmFtZWRJdGVtOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>