<?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>55774</bug_id>
          
          <creation_ts>2011-03-04 08:08:41 -0800</creation_ts>
          <short_desc>Split JNIBridge.cpp/h into JavaString.h and JavaMethod.cpp/h</short_desc>
          <delta_ts>2011-03-07 10:10:25 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>55772</dependson>
          <blocked>55765</blocked>
    
    <blocked>55879</blocked>
    
    <blocked>55881</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Steve Block">steveblock</assigned_to>
          <cc>jorlow</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>362500</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-04 08:08:41 -0800</bug_when>
    <thetext>Split JNIBridge into JavaString.h and JavaM:qethod.cpp/h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362501</commentid>
    <comment_count>1</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-04 08:11:04 -0800</bug_when>
    <thetext>JNIBridge.cpp/h contains only two classes - JavaMethod and JavaString - and it would aid clarity to split these into their own classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363343</commentid>
    <comment_count>2</comment_count>
      <attachid>84945</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-07 07:53:00 -0800</bug_when>
    <thetext>Created attachment 84945
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363384</commentid>
    <comment_count>3</comment_count>
      <attachid>84945</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-07 09:54:23 -0800</bug_when>
    <thetext>Comment on attachment 84945
Patch 1

style seems good.  rubber stamp = me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363390</commentid>
    <comment_count>4</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-07 10:10:25 -0800</bug_when>
    <thetext>Committed r80472: &lt;http://trac.webkit.org/changeset/80472&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84945</attachid>
            <date>2011-03-07 07:53:00 -0800</date>
            <delta_ts>2011-03-07 09:54:22 -0800</delta_ts>
            <desc>Patch 1</desc>
            <filename>splitJniBridge.txt</filename>
            <type>text/plain</type>
            <size>36280</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA0NjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Fu
ZHJvaWQuanNjYmluZGluZ3MubWsgYi9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRpbmdz
Lm1rCmluZGV4IGU1ZmY2MDMuLjlhMmUxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Fu
ZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5qc2NiaW5k
aW5ncy5tawpAQCAtMTk4LDggKzE5OCw4IEBAIExPQ0FMX1NSQ19GSUxFUyArPSBcCiAJYnJpZGdl
L2MvY19pbnN0YW5jZS5jcHAgXAogCWJyaWRnZS9jL2NfcnVudGltZS5jcHAgXAogCWJyaWRnZS9j
L2NfdXRpbGl0eS5jcHAgXAotCWJyaWRnZS9qbmkvSk5JQnJpZGdlLmNwcCBcCiAJYnJpZGdlL2pu
aS9KTklVdGlsaXR5LmNwcCBcCisJYnJpZGdlL2puaS9KYXZhTWV0aG9kLmNwcCBcCiAJYnJpZGdl
L2puaS9Kb2JqZWN0V3JhcHBlci5jcHAgXAogCWJyaWRnZS9qbmkvanNjL0pOSUJyaWRnZUpTQy5j
cHAgXAogCWJyaWRnZS9qbmkvanNjL0pOSVV0aWxpdHlQcml2YXRlLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lkLnY4YmluZGluZ3MubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLnY4YmluZGluZ3MubWsKaW5kZXggYjIzMDAyMy4uOGNhMmM3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQW5kcm9pZC52OGJpbmRpbmdzLm1rCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0FuZHJvaWQudjhiaW5kaW5ncy5tawpAQCAtMTcyLDggKzE3Miw4IEBAIExPQ0FMX1NSQ19GSUxF
UyArPSBcCiAJYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCiAK
IExPQ0FMX1NSQ19GSUxFUyArPSBcCi0JYnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwIFwKIAlicmlk
Z2Uvam5pL0pOSVV0aWxpdHkuY3BwIFwKKwlicmlkZ2Uvam5pL0phdmFNZXRob2QuY3BwIFwKIAli
cmlkZ2Uvam5pL0pvYmplY3RXcmFwcGVyLmNwcCBcCiAJYnJpZGdlL2puaS92OC9KTklCcmlkZ2VW
OC5jcHAgXAogCWJyaWRnZS9qbmkvdjgvSk5JVXRpbGl0eVByaXZhdGUuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAyNzBmZTk5Li45NDY1ZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEt
MDMtMDcgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0IEpOSUJyaWRnZS5jcHAv
aCBpbnRvIEphdmFTdHJpbmcuaCBhbmQgSmF2YU1ldGhvZC5jcHAvaAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU3NzQKKworICAgICAgICBObyBuZXcg
dGVzdHMsIHJlZmFjdG9yaW5nIG9ubHkuCisKKyAgICAgICAgKiBBbmRyb2lkLmpzY2JpbmRpbmdz
Lm1rOgorICAgICAgICAqIEFuZHJvaWQudjhiaW5kaW5ncy5tazoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJyaWRnZS9qbmkvSmF2YU1ldGhvZC5j
cHA6CisgICAgICAgIChKYXZhTWV0aG9kOjpKYXZhTWV0aG9kKToKKyAgICAgICAgKEphdmFNZXRo
b2Q6On5KYXZhTWV0aG9kKToKKyAgICAgICAgKGFwcGVuZENsYXNzTmFtZSk6CisgICAgICAgIChK
YXZhTWV0aG9kOjpzaWduYXR1cmUpOgorICAgICAgICAoSmF2YU1ldGhvZDo6Sk5JUmV0dXJuVHlw
ZSk6CisgICAgICAgIChKYXZhTWV0aG9kOjptZXRob2RJRCk6CisgICAgICAgICogYnJpZGdlL2pu
aS9KYXZhTWV0aG9kLmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhTWV0aG9kOjpuYW1l
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkphdmFNZXRob2Q6OnJldHVyblR5cGUpOgorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YU1ldGhvZDo6cGFyYW1ldGVyQXQpOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6SmF2YU1ldGhvZDo6bnVtUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpKYXZhTWV0aG9kOjppc1N0YXRpYyk6CisgICAgICAgICogYnJpZGdlL2puaS9K
YXZhU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhU3RyaW5nOjpKYXZhU3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkphdmFTdHJpbmc6OnV0ZjgpOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6SmF2YVN0cmluZzo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OkphdmFTdHJpbmc6OmltcGwpOgorICAgICAgICAqIGJyaWRnZS9qbmkvam5pX2pzb2Jq
ZWN0Lm1tOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0pOSUJyaWRnZUpTQy5oOgorICAgICAg
ICAqIGJyaWRnZS9qbmkvdjgvSk5JQnJpZGdlVjguaDoKKyAgICAgICAgKiBicmlkZ2Uvam5pL3Y4
L0phdmFDbGFzc1Y4LmNwcDoKKyAgICAgICAgKiBicmlkZ2Uvam5pL3Y4L0phdmFDbGFzc1Y4Lmg6
CisgICAgICAgICogYnJpZGdlL2puaS92OC9KYXZhSW5zdGFuY2VWOC5jcHA6CisKIDIwMTEtMDMt
MDcgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFN0ZXZlIEJsb2NrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBhMmM3ZDVlLi5jMThl
N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtOTM3LDkgKzkzNywxMCBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJlcC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9JZGVudGlmaWVyUmVwLmggXAotCVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSk5JQnJp
ZGdlLmggXAotCVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0LmggXAogCVNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSk5JVXRpbGl0eS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvam5pL0phdmFNZXRob2QuaCBcCisJU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZh
U3RyaW5nLmggXAorCVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0LmggXAog
CVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuaCBcCiAJU291cmNlL1dlYkNv
cmUvYnJpZGdlL2puaS9qc2MvSk5JQnJpZGdlSlNDLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDlm
Mjg4ZDMuLmVlMzc4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEwMTUsMTAgKzEwMTUsMTEgQEAK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9ucHJ1bnRpbWVfaW50ZXJuYWwuaCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvbnBydW50aW1lX3ByaXYuaCcsCiAgICAgICAgICAgICAnYnJpZGdl
L0JyaWRnZS5oJywKLSAgICAgICAgICAgICdicmlkZ2Uvam5pL0pOSUJyaWRnZS5jcHAnLAotICAg
ICAgICAgICAgJ2JyaWRnZS9qbmkvSk5JQnJpZGdlLmgnLAogICAgICAgICAgICAgJ2JyaWRnZS9q
bmkvSk5JVXRpbGl0eS5jcHAnLAogICAgICAgICAgICAgJ2JyaWRnZS9qbmkvSk5JVXRpbGl0eS5o
JywKKyAgICAgICAgICAgICdicmlkZ2Uvam5pL0phdmFNZXRob2QuY3BwJywKKyAgICAgICAgICAg
ICdicmlkZ2Uvam5pL0phdmFNZXRob2QuaCcsCisgICAgICAgICAgICAnYnJpZGdlL2puaS9KYXZh
U3RyaW5nLmgnLAogICAgICAgICAgICAgJ2JyaWRnZS9qbmkvSm9iamVjdFdyYXBwZXIuY3BwJywK
ICAgICAgICAgICAgICdicmlkZ2Uvam5pL0pvYmplY3RXcmFwcGVyLmgnLAogICAgICAgICAgICAg
J2JyaWRnZS9qbmkvdjgvSk5JQnJpZGdlVjguY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMWQ5NzY4Li4wMzAyN2M5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMzc1LDEwICsxMzc1LDExIEBACiAJCTU5MDVBREMwMTMwMkYzQ0UwMEYxMTZERiAvKiBY
TUxUcmVlVmlld2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1OTA1QURCRTEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5oICovOyB9Owog
CQk1OTBFMUI0OTExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MEUxQjQ4MTFFNEVGNEIw
MDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU5MEUxQjRCMTFFNEVGNzAwMDY5Rjc4NCAvKiBKU0Rl
dmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTkwRTFCNEExMUU0RUY3MDAwNjlGNzg0IC8qIEpTRGV2aWNl
T3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAgKi87IH07Ci0JCTU5MTM5NTNCMTEwNzU4NDUwMDgz
RUM1NSAvKiBKTklCcmlkZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU5MTM5NTNBMTEwNzU4NDUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuaCAqLzsgfTsK
LQkJNTkxMzk1M0QxMTA3NTg0RTAwODNFQzU1IC8qIEpOSUJyaWRnZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTEzOTUzQzExMDc1ODRFMDA4M0VD
NTUgLyogSk5JQnJpZGdlLmNwcCAqLzsgfTsKIAkJNTkzMDlBMTExMUY0QUU1ODAwMjUwNjAzIC8q
IERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTMwOUExMDExRjRBRTU4MDAyNTA2MDMgLyogRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCAqLzsgfTsKIAkJNTkzMDlBMTMxMUY0QUU2QTAwMjUw
NjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8qIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTU5M0QzRUFEMTMyNTMyODQwMDU3RTdFRSAvKiBKYXZhTWV0
aG9kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5
M0QzRUFDMTMyNTMyODQwMDU3RTdFRSAvKiBKYXZhTWV0aG9kLmNwcCAqLzsgfTsKKwkJNTkzRDNF
QUYxMzI1MzI4QzAwNTdFN0VFIC8qIEphdmFNZXRob2QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5M0QzRUFFMTMyNTMyOEMwMDU3RTdFRSAvKiBKYXZh
TWV0aG9kLmggKi87IH07CisJCTU5M0QzRUIxMTMyNTMyOTUwMDU3RTdFRSAvKiBKYXZhU3RyaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTNEM0VC
MDEzMjUzMjk1MDA1N0U3RUUgLyogSmF2YVN0cmluZy5oICovOyB9OwogCQk1OTYyMjk3ODExMzNF
RkQ3MDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5NjIyOTc3MTEzM0VGRDcwMERDNENC
QiAvKiBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwICovOyB9OwogCQk1OTYyMjk3QTExMzNF
RkUyMDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTYyMjk3OTExMzNFRkUyMDBEQzRDQkIg
LyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTk2OTUwODIxMzIxMDU5OTAwQzNFRDE4IC8qIEpvYmpl
Y3RXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1OTY5NTA4MTEzMjEwNTk5MDBDM0VEMTggLyogSm9iamVjdFdyYXBwZXIuaCAqLzsgfTsKQEAg
LTc4NDIsMTAgKzc4NDMsMTEgQEAKIAkJNTkwNUFEQkUxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRy
ZWVWaWV3ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MVHJlZVZpZXdl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTBFMUI0ODExRTRFRjRCMDA2OUY3
ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGV2aWNlT3JpZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkw
RTFCNEExMUU0RUY3MDAwNjlGNzg0IC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RldmljZU9yaWVudGF0
aW9uRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1OTEzOTUz
QTExMDc1ODQ1MDA4M0VDNTUgLyogSk5JQnJpZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpOSUJyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1OTEz
OTUzQzExMDc1ODRFMDA4M0VDNTUgLyogSk5JQnJpZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpOSUJyaWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrLmNwcDsgcGF0aCA9IG1vY2svRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkzMDlBMTIxMUY0QUU2
QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDsgcGF0aCA9
IG1vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU5M0QzRUFDMTMyNTMyODQwMDU3RTdFRSAvKiBKYXZhTWV0aG9kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEphdmFNZXRob2QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1OTNEM0VBRTEzMjUzMjhDMDA1N0U3RUUgLyogSmF2YU1l
dGhvZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhTWV0aG9kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5M0QzRUIwMTMyNTMyOTUwMDU3RTdFRSAvKiBK
YXZhU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTdHJpbmcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk2MjI5NzcxMTMzRUZENzAwREM0Q0JC
IC8qIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1OTYyMjk3OTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9jYXRpb25Q
b3NpdGlvbkNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb2xvY2F0
aW9uUG9zaXRpb25DYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTY5NTA4
MTEzMjEwNTk5MDBDM0VEMTggLyogSm9iamVjdFdyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSm9iamVjdFdyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEyNzM5LDEzICsxMjc0MSwxNCBAQAogCQkxQTU2OUNDRTBEN0UyQjgyMDA3QzM5ODMg
Lyogam5pICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1
OTNEM0VCMDEzMjUzMjk1MDA1N0U3RUUgLyogSmF2YVN0cmluZy5oICovLAorCQkJCTU5M0QzRUFF
MTMyNTMyOEMwMDU3RTdFRSAvKiBKYXZhTWV0aG9kLmggKi8sCisJCQkJNTkzRDNFQUMxMzI1MzI4
NDAwNTdFN0VFIC8qIEphdmFNZXRob2QuY3BwICovLAogCQkJCTU5Njk1MDgzMTMyMTA1QTUwMEMz
RUQxOCAvKiBKb2JqZWN0V3JhcHBlci5jcHAgKi8sCiAJCQkJNTk2OTUwODExMzIxMDU5OTAwQzNF
RDE4IC8qIEpvYmplY3RXcmFwcGVyLmggKi8sCiAJCQkJMUE1NjlDRDQwRDdFMkI4MjAwN0MzOTgz
IC8qIGpuaV9qc29iamVjdC5oICovLAogCQkJCTFBNTY5Q0QzMEQ3RTJCODIwMDdDMzk4MyAvKiBq
bmlfanNvYmplY3QubW0gKi8sCiAJCQkJMUE1NjlDRDUwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9v
YmpjLm1tICovLAotCQkJCTU5MTM5NTNDMTEwNzU4NEUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuY3Bw
ICovLAotCQkJCTU5MTM5NTNBMTEwNzU4NDUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuaCAqLywKIAkJ
CQk1OUVFMTIyRjExMDYwODFGMDA4ODUxMTYgLyogSk5JVXRpbGl0eS5jcHAgKi8sCiAJCQkJNTlF
RTEyMzExMTA2MDgyOTAwODg1MTE2IC8qIEpOSVV0aWxpdHkuaCAqLywKIAkJCQk1OTlEMUUyRjEw
Qzk3RDRDMDBFMEVGMTIgLyoganNjICovLApAQCAtMjEwMjUsNyArMjEwMjgsNiBAQAogCQkJCTFD
ODFCQTBBMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1OUJDMzkzRjExMDU0QTEzMDBGRDg1REIgLyogSmF2YVN0cmluZ0pTQy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMDQwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9qc29iamVj
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTkxMzk1M0IxMTA3NTg0NTAwODNFQzU1IC8qIEpOSUJy
aWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTlFODQyNjYxMTA5RTVBMjAwMDMwNUFEIC8qIEpO
SUJyaWRnZUpTQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTlFRTEyMzIxMTA2MDgyOTAwODg1MTE2
IC8qIEpOSVV0aWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5RUUxMjJFMTEwNjA4MEYwMDg4
NTExNiAvKiBKTklVdGlsaXR5UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjUzMyw2ICsy
MjUzNSw4IEBACiAJCQkJMzM5QjVCNjMxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVn
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzNEMDIxMkQxMzFEQjM3QjAwNDA5MUE4IC8qIENvb2tp
ZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5Njk1MDgyMTMyMTA1OTkwMEMzRUQxOCAv
KiBKb2JqZWN0V3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTkzRDNFQUYxMzI1MzI4QzAw
NTdFN0VFIC8qIEphdmFNZXRob2QuaCBpbiBIZWFkZXJzICovLAorCQkJCTU5M0QzRUIxMTMyNTMy
OTUwMDU3RTdFRSAvKiBKYXZhU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyNTkyLDcgKzIy
NTk2LDYgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJY
Y29kZSAyLjQiOwotCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5l
ZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAg
LTIzNzczLDcgKzIzNzc2LDYgQEAKIAkJCQkxQzgxQkEwOTBFOTczNDgzMDAyNjZFMDcgLyogSmF2
YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQwMzBEN0UyQjgy
MDA3QzM5ODMgLyogam5pX2pzb2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMDUw
RDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9vYmpjLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTkxMzk1
M0QxMTA3NTg0RTAwODNFQzU1IC8qIEpOSUJyaWRnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
OUU4NDI2ODExMDlFNUFFMDAwMzA1QUQgLyogSk5JQnJpZGdlSlNDLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTU5RUUxMjMwMTEwNjA4MUYwMDg4NTExNiAvKiBKTklVdGlsaXR5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTU5RUUxMjJDMTEwNjA4MDUwMDg4NTExNiAvKiBKTklVdGlsaXR5UHJpdmF0
ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI1MTg0LDYgKzI1MTg2LDcgQEAKIAkJCQk1QTU3NEYy
NDEzMURCOTM5MDA0NzFCODggLyogUmVuZGVyUXVvdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUE1NzRGMjgxMzFEQjk2RDAwNDcxQjg4IC8qIFF1b3Rlc0RhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTk2OTUwODQxMzIxMDVBNTAwQzNFRDE4IC8qIEpvYmplY3RXcmFwcGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTU5M0QzRUFEMTMyNTMyODQwMDU3RTdFRSAvKiBKYXZhTWV0aG9kLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9K
TklCcmlkZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTE4YzQ5Li4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qbmkvSk5JQnJpZGdlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA3LCAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAyMDEwLCBU
aGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkpOSUJyaWRnZS5oIgotCi0jaWYgRU5BQkxFKEpBVkFfQlJJREdFKQotCi0j
aW5jbHVkZSA8cnVudGltZS9TY29wZUNoYWluLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotdXNpbmcgbmFtZXNw
YWNlIEpTQzsKLXVzaW5nIG5hbWVzcGFjZSBKU0M6OkJpbmRpbmdzOwotCi1KYXZhTWV0aG9kOjpK
YXZhTWV0aG9kKEpOSUVudiogZW52LCBqb2JqZWN0IGFNZXRob2QpCi17Ci0gICAgLy8gR2V0IHJl
dHVybiB0eXBlIG5hbWUKLSAgICBqc3RyaW5nIHJldHVyblR5cGVOYW1lID0gMDsKLSAgICBpZiAo
am9iamVjdCByZXR1cm5UeXBlID0gY2FsbEpOSU1ldGhvZDxqb2JqZWN0PihhTWV0aG9kLCAiZ2V0
UmV0dXJuVHlwZSIsICIoKUxqYXZhL2xhbmcvQ2xhc3M7IikpIHsKLSAgICAgICAgICAgIHJldHVy
blR5cGVOYW1lID0gc3RhdGljX2Nhc3Q8anN0cmluZz4oY2FsbEpOSU1ldGhvZDxqb2JqZWN0Pihy
ZXR1cm5UeXBlLCAiZ2V0TmFtZSIsICIoKUxqYXZhL2xhbmcvU3RyaW5nOyIpKTsKLSAgICAgICAg
aWYgKCFyZXR1cm5UeXBlTmFtZSkKLSAgICAgICAgICAgIHJldHVyblR5cGVOYW1lID0gZW52LT5O
ZXdTdHJpbmdVVEYoIjxVbmtub3duPiIpOwotICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKHJl
dHVyblR5cGUpOwotICAgIH0KLSAgICBtX3JldHVyblR5cGUgPSBKYXZhU3RyaW5nKGVudiwgcmV0
dXJuVHlwZU5hbWUpOwotICAgIG1fSk5JUmV0dXJuVHlwZSA9IEpOSVR5cGVGcm9tQ2xhc3NOYW1l
KG1fcmV0dXJuVHlwZS51dGY4KCkpOwotICAgIGVudi0+RGVsZXRlTG9jYWxSZWYocmV0dXJuVHlw
ZU5hbWUpOwotCi0gICAgLy8gR2V0IG1ldGhvZCBuYW1lCi0gICAganN0cmluZyBtZXRob2ROYW1l
ID0gc3RhdGljX2Nhc3Q8anN0cmluZz4oY2FsbEpOSU1ldGhvZDxqb2JqZWN0PihhTWV0aG9kLCAi
Z2V0TmFtZSIsICIoKUxqYXZhL2xhbmcvU3RyaW5nOyIpKTsKLSAgICBpZiAoIXJldHVyblR5cGVO
YW1lKQotICAgICAgICByZXR1cm5UeXBlTmFtZSA9IGVudi0+TmV3U3RyaW5nVVRGKCI8VW5rbm93
bj4iKTsKLSAgICBtX25hbWUgPSBKYXZhU3RyaW5nKGVudiwgbWV0aG9kTmFtZSk7Ci0gICAgZW52
LT5EZWxldGVMb2NhbFJlZihtZXRob2ROYW1lKTsKLQotICAgIC8vIEdldCBwYXJhbWV0ZXJzCi0g
ICAgaWYgKGphcnJheSBqcGFyYW1ldGVycyA9IHN0YXRpY19jYXN0PGphcnJheT4oY2FsbEpOSU1l
dGhvZDxqb2JqZWN0PihhTWV0aG9kLCAiZ2V0UGFyYW1ldGVyVHlwZXMiLCAiKClbTGphdmEvbGFu
Zy9DbGFzczsiKSkpIHsKLSAgICAgICAgdW5zaWduZWQgaW50IG51bVBhcmFtcyA9IGVudi0+R2V0
QXJyYXlMZW5ndGgoanBhcmFtZXRlcnMpOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgbnVtUGFyYW1zOyBpKyspIHsKLSAgICAgICAgICAgIGpvYmplY3QgYVBhcmFtZXRl
ciA9IGVudi0+R2V0T2JqZWN0QXJyYXlFbGVtZW50KHN0YXRpY19jYXN0PGpvYmplY3RBcnJheT4o
anBhcmFtZXRlcnMpLCBpKTsKLSAgICAgICAgICAgIGpzdHJpbmcgcGFyYW1ldGVyTmFtZSA9IHN0
YXRpY19jYXN0PGpzdHJpbmc+KGNhbGxKTklNZXRob2Q8am9iamVjdD4oYVBhcmFtZXRlciwgImdl
dE5hbWUiLCAiKClMamF2YS9sYW5nL1N0cmluZzsiKSk7Ci0gICAgICAgICAgICBpZiAoIXBhcmFt
ZXRlck5hbWUpCi0gICAgICAgICAgICAgICAgcGFyYW1ldGVyTmFtZSA9IGVudi0+TmV3U3RyaW5n
VVRGKCI8VW5rbm93bj4iKTsKLSAgICAgICAgICAgIG1fcGFyYW1ldGVycy5hcHBlbmQoSmF2YVN0
cmluZyhlbnYsIHBhcmFtZXRlck5hbWUpLmltcGwoKSk7Ci0gICAgICAgICAgICBlbnYtPkRlbGV0
ZUxvY2FsUmVmKGFQYXJhbWV0ZXIpOwotICAgICAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihw
YXJhbWV0ZXJOYW1lKTsKLSAgICAgICAgfQotICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGpw
YXJhbWV0ZXJzKTsKLSAgICB9Ci0KLSAgICAvLyBDcmVhdGVkIGxhemlseS4KLSAgICBtX3NpZ25h
dHVyZSA9IDA7Ci0gICAgbV9tZXRob2RJRCA9IDA7Ci0KLSAgICBqY2xhc3MgbW9kaWZpZXJDbGFz
cyA9IGVudi0+RmluZENsYXNzKCJqYXZhL2xhbmcvcmVmbGVjdC9Nb2RpZmllciIpOwotICAgIGlu
dCBtb2RpZmllcnMgPSBjYWxsSk5JTWV0aG9kPGppbnQ+KGFNZXRob2QsICJnZXRNb2RpZmllcnMi
LCAiKClJIik7Ci0gICAgbV9pc1N0YXRpYyA9IHN0YXRpY19jYXN0PGJvb2w+KGNhbGxKTklTdGF0
aWNNZXRob2Q8amJvb2xlYW4+KG1vZGlmaWVyQ2xhc3MsICJpc1N0YXRpYyIsICIoSSlaIiwgbW9k
aWZpZXJzKSk7Ci0gICAgZW52LT5EZWxldGVMb2NhbFJlZihtb2RpZmllckNsYXNzKTsKLX0KLQot
SmF2YU1ldGhvZDo6fkphdmFNZXRob2QoKQotewotICAgIGlmIChtX3NpZ25hdHVyZSkKLSAgICAg
ICAgZmFzdEZyZWUobV9zaWduYXR1cmUpOwotfQotCi0vLyBKTkkgbWV0aG9kIHNpZ25hdHVyZXMg
dXNlICcvJyBiZXR3ZWVuIGNvbXBvbmVudHMgb2YgYSBjbGFzcyBuYW1lLCBidXQKLS8vIHdlIGdl
dCAnLicgYmV0d2VlbiBjb21wb25lbnRzIGZyb20gdGhlIHJlZmxlY3Rpb24gQVBJLgotc3RhdGlj
IHZvaWQgYXBwZW5kQ2xhc3NOYW1lKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IGNoYXIq
IGNsYXNzTmFtZSkKLXsKLSNpZiBVU0UoSlNDKQotICAgIEFTU0VSVChKU0xvY2s6OmxvY2tDb3Vu
dCgpID4gMCk7Ci0jZW5kaWYKLQotICAgIGNoYXIqIGMgPSBmYXN0U3RyRHVwKGNsYXNzTmFtZSk7
Ci0KLSAgICBjaGFyKiByZXN1bHQgPSBjOwotICAgIHdoaWxlICgqYykgewotICAgICAgICBpZiAo
KmMgPT0gJy4nKQotICAgICAgICAgICAgKmMgPSAnLyc7Ci0gICAgICAgIGMrKzsKLSAgICB9Ci0K
LSAgICBidWlsZGVyLmFwcGVuZChyZXN1bHQpOwotCi0gICAgZmFzdEZyZWUocmVzdWx0KTsKLX0K
LQotY29uc3QgY2hhciogSmF2YU1ldGhvZDo6c2lnbmF0dXJlKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fc2lnbmF0dXJlKSB7Ci0jaWYgVVNFKEpTQykKLSAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5j
ZUFzc2VydGlvbnNPbmx5KTsKLSNlbmRpZgotCi0gICAgICAgIFN0cmluZ0J1aWxkZXIgc2lnbmF0
dXJlQnVpbGRlcjsKLSAgICAgICAgc2lnbmF0dXJlQnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBtX3BhcmFtZXRlcnMuc2l6ZSgpOyBpKysp
IHsKLSAgICAgICAgICAgIENTdHJpbmcgamF2YUNsYXNzTmFtZSA9IHBhcmFtZXRlckF0KGkpLnV0
ZjgoKTsKLSAgICAgICAgICAgIEpOSVR5cGUgdHlwZSA9IEpOSVR5cGVGcm9tQ2xhc3NOYW1lKGph
dmFDbGFzc05hbWUuZGF0YSgpKTsKLSAgICAgICAgICAgIGlmICh0eXBlID09IGFycmF5X3R5cGUp
Ci0gICAgICAgICAgICAgICAgYXBwZW5kQ2xhc3NOYW1lKHNpZ25hdHVyZUJ1aWxkZXIsIGphdmFD
bGFzc05hbWUuZGF0YSgpKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHNp
Z25hdHVyZUJ1aWxkZXIuYXBwZW5kKHNpZ25hdHVyZUZyb21QcmltaXRpdmVUeXBlKHR5cGUpKTsK
LSAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBvYmplY3RfdHlwZSkgewotICAgICAgICAgICAg
ICAgICAgICBhcHBlbmRDbGFzc05hbWUoc2lnbmF0dXJlQnVpbGRlciwgamF2YUNsYXNzTmFtZS5k
YXRhKCkpOwotICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmVCdWlsZGVyLmFwcGVuZCgnOycp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBz
aWduYXR1cmVCdWlsZGVyLmFwcGVuZCgnKScpOwotCi0gICAgICAgIGNvbnN0IGNoYXIqIHJldHVy
blR5cGUgPSBtX3JldHVyblR5cGUudXRmOCgpOwotICAgICAgICBpZiAobV9KTklSZXR1cm5UeXBl
ID09IGFycmF5X3R5cGUpCi0gICAgICAgICAgICBhcHBlbmRDbGFzc05hbWUoc2lnbmF0dXJlQnVp
bGRlciwgcmV0dXJuVHlwZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2lnbmF0dXJl
QnVpbGRlci5hcHBlbmQoc2lnbmF0dXJlRnJvbVByaW1pdGl2ZVR5cGUobV9KTklSZXR1cm5UeXBl
KSk7Ci0gICAgICAgICAgICBpZiAobV9KTklSZXR1cm5UeXBlID09IG9iamVjdF90eXBlKSB7Ci0g
ICAgICAgICAgICAgICAgYXBwZW5kQ2xhc3NOYW1lKHNpZ25hdHVyZUJ1aWxkZXIsIHJldHVyblR5
cGUpOwotICAgICAgICAgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCc7Jyk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBTdHJpbmcgc2lnbmF0dXJlU3RyaW5nID0g
c2lnbmF0dXJlQnVpbGRlci50b1N0cmluZygpOwotICAgICAgICBtX3NpZ25hdHVyZSA9IGZhc3RT
dHJEdXAoc2lnbmF0dXJlU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwotICAgIH0KLQotICAgIHJldHVy
biBtX3NpZ25hdHVyZTsKLX0KLQotSk5JVHlwZSBKYXZhTWV0aG9kOjpKTklSZXR1cm5UeXBlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9KTklSZXR1cm5UeXBlOwotfQotCi1qbWV0aG9kSUQgSmF2
YU1ldGhvZDo6bWV0aG9kSUQoam9iamVjdCBvYmopIGNvbnN0Ci17Ci0gICAgaWYgKCFtX21ldGhv
ZElEKQotICAgICAgICBtX21ldGhvZElEID0gZ2V0TWV0aG9kSUQob2JqLCBtX25hbWUudXRmOCgp
LCBzaWduYXR1cmUoKSk7Ci0gICAgcmV0dXJuIG1fbWV0aG9kSUQ7Ci19Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoSkFWQV9CUklER0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5p
L0pOSUJyaWRnZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KTklCcmlkZ2UuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEzODg3MS4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvam5pL0pOSUJyaWRnZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDks
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IDIwMTAs
IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEpOSUJyaWRn
ZV9oCi0jZGVmaW5lIEpOSUJyaWRnZV9oCi0KLSNpZiBFTkFCTEUoSkFWQV9CUklER0UpCi0KLSNp
bmNsdWRlICJCcmlkZ2UuaCIKLSNpbmNsdWRlICJKTklVdGlsaXR5LmgiCi0KLSNpZiBVU0UoSlND
KQotI2luY2x1ZGUgIkphdmFTdHJpbmdKU0MuaCIKLSNlbGlmIFVTRShWOCkKLSNpbmNsdWRlICJK
YXZhU3RyaW5nVjguaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgSlNDIHsKLQotbmFtZXNwYWNlIEJp
bmRpbmdzIHsKLQotdHlwZWRlZiBjb25zdCBjaGFyKiBSdW50aW1lVHlwZTsKLQotY2xhc3MgSmF2
YVN0cmluZyB7Ci1wdWJsaWM6Ci0gICAgSmF2YVN0cmluZygpCi0gICAgewotICAgICAgICBtX2lt
cGwuaW5pdCgpOwotICAgIH0KLQotICAgIEphdmFTdHJpbmcoSk5JRW52KiBlLCBqc3RyaW5nIHMp
Ci0gICAgewotICAgICAgICBtX2ltcGwuaW5pdChlLCBzKTsKLSAgICB9Ci0KLSAgICBKYXZhU3Ry
aW5nKGpzdHJpbmcgcykKLSAgICB7Ci0gICAgICAgIG1faW1wbC5pbml0KGdldEpOSUVudigpLCBz
KTsKLSAgICB9Ci0KLSAgICBjb25zdCBjaGFyKiB1dGY4KCkgY29uc3QgeyByZXR1cm4gbV9pbXBs
LnV0ZjgoKTsgfQotICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2ltcGwubGVuZ3Ro
KCk7IH0KLSAgICBTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmltcGwo
KTsgfQotCi1wcml2YXRlOgotICAgIEphdmFTdHJpbmdJbXBsIG1faW1wbDsKLX07Ci0KLWNsYXNz
IEphdmFNZXRob2QgOiBwdWJsaWMgTWV0aG9kIHsKLXB1YmxpYzoKLSAgICBKYXZhTWV0aG9kKEpO
SUVudiosIGpvYmplY3QgYU1ldGhvZCk7Ci0gICAgfkphdmFNZXRob2QoKTsKLQotICAgIGNvbnN0
IEphdmFTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICBSdW50aW1l
VHlwZSByZXR1cm5UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXR1cm5UeXBlLnV0ZjgoKTsgfQot
ICAgIGNvbnN0IFdURjo6U3RyaW5nJiBwYXJhbWV0ZXJBdChpbnQgaSkgY29uc3QgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzW2ldOyB9Ci0gICAgaW50IG51bVBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVy
biBtX3BhcmFtZXRlcnMuc2l6ZSgpOyB9Ci0KLSAgICBjb25zdCBjaGFyKiBzaWduYXR1cmUoKSBj
b25zdDsKLSAgICBKTklUeXBlIEpOSVJldHVyblR5cGUoKSBjb25zdDsKLQotICAgIGptZXRob2RJ
RCBtZXRob2RJRChqb2JqZWN0IG9iaikgY29uc3Q7Ci0KLSAgICBib29sIGlzU3RhdGljKCkgY29u
c3QgeyByZXR1cm4gbV9pc1N0YXRpYzsgfQotCi1wcml2YXRlOgotICAgIFZlY3RvcjxXVEY6OlN0
cmluZz4gbV9wYXJhbWV0ZXJzOwotICAgIEphdmFTdHJpbmcgbV9uYW1lOwotICAgIG11dGFibGUg
Y2hhciogbV9zaWduYXR1cmU7Ci0gICAgSmF2YVN0cmluZyBtX3JldHVyblR5cGU7Ci0gICAgSk5J
VHlwZSBtX0pOSVJldHVyblR5cGU7Ci0gICAgbXV0YWJsZSBqbWV0aG9kSUQgbV9tZXRob2RJRDsK
LSAgICBib29sIG1faXNTdGF0aWM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBCaW5kaW5ncwotCi19
IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShKQVZBX0JSSURHRSkKLQotI2Vu
ZGlmIC8vIEpOSUJyaWRnZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5p
L0phdmFNZXRob2QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhTWV0aG9kLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWYyOWRmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhTWV0aG9kLmNwcApAQCAtMCww
ICsxLDE2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNywg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgMjAxMCwg
VGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKYXZhTWV0aG9kLmgiCisKKyNpZiBFTkFCTEUoSkFWQV9CUklER0UpCisK
KyNpbmNsdWRlICJKYXZhU3RyaW5nLmgiCisKKyNpbmNsdWRlIDxydW50aW1lL1Njb3BlQ2hhaW4u
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBKU0M7Cit1c2luZyBuYW1lc3BhY2UgSlNDOjpCaW5kaW5nczsKKworSmF2YU1ldGhvZDo6SmF2
YU1ldGhvZChKTklFbnYqIGVudiwgam9iamVjdCBhTWV0aG9kKQoreworICAgIC8vIEdldCByZXR1
cm4gdHlwZSBuYW1lCisgICAganN0cmluZyByZXR1cm5UeXBlTmFtZSA9IDA7CisgICAgaWYgKGpv
YmplY3QgcmV0dXJuVHlwZSA9IGNhbGxKTklNZXRob2Q8am9iamVjdD4oYU1ldGhvZCwgImdldFJl
dHVyblR5cGUiLCAiKClMamF2YS9sYW5nL0NsYXNzOyIpKSB7CisgICAgICAgICAgICByZXR1cm5U
eXBlTmFtZSA9IHN0YXRpY19jYXN0PGpzdHJpbmc+KGNhbGxKTklNZXRob2Q8am9iamVjdD4ocmV0
dXJuVHlwZSwgImdldE5hbWUiLCAiKClMamF2YS9sYW5nL1N0cmluZzsiKSk7CisgICAgICAgIGlm
ICghcmV0dXJuVHlwZU5hbWUpCisgICAgICAgICAgICByZXR1cm5UeXBlTmFtZSA9IGVudi0+TmV3
U3RyaW5nVVRGKCI8VW5rbm93bj4iKTsKKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihyZXR1
cm5UeXBlKTsKKyAgICB9CisgICAgbV9yZXR1cm5UeXBlID0gSmF2YVN0cmluZyhlbnYsIHJldHVy
blR5cGVOYW1lKTsKKyAgICBtX0pOSVJldHVyblR5cGUgPSBKTklUeXBlRnJvbUNsYXNzTmFtZSht
X3JldHVyblR5cGUudXRmOCgpKTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKHJldHVyblR5cGVO
YW1lKTsKKworICAgIC8vIEdldCBtZXRob2QgbmFtZQorICAgIGpzdHJpbmcgbWV0aG9kTmFtZSA9
IHN0YXRpY19jYXN0PGpzdHJpbmc+KGNhbGxKTklNZXRob2Q8am9iamVjdD4oYU1ldGhvZCwgImdl
dE5hbWUiLCAiKClMamF2YS9sYW5nL1N0cmluZzsiKSk7CisgICAgaWYgKCFyZXR1cm5UeXBlTmFt
ZSkKKyAgICAgICAgcmV0dXJuVHlwZU5hbWUgPSBlbnYtPk5ld1N0cmluZ1VURigiPFVua25vd24+
Iik7CisgICAgbV9uYW1lID0gSmF2YVN0cmluZyhlbnYsIG1ldGhvZE5hbWUpOworICAgIGVudi0+
RGVsZXRlTG9jYWxSZWYobWV0aG9kTmFtZSk7CisKKyAgICAvLyBHZXQgcGFyYW1ldGVycworICAg
IGlmIChqYXJyYXkganBhcmFtZXRlcnMgPSBzdGF0aWNfY2FzdDxqYXJyYXk+KGNhbGxKTklNZXRo
b2Q8am9iamVjdD4oYU1ldGhvZCwgImdldFBhcmFtZXRlclR5cGVzIiwgIigpW0xqYXZhL2xhbmcv
Q2xhc3M7IikpKSB7CisgICAgICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSBlbnYtPkdldEFy
cmF5TGVuZ3RoKGpwYXJhbWV0ZXJzKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IG51bVBhcmFtczsgaSsrKSB7CisgICAgICAgICAgICBqb2JqZWN0IGFQYXJhbWV0ZXIg
PSBlbnYtPkdldE9iamVjdEFycmF5RWxlbWVudChzdGF0aWNfY2FzdDxqb2JqZWN0QXJyYXk+KGpw
YXJhbWV0ZXJzKSwgaSk7CisgICAgICAgICAgICBqc3RyaW5nIHBhcmFtZXRlck5hbWUgPSBzdGF0
aWNfY2FzdDxqc3RyaW5nPihjYWxsSk5JTWV0aG9kPGpvYmplY3Q+KGFQYXJhbWV0ZXIsICJnZXRO
YW1lIiwgIigpTGphdmEvbGFuZy9TdHJpbmc7IikpOworICAgICAgICAgICAgaWYgKCFwYXJhbWV0
ZXJOYW1lKQorICAgICAgICAgICAgICAgIHBhcmFtZXRlck5hbWUgPSBlbnYtPk5ld1N0cmluZ1VU
RigiPFVua25vd24+Iik7CisgICAgICAgICAgICBtX3BhcmFtZXRlcnMuYXBwZW5kKEphdmFTdHJp
bmcoZW52LCBwYXJhbWV0ZXJOYW1lKS5pbXBsKCkpOworICAgICAgICAgICAgZW52LT5EZWxldGVM
b2NhbFJlZihhUGFyYW1ldGVyKTsKKyAgICAgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYocGFy
YW1ldGVyTmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihqcGFy
YW1ldGVycyk7CisgICAgfQorCisgICAgLy8gQ3JlYXRlZCBsYXppbHkuCisgICAgbV9zaWduYXR1
cmUgPSAwOworICAgIG1fbWV0aG9kSUQgPSAwOworCisgICAgamNsYXNzIG1vZGlmaWVyQ2xhc3Mg
PSBlbnYtPkZpbmRDbGFzcygiamF2YS9sYW5nL3JlZmxlY3QvTW9kaWZpZXIiKTsKKyAgICBpbnQg
bW9kaWZpZXJzID0gY2FsbEpOSU1ldGhvZDxqaW50PihhTWV0aG9kLCAiZ2V0TW9kaWZpZXJzIiwg
IigpSSIpOworICAgIG1faXNTdGF0aWMgPSBzdGF0aWNfY2FzdDxib29sPihjYWxsSk5JU3RhdGlj
TWV0aG9kPGpib29sZWFuPihtb2RpZmllckNsYXNzLCAiaXNTdGF0aWMiLCAiKEkpWiIsIG1vZGlm
aWVycykpOworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYobW9kaWZpZXJDbGFzcyk7Cit9CisKK0ph
dmFNZXRob2Q6On5KYXZhTWV0aG9kKCkKK3sKKyAgICBpZiAobV9zaWduYXR1cmUpCisgICAgICAg
IGZhc3RGcmVlKG1fc2lnbmF0dXJlKTsKK30KKworLy8gSk5JIG1ldGhvZCBzaWduYXR1cmVzIHVz
ZSAnLycgYmV0d2VlbiBjb21wb25lbnRzIG9mIGEgY2xhc3MgbmFtZSwgYnV0CisvLyB3ZSBnZXQg
Jy4nIGJldHdlZW4gY29tcG9uZW50cyBmcm9tIHRoZSByZWZsZWN0aW9uIEFQSS4KK3N0YXRpYyB2
b2lkIGFwcGVuZENsYXNzTmFtZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBjaGFyKiBj
bGFzc05hbWUpCit7CisjaWYgVVNFKEpTQykKKyAgICBBU1NFUlQoSlNMb2NrOjpsb2NrQ291bnQo
KSA+IDApOworI2VuZGlmCisKKyAgICBjaGFyKiBjID0gZmFzdFN0ckR1cChjbGFzc05hbWUpOwor
CisgICAgY2hhciogcmVzdWx0ID0gYzsKKyAgICB3aGlsZSAoKmMpIHsKKyAgICAgICAgaWYgKCpj
ID09ICcuJykKKyAgICAgICAgICAgICpjID0gJy8nOworICAgICAgICBjKys7CisgICAgfQorCisg
ICAgYnVpbGRlci5hcHBlbmQocmVzdWx0KTsKKworICAgIGZhc3RGcmVlKHJlc3VsdCk7Cit9CisK
K2NvbnN0IGNoYXIqIEphdmFNZXRob2Q6OnNpZ25hdHVyZSgpIGNvbnN0Cit7CisgICAgaWYgKCFt
X3NpZ25hdHVyZSkgeworI2lmIFVTRShKU0MpCisgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7CisjZW5kaWYKKworICAgICAgICBTdHJpbmdCdWlsZGVyIHNpZ25hdHVy
ZUJ1aWxkZXI7CisgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCcoJyk7CisgICAgICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbV9wYXJhbWV0ZXJzLnNpemUoKTsgaSsrKSB7
CisgICAgICAgICAgICBDU3RyaW5nIGphdmFDbGFzc05hbWUgPSBwYXJhbWV0ZXJBdChpKS51dGY4
KCk7CisgICAgICAgICAgICBKTklUeXBlIHR5cGUgPSBKTklUeXBlRnJvbUNsYXNzTmFtZShqYXZh
Q2xhc3NOYW1lLmRhdGEoKSk7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBhcnJheV90eXBlKQor
ICAgICAgICAgICAgICAgIGFwcGVuZENsYXNzTmFtZShzaWduYXR1cmVCdWlsZGVyLCBqYXZhQ2xh
c3NOYW1lLmRhdGEoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzaWdu
YXR1cmVCdWlsZGVyLmFwcGVuZChzaWduYXR1cmVGcm9tUHJpbWl0aXZlVHlwZSh0eXBlKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gb2JqZWN0X3R5cGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kQ2xhc3NOYW1lKHNpZ25hdHVyZUJ1aWxkZXIsIGphdmFDbGFzc05hbWUuZGF0
YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlQnVpbGRlci5hcHBlbmQoJzsnKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2ln
bmF0dXJlQnVpbGRlci5hcHBlbmQoJyknKTsKKworICAgICAgICBjb25zdCBjaGFyKiByZXR1cm5U
eXBlID0gbV9yZXR1cm5UeXBlLnV0ZjgoKTsKKyAgICAgICAgaWYgKG1fSk5JUmV0dXJuVHlwZSA9
PSBhcnJheV90eXBlKQorICAgICAgICAgICAgYXBwZW5kQ2xhc3NOYW1lKHNpZ25hdHVyZUJ1aWxk
ZXIsIHJldHVyblR5cGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNpZ25hdHVyZUJ1
aWxkZXIuYXBwZW5kKHNpZ25hdHVyZUZyb21QcmltaXRpdmVUeXBlKG1fSk5JUmV0dXJuVHlwZSkp
OworICAgICAgICAgICAgaWYgKG1fSk5JUmV0dXJuVHlwZSA9PSBvYmplY3RfdHlwZSkgeworICAg
ICAgICAgICAgICAgIGFwcGVuZENsYXNzTmFtZShzaWduYXR1cmVCdWlsZGVyLCByZXR1cm5UeXBl
KTsKKyAgICAgICAgICAgICAgICBzaWduYXR1cmVCdWlsZGVyLmFwcGVuZCgnOycpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nIHNpZ25hdHVyZVN0cmluZyA9IHNp
Z25hdHVyZUJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICAgICAgbV9zaWduYXR1cmUgPSBmYXN0U3Ry
RHVwKHNpZ25hdHVyZVN0cmluZy51dGY4KCkuZGF0YSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
bV9zaWduYXR1cmU7Cit9CisKK0pOSVR5cGUgSmF2YU1ldGhvZDo6Sk5JUmV0dXJuVHlwZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fSk5JUmV0dXJuVHlwZTsKK30KKworam1ldGhvZElEIEphdmFN
ZXRob2Q6Om1ldGhvZElEKGpvYmplY3Qgb2JqKSBjb25zdAoreworICAgIGlmICghbV9tZXRob2RJ
RCkKKyAgICAgICAgbV9tZXRob2RJRCA9IGdldE1ldGhvZElEKG9iaiwgbV9uYW1lLnV0ZjgoKSwg
c2lnbmF0dXJlKCkpOworICAgIHJldHVybiBtX21ldGhvZElEOworfQorCisjZW5kaWYgLy8gRU5B
QkxFKEpBVkFfQlJJREdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9K
YXZhTWV0aG9kLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFNZXRob2QuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWQwNGM5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhTWV0aG9kLmgKQEAgLTAsMCArMSw3NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNywgMjAwOSwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgMjAxMCwgVGhl
IEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSmF2YU1ldGhvZF9o
CisjZGVmaW5lIEphdmFNZXRob2RfaAorCisjaWYgRU5BQkxFKEpBVkFfQlJJREdFKQorCisjaW5j
bHVkZSAiQnJpZGdlLmgiCisjaW5jbHVkZSAiSk5JVXRpbGl0eS5oIgorCisjaW5jbHVkZSAiSmF2
YVN0cmluZy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIEJpbmRpbmdzIHsKKwor
dHlwZWRlZiBjb25zdCBjaGFyKiBSdW50aW1lVHlwZTsKKworY2xhc3MgSmF2YU1ldGhvZCA6IHB1
YmxpYyBNZXRob2QgeworcHVibGljOgorICAgIEphdmFNZXRob2QoSk5JRW52Kiwgam9iamVjdCBh
TWV0aG9kKTsKKyAgICB+SmF2YU1ldGhvZCgpOworCisgICAgY29uc3QgSmF2YVN0cmluZyYgbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIFJ1bnRpbWVUeXBlIHJldHVyblR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3JldHVyblR5cGUudXRmOCgpOyB9CisgICAgY29uc3QgV1RGOjpT
dHJpbmcmIHBhcmFtZXRlckF0KGludCBpKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnNbaV07
IH0KKyAgICBpbnQgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5z
aXplKCk7IH0KKworICAgIGNvbnN0IGNoYXIqIHNpZ25hdHVyZSgpIGNvbnN0OworICAgIEpOSVR5
cGUgSk5JUmV0dXJuVHlwZSgpIGNvbnN0OworCisgICAgam1ldGhvZElEIG1ldGhvZElEKGpvYmpl
Y3Qgb2JqKSBjb25zdDsKKworICAgIGJvb2wgaXNTdGF0aWMoKSBjb25zdCB7IHJldHVybiBtX2lz
U3RhdGljOyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX3BhcmFtZXRl
cnM7CisgICAgSmF2YVN0cmluZyBtX25hbWU7CisgICAgbXV0YWJsZSBjaGFyKiBtX3NpZ25hdHVy
ZTsKKyAgICBKYXZhU3RyaW5nIG1fcmV0dXJuVHlwZTsKKyAgICBKTklUeXBlIG1fSk5JUmV0dXJu
VHlwZTsKKyAgICBtdXRhYmxlIGptZXRob2RJRCBtX21ldGhvZElEOworICAgIGJvb2wgbV9pc1N0
YXRpYzsKK307CisKK30gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFfQlJJREdFKQorCisjZW5kaWYgLy8gSmF2YU1ldGhv
ZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFTdHJpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YVN0cmluZy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmFiZjExYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvam5pL0phdmFTdHJpbmcuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA3LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAyMDEwLCBUaGUgQW5kcm9pZCBPcGVu
IFNvdXJjZSBQcm9qZWN0CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKYXZhU3RyaW5nX2gKKyNkZWZpbmUgSmF2
YVN0cmluZ19oCisKKyNpZiBFTkFCTEUoSkFWQV9CUklER0UpCisKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworI2lmIFVTRShKU0MpCisjaW5jbHVkZSAiSmF2YVN0cmluZ0pTQy5o
IgorI2VsaWYgVVNFKFY4KQorI2luY2x1ZGUgIkphdmFTdHJpbmdWOC5oIgorI2VuZGlmCisKK25h
bWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQmluZGluZ3MgeworCitjbGFzcyBKYXZhU3RyaW5n
IHsKK3B1YmxpYzoKKyAgICBKYXZhU3RyaW5nKCkKKyAgICB7CisgICAgICAgIG1faW1wbC5pbml0
KCk7CisgICAgfQorCisgICAgSmF2YVN0cmluZyhKTklFbnYqIGUsIGpzdHJpbmcgcykKKyAgICB7
CisgICAgICAgIG1faW1wbC5pbml0KGUsIHMpOworICAgIH0KKworICAgIEphdmFTdHJpbmcoanN0
cmluZyBzKQorICAgIHsKKyAgICAgICAgbV9pbXBsLmluaXQoZ2V0Sk5JRW52KCksIHMpOworICAg
IH0KKworICAgIGNvbnN0IGNoYXIqIHV0ZjgoKSBjb25zdCB7IHJldHVybiBtX2ltcGwudXRmOCgp
OyB9CisgICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5sZW5ndGgoKTsgfQor
ICAgIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuaW1wbCgpOyB9CisK
K3ByaXZhdGU6CisgICAgSmF2YVN0cmluZ0ltcGwgbV9pbXBsOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgQmluZGluZ3MKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFW
QV9CUklER0UpCisKKyNlbmRpZiAvLyBKYXZhU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2puaS9qbmlfanNvYmplY3QubW0KaW5kZXggMDcxMmY3Yy4uMTcyNTU5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qbmlfanNvYmplY3QubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2puaS9qbmlfanNvYmplY3QubW0KQEAgLTI5LDExICsyOSwxMSBAQAogI2lm
IEVOQUJMRShKQVZBX0JSSURHRSkKIAogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiSmF2
YVJ1bnRpbWVPYmplY3QuaCIKLSNpbmNsdWRlICJKTklCcmlkZ2UuaCIKICNpbmNsdWRlICJKTklV
dGlsaXR5LmgiCiAjaW5jbHVkZSAiSk5JVXRpbGl0eVByaXZhdGUuaCIKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKYXZhUnVudGltZU9iamVjdC5oIgorI2luY2x1ZGUgIkph
dmFTdHJpbmcuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlN0cmluZ1NvdXJjZVByb3ZpZGVyLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KTklCcmlkZ2VKU0MuaCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9qbmkvanNjL0pOSUJyaWRnZUpTQy5oCmluZGV4IDE0ZDA2YWQuLjA0NjlkMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0pOSUJyaWRnZUpTQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0pOSUJyaWRnZUpTQy5oCkBAIC0z
MCw4ICszMCw5IEBACiAjaWYgRU5BQkxFKEpBVkFfQlJJREdFKQogCiAjaW5jbHVkZSAiQnJpZGdl
SlNDLmgiCi0jaW5jbHVkZSAiSk5JQnJpZGdlLmgiCiAjaW5jbHVkZSAiSk5JVXRpbGl0eS5oIgor
I2luY2x1ZGUgIkphdmFNZXRob2QuaCIKKyNpbmNsdWRlICJKYXZhU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiSm9iamVjdFdyYXBwZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04Nyw0ICs4OCw0IEBA
IHByaXZhdGU6CiAKICNlbmRpZiAvLyBFTkFCTEUoSkFWQV9CUklER0UpCiAKLSNlbmRpZiAvLyBK
TklCcmlkZ2VfaAorI2VuZGlmIC8vIEpOSUJyaWRnZUpTQ19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0pOSUJyaWRnZVY4LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvam5pL3Y4L0pOSUJyaWRnZVY4LmgKaW5kZXggMzZmZDBhYy4uNDU1YjI1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KTklCcmlkZ2VWOC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSk5JQnJpZGdlVjguaApAQCAtMjgsNyArMjgsNyBAQAog
CiAjaWYgRU5BQkxFKEpBVkFfQlJJREdFKQogCi0jaW5jbHVkZSAiSk5JQnJpZGdlLmgiIC8vIEZv
ciBKYXZhU3RyaW5nCisjaW5jbHVkZSAiSmF2YVN0cmluZy5oIgogI2luY2x1ZGUgIkpvYmplY3RX
cmFwcGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2puaS92OC9KYXZhQ2xhc3NWOC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5p
L3Y4L0phdmFDbGFzc1Y4LmNwcAppbmRleCAzYzBhYmZhLi4zM2RhZDQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFDbGFzc1Y4LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFDbGFzc1Y4LmNwcApAQCAtMjgsNiArMjgsOCBAQAog
CiAjaWYgRU5BQkxFKEpBVkFfQlJJREdFKQogCisjaW5jbHVkZSAiSmF2YU1ldGhvZC5oIgorCiB1
c2luZyBuYW1lc3BhY2UgSlNDOjpCaW5kaW5nczsKIAogSmF2YUNsYXNzOjpKYXZhQ2xhc3Moam9i
amVjdCBhbkluc3RhbmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92
OC9KYXZhQ2xhc3NWOC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KYXZhQ2xhc3NW
OC5oCmluZGV4IGQyZDVmMzEuLjgxN2U4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9qbmkvdjgvSmF2YUNsYXNzVjguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5p
L3Y4L0phdmFDbGFzc1Y4LmgKQEAgLTM4LDYgKzM4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5h
bWVzcGFjZSBCaW5kaW5ncyB7CiAKK2NsYXNzIEphdmFNZXRob2Q7CisKIHR5cGVkZWYgVmVjdG9y
PEphdmFNZXRob2QqPiBNZXRob2RMaXN0OwogdHlwZWRlZiBIYXNoTWFwPFdURjo6U3RyaW5nLCBN
ZXRob2RMaXN0Kj4gTWV0aG9kTGlzdE1hcDsKIHR5cGVkZWYgSGFzaE1hcDxXVEY6OlN0cmluZywg
SmF2YUZpZWxkKj4gRmllbGRNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL3Y4L0phdmFJbnN0YW5jZVY4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgv
SmF2YUluc3RhbmNlVjguY3BwCmluZGV4IGQwMzM4NjUuLmYwZTRkNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2YUluc3RhbmNlVjguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2YUluc3RhbmNlVjguY3BwCkBAIC0yOSw3ICsyOSw3
IEBACiAKICNpZiBFTkFCTEUoSkFWQV9CUklER0UpCiAKLSNpbmNsdWRlICJKTklCcmlkZ2UuaCIK
KyNpbmNsdWRlICJKYXZhTWV0aG9kLmgiCiAjaW5jbHVkZSAiSk5JVXRpbGl0eVByaXZhdGUuaCIK
ICNpbmNsdWRlICJKYXZhQ2xhc3NWOC5oIgogCg==
</data>
<flag name="review"
          id="76999"
          type_id="1"
          status="+"
          setter="jorlow"
    />
          </attachment>
      

    </bug>

</bugzilla>