<?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>6577</bug_id>
          
          <creation_ts>2006-01-16 00:44:17 -0800</creation_ts>
          <short_desc>Set up Page class and invert Frame / WebCoreFrameBridge ownership</short_desc>
          <delta_ts>2006-01-23 00:44:56 -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>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>28558</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-16 00:44:17 -0800</bug_when>
    <thetext>See attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28559</commentid>
    <comment_count>1</comment_count>
      <attachid>5715</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-16 00:45:33 -0800</bug_when>
    <thetext>Created attachment 5715
here&apos;s a first try - this fails two layout tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29526</commentid>
    <comment_count>2</comment_count>
      <attachid>5863</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-22 22:32:14 -0800</bug_when>
    <thetext>Created attachment 5863
ok, here&apos;s a version that works</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29527</commentid>
    <comment_count>3</comment_count>
      <attachid>5864</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-22 22:34:36 -0800</bug_when>
    <thetext>Created attachment 5864
ok, here&apos;s a version that works</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29528</commentid>
    <comment_count>4</comment_count>
      <attachid>5864</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-22 22:35:00 -0800</bug_when>
    <thetext>Comment on attachment 5864
ok, here&apos;s a version that works

Oops, accidentally attached twice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29545</commentid>
    <comment_count>5</comment_count>
      <attachid>5863</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-22 22:54:10 -0800</bug_when>
    <thetext>Comment on attachment 5863
ok, here&apos;s a version that works

Gave Maciej a few comments on IRC, nothing major. r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5715</attachid>
            <date>2006-01-16 00:45:33 -0800</date>
            <delta_ts>2006-01-22 22:32:14 -0800</delta_ts>
            <desc>here&apos;s a first try - this fails two layout tests</desc>
            <filename>Page-class-first-attempt.patch.txt</filename>
            <type>text/plain</type>
            <size>22505</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMTIwKQorKysgV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2
OCw5IEBACiAJCTY1NTJFN0FCMDk2QUExMUIwMDA2RjI0OCAvKiBXZWJDb3JlRnJhbWVOYW1lc3Bh
Y2VzLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUy
RTdBOTA5NkFBMTFCMDAwNkYyNDggLyogV2ViQ29yZUZyYW1lTmFtZXNwYWNlcy5tICovOyB9Owog
CQk2NTc0M0I1MjA5NzA3NkY4MDAxRTdDRUYgLyogUmVuZGVyU1ZHVGV4dC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTc0M0I1MDA5NzA3NkY4MDAx
RTdDRUYgLyogUmVuZGVyU1ZHVGV4dC5jcHAgKi87IH07CiAJCTY1NzQzQjUzMDk3MDc2RjgwMDFF
N0NFRiAvKiBSZW5kZXJTVkdUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTc0M0I1MTA5NzA3NkY4MDAxRTdDRUYgLyogUmVuZGVyU1ZHVGV4dC5o
ICovOyB9OworCQk2NUEyMTQ2ODA5N0EzMjkxMDBCOTA1MEEgLyogUGFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBMjE0NjcwOTdBMzI5MTAwQjkw
NTBBIC8qIFBhZ2UuaCAqLzsgfTsKKwkJNjVBMjE0ODQwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1l
VHJlZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjVBMjE0ODIwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZU5vZGUuY3BwICovOyB9Owor
CQk2NUEyMTQ4NTA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlTm9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBMjE0ODMwOTdBM0Y1MzAwQjkw
NTBBIC8qIEZyYW1lVHJlZU5vZGUuaCAqLzsgfTsKIAkJNjVBQzc5QTEwODMxRUQ2RDAwOTM4NUNF
IC8qIGFwcGVuZF9ub2RlX2NvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVBQzc5OUYwODMxRUQ2RDAwOTM4NUNFIC8qIGFwcGVuZF9ub2Rl
X2NvbW1hbmQuY3BwICovOyB9OwogCQk2NUFDNzlBMjA4MzFFRDZEMDA5Mzg1Q0UgLyogYXBwZW5k
X25vZGVfY29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVBQzc5QTAwODMxRUQ2RDAwOTM4NUNFIC8qIGFwcGVuZF9ub2RlX2NvbW1hbmQuaCAq
LzsgfTsKIAkJNjVBQzc5QTkwODMxRjAwNjAwOTM4NUNFIC8qIGFwcGx5X3N0eWxlX2NvbW1hbmQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBQzc5
QTcwODMxRjAwNjAwOTM4NUNFIC8qIGFwcGx5X3N0eWxlX2NvbW1hbmQuY3BwICovOyB9OwpAQCAt
MTgwNCw2ICsxODA3LDkgQEAKIAkJNjU3NDNCNTEwOTcwNzZGODAwMUU3Q0VGIC8qIFJlbmRlclNW
R1RleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR1RleHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5MTJCMEQwNTg2OTIxMDAwMTIzQTY5
IC8qIHhtbHNlcmlhbGl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0geG1sc2VyaWFsaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk2NTkxMkIwRTA1ODY5MjEw
MDAxMjNBNjkgLyogeG1sc2VyaWFsaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSB4bWxzZXJpYWxpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk2NUEyMTQ2NzA5N0EzMjkx
MDBCOTA1MEEgLyogUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1
MEEgLyogRnJhbWVUcmVlTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRnJhbWVUcmVlTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1
QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWVOb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVRyZWVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTY1QTY0MEYwMDUzM0JCMUYwMDg1RTc3NyAvKiBLV1FFeGNlcHRpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtXUUV4Y2Vw
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCTY1QUM3OTlGMDgzMUVENkQwMDkzODVDRSAvKiBhcHBlbmRfbm9kZV9jb21tYW5k
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IGFwcGVuZF9ub2RlX2NvbW1hbmQuY3BwOyBwYXRoID0gZWRpdGluZy9hcHBlbmRfbm9kZV9j
b21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CiAJCTY1QUM3OUEwMDgzMUVENkQwMDkzODVDRSAvKiBhcHBlbmRfbm9kZV9jb21t
YW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IGFwcGVuZF9ub2RlX2NvbW1hbmQuaDsgcGF0aCA9IGVkaXRpbmcvYXBwZW5kX25vZGVfY29tbWFu
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKQEAgLTI5ODQsNyArMjk5MCwxMCBAQAogCQk2NUJGMDIxODA5NzQ4MDYzMDBDNDMxOTYgLyog
cGFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNjVB
MjE0ODIwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZU5vZGUuY3BwICovLAorCQkJCTY1QTIx
NDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWVOb2RlLmggKi8sCiAJCQkJNjVCRjAyMjkw
OTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLywKKwkJCQk2NUEyMTQ2NzA5N0EzMjkxMDBC
OTA1MEEgLyogUGFnZS5oICovLAogCQkJCTY1QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFt
ZS5oICovLAogCQkJCTY1QkYwMjJCMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZVByaXZhdGUuaCAq
LywKIAkJCQk2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCAqLywKQEAg
LTQ5NzUsNiArNDk4NCw4IEBACiAJCQkJQThGRUZCMEEwOTc5RjQ3MjAwNTgzOUZEIC8qIFJlbmRl
ckZvcmVpZ25PYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RkVGQjMyMDk3OUY0RjYwMDU4
MzlGRCAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRkIyRTg0MDk3OUZENEYwMEJBNzAzRCAvKiBTaGFyZWQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTY1QTIxNDY4MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk2
NUEyMTQ4NTA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNGQjJGNDIwOTdBMjRCNTAwQkE3MDNEIC8qIFNlZ21lbnRlZFN0cmluZy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNGQjJGNzcwOTdBMkUxQTAwQkE3MDNEIC8qIEFyZW5hLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CkBAIC02ODYwLDYgKzY4NzEsNyBAQAogCQkJCUJDRkIyRjQxMDk3QTI0
QjUwMEJBNzAzRCAvKiBTZWdtZW50ZWRTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThG
RUZCMEIwOTc5RjQ3MjAwNTgzOUZEIC8qIFJlbmRlckZvcmVpZ25PYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThGRUZCMzEwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50SW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2NUEyMTQ4NDA5N0EzRjUzMDBCOTA1
MEEgLyogRnJhbWVUcmVlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0ZCMkY3NjA5N0Ey
RTFBMDBCQTcwM0QgLyogQXJlbmEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4OiBicmlkZ2UvbWFjL01hY0Zy
YW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gYnJpZGdlL21hYy9NYWNGcmFtZS5oCShyZXZpc2lvbiAxMjEy
MCkKKysrIGJyaWRnZS9tYWMvTWFjRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDYgKzMz
NSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG9PclJlZG8o
Y29uc3Qga2h0bWw6OkVkaXRDb21tYW5kUHRyICZjbWQsIGJvb2wgaXNSZWRvKTsKIAorICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2hGcm9tVmlldygpOworCiAgICAgV2ViQ29yZUZyYW1lQnJpZGdlICpf
YnJpZGdlOwogICAgIAogICAgIEtXUVNpZ25hbCBfc3RhcnRlZDsKSW5kZXg6IGJyaWRnZS9tYWMv
TWFjRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gYnJpZGdlL21hYy9NYWNGcmFtZS5tbQkocmV2aXNp
b24gMTIxMjApCisrKyBicmlkZ2UvbWFjL01hY0ZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzQsNyArMTM0LDggQEAgc3RhdGljIHZvaWQgcmVkaXJlY3Rpb25UaW1lck1vbml0b3Iodm9pZAog
fQogCiBNYWNGcmFtZTo6TWFjRnJhbWUoKQotICAgIDogX3N0YXJ0ZWQodGhpcywgU0lHTkFMKHN0
YXJ0ZWQoS0lPOjpKb2IgKikpKQorICAgIDogX2JyaWRnZShuaWwpCisgICAgLCBfc3RhcnRlZCh0
aGlzLCBTSUdOQUwoc3RhcnRlZChLSU86OkpvYiAqKSkpCiAgICAgLCBfY29tcGxldGVkKHRoaXMs
IFNJR05BTChjb21wbGV0ZWQoKSkpCiAgICAgLCBfY29tcGxldGVkV2l0aEJvb2wodGhpcywgU0lH
TkFMKGNvbXBsZXRlZChib29sKSkpCiAgICAgLCBfbW91c2VEb3duVmlldyhuaWwpCkBAIC0xNjcs
NyArMTY4LDkgQEAgTWFjRnJhbWU6On5NYWNGcmFtZSgpCiAgICAgZnJlZUNsaXBib2FyZCgpOwog
ICAgIGNsZWFyUmVjb3JkZWRGb3JtVmFsdWVzKCk7ICAgIAogICAgIAotICAgIGRlbGV0ZSBfd2lu
ZG93V2lkZ2V0OworICAgIFtfYnJpZGdlIGNsZWFyRnJhbWVdOworICAgIEtXUVJlbGVhc2UoX2Jy
aWRnZSk7CisgICAgX2JyaWRnZSA9IG5pbDsKIH0KIAogdm9pZCBNYWNGcmFtZTo6ZnJlZUNsaXBi
b2FyZCgpCkBAIC01NjUsMTMgKzU2OCw5IEBAIHZvaWQgTWFjRnJhbWU6OnN1Ym1pdEZvcm0oY29u
c3QgS1VSTCAmdXIKIAogdm9pZCBGcmFtZTo6ZnJhbWVEZXRhY2hlZCgpCiB7Ci0gICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGJlIGEgdmlydHVhbCBmdW5jdGlvbiwgd2l0aCB0aGUgZmlyc3QgcGFy
dCBpbiBNYWNGcmFtZSwgYW5kIHRoZSBzZWNvbmQKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgYSB2aXJ0dWFsIGZ1bmN0aW9uLCB3aXRoIHRoZSBzZWNvbmQgcGFydCBpbiBNYWNGcmFtZSwg
YW5kIHRoZSBmaXJzdAogICAgIC8vIHBhcnQgaW4gRnJhbWUsIHNvIGl0IHdvcmtzIGZvciBLSFRN
TCB0b28uCiAKLSAgICBLV1FfQkxPQ0tfRVhDRVBUSU9OUzsKLSAgICBbTWFjKHRoaXMpLT5icmlk
Z2UoKSBmcmFtZURldGFjaGVkXTsKLSAgICBLV1FfVU5CTE9DS19FWENFUFRJT05TOwotCiAgICAg
RnJhbWUgKnBhcmVudCA9IHBhcmVudEZyYW1lKCk7CiAgICAgaWYgKHBhcmVudCkgewogICAgICAg
ICBGcmFtZUxpc3QmIHBhcmVudEZyYW1lcyA9IHBhcmVudC0+ZC0+bV9mcmFtZXM7CkBAIC01ODEs
MTEgKzU4MCwxNCBAQCB2b2lkIEZyYW1lOjpmcmFtZURldGFjaGVkKCkKICAgICAgICAgICAgIGlm
IChjaGlsZC5tX2ZyYW1lID09IHRoaXMpIHsKICAgICAgICAgICAgICAgICBwYXJlbnQtPmRpc2Nv
bm5lY3RDaGlsZCgmY2hpbGQpOwogICAgICAgICAgICAgICAgIHBhcmVudEZyYW1lcy5yZW1vdmUo
aXQpOwotICAgICAgICAgICAgICAgIGRlcmVmKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisKKyAgICBLV1FfQkxPQ0tfRVhDRVBUSU9O
UzsKKyAgICBbTWFjKHRoaXMpLT5icmlkZ2UoKSBmcmFtZURldGFjaGVkXTsKKyAgICBLV1FfVU5C
TE9DS19FWENFUFRJT05TOwogfQogCiB2b2lkIE1hY0ZyYW1lOjp1cmxTZWxlY3RlZChjb25zdCBL
VVJMICZ1cmwsIGludCBidXR0b24sIGludCBzdGF0ZSwgY29uc3QgVVJMQXJncyAmYXJncykKQEAg
LTY1OCwxMSArNjYwLDcgQEAgT2JqZWN0Q29udGVudHMgKk1hY0ZyYW1lOjpjcmVhdGVQYXJ0KGNv
bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFs
bG93c1Njcm9sbGluZzphbGxvd3NTY3JvbGxpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luV2lkdGg6bWFyZ2luV2lkdGgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJn
aW5IZWlnaHQ6bWFyZ2luSGVpZ2h0XTsKLSAgICAgICAgLy8gVGhpcyBjYWxsIG5lZWRzIHRvIHJl
dHVybiBhbiBvYmplY3Qgd2l0aCBhIHJlZiwgc2luY2UgdGhlIGNhbGxlciB3aWxsIGV4cGVjdCB0
byBvd24gaXQuCi0gICAgICAgIC8vIGNoaWxkQnJpZGdlIG93bnMgdGhlIG9ubHkgcmVmIHNvIGZh
ci4KICAgICAgICAgcGFydCA9IFtjaGlsZEJyaWRnZSBwYXJ0XTsKLSAgICAgICAgaWYgKHBhcnQp
Ci0gICAgICAgICAgICBwYXJ0LT5yZWYoKTsKICAgICB9CiAKICAgICByZXR1cm4gcGFydDsKQEAg
LTI5OTMsMTEgKzI5OTEsMTUgQEAgdm9pZCBNYWNGcmFtZTo6dG9rZW5pemVyUHJvY2Vzc2VkRGF0
YSgpCiAgICAgW19icmlkZ2UgdG9rZW5pemVyUHJvY2Vzc2VkRGF0YV07CiB9CiAKLXZvaWQgTWFj
RnJhbWU6OnNldEJyaWRnZShXZWJDb3JlRnJhbWVCcmlkZ2UgKnApCit2b2lkIE1hY0ZyYW1lOjpz
ZXRCcmlkZ2UoV2ViQ29yZUZyYW1lQnJpZGdlICpicmlkZ2UpCiB7IAotICAgIGlmIChfYnJpZGdl
ICE9IHApCi0gICAgICAgIGRlbGV0ZSBfd2luZG93V2lkZ2V0OwotICAgIF9icmlkZ2UgPSBwOwor
ICAgIGlmIChfYnJpZGdlID09IGJyaWRnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZGVsZXRl
IF93aW5kb3dXaWRnZXQ7CisgICAgS1dRUmV0YWluKGJyaWRnZSk7CisgICAgS1dRUmVsZWFzZShf
YnJpZGdlKTsKKyAgICBfYnJpZGdlID0gYnJpZGdlOwogICAgIF93aW5kb3dXaWRnZXQgPSBuZXcg
S1dRV2luZG93V2lkZ2V0KF9icmlkZ2UpOwogfQogCkBAIC0zNTg1LDMgKzM1ODcsOCBAQCBib29s
IE1hY0ZyYW1lOjpkaXNwYXRjaERyYWdTcmNFdmVudChjb25zCiAgICAgYm9vbCBub0RlZmF1bHRQ
cm9jID0gZC0+bV92aWV3LT5kaXNwYXRjaERyYWdFdmVudChldmVudFR5cGUsIF9kcmFnU3JjLmdl
dCgpLCBsb2MsIF9kcmFnQ2xpcGJvYXJkKTsKICAgICByZXR1cm4gIW5vRGVmYXVsdFByb2M7CiB9
CisKK3ZvaWQgTWFjRnJhbWU6OmRldGFjaEZyb21WaWV3KCkKK3sKKyAgICBzZXRWaWV3KDApOwor
fQpJbmRleDogYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBi
cmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oCShyZXZpc2lvbiAxMjEyMCkKKysrIGJyaWRn
ZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MSwxMiArMTkx
LDYgQEAgdHlwZWRlZiBlbnVtCiAgICAgUmVuZGVyQXJlbmEgKl9yZW5kZXJQYXJ0QXJlbmE7CiAg
ICAgQk9PTCBfc2hvdWxkQ3JlYXRlUmVuZGVyZXJzOwogCi0gICAgV2ViQ29yZUZyYW1lQnJpZGdl
ICpfbmV4dFNpYmxpbmc7Ci0gICAgV2ViQ29yZUZyYW1lQnJpZGdlICpfcHJldmlvdXNTaWJsaW5n
OwotICAgIFdlYkNvcmVGcmFtZUJyaWRnZSAqX2ZpcnN0Q2hpbGQ7Ci0gICAgV2ViQ29yZUZyYW1l
QnJpZGdlICpfbGFzdENoaWxkOwotICAgIGludCBfY2hpbGRDb3VudDsKLQogICAgIE5TU3RyaW5n
ICpfZnJhbWVOYW1lc3BhY2U7CiB9CiAKQEAgLTI2Miw2ICsyNTYsNyBAQCB0eXBlZGVmIGVudW0K
IC0gKHZvaWQpZW5kOwogLSAodm9pZClzdG9wOwogCistICh2b2lkKWNsZWFyRnJhbWU7CiAtICh2
b2lkKWhhbmRsZUZhbGxiYWNrQ29udGVudDsKIAogLSAoTlNVUkwgKilVUkw7CkluZGV4OiBicmlk
Z2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBicmlkZ2UvbWFjL1dl
YkNvcmVGcmFtZUJyaWRnZS5tbQkocmV2aXNpb24gMTIxMjApCisrKyBicmlkZ2UvbWFjL1dlYkNv
cmVGcmFtZUJyaWRnZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM2LDM0ICsyMzYsNDEgQEAgc3Rh
dGljIEJPT0wgaXNDYXNlU2Vuc2l0aXZlRXF1YWwoTlNTdHJpbgogc3RhdGljIGJvb2wgaW5pdGlh
bGl6ZWRPYmplY3RDYWNoZVNpemUgPSBGQUxTRTsKIHN0YXRpYyBib29sIGluaXRpYWxpemVkS0pT
ID0gRkFMU0U7CiAKK3N0YXRpYyBpbmxpbmUgV2ViQ29yZUZyYW1lQnJpZGdlICpCcmlkZ2UoRnJh
bWUgKmZyYW1lKQoreworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
cmV0dXJuIE1hYyhmcmFtZSktPmJyaWRnZSgpOworfQorCiAtIChXZWJDb3JlRnJhbWVCcmlkZ2Ug
KilmaXJzdENoaWxkCiB7Ci0gICAgcmV0dXJuIF9maXJzdENoaWxkOworICAgIHJldHVybiBCcmlk
Z2UobV9mcmFtZS0+Zmlyc3RDaGlsZCgpKTsKIH0KIAogLSAoV2ViQ29yZUZyYW1lQnJpZGdlICop
bGFzdENoaWxkCiB7Ci0gICAgcmV0dXJuIF9sYXN0Q2hpbGQ7CisgICAgcmV0dXJuIEJyaWRnZSht
X2ZyYW1lLT5sYXN0Q2hpbGQoKSk7CiB9CiAKIC0gKHVuc2lnbmVkKWNoaWxkQ291bnQKIHsKLSAg
ICByZXR1cm4gX2NoaWxkQ291bnQ7CisgICAgcmV0dXJuIG1fZnJhbWUtPmNoaWxkQ291bnQoKTsK
IH0KIAogLSAoV2ViQ29yZUZyYW1lQnJpZGdlICopcHJldmlvdXNTaWJsaW5nOwogewotICAgIHJl
dHVybiBfcHJldmlvdXNTaWJsaW5nOworICAgIHJldHVybiBCcmlkZ2UobV9mcmFtZS0+cHJldmlv
dXNTaWJsaW5nKCkpOwogfQogCiAtIChXZWJDb3JlRnJhbWVCcmlkZ2UgKiluZXh0U2libGluZzsK
IHsKLSAgICByZXR1cm4gX25leHRTaWJsaW5nOworICAgIHJldHVybiBCcmlkZ2UobV9mcmFtZS0+
bmV4dFNpYmxpbmcoKSk7CiB9CiAKIC0gKEJPT0wpaXNEZXNjZW5kYW50T2ZGcmFtZTooV2ViQ29y
ZUZyYW1lQnJpZGdlICopYW5jZXN0b3IKIHsKLSAgICBmb3IgKFdlYkNvcmVGcmFtZUJyaWRnZSAq
ZnJhbWUgPSBzZWxmOyBmcmFtZTsgZnJhbWUgPSAoV2ViQ29yZUZyYW1lQnJpZGdlICopW2ZyYW1l
IHBhcmVudF0pCisgICAgZm9yIChXZWJDb3JlRnJhbWVCcmlkZ2UgKmZyYW1lID0gc2VsZjsgZnJh
bWU7IGZyYW1lID0gW2ZyYW1lIHBhcmVudF0pCiAgICAgICAgIGlmIChmcmFtZSA9PSBhbmNlc3Rv
cikKICAgICAgICAgICAgIHJldHVybiBZRVM7CiAKQEAgLTMwMyw0MyArMzEwLDEyIEBAIHN0YXRp
YyBib29sIGluaXRpYWxpemVkS0pTID0gRkFMU0U7CiAKIC0gKHZvaWQpYXBwZW5kQ2hpbGQ6KFdl
YkNvcmVGcmFtZUJyaWRnZSAqKWNoaWxkCiB7Ci0gICAgW2NoaWxkIHJldGFpbl07Ci0KLSAgICBb
Y2hpbGQgc2V0UGFyZW50OnNlbGZdOwotCi0gICAgV2ViQ29yZUZyYW1lQnJpZGdlICpsYXN0ID0g
X2xhc3RDaGlsZDsKLQotICAgIGlmIChsYXN0KSB7Ci0gICAgICAgIGxhc3QtPl9uZXh0U2libGlu
ZyA9IGNoaWxkOwotICAgICAgICBjaGlsZC0+X3ByZXZpb3VzU2libGluZyA9IGxhc3Q7Ci0gICAg
fSBlbHNlCi0gICAgICAgIF9maXJzdENoaWxkID0gY2hpbGQ7Ci0KLSAgICBfbGFzdENoaWxkID0g
Y2hpbGQ7Ci0KLSAgICBfY2hpbGRDb3VudCsrOwotCi0gICAgQVNTRVJUKGNoaWxkLT5fbmV4dFNp
YmxpbmcgPT0gbmlsKTsKKyAgICBtX2ZyYW1lLT5hcHBlbmRDaGlsZChbY2hpbGQgcGFydF0pOwog
fQogCiAtICh2b2lkKXJlbW92ZUNoaWxkOihXZWJDb3JlRnJhbWVCcmlkZ2UgKiljaGlsZAogewot
ICAgIGlmIChjaGlsZC0+X3ByZXZpb3VzU2libGluZykKLSAgICAgICAgY2hpbGQtPl9wcmV2aW91
c1NpYmxpbmctPl9uZXh0U2libGluZyA9IGNoaWxkLT5fbmV4dFNpYmxpbmc7Ci0gICAgZWxzZQot
ICAgICAgICBfZmlyc3RDaGlsZCA9IGNoaWxkLT5fbmV4dFNpYmxpbmc7Ci0gICAgCi0gICAgaWYg
KGNoaWxkLT5fbmV4dFNpYmxpbmcpCi0gICAgICAgIGNoaWxkLT5fbmV4dFNpYmxpbmctPl9wcmV2
aW91c1NpYmxpbmcgPSBjaGlsZC0+X3ByZXZpb3VzU2libGluZzsgCi0gICAgZWxzZQotICAgICAg
ICBfbGFzdENoaWxkID0gY2hpbGQtPl9wcmV2aW91c1NpYmxpbmc7Ci0KLSAgICBjaGlsZC0+X3By
ZXZpb3VzU2libGluZyA9IG5pbDsKLSAgICBjaGlsZC0+X25leHRTaWJsaW5nID0gbmlsOwotCi0g
ICAgX2NoaWxkQ291bnQtLTsKLQotICAgIFtjaGlsZCByZWxlYXNlXTsKKyAgICBtX2ZyYW1lLT5y
ZW1vdmVDaGlsZChbY2hpbGQgcGFydF0pOwogfQogCiAtIChXZWJDb3JlRnJhbWVCcmlkZ2UgKilj
aGlsZEZyYW1lTmFtZWQ6KE5TU3RyaW5nICopbmFtZQpAQCAtNTcyLDExICs1NDgsOCBAQCBzdGF0
aWMgYm9vbCBpbml0aWFsaXplZEtKUyA9IEZBTFNFOwogewogICAgIFtzZWxmIHJlbW92ZUZyb21G
cmFtZV07CiAgICAgCi0gICAgaWYgKF9yZW5kZXJQYXJ0KSB7CisgICAgaWYgKF9yZW5kZXJQYXJ0
KQogICAgICAgICBfcmVuZGVyUGFydC0+ZGVyZWYoX3JlbmRlclBhcnRBcmVuYSk7Ci0gICAgfQot
ICAgIG1fZnJhbWUtPnNldEJyaWRnZShuaWwpOwotICAgIG1fZnJhbWUtPmRlcmVmKCk7CiAgICAg
ICAgIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KQEAgLTU5Miw3ICs1NjUsNiBAQCBzdGF0aWMg
Ym9vbCBpbml0aWFsaXplZEtKUyA9IEZBTFNFOwogICAgICAgICBfcmVuZGVyUGFydC0+ZGVyZWYo
X3JlbmRlclBhcnRBcmVuYSk7CiAgICAgfQogICAgIG1fZnJhbWUtPnNldEJyaWRnZShuaWwpOwot
ICAgIG1fZnJhbWUtPmRlcmVmKCk7CiAgICAgICAgIAogICAgIFtzdXBlciBmaW5hbGl6ZV07CiB9
CkBAIC04MjQsOCArNzk2LDE2IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVkS0pTID0gRkFMU0U7
CiAgICAgbV9mcmFtZS0+c3RvcCgpOwogfQogCistICh2b2lkKWNsZWFyRnJhbWUKK3sKKyAgICBt
X2ZyYW1lID0gMDsKK30KKwogLSAodm9pZCloYW5kbGVGYWxsYmFja0NvbnRlbnQKIHsKKyAgICAv
LyB0aGlzIG5lZWRzIHRvIGJlIGNhbGxhYmxlIGV2ZW4gYWZ0ZXIgdGVhcmRvd24gb2YgdGhlIGZy
YW1lCisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CiAgICAgbV9mcmFtZS0+aGFu
ZGxlRmFsbGJhY2tDb250ZW50KCk7CiB9CiAKQEAgLTExNTYsNyArMTEzNiw4IEBAIHN0YXRpYyBC
T09MIG5vd1ByaW50aW5nKFdlYkNvcmVGcmFtZUJyaWQKIAogLSAodm9pZClyZW1vdmVGcm9tRnJh
bWUKIHsKLSAgICBtX2ZyYW1lLT5zZXRWaWV3KDApOworICAgIGlmIChtX2ZyYW1lKQorICAgICAg
ICBtX2ZyYW1lLT5zZXRWaWV3KDApOwogfQogCiAtICh2b2lkKWluc3RhbGxJbkZyYW1lOihOU1Zp
ZXcgKil2aWV3CkluZGV4OiBicmlkZ2UvbWFjL1dlYkNvcmVQYWdlQnJpZGdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gYnJpZGdlL21hYy9XZWJDb3JlUGFnZUJyaWRnZS5oCShyZXZpc2lvbiAxMjEyMCkKKysr
IGJyaWRnZS9tYWMvV2ViQ29yZVBhZ2VCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyAr
NDcsNiBAQCBjbGFzcyBXZWJDb3JlRnJhbWVCcmlkZ2U7CiBAaW50ZXJmYWNlIFdlYkNvcmVQYWdl
QnJpZGdlIDogTlNPYmplY3QKIHsKICAgICBQYWdlICpfcGFnZTsKLSAgICBXZWJDb3JlRnJhbWVC
cmlkZ2UgKl9tYWluRnJhbWU7CiB9CiAKIC0gKGlkKWluaXRXaXRoTWFpbkZyYW1lOihXZWJDb3Jl
RnJhbWVCcmlkZ2UgKiltYWluRnJhbWU7CkluZGV4OiBicmlkZ2UvbWFjL1dlYkNvcmVQYWdlQnJp
ZGdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGJyaWRnZS9tYWMvV2ViQ29yZVBhZ2VCcmlkZ2UubW0JKHJl
dmlzaW9uIDEyMTIwKQorKysgYnJpZGdlL21hYy9XZWJDb3JlUGFnZUJyaWRnZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlUGFnZUJyaWRnZS5oIgogCisjaW1wb3J0ICJNYWNGcmFtZS5oIgorI2ltcG9ydCAiUGFn
ZS5oIgogI2ltcG9ydCAiV2ViQ29yZUZyYW1lQnJpZGdlLmgiCiAKIApAQCAtMzYsMjAgKzM4LDIw
IEBACiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICBfbWFpbkZyYW1lID0gW21haW5GcmFtZSByZXRhaW5dOworICAgIF9wYWdlID0gbmV3
IFBhZ2UoYWRvcHRSZWYoW21haW5GcmFtZSBwYXJ0XSkpOwogICAgIAogICAgIHJldHVybiBzZWxm
OwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbX21haW5GcmFtZSByZWxlYXNlXTsKKyAg
ICBkZWxldGUgX3BhZ2U7CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtIChXZWJDb3JlRnJh
bWVCcmlkZ2UgKiltYWluRnJhbWUKIHsKLSAgICByZXR1cm4gX21haW5GcmFtZTsKKyAgICByZXR1
cm4gTWFjKF9wYWdlLT5tYWluRnJhbWUoKSktPmJyaWRnZSgpOwogfQogCiBAZW5kCkluZGV4OiBw
YWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9GcmFtZS5oCShyZXZpc2lvbiAxMjEyMCkK
KysrIHBhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBL
SFRNTFBhcnRCcm93c2VyRXh0ZW5zaW9uOwogY2xhc3MgS0pTUHJveHlJbXBsOwogY2xhc3MgS0hU
TUxWaWV3OwogY2xhc3MgS0hUTUxTZXR0aW5nczsKK2NsYXNzIEZyYW1lVHJlZU5vZGU7CiAKIG5h
bWVzcGFjZSBLSlMgewogICAgIGNsYXNzIFBhdXNlZFRpbWVvdXRzOwpAQCAtMTA1OSw2ICsxMDYw
LDE4IEBAIHB1YmxpYzogIAogICB2aXJ0dWFsIHZvaWQgZGlkRmlyc3RMYXlvdXQoKSB7fQogCiAg
IGludCBmcmFtZUNvdW50OworCisgIAorICBGcmFtZVRyZWVOb2RlICp0cmVlTm9kZSgpOworICBG
cmFtZSAqbmV4dFNpYmxpbmcoKTsKKyAgRnJhbWUgKnByZXZpb3VzU2libGluZygpOworICBGcmFt
ZSAqZmlyc3RDaGlsZCgpOworICBGcmFtZSAqbGFzdENoaWxkKCk7CisgIGludCBjaGlsZENvdW50
KCk7CisgIHZvaWQgYXBwZW5kQ2hpbGQoRnJhbWUgKmNoaWxkKTsKKyAgdm9pZCByZW1vdmVDaGls
ZChGcmFtZSAqY2hpbGQpOworCisgIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tVmlldygpOwogfTsK
IAogI2VuZGlmCkluZGV4OiBwYWdlL0ZyYW1lVHJlZU5vZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBh
Z2UvRnJhbWVUcmVlTm9kZS5jcHAJKHJldmlzaW9uIDApCisrKyBwYWdlL0ZyYW1lVHJlZU5vZGUu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACisvLyAtKi0gYy1iYXNpYy1vZmZzZXQ6
IDQgLSotCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g
U3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZyYW1lVHJlZU5vZGUuaCIKKworI2luY2x1ZGUgPGt4
bWxjb3JlL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIk5vZGVJ
bXBsLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKK3VzaW5nIHN0ZDo6c3dhcDsKKworRnJh
bWVUcmVlTm9kZTo6fkZyYW1lVHJlZU5vZGUoKQoreworICAgIGZvciAoRnJhbWUgKmNoaWxkID0g
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZU5vZGUoKS0+bmV4dFNpYmxp
bmcoKSkKKyAgICAgICAgY2hpbGQtPmRldGFjaEZyb21WaWV3KCk7Cit9CisKK3ZvaWQgRnJhbWVU
cmVlTm9kZTo6YXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxGcmFtZT4gY2hpbGQpCit7CisgICAgY2hp
bGQtPnNldFBhcmVudChtX3RoaXNGcmFtZSk7CisKKyAgICBGcmFtZSAqb2xkTGFzdCA9IG1fbGFz
dENoaWxkOworICAgIG1fbGFzdENoaWxkID0gY2hpbGQuZ2V0KCk7CisKKyAgICBpZiAob2xkTGFz
dCkgeworICAgICAgICBjaGlsZC0+dHJlZU5vZGUoKS0+bV9wcmV2aW91c1NpYmxpbmcgPSBvbGRM
YXN0OworICAgICAgICBvbGRMYXN0LT50cmVlTm9kZSgpLT5tX25leHRTaWJsaW5nID0gY2hpbGQ7
CisgICAgfSBlbHNlCisgICAgICAgIG1fZmlyc3RDaGlsZCA9IGNoaWxkOworCisgICAgbV9jaGls
ZENvdW50Kys7CisKKyAgICBBU1NFUlQoIW1fbGFzdENoaWxkLT50cmVlTm9kZSgpLT5tX25leHRT
aWJsaW5nKTsKK30KKwordm9pZCBGcmFtZVRyZWVOb2RlOjpyZW1vdmVDaGlsZChGcmFtZSAqY2hp
bGQpCit7CisgICAgY2hpbGQtPnNldFBhcmVudCgwKTsKKyAgICBjaGlsZC0+ZGV0YWNoRnJvbVZp
ZXcoKTsKKworICAgIC8vIFNsaWdodGx5IHRyaWNreSB3YXkgdG8gcHJldmVudCBkZWxldGluZyB0
aGUgY2hpbGQgdW50aWwgd2UgYXJlIGRvbmUgd2l0aCBpdCwgdy9vCisgICAgLy8gZXh0cmEgcmVm
cy4gVGhlc2Ugc3dhcHMgbGVhdmUgdGhlIGNoaWxkIGluIGEgY2lyY3VsYXIgbGlzdCBieSBpdHNl
bGYuIENsZWFyaW5nIGl0cworICAgIC8vIHByZXZpb3VzIGFuZCBuZXh0IHdpbGwgdGhlbiBmaW5h
bGx5IGRlcmVmIGl0LgorCisgICAgc3dhcChtX2ZpcnN0Q2hpbGQgPT0gY2hpbGQgPyAKKyAgICAg
ICAgICAgICBtX2ZpcnN0Q2hpbGQgOiBjaGlsZC0+dHJlZU5vZGUoKS0+bV9wcmV2aW91c1NpYmxp
bmctPnRyZWVOb2RlKCktPm1fbmV4dFNpYmxpbmcsCisgICAgICAgICBjaGlsZC0+dHJlZU5vZGUo
KS0+bV9uZXh0U2libGluZyk7CisgICAgc3dhcChtX2xhc3RDaGlsZCA9PSBjaGlsZCA/IAorICAg
ICAgICAgICAgIG1fbGFzdENoaWxkIDogY2hpbGQtPnRyZWVOb2RlKCktPm1fbmV4dFNpYmxpbmct
PnRyZWVOb2RlKCktPm1fcHJldmlvdXNTaWJsaW5nLAorICAgICAgICAgY2hpbGQtPnRyZWVOb2Rl
KCktPm1fcHJldmlvdXNTaWJsaW5nKTsKKworICAgIGNoaWxkLT50cmVlTm9kZSgpLT5tX3ByZXZp
b3VzU2libGluZyA9IDA7CisgICAgUmVmUHRyPEZyYW1lPiByZWFwZXI7CisgICAgc3dhcChyZWFw
ZXIsIGNoaWxkLT50cmVlTm9kZSgpLT5tX25leHRTaWJsaW5nKTsKKworICAgIG1fY2hpbGRDb3Vu
dC0tOworfQpJbmRleDogcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9QYWdlLmgJKHJl
dmlzaW9uIDApCisrKyBwYWdlL1BhZ2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAor
Ly8gLSotIGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMw
NywgVVNBLgorICovCisKKyNpZm5kZWYgUEFHRV9ICisjZGVmaW5lIFBBR0VfSAorCisjaW5jbHVk
ZSA8a3htbGNvcmUvUmVmUHRyLmg+CisjaW5jbHVkZSA8a3htbGNvcmUvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgIkZyYW1lLmgiCisKK2NsYXNzIFBhZ2VQcml2YXRlOworCitjbGFzcyBQYWdlIHsK
KyBwdWJsaWM6CisgICAgUGFnZShQYXNzUmVmUHRyPEZyYW1lPiBtYWluRnJhbWUpIDogbV9tYWlu
RnJhbWUobWFpbkZyYW1lKSB7fQorICAgIH5QYWdlKCkgeyBpZiAobV9tYWluRnJhbWUpIG1fbWFp
bkZyYW1lLT5kZXRhY2hGcm9tVmlldygpOyB9CisgICAgRnJhbWUgKm1haW5GcmFtZSgpIHsgcmV0
dXJuIG1fbWFpbkZyYW1lLmdldCgpOyB9CisgcHJpdmF0ZToKKyAgICBSZWZQdHI8RnJhbWU+IG1f
bWFpbkZyYW1lOworfTsKKworICAgIAorI2VuZGlmIC8vIFBBR0VfSApJbmRleDogcGFnZS9GcmFt
ZVRyZWVOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9GcmFtZVRyZWVOb2RlLmgJKHJldmlzaW9u
IDApCisrKyBwYWdlL0ZyYW1lVHJlZU5vZGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBA
QAorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9u
LCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworI2lmbmRlZiBGUkFNRV9UUkVFX05PREVfSAor
I2RlZmluZSBGUkFNRV9UUkVFX05PREVfSAorCisjaW5jbHVkZSA8a3htbGNvcmUvUmVmUHRyLmg+
CisjaW5jbHVkZSA8a3htbGNvcmUvUGFzc1JlZlB0ci5oPgorCitjbGFzcyBGcmFtZTsKKworY2xh
c3MgRnJhbWVUcmVlTm9kZQoreworcHVibGljOgorICAgIEZyYW1lVHJlZU5vZGUoRnJhbWUgKnRo
aXNGcmFtZSkgCisgICAgICAgIDogbV90aGlzRnJhbWUodGhpc0ZyYW1lKQorICAgICAgICAsIG1f
cHJldmlvdXNTaWJsaW5nKDApCisgICAgICAgICwgbV9sYXN0Q2hpbGQoMCkKKyAgICAgICAgLCBt
X2NoaWxkQ291bnQoMCkKKyAgICB7CisgICAgfQorICAgIH5GcmFtZVRyZWVOb2RlKCk7CisKKyAg
ICBGcmFtZSAqbmV4dFNpYmxpbmcoKSB7IHJldHVybiBtX25leHRTaWJsaW5nLmdldCgpOyB9Cisg
ICAgRnJhbWUgKnByZXZpb3VzU2libGluZygpIHsgcmV0dXJuIG1fcHJldmlvdXNTaWJsaW5nOyB9
CisgICAgRnJhbWUgKmZpcnN0Q2hpbGQoKSB7IHJldHVybiBtX2ZpcnN0Q2hpbGQuZ2V0KCk7IH0K
KyAgICBGcmFtZSAqbGFzdENoaWxkKCkgeyByZXR1cm4gbV9sYXN0Q2hpbGQ7IH0KKyAgICBpbnQg
Y2hpbGRDb3VudCgpIHsgcmV0dXJuIG1fY2hpbGRDb3VudDsgfQorCisgICAgdm9pZCBhcHBlbmRD
aGlsZChQYXNzUmVmUHRyPEZyYW1lPiBjaGlsZCk7CisgICAgdm9pZCByZW1vdmVDaGlsZChGcmFt
ZSAqY2hpbGQpOworCisgcHJpdmF0ZToKKyAgICBGcmFtZSAqbV90aGlzRnJhbWU7CisKKyAgICAv
LyBGSVhNRTogdXNlIExpc3RSZWZQdHI/CisgICAgUmVmUHRyPEZyYW1lPiBtX25leHRTaWJsaW5n
OworICAgIEZyYW1lICptX3ByZXZpb3VzU2libGluZzsKKyAgICBSZWZQdHI8RnJhbWU+IG1fZmly
c3RDaGlsZDsKKyAgICBGcmFtZSAqbV9sYXN0Q2hpbGQ7CisgICAgaW50IG1fY2hpbGRDb3VudDsK
K307CisKKyNlbmRpZiAvLyBGUkFNRV9UUkVFX05PREVfSApJbmRleDogcGFnZS9GcmFtZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDEyMTIwKQorKysgcGFnZS9G
cmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIEZyYW1lOjpp
bml0KEtIVE1MVmlldyAqdmlldykKICAgCiAgIGZyYW1lQ291bnQgPSAwOwogCi0gIGQgPSBuZXcg
RnJhbWVQcml2YXRlKHBhcmVudCgpKTsKKyAgZCA9IG5ldyBGcmFtZVByaXZhdGUocGFyZW50KCks
IHRoaXMpOwogCiAgIGQtPm1fdmlldyA9IHZpZXc7CiAgIHNldFdpZGdldCggZC0+bV92aWV3ICk7
CkBAIC0zODIzLDMgKzM4MjMsNDcgQEAgYm9vbCBGcmFtZTo6aXNDb21wbGV0ZSgpCiB7CiAgICAg
cmV0dXJuIGQtPm1fYkNvbXBsZXRlOwogfQorCitGcmFtZVRyZWVOb2RlICpGcmFtZTo6dHJlZU5v
ZGUoKQoreworICAgIHJldHVybiAmZC0+bV90cmVlTm9kZTsKK30KKworRnJhbWUgKkZyYW1lOjpu
ZXh0U2libGluZygpCit7CisgICAgcmV0dXJuIHRyZWVOb2RlKCktPm5leHRTaWJsaW5nKCk7Cit9
CisKK0ZyYW1lICpGcmFtZTo6cHJldmlvdXNTaWJsaW5nKCkKK3sKKyAgICByZXR1cm4gZC0+bV90
cmVlTm9kZS5wcmV2aW91c1NpYmxpbmcoKTsKK30KKworRnJhbWUgKkZyYW1lOjpmaXJzdENoaWxk
KCkKK3sKKyAgICByZXR1cm4gdHJlZU5vZGUoKS0+Zmlyc3RDaGlsZCgpOworfQorCitGcmFtZSAq
RnJhbWU6Omxhc3RDaGlsZCgpCit7CisgICAgcmV0dXJuIHRyZWVOb2RlKCktPmxhc3RDaGlsZCgp
OworfQorCitpbnQgRnJhbWU6OmNoaWxkQ291bnQoKQoreworICAgIHJldHVybiB0cmVlTm9kZSgp
LT5jaGlsZENvdW50KCk7Cit9CisKK3ZvaWQgRnJhbWU6OmFwcGVuZENoaWxkKEZyYW1lICpjaGls
ZCkKK3sKKyAgICB0cmVlTm9kZSgpLT5hcHBlbmRDaGlsZChhZG9wdFJlZihjaGlsZCkpOworfQor
Cit2b2lkIEZyYW1lOjpyZW1vdmVDaGlsZChGcmFtZSAqY2hpbGQpCit7CisgICAgdHJlZU5vZGUo
KS0+cmVtb3ZlQ2hpbGQoY2hpbGQpOworfQorCit2b2lkIEZyYW1lOjpkZXRhY2hGcm9tVmlldygp
Cit7Cit9CkluZGV4OiBwYWdlL0ZyYW1lUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2UvRnJh
bWVQcml2YXRlLmgJKHJldmlzaW9uIDEyMTIwKQorKysgcGFnZS9GcmFtZVByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgImNzcy9jc3NfdmFsdWVpbXBs
LmgiCiAjaW5jbHVkZSAiZWRpdGluZy9lZGl0X2NvbW1hbmQuaCIKICNpbmNsdWRlICJlZGl0aW5n
L1NlbGVjdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJGcmFtZVRyZWVOb2RlLmgiCiAKIG5h
bWVzcGFjZSBLSU8KIHsKQEAgLTk2LDcgKzk3LDggQEAgZW51bSBSZWRpcmVjdGlvblNjaGVkdWxl
ZCB7CiBjbGFzcyBGcmFtZVByaXZhdGUKIHsKIHB1YmxpYzoKLSAgRnJhbWVQcml2YXRlKFFPYmpl
Y3QqIHBhcmVudCkKKyAgRnJhbWVQcml2YXRlKFFPYmplY3QgKnBhcmVudCwgRnJhbWUgKnRoaXNG
cmFtZSkKKyAgICAgIDogbV90cmVlTm9kZSh0aGlzRnJhbWUpCiAgIHsKICAgICBtX2RvYyA9IDBM
OwogICAgIG1fanNjcmlwdCA9IDBMOwpAQCAtMTgxLDYgKzE4Myw5IEBAIHB1YmxpYzoKICAgICAg
ICAgbV90eXBpbmdTdHlsZS0+ZGVyZWYoKTsKICAgfQogCisgIEZyYW1lVHJlZU5vZGUgbV90cmVl
Tm9kZTsKKworICAvLyBvbGQgc3R5bGUgZnJhbWUgaW5mbwogICBGcmFtZUxpc3QgbV9mcmFtZXM7
CiAgIFFWYWx1ZUxpc3Q8a2h0bWw6OkNoaWxkRnJhbWU+IG1fb2JqZWN0czsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5863</attachid>
            <date>2006-01-22 22:32:14 -0800</date>
            <delta_ts>2006-01-22 22:54:10 -0800</delta_ts>
            <desc>ok, here&apos;s a version that works</desc>
            <filename>Page-class-third-attempt.patch.txt</filename>
            <type>text/plain</type>
            <size>47697</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL3htbC9Eb2N1bWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL3ht
bC9Eb2N1bWVudEltcGwuY3BwCShyZXZpc2lvbiAxMjI4OSkKKysrIGtodG1sL3htbC9Eb2N1bWVu
dEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIzLDggKzExMjMsMTMgQEAgdm9pZCBEb2N1
bWVudEltcGw6Om9wZW4oICApCiAKIHZvaWQgRG9jdW1lbnRJbXBsOjppbXBsaWNpdE9wZW4oKQog
ewotICAgIGlmIChtX3Rva2VuaXplcikKKyAgICBpZiAobV90b2tlbml6ZXIpIHsKKyAgICAgICAg
Ly8gV2UgaGF2ZSB0byBjbGVhciB0aGUgdG9rZW5pemVyIHRvIGF2b2lkIHBvc3NpYmx5IHRyaWdn
ZXJpbmcKKyAgICAgICAgLy8gdGhlIG9ubG9hZCBoYW5kbGVyIHdoZW4gY2xvc2luZyBhcyBhIHNp
ZGUgZWZmZWN0IG9mIG9wZW5pbmcKKyAgICAgICAgZGVsZXRlIG1fdG9rZW5pemVyOworICAgICAg
ICBtX3Rva2VuaXplciA9IDA7CiAgICAgICAgIGNsb3NlKCk7CisgICAgfQogCiAgICAgY2xlYXIo
KTsKICAgICBtX3Rva2VuaXplciA9IGNyZWF0ZVRva2VuaXplcigpOwpJbmRleDoga2h0bWwvZWNt
YS9ranNfd2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9lY21hL2tqc193aW5kb3cuY3Bw
CShyZXZpc2lvbiAxMjI4OSkKKysrIGtodG1sL2VjbWEva2pzX3dpbmRvdy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyODksMTMgKzEyODksMTQgQEAgYm9vbCBXaW5kb3c6OmlzU2FmZVNjcmlwdChF
eGVjU3RhdGUgKmV4ZQogICBET006OkRvY3VtZW50SW1wbCogdGhpc0RvY3VtZW50ID0gbV9mcmFt
ZS0+ZG9jdW1lbnQoKTsKICAgRE9NOjpEb2N1bWVudEltcGwqIGFjdERvY3VtZW50ID0gYWN0aXZl
UGFydC0+ZG9jdW1lbnQoKTsKIAotICBpZiAoIWFjdERvY3VtZW50KSB7Ci0gICAga2REZWJ1Zyg2
MDcwKSA8PCAiV2luZG93Ojppc1NhZmVTY3JpcHQ6IGFjdGl2ZSBmcmFtZSBoYXMgbm8gZG9jdW1l
bnQhIiA8PCBlbmRsOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQorICBET006OkRPTVN0cmluZyBh
Y3REb21haW47CiAKLSAgRE9NOjpET01TdHJpbmcgYWN0RG9tYWluID0gYWN0RG9jdW1lbnQtPmRv
bWFpbigpOworICBpZiAoIWFjdERvY3VtZW50KQorICAgIGFjdERvbWFpbiA9IGFjdGl2ZVBhcnQt
PnVybCgpLmhvc3QoKTsKKyAgZWxzZQorICAgIGFjdERvbWFpbiA9IGFjdERvY3VtZW50LT5kb21h
aW4oKTsKICAgCisgIC8vIEZJWE1FOiB0aGlzIHJlYWxseSBzaG91bGQgYmUgZXhwbGljaXRseSBj
aGVja2luZyBmb3IgdGhlICJmaWxlOiIgcHJvdG9jb2wgaW5zdGVhZAogICAvLyBBbHdheXMgYWxs
b3cgbG9jYWwgcGFnZXMgdG8gZXhlY3V0ZSBhbnkgSlMuCiAgIGlmIChhY3REb21haW4uaXNOdWxs
KCkpCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzE1LDYgKzEzMTYsNyBAQCBib29sIFdpbmRvdzo6
aXNTYWZlU2NyaXB0KEV4ZWNTdGF0ZSAqZXhlCiAgICAgICB0aGlzRG9tYWluID0gYW5jZXN0b3JQ
YXJ0LT5kb2N1bWVudCgpLT5kb21haW4oKTsKICAgfQogCisgIC8vIEZJWE1FOiB0aGlzIHNob3Vs
ZCBjaGVjayB0aGF0IFVSTCBzY2hlbWUgYW5kIHBvcnQgbWF0Y2ggdG9vLCBwcm9iYWJseQogICBp
ZiAoYWN0RG9tYWluID09IHRoaXNEb21haW4pCiAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTEzODcs
NyArMTM4OSw3IEBAIEpTTGF6eUV2ZW50TGlzdGVuZXIgKldpbmRvdzo6Z2V0SlNMYXp5RXYKICAg
cmV0dXJuIG5ldyBKU0xhenlFdmVudExpc3RlbmVyKGNvZGUsIHRoaXMsIG5vZGUsIGxpbmVOdW1i
ZXIpOwogfQogCi12b2lkIFdpbmRvdzo6Y2xlYXIoIEV4ZWNTdGF0ZSAqZXhlYyApCit2b2lkIFdp
bmRvdzo6Y2xlYXIoKQogewogICBKU0xvY2sgbG9jazsKICAgaWYgKG1fcmV0dXJuVmFsdWVTbG90
KQpJbmRleDoga2h0bWwvZWNtYS9ranNfYmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwv
ZWNtYS9ranNfYmluZGluZy5jcHAJKHJldmlzaW9uIDEyMjg5KQorKysga2h0bWwvZWNtYS9ranNf
YmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJ4
bWwvZG9tMl9ldmVudHNpbXBsLmgiCiAjaW5jbHVkZSAieG1sL0V2ZW50TmFtZXMuaCIKICNpbmNs
dWRlICJkb20vY3NzX3N0eWxlc2hlZXQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogCiAjaW5jbHVk
ZSA8a2RlYnVnLmg+CiAKQEAgLTE3NCw2ICsxNzUsMTQgQEAgdm9pZCBTY3JpcHRJbnRlcnByZXRl
cjo6bWFyaygpCiAgIH0KIH0KIAorRXhlY1N0YXRlICpTY3JpcHRJbnRlcnByZXRlcjo6Z2xvYmFs
RXhlYygpCit7CisgICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBhbnkgc2NyaXB0IGV4
ZWN1dGlvbiBoYXBwZW5pbmcgaW4gdGhpcworICAgIC8vIGZyYW1lIGRvZXMgbm90IGRlc3Ryb3kg
aXQKKyAgICBtX2ZyYW1lLT5rZWVwQWxpdmUoKTsKKyAgICByZXR1cm4gSW50ZXJwcmV0ZXI6Omds
b2JhbEV4ZWMoKTsKK30KKwogdm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6dXBkYXRlRE9NTm9kZURv
Y3VtZW50KERPTTo6Tm9kZUltcGwgKm5vZGUsIERPTTo6RG9jdW1lbnRJbXBsICpvbGREb2MsIERP
TTo6RG9jdW1lbnRJbXBsICpuZXdEb2MpCiB7CiAgIERPTU5vZGUgKmNhY2hlZE9iamVjdCA9IGdl
dERPTU5vZGVGb3JEb2N1bWVudChvbGREb2MsIG5vZGUpOwpJbmRleDoga2h0bWwvZWNtYS9ranNf
d2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9ranNfd2luZG93LmgJKHJldmlzaW9u
IDEyMjg5KQorKysga2h0bWwvZWNtYS9ranNfd2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2
MSw3ICsxNjEsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBKU0V2ZW50TGlzdGVuZXIgKmdldEpT
RXZlbnRMaXN0ZW5lcihKU1ZhbHVlKiwgYm9vbCBodG1sID0gZmFsc2UpOwogICAgIEpTVW5wcm90
ZWN0ZWRFdmVudExpc3RlbmVyICpnZXRKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihKU1ZhbHVl
KiwgYm9vbCBodG1sID0gZmFsc2UpOwogICAgIEpTTGF6eUV2ZW50TGlzdGVuZXIgKmdldEpTTGF6
eUV2ZW50TGlzdGVuZXIoY29uc3QgRE9NOjpET01TdHJpbmcmIGNvZGUsIERPTTo6Tm9kZUltcGwq
LCBpbnQgbGluZW5vID0gMCk7Ci0gICAgdm9pZCBjbGVhcihFeGVjU3RhdGUgKik7CisgICAgdm9p
ZCBjbGVhcigpOwogICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUgKikgY29u
c3Q7CiAKICAgICAvLyBTZXQgdGhlIGN1cnJlbnQgImV2ZW50IiBvYmplY3QKSW5kZXg6IGtodG1s
L2VjbWEva2pzX2JpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9lY21hL2tqc19iaW5kaW5n
LmgJKHJldmlzaW9uIDEyMjg5KQorKysga2h0bWwvZWNtYS9ranNfYmluZGluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgYm9vbCB3YXNS
dW5CeVVzZXJHZXN0dXJlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFyaygpOworICAg
IHZpcnR1YWwgRXhlY1N0YXRlICpnbG9iYWxFeGVjKCk7CiAgICAgCiAgICAgRE9NOjpFdmVudElt
cGwgKmdldEN1cnJlbnRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXZ0OyB9CiAKSW5kZXg6IGto
dG1sL2VjbWEva2pzX3Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9lY21hL2tqc19wcm94
eS5jcHAJKHJldmlzaW9uIDEyMjg5KQorKysga2h0bWwvZWNtYS9ranNfcHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgS0pTUHJveHlJbXBsOjpjbGVhcigpIHsK
ICAgaWYgKG1fc2NyaXB0KSB7CiAgICAgV2luZG93ICp3aW4gPSBXaW5kb3c6OnJldHJpZXZlV2lu
ZG93KG1fZnJhbWUpOwogICAgIGlmICh3aW4pCi0gICAgICAgIHdpbi0+Y2xlYXIoIG1fc2NyaXB0
LT5nbG9iYWxFeGVjKCkgKTsKKyAgICAgICAgd2luLT5jbGVhcigpOwogICB9CiB9CiAKQEAgLTEw
OSw3ICsxMDksNiBAQCBLSlM6OlNjcmlwdEludGVycHJldGVyICpLSlNQcm94eUltcGw6OmluCiB7
CiAgIGlmICghbV9zY3JpcHQpCiAgICAgaW5pdFNjcmlwdCgpOwotICBtX2ZyYW1lLT5rZWVwQWxp
dmUoKTsKICAgcmV0dXJuIG1fc2NyaXB0OwogfQogCkluZGV4OiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxMjI4OSkKKysrIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsOSBAQAogCQk2NTUyRTdBQjA5NkFBMTFC
MDAwNkYyNDggLyogV2ViQ29yZUZyYW1lTmFtZXNwYWNlcy5tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU1MkU3QTkwOTZBQTExQjAwMDZGMjQ4IC8qIFdl
YkNvcmVGcmFtZU5hbWVzcGFjZXMubSAqLzsgfTsKIAkJNjU3NDNCNTIwOTcwNzZGODAwMUU3Q0VG
IC8qIFJlbmRlclNWR1RleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjU3NDNCNTAwOTcwNzZGODAwMUU3Q0VGIC8qIFJlbmRlclNWR1RleHQuY3Bw
ICovOyB9OwogCQk2NTc0M0I1MzA5NzA3NkY4MDAxRTdDRUYgLyogUmVuZGVyU1ZHVGV4dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU3NDNCNTEwOTcw
NzZGODAwMUU3Q0VGIC8qIFJlbmRlclNWR1RleHQuaCAqLzsgfTsKKwkJNjVBMjE0NjgwOTdBMzI5
MTAwQjkwNTBBIC8qIFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1QTIxNDY3MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggKi87IH07CisJCTY1
QTIxNDg0MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWVOb2RlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QTIxNDgyMDk3QTNGNTMwMEI5MDUw
QSAvKiBGcmFtZVRyZWVOb2RlLmNwcCAqLzsgfTsKKwkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBB
IC8qIEZyYW1lVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWVOb2RlLmggKi87
IH07CiAJCTY1QUM3OUExMDgzMUVENkQwMDkzODVDRSAvKiBhcHBlbmRfbm9kZV9jb21tYW5kLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QUM3OTlG
MDgzMUVENkQwMDkzODVDRSAvKiBhcHBlbmRfbm9kZV9jb21tYW5kLmNwcCAqLzsgfTsKIAkJNjVB
Qzc5QTIwODMxRUQ2RDAwOTM4NUNFIC8qIGFwcGVuZF9ub2RlX2NvbW1hbmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QUM3OUEwMDgzMUVENkQwMDkz
ODVDRSAvKiBhcHBlbmRfbm9kZV9jb21tYW5kLmggKi87IH07CiAJCTY1QUM3OUE5MDgzMUYwMDYw
MDkzODVDRSAvKiBhcHBseV9zdHlsZV9jb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QUM3OUE3MDgzMUYwMDYwMDkzODVDRSAvKiBhcHBs
eV9zdHlsZV9jb21tYW5kLmNwcCAqLzsgfTsKQEAgLTg1LDYgKzg4LDcgQEAKIAkJNjVDQkZFRkEw
OTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmll
dy5oICovOyB9OwogCQk2NURDMTZDNDA4MzFERDZGMDAyMjc0NEUgLyogY29tcG9zaXRlX2VkaXRf
Y29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NURDMTZDMjA4MzFERDZGMDAyMjc0NEUgLyogY29tcG9zaXRlX2VkaXRfY29tbWFuZC5jcHAg
Ki87IH07CiAJCTY1REMxNkM1MDgzMURENkYwMDIyNzQ0RSAvKiBjb21wb3NpdGVfZWRpdF9jb21t
YW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NURD
MTZDMzA4MzFERDZGMDAyMjc0NEUgLyogY29tcG9zaXRlX2VkaXRfY29tbWFuZC5oICovOyB9Owor
CQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyog
UGFnZS5jcHAgKi87IH07CiAJCTdFNkZFRUQ4MDg5ODU4MjMwMEM0NEMzRiAvKiBXZWJDb3JlU2Ny
aXB0RGVidWdnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdFNkZFRUQ2MDg5ODU4MjMwMEM0NEMzRiAvKiBXZWJDb3JlU2NyaXB0RGVidWdnZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RTZGRUVE
OTA4OTg1ODIzMDBDNDRDM0YgLyogV2ViQ29yZVNjcmlwdERlYnVnZ2VyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2RkVFRDcwODk4NTgyMzAwQzQ0
QzNGIC8qIFdlYkNvcmVTY3JpcHREZWJ1Z2dlci5tbSAqLzsgfTsKIAkJOTM3QTM2QTcwOTdFMkUz
MjAwRTRFRTJGIC8qIFVzZXJBZ2VudFN0eWxlU2hlZXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzN0EzNkE2MDk3RTJFMzIwMEU0RUUyRiAvKiBV
c2VyQWdlbnRTdHlsZVNoZWV0cy5jcHAgKi87IH07CkBAIC0xMTU4LDYgKzExNjIsOSBAQAogCQk2
NTc0M0I1MTA5NzA3NkY4MDAxRTdDRUYgLyogUmVuZGVyU1ZHVGV4dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTkxMkIwRDA1ODY5MjEwMDAxMjNBNjkgLyogeG1sc2VyaWFsaXplci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB4
bWxzZXJpYWxpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTY1OTEyQjBFMDU4NjkyMTAwMDEyM0E2OSAvKiB4bWxzZXJpYWxp
emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IHhtbHNlcmlhbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CisJCTY1QTIxNDY3MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTY1QTIxNDgyMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWVOb2RlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZVRyZWVOb2RlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVBMjE0ODMwOTdBM0Y1MzAwQjkwNTBB
IC8qIEZyYW1lVHJlZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZy
YW1lVHJlZU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVBNjQwRjAwNTMz
QkIxRjAwODVFNzc3IC8qIEtXUUV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS1dRRXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVBQzc5OUYwODMx
RUQ2RDAwOTM4NUNFIC8qIGFwcGVuZF9ub2RlX2NvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gYXBwZW5kX25vZGVfY29tbWFu
ZC5jcHA7IHBhdGggPSBlZGl0aW5nL2FwcGVuZF9ub2RlX2NvbW1hbmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVBQzc5QTAw
ODMxRUQ2RDAwOTM4NUNFIC8qIGFwcGVuZF9ub2RlX2NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYXBwZW5kX25vZGVfY29tbWFuZC5o
OyBwYXRoID0gZWRpdGluZy9hcHBlbmRfbm9kZV9jb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTE3Nyw2ICsxMTg0LDcg
QEAKIAkJNjVEQzE2QzIwODMxREQ2RjAwMjI3NDRFIC8qIGNvbXBvc2l0ZV9lZGl0X2NvbW1hbmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gY29tcG9zaXRlX2VkaXRfY29tbWFuZC5jcHA7IHBhdGggPSBlZGl0aW5nL2NvbXBvc2l0ZV9l
ZGl0X2NvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJNjVEQzE2QzMwODMxREQ2RjAwMjI3NDRFIC8qIGNvbXBvc2l0ZV9l
ZGl0X2NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gY29tcG9zaXRlX2VkaXRfY29tbWFuZC5oOyBwYXRoID0gZWRpdGluZy9jb21wb3Np
dGVfZWRpdF9jb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyogS1dRRXhjZXB0
aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEtXUUV4Y2VwdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyog
UGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNkZFRUQ2MDg5ODU4MjMwMEM0NEMzRiAv
KiBXZWJDb3JlU2NyaXB0RGVidWdnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlU2NyaXB0RGVidWdnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTdFNkZFRUQ3MDg5
ODU4MjMwMEM0NEMzRiAvKiBXZWJDb3JlU2NyaXB0RGVidWdnZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVTY3JpcHRE
ZWJ1Z2dlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CiAJCTg0MDYzMzA3MDczMUE3NzIwMERCMUZEMSAvKiBsaWJ4c2x0LmR5bGliICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVk
Lm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJ4c2x0LmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGli
eHNsdC5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTIzMzcsMTIgKzIz
NDUsMTYgQEAKIAkJNjVCRjAyMTgwOTc0ODA2MzAwQzQzMTk2IC8qIHBhZ2UgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTY1QkYwMjI5MDk3NDgxNjMwMEM0
MzE5NiAvKiBGcmFtZS5jcHAgKi8sCiAJCQkJNjVCRjAyMkEwOTc0ODE2MzAwQzQzMTk2IC8qIEZy
YW1lLmggKi8sCisJCQkJNjVCRjAyMjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLywK
IAkJCQk2NUJGMDIyQjA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWVQcml2YXRlLmggKi8sCi0JCQkJ
NjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCisJCQkJNjVBMjE0
ODMwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZU5vZGUuaCAqLywKKwkJCQk2NUEyMTQ4MjA5
N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlTm9kZS5jcHAgKi8sCiAJCQkJNjVDQkZFRjgwOTc0
RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovLAorCQkJCTY1Q0JGRUY3MDk3NEY2MDcwMDFE
QUMyNSAvKiBGcmFtZVZpZXcuY3BwICovLAogCQkJCTFBM0Q4NTU2MDk3NjQ3QjQwMDJDODVEMSAv
KiBPYmplY3RDb250ZW50cy5oICovLAorCQkJCTY1QTIxNDY3MDk3QTMyOTEwMEI5MDUwQSAvKiBQ
YWdlLmggKi8sCisJCQkJNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovLAog
CQkJKTsKIAkJCXBhdGggPSBwYWdlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQy
ODksNiArNDMwMSw4IEBACiAJCQkJQThGRUZCMEEwOTc5RjQ3MjAwNTgzOUZEIC8qIFJlbmRlckZv
cmVpZ25PYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RkVGQjMyMDk3OUY0RjYwMDU4MzlG
RCAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RkIyRTg0MDk3OUZENEYwMEJBNzAzRCAvKiBTaGFyZWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTY1
QTIxNDY4MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk2NUEy
MTQ4NTA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNGQjJGNDIwOTdBMjRCNTAwQkE3MDNEIC8qIFNlZ21lbnRlZFN0cmluZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNGQjJGNzcwOTdBMkUxQTAwQkE3MDNEIC8qIEFyZW5hLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzFBMzdBRDA5N0M3MTVGMDAxOUYzRDggLyogRE9NLmggaW4gSGVhZGVycyAq
LywKQEAgLTUzOTUsNiArNTQwOSw3IEBACiAJCQkJQkNGQjJGNDEwOTdBMjRCNTAwQkE3MDNEIC8q
IFNlZ21lbnRlZFN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEZFRkIwQjA5NzlGNDcy
MDA1ODM5RkQgLyogUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OEZFRkIzMTA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnRJbXBsLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTY1QTIxNDg0MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRy
ZWVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRkIyRjc2MDk3QTJFMUEwMEJBNzAzRCAv
KiBBcmVuYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzFBMzdBRTA5N0M3MTVGMDAxOUYzRDgg
LyogRE9NLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxQTM3QjEwOTdDNzE1RjAwMTlGM0Q4IC8q
IERPTUNTUy5tbSBpbiBTb3VyY2VzICovLApAQCAtNTQ0Miw2ICs1NDU3LDcgQEAKIAkJCQlCQ0VB
NDg4QjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0VBNDg4RDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGV4dEZyYWdtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRUE0ODhGMDk3RDkzMDIwMDk0QzlFNCAvKiB0YWJsZV9sYXlvdXQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjVGRUE4NjkwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM3QTM2QTcwOTdFMkUzMjAwRTRFRTJGIC8qIFVzZXJB
Z2VudFN0eWxlU2hlZXRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0OTQ4MDk3RjBGNzcw
MDk0QzlFNCAvKiBCcm93c2VyRXh0ZW5zaW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQUI2
N0QxQTgwOTdGM0FFMzAwRjkzOTJFIC8qIFJlbmRlclRleHRGaWVsZC5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEy
Mjk1KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI0IEBACisyMDA2
LTAxLTIyICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICAtIFNldCB1cCBQYWdl
IGNsYXNzIGFuZCBpbnZlcnQgRnJhbWUgLyBXZWJDb3JlRnJhbWVCcmlkZ2Ugb3duZXJzaGlwCisg
ICAgICAgIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3
NworCisgICAgICAgICogYnJpZGdlL21hYy9NYWNGcmFtZS5oOgorICAgICAgICAqIGJyaWRnZS9t
YWMvTWFjRnJhbWUubW06CisgICAgICAgIChNYWNGcmFtZTo6TWFjRnJhbWUpOiBJbml0aWFsaXpl
IF9icmlkZ2UKKyAgICAgICAgKE1hY0ZyYW1lOjp+TWFjRnJhbWUpOiBDbGVhciB0aGUgYnJpZGdl
J3MgZnJhbWUgcG9pbnRlciBhbmQgcmVsZWFzZSBpdC4KKyAgICAgICAgKEZyYW1lOjpmcmFtZURl
dGFjaGVkKTogUmV2ZXJzZSBvcmRlciBvZiByZW1vdmluZyBmcm9tIG9sZC1zdHlsZSBmcmFtZXMK
KyAgICAgICAgYXJyYXkgYW5kIGNhbGxpbmcgZnJhbWVEZXRhY2hlZC4KKyAgICAgICAgKE1hY0Zy
YW1lOjpjcmVhdGVQYXJ0KTogRG9uJ3QgcmVmIHRoZSBwYXJ0IHdoZW4gY3JlYXRpbmcgaXQsIHNp
bmNlIHRoZSBjaGlsZAorICAgICAgICBicmlkZ2UgaXMgbm8gbG9uZ2VyIGdvaW5nIHRvIG93biBh
IHJlZi4KKyAgICAgICAgKE1hY0ZyYW1lOjpzZXRCcmlkZ2UpOiBLV1FSZXRhaW4gLyBLV1FSZWxl
YXNlIHNpbmNlIHdlIGtub3cgb3duIHRoZSBicmlkZ2UuCisgICAgICAgIChNYWNGcmFtZTo6ZGV0
YWNoRnJvbVZpZXcpOiBOZXcgbWV0aG9kOyBjbGVhciBvdXQgdGhlIHZpZXcuCisgICAgICAgICog
YnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaDoKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dl
YkNvcmVGcmFtZUJyaWRnZS5tbToKKyAgICAgICAgKEJyaWRnZSk6IEhlbHBlciBtZXRob2QgdG8g
Z2V0IGEgV2ViQ29yZUZyYW1lQnJpZGdlIGZyb20gYSBGcmFtZS4KKyAgICAgICAgKC1bV2ViQ29y
ZUZyYW1lQnJpZGdlIGZpcnN0Q2hpbGRdKTogQ2FsbCB0aHJvdWdoIEZyYW1lLgorICAgICAgICAo
LVtXZWJDb3JlRnJhbWVCcmlkZ2UgbGFzdENoaWxkXSk6IGRpdHRvCisgICAgICAgICgtW1dlYkNv
cmVGcmFtZUJyaWRnZSBjaGlsZENvdW50XSk6IGRpdHRvCisgICAgICAgICgtW1dlYkNvcmVGcmFt
ZUJyaWRnZSBwcmV2aW91c1NpYmxpbmddKTogZGl0dG8KKyAgICAgICAgKC1bV2ViQ29yZUZyYW1l
QnJpZGdlIG5leHRTaWJsaW5nXSk6IGRpdHRvCisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRn
ZSBpc0Rlc2NlbmRhbnRPZkZyYW1lOl0pOiBObyBuZWVkIHRvIGNhc3QgcGFyZW50CisgICAgICAg
IHBvaW50ZXIuCisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRnZSBhcHBlbmRDaGlsZDpdKTog
Q2FsbCB0aHJvdWdoIEZyYW1lLgorICAgICAgICAoLVtXZWJDb3JlRnJhbWVCcmlkZ2UgX2NsZWFy
UmVuZGVyUGFydF0pOiBOZXcgaGVscGVyIG1ldGhvZCB0byBmcmVlCisgICAgICAgIHRoZSByZW5k
ZXJQYXJ0IHdoZW4gcmVtb3ZpbmcgYSBjaGlsZC4KKyAgICAgICAgKC1bV2ViQ29yZUZyYW1lQnJp
ZGdlIHJlbW92ZUNoaWxkOl0pOiBDbGVhciBjaGlsZCdzIHJlbmRlciBwYXJ0CisgICAgICAgIGFu
ZCBjYWxsIHRocm91Z2ggdG8gRnJhbWUuCisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRnZSBk
ZWFsbG9jXSk6IFJlbW92ZSB1bm5lZWRlZCBtX2ZyYW1lLXJlbGF0ZWQgY29kZS4KKyAgICAgICAg
KC1bV2ViQ29yZUZyYW1lQnJpZGdlIGZpbmFsaXplXSk6IGRpdHRvCisgICAgICAgICgtW1dlYkNv
cmVGcmFtZUJyaWRnZSBjbGVhckZyYW1lXSk6IE5ldyBoZWxwZXIgbWV0aG9kLCBuZWVkZWQgbm93
IHRoYXQKKyAgICAgICAgYnJpZGdlIGNhbiBvdXRsaXZlIGZyYW1lLgorICAgICAgICAoLVtXZWJD
b3JlRnJhbWVCcmlkZ2UgaGFuZGxlRmFsbGJhY2tDb250ZW50XSk6IE1ha2Ugc2FmZSBhZ2FpbnN0
IGEgbnVsbAorICAgICAgICBmcmFtZS4KKyAgICAgICAgKC1bV2ViQ29yZUZyYW1lQnJpZGdlIHJl
bW92ZUZyb21GcmFtZV0pOiBkaXR0bworICAgICAgICAqIGJyaWRnZS9tYWMvV2ViQ29yZVBhZ2VC
cmlkZ2UuaDoKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVQYWdlQnJpZGdlLm1tOgorICAg
ICAgICAoLVtXZWJDb3JlUGFnZUJyaWRnZSBpbml0V2l0aE1haW5GcmFtZTpdKTogQ3JlYXRlIGEg
UGFnZSBpbnN0YW5jZS4KKyAgICAgICAgKC1bV2ViQ29yZVBhZ2VCcmlkZ2UgZGVhbGxvY10pOiBE
ZWxldGUgdGhlIFBhZ2UuCisgICAgICAgICgtW1dlYkNvcmVQYWdlQnJpZGdlIG1haW5GcmFtZV0p
OiBHZXQgdGhlIG1haW4gZnJhbWUgZnJvbSB0aGUgUGFnZS4KKyAgICAgICAgKiBraHRtbC9lY21h
L2tqc19iaW5kaW5nLmNwcDoKKyAgICAgICAgKEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXI6Omdsb2Jh
bEV4ZWMpOiBPdmVycmlkZTsga2VlcCBmcmFtZSBhbGl2ZSwgdGhlbgorICAgICAgICBjYWxsIHN1
cGVyY2xhc3MuCisgICAgICAgICoga2h0bWwvZWNtYS9ranNfYmluZGluZy5oOgorICAgICAgICAq
IGtodG1sL2VjbWEva2pzX3Byb3h5LmNwcDoKKyAgICAgICAgKEtKU1Byb3h5SW1wbDo6Y2xlYXIp
OiBEb24ndCBwYXNzIGV4ZWMgdG8gd2luZG93LgorICAgICAgICAoS0pTUHJveHlJbXBsOjppbnRl
cnByZXRlcik6IERvbid0IGRvIGtlZXBBbGl2ZS4KKyAgICAgICAgKiBraHRtbC9lY21hL2tqc193
aW5kb3cuY3BwOgorICAgICAgICAoS0pTOjpXaW5kb3c6OmlzU2FmZVNjcmlwdCk6IElmIHRoZSBh
Y3RpdmUgcGFydCdzIGRvY3VtZW50IGlzIGdvbmUsIHVzZSB0aGUgZnJhbWUncworICAgICAgICBV
UkwgZm9yIHNlY3VyaXR5IGNoZWNrIHB1cnBvc2VzLgorICAgICAgICAoS0pTOjpXaW5kb3c6OmNs
ZWFyKTogRG9uJ3QgdGFrZSBhbiBFeGVjU3RhdGUgcGFyYW1ldGVyIGFueSBtb3JlIC0gaXQKKyAg
ICAgICAgd2Fzbid0IHVzZWQuCisgICAgICAgICoga2h0bWwvZWNtYS9ranNfd2luZG93Lmg6Cisg
ICAgICAgICoga2h0bWwveG1sL0RvY3VtZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudEltcGw6OmltcGxpY2l0T3Blbik6IElmIHdlJ3ZlIGdvdCBhIHRva2VuaXplciwgZGVs
ZXRlCisgICAgICAgIGl0IGJlZm9yZSBjbG9zaW5nIC0geW91IGRvbid0IGV2ZXIgd2FudCB0byBm
aXJlIGFuIG9ubG9hZCBoYW5kbGVyIGJlY2F1c2Ugb2YKKyAgICAgICAgYW4gb3Blbi4KKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKEZyYW1lOjppbml0KTogUGFzcyBgdGhpcycg
dG8gRnJhbWVQcml2YXRlIGNvbnN0cnVjdG9yLgorICAgICAgICAoRnJhbWVDb3VudGVyOjp+RnJh
bWVDb3VudGVyKTogQWRkZWQgZGVidWcgY291bnRpbmcgb2YgbGVmdG92ZXIKKyAgICAgICAgRnJh
bWUgb2JqZWN0cyBvbiBleGl0LgorICAgICAgICAoRnJhbWU6OkZyYW1lKTogTW92ZWQgb3V0LW9m
LWxpbmUuIEluY3JlbWVudCBkZWJ1ZyBjb3VudGVyLgorICAgICAgICAoRnJhbWU6On5GcmFtZSk6
IEFzc2VydCB0aGF0IHRoZXJlIGlzIG5vIGxpZmUgc3VwcG9ydCBnb2luZywgZWl0aGVyIGF0IHRo
ZQorICAgICAgICBzdGFydCBvciBlbmQgb2YgdGhpcyBtZXRob2QuIERlY3JlbWVudCBmcmFtZSBj
b3VudGVyLgorICAgICAgICAoRnJhbWU6OnN0b3BMb2FkaW5nKTogdHdlYWtlZCBmb3IgdGhlIGZh
Y3QgdGhhdCBDaGlsZEZyYW1lOjptX2ZyYW1lIGlzIG5vdworICAgICAgICBhIFJlZlB0ci4KKyAg
ICAgICAgKEZyYW1lOjpjbGVhcik6IGRpdHRvCisgICAgICAgIChGcmFtZTo6c3RvcCk6IGRpdHRv
CisgICAgICAgIChGcmFtZTo6c3RvcEFuaW1hdGlvbnMpOiBkaXR0bworICAgICAgICAoRnJhbWU6
OmNoZWNrRW1pdExvYWRFdmVudCk6IGRpdHRvCisgICAgICAgIChGcmFtZTo6cHJvY2Vzc09iamVj
dFJlcXVlc3QpOiBkaXR0bworICAgICAgICAoRnJhbWU6OmNoaWxkRnJhbWUpOiBkaXR0bworICAg
ICAgICAoRnJhbWU6OmZpbmRGcmFtZSk6IGRpdHRvCisgICAgICAgIChGcmFtZTo6c2V0Wm9vbUZh
Y3Rvcik6IGRpdHRvCisgICAgICAgIChGcmFtZTo6ZnJhbWVzKTogZGl0dG8KKyAgICAgICAgKEZy
YW1lOjpjb25uZWN0Q2hpbGQpOiBkaXR0bworICAgICAgICAoRnJhbWU6OmRpc2Nvbm5lY3RDaGls
ZCk6IGRpdHRvCisgICAgICAgIChGcmFtZTo6ZW5kQWxsTGlmZVN1cHBvcnQpOiBNZXRob2QgdGhh
dCwgaW4gZGVidWcgbW9kZSwgd2lsbCBjbGVhcgorICAgICAgICBhbGwgbGlmZSBzdXBwb3IgdGlt
ZXJzIHNvIHRoZSBGcmFtZSBleGl0IGNvdW50ZXIgd29ya3MuCisgICAgICAgIChGcmFtZTo6a2Vl
cEFsaXZlKTogSW4gZGVidWcgbW9kZSwgYWRkIHByb3BlciBzdXBwb3J0IGZvcgorICAgICAgICBl
bmRBbGxMaWZlU3VwcG9ydAorICAgICAgICAoRnJhbWU6OnNsb3RFbmRMaWZlU3VwcG9ydCk6IGRp
dHRvCisgICAgICAgIChGcmFtZTo6c2V0UG9saWN5QmFzZVVSTCk6IFVwZGF0ZSBmb3IgdGhlIGZh
Y3QgdGhhdCBDaGlsZEZyYW1lOjptX2ZyYW1lIGlzIG5vdworICAgICAgICBhIFJlZlB0ci4KKyAg
ICAgICAgKEZyYW1lOjp0cmVlTm9kZSk6IE5ldyBoZWxwZXIgbWV0aG9kLCBnZXQgdGhlIEZyYW1l
VHJlZU5vZGUgY2xhc3MgdGhhdCBpbXBsZW1lbnRzCisgICAgICAgIGZyYW1lIHRyZWUgdHJhdmVy
c2FsLgorICAgICAgICAoRnJhbWU6Om5leHRTaWJsaW5nKTogU2ltcGxlIHdyYXBwZXIgdGhhdCBj
YWxscyB0aHJvdWdoIHRvIHRyZWVOb2RlKCkuCisgICAgICAgIChGcmFtZTo6cHJldmlvdXNTaWJs
aW5nKTogZGl0dG8KKyAgICAgICAgKEZyYW1lOjpmaXJzdENoaWxkKTogZGl0dG8KKyAgICAgICAg
KEZyYW1lOjpsYXN0Q2hpbGQpOiBkaXR0bworICAgICAgICAoRnJhbWU6OmNoaWxkQ291bnQpOiBk
aXR0bworICAgICAgICAoRnJhbWU6OmFwcGVuZENoaWxkKTogZGl0dG8KKyAgICAgICAgKEZyYW1l
OjpyZW1vdmVDaGlsZCk6IGRpdHRvCisgICAgICAgIChGcmFtZTo6ZGV0YWNoRnJvbVZpZXcpOiBu
by1vcCwganVzdCBhIHZpcnR1YWwgYmFzZSBmb3IgdGhlIE1BY0ZyYW1lIG1ldGhvZC4KKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9GcmFtZVByaXZhdGUuaDoKKyAgICAg
ICAgKEZyYW1lUHJpdmF0ZTo6RnJhbWVQcml2YXRlKTogQWRkIEZyYW1lVHJlZU5vZGUgbWVtYmVy
LgorICAgICAgICAqIHBhZ2UvRnJhbWVUcmVlTm9kZS5jcHA6IEFkZGVkLgorICAgICAgICAoRnJh
bWVUcmVlTm9kZTo6fkZyYW1lVHJlZU5vZGUpOiBkZXRhY2ggYWxsIGNoaWxkcmVuIGZyb20gdGhl
aXIgdmlldworICAgICAgICAoRnJhbWVUcmVlTm9kZTo6YXBwZW5kQ2hpbGQpOiBpbXBsZW1lbnRl
ZAorICAgICAgICAoRnJhbWVUcmVlTm9kZTo6cmVtb3ZlQ2hpbGQpOiBpbXBsZW1lbnRlZCAtIG1h
a2Ugc3VyZSB0byBkZXRhY2ggY2hpbGQKKyAgICAgICAgZnJvbSBpdHMgdmlldy4KKyAgICAgICAg
KiBwYWdlL0ZyYW1lVHJlZU5vZGUuaDogQWRkZWQuCisgICAgICAgIChGcmFtZVRyZWVOb2RlOjpG
cmFtZVRyZWVOb2RlKTogTmV3OyBpbml0aWFsaXplIGZpZWxkcyB0aHQgbmVlZCBpdC4KKyAgICAg
ICAgKEZyYW1lVHJlZU5vZGU6Om5leHRTaWJsaW5nKTogVHJpdmlhbCBpbmxpbmUuCisgICAgICAg
IChGcmFtZVRyZWVOb2RlOjpwcmV2aW91c1NpYmxpbmcpOiBkaXR0bworICAgICAgICAoRnJhbWVU
cmVlTm9kZTo6Zmlyc3RDaGlsZCk6IGRpdHRvCisgICAgICAgIChGcmFtZVRyZWVOb2RlOjpsYXN0
Q2hpbGQpOiBkaXR0bworICAgICAgICAoRnJhbWVUcmVlTm9kZTo6Y2hpbGRDb3VudCk6IGRpdHRv
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChQYWdlOjpQYWdlKTog
SW5pdGlhbGl6ZSBtYWluRnJhbWUgYW5kIGJ1bXAgcGFnZUNvdW50IGFwcHJvcHJpYXRlbHkuCisg
ICAgICAgIChQYWdlOjp+UGFnZSk6IERldGFjaCBtYWluIGZyYW1lIGZyb20gdmlldywgaGFuZGxl
IGVuZGluZyBsaWZlIHN1cHBvcnQKKyAgICAgICAgd2hlbiBsYXN0IGZyYW1lIGlzIGRlc3Ryb3ll
ZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDogQWRkZWQuCisgICAgICAgIChQYWdlOjptYWluRnJh
bWUpOiBUcml2aWFsIGlubGluZS4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZCBuZXcgZmlsZXMuCisKIDIwMDYtMDEtMjIgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGtpbHplci5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqLgpJbmRleDog
YnJpZGdlL21hYy9NYWNGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJyaWRnZS9tYWMvTWFjRnJhbWUu
aAkocmV2aXNpb24gMTIyODkpCisrKyBicmlkZ2UvbWFjL01hY0ZyYW1lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzMSw2ICszMzEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZWdpc3RlckNvbW1h
bmRGb3JVbmRvT3JSZWRvKGNvbnN0IGtodG1sOjpFZGl0Q29tbWFuZFB0ciAmY21kLCBib29sIGlz
UmVkbyk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVZpZXcoKTsKKwogICAgIFdlYkNv
cmVGcmFtZUJyaWRnZSAqX2JyaWRnZTsKICAgICAKICAgICBLV1FTaWduYWwgX3N0YXJ0ZWQ7Cklu
ZGV4OiBicmlkZ2UvbWFjL01hY0ZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJyaWRnZS9tYWMvTWFj
RnJhbWUubW0JKHJldmlzaW9uIDEyMjg5KQorKysgYnJpZGdlL21hYy9NYWNGcmFtZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTM3LDcgKzEzNyw4IEBAIHN0YXRpYyB2b2lkIHJlZGlyZWN0aW9uVGlt
ZXJNb25pdG9yKHZvaWQKIH0KIAogTWFjRnJhbWU6Ok1hY0ZyYW1lKCkKLSAgICA6IF9zdGFydGVk
KHRoaXMsIFNJR05BTChzdGFydGVkKEtJTzo6Sm9iICopKSkKKyAgICA6IF9icmlkZ2UobmlsKQor
ICAgICwgX3N0YXJ0ZWQodGhpcywgU0lHTkFMKHN0YXJ0ZWQoS0lPOjpKb2IgKikpKQogICAgICwg
X2NvbXBsZXRlZCh0aGlzLCBTSUdOQUwoY29tcGxldGVkKCkpKQogICAgICwgX2NvbXBsZXRlZFdp
dGhCb29sKHRoaXMsIFNJR05BTChjb21wbGV0ZWQoYm9vbCkpKQogICAgICwgX21vdXNlRG93blZp
ZXcobmlsKQpAQCAtMTcwLDcgKzE3MSw5IEBAIE1hY0ZyYW1lOjp+TWFjRnJhbWUoKQogICAgIGZy
ZWVDbGlwYm9hcmQoKTsKICAgICBjbGVhclJlY29yZGVkRm9ybVZhbHVlcygpOyAgICAKICAgICAK
LSAgICBkZWxldGUgX3dpbmRvd1dpZGdldDsKKyAgICBbX2JyaWRnZSBjbGVhckZyYW1lXTsKKyAg
ICBLV1FSZWxlYXNlKF9icmlkZ2UpOworICAgIF9icmlkZ2UgPSBuaWw7CiB9CiAKIHZvaWQgTWFj
RnJhbWU6OmZyZWVDbGlwYm9hcmQoKQpAQCAtNTY3LDEzICs1NzAsOSBAQCB2b2lkIE1hY0ZyYW1l
OjpzdWJtaXRGb3JtKGNvbnN0IEtVUkwgJnVyCiAKIHZvaWQgRnJhbWU6OmZyYW1lRGV0YWNoZWQo
KQogewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIHZpcnR1YWwgZnVuY3Rpb24sIHdp
dGggdGhlIGZpcnN0IHBhcnQgaW4gTWFjRnJhbWUsIGFuZCB0aGUgc2Vjb25kCisgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGJlIGEgdmlydHVhbCBmdW5jdGlvbiwgd2l0aCB0aGUgc2Vjb25kIHBh
cnQgaW4gTWFjRnJhbWUsIGFuZCB0aGUgZmlyc3QKICAgICAvLyBwYXJ0IGluIEZyYW1lLCBzbyBp
dCB3b3JrcyBmb3IgS0hUTUwgdG9vLgogCi0gICAgS1dRX0JMT0NLX0VYQ0VQVElPTlM7Ci0gICAg
W01hYyh0aGlzKS0+YnJpZGdlKCkgZnJhbWVEZXRhY2hlZF07Ci0gICAgS1dRX1VOQkxPQ0tfRVhD
RVBUSU9OUzsKLQogICAgIEZyYW1lICpwYXJlbnQgPSBwYXJlbnRGcmFtZSgpOwogICAgIGlmIChw
YXJlbnQpIHsKICAgICAgICAgRnJhbWVMaXN0JiBwYXJlbnRGcmFtZXMgPSBwYXJlbnQtPmQtPm1f
ZnJhbWVzOwpAQCAtNTgzLDExICs1ODIsMTQgQEAgdm9pZCBGcmFtZTo6ZnJhbWVEZXRhY2hlZCgp
CiAgICAgICAgICAgICBpZiAoY2hpbGQubV9mcmFtZSA9PSB0aGlzKSB7CiAgICAgICAgICAgICAg
ICAgcGFyZW50LT5kaXNjb25uZWN0Q2hpbGQoJmNoaWxkKTsKICAgICAgICAgICAgICAgICBwYXJl
bnRGcmFtZXMucmVtb3ZlKGl0KTsKLSAgICAgICAgICAgICAgICBkZXJlZigpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorCisgICAgS1dR
X0JMT0NLX0VYQ0VQVElPTlM7CisgICAgW01hYyh0aGlzKS0+YnJpZGdlKCkgZnJhbWVEZXRhY2hl
ZF07CisgICAgS1dRX1VOQkxPQ0tfRVhDRVBUSU9OUzsKIH0KIAogdm9pZCBNYWNGcmFtZTo6dXJs
U2VsZWN0ZWQoY29uc3QgS1VSTCAmdXJsLCBpbnQgYnV0dG9uLCBpbnQgc3RhdGUsIGNvbnN0IFVS
TEFyZ3MgJmFyZ3MpCkBAIC02NTksMTEgKzY2MSw3IEBAIE9iamVjdENvbnRlbnRzICpNYWNGcmFt
ZTo6Y3JlYXRlUGFydChjb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbGxvd3NTY3JvbGxpbmc6YWxsb3dzU2Nyb2xsaW5nCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbldpZHRo
Om1hcmdpbldpZHRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWFyZ2luSGVpZ2h0Om1hcmdpbkhlaWdodF07Ci0gICAgICAgIC8vIFRoaXMg
Y2FsbCBuZWVkcyB0byByZXR1cm4gYW4gb2JqZWN0IHdpdGggYSByZWYsIHNpbmNlIHRoZSBjYWxs
ZXIgd2lsbCBleHBlY3QgdG8gb3duIGl0LgotICAgICAgICAvLyBjaGlsZEJyaWRnZSBvd25zIHRo
ZSBvbmx5IHJlZiBzbyBmYXIuCiAgICAgICAgIHBhcnQgPSBbY2hpbGRCcmlkZ2UgcGFydF07Ci0g
ICAgICAgIGlmIChwYXJ0KQotICAgICAgICAgICAgcGFydC0+cmVmKCk7CiAgICAgfQogCiAgICAg
cmV0dXJuIHBhcnQ7CkBAIC0zMDA5LDExICszMDA3LDE1IEBAIHZvaWQgTWFjRnJhbWU6OnRva2Vu
aXplclByb2Nlc3NlZERhdGEoKQogICAgIFtfYnJpZGdlIHRva2VuaXplclByb2Nlc3NlZERhdGFd
OwogfQogCi12b2lkIE1hY0ZyYW1lOjpzZXRCcmlkZ2UoV2ViQ29yZUZyYW1lQnJpZGdlICpwKQor
dm9pZCBNYWNGcmFtZTo6c2V0QnJpZGdlKFdlYkNvcmVGcmFtZUJyaWRnZSAqYnJpZGdlKQogeyAK
LSAgICBpZiAoX2JyaWRnZSAhPSBwKQotICAgICAgICBkZWxldGUgX3dpbmRvd1dpZGdldDsKLSAg
ICBfYnJpZGdlID0gcDsKKyAgICBpZiAoX2JyaWRnZSA9PSBicmlkZ2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIGRlbGV0ZSBfd2luZG93V2lkZ2V0OworICAgIEtXUVJldGFpbihicmlkZ2UpOwor
ICAgIEtXUVJlbGVhc2UoX2JyaWRnZSk7CisgICAgX2JyaWRnZSA9IGJyaWRnZTsKICAgICBfd2lu
ZG93V2lkZ2V0ID0gbmV3IEtXUVdpbmRvd1dpZGdldChfYnJpZGdlKTsKIH0KIApAQCAtMzU5Niwz
ICszNTk4LDggQEAgYm9vbCBNYWNGcmFtZTo6ZGlzcGF0Y2hEcmFnU3JjRXZlbnQoY29ucwogICAg
IGJvb2wgbm9EZWZhdWx0UHJvYyA9IGQtPm1fdmlldy0+ZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRU
eXBlLCBfZHJhZ1NyYy5nZXQoKSwgbG9jLCBfZHJhZ0NsaXBib2FyZCk7CiAgICAgcmV0dXJuICFu
b0RlZmF1bHRQcm9jOwogfQorCit2b2lkIE1hY0ZyYW1lOjpkZXRhY2hGcm9tVmlldygpCit7Cisg
ICAgc2V0VmlldygwKTsKK30KSW5kZXg6IGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAkocmV2aXNpb24g
MTIyODkpCisrKyBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTAsMTIgKzE5MCw2IEBAIHR5cGVkZWYgZW51bQogICAgIFJlbmRlckFyZW5hICpfcmVu
ZGVyUGFydEFyZW5hOwogICAgIEJPT0wgX3Nob3VsZENyZWF0ZVJlbmRlcmVyczsKIAotICAgIFdl
YkNvcmVGcmFtZUJyaWRnZSAqX25leHRTaWJsaW5nOwotICAgIFdlYkNvcmVGcmFtZUJyaWRnZSAq
X3ByZXZpb3VzU2libGluZzsKLSAgICBXZWJDb3JlRnJhbWVCcmlkZ2UgKl9maXJzdENoaWxkOwot
ICAgIFdlYkNvcmVGcmFtZUJyaWRnZSAqX2xhc3RDaGlsZDsKLSAgICBpbnQgX2NoaWxkQ291bnQ7
Ci0KICAgICBOU1N0cmluZyAqX2ZyYW1lTmFtZXNwYWNlOwogfQogCkBAIC0yNjEsNiArMjU1LDcg
QEAgdHlwZWRlZiBlbnVtCiAtICh2b2lkKWVuZDsKIC0gKHZvaWQpc3RvcDsKIAorLSAodm9pZClj
bGVhckZyYW1lOwogLSAodm9pZCloYW5kbGVGYWxsYmFja0NvbnRlbnQ7CiAKIC0gKE5TVVJMICop
VVJMOwpJbmRleDogYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHJldmlzaW9uIDEyMjg5KQorKysg
YnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5MCwz
NCArMTkwLDQxIEBAIHN0YXRpYyBCT09MIGlzQ2FzZVNlbnNpdGl2ZUVxdWFsKE5TU3RyaW4KIHN0
YXRpYyBib29sIGluaXRpYWxpemVkT2JqZWN0Q2FjaGVTaXplID0gRkFMU0U7CiBzdGF0aWMgYm9v
bCBpbml0aWFsaXplZEtKUyA9IEZBTFNFOwogCitzdGF0aWMgaW5saW5lIFdlYkNvcmVGcmFtZUJy
aWRnZSAqQnJpZGdlKEZyYW1lICpmcmFtZSkKK3sKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIHJldHVybiBNYWMoZnJhbWUpLT5icmlkZ2UoKTsKK30KKwogLSAoV2Vi
Q29yZUZyYW1lQnJpZGdlICopZmlyc3RDaGlsZAogewotICAgIHJldHVybiBfZmlyc3RDaGlsZDsK
KyAgICByZXR1cm4gQnJpZGdlKG1fZnJhbWUtPmZpcnN0Q2hpbGQoKSk7CiB9CiAKIC0gKFdlYkNv
cmVGcmFtZUJyaWRnZSAqKWxhc3RDaGlsZAogewotICAgIHJldHVybiBfbGFzdENoaWxkOworICAg
IHJldHVybiBCcmlkZ2UobV9mcmFtZS0+bGFzdENoaWxkKCkpOwogfQogCiAtICh1bnNpZ25lZClj
aGlsZENvdW50CiB7Ci0gICAgcmV0dXJuIF9jaGlsZENvdW50OworICAgIHJldHVybiBtX2ZyYW1l
LT5jaGlsZENvdW50KCk7CiB9CiAKIC0gKFdlYkNvcmVGcmFtZUJyaWRnZSAqKXByZXZpb3VzU2li
bGluZzsKIHsKLSAgICByZXR1cm4gX3ByZXZpb3VzU2libGluZzsKKyAgICByZXR1cm4gQnJpZGdl
KG1fZnJhbWUtPnByZXZpb3VzU2libGluZygpKTsKIH0KIAogLSAoV2ViQ29yZUZyYW1lQnJpZGdl
ICopbmV4dFNpYmxpbmc7CiB7Ci0gICAgcmV0dXJuIF9uZXh0U2libGluZzsKKyAgICByZXR1cm4g
QnJpZGdlKG1fZnJhbWUtPm5leHRTaWJsaW5nKCkpOwogfQogCiAtIChCT09MKWlzRGVzY2VuZGFu
dE9mRnJhbWU6KFdlYkNvcmVGcmFtZUJyaWRnZSAqKWFuY2VzdG9yCiB7Ci0gICAgZm9yIChXZWJD
b3JlRnJhbWVCcmlkZ2UgKmZyYW1lID0gc2VsZjsgZnJhbWU7IGZyYW1lID0gKFdlYkNvcmVGcmFt
ZUJyaWRnZSAqKVtmcmFtZSBwYXJlbnRdKQorICAgIGZvciAoV2ViQ29yZUZyYW1lQnJpZGdlICpm
cmFtZSA9IHNlbGY7IGZyYW1lOyBmcmFtZSA9IFtmcmFtZSBwYXJlbnRdKQogICAgICAgICBpZiAo
ZnJhbWUgPT0gYW5jZXN0b3IpCiAgICAgICAgICAgICByZXR1cm4gWUVTOwogCkBAIC0yNTcsNDMg
KzI2NCwyMCBAQCBzdGF0aWMgYm9vbCBpbml0aWFsaXplZEtKUyA9IEZBTFNFOwogCiAtICh2b2lk
KWFwcGVuZENoaWxkOihXZWJDb3JlRnJhbWVCcmlkZ2UgKiljaGlsZAogewotICAgIFtjaGlsZCBy
ZXRhaW5dOwotCi0gICAgW2NoaWxkIHNldFBhcmVudDpzZWxmXTsKLQotICAgIFdlYkNvcmVGcmFt
ZUJyaWRnZSAqbGFzdCA9IF9sYXN0Q2hpbGQ7Ci0KLSAgICBpZiAobGFzdCkgewotICAgICAgICBs
YXN0LT5fbmV4dFNpYmxpbmcgPSBjaGlsZDsKLSAgICAgICAgY2hpbGQtPl9wcmV2aW91c1NpYmxp
bmcgPSBsYXN0OwotICAgIH0gZWxzZQotICAgICAgICBfZmlyc3RDaGlsZCA9IGNoaWxkOwotCi0g
ICAgX2xhc3RDaGlsZCA9IGNoaWxkOwotCi0gICAgX2NoaWxkQ291bnQrKzsKKyAgICBtX2ZyYW1l
LT5hcHBlbmRDaGlsZChbY2hpbGQgcGFydF0pOworfQogCi0gICAgQVNTRVJUKGNoaWxkLT5fbmV4
dFNpYmxpbmcgPT0gbmlsKTsKKy0gKHZvaWQpX2NsZWFyUmVuZGVyUGFydAoreworICAgIGlmIChf
cmVuZGVyUGFydCkKKyAgICAgICAgX3JlbmRlclBhcnQtPmRlcmVmKF9yZW5kZXJQYXJ0QXJlbmEp
OworICAgIF9yZW5kZXJQYXJ0ID0gMDsKIH0KIAogLSAodm9pZClyZW1vdmVDaGlsZDooV2ViQ29y
ZUZyYW1lQnJpZGdlICopY2hpbGQKIHsKLSAgICBpZiAoY2hpbGQtPl9wcmV2aW91c1NpYmxpbmcp
Ci0gICAgICAgIGNoaWxkLT5fcHJldmlvdXNTaWJsaW5nLT5fbmV4dFNpYmxpbmcgPSBjaGlsZC0+
X25leHRTaWJsaW5nOwotICAgIGVsc2UKLSAgICAgICAgX2ZpcnN0Q2hpbGQgPSBjaGlsZC0+X25l
eHRTaWJsaW5nOwotICAgIAotICAgIGlmIChjaGlsZC0+X25leHRTaWJsaW5nKQotICAgICAgICBj
aGlsZC0+X25leHRTaWJsaW5nLT5fcHJldmlvdXNTaWJsaW5nID0gY2hpbGQtPl9wcmV2aW91c1Np
Ymxpbmc7IAotICAgIGVsc2UKLSAgICAgICAgX2xhc3RDaGlsZCA9IGNoaWxkLT5fcHJldmlvdXNT
aWJsaW5nOwotCi0gICAgY2hpbGQtPl9wcmV2aW91c1NpYmxpbmcgPSBuaWw7Ci0gICAgY2hpbGQt
Pl9uZXh0U2libGluZyA9IG5pbDsKLQotICAgIF9jaGlsZENvdW50LS07Ci0KLSAgICBbY2hpbGQg
cmVsZWFzZV07CisgICAgW2NoaWxkIF9jbGVhclJlbmRlclBhcnRdOworICAgIG1fZnJhbWUtPnJl
bW92ZUNoaWxkKFtjaGlsZCBwYXJ0XSk7CiB9CiAKIC0gKFdlYkNvcmVGcmFtZUJyaWRnZSAqKWNo
aWxkRnJhbWVOYW1lZDooTlNTdHJpbmcgKiluYW1lCkBAIC01MjYsMTEgKzUxMCw4IEBAIHN0YXRp
YyBib29sIGluaXRpYWxpemVkS0pTID0gRkFMU0U7CiB7CiAgICAgW3NlbGYgcmVtb3ZlRnJvbUZy
YW1lXTsKICAgICAKLSAgICBpZiAoX3JlbmRlclBhcnQpIHsKKyAgICBpZiAoX3JlbmRlclBhcnQp
CiAgICAgICAgIF9yZW5kZXJQYXJ0LT5kZXJlZihfcmVuZGVyUGFydEFyZW5hKTsKLSAgICB9Ci0g
ICAgbV9mcmFtZS0+c2V0QnJpZGdlKG5pbCk7Ci0gICAgbV9mcmFtZS0+ZGVyZWYoKTsKICAgICAg
ICAgCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtNTQ2LDcgKzUyNyw2IEBAIHN0YXRpYyBi
b29sIGluaXRpYWxpemVkS0pTID0gRkFMU0U7CiAgICAgICAgIF9yZW5kZXJQYXJ0LT5kZXJlZihf
cmVuZGVyUGFydEFyZW5hKTsKICAgICB9CiAgICAgbV9mcmFtZS0+c2V0QnJpZGdlKG5pbCk7Ci0g
ICAgbV9mcmFtZS0+ZGVyZWYoKTsKICAgICAgICAgCiAgICAgW3N1cGVyIGZpbmFsaXplXTsKIH0K
QEAgLTc3OCw4ICs3NTgsMTYgQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWRLSlMgPSBGQUxTRTsK
ICAgICBtX2ZyYW1lLT5zdG9wKCk7CiB9CiAKKy0gKHZvaWQpY2xlYXJGcmFtZQoreworICAgIG1f
ZnJhbWUgPSAwOworfQorCiAtICh2b2lkKWhhbmRsZUZhbGxiYWNrQ29udGVudAogeworICAgIC8v
IHRoaXMgbmVlZHMgdG8gYmUgY2FsbGFibGUgZXZlbiBhZnRlciB0ZWFyZG93biBvZiB0aGUgZnJh
bWUKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKICAgICBtX2ZyYW1lLT5oYW5k
bGVGYWxsYmFja0NvbnRlbnQoKTsKIH0KIApAQCAtMTA4Nyw3ICsxMDc1LDggQEAgc3RhdGljIEJP
T0wgbm93UHJpbnRpbmcoV2ViQ29yZUZyYW1lQnJpZAogCiAtICh2b2lkKXJlbW92ZUZyb21GcmFt
ZQogewotICAgIG1fZnJhbWUtPnNldFZpZXcoMCk7CisgICAgaWYgKG1fZnJhbWUpCisgICAgICAg
IG1fZnJhbWUtPnNldFZpZXcoMCk7CiB9CiAKIC0gKHZvaWQpaW5zdGFsbEluRnJhbWU6KE5TVmll
dyAqKXZpZXcKSW5kZXg6IGJyaWRnZS9tYWMvV2ViQ29yZVBhZ2VCcmlkZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBicmlkZ2UvbWFjL1dlYkNvcmVQYWdlQnJpZGdlLmgJKHJldmlzaW9uIDEyMjg5KQorKysg
YnJpZGdlL21hYy9XZWJDb3JlUGFnZUJyaWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0
Nyw2IEBAIGNsYXNzIFdlYkNvcmVGcmFtZUJyaWRnZTsKIEBpbnRlcmZhY2UgV2ViQ29yZVBhZ2VC
cmlkZ2UgOiBOU09iamVjdAogewogICAgIFBhZ2UgKl9wYWdlOwotICAgIFdlYkNvcmVGcmFtZUJy
aWRnZSAqX21haW5GcmFtZTsKIH0KIAogLSAoaWQpaW5pdFdpdGhNYWluRnJhbWU6KFdlYkNvcmVG
cmFtZUJyaWRnZSAqKW1haW5GcmFtZTsKSW5kZXg6IGJyaWRnZS9tYWMvV2ViQ29yZVBhZ2VCcmlk
Z2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gYnJpZGdlL21hYy9XZWJDb3JlUGFnZUJyaWRnZS5tbQkocmV2
aXNpb24gMTIyODkpCisrKyBicmlkZ2UvbWFjL1dlYkNvcmVQYWdlQnJpZGdlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldl
YkNvcmVQYWdlQnJpZGdlLmgiCiAKKyNpbXBvcnQgIk1hY0ZyYW1lLmgiCisjaW1wb3J0ICJQYWdl
LmgiCiAjaW1wb3J0ICJXZWJDb3JlRnJhbWVCcmlkZ2UuaCIKIAogCkBAIC0zNiwyMCArMzgsMjAg
QEAKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgIF9tYWluRnJhbWUgPSBbbWFpbkZyYW1lIHJldGFpbl07CisgICAgX3BhZ2UgPSBuZXcg
UGFnZShhZG9wdFJlZihbbWFpbkZyYW1lIHBhcnRdKSk7CiAgICAgCiAgICAgcmV0dXJuIHNlbGY7
CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIFtfbWFpbkZyYW1lIHJlbGVhc2VdOworICAg
IGRlbGV0ZSBfcGFnZTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKFdlYkNvcmVGcmFt
ZUJyaWRnZSAqKW1haW5GcmFtZQogewotICAgIHJldHVybiBfbWFpbkZyYW1lOworICAgIHJldHVy
biBNYWMoX3BhZ2UtPm1haW5GcmFtZSgpKS0+YnJpZGdlKCk7CiB9CiAKIEBlbmQKSW5kZXg6IHBh
Z2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDEyMjg5KQor
KysgcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEZy
YW1lVmlldzsKIGNsYXNzIEtIVE1MUGFydEJyb3dzZXJFeHRlbnNpb247CiBjbGFzcyBLSFRNTFNl
dHRpbmdzOwogY2xhc3MgS0pTUHJveHlJbXBsOworY2xhc3MgRnJhbWVUcmVlTm9kZTsKIAogbmFt
ZXNwYWNlIEtKUyB7CiAgICAgY2xhc3MgUGF1c2VkVGltZW91dHM7CkBAIC0xNTAsNyArMTUxLDcg
QEAgY2xhc3MgRnJhbWUgOiBwdWJsaWMgT2JqZWN0Q29udGVudHMgewogcHVibGljOgogICBlbnVt
IHsgTm9YUG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24gPSBJTlRfTUlOIH07CiAKLSAgRnJh
bWUoKSA6IGQoMCkgeyB9CisgIEZyYW1lKCk7CiAgIHZpcnR1YWwgfkZyYW1lKCk7CiAKICAgLyoq
CkBAIC03NTAsNiArNzUxLDggQEAgcHVibGljOgogICAvLyBVc2VkIHRvIGtlZXAgdGhlIHBhcnQg
YWxpdmUgd2hlbiBydW5uaW5nIGEgc2NyaXB0IHRoYXQgbWlnaHQgZGVzdHJveSBpdC4KICAgdm9p
ZCBrZWVwQWxpdmUoKTsKIAorICBzdGF0aWMgdm9pZCBlbmRBbGxMaWZlU3VwcG9ydCgpOworCiBz
aWduYWxzOgogICAvKioKICAgICogRW1pdHRlZCBpZiB0aGUgY3Vyc29yIGlzIG1vdmVkIG92ZXIg
YW4gVVJMLgpAQCAtOTA2LDYgKzkwOSw4IEBAIHByaXZhdGUgc2xvdHM6CiAKICAgdm9pZCBzbG90
RW5kTGlmZVN1cHBvcnQoKTsKIAorICB2aXJ0dWFsIHZvaWQgY2xlYXIoKTsKKwogcHJpdmF0ZToK
ICAgYm9vbCByZXN0b3JlVVJMKCBjb25zdCBLVVJMICZ1cmwgKTsKICAgdm9pZCBjbGVhckNhcmV0
UmVjdElmTmVlZGVkKCk7CkBAIC05MjYsOCArOTMxLDYgQEAgcHJpdmF0ZToKIAogICB2b2lkIGlu
aXQoRnJhbWVWaWV3ICp2aWV3KTsKIAotICB2aXJ0dWFsIHZvaWQgY2xlYXIoKTsKLQogICBib29s
IHNjaGVkdWxlU2NyaXB0KCBXZWJDb3JlOjpOb2RlSW1wbCAqbiwgY29uc3QgUVN0cmluZyYgc2Ny
aXB0KTsKIAogICBRVmFyaWFudCBleGVjdXRlU2NoZWR1bGVkU2NyaXB0KCk7CkBAIC0xMTEyLDYg
KzExMTUsMTggQEAgcHVibGljOiAgCiAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdExheW91dCgpIHt9
CiAKICAgaW50IGZyYW1lQ291bnQ7CisKKyAgCisgIEZyYW1lVHJlZU5vZGUgKnRyZWVOb2RlKCk7
CisgIEZyYW1lICpuZXh0U2libGluZygpOworICBGcmFtZSAqcHJldmlvdXNTaWJsaW5nKCk7Cisg
IEZyYW1lICpmaXJzdENoaWxkKCk7CisgIEZyYW1lICpsYXN0Q2hpbGQoKTsKKyAgaW50IGNoaWxk
Q291bnQoKTsKKyAgdm9pZCBhcHBlbmRDaGlsZChGcmFtZSAqY2hpbGQpOworICB2b2lkIHJlbW92
ZUNoaWxkKEZyYW1lICpjaGlsZCk7CisKKyAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21WaWV3KCk7
CiB9OwogCiAjZW5kaWYKSW5kZXg6IHBhZ2UvRnJhbWVUcmVlTm9kZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gcGFnZS9GcmFtZVRyZWVOb2RlLmNwcAkocmV2aXNpb24gMCkKKysrIHBhZ2UvRnJhbWVUcmVl
Tm9kZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKy8vIC0qLSBjLWJhc2ljLW9m
ZnNldDogNCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh
Y2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRnJhbWVUcmVlTm9kZS5oIgorCisjaW5jbHVk
ZSA8a3htbGNvcmUvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
Tm9kZUltcGwuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKwordXNpbmcgc3RkOjpzd2FwOwor
CitGcmFtZVRyZWVOb2RlOjp+RnJhbWVUcmVlTm9kZSgpCit7CisgICAgZm9yIChGcmFtZSAqY2hp
bGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlTm9kZSgpLT5uZXh0
U2libGluZygpKQorICAgICAgICBjaGlsZC0+ZGV0YWNoRnJvbVZpZXcoKTsKK30KKwordm9pZCBG
cmFtZVRyZWVOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPEZyYW1lPiBjaGlsZCkKK3sKKyAg
ICBjaGlsZC0+c2V0UGFyZW50KG1fdGhpc0ZyYW1lKTsKKworICAgIEZyYW1lICpvbGRMYXN0ID0g
bV9sYXN0Q2hpbGQ7CisgICAgbV9sYXN0Q2hpbGQgPSBjaGlsZC5nZXQoKTsKKworICAgIGlmIChv
bGRMYXN0KSB7CisgICAgICAgIGNoaWxkLT50cmVlTm9kZSgpLT5tX3ByZXZpb3VzU2libGluZyA9
IG9sZExhc3Q7CisgICAgICAgIG9sZExhc3QtPnRyZWVOb2RlKCktPm1fbmV4dFNpYmxpbmcgPSBj
aGlsZDsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9maXJzdENoaWxkID0gY2hpbGQ7CisKKyAgICBt
X2NoaWxkQ291bnQrKzsKKworICAgIEFTU0VSVCghbV9sYXN0Q2hpbGQtPnRyZWVOb2RlKCktPm1f
bmV4dFNpYmxpbmcpOworfQorCit2b2lkIEZyYW1lVHJlZU5vZGU6OnJlbW92ZUNoaWxkKEZyYW1l
ICpjaGlsZCkKK3sKKyAgICBjaGlsZC0+c2V0UGFyZW50KDApOworICAgIGNoaWxkLT5kZXRhY2hG
cm9tVmlldygpOworCisgICAgLy8gU2xpZ2h0bHkgdHJpY2t5IHdheSB0byBwcmV2ZW50IGRlbGV0
aW5nIHRoZSBjaGlsZCB1bnRpbCB3ZSBhcmUgZG9uZSB3aXRoIGl0LCB3L28KKyAgICAvLyBleHRy
YSByZWZzLiBUaGVzZSBzd2FwcyBsZWF2ZSB0aGUgY2hpbGQgaW4gYSBjaXJjdWxhciBsaXN0IGJ5
IGl0c2VsZi4gQ2xlYXJpbmcgaXRzCisgICAgLy8gcHJldmlvdXMgYW5kIG5leHQgd2lsbCB0aGVu
IGZpbmFsbHkgZGVyZWYgaXQuCisKKyAgICBSZWZQdHI8RnJhbWU+JiBuZXdMb2NhdGlvbkZvck5l
eHQgPSBtX2ZpcnN0Q2hpbGQgPT0gY2hpbGQgPyBtX2ZpcnN0Q2hpbGQgOiBjaGlsZC0+cHJldmlv
dXNTaWJsaW5nKCktPnRyZWVOb2RlKCktPm1fbmV4dFNpYmxpbmc7CisgICAgRnJhbWUqJiBuZXdM
b2NhdGlvbkZvclByZXZpb3VzID0gbV9sYXN0Q2hpbGQgPT0gY2hpbGQgPyBtX2xhc3RDaGlsZCA6
IGNoaWxkLT5uZXh0U2libGluZygpLT50cmVlTm9kZSgpLT5tX3ByZXZpb3VzU2libGluZzsKKyAg
ICBzd2FwKG5ld0xvY2F0aW9uRm9yTmV4dCwgY2hpbGQtPnRyZWVOb2RlKCktPm1fbmV4dFNpYmxp
bmcpOworICAgIHN3YXAobmV3TG9jYXRpb25Gb3JQcmV2aW91cywgY2hpbGQtPnRyZWVOb2RlKCkt
Pm1fcHJldmlvdXNTaWJsaW5nKTsKKworICAgIGNoaWxkLT50cmVlTm9kZSgpLT5tX3ByZXZpb3Vz
U2libGluZyA9IDA7CisgICAgY2hpbGQtPnRyZWVOb2RlKCktPm1fbmV4dFNpYmxpbmcgPSAwOwor
CisgICAgbV9jaGlsZENvdW50LS07Cit9CkluZGV4OiBwYWdlL1BhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBwYWdlL1BhZ2UuaAkocmV2aXNpb24gMCkKKysrIHBhZ2UvUGFnZS5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM4IEBACisvLyAtKi0gYy1iYXNpYy1vZmZzZXQ6IDQgLSotCisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9z
dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworI2lmbmRlZiBQQUdFX0gKKyNkZWZpbmUg
UEFHRV9ICisKKyNpbmNsdWRlIDxreG1sY29yZS9SZWZQdHIuaD4KKyNpbmNsdWRlIDxreG1sY29y
ZS9QYXNzUmVmUHRyLmg+CisKK2NsYXNzIEZyYW1lOworCitjbGFzcyBQYWdlIHsKKyBwdWJsaWM6
CisgICAgUGFnZShQYXNzUmVmUHRyPEZyYW1lPiBtYWluRnJhbWUpOworICAgIH5QYWdlKCk7Cisg
ICAgRnJhbWUgKm1haW5GcmFtZSgpIHsgcmV0dXJuIG1fbWFpbkZyYW1lLmdldCgpOyB9CisgcHJp
dmF0ZToKKyAgICBSZWZQdHI8RnJhbWU+IG1fbWFpbkZyYW1lOworfTsKKyAgICAKKyNlbmRpZiAv
LyBQQUdFX0gKSW5kZXg6IHBhZ2UvRnJhbWVUcmVlTm9kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2Uv
RnJhbWVUcmVlTm9kZS5oCShyZXZpc2lvbiAwKQorKysgcGFnZS9GcmFtZVRyZWVOb2RlLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zm
c2V0OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj
ZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKKyNp
Zm5kZWYgRlJBTUVfVFJFRV9OT0RFX0gKKyNkZWZpbmUgRlJBTUVfVFJFRV9OT0RFX0gKKworI2lu
Y2x1ZGUgPGt4bWxjb3JlL1JlZlB0ci5oPgorI2luY2x1ZGUgPGt4bWxjb3JlL1Bhc3NSZWZQdHIu
aD4KKworY2xhc3MgRnJhbWU7CisKK2NsYXNzIEZyYW1lVHJlZU5vZGUKK3sKK3B1YmxpYzoKKyAg
ICBGcmFtZVRyZWVOb2RlKEZyYW1lICp0aGlzRnJhbWUpIAorICAgICAgICA6IG1fdGhpc0ZyYW1l
KHRoaXNGcmFtZSkKKyAgICAgICAgLCBtX3ByZXZpb3VzU2libGluZygwKQorICAgICAgICAsIG1f
bGFzdENoaWxkKDApCisgICAgICAgICwgbV9jaGlsZENvdW50KDApCisgICAgeworICAgIH0KKyAg
ICB+RnJhbWVUcmVlTm9kZSgpOworCisgICAgRnJhbWUgKm5leHRTaWJsaW5nKCkgeyByZXR1cm4g
bV9uZXh0U2libGluZy5nZXQoKTsgfQorICAgIEZyYW1lICpwcmV2aW91c1NpYmxpbmcoKSB7IHJl
dHVybiBtX3ByZXZpb3VzU2libGluZzsgfQorICAgIEZyYW1lICpmaXJzdENoaWxkKCkgeyByZXR1
cm4gbV9maXJzdENoaWxkLmdldCgpOyB9CisgICAgRnJhbWUgKmxhc3RDaGlsZCgpIHsgcmV0dXJu
IG1fbGFzdENoaWxkOyB9CisgICAgaW50IGNoaWxkQ291bnQoKSB7IHJldHVybiBtX2NoaWxkQ291
bnQ7IH0KKworICAgIHZvaWQgYXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxGcmFtZT4gY2hpbGQpOwor
ICAgIHZvaWQgcmVtb3ZlQ2hpbGQoRnJhbWUgKmNoaWxkKTsKKworIHByaXZhdGU6CisgICAgRnJh
bWUgKm1fdGhpc0ZyYW1lOworCisgICAgLy8gRklYTUU6IHVzZSBMaXN0UmVmUHRyPworICAgIFJl
ZlB0cjxGcmFtZT4gbV9uZXh0U2libGluZzsKKyAgICBGcmFtZSAqbV9wcmV2aW91c1NpYmxpbmc7
CisgICAgUmVmUHRyPEZyYW1lPiBtX2ZpcnN0Q2hpbGQ7CisgICAgRnJhbWUgKm1fbGFzdENoaWxk
OworICAgIGludCBtX2NoaWxkQ291bnQ7Cit9OworCisjZW5kaWYgLy8gRlJBTUVfVFJFRV9OT0RF
X0gKSW5kZXg6IHBhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2UvRnJhbWUuY3BwCShy
ZXZpc2lvbiAxMjI4OSkKKysrIHBhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUs
NyArMTU1LDcgQEAgdm9pZCBGcmFtZTo6aW5pdChGcmFtZVZpZXcgKnZpZXcpCiAgIAogICBmcmFt
ZUNvdW50ID0gMDsKIAotICBkID0gbmV3IEZyYW1lUHJpdmF0ZShwYXJlbnQoKSk7CisgIGQgPSBu
ZXcgRnJhbWVQcml2YXRlKHBhcmVudCgpLCB0aGlzKTsKIAogICBkLT5tX3ZpZXcgPSB2aWV3Owog
ICBzZXRXaWRnZXQoIGQtPm1fdmlldyApOwpAQCAtMTgwLDggKzE4MCwzMSBAQCB2b2lkIEZyYW1l
Ojppbml0KEZyYW1lVmlldyAqdmlldykKICAgY29ubmVjdCgmZC0+bV9saWZlU3VwcG9ydFRpbWVy
LCBTSUdOQUwodGltZW91dCgpKSwgdGhpcywgU0xPVChzbG90RW5kTGlmZVN1cHBvcnQoKSkpOwog
fQogCisjaWZuZGVmIE5ERUJVRworc3RydWN0IEZyYW1lQ291bnRlciB7IAorICAgIHN0YXRpYyBp
bnQgY291bnQ7IAorICAgIH5GcmFtZUNvdW50ZXIoKSB7IGlmIChjb3VudCAhPSAwKSBmcHJpbnRm
KHN0ZGVyciwgIkxFQUs6ICVkIEZyYW1lXG4iLCBjb3VudCk7IH0KK307CitpbnQgRnJhbWVDb3Vu
dGVyOjpjb3VudCA9IDA7CitzdGF0aWMgRnJhbWVDb3VudGVyIGZyYW1lQ291bnRlcjsKKyNlbmRp
ZiBOREVCVUcKKworRnJhbWU6OkZyYW1lKCkgCisgICAgOiBkKDApIAoreyAKKyNpZm5kZWYgTkRF
QlVHCisgICAgKytGcmFtZUNvdW50ZXI6OmNvdW50OworI2VuZGlmCit9CisKIEZyYW1lOjp+RnJh
bWUoKQogeworICAgIGFzc2VydCghZC0+bV9saWZlU3VwcG9ydFRpbWVyLmlzQWN0aXZlKCkpOwor
CisjaWZuZGVmIE5ERUJVRworICAgIC0tRnJhbWVDb3VudGVyOjpjb3VudDsKKyNlbmRpZgorCiAg
IGNhbmNlbFJlZGlyZWN0aW9uKCk7CiAKICAgaWYgKCFkLT5tX2JDb21wbGV0ZSkKQEAgLTIwMCw2
ICsyMjMsOCBAQCBGcmFtZTo6fkZyYW1lKCkKICAgICBkLT5tX3ZpZXctPm1fZnJhbWUgPSAwOwog
ICB9CiAgIAorICBhc3NlcnQoIWQtPm1fbGlmZVN1cHBvcnRUaW1lci5pc0FjdGl2ZSgpKTsKKwog
ICBkZWxldGUgZDsgZCA9IDA7CiB9CiAKQEAgLTM3Myw3ICszOTgsNyBAQCB2b2lkIEZyYW1lOjpz
dG9wTG9hZGluZyhib29sIHNlbmRVbmxvYWQpCiAgIENvbnN0RnJhbWVJdCBpdCA9IGQtPm1fZnJh
bWVzLmJlZ2luKCk7CiAgIENvbnN0RnJhbWVJdCBlbmQgPSBkLT5tX2ZyYW1lcy5lbmQoKTsKICAg
Zm9yICg7IGl0ICE9IGVuZDsgKytpdCApIHsKLSAgICAgIE9iamVjdENvbnRlbnRzICpwYXJ0ID0g
KCppdCkubV9mcmFtZTsKKyAgICAgIE9iamVjdENvbnRlbnRzICpwYXJ0ID0gKCppdCkubV9mcmFt
ZS5nZXQoKTsKICAgICAgIGlmIChwYXJ0KSB7CiAgICAgICAgICAgRnJhbWUgKmZyYW1lID0gc3Rh
dGljX2Nhc3Q8RnJhbWUgKj4ocGFydCk7CiAKQEAgLTU4MywyNSArNjA4LDEyIEBAIHZvaWQgRnJh
bWU6OmNsZWFyKCkKICAgewogICAgIENvbnN0RnJhbWVJdCBpdCA9IGQtPm1fZnJhbWVzLmJlZ2lu
KCk7CiAgICAgQ29uc3RGcmFtZUl0IGVuZCA9IGQtPm1fZnJhbWVzLmVuZCgpOwotICAgIGZvcig7
IGl0ICE9IGVuZDsgKytpdCApCi0gICAgewotICAgICAgaWYgKCAoKml0KS5tX2ZyYW1lICkKLSAg
ICAgIHsKKyAgICBmb3IoOyBpdCAhPSBlbmQ7ICsraXQgKSB7CisgICAgICBpZiAoKCppdCkubV9m
cmFtZSkKICAgICAgICAgZGlzY29ubmVjdENoaWxkKCYqaXQpOwotICAgICAgICAoKml0KS5tX2Zy
YW1lLT5kZXJlZigpOwotICAgICAgfQogICAgIH0KICAgfQogICBkLT5tX2ZyYW1lcy5jbGVhcigp
OwotCi0gIHsKLSAgICBDb25zdEZyYW1lSXQgaXQgPSBkLT5tX29iamVjdHMuYmVnaW4oKTsKLSAg
ICBDb25zdEZyYW1lSXQgZW5kID0gZC0+bV9vYmplY3RzLmVuZCgpOwotICAgIGZvcig7IGl0ICE9
IGVuZDsgKytpdCApIHsKLSAgICAgIGlmICggKCppdCkubV9mcmFtZSApCi0gICAgICAgICgqaXQp
Lm1fZnJhbWUtPmRlcmVmKCk7Ci0gICAgfQotICB9CiAgIGQtPm1fb2JqZWN0cy5jbGVhcigpOwog
CiAgIGQtPm1fc2NoZWR1bGVkUmVkaXJlY3Rpb24gPSBub1JlZGlyZWN0aW9uU2NoZWR1bGVkOwpA
QCAtODg2LDE3ICs4OTgsMTAgQEAgdm9pZCBGcmFtZTo6ZW5kSWZOb3RMb2FkaW5nKCkKIAogdm9p
ZCBGcmFtZTo6c3RvcCgpCiB7Ci0gICAgLy8gbWFrZSBzdXJlIG5vdGhpbmcncyBsZWZ0IGluIHRo
ZXJlLi4uCiAgICAgaWYgKGQtPm1fZG9jKSB7CiAgICAgICAgIGlmIChkLT5tX2RvYy0+dG9rZW5p
emVyKCkpCiAgICAgICAgICAgICBkLT5tX2RvYy0+dG9rZW5pemVyKCktPnN0b3BQYXJzaW5nKCk7
CiAgICAgICAgIGQtPm1fZG9jLT5maW5pc2hQYXJzaW5nKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgLy8gV2ViS2l0IHBhcnRpYWxseSB1c2VzIFdlYkNvcmUgd2hlbiBsb2FkaW5nIG5vbi1IVE1M
IGRvY3MuICBJbiB0aGVzZSBjYXNlcyBkb2M9PW5pbCwgYnV0Ci0gICAgICAgIC8vIFdlYkNvcmUg
aXMgZW5vdWdoIGludm9sdmVkIHRoYXQgd2UgbmVlZCB0byBjaGVja0NvbXBsZXRlZCgpIGluIG9y
ZGVyIGZvciBtX2JDb21wbGV0ZSB0bwotICAgICAgICAvLyBiZWNvbWUgdHJ1ZS4gIEFuIGV4YW1w
bGUgaXMgd2hlbiBhIHN1YmZyYW1lIGlzIGEgcHVyZSB0ZXh0IGRvYywgYW5kIHRoYXQgc3ViZnJh
bWUgaXMgdGhlCi0gICAgICAgIC8vIGxhc3Qgb25lIHRvIGNvbXBsZXRlLgotICAgICAgICBjaGVj
a0NvbXBsZXRlZCgpOwogICAgIH0KIH0KIApAQCAtOTA5LDggKzkxNCw4IEBAIHZvaWQgRnJhbWU6
OnN0b3BBbmltYXRpb25zKCkKICAgQ29uc3RGcmFtZUl0IGl0ID0gZC0+bV9mcmFtZXMuYmVnaW4o
KTsKICAgQ29uc3RGcmFtZUl0IGVuZCA9IGQtPm1fZnJhbWVzLmVuZCgpOwogICBmb3IgKDsgaXQg
IT0gZW5kOyArK2l0ICkKLSAgICBpZiAoICEoICppdCApLm1fZnJhbWUuaXNOdWxsKCkgJiYgKCAq
aXQgKS5tX2ZyYW1lLT5pbmhlcml0cyggIkZyYW1lIiApICkgewotICAgICAgT2JqZWN0Q29udGVu
dHMqIHAgPSAoICppdCApLm1fZnJhbWU7CisgICAgaWYgKCgqaXQpLm1fZnJhbWUgJiYgKCppdCku
bV9mcmFtZS0+aW5oZXJpdHMoICJGcmFtZSIgKSApIHsKKyAgICAgIE9iamVjdENvbnRlbnRzKiBw
ID0gKCppdCkubV9mcmFtZS5nZXQoKTsKICAgICAgIHN0YXRpY19jYXN0PEZyYW1lKj4oIHAgKS0+
c3RvcEFuaW1hdGlvbnMoKTsKICAgICB9CiB9CkBAIC0xMDMxLDcgKzEwMzYsNyBAQCB2b2lkIEZy
YW1lOjpjaGVja0VtaXRMb2FkRXZlbnQoKQogICAgIENvbnN0RnJhbWVJdCBpdCA9IGQtPm1fZnJh
bWVzLmJlZ2luKCk7CiAgICAgQ29uc3RGcmFtZUl0IGVuZCA9IGQtPm1fZnJhbWVzLmVuZCgpOwog
ICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQgKSB7Ci0gICAgICBPYmplY3RDb250ZW50cyAqcCA9
ICgqaXQpLm1fZnJhbWU7CisgICAgICBPYmplY3RDb250ZW50cyAqcCA9ICgqaXQpLm1fZnJhbWUu
Z2V0KCk7CiAgICAgICBpZiAocCAmJiBwLT5pbmhlcml0cygiRnJhbWUiKSkgewogICAgICAgICBG
cmFtZSogaHRtbEZyYW1lID0gc3RhdGljX2Nhc3Q8RnJhbWUgKj4ocCk7CiAgICAgICAgIGlmICho
dG1sRnJhbWUtPmQtPm1fZG9jKQpAQCAtMTY4NSwxMCArMTY5MCw3IEBAIGJvb2wgRnJhbWU6OnBy
b2Nlc3NPYmplY3RSZXF1ZXN0KCBDaGlsZEYKIAogICAgIC8vQ1JJVElDQUwgU1RVRkYKICAgICBp
ZiAoY2hpbGQtPm1fZnJhbWUpCi0gICAgewogICAgICAgZGlzY29ubmVjdENoaWxkKGNoaWxkKTsK
LSAgICAgIGNoaWxkLT5tX2ZyYW1lLT5kZXJlZigpOwotICAgIH0KIAogICAgIGNoaWxkLT5tX3Nl
cnZpY2VUeXBlID0gbWltZXR5cGU7CiAgICAgaWYgKGNoaWxkLT5tX3JlbmRlcmVyICYmIGZyYW1l
LT53aWRnZXQoKSApCkBAIC0xNjk2LDcgKzE2OTgsNyBAQCBib29sIEZyYW1lOjpwcm9jZXNzT2Jq
ZWN0UmVxdWVzdCggQ2hpbGRGCiAKIAogICAgIGNoaWxkLT5tX2ZyYW1lID0gcGFydDsKLSAgICBh
c3NlcnQoICgodm9pZCopIGNoaWxkLT5tX2ZyYW1lKSAhPSAwKTsKKyAgICBhc3NlcnQoY2hpbGQt
Pm1fZnJhbWUpOwogCiAgICAgY29ubmVjdENoaWxkKGNoaWxkKTsKIApAQCAtMTczNiw3ICsxNzM4
LDcgQEAgYm9vbCBGcmFtZTo6cHJvY2Vzc09iamVjdFJlcXVlc3QoIENoaWxkRgogICAvLyBpdCdz
IGJlaW5nIGFkZGVkIHRvIHRoZSBjaGlsZCBsaXN0LiAgSXQgd291bGQgYmUgYSBnb29kIGlkZWEg
dG8KICAgLy8gY3JlYXRlIHRoZSBjaGlsZCBmaXJzdCwgdGhlbiBpbnZva2UgdGhlIGxvYWRlciBz
ZXBhcmF0ZWx5ICAKICAgaWYgKHVybC5pc0VtcHR5KCkgfHwgdXJsLnVybCgpID09ICJhYm91dDpi
bGFuayIpIHsKLSAgICAgIE9iamVjdENvbnRlbnRzICpwYXJ0ID0gY2hpbGQtPm1fZnJhbWU7Cisg
ICAgICBPYmplY3RDb250ZW50cyAqcGFydCA9IGNoaWxkLT5tX2ZyYW1lLmdldCgpOwogICAgICAg
RnJhbWUgKmZyYW1lID0gc3RhdGljX2Nhc3Q8RnJhbWUgKj4ocGFydCk7CiAgICAgICBpZiAoZnJh
bWUgJiYgZnJhbWUtPmluaGVyaXRzKCJGcmFtZSIpKSB7CiAgICAgICAgICAgZnJhbWUtPmNvbXBs
ZXRlZCgpOwpAQCAtMTkwMywxMyArMTkwNSwxMyBAQCBDaGlsZEZyYW1lICpGcmFtZTo6Y2hpbGRG
cmFtZSggY29uc3QgUU9iCiAgICAgRnJhbWVJdCBpdCA9IGQtPm1fZnJhbWVzLmJlZ2luKCk7CiAg
ICAgRnJhbWVJdCBlbmQgPSBkLT5tX2ZyYW1lcy5lbmQoKTsKICAgICBmb3IgKDsgaXQgIT0gZW5k
OyArK2l0ICkKLSAgICAgIGlmIChzdGF0aWNfY2FzdDxPYmplY3RDb250ZW50cyAqPigoKml0KS5t
X2ZyYW1lKSA9PSBwYXJ0KQorICAgICAgaWYgKCgqaXQpLm1fZnJhbWUgPT0gcGFydCkKICAgICAg
ICAgcmV0dXJuICYoKml0KTsKIAogICAgIGl0ID0gZC0+bV9vYmplY3RzLmJlZ2luKCk7CiAgICAg
ZW5kID0gZC0+bV9vYmplY3RzLmVuZCgpOwogICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQgKQot
ICAgICAgaWYgKHN0YXRpY19jYXN0PE9iamVjdENvbnRlbnRzICo+KCgqaXQpLm1fZnJhbWUpID09
IHBhcnQpCisgICAgICBpZiAoKCppdCkubV9mcmFtZSA9PSBwYXJ0KQogICAgICAgICByZXR1cm4g
JigqaXQpOwogCiAgICAgcmV0dXJuIDBMOwpAQCAtMTkyMiw3ICsxOTI0LDcgQEAgRnJhbWUgKkZy
YW1lOjpmaW5kRnJhbWUoIGNvbnN0IFFTdHJpbmcgJgogICBpZiAoaXQgPT0gZC0+bV9mcmFtZXMu
ZW5kKCkpCiAgICAgcmV0dXJuIDBMOwogICBlbHNlIHsKLSAgICBPYmplY3RDb250ZW50cyAqcCA9
ICgqaXQpLm1fZnJhbWU7CisgICAgT2JqZWN0Q29udGVudHMgKnAgPSAoKml0KS5tX2ZyYW1lLmdl
dCgpOwogICAgIGlmIChwICYmIHAtPmluaGVyaXRzKCJGcmFtZSIpKQogICAgICAgcmV0dXJuIChG
cmFtZSopcDsKICAgICBlbHNlCkBAIC0yMDA0LDkgKzIwMDYsOSBAQCB2b2lkIEZyYW1lOjpzZXRa
b29tRmFjdG9yIChpbnQgcGVyY2VudCkKICAgQ29uc3RGcmFtZUl0IGl0ID0gZC0+bV9mcmFtZXMu
YmVnaW4oKTsKICAgQ29uc3RGcmFtZUl0IGVuZCA9IGQtPm1fZnJhbWVzLmVuZCgpOwogICBmb3Ig
KDsgaXQgIT0gZW5kOyArK2l0ICkKLSAgICBpZiAoISgqaXQpLm1fZnJhbWUuaXNOdWxsKCkgJiYg
KCppdCkubV9mcmFtZS0+aW5oZXJpdHMoICJGcmFtZSIgKSApIHsKLSAgICAgIE9iamVjdENvbnRl
bnRzKiBwID0gKCAqaXQgKS5tX2ZyYW1lOwotICAgICAgc3RhdGljX2Nhc3Q8RnJhbWUqPiggcCAp
LT5zZXRab29tRmFjdG9yKGQtPm1fem9vbUZhY3Rvcik7CisgICAgaWYgKCgqaXQpLm1fZnJhbWUg
JiYgKCppdCkubV9mcmFtZS0+aW5oZXJpdHMoIkZyYW1lIikpIHsKKyAgICAgIE9iamVjdENvbnRl
bnRzKiBwID0gKCppdCkubV9mcmFtZS5nZXQoKTsKKyAgICAgIHN0YXRpY19jYXN0PEZyYW1lKj4o
cCktPnNldFpvb21GYWN0b3IoZC0+bV96b29tRmFjdG9yKTsKICAgICB9CiAKICAgaWYgKGQtPm1f
ZG9jICYmIGQtPm1fZG9jLT5yZW5kZXJlcigpICYmIGQtPm1fZG9jLT5yZW5kZXJlcigpLT5uZWVk
c0xheW91dCgpKQpAQCAtMjA4Niw3ICsyMDg4LDcgQEAgUVB0ckxpc3Q8T2JqZWN0Q29udGVudHM+
IEZyYW1lOjpmcmFtZXMoKQogICBDb25zdEZyYW1lSXQgZW5kID0gZC0+bV9mcmFtZXMuZW5kKCk7
CiAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQgKQogICAgIGlmICghKCppdCkubV9iUHJlbG9hZGVk
KQotICAgICAgcmVzLmFwcGVuZCgoKml0KS5tX2ZyYW1lKTsKKyAgICAgIHJlcy5hcHBlbmQoKCpp
dCkubV9mcmFtZS5nZXQoKSk7CiAKICAgcmV0dXJuIHJlczsKIH0KQEAgLTI5NjAsNyArMjk2Miw3
IEBAIGJvb2wgRnJhbWU6OmlzQ2hhcmFjdGVyU21hcnRSZXBsYWNlRXhlbXAKIAogdm9pZCBGcmFt
ZTo6Y29ubmVjdENoaWxkKGNvbnN0IENoaWxkRnJhbWUgKmNoaWxkKSBjb25zdAogewotICAgIE9i
amVjdENvbnRlbnRzICpwYXJ0ID0gY2hpbGQtPm1fZnJhbWU7CisgICAgT2JqZWN0Q29udGVudHMg
KnBhcnQgPSBjaGlsZC0+bV9mcmFtZS5nZXQoKTsKICAgICBpZiAocGFydCAmJiBjaGlsZC0+bV90
eXBlICE9IENoaWxkRnJhbWU6Ok9iamVjdCkKICAgICB7CiAgICAgICAgIGNvbm5lY3QoIHBhcnQs
IFNJR05BTCggc3RhcnRlZCggS0lPOjpKb2IgKikgKSwKQEAgLTI5ODAsNyArMjk4Miw3IEBAIHZv
aWQgRnJhbWU6OmNvbm5lY3RDaGlsZChjb25zdCBDaGlsZEZyYW0KIAogdm9pZCBGcmFtZTo6ZGlz
Y29ubmVjdENoaWxkKGNvbnN0IENoaWxkRnJhbWUgKmNoaWxkKSBjb25zdAogewotICAgIE9iamVj
dENvbnRlbnRzICpwYXJ0ID0gY2hpbGQtPm1fZnJhbWU7CisgICAgT2JqZWN0Q29udGVudHMgKnBh
cnQgPSBjaGlsZC0+bV9mcmFtZS5nZXQoKTsKICAgICBpZiAocGFydCAmJiBjaGlsZC0+bV90eXBl
ICE9IENoaWxkRnJhbWU6Ok9iamVjdCkKICAgICB7CiAgICAgICAgIGRpc2Nvbm5lY3QoIHBhcnQs
IFNJR05BTCggc3RhcnRlZCggS0lPOjpKb2IgKikgKSwKQEAgLTI5OTgsMjAgKzMwMDAsNDIgQEAg
dm9pZCBGcmFtZTo6ZGlzY29ubmVjdENoaWxkKGNvbnN0IENoaWxkRgogICAgIH0KIH0KIAorI2lm
bmRlZiBOREVCVUcKK3R5cGVkZWYgSGFzaFNldDxGcmFtZSAqLCBQb2ludGVySGFzaDxGcmFtZSAq
PiA+IEZyYW1lU2V0Oworc3RhdGljIEZyYW1lU2V0IGxpZmVTdXBwb3J0U2V0OworI2VuZGlmCisK
K3ZvaWQgRnJhbWU6OmVuZEFsbExpZmVTdXBwb3J0KCkKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAg
RnJhbWVTZXQgbGlmZVN1cHBvcnRDb3B5ID0gbGlmZVN1cHBvcnRTZXQ7CisgICAgRnJhbWVTZXQ6
Oml0ZXJhdG9yIGVuZCA9IGxpZmVTdXBwb3J0Q29weS5lbmQoKTsKKyAgICBmb3IgKEZyYW1lU2V0
OjppdGVyYXRvciBpdCA9IGxpZmVTdXBwb3J0Q29weS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
CisgICAgICAgICgqaXQpLT5zbG90RW5kTGlmZVN1cHBvcnQoKTsKKyNlbmRpZgorfQorCiB2b2lk
IEZyYW1lOjprZWVwQWxpdmUoKQogewogICAgIGlmIChkLT5tX2xpZmVTdXBwb3J0VGltZXIuaXNB
Y3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlZigpOwogICAgIGQtPm1fbGlmZVN1cHBv
cnRUaW1lci5zdGFydCgwLCB0cnVlKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgbGlmZVN1cHBvcnRT
ZXQuaW5zZXJ0KHRoaXMpOworI2VuZGlmCiB9CiAKIHZvaWQgRnJhbWU6OnNsb3RFbmRMaWZlU3Vw
cG9ydCgpCiB7CiAgICAgZC0+bV9saWZlU3VwcG9ydFRpbWVyLnN0b3AoKTsKICAgICBkZXJlZigp
OworI2lmbmRlZiBOREVCVUcKKyAgICBsaWZlU3VwcG9ydFNldC5yZW1vdmUodGhpcyk7CisjZW5k
aWYKIH0KIAorCiAvLyBXb3JrYXJvdW5kIGZvciB0aGUgZmFjdCB0aGF0IGl0J3MgaGFyZCB0byBk
ZWxldGUgYSBmcmFtZS4KIC8vIENhbGwgdGhpcyBhZnRlciBkb2luZyB1c2VyLXRyaWdnZXJlZCBz
ZWxlY3Rpb25zIHRvIG1ha2UgaXQgZWFzeSB0byBkZWxldGUgdGhlIGZyYW1lIHlvdSBlbnRpcmVs
eSBzZWxlY3RlZC4KIC8vIENhbid0IGRvIHRoaXMgaW1wbGljaXRseSBhcyBwYXJ0IG9mIGV2ZXJ5
IHNldFNlbGVjdGlvbiBjYWxsIGJlY2F1c2UgaW4gc29tZSBjb250ZXh0cyBpdCBtaWdodCBub3Qg
YmUgZ29vZApAQCAtMzQ0OSw3ICszNDczLDcgQEAgdm9pZCBGcmFtZTo6c2V0UG9saWN5QmFzZVVS
TChjb25zdCBET01TdAogICAgICAgICBkb2N1bWVudCgpLT5zZXRQb2xpY3lCYXNlVVJMKHMpOwog
ICAgIENvbnN0RnJhbWVJdCBlbmQgPSBkLT5tX2ZyYW1lcy5lbmQoKTsKICAgICBmb3IgKENvbnN0
RnJhbWVJdCBpdCA9IGQtPm1fZnJhbWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBPYmplY3RDb250ZW50cyAqc3VicGFydCA9ICgqaXQpLm1fZnJhbWU7CisgICAgICAgIE9i
amVjdENvbnRlbnRzICpzdWJwYXJ0ID0gKCppdCkubV9mcmFtZS5nZXQoKTsKICAgICAgICAgc3Rh
dGljX2Nhc3Q8RnJhbWUgKj4oc3VicGFydCktPnNldFBvbGljeUJhc2VVUkwocyk7CiAgICAgfQog
fQpAQCAtMzc5NCwzICszODE4LDQ3IEBAIGJvb2wgRnJhbWU6OmlzQ29tcGxldGUoKQogewogICAg
IHJldHVybiBkLT5tX2JDb21wbGV0ZTsKIH0KKworRnJhbWVUcmVlTm9kZSAqRnJhbWU6OnRyZWVO
b2RlKCkKK3sKKyAgICByZXR1cm4gJmQtPm1fdHJlZU5vZGU7Cit9CisKK0ZyYW1lICpGcmFtZTo6
bmV4dFNpYmxpbmcoKQoreworICAgIHJldHVybiB0cmVlTm9kZSgpLT5uZXh0U2libGluZygpOwor
fQorCitGcmFtZSAqRnJhbWU6OnByZXZpb3VzU2libGluZygpCit7CisgICAgcmV0dXJuIGQtPm1f
dHJlZU5vZGUucHJldmlvdXNTaWJsaW5nKCk7Cit9CisKK0ZyYW1lICpGcmFtZTo6Zmlyc3RDaGls
ZCgpCit7CisgICAgcmV0dXJuIHRyZWVOb2RlKCktPmZpcnN0Q2hpbGQoKTsKK30KKworRnJhbWUg
KkZyYW1lOjpsYXN0Q2hpbGQoKQoreworICAgIHJldHVybiB0cmVlTm9kZSgpLT5sYXN0Q2hpbGQo
KTsKK30KKworaW50IEZyYW1lOjpjaGlsZENvdW50KCkKK3sKKyAgICByZXR1cm4gdHJlZU5vZGUo
KS0+Y2hpbGRDb3VudCgpOworfQorCit2b2lkIEZyYW1lOjphcHBlbmRDaGlsZChGcmFtZSAqY2hp
bGQpCit7CisgICAgdHJlZU5vZGUoKS0+YXBwZW5kQ2hpbGQoYWRvcHRSZWYoY2hpbGQpKTsKK30K
Kwordm9pZCBGcmFtZTo6cmVtb3ZlQ2hpbGQoRnJhbWUgKmNoaWxkKQoreworICAgIHRyZWVOb2Rl
KCktPnJlbW92ZUNoaWxkKGNoaWxkKTsKK30KKwordm9pZCBGcmFtZTo6ZGV0YWNoRnJvbVZpZXco
KQoreworfQpJbmRleDogcGFnZS9GcmFtZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0Zy
YW1lUHJpdmF0ZS5oCShyZXZpc2lvbiAxMjI4OSkKKysrIHBhZ2UvRnJhbWVQcml2YXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxraW8vZ2xvYmFsLmg+CiAj
aW5jbHVkZSA8cWRhdGV0aW1lLmg+CiAjaW5jbHVkZSA8cXRpbWVyLmg+CisjaW5jbHVkZSAiRnJh
bWVUcmVlTm9kZS5oIgogCiBuYW1lc3BhY2UgS0lPIHsKICAgICBjbGFzcyBUcmFuc2ZlckpvYjsK
QEAgLTUyLDcgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogCiAgICAgUUd1YXJkZWRQdHI8
UmVuZGVyUGFydD4gbV9yZW5kZXJlcjsKLSAgICBRR3VhcmRlZFB0cjxPYmplY3RDb250ZW50cz4g
bV9mcmFtZTsKKyAgICBSZWZQdHI8T2JqZWN0Q29udGVudHM+IG1fZnJhbWU7CiAgICAgUUd1YXJk
ZWRQdHI8QnJvd3NlckV4dGVuc2lvbj4gbV9leHRlbnNpb247CiAgICAgUVN0cmluZyBtX3NlcnZp
Y2VOYW1lOwogICAgIFFTdHJpbmcgbV9zZXJ2aWNlVHlwZTsKQEAgLTkwLDcgKzkxLDggQEAgZW51
bSBSZWRpcmVjdGlvblNjaGVkdWxlZCB7CiBjbGFzcyBGcmFtZVByaXZhdGUKIHsKIHB1YmxpYzoK
LSAgRnJhbWVQcml2YXRlKFFPYmplY3QqIHBhcmVudCkKKyAgRnJhbWVQcml2YXRlKFFPYmplY3Qg
KnBhcmVudCwgRnJhbWUgKnRoaXNGcmFtZSkKKyAgICAgIDogbV90cmVlTm9kZSh0aGlzRnJhbWUp
CiAgIHsKICAgICBtX2RvYyA9IDA7CiAgICAgbV9qc2NyaXB0ID0gMDsKQEAgLTE3NSw2ICsxNzcs
OSBAQCBwdWJsaWM6CiAgICAgICAgIG1fdHlwaW5nU3R5bGUtPmRlcmVmKCk7CiAgIH0KIAorICBG
cmFtZVRyZWVOb2RlIG1fdHJlZU5vZGU7CisKKyAgLy8gb2xkIHN0eWxlIGZyYW1lIGluZm8KICAg
RnJhbWVMaXN0IG1fZnJhbWVzOwogICBRVmFsdWVMaXN0PFdlYkNvcmU6OkNoaWxkRnJhbWU+IG1f
b2JqZWN0czsKIApJbmRleDogcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL1BhZ2Uu
Y3BwCShyZXZpc2lvbiAwKQorKysgcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzOCBAQAorLy8gLSotIGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEg
MDIxMTEtMTMwNywgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKworc3RhdGljIGludCBwYWdlQ291bnQ7CisKK1Bh
Z2U6OlBhZ2UoUGFzc1JlZlB0cjxGcmFtZT4gbWFpbkZyYW1lKSAKKyAgICA6IG1fbWFpbkZyYW1l
KG1haW5GcmFtZSkgCit7CisgICAgKytwYWdlQ291bnQ7Cit9CisKK1BhZ2U6On5QYWdlKCkgCit7
IAorICAgIG1fbWFpbkZyYW1lLT5kZXRhY2hGcm9tVmlldygpOyAKKyAgICBpZiAoIS0tcGFnZUNv
dW50KQorICAgICAgICBGcmFtZTo6ZW5kQWxsTGlmZVN1cHBvcnQoKTsKK30K
</data>
<flag name="review"
          id="1366"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5864</attachid>
            <date>2006-01-22 22:34:36 -0800</date>
            <delta_ts>2006-01-22 22:35:00 -0800</delta_ts>
            <desc>ok, here&apos;s a version that works</desc>
            <filename>Page-class-third-attempt.patch.txt</filename>
            <type>text/plain</type>
            <size>47697</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL3htbC9Eb2N1bWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL3ht
bC9Eb2N1bWVudEltcGwuY3BwCShyZXZpc2lvbiAxMjI4OSkKKysrIGtodG1sL3htbC9Eb2N1bWVu
dEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIzLDggKzExMjMsMTMgQEAgdm9pZCBEb2N1
bWVudEltcGw6Om9wZW4oICApCiAKIHZvaWQgRG9jdW1lbnRJbXBsOjppbXBsaWNpdE9wZW4oKQog
ewotICAgIGlmIChtX3Rva2VuaXplcikKKyAgICBpZiAobV90b2tlbml6ZXIpIHsKKyAgICAgICAg
Ly8gV2UgaGF2ZSB0byBjbGVhciB0aGUgdG9rZW5pemVyIHRvIGF2b2lkIHBvc3NpYmx5IHRyaWdn
ZXJpbmcKKyAgICAgICAgLy8gdGhlIG9ubG9hZCBoYW5kbGVyIHdoZW4gY2xvc2luZyBhcyBhIHNp
ZGUgZWZmZWN0IG9mIG9wZW5pbmcKKyAgICAgICAgZGVsZXRlIG1fdG9rZW5pemVyOworICAgICAg
ICBtX3Rva2VuaXplciA9IDA7CiAgICAgICAgIGNsb3NlKCk7CisgICAgfQogCiAgICAgY2xlYXIo
KTsKICAgICBtX3Rva2VuaXplciA9IGNyZWF0ZVRva2VuaXplcigpOwpJbmRleDoga2h0bWwvZWNt
YS9ranNfd2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9lY21hL2tqc193aW5kb3cuY3Bw
CShyZXZpc2lvbiAxMjI4OSkKKysrIGtodG1sL2VjbWEva2pzX3dpbmRvdy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyODksMTMgKzEyODksMTQgQEAgYm9vbCBXaW5kb3c6OmlzU2FmZVNjcmlwdChF
eGVjU3RhdGUgKmV4ZQogICBET006OkRvY3VtZW50SW1wbCogdGhpc0RvY3VtZW50ID0gbV9mcmFt
ZS0+ZG9jdW1lbnQoKTsKICAgRE9NOjpEb2N1bWVudEltcGwqIGFjdERvY3VtZW50ID0gYWN0aXZl
UGFydC0+ZG9jdW1lbnQoKTsKIAotICBpZiAoIWFjdERvY3VtZW50KSB7Ci0gICAga2REZWJ1Zyg2
MDcwKSA8PCAiV2luZG93Ojppc1NhZmVTY3JpcHQ6IGFjdGl2ZSBmcmFtZSBoYXMgbm8gZG9jdW1l
bnQhIiA8PCBlbmRsOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQorICBET006OkRPTVN0cmluZyBh
Y3REb21haW47CiAKLSAgRE9NOjpET01TdHJpbmcgYWN0RG9tYWluID0gYWN0RG9jdW1lbnQtPmRv
bWFpbigpOworICBpZiAoIWFjdERvY3VtZW50KQorICAgIGFjdERvbWFpbiA9IGFjdGl2ZVBhcnQt
PnVybCgpLmhvc3QoKTsKKyAgZWxzZQorICAgIGFjdERvbWFpbiA9IGFjdERvY3VtZW50LT5kb21h
aW4oKTsKICAgCisgIC8vIEZJWE1FOiB0aGlzIHJlYWxseSBzaG91bGQgYmUgZXhwbGljaXRseSBj
aGVja2luZyBmb3IgdGhlICJmaWxlOiIgcHJvdG9jb2wgaW5zdGVhZAogICAvLyBBbHdheXMgYWxs
b3cgbG9jYWwgcGFnZXMgdG8gZXhlY3V0ZSBhbnkgSlMuCiAgIGlmIChhY3REb21haW4uaXNOdWxs
KCkpCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzE1LDYgKzEzMTYsNyBAQCBib29sIFdpbmRvdzo6
aXNTYWZlU2NyaXB0KEV4ZWNTdGF0ZSAqZXhlCiAgICAgICB0aGlzRG9tYWluID0gYW5jZXN0b3JQ
YXJ0LT5kb2N1bWVudCgpLT5kb21haW4oKTsKICAgfQogCisgIC8vIEZJWE1FOiB0aGlzIHNob3Vs
ZCBjaGVjayB0aGF0IFVSTCBzY2hlbWUgYW5kIHBvcnQgbWF0Y2ggdG9vLCBwcm9iYWJseQogICBp
ZiAoYWN0RG9tYWluID09IHRoaXNEb21haW4pCiAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTEzODcs
NyArMTM4OSw3IEBAIEpTTGF6eUV2ZW50TGlzdGVuZXIgKldpbmRvdzo6Z2V0SlNMYXp5RXYKICAg
cmV0dXJuIG5ldyBKU0xhenlFdmVudExpc3RlbmVyKGNvZGUsIHRoaXMsIG5vZGUsIGxpbmVOdW1i
ZXIpOwogfQogCi12b2lkIFdpbmRvdzo6Y2xlYXIoIEV4ZWNTdGF0ZSAqZXhlYyApCit2b2lkIFdp
bmRvdzo6Y2xlYXIoKQogewogICBKU0xvY2sgbG9jazsKICAgaWYgKG1fcmV0dXJuVmFsdWVTbG90
KQpJbmRleDoga2h0bWwvZWNtYS9ranNfYmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwv
ZWNtYS9ranNfYmluZGluZy5jcHAJKHJldmlzaW9uIDEyMjg5KQorKysga2h0bWwvZWNtYS9ranNf
YmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJ4
bWwvZG9tMl9ldmVudHNpbXBsLmgiCiAjaW5jbHVkZSAieG1sL0V2ZW50TmFtZXMuaCIKICNpbmNs
dWRlICJkb20vY3NzX3N0eWxlc2hlZXQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogCiAjaW5jbHVk
ZSA8a2RlYnVnLmg+CiAKQEAgLTE3NCw2ICsxNzUsMTQgQEAgdm9pZCBTY3JpcHRJbnRlcnByZXRl
cjo6bWFyaygpCiAgIH0KIH0KIAorRXhlY1N0YXRlICpTY3JpcHRJbnRlcnByZXRlcjo6Z2xvYmFs
RXhlYygpCit7CisgICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBhbnkgc2NyaXB0IGV4
ZWN1dGlvbiBoYXBwZW5pbmcgaW4gdGhpcworICAgIC8vIGZyYW1lIGRvZXMgbm90IGRlc3Ryb3kg
aXQKKyAgICBtX2ZyYW1lLT5rZWVwQWxpdmUoKTsKKyAgICByZXR1cm4gSW50ZXJwcmV0ZXI6Omds
b2JhbEV4ZWMoKTsKK30KKwogdm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6dXBkYXRlRE9NTm9kZURv
Y3VtZW50KERPTTo6Tm9kZUltcGwgKm5vZGUsIERPTTo6RG9jdW1lbnRJbXBsICpvbGREb2MsIERP
TTo6RG9jdW1lbnRJbXBsICpuZXdEb2MpCiB7CiAgIERPTU5vZGUgKmNhY2hlZE9iamVjdCA9IGdl
dERPTU5vZGVGb3JEb2N1bWVudChvbGREb2MsIG5vZGUpOwpJbmRleDoga2h0bWwvZWNtYS9ranNf
d2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9ranNfd2luZG93LmgJKHJldmlzaW9u
IDEyMjg5KQorKysga2h0bWwvZWNtYS9ranNfd2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2
MSw3ICsxNjEsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBKU0V2ZW50TGlzdGVuZXIgKmdldEpT
RXZlbnRMaXN0ZW5lcihKU1ZhbHVlKiwgYm9vbCBodG1sID0gZmFsc2UpOwogICAgIEpTVW5wcm90
ZWN0ZWRFdmVudExpc3RlbmVyICpnZXRKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihKU1ZhbHVl
KiwgYm9vbCBodG1sID0gZmFsc2UpOwogICAgIEpTTGF6eUV2ZW50TGlzdGVuZXIgKmdldEpTTGF6
eUV2ZW50TGlzdGVuZXIoY29uc3QgRE9NOjpET01TdHJpbmcmIGNvZGUsIERPTTo6Tm9kZUltcGwq
LCBpbnQgbGluZW5vID0gMCk7Ci0gICAgdm9pZCBjbGVhcihFeGVjU3RhdGUgKik7CisgICAgdm9p
ZCBjbGVhcigpOwogICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUgKikgY29u
c3Q7CiAKICAgICAvLyBTZXQgdGhlIGN1cnJlbnQgImV2ZW50IiBvYmplY3QKSW5kZXg6IGtodG1s
L2VjbWEva2pzX2JpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9lY21hL2tqc19iaW5kaW5n
LmgJKHJldmlzaW9uIDEyMjg5KQorKysga2h0bWwvZWNtYS9ranNfYmluZGluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgYm9vbCB3YXNS
dW5CeVVzZXJHZXN0dXJlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFyaygpOworICAg
IHZpcnR1YWwgRXhlY1N0YXRlICpnbG9iYWxFeGVjKCk7CiAgICAgCiAgICAgRE9NOjpFdmVudElt
cGwgKmdldEN1cnJlbnRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXZ0OyB9CiAKSW5kZXg6IGto
dG1sL2VjbWEva2pzX3Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9lY21hL2tqc19wcm94
eS5jcHAJKHJldmlzaW9uIDEyMjg5KQorKysga2h0bWwvZWNtYS9ranNfcHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgS0pTUHJveHlJbXBsOjpjbGVhcigpIHsK
ICAgaWYgKG1fc2NyaXB0KSB7CiAgICAgV2luZG93ICp3aW4gPSBXaW5kb3c6OnJldHJpZXZlV2lu
ZG93KG1fZnJhbWUpOwogICAgIGlmICh3aW4pCi0gICAgICAgIHdpbi0+Y2xlYXIoIG1fc2NyaXB0
LT5nbG9iYWxFeGVjKCkgKTsKKyAgICAgICAgd2luLT5jbGVhcigpOwogICB9CiB9CiAKQEAgLTEw
OSw3ICsxMDksNiBAQCBLSlM6OlNjcmlwdEludGVycHJldGVyICpLSlNQcm94eUltcGw6OmluCiB7
CiAgIGlmICghbV9zY3JpcHQpCiAgICAgaW5pdFNjcmlwdCgpOwotICBtX2ZyYW1lLT5rZWVwQWxp
dmUoKTsKICAgcmV0dXJuIG1fc2NyaXB0OwogfQogCkluZGV4OiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxMjI4OSkKKysrIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsOSBAQAogCQk2NTUyRTdBQjA5NkFBMTFC
MDAwNkYyNDggLyogV2ViQ29yZUZyYW1lTmFtZXNwYWNlcy5tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU1MkU3QTkwOTZBQTExQjAwMDZGMjQ4IC8qIFdl
YkNvcmVGcmFtZU5hbWVzcGFjZXMubSAqLzsgfTsKIAkJNjU3NDNCNTIwOTcwNzZGODAwMUU3Q0VG
IC8qIFJlbmRlclNWR1RleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjU3NDNCNTAwOTcwNzZGODAwMUU3Q0VGIC8qIFJlbmRlclNWR1RleHQuY3Bw
ICovOyB9OwogCQk2NTc0M0I1MzA5NzA3NkY4MDAxRTdDRUYgLyogUmVuZGVyU1ZHVGV4dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU3NDNCNTEwOTcw
NzZGODAwMUU3Q0VGIC8qIFJlbmRlclNWR1RleHQuaCAqLzsgfTsKKwkJNjVBMjE0NjgwOTdBMzI5
MTAwQjkwNTBBIC8qIFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1QTIxNDY3MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggKi87IH07CisJCTY1
QTIxNDg0MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWVOb2RlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QTIxNDgyMDk3QTNGNTMwMEI5MDUw
QSAvKiBGcmFtZVRyZWVOb2RlLmNwcCAqLzsgfTsKKwkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBB
IC8qIEZyYW1lVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWVOb2RlLmggKi87
IH07CiAJCTY1QUM3OUExMDgzMUVENkQwMDkzODVDRSAvKiBhcHBlbmRfbm9kZV9jb21tYW5kLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QUM3OTlG
MDgzMUVENkQwMDkzODVDRSAvKiBhcHBlbmRfbm9kZV9jb21tYW5kLmNwcCAqLzsgfTsKIAkJNjVB
Qzc5QTIwODMxRUQ2RDAwOTM4NUNFIC8qIGFwcGVuZF9ub2RlX2NvbW1hbmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QUM3OUEwMDgzMUVENkQwMDkz
ODVDRSAvKiBhcHBlbmRfbm9kZV9jb21tYW5kLmggKi87IH07CiAJCTY1QUM3OUE5MDgzMUYwMDYw
MDkzODVDRSAvKiBhcHBseV9zdHlsZV9jb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QUM3OUE3MDgzMUYwMDYwMDkzODVDRSAvKiBhcHBs
eV9zdHlsZV9jb21tYW5kLmNwcCAqLzsgfTsKQEAgLTg1LDYgKzg4LDcgQEAKIAkJNjVDQkZFRkEw
OTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmll
dy5oICovOyB9OwogCQk2NURDMTZDNDA4MzFERDZGMDAyMjc0NEUgLyogY29tcG9zaXRlX2VkaXRf
Y29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NURDMTZDMjA4MzFERDZGMDAyMjc0NEUgLyogY29tcG9zaXRlX2VkaXRfY29tbWFuZC5jcHAg
Ki87IH07CiAJCTY1REMxNkM1MDgzMURENkYwMDIyNzQ0RSAvKiBjb21wb3NpdGVfZWRpdF9jb21t
YW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NURD
MTZDMzA4MzFERDZGMDAyMjc0NEUgLyogY29tcG9zaXRlX2VkaXRfY29tbWFuZC5oICovOyB9Owor
CQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyog
UGFnZS5jcHAgKi87IH07CiAJCTdFNkZFRUQ4MDg5ODU4MjMwMEM0NEMzRiAvKiBXZWJDb3JlU2Ny
aXB0RGVidWdnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdFNkZFRUQ2MDg5ODU4MjMwMEM0NEMzRiAvKiBXZWJDb3JlU2NyaXB0RGVidWdnZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RTZGRUVE
OTA4OTg1ODIzMDBDNDRDM0YgLyogV2ViQ29yZVNjcmlwdERlYnVnZ2VyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2RkVFRDcwODk4NTgyMzAwQzQ0
QzNGIC8qIFdlYkNvcmVTY3JpcHREZWJ1Z2dlci5tbSAqLzsgfTsKIAkJOTM3QTM2QTcwOTdFMkUz
MjAwRTRFRTJGIC8qIFVzZXJBZ2VudFN0eWxlU2hlZXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzN0EzNkE2MDk3RTJFMzIwMEU0RUUyRiAvKiBV
c2VyQWdlbnRTdHlsZVNoZWV0cy5jcHAgKi87IH07CkBAIC0xMTU4LDYgKzExNjIsOSBAQAogCQk2
NTc0M0I1MTA5NzA3NkY4MDAxRTdDRUYgLyogUmVuZGVyU1ZHVGV4dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTkxMkIwRDA1ODY5MjEwMDAxMjNBNjkgLyogeG1sc2VyaWFsaXplci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB4
bWxzZXJpYWxpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTY1OTEyQjBFMDU4NjkyMTAwMDEyM0E2OSAvKiB4bWxzZXJpYWxp
emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IHhtbHNlcmlhbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CisJCTY1QTIxNDY3MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTY1QTIxNDgyMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWVOb2RlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZVRyZWVOb2RlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVBMjE0ODMwOTdBM0Y1MzAwQjkwNTBB
IC8qIEZyYW1lVHJlZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZy
YW1lVHJlZU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVBNjQwRjAwNTMz
QkIxRjAwODVFNzc3IC8qIEtXUUV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS1dRRXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVBQzc5OUYwODMx
RUQ2RDAwOTM4NUNFIC8qIGFwcGVuZF9ub2RlX2NvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gYXBwZW5kX25vZGVfY29tbWFu
ZC5jcHA7IHBhdGggPSBlZGl0aW5nL2FwcGVuZF9ub2RlX2NvbW1hbmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVBQzc5QTAw
ODMxRUQ2RDAwOTM4NUNFIC8qIGFwcGVuZF9ub2RlX2NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYXBwZW5kX25vZGVfY29tbWFuZC5o
OyBwYXRoID0gZWRpdGluZy9hcHBlbmRfbm9kZV9jb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTE3Nyw2ICsxMTg0LDcg
QEAKIAkJNjVEQzE2QzIwODMxREQ2RjAwMjI3NDRFIC8qIGNvbXBvc2l0ZV9lZGl0X2NvbW1hbmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gY29tcG9zaXRlX2VkaXRfY29tbWFuZC5jcHA7IHBhdGggPSBlZGl0aW5nL2NvbXBvc2l0ZV9l
ZGl0X2NvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJNjVEQzE2QzMwODMxREQ2RjAwMjI3NDRFIC8qIGNvbXBvc2l0ZV9l
ZGl0X2NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gY29tcG9zaXRlX2VkaXRfY29tbWFuZC5oOyBwYXRoID0gZWRpdGluZy9jb21wb3Np
dGVfZWRpdF9jb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyogS1dRRXhjZXB0
aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEtXUUV4Y2VwdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyog
UGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNkZFRUQ2MDg5ODU4MjMwMEM0NEMzRiAv
KiBXZWJDb3JlU2NyaXB0RGVidWdnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlU2NyaXB0RGVidWdnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTdFNkZFRUQ3MDg5
ODU4MjMwMEM0NEMzRiAvKiBXZWJDb3JlU2NyaXB0RGVidWdnZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVTY3JpcHRE
ZWJ1Z2dlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CiAJCTg0MDYzMzA3MDczMUE3NzIwMERCMUZEMSAvKiBsaWJ4c2x0LmR5bGliICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVk
Lm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJ4c2x0LmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGli
eHNsdC5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTIzMzcsMTIgKzIz
NDUsMTYgQEAKIAkJNjVCRjAyMTgwOTc0ODA2MzAwQzQzMTk2IC8qIHBhZ2UgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTY1QkYwMjI5MDk3NDgxNjMwMEM0
MzE5NiAvKiBGcmFtZS5jcHAgKi8sCiAJCQkJNjVCRjAyMkEwOTc0ODE2MzAwQzQzMTk2IC8qIEZy
YW1lLmggKi8sCisJCQkJNjVCRjAyMjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLywK
IAkJCQk2NUJGMDIyQjA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWVQcml2YXRlLmggKi8sCi0JCQkJ
NjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCisJCQkJNjVBMjE0
ODMwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZU5vZGUuaCAqLywKKwkJCQk2NUEyMTQ4MjA5
N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlTm9kZS5jcHAgKi8sCiAJCQkJNjVDQkZFRjgwOTc0
RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovLAorCQkJCTY1Q0JGRUY3MDk3NEY2MDcwMDFE
QUMyNSAvKiBGcmFtZVZpZXcuY3BwICovLAogCQkJCTFBM0Q4NTU2MDk3NjQ3QjQwMDJDODVEMSAv
KiBPYmplY3RDb250ZW50cy5oICovLAorCQkJCTY1QTIxNDY3MDk3QTMyOTEwMEI5MDUwQSAvKiBQ
YWdlLmggKi8sCisJCQkJNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovLAog
CQkJKTsKIAkJCXBhdGggPSBwYWdlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQy
ODksNiArNDMwMSw4IEBACiAJCQkJQThGRUZCMEEwOTc5RjQ3MjAwNTgzOUZEIC8qIFJlbmRlckZv
cmVpZ25PYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RkVGQjMyMDk3OUY0RjYwMDU4MzlG
RCAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RkIyRTg0MDk3OUZENEYwMEJBNzAzRCAvKiBTaGFyZWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTY1
QTIxNDY4MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk2NUEy
MTQ4NTA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNGQjJGNDIwOTdBMjRCNTAwQkE3MDNEIC8qIFNlZ21lbnRlZFN0cmluZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNGQjJGNzcwOTdBMkUxQTAwQkE3MDNEIC8qIEFyZW5hLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzFBMzdBRDA5N0M3MTVGMDAxOUYzRDggLyogRE9NLmggaW4gSGVhZGVycyAq
LywKQEAgLTUzOTUsNiArNTQwOSw3IEBACiAJCQkJQkNGQjJGNDEwOTdBMjRCNTAwQkE3MDNEIC8q
IFNlZ21lbnRlZFN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEZFRkIwQjA5NzlGNDcy
MDA1ODM5RkQgLyogUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OEZFRkIzMTA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnRJbXBsLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTY1QTIxNDg0MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRy
ZWVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRkIyRjc2MDk3QTJFMUEwMEJBNzAzRCAv
KiBBcmVuYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzFBMzdBRTA5N0M3MTVGMDAxOUYzRDgg
LyogRE9NLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxQTM3QjEwOTdDNzE1RjAwMTlGM0Q4IC8q
IERPTUNTUy5tbSBpbiBTb3VyY2VzICovLApAQCAtNTQ0Miw2ICs1NDU3LDcgQEAKIAkJCQlCQ0VB
NDg4QjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0VBNDg4RDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGV4dEZyYWdtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRUE0ODhGMDk3RDkzMDIwMDk0QzlFNCAvKiB0YWJsZV9sYXlvdXQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjVGRUE4NjkwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM3QTM2QTcwOTdFMkUzMjAwRTRFRTJGIC8qIFVzZXJB
Z2VudFN0eWxlU2hlZXRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0OTQ4MDk3RjBGNzcw
MDk0QzlFNCAvKiBCcm93c2VyRXh0ZW5zaW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQUI2
N0QxQTgwOTdGM0FFMzAwRjkzOTJFIC8qIFJlbmRlclRleHRGaWVsZC5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEy
Mjk1KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI0IEBACisyMDA2
LTAxLTIyICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICAtIFNldCB1cCBQYWdl
IGNsYXNzIGFuZCBpbnZlcnQgRnJhbWUgLyBXZWJDb3JlRnJhbWVCcmlkZ2Ugb3duZXJzaGlwCisg
ICAgICAgIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3
NworCisgICAgICAgICogYnJpZGdlL21hYy9NYWNGcmFtZS5oOgorICAgICAgICAqIGJyaWRnZS9t
YWMvTWFjRnJhbWUubW06CisgICAgICAgIChNYWNGcmFtZTo6TWFjRnJhbWUpOiBJbml0aWFsaXpl
IF9icmlkZ2UKKyAgICAgICAgKE1hY0ZyYW1lOjp+TWFjRnJhbWUpOiBDbGVhciB0aGUgYnJpZGdl
J3MgZnJhbWUgcG9pbnRlciBhbmQgcmVsZWFzZSBpdC4KKyAgICAgICAgKEZyYW1lOjpmcmFtZURl
dGFjaGVkKTogUmV2ZXJzZSBvcmRlciBvZiByZW1vdmluZyBmcm9tIG9sZC1zdHlsZSBmcmFtZXMK
KyAgICAgICAgYXJyYXkgYW5kIGNhbGxpbmcgZnJhbWVEZXRhY2hlZC4KKyAgICAgICAgKE1hY0Zy
YW1lOjpjcmVhdGVQYXJ0KTogRG9uJ3QgcmVmIHRoZSBwYXJ0IHdoZW4gY3JlYXRpbmcgaXQsIHNp
bmNlIHRoZSBjaGlsZAorICAgICAgICBicmlkZ2UgaXMgbm8gbG9uZ2VyIGdvaW5nIHRvIG93biBh
IHJlZi4KKyAgICAgICAgKE1hY0ZyYW1lOjpzZXRCcmlkZ2UpOiBLV1FSZXRhaW4gLyBLV1FSZWxl
YXNlIHNpbmNlIHdlIGtub3cgb3duIHRoZSBicmlkZ2UuCisgICAgICAgIChNYWNGcmFtZTo6ZGV0
YWNoRnJvbVZpZXcpOiBOZXcgbWV0aG9kOyBjbGVhciBvdXQgdGhlIHZpZXcuCisgICAgICAgICog
YnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaDoKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dl
YkNvcmVGcmFtZUJyaWRnZS5tbToKKyAgICAgICAgKEJyaWRnZSk6IEhlbHBlciBtZXRob2QgdG8g
Z2V0IGEgV2ViQ29yZUZyYW1lQnJpZGdlIGZyb20gYSBGcmFtZS4KKyAgICAgICAgKC1bV2ViQ29y
ZUZyYW1lQnJpZGdlIGZpcnN0Q2hpbGRdKTogQ2FsbCB0aHJvdWdoIEZyYW1lLgorICAgICAgICAo
LVtXZWJDb3JlRnJhbWVCcmlkZ2UgbGFzdENoaWxkXSk6IGRpdHRvCisgICAgICAgICgtW1dlYkNv
cmVGcmFtZUJyaWRnZSBjaGlsZENvdW50XSk6IGRpdHRvCisgICAgICAgICgtW1dlYkNvcmVGcmFt
ZUJyaWRnZSBwcmV2aW91c1NpYmxpbmddKTogZGl0dG8KKyAgICAgICAgKC1bV2ViQ29yZUZyYW1l
QnJpZGdlIG5leHRTaWJsaW5nXSk6IGRpdHRvCisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRn
ZSBpc0Rlc2NlbmRhbnRPZkZyYW1lOl0pOiBObyBuZWVkIHRvIGNhc3QgcGFyZW50CisgICAgICAg
IHBvaW50ZXIuCisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRnZSBhcHBlbmRDaGlsZDpdKTog
Q2FsbCB0aHJvdWdoIEZyYW1lLgorICAgICAgICAoLVtXZWJDb3JlRnJhbWVCcmlkZ2UgX2NsZWFy
UmVuZGVyUGFydF0pOiBOZXcgaGVscGVyIG1ldGhvZCB0byBmcmVlCisgICAgICAgIHRoZSByZW5k
ZXJQYXJ0IHdoZW4gcmVtb3ZpbmcgYSBjaGlsZC4KKyAgICAgICAgKC1bV2ViQ29yZUZyYW1lQnJp
ZGdlIHJlbW92ZUNoaWxkOl0pOiBDbGVhciBjaGlsZCdzIHJlbmRlciBwYXJ0CisgICAgICAgIGFu
ZCBjYWxsIHRocm91Z2ggdG8gRnJhbWUuCisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRnZSBk
ZWFsbG9jXSk6IFJlbW92ZSB1bm5lZWRlZCBtX2ZyYW1lLXJlbGF0ZWQgY29kZS4KKyAgICAgICAg
KC1bV2ViQ29yZUZyYW1lQnJpZGdlIGZpbmFsaXplXSk6IGRpdHRvCisgICAgICAgICgtW1dlYkNv
cmVGcmFtZUJyaWRnZSBjbGVhckZyYW1lXSk6IE5ldyBoZWxwZXIgbWV0aG9kLCBuZWVkZWQgbm93
IHRoYXQKKyAgICAgICAgYnJpZGdlIGNhbiBvdXRsaXZlIGZyYW1lLgorICAgICAgICAoLVtXZWJD
b3JlRnJhbWVCcmlkZ2UgaGFuZGxlRmFsbGJhY2tDb250ZW50XSk6IE1ha2Ugc2FmZSBhZ2FpbnN0
IGEgbnVsbAorICAgICAgICBmcmFtZS4KKyAgICAgICAgKC1bV2ViQ29yZUZyYW1lQnJpZGdlIHJl
bW92ZUZyb21GcmFtZV0pOiBkaXR0bworICAgICAgICAqIGJyaWRnZS9tYWMvV2ViQ29yZVBhZ2VC
cmlkZ2UuaDoKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVQYWdlQnJpZGdlLm1tOgorICAg
ICAgICAoLVtXZWJDb3JlUGFnZUJyaWRnZSBpbml0V2l0aE1haW5GcmFtZTpdKTogQ3JlYXRlIGEg
UGFnZSBpbnN0YW5jZS4KKyAgICAgICAgKC1bV2ViQ29yZVBhZ2VCcmlkZ2UgZGVhbGxvY10pOiBE
ZWxldGUgdGhlIFBhZ2UuCisgICAgICAgICgtW1dlYkNvcmVQYWdlQnJpZGdlIG1haW5GcmFtZV0p
OiBHZXQgdGhlIG1haW4gZnJhbWUgZnJvbSB0aGUgUGFnZS4KKyAgICAgICAgKiBraHRtbC9lY21h
L2tqc19iaW5kaW5nLmNwcDoKKyAgICAgICAgKEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXI6Omdsb2Jh
bEV4ZWMpOiBPdmVycmlkZTsga2VlcCBmcmFtZSBhbGl2ZSwgdGhlbgorICAgICAgICBjYWxsIHN1
cGVyY2xhc3MuCisgICAgICAgICoga2h0bWwvZWNtYS9ranNfYmluZGluZy5oOgorICAgICAgICAq
IGtodG1sL2VjbWEva2pzX3Byb3h5LmNwcDoKKyAgICAgICAgKEtKU1Byb3h5SW1wbDo6Y2xlYXIp
OiBEb24ndCBwYXNzIGV4ZWMgdG8gd2luZG93LgorICAgICAgICAoS0pTUHJveHlJbXBsOjppbnRl
cnByZXRlcik6IERvbid0IGRvIGtlZXBBbGl2ZS4KKyAgICAgICAgKiBraHRtbC9lY21hL2tqc193
aW5kb3cuY3BwOgorICAgICAgICAoS0pTOjpXaW5kb3c6OmlzU2FmZVNjcmlwdCk6IElmIHRoZSBh
Y3RpdmUgcGFydCdzIGRvY3VtZW50IGlzIGdvbmUsIHVzZSB0aGUgZnJhbWUncworICAgICAgICBV
UkwgZm9yIHNlY3VyaXR5IGNoZWNrIHB1cnBvc2VzLgorICAgICAgICAoS0pTOjpXaW5kb3c6OmNs
ZWFyKTogRG9uJ3QgdGFrZSBhbiBFeGVjU3RhdGUgcGFyYW1ldGVyIGFueSBtb3JlIC0gaXQKKyAg
ICAgICAgd2Fzbid0IHVzZWQuCisgICAgICAgICoga2h0bWwvZWNtYS9ranNfd2luZG93Lmg6Cisg
ICAgICAgICoga2h0bWwveG1sL0RvY3VtZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudEltcGw6OmltcGxpY2l0T3Blbik6IElmIHdlJ3ZlIGdvdCBhIHRva2VuaXplciwgZGVs
ZXRlCisgICAgICAgIGl0IGJlZm9yZSBjbG9zaW5nIC0geW91IGRvbid0IGV2ZXIgd2FudCB0byBm
aXJlIGFuIG9ubG9hZCBoYW5kbGVyIGJlY2F1c2Ugb2YKKyAgICAgICAgYW4gb3Blbi4KKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKEZyYW1lOjppbml0KTogUGFzcyBgdGhpcycg
dG8gRnJhbWVQcml2YXRlIGNvbnN0cnVjdG9yLgorICAgICAgICAoRnJhbWVDb3VudGVyOjp+RnJh
bWVDb3VudGVyKTogQWRkZWQgZGVidWcgY291bnRpbmcgb2YgbGVmdG92ZXIKKyAgICAgICAgRnJh
bWUgb2JqZWN0cyBvbiBleGl0LgorICAgICAgICAoRnJhbWU6OkZyYW1lKTogTW92ZWQgb3V0LW9m
LWxpbmUuIEluY3JlbWVudCBkZWJ1ZyBjb3VudGVyLgorICAgICAgICAoRnJhbWU6On5GcmFtZSk6
IEFzc2VydCB0aGF0IHRoZXJlIGlzIG5vIGxpZmUgc3VwcG9ydCBnb2luZywgZWl0aGVyIGF0IHRo
ZQorICAgICAgICBzdGFydCBvciBlbmQgb2YgdGhpcyBtZXRob2QuIERlY3JlbWVudCBmcmFtZSBj
b3VudGVyLgorICAgICAgICAoRnJhbWU6OnN0b3BMb2FkaW5nKTogdHdlYWtlZCBmb3IgdGhlIGZh
Y3QgdGhhdCBDaGlsZEZyYW1lOjptX2ZyYW1lIGlzIG5vdworICAgICAgICBhIFJlZlB0ci4KKyAg
ICAgICAgKEZyYW1lOjpjbGVhcik6IGRpdHRvCisgICAgICAgIChGcmFtZTo6c3RvcCk6IGRpdHRv
CisgICAgICAgIChGcmFtZTo6c3RvcEFuaW1hdGlvbnMpOiBkaXR0bworICAgICAgICAoRnJhbWU6
OmNoZWNrRW1pdExvYWRFdmVudCk6IGRpdHRvCisgICAgICAgIChGcmFtZTo6cHJvY2Vzc09iamVj
dFJlcXVlc3QpOiBkaXR0bworICAgICAgICAoRnJhbWU6OmNoaWxkRnJhbWUpOiBkaXR0bworICAg
ICAgICAoRnJhbWU6OmZpbmRGcmFtZSk6IGRpdHRvCisgICAgICAgIChGcmFtZTo6c2V0Wm9vbUZh
Y3Rvcik6IGRpdHRvCisgICAgICAgIChGcmFtZTo6ZnJhbWVzKTogZGl0dG8KKyAgICAgICAgKEZy
YW1lOjpjb25uZWN0Q2hpbGQpOiBkaXR0bworICAgICAgICAoRnJhbWU6OmRpc2Nvbm5lY3RDaGls
ZCk6IGRpdHRvCisgICAgICAgIChGcmFtZTo6ZW5kQWxsTGlmZVN1cHBvcnQpOiBNZXRob2QgdGhh
dCwgaW4gZGVidWcgbW9kZSwgd2lsbCBjbGVhcgorICAgICAgICBhbGwgbGlmZSBzdXBwb3IgdGlt
ZXJzIHNvIHRoZSBGcmFtZSBleGl0IGNvdW50ZXIgd29ya3MuCisgICAgICAgIChGcmFtZTo6a2Vl
cEFsaXZlKTogSW4gZGVidWcgbW9kZSwgYWRkIHByb3BlciBzdXBwb3J0IGZvcgorICAgICAgICBl
bmRBbGxMaWZlU3VwcG9ydAorICAgICAgICAoRnJhbWU6OnNsb3RFbmRMaWZlU3VwcG9ydCk6IGRp
dHRvCisgICAgICAgIChGcmFtZTo6c2V0UG9saWN5QmFzZVVSTCk6IFVwZGF0ZSBmb3IgdGhlIGZh
Y3QgdGhhdCBDaGlsZEZyYW1lOjptX2ZyYW1lIGlzIG5vdworICAgICAgICBhIFJlZlB0ci4KKyAg
ICAgICAgKEZyYW1lOjp0cmVlTm9kZSk6IE5ldyBoZWxwZXIgbWV0aG9kLCBnZXQgdGhlIEZyYW1l
VHJlZU5vZGUgY2xhc3MgdGhhdCBpbXBsZW1lbnRzCisgICAgICAgIGZyYW1lIHRyZWUgdHJhdmVy
c2FsLgorICAgICAgICAoRnJhbWU6Om5leHRTaWJsaW5nKTogU2ltcGxlIHdyYXBwZXIgdGhhdCBj
YWxscyB0aHJvdWdoIHRvIHRyZWVOb2RlKCkuCisgICAgICAgIChGcmFtZTo6cHJldmlvdXNTaWJs
aW5nKTogZGl0dG8KKyAgICAgICAgKEZyYW1lOjpmaXJzdENoaWxkKTogZGl0dG8KKyAgICAgICAg
KEZyYW1lOjpsYXN0Q2hpbGQpOiBkaXR0bworICAgICAgICAoRnJhbWU6OmNoaWxkQ291bnQpOiBk
aXR0bworICAgICAgICAoRnJhbWU6OmFwcGVuZENoaWxkKTogZGl0dG8KKyAgICAgICAgKEZyYW1l
OjpyZW1vdmVDaGlsZCk6IGRpdHRvCisgICAgICAgIChGcmFtZTo6ZGV0YWNoRnJvbVZpZXcpOiBu
by1vcCwganVzdCBhIHZpcnR1YWwgYmFzZSBmb3IgdGhlIE1BY0ZyYW1lIG1ldGhvZC4KKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9GcmFtZVByaXZhdGUuaDoKKyAgICAg
ICAgKEZyYW1lUHJpdmF0ZTo6RnJhbWVQcml2YXRlKTogQWRkIEZyYW1lVHJlZU5vZGUgbWVtYmVy
LgorICAgICAgICAqIHBhZ2UvRnJhbWVUcmVlTm9kZS5jcHA6IEFkZGVkLgorICAgICAgICAoRnJh
bWVUcmVlTm9kZTo6fkZyYW1lVHJlZU5vZGUpOiBkZXRhY2ggYWxsIGNoaWxkcmVuIGZyb20gdGhl
aXIgdmlldworICAgICAgICAoRnJhbWVUcmVlTm9kZTo6YXBwZW5kQ2hpbGQpOiBpbXBsZW1lbnRl
ZAorICAgICAgICAoRnJhbWVUcmVlTm9kZTo6cmVtb3ZlQ2hpbGQpOiBpbXBsZW1lbnRlZCAtIG1h
a2Ugc3VyZSB0byBkZXRhY2ggY2hpbGQKKyAgICAgICAgZnJvbSBpdHMgdmlldy4KKyAgICAgICAg
KiBwYWdlL0ZyYW1lVHJlZU5vZGUuaDogQWRkZWQuCisgICAgICAgIChGcmFtZVRyZWVOb2RlOjpG
cmFtZVRyZWVOb2RlKTogTmV3OyBpbml0aWFsaXplIGZpZWxkcyB0aHQgbmVlZCBpdC4KKyAgICAg
ICAgKEZyYW1lVHJlZU5vZGU6Om5leHRTaWJsaW5nKTogVHJpdmlhbCBpbmxpbmUuCisgICAgICAg
IChGcmFtZVRyZWVOb2RlOjpwcmV2aW91c1NpYmxpbmcpOiBkaXR0bworICAgICAgICAoRnJhbWVU
cmVlTm9kZTo6Zmlyc3RDaGlsZCk6IGRpdHRvCisgICAgICAgIChGcmFtZVRyZWVOb2RlOjpsYXN0
Q2hpbGQpOiBkaXR0bworICAgICAgICAoRnJhbWVUcmVlTm9kZTo6Y2hpbGRDb3VudCk6IGRpdHRv
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChQYWdlOjpQYWdlKTog
SW5pdGlhbGl6ZSBtYWluRnJhbWUgYW5kIGJ1bXAgcGFnZUNvdW50IGFwcHJvcHJpYXRlbHkuCisg
ICAgICAgIChQYWdlOjp+UGFnZSk6IERldGFjaCBtYWluIGZyYW1lIGZyb20gdmlldywgaGFuZGxl
IGVuZGluZyBsaWZlIHN1cHBvcnQKKyAgICAgICAgd2hlbiBsYXN0IGZyYW1lIGlzIGRlc3Ryb3ll
ZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDogQWRkZWQuCisgICAgICAgIChQYWdlOjptYWluRnJh
bWUpOiBUcml2aWFsIGlubGluZS4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZCBuZXcgZmlsZXMuCisKIDIwMDYtMDEtMjIgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGtpbHplci5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqLgpJbmRleDog
YnJpZGdlL21hYy9NYWNGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJyaWRnZS9tYWMvTWFjRnJhbWUu
aAkocmV2aXNpb24gMTIyODkpCisrKyBicmlkZ2UvbWFjL01hY0ZyYW1lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzMSw2ICszMzEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZWdpc3RlckNvbW1h
bmRGb3JVbmRvT3JSZWRvKGNvbnN0IGtodG1sOjpFZGl0Q29tbWFuZFB0ciAmY21kLCBib29sIGlz
UmVkbyk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVZpZXcoKTsKKwogICAgIFdlYkNv
cmVGcmFtZUJyaWRnZSAqX2JyaWRnZTsKICAgICAKICAgICBLV1FTaWduYWwgX3N0YXJ0ZWQ7Cklu
ZGV4OiBicmlkZ2UvbWFjL01hY0ZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJyaWRnZS9tYWMvTWFj
RnJhbWUubW0JKHJldmlzaW9uIDEyMjg5KQorKysgYnJpZGdlL21hYy9NYWNGcmFtZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTM3LDcgKzEzNyw4IEBAIHN0YXRpYyB2b2lkIHJlZGlyZWN0aW9uVGlt
ZXJNb25pdG9yKHZvaWQKIH0KIAogTWFjRnJhbWU6Ok1hY0ZyYW1lKCkKLSAgICA6IF9zdGFydGVk
KHRoaXMsIFNJR05BTChzdGFydGVkKEtJTzo6Sm9iICopKSkKKyAgICA6IF9icmlkZ2UobmlsKQor
ICAgICwgX3N0YXJ0ZWQodGhpcywgU0lHTkFMKHN0YXJ0ZWQoS0lPOjpKb2IgKikpKQogICAgICwg
X2NvbXBsZXRlZCh0aGlzLCBTSUdOQUwoY29tcGxldGVkKCkpKQogICAgICwgX2NvbXBsZXRlZFdp
dGhCb29sKHRoaXMsIFNJR05BTChjb21wbGV0ZWQoYm9vbCkpKQogICAgICwgX21vdXNlRG93blZp
ZXcobmlsKQpAQCAtMTcwLDcgKzE3MSw5IEBAIE1hY0ZyYW1lOjp+TWFjRnJhbWUoKQogICAgIGZy
ZWVDbGlwYm9hcmQoKTsKICAgICBjbGVhclJlY29yZGVkRm9ybVZhbHVlcygpOyAgICAKICAgICAK
LSAgICBkZWxldGUgX3dpbmRvd1dpZGdldDsKKyAgICBbX2JyaWRnZSBjbGVhckZyYW1lXTsKKyAg
ICBLV1FSZWxlYXNlKF9icmlkZ2UpOworICAgIF9icmlkZ2UgPSBuaWw7CiB9CiAKIHZvaWQgTWFj
RnJhbWU6OmZyZWVDbGlwYm9hcmQoKQpAQCAtNTY3LDEzICs1NzAsOSBAQCB2b2lkIE1hY0ZyYW1l
OjpzdWJtaXRGb3JtKGNvbnN0IEtVUkwgJnVyCiAKIHZvaWQgRnJhbWU6OmZyYW1lRGV0YWNoZWQo
KQogewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIHZpcnR1YWwgZnVuY3Rpb24sIHdp
dGggdGhlIGZpcnN0IHBhcnQgaW4gTWFjRnJhbWUsIGFuZCB0aGUgc2Vjb25kCisgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGJlIGEgdmlydHVhbCBmdW5jdGlvbiwgd2l0aCB0aGUgc2Vjb25kIHBh
cnQgaW4gTWFjRnJhbWUsIGFuZCB0aGUgZmlyc3QKICAgICAvLyBwYXJ0IGluIEZyYW1lLCBzbyBp
dCB3b3JrcyBmb3IgS0hUTUwgdG9vLgogCi0gICAgS1dRX0JMT0NLX0VYQ0VQVElPTlM7Ci0gICAg
W01hYyh0aGlzKS0+YnJpZGdlKCkgZnJhbWVEZXRhY2hlZF07Ci0gICAgS1dRX1VOQkxPQ0tfRVhD
RVBUSU9OUzsKLQogICAgIEZyYW1lICpwYXJlbnQgPSBwYXJlbnRGcmFtZSgpOwogICAgIGlmIChw
YXJlbnQpIHsKICAgICAgICAgRnJhbWVMaXN0JiBwYXJlbnRGcmFtZXMgPSBwYXJlbnQtPmQtPm1f
ZnJhbWVzOwpAQCAtNTgzLDExICs1ODIsMTQgQEAgdm9pZCBGcmFtZTo6ZnJhbWVEZXRhY2hlZCgp
CiAgICAgICAgICAgICBpZiAoY2hpbGQubV9mcmFtZSA9PSB0aGlzKSB7CiAgICAgICAgICAgICAg
ICAgcGFyZW50LT5kaXNjb25uZWN0Q2hpbGQoJmNoaWxkKTsKICAgICAgICAgICAgICAgICBwYXJl
bnRGcmFtZXMucmVtb3ZlKGl0KTsKLSAgICAgICAgICAgICAgICBkZXJlZigpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorCisgICAgS1dR
X0JMT0NLX0VYQ0VQVElPTlM7CisgICAgW01hYyh0aGlzKS0+YnJpZGdlKCkgZnJhbWVEZXRhY2hl
ZF07CisgICAgS1dRX1VOQkxPQ0tfRVhDRVBUSU9OUzsKIH0KIAogdm9pZCBNYWNGcmFtZTo6dXJs
U2VsZWN0ZWQoY29uc3QgS1VSTCAmdXJsLCBpbnQgYnV0dG9uLCBpbnQgc3RhdGUsIGNvbnN0IFVS
TEFyZ3MgJmFyZ3MpCkBAIC02NTksMTEgKzY2MSw3IEBAIE9iamVjdENvbnRlbnRzICpNYWNGcmFt
ZTo6Y3JlYXRlUGFydChjb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbGxvd3NTY3JvbGxpbmc6YWxsb3dzU2Nyb2xsaW5nCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbldpZHRo
Om1hcmdpbldpZHRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWFyZ2luSGVpZ2h0Om1hcmdpbkhlaWdodF07Ci0gICAgICAgIC8vIFRoaXMg
Y2FsbCBuZWVkcyB0byByZXR1cm4gYW4gb2JqZWN0IHdpdGggYSByZWYsIHNpbmNlIHRoZSBjYWxs
ZXIgd2lsbCBleHBlY3QgdG8gb3duIGl0LgotICAgICAgICAvLyBjaGlsZEJyaWRnZSBvd25zIHRo
ZSBvbmx5IHJlZiBzbyBmYXIuCiAgICAgICAgIHBhcnQgPSBbY2hpbGRCcmlkZ2UgcGFydF07Ci0g
ICAgICAgIGlmIChwYXJ0KQotICAgICAgICAgICAgcGFydC0+cmVmKCk7CiAgICAgfQogCiAgICAg
cmV0dXJuIHBhcnQ7CkBAIC0zMDA5LDExICszMDA3LDE1IEBAIHZvaWQgTWFjRnJhbWU6OnRva2Vu
aXplclByb2Nlc3NlZERhdGEoKQogICAgIFtfYnJpZGdlIHRva2VuaXplclByb2Nlc3NlZERhdGFd
OwogfQogCi12b2lkIE1hY0ZyYW1lOjpzZXRCcmlkZ2UoV2ViQ29yZUZyYW1lQnJpZGdlICpwKQor
dm9pZCBNYWNGcmFtZTo6c2V0QnJpZGdlKFdlYkNvcmVGcmFtZUJyaWRnZSAqYnJpZGdlKQogeyAK
LSAgICBpZiAoX2JyaWRnZSAhPSBwKQotICAgICAgICBkZWxldGUgX3dpbmRvd1dpZGdldDsKLSAg
ICBfYnJpZGdlID0gcDsKKyAgICBpZiAoX2JyaWRnZSA9PSBicmlkZ2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIGRlbGV0ZSBfd2luZG93V2lkZ2V0OworICAgIEtXUVJldGFpbihicmlkZ2UpOwor
ICAgIEtXUVJlbGVhc2UoX2JyaWRnZSk7CisgICAgX2JyaWRnZSA9IGJyaWRnZTsKICAgICBfd2lu
ZG93V2lkZ2V0ID0gbmV3IEtXUVdpbmRvd1dpZGdldChfYnJpZGdlKTsKIH0KIApAQCAtMzU5Niwz
ICszNTk4LDggQEAgYm9vbCBNYWNGcmFtZTo6ZGlzcGF0Y2hEcmFnU3JjRXZlbnQoY29ucwogICAg
IGJvb2wgbm9EZWZhdWx0UHJvYyA9IGQtPm1fdmlldy0+ZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRU
eXBlLCBfZHJhZ1NyYy5nZXQoKSwgbG9jLCBfZHJhZ0NsaXBib2FyZCk7CiAgICAgcmV0dXJuICFu
b0RlZmF1bHRQcm9jOwogfQorCit2b2lkIE1hY0ZyYW1lOjpkZXRhY2hGcm9tVmlldygpCit7Cisg
ICAgc2V0VmlldygwKTsKK30KSW5kZXg6IGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAkocmV2aXNpb24g
MTIyODkpCisrKyBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTAsMTIgKzE5MCw2IEBAIHR5cGVkZWYgZW51bQogICAgIFJlbmRlckFyZW5hICpfcmVu
ZGVyUGFydEFyZW5hOwogICAgIEJPT0wgX3Nob3VsZENyZWF0ZVJlbmRlcmVyczsKIAotICAgIFdl
YkNvcmVGcmFtZUJyaWRnZSAqX25leHRTaWJsaW5nOwotICAgIFdlYkNvcmVGcmFtZUJyaWRnZSAq
X3ByZXZpb3VzU2libGluZzsKLSAgICBXZWJDb3JlRnJhbWVCcmlkZ2UgKl9maXJzdENoaWxkOwot
ICAgIFdlYkNvcmVGcmFtZUJyaWRnZSAqX2xhc3RDaGlsZDsKLSAgICBpbnQgX2NoaWxkQ291bnQ7
Ci0KICAgICBOU1N0cmluZyAqX2ZyYW1lTmFtZXNwYWNlOwogfQogCkBAIC0yNjEsNiArMjU1LDcg
QEAgdHlwZWRlZiBlbnVtCiAtICh2b2lkKWVuZDsKIC0gKHZvaWQpc3RvcDsKIAorLSAodm9pZClj
bGVhckZyYW1lOwogLSAodm9pZCloYW5kbGVGYWxsYmFja0NvbnRlbnQ7CiAKIC0gKE5TVVJMICop
VVJMOwpJbmRleDogYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHJldmlzaW9uIDEyMjg5KQorKysg
YnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5MCwz
NCArMTkwLDQxIEBAIHN0YXRpYyBCT09MIGlzQ2FzZVNlbnNpdGl2ZUVxdWFsKE5TU3RyaW4KIHN0
YXRpYyBib29sIGluaXRpYWxpemVkT2JqZWN0Q2FjaGVTaXplID0gRkFMU0U7CiBzdGF0aWMgYm9v
bCBpbml0aWFsaXplZEtKUyA9IEZBTFNFOwogCitzdGF0aWMgaW5saW5lIFdlYkNvcmVGcmFtZUJy
aWRnZSAqQnJpZGdlKEZyYW1lICpmcmFtZSkKK3sKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIHJldHVybiBNYWMoZnJhbWUpLT5icmlkZ2UoKTsKK30KKwogLSAoV2Vi
Q29yZUZyYW1lQnJpZGdlICopZmlyc3RDaGlsZAogewotICAgIHJldHVybiBfZmlyc3RDaGlsZDsK
KyAgICByZXR1cm4gQnJpZGdlKG1fZnJhbWUtPmZpcnN0Q2hpbGQoKSk7CiB9CiAKIC0gKFdlYkNv
cmVGcmFtZUJyaWRnZSAqKWxhc3RDaGlsZAogewotICAgIHJldHVybiBfbGFzdENoaWxkOworICAg
IHJldHVybiBCcmlkZ2UobV9mcmFtZS0+bGFzdENoaWxkKCkpOwogfQogCiAtICh1bnNpZ25lZClj
aGlsZENvdW50CiB7Ci0gICAgcmV0dXJuIF9jaGlsZENvdW50OworICAgIHJldHVybiBtX2ZyYW1l
LT5jaGlsZENvdW50KCk7CiB9CiAKIC0gKFdlYkNvcmVGcmFtZUJyaWRnZSAqKXByZXZpb3VzU2li
bGluZzsKIHsKLSAgICByZXR1cm4gX3ByZXZpb3VzU2libGluZzsKKyAgICByZXR1cm4gQnJpZGdl
KG1fZnJhbWUtPnByZXZpb3VzU2libGluZygpKTsKIH0KIAogLSAoV2ViQ29yZUZyYW1lQnJpZGdl
ICopbmV4dFNpYmxpbmc7CiB7Ci0gICAgcmV0dXJuIF9uZXh0U2libGluZzsKKyAgICByZXR1cm4g
QnJpZGdlKG1fZnJhbWUtPm5leHRTaWJsaW5nKCkpOwogfQogCiAtIChCT09MKWlzRGVzY2VuZGFu
dE9mRnJhbWU6KFdlYkNvcmVGcmFtZUJyaWRnZSAqKWFuY2VzdG9yCiB7Ci0gICAgZm9yIChXZWJD
b3JlRnJhbWVCcmlkZ2UgKmZyYW1lID0gc2VsZjsgZnJhbWU7IGZyYW1lID0gKFdlYkNvcmVGcmFt
ZUJyaWRnZSAqKVtmcmFtZSBwYXJlbnRdKQorICAgIGZvciAoV2ViQ29yZUZyYW1lQnJpZGdlICpm
cmFtZSA9IHNlbGY7IGZyYW1lOyBmcmFtZSA9IFtmcmFtZSBwYXJlbnRdKQogICAgICAgICBpZiAo
ZnJhbWUgPT0gYW5jZXN0b3IpCiAgICAgICAgICAgICByZXR1cm4gWUVTOwogCkBAIC0yNTcsNDMg
KzI2NCwyMCBAQCBzdGF0aWMgYm9vbCBpbml0aWFsaXplZEtKUyA9IEZBTFNFOwogCiAtICh2b2lk
KWFwcGVuZENoaWxkOihXZWJDb3JlRnJhbWVCcmlkZ2UgKiljaGlsZAogewotICAgIFtjaGlsZCBy
ZXRhaW5dOwotCi0gICAgW2NoaWxkIHNldFBhcmVudDpzZWxmXTsKLQotICAgIFdlYkNvcmVGcmFt
ZUJyaWRnZSAqbGFzdCA9IF9sYXN0Q2hpbGQ7Ci0KLSAgICBpZiAobGFzdCkgewotICAgICAgICBs
YXN0LT5fbmV4dFNpYmxpbmcgPSBjaGlsZDsKLSAgICAgICAgY2hpbGQtPl9wcmV2aW91c1NpYmxp
bmcgPSBsYXN0OwotICAgIH0gZWxzZQotICAgICAgICBfZmlyc3RDaGlsZCA9IGNoaWxkOwotCi0g
ICAgX2xhc3RDaGlsZCA9IGNoaWxkOwotCi0gICAgX2NoaWxkQ291bnQrKzsKKyAgICBtX2ZyYW1l
LT5hcHBlbmRDaGlsZChbY2hpbGQgcGFydF0pOworfQogCi0gICAgQVNTRVJUKGNoaWxkLT5fbmV4
dFNpYmxpbmcgPT0gbmlsKTsKKy0gKHZvaWQpX2NsZWFyUmVuZGVyUGFydAoreworICAgIGlmIChf
cmVuZGVyUGFydCkKKyAgICAgICAgX3JlbmRlclBhcnQtPmRlcmVmKF9yZW5kZXJQYXJ0QXJlbmEp
OworICAgIF9yZW5kZXJQYXJ0ID0gMDsKIH0KIAogLSAodm9pZClyZW1vdmVDaGlsZDooV2ViQ29y
ZUZyYW1lQnJpZGdlICopY2hpbGQKIHsKLSAgICBpZiAoY2hpbGQtPl9wcmV2aW91c1NpYmxpbmcp
Ci0gICAgICAgIGNoaWxkLT5fcHJldmlvdXNTaWJsaW5nLT5fbmV4dFNpYmxpbmcgPSBjaGlsZC0+
X25leHRTaWJsaW5nOwotICAgIGVsc2UKLSAgICAgICAgX2ZpcnN0Q2hpbGQgPSBjaGlsZC0+X25l
eHRTaWJsaW5nOwotICAgIAotICAgIGlmIChjaGlsZC0+X25leHRTaWJsaW5nKQotICAgICAgICBj
aGlsZC0+X25leHRTaWJsaW5nLT5fcHJldmlvdXNTaWJsaW5nID0gY2hpbGQtPl9wcmV2aW91c1Np
Ymxpbmc7IAotICAgIGVsc2UKLSAgICAgICAgX2xhc3RDaGlsZCA9IGNoaWxkLT5fcHJldmlvdXNT
aWJsaW5nOwotCi0gICAgY2hpbGQtPl9wcmV2aW91c1NpYmxpbmcgPSBuaWw7Ci0gICAgY2hpbGQt
Pl9uZXh0U2libGluZyA9IG5pbDsKLQotICAgIF9jaGlsZENvdW50LS07Ci0KLSAgICBbY2hpbGQg
cmVsZWFzZV07CisgICAgW2NoaWxkIF9jbGVhclJlbmRlclBhcnRdOworICAgIG1fZnJhbWUtPnJl
bW92ZUNoaWxkKFtjaGlsZCBwYXJ0XSk7CiB9CiAKIC0gKFdlYkNvcmVGcmFtZUJyaWRnZSAqKWNo
aWxkRnJhbWVOYW1lZDooTlNTdHJpbmcgKiluYW1lCkBAIC01MjYsMTEgKzUxMCw4IEBAIHN0YXRp
YyBib29sIGluaXRpYWxpemVkS0pTID0gRkFMU0U7CiB7CiAgICAgW3NlbGYgcmVtb3ZlRnJvbUZy
YW1lXTsKICAgICAKLSAgICBpZiAoX3JlbmRlclBhcnQpIHsKKyAgICBpZiAoX3JlbmRlclBhcnQp
CiAgICAgICAgIF9yZW5kZXJQYXJ0LT5kZXJlZihfcmVuZGVyUGFydEFyZW5hKTsKLSAgICB9Ci0g
ICAgbV9mcmFtZS0+c2V0QnJpZGdlKG5pbCk7Ci0gICAgbV9mcmFtZS0+ZGVyZWYoKTsKICAgICAg
ICAgCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtNTQ2LDcgKzUyNyw2IEBAIHN0YXRpYyBi
b29sIGluaXRpYWxpemVkS0pTID0gRkFMU0U7CiAgICAgICAgIF9yZW5kZXJQYXJ0LT5kZXJlZihf
cmVuZGVyUGFydEFyZW5hKTsKICAgICB9CiAgICAgbV9mcmFtZS0+c2V0QnJpZGdlKG5pbCk7Ci0g
ICAgbV9mcmFtZS0+ZGVyZWYoKTsKICAgICAgICAgCiAgICAgW3N1cGVyIGZpbmFsaXplXTsKIH0K
QEAgLTc3OCw4ICs3NTgsMTYgQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWRLSlMgPSBGQUxTRTsK
ICAgICBtX2ZyYW1lLT5zdG9wKCk7CiB9CiAKKy0gKHZvaWQpY2xlYXJGcmFtZQoreworICAgIG1f
ZnJhbWUgPSAwOworfQorCiAtICh2b2lkKWhhbmRsZUZhbGxiYWNrQ29udGVudAogeworICAgIC8v
IHRoaXMgbmVlZHMgdG8gYmUgY2FsbGFibGUgZXZlbiBhZnRlciB0ZWFyZG93biBvZiB0aGUgZnJh
bWUKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKICAgICBtX2ZyYW1lLT5oYW5k
bGVGYWxsYmFja0NvbnRlbnQoKTsKIH0KIApAQCAtMTA4Nyw3ICsxMDc1LDggQEAgc3RhdGljIEJP
T0wgbm93UHJpbnRpbmcoV2ViQ29yZUZyYW1lQnJpZAogCiAtICh2b2lkKXJlbW92ZUZyb21GcmFt
ZQogewotICAgIG1fZnJhbWUtPnNldFZpZXcoMCk7CisgICAgaWYgKG1fZnJhbWUpCisgICAgICAg
IG1fZnJhbWUtPnNldFZpZXcoMCk7CiB9CiAKIC0gKHZvaWQpaW5zdGFsbEluRnJhbWU6KE5TVmll
dyAqKXZpZXcKSW5kZXg6IGJyaWRnZS9tYWMvV2ViQ29yZVBhZ2VCcmlkZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBicmlkZ2UvbWFjL1dlYkNvcmVQYWdlQnJpZGdlLmgJKHJldmlzaW9uIDEyMjg5KQorKysg
YnJpZGdlL21hYy9XZWJDb3JlUGFnZUJyaWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0
Nyw2IEBAIGNsYXNzIFdlYkNvcmVGcmFtZUJyaWRnZTsKIEBpbnRlcmZhY2UgV2ViQ29yZVBhZ2VC
cmlkZ2UgOiBOU09iamVjdAogewogICAgIFBhZ2UgKl9wYWdlOwotICAgIFdlYkNvcmVGcmFtZUJy
aWRnZSAqX21haW5GcmFtZTsKIH0KIAogLSAoaWQpaW5pdFdpdGhNYWluRnJhbWU6KFdlYkNvcmVG
cmFtZUJyaWRnZSAqKW1haW5GcmFtZTsKSW5kZXg6IGJyaWRnZS9tYWMvV2ViQ29yZVBhZ2VCcmlk
Z2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gYnJpZGdlL21hYy9XZWJDb3JlUGFnZUJyaWRnZS5tbQkocmV2
aXNpb24gMTIyODkpCisrKyBicmlkZ2UvbWFjL1dlYkNvcmVQYWdlQnJpZGdlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldl
YkNvcmVQYWdlQnJpZGdlLmgiCiAKKyNpbXBvcnQgIk1hY0ZyYW1lLmgiCisjaW1wb3J0ICJQYWdl
LmgiCiAjaW1wb3J0ICJXZWJDb3JlRnJhbWVCcmlkZ2UuaCIKIAogCkBAIC0zNiwyMCArMzgsMjAg
QEAKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgIF9tYWluRnJhbWUgPSBbbWFpbkZyYW1lIHJldGFpbl07CisgICAgX3BhZ2UgPSBuZXcg
UGFnZShhZG9wdFJlZihbbWFpbkZyYW1lIHBhcnRdKSk7CiAgICAgCiAgICAgcmV0dXJuIHNlbGY7
CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIFtfbWFpbkZyYW1lIHJlbGVhc2VdOworICAg
IGRlbGV0ZSBfcGFnZTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKFdlYkNvcmVGcmFt
ZUJyaWRnZSAqKW1haW5GcmFtZQogewotICAgIHJldHVybiBfbWFpbkZyYW1lOworICAgIHJldHVy
biBNYWMoX3BhZ2UtPm1haW5GcmFtZSgpKS0+YnJpZGdlKCk7CiB9CiAKIEBlbmQKSW5kZXg6IHBh
Z2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDEyMjg5KQor
KysgcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEZy
YW1lVmlldzsKIGNsYXNzIEtIVE1MUGFydEJyb3dzZXJFeHRlbnNpb247CiBjbGFzcyBLSFRNTFNl
dHRpbmdzOwogY2xhc3MgS0pTUHJveHlJbXBsOworY2xhc3MgRnJhbWVUcmVlTm9kZTsKIAogbmFt
ZXNwYWNlIEtKUyB7CiAgICAgY2xhc3MgUGF1c2VkVGltZW91dHM7CkBAIC0xNTAsNyArMTUxLDcg
QEAgY2xhc3MgRnJhbWUgOiBwdWJsaWMgT2JqZWN0Q29udGVudHMgewogcHVibGljOgogICBlbnVt
IHsgTm9YUG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24gPSBJTlRfTUlOIH07CiAKLSAgRnJh
bWUoKSA6IGQoMCkgeyB9CisgIEZyYW1lKCk7CiAgIHZpcnR1YWwgfkZyYW1lKCk7CiAKICAgLyoq
CkBAIC03NTAsNiArNzUxLDggQEAgcHVibGljOgogICAvLyBVc2VkIHRvIGtlZXAgdGhlIHBhcnQg
YWxpdmUgd2hlbiBydW5uaW5nIGEgc2NyaXB0IHRoYXQgbWlnaHQgZGVzdHJveSBpdC4KICAgdm9p
ZCBrZWVwQWxpdmUoKTsKIAorICBzdGF0aWMgdm9pZCBlbmRBbGxMaWZlU3VwcG9ydCgpOworCiBz
aWduYWxzOgogICAvKioKICAgICogRW1pdHRlZCBpZiB0aGUgY3Vyc29yIGlzIG1vdmVkIG92ZXIg
YW4gVVJMLgpAQCAtOTA2LDYgKzkwOSw4IEBAIHByaXZhdGUgc2xvdHM6CiAKICAgdm9pZCBzbG90
RW5kTGlmZVN1cHBvcnQoKTsKIAorICB2aXJ0dWFsIHZvaWQgY2xlYXIoKTsKKwogcHJpdmF0ZToK
ICAgYm9vbCByZXN0b3JlVVJMKCBjb25zdCBLVVJMICZ1cmwgKTsKICAgdm9pZCBjbGVhckNhcmV0
UmVjdElmTmVlZGVkKCk7CkBAIC05MjYsOCArOTMxLDYgQEAgcHJpdmF0ZToKIAogICB2b2lkIGlu
aXQoRnJhbWVWaWV3ICp2aWV3KTsKIAotICB2aXJ0dWFsIHZvaWQgY2xlYXIoKTsKLQogICBib29s
IHNjaGVkdWxlU2NyaXB0KCBXZWJDb3JlOjpOb2RlSW1wbCAqbiwgY29uc3QgUVN0cmluZyYgc2Ny
aXB0KTsKIAogICBRVmFyaWFudCBleGVjdXRlU2NoZWR1bGVkU2NyaXB0KCk7CkBAIC0xMTEyLDYg
KzExMTUsMTggQEAgcHVibGljOiAgCiAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdExheW91dCgpIHt9
CiAKICAgaW50IGZyYW1lQ291bnQ7CisKKyAgCisgIEZyYW1lVHJlZU5vZGUgKnRyZWVOb2RlKCk7
CisgIEZyYW1lICpuZXh0U2libGluZygpOworICBGcmFtZSAqcHJldmlvdXNTaWJsaW5nKCk7Cisg
IEZyYW1lICpmaXJzdENoaWxkKCk7CisgIEZyYW1lICpsYXN0Q2hpbGQoKTsKKyAgaW50IGNoaWxk
Q291bnQoKTsKKyAgdm9pZCBhcHBlbmRDaGlsZChGcmFtZSAqY2hpbGQpOworICB2b2lkIHJlbW92
ZUNoaWxkKEZyYW1lICpjaGlsZCk7CisKKyAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21WaWV3KCk7
CiB9OwogCiAjZW5kaWYKSW5kZXg6IHBhZ2UvRnJhbWVUcmVlTm9kZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gcGFnZS9GcmFtZVRyZWVOb2RlLmNwcAkocmV2aXNpb24gMCkKKysrIHBhZ2UvRnJhbWVUcmVl
Tm9kZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKy8vIC0qLSBjLWJhc2ljLW9m
ZnNldDogNCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh
Y2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRnJhbWVUcmVlTm9kZS5oIgorCisjaW5jbHVk
ZSA8a3htbGNvcmUvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
Tm9kZUltcGwuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKwordXNpbmcgc3RkOjpzd2FwOwor
CitGcmFtZVRyZWVOb2RlOjp+RnJhbWVUcmVlTm9kZSgpCit7CisgICAgZm9yIChGcmFtZSAqY2hp
bGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlTm9kZSgpLT5uZXh0
U2libGluZygpKQorICAgICAgICBjaGlsZC0+ZGV0YWNoRnJvbVZpZXcoKTsKK30KKwordm9pZCBG
cmFtZVRyZWVOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPEZyYW1lPiBjaGlsZCkKK3sKKyAg
ICBjaGlsZC0+c2V0UGFyZW50KG1fdGhpc0ZyYW1lKTsKKworICAgIEZyYW1lICpvbGRMYXN0ID0g
bV9sYXN0Q2hpbGQ7CisgICAgbV9sYXN0Q2hpbGQgPSBjaGlsZC5nZXQoKTsKKworICAgIGlmIChv
bGRMYXN0KSB7CisgICAgICAgIGNoaWxkLT50cmVlTm9kZSgpLT5tX3ByZXZpb3VzU2libGluZyA9
IG9sZExhc3Q7CisgICAgICAgIG9sZExhc3QtPnRyZWVOb2RlKCktPm1fbmV4dFNpYmxpbmcgPSBj
aGlsZDsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9maXJzdENoaWxkID0gY2hpbGQ7CisKKyAgICBt
X2NoaWxkQ291bnQrKzsKKworICAgIEFTU0VSVCghbV9sYXN0Q2hpbGQtPnRyZWVOb2RlKCktPm1f
bmV4dFNpYmxpbmcpOworfQorCit2b2lkIEZyYW1lVHJlZU5vZGU6OnJlbW92ZUNoaWxkKEZyYW1l
ICpjaGlsZCkKK3sKKyAgICBjaGlsZC0+c2V0UGFyZW50KDApOworICAgIGNoaWxkLT5kZXRhY2hG
cm9tVmlldygpOworCisgICAgLy8gU2xpZ2h0bHkgdHJpY2t5IHdheSB0byBwcmV2ZW50IGRlbGV0
aW5nIHRoZSBjaGlsZCB1bnRpbCB3ZSBhcmUgZG9uZSB3aXRoIGl0LCB3L28KKyAgICAvLyBleHRy
YSByZWZzLiBUaGVzZSBzd2FwcyBsZWF2ZSB0aGUgY2hpbGQgaW4gYSBjaXJjdWxhciBsaXN0IGJ5
IGl0c2VsZi4gQ2xlYXJpbmcgaXRzCisgICAgLy8gcHJldmlvdXMgYW5kIG5leHQgd2lsbCB0aGVu
IGZpbmFsbHkgZGVyZWYgaXQuCisKKyAgICBSZWZQdHI8RnJhbWU+JiBuZXdMb2NhdGlvbkZvck5l
eHQgPSBtX2ZpcnN0Q2hpbGQgPT0gY2hpbGQgPyBtX2ZpcnN0Q2hpbGQgOiBjaGlsZC0+cHJldmlv
dXNTaWJsaW5nKCktPnRyZWVOb2RlKCktPm1fbmV4dFNpYmxpbmc7CisgICAgRnJhbWUqJiBuZXdM
b2NhdGlvbkZvclByZXZpb3VzID0gbV9sYXN0Q2hpbGQgPT0gY2hpbGQgPyBtX2xhc3RDaGlsZCA6
IGNoaWxkLT5uZXh0U2libGluZygpLT50cmVlTm9kZSgpLT5tX3ByZXZpb3VzU2libGluZzsKKyAg
ICBzd2FwKG5ld0xvY2F0aW9uRm9yTmV4dCwgY2hpbGQtPnRyZWVOb2RlKCktPm1fbmV4dFNpYmxp
bmcpOworICAgIHN3YXAobmV3TG9jYXRpb25Gb3JQcmV2aW91cywgY2hpbGQtPnRyZWVOb2RlKCkt
Pm1fcHJldmlvdXNTaWJsaW5nKTsKKworICAgIGNoaWxkLT50cmVlTm9kZSgpLT5tX3ByZXZpb3Vz
U2libGluZyA9IDA7CisgICAgY2hpbGQtPnRyZWVOb2RlKCktPm1fbmV4dFNpYmxpbmcgPSAwOwor
CisgICAgbV9jaGlsZENvdW50LS07Cit9CkluZGV4OiBwYWdlL1BhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBwYWdlL1BhZ2UuaAkocmV2aXNpb24gMCkKKysrIHBhZ2UvUGFnZS5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM4IEBACisvLyAtKi0gYy1iYXNpYy1vZmZzZXQ6IDQgLSotCisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9z
dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworI2lmbmRlZiBQQUdFX0gKKyNkZWZpbmUg
UEFHRV9ICisKKyNpbmNsdWRlIDxreG1sY29yZS9SZWZQdHIuaD4KKyNpbmNsdWRlIDxreG1sY29y
ZS9QYXNzUmVmUHRyLmg+CisKK2NsYXNzIEZyYW1lOworCitjbGFzcyBQYWdlIHsKKyBwdWJsaWM6
CisgICAgUGFnZShQYXNzUmVmUHRyPEZyYW1lPiBtYWluRnJhbWUpOworICAgIH5QYWdlKCk7Cisg
ICAgRnJhbWUgKm1haW5GcmFtZSgpIHsgcmV0dXJuIG1fbWFpbkZyYW1lLmdldCgpOyB9CisgcHJp
dmF0ZToKKyAgICBSZWZQdHI8RnJhbWU+IG1fbWFpbkZyYW1lOworfTsKKyAgICAKKyNlbmRpZiAv
LyBQQUdFX0gKSW5kZXg6IHBhZ2UvRnJhbWVUcmVlTm9kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2Uv
RnJhbWVUcmVlTm9kZS5oCShyZXZpc2lvbiAwKQorKysgcGFnZS9GcmFtZVRyZWVOb2RlLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zm
c2V0OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj
ZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKKyNp
Zm5kZWYgRlJBTUVfVFJFRV9OT0RFX0gKKyNkZWZpbmUgRlJBTUVfVFJFRV9OT0RFX0gKKworI2lu
Y2x1ZGUgPGt4bWxjb3JlL1JlZlB0ci5oPgorI2luY2x1ZGUgPGt4bWxjb3JlL1Bhc3NSZWZQdHIu
aD4KKworY2xhc3MgRnJhbWU7CisKK2NsYXNzIEZyYW1lVHJlZU5vZGUKK3sKK3B1YmxpYzoKKyAg
ICBGcmFtZVRyZWVOb2RlKEZyYW1lICp0aGlzRnJhbWUpIAorICAgICAgICA6IG1fdGhpc0ZyYW1l
KHRoaXNGcmFtZSkKKyAgICAgICAgLCBtX3ByZXZpb3VzU2libGluZygwKQorICAgICAgICAsIG1f
bGFzdENoaWxkKDApCisgICAgICAgICwgbV9jaGlsZENvdW50KDApCisgICAgeworICAgIH0KKyAg
ICB+RnJhbWVUcmVlTm9kZSgpOworCisgICAgRnJhbWUgKm5leHRTaWJsaW5nKCkgeyByZXR1cm4g
bV9uZXh0U2libGluZy5nZXQoKTsgfQorICAgIEZyYW1lICpwcmV2aW91c1NpYmxpbmcoKSB7IHJl
dHVybiBtX3ByZXZpb3VzU2libGluZzsgfQorICAgIEZyYW1lICpmaXJzdENoaWxkKCkgeyByZXR1
cm4gbV9maXJzdENoaWxkLmdldCgpOyB9CisgICAgRnJhbWUgKmxhc3RDaGlsZCgpIHsgcmV0dXJu
IG1fbGFzdENoaWxkOyB9CisgICAgaW50IGNoaWxkQ291bnQoKSB7IHJldHVybiBtX2NoaWxkQ291
bnQ7IH0KKworICAgIHZvaWQgYXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxGcmFtZT4gY2hpbGQpOwor
ICAgIHZvaWQgcmVtb3ZlQ2hpbGQoRnJhbWUgKmNoaWxkKTsKKworIHByaXZhdGU6CisgICAgRnJh
bWUgKm1fdGhpc0ZyYW1lOworCisgICAgLy8gRklYTUU6IHVzZSBMaXN0UmVmUHRyPworICAgIFJl
ZlB0cjxGcmFtZT4gbV9uZXh0U2libGluZzsKKyAgICBGcmFtZSAqbV9wcmV2aW91c1NpYmxpbmc7
CisgICAgUmVmUHRyPEZyYW1lPiBtX2ZpcnN0Q2hpbGQ7CisgICAgRnJhbWUgKm1fbGFzdENoaWxk
OworICAgIGludCBtX2NoaWxkQ291bnQ7Cit9OworCisjZW5kaWYgLy8gRlJBTUVfVFJFRV9OT0RF
X0gKSW5kZXg6IHBhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2UvRnJhbWUuY3BwCShy
ZXZpc2lvbiAxMjI4OSkKKysrIHBhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUs
NyArMTU1LDcgQEAgdm9pZCBGcmFtZTo6aW5pdChGcmFtZVZpZXcgKnZpZXcpCiAgIAogICBmcmFt
ZUNvdW50ID0gMDsKIAotICBkID0gbmV3IEZyYW1lUHJpdmF0ZShwYXJlbnQoKSk7CisgIGQgPSBu
ZXcgRnJhbWVQcml2YXRlKHBhcmVudCgpLCB0aGlzKTsKIAogICBkLT5tX3ZpZXcgPSB2aWV3Owog
ICBzZXRXaWRnZXQoIGQtPm1fdmlldyApOwpAQCAtMTgwLDggKzE4MCwzMSBAQCB2b2lkIEZyYW1l
Ojppbml0KEZyYW1lVmlldyAqdmlldykKICAgY29ubmVjdCgmZC0+bV9saWZlU3VwcG9ydFRpbWVy
LCBTSUdOQUwodGltZW91dCgpKSwgdGhpcywgU0xPVChzbG90RW5kTGlmZVN1cHBvcnQoKSkpOwog
fQogCisjaWZuZGVmIE5ERUJVRworc3RydWN0IEZyYW1lQ291bnRlciB7IAorICAgIHN0YXRpYyBp
bnQgY291bnQ7IAorICAgIH5GcmFtZUNvdW50ZXIoKSB7IGlmIChjb3VudCAhPSAwKSBmcHJpbnRm
KHN0ZGVyciwgIkxFQUs6ICVkIEZyYW1lXG4iLCBjb3VudCk7IH0KK307CitpbnQgRnJhbWVDb3Vu
dGVyOjpjb3VudCA9IDA7CitzdGF0aWMgRnJhbWVDb3VudGVyIGZyYW1lQ291bnRlcjsKKyNlbmRp
ZiBOREVCVUcKKworRnJhbWU6OkZyYW1lKCkgCisgICAgOiBkKDApIAoreyAKKyNpZm5kZWYgTkRF
QlVHCisgICAgKytGcmFtZUNvdW50ZXI6OmNvdW50OworI2VuZGlmCit9CisKIEZyYW1lOjp+RnJh
bWUoKQogeworICAgIGFzc2VydCghZC0+bV9saWZlU3VwcG9ydFRpbWVyLmlzQWN0aXZlKCkpOwor
CisjaWZuZGVmIE5ERUJVRworICAgIC0tRnJhbWVDb3VudGVyOjpjb3VudDsKKyNlbmRpZgorCiAg
IGNhbmNlbFJlZGlyZWN0aW9uKCk7CiAKICAgaWYgKCFkLT5tX2JDb21wbGV0ZSkKQEAgLTIwMCw2
ICsyMjMsOCBAQCBGcmFtZTo6fkZyYW1lKCkKICAgICBkLT5tX3ZpZXctPm1fZnJhbWUgPSAwOwog
ICB9CiAgIAorICBhc3NlcnQoIWQtPm1fbGlmZVN1cHBvcnRUaW1lci5pc0FjdGl2ZSgpKTsKKwog
ICBkZWxldGUgZDsgZCA9IDA7CiB9CiAKQEAgLTM3Myw3ICszOTgsNyBAQCB2b2lkIEZyYW1lOjpz
dG9wTG9hZGluZyhib29sIHNlbmRVbmxvYWQpCiAgIENvbnN0RnJhbWVJdCBpdCA9IGQtPm1fZnJh
bWVzLmJlZ2luKCk7CiAgIENvbnN0RnJhbWVJdCBlbmQgPSBkLT5tX2ZyYW1lcy5lbmQoKTsKICAg
Zm9yICg7IGl0ICE9IGVuZDsgKytpdCApIHsKLSAgICAgIE9iamVjdENvbnRlbnRzICpwYXJ0ID0g
KCppdCkubV9mcmFtZTsKKyAgICAgIE9iamVjdENvbnRlbnRzICpwYXJ0ID0gKCppdCkubV9mcmFt
ZS5nZXQoKTsKICAgICAgIGlmIChwYXJ0KSB7CiAgICAgICAgICAgRnJhbWUgKmZyYW1lID0gc3Rh
dGljX2Nhc3Q8RnJhbWUgKj4ocGFydCk7CiAKQEAgLTU4MywyNSArNjA4LDEyIEBAIHZvaWQgRnJh
bWU6OmNsZWFyKCkKICAgewogICAgIENvbnN0RnJhbWVJdCBpdCA9IGQtPm1fZnJhbWVzLmJlZ2lu
KCk7CiAgICAgQ29uc3RGcmFtZUl0IGVuZCA9IGQtPm1fZnJhbWVzLmVuZCgpOwotICAgIGZvcig7
IGl0ICE9IGVuZDsgKytpdCApCi0gICAgewotICAgICAgaWYgKCAoKml0KS5tX2ZyYW1lICkKLSAg
ICAgIHsKKyAgICBmb3IoOyBpdCAhPSBlbmQ7ICsraXQgKSB7CisgICAgICBpZiAoKCppdCkubV9m
cmFtZSkKICAgICAgICAgZGlzY29ubmVjdENoaWxkKCYqaXQpOwotICAgICAgICAoKml0KS5tX2Zy
YW1lLT5kZXJlZigpOwotICAgICAgfQogICAgIH0KICAgfQogICBkLT5tX2ZyYW1lcy5jbGVhcigp
OwotCi0gIHsKLSAgICBDb25zdEZyYW1lSXQgaXQgPSBkLT5tX29iamVjdHMuYmVnaW4oKTsKLSAg
ICBDb25zdEZyYW1lSXQgZW5kID0gZC0+bV9vYmplY3RzLmVuZCgpOwotICAgIGZvcig7IGl0ICE9
IGVuZDsgKytpdCApIHsKLSAgICAgIGlmICggKCppdCkubV9mcmFtZSApCi0gICAgICAgICgqaXQp
Lm1fZnJhbWUtPmRlcmVmKCk7Ci0gICAgfQotICB9CiAgIGQtPm1fb2JqZWN0cy5jbGVhcigpOwog
CiAgIGQtPm1fc2NoZWR1bGVkUmVkaXJlY3Rpb24gPSBub1JlZGlyZWN0aW9uU2NoZWR1bGVkOwpA
QCAtODg2LDE3ICs4OTgsMTAgQEAgdm9pZCBGcmFtZTo6ZW5kSWZOb3RMb2FkaW5nKCkKIAogdm9p
ZCBGcmFtZTo6c3RvcCgpCiB7Ci0gICAgLy8gbWFrZSBzdXJlIG5vdGhpbmcncyBsZWZ0IGluIHRo
ZXJlLi4uCiAgICAgaWYgKGQtPm1fZG9jKSB7CiAgICAgICAgIGlmIChkLT5tX2RvYy0+dG9rZW5p
emVyKCkpCiAgICAgICAgICAgICBkLT5tX2RvYy0+dG9rZW5pemVyKCktPnN0b3BQYXJzaW5nKCk7
CiAgICAgICAgIGQtPm1fZG9jLT5maW5pc2hQYXJzaW5nKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgLy8gV2ViS2l0IHBhcnRpYWxseSB1c2VzIFdlYkNvcmUgd2hlbiBsb2FkaW5nIG5vbi1IVE1M
IGRvY3MuICBJbiB0aGVzZSBjYXNlcyBkb2M9PW5pbCwgYnV0Ci0gICAgICAgIC8vIFdlYkNvcmUg
aXMgZW5vdWdoIGludm9sdmVkIHRoYXQgd2UgbmVlZCB0byBjaGVja0NvbXBsZXRlZCgpIGluIG9y
ZGVyIGZvciBtX2JDb21wbGV0ZSB0bwotICAgICAgICAvLyBiZWNvbWUgdHJ1ZS4gIEFuIGV4YW1w
bGUgaXMgd2hlbiBhIHN1YmZyYW1lIGlzIGEgcHVyZSB0ZXh0IGRvYywgYW5kIHRoYXQgc3ViZnJh
bWUgaXMgdGhlCi0gICAgICAgIC8vIGxhc3Qgb25lIHRvIGNvbXBsZXRlLgotICAgICAgICBjaGVj
a0NvbXBsZXRlZCgpOwogICAgIH0KIH0KIApAQCAtOTA5LDggKzkxNCw4IEBAIHZvaWQgRnJhbWU6
OnN0b3BBbmltYXRpb25zKCkKICAgQ29uc3RGcmFtZUl0IGl0ID0gZC0+bV9mcmFtZXMuYmVnaW4o
KTsKICAgQ29uc3RGcmFtZUl0IGVuZCA9IGQtPm1fZnJhbWVzLmVuZCgpOwogICBmb3IgKDsgaXQg
IT0gZW5kOyArK2l0ICkKLSAgICBpZiAoICEoICppdCApLm1fZnJhbWUuaXNOdWxsKCkgJiYgKCAq
aXQgKS5tX2ZyYW1lLT5pbmhlcml0cyggIkZyYW1lIiApICkgewotICAgICAgT2JqZWN0Q29udGVu
dHMqIHAgPSAoICppdCApLm1fZnJhbWU7CisgICAgaWYgKCgqaXQpLm1fZnJhbWUgJiYgKCppdCku
bV9mcmFtZS0+aW5oZXJpdHMoICJGcmFtZSIgKSApIHsKKyAgICAgIE9iamVjdENvbnRlbnRzKiBw
ID0gKCppdCkubV9mcmFtZS5nZXQoKTsKICAgICAgIHN0YXRpY19jYXN0PEZyYW1lKj4oIHAgKS0+
c3RvcEFuaW1hdGlvbnMoKTsKICAgICB9CiB9CkBAIC0xMDMxLDcgKzEwMzYsNyBAQCB2b2lkIEZy
YW1lOjpjaGVja0VtaXRMb2FkRXZlbnQoKQogICAgIENvbnN0RnJhbWVJdCBpdCA9IGQtPm1fZnJh
bWVzLmJlZ2luKCk7CiAgICAgQ29uc3RGcmFtZUl0IGVuZCA9IGQtPm1fZnJhbWVzLmVuZCgpOwog
ICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQgKSB7Ci0gICAgICBPYmplY3RDb250ZW50cyAqcCA9
ICgqaXQpLm1fZnJhbWU7CisgICAgICBPYmplY3RDb250ZW50cyAqcCA9ICgqaXQpLm1fZnJhbWUu
Z2V0KCk7CiAgICAgICBpZiAocCAmJiBwLT5pbmhlcml0cygiRnJhbWUiKSkgewogICAgICAgICBG
cmFtZSogaHRtbEZyYW1lID0gc3RhdGljX2Nhc3Q8RnJhbWUgKj4ocCk7CiAgICAgICAgIGlmICho
dG1sRnJhbWUtPmQtPm1fZG9jKQpAQCAtMTY4NSwxMCArMTY5MCw3IEBAIGJvb2wgRnJhbWU6OnBy
b2Nlc3NPYmplY3RSZXF1ZXN0KCBDaGlsZEYKIAogICAgIC8vQ1JJVElDQUwgU1RVRkYKICAgICBp
ZiAoY2hpbGQtPm1fZnJhbWUpCi0gICAgewogICAgICAgZGlzY29ubmVjdENoaWxkKGNoaWxkKTsK
LSAgICAgIGNoaWxkLT5tX2ZyYW1lLT5kZXJlZigpOwotICAgIH0KIAogICAgIGNoaWxkLT5tX3Nl
cnZpY2VUeXBlID0gbWltZXR5cGU7CiAgICAgaWYgKGNoaWxkLT5tX3JlbmRlcmVyICYmIGZyYW1l
LT53aWRnZXQoKSApCkBAIC0xNjk2LDcgKzE2OTgsNyBAQCBib29sIEZyYW1lOjpwcm9jZXNzT2Jq
ZWN0UmVxdWVzdCggQ2hpbGRGCiAKIAogICAgIGNoaWxkLT5tX2ZyYW1lID0gcGFydDsKLSAgICBh
c3NlcnQoICgodm9pZCopIGNoaWxkLT5tX2ZyYW1lKSAhPSAwKTsKKyAgICBhc3NlcnQoY2hpbGQt
Pm1fZnJhbWUpOwogCiAgICAgY29ubmVjdENoaWxkKGNoaWxkKTsKIApAQCAtMTczNiw3ICsxNzM4
LDcgQEAgYm9vbCBGcmFtZTo6cHJvY2Vzc09iamVjdFJlcXVlc3QoIENoaWxkRgogICAvLyBpdCdz
IGJlaW5nIGFkZGVkIHRvIHRoZSBjaGlsZCBsaXN0LiAgSXQgd291bGQgYmUgYSBnb29kIGlkZWEg
dG8KICAgLy8gY3JlYXRlIHRoZSBjaGlsZCBmaXJzdCwgdGhlbiBpbnZva2UgdGhlIGxvYWRlciBz
ZXBhcmF0ZWx5ICAKICAgaWYgKHVybC5pc0VtcHR5KCkgfHwgdXJsLnVybCgpID09ICJhYm91dDpi
bGFuayIpIHsKLSAgICAgIE9iamVjdENvbnRlbnRzICpwYXJ0ID0gY2hpbGQtPm1fZnJhbWU7Cisg
ICAgICBPYmplY3RDb250ZW50cyAqcGFydCA9IGNoaWxkLT5tX2ZyYW1lLmdldCgpOwogICAgICAg
RnJhbWUgKmZyYW1lID0gc3RhdGljX2Nhc3Q8RnJhbWUgKj4ocGFydCk7CiAgICAgICBpZiAoZnJh
bWUgJiYgZnJhbWUtPmluaGVyaXRzKCJGcmFtZSIpKSB7CiAgICAgICAgICAgZnJhbWUtPmNvbXBs
ZXRlZCgpOwpAQCAtMTkwMywxMyArMTkwNSwxMyBAQCBDaGlsZEZyYW1lICpGcmFtZTo6Y2hpbGRG
cmFtZSggY29uc3QgUU9iCiAgICAgRnJhbWVJdCBpdCA9IGQtPm1fZnJhbWVzLmJlZ2luKCk7CiAg
ICAgRnJhbWVJdCBlbmQgPSBkLT5tX2ZyYW1lcy5lbmQoKTsKICAgICBmb3IgKDsgaXQgIT0gZW5k
OyArK2l0ICkKLSAgICAgIGlmIChzdGF0aWNfY2FzdDxPYmplY3RDb250ZW50cyAqPigoKml0KS5t
X2ZyYW1lKSA9PSBwYXJ0KQorICAgICAgaWYgKCgqaXQpLm1fZnJhbWUgPT0gcGFydCkKICAgICAg
ICAgcmV0dXJuICYoKml0KTsKIAogICAgIGl0ID0gZC0+bV9vYmplY3RzLmJlZ2luKCk7CiAgICAg
ZW5kID0gZC0+bV9vYmplY3RzLmVuZCgpOwogICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQgKQot
ICAgICAgaWYgKHN0YXRpY19jYXN0PE9iamVjdENvbnRlbnRzICo+KCgqaXQpLm1fZnJhbWUpID09
IHBhcnQpCisgICAgICBpZiAoKCppdCkubV9mcmFtZSA9PSBwYXJ0KQogICAgICAgICByZXR1cm4g
JigqaXQpOwogCiAgICAgcmV0dXJuIDBMOwpAQCAtMTkyMiw3ICsxOTI0LDcgQEAgRnJhbWUgKkZy
YW1lOjpmaW5kRnJhbWUoIGNvbnN0IFFTdHJpbmcgJgogICBpZiAoaXQgPT0gZC0+bV9mcmFtZXMu
ZW5kKCkpCiAgICAgcmV0dXJuIDBMOwogICBlbHNlIHsKLSAgICBPYmplY3RDb250ZW50cyAqcCA9
ICgqaXQpLm1fZnJhbWU7CisgICAgT2JqZWN0Q29udGVudHMgKnAgPSAoKml0KS5tX2ZyYW1lLmdl
dCgpOwogICAgIGlmIChwICYmIHAtPmluaGVyaXRzKCJGcmFtZSIpKQogICAgICAgcmV0dXJuIChG
cmFtZSopcDsKICAgICBlbHNlCkBAIC0yMDA0LDkgKzIwMDYsOSBAQCB2b2lkIEZyYW1lOjpzZXRa
b29tRmFjdG9yIChpbnQgcGVyY2VudCkKICAgQ29uc3RGcmFtZUl0IGl0ID0gZC0+bV9mcmFtZXMu
YmVnaW4oKTsKICAgQ29uc3RGcmFtZUl0IGVuZCA9IGQtPm1fZnJhbWVzLmVuZCgpOwogICBmb3Ig
KDsgaXQgIT0gZW5kOyArK2l0ICkKLSAgICBpZiAoISgqaXQpLm1fZnJhbWUuaXNOdWxsKCkgJiYg
KCppdCkubV9mcmFtZS0+aW5oZXJpdHMoICJGcmFtZSIgKSApIHsKLSAgICAgIE9iamVjdENvbnRl
bnRzKiBwID0gKCAqaXQgKS5tX2ZyYW1lOwotICAgICAgc3RhdGljX2Nhc3Q8RnJhbWUqPiggcCAp
LT5zZXRab29tRmFjdG9yKGQtPm1fem9vbUZhY3Rvcik7CisgICAgaWYgKCgqaXQpLm1fZnJhbWUg
JiYgKCppdCkubV9mcmFtZS0+aW5oZXJpdHMoIkZyYW1lIikpIHsKKyAgICAgIE9iamVjdENvbnRl
bnRzKiBwID0gKCppdCkubV9mcmFtZS5nZXQoKTsKKyAgICAgIHN0YXRpY19jYXN0PEZyYW1lKj4o
cCktPnNldFpvb21GYWN0b3IoZC0+bV96b29tRmFjdG9yKTsKICAgICB9CiAKICAgaWYgKGQtPm1f
ZG9jICYmIGQtPm1fZG9jLT5yZW5kZXJlcigpICYmIGQtPm1fZG9jLT5yZW5kZXJlcigpLT5uZWVk
c0xheW91dCgpKQpAQCAtMjA4Niw3ICsyMDg4LDcgQEAgUVB0ckxpc3Q8T2JqZWN0Q29udGVudHM+
IEZyYW1lOjpmcmFtZXMoKQogICBDb25zdEZyYW1lSXQgZW5kID0gZC0+bV9mcmFtZXMuZW5kKCk7
CiAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQgKQogICAgIGlmICghKCppdCkubV9iUHJlbG9hZGVk
KQotICAgICAgcmVzLmFwcGVuZCgoKml0KS5tX2ZyYW1lKTsKKyAgICAgIHJlcy5hcHBlbmQoKCpp
dCkubV9mcmFtZS5nZXQoKSk7CiAKICAgcmV0dXJuIHJlczsKIH0KQEAgLTI5NjAsNyArMjk2Miw3
IEBAIGJvb2wgRnJhbWU6OmlzQ2hhcmFjdGVyU21hcnRSZXBsYWNlRXhlbXAKIAogdm9pZCBGcmFt
ZTo6Y29ubmVjdENoaWxkKGNvbnN0IENoaWxkRnJhbWUgKmNoaWxkKSBjb25zdAogewotICAgIE9i
amVjdENvbnRlbnRzICpwYXJ0ID0gY2hpbGQtPm1fZnJhbWU7CisgICAgT2JqZWN0Q29udGVudHMg
KnBhcnQgPSBjaGlsZC0+bV9mcmFtZS5nZXQoKTsKICAgICBpZiAocGFydCAmJiBjaGlsZC0+bV90
eXBlICE9IENoaWxkRnJhbWU6Ok9iamVjdCkKICAgICB7CiAgICAgICAgIGNvbm5lY3QoIHBhcnQs
IFNJR05BTCggc3RhcnRlZCggS0lPOjpKb2IgKikgKSwKQEAgLTI5ODAsNyArMjk4Miw3IEBAIHZv
aWQgRnJhbWU6OmNvbm5lY3RDaGlsZChjb25zdCBDaGlsZEZyYW0KIAogdm9pZCBGcmFtZTo6ZGlz
Y29ubmVjdENoaWxkKGNvbnN0IENoaWxkRnJhbWUgKmNoaWxkKSBjb25zdAogewotICAgIE9iamVj
dENvbnRlbnRzICpwYXJ0ID0gY2hpbGQtPm1fZnJhbWU7CisgICAgT2JqZWN0Q29udGVudHMgKnBh
cnQgPSBjaGlsZC0+bV9mcmFtZS5nZXQoKTsKICAgICBpZiAocGFydCAmJiBjaGlsZC0+bV90eXBl
ICE9IENoaWxkRnJhbWU6Ok9iamVjdCkKICAgICB7CiAgICAgICAgIGRpc2Nvbm5lY3QoIHBhcnQs
IFNJR05BTCggc3RhcnRlZCggS0lPOjpKb2IgKikgKSwKQEAgLTI5OTgsMjAgKzMwMDAsNDIgQEAg
dm9pZCBGcmFtZTo6ZGlzY29ubmVjdENoaWxkKGNvbnN0IENoaWxkRgogICAgIH0KIH0KIAorI2lm
bmRlZiBOREVCVUcKK3R5cGVkZWYgSGFzaFNldDxGcmFtZSAqLCBQb2ludGVySGFzaDxGcmFtZSAq
PiA+IEZyYW1lU2V0Oworc3RhdGljIEZyYW1lU2V0IGxpZmVTdXBwb3J0U2V0OworI2VuZGlmCisK
K3ZvaWQgRnJhbWU6OmVuZEFsbExpZmVTdXBwb3J0KCkKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAg
RnJhbWVTZXQgbGlmZVN1cHBvcnRDb3B5ID0gbGlmZVN1cHBvcnRTZXQ7CisgICAgRnJhbWVTZXQ6
Oml0ZXJhdG9yIGVuZCA9IGxpZmVTdXBwb3J0Q29weS5lbmQoKTsKKyAgICBmb3IgKEZyYW1lU2V0
OjppdGVyYXRvciBpdCA9IGxpZmVTdXBwb3J0Q29weS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
CisgICAgICAgICgqaXQpLT5zbG90RW5kTGlmZVN1cHBvcnQoKTsKKyNlbmRpZgorfQorCiB2b2lk
IEZyYW1lOjprZWVwQWxpdmUoKQogewogICAgIGlmIChkLT5tX2xpZmVTdXBwb3J0VGltZXIuaXNB
Y3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlZigpOwogICAgIGQtPm1fbGlmZVN1cHBv
cnRUaW1lci5zdGFydCgwLCB0cnVlKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgbGlmZVN1cHBvcnRT
ZXQuaW5zZXJ0KHRoaXMpOworI2VuZGlmCiB9CiAKIHZvaWQgRnJhbWU6OnNsb3RFbmRMaWZlU3Vw
cG9ydCgpCiB7CiAgICAgZC0+bV9saWZlU3VwcG9ydFRpbWVyLnN0b3AoKTsKICAgICBkZXJlZigp
OworI2lmbmRlZiBOREVCVUcKKyAgICBsaWZlU3VwcG9ydFNldC5yZW1vdmUodGhpcyk7CisjZW5k
aWYKIH0KIAorCiAvLyBXb3JrYXJvdW5kIGZvciB0aGUgZmFjdCB0aGF0IGl0J3MgaGFyZCB0byBk
ZWxldGUgYSBmcmFtZS4KIC8vIENhbGwgdGhpcyBhZnRlciBkb2luZyB1c2VyLXRyaWdnZXJlZCBz
ZWxlY3Rpb25zIHRvIG1ha2UgaXQgZWFzeSB0byBkZWxldGUgdGhlIGZyYW1lIHlvdSBlbnRpcmVs
eSBzZWxlY3RlZC4KIC8vIENhbid0IGRvIHRoaXMgaW1wbGljaXRseSBhcyBwYXJ0IG9mIGV2ZXJ5
IHNldFNlbGVjdGlvbiBjYWxsIGJlY2F1c2UgaW4gc29tZSBjb250ZXh0cyBpdCBtaWdodCBub3Qg
YmUgZ29vZApAQCAtMzQ0OSw3ICszNDczLDcgQEAgdm9pZCBGcmFtZTo6c2V0UG9saWN5QmFzZVVS
TChjb25zdCBET01TdAogICAgICAgICBkb2N1bWVudCgpLT5zZXRQb2xpY3lCYXNlVVJMKHMpOwog
ICAgIENvbnN0RnJhbWVJdCBlbmQgPSBkLT5tX2ZyYW1lcy5lbmQoKTsKICAgICBmb3IgKENvbnN0
RnJhbWVJdCBpdCA9IGQtPm1fZnJhbWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBPYmplY3RDb250ZW50cyAqc3VicGFydCA9ICgqaXQpLm1fZnJhbWU7CisgICAgICAgIE9i
amVjdENvbnRlbnRzICpzdWJwYXJ0ID0gKCppdCkubV9mcmFtZS5nZXQoKTsKICAgICAgICAgc3Rh
dGljX2Nhc3Q8RnJhbWUgKj4oc3VicGFydCktPnNldFBvbGljeUJhc2VVUkwocyk7CiAgICAgfQog
fQpAQCAtMzc5NCwzICszODE4LDQ3IEBAIGJvb2wgRnJhbWU6OmlzQ29tcGxldGUoKQogewogICAg
IHJldHVybiBkLT5tX2JDb21wbGV0ZTsKIH0KKworRnJhbWVUcmVlTm9kZSAqRnJhbWU6OnRyZWVO
b2RlKCkKK3sKKyAgICByZXR1cm4gJmQtPm1fdHJlZU5vZGU7Cit9CisKK0ZyYW1lICpGcmFtZTo6
bmV4dFNpYmxpbmcoKQoreworICAgIHJldHVybiB0cmVlTm9kZSgpLT5uZXh0U2libGluZygpOwor
fQorCitGcmFtZSAqRnJhbWU6OnByZXZpb3VzU2libGluZygpCit7CisgICAgcmV0dXJuIGQtPm1f
dHJlZU5vZGUucHJldmlvdXNTaWJsaW5nKCk7Cit9CisKK0ZyYW1lICpGcmFtZTo6Zmlyc3RDaGls
ZCgpCit7CisgICAgcmV0dXJuIHRyZWVOb2RlKCktPmZpcnN0Q2hpbGQoKTsKK30KKworRnJhbWUg
KkZyYW1lOjpsYXN0Q2hpbGQoKQoreworICAgIHJldHVybiB0cmVlTm9kZSgpLT5sYXN0Q2hpbGQo
KTsKK30KKworaW50IEZyYW1lOjpjaGlsZENvdW50KCkKK3sKKyAgICByZXR1cm4gdHJlZU5vZGUo
KS0+Y2hpbGRDb3VudCgpOworfQorCit2b2lkIEZyYW1lOjphcHBlbmRDaGlsZChGcmFtZSAqY2hp
bGQpCit7CisgICAgdHJlZU5vZGUoKS0+YXBwZW5kQ2hpbGQoYWRvcHRSZWYoY2hpbGQpKTsKK30K
Kwordm9pZCBGcmFtZTo6cmVtb3ZlQ2hpbGQoRnJhbWUgKmNoaWxkKQoreworICAgIHRyZWVOb2Rl
KCktPnJlbW92ZUNoaWxkKGNoaWxkKTsKK30KKwordm9pZCBGcmFtZTo6ZGV0YWNoRnJvbVZpZXco
KQoreworfQpJbmRleDogcGFnZS9GcmFtZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0Zy
YW1lUHJpdmF0ZS5oCShyZXZpc2lvbiAxMjI4OSkKKysrIHBhZ2UvRnJhbWVQcml2YXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxraW8vZ2xvYmFsLmg+CiAj
aW5jbHVkZSA8cWRhdGV0aW1lLmg+CiAjaW5jbHVkZSA8cXRpbWVyLmg+CisjaW5jbHVkZSAiRnJh
bWVUcmVlTm9kZS5oIgogCiBuYW1lc3BhY2UgS0lPIHsKICAgICBjbGFzcyBUcmFuc2ZlckpvYjsK
QEAgLTUyLDcgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogCiAgICAgUUd1YXJkZWRQdHI8
UmVuZGVyUGFydD4gbV9yZW5kZXJlcjsKLSAgICBRR3VhcmRlZFB0cjxPYmplY3RDb250ZW50cz4g
bV9mcmFtZTsKKyAgICBSZWZQdHI8T2JqZWN0Q29udGVudHM+IG1fZnJhbWU7CiAgICAgUUd1YXJk
ZWRQdHI8QnJvd3NlckV4dGVuc2lvbj4gbV9leHRlbnNpb247CiAgICAgUVN0cmluZyBtX3NlcnZp
Y2VOYW1lOwogICAgIFFTdHJpbmcgbV9zZXJ2aWNlVHlwZTsKQEAgLTkwLDcgKzkxLDggQEAgZW51
bSBSZWRpcmVjdGlvblNjaGVkdWxlZCB7CiBjbGFzcyBGcmFtZVByaXZhdGUKIHsKIHB1YmxpYzoK
LSAgRnJhbWVQcml2YXRlKFFPYmplY3QqIHBhcmVudCkKKyAgRnJhbWVQcml2YXRlKFFPYmplY3Qg
KnBhcmVudCwgRnJhbWUgKnRoaXNGcmFtZSkKKyAgICAgIDogbV90cmVlTm9kZSh0aGlzRnJhbWUp
CiAgIHsKICAgICBtX2RvYyA9IDA7CiAgICAgbV9qc2NyaXB0ID0gMDsKQEAgLTE3NSw2ICsxNzcs
OSBAQCBwdWJsaWM6CiAgICAgICAgIG1fdHlwaW5nU3R5bGUtPmRlcmVmKCk7CiAgIH0KIAorICBG
cmFtZVRyZWVOb2RlIG1fdHJlZU5vZGU7CisKKyAgLy8gb2xkIHN0eWxlIGZyYW1lIGluZm8KICAg
RnJhbWVMaXN0IG1fZnJhbWVzOwogICBRVmFsdWVMaXN0PFdlYkNvcmU6OkNoaWxkRnJhbWU+IG1f
b2JqZWN0czsKIApJbmRleDogcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL1BhZ2Uu
Y3BwCShyZXZpc2lvbiAwKQorKysgcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzOCBAQAorLy8gLSotIGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEg
MDIxMTEtMTMwNywgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKworc3RhdGljIGludCBwYWdlQ291bnQ7CisKK1Bh
Z2U6OlBhZ2UoUGFzc1JlZlB0cjxGcmFtZT4gbWFpbkZyYW1lKSAKKyAgICA6IG1fbWFpbkZyYW1l
KG1haW5GcmFtZSkgCit7CisgICAgKytwYWdlQ291bnQ7Cit9CisKK1BhZ2U6On5QYWdlKCkgCit7
IAorICAgIG1fbWFpbkZyYW1lLT5kZXRhY2hGcm9tVmlldygpOyAKKyAgICBpZiAoIS0tcGFnZUNv
dW50KQorICAgICAgICBGcmFtZTo6ZW5kQWxsTGlmZVN1cHBvcnQoKTsKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>