<?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>51846</bug_id>
          
          <creation_ts>2011-01-03 12:40:45 -0800</creation_ts>
          <short_desc>Remove the last non-GObject usage of PlatformRefPtr and move the code to GRefPtr</short_desc>
          <delta_ts>2011-01-04 14:31:02 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>328716</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-03 12:40:45 -0800</bug_when>
    <thetext>In response to discussion on the mailing list: http://old.nabble.com/Re:-Rationale-for-PlatformRefPtr--p29854462.html

This bug tracks removing the last non-GObject usage of PlatformRefPtr and removing the class in favor of GRefPtr. Only the Brew port uses PlatformRefPtr now, other than GObject code. This can easily be replaced by RefPtr specializations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328721</commentid>
    <comment_count>1</comment_count>
      <attachid>77837</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-03 13:00:31 -0800</bug_when>
    <thetext>Created attachment 77837
Patch for this issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328723</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-03 13:02:09 -0800</bug_when>
    <thetext>Thanks. This looks good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329220</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-04 14:30:03 -0800</bug_when>
    <thetext>Committed r75009: &lt;http://trac.webkit.org/changeset/75009&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77837</attachid>
            <date>2011-01-03 13:00:31 -0800</date>
            <delta_ts>2011-01-04 14:31:02 -0800</delta_ts>
            <desc>Patch for this issue</desc>
            <filename>bug-51846-20110103130030.patch</filename>
            <type>text/plain</type>
            <size>81048</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDY5NTNkYWI4MzA4ZGVjNmIyZTI0ZDdmOGViYWM3
YjhkYWNiZjQ1YjYuLmY5OTE2MzhiYWEyMGJhNTJhZTYwYzYxMjRhNzAyMDk3ZGU5NTc4OGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDExLTAxLTAzICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGxhc3Qgbm9uLUdPYmplY3Qg
dXNhZ2Ugb2YgUGxhdGZvcm1SZWZQdHIgYW5kIG1vdmUgdGhlIGNvZGUgdG8gR1JlZlB0cgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE4NDYKKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOiBSZW1vdmUgUGxhdGZvcm1SZWZQdHIuaCBmcm9tIHRoZSBz
b3VyY2VzIGxpc3QuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNw
cm9qOiBEaXR0by4KKyAgICAgICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oOiBDaGFuZ2Ug
cmVmZXJlbmNlcyB0byBQbGF0Zm9ybVJlZlB0ciB0byBSZWZQdHIuCisgICAgICAgIChKU0M6OkV4
ZWN1dGFibGVBbGxvY2F0b3I6OmNhY2hlRmx1c2gpOiBEaXR0by4KKyAgICAgICAgKiB3dGYvUGxh
dGZvcm1SZWZQdHIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYvUmFuZG9tTnVtYmVyLmNwcDog
Q2hhbmdlIHJlZmVyZW5jZXMgdG8gUGxhdGZvcm1SZWZQdHIgdG8gUmVmUHRyLgorICAgICAgICAo
V1RGOjpyYW5kb21OdW1iZXIpOiBEaXR0by4KKyAgICAgICAgKiB3dGYvYnJldy9SZWZQdHJCcmV3
Lmg6IERpdHRvLgorICAgICAgICAoV1RGOjpyZWZJZk5vdE51bGwpOiBBZGRlZC4KKyAgICAgICAg
KFdURjo6ZGVyZWZJZk5vdE51bGwpOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvYnJldy9TaGVsbEJy
ZXcuaDogQ2hhbmdlIHJlZmVyZW5jZXMgdG8gUGxhdGZvcm1SZWZQdHIgdG8gUmVmUHRyLgorICAg
ICAgICAoV1RGOjpjcmVhdGVSZWZQdHJJbnN0YW5jZSk6IE1vZGlmaWVkIHRvIHJldHVybiBhIFJl
ZlB0ci4KKyAgICAgICAgKiB3dGYvZ29iamVjdC9HUmVmUHRyLmNwcDogCisgICAgICAgIChXVEY6
OnJlZkdQdHIpOiBNb3ZlZCBmcm9tIFBsYXRmb3JtUmVmUHRyIGhlcmUuCisgICAgICAgIChXVEY6
OmRlcmVmR1B0cik6IERpdHRvLgorICAgICAgICAqIHd0Zi9nb2JqZWN0L0dSZWZQdHIuaDogRGl0
dG8uCisgICAgICAgIChXVEY6OkdSZWZQdHI6OkdSZWZQdHIpOiBEaXR0by4KKyAgICAgICAgKFdU
Rjo6R1JlZlB0cjo6fkdSZWZQdHIpOiBEaXR0by4KKyAgICAgICAgKFdURjo6R1JlZlB0cjo6Y2xl
YXIpOiBEaXR0by4KKyAgICAgICAgKFdURjo6R1JlZlB0cjo6aXNIYXNoVGFibGVEZWxldGVkVmFs
dWUpOiBEaXR0by4KKyAgICAgICAgKFdURjo6R1JlZlB0cjo6Z2V0KTogRGl0dG8uCisgICAgICAg
IChXVEY6OkdSZWZQdHI6Om9wZXJhdG9yKik6IERpdHRvLgorICAgICAgICAoV1RGOjpHUmVmUHRy
OjpvcGVyYXRvci0+KTogRGl0dG8uCisgICAgICAgIChXVEY6OkdSZWZQdHI6Om9wZXJhdG9yISk6
IERpdHRvLgorICAgICAgICAoV1RGOjpHUmVmUHRyOjpvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xU
eXBlKTogRGl0dG8uCisgICAgICAgIChXVEY6OkdSZWZQdHI6Omhhc2hUYWJsZURlbGV0ZWRWYWx1
ZSk6IERpdHRvLgorICAgICAgICAoV1RGOjo6Om9wZXJhdG9yKTogRGl0dG8uCisgICAgICAgIChX
VEY6Ojo6c3dhcCk6IERpdHRvLgorICAgICAgICAoV1RGOjpzd2FwKTogRGl0dG8uCisgICAgICAg
IChXVEY6Om9wZXJhdG9yPT0pOiBEaXR0by4KKyAgICAgICAgKFdURjo6b3BlcmF0b3IhPSk6IERp
dHRvLgorICAgICAgICAoV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0KTogRGl0dG8uCisgICAgICAg
IChXVEY6OmNvbnN0X3BvaW50ZXJfY2FzdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpnZXRQdHIp
OiBEaXR0by4KKyAgICAgICAgKFdURjo6YWRvcHRHUmVmKTogRGl0dG8uCisgICAgICAgIChXVEY6
OnJlZkdQdHIpOiBEaXR0by4KKyAgICAgICAgKFdURjo6ZGVyZWZHUHRyKTogRGl0dG8uCisKIDIw
MTEtMDEtMDIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJi
ZXItc3RhbXBlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggMWM0ZDM4MGI3ZjlmOWYwZGJlMDdhNDdhY2M1ZjA4YzU1MTFmZTk1ZC4uNWFmY2E3
OTk2ODEwZTAzMmM3YTYxNzIxNWIwNjcyNmRiNzhmNWYxZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5hbQpAQCAtNDg2LDcgKzQ4Niw2IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFzc093blB0ci5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NSZWZQdHIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9QbGF0Zm9ybS5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtUmVm
UHRyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUG9zc2libHlOdWxsLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagppbmRleCAw
MWMwNDUzMzE0Yjg3OTg2ZDlmM2M5MTM1MjAyYWUxOGUxODQ1YjQ0Li44ZjM0NTAzMDNlNTBkNWVl
NGZjZmQ2ZWVmOGZkMGUxMjA3ZTAyMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKQEAgLTczNywx
MCArNzM3LDYgQEAKIAkJCT4KIAkJPC9GaWxlPgogCQk8RmlsZQotCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlx3dGZcUGxhdGZvcm1SZWZQdHIuaCIKLQkJCT4KLQkJPC9GaWxlPgotCQk8RmlsZQogCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcUG9zc2libHlOdWxsLmgiCiAJCQk+CiAJCTwvRmlsZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKaW5k
ZXggNDU4MGE2Nzg5ODEyOWI0ODY2NzYxNzU5YTVkZmNhN2Q5NzQ4Y2FhOC4uZDQ1ZjI5NDg5MGYz
NWVhYjQ0YzkwN2U0Y2E1N2ZmOTlkNDM0NGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKQEAgLTMwNiw3ICszMDYsNyBAQCBwdWJsaWM6
CiAjZWxpZiBQTEFURk9STShCUkVXTVApCiAgICAgc3RhdGljIHZvaWQgY2FjaGVGbHVzaCh2b2lk
KiBjb2RlLCBzaXplX3Qgc2l6ZSkKICAgICB7Ci0gICAgICAgIFBsYXRmb3JtUmVmUHRyPElNZW1D
YWNoZTE+IG1lbUNhY2hlID0gY3JlYXRlUmVmUHRySW5zdGFuY2U8SU1lbUNhY2hlMT4oQUVFQ0xT
SURfTWVtQ2FjaGUxKTsKKyAgICAgICAgUmVmUHRyPElNZW1DYWNoZTE+IG1lbUNhY2hlID0gY3Jl
YXRlUmVmUHRySW5zdGFuY2U8SU1lbUNhY2hlMT4oQUVFQ0xTSURfTWVtQ2FjaGUxKTsKICAgICAg
ICAgSU1lbUNhY2hlMV9DbGVhckNhY2hlKG1lbUNhY2hlLmdldCgpLCByZWludGVycHJldF9jYXN0
PHVpbnQzMj4oY29kZSksIHNpemUsIE1FTVNQQUNFX0NBQ0hFX0ZMVVNILCBNRU1TUEFDRV9EQVRB
Q0FDSEUpOwogICAgICAgICBJTWVtQ2FjaGUxX0NsZWFyQ2FjaGUobWVtQ2FjaGUuZ2V0KCksIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyPihjb2RlKSwgc2l6ZSwgTUVNU1BBQ0VfQ0FDSEVfSU5WQUxJ
REFURSwgTUVNU1BBQ0VfSU5TVENBQ0hFKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtUmVmUHRyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtUmVmUHRyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0ZjEz
MTRiZDVjMDVhNDQ3NTM3NTkzOGJiZTA4ODEyZTE1YzMwYWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybVJlZlB0ci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjA1ICswLDAgQEAKLS8qCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDkgTWFydGluIFJvYmluc29uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFBs
YXRmb3JtUmVmUHRyX2gKLSNkZWZpbmUgUGxhdGZvcm1SZWZQdHJfaAotCi0jaW5jbHVkZSAiQWx3
YXlzSW5saW5lLmgiCi0jaW5jbHVkZSAiUmVmUHRyLmgiCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgot
Ci1uYW1lc3BhY2UgV1RGIHsKLQotZW51bSBQbGF0Zm9ybVJlZlB0ckFkb3B0VHlwZSB7IFBsYXRm
b3JtUmVmUHRyQWRvcHQgfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogcmVmUGxh
dGZvcm1QdHIoVCopOwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGRlcmVmUGxh
dGZvcm1QdHIoVCopOwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFBsYXRmb3JtUmVmUHRy
OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFBsYXRmb3JtUmVmUHRyPFQ+IGFkb3B0UGxhdGZvcm1S
ZWYoVCopOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGxhdGZvcm1SZWZQdHIgewot
cHVibGljOgotICAgIFBsYXRmb3JtUmVmUHRyKCkgOiBtX3B0cigwKSB7IH0KLQotICAgIFBsYXRm
b3JtUmVmUHRyKFQqIHB0cikKLSAgICAgICAgOiBtX3B0cihwdHIpCi0gICAgewotICAgICAgICBp
ZiAocHRyKQotICAgICAgICAgICAgcmVmUGxhdGZvcm1QdHIocHRyKTsKLSAgICB9Ci0KLSAgICBQ
bGF0Zm9ybVJlZlB0cihjb25zdCBQbGF0Zm9ybVJlZlB0ciYgbykKLSAgICAgICAgOiBtX3B0cihv
Lm1fcHRyKQotICAgIHsKLSAgICAgICAgaWYgKFQqIHB0ciA9IG1fcHRyKQotICAgICAgICAgICAg
cmVmUGxhdGZvcm1QdHIocHRyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4g
UGxhdGZvcm1SZWZQdHIoY29uc3QgUGxhdGZvcm1SZWZQdHI8VT4mIG8pCi0gICAgICAgIDogbV9w
dHIoby5nZXQoKSkKLSAgICB7Ci0gICAgICAgIGlmIChUKiBwdHIgPSBtX3B0cikKLSAgICAgICAg
ICAgIHJlZlBsYXRmb3JtUHRyKHB0cik7Ci0gICAgfQotCi0gICAgflBsYXRmb3JtUmVmUHRyKCkK
LSAgICB7Ci0gICAgICAgIGlmIChUKiBwdHIgPSBtX3B0cikKLSAgICAgICAgICAgIGRlcmVmUGxh
dGZvcm1QdHIocHRyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAg
IFQqIHB0ciA9IG1fcHRyOwotICAgICAgICBtX3B0ciA9IDA7Ci0gICAgICAgIGlmIChwdHIpCi0g
ICAgICAgICAgICBkZXJlZlBsYXRmb3JtUHRyKHB0cik7Ci0gICAgfQotCi0gICAgVCogbGVha1Jl
ZigpIFdBUk5fVU5VU0VEX1JFVFVSTgotICAgIHsKLSAgICAgICAgVCogcHRyID0gbV9wdHI7Ci0g
ICAgICAgIG1fcHRyID0gMDsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAgICAvLyBI
YXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWVzLCB3aGljaCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQg
bmV2ZXIgY29waWVkIG9yIGRlc3Ryb3llZC4KLSAgICBQbGF0Zm9ybVJlZlB0cihIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKSA6IG1fcHRyKGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKSB7IH0KLSAg
ICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0g
aGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KLQotICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJu
IG1fcHRyOyB9Ci0gICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKm1fcHRyOyB9Ci0g
ICAgQUxXQVlTX0lOTElORSBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0K
LQotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcHRyOyB9Ci0KLSAgICAv
LyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8g
Ym9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCi0gICAgdHlwZWRlZiBUKiBQbGF0
Zm9ybVJlZlB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGU7Ci0gICAgb3BlcmF0b3IgVW5zcGVjaWZp
ZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJlBsYXRmb3JtUmVmUHRyOjptX3B0
ciA6IDA7IH0KLQotICAgIFBsYXRmb3JtUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGxhdGZvcm1S
ZWZQdHImKTsKLSAgICBQbGF0Zm9ybVJlZlB0ciYgb3BlcmF0b3I9KFQqKTsKLSAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVT4gUGxhdGZvcm1SZWZQdHImIG9wZXJhdG9yPShjb25zdCBQbGF0Zm9ybVJl
ZlB0cjxVPiYpOwotCi0gICAgdm9pZCBzd2FwKFBsYXRmb3JtUmVmUHRyJik7Ci0gICAgZnJpZW5k
IFBsYXRmb3JtUmVmUHRyIGFkb3B0UGxhdGZvcm1SZWY8VD4oVCopOwotCi1wcml2YXRlOgotICAg
IHN0YXRpYyBUKiBoYXNoVGFibGVEZWxldGVkVmFsdWUoKSB7IHJldHVybiByZWludGVycHJldF9j
YXN0PFQqPigtMSk7IH0KLSAgICAvLyBBZG9wdGluZyBjb25zdHJ1Y3Rvci4KLSAgICBQbGF0Zm9y
bVJlZlB0cihUKiBwdHIsIFBsYXRmb3JtUmVmUHRyQWRvcHRUeXBlKSA6IG1fcHRyKHB0cikge30K
LQotICAgIFQqIG1fcHRyOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBQbGF0
Zm9ybVJlZlB0cjxUPiYgUGxhdGZvcm1SZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBQbGF0Zm9y
bVJlZlB0cjxUPiYgbykKLXsKLSAgICBUKiBvcHRyID0gby5nZXQoKTsKLSAgICBpZiAob3B0cikK
LSAgICAgICAgcmVmUGxhdGZvcm1QdHIob3B0cik7Ci0gICAgVCogcHRyID0gbV9wdHI7Ci0gICAg
bV9wdHIgPSBvcHRyOwotICAgIGlmIChwdHIpCi0gICAgICAgIGRlcmVmUGxhdGZvcm1QdHIocHRy
KTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
UGxhdGZvcm1SZWZQdHI8VD4mIFBsYXRmb3JtUmVmUHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikK
LXsKLSAgICBUKiBwdHIgPSBtX3B0cjsKLSAgICBpZiAob3B0cikKLSAgICAgICAgcmVmUGxhdGZv
cm1QdHIob3B0cik7Ci0gICAgbV9wdHIgPSBvcHRyOwotICAgIGlmIChwdHIpCi0gICAgICAgIGRl
cmVmUGxhdGZvcm1QdHIocHRyKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDxj
bGFzcyBUPiBpbmxpbmUgdm9pZCBQbGF0Zm9ybVJlZlB0cjxUPjo6c3dhcChQbGF0Zm9ybVJlZlB0
cjxUPiYgbykKLXsKLSAgICBzdGQ6OnN3YXAobV9wdHIsIG8ubV9wdHIpOwotfQotCi10ZW1wbGF0
ZSA8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChQbGF0Zm9ybVJlZlB0cjxUPiYgYSwgUGxhdGZv
cm1SZWZQdHI8VD4mIGIpCi17Ci0gICAgYS5zd2FwKGIpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQbGF0Zm9ybVJl
ZlB0cjxUPiYgYSwgY29uc3QgUGxhdGZvcm1SZWZQdHI8VT4mIGIpCi17Ci0gICAgcmV0dXJuIGEu
Z2V0KCkgPT0gYi5nZXQoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGxhdGZvcm1SZWZQdHI8VD4mIGEsIFUqIGIp
Ci17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgPT0gYjsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwgY29uc3QgUGxhdGZvcm1S
ZWZQdHI8VT4mIGIpCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUGxh
dGZvcm1SZWZQdHI8VD4mIGEsIGNvbnN0IFBsYXRmb3JtUmVmUHRyPFU+JiBiKQotewotICAgIHJl
dHVybiBhLmdldCgpICE9IGIuZ2V0KCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBsYXRmb3JtUmVmUHRyPFQ+JiBh
LCBVKiBiKQotewotICAgIHJldHVybiBhLmdldCgpICE9IGI7Ci19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IFBs
YXRmb3JtUmVmUHRyPFU+JiBiKQotewotICAgIHJldHVybiBhICE9IGIuZ2V0KCk7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgUGxhdGZvcm1SZWZQdHI8VD4g
c3RhdGljX3BvaW50ZXJfY2FzdChjb25zdCBQbGF0Zm9ybVJlZlB0cjxVPiYgcCkKLXsKLSAgICBy
ZXR1cm4gUGxhdGZvcm1SZWZQdHI8VD4oc3RhdGljX2Nhc3Q8VCo+KHAuZ2V0KCkpKTsKLX0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBQbGF0Zm9ybVJlZlB0cjxU
PiBjb25zdF9wb2ludGVyX2Nhc3QoY29uc3QgUGxhdGZvcm1SZWZQdHI8VT4mIHApCi17Ci0gICAg
cmV0dXJuIFBsYXRmb3JtUmVmUHRyPFQ+KGNvbnN0X2Nhc3Q8VCo+KHAuZ2V0KCkpKTsKLX0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHIoY29uc3QgUGxhdGZvcm1SZWZQ
dHI8VD4mIHApCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBQbGF0Zm9ybVJlZlB0cjxUPiBhZG9wdFBsYXRmb3JtUmVmKFQqIHApCi17Ci0gICAgcmV0
dXJuIFBsYXRmb3JtUmVmUHRyPFQ+KHAsIFBsYXRmb3JtUmVmUHRyQWRvcHQpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpQbGF0Zm9ybVJlZlB0cjsKLXVzaW5nIFdURjo6
cmVmUGxhdGZvcm1QdHI7Ci11c2luZyBXVEY6OmRlcmVmUGxhdGZvcm1QdHI7Ci11c2luZyBXVEY6
OmFkb3B0UGxhdGZvcm1SZWY7Ci11c2luZyBXVEY6OnN0YXRpY19wb2ludGVyX2Nhc3Q7Ci11c2lu
ZyBXVEY6OmNvbnN0X3BvaW50ZXJfY2FzdDsKLQotI2VuZGlmIC8vIFBsYXRmb3JtUmVmUHRyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmNwcAppbmRleCA3YTliNmE4
YmM4YTFlMzk5ODNiZWMwNGMzZWQ0YWZkYWY3ZDQxZThmLi4wYzQ1NDE2NWZlZDhhNGRmYThiNGM1
Y2Y1ODMxYjk3ZTEyNzE5YjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1JhbmRvbU51bWJlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21O
dW1iZXIuY3BwCkBAIC05OSw3ICs5OSw3IEBAIGRvdWJsZSByYW5kb21OdW1iZXIoKQogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGZ1bGxSYW5kb20pL3N0YXRpY19jYXN0PGRvdWJsZT4o
MUxMIDw8IDUzKTsKICNlbGlmIFBMQVRGT1JNKEJSRVdNUCkKICAgICB1aW50MzJfdCBiaXRzOwot
ICAgIFBsYXRmb3JtUmVmUHRyPElTb3VyY2U+IHJhbmRvbVNvdXJjZSA9IGNyZWF0ZVJlZlB0cklu
c3RhbmNlPElTb3VyY2U+KEFFRUNMU0lEX1JBTkRPTSk7CisgICAgUmVmUHRyPElTb3VyY2U+IHJh
bmRvbVNvdXJjZSA9IGNyZWF0ZVJlZlB0ckluc3RhbmNlPElTb3VyY2U+KEFFRUNMU0lEX1JBTkRP
TSk7CiAgICAgSVNPVVJDRV9SZWFkKHJhbmRvbVNvdXJjZS5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oJmJpdHMpLCA0KTsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGJp
dHMpIC8gKHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46
Om1heCgpKSArIDEuMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2Jy
ZXcvUmVmUHRyQnJldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9icmV3L1JlZlB0ckJy
ZXcuaAppbmRleCA3ZmIwYjdjZWM3ZjVjZGM1YzNjMzFkYWE0MmFhZTVmM2I5YmNiNDQ5Li40MGUy
NTdiMDRlMDlhNzZlZGMzNjZjYjNmYjJlMzJjYWFiMDFjMjk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL2JyZXcvUmVmUHRyQnJldy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvYnJldy9SZWZQdHJCcmV3LmgKQEAgLTI0LDI4ICsyNCwzNCBAQAogI2lmbmRl
ZiBSZWZQdHJCcmV3X2gKICNkZWZpbmUgUmVmUHRyQnJld19oCiAKLSNpbmNsdWRlICJBbHdheXNJ
bmxpbmUuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVJlZlB0ci5oIgorI2luY2x1ZGUgIlJlZlB0ci5o
IgogI2luY2x1ZGUgPEFFRUlCYXNlLmg+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgogCiBuYW1lc3Bh
Y2UgV1RGIHsKIAogLy8gQWxsIEJyZXcgTVAgY2xhc3NlcyBhcmUgZGVyaXZlZCBmcm9tIGVpdGhl
ciBJQmFzZSBvciBJUUkuCi0vLyBUZWNobmljYWxseSwgSUJhc2UgYW5kIElRSSBhcmUgZGlmZmVy
ZW50IHR5cGVzLiBIb3dldmVyLCBpdCBpcwotLy8gb2theSB0byBjYXN0IGJvdGggdHlwZXMgdG8g
SUJhc2UgYmVjYXVzZSB0aGV5IGhhdmUgQWRkUmVmIGFuZCBSZWxlYXNlCi0vLyBpbiB0aGUgc2Ft
ZSBtZXRob2QgdnRhYmxlIHNsb3RzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBy
ZWZQbGF0Zm9ybVB0cihUKiBwdHIpCit0ZW1wbGF0ZTw+IHZvaWQgcmVmSWZOb3ROdWxsKElCYXNl
KiBwdHIpCiB7Ci0gICAgaWYgKHB0cikKLSAgICAgICAgSUJhc2VfQWRkUmVmKHJlaW50ZXJwcmV0
X2Nhc3Q8SUJhc2UqPihwdHIpKTsKLSAgICByZXR1cm4gcHRyOworICAgIGlmIChMSUtFTFkocHRy
ICE9IDApKQorICAgICAgICBJQmFzZV9BZGRSZWYocHRyKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGlubGluZSB2b2lkIGRlcmVmUGxhdGZvcm1QdHIoVCogcHRyKQordGVtcGxhdGU8PiB2
b2lkIGRlcmVmSWZOb3ROdWxsKElCYXNlKiBwdHIpCiB7Ci0gICAgaWYgKHB0cikKLSAgICAgICAg
SUJhc2VfUmVsZWFzZShyZWludGVycHJldF9jYXN0PElCYXNlKj4ocHRyKSk7CisgICAgaWYgKExJ
S0VMWShwdHIgIT0gMCkpCisgICAgICAgIElCYXNlX1JlbGVhc2UocHRyKTsKK30KKwordGVtcGxh
dGU8PiB2b2lkIHJlZklmTm90TnVsbChJUUkqIHB0cikKK3sKKyAgICBpZiAoTElLRUxZKHB0ciAh
PSAwKSkKKyAgICAgICAgSVFJX0FkZFJlZihwdHIpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgZGVy
ZWZJZk5vdE51bGwoSVFJKiBwdHIpCit7CisgICAgaWYgKExJS0VMWShwdHIgIT0gMCkpCisgICAg
ICAgIElRSV9SZWxlYXNlKHB0cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9icmV3L1NoZWxsQnJldy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9icmV3L1NoZWxsQnJldy5oCmluZGV4IGZhY2NjNzUxZDU3YjJmMTdj
M2E4MzhjOTcxN2FiNzEyNTkyNjEzYzIuLjgwNDc2MzE0YzBmODQ3MWJkMjc4MmEwZDE4OWZkNzVj
NWQyN2IyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvYnJldy9TaGVs
bEJyZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2JyZXcvU2hlbGxCcmV3LmgK
QEAgLTM0LDcgKzM0LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm1SZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC01MSw3ICs1MSw3
IEBAIHN0YXRpYyBpbmxpbmUgUGFzc093blB0cjxUPiBjcmVhdGVJbnN0YW5jZShBRUVDTFNJRCBj
bHMpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RhdGljIGlubGluZSBQbGF0Zm9ybVJl
ZlB0cjxUPiBjcmVhdGVSZWZQdHJJbnN0YW5jZShBRUVDTFNJRCBjbHMpCitzdGF0aWMgaW5saW5l
IFJlZlB0cjxUPiBjcmVhdGVSZWZQdHJJbnN0YW5jZShBRUVDTFNJRCBjbHMpCiB7CiAgICAgVCog
aW5zdGFuY2UgPSAwOwogCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBpbmxpbmUgUGxhdGZvcm1S
ZWZQdHI8VD4gY3JlYXRlUmVmUHRySW5zdGFuY2UoQUVFQ0xTSUQgY2xzKQogICAgIElTSEVMTF9D
cmVhdGVJbnN0YW5jZShzaGVsbCwgY2xzLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmluc3Rh
bmNlKSk7CiAgICAgQVNTRVJUKGluc3RhbmNlKTsKIAotICAgIHJldHVybiBhZG9wdFBsYXRmb3Jt
UmVmKGluc3RhbmNlKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoaW5zdGFuY2UpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZ29i
amVjdC9HUmVmUHRyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZ29iamVjdC9HUmVm
UHRyLmNwcAppbmRleCAwODU2ODRlNDIzYmU1MzE3YjBmYzZjOGYwMzkwNWViMDdkNTZhNjRlLi4x
Y2QyMmM1MzJiNjc0ZDkwMmViZDVjMzA4YzBiYjRhZWFlZjUwMjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR1JlZlB0ci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dSZWZQdHIuY3BwCkBAIC0yNSwyNyArMjUsMjcgQEAK
IAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlIDw+IEdIYXNoVGFibGUqIHJlZlBsYXRmb3Jt
UHRyKEdIYXNoVGFibGUqIHB0cikKK3RlbXBsYXRlIDw+IEdIYXNoVGFibGUqIHJlZkdQdHIoR0hh
c2hUYWJsZSogcHRyKQogewogICAgIGlmIChwdHIpCiAgICAgICAgIGdfaGFzaF90YWJsZV9yZWYo
cHRyKTsKICAgICByZXR1cm4gcHRyOwogfQogCi10ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmUGxhdGZv
cm1QdHIoR0hhc2hUYWJsZSogcHRyKQordGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoR0hhc2hU
YWJsZSogcHRyKQogewogICAgIGdfaGFzaF90YWJsZV91bnJlZihwdHIpOwogfQogCiAjaWYgR0xJ
Ql9DSEVDS19WRVJTSU9OKDIsIDI0LCAwKQotdGVtcGxhdGUgPD4gR1ZhcmlhbnQqIHJlZlBsYXRm
b3JtUHRyKEdWYXJpYW50KiBwdHIpCit0ZW1wbGF0ZSA8PiBHVmFyaWFudCogcmVmR1B0cihHVmFy
aWFudCogcHRyKQogewogICAgIGlmIChwdHIpCiAgICAgICAgIGdfdmFyaWFudF9yZWYocHRyKTsK
ICAgICByZXR1cm4gcHRyOwogfQogCi10ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmUGxhdGZvcm1QdHIo
R1ZhcmlhbnQqIHB0cikKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdWYXJpYW50KiBwdHIp
CiB7CiAgICAgZ192YXJpYW50X3VucmVmKHB0cik7CiB9CkBAIC01NywyNSArNTcsMjUgQEAgdHlw
ZWRlZiBzdHJ1Y3QgX0dWYXJpYW50IHsKICAgICBib29sIGZha2U7CiB9IEdWYXJpYW50OyAKIAot
dGVtcGxhdGUgPD4gR1ZhcmlhbnQqIHJlZlBsYXRmb3JtUHRyKEdWYXJpYW50KiBwdHIpCit0ZW1w
bGF0ZSA8PiBHVmFyaWFudCogcmVmR1B0cihHVmFyaWFudCogcHRyKQogewogICAgIHJldHVybiBw
dHI7CiB9CiAKLXRlbXBsYXRlIDw+IHZvaWQgZGVyZWZQbGF0Zm9ybVB0cihHVmFyaWFudCogcHRy
KQordGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoR1ZhcmlhbnQqIHB0cikKIHsKIH0KIAogI2Vu
ZGlmCiAKLXRlbXBsYXRlIDw+IEdTb3VyY2UqIHJlZlBsYXRmb3JtUHRyKEdTb3VyY2UqIHB0cikK
K3RlbXBsYXRlIDw+IEdTb3VyY2UqIHJlZkdQdHIoR1NvdXJjZSogcHRyKQogewogICAgIGlmIChw
dHIpCiAgICAgICAgIGdfc291cmNlX3JlZihwdHIpOwogICAgIHJldHVybiBwdHI7CiB9CiAKLXRl
bXBsYXRlIDw+IHZvaWQgZGVyZWZQbGF0Zm9ybVB0cihHU291cmNlKiBwdHIpCit0ZW1wbGF0ZSA8
PiB2b2lkIGRlcmVmR1B0cihHU291cmNlKiBwdHIpCiB7CiAgICAgaWYgKHB0cikKICAgICAgICAg
Z19zb3VyY2VfdW5yZWYocHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvZ29iamVjdC9HUmVmUHRyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3Qv
R1JlZlB0ci5oCmluZGV4IDRlZmQ5YmVjMzZkZWE0NmU5OGFmMjY5NzE1ZGM3NmE5OGI0ZmZhZjku
LjEwZWJmMDc1M2RlYTliOWJkNTBjMjc3OWU3NTUxZjFhMWE1NmM0MzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZ29iamVjdC9HUmVmUHRyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaApAQCAtMjYsNyArMjYsOCBAQAogI2lm
IEVOQUJMRShHTElCX1NVUFBPUlQpCiAKICNpbmNsdWRlICJBbHdheXNJbmxpbmUuaCIKLSNpbmNs
dWRlICJQbGF0Zm9ybVJlZlB0ci5oIgorI2luY2x1ZGUgIkdSZWZQdHIuaCIKKyNpbmNsdWRlICJS
ZWZQdHIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKIGV4dGVybiAiQyIgdm9pZCBnX29iamVj
dF91bnJlZihncG9pbnRlcik7CkBAIC0zNCwyMSArMzUsMTg1IEBAIGV4dGVybiAiQyIgZ3BvaW50
ZXIgZ19vYmplY3RfcmVmX3NpbmsoZ3BvaW50ZXIpOwogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVt
cGxhdGUgPD4gR0hhc2hUYWJsZSogcmVmUGxhdGZvcm1QdHIoR0hhc2hUYWJsZSogcHRyKTsKLXRl
bXBsYXRlIDw+IHZvaWQgZGVyZWZQbGF0Zm9ybVB0cihHSGFzaFRhYmxlKiBwdHIpOwotdGVtcGxh
dGUgPD4gR1ZhcmlhbnQqIHJlZlBsYXRmb3JtUHRyKEdWYXJpYW50KiBwdHIpOwotdGVtcGxhdGUg
PD4gdm9pZCBkZXJlZlBsYXRmb3JtUHRyKEdWYXJpYW50KiBwdHIpOwotdGVtcGxhdGUgPD4gR1Nv
dXJjZSogcmVmUGxhdGZvcm1QdHIoR1NvdXJjZSogcHRyKTsKLXRlbXBsYXRlIDw+IHZvaWQgZGVy
ZWZQbGF0Zm9ybVB0cihHU291cmNlKiBwdHIpOworZW51bSBHUmVmUHRyQWRvcHRUeXBlIHsgR1Jl
ZlB0ckFkb3B0IH07Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQqIHJlZkdQdHIoVCop
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGRlcmVmR1B0cihUKik7Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgR1JlZlB0cjsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBH
UmVmUHRyPFQ+IGFkb3B0R1JlZihUKik7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
VCogcmVmUGxhdGZvcm1QdHIoVCogcHRyKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEdS
ZWZQdHIgeworcHVibGljOgorICAgIEdSZWZQdHIoKSA6IG1fcHRyKDApIHsgfQorCisgICAgR1Jl
ZlB0cihUKiBwdHIpCisgICAgICAgIDogbV9wdHIocHRyKQorICAgIHsKKyAgICAgICAgaWYgKHB0
cikKKyAgICAgICAgICAgIHJlZkdQdHIocHRyKTsKKyAgICB9CisKKyAgICBHUmVmUHRyKGNvbnN0
IEdSZWZQdHImIG8pCisgICAgICAgIDogbV9wdHIoby5tX3B0cikKKyAgICB7CisgICAgICAgIGlm
IChUKiBwdHIgPSBtX3B0cikKKyAgICAgICAgICAgIHJlZkdQdHIocHRyKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gR1JlZlB0cihjb25zdCBHUmVmUHRyPFU+JiBvKQorICAg
ICAgICA6IG1fcHRyKG8uZ2V0KCkpCisgICAgeworICAgICAgICBpZiAoVCogcHRyID0gbV9wdHIp
CisgICAgICAgICAgICByZWZHUHRyKHB0cik7CisgICAgfQorCisgICAgfkdSZWZQdHIoKQorICAg
IHsKKyAgICAgICAgaWYgKFQqIHB0ciA9IG1fcHRyKQorICAgICAgICAgICAgZGVyZWZHUHRyKHB0
cik7CisgICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBUKiBwdHIgPSBt
X3B0cjsKKyAgICAgICAgbV9wdHIgPSAwOworICAgICAgICBpZiAocHRyKQorICAgICAgICAgICAg
ZGVyZWZHUHRyKHB0cik7CisgICAgfQorCisgICAgVCogbGVha1JlZigpIFdBUk5fVU5VU0VEX1JF
VFVSTgorICAgIHsKKyAgICAgICAgVCogcHRyID0gbV9wdHI7CisgICAgICAgIG1fcHRyID0gMDsK
KyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICAvLyBIYXNoIHRhYmxlIGRlbGV0ZWQg
dmFsdWVzLCB3aGljaCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVkIG9yIGRl
c3Ryb3llZC4KKyAgICBHUmVmUHRyKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9wdHIo
aGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpIHsgfQorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUoKTsg
fQorCisgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KKyAgICBUJiBvcGVyYXRv
ciooKSBjb25zdCB7IHJldHVybiAqbV9wdHI7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFQqIG9wZXJh
dG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQorCisgICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdCB7IHJldHVybiAhbV9wdHI7IH0KKworICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRv
ciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50
ZWdlciB0eXBlcy4KKyAgICB0eXBlZGVmIFQqIEdSZWZQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBl
OworICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3B0
ciA/ICZHUmVmUHRyOjptX3B0ciA6IDA7IH0KKworICAgIEdSZWZQdHImIG9wZXJhdG9yPShjb25z
dCBHUmVmUHRyJik7CisgICAgR1JlZlB0ciYgb3BlcmF0b3I9KFQqKTsKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVT4gR1JlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IEdSZWZQdHI8VT4mKTsKKworICAg
IHZvaWQgc3dhcChHUmVmUHRyJik7CisgICAgZnJpZW5kIEdSZWZQdHIgYWRvcHRHUmVmPFQ+KFQq
KTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgVCogaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oLTEpOyB9CisgICAgLy8gQWRvcHRpbmcgY29uc3Ry
dWN0b3IuCisgICAgR1JlZlB0cihUKiBwdHIsIEdSZWZQdHJBZG9wdFR5cGUpIDogbV9wdHIocHRy
KSB7fQorCisgICAgVCogbV9wdHI7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5l
IEdSZWZQdHI8VD4mIEdSZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBHUmVmUHRyPFQ+JiBvKQor
eworICAgIFQqIG9wdHIgPSBvLmdldCgpOworICAgIGlmIChvcHRyKQorICAgICAgICByZWZHUHRy
KG9wdHIpOworICAgIFQqIHB0ciA9IG1fcHRyOworICAgIG1fcHRyID0gb3B0cjsKKyAgICBpZiAo
cHRyKQorICAgICAgICBkZXJlZkdQdHIocHRyKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgR1JlZlB0cjxUPiYgR1JlZlB0cjxUPjo6b3BlcmF0
b3I9KFQqIG9wdHIpCit7CisgICAgVCogcHRyID0gbV9wdHI7CisgICAgaWYgKG9wdHIpCisgICAg
ICAgIHJlZkdQdHIob3B0cik7CisgICAgbV9wdHIgPSBvcHRyOworICAgIGlmIChwdHIpCisgICAg
ICAgIGRlcmVmR1B0cihwdHIpOworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGUgPGNs
YXNzIFQ+IGlubGluZSB2b2lkIEdSZWZQdHI8VD46OnN3YXAoR1JlZlB0cjxUPiYgbykKK3sKKyAg
ICBzdGQ6OnN3YXAobV9wdHIsIG8ubV9wdHIpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5s
aW5lIHZvaWQgc3dhcChHUmVmUHRyPFQ+JiBhLCBHUmVmUHRyPFQ+JiBiKQoreworICAgIGEuc3dh
cChiKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgR1JlZlB0cjxUPiYgYSwgY29uc3QgR1JlZlB0cjxVPiYgYikKK3sK
KyAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHUmVmUHRyPFQ+JiBh
LCBVKiBiKQoreworICAgIHJldHVybiBhLmdldCgpID09IGI7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IEdS
ZWZQdHI8VT4mIGIpCit7CisgICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgR1Jl
ZlB0cjxUPiYgYSwgY29uc3QgR1JlZlB0cjxVPiYgYikKK3sKKyAgICByZXR1cm4gYS5nZXQoKSAh
PSBiLmdldCgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBHUmVmUHRyPFQ+JiBhLCBVKiBiKQoreworICAgIHJldHVy
biBhLmdldCgpICE9IGI7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IEdSZWZQdHI8VT4mIGIpCit7CisgICAg
cmV0dXJuIGEgIT0gYi5nZXQoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBHUmVmUHRyPFQ+IHN0YXRpY19wb2ludGVyX2Nhc3QoY29uc3QgR1JlZlB0cjxV
PiYgcCkKK3sKKyAgICByZXR1cm4gR1JlZlB0cjxUPihzdGF0aWNfY2FzdDxUKj4ocC5nZXQoKSkp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIEdSZWZQdHI8
VD4gY29uc3RfcG9pbnRlcl9jYXN0KGNvbnN0IEdSZWZQdHI8VT4mIHApCit7CisgICAgcmV0dXJu
IEdSZWZQdHI8VD4oY29uc3RfY2FzdDxUKj4ocC5nZXQoKSkpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gaW5saW5lIFQqIGdldFB0cihjb25zdCBHUmVmUHRyPFQ+JiBwKQoreworICAgIHJl
dHVybiBwLmdldCgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gR1JlZlB0cjxUPiBhZG9w
dEdSZWYoVCogcCkKK3sKKyAgICByZXR1cm4gR1JlZlB0cjxUPihwLCBHUmVmUHRyQWRvcHQpOwor
fQorCit0ZW1wbGF0ZSA8PiBHSGFzaFRhYmxlKiByZWZHUHRyKEdIYXNoVGFibGUqIHB0cik7Cit0
ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHSGFzaFRhYmxlKiBwdHIpOwordGVtcGxhdGUgPD4g
R1ZhcmlhbnQqIHJlZkdQdHIoR1ZhcmlhbnQqIHB0cik7Cit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVm
R1B0cihHVmFyaWFudCogcHRyKTsKK3RlbXBsYXRlIDw+IEdTb3VyY2UqIHJlZkdQdHIoR1NvdXJj
ZSogcHRyKTsKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdTb3VyY2UqIHB0cik7CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogcmVmR1B0cihUKiBwdHIpCiB7CiAgICAgaWYg
KHB0cikKICAgICAgICAgZ19vYmplY3RfcmVmX3NpbmsocHRyKTsKICAgICByZXR1cm4gcHRyOwog
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgZGVyZWZQbGF0Zm9ybVB0cihU
KiBwdHIpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgZGVyZWZHUHRyKFQqIHB0
cikKIHsKICAgICBpZiAocHRyKQogICAgICAgICBnX29iamVjdF91bnJlZihwdHIpOwpAQCAtNTYs
NiArMjIxLDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGRlcmVmUGxhdGZv
cm1QdHIoVCogcHRyKQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAordXNpbmcgV1RGOjpHUmVmUHRy
OwordXNpbmcgV1RGOjphZG9wdEdSZWY7CisKICNlbmRpZiAvLyBFTkFCTEUoR0xJQl9TVVBQT1JU
KQogCiAjZW5kaWYgLy8gV1RGX0dSZWZQdHJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRjMWExOTVlZjZiMzA3YmIzZTU0ZTg2OGYwODZhMGMw
YzBkYzU5ZjQuLjUyYjNmZGM4ZjlmNmJhMmRiNzg0NjYwMjZmZTRhZTQwYTk0Zjc0OTIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMS0wMS0wMyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3Zl
IHRoZSBsYXN0IG5vbi1HT2JqZWN0IHVzYWdlIG9mIFBsYXRmb3JtUmVmUHRyIGFuZCBtb3ZlIHRo
ZSBjb2RlIHRvIEdSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUxODQ2CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudEd0ay5jcHA6IENoYW5nZSB1c2FnZSBvZiBQbGF0Zm9ybVJlZlB0cgorICAg
ICAgICBiYWNrIHRvIEdSZWZQdHIuCisKIDIwMTEtMDEtMDMgIEtvYW4tU2luIFRhbiAgPGtvYW5z
aW4udGFuQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0
ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0
ay5jcHAKaW5kZXggN2UxYTljMmMxNTViN2JjOWUzNjg1ZDBkMzdkNzYxNjRhZTliOWY5NS4uZmY3
NmU0YmY3OThlOGFmNDhhNjM5MjkzZTEyZjVjMjM1YTkxMGFlOSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcApAQCAt
Mzc2LDcgKzM3Niw3IEBAIHN0YXRpYyBib29sIGNoZWNrRWxlbWVudFN0YXRlKFBsYXRmb3JtVUlF
bGVtZW50IGVsZW1lbnQsIEF0a1N0YXRlVHlwZSBzdGF0ZVR5cGUpCiAgICAgaWYgKCFBVEtfSVNf
T0JKRUNUKGVsZW1lbnQpKQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUGxhdGZvcm1S
ZWZQdHI8QXRrU3RhdGVTZXQ+IHN0YXRlU2V0ID0gYWRvcHRQbGF0Zm9ybVJlZihhdGtfb2JqZWN0
X3JlZl9zdGF0ZV9zZXQoQVRLX09CSkVDVChlbGVtZW50KSkpOworICAgIEdSZWZQdHI8QXRrU3Rh
dGVTZXQ+IHN0YXRlU2V0ID0gYWRvcHRHUmVmKGF0a19vYmplY3RfcmVmX3N0YXRlX3NldChBVEtf
T0JKRUNUKGVsZW1lbnQpKSk7CiAgICAgcmV0dXJuIGF0a19zdGF0ZV9zZXRfY29udGFpbnNfc3Rh
dGUoc3RhdGVTZXQuZ2V0KCksIHN0YXRlVHlwZSk7CiB9CiAKQEAgLTQwOCw3ICs0MDgsNyBAQCBi
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCgpIGNvbnN0CiAgICAgaWYgKCFB
VEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFBs
YXRmb3JtUmVmUHRyPEF0a1N0YXRlU2V0PiBzdGF0ZVNldCA9IGFkb3B0UGxhdGZvcm1SZWYoYXRr
X29iamVjdF9yZWZfc3RhdGVfc2V0KEFUS19PQkpFQ1QobV9lbGVtZW50KSkpOworICAgIEdSZWZQ
dHI8QXRrU3RhdGVTZXQ+IHN0YXRlU2V0ID0gYWRvcHRHUmVmKGF0a19vYmplY3RfcmVmX3N0YXRl
X3NldChBVEtfT0JKRUNUKG1fZWxlbWVudCkpKTsKICAgICBnYm9vbGVhbiBpc0ZvY3VzZWQgPSBh
dGtfc3RhdGVfc2V0X2NvbnRhaW5zX3N0YXRlKHN0YXRlU2V0LmdldCgpLCBBVEtfU1RBVEVfRk9D
VVNFRCk7CiAKICAgICByZXR1cm4gaXNGb2N1c2VkOwpAQCAtNjcwLDcgKzY3MCw3IEBAIGJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25zdAogICAgIGlmICghQVRL
X0lTX09CSkVDVChtX2VsZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBQbGF0
Zm9ybVJlZlB0cjxBdGtTdGF0ZVNldD4gc3RhdGVTZXQgPSBhZG9wdFBsYXRmb3JtUmVmKGF0a19v
YmplY3RfcmVmX3N0YXRlX3NldChBVEtfT0JKRUNUKG1fZWxlbWVudCkpKTsKKyAgICBHUmVmUHRy
PEF0a1N0YXRlU2V0PiBzdGF0ZVNldCA9IGFkb3B0R1JlZihhdGtfb2JqZWN0X3JlZl9zdGF0ZV9z
ZXQoQVRLX09CSkVDVChtX2VsZW1lbnQpKSk7CiAgICAgZ2Jvb2xlYW4gaXNGb2N1c2FibGUgPSBh
dGtfc3RhdGVfc2V0X2NvbnRhaW5zX3N0YXRlKHN0YXRlU2V0LmdldCgpLCBBVEtfU1RBVEVfRk9D
VVNBQkxFKTsKIAogICAgIHJldHVybiBpc0ZvY3VzYWJsZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWMwYTlkM2QwODBiNzI5OGU1YTJj
NGY0NTczNDUxY2EyY2I1YWYzNS4uMDVhYWQwMWI2ODk2NzYzYWFiODUwMTdlMTM2OTMwZDUwOGI4
OGJlMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMS0wMyAgTWFydGluIFJvYmluc29uICA8bXJvYmlu
c29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVtb3ZlIHRoZSBsYXN0IG5vbi1HT2JqZWN0IHVzYWdlIG9mIFBsYXRmb3JtUmVm
UHRyIGFuZCBtb3ZlIHRoZSBjb2RlIHRvIEdSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxODQ2CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBU
aGlzIHNob3VsZCBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMuCisKKyAgICAg
ICAgQ2hhbmdlZCBhbGwgcmVmZXJlbmNlcyB0byBQbGF0Zm9ybVJlZlB0ciBpbiBHVEsrIGNvZGUg
dG8gR1JlZlB0ci4gQ2hhbmdlZAorICAgICAgICBhbGwgcmVmZXJlbmNlcyB0byBQbGF0Zm9ybVJl
ZlB0ciBpbiBCcmV3IGNvZGUgdG8gUmVmUHRyLgorCiAyMDExLTAxLTAzICBNaWhhaSBQYXJwYXJp
dGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS9Db250ZXh0TWVudUl0ZW0uaAppbmRleCA2NGQ5ZTRiZTFmYjc2NTBmOGI0YTc4ZjNjMDA0NDQ5
ZTFhOGQyODMxLi5kMzM2YjFmNGJiNzljNWQ2YzI2ZWZmZDY4MDdkMTJmZDU5YmQ3ZWM0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKQEAgLTI4NSw3ICsyODUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBSZXRhaW5QdHI8TlNNZW51SXRl
bT4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOwogI2VsaWYgUExBVEZPUk0oR1RLKQotICAgICAgICBQ
bGF0Zm9ybVJlZlB0cjxHdGtNZW51SXRlbT4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOworICAgICAg
ICBHUmVmUHRyPEd0a01lbnVJdGVtPiBtX3BsYXRmb3JtRGVzY3JpcHRpb247CiAjZWxzZQogICAg
ICAgICBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9DdXJzb3IuaAppbmRleCBhOTYyYmJiZGJlYmJhMWQyNTg2OTk1MDkzNzQ3YmE0YzM0
NzkyMTE1Li4yZDE2YTliM2RiOWI5ZmZkNmVhNGNlNjBjYTczNDE0YjBhMzU3NjgwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vQ3Vy
c29yLmgKQEAgLTg2LDcgKzg2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VsaWYgUExBVEZP
Uk0oTUFDKQogICAgIHR5cGVkZWYgTlNDdXJzb3IgKlBsYXRmb3JtQ3Vyc29yOwogI2VsaWYgUExB
VEZPUk0oR1RLKQotICAgIHR5cGVkZWYgUGxhdGZvcm1SZWZQdHI8R2RrQ3Vyc29yPiBQbGF0Zm9y
bUN1cnNvcjsKKyAgICB0eXBlZGVmIEdSZWZQdHI8R2RrQ3Vyc29yPiBQbGF0Zm9ybUN1cnNvcjsK
ICNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICB0eXBlZGVmIGNvbnN0IGNoYXIqIFBsYXRmb3JtQ3Vy
c29yOwogI2VsaWYgUExBVEZPUk0oUVQpICYmICFkZWZpbmVkKFFUX05PX0NVUlNPUikKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmgKaW5kZXggNjZiNGMwOWJkYjJiZGU1NWEwNTE3MjVkMjdmM2YwZmY5MWZkZWU1
OC4uMjQ3N2Y0OTZiMTEzNTJhMDc5ZDlkMDY2YzgzMzcwNTk4YmVjZWE2NSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmgKQEAgLTM5Miw4ICszOTIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY3JvbGxP
ZmZzZXQoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KSB7IG1fc2Nyb2xsT2Zmc2V0ID0gb2Zmc2V0OyB9
CiAKIHByaXZhdGU6Ci0gICAgUGxhdGZvcm1SZWZQdHI8R3RrQWRqdXN0bWVudD4gbV9ob3Jpem9u
dGFsQWRqdXN0bWVudDsKLSAgICBQbGF0Zm9ybVJlZlB0cjxHdGtBZGp1c3RtZW50PiBtX3ZlcnRp
Y2FsQWRqdXN0bWVudDsKKyAgICBHUmVmUHRyPEd0a0FkanVzdG1lbnQ+IG1faG9yaXpvbnRhbEFk
anVzdG1lbnQ7CisgICAgR1JlZlB0cjxHdGtBZGp1c3RtZW50PiBtX3ZlcnRpY2FsQWRqdXN0bWVu
dDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV1gpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2JyZXcvRmlsZVN5c3RlbUJyZXcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0ZpbGVT
eXN0ZW1CcmV3LmNwcAppbmRleCBlMjA3YjU1MjdkOWQxMjY3YTZiOWNiY2UxM2VkZTkzNDZkNjRh
MTg3Li42MWQ1NjhkMmZkNDFmZWNlOWRhZjYzODgxNDM3YjE0ZTA1N2E1YTEwIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvRmlsZVN5c3RlbUJyZXcuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vYnJldy9GaWxlU3lzdGVtQnJldy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9u
ZyBsb25nJiByZXN1bHQpCiB7Ci0gICAgUGxhdGZvcm1SZWZQdHI8SUZpbGVNZ3I+IGZpbGVNZ3Ig
PSBjcmVhdGVSZWZQdHJJbnN0YW5jZTxJRmlsZU1ncj4oQUVFQ0xTSURfRklMRU1HUik7CisgICAg
UmVmUHRyPElGaWxlTWdyPiBmaWxlTWdyID0gY3JlYXRlUmVmUHRySW5zdGFuY2U8SUZpbGVNZ3I+
KEFFRUNMU0lEX0ZJTEVNR1IpOwogICAgIEZpbGVJbmZvIGluZm87CiAKICAgICBpZiAoSUZJTEVN
R1JfR2V0SW5mbyhmaWxlTWdyLmdldCgpLCBwYXRoLnV0ZjgoKS5kYXRhKCksICZpbmZvKSA9PSBT
VUNDRVNTKSB7CkBAIC02NiwyMSArNjYsMjEgQEAgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQogCiBib29sIGZpbGVFeGlzdHMo
Y29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIFBsYXRmb3JtUmVmUHRyPElGaWxlTWdyPiBmaWxl
TWdyID0gY3JlYXRlUmVmUHRySW5zdGFuY2U8SUZpbGVNZ3I+KEFFRUNMU0lEX0ZJTEVNR1IpOwor
ICAgIFJlZlB0cjxJRmlsZU1ncj4gZmlsZU1nciA9IGNyZWF0ZVJlZlB0ckluc3RhbmNlPElGaWxl
TWdyPihBRUVDTFNJRF9GSUxFTUdSKTsKIAogICAgIHJldHVybiAoSUZJTEVNR1JfVGVzdChmaWxl
TWdyLmdldCgpLCBwYXRoLnV0ZjgoKS5kYXRhKCkpID09IFNVQ0NFU1MpOwogfQogCiBib29sIGRl
bGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIFBsYXRmb3JtUmVmUHRyPElGaWxl
TWdyPiBmaWxlTWdyID0gY3JlYXRlUmVmUHRySW5zdGFuY2U8SUZpbGVNZ3I+KEFFRUNMU0lEX0ZJ
TEVNR1IpOworICAgIFJlZlB0cjxJRmlsZU1ncj4gZmlsZU1nciA9IGNyZWF0ZVJlZlB0ckluc3Rh
bmNlPElGaWxlTWdyPihBRUVDTFNJRF9GSUxFTUdSKTsKIAogICAgIHJldHVybiAoSUZJTEVNR1Jf
UmVtb3ZlKGZpbGVNZ3IuZ2V0KCksIHBhdGgudXRmOCgpLmRhdGEoKSkgPT0gU1VDQ0VTUyk7CiB9
CiAKIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAg
IFBsYXRmb3JtUmVmUHRyPElGaWxlTWdyPiBmaWxlTWdyID0gY3JlYXRlUmVmUHRySW5zdGFuY2U8
SUZpbGVNZ3I+KEFFRUNMU0lEX0ZJTEVNR1IpOworICAgIFJlZlB0cjxJRmlsZU1ncj4gZmlsZU1n
ciA9IGNyZWF0ZVJlZlB0ckluc3RhbmNlPElGaWxlTWdyPihBRUVDTFNJRF9GSUxFTUdSKTsKIAog
ICAgIHJldHVybiAoSUZJTEVNR1JfUm1EaXIoZmlsZU1nci5nZXQoKSwgcGF0aC51dGY4KCkuZGF0
YSgpKSA9PSBTVUNDRVNTKTsKIH0KQEAgLTEwOSw3ICsxMDksNyBAQCBDU3RyaW5nIGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCiAKIHN0YXRpYyBTdHJpbmcgY2Fu
b25pY2FsUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgUGxhdGZvcm1SZWZQdHI8SUZp
bGVNZ3I+IGZpbGVNZ3IgPSBjcmVhdGVSZWZQdHJJbnN0YW5jZTxJRmlsZU1ncj4oQUVFQ0xTSURf
RklMRU1HUik7CisgICAgUmVmUHRyPElGaWxlTWdyPiBmaWxlTWdyID0gY3JlYXRlUmVmUHRySW5z
dGFuY2U8SUZpbGVNZ3I+KEFFRUNMU0lEX0ZJTEVNR1IpOwogCiAgICAgLy8gR2V0IHRoZSBidWZm
ZXIgc2l6ZSByZXF1aXJlZCB0byByZXNvbHZlIHRoZSBwYXRoLgogICAgIGludCBjYW5vblBhdGhM
ZW47CkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKElG
aWxlTWdyKiBmaWxlTWFuYWdlciwgY29uc3QgU3RyaW5nJiBwYXRoKQogCiBib29sIG1ha2VBbGxE
aXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgUGxhdGZvcm1SZWZQdHI8SUZp
bGVNZ3I+IGZpbGVNZ3IgPSBjcmVhdGVSZWZQdHJJbnN0YW5jZTxJRmlsZU1ncj4oQUVFQ0xTSURf
RklMRU1HUik7CisgICAgUmVmUHRyPElGaWxlTWdyPiBmaWxlTWdyID0gY3JlYXRlUmVmUHRySW5z
dGFuY2U8SUZpbGVNZ3I+KEFFRUNMU0lEX0ZJTEVNR1IpOwogCiAgICAgcmV0dXJuIG1ha2VBbGxE
aXJlY3RvcmllcyhmaWxlTWdyLmdldCgpLCBjYW5vbmljYWxQYXRoKHBhdGgpKTsKIH0KQEAgLTE5
Miw3ICsxOTIsNyBAQCBDU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IGNoYXIqIHByZWZp
eCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCiAgICAgLy8gdXNlICJmczovfi90bXAiIGFz
IG91ciB0ZW1wb3JhcnkgZGlyZWN0b3J5LgogICAgIFN0cmluZyB0ZW1wUGF0aCgiZnM6L34vdG1w
Iik7CiAKLSAgICBQbGF0Zm9ybVJlZlB0cjxJRmlsZU1ncj4gZmlsZU1nciA9IGNyZWF0ZVJlZlB0
ckluc3RhbmNlPElGaWxlTWdyPihBRUVDTFNJRF9GSUxFTUdSKTsKKyAgICBSZWZQdHI8SUZpbGVN
Z3I+IGZpbGVNZ3IgPSBjcmVhdGVSZWZQdHJJbnN0YW5jZTxJRmlsZU1ncj4oQUVFQ0xTSURfRklM
RU1HUik7CiAKICAgICAvLyBDcmVhdGUgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgaWYgaXQgZG9l
cyBub3QgZXhpc3QuCiAgICAgSUZJTEVNR1JfTWtEaXIoZmlsZU1nci5nZXQoKSwgdGVtcFBhdGgu
dXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvUGxhdGZv
cm1LZXlib2FyZEV2ZW50QnJldy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvUGxhdGZvcm1L
ZXlib2FyZEV2ZW50QnJldy5jcHAKaW5kZXggZmM2YTc1MzY3ZjNlNGQwZDBkZDEyMDBlMWQ5ZDNl
MTI1YmQxYjBkMC4uYmQ0MWM5YTFjMWIzOGNhMDYyNTIxMDBlYTM2MDI5NjEzODVjNWVhNyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJyZXcu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9QbGF0Zm9ybUtleWJvYXJkRXZlbnRCcmV3
LmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1L
ZXlib2FyZEV2ZW50KEFFRUV2ZW50IGV2ZW50LCB1aW50MTYgY29kZSwgdWludDMyCiAgICAgLCBt
X3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSgodHlwZSA9PSBSYXdLZXlEb3duIHx8IHR5cGUgPT0gS2V5
VXApID8gd2luZG93c0tleUNvZGVGb3JLZXlFdmVudChjb2RlKSA6IDApCiB7CiAgICAgaWYgKCht
X3R5cGUgPT0gQ2hhcikgJiYgbW9kaWZpZXJzKSB7Ci0gICAgICAgIFBsYXRmb3JtUmVmUHRyPElL
ZXlzTWFwcGluZz4ga2V5c01hcHBpbmcgPSBjcmVhdGVSZWZQdHJJbnN0YW5jZTxJS2V5c01hcHBp
bmc+KEFFRUNMU0lEX0tleXNNYXBwaW5nKTsKKyAgICAgICAgUmVmUHRyPElLZXlzTWFwcGluZz4g
a2V5c01hcHBpbmcgPSBjcmVhdGVSZWZQdHJJbnN0YW5jZTxJS2V5c01hcHBpbmc+KEFFRUNMU0lE
X0tleXNNYXBwaW5nKTsKICAgICAgICAgaW50IHJlc3VsdCA9IElLZXlzTWFwcGluZ19HZXRNYXBw
aW5nKGtleXNNYXBwaW5nLmdldCgpLCBjb2RlLCBtb2RpZmllcnMsIHJlaW50ZXJwcmV0X2Nhc3Q8
QUVDSEFSKj4oJmNvZGUpKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBBRUVfU1VDQ0VTUykgLy8g
UmVzZXQgdGhlIG1vZGlmaWVyIHdoZW4ga2V5IGNvZGUgaXMgc3VjY2Vzc2Z1bGx5IG1hcHBlZC4K
ICAgICAgICAgICAgIG1vZGlmaWVycyA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2JyZXcvU2NyZWVuQnJldy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvU2NyZWVuQnJldy5j
cHAKaW5kZXggNTNlNTNkMGJiYjMxMzlmYTM2ZTlhMzA5M2U0MzQ1YzZiZDczNmFmNi4uNjMxNmVl
MDQ2YWJlYWJhZDIyYmI1Yjc2ZTU1YzgwMGNlMmUzM2NiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9icmV3L1NjcmVlbkJyZXcuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9T
Y3JlZW5CcmV3LmNwcApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgRGlzcGxheUluZm8gewogc3Rh
dGljIHZvaWQgZ2V0RGlzcGxheUluZm8oRGlzcGxheUluZm8mIGluZm8pCiB7CiAgICAgSURpc3Bs
YXkqIGRpc3BsYXkgPSByZWludGVycHJldF9jYXN0PEFFRUFwcGxldCo+KEdFVEFQUElOU1RBTkNF
KCkpLT5tX3BJRGlzcGxheTsKLSAgICBQbGF0Zm9ybVJlZlB0cjxJQml0bWFwPiBiaXRtYXAgPSBh
ZG9wdFBsYXRmb3JtUmVmKElEaXNwbGF5X0dldERlc3RpbmF0aW9uKGRpc3BsYXkpKTsKKyAgICBS
ZWZQdHI8SUJpdG1hcD4gYml0bWFwID0gYWRvcHRSZWYoSURpc3BsYXlfR2V0RGVzdGluYXRpb24o
ZGlzcGxheSkpOwogCiAgICAgQUVFQml0bWFwSW5mbyBiaXRtYXBJbmZvOwogICAgIElCaXRtYXBf
R2V0SW5mbyhiaXRtYXAuZ2V0KCksICZiaXRtYXBJbmZvLCBzaXplb2YoQUVFQml0bWFwSW5mbykp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJH
dGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3Bw
CmluZGV4IGNmMDQ3MGZmZmRiOWFmMjA4YzdhMDhhMjdiNmFkZWVlNjA5YTZlOTQuLjJhYTAxNmVi
NWJlYjBkNzlkYWQ0YzhkMzI2NTY1ZGRkOTQzZTBjMDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgU3Ry
aW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
ZG91YmxlKiBxdWFsaXR5KSBjb24KICAgICBpZiAodHlwZSAhPSAianBlZyIgJiYgdHlwZSAhPSAi
cG5nIiAmJiB0eXBlICE9ICJ0aWZmIiAmJiB0eXBlICE9ICJpY28iICYmIHR5cGUgIT0gImJtcCIp
CiAgICAgICAgIHJldHVybiAiZGF0YTosIjsKIAotICAgIFBsYXRmb3JtUmVmUHRyPEdka1BpeGJ1
Zj4gcGl4YnVmID0gY2Fpcm9JbWFnZVN1cmZhY2VUb0dka1BpeGJ1ZihtX2RhdGEubV9zdXJmYWNl
KTsKKyAgICBHUmVmUHRyPEdka1BpeGJ1Zj4gcGl4YnVmID0gY2Fpcm9JbWFnZVN1cmZhY2VUb0dk
a1BpeGJ1ZihtX2RhdGEubV9zdXJmYWNlKTsKICAgICBpZiAoIXBpeGJ1ZikKICAgICAgICAgcmV0
dXJuICJkYXRhOiwiOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9h
cmRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAppbmRleCA0
OWJjYjdkMGIyNTJlMDA0OTQ2YmIwZmVlYmI4NjIyMjNhYzc1ZDFiLi5lYjcyNDhiOGYxZWE1Njcw
NGE2NDgzNzgyOTZkNjIxZTg5MmIzYTVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9DbGlwYm9hcmRHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0
ay5jcHAKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIENsaXBib2FyZEd0azo6ZGVjbGFyZUFuZFdy
aXRlRHJhZ0ltYWdlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgYwogICAgIGlm
ICghaW1hZ2UgfHwgIWltYWdlLT5pc0xvYWRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBQ
bGF0Zm9ybVJlZlB0cjxHZGtQaXhidWY+IHBpeGJ1ZiA9IGFkb3B0UGxhdGZvcm1SZWYoaW1hZ2Ut
PmltYWdlKCktPmdldEdka1BpeGJ1ZigpKTsKKyAgICBHUmVmUHRyPEdka1BpeGJ1Zj4gcGl4YnVm
ID0gYWRvcHRHUmVmKGltYWdlLT5pbWFnZSgpLT5nZXRHZGtQaXhidWYoKSk7CiAgICAgaWYgKCFw
aXhidWYpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQ3Vyc29yR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAKaW5k
ZXggMzkwNzNhZTEzNWEwMzA2NWE5MTRlYTgxNDBjM2Q2MDUwMzMyYTQwMi4uOWM1YzE2YzE4MThm
MDRhMjJlNjg5YTc2YzZhNDAwN2U0ZDQ3NTMyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQ3Vyc29yR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsu
Y3BwCkBAIC0zOSwxMCArMzksMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
UGxhdGZvcm1SZWZQdHI8R2RrQ3Vyc29yPiBjcmVhdGVOYW1lZEN1cnNvcihDdXN0b21DdXJzb3JU
eXBlIGN1cnNvclR5cGUpCitzdGF0aWMgR1JlZlB0cjxHZGtDdXJzb3I+IGNyZWF0ZU5hbWVkQ3Vy
c29yKEN1c3RvbUN1cnNvclR5cGUgY3Vyc29yVHlwZSkKIHsKICAgICBDdXN0b21DdXJzb3IgY3Vy
c29yID0gQ3VzdG9tQ3Vyc29yc1tjdXJzb3JUeXBlXTsKLSAgICBQbGF0Zm9ybVJlZlB0cjxHZGtD
dXJzb3I+IGMgPSBhZG9wdFBsYXRmb3JtUmVmKGdka19jdXJzb3JfbmV3X2Zyb21fbmFtZShnZGtf
ZGlzcGxheV9nZXRfZGVmYXVsdCgpLCBjdXJzb3IubmFtZSkpOworICAgIEdSZWZQdHI8R2RrQ3Vy
c29yPiBjID0gYWRvcHRHUmVmKGdka19jdXJzb3JfbmV3X2Zyb21fbmFtZShnZGtfZGlzcGxheV9n
ZXRfZGVmYXVsdCgpLCBjdXJzb3IubmFtZSkpOwogICAgIGlmIChjKQogICAgICAgICByZXR1cm4g
YzsKIApAQCAtNTUsMTUgKzU1LDE1IEBAIHN0YXRpYyBQbGF0Zm9ybVJlZlB0cjxHZGtDdXJzb3I+
IGNyZWF0ZU5hbWVkQ3Vyc29yKEN1c3RvbUN1cnNvclR5cGUgY3Vyc29yVHlwZSkKICAgICBjYWly
b19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0KCksIHNvdXJjZS5nZXQoKSwgY3Vyc29yLmhvdF94
LCBjdXJzb3IuaG90X3kpOwogICAgIGNhaXJvX21hc2tfc3VyZmFjZShjci5nZXQoKSwgbWFzay5n
ZXQoKSwgY3Vyc29yLmhvdF94LCBjdXJzb3IuaG90X3kpOwogCi0gICAgUGxhdGZvcm1SZWZQdHI8
R2RrUGl4YnVmPiBwaXhidWYgPSBhZG9wdFBsYXRmb3JtUmVmKGdka19waXhidWZfZ2V0X2Zyb21f
c3VyZmFjZShzdXJmYWNlLmdldCgpLCAwLCAwLCAzMiwgMzIpKTsKLSAgICByZXR1cm4gYWRvcHRQ
bGF0Zm9ybVJlZihnZGtfY3Vyc29yX25ld19mcm9tX3BpeGJ1ZihnZGtfZGlzcGxheV9nZXRfZGVm
YXVsdCgpLCBwaXhidWYuZ2V0KCksIDAsIDApKTsKKyAgICBHUmVmUHRyPEdka1BpeGJ1Zj4gcGl4
YnVmID0gYWRvcHRHUmVmKGdka19waXhidWZfZ2V0X2Zyb21fc3VyZmFjZShzdXJmYWNlLmdldCgp
LCAwLCAwLCAzMiwgMzIpKTsKKyAgICByZXR1cm4gYWRvcHRHUmVmKGdka19jdXJzb3JfbmV3X2Zy
b21fcGl4YnVmKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCksIHBpeGJ1Zi5nZXQoKSwgMCwgMCkp
OwogfQogCi1zdGF0aWMgUGxhdGZvcm1SZWZQdHI8R2RrQ3Vyc29yPiBjcmVhdGVDdXN0b21DdXJz
b3IoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkKK3N0YXRpYyBHUmVmUHRy
PEdka0N1cnNvcj4gY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9p
bnQmIGhvdFNwb3QpCiB7CiAgICAgSW50UG9pbnQgZWZmZWN0aXZlSG90U3BvdCA9IGRldGVybWlu
ZUhvdFNwb3QoaW1hZ2UsIGhvdFNwb3QpOwotICAgIFBsYXRmb3JtUmVmUHRyPEdka1BpeGJ1Zj4g
cGl4YnVmID0gYWRvcHRQbGF0Zm9ybVJlZihpbWFnZS0+Z2V0R2RrUGl4YnVmKCkpOwotICAgIHJl
dHVybiBhZG9wdFBsYXRmb3JtUmVmKGdka19jdXJzb3JfbmV3X2Zyb21fcGl4YnVmKGdka19kaXNw
bGF5X2dldF9kZWZhdWx0KCksIHBpeGJ1Zi5nZXQoKSwgZWZmZWN0aXZlSG90U3BvdC54KCksIGVm
ZmVjdGl2ZUhvdFNwb3QueSgpKSk7CisgICAgR1JlZlB0cjxHZGtQaXhidWY+IHBpeGJ1ZiA9IGFk
b3B0R1JlZihpbWFnZS0+Z2V0R2RrUGl4YnVmKCkpOworICAgIHJldHVybiBhZG9wdEdSZWYoZ2Rr
X2N1cnNvcl9uZXdfZnJvbV9waXhidWYoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSwgcGl4YnVm
LmdldCgpLCBlZmZlY3RpdmVIb3RTcG90LngoKSwgZWZmZWN0aXZlSG90U3BvdC55KCkpKTsKIH0K
IAogdm9pZCBDdXJzb3I6OmVuc3VyZVBsYXRmb3JtQ3Vyc29yKCkgY29uc3QKQEAgLTc3LDc3ICs3
Nyw3NyBAQCB2b2lkIEN1cnNvcjo6ZW5zdXJlUGxhdGZvcm1DdXJzb3IoKSBjb25zdAogICAgICAg
ICBtX3BsYXRmb3JtQ3Vyc29yID0gMDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDdXJzb3I6
OkNyb3NzOgotICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gYWRvcHRQbGF0Zm9ybVJlZihnZGtf
Y3Vyc29yX25ldyhHREtfQ1JPU1MpKTsKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGFkb3B0
R1JlZihnZGtfY3Vyc29yX25ldyhHREtfQ1JPU1MpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDdXJzb3I6OkhhbmQ6Ci0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBhZG9wdFBsYXRmb3Jt
UmVmKGdka19jdXJzb3JfbmV3KEdES19IQU5EMikpOworICAgICAgICBtX3BsYXRmb3JtQ3Vyc29y
ID0gYWRvcHRHUmVmKGdka19jdXJzb3JfbmV3KEdES19IQU5EMikpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEN1cnNvcjo6SUJlYW06Ci0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBhZG9w
dFBsYXRmb3JtUmVmKGdka19jdXJzb3JfbmV3KEdES19YVEVSTSkpOworICAgICAgICBtX3BsYXRm
b3JtQ3Vyc29yID0gYWRvcHRHUmVmKGdka19jdXJzb3JfbmV3KEdES19YVEVSTSkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEN1cnNvcjo6V2FpdDoKLSAgICAgICAgbV9wbGF0Zm9ybUN1cnNv
ciA9IGFkb3B0UGxhdGZvcm1SZWYoZ2RrX2N1cnNvcl9uZXcoR0RLX1dBVENIKSk7CisgICAgICAg
IG1fcGxhdGZvcm1DdXJzb3IgPSBhZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXcoR0RLX1dBVENIKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ3Vyc29yOjpIZWxwOgotICAgICAgICBtX3BsYXRm
b3JtQ3Vyc29yID0gYWRvcHRQbGF0Zm9ybVJlZihnZGtfY3Vyc29yX25ldyhHREtfUVVFU1RJT05f
QVJST1cpKTsKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGFkb3B0R1JlZihnZGtfY3Vyc29y
X25ldyhHREtfUVVFU1RJT05fQVJST1cpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDdXJz
b3I6Ok1vdmU6CiAgICAgY2FzZSBDdXJzb3I6Ok1pZGRsZVBhbm5pbmc6Ci0gICAgICAgIG1fcGxh
dGZvcm1DdXJzb3IgPSBhZG9wdFBsYXRmb3JtUmVmKGdka19jdXJzb3JfbmV3KEdES19GTEVVUikp
OworICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gYWRvcHRHUmVmKGdka19jdXJzb3JfbmV3KEdE
S19GTEVVUikpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEN1cnNvcjo6RWFzdFJlc2l6ZToK
ICAgICBjYXNlIEN1cnNvcjo6RWFzdFBhbm5pbmc6Ci0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3Ig
PSBhZG9wdFBsYXRmb3JtUmVmKGdka19jdXJzb3JfbmV3KEdES19SSUdIVF9TSURFKSk7CisgICAg
ICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBhZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXcoR0RLX1JJR0hU
X1NJREUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDdXJzb3I6Ok5vcnRoUmVzaXplOgog
ICAgIGNhc2UgQ3Vyc29yOjpOb3J0aFBhbm5pbmc6Ci0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3Ig
PSBhZG9wdFBsYXRmb3JtUmVmKGdka19jdXJzb3JfbmV3KEdES19UT1BfU0lERSkpOworICAgICAg
ICBtX3BsYXRmb3JtQ3Vyc29yID0gYWRvcHRHUmVmKGdka19jdXJzb3JfbmV3KEdES19UT1BfU0lE
RSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEN1cnNvcjo6Tm9ydGhFYXN0UmVzaXplOgog
ICAgIGNhc2UgQ3Vyc29yOjpOb3J0aEVhc3RQYW5uaW5nOgotICAgICAgICBtX3BsYXRmb3JtQ3Vy
c29yID0gYWRvcHRQbGF0Zm9ybVJlZihnZGtfY3Vyc29yX25ldyhHREtfTEVGVF9TSURFKSk7Cisg
ICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBhZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXcoR0RLX0xF
RlRfU0lERSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEN1cnNvcjo6Tm9ydGhXZXN0UmVz
aXplOgogICAgIGNhc2UgQ3Vyc29yOjpOb3J0aFdlc3RQYW5uaW5nOgotICAgICAgICBtX3BsYXRm
b3JtQ3Vyc29yID0gYWRvcHRQbGF0Zm9ybVJlZihnZGtfY3Vyc29yX25ldyhHREtfVE9QX0xFRlRf
Q09STkVSKSk7CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBhZG9wdEdSZWYoZ2RrX2N1cnNv
cl9uZXcoR0RLX1RPUF9MRUZUX0NPUk5FUikpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEN1
cnNvcjo6U291dGhSZXNpemU6CiAgICAgY2FzZSBDdXJzb3I6OlNvdXRoUGFubmluZzoKLSAgICAg
ICAgbV9wbGF0Zm9ybUN1cnNvciA9IGFkb3B0UGxhdGZvcm1SZWYoZ2RrX2N1cnNvcl9uZXcoR0RL
X0JPVFRPTV9TSURFKSk7CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBhZG9wdEdSZWYoZ2Rr
X2N1cnNvcl9uZXcoR0RLX0JPVFRPTV9TSURFKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q3Vyc29yOjpTb3V0aEVhc3RSZXNpemU6CiAgICAgY2FzZSBDdXJzb3I6OlNvdXRoRWFzdFBhbm5p
bmc6Ci0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBhZG9wdFBsYXRmb3JtUmVmKGdka19jdXJz
b3JfbmV3KEdES19CT1RUT01fUklHSFRfQ09STkVSKSk7CisgICAgICAgIG1fcGxhdGZvcm1DdXJz
b3IgPSBhZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXcoR0RLX0JPVFRPTV9SSUdIVF9DT1JORVIpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDdXJzb3I6OlNvdXRoV2VzdFJlc2l6ZToKICAgICBj
YXNlIEN1cnNvcjo6U291dGhXZXN0UGFubmluZzoKLSAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9
IGFkb3B0UGxhdGZvcm1SZWYoZ2RrX2N1cnNvcl9uZXcoR0RLX0JPVFRPTV9MRUZUX0NPUk5FUikp
OworICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gYWRvcHRHUmVmKGdka19jdXJzb3JfbmV3KEdE
S19CT1RUT01fTEVGVF9DT1JORVIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDdXJzb3I6
Oldlc3RSZXNpemU6Ci0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBhZG9wdFBsYXRmb3JtUmVm
KGdka19jdXJzb3JfbmV3KEdES19MRUZUX1NJREUpKTsKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNv
ciA9IGFkb3B0R1JlZihnZGtfY3Vyc29yX25ldyhHREtfTEVGVF9TSURFKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ3Vyc29yOjpOb3J0aFNvdXRoUmVzaXplOgotICAgICAgICBtX3BsYXRm
b3JtQ3Vyc29yID0gYWRvcHRQbGF0Zm9ybVJlZihnZGtfY3Vyc29yX25ldyhHREtfVE9QX1RFRSkp
OworICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gYWRvcHRHUmVmKGdka19jdXJzb3JfbmV3KEdE
S19UT1BfVEVFKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ3Vyc29yOjpFYXN0V2VzdFJl
c2l6ZToKICAgICBjYXNlIEN1cnNvcjo6V2VzdFBhbm5pbmc6Ci0gICAgICAgIG1fcGxhdGZvcm1D
dXJzb3IgPSBhZG9wdFBsYXRmb3JtUmVmKGdka19jdXJzb3JfbmV3KEdES19MRUZUX1NJREUpKTsK
KyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGFkb3B0R1JlZihnZGtfY3Vyc29yX25ldyhHREtf
TEVGVF9TSURFKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ3Vyc29yOjpOb3J0aEVhc3RT
b3V0aFdlc3RSZXNpemU6CiAgICAgY2FzZSBDdXJzb3I6Ok5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6
ZToKLSAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGFkb3B0UGxhdGZvcm1SZWYoZ2RrX2N1cnNv
cl9uZXcoR0RLX1NJWklORykpOworICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gYWRvcHRHUmVm
KGdka19jdXJzb3JfbmV3KEdES19TSVpJTkcpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
dXJzb3I6OkNvbHVtblJlc2l6ZToKLSAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGFkb3B0UGxh
dGZvcm1SZWYoZ2RrX2N1cnNvcl9uZXcoR0RLX1NCX0hfRE9VQkxFX0FSUk9XKSk7CisgICAgICAg
IG1fcGxhdGZvcm1DdXJzb3IgPSBhZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXcoR0RLX1NCX0hfRE9V
QkxFX0FSUk9XKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ3Vyc29yOjpSb3dSZXNpemU6
Ci0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBhZG9wdFBsYXRmb3JtUmVmKGdka19jdXJzb3Jf
bmV3KEdES19TQl9WX0RPVUJMRV9BUlJPVykpOworICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0g
YWRvcHRHUmVmKGdka19jdXJzb3JfbmV3KEdES19TQl9WX0RPVUJMRV9BUlJPVykpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEN1cnNvcjo6VmVydGljYWxUZXh0OgogICAgICAgICBtX3BsYXRm
b3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoQ3VzdG9tQ3Vyc29yVmVydGljYWxUZXh0KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDdXJzb3I6OkNlbGw6Ci0gICAgICAgIG1fcGxhdGZv
cm1DdXJzb3IgPSBhZG9wdFBsYXRmb3JtUmVmKGdka19jdXJzb3JfbmV3KEdES19QTFVTKSk7Cisg
ICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBhZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXcoR0RLX1BM
VVMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDdXJzb3I6OkNvbnRleHRNZW51OgogICAg
ICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoQ3VzdG9tQ3Vyc29yQ29u
dGV4dE1lbnUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0
ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oCmluZGV4IGY2YjEzZmRi
ODBmYTMyNGRhMTgzZDI3NzdlMzk5OTBjNWJkYWQwZTAuLjU0MjNmODFkMzIzMjU3NzQxZTZlNGM3
MDBhZmQ5OGVmNDJkNWY2ZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFP
YmplY3RHdGsuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmgKQEAg
LTczLDggKzczLDggQEAgcHJpdmF0ZToKICAgICBLVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX3Vy
aUxpc3Q7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7Ci0gICAgUGxhdGZvcm1SZWZQ
dHI8R2RrUGl4YnVmPiBtX2ltYWdlOwotICAgIFBsYXRmb3JtUmVmUHRyPEdka0RyYWdDb250ZXh0
PiBtX2RyYWdDb250ZXh0OworICAgIEdSZWZQdHI8R2RrUGl4YnVmPiBtX2ltYWdlOworICAgIEdS
ZWZQdHI8R2RrRHJhZ0NvbnRleHQ+IG1fZHJhZ0NvbnRleHQ7CiAgICAgUmVmUHRyPFJhbmdlPiBt
X3JhbmdlOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3Rl
bUd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAppbmRleCAx
ZjZjOTUzZmYxNGY3YWNjMWY1OTY2NDRkMmMyNGVkZmI5ZjgxMzEwLi5iOGFhMTAyMGE4OTk3NzAw
OWE1NDNiNjQxOWIwNzFiNjYwNTljMjliIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9GaWxlU3lzdGVtR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVt
R3RrLmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIENTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29u
c3QgY2hhciogcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBHT3du
UHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBwcmVmaXgsIGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgR093blB0cjxnY2hh
cj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdl
dCgpLCBOVUxMKSk7Ci0gICAgUGxhdGZvcm1SZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdFBsYXRm
b3JtUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgodGVtcFBhdGguZ2V0KCkpKTsKKyAgICBHUmVmUHRy
PEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgodGVtcFBhdGguZ2V0
KCkpKTsKIAogICAgIGhhbmRsZSA9IGdfZmlsZV9jcmVhdGVfcmVhZHdyaXRlKGZpbGUuZ2V0KCks
IEdfRklMRV9DUkVBVEVfTk9ORSwgMCwgMCk7CiAgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRs
ZSkpCkBAIC0yMzEsNyArMjMxLDcgQEAgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiAgICAgaWYgKGZzUmVwLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKIAotICAgIFBsYXRm
b3JtUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRQbGF0Zm9ybVJlZihnX2ZpbGVfbmV3X2Zvcl9w
YXRoKGZzUmVwLmRhdGEoKSkpOworICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYo
Z19maWxlX25ld19mb3JfcGF0aChmc1JlcC5kYXRhKCkpKTsKICAgICBHRmlsZUlPU3RyZWFtKiBp
b1N0cmVhbSA9IDA7CiAgICAgaWYgKG1vZGUgPT0gT3BlbkZvclJlYWQpCiAgICAgICAgIGlvU3Ry
ZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZpbGUuZ2V0KCksIDAsIDApOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HUmVmUHRyR3RrLmNwcAppbmRleCA4MzEyOWNjYThkNzRiYjlhNWQzOWE0MjZjMjY0MTM4
Yjg0NDcwMDEzLi42NjQ3Yjk5N2RhYjA4NDg2MGMxMzdmOTdlMDk3Yjg2NTZhODNhOGQ3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmNwcApAQCAtMjUsMjcgKzI1LDI3IEBACiAKIG5hbWVz
cGFjZSBXVEYgewogCi10ZW1wbGF0ZSA8PiBHdGtUYXJnZXRMaXN0KiByZWZQbGF0Zm9ybVB0cihH
dGtUYXJnZXRMaXN0KiBwdHIpCit0ZW1wbGF0ZSA8PiBHdGtUYXJnZXRMaXN0KiByZWZHUHRyKEd0
a1RhcmdldExpc3QqIHB0cikKIHsKICAgICBpZiAocHRyKQogICAgICAgICBndGtfdGFyZ2V0X2xp
c3RfcmVmKHB0cik7CiAgICAgcmV0dXJuIHB0cjsKIH0KIAotdGVtcGxhdGUgPD4gdm9pZCBkZXJl
ZlBsYXRmb3JtUHRyKEd0a1RhcmdldExpc3QqIHB0cikKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZH
UHRyKEd0a1RhcmdldExpc3QqIHB0cikKIHsKICAgICBpZiAocHRyKQogICAgICAgICBndGtfdGFy
Z2V0X2xpc3RfdW5yZWYocHRyKTsKIH0KIAotdGVtcGxhdGUgPD4gR2RrQ3Vyc29yKiByZWZQbGF0
Zm9ybVB0cihHZGtDdXJzb3IqIHB0cikKK3RlbXBsYXRlIDw+IEdka0N1cnNvciogcmVmR1B0cihH
ZGtDdXJzb3IqIHB0cikKIHsKICAgICBpZiAocHRyKQogICAgICAgICBnZGtfY3Vyc29yX3JlZihw
dHIpOwogICAgIHJldHVybiBwdHI7CiB9CiAKLXRlbXBsYXRlIDw+IHZvaWQgZGVyZWZQbGF0Zm9y
bVB0cihHZGtDdXJzb3IqIHB0cikKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdka0N1cnNv
ciogcHRyKQogewogICAgIGlmIChwdHIpCiAgICAgICAgIGdka19jdXJzb3JfdW5yZWYocHRyKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuaAppbmRleCA1ZTZhYjc4NTJlYjY4ZDhkNTY2M2FhMmFh
YzM3MGI5MTExNGZmNzJkLi4xZmI5NzcyMDJiZWZmOGI1NTVjNTllYTRkMjA5NDM2ODhlMjVjNmIz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmgKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oCkBAIC0yMSwxNSArMjEsMTUgQEAKICNpZm5k
ZWYgR1JlZlB0ckd0a19oCiAjZGVmaW5lIEdSZWZQdHJHdGtfaAogCi0jaW5jbHVkZSAiR1JlZlB0
ci5oIgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7
CiAKLXRlbXBsYXRlIDw+IEd0a1RhcmdldExpc3QqIHJlZlBsYXRmb3JtUHRyKEd0a1RhcmdldExp
c3QqIHB0cik7Ci10ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmUGxhdGZvcm1QdHIoR3RrVGFyZ2V0TGlz
dCogcHRyKTsKK3RlbXBsYXRlIDw+IEd0a1RhcmdldExpc3QqIHJlZkdQdHIoR3RrVGFyZ2V0TGlz
dCogcHRyKTsKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEd0a1RhcmdldExpc3QqIHB0cik7
CiAKLXRlbXBsYXRlIDw+IEdka0N1cnNvciogcmVmUGxhdGZvcm1QdHIoR2RrQ3Vyc29yKiBwdHIp
OwotdGVtcGxhdGUgPD4gdm9pZCBkZXJlZlBsYXRmb3JtUHRyKEdka0N1cnNvciogcHRyKTsKK3Rl
bXBsYXRlIDw+IEdka0N1cnNvciogcmVmR1B0cihHZGtDdXJzb3IqIHB0cik7Cit0ZW1wbGF0ZSA8
PiB2b2lkIGRlcmVmR1B0cihHZGtDdXJzb3IqIHB0cik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvTWFpbkZyYW1lU2Nyb2xsYmFyR3RrLmggYi9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9NYWluRnJhbWVTY3JvbGxiYXJHdGsuaAppbmRleCA4MjcxZWY1NjVjYTIwZDg1ZWFm
NjA4OWNjNzRmMzhmYTY5YzE0NjBjLi5mMTg0NDI1ZDcxMTc0MzAxMzFkZGY4YjZjOGM4MjE3YzUz
YTMzODQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9NYWluRnJhbWVTY3JvbGxi
YXJHdGsuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9NYWluRnJhbWVTY3JvbGxiYXJHdGsu
aApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIE1haW5GcmFtZVNjcm9sbGJhckd0ayhT
Y3JvbGxiYXJDbGllbnQqLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgR3RrQWRqdXN0bWVudCopOwog
ICAgIHN0YXRpYyB2b2lkIGd0a1ZhbHVlQ2hhbmdlZChHdGtBZGp1c3RtZW50KiwgTWFpbkZyYW1l
U2Nyb2xsYmFyR3RrKik7CiAKLSAgICBQbGF0Zm9ybVJlZlB0cjxHdGtBZGp1c3RtZW50PiBtX2Fk
anVzdG1lbnQ7CisgICAgR1JlZlB0cjxHdGtBZGp1c3RtZW50PiBtX2FkanVzdG1lbnQ7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IDc2YjdiYjBmOGE1
ZDUzMDY4ZjVjZTA2NDlkMjg3YTNhNmJjMmU3ZDAuLjRjZDVkYzBlYzczOTc4ODUxZjA2MWQ0M2U4
MDBmYzExMGY2Yjc3NjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBA
IC0xMDMsNyArMTAzLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUs
IGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZElt
YWdlLT5pbWFnZSgpOwogICAgIEFTU0VSVChpbWFnZSk7CiAKLSAgICBQbGF0Zm9ybVJlZlB0cjxH
ZGtQaXhidWY+IHBpeGJ1ZiA9IGFkb3B0UGxhdGZvcm1SZWYoaW1hZ2UtPmdldEdka1BpeGJ1Zigp
KTsKKyAgICBHUmVmUHRyPEdka1BpeGJ1Zj4gcGl4YnVmID0gYWRvcHRHUmVmKGltYWdlLT5nZXRH
ZGtQaXhidWYoKSk7CiAgICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCA9IERhdGFPYmplY3RH
dGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOwogICAgIGRhdGFPYmplY3QtPnNldEltYWdlKHBp
eGJ1Zi5nZXQoKSk7CiAgICAgbV9oZWxwZXItPndyaXRlQ2xpcGJvYXJkQ29udGVudHMoY2xpcGJv
YXJkKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKaW5kZXggNDQy
OGJlMDk3YTUzZGViYzY1MzA5YTNiZjBjNjQyODY5NjVhZjlkMy4uMDEzNzg5ZmUzZTYxZWE1Mjc4
NDhlZjJhYWU1Yzc0ZTVlMGE2ODY4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGFzdGVib2FyZEhlbHBlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEhlbHBlci5jcHAKQEAgLTI0OCw3ICsyNDgsNyBAQCBWZWN0b3I8R2RrQXRvbT4gUGFzdGVib2Fy
ZEhlbHBlcjo6ZHJvcEF0b21zRm9yQ29udGV4dChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZwog
ICAgIGRyb3BBdG9tcy5hcHBlbmQobmV0c2NhcGVVUkxBdG9tKTsKIAogICAgIC8vIEZvciBpbWFn
ZXMsIHRyeSB0byBmaW5kIHRoZSBtb3N0IGFwcGxpY2FibGUgaW1hZ2UgdHlwZS4KLSAgICBQbGF0
Zm9ybVJlZlB0cjxHdGtUYXJnZXRMaXN0PiBsaXN0KGd0a190YXJnZXRfbGlzdF9uZXcoMCwgMCkp
OworICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4gbGlzdChndGtfdGFyZ2V0X2xpc3RfbmV3KDAs
IDApKTsKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX2ltYWdlX3RhcmdldHMobGlzdC5nZXQoKSwg
Z2V0SWRGb3JUYXJnZXRUeXBlKFRhcmdldFR5cGVJbWFnZSksIFRSVUUpOwogICAgIEdka0F0b20g
YXRvbSA9IGd0a19kcmFnX2Rlc3RfZmluZF90YXJnZXQod2lkZ2V0LCBjb250ZXh0LCBsaXN0Lmdl
dCgpKTsKICAgICBpZiAoYXRvbSAhPSBHREtfTk9ORSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1BvcHVwTWVudUd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUG9wdXBNZW51
R3RrLmgKaW5kZXggZTQ3ZmRhNjRiOWVjMWZkYWUwMTQxMjE1MzIxNDg1ZWE4NGViOTliYy4uN2Yy
ZmMzNjc5YmM3YTU2N2E1MGM5MTA0ZmM1MWMyZDljYjJiOGYwNSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUG9wdXBNZW51R3RrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UG9wdXBNZW51R3RrLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIFBvcHVwTWVu
dUNsaWVudCogbV9wb3B1cENsaWVudDsKICAgICBJbnRQb2ludCBtX21lbnVQb3NpdGlvbjsKLSAg
ICBQbGF0Zm9ybVJlZlB0cjxHdGtNZW51PiBtX3BvcHVwOworICAgIEdSZWZQdHI8R3RrTWVudT4g
bV9wb3B1cDsKICAgICBIYXNoTWFwPEd0a1dpZGdldCosIGludD4gbV9pbmRleE1hcDsKICAgICBT
dHJpbmcgbV9jdXJyZW50U2VhcmNoU3RyaW5nOwogICAgIHVpbnQzMl90IG1fcHJldmlvdXNLZXlF
dmVudFRpbWVzdGFtcDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRo
ZW1lR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAppbmRl
eCA2MDEzZWIyOWJkY2VmY2MwNGRmZDAwYjAxNjEzNzM0NjE2ZTdkY2Y1Li41NWFlODJlZjc1ODk3
MWIyYzlhYTg1YTczZjcwZWYzMWFlZGQyYjkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyB2b2lkIHBhaW50U3RvY2tJY29u
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGljb25Qb2ludCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBHdGtT
dGF0ZVR5cGUgc3RhdGUsIEd0a0ljb25TaXplIGljb25TaXplKQogewogICAgIEd0a0ljb25TZXQq
IGljb25TZXQgPSBndGtfc3R5bGVfbG9va3VwX2ljb25fc2V0KHN0eWxlLCBpY29uTmFtZSk7Ci0g
ICAgUGxhdGZvcm1SZWZQdHI8R2RrUGl4YnVmPiBpY29uID0gYWRvcHRQbGF0Zm9ybVJlZihndGtf
aWNvbl9zZXRfcmVuZGVyX2ljb24oaWNvblNldCwgc3R5bGUsIGRpcmVjdGlvbiwgc3RhdGUsIGlj
b25TaXplLCAwLCAwKSk7CisgICAgR1JlZlB0cjxHZGtQaXhidWY+IGljb24gPSBhZG9wdEdSZWYo
Z3RrX2ljb25fc2V0X3JlbmRlcl9pY29uKGljb25TZXQsIHN0eWxlLCBkaXJlY3Rpb24sIHN0YXRl
LCBpY29uU2l6ZSwgMCwgMCkpOwogCiAgICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBS
ZW5kZXJUaGVtZUd0azo6aW5pdE1lZGlhQnV0dG9ucygpCiAgICAgaWYgKGljb25zSW5pdGlhbGl6
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBsYXRmb3JtUmVmUHRyPEd0a0ljb25GYWN0b3J5
PiBpY29uRmFjdG9yeSA9IGFkb3B0UGxhdGZvcm1SZWYoZ3RrX2ljb25fZmFjdG9yeV9uZXcoKSk7
CisgICAgR1JlZlB0cjxHdGtJY29uRmFjdG9yeT4gaWNvbkZhY3RvcnkgPSBhZG9wdEdSZWYoZ3Rr
X2ljb25fZmFjdG9yeV9uZXcoKSk7CiAgICAgR3RrSWNvblNvdXJjZSogaWNvblNvdXJjZSA9IGd0
a19pY29uX3NvdXJjZV9uZXcoKTsKICAgICBjb25zdCBjaGFyKiBpY29uc1tdID0geyAiYXVkaW8t
dm9sdW1lLWhpZ2giLCAiYXVkaW8tdm9sdW1lLW11dGVkIiB9OwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAppbmRleCA5Y2NjZWNkNDU5
MDcwODUxMjFkZWZhYWRjOTYxYTkzNWMxMDVhOGJkLi5kODMzZTMyYjBkNTgwNDc3YWRhOTAwM2Rm
NDU2ZDE4N2MzNmIwMTEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICBtX3Bhc3MgPSB1cmwucGFzcygpOwogICAgICAgICAgICAgbV9maXJz
dFJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICNpZiBVU0UoU09VUCkKLSAgICAgICAgICAg
IG1fcmVxdWVzdGVyID0gYWRvcHRQbGF0Zm9ybVJlZih3ZWJraXRfc291cF9yZXF1ZXN0ZXJfbmV3
KCkpOworICAgICAgICAgICAgbV9yZXF1ZXN0ZXIgPSBhZG9wdEdSZWYod2Via2l0X3NvdXBfcmVx
dWVzdGVyX25ldygpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIApAQCAtMTg2LDEzICsx
ODYsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBWZWN0b3I8Y2hhcj4gbV9wb3N0
Qnl0ZXM7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKLSAgICAgICAgUGxhdGZvcm1SZWZQdHI8U291
cE1lc3NhZ2U+IG1fc291cE1lc3NhZ2U7CisgICAgICAgIEdSZWZQdHI8U291cE1lc3NhZ2U+IG1f
c291cE1lc3NhZ2U7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAg
ICAgYm9vbCBtX2NhbmNlbGxlZDsKLSAgICAgICAgUGxhdGZvcm1SZWZQdHI8V2ViS2l0U291cFJl
cXVlc3Q+IG1fc291cFJlcXVlc3Q7Ci0gICAgICAgIFBsYXRmb3JtUmVmUHRyPFdlYktpdFNvdXBS
ZXF1ZXN0ZXI+IG1fcmVxdWVzdGVyOwotICAgICAgICBQbGF0Zm9ybVJlZlB0cjxHSW5wdXRTdHJl
YW0+IG1faW5wdXRTdHJlYW07Ci0gICAgICAgIFBsYXRmb3JtUmVmUHRyPEdDYW5jZWxsYWJsZT4g
bV9jYW5jZWxsYWJsZTsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXRTb3VwUmVxdWVzdD4gbV9zb3Vw
UmVxdWVzdDsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXRTb3VwUmVxdWVzdGVyPiBtX3JlcXVlc3Rl
cjsKKyAgICAgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IG1faW5wdXRTdHJlYW07CisgICAgICAg
IEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBtX2NhbmNlbGxhYmxlOwogICAgICAgICBjaGFyKiBtX2J1
ZmZlcjsKICAgICAgICAgZ3NpemUgbV90b3RhbDsKICAgICAgICAgZ3VpbnQgbV9pZGxlSGFuZGxl
cjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRs
ZVNvdXAuY3BwCmluZGV4IGEyNDQwZDNiYzZjZTI2Y2Q3MDNiYTRjYmZhZjUwYmQ3ZWZlMzVhMDgu
Ljg5MDBiMTgwNDdkN2FhNGE1ZDgyNzE5MTc1OTBiYjczZmU0ZmQ4MjkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAt
MzUzLDE0ICszNTMsMTQgQEAgc3RhdGljIGdib29sZWFuIHBhcnNlRGF0YVVybChncG9pbnRlciBj
YWxsYmFja0RhdGEpCiAKICAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IGhhbmRsZS0+ZGVmYXVs
dFNlc3Npb24oKTsKICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgZC0+bV9zb3VwUmVx
dWVzdCA9IGFkb3B0UGxhdGZvcm1SZWYod2Via2l0X3NvdXBfcmVxdWVzdGVyX3JlcXVlc3QoZC0+
bV9yZXF1ZXN0ZXIuZ2V0KCksIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgc2Vzc2lvbiwgJmVycm9yLm91dFB0cigpKSk7CisgICAgZC0+bV9zb3Vw
UmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRfc291cF9yZXF1ZXN0ZXJfcmVxdWVzdChkLT5tX3Jl
cXVlc3Rlci5nZXQoKSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCBzZXNzaW9uLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoZXJyb3IpIHsK
ICAgICAgICAgZC0+bV9zb3VwUmVxdWVzdCA9IDA7CiAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNo
TG9hZGluZyhoYW5kbGUsIDApOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
ZC0+bV9pbnB1dFN0cmVhbSA9IGFkb3B0UGxhdGZvcm1SZWYod2Via2l0X3NvdXBfcmVxdWVzdF9z
ZW5kKGQtPm1fc291cFJlcXVlc3QuZ2V0KCksIDAsICZlcnJvci5vdXRQdHIoKSkpOworICAgIGQt
Pm1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYod2Via2l0X3NvdXBfcmVxdWVzdF9zZW5kKGQtPm1f
c291cFJlcXVlc3QuZ2V0KCksIDAsICZlcnJvci5vdXRQdHIoKSkpOwogICAgIGlmIChlcnJvcikg
ewogICAgICAgICBkLT5tX2lucHV0U3RyZWFtID0gMDsKICAgICAgICAgY2xpZW50LT5kaWRGaW5p
c2hMb2FkaW5nKGhhbmRsZSwgMCk7CkBAIC0zNzQsNyArMzc0LDcgQEAgc3RhdGljIGdib29sZWFu
IHBhcnNlRGF0YVVybChncG9pbnRlciBjYWxsYmFja0RhdGEpCiAgICAgLy8gYmFsYW5jZWQgYnkg
YSBkZXJlZigpIGluIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbiwgd2hpY2ggc2hvdWxkIGFs
d2F5cyBydW4KICAgICBoYW5kbGUtPnJlZigpOwogCi0gICAgZC0+bV9jYW5jZWxsYWJsZSA9IGFk
b3B0UGxhdGZvcm1SZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgZC0+bV9jYW5jZWxsYWJs
ZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKICAgICBnX2lucHV0X3N0cmVhbV9y
ZWFkX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGQtPm1fYnVmZmVyLCBSRUFEX0JVRkZF
Ul9TSVpFLCBHX1BSSU9SSVRZX0RFRkFVTFQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCByZWFkQ2FsbGJhY2ssIEdJTlRfVE9fUE9JTlRFUigh
aXNCYXNlNjQpKTsKIApAQCAtNTMxLDcgKzUzMSw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXF1ZXN0
Q2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlcywgZ3BvaW50ZXIgdXNl
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkLT5tX2lucHV0U3RyZWFtID0gYWRvcHRQ
bGF0Zm9ybVJlZihpbik7CisgICAgZC0+bV9pbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihpbik7CiAg
ICAgZC0+bV9idWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZ19zbGljZV9hbGxvYzAoUkVBRF9C
VUZGRVJfU0laRSkpOwogICAgIGQtPm1fdG90YWwgPSAwOwogCkBAIC01NzUsNyArNTc1LDcgQEAg
c3RhdGljIGJvb2wgc3RhcnRIdHRwKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCiAgICAgcmVxdWVz
dC5zZXRVUkwodXJsKTsKIAogICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBkLT5tX3Nv
dXBSZXF1ZXN0ID0gYWRvcHRQbGF0Zm9ybVJlZih3ZWJraXRfc291cF9yZXF1ZXN0ZXJfcmVxdWVz
dChkLT5tX3JlcXVlc3Rlci5nZXQoKSwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHNlc3Np
b24sICZlcnJvci5vdXRQdHIoKSkpOworICAgIGQtPm1fc291cFJlcXVlc3QgPSBhZG9wdEdSZWYo
d2Via2l0X3NvdXBfcmVxdWVzdGVyX3JlcXVlc3QoZC0+bV9yZXF1ZXN0ZXIuZ2V0KCksIHVybC5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzZXNzaW9uLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBp
ZiAoZXJyb3IpIHsKICAgICAgICAgZC0+bV9zb3VwUmVxdWVzdCA9IDA7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTU4Myw3ICs1ODMsNyBAQCBzdGF0aWMgYm9vbCBzdGFydEh0dHAoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSkKIAogICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGQtPm1f
c291cFJlcXVlc3QuZ2V0KCkpLCAid2Via2l0LXJlc291cmNlIiwgaGFuZGxlKTsKIAotICAgIGQt
Pm1fc291cE1lc3NhZ2UgPSBhZG9wdFBsYXRmb3JtUmVmKHdlYmtpdF9zb3VwX3JlcXVlc3RfaHR0
cF9nZXRfbWVzc2FnZShXRUJLSVRfU09VUF9SRVFVRVNUX0hUVFAoZC0+bV9zb3VwUmVxdWVzdC5n
ZXQoKSkpKTsKKyAgICBkLT5tX3NvdXBNZXNzYWdlID0gYWRvcHRHUmVmKHdlYmtpdF9zb3VwX3Jl
cXVlc3RfaHR0cF9nZXRfbWVzc2FnZShXRUJLSVRfU09VUF9SRVFVRVNUX0hUVFAoZC0+bV9zb3Vw
UmVxdWVzdC5nZXQoKSkpKTsKICAgICBpZiAoIWQtPm1fc291cE1lc3NhZ2UpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtNjY4LDcgKzY2OCw3IEBAIHN0YXRpYyBib29sIHN0YXJ0SHR0cChS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogCiAgICAgLy8gU2VuZCB0aGUgcmVxdWVzdCBvbmx5IGlm
IGl0J3Mgbm90IGJlZW4gZXhwbGljaXRlbHkgZGVmZXJyZWQuCiAgICAgaWYgKCFkLT5tX2RlZmVy
c0xvYWRpbmcpIHsKLSAgICAgICAgZC0+bV9jYW5jZWxsYWJsZSA9IGFkb3B0UGxhdGZvcm1SZWYo
Z19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgICAgIGQtPm1fY2FuY2VsbGFibGUgPSBhZG9wdEdS
ZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CiAgICAgICAgIHdlYmtpdF9zb3VwX3JlcXVlc3Rfc2Vu
ZF9hc3luYyhkLT5tX3NvdXBSZXF1ZXN0LmdldCgpLCBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCBz
ZW5kUmVxdWVzdENhbGxiYWNrLCAwKTsKICAgICB9CiAKQEAgLTc1MSw3ICs3NTEsNyBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnNMb2Fk
aW5nKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWRlZmVyc0xvYWRpbmcgJiYgIWQtPm1f
Y2FuY2VsbGFibGUgJiYgZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSkgewotICAgICAgICBkLT5tX2Nh
bmNlbGxhYmxlID0gYWRvcHRQbGF0Zm9ybVJlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKKyAgICAg
ICAgZC0+bV9jYW5jZWxsYWJsZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKICAg
ICAgICAgd2Via2l0X3NvdXBfcmVxdWVzdF9zZW5kX2FzeW5jKGQtPm1fc291cFJlcXVlc3QuZ2V0
KCksIGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHNlbmRSZXF1ZXN0Q2FsbGJhY2ssIDApOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtODg4LDcgKzg4OCw3IEBAIHN0YXRpYyBib29sIHN0YXJ0
R2lvKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIEtVUkwgdXJsKQogICAgIENTdHJpbmcgdXJsU3Ry
ID0gdXJsLnN0cmluZygpLnV0ZjgoKTsKIAogICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAg
ICBkLT5tX3NvdXBSZXF1ZXN0ID0gYWRvcHRQbGF0Zm9ybVJlZih3ZWJraXRfc291cF9yZXF1ZXN0
ZXJfcmVxdWVzdChkLT5tX3JlcXVlc3Rlci5nZXQoKSwgdXJsU3RyLmRhdGEoKSwgc2Vzc2lvbiwg
JmVycm9yLm91dFB0cigpKSk7CisgICAgZC0+bV9zb3VwUmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJr
aXRfc291cF9yZXF1ZXN0ZXJfcmVxdWVzdChkLT5tX3JlcXVlc3Rlci5nZXQoKSwgdXJsU3RyLmRh
dGEoKSwgc2Vzc2lvbiwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKGVycm9yKSB7CiAgICAg
ICAgIGQtPm1fc291cFJlcXVlc3QgPSAwOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04OTks
NyArODk5LDcgQEAgc3RhdGljIGJvb2wgc3RhcnRHaW8oUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
S1VSTCB1cmwpCiAgICAgLy8gYmFsYW5jZWQgYnkgYSBkZXJlZigpIGluIGNsZWFudXBTb3VwUmVx
dWVzdE9wZXJhdGlvbiwgd2hpY2ggc2hvdWxkIGFsd2F5cyBydW4KICAgICBoYW5kbGUtPnJlZigp
OwogCi0gICAgZC0+bV9jYW5jZWxsYWJsZSA9IGFkb3B0UGxhdGZvcm1SZWYoZ19jYW5jZWxsYWJs
ZV9uZXcoKSk7CisgICAgZC0+bV9jYW5jZWxsYWJsZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxhYmxl
X25ldygpKTsKICAgICB3ZWJraXRfc291cF9yZXF1ZXN0X3NlbmRfYXN5bmMoZC0+bV9zb3VwUmVx
dWVzdC5nZXQoKSwgZC0+bV9jYW5jZWxsYWJsZS5nZXQoKSwgc2VuZFJlcXVlc3RDYWxsYmFjaywg
MCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlLmgKaW5kZXggMDhkMmQ5NDVhNjhiNzI3OTdjN2JiMWNh
ZWQ5ZDcyZjQ4OGM1NDZjMi4uMzE2OGZhZWZjYTEwMWNhM2RjN2U2OTIwYmI3MGFiYWNiNGY4ZGQ3
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFt
SGFuZGxlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFt
SGFuZGxlLmgKQEAgLTU4LDEwICs1OCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBQ
bGF0Zm9ybVJlZlB0cjxHU29ja2V0Q29ubmVjdGlvbj4gbV9zb2NrZXRDb25uZWN0aW9uOwotICAg
ICAgICBQbGF0Zm9ybVJlZlB0cjxHSW5wdXRTdHJlYW0+IG1faW5wdXRTdHJlYW07Ci0gICAgICAg
IFBsYXRmb3JtUmVmUHRyPEdPdXRwdXRTdHJlYW0+IG1fb3V0cHV0U3RyZWFtOwotICAgICAgICBQ
bGF0Zm9ybVJlZlB0cjxHU291cmNlPiBtX3dyaXRlUmVhZHlTb3VyY2U7CisgICAgICAgIEdSZWZQ
dHI8R1NvY2tldENvbm5lY3Rpb24+IG1fc29ja2V0Q29ubmVjdGlvbjsKKyAgICAgICAgR1JlZlB0
cjxHSW5wdXRTdHJlYW0+IG1faW5wdXRTdHJlYW07CisgICAgICAgIEdSZWZQdHI8R091dHB1dFN0
cmVhbT4gbV9vdXRwdXRTdHJlYW07CisgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV93cml0ZVJl
YWR5U291cmNlOwogICAgICAgICBjaGFyKiBtX3JlYWRCdWZmZXI7CiAgICAgICAgIHZvaWQqIG1f
aWQ7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0
cmVhbUhhbmRsZVNvdXAuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0
U3RyZWFtSGFuZGxlU291cC5jcHAKaW5kZXggN2Y2MmQ1YTFmMDZmMmRiYzI0YjYyOWQyM2I4NWMw
NWZmMGQ3NmQyMi4uODQxZTIwOWQ0ZjhiYjcwOTgyOWU4YTY1YjAxZDc1OTk0NjYzNDIzOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxl
U291cC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFt
SGFuZGxlU291cC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQK
ICAgICB1bnNpZ25lZCBpbnQgcG9ydCA9IHVybC5oYXNQb3J0KCkgPyB1cmwucG9ydCgpIDogODA7
CiAKICAgICBtX2lkID0gYWN0aXZhdGVIYW5kbGUodGhpcyk7Ci0gICAgUGxhdGZvcm1SZWZQdHI8
R1NvY2tldENsaWVudD4gc29ja2V0Q2xpZW50ID0gYWRvcHRQbGF0Zm9ybVJlZihnX3NvY2tldF9j
bGllbnRfbmV3KCkpOworICAgIEdSZWZQdHI8R1NvY2tldENsaWVudD4gc29ja2V0Q2xpZW50ID0g
YWRvcHRHUmVmKGdfc29ja2V0X2NsaWVudF9uZXcoKSk7CiAgICAgZ19zb2NrZXRfY2xpZW50X2Nv
bm5lY3RfdG9faG9zdF9hc3luYyhzb2NrZXRDbGllbnQuZ2V0KCksIHVybC5ob3N0KCkudXRmOCgp
LmRhdGEoKSwgcG9ydCwgMCwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNh
bGxiYWNrPihjb25uZWN0ZWRDYWxsYmFjayksIG1faWQpOwogfQpAQCAtMTA3LDcgKzEwNyw3IEBA
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpjb25uZWN0ZWQoR1NvY2tldENvbm5lY3Rpb24qIHNv
Y2tldENvbm5lY3Rpb24sIEdFcnJvcioKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
c29ja2V0Q29ubmVjdGlvbiA9IGFkb3B0UGxhdGZvcm1SZWYoc29ja2V0Q29ubmVjdGlvbik7Cisg
ICAgbV9zb2NrZXRDb25uZWN0aW9uID0gYWRvcHRHUmVmKHNvY2tldENvbm5lY3Rpb24pOwogICAg
IG1fb3V0cHV0U3RyZWFtID0gZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJF
QU0obV9zb2NrZXRDb25uZWN0aW9uLmdldCgpKSk7CiAgICAgbV9pbnB1dFN0cmVhbSA9IGdfaW9f
c3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0obV9zb2NrZXRDb25uZWN0aW9uLmdl
dCgpKSk7CiAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6YmVn
aW5XYWl0aW5nRm9yU29ja2V0V3JpdGFiaWxpdHkoKQogICAgIGlmIChtX3dyaXRlUmVhZHlTb3Vy
Y2UpIC8vIEFscmVhZHkgd2FpdGluZy4KICAgICAgICAgcmV0dXJuOwogCi0gICAgbV93cml0ZVJl
YWR5U291cmNlID0gYWRvcHRQbGF0Zm9ybVJlZihnX3NvY2tldF9jcmVhdGVfc291cmNlKAorICAg
IG1fd3JpdGVSZWFkeVNvdXJjZSA9IGFkb3B0R1JlZihnX3NvY2tldF9jcmVhdGVfc291cmNlKAog
ICAgICAgICBnX3NvY2tldF9jb25uZWN0aW9uX2dldF9zb2NrZXQobV9zb2NrZXRDb25uZWN0aW9u
LmdldCgpKSwgc3RhdGljX2Nhc3Q8R0lPQ29uZGl0aW9uPihHX0lPX09VVCksIDApKTsKICAgICBn
X3NvdXJjZV9zZXRfY2FsbGJhY2sobV93cml0ZVJlYWR5U291cmNlLmdldCgpLCByZWludGVycHJl
dF9jYXN0PEdTb3VyY2VGdW5jPih3cml0ZVJlYWR5Q2FsbGJhY2spLCBtX2lkLCAwKTsKICAgICBn
X3NvdXJjZV9hdHRhY2gobV93cml0ZVJlYWR5U291cmNlLmdldCgpLCAwKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dENvZGVjR3RrLmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9ndGsvVGV4dENvZGVjR3RrLmNwcAppbmRleCA5MzA4YjMzMjliYjdlNWZmYjE0
ZWI5NzUyMDc1MDY4NTc4NWMzYjAxLi5jNWJkN2U4ODRjM2JhN2VlNzc3Y2VmNzVjNTgzMWEyZjEy
YjRiNzc1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRDb2RlY0d0
ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0Q29kZWNHdGsuY3BwCkBA
IC00MjIsMTQgKzQyMiwxNCBAQCB2b2lkIFRleHRDb2RlY0d0azo6Y3JlYXRlSUNvbnZEZWNvZGVy
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIW1faWNvbnZEZWNvZGVyKTsKIAotICAgIG1faWNvbnZE
ZWNvZGVyID0gYWRvcHRQbGF0Zm9ybVJlZihnX2NoYXJzZXRfY29udmVydGVyX25ldyhpbnRlcm5h
bEVuY29kaW5nTmFtZSwgbV9lbmNvZGluZy5uYW1lKCksIDApKTsKKyAgICBtX2ljb252RGVjb2Rl
ciA9IGFkb3B0R1JlZihnX2NoYXJzZXRfY29udmVydGVyX25ldyhpbnRlcm5hbEVuY29kaW5nTmFt
ZSwgbV9lbmNvZGluZy5uYW1lKCksIDApKTsKIH0KIAogdm9pZCBUZXh0Q29kZWNHdGs6OmNyZWF0
ZUlDb252RW5jb2RlcigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2ljb252RW5jb2Rlcik7CiAK
LSAgICBtX2ljb252RW5jb2RlciA9IGFkb3B0UGxhdGZvcm1SZWYoZ19jaGFyc2V0X2NvbnZlcnRl
cl9uZXcobV9lbmNvZGluZy5uYW1lKCksIGludGVybmFsRW5jb2RpbmdOYW1lLCAwKSk7CisgICAg
bV9pY29udkVuY29kZXIgPSBhZG9wdEdSZWYoZ19jaGFyc2V0X2NvbnZlcnRlcl9uZXcobV9lbmNv
ZGluZy5uYW1lKCksIGludGVybmFsRW5jb2RpbmdOYW1lLCAwKSk7CiB9CiAKIFN0cmluZyBUZXh0
Q29kZWNHdGs6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBm
bHVzaCwgYm9vbCBzdG9wT25FcnJvciwgYm9vbCYgc2F3RXJyb3IpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRDb2RlY0d0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2d0ay9UZXh0Q29kZWNHdGsuaAppbmRleCAxZmI4ZGY5MGRmM2E5YjkxOTY5MjBhOWVkODRj
OTk0NDUzNTFiZjVhLi5iYjNhNDQ1Mjc1YmNjZTA4YzdlMjA1Y2YwNDEzYmYxZGYzMGNjNzBhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRDb2RlY0d0ay5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dENvZGVjR3RrLmgKQEAgLTU3LDggKzU3LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBUZXh0RW5jb2RpbmcgbV9lbmNvZGluZzsK
ICAgICAgICAgc2l6ZV90IG1fbnVtQnVmZmVyZWRCeXRlczsKICAgICAgICAgdW5zaWduZWQgY2hh
ciBtX2J1ZmZlcmVkQnl0ZXNbMTZdOyAvLyBiaWdnZXIgdGhhbiBhbnkgc2luZ2xlIG11bHRpLWJ5
dGUgY2hhcmFjdGVyICAgICAgICAKLSAgICAgICAgbXV0YWJsZSBQbGF0Zm9ybVJlZlB0cjxHQ2hh
cnNldENvbnZlcnRlcj4gbV9pY29udkRlY29kZXI7Ci0gICAgICAgIG11dGFibGUgUGxhdGZvcm1S
ZWZQdHI8R0NoYXJzZXRDb252ZXJ0ZXI+IG1faWNvbnZFbmNvZGVyOworICAgICAgICBtdXRhYmxl
IEdSZWZQdHI8R0NoYXJzZXRDb252ZXJ0ZXI+IG1faWNvbnZEZWNvZGVyOworICAgICAgICBtdXRh
YmxlIEdSZWZQdHI8R0NoYXJzZXRDb252ZXJ0ZXI+IG1faWNvbnZFbmNvZGVyOwogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMGQ3ZjViMWIxYWEzMzIxNWFkODViNjUwZDU4
OTQ0NzZjZWViMDUxMy4uZGI1ZGRjMmRiYTE5ZDVmYTE5ZGU3OTgyYzVhOGFmNDg3NTUzMGM3OCAx
MDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0wMS0wMyAgTWFydGluIFJvYmluc29uICA8bXJvYmlu
c29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVtb3ZlIHRoZSBsYXN0IG5vbi1HT2JqZWN0IHVzYWdlIG9mIFBsYXRmb3JtUmVm
UHRyIGFuZCBtb3ZlIHRoZSBjb2RlIHRvIEdSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxODQ2CisKKyAgICAgICAgQ2hhbmdlZCBhbGwgcmVm
ZXJlbmNlcyB0byBQbGF0Zm9ybVJlZlB0ciBpbiBHVEsrIGNvZGUgdG8gR1JlZlB0ci4KKwogMjAx
MS0wMS0wMiAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IEdU
SysgYnVpbGQuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHAKaW5kZXggNzkxMGM3YWM3OGYyNDY0MjMzNzdmZDhmNmJkNWIzMDc3NGMxNjQ5ZC4uMjU2ZWI3
NmJkODhiNTgyMTg2OGRkNGZlNTZjMDRjYThhYzM4NzhlZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQg
Q2hyb21lQ2xpZW50OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUq
IGZyYW1lLCBHZW9sb2NhdGlvCiAgICAgV2ViS2l0V2ViRnJhbWUqIHdlYkZyYW1lID0ga2l0KGZy
YW1lKTsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZSh3ZWJG
cmFtZSk7CiAKLSAgICBQbGF0Zm9ybVJlZlB0cjxXZWJLaXRHZW9sb2NhdGlvblBvbGljeURlY2lz
aW9uPiBwb2xpY3lEZWNpc2lvbihhZG9wdFBsYXRmb3JtUmVmKHdlYmtpdF9nZW9sb2NhdGlvbl9w
b2xpY3lfZGVjaXNpb25fbmV3KHdlYkZyYW1lLCBnZW9sb2NhdGlvbikpKTsKKyAgICBHUmVmUHRy
PFdlYktpdEdlb2xvY2F0aW9uUG9saWN5RGVjaXNpb24+IHBvbGljeURlY2lzaW9uKGFkb3B0R1Jl
Zih3ZWJraXRfZ2VvbG9jYXRpb25fcG9saWN5X2RlY2lzaW9uX25ldyh3ZWJGcmFtZSwgZ2VvbG9j
YXRpb24pKSk7CiAKICAgICBnYm9vbGVhbiBpc0hhbmRsZWQgPSBGQUxTRTsKICAgICBnX3NpZ25h
bF9lbWl0X2J5X25hbWUod2ViVmlldywgImdlb2xvY2F0aW9uLXBvbGljeS1kZWNpc2lvbi1yZXF1
ZXN0ZWQiLCB3ZWJGcmFtZSwgcG9saWN5RGVjaXNpb24uZ2V0KCksICZpc0hhbmRsZWQpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggNWYzOTFlY2Ey
OTliNGZhMzVkMjg5NTc2NGQyOGMwNTlmN2UxMmE5ZS4uZTcxMjc5MjYxY2RhODZjZDcxZWM4OTBj
MjRkYTRjNTViNDIzZmRjOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGll
bnRHdGsuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBEcmFnQ2xpZW50OjpzdGFydERyYWco
RHJhZ0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLAogCiAg
ICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3
KGtpdChmcmFtZSkpOwogICAgIFJlZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRhT2JqZWN0ID0gY2xp
cGJvYXJkR3RrLT5kYXRhT2JqZWN0KCk7Ci0gICAgUGxhdGZvcm1SZWZQdHI8R3RrVGFyZ2V0TGlz
dD4gdGFyZ2V0TGlzdChjbGlwYm9hcmRHdGstPmhlbHBlcigpLT50YXJnZXRMaXN0Rm9yRGF0YU9i
amVjdChkYXRhT2JqZWN0LmdldCgpKSk7CisgICAgR1JlZlB0cjxHdGtUYXJnZXRMaXN0PiB0YXJn
ZXRMaXN0KGNsaXBib2FyZEd0ay0+aGVscGVyKCktPnRhcmdldExpc3RGb3JEYXRhT2JqZWN0KGRh
dGFPYmplY3QuZ2V0KCkpKTsKICAgICBHT3duUHRyPEdka0V2ZW50PiBjdXJyZW50RXZlbnQoZ3Rr
X2dldF9jdXJyZW50X2V2ZW50KCkpOwogCiAgICAgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQgPSBn
dGtfZHJhZ19iZWdpbihHVEtfV0lER0VUKG1fd2ViVmlldyksIHRhcmdldExpc3QuZ2V0KCksIGRy
YWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKGNsaXBib2FyZC0+c291cmNlT3BlcmF0aW9uKCkp
LCAxLCBjdXJyZW50RXZlbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9EcmFnQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdD
bGllbnRHdGsuaAppbmRleCAwODZlYzY5OGUwN2YxMzliNmU4YzQxYjZmM2I0ZjE0ZDMxYWM2NjVl
Li45YzZkOTQ4ZmU5MjVkNTdmYjMyYjJmZWVjODc2ZDlhNGQ2OGVmMDFlIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaApAQCAtNTksNyArNTksNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKICAgICBwcml2YXRlOgogICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZp
ZXc7CiAgICAgICAgIFdlYkNvcmU6OkludFBvaW50IG1fc3RhcnRQb3M7Ci0gICAgICAgIFBsYXRm
b3JtUmVmUHRyPEd0a1dpZGdldD4gbV9kcmFnSWNvbldpbmRvdzsKKyAgICAgICAgR1JlZlB0cjxH
dGtXaWRnZXQ+IG1fZHJhZ0ljb25XaW5kb3c7CiAgICAgICAgIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IG1fZHJhZ0ltYWdlOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEd0ay5jcHAKaW5kZXggM2Y1NWNjYTY4YzMxM2E4ZDcyMTQ4MGNiOTU0YzVl
Y2IxNjNiYjU1ZC4uM2MyMzg1ZmMxOTlkOWIwZTgyYTcxNmJkNjBjMGQ4ZmM3NDJiOTBmMiAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCisr
KyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcApAQCAtMjcw
LDcgKzI3MCw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wg
YWN0aXZlKQogYm9vbCBFZGl0b3JDbGllbnQ6OnNob3VsZERlbGV0ZVJhbmdlKFJhbmdlKiByYW5n
ZSkKIHsKICAgICBnYm9vbGVhbiBhY2NlcHQgPSBUUlVFOwotICAgIFBsYXRmb3JtUmVmUHRyPFdl
YktpdERPTVJhbmdlPiBraXRSYW5nZShhZG9wdFBsYXRmb3JtUmVmKGtpdChyYW5nZSkpKTsKKyAg
ICBHUmVmUHRyPFdlYktpdERPTVJhbmdlPiBraXRSYW5nZShhZG9wdEdSZWYoa2l0KHJhbmdlKSkp
OwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJzaG91bGQtZGVsZXRlLXJh
bmdlIiwga2l0UmFuZ2UuZ2V0KCksICZhY2NlcHQpOwogICAgIHJldHVybiBhY2NlcHQ7CiB9CkBA
IC0yNzgsNyArMjc4LDcgQEAgYm9vbCBFZGl0b3JDbGllbnQ6OnNob3VsZERlbGV0ZVJhbmdlKFJh
bmdlKiByYW5nZSkKIGJvb2wgRWRpdG9yQ2xpZW50OjpzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNl
KEhUTUxFbGVtZW50KiBlbGVtZW50KQogewogICAgIGdib29sZWFuIGFjY2VwdCA9IFRSVUU7Ci0g
ICAgUGxhdGZvcm1SZWZQdHI8V2ViS2l0RE9NSFRNTEVsZW1lbnQ+IGtpdEVsZW1lbnQoYWRvcHRQ
bGF0Zm9ybVJlZihraXQoZWxlbWVudCkpKTsKKyAgICBHUmVmUHRyPFdlYktpdERPTUhUTUxFbGVt
ZW50PiBraXRFbGVtZW50KGFkb3B0R1JlZihraXQoZWxlbWVudCkpKTsKICAgICBnX3NpZ25hbF9l
bWl0X2J5X25hbWUobV93ZWJWaWV3LCAic2hvdWxkLXNob3ctZGVsZXRlLWludGVyZmFjZS1mb3It
ZWxlbWVudCIsIGtpdEVsZW1lbnQuZ2V0KCksICZhY2NlcHQpOwogICAgIHJldHVybiBhY2NlcHQ7
CiB9CkBAIC0zMTAsNyArMzEwLDcgQEAgYm9vbCBFZGl0b3JDbGllbnQ6OnNob3VsZEJlZ2luRWRp
dGluZyhXZWJDb3JlOjpSYW5nZSogcmFuZ2UpCiAgICAgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24o
KTsKIAogICAgIGdib29sZWFuIGFjY2VwdCA9IFRSVUU7Ci0gICAgUGxhdGZvcm1SZWZQdHI8V2Vi
S2l0RE9NUmFuZ2U+IGtpdFJhbmdlKGFkb3B0UGxhdGZvcm1SZWYoa2l0KHJhbmdlKSkpOworICAg
IEdSZWZQdHI8V2ViS2l0RE9NUmFuZ2U+IGtpdFJhbmdlKGFkb3B0R1JlZihraXQocmFuZ2UpKSk7
CiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fd2ViVmlldywgInNob3VsZC1iZWdpbi1lZGl0
aW5nIiwga2l0UmFuZ2UuZ2V0KCksICZhY2NlcHQpOwogICAgIHJldHVybiBhY2NlcHQ7CiB9CkBA
IC0zMjAsNyArMzIwLDcgQEAgYm9vbCBFZGl0b3JDbGllbnQ6OnNob3VsZEVuZEVkaXRpbmcoV2Vi
Q29yZTo6UmFuZ2UqIHJhbmdlKQogICAgIGNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCk7CiAKICAg
ICBnYm9vbGVhbiBhY2NlcHQgPSBUUlVFOwotICAgIFBsYXRmb3JtUmVmUHRyPFdlYktpdERPTVJh
bmdlPiBraXRSYW5nZShhZG9wdFBsYXRmb3JtUmVmKGtpdChyYW5nZSkpKTsKKyAgICBHUmVmUHRy
PFdlYktpdERPTVJhbmdlPiBraXRSYW5nZShhZG9wdEdSZWYoa2l0KHJhbmdlKSkpOwogICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJzaG91bGQtZW5kLWVkaXRpbmciLCBraXRS
YW5nZS5nZXQoKSwgJmFjY2VwdCk7CiAgICAgcmV0dXJuIGFjY2VwdDsKIH0KQEAgLTM0Miw3ICsz
NDIsNyBAQCBzdGF0aWMgV2ViS2l0SW5zZXJ0QWN0aW9uIGtpdChFZGl0b3JJbnNlcnRBY3Rpb24g
YWN0aW9uKQogYm9vbCBFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKIHsKICAg
ICBnYm9vbGVhbiBhY2NlcHQgPSBUUlVFOwotICAgIFBsYXRmb3JtUmVmUHRyPFdlYktpdERPTVJh
bmdlPiBraXRSYW5nZShhZG9wdFBsYXRmb3JtUmVmKGtpdChyYW5nZSkpKTsKKyAgICBHUmVmUHRy
PFdlYktpdERPTVJhbmdlPiBraXRSYW5nZShhZG9wdEdSZWYoa2l0KHJhbmdlKSkpOwogICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJzaG91bGQtaW5zZXJ0LXRleHQiLCBzdHJp
bmcudXRmOCgpLmRhdGEoKSwga2l0UmFuZ2UuZ2V0KCksIGtpdChhY3Rpb24pLCAmYWNjZXB0KTsK
ICAgICByZXR1cm4gYWNjZXB0OwogfQpAQCAtMzYyLDggKzM2Miw4IEBAIHN0YXRpYyBXZWJLaXRT
ZWxlY3Rpb25BZmZpbml0eSBraXQoRUFmZmluaXR5IGFmZmluaXR5KQogYm9vbCBFZGl0b3JDbGll
bnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoUmFuZ2UqIGZyb21SYW5nZSwgUmFuZ2UqIHRv
UmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykKIHsKICAgICBn
Ym9vbGVhbiBhY2NlcHQgPSBUUlVFOwotICAgIFBsYXRmb3JtUmVmUHRyPFdlYktpdERPTVJhbmdl
PiBraXRGcm9tUmFuZ2UoZnJvbVJhbmdlID8gYWRvcHRQbGF0Zm9ybVJlZihraXQoZnJvbVJhbmdl
KSkgOiAwKTsKLSAgICBQbGF0Zm9ybVJlZlB0cjxXZWJLaXRET01SYW5nZT4ga2l0VG9SYW5nZSh0
b1JhbmdlID8gYWRvcHRQbGF0Zm9ybVJlZihraXQodG9SYW5nZSkpIDogMCk7CisgICAgR1JlZlB0
cjxXZWJLaXRET01SYW5nZT4ga2l0RnJvbVJhbmdlKGZyb21SYW5nZSA/IGFkb3B0R1JlZihraXQo
ZnJvbVJhbmdlKSkgOiAwKTsKKyAgICBHUmVmUHRyPFdlYktpdERPTVJhbmdlPiBraXRUb1Jhbmdl
KHRvUmFuZ2UgPyBhZG9wdEdSZWYoa2l0KHRvUmFuZ2UpKSA6IDApOwogICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZShtX3dlYlZpZXcsICJzaG91bGQtY2hhbmdlLXNlbGVjdGVkLXJhbmdlIiwga2l0
RnJvbVJhbmdlLmdldCgpLCBraXRUb1JhbmdlLmdldCgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBraXQoYWZmaW5pdHkpLCBzdGlsbFNlbGVjdGluZywgJmFjY2VwdCk7CiAgICAgcmV0dXJu
IGFjY2VwdDsKQEAgLTM3Miw4ICszNzIsOCBAQCBib29sIEVkaXRvckNsaWVudDo6c2hvdWxkQ2hh
bmdlU2VsZWN0ZWRSYW5nZShSYW5nZSogZnJvbVJhbmdlLCBSYW5nZSogdG9SYW5nZSwgRQogYm9v
bCBFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJh
dGlvbiogZGVjbGFyYXRpb24sIFdlYkNvcmU6OlJhbmdlKiByYW5nZSkKIHsKICAgICBnYm9vbGVh
biBhY2NlcHQgPSBUUlVFOwotICAgIFBsYXRmb3JtUmVmUHRyPFdlYktpdERPTUNTU1N0eWxlRGVj
bGFyYXRpb24+IGtpdERlY2xhcmF0aW9uKGtpdChkZWNsYXJhdGlvbikpOwotICAgIFBsYXRmb3Jt
UmVmUHRyPFdlYktpdERPTVJhbmdlPiBraXRSYW5nZShhZG9wdFBsYXRmb3JtUmVmKGtpdChyYW5n
ZSkpKTsKKyAgICBHUmVmUHRyPFdlYktpdERPTUNTU1N0eWxlRGVjbGFyYXRpb24+IGtpdERlY2xh
cmF0aW9uKGtpdChkZWNsYXJhdGlvbikpOworICAgIEdSZWZQdHI8V2ViS2l0RE9NUmFuZ2U+IGtp
dFJhbmdlKGFkb3B0R1JlZihraXQocmFuZ2UpKSk7CiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1l
KG1fd2ViVmlldywgInNob3VsZC1hcHBseS1zdHlsZSIsIGtpdERlY2xhcmF0aW9uLmdldCgpLCBr
aXRSYW5nZS5nZXQoKSwgJmFjY2VwdCk7CiAgICAgcmV0dXJuIGFjY2VwdDsKIH0KQEAgLTU0Myw4
ICs1NDMsOCBAQCB2b2lkIEVkaXRvckNsaWVudDo6cmVkbygpCiBib29sIEVkaXRvckNsaWVudDo6
c2hvdWxkSW5zZXJ0Tm9kZShOb2RlKiBub2RlLCBSYW5nZSogcmFuZ2UsIEVkaXRvckluc2VydEFj
dGlvbiBhY3Rpb24pCiB7CiAgICAgZ2Jvb2xlYW4gYWNjZXB0ID0gVFJVRTsKLSAgICBQbGF0Zm9y
bVJlZlB0cjxXZWJLaXRET01SYW5nZT4ga2l0UmFuZ2UoYWRvcHRQbGF0Zm9ybVJlZihraXQocmFu
Z2UpKSk7Ci0gICAgUGxhdGZvcm1SZWZQdHI8V2ViS2l0RE9NTm9kZT4ga2l0Tm9kZShhZG9wdFBs
YXRmb3JtUmVmKGtpdChub2RlKSkpOworICAgIEdSZWZQdHI8V2ViS2l0RE9NUmFuZ2U+IGtpdFJh
bmdlKGFkb3B0R1JlZihraXQocmFuZ2UpKSk7CisgICAgR1JlZlB0cjxXZWJLaXRET01Ob2RlPiBr
aXROb2RlKGFkb3B0R1JlZihraXQobm9kZSkpKTsKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUo
bV93ZWJWaWV3LCAic2hvdWxkLWluc2VydC1ub2RlIiwga2l0Tm9kZS5nZXQoKSwga2l0UmFuZ2Uu
Z2V0KCksIGtpdChhY3Rpb24pLCAmYWNjZXB0KTsKICAgICByZXR1cm4gYWNjZXB0OwogfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgKaW5kZXggZjJkYjFkOTk3
ZTJjZjc2MGEyMTNmYzVkYzk3ZjMyYTA3YmEzYTExMi4uMjE0ZGJkNjZjMWMyN2Y2YzY4NGY4MmMz
ZmM3OGYzNDRiYmQ3MDI2MSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEd0ay5oCkBAIC0xNDAsNyArMTQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAg
IGJvb2wgbV90cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50OwogICAgICAgICBHT3duUHRyPGdj
aGFyPiBtX3BlbmRpbmdDb21wb3NpdGlvbjsKICAgICAgICAgVmVjdG9yPGNvbnN0IGNoYXIqPiBt
X3BlbmRpbmdFZGl0b3JDb21tYW5kczsKLSAgICAgICAgUGxhdGZvcm1SZWZQdHI8R3RrV2lkZ2V0
PiBtX25hdGl2ZVdpZGdldDsKKyAgICAgICAgR1JlZlB0cjxHdGtXaWRnZXQ+IG1fbmF0aXZlV2lk
Z2V0OwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5jcHAKaW5kZXggODk1ZTY0ZTY0OWJhODQzNWM0Y2UzYWZjMzY5Njk0
Njk5MGEzNWQzNS4uM2FjYTZhM2ZiMTMyMmQ5NDM0NWMyNGIzYTgzYjFkNGUxZGUwZDliZSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAKQEAgLTMwOSwxOSArMzA5LDE5IEBAIHN0YXRpYyBjaGFyKiB0b1N0cmluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNl
bmRSZXF1ZXN0KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewotICAgIFBsYXRmb3JtUmVmUHRyPFdlYktpdE5ldHdv
cmtSZXNwb25zZT4gbmV0d29ya1Jlc3BvbnNlKDApOworICAgIEdSZWZQdHI8V2ViS2l0TmV0d29y
a1Jlc3BvbnNlPiBuZXR3b3JrUmVzcG9uc2UoMCk7CiAKICAgICAvLyBXZSBhcmUgYWRkaW5nIG9u
ZSBtb3JlIHJlc291cmNlIHRvIHRoZSBsb2FkLCBvciBtYXliZSB3ZSBhcmUKICAgICAvLyBqdXN0
IHJlZGlyZWN0aW5nIGEgbG9hZC4KICAgICBpZiAocmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkK
ICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0OjpEb2N1bWVudExvYWRlcio+KGxvYWRlciktPmlu
Y3JlYXNlTG9hZENvdW50KGlkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbmV0d29ya1Jl
c3BvbnNlID0gYWRvcHRQbGF0Zm9ybVJlZihraXROZXcocmVkaXJlY3RSZXNwb25zZSkpOworICAg
ICAgICBuZXR3b3JrUmVzcG9uc2UgPSBhZG9wdEdSZWYoa2l0TmV3KHJlZGlyZWN0UmVzcG9uc2Up
KTsKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJh
bWUpOwogICAgIEdPd25QdHI8Z2NoYXI+IGlkZW50aWZpZXJTdHJpbmcodG9TdHJpbmcoaWRlbnRp
ZmllcikpOwogICAgIFdlYktpdFdlYlJlc291cmNlKiB3ZWJSZXNvdXJjZSA9IHdlYmtpdF93ZWJf
dmlld19nZXRfcmVzb3VyY2Uod2ViVmlldywgaWRlbnRpZmllclN0cmluZy5nZXQoKSk7Ci0gICAg
UGxhdGZvcm1SZWZQdHI8V2ViS2l0TmV0d29ya1JlcXVlc3Q+IG5ldHdvcmtSZXF1ZXN0KGFkb3B0
UGxhdGZvcm1SZWYoa2l0TmV3KHJlcXVlc3QpKSk7CisgICAgR1JlZlB0cjxXZWJLaXROZXR3b3Jr
UmVxdWVzdD4gbmV0d29ya1JlcXVlc3QoYWRvcHRHUmVmKGtpdE5ldyhyZXF1ZXN0KSkpOwogCiAg
ICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMg
YSByZWRpcmVjdCwgc28gd2UgbmVlZCB0byB1cGRhdGUgdGhlIFdlYlJlc291cmNlJ3Mga25vd2xl
ZGdlCkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGkKICAgICB9CiAK
ICAgICBXZWJLaXRXZWJWaWV3KiBwYWdlID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsKLSAg
ICBQbGF0Zm9ybVJlZlB0cjxXZWJLaXROZXR3b3JrUmVxdWVzdD4gcmVxdWVzdChhZG9wdFBsYXRm
b3JtUmVmKGtpdE5ldyhyZXNvdXJjZVJlcXVlc3QpKSk7CisgICAgR1JlZlB0cjxXZWJLaXROZXR3
b3JrUmVxdWVzdD4gcmVxdWVzdChhZG9wdEdSZWYoa2l0TmV3KHJlc291cmNlUmVxdWVzdCkpKTsK
IAogICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBwb2xpY3lEZWNpc2lvbiA9IHdlYmtpdF93
ZWJfcG9saWN5X2RlY2lzaW9uX25ldyhtX2ZyYW1lLCBwb2xpY3lGdW5jdGlvbik7CiAgICAgaWYg
KG1fcG9saWN5RGVjaXNpb24pCkBAIC00MjgsNyArNDI4LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9u
IHBvbGkKICAgICBpZiAoaXNIYW5kbGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBQbGF0Zm9y
bVJlZlB0cjxXZWJLaXROZXR3b3JrUmVzcG9uc2U+IG5ldHdvcmtSZXNwb25zZShhZG9wdFBsYXRm
b3JtUmVmKHdlYmtpdF93ZWJfZnJhbWVfZ2V0X25ldHdvcmtfcmVzcG9uc2UobV9mcmFtZSkpKTsK
KyAgICBHUmVmUHRyPFdlYktpdE5ldHdvcmtSZXNwb25zZT4gbmV0d29ya1Jlc3BvbnNlKGFkb3B0
R1JlZih3ZWJraXRfd2ViX2ZyYW1lX2dldF9uZXR3b3JrX3Jlc3BvbnNlKG1fZnJhbWUpKSk7CiAg
ICAgaWYgKG5ldHdvcmtSZXNwb25zZSkgewogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlID0gY29yZShuZXR3b3JrUmVzcG9uc2UuZ2V0KCkpOwogICAgICAgICBpZiAocmVzcG9uc2Uu
aXNBdHRhY2htZW50KCkpIHsKQEAgLTQ5NSw4ICs0OTUsOCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1
bmN0aQogICAgIG1fcG9saWN5RGVjaXNpb24gPSBwb2xpY3lEZWNpc2lvbjsKIAogICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOwotICAgIFBsYXRm
b3JtUmVmUHRyPFdlYktpdE5ldHdvcmtSZXF1ZXN0PiByZXF1ZXN0KGFkb3B0UGxhdGZvcm1SZWYo
d2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcocmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpKSk7Ci0gICAgUGxhdGZvcm1SZWZQdHI8V2ViS2l0V2ViTmF2aWdhdGlv
bkFjdGlvbj4gbmF2aWdhdGlvbkFjdGlvbihhZG9wdFBsYXRmb3JtUmVmKGdldE5hdmlnYXRpb25B
Y3Rpb24oYWN0aW9uLCBmcmFtZU5hbWUudXRmOCgpLmRhdGEoKSkpKTsKKyAgICBHUmVmUHRyPFdl
YktpdE5ldHdvcmtSZXF1ZXN0PiByZXF1ZXN0KGFkb3B0R1JlZih3ZWJraXRfbmV0d29ya19yZXF1
ZXN0X25ldyhyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpKTsK
KyAgICBHUmVmUHRyPFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24+IG5hdmlnYXRpb25BY3Rpb24o
YWRvcHRHUmVmKGdldE5hdmlnYXRpb25BY3Rpb24oYWN0aW9uLCBmcmFtZU5hbWUudXRmOCgpLmRh
dGEoKSkpKTsKICAgICBnYm9vbGVhbiBpc0hhbmRsZWQgPSBmYWxzZTsKIAogICAgIGdfc2lnbmFs
X2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAibmV3LXdpbmRvdy1wb2xpY3ktZGVjaXNpb24tcmVxdWVz
dGVkIiwgbV9mcmFtZSwgcmVxdWVzdC5nZXQoKSwgbmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgcG9s
aWN5RGVjaXNpb24sICZpc0hhbmRsZWQpOwpAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFt
ZVBvbGljeUZ1bmN0CiAgICAgfQogCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZp
ZXdGcm9tRnJhbWUobV9mcmFtZSk7Ci0gICAgUGxhdGZvcm1SZWZQdHI8V2ViS2l0TmV0d29ya1Jl
cXVlc3Q+IHJlcXVlc3QoYWRvcHRQbGF0Zm9ybVJlZihraXROZXcocmVzb3VyY2VSZXF1ZXN0KSkp
OworICAgIEdSZWZQdHI8V2ViS2l0TmV0d29ya1JlcXVlc3Q+IHJlcXVlc3QoYWRvcHRHUmVmKGtp
dE5ldyhyZXNvdXJjZVJlcXVlc3QpKSk7CiAgICAgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlIHJl
c3BvbnNlOwogICAgIC8qCiAgICAgICogV2Ugc3RpbGwgc3VwcG9ydCB0aGUgZGVwcmVjYXRlZCBu
YXZpZ2F0aW9uLXJlcXVlc3RlZCBzaWduYWwsIGlmIHRoZQpAQCAtNTQwLDcgKzU0MCw3IEBAIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihGcmFtZVBvbGljeUZ1bmN0CiAgICAgICAgIGdfb2JqZWN0X3VucmVmKG1fcG9saWN5RGVj
aXNpb24pOwogICAgIG1fcG9saWN5RGVjaXNpb24gPSBwb2xpY3lEZWNpc2lvbjsKIAotICAgIFBs
YXRmb3JtUmVmUHRyPFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24+IG5hdmlnYXRpb25BY3Rpb24o
YWRvcHRQbGF0Zm9ybVJlZihnZXROYXZpZ2F0aW9uQWN0aW9uKGFjdGlvbiwgMCkpKTsKKyAgICBH
UmVmUHRyPFdlYktpdFdlYk5hdmlnYXRpb25BY3Rpb24+IG5hdmlnYXRpb25BY3Rpb24oYWRvcHRH
UmVmKGdldE5hdmlnYXRpb25BY3Rpb24oYWN0aW9uLCAwKSkpOwogICAgIGdib29sZWFuIGlzSGFu
ZGxlZCA9IGZhbHNlOwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAibmF2aWdh
dGlvbi1wb2xpY3ktZGVjaXNpb24tcmVxdWVzdGVkIiwgbV9mcmFtZSwgcmVxdWVzdC5nZXQoKSwg
bmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgcG9saWN5RGVjaXNpb24sICZpc0hhbmRsZWQpOwogCkBA
IC01NTYsNyArNTU2LDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFQKICAgICBDU3RyaW5nIG1p
bWVUeXBlU3RyaW5nID0gbWltZVR5cGUudXRmOCgpOwogCiAgICAgQVNTRVJUKHBhcmFtTmFtZXMu
c2l6ZSgpID09IHBhcmFtVmFsdWVzLnNpemUoKSk7Ci0gICAgUGxhdGZvcm1SZWZQdHI8R0hhc2hU
YWJsZT4gaGFzaCA9IGFkb3B0UGxhdGZvcm1SZWYoZ19oYXNoX3RhYmxlX25ld19mdWxsKGdfc3Ry
X2hhc2gsIGdfc3RyX2VxdWFsLCBnX2ZyZWUsIGdfZnJlZSkpOworICAgIEdSZWZQdHI8R0hhc2hU
YWJsZT4gaGFzaCA9IGFkb3B0R1JlZihnX2hhc2hfdGFibGVfbmV3X2Z1bGwoZ19zdHJfaGFzaCwg
Z19zdHJfZXF1YWwsIGdfZnJlZSwgZ19mcmVlKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHBhcmFtTmFtZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgZ19oYXNoX3RhYmxlX2luc2Vy
dChoYXNoLmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfc3RyZHVwKHBhcmFt
TmFtZXNbaV0udXRmOCgpLmRhdGEoKSksCkBAIC0xMTY4LDcgKzExNjgsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpkb3dubG9hZChSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIFBsYXRmb3Jt
UmVmUHRyPFdlYktpdE5ldHdvcmtSZXF1ZXN0PiBuZXR3b3JrUmVxdWVzdChhZG9wdFBsYXRmb3Jt
UmVmKGtpdE5ldyhyZXF1ZXN0KSkpOworICAgIEdSZWZQdHI8V2ViS2l0TmV0d29ya1JlcXVlc3Q+
IG5ldHdvcmtSZXF1ZXN0KGFkb3B0R1JlZihraXROZXcocmVxdWVzdCkpKTsKICAgICBXZWJLaXRX
ZWJWaWV3KiB2aWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsKIAogICAgIHdlYmtpdF93
ZWJfdmlld19yZXF1ZXN0X2Rvd25sb2FkKHZpZXcsIG5ldHdvcmtSZXF1ZXN0LmdldCgpLCByZXNw
b25zZSwgaGFuZGxlKTsKQEAgLTEyNTYsNyArMTI1Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OnNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3Qg
UmVzCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnN0YXJ0RG93bmxvYWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIFBsYXRmb3JtUmVmUHRyPFdlYktpdE5ldHdvcmtS
ZXF1ZXN0PiBuZXR3b3JrUmVxdWVzdChhZG9wdFBsYXRmb3JtUmVmKGtpdE5ldyhyZXF1ZXN0KSkp
OworICAgIEdSZWZQdHI8V2ViS2l0TmV0d29ya1JlcXVlc3Q+IG5ldHdvcmtSZXF1ZXN0KGFkb3B0
R1JlZihraXROZXcocmVxdWVzdCkpKTsKICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gZ2V0Vmll
d0Zyb21GcmFtZShtX2ZyYW1lKTsKIAogICAgIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2Rvd25s
b2FkKHZpZXcsIG5ldHdvcmtSZXF1ZXN0LmdldCgpKTsKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIHN0
YXRpYyB2b2lkIHBvc3RDb21taXRGcmFtZVZpZXdTZXR1cChXZWJLaXRXZWJGcmFtZSAqZnJhbWUs
IEZyYW1lVmlldyAqdmlldywgYm9vCiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKGNvbnRh
aW5pbmdXaW5kb3ctPnByaXYtPnZpZXdwb3J0QXR0cmlidXRlcy5nZXQoKSksICJ2YWxpZCIpOwog
CiAgICAgaWYgKHByaXYtPmN1cnJlbnRNZW51KSB7Ci0gICAgICAgIFBsYXRmb3JtUmVmUHRyPEd0
a01lbnU+IG1lbnUocHJpdi0+Y3VycmVudE1lbnUpOworICAgICAgICBHUmVmUHRyPEd0a01lbnU+
IG1lbnUocHJpdi0+Y3VycmVudE1lbnUpOwogICAgICAgICBwcml2LT5jdXJyZW50TWVudS5jbGVh
cigpOwogICAgICAgICBndGtfbWVudV9wb3Bkb3duKG1lbnUuZ2V0KCkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcCBi
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAppbmRleCBj
MjY5MDc4YmU0ODdhMzgwOWJkMmFjMGVhNDYxZGM5OGQzODdiMjRiLi41NWU1MTliYTQ4NTUyYmFi
ZmViMWI0ZjMwZWEzMDU3MzNkZmQ0MTk5IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JDbGllbnQ6OnBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiB2
YWx1ZSkKICAgICBpZiAoIXNldHRpbmdzKQogICAgICAgICByZXR1cm47CiAKLSAgICBQbGF0Zm9y
bVJlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGFkb3B0UGxhdGZvcm1SZWYoZ19zZXR0aW5nc19n
ZXRfdmFsdWUoc2V0dGluZ3MsIHRvR1NldHRpbmdOYW1lKGtleSkudXRmOCgpLmRhdGEoKSkpOwor
ICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBhZG9wdEdSZWYoZ19zZXR0aW5nc19nZXRf
dmFsdWUoc2V0dGluZ3MsIHRvR1NldHRpbmdOYW1lKGtleSkudXRmOCgpLmRhdGEoKSkpOwogCiAg
ICAgaWYgKGtleSA9PSAicmVzb3VyY2VUcmFja2luZ0VuYWJsZWQiIHx8IGtleSA9PSAieGhyTW9u
aXRvciIKICAgICAgICAgfHwga2V5ID09ICJkZWJ1Z2dlckVuYWJsZWQiIHx8IGtleSA9PSAicHJv
ZmlsZXJFbmFibGVkIikKQEAgLTE5OCwxNSArMTk4LDE1IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50
OjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgaWYgKCFzZXR0aW5ncykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUGxhdGZvcm1SZWZQdHI8
R1ZhcmlhbnQ+IHZhcmlhbnQoMCk7CisgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCgwKTsK
IAogICAgIC8vIFNldCB0aGUga2V5IHdpdGggdGhlIGFwcHJvcHJpYXRlIHR5cGUsIGFuZCBhbHNv
IGF2b2lkIHNldHRpbmcKICAgICAvLyB1bmtub3duIGtleXMgdG8gYXZvaWQgYWJvcnRpbmcgdGhl
IGV4ZWN1dGlvbi4KICAgICBpZiAoa2V5ID09ICJyZXNvdXJjZVRyYWNraW5nRW5hYmxlZCIgfHwg
a2V5ID09ICJ4aHJNb25pdG9yIgogICAgICAgICB8fCBrZXkgPT0gImRlYnVnZ2VyRW5hYmxlZCIg
fHwga2V5ID09ICJwcm9maWxlckVuYWJsZWQiKQotICAgICAgICB2YXJpYW50ID0gYWRvcHRQbGF0
Zm9ybVJlZih2YXJpYW50RnJvbVRydXRoU3RyaW5nKHZhbHVlKSk7CisgICAgICAgIHZhcmlhbnQg
PSBhZG9wdEdSZWYodmFyaWFudEZyb21UcnV0aFN0cmluZyh2YWx1ZSkpOwogICAgIGVsc2UgaWYg
KGtleSA9PSAiZnJvbnRlbmRTZXR0aW5ncyIpCi0gICAgICAgIHZhcmlhbnQgPSBhZG9wdFBsYXRm
b3JtUmVmKGdfdmFyaWFudF9uZXdfc3RyaW5nKHZhbHVlLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAg
ICAgdmFyaWFudCA9IGFkb3B0R1JlZihnX3ZhcmlhbnRfbmV3X3N0cmluZyh2YWx1ZS51dGY4KCku
ZGF0YSgpKSk7CiAKICAgICBpZiAoIXZhcmlhbnQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRvd25sb2FkLmNwcCBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGRvd25sb2FkLmNwcAppbmRleCA2YmU1OTFjZGZhYTRmYTEyYjZhYTBjNDA2YTQ2
ZjEzMTcxYWIzZTg3Li44YmZjNjAzNzI4NjE0NTE2M2IyOTk2MDgxODMyYjRhMjhlMzdiM2UxIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9hZC5jcHAKKysrIGIvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwCkBAIC05MDcsNyArOTA3LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X2Rvd25sb2FkX2Vycm9yKFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwg
Y29uc3QgUmVzb3VyY2VFcnJvciYKICAgICB3ZWJraXRfZG93bmxvYWRfY2xvc2Vfc3RyZWFtKGRv
d25sb2FkKTsKIAogICAgIFdlYktpdERvd25sb2FkUHJpdmF0ZSogcHJpdiA9IGRvd25sb2FkLT5w
cml2OwotICAgIFBsYXRmb3JtUmVmUHRyPFdlYktpdERvd25sb2FkPiBwcm90ZWN0KGRvd25sb2Fk
KTsKKyAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBwcm90ZWN0KGRvd25sb2FkKTsKIAogICAg
IGdfdGltZXJfc3RvcChwcml2LT50aW1lcik7CiAgICAgd2Via2l0X2Rvd25sb2FkX3NldF9zdGF0
dXMoZG93bmxvYWQsIFdFQktJVF9ET1dOTE9BRF9TVEFUVVNfRVJST1IpOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuY3BwIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuY3BwCmluZGV4IDIzZjIyYTM0M2FhZjkzYWQwNzAx
NTEyNGU1MGI4MWZjMWFmYTdkNzguLmUxMzlhMmM2MmU5NDk3YzgyMWE3NDIyNmQ0MmVmMDNlZDg3
YzhiOTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0
LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5jcHAKQEAg
LTI1Myw3ICsyNTMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViS2l0TmV0d29ya1JlcXVl
c3QqIGtpdE5ldyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCkKIHsKLSAgICBQbGF0Zm9ybVJlZlB0cjxTb3VwTWVzc2FnZT4gc291cE1lc3NhZ2UoYWRvcHRQ
bGF0Zm9ybVJlZihyZXNvdXJjZVJlcXVlc3QudG9Tb3VwTWVzc2FnZSgpKSk7CisgICAgR1JlZlB0
cjxTb3VwTWVzc2FnZT4gc291cE1lc3NhZ2UoYWRvcHRHUmVmKHJlc291cmNlUmVxdWVzdC50b1Nv
dXBNZXNzYWdlKCkpKTsKICAgICBpZiAoc291cE1lc3NhZ2UpCiAgICAgICAgIHJldHVybiBXRUJL
SVRfTkVUV09SS19SRVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ORVRXT1JLX1JFUVVF
U1QsICJtZXNzYWdlIiwgc291cE1lc3NhZ2UuZ2V0KCksIE5VTEwpKTsKIApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3Jlc3BvbnNlLmNwcCBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdG5ldHdvcmtyZXNwb25zZS5jcHAKaW5kZXggZGEyOTIxMjQxOTc1Y2E4NGJj
ZDQ1ZWVjODE5ZmU0YzhkNGU3YWY0Yy4uNDRlNzk3MGNlOTczMDE0MWNiMjFjNWU1MzEyYjcyN2Q5
ZjZiNWM3MSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3Jlc3Bv
bnNlLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVzcG9uc2UuY3Bw
CkBAIC0yNjMsNyArMjYzLDcgQEAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBjb3JlKFdlYktp
dE5ldHdvcmtSZXNwb25zZSogcmVzcG9uc2UpCiAKIFdlYktpdE5ldHdvcmtSZXNwb25zZSoga2l0
TmV3KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCiB7
Ci0gICAgUGxhdGZvcm1SZWZQdHI8U291cE1lc3NhZ2U+IHNvdXBNZXNzYWdlKGFkb3B0UGxhdGZv
cm1SZWYocmVzb3VyY2VSZXNwb25zZS50b1NvdXBNZXNzYWdlKCkpKTsKKyAgICBHUmVmUHRyPFNv
dXBNZXNzYWdlPiBzb3VwTWVzc2FnZShhZG9wdEdSZWYocmVzb3VyY2VSZXNwb25zZS50b1NvdXBN
ZXNzYWdlKCkpKTsKICAgICBpZiAoc291cE1lc3NhZ2UpCiAgICAgICAgIHJldHVybiBXRUJLSVRf
TkVUV09SS19SRVNQT05TRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfTkVUV09SS19SRVNQT05T
RSwgIm1lc3NhZ2UiLCBzb3VwTWVzc2FnZS5nZXQoKSwgTlVMTCkpOwogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCmluZGV4IGM4MTQ0NzRjOGE4MmUzZmI3N2FlZjI2MGNiZmIxYzY1NTRi
MTc2NTIuLjM5ZDA2YmFlYmZiNzI5OGYwZjE0ZmU3NGRmM2EwM2NkYjljZDljOGUgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0zNDcxLDcgKzM0NzEsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfaW5pdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIC8vIG1l
bWJlcnMsIHdoaWNoIGVuc3VyZXMgdGhleSBhcmUgaW5pdGlhbGl6ZWQgcHJvcGVybHkuCiAgICAg
bmV3IChwcml2KSBXZWJLaXRXZWJWaWV3UHJpdmF0ZSgpOwogCi0gICAgcHJpdi0+aW1Db250ZXh0
ID0gYWRvcHRQbGF0Zm9ybVJlZihndGtfaW1fbXVsdGljb250ZXh0X25ldygpKTsKKyAgICBwcml2
LT5pbUNvbnRleHQgPSBhZG9wdEdSZWYoZ3RrX2ltX211bHRpY29udGV4dF9uZXcoKSk7CiAKICAg
ICBQYWdlOjpQYWdlQ2xpZW50cyBwYWdlQ2xpZW50czsKICAgICBwYWdlQ2xpZW50cy5jaHJvbWVD
bGllbnQgPSBuZXcgV2ViS2l0OjpDaHJvbWVDbGllbnQod2ViVmlldyk7CkBAIC0zNDg5LDExICsz
NDg5LDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiAKICAgICAvLyBXZSBhbHNvIGFkZCBhIHNpbXBsZSB3cmFwcGVyIGNsYXNzIHRv
IHByb3ZpZGUgdGhlIHB1YmxpYwogICAgIC8vIGludGVyZmFjZSBmb3IgdGhlIFdlYiBJbnNwZWN0
b3IuCi0gICAgcHJpdi0+d2ViSW5zcGVjdG9yID0gYWRvcHRQbGF0Zm9ybVJlZihXRUJLSVRfV0VC
X0lOU1BFQ1RPUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0lOU1BFQ1RPUiwgTlVMTCkp
KTsKKyAgICBwcml2LT53ZWJJbnNwZWN0b3IgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQl9JTlNQRUNU
T1IoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IsIE5VTEwpKSk7CiAgICAg
d2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X2luc3BlY3Rvcl9jbGllbnQocHJpdi0+d2ViSW5zcGVj
dG9yLmdldCgpLCBwcml2LT5jb3JlUGFnZSk7CiAKICAgICAvLyBBbmQgb3VyIFZpZXdwb3J0QXR0
cmlidXRlcyBmcmllbmQuCi0gICAgcHJpdi0+dmlld3BvcnRBdHRyaWJ1dGVzID0gYWRvcHRQbGF0
Zm9ybVJlZihXRUJLSVRfVklFV1BPUlRfQVRUUklCVVRFUyhnX29iamVjdF9uZXcoV0VCS0lUX1RZ
UEVfVklFV1BPUlRfQVRUUklCVVRFUywgTlVMTCkpKTsKKyAgICBwcml2LT52aWV3cG9ydEF0dHJp
YnV0ZXMgPSBhZG9wdEdSZWYoV0VCS0lUX1ZJRVdQT1JUX0FUVFJJQlVURVMoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX1ZJRVdQT1JUX0FUVFJJQlVURVMsIE5VTEwpKSk7CiAgICAgcHJpdi0+dmll
d3BvcnRBdHRyaWJ1dGVzLT5wcml2LT53ZWJWaWV3ID0gd2ViVmlldzsKIAogICAgIC8vIFRoZSBz
bWFydCBwb2ludGVyIHdpbGwgY2FsbCBnX29iamVjdF9yZWZfc2luayBvbiB0aGVzZSBhZGp1c3Rt
ZW50cy4KQEAgLTM1MDUsMTcgKzM1MDUsMTcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X2luaXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBwcml2LT5sYXN0UG9wdXBYUG9zaXRp
b24gPSBwcml2LT5sYXN0UG9wdXBZUG9zaXRpb24gPSAtMTsKICAgICBwcml2LT5lZGl0YWJsZSA9
IGZhbHNlOwogCi0gICAgcHJpdi0+YmFja0ZvcndhcmRMaXN0ID0gYWRvcHRQbGF0Zm9ybVJlZih3
ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X25ld193aXRoX3dlYl92aWV3KHdlYlZpZXcpKTsK
KyAgICBwcml2LT5iYWNrRm9yd2FyZExpc3QgPSBhZG9wdEdSZWYod2Via2l0X3dlYl9iYWNrX2Zv
cndhcmRfbGlzdF9uZXdfd2l0aF93ZWJfdmlldyh3ZWJWaWV3KSk7CiAKICAgICBwcml2LT56b29t
RnVsbENvbnRlbnQgPSBGQUxTRTsKIAotICAgIHByaXYtPndlYlNldHRpbmdzID0gYWRvcHRQbGF0
Zm9ybVJlZih3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpKTsKKyAgICBwcml2LT53ZWJTZXR0aW5n
cyA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpKTsKICAgICB3ZWJraXRfd2Vi
X3ZpZXdfdXBkYXRlX3NldHRpbmdzKHdlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJp
di0+d2ViU2V0dGluZ3MuZ2V0KCksICJub3RpZnkiLCBHX0NBTExCQUNLKHdlYmtpdF93ZWJfdmll
d19zZXR0aW5nc19ub3RpZnkpLCB3ZWJWaWV3KTsKIAotICAgIHByaXYtPndlYldpbmRvd0ZlYXR1
cmVzID0gYWRvcHRQbGF0Zm9ybVJlZih3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcoKSk7
CisgICAgcHJpdi0+d2ViV2luZG93RmVhdHVyZXMgPSBhZG9wdEdSZWYod2Via2l0X3dlYl93aW5k
b3dfZmVhdHVyZXNfbmV3KCkpOwogCi0gICAgcHJpdi0+c3ViUmVzb3VyY2VzID0gYWRvcHRQbGF0
Zm9ybVJlZihnX2hhc2hfdGFibGVfbmV3X2Z1bGwoZ19zdHJfaGFzaCwgZ19zdHJfZXF1YWwsIGdf
ZnJlZSwgZ19vYmplY3RfdW5yZWYpKTsKKyAgICBwcml2LT5zdWJSZXNvdXJjZXMgPSBhZG9wdEdS
ZWYoZ19oYXNoX3RhYmxlX25ld19mdWxsKGdfc3RyX2hhc2gsIGdfc3RyX2VxdWFsLCBnX2ZyZWUs
IGdfb2JqZWN0X3VucmVmKSk7CiAKICAgICBwcml2LT5jdXJyZW50Q2xpY2tDb3VudCA9IDA7CiAg
ICAgcHJpdi0+cHJldmlvdXNDbGlja0J1dHRvbiA9IDA7CkBAIC00ODkyLDcgKzQ4OTIsNyBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19hZGRfbWFpbl9yZXNvdXJjZShXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBjb25zdCBjaGFyKiBpZGVudAogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2
ID0gd2ViVmlldy0+cHJpdjsKIAotICAgIHByaXYtPm1haW5SZXNvdXJjZSA9IGFkb3B0UGxhdGZv
cm1SZWYod2ViUmVzb3VyY2UpOworICAgIHByaXYtPm1haW5SZXNvdXJjZSA9IGFkb3B0R1JlZih3
ZWJSZXNvdXJjZSk7CiAgICAgcHJpdi0+bWFpblJlc291cmNlSWRlbnRpZmllciA9IGlkZW50aWZp
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2
YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oCmluZGV4IGRl
YzZkYWRiZTJiZjY5Njc4YjA5MWFlZTk3NDk4MWFmZDg5NDA2OTcuLjI5ZGExZmU4N2RkNDkzN2M5
NDJmNWNmZmM3YjUwMWIzMjI3MDk3ZTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXdwcml2YXRlLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
d3ByaXZhdGUuaApAQCAtNTIsMjYgKzUyLDI2IEBAIGV4dGVybiAiQyIgewogdHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIFdlYktpdFdlYlZpZXdQcml2YXRlOwogc3RydWN0IF9X
ZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgV2ViQ29yZTo6UGFnZSogY29yZVBhZ2U7Ci0gICAg
UGxhdGZvcm1SZWZQdHI8V2ViS2l0V2ViU2V0dGluZ3M+IHdlYlNldHRpbmdzOwotICAgIFBsYXRm
b3JtUmVmUHRyPFdlYktpdFdlYkluc3BlY3Rvcj4gd2ViSW5zcGVjdG9yOwotICAgIFBsYXRmb3Jt
UmVmUHRyPFdlYktpdFZpZXdwb3J0QXR0cmlidXRlcz4gdmlld3BvcnRBdHRyaWJ1dGVzOwotICAg
IFBsYXRmb3JtUmVmUHRyPFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzPiB3ZWJXaW5kb3dGZWF0dXJl
czsKKyAgICBHUmVmUHRyPFdlYktpdFdlYlNldHRpbmdzPiB3ZWJTZXR0aW5nczsKKyAgICBHUmVm
UHRyPFdlYktpdFdlYkluc3BlY3Rvcj4gd2ViSW5zcGVjdG9yOworICAgIEdSZWZQdHI8V2ViS2l0
Vmlld3BvcnRBdHRyaWJ1dGVzPiB2aWV3cG9ydEF0dHJpYnV0ZXM7CisgICAgR1JlZlB0cjxXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlcz4gd2ViV2luZG93RmVhdHVyZXM7CiAKICAgICBXZWJLaXRXZWJG
cmFtZSogbWFpbkZyYW1lOwotICAgIFBsYXRmb3JtUmVmUHRyPFdlYktpdFdlYkJhY2tGb3J3YXJk
TGlzdD4gYmFja0ZvcndhcmRMaXN0OworICAgIEdSZWZQdHI8V2ViS2l0V2ViQmFja0ZvcndhcmRM
aXN0PiBiYWNrRm9yd2FyZExpc3Q7CiAKLSAgICBQbGF0Zm9ybVJlZlB0cjxHdGtNZW51PiBjdXJy
ZW50TWVudTsKKyAgICBHUmVmUHRyPEd0a01lbnU+IGN1cnJlbnRNZW51OwogICAgIGdpbnQgbGFz
dFBvcHVwWFBvc2l0aW9uOwogICAgIGdpbnQgbGFzdFBvcHVwWVBvc2l0aW9uOwogCiAgICAgSGFz
aFNldDxHdGtXaWRnZXQqPiBjaGlsZHJlbjsKICAgICBib29sIGVkaXRhYmxlOwotICAgIFBsYXRm
b3JtUmVmUHRyPEd0a0lNQ29udGV4dD4gaW1Db250ZXh0OworICAgIEdSZWZQdHI8R3RrSU1Db250
ZXh0PiBpbUNvbnRleHQ7CiAKICAgICBnYm9vbGVhbiB0cmFuc3BhcmVudDsKIAotICAgIFBsYXRm
b3JtUmVmUHRyPEd0a0FkanVzdG1lbnQ+IGhvcml6b250YWxBZGp1c3RtZW50OwotICAgIFBsYXRm
b3JtUmVmUHRyPEd0a0FkanVzdG1lbnQ+IHZlcnRpY2FsQWRqdXN0bWVudDsKKyAgICBHUmVmUHRy
PEd0a0FkanVzdG1lbnQ+IGhvcml6b250YWxBZGp1c3RtZW50OworICAgIEdSZWZQdHI8R3RrQWRq
dXN0bWVudD4gdmVydGljYWxBZGp1c3RtZW50OwogCiAjaWZuZGVmIEdUS19BUElfVkVSU0lPTl8y
CiAgICAgLy8gR3RrU2Nyb2xsYWJsZVBvbGljeSBuZWVkcyB0byBiZSBjaGVja2VkIHdoZW4KQEAg
LTk2LDkgKzk2LDkgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAKICAgICAvLyBU
aGVzZSBhcmUgaG9zdGVkIGhlcmUgYmVjYXVzZSB0aGUgRGF0YVNvdXJjZSBvYmplY3QgaXMKICAg
ICAvLyBjcmVhdGVkIHRvbyBsYXRlIGluIHRoZSBmcmFtZSBsb2FkaW5nIHByb2Nlc3MuCi0gICAg
UGxhdGZvcm1SZWZQdHI8V2ViS2l0V2ViUmVzb3VyY2U+IG1haW5SZXNvdXJjZTsKKyAgICBHUmVm
UHRyPFdlYktpdFdlYlJlc291cmNlPiBtYWluUmVzb3VyY2U7CiAgICAgQ1N0cmluZyBtYWluUmVz
b3VyY2VJZGVudGlmaWVyOwotICAgIFBsYXRmb3JtUmVmUHRyPEdIYXNoVGFibGU+IHN1YlJlc291
cmNlczsKKyAgICBHUmVmUHRyPEdIYXNoVGFibGU+IHN1YlJlc291cmNlczsKICAgICBDU3RyaW5n
IHRvb2x0aXBUZXh0OwogICAgIFdlYkNvcmU6OkludFJlY3QgdG9vbHRpcEFyZWE7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>