<?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>150338</bug_id>
          
          <creation_ts>2015-10-19 13:35:51 -0700</creation_ts>
          <short_desc>REGRESSION(r191307): broke lots of API tests, need time to figure out whats up (Requested by thorton on #webkit).</short_desc>
          <delta_ts>2015-10-19 13:40:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>150174</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>darin</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1134680</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-19 13:35:51 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/191307 broke the build:
broke lots of API tests, need time to figure out whats up (Requested by thorton on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134681</commentid>
    <comment_count>1</comment_count>
      <attachid>263507</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-19 13:36:21 -0700</bug_when>
    <thetext>Created attachment 263507
ROLLOUT of r191307

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134682</commentid>
    <comment_count>2</comment_count>
      <attachid>263507</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-19 13:40:27 -0700</bug_when>
    <thetext>Comment on attachment 263507
ROLLOUT of r191307

Clearing flags on attachment: 263507

Committed r191315: &lt;http://trac.webkit.org/changeset/191315&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134683</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-19 13:40:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263507</attachid>
            <date>2015-10-19 13:36:21 -0700</date>
            <delta_ts>2015-10-19 13:40:27 -0700</delta_ts>
            <desc>ROLLOUT of r191307</desc>
            <filename>bug-150338-20151019133539.patch</filename>
            <type>text/plain</type>
            <size>79553</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjE2NzRkMjUwNGIwMTJj
NjJkZTBjNDcyZmZlNDA2ZmUzNzlkODZlZS4uZWIxN2MzMjRkZDUwMzRjZjA1ZTRlYWJjODQ1YWYw
ZTdmNTEwNjQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDE1LTEwLTE5ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAorICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTkxMzA3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUwMzM4CisKKyAgICAgICAgYnJva2UgbG90cyBvZiBBUEkgdGVzdHMs
IG5lZWQgdGltZSB0byBmaWd1cmUgb3V0IHdoYXRzIHVwCisgICAgICAgIChSZXF1ZXN0ZWQgYnkg
dGhvcnRvbiBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAg
ICAgICAgIldLVmlldyBiZWluZyBpbnNpZGUgV0tXZWJWaWV3IGxlYWRzIHRvIHdlaXJkIEFQSSBp
c3N1ZXMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTAxNzQKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTkxMzA3CisK
KzIwMTUtMTAtMTkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTEyOTUsIHIxOTEyOTcsIGFuZCByMTkx
MzAxLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
MzM3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCBmN2M3NTQxM2NkOTY4NjdiNDBmODc0NTQyMDM0YTkwYjEzMGQ0
ZDFkLi43OGIwMzhkODhiODk0NWJlYTg1ZDA5OTE4NjA3MDgxMTk0MWMzYWM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMTAtMTkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTEzMDcu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAzMzgK
KworICAgICAgICBicm9rZSBsb3RzIG9mIEFQSSB0ZXN0cywgbmVlZCB0aW1lIHRvIGZpZ3VyZSBv
dXQgd2hhdHMgdXAKKyAgICAgICAgKFJlcXVlc3RlZCBieSB0aG9ydG9uIG9uICN3ZWJraXQpLgor
CisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiV0tWaWV3IGJlaW5nIGlu
c2lkZSBXS1dlYlZpZXcgbGVhZHMgdG8gd2VpcmQgQVBJIGlzc3VlcyIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDE3NAorICAgICAgICBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xOTEzMDcKKwogMjAxNS0xMC0xOSAgVGltIEhvcnRv
biAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgYWdhaW4gdG8gZml4
IHRoZSAzMi1iaXQgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzM0NTdhOTgxOTFjYTFhOWYxYTZhODgxZjI3MDMxNmE5
MDk4MTRmZS4uM2VhZDQ3OTI5MzJmZGViNjQyNzAyNzk2NDgxZjFiMzhlMWQxNGY0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTEyMSw3ICsxMTIxLDYgQEAKIAkJMkJFOEUyQzkxMkE1OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRh
Q2hhcnNldFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQkU4RTJDODEyQTU4QTAxMDBGQUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2Vy
LmNwcCAqLzsgfTsKIAkJMkQwQjRBQUIxOERBMUNDRDAwNDM0REUxIC8qIElPU3VyZmFjZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQwQjRBQTkxOERB
MUNDRDAwNDM0REUxIC8qIElPU3VyZmFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTJEMEI0QUFDMThEQTFDQ0QwMDQzNERFMSAvKiBJT1N1cmZh
Y2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDBC
NEFBQTE4REExQ0NEMDA0MzRERTEgLyogSU9TdXJmYWNlLm1tICovOyB9OwotCQkyRDBDRjgxNzFC
Q0Y1REUxMDA3QTQ5MzcgLyogTlNXaW5kb3dTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMENGODE2MUJDRjVERTEwMDdBNDkzNyAvKiBOU1dpbmRv
d1NQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJEMjMyQzAwMUEzMjZGMDIwMDZCRjJEQiAvKiBUVUNhbGxTUEkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjMyQkZGMUEzMjZFRjkwMDZCRjJEQiAv
KiBUVUNhbGxTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkyRDI1Mzk2MjE4Q0U3RjYyMDAyNzAyMjIgLyogSW1hZ2VDb250cm9sc0J1dHRvbkVs
ZW1lbnRNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQyNTM5NjAxOENFN0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50
TWFjLmNwcCAqLzsgfTsKIAkJMkQyNTM5NjMxOENFN0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29udHJv
bHNCdXR0b25FbGVtZW50TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDI1Mzk2MTE4Q0U3RjYyMDAyNzAyMjIgLyogSW1hZ2VDb250cm9sc0J1dHRv
bkVsZW1lbnRNYWMuaCAqLzsgfTsKQEAgLTg0NDAsNyArODQzOSw2IEBACiAJCTJCRThFMkM4MTJB
NThBMDEwMEZBRDU1MCAvKiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQwQjRBQTkxOERBMUNDRDAwNDM0REUxIC8qIElPU3Vy
ZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJT1N1cmZhY2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQwQjRBQUExOERBMUNDRDAwNDM0REUxIC8qIElP
U3VyZmFjZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElPU3Vy
ZmFjZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQwQ0Y4MTYxQkNGNURFMTAw
N0E0OTM3IC8qIE5TV2luZG93U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5TV2luZG93U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMjMyQkZGMUEz
MjZFRjkwMDZCRjJEQiAvKiBUVUNhbGxTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVFVDYWxsU1BJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMjUzOTYwMThDRTdGNjIwMDI3MDIyMiAv
KiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMjUzOTYxMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFn
ZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTg1NDIsNyArMTg1NDAsNiBAQAogCQkJCUY0MEVBOEFBMUI4NjdENjUwMENF
NTU4MSAvKiBOU1Njcm9sbGluZ0lucHV0RmlsdGVyU1BJLmggKi8sCiAJCQkJMkRDQjgzNzcxOUY5
OUJCQTAwQTdGQkU0IC8qIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTUEkuaCAqLywKIAkJCQkyRENC
ODM3ODE5Rjk5QkJBMDBBN0ZCRTQgLyogTlNTaGFyaW5nU2VydmljZVNQSS5oICovLAotCQkJCTJE
MENGODE2MUJDRjVERTEwMDdBNDkzNyAvKiBOU1dpbmRvd1NQSS5oICovLAogCQkJCTkzN0Y0Q0NC
MUEyRDQ4QzEwMEJCMzlGNSAvKiBRdWlja0xvb2tNYWNTUEkuaCAqLywKIAkJCQkyRDIzMkJGRjFB
MzI2RUY5MDA2QkYyREIgLyogVFVDYWxsU1BJLmggKi8sCiAJCQkpOwpAQCAtMjc4NDMsNyArMjc4
NDAsNiBAQAogCQkJCTQ0QTIwREI5MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9u
c2VJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OUYwMDgyNDVFNTkwMDFFOUFCQyAvKiBX
ZWJDb3JlVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFNjE2NzQxODk0NTgxRjAwOUFERjUw
IC8qIFdlYkRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEMENGODE3MUJDRjVE
RTEwMDdBNDkzNyAvKiBOU1dpbmRvd1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUwRDg0RTkx
MDQ4NDM0ODAwMUExNzlFIC8qIFdlYkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyMjVBMTZC
NTBENUMxMUU5MDAwOTAyOTUgLyogV2ViRXZlbnRSZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExOUQ5MzQ3MUE5RkVDNzIwMEI0NkMyNCAvKiBXZWJGaWx0ZXJFdmFsdWF0b3JTUEkuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9O
U1dpbmRvd1NQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9OU1dpbmRvd1NQ
SS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmMzM2Y3MTM1NTdlYWRjNWQwNjEy
N2Q5OTI5MDdhNjY2NGMyNjZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvTlNXaW5kb3dTUEkuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDx3dGYv
UGxhdGZvcm0uaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCi0KLSNpbXBvcnQgPEFwcEtpdC9OU1dpbmRvd19Qcml2YXRlLmg+Ci0KLSNlbHNlCi0K
LSNpbXBvcnQgPEFwcEtpdC9OU1dpbmRvdy5oPgotCi1AaW50ZXJmYWNlIE5TV2luZG93ICgpCi0K
LS0gKGlkKV9uZXdGaXJzdFJlc3BvbmRlckFmdGVyUmVzaWduaW5nOwotCi1AZW5kCi0KLSNlbmRp
ZgotCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tCmluZGV4IDA2NzYxYWYwMDVkZjY1YTMwOTk3NzJlMTNjYTgyMDBiZDc2
ZThlMDYuLmU4NTdhYWZhODFiNDM0YzNkMDg5OGY3NWRiOWZhNDRlMTU3OGE0YmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTY2LDYgKzY2LDcgQEAK
ICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgIldLVGV4dElucHV0V2luZG93Q29udHJv
bGxlci5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLVmlld0xheW91
dFN0cmF0ZWd5LmgiCiAjaW1wb3J0ICJXS1ZpZXdQcml2YXRlLmgiCiAjaW1wb3J0ICJXS1dlYlZp
ZXcuaCIKICNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgpAQCAtODAsNyArODEsNiBAQAog
I2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgog
I2ltcG9ydCAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCi0jaW1wb3J0ICJXZWJWaWV3SW1wbC5oIgog
I2ltcG9ydCAiX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
VGh1bWJuYWlsVmlld0ludGVybmFsLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUu
aD4KQEAgLTEzMCw2ICsxMzAsMTAgQEAKIC0gKHZvaWQpX3NldEN1cnJlbnRFdmVudDooTlNFdmVu
dCAqKWV2ZW50OwogQGVuZAogCitAaW50ZXJmYWNlIE5TV2luZG93IChXS05TV2luZG93RGV0YWls
cykKKy0gKGlkKV9uZXdGaXJzdFJlc3BvbmRlckFmdGVyUmVzaWduaW5nOworQGVuZAorCiAjaWYg
VVNFKEFTWU5DX05TVEVYVElOUFVUQ0xJRU5UKQogQGludGVyZmFjZSBOU1RleHRJbnB1dENvbnRl
eHQgKFdLTlNUZXh0SW5wdXRDb250ZXh0RGV0YWlscykKIC0gKHZvaWQpaGFuZGxlRXZlbnQ6KE5T
RXZlbnQgKil0aGVFdmVudCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MIGhhbmRsZWQp
KWNvbXBsZXRpb25IYW5kbGVyOwpAQCAtMTc3LDcgKzE4MSw2IEBAIHN0cnVjdCBXS1ZpZXdJbnRl
cnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKIEBwdWJsaWMKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGFnZUNsaWVudEltcGw+IF9wYWdlQ2xpZW50OwogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IF9w
YWdlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJWaWV3SW1wbD4gX2ltcGw7CiAKICNpZiBXS19B
UElfRU5BQkxFRAogICAgIFJldGFpblB0cjxXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI+IF9i
cm93c2luZ0NvbnRleHRDb250cm9sbGVyOwpAQCAtMjEyLDEyICsyMTUsMTYgQEAgc3RydWN0IFdL
Vmlld0ludGVycHJldEtleUV2ZW50c1BhcmFtZXRlcnMgewogICAgIFdLVmlld0ludGVycHJldEtl
eUV2ZW50c1BhcmFtZXRlcnMqIF9pbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzOwogI2VuZGlm
CiAKKyAgICBOU1NpemUgX3Jlc2l6ZVNjcm9sbE9mZnNldDsKKwogICAgIC8vIFRoZSBpZGVudGlm
aWVyIG9mIHRoZSBwbHVnLWluIHdlIHdhbnQgdG8gc2VuZCBjb21wbGV4IHRleHQgaW5wdXQgdG8s
IG9yIDAgaWYgdGhlcmUgaXMgbm9uZS4KICAgICB1aW50NjRfdCBfcGx1Z2luQ29tcGxleFRleHRJ
bnB1dElkZW50aWZpZXI7CiAKICAgICAvLyBUaGUgc3RhdGUgb2YgY29tcGxleCB0ZXh0IGlucHV0
IGZvciB0aGUgcGx1Zy1pbi4KICAgICBQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUgX3BsdWdp
bkNvbXBsZXhUZXh0SW5wdXRTdGF0ZTsKIAorICAgIGJvb2wgX2luQmVjb21lRmlyc3RSZXNwb25k
ZXI7CisgICAgYm9vbCBfaW5SZXNpZ25GaXJzdFJlc3BvbmRlcjsKICAgICBCT09MIF93aWxsQmVj
b21lRmlyc3RSZXNwb25kZXJBZ2FpbjsKICAgICBOU0V2ZW50ICpfbW91c2VEb3duRXZlbnQ7CiAg
ICAgTlNFdmVudCAqX3ByZXNzdXJlRXZlbnQ7CkBAIC0yMjUsOSArMjMyLDE1IEBAIHN0cnVjdCBX
S1ZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKIAogICAgIGlkIF9mbGFnc0NoYW5n
ZWRFdmVudE1vbml0b3I7CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgUmV0YWlu
UHRyPFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI+IF9mdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlcjsKKyNlbmRpZgorCiAgICAgQk9PTCBfaGFzU3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7CiAg
ICAgTlNJbnRlZ2VyIF9zcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKIAorICAgIEJPT0wgX2luU2Vj
dXJlSW5wdXRTdGF0ZTsKKwogICAgIEJPT0wgX3Nob3VsZERlZmVyVmlld0luV2luZG93Q2hhbmdl
czsKICAgICBOU1dpbmRvdyAqX3RhcmdldFdpbmRvd0Zvck1vdmVQcmVwYXJhdGlvbjsKIApAQCAt
MjQxLDcgKzI1NCwxMSBAQCBzdHJ1Y3QgV0tWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVy
cyB7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBfcHJvbWlzZWRJbWFnZTsKICAgICBTdHJp
bmcgX3Byb21pc2VkRmlsZW5hbWU7CiAgICAgU3RyaW5nIF9wcm9taXNlZFVSTDsKLQorICAgIAor
ICAgIE5TU2l6ZSBfaW50cmluc2ljQ29udGVudFNpemU7CisgICAgQk9PTCBfY2xpcHNUb1Zpc2li
bGVSZWN0OworICAgIE5TUmVjdCBfY29udGVudFByZXBhcmF0aW9uUmVjdDsKKyAgICBCT09MIF91
c2VDb250ZW50UHJlcGFyYXRpb25SZWN0Rm9yVmlzaWJsZVJlY3Q7CiAgICAgQk9PTCBfd2luZG93
T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZDsKIAogICAgIFJldGFpblB0cjxXS1dpbmRvd1Zpc2li
aWxpdHlPYnNlcnZlcj4gX3dpbmRvd1Zpc2liaWxpdHlPYnNlcnZlcjsKQEAgLTI1Myw2ICsyNzAs
MTAgQEAgc3RydWN0IFdLVmlld0ludGVycHJldEtleUV2ZW50c1BhcmFtZXRlcnMgewogICAgIEJP
T0wgX2FsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOwogICAgIEJPT0wgX2FsbG93
c0xpbmtQcmV2aWV3OwogCisgICAgUmV0YWluUHRyPFdLVmlld0xheW91dFN0cmF0ZWd5PiBfbGF5
b3V0U3RyYXRlZ3k7CisgICAgV0tMYXlvdXRNb2RlIF9sYXN0UmVxdWVzdGVkTGF5b3V0TW9kZTsK
KyAgICBmbG9hdCBfbGFzdFJlcXVlc3RlZFZpZXdTY2FsZTsKKwogICAgIFJldGFpblB0cjxDQUxh
eWVyPiBfcm9vdExheWVyOwogCiAgICAgQk9PTCBfZGlkU2NoZWR1bGVTZXRUb3BDb250ZW50SW5z
ZXQ7CkBAIC0zNDgsOSArMzY5LDYgQEAgc3RydWN0IFdLVmlld0ludGVycHJldEtleUV2ZW50c1Bh
cmFtZXRlcnMgewogCiBAZW5kCiAKLUBpbnRlcmZhY2UgV0tWaWV3ICgpIDxXZWJWaWV3SW1wbERl
bGVnYXRlPgotQGVuZAotCiBAaW1wbGVtZW50YXRpb24gV0tWaWV3CiAKICNpZiBXS19BUElfRU5B
QkxFRApAQCAtMzcyLDggKzM5MCw3IEBAIHN0cnVjdCBXS1ZpZXdJbnRlcnByZXRLZXlFdmVudHNQ
YXJhbWV0ZXJzIHsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAw
MAogICAgIFtfZGF0YS0+X2ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgd2lsbERlc3Ryb3lWaWV3
OnNlbGZdOwogI2VuZGlmCi0KLSAgICBfZGF0YS0+X2ltcGwgPSBudWxscHRyOworICAgIFtfZGF0
YS0+X2xheW91dFN0cmF0ZWd5IHdpbGxEZXN0cm95VmlldzpzZWxmXTsKIAogI2lmIFdLX0FQSV9F
TkFCTEVECiAgICAgaWYgKF9kYXRhLT5fcmVtb3RlT2JqZWN0UmVnaXN0cnkpIHsKQEAgLTM4Nyw2
ICs0MDQsNyBAQCBzdHJ1Y3QgV0tWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiAj
aWYgV0tfQVBJX0VOQUJMRUQKICAgICBBU1NFUlQoIV9kYXRhLT5fdGh1bWJuYWlsVmlldyk7CiAj
ZW5kaWYKKyAgICBBU1NFUlQoIV9kYXRhLT5faW5TZWN1cmVJbnB1dFN0YXRlKTsKIAogICAgIFtf
ZGF0YSByZWxlYXNlXTsKICAgICBfZGF0YSA9IG5pbDsKQEAgLTQxNiw0NyArNDM0LDEwNyBAQCBz
dHJ1Y3QgV0tWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiAKIC0gKHZvaWQpc2V0
RHJhd3NCYWNrZ3JvdW5kOihCT09MKWRyYXdzQmFja2dyb3VuZAogewotICAgIF9kYXRhLT5faW1w
bC0+c2V0RHJhd3NCYWNrZ3JvdW5kKGRyYXdzQmFja2dyb3VuZCk7CisgICAgX2RhdGEtPl9wYWdl
LT5zZXREcmF3c0JhY2tncm91bmQoZHJhd3NCYWNrZ3JvdW5kKTsKIH0KIAogLSAoQk9PTClkcmF3
c0JhY2tncm91bmQKIHsKLSAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5kcmF3c0JhY2tncm91bmQo
KTsKKyAgICByZXR1cm4gX2RhdGEtPl9wYWdlLT5kcmF3c0JhY2tncm91bmQoKTsKIH0KIAogLSAo
dm9pZClzZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZDooQk9PTClkcmF3c1RyYW5zcGFyZW50
QmFja2dyb3VuZAogewotICAgIF9kYXRhLT5faW1wbC0+c2V0RHJhd3NUcmFuc3BhcmVudEJhY2tn
cm91bmQoZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQpOworICAgIF9kYXRhLT5fcGFnZS0+c2V0
RHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQpOwog
fQogCiAtIChCT09MKWRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kCiB7Ci0gICAgcmV0dXJuIF9k
YXRhLT5faW1wbC0+ZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoKTsKKyAgICByZXR1cm4gX2Rh
dGEtPl9wYWdlLT5kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpOwogfQogCiAtIChCT09MKWFj
Y2VwdHNGaXJzdFJlc3BvbmRlcgogewotICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPmFjY2VwdHNG
aXJzdFJlc3BvbmRlcigpOworICAgIHJldHVybiBZRVM7CiB9CiAKIC0gKEJPT0wpYmVjb21lRmly
c3RSZXNwb25kZXIKIHsKLSAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5iZWNvbWVGaXJzdFJlc3Bv
bmRlcigpOworICAgIC8vIElmIHdlIGp1c3QgYmVjYW1lIGZpcnN0IHJlc3BvbmRlciBhZ2Fpbiwg
dGhlcmUgaXMgbm8gbmVlZCB0byBkbyBhbnl0aGluZywKKyAgICAvLyBzaW5jZSByZXNpZ25GaXJz
dFJlc3BvbmRlciBoYXMgY29ycmVjdGx5IGRldGVjdGVkIHRoaXMgc2l0dWF0aW9uLgorICAgIGlm
IChfZGF0YS0+X3dpbGxCZWNvbWVGaXJzdFJlc3BvbmRlckFnYWluKSB7CisgICAgICAgIF9kYXRh
LT5fd2lsbEJlY29tZUZpcnN0UmVzcG9uZGVyQWdhaW4gPSBOTzsKKyAgICAgICAgcmV0dXJuIFlF
UzsKKyAgICB9CisKKyAgICBOU1NlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBbW3NlbGYg
d2luZG93XSBrZXlWaWV3U2VsZWN0aW9uRGlyZWN0aW9uXTsKKworICAgIF9kYXRhLT5faW5CZWNv
bWVGaXJzdFJlc3BvbmRlciA9IHRydWU7CisgICAgCisgICAgW3NlbGYgX3VwZGF0ZVNlY3VyZUlu
cHV0U3RhdGVdOworICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0
ZTo6SXNGb2N1c2VkKTsKKyAgICAvLyBSZXN0b3JlIHRoZSBzZWxlY3Rpb24gaW4gdGhlIGVkaXRh
YmxlIHJlZ2lvbiBpZiByZXNpZ25pbmcgZmlyc3QgcmVzcG9uZGVyIGNsZWFyZWQgc2VsZWN0aW9u
LgorICAgIF9kYXRhLT5fcGFnZS0+cmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxl
bWVudCgpOworCisgICAgX2RhdGEtPl9pbkJlY29tZUZpcnN0UmVzcG9uZGVyID0gZmFsc2U7Cisg
ICAgCisgICAgaWYgKGRpcmVjdGlvbiAhPSBOU0RpcmVjdFNlbGVjdGlvbikgeworICAgICAgICBO
U0V2ZW50ICpldmVudCA9IFtOU0FwcCBjdXJyZW50RXZlbnRdOworICAgICAgICBOU0V2ZW50ICpr
ZXlib2FyZEV2ZW50ID0gbmlsOworICAgICAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TS2V5RG93
biB8fCBbZXZlbnQgdHlwZV0gPT0gTlNLZXlVcCkKKyAgICAgICAgICAgIGtleWJvYXJkRXZlbnQg
PSBldmVudDsKKyAgICAgICAgX2RhdGEtPl9wYWdlLT5zZXRJbml0aWFsRm9jdXMoZGlyZWN0aW9u
ID09IE5TU2VsZWN0aW5nTmV4dCwga2V5Ym9hcmRFdmVudCAhPSBuaWwsIE5hdGl2ZVdlYktleWJv
YXJkRXZlbnQoa2V5Ym9hcmRFdmVudCwgZmFsc2UsIFZlY3RvcjxLZXlwcmVzc0NvbW1hbmQ+KCkp
LCBbXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsgfSk7CisgICAgfQorICAgIHJldHVy
biBZRVM7CiB9CiAKIC0gKEJPT0wpcmVzaWduRmlyc3RSZXNwb25kZXIKIHsKLSAgICByZXR1cm4g
X2RhdGEtPl9pbXBsLT5yZXNpZ25GaXJzdFJlc3BvbmRlcigpOworI2lmIFdLX0FQSV9FTkFCTEVE
CisgICAgLy8gUHJlZGljdCB0aGUgY2FzZSB3aGVyZSB3ZSBhcmUgbG9zaW5nIGZpcnN0IHJlc3Bv
bmRlciBzdGF0dXMgb25seSB0bworICAgIC8vIGdhaW4gaXQgYmFjayBhZ2Fpbi4gV2Ugd2FudCBy
ZXNpZ25GaXJzdFJlc3BvbmRlciB0byBkbyBub3RoaW5nIGluIHRoYXQgY2FzZS4KKyAgICBpZCBu
ZXh0UmVzcG9uZGVyID0gW1tzZWxmIHdpbmRvd10gX25ld0ZpcnN0UmVzcG9uZGVyQWZ0ZXJSZXNp
Z25pbmddOworICAgIGlmIChbbmV4dFJlc3BvbmRlciBpc0tpbmRPZkNsYXNzOltXS1dlYlZpZXcg
Y2xhc3NdXSAmJiBzZWxmLnN1cGVydmlldyA9PSBuZXh0UmVzcG9uZGVyKSB7CisgICAgICAgIF9k
YXRhLT5fd2lsbEJlY29tZUZpcnN0UmVzcG9uZGVyQWdhaW4gPSBZRVM7CisgICAgICAgIHJldHVy
biBZRVM7CisgICAgfQorI2VuZGlmCisKKyAgICBfZGF0YS0+X3dpbGxCZWNvbWVGaXJzdFJlc3Bv
bmRlckFnYWluID0gTk87CisgICAgX2RhdGEtPl9pblJlc2lnbkZpcnN0UmVzcG9uZGVyID0gdHJ1
ZTsKKworI2lmIFVTRShBU1lOQ19OU1RFWFRJTlBVVENMSUVOVCkKKyAgICBfZGF0YS0+X3BhZ2Ut
PmNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCk7CisjZWxzZQorICAgIGlmIChfZGF0YS0+X3BhZ2Ut
PmVkaXRvclN0YXRlKCkuaGFzQ29tcG9zaXRpb24gJiYgIV9kYXRhLT5fcGFnZS0+ZWRpdG9yU3Rh
dGUoKS5zaG91bGRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSkKKyAgICAgICAgX2Rh
dGEtPl9wYWdlLT5jYW5jZWxDb21wb3NpdGlvbigpOworI2VuZGlmCisKKyAgICBbc2VsZiBfbm90
aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbl07CisKKyAgICBbc2VsZiBf
cmVzZXRTZWN1cmVJbnB1dFN0YXRlXTsKKworICAgIGlmICghX2RhdGEtPl9wYWdlLT5tYWludGFp
bnNJbmFjdGl2ZVNlbGVjdGlvbigpKQorICAgICAgICBfZGF0YS0+X3BhZ2UtPmNsZWFyU2VsZWN0
aW9uKCk7CisgICAgCisgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0
YXRlOjpJc0ZvY3VzZWQpOworCisgICAgX2RhdGEtPl9pblJlc2lnbkZpcnN0UmVzcG9uZGVyID0g
ZmFsc2U7CisKKyAgICByZXR1cm4gWUVTOwogfQogCiAtICh2b2lkKXZpZXdXaWxsU3RhcnRMaXZl
UmVzaXplCiB7Ci0gICAgX2RhdGEtPl9pbXBsLT52aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwor
ICAgIF9kYXRhLT5fcGFnZS0+dmlld1dpbGxTdGFydExpdmVSZXNpemUoKTsKKworICAgIFtfZGF0
YS0+X2xheW91dFN0cmF0ZWd5IHdpbGxTdGFydExpdmVSZXNpemVdOwogfQogCiAtICh2b2lkKXZp
ZXdEaWRFbmRMaXZlUmVzaXplCiB7Ci0gICAgX2RhdGEtPl9pbXBsLT52aWV3RGlkRW5kTGl2ZVJl
c2l6ZSgpOworICAgIF9kYXRhLT5fcGFnZS0+dmlld1dpbGxFbmRMaXZlUmVzaXplKCk7CisKKyAg
ICBbX2RhdGEtPl9sYXlvdXRTdHJhdGVneSBkaWRFbmRMaXZlUmVzaXplXTsKIH0KIAogLSAoQk9P
TClpc0ZsaXBwZWQKQEAgLTQ2NiwyNSArNTQ0LDM5IEBAIHN0cnVjdCBXS1ZpZXdJbnRlcnByZXRL
ZXlFdmVudHNQYXJhbWV0ZXJzIHsKIAogLSAoTlNTaXplKWludHJpbnNpY0NvbnRlbnRTaXplCiB7
Ci0gICAgcmV0dXJuIE5TU2l6ZUZyb21DR1NpemUoX2RhdGEtPl9pbXBsLT5pbnRyaW5zaWNDb250
ZW50U2l6ZSgpKTsKKyAgICByZXR1cm4gX2RhdGEtPl9pbnRyaW5zaWNDb250ZW50U2l6ZTsKIH0K
IAogLSAodm9pZClwcmVwYXJlQ29udGVudEluUmVjdDooTlNSZWN0KXJlY3QKIHsKLSAgICBfZGF0
YS0+X2ltcGwtPnNldENvbnRlbnRQcmVwYXJhdGlvblJlY3QoTlNSZWN0VG9DR1JlY3QocmVjdCkp
OwotICAgIF9kYXRhLT5faW1wbC0+dXBkYXRlVmlld0V4cG9zZWRSZWN0KCk7CisgICAgX2RhdGEt
Pl9jb250ZW50UHJlcGFyYXRpb25SZWN0ID0gcmVjdDsKKyAgICBfZGF0YS0+X3VzZUNvbnRlbnRQ
cmVwYXJhdGlvblJlY3RGb3JWaXNpYmxlUmVjdCA9IFlFUzsKKworICAgIFtzZWxmIF91cGRhdGVW
aWV3RXhwb3NlZFJlY3RdOworfQorCistICh2b2lkKV91cGRhdGVWaWV3RXhwb3NlZFJlY3QKK3sK
KyAgICBOU1JlY3QgZXhwb3NlZFJlY3QgPSBbc2VsZiB2aXNpYmxlUmVjdF07CisKKyAgICBpZiAo
X2RhdGEtPl91c2VDb250ZW50UHJlcGFyYXRpb25SZWN0Rm9yVmlzaWJsZVJlY3QpCisgICAgICAg
IGV4cG9zZWRSZWN0ID0gTlNVbmlvblJlY3QoX2RhdGEtPl9jb250ZW50UHJlcGFyYXRpb25SZWN0
LCBleHBvc2VkUmVjdCk7CisKKyAgICBpZiAoYXV0byBkcmF3aW5nQXJlYSA9IF9kYXRhLT5fcGFn
ZS0+ZHJhd2luZ0FyZWEoKSkKKyAgICAgICAgZHJhd2luZ0FyZWEtPnNldEV4cG9zZWRSZWN0KF9k
YXRhLT5fY2xpcHNUb1Zpc2libGVSZWN0ID8gRmxvYXRSZWN0KGV4cG9zZWRSZWN0KSA6IEZsb2F0
UmVjdDo6aW5maW5pdGVSZWN0KCkpOwogfQogCiAtICh2b2lkKXNldEZyYW1lU2l6ZTooTlNTaXpl
KXNpemUKIHsKICAgICBbc3VwZXIgc2V0RnJhbWVTaXplOnNpemVdOwotICAgIF9kYXRhLT5faW1w
bC0+c2V0RnJhbWVTaXplKE5TU2l6ZVRvQ0dTaXplKHNpemUpKTsKKworICAgIFtfZGF0YS0+X2xh
eW91dFN0cmF0ZWd5IGRpZENoYW5nZUZyYW1lU2l6ZV07CiB9CiAKIC0gKHZvaWQpX3VwZGF0ZVdp
bmRvd0FuZFZpZXdGcmFtZXMKIHsKLSAgICBpZiAoX2RhdGEtPl9pbXBsLT5jbGlwc1RvVmlzaWJs
ZVJlY3QoKSkKLSAgICAgICAgX2RhdGEtPl9pbXBsLT51cGRhdGVWaWV3RXhwb3NlZFJlY3QoKTsK
KyAgICBpZiAoX2RhdGEtPl9jbGlwc1RvVmlzaWJsZVJlY3QpCisgICAgICAgIFtzZWxmIF91cGRh
dGVWaWV3RXhwb3NlZFJlY3RdOwogCiAgICAgaWYgKF9kYXRhLT5fZGlkU2NoZWR1bGVXaW5kb3dB
bmRWaWV3RnJhbWVVcGRhdGUpCiAgICAgICAgIHJldHVybjsKQEAgLTE3MzcsMTEgKzE4MjksMTEg
QEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJp
bmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKICAgICB9IGVsc2UKICAgICAgICAgdGV4dCA9IHN0
cmluZzsKIAotICAgIGlmIChfZGF0YS0+X2ltcGwtPmluU2VjdXJlSW5wdXRTdGF0ZSgpKSB7Cisg
ICAgaWYgKF9kYXRhLT5faW5TZWN1cmVJbnB1dFN0YXRlKSB7CiAgICAgICAgIC8vIEluIHBhc3N3
b3JkIGZpZWxkcywgd2Ugb25seSBhbGxvdyBBU0NJSSBkZWFkIGtleXMsIGFuZCBkb24ndCBhbGxv
dyBpbmxpbmUgaW5wdXQsIG1hdGNoaW5nIE5TU2VjdXJlVGV4dElucHV0RmllbGQuCiAgICAgICAg
IC8vIEFsbG93aW5nIEFTQ0lJIGRlYWQga2V5cyBpcyBuZWNlc3NhcnkgdG8gZW5hYmxlIGZ1bGwg
Um9tYW4gaW5wdXQgd2hlbiB1c2luZyBhIFZpZXRuYW1lc2Uga2V5Ym9hcmQuCiAgICAgICAgIEFT
U0VSVCghX2RhdGEtPl9wYWdlLT5lZGl0b3JTdGF0ZSgpLmhhc0NvbXBvc2l0aW9uKTsKLSAgICAg
ICAgX2RhdGEtPl9pbXBsLT5ub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0
aW9uKCk7CisgICAgICAgIFtzZWxmIF9ub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENv
bXBvc2l0aW9uXTsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdG9yZSB0aGUgY29tbWFu
ZCB0byBoYW5kbGUgaXQgYWZ0ZXIgRE9NIGV2ZW50IHByb2Nlc3NpbmcsIGFzIGl0J3MgcmVndWxh
ciBrZXlib2FyZCBpbnB1dCBub3csIG5vdCBhIGNvbXBvc2l0aW9uLgogICAgICAgICBpZiAoW3Rl
eHQgbGVuZ3RoXSA9PSAxICYmIGlzQVNDSUkoW3RleHQgY2hhcmFjdGVyQXRJbmRleDowXSkpCiAg
ICAgICAgICAgICBfZGF0YS0+X3BhZ2UtPmluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVu
dFJhbmdlKTsKQEAgLTIxMzMsNyArMjIyNSw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxp
bmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAg
ICAgICAgIC8vIEluIHBhc3N3b3JkIGZpZWxkcywgd2Ugb25seSBhbGxvdyBBU0NJSSBkZWFkIGtl
eXMsIGFuZCBkb24ndCBhbGxvdyBpbmxpbmUgaW5wdXQsIG1hdGNoaW5nIE5TU2VjdXJlVGV4dElu
cHV0RmllbGQuCiAgICAgICAgIC8vIEFsbG93aW5nIEFTQ0lJIGRlYWQga2V5cyBpcyBuZWNlc3Nh
cnkgdG8gZW5hYmxlIGZ1bGwgUm9tYW4gaW5wdXQgd2hlbiB1c2luZyBhIFZpZXRuYW1lc2Uga2V5
Ym9hcmQuCiAgICAgICAgIEFTU0VSVCghX2RhdGEtPl9wYWdlLT5lZGl0b3JTdGF0ZSgpLmhhc0Nv
bXBvc2l0aW9uKTsKLSAgICAgICAgX2RhdGEtPl9pbXBsLT5ub3RpZnlJbnB1dENvbnRleHRBYm91
dERpc2NhcmRlZENvbXBvc2l0aW9uKCk7CisgICAgICAgIFtzZWxmIF9ub3RpZnlJbnB1dENvbnRl
eHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uXTsKICAgICAgICAgaWYgKFt0ZXh0IGxlbmd0aF0g
PT0gMSAmJiBbW3RleHQgZGVjb21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXSBjaGFy
YWN0ZXJBdEluZGV4OjBdIDwgMHg4MCkgewogICAgICAgICAgICAgX2RhdGEtPl9wYWdlLT5pbnNl
cnRUZXh0KHRleHQsIHJlcGxhY2VtZW50UmFuZ2UpOwogICAgICAgICB9IGVsc2UKQEAgLTIzNDUs
MTEgKzI0MzcsNiBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogCiAjZW5kaWYgLy8gVVNFKEFT
WU5DX05TVEVYVElOUFVUQ0xJRU5UKQogCi0tIChOU1RleHRJbnB1dENvbnRleHQgKilfc3VwZXJJ
bnB1dENvbnRleHQKLXsKLSAgICByZXR1cm4gW3N1cGVyIGlucHV0Q29udGV4dF07Ci19Ci0KIC0g
KE5TQXJyYXkgKil2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0CiB7CiAgICAgc3RhdGljIE5T
QXJyYXkgKnZhbGlkQXR0cmlidXRlczsKQEAgLTI2NzAsNyArMjc1Nyw3IEBAIHN0YXRpYyB2b2lk
KiBrZXlWYWx1ZU9ic2VydmluZ0NvbnRleHQgPSAma2V5VmFsdWVPYnNlcnZpbmdDb250ZXh0Owog
ewogICAgIE5TV2luZG93ICprZXlXaW5kb3cgPSBbbm90aWZpY2F0aW9uIG9iamVjdF07CiAgICAg
aWYgKGtleVdpbmRvdyA9PSBbc2VsZiB3aW5kb3ddIHx8IGtleVdpbmRvdyA9PSBbW3NlbGYgd2lu
ZG93XSBhdHRhY2hlZFNoZWV0XSkgewotICAgICAgICBfZGF0YS0+X2ltcGwtPnVwZGF0ZVNlY3Vy
ZUlucHV0U3RhdGUoKTsKKyAgICAgICAgW3NlbGYgX3VwZGF0ZVNlY3VyZUlucHV0U3RhdGVdOwog
ICAgICAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OldpbmRv
d0lzQWN0aXZlKTsKICAgICB9CiB9CkBAIC0yNjg5LDcgKzI3NzYsNyBAQCBzdGF0aWMgdm9pZCog
a2V5VmFsdWVPYnNlcnZpbmdDb250ZXh0ID0gJmtleVZhbHVlT2JzZXJ2aW5nQ29udGV4dDsKIHsK
ICAgICBOU1dpbmRvdyAqZm9ybWVyS2V5V2luZG93ID0gW25vdGlmaWNhdGlvbiBvYmplY3RdOwog
ICAgIGlmIChmb3JtZXJLZXlXaW5kb3cgPT0gW3NlbGYgd2luZG93XSB8fCBmb3JtZXJLZXlXaW5k
b3cgPT0gW1tzZWxmIHdpbmRvd10gYXR0YWNoZWRTaGVldF0pIHsKLSAgICAgICAgX2RhdGEtPl9p
bXBsLT51cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCk7CisgICAgICAgIFtzZWxmIF91cGRhdGVTZWN1
cmVJbnB1dFN0YXRlXTsKICAgICAgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2Uo
Vmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiAgICAgfQogfQpAQCAtMjkxMyw2ICszMDAwLDE1
IEBAIHN0YXRpYyB2b2lkKiBrZXlWYWx1ZU9ic2VydmluZ0NvbnRleHQgPSAma2V5VmFsdWVPYnNl
cnZpbmdDb250ZXh0OwogICAgIHJldHVybiBbW05TU2NyZWVuIG1haW5TY3JlZW5dIGJhY2tpbmdT
Y2FsZUZhY3Rvcl07CiB9CiAKKy0gKHZvaWQpX3NldERyYXdpbmdBcmVhU2l6ZTooTlNTaXplKXNp
emUKK3sKKyAgICBpZiAoIV9kYXRhLT5fcGFnZS0+ZHJhd2luZ0FyZWEoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIF9kYXRhLT5fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZShJbnRT
aXplKHNpemUpLCBJbnRTaXplKDAsIDApLCBJbnRTaXplKF9kYXRhLT5fcmVzaXplU2Nyb2xsT2Zm
c2V0KSk7CisgICAgX2RhdGEtPl9yZXNpemVTY3JvbGxPZmZzZXQgPSBOU1plcm9TaXplOworfQor
CiAtICh2b2lkKXF1aWNrTG9va1dpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50CiB7CiAgICAgaWYg
KF9kYXRhLT5faWdub3Jlc05vbldoZWVsRXZlbnRzKQpAQCAtMjkzNyw2ICszMDMzLDE1IEBAIHN0
YXRpYyB2b2lkKiBrZXlWYWx1ZU9ic2VydmluZ0NvbnRleHQgPSAma2V5VmFsdWVPYnNlcnZpbmdD
b250ZXh0OwogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhUHJveHk+KCpfZGF0YS0+X3BhZ2UpOwogfQogCistIChCT09MKV9pc0ZvY3VzZWQK
K3sKKyAgICBpZiAoX2RhdGEtPl9pbkJlY29tZUZpcnN0UmVzcG9uZGVyKQorICAgICAgICByZXR1
cm4gWUVTOworICAgIGlmIChfZGF0YS0+X2luUmVzaWduRmlyc3RSZXNwb25kZXIpCisgICAgICAg
IHJldHVybiBOTzsKKyAgICByZXR1cm4gW1tzZWxmIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdID09
IHNlbGY7Cit9CisKIC0gKFdlYktpdDo6Q29sb3JTcGFjZURhdGEpX2NvbG9yU3BhY2UKIHsKICAg
ICBpZiAoIV9kYXRhLT5fY29sb3JTcGFjZSkgewpAQCAtMjk1Niw3ICszMDYxLDcgQEAgc3RhdGlj
IHZvaWQqIGtleVZhbHVlT2JzZXJ2aW5nQ29udGV4dCA9ICZrZXlWYWx1ZU9ic2VydmluZ0NvbnRl
eHQ7CiAKIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0CiB7Ci0gICAgX2RhdGEtPl9pbXBsLT5ub3Rp
ZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uKCk7CisgICAgW3NlbGYgX25v
dGlmeUlucHV0Q29udGV4dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb25dOwogCiAgICAgaWYgKF9k
YXRhLT5fbGF5ZXJIb3N0aW5nVmlldykKICAgICAgICAgW3NlbGYgX3NldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlUm9vdExheWVyOm5pbF07CkBAIC0zMTkxLDYgKzMyOTYsMTEgQEAgc3RhdGlj
IHZvaWQqIGtleVZhbHVlT2JzZXJ2aW5nQ29udGV4dCA9ICZrZXlWYWx1ZU9ic2VydmluZ0NvbnRl
eHQ7CiAgICAgICAgIF9kYXRhLT5fdGV4dEluZGljYXRvcldpbmRvdy0+c2V0QW5pbWF0aW9uUHJv
Z3Jlc3MocHJvZ3Jlc3MpOwogfQogCistIChDQUxheWVyICopX3Jvb3RMYXllcgoreworICAgIHJl
dHVybiBbX2RhdGEtPl9sYXllckhvc3RpbmdWaWV3IGxheWVyXTsKK30KKwogLSAodm9pZClfc2V0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVSb290TGF5ZXI6KENBTGF5ZXIgKilyb290TGF5ZXIK
IHsKICAgICBbcm9vdExheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CkBAIC0zNTIyLDYgKzM2
MzIsNTMgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChO
U1N0cmluZyAqcGF0aCkKICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltwYXRo
IGxhc3RQYXRoQ29tcG9uZW50XV07CiB9CiAKKy0gKHZvaWQpX3VwZGF0ZVNlY3VyZUlucHV0U3Rh
dGUKK3sKKyAgICBpZiAoIVtbc2VsZiB3aW5kb3ddIGlzS2V5V2luZG93XSB8fCAhW3NlbGYgX2lz
Rm9jdXNlZF0pIHsKKyAgICAgICAgaWYgKF9kYXRhLT5faW5TZWN1cmVJbnB1dFN0YXRlKSB7Cisg
ICAgICAgICAgICBEaXNhYmxlU2VjdXJlRXZlbnRJbnB1dCgpOworICAgICAgICAgICAgX2RhdGEt
Pl9pblNlY3VyZUlucHV0U3RhdGUgPSBOTzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIC8vIFdLVmlldyBoYXMgYSBzaW5nbGUgaW5wdXQgY29udGV4dCBmb3IgYWxsIGVk
aXRhYmxlIGFyZWFzIChleGNlcHQgZm9yIHBsdWctaW5zKS4KKyAgICBOU1RleHRJbnB1dENvbnRl
eHQgKmNvbnRleHQgPSBbc3VwZXIgaW5wdXRDb250ZXh0XTsKKyAgICBib29sIGlzSW5QYXNzd29y
ZEZpZWxkID0gX2RhdGEtPl9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzSW5QYXNzd29yZEZpZWxkOwor
CisgICAgaWYgKGlzSW5QYXNzd29yZEZpZWxkKSB7CisgICAgICAgIGlmICghX2RhdGEtPl9pblNl
Y3VyZUlucHV0U3RhdGUpCisgICAgICAgICAgICBFbmFibGVTZWN1cmVFdmVudElucHV0KCk7Cisg
ICAgICAgIHN0YXRpYyBOU0FycmF5ICpyb21hbklucHV0U291cmNlcyA9IFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzOiZOU0FsbFJvbWFuSW5wdXRTb3VyY2VzTG9jYWxlSWRlbnRpZmll
ciBjb3VudDoxXTsKKyAgICAgICAgTE9HKFRleHRJbnB1dCwgIi0+IHNldEFsbG93ZWRJbnB1dFNv
dXJjZUxvY2FsZXM6cm9tYW5JbnB1dFNvdXJjZXMiKTsKKyAgICAgICAgW2NvbnRleHQgc2V0QWxs
b3dlZElucHV0U291cmNlTG9jYWxlczpyb21hbklucHV0U291cmNlc107CisgICAgfSBlbHNlIHsK
KyAgICAgICAgaWYgKF9kYXRhLT5faW5TZWN1cmVJbnB1dFN0YXRlKQorICAgICAgICAgICAgRGlz
YWJsZVNlY3VyZUV2ZW50SW5wdXQoKTsKKyAgICAgICAgTE9HKFRleHRJbnB1dCwgIi0+IHNldEFs
bG93ZWRJbnB1dFNvdXJjZUxvY2FsZXM6bmlsIik7CisgICAgICAgIFtjb250ZXh0IHNldEFsbG93
ZWRJbnB1dFNvdXJjZUxvY2FsZXM6bmlsXTsKKyAgICB9CisgICAgX2RhdGEtPl9pblNlY3VyZUlu
cHV0U3RhdGUgPSBpc0luUGFzc3dvcmRGaWVsZDsKK30KKworLSAodm9pZClfcmVzZXRTZWN1cmVJ
bnB1dFN0YXRlCit7CisgICAgaWYgKF9kYXRhLT5faW5TZWN1cmVJbnB1dFN0YXRlKSB7CisgICAg
ICAgIERpc2FibGVTZWN1cmVFdmVudElucHV0KCk7CisgICAgICAgIF9kYXRhLT5faW5TZWN1cmVJ
bnB1dFN0YXRlID0gTk87CisgICAgfQorfQorCistICh2b2lkKV9ub3RpZnlJbnB1dENvbnRleHRB
Ym91dERpc2NhcmRlZENvbXBvc2l0aW9uCit7CisgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzkzNTkw
NTU+OiAtZGlzY2FyZE1hcmtlZFRleHQgY2FuIG9ubHkgYmUgY2FsbGVkIGZvciBhY3RpdmUgY29u
dGV4dHMuCisgICAgLy8gRklYTUU6IFdlIGZhaWwgdG8gZXZlciBub3RpZnkgdGhlIGlucHV0IGNv
bnRleHQgaWYgc29tZXRoaW5nIChlLmcuIGEgbmF2aWdhdGlvbikgaGFwcGVucyB3aGlsZSB0aGUg
d2luZG93IGlzIG5vdCBrZXkuCisgICAgLy8gVGhpcyBpcyBub3QgYSBwcm9ibGVtIHdoZW4gdGhl
IHdpbmRvdyBpcyBrZXksIGJlY2F1c2Ugd2UgZGlzY2FyZCBtYXJrZWQgdGV4dCBvbiByZXNpZ25p
bmcgZmlyc3QgcmVzcG9uZGVyLgorICAgIGlmICghW1tzZWxmIHdpbmRvd10gaXNLZXlXaW5kb3dd
IHx8IHNlbGYgIT0gW1tzZWxmIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdKQorICAgICAgICByZXR1
cm47CisKKyAgICBMT0coVGV4dElucHV0LCAiLT4gZGlzY2FyZE1hcmtlZFRleHQiKTsKKyAgICBb
W3N1cGVyIGlucHV0Q29udGV4dF0gZGlzY2FyZE1hcmtlZFRleHRdOyAvLyBJbmZvcm0gdGhlIGlu
cHV0IG1ldGhvZCB0aGF0IHdlIHdvbid0IGhhdmUgYW4gaW5saW5lIGlucHV0IGFyZWEgZGVzcGl0
ZSBoYXZpbmcgYmVlbiBhc2tlZCB0by4KK30KIAogLSAoTlNXaW5kb3cgKilfdGFyZ2V0V2luZG93
Rm9yTW92ZVByZXBhcmF0aW9uCiB7CkBAIC0zNTMxLDE3ICszNjg4LDI0IEBAIHN0YXRpYyBOU1N0
cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogLSAoQk9PTClfaGFzRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIKIHsKLSAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5oYXNGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlcigpOworICAgIHJldHVybiAoYm9vbClfZGF0YS0+X2Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyOwogfQogCiAtIChXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyICopX2Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyCiB7Ci0gICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+ZnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIoKTsKKyAgICBpZiAoIV9kYXRhLT5fZnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIpCisgICAgICAgIF9kYXRhLT5fZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgPSBh
ZG9wdE5TKFtbV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhXaW5k
b3c6W3NlbGYgY3JlYXRlRnVsbFNjcmVlbldpbmRvd10gd2ViVmlldzpzZWxmXSk7CisKKyAgICBy
ZXR1cm4gX2RhdGEtPl9mdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5nZXQoKTsKIH0KIAogLSAo
dm9pZClfY2xvc2VGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcgogewotICAgIF9kYXRhLT5faW1w
bC0+Y2xvc2VGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcigpOworICAgIGlmICghX2RhdGEtPl9m
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgW19kYXRh
LT5fZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgY2xvc2VdOworICAgIF9kYXRhLT5fZnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIgPSBudWxscHRyOwogfQogI2VuZGlmCiAKQEAgLTM1NTgsNyAr
MzcyMiwxNiBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRo
KE5TU3RyaW5nICpwYXRoKQogCiAtICh2b2lkKV9zZXRJbnRyaW5zaWNDb250ZW50U2l6ZTooTlNT
aXplKWludHJpbnNpY0NvbnRlbnRTaXplCiB7Ci0gICAgX2RhdGEtPl9pbXBsLT5zZXRJbnRyaW5z
aWNDb250ZW50U2l6ZShOU1NpemVUb0NHU2l6ZShpbnRyaW5zaWNDb250ZW50U2l6ZSkpOworICAg
IC8vIElmIHRoZSBpbnRyaW5zaWMgY29udGVudCBzaXplIGlzIGxlc3MgdGhhbiB0aGUgbWluaW11
bSBsYXlvdXQgd2lkdGgsIHRoZSBjb250ZW50IGZsb3dlZCB0byBmaXQsCisgICAgLy8gc28gd2Ug
Y2FuIHJlcG9ydCB0aGF0IHRoYXQgZGltZW5zaW9uIGlzIGZsZXhpYmxlLiBJZiBub3QsIHdlIG5l
ZWQgdG8gcmVwb3J0IG91ciBpbnRyaW5zaWMgd2lkdGgKKyAgICAvLyBzbyB0aGF0IGF1dG9sYXlv
dXQgd2lsbCBrbm93IHRvIHByb3ZpZGUgc3BhY2UgZm9yIHVzLgorCisgICAgTlNTaXplIGludHJp
bnNpY0NvbnRlbnRTaXplQWNrbm93bGVkZ2luZ0ZsZXhpYmxlV2lkdGggPSBpbnRyaW5zaWNDb250
ZW50U2l6ZTsKKyAgICBpZiAoaW50cmluc2ljQ29udGVudFNpemUud2lkdGggPCBfZGF0YS0+X3Bh
Z2UtPm1pbmltdW1MYXlvdXRTaXplKCkud2lkdGgoKSkKKyAgICAgICAgaW50cmluc2ljQ29udGVu
dFNpemVBY2tub3dsZWRnaW5nRmxleGlibGVXaWR0aC53aWR0aCA9IE5TVmlld05vSW5zdHJpbnNp
Y01ldHJpYzsKKworICAgIF9kYXRhLT5faW50cmluc2ljQ29udGVudFNpemUgPSBpbnRyaW5zaWND
b250ZW50U2l6ZUFja25vd2xlZGdpbmdGbGV4aWJsZVdpZHRoOworICAgIFtzZWxmIGludmFsaWRh
dGVJbnRyaW5zaWNDb250ZW50U2l6ZV07CiB9CiAKIC0gKE5TSW50ZWdlcilzcGVsbENoZWNrZXJE
b2N1bWVudFRhZwpAQCAtMzYyMCwxMCArMzc5Myw2IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdp
dGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAKICAgICBfZGF0YS0+X3Bh
Z2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPihzZWxmLCB3ZWJWaWV3
KTsKICAgICBfZGF0YS0+X3BhZ2UgPSBwcm9jZXNzUG9vbC5jcmVhdGVXZWJQYWdlKCpfZGF0YS0+
X3BhZ2VDbGllbnQsIFdURjo6bW92ZShjb25maWd1cmF0aW9uKSk7Ci0KLSAgICBfZGF0YS0+X2lt
cGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZpZXdJbXBsPihzZWxmLCAqX2RhdGEtPl9wYWdlKTsK
LSAgICBzdGF0aWNfY2FzdDxQYWdlQ2xpZW50SW1wbCo+KF9kYXRhLT5fcGFnZUNsaWVudC5nZXQo
KSktPnNldEltcGwoKl9kYXRhLT5faW1wbCk7Ci0KICAgICBfZGF0YS0+X3BhZ2UtPnNldEFkZHNW
aXNpdGVkTGlua3MocHJvY2Vzc1Bvb2wuaGlzdG9yeUNsaWVudCgpLmFkZHNWaXNpdGVkTGlua3Mo
KSk7CiAKICAgICBfZGF0YS0+X3BhZ2UtPnNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKFtz
ZWxmIF9pbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3Rvcl0pOwpAQCAtMzYzMiwxMiArMzgwMSwyMCBA
QCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5n
ICpwYXRoKQogICAgIF9kYXRhLT5fbW91c2VEb3duRXZlbnQgPSBuaWw7CiAgICAgX2RhdGEtPl9w
cmVzc3VyZUV2ZW50ID0gbmlsOwogICAgIF9kYXRhLT5faWdub3JpbmdNb3VzZURyYWdnZWRFdmVu
dHMgPSBOTzsKKyAgICBfZGF0YS0+X2NsaXBzVG9WaXNpYmxlUmVjdCA9IE5POworICAgIF9kYXRh
LT5fdXNlQ29udGVudFByZXBhcmF0aW9uUmVjdEZvclZpc2libGVSZWN0ID0gTk87CiAgICAgX2Rh
dGEtPl93aW5kb3dPY2NsdXNpb25EZXRlY3Rpb25FbmFibGVkID0gWUVTOworICAgIF9kYXRhLT5f
bGFzdFJlcXVlc3RlZExheW91dE1vZGUgPSBrV0tMYXlvdXRNb2RlVmlld1NpemU7CisgICAgX2Rh
dGEtPl9sYXN0UmVxdWVzdGVkVmlld1NjYWxlID0gMTsKIAogICAgIF9kYXRhLT5fd2luZG93Vmlz
aWJpbGl0eU9ic2VydmVyID0gYWRvcHROUyhbW1dLV2luZG93VmlzaWJpbGl0eU9ic2VydmVyIGFs
bG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwogCisgICAgX2RhdGEtPl9pbnRyaW5zaWNDb250ZW50
U2l6ZSA9IE5TTWFrZVNpemUoTlNWaWV3Tm9JbnN0cmluc2ljTWV0cmljLCBOU1ZpZXdOb0luc3Ry
aW5zaWNNZXRyaWMpOworCiAgICAgX2RhdGEtPl9uZWVkc1ZpZXdGcmFtZUluV2luZG93Q29vcmRp
bmF0ZXMgPSBfZGF0YS0+X3BhZ2UtPnByZWZlcmVuY2VzKCkucGx1Z2luc0VuYWJsZWQoKTsKIAor
ICAgIF9kYXRhLT5fbGF5b3V0U3RyYXRlZ3kgPSBbV0tWaWV3TGF5b3V0U3RyYXRlZ3kgbGF5b3V0
U3RyYXRlZ3lXaXRoUGFnZToqX2RhdGEtPl9wYWdlIHZpZXc6c2VsZiBtb2RlOmtXS0xheW91dE1v
ZGVWaWV3U2l6ZV07CisKICAgICBbc2VsZiBfcmVnaXN0ZXJEcmFnZ2VkVHlwZXNdOwogCiAgICAg
c2VsZi53YW50c0xheWVyID0gWUVTOwpAQCAtMzc0Nyw2ICszOTI0LDQ0IEBAIHN0YXRpYyBOU1N0
cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAg
ICAgIF9kYXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXItPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZvck1haW5GcmFtZSgpOwogfQogCistIChCT09MKV9zdXBwb3J0c0FyYml0cmFyeUxheW91
dE1vZGVzCit7CisgICAgaWYgKFtfZGF0YS0+X2Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGlz
RnVsbFNjcmVlbl0pCisgICAgICAgIHJldHVybiBOTzsKKworICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSA9IF9kYXRhLT5fcGFnZS5nZXQoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBZ
RVM7CisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKKyAgICBp
ZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgLy8gSWYgd2UgaGF2ZSBhIHBs
dWdpbiBkb2N1bWVudCBpbiB0aGUgbWFpbiBmcmFtZSwgYXZvaWQgdXNpbmcgY3VzdG9tIFdLTGF5
b3V0TW9kZXMKKyAgICAvLyBhbmQgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0cywgYmVjYXVzZSB0
aGVyZSdzIGEgZ29vZCBjaGFuY2UgdGhhdCBpdCB3b24ndCB3b3JrIChlLmcuIHdpdGggUERGUGx1
Z2luKS4KKyAgICBpZiAoZnJhbWUtPmNvbnRhaW5zUGx1Z2luRG9jdW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIE5POworCisgICAgcmV0dXJuIFlFUzsKK30KKworLSAodm9pZClfdXBkYXRlU3VwcG9y
dHNBcmJpdHJhcnlMYXlvdXRNb2RlcworeworICAgIGlmICghW3NlbGYgX3N1cHBvcnRzQXJiaXRy
YXJ5TGF5b3V0TW9kZXNdKSB7CisgICAgICAgIFdLTGF5b3V0TW9kZSBvbGRSZXF1ZXN0ZWRMYXlv
dXRNb2RlID0gX2RhdGEtPl9sYXN0UmVxdWVzdGVkTGF5b3V0TW9kZTsKKyAgICAgICAgZmxvYXQg
b2xkUmVxdWVzdGVkVmlld1NjYWxlID0gX2RhdGEtPl9sYXN0UmVxdWVzdGVkVmlld1NjYWxlOwor
ICAgICAgICBbc2VsZiBfc2V0Vmlld1NjYWxlOjFdOworICAgICAgICBbc2VsZiBfc2V0TGF5b3V0
TW9kZTprV0tMYXlvdXRNb2RlVmlld1NpemVdOworCisgICAgICAgIC8vIFRoZSAnbGFzdCByZXF1
ZXN0ZWQnIHBhcmFtZXRlcnMgd2lsbCBoYXZlIGJlZW4gb3ZlcndyaXR0ZW4gYnkgc2V0dGluZyB0
aGVtIGFib3ZlLCBidXQgd2UgZG9uJ3QKKyAgICAgICAgLy8gd2FudCB0aGlzIHRvIGNvdW50IGFz
IGEgcmVxdWVzdCAob25seSBjaGFuZ2VzIGZyb20gdGhlIGNsaWVudCBjb3VudCksIHNvIHJlc2V0
IHRoZW0uCisgICAgICAgIF9kYXRhLT5fbGFzdFJlcXVlc3RlZExheW91dE1vZGUgPSBvbGRSZXF1
ZXN0ZWRMYXlvdXRNb2RlOworICAgICAgICBfZGF0YS0+X2xhc3RSZXF1ZXN0ZWRWaWV3U2NhbGUg
PSBvbGRSZXF1ZXN0ZWRWaWV3U2NhbGU7CisgICAgfSBlbHNlIGlmIChfZGF0YS0+X2xhc3RSZXF1
ZXN0ZWRMYXlvdXRNb2RlICE9IFtfZGF0YS0+X2xheW91dFN0cmF0ZWd5IGxheW91dE1vZGVdKSB7
CisgICAgICAgIFtzZWxmIF9zZXRWaWV3U2NhbGU6X2RhdGEtPl9sYXN0UmVxdWVzdGVkVmlld1Nj
YWxlXTsKKyAgICAgICAgW3NlbGYgX3NldExheW91dE1vZGU6X2RhdGEtPl9sYXN0UmVxdWVzdGVk
TGF5b3V0TW9kZV07CisgICAgfQorfQorCiAjaWYgV0tfQVBJX0VOQUJMRUQKIC0gKF9XS1JlbW90
ZU9iamVjdFJlZ2lzdHJ5ICopX3JlbW90ZU9iamVjdFJlZ2lzdHJ5CiB7CkBAIC0zNzU3LDggKzM5
NzIsMTUgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChO
U1N0cmluZyAqcGF0aCkKIAogICAgIHJldHVybiBfZGF0YS0+X3JlbW90ZU9iamVjdFJlZ2lzdHJ5
LmdldCgpOwogfQorCiAjZW5kaWYKIAorCistICh2b2lkKV9kaWRDb21taXRMb2FkRm9yTWFpbkZy
YW1lCit7CisgICAgW3NlbGYgX3VwZGF0ZVN1cHBvcnRzQXJiaXRyYXJ5TGF5b3V0TW9kZXNdOwor
fQorCiAtICh2b2lkKV9kaWRGaW5pc2hMb2FkRm9yTWFpbkZyYW1lCiB7CiAgICAgaWYgKF9kYXRh
LT5fZ2VzdHVyZUNvbnRyb2xsZXIpCkBAIC0zNzk5LDEyICs0MDIxLDYgQEAgc3RhdGljIE5TU3Ry
aW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKIH0KICNl
bmRpZgogCi0vLyBGSVhNRTogR2V0IHJpZCBvZiB0aGlzIHdoZW4gd2UgaGF2ZSBiZXR0ZXIgcGx1
bWJpbmcgdG8gV0tWaWV3TGF5b3V0U3RyYXRlZ3kuCi0tICh2b2lkKV91cGRhdGVWaWV3RXhwb3Nl
ZFJlY3QKLXsKLSAgICBfZGF0YS0+X2ltcGwtPnVwZGF0ZVZpZXdFeHBvc2VkUmVjdCgpOwotfQot
CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1ZpZXcgKFByaXZhdGUpCkBAIC0zODkyLDIyICs0
MTA4LDI1IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgo
TlNTdHJpbmcgKnBhdGgpCiAKIC0gKHZvaWQpc2V0RnJhbWU6KE5TUmVjdClyZWN0IGFuZFNjcm9s
bEJ5OihOU1NpemUpb2Zmc2V0CiB7Ci0gICAgX2RhdGEtPl9pbXBsLT5zZXRGcmFtZUFuZFNjcm9s
bEJ5KE5TUmVjdFRvQ0dSZWN0KHJlY3QpLCBOU1NpemVUb0NHU2l6ZShvZmZzZXQpKTsKKyAgICBB
U1NFUlQoTlNFcXVhbFNpemVzKF9kYXRhLT5fcmVzaXplU2Nyb2xsT2Zmc2V0LCBOU1plcm9TaXpl
KSk7CisKKyAgICBfZGF0YS0+X3Jlc2l6ZVNjcm9sbE9mZnNldCA9IG9mZnNldDsKKyAgICBbc2Vs
ZiBzZXRGcmFtZTpyZWN0XTsKIH0KIAogLSAodm9pZClkaXNhYmxlRnJhbWVTaXplVXBkYXRlcwog
ewotICAgIF9kYXRhLT5faW1wbC0+ZGlzYWJsZUZyYW1lU2l6ZVVwZGF0ZXMoKTsKKyAgICBbX2Rh
dGEtPl9sYXlvdXRTdHJhdGVneSBkaXNhYmxlRnJhbWVTaXplVXBkYXRlc107CiB9CiAKIC0gKHZv
aWQpZW5hYmxlRnJhbWVTaXplVXBkYXRlcwogewotICAgIF9kYXRhLT5faW1wbC0+ZW5hYmxlRnJh
bWVTaXplVXBkYXRlcygpOworICAgIFtfZGF0YS0+X2xheW91dFN0cmF0ZWd5IGVuYWJsZUZyYW1l
U2l6ZVVwZGF0ZXNdOwogfQogCiAtIChCT09MKWZyYW1lU2l6ZVVwZGF0ZXNEaXNhYmxlZAogewot
ICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPmZyYW1lU2l6ZVVwZGF0ZXNEaXNhYmxlZCgpOworICAg
IHJldHVybiBbX2RhdGEtPl9sYXlvdXRTdHJhdGVneSBmcmFtZVNpemVVcGRhdGVzRGlzYWJsZWRd
OwogfQogCiArICh2b2lkKWhpZGVXb3JkRGVmaW5pdGlvbldpbmRvdwpAQCAtMzk0MiwxMiArNDE2
MSwxMyBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5T
U3RyaW5nICpwYXRoKQogCiAtIChCT09MKXNob3VsZENsaXBUb1Zpc2libGVSZWN0CiB7Ci0gICAg
cmV0dXJuIF9kYXRhLT5faW1wbC0+Y2xpcHNUb1Zpc2libGVSZWN0KCk7CisgICAgcmV0dXJuIF9k
YXRhLT5fY2xpcHNUb1Zpc2libGVSZWN0OwogfQogCiAtICh2b2lkKXNldFNob3VsZENsaXBUb1Zp
c2libGVSZWN0OihCT09MKWNsaXBzVG9WaXNpYmxlUmVjdAogewotICAgIF9kYXRhLT5faW1wbC0+
c2V0Q2xpcHNUb1Zpc2libGVSZWN0KGNsaXBzVG9WaXNpYmxlUmVjdCk7CisgICAgX2RhdGEtPl9j
bGlwc1RvVmlzaWJsZVJlY3QgPSBjbGlwc1RvVmlzaWJsZVJlY3Q7CisgICAgW3NlbGYgX3VwZGF0
ZVZpZXdFeHBvc2VkUmVjdF07CiB9CiAKIC0gKE5TQ29sb3IgKil1bmRlcmxheUNvbG9yCkBAIC0z
OTg0LDEzICs0MjA0LDIwIEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFt
ZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAKIC0gKE5TVmlldyAqKWZ1bGxTY3JlZW5QbGFjZWhv
bGRlclZpZXcKIHsKLSAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5mdWxsU2NyZWVuUGxhY2Vob2xk
ZXJWaWV3KCk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGlmIChfZGF0YS0+X2Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyICYmIFtfZGF0YS0+X2Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyIGlzRnVsbFNjcmVlbl0pCisgICAgICAgIHJldHVybiBbX2RhdGEtPl9mdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlciB3ZWJWaWV3UGxhY2Vob2xkZXJdOworI2VuZGlmCisgICAgcmV0dXJu
IG5pbDsKIH0KIAotLy8gRklYTUU6IFRoaXMgcmV0dXJucyBhbiBhdXRvcmVsZWFzZWQgb2JqZWN0
LiBTaG91bGQgaXQgcmVhbGx5IGJlIHByZWZpeGVkICdjcmVhdGUnPwogLSAoTlNXaW5kb3cgKilj
cmVhdGVGdWxsU2NyZWVuV2luZG93CiB7Ci0gICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+Y3JlYXRl
RnVsbFNjcmVlbldpbmRvdygpOworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICByZXR1
cm4gW1tbV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6
W1tOU1NjcmVlbiBtYWluU2NyZWVuXSBmcmFtZV0gc3R5bGVNYXNrOihOU0JvcmRlcmxlc3NXaW5k
b3dNYXNrIHwgTlNSZXNpemFibGVXaW5kb3dNYXNrKSBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVm
ZmVyZWQgZGVmZXI6Tk9dIGF1dG9yZWxlYXNlXTsKKyNlbHNlCisgICAgcmV0dXJuIG5pbDsKKyNl
bmRpZgogfQogCiAvLyBGSVhNRTogQWxsIG9mIHRoZXNlICJEZWZlcnJpbmdWaWV3SW5XaW5kb3dD
aGFuZ2VzIiBtZXRob2RzIHNob3VsZCBiZSBhYmxlIHRvIGJlIHJlbW92ZWQgb25jZSBjbGllbnRz
IGFyZSB3ZWFuZWQgb2ZmIG9mIHRoZW0uCkBAIC00MTU2LDMyICs0MzgzLDUwIEBAIHN0YXRpYyBO
U1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAK
IC0gKFdLTGF5b3V0TW9kZSlfbGF5b3V0TW9kZQogewotICAgIHJldHVybiBfZGF0YS0+X2ltcGwt
PmxheW91dE1vZGUoKTsKKyAgICByZXR1cm4gW19kYXRhLT5fbGF5b3V0U3RyYXRlZ3kgbGF5b3V0
TW9kZV07CiB9CiAKIC0gKHZvaWQpX3NldExheW91dE1vZGU6KFdLTGF5b3V0TW9kZSlsYXlvdXRN
b2RlCiB7Ci0gICAgX2RhdGEtPl9pbXBsLT5zZXRMYXlvdXRNb2RlKGxheW91dE1vZGUpOworICAg
IF9kYXRhLT5fbGFzdFJlcXVlc3RlZExheW91dE1vZGUgPSBsYXlvdXRNb2RlOworCisgICAgaWYg
KCFbc2VsZiBfc3VwcG9ydHNBcmJpdHJhcnlMYXlvdXRNb2Rlc10gJiYgbGF5b3V0TW9kZSAhPSBr
V0tMYXlvdXRNb2RlVmlld1NpemUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChsYXlvdXRN
b2RlID09IFtfZGF0YS0+X2xheW91dFN0cmF0ZWd5IGxheW91dE1vZGVdKQorICAgICAgICByZXR1
cm47CisKKyAgICBbX2RhdGEtPl9sYXlvdXRTdHJhdGVneSB3aWxsQ2hhbmdlTGF5b3V0U3RyYXRl
Z3ldOworICAgIF9kYXRhLT5fbGF5b3V0U3RyYXRlZ3kgPSBbV0tWaWV3TGF5b3V0U3RyYXRlZ3kg
bGF5b3V0U3RyYXRlZ3lXaXRoUGFnZToqX2RhdGEtPl9wYWdlIHZpZXc6c2VsZiBtb2RlOmxheW91
dE1vZGVdOwogfQogCiAtIChDR1NpemUpX2ZpeGVkTGF5b3V0U2l6ZQogewotICAgIHJldHVybiBf
ZGF0YS0+X2ltcGwtPmZpeGVkTGF5b3V0U2l6ZSgpOworICAgIHJldHVybiBfZGF0YS0+X3BhZ2Ut
PmZpeGVkTGF5b3V0U2l6ZSgpOwogfQogCiAtICh2b2lkKV9zZXRGaXhlZExheW91dFNpemU6KENH
U2l6ZSlmaXhlZExheW91dFNpemUKIHsKLSAgICBfZGF0YS0+X2ltcGwtPnNldEZpeGVkTGF5b3V0
U2l6ZShmaXhlZExheW91dFNpemUpOworICAgIF9kYXRhLT5fcGFnZS0+c2V0Rml4ZWRMYXlvdXRT
aXplKGV4cGFuZGVkSW50U2l6ZShGbG9hdFNpemUoZml4ZWRMYXlvdXRTaXplKSkpOwogfQogCiAt
IChDR0Zsb2F0KV92aWV3U2NhbGUKIHsKLSAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT52aWV3U2Nh
bGUoKTsKKyAgICByZXR1cm4gX2RhdGEtPl9wYWdlLT52aWV3U2NhbGVGYWN0b3IoKTsKIH0KIAog
LSAodm9pZClfc2V0Vmlld1NjYWxlOihDR0Zsb2F0KXZpZXdTY2FsZQogewotICAgIF9kYXRhLT5f
aW1wbC0+c2V0Vmlld1NjYWxlKHZpZXdTY2FsZSk7CisgICAgX2RhdGEtPl9sYXN0UmVxdWVzdGVk
Vmlld1NjYWxlID0gdmlld1NjYWxlOworCisgICAgaWYgKCFbc2VsZiBfc3VwcG9ydHNBcmJpdHJh
cnlMYXlvdXRNb2Rlc10gJiYgdmlld1NjYWxlICE9IDEpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICh2aWV3U2NhbGUgPD0gMCB8fCBpc25hbih2aWV3U2NhbGUpIHx8IGlzaW5mKHZpZXdTY2Fs
ZSkpCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlv
biBmb3JtYXQ6QCJWaWV3IHNjYWxlIHNob3VsZCBiZSBhIHBvc2l0aXZlIG51bWJlciJdOworCisg
ICAgX2RhdGEtPl9wYWdlLT5zY2FsZVZpZXcodmlld1NjYWxlKTsKKyAgICBbX2RhdGEtPl9sYXlv
dXRTdHJhdGVneSBkaWRDaGFuZ2VWaWV3U2NhbGVdOwogfQogCiAtICh2b2lkKV9kaXNwYXRjaFNl
dFRvcENvbnRlbnRJbnNldApAQCAtNDI4Miw5ICs0NTI3LDkgQEAgc3RhdGljIE5TU3RyaW5nICpw
YXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKIHsKICAgICAvLyBU
aGlzIFNQSSBpcyBvbmx5IHVzZWQgb24gMTAuOSBhbmQgYmVsb3csIGFuZCBpcyBpbmNvbXBhdGli
bGUgd2l0aCB0aGUgZmVuY2UtYmFzZWQgZHJhd2luZyBhcmVhIHNpemUgc3luY2hyb25pemF0aW9u
IGluIDEwLjEwKy4KICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEwOTAK
LSAgICBpZiAoX2RhdGEtPl9pbXBsLT5jbGlwc1RvVmlzaWJsZVJlY3QoKSkKLSAgICAgICAgX2Rh
dGEtPl9pbXBsLT51cGRhdGVWaWV3RXhwb3NlZFJlY3QoKTsKLSAgICBfZGF0YS0+X2ltcGwtPnNl
dERyYXdpbmdBcmVhU2l6ZShOU1NpemVUb0NHU2l6ZShzaXplKSk7CisgICAgaWYgKF9kYXRhLT5f
Y2xpcHNUb1Zpc2libGVSZWN0KQorICAgICAgICBbc2VsZiBfdXBkYXRlVmlld0V4cG9zZWRSZWN0
XTsKKyAgICBbc2VsZiBfc2V0RHJhd2luZ0FyZWFTaXplOnNpemVdOwogCiAgICAgLy8gSWYgYSBn
ZW9tZXRyeSB1cGRhdGUgaXMgcGVuZGluZyB0aGUgbmV3IHVwZGF0ZSB3b24ndCBiZSBzZW50LiBQ
b2xsIHdpdGhvdXQgd2FpdGluZyBmb3IgYW55CiAgICAgLy8gcGVuZGluZyBkaWQtdXBkYXRlIG1l
c3NhZ2Ugbm93LCBzdWNoIHRoYXQgdGhlIG5ldyB1cGRhdGUgY2FuIGJlIHNlbnQuIFdlIGRvIHNv
IGFmdGVyIHNldHRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXdJbnRlcm5hbC5oCmluZGV4IDk3MDBjYWZjNzlmNTc3MTkwNmJiMDk2NTgxYzY4MzBlNzQy
YWQxZWQuLjJmYWU3YTY0YmRlNmQyYzdlZmY0MDA5NTljNjljNDU1ZGM0OTc2YmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaApAQCAt
NzcsNiArNzcsNyBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGU7CiAjZW5kaWYKIAogLSAoc3RkOjp1bmlx
dWVfcHRyPFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eT4pX2NyZWF0ZURyYXdpbmdBcmVhUHJveHk7
CistIChCT09MKV9pc0ZvY3VzZWQ7CiAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdDsKIC0gKHZvaWQp
X3BhZ2VDbG9zZWQ7CiAtICh2b2lkKV9kaWRSZWxhdW5jaFByb2Nlc3M7CkBAIC0xMDksNiArMTEw
LDkgQEAgc3RydWN0IEVkaXRvclN0YXRlOwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAtICh2b2lkKV9zZXRQcm9taXNlZERhdGFGb3JBdHRhY2htZW50OihOU1N0cmluZyAqKWZpbGVu
YW1lIHdpdGhFeHRlbnNpb246KE5TU3RyaW5nICopZXh0ZW5zaW9uIHdpdGhUaXRsZTooTlNTdHJp
bmcgKil0aXRsZSB3aXRoVVJMOihOU1N0cmluZyAqKXVybCB3aXRoVmlzaWJsZVVSTDooTlNTdHJp
bmcgKil2aXNpYmxlVXJsIGZvclBhc3RlYm9hcmQ6KE5TU3RyaW5nICopcGFzdGVib2FyZE5hbWU7
CiAjZW5kaWYKKy0gKHZvaWQpX3VwZGF0ZVNlY3VyZUlucHV0U3RhdGU7CistICh2b2lkKV9yZXNl
dFNlY3VyZUlucHV0U3RhdGU7CistICh2b2lkKV9ub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2Nh
cmRlZENvbXBvc2l0aW9uOwogCiAtIChXZWJLaXQ6OkNvbG9yU3BhY2VEYXRhKV9jb2xvclNwYWNl
OwogCkBAIC0xMTksNiArMTIzLDcgQEAgc3RydWN0IEVkaXRvclN0YXRlOwogLSAoQk9PTClfc3Vw
cHJlc3NWaXNpYmlsaXR5VXBkYXRlczsKIAogLSAodm9pZClfZGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9yTWFpbkZyYW1lOworLSAodm9pZClfZGlkQ29tbWl0TG9hZEZvck1haW5GcmFt
ZTsKIC0gKHZvaWQpX2RpZEZpbmlzaExvYWRGb3JNYWluRnJhbWU7CiAtICh2b2lkKV9kaWRGYWls
TG9hZEZvck1haW5GcmFtZTsKIC0gKHZvaWQpX2RpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JN
YWluRnJhbWU6KFdlYktpdDo6U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUpdHlwZTsKQEAgLTE1
Myw2ICsxNTgsMTMgQEAgc3RydWN0IEVkaXRvclN0YXRlOwogCiBAcHJvcGVydHkgKHJlYWRvbmx5
KSBOU1dpbmRvdyAqX3RhcmdldFdpbmRvd0Zvck1vdmVQcmVwYXJhdGlvbjsKIAorLy8gRm9yIFdL
Vmlld0xheW91dFN0cmF0ZWd5IGFuZCBzdWJjbGFzc2VzOgorLSAodm9pZClfc2V0RHJhd2luZ0Fy
ZWFTaXplOihOU1NpemUpc2l6ZTsKKy0gKHZvaWQpX3VwZGF0ZVZpZXdFeHBvc2VkUmVjdDsKKy0g
KENBTGF5ZXIgKilfcm9vdExheWVyOworCistICh2b2lkKV91cGRhdGVTdXBwb3J0c0FyYml0cmFy
eUxheW91dE1vZGVzOworCiAjaWYgV0tfQVBJX0VOQUJMRUQKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKl9yZW1vdGVPYmplY3RSZWdpc3Ry
eTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkxMjk4MjIyNzY1MDQ0YzNkNGRjYzg3
Y2ExN2FiMjRmY2RhOGY5Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysg
L2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJWaWV3
SW1wbF9oCi0jZGVmaW5lIFdlYlZpZXdJbXBsX2gKLQotI2lmIFBMQVRGT1JNKE1BQykKLQotI2lt
cG9ydCAiV0tMYXlvdXRNb2RlLmgiCi0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNf
Q0xBU1MgTlNUZXh0SW5wdXRDb250ZXh0OwotT0JKQ19DTEFTUyBOU1ZpZXc7Ci1PQkpDX0NMQVNT
IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7Ci1PQkpDX0NMQVNTIFdLVmlld0xheW91dFN0
cmF0ZWd5OwotCi1AcHJvdG9jb2wgV2ViVmlld0ltcGxEZWxlZ2F0ZQotCi0tIChOU1RleHRJbnB1
dENvbnRleHQgKilfc3VwZXJJbnB1dENvbnRleHQ7Ci0KLUBlbmQKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQotY2xhc3MgV2ViVmlld0ltcGwgewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlZpZXdJ
bXBsKTsKLXB1YmxpYzoKLSAgICBXZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJbXBsRGVsZWdh
dGU+ICosIFdlYlBhZ2VQcm94eSYpOwotCi0gICAgfldlYlZpZXdJbXBsKCk7Ci0KLSAgICB2b2lk
IHNldERyYXdzQmFja2dyb3VuZChib29sKTsKLSAgICBib29sIGRyYXdzQmFja2dyb3VuZCgpIGNv
bnN0OwotICAgIHZvaWQgc2V0RHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCk7Ci0gICAg
Ym9vbCBkcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0OwotCi0gICAgYm9vbCBhY2Nl
cHRzRmlyc3RSZXNwb25kZXIoKTsKLSAgICBib29sIGJlY29tZUZpcnN0UmVzcG9uZGVyKCk7Ci0g
ICAgYm9vbCByZXNpZ25GaXJzdFJlc3BvbmRlcigpOwotICAgIGJvb2wgaXNGb2N1c2VkKCkgY29u
c3Q7Ci0KLSAgICB2b2lkIHZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCk7Ci0gICAgdm9pZCB2aWV3
RGlkRW5kTGl2ZVJlc2l6ZSgpOwotCi0gICAgdm9pZCBzZXRGcmFtZVNpemUoQ0dTaXplKTsKLSAg
ICB2b2lkIGRpc2FibGVGcmFtZVNpemVVcGRhdGVzKCk7Ci0gICAgdm9pZCBlbmFibGVGcmFtZVNp
emVVcGRhdGVzKCk7Ci0gICAgYm9vbCBmcmFtZVNpemVVcGRhdGVzRGlzYWJsZWQoKSBjb25zdDsK
LSAgICB2b2lkIHNldEZyYW1lQW5kU2Nyb2xsQnkoQ0dSZWN0LCBDR1NpemUpOwotCi0gICAgdm9p
ZCBzZXRGaXhlZExheW91dFNpemUoQ0dTaXplKTsKLSAgICBDR1NpemUgZml4ZWRMYXlvdXRTaXpl
KCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNldERyYXdpbmdBcmVhU2l6ZShDR1NpemUpOwotCi0gICAg
dm9pZCBzZXRDb250ZW50UHJlcGFyYXRpb25SZWN0KENHUmVjdCk7Ci0gICAgdm9pZCB1cGRhdGVW
aWV3RXhwb3NlZFJlY3QoKTsKLSAgICB2b2lkIHNldENsaXBzVG9WaXNpYmxlUmVjdChib29sKTsK
LSAgICBib29sIGNsaXBzVG9WaXNpYmxlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcHNUb1Zp
c2libGVSZWN0OyB9Ci0KLSAgICB2b2lkIHNldEludHJpbnNpY0NvbnRlbnRTaXplKENHU2l6ZSk7
Ci0gICAgQ0dTaXplIGludHJpbnNpY0NvbnRlbnRTaXplKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNl
dFZpZXdTY2FsZShDR0Zsb2F0KTsKLSAgICBDR0Zsb2F0IHZpZXdTY2FsZSgpIGNvbnN0OwotCi0g
ICAgV0tMYXlvdXRNb2RlIGxheW91dE1vZGUoKSBjb25zdDsKLSAgICB2b2lkIHNldExheW91dE1v
ZGUoV0tMYXlvdXRNb2RlKTsKLSAgICB2b2lkIHVwZGF0ZVN1cHBvcnRzQXJiaXRyYXJ5TGF5b3V0
TW9kZXMoKTsKLQotICAgIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpOwotICAgIHZvaWQg
cmVzZXRTZWN1cmVJbnB1dFN0YXRlKCk7Ci0gICAgYm9vbCBpblNlY3VyZUlucHV0U3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX2luU2VjdXJlSW5wdXRTdGF0ZTsgfQotICAgIHZvaWQgbm90aWZ5SW5w
dXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbigpOwotCi0jaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQotICAgIGJvb2wgaGFzRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIoKSBjb25z
dDsKLSAgICBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyICpmdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlcigpOwotICAgIHZvaWQgY2xvc2VGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcigpOwot
I2VuZGlmCi0gICAgTlNWaWV3ICpmdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3KCk7Ci0gICAgTlNX
aW5kb3cgKmNyZWF0ZUZ1bGxTY3JlZW5XaW5kb3coKTsKLQotcHJpdmF0ZToKLSAgICBib29sIHN1
cHBvcnRzQXJiaXRyYXJ5TGF5b3V0TW9kZXMoKSBjb25zdDsKLQotICAgIE5TVmlldyA8V2ViVmll
d0ltcGxEZWxlZ2F0ZT4gKm1fdmlldzsKLSAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKLQotICAg
IGJvb2wgbV93aWxsQmVjb21lRmlyc3RSZXNwb25kZXJBZ2FpbiB7IGZhbHNlIH07Ci0gICAgYm9v
bCBtX2luQmVjb21lRmlyc3RSZXNwb25kZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pblJlc2ln
bkZpcnN0UmVzcG9uZGVyIHsgZmFsc2UgfTsKLQotICAgIENHUmVjdCBtX2NvbnRlbnRQcmVwYXJh
dGlvblJlY3Q7Ci0gICAgYm9vbCBtX3VzZUNvbnRlbnRQcmVwYXJhdGlvblJlY3RGb3JWaXNpYmxl
UmVjdCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2NsaXBzVG9WaXNpYmxlUmVjdCB7IGZhbHNlIH07
Ci0KLSAgICBDR1NpemUgbV9yZXNpemVTY3JvbGxPZmZzZXQ7Ci0KLSAgICBDR1NpemUgbV9pbnRy
aW5zaWNDb250ZW50U2l6ZTsKLQotICAgIFJldGFpblB0cjxXS1ZpZXdMYXlvdXRTdHJhdGVneT4g
bV9sYXlvdXRTdHJhdGVneTsKLSAgICBXS0xheW91dE1vZGUgbV9sYXN0UmVxdWVzdGVkTGF5b3V0
TW9kZSB7IGtXS0xheW91dE1vZGVWaWV3U2l6ZSB9OwotICAgIENHRmxvYXQgbV9sYXN0UmVxdWVz
dGVkVmlld1NjYWxlIHsgMSB9OwotCi0gICAgYm9vbCBtX2luU2VjdXJlSW5wdXRTdGF0ZSB7IGZh
bHNlIH07Ci0KLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgUmV0YWluUHRyPFdLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXI+IG1fZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7Ci0j
ZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFBMQVRG
T1JNKE1BQykKLQotI2VuZGlmIC8vIFdlYlZpZXdJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOWIyZTZlMmVkN2MxNmQ0OTgyZDAwZTE1NWQxNTA5MzI3OTcyYzEyMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0MzQgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViVmlld0ltcGwuaCIK
LQotI2lmIFBMQVRGT1JNKE1BQykKLQotI2ltcG9ydCAiR2VuZXJpY0NhbGxiYWNrLmgiCi0jaW1w
b3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCi0jaW1w
b3J0ICJXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJXS1ZpZXdMYXlv
dXRTdHJhdGVneS5oIgotI2ltcG9ydCAiV0tXZWJWaWV3LmgiCi0jaW1wb3J0ICJXZWJQYWdlUHJv
eHkuaCIKLSNpbXBvcnQgPEhJVG9vbGJveC9DYXJib25FdmVudHNDb3JlLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL0tleXByZXNzQ29tbWFuZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9OU1dpbmRvd1NQSS5o
PgotI2ltcG9ydCA8V2ViQ29yZS9WaWV3U3RhdGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUZ1
bGxTY3JlZW5XaW5kb3cuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYlZpZXdJbXBsOjpX
ZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJbXBsRGVsZWdhdGU+ICp2aWV3LCBXZWJQYWdlUHJv
eHkmIHBhZ2UpCi0gICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fcGFnZShwYWdlKQotICAgICwg
bV9pbnRyaW5zaWNDb250ZW50U2l6ZShDR1NpemVNYWtlKE5TVmlld05vSW5zdHJpbnNpY01ldHJp
YywgTlNWaWV3Tm9JbnN0cmluc2ljTWV0cmljKSkKLSAgICAsIG1fbGF5b3V0U3RyYXRlZ3koW1dL
Vmlld0xheW91dFN0cmF0ZWd5IGxheW91dFN0cmF0ZWd5V2l0aFBhZ2U6bV9wYWdlIHZpZXc6bV92
aWV3IHZpZXdJbXBsOip0aGlzIG1vZGU6a1dLTGF5b3V0TW9kZVZpZXdTaXplXSkKLXsKLX0KLQot
V2ViVmlld0ltcGw6On5XZWJWaWV3SW1wbCgpCi17Ci0gICAgQVNTRVJUKCFtX2luU2VjdXJlSW5w
dXRTdGF0ZSk7Ci0KLSAgICBbbV9sYXlvdXRTdHJhdGVneSBpbnZhbGlkYXRlXTsKLX0KLQotdm9p
ZCBXZWJWaWV3SW1wbDo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQot
ewotICAgIG1fcGFnZS5zZXREcmF3c0JhY2tncm91bmQoZHJhd3NCYWNrZ3JvdW5kKTsKLX0KLQot
Ym9vbCBXZWJWaWV3SW1wbDo6ZHJhd3NCYWNrZ3JvdW5kKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9wYWdlLmRyYXdzQmFja2dyb3VuZCgpOwotfQotCi12b2lkIFdlYlZpZXdJbXBsOjpzZXREcmF3
c1RyYW5zcGFyZW50QmFja2dyb3VuZChib29sIGRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKQot
ewotICAgIG1fcGFnZS5zZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZChkcmF3c1RyYW5zcGFy
ZW50QmFja2dyb3VuZCk7Ci19Ci0KLWJvb2wgV2ViVmlld0ltcGw6OmRyYXdzVHJhbnNwYXJlbnRC
YWNrZ3JvdW5kKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYWdlLmRyYXdzVHJhbnNwYXJlbnRC
YWNrZ3JvdW5kKCk7Ci19Ci0KLWJvb2wgV2ViVmlld0ltcGw6OmFjY2VwdHNGaXJzdFJlc3BvbmRl
cigpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgV2ViVmlld0ltcGw6OmJlY29tZUZp
cnN0UmVzcG9uZGVyKCkKLXsKLSAgICAvLyBJZiB3ZSBqdXN0IGJlY2FtZSBmaXJzdCByZXNwb25k
ZXIgYWdhaW4sIHRoZXJlIGlzIG5vIG5lZWQgdG8gZG8gYW55dGhpbmcsCi0gICAgLy8gc2luY2Ug
cmVzaWduRmlyc3RSZXNwb25kZXIgaGFzIGNvcnJlY3RseSBkZXRlY3RlZCB0aGlzIHNpdHVhdGlv
bi4KLSAgICBpZiAobV93aWxsQmVjb21lRmlyc3RSZXNwb25kZXJBZ2FpbikgewotICAgICAgICBt
X3dpbGxCZWNvbWVGaXJzdFJlc3BvbmRlckFnYWluID0gTk87Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIE5TU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IFtbbV92aWV3
IHdpbmRvd10ga2V5Vmlld1NlbGVjdGlvbkRpcmVjdGlvbl07Ci0KLSAgICBtX2luQmVjb21lRmly
c3RSZXNwb25kZXIgPSB0cnVlOwotCi0gICAgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpOwotICAg
IG1fcGFnZS52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpJc0ZvY3VzZWQp
OwotICAgIC8vIFJlc3RvcmUgdGhlIHNlbGVjdGlvbiBpbiB0aGUgZWRpdGFibGUgcmVnaW9uIGlm
IHJlc2lnbmluZyBmaXJzdCByZXNwb25kZXIgY2xlYXJlZCBzZWxlY3Rpb24uCi0gICAgbV9wYWdl
LnJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKTsKLQotICAgIG1faW5C
ZWNvbWVGaXJzdFJlc3BvbmRlciA9IGZhbHNlOwotCi0gICAgaWYgKGRpcmVjdGlvbiAhPSBOU0Rp
cmVjdFNlbGVjdGlvbikgewotICAgICAgICBOU0V2ZW50ICpldmVudCA9IFtOU0FwcCBjdXJyZW50
RXZlbnRdOwotICAgICAgICBOU0V2ZW50ICprZXlib2FyZEV2ZW50ID0gbmlsOwotICAgICAgICBp
ZiAoW2V2ZW50IHR5cGVdID09IE5TS2V5RG93biB8fCBbZXZlbnQgdHlwZV0gPT0gTlNLZXlVcCkK
LSAgICAgICAgICAgIGtleWJvYXJkRXZlbnQgPSBldmVudDsKLSAgICAgICAgbV9wYWdlLnNldElu
aXRpYWxGb2N1cyhkaXJlY3Rpb24gPT0gTlNTZWxlY3RpbmdOZXh0LCBrZXlib2FyZEV2ZW50ICE9
IG5pbCwgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChrZXlib2FyZEV2ZW50LCBmYWxzZSwgVmVjdG9y
PFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4oKSksIFtdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvcikgeyB9KTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgV2ViVmlld0lt
cGw6OnJlc2lnbkZpcnN0UmVzcG9uZGVyKCkKLXsKLSNpZiBXS19BUElfRU5BQkxFRAotICAgIC8v
IFByZWRpY3QgdGhlIGNhc2Ugd2hlcmUgd2UgYXJlIGxvc2luZyBmaXJzdCByZXNwb25kZXIgc3Rh
dHVzIG9ubHkgdG8KLSAgICAvLyBnYWluIGl0IGJhY2sgYWdhaW4uIFdlIHdhbnQgcmVzaWduRmly
c3RSZXNwb25kZXIgdG8gZG8gbm90aGluZyBpbiB0aGF0IGNhc2UuCi0gICAgaWQgbmV4dFJlc3Bv
bmRlciA9IFtbbV92aWV3IHdpbmRvd10gX25ld0ZpcnN0UmVzcG9uZGVyQWZ0ZXJSZXNpZ25pbmdd
OwotCi0gICAgLy8gRklYTUU6IFRoaXMgd2lsbCBwcm9iYWJseSBuZWVkIHRvIGNoYW5nZSBvbmNl
IFdLV2ViVmlldyBkb2Vzbid0IGNvbnRhaW4gYSBXS1ZpZXcuCi0gICAgaWYgKFtuZXh0UmVzcG9u
ZGVyIGlzS2luZE9mQ2xhc3M6W1dLV2ViVmlldyBjbGFzc11dICYmIG1fdmlldy5zdXBlcnZpZXcg
PT0gbmV4dFJlc3BvbmRlcikgewotICAgICAgICBtX3dpbGxCZWNvbWVGaXJzdFJlc3BvbmRlckFn
YWluID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBt
X3dpbGxCZWNvbWVGaXJzdFJlc3BvbmRlckFnYWluID0gTk87Ci0gICAgbV9pblJlc2lnbkZpcnN0
UmVzcG9uZGVyID0gdHJ1ZTsKLQotI2lmIFVTRShBU1lOQ19OU1RFWFRJTlBVVENMSUVOVCkKLSAg
ICBtX3BhZ2UuY29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKTsKLSNlbHNlCi0gICAgaWYgKG1fcGFn
ZS5lZGl0b3JTdGF0ZSgpLmhhc0NvbXBvc2l0aW9uICYmICFtX3BhZ2UuZWRpdG9yU3RhdGUoKS5z
aG91bGRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSkKLSAgICAgICAgbV9wYWdlLmNh
bmNlbENvbXBvc2l0aW9uKCk7Ci0jZW5kaWYKLQotICAgIG5vdGlmeUlucHV0Q29udGV4dEFib3V0
RGlzY2FyZGVkQ29tcG9zaXRpb24oKTsKLQotICAgIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpOwot
Ci0gICAgaWYgKCFtX3BhZ2UubWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24oKSkKLSAgICAgICAg
bV9wYWdlLmNsZWFyU2VsZWN0aW9uKCk7Ci0KLSAgICBtX3BhZ2Uudmlld1N0YXRlRGlkQ2hhbmdl
KFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNGb2N1c2VkKTsKLSAgICAKLSAgICBtX2luUmVzaWduRmly
c3RSZXNwb25kZXIgPSBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBX
ZWJWaWV3SW1wbDo6aXNGb2N1c2VkKCkgY29uc3QKLXsKLSAgICBpZiAobV9pbkJlY29tZUZpcnN0
UmVzcG9uZGVyKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAobV9pblJlc2lnbkZpcnN0
UmVzcG9uZGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fdmlldy53aW5k
b3cuZmlyc3RSZXNwb25kZXIgPT0gbV92aWV3OwotfQotCi12b2lkIFdlYlZpZXdJbXBsOjp2aWV3
V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCi17Ci0gICAgbV9wYWdlLnZpZXdXaWxsU3RhcnRMaXZlUmVz
aXplKCk7Ci0KLSAgICBbbV9sYXlvdXRTdHJhdGVneSB3aWxsU3RhcnRMaXZlUmVzaXplXTsKLX0K
LQotdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZEVuZExpdmVSZXNpemUoKQotewotICAgIG1fcGFn
ZS52aWV3V2lsbEVuZExpdmVSZXNpemUoKTsKLQotICAgIFttX2xheW91dFN0cmF0ZWd5IGRpZEVu
ZExpdmVSZXNpemVdOwotfQotCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRGcmFtZVNpemUoQ0dTaXpl
KQotewotICAgIFttX2xheW91dFN0cmF0ZWd5IGRpZENoYW5nZUZyYW1lU2l6ZV07Ci19Ci0KLXZv
aWQgV2ViVmlld0ltcGw6OmRpc2FibGVGcmFtZVNpemVVcGRhdGVzKCkKLXsKLSAgICBbbV9sYXlv
dXRTdHJhdGVneSBkaXNhYmxlRnJhbWVTaXplVXBkYXRlc107Ci19Ci0KLXZvaWQgV2ViVmlld0lt
cGw6OmVuYWJsZUZyYW1lU2l6ZVVwZGF0ZXMoKQotewotICAgIFttX2xheW91dFN0cmF0ZWd5IGVu
YWJsZUZyYW1lU2l6ZVVwZGF0ZXNdOwotfQotCi1ib29sIFdlYlZpZXdJbXBsOjpmcmFtZVNpemVV
cGRhdGVzRGlzYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBbbV9sYXlvdXRTdHJhdGVneSBm
cmFtZVNpemVVcGRhdGVzRGlzYWJsZWRdOwotfQotCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRGcmFt
ZUFuZFNjcm9sbEJ5KENHUmVjdCBmcmFtZSwgQ0dTaXplIG9mZnNldCkKLXsKLSAgICBBU1NFUlQo
Q0dTaXplRXF1YWxUb1NpemUobV9yZXNpemVTY3JvbGxPZmZzZXQsIENHU2l6ZVplcm8pKTsKLQot
ICAgIG1fcmVzaXplU2Nyb2xsT2Zmc2V0ID0gb2Zmc2V0OwotICAgIG1fdmlldy5mcmFtZSA9IE5T
UmVjdEZyb21DR1JlY3QoZnJhbWUpOwotfQotCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRGaXhlZExh
eW91dFNpemUoQ0dTaXplIGZpeGVkTGF5b3V0U2l6ZSkKLXsKLSAgICBtX3BhZ2Uuc2V0Rml4ZWRM
YXlvdXRTaXplKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoZml4
ZWRMYXlvdXRTaXplKSkpOwotfQotCi1DR1NpemUgV2ViVmlld0ltcGw6OmZpeGVkTGF5b3V0U2l6
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFnZS5maXhlZExheW91dFNpemUoKTsKLX0KLQot
dm9pZCBXZWJWaWV3SW1wbDo6c2V0RHJhd2luZ0FyZWFTaXplKENHU2l6ZSBzaXplKQotewotICAg
IGlmICghbV9wYWdlLmRyYXdpbmdBcmVhKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcGFn
ZS5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKFdlYkNvcmU6OkludFNpemUoc2l6ZSksIFdlYkNvcmU6
OkludFNpemUoKSwgV2ViQ29yZTo6SW50U2l6ZShtX3Jlc2l6ZVNjcm9sbE9mZnNldCkpOwotICAg
IG1fcmVzaXplU2Nyb2xsT2Zmc2V0ID0gQ0dTaXplWmVybzsKLX0KLQotdm9pZCBXZWJWaWV3SW1w
bDo6c2V0Q29udGVudFByZXBhcmF0aW9uUmVjdChDR1JlY3QgcmVjdCkKLXsKLSAgICBtX2NvbnRl
bnRQcmVwYXJhdGlvblJlY3QgPSByZWN0OwotICAgIG1fdXNlQ29udGVudFByZXBhcmF0aW9uUmVj
dEZvclZpc2libGVSZWN0ID0gdHJ1ZTsKLX0KLQotdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlVmll
d0V4cG9zZWRSZWN0KCkKLXsKLSAgICBDR1JlY3QgZXhwb3NlZFJlY3QgPSBOU1JlY3RUb0NHUmVj
dChbbV92aWV3IHZpc2libGVSZWN0XSk7Ci0KLSAgICBpZiAobV91c2VDb250ZW50UHJlcGFyYXRp
b25SZWN0Rm9yVmlzaWJsZVJlY3QpCi0gICAgICAgIGV4cG9zZWRSZWN0ID0gQ0dSZWN0VW5pb24o
bV9jb250ZW50UHJlcGFyYXRpb25SZWN0LCBleHBvc2VkUmVjdCk7Ci0KLSAgICBpZiAoYXV0byBk
cmF3aW5nQXJlYSA9IG1fcGFnZS5kcmF3aW5nQXJlYSgpKQotICAgICAgICBkcmF3aW5nQXJlYS0+
c2V0RXhwb3NlZFJlY3QobV9jbGlwc1RvVmlzaWJsZVJlY3QgPyBXZWJDb3JlOjpGbG9hdFJlY3Qo
ZXhwb3NlZFJlY3QpIDogV2ViQ29yZTo6RmxvYXRSZWN0OjppbmZpbml0ZVJlY3QoKSk7Ci19Ci0K
LXZvaWQgV2ViVmlld0ltcGw6OnNldENsaXBzVG9WaXNpYmxlUmVjdChib29sIGNsaXBzVG9WaXNp
YmxlUmVjdCkKLXsKLSAgICBtX2NsaXBzVG9WaXNpYmxlUmVjdCA9IGNsaXBzVG9WaXNpYmxlUmVj
dDsKLSAgICB1cGRhdGVWaWV3RXhwb3NlZFJlY3QoKTsKLX0KLQotdm9pZCBXZWJWaWV3SW1wbDo6
c2V0SW50cmluc2ljQ29udGVudFNpemUoQ0dTaXplIGludHJpbnNpY0NvbnRlbnRTaXplKQotewot
ICAgIC8vIElmIHRoZSBpbnRyaW5zaWMgY29udGVudCBzaXplIGlzIGxlc3MgdGhhbiB0aGUgbWlu
aW11bSBsYXlvdXQgd2lkdGgsIHRoZSBjb250ZW50IGZsb3dlZCB0byBmaXQsCi0gICAgLy8gc28g
d2UgY2FuIHJlcG9ydCB0aGF0IHRoYXQgZGltZW5zaW9uIGlzIGZsZXhpYmxlLiBJZiBub3QsIHdl
IG5lZWQgdG8gcmVwb3J0IG91ciBpbnRyaW5zaWMgd2lkdGgKLSAgICAvLyBzbyB0aGF0IGF1dG9s
YXlvdXQgd2lsbCBrbm93IHRvIHByb3ZpZGUgc3BhY2UgZm9yIHVzLgotCi0gICAgQ0dTaXplIGlu
dHJpbnNpY0NvbnRlbnRTaXplQWNrbm93bGVkZ2luZ0ZsZXhpYmxlV2lkdGggPSBpbnRyaW5zaWND
b250ZW50U2l6ZTsKLSAgICBpZiAoaW50cmluc2ljQ29udGVudFNpemUud2lkdGggPCBtX3BhZ2Uu
bWluaW11bUxheW91dFNpemUoKS53aWR0aCgpKQotICAgICAgICBpbnRyaW5zaWNDb250ZW50U2l6
ZUFja25vd2xlZGdpbmdGbGV4aWJsZVdpZHRoLndpZHRoID0gTlNWaWV3Tm9JbnN0cmluc2ljTWV0
cmljOwotCi0gICAgbV9pbnRyaW5zaWNDb250ZW50U2l6ZSA9IGludHJpbnNpY0NvbnRlbnRTaXpl
QWNrbm93bGVkZ2luZ0ZsZXhpYmxlV2lkdGg7Ci0gICAgW21fdmlldyBpbnZhbGlkYXRlSW50cmlu
c2ljQ29udGVudFNpemVdOwotfQotCi1DR1NpemUgV2ViVmlld0ltcGw6OmludHJpbnNpY0NvbnRl
bnRTaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnRyaW5zaWNDb250ZW50U2l6ZTsKLX0K
LQotdm9pZCBXZWJWaWV3SW1wbDo6c2V0Vmlld1NjYWxlKENHRmxvYXQgdmlld1NjYWxlKQotewot
ICAgIG1fbGFzdFJlcXVlc3RlZFZpZXdTY2FsZSA9IHZpZXdTY2FsZTsKLQotICAgIGlmICghc3Vw
cG9ydHNBcmJpdHJhcnlMYXlvdXRNb2RlcygpICYmIHZpZXdTY2FsZSAhPSAxKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAodmlld1NjYWxlIDw9IDAgfHwgaXNuYW4odmlld1NjYWxlKSB8fCBp
c2luZih2aWV3U2NhbGUpKQotICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJn
dW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiVmlldyBzY2FsZSBzaG91bGQgYmUgYSBwb3NpdGl2ZSBu
dW1iZXIiXTsKLQotICAgIG1fcGFnZS5zY2FsZVZpZXcodmlld1NjYWxlKTsKLSAgICBbbV9sYXlv
dXRTdHJhdGVneSBkaWRDaGFuZ2VWaWV3U2NhbGVdOwotfQotCi1DR0Zsb2F0IFdlYlZpZXdJbXBs
Ojp2aWV3U2NhbGUoKSBjb25zdAotewotICAgIHJldHVybiBtX3BhZ2Uudmlld1NjYWxlRmFjdG9y
KCk7Ci19Ci0KLVdLTGF5b3V0TW9kZSBXZWJWaWV3SW1wbDo6bGF5b3V0TW9kZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIFttX2xheW91dFN0cmF0ZWd5IGxheW91dE1vZGVdOwotfQotCi12b2lkIFdl
YlZpZXdJbXBsOjpzZXRMYXlvdXRNb2RlKFdLTGF5b3V0TW9kZSBsYXlvdXRNb2RlKQotewotICAg
IG1fbGFzdFJlcXVlc3RlZExheW91dE1vZGUgPSBsYXlvdXRNb2RlOwotCi0gICAgaWYgKCFzdXBw
b3J0c0FyYml0cmFyeUxheW91dE1vZGVzKCkgJiYgbGF5b3V0TW9kZSAhPSBrV0tMYXlvdXRNb2Rl
Vmlld1NpemUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChsYXlvdXRNb2RlID09IFttX2xh
eW91dFN0cmF0ZWd5IGxheW91dE1vZGVdKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbbV9sYXlv
dXRTdHJhdGVneSB3aWxsQ2hhbmdlTGF5b3V0U3RyYXRlZ3ldOwotICAgIG1fbGF5b3V0U3RyYXRl
Z3kgPSBbV0tWaWV3TGF5b3V0U3RyYXRlZ3kgbGF5b3V0U3RyYXRlZ3lXaXRoUGFnZTptX3BhZ2Ug
dmlldzptX3ZpZXcgdmlld0ltcGw6KnRoaXMgbW9kZTpsYXlvdXRNb2RlXTsKLX0KLQotYm9vbCBX
ZWJWaWV3SW1wbDo6c3VwcG9ydHNBcmJpdHJhcnlMYXlvdXRNb2RlcygpIGNvbnN0Ci17Ci0gICAg
aWYgKFttX2Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGlzRnVsbFNjcmVlbl0pCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wYWdlLm1haW5G
cmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8g
SWYgd2UgaGF2ZSBhIHBsdWdpbiBkb2N1bWVudCBpbiB0aGUgbWFpbiBmcmFtZSwgYXZvaWQgdXNp
bmcgY3VzdG9tIFdLTGF5b3V0TW9kZXMKLSAgICAvLyBhbmQgZmFsbCBiYWNrIHRvIHRoZSBkZWZh
dWx0cywgYmVjYXVzZSB0aGVyZSdzIGEgZ29vZCBjaGFuY2UgdGhhdCBpdCB3b24ndCB3b3JrIChl
LmcuIHdpdGggUERGUGx1Z2luKS4KLSAgICBpZiAoZnJhbWUtPmNvbnRhaW5zUGx1Z2luRG9jdW1l
bnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZv
aWQgV2ViVmlld0ltcGw6OnVwZGF0ZVN1cHBvcnRzQXJiaXRyYXJ5TGF5b3V0TW9kZXMoKQotewot
ICAgIGlmICghc3VwcG9ydHNBcmJpdHJhcnlMYXlvdXRNb2RlcygpKSB7Ci0gICAgICAgIFdLTGF5
b3V0TW9kZSBvbGRSZXF1ZXN0ZWRMYXlvdXRNb2RlID0gbV9sYXN0UmVxdWVzdGVkTGF5b3V0TW9k
ZTsKLSAgICAgICAgQ0dGbG9hdCBvbGRSZXF1ZXN0ZWRWaWV3U2NhbGUgPSBtX2xhc3RSZXF1ZXN0
ZWRWaWV3U2NhbGU7Ci0gICAgICAgIHNldFZpZXdTY2FsZSgxKTsKLSAgICAgICAgc2V0TGF5b3V0
TW9kZShrV0tMYXlvdXRNb2RlVmlld1NpemUpOwotCi0gICAgICAgIC8vIFRoZSAnbGFzdCByZXF1
ZXN0ZWQnIHBhcmFtZXRlcnMgd2lsbCBoYXZlIGJlZW4gb3ZlcndyaXR0ZW4gYnkgc2V0dGluZyB0
aGVtIGFib3ZlLCBidXQgd2UgZG9uJ3QKLSAgICAgICAgLy8gd2FudCB0aGlzIHRvIGNvdW50IGFz
IGEgcmVxdWVzdCAob25seSBjaGFuZ2VzIGZyb20gdGhlIGNsaWVudCBjb3VudCksIHNvIHJlc2V0
IHRoZW0uCi0gICAgICAgIG1fbGFzdFJlcXVlc3RlZExheW91dE1vZGUgPSBvbGRSZXF1ZXN0ZWRM
YXlvdXRNb2RlOwotICAgICAgICBtX2xhc3RSZXF1ZXN0ZWRWaWV3U2NhbGUgPSBvbGRSZXF1ZXN0
ZWRWaWV3U2NhbGU7Ci0gICAgfSBlbHNlIGlmIChtX2xhc3RSZXF1ZXN0ZWRMYXlvdXRNb2RlICE9
IFttX2xheW91dFN0cmF0ZWd5IGxheW91dE1vZGVdKSB7Ci0gICAgICAgIHNldFZpZXdTY2FsZSht
X2xhc3RSZXF1ZXN0ZWRWaWV3U2NhbGUpOwotICAgICAgICBzZXRMYXlvdXRNb2RlKG1fbGFzdFJl
cXVlc3RlZExheW91dE1vZGUpOwotICAgIH0KLX0KLQotdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRl
U2VjdXJlSW5wdXRTdGF0ZSgpCi17Ci0gICAgaWYgKCFbW21fdmlldyB3aW5kb3ddIGlzS2V5V2lu
ZG93XSB8fCAhaXNGb2N1c2VkKCkpIHsKLSAgICAgICAgaWYgKG1faW5TZWN1cmVJbnB1dFN0YXRl
KSB7Ci0gICAgICAgICAgICBEaXNhYmxlU2VjdXJlRXZlbnRJbnB1dCgpOwotICAgICAgICAgICAg
bV9pblNlY3VyZUlucHV0U3RhdGUgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIC8vIFdLVmlldyBoYXMgYSBzaW5nbGUgaW5wdXQgY29udGV4dCBmb3IgYWxs
IGVkaXRhYmxlIGFyZWFzIChleGNlcHQgZm9yIHBsdWctaW5zKS4KLSAgICBOU1RleHRJbnB1dENv
bnRleHQgKmNvbnRleHQgPSBbbV92aWV3IF9zdXBlcklucHV0Q29udGV4dF07Ci0gICAgYm9vbCBp
c0luUGFzc3dvcmRGaWVsZCA9IG1fcGFnZS5lZGl0b3JTdGF0ZSgpLmlzSW5QYXNzd29yZEZpZWxk
OwotCi0gICAgaWYgKGlzSW5QYXNzd29yZEZpZWxkKSB7Ci0gICAgICAgIGlmICghbV9pblNlY3Vy
ZUlucHV0U3RhdGUpCi0gICAgICAgICAgICBFbmFibGVTZWN1cmVFdmVudElucHV0KCk7Ci0gICAg
ICAgIHN0YXRpYyBOU0FycmF5ICpyb21hbklucHV0U291cmNlcyA9IFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhPYmplY3RzOiZOU0FsbFJvbWFuSW5wdXRTb3VyY2VzTG9jYWxlSWRlbnRpZmllciBj
b3VudDoxXTsKLSAgICAgICAgTE9HKFRleHRJbnB1dCwgIi0+IHNldEFsbG93ZWRJbnB1dFNvdXJj
ZUxvY2FsZXM6cm9tYW5JbnB1dFNvdXJjZXMiKTsKLSAgICAgICAgW2NvbnRleHQgc2V0QWxsb3dl
ZElucHV0U291cmNlTG9jYWxlczpyb21hbklucHV0U291cmNlc107Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgaWYgKG1faW5TZWN1cmVJbnB1dFN0YXRlKQotICAgICAgICAgICAgRGlzYWJsZVNlY3Vy
ZUV2ZW50SW5wdXQoKTsKLSAgICAgICAgTE9HKFRleHRJbnB1dCwgIi0+IHNldEFsbG93ZWRJbnB1
dFNvdXJjZUxvY2FsZXM6bmlsIik7Ci0gICAgICAgIFtjb250ZXh0IHNldEFsbG93ZWRJbnB1dFNv
dXJjZUxvY2FsZXM6bmlsXTsKLSAgICB9Ci0gICAgbV9pblNlY3VyZUlucHV0U3RhdGUgPSBpc0lu
UGFzc3dvcmRGaWVsZDsKLX0KLQotdm9pZCBXZWJWaWV3SW1wbDo6cmVzZXRTZWN1cmVJbnB1dFN0
YXRlKCkKLXsKLSAgICBpZiAobV9pblNlY3VyZUlucHV0U3RhdGUpIHsKLSAgICAgICAgRGlzYWJs
ZVNlY3VyZUV2ZW50SW5wdXQoKTsKLSAgICAgICAgbV9pblNlY3VyZUlucHV0U3RhdGUgPSBmYWxz
ZTsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViVmlld0ltcGw6Om5vdGlmeUlucHV0Q29udGV4dEFib3V0
RGlzY2FyZGVkQ29tcG9zaXRpb24oKQotewotICAgIC8vIDxyZGFyOi8vcHJvYmxlbS85MzU5MDU1
PjogLWRpc2NhcmRNYXJrZWRUZXh0IGNhbiBvbmx5IGJlIGNhbGxlZCBmb3IgYWN0aXZlIGNvbnRl
eHRzLgotICAgIC8vIEZJWE1FOiBXZSBmYWlsIHRvIGV2ZXIgbm90aWZ5IHRoZSBpbnB1dCBjb250
ZXh0IGlmIHNvbWV0aGluZyAoZS5nLiBhIG5hdmlnYXRpb24pIGhhcHBlbnMgd2hpbGUgdGhlIHdp
bmRvdyBpcyBub3Qga2V5LgotICAgIC8vIFRoaXMgaXMgbm90IGEgcHJvYmxlbSB3aGVuIHRoZSB3
aW5kb3cgaXMga2V5LCBiZWNhdXNlIHdlIGRpc2NhcmQgbWFya2VkIHRleHQgb24gcmVzaWduaW5n
IGZpcnN0IHJlc3BvbmRlci4KLSAgICBpZiAoIVtbbV92aWV3IHdpbmRvd10gaXNLZXlXaW5kb3dd
IHx8IG1fdmlldyAhPSBbW21fdmlldyB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgTE9HKFRleHRJbnB1dCwgIi0+IGRpc2NhcmRNYXJrZWRUZXh0Iik7Ci0K
LSAgICBbW21fdmlldyBfc3VwZXJJbnB1dENvbnRleHRdIGRpc2NhcmRNYXJrZWRUZXh0XTsgLy8g
SW5mb3JtIHRoZSBpbnB1dCBtZXRob2QgdGhhdCB3ZSB3b24ndCBoYXZlIGFuIGlubGluZSBpbnB1
dCBhcmVhIGRlc3BpdGUgaGF2aW5nIGJlZW4gYXNrZWQgdG8uCi19Ci0KLSNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCi1ib29sIFdlYlZpZXdJbXBsOjpoYXNGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEhbV9mdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
cjsKLX0KLQotV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciAqV2ViVmlld0ltcGw6OmZ1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVyKCkKLXsKLSAgICBpZiAoIW1fZnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIpCi0gICAgICAgIG1fZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgPSBhZG9wdE5T
KFtbV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhXaW5kb3c6Y3Jl
YXRlRnVsbFNjcmVlbldpbmRvdygpIHdlYlZpZXc6bV92aWV3IHBhZ2U6bV9wYWdlXSk7Ci0KLSAg
ICByZXR1cm4gbV9mdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5nZXQoKTsKLX0KLQotdm9pZCBX
ZWJWaWV3SW1wbDo6Y2xvc2VGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcigpCi17Ci0gICAgaWYg
KCFtX2Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBb
bV9mdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBjbG9zZV07Ci0gICAgbV9mdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlciA9IG51bGxwdHI7Ci19Ci0jZW5kaWYKLQotTlNWaWV3ICpXZWJWaWV3SW1w
bDo6ZnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldygpCi17Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQotICAgIGlmIChtX2Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyICYmIFttX2Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyIGlzRnVsbFNjcmVlbl0pCi0gICAgICAgIHJldHVybiBbbV9mdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlciB3ZWJWaWV3UGxhY2Vob2xkZXJdOwotI2VuZGlmCi0gICAg
cmV0dXJuIG5pbDsKLX0KLQotTlNXaW5kb3cgKldlYlZpZXdJbXBsOjpjcmVhdGVGdWxsU2NyZWVu
V2luZG93KCkKLXsKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgcmV0dXJuIFtbW1dl
YkNvcmVGdWxsU2NyZWVuV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OltbTlNTY3Jl
ZW4gbWFpblNjcmVlbl0gZnJhbWVdIHN0eWxlTWFzazooTlNCb3JkZXJsZXNzV2luZG93TWFzayB8
IE5TUmVzaXphYmxlV2luZG93TWFzaykgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRl
ZmVyOk5PXSBhdXRvcmVsZWFzZV07Ci0jZWxzZQotICAgIHJldHVybiBuaWw7Ci0jZW5kaWYKLX0K
LQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAppbmRleCA5NzA3
ODFiNjIzMTBlOWNkYzMyNDMxNWRjYmVhOWEwNGVlNjgwOTk3Li4yNGUxZmRmMzEyNjhiMzg4MGFh
NmUyMWJiMWE3YmY1NmY4OWEwYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbC5oCkBAIC00Myw4ICs0Myw2IEBAIGNsYXNzIEFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYlZpZXdJbXBs
OwotCiBjbGFzcyBQYWdlQ2xpZW50SW1wbCBmaW5hbCA6IHB1YmxpYyBQYWdlQ2xpZW50CiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICwgcHVibGljIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHlDbGllbnQKQEAgLTUzLDEwICs1MSw3IEBAIGNsYXNzIFBhZ2VDbGllbnRJbXBsIGZpbmFs
IDogcHVibGljIFBhZ2VDbGllbnQKIHB1YmxpYzoKICAgICBQYWdlQ2xpZW50SW1wbChXS1ZpZXcg
KiwgV0tXZWJWaWV3ICopOwogICAgIHZpcnR1YWwgflBhZ2VDbGllbnRJbXBsKCk7Ci0KLSAgICAv
LyBGSVhNRTogRXZlbnR1YWxseSBXZWJWaWV3SW1wbCBzaG91bGQgYmVjb21lIHRoZSBQYWdlQ2xp
ZW50LgotICAgIHZvaWQgc2V0SW1wbChXZWJWaWV3SW1wbCYgaW1wbCkgeyBtX2ltcGwgPSAmaW1w
bDsgfQotCisgICAgCiAgICAgdm9pZCB2aWV3V2lsbE1vdmVUb0Fub3RoZXJXaW5kb3coKTsKIAog
cHJpdmF0ZToKQEAgLTIxOCw3ICsyMTMsNiBAQCBwcml2YXRlOgogCiAgICAgV0tWaWV3ICptX3dr
VmlldzsKICAgICBXS1dlYlZpZXcgKm1fd2ViVmlldzsKLSAgICBXZWJWaWV3SW1wbCogbV9pbXBs
IHsgbnVsbHB0ciB9OwogICAgIFJldGFpblB0cjxXS0VkaXRvclVuZG9UYXJnZXRPYmpDPiBtX3Vu
ZG9UYXJnZXQ7CiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIENvcnJlY3Rpb25Q
YW5lbCBtX2NvcnJlY3Rpb25QYW5lbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDQxMmRjYmViZmM5ZWFhYjFmMmMwZGE5MDcyOTkyOTJi
NjJkZTRhMjUuLjc2YzA1MDNhMThhZDBjOTAxOTlmZDdlOGE1OWIxY2FhZTM1Njc2YjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAtNDcs
NyArNDcsNiBAQAogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oIgogI2ltcG9ydCAi
V2ViRWRpdENvbW1hbmRQcm94eS5oIgogI2ltcG9ydCAiV2ViUG9wdXBNZW51UHJveHlNYWMuaCIK
LSNpbXBvcnQgIldlYlZpZXdJbXBsLmgiCiAjaW1wb3J0ICJXaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
LmgiCiAjaW1wb3J0ICJfV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tIaXRUZXN0
UmVzdWx0SW50ZXJuYWwuaCIKQEAgLTIyMCwxMiArMjE5LDcgQEAgYm9vbCBQYWdlQ2xpZW50SW1w
bDo6aXNWaWV3V2luZG93QWN0aXZlKCkKIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3Rm9j
dXNlZCgpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgY2FsbGVkIGZyb20gdGhlIFdlYlBhZ2VQ
cm94eSBjb25zdHJ1Y3RvciBiZWZvcmUgd2UgaGF2ZSBhIFdlYlZpZXdJbXBsLgotICAgIC8vIE9u
Y2UgV2ViVmlld0ltcGwgYW5kIFBhZ2VDbGllbnQgbWVyZ2UsIHRoaXMgd29uJ3QgYmUgYSBwcm9i
bGVtLgotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICByZXR1cm4g
bV9pbXBsLT5pc0ZvY3VzZWQoKTsKKyAgICByZXR1cm4gW21fd2tWaWV3IF9pc0ZvY3VzZWRdOwog
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjptYWtlRmlyc3RSZXNwb25kZXIoKQpAQCAtMzE3LDcg
KzMxMSw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmlu
ZyYgb2xkVG9vbFRpcCwgY29uc3QgU3RyaW5nJiBuZXdUCiAKIHZvaWQgUGFnZUNsaWVudEltcGw6
OmRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCB1
c2VDdXN0b21Db250ZW50UHJvdmlkZXIpCiB7Ci0gICAgbV9pbXBsLT51cGRhdGVTdXBwb3J0c0Fy
Yml0cmFyeUxheW91dE1vZGVzKCk7CisgICAgW21fd2tWaWV3IF9kaWRDb21taXRMb2FkRm9yTWFp
bkZyYW1lXTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoTG9hZGluZ0RhdGFG
b3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQpAQCAtNDM5LDE3ICs0MzMs
MTcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9yQXR0YWNobWVudChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjp1cGRh
dGVTZWN1cmVJbnB1dFN0YXRlKCkKIHsKLSAgICBtX2ltcGwtPnVwZGF0ZVNlY3VyZUlucHV0U3Rh
dGUoKTsKKyAgICBbbV93a1ZpZXcgX3VwZGF0ZVNlY3VyZUlucHV0U3RhdGVdOwogfQogCiB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpyZXNldFNlY3VyZUlucHV0U3RhdGUoKQogewotICAgIG1faW1wbC0+
cmVzZXRTZWN1cmVJbnB1dFN0YXRlKCk7CisgICAgW21fd2tWaWV3IF9yZXNldFNlY3VyZUlucHV0
U3RhdGVdOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpub3RpZnlJbnB1dENvbnRleHRBYm91
dERpc2NhcmRlZENvbXBvc2l0aW9uKCkKIHsKLSAgICBtX2ltcGwtPm5vdGlmeUlucHV0Q29udGV4
dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb24oKTsKKyAgICBbbV93a1ZpZXcgX25vdGlmeUlucHV0
Q29udGV4dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb25dOwogfQogCiAjaWYgUExBVEZPUk0oTUFD
KSAmJiAhVVNFKEFTWU5DX05TVEVYVElOUFVUQ0xJRU5UKQpAQCAtNzI5LDEzICs3MjMsMTMgQEAg
dm9pZCBQYWdlQ2xpZW50SW1wbDo6ZXhpdEZ1bGxTY3JlZW4oKQogdm9pZCBQYWdlQ2xpZW50SW1w
bDo6YmVnYW5FbnRlckZ1bGxTY3JlZW4oY29uc3QgSW50UmVjdCYgaW5pdGlhbEZyYW1lLCBjb25z
dCBJbnRSZWN0JiBmaW5hbEZyYW1lKQogewogICAgIFttX3drVmlldy5fZnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIgYmVnYW5FbnRlckZ1bGxTY3JlZW5XaXRoSW5pdGlhbEZyYW1lOmluaXRpYWxG
cmFtZSBmaW5hbEZyYW1lOmZpbmFsRnJhbWVdOwotICAgIG1faW1wbC0+dXBkYXRlU3VwcG9ydHNB
cmJpdHJhcnlMYXlvdXRNb2RlcygpOworICAgIFttX3drVmlldyBfdXBkYXRlU3VwcG9ydHNBcmJp
dHJhcnlMYXlvdXRNb2Rlc107CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmJlZ2FuRXhpdEZ1
bGxTY3JlZW4oY29uc3QgSW50UmVjdCYgaW5pdGlhbEZyYW1lLCBjb25zdCBJbnRSZWN0JiBmaW5h
bEZyYW1lKQogewogICAgIFttX3drVmlldy5fZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgYmVn
YW5FeGl0RnVsbFNjcmVlbldpdGhJbml0aWFsRnJhbWU6aW5pdGlhbEZyYW1lIGZpbmFsRnJhbWU6
ZmluYWxGcmFtZV07Ci0gICAgbV9pbXBsLT51cGRhdGVTdXBwb3J0c0FyYml0cmFyeUxheW91dE1v
ZGVzKCk7CisgICAgW21fd2tWaWV3IF91cGRhdGVTdXBwb3J0c0FyYml0cmFyeUxheW91dE1vZGVz
XTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLmgKaW5kZXggNTk2M2QzZjNkNmMxNzg0ZTA1NDViNzZjNTY3YWE2MDJlYzI3NTg1ZS4uYzY2
MzAwMjdlYmQ0Y2IzYjdkZDM0NGRiNzlmYmZlMDBiMmE2NGMyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLmgKQEAgLTMwLDcgKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7IAogY2xhc3MgTGF5
ZXJUcmVlQ29udGV4dDsKLWNsYXNzIFdlYlBhZ2VQcm94eTsKIH0KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDUsOCArNDQsNyBAQCB0eXBlZGVmIGVudW0gRnVsbFNjcmVlblN0YXRlIDogTlNJ
bnRlZ2VyIEZ1bGxTY3JlZW5TdGF0ZTsKIAogQGludGVyZmFjZSBXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyIDogTlNXaW5kb3dDb250cm9sbGVyPE5TV2luZG93RGVsZWdhdGU+IHsKIEBwcml2
YXRlCi0gICAgTlNWaWV3ICpfd2ViVmlldzsgLy8gQ2Fubm90IGJlIHJldGFpbmVkLCBzZWUgPHJk
YXI6Ly9wcm9ibGVtLzE0ODg0NjY2Pi4KLSAgICBXZWJLaXQ6OldlYlBhZ2VQcm94eSogX3BhZ2U7
CisgICAgV0tWaWV3ICpfd2ViVmlldzsgLy8gQ2Fubm90IGJlIHJldGFpbmVkLCBzZWUgPHJkYXI6
Ly9wcm9ibGVtLzE0ODg0NjY2Pi4KICAgICBSZXRhaW5QdHI8V2ViQ29yZUZ1bGxTY3JlZW5QbGFj
ZWhvbGRlclZpZXc+IF93ZWJWaWV3UGxhY2Vob2xkZXI7CiAgICAgUmV0YWluUHRyPE5TVmlldz4g
X2NsaXBWaWV3OwogICAgIE5TUmVjdCBfaW5pdGlhbEZyYW1lOwpAQCAtNjIsNyArNjAsNyBAQCB0
eXBlZGVmIGVudW0gRnVsbFNjcmVlblN0YXRlIDogTlNJbnRlZ2VyIEZ1bGxTY3JlZW5TdGF0ZTsK
IEBwcm9wZXJ0eSAocmVhZG9ubHkpIE5TUmVjdCBpbml0aWFsRnJhbWU7CiBAcHJvcGVydHkgKHJl
YWRvbmx5KSBOU1JlY3QgZmluYWxGcmFtZTsKIAotLSAoaWQpaW5pdFdpdGhXaW5kb3c6KE5TV2lu
ZG93ICopd2luZG93IHdlYlZpZXc6KE5TVmlldyAqKXdlYlZpZXcgcGFnZTooV2ViS2l0OjpXZWJQ
YWdlUHJveHkmKXBhZ2U7CistIChpZClpbml0V2l0aFdpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cg
d2ViVmlldzooV0tWaWV3ICopd2ViVmlldzsKIAogLSAoV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhv
bGRlclZpZXcqKXdlYlZpZXdQbGFjZWhvbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCmlu
ZGV4IDI0MGQ2MTBmMjQxZWY5NzdjYzI0MjRmYTk4NjJkN2FmMmQzYmIwZTEuLjg2MjhhOWQ0ZTVi
OThkOTc0NGU1NmU2MmYzZDM0N2ZiYmMwMjMwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0K
QEAgLTYzLDggKzYzLDkgQEAgZW51bSBGdWxsU2NyZWVuU3RhdGUgOiBOU0ludGVnZXIgewogLSAo
dm9pZCllbnRlckZ1bGxTY3JlZW5Nb2RlOihpZClzZW5kZXI7CiBAZW5kCiAKLUBpbnRlcmZhY2Ug
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciAoUHJpdmF0ZSkgPE5TQW5pbWF0aW9uRGVsZWdh
dGU+CitAaW50ZXJmYWNlIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIoUHJpdmF0ZSk8TlNB
bmltYXRpb25EZWxlZ2F0ZT4KIC0gKHZvaWQpX3JlcGxhY2VWaWV3OihOU1ZpZXcqKXZpZXcgd2l0
aDooTlNWaWV3KilvdGhlclZpZXc7CistIChXZWJQYWdlUHJveHkqKV9wYWdlOwogLSAoV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eSopX21hbmFnZXI7CiAtICh2b2lkKV9zdGFydEVudGVyRnVsbFNj
cmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb247CiAtICh2
b2lkKV9zdGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOihOU1RpbWVJbnRl
cnZhbClkdXJhdGlvbjsKQEAgLTg1LDcgKzg2LDcgQEAgc3RhdGljIHZvaWQgbWFrZVJlc3BvbmRl
ckZpcnN0UmVzcG9uZGVySWZEZXNjZW5kYW50T2ZWaWV3KE5TV2luZG93ICp3aW5kb3csIE5TUmUK
IAogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBJbml0aWFsaXphdGlvbgotLSAoaWQpaW5p
dFdpdGhXaW5kb3c6KE5TV2luZG93ICopd2luZG93IHdlYlZpZXc6KE5TVmlldyAqKXdlYlZpZXcg
cGFnZTooV2ViUGFnZVByb3h5JilwYWdlCistIChpZClpbml0V2l0aFdpbmRvdzooTlNXaW5kb3cg
Kil3aW5kb3cgd2ViVmlldzooV0tWaWV3ICopd2ViVmlldwogewogICAgIHNlbGYgPSBbc3VwZXIg
aW5pdFdpdGhXaW5kb3c6d2luZG93XTsKICAgICBpZiAoIXNlbGYpCkBAIC0xMDUsNyArMTA2LDYg
QEAgc3RhdGljIHZvaWQgbWFrZVJlc3BvbmRlckZpcnN0UmVzcG9uZGVySWZEZXNjZW5kYW50T2ZW
aWV3KE5TV2luZG93ICp3aW5kb3csIE5TUmUKIAogICAgIFtzZWxmIHdpbmRvd0RpZExvYWRdOwog
ICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKLSAgICBfcGFnZSA9ICZwYWdlOwogICAgIAogICAgIHJl
dHVybiBzZWxmOwogfQpAQCAtMjQxLDcgKzI0MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQog
ICAgIC8vIHVubmVjZXNzYXJ5IGluIHRoZSBmdWxsLXNjcmVlbiBhbmltYXRpb24gY2FzZSwgYW5k
IGNhbiBjYXVzZSBidWdzOyBzZWUKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODg5NDAgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04ODM3NAogICAgIC8vIFdlIHdpbGwgcmVzdW1lIHRoZSBub3JtYWwgYmVoYXZpb3IgaW4g
X3N0YXJ0RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOgotICAgIF9wYWdlLT5z
ZXRTdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzKHRydWUpOworICAgIFtfd2ViVmlldyBfc2V0U3Vw
cHJlc3NWaXNpYmlsaXR5VXBkYXRlczpZRVNdOwogCiAgICAgLy8gU3dhcCB0aGUgd2ViVmlldyBw
bGFjZWhvbGRlciBpbnRvIHBsYWNlLgogICAgIGlmICghX3dlYlZpZXdQbGFjZWhvbGRlcikgewpA
QCAtMjUzLDE0ICsyNTMsMTQgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJ
bWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2UpCiAgICAgW3NlbGYgX3Jl
cGxhY2VWaWV3Ol93ZWJWaWV3IHdpdGg6X3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKV07CiAgICAg
CiAgICAgLy8gVGhlbiBpbnNlcnQgdGhlIFdlYlZpZXcgaW50byB0aGUgZnVsbCBzY3JlZW4gd2lu
ZG93Ci0gICAgTlNWaWV3ICpjb250ZW50VmlldyA9IFtbc2VsZiB3aW5kb3ddIGNvbnRlbnRWaWV3
XTsKKyAgICBOU1ZpZXcqIGNvbnRlbnRWaWV3ID0gW1tzZWxmIHdpbmRvd10gY29udGVudFZpZXdd
OwogICAgIFtfY2xpcFZpZXcgYWRkU3Vidmlldzpfd2ViVmlldyBwb3NpdGlvbmVkOk5TV2luZG93
QmVsb3cgcmVsYXRpdmVUbzpuaWxdOwogICAgIFtfd2ViVmlldyBzZXRGcmFtZTpbY29udGVudFZp
ZXcgYm91bmRzXV07CiAKICAgICBtYWtlUmVzcG9uZGVyRmlyc3RSZXNwb25kZXJJZkRlc2NlbmRh
bnRPZlZpZXcoc2VsZi53aW5kb3csIHdlYldpbmRvd0ZpcnN0UmVzcG9uZGVyLCBfd2ViVmlldyk7
CiAKLSAgICBfc2F2ZWRTY2FsZSA9IF9wYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKLSAgICBfcGFn
ZS0+c2NhbGVQYWdlKDEsIEludFBvaW50KCkpOworICAgIF9zYXZlZFNjYWxlID0gW3NlbGYgX3Bh
Z2VdLT5wYWdlU2NhbGVGYWN0b3IoKTsKKyAgICBbc2VsZiBfcGFnZV0tPnNjYWxlUGFnZSgxLCBJ
bnRQb2ludCgpKTsKICAgICBbc2VsZiBfbWFuYWdlcl0tPnNldEFuaW1hdGluZ0Z1bGxTY3JlZW4o
dHJ1ZSk7CiAgICAgW3NlbGYgX21hbmFnZXJdLT53aWxsRW50ZXJGdWxsU2NyZWVuKCk7CiB9CkBA
IC0zMDksMTQgKzMwOSwxNCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgbWluVmlkZW9XaWR0aCA9IDQ4
MCArIDIwICsgMjA7IC8vIE5vdGU6IEtlZXAgaW4gc3luYyB3aXRoIG1lZAogICAgICAgICBfZnVs
bFNjcmVlblN0YXRlID0gTm90SW5GdWxsU2NyZWVuOwogCiAgICAgICAgIFtbc2VsZiB3aW5kb3dd
IHNldEF1dG9kaXNwbGF5OllFU107Ci0gICAgICAgIF9wYWdlLT5zZXRTdXBwcmVzc1Zpc2liaWxp
dHlVcGRhdGVzKGZhbHNlKTsKKyAgICAgICAgW193ZWJWaWV3IF9zZXRTdXBwcmVzc1Zpc2liaWxp
dHlVcGRhdGVzOk5PXTsKIAogICAgICAgICBOU1Jlc3BvbmRlciAqZmlyc3RSZXNwb25kZXIgPSBb
W3NlbGYgd2luZG93XSBmaXJzdFJlc3BvbmRlcl07CiAgICAgICAgIFtzZWxmIF9yZXBsYWNlVmll
dzpfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHdpdGg6X3dlYlZpZXddOwogICAgICAgICBtYWtl
UmVzcG9uZGVyRmlyc3RSZXNwb25kZXJJZkRlc2NlbmRhbnRPZlZpZXcoX3dlYlZpZXcud2luZG93
LCBmaXJzdFJlc3BvbmRlciwgX3dlYlZpZXcpOwogICAgICAgICBbW193ZWJWaWV3IHdpbmRvd10g
bWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07CiAKLSAgICAgICAgX3BhZ2UtPnNjYWxlUGFnZShf
c2F2ZWRTY2FsZSwgSW50UG9pbnQoKSk7CisgICAgICAgIFtzZWxmIF9wYWdlXS0+c2NhbGVQYWdl
KF9zYXZlZFNjYWxlLCBJbnRQb2ludCgpKTsKICAgICAgICAgW3NlbGYgX21hbmFnZXJdLT5yZXN0
b3JlU2Nyb2xsUG9zaXRpb24oKTsKICAgICAgICAgW3NlbGYgX21hbmFnZXJdLT5kaWRFeGl0RnVs
bFNjcmVlbigpOwogICAgICAgICBbc2VsZiBfbWFuYWdlcl0tPnNldEFuaW1hdGluZ0Z1bGxTY3Jl
ZW4oZmFsc2UpOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5WaWRl
b1dpZHRoID0gNDgwICsgMjAgKyAyMDsgLy8gTm90ZTogS2VlcCBpbiBzeW5jIHdpdGggbWVkCiAK
ICAgICAvLyBTZWUgdGhlIHJlbGF0ZWQgY29tbWVudCBpbiBlbnRlckZ1bGxTY3JlZW46CiAgICAg
Ly8gV2Ugd2lsbCByZXN1bWUgdGhlIG5vcm1hbCBiZWhhdmlvciBpbiBfc3RhcnRFeGl0RnVsbFNj
cmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjoKLSAgICBfcGFnZS0+c2V0U3VwcHJlc3NWaXNpYmls
aXR5VXBkYXRlcyh0cnVlKTsKKyAgICBbX3dlYlZpZXcgX3NldFN1cHByZXNzVmlzaWJpbGl0eVVw
ZGF0ZXM6WUVTXTsKICAgICBbX3dlYlZpZXdQbGFjZWhvbGRlciBzZXRUYXJnZXQ6bmlsXTsKIAog
ICAgIFtzZWxmIF9tYW5hZ2VyXS0+c2V0QW5pbWF0aW5nRnVsbFNjcmVlbih0cnVlKTsKQEAgLTM3
OSw3ICszNzksNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgbWluVmlkZW9XaWR0aCA9IDQ4MCArIDIw
ICsgMjA7IC8vIE5vdGU6IEtlZXAgaW4gc3luYyB3aXRoIG1lZAogCiAgICAgLy8gU2NyZWVuIHVw
ZGF0ZXMgdG8gYmUgcmUtZW5hYmxlZCBpbiBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5p
bWF0aW9uQWZ0ZXJSZXBhaW50LgogICAgIE5TRGlzYWJsZVNjcmVlblVwZGF0ZXMoKTsKLSAgICBf
cGFnZS0+c2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyh0cnVlKTsKKyAgICBbX3dlYlZpZXcg
X3NldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXM6WUVTXTsKICAgICBbW3NlbGYgd2luZG93XSBv
cmRlck91dDpzZWxmXTsKICAgICBOU1ZpZXcgKmNvbnRlbnRWaWV3ID0gW1tzZWxmIHdpbmRvd10g
Y29udGVudFZpZXddOwogICAgIGNvbnRlbnRWaWV3LmxheWVyLmhpZGRlbiA9IFlFUzsKQEAgLTM5
NCw3ICszOTQsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgbWluVmlkZW9XaWR0aCA9IDQ4MCArIDIw
ICsgMjA7IC8vIE5vdGU6IEtlZXAgaW4gc3luYyB3aXRoIG1lZAogICAgIC8vIFRoZXNlIG1lc3Nh
Z2VzIG11c3QgYmUgc2VudCBhZnRlciB0aGUgc3dhcCBvciBmbGFzaGluZyB3aWxsIG9jY3VyIGR1
cmluZyBmb3JjZVJlcGFpbnQ6CiAgICAgW3NlbGYgX21hbmFnZXJdLT5kaWRFeGl0RnVsbFNjcmVl
bigpOwogICAgIFtzZWxmIF9tYW5hZ2VyXS0+c2V0QW5pbWF0aW5nRnVsbFNjcmVlbihmYWxzZSk7
Ci0gICAgX3BhZ2UtPnNjYWxlUGFnZShfc2F2ZWRTY2FsZSwgSW50UG9pbnQoKSk7CisgICAgW3Nl
bGYgX3BhZ2VdLT5zY2FsZVBhZ2UoX3NhdmVkU2NhbGUsIEludFBvaW50KCkpOwogICAgIFtzZWxm
IF9tYW5hZ2VyXS0+cmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAKICAgICBpZiAoX3JlcGFpbnRD
YWxsYmFjaykgewpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5WaWRl
b1dpZHRoID0gNDgwICsgMjAgKyAyMDsgLy8gTm90ZTogS2VlcCBpbiBzeW5jIHdpdGggbWVkCiAg
ICAgX3JlcGFpbnRDYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtzZWxmXShXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgW3NlbGYgY29tcGxldGVGaW5pc2hFeGl0
RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWludF07CiAgICAgfSk7Ci0gICAgX3BhZ2UtPmZv
cmNlUmVwYWludChfcmVwYWludENhbGxiYWNrKTsKKyAgICBbc2VsZiBfcGFnZV0tPmZvcmNlUmVw
YWludChfcmVwYWludENhbGxiYWNrKTsKIH0KIAogLSAodm9pZCljb21wbGV0ZUZpbmlzaEV4aXRG
dWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50CkBAIC00MTQsNyArNDE0LDcgQEAgc3RhdGlj
IGNvbnN0IGZsb2F0IG1pblZpZGVvV2lkdGggPSA0ODAgKyAyMCArIDIwOyAvLyBOb3RlOiBLZWVw
IGluIHN5bmMgd2l0aCBtZWQKICAgICBfcmVwYWludENhbGxiYWNrID0gbnVsbHB0cjsKICAgICBb
W193ZWJWaWV3IHdpbmRvd10gc2V0QXV0b2Rpc3BsYXk6WUVTXTsKICAgICBbW193ZWJWaWV3IHdp
bmRvd10gZGlzcGxheUlmTmVlZGVkXTsKLSAgICBfcGFnZS0+c2V0U3VwcHJlc3NWaXNpYmlsaXR5
VXBkYXRlcyhmYWxzZSk7CisgICAgW193ZWJWaWV3IF9zZXRTdXBwcmVzc1Zpc2liaWxpdHlVcGRh
dGVzOk5PXTsKICAgICBOU0VuYWJsZVNjcmVlblVwZGF0ZXMoKTsKIH0KIApAQCAtNDg3LDExICs0
ODcsMTcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IG1pblZpZGVvV2lkdGggPSA0ODAgKyAyMCArIDIw
OyAvLyBOb3RlOiBLZWVwIGluIHN5bmMgd2l0aCBtZWQKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21h
IG1hcmsgSW50ZXJuYWwgSW50ZXJmYWNlCiAKKy0gKFdlYlBhZ2VQcm94eSopX3BhZ2UKK3sKKyAg
ICByZXR1cm4gdG9JbXBsKFtfd2ViVmlldyBwYWdlUmVmXSk7Cit9CisKIC0gKFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkqKV9tYW5hZ2VyCiB7Ci0gICAgaWYgKCFfcGFnZSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIF9wYWdlLT5mdWxsU2NyZWVuTWFuYWdlcigpOworICAg
IFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IFtzZWxmIF9wYWdlXTsKKyAgICBpZiAoIXdlYlBhZ2Up
CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiB3ZWJQYWdlLT5mdWxsU2NyZWVuTWFuYWdl
cigpOwogfQogCiAtICh2b2lkKV9yZXBsYWNlVmlldzooTlNWaWV3Kil2aWV3IHdpdGg6KE5TVmll
dyopb3RoZXJWaWV3CkBAIC01OTgsNyArNjA0LDcgQEAgc3RhdGljIENBQW5pbWF0aW9uICpmYWRl
QW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9uLCBBbmltYXRpb25EaXJlY3Rpb24gZGkK
ICAgICBbd2luZG93IG1ha2VLZXlBbmRPcmRlckZyb250OnNlbGZdOwogICAgIFt3aW5kb3cgc2V0
Q29sbGVjdGlvbkJlaGF2aW9yOmJlaGF2aW9yXTsKIAotICAgIF9wYWdlLT5zZXRTdXBwcmVzc1Zp
c2liaWxpdHlVcGRhdGVzKGZhbHNlKTsKKyAgICBbX3dlYlZpZXcgX3NldFN1cHByZXNzVmlzaWJp
bGl0eVVwZGF0ZXM6Tk9dOwogICAgIFtbc2VsZiB3aW5kb3ddIHNldEF1dG9kaXNwbGF5OllFU107
CiAgICAgW1tzZWxmIHdpbmRvd10gZGlzcGxheUlmTmVlZGVkXTsKICAgICBOU0VuYWJsZVNjcmVl
blVwZGF0ZXMoKTsKQEAgLTYyMSw3ICs2MjcsNyBAQCBzdGF0aWMgQ0FBbmltYXRpb24gKmZhZGVB
bmltYXRpb24oQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIEFuaW1hdGlvbkRpcmVjdGlvbiBkaQog
ICAgIGNvbnRlbnRWaWV3LmxheWVyLmhpZGRlbiA9IE5POwogICAgIFtjb250ZW50Vmlldy5sYXll
ciBhZGRBbmltYXRpb246ZmFkZUFuaW1hdGlvbihkdXJhdGlvbiwgQW5pbWF0ZU91dCkgZm9yS2V5
OkAiZnVsbHNjcmVlbiJdOwogCi0gICAgX3BhZ2UtPnNldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0
ZXMoZmFsc2UpOworICAgIFtfd2ViVmlldyBfc2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlczpO
T107CiAgICAgW1tzZWxmIHdpbmRvd10gc2V0QXV0b2Rpc3BsYXk6WUVTXTsKICAgICBbW3NlbGYg
d2luZG93XSBkaXNwbGF5SWZOZWVkZWRdOwogICAgIE5TRW5hYmxlU2NyZWVuVXBkYXRlcygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1ZpZXdMYXlvdXRTdHJh
dGVneS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1ZpZXdMYXlvdXRTdHJhdGVn
eS5oCmluZGV4IDJkZjdlMDdkYjllYmJjZjdhMTExMTJlNTYyNzBlNDA2N2M1ODg5ODcuLjdiMzJi
MjY5YThhZTdhMDIxMmM4M2U1YjFiMTAzMjI2NDBjODVjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tWaWV3TGF5b3V0U3RyYXRlZ3kuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLVmlld0xheW91dFN0cmF0ZWd5LmgKQEAgLTMyLDI0ICsz
MiwyMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKLWNsYXNz
IFdlYlZpZXdJbXBsOwogfQogCi1AY2xhc3MgTlNWaWV3OworQGNsYXNzIFdLVmlldzsKIAogQGlu
dGVyZmFjZSBXS1ZpZXdMYXlvdXRTdHJhdGVneSA6IE5TT2JqZWN0IHsKIEBwYWNrYWdlCi0gICAg
V2ViS2l0OjpXZWJQYWdlUHJveHkqIF9wYWdlOwotICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIF93
ZWJWaWV3SW1wbDsKLSAgICBOU1ZpZXcgKl92aWV3OworICAgIFdlYktpdDo6V2ViUGFnZVByb3h5
ICpfcGFnZTsKKyAgICBXS1ZpZXcgKl93a1ZpZXc7CiAKICAgICBXS0xheW91dE1vZGUgX2xheW91
dE1vZGU7CiAgICAgdW5zaWduZWQgX2ZyYW1lU2l6ZVVwZGF0ZXNEaXNhYmxlZENvdW50OwogfQog
Ci0rIChpbnN0YW5jZXR5cGUpbGF5b3V0U3RyYXRlZ3lXaXRoUGFnZTooV2ViS2l0OjpXZWJQYWdl
UHJveHkmKXBhZ2UgdmlldzooTlNWaWV3ICopdmlldyB2aWV3SW1wbDooV2ViS2l0OjpXZWJWaWV3
SW1wbCYpd2ViVmlld0ltcGwgbW9kZTooV0tMYXlvdXRNb2RlKW1vZGU7CisrIChpbnN0YW5jZXR5
cGUpbGF5b3V0U3RyYXRlZ3lXaXRoUGFnZTooV2ViS2l0OjpXZWJQYWdlUHJveHkmKXBhZ2Ugdmll
dzooV0tWaWV3ICopd2tWaWV3IG1vZGU6KFdLTGF5b3V0TW9kZSltb2RlOwogCi0tICh2b2lkKWlu
dmFsaWRhdGU7CistICh2b2lkKXdpbGxEZXN0cm95VmlldzooV0tWaWV3ICopdmlldzsKIAogLSAo
dm9pZCllbmFibGVGcmFtZVNpemVVcGRhdGVzOwogLSAodm9pZClkaXNhYmxlRnJhbWVTaXplVXBk
YXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tWaWV3TGF5
b3V0U3RyYXRlZ3kubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLVmlld0xheW91
dFN0cmF0ZWd5Lm1tCmluZGV4IDc1MzMwYjA0MjIxZjBjM2Q5NzY0ZmE5OGVmYTVhODkxODUzOWE3
ZmUuLjQ5ZWVhNmVmNTYwZWM1MmRmMmU4Y2E3YmMyOTkyNWUwOGNhOGQ1YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tWaWV3TGF5b3V0U3RyYXRlZ3kubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1ZpZXdMYXlvdXRTdHJhdGVneS5tbQpA
QCAtMjgsOCArMjgsOCBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW1wb3J0ICJXS1ZpZXdJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0ICJXZWJWaWV3SW1w
bC5oIgogI2ltcG9ydCA8V2ViQ29yZS9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1F1YXJ0ekNvcmVTUEkuaD4KIApAQCAtNTAsMjMgKzUwLDIzIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1ZpZXdMYXlvdXRTdHJhdGVneQogCi0rIChpbnN0
YW5jZXR5cGUpbGF5b3V0U3RyYXRlZ3lXaXRoUGFnZTooV2ViUGFnZVByb3h5JilwYWdlIHZpZXc6
KE5TVmlldyAqKXZpZXcgdmlld0ltcGw6KFdlYlZpZXdJbXBsJil3ZWJWaWV3SW1wbCBtb2RlOihX
S0xheW91dE1vZGUpbW9kZQorKyAoaW5zdGFuY2V0eXBlKWxheW91dFN0cmF0ZWd5V2l0aFBhZ2U6
KFdlYlBhZ2VQcm94eSYpcGFnZSB2aWV3OihXS1ZpZXcgKil3a1ZpZXcgbW9kZTooV0tMYXlvdXRN
b2RlKW1vZGUKIHsKICAgICBXS1ZpZXdMYXlvdXRTdHJhdGVneSAqc3RyYXRlZ3k7CiAKICAgICBz
d2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIGtXS0xheW91dE1vZGVGaXhlZFNpemU6Ci0gICAgICAg
IHN0cmF0ZWd5ID0gW1tXS1ZpZXdGaXhlZFNpemVMYXlvdXRTdHJhdGVneSBhbGxvY10gaW5pdFdp
dGhQYWdlOnBhZ2Ugdmlldzp2aWV3IHZpZXdJbXBsOndlYlZpZXdJbXBsIG1vZGU6bW9kZV07Cisg
ICAgICAgIHN0cmF0ZWd5ID0gW1tXS1ZpZXdGaXhlZFNpemVMYXlvdXRTdHJhdGVneSBhbGxvY10g
aW5pdFdpdGhQYWdlOnBhZ2Ugdmlldzp3a1ZpZXcgbW9kZTptb2RlXTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBrV0tMYXlvdXRNb2RlRHluYW1pY1NpemVDb21wdXRlZEZyb21WaWV3U2NhbGU6
Ci0gICAgICAgIHN0cmF0ZWd5ID0gW1tXS1ZpZXdEeW5hbWljU2l6ZUNvbXB1dGVkRnJvbVZpZXdT
Y2FsZUxheW91dFN0cmF0ZWd5IGFsbG9jXSBpbml0V2l0aFBhZ2U6cGFnZSB2aWV3OnZpZXcgdmll
d0ltcGw6d2ViVmlld0ltcGwgbW9kZTptb2RlXTsKKyAgICAgICAgc3RyYXRlZ3kgPSBbW1dLVmll
d0R5bmFtaWNTaXplQ29tcHV0ZWRGcm9tVmlld1NjYWxlTGF5b3V0U3RyYXRlZ3kgYWxsb2NdIGlu
aXRXaXRoUGFnZTpwYWdlIHZpZXc6d2tWaWV3IG1vZGU6bW9kZV07CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2Uga1dLTGF5b3V0TW9kZUR5bmFtaWNTaXplQ29tcHV0ZWRGcm9tTWluaW11bURvY3Vt
ZW50U2l6ZToKLSAgICAgICAgc3RyYXRlZ3kgPSBbW1dLVmlld0R5bmFtaWNTaXplQ29tcHV0ZWRG
cm9tTWluaW11bURvY3VtZW50U2l6ZUxheW91dFN0cmF0ZWd5IGFsbG9jXSBpbml0V2l0aFBhZ2U6
cGFnZSB2aWV3OnZpZXcgdmlld0ltcGw6d2ViVmlld0ltcGwgbW9kZTptb2RlXTsKKyAgICAgICAg
c3RyYXRlZ3kgPSBbW1dLVmlld0R5bmFtaWNTaXplQ29tcHV0ZWRGcm9tTWluaW11bURvY3VtZW50
U2l6ZUxheW91dFN0cmF0ZWd5IGFsbG9jXSBpbml0V2l0aFBhZ2U6cGFnZSB2aWV3OndrVmlldyBt
b2RlOm1vZGVdOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtXS0xheW91dE1vZGVWaWV3U2l6
ZToKICAgICBkZWZhdWx0OgotICAgICAgICBzdHJhdGVneSA9IFtbV0tWaWV3Vmlld1NpemVMYXlv
dXRTdHJhdGVneSBhbGxvY10gaW5pdFdpdGhQYWdlOnBhZ2Ugdmlldzp2aWV3IHZpZXdJbXBsOndl
YlZpZXdJbXBsIG1vZGU6bW9kZV07CisgICAgICAgIHN0cmF0ZWd5ID0gW1tXS1ZpZXdWaWV3U2l6
ZUxheW91dFN0cmF0ZWd5IGFsbG9jXSBpbml0V2l0aFBhZ2U6cGFnZSB2aWV3OndrVmlldyBtb2Rl
Om1vZGVdOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTc1LDcgKzc1LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKICAgICByZXR1cm4gW3N0cmF0ZWd5IGF1dG9yZWxlYXNlXTsKIH0K
IAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGFnZTooV2ViUGFnZVByb3h5JilwYWdlIHZpZXc6
KE5TVmlldyAqKXZpZXcgdmlld0ltcGw6KFdlYlZpZXdJbXBsJil3ZWJWaWV3SW1wbCBtb2RlOihX
S0xheW91dE1vZGUpbW9kZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGFnZTooV2ViUGFnZVBy
b3h5JilwYWdlIHZpZXc6KFdLVmlldyAqKXdrVmlldyBtb2RlOihXS0xheW91dE1vZGUpbW9kZQog
ewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAKQEAgLTgzLDE4ICs4MywxNiBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgX3BhZ2UgPSAmcGFn
ZTsKLSAgICBfd2ViVmlld0ltcGwgPSAmd2ViVmlld0ltcGw7Ci0gICAgX3ZpZXcgPSB2aWV3Owor
ICAgIF93a1ZpZXcgPSB3a1ZpZXc7CiAgICAgX2xheW91dE1vZGUgPSBtb2RlOwogCiAgICAgcmV0
dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpaW52YWxpZGF0ZQorLSAodm9pZCl3aWxsRGVzdHJveVZp
ZXc6KFdLVmlldyAqKXZpZXcKIHsKICAgICBfcGFnZSA9IG51bGxwdHI7Ci0gICAgX3dlYlZpZXdJ
bXBsID0gbnVsbHB0cjsKLSAgICBfdmlldyA9IG5pbDsKKyAgICBfd2tWaWV3ID0gbmlsOwogfQog
CiAtIChXS0xheW91dE1vZGUpbGF5b3V0TW9kZQpAQCAtMTQyLDkgKzE0MCw5IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAgICAgaWYgKFtzZWxmIGZyYW1lU2l6ZVVwZGF0ZXNEaXNhYmxlZF0p
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChfd2ViVmlld0ltcGwtPmNsaXBzVG9WaXNpYmxl
UmVjdCgpKQotICAgICAgICBfd2ViVmlld0ltcGwtPnVwZGF0ZVZpZXdFeHBvc2VkUmVjdCgpOwot
ICAgIF93ZWJWaWV3SW1wbC0+c2V0RHJhd2luZ0FyZWFTaXplKE5TU2l6ZVRvQ0dTaXplKF92aWV3
LmZyYW1lLnNpemUpKTsKKyAgICBpZiAoX3drVmlldy5zaG91bGRDbGlwVG9WaXNpYmxlUmVjdCkK
KyAgICAgICAgW193a1ZpZXcgX3VwZGF0ZVZpZXdFeHBvc2VkUmVjdF07CisgICAgW193a1ZpZXcg
X3NldERyYXdpbmdBcmVhU2l6ZTpfd2tWaWV3LmZyYW1lLnNpemVdOwogfQogCiAtICh2b2lkKXdp
bGxDaGFuZ2VMYXlvdXRTdHJhdGVneQpAQCAtMTU1LDkgKzE1Myw5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1ZpZXdWaWV3U2l6ZUxheW91dFN0cmF0ZWd5
CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBhZ2U6KFdlYlBhZ2VQcm94eSYpcGFnZSB2aWV3
OihOU1ZpZXcgKil2aWV3IHZpZXdJbXBsOihXZWJWaWV3SW1wbCYpd2ViVmlld0ltcGwgbW9kZToo
V0tMYXlvdXRNb2RlKW1vZGUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBhZ2U6KFdlYlBhZ2VQ
cm94eSYpcGFnZSB2aWV3OihXS1ZpZXcgKil3a1ZpZXcgbW9kZTooV0tMYXlvdXRNb2RlKW1vZGUK
IHsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoUGFnZTpwYWdlIHZpZXc6dmlldyB2aWV3SW1w
bDp3ZWJWaWV3SW1wbCBtb2RlOm1vZGVdOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhQYWdl
OnBhZ2Ugdmlldzp3a1ZpZXcgbW9kZTptb2RlXTsKIAogICAgIGlmICghc2VsZikKICAgICAgICAg
cmV0dXJuIG5pbDsKQEAgLTE3NSw5ICsxNzMsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
CiBAaW1wbGVtZW50YXRpb24gV0tWaWV3Rml4ZWRTaXplTGF5b3V0U3RyYXRlZ3kKIAotLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoUGFnZTooV2ViUGFnZVByb3h5JilwYWdlIHZpZXc6KE5TVmlldyAq
KXZpZXcgdmlld0ltcGw6KFdlYlZpZXdJbXBsJil3ZWJWaWV3SW1wbCBtb2RlOihXS0xheW91dE1v
ZGUpbW9kZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGFnZTooV2ViUGFnZVByb3h5JilwYWdl
IHZpZXc6KFdLVmlldyAqKXdrVmlldyBtb2RlOihXS0xheW91dE1vZGUpbW9kZQogewotICAgIHNl
bGYgPSBbc3VwZXIgaW5pdFdpdGhQYWdlOnBhZ2Ugdmlldzp2aWV3IHZpZXdJbXBsOndlYlZpZXdJ
bXBsIG1vZGU6bW9kZV07CisgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aFBhZ2U6cGFnZSB2aWV3
OndrVmlldyBtb2RlOm1vZGVdOwogCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmls
OwpAQCAtMTk1LDkgKzE5Myw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIEBpbXBsZW1l
bnRhdGlvbiBXS1ZpZXdEeW5hbWljU2l6ZUNvbXB1dGVkRnJvbVZpZXdTY2FsZUxheW91dFN0cmF0
ZWd5CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBhZ2U6KFdlYlBhZ2VQcm94eSYpcGFnZSB2
aWV3OihOU1ZpZXcgKil2aWV3IHZpZXdJbXBsOihXZWJWaWV3SW1wbCYpd2ViVmlld0ltcGwgbW9k
ZTooV0tMYXlvdXRNb2RlKW1vZGUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBhZ2U6KFdlYlBh
Z2VQcm94eSYpcGFnZSB2aWV3OihXS1ZpZXcgKil3a1ZpZXcgbW9kZTooV0tMYXlvdXRNb2RlKW1v
ZGUKIHsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoUGFnZTpwYWdlIHZpZXc6dmlldyB2aWV3
SW1wbDp3ZWJWaWV3SW1wbCBtb2RlOm1vZGVdOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhQ
YWdlOnBhZ2Ugdmlldzp3a1ZpZXcgbW9kZTptb2RlXTsKIAogICAgIGlmICghc2VsZikKICAgICAg
ICAgcmV0dXJuIG5pbDsKQEAgLTIxMCw3ICsyMDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogLSAodm9pZCl1cGRhdGVMYXlvdXQKIHsKICAgICBDR0Zsb2F0IGludmVyc2VTY2FsZSA9IDEg
LyBfcGFnZS0+dmlld1NjYWxlRmFjdG9yKCk7Ci0gICAgX3dlYlZpZXdJbXBsLT5zZXRGaXhlZExh
eW91dFNpemUoQ0dTaXplTWFrZShfdmlldy5mcmFtZS5zaXplLndpZHRoICogaW52ZXJzZVNjYWxl
LCBfdmlldy5mcmFtZS5zaXplLmhlaWdodCAqIGludmVyc2VTY2FsZSkpOworICAgIFtfd2tWaWV3
IF9zZXRGaXhlZExheW91dFNpemU6Q0dTaXplTWFrZShfd2tWaWV3LmZyYW1lLnNpemUud2lkdGgg
KiBpbnZlcnNlU2NhbGUsIF93a1ZpZXcuZnJhbWUuc2l6ZS5oZWlnaHQgKiBpbnZlcnNlU2NhbGUp
XTsKIH0KIAogLSAodm9pZClkaWRDaGFuZ2VWaWV3U2NhbGUKQEAgLTIyNCw3ICsyMjIsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogewogICAgIFtzdXBlciBkaWRDaGFuZ2VGcmFtZVNpemVd
OwogCi0gICAgaWYgKHNlbGYuZnJhbWVTaXplVXBkYXRlc0Rpc2FibGVkKQorICAgIGlmIChbX3dr
VmlldyBmcmFtZVNpemVVcGRhdGVzRGlzYWJsZWRdKQogICAgICAgICByZXR1cm47CiAKICAgICBb
c2VsZiB1cGRhdGVMYXlvdXRdOwpAQCAtMjM0LDkgKzIzMiw5IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1ZpZXdEeW5hbWljU2l6ZUNvbXB1dGVkRnJvbU1p
bmltdW1Eb2N1bWVudFNpemVMYXlvdXRTdHJhdGVneQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhQYWdlOihXZWJQYWdlUHJveHkmKXBhZ2UgdmlldzooTlNWaWV3ICopdmlldyB2aWV3SW1wbDoo
V2ViVmlld0ltcGwmKXdlYlZpZXdJbXBsIG1vZGU6KFdLTGF5b3V0TW9kZSltb2RlCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhQYWdlOihXZWJQYWdlUHJveHkmKXBhZ2UgdmlldzooV0tWaWV3ICop
d2tWaWV3IG1vZGU6KFdLTGF5b3V0TW9kZSltb2RlCiB7Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0
V2l0aFBhZ2U6cGFnZSB2aWV3OnZpZXcgdmlld0ltcGw6d2ViVmlld0ltcGwgbW9kZTptb2RlXTsK
KyAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoUGFnZTpwYWdlIHZpZXc6d2tWaWV3IG1vZGU6bW9k
ZV07CiAKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDc3ZjFiNGIw
ODIwOGZiZTJjZjdhMzU4ZjMwYWQwNTZmZjMxOWJlZi4uNWVmOGZmNTk3NWYyNTg5MzVmZDg3ZjVi
MjgwM2RlYTZmOTg3ZTQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjk2LDggKzY5Niw2IEBACiAJCTJERjlFRUVFMUE3ODZF
QUQwMEI2Q0ZCRSAvKiBBUElOYXZpZ2F0aW9uUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjlFRUVEMUE3ODZFQUQwMEI2Q0ZCRSAvKiBB
UElOYXZpZ2F0aW9uUmVzcG9uc2UuaCAqLzsgfTsKIAkJMkUwQjhBN0ExQkM1OUE1OTAwNDRCMzJE
IC8qIF9XS0Zvcm1EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkUwQjhBNzkxQkM1OUE1OTAwNDRCMzJEIC8qIF9XS0Zvcm1EZWxlZ2F0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFN0E5
NDRBMUJCRDk3QzMwMDk0NTU0NyAvKiBfV0tGb2N1c2VkRWxlbWVudEluZm8uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFN0E5NDQ5MUJCRDk1QzYwMDk0
NTU0NyAvKiBfV0tGb2N1c2VkRWxlbWVudEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkyREZDN0RCQjFCQ0NDMTk1MDBDMTU0OEMgLyogV2Vi
Vmlld0ltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJERkM3REI5MUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5oICovOyBzZXR0aW5ncyA9
IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCTJERkM3REJDMUJDQ0MxOTUwMEMxNTQ4QyAvKiBX
ZWJWaWV3SW1wbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJERkM3REJBMUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5tbSAqLzsgc2V0dGlu
Z3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwogCQkzMTA5OTk3MzE0NkM3NUEyMDAyOURFQjkg
LyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmlj
YXRpb25DbGllbnQuY3BwICovOyB9OwogCQkzMTA5OTlDNzE0NkM5RTNEMDAyOURFQjkgLyogV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTA5OTk2ODE0NkM3MUY1MDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xp
ZW50LmggKi87IH07CiAJCTMxMkMwQzRBMTQ2RERDOEEwMDE2QzkxMSAvKiBXS05vdGlmaWNhdGlv
blByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTJDMEM0OTE0NkREQzhBMDAxNkM5MTEgLyogV0tOb3RpZmljYXRpb25Qcm92aWRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yODYyLDgg
KzI4NjAsNiBAQAogCQkyREY5RUVFRDFBNzg2RUFEMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvblJl
c3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSU5hdmlnYXRpb25S
ZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTBCOEE3OTFCQzU5QTU5
MDA0NEIzMkQgLyogX1dLRm9ybURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IF9XS0Zvcm1EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
RTdBOTQ0OTFCQkQ5NUM2MDA5NDU1NDcgLyogX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS0ZvY3VzZWRFbGVtZW50SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkyREZDN0RCOTFCQ0NDMTk1MDBDMTU0OEMgLyogV2ViVmlld0ltcGwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlld0ltcGwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMkRGQzdEQkExQkNDQzE5NTAwQzE1NDhDIC8qIFdlYlZpZXdJbXBsLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0ltcGwubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTY4MTQ2QzcxRjUwMDI5REVCOSAv
KiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9u
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTcxMTQ2Qzc1OUIw
MDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzEyQzBDNDkxNDZEREM4QTAwMTZDOTExIC8qIFdLTm90aWZpY2F0
aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOb3RpZmlj
YXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDk0NSw4ICs0
OTQxLDYgQEAKIAkJCQk3QzQ2OTRDQjFBNEI1MTBBMDBBRDU4NDUgLyogV2ViUGFzdGVib2FyZFBy
b3h5Q29jb2EubW0gKi8sCiAJCQkJN0NFNEQyMTUxQTQ5MTQ4NDAwQzdGMTUyIC8qIFdlYlByb2Nl
c3NQb29sQ29jb2EubW0gKi8sCiAJCQkJMUEwNEY2MTcxQTRBM0E3QTAwQTIxQjZFIC8qIFdlYlBy
b2Nlc3NQcm94eUNvY29hLm1tICovLAotCQkJCTJERkM3REI5MUJDQ0MxOTUwMEMxNTQ4QyAvKiBX
ZWJWaWV3SW1wbC5oICovLAotCQkJCTJERkM3REJBMUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3
SW1wbC5tbSAqLywKIAkJCQkxQUQwMUJDQjE5MDVENTQ5MDBDOUM0NUYgLyogV0tSZWxvYWRGcmFt
ZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIuaCAqLywKIAkJCQkxQUQwMUJDQTE5MDVENTQ5MDBDOUM0
NUYgLyogV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIubW0gKi8sCiAJCQkJMkQ3
QUFGRDIxOEM4NjQwNjAwQTdBQ0Q0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlci5oICovLApA
QCAtNzY3MSw3ICs3NjY1LDYgQEAKIAkJCQkxQTJEOTU2RjEyODQ4NTY0MDAxRUI5NjIgLyogQ2hp
bGRQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzgyODM3QTE2QjM2QTRGMDBBMjc4RkUg
LyogQ2hpbGRQcm9jZXNzRW50cnlQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGQUVDM0Ex
QjA2NTc2MzAwMDlDNEU3IC8qIENoaWxkUHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
LQkJCQkyREZDN0RCQjFCQ0NDMTk1MDBDMTU0OEMgLyogV2ViVmlld0ltcGwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxNTEzQzY3MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjkwRjQyNzIxNzJBMEM3NDAwOTM5RkYwIC8qIENoaWxkUHJv
Y2Vzc1N1cHBsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNkY5RjkwMTFFMTNFRkMwMERC
MTM3MSAvKiBDb21tYW5kTGluZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODEyLDcgKzk4MDUsNiBA
QAogCQkJCTFBOEI2NkIzMUJDNDVCMDEwMDgyREY3NyAvKiBXS0J1bmRsZU1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDMTExQTVCMTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJDb250ZXh0TWVudUNs
aWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTAyMUU5QzEyQjE2Nzg4MDA1QzAzM0MgLyog
V2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQkyREZDN0RCQzFC
Q0NDMTk1MDBDMTU0OEMgLyogV2ViVmlld0ltcGwubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTI5
MzVENzEyODhEMTk0MDBBNEI2OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxMEZCQjlBMTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1E
YXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTg0Q0UzMTI3RjM4NkIwMENBNkVBNCAvKiBX
ZWJDb250ZXh0TWVudVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>